Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 72.14 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/generic.h:247 18.80 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1609 2.17 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/generic.h:247 0.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1644 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1565 0.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1578 0.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1645 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068f3a0 : : /* : * LWLockRelease - release a previously acquired lock : */ : void : LWLockRelease(LWLock *lock) : { 0.04 : 68f3a0: 55 push %rbp 0.04 : 68f3a1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1565 0.56 : 68f3a4: 41 55 push %r13 0.21 : 68f3a6: 41 54 push %r12 0.10 : 68f3a8: 49 89 fc mov %rdi,%r12 0.21 : 68f3ab: 53 push %rbx 0.25 : 68f3ac: 48 83 ec 18 sub $0x18,%rsp : : /* : * Remove lock from list of locks held. Usually, but not always, it will : * be the latest-acquired lock; so search array backwards. : */ : for (i = num_held_lwlocks; --i >= 0;) 0.12 : 68f3b0: 8b 35 52 e6 4e 00 mov 0x4ee652(%rip),%esi # b7da08 0.15 : 68f3b6: 89 f0 mov %esi,%eax 0.19 : 68f3b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68f3bf: 00 0.02 : 68f3c0: 83 e8 01 sub $0x1,%eax 0.05 : 68f3c3: 0f 88 1f 02 00 00 js 68f5e8 : { : if (lock == held_lwlocks[i].lock) 0.19 : 68f3c9: 48 63 d0 movslq %eax,%rdx 0.18 : 68f3cc: 41 b9 40 da b7 00 mov $0xb7da40,%r9d 0.06 : 68f3d2: 48 89 d1 mov %rdx,%rcx 0.06 : 68f3d5: 48 c1 e1 04 shl $0x4,%rcx 0.32 : 68f3d9: 48 8b 99 40 da b7 00 mov 0xb7da40(%rcx),%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1578 0.56 : 68f3e0: 4c 39 e3 cmp %r12,%rbx 0.00 : 68f3e3: 75 db jne 68f3c0 : break; : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; 0.15 : 68f3e5: 44 8d 46 ff lea -0x1(%rsi),%r8d : */ : for (i = num_held_lwlocks; --i >= 0;) : { : if (lock == held_lwlocks[i].lock) : { : mode = held_lwlocks[i].mode; 0.02 : 68f3e9: 44 8b 91 48 da b7 00 mov 0xb7da48(%rcx),%r10d : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; : for (; i < num_held_lwlocks; i++) 0.14 : 68f3f0: 41 39 c0 cmp %eax,%r8d : break; : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; 0.24 : 68f3f3: 44 89 05 0e e6 4e 00 mov %r8d,0x4ee60e(%rip) # b7da08 : for (; i < num_held_lwlocks; i++) 0.19 : 68f3fa: 7f 09 jg 68f405 0.02 : 68f3fc: eb 3a jmp 68f438 0.00 : 68f3fe: 66 90 xchg %ax,%ax : : /* : * Remove lock from list of locks held. Usually, but not always, it will : * be the latest-acquired lock; so search array backwards. : */ : for (i = num_held_lwlocks; --i >= 0;) 0.00 : 68f400: 89 f0 mov %esi,%eax 0.00 : 68f402: 48 89 fa mov %rdi,%rdx : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; : for (; i < num_held_lwlocks; i++) : held_lwlocks[i] = held_lwlocks[i + 1]; 0.00 : 68f405: 8d 70 01 lea 0x1(%rax),%esi 0.00 : 68f408: 48 89 d1 mov %rdx,%rcx 0.00 : 68f40b: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 68f40f: 48 63 fe movslq %esi,%rdi 0.00 : 68f412: 48 89 fa mov %rdi,%rdx 0.00 : 68f415: 48 c1 e2 04 shl $0x4,%rdx : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; : for (; i < num_held_lwlocks; i++) 0.00 : 68f419: 41 39 f0 cmp %esi,%r8d : held_lwlocks[i] = held_lwlocks[i + 1]; 0.00 : 68f41c: 48 8b 82 40 da b7 00 mov 0xb7da40(%rdx),%rax 0.00 : 68f423: 48 89 81 40 da b7 00 mov %rax,0xb7da40(%rcx) 0.00 : 68f42a: 48 8b 82 48 da b7 00 mov 0xb7da48(%rdx),%rax 0.00 : 68f431: 49 89 44 09 08 mov %rax,0x8(%r9,%rcx,1) : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); : num_held_lwlocks--; : for (; i < num_held_lwlocks; i++) 0.00 : 68f436: 7f c8 jg 68f400 : : /* : * Release my hold on lock, after that it can immediately be acquired by : * others, even if we still have to wakeup other waiters. : */ : if (mode == LW_EXCLUSIVE) 0.17 : 68f438: 45 85 d2 test %r10d,%r10d 0.01 : 68f43b: 0f 84 77 01 00 00 je 68f5b8 : lockcount = pg_atomic_sub_fetch_u32(&lock->lockcount, EXCLUSIVE_LOCK); : else : lockcount = pg_atomic_sub_fetch_u32(&lock->lockcount, 1); 0.20 : 68f441: 49 8d 54 24 04 lea 0x4(%r12),%rdx : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.19 : 68f446: b8 ff ff ff ff mov $0xffffffff,%eax 0.02 : 68f44b: f0 0f c1 02 lock xadd %eax,(%rdx) : #if !defined(PG_HAVE_ATOMIC_SUB_FETCH_U32) && defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) : #define PG_HAVE_ATOMIC_SUB_FETCH_U32 : static inline uint32 : pg_atomic_sub_fetch_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) : { : return pg_atomic_fetch_sub_u32_impl(ptr, sub_) - sub_; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/generic.h:247 72.14 : 68f44f: 8d 50 ff lea -0x1(%rax),%edx : #ifndef PG_HAVE_ATOMIC_READ_U32 : #define PG_HAVE_ATOMIC_READ_U32 : static inline uint32 : pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) : { : return *(&ptr->value); 0.01 : 68f452: 8b 43 08 mov 0x8(%rbx),%eax : /* : * Anybody we need to wakeup needs to have started queueing before we : * removed ourselves from the queue and the atomic operations above are : * full barriers. So we can just do plain read. : */ : if (pg_atomic_read_u32(&lock->nwaiters) > 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1609 18.80 : 68f455: 85 c0 test %eax,%eax 0.00 : 68f457: 0f 84 3a 01 00 00 je 68f597 : /* : * If we just released an exclusive lock always wakeup waiters, even if : * lockcount is still > 0. A shared acquisition temporarily (and : * spuriously) might have increased the value. : */ : if (mode == LW_EXCLUSIVE && have_waiters) 0.00 : 68f45d: 45 85 d2 test %r10d,%r10d 0.00 : 68f460: 0f 85 fc 01 00 00 jne 68f662 : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 68f466: 4c 8d 6d d0 lea -0x30(%rbp),%r13 0.00 : 68f46a: 4c 89 6d d0 mov %r13,-0x30(%rbp) 0.00 : 68f46e: 4c 89 6d d8 mov %r13,-0x28(%rbp) : /* : * We're still waiting for backends to get scheduled, don't wake them up : * again. : */ : pg_read_barrier(); /* pairs with nwaiters-- */ : if (!BOOL_ACCESS_ONCE(lock->releaseOK)) 0.00 : 68f472: 0f b6 43 01 movzbl 0x1(%rbx),%eax 0.00 : 68f476: 84 c0 test %al,%al 0.00 : 68f478: 0f 84 19 01 00 00 je 68f597 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 68f47e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68f483: f0 86 03 lock xchg %al,(%rbx) : : /* Acquire mutex. Time spent holding mutex should be short! */ : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.02 : 68f486: 84 c0 test %al,%al 0.00 : 68f488: 0f 85 b2 01 00 00 jne 68f640 : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f48e: 48 8b 53 18 mov 0x18(%rbx),%rdx 0.00 : 68f492: 48 85 d2 test %rdx,%rdx 0.00 : 68f495: 0f 84 bc 01 00 00 je 68f657 0.00 : 68f49b: 4d 8d 4c 24 10 lea 0x10(%r12),%r9 0.00 : 68f4a0: 48 8b 72 08 mov 0x8(%rdx),%rsi 0.01 : 68f4a4: 49 39 d1 cmp %rdx,%r9 0.00 : 68f4a7: 0f 84 aa 01 00 00 je 68f657 0.00 : 68f4ad: 31 ff xor %edi,%edi 0.00 : 68f4af: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 68f4b5: eb 23 jmp 68f4da 0.00 : 68f4b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 68f4be: 00 00 : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); : : if (wokeup_somebody && waiter->lwWaitMode == LW_EXCLUSIVE) 0.00 : 68f4c0: 80 7a fa 00 cmpb $0x0,-0x6(%rdx) 0.00 : 68f4c4: 75 1d jne 68f4e3 0.00 : 68f4c6: bf 01 00 00 00 mov $0x1,%edi : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f4cb: 49 39 f1 cmp %rsi,%r9 0.00 : 68f4ce: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 68f4d2: 74 6a je 68f53e 0.00 : 68f4d4: 48 89 f2 mov %rsi,%rdx 0.00 : 68f4d7: 48 89 c6 mov %rax,%rsi : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); : : if (wokeup_somebody && waiter->lwWaitMode == LW_EXCLUSIVE) 0.00 : 68f4da: 40 84 ff test %dil,%dil : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); 0.00 : 68f4dd: 48 8d 4a b8 lea -0x48(%rdx),%rcx : : if (wokeup_somebody && waiter->lwWaitMode == LW_EXCLUSIVE) 0.00 : 68f4e1: 75 dd jne 68f4c0 : * Delete 'node' from its list (it must be in one). : */ : STATIC_IF_INLINE void : dlist_delete(dlist_node *node) : { : node->prev->next = node->next; 0.00 : 68f4e3: 48 8b 51 48 mov 0x48(%rcx),%rdx 0.00 : 68f4e7: 48 8b 41 50 mov 0x50(%rcx),%rax 0.00 : 68f4eb: 48 89 42 08 mov %rax,0x8(%rdx) : node->next->prev = node->prev; 0.00 : 68f4ef: 48 8b 51 50 mov 0x50(%rcx),%rdx 0.00 : 68f4f3: 48 8b 41 48 mov 0x48(%rcx),%rax 0.00 : 68f4f7: 48 89 02 mov %rax,(%rdx) : * Insert a node at the end of the list. : */ : STATIC_IF_INLINE void : dlist_push_tail(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.00 : 68f4fa: 48 83 7d d8 00 cmpq $0x0,-0x28(%rbp) : continue; : : dlist_delete(&waiter->lwWaitLink); : dlist_push_tail(&wakeup, &waiter->lwWaitLink); 0.00 : 68f4ff: 48 8d 51 48 lea 0x48(%rcx),%rdx 0.00 : 68f503: 0f 84 cf 00 00 00 je 68f5d8 : dlist_init(head); : : node->next = &head->head; 0.00 : 68f509: 4c 89 69 50 mov %r13,0x50(%rcx) : node->prev = head->head.prev; 0.00 : 68f50d: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 68f511: 48 89 41 48 mov %rax,0x48(%rcx) : node->prev->next = node; 0.00 : 68f515: 48 89 50 08 mov %rdx,0x8(%rax) : head->head.prev = node; 0.01 : 68f519: 48 89 55 d0 mov %rdx,-0x30(%rbp) : : if (waiter->lwWaitMode != LW_WAIT_UNTIL_FREE) 0.00 : 68f51d: 0f b6 41 42 movzbl 0x42(%rcx),%eax 0.00 : 68f521: 3c 02 cmp $0x2,%al 0.00 : 68f523: 74 a6 je 68f4cb : : /* : * Once we've woken up an exclusive lock, there's no point in waking : * up anybody else. : */ : if(waiter->lwWaitMode == LW_EXCLUSIVE) 0.00 : 68f525: 84 c0 test %al,%al 0.00 : 68f527: 0f 84 0b 01 00 00 je 68f638 0.00 : 68f52d: 45 31 c0 xor %r8d,%r8d : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f530: 49 39 f1 cmp %rsi,%r9 : : /* : * Once we've woken up an exclusive lock, there's no point in waking : * up anybody else. : */ : if(waiter->lwWaitMode == LW_EXCLUSIVE) 0.00 : 68f533: bf 01 00 00 00 mov $0x1,%edi : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f538: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 68f53c: 75 96 jne 68f4d4 : if(waiter->lwWaitMode == LW_EXCLUSIVE) : break; : } : : /* The SpinLockRelease() below provides barrier semantics */ : BOOL_ACCESS_ONCE(lock->releaseOK) = releaseOK; 0.00 : 68f53e: 44 88 43 01 mov %r8b,0x1(%rbx) : SpinLockRelease(&lock->mutex); : : /* : * Awaken any waiters I removed from the queue. : */ : dlist_foreach_modify(iter, &wakeup) 0.00 : 68f542: 48 8b 4d d8 mov -0x28(%rbp),%rcx : : /* The SpinLockRelease() below provides barrier semantics */ : BOOL_ACCESS_ONCE(lock->releaseOK) = releaseOK; : : /* We are done updating shared state of the lock queue. */ : SpinLockRelease(&lock->mutex); 0.00 : 68f546: 41 c6 04 24 00 movb $0x0,(%r12) : : /* : * Awaken any waiters I removed from the queue. : */ : dlist_foreach_modify(iter, &wakeup) 0.00 : 68f54b: 48 85 c9 test %rcx,%rcx 0.00 : 68f54e: 74 47 je 68f597 0.00 : 68f550: 4c 39 e9 cmp %r13,%rcx 0.00 : 68f553: 48 8b 59 08 mov 0x8(%rcx),%rbx 0.00 : 68f557: 75 0d jne 68f566 0.00 : 68f559: eb 3c jmp 68f597 0.00 : 68f55b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68f560: 48 89 d9 mov %rbx,%rcx 0.00 : 68f563: 48 89 c3 mov %rax,%rbx : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); 0.00 : 68f566: 48 8d 79 b8 lea -0x48(%rcx),%rdi : * Delete 'node' from its list (it must be in one). : */ : STATIC_IF_INLINE void : dlist_delete(dlist_node *node) : { : node->prev->next = node->next; 0.00 : 68f56a: 48 8b 57 48 mov 0x48(%rdi),%rdx 0.00 : 68f56e: 48 8b 47 50 mov 0x50(%rdi),%rax 0.00 : 68f572: 48 89 42 08 mov %rax,0x8(%rdx) : node->next->prev = node->prev; 0.00 : 68f576: 48 8b 57 50 mov 0x50(%rdi),%rdx 0.00 : 68f57a: 48 8b 47 48 mov 0x48(%rdi),%rax 0.00 : 68f57e: 48 89 02 mov %rax,(%rdx) : : LOG_LWDEBUG("LWLockRelease", lock, "release waiter"); : dlist_delete(&waiter->lwWaitLink); : pg_write_barrier(); : waiter->lwWaiting = false; : PGSemaphoreUnlock(&waiter->sem); 0.00 : 68f581: 48 83 c7 10 add $0x10,%rdi : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); : : LOG_LWDEBUG("LWLockRelease", lock, "release waiter"); : dlist_delete(&waiter->lwWaitLink); : pg_write_barrier(); : waiter->lwWaiting = false; 0.00 : 68f585: c6 41 f9 00 movb $0x0,-0x7(%rcx) : PGSemaphoreUnlock(&waiter->sem); 0.01 : 68f589: e8 02 8b fa ff callq 638090 : SpinLockRelease(&lock->mutex); : : /* : * Awaken any waiters I removed from the queue. : */ : dlist_foreach_modify(iter, &wakeup) 0.01 : 68f58e: 4c 39 eb cmp %r13,%rbx 0.00 : 68f591: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 68f595: 75 c9 jne 68f560 : TRACE_POSTGRESQL_LWLOCK_RELEASE(T_NAME(lock), T_ID(lock)); : : /* : * Now okay to allow cancel/die interrupts. : */ : RESUME_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1644 0.63 : 68f597: 8b 05 fb aa 52 00 mov 0x52aafb(%rip),%eax # bba098 0.06 : 68f59d: 83 e8 01 sub $0x1,%eax 0.08 : 68f5a0: 89 05 f2 aa 52 00 mov %eax,0x52aaf2(%rip) # bba098 : } 0.14 : 68f5a6: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1645 0.54 : 68f5aa: 5b pop %rbx 0.02 : 68f5ab: 41 5c pop %r12 0.04 : 68f5ad: 41 5d pop %r13 0.10 : 68f5af: c9 leaveq 0.50 : 68f5b0: c3 retq 0.00 : 68f5b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Release my hold on lock, after that it can immediately be acquired by : * others, even if we still have to wakeup other waiters. : */ : if (mode == LW_EXCLUSIVE) : lockcount = pg_atomic_sub_fetch_u32(&lock->lockcount, EXCLUSIVE_LOCK); 0.02 : 68f5b8: 49 8d 54 24 04 lea 0x4(%r12),%rdx 0.00 : 68f5bd: b8 00 00 00 c0 mov $0xc0000000,%eax 0.00 : 68f5c2: f0 0f c1 02 lock xadd %eax,(%rdx) : #if !defined(PG_HAVE_ATOMIC_SUB_FETCH_U32) && defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) : #define PG_HAVE_ATOMIC_SUB_FETCH_U32 : static inline uint32 : pg_atomic_sub_fetch_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) : { : return pg_atomic_fetch_sub_u32_impl(ptr, sub_) - sub_; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/generic.h:247 2.17 : 68f5c6: 8d 90 00 00 00 c0 lea -0x40000000(%rax),%edx 0.00 : 68f5cc: e9 81 fe ff ff jmpq 68f452 0.00 : 68f5d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 68f5d8: 4c 89 6d d0 mov %r13,-0x30(%rbp) 0.00 : 68f5dc: 4c 89 6d d8 mov %r13,-0x28(%rbp) 0.00 : 68f5e0: e9 24 ff ff ff jmpq 68f509 0.00 : 68f5e5: 0f 1f 00 nopl (%rax) : mode = held_lwlocks[i].mode; : break; : } : } : if (i < 0) : elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); 0.00 : 68f5e8: ba 10 d1 8a 00 mov $0x8ad110,%edx 0.00 : 68f5ed: be 31 06 00 00 mov $0x631,%esi 0.00 : 68f5f2: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68f5f7: e8 24 be 0e 00 callq 77b420 0.00 : 68f5fc: 49 63 54 24 0c movslq 0xc(%r12),%rdx 0.00 : 68f601: 48 8b 05 08 e4 4e 00 mov 0x4ee408(%rip),%rax # b7da10 0.00 : 68f608: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68f60d: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi 0.00 : 68f611: 31 d2 xor %edx,%edx 0.00 : 68f613: 4c 2b 66 08 sub 0x8(%rsi),%r12 0.00 : 68f617: 4c 89 e0 mov %r12,%rax 0.00 : 68f61a: 48 f7 76 10 divq 0x10(%rsi) 0.00 : 68f61e: 48 8b 16 mov (%rsi),%rdx 0.00 : 68f621: be bf d0 8a 00 mov $0x8ad0bf,%esi 0.00 : 68f626: 89 c1 mov %eax,%ecx 0.00 : 68f628: 31 c0 xor %eax,%eax 0.00 : 68f62a: e8 01 bc 0e 00 callq 77b230 0.00 : 68f62f: e8 9c 9e dd ff callq 4694d0 0.00 : 68f634: 0f 1f 40 00 nopl 0x0(%rax) : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f638: 45 31 c0 xor %r8d,%r8d 0.00 : 68f63b: e9 fe fe ff ff jmpq 68f53e : : /* Acquire mutex. Time spent holding mutex should be short! */ : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.00 : 68f640: ba e1 02 00 00 mov $0x2e1,%edx 0.00 : 68f645: be 85 d0 8a 00 mov $0x8ad085,%esi 0.00 : 68f64a: 48 89 df mov %rbx,%rdi 0.00 : 68f64d: e8 ee 09 00 00 callq 690040 0.00 : 68f652: e9 37 fe ff ff jmpq 68f48e : #endif : : /* remove the to-be-awakened PGPROCs from the queue */ : releaseOK = true; : : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f657: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 68f65d: e9 dc fe ff ff jmpq 68f53e : if (mode == LW_EXCLUSIVE && have_waiters) : check_waiters = true; : /* : * nobody has this locked anymore, potential exclusive lockers get a chance : */ : else if (lockcount == 0 && have_waiters) 0.00 : 68f662: 85 d2 test %edx,%edx 0.00 : 68f664: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 68f668: 0f 84 f8 fd ff ff je 68f466 0.00 : 68f66e: 66 90 xchg %ax,%ax 0.00 : 68f670: e9 22 ff ff ff jmpq 68f597 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 94.24 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:666 1.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:625 0.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:187 0.77 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 0.74 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:655 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068eec0 : : * for 'potentially_spurious'. Its value will be set to true if we possibly : * did so. The caller then has to handle that scenario. : */ : static bool : LWLockAttemptLock(LWLock* lock, LWLockMode mode, bool *potentially_spurious) : { 0.14 : 68eec0: 55 push %rbp : lwstats = get_lwlock_stats_entry(lock); : #endif : : AssertArg(mode == LW_EXCLUSIVE || mode == LW_SHARED); : : if (potentially_spurious != NULL) 0.30 : 68eec1: 48 85 d2 test %rdx,%rdx : * for 'potentially_spurious'. Its value will be set to true if we possibly : * did so. The caller then has to handle that scenario. : */ : static bool : LWLockAttemptLock(LWLock* lock, LWLockMode mode, bool *potentially_spurious) : { 0.42 : 68eec4: 48 89 e5 mov %rsp,%rbp : lwstats = get_lwlock_stats_entry(lock); : #endif : : AssertArg(mode == LW_EXCLUSIVE || mode == LW_SHARED); : : if (potentially_spurious != NULL) 0.17 : 68eec7: 74 03 je 68eecc : *potentially_spurious = false; 0.00 : 68eec9: c6 02 00 movb $0x0,(%rdx) : : if (mode == LW_EXCLUSIVE) 0.19 : 68eecc: 85 f6 test %esi,%esi 0.00 : 68eece: 75 28 jne 68eef8 : #ifndef PG_HAVE_ATOMIC_READ_U32 : #define PG_HAVE_ATOMIC_READ_U32 : static inline uint32 : pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) : { : return *(&ptr->value); 0.00 : 68eed0: 8b 47 04 mov 0x4(%rdi),%eax : * First check whether the variable is free without a atomic : * operation; it's often quite a bit cheaper for contended : * locks. Doing so can cause a superflous shared-exclusive cacheline : * transition, but benchmarks show that it's still worth doing so. : */ : expected = pg_atomic_read_u32(&lock->lockcount); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:625 1.00 : 68eed3: 48 8d 57 04 lea 0x4(%rdi),%rdx : : if (expected != 0) 0.00 : 68eed7: 85 c0 test %eax,%eax 0.00 : 68eed9: 75 65 jne 68ef40 : : /* : * Perform cmpxchg and use the zero flag which it implicitly sets when : * equal to measure the success. : */ : __asm__ __volatile__( 0.01 : 68eedb: b9 00 00 00 40 mov $0x40000000,%ecx 0.00 : 68eee0: 89 f0 mov %esi,%eax 0.00 : 68eee2: f0 0f b1 0a lock cmpxchg %ecx,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:187 0.85 : 68eee6: 40 0f 94 c6 sete %sil 0.00 : 68eeea: 40 84 f6 test %sil,%sil 0.00 : 68eeed: 0f 94 c1 sete %cl : return false; : } : } : : pg_unreachable(); : } 0.03 : 68eef0: 89 c8 mov %ecx,%eax 0.43 : 68eef2: c9 leaveq 0.27 : 68eef3: c3 retq 0.00 : 68eef4: 0f 1f 40 00 nopl 0x0(%rax) : /* : * If the caller is interested in spurious locks, do an unlocked check : * first. This is useful if potentially spurious results have a : * noticeable cost. : */ : if (potentially_spurious != NULL && /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:655 0.74 : 68eef8: 48 85 d2 test %rdx,%rdx 0.00 : 68eefb: 48 8d 77 04 lea 0x4(%rdi),%rsi 0.01 : 68eeff: 74 0e je 68ef0f 0.00 : 68ef01: 8b 47 04 mov 0x4(%rdi),%eax 0.40 : 68ef04: 48 8d 77 04 lea 0x4(%rdi),%rsi 0.00 : 68ef08: 3d ff ff ff 3f cmp $0x3fffffff,%eax 0.00 : 68ef0d: 77 31 ja 68ef40 : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 0.77 : 68ef0f: b8 01 00 00 00 mov $0x1,%eax 0.01 : 68ef14: f0 0f c1 06 lock xadd %eax,(%rsi) : * might have to back out again if it turns out somebody else has an : * exclusive lock. : */ : oldstate = pg_atomic_fetch_add_u32(&lock->lockcount, 1); : : if (oldstate >= EXCLUSIVE_LOCK) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:666 94.24 : 68ef18: 31 c9 xor %ecx,%ecx 0.00 : 68ef1a: 3d ff ff ff 3f cmp $0x3fffffff,%eax 0.00 : 68ef1f: 76 cf jbe 68eef0 0.00 : 68ef21: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 68ef26: f0 0f c1 06 lock xadd %eax,(%rsi) : * problems exist. : */ : pg_atomic_fetch_sub_u32(&lock->lockcount, 1); : : : if (potentially_spurious != NULL) 0.00 : 68ef2a: 48 85 d2 test %rdx,%rdx 0.00 : 68ef2d: 74 11 je 68ef40 : *potentially_spurious = true; 0.00 : 68ef2f: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 68ef34: c6 02 01 movb $0x1,(%rdx) : return false; : } : } : : pg_unreachable(); : } 0.00 : 68ef37: 89 c8 mov %ecx,%eax 0.00 : 68ef39: c9 leaveq 0.00 : 68ef3a: c3 retq 0.00 : 68ef3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : */ : pg_atomic_fetch_sub_u32(&lock->lockcount, 1); : : : if (potentially_spurious != NULL) : *potentially_spurious = true; 0.00 : 68ef40: b9 01 00 00 00 mov $0x1,%ecx : return false; : } : } : : pg_unreachable(); : } 0.00 : 68ef45: c9 leaveq 0.00 : 68ef46: 89 c8 mov %ecx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3218 7.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2802 3.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3184 2.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3198 2.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3288 2.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 2.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3209 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 2.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2792 2.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2799 2.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2792 2.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2839 2.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2795 2.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2797 2.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3288 1.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2794 1.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2796 1.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3288 1.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3194 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 1.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3218 1.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 1.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2802 1.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 1.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 1.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2821 1.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3218 1.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2792 1.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3219 1.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2830 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3194 0.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 0.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3194 0.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2802 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3218 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3288 0.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 0.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3194 0.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3202 0.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 0.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3288 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3209 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3219 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a0f90 : : */ : : static int : comparetup_index_btree(const SortTuple *a, const SortTuple *b, : Tuplesortstate *state) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3177 2.52 : 7a0f90: 55 push %rbp 0.53 : 7a0f91: 48 89 e5 mov %rsp,%rbp 1.33 : 7a0f94: 41 57 push %r15 2.73 : 7a0f96: 41 56 push %r14 1.42 : 7a0f98: 41 55 push %r13 1.59 : 7a0f9a: 41 54 push %r12 0.60 : 7a0f9c: 49 89 f4 mov %rsi,%r12 0.64 : 7a0f9f: 53 push %rbx 1.35 : 7a0fa0: 48 89 fb mov %rdi,%rbx 0.51 : 7a0fa3: 48 81 ec 18 04 00 00 sub $0x418,%rsp 0.87 : 7a0faa: 48 89 95 e0 fb ff ff mov %rdx,-0x420(%rbp) : Datum datum1, bool isNull1, : Datum datum2, bool isNull2) : { : int32 compare; : : if (isNull1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2821 1.33 : 7a0fb1: 80 7f 10 00 cmpb $0x0,0x10(%rdi) : * This is similar to _bt_tuplecompare(), but we have already done the : * index_getattr calls for the first column, and we need to keep track of : * whether any null fields are present. Also see the special treatment : * for equal keys at the end. : */ : ScanKey scanKey = state->indexScanKey; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3184 3.46 : 7a0fb5: 4c 8b aa 28 01 00 00 mov 0x128(%rdx),%r13 : bool equal_hasnull = false; : int nkey; : int32 compare; : : /* Compare the leading sort key */ : compare = inlineApplySortFunction(&scanKey->sk_func, scanKey->sk_flags, 0.28 : 7a0fbc: 0f b6 46 10 movzbl 0x10(%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3194 0.80 : 7a0fc0: 48 8b 4f 08 mov 0x8(%rdi),%rcx 1.79 : 7a0fc4: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.64 : 7a0fc8: 41 8b 55 0c mov 0xc(%r13),%edx 0.92 : 7a0fcc: 45 8b 75 00 mov 0x0(%r13),%r14d : Datum datum1, bool isNull1, : Datum datum2, bool isNull2) : { : int32 compare; : : if (isNull1) 0.23 : 7a0fd0: 0f 84 9a 01 00 00 je 7a1170 : { : if (isNull2) 0.00 : 7a0fd6: 84 c0 test %al,%al 0.00 : 7a0fd8: 0f 84 b7 05 00 00 je 7a1595 : b->datum1, b->isnull1); : if (compare != 0) : return compare; : : /* they are equal, so we only need to examine one null flag */ : if (a->isnull1) 0.00 : 7a0fde: c6 85 ff fb ff ff 01 movb $0x1,-0x401(%rbp) : equal_hasnull = true; : : /* Compare additional sort keys */ : tuple1 = (IndexTuple) a->tuple; : tuple2 = (IndexTuple) b->tuple; : keysz = state->nKeys; 0.00 : 7a0fe5: 48 8b 85 e0 fb ff ff mov -0x420(%rbp),%rax : tupDes = RelationGetDescr(state->indexRel); 0.09 : 7a0fec: 48 8b 95 e0 fb ff ff mov -0x420(%rbp),%rdx : /* they are equal, so we only need to examine one null flag */ : if (a->isnull1) : equal_hasnull = true; : : /* Compare additional sort keys */ : tuple1 = (IndexTuple) a->tuple; 0.07 : 7a0ff3: 4c 8b 13 mov (%rbx),%r10 : tuple2 = (IndexTuple) b->tuple; 0.19 : 7a0ff6: 4d 8b 0c 24 mov (%r12),%r9 : keysz = state->nKeys; 0.02 : 7a0ffa: 8b 40 04 mov 0x4(%rax),%eax 0.21 : 7a0ffd: 89 85 ec fb ff ff mov %eax,-0x414(%rbp) : tupDes = RelationGetDescr(state->indexRel); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3209 0.55 : 7a1003: 48 8b 82 20 01 00 00 mov 0x120(%rdx),%rax : scanKey++; : for (nkey = 2; nkey <= keysz; nkey++, scanKey++) 0.11 : 7a100a: 83 bd ec fb ff ff 01 cmpl $0x1,-0x414(%rbp) : : /* Compare additional sort keys */ : tuple1 = (IndexTuple) a->tuple; : tuple2 = (IndexTuple) b->tuple; : keysz = state->nKeys; : tupDes = RelationGetDescr(state->indexRel); 2.71 : 7a1011: 48 8b 40 38 mov 0x38(%rax),%rax 0.11 : 7a1015: 48 89 85 f0 fb ff ff mov %rax,-0x410(%rbp) : scanKey++; : for (nkey = 2; nkey <= keysz; nkey++, scanKey++) 0.02 : 7a101c: 0f 8e de 03 00 00 jle 7a1400 : /* Compare additional sort keys */ : tuple1 = (IndexTuple) a->tuple; : tuple2 = (IndexTuple) b->tuple; : keysz = state->nKeys; : tupDes = RelationGetDescr(state->indexRel); : scanKey++; 0.44 : 7a1022: 4d 8d 75 48 lea 0x48(%r13),%r14 0.02 : 7a1026: 41 bc 02 00 00 00 mov $0x2,%r12d 0.00 : 7a102c: 41 bf 01 00 00 00 mov $0x1,%r15d 0.05 : 7a1032: eb 2c jmp 7a1060 0.00 : 7a1034: 0f 1f 40 00 nopl 0x0(%rax) : { : int32 compare; : : if (isNull1) : { : if (isNull2) 0.00 : 7a1038: 84 d2 test %dl,%dl 0.00 : 7a103a: 0f 84 40 05 00 00 je 7a1580 0.00 : 7a1040: c6 85 ff fb ff ff 01 movb $0x1,-0x401(%rbp) : tuple1 = (IndexTuple) a->tuple; : tuple2 = (IndexTuple) b->tuple; : keysz = state->nKeys; : tupDes = RelationGetDescr(state->indexRel); : scanKey++; : for (nkey = 2; nkey <= keysz; nkey++, scanKey++) 0.00 : 7a1047: 41 83 c4 01 add $0x1,%r12d 0.00 : 7a104b: 41 83 c7 01 add $0x1,%r15d 0.02 : 7a104f: 44 39 a5 ec fb ff ff cmp %r12d,-0x414(%rbp) 0.00 : 7a1056: 0f 8c a4 03 00 00 jl 7a1400 0.00 : 7a105c: 49 83 c6 48 add $0x48,%r14 : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = index_getattr(tuple1, nkey, tupDes, &isnull1); 0.32 : 7a1060: 66 41 83 7a 06 00 cmpw $0x0,0x6(%r10) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3218 12.92 : 7a1066: 0f 88 2c 01 00 00 js 7a1198 0.04 : 7a106c: 48 8b 8d f0 fb ff ff mov -0x410(%rbp),%rcx 0.14 : 7a1073: 49 63 d4 movslq %r12d,%rdx 0.18 : 7a1076: 48 8b 41 08 mov 0x8(%rcx),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3218 0.76 : 7a107a: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 1.33 : 7a107f: 8b 42 54 mov 0x54(%rdx),%eax 1.44 : 7a1082: 85 c0 test %eax,%eax 0.00 : 7a1084: 0f 88 ae 02 00 00 js 7a1338 0.19 : 7a108a: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.11 : 7a108e: 0f 84 dc 01 00 00 je 7a1270 0.25 : 7a1094: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 7a1098: 66 83 fa 08 cmp $0x8,%dx 0.00 : 7a109c: 0f 84 1e 03 00 00 je 7a13c0 0.28 : 7a10a2: 66 83 fa 04 cmp $0x4,%dx 0.00 : 7a10a6: 0f 84 34 03 00 00 je 7a13e0 0.00 : 7a10ac: 66 83 fa 02 cmp $0x2,%dx 0.00 : 7a10b0: 0f 84 fa 03 00 00 je 7a14b0 0.00 : 7a10b6: 48 98 cltq 0.00 : 7a10b8: 45 31 ed xor %r13d,%r13d 0.00 : 7a10bb: 45 0f b6 44 02 08 movzbl 0x8(%r10,%rax,1),%r8d 0.00 : 7a10c1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : datum2 = index_getattr(tuple2, nkey, tupDes, &isnull2); 0.02 : 7a10c8: 66 41 83 79 06 00 cmpw $0x0,0x6(%r9) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3219 1.26 : 7a10ce: 0f 88 2c 01 00 00 js 7a1200 0.11 : 7a10d4: 48 8b 8d f0 fb ff ff mov -0x410(%rbp),%rcx 0.28 : 7a10db: 49 63 d4 movslq %r12d,%rdx 0.00 : 7a10de: 48 8b 41 08 mov 0x8(%rcx),%rax 0.11 : 7a10e2: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.50 : 7a10e7: 8b 42 54 mov 0x54(%rdx),%eax 0.53 : 7a10ea: 85 c0 test %eax,%eax 0.00 : 7a10ec: 0f 88 86 02 00 00 js 7a1378 0.00 : 7a10f2: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.02 : 7a10f6: 0f 84 84 01 00 00 je 7a1280 0.02 : 7a10fc: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.09 : 7a1100: 66 83 fa 08 cmp $0x8,%dx 0.00 : 7a1104: 0f 84 c6 02 00 00 je 7a13d0 0.00 : 7a110a: 66 83 fa 04 cmp $0x4,%dx 0.04 : 7a110e: 66 90 xchg %ax,%ax 0.02 : 7a1110: 0f 84 da 02 00 00 je 7a13f0 0.00 : 7a1116: 66 83 fa 02 cmp $0x2,%dx 0.00 : 7a111a: 0f 84 80 03 00 00 je 7a14a0 0.00 : 7a1120: 48 98 cltq 0.00 : 7a1122: 31 d2 xor %edx,%edx 0.00 : 7a1124: 41 0f b6 74 01 08 movzbl 0x8(%r9,%rax,1),%esi 0.00 : 7a112a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Datum datum1, bool isNull1, : Datum datum2, bool isNull2) : { : int32 compare; : : if (isNull1) 0.12 : 7a1130: 45 84 ed test %r13b,%r13b : isnull2; : : datum1 = index_getattr(tuple1, nkey, tupDes, &isnull1); : datum2 = index_getattr(tuple2, nkey, tupDes, &isnull2); : : compare = inlineApplySortFunction(&scanKey->sk_func, scanKey->sk_flags, 0.00 : 7a1133: 41 8b 4e 0c mov 0xc(%r14),%ecx 0.05 : 7a1137: 41 8b 1e mov (%r14),%ebx : Datum datum1, bool isNull1, : Datum datum2, bool isNull2) : { : int32 compare; : : if (isNull1) 0.09 : 7a113a: 0f 85 f8 fe ff ff jne 7a1038 : else if (sk_flags & SK_BT_NULLS_FIRST) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) 0.32 : 7a1140: 84 d2 test %dl,%dl 0.00 : 7a1142: 0f 84 48 01 00 00 je 7a1290 : { : if (sk_flags & SK_BT_NULLS_FIRST) 0.00 : 7a1148: 81 e3 00 00 00 02 and $0x2000000,%ebx 0.00 : 7a114e: 74 38 je 7a1188 : { : OffsetNumber pos1 = ItemPointerGetOffsetNumber(&tuple1->t_tid); : OffsetNumber pos2 = ItemPointerGetOffsetNumber(&tuple2->t_tid); : : if (pos1 != pos2) : return (pos1 < pos2) ? -1 : 1; 0.04 : 7a1150: ba 01 00 00 00 mov $0x1,%edx : } : : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3288 0.69 : 7a1155: 48 81 c4 18 04 00 00 add $0x418,%rsp 2.76 : 7a115c: 89 d0 mov %edx,%eax 0.12 : 7a115e: 5b pop %rbx 0.39 : 7a115f: 41 5c pop %r12 0.44 : 7a1161: 41 5d pop %r13 1.91 : 7a1163: 41 5e pop %r14 0.16 : 7a1165: 41 5f pop %r15 0.60 : 7a1167: c9 leaveq 2.13 : 7a1168: c3 retq 0.00 : 7a1169: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : else if (sk_flags & SK_BT_NULLS_FIRST) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2830 1.21 : 7a1170: 84 c0 test %al,%al 0.00 : 7a1172: 0f 84 48 03 00 00 je 7a14c0 : { : if (sk_flags & SK_BT_NULLS_FIRST) 0.00 : 7a1178: 41 81 e6 00 00 00 02 and $0x2000000,%r14d 0.00 : 7a117f: 75 cf jne 7a1150 0.00 : 7a1181: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : OffsetNumber pos1 = ItemPointerGetOffsetNumber(&tuple1->t_tid); : OffsetNumber pos2 = ItemPointerGetOffsetNumber(&tuple2->t_tid); : : if (pos1 != pos2) : return (pos1 < pos2) ? -1 : 1; 0.00 : 7a1188: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 7a118d: 0f 1f 00 nopl (%rax) 0.00 : 7a1190: eb c3 jmp 7a1155 0.00 : 7a1192: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = index_getattr(tuple1, nkey, tupDes, &isnull1); 0.00 : 7a1198: 44 89 f8 mov %r15d,%eax 0.00 : 7a119b: 44 89 f9 mov %r15d,%ecx 0.00 : 7a119e: 45 31 c0 xor %r8d,%r8d 0.00 : 7a11a1: c1 f8 03 sar $0x3,%eax 0.00 : 7a11a4: 83 e1 07 and $0x7,%ecx 0.00 : 7a11a7: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 7a11ad: 48 98 cltq 0.00 : 7a11af: 41 0f be 44 02 08 movsbl 0x8(%r10,%rax,1),%eax 0.00 : 7a11b5: d3 f8 sar %cl,%eax 0.00 : 7a11b7: a8 01 test $0x1,%al 0.00 : 7a11b9: 0f 84 09 ff ff ff je 7a10c8 0.00 : 7a11bf: 48 8b 95 f0 fb ff ff mov -0x410(%rbp),%rdx 0.00 : 7a11c6: 4c 89 d7 mov %r10,%rdi 0.00 : 7a11c9: 44 89 e6 mov %r12d,%esi 0.00 : 7a11cc: 4c 89 8d d0 fb ff ff mov %r9,-0x430(%rbp) 0.00 : 7a11d3: 4c 89 95 c8 fb ff ff mov %r10,-0x438(%rbp) 0.00 : 7a11da: 45 31 ed xor %r13d,%r13d 0.00 : 7a11dd: e8 7e f9 cc ff callq 470b60 0.00 : 7a11e2: 4c 8b 8d d0 fb ff ff mov -0x430(%rbp),%r9 0.00 : 7a11e9: 49 89 c0 mov %rax,%r8 0.00 : 7a11ec: 4c 8b 95 c8 fb ff ff mov -0x438(%rbp),%r10 : datum2 = index_getattr(tuple2, nkey, tupDes, &isnull2); 0.00 : 7a11f3: 66 41 83 79 06 00 cmpw $0x0,0x6(%r9) 0.00 : 7a11f9: 0f 89 d5 fe ff ff jns 7a10d4 0.00 : 7a11ff: 90 nop 0.00 : 7a1200: 44 89 f8 mov %r15d,%eax 0.00 : 7a1203: 44 89 f9 mov %r15d,%ecx 0.00 : 7a1206: 31 f6 xor %esi,%esi 0.00 : 7a1208: c1 f8 03 sar $0x3,%eax 0.00 : 7a120b: 83 e1 07 and $0x7,%ecx 0.00 : 7a120e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 7a1213: 48 98 cltq 0.00 : 7a1215: 41 0f be 44 01 08 movsbl 0x8(%r9,%rax,1),%eax 0.00 : 7a121b: d3 f8 sar %cl,%eax 0.00 : 7a121d: a8 01 test $0x1,%al 0.00 : 7a121f: 0f 84 0b ff ff ff je 7a1130 0.00 : 7a1225: 48 8b 95 f0 fb ff ff mov -0x410(%rbp),%rdx 0.00 : 7a122c: 44 89 e6 mov %r12d,%esi 0.00 : 7a122f: 4c 89 cf mov %r9,%rdi 0.00 : 7a1232: 4c 89 85 d8 fb ff ff mov %r8,-0x428(%rbp) 0.00 : 7a1239: 4c 89 8d d0 fb ff ff mov %r9,-0x430(%rbp) 0.00 : 7a1240: 4c 89 95 c8 fb ff ff mov %r10,-0x438(%rbp) 0.00 : 7a1247: e8 14 f9 cc ff callq 470b60 0.00 : 7a124c: 31 d2 xor %edx,%edx 0.00 : 7a124e: 48 89 c6 mov %rax,%rsi 0.00 : 7a1251: 4c 8b 95 c8 fb ff ff mov -0x438(%rbp),%r10 0.00 : 7a1258: 4c 8b 8d d0 fb ff ff mov -0x430(%rbp),%r9 0.00 : 7a125f: 4c 8b 85 d8 fb ff ff mov -0x428(%rbp),%r8 0.00 : 7a1266: e9 c5 fe ff ff jmpq 7a1130 0.00 : 7a126b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = index_getattr(tuple1, nkey, tupDes, &isnull1); 0.00 : 7a1270: 48 98 cltq 0.00 : 7a1272: 45 31 ed xor %r13d,%r13d 0.00 : 7a1275: 4d 8d 44 02 08 lea 0x8(%r10,%rax,1),%r8 0.00 : 7a127a: e9 49 fe ff ff jmpq 7a10c8 0.00 : 7a127f: 90 nop : datum2 = index_getattr(tuple2, nkey, tupDes, &isnull2); 0.00 : 7a1280: 48 98 cltq 0.00 : 7a1282: 31 d2 xor %edx,%edx 0.00 : 7a1284: 49 8d 74 01 08 lea 0x8(%r9,%rax,1),%rsi 0.00 : 7a1289: e9 a2 fe ff ff jmpq 7a1130 0.00 : 7a128e: 66 90 xchg %ax,%ax : myFunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 2, collation, NULL, NULL); 0.00 : 7a1290: 49 8d 46 10 lea 0x10(%r14),%rax : fcinfo.arg[0] = arg1; : fcinfo.arg[1] = arg2; : fcinfo.argnull[0] = false; : fcinfo.argnull[1] = false; : : result = FunctionCallInvoke(&fcinfo); 0.05 : 7a1294: 4c 89 8d d0 fb ff ff mov %r9,-0x430(%rbp) 0.19 : 7a129b: 4c 89 95 c8 fb ff ff mov %r10,-0x438(%rbp) : myFunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 2, collation, NULL, NULL); 0.50 : 7a12a2: 48 c7 85 08 fc ff ff movq $0x0,-0x3f8(%rbp) 0.00 : 7a12a9: 00 00 00 00 0.16 : 7a12ad: 48 c7 85 10 fc ff ff movq $0x0,-0x3f0(%rbp) 0.00 : 7a12b4: 00 00 00 00 : fcinfo.arg[0] = arg1; : fcinfo.arg[1] = arg2; : fcinfo.argnull[0] = false; : fcinfo.argnull[1] = false; : : result = FunctionCallInvoke(&fcinfo); 0.11 : 7a12b8: 48 8d bd 00 fc ff ff lea -0x400(%rbp),%rdi : myFunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 2, collation, NULL, NULL); 0.00 : 7a12bf: 48 89 85 00 fc ff ff mov %rax,-0x400(%rbp) 0.30 : 7a12c6: 89 8d 18 fc ff ff mov %ecx,-0x3e8(%rbp) 0.16 : 7a12cc: c6 85 1c fc ff ff 00 movb $0x0,-0x3e4(%rbp) 0.00 : 7a12d3: 66 c7 85 1e fc ff ff movw $0x2,-0x3e2(%rbp) 0.00 : 7a12da: 02 00 : : fcinfo.arg[0] = arg1; 0.05 : 7a12dc: 4c 89 85 20 fc ff ff mov %r8,-0x3e0(%rbp) : fcinfo.arg[1] = arg2; 0.28 : 7a12e3: 48 89 b5 28 fc ff ff mov %rsi,-0x3d8(%rbp) : fcinfo.argnull[0] = false; 0.09 : 7a12ea: c6 85 40 ff ff ff 00 movb $0x0,-0xc0(%rbp) : fcinfo.argnull[1] = false; 0.25 : 7a12f1: c6 85 41 ff ff ff 00 movb $0x0,-0xbf(%rbp) : : result = FunctionCallInvoke(&fcinfo); 0.04 : 7a12f8: 41 ff 56 10 callq *0x10(%r14) : : /* Check for null result, since caller is clearly not expecting one */ : if (fcinfo.isnull) 0.46 : 7a12fc: 80 bd 1c fc ff ff 00 cmpb $0x0,-0x3e4(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2802 0.80 : 7a1303: 4c 8b 8d d0 fb ff ff mov -0x430(%rbp),%r9 0.09 : 7a130a: 4c 8b 95 c8 fb ff ff mov -0x438(%rbp),%r10 0.02 : 7a1311: 0f 85 29 03 00 00 jne 7a1640 : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = DatumGetInt32(myFunctionCall2Coll(sortFunction, collation, 0.25 : 7a1317: 89 c2 mov %eax,%edx : datum1, datum2)); : : if (sk_flags & SK_BT_DESC) : compare = -compare; 0.00 : 7a1319: f7 d8 neg %eax 0.04 : 7a131b: 81 e3 00 00 00 01 and $0x1000000,%ebx 0.00 : 7a1321: 0f 45 d0 cmovne %eax,%edx : : compare = inlineApplySortFunction(&scanKey->sk_func, scanKey->sk_flags, : scanKey->sk_collation, : datum1, isnull1, : datum2, isnull2); : if (compare != 0) 0.30 : 7a1324: 85 d2 test %edx,%edx 0.00 : 7a1326: 0f 84 1b fd ff ff je 7a1047 0.02 : 7a132c: e9 24 fe ff ff jmpq 7a1155 0.00 : 7a1331: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = index_getattr(tuple1, nkey, tupDes, &isnull1); 0.04 : 7a1338: 48 8b 95 f0 fb ff ff mov -0x410(%rbp),%rdx 0.00 : 7a133f: 4c 89 d7 mov %r10,%rdi 0.00 : 7a1342: 44 89 e6 mov %r12d,%esi 0.00 : 7a1345: 4c 89 8d d0 fb ff ff mov %r9,-0x430(%rbp) 0.12 : 7a134c: 4c 89 95 c8 fb ff ff mov %r10,-0x438(%rbp) 0.00 : 7a1353: 45 31 ed xor %r13d,%r13d 0.00 : 7a1356: e8 05 f8 cc ff callq 470b60 0.05 : 7a135b: 4c 8b 8d d0 fb ff ff mov -0x430(%rbp),%r9 0.14 : 7a1362: 49 89 c0 mov %rax,%r8 0.00 : 7a1365: 4c 8b 95 c8 fb ff ff mov -0x438(%rbp),%r10 0.00 : 7a136c: e9 57 fd ff ff jmpq 7a10c8 0.00 : 7a1371: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : datum2 = index_getattr(tuple2, nkey, tupDes, &isnull2); 0.16 : 7a1378: 48 8b 95 f0 fb ff ff mov -0x410(%rbp),%rdx 0.02 : 7a137f: 44 89 e6 mov %r12d,%esi 0.00 : 7a1382: 4c 89 cf mov %r9,%rdi 0.00 : 7a1385: 4c 89 85 d8 fb ff ff mov %r8,-0x428(%rbp) 0.07 : 7a138c: 4c 89 8d d0 fb ff ff mov %r9,-0x430(%rbp) 0.00 : 7a1393: 4c 89 95 c8 fb ff ff mov %r10,-0x438(%rbp) 0.00 : 7a139a: e8 c1 f7 cc ff callq 470b60 0.11 : 7a139f: 31 d2 xor %edx,%edx 0.04 : 7a13a1: 48 89 c6 mov %rax,%rsi 0.00 : 7a13a4: 4c 8b 85 d8 fb ff ff mov -0x428(%rbp),%r8 0.21 : 7a13ab: 4c 8b 8d d0 fb ff ff mov -0x430(%rbp),%r9 0.02 : 7a13b2: 4c 8b 95 c8 fb ff ff mov -0x438(%rbp),%r10 0.05 : 7a13b9: e9 72 fd ff ff jmpq 7a1130 0.00 : 7a13be: 66 90 xchg %ax,%ax : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = index_getattr(tuple1, nkey, tupDes, &isnull1); 0.00 : 7a13c0: 48 98 cltq 0.00 : 7a13c2: 45 31 ed xor %r13d,%r13d 0.00 : 7a13c5: 4d 8b 44 02 08 mov 0x8(%r10,%rax,1),%r8 0.00 : 7a13ca: e9 f9 fc ff ff jmpq 7a10c8 0.00 : 7a13cf: 90 nop : datum2 = index_getattr(tuple2, nkey, tupDes, &isnull2); 0.00 : 7a13d0: 48 98 cltq 0.00 : 7a13d2: 31 d2 xor %edx,%edx 0.00 : 7a13d4: 49 8b 74 01 08 mov 0x8(%r9,%rax,1),%rsi 0.00 : 7a13d9: e9 52 fd ff ff jmpq 7a1130 0.00 : 7a13de: 66 90 xchg %ax,%ax : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = index_getattr(tuple1, nkey, tupDes, &isnull1); 0.21 : 7a13e0: 48 98 cltq 0.09 : 7a13e2: 45 31 ed xor %r13d,%r13d 0.00 : 7a13e5: 45 8b 44 02 08 mov 0x8(%r10,%rax,1),%r8d 0.44 : 7a13ea: e9 d9 fc ff ff jmpq 7a10c8 0.00 : 7a13ef: 90 nop : datum2 = index_getattr(tuple2, nkey, tupDes, &isnull2); 0.25 : 7a13f0: 48 98 cltq 0.00 : 7a13f2: 31 d2 xor %edx,%edx 0.04 : 7a13f4: 41 8b 74 01 08 mov 0x8(%r9,%rax,1),%esi 0.02 : 7a13f9: e9 32 fd ff ff jmpq 7a1130 0.00 : 7a13fe: 66 90 xchg %ax,%ax : * It is sufficient to make the test here, because if two tuples are equal : * they *must* get compared at some stage of the sort --- otherwise the : * sort algorithm wouldn't have checked whether one must appear before the : * other. : */ : if (state->enforceUnique && !equal_hasnull) 0.04 : 7a1400: 48 8b 85 e0 fb ff ff mov -0x420(%rbp),%rax 0.00 : 7a1407: 80 b8 30 01 00 00 00 cmpb $0x0,0x130(%rax) 0.04 : 7a140e: 74 58 je 7a1468 0.00 : 7a1410: 80 bd ff fb ff ff 00 cmpb $0x0,-0x401(%rbp) 0.00 : 7a1417: 75 4f jne 7a1468 : * value to itself, but we always use our own implementation, which : * does not. : */ : Assert(tuple1 != tuple2); : : index_deform_tuple(tuple1, tupDes, values, isnull); 0.00 : 7a1419: 48 8b b5 f0 fb ff ff mov -0x410(%rbp),%rsi 0.00 : 7a1420: 48 8d 5d b0 lea -0x50(%rbp),%rbx 0.00 : 7a1424: 4c 8d ad 00 fc ff ff lea -0x400(%rbp),%r13 0.00 : 7a142b: 4c 89 d7 mov %r10,%rdi 0.00 : 7a142e: 48 89 d9 mov %rbx,%rcx 0.00 : 7a1431: 4c 89 ea mov %r13,%rdx 0.00 : 7a1434: e8 e7 fc cc ff callq 471120 : ereport(ERROR, 0.00 : 7a1439: 45 31 c0 xor %r8d,%r8d 0.00 : 7a143c: b9 e0 2f 8e 00 mov $0x8e2fe0,%ecx 0.00 : 7a1441: ba c0 0c 00 00 mov $0xcc0,%edx 0.00 : 7a1446: be c8 29 8e 00 mov $0x8e29c8,%esi 0.00 : 7a144b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 7a1450: e8 6b 96 fd ff callq 77aac0 0.00 : 7a1455: 84 c0 test %al,%al 0.00 : 7a1457: 0f 85 50 01 00 00 jne 7a15ad 0.00 : 7a145d: e8 6e 80 cc ff callq 4694d0 0.00 : 7a1462: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * If key values are equal, we sort on ItemPointer. This does not affect : * validity of the finished index, but it may be useful to have index : * scans in physical order. : */ : { : BlockNumber blk1 = ItemPointerGetBlockNumber(&tuple1->t_tid); 0.05 : 7a1468: 41 0f b7 0a movzwl (%r10),%ecx 0.00 : 7a146c: 41 0f b7 42 02 movzwl 0x2(%r10),%eax : BlockNumber blk2 = ItemPointerGetBlockNumber(&tuple2->t_tid); 0.00 : 7a1471: 41 0f b7 51 02 movzwl 0x2(%r9),%edx : * If key values are equal, we sort on ItemPointer. This does not affect : * validity of the finished index, but it may be useful to have index : * scans in physical order. : */ : { : BlockNumber blk1 = ItemPointerGetBlockNumber(&tuple1->t_tid); 0.00 : 7a1476: c1 e1 10 shl $0x10,%ecx 0.04 : 7a1479: 09 c1 or %eax,%ecx : BlockNumber blk2 = ItemPointerGetBlockNumber(&tuple2->t_tid); 0.00 : 7a147b: 41 0f b7 01 movzwl (%r9),%eax 0.00 : 7a147f: c1 e0 10 shl $0x10,%eax 0.00 : 7a1482: 09 d0 or %edx,%eax : : if (blk1 != blk2) 0.05 : 7a1484: 39 c1 cmp %eax,%ecx 0.00 : 7a1486: 0f 84 d4 00 00 00 je 7a1560 : { : OffsetNumber pos1 = ItemPointerGetOffsetNumber(&tuple1->t_tid); : OffsetNumber pos2 = ItemPointerGetOffsetNumber(&tuple2->t_tid); : : if (pos1 != pos2) : return (pos1 < pos2) ? -1 : 1; 0.00 : 7a148c: 0f 83 be fc ff ff jae 7a1150 0.05 : 7a1492: ba ff ff ff ff mov $0xffffffff,%edx 0.05 : 7a1497: e9 b9 fc ff ff jmpq 7a1155 0.00 : 7a149c: 0f 1f 40 00 nopl 0x0(%rax) : datum2; : bool isnull1, : isnull2; : : datum1 = index_getattr(tuple1, nkey, tupDes, &isnull1); : datum2 = index_getattr(tuple2, nkey, tupDes, &isnull2); 0.00 : 7a14a0: 48 98 cltq 0.00 : 7a14a2: 31 d2 xor %edx,%edx 0.00 : 7a14a4: 41 0f b7 74 01 08 movzwl 0x8(%r9,%rax,1),%esi 0.00 : 7a14aa: e9 81 fc ff ff jmpq 7a1130 0.00 : 7a14af: 90 nop : Datum datum1, : datum2; : bool isnull1, : isnull2; : : datum1 = index_getattr(tuple1, nkey, tupDes, &isnull1); 0.00 : 7a14b0: 48 98 cltq 0.00 : 7a14b2: 45 31 ed xor %r13d,%r13d 0.00 : 7a14b5: 45 0f b7 44 02 08 movzwl 0x8(%r10,%rax,1),%r8d 0.00 : 7a14bb: e9 08 fc ff ff jmpq 7a10c8 : myFunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 2, collation, NULL, NULL); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2792 2.46 : 7a14c0: 49 8d 45 10 lea 0x10(%r13),%rax 0.00 : 7a14c4: 48 c7 85 08 fc ff ff movq $0x0,-0x3f8(%rbp) 0.00 : 7a14cb: 00 00 00 00 0.23 : 7a14cf: 48 c7 85 10 fc ff ff movq $0x0,-0x3f0(%rbp) 0.00 : 7a14d6: 00 00 00 00 0.50 : 7a14da: 89 95 18 fc ff ff mov %edx,-0x3e8(%rbp) 2.27 : 7a14e0: c6 85 1c fc ff ff 00 movb $0x0,-0x3e4(%rbp) : fcinfo.arg[0] = arg1; : fcinfo.arg[1] = arg2; : fcinfo.argnull[0] = false; : fcinfo.argnull[1] = false; : : result = FunctionCallInvoke(&fcinfo); 0.43 : 7a14e7: 48 8d bd 00 fc ff ff lea -0x400(%rbp),%rdi : myFunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 2, collation, NULL, NULL); 0.02 : 7a14ee: 48 89 85 00 fc ff ff mov %rax,-0x400(%rbp) 1.29 : 7a14f5: 66 c7 85 1e fc ff ff movw $0x2,-0x3e2(%rbp) 0.00 : 7a14fc: 02 00 : : fcinfo.arg[0] = arg1; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2794 1.93 : 7a14fe: 48 89 8d 20 fc ff ff mov %rcx,-0x3e0(%rbp) : fcinfo.arg[1] = arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2795 2.18 : 7a1505: 48 89 b5 28 fc ff ff mov %rsi,-0x3d8(%rbp) : fcinfo.argnull[0] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2796 1.93 : 7a150c: c6 85 40 ff ff ff 00 movb $0x0,-0xc0(%rbp) : fcinfo.argnull[1] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2797 2.16 : 7a1513: c6 85 41 ff ff ff 00 movb $0x0,-0xbf(%rbp) : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2799 2.30 : 7a151a: 41 ff 55 10 callq *0x10(%r13) : : /* Check for null result, since caller is clearly not expecting one */ : if (fcinfo.isnull) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2802 1.42 : 7a151e: 80 bd 1c fc ff ff 00 cmpb $0x0,-0x3e4(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2802 7.55 : 7a1525: 0f 85 15 01 00 00 jne 7a1640 : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = DatumGetInt32(myFunctionCall2Coll(sortFunction, collation, /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:2839 2.22 : 7a152b: 89 c2 mov %eax,%edx : datum1, datum2)); : : if (sk_flags & SK_BT_DESC) : compare = -compare; 0.12 : 7a152d: f7 d8 neg %eax 0.02 : 7a152f: 41 81 e6 00 00 00 01 and $0x1000000,%r14d 0.14 : 7a1536: 0f 45 d0 cmovne %eax,%edx : /* Compare the leading sort key */ : compare = inlineApplySortFunction(&scanKey->sk_func, scanKey->sk_flags, : scanKey->sk_collation, : a->datum1, a->isnull1, : b->datum1, b->isnull1); : if (compare != 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3198 2.89 : 7a1539: 85 d2 test %edx,%edx 0.00 : 7a153b: 0f 85 14 fc ff ff jne 7a1155 : return compare; : : /* they are equal, so we only need to examine one null flag */ : if (a->isnull1) 0.35 : 7a1541: c6 85 ff fb ff ff 00 movb $0x0,-0x401(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:3202 0.62 : 7a1548: 80 7b 10 00 cmpb $0x0,0x10(%rbx) 0.28 : 7a154c: 0f 84 93 fa ff ff je 7a0fe5 0.00 : 7a1552: e9 87 fa ff ff jmpq 7a0fde 0.00 : 7a1557: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a155e: 00 00 : if (blk1 != blk2) : return (blk1 < blk2) ? -1 : 1; : } : { : OffsetNumber pos1 = ItemPointerGetOffsetNumber(&tuple1->t_tid); : OffsetNumber pos2 = ItemPointerGetOffsetNumber(&tuple2->t_tid); 0.02 : 7a1560: 41 0f b7 41 04 movzwl 0x4(%r9),%eax : : if (pos1 != pos2) 0.02 : 7a1565: 31 d2 xor %edx,%edx 0.00 : 7a1567: 66 41 39 42 04 cmp %ax,0x4(%r10) 0.00 : 7a156c: 0f 84 e3 fb ff ff je 7a1155 : return (pos1 < pos2) ? -1 : 1; 0.00 : 7a1572: 0f 83 d8 fb ff ff jae 7a1150 0.00 : 7a1578: e9 15 ff ff ff jmpq 7a1492 0.00 : 7a157d: 0f 1f 00 nopl (%rax) : : if (isNull1) : { : if (isNull2) : compare = 0; /* NULL "=" NULL */ : else if (sk_flags & SK_BT_NULLS_FIRST) 0.00 : 7a1580: 81 e3 00 00 00 02 and $0x2000000,%ebx 0.00 : 7a1586: 66 90 xchg %ax,%ax 0.00 : 7a1588: 0f 85 fa fb ff ff jne 7a1188 0.00 : 7a158e: 66 90 xchg %ax,%ax 0.00 : 7a1590: e9 bb fb ff ff jmpq 7a1150 0.00 : 7a1595: 41 81 e6 00 00 00 02 and $0x2000000,%r14d 0.00 : 7a159c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7a15a0: 0f 85 e2 fb ff ff jne 7a1188 0.00 : 7a15a6: 66 90 xchg %ax,%ax 0.00 : 7a15a8: e9 a3 fb ff ff jmpq 7a1150 : * does not. : */ : Assert(tuple1 != tuple2); : : index_deform_tuple(tuple1, tupDes, values, isnull); : ereport(ERROR, 0.00 : 7a15ad: 48 8b 95 e0 fb ff ff mov -0x420(%rbp),%rdx 0.00 : 7a15b4: 48 8b 82 20 01 00 00 mov 0x120(%rdx),%rax 0.00 : 7a15bb: 48 8b ba 18 01 00 00 mov 0x118(%rdx),%rdi 0.00 : 7a15c2: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 7a15c6: e8 55 85 fc ff callq 769b20 0.00 : 7a15cb: 48 8b 8d e0 fb ff ff mov -0x420(%rbp),%rcx 0.00 : 7a15d2: 48 89 da mov %rbx,%rdx 0.00 : 7a15d5: 4c 89 ee mov %r13,%rsi 0.00 : 7a15d8: 41 89 c4 mov %eax,%r12d 0.00 : 7a15db: 48 8b b9 20 01 00 00 mov 0x120(%rcx),%rdi 0.00 : 7a15e2: e8 89 38 d0 ff callq 4a4e70 0.00 : 7a15e7: bf 30 2a 8e 00 mov $0x8e2a30,%edi 0.00 : 7a15ec: 48 89 c6 mov %rax,%rsi 0.00 : 7a15ef: 31 c0 xor %eax,%eax 0.00 : 7a15f1: e8 3a af fd ff callq 77c530 0.00 : 7a15f6: 48 8b 95 e0 fb ff ff mov -0x420(%rbp),%rdx 0.00 : 7a15fd: 41 89 c5 mov %eax,%r13d 0.00 : 7a1600: bf 68 2d 8e 00 mov $0x8e2d68,%edi 0.00 : 7a1605: 48 8b 82 20 01 00 00 mov 0x120(%rdx),%rax 0.00 : 7a160c: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 7a1610: 31 c0 xor %eax,%eax 0.00 : 7a1612: e8 89 b2 fd ff callq 77c8a0 0.00 : 7a1617: bf c2 50 00 05 mov $0x50050c2,%edi 0.00 : 7a161c: 89 c3 mov %eax,%ebx 0.00 : 7a161e: e8 2d b7 fd ff callq 77cd50 0.00 : 7a1623: 44 89 e1 mov %r12d,%ecx 0.00 : 7a1626: 89 c7 mov %eax,%edi 0.00 : 7a1628: 44 89 ea mov %r13d,%edx 0.00 : 7a162b: 89 de mov %ebx,%esi 0.00 : 7a162d: 31 c0 xor %eax,%eax 0.00 : 7a162f: e8 ac 8f fd ff callq 77a5e0 0.00 : 7a1634: e9 24 fe ff ff jmpq 7a145d 0.00 : 7a1639: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : result = FunctionCallInvoke(&fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (fcinfo.isnull) : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); 0.00 : 7a1640: ba 00 30 8e 00 mov $0x8e3000,%edx 0.00 : 7a1645: be f3 0a 00 00 mov $0xaf3,%esi 0.00 : 7a164a: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 7a164f: e8 cc 9d fd ff callq 77b420 0.00 : 7a1654: 48 8b 85 00 fc ff ff mov -0x400(%rbp),%rax 0.00 : 7a165b: be 97 4c 8d 00 mov $0x8d4c97,%esi 0.00 : 7a1660: bf 14 00 00 00 mov $0x14,%edi 0.00 : 7a1665: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 7a1668: 31 c0 xor %eax,%eax 0.00 : 7a166a: e8 c1 9b fd ff callq 77b230 0.00 : 7a166f: e8 5c 7e cc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 59.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 9.91 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 9.44 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 8.22 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 8.05 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 0.71 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1504 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4f20 : : * though not on the data they reference. This is OK since the XLogRecData : * structs are always just temporaries in the calling code. : */ : XLogRecPtr : XLogInsert(RmgrId rmid, uint8 info, XLogRecData *rdata) : { 0.00 : 4d4f20: 55 push %rbp 0.09 : 4d4f21: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4f24: 41 57 push %r15 0.02 : 4d4f26: 41 56 push %r14 0.00 : 4d4f28: 41 55 push %r13 0.00 : 4d4f2a: 41 54 push %r12 0.00 : 4d4f2c: 53 push %rbx 0.00 : 4d4f2d: 48 81 ec a8 02 00 00 sub $0x2a8,%rsp : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d4f34: 48 8b 05 5d 42 6a 00 mov 0x6a425d(%rip),%rax # b79198 : pg_crc32 rdata_crc; : uint32 len, : write_len; : unsigned i; : bool doPageWrites; : bool isLogSwitch = (rmid == RM_XLOG_ID && info == XLOG_SWITCH); 0.04 : 4d4f3b: 40 84 ff test %dil,%dil : * though not on the data they reference. This is OK since the XLogRecData : * structs are always just temporaries in the calling code. : */ : XLogRecPtr : XLogInsert(RmgrId rmid, uint8 info, XLogRecData *rdata) : { 0.00 : 4d4f3e: 48 89 95 38 fd ff ff mov %rdx,-0x2c8(%rbp) 0.00 : 4d4f45: 40 88 bd 47 fd ff ff mov %dil,-0x2b9(%rbp) 0.00 : 4d4f4c: 40 88 b5 46 fd ff ff mov %sil,-0x2ba(%rbp) : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d4f53: 48 89 85 48 fd ff ff mov %rax,-0x2b8(%rbp) : pg_crc32 rdata_crc; : uint32 len, : write_len; : unsigned i; : bool doPageWrites; : bool isLogSwitch = (rmid == RM_XLOG_ID && info == XLOG_SWITCH); 0.00 : 4d4f5a: 0f 94 c0 sete %al 0.00 : 4d4f5d: 40 80 fe 40 cmp $0x40,%sil 0.00 : 4d4f61: 0f 94 85 57 fd ff ff sete -0x2a9(%rbp) 0.00 : 4d4f68: 20 85 57 fd ff ff and %al,-0x2a9(%rbp) : uint8 info_orig = info; : static XLogRecord *rechdr; : XLogRecPtr StartPos; : XLogRecPtr EndPos; : : if (rechdr == NULL) 0.00 : 4d4f6e: 48 83 3d b2 43 6a 00 cmpq $0x0,0x6a43b2(%rip) # b79328 0.00 : 4d4f75: 00 0.00 : 4d4f76: 0f 84 62 08 00 00 je 4d57de : rechdr = (XLogRecord *) MAXALIGN(&rechdrbuf); : MemSet(rechdr, 0, SizeOfXLogRecord); : } : : /* cross-check on whether we should be here or not */ : if (!XLogInsertAllowed()) 0.00 : 4d4f7c: e8 8f 85 ff ff callq 4cd510 0.00 : 4d4f81: 84 c0 test %al,%al 0.00 : 4d4f83: 0f 84 ba 09 00 00 je 4d5943 : elog(ERROR, "cannot make new WAL entries during recovery"); : : /* info's high bits are reserved for use by me */ : if (info & XLR_INFO_MASK) 0.00 : 4d4f89: 0f b6 9d 46 fd ff ff movzbl -0x2ba(%rbp),%ebx 0.00 : 4d4f90: f6 c3 0f test $0xf,%bl 0.00 : 4d4f93: 0f 85 d4 09 00 00 jne 4d596d : : /* : * In bootstrap mode, we don't actually log anything but XLOG resources; : * return a phony record pointer. : */ : if (IsBootstrapProcessingMode() && rmid != RM_XLOG_ID) 0.00 : 4d4f99: 8b 35 9d 3b 69 00 mov 0x693b9d(%rip),%esi # b68b3c 0.02 : 4d4f9f: 85 f6 test %esi,%esi 0.00 : 4d4fa1: 75 18 jne 4d4fbb 0.00 : 4d4fa3: 80 bd 47 fd ff ff 00 cmpb $0x0,-0x2b9(%rbp) 0.00 : 4d4faa: 48 c7 85 58 fd ff ff movq $0x28,-0x2a8(%rbp) 0.00 : 4d4fb1: 28 00 00 00 0.00 : 4d4fb5: 0f 85 f8 01 00 00 jne 4d51b3 0.00 : 4d4fbb: 31 d2 xor %edx,%edx 0.00 : 4d4fbd: 0f 1f 00 nopl (%rax) : * any special treatment in the critical section where the chunks are : * copied into the WAL buffers. Those entries have to be unlinked from the : * chain if we have to loop back here. : */ : begin:; : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) 0.00 : 4d4fc0: 83 fa 03 cmp $0x3,%edx 0.00 : 4d4fc3: 0f 86 35 02 00 00 jbe 4d51fe : * Decide if we need to do full-page writes in this XLOG record: true if : * full_page_writes is on or we have a PITR request for it. Since we : * don't yet have an insertion lock, fullPageWrites and forcePageWrites : * could change under us, but we'll recheck them once we have a lock. : */ : doPageWrites = Insert->fullPageWrites || Insert->forcePageWrites; 0.00 : 4d4fc9: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 4d4fd0: 4c 8b a5 38 fd ff ff mov -0x2c8(%rbp),%r12 0.00 : 4d4fd7: 66 83 ba a0 00 00 00 cmpw $0x0,0xa0(%rdx) 0.00 : 4d4fde: 00 0.04 : 4d4fdf: 0f 95 85 56 fd ff ff setne -0x2aa(%rbp) 0.02 : 4d4fe6: 45 31 ed xor %r13d,%r13d 0.00 : 4d4fe9: eb 1b jmp 4d5006 0.00 : 4d4feb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (i >= XLR_MAX_BKP_BLOCKS) : elog(PANIC, "can backup at most %d blocks per xlog record", : XLR_MAX_BKP_BLOCKS); : } : /* Break out of loop when rdt points to last chain item */ : if (rdt->next == NULL) 0.00 : 4d4ff0: 49 8b 44 24 18 mov 0x18(%r12),%rax : for (rdt = rdata;;) : { : if (rdt->buffer == InvalidBuffer) : { : /* Simple data, just include it */ : len += rdt->len; 0.00 : 4d4ff5: 45 03 6c 24 08 add 0x8(%r12),%r13d : if (i >= XLR_MAX_BKP_BLOCKS) : elog(PANIC, "can backup at most %d blocks per xlog record", : XLR_MAX_BKP_BLOCKS); : } : /* Break out of loop when rdt points to last chain item */ : if (rdt->next == NULL) 0.04 : 4d4ffa: 48 85 c0 test %rax,%rax 0.00 : 4d4ffd: 0f 84 4a 02 00 00 je 4d524d : break; 0.00 : 4d5003: 49 89 c4 mov %rax,%r12 : doPageWrites = Insert->fullPageWrites || Insert->forcePageWrites; : : len = 0; : for (rdt = rdata;;) : { : if (rdt->buffer == InvalidBuffer) 0.04 : 4d5006: 41 8b 4c 24 0c mov 0xc(%r12),%ecx : { : /* Simple data, just include it */ : len += rdt->len; 0.00 : 4d500b: 31 db xor %ebx,%ebx 0.00 : 4d500d: 48 8d 55 b0 lea -0x50(%rbp),%rdx : doPageWrites = Insert->fullPageWrites || Insert->forcePageWrites; : : len = 0; : for (rdt = rdata;;) : { : if (rdt->buffer == InvalidBuffer) 0.00 : 4d5011: 85 c9 test %ecx,%ecx 0.00 : 4d5013: 74 db je 4d4ff0 : else : { : /* Find info for buffer */ : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) : { : if (rdt->buffer == dtbuf[i]) 0.00 : 4d5015: 8b 02 mov (%rdx),%eax 0.00 : 4d5017: 39 c1 cmp %eax,%ecx 0.00 : 4d5019: 0f 84 f9 01 00 00 je 4d5218 : } : else if (rdt->data) : len += rdt->len; : break; : } : if (dtbuf[i] == InvalidBuffer) 0.00 : 4d501f: 85 c0 test %eax,%eax 0.00 : 4d5021: 0f 84 79 02 00 00 je 4d52a0 : len += rdt->len; : } : else : { : /* Find info for buffer */ : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) 0.00 : 4d5027: 83 c3 01 add $0x1,%ebx 0.00 : 4d502a: 48 83 c2 04 add $0x4,%rdx 0.00 : 4d502e: 83 fb 04 cmp $0x4,%ebx 0.00 : 4d5031: 75 e2 jne 4d5015 : len += rdt->len; : break; : } : } : if (i >= XLR_MAX_BKP_BLOCKS) : elog(PANIC, "can backup at most %d blocks per xlog record", 0.00 : 4d5033: ba 4f d6 7b 00 mov $0x7bd64f,%edx 0.00 : 4d5038: be ce 03 00 00 mov $0x3ce,%esi 0.00 : 4d503d: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d5042: e8 d9 63 2a 00 callq 77b420 0.00 : 4d5047: ba 04 00 00 00 mov $0x4,%edx 0.00 : 4d504c: be 40 b8 7b 00 mov $0x7bb840,%esi 0.00 : 4d5051: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d5056: 31 c0 xor %eax,%eax 0.00 : 4d5058: e8 d3 61 2a 00 callq 77b230 0.00 : 4d505d: e8 6e 44 f9 ff callq 4694d0 : * Also check to see if fullPageWrites or forcePageWrites was just turned : * on; if we weren't already doing full-page writes then go back and : * recompute. (If it was just turned off, we could recompute the record : * without full pages, but we choose not to bother.) : */ : if ((Insert->fullPageWrites || Insert->forcePageWrites) && !doPageWrites) 0.00 : 4d5062: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 4d5069: 66 83 b9 a0 00 00 00 cmpw $0x0,0xa0(%rcx) 0.00 : 4d5070: 00 0.00 : 4d5071: 0f 85 55 01 00 00 jne 4d51cc : : /* : * Reserve space for the record in the WAL. This also sets the xl_prev : * pointer. : */ : if (isLogSwitch) 0.00 : 4d5077: 80 bd 57 fd ff ff 00 cmpb $0x0,-0x2a9(%rbp) 0.00 : 4d507e: 0f 84 86 05 00 00 je 4d560a : inserted = ReserveXLogSwitch(&StartPos, &EndPos, &rechdr->xl_prev); 0.00 : 4d5084: 4c 8b 3d 9d 42 6a 00 mov 0x6a429d(%rip),%r15 # b79328 : * reserving any space, and the function returns false. : */ : static bool : ReserveXLogSwitch(XLogRecPtr *StartPos, XLogRecPtr *EndPos, XLogRecPtr *PrevPtr) : { : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d508b: 48 8b 1d 06 41 6a 00 mov 0x6a4106(%rip),%rbx # b79198 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d5092: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d5097: f0 86 03 lock xchg %al,(%rbx) : * These calculations are a bit heavy-weight to be done while holding a : * spinlock, but since we're holding all the WAL insertion locks, there : * are no other inserters competing for it. GetXLogInsertRecPtr() does : * compete for it, but that's not called very frequently. : */ : SpinLockAcquire(&Insert->insertpos_lck); 0.00 : 4d509a: 84 c0 test %al,%al 0.00 : 4d509c: 0f 85 8a 08 00 00 jne 4d592c : : startbytepos = Insert->CurrBytePos; 0.00 : 4d50a2: 4c 8b 73 08 mov 0x8(%rbx),%r14 : : ptr = XLogBytePosToEndRecPtr(startbytepos); 0.00 : 4d50a6: 4c 89 f7 mov %r14,%rdi 0.00 : 4d50a9: e8 62 7d ff ff callq 4cce10 : if (ptr % XLOG_SEG_SIZE == 0) 0.00 : 4d50ae: a9 ff ff ff 00 test $0xffffff,%eax : */ : SpinLockAcquire(&Insert->insertpos_lck); : : startbytepos = Insert->CurrBytePos; : : ptr = XLogBytePosToEndRecPtr(startbytepos); 0.00 : 4d50b3: 48 89 85 80 fd ff ff mov %rax,-0x280(%rbp) : if (ptr % XLOG_SEG_SIZE == 0) 0.00 : 4d50ba: 0f 85 d9 08 00 00 jne 4d5999 : { : SpinLockRelease(&Insert->insertpos_lck); 0.00 : 4d50c0: c6 03 00 movb $0x0,(%rbx) 0.00 : 4d50c3: 48 89 85 58 fd ff ff mov %rax,-0x2a8(%rbp) 0.00 : 4d50ca: 31 db xor %ebx,%ebx : } : : /* : * Done! Let others know that we're finished. : */ : WALInsertLockRelease(); 0.00 : 4d50cc: e8 cf 8a ff ff callq 4cdba0 : : MarkCurrentTransactionIdLoggedIfAny(); 0.00 : 4d50d1: e8 ca ba fe ff callq 4c0ba0 : : END_CRIT_SECTION(); 0.00 : 4d50d6: 8b 05 c0 4f 6e 00 mov 0x6e4fc0(%rip),%eax # bba09c : : /* : * Update shared LogwrtRqst.Write, if we crossed page boundary. : */ : if (StartPos / XLOG_BLCKSZ != EndPos / XLOG_BLCKSZ) 0.00 : 4d50dc: 4c 8b a5 80 fd ff ff mov -0x280(%rbp),%r12 : */ : WALInsertLockRelease(); : : MarkCurrentTransactionIdLoggedIfAny(); : : END_CRIT_SECTION(); 0.00 : 4d50e3: 83 e8 01 sub $0x1,%eax : : /* : * Update shared LogwrtRqst.Write, if we crossed page boundary. : */ : if (StartPos / XLOG_BLCKSZ != EndPos / XLOG_BLCKSZ) 0.00 : 4d50e6: 49 c1 ec 0d shr $0xd,%r12 : */ : WALInsertLockRelease(); : : MarkCurrentTransactionIdLoggedIfAny(); : : END_CRIT_SECTION(); 0.00 : 4d50ea: 89 05 ac 4f 6e 00 mov %eax,0x6e4fac(%rip) # bba09c : : /* : * Update shared LogwrtRqst.Write, if we crossed page boundary. : */ : if (StartPos / XLOG_BLCKSZ != EndPos / XLOG_BLCKSZ) 0.00 : 4d50f0: 48 8b 85 58 fd ff ff mov -0x2a8(%rbp),%rax 0.00 : 4d50f7: 48 c1 e8 0d shr $0xd,%rax 0.00 : 4d50fb: 49 39 c4 cmp %rax,%r12 0.00 : 4d50fe: 0f 84 86 00 00 00 je 4d518a : { : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d5104: 48 8b 15 8d 40 6a 00 mov 0x6a408d(%rip),%rdx # b79198 0.00 : 4d510b: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d5110: 48 81 c2 08 06 00 00 add $0x608,%rdx 0.00 : 4d5117: f0 86 02 lock xchg %al,(%rdx) 0.04 : 4d511a: 84 c0 test %al,%al 0.00 : 4d511c: 74 1d je 4d513b 0.00 : 4d511e: 48 8b 3d 73 40 6a 00 mov 0x6a4073(%rip),%rdi # b79198 0.00 : 4d5125: ba cd 04 00 00 mov $0x4cd,%edx 0.00 : 4d512a: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d512f: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d5136: e8 05 af 1b 00 callq 690040 : /* advance global request to include new block(s) */ : if (XLogCtl->LogwrtRqst.Write < EndPos) 0.00 : 4d513b: 48 8b 15 56 40 6a 00 mov 0x6a4056(%rip),%rdx # b79198 0.00 : 4d5142: 48 8b 8d 58 fd ff ff mov -0x2a8(%rbp),%rcx 0.00 : 4d5149: 48 39 8a d8 00 00 00 cmp %rcx,0xd8(%rdx) 0.00 : 4d5150: 73 0e jae 4d5160 : XLogCtl->LogwrtRqst.Write = EndPos; 0.00 : 4d5152: 48 89 8a d8 00 00 00 mov %rcx,0xd8(%rdx) 0.00 : 4d5159: 48 8b 15 38 40 6a 00 mov 0x6a4038(%rip),%rdx # b79198 : /* update local result copy while I have the chance */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d5160: 48 8b 82 28 01 00 00 mov 0x128(%rdx),%rax 0.02 : 4d5167: 48 89 05 42 40 6a 00 mov %rax,0x6a4042(%rip) # b791b0 0.00 : 4d516e: 48 8b 82 30 01 00 00 mov 0x130(%rdx),%rax 0.00 : 4d5175: 48 89 05 3c 40 6a 00 mov %rax,0x6a403c(%rip) # b791b8 : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d517c: 48 8b 05 15 40 6a 00 mov 0x6a4015(%rip),%rax # b79198 0.00 : 4d5183: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : /* : * If this was an XLOG_SWITCH record, flush the record and the empty : * padding space that fills the rest of the segment, and perform : * end-of-segment actions (eg, notifying archiver). : */ : if (isLogSwitch) 0.00 : 4d518a: 80 bd 57 fd ff ff 00 cmpb $0x0,-0x2a9(%rbp) 0.00 : 4d5191: 0f 85 31 07 00 00 jne 4d58c8 : #endif : : /* : * Update our global variables : */ : ProcLastRecPtr = StartPos; 0.00 : 4d5197: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx : XactLastRecEnd = EndPos; 0.00 : 4d519e: 48 8b 8d 58 fd ff ff mov -0x2a8(%rbp),%rcx : #endif : : /* : * Update our global variables : */ : ProcLastRecPtr = StartPos; 0.00 : 4d51a5: 48 89 15 2c 40 6a 00 mov %rdx,0x6a402c(%rip) # b791d8 : XactLastRecEnd = EndPos; 0.00 : 4d51ac: 48 89 0d d5 3f 6a 00 mov %rcx,0x6a3fd5(%rip) # b79188 : : return EndPos; : } 0.00 : 4d51b3: 48 8b 85 58 fd ff ff mov -0x2a8(%rbp),%rax 0.00 : 4d51ba: 48 81 c4 a8 02 00 00 add $0x2a8,%rsp 0.00 : 4d51c1: 5b pop %rbx 0.00 : 4d51c2: 41 5c pop %r12 0.00 : 4d51c4: 41 5d pop %r13 0.00 : 4d51c6: 41 5e pop %r14 0.00 : 4d51c8: 41 5f pop %r15 0.00 : 4d51ca: c9 leaveq 0.00 : 4d51cb: c3 retq : * Also check to see if fullPageWrites or forcePageWrites was just turned : * on; if we weren't already doing full-page writes then go back and : * recompute. (If it was just turned off, we could recompute the record : * without full pages, but we choose not to bother.) : */ : if ((Insert->fullPageWrites || Insert->forcePageWrites) && !doPageWrites) 0.00 : 4d51cc: 80 bd 56 fd ff ff 00 cmpb $0x0,-0x2aa(%rbp) 0.00 : 4d51d3: 0f 85 9e fe ff ff jne 4d5077 : { : /* Oops, must redo it with full-page data. */ : WALInsertLockRelease(); 0.00 : 4d51d9: e8 c2 89 ff ff callq 4cdba0 : END_CRIT_SECTION(); 0.00 : 4d51de: 8b 05 b8 4e 6e 00 mov 0x6e4eb8(%rip),%eax # bba09c : rdt_lastnormal->next = NULL; 0.00 : 4d51e4: 31 d2 xor %edx,%edx : */ : if ((Insert->fullPageWrites || Insert->forcePageWrites) && !doPageWrites) : { : /* Oops, must redo it with full-page data. */ : WALInsertLockRelease(); : END_CRIT_SECTION(); 0.00 : 4d51e6: 83 e8 01 sub $0x1,%eax 0.00 : 4d51e9: 89 05 ad 4e 6e 00 mov %eax,0x6e4ead(%rip) # bba09c : rdt_lastnormal->next = NULL; 0.00 : 4d51ef: 48 8b 85 88 fd ff ff mov -0x278(%rbp),%rax 0.00 : 4d51f6: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 4d51fd: 00 : * chain if we have to loop back here. : */ : begin:; : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) : { : dtbuf[i] = InvalidBuffer; 0.00 : 4d51fe: 89 d0 mov %edx,%eax : * any special treatment in the critical section where the chunks are : * copied into the WAL buffers. Those entries have to be unlinked from the : * chain if we have to loop back here. : */ : begin:; : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) 0.13 : 4d5200: 83 c2 01 add $0x1,%edx : { : dtbuf[i] = InvalidBuffer; 0.00 : 4d5203: c7 44 85 b0 00 00 00 movl $0x0,-0x50(%rbp,%rax,4) 0.00 : 4d520a: 00 : dtbuf_bkp[i] = false; 0.02 : 4d520b: c6 44 05 c0 00 movb $0x0,-0x40(%rbp,%rax,1) 0.00 : 4d5210: e9 ab fd ff ff jmpq 4d4fc0 0.00 : 4d5215: 0f 1f 00 nopl (%rax) : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) : { : if (rdt->buffer == dtbuf[i]) : { : /* Buffer already referenced by earlier chain item */ : if (dtbuf_bkp[i]) 0.00 : 4d5218: 89 d8 mov %ebx,%eax 0.00 : 4d521a: 80 7c 05 c0 00 cmpb $0x0,-0x40(%rbp,%rax,1) 0.00 : 4d521f: 0f 84 8c 00 00 00 je 4d52b1 : dtbuf[i] = rdt->buffer; : if (doPageWrites && XLogCheckBuffer(rdt, true, : &(dtbuf_lsn[i]), &(dtbuf_xlg[i]))) : { : dtbuf_bkp[i] = true; : rdt->data = NULL; 0.00 : 4d5225: 49 c7 04 24 00 00 00 movq $0x0,(%r12) 0.00 : 4d522c: 00 : rdt->len = 0; 0.00 : 4d522d: 41 c7 44 24 08 00 00 movl $0x0,0x8(%r12) 0.00 : 4d5234: 00 00 : else if (rdt->data) : len += rdt->len; : break; : } : } : if (i >= XLR_MAX_BKP_BLOCKS) 0.00 : 4d5236: 83 fb 03 cmp $0x3,%ebx 0.00 : 4d5239: 0f 87 f4 fd ff ff ja 4d5033 : elog(PANIC, "can backup at most %d blocks per xlog record", : XLR_MAX_BKP_BLOCKS); : } : /* Break out of loop when rdt points to last chain item */ : if (rdt->next == NULL) 0.00 : 4d523f: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 4d5244: 48 85 c0 test %rax,%rax 0.00 : 4d5247: 0f 85 b6 fd ff ff jne 4d5003 : * error checking in ReadRecord. This means that all callers of : * XLogInsert must supply at least some not-in-a-buffer data. However, we : * make an exception for XLOG SWITCH records because we don't want them to : * ever cross a segment boundary. : */ : if (len == 0 && !isLogSwitch) 0.00 : 4d524d: 45 85 ed test %r13d,%r13d : elog(PANIC, "can backup at most %d blocks per xlog record", : XLR_MAX_BKP_BLOCKS); : } : /* Break out of loop when rdt points to last chain item */ : if (rdt->next == NULL) : break; 0.00 : 4d5250: 4c 89 a5 88 fd ff ff mov %r12,-0x278(%rbp) : * error checking in ReadRecord. This means that all callers of : * XLogInsert must supply at least some not-in-a-buffer data. However, we : * make an exception for XLOG SWITCH records because we don't want them to : * ever cross a segment boundary. : */ : if (len == 0 && !isLogSwitch) 0.00 : 4d5257: 0f 85 96 00 00 00 jne 4d52f3 0.00 : 4d525d: 80 bd 57 fd ff ff 00 cmpb $0x0,-0x2a9(%rbp) 0.00 : 4d5264: 0f 85 89 00 00 00 jne 4d52f3 : elog(PANIC, "invalid xlog record length %u", len); 0.00 : 4d526a: ba 4f d6 7b 00 mov $0x7bd64f,%edx 0.00 : 4d526f: be de 03 00 00 mov $0x3de,%esi 0.00 : 4d5274: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d5279: e8 a2 61 2a 00 callq 77b420 0.00 : 4d527e: 31 d2 xor %edx,%edx 0.00 : 4d5280: be 1f 98 7b 00 mov $0x7b981f,%esi 0.00 : 4d5285: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d528a: 31 c0 xor %eax,%eax 0.00 : 4d528c: e8 9f 5f 2a 00 callq 77b230 0.00 : 4d5291: e8 3a 42 f9 ff callq 4694d0 0.00 : 4d5296: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d529d: 00 00 00 : break; : } : if (dtbuf[i] == InvalidBuffer) : { : /* OK, put it in this slot */ : dtbuf[i] = rdt->buffer; 0.00 : 4d52a0: 41 89 de mov %ebx,%r14d 0.00 : 4d52a3: 42 89 4c b5 b0 mov %ecx,-0x50(%rbp,%r14,4) : if (doPageWrites && XLogCheckBuffer(rdt, true, 0.00 : 4d52a8: 80 bd 56 fd ff ff 00 cmpb $0x0,-0x2aa(%rbp) 0.00 : 4d52af: 75 15 jne 4d52c6 : { : dtbuf_bkp[i] = true; : rdt->data = NULL; : rdt->len = 0; : } : else if (rdt->data) 0.00 : 4d52b1: 49 83 3c 24 00 cmpq $0x0,(%r12) 0.00 : 4d52b6: 0f 84 7a ff ff ff je 4d5236 : len += rdt->len; 0.00 : 4d52bc: 45 03 6c 24 08 add 0x8(%r12),%r13d 0.00 : 4d52c1: e9 70 ff ff ff jmpq 4d5236 : } : if (dtbuf[i] == InvalidBuffer) : { : /* OK, put it in this slot */ : dtbuf[i] = rdt->buffer; : if (doPageWrites && XLogCheckBuffer(rdt, true, 0.00 : 4d52c6: 4b 8d 0c 76 lea (%r14,%r14,2),%rcx 0.00 : 4d52ca: 4a 8d 54 f5 90 lea -0x70(%rbp,%r14,8),%rdx 0.00 : 4d52cf: be 01 00 00 00 mov $0x1,%esi 0.00 : 4d52d4: 4c 89 e7 mov %r12,%rdi 0.00 : 4d52d7: 48 8d 8c cd 10 ff ff lea -0xf0(%rbp,%rcx,8),%rcx 0.00 : 4d52de: ff 0.00 : 4d52df: e8 3c 96 ff ff callq 4ce920 0.00 : 4d52e4: 84 c0 test %al,%al 0.00 : 4d52e6: 74 c9 je 4d52b1 : &(dtbuf_lsn[i]), &(dtbuf_xlg[i]))) : { : dtbuf_bkp[i] = true; 0.00 : 4d52e8: 42 c6 44 35 c0 01 movb $0x1,-0x40(%rbp,%r14,1) 0.00 : 4d52ee: e9 32 ff ff ff jmpq 4d5225 : * XLogInsert must supply at least some not-in-a-buffer data. However, we : * make an exception for XLOG SWITCH records because we don't want them to : * ever cross a segment boundary. : */ : if (len == 0 && !isLogSwitch) : elog(PANIC, "invalid xlog record length %u", len); 0.00 : 4d52f3: 44 0f b6 bd 46 fd ff movzbl -0x2ba(%rbp),%r15d 0.00 : 4d52fa: ff 0.02 : 4d52fb: 4c 8d 85 10 fe ff ff lea -0x1f0(%rbp),%r8 0.02 : 4d5302: 4c 8d 95 90 fd ff ff lea -0x270(%rbp),%r10 0.00 : 4d5309: 48 8d bd 10 ff ff ff lea -0xf0(%rbp),%rdi 0.00 : 4d5310: 4c 8d 9d 90 fe ff ff lea -0x170(%rbp),%r11 0.00 : 4d5317: 45 89 ee mov %r13d,%r14d 0.00 : 4d531a: 45 31 c9 xor %r9d,%r9d : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) : { : BkpBlock *bkpb; : char *page; : : if (!dtbuf_bkp[i]) 0.00 : 4d531d: 42 80 7c 0d c0 00 cmpb $0x0,-0x40(%rbp,%r9,1) 0.06 : 4d5323: 74 6b je 4d5390 : continue; : : info |= XLR_BKP_BLOCK(i); 0.00 : 4d5325: b8 08 00 00 00 mov $0x8,%eax 0.00 : 4d532a: 44 89 c9 mov %r9d,%ecx 0.00 : 4d532d: d3 f8 sar %cl,%eax 0.00 : 4d532f: 41 09 c7 or %eax,%r15d : : bkpb = &(dtbuf_xlg[i]); : page = (char *) BufferGetBlock(dtbuf[i]); 0.00 : 4d5332: 42 8b 44 8d b0 mov -0x50(%rbp,%r9,4),%eax 0.00 : 4d5337: 85 c0 test %eax,%eax 0.00 : 4d5339: 0f 88 88 02 00 00 js 4d55c7 0.00 : 4d533f: 83 e8 01 sub $0x1,%eax 0.00 : 4d5342: 48 63 f0 movslq %eax,%rsi 0.00 : 4d5345: 48 c1 e6 0d shl $0xd,%rsi 0.00 : 4d5349: 48 03 35 a8 a7 6e 00 add 0x6ea7a8(%rip),%rsi # bbfaf8 : : rdt->next = &(dtbuf_rdt1[i]); 0.00 : 4d5350: 4d 89 5c 24 18 mov %r11,0x18(%r12) : rdt = rdt->next; : : rdt->data = (char *) bkpb; 0.00 : 4d5355: 49 89 3b mov %rdi,(%r11) : rdt->len = sizeof(BkpBlock); : write_len += sizeof(BkpBlock); 0.00 : 4d5358: 41 8d 5e 18 lea 0x18(%r14),%ebx : : rdt->next = &(dtbuf_rdt1[i]); : rdt = rdt->next; : : rdt->data = (char *) bkpb; : rdt->len = sizeof(BkpBlock); 0.00 : 4d535c: 41 c7 43 08 18 00 00 movl $0x18,0x8(%r11) 0.00 : 4d5363: 00 : write_len += sizeof(BkpBlock); : : rdt->next = &(dtbuf_rdt2[i]); 0.00 : 4d5364: 4d 89 43 18 mov %r8,0x18(%r11) : rdt->next = &(dtbuf_rdt1[i]); : rdt = rdt->next; : : rdt->data = (char *) bkpb; : rdt->len = sizeof(BkpBlock); : write_len += sizeof(BkpBlock); 0.00 : 4d5368: 4d 89 c4 mov %r8,%r12 : : rdt->next = &(dtbuf_rdt2[i]); : rdt = rdt->next; : : if (bkpb->hole_length == 0) 0.00 : 4d536b: 66 83 7f 16 00 cmpw $0x0,0x16(%rdi) 0.00 : 4d5370: 0f 85 00 02 00 00 jne 4d5576 : { : rdt->data = page; 0.00 : 4d5376: 49 89 30 mov %rsi,(%r8) : rdt->len = BLCKSZ; 0.00 : 4d5379: 41 c7 40 08 00 20 00 movl $0x2000,0x8(%r8) 0.00 : 4d5380: 00 : write_len += BLCKSZ; 0.00 : 4d5381: 41 81 c6 18 20 00 00 add $0x2018,%r14d : rdt->next = NULL; 0.00 : 4d5388: 49 c7 40 18 00 00 00 movq $0x0,0x18(%r8) 0.00 : 4d538f: 00 : rdt = rdt->next; : : rdt->data = page + (bkpb->hole_offset + bkpb->hole_length); : rdt->len = BLCKSZ - (bkpb->hole_offset + bkpb->hole_length); : write_len += rdt->len; : rdt->next = NULL; 0.00 : 4d5390: 49 83 c1 01 add $0x1,%r9 0.04 : 4d5394: 49 83 c0 20 add $0x20,%r8 0.00 : 4d5398: 49 83 c2 20 add $0x20,%r10 0.00 : 4d539c: 48 83 c7 18 add $0x18,%rdi 0.04 : 4d53a0: 49 83 c3 20 add $0x20,%r11 : * up. The XLR_BKP_BLOCK(N) bit corresponds to the N'th distinct buffer : * value (ignoring InvalidBuffer) appearing in the rdata chain. : */ : rdt_lastnormal = rdt; : write_len = len; : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) 0.00 : 4d53a4: 49 83 f9 04 cmp $0x4,%r9 0.00 : 4d53a8: 0f 85 6f ff ff ff jne 4d531d : * don't know the prev-link yet. Thus, the CRC will represent the CRC of : * the whole record in the order: rdata, then backup blocks, then record : * header. : */ : INIT_CRC32(rdata_crc); : for (rdt = rdata; rdt != NULL; rdt = rdt->next) 0.00 : 4d53ae: 48 8b bd 38 fd ff ff mov -0x2c8(%rbp),%rdi 0.00 : 4d53b5: 41 bc ff ff ff ff mov $0xffffffff,%r12d 0.00 : 4d53bb: 48 85 ff test %rdi,%rdi 0.00 : 4d53be: 74 43 je 4d5403 : COMP_CRC32(rdata_crc, rdt->data, rdt->len); 0.00 : 4d53c0: 8b 47 08 mov 0x8(%rdi),%eax 0.02 : 4d53c3: 48 8b 17 mov (%rdi),%rdx 0.00 : 4d53c6: 85 c0 test %eax,%eax 0.00 : 4d53c8: 74 30 je 4d53fa 0.00 : 4d53ca: 83 e8 01 sub $0x1,%eax 0.00 : 4d53cd: 48 89 d1 mov %rdx,%rcx 0.00 : 4d53d0: 48 8d 74 02 01 lea 0x1(%rdx,%rax,1),%rsi 0.00 : 4d53d5: 0f 1f 00 nopl (%rax) 0.00 : 4d53d8: 0f b6 11 movzbl (%rcx),%edx 0.00 : 4d53db: 44 89 e0 mov %r12d,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 9.44 : 4d53de: 48 83 c1 01 add $0x1,%rcx 0.00 : 4d53e2: c1 e8 18 shr $0x18,%eax 9.91 : 4d53e5: 41 c1 e4 08 shl $0x8,%r12d /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 2.31 : 4d53e9: 31 d0 xor %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1064 8.05 : 4d53eb: 48 98 cltq 8.22 : 4d53ed: 44 33 24 85 a0 09 90 xor 0x9009a0(,%rax,4),%r12d 0.00 : 4d53f4: 00 59.17 : 4d53f5: 48 39 f1 cmp %rsi,%rcx 0.00 : 4d53f8: 75 de jne 4d53d8 : * don't know the prev-link yet. Thus, the CRC will represent the CRC of : * the whole record in the order: rdata, then backup blocks, then record : * header. : */ : INIT_CRC32(rdata_crc); : for (rdt = rdata; rdt != NULL; rdt = rdt->next) 0.00 : 4d53fa: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 4d53fe: 48 85 ff test %rdi,%rdi 0.00 : 4d5401: 75 bd jne 4d53c0 : * the space for the record), and make that the first chunk in the chain. : * : * The CRC calculated for the header here doesn't include prev-link, : * because we don't know it yet. It will be added later. : */ : rechdr->xl_xid = GetCurrentTransactionIdIfAny(); 0.00 : 4d5403: 48 8b 1d 1e 3f 6a 00 mov 0x6a3f1e(%rip),%rbx # b79328 : rechdr->xl_tot_len = SizeOfXLogRecord + write_len; 0.02 : 4d540a: 41 83 c6 20 add $0x20,%r14d : * the space for the record), and make that the first chunk in the chain. : * : * The CRC calculated for the header here doesn't include prev-link, : * because we don't know it yet. It will be added later. : */ : rechdr->xl_xid = GetCurrentTransactionIdIfAny(); 0.00 : 4d540e: e8 7d b7 fe ff callq 4c0b90 0.00 : 4d5413: 89 43 04 mov %eax,0x4(%rbx) : rechdr->xl_tot_len = SizeOfXLogRecord + write_len; 0.00 : 4d5416: 48 8b 05 0b 3f 6a 00 mov 0x6a3f0b(%rip),%rax # b79328 0.00 : 4d541d: 44 89 b5 64 fd ff ff mov %r14d,-0x29c(%rbp) 0.04 : 4d5424: 44 89 30 mov %r14d,(%rax) : rechdr->xl_len = len; /* doesn't include backup blocks */ 0.02 : 4d5427: 48 8b 05 fa 3e 6a 00 mov 0x6a3efa(%rip),%rax # b79328 0.00 : 4d542e: 44 89 68 08 mov %r13d,0x8(%rax) : rechdr->xl_info = info; 0.00 : 4d5432: 48 8b 05 ef 3e 6a 00 mov 0x6a3eef(%rip),%rax # b79328 0.00 : 4d5439: 44 88 78 0c mov %r15b,0xc(%rax) : rechdr->xl_rmid = rmid; 0.00 : 4d543d: 0f b6 95 47 fd ff ff movzbl -0x2b9(%rbp),%edx 0.00 : 4d5444: 48 8b 05 dd 3e 6a 00 mov 0x6a3edd(%rip),%rax # b79328 0.00 : 4d544b: 88 50 0d mov %dl,0xd(%rax) : rechdr->xl_prev = InvalidXLogRecPtr; 0.00 : 4d544e: 48 8b 05 d3 3e 6a 00 mov 0x6a3ed3(%rip),%rax # b79328 0.00 : 4d5455: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 4d545c: 00 : COMP_CRC32(rdata_crc, ((char *) rechdr), offsetof(XLogRecord, xl_prev)); 0.00 : 4d545d: 48 8b 3d c4 3e 6a 00 mov 0x6a3ec4(%rip),%rdi # b79328 0.00 : 4d5464: 48 8d 77 10 lea 0x10(%rdi),%rsi 0.00 : 4d5468: 48 89 f9 mov %rdi,%rcx 0.00 : 4d546b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4d5470: 0f b6 11 movzbl (%rcx),%edx 0.02 : 4d5473: 44 89 e0 mov %r12d,%eax 0.00 : 4d5476: 48 83 c1 01 add $0x1,%rcx 0.00 : 4d547a: c1 e8 18 shr $0x18,%eax 0.04 : 4d547d: 41 c1 e4 08 shl $0x8,%r12d 0.00 : 4d5481: 31 d0 xor %edx,%eax 0.04 : 4d5483: 48 98 cltq 0.04 : 4d5485: 44 33 24 85 a0 09 90 xor 0x9009a0(,%rax,4),%r12d 0.00 : 4d548c: 00 0.26 : 4d548d: 48 39 f1 cmp %rsi,%rcx 0.00 : 4d5490: 75 de jne 4d5470 : * initialize it, but the WAL writer tries to do that ahead of insertions : * to avoid that from happening in the critical path. : * : *---------- : */ : START_CRIT_SECTION(); 0.00 : 4d5492: 8b 05 04 4c 6e 00 mov 0x6e4c04(%rip),%eax # bba09c : rechdr->xl_info = info; : rechdr->xl_rmid = rmid; : rechdr->xl_prev = InvalidXLogRecPtr; : COMP_CRC32(rdata_crc, ((char *) rechdr), offsetof(XLogRecord, xl_prev)); : : hdr_rdt.next = rdata; 0.00 : 4d5498: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx : hdr_rdt.data = (char *) rechdr; 0.00 : 4d549f: 48 89 bd 70 ff ff ff mov %rdi,-0x90(%rbp) : hdr_rdt.len = SizeOfXLogRecord; 0.00 : 4d54a6: c7 85 78 ff ff ff 20 movl $0x20,-0x88(%rbp) 0.00 : 4d54ad: 00 00 00 : * initialize it, but the WAL writer tries to do that ahead of insertions : * to avoid that from happening in the critical path. : * : *---------- : */ : START_CRIT_SECTION(); 0.00 : 4d54b0: 83 c0 01 add $0x1,%eax : if (isLogSwitch) 0.00 : 4d54b3: 80 bd 57 fd ff ff 00 cmpb $0x0,-0x2a9(%rbp) : rechdr->xl_info = info; : rechdr->xl_rmid = rmid; : rechdr->xl_prev = InvalidXLogRecPtr; : COMP_CRC32(rdata_crc, ((char *) rechdr), offsetof(XLogRecord, xl_prev)); : : hdr_rdt.next = rdata; 0.00 : 4d54ba: 48 89 4d 88 mov %rcx,-0x78(%rbp) : * initialize it, but the WAL writer tries to do that ahead of insertions : * to avoid that from happening in the critical path. : * : *---------- : */ : START_CRIT_SECTION(); 0.00 : 4d54be: 89 05 d8 4b 6e 00 mov %eax,0x6e4bd8(%rip) # bba09c : if (isLogSwitch) 0.00 : 4d54c4: 0f 85 12 01 00 00 jne 4d55dc : * (semi-)randomly. This allows the locks to be used evenly if you have a : * lot of very short connections. : */ : static int lockToTry = -1; : : if (lockToTry == -1) 0.00 : 4d54ca: 83 3d 9b 29 69 00 ff cmpl $0xffffffff,0x69299b(%rip) # b67e6c 0.00 : 4d54d1: 0f 84 0f 01 00 00 je 4d55e6 : lockToTry = MyProc->pgprocno % NUM_XLOGINSERT_LOCKS; : MyLockNo = lockToTry; 0.00 : 4d54d7: 48 63 3d 8e 29 69 00 movslq 0x69298e(%rip),%rdi # b67e6c : : /* : * The insertingAt value is initially set to 0, as we don't know our : * insert location yet. : */ : immed = LWLockAcquireWithVar(&WALInsertLocks[MyLockNo].l.lock, 0.00 : 4d54de: 31 d2 xor %edx,%edx : */ : static int lockToTry = -1; : : if (lockToTry == -1) : lockToTry = MyProc->pgprocno % NUM_XLOGINSERT_LOCKS; : MyLockNo = lockToTry; 0.00 : 4d54e0: 89 3d e6 3c 6a 00 mov %edi,0x6a3ce6(%rip) # b791cc : : /* : * The insertingAt value is initially set to 0, as we don't know our : * insert location yet. : */ : immed = LWLockAcquireWithVar(&WALInsertLocks[MyLockNo].l.lock, 0.00 : 4d54e6: 48 c1 e7 07 shl $0x7,%rdi 0.00 : 4d54ea: 48 03 3d cf 3c 6a 00 add 0x6a3ccf(%rip),%rdi # b791c0 0.00 : 4d54f1: 48 8d 77 20 lea 0x20(%rdi),%rsi 0.00 : 4d54f5: e8 76 a9 1b 00 callq 68fe70 : &WALInsertLocks[MyLockNo].l.insertingAt, : 0); : if (!immed) 0.00 : 4d54fa: 84 c0 test %al,%al 0.00 : 4d54fc: 75 1e jne 4d551c : * inserters, this causes all the inserters to eventually migrate to a : * lock that no-one else is using. On a system with more inserters : * than locks, it still helps to distribute the inserters evenly : * across the locks. : */ : lockToTry = (lockToTry + 1) % NUM_XLOGINSERT_LOCKS; 0.00 : 4d54fe: 8b 05 68 29 69 00 mov 0x692968(%rip),%eax # b67e6c 0.00 : 4d5504: 83 c0 01 add $0x1,%eax 0.00 : 4d5507: 89 c2 mov %eax,%edx 0.00 : 4d5509: c1 fa 1f sar $0x1f,%edx 0.00 : 4d550c: c1 ea 1d shr $0x1d,%edx 0.00 : 4d550f: 01 d0 add %edx,%eax 0.00 : 4d5511: 83 e0 07 and $0x7,%eax 0.00 : 4d5514: 29 d0 sub %edx,%eax 0.00 : 4d5516: 89 05 50 29 69 00 mov %eax,0x692950(%rip) # b67e6c : * : * If we aren't doing full-page writes then RedoRecPtr doesn't actually : * affect the contents of the XLOG record, so we'll update our local copy : * but not force a recomputation. : */ : if (RedoRecPtr != Insert->RedoRecPtr) 0.02 : 4d551c: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.02 : 4d5523: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.02 : 4d552a: 48 3b 15 a7 3e 6a 00 cmp 0x6a3ea7(%rip),%rdx # b793d8 0.00 : 4d5531: 0f 84 2b fb ff ff je 4d5062 : { : Assert(RedoRecPtr < Insert->RedoRecPtr); : RedoRecPtr = Insert->RedoRecPtr; : : if (doPageWrites) 0.00 : 4d5537: 80 bd 56 fd ff ff 00 cmpb $0x0,-0x2aa(%rbp) : * but not force a recomputation. : */ : if (RedoRecPtr != Insert->RedoRecPtr) : { : Assert(RedoRecPtr < Insert->RedoRecPtr); : RedoRecPtr = Insert->RedoRecPtr; 0.00 : 4d553e: 48 89 15 93 3e 6a 00 mov %rdx,0x6a3e93(%rip) # b793d8 : : if (doPageWrites) 0.00 : 4d5545: 0f 84 17 fb ff ff je 4d5062 0.00 : 4d554b: 31 c0 xor %eax,%eax : { : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) : { : if (dtbuf[i] == InvalidBuffer) 0.00 : 4d554d: 8b 4c 85 b0 mov -0x50(%rbp,%rax,4),%ecx 0.00 : 4d5551: 85 c9 test %ecx,%ecx 0.00 : 4d5553: 74 12 je 4d5567 : continue; : if (dtbuf_bkp[i] == false && 0.00 : 4d5555: 80 7c 05 c0 00 cmpb $0x0,-0x40(%rbp,%rax,1) 0.00 : 4d555a: 75 0b jne 4d5567 0.00 : 4d555c: 48 3b 54 c5 90 cmp -0x70(%rbp,%rax,8),%rdx 0.00 : 4d5561: 0f 83 ab 02 00 00 jae 4d5812 : */ : WALInsertLockRelease(); : END_CRIT_SECTION(); : rdt_lastnormal->next = NULL; : info = info_orig; : goto begin; 0.00 : 4d5567: 48 83 c0 01 add $0x1,%rax : Assert(RedoRecPtr < Insert->RedoRecPtr); : RedoRecPtr = Insert->RedoRecPtr; : : if (doPageWrites) : { : for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) 0.00 : 4d556b: 48 83 f8 04 cmp $0x4,%rax 0.00 : 4d556f: 75 dc jne 4d554d 0.00 : 4d5571: e9 01 fb ff ff jmpq 4d5077 : rdt->next = NULL; : } : else : { : /* must skip the hole */ : rdt->data = page; 0.00 : 4d5576: 49 89 30 mov %rsi,(%r8) : rdt->len = bkpb->hole_offset; 0.00 : 4d5579: 0f b7 47 14 movzwl 0x14(%rdi),%eax : write_len += bkpb->hole_offset; 0.00 : 4d557d: 4d 89 d4 mov %r10,%r12 : } : else : { : /* must skip the hole */ : rdt->data = page; : rdt->len = bkpb->hole_offset; 0.00 : 4d5580: 41 89 40 08 mov %eax,0x8(%r8) : write_len += bkpb->hole_offset; 0.00 : 4d5584: 0f b7 4f 14 movzwl 0x14(%rdi),%ecx : : rdt->next = &(dtbuf_rdt3[i]); 0.00 : 4d5588: 4d 89 50 18 mov %r10,0x18(%r8) : rdt = rdt->next; : : rdt->data = page + (bkpb->hole_offset + bkpb->hole_length); 0.00 : 4d558c: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 4d5590: 0f b7 47 16 movzwl 0x16(%rdi),%eax 0.00 : 4d5594: 01 d0 add %edx,%eax 0.00 : 4d5596: 48 98 cltq 0.00 : 4d5598: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 4d559c: 49 89 02 mov %rax,(%r10) : rdt->len = BLCKSZ - (bkpb->hole_offset + bkpb->hole_length); 0.00 : 4d559f: 0f b7 47 16 movzwl 0x16(%rdi),%eax 0.00 : 4d55a3: 0f b7 57 14 movzwl 0x14(%rdi),%edx : write_len += rdt->len; : rdt->next = NULL; 0.00 : 4d55a7: 49 c7 42 18 00 00 00 movq $0x0,0x18(%r10) 0.00 : 4d55ae: 00 : : rdt->next = &(dtbuf_rdt3[i]); : rdt = rdt->next; : : rdt->data = page + (bkpb->hole_offset + bkpb->hole_length); : rdt->len = BLCKSZ - (bkpb->hole_offset + bkpb->hole_length); 0.00 : 4d55af: f7 d8 neg %eax 0.00 : 4d55b1: 29 d0 sub %edx,%eax 0.00 : 4d55b3: 05 00 20 00 00 add $0x2000,%eax 0.00 : 4d55b8: 41 89 42 08 mov %eax,0x8(%r10) : else : { : /* must skip the hole */ : rdt->data = page; : rdt->len = bkpb->hole_offset; : write_len += bkpb->hole_offset; 0.00 : 4d55bc: 01 c8 add %ecx,%eax : rdt->next = &(dtbuf_rdt3[i]); : rdt = rdt->next; : : rdt->data = page + (bkpb->hole_offset + bkpb->hole_length); : rdt->len = BLCKSZ - (bkpb->hole_offset + bkpb->hole_length); : write_len += rdt->len; 0.00 : 4d55be: 44 8d 34 18 lea (%rax,%rbx,1),%r14d 0.00 : 4d55c2: e9 c9 fd ff ff jmpq 4d5390 : continue; : : info |= XLR_BKP_BLOCK(i); : : bkpb = &(dtbuf_xlg[i]); : page = (char *) BufferGetBlock(dtbuf[i]); 0.00 : 4d55c7: f7 d0 not %eax 0.00 : 4d55c9: 48 63 d0 movslq %eax,%rdx 0.00 : 4d55cc: 48 8b 05 45 7b 6a 00 mov 0x6a7b45(%rip),%rax # b7d118 0.00 : 4d55d3: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi 0.00 : 4d55d7: e9 74 fd ff ff jmpq 4d5350 : * : *---------- : */ : START_CRIT_SECTION(); : if (isLogSwitch) : WALInsertLockAcquireExclusive(); 0.00 : 4d55dc: e8 7f 86 ff ff callq 4cdc60 0.00 : 4d55e1: e9 36 ff ff ff jmpq 4d551c : * lot of very short connections. : */ : static int lockToTry = -1; : : if (lockToTry == -1) : lockToTry = MyProc->pgprocno % NUM_XLOGINSERT_LOCKS; 0.00 : 4d55e6: 48 8b 05 5b 83 6a 00 mov 0x6a835b(%rip),%rax # b7d948 0.00 : 4d55ed: 8b 40 30 mov 0x30(%rax),%eax 0.00 : 4d55f0: 89 c2 mov %eax,%edx 0.00 : 4d55f2: c1 fa 1f sar $0x1f,%edx 0.00 : 4d55f5: c1 ea 1d shr $0x1d,%edx 0.00 : 4d55f8: 01 d0 add %edx,%eax 0.00 : 4d55fa: 83 e0 07 and $0x7,%eax 0.00 : 4d55fd: 29 d0 sub %edx,%eax 0.00 : 4d55ff: 89 05 67 28 69 00 mov %eax,0x692867(%rip) # b67e6c 0.00 : 4d5605: e9 cd fe ff ff jmpq 4d54d7 : */ : if (isLogSwitch) : inserted = ReserveXLogSwitch(&StartPos, &EndPos, &rechdr->xl_prev); : else : { : ReserveXLogInsertLocation(write_len, &StartPos, &EndPos, 0.04 : 4d560a: 4c 8b 3d 17 3d 6a 00 mov 0x6a3d17(%rip),%r15 # b79328 : */ : static void : ReserveXLogInsertLocation(int size, XLogRecPtr *StartPos, XLogRecPtr *EndPos, : XLogRecPtr *PrevPtr) : { : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.04 : 4d5611: 4c 8b 2d 80 3b 6a 00 mov 0x6a3b80(%rip),%r13 # b79198 0.00 : 4d5618: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d561d: f0 41 86 45 00 lock xchg %al,0x0(%r13) : * page headers. The mapping between "usable" byte positions and physical : * positions (XLogRecPtrs) can be done outside the locked region, and : * because the usable byte position doesn't include any headers, reserving : * X bytes from WAL is almost as simple as "CurrBytePos += X". : */ : SpinLockAcquire(&Insert->insertpos_lck); 0.28 : 4d5622: 84 c0 test %al,%al 0.00 : 4d5624: 74 12 je 4d5638 0.00 : 4d5626: ba 46 05 00 00 mov $0x546,%edx 0.00 : 4d562b: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d5630: 4c 89 ef mov %r13,%rdi 0.00 : 4d5633: e8 08 aa 1b 00 callq 690040 : : startbytepos = Insert->CurrBytePos; : endbytepos = startbytepos + size; 0.00 : 4d5638: 8b 85 64 fd ff ff mov -0x29c(%rbp),%eax : * because the usable byte position doesn't include any headers, reserving : * X bytes from WAL is almost as simple as "CurrBytePos += X". : */ : SpinLockAcquire(&Insert->insertpos_lck); : : startbytepos = Insert->CurrBytePos; 0.00 : 4d563e: 49 8b 7d 08 mov 0x8(%r13),%rdi : endbytepos = startbytepos + size; : prevbytepos = Insert->PrevBytePos; 0.00 : 4d5642: 49 8b 5d 10 mov 0x10(%r13),%rbx : * X bytes from WAL is almost as simple as "CurrBytePos += X". : */ : SpinLockAcquire(&Insert->insertpos_lck); : : startbytepos = Insert->CurrBytePos; : endbytepos = startbytepos + size; 0.00 : 4d5646: 83 c0 07 add $0x7,%eax : prevbytepos = Insert->PrevBytePos; : Insert->CurrBytePos = endbytepos; : Insert->PrevBytePos = startbytepos; 0.00 : 4d5649: 49 89 7d 10 mov %rdi,0x10(%r13) : * X bytes from WAL is almost as simple as "CurrBytePos += X". : */ : SpinLockAcquire(&Insert->insertpos_lck); : : startbytepos = Insert->CurrBytePos; : endbytepos = startbytepos + size; 0.00 : 4d564d: 83 e0 f8 and $0xfffffff8,%eax 0.00 : 4d5650: 48 98 cltq 0.00 : 4d5652: 4c 8d 34 38 lea (%rax,%rdi,1),%r14 : prevbytepos = Insert->PrevBytePos; : Insert->CurrBytePos = endbytepos; 0.00 : 4d5656: 4d 89 75 08 mov %r14,0x8(%r13) : Insert->PrevBytePos = startbytepos; : : SpinLockRelease(&Insert->insertpos_lck); 0.00 : 4d565a: 41 c6 45 00 00 movb $0x0,0x0(%r13) : : *StartPos = XLogBytePosToRecPtr(startbytepos); 0.00 : 4d565f: e8 1c 77 ff ff callq 4ccd80 : *EndPos = XLogBytePosToEndRecPtr(endbytepos); 0.00 : 4d5664: 4c 89 f7 mov %r14,%rdi : Insert->CurrBytePos = endbytepos; : Insert->PrevBytePos = startbytepos; : : SpinLockRelease(&Insert->insertpos_lck); : : *StartPos = XLogBytePosToRecPtr(startbytepos); 0.00 : 4d5667: 48 89 85 80 fd ff ff mov %rax,-0x280(%rbp) : *EndPos = XLogBytePosToEndRecPtr(endbytepos); 0.00 : 4d566e: e8 9d 77 ff ff callq 4cce10 : *PrevPtr = XLogBytePosToRecPtr(prevbytepos); 0.00 : 4d5673: 48 89 df mov %rbx,%rdi : Insert->PrevBytePos = startbytepos; : : SpinLockRelease(&Insert->insertpos_lck); : : *StartPos = XLogBytePosToRecPtr(startbytepos); : *EndPos = XLogBytePosToEndRecPtr(endbytepos); 0.00 : 4d5676: 48 89 85 58 fd ff ff mov %rax,-0x2a8(%rbp) : *PrevPtr = XLogBytePosToRecPtr(prevbytepos); 0.00 : 4d567d: e8 fe 76 ff ff callq 4ccd80 0.00 : 4d5682: 49 89 47 10 mov %rax,0x10(%r15) : { : /* : * Now that xl_prev has been filled in, finish CRC calculation of the : * record header. : */ : COMP_CRC32(rdata_crc, ((char *) &rechdr->xl_prev), sizeof(XLogRecPtr)); 0.00 : 4d5686: 48 8b 35 9b 3c 6a 00 mov 0x6a3c9b(%rip),%rsi # b79328 0.00 : 4d568d: 48 8d 4e 10 lea 0x10(%rsi),%rcx 0.00 : 4d5691: 48 8d 7e 18 lea 0x18(%rsi),%rdi 0.00 : 4d5695: 0f b6 11 movzbl (%rcx),%edx 0.00 : 4d5698: 44 89 e0 mov %r12d,%eax 0.02 : 4d569b: 48 83 c1 01 add $0x1,%rcx 0.00 : 4d569f: c1 e8 18 shr $0x18,%eax 0.04 : 4d56a2: 41 c1 e4 08 shl $0x8,%r12d 0.02 : 4d56a6: 31 d0 xor %edx,%eax 0.02 : 4d56a8: 48 98 cltq 0.04 : 4d56aa: 44 33 24 85 a0 09 90 xor 0x9009a0(,%rax,4),%r12d 0.00 : 4d56b1: 00 0.21 : 4d56b2: 48 39 f9 cmp %rdi,%rcx 0.00 : 4d56b5: 75 de jne 4d5695 : FIN_CRC32(rdata_crc); : rechdr->xl_crc = rdata_crc; 0.00 : 4d56b7: 41 f7 d4 not %r12d 0.00 : 4d56ba: 44 89 66 18 mov %r12d,0x18(%rsi) : /* : * Get a pointer to the right place in the right WAL buffer to start : * inserting to. : */ : CurrPos = StartPos; : currpos = GetXLogBuffer(CurrPos); 0.02 : 4d56be: 48 8b bd 80 fd ff ff mov -0x280(%rbp),%rdi : freespace = INSERT_FREESPACE(CurrPos); 0.00 : 4d56c5: 45 31 e4 xor %r12d,%r12d : /* : * Get a pointer to the right place in the right WAL buffer to start : * inserting to. : */ : CurrPos = StartPos; : currpos = GetXLogBuffer(CurrPos); 0.00 : 4d56c8: e8 13 f7 ff ff callq 4d4de0 0.00 : 4d56cd: 49 89 c0 mov %rax,%r8 : freespace = INSERT_FREESPACE(CurrPos); 0.00 : 4d56d0: 48 8b 85 80 fd ff ff mov -0x280(%rbp),%rax 0.00 : 4d56d7: 25 ff 1f 00 00 and $0x1fff,%eax 0.00 : 4d56dc: 74 09 je 4d56e7 0.00 : 4d56de: 41 bc 00 20 00 00 mov $0x2000,%r12d 0.00 : 4d56e4: 41 29 c4 sub %eax,%r12d 0.00 : 4d56e7: 48 8d 8d 70 ff ff ff lea -0x90(%rbp),%rcx 0.00 : 4d56ee: 4c 8b ad 80 fd ff ff mov -0x280(%rbp),%r13 0.00 : 4d56f5: c7 85 7c fd ff ff 00 movl $0x0,-0x284(%rbp) 0.00 : 4d56fc: 00 00 00 0.00 : 4d56ff: 48 89 8d 70 fd ff ff mov %rcx,-0x290(%rbp) : : /* Copy record data */ : written = 0; : while (rdata != NULL) : { : char *rdata_data = rdata->data; 0.00 : 4d5706: 48 8b 85 70 fd ff ff mov -0x290(%rbp),%rax : int rdata_len = rdata->len; 0.00 : 4d570d: 44 8b 70 08 mov 0x8(%rax),%r14d : : /* Copy record data */ : written = 0; : while (rdata != NULL) : { : char *rdata_data = rdata->data; 0.00 : 4d5711: 4c 8b 38 mov (%rax),%r15 : int rdata_len = rdata->len; : : while (rdata_len > freespace) 0.00 : 4d5714: 45 39 f4 cmp %r14d,%r12d 0.00 : 4d5717: 7d 7a jge 4d5793 0.00 : 4d5719: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* : * Write what fits on this page, and continue on the next page. : */ : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || freespace == 0); : memcpy(currpos, rdata_data, freespace); 0.00 : 4d5720: 49 63 dc movslq %r12d,%rbx 0.00 : 4d5723: 4c 89 c7 mov %r8,%rdi 0.00 : 4d5726: 4c 89 fe mov %r15,%rsi 0.02 : 4d5729: 48 89 da mov %rbx,%rdx : rdata_data += freespace; 0.00 : 4d572c: 49 01 df add %rbx,%r15 : rdata_len -= freespace; : written += freespace; : CurrPos += freespace; 0.00 : 4d572f: 4c 01 eb add %r13,%rbx : { : /* : * Write what fits on this page, and continue on the next page. : */ : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || freespace == 0); : memcpy(currpos, rdata_data, freespace); 0.00 : 4d5732: e8 b9 44 f9 ff callq 469bf0 : * It's safe to set the contrecord flag and xlp_rem_len without a : * lock on the page. All the other flags were already set when the : * page was initialized, in AdvanceXLInsertBuffer, and we're the : * only backend that needs to set the contrecord flag. : */ : currpos = GetXLogBuffer(CurrPos); 0.00 : 4d5737: 48 89 df mov %rbx,%rdi : */ : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || freespace == 0); : memcpy(currpos, rdata_data, freespace); : rdata_data += freespace; : rdata_len -= freespace; : written += freespace; 0.00 : 4d573a: 44 01 a5 7c fd ff ff add %r12d,-0x284(%rbp) : * Write what fits on this page, and continue on the next page. : */ : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || freespace == 0); : memcpy(currpos, rdata_data, freespace); : rdata_data += freespace; : rdata_len -= freespace; 0.00 : 4d5741: 45 29 e6 sub %r12d,%r14d : * It's safe to set the contrecord flag and xlp_rem_len without a : * lock on the page. All the other flags were already set when the : * page was initialized, in AdvanceXLInsertBuffer, and we're the : * only backend that needs to set the contrecord flag. : */ : currpos = GetXLogBuffer(CurrPos); 0.00 : 4d5744: e8 97 f6 ff ff callq 4d4de0 0.00 : 4d5749: 48 89 c2 mov %rax,%rdx : pagehdr = (XLogPageHeader) currpos; : pagehdr->xlp_rem_len = write_len - written; 0.00 : 4d574c: 8b 85 64 fd ff ff mov -0x29c(%rbp),%eax 0.00 : 4d5752: 2b 85 7c fd ff ff sub -0x284(%rbp),%eax : pagehdr->xlp_info |= XLP_FIRST_IS_CONTRECORD; 0.02 : 4d5758: 66 83 4a 02 01 orw $0x1,0x2(%rdx) : : /* skip over the page header */ : if (CurrPos % XLogSegSize == 0) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1504 0.71 : 4d575d: f7 c3 ff ff ff 00 test $0xffffff,%ebx : { : CurrPos += SizeOfXLogLongPHD; 0.00 : 4d5763: 4c 8d 6b 28 lea 0x28(%rbx),%r13 : currpos += SizeOfXLogLongPHD; 0.00 : 4d5767: 4c 8d 42 28 lea 0x28(%rdx),%r8 : * page was initialized, in AdvanceXLInsertBuffer, and we're the : * only backend that needs to set the contrecord flag. : */ : currpos = GetXLogBuffer(CurrPos); : pagehdr = (XLogPageHeader) currpos; : pagehdr->xlp_rem_len = write_len - written; 0.00 : 4d576b: 89 42 10 mov %eax,0x10(%rdx) : pagehdr->xlp_info |= XLP_FIRST_IS_CONTRECORD; : : /* skip over the page header */ : if (CurrPos % XLogSegSize == 0) 0.00 : 4d576e: 74 08 je 4d5778 : CurrPos += SizeOfXLogLongPHD; : currpos += SizeOfXLogLongPHD; : } : else : { : CurrPos += SizeOfXLogShortPHD; 0.00 : 4d5770: 4c 8d 6b 18 lea 0x18(%rbx),%r13 : currpos += SizeOfXLogShortPHD; 0.00 : 4d5774: 4c 8d 42 18 lea 0x18(%rdx),%r8 : } : freespace = INSERT_FREESPACE(CurrPos); 0.00 : 4d5778: 4c 89 e8 mov %r13,%rax 0.00 : 4d577b: 45 31 e4 xor %r12d,%r12d 0.00 : 4d577e: 25 ff 1f 00 00 and $0x1fff,%eax 0.00 : 4d5783: 74 09 je 4d578e 0.00 : 4d5785: 41 bc 00 20 00 00 mov $0x2000,%r12d 0.00 : 4d578b: 41 29 c4 sub %eax,%r12d : while (rdata != NULL) : { : char *rdata_data = rdata->data; : int rdata_len = rdata->len; : : while (rdata_len > freespace) 0.00 : 4d578e: 45 39 e6 cmp %r12d,%r14d 0.00 : 4d5791: 7f 8d jg 4d5720 : } : freespace = INSERT_FREESPACE(CurrPos); : } : : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || rdata_len == 0); : memcpy(currpos, rdata_data, rdata_len); 0.02 : 4d5793: 49 63 de movslq %r14d,%rbx 0.00 : 4d5796: 4c 89 c7 mov %r8,%rdi 0.00 : 4d5799: 4c 89 fe mov %r15,%rsi 0.00 : 4d579c: 48 89 da mov %rbx,%rdx 0.00 : 4d579f: 4c 89 85 30 fd ff ff mov %r8,-0x2d0(%rbp) : currpos += rdata_len; : CurrPos += rdata_len; 0.00 : 4d57a6: 49 01 dd add %rbx,%r13 : } : freespace = INSERT_FREESPACE(CurrPos); : } : : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || rdata_len == 0); : memcpy(currpos, rdata_data, rdata_len); 0.00 : 4d57a9: e8 42 44 f9 ff callq 469bf0 : currpos += rdata_len; : CurrPos += rdata_len; : freespace -= rdata_len; : written += rdata_len; : : rdata = rdata->next; 0.00 : 4d57ae: 48 8b 95 70 fd ff ff mov -0x290(%rbp),%rdx : : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || rdata_len == 0); : memcpy(currpos, rdata_data, rdata_len); : currpos += rdata_len; : CurrPos += rdata_len; : freespace -= rdata_len; 0.00 : 4d57b5: 45 29 f4 sub %r14d,%r12d : */ : Assert(freespace >= sizeof(uint32)); : : /* Copy record data */ : written = 0; : while (rdata != NULL) 0.00 : 4d57b8: 4c 8b 85 30 fd ff ff mov -0x2d0(%rbp),%r8 : currpos += rdata_len; : CurrPos += rdata_len; : freespace -= rdata_len; : written += rdata_len; : : rdata = rdata->next; 0.04 : 4d57bf: 48 8b 52 18 mov 0x18(%rdx),%rdx : */ : Assert(freespace >= sizeof(uint32)); : : /* Copy record data */ : written = 0; : while (rdata != NULL) 0.00 : 4d57c3: 48 85 d2 test %rdx,%rdx : currpos += rdata_len; : CurrPos += rdata_len; : freespace -= rdata_len; : written += rdata_len; : : rdata = rdata->next; 0.02 : 4d57c6: 48 89 95 70 fd ff ff mov %rdx,-0x290(%rbp) : */ : Assert(freespace >= sizeof(uint32)); : : /* Copy record data */ : written = 0; : while (rdata != NULL) 0.00 : 4d57cd: 74 6d je 4d583c : freespace = INSERT_FREESPACE(CurrPos); : } : : Assert(CurrPos % XLOG_BLCKSZ >= SizeOfXLogShortPHD || rdata_len == 0); : memcpy(currpos, rdata_data, rdata_len); : currpos += rdata_len; 0.00 : 4d57cf: 49 01 d8 add %rbx,%r8 : CurrPos += rdata_len; : freespace -= rdata_len; : written += rdata_len; 0.00 : 4d57d2: 44 01 b5 7c fd ff ff add %r14d,-0x284(%rbp) 0.00 : 4d57d9: e9 28 ff ff ff jmpq 4d5706 : : if (rechdr == NULL) : { : static char rechdrbuf[SizeOfXLogRecord + MAXIMUM_ALIGNOF]; : : rechdr = (XLogRecord *) MAXALIGN(&rechdrbuf); 0.00 : 4d57de: b8 07 93 b7 00 mov $0xb79307,%eax 0.00 : 4d57e3: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 4d57e7: 48 89 05 3a 3b 6a 00 mov %rax,0x6a3b3a(%rip) # b79328 : MemSet(rechdr, 0, SizeOfXLogRecord); 0.00 : 4d57ee: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 4d57f5: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 4d57fc: 00 0.00 : 4d57fd: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 4d5804: 00 0.00 : 4d5805: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 4d580c: 00 0.00 : 4d580d: e9 6a f7 ff ff jmpq 4d4f7c : { : /* : * Oops, this buffer now needs to be backed up, but we : * didn't think so above. Start over. : */ : WALInsertLockRelease(); 0.00 : 4d5812: e8 89 83 ff ff callq 4cdba0 : END_CRIT_SECTION(); 0.00 : 4d5817: 8b 05 7f 48 6e 00 mov 0x6e487f(%rip),%eax # bba09c : rdt_lastnormal->next = NULL; 0.00 : 4d581d: 48 8b 95 88 fd ff ff mov -0x278(%rbp),%rdx : /* : * Oops, this buffer now needs to be backed up, but we : * didn't think so above. Start over. : */ : WALInsertLockRelease(); : END_CRIT_SECTION(); 0.00 : 4d5824: 83 e8 01 sub $0x1,%eax 0.00 : 4d5827: 89 05 6f 48 6e 00 mov %eax,0x6e486f(%rip) # bba09c : rdt_lastnormal->next = NULL; 0.00 : 4d582d: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 4d5834: 00 0.00 : 4d5835: 31 d2 xor %edx,%edx : info = info_orig; : goto begin; 0.00 : 4d5837: e9 c2 f9 ff ff jmpq 4d51fe : rdata = rdata->next; : } : Assert(written == write_len); : : /* Align the end position, so that the next record starts aligned */ : CurrPos = MAXALIGN64(CurrPos); 0.02 : 4d583c: 49 8d 45 07 lea 0x7(%r13),%rax 0.00 : 4d5840: 49 89 c5 mov %rax,%r13 0.00 : 4d5843: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 : * we also have to consume all the remaining space in the WAL segment. We : * have already reserved it for us, but we still need to make sure it's : * allocated and zeroed in the WAL buffers so that when the caller (or : * someone else) does XLogWrite(), it can really write out all the zeros. : */ : if (isLogSwitch && CurrPos % XLOG_SEG_SIZE != 0) 0.00 : 4d5847: 80 bd 57 fd ff ff 00 cmpb $0x0,-0x2a9(%rbp) 0.00 : 4d584e: 74 38 je 4d5888 0.00 : 4d5850: a9 f8 ff ff 00 test $0xfffff8,%eax 0.00 : 4d5855: 74 31 je 4d5888 : * against ourselves if wal_buffers < XLOG_SEG_SIZE. : */ : Assert(EndPos % XLogSegSize == 0); : : /* Use up all the remaining space on the first page */ : CurrPos += freespace; 0.00 : 4d5857: 49 63 c4 movslq %r12d,%rax 0.00 : 4d585a: 49 01 c5 add %rax,%r13 : : while (CurrPos < EndPos) 0.00 : 4d585d: 4c 3b ad 58 fd ff ff cmp -0x2a8(%rbp),%r13 0.00 : 4d5864: 73 22 jae 4d5888 : { : /* initialize the next page (if not initialized already) */ : WALInsertLockUpdateInsertingAt(CurrPos); 0.00 : 4d5866: 4c 89 ef mov %r13,%rdi 0.00 : 4d5869: e8 22 f5 ff ff callq 4d4d90 : AdvanceXLInsertBuffer(CurrPos, false); 0.00 : 4d586e: 31 f6 xor %esi,%esi 0.00 : 4d5870: 4c 89 ef mov %r13,%rdi : CurrPos += XLOG_BLCKSZ; 0.00 : 4d5873: 49 81 c5 00 20 00 00 add $0x2000,%r13 : : while (CurrPos < EndPos) : { : /* initialize the next page (if not initialized already) */ : WALInsertLockUpdateInsertingAt(CurrPos); : AdvanceXLInsertBuffer(CurrPos, false); 0.00 : 4d587a: e8 f1 ed ff ff callq 4d4670 : Assert(EndPos % XLogSegSize == 0); : : /* Use up all the remaining space on the first page */ : CurrPos += freespace; : : while (CurrPos < EndPos) 0.00 : 4d587f: 4c 3b ad 58 fd ff ff cmp -0x2a8(%rbp),%r13 0.00 : 4d5886: 72 de jb 4d5866 : AdvanceXLInsertBuffer(CurrPos, false); : CurrPos += XLOG_BLCKSZ; : } : } : : if (CurrPos != EndPos) 0.00 : 4d5888: 4c 3b ad 58 fd ff ff cmp -0x2a8(%rbp),%r13 : elog(PANIC, "space reserved for WAL record does not match what was written"); 0.00 : 4d588f: bb 01 00 00 00 mov $0x1,%ebx : AdvanceXLInsertBuffer(CurrPos, false); : CurrPos += XLOG_BLCKSZ; : } : } : : if (CurrPos != EndPos) 0.00 : 4d5894: 0f 84 32 f8 ff ff je 4d50cc : elog(PANIC, "space reserved for WAL record does not match what was written"); 0.00 : 4d589a: ba 60 d6 7b 00 mov $0x7bd660,%edx 0.00 : 4d589f: be 1a 06 00 00 mov $0x61a,%esi 0.00 : 4d58a4: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d58a9: e8 72 5b 2a 00 callq 77b420 0.00 : 4d58ae: be 70 b8 7b 00 mov $0x7bb870,%esi 0.00 : 4d58b3: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d58b8: 31 c0 xor %eax,%eax 0.00 : 4d58ba: e8 71 59 2a 00 callq 77b230 0.00 : 4d58bf: e8 0c 3c f9 ff callq 4694d0 0.00 : 4d58c4: 0f 1f 40 00 nopl 0x0(%rax) : * end-of-segment actions (eg, notifying archiver). : */ : if (isLogSwitch) : { : TRACE_POSTGRESQL_XLOG_SWITCH(); : XLogFlush(EndPos); 0.00 : 4d58c8: 48 8b bd 58 fd ff ff mov -0x2a8(%rbp),%rdi 0.00 : 4d58cf: e8 7c f2 ff ff callq 4d4b50 : /* : * Even though we reserved the rest of the segment for us, which is : * reflected in EndPos, we return a pointer to just the end of the : * xlog-switch record. : */ : if (inserted) 0.00 : 4d58d4: 84 db test %bl,%bl 0.00 : 4d58d6: 0f 84 bb f8 ff ff je 4d5197 : { : EndPos = StartPos + SizeOfXLogRecord; 0.00 : 4d58dc: 48 8b 85 80 fd ff ff mov -0x280(%rbp),%rax 0.00 : 4d58e3: 48 83 c0 20 add $0x20,%rax 0.00 : 4d58e7: 48 89 85 58 fd ff ff mov %rax,-0x2a8(%rbp) : if (StartPos / XLOG_BLCKSZ != EndPos / XLOG_BLCKSZ) 0.00 : 4d58ee: 48 c1 e8 0d shr $0xd,%rax 0.00 : 4d58f2: 49 39 c4 cmp %rax,%r12 0.00 : 4d58f5: 0f 84 9c f8 ff ff je 4d5197 : { : if (EndPos % XLOG_SEG_SIZE == EndPos % XLOG_BLCKSZ) : EndPos += SizeOfXLogLongPHD; 0.00 : 4d58fb: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx 0.00 : 4d5902: 48 8b 85 80 fd ff ff mov -0x280(%rbp),%rax 0.00 : 4d5909: 48 83 c2 48 add $0x48,%rdx 0.00 : 4d590d: 48 83 c0 38 add $0x38,%rax 0.00 : 4d5911: 48 f7 85 58 fd ff ff testq $0xffe000,-0x2a8(%rbp) 0.00 : 4d5918: 00 e0 ff 00 0.00 : 4d591c: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 4d5920: 48 89 95 58 fd ff ff mov %rdx,-0x2a8(%rbp) 0.00 : 4d5927: e9 6b f8 ff ff jmpq 4d5197 : * These calculations are a bit heavy-weight to be done while holding a : * spinlock, but since we're holding all the WAL insertion locks, there : * are no other inserters competing for it. GetXLogInsertRecPtr() does : * compete for it, but that's not called very frequently. : */ : SpinLockAcquire(&Insert->insertpos_lck); 0.00 : 4d592c: ba 77 05 00 00 mov $0x577,%edx 0.00 : 4d5931: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d5936: 48 89 df mov %rbx,%rdi 0.00 : 4d5939: e8 02 a7 1b 00 callq 690040 0.00 : 4d593e: e9 5f f7 ff ff jmpq 4d50a2 : MemSet(rechdr, 0, SizeOfXLogRecord); : } : : /* cross-check on whether we should be here or not */ : if (!XLogInsertAllowed()) : elog(ERROR, "cannot make new WAL entries during recovery"); 0.00 : 4d5943: ba 4f d6 7b 00 mov $0x7bd64f,%edx 0.00 : 4d5948: be 74 03 00 00 mov $0x374,%esi 0.00 : 4d594d: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d5952: e8 c9 5a 2a 00 callq 77b420 0.00 : 4d5957: be 10 b8 7b 00 mov $0x7bb810,%esi 0.00 : 4d595c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4d5961: 31 c0 xor %eax,%eax 0.00 : 4d5963: e8 c8 58 2a 00 callq 77b230 0.00 : 4d5968: e8 63 3b f9 ff callq 4694d0 : : /* info's high bits are reserved for use by me */ : if (info & XLR_INFO_MASK) : elog(PANIC, "invalid xlog info mask %02X", info); 0.00 : 4d596d: ba 4f d6 7b 00 mov $0x7bd64f,%edx 0.00 : 4d5972: be 78 03 00 00 mov $0x378,%esi 0.00 : 4d5977: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d597c: e8 9f 5a 2a 00 callq 77b420 0.00 : 4d5981: 89 da mov %ebx,%edx 0.00 : 4d5983: be 03 98 7b 00 mov $0x7b9803,%esi 0.00 : 4d5988: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d598d: 31 c0 xor %eax,%eax 0.00 : 4d598f: e8 9c 58 2a 00 callq 77b230 0.00 : 4d5994: e8 37 3b f9 ff callq 4694d0 : *EndPos = *StartPos = ptr; : return false; : } : : endbytepos = startbytepos + size; : prevbytepos = Insert->PrevBytePos; 0.00 : 4d5999: 48 8b 53 10 mov 0x10(%rbx),%rdx : SpinLockRelease(&Insert->insertpos_lck); : *EndPos = *StartPos = ptr; : return false; : } : : endbytepos = startbytepos + size; 0.00 : 4d599d: 4d 8d 6e 20 lea 0x20(%r14),%r13 : prevbytepos = Insert->PrevBytePos; : : *StartPos = XLogBytePosToRecPtr(startbytepos); : *EndPos = XLogBytePosToEndRecPtr(endbytepos); 0.00 : 4d59a1: 4c 89 ef mov %r13,%rdi : *EndPos = *StartPos = ptr; : return false; : } : : endbytepos = startbytepos + size; : prevbytepos = Insert->PrevBytePos; 0.00 : 4d59a4: 48 89 95 68 fd ff ff mov %rdx,-0x298(%rbp) : : *StartPos = XLogBytePosToRecPtr(startbytepos); : *EndPos = XLogBytePosToEndRecPtr(endbytepos); 0.00 : 4d59ab: e8 60 74 ff ff callq 4cce10 0.00 : 4d59b0: 48 89 85 58 fd ff ff mov %rax,-0x2a8(%rbp) : : segleft = XLOG_SEG_SIZE - ((*EndPos) % XLOG_SEG_SIZE); 0.00 : 4d59b7: 8b 85 58 fd ff ff mov -0x2a8(%rbp),%eax 0.00 : 4d59bd: ba 00 00 00 01 mov $0x1000000,%edx 0.00 : 4d59c2: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : 4d59c7: 29 c2 sub %eax,%edx : if (segleft != XLOG_SEG_SIZE) 0.00 : 4d59c9: 81 fa 00 00 00 01 cmp $0x1000000,%edx 0.00 : 4d59cf: 74 18 je 4d59e9 : { : /* consume the rest of the segment */ : *EndPos += segleft; 0.00 : 4d59d1: 89 d0 mov %edx,%eax 0.00 : 4d59d3: 48 01 85 58 fd ff ff add %rax,-0x2a8(%rbp) : endbytepos = XLogRecPtrToBytePos(*EndPos); 0.00 : 4d59da: 48 8b bd 58 fd ff ff mov -0x2a8(%rbp),%rdi 0.00 : 4d59e1: e8 ea 74 ff ff callq 4cced0 0.00 : 4d59e6: 49 89 c5 mov %rax,%r13 : } : : endbytepos = startbytepos + size; : prevbytepos = Insert->PrevBytePos; : : *StartPos = XLogBytePosToRecPtr(startbytepos); 0.00 : 4d59e9: 4c 89 f7 mov %r14,%rdi 0.00 : 4d59ec: e8 8f 73 ff ff callq 4ccd80 0.00 : 4d59f1: 48 89 85 80 fd ff ff mov %rax,-0x280(%rbp) : { : /* consume the rest of the segment */ : *EndPos += segleft; : endbytepos = XLogRecPtrToBytePos(*EndPos); : } : Insert->CurrBytePos = endbytepos; 0.00 : 4d59f8: 4c 89 6b 08 mov %r13,0x8(%rbx) : Insert->PrevBytePos = startbytepos; 0.00 : 4d59fc: 4c 89 73 10 mov %r14,0x10(%rbx) : : SpinLockRelease(&Insert->insertpos_lck); 0.00 : 4d5a00: c6 03 00 movb $0x0,(%rbx) : : *PrevPtr = XLogBytePosToRecPtr(prevbytepos); 0.00 : 4d5a03: 48 8b bd 68 fd ff ff mov -0x298(%rbp),%rdi 0.00 : 4d5a0a: e8 71 73 ff ff callq 4ccd80 0.00 : 4d5a0f: 49 89 47 10 mov %rax,0x10(%r15) 0.00 : 4d5a13: e9 6e fc ff ff jmpq 4d5686 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.51 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3246 15.02 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3393 14.33 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3229 10.28 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3511 8.30 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3373 7.06 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3246 6.32 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3273 6.29 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3273 5.66 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3317 2.47 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3275 1.67 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3373 1.09 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3373 0.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3152 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000555070 : : * by newline. The terminating newline or EOF marker is not included : * in the final value of line_buf. : */ : static bool : CopyReadLine(CopyState cstate) : { 0.09 : 555070: 55 push %rbp : bool result; : : resetStringInfo(&cstate->line_buf); 0.09 : 555071: 48 8d 87 98 01 00 00 lea 0x198(%rdi),%rax : * by newline. The terminating newline or EOF marker is not included : * in the final value of line_buf. : */ : static bool : CopyReadLine(CopyState cstate) : { 0.00 : 555078: 48 89 e5 mov %rsp,%rbp 0.00 : 55507b: 41 57 push %r15 0.09 : 55507d: 41 56 push %r14 0.03 : 55507f: 41 55 push %r13 0.11 : 555081: 49 89 fd mov %rdi,%r13 : bool result; : : resetStringInfo(&cstate->line_buf); 0.00 : 555084: 48 89 c7 mov %rax,%rdi : * by newline. The terminating newline or EOF marker is not included : * in the final value of line_buf. : */ : static bool : CopyReadLine(CopyState cstate) : { 0.06 : 555087: 41 54 push %r12 0.00 : 555089: 53 push %rbx 0.09 : 55508a: 48 83 ec 78 sub $0x78,%rsp : bool result; : : resetStringInfo(&cstate->line_buf); 0.00 : 55508e: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.09 : 555095: e8 86 ca 07 00 callq 5d1b20 : bool in_quote = false, : last_was_esc = false; : char quotec = '\0'; : char escapec = '\0'; : : if (cstate->csv_mode) 0.03 : 55509a: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) : CopyReadLine(CopyState cstate) : { : bool result; : : resetStringInfo(&cstate->line_buf); : cstate->line_buf_valid = true; 0.03 : 55509f: 41 c6 85 b1 01 00 00 movb $0x1,0x1b1(%r13) 0.00 : 5550a6: 01 : : /* Mark that encoding conversion hasn't occurred yet */ : cstate->line_buf_converted = false; 0.00 : 5550a7: 41 c6 85 b0 01 00 00 movb $0x0,0x1b0(%r13) 0.00 : 5550ae: 00 : bool in_quote = false, : last_was_esc = false; : char quotec = '\0'; : char escapec = '\0'; : : if (cstate->csv_mode) 0.03 : 5550af: c6 85 70 ff ff ff 00 movb $0x0,-0x90(%rbp) 0.23 : 5550b6: c6 45 8f 00 movb $0x0,-0x71(%rbp) 0.14 : 5550ba: 74 2f je 5550eb : { : quotec = cstate->quote[0]; 0.00 : 5550bc: 49 8b 45 70 mov 0x70(%r13),%rax 0.00 : 5550c0: 0f b6 00 movzbl (%rax),%eax 0.00 : 5550c3: 88 45 8f mov %al,-0x71(%rbp) : escapec = cstate->escape[0]; 0.00 : 5550c6: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 5550ca: 0f b6 00 movzbl (%rax),%eax : /* ignore special escape processing if it's the same as quotec */ : if (quotec == escapec) 0.00 : 5550cd: 38 45 8f cmp %al,-0x71(%rbp) : char escapec = '\0'; : : if (cstate->csv_mode) : { : quotec = cstate->quote[0]; : escapec = cstate->escape[0]; 0.00 : 5550d0: 88 85 70 ff ff ff mov %al,-0x90(%rbp) : /* ignore special escape processing if it's the same as quotec */ : if (quotec == escapec) 0.00 : 5550d6: 0f b6 95 70 ff ff ff movzbl -0x90(%rbp),%edx 0.00 : 5550dd: b8 00 00 00 00 mov $0x0,%eax 0.00 : 5550e2: 0f 44 d0 cmove %eax,%edx 0.00 : 5550e5: 88 95 70 ff ff ff mov %dl,-0x90(%rbp) : * : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; 0.00 : 5550eb: 41 8b 9d c0 01 00 00 mov 0x1c0(%r13),%ebx : copy_buf_len = cstate->raw_buf_len; 0.17 : 5550f2: 45 8b b5 c4 01 00 00 mov 0x1c4(%r13),%r14d 0.03 : 5550f9: 45 31 ff xor %r15d,%r15d : * line_buf. : * : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; 0.00 : 5550fc: 49 8b 8d b8 01 00 00 mov 0x1b8(%r13),%rcx : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 555103: 31 c0 xor %eax,%eax : /* ignore special escape processing if it's the same as quotec */ : if (quotec == escapec) : escapec = '\0'; : } : : mblen_str[1] = '\0'; 0.03 : 555105: c6 45 c1 00 movb $0x0,-0x3f(%rbp) : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 555109: c6 45 90 00 movb $0x0,-0x70(%rbp) 0.03 : 55510d: c6 45 a0 00 movb $0x0,-0x60(%rbp) : * next data, so we read-ahead only as far we know we can. One : * optimization would be to read-ahead four byte here if : * cstate->copy_dest != COPY_OLD_FE, but it hardly seems worth it, : * considering the size of the buffer. : */ : if (raw_buf_ptr >= copy_buf_len || need_data) 0.00 : 555111: 44 39 f3 cmp %r14d,%ebx : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.03 : 555114: c6 45 b7 01 movb $0x1,-0x49(%rbp) : * line_buf. : * : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; 0.00 : 555118: 48 89 4d b8 mov %rcx,-0x48(%rbp) : * next data, so we read-ahead only as far we know we can. One : * optimization would be to read-ahead four byte here if : * cstate->copy_dest != COPY_OLD_FE, but it hardly seems worth it, : * considering the size of the buffer. : */ : if (raw_buf_ptr >= copy_buf_len || need_data) 0.03 : 55511c: 0f 8d f6 01 00 00 jge 555318 0.03 : 555122: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3246 17.51 : 555128: 84 c0 test %al,%al 0.00 : 55512a: 0f 85 e8 01 00 00 jne 555318 7.06 : 555130: 44 8d 63 01 lea 0x1(%rbx),%r12d 0.03 : 555134: 48 63 c3 movslq %ebx,%rax : : /* OK to fetch a character */ : prev_raw_ptr = raw_buf_ptr; : c = copy_raw_buf[raw_buf_ptr++]; : : if (cstate->csv_mode) 0.09 : 555137: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) : need_data = false; : } : : /* OK to fetch a character */ : prev_raw_ptr = raw_buf_ptr; : c = copy_raw_buf[raw_buf_ptr++]; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3273 6.32 : 55513c: 48 8b 55 b8 mov -0x48(%rbp),%rdx 6.29 : 555140: 0f b6 0c 02 movzbl (%rdx,%rax,1),%ecx : : if (cstate->csv_mode) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3275 2.47 : 555144: 74 6a je 5551b0 : * these characters is also the quote or escape character. : * : * Note: old-protocol does not like forced prefetch, but it's OK : * here since we cannot validly be at EOF. : */ : if (c == '\\' || c == '\r') 0.00 : 555146: 80 f9 5c cmp $0x5c,%cl 0.00 : 555149: 0f 84 11 02 00 00 je 555360 0.00 : 55514f: 80 f9 0d cmp $0xd,%cl 0.00 : 555152: 0f 84 08 02 00 00 je 555360 : * just use the char as a toggle. If they are different, we need : * to ensure that we only take account of an escape inside a : * quoted field and immediately preceding a quote char, and not : * the second in a escape-escape sequence. : */ : if (in_quote && c == escapec) 0.00 : 555158: 80 7d a0 00 cmpb $0x0,-0x60(%rbp) 0.00 : 55515c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 555160: 74 10 je 555172 0.00 : 555162: 3a 8d 70 ff ff ff cmp -0x90(%rbp),%cl 0.00 : 555168: 75 08 jne 555172 : last_was_esc = !last_was_esc; 0.00 : 55516a: 80 7d 90 00 cmpb $0x0,-0x70(%rbp) 0.00 : 55516e: 0f 94 45 90 sete -0x70(%rbp) : if (c == quotec && !last_was_esc) 0.00 : 555172: 3a 4d 8f cmp -0x71(%rbp),%cl 0.00 : 555175: 0f 84 2d 03 00 00 je 5554a8 : in_quote = !in_quote; : if (c != escapec) 0.00 : 55517b: 3a 8d 70 ff ff ff cmp -0x90(%rbp),%cl 0.00 : 555181: 0f b6 45 90 movzbl -0x70(%rbp),%eax 0.00 : 555185: ba 00 00 00 00 mov $0x0,%edx 0.00 : 55518a: 0f 44 d0 cmove %eax,%edx : * Updating the line count for embedded CR and/or LF chars is : * necessarily a little fragile - this test is probably about the : * best we can do. (XXX it's arguable whether we should do this : * at all --- is cur_lineno a physical or logical count?) : */ : if (in_quote && c == (cstate->eol_type == EOL_NL ? '\n' : '\r')) 0.00 : 55518d: 80 7d a0 00 cmpb $0x0,-0x60(%rbp) : */ : if (in_quote && c == escapec) : last_was_esc = !last_was_esc; : if (c == quotec && !last_was_esc) : in_quote = !in_quote; : if (c != escapec) 0.00 : 555191: 88 55 90 mov %dl,-0x70(%rbp) : * Updating the line count for embedded CR and/or LF chars is : * necessarily a little fragile - this test is probably about the : * best we can do. (XXX it's arguable whether we should do this : * at all --- is cur_lineno a physical or logical count?) : */ : if (in_quote && c == (cstate->eol_type == EOL_NL ? '\n' : '\r')) 0.00 : 555194: 74 1a je 5551b0 0.00 : 555196: 31 c0 xor %eax,%eax 0.00 : 555198: 41 83 7d 1c 01 cmpl $0x1,0x1c(%r13) 0.00 : 55519d: 0f be d1 movsbl %cl,%edx 0.00 : 5551a0: 0f 95 c0 setne %al 0.00 : 5551a3: 8d 44 40 0a lea 0xa(%rax,%rax,2),%eax 0.00 : 5551a7: 39 c2 cmp %eax,%edx 0.00 : 5551a9: 0f 84 49 03 00 00 je 5554f8 0.00 : 5551af: 90 nop : cstate->cur_lineno++; : } : : /* Process \r */ : if (c == '\r' && (!cstate->csv_mode || !in_quote)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3317 5.66 : 5551b0: 80 f9 0d cmp $0xd,%cl 0.00 : 5551b3: 0f 84 c7 01 00 00 je 555380 : /* If reach here, we have found the line terminator */ : break; : } : : /* Process \n */ : if (c == '\n' && (!cstate->csv_mode || !in_quote)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3373 8.30 : 5551b9: 80 f9 0a cmp $0xa,%cl 0.00 : 5551bc: 0f 84 0e 02 00 00 je 5553d0 : : /* : * In CSV mode, we only recognize \. alone on a line. This is because : * \. is a valid CSV data value. : */ : if (c == '\\' && (!cstate->csv_mode || first_char_in_line)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3393 15.02 : 5551c2: 80 f9 5c cmp $0x5c,%cl 0.00 : 5551c5: 0f 85 25 01 00 00 jne 5552f0 0.00 : 5551cb: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 5551d0: 40 0f 94 c6 sete %sil 0.00 : 5551d4: 74 0a je 5551e0 0.00 : 5551d6: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 5551da: 0f 84 10 01 00 00 je 5552f0 : { : char c2; : : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 5551e0: 45 39 f4 cmp %r14d,%r12d 0.00 : 5551e3: 0f 9d c0 setge %al 0.00 : 5551e6: 45 84 ff test %r15b,%r15b 0.00 : 5551e9: 0f 94 c2 sete %dl 0.00 : 5551ec: 84 c0 test %al,%al 0.00 : 5551ee: 0f 84 14 03 00 00 je 555508 0.00 : 5551f4: 84 d2 test %dl,%dl 0.00 : 5551f6: 0f 85 76 01 00 00 jne 555372 : : mblen_str[0] = c; : /* All our encodings only read the first byte to get the length */ : mblen = pg_encoding_mblen(cstate->file_encoding, mblen_str); : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(mblen - 1); : IF_NEED_REFILL_AND_EOF_BREAK(mblen - 1); 0.00 : 5551fc: 45 89 e6 mov %r12d,%r14d 0.00 : 5551ff: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 555205: 0f 1f 00 nopl (%rax) : } /* end of outer loop */ : : /* : * Transfer any still-uncopied data to line_buf. : */ : REFILL_LINEBUF; 0.00 : 555208: 41 8b 85 c0 01 00 00 mov 0x1c0(%r13),%eax 0.06 : 55520f: 44 39 f0 cmp %r14d,%eax 0.00 : 555212: 7d 22 jge 555236 0.00 : 555214: 48 63 f0 movslq %eax,%rsi 0.00 : 555217: 49 03 b5 b8 01 00 00 add 0x1b8(%r13),%rsi 0.26 : 55521e: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 555225: 44 89 f2 mov %r14d,%edx 0.00 : 555228: 29 c2 sub %eax,%edx 0.00 : 55522a: e8 c1 ca 07 00 callq 5d1cf0 0.03 : 55522f: 45 89 b5 c0 01 00 00 mov %r14d,0x1c0(%r13) : cstate->line_buf_converted = false; : : /* Parse data and transfer into line_buf */ : result = CopyReadLineText(cstate); : : if (result) 0.06 : 555236: 45 84 ff test %r15b,%r15b 0.00 : 555239: 0f 85 61 03 00 00 jne 5555a0 : { : /* : * If we didn't hit EOF, then we must have transferred the EOL marker : * to line_buf along with the data. Get rid of it. : */ : switch (cstate->eol_type) 0.00 : 55523f: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 555243: 83 f8 02 cmp $0x2,%eax 0.00 : 555246: 74 12 je 55525a 0.00 : 555248: 83 f8 03 cmp $0x3,%eax 0.00 : 55524b: 0f 84 47 04 00 00 je 555698 0.09 : 555251: 83 e8 01 sub $0x1,%eax 0.00 : 555254: 0f 85 53 03 00 00 jne 5555ad : cstate->line_buf.data[cstate->line_buf.len] = '\0'; : break; : case EOL_CR: : Assert(cstate->line_buf.len >= 1); : Assert(cstate->line_buf.data[cstate->line_buf.len - 1] == '\r'); : cstate->line_buf.len--; 0.03 : 55525a: 41 8b 85 a0 01 00 00 mov 0x1a0(%r13),%eax : cstate->line_buf.data[cstate->line_buf.len] = '\0'; 0.00 : 555261: 49 8b 95 98 01 00 00 mov 0x198(%r13),%rdx : cstate->line_buf.data[cstate->line_buf.len] = '\0'; : break; : case EOL_CR: : Assert(cstate->line_buf.len >= 1); : Assert(cstate->line_buf.data[cstate->line_buf.len - 1] == '\r'); : cstate->line_buf.len--; 0.00 : 555268: 83 e8 01 sub $0x1,%eax 0.11 : 55526b: 41 89 85 a0 01 00 00 mov %eax,0x1a0(%r13) : cstate->line_buf.data[cstate->line_buf.len] = '\0'; 0.20 : 555272: 48 98 cltq 0.00 : 555274: c6 04 02 00 movb $0x0,(%rdx,%rax,1) : break; : } : } : : /* Done reading the line. Convert it to server encoding. */ : if (cstate->need_transcoding) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3152 0.57 : 555278: 41 80 7d 24 00 cmpb $0x0,0x24(%r13) 0.00 : 55527d: 0f 84 35 03 00 00 je 5555b8 : { : char *cvt; : : cvt = pg_any_to_server(cstate->line_buf.data, 0.00 : 555283: 41 8b 55 20 mov 0x20(%r13),%edx 0.00 : 555287: 41 8b b5 a0 01 00 00 mov 0x1a0(%r13),%esi 0.00 : 55528e: 49 8b bd 98 01 00 00 mov 0x198(%r13),%rdi 0.00 : 555295: e8 96 3f 23 00 callq 789230 : cstate->line_buf.len, : cstate->file_encoding); : if (cvt != cstate->line_buf.data) 0.00 : 55529a: 49 3b 85 98 01 00 00 cmp 0x198(%r13),%rax : /* Done reading the line. Convert it to server encoding. */ : if (cstate->need_transcoding) : { : char *cvt; : : cvt = pg_any_to_server(cstate->line_buf.data, 0.00 : 5552a1: 48 89 c3 mov %rax,%rbx : cstate->line_buf.len, : cstate->file_encoding); : if (cvt != cstate->line_buf.data) 0.00 : 5552a4: 0f 84 0e 03 00 00 je 5555b8 : { : /* transfer converted data back to line_buf */ : resetStringInfo(&cstate->line_buf); 0.00 : 5552aa: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 5552b1: e8 6a c8 07 00 callq 5d1b20 : appendBinaryStringInfo(&cstate->line_buf, cvt, strlen(cvt)); 0.00 : 5552b6: 48 89 df mov %rbx,%rdi 0.00 : 5552b9: e8 92 45 f1 ff callq 469850 0.00 : 5552be: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 5552c5: 89 c2 mov %eax,%edx 0.00 : 5552c7: 48 89 de mov %rbx,%rsi 0.00 : 5552ca: e8 21 ca 07 00 callq 5d1cf0 : pfree(cvt); 0.00 : 5552cf: 48 89 df mov %rbx,%rdi 0.00 : 5552d2: e8 a9 38 24 00 callq 798b80 0.00 : 5552d7: e9 dc 02 00 00 jmpq 5555b8 0.00 : 5552dc: 0f 1f 40 00 nopl 0x0(%rax) : /* If reach here, we have found the line terminator */ : break; : } : : /* Process \n */ : if (c == '\n' && (!cstate->csv_mode || !in_quote)) 0.00 : 5552e0: 80 7d a0 00 cmpb $0x0,-0x60(%rbp) 0.00 : 5552e4: 0f 84 f1 00 00 00 je 5553db 0.00 : 5552ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * : * We only support multi-byte sequences where the first byte has the : * high-bit set, so as an optimization we can avoid this block : * entirely if it is not set. : */ : if (cstate->encoding_embeds_ascii && IS_HIGHBIT_SET(c)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3511 10.28 : 5552f0: 41 80 7d 25 00 cmpb $0x0,0x25(%r13) 0.03 : 5552f5: 0f 1f 00 nopl (%rax) 0.20 : 5552f8: 74 0c je 555306 0.00 : 5552fa: 84 c9 test %cl,%cl 0.00 : 5552fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 555300: 0f 88 fa 00 00 00 js 555400 : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3229 14.33 : 555306: c6 45 b7 00 movb $0x0,-0x49(%rbp) 0.00 : 55530a: 31 c0 xor %eax,%eax 0.00 : 55530c: 44 89 e3 mov %r12d,%ebx : * next data, so we read-ahead only as far we know we can. One : * optimization would be to read-ahead four byte here if : * cstate->copy_dest != COPY_OLD_FE, but it hardly seems worth it, : * considering the size of the buffer. : */ : if (raw_buf_ptr >= copy_buf_len || need_data) 0.11 : 55530f: 44 39 f3 cmp %r14d,%ebx 0.00 : 555312: 0f 8c 10 fe ff ff jl 555128 : { : REFILL_LINEBUF; 0.03 : 555318: 41 8b 85 c0 01 00 00 mov 0x1c0(%r13),%eax 0.00 : 55531f: 39 c3 cmp %eax,%ebx 0.00 : 555321: 0f 8f 19 01 00 00 jg 555440 : : /* : * Try to read some more data. This will certainly reset : * raw_buf_index to zero, and raw_buf_ptr must go with it. : */ : if (!CopyLoadRawBuf(cstate)) 0.00 : 555327: 4c 89 ef mov %r13,%rdi 0.00 : 55532a: e8 91 fc ff ff callq 554fc0 : hit_eof = true; : raw_buf_ptr = 0; : copy_buf_len = cstate->raw_buf_len; 0.00 : 55532f: 45 8b b5 c4 01 00 00 mov 0x1c4(%r13),%r14d : : /* : * Try to read some more data. This will certainly reset : * raw_buf_index to zero, and raw_buf_ptr must go with it. : */ : if (!CopyLoadRawBuf(cstate)) 0.00 : 555336: 84 c0 test %al,%al 0.00 : 555338: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 55533e: 45 0f 44 f8 cmove %r8d,%r15d : : /* : * If we are completely out of data, break out of the loop, : * reporting EOF. : */ : if (copy_buf_len <= 0) 0.00 : 555342: 45 85 f6 test %r14d,%r14d 0.00 : 555345: 0f 8e c5 02 00 00 jle 555610 0.00 : 55534b: 31 db xor %ebx,%ebx 0.00 : 55534d: 31 c0 xor %eax,%eax 0.00 : 55534f: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 555355: e9 dd fd ff ff jmpq 555137 0.00 : 55535a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Note: old-protocol does not like forced prefetch, but it's OK : * here since we cannot validly be at EOF. : */ : if (c == '\\' || c == '\r') : { : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 555360: 45 39 f4 cmp %r14d,%r12d 0.00 : 555363: 0f 8c ef fd ff ff jl 555158 0.00 : 555369: 45 84 ff test %r15b,%r15b 0.00 : 55536c: 0f 85 e6 fd ff ff jne 555158 : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 555372: 41 89 dc mov %ebx,%r12d 0.00 : 555375: 45 31 ff xor %r15d,%r15d 0.00 : 555378: b8 01 00 00 00 mov $0x1,%eax 0.00 : 55537d: eb 8d jmp 55530c 0.00 : 55537f: 90 nop : if (in_quote && c == (cstate->eol_type == EOL_NL ? '\n' : '\r')) : cstate->cur_lineno++; : } : : /* Process \r */ : if (c == '\r' && (!cstate->csv_mode || !in_quote)) 0.00 : 555380: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 555385: 74 0a je 555391 0.00 : 555387: 80 7d a0 00 cmpb $0x0,-0x60(%rbp) 0.00 : 55538b: 0f 85 5f ff ff ff jne 5552f0 : { : /* Check for \r\n on first line, _and_ handle \r\n. */ : if (cstate->eol_type == EOL_UNKNOWN || 0.00 : 555391: 41 8b 55 1c mov 0x1c(%r13),%edx 0.00 : 555395: 85 d2 test %edx,%edx 0.00 : 555397: 0f 84 d3 00 00 00 je 555470 0.00 : 55539d: 83 fa 03 cmp $0x3,%edx 0.00 : 5553a0: 0f 84 ca 00 00 00 je 555470 : * \n, so don't consume the peeked character : */ : cstate->eol_type = EOL_CR; : } : } : else if (cstate->eol_type == EOL_NL) 0.00 : 5553a6: 45 31 ff xor %r15d,%r15d 0.00 : 5553a9: 83 ea 01 sub $0x1,%edx 0.00 : 5553ac: 45 89 e6 mov %r12d,%r14d 0.00 : 5553af: 0f 85 53 fe ff ff jne 555208 : ereport(ERROR, 0.00 : 5553b5: 45 31 c0 xor %r8d,%r8d 0.00 : 5553b8: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 5553bd: ba 27 0d 00 00 mov $0xd27,%edx 0.00 : 5553c2: e9 e9 03 00 00 jmpq 5557b0 0.00 : 5553c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5553ce: 00 00 : /* If reach here, we have found the line terminator */ : break; : } : : /* Process \n */ : if (c == '\n' && (!cstate->csv_mode || !in_quote)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3373 1.67 : 5553d0: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 1.09 : 5553d5: 0f 85 05 ff ff ff jne 5552e0 : { : if (cstate->eol_type == EOL_CR || cstate->eol_type == EOL_CRNL) 0.09 : 5553db: 41 8b 45 1c mov 0x1c(%r13),%eax 0.00 : 5553df: 83 e8 02 sub $0x2,%eax 0.00 : 5553e2: 83 f8 01 cmp $0x1,%eax 0.00 : 5553e5: 0f 86 45 03 00 00 jbe 555730 : errmsg("literal newline found in data") : : errmsg("unquoted newline found in data"), : !cstate->csv_mode ? : errhint("Use \"\\n\" to represent newline.") : : errhint("Use quoted CSV field to represent newline."))); : cstate->eol_type = EOL_NL; /* in case not set yet */ 0.11 : 5553eb: 41 c7 45 1c 01 00 00 movl $0x1,0x1c(%r13) 0.00 : 5553f2: 00 0.09 : 5553f3: 45 89 e6 mov %r12d,%r14d 0.00 : 5553f6: 45 31 ff xor %r15d,%r15d 0.00 : 5553f9: e9 0a fe ff ff jmpq 555208 0.00 : 5553fe: 66 90 xchg %ax,%ax : { : int mblen; : : mblen_str[0] = c; : /* All our encodings only read the first byte to get the length */ : mblen = pg_encoding_mblen(cstate->file_encoding, mblen_str); 0.00 : 555400: 41 8b 7d 20 mov 0x20(%r13),%edi 0.00 : 555404: 48 8d 75 c0 lea -0x40(%rbp),%rsi : */ : if (cstate->encoding_embeds_ascii && IS_HIGHBIT_SET(c)) : { : int mblen; : : mblen_str[0] = c; 0.00 : 555408: 88 4d c0 mov %cl,-0x40(%rbp) : /* All our encodings only read the first byte to get the length */ : mblen = pg_encoding_mblen(cstate->file_encoding, mblen_str); 0.00 : 55540b: e8 20 5e 23 00 callq 78b230 : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(mblen - 1); 0.00 : 555410: 8d 14 18 lea (%rax,%rbx,1),%edx 0.00 : 555413: 41 39 d6 cmp %edx,%r14d 0.00 : 555416: 0f 8f ac 00 00 00 jg 5554c8 0.00 : 55541c: 45 84 ff test %r15b,%r15b 0.00 : 55541f: 0f 84 4d ff ff ff je 555372 : IF_NEED_REFILL_AND_EOF_BREAK(mblen - 1); 0.00 : 555425: 83 e8 01 sub $0x1,%eax 0.00 : 555428: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 55542e: 0f 85 d4 fd ff ff jne 555208 0.00 : 555434: e9 c3 fd ff ff jmpq 5551fc 0.00 : 555439: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * cstate->copy_dest != COPY_OLD_FE, but it hardly seems worth it, : * considering the size of the buffer. : */ : if (raw_buf_ptr >= copy_buf_len || need_data) : { : REFILL_LINEBUF; 0.00 : 555440: 48 63 f0 movslq %eax,%rsi 0.00 : 555443: 49 03 b5 b8 01 00 00 add 0x1b8(%r13),%rsi 0.00 : 55544a: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 555451: 89 da mov %ebx,%edx 0.00 : 555453: 29 c2 sub %eax,%edx 0.00 : 555455: e8 96 c8 07 00 callq 5d1cf0 0.00 : 55545a: 41 89 9d c0 01 00 00 mov %ebx,0x1c0(%r13) 0.00 : 555461: e9 c1 fe ff ff jmpq 555327 0.00 : 555466: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 55546d: 00 00 00 : * If need more data, go back to loop top to load it. : * : * Note that if we are at EOF, c will wind up as '\0' because : * of the guaranteed pad of raw_buf. : */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 555470: 45 39 f4 cmp %r14d,%r12d 0.00 : 555473: 7d 6b jge 5554e0 : : /* get next char */ : c = copy_raw_buf[raw_buf_ptr]; : : if (c == '\n') 0.00 : 555475: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 555479: 49 63 c4 movslq %r12d,%rax 0.00 : 55547c: 80 3c 01 0a cmpb $0xa,(%rcx,%rax,1) 0.00 : 555480: 0f 84 35 02 00 00 je 5556bb : cstate->eol_type = EOL_CRNL; /* in case not set yet */ : } : else : { : /* found \r, but no \n */ : if (cstate->eol_type == EOL_CRNL) 0.00 : 555486: 83 fa 03 cmp $0x3,%edx 0.00 : 555489: 0f 84 15 03 00 00 je 5557a4 : : /* : * if we got here, it is the first line and we didn't find : * \n, so don't consume the peeked character : */ : cstate->eol_type = EOL_CR; 0.00 : 55548f: 41 c7 45 1c 02 00 00 movl $0x2,0x1c(%r13) 0.00 : 555496: 00 0.00 : 555497: 45 89 e6 mov %r12d,%r14d 0.00 : 55549a: 45 31 ff xor %r15d,%r15d 0.00 : 55549d: e9 66 fd ff ff jmpq 555208 0.00 : 5554a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * the second in a escape-escape sequence. : */ : if (in_quote && c == escapec) : last_was_esc = !last_was_esc; : if (c == quotec && !last_was_esc) : in_quote = !in_quote; 0.00 : 5554a8: 0f b6 45 a0 movzbl -0x60(%rbp),%eax 0.00 : 5554ac: 0f b6 55 a0 movzbl -0x60(%rbp),%edx 0.00 : 5554b0: 83 f0 01 xor $0x1,%eax 0.00 : 5554b3: 80 7d 90 00 cmpb $0x0,-0x70(%rbp) 0.00 : 5554b7: 0f 44 d0 cmove %eax,%edx 0.00 : 5554ba: 88 55 a0 mov %dl,-0x60(%rbp) 0.00 : 5554bd: e9 b9 fc ff ff jmpq 55517b 0.00 : 5554c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : mblen_str[0] = c; : /* All our encodings only read the first byte to get the length */ : mblen = pg_encoding_mblen(cstate->file_encoding, mblen_str); : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(mblen - 1); : IF_NEED_REFILL_AND_EOF_BREAK(mblen - 1); 0.00 : 5554c8: 41 89 d4 mov %edx,%r12d 0.00 : 5554cb: c6 45 b7 00 movb $0x0,-0x49(%rbp) 0.00 : 5554cf: 31 c0 xor %eax,%eax 0.00 : 5554d1: e9 36 fe ff ff jmpq 55530c 0.00 : 5554d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5554dd: 00 00 00 : * If need more data, go back to loop top to load it. : * : * Note that if we are at EOF, c will wind up as '\0' because : * of the guaranteed pad of raw_buf. : */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 5554e0: 45 84 ff test %r15b,%r15b 0.00 : 5554e3: 75 90 jne 555475 : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 5554e5: 41 89 dc mov %ebx,%r12d 0.00 : 5554e8: 45 31 ff xor %r15d,%r15d 0.00 : 5554eb: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5554f0: e9 17 fe ff ff jmpq 55530c 0.00 : 5554f5: 0f 1f 00 nopl (%rax) : * necessarily a little fragile - this test is probably about the : * best we can do. (XXX it's arguable whether we should do this : * at all --- is cur_lineno a physical or logical count?) : */ : if (in_quote && c == (cstate->eol_type == EOL_NL ? '\n' : '\r')) : cstate->cur_lineno++; 0.00 : 5554f8: 41 83 85 d8 00 00 00 addl $0x1,0xd8(%r13) 0.00 : 5554ff: 01 0.00 : 555500: e9 ab fc ff ff jmpq 5551b0 0.00 : 555505: 0f 1f 00 nopl (%rax) : * through and continue processing for file encoding. : * ----- : */ : c2 = copy_raw_buf[raw_buf_ptr]; : : if (c2 == '.') 0.00 : 555508: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 55550c: 49 63 c4 movslq %r12d,%rax 0.00 : 55550f: 41 80 3c 00 2e cmpb $0x2e,(%r8,%rax,1) 0.00 : 555514: 74 12 je 555528 : * literal backslash followed by a period. In CSV mode, : * backslashes are not special, so we want to process the : * character after the backslash just like a normal character, : * so we don't increment in those cases. : */ : raw_buf_ptr++; 0.00 : 555516: 40 80 fe 01 cmp $0x1,%sil 0.00 : 55551a: 41 83 dc ff sbb $0xffffffff,%r12d 0.00 : 55551e: e9 e3 fd ff ff jmpq 555306 0.00 : 555523: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * Note: if we loop back for more data here, it does not : * matter that the CSV state change checks are re-executed; we : * will come back here with no important state changed. : */ : if (cstate->eol_type == EOL_CRNL) 0.00 : 555528: 41 8b 7d 1c mov 0x1c(%r13),%edi : */ : c2 = copy_raw_buf[raw_buf_ptr]; : : if (c2 == '.') : { : raw_buf_ptr++; /* consume the '.' */ 0.00 : 55552c: 41 8d 4c 24 01 lea 0x1(%r12),%ecx : /* : * Note: if we loop back for more data here, it does not : * matter that the CSV state change checks are re-executed; we : * will come back here with no important state changed. : */ : if (cstate->eol_type == EOL_CRNL) 0.00 : 555531: 83 ff 03 cmp $0x3,%edi 0.00 : 555534: 0f 84 e4 00 00 00 je 55561e : NO_END_OF_COPY_GOTO; : } : } : : /* Get the next character */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 55553a: 84 d2 test %dl,%dl 0.00 : 55553c: 0f 85 b2 00 00 00 jne 5555f4 : /* if hit_eof, c2 will become '\0' */ : c2 = copy_raw_buf[raw_buf_ptr++]; 0.00 : 555542: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 555546: 48 63 c1 movslq %ecx,%rax 0.00 : 555549: 44 8d 41 01 lea 0x1(%rcx),%r8d 0.00 : 55554d: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax : : if (c2 != '\r' && c2 != '\n') 0.00 : 555551: 3c 0d cmp $0xd,%al 0.00 : 555553: 0f 95 c2 setne %dl 0.00 : 555556: 3c 0a cmp $0xa,%al 0.00 : 555558: 0f 95 c0 setne %al 0.00 : 55555b: 84 d2 test %dl,%dl 0.00 : 55555d: 74 08 je 555567 0.00 : 55555f: 84 c0 test %al,%al 0.00 : 555561: 0f 85 f9 00 00 00 jne 555660 : errmsg("end-of-copy marker corrupt"))); : else : NO_END_OF_COPY_GOTO; : } : : if ((cstate->eol_type == EOL_NL && c2 != '\n') || 0.00 : 555567: 83 ff 01 cmp $0x1,%edi 0.00 : 55556a: 0f 84 cc 02 00 00 je 55583c 0.00 : 555570: 83 ff 03 cmp $0x3,%edi 0.00 : 555573: 0f 84 c3 02 00 00 je 55583c 0.00 : 555579: 83 ff 02 cmp $0x2,%edi 0.00 : 55557c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 555580: 0f 84 fd 02 00 00 je 555883 : : /* : * Transfer only the data before the \. into line_buf, then : * discard the data and the \. sequence. : */ : if (prev_raw_ptr > cstate->raw_buf_index) 0.00 : 555586: 41 8b 85 c0 01 00 00 mov 0x1c0(%r13),%eax 0.00 : 55558d: 39 d8 cmp %ebx,%eax 0.00 : 55558f: 0f 8c c1 02 00 00 jl 555856 : appendBinaryStringInfo(&cstate->line_buf, : cstate->raw_buf + cstate->raw_buf_index, : prev_raw_ptr - cstate->raw_buf_index); : cstate->raw_buf_index = raw_buf_ptr; 0.00 : 555595: 45 89 85 c0 01 00 00 mov %r8d,0x1c0(%r13) 0.00 : 55559c: 0f 1f 40 00 nopl 0x0(%rax) : /* : * Reached EOF. In protocol version 3, we should ignore anything : * after \. up to the protocol end of copy data. (XXX maybe better : * not to treat \. as special?) : */ : if (cstate->copy_dest == COPY_NEW_FE) 0.00 : 5555a0: 41 83 7d 00 02 cmpl $0x2,0x0(%r13) 0.00 : 5555a5: 74 31 je 5555d8 : case EOL_CRNL: : Assert(cstate->line_buf.len >= 2); : Assert(cstate->line_buf.data[cstate->line_buf.len - 2] == '\r'); : Assert(cstate->line_buf.data[cstate->line_buf.len - 1] == '\n'); : cstate->line_buf.len -= 2; : cstate->line_buf.data[cstate->line_buf.len] = '\0'; 0.00 : 5555a7: 41 bf 01 00 00 00 mov $0x1,%r15d : break; : } : } : : /* Done reading the line. Convert it to server encoding. */ : if (cstate->need_transcoding) 0.00 : 5555ad: 41 80 7d 24 00 cmpb $0x0,0x24(%r13) 0.00 : 5555b2: 0f 85 cb fc ff ff jne 555283 : pfree(cvt); : } : } : : /* Now it's safe to use the buffer in error messages */ : cstate->line_buf_converted = true; 0.00 : 5555b8: 41 c6 85 b0 01 00 00 movb $0x1,0x1b0(%r13) 0.00 : 5555bf: 01 : : return result; : } 0.00 : 5555c0: 48 83 c4 78 add $0x78,%rsp 0.11 : 5555c4: 44 89 f8 mov %r15d,%eax 0.00 : 5555c7: 5b pop %rbx 0.00 : 5555c8: 41 5c pop %r12 0.14 : 5555ca: 41 5d pop %r13 0.00 : 5555cc: 41 5e pop %r14 0.00 : 5555ce: 41 5f pop %r15 0.03 : 5555d0: c9 leaveq 0.11 : 5555d1: c3 retq 0.00 : 5555d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : if (cstate->copy_dest == COPY_NEW_FE) : { : do : { : cstate->raw_buf_index = cstate->raw_buf_len; 0.00 : 5555d8: 41 8b 85 c4 01 00 00 mov 0x1c4(%r13),%eax : } while (CopyLoadRawBuf(cstate)); 0.00 : 5555df: 4c 89 ef mov %r13,%rdi : */ : if (cstate->copy_dest == COPY_NEW_FE) : { : do : { : cstate->raw_buf_index = cstate->raw_buf_len; 0.00 : 5555e2: 41 89 85 c0 01 00 00 mov %eax,0x1c0(%r13) : } while (CopyLoadRawBuf(cstate)); 0.00 : 5555e9: e8 d2 f9 ff ff callq 554fc0 0.00 : 5555ee: 84 c0 test %al,%al 0.00 : 5555f0: 75 e6 jne 5555d8 0.00 : 5555f2: eb b3 jmp 5555a7 : NO_END_OF_COPY_GOTO; : } : } : : /* Get the next character */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 5555f4: 41 39 ce cmp %ecx,%r14d 0.00 : 5555f7: 90 nop 0.00 : 5555f8: 0f 8f 44 ff ff ff jg 555542 : * For a little extra speed within the loop, we copy raw_buf and : * raw_buf_len into local variables. : */ : copy_raw_buf = cstate->raw_buf; : raw_buf_ptr = cstate->raw_buf_index; : copy_buf_len = cstate->raw_buf_len; 0.00 : 5555fe: 41 89 dc mov %ebx,%r12d 0.00 : 555601: 45 31 ff xor %r15d,%r15d 0.00 : 555604: b8 01 00 00 00 mov $0x1,%eax 0.00 : 555609: e9 fe fc ff ff jmpq 55530c 0.00 : 55560e: 66 90 xchg %ax,%ax : : /* : * If we are completely out of data, break out of the loop, : * reporting EOF. : */ : if (copy_buf_len <= 0) 0.00 : 555610: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 555616: 45 31 f6 xor %r14d,%r14d 0.00 : 555619: e9 ea fb ff ff jmpq 555208 : * will come back here with no important state changed. : */ : if (cstate->eol_type == EOL_CRNL) : { : /* Get the next character */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); 0.00 : 55561e: 84 d2 test %dl,%dl 0.00 : 555620: 74 09 je 55562b 0.00 : 555622: 41 39 ce cmp %ecx,%r14d 0.00 : 555625: 0f 8e 47 fd ff ff jle 555372 : /* if hit_eof, c2 will become '\0' */ : c2 = copy_raw_buf[raw_buf_ptr++]; 0.00 : 55562b: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 55562f: 48 63 c1 movslq %ecx,%rax 0.00 : 555632: 41 0f b6 04 00 movzbl (%r8,%rax,1),%eax : : if (c2 == '\n') 0.00 : 555637: 3c 0a cmp $0xa,%al 0.00 : 555639: 0f 84 91 00 00 00 je 5556d0 : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("end-of-copy marker does not match previous newline style"))); : else : NO_END_OF_COPY_GOTO; : } : else if (c2 != '\r') 0.00 : 55563f: 3c 0d cmp $0xd,%al 0.00 : 555641: 0f 84 e1 00 00 00 je 555728 : { : if (!cstate->csv_mode) 0.00 : 555647: 40 84 f6 test %sil,%sil 0.00 : 55564a: 0f 84 b6 fc ff ff je 555306 : ereport(ERROR, 0.00 : 555650: 45 31 c0 xor %r8d,%r8d 0.00 : 555653: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 555658: ba 6e 0d 00 00 mov $0xd6e,%edx 0.00 : 55565d: eb 17 jmp 555676 0.00 : 55565f: 90 nop : /* if hit_eof, c2 will become '\0' */ : c2 = copy_raw_buf[raw_buf_ptr++]; : : if (c2 != '\r' && c2 != '\n') : { : if (!cstate->csv_mode) 0.00 : 555660: 40 84 f6 test %sil,%sil 0.00 : 555663: 0f 84 9d fc ff ff je 555306 : ereport(ERROR, 0.00 : 555669: 45 31 c0 xor %r8d,%r8d 0.00 : 55566c: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 555671: ba 7e 0d 00 00 mov $0xd7e,%edx 0.00 : 555676: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55567b: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 555680: e8 3b 54 22 00 callq 77aac0 0.00 : 555685: 84 c0 test %al,%al 0.00 : 555687: bf 64 89 87 00 mov $0x878964,%edi 0.00 : 55568c: 75 70 jne 5556fe : : if ((cstate->eol_type == EOL_NL && c2 != '\n') || : (cstate->eol_type == EOL_CRNL && c2 != '\n') || : (cstate->eol_type == EOL_CR && c2 != '\r')) : { : ereport(ERROR, 0.00 : 55568e: e8 3d 3e f1 ff callq 4694d0 0.00 : 555693: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : break; : case EOL_CRNL: : Assert(cstate->line_buf.len >= 2); : Assert(cstate->line_buf.data[cstate->line_buf.len - 2] == '\r'); : Assert(cstate->line_buf.data[cstate->line_buf.len - 1] == '\n'); : cstate->line_buf.len -= 2; 0.00 : 555698: 41 8b 85 a0 01 00 00 mov 0x1a0(%r13),%eax : cstate->line_buf.data[cstate->line_buf.len] = '\0'; 0.00 : 55569f: 49 8b 95 98 01 00 00 mov 0x198(%r13),%rdx : break; : case EOL_CRNL: : Assert(cstate->line_buf.len >= 2); : Assert(cstate->line_buf.data[cstate->line_buf.len - 2] == '\r'); : Assert(cstate->line_buf.data[cstate->line_buf.len - 1] == '\n'); : cstate->line_buf.len -= 2; 0.00 : 5556a6: 83 e8 02 sub $0x2,%eax 0.00 : 5556a9: 41 89 85 a0 01 00 00 mov %eax,0x1a0(%r13) : cstate->line_buf.data[cstate->line_buf.len] = '\0'; 0.00 : 5556b0: 48 98 cltq 0.00 : 5556b2: c6 04 02 00 movb $0x0,(%rdx,%rax,1) 0.00 : 5556b6: e9 f2 fe ff ff jmpq 5555ad : /* get next char */ : c = copy_raw_buf[raw_buf_ptr]; : : if (c == '\n') : { : raw_buf_ptr++; /* eat newline */ 0.00 : 5556bb: 45 8d 74 24 01 lea 0x1(%r12),%r14d : cstate->eol_type = EOL_CRNL; /* in case not set yet */ 0.00 : 5556c0: 41 c7 45 1c 03 00 00 movl $0x3,0x1c(%r13) 0.00 : 5556c7: 00 0.00 : 5556c8: 45 31 ff xor %r15d,%r15d 0.00 : 5556cb: e9 38 fb ff ff jmpq 555208 : /* if hit_eof, c2 will become '\0' */ : c2 = copy_raw_buf[raw_buf_ptr++]; : : if (c2 == '\n') : { : if (!cstate->csv_mode) 0.00 : 5556d0: 40 84 f6 test %sil,%sil 0.00 : 5556d3: 0f 84 2d fc ff ff je 555306 : ereport(ERROR, 0.00 : 5556d9: 45 31 c0 xor %r8d,%r8d 0.00 : 5556dc: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 5556e1: ba 65 0d 00 00 mov $0xd65,%edx : : if ((cstate->eol_type == EOL_NL && c2 != '\n') || : (cstate->eol_type == EOL_CRNL && c2 != '\n') || : (cstate->eol_type == EOL_CR && c2 != '\r')) : { : ereport(ERROR, 0.00 : 5556e6: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5556eb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5556f0: e8 cb 53 22 00 callq 77aac0 0.00 : 5556f5: 84 c0 test %al,%al 0.00 : 5556f7: 74 95 je 55568e 0.00 : 5556f9: bf 98 8d 87 00 mov $0x878d98,%edi 0.00 : 5556fe: 31 c0 xor %eax,%eax 0.00 : 555700: e8 9b 71 22 00 callq 77c8a0 0.00 : 555705: bf 82 00 02 04 mov $0x4020082,%edi 0.00 : 55570a: 89 c3 mov %eax,%ebx 0.00 : 55570c: e8 3f 76 22 00 callq 77cd50 0.00 : 555711: 89 de mov %ebx,%esi 0.00 : 555713: 89 c7 mov %eax,%edi 0.00 : 555715: 31 c0 xor %eax,%eax 0.00 : 555717: e8 c4 4e 22 00 callq 77a5e0 0.00 : 55571c: e9 6d ff ff ff jmpq 55568e 0.00 : 555721: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (cstate->eol_type == EOL_CRNL) : { : /* Get the next character */ : IF_NEED_REFILL_AND_NOT_EOF_CONTINUE(0); : /* if hit_eof, c2 will become '\0' */ : c2 = copy_raw_buf[raw_buf_ptr++]; 0.00 : 555728: 83 c1 01 add $0x1,%ecx 0.00 : 55572b: e9 0a fe ff ff jmpq 55553a : : /* Process \n */ : if (c == '\n' && (!cstate->csv_mode || !in_quote)) : { : if (cstate->eol_type == EOL_CR || cstate->eol_type == EOL_CRNL) : ereport(ERROR, 0.00 : 555730: 45 31 c0 xor %r8d,%r8d 0.00 : 555733: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 555738: ba 37 0d 00 00 mov $0xd37,%edx 0.00 : 55573d: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 555742: bf 14 00 00 00 mov $0x14,%edi 0.00 : 555747: e8 74 53 22 00 callq 77aac0 0.00 : 55574c: 84 c0 test %al,%al 0.00 : 55574e: 0f 84 3a ff ff ff je 55568e 0.00 : 555754: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 555759: 0f 85 c9 00 00 00 jne 555828 0.00 : 55575f: bf 28 8d 87 00 mov $0x878d28,%edi 0.00 : 555764: 31 c0 xor %eax,%eax 0.00 : 555766: e8 35 65 22 00 callq 77bca0 0.00 : 55576b: 41 89 c4 mov %eax,%r12d 0.00 : 55576e: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 555773: 0f 85 9c 00 00 00 jne 555815 0.00 : 555779: bf 46 89 87 00 mov $0x878946,%edi 0.00 : 55577e: 31 c0 xor %eax,%eax 0.00 : 555780: e8 1b 71 22 00 callq 77c8a0 0.00 : 555785: 89 c3 mov %eax,%ebx 0.00 : 555787: bf 82 00 02 04 mov $0x4020082,%edi 0.00 : 55578c: e8 bf 75 22 00 callq 77cd50 0.00 : 555791: 44 89 e2 mov %r12d,%edx 0.00 : 555794: 89 c7 mov %eax,%edi 0.00 : 555796: 89 de mov %ebx,%esi 0.00 : 555798: 31 c0 xor %eax,%eax 0.00 : 55579a: e8 41 4e 22 00 callq 77a5e0 0.00 : 55579f: e9 ea fe ff ff jmpq 55568e : } : else : { : /* found \r, but no \n */ : if (cstate->eol_type == EOL_CRNL) : ereport(ERROR, 0.00 : 5557a4: 45 31 c0 xor %r8d,%r8d 0.00 : 5557a7: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 5557ac: 66 ba 16 0d mov $0xd16,%dx : */ : cstate->eol_type = EOL_CR; : } : } : else if (cstate->eol_type == EOL_NL) : ereport(ERROR, 0.00 : 5557b0: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5557b5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5557ba: e8 01 53 22 00 callq 77aac0 0.00 : 5557bf: 84 c0 test %al,%al 0.00 : 5557c1: 0f 84 c7 fe ff ff je 55568e 0.00 : 5557c7: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 5557cc: 75 36 jne 555804 0.00 : 5557ce: bf 78 8c 87 00 mov $0x878c78,%edi 0.00 : 5557d3: 31 c0 xor %eax,%eax 0.00 : 5557d5: e8 c6 64 22 00 callq 77bca0 0.00 : 5557da: 41 89 c4 mov %eax,%r12d 0.00 : 5557dd: 41 80 7d 4c 00 cmpb $0x0,0x4c(%r13) 0.00 : 5557e2: 75 10 jne 5557f4 0.00 : 5557e4: bf d8 8c 87 00 mov $0x878cd8,%edi 0.00 : 5557e9: 31 c0 xor %eax,%eax 0.00 : 5557eb: e8 b0 70 22 00 callq 77c8a0 0.00 : 5557f0: 89 c3 mov %eax,%ebx 0.00 : 5557f2: eb 93 jmp 555787 0.00 : 5557f4: bf 00 8d 87 00 mov $0x878d00,%edi 0.00 : 5557f9: 31 c0 xor %eax,%eax 0.00 : 5557fb: e8 a0 70 22 00 callq 77c8a0 0.00 : 555800: 89 c3 mov %eax,%ebx 0.00 : 555802: eb 83 jmp 555787 0.00 : 555804: bf a0 8c 87 00 mov $0x878ca0,%edi 0.00 : 555809: 31 c0 xor %eax,%eax 0.00 : 55580b: e8 90 64 22 00 callq 77bca0 0.00 : 555810: 41 89 c4 mov %eax,%r12d 0.00 : 555813: eb c8 jmp 5557dd : : /* Process \n */ : if (c == '\n' && (!cstate->csv_mode || !in_quote)) : { : if (cstate->eol_type == EOL_CR || cstate->eol_type == EOL_CRNL) : ereport(ERROR, 0.00 : 555815: bf 78 8d 87 00 mov $0x878d78,%edi 0.00 : 55581a: 31 c0 xor %eax,%eax 0.00 : 55581c: e8 7f 70 22 00 callq 77c8a0 0.00 : 555821: 89 c3 mov %eax,%ebx 0.00 : 555823: e9 5f ff ff ff jmpq 555787 0.00 : 555828: bf 48 8d 87 00 mov $0x878d48,%edi 0.00 : 55582d: 31 c0 xor %eax,%eax 0.00 : 55582f: e8 6c 64 22 00 callq 77bca0 0.00 : 555834: 41 89 c4 mov %eax,%r12d 0.00 : 555837: e9 32 ff ff ff jmpq 55576e : errmsg("end-of-copy marker corrupt"))); : else : NO_END_OF_COPY_GOTO; : } : : if ((cstate->eol_type == EOL_NL && c2 != '\n') || 0.00 : 55583c: 84 c0 test %al,%al 0.00 : 55583e: 0f 84 35 fd ff ff je 555579 : (cstate->eol_type == EOL_CRNL && c2 != '\n') || : (cstate->eol_type == EOL_CR && c2 != '\r')) : { : ereport(ERROR, 0.00 : 555844: 45 31 c0 xor %r8d,%r8d 0.00 : 555847: b9 20 9d 87 00 mov $0x879d20,%ecx 0.00 : 55584c: ba 89 0d 00 00 mov $0xd89,%edx 0.00 : 555851: e9 90 fe ff ff jmpq 5556e6 : /* : * Transfer only the data before the \. into line_buf, then : * discard the data and the \. sequence. : */ : if (prev_raw_ptr > cstate->raw_buf_index) : appendBinaryStringInfo(&cstate->line_buf, 0.00 : 555856: 48 63 f0 movslq %eax,%rsi 0.00 : 555859: 49 03 b5 b8 01 00 00 add 0x1b8(%r13),%rsi 0.00 : 555860: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 555867: 29 c3 sub %eax,%ebx 0.00 : 555869: 44 89 85 60 ff ff ff mov %r8d,-0xa0(%rbp) 0.00 : 555870: 89 da mov %ebx,%edx 0.00 : 555872: e8 79 c4 07 00 callq 5d1cf0 0.00 : 555877: 44 8b 85 60 ff ff ff mov -0xa0(%rbp),%r8d 0.00 : 55587e: e9 12 fd ff ff jmpq 555595 : errmsg("end-of-copy marker corrupt"))); : else : NO_END_OF_COPY_GOTO; : } : : if ((cstate->eol_type == EOL_NL && c2 != '\n') || 0.00 : 555883: 84 d2 test %dl,%dl 0.00 : 555885: 0f 84 fb fc ff ff je 555586 0.00 : 55588b: eb b7 jmp 555844 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 7.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 7.43 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 4.16 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1097 3.49 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1087 3.46 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1099 3.34 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1097 3.34 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 3.31 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 2.97 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1085 2.86 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 2.68 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1087 2.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 2.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1095 2.16 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1098 1.78 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1055 1.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.49 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 1.45 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1049 1.45 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1049 1.41 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1052 1.41 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.37 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 1.37 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 1.30 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1049 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1120 1.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1067 1.15 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.15 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 1.04 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1068 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.82 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 0.82 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1137 0.74 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1139 0.74 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.74 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 0.63 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1112 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1120 0.52 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1077 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046ef10 : : * re-computing information about previously extracted attributes. : * slot->tts_nvalid is the number of attributes already extracted. : */ : static void : slot_deform_tuple(TupleTableSlot *slot, int natts) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1049 1.45 : 46ef10: 55 push %rbp 0.22 : 46ef11: 48 89 e5 mov %rsp,%rbp 0.15 : 46ef14: 41 57 push %r15 1.45 : 46ef16: 41 89 f7 mov %esi,%r15d 0.07 : 46ef19: 41 56 push %r14 0.11 : 46ef1b: 49 89 fe mov %rdi,%r14 0.07 : 46ef1e: 41 55 push %r13 1.30 : 46ef20: 41 54 push %r12 0.00 : 46ef22: 53 push %rbx : /* : * Check whether the first call for this tuple, and initialize or restore : * loop state. : */ : attnum = slot->tts_nvalid; : if (attnum == 0) 0.11 : 46ef23: 31 db xor %ebx,%ebx : * re-computing information about previously extracted attributes. : * slot->tts_nvalid is the number of attributes already extracted. : */ : static void : slot_deform_tuple(TupleTableSlot *slot, int natts) : { 0.11 : 46ef25: 48 83 ec 28 sub $0x28,%rsp : HeapTuple tuple = slot->tts_tuple; : TupleDesc tupleDesc = slot->tts_tupleDescriptor; : Datum *values = slot->tts_values; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1052 1.41 : 46ef29: 48 8b 47 28 mov 0x28(%rdi),%rax 0.15 : 46ef2d: 48 89 45 d0 mov %rax,-0x30(%rbp) : bool *isnull = slot->tts_isnull; : HeapTupleHeader tup = tuple->t_data; 0.15 : 46ef31: 48 8b 47 08 mov 0x8(%rdi),%rax : : /* : * Check whether the first call for this tuple, and initialize or restore : * loop state. : */ : attnum = slot->tts_nvalid; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1067 1.19 : 46ef35: 8b 77 24 mov 0x24(%rdi),%esi : slot_deform_tuple(TupleTableSlot *slot, int natts) : { : HeapTuple tuple = slot->tts_tuple; : TupleDesc tupleDesc = slot->tts_tupleDescriptor; : Datum *values = slot->tts_values; : bool *isnull = slot->tts_isnull; 0.00 : 46ef38: 4c 8b 5f 30 mov 0x30(%rdi),%r11 : HeapTupleHeader tup = tuple->t_data; 0.19 : 46ef3c: 4c 8b 40 10 mov 0x10(%rax),%r8 : bool hasnulls = HeapTupleHasNulls(tuple); 0.22 : 46ef40: 41 0f b7 40 14 movzwl 0x14(%r8),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1055 1.78 : 46ef45: 83 e0 01 and $0x1,%eax 0.15 : 46ef48: 41 89 c2 mov %eax,%r10d : Form_pg_attribute *att = tupleDesc->attrs; 0.15 : 46ef4b: 48 8b 47 10 mov 0x10(%rdi),%rax : /* : * Check whether the first call for this tuple, and initialize or restore : * loop state. : */ : attnum = slot->tts_nvalid; : if (attnum == 0) 0.07 : 46ef4f: 31 ff xor %edi,%edi /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1068 1.04 : 46ef51: 85 f6 test %esi,%esi : TupleDesc tupleDesc = slot->tts_tupleDescriptor; : Datum *values = slot->tts_values; : bool *isnull = slot->tts_isnull; : HeapTupleHeader tup = tuple->t_data; : bool hasnulls = HeapTupleHasNulls(tuple); : Form_pg_attribute *att = tupleDesc->attrs; 0.00 : 46ef53: 4c 8b 48 08 mov 0x8(%rax),%r9 : /* : * Check whether the first call for this tuple, and initialize or restore : * loop state. : */ : attnum = slot->tts_nvalid; : if (attnum == 0) 0.33 : 46ef57: 74 09 je 46ef62 : } : else : { : /* Restore state from previous execution */ : off = slot->tts_off; : slow = slot->tts_slow; 0.00 : 46ef59: 41 0f b6 7e 07 movzbl 0x7(%r14),%edi : slow = false; : } : else : { : /* Restore state from previous execution */ : off = slot->tts_off; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1077 0.52 : 46ef5e: 49 8b 5e 58 mov 0x58(%r14),%rbx : slow = slot->tts_slow; : } : : tp = (char *) tup + tup->t_hoff; 0.04 : 46ef62: 41 0f b6 40 16 movzbl 0x16(%r8),%eax : : for (; attnum < natts; attnum++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 0.67 : 46ef67: 44 39 fe cmp %r15d,%esi : /* Restore state from previous execution */ : off = slot->tts_off; : slow = slot->tts_slow; : } : : tp = (char *) tup + tup->t_hoff; 0.00 : 46ef6a: 4d 8d 2c 00 lea (%r8,%rax,1),%r13 : : for (; attnum < natts; attnum++) 1.15 : 46ef6e: 0f 8d c0 00 00 00 jge 46f034 0.04 : 46ef74: 41 89 f4 mov %esi,%r12d 0.48 : 46ef77: eb 40 jmp 46efb9 0.00 : 46ef79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : Form_pg_attribute thisatt = att[attnum]; : : if (hasnulls && att_isnull(attnum, bp)) 0.00 : 46ef80: 44 89 e0 mov %r12d,%eax 0.00 : 46ef83: 44 89 e1 mov %r12d,%ecx 0.00 : 46ef86: c1 f8 03 sar $0x3,%eax 0.00 : 46ef89: 83 e1 07 and $0x7,%ecx 0.00 : 46ef8c: 48 98 cltq 0.00 : 46ef8e: 41 0f b6 44 00 17 movzbl 0x17(%r8,%rax,1),%eax 0.00 : 46ef94: d3 f8 sar %cl,%eax 0.00 : 46ef96: a8 01 test $0x1,%al 0.00 : 46ef98: 75 2b jne 46efc5 : { : values[attnum] = (Datum) 0; 0.00 : 46ef9a: 48 8b 55 d0 mov -0x30(%rbp),%rdx : isnull[attnum] = true; 0.00 : 46ef9e: bf 01 00 00 00 mov $0x1,%edi : { : Form_pg_attribute thisatt = att[attnum]; : : if (hasnulls && att_isnull(attnum, bp)) : { : values[attnum] = (Datum) 0; 0.00 : 46efa3: 48 c7 04 f2 00 00 00 movq $0x0,(%rdx,%rsi,8) 0.00 : 46efaa: 00 : isnull[attnum] = true; 0.00 : 46efab: 41 c6 04 33 01 movb $0x1,(%r11,%rsi,1) : slow = slot->tts_slow; : } : : tp = (char *) tup + tup->t_hoff; : : for (; attnum < natts; attnum++) 0.82 : 46efb0: 41 83 c4 01 add $0x1,%r12d 0.04 : 46efb4: 45 39 e7 cmp %r12d,%r15d 0.00 : 46efb7: 7e 78 jle 46f031 : { : Form_pg_attribute thisatt = att[attnum]; 0.04 : 46efb9: 49 63 f4 movslq %r12d,%rsi : : if (hasnulls && att_isnull(attnum, bp)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1087 2.68 : 46efbc: 45 84 d2 test %r10b,%r10b : : tp = (char *) tup + tup->t_hoff; : : for (; attnum < natts; attnum++) : { : Form_pg_attribute thisatt = att[attnum]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1085 2.97 : 46efbf: 49 8b 14 f1 mov (%r9,%rsi,8),%rdx : : if (hasnulls && att_isnull(attnum, bp)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1087 3.49 : 46efc3: 75 bb jne 46ef80 : continue; : } : : isnull[attnum] = false; : : if (!slow && thisatt->attcacheoff >= 0) 0.04 : 46efc5: 40 84 ff test %dil,%dil : isnull[attnum] = true; : slow = true; /* can't use attcacheoff anymore */ : continue; : } : : isnull[attnum] = false; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1095 2.19 : 46efc8: 41 c6 04 33 00 movb $0x0,(%r11,%rsi,1) : : if (!slow && thisatt->attcacheoff >= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1097 4.16 : 46efcd: 0f 85 7d 00 00 00 jne 46f050 0.00 : 46efd3: 8b 42 54 mov 0x54(%rdx),%eax 3.34 : 46efd6: 85 c0 test %eax,%eax 0.00 : 46efd8: 78 76 js 46f050 : off = thisatt->attcacheoff; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1098 2.16 : 46efda: 48 63 d8 movslq %eax,%rbx : : if (!slow) : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 2.86 : 46efdd: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 1.37 : 46efe1: 49 8d 44 1d 00 lea 0x0(%r13,%rbx,1),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 7.43 : 46efe6: 74 28 je 46f010 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 0.85 : 46efe8: 0f b7 42 4c movzwl 0x4c(%rdx),%eax 1.37 : 46efec: 66 83 f8 08 cmp $0x8,%ax 0.00 : 46eff0: 0f 84 3a 01 00 00 je 46f130 0.07 : 46eff6: 66 83 f8 04 cmp $0x4,%ax 0.00 : 46effa: 0f 84 90 01 00 00 je 46f190 0.00 : 46f000: 66 83 f8 02 cmp $0x2,%ax 0.00 : 46f004: 0f 84 a6 01 00 00 je 46f1b0 0.00 : 46f00a: 41 0f b6 44 1d 00 movzbl 0x0(%r13,%rbx,1),%eax 3.34 : 46f010: 48 8b 4d d0 mov -0x30(%rbp),%rcx 0.41 : 46f014: 48 89 04 f1 mov %rax,(%rcx,%rsi,8) : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 12.19 : 46f018: 0f b7 42 4c movzwl 0x4c(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 1.49 : 46f01c: 66 85 c0 test %ax,%ax 0.00 : 46f01f: 7e 6f jle 46f090 0.00 : 46f021: 48 0f bf c0 movswq %ax,%rax : slow = slot->tts_slow; : } : : tp = (char *) tup + tup->t_hoff; : : for (; attnum < natts; attnum++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.41 : 46f025: 41 83 c4 01 add $0x1,%r12d : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 2.27 : 46f029: 48 01 c3 add %rax,%rbx : slow = slot->tts_slow; : } : : tp = (char *) tup + tup->t_hoff; : : for (; attnum < natts; attnum++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1083 1.56 : 46f02c: 45 39 e7 cmp %r12d,%r15d 0.00 : 46f02f: 7f 88 jg 46efb9 : * re-computing information about previously extracted attributes. : * slot->tts_nvalid is the number of attributes already extracted. : */ : static void : slot_deform_tuple(TupleTableSlot *slot, int natts) : { 0.04 : 46f031: 44 89 fe mov %r15d,%esi : : /* : * Save state for next execution : */ : slot->tts_nvalid = attnum; : slot->tts_off = off; 0.26 : 46f034: 49 89 5e 58 mov %rbx,0x58(%r14) : } : : /* : * Save state for next execution : */ : slot->tts_nvalid = attnum; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1137 0.82 : 46f038: 41 89 76 24 mov %esi,0x24(%r14) : slot->tts_off = off; : slot->tts_slow = slow; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1139 0.74 : 46f03c: 41 88 7e 07 mov %dil,0x7(%r14) : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.74 : 46f040: 48 83 c4 28 add $0x28,%rsp 0.19 : 46f044: 5b pop %rbx 0.85 : 46f045: 41 5c pop %r12 0.22 : 46f047: 41 5d pop %r13 0.11 : 46f049: 41 5e pop %r14 0.22 : 46f04b: 41 5f pop %r15 0.63 : 46f04d: c9 leaveq 0.59 : 46f04e: c3 retq 0.00 : 46f04f: 90 nop : : isnull[attnum] = false; : : if (!slow && thisatt->attcacheoff >= 0) : off = thisatt->attcacheoff; : else if (thisatt->attlen == -1) 0.00 : 46f050: 66 83 7a 4c ff cmpw $0xffff,0x4c(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1099 3.46 : 46f055: 74 71 je 46f0c8 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1120 0.56 : 46f057: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.00 : 46f05b: 3c 69 cmp $0x69,%al 0.00 : 46f05d: 0f 84 1d 01 00 00 je 46f180 0.00 : 46f063: 3c 63 cmp $0x63,%al 0.00 : 46f065: 74 10 je 46f077 0.00 : 46f067: 3c 64 cmp $0x64,%al 0.00 : 46f069: 0f 84 51 01 00 00 je 46f1c0 0.00 : 46f06f: 48 83 c3 01 add $0x1,%rbx 0.00 : 46f073: 48 83 e3 fe and $0xfffffffffffffffe,%rbx : : if (!slow) 0.04 : 46f077: 40 84 ff test %dil,%dil 0.00 : 46f07a: 0f 85 5d ff ff ff jne 46efdd : thisatt->attcacheoff = off; 0.00 : 46f080: 89 5a 54 mov %ebx,0x54(%rdx) 0.00 : 46f083: e9 55 ff ff ff jmpq 46efdd 0.00 : 46f088: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46f08f: 00 : } : : values[attnum] = fetchatt(thisatt, tp + off); : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.04 : 46f090: 66 83 c0 01 add $0x1,%ax 0.00 : 46f094: 0f 85 a6 00 00 00 jne 46f140 0.19 : 46f09a: 41 0f b6 44 1d 00 movzbl 0x0(%r13,%rbx,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1128 1.15 : 46f0a0: 3c 01 cmp $0x1,%al 0.00 : 46f0a2: 0f 84 50 01 00 00 je 46f1f8 0.33 : 46f0a8: a8 01 test $0x1,%al 0.00 : 46f0aa: 0f 85 20 01 00 00 jne 46f1d0 0.00 : 46f0b0: 41 8b 44 1d 00 mov 0x0(%r13,%rbx,1),%eax 0.00 : 46f0b5: c1 e8 02 shr $0x2,%eax 0.00 : 46f0b8: 89 c0 mov %eax,%eax 0.37 : 46f0ba: 48 8d 1c 18 lea (%rax,%rbx,1),%rbx 0.07 : 46f0be: e9 ad 00 00 00 jmpq 46f170 0.00 : 46f0c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be no : * pad bytes in any case: then the offset will be valid for either : * an aligned or unaligned value. : */ : if (!slow && 0.41 : 46f0c8: 40 84 ff test %dil,%dil 0.00 : 46f0cb: 75 26 jne 46f0f3 0.00 : 46f0cd: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.00 : 46f0d1: 3c 69 cmp $0x69,%al 0.00 : 46f0d3: 0f 84 4f 01 00 00 je 46f228 0.00 : 46f0d9: 3c 63 cmp $0x63,%al 0.00 : 46f0db: 74 a3 je 46f080 0.00 : 46f0dd: 3c 64 cmp $0x64,%al 0.00 : 46f0df: 90 nop 0.00 : 46f0e0: 0f 84 52 01 00 00 je 46f238 0.00 : 46f0e6: 48 8d 43 01 lea 0x1(%rbx),%rax 0.00 : 46f0ea: 48 83 e0 fe and $0xfffffffffffffffe,%rax 0.00 : 46f0ee: 48 39 d8 cmp %rbx,%rax 0.00 : 46f0f1: 74 8d je 46f080 : off == att_align_nominal(off, thisatt->attalign)) : thisatt->attcacheoff = off; : else : { : off = att_align_pointer(off, thisatt->attalign, -1, 0.33 : 46f0f3: 41 80 7c 1d 00 00 cmpb $0x0,0x0(%r13,%rbx,1) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1112 0.59 : 46f0f9: 0f 85 a1 00 00 00 jne 46f1a0 0.00 : 46f0ff: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.00 : 46f103: 3c 69 cmp $0x69,%al 0.00 : 46f105: 0f 84 d5 00 00 00 je 46f1e0 0.00 : 46f10b: 3c 63 cmp $0x63,%al 0.00 : 46f10d: 0f 1f 00 nopl (%rax) 0.00 : 46f110: 0f 84 8a 00 00 00 je 46f1a0 0.00 : 46f116: 3c 64 cmp $0x64,%al 0.00 : 46f118: 0f 84 27 01 00 00 je 46f245 0.00 : 46f11e: 48 83 c3 01 add $0x1,%rbx 0.00 : 46f122: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46f127: 48 83 e3 fe and $0xfffffffffffffffe,%rbx 0.00 : 46f12b: e9 ad fe ff ff jmpq 46efdd : : if (!slow) : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); 0.00 : 46f130: 49 8b 44 1d 00 mov 0x0(%r13,%rbx,1),%rax 0.00 : 46f135: e9 d6 fe ff ff jmpq 46f010 0.00 : 46f13a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.00 : 46f140: 49 8d 7c 1d 00 lea 0x0(%r13,%rbx,1),%rdi 0.00 : 46f145: 4c 89 45 c8 mov %r8,-0x38(%rbp) 0.00 : 46f149: 4c 89 4d c0 mov %r9,-0x40(%rbp) 0.00 : 46f14d: 44 88 55 b8 mov %r10b,-0x48(%rbp) 0.00 : 46f151: 4c 89 5d b0 mov %r11,-0x50(%rbp) 0.00 : 46f155: e8 f6 a6 ff ff callq 469850 0.00 : 46f15a: 44 0f b6 55 b8 movzbl -0x48(%rbp),%r10d 0.00 : 46f15f: 4c 8b 45 c8 mov -0x38(%rbp),%r8 0.00 : 46f163: 48 8d 5c 03 01 lea 0x1(%rbx,%rax,1),%rbx 0.00 : 46f168: 4c 8b 4d c0 mov -0x40(%rbp),%r9 0.00 : 46f16c: 4c 8b 5d b0 mov -0x50(%rbp),%r11 : * Save state for next execution : */ : slot->tts_nvalid = attnum; : slot->tts_off = off; : slot->tts_slow = slow; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1140 0.74 : 46f170: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46f175: e9 36 fe ff ff jmpq 46efb0 0.00 : 46f17a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); 0.11 : 46f180: 48 83 c3 03 add $0x3,%rbx 0.00 : 46f184: 48 83 e3 fc and $0xfffffffffffffffc,%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1120 1.23 : 46f188: e9 ea fe ff ff jmpq 46f077 0.00 : 46f18d: 0f 1f 00 nopl (%rax) : : if (!slow) : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 3.31 : 46f190: 41 8b 44 1d 00 mov 0x0(%r13,%rbx,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1126 7.58 : 46f195: e9 76 fe ff ff jmpq 46f010 0.00 : 46f19a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); : : if (!slow) : thisatt->attcacheoff = off; 0.22 : 46f1a0: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46f1a5: e9 33 fe ff ff jmpq 46efdd 0.00 : 46f1aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : values[attnum] = fetchatt(thisatt, tp + off); 0.00 : 46f1b0: 41 0f b7 44 1d 00 movzwl 0x0(%r13,%rbx,1),%eax 0.00 : 46f1b6: e9 55 fe ff ff jmpq 46f010 0.00 : 46f1bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, thisatt->attalign); 0.00 : 46f1c0: 48 83 c3 07 add $0x7,%rbx 0.00 : 46f1c4: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx 0.00 : 46f1c8: e9 aa fe ff ff jmpq 46f077 0.00 : 46f1cd: 0f 1f 00 nopl (%rax) : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.30 : 46f1d0: d0 e8 shr %al 0.00 : 46f1d2: 0f b6 c0 movzbl %al,%eax 0.19 : 46f1d5: e9 e0 fe ff ff jmpq 46f0ba 0.00 : 46f1da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (!slow && : off == att_align_nominal(off, thisatt->attalign)) : thisatt->attcacheoff = off; : else : { : off = att_align_pointer(off, thisatt->attalign, -1, 0.00 : 46f1e0: 48 83 c3 03 add $0x3,%rbx 0.00 : 46f1e4: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46f1e9: 48 83 e3 fc and $0xfffffffffffffffc,%rbx 0.00 : 46f1ed: e9 eb fd ff ff jmpq 46efdd 0.00 : 46f1f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : thisatt->attcacheoff = off; : } : : values[attnum] = fetchatt(thisatt, tp + off); : : off = att_addlength_pointer(off, thisatt->attlen, tp + off); 0.00 : 46f1f8: 41 0f b6 54 1d 01 movzbl 0x1(%r13,%rbx,1),%edx 0.00 : 46f1fe: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 46f203: 80 fa 01 cmp $0x1,%dl 0.00 : 46f206: 0f 84 ae fe ff ff je 46f0ba 0.00 : 46f20c: 80 fa 12 cmp $0x12,%dl 0.00 : 46f20f: b8 03 00 00 00 mov $0x3,%eax 0.00 : 46f214: ba 12 00 00 00 mov $0x12,%edx 0.00 : 46f219: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 46f21d: e9 98 fe ff ff jmpq 46f0ba 0.00 : 46f222: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be no : * pad bytes in any case: then the offset will be valid for either : * an aligned or unaligned value. : */ : if (!slow && 0.00 : 46f228: 48 8d 43 03 lea 0x3(%rbx),%rax 0.00 : 46f22c: 48 83 e0 fc and $0xfffffffffffffffc,%rax 0.00 : 46f230: e9 b9 fe ff ff jmpq 46f0ee 0.00 : 46f235: 0f 1f 00 nopl (%rax) 0.00 : 46f238: 48 8d 43 07 lea 0x7(%rbx),%rax 0.00 : 46f23c: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 46f240: e9 a9 fe ff ff jmpq 46f0ee : off == att_align_nominal(off, thisatt->attalign)) : thisatt->attcacheoff = off; : else : { : off = att_align_pointer(off, thisatt->attalign, -1, 0.00 : 46f245: 48 83 c3 07 add $0x7,%rbx 0.00 : 46f249: bf 01 00 00 00 mov $0x1,%edi 0.00 : 46f24e: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx 0.00 : 46f252: e9 86 fd ff ff jmpq 46efdd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.78 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 6.73 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3745 5.91 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3649 5.54 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 5.54 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 5.13 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3643 4.88 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 4.84 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3649 3.90 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3643 3.86 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 3.86 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3643 3.65 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3745 3.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 2.99 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3761 2.75 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3774 2.71 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 2.46 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 2.21 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 2.13 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 1.76 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 1.52 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3623 1.44 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2816 1.15 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3577 1.11 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 1.07 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3614 0.82 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 0.62 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3772 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005558f0 : : * : * NOTE: force_not_null option are not applied to the returned fields. : */ : bool : NextCopyFromRawFields(CopyState cstate, char ***fields, int *nfields) : { 0.08 : 5558f0: 55 push %rbp 0.29 : 5558f1: 48 89 e5 mov %rsp,%rbp 0.04 : 5558f4: 41 57 push %r15 0.16 : 5558f6: 49 89 ff mov %rdi,%r15 0.00 : 5558f9: 41 56 push %r14 0.04 : 5558fb: 41 55 push %r13 0.04 : 5558fd: 41 54 push %r12 0.00 : 5558ff: 53 push %rbx 0.04 : 555900: 48 83 ec 58 sub $0x58,%rsp 0.08 : 555904: 48 89 75 b8 mov %rsi,-0x48(%rbp) 0.00 : 555908: 48 89 55 b0 mov %rdx,-0x50(%rbp) : : /* only available for text or csv input */ : Assert(!cstate->binary); : : /* on input just throw the header line away */ : if (cstate->cur_lineno == 0 && cstate->header_line) 0.16 : 55590c: 8b 87 d8 00 00 00 mov 0xd8(%rdi),%eax 0.00 : 555912: 85 c0 test %eax,%eax 0.00 : 555914: 75 0a jne 555920 0.00 : 555916: 80 7f 4d 00 cmpb $0x0,0x4d(%rdi) 0.00 : 55591a: 0f 85 c0 02 00 00 jne 555be0 : cstate->cur_lineno++; : if (CopyReadLine(cstate)) : return false; /* done */ : } : : cstate->cur_lineno++; 0.00 : 555920: 83 c0 01 add $0x1,%eax : : /* Actually read the line into memory here */ : done = CopyReadLine(cstate); 0.00 : 555923: 4c 89 ff mov %r15,%rdi : cstate->cur_lineno++; : if (CopyReadLine(cstate)) : return false; /* done */ : } : : cstate->cur_lineno++; 0.08 : 555926: 41 89 87 d8 00 00 00 mov %eax,0xd8(%r15) : : /* Actually read the line into memory here */ : done = CopyReadLine(cstate); 0.00 : 55592d: e8 3e f7 ff ff callq 555070 : /* : * EOF at start of line means we're done. If we see EOF after some : * characters, we act as though it was newline followed by EOF, ie, : * process the line and then exit loop on next iteration. : */ : if (done && cstate->line_buf.len == 0) 0.29 : 555932: 84 c0 test %al,%al 0.00 : 555934: 74 0f je 555945 0.00 : 555936: 41 8b bf a0 01 00 00 mov 0x1a0(%r15),%edi 0.00 : 55593d: 85 ff test %edi,%edi 0.00 : 55593f: 0f 84 bb 02 00 00 je 555c00 : return false; : : /* Parse the line into de-escaped field values */ : if (cstate->csv_mode) 0.12 : 555945: 41 80 7f 4c 00 cmpb $0x0,0x4c(%r15) 0.12 : 55594a: 0f 84 80 01 00 00 je 555ad0 : * "standard" (i.e. common) CSV usage. : */ : static int : CopyReadAttributesCSV(CopyState cstate) : { : char delimc = cstate->delim[0]; 0.00 : 555950: 49 8b 47 68 mov 0x68(%r15),%rax 0.00 : 555954: 0f b6 00 movzbl (%rax),%eax 0.00 : 555957: 88 45 c7 mov %al,-0x39(%rbp) : char quotec = cstate->quote[0]; 0.00 : 55595a: 49 8b 47 70 mov 0x70(%r15),%rax : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) 0.00 : 55595e: 41 8b b7 88 01 00 00 mov 0x188(%r15),%esi : */ : static int : CopyReadAttributesCSV(CopyState cstate) : { : char delimc = cstate->delim[0]; : char quotec = cstate->quote[0]; 0.00 : 555965: 44 0f b6 30 movzbl (%rax),%r14d : char escapec = cstate->escape[0]; 0.00 : 555969: 49 8b 47 78 mov 0x78(%r15),%rax : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) 0.00 : 55596d: 85 f6 test %esi,%esi : static int : CopyReadAttributesCSV(CopyState cstate) : { : char delimc = cstate->delim[0]; : char quotec = cstate->quote[0]; : char escapec = cstate->escape[0]; 0.00 : 55596f: 44 0f b6 00 movzbl (%rax),%r8d : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) 0.00 : 555973: 0f 8e 6c 04 00 00 jle 555de5 : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("extra data after last expected column"))); : return 0; : } : : resetStringInfo(&cstate->attribute_buf); 0.00 : 555979: 49 8d 9f 70 01 00 00 lea 0x170(%r15),%rbx 0.00 : 555980: 44 88 45 98 mov %r8b,-0x68(%rbp) 0.00 : 555984: 48 89 df mov %rbx,%rdi 0.00 : 555987: e8 94 c1 07 00 callq 5d1b20 : * data line, so we can just force attribute_buf to be large enough and : * then transfer data without any checks for enough space. We need to do : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) 0.00 : 55598c: 41 8b b7 a0 01 00 00 mov 0x1a0(%r15),%esi 0.00 : 555993: 41 39 b7 7c 01 00 00 cmp %esi,0x17c(%r15) 0.00 : 55599a: 44 0f b6 45 98 movzbl -0x68(%rbp),%r8d 0.00 : 55599f: 0f 8e a1 06 00 00 jle 556046 : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); : output_ptr = cstate->attribute_buf.data; : : /* set pointer variables for loop */ : cur_ptr = cstate->line_buf.data; 0.00 : 5559a5: 4d 8b 8f 98 01 00 00 mov 0x198(%r15),%r9 : line_end_ptr = cstate->line_buf.data + cstate->line_buf.len; 0.00 : 5559ac: 48 63 c6 movslq %esi,%rax : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); : output_ptr = cstate->attribute_buf.data; 0.00 : 5559af: 4d 8b a7 70 01 00 00 mov 0x170(%r15),%r12 : : /* set pointer variables for loop */ : cur_ptr = cstate->line_buf.data; : line_end_ptr = cstate->line_buf.data + cstate->line_buf.len; 0.00 : 5559b6: 45 31 d2 xor %r10d,%r10d 0.00 : 5559b9: 4d 8d 2c 01 lea (%r9,%rax,1),%r13 : char *start_ptr; : char *end_ptr; : int input_len; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) 0.00 : 5559bd: 41 8b 87 88 01 00 00 mov 0x188(%r15),%eax 0.00 : 5559c4: 44 39 d0 cmp %r10d,%eax 0.00 : 5559c7: 0f 8e 61 05 00 00 jle 555f2e : repalloc(cstate->raw_fields, cstate->max_fields * sizeof(char *)); : } : : /* Remember start of field on both input and output sides */ : start_ptr = cur_ptr; : cstate->raw_fields[fieldno] = output_ptr; 0.00 : 5559cd: 49 63 c2 movslq %r10d,%rax : : /* Not in quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 5559d0: 45 31 db xor %r11d,%r11d 0.00 : 5559d3: 4d 39 cd cmp %r9,%r13 : repalloc(cstate->raw_fields, cstate->max_fields * sizeof(char *)); : } : : /* Remember start of field on both input and output sides */ : start_ptr = cur_ptr; : cstate->raw_fields[fieldno] = output_ptr; 0.00 : 5559d6: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 5559da: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax : : /* Not in quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 5559e1: 4c 89 cb mov %r9,%rbx : repalloc(cstate->raw_fields, cstate->max_fields * sizeof(char *)); : } : : /* Remember start of field on both input and output sides */ : start_ptr = cur_ptr; : cstate->raw_fields[fieldno] = output_ptr; 0.00 : 5559e4: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 5559e8: 4c 89 24 d0 mov %r12,(%rax,%rdx,8) : : /* Not in quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 5559ec: 0f 86 fc 06 00 00 jbe 5560ee : goto endfield; : c = *cur_ptr++; 0.00 : 5559f2: 41 0f b6 01 movzbl (%r9),%eax : /* unquoted field delimiter */ : if (c == delimc) 0.00 : 5559f6: 31 c9 xor %ecx,%ecx : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : goto endfield; : c = *cur_ptr++; 0.00 : 5559f8: 49 8d 59 01 lea 0x1(%r9),%rbx : /* unquoted field delimiter */ : if (c == delimc) 0.00 : 5559fc: 38 45 c7 cmp %al,-0x39(%rbp) 0.00 : 5559ff: 75 33 jne 555a34 0.00 : 555a01: e9 e2 06 00 00 jmpq 5560e8 0.00 : 555a06: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 555a0d: 00 00 00 : { : saw_quote = true; : break; : } : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555a10: 41 88 04 24 mov %al,(%r12) 0.00 : 555a14: 48 89 da mov %rbx,%rdx 0.00 : 555a17: 49 83 c4 01 add $0x1,%r12 : : /* Not in quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555a1b: 49 39 d5 cmp %rdx,%r13 0.00 : 555a1e: 0f 86 4c 05 00 00 jbe 555f70 : goto endfield; : c = *cur_ptr++; 0.00 : 555a24: 0f b6 02 movzbl (%rdx),%eax 0.00 : 555a27: 48 8d 5a 01 lea 0x1(%rdx),%rbx : /* unquoted field delimiter */ : if (c == delimc) 0.00 : 555a2b: 38 45 c7 cmp %al,-0x39(%rbp) 0.00 : 555a2e: 0f 84 6d 05 00 00 je 555fa1 : { : found_delim = true; : goto endfield; : } : /* start of quoted field (or part of field) */ : if (c == quotec) 0.00 : 555a34: 41 38 c6 cmp %al,%r14b 0.00 : 555a37: 75 d7 jne 555a10 : : /* In quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555a39: 49 39 dd cmp %rbx,%r13 0.00 : 555a3c: 76 5a jbe 555a98 : ereport(ERROR, 0.00 : 555a3e: 49 8d 4c 24 01 lea 0x1(%r12),%rcx 0.00 : 555a43: eb 20 jmp 555a65 0.00 : 555a45: 0f 1f 00 nopl (%rax) : /* : * end of quoted field. Must do this test after testing for : * escape in case quote char and escape char are the same : * (which is the common case). : */ : if (c == quotec) 0.00 : 555a48: 41 38 c6 cmp %al,%r14b 0.00 : 555a4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 555a50: 0f 84 2a 04 00 00 je 555e80 : break; : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555a56: 88 41 ff mov %al,-0x1(%rcx) : { : saw_quote = true; : break; : } : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555a59: 48 83 c1 01 add $0x1,%rcx : : /* In quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555a5d: 49 39 d5 cmp %rdx,%r13 0.00 : 555a60: 76 36 jbe 555a98 0.00 : 555a62: 48 89 d3 mov %rdx,%rbx : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("unterminated CSV quoted field"))); : : c = *cur_ptr++; 0.00 : 555a65: 0f b6 03 movzbl (%rbx),%eax : /* In quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : ereport(ERROR, 0.00 : 555a68: 4c 8d 61 ff lea -0x1(%rcx),%r12 : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("unterminated CSV quoted field"))); : : c = *cur_ptr++; 0.00 : 555a6c: 48 8d 53 01 lea 0x1(%rbx),%rdx : : /* escape within a quoted field */ : if (c == escapec) 0.00 : 555a70: 41 38 c0 cmp %al,%r8b 0.00 : 555a73: 75 d3 jne 555a48 : { : /* : * peek at the next char if available, and escape it if it : * is an escape char or a quote char : */ : if (cur_ptr < line_end_ptr) 0.00 : 555a75: 49 39 d5 cmp %rdx,%r13 0.00 : 555a78: 76 ce jbe 555a48 : { : char nextc = *cur_ptr; 0.00 : 555a7a: 0f b6 32 movzbl (%rdx),%esi : : if (nextc == escapec || nextc == quotec) 0.00 : 555a7d: 41 38 f0 cmp %sil,%r8b 0.00 : 555a80: 74 05 je 555a87 0.00 : 555a82: 41 38 f6 cmp %sil,%r14b 0.00 : 555a85: 75 c1 jne 555a48 : { : *output_ptr++ = nextc; : cur_ptr++; 0.00 : 555a87: 48 83 c2 01 add $0x1,%rdx : { : char nextc = *cur_ptr; : : if (nextc == escapec || nextc == quotec) : { : *output_ptr++ = nextc; 0.00 : 555a8b: 40 88 71 ff mov %sil,-0x1(%rcx) : { : saw_quote = true; : break; : } : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555a8f: 48 83 c1 01 add $0x1,%rcx : : /* In quote */ : for (;;) : { : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555a93: 49 39 d5 cmp %rdx,%r13 0.00 : 555a96: 77 ca ja 555a62 : ereport(ERROR, 0.00 : 555a98: 45 31 c0 xor %r8d,%r8d 0.00 : 555a9b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 555aa0: b9 40 9d 87 00 mov $0x879d40,%ecx 0.00 : 555aa5: ba 38 0f 00 00 mov $0xf38,%edx 0.00 : 555aaa: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 555aaf: e8 0c 50 22 00 callq 77aac0 0.00 : 555ab4: 84 c0 test %al,%al 0.00 : 555ab6: bf 7f 89 87 00 mov $0x87897f,%edi 0.00 : 555abb: 0f 85 96 03 00 00 jne 555e57 : * line is empty, and return. : */ : if (cstate->max_fields <= 0) : { : if (cstate->line_buf.len != 0) : ereport(ERROR, 0.00 : 555ac1: e8 0a 3a f1 ff callq 4694d0 0.00 : 555ac6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 555acd: 00 00 00 : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) 0.12 : 555ad0: 41 8b 97 88 01 00 00 mov 0x188(%r15),%edx : * The return value is the number of fields actually read. : */ : static int : CopyReadAttributesText(CopyState cstate) : { : char delimc = cstate->delim[0]; 0.00 : 555ad7: 49 8b 47 68 mov 0x68(%r15),%rax : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) 0.00 : 555adb: 85 d2 test %edx,%edx : * The return value is the number of fields actually read. : */ : static int : CopyReadAttributesText(CopyState cstate) : { : char delimc = cstate->delim[0]; 0.00 : 555add: 44 0f b6 08 movzbl (%rax),%r9d : : /* : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3577 1.15 : 555ae1: 0f 8e 39 03 00 00 jle 555e20 : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("extra data after last expected column"))); : return 0; : } : : resetStringInfo(&cstate->attribute_buf); 0.00 : 555ae7: 49 8d 9f 70 01 00 00 lea 0x170(%r15),%rbx 0.00 : 555aee: 44 88 4d 90 mov %r9b,-0x70(%rbp) 0.08 : 555af2: 48 89 df mov %rbx,%rdi 0.00 : 555af5: e8 26 c0 07 00 callq 5d1b20 : * data line, so we can just force attribute_buf to be large enough and : * then transfer data without any checks for enough space. We need to do : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) 0.00 : 555afa: 41 8b b7 a0 01 00 00 mov 0x1a0(%r15),%esi 0.00 : 555b01: 41 39 b7 7c 01 00 00 cmp %esi,0x17c(%r15) 0.37 : 555b08: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.12 : 555b0d: 0f 8e 15 05 00 00 jle 556028 : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); : output_ptr = cstate->attribute_buf.data; : : /* set pointer variables for loop */ : cur_ptr = cstate->line_buf.data; 0.00 : 555b13: 4d 8b 87 98 01 00 00 mov 0x198(%r15),%r8 : line_end_ptr = cstate->line_buf.data + cstate->line_buf.len; 0.04 : 555b1a: 48 63 c6 movslq %esi,%rax 0.00 : 555b1d: 45 31 d2 xor %r10d,%r10d : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); : output_ptr = cstate->attribute_buf.data; 0.12 : 555b20: 49 8b 9f 70 01 00 00 mov 0x170(%r15),%rbx : : /* set pointer variables for loop */ : cur_ptr = cstate->line_buf.data; : line_end_ptr = cstate->line_buf.data + cstate->line_buf.len; 0.04 : 555b27: 4d 8d 34 00 lea (%r8,%rax,1),%r14 : char *end_ptr; : int input_len; : bool saw_non_ascii = false; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) 0.00 : 555b2b: 41 8b 87 88 01 00 00 mov 0x188(%r15),%eax 0.08 : 555b32: 44 39 d0 cmp %r10d,%eax 0.00 : 555b35: 0f 8e 30 01 00 00 jle 555c6b 0.16 : 555b3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : repalloc(cstate->raw_fields, cstate->max_fields * sizeof(char *)); : } : : /* Remember start of field on both input and output sides */ : start_ptr = cur_ptr; : cstate->raw_fields[fieldno] = output_ptr; 0.25 : 555b40: 49 63 ca movslq %r10d,%rcx : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.37 : 555b43: 4d 39 c6 cmp %r8,%r14 : repalloc(cstate->raw_fields, cstate->max_fields * sizeof(char *)); : } : : /* Remember start of field on both input and output sides */ : start_ptr = cur_ptr; : cstate->raw_fields[fieldno] = output_ptr; 0.25 : 555b46: 48 89 4d a0 mov %rcx,-0x60(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3623 1.52 : 555b4a: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax 0.16 : 555b51: 48 89 1c c8 mov %rbx,(%rax,%rcx,8) : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 8.78 : 555b55: 0f 86 67 05 00 00 jbe 5560c2 : break; : c = *cur_ptr++; 0.16 : 555b5b: 41 0f b6 08 movzbl (%r8),%ecx 0.00 : 555b5f: 4d 8d 60 01 lea 0x1(%r8),%r12 : if (c == delimc) 0.04 : 555b63: 41 38 c9 cmp %cl,%r9b 0.00 : 555b66: 0f 84 46 05 00 00 je 5560b2 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 2.13 : 555b6c: 4c 8d 6b 01 lea 0x1(%rbx),%r13 0.21 : 555b70: 4c 89 c2 mov %r8,%rdx 0.00 : 555b73: 45 31 db xor %r11d,%r11d 0.00 : 555b76: eb 35 jmp 555bad 0.00 : 555b78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 555b7f: 00 : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 3.86 : 555b80: 4d 39 e6 cmp %r12,%r14 : */ : } : } : : /* Add c to output string */ : *output_ptr++ = c; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3745 3.65 : 555b83: 41 88 4d ff mov %cl,-0x1(%r13) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3745 6.73 : 555b87: 4c 89 eb mov %r13,%rbx : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 5.54 : 555b8a: 0f 86 35 01 00 00 jbe 555cc5 : break; : c = *cur_ptr++; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3643 5.13 : 555b90: 41 0f b6 0c 24 movzbl (%r12),%ecx /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3643 3.86 : 555b95: 49 83 c5 01 add $0x1,%r13 3.90 : 555b99: 49 8d 44 24 01 lea 0x1(%r12),%rax : if (c == delimc) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 4.88 : 555b9e: 41 38 c9 cmp %cl,%r9b 0.00 : 555ba1: 0f 84 e9 02 00 00 je 555e90 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 5.54 : 555ba7: 4c 89 e2 mov %r12,%rdx /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 2.71 : 555baa: 49 89 c4 mov %rax,%r12 : { : found_delim = true; : break; : } : if (c == '\\') /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3649 5.91 : 555bad: 80 f9 5c cmp $0x5c,%cl : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : break; : c = *cur_ptr++; : if (c == delimc) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 3.57 : 555bb0: 49 8d 5d ff lea -0x1(%r13),%rbx : { : found_delim = true; : break; : } : if (c == '\\') /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3649 4.84 : 555bb4: 75 ca jne 555b80 : { : if (cur_ptr >= line_end_ptr) 0.00 : 555bb6: 4d 39 e6 cmp %r12,%r14 0.00 : 555bb9: 0f 86 09 01 00 00 jbe 555cc8 : break; : c = *cur_ptr++; 0.00 : 555bbf: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 555bc4: 49 83 c4 01 add $0x1,%r12 : switch (c) 0.00 : 555bc8: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 555bcb: 3c 48 cmp $0x48,%al 0.00 : 555bcd: 77 b1 ja 555b80 0.00 : 555bcf: 0f b6 c0 movzbl %al,%eax 0.00 : 555bd2: ff 24 c5 58 9a 87 00 jmpq *0x879a58(,%rax,8) 0.00 : 555bd9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : Assert(!cstate->binary); : : /* on input just throw the header line away */ : if (cstate->cur_lineno == 0 && cstate->header_line) : { : cstate->cur_lineno++; 0.00 : 555be0: c7 87 d8 00 00 00 01 movl $0x1,0xd8(%rdi) 0.00 : 555be7: 00 00 00 : if (CopyReadLine(cstate)) 0.00 : 555bea: e8 81 f4 ff ff callq 555070 0.00 : 555bef: 84 c0 test %al,%al 0.00 : 555bf1: 75 0d jne 555c00 0.00 : 555bf3: 41 8b 87 d8 00 00 00 mov 0xd8(%r15),%eax 0.00 : 555bfa: e9 21 fd ff ff jmpq 555920 0.00 : 555bff: 90 nop : fldct = CopyReadAttributesText(cstate); : : *fields = cstate->raw_fields; : *nfields = fldct; : return true; : } 0.00 : 555c00: 48 83 c4 58 add $0x58,%rsp : fldct = CopyReadAttributesCSV(cstate); : else : fldct = CopyReadAttributesText(cstate); : : *fields = cstate->raw_fields; : *nfields = fldct; 0.00 : 555c04: 31 c0 xor %eax,%eax : return true; : } 0.00 : 555c06: 5b pop %rbx 0.00 : 555c07: 41 5c pop %r12 0.00 : 555c09: 41 5d pop %r13 0.00 : 555c0b: 41 5e pop %r14 0.00 : 555c0d: 41 5f pop %r15 0.00 : 555c0f: c9 leaveq 0.00 : 555c10: c3 retq 0.00 : 555c11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : saw_non_ascii = true; : } : break; : case 'x': : /* Handle \x3F */ : if (cur_ptr < line_end_ptr) 0.00 : 555c18: 4d 39 e6 cmp %r12,%r14 0.00 : 555c1b: 0f 87 bf 02 00 00 ja 555ee0 : */ : } : } : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555c21: 44 89 e2 mov %r12d,%edx 0.00 : 555c24: c6 03 78 movb $0x78,(%rbx) 0.00 : 555c27: 45 31 ed xor %r13d,%r13d 0.00 : 555c2a: 48 83 c3 01 add $0x1,%rbx 0.00 : 555c2e: 44 29 c2 sub %r8d,%edx : } : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; : if (input_len == cstate->null_print_len && 0.25 : 555c31: 41 39 57 58 cmp %edx,0x58(%r15) 0.00 : 555c35: 0f 84 9d 00 00 00 je 555cd8 : * At this point we know the field is supposed to contain data. : * : * If we de-escaped any non-7-bit-ASCII chars, make sure the : * resulting string is valid data for the db encoding. : */ : if (saw_non_ascii) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3761 2.99 : 555c3b: 45 84 db test %r11b,%r11b 0.00 : 555c3e: 0f 85 64 02 00 00 jne 555ea8 : } : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; : : fieldno++; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3772 0.62 : 555c44: 41 83 c2 01 add $0x1,%r10d : /* Done if we hit EOL instead of a delim */ : if (!found_delim) 0.25 : 555c48: 45 84 ed test %r13b,%r13b : pg_verifymbstr(fld, output_ptr - fld, false); : } : } : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.41 : 555c4b: c6 03 00 movb $0x0,(%rbx) : : fieldno++; : /* Done if we hit EOL instead of a delim */ : if (!found_delim) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3774 2.75 : 555c4e: 0f 84 dc 00 00 00 je 555d30 : char *end_ptr; : int input_len; : bool saw_non_ascii = false; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) 0.29 : 555c54: 41 8b 87 88 01 00 00 mov 0x188(%r15),%eax : pg_verifymbstr(fld, output_ptr - fld, false); : } : } : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.33 : 555c5b: 48 83 c3 01 add $0x1,%rbx 0.25 : 555c5f: 4d 89 e0 mov %r12,%r8 : char *end_ptr; : int input_len; : bool saw_non_ascii = false; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3614 1.07 : 555c62: 44 39 d0 cmp %r10d,%eax 0.00 : 555c65: 0f 8f d5 fe ff ff jg 555b40 : { : cstate->max_fields *= 2; 0.00 : 555c6b: 8d 34 00 lea (%rax,%rax,1),%esi : cstate->raw_fields = 0.00 : 555c6e: 49 8b bf 90 01 00 00 mov 0x190(%r15),%rdi : bool saw_non_ascii = false; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) : { : cstate->max_fields *= 2; 0.00 : 555c75: 41 89 b7 88 01 00 00 mov %esi,0x188(%r15) : cstate->raw_fields = 0.00 : 555c7c: 48 63 f6 movslq %esi,%rsi 0.00 : 555c7f: 4c 89 45 98 mov %r8,-0x68(%rbp) 0.00 : 555c83: 44 88 4d 90 mov %r9b,-0x70(%rbp) 0.00 : 555c87: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555c8b: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 555c8f: e8 5c 30 24 00 callq 798cf0 0.00 : 555c94: 49 89 87 90 01 00 00 mov %rax,0x190(%r15) 0.00 : 555c9b: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555c9f: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 555ca4: 4c 8b 45 98 mov -0x68(%rbp),%r8 0.00 : 555ca8: e9 93 fe ff ff jmpq 555b40 0.00 : 555cad: 0f 1f 00 nopl (%rax) : cur_ptr++; : val = (val << 4) + GetDecimalFromHex(hexchar); : } : } : c = val & 0xff; : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 555cb0: b9 0b 00 00 00 mov $0xb,%ecx : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555cb5: 4d 39 e6 cmp %r12,%r14 : */ : } : } : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555cb8: 4c 89 eb mov %r13,%rbx 0.00 : 555cbb: 41 88 4d ff mov %cl,-0x1(%r13) : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 555cbf: 0f 87 cb fe ff ff ja 555b90 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3641 2.46 : 555cc5: 44 89 e2 mov %r12d,%edx 0.82 : 555cc8: 44 29 c2 sub %r8d,%edx 0.21 : 555ccb: 45 31 ed xor %r13d,%r13d : *output_ptr++ = c; : } : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; : if (input_len == cstate->null_print_len && 0.00 : 555cce: 41 39 57 58 cmp %edx,0x58(%r15) 0.00 : 555cd2: 0f 85 63 ff ff ff jne 555c3b 0.16 : 555cd8: 49 8b 77 50 mov 0x50(%r15),%rsi 0.00 : 555cdc: 48 63 d2 movslq %edx,%rdx 0.00 : 555cdf: 44 88 4d 90 mov %r9b,-0x70(%rbp) 0.45 : 555ce3: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.29 : 555ce7: 44 88 5d 80 mov %r11b,-0x80(%rbp) 0.00 : 555ceb: 4c 89 c7 mov %r8,%rdi 0.00 : 555cee: e8 2d 39 f1 ff callq 469620 0.00 : 555cf3: 85 c0 test %eax,%eax 0.16 : 555cf5: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 555cfa: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555cfe: 44 0f b6 5d 80 movzbl -0x80(%rbp),%r11d 0.00 : 555d03: 0f 85 32 ff ff ff jne 555c3b : strncmp(start_ptr, cstate->null_print, input_len) == 0) : cstate->raw_fields[fieldno] = NULL; 0.00 : 555d09: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax 0.00 : 555d10: 48 8b 55 a0 mov -0x60(%rbp),%rdx : } : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; : : fieldno++; 0.00 : 555d14: 41 83 c2 01 add $0x1,%r10d : /* Done if we hit EOL instead of a delim */ : if (!found_delim) 0.00 : 555d18: 45 84 ed test %r13b,%r13b : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; : if (input_len == cstate->null_print_len && : strncmp(start_ptr, cstate->null_print, input_len) == 0) : cstate->raw_fields[fieldno] = NULL; 0.00 : 555d1b: 48 c7 04 d0 00 00 00 movq $0x0,(%rax,%rdx,8) 0.00 : 555d22: 00 : pg_verifymbstr(fld, output_ptr - fld, false); : } : } : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.00 : 555d23: c6 03 00 movb $0x0,(%rbx) : : fieldno++; : /* Done if we hit EOL instead of a delim */ : if (!found_delim) 0.00 : 555d26: 0f 85 28 ff ff ff jne 555c54 0.00 : 555d2c: 0f 1f 40 00 nopl 0x0(%rax) : } : : /* Clean up state of attribute_buf */ : output_ptr--; : Assert(*output_ptr == '\0'); : cstate->attribute_buf.len = (output_ptr - cstate->attribute_buf.data); 0.00 : 555d30: 89 d8 mov %ebx,%eax 0.00 : 555d32: 41 2b 87 70 01 00 00 sub 0x170(%r15),%eax 0.45 : 555d39: 41 89 87 78 01 00 00 mov %eax,0x178(%r15) 0.08 : 555d40: e9 b2 00 00 00 jmpq 555df7 0.00 : 555d45: 0f 1f 00 nopl (%rax) : cur_ptr++; : val = (val << 4) + GetDecimalFromHex(hexchar); : } : } : c = val & 0xff; : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 555d48: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 555d4d: e9 2e fe ff ff jmpq 555b80 0.00 : 555d52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 555d58: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 555d5d: e9 1e fe ff ff jmpq 555b80 0.00 : 555d62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 555d68: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 555d6d: 0f 1f 00 nopl (%rax) 0.00 : 555d70: e9 0b fe ff ff jmpq 555b80 0.00 : 555d75: 0f 1f 00 nopl (%rax) 0.00 : 555d78: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 555d7d: 0f 1f 00 nopl (%rax) 0.00 : 555d80: e9 fb fd ff ff jmpq 555b80 0.00 : 555d85: 0f 1f 00 nopl (%rax) : if (c == '\\') : { : if (cur_ptr >= line_end_ptr) : break; : c = *cur_ptr++; : switch (c) 0.00 : 555d88: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 555d8d: 0f 1f 00 nopl (%rax) 0.00 : 555d90: e9 eb fd ff ff jmpq 555b80 0.00 : 555d95: 0f 1f 00 nopl (%rax) : case '7': : { : /* handle \013 */ : int val; : : val = OCTVALUE(c); 0.00 : 555d98: 0f be c1 movsbl %cl,%eax : if (cur_ptr < line_end_ptr) 0.00 : 555d9b: 4d 39 e6 cmp %r12,%r14 : case '7': : { : /* handle \013 */ : int val; : : val = OCTVALUE(c); 0.00 : 555d9e: 8d 50 d0 lea -0x30(%rax),%edx : if (cur_ptr < line_end_ptr) 0.00 : 555da1: 76 2d jbe 555dd0 : { : c = *cur_ptr; 0.00 : 555da3: 41 0f b6 0c 24 movzbl (%r12),%ecx : if (ISOCTAL(c)) 0.00 : 555da8: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 555dab: 3c 07 cmp $0x7,%al 0.00 : 555dad: 77 21 ja 555dd0 : { : cur_ptr++; 0.00 : 555daf: 49 83 c4 01 add $0x1,%r12 : val = (val << 3) + OCTVALUE(c); 0.00 : 555db3: 0f be c1 movsbl %cl,%eax : if (cur_ptr < line_end_ptr) 0.00 : 555db6: 4d 39 e6 cmp %r12,%r14 : { : c = *cur_ptr; : if (ISOCTAL(c)) : { : cur_ptr++; : val = (val << 3) + OCTVALUE(c); 0.00 : 555db9: 8d 54 d0 d0 lea -0x30(%rax,%rdx,8),%edx : if (cur_ptr < line_end_ptr) 0.00 : 555dbd: 76 11 jbe 555dd0 : { : c = *cur_ptr; 0.00 : 555dbf: 41 0f b6 0c 24 movzbl (%r12),%ecx : if (ISOCTAL(c)) 0.00 : 555dc4: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 555dc7: 3c 07 cmp $0x7,%al 0.00 : 555dc9: 0f 86 90 02 00 00 jbe 55605f 0.00 : 555dcf: 90 nop : } : } : } : } : c = val & 0377; : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 555dd0: 84 d2 test %dl,%dl : val = (val << 3) + OCTVALUE(c); : } : } : } : } : c = val & 0377; 0.00 : 555dd2: 89 d1 mov %edx,%ecx : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 555dd4: 0f 8f a6 fd ff ff jg 555b80 : cur_ptr++; : val = (val << 4) + GetDecimalFromHex(hexchar); : } : } : c = val & 0xff; : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 555dda: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 555de0: e9 9b fd ff ff jmpq 555b80 : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) : { : if (cstate->line_buf.len != 0) 0.00 : 555de5: 41 8b 8f a0 01 00 00 mov 0x1a0(%r15),%ecx 0.00 : 555dec: 45 31 d2 xor %r10d,%r10d 0.00 : 555def: 85 c9 test %ecx,%ecx 0.00 : 555df1: 0f 85 0c 03 00 00 jne 556103 : if (cstate->csv_mode) : fldct = CopyReadAttributesCSV(cstate); : else : fldct = CopyReadAttributesText(cstate); : : *fields = cstate->raw_fields; 0.08 : 555df7: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax 0.08 : 555dfe: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.08 : 555e02: 48 89 03 mov %rax,(%rbx) : *nfields = fldct; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2816 1.44 : 555e05: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.04 : 555e09: 44 89 10 mov %r10d,(%rax) : return true; : } 0.12 : 555e0c: 48 83 c4 58 add $0x58,%rsp : fldct = CopyReadAttributesCSV(cstate); : else : fldct = CopyReadAttributesText(cstate); : : *fields = cstate->raw_fields; : *nfields = fldct; 0.12 : 555e10: b8 01 00 00 00 mov $0x1,%eax : return true; : } 0.00 : 555e15: 5b pop %rbx 0.08 : 555e16: 41 5c pop %r12 0.00 : 555e18: 41 5d pop %r13 0.08 : 555e1a: 41 5e pop %r14 0.00 : 555e1c: 41 5f pop %r15 0.00 : 555e1e: c9 leaveq 0.08 : 555e1f: c3 retq : * We need a special case for zero-column tables: check that the input : * line is empty, and return. : */ : if (cstate->max_fields <= 0) : { : if (cstate->line_buf.len != 0) 0.00 : 555e20: 41 8b 87 a0 01 00 00 mov 0x1a0(%r15),%eax 0.00 : 555e27: 45 31 d2 xor %r10d,%r10d 0.00 : 555e2a: 85 c0 test %eax,%eax 0.00 : 555e2c: 74 c9 je 555df7 : ereport(ERROR, 0.00 : 555e2e: 45 31 c0 xor %r8d,%r8d 0.00 : 555e31: b9 60 9d 87 00 mov $0x879d60,%ecx 0.00 : 555e36: ba fe 0d 00 00 mov $0xdfe,%edx 0.00 : 555e3b: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 555e40: bf 14 00 00 00 mov $0x14,%edi 0.00 : 555e45: e8 76 4c 22 00 callq 77aac0 0.00 : 555e4a: 84 c0 test %al,%al 0.00 : 555e4c: 0f 84 6f fc ff ff je 555ac1 0.00 : 555e52: bf d8 8d 87 00 mov $0x878dd8,%edi 0.00 : 555e57: 31 c0 xor %eax,%eax 0.00 : 555e59: e8 42 6a 22 00 callq 77c8a0 0.00 : 555e5e: bf 82 00 02 04 mov $0x4020082,%edi 0.00 : 555e63: 89 c3 mov %eax,%ebx 0.00 : 555e65: e8 e6 6e 22 00 callq 77cd50 0.00 : 555e6a: 89 de mov %ebx,%esi 0.00 : 555e6c: 89 c7 mov %eax,%edi 0.00 : 555e6e: 31 c0 xor %eax,%eax 0.00 : 555e70: e8 6b 47 22 00 callq 77a5e0 0.00 : 555e75: e9 47 fc ff ff jmpq 555ac1 0.00 : 555e7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : goto endfield; : c = *cur_ptr++; : /* unquoted field delimiter */ : if (c == delimc) 0.00 : 555e80: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 555e85: e9 91 fb ff ff jmpq 555a1b 0.00 : 555e8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : break; : c = *cur_ptr++; : if (c == delimc) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:3644 2.21 : 555e90: 44 89 e2 mov %r12d,%edx 1.76 : 555e93: 41 bd 01 00 00 00 mov $0x1,%r13d 0.29 : 555e99: 49 89 c4 mov %rax,%r12 0.33 : 555e9c: 44 29 c2 sub %r8d,%edx 1.11 : 555e9f: e9 8d fd ff ff jmpq 555c31 0.00 : 555ea4: 0f 1f 40 00 nopl 0x0(%rax) : * If we de-escaped any non-7-bit-ASCII chars, make sure the : * resulting string is valid data for the db encoding. : */ : if (saw_non_ascii) : { : char *fld = cstate->raw_fields[fieldno]; 0.00 : 555ea8: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax 0.00 : 555eaf: 48 8b 4d a0 mov -0x60(%rbp),%rcx : : pg_verifymbstr(fld, output_ptr - fld, false); 0.00 : 555eb3: 89 de mov %ebx,%esi 0.00 : 555eb5: 31 d2 xor %edx,%edx : * If we de-escaped any non-7-bit-ASCII chars, make sure the : * resulting string is valid data for the db encoding. : */ : if (saw_non_ascii) : { : char *fld = cstate->raw_fields[fieldno]; 0.00 : 555eb7: 48 8b 3c c8 mov (%rax,%rcx,8),%rdi : : pg_verifymbstr(fld, output_ptr - fld, false); 0.00 : 555ebb: 44 88 4d 90 mov %r9b,-0x70(%rbp) 0.00 : 555ebf: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555ec3: 29 fe sub %edi,%esi 0.00 : 555ec5: e8 d6 58 23 00 callq 78b7a0 0.00 : 555eca: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555ece: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 555ed3: e9 6c fd ff ff jmpq 555c44 0.00 : 555ed8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 555edf: 00 : break; : case 'x': : /* Handle \x3F */ : if (cur_ptr < line_end_ptr) : { : char hexchar = *cur_ptr; 0.00 : 555ee0: 41 0f b6 1c 24 movzbl (%r12),%ebx : : if (isxdigit((unsigned char) hexchar)) 0.00 : 555ee5: 4c 89 45 98 mov %r8,-0x68(%rbp) 0.00 : 555ee9: 44 88 4d 90 mov %r9b,-0x70(%rbp) 0.00 : 555eed: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555ef1: 44 88 5d 80 mov %r11b,-0x80(%rbp) 0.00 : 555ef5: e8 c6 39 f1 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 555efa: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 555efe: 48 8b 00 mov (%rax),%rax 0.00 : 555f01: 0f b6 d3 movzbl %bl,%edx 0.00 : 555f04: 4c 8b 45 98 mov -0x68(%rbp),%r8 0.00 : 555f08: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 555f0d: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555f11: 44 0f b6 5d 80 movzbl -0x80(%rbp),%r11d 0.00 : 555f16: f6 44 50 01 10 testb $0x10,0x1(%rax,%rdx,2) 0.00 : 555f1b: 0f 85 d5 00 00 00 jne 555ff6 : */ : } : } : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555f21: 41 c6 45 ff 78 movb $0x78,-0x1(%r13) 0.00 : 555f26: 4c 89 eb mov %r13,%rbx 0.00 : 555f29: e9 62 fc ff ff jmpq 555b90 : int input_len; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) : { : cstate->max_fields *= 2; 0.00 : 555f2e: 8d 34 00 lea (%rax,%rax,1),%esi : cstate->raw_fields = 0.00 : 555f31: 49 8b bf 90 01 00 00 mov 0x190(%r15),%rdi : int input_len; : : /* Make sure there is enough space for the next value */ : if (fieldno >= cstate->max_fields) : { : cstate->max_fields *= 2; 0.00 : 555f38: 41 89 b7 88 01 00 00 mov %esi,0x188(%r15) : cstate->raw_fields = 0.00 : 555f3f: 48 63 f6 movslq %esi,%rsi 0.00 : 555f42: 44 88 45 98 mov %r8b,-0x68(%rbp) 0.00 : 555f46: 4c 89 4d 90 mov %r9,-0x70(%rbp) 0.00 : 555f4a: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555f4e: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 555f52: e8 99 2d 24 00 callq 798cf0 0.00 : 555f57: 49 89 87 90 01 00 00 mov %rax,0x190(%r15) 0.00 : 555f5e: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555f62: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 555f66: 44 0f b6 45 98 movzbl -0x68(%rbp),%r8d 0.00 : 555f6b: e9 5d fa ff ff jmpq 5559cd : */ : if (c == quotec) : break; : : /* Add c to output string */ : *output_ptr++ = c; 0.00 : 555f70: 48 89 d3 mov %rdx,%rbx 0.00 : 555f73: 45 31 db xor %r11d,%r11d : } : } : endfield: : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.00 : 555f76: 49 8d 44 24 01 lea 0x1(%r12),%rax : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; : if (!saw_quote && input_len == cstate->null_print_len && 0.00 : 555f7b: 84 c9 test %cl,%cl : } : } : endfield: : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.00 : 555f7d: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 555f82: 48 89 45 d0 mov %rax,-0x30(%rbp) : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; : if (!saw_quote && input_len == cstate->null_print_len && 0.00 : 555f86: 74 21 je 555fa9 : strncmp(start_ptr, cstate->null_print, input_len) == 0) : cstate->raw_fields[fieldno] = NULL; : : fieldno++; 0.00 : 555f88: 41 83 c2 01 add $0x1,%r10d : /* Done if we hit EOL instead of a delim */ : if (!found_delim) 0.00 : 555f8c: 45 84 db test %r11b,%r11b 0.00 : 555f8f: 0f 84 3d 01 00 00 je 5560d2 0.00 : 555f95: 49 89 d9 mov %rbx,%r9 0.00 : 555f98: 4c 8b 65 d0 mov -0x30(%rbp),%r12 0.00 : 555f9c: e9 1c fa ff ff jmpq 5559bd : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : goto endfield; : c = *cur_ptr++; : /* unquoted field delimiter */ : if (c == delimc) 0.00 : 555fa1: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 555fa7: eb cd jmp 555f76 : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; : : /* Check whether raw input matched null marker */ : input_len = end_ptr - start_ptr; 0.00 : 555fa9: 89 d0 mov %edx,%eax 0.00 : 555fab: 44 29 c8 sub %r9d,%eax : if (!saw_quote && input_len == cstate->null_print_len && 0.00 : 555fae: 41 3b 47 58 cmp 0x58(%r15),%eax 0.00 : 555fb2: 75 d4 jne 555f88 0.00 : 555fb4: 49 8b 77 50 mov 0x50(%r15),%rsi 0.00 : 555fb8: 48 63 d0 movslq %eax,%rdx 0.00 : 555fbb: 44 88 45 98 mov %r8b,-0x68(%rbp) 0.00 : 555fbf: 44 89 55 88 mov %r10d,-0x78(%rbp) 0.00 : 555fc3: 44 88 5d 80 mov %r11b,-0x80(%rbp) 0.00 : 555fc7: 4c 89 cf mov %r9,%rdi 0.00 : 555fca: e8 51 36 f1 ff callq 469620 0.00 : 555fcf: 85 c0 test %eax,%eax 0.00 : 555fd1: 44 0f b6 45 98 movzbl -0x68(%rbp),%r8d 0.00 : 555fd6: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 555fda: 44 0f b6 5d 80 movzbl -0x80(%rbp),%r11d 0.00 : 555fdf: 75 a7 jne 555f88 : strncmp(start_ptr, cstate->null_print, input_len) == 0) : cstate->raw_fields[fieldno] = NULL; 0.00 : 555fe1: 49 8b 87 90 01 00 00 mov 0x190(%r15),%rax 0.00 : 555fe8: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 555fec: 48 c7 04 d0 00 00 00 movq $0x0,(%rax,%rdx,8) 0.00 : 555ff3: 00 0.00 : 555ff4: eb 92 jmp 555f88 : { : char hexchar = *cur_ptr; : : if (isxdigit((unsigned char) hexchar)) : { : int val = GetDecimalFromHex(hexchar); 0.00 : 555ff6: 0f be fb movsbl %bl,%edi : : cur_ptr++; 0.00 : 555ff9: 49 83 c4 01 add $0x1,%r12 : { : char hexchar = *cur_ptr; : : if (isxdigit((unsigned char) hexchar)) : { : int val = GetDecimalFromHex(hexchar); 0.00 : 555ffd: e8 8e f8 ff ff callq 555890 : : cur_ptr++; : if (cur_ptr < line_end_ptr) 0.00 : 556002: 4d 39 e6 cmp %r12,%r14 : { : char hexchar = *cur_ptr; : : if (isxdigit((unsigned char) hexchar)) : { : int val = GetDecimalFromHex(hexchar); 0.00 : 556005: 89 c1 mov %eax,%ecx : : cur_ptr++; : if (cur_ptr < line_end_ptr) 0.00 : 556007: 4c 8b 45 98 mov -0x68(%rbp),%r8 0.00 : 55600b: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 556010: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 556014: 44 0f b6 5d 80 movzbl -0x80(%rbp),%r11d 0.00 : 556019: 77 54 ja 55606f : cur_ptr++; : val = (val << 4) + GetDecimalFromHex(hexchar); : } : } : c = val & 0xff; : if (c == '\0' || IS_HIGHBIT_SET(c)) 0.00 : 55601b: 84 c9 test %cl,%cl 0.00 : 55601d: 0f 8f 5d fb ff ff jg 555b80 0.00 : 556023: e9 b2 fd ff ff jmpq 555dda : * then transfer data without any checks for enough space. We need to do : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); 0.00 : 556028: 48 89 df mov %rbx,%rdi 0.00 : 55602b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 556030: e8 0b bb 07 00 callq 5d1b40 0.00 : 556035: 41 8b b7 a0 01 00 00 mov 0x1a0(%r15),%esi 0.00 : 55603c: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 556041: e9 cd fa ff ff jmpq 555b13 : * then transfer data without any checks for enough space. We need to do : * it this way because enlarging attribute_buf mid-stream would invalidate : * pointers already stored into cstate->raw_fields[]. : */ : if (cstate->attribute_buf.maxlen <= cstate->line_buf.len) : enlargeStringInfo(&cstate->attribute_buf, cstate->line_buf.len); 0.00 : 556046: 48 89 df mov %rbx,%rdi 0.00 : 556049: e8 f2 ba 07 00 callq 5d1b40 0.00 : 55604e: 41 8b b7 a0 01 00 00 mov 0x1a0(%r15),%esi 0.00 : 556055: 44 0f b6 45 98 movzbl -0x68(%rbp),%r8d 0.00 : 55605a: e9 46 f9 ff ff jmpq 5559a5 : { : c = *cur_ptr; : if (ISOCTAL(c)) : { : cur_ptr++; : val = (val << 3) + OCTVALUE(c); 0.00 : 55605f: 0f be c1 movsbl %cl,%eax : if (cur_ptr < line_end_ptr) : { : c = *cur_ptr; : if (ISOCTAL(c)) : { : cur_ptr++; 0.00 : 556062: 49 83 c4 01 add $0x1,%r12 : val = (val << 3) + OCTVALUE(c); 0.00 : 556066: 8d 54 d0 d0 lea -0x30(%rax,%rdx,8),%edx 0.00 : 55606a: e9 61 fd ff ff jmpq 555dd0 : : cur_ptr++; : if (cur_ptr < line_end_ptr) : { : hexchar = *cur_ptr; : if (isxdigit((unsigned char) hexchar)) 0.00 : 55606f: 48 8b 5d c8 mov -0x38(%rbp),%rbx : int val = GetDecimalFromHex(hexchar); : : cur_ptr++; : if (cur_ptr < line_end_ptr) : { : hexchar = *cur_ptr; 0.00 : 556073: 41 0f b6 34 24 movzbl (%r12),%esi : if (isxdigit((unsigned char) hexchar)) 0.00 : 556078: 48 8b 03 mov (%rbx),%rax 0.00 : 55607b: 40 0f b6 d6 movzbl %sil,%edx 0.00 : 55607f: f6 44 50 01 10 testb $0x10,0x1(%rax,%rdx,2) 0.00 : 556084: 74 95 je 55601b : { : cur_ptr++; : val = (val << 4) + GetDecimalFromHex(hexchar); 0.00 : 556086: 89 cb mov %ecx,%ebx 0.00 : 556088: 40 0f be fe movsbl %sil,%edi : if (cur_ptr < line_end_ptr) : { : hexchar = *cur_ptr; : if (isxdigit((unsigned char) hexchar)) : { : cur_ptr++; 0.00 : 55608c: 49 83 c4 01 add $0x1,%r12 : val = (val << 4) + GetDecimalFromHex(hexchar); 0.00 : 556090: c1 e3 04 shl $0x4,%ebx 0.00 : 556093: e8 f8 f7 ff ff callq 555890 0.00 : 556098: 44 0f b6 5d 80 movzbl -0x80(%rbp),%r11d 0.00 : 55609d: 8d 0c 18 lea (%rax,%rbx,1),%ecx 0.00 : 5560a0: 44 8b 55 88 mov -0x78(%rbp),%r10d 0.00 : 5560a4: 44 0f b6 4d 90 movzbl -0x70(%rbp),%r9d 0.00 : 5560a9: 4c 8b 45 98 mov -0x68(%rbp),%r8 0.00 : 5560ad: e9 69 ff ff ff jmpq 55601b : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) : break; : c = *cur_ptr++; : if (c == delimc) 0.00 : 5560b2: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 5560b8: 45 31 db xor %r11d,%r11d 0.00 : 5560bb: 31 d2 xor %edx,%edx 0.00 : 5560bd: e9 6f fb ff ff jmpq 555c31 : for (;;) : { : char c; : : end_ptr = cur_ptr; : if (cur_ptr >= line_end_ptr) 0.00 : 5560c2: 4d 89 c4 mov %r8,%r12 0.00 : 5560c5: 45 31 ed xor %r13d,%r13d 0.00 : 5560c8: 45 31 db xor %r11d,%r11d 0.00 : 5560cb: 31 d2 xor %edx,%edx 0.00 : 5560cd: e9 5f fb ff ff jmpq 555c31 : } : : /* Clean up state of attribute_buf */ : output_ptr--; : Assert(*output_ptr == '\0'); : cstate->attribute_buf.len = (output_ptr - cstate->attribute_buf.data); 0.00 : 5560d2: 44 89 e0 mov %r12d,%eax 0.00 : 5560d5: 41 2b 87 70 01 00 00 sub 0x170(%r15),%eax 0.00 : 5560dc: 41 89 87 78 01 00 00 mov %eax,0x178(%r15) 0.00 : 5560e3: e9 0f fd ff ff jmpq 555df7 : fldct = CopyReadAttributesCSV(cstate); : else : fldct = CopyReadAttributesText(cstate); : : *fields = cstate->raw_fields; : *nfields = fldct; 0.00 : 5560e8: 41 bb 01 00 00 00 mov $0x1,%r11d : } : } : endfield: : : /* Terminate attribute value in output area */ : *output_ptr++ = '\0'; 0.00 : 5560ee: 49 8d 54 24 01 lea 0x1(%r12),%rdx 0.00 : 5560f3: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 5560f8: 31 c0 xor %eax,%eax 0.00 : 5560fa: 48 89 55 d0 mov %rdx,-0x30(%rbp) 0.00 : 5560fe: e9 ab fe ff ff jmpq 555fae : * line is empty, and return. : */ : if (cstate->max_fields <= 0) : { : if (cstate->line_buf.len != 0) : ereport(ERROR, 0.00 : 556103: 45 31 c0 xor %r8d,%r8d 0.00 : 556106: b9 40 9d 87 00 mov $0x879d40,%ecx 0.00 : 55610b: ba e4 0e 00 00 mov $0xee4,%edx 0.00 : 556110: e9 26 fd ff ff jmpq 555e3b Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 30.34 ??:0 2.79 ??:0 2.18 ??:0 2.01 ??:0 1.83 ??:0 1.31 ??:0 1.13 ??:0 1.09 ??:0 0.92 ??:0 0.92 ??:0 0.87 ??:0 0.79 ??:0 0.79 ??:0 0.79 ??:0 0.79 ??:0 0.70 ??:0 0.70 ??:0 0.65 ??:0 0.65 ??:0 0.65 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.57 ??:0 0.57 ??:0 0.52 ??:0 0.52 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000003a210 <__GI_____strtod_l_internal>: 0.00 : 3a210: 41 57 push %r15 0.04 : 3a212: 41 56 push %r14 0.00 : 3a214: 41 55 push %r13 0.48 : 3a216: 41 54 push %r12 0.00 : 3a218: 55 push %rbp 0.00 : 3a219: 53 push %rbx 0.09 : 3a21a: 48 81 ec 48 02 00 00 sub $0x248,%rsp 0.26 : 3a221: 85 d2 test %edx,%edx 0.00 : 3a223: 48 89 7c 24 58 mov %rdi,0x58(%rsp) 0.35 : 3a228: 48 89 74 24 50 mov %rsi,0x50(%rsp) ??:0 0.61 : 3a22d: 48 89 4c 24 48 mov %rcx,0x48(%rsp) 0.13 : 3a232: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.61 : 3a236: 0f 85 ba 1a 00 00 jne 3bcf6 <__GI_____strtod_l_internal+0x1ae6> 0.00 : 3a23c: 48 c7 84 24 88 00 00 movq $0x0,0x88(%rsp) 0.00 : 3a243: 00 00 00 00 00 0.13 : 3a248: 48 c7 84 24 90 00 00 movq $0x0,0x90(%rsp) 0.00 : 3a24f: 00 00 00 00 00 0.09 : 3a254: 4c 8b 71 40 mov 0x40(%rcx),%r14 1.31 : 3a258: 4c 89 f7 mov %r14,%rdi 0.31 : 3a25b: e8 50 69 04 00 callq 80bb0 <__GI_strlen> 0.00 : 3a260: 48 85 c0 test %rax,%rax 0.35 : 3a263: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : 3a268: 0f 84 69 1a 00 00 je 3bcd7 <__GI_____strtod_l_internal+0x1ac7> 0.39 : 3a26e: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 3a273: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 3a278: 48 c7 84 24 30 02 00 movq $0x0,0x230(%rsp) 0.00 : 3a27f: 00 00 00 00 00 0.00 : 3a284: 48 8b 56 68 mov 0x68(%rsi),%rdx 0.22 : 3a288: 48 83 ed 01 sub $0x1,%rbp 0.00 : 3a28c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 3a290: 48 83 c5 01 add $0x1,%rbp 0.00 : 3a294: 0f b6 5d 00 movzbl 0x0(%rbp),%ebx 0.35 : 3a298: 48 0f be c3 movsbq %bl,%rax 0.17 : 3a29c: f6 44 42 01 20 testb $0x20,0x1(%rdx,%rax,2) 0.44 : 3a2a1: 75 ed jne 3a290 <__GI_____strtod_l_internal+0x80> 0.48 : 3a2a3: 80 fb 2d cmp $0x2d,%bl 0.00 : 3a2a6: 0f 84 94 05 00 00 je 3a840 <__GI_____strtod_l_internal+0x630> 0.00 : 3a2ac: 80 fb 2b cmp $0x2b,%bl 0.00 : 3a2af: c7 44 24 70 00 00 00 movl $0x0,0x70(%rsp) 0.00 : 3a2b6: 00 0.00 : 3a2b7: 0f 84 8b 01 00 00 je 3a448 <__GI_____strtod_l_internal+0x238> 0.70 : 3a2bd: 41 0f b6 36 movzbl (%r14),%esi 0.00 : 3a2c1: 31 d2 xor %edx,%edx 0.00 : 3a2c3: 40 84 f6 test %sil,%sil 0.00 : 3a2c6: 74 26 je 3a2ee <__GI_____strtod_l_internal+0xde> 0.00 : 3a2c8: 40 3a 75 00 cmp 0x0(%rbp),%sil 0.44 : 3a2cc: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3a2d1: 74 12 je 3a2e5 <__GI_____strtod_l_internal+0xd5> 0.00 : 3a2d3: eb 2b jmp 3a300 <__GI_____strtod_l_internal+0xf0> 0.00 : 3a2d5: 0f 1f 00 nopl (%rax) 0.00 : 3a2d8: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 3a2dd: 48 83 c2 01 add $0x1,%rdx 0.00 : 3a2e1: 38 c1 cmp %al,%cl 0.00 : 3a2e3: 75 1b jne 3a300 <__GI_____strtod_l_internal+0xf0> 0.00 : 3a2e5: 41 0f b6 0c 16 movzbl (%r14,%rdx,1),%ecx 0.00 : 3a2ea: 84 c9 test %cl,%cl 0.00 : 3a2ec: 75 ea jne 3a2d8 <__GI_____strtod_l_internal+0xc8> 0.00 : 3a2ee: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 3a2f3: 3c 2f cmp $0x2f,%al 0.00 : 3a2f5: 7e 09 jle 3a300 <__GI_____strtod_l_internal+0xf0> 0.00 : 3a2f7: 3c 39 cmp $0x39,%al 0.00 : 3a2f9: 7e 5d jle 3a358 <__GI_____strtod_l_internal+0x148> 0.00 : 3a2fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a300: 8d 43 d0 lea -0x30(%rbx),%eax 0.65 : 3a303: 3c 09 cmp $0x9,%al 0.00 : 3a305: 76 51 jbe 3a358 <__GI_____strtod_l_internal+0x148> 0.00 : 3a307: 48 8b 05 42 68 33 00 mov 0x336842(%rip),%rax # 370b50 <_nl_C_locobj+0x70> 0.00 : 3a30e: 48 0f be d3 movsbq %bl,%rdx 0.00 : 3a312: 0f b6 04 90 movzbl (%rax,%rdx,4),%eax 0.00 : 3a316: 3c 69 cmp $0x69,%al 0.00 : 3a318: 0f 84 7d 07 00 00 je 3aa9b <__GI_____strtod_l_internal+0x88b> 0.00 : 3a31e: 3c 6e cmp $0x6e,%al 0.00 : 3a320: 0f 84 eb 07 00 00 je 3ab11 <__GI_____strtod_l_internal+0x901> 0.00 : 3a326: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3a32c: 0f 84 26 05 00 00 je 3a858 <__GI_____strtod_l_internal+0x648> 0.00 : 3a332: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 3a337: 48 8b 44 24 50 mov 0x50(%rsp),%rax 0.00 : 3a33c: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 3a340: 48 89 10 mov %rdx,(%rax) 0.57 : 3a343: 48 81 c4 48 02 00 00 add $0x248,%rsp 0.00 : 3a34a: 5b pop %rbx 0.04 : 3a34b: 5d pop %rbp 0.39 : 3a34c: 41 5c pop %r12 0.04 : 3a34e: 41 5d pop %r13 0.00 : 3a350: 41 5e pop %r14 0.65 : 3a352: 41 5f pop %r15 0.22 : 3a354: c3 retq 0.00 : 3a355: 0f 1f 00 nopl (%rax) 0.04 : 3a358: 80 fb 30 cmp $0x30,%bl 0.00 : 3a35b: 0f 84 07 05 00 00 je 3a868 <__GI_____strtod_l_internal+0x658> 0.04 : 3a361: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 3a366: 4c 8b 41 70 mov 0x70(%rcx),%r8 0.35 : 3a36a: c7 44 24 74 0a 00 00 movl $0xa,0x74(%rsp) 0.00 : 3a371: 00 0.00 : 3a372: 48 83 bc 24 88 00 00 cmpq $0x0,0x88(%rsp) 0.00 : 3a379: 00 00 0.35 : 3a37b: 0f 85 72 1b 00 00 jne 3bef3 <__GI_____strtod_l_internal+0x1ce3> 0.00 : 3a381: 80 fb 30 cmp $0x30,%bl 0.26 : 3a384: 49 89 ed mov %rbp,%r13 0.04 : 3a387: 75 15 jne 3a39e <__GI_____strtod_l_internal+0x18e> 0.13 : 3a389: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3a390: 49 83 c5 01 add $0x1,%r13 0.00 : 3a394: 41 0f b6 5d 00 movzbl 0x0(%r13),%ebx 0.00 : 3a399: 80 fb 30 cmp $0x30,%bl 0.00 : 3a39c: 74 f2 je 3a390 <__GI_____strtod_l_internal+0x180> 0.17 : 3a39e: 48 0f be c3 movsbq %bl,%rax 0.00 : 3a3a2: 41 8b 14 80 mov (%r8,%rax,4),%edx 0.26 : 3a3a6: 8d 43 d0 lea -0x30(%rbx),%eax 0.04 : 3a3a9: 3c 09 cmp $0x9,%al 0.00 : 3a3ab: 0f 86 df 00 00 00 jbe 3a490 <__GI_____strtod_l_internal+0x280> 0.09 : 3a3b1: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a3b6: 89 d7 mov %edx,%edi 0.00 : 3a3b8: 41 0f 95 c1 setne %r9b 0.04 : 3a3bc: 0f 84 ee 04 00 00 je 3a8b0 <__GI_____strtod_l_internal+0x6a0> 0.13 : 3a3c2: 40 84 f6 test %sil,%sil 0.00 : 3a3c5: 0f 84 b1 00 00 00 je 3a47c <__GI_____strtod_l_internal+0x26c> 0.00 : 3a3cb: 31 d2 xor %edx,%edx 0.00 : 3a3cd: 41 3a 75 00 cmp 0x0(%r13),%sil 0.00 : 3a3d1: 0f 84 9b 00 00 00 je 3a472 <__GI_____strtod_l_internal+0x262> 0.00 : 3a3d7: 45 84 c9 test %r9b,%r9b 0.00 : 3a3da: 0f 84 76 14 00 00 je 3b856 <__GI_____strtod_l_internal+0x1646> 0.00 : 3a3e0: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a3e5: 41 0f 94 c4 sete %r12b 0.00 : 3a3e9: 0f 85 11 09 00 00 jne 3ad00 <__GI_____strtod_l_internal+0xaf0> 0.00 : 3a3ef: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : 3a3f6: 00 0.00 : 3a3f7: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : 3a3fe: 00 0.00 : 3a3ff: 4c 89 ee mov %r13,%rsi 0.00 : 3a402: 48 89 ef mov %rbp,%rdi 0.00 : 3a405: e8 c6 93 00 00 callq 437d0 <__correctly_grouped_prefixmb> 0.00 : 3a40a: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3a410: 74 16 je 3a428 <__GI_____strtod_l_internal+0x218> 0.00 : 3a412: 48 39 c5 cmp %rax,%rbp 0.00 : 3a415: 0f 84 54 1c 00 00 je 3c06f <__GI_____strtod_l_internal+0x1e5f> 0.00 : 3a41b: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : 3a420: 48 89 03 mov %rax,(%rbx) 0.00 : 3a423: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a428: 8b 6c 24 70 mov 0x70(%rsp),%ebp 0.00 : 3a42c: 85 ed test %ebp,%ebp 0.00 : 3a42e: 0f 84 24 04 00 00 je 3a858 <__GI_____strtod_l_internal+0x648> 0.00 : 3a434: f2 0f 10 05 f4 95 10 movsd 0x1095f4(%rip),%xmm0 # 143a30 0.00 : 3a43b: 00 0.00 : 3a43c: e9 02 ff ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3a441: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3a448: 48 83 c5 01 add $0x1,%rbp 0.00 : 3a44c: 0f b6 5d 00 movzbl 0x0(%rbp),%ebx 0.00 : 3a450: c7 44 24 70 00 00 00 movl $0x0,0x70(%rsp) 0.00 : 3a457: 00 0.00 : 3a458: e9 60 fe ff ff jmpq 3a2bd <__GI_____strtod_l_internal+0xad> 0.00 : 3a45d: 0f 1f 00 nopl (%rax) 0.00 : 3a460: 41 0f b6 44 15 01 movzbl 0x1(%r13,%rdx,1),%eax 0.00 : 3a466: 48 83 c2 01 add $0x1,%rdx 0.00 : 3a46a: 38 c1 cmp %al,%cl 0.00 : 3a46c: 0f 85 65 ff ff ff jne 3a3d7 <__GI_____strtod_l_internal+0x1c7> 0.00 : 3a472: 41 0f b6 4c 16 01 movzbl 0x1(%r14,%rdx,1),%ecx 0.22 : 3a478: 84 c9 test %cl,%cl 0.00 : 3a47a: 75 e4 jne 3a460 <__GI_____strtod_l_internal+0x250> 0.04 : 3a47c: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a481: 0f 84 f6 08 00 00 je 3ad7d <__GI_____strtod_l_internal+0xb6d> 0.00 : 3a487: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a48e: 00 00 0.17 : 3a490: 4d 89 ec mov %r13,%r12 0.00 : 3a493: 45 31 ff xor %r15d,%r15d 1.13 : 3a496: 8d 43 d0 lea -0x30(%rbx),%eax 0.00 : 3a499: 3c 09 cmp $0x9,%al 0.00 : 3a49b: 0f 86 bf 00 00 00 jbe 3a560 <__GI_____strtod_l_internal+0x350> 0.79 : 3a4a1: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.44 : 3a4a6: 0f 84 9c 00 00 00 je 3a548 <__GI_____strtod_l_internal+0x338> 0.35 : 3a4ac: 48 83 bc 24 88 00 00 cmpq $0x0,0x88(%rsp) 0.00 : 3a4b3: 00 00 0.00 : 3a4b5: 0f 85 d7 19 00 00 jne 3be92 <__GI_____strtod_l_internal+0x1c82> 0.44 : 3a4bb: 48 83 bc 24 90 00 00 cmpq $0x0,0x90(%rsp) 0.00 : 3a4c2: 00 00 0.00 : 3a4c4: 0f 84 b6 00 00 00 je 3a580 <__GI_____strtod_l_internal+0x370> 0.00 : 3a4ca: 4c 39 e5 cmp %r12,%rbp 0.00 : 3a4cd: 0f 83 ad 00 00 00 jae 3a580 <__GI_____strtod_l_internal+0x370> 0.00 : 3a4d3: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx 0.00 : 3a4da: 00 0.00 : 3a4db: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : 3a4e2: 00 0.00 : 3a4e3: 4c 89 e6 mov %r12,%rsi 0.00 : 3a4e6: 48 89 ef mov %rbp,%rdi 0.00 : 3a4e9: e8 e2 92 00 00 callq 437d0 <__correctly_grouped_prefixmb> 0.00 : 3a4ee: 49 39 c4 cmp %rax,%r12 0.00 : 3a4f1: 48 89 c1 mov %rax,%rcx 0.00 : 3a4f4: 74 7c je 3a572 <__GI_____strtod_l_internal+0x362> 0.00 : 3a4f6: 48 39 c5 cmp %rax,%rbp 0.00 : 3a4f9: 0f 84 92 14 00 00 je 3b991 <__GI_____strtod_l_internal+0x1781> 0.00 : 3a4ff: 49 39 c5 cmp %rax,%r13 0.00 : 3a502: 0f 87 df 07 00 00 ja 3ace7 <__GI_____strtod_l_internal+0xad7> 0.00 : 3a508: 4c 89 ea mov %r13,%rdx 0.00 : 3a50b: bd 00 00 00 00 mov $0x0,%ebp 0.00 : 3a510: 0f 83 46 1a 00 00 jae 3bf5c <__GI_____strtod_l_internal+0x1d4c> 0.00 : 3a516: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3a51d: 00 00 00 0.00 : 3a520: 0f b6 02 movzbl (%rdx),%eax 0.00 : 3a523: 83 e8 30 sub $0x30,%eax 0.00 : 3a526: 3c 0a cmp $0xa,%al 0.00 : 3a528: 48 83 d5 00 adc $0x0,%rbp 0.00 : 3a52c: 48 83 c2 01 add $0x1,%rdx 0.00 : 3a530: 48 39 d1 cmp %rdx,%rcx 0.00 : 3a533: 77 eb ja 3a520 <__GI_____strtod_l_internal+0x310> 0.00 : 3a535: 49 89 c8 mov %rcx,%r8 0.00 : 3a538: 49 89 eb mov %rbp,%r11 0.00 : 3a53b: 45 31 d2 xor %r10d,%r10d 0.00 : 3a53e: e9 53 01 00 00 jmpq 3a696 <__GI_____strtod_l_internal+0x486> 0.00 : 3a543: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a548: 48 0f be c3 movsbq %bl,%rax 0.00 : 3a54c: 41 8b 04 80 mov (%r8,%rax,4),%eax 0.00 : 3a550: 83 e8 61 sub $0x61,%eax 0.00 : 3a553: 3c 05 cmp $0x5,%al 0.00 : 3a555: 0f 87 51 ff ff ff ja 3a4ac <__GI_____strtod_l_internal+0x29c> 0.00 : 3a55b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.52 : 3a560: 49 83 c7 01 add $0x1,%r15 0.13 : 3a564: 49 83 c4 01 add $0x1,%r12 0.17 : 3a568: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.31 : 3a56d: e9 24 ff ff ff jmpq 3a496 <__GI_____strtod_l_internal+0x286> 0.00 : 3a572: 41 0f b6 36 movzbl (%r14),%esi 0.00 : 3a576: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3a57d: 00 00 00 0.17 : 3a580: 49 83 ff 01 cmp $0x1,%r15 0.00 : 3a584: 4d 19 d2 sbb %r10,%r10 0.31 : 3a587: 40 84 f6 test %sil,%sil 0.00 : 3a58a: 74 30 je 3a5bc <__GI_____strtod_l_internal+0x3ac> 0.22 : 3a58c: 31 d2 xor %edx,%edx 0.00 : 3a58e: 41 3a 34 24 cmp (%r12),%sil 0.00 : 3a592: 74 1e je 3a5b2 <__GI_____strtod_l_internal+0x3a2> 0.13 : 3a594: e9 47 04 00 00 jmpq 3a9e0 <__GI_____strtod_l_internal+0x7d0> 0.00 : 3a599: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3a5a0: 41 0f b6 44 14 01 movzbl 0x1(%r12,%rdx,1),%eax 0.00 : 3a5a6: 48 83 c2 01 add $0x1,%rdx 0.00 : 3a5aa: 38 c1 cmp %al,%cl 0.00 : 3a5ac: 0f 85 2e 04 00 00 jne 3a9e0 <__GI_____strtod_l_internal+0x7d0> 0.70 : 3a5b2: 41 0f b6 4c 16 01 movzbl 0x1(%r14,%rdx,1),%ecx 0.00 : 3a5b8: 84 c9 test %cl,%cl 0.00 : 3a5ba: 75 e4 jne 3a5a0 <__GI_____strtod_l_internal+0x390> 0.22 : 3a5bc: 4c 03 64 24 40 add 0x40(%rsp),%r12 0.00 : 3a5c1: 4c 89 fd mov %r15,%rbp 0.26 : 3a5c4: 31 c9 xor %ecx,%ecx 0.00 : 3a5c6: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.92 : 3a5cb: eb 38 jmp 3a605 <__GI_____strtod_l_internal+0x3f5> 0.00 : 3a5cd: 0f 1f 00 nopl (%rax) 0.00 : 3a5d0: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 3a5d5: 48 0f be d3 movsbq %bl,%rdx 0.00 : 3a5d9: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 3a5dd: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 3a5e0: 83 e8 61 sub $0x61,%eax 0.00 : 3a5e3: 3c 05 cmp $0x5,%al 0.00 : 3a5e5: 77 2c ja 3a613 <__GI_____strtod_l_internal+0x403> 0.17 : 3a5e7: 80 fb 30 cmp $0x30,%bl 0.00 : 3a5ea: 74 08 je 3a5f4 <__GI_____strtod_l_internal+0x3e4> 0.31 : 3a5ec: 49 83 fa ff cmp $0xffffffffffffffff,%r10 0.39 : 3a5f0: 4c 0f 44 d1 cmove %rcx,%r10 1.09 : 3a5f4: 49 83 c4 01 add $0x1,%r12 0.17 : 3a5f8: 48 83 c5 01 add $0x1,%rbp 0.22 : 3a5fc: 48 83 c1 01 add $0x1,%rcx 0.17 : 3a600: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.92 : 3a605: 8d 43 d0 lea -0x30(%rbx),%eax 0.22 : 3a608: 3c 09 cmp $0x9,%al 0.00 : 3a60a: 76 db jbe 3a5e7 <__GI_____strtod_l_internal+0x3d7> 0.31 : 3a60c: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.04 : 3a611: 74 bd je 3a5d0 <__GI_____strtod_l_internal+0x3c0> 0.22 : 3a613: 48 85 ed test %rbp,%rbp 0.00 : 3a616: 0f 88 34 1a 00 00 js 3c050 <__GI_____strtod_l_internal+0x1e40> 0.13 : 3a61c: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.22 : 3a621: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.13 : 3a626: 48 0f be d3 movsbq %bl,%rdx 0.13 : 3a62a: 48 8b 41 70 mov 0x70(%rcx),%rax 0.39 : 3a62e: 41 0f 94 c1 sete %r9b 0.09 : 3a632: 0f b6 04 90 movzbl (%rax,%rdx,4),%eax 2.01 : 3a636: 75 08 jne 3a640 <__GI_____strtod_l_internal+0x430> 0.00 : 3a638: 3c 70 cmp $0x70,%al 0.00 : 3a63a: 0f 84 9d 02 00 00 je 3a8dd <__GI_____strtod_l_internal+0x6cd> 0.00 : 3a640: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a645: 74 08 je 3a64f <__GI_____strtod_l_internal+0x43f> 0.00 : 3a647: 3c 65 cmp $0x65,%al 0.00 : 3a649: 0f 84 8e 02 00 00 je 3a8dd <__GI_____strtod_l_internal+0x6cd> 0.61 : 3a64f: 4d 89 e0 mov %r12,%r8 0.00 : 3a652: 4c 39 fd cmp %r15,%rbp 0.00 : 3a655: 4c 89 e2 mov %r12,%rdx 0.04 : 3a658: 76 30 jbe 3a68a <__GI_____strtod_l_internal+0x47a> 0.09 : 3a65a: 48 83 ea 01 sub $0x1,%rdx 0.00 : 3a65e: 80 3a 30 cmpb $0x30,(%rdx) 0.04 : 3a661: 74 10 je 3a673 <__GI_____strtod_l_internal+0x463> 0.26 : 3a663: e9 a1 13 00 00 jmpq 3ba09 <__GI_____strtod_l_internal+0x17f9> 0.00 : 3a668: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a66f: 00 0.04 : 3a670: 48 89 c2 mov %rax,%rdx 0.04 : 3a673: 48 83 ed 01 sub $0x1,%rbp 0.04 : 3a677: 80 7a ff 30 cmpb $0x30,-0x1(%rdx) 0.09 : 3a67b: 48 8d 42 ff lea -0x1(%rdx),%rax 0.09 : 3a67f: 74 ef je 3a670 <__GI_____strtod_l_internal+0x460> 0.48 : 3a681: 4c 39 fd cmp %r15,%rbp 0.00 : 3a684: 0f 82 98 1c 00 00 jb 3c322 <__GI_____strtod_l_internal+0x2112> 0.09 : 3a68a: 49 39 ef cmp %rbp,%r15 0.00 : 3a68d: 0f 84 55 03 00 00 je 3a9e8 <__GI_____strtod_l_internal+0x7d8> 0.13 : 3a693: 4d 89 fb mov %r15,%r11 0.00 : 3a696: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.44 : 3a69c: 74 08 je 3a6a6 <__GI_____strtod_l_internal+0x496> 0.26 : 3a69e: 48 8b 74 24 50 mov 0x50(%rsp),%rsi 0.00 : 3a6a3: 4c 89 06 mov %r8,(%rsi) 0.79 : 3a6a6: 48 85 ed test %rbp,%rbp 0.00 : 3a6a9: 0f 84 79 fd ff ff je 3a428 <__GI_____strtod_l_internal+0x218> 0.04 : 3a6af: 4d 85 d2 test %r10,%r10 0.00 : 3a6b2: 4d 89 ec mov %r13,%r12 0.00 : 3a6b5: 0f 84 cd 00 00 00 je 3a788 <__GI_____strtod_l_internal+0x578> 0.22 : 3a6bb: 45 0f b6 0e movzbl (%r14),%r9d 0.00 : 3a6bf: 41 0f b6 45 00 movzbl 0x0(%r13),%eax 0.00 : 3a6c4: 49 8d 75 01 lea 0x1(%r13),%rsi 0.00 : 3a6c8: 45 0f b6 46 01 movzbl 0x1(%r14),%r8d 0.17 : 3a6cd: eb 08 jmp 3a6d7 <__GI_____strtod_l_internal+0x4c7> 0.00 : 3a6cf: 90 nop 0.00 : 3a6d0: 0f b6 06 movzbl (%rsi),%eax 0.00 : 3a6d3: 48 83 c6 01 add $0x1,%rsi 0.00 : 3a6d7: 44 38 c8 cmp %r9b,%al 0.00 : 3a6da: 48 8d 7e ff lea -0x1(%rsi),%rdi 0.00 : 3a6de: 75 f0 jne 3a6d0 <__GI_____strtod_l_internal+0x4c0> 0.13 : 3a6e0: 45 84 c0 test %r8b,%r8b 0.00 : 3a6e3: 74 2e je 3a713 <__GI_____strtod_l_internal+0x503> 0.00 : 3a6e5: 0f b6 06 movzbl (%rsi),%eax 0.00 : 3a6e8: 31 d2 xor %edx,%edx 0.00 : 3a6ea: 41 38 c0 cmp %al,%r8b 0.00 : 3a6ed: 74 1a je 3a709 <__GI_____strtod_l_internal+0x4f9> 0.00 : 3a6ef: 90 nop 0.00 : 3a6f0: eb e1 jmp 3a6d3 <__GI_____strtod_l_internal+0x4c3> 0.00 : 3a6f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a6f8: 0f b6 44 17 02 movzbl 0x2(%rdi,%rdx,1),%eax 0.00 : 3a6fd: 48 83 c2 01 add $0x1,%rdx 0.00 : 3a701: 38 c1 cmp %al,%cl 0.00 : 3a703: 0f 85 c7 01 00 00 jne 3a8d0 <__GI_____strtod_l_internal+0x6c0> 0.00 : 3a709: 41 0f b6 4c 16 02 movzbl 0x2(%r14,%rdx,1),%ecx 0.00 : 3a70f: 84 c9 test %cl,%cl 0.00 : 3a711: 75 e5 jne 3a6f8 <__GI_____strtod_l_internal+0x4e8> 0.04 : 3a713: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a718: 48 b8 ff ff ff ff ff movabs $0x7fffffffffffffff,%rax 0.00 : 3a71f: ff ff 7f 0.00 : 3a722: 48 ba ff ff ff ff ff movabs $0x1fffffffffffffff,%rdx 0.00 : 3a729: ff ff 1f 0.09 : 3a72c: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 3a730: 4c 39 d0 cmp %r10,%rax 0.00 : 3a733: 0f 82 ca 1b 00 00 jb 3c303 <__GI_____strtod_l_internal+0x20f3> 0.00 : 3a739: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.17 : 3a73e: 0f 84 c2 0b 00 00 je 3b306 <__GI_____strtod_l_internal+0x10f6> 0.00 : 3a744: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 3a74b: 00 00 80 0.00 : 3a74e: 48 03 84 24 30 02 00 add 0x230(%rsp),%rax 0.00 : 3a755: 00 0.35 : 3a756: 4c 39 d0 cmp %r10,%rax 0.00 : 3a759: 0f 82 e2 1b 00 00 jb 3c341 <__GI_____strtod_l_internal+0x2131> 0.17 : 3a75f: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.31 : 3a764: 48 8b 4c 24 40 mov 0x40(%rsp),%rcx 0.00 : 3a769: 4a 8d 14 95 00 00 00 lea 0x0(,%r10,4),%rdx 0.00 : 3a770: 00 0.00 : 3a771: 49 8d 04 0a lea (%r10,%rcx,1),%rax 0.13 : 3a775: 49 0f 45 d2 cmovne %r10,%rdx 0.44 : 3a779: 48 29 94 24 30 02 00 sub %rdx,0x230(%rsp) 0.00 : 3a780: 00 0.26 : 3a781: 4c 29 d5 sub %r10,%rbp 0.00 : 3a784: 4c 8d 24 07 lea (%rdi,%rax,1),%r12 0.39 : 3a788: 83 7c 24 74 10 cmpl $0x10,0x74(%rsp) 0.00 : 3a78d: 0f 84 d0 03 00 00 je 3ab63 <__GI_____strtod_l_internal+0x953> 0.04 : 3a793: 48 8b 94 24 30 02 00 mov 0x230(%rsp),%rdx 0.00 : 3a79a: 00 0.57 : 3a79b: 48 85 d2 test %rdx,%rdx 0.00 : 3a79e: 0f 88 38 09 00 00 js 3b0dc <__GI_____strtod_l_internal+0xecc> 0.26 : 3a7a4: 48 89 e8 mov %rbp,%rax 0.00 : 3a7a7: 4c 29 d8 sub %r11,%rax 0.00 : 3a7aa: 48 39 d0 cmp %rdx,%rax 0.00 : 3a7ad: 48 0f 4f c2 cmovg %rdx,%rax 0.17 : 3a7b1: 4e 8d 1c 18 lea (%rax,%r11,1),%r11 0.44 : 3a7b5: 48 29 c2 sub %rax,%rdx 0.22 : 3a7b8: b8 35 01 00 00 mov $0x135,%eax 0.09 : 3a7bd: 48 89 94 24 30 02 00 mov %rdx,0x230(%rsp) 0.00 : 3a7c4: 00 0.79 : 3a7c5: 4c 29 d8 sub %r11,%rax 0.04 : 3a7c8: 4c 89 9c 24 c8 00 00 mov %r11,0xc8(%rsp) 0.00 : 3a7cf: 00 0.04 : 3a7d0: 48 39 c2 cmp %rax,%rdx 0.00 : 3a7d3: 0f 8f fe 11 00 00 jg 3b9d7 <__GI_____strtod_l_internal+0x17c7> 0.04 : 3a7d9: 48 81 fa bd fe ff ff cmp $0xfffffffffffffebd,%rdx 0.00 : 3a7e0: 0f 8c c6 1a 00 00 jl 3c2ac <__GI_____strtod_l_internal+0x209c> 0.48 : 3a7e6: 48 83 bc 24 c8 00 00 cmpq $0x0,0xc8(%rsp) 0.00 : 3a7ed: 00 00 2.18 : 3a7ef: c7 84 24 84 00 00 00 movl $0x0,0x84(%rsp) 0.00 : 3a7f6: 00 00 00 00 0.00 : 3a7fa: 0f 85 28 06 00 00 jne 3ae28 <__GI_____strtod_l_internal+0xc18> 0.31 : 3a800: 48 3b ac 24 c8 00 00 cmp 0xc8(%rsp),%rbp 0.00 : 3a807: 00 0.00 : 3a808: 76 11 jbe 3a81b <__GI_____strtod_l_internal+0x60b> 0.22 : 3a80a: 48 8b 8c 24 30 02 00 mov 0x230(%rsp),%rcx 0.00 : 3a811: 00 0.00 : 3a812: 48 85 c9 test %rcx,%rcx 0.00 : 3a815: 0f 8e 99 09 00 00 jle 3b1b4 <__GI_____strtod_l_internal+0xfa4> 0.00 : 3a81b: 48 8d 0d ae 80 10 00 lea 0x1080ae(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3a822: 48 8d 35 f7 03 10 00 lea 0x1003f7(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3a829: 48 8d 3d 28 3d 10 00 lea 0x103d28(%rip),%rdi # 13e558 <__PRETTY_FUNCTION__.11129+0xb7f> 0.00 : 3a830: ba ff 04 00 00 mov $0x4ff,%edx 0.00 : 3a835: e8 e6 10 ff ff callq 2b920 <__assert_fail> 0.00 : 3a83a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a840: 48 83 c5 01 add $0x1,%rbp 0.00 : 3a844: 0f b6 5d 00 movzbl 0x0(%rbp),%ebx 0.00 : 3a848: c7 44 24 70 01 00 00 movl $0x1,0x70(%rsp) 0.00 : 3a84f: 00 0.00 : 3a850: e9 68 fa ff ff jmpq 3a2bd <__GI_____strtod_l_internal+0xad> 0.00 : 3a855: 0f 1f 00 nopl (%rax) 0.00 : 3a858: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 3a85c: e9 e2 fa ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3a861: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.13 : 3a868: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 3a86d: 4c 8b 40 70 mov 0x70(%rax),%r8 0.00 : 3a871: 48 0f be 45 01 movsbq 0x1(%rbp),%rax 0.00 : 3a876: c7 44 24 74 0a 00 00 movl $0xa,0x74(%rsp) 0.00 : 3a87d: 00 0.26 : 3a87e: 41 83 3c 80 78 cmpl $0x78,(%r8,%rax,4) 0.04 : 3a883: 0f 85 e9 fa ff ff jne 3a372 <__GI_____strtod_l_internal+0x162> 0.00 : 3a889: 48 83 c5 02 add $0x2,%rbp 0.00 : 3a88d: 0f b6 5d 00 movzbl 0x0(%rbp),%ebx 0.00 : 3a891: c7 44 24 74 10 00 00 movl $0x10,0x74(%rsp) 0.00 : 3a898: 00 0.00 : 3a899: 48 c7 84 24 90 00 00 movq $0x0,0x90(%rsp) 0.00 : 3a8a0: 00 00 00 00 00 0.00 : 3a8a5: e9 c8 fa ff ff jmpq 3a372 <__GI_____strtod_l_internal+0x162> 0.00 : 3a8aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a8b0: 80 fa 60 cmp $0x60,%dl 0.00 : 3a8b3: 0f 8e 09 fb ff ff jle 3a3c2 <__GI_____strtod_l_internal+0x1b2> 0.00 : 3a8b9: 80 fa 66 cmp $0x66,%dl 0.00 : 3a8bc: 0f 8e ce fb ff ff jle 3a490 <__GI_____strtod_l_internal+0x280> 0.00 : 3a8c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a8c8: e9 f5 fa ff ff jmpq 3a3c2 <__GI_____strtod_l_internal+0x1b2> 0.00 : 3a8cd: 0f 1f 00 nopl (%rax) 0.00 : 3a8d0: 44 89 c0 mov %r8d,%eax 0.00 : 3a8d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a8d8: e9 f6 fd ff ff jmpq 3a6d3 <__GI_____strtod_l_internal+0x4c3> 0.00 : 3a8dd: 41 0f b6 74 24 01 movzbl 0x1(%r12),%esi 0.00 : 3a8e3: 4d 8d 44 24 01 lea 0x1(%r12),%r8 0.00 : 3a8e8: 40 80 fe 2d cmp $0x2d,%sil 0.00 : 3a8ec: 0f 84 93 01 00 00 je 3aa85 <__GI_____strtod_l_internal+0x875> 0.00 : 3a8f2: 45 31 db xor %r11d,%r11d 0.00 : 3a8f5: 40 80 fe 2b cmp $0x2b,%sil 0.00 : 3a8f9: 0f 84 d5 03 00 00 je 3acd4 <__GI_____strtod_l_internal+0xac4> 0.00 : 3a8ff: 8d 46 d0 lea -0x30(%rsi),%eax 0.00 : 3a902: 3c 09 cmp $0x9,%al 0.00 : 3a904: 0f 87 45 fd ff ff ja 3a64f <__GI_____strtod_l_internal+0x43f> 0.00 : 3a90a: 45 84 c9 test %r9b,%r9b 0.00 : 3a90d: 0f 85 cd 04 00 00 jne 3ade0 <__GI_____strtod_l_internal+0xbd0> 0.00 : 3a913: 45 85 db test %r11d,%r11d 0.00 : 3a916: 0f 84 f3 03 00 00 je 3ad0f <__GI_____strtod_l_internal+0xaff> 0.00 : 3a91c: 48 b8 97 fe ff ff ff movabs $0x7ffffffffffffe97,%rax 0.00 : 3a923: ff ff 7f 0.00 : 3a926: 49 8d 8f 68 01 00 00 lea 0x168(%r15),%rcx 0.00 : 3a92d: 49 39 c7 cmp %rax,%r15 0.00 : 3a930: 0f 87 8c 1a 00 00 ja 3c3c2 <__GI_____strtod_l_internal+0x21b2> 0.00 : 3a936: 48 b8 67 66 66 66 66 movabs $0x6666666666666667,%rax 0.00 : 3a93d: 66 66 66 0.00 : 3a940: 48 f7 e9 imul %rcx 0.00 : 3a943: 48 89 c8 mov %rcx,%rax 0.00 : 3a946: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 3a94a: 48 89 d7 mov %rdx,%rdi 0.00 : 3a94d: 48 c1 ff 02 sar $0x2,%rdi 0.00 : 3a951: 48 29 c7 sub %rax,%rdi 0.00 : 3a954: 48 89 c8 mov %rcx,%rax 0.00 : 3a957: 48 ba 67 66 66 66 66 movabs $0x6666666666666667,%rdx 0.00 : 3a95e: 66 66 66 0.00 : 3a961: 48 89 cb mov %rcx,%rbx 0.00 : 3a964: 48 f7 ea imul %rdx 0.00 : 3a967: 48 89 c8 mov %rcx,%rax 0.00 : 3a96a: 48 c1 f8 3f sar $0x3f,%rax 0.00 : 3a96e: 48 c1 fa 02 sar $0x2,%rdx 0.00 : 3a972: 48 29 c2 sub %rax,%rdx 0.00 : 3a975: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 3a979: 48 01 d2 add %rdx,%rdx 0.00 : 3a97c: 48 29 d3 sub %rdx,%rbx 0.00 : 3a97f: 90 nop 0.00 : 3a980: 48 8b 8c 24 30 02 00 mov 0x230(%rsp),%rcx 0.00 : 3a987: 00 0.00 : 3a988: 48 39 f9 cmp %rdi,%rcx 0.00 : 3a98b: 0f 8f 70 07 00 00 jg 3b101 <__GI_____strtod_l_internal+0xef1> 0.00 : 3a991: 0f 84 57 07 00 00 je 3b0ee <__GI_____strtod_l_internal+0xede> 0.00 : 3a997: 40 0f be c6 movsbl %sil,%eax 0.00 : 3a99b: 83 e8 30 sub $0x30,%eax 0.00 : 3a99e: 48 63 d0 movslq %eax,%rdx 0.00 : 3a9a1: 48 8d 04 89 lea (%rcx,%rcx,4),%rax 0.00 : 3a9a5: 49 83 c0 01 add $0x1,%r8 0.00 : 3a9a9: 48 8d 14 42 lea (%rdx,%rax,2),%rdx 0.00 : 3a9ad: 48 89 94 24 30 02 00 mov %rdx,0x230(%rsp) 0.00 : 3a9b4: 00 0.00 : 3a9b5: 41 0f b6 30 movzbl (%r8),%esi 0.00 : 3a9b9: 8d 46 d0 lea -0x30(%rsi),%eax 0.00 : 3a9bc: 3c 09 cmp $0x9,%al 0.00 : 3a9be: 76 c0 jbe 3a980 <__GI_____strtod_l_internal+0x770> 0.00 : 3a9c0: 45 85 db test %r11d,%r11d 0.00 : 3a9c3: 0f 84 89 fc ff ff je 3a652 <__GI_____strtod_l_internal+0x442> 0.00 : 3a9c9: 48 f7 da neg %rdx 0.00 : 3a9cc: 48 89 94 24 30 02 00 mov %rdx,0x230(%rsp) 0.00 : 3a9d3: 00 0.00 : 3a9d4: e9 79 fc ff ff jmpq 3a652 <__GI_____strtod_l_internal+0x442> 0.00 : 3a9d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.13 : 3a9e0: 4c 89 fd mov %r15,%rbp 0.00 : 3a9e3: e9 2b fc ff ff jmpq 3a613 <__GI_____strtod_l_internal+0x403> 0.04 : 3a9e8: 48 85 ed test %rbp,%rbp 0.00 : 3a9eb: 0f 84 a2 fc ff ff je 3a693 <__GI_____strtod_l_internal+0x483> 0.00 : 3a9f1: 48 83 bc 24 30 02 00 cmpq $0x0,0x230(%rsp) 0.00 : 3a9f8: 00 00 0.04 : 3a9fa: 48 8d 4a ff lea -0x1(%rdx),%rcx 0.00 : 3a9fe: 49 89 eb mov %rbp,%r11 0.13 : 3aa01: 0f 89 8c fc ff ff jns 3a693 <__GI_____strtod_l_internal+0x483> 0.00 : 3aa07: eb 5b jmp 3aa64 <__GI_____strtod_l_internal+0x854> 0.00 : 3aa09: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3aa10: 0f be 01 movsbl (%rcx),%eax 0.00 : 3aa13: 83 e8 30 sub $0x30,%eax 0.00 : 3aa16: 83 f8 09 cmp $0x9,%eax 0.00 : 3aa19: 0f 97 c0 seta %al 0.00 : 3aa1c: 84 c0 test %al,%al 0.00 : 3aa1e: 75 40 jne 3aa60 <__GI_____strtod_l_internal+0x850> 0.00 : 3aa20: 80 39 30 cmpb $0x30,(%rcx) 0.00 : 3aa23: 0f 85 6d fc ff ff jne 3a696 <__GI_____strtod_l_internal+0x486> 0.00 : 3aa29: 49 83 eb 01 sub $0x1,%r11 0.00 : 3aa2d: 41 80 f9 01 cmp $0x1,%r9b 0.00 : 3aa31: 48 19 c0 sbb %rax,%rax 0.00 : 3aa34: 48 83 e0 fd and $0xfffffffffffffffd,%rax 0.00 : 3aa38: 48 83 c0 04 add $0x4,%rax 0.00 : 3aa3c: 48 03 84 24 30 02 00 add 0x230(%rsp),%rax 0.00 : 3aa43: 00 0.00 : 3aa44: 48 83 ed 01 sub $0x1,%rbp 0.00 : 3aa48: 48 89 84 24 30 02 00 mov %rax,0x230(%rsp) 0.00 : 3aa4f: 00 0.00 : 3aa50: 0f 84 40 fc ff ff je 3a696 <__GI_____strtod_l_internal+0x486> 0.00 : 3aa56: 48 85 c0 test %rax,%rax 0.00 : 3aa59: 0f 89 37 fc ff ff jns 3a696 <__GI_____strtod_l_internal+0x486> 0.00 : 3aa5f: 90 nop 0.00 : 3aa60: 48 83 e9 01 sub $0x1,%rcx 0.00 : 3aa64: 45 84 c9 test %r9b,%r9b 0.00 : 3aa67: 74 a7 je 3aa10 <__GI_____strtod_l_internal+0x800> 0.00 : 3aa69: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 3aa6e: 48 0f be 11 movsbq (%rcx),%rdx 0.00 : 3aa72: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 3aa76: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 3aa7a: c1 e8 0c shr $0xc,%eax 0.00 : 3aa7d: 83 f0 01 xor $0x1,%eax 0.00 : 3aa80: 83 e0 01 and $0x1,%eax 0.00 : 3aa83: eb 97 jmp 3aa1c <__GI_____strtod_l_internal+0x80c> 0.00 : 3aa85: 4d 8d 44 24 02 lea 0x2(%r12),%r8 0.00 : 3aa8a: 41 0f b6 74 24 02 movzbl 0x2(%r12),%esi 0.00 : 3aa90: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 3aa96: e9 64 fe ff ff jmpq 3a8ff <__GI_____strtod_l_internal+0x6ef> 0.00 : 3aa9b: 48 8d 0d 3e 60 33 00 lea 0x33603e(%rip),%rcx # 370ae0 <_nl_C_locobj> 0.00 : 3aaa2: 48 8d 35 fd 00 10 00 lea 0x1000fd(%rip),%rsi # 13aba6 <__PRETTY_FUNCTION__.8908+0x28> 0.00 : 3aaa9: ba 03 00 00 00 mov $0x3,%edx 0.00 : 3aaae: 48 89 ef mov %rbp,%rdi 0.00 : 3aab1: e8 fa 9b 04 00 callq 846b0 <__strncasecmp_l> 0.00 : 3aab6: 85 c0 test %eax,%eax 0.00 : 3aab8: 0f 85 68 f8 ff ff jne 3a326 <__GI_____strtod_l_internal+0x116> 0.00 : 3aabe: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3aac4: 74 32 je 3aaf8 <__GI_____strtod_l_internal+0x8e8> 0.00 : 3aac6: 48 8d 7d 03 lea 0x3(%rbp),%rdi 0.00 : 3aaca: 48 8d 0d 0f 60 33 00 lea 0x33600f(%rip),%rcx # 370ae0 <_nl_C_locobj> 0.00 : 3aad1: 48 8d 35 d2 00 10 00 lea 0x1000d2(%rip),%rsi # 13abaa <__PRETTY_FUNCTION__.8908+0x2c> 0.00 : 3aad8: ba 05 00 00 00 mov $0x5,%edx 0.00 : 3aadd: e8 ce 9b 04 00 callq 846b0 <__strncasecmp_l> 0.00 : 3aae2: 83 f8 01 cmp $0x1,%eax 0.00 : 3aae5: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : 3aaea: 48 19 c0 sbb %rax,%rax 0.00 : 3aaed: 83 e0 05 and $0x5,%eax 0.00 : 3aaf0: 48 8d 44 05 03 lea 0x3(%rbp,%rax,1),%rax 0.00 : 3aaf5: 48 89 02 mov %rax,(%rdx) 0.00 : 3aaf8: 8b 5c 24 70 mov 0x70(%rsp),%ebx 0.00 : 3aafc: 85 db test %ebx,%ebx 0.00 : 3aafe: 0f 85 f8 0e 00 00 jne 3b9fc <__GI_____strtod_l_internal+0x17ec> 0.00 : 3ab04: f2 0f 10 05 1c 8f 10 movsd 0x108f1c(%rip),%xmm0 # 143a28 0.00 : 3ab0b: 00 0.00 : 3ab0c: e9 32 f8 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3ab11: 48 8d 0d c8 5f 33 00 lea 0x335fc8(%rip),%rcx # 370ae0 <_nl_C_locobj> 0.00 : 3ab18: 48 8d 35 91 00 10 00 lea 0x100091(%rip),%rsi # 13abb0 <__PRETTY_FUNCTION__.8908+0x32> 0.00 : 3ab1f: ba 03 00 00 00 mov $0x3,%edx 0.00 : 3ab24: 48 89 ef mov %rbp,%rdi 0.00 : 3ab27: e8 84 9b 04 00 callq 846b0 <__strncasecmp_l> 0.00 : 3ab2c: 85 c0 test %eax,%eax 0.00 : 3ab2e: 0f 85 f2 f7 ff ff jne 3a326 <__GI_____strtod_l_internal+0x116> 0.00 : 3ab34: 80 7d 03 28 cmpb $0x28,0x3(%rbp) 0.00 : 3ab38: 48 8d 7d 03 lea 0x3(%rbp),%rdi 0.00 : 3ab3c: 0f 84 e8 11 00 00 je 3bd2a <__GI_____strtod_l_internal+0x1b1a> 0.00 : 3ab42: f2 0f 10 05 1e 8f 10 movsd 0x108f1e(%rip),%xmm0 # 143a68 0.00 : 3ab49: 00 0.00 : 3ab4a: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3ab50: 0f 84 ed f7 ff ff je 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3ab56: 48 8b 74 24 50 mov 0x50(%rsp),%rsi 0.00 : 3ab5b: 48 89 3e mov %rdi,(%rsi) 0.00 : 3ab5e: e9 e0 f7 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3ab63: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 3ab68: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 3ab6d: 4c 8b 4b 68 mov 0x68(%rbx),%r9 0.00 : 3ab71: 48 0f be c2 movsbq %dl,%rax 0.00 : 3ab75: 41 f6 44 41 01 10 testb $0x10,0x1(%r9,%rax,2) 0.00 : 3ab7b: 75 2c jne 3aba9 <__GI_____strtod_l_internal+0x999> 0.00 : 3ab7d: 0f 1f 00 nopl (%rax) 0.00 : 3ab80: 49 83 c4 01 add $0x1,%r12 0.00 : 3ab84: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 3ab89: 48 0f be c2 movsbq %dl,%rax 0.00 : 3ab8d: 41 f6 44 41 01 10 testb $0x10,0x1(%r9,%rax,2) 0.00 : 3ab93: 74 eb je 3ab80 <__GI_____strtod_l_internal+0x970> 0.00 : 3ab95: eb 12 jmp 3aba9 <__GI_____strtod_l_internal+0x999> 0.00 : 3ab97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3ab9e: 00 00 0.00 : 3aba0: 49 83 c4 01 add $0x1,%r12 0.00 : 3aba4: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 3aba9: 80 fa 30 cmp $0x30,%dl 0.00 : 3abac: 74 f2 je 3aba0 <__GI_____strtod_l_internal+0x990> 0.00 : 3abae: 0f be c2 movsbl %dl,%eax 0.00 : 3abb1: 83 e8 30 sub $0x30,%eax 0.00 : 3abb4: 83 f8 09 cmp $0x9,%eax 0.00 : 3abb7: 0f 86 b3 01 00 00 jbe 3ad70 <__GI_____strtod_l_internal+0xb60> 0.00 : 3abbd: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 3abc2: 48 0f be d2 movsbq %dl,%rdx 0.00 : 3abc6: 49 8d 7c 24 01 lea 0x1(%r12),%rdi 0.00 : 3abcb: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 3abcf: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 3abd2: 83 e8 57 sub $0x57,%eax 0.00 : 3abd5: 48 63 d0 movslq %eax,%rdx 0.00 : 3abd8: 48 8d 05 e1 8b 0f 00 lea 0xf8be1(%rip),%rax # 1337c0 0.00 : 3abdf: 8b 34 90 mov (%rax,%rdx,4),%esi 0.00 : 3abe2: 85 f6 test %esi,%esi 0.00 : 3abe4: 0f 84 54 18 00 00 je 3c43e <__GI_____strtod_l_internal+0x222e> 0.00 : 3abea: 41 b8 34 00 00 00 mov $0x34,%r8d 0.00 : 3abf0: 41 29 f0 sub %esi,%r8d 0.00 : 3abf3: 41 8d 48 01 lea 0x1(%r8),%ecx 0.00 : 3abf7: 48 d3 e2 shl %cl,%rdx 0.00 : 3abfa: 48 8b 8c 24 30 02 00 mov 0x230(%rsp),%rcx 0.00 : 3ac01: 00 0.00 : 3ac02: 48 89 94 24 20 02 00 mov %rdx,0x220(%rsp) 0.00 : 3ac09: 00 0.00 : 3ac0a: 48 85 c9 test %rcx,%rcx 0.00 : 3ac0d: 0f 88 a0 0d 00 00 js 3b9b3 <__GI_____strtod_l_internal+0x17a3> 0.00 : 3ac13: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 3ac1a: 00 00 80 0.00 : 3ac1d: 48 63 d6 movslq %esi,%rdx 0.00 : 3ac20: 48 29 c8 sub %rcx,%rax 0.00 : 3ac23: 48 29 d0 sub %rdx,%rax 0.00 : 3ac26: 48 8d 50 03 lea 0x3(%rax),%rdx 0.00 : 3ac2a: 48 85 c0 test %rax,%rax 0.00 : 3ac2d: 48 0f 48 c2 cmovs %rdx,%rax 0.00 : 3ac31: 48 c1 f8 02 sar $0x2,%rax 0.00 : 3ac35: 4c 39 d8 cmp %r11,%rax 0.00 : 3ac38: 0f 82 9f 18 00 00 jb 3c4dd <__GI_____strtod_l_internal+0x22cd> 0.00 : 3ac3e: 8d 46 ff lea -0x1(%rsi),%eax 0.00 : 3ac41: 4a 8d 54 99 fc lea -0x4(%rcx,%r11,4),%rdx 0.00 : 3ac46: 48 89 ee mov %rbp,%rsi 0.00 : 3ac49: 48 98 cltq 0.00 : 3ac4b: 48 01 c2 add %rax,%rdx 0.00 : 3ac4e: 48 83 ee 01 sub $0x1,%rsi 0.00 : 3ac52: 48 89 94 24 30 02 00 mov %rdx,0x230(%rsp) 0.00 : 3ac59: 00 0.00 : 3ac5a: 75 3a jne 3ac96 <__GI_____strtod_l_internal+0xa86> 0.00 : 3ac5c: e9 2d 05 00 00 jmpq 3b18e <__GI_____strtod_l_internal+0xf7e> 0.00 : 3ac61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3ac68: 48 63 d0 movslq %eax,%rdx 0.00 : 3ac6b: 48 83 c7 01 add $0x1,%rdi 0.00 : 3ac6f: 41 83 f8 02 cmp $0x2,%r8d 0.00 : 3ac73: 0f 8e 68 0b 00 00 jle 3b7e1 <__GI_____strtod_l_internal+0x15d1> 0.00 : 3ac79: 41 8d 48 fd lea -0x3(%r8),%ecx 0.00 : 3ac7d: 48 d3 e2 shl %cl,%rdx 0.00 : 3ac80: 48 09 94 24 20 02 00 or %rdx,0x220(%rsp) 0.00 : 3ac87: 00 0.00 : 3ac88: 48 83 ee 01 sub $0x1,%rsi 0.00 : 3ac8c: 0f 84 fc 04 00 00 je 3b18e <__GI_____strtod_l_internal+0xf7e> 0.00 : 3ac92: 41 83 e8 04 sub $0x4,%r8d 0.00 : 3ac96: 0f b6 17 movzbl (%rdi),%edx 0.00 : 3ac99: 48 0f be c2 movsbq %dl,%rax 0.00 : 3ac9d: 41 f6 44 41 01 10 testb $0x10,0x1(%r9,%rax,2) 0.00 : 3aca3: 75 08 jne 3acad <__GI_____strtod_l_internal+0xa9d> 0.00 : 3aca5: 48 03 7c 24 40 add 0x40(%rsp),%rdi 0.00 : 3acaa: 0f b6 17 movzbl (%rdi),%edx 0.00 : 3acad: 0f be c2 movsbl %dl,%eax 0.00 : 3acb0: 83 e8 30 sub $0x30,%eax 0.00 : 3acb3: 83 f8 09 cmp $0x9,%eax 0.00 : 3acb6: 76 b0 jbe 3ac68 <__GI_____strtod_l_internal+0xa58> 0.00 : 3acb8: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 3acbd: 48 0f be d2 movsbq %dl,%rdx 0.00 : 3acc1: 48 83 c7 01 add $0x1,%rdi 0.00 : 3acc5: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 3acc9: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 3accc: 83 e8 57 sub $0x57,%eax 0.00 : 3accf: 48 63 d0 movslq %eax,%rdx 0.00 : 3acd2: eb 9b jmp 3ac6f <__GI_____strtod_l_internal+0xa5f> 0.00 : 3acd4: 4d 8d 44 24 02 lea 0x2(%r12),%r8 0.00 : 3acd9: 41 0f b6 74 24 02 movzbl 0x2(%r12),%esi 0.00 : 3acdf: 45 31 db xor %r11d,%r11d 0.00 : 3ace2: e9 18 fc ff ff jmpq 3a8ff <__GI_____strtod_l_internal+0x6ef> 0.00 : 3ace7: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3aced: 0f 84 35 f7 ff ff je 3a428 <__GI_____strtod_l_internal+0x218> 0.00 : 3acf3: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : 3acf8: 48 89 03 mov %rax,(%rbx) 0.00 : 3acfb: e9 28 f7 ff ff jmpq 3a428 <__GI_____strtod_l_internal+0x218> 0.00 : 3ad00: 40 80 ff 65 cmp $0x65,%dil 0.00 : 3ad04: 0f 85 e5 f6 ff ff jne 3a3ef <__GI_____strtod_l_internal+0x1df> 0.00 : 3ad0a: e9 81 f7 ff ff jmpq 3a490 <__GI_____strtod_l_internal+0x280> 0.00 : 3ad0f: 4d 85 ff test %r15,%r15 0.00 : 3ad12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3ad18: 0f 85 94 00 00 00 jne 3adb2 <__GI_____strtod_l_internal+0xba2> 0.00 : 3ad1e: 49 83 fa ff cmp $0xffffffffffffffff,%r10 0.00 : 3ad22: b9 35 01 00 00 mov $0x135,%ecx 0.00 : 3ad27: 0f 84 09 fc ff ff je 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3ad2d: 48 b8 ca fe ff ff ff movabs $0x7ffffffffffffeca,%rax 0.00 : 3ad34: ff ff 7f 0.00 : 3ad37: 49 8d 8a 35 01 00 00 lea 0x135(%r10),%rcx 0.00 : 3ad3e: 49 39 c2 cmp %rax,%r10 0.00 : 3ad41: 0f 86 ef fb ff ff jbe 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3ad47: 48 8d 0d 82 7b 10 00 lea 0x107b82(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3ad4e: 48 8d 35 cb fe 0f 00 lea 0xffecb(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3ad55: 48 8d 3d 2c 39 10 00 lea 0x10392c(%rip),%rdi # 13e688 <__PRETTY_FUNCTION__.11129+0xcaf> 0.00 : 3ad5c: ba 7b 03 00 00 mov $0x37b,%edx 0.00 : 3ad61: e8 ba 0b ff ff callq 2b920 <__assert_fail> 0.00 : 3ad66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3ad6d: 00 00 00 0.00 : 3ad70: 48 63 d0 movslq %eax,%rdx 0.00 : 3ad73: 49 8d 7c 24 01 lea 0x1(%r12),%rdi 0.00 : 3ad78: e9 5b fe ff ff jmpq 3abd8 <__GI_____strtod_l_internal+0x9c8> 0.00 : 3ad7d: 4c 39 ed cmp %r13,%rbp 0.00 : 3ad80: 0f 85 0a f7 ff ff jne 3a490 <__GI_____strtod_l_internal+0x280> 0.00 : 3ad86: 48 8b 4c 24 40 mov 0x40(%rsp),%rcx 0.00 : 3ad8b: 0f b6 54 0d 00 movzbl 0x0(%rbp,%rcx,1),%edx 0.00 : 3ad90: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 3ad93: 3c 09 cmp $0x9,%al 0.00 : 3ad95: 76 13 jbe 3adaa <__GI_____strtod_l_internal+0xb9a> 0.00 : 3ad97: 48 0f be c2 movsbq %dl,%rax 0.00 : 3ad9b: 41 8b 04 80 mov (%r8,%rax,4),%eax 0.00 : 3ad9f: 83 e8 61 sub $0x61,%eax 0.00 : 3ada2: 3c 05 cmp $0x5,%al 0.00 : 3ada4: 0f 87 36 f6 ff ff ja 3a3e0 <__GI_____strtod_l_internal+0x1d0> 0.00 : 3adaa: 49 89 ec mov %rbp,%r12 0.00 : 3adad: e9 e1 f6 ff ff jmpq 3a493 <__GI_____strtod_l_internal+0x283> 0.00 : 3adb2: 4d 85 d2 test %r10,%r10 0.00 : 3adb5: 0f 84 56 0c 00 00 je 3ba11 <__GI_____strtod_l_internal+0x1801> 0.00 : 3adbb: 48 8d 0d 0e 7b 10 00 lea 0x107b0e(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3adc2: 48 8d 35 57 fe 0f 00 lea 0xffe57(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3adc9: 48 8d 3d 50 35 10 00 lea 0x103550(%rip),%rdi # 13e320 <__PRETTY_FUNCTION__.11129+0x947> 0.00 : 3add0: ba 6f 03 00 00 mov $0x36f,%edx 0.00 : 3add5: e8 46 0b ff ff callq 2b920 <__assert_fail> 0.00 : 3adda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3ade0: 45 85 db test %r11d,%r11d 0.00 : 3ade3: 0f 84 8f 0a 00 00 je 3b878 <__GI_____strtod_l_internal+0x1668> 0.00 : 3ade9: 48 b8 f3 fe ff ff ff movabs $0x1ffffffffffffef3,%rax 0.00 : 3adf0: ff ff 1f 0.00 : 3adf3: 4a 8d 0c bd 32 04 00 lea 0x432(,%r15,4),%rcx 0.00 : 3adfa: 00 0.00 : 3adfb: 49 39 c7 cmp %rax,%r15 0.00 : 3adfe: 0f 86 32 fb ff ff jbe 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3ae04: 48 8d 0d c5 7a 10 00 lea 0x107ac5(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3ae0b: 48 8d 35 0e fe 0f 00 lea 0xffe0e(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3ae12: 48 8d 3d 9f 37 10 00 lea 0x10379f(%rip),%rdi # 13e5b8 <__PRETTY_FUNCTION__.11129+0xbdf> 0.00 : 3ae19: ba 47 03 00 00 mov $0x347,%edx 0.00 : 3ae1e: e8 fd 0a ff ff callq 2b920 <__assert_fail> 0.00 : 3ae23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.17 : 3ae28: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : 3ae2f: 00 0.22 : 3ae30: 48 8d 9c 24 70 01 00 lea 0x170(%rsp),%rbx 0.00 : 3ae37: 00 0.00 : 3ae38: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : 3ae3d: 48 8d 8c 24 38 02 00 lea 0x238(%rsp),%rcx 0.00 : 3ae44: 00 0.13 : 3ae45: 4c 8d 84 24 30 02 00 lea 0x230(%rsp),%r8 0.00 : 3ae4c: 00 0.04 : 3ae4d: 4c 89 e7 mov %r12,%rdi 0.00 : 3ae50: 4d 89 f1 mov %r14,%r9 0.00 : 3ae53: 48 89 da mov %rbx,%rdx 0.13 : 3ae56: 48 89 5c 24 38 mov %rbx,0x38(%rsp) 0.04 : 3ae5b: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 3ae60: 8b b4 24 c8 00 00 00 mov 0xc8(%rsp),%esi 0.00 : 3ae67: 48 89 04 24 mov %rax,(%rsp) 0.26 : 3ae6b: e8 90 ee ff ff callq 39d00 0.26 : 3ae70: 48 83 bc 24 30 02 00 cmpq $0x0,0x230(%rsp) 0.00 : 3ae77: 00 00 0.04 : 3ae79: 49 89 c4 mov %rax,%r12 0.09 : 3ae7c: 0f 8e 6e 01 00 00 jle 3aff0 <__GI_____strtod_l_internal+0xde0> 0.00 : 3ae82: 48 8d 94 24 d0 00 00 lea 0xd0(%rsp),%rdx 0.00 : 3ae89: 00 0.00 : 3ae8a: 48 89 9c 24 98 00 00 mov %rbx,0x98(%rsp) 0.00 : 3ae91: 00 0.00 : 3ae92: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 3ae98: 4c 8d 2d 61 99 0f 00 lea 0xf9961(%rip),%r13 # 134800 <_fpioconst_pow10> 0.00 : 3ae9f: 48 89 54 24 28 mov %rdx,0x28(%rsp) 0.00 : 3aea4: 48 89 94 24 a0 00 00 mov %rdx,0xa0(%rsp) 0.00 : 3aeab: 00 0.00 : 3aeac: eb 7d jmp 3af2b <__GI_____strtod_l_internal+0xd1b> 0.00 : 3aeae: 49 8b 4d 00 mov 0x0(%r13),%rcx 0.00 : 3aeb2: 48 8d 35 47 8b 0f 00 lea 0xf8b47(%rip),%rsi # 133a00 <__tens> 0.00 : 3aeb9: 48 8b bc 24 a0 00 00 mov 0xa0(%rsp),%rdi 0.00 : 3aec0: 00 0.00 : 3aec1: 49 89 d8 mov %rbx,%r8 0.00 : 3aec4: 48 8d 4c ce 08 lea 0x8(%rsi,%rcx,8),%rcx 0.00 : 3aec9: 48 8b b4 24 98 00 00 mov 0x98(%rsp),%rsi 0.00 : 3aed0: 00 0.00 : 3aed1: e8 ea 77 00 00 callq 426c0 <__mpn_mul> 0.00 : 3aed6: 48 89 c2 mov %rax,%rdx 0.00 : 3aed9: 48 89 d8 mov %rbx,%rax 0.00 : 3aedc: 48 03 84 24 38 02 00 add 0x238(%rsp),%rax 0.00 : 3aee3: 00 0.00 : 3aee4: 48 85 d2 test %rdx,%rdx 0.00 : 3aee7: 48 89 84 24 38 02 00 mov %rax,0x238(%rsp) 0.00 : 3aeee: 00 0.00 : 3aeef: 0f 84 9d 00 00 00 je 3af92 <__GI_____strtod_l_internal+0xd82> 0.00 : 3aef5: 48 8b b4 24 a0 00 00 mov 0xa0(%rsp),%rsi 0.00 : 3aefc: 00 0.00 : 3aefd: 48 8b 94 24 98 00 00 mov 0x98(%rsp),%rdx 0.00 : 3af04: 00 0.00 : 3af05: 48 89 b4 24 98 00 00 mov %rsi,0x98(%rsp) 0.00 : 3af0c: 00 0.00 : 3af0d: 48 89 94 24 a0 00 00 mov %rdx,0xa0(%rsp) 0.00 : 3af14: 00 0.00 : 3af15: 48 83 bc 24 30 02 00 cmpq $0x0,0x230(%rsp) 0.00 : 3af1c: 00 00 0.00 : 3af1e: 0f 84 9f 00 00 00 je 3afc3 <__GI_____strtod_l_internal+0xdb3> 0.00 : 3af24: 45 01 ff add %r15d,%r15d 0.00 : 3af27: 49 83 c5 18 add $0x18,%r13 0.00 : 3af2b: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3af32: 00 0.00 : 3af33: 49 63 cf movslq %r15d,%rcx 0.00 : 3af36: 48 85 f1 test %rsi,%rcx 0.00 : 3af39: 74 da je 3af15 <__GI_____strtod_l_internal+0xd05> 0.00 : 3af3b: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 3af3f: 48 8b 94 24 38 02 00 mov 0x238(%rsp),%rdx 0.00 : 3af46: 00 0.00 : 3af47: 48 31 f1 xor %rsi,%rcx 0.00 : 3af4a: 48 89 8c 24 30 02 00 mov %rcx,0x230(%rsp) 0.00 : 3af51: 00 0.00 : 3af52: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 3af56: 48 39 d3 cmp %rdx,%rbx 0.00 : 3af59: 0f 8e 4f ff ff ff jle 3aeae <__GI_____strtod_l_internal+0xc9e> 0.00 : 3af5f: 49 8b 75 00 mov 0x0(%r13),%rsi 0.00 : 3af63: 48 8d 05 96 8a 0f 00 lea 0xf8a96(%rip),%rax # 133a00 <__tens> 0.00 : 3af6a: 48 8b 8c 24 98 00 00 mov 0x98(%rsp),%rcx 0.00 : 3af71: 00 0.00 : 3af72: 48 8b bc 24 a0 00 00 mov 0xa0(%rsp),%rdi 0.00 : 3af79: 00 0.00 : 3af7a: 49 89 d0 mov %rdx,%r8 0.00 : 3af7d: 48 89 da mov %rbx,%rdx 0.00 : 3af80: 48 8d 74 f0 08 lea 0x8(%rax,%rsi,8),%rsi 0.00 : 3af85: e8 36 77 00 00 callq 426c0 <__mpn_mul> 0.00 : 3af8a: 48 89 c2 mov %rax,%rdx 0.00 : 3af8d: e9 47 ff ff ff jmpq 3aed9 <__GI_____strtod_l_internal+0xcc9> 0.00 : 3af92: 48 8b b4 24 a0 00 00 mov 0xa0(%rsp),%rsi 0.00 : 3af99: 00 0.00 : 3af9a: 48 8b 8c 24 98 00 00 mov 0x98(%rsp),%rcx 0.00 : 3afa1: 00 0.00 : 3afa2: 48 83 e8 01 sub $0x1,%rax 0.00 : 3afa6: 48 89 84 24 38 02 00 mov %rax,0x238(%rsp) 0.00 : 3afad: 00 0.00 : 3afae: 48 89 8c 24 a0 00 00 mov %rcx,0xa0(%rsp) 0.00 : 3afb5: 00 0.00 : 3afb6: 48 89 b4 24 98 00 00 mov %rsi,0x98(%rsp) 0.00 : 3afbd: 00 0.00 : 3afbe: e9 52 ff ff ff jmpq 3af15 <__GI_____strtod_l_internal+0xd05> 0.00 : 3afc3: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 3afc8: 48 39 9c 24 98 00 00 cmp %rbx,0x98(%rsp) 0.00 : 3afcf: 00 0.00 : 3afd0: 75 1e jne 3aff0 <__GI_____strtod_l_internal+0xde0> 0.00 : 3afd2: 48 8b 94 24 38 02 00 mov 0x238(%rsp),%rdx 0.00 : 3afd9: 00 0.00 : 3afda: 48 8b b4 24 98 00 00 mov 0x98(%rsp),%rsi 0.00 : 3afe1: 00 0.00 : 3afe2: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 3afe7: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 3afeb: e8 60 97 04 00 callq 84750 0.13 : 3aff0: 4c 8b 84 24 38 02 00 mov 0x238(%rsp),%r8 0.00 : 3aff7: 00 0.00 : 3aff8: 4d 8d 48 ff lea -0x1(%r8),%r9 0.00 : 3affc: 4c 89 c2 mov %r8,%rdx 0.09 : 3afff: 48 c1 e2 06 shl $0x6,%rdx 0.13 : 3b003: 4a 0f bd 84 cc 70 01 bsr 0x170(%rsp,%r9,8),%rax 0.00 : 3b00a: 00 00 1.83 : 3b00c: 89 d6 mov %edx,%esi 0.00 : 3b00e: 83 f0 3f xor $0x3f,%eax 0.22 : 3b011: 29 c6 sub %eax,%esi 0.17 : 3b013: 81 fe 00 04 00 00 cmp $0x400,%esi 0.17 : 3b019: 89 b4 24 84 00 00 00 mov %esi,0x84(%rsp) 0.00 : 3b020: 0f 8f cc 13 00 00 jg 3c3f2 <__GI_____strtod_l_internal+0x21e2> 0.26 : 3b026: 83 fe 35 cmp $0x35,%esi 0.00 : 3b029: 0f 8e a8 08 00 00 jle 3b8d7 <__GI_____strtod_l_internal+0x16c7> 0.00 : 3b02f: 8d 46 cb lea -0x35(%rsi),%eax 0.00 : 3b032: 41 89 c5 mov %eax,%r13d 0.00 : 3b035: 89 c2 mov %eax,%edx 0.00 : 3b037: 41 83 e5 3f and $0x3f,%r13d 0.00 : 3b03b: c1 fa 06 sar $0x6,%edx 0.00 : 3b03e: 49 63 c5 movslq %r13d,%rax 0.00 : 3b041: 48 63 ca movslq %edx,%rcx 0.00 : 3b044: 48 85 c0 test %rax,%rax 0.00 : 3b047: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 3b04c: 0f 85 be 0d 00 00 jne 3be10 <__GI_____strtod_l_internal+0x1c00> 0.00 : 3b052: 48 8b 5c 24 38 mov 0x38(%rsp),%rbx 0.00 : 3b057: 48 89 cf mov %rcx,%rdi 0.00 : 3b05a: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b061: 00 0.00 : 3b062: 48 83 ef 01 sub $0x1,%rdi 0.00 : 3b066: 41 b8 3f 00 00 00 mov $0x3f,%r8d 0.00 : 3b06c: 48 8b 04 cb mov (%rbx,%rcx,8),%rax 0.00 : 3b070: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3b077: 00 0.00 : 3b078: 31 c9 xor %ecx,%ecx 0.00 : 3b07a: 48 83 bc 24 70 01 00 cmpq $0x0,0x170(%rsp) 0.00 : 3b081: 00 00 0.00 : 3b083: 75 1a jne 3b09f <__GI_____strtod_l_internal+0xe8f> 0.00 : 3b085: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 3b08a: 31 c9 xor %ecx,%ecx 0.00 : 3b08c: 48 83 c2 08 add $0x8,%rdx 0.00 : 3b090: 48 8b 02 mov (%rdx),%rax 0.00 : 3b093: 83 c1 01 add $0x1,%ecx 0.00 : 3b096: 48 83 c2 08 add $0x8,%rdx 0.00 : 3b09a: 48 85 c0 test %rax,%rax 0.00 : 3b09d: 74 f1 je 3b090 <__GI_____strtod_l_internal+0xe80> 0.00 : 3b09f: 48 3b ac 24 c8 00 00 cmp 0xc8(%rsp),%rbp 0.00 : 3b0a6: 00 0.00 : 3b0a7: b8 01 00 00 00 mov $0x1,%eax 0.00 : 3b0ac: 77 0c ja 3b0ba <__GI_____strtod_l_internal+0xeaa> 0.00 : 3b0ae: 48 63 c1 movslq %ecx,%rax 0.00 : 3b0b1: 48 39 c7 cmp %rax,%rdi 0.00 : 3b0b4: 0f 9f c0 setg %al 0.00 : 3b0b7: 0f b6 c0 movzbl %al,%eax 0.00 : 3b0ba: 48 8b 8c fc 70 01 00 mov 0x170(%rsp,%rdi,8),%rcx 0.00 : 3b0c1: 00 0.00 : 3b0c2: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 3b0c6: 83 ee 01 sub $0x1,%esi 0.00 : 3b0c9: 48 63 f6 movslq %esi,%rsi 0.00 : 3b0cc: 41 89 c1 mov %eax,%r9d 0.00 : 3b0cf: 4c 89 ff mov %r15,%rdi 0.00 : 3b0d2: e8 19 ef ff ff callq 39ff0 0.00 : 3b0d7: e9 67 f2 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.13 : 3b0dc: 4c 89 d8 mov %r11,%rax 0.00 : 3b0df: 48 f7 d8 neg %rax 0.00 : 3b0e2: 48 39 d0 cmp %rdx,%rax 0.04 : 3b0e5: 48 0f 4c c2 cmovl %rdx,%rax 0.39 : 3b0e9: e9 c3 f6 ff ff jmpq 3a7b1 <__GI_____strtod_l_internal+0x5a1> 0.00 : 3b0ee: 40 0f be c6 movsbl %sil,%eax 0.00 : 3b0f2: 83 e8 30 sub $0x30,%eax 0.00 : 3b0f5: 48 63 d0 movslq %eax,%rdx 0.00 : 3b0f8: 48 39 da cmp %rbx,%rdx 0.00 : 3b0fb: 0f 8e a0 f8 ff ff jle 3a9a1 <__GI_____strtod_l_internal+0x791> 0.00 : 3b101: 49 83 c2 01 add $0x1,%r10 0.00 : 3b105: 0f 84 ad 07 00 00 je 3b8b8 <__GI_____strtod_l_internal+0x16a8> 0.00 : 3b10b: 48 8b 15 26 6d 33 00 mov 0x336d26(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3b112: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3b119: 00 00 0.00 : 3b11b: 45 85 db test %r11d,%r11d 0.00 : 3b11e: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 0.00 : 3b125: 0f 85 8d 07 00 00 jne 3b8b8 <__GI_____strtod_l_internal+0x16a8> 0.00 : 3b12b: 44 8b 6c 24 70 mov 0x70(%rsp),%r13d 0.00 : 3b130: 48 ba 00 00 00 00 00 movabs $0x7ff0000000000000,%rdx 0.00 : 3b137: 00 f0 7f 0.00 : 3b13a: 45 85 ed test %r13d,%r13d 0.00 : 3b13d: 74 11 je 3b150 <__GI_____strtod_l_internal+0xf40> 0.00 : 3b13f: 48 ba 00 00 00 00 00 movabs $0xfff0000000000000,%rdx 0.00 : 3b146: 00 f0 ff 0.00 : 3b149: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3b150: 49 83 c0 01 add $0x1,%r8 0.00 : 3b154: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 3b158: 83 e8 30 sub $0x30,%eax 0.00 : 3b15b: 3c 09 cmp $0x9,%al 0.00 : 3b15d: 76 f1 jbe 3b150 <__GI_____strtod_l_internal+0xf40> 0.00 : 3b15f: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3b165: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 3b16a: f2 0f 10 44 24 18 movsd 0x18(%rsp),%xmm0 0.00 : 3b170: 0f 84 cd f1 ff ff je 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b176: 48 8b 4c 24 50 mov 0x50(%rsp),%rcx 0.00 : 3b17b: 4c 89 01 mov %r8,(%rcx) 0.00 : 3b17e: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 3b183: f2 0f 10 44 24 18 movsd 0x18(%rsp),%xmm0 0.00 : 3b189: e9 b5 f1 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b18e: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3b195: 00 0.00 : 3b196: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 3b19a: 48 8d bc 24 20 02 00 lea 0x220(%rsp),%rdi 0.00 : 3b1a1: 00 0.00 : 3b1a2: 45 31 c9 xor %r9d,%r9d 0.00 : 3b1a5: 45 31 c0 xor %r8d,%r8d 0.00 : 3b1a8: 31 c9 xor %ecx,%ecx 0.00 : 3b1aa: e8 41 ee ff ff callq 39ff0 0.00 : 3b1af: e9 8f f1 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.13 : 3b1b4: be 37 00 00 00 mov $0x37,%esi 0.09 : 3b1b9: 2b b4 24 84 00 00 00 sub 0x84(%rsp),%esi 0.09 : 3b1c0: ba 56 55 55 55 mov $0x55555556,%edx 0.00 : 3b1c5: 48 8b 9c 24 c8 00 00 mov 0xc8(%rsp),%rbx 0.00 : 3b1cc: 00 0.13 : 3b1cd: c7 84 24 ac 00 00 00 movl $0x0,0xac(%rsp) 0.00 : 3b1d4: 00 00 00 00 0.13 : 3b1d8: 89 f0 mov %esi,%eax 0.00 : 3b1da: c1 fe 1f sar $0x1f,%esi 0.13 : 3b1dd: f7 ea imul %edx 0.61 : 3b1df: 29 f2 sub %esi,%edx 0.09 : 3b1e1: 48 63 d2 movslq %edx,%rdx 0.44 : 3b1e4: 48 8d 44 13 02 lea 0x2(%rbx,%rdx,1),%rax 0.48 : 3b1e9: 48 39 c5 cmp %rax,%rbp 0.00 : 3b1ec: 7e 0e jle 3b1fc <__GI_____strtod_l_internal+0xfec> 0.00 : 3b1ee: 48 89 c5 mov %rax,%rbp 0.00 : 3b1f1: c7 84 24 ac 00 00 00 movl $0x1,0xac(%rsp) 0.00 : 3b1f8: 01 00 00 00 0.39 : 3b1fc: 2b ac 24 c8 00 00 00 sub 0xc8(%rsp),%ebp 0.09 : 3b203: 48 8d b4 24 d0 00 00 lea 0xd0(%rsp),%rsi 0.00 : 3b20a: 00 0.00 : 3b20b: 48 8d 84 24 70 01 00 lea 0x170(%rsp),%rax 0.00 : 3b212: 00 0.00 : 3b213: 4c 8d 2d e6 95 0f 00 lea 0xf95e6(%rip),%r13 # 134800 <_fpioconst_pow10> 0.26 : 3b21a: 48 c7 44 24 78 00 00 movq $0x0,0x78(%rsp) 0.00 : 3b221: 00 00 0.04 : 3b223: 48 89 74 24 28 mov %rsi,0x28(%rsp) 0.04 : 3b228: 48 89 b4 24 b0 00 00 mov %rsi,0xb0(%rsp) 0.00 : 3b22f: 00 0.00 : 3b230: 48 89 44 24 38 mov %rax,0x38(%rsp) 0.22 : 3b235: 48 89 84 24 b8 00 00 mov %rax,0xb8(%rsp) 0.00 : 3b23c: 00 0.00 : 3b23d: 41 89 ef mov %ebp,%r15d 0.00 : 3b240: 89 6c 24 64 mov %ebp,0x64(%rsp) 0.00 : 3b244: bd 01 00 00 00 mov $0x1,%ebp 0.39 : 3b249: 41 29 cf sub %ecx,%r15d 0.00 : 3b24c: eb 40 jmp 3b28e <__GI_____strtod_l_internal+0x107e> 0.00 : 3b24e: 49 8b 45 08 mov 0x8(%r13),%rax 0.31 : 3b252: 48 8d 0d a7 87 0f 00 lea 0xf87a7(%rip),%rcx # 133a00 <__tens> 0.09 : 3b259: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 3b260: 00 0.00 : 3b261: 48 83 e8 01 sub $0x1,%rax 0.00 : 3b265: 48 89 44 24 78 mov %rax,0x78(%rsp) 0.52 : 3b26a: 49 8b 75 00 mov 0x0(%r13),%rsi 0.00 : 3b26e: 48 89 c2 mov %rax,%rdx 0.00 : 3b271: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 3b275: 48 8d 74 f1 08 lea 0x8(%rcx,%rsi,8),%rsi 0.44 : 3b27a: e8 d1 94 04 00 callq 84750 0.87 : 3b27f: 45 85 ff test %r15d,%r15d 0.00 : 3b282: 0f 84 99 00 00 00 je 3b321 <__GI_____strtod_l_internal+0x1111> 0.00 : 3b288: 01 ed add %ebp,%ebp 0.00 : 3b28a: 49 83 c5 18 add $0x18,%r13 0.04 : 3b28e: 41 85 ef test %ebp,%r15d 0.00 : 3b291: 74 ec je 3b27f <__GI_____strtod_l_internal+0x106f> 0.26 : 3b293: 41 31 ef xor %ebp,%r15d 0.04 : 3b296: 48 83 7c 24 78 00 cmpq $0x0,0x78(%rsp) 0.00 : 3b29c: 74 b0 je 3b24e <__GI_____strtod_l_internal+0x103e> 0.00 : 3b29e: 49 8b 5d 08 mov 0x8(%r13),%rbx 0.00 : 3b2a2: 49 8b 75 00 mov 0x0(%r13),%rsi 0.00 : 3b2a6: 48 8d 05 53 87 0f 00 lea 0xf8753(%rip),%rax # 133a00 <__tens> 0.00 : 3b2ad: 4c 8b 44 24 78 mov 0x78(%rsp),%r8 0.00 : 3b2b2: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx 0.00 : 3b2b9: 00 0.00 : 3b2ba: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : 3b2c1: 00 0.00 : 3b2c2: 48 83 eb 01 sub $0x1,%rbx 0.00 : 3b2c6: 48 8d 74 f0 08 lea 0x8(%rax,%rsi,8),%rsi 0.00 : 3b2cb: 48 89 da mov %rbx,%rdx 0.00 : 3b2ce: e8 ed 73 00 00 callq 426c0 <__mpn_mul> 0.00 : 3b2d3: 48 01 5c 24 78 add %rbx,0x78(%rsp) 0.00 : 3b2d8: 48 85 c0 test %rax,%rax 0.00 : 3b2db: 0f 84 4a 05 00 00 je 3b82b <__GI_____strtod_l_internal+0x161b> 0.00 : 3b2e1: 48 8b 84 24 b8 00 00 mov 0xb8(%rsp),%rax 0.00 : 3b2e8: 00 0.00 : 3b2e9: 48 8b 94 24 b0 00 00 mov 0xb0(%rsp),%rdx 0.00 : 3b2f0: 00 0.00 : 3b2f1: 48 89 84 24 b0 00 00 mov %rax,0xb0(%rsp) 0.00 : 3b2f8: 00 0.00 : 3b2f9: 48 89 94 24 b8 00 00 mov %rdx,0xb8(%rsp) 0.00 : 3b300: 00 0.00 : 3b301: e9 79 ff ff ff jmpq 3b27f <__GI_____strtod_l_internal+0x106f> 0.00 : 3b306: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 3b30d: 00 00 80 0.00 : 3b310: 48 03 84 24 30 02 00 add 0x230(%rsp),%rax 0.00 : 3b317: 00 0.00 : 3b318: 48 c1 e8 02 shr $0x2,%rax 0.00 : 3b31c: e9 35 f4 ff ff jmpq 3a756 <__GI_____strtod_l_internal+0x546> 0.48 : 3b321: 48 8b 5c 24 38 mov 0x38(%rsp),%rbx 0.26 : 3b326: 48 39 9c 24 b0 00 00 cmp %rbx,0xb0(%rsp) 0.00 : 3b32d: 00 0.00 : 3b32e: 0f 84 ec 0e 00 00 je 3c220 <__GI_____strtod_l_internal+0x2010> 0.61 : 3b334: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi 0.00 : 3b33b: 00 0.00 : 3b33c: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.35 : 3b341: 48 8d 8c 24 38 02 00 lea 0x238(%rsp),%rcx 0.00 : 3b348: 00 0.00 : 3b349: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.17 : 3b34e: 4c 8d 84 24 30 02 00 lea 0x230(%rsp),%r8 0.00 : 3b355: 00 0.00 : 3b356: 4d 89 f1 mov %r14,%r9 0.09 : 3b359: 4c 89 e7 mov %r12,%rdi 0.00 : 3b35c: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.79 : 3b361: 8b 74 24 64 mov 0x64(%rsp),%esi 0.00 : 3b365: 48 89 04 24 mov %rax,(%rsp) 0.39 : 3b369: e8 92 e9 ff ff callq 39d00 0.09 : 3b36e: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.65 : 3b373: 48 83 ea 01 sub $0x1,%rdx 0.13 : 3b377: 48 89 54 24 68 mov %rdx,0x68(%rsp) 0.48 : 3b37c: 48 0f bd 9c d4 d0 00 bsr 0xd0(%rsp,%rdx,8),%rbx 0.00 : 3b383: 00 00 2.79 : 3b385: 48 83 f3 3f xor $0x3f,%rbx 0.22 : 3b389: 85 db test %ebx,%ebx 0.00 : 3b38b: 7e 4f jle 3b3dc <__GI_____strtod_l_internal+0x11cc> 0.44 : 3b38d: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 3b392: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 3b397: 89 d9 mov %ebx,%ecx 0.00 : 3b399: 48 89 f7 mov %rsi,%rdi 0.26 : 3b39c: e8 ef 71 00 00 callq 42590 <__mpn_lshift> 0.39 : 3b3a1: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3b3a6: 48 8b 94 24 38 02 00 mov 0x238(%rsp),%rdx 0.00 : 3b3ad: 00 0.00 : 3b3ae: 89 d9 mov %ebx,%ecx 0.22 : 3b3b0: 48 89 f7 mov %rsi,%rdi 0.13 : 3b3b3: e8 d8 71 00 00 callq 42590 <__mpn_lshift> 0.48 : 3b3b8: 48 85 c0 test %rax,%rax 0.00 : 3b3bb: 48 89 c2 mov %rax,%rdx 0.00 : 3b3be: 74 1c je 3b3dc <__GI_____strtod_l_internal+0x11cc> 0.00 : 3b3c0: 48 8b 84 24 38 02 00 mov 0x238(%rsp),%rax 0.00 : 3b3c7: 00 0.00 : 3b3c8: 48 89 94 c4 70 01 00 mov %rdx,0x170(%rsp,%rax,8) 0.00 : 3b3cf: 00 0.00 : 3b3d0: 48 83 c0 01 add $0x1,%rax 0.00 : 3b3d4: 48 89 84 24 38 02 00 mov %rax,0x238(%rsp) 0.00 : 3b3db: 00 0.35 : 3b3dc: 4c 63 bc 24 84 00 00 movslq 0x84(%rsp),%r15 0.00 : 3b3e3: 00 0.00 : 3b3e4: 48 83 7c 24 78 01 cmpq $0x1,0x78(%rsp) 0.00 : 3b3ea: 4c 89 bc 24 30 02 00 mov %r15,0x230(%rsp) 0.00 : 3b3f1: 00 0.00 : 3b3f2: 0f 84 d0 09 00 00 je 3bdc8 <__GI_____strtod_l_internal+0x1bb8> 0.00 : 3b3f8: 48 83 7c 24 78 02 cmpq $0x2,0x78(%rsp) 0.00 : 3b3fe: 0f 84 7c 06 00 00 je 3ba80 <__GI_____strtod_l_internal+0x1870> 0.00 : 3b404: 48 8b 94 24 38 02 00 mov 0x238(%rsp),%rdx 0.00 : 3b40b: 00 0.00 : 3b40c: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : 3b411: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 3b416: 4c 8b 74 24 78 mov 0x78(%rsp),%r14 0.00 : 3b41b: 48 8b 4c 24 68 mov 0x68(%rsp),%rcx 0.00 : 3b420: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 3b425: 48 29 d6 sub %rdx,%rsi 0.00 : 3b428: 48 8d 34 f3 lea (%rbx,%rsi,8),%rsi 0.00 : 3b42c: 49 83 ee 02 sub $0x2,%r14 0.00 : 3b430: 4c 8b a4 cc d0 00 00 mov 0xd0(%rsp,%rcx,8),%r12 0.00 : 3b437: 00 0.00 : 3b438: 4e 8b ac f4 d0 00 00 mov 0xd0(%rsp,%r14,8),%r13 0.00 : 3b43f: 00 0.00 : 3b440: e8 bb 6b 00 00 callq 42000 <__mpn_cmp> 0.00 : 3b445: 85 c0 test %eax,%eax 0.00 : 3b447: 7e 20 jle 3b469 <__GI_____strtod_l_internal+0x1259> 0.00 : 3b449: 48 8b 84 24 38 02 00 mov 0x238(%rsp),%rax 0.00 : 3b450: 00 0.00 : 3b451: 48 c7 84 c4 70 01 00 movq $0x0,0x170(%rsp,%rax,8) 0.00 : 3b458: 00 00 00 00 00 0.00 : 3b45d: 48 83 c0 01 add $0x1,%rax 0.00 : 3b461: 48 89 84 24 38 02 00 mov %rax,0x238(%rsp) 0.00 : 3b468: 00 0.00 : 3b469: 4c 8b 84 24 38 02 00 mov 0x238(%rsp),%r8 0.00 : 3b470: 00 0.00 : 3b471: 4c 39 44 24 78 cmp %r8,0x78(%rsp) 0.00 : 3b476: 0f 8e ee 0a 00 00 jle 3bf6a <__GI_____strtod_l_internal+0x1d5a> 0.00 : 3b47c: 48 8b 5c 24 78 mov 0x78(%rsp),%rbx 0.00 : 3b481: 8b 94 24 84 00 00 00 mov 0x84(%rsp),%edx 0.00 : 3b488: 4c 29 c3 sub %r8,%rbx 0.00 : 3b48b: 85 d2 test %edx,%edx 0.00 : 3b48d: 0f 8e ed 0d 00 00 jle 3c280 <__GI_____strtod_l_internal+0x2070> 0.00 : 3b493: 48 89 dd mov %rbx,%rbp 0.00 : 3b496: 48 c1 e5 06 shl $0x6,%rbp 0.00 : 3b49a: 4a 8d 44 3d 00 lea 0x0(%rbp,%r15,1),%rax 0.00 : 3b49f: 48 83 f8 35 cmp $0x35,%rax 0.00 : 3b4a3: 0f 8f 92 0d 00 00 jg 3c23b <__GI_____strtod_l_internal+0x202b> 0.00 : 3b4a9: 48 83 fb 01 cmp $0x1,%rbx 0.00 : 3b4ad: 0f 85 49 10 00 00 jne 3c4fc <__GI_____strtod_l_internal+0x22ec> 0.00 : 3b4b3: 48 c7 84 24 20 02 00 movq $0x0,0x220(%rsp) 0.00 : 3b4ba: 00 00 00 00 00 0.00 : 3b4bf: c7 84 24 c4 00 00 00 movl $0x0,0xc4(%rsp) 0.00 : 3b4c6: 00 00 00 00 0.00 : 3b4ca: 01 ac 24 84 00 00 00 add %ebp,0x84(%rsp) 0.00 : 3b4d1: 45 85 c0 test %r8d,%r8d 0.00 : 3b4d4: 44 89 c2 mov %r8d,%edx 0.00 : 3b4d7: 7e 29 jle 3b502 <__GI_____strtod_l_internal+0x12f2> 0.00 : 3b4d9: 49 63 c0 movslq %r8d,%rax 0.00 : 3b4dc: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3b4e1: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : 3b4e5: 48 8d 0c c6 lea (%rsi,%rax,8),%rcx 0.00 : 3b4e9: 83 ea 01 sub $0x1,%edx 0.00 : 3b4ec: 48 63 c2 movslq %edx,%rax 0.00 : 3b4ef: 48 8b 84 c4 70 01 00 mov 0x170(%rsp,%rax,8),%rax 0.00 : 3b4f6: 00 0.00 : 3b4f7: 48 89 01 mov %rax,(%rcx) 0.00 : 3b4fa: 48 83 e9 08 sub $0x8,%rcx 0.00 : 3b4fe: 85 d2 test %edx,%edx 0.00 : 3b500: 75 e7 jne 3b4e9 <__GI_____strtod_l_internal+0x12d9> 0.00 : 3b502: 48 85 db test %rbx,%rbx 0.00 : 3b505: 78 18 js 3b51f <__GI_____strtod_l_internal+0x130f> 0.00 : 3b507: 31 c0 xor %eax,%eax 0.00 : 3b509: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 3b50e: 48 c7 04 c2 00 00 00 movq $0x0,(%rdx,%rax,8) 0.00 : 3b515: 00 0.00 : 3b516: 48 83 c0 01 add $0x1,%rax 0.00 : 3b51a: 48 39 c3 cmp %rax,%rbx 0.00 : 3b51d: 7d ea jge 3b509 <__GI_____strtod_l_internal+0x12f9> 0.00 : 3b51f: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : 3b524: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b52b: 00 0.00 : 3b52c: 48 8d 59 01 lea 0x1(%rcx),%rbx 0.00 : 3b530: 48 c7 84 cc d0 00 00 movq $0x0,0xd0(%rsp,%rcx,8) 0.00 : 3b537: 00 00 00 00 00 0.00 : 3b53c: 48 8b bc cc 70 01 00 mov 0x170(%rsp,%rcx,8),%rdi 0.00 : 3b543: 00 0.00 : 3b544: 48 89 5c 24 30 mov %rbx,0x30(%rsp) 0.00 : 3b549: 31 db xor %ebx,%ebx 0.00 : 3b54b: 83 bc 24 84 00 00 00 cmpl $0x35,0x84(%rsp) 0.00 : 3b552: 35 0.00 : 3b553: 0f 8f 45 01 00 00 jg 3b69e <__GI_____strtod_l_internal+0x148e> 0.00 : 3b559: 8b 6c 24 78 mov 0x78(%rsp),%ebp 0.00 : 3b55d: 41 bf 40 00 00 00 mov $0x40,%r15d 0.00 : 3b563: 83 ed 01 sub $0x1,%ebp 0.00 : 3b566: 4c 39 e7 cmp %r12,%rdi 0.00 : 3b569: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : 3b570: 74 56 je 3b5c8 <__GI_____strtod_l_internal+0x13b8> 0.00 : 3b572: 48 8b 74 24 68 mov 0x68(%rsp),%rsi 0.00 : 3b577: 48 89 fa mov %rdi,%rdx 0.00 : 3b57a: 48 8b 84 f4 70 01 00 mov 0x170(%rsp,%rsi,8),%rax 0.00 : 3b581: 00 0.00 : 3b582: 49 f7 f4 div %r12 0.00 : 3b585: 48 89 c3 mov %rax,%rbx 0.00 : 3b588: 48 89 d7 mov %rdx,%rdi 0.00 : 3b58b: 4c 89 e8 mov %r13,%rax 0.00 : 3b58e: 48 f7 e3 mul %rbx 0.00 : 3b591: 48 89 d6 mov %rdx,%rsi 0.00 : 3b594: 48 89 c1 mov %rax,%rcx 0.00 : 3b597: eb 15 jmp 3b5ae <__GI_____strtod_l_internal+0x139e> 0.00 : 3b599: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3b5a0: 31 c0 xor %eax,%eax 0.00 : 3b5a2: 4c 39 e9 cmp %r13,%rcx 0.00 : 3b5a5: 0f 92 c0 setb %al 0.00 : 3b5a8: 4c 29 e9 sub %r13,%rcx 0.00 : 3b5ab: 48 29 c6 sub %rax,%rsi 0.00 : 3b5ae: 48 39 fe cmp %rdi,%rsi 0.00 : 3b5b1: 77 0c ja 3b5bf <__GI_____strtod_l_internal+0x13af> 0.00 : 3b5b3: 75 13 jne 3b5c8 <__GI_____strtod_l_internal+0x13b8> 0.00 : 3b5b5: 4a 3b 8c f4 70 01 00 cmp 0x170(%rsp,%r14,8),%rcx 0.00 : 3b5bc: 00 0.00 : 3b5bd: 76 09 jbe 3b5c8 <__GI_____strtod_l_internal+0x13b8> 0.00 : 3b5bf: 48 83 eb 01 sub $0x1,%rbx 0.00 : 3b5c3: 4c 01 e7 add %r12,%rdi 0.00 : 3b5c6: 73 d8 jae 3b5a0 <__GI_____strtod_l_internal+0x1390> 0.00 : 3b5c8: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 3b5cd: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 3b5d2: 48 89 d9 mov %rbx,%rcx 0.00 : 3b5d5: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 3b5da: e8 81 7f 00 00 callq 43560 <__mpn_submul_1> 0.00 : 3b5df: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx 0.00 : 3b5e4: 48 3b 84 cc 70 01 00 cmp 0x170(%rsp,%rcx,8),%rax 0.00 : 3b5eb: 00 0.00 : 3b5ec: 74 1f je 3b60d <__GI_____strtod_l_internal+0x13fd> 0.00 : 3b5ee: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3b5f3: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 3b5f8: 48 89 f7 mov %rsi,%rdi 0.00 : 3b5fb: e8 90 69 00 00 callq 41f90 <__mpn_add_n> 0.00 : 3b600: 48 85 c0 test %rax,%rax 0.00 : 3b603: 0f 84 db 0c 00 00 je 3c2e4 <__GI_____strtod_l_internal+0x20d4> 0.00 : 3b609: 48 83 eb 01 sub $0x1,%rbx 0.00 : 3b60d: 48 8b 74 24 68 mov 0x68(%rsp),%rsi 0.00 : 3b612: 48 8b 44 24 78 mov 0x78(%rsp),%rax 0.00 : 3b617: 85 ed test %ebp,%ebp 0.00 : 3b619: 48 8b bc f4 70 01 00 mov 0x170(%rsp,%rsi,8),%rdi 0.00 : 3b620: 00 0.00 : 3b621: 48 89 bc c4 70 01 00 mov %rdi,0x170(%rsp,%rax,8) 0.00 : 3b628: 00 0.00 : 3b629: 89 e8 mov %ebp,%eax 0.00 : 3b62b: 7e 32 jle 3b65f <__GI_____strtod_l_internal+0x144f> 0.00 : 3b62d: 31 c9 xor %ecx,%ecx 0.00 : 3b62f: eb 09 jmp 3b63a <__GI_____strtod_l_internal+0x142a> 0.00 : 3b631: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3b638: 89 f0 mov %esi,%eax 0.00 : 3b63a: 8d 70 ff lea -0x1(%rax),%esi 0.00 : 3b63d: 48 63 d0 movslq %eax,%rdx 0.00 : 3b640: 48 83 c1 01 add $0x1,%rcx 0.00 : 3b644: 48 63 c6 movslq %esi,%rax 0.00 : 3b647: 48 8b 84 c4 70 01 00 mov 0x170(%rsp,%rax,8),%rax 0.00 : 3b64e: 00 0.00 : 3b64f: 48 89 84 d4 70 01 00 mov %rax,0x170(%rsp,%rdx,8) 0.00 : 3b656: 00 0.00 : 3b657: 89 e8 mov %ebp,%eax 0.00 : 3b659: 29 c8 sub %ecx,%eax 0.00 : 3b65b: 85 c0 test %eax,%eax 0.00 : 3b65d: 7f d9 jg 3b638 <__GI_____strtod_l_internal+0x1428> 0.00 : 3b65f: 8b 84 24 84 00 00 00 mov 0x84(%rsp),%eax 0.00 : 3b666: 85 c0 test %eax,%eax 0.00 : 3b668: 0f 85 b4 00 00 00 jne 3b722 <__GI_____strtod_l_internal+0x1512> 0.00 : 3b66e: 48 85 db test %rbx,%rbx 0.00 : 3b671: 0f 85 1c 01 00 00 jne 3b793 <__GI_____strtod_l_internal+0x1583> 0.00 : 3b677: 48 83 ac 24 30 02 00 subq $0x40,0x230(%rsp) 0.00 : 3b67e: 00 40 0.00 : 3b680: 83 bc 24 84 00 00 00 cmpl $0x35,0x84(%rsp) 0.00 : 3b687: 35 0.00 : 3b688: 48 89 9c 24 20 02 00 mov %rbx,0x220(%rsp) 0.00 : 3b68f: 00 0.00 : 3b690: 0f 8e d0 fe ff ff jle 3b566 <__GI_____strtod_l_internal+0x1356> 0.00 : 3b696: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b69d: 00 0.00 : 3b69e: 44 8b 4c 24 78 mov 0x78(%rsp),%r9d 0.00 : 3b6a3: 49 63 c1 movslq %r9d,%rax 0.00 : 3b6a6: 48 83 bc c4 70 01 00 cmpq $0x0,0x170(%rsp,%rax,8) 0.00 : 3b6ad: 00 00 0.00 : 3b6af: 75 31 jne 3b6e2 <__GI_____strtod_l_internal+0x14d2> 0.00 : 3b6b1: 45 85 c9 test %r9d,%r9d 0.00 : 3b6b4: 78 2c js 3b6e2 <__GI_____strtod_l_internal+0x14d2> 0.00 : 3b6b6: 44 89 c9 mov %r9d,%ecx 0.00 : 3b6b9: 31 ff xor %edi,%edi 0.00 : 3b6bb: 83 e9 01 sub $0x1,%ecx 0.00 : 3b6be: 41 83 e9 01 sub $0x1,%r9d 0.00 : 3b6c2: 49 63 c1 movslq %r9d,%rax 0.00 : 3b6c5: 48 83 bc c4 70 01 00 cmpq $0x0,0x170(%rsp,%rax,8) 0.00 : 3b6cc: 00 00 0.00 : 3b6ce: 89 c8 mov %ecx,%eax 0.00 : 3b6d0: 0f 94 c2 sete %dl 0.00 : 3b6d3: 29 f8 sub %edi,%eax 0.00 : 3b6d5: 48 83 c7 01 add $0x1,%rdi 0.00 : 3b6d9: f7 d0 not %eax 0.00 : 3b6db: c1 e8 1f shr $0x1f,%eax 0.00 : 3b6de: 84 c2 test %al,%dl 0.00 : 3b6e0: 75 dc jne 3b6be <__GI_____strtod_l_internal+0x14ae> 0.00 : 3b6e2: 41 f7 d1 not %r9d 0.00 : 3b6e5: 41 b8 3f 00 00 00 mov $0x3f,%r8d 0.00 : 3b6eb: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3b6f2: 00 0.00 : 3b6f3: 41 c1 e9 1f shr $0x1f,%r9d 0.00 : 3b6f7: 44 2b 84 24 c4 00 00 sub 0xc4(%rsp),%r8d 0.00 : 3b6fe: 00 0.00 : 3b6ff: 44 0b 8c 24 ac 00 00 or 0xac(%rsp),%r9d 0.00 : 3b706: 00 0.00 : 3b707: 48 83 ee 01 sub $0x1,%rsi 0.00 : 3b70b: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 3b70f: 4d 63 c0 movslq %r8d,%r8 0.22 : 3b712: 48 89 d9 mov %rbx,%rcx 0.17 : 3b715: 4c 89 ff mov %r15,%rdi 0.00 : 3b718: e8 d3 e8 ff ff callq 39ff0 0.09 : 3b71d: e9 21 ec ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b722: 83 bc 24 84 00 00 00 cmpl $0xfffffff6,0x84(%rsp) 0.00 : 3b729: f6 0.00 : 3b72a: 7d 15 jge 3b741 <__GI_____strtod_l_internal+0x1531> 0.00 : 3b72c: 48 89 9c 24 20 02 00 mov %rbx,0x220(%rsp) 0.00 : 3b733: 00 0.00 : 3b734: 83 84 24 84 00 00 00 addl $0x40,0x84(%rsp) 0.00 : 3b73b: 40 0.00 : 3b73c: e9 25 fe ff ff jmpq 3b566 <__GI_____strtod_l_internal+0x1356> 0.00 : 3b741: b8 35 00 00 00 mov $0x35,%eax 0.00 : 3b746: 2b 84 24 84 00 00 00 sub 0x84(%rsp),%eax 0.00 : 3b74d: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b754: 00 0.00 : 3b755: 89 84 24 c4 00 00 00 mov %eax,0xc4(%rsp) 0.00 : 3b75c: 0f 84 3c ff ff ff je 3b69e <__GI_____strtod_l_internal+0x148e> 0.00 : 3b762: 89 c1 mov %eax,%ecx 0.00 : 3b764: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3b769: 4c 89 fe mov %r15,%rsi 0.00 : 3b76c: 4c 89 ff mov %r15,%rdi 0.00 : 3b76f: e8 1c 6e 00 00 callq 42590 <__mpn_lshift> 0.00 : 3b774: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3b779: 2b 8c 24 c4 00 00 00 sub 0xc4(%rsp),%ecx 0.00 : 3b780: 48 89 d8 mov %rbx,%rax 0.00 : 3b783: 48 d3 e8 shr %cl,%rax 0.00 : 3b786: 48 09 84 24 20 02 00 or %rax,0x220(%rsp) 0.00 : 3b78d: 00 0.00 : 3b78e: e9 0b ff ff ff jmpq 3b69e <__GI_____strtod_l_internal+0x148e> 0.00 : 3b793: 48 0f bd c3 bsr %rbx,%rax 0.00 : 3b797: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3b79c: 89 c2 mov %eax,%edx 0.00 : 3b79e: 83 f2 3f xor $0x3f,%edx 0.00 : 3b7a1: 48 63 c2 movslq %edx,%rax 0.00 : 3b7a4: 48 29 84 24 30 02 00 sub %rax,0x230(%rsp) 0.00 : 3b7ab: 00 0.00 : 3b7ac: 44 89 f8 mov %r15d,%eax 0.00 : 3b7af: 29 d0 sub %edx,%eax 0.00 : 3b7b1: 83 f8 35 cmp $0x35,%eax 0.00 : 3b7b4: 0f 8e 54 0c 00 00 jle 3c40e <__GI_____strtod_l_internal+0x21fe> 0.00 : 3b7ba: 83 c2 35 add $0x35,%edx 0.00 : 3b7bd: 48 89 d8 mov %rbx,%rax 0.00 : 3b7c0: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b7c7: 00 0.00 : 3b7c8: 29 d1 sub %edx,%ecx 0.00 : 3b7ca: 89 94 24 c4 00 00 00 mov %edx,0xc4(%rsp) 0.00 : 3b7d1: 48 d3 e8 shr %cl,%rax 0.00 : 3b7d4: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3b7db: 00 0.00 : 3b7dc: e9 bd fe ff ff jmpq 3b69e <__GI_____strtod_l_internal+0x148e> 0.00 : 3b7e1: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 3b7e6: 48 89 d0 mov %rdx,%rax 0.00 : 3b7e9: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3b7f0: 00 0.00 : 3b7f1: 44 29 c1 sub %r8d,%ecx 0.00 : 3b7f4: 48 8d bc 24 20 02 00 lea 0x220(%rsp),%rdi 0.00 : 3b7fb: 00 0.00 : 3b7fc: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 3b802: 48 d3 e8 shr %cl,%rax 0.00 : 3b805: 41 8d 48 3d lea 0x3d(%r8),%ecx 0.00 : 3b809: 41 b8 3f 00 00 00 mov $0x3f,%r8d 0.00 : 3b80f: 48 09 84 24 20 02 00 or %rax,0x220(%rsp) 0.00 : 3b816: 00 0.00 : 3b817: 48 d3 e2 shl %cl,%rdx 0.00 : 3b81a: 48 89 d1 mov %rdx,%rcx 0.00 : 3b81d: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 3b821: e8 ca e7 ff ff callq 39ff0 0.00 : 3b826: e9 18 eb ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b82b: 48 8b 84 24 b8 00 00 mov 0xb8(%rsp),%rax 0.00 : 3b832: 00 0.00 : 3b833: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx 0.00 : 3b83a: 00 0.00 : 3b83b: 48 83 6c 24 78 01 subq $0x1,0x78(%rsp) 0.00 : 3b841: 48 89 8c 24 b8 00 00 mov %rcx,0xb8(%rsp) 0.00 : 3b848: 00 0.00 : 3b849: 48 89 84 24 b0 00 00 mov %rax,0xb0(%rsp) 0.00 : 3b850: 00 0.00 : 3b851: e9 29 fa ff ff jmpq 3b27f <__GI_____strtod_l_internal+0x106f> 0.00 : 3b856: 40 80 ff 70 cmp $0x70,%dil 0.00 : 3b85a: 0f 85 80 eb ff ff jne 3a3e0 <__GI_____strtod_l_internal+0x1d0> 0.00 : 3b860: 4c 39 ed cmp %r13,%rbp 0.00 : 3b863: 0f 85 27 ec ff ff jne 3a490 <__GI_____strtod_l_internal+0x280> 0.00 : 3b869: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3b870: e9 6b eb ff ff jmpq 3a3e0 <__GI_____strtod_l_internal+0x1d0> 0.00 : 3b875: 0f 1f 00 nopl (%rax) 0.00 : 3b878: 4d 85 ff test %r15,%r15 0.00 : 3b87b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3b880: 0f 84 ae 01 00 00 je 3ba34 <__GI_____strtod_l_internal+0x1824> 0.00 : 3b886: 4d 85 d2 test %r10,%r10 0.00 : 3b889: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3b890: 0f 84 d4 05 00 00 je 3be6a <__GI_____strtod_l_internal+0x1c5a> 0.00 : 3b896: 48 8d 0d 33 70 10 00 lea 0x107033(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3b89d: 48 8d 35 7c f3 0f 00 lea 0xff37c(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3b8a4: 48 8d 3d ad 29 10 00 lea 0x1029ad(%rip),%rdi # 13e258 <__PRETTY_FUNCTION__.11129+0x87f> 0.00 : 3b8ab: ba 4f 03 00 00 mov $0x34f,%edx 0.00 : 3b8b0: e8 6b 00 ff ff callq 2b920 <__assert_fail> 0.00 : 3b8b5: 0f 1f 00 nopl (%rax) 0.00 : 3b8b8: 44 8b 74 24 70 mov 0x70(%rsp),%r14d 0.00 : 3b8bd: 48 ba 00 00 00 00 00 movabs $0x8000000000000000,%rdx 0.00 : 3b8c4: 00 00 80 0.00 : 3b8c7: 45 85 f6 test %r14d,%r14d 0.00 : 3b8ca: 0f 85 80 f8 ff ff jne 3b150 <__GI_____strtod_l_internal+0xf40> 0.00 : 3b8d0: 31 d2 xor %edx,%edx 0.00 : 3b8d2: e9 79 f8 ff ff jmpq 3b150 <__GI_____strtod_l_internal+0xf40> 0.00 : 3b8d7: 48 3b ac 24 c8 00 00 cmp 0xc8(%rsp),%rbp 0.00 : 3b8de: 00 0.00 : 3b8df: 0f 85 c1 04 00 00 jne 3bda6 <__GI_____strtod_l_internal+0x1b96> 0.35 : 3b8e5: 8d 6e ff lea -0x1(%rsi),%ebp 0.00 : 3b8e8: 89 ea mov %ebp,%edx 0.04 : 3b8ea: c1 fa 1f sar $0x1f,%edx 0.00 : 3b8ed: c1 ea 1a shr $0x1a,%edx 0.09 : 3b8f0: 8d 44 15 00 lea 0x0(%rbp,%rdx,1),%eax 0.13 : 3b8f4: 83 e0 3f and $0x3f,%eax 0.04 : 3b8f7: 29 d0 sub %edx,%eax 0.04 : 3b8f9: 48 98 cltq 0.09 : 3b8fb: 48 83 f8 34 cmp $0x34,%rax 0.00 : 3b8ff: 0f 84 5b 0a 00 00 je 3c360 <__GI_____strtod_l_internal+0x2150> 0.09 : 3b905: 48 83 f8 33 cmp $0x33,%rax 0.00 : 3b909: 0f 8e ad 08 00 00 jle 3c1bc <__GI_____strtod_l_internal+0x1fac> 0.00 : 3b90f: 4d 85 c0 test %r8,%r8 0.00 : 3b912: 0f 8f 07 0b 00 00 jg 3c41f <__GI_____strtod_l_internal+0x220f> 0.00 : 3b918: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3b91f: 00 0.00 : 3b920: bf 01 00 00 00 mov $0x1,%edi 0.00 : 3b925: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3b92a: 4c 29 c7 sub %r8,%rdi 0.00 : 3b92d: 8d 48 cc lea -0x34(%rax),%ecx 0.00 : 3b930: 4c 89 c2 mov %r8,%rdx 0.00 : 3b933: 49 8d 3c ff lea (%r15,%rdi,8),%rdi 0.00 : 3b937: e8 c4 6c 00 00 callq 42600 <__mpn_rshift> 0.00 : 3b93c: 4c 8b 84 24 38 02 00 mov 0x238(%rsp),%r8 0.00 : 3b943: 00 0.00 : 3b944: 4a 8d 14 c5 00 00 00 lea 0x0(,%r8,8),%rdx 0.00 : 3b94b: 00 0.00 : 3b94c: 48 f7 da neg %rdx 0.00 : 3b94f: 48 89 84 14 20 02 00 mov %rax,0x220(%rsp,%rdx,1) 0.00 : 3b956: 00 0.00 : 3b957: 4c 89 c2 mov %r8,%rdx 0.00 : 3b95a: 48 f7 da neg %rdx 0.00 : 3b95d: 48 85 d2 test %rdx,%rdx 0.00 : 3b960: 7e 13 jle 3b975 <__GI_____strtod_l_internal+0x1765> 0.00 : 3b962: 31 c0 xor %eax,%eax 0.00 : 3b964: 49 c7 04 c7 00 00 00 movq $0x0,(%r15,%rax,8) 0.00 : 3b96b: 00 0.00 : 3b96c: 48 83 c0 01 add $0x1,%rax 0.00 : 3b970: 48 39 c2 cmp %rax,%rdx 0.00 : 3b973: 7f ef jg 3b964 <__GI_____strtod_l_internal+0x1754> 0.09 : 3b975: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 3b979: 48 63 f5 movslq %ebp,%rsi 0.00 : 3b97c: 45 31 c9 xor %r9d,%r9d 0.00 : 3b97f: 45 31 c0 xor %r8d,%r8d 0.13 : 3b982: 31 c9 xor %ecx,%ecx 0.00 : 3b984: 4c 89 ff mov %r15,%rdi 0.00 : 3b987: e8 64 e6 ff ff callq 39ff0 0.00 : 3b98c: e9 b2 e9 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b991: 48 83 7c 24 50 00 cmpq $0x0,0x50(%rsp) 0.00 : 3b997: 0f 84 bb ee ff ff je 3a858 <__GI_____strtod_l_internal+0x648> 0.00 : 3b99d: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 3b9a2: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : 3b9a7: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 3b9ab: 48 89 0a mov %rcx,(%rdx) 0.00 : 3b9ae: e9 90 e9 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.00 : 3b9b3: 48 63 c6 movslq %esi,%rax 0.00 : 3b9b6: 48 ba 00 00 00 00 00 movabs $0x8000000000000000,%rdx 0.00 : 3b9bd: 00 00 80 0.00 : 3b9c0: 48 29 c2 sub %rax,%rdx 0.00 : 3b9c3: 48 8d 42 03 lea 0x3(%rdx),%rax 0.00 : 3b9c7: 48 85 d2 test %rdx,%rdx 0.00 : 3b9ca: 48 0f 49 c2 cmovns %rdx,%rax 0.00 : 3b9ce: 48 c1 f8 02 sar $0x2,%rax 0.00 : 3b9d2: e9 5e f2 ff ff jmpq 3ac35 <__GI_____strtod_l_internal+0xa25> 0.00 : 3b9d7: 44 8b 64 24 70 mov 0x70(%rsp),%r12d 0.00 : 3b9dc: 48 8b 15 55 64 33 00 mov 0x336455(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3b9e3: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3b9ea: 00 00 0.00 : 3b9ec: 45 85 e4 test %r12d,%r12d 0.00 : 3b9ef: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 0.00 : 3b9f6: 0f 84 08 f1 ff ff je 3ab04 <__GI_____strtod_l_internal+0x8f4> 0.00 : 3b9fc: f2 0f 10 05 5c 80 10 movsd 0x10805c(%rip),%xmm0 # 143a60 0.00 : 3ba03: 00 0.00 : 3ba04: e9 3a e9 ff ff jmpq 3a343 <__GI_____strtod_l_internal+0x133> 0.17 : 3ba09: 4c 89 e2 mov %r12,%rdx 0.00 : 3ba0c: e9 70 ec ff ff jmpq 3a681 <__GI_____strtod_l_internal+0x471> 0.00 : 3ba11: 4d 85 ff test %r15,%r15 0.00 : 3ba14: 0f 88 a1 f3 ff ff js 3adbb <__GI_____strtod_l_internal+0xbab> 0.00 : 3ba1a: b9 35 01 00 00 mov $0x135,%ecx 0.00 : 3ba1f: 4c 29 f9 sub %r15,%rcx 0.00 : 3ba22: 48 85 c9 test %rcx,%rcx 0.00 : 3ba25: 0f 89 0b ef ff ff jns 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3ba2b: 31 c9 xor %ecx,%ecx 0.00 : 3ba2d: 31 ff xor %edi,%edi 0.00 : 3ba2f: e9 20 ef ff ff jmpq 3a954 <__GI_____strtod_l_internal+0x744> 0.00 : 3ba34: 49 83 fa ff cmp $0xffffffffffffffff,%r10 0.00 : 3ba38: 0f 84 43 06 00 00 je 3c081 <__GI_____strtod_l_internal+0x1e71> 0.00 : 3ba3e: 48 b8 ff fe ff ff ff movabs $0x1ffffffffffffeff,%rax 0.00 : 3ba45: ff ff 1f 0.00 : 3ba48: 4a 8d 0c 95 03 04 00 lea 0x403(,%r10,4),%rcx 0.00 : 3ba4f: 00 0.00 : 3ba50: 49 39 c2 cmp %rax,%r10 0.00 : 3ba53: 0f 86 dd ee ff ff jbe 3a936 <__GI_____strtod_l_internal+0x726> 0.00 : 3ba59: 48 8d 0d 70 6e 10 00 lea 0x106e70(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3ba60: 48 8d 35 b9 f1 0f 00 lea 0xff1b9(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3ba67: 48 8d 3d 92 2b 10 00 lea 0x102b92(%rip),%rdi # 13e600 <__PRETTY_FUNCTION__.11129+0xc27> 0.00 : 3ba6e: ba 5b 03 00 00 mov $0x35b,%edx 0.00 : 3ba73: e8 a8 fe fe ff callq 2b920 <__assert_fail> 0.00 : 3ba78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3ba7f: 00 0.00 : 3ba80: 48 83 bc 24 38 02 00 cmpq $0x1,0x238(%rsp) 0.00 : 3ba87: 00 01 0.00 : 3ba89: 4c 8b b4 24 d0 00 00 mov 0xd0(%rsp),%r14 0.00 : 3ba90: 00 0.00 : 3ba91: 48 8b ac 24 d8 00 00 mov 0xd8(%rsp),%rbp 0.00 : 3ba98: 00 0.00 : 3ba99: 0f 8f ab 03 00 00 jg 3be4a <__GI_____strtod_l_internal+0x1c3a> 0.00 : 3ba9f: 4c 8b a4 24 70 01 00 mov 0x170(%rsp),%r12 0.00 : 3baa6: 00 0.00 : 3baa7: 45 31 ed xor %r13d,%r13d 0.00 : 3baaa: 4c 39 e5 cmp %r12,%rbp 0.00 : 3baad: 0f 86 a7 03 00 00 jbe 3be5a <__GI_____strtod_l_internal+0x1c4a> 0.00 : 3bab3: 44 8b 94 24 84 00 00 mov 0x84(%rsp),%r10d 0.00 : 3baba: 00 0.00 : 3babb: 45 85 d2 test %r10d,%r10d 0.00 : 3babe: 0f 8e 04 08 00 00 jle 3c2c8 <__GI_____strtod_l_internal+0x20b8> 0.00 : 3bac4: b8 35 00 00 00 mov $0x35,%eax 0.00 : 3bac9: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3bad0: 00 0.00 : 3bad1: 41 89 c2 mov %eax,%r10d 0.00 : 3bad4: 44 2b 94 24 84 00 00 sub 0x84(%rsp),%r10d 0.00 : 3badb: 00 0.00 : 3badc: 74 25 je 3bb03 <__GI_____strtod_l_internal+0x18f3> 0.00 : 3bade: 44 89 d1 mov %r10d,%ecx 0.00 : 3bae1: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3bae6: 4c 89 fe mov %r15,%rsi 0.00 : 3bae9: 4c 89 ff mov %r15,%rdi 0.00 : 3baec: 44 89 54 24 20 mov %r10d,0x20(%rsp) 0.00 : 3baf1: e8 9a 6a 00 00 callq 42590 <__mpn_lshift> 0.00 : 3baf6: 4c 8b a4 24 70 01 00 mov 0x170(%rsp),%r12 0.00 : 3bafd: 00 0.00 : 3bafe: 44 8b 54 24 20 mov 0x20(%rsp),%r10d 0.00 : 3bb03: 83 84 24 84 00 00 00 addl $0x40,0x84(%rsp) 0.00 : 3bb0a: 40 0.00 : 3bb0b: 83 bc 24 84 00 00 00 cmpl $0x35,0x84(%rsp) 0.00 : 3bb12: 35 0.00 : 3bb13: 0f 8f 86 07 00 00 jg 3c29f <__GI_____strtod_l_internal+0x208f> 0.00 : 3bb19: 4d 89 e5 mov %r12,%r13 0.00 : 3bb1c: 45 31 e4 xor %r12d,%r12d 0.00 : 3bb1f: 4c 89 f7 mov %r14,%rdi 0.00 : 3bb22: 31 f6 xor %esi,%esi 0.00 : 3bb24: 41 b8 40 00 00 00 mov $0x40,%r8d 0.00 : 3bb2a: 48 f7 df neg %rdi 0.00 : 3bb2d: 49 39 ed cmp %rbp,%r13 0.00 : 3bb30: 0f 84 a3 00 00 00 je 3bbd9 <__GI_____strtod_l_internal+0x19c9> 0.00 : 3bb36: 4c 89 e0 mov %r12,%rax 0.00 : 3bb39: 4c 89 ea mov %r13,%rdx 0.00 : 3bb3c: 48 f7 f5 div %rbp 0.00 : 3bb3f: 48 89 c3 mov %rax,%rbx 0.00 : 3bb42: 49 89 d1 mov %rdx,%r9 0.00 : 3bb45: 4c 89 f0 mov %r14,%rax 0.00 : 3bb48: 48 f7 e3 mul %rbx 0.00 : 3bb4b: 48 89 d1 mov %rdx,%rcx 0.00 : 3bb4e: 66 90 xchg %ax,%ax 0.00 : 3bb50: 4c 39 c9 cmp %r9,%rcx 0.00 : 3bb53: 77 53 ja 3bba8 <__GI_____strtod_l_internal+0x1998> 0.00 : 3bb55: 74 49 je 3bba0 <__GI_____strtod_l_internal+0x1990> 0.00 : 3bb57: 4d 89 cd mov %r9,%r13 0.00 : 3bb5a: 49 89 f4 mov %rsi,%r12 0.00 : 3bb5d: 49 29 c4 sub %rax,%r12 0.00 : 3bb60: 49 19 cd sbb %rcx,%r13 0.00 : 3bb63: 44 8b 8c 24 84 00 00 mov 0x84(%rsp),%r9d 0.00 : 3bb6a: 00 0.00 : 3bb6b: 45 85 c9 test %r9d,%r9d 0.00 : 3bb6e: 75 4a jne 3bbba <__GI_____strtod_l_internal+0x19aa> 0.00 : 3bb70: 48 85 db test %rbx,%rbx 0.00 : 3bb73: 0f 85 03 01 00 00 jne 3bc7c <__GI_____strtod_l_internal+0x1a6c> 0.00 : 3bb79: 48 83 ac 24 30 02 00 subq $0x40,0x230(%rsp) 0.00 : 3bb80: 00 40 0.00 : 3bb82: 83 bc 24 84 00 00 00 cmpl $0x35,0x84(%rsp) 0.00 : 3bb89: 35 0.00 : 3bb8a: 48 89 9c 24 20 02 00 mov %rbx,0x220(%rsp) 0.00 : 3bb91: 00 0.00 : 3bb92: 7e 99 jle 3bb2d <__GI_____strtod_l_internal+0x191d> 0.00 : 3bb94: e9 ad 00 00 00 jmpq 3bc46 <__GI_____strtod_l_internal+0x1a36> 0.00 : 3bb99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 3bba0: 48 85 c0 test %rax,%rax 0.00 : 3bba3: 74 b2 je 3bb57 <__GI_____strtod_l_internal+0x1947> 0.00 : 3bba5: 0f 1f 00 nopl (%rax) 0.00 : 3bba8: 48 83 eb 01 sub $0x1,%rbx 0.00 : 3bbac: 4c 29 f0 sub %r14,%rax 0.00 : 3bbaf: 48 83 d9 00 sbb $0x0,%rcx 0.00 : 3bbb3: 49 01 e9 add %rbp,%r9 0.00 : 3bbb6: 73 98 jae 3bb50 <__GI_____strtod_l_internal+0x1940> 0.00 : 3bbb8: eb 9d jmp 3bb57 <__GI_____strtod_l_internal+0x1947> 0.00 : 3bbba: 83 bc 24 84 00 00 00 cmpl $0xfffffff6,0x84(%rsp) 0.00 : 3bbc1: f6 0.00 : 3bbc2: 7d 3d jge 3bc01 <__GI_____strtod_l_internal+0x19f1> 0.00 : 3bbc4: 48 89 9c 24 20 02 00 mov %rbx,0x220(%rsp) 0.00 : 3bbcb: 00 0.00 : 3bbcc: 83 84 24 84 00 00 00 addl $0x40,0x84(%rsp) 0.00 : 3bbd3: 40 0.00 : 3bbd4: e9 54 ff ff ff jmpq 3bb2d <__GI_____strtod_l_internal+0x191d> 0.00 : 3bbd9: 4d 89 e1 mov %r12,%r9 0.00 : 3bbdc: 4d 01 e9 add %r13,%r9 0.00 : 3bbdf: 0f 83 d5 00 00 00 jae 3bcba <__GI_____strtod_l_internal+0x1aaa> 0.00 : 3bbe5: 4d 29 f1 sub %r14,%r9 0.00 : 3bbe8: 49 89 f4 mov %rsi,%r12 0.00 : 3bbeb: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : 3bbf2: 4d 89 cd mov %r9,%r13 0.00 : 3bbf5: 4d 01 f4 add %r14,%r12 0.00 : 3bbf8: 49 83 d5 00 adc $0x0,%r13 0.00 : 3bbfc: e9 62 ff ff ff jmpq 3bb63 <__GI_____strtod_l_internal+0x1953> 0.00 : 3bc01: b8 35 00 00 00 mov $0x35,%eax 0.00 : 3bc06: 41 89 c2 mov %eax,%r10d 0.00 : 3bc09: 44 2b 94 24 84 00 00 sub 0x84(%rsp),%r10d 0.00 : 3bc10: 00 0.00 : 3bc11: 74 33 je 3bc46 <__GI_____strtod_l_internal+0x1a36> 0.00 : 3bc13: 44 89 d1 mov %r10d,%ecx 0.00 : 3bc16: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3bc1b: 4c 89 fe mov %r15,%rsi 0.00 : 3bc1e: 4c 89 ff mov %r15,%rdi 0.00 : 3bc21: 44 89 54 24 20 mov %r10d,0x20(%rsp) 0.00 : 3bc26: e8 65 69 00 00 callq 42590 <__mpn_lshift> 0.00 : 3bc2b: 44 8b 54 24 20 mov 0x20(%rsp),%r10d 0.00 : 3bc30: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3bc35: 48 89 d8 mov %rbx,%rax 0.00 : 3bc38: 44 29 d1 sub %r10d,%ecx 0.00 : 3bc3b: 48 d3 e8 shr %cl,%rax 0.00 : 3bc3e: 48 09 84 24 20 02 00 or %rax,0x220(%rsp) 0.00 : 3bc45: 00 0.00 : 3bc46: 8b 8c 24 ac 00 00 00 mov 0xac(%rsp),%ecx 0.00 : 3bc4d: 85 c9 test %ecx,%ecx 0.00 : 3bc4f: 75 09 jne 3bc5a <__GI_____strtod_l_internal+0x1a4a> 0.00 : 3bc51: 4d 85 ed test %r13,%r13 0.00 : 3bc54: 0f 84 8c 02 00 00 je 3bee6 <__GI_____strtod_l_internal+0x1cd6> 0.00 : 3bc5a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 3bc5f: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3bc66: 00 0.00 : 3bc67: 41 b8 3f 00 00 00 mov $0x3f,%r8d 0.00 : 3bc6d: 41 89 c1 mov %eax,%r9d 0.00 : 3bc70: 45 29 d0 sub %r10d,%r8d 0.00 : 3bc73: 48 83 ee 01 sub $0x1,%rsi 0.00 : 3bc77: e9 8f fa ff ff jmpq 3b70b <__GI_____strtod_l_internal+0x14fb> 0.00 : 3bc7c: 48 0f bd c3 bsr %rbx,%rax 0.00 : 3bc80: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3bc85: 89 c2 mov %eax,%edx 0.00 : 3bc87: 83 f2 3f xor $0x3f,%edx 0.00 : 3bc8a: 48 63 c2 movslq %edx,%rax 0.00 : 3bc8d: 48 29 84 24 30 02 00 sub %rax,0x230(%rsp) 0.00 : 3bc94: 00 0.00 : 3bc95: 44 89 c0 mov %r8d,%eax 0.00 : 3bc98: 29 d0 sub %edx,%eax 0.00 : 3bc9a: 83 f8 35 cmp $0x35,%eax 0.00 : 3bc9d: 0f 8e 29 08 00 00 jle 3c4cc <__GI_____strtod_l_internal+0x22bc> 0.00 : 3bca3: 44 8d 52 35 lea 0x35(%rdx),%r10d 0.00 : 3bca7: 48 89 d8 mov %rbx,%rax 0.00 : 3bcaa: 44 29 d1 sub %r10d,%ecx 0.00 : 3bcad: 48 d3 e8 shr %cl,%rax 0.00 : 3bcb0: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3bcb7: 00 0.00 : 3bcb8: eb 8c jmp 3bc46 <__GI_____strtod_l_internal+0x1a36> 0.00 : 3bcba: 31 c0 xor %eax,%eax 0.00 : 3bcbc: 4d 85 f6 test %r14,%r14 0.00 : 3bcbf: 4c 89 f1 mov %r14,%rcx 0.00 : 3bcc2: 0f 95 c0 setne %al 0.00 : 3bcc5: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : 3bccc: 48 29 c1 sub %rax,%rcx 0.00 : 3bccf: 48 89 f8 mov %rdi,%rax 0.00 : 3bcd2: e9 79 fe ff ff jmpq 3bb50 <__GI_____strtod_l_internal+0x1940> 0.00 : 3bcd7: 48 8d 0d f2 6b 10 00 lea 0x106bf2(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3bcde: 48 8d 35 3b ef 0f 00 lea 0xfef3b(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3bce5: 48 8d 3d aa ee 0f 00 lea 0xfeeaa(%rip),%rdi # 13ab96 <__PRETTY_FUNCTION__.8908+0x18> 0.00 : 3bcec: ba 00 02 00 00 mov $0x200,%edx 0.00 : 3bcf1: e8 2a fc fe ff callq 2b920 <__assert_fail> 0.00 : 3bcf6: 48 8b 51 50 mov 0x50(%rcx),%rdx 0.00 : 3bcfa: 48 89 94 24 90 00 00 mov %rdx,0x90(%rsp) 0.00 : 3bd01: 00 0.00 : 3bd02: 0f b6 02 movzbl (%rdx),%eax 0.00 : 3bd05: 83 e8 01 sub $0x1,%eax 0.00 : 3bd08: 3c 7d cmp $0x7d,%al 0.00 : 3bd0a: 0f 87 2c e5 ff ff ja 3a23c <__GI_____strtod_l_internal+0x2c> 0.00 : 3bd10: 48 8b 59 48 mov 0x48(%rcx),%rbx 0.00 : 3bd14: 48 89 9c 24 88 00 00 mov %rbx,0x88(%rsp) 0.00 : 3bd1b: 00 0.00 : 3bd1c: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 3bd1f: 0f 85 2f e5 ff ff jne 3a254 <__GI_____strtod_l_internal+0x44> 0.00 : 3bd25: e9 12 e5 ff ff jmpq 3a23c <__GI_____strtod_l_internal+0x2c> 0.00 : 3bd2a: 48 8b 5c 24 48 mov 0x48(%rsp),%rbx 0.00 : 3bd2f: 48 8b 4b 70 mov 0x70(%rbx),%rcx 0.00 : 3bd33: 48 89 fb mov %rdi,%rbx 0.00 : 3bd36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3bd3d: 00 00 00 0.00 : 3bd40: 48 83 c3 01 add $0x1,%rbx 0.00 : 3bd44: 0f b6 13 movzbl (%rbx),%edx 0.00 : 3bd47: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 3bd4a: 3c 09 cmp $0x9,%al 0.00 : 3bd4c: 76 f2 jbe 3bd40 <__GI_____strtod_l_internal+0x1b30> 0.00 : 3bd4e: 48 0f be c2 movsbq %dl,%rax 0.00 : 3bd52: 8b 04 81 mov (%rcx,%rax,4),%eax 0.00 : 3bd55: 83 e8 61 sub $0x61,%eax 0.00 : 3bd58: 3c 19 cmp $0x19,%al 0.00 : 3bd5a: 76 e4 jbe 3bd40 <__GI_____strtod_l_internal+0x1b30> 0.00 : 3bd5c: 80 fa 5f cmp $0x5f,%dl 0.00 : 3bd5f: 74 df je 3bd40 <__GI_____strtod_l_internal+0x1b30> 0.00 : 3bd61: 80 fa 29 cmp $0x29,%dl 0.00 : 3bd64: 0f 85 d8 ed ff ff jne 3ab42 <__GI_____strtod_l_internal+0x932> 0.00 : 3bd6a: 4c 8b 44 24 48 mov 0x48(%rsp),%r8 0.00 : 3bd6f: 48 8d b4 24 18 02 00 lea 0x218(%rsp),%rsi 0.00 : 3bd76: 00 0.00 : 3bd77: 31 d2 xor %edx,%edx 0.00 : 3bd79: 48 83 c7 01 add $0x1,%rdi 0.00 : 3bd7d: 31 c9 xor %ecx,%ecx 0.00 : 3bd7f: e8 5c b2 ff ff callq 36fe0 <__GI_____strtoul_l_internal> 0.00 : 3bd84: 48 39 9c 24 18 02 00 cmp %rbx,0x218(%rsp) 0.00 : 3bd8b: 00 0.00 : 3bd8c: 48 89 c2 mov %rax,%rdx 0.00 : 3bd8f: 0f 84 c8 06 00 00 je 3c45d <__GI_____strtod_l_internal+0x224d> 0.00 : 3bd95: f2 0f 10 05 cb 7c 10 movsd 0x107ccb(%rip),%xmm0 # 143a68 0.00 : 3bd9c: 00 0.00 : 3bd9d: 48 8d 7b 01 lea 0x1(%rbx),%rdi 0.00 : 3bda1: e9 a4 ed ff ff jmpq 3ab4a <__GI_____strtod_l_internal+0x93a> 0.17 : 3bda6: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3bdad: 00 0.00 : 3bdae: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3bdb3: 4a 8d 14 c5 00 00 00 lea 0x0(,%r8,8),%rdx 0.00 : 3bdba: 00 0.00 : 3bdbb: 4c 89 ff mov %r15,%rdi 0.26 : 3bdbe: e8 8d 89 04 00 callq 84750 0.31 : 3bdc3: e9 38 ea ff ff jmpq 3a800 <__GI_____strtod_l_internal+0x5f0> 0.48 : 3bdc8: 48 83 bc 24 38 02 00 cmpq $0x1,0x238(%rsp) 0.00 : 3bdcf: 00 01 0.00 : 3bdd1: 4c 8b a4 24 70 01 00 mov 0x170(%rsp),%r12 0.00 : 3bdd8: 00 0.00 : 3bdd9: 48 8b b4 24 d0 00 00 mov 0xd0(%rsp),%rsi 0.00 : 3bde0: 00 0.00 : 3bde1: 0f 84 a4 02 00 00 je 3c08b <__GI_____strtod_l_internal+0x1e7b> 0.00 : 3bde7: 48 8d 0d e2 6a 10 00 lea 0x106ae2(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3bdee: 48 8d 35 2b ee 0f 00 lea 0xfee2b(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3bdf5: 48 8d 3d d3 ed 0f 00 lea 0xfedd3(%rip),%rdi # 13abcf <__PRETTY_FUNCTION__.8908+0x51> 0.00 : 3bdfc: ba 66 05 00 00 mov $0x566,%edx 0.00 : 3be01: e8 1a fb fe ff callq 2b920 <__assert_fail> 0.00 : 3be06: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3be0d: 00 00 00 0.00 : 3be10: 4c 8b 54 24 10 mov 0x10(%rsp),%r10 0.00 : 3be15: 4c 8d 40 ff lea -0x1(%rax),%r8 0.00 : 3be19: 4d 39 d1 cmp %r10,%r9 0.00 : 3be1c: 0f 8f ae 01 00 00 jg 3bfd0 <__GI_____strtod_l_internal+0x1dc0> 0.00 : 3be22: 4a 8b 84 d4 70 01 00 mov 0x170(%rsp,%r10,8),%rax 0.00 : 3be29: 00 0.00 : 3be2a: 44 89 e9 mov %r13d,%ecx 0.00 : 3be2d: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 3be32: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3be39: 00 0.00 : 3be3a: 48 d3 e8 shr %cl,%rax 0.00 : 3be3d: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3be44: 00 0.00 : 3be45: e9 2e f2 ff ff jmpq 3b078 <__GI_____strtod_l_internal+0xe68> 0.00 : 3be4a: 4c 8b ac 24 78 01 00 mov 0x178(%rsp),%r13 0.00 : 3be51: 00 0.00 : 3be52: 4c 8b a4 24 70 01 00 mov 0x170(%rsp),%r12 0.00 : 3be59: 00 0.00 : 3be5a: 45 31 d2 xor %r10d,%r10d 0.00 : 3be5d: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3be64: 00 0.00 : 3be65: e9 b5 fc ff ff jmpq 3bb1f <__GI_____strtod_l_internal+0x190f> 0.00 : 3be6a: 48 b8 ff ff ff ff ff movabs $0x1fffffffffffffff,%rax 0.00 : 3be71: ff ff 1f 0.00 : 3be74: 49 39 c7 cmp %rax,%r15 0.00 : 3be77: 0f 87 19 fa ff ff ja 3b896 <__GI_____strtod_l_internal+0x1686> 0.00 : 3be7d: b8 00 01 00 00 mov $0x100,%eax 0.00 : 3be82: 4c 29 f8 sub %r15,%rax 0.00 : 3be85: 48 8d 0c 85 03 00 00 lea 0x3(,%rax,4),%rcx 0.00 : 3be8c: 00 0.00 : 3be8d: e9 90 fb ff ff jmpq 3ba22 <__GI_____strtod_l_internal+0x1812> 0.00 : 3be92: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : 3be99: 00 0.00 : 3be9a: 0f b6 02 movzbl (%rdx),%eax 0.00 : 3be9d: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : 3bea4: 84 c0 test %al,%al 0.00 : 3bea6: 74 36 je 3bede <__GI_____strtod_l_internal+0x1cce> 0.00 : 3bea8: 41 3a 04 24 cmp (%r12),%al 0.00 : 3beac: 0f 85 09 e6 ff ff jne 3a4bb <__GI_____strtod_l_internal+0x2ab> 0.00 : 3beb2: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3beb7: eb 11 jmp 3beca <__GI_____strtod_l_internal+0x1cba> 0.00 : 3beb9: 41 0f b6 04 14 movzbl (%r12,%rdx,1),%eax 0.00 : 3bebe: 48 83 c2 01 add $0x1,%rdx 0.00 : 3bec2: 38 c1 cmp %al,%cl 0.00 : 3bec4: 0f 85 f1 e5 ff ff jne 3a4bb <__GI_____strtod_l_internal+0x2ab> 0.00 : 3beca: 48 8b 84 24 88 00 00 mov 0x88(%rsp),%rax 0.00 : 3bed1: 00 0.00 : 3bed2: 0f b6 0c 10 movzbl (%rax,%rdx,1),%ecx 0.00 : 3bed6: 84 c9 test %cl,%cl 0.00 : 3bed8: 75 df jne 3beb9 <__GI_____strtod_l_internal+0x1ca9> 0.00 : 3beda: 48 83 ea 01 sub $0x1,%rdx 0.00 : 3bede: 49 01 d4 add %rdx,%r12 0.00 : 3bee1: e9 7e e6 ff ff jmpq 3a564 <__GI_____strtod_l_internal+0x354> 0.00 : 3bee6: 31 c0 xor %eax,%eax 0.00 : 3bee8: 4d 85 e4 test %r12,%r12 0.00 : 3beeb: 0f 95 c0 setne %al 0.00 : 3beee: e9 6c fd ff ff jmpq 3bc5f <__GI_____strtod_l_internal+0x1a4f> 0.00 : 3bef3: 48 8b 94 24 88 00 00 mov 0x88(%rsp),%rdx 0.00 : 3befa: 00 0.00 : 3befb: 49 89 ed mov %rbp,%r13 0.00 : 3befe: 0f b6 3a movzbl (%rdx),%edi 0.00 : 3bf01: 80 fb 30 cmp $0x30,%bl 0.00 : 3bf04: 74 4b je 3bf51 <__GI_____strtod_l_internal+0x1d41> 0.00 : 3bf06: 40 84 ff test %dil,%dil 0.00 : 3bf09: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 3bf10: 74 3c je 3bf4e <__GI_____strtod_l_internal+0x1d3e> 0.00 : 3bf12: 41 3a 7d 00 cmp 0x0(%r13),%dil 0.00 : 3bf16: 0f 85 82 e4 ff ff jne 3a39e <__GI_____strtod_l_internal+0x18e> 0.00 : 3bf1c: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3bf21: eb 17 jmp 3bf3a <__GI_____strtod_l_internal+0x1d2a> 0.00 : 3bf23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3bf28: 41 0f b6 44 15 00 movzbl 0x0(%r13,%rdx,1),%eax 0.00 : 3bf2e: 48 83 c2 01 add $0x1,%rdx 0.00 : 3bf32: 38 c1 cmp %al,%cl 0.00 : 3bf34: 0f 85 64 e4 ff ff jne 3a39e <__GI_____strtod_l_internal+0x18e> 0.00 : 3bf3a: 48 8b 84 24 88 00 00 mov 0x88(%rsp),%rax 0.00 : 3bf41: 00 0.00 : 3bf42: 0f b6 0c 10 movzbl (%rax,%rdx,1),%ecx 0.00 : 3bf46: 84 c9 test %cl,%cl 0.00 : 3bf48: 75 de jne 3bf28 <__GI_____strtod_l_internal+0x1d18> 0.00 : 3bf4a: 48 8d 42 ff lea -0x1(%rdx),%rax 0.00 : 3bf4e: 49 01 c5 add %rax,%r13 0.00 : 3bf51: 49 83 c5 01 add $0x1,%r13 0.00 : 3bf55: 41 0f b6 5d 00 movzbl 0x0(%r13),%ebx 0.00 : 3bf5a: eb a5 jmp 3bf01 <__GI_____strtod_l_internal+0x1cf1> 0.00 : 3bf5c: 49 89 c0 mov %rax,%r8 0.00 : 3bf5f: 45 31 db xor %r11d,%r11d 0.00 : 3bf62: 45 31 d2 xor %r10d,%r10d 0.00 : 3bf65: e9 2c e7 ff ff jmpq 3a696 <__GI_____strtod_l_internal+0x486> 0.00 : 3bf6a: 0f 85 3d 05 00 00 jne 3c4ad <__GI_____strtod_l_internal+0x229d> 0.00 : 3bf70: 8b 44 24 78 mov 0x78(%rsp),%eax 0.00 : 3bf74: 85 c0 test %eax,%eax 0.00 : 3bf76: 7f 0a jg 3bf82 <__GI_____strtod_l_internal+0x1d72> 0.00 : 3bf78: eb 24 jmp 3bf9e <__GI_____strtod_l_internal+0x1d8e> 0.00 : 3bf7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3bf80: 89 c8 mov %ecx,%eax 0.00 : 3bf82: 8d 48 ff lea -0x1(%rax),%ecx 0.00 : 3bf85: 48 98 cltq 0.00 : 3bf87: 48 63 d1 movslq %ecx,%rdx 0.00 : 3bf8a: 85 c9 test %ecx,%ecx 0.00 : 3bf8c: 48 8b 94 d4 70 01 00 mov 0x170(%rsp,%rdx,8),%rdx 0.00 : 3bf93: 00 0.00 : 3bf94: 48 89 94 c4 70 01 00 mov %rdx,0x170(%rsp,%rax,8) 0.00 : 3bf9b: 00 0.00 : 3bf9c: 75 e2 jne 3bf80 <__GI_____strtod_l_internal+0x1d70> 0.00 : 3bf9e: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 3bfa3: 48 8d 4a 01 lea 0x1(%rdx),%rcx 0.00 : 3bfa7: 48 c7 84 d4 d0 00 00 movq $0x0,0xd0(%rsp,%rdx,8) 0.00 : 3bfae: 00 00 00 00 00 0.00 : 3bfb3: 48 8b bc d4 70 01 00 mov 0x170(%rsp,%rdx,8),%rdi 0.00 : 3bfba: 00 0.00 : 3bfbb: c7 84 24 c4 00 00 00 movl $0x0,0xc4(%rsp) 0.00 : 3bfc2: 00 00 00 00 0.00 : 3bfc6: 48 89 4c 24 30 mov %rcx,0x30(%rsp) 0.00 : 3bfcb: e9 89 f5 ff ff jmpq 3b559 <__GI_____strtod_l_internal+0x1349> 0.00 : 3bfd0: 41 bc 40 00 00 00 mov $0x40,%r12d 0.00 : 3bfd6: 41 89 d3 mov %edx,%r11d 0.00 : 3bfd9: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 3bfde: 41 29 c4 sub %eax,%r12d 0.00 : 3bfe1: 41 8d 43 01 lea 0x1(%r11),%eax 0.00 : 3bfe5: 31 db xor %ebx,%ebx 0.00 : 3bfe7: 49 89 fa mov %rdi,%r10 0.00 : 3bfea: 4c 63 f0 movslq %eax,%r14 0.00 : 3bfed: 41 83 c3 01 add $0x1,%r11d 0.00 : 3bff1: 4a 8b 94 d4 70 01 00 mov 0x170(%rsp,%r10,8),%rdx 0.00 : 3bff8: 00 0.00 : 3bff9: 48 2b 7c 24 10 sub 0x10(%rsp),%rdi 0.00 : 3bffe: 4d 63 d3 movslq %r11d,%r10 0.00 : 3c001: 44 89 e9 mov %r13d,%ecx 0.00 : 3c004: 4a 8b 84 d4 70 01 00 mov 0x170(%rsp,%r10,8),%rax 0.00 : 3c00b: 00 0.00 : 3c00c: 48 d3 ea shr %cl,%rdx 0.00 : 3c00f: 44 89 e1 mov %r12d,%ecx 0.00 : 3c012: 48 d3 e0 shl %cl,%rax 0.00 : 3c015: 48 09 d0 or %rdx,%rax 0.00 : 3c018: 48 89 84 fc 20 02 00 mov %rax,0x220(%rsp,%rdi,8) 0.00 : 3c01f: 00 0.00 : 3c020: 4a 8d 3c 33 lea (%rbx,%r14,1),%rdi 0.00 : 3c024: 48 83 c3 01 add $0x1,%rbx 0.00 : 3c028: 49 39 f9 cmp %rdi,%r9 0.00 : 3c02b: 7f c0 jg 3bfed <__GI_____strtod_l_internal+0x1ddd> 0.00 : 3c02d: 4c 89 d0 mov %r10,%rax 0.00 : 3c030: 48 2b 44 24 10 sub 0x10(%rsp),%rax 0.00 : 3c035: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi 0.00 : 3c03a: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c041: 00 0.00 : 3c042: 48 85 c0 test %rax,%rax 0.00 : 3c045: 0f 8f 2d f0 ff ff jg 3b078 <__GI_____strtod_l_internal+0xe68> 0.00 : 3c04b: e9 d2 fd ff ff jmpq 3be22 <__GI_____strtod_l_internal+0x1c12> 0.00 : 3c050: 48 8d 0d 79 68 10 00 lea 0x106879(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c057: 48 8d 35 c2 eb 0f 00 lea 0xfebc2(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c05e: 48 8d 3d 7b 21 10 00 lea 0x10217b(%rip),%rdi # 13e1e0 <__PRETTY_FUNCTION__.11129+0x807> 0.00 : 3c065: ba 28 03 00 00 mov $0x328,%edx 0.00 : 3c06a: e8 b1 f8 fe ff callq 2b920 <__assert_fail> 0.00 : 3c06f: 49 8d 45 ff lea -0x1(%r13),%rax 0.00 : 3c073: 45 84 e4 test %r12b,%r12b 0.00 : 3c076: 48 0f 44 44 24 58 cmove 0x58(%rsp),%rax 0.00 : 3c07c: e9 9a e3 ff ff jmpq 3a41b <__GI_____strtod_l_internal+0x20b> 0.00 : 3c081: b9 03 04 00 00 mov $0x403,%ecx 0.00 : 3c086: e9 ab e8 ff ff jmpq 3a936 <__GI_____strtod_l_internal+0x726> 0.31 : 3c08b: 31 ff xor %edi,%edi 0.04 : 3c08d: 49 39 f4 cmp %rsi,%r12 0.00 : 3c090: 41 b8 40 00 00 00 mov $0x40,%r8d 0.00 : 3c096: 0f 83 4b fd ff ff jae 3bde7 <__GI_____strtod_l_internal+0x1bd7> 0.44 : 3c09c: 44 8b 9c 24 84 00 00 mov 0x84(%rsp),%r11d 0.00 : 3c0a3: 00 0.00 : 3c0a4: 4c 89 e2 mov %r12,%rdx 0.00 : 3c0a7: 48 89 f8 mov %rdi,%rax 0.00 : 3c0aa: 48 f7 f6 div %rsi ??:0 30.34 : 3c0ad: 49 89 d4 mov %rdx,%r12 0.00 : 3c0b0: 48 89 c3 mov %rax,%rbx 0.39 : 3c0b3: 45 85 db test %r11d,%r11d 0.00 : 3c0b6: 75 38 jne 3c0f0 <__GI_____strtod_l_internal+0x1ee0> 0.00 : 3c0b8: 48 85 c0 test %rax,%rax 0.00 : 3c0bb: 0f 85 b7 00 00 00 jne 3c178 <__GI_____strtod_l_internal+0x1f68> 0.00 : 3c0c1: 48 83 ac 24 30 02 00 subq $0x40,0x230(%rsp) 0.00 : 3c0c8: 00 40 0.00 : 3c0ca: 83 bc 24 84 00 00 00 cmpl $0x35,0x84(%rsp) 0.00 : 3c0d1: 35 0.00 : 3c0d2: 48 89 9c 24 20 02 00 mov %rbx,0x220(%rsp) 0.00 : 3c0d9: 00 0.00 : 3c0da: 7e c0 jle 3c09c <__GI_____strtod_l_internal+0x1e8c> 0.00 : 3c0dc: 31 ed xor %ebp,%ebp 0.00 : 3c0de: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c0e5: 00 0.00 : 3c0e6: eb 63 jmp 3c14b <__GI_____strtod_l_internal+0x1f3b> 0.00 : 3c0e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3c0ef: 00 0.00 : 3c0f0: 83 bc 24 84 00 00 00 cmpl $0xfffffff6,0x84(%rsp) 0.00 : 3c0f7: f6 0.00 : 3c0f8: 7d 12 jge 3c10c <__GI_____strtod_l_internal+0x1efc> 0.00 : 3c0fa: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3c101: 00 0.00 : 3c102: 83 84 24 84 00 00 00 addl $0x40,0x84(%rsp) 0.00 : 3c109: 40 0.00 : 3c10a: eb 90 jmp 3c09c <__GI_____strtod_l_internal+0x1e8c> 0.09 : 3c10c: bd 35 00 00 00 mov $0x35,%ebp 0.00 : 3c111: 2b ac 24 84 00 00 00 sub 0x84(%rsp),%ebp 0.00 : 3c118: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c11f: 00 0.00 : 3c120: 85 ed test %ebp,%ebp 0.00 : 3c122: 7e 27 jle 3c14b <__GI_____strtod_l_internal+0x1f3b> 0.09 : 3c124: 89 e9 mov %ebp,%ecx 0.00 : 3c126: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3c12b: 4c 89 fe mov %r15,%rsi 0.00 : 3c12e: 4c 89 ff mov %r15,%rdi 0.17 : 3c131: e8 5a 64 00 00 callq 42590 <__mpn_lshift> 0.17 : 3c136: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3c13b: 48 89 d8 mov %rbx,%rax 0.00 : 3c13e: 29 e9 sub %ebp,%ecx 0.00 : 3c140: 48 d3 e8 shr %cl,%rax 0.04 : 3c143: 48 09 84 24 20 02 00 or %rax,0x220(%rsp) 0.00 : 3c14a: 00 0.39 : 3c14b: 48 8b b4 24 30 02 00 mov 0x230(%rsp),%rsi 0.00 : 3c152: 00 0.13 : 3c153: 44 8b 8c 24 ac 00 00 mov 0xac(%rsp),%r9d 0.00 : 3c15a: 00 0.00 : 3c15b: 31 c0 xor %eax,%eax 0.00 : 3c15d: 4d 85 e4 test %r12,%r12 0.04 : 3c160: 41 b8 3f 00 00 00 mov $0x3f,%r8d 0.04 : 3c166: 0f 95 c0 setne %al 0.00 : 3c169: 41 29 e8 sub %ebp,%r8d 0.00 : 3c16c: 48 83 ee 01 sub $0x1,%rsi 0.09 : 3c170: 41 09 c1 or %eax,%r9d 0.31 : 3c173: e9 93 f5 ff ff jmpq 3b70b <__GI_____strtod_l_internal+0x14fb> 0.22 : 3c178: 48 0f bd c0 bsr %rax,%rax 0.17 : 3c17c: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 3c181: 89 c2 mov %eax,%edx 0.35 : 3c183: 83 f2 3f xor $0x3f,%edx 0.26 : 3c186: 48 63 c2 movslq %edx,%rax 0.17 : 3c189: 48 29 84 24 30 02 00 sub %rax,0x230(%rsp) 0.00 : 3c190: 00 0.35 : 3c191: 44 89 c0 mov %r8d,%eax 0.00 : 3c194: 29 d0 sub %edx,%eax 0.00 : 3c196: 83 f8 35 cmp $0x35,%eax 0.00 : 3c199: 0f 8e 42 02 00 00 jle 3c3e1 <__GI_____strtod_l_internal+0x21d1> 0.00 : 3c19f: 8d 6a 35 lea 0x35(%rdx),%ebp 0.17 : 3c1a2: 48 89 d8 mov %rbx,%rax 0.00 : 3c1a5: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c1ac: 00 0.00 : 3c1ad: 29 e9 sub %ebp,%ecx 0.00 : 3c1af: 48 d3 e8 shr %cl,%rax 0.04 : 3c1b2: 48 89 84 24 20 02 00 mov %rax,0x220(%rsp) 0.00 : 3c1b9: 00 0.00 : 3c1ba: eb 8f jmp 3c14b <__GI_____strtod_l_internal+0x1f3b> 0.17 : 3c1bc: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 3c1c1: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c1c8: 00 0.00 : 3c1c9: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.04 : 3c1ce: 48 89 df mov %rbx,%rdi 0.17 : 3c1d1: b9 34 00 00 00 mov $0x34,%ecx 0.00 : 3c1d6: 4c 89 c2 mov %r8,%rdx 0.00 : 3c1d9: 4c 29 c7 sub %r8,%rdi 0.00 : 3c1dc: 29 c1 sub %eax,%ecx 0.09 : 3c1de: 49 8d 3c ff lea (%r15,%rdi,8),%rdi 0.00 : 3c1e2: e8 a9 63 00 00 callq 42590 <__mpn_lshift> 0.04 : 3c1e7: 48 2b 9c 24 38 02 00 sub 0x238(%rsp),%rbx 0.00 : 3c1ee: 00 0.00 : 3c1ef: 48 85 db test %rbx,%rbx 0.00 : 3c1f2: 0f 8e 7d f7 ff ff jle 3b975 <__GI_____strtod_l_internal+0x1765> 0.00 : 3c1f8: 31 d2 xor %edx,%edx 0.00 : 3c1fa: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 3c1ff: 48 89 c8 mov %rcx,%rax 0.00 : 3c202: 48 2b 84 24 38 02 00 sub 0x238(%rsp),%rax 0.00 : 3c209: 00 0.00 : 3c20a: 49 c7 04 d7 00 00 00 movq $0x0,(%r15,%rdx,8) 0.00 : 3c211: 00 0.00 : 3c212: 48 83 c2 01 add $0x1,%rdx 0.00 : 3c216: 48 39 d0 cmp %rdx,%rax 0.00 : 3c219: 7f e4 jg 3c1ff <__GI_____strtod_l_internal+0x1fef> 0.00 : 3c21b: e9 55 f7 ff ff jmpq 3b975 <__GI_____strtod_l_internal+0x1765> 0.00 : 3c220: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 3c225: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 3c22a: 48 89 de mov %rbx,%rsi 0.00 : 3c22d: 48 c1 e2 03 shl $0x3,%rdx 0.00 : 3c231: e8 1a 85 04 00 callq 84750 0.00 : 3c236: e9 f9 f0 ff ff jmpq 3b334 <__GI_____strtod_l_internal+0x1124> 0.00 : 3c23b: b8 35 00 00 00 mov $0x35,%eax 0.00 : 3c240: 2b 84 24 84 00 00 00 sub 0x84(%rsp),%eax 0.00 : 3c247: 89 84 24 c4 00 00 00 mov %eax,0xc4(%rsp) 0.00 : 3c24e: 0f 84 76 f2 ff ff je 3b4ca <__GI_____strtod_l_internal+0x12ba> 0.00 : 3c254: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c25b: 00 0.00 : 3c25c: 89 c1 mov %eax,%ecx 0.00 : 3c25e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3c263: 4c 89 fe mov %r15,%rsi 0.00 : 3c266: 4c 89 ff mov %r15,%rdi 0.00 : 3c269: e8 22 63 00 00 callq 42590 <__mpn_lshift> 0.00 : 3c26e: 4c 8b 84 24 38 02 00 mov 0x238(%rsp),%r8 0.00 : 3c275: 00 0.00 : 3c276: e9 4f f2 ff ff jmpq 3b4ca <__GI_____strtod_l_internal+0x12ba> 0.00 : 3c27b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3c280: 48 89 d8 mov %rbx,%rax 0.00 : 3c283: c7 84 24 c4 00 00 00 movl $0x0,0xc4(%rsp) 0.00 : 3c28a: 00 00 00 00 0.00 : 3c28e: 48 c1 e0 06 shl $0x6,%rax 0.00 : 3c292: 48 29 84 24 30 02 00 sub %rax,0x230(%rsp) 0.00 : 3c299: 00 0.00 : 3c29a: e9 32 f2 ff ff jmpq 3b4d1 <__GI_____strtod_l_internal+0x12c1> 0.00 : 3c29f: 4d 89 e5 mov %r12,%r13 0.00 : 3c2a2: 31 db xor %ebx,%ebx 0.00 : 3c2a4: 45 31 e4 xor %r12d,%r12d 0.00 : 3c2a7: e9 9a f9 ff ff jmpq 3bc46 <__GI_____strtod_l_internal+0x1a36> 0.00 : 3c2ac: 48 8b 15 85 5b 33 00 mov 0x335b85(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3c2b3: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3c2ba: 00 00 0.00 : 3c2bc: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 0.00 : 3c2c3: e9 60 e1 ff ff jmpq 3a428 <__GI_____strtod_l_internal+0x218> 0.00 : 3c2c8: 49 8d 47 c0 lea -0x40(%r15),%rax 0.00 : 3c2cc: 45 31 d2 xor %r10d,%r10d 0.00 : 3c2cf: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c2d6: 00 0.00 : 3c2d7: 48 89 84 24 30 02 00 mov %rax,0x230(%rsp) 0.00 : 3c2de: 00 0.00 : 3c2df: e9 27 f8 ff ff jmpq 3bb0b <__GI_____strtod_l_internal+0x18fb> 0.00 : 3c2e4: 48 8d 0d e5 65 10 00 lea 0x1065e5(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c2eb: 48 8d 35 2e e9 0f 00 lea 0xfe92e(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c2f2: 48 8d 3d 0a e9 0f 00 lea 0xfe90a(%rip),%rdi # 13ac03 <__PRETTY_FUNCTION__.8908+0x85> 0.00 : 3c2f9: ba 62 06 00 00 mov $0x662,%edx 0.00 : 3c2fe: e8 1d f6 fe ff callq 2b920 <__assert_fail> 0.00 : 3c303: 48 8d 0d c6 65 10 00 lea 0x1065c6(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c30a: 48 8d 35 0f e9 0f 00 lea 0xfe90f(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c311: 48 8d 3d 88 20 10 00 lea 0x102088(%rip),%rdi # 13e3a0 <__PRETTY_FUNCTION__.11129+0x9c7> 0.00 : 3c318: ba ed 03 00 00 mov $0x3ed,%edx 0.00 : 3c31d: e8 fe f5 fe ff callq 2b920 <__assert_fail> 0.00 : 3c322: 48 8d 0d a7 65 10 00 lea 0x1065a7(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c329: 48 8d 35 f0 e8 0f 00 lea 0xfe8f0(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c330: 48 8d 3d 7d e8 0f 00 lea 0xfe87d(%rip),%rdi # 13abb4 <__PRETTY_FUNCTION__.8908+0x36> 0.00 : 3c337: ba ba 03 00 00 mov $0x3ba,%edx 0.00 : 3c33c: e8 df f5 fe ff callq 2b920 <__assert_fail> 0.00 : 3c341: 48 8d 0d 88 65 10 00 lea 0x106588(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c348: 48 8d 35 d1 e8 0f 00 lea 0xfe8d1(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c34f: 48 8d 3d b2 20 10 00 lea 0x1020b2(%rip),%rdi # 13e408 <__PRETTY_FUNCTION__.11129+0xa2f> 0.00 : 3c356: ba f1 03 00 00 mov $0x3f1,%edx 0.00 : 3c35b: e8 c0 f5 fe ff callq 2b920 <__assert_fail> 0.00 : 3c360: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 3c365: 4c 8d bc 24 20 02 00 lea 0x220(%rsp),%r15 0.00 : 3c36c: 00 0.00 : 3c36d: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 3c372: 48 89 df mov %rbx,%rdi 0.00 : 3c375: 4a 8d 14 c5 00 00 00 lea 0x0(,%r8,8),%rdx 0.00 : 3c37c: 00 0.00 : 3c37d: 4c 29 c7 sub %r8,%rdi 0.00 : 3c380: 49 8d 3c ff lea (%r15,%rdi,8),%rdi 0.00 : 3c384: e8 c7 83 04 00 callq 84750 0.00 : 3c389: 48 2b 9c 24 38 02 00 sub 0x238(%rsp),%rbx 0.00 : 3c390: 00 0.00 : 3c391: 48 85 db test %rbx,%rbx 0.00 : 3c394: 0f 8e db f5 ff ff jle 3b975 <__GI_____strtod_l_internal+0x1765> 0.00 : 3c39a: 31 d2 xor %edx,%edx 0.00 : 3c39c: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 3c3a1: 48 89 c8 mov %rcx,%rax 0.00 : 3c3a4: 48 2b 84 24 38 02 00 sub 0x238(%rsp),%rax 0.00 : 3c3ab: 00 0.00 : 3c3ac: 49 c7 04 d7 00 00 00 movq $0x0,(%r15,%rdx,8) 0.00 : 3c3b3: 00 0.00 : 3c3b4: 48 83 c2 01 add $0x1,%rdx 0.00 : 3c3b8: 48 39 d0 cmp %rdx,%rax 0.00 : 3c3bb: 7f e4 jg 3c3a1 <__GI_____strtod_l_internal+0x2191> 0.00 : 3c3bd: e9 b3 f5 ff ff jmpq 3b975 <__GI_____strtod_l_internal+0x1765> 0.00 : 3c3c2: 48 8d 0d 07 65 10 00 lea 0x106507(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c3c9: 48 8d 35 50 e8 0f 00 lea 0xfe850(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c3d0: 48 8d 3d 71 22 10 00 lea 0x102271(%rip),%rdi # 13e648 <__PRETTY_FUNCTION__.11129+0xc6f> 0.00 : 3c3d7: ba 67 03 00 00 mov $0x367,%edx 0.00 : 3c3dc: e8 3f f5 fe ff callq 2b920 <__assert_fail> 0.00 : 3c3e1: f7 da neg %edx 0.00 : 3c3e3: 83 c2 40 add $0x40,%edx 0.00 : 3c3e6: 89 94 24 84 00 00 00 mov %edx,0x84(%rsp) 0.00 : 3c3ed: e9 d8 fc ff ff jmpq 3c0ca <__GI_____strtod_l_internal+0x1eba> 0.00 : 3c3f2: 48 8b 15 3f 5a 33 00 mov 0x335a3f(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3c3f9: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3c400: 00 00 0.00 : 3c402: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 0.00 : 3c409: e9 ea e6 ff ff jmpq 3aaf8 <__GI_____strtod_l_internal+0x8e8> 0.00 : 3c40e: f7 da neg %edx 0.00 : 3c410: 83 c2 40 add $0x40,%edx 0.00 : 3c413: 89 94 24 84 00 00 00 mov %edx,0x84(%rsp) 0.00 : 3c41a: e9 61 f2 ff ff jmpq 3b680 <__GI_____strtod_l_internal+0x1470> 0.00 : 3c41f: 48 8d 0d aa 64 10 00 lea 0x1064aa(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c426: 48 8d 35 f3 e7 0f 00 lea 0xfe7f3(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c42d: 48 8d 3d 94 22 10 00 lea 0x102294(%rip),%rdi # 13e6c8 <__PRETTY_FUNCTION__.11129+0xcef> 0.00 : 3c434: ba d6 04 00 00 mov $0x4d6,%edx 0.00 : 3c439: e8 e2 f4 fe ff callq 2b920 <__assert_fail> 0.00 : 3c43e: 48 8d 0d 8b 64 10 00 lea 0x10648b(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c445: 48 8d 35 d4 e7 0f 00 lea 0xfe7d4(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c44c: 48 8d 3d 72 e7 0f 00 lea 0xfe772(%rip),%rdi # 13abc5 <__PRETTY_FUNCTION__.8908+0x47> 0.00 : 3c453: ba 09 04 00 00 mov $0x409,%edx 0.00 : 3c458: e8 c3 f4 fe ff callq 2b920 <__assert_fail> 0.00 : 3c45d: 48 b8 ff ff ff ff ff movabs $0xfffffffffffff,%rax 0.00 : 3c464: ff 0f 00 0.00 : 3c467: 31 c9 xor %ecx,%ecx 0.00 : 3c469: be 00 00 08 00 mov $0x80000,%esi 0.00 : 3c46e: 48 85 c2 test %rax,%rdx 0.00 : 3c471: 74 11 je 3c484 <__GI_____strtod_l_internal+0x2274> 0.00 : 3c473: 48 89 d0 mov %rdx,%rax 0.00 : 3c476: 89 d1 mov %edx,%ecx 0.00 : 3c478: 48 c1 e8 20 shr $0x20,%rax 0.00 : 3c47c: 89 c6 mov %eax,%esi 0.00 : 3c47e: 81 e6 ff ff 0f 00 and $0xfffff,%esi 0.00 : 3c484: 48 89 f0 mov %rsi,%rax 0.00 : 3c487: 48 ba 00 00 00 00 00 movabs $0x7ff0000000000000,%rdx 0.00 : 3c48e: 00 f0 7f 0.00 : 3c491: 89 c9 mov %ecx,%ecx 0.00 : 3c493: 48 c1 e0 20 shl $0x20,%rax 0.00 : 3c497: 48 09 c2 or %rax,%rdx 0.00 : 3c49a: 48 09 ca or %rcx,%rdx 0.00 : 3c49d: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 3c4a2: f2 0f 10 44 24 18 movsd 0x18(%rsp),%xmm0 0.00 : 3c4a8: e9 f0 f8 ff ff jmpq 3bd9d <__GI_____strtod_l_internal+0x1b8d> 0.00 : 3c4ad: 48 8d 0d 1c 64 10 00 lea 0x10641c(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c4b4: 48 8d 35 65 e7 0f 00 lea 0xfe765(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c4bb: 48 8d 3d 2e e7 0f 00 lea 0xfe72e(%rip),%rdi # 13abf0 <__PRETTY_FUNCTION__.8908+0x72> 0.00 : 3c4c2: ba 39 06 00 00 mov $0x639,%edx 0.00 : 3c4c7: e8 54 f4 fe ff callq 2b920 <__assert_fail> 0.00 : 3c4cc: f7 da neg %edx 0.00 : 3c4ce: 83 c2 40 add $0x40,%edx 0.00 : 3c4d1: 89 94 24 84 00 00 00 mov %edx,0x84(%rsp) 0.00 : 3c4d8: e9 a5 f6 ff ff jmpq 3bb82 <__GI_____strtod_l_internal+0x1972> 0.00 : 3c4dd: 48 8d 0d ec 63 10 00 lea 0x1063ec(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c4e4: 48 8d 35 35 e7 0f 00 lea 0xfe735(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c4eb: 48 8d 3d b6 1f 10 00 lea 0x101fb6(%rip),%rdi # 13e4a8 <__PRETTY_FUNCTION__.11129+0xacf> 0.00 : 3c4f2: ba 1e 04 00 00 mov $0x41e,%edx 0.00 : 3c4f7: e8 24 f4 fe ff callq 2b920 <__assert_fail> 0.00 : 3c4fc: 48 8d 0d cd 63 10 00 lea 0x1063cd(%rip),%rcx # 1428d0 <__PRETTY_FUNCTION__.12157> 0.00 : 3c503: 48 8d 35 16 e7 0f 00 lea 0xfe716(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 3c50a: 48 8d 3d d4 e6 0f 00 lea 0xfe6d4(%rip),%rdi # 13abe5 <__PRETTY_FUNCTION__.8908+0x67> 0.00 : 3c511: ba 14 06 00 00 mov $0x614,%edx 0.00 : 3c516: e8 05 f4 fe ff callq 2b920 <__assert_fail> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 13.14 ??:0 3.99 ??:0 3.01 ??:0 2.87 ??:0 2.83 ??:0 2.65 ??:0 2.65 ??:0 2.38 ??:0 2.33 ??:0 2.15 ??:0 2.11 ??:0 2.06 ??:0 2.06 ??:0 2.02 ??:0 2.02 ??:0 1.97 ??:0 1.97 ??:0 1.93 ??:0 1.93 ??:0 1.79 ??:0 1.66 ??:0 1.66 ??:0 1.62 ??:0 1.35 ??:0 1.35 ??:0 1.30 ??:0 1.30 ??:0 1.30 ??:0 1.30 ??:0 1.30 ??:0 1.21 ??:0 1.03 ??:0 1.03 ??:0 0.99 ??:0 0.94 ??:0 0.94 ??:0 0.90 ??:0 0.90 ??:0 0.81 ??:0 0.81 ??:0 0.72 ??:0 0.72 ??:0 0.67 ??:0 0.67 ??:0 0.67 ??:0 0.67 ??:0 0.63 ??:0 0.63 ??:0 0.63 ??:0 0.58 ??:0 0.58 ??:0 0.58 ??:0 0.54 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000084750 : ??:0 3.99 : 84750: 48 83 fa 20 cmp $0x20,%rdx 1.66 : 84754: 48 89 f8 mov %rdi,%rax 0.67 : 84757: 73 77 jae 847d0 1.30 : 84759: f6 c2 01 test $0x1,%dl 0.00 : 8475c: 74 0b je 84769 1.97 : 8475e: 0f b6 0e movzbl (%rsi),%ecx 1.66 : 84761: 88 0f mov %cl,(%rdi) 1.30 : 84763: 48 ff c6 inc %rsi 0.22 : 84766: 48 ff c7 inc %rdi 2.87 : 84769: f6 c2 02 test $0x2,%dl 0.00 : 8476c: 74 12 je 84780 1.79 : 8476e: 0f b7 0e movzwl (%rsi),%ecx 2.33 : 84771: 66 89 0f mov %cx,(%rdi) 0.81 : 84774: 48 83 c6 02 add $0x2,%rsi 0.27 : 84778: 48 83 c7 02 add $0x2,%rdi 0.00 : 8477c: 0f 1f 40 00 nopl 0x0(%rax) 2.65 : 84780: f6 c2 04 test $0x4,%dl 0.00 : 84783: 74 0c je 84791 2.38 : 84785: 8b 0e mov (%rsi),%ecx 2.02 : 84787: 89 0f mov %ecx,(%rdi) 1.30 : 84789: 48 83 c6 04 add $0x4,%rsi 0.09 : 8478d: 48 83 c7 04 add $0x4,%rdi 2.83 : 84791: f6 c2 08 test $0x8,%dl 0.00 : 84794: 74 0e je 847a4 2.11 : 84796: 48 8b 0e mov (%rsi),%rcx 3.01 : 84799: 48 89 0f mov %rcx,(%rdi) 2.15 : 8479c: 48 83 c6 08 add $0x8,%rsi 0.13 : 847a0: 48 83 c7 08 add $0x8,%rdi 2.65 : 847a4: 81 e2 f0 00 00 00 and $0xf0,%edx 0.00 : 847aa: 74 1f je 847cb 1.35 : 847ac: 0f 1f 40 00 nopl 0x0(%rax) 0.49 : 847b0: 48 8b 0e mov (%rsi),%rcx 2.06 : 847b3: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.94 : 847b7: 48 89 0f mov %rcx,(%rdi) 1.93 : 847ba: 4c 89 47 08 mov %r8,0x8(%rdi) 1.30 : 847be: 83 ea 10 sub $0x10,%edx 0.04 : 847c1: 48 8d 76 10 lea 0x10(%rsi),%rsi 0.40 : 847c5: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.22 : 847c9: 75 e5 jne 847b0 1.93 : 847cb: f3 c3 repz retq 0.00 : 847cd: 0f 1f 00 nopl (%rax) 1.62 : 847d0: 48 89 44 24 f8 mov %rax,-0x8(%rsp) 1.21 : 847d5: 89 f1 mov %esi,%ecx 0.00 : 847d7: 83 e1 07 and $0x7,%ecx 0.00 : 847da: 74 34 je 84810 0.04 : 847dc: 48 8d 54 11 f8 lea -0x8(%rcx,%rdx,1),%rdx 0.27 : 847e1: 83 e9 08 sub $0x8,%ecx 0.04 : 847e4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 847eb: 00 00 00 00 00 1.03 : 847f0: 0f b6 06 movzbl (%rsi),%eax 0.67 : 847f3: 88 07 mov %al,(%rdi) 1.97 : 847f5: ff c1 inc %ecx 0.00 : 847f7: 48 8d 76 01 lea 0x1(%rsi),%rsi 0.09 : 847fb: 48 8d 7f 01 lea 0x1(%rdi),%rdi 0.04 : 847ff: 75 ef jne 847f0 1.30 : 84801: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 84808: 0f 1f 84 00 00 00 00 0.00 : 8480f: 00 0.22 : 84810: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 84817: 77 77 ja 84890 1.35 : 84819: 89 d1 mov %edx,%ecx 0.00 : 8481b: c1 e9 05 shr $0x5,%ecx 0.31 : 8481e: 74 60 je 84880 1.03 : 84820: ff c9 dec %ecx 0.31 : 84822: 48 8b 06 mov (%rsi),%rax 0.49 : 84825: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.90 : 84829: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.99 : 8482d: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.94 : 84831: 48 89 07 mov %rax,(%rdi) 2.02 : 84834: 4c 89 47 08 mov %r8,0x8(%rdi) 2.06 : 84838: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.63 : 8483c: 4c 89 57 18 mov %r10,0x18(%rdi) 0.45 : 84840: 48 8d 76 20 lea 0x20(%rsi),%rsi 0.18 : 84844: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.58 : 84848: 74 36 je 84880 0.18 : 8484a: ff c9 dec %ecx 0.36 : 8484c: 48 8b 06 mov (%rsi),%rax 0.40 : 8484f: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.90 : 84853: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.45 : 84857: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.63 : 8485b: 48 89 07 mov %rax,(%rdi) 0.36 : 8485e: 4c 89 47 08 mov %r8,0x8(%rdi) 0.67 : 84862: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.81 : 84866: 4c 89 57 18 mov %r10,0x18(%rdi) 0.31 : 8486a: 48 8d 76 20 lea 0x20(%rsi),%rsi 0.00 : 8486e: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.13 : 84872: 75 ac jne 84820 0.00 : 84874: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8487b: 00 00 00 00 00 0.63 : 84880: 83 e2 1f and $0x1f,%edx 0.58 : 84883: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.54 : 84888: 0f 85 cb fe ff ff jne 84759 0.04 : 8488e: f3 c3 repz retq 0.00 : 84890: 4c 8b 1d 79 d8 2e 00 mov 0x2ed879(%rip),%r11 # 372110 <__x86_64_data_cache_size_half> 0.04 : 84897: 49 39 d3 cmp %rdx,%r11 0.00 : 8489a: 4c 0f 47 da cmova %rdx,%r11 0.00 : 8489e: 4c 89 d9 mov %r11,%rcx 0.00 : 848a1: 49 83 e3 f8 and $0xfffffffffffffff8,%r11 0.00 : 848a5: 48 c1 e9 03 shr $0x3,%rcx 0.00 : 848a9: 74 05 je 848b0 ??:0 13.14 : 848ab: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) 0.13 : 848ae: 66 90 xchg %ax,%ax 0.00 : 848b0: 4c 29 da sub %r11,%rdx 0.00 : 848b3: 48 f7 c2 f8 ff ff ff test $0xfffffffffffffff8,%rdx 0.00 : 848ba: 75 14 jne 848d0 0.00 : 848bc: 83 e2 07 and $0x7,%edx 0.00 : 848bf: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.00 : 848c4: 0f 85 8f fe ff ff jne 84759 0.00 : 848ca: f3 c3 repz retq 0.00 : 848cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 848d0: 4c 8b 05 59 d8 2e 00 mov 0x2ed859(%rip),%r8 # 372130 <__x86_64_shared_cache_size_half> 0.00 : 848d7: 49 39 d0 cmp %rdx,%r8 0.00 : 848da: 4c 0f 47 c2 cmova %rdx,%r8 0.00 : 848de: 4c 89 c1 mov %r8,%rcx 0.00 : 848e1: 49 83 e0 c0 and $0xffffffffffffffc0,%r8 0.00 : 848e5: 48 c1 e9 06 shr $0x6,%rcx 0.00 : 848e9: 0f 84 ab 01 00 00 je 84a9a 0.00 : 848ef: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 848f4: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 848f9: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 848fe: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 84903: 83 3d 06 2b 2f 00 00 cmpl $0x0,0x2f2b06(%rip) # 377410 <__x86_64_prefetchw> 0.00 : 8490a: 0f 84 c0 00 00 00 je 849d0 0.00 : 84910: 48 ff c9 dec %rcx 0.00 : 84913: 48 8b 06 mov (%rsi),%rax 0.00 : 84916: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 8491a: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 8491e: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 84922: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84926: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 8492a: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 8492e: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 84932: 0f 18 8e 80 03 00 00 prefetcht0 0x380(%rsi) 0.00 : 84939: 0f 18 8e c0 03 00 00 prefetcht0 0x3c0(%rsi) 0.00 : 84940: 48 89 07 mov %rax,(%rdi) 0.00 : 84943: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.00 : 84947: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 8494b: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 8494f: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 84953: 4c 89 67 28 mov %r12,0x28(%rdi) 0.00 : 84957: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 8495b: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 8495f: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 84963: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 84967: 0f 84 19 01 00 00 je 84a86 0.00 : 8496d: 48 ff c9 dec %rcx 0.00 : 84970: 48 8b 06 mov (%rsi),%rax 0.00 : 84973: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 84977: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.00 : 8497b: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 8497f: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84983: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 84987: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 8498b: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.00 : 8498f: 48 89 07 mov %rax,(%rdi) 0.00 : 84992: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.00 : 84996: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.00 : 8499a: 4c 89 57 18 mov %r10,0x18(%rdi) 0.00 : 8499e: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 849a2: 4c 89 67 28 mov %r12,0x28(%rdi) 0.00 : 849a6: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 849aa: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 849ae: 0f 0d 8f 40 03 00 00 prefetchw 0x340(%rdi) 0.00 : 849b5: 0f 0d 8f 80 03 00 00 prefetchw 0x380(%rdi) 0.00 : 849bc: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 849c0: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 849c4: 0f 85 46 ff ff ff jne 84910 0.00 : 849ca: e9 b7 00 00 00 jmpq 84a86 0.00 : 849cf: 90 nop 0.09 : 849d0: 48 ff c9 dec %rcx 0.00 : 849d3: 48 8b 06 mov (%rsi),%rax 0.49 : 849d6: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.09 : 849da: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.04 : 849de: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.18 : 849e2: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 849e6: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.04 : 849ea: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.04 : 849ee: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.13 : 849f2: 0f 18 8e 80 03 00 00 prefetcht0 0x380(%rsi) 0.36 : 849f9: 0f 18 8e c0 03 00 00 prefetcht0 0x3c0(%rsi) ??:0 0.72 : 84a00: 48 89 07 mov %rax,(%rdi) 0.00 : 84a03: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.13 : 84a07: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.04 : 84a0b: 4c 89 57 18 mov %r10,0x18(%rdi) 0.09 : 84a0f: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.04 : 84a13: 4c 89 67 28 mov %r12,0x28(%rdi) 0.18 : 84a17: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.13 : 84a1b: 4c 89 77 38 mov %r14,0x38(%rdi) 0.09 : 84a1f: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 84a23: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 84a27: 74 5d je 84a86 0.04 : 84a29: 48 ff c9 dec %rcx 0.04 : 84a2c: 48 8b 06 mov (%rsi),%rax 0.67 : 84a2f: 48 8b 5e 08 mov 0x8(%rsi),%rbx 0.00 : 84a33: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.04 : 84a37: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.04 : 84a3b: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84a3f: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 84a43: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 84a47: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.09 : 84a4b: 0f 18 8f 40 03 00 00 prefetcht0 0x340(%rdi) 0.58 : 84a52: 0f 18 8f 80 03 00 00 prefetcht0 0x380(%rdi) 0.72 : 84a59: 48 89 07 mov %rax,(%rdi) 0.00 : 84a5c: 48 89 5f 08 mov %rbx,0x8(%rdi) 0.04 : 84a60: 4c 89 4f 10 mov %r9,0x10(%rdi) 0.13 : 84a64: 4c 89 57 18 mov %r10,0x18(%rdi) 0.09 : 84a68: 4c 89 5f 20 mov %r11,0x20(%rdi) 0.00 : 84a6c: 4c 89 67 28 mov %r12,0x28(%rdi) 0.04 : 84a70: 4c 89 6f 30 mov %r13,0x30(%rdi) 0.00 : 84a74: 4c 89 77 38 mov %r14,0x38(%rdi) 0.00 : 84a78: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 84a7c: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 84a80: 0f 85 4a ff ff ff jne 849d0 0.00 : 84a86: 48 8b 5c 24 d8 mov -0x28(%rsp),%rbx 0.00 : 84a8b: 4c 8b 64 24 e0 mov -0x20(%rsp),%r12 0.00 : 84a90: 4c 8b 6c 24 e8 mov -0x18(%rsp),%r13 0.00 : 84a95: 4c 8b 74 24 f0 mov -0x10(%rsp),%r14 0.00 : 84a9a: 4c 29 c2 sub %r8,%rdx 0.00 : 84a9d: 48 f7 c2 c0 ff ff ff test $0xffffffffffffffc0,%rdx 0.00 : 84aa4: 75 1a jne 84ac0 0.00 : 84aa6: 83 e2 3f and $0x3f,%edx 0.00 : 84aa9: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.04 : 84aae: 0f 85 a5 fc ff ff jne 84759 0.00 : 84ab4: f3 c3 repz retq 0.00 : 84ab6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 84abd: 00 00 00 0.00 : 84ac0: 48 89 d1 mov %rdx,%rcx 0.00 : 84ac3: 48 c1 e9 07 shr $0x7,%rcx 0.00 : 84ac7: 0f 84 d8 00 00 00 je 84ba5 0.00 : 84acd: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 84ad2: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 84ad7: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 84adc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 84ae0: 0f 18 86 00 03 00 00 prefetchnta 0x300(%rsi) 0.09 : 84ae7: 0f 18 86 40 03 00 00 prefetchnta 0x340(%rsi) 0.18 : 84aee: 48 ff c9 dec %rcx 0.00 : 84af1: 48 8b 06 mov (%rsi),%rax 0.00 : 84af4: 4c 8b 46 08 mov 0x8(%rsi),%r8 0.00 : 84af8: 4c 8b 4e 10 mov 0x10(%rsi),%r9 0.04 : 84afc: 4c 8b 56 18 mov 0x18(%rsi),%r10 0.00 : 84b00: 4c 8b 5e 20 mov 0x20(%rsi),%r11 0.00 : 84b04: 4c 8b 66 28 mov 0x28(%rsi),%r12 0.00 : 84b08: 4c 8b 6e 30 mov 0x30(%rsi),%r13 0.00 : 84b0c: 4c 8b 76 38 mov 0x38(%rsi),%r14 0.04 : 84b10: 48 0f c3 07 movnti %rax,(%rdi) 0.00 : 84b14: 4c 0f c3 47 08 movnti %r8,0x8(%rdi) 0.04 : 84b19: 4c 0f c3 4f 10 movnti %r9,0x10(%rdi) 0.00 : 84b1e: 4c 0f c3 57 18 movnti %r10,0x18(%rdi) 0.04 : 84b23: 4c 0f c3 5f 20 movnti %r11,0x20(%rdi) 0.00 : 84b28: 4c 0f c3 67 28 movnti %r12,0x28(%rdi) 0.04 : 84b2d: 4c 0f c3 6f 30 movnti %r13,0x30(%rdi) 0.00 : 84b32: 4c 0f c3 77 38 movnti %r14,0x38(%rdi) 0.00 : 84b37: 48 8b 46 40 mov 0x40(%rsi),%rax 0.00 : 84b3b: 4c 8b 46 48 mov 0x48(%rsi),%r8 0.00 : 84b3f: 4c 8b 4e 50 mov 0x50(%rsi),%r9 0.00 : 84b43: 4c 8b 56 58 mov 0x58(%rsi),%r10 0.00 : 84b47: 4c 8b 5e 60 mov 0x60(%rsi),%r11 0.00 : 84b4b: 4c 8b 66 68 mov 0x68(%rsi),%r12 0.00 : 84b4f: 4c 8b 6e 70 mov 0x70(%rsi),%r13 0.00 : 84b53: 4c 8b 76 78 mov 0x78(%rsi),%r14 0.00 : 84b57: 48 0f c3 47 40 movnti %rax,0x40(%rdi) 0.00 : 84b5c: 4c 0f c3 47 48 movnti %r8,0x48(%rdi) 0.00 : 84b61: 4c 0f c3 4f 50 movnti %r9,0x50(%rdi) 0.00 : 84b66: 4c 0f c3 57 58 movnti %r10,0x58(%rdi) 0.00 : 84b6b: 4c 0f c3 5f 60 movnti %r11,0x60(%rdi) 0.04 : 84b70: 4c 0f c3 67 68 movnti %r12,0x68(%rdi) 0.00 : 84b75: 4c 0f c3 6f 70 movnti %r13,0x70(%rdi) 0.00 : 84b7a: 4c 0f c3 77 78 movnti %r14,0x78(%rdi) 0.00 : 84b7f: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 84b86: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 84b8d: 0f 85 4d ff ff ff jne 84ae0 0.00 : 84b93: 0f ae f8 sfence 0.00 : 84b96: 4c 8b 64 24 e0 mov -0x20(%rsp),%r12 0.00 : 84b9b: 4c 8b 6c 24 e8 mov -0x18(%rsp),%r13 0.00 : 84ba0: 4c 8b 74 24 f0 mov -0x10(%rsp),%r14 0.00 : 84ba5: 83 e2 7f and $0x7f,%edx 0.00 : 84ba8: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.00 : 84bad: 0f 85 a6 fb ff ff jne 84759 0.00 : 84bb3: f3 c3 repz retq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 8.52 ??:0 6.74 ??:0 6.42 ??:0 3.30 ??:0 3.12 ??:0 2.84 ??:0 2.57 ??:0 2.47 ??:0 2.38 ??:0 2.15 ??:0 2.15 ??:0 2.11 ??:0 1.92 ??:0 1.88 ??:0 1.88 ??:0 1.83 ??:0 1.79 ??:0 1.74 ??:0 1.60 ??:0 1.56 ??:0 1.51 ??:0 1.47 ??:0 1.47 ??:0 1.37 ??:0 1.33 ??:0 1.33 ??:0 1.28 ??:0 1.28 ??:0 1.19 ??:0 1.19 ??:0 1.15 ??:0 1.15 ??:0 1.10 ??:0 1.10 ??:0 1.10 ??:0 1.10 ??:0 1.10 ??:0 1.05 ??:0 0.96 ??:0 0.96 ??:0 0.96 ??:0 0.87 ??:0 0.87 ??:0 0.82 ??:0 0.78 ??:0 0.78 ??:0 0.64 ??:0 0.60 ??:0 0.55 ??:0 0.55 ??:0 0.55 ??:0 0.50 ??:0 0.50 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000036b20 <__GI_____strtol_l_internal>: 0.00 : 36b20: 41 57 push %r15 0.14 : 36b22: 41 89 d1 mov %edx,%r9d ??:0 1.15 : 36b25: 41 56 push %r14 0.55 : 36b27: 41 55 push %r13 0.00 : 36b29: 4d 89 c5 mov %r8,%r13 0.00 : 36b2c: 41 54 push %r12 1.10 : 36b2e: 55 push %rbp 0.50 : 36b2f: 53 push %rbx 0.00 : 36b30: 48 83 ec 38 sub $0x38,%rsp 0.96 : 36b34: 85 c9 test %ecx,%ecx 0.41 : 36b36: 48 89 7c 24 28 mov %rdi,0x28(%rsp) 0.46 : 36b3b: 48 89 74 24 20 mov %rsi,0x20(%rsp) 0.55 : 36b40: 49 8b 50 08 mov 0x8(%r8),%rdx 1.60 : 36b44: 0f 85 4e 03 00 00 jne 36e98 <__GI_____strtol_l_internal+0x378> 0.05 : 36b4a: 31 ed xor %ebp,%ebp 0.09 : 36b4c: 45 31 d2 xor %r10d,%r10d 0.27 : 36b4f: 45 85 c9 test %r9d,%r9d 0.00 : 36b52: 0f 88 d0 01 00 00 js 36d28 <__GI_____strtol_l_internal+0x208> 0.78 : 36b58: 41 83 f9 01 cmp $0x1,%r9d 0.00 : 36b5c: 0f 84 c6 01 00 00 je 36d28 <__GI_____strtol_l_internal+0x208> 0.09 : 36b62: 41 83 f9 24 cmp $0x24,%r9d 0.00 : 36b66: 0f 8f bc 01 00 00 jg 36d28 <__GI_____strtol_l_internal+0x208> 0.14 : 36b6c: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.32 : 36b71: 4d 8b 65 68 mov 0x68(%r13),%r12 0.87 : 36b75: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.09 : 36b7a: 0f b6 08 movzbl (%rax),%ecx 1.51 : 36b7d: 48 0f be c1 movsbq %cl,%rax 1.28 : 36b81: 41 f6 44 44 01 20 testb $0x20,0x1(%r12,%rax,2) ??:0 8.52 : 36b87: 74 1a je 36ba3 <__GI_____strtol_l_internal+0x83> 0.00 : 36b89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 36b90: 48 83 c2 01 add $0x1,%rdx 0.00 : 36b94: 0f b6 0a movzbl (%rdx),%ecx 0.00 : 36b97: 48 0f be c1 movsbq %cl,%rax 0.00 : 36b9b: 41 f6 44 44 01 20 testb $0x20,0x1(%r12,%rax,2) 0.00 : 36ba1: 75 ed jne 36b90 <__GI_____strtol_l_internal+0x70> ??:0 1.10 : 36ba3: 84 c9 test %cl,%cl 0.00 : 36ba5: 49 89 d7 mov %rdx,%r15 0.00 : 36ba8: 0f 84 2d 03 00 00 je 36edb <__GI_____strtol_l_internal+0x3bb> 0.00 : 36bae: 80 f9 2d cmp $0x2d,%cl 0.00 : 36bb1: 0f 84 bb 02 00 00 je 36e72 <__GI_____strtol_l_internal+0x352> 1.15 : 36bb7: 80 f9 2b cmp $0x2b,%cl 0.00 : 36bba: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 36bc1: 00 0.09 : 36bc2: 0f 84 a6 01 00 00 je 36d6e <__GI_____strtol_l_internal+0x24e> 0.00 : 36bc8: 45 0f b6 37 movzbl (%r15),%r14d 2.15 : 36bcc: 41 80 fe 30 cmp $0x30,%r14b 0.00 : 36bd0: 45 89 f0 mov %r14d,%r8d 0.00 : 36bd3: 0f 84 5d 02 00 00 je 36e36 <__GI_____strtol_l_internal+0x316> 0.37 : 36bd9: 45 85 c9 test %r9d,%r9d 0.00 : 36bdc: 0f 84 71 01 00 00 je 36d53 <__GI_____strtol_l_internal+0x233> 2.11 : 36be2: 41 83 f9 0a cmp $0xa,%r9d 0.55 : 36be6: 41 8d 41 fe lea -0x2(%r9),%eax 0.00 : 36bea: 0f 84 63 01 00 00 je 36d53 <__GI_____strtol_l_internal+0x233> 0.00 : 36bf0: 45 31 d2 xor %r10d,%r10d 0.00 : 36bf3: 31 db xor %ebx,%ebx 1.33 : 36bf5: 48 8d 15 24 ca 0f 00 lea 0xfca24(%rip),%rdx # 133620 <__strtol_ul_max_tab> 0.60 : 36bfc: 48 98 cltq 0.00 : 36bfe: 45 84 c0 test %r8b,%r8b 0.23 : 36c01: 44 89 c7 mov %r8d,%edi 1.19 : 36c04: 4c 8b 1c c2 mov (%rdx,%rax,8),%r11 0.82 : 36c08: 48 8d 15 31 cb 0f 00 lea 0xfcb31(%rip),%rdx # 133740 <__strtol_ul_rem_tab> 0.00 : 36c0f: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.27 : 36c13: 88 54 24 33 mov %dl,0x33(%rsp) 1.28 : 36c17: 0f 84 9c 01 00 00 je 36db9 <__GI_____strtol_l_internal+0x299> 0.37 : 36c1d: 4d 39 fa cmp %r15,%r10 0.00 : 36c20: 0f 84 93 01 00 00 je 36db9 <__GI_____strtol_l_internal+0x299> 0.05 : 36c26: 48 8d 53 ff lea -0x1(%rbx),%rdx 0.00 : 36c2a: 4c 89 fe mov %r15,%rsi 1.88 : 36c2d: 45 31 c0 xor %r8d,%r8d 0.46 : 36c30: 45 31 e4 xor %r12d,%r12d 0.00 : 36c33: 4d 63 f1 movslq %r9d,%r14 0.05 : 36c36: 48 89 54 24 18 mov %rdx,0x18(%rsp) 1.19 : 36c3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 1.05 : 36c40: 8d 4f d0 lea -0x30(%rdi),%ecx 0.96 : 36c43: 80 f9 09 cmp $0x9,%cl 0.00 : 36c46: 76 51 jbe 36c99 <__GI_____strtol_l_internal+0x179> 0.00 : 36c48: 48 85 db test %rbx,%rbx 0.00 : 36c4b: 74 2f je 36c7c <__GI_____strtol_l_internal+0x15c> 0.00 : 36c4d: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 36c51: 31 d2 xor %edx,%edx 0.00 : 36c53: 3a 06 cmp (%rsi),%al 0.00 : 36c55: 74 13 je 36c6a <__GI_____strtol_l_internal+0x14a> 0.00 : 36c57: eb 23 jmp 36c7c <__GI_____strtol_l_internal+0x15c> 0.00 : 36c59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 36c60: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 36c65: 3a 04 16 cmp (%rsi,%rdx,1),%al 0.00 : 36c68: 75 09 jne 36c73 <__GI_____strtol_l_internal+0x153> 0.00 : 36c6a: 48 83 c2 01 add $0x1,%rdx 0.00 : 36c6e: 48 39 d3 cmp %rdx,%rbx 0.00 : 36c71: 77 ed ja 36c60 <__GI_____strtol_l_internal+0x140> 0.00 : 36c73: 48 39 da cmp %rbx,%rdx 0.00 : 36c76: 0f 84 24 01 00 00 je 36da0 <__GI_____strtol_l_internal+0x280> 0.00 : 36c7c: 49 8b 45 68 mov 0x68(%r13),%rax 0.00 : 36c80: 40 0f b6 d7 movzbl %dil,%edx 0.00 : 36c84: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 36c89: 0f 84 21 01 00 00 je 36db0 <__GI_____strtol_l_internal+0x290> 0.00 : 36c8f: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 36c93: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 36c96: 8d 48 c9 lea -0x37(%rax),%ecx 3.30 : 36c99: 0f b6 c1 movzbl %cl,%eax 1.88 : 36c9c: 41 39 c1 cmp %eax,%r9d 0.00 : 36c9f: 0f 8e 0b 01 00 00 jle 36db0 <__GI_____strtol_l_internal+0x290> 2.84 : 36ca5: 4d 39 c3 cmp %r8,%r11 0.00 : 36ca8: 0f 82 e2 00 00 00 jb 36d90 <__GI_____strtol_l_internal+0x270> 2.15 : 36cae: 4d 39 d8 cmp %r11,%r8 0.00 : 36cb1: 0f 84 c9 00 00 00 je 36d80 <__GI_____strtol_l_internal+0x260> 1.83 : 36cb7: 4c 89 c2 mov %r8,%rdx 1.33 : 36cba: 0f b6 c1 movzbl %cl,%eax 1.74 : 36cbd: 49 0f af d6 imul %r14,%rdx 1.92 : 36cc1: 4c 8d 04 10 lea (%rax,%rdx,1),%r8 3.12 : 36cc5: 48 83 c6 01 add $0x1,%rsi 0.96 : 36cc9: 0f b6 3e movzbl (%rsi),%edi ??:0 6.42 : 36ccc: 40 84 ff test %dil,%dil 0.00 : 36ccf: 0f 84 db 00 00 00 je 36db0 <__GI_____strtol_l_internal+0x290> ??:0 2.57 : 36cd5: 49 39 f2 cmp %rsi,%r10 0.00 : 36cd8: 0f 85 62 ff ff ff jne 36c40 <__GI_____strtol_l_internal+0x120> 2.38 : 36cde: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 1.10 : 36ce4: 74 08 je 36cee <__GI_____strtol_l_internal+0x1ce> 1.10 : 36ce6: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 36ceb: 48 89 30 mov %rsi,(%rax) ??:0 6.74 : 36cee: 45 85 e4 test %r12d,%r12d 0.00 : 36cf1: 0f 84 09 01 00 00 je 36e00 <__GI_____strtol_l_internal+0x2e0> 0.00 : 36cf7: 83 7c 24 34 01 cmpl $0x1,0x34(%rsp) 0.00 : 36cfc: 48 8b 05 35 b1 33 00 mov 0x33b135(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 36d03: 64 48 8b 14 25 00 00 mov %fs:0x0,%rdx 0.00 : 36d0a: 00 00 0.00 : 36d0c: c7 04 02 22 00 00 00 movl $0x22,(%rdx,%rax,1) 0.00 : 36d13: 48 19 d2 sbb %rdx,%rdx 0.00 : 36d16: 48 b8 00 00 00 00 00 movabs $0x8000000000000000,%rax 0.00 : 36d1d: 00 00 80 0.00 : 36d20: 48 01 c2 add %rax,%rdx 0.00 : 36d23: eb 1c jmp 36d41 <__GI_____strtol_l_internal+0x221> 0.00 : 36d25: 0f 1f 00 nopl (%rax) 0.00 : 36d28: 48 8b 15 09 b1 33 00 mov 0x33b109(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 36d2f: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 36d36: 00 00 0.00 : 36d38: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 36d3f: 31 d2 xor %edx,%edx ??:0 0.78 : 36d41: 48 83 c4 38 add $0x38,%rsp 0.87 : 36d45: 48 89 d0 mov %rdx,%rax 0.00 : 36d48: 5b pop %rbx 0.27 : 36d49: 5d pop %rbp 0.32 : 36d4a: 41 5c pop %r12 1.79 : 36d4c: 41 5d pop %r13 0.00 : 36d4e: 41 5e pop %r14 0.50 : 36d50: 41 5f pop %r15 0.46 : 36d52: c3 retq 0.32 : 36d53: 4d 85 d2 test %r10,%r10 0.00 : 36d56: 0f 85 89 01 00 00 jne 36ee5 <__GI_____strtol_l_internal+0x3c5> 1.56 : 36d5c: 31 db xor %ebx,%ebx 0.32 : 36d5e: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.14 : 36d64: b8 08 00 00 00 mov $0x8,%eax 0.00 : 36d69: e9 87 fe ff ff jmpq 36bf5 <__GI_____strtol_l_internal+0xd5> 0.00 : 36d6e: 4c 8d 7a 01 lea 0x1(%rdx),%r15 0.00 : 36d72: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 36d79: 00 0.00 : 36d7a: e9 49 fe ff ff jmpq 36bc8 <__GI_____strtol_l_internal+0xa8> 0.00 : 36d7f: 90 nop 0.00 : 36d80: 3a 4c 24 33 cmp 0x33(%rsp),%cl 0.00 : 36d84: 0f 86 2d ff ff ff jbe 36cb7 <__GI_____strtol_l_internal+0x197> 0.00 : 36d8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 36d90: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 36d96: e9 2a ff ff ff jmpq 36cc5 <__GI_____strtol_l_internal+0x1a5> 0.00 : 36d9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 36da0: 48 03 74 24 18 add 0x18(%rsp),%rsi 0.00 : 36da5: e9 1b ff ff ff jmpq 36cc5 <__GI_____strtol_l_internal+0x1a5> 0.00 : 36daa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 1.47 : 36db0: 49 39 f7 cmp %rsi,%r15 0.00 : 36db3: 0f 85 25 ff ff ff jne 36cde <__GI_____strtol_l_internal+0x1be> 0.00 : 36db9: 4c 89 f9 mov %r15,%rcx 0.00 : 36dbc: 31 d2 xor %edx,%edx 0.00 : 36dbe: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : 36dc4: 0f 84 77 ff ff ff je 36d41 <__GI_____strtol_l_internal+0x221> 0.00 : 36dca: 48 89 c8 mov %rcx,%rax 0.00 : 36dcd: 48 2b 44 24 28 sub 0x28(%rsp),%rax 0.00 : 36dd2: 48 83 e8 01 sub $0x1,%rax 0.00 : 36dd6: 7e 13 jle 36deb <__GI_____strtol_l_internal+0x2cb> 0.00 : 36dd8: 48 0f be 51 ff movsbq -0x1(%rcx),%rdx 0.00 : 36ddd: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 36de1: 83 3c 90 58 cmpl $0x58,(%rax,%rdx,4) 0.00 : 36de5: 0f 84 d3 00 00 00 je 36ebe <__GI_____strtol_l_internal+0x39e> 0.00 : 36deb: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 36df0: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 36df5: 48 89 10 mov %rdx,(%rax) 0.00 : 36df8: 31 d2 xor %edx,%edx 0.00 : 36dfa: e9 42 ff ff ff jmpq 36d41 <__GI_____strtol_l_internal+0x221> 0.00 : 36dff: 90 nop 0.00 : 36e00: 83 7c 24 34 01 cmpl $0x1,0x34(%rsp) 1.37 : 36e05: 48 ba 00 00 00 00 00 movabs $0x8000000000000000,%rdx 0.00 : 36e0c: 00 00 80 0.00 : 36e0f: 48 19 c0 sbb %rax,%rax 2.47 : 36e12: 48 01 d0 add %rdx,%rax 0.37 : 36e15: 4c 39 c0 cmp %r8,%rax 0.00 : 36e18: 0f 82 d9 fe ff ff jb 36cf7 <__GI_____strtol_l_internal+0x1d7> 0.46 : 36e1e: 8b 54 24 34 mov 0x34(%rsp),%edx 1.10 : 36e22: 4c 89 c0 mov %r8,%rax 0.00 : 36e25: 48 f7 d8 neg %rax 0.05 : 36e28: 85 d2 test %edx,%edx 0.41 : 36e2a: 4c 89 c2 mov %r8,%rdx 1.47 : 36e2d: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 36e31: e9 0b ff ff ff jmpq 36d41 <__GI_____strtol_l_internal+0x221> 0.46 : 36e36: 45 85 c9 test %r9d,%r9d 0.64 : 36e39: 0f 94 c1 sete %cl 0.09 : 36e3c: 74 0a je 36e48 <__GI_____strtol_l_internal+0x328> 0.23 : 36e3e: 41 83 f9 10 cmp $0x10,%r9d 0.00 : 36e42: 0f 85 9a fd ff ff jne 36be2 <__GI_____strtol_l_internal+0xc2> 0.00 : 36e48: 49 0f be 57 01 movsbq 0x1(%r15),%rdx 0.00 : 36e4d: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 36e51: 83 3c 90 58 cmpl $0x58,(%rax,%rdx,4) 0.00 : 36e55: 74 2c je 36e83 <__GI_____strtol_l_internal+0x363> 0.00 : 36e57: 84 c9 test %cl,%cl 0.00 : 36e59: 0f 84 83 fd ff ff je 36be2 <__GI_____strtol_l_internal+0xc2> 0.00 : 36e5f: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 36e65: b8 06 00 00 00 mov $0x6,%eax 0.00 : 36e6a: 45 89 f0 mov %r14d,%r8d 0.00 : 36e6d: e9 7e fd ff ff jmpq 36bf0 <__GI_____strtol_l_internal+0xd0> 0.00 : 36e72: 4c 8d 7a 01 lea 0x1(%rdx),%r15 0.00 : 36e76: c7 44 24 34 01 00 00 movl $0x1,0x34(%rsp) 0.00 : 36e7d: 00 0.00 : 36e7e: e9 45 fd ff ff jmpq 36bc8 <__GI_____strtol_l_internal+0xa8> 0.00 : 36e83: 49 83 c7 02 add $0x2,%r15 0.00 : 36e87: 41 b9 10 00 00 00 mov $0x10,%r9d 0.00 : 36e8d: b8 0e 00 00 00 mov $0xe,%eax 0.00 : 36e92: 45 0f b6 37 movzbl (%r15),%r14d 0.00 : 36e96: eb d2 jmp 36e6a <__GI_____strtol_l_internal+0x34a> 0.00 : 36e98: 4c 8b 52 50 mov 0x50(%rdx),%r10 0.00 : 36e9c: 41 0f b6 02 movzbl (%r10),%eax 0.00 : 36ea0: 83 e8 01 sub $0x1,%eax 0.00 : 36ea3: 3c 7d cmp $0x7d,%al 0.00 : 36ea5: 0f 87 9f fc ff ff ja 36b4a <__GI_____strtol_l_internal+0x2a> 0.00 : 36eab: 48 8b 6a 48 mov 0x48(%rdx),%rbp 0.00 : 36eaf: 80 7d 00 00 cmpb $0x0,0x0(%rbp) 0.00 : 36eb3: 0f 85 96 fc ff ff jne 36b4f <__GI_____strtol_l_internal+0x2f> 0.00 : 36eb9: e9 8c fc ff ff jmpq 36b4a <__GI_____strtol_l_internal+0x2a> 0.00 : 36ebe: 80 79 fe 30 cmpb $0x30,-0x2(%rcx) 0.00 : 36ec2: 0f 85 23 ff ff ff jne 36deb <__GI_____strtol_l_internal+0x2cb> 0.00 : 36ec8: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 36ecd: 48 8d 41 ff lea -0x1(%rcx),%rax 0.00 : 36ed1: 48 89 02 mov %rax,(%rdx) 0.00 : 36ed4: 31 d2 xor %edx,%edx 0.00 : 36ed6: e9 66 fe ff ff jmpq 36d41 <__GI_____strtol_l_internal+0x221> 0.00 : 36edb: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 36ee0: e9 d7 fe ff ff jmpq 36dbc <__GI_____strtol_l_internal+0x29c> 0.00 : 36ee5: 48 89 ef mov %rbp,%rdi 0.00 : 36ee8: 44 88 44 24 10 mov %r8b,0x10(%rsp) 0.00 : 36eed: 4c 89 54 24 08 mov %r10,0x8(%rsp) 0.00 : 36ef2: e8 b9 9c 04 00 callq 80bb0 <__GI_strlen> 0.00 : 36ef7: 48 85 c0 test %rax,%rax 0.00 : 36efa: 48 89 c7 mov %rax,%rdi 0.00 : 36efd: 48 89 c3 mov %rax,%rbx 0.00 : 36f00: 44 0f b6 44 24 10 movzbl 0x10(%rsp),%r8d 0.00 : 36f06: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 0.00 : 36f0b: 74 27 je 36f34 <__GI_____strtol_l_internal+0x414> 0.00 : 36f0d: 44 0f b6 4d 00 movzbl 0x0(%rbp),%r9d 0.00 : 36f12: 31 d2 xor %edx,%edx 0.00 : 36f14: 45 38 ce cmp %r9b,%r14b 0.00 : 36f17: 74 12 je 36f2b <__GI_____strtol_l_internal+0x40b> 0.00 : 36f19: eb 2c jmp 36f47 <__GI_____strtol_l_internal+0x427> 0.00 : 36f1b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 36f20: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 36f25: 41 3a 04 17 cmp (%r15,%rdx,1),%al 0.00 : 36f29: 75 1c jne 36f47 <__GI_____strtol_l_internal+0x427> 0.00 : 36f2b: 48 83 c2 01 add $0x1,%rdx 0.00 : 36f2f: 48 39 d7 cmp %rdx,%rdi 0.00 : 36f32: 77 ec ja 36f20 <__GI_____strtol_l_internal+0x400> 0.00 : 36f34: 4d 89 fa mov %r15,%r10 0.00 : 36f37: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 36f3d: b8 08 00 00 00 mov $0x8,%eax 0.00 : 36f42: e9 ae fc ff ff jmpq 36bf5 <__GI_____strtol_l_internal+0xd5> 0.00 : 36f47: 45 84 f6 test %r14b,%r14b 0.00 : 36f4a: 44 89 f1 mov %r14d,%ecx 0.00 : 36f4d: 4c 89 fe mov %r15,%rsi 0.00 : 36f50: 74 34 je 36f86 <__GI_____strtol_l_internal+0x466> 0.00 : 36f52: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 36f55: 3c 09 cmp $0x9,%al 0.00 : 36f57: 76 22 jbe 36f7b <__GI_____strtol_l_internal+0x45b> 0.00 : 36f59: 31 d2 xor %edx,%edx 0.00 : 36f5b: 44 3a 0e cmp (%rsi),%r9b 0.00 : 36f5e: 74 12 je 36f72 <__GI_____strtol_l_internal+0x452> 0.00 : 36f60: eb 49 jmp 36fab <__GI_____strtol_l_internal+0x48b> 0.00 : 36f62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 36f68: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 36f6d: 3a 04 16 cmp (%rsi,%rdx,1),%al 0.00 : 36f70: 75 39 jne 36fab <__GI_____strtol_l_internal+0x48b> 0.00 : 36f72: 48 83 c2 01 add $0x1,%rdx 0.00 : 36f76: 48 39 d7 cmp %rdx,%rdi 0.00 : 36f79: 77 ed ja 36f68 <__GI_____strtol_l_internal+0x448> 0.00 : 36f7b: 48 83 c6 01 add $0x1,%rsi 0.00 : 36f7f: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 36f82: 84 c9 test %cl,%cl 0.00 : 36f84: 75 cc jne 36f52 <__GI_____strtol_l_internal+0x432> 0.00 : 36f86: 4c 89 d1 mov %r10,%rcx 0.00 : 36f89: 48 89 ea mov %rbp,%rdx 0.00 : 36f8c: 4c 89 ff mov %r15,%rdi 0.00 : 36f8f: e8 3c c8 00 00 callq 437d0 <__correctly_grouped_prefixmb> 0.00 : 36f94: 45 0f b6 07 movzbl (%r15),%r8d 0.00 : 36f98: 49 89 c2 mov %rax,%r10 0.00 : 36f9b: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 36fa1: b8 08 00 00 00 mov $0x8,%eax 0.00 : 36fa6: e9 4a fc ff ff jmpq 36bf5 <__GI_____strtol_l_internal+0xd5> 0.00 : 36fab: 0f b6 d1 movzbl %cl,%edx 0.00 : 36fae: 41 f6 44 54 01 04 testb $0x4,0x1(%r12,%rdx,2) 0.00 : 36fb4: 74 d0 je 36f86 <__GI_____strtol_l_internal+0x466> 0.00 : 36fb6: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 36fba: 83 3c 90 40 cmpl $0x40,(%rax,%rdx,4) 0.00 : 36fbe: 7e bb jle 36f7b <__GI_____strtol_l_internal+0x45b> 0.00 : 36fc0: eb c4 jmp 36f86 <__GI_____strtol_l_internal+0x466> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2957 9.04 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2957 8.04 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2959 7.44 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2953 5.65 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2953 5.58 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2952 2.99 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2951 2.72 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2953 2.52 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2920 2.33 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2856 2.19 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2859 2.13 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2908 1.99 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2911 1.99 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2927 1.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2951 1.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2951 1.53 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2913 1.53 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2927 1.33 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2951 1.13 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2918 1.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2918 0.93 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2911 0.80 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2856 0.66 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2834 0.53 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2845 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000556120 : : * Oid of the tuple is returned with 'tupleOid' separately. : */ : bool : NextCopyFrom(CopyState cstate, ExprContext *econtext, : Datum *values, bool *nulls, Oid *tupleOid) : { 0.13 : 556120: 55 push %rbp 0.07 : 556121: 48 89 e5 mov %rsp,%rbp 0.13 : 556124: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2834 0.66 : 556126: 41 56 push %r14 0.27 : 556128: 49 89 fe mov %rdi,%r14 0.00 : 55612b: 41 55 push %r13 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.07 : 55612d: 45 31 ed xor %r13d,%r13d 0.00 : 556130: 41 54 push %r12 0.07 : 556132: 45 31 e4 xor %r12d,%r12d 0.00 : 556135: 53 push %rbx 0.13 : 556136: 48 83 ec 78 sub $0x78,%rsp 0.00 : 55613a: 48 89 75 88 mov %rsi,-0x78(%rbp) 0.00 : 55613e: 48 89 55 80 mov %rdx,-0x80(%rbp) 0.27 : 556142: 48 89 8d 78 ff ff ff mov %rcx,-0x88(%rbp) 0.07 : 556149: 4c 89 85 70 ff ff ff mov %r8,-0x90(%rbp) : TupleDesc tupDesc; : Form_pg_attribute *attr; : AttrNumber num_phys_attrs, : attr_count, : num_defaults = cstate->num_defaults; 0.13 : 556150: 0f b7 87 08 01 00 00 movzwl 0x108(%rdi),%eax 0.00 : 556157: 66 89 45 9e mov %ax,-0x62(%rbp) : FmgrInfo *in_functions = cstate->in_functions; 0.13 : 55615b: 48 8b 97 48 01 00 00 mov 0x148(%rdi),%rdx 0.07 : 556162: 48 89 55 a0 mov %rdx,-0x60(%rbp) : Oid *typioparams = cstate->typioparams; 0.13 : 556166: 48 8b b7 50 01 00 00 mov 0x150(%rdi),%rsi 0.00 : 55616d: 48 89 75 a8 mov %rsi,-0x58(%rbp) : int i; : int nfields; : bool isnull; : bool file_has_oids = cstate->file_has_oids; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2845 0.53 : 556171: 0f b6 87 0a 01 00 00 movzbl 0x10a(%rdi),%eax 0.00 : 556178: 88 45 b7 mov %al,-0x49(%rbp) : int *defmap = cstate->defmap; 0.07 : 55617b: 48 8b 97 58 01 00 00 mov 0x158(%rdi),%rdx 0.00 : 556182: 48 89 55 b8 mov %rdx,-0x48(%rbp) : ExprState **defexprs = cstate->defexprs; 0.20 : 556186: 48 8b b7 60 01 00 00 mov 0x160(%rdi),%rsi 0.07 : 55618d: 48 89 75 c0 mov %rsi,-0x40(%rbp) : : tupDesc = RelationGetDescr(cstate->rel); 0.33 : 556191: 48 8b 47 28 mov 0x28(%rdi),%rax 0.00 : 556195: 48 8b 40 38 mov 0x38(%rax),%rax : attr = tupDesc->attrs; 0.07 : 556199: 48 8b 50 08 mov 0x8(%rax),%rdx 0.40 : 55619d: 48 89 55 90 mov %rdx,-0x70(%rbp) : num_phys_attrs = tupDesc->natts; 0.20 : 5561a1: 8b 10 mov (%rax),%edx : attr_count = list_length(cstate->attnumlist); 0.00 : 5561a3: 48 8b 47 38 mov 0x38(%rdi),%rax 0.00 : 5561a7: 48 85 c0 test %rax,%rax 0.00 : 5561aa: 74 09 je 5561b5 0.00 : 5561ac: 44 0f b7 68 04 movzwl 0x4(%rax),%r13d 0.33 : 5561b1: 45 0f bf e5 movswl %r13w,%r12d : nfields = file_has_oids ? (attr_count + 1) : attr_count; 0.00 : 5561b5: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 5561b9: 41 8d 44 24 01 lea 0x1(%r12),%eax 0.00 : 5561be: 45 89 e7 mov %r12d,%r15d : : /* Initialize all values for row to NULL */ : MemSet(values, 0, num_phys_attrs * sizeof(Datum)); 0.27 : 5561c1: 48 0f bf da movswq %dx,%rbx 0.00 : 5561c5: 48 8d 14 dd 00 00 00 lea 0x0(,%rbx,8),%rdx 0.00 : 5561cc: 00 : : tupDesc = RelationGetDescr(cstate->rel); : attr = tupDesc->attrs; : num_phys_attrs = tupDesc->natts; : attr_count = list_length(cstate->attnumlist); : nfields = file_has_oids ? (attr_count + 1) : attr_count; 0.00 : 5561cd: 44 0f 45 f8 cmovne %eax,%r15d : : /* Initialize all values for row to NULL */ : MemSet(values, 0, num_phys_attrs * sizeof(Datum)); 0.27 : 5561d1: f6 45 80 07 testb $0x7,-0x80(%rbp) 0.07 : 5561d5: 75 0d jne 5561e4 0.00 : 5561d7: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 5561de: 0f 86 0c 03 00 00 jbe 5564f0 0.00 : 5561e4: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 5561e8: 31 f6 xor %esi,%esi 0.00 : 5561ea: e8 31 32 f1 ff callq 469420 : MemSet(nulls, true, num_phys_attrs * sizeof(bool)); 0.13 : 5561ef: 48 8b bd 78 ff ff ff mov -0x88(%rbp),%rdi 0.07 : 5561f6: 48 89 da mov %rbx,%rdx 0.00 : 5561f9: be 01 00 00 00 mov $0x1,%esi 0.07 : 5561fe: e8 1d 32 f1 ff callq 469420 : : if (!cstate->binary) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2859 2.19 : 556203: 41 80 7e 49 00 cmpb $0x0,0x49(%r14) 0.07 : 556208: 0f 85 8a 01 00 00 jne 556398 : int fldct; : int fieldno; : char *string; : : /* read raw fields in the next line */ : if (!NextCopyFromRawFields(cstate, &field_strings, &fldct)) 0.00 : 55620e: 48 8d 55 d0 lea -0x30(%rbp),%rdx 0.00 : 556212: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.27 : 556216: 4c 89 f7 mov %r14,%rdi 0.00 : 556219: e8 d2 f6 ff ff callq 5558f0 0.13 : 55621e: 84 c0 test %al,%al 0.00 : 556220: 0f 84 98 01 00 00 je 5563be : return false; : : /* check for overflowing fields */ : if (nfields > 0 && fldct > nfields) 0.00 : 556226: 45 85 ff test %r15d,%r15d 0.00 : 556229: 7e 0b jle 556236 0.20 : 55622b: 44 3b 7d d0 cmp -0x30(%rbp),%r15d 0.20 : 55622f: 90 nop 0.00 : 556230: 0f 8c 5d 04 00 00 jl 556693 : errmsg("extra data after last expected column"))); : : fieldno = 0; : : /* Read the OID field if present */ : if (file_has_oids) 0.20 : 556236: 45 31 ff xor %r15d,%r15d 0.00 : 556239: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 55623d: 0f 1f 00 nopl (%rax) 0.00 : 556240: 0f 85 d2 02 00 00 jne 556518 : cstate->cur_attval = NULL; : } : } : : /* Loop to read the user attributes on the line. */ : foreach(cur, cstate->attnumlist) 0.27 : 556246: 49 8b 46 38 mov 0x38(%r14),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 55624a: 48 85 c0 test %rax,%rax 0.00 : 55624d: 0f 84 2e 02 00 00 je 556481 0.00 : 556253: 4c 8b 40 08 mov 0x8(%rax),%r8 0.07 : 556257: 4d 85 c0 test %r8,%r8 0.00 : 55625a: 0f 84 21 02 00 00 je 556481 : { : int attnum = lfirst_int(cur); : int m = attnum - 1; : : if (fieldno >= fldct) 0.13 : 556260: 44 3b 7d d0 cmp -0x30(%rbp),%r15d : : /* Loop to read the user attributes on the line. */ : foreach(cur, cstate->attnumlist) : { : int attnum = lfirst_int(cur); : int m = attnum - 1; 0.00 : 556264: 41 8b 00 mov (%r8),%eax /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2911 0.93 : 556267: 44 8d 60 ff lea -0x1(%rax),%r12d : : if (fieldno >= fldct) 0.20 : 55626b: 0f 8c ab 00 00 00 jl 55631c 0.00 : 556271: e9 c2 04 00 00 jmpq 556738 0.00 : 556276: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 55627d: 00 00 00 : */ : string = NULL; : } : } : : cstate->cur_attname = NameStr(attr[m]->attname); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2951 1.79 : 556280: 48 8b 45 90 mov -0x70(%rbp),%rax : cstate->cur_attval = string; : values[m] = InputFunctionCall(&in_functions[m], 0.00 : 556284: 48 8d 3c 5b lea (%rbx,%rbx,2),%rdi 0.00 : 556288: 48 c1 e7 04 shl $0x4,%rdi : */ : string = NULL; : } : } : : cstate->cur_attname = NameStr(attr[m]->attname); 1.33 : 55628c: 48 8d 14 d8 lea (%rax,%rbx,8),%rdx 1.79 : 556290: 48 8b 02 mov (%rdx),%rax : cstate->cur_attval = string; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2952 5.58 : 556293: 4d 89 ae e8 00 00 00 mov %r13,0xe8(%r14) : */ : string = NULL; : } : } : : cstate->cur_attname = NameStr(attr[m]->attname); 0.00 : 55629a: 48 83 c0 04 add $0x4,%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2951 2.99 : 55629e: 49 89 86 e0 00 00 00 mov %rax,0xe0(%r14) : cstate->cur_attval = string; : values[m] = InputFunctionCall(&in_functions[m], /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2953 2.72 : 5562a5: 48 8b 02 mov (%rdx),%rax 0.00 : 5562a8: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 5562ac: 48 03 7d a0 add -0x60(%rbp),%rdi 0.00 : 5562b0: 8b 48 58 mov 0x58(%rax),%ecx /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2953 7.44 : 5562b3: 8b 14 9e mov (%rsi,%rbx,4),%edx 0.00 : 5562b6: 4c 89 85 68 ff ff ff mov %r8,-0x98(%rbp) 0.00 : 5562bd: 4c 89 ee mov %r13,%rsi 0.00 : 5562c0: e8 cb 91 22 00 callq 77f490 5.65 : 5562c5: 48 8b 55 80 mov -0x80(%rbp),%rdx : string, : typioparams[m], : attr[m]->atttypmod); : if (string != NULL) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2957 9.04 : 5562c9: 4d 85 ed test %r13,%r13 : } : } : : cstate->cur_attname = NameStr(attr[m]->attname); : cstate->cur_attval = string; : values[m] = InputFunctionCall(&in_functions[m], 0.00 : 5562cc: 48 89 04 da mov %rax,(%rdx,%rbx,8) : string, : typioparams[m], : attr[m]->atttypmod); : if (string != NULL) 23.85 : 5562d0: 4c 8b 85 68 ff ff ff mov -0x98(%rbp),%r8 0.07 : 5562d7: 74 0b je 5562e4 : nulls[m] = false; 0.00 : 5562d9: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 5562e0: c6 04 1e 00 movb $0x0,(%rsi,%rbx,1) : cstate->cur_attname = NULL; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2959 8.04 : 5562e4: 49 c7 86 e0 00 00 00 movq $0x0,0xe0(%r14) 0.00 : 5562eb: 00 00 00 00 : cstate->cur_attval = NULL; 0.00 : 5562ef: 49 c7 86 e8 00 00 00 movq $0x0,0xe8(%r14) 0.00 : 5562f6: 00 00 00 00 : cstate->cur_attval = NULL; : } : } : : /* Loop to read the user attributes on the line. */ : foreach(cur, cstate->attnumlist) 0.00 : 5562fa: 4d 8b 40 08 mov 0x8(%r8),%r8 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2908 2.13 : 5562fe: 4d 85 c0 test %r8,%r8 0.00 : 556301: 0f 84 7a 01 00 00 je 556481 : if (fieldno >= fldct) : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("missing data for column \"%s\"", : NameStr(attr[m]->attname)))); : string = field_strings[fieldno++]; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2918 1.00 : 556307: 41 83 c7 01 add $0x1,%r15d : foreach(cur, cstate->attnumlist) : { : int attnum = lfirst_int(cur); : int m = attnum - 1; : : if (fieldno >= fldct) 0.00 : 55630b: 44 39 7d d0 cmp %r15d,-0x30(%rbp) : : /* Loop to read the user attributes on the line. */ : foreach(cur, cstate->attnumlist) : { : int attnum = lfirst_int(cur); : int m = attnum - 1; 0.00 : 55630f: 41 8b 00 mov (%r8),%eax /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2911 1.99 : 556312: 44 8d 60 ff lea -0x1(%rax),%r12d : : if (fieldno >= fldct) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2913 1.53 : 556316: 0f 8e 1c 04 00 00 jle 556738 : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("missing data for column \"%s\"", : NameStr(attr[m]->attname)))); : string = field_strings[fieldno++]; 0.00 : 55631c: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 556320: 49 63 d7 movslq %r15d,%rdx : : if (cstate->convert_select_flags && /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2920 2.52 : 556323: 49 63 dc movslq %r12d,%rbx : if (fieldno >= fldct) : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("missing data for column \"%s\"", : NameStr(attr[m]->attname)))); : string = field_strings[fieldno++]; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2918 1.13 : 556326: 4c 8b 2c d0 mov (%rax,%rdx,8),%r13 : : if (cstate->convert_select_flags && 0.20 : 55632a: 49 8b 86 c8 00 00 00 mov 0xc8(%r14),%rax 0.00 : 556331: 48 85 c0 test %rax,%rax 0.00 : 556334: 74 09 je 55633f 0.00 : 556336: 49 63 dc movslq %r12d,%rbx 0.00 : 556339: 80 3c 18 00 cmpb $0x0,(%rax,%rbx,1) 0.00 : 55633d: 74 bb je 5562fa : { : /* ignore input field, leaving column as NULL */ : continue; : } : : if (cstate->csv_mode) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2927 1.99 : 55633f: 41 80 7e 4c 00 cmpb $0x0,0x4c(%r14) 1.53 : 556344: 0f 84 36 ff ff ff je 556280 : { : if (string == NULL && 0.00 : 55634a: 4d 85 ed test %r13,%r13 0.00 : 55634d: 0f 1f 00 nopl (%rax) 0.00 : 556350: 0f 84 4a 02 00 00 je 5565a0 : * FORCE_NOT_NULL option is set and column is NULL - : * convert it to the NULL string. : */ : string = cstate->null_print; : } : else if (string != NULL && cstate->force_null_flags[m] 0.00 : 556356: 49 8b 86 b0 00 00 00 mov 0xb0(%r14),%rax 0.00 : 55635d: 80 3c 18 00 cmpb $0x0,(%rax,%rbx,1) 0.00 : 556361: 0f 84 19 ff ff ff je 556280 : && strcmp(string, cstate->null_print) == 0) 0.00 : 556367: 49 8b 76 50 mov 0x50(%r14),%rsi 0.00 : 55636b: 4c 89 ef mov %r13,%rdi 0.00 : 55636e: 4c 89 85 68 ff ff ff mov %r8,-0x98(%rbp) 0.00 : 556375: e8 b6 39 f1 ff callq 469d30 : * FORCE_NOT_NULL option is set and column is NULL - : * convert it to the NULL string. : */ : string = cstate->null_print; : } : else if (string != NULL && cstate->force_null_flags[m] 0.00 : 55637a: be 00 00 00 00 mov $0x0,%esi 0.00 : 55637f: 85 c0 test %eax,%eax 0.00 : 556381: 4c 8b 85 68 ff ff ff mov -0x98(%rbp),%r8 0.00 : 556388: 4c 0f 44 ee cmove %rsi,%r13 0.00 : 55638c: e9 ef fe ff ff jmpq 556280 0.00 : 556391: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* binary */ : int16 fld_count; : ListCell *cur; : : cstate->cur_lineno++; 0.00 : 556398: 41 83 86 d8 00 00 00 addl $0x1,0xd8(%r14) 0.00 : 55639f: 01 : static bool : CopyGetInt16(CopyState cstate, int16 *val) : { : uint16 buf; : : if (CopyGetData(cstate, &buf, sizeof(buf), sizeof(buf)) != sizeof(buf)) 0.00 : 5563a0: 4c 8d 7d d0 lea -0x30(%rbp),%r15 0.00 : 5563a4: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 5563a9: ba 02 00 00 00 mov $0x2,%edx 0.00 : 5563ae: 4c 89 f7 mov %r14,%rdi 0.00 : 5563b1: 4c 89 fe mov %r15,%rsi 0.00 : 5563b4: e8 37 e7 ff ff callq 554af0 0.00 : 5563b9: 83 f8 02 cmp $0x2,%eax 0.00 : 5563bc: 74 12 je 5563d0 : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, : &nulls[defmap[i]], NULL); : } : : return true; : } 0.00 : 5563be: 48 83 c4 78 add $0x78,%rsp : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5563c2: 31 c0 xor %eax,%eax : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, : &nulls[defmap[i]], NULL); : } : : return true; : } 0.00 : 5563c4: 5b pop %rbx 0.00 : 5563c5: 41 5c pop %r12 0.00 : 5563c7: 41 5d pop %r13 0.00 : 5563c9: 41 5e pop %r14 0.00 : 5563cb: 41 5f pop %r15 0.00 : 5563cd: c9 leaveq 0.00 : 5563ce: c3 retq 0.00 : 5563cf: 90 nop : if (CopyGetData(cstate, &buf, sizeof(buf), sizeof(buf)) != sizeof(buf)) : { : *val = 0; /* suppress compiler warning */ : return false; : } : *val = (int16) ntohs(buf); 0.00 : 5563d0: 0f b7 5d d0 movzwl -0x30(%rbp),%ebx 0.00 : 5563d4: 66 c1 cb 08 ror $0x8,%bx : { : /* EOF detected (end of file, or protocol-level EOF) */ : return false; : } : : if (fld_count == -1) 0.00 : 5563d8: 66 83 fb ff cmp $0xffff,%bx 0.00 : 5563dc: 0f 84 d8 01 00 00 je 5565ba : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("received copy data after EOF marker"))); : return false; : } : : if (fld_count != attr_count) 0.00 : 5563e2: 66 44 39 eb cmp %r13w,%bx 0.00 : 5563e6: 0f 85 90 03 00 00 jne 55677c : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("row field count is %d, expected %d", : (int) fld_count, attr_count))); : : if (file_has_oids) 0.00 : 5563ec: 80 7d b7 00 cmpb $0x0,-0x49(%rbp) 0.00 : 5563f0: 0f 85 1a 02 00 00 jne 556610 : if (cstate->oids && tupleOid != NULL) : *tupleOid = loaded_oid; : } : : i = 0; : foreach(cur, cstate->attnumlist) 0.00 : 5563f6: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 5563fa: 48 85 c0 test %rax,%rax 0.00 : 5563fd: 0f 1f 00 nopl (%rax) 0.00 : 556400: 74 7f je 556481 0.00 : 556402: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 556406: 4d 85 e4 test %r12,%r12 0.00 : 556409: 74 76 je 556481 0.00 : 55640b: 45 31 ed xor %r13d,%r13d 0.00 : 55640e: 66 90 xchg %ax,%ax : { : int attnum = lfirst_int(cur); : int m = attnum - 1; : : cstate->cur_attname = NameStr(attr[m]->attname); 0.00 : 556410: 41 8b 1c 24 mov (%r12),%ebx 0.00 : 556414: 48 8b 75 90 mov -0x70(%rbp),%rsi : i++; 0.00 : 556418: 41 83 c5 01 add $0x1,%r13d : values[m] = CopyReadBinaryAttribute(cstate, 0.00 : 55641c: 4c 89 f7 mov %r14,%rdi : foreach(cur, cstate->attnumlist) : { : int attnum = lfirst_int(cur); : int m = attnum - 1; : : cstate->cur_attname = NameStr(attr[m]->attname); 0.00 : 55641f: 83 eb 01 sub $0x1,%ebx 0.00 : 556422: 48 63 db movslq %ebx,%rbx 0.00 : 556425: 48 8d 14 de lea (%rsi,%rbx,8),%rdx 0.00 : 556429: 48 8b 02 mov (%rdx),%rax 0.00 : 55642c: 48 83 c0 04 add $0x4,%rax 0.00 : 556430: 49 89 86 e0 00 00 00 mov %rax,0xe0(%r14) : i++; : values[m] = CopyReadBinaryAttribute(cstate, 0.00 : 556437: 48 8b 02 mov (%rdx),%rax 0.00 : 55643a: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 55643e: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 556445: 44 8b 40 58 mov 0x58(%rax),%r8d 0.00 : 556449: 8b 0c 9a mov (%rdx,%rbx,4),%ecx 0.00 : 55644c: 48 8d 14 5b lea (%rbx,%rbx,2),%rdx 0.00 : 556450: 4c 8d 0c 1e lea (%rsi,%rbx,1),%r9 0.00 : 556454: 44 89 ee mov %r13d,%esi 0.00 : 556457: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 55645b: 48 03 55 a0 add -0x60(%rbp),%rdx 0.00 : 55645f: e8 8c e9 ff ff callq 554df0 0.00 : 556464: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 556468: 48 89 04 da mov %rax,(%rdx,%rbx,8) : i, : &in_functions[m], : typioparams[m], : attr[m]->atttypmod, : &nulls[m]); : cstate->cur_attname = NULL; 0.00 : 55646c: 49 c7 86 e0 00 00 00 movq $0x0,0xe0(%r14) 0.00 : 556473: 00 00 00 00 : if (cstate->oids && tupleOid != NULL) : *tupleOid = loaded_oid; : } : : i = 0; : foreach(cur, cstate->attnumlist) 0.00 : 556477: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 55647c: 4d 85 e4 test %r12,%r12 0.00 : 55647f: 75 8f jne 556410 : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.40 : 556481: 44 0f bf 75 9e movswl -0x62(%rbp),%r14d : if (cstate->oids && tupleOid != NULL) : *tupleOid = loaded_oid; : } : : i = 0; : foreach(cur, cstate->attnumlist) 0.07 : 556486: 45 31 ed xor %r13d,%r13d 0.00 : 556489: 45 31 e4 xor %r12d,%r12d : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.13 : 55648c: 45 85 f6 test %r14d,%r14d 0.00 : 55648f: 7e 42 jle 5564d3 0.00 : 556491: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * per-tuple memory context in it. : */ : Assert(econtext != NULL); : Assert(CurrentMemoryContext == econtext->ecxt_per_tuple_memory); : : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, 0.00 : 556498: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 55649c: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 5564a0: 31 c9 xor %ecx,%ecx : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5564a2: 41 83 c5 01 add $0x1,%r13d : * per-tuple memory context in it. : */ : Assert(econtext != NULL); : Assert(CurrentMemoryContext == econtext->ecxt_per_tuple_memory); : : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, 0.00 : 5564a6: 4a 63 1c 26 movslq (%rsi,%r12,1),%rbx 0.00 : 5564aa: 4a 8b 04 62 mov (%rdx,%r12,2),%rax : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5564ae: 49 83 c4 04 add $0x4,%r12 : * per-tuple memory context in it. : */ : Assert(econtext != NULL); : Assert(CurrentMemoryContext == econtext->ecxt_per_tuple_memory); : : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, 0.00 : 5564b2: 48 8b 95 78 ff ff ff mov -0x88(%rbp),%rdx 0.00 : 5564b9: 48 8b 75 88 mov -0x78(%rbp),%rsi 0.00 : 5564bd: 48 89 c7 mov %rax,%rdi 0.00 : 5564c0: 48 01 da add %rbx,%rdx 0.00 : 5564c3: ff 50 10 callq *0x10(%rax) 0.00 : 5564c6: 48 8b 75 80 mov -0x80(%rbp),%rsi : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5564ca: 45 39 ee cmp %r13d,%r14d : * per-tuple memory context in it. : */ : Assert(econtext != NULL); : Assert(CurrentMemoryContext == econtext->ecxt_per_tuple_memory); : : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, 0.00 : 5564cd: 48 89 04 de mov %rax,(%rsi,%rbx,8) : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5564d1: 7f c5 jg 556498 : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, : &nulls[defmap[i]], NULL); : } : : return true; : } 0.47 : 5564d3: 48 83 c4 78 add $0x78,%rsp : /* : * Now compute and insert any defaults available for the columns not : * provided by the input data. Anything not processed here or above will : * remain NULL. : */ : for (i = 0; i < num_defaults; i++) 0.00 : 5564d7: b8 01 00 00 00 mov $0x1,%eax : values[defmap[i]] = ExecEvalExpr(defexprs[i], econtext, : &nulls[defmap[i]], NULL); : } : : return true; : } 0.13 : 5564dc: 5b pop %rbx 0.13 : 5564dd: 41 5c pop %r12 0.00 : 5564df: 41 5d pop %r13 0.00 : 5564e1: 41 5e pop %r14 0.00 : 5564e3: 41 5f pop %r15 0.13 : 5564e5: c9 leaveq 0.07 : 5564e6: c3 retq 0.00 : 5564e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5564ee: 00 00 : num_phys_attrs = tupDesc->natts; : attr_count = list_length(cstate->attnumlist); : nfields = file_has_oids ? (attr_count + 1) : attr_count; : : /* Initialize all values for row to NULL */ : MemSet(values, 0, num_phys_attrs * sizeof(Datum)); 0.00 : 5564f0: 48 8b 45 80 mov -0x80(%rbp),%rax 0.27 : 5564f4: 48 01 c2 add %rax,%rdx 0.00 : 5564f7: 48 39 d0 cmp %rdx,%rax 0.00 : 5564fa: 0f 83 ef fc ff ff jae 5561ef 0.47 : 556500: 48 c7 00 00 00 00 00 movq $0x0,(%rax) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2856 2.33 : 556507: 48 83 c0 08 add $0x8,%rax 0.80 : 55650b: 48 39 c2 cmp %rax,%rdx 0.00 : 55650e: 77 f0 ja 556500 0.07 : 556510: e9 da fc ff ff jmpq 5561ef 0.00 : 556515: 0f 1f 00 nopl (%rax) : fieldno = 0; : : /* Read the OID field if present */ : if (file_has_oids) : { : if (fieldno >= fldct) 0.00 : 556518: 44 8b 45 d0 mov -0x30(%rbp),%r8d 0.00 : 55651c: 45 85 c0 test %r8d,%r8d 0.00 : 55651f: 0f 8e c6 02 00 00 jle 5567eb : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("missing data for OID column"))); : string = field_strings[fieldno++]; 0.00 : 556525: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 556529: 48 8b 10 mov (%rax),%rdx : : if (string == NULL) 0.00 : 55652c: 48 85 d2 test %rdx,%rdx 0.00 : 55652f: 0f 84 82 02 00 00 je 5567b7 : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("null OID in COPY data"))); : else if (cstate->oids && tupleOid != NULL) 0.00 : 556535: 41 80 7e 4a 00 cmpb $0x0,0x4a(%r14) 0.00 : 55653a: 74 4f je 55658b 0.00 : 55653c: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 556543: 00 0.00 : 556544: 74 45 je 55658b : { : cstate->cur_attname = "oid"; : cstate->cur_attval = string; : *tupleOid = DatumGetObjectId(DirectFunctionCall1(oidin, 0.00 : 556546: 31 f6 xor %esi,%esi : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("null OID in COPY data"))); : else if (cstate->oids && tupleOid != NULL) : { : cstate->cur_attname = "oid"; 0.00 : 556548: 49 c7 86 e0 00 00 00 movq $0x8e5fe8,0xe0(%r14) 0.00 : 55654f: e8 5f 8e 00 : cstate->cur_attval = string; 0.00 : 556553: 49 89 96 e8 00 00 00 mov %rdx,0xe8(%r14) : *tupleOid = DatumGetObjectId(DirectFunctionCall1(oidin, 0.00 : 55655a: bf b0 e2 70 00 mov $0x70e2b0,%edi 0.00 : 55655f: e8 dc 82 22 00 callq 77e840 0.00 : 556564: 48 8b b5 70 ff ff ff mov -0x90(%rbp),%rsi : CStringGetDatum(string))); : if (*tupleOid == InvalidOid) 0.00 : 55656b: 85 c0 test %eax,%eax : errmsg("null OID in COPY data"))); : else if (cstate->oids && tupleOid != NULL) : { : cstate->cur_attname = "oid"; : cstate->cur_attval = string; : *tupleOid = DatumGetObjectId(DirectFunctionCall1(oidin, 0.00 : 55656d: 89 06 mov %eax,(%rsi) : CStringGetDatum(string))); : if (*tupleOid == InvalidOid) 0.00 : 55656f: 0f 84 50 01 00 00 je 5566c5 : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("invalid OID in COPY data"))); : cstate->cur_attname = NULL; 0.00 : 556575: 49 c7 86 e0 00 00 00 movq $0x0,0xe0(%r14) 0.00 : 55657c: 00 00 00 00 : cstate->cur_attval = NULL; 0.00 : 556580: 49 c7 86 e8 00 00 00 movq $0x0,0xe8(%r14) 0.00 : 556587: 00 00 00 00 0.00 : 55658b: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 556591: e9 b0 fc ff ff jmpq 556246 0.00 : 556596: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 55659d: 00 00 00 : continue; : } : : if (cstate->csv_mode) : { : if (string == NULL && 0.00 : 5565a0: 49 8b 86 a0 00 00 00 mov 0xa0(%r14),%rax 0.00 : 5565a7: 80 3c 18 00 cmpb $0x0,(%rax,%rbx,1) 0.00 : 5565ab: 0f 84 cf fc ff ff je 556280 : { : /* : * FORCE_NOT_NULL option is set and column is NULL - : * convert it to the NULL string. : */ : string = cstate->null_print; 0.00 : 5565b1: 4d 8b 6e 50 mov 0x50(%r14),%r13 : continue; : } : : if (cstate->csv_mode) : { : if (string == NULL && 0.00 : 5565b5: e9 c6 fc ff ff jmpq 556280 : * error if there's data after the EOF marker, for consistency : * with the new-protocol case. : */ : char dummy; : : if (cstate->copy_dest != COPY_OLD_FE && 0.00 : 5565ba: 41 83 3e 01 cmpl $0x1,(%r14) 0.00 : 5565be: 0f 84 fa fd ff ff je 5563be 0.00 : 5565c4: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 5565c9: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5565ce: 4c 89 fe mov %r15,%rsi 0.00 : 5565d1: 4c 89 f7 mov %r14,%rdi 0.00 : 5565d4: e8 17 e5 ff ff callq 554af0 0.00 : 5565d9: 85 c0 test %eax,%eax 0.00 : 5565db: 0f 8e dd fd ff ff jle 5563be : CopyGetData(cstate, &dummy, 1, 1) > 0) : ereport(ERROR, 0.00 : 5565e1: 45 31 c0 xor %r8d,%r8d 0.00 : 5565e4: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 5565e9: ba b7 0b 00 00 mov $0xbb7,%edx 0.00 : 5565ee: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5565f3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5565f8: e8 c3 44 22 00 callq 77aac0 0.00 : 5565fd: 84 c0 test %al,%al 0.00 : 5565ff: 0f 85 14 02 00 00 jne 556819 0.00 : 556605: 0f 1f 00 nopl (%rax) : &cstate->oid_in_function, : cstate->oid_typioparam, : -1, : &isnull)); : if (isnull || loaded_oid == InvalidOid) : ereport(ERROR, 0.00 : 556608: e8 c3 2e f1 ff callq 4694d0 0.00 : 55660d: 0f 1f 00 nopl (%rax) : if (file_has_oids) : { : Oid loaded_oid; : : cstate->cur_attname = "oid"; : loaded_oid = 0.00 : 556610: 41 8b 8e 40 01 00 00 mov 0x140(%r14),%ecx 0.00 : 556617: 49 8d 96 10 01 00 00 lea 0x110(%r14),%rdx 0.00 : 55661e: 4c 8d 4d d7 lea -0x29(%rbp),%r9 0.00 : 556622: 31 f6 xor %esi,%esi : : if (file_has_oids) : { : Oid loaded_oid; : : cstate->cur_attname = "oid"; 0.00 : 556624: 49 c7 86 e0 00 00 00 movq $0x8e5fe8,0xe0(%r14) 0.00 : 55662b: e8 5f 8e 00 : loaded_oid = 0.00 : 55662f: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 556635: 4c 89 f7 mov %r14,%rdi 0.00 : 556638: e8 b3 e7 ff ff callq 554df0 : 0, : &cstate->oid_in_function, : cstate->oid_typioparam, : -1, : &isnull)); : if (isnull || loaded_oid == InvalidOid) 0.00 : 55663d: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 556641: 75 08 jne 55664b 0.00 : 556643: 85 c0 test %eax,%eax 0.00 : 556645: 0f 85 b5 00 00 00 jne 556700 : ereport(ERROR, 0.00 : 55664b: 45 31 c0 xor %r8d,%r8d 0.00 : 55664e: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 556653: ba d0 0b 00 00 mov $0xbd0,%edx 0.00 : 556658: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55665d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 556662: e8 59 44 22 00 callq 77aac0 0.00 : 556667: 84 c0 test %al,%al 0.00 : 556669: 74 9d je 556608 0.00 : 55666b: bf cf 89 87 00 mov $0x8789cf,%edi 0.00 : 556670: 31 c0 xor %eax,%eax 0.00 : 556672: e8 29 62 22 00 callq 77c8a0 0.00 : 556677: 89 c3 mov %eax,%ebx 0.00 : 556679: bf 82 00 02 04 mov $0x4020082,%edi 0.00 : 55667e: e8 cd 66 22 00 callq 77cd50 0.00 : 556683: 89 de mov %ebx,%esi 0.00 : 556685: 89 c7 mov %eax,%edi 0.00 : 556687: 31 c0 xor %eax,%eax 0.00 : 556689: e8 52 3f 22 00 callq 77a5e0 0.00 : 55668e: e9 75 ff ff ff jmpq 556608 : if (!NextCopyFromRawFields(cstate, &field_strings, &fldct)) : return false; : : /* check for overflowing fields */ : if (nfields > 0 && fldct > nfields) : ereport(ERROR, 0.00 : 556693: 45 31 c0 xor %r8d,%r8d 0.00 : 556696: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 55669b: ba 3b 0b 00 00 mov $0xb3b,%edx 0.00 : 5566a0: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5566a5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5566aa: e8 11 44 22 00 callq 77aac0 0.00 : 5566af: 84 c0 test %al,%al 0.00 : 5566b1: 0f 84 51 ff ff ff je 556608 0.00 : 5566b7: bf d8 8d 87 00 mov $0x878dd8,%edi 0.00 : 5566bc: 31 c0 xor %eax,%eax 0.00 : 5566be: e8 dd 61 22 00 callq 77c8a0 0.00 : 5566c3: eb b2 jmp 556677 : cstate->cur_attname = "oid"; : cstate->cur_attval = string; : *tupleOid = DatumGetObjectId(DirectFunctionCall1(oidin, : CStringGetDatum(string))); : if (*tupleOid == InvalidOid) : ereport(ERROR, 0.00 : 5566c5: 45 31 c0 xor %r8d,%r8d 0.00 : 5566c8: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 5566cd: ba 55 0b 00 00 mov $0xb55,%edx 0.00 : 5566d2: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5566d7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5566dc: e8 df 43 22 00 callq 77aac0 0.00 : 5566e1: 84 c0 test %al,%al 0.00 : 5566e3: 0f 84 1f ff ff ff je 556608 0.00 : 5566e9: bf cf 89 87 00 mov $0x8789cf,%edi 0.00 : 5566ee: 31 c0 xor %eax,%eax 0.00 : 5566f0: e8 ab 61 22 00 callq 77c8a0 0.00 : 5566f5: eb 80 jmp 556677 0.00 : 5566f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5566fe: 00 00 : if (isnull || loaded_oid == InvalidOid) : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("invalid OID in COPY data"))); : cstate->cur_attname = NULL; : if (cstate->oids && tupleOid != NULL) 0.00 : 556700: 41 80 7e 4a 00 cmpb $0x0,0x4a(%r14) : &isnull)); : if (isnull || loaded_oid == InvalidOid) : ereport(ERROR, : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("invalid OID in COPY data"))); : cstate->cur_attname = NULL; 0.00 : 556705: 49 c7 86 e0 00 00 00 movq $0x0,0xe0(%r14) 0.00 : 55670c: 00 00 00 00 : if (cstate->oids && tupleOid != NULL) 0.00 : 556710: 0f 84 e0 fc ff ff je 5563f6 0.00 : 556716: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 55671d: 00 0.00 : 55671e: 0f 84 d2 fc ff ff je 5563f6 : *tupleOid = loaded_oid; 0.00 : 556724: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 55672b: 89 02 mov %eax,(%rdx) 0.00 : 55672d: e9 c4 fc ff ff jmpq 5563f6 0.00 : 556732: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : int attnum = lfirst_int(cur); : int m = attnum - 1; : : if (fieldno >= fldct) : ereport(ERROR, 0.00 : 556738: 45 31 c0 xor %r8d,%r8d 0.00 : 55673b: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 556740: ba 65 0b 00 00 mov $0xb65,%edx 0.00 : 556745: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55674a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55674f: e8 6c 43 22 00 callq 77aac0 0.00 : 556754: 84 c0 test %al,%al 0.00 : 556756: 0f 84 ac fe ff ff je 556608 0.00 : 55675c: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 556760: 49 63 c4 movslq %r12d,%rax 0.00 : 556763: bf e8 89 87 00 mov $0x8789e8,%edi 0.00 : 556768: 48 8b 34 c2 mov (%rdx,%rax,8),%rsi 0.00 : 55676c: 31 c0 xor %eax,%eax 0.00 : 55676e: 48 83 c6 04 add $0x4,%rsi 0.00 : 556772: e8 29 61 22 00 callq 77c8a0 0.00 : 556777: e9 fb fe ff ff jmpq 556677 : errmsg("received copy data after EOF marker"))); : return false; : } : : if (fld_count != attr_count) : ereport(ERROR, 0.00 : 55677c: 45 31 c0 xor %r8d,%r8d 0.00 : 55677f: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 556784: ba bf 0b 00 00 mov $0xbbf,%edx 0.00 : 556789: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55678e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 556793: e8 28 43 22 00 callq 77aac0 0.00 : 556798: 84 c0 test %al,%al 0.00 : 55679a: 0f 84 68 fe ff ff je 556608 0.00 : 5567a0: 0f bf f3 movswl %bx,%esi 0.00 : 5567a3: 44 89 e2 mov %r12d,%edx 0.00 : 5567a6: bf 28 8e 87 00 mov $0x878e28,%edi 0.00 : 5567ab: 31 c0 xor %eax,%eax 0.00 : 5567ad: e8 ee 60 22 00 callq 77c8a0 0.00 : 5567b2: e9 c0 fe ff ff jmpq 556677 : (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), : errmsg("missing data for OID column"))); : string = field_strings[fieldno++]; : : if (string == NULL) : ereport(ERROR, 0.00 : 5567b7: 45 31 c0 xor %r8d,%r8d 0.00 : 5567ba: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 5567bf: 66 ba 4b 0b mov $0xb4b,%dx 0.00 : 5567c3: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5567c8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5567cd: e8 ee 42 22 00 callq 77aac0 0.00 : 5567d2: 84 c0 test %al,%al 0.00 : 5567d4: 0f 84 2e fe ff ff je 556608 0.00 : 5567da: bf b9 89 87 00 mov $0x8789b9,%edi 0.00 : 5567df: 31 c0 xor %eax,%eax 0.00 : 5567e1: e8 ba 60 22 00 callq 77c8a0 0.00 : 5567e6: e9 8c fe ff ff jmpq 556677 : : /* Read the OID field if present */ : if (file_has_oids) : { : if (fieldno >= fldct) : ereport(ERROR, 0.00 : 5567eb: 45 31 c0 xor %r8d,%r8d 0.00 : 5567ee: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5567f3: b9 db 9c 87 00 mov $0x879cdb,%ecx 0.00 : 5567f8: ba 45 0b 00 00 mov $0xb45,%edx 0.00 : 5567fd: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 556802: e8 b9 42 22 00 callq 77aac0 0.00 : 556807: 84 c0 test %al,%al 0.00 : 556809: bf 9d 89 87 00 mov $0x87899d,%edi 0.00 : 55680e: 0f 84 f4 fd ff ff je 556608 0.00 : 556814: e9 57 fe ff ff jmpq 556670 : */ : char dummy; : : if (cstate->copy_dest != COPY_OLD_FE && : CopyGetData(cstate, &dummy, 1, 1) > 0) : ereport(ERROR, 0.00 : 556819: bf 00 8e 87 00 mov $0x878e00,%edi 0.00 : 55681e: 31 c0 xor %eax,%eax 0.00 : 556820: e8 7b 60 22 00 callq 77c8a0 0.00 : 556825: e9 4d fe ff ff jmpq 556677 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:191 11.28 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 5.64 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 4.51 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:191 4.30 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:204 3.95 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:166 3.53 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:194 3.46 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 3.17 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:251 2.82 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:255 2.75 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 2.68 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:203 2.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:198 2.05 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 2.05 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:194 1.41 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:217 1.34 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:211 1.34 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:217 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:231 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:231 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:223 0.99 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:201 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:198 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:255 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:142 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:162 0.78 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 0.71 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:191 0.71 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:196 0.63 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 0.63 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:162 0.63 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:255 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:141 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:203 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:222 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:223 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046ff60 : : void : heap_fill_tuple(TupleDesc tupleDesc, : Datum *values, bool *isnull, : char *data, Size data_size, : uint16 *infomask, bits8 *bit) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:137 1.06 : 46ff60: 55 push %rbp : : #ifdef USE_ASSERT_CHECKING : char *start = data; : #endif : : if (bit != NULL) 0.28 : 46ff61: 45 31 d2 xor %r10d,%r10d : void : heap_fill_tuple(TupleDesc tupleDesc, : Datum *values, bool *isnull, : char *data, Size data_size, : uint16 *infomask, bits8 *bit) : { 0.14 : 46ff64: 48 89 e5 mov %rsp,%rbp 0.21 : 46ff67: 41 57 push %r15 : : #ifdef USE_ASSERT_CHECKING : char *start = data; : #endif : : if (bit != NULL) 0.21 : 46ff69: 45 31 ff xor %r15d,%r15d : void : heap_fill_tuple(TupleDesc tupleDesc, : Datum *values, bool *isnull, : char *data, Size data_size, : uint16 *infomask, bits8 *bit) : { 0.00 : 46ff6c: 41 56 push %r14 0.42 : 46ff6e: 41 55 push %r13 0.56 : 46ff70: 49 89 cd mov %rcx,%r13 0.35 : 46ff73: 41 54 push %r12 0.28 : 46ff75: 53 push %rbx 0.42 : 46ff76: 48 83 ec 38 sub $0x38,%rsp 0.14 : 46ff7a: 4c 8b 5d 10 mov 0x10(%rbp),%r11 0.07 : 46ff7e: 48 89 75 c8 mov %rsi,-0x38(%rbp) 0.49 : 46ff82: 48 89 55 c0 mov %rdx,-0x40(%rbp) : bits8 *bitP; : int bitmask; : int i; : int numberOfAttributes = tupleDesc->natts; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:141 0.56 : 46ff86: 8b 07 mov (%rdi),%eax : : #ifdef USE_ASSERT_CHECKING : char *start = data; : #endif : : if (bit != NULL) 0.00 : 46ff88: 4d 85 db test %r11,%r11 : uint16 *infomask, bits8 *bit) : { : bits8 *bitP; : int bitmask; : int i; : int numberOfAttributes = tupleDesc->natts; 0.00 : 46ff8b: 89 45 d4 mov %eax,-0x2c(%rbp) : Form_pg_attribute *att = tupleDesc->attrs; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:142 0.85 : 46ff8e: 48 8b 47 08 mov 0x8(%rdi),%rax : : #ifdef USE_ASSERT_CHECKING : char *start = data; : #endif : : if (bit != NULL) 0.07 : 46ff92: 74 0a je 46ff9e : { : bitP = &bit[-1]; 0.00 : 46ff94: 4d 8d 53 ff lea -0x1(%r11),%r10 0.00 : 46ff98: 41 bf 80 00 00 00 mov $0x80,%r15d : /* just to keep compiler quiet */ : bitP = NULL; : bitmask = 0; : } : : *infomask &= ~(HEAP_HASNULL | HEAP_HASVARWIDTH | HEAP_HASEXTERNAL); 0.00 : 46ff9e: 66 41 83 21 f8 andw $0xfff8,(%r9) : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:162 0.85 : 46ffa3: 8b 4d d4 mov -0x2c(%rbp),%ecx 0.07 : 46ffa6: 85 c9 test %ecx,%ecx 0.00 : 46ffa8: 0f 8e 5c 01 00 00 jle 47010a 0.28 : 46ffae: 49 89 c0 mov %rax,%r8 0.00 : 46ffb1: 45 31 f6 xor %r14d,%r14d 0.21 : 46ffb4: eb 21 jmp 46ffd7 0.00 : 46ffb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46ffbd: 00 00 00 : bitmask = 1; : } : : if (isnull[i]) : { : *infomask |= HEAP_HASNULL; 0.00 : 46ffc0: 66 41 83 09 01 orw $0x1,(%r9) : Assert(att[i]->attlen > 0); : data_length = att[i]->attlen; : memcpy(data, DatumGetPointer(values[i]), data_length); : } : : data += data_length; 0.00 : 46ffc5: 49 83 c6 01 add $0x1,%r14 0.00 : 46ffc9: 49 83 c0 08 add $0x8,%r8 : bitmask = 0; : } : : *infomask &= ~(HEAP_HASNULL | HEAP_HASVARWIDTH | HEAP_HASEXTERNAL); : : for (i = 0; i < numberOfAttributes; i++) 0.00 : 46ffcd: 44 39 75 d4 cmp %r14d,-0x2c(%rbp) 0.00 : 46ffd1: 0f 8e 33 01 00 00 jle 47010a : { : Size data_length; : : if (bit != NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:166 3.95 : 46ffd7: 4d 85 db test %r11,%r11 0.00 : 46ffda: 74 1e je 46fffa : { : if (bitmask != HIGHBIT) 0.00 : 46ffdc: 41 81 ff 80 00 00 00 cmp $0x80,%r15d 0.00 : 46ffe3: 0f 84 37 01 00 00 je 470120 : bitmask <<= 1; 0.00 : 46ffe9: 45 01 ff add %r15d,%r15d : bitP += 1; : *bitP = 0x0; : bitmask = 1; : } : : if (isnull[i]) 0.00 : 46ffec: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 46fff0: 42 80 3c 32 00 cmpb $0x0,(%rdx,%r14,1) 0.07 : 46fff5: 75 c9 jne 46ffc0 : { : *infomask |= HEAP_HASNULL; : continue; : } : : *bitP |= bitmask; 0.00 : 46fff7: 45 08 3a or %r15b,(%r10) : /* : * XXX we use the att_align macros on the pointer value itself, not on : * an offset. This is a bit of a hack. : */ : : if (att[i]->attbyval) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:191 4.51 : 46fffa: 49 8b 08 mov (%r8),%rcx 0.71 : 46fffd: 80 79 5c 00 cmpb $0x0,0x5c(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:191 16.22 : 470001: 74 7d je 470080 : { : /* pass-by-value */ : data = (char *) att_align_nominal(data, att[i]->attalign); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:194 3.53 : 470003: 0f b6 41 5e movzbl 0x5e(%rcx),%eax 0.07 : 470007: 3c 69 cmp $0x69,%al 0.00 : 470009: 0f 84 f1 01 00 00 je 470200 0.00 : 47000f: 3c 63 cmp $0x63,%al 0.00 : 470011: 74 10 je 470023 0.00 : 470013: 3c 64 cmp $0x64,%al 0.00 : 470015: 0f 84 55 02 00 00 je 470270 0.00 : 47001b: 49 83 c5 01 add $0x1,%r13 0.00 : 47001f: 49 83 e5 fe and $0xfffffffffffffffe,%r13 : store_att_byval(data, values[i], att[i]->attlen); 0.00 : 470023: 0f b7 41 4c movzwl 0x4c(%rcx),%eax 0.00 : 470027: 66 83 f8 02 cmp $0x2,%ax 0.00 : 47002b: 0f 84 e5 01 00 00 je 470216 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 0.63 : 470031: 0f 8f 01 01 00 00 jg 470138 0.00 : 470037: 66 83 e8 01 sub $0x1,%ax 0.00 : 47003b: 0f 84 07 02 00 00 je 470248 0.00 : 470041: ba 30 f7 7a 00 mov $0x7af730,%edx 0.00 : 470046: be c3 00 00 00 mov $0xc3,%esi 0.00 : 47004b: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 470050: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 470054: e8 c7 b3 30 00 callq 77b420 0.00 : 470059: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.00 : 47005d: be 2f f6 7a 00 mov $0x7af62f,%esi 0.00 : 470062: bf 14 00 00 00 mov $0x14,%edi 0.00 : 470067: 49 8b 00 mov (%r8),%rax 0.00 : 47006a: 0f bf 50 4c movswl 0x4c(%rax),%edx 0.00 : 47006e: 31 c0 xor %eax,%eax 0.00 : 470070: e8 bb b1 30 00 callq 77b230 0.00 : 470075: e8 56 94 ff ff callq 4694d0 0.00 : 47007a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : data_length = att[i]->attlen; : } : else if (att[i]->attlen == -1) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:198 2.19 : 470080: 0f b7 41 4c movzwl 0x4c(%rcx),%eax 0.92 : 470084: 66 83 f8 ff cmp $0xffff,%ax 0.00 : 470088: 0f 84 da 00 00 00 je 470168 : att[i]->attalign); : data_length = VARSIZE(val); : memcpy(data, val, data_length); : } : } : else if (att[i]->attlen == -2) 0.00 : 47008e: 66 83 f8 fe cmp $0xfffe,%ax 0.00 : 470092: 0f 84 e8 01 00 00 je 470280 : memcpy(data, DatumGetPointer(values[i]), data_length); : } : else : { : /* fixed-length pass-by-reference */ : data = (char *) att_align_nominal(data, att[i]->attalign); 0.00 : 470098: 0f b6 49 5e movzbl 0x5e(%rcx),%ecx 0.00 : 47009c: 80 f9 69 cmp $0x69,%cl 0.00 : 47009f: 0f 84 bb 01 00 00 je 470260 0.00 : 4700a5: 80 f9 63 cmp $0x63,%cl 0.00 : 4700a8: 74 14 je 4700be 0.00 : 4700aa: 80 f9 64 cmp $0x64,%cl 0.00 : 4700ad: 0f 1f 00 nopl (%rax) 0.00 : 4700b0: 0f 84 3a 02 00 00 je 4702f0 0.00 : 4700b6: 49 83 c5 01 add $0x1,%r13 0.00 : 4700ba: 49 83 e5 fe and $0xfffffffffffffffe,%r13 : Assert(att[i]->attlen > 0); : data_length = att[i]->attlen; : memcpy(data, DatumGetPointer(values[i]), data_length); 0.00 : 4700be: 48 8b 55 c8 mov -0x38(%rbp),%rdx : else : { : /* fixed-length pass-by-reference */ : data = (char *) att_align_nominal(data, att[i]->attalign); : Assert(att[i]->attlen > 0); : data_length = att[i]->attlen; 0.00 : 4700c2: 4c 0f bf e0 movswq %ax,%r12 : memcpy(data, DatumGetPointer(values[i]), data_length); 0.00 : 4700c6: 4c 89 ef mov %r13,%rdi 0.00 : 4700c9: 4a 8b 34 f2 mov (%rdx,%r14,8),%rsi 0.00 : 4700cd: 4c 89 e2 mov %r12,%rdx 0.00 : 4700d0: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 4700d4: 4c 89 4d b0 mov %r9,-0x50(%rbp) 0.00 : 4700d8: 4c 89 55 a8 mov %r10,-0x58(%rbp) 0.00 : 4700dc: 4c 89 5d a0 mov %r11,-0x60(%rbp) 0.00 : 4700e0: e8 0b 9b ff ff callq 469bf0 0.00 : 4700e5: 4c 8b 5d a0 mov -0x60(%rbp),%r11 0.00 : 4700e9: 4c 8b 55 a8 mov -0x58(%rbp),%r10 0.00 : 4700ed: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 4700f1: 4c 8b 45 b8 mov -0x48(%rbp),%r8 : } : : data += data_length; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:251 3.17 : 4700f5: 4d 01 e5 add %r12,%r13 0.07 : 4700f8: 49 83 c6 01 add $0x1,%r14 0.42 : 4700fc: 49 83 c0 08 add $0x8,%r8 : bitmask = 0; : } : : *infomask &= ~(HEAP_HASNULL | HEAP_HASVARWIDTH | HEAP_HASEXTERNAL); : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:162 0.63 : 470100: 44 39 75 d4 cmp %r14d,-0x2c(%rbp) 0.00 : 470104: 0f 8f cd fe ff ff jg 46ffd7 : : data += data_length; : } : : Assert((data - start) == data_size); : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:255 2.82 : 47010a: 48 83 c4 38 add $0x38,%rsp 0.14 : 47010e: 5b pop %rbx 0.35 : 47010f: 41 5c pop %r12 0.07 : 470111: 41 5d pop %r13 0.92 : 470113: 41 5e pop %r14 0.00 : 470115: 41 5f pop %r15 0.63 : 470117: c9 leaveq 0.21 : 470118: c3 retq 0.00 : 470119: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : if (bitmask != HIGHBIT) : bitmask <<= 1; : else : { : bitP += 1; 0.07 : 470120: 49 83 c2 01 add $0x1,%r10 : *bitP = 0x0; 0.00 : 470124: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 47012a: 41 c6 02 00 movb $0x0,(%r10) 0.00 : 47012e: e9 b9 fe ff ff jmpq 46ffec 0.00 : 470133: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : if (att[i]->attbyval) : { : /* pass-by-value */ : data = (char *) att_align_nominal(data, att[i]->attalign); : store_att_byval(data, values[i], att[i]->attlen); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 2.05 : 470138: 66 83 f8 04 cmp $0x4,%ax 0.00 : 47013c: 0f 84 ee 00 00 00 je 470230 0.00 : 470142: 66 83 f8 08 cmp $0x8,%ax 0.00 : 470146: 0f 85 f5 fe ff ff jne 470041 0.00 : 47014c: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 470150: 4a 8b 04 f2 mov (%rdx,%r14,8),%rax 0.00 : 470154: 49 89 45 00 mov %rax,0x0(%r13) : data_length = att[i]->attlen; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:196 0.71 : 470158: 49 8b 00 mov (%r8),%rax 0.07 : 47015b: 4c 0f bf 60 4c movswq 0x4c(%rax),%r12 0.49 : 470160: eb 93 jmp 4700f5 0.00 : 470162: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else if (att[i]->attlen == -1) : { : /* varlena */ : Pointer val = DatumGetPointer(values[i]); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:201 0.99 : 470168: 48 8b 45 c8 mov -0x38(%rbp),%rax : : *infomask |= HEAP_HASVARWIDTH; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:203 0.56 : 47016c: 41 0f b7 11 movzwl (%r9),%edx : data_length = att[i]->attlen; : } : else if (att[i]->attlen == -1) : { : /* varlena */ : Pointer val = DatumGetPointer(values[i]); 0.00 : 470170: 4a 8b 34 f0 mov (%rax,%r14,8),%rsi : : *infomask |= HEAP_HASVARWIDTH; 2.68 : 470174: 89 d0 mov %edx,%eax 0.28 : 470176: 83 c8 02 or $0x2,%eax 0.00 : 470179: 66 41 89 01 mov %ax,(%r9) : if (VARATT_IS_EXTERNAL(val)) 0.00 : 47017d: 0f b6 06 movzbl (%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:204 4.30 : 470180: 3c 01 cmp $0x1,%al 0.00 : 470182: 0f 84 38 01 00 00 je 4702c0 : *infomask |= HEAP_HASEXTERNAL; : /* no alignment, since it's short by definition */ : data_length = VARSIZE_EXTERNAL(val); : memcpy(data, val, data_length); : } : else if (VARATT_IS_SHORT(val)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:211 1.34 : 470188: 0f b6 d0 movzbl %al,%edx 0.00 : 47018b: f6 c2 01 test $0x1,%dl 0.00 : 47018e: 0f 85 6c 01 00 00 jne 470300 : { : /* no alignment for short varlenas */ : data_length = VARSIZE_SHORT(val); : memcpy(data, val, data_length); : } : else if (VARLENA_ATT_IS_PACKABLE(att[i]) && 0.49 : 470194: 49 8b 00 mov (%r8),%rax 0.00 : 470197: 80 78 5d 70 cmpb $0x70,0x5d(%rax) 0.14 : 47019b: 74 09 je 4701a6 0.14 : 47019d: 83 e2 03 and $0x3,%edx 0.00 : 4701a0: 0f 84 6a 01 00 00 je 470310 0.00 : 4701a6: 8b 0e mov (%rsi),%ecx 0.00 : 4701a8: c1 e9 02 shr $0x2,%ecx : memcpy(data + 1, VARDATA(val), data_length - 1); : } : else : { : /* full 4-byte header varlena */ : data = (char *) att_align_nominal(data, 0.00 : 4701ab: 0f b6 40 5e movzbl 0x5e(%rax),%eax 0.00 : 4701af: 3c 69 cmp $0x69,%al 0.00 : 4701b1: 0f 84 99 01 00 00 je 470350 0.00 : 4701b7: 3c 63 cmp $0x63,%al 0.00 : 4701b9: 74 10 je 4701cb 0.00 : 4701bb: 3c 64 cmp $0x64,%al 0.00 : 4701bd: 0f 84 9a 01 00 00 je 47035d 0.00 : 4701c3: 49 83 c5 01 add $0x1,%r13 0.00 : 4701c7: 49 83 e5 fe and $0xfffffffffffffffe,%r13 : att[i]->attalign); : data_length = VARSIZE(val); 0.00 : 4701cb: 41 89 cc mov %ecx,%r12d : memcpy(data, val, data_length); 0.00 : 4701ce: 4c 89 e2 mov %r12,%rdx 0.00 : 4701d1: 4c 89 ef mov %r13,%rdi 0.00 : 4701d4: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 4701d8: 4c 89 4d b0 mov %r9,-0x50(%rbp) 0.00 : 4701dc: 4c 89 55 a8 mov %r10,-0x58(%rbp) 0.00 : 4701e0: 4c 89 5d a0 mov %r11,-0x60(%rbp) 0.00 : 4701e4: e8 07 9a ff ff callq 469bf0 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:231 1.27 : 4701e9: 4c 8b 45 b8 mov -0x48(%rbp),%r8 0.28 : 4701ed: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.35 : 4701f1: 4c 8b 55 a8 mov -0x58(%rbp),%r10 0.35 : 4701f5: 4c 8b 5d a0 mov -0x60(%rbp),%r11 1.27 : 4701f9: e9 f7 fe ff ff jmpq 4700f5 0.00 : 4701fe: 66 90 xchg %ax,%ax : : if (att[i]->attbyval) : { : /* pass-by-value */ : data = (char *) att_align_nominal(data, att[i]->attalign); : store_att_byval(data, values[i], att[i]->attlen); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 0.78 : 470200: 0f b7 41 4c movzwl 0x4c(%rcx),%eax : */ : : if (att[i]->attbyval) : { : /* pass-by-value */ : data = (char *) att_align_nominal(data, att[i]->attalign); 0.21 : 470204: 49 83 c5 03 add $0x3,%r13 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:194 2.05 : 470208: 49 83 e5 fc and $0xfffffffffffffffc,%r13 : store_att_byval(data, values[i], att[i]->attlen); 0.07 : 47020c: 66 83 f8 02 cmp $0x2,%ax 0.00 : 470210: 0f 85 1b fe ff ff jne 470031 0.00 : 470216: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 47021a: 4a 8b 04 f2 mov (%rdx,%r14,8),%rax 0.00 : 47021e: 66 41 89 45 00 mov %ax,0x0(%r13) 0.00 : 470223: e9 30 ff ff ff jmpq 470158 0.00 : 470228: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 47022f: 00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 3.46 : 470230: 48 8b 55 c8 mov -0x38(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 5.64 : 470234: 4a 8b 04 f2 mov (%rdx,%r14,8),%rax 11.28 : 470238: 41 89 45 00 mov %eax,0x0(%r13) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:195 2.75 : 47023c: e9 17 ff ff ff jmpq 470158 0.00 : 470241: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 470248: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 47024c: 4a 8b 04 f2 mov (%rdx,%r14,8),%rax 0.00 : 470250: 41 88 45 00 mov %al,0x0(%r13) 0.00 : 470254: e9 ff fe ff ff jmpq 470158 0.00 : 470259: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : memcpy(data, DatumGetPointer(values[i]), data_length); : } : else : { : /* fixed-length pass-by-reference */ : data = (char *) att_align_nominal(data, att[i]->attalign); 0.00 : 470260: 49 83 c5 03 add $0x3,%r13 0.00 : 470264: 49 83 e5 fc and $0xfffffffffffffffc,%r13 0.00 : 470268: e9 51 fe ff ff jmpq 4700be 0.00 : 47026d: 0f 1f 00 nopl (%rax) : */ : : if (att[i]->attbyval) : { : /* pass-by-value */ : data = (char *) att_align_nominal(data, att[i]->attalign); 0.00 : 470270: 49 83 c5 07 add $0x7,%r13 0.00 : 470274: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 0.00 : 470278: e9 a6 fd ff ff jmpq 470023 0.00 : 47027d: 0f 1f 00 nopl (%rax) : } : } : else if (att[i]->attlen == -2) : { : /* cstring ... never needs alignment */ : *infomask |= HEAP_HASVARWIDTH; 0.00 : 470280: 66 41 83 09 02 orw $0x2,(%r9) : Assert(att[i]->attalign == 'c'); : data_length = strlen(DatumGetCString(values[i])) + 1; 0.00 : 470285: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 470289: 4a 8b 1c f0 mov (%rax,%r14,8),%rbx 0.00 : 47028d: 4c 89 45 b8 mov %r8,-0x48(%rbp) 0.00 : 470291: 4c 89 4d b0 mov %r9,-0x50(%rbp) 0.00 : 470295: 4c 89 55 a8 mov %r10,-0x58(%rbp) 0.00 : 470299: 4c 89 5d a0 mov %r11,-0x60(%rbp) 0.00 : 47029d: 48 89 df mov %rbx,%rdi 0.00 : 4702a0: e8 ab 95 ff ff callq 469850 0.00 : 4702a5: 4c 8d 60 01 lea 0x1(%rax),%r12 : memcpy(data, DatumGetPointer(values[i]), data_length); 0.00 : 4702a9: 48 89 de mov %rbx,%rsi 0.00 : 4702ac: 4c 89 ef mov %r13,%rdi 0.00 : 4702af: 4c 89 e2 mov %r12,%rdx 0.00 : 4702b2: e9 2d ff ff ff jmpq 4701e4 0.00 : 4702b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4702be: 00 00 : Pointer val = DatumGetPointer(values[i]); : : *infomask |= HEAP_HASVARWIDTH; : if (VARATT_IS_EXTERNAL(val)) : { : *infomask |= HEAP_HASEXTERNAL; 0.00 : 4702c0: 83 ca 06 or $0x6,%edx : /* no alignment, since it's short by definition */ : data_length = VARSIZE_EXTERNAL(val); 0.00 : 4702c3: 41 bc 0a 00 00 00 mov $0xa,%r12d : Pointer val = DatumGetPointer(values[i]); : : *infomask |= HEAP_HASVARWIDTH; : if (VARATT_IS_EXTERNAL(val)) : { : *infomask |= HEAP_HASEXTERNAL; 0.00 : 4702c9: 66 41 89 11 mov %dx,(%r9) : /* no alignment, since it's short by definition */ : data_length = VARSIZE_EXTERNAL(val); 0.00 : 4702cd: 0f b6 46 01 movzbl 0x1(%rsi),%eax 0.00 : 4702d1: 3c 01 cmp $0x1,%al 0.00 : 4702d3: 0f 84 f5 fe ff ff je 4701ce 0.00 : 4702d9: 3c 12 cmp $0x12,%al 0.00 : 4702db: 41 bc 03 00 00 00 mov $0x3,%r12d 0.00 : 4702e1: ba 12 00 00 00 mov $0x12,%edx 0.00 : 4702e6: 4c 0f 44 e2 cmove %rdx,%r12 0.00 : 4702ea: e9 df fe ff ff jmpq 4701ce 0.00 : 4702ef: 90 nop : memcpy(data, DatumGetPointer(values[i]), data_length); : } : else : { : /* fixed-length pass-by-reference */ : data = (char *) att_align_nominal(data, att[i]->attalign); 0.00 : 4702f0: 49 83 c5 07 add $0x7,%r13 0.00 : 4702f4: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 0.00 : 4702f8: e9 c1 fd ff ff jmpq 4700be 0.00 : 4702fd: 0f 1f 00 nopl (%rax) : memcpy(data, val, data_length); : } : else if (VARATT_IS_SHORT(val)) : { : /* no alignment for short varlenas */ : data_length = VARSIZE_SHORT(val); 0.00 : 470300: d0 e8 shr %al 0.00 : 470302: 44 0f b6 e0 movzbl %al,%r12d 0.00 : 470306: e9 c3 fe ff ff jmpq 4701ce 0.00 : 47030b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : memcpy(data, val, data_length); : } : else if (VARLENA_ATT_IS_PACKABLE(att[i]) && /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:217 1.41 : 470310: 8b 0e mov (%rsi),%ecx 0.00 : 470312: c1 e9 02 shr $0x2,%ecx 0.00 : 470315: 8d 51 fc lea -0x4(%rcx),%edx 0.07 : 470318: 4c 8d 62 01 lea 0x1(%rdx),%r12 1.34 : 47031c: 49 83 fc 7f cmp $0x7f,%r12 0.00 : 470320: 0f 87 85 fe ff ff ja 4701ab : VARATT_CAN_MAKE_SHORT(val)) : { : /* convert to short varlena -- no alignment */ : data_length = VARATT_CONVERTED_SHORT_SIZE(val); : SET_VARSIZE_SHORT(data, data_length); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:222 0.56 : 470326: 43 8d 04 24 lea (%r12,%r12,1),%eax : memcpy(data + 1, VARDATA(val), data_length - 1); 0.00 : 47032a: 49 8d 7d 01 lea 0x1(%r13),%rdi 0.00 : 47032e: 48 83 c6 04 add $0x4,%rsi /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:223 0.56 : 470332: 4c 89 45 b8 mov %r8,-0x48(%rbp) 1.06 : 470336: 4c 89 4d b0 mov %r9,-0x50(%rbp) : else if (VARLENA_ATT_IS_PACKABLE(att[i]) && : VARATT_CAN_MAKE_SHORT(val)) : { : /* convert to short varlena -- no alignment */ : data_length = VARATT_CONVERTED_SHORT_SIZE(val); : SET_VARSIZE_SHORT(data, data_length); 0.28 : 47033a: 83 c8 01 or $0x1,%eax : memcpy(data + 1, VARDATA(val), data_length - 1); 0.00 : 47033d: 4c 89 55 a8 mov %r10,-0x58(%rbp) 0.35 : 470341: 4c 89 5d a0 mov %r11,-0x60(%rbp) : else if (VARLENA_ATT_IS_PACKABLE(att[i]) && : VARATT_CAN_MAKE_SHORT(val)) : { : /* convert to short varlena -- no alignment */ : data_length = VARATT_CONVERTED_SHORT_SIZE(val); : SET_VARSIZE_SHORT(data, data_length); 0.35 : 470345: 41 88 45 00 mov %al,0x0(%r13) 0.07 : 470349: e9 96 fe ff ff jmpq 4701e4 0.00 : 47034e: 66 90 xchg %ax,%ax : memcpy(data + 1, VARDATA(val), data_length - 1); : } : else : { : /* full 4-byte header varlena */ : data = (char *) att_align_nominal(data, 0.00 : 470350: 49 83 c5 03 add $0x3,%r13 0.00 : 470354: 49 83 e5 fc and $0xfffffffffffffffc,%r13 0.07 : 470358: e9 6e fe ff ff jmpq 4701cb 0.00 : 47035d: 49 83 c5 07 add $0x7,%r13 0.00 : 470361: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 0.00 : 470365: e9 61 fe ff ff jmpq 4701cb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2449 6.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2554 6.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2582 5.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2501 5.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2501 5.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2581 5.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2554 4.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2450 3.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2449 3.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2455 3.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2455 3.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2609 2.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2449 2.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2480 2.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2610 1.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2452 1.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2490 1.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 1.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2588 1.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2484 1.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 1.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2609 1.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 1.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2476 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2448 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2613 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2588 0.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2613 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2575 0.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2613 0.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2613 0.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2613 0.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2575 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2452 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2587 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cd6a0 : : * Return 0 if okay, a DTERR code if not. : */ : static int : DecodeNumber(int flen, char *str, bool haveTextMonth, int fmask, : int *tmask, struct pg_tm * tm, fsec_t *fsec, bool *is2digits) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2441 1.28 : 6cd6a0: 55 push %rbp 0.14 : 6cd6a1: 48 89 e5 mov %rsp,%rbp 0.78 : 6cd6a4: 48 89 5d d8 mov %rbx,-0x28(%rbp) 1.63 : 6cd6a8: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.57 : 6cd6ac: 49 89 f4 mov %rsi,%r12 0.07 : 6cd6af: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.92 : 6cd6b3: 4c 89 75 f0 mov %r14,-0x10(%rbp) 1.14 : 6cd6b7: 4d 89 c5 mov %r8,%r13 0.07 : 6cd6ba: 4c 89 7d f8 mov %r15,-0x8(%rbp) 1.07 : 6cd6be: 48 83 ec 50 sub $0x50,%rsp 0.36 : 6cd6c2: 89 7d c4 mov %edi,-0x3c(%rbp) 0.57 : 6cd6c5: 89 4d bc mov %ecx,-0x44(%rbp) 0.92 : 6cd6c8: 88 55 c3 mov %dl,-0x3d(%rbp) 1.21 : 6cd6cb: 4d 89 cf mov %r9,%r15 : int val; : char *cp; : int dterr; : : *tmask = 0; 0.14 : 6cd6ce: 41 c7 00 00 00 00 00 movl $0x0,(%r8) : : errno = 0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2448 0.92 : 6cd6d5: e8 e6 c5 d9 ff callq 469cc0 <__errno_location@plt> : val = strtoi(str, &cp, 10); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2449 2.98 : 6cd6da: 48 8d 75 d0 lea -0x30(%rbp),%rsi : char *cp; : int dterr; : : *tmask = 0; : : errno = 0; 0.00 : 6cd6de: 48 89 c3 mov %rax,%rbx : val = strtoi(str, &cp, 10); 0.00 : 6cd6e1: ba 0a 00 00 00 mov $0xa,%edx : char *cp; : int dterr; : : *tmask = 0; : : errno = 0; 0.00 : 6cd6e6: c7 00 00 00 00 00 movl $0x0,(%rax) : val = strtoi(str, &cp, 10); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2449 8.38 : 6cd6ec: 4c 89 e7 mov %r12,%rdi 0.00 : 6cd6ef: e8 dc f0 ff ff callq 6cc7d0 : if (errno == ERANGE) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2450 4.05 : 6cd6f4: 83 3b 22 cmpl $0x22,(%rbx) : int dterr; : : *tmask = 0; : : errno = 0; : val = strtoi(str, &cp, 10); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2449 3.55 : 6cd6f7: 41 89 c6 mov %eax,%r14d : if (errno == ERANGE) 0.00 : 6cd6fa: ba fe ff ff ff mov $0xfffffffe,%edx 0.00 : 6cd6ff: 75 1f jne 6cd720 : */ : if (*tmask == DTK_M(YEAR)) : *is2digits = (flen <= 2); : : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2613 0.71 : 6cd701: 89 d0 mov %edx,%eax 0.00 : 6cd703: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.71 : 6cd707: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 6cd70b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.85 : 6cd70f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 6cd713: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.71 : 6cd717: c9 leaveq 0.92 : 6cd718: c3 retq 0.00 : 6cd719: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : errno = 0; : val = strtoi(str, &cp, 10); : if (errno == ERANGE) : return DTERR_FIELD_OVERFLOW; : if (cp == str) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2452 1.85 : 6cd720: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.57 : 6cd724: 4c 39 e7 cmp %r12,%rdi 0.00 : 6cd727: 0f 84 cb 00 00 00 je 6cd7f8 : return DTERR_BAD_FORMAT; : : if (*cp == '.') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2455 3.34 : 6cd72d: 0f b6 07 movzbl (%rdi),%eax 3.41 : 6cd730: 3c 2e cmp $0x2e,%al 0.00 : 6cd732: 0f 85 b4 00 00 00 jne 6cd7ec : { : /* : * More than two digits before decimal point? Then could be a date or : * a run-together time: 2001.360 20011225 040506.789 : */ : if (cp - str > 2) 0.00 : 6cd738: 48 89 f8 mov %rdi,%rax 0.00 : 6cd73b: 4c 29 e0 sub %r12,%rax 0.00 : 6cd73e: 48 83 f8 02 cmp $0x2,%rax 0.00 : 6cd742: 7f 34 jg 6cd778 : if (dterr < 0) : return dterr; : return 0; : } : : dterr = ParseFractionalSecond(cp, fsec); 0.00 : 6cd744: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 6cd748: e8 03 f0 ff ff callq 6cc750 : if (dterr) 0.00 : 6cd74d: 85 c0 test %eax,%eax : if (dterr < 0) : return dterr; : return 0; : } : : dterr = ParseFractionalSecond(cp, fsec); 0.00 : 6cd74f: 89 c2 mov %eax,%edx : if (dterr) 0.00 : 6cd751: 75 ae jne 6cd701 : } : else if (*cp != '\0') : return DTERR_BAD_FORMAT; : : /* Special case for day of year */ : if (flen == 3 && (fmask & DTK_DATE_M) == DTK_M(YEAR) && val >= 1 && /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2480 2.49 : 6cd753: 83 7d c4 03 cmpl $0x3,-0x3c(%rbp) 0.00 : 6cd757: 0f 85 3c 01 00 00 jne 6cd899 0.00 : 6cd75d: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 6cd760: 83 e0 0e and $0xe,%eax 0.00 : 6cd763: 83 f8 04 cmp $0x4,%eax 0.00 : 6cd766: 0f 84 01 01 00 00 je 6cd86d : /* tm_mon and tm_mday can't actually be set yet ... */ : return 0; : } : : /* Switch based on what we have so far */ : switch (fmask & DTK_DATE_M) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2490 1.70 : 6cd76c: 89 c0 mov %eax,%eax 0.00 : 6cd76e: ff 24 c5 e0 9f 8b 00 jmpq *0x8b9fe0(,%rax,8) 0.00 : 6cd775: 0f 1f 00 nopl (%rax) : * More than two digits before decimal point? Then could be a date or : * a run-together time: 2001.360 20011225 040506.789 : */ : if (cp - str > 2) : { : dterr = DecodeNumberField(flen, str, 0.00 : 6cd778: 83 4d bc 0e orl $0xe,-0x44(%rbp) : tm->tm_year = val; : break; : : case (DTK_M(YEAR) | DTK_M(MONTH) | DTK_M(DAY)): : /* we have all the date, so it must be a time field */ : dterr = DecodeNumberField(flen, str, fmask, 0.00 : 6cd77c: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 6cd780: 8b 55 bc mov -0x44(%rbp),%edx 0.00 : 6cd783: 4d 89 f8 mov %r15,%r8 0.00 : 6cd786: 4c 8b 4d 10 mov 0x10(%rbp),%r9 0.00 : 6cd78a: 8b 7d c4 mov -0x3c(%rbp),%edi 0.00 : 6cd78d: 4c 89 e9 mov %r13,%rcx 0.00 : 6cd790: 4c 89 e6 mov %r12,%rsi 0.00 : 6cd793: 48 89 04 24 mov %rax,(%rsp) 0.00 : 6cd797: e8 14 fd ff ff callq 6cd4b0 0.00 : 6cd79c: 31 d2 xor %edx,%edx 0.00 : 6cd79e: 85 c0 test %eax,%eax 0.00 : 6cd7a0: 0f 4e d0 cmovle %eax,%edx 0.00 : 6cd7a3: e9 59 ff ff ff jmpq 6cd701 : * is. There used to be lots of heuristics here, but the : * consensus now is to be paranoid. It *must* be either : * YYYY-MM-DD (with a more-than-two-digit year field), or the : * field order defined by DateOrder. : */ : if (flen >= 3 || DateOrder == DATEORDER_YMD) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2501 5.82 : 6cd7a8: 83 7d c4 02 cmpl $0x2,-0x3c(%rbp) 5.82 : 6cd7ac: 7f 54 jg 6cd802 0.00 : 6cd7ae: 8b 05 5c b3 49 00 mov 0x49b35c(%rip),%eax # b68b10 0.00 : 6cd7b4: 85 c0 test %eax,%eax 0.00 : 6cd7b6: 74 4a je 6cd802 : { : *tmask = DTK_M(YEAR); : tm->tm_year = val; : } : else if (DateOrder == DATEORDER_DMY) 0.00 : 6cd7b8: 83 e8 01 sub $0x1,%eax 0.00 : 6cd7bb: 0f 84 9b 00 00 00 je 6cd85c : } : break; : : case (DTK_M(DAY)): : /* Must be at second field of DD-MM-YY */ : *tmask = DTK_M(MONTH); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2581 5.82 : 6cd7c1: 41 c7 45 00 02 00 00 movl $0x2,0x0(%r13) 0.00 : 6cd7c8: 00 : tm->tm_mon = val; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2582 6.82 : 6cd7c9: 45 89 77 10 mov %r14d,0x10(%r15) : : /* : * When processing a year field, mark it for adjustment if it's only one : * or two digits. : */ : if (*tmask == DTK_M(YEAR)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2609 1.28 : 6cd7cd: 31 d2 xor %edx,%edx 0.43 : 6cd7cf: 41 83 7d 00 04 cmpl $0x4,0x0(%r13) 3.05 : 6cd7d4: 0f 85 27 ff ff ff jne 6cd701 : *is2digits = (flen <= 2); 0.43 : 6cd7da: 83 7d c4 02 cmpl $0x2,-0x3c(%rbp) 0.28 : 6cd7de: 48 8b 45 18 mov 0x18(%rbp),%rax 0.07 : 6cd7e2: 0f 9e 00 setle (%rax) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2610 2.27 : 6cd7e5: 31 d2 xor %edx,%edx 0.00 : 6cd7e7: e9 15 ff ff ff jmpq 6cd701 : : dterr = ParseFractionalSecond(cp, fsec); : if (dterr) : return dterr; : } : else if (*cp != '\0') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2476 1.07 : 6cd7ec: 84 c0 test %al,%al 0.00 : 6cd7ee: 0f 84 5f ff ff ff je 6cd753 0.00 : 6cd7f4: 0f 1f 40 00 nopl 0x0(%rax) : /* : * When processing a year field, mark it for adjustment if it's only one : * or two digits. : */ : if (*tmask == DTK_M(YEAR)) : *is2digits = (flen <= 2); 0.00 : 6cd7f8: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 6cd7fd: e9 ff fe ff ff jmpq 6cd701 : tm->tm_mon = val; : break; : : case (DTK_M(MONTH) | DTK_M(DAY)): : /* Must be at third field of DD-MM-YY or MM-DD-YY */ : *tmask = DTK_M(YEAR); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2587 0.57 : 6cd802: 41 c7 45 00 04 00 00 movl $0x4,0x0(%r13) 0.00 : 6cd809: 00 : tm->tm_year = val; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2588 1.63 : 6cd80a: 45 89 77 14 mov %r14d,0x14(%r15) 0.92 : 6cd80e: 66 90 xchg %ax,%ax : break; 0.00 : 6cd810: eb bb jmp 6cd7cd : tm->tm_mday = val; : } : break; : : case (DTK_M(YEAR) | DTK_M(MONTH)): : if (haveTextMonth) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2554 6.96 : 6cd812: 80 7d c3 00 cmpb $0x0,-0x3d(%rbp) 5.61 : 6cd816: 74 44 je 6cd85c : { : /* Need to accept DD-MON-YYYY even in YMD mode */ : if (flen >= 3 && *is2digits) 0.00 : 6cd818: 83 7d c4 02 cmpl $0x2,-0x3c(%rbp) 0.00 : 6cd81c: 7e 3e jle 6cd85c 0.00 : 6cd81e: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 6cd822: 80 38 00 cmpb $0x0,(%rax) 0.00 : 6cd825: 74 35 je 6cd85c : { : /* Guess that first numeric field is day was wrong */ : *tmask = DTK_M(DAY); /* YEAR is already set */ 0.00 : 6cd827: 41 c7 45 00 08 00 00 movl $0x8,0x0(%r13) 0.00 : 6cd82e: 00 : tm->tm_mday = tm->tm_year; 0.00 : 6cd82f: 41 8b 47 14 mov 0x14(%r15),%eax : tm->tm_year = val; 0.00 : 6cd833: 45 89 77 14 mov %r14d,0x14(%r15) : /* Need to accept DD-MON-YYYY even in YMD mode */ : if (flen >= 3 && *is2digits) : { : /* Guess that first numeric field is day was wrong */ : *tmask = DTK_M(DAY); /* YEAR is already set */ : tm->tm_mday = tm->tm_year; 0.00 : 6cd837: 41 89 47 0c mov %eax,0xc(%r15) : tm->tm_year = val; : *is2digits = FALSE; 0.00 : 6cd83b: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 6cd83f: c6 00 00 movb $0x0,(%rax) : : case (DTK_M(YEAR) | DTK_M(MONTH)): : if (haveTextMonth) : { : /* Need to accept DD-MON-YYYY even in YMD mode */ : if (flen >= 3 && *is2digits) 0.00 : 6cd842: eb 89 jmp 6cd7cd : *tmask = DTK_M(MONTH); : tm->tm_mon = val; : break; : : case (DTK_M(MONTH)): : if (haveTextMonth) 0.00 : 6cd844: 80 7d c3 00 cmpb $0x0,-0x3d(%rbp) 0.00 : 6cd848: 74 12 je 6cd85c : * textual month name. We want to support the variants : * MON-DD-YYYY, DD-MON-YYYY, and YYYY-MON-DD as unambiguous : * inputs. We will also accept MON-DD-YY or DD-MON-YY in : * either DMY or MDY modes, as well as YY-MON-DD in YMD mode. : */ : if (flen >= 3 || DateOrder == DATEORDER_YMD) 0.00 : 6cd84a: 83 7d c4 02 cmpl $0x2,-0x3c(%rbp) 0.00 : 6cd84e: 7f b2 jg 6cd802 0.00 : 6cd850: 44 8b 05 b9 b2 49 00 mov 0x49b2b9(%rip),%r8d # b68b10 0.00 : 6cd857: 45 85 c0 test %r8d,%r8d 0.00 : 6cd85a: 74 a6 je 6cd802 : } : } : else : { : /* Must be at third field of YY-MM-DD */ : *tmask = DTK_M(DAY); 0.28 : 6cd85c: 41 c7 45 00 08 00 00 movl $0x8,0x0(%r13) 0.00 : 6cd863: 00 : tm->tm_mday = val; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2575 0.71 : 6cd864: 45 89 77 0c mov %r14d,0xc(%r15) 0.78 : 6cd868: e9 60 ff ff ff jmpq 6cd7cd : } : else if (*cp != '\0') : return DTERR_BAD_FORMAT; : : /* Special case for day of year */ : if (flen == 3 && (fmask & DTK_DATE_M) == DTK_M(YEAR) && val >= 1 && 0.00 : 6cd86d: 45 85 f6 test %r14d,%r14d 0.00 : 6cd870: 0f 8e f6 fe ff ff jle 6cd76c 0.00 : 6cd876: 41 81 fe 6e 01 00 00 cmp $0x16e,%r14d 0.00 : 6cd87d: 0f 1f 00 nopl (%rax) 0.00 : 6cd880: 0f 8f 3b ff ff ff jg 6cd7c1 : val <= 366) : { : *tmask = (DTK_M(DOY) | DTK_M(MONTH) | DTK_M(DAY)); 0.00 : 6cd886: 41 c7 45 00 0a 80 00 movl $0x800a,0x0(%r13) 0.00 : 6cd88d: 00 : tm->tm_yday = val; 0.00 : 6cd88e: 31 d2 xor %edx,%edx 0.00 : 6cd890: 45 89 77 1c mov %r14d,0x1c(%r15) : */ : if (*tmask == DTK_M(YEAR)) : *is2digits = (flen <= 2); : : return 0; : } 0.00 : 6cd894: e9 68 fe ff ff jmpq 6cd701 : /* Special case for day of year */ : if (flen == 3 && (fmask & DTK_DATE_M) == DTK_M(YEAR) && val >= 1 && : val <= 366) : { : *tmask = (DTK_M(DOY) | DTK_M(MONTH) | DTK_M(DAY)); : tm->tm_yday = val; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2484 1.35 : 6cd899: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 6cd89c: 83 e0 0e and $0xe,%eax 0.00 : 6cd89f: e9 c8 fe ff ff jmpq 6cd76c Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.04 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:103 19.84 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:103 10.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:95 10.10 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:99 9.31 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:103 7.90 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:93 6.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:99 5.18 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 4.30 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 0.88 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:99 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5c40 : : : Datum : btint4cmp(PG_FUNCTION_ARGS) : { : int32 a = PG_GETARG_INT32(0); : int32 b = PG_GETARG_INT32(1); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:95 10.71 : 4a5c40: 8b 47 28 mov 0x28(%rdi),%eax : : if (a > b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 2.90 : 4a5c43: 39 47 20 cmp %eax,0x20(%rdi) 4.30 : 4a5c46: ba 01 00 00 00 mov $0x1,%edx : PG_RETURN_VOID(); : } : : Datum : btint4cmp(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:93 7.90 : 4a5c4b: 55 push %rbp 0.26 : 4a5c4c: 48 89 e5 mov %rsp,%rbp : int32 a = PG_GETARG_INT32(0); : int32 b = PG_GETARG_INT32(1); : : if (a > b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:97 5.18 : 4a5c4f: 7f 0e jg 4a5c5f : PG_RETURN_INT32(1); : else if (a == b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:99 10.10 : 4a5c51: ba ff ff ff ff mov $0xffffffff,%edx 6.58 : 4a5c56: b8 00 00 00 00 mov $0x0,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:99 0.88 : 4a5c5b: 48 0f 44 d0 cmove %rax,%rdx : PG_RETURN_INT32(0); : else : PG_RETURN_INT32(-1); : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:103 19.84 : 4a5c5f: 48 89 d0 mov %rdx,%rax 31.34 : 4a5c62: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1925 4.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1895 4.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1900 4.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1933 4.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1914 4.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1933 4.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1903 4.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1895 4.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1914 4.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1917 4.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1911 4.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1895 4.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1933 3.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1909 3.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1912 3.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1908 2.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1905 2.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1930 2.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1905 2.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1909 2.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1933 1.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1903 1.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1933 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1907 1.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1905 1.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1917 0.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1905 0.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1905 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077f490 : : * but the alternative of expecting all SPI functions to do SPI_push/SPI_pop : * around I/O calls seems worse. : */ : Datum : InputFunctionCall(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1895 4.20 : 77f490: 55 push %rbp 0.09 : 77f491: 48 89 e5 mov %rsp,%rbp 4.03 : 77f494: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 77f498: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 77f49c: 48 89 f3 mov %rsi,%rbx 0.00 : 77f49f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 4.92 : 77f4a3: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 77f4a7: 49 89 fc mov %rdi,%r12 0.00 : 77f4aa: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 77f4ae: 48 81 ec f0 03 00 00 sub $0x3f0,%rsp : FunctionCallInfoData fcinfo; : Datum result; : bool pushed; : : if (str == NULL && flinfo->fn_strict) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1900 4.92 : 77f4b5: 48 85 f6 test %rsi,%rsi : * but the alternative of expecting all SPI functions to do SPI_push/SPI_pop : * around I/O calls seems worse. : */ : Datum : InputFunctionCall(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod) : { 0.00 : 77f4b8: 41 89 d6 mov %edx,%r14d 0.00 : 77f4bb: 41 89 cf mov %ecx,%r15d : FunctionCallInfoData fcinfo; : Datum result; : bool pushed; : : if (str == NULL && flinfo->fn_strict) 0.00 : 77f4be: 0f 84 bc 00 00 00 je 77f580 : return (Datum) 0; /* just return null result */ : : pushed = SPI_push_conditional(); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1903 4.29 : 77f4c4: e8 17 de e4 ff callq 5cd2e0 : : InitFunctionCallInfoData(fcinfo, flinfo, 3, InvalidOid, NULL, NULL); : : fcinfo.arg[0] = CStringGetDatum(str); : fcinfo.arg[1] = ObjectIdGetDatum(typioparam); 0.18 : 77f4c9: 45 89 f6 mov %r14d,%r14d : fcinfo.arg[2] = Int32GetDatum(typmod); : fcinfo.argnull[0] = (str == NULL); 0.00 : 77f4cc: 48 85 db test %rbx,%rbx : : InitFunctionCallInfoData(fcinfo, flinfo, 3, InvalidOid, NULL, NULL); : : fcinfo.arg[0] = CStringGetDatum(str); : fcinfo.arg[1] = ObjectIdGetDatum(typioparam); : fcinfo.arg[2] = Int32GetDatum(typmod); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1909 3.76 : 77f4cf: 45 89 ff mov %r15d,%r15d : fcinfo.argnull[0] = (str == NULL); 0.00 : 77f4d2: 0f 94 85 60 ff ff ff sete -0xa0(%rbp) : bool pushed; : : if (str == NULL && flinfo->fn_strict) : return (Datum) 0; /* just return null result */ : : pushed = SPI_push_conditional(); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1903 1.79 : 77f4d9: 88 85 1f fc ff ff mov %al,-0x3e1(%rbp) : fcinfo.arg[2] = Int32GetDatum(typmod); : fcinfo.argnull[0] = (str == NULL); : fcinfo.argnull[1] = false; : fcinfo.argnull[2] = false; : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1914 4.20 : 77f4df: 48 8d bd 20 fc ff ff lea -0x3e0(%rbp),%rdi : if (str == NULL && flinfo->fn_strict) : return (Datum) 0; /* just return null result */ : : pushed = SPI_push_conditional(); : : InitFunctionCallInfoData(fcinfo, flinfo, 3, InvalidOid, NULL, NULL); 0.00 : 77f4e6: 4c 89 a5 20 fc ff ff mov %r12,-0x3e0(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1905 1.34 : 77f4ed: 48 c7 85 28 fc ff ff movq $0x0,-0x3d8(%rbp) 0.00 : 77f4f4: 00 00 00 00 0.72 : 77f4f8: 48 c7 85 30 fc ff ff movq $0x0,-0x3d0(%rbp) 0.00 : 77f4ff: 00 00 00 00 2.68 : 77f503: c7 85 38 fc ff ff 00 movl $0x0,-0x3c8(%rbp) 0.00 : 77f50a: 00 00 00 0.89 : 77f50d: c6 85 3c fc ff ff 00 movb $0x0,-0x3c4(%rbp) 2.95 : 77f514: 66 c7 85 3e fc ff ff movw $0x3,-0x3c2(%rbp) 0.00 : 77f51b: 03 00 : : fcinfo.arg[0] = CStringGetDatum(str); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1907 1.52 : 77f51d: 48 89 9d 40 fc ff ff mov %rbx,-0x3c0(%rbp) : fcinfo.arg[1] = ObjectIdGetDatum(typioparam); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1908 3.31 : 77f524: 4c 89 b5 48 fc ff ff mov %r14,-0x3b8(%rbp) : fcinfo.arg[2] = Int32GetDatum(typmod); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1909 2.24 : 77f52b: 4c 89 bd 50 fc ff ff mov %r15,-0x3b0(%rbp) : fcinfo.argnull[0] = (str == NULL); : fcinfo.argnull[1] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1911 4.11 : 77f532: c6 85 61 ff ff ff 00 movb $0x0,-0x9f(%rbp) : fcinfo.argnull[2] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1912 3.40 : 77f539: c6 85 62 ff ff ff 00 movb $0x0,-0x9e(%rbp) : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1914 4.38 : 77f540: 41 ff 14 24 callq *(%r12) : : /* Should get null result if and only if str is NULL */ : if (str == NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1917 4.20 : 77f544: 48 85 db test %rbx,%rbx : fcinfo.arg[2] = Int32GetDatum(typmod); : fcinfo.argnull[0] = (str == NULL); : fcinfo.argnull[1] = false; : fcinfo.argnull[2] = false; : : result = FunctionCallInvoke(&fcinfo); 0.09 : 77f547: 49 89 c5 mov %rax,%r13 : : /* Should get null result if and only if str is NULL */ : if (str == NULL) 1.25 : 77f54a: 74 44 je 77f590 : elog(ERROR, "input function %u returned non-NULL", : fcinfo.flinfo->fn_oid); : } : else : { : if (fcinfo.isnull) 0.36 : 77f54c: 80 bd 3c fc ff ff 00 cmpb $0x0,-0x3c4(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1925 13.95 : 77f553: 75 78 jne 77f5cd : elog(ERROR, "input function %u returned NULL", : fcinfo.flinfo->fn_oid); : } : : SPI_pop_conditional(pushed); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1930 2.77 : 77f555: 0f be bd 1f fc ff ff movsbl -0x3e1(%rbp),%edi 0.27 : 77f55c: e8 af dd e4 ff callq 5cd310 : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1933 4.03 : 77f561: 4c 89 e8 mov %r13,%rax 0.18 : 77f564: 48 8b 5d d8 mov -0x28(%rbp),%rbx 4.56 : 77f568: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 77f56c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 4.38 : 77f570: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 77f574: 4c 8b 7d f8 mov -0x8(%rbp),%r15 1.79 : 77f578: c9 leaveq 2.24 : 77f579: c3 retq 0.00 : 77f57a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : FunctionCallInfoData fcinfo; : Datum result; : bool pushed; : : if (str == NULL && flinfo->fn_strict) 0.00 : 77f580: 45 31 ed xor %r13d,%r13d 0.00 : 77f583: 80 7f 0e 00 cmpb $0x0,0xe(%rdi) 0.00 : 77f587: 0f 84 37 ff ff ff je 77f4c4 0.00 : 77f58d: eb d2 jmp 77f561 0.00 : 77f58f: 90 nop : result = FunctionCallInvoke(&fcinfo); : : /* Should get null result if and only if str is NULL */ : if (str == NULL) : { : if (!fcinfo.isnull) 0.00 : 77f590: 80 bd 3c fc ff ff 00 cmpb $0x0,-0x3c4(%rbp) 0.00 : 77f597: 75 bc jne 77f555 : elog(ERROR, "input function %u returned non-NULL", 0.00 : 77f599: ba 00 50 8d 00 mov $0x8d5000,%edx 0.00 : 77f59e: be 81 07 00 00 mov $0x781,%esi 0.00 : 77f5a3: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77f5a8: e8 73 be ff ff callq 77b420 0.00 : 77f5ad: 48 8b 85 20 fc ff ff mov -0x3e0(%rbp),%rax 0.00 : 77f5b4: be e0 4d 8d 00 mov $0x8d4de0,%esi 0.00 : 77f5b9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77f5be: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77f5c1: 31 c0 xor %eax,%eax 0.00 : 77f5c3: e8 68 bc ff ff callq 77b230 0.00 : 77f5c8: e8 03 9f ce ff callq 4694d0 : fcinfo.flinfo->fn_oid); : } : else : { : if (fcinfo.isnull) : elog(ERROR, "input function %u returned NULL", 0.00 : 77f5cd: ba 00 50 8d 00 mov $0x8d5000,%edx 0.00 : 77f5d2: be 87 07 00 00 mov $0x787,%esi 0.00 : 77f5d7: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77f5dc: e8 3f be ff ff callq 77b420 0.00 : 77f5e1: 48 8b 85 20 fc ff ff mov -0x3e0(%rbp),%rax 0.00 : 77f5e8: be 08 4e 8d 00 mov $0x8d4e08,%esi 0.00 : 77f5ed: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77f5f2: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77f5f5: 31 c0 xor %eax,%eax 0.00 : 77f5f7: e8 34 bc ff ff callq 77b230 0.00 : 77f5fc: e8 cf 9e ce ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 85.47 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:469 1.86 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:500 1.21 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:450 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:469 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:597 0.84 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:500 0.74 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:602 0.74 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:602 0.65 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:469 0.65 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:602 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:465 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:482 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:482 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004afe70 <_bt_buildadd>: : * 'last' pointer indicates the last offset added to the page. : *---------- : */ : static void : _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup) : { 0.00 : 4afe70: 55 push %rbp 0.19 : 4afe71: 48 89 e5 mov %rsp,%rbp 0.28 : 4afe74: 41 57 push %r15 0.00 : 4afe76: 41 56 push %r14 0.47 : 4afe78: 41 55 push %r13 0.00 : 4afe7a: 41 54 push %r12 0.09 : 4afe7c: 49 89 f4 mov %rsi,%r12 0.00 : 4afe7f: 53 push %rbx 0.47 : 4afe80: 48 83 ec 38 sub $0x38,%rsp : : /* : * This is a handy place to check for cancel interrupts during the btree : * load phase of index creation. : */ : CHECK_FOR_INTERRUPTS(); 0.09 : 4afe84: 0f b6 05 05 a2 70 00 movzbl 0x70a205(%rip),%eax # bba090 : * 'last' pointer indicates the last offset added to the page. : *---------- : */ : static void : _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup) : { 0.00 : 4afe8b: 48 89 7d b8 mov %rdi,-0x48(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:450 1.21 : 4afe8f: 48 89 55 b0 mov %rdx,-0x50(%rbp) : : /* : * This is a handy place to check for cancel interrupts during the btree : * load phase of index creation. : */ : CHECK_FOR_INTERRUPTS(); 0.09 : 4afe93: 84 c0 test %al,%al 0.00 : 4afe95: 0f 85 e5 01 00 00 jne 4b0080 <_bt_buildadd+0x210> : : npage = state->btps_page; 0.09 : 4afe9b: 4d 8b 34 24 mov (%r12),%r14 : nblkno = state->btps_blkno; 0.00 : 4afe9f: 45 8b 7c 24 08 mov 0x8(%r12),%r15d : last_off = state->btps_lastoff; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:465 0.56 : 4afea4: 41 0f b7 5c 24 18 movzwl 0x18(%r12),%ebx : : pgspc = PageGetFreeSpace(npage); 0.00 : 4afeaa: 4c 89 f7 mov %r14,%rdi 0.00 : 4afead: e8 6e 4e 1e 00 callq 694d20 : itupsz = IndexTupleDSize(*itup); : itupsz = MAXALIGN(itupsz); 0.19 : 4afeb2: 48 8b 55 b0 mov -0x50(%rbp),%rdx : : npage = state->btps_page; : nblkno = state->btps_blkno; : last_off = state->btps_lastoff; : : pgspc = PageGetFreeSpace(npage); 0.00 : 4afeb6: 48 89 c1 mov %rax,%rcx : * : * NOTE: similar code appears in _bt_insertonpg() to defend against : * oversize items being inserted into an already-existing index. But : * during creation of an index, we don't go through there. : */ : if (itupsz > BTMaxItemSize(npage)) 0.09 : 4afeb9: 49 b9 ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%r9 0.00 : 4afec0: aa aa aa : nblkno = state->btps_blkno; : last_off = state->btps_lastoff; : : pgspc = PageGetFreeSpace(npage); : itupsz = IndexTupleDSize(*itup); : itupsz = MAXALIGN(itupsz); 0.00 : 4afec3: 0f b7 42 06 movzwl 0x6(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:469 85.47 : 4afec7: 25 ff 1f 00 00 and $0x1fff,%eax 0.19 : 4afecc: 48 83 c0 07 add $0x7,%rax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:469 0.93 : 4afed0: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.65 : 4afed4: 48 89 45 c8 mov %rax,-0x38(%rbp) : * : * NOTE: similar code appears in _bt_insertonpg() to defend against : * oversize items being inserted into an already-existing index. But : * during creation of an index, we don't go through there. : */ : if (itupsz > BTMaxItemSize(npage)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:482 0.56 : 4afed8: 41 0f b7 56 12 movzwl 0x12(%r14),%edx 0.00 : 4afedd: 81 e2 00 ff 00 00 and $0xff00,%edx 0.00 : 4afee3: 48 83 ea 38 sub $0x38,%rdx 0.00 : 4afee7: 48 89 d0 mov %rdx,%rax 0.37 : 4afeea: 49 f7 e1 mul %r9 0.00 : 4afeed: 48 d1 ea shr %rdx 0.00 : 4afef0: 48 83 e2 f8 and $0xfffffffffffffff8,%rdx 0.56 : 4afef4: 48 39 55 c8 cmp %rdx,-0x38(%rbp) 0.00 : 4afef8: 0f 87 bd 01 00 00 ja 4b00bb <_bt_buildadd+0x24b> : * Check to see if page is "full". It's definitely full if the item won't : * fit. Otherwise, compare to the target freespace derived from the : * fillfactor. However, we must put at least two items on each page, so : * disregard fillfactor if we don't have that many. : */ : if (pgspc < itupsz || (pgspc < state->btps_full && last_off > P_FIRSTKEY)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:500 1.86 : 4afefe: 48 3b 4d c8 cmp -0x38(%rbp),%rcx 0.00 : 4aff02: 72 3a jb 4aff3e <_bt_buildadd+0xce> 0.84 : 4aff04: 49 3b 4c 24 20 cmp 0x20(%r12),%rcx 0.00 : 4aff09: 72 2d jb 4aff38 <_bt_buildadd+0xc8> : * If the new item is the first for its page, stash a copy for later. Note : * this will only happen for the first item on a level; on later pages, : * the first item for a page is copied from the prior page in the code : * above. : */ : if (last_off == P_HIKEY) 0.00 : 4aff0b: 66 83 fb 01 cmp $0x1,%bx 0.00 : 4aff0f: 90 nop 0.37 : 4aff10: 0f 85 7a 01 00 00 jne 4b0090 <_bt_buildadd+0x220> : { : Assert(state->btps_minkey == NULL); : state->btps_minkey = CopyIndexTuple(itup); 0.00 : 4aff16: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4aff1a: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 4aff1f: e8 ec 0b fc ff callq 470b10 0.00 : 4aff24: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 4aff29: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 4aff2e: e9 1e 01 00 00 jmpq 4b0051 <_bt_buildadd+0x1e1> 0.00 : 4aff33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * Check to see if page is "full". It's definitely full if the item won't : * fit. Otherwise, compare to the target freespace derived from the : * fillfactor. However, we must put at least two items on each page, so : * disregard fillfactor if we don't have that many. : */ : if (pgspc < itupsz || (pgspc < state->btps_full && last_off > P_FIRSTKEY)) 0.09 : 4aff38: 66 83 fb 02 cmp $0x2,%bx 0.00 : 4aff3c: 76 cd jbe 4aff0b <_bt_buildadd+0x9b> : ItemId ii; : ItemId hii; : IndexTuple oitup; : : /* Create new page of same level */ : npage = _bt_blnewpage(state->btps_level); 0.00 : 4aff3e: 41 8b 7c 24 1c mov 0x1c(%r12),%edi : * rather than a true data item. There had better be at least two : * items on the page already, else the page would be empty of useful : * data. : */ : Assert(last_off > P_FIRSTKEY); : ii = PageGetItemId(opage, last_off); 0.00 : 4aff43: 0f b7 db movzwl %bx,%ebx : oitup = (IndexTuple) PageGetItem(opage, ii); 0.00 : 4aff46: 48 83 c3 03 add $0x3,%rbx : ItemId ii; : ItemId hii; : IndexTuple oitup; : : /* Create new page of same level */ : npage = _bt_blnewpage(state->btps_level); 0.00 : 4aff4a: e8 31 fc ff ff callq 4afb80 <_bt_blnewpage> : : /* and assign it a page position */ : nblkno = wstate->btws_pages_alloced++; 0.00 : 4aff4f: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 4aff53: 48 8b 4d b8 mov -0x48(%rbp),%rcx : ItemId ii; : ItemId hii; : IndexTuple oitup; : : /* Create new page of same level */ : npage = _bt_blnewpage(state->btps_level); 0.00 : 4aff57: 49 89 c5 mov %rax,%r13 : * data. : */ : Assert(last_off > P_FIRSTKEY); : ii = PageGetItemId(opage, last_off); : oitup = (IndexTuple) PageGetItem(opage, ii); : _bt_sortaddtup(npage, ItemIdGetLength(ii), oitup, P_FIRSTKEY); 0.00 : 4aff5a: 4c 89 ef mov %r13,%rdi : : /* Create new page of same level */ : npage = _bt_blnewpage(state->btps_level); : : /* and assign it a page position */ : nblkno = wstate->btws_pages_alloced++; 0.00 : 4aff5d: 8b 52 14 mov 0x14(%rdx),%edx 0.00 : 4aff60: 89 d0 mov %edx,%eax 0.00 : 4aff62: 89 55 d4 mov %edx,-0x2c(%rbp) 0.00 : 4aff65: 83 c0 01 add $0x1,%eax 0.00 : 4aff68: 89 41 14 mov %eax,0x14(%rcx) : * items on the page already, else the page would be empty of useful : * data. : */ : Assert(last_off > P_FIRSTKEY); : ii = PageGetItemId(opage, last_off); : oitup = (IndexTuple) PageGetItem(opage, ii); 0.00 : 4aff6b: 41 0f b7 44 9e 08 movzwl 0x8(%r14,%rbx,4),%eax : _bt_sortaddtup(npage, ItemIdGetLength(ii), oitup, P_FIRSTKEY); 0.00 : 4aff71: b9 02 00 00 00 mov $0x2,%ecx : * items on the page already, else the page would be empty of useful : * data. : */ : Assert(last_off > P_FIRSTKEY); : ii = PageGetItemId(opage, last_off); : oitup = (IndexTuple) PageGetItem(opage, ii); 0.00 : 4aff76: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 4aff7b: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 4aff7f: 48 89 45 c0 mov %rax,-0x40(%rbp) : _bt_sortaddtup(npage, ItemIdGetLength(ii), oitup, P_FIRSTKEY); 0.00 : 4aff83: 41 0f b7 74 9e 0a movzwl 0xa(%r14,%rbx,4),%esi 0.00 : 4aff89: 48 89 c2 mov %rax,%rdx 0.00 : 4aff8c: 66 d1 ee shr %si 0.00 : 4aff8f: 0f b7 f6 movzwl %si,%esi 0.00 : 4aff92: e8 49 fe ff ff callq 4afde0 <_bt_sortaddtup> : : /* : * Move 'last' into the high key position on opage : */ : hii = PageGetItemId(opage, P_HIKEY); : *hii = *ii; 0.09 : 4aff97: 41 8b 44 9e 08 mov 0x8(%r14,%rbx,4),%eax 0.00 : 4aff9c: 41 89 46 18 mov %eax,0x18(%r14) : ItemIdSetUnused(ii); /* redundant */ 0.00 : 4affa0: 66 41 c7 44 9e 08 00 movw $0x0,0x8(%r14,%rbx,4) 0.00 : 4affa7: 00 0.00 : 4affa8: 66 41 c7 44 9e 0a 00 movw $0x0,0xa(%r14,%rbx,4) 0.00 : 4affaf: 00 : ((PageHeader) opage)->pd_lower -= sizeof(ItemIdData); 0.00 : 4affb0: 66 41 83 6e 0c 04 subw $0x4,0xc(%r14) : /* : * Link the old page into its parent, using its minimum key. If we : * don't have a parent, we have to create one; this adds a new btree : * level. : */ : if (state->btps_next == NULL) 0.00 : 4affb6: 49 83 7c 24 28 00 cmpq $0x0,0x28(%r12) 0.00 : 4affbc: 0f 84 de 00 00 00 je 4b00a0 <_bt_buildadd+0x230> : state->btps_next = _bt_pagestate(wstate, state->btps_level + 1); : : Assert(state->btps_minkey != NULL); : ItemPointerSet(&(state->btps_minkey->t_tid), oblkno, P_HIKEY); 0.00 : 4affc2: 49 8b 54 24 10 mov 0x10(%r12),%rdx 0.00 : 4affc7: 44 89 f8 mov %r15d,%eax : : /* : * Write out the old page. We never need to touch it again, so we can : * free the opage workspace too. : */ : _bt_blwritepage(wstate, opage, oblkno); 0.00 : 4affca: bb 03 00 00 00 mov $0x3,%ebx : */ : if (state->btps_next == NULL) : state->btps_next = _bt_pagestate(wstate, state->btps_level + 1); : : Assert(state->btps_minkey != NULL); : ItemPointerSet(&(state->btps_minkey->t_tid), oblkno, P_HIKEY); 0.00 : 4affcf: c1 e8 10 shr $0x10,%eax 0.00 : 4affd2: 66 89 02 mov %ax,(%rdx) 0.00 : 4affd5: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 4affda: 66 44 89 78 02 mov %r15w,0x2(%rax) 0.00 : 4affdf: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 4affe4: 66 c7 40 04 01 00 movw $0x1,0x4(%rax) : _bt_buildadd(wstate, state->btps_next, state->btps_minkey); 0.00 : 4affea: 49 8b 54 24 10 mov 0x10(%r12),%rdx 0.00 : 4affef: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 4afff4: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4afff8: e8 73 fe ff ff callq 4afe70 <_bt_buildadd> : pfree(state->btps_minkey); 0.00 : 4afffd: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 4b0002: e8 79 8b 2e 00 callq 798b80 : /* : * Save a copy of the minimum key for the new page. We have to copy : * it off the old page, not the new one, in case we are not at leaf : * level. : */ : state->btps_minkey = CopyIndexTuple(oitup); 0.00 : 4b0007: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 4b000b: e8 00 0b fc ff callq 470b10 0.00 : 4b0010: 49 89 44 24 10 mov %rax,0x10(%r12) : /* : * Set the sibling links for both pages. : */ : { : BTPageOpaque oopaque = (BTPageOpaque) PageGetSpecialPointer(opage); : BTPageOpaque nopaque = (BTPageOpaque) PageGetSpecialPointer(npage); 0.09 : 4b0015: 41 0f b7 45 10 movzwl 0x10(%r13),%eax : : /* : * Write out the old page. We never need to touch it again, so we can : * free the opage workspace too. : */ : _bt_blwritepage(wstate, opage, oblkno); 0.00 : 4b001a: 4c 89 f6 mov %r14,%rsi : */ : { : BTPageOpaque oopaque = (BTPageOpaque) PageGetSpecialPointer(opage); : BTPageOpaque nopaque = (BTPageOpaque) PageGetSpecialPointer(npage); : : oopaque->btpo_next = nblkno; 0.00 : 4b001d: 41 0f b7 56 10 movzwl 0x10(%r14),%edx 0.00 : 4b0022: 8b 4d d4 mov -0x2c(%rbp),%ecx : /* : * Set the sibling links for both pages. : */ : { : BTPageOpaque oopaque = (BTPageOpaque) PageGetSpecialPointer(opage); : BTPageOpaque nopaque = (BTPageOpaque) PageGetSpecialPointer(npage); 0.00 : 4b0025: 49 8d 44 05 00 lea 0x0(%r13,%rax,1),%rax : : oopaque->btpo_next = nblkno; 0.00 : 4b002a: 41 89 4c 16 04 mov %ecx,0x4(%r14,%rdx,1) : : /* : * Write out the old page. We never need to touch it again, so we can : * free the opage workspace too. : */ : _bt_blwritepage(wstate, opage, oblkno); 0.00 : 4b002f: 44 89 fa mov %r15d,%edx 0.00 : 4b0032: 4d 89 ee mov %r13,%r14 : { : BTPageOpaque oopaque = (BTPageOpaque) PageGetSpecialPointer(opage); : BTPageOpaque nopaque = (BTPageOpaque) PageGetSpecialPointer(npage); : : oopaque->btpo_next = nblkno; : nopaque->btpo_prev = oblkno; 0.00 : 4b0035: 44 89 38 mov %r15d,(%rax) : nopaque->btpo_next = P_NONE; /* redundant */ 0.00 : 4b0038: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : : /* : * Write out the old page. We never need to touch it again, so we can : * free the opage workspace too. : */ : _bt_blwritepage(wstate, opage, oblkno); 0.00 : 4b003f: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4b0043: e8 68 fc ff ff callq 4afcb0 <_bt_blwritepage> 0.09 : 4b0048: 44 8b 7d d4 mov -0x2c(%rbp),%r15d 0.09 : 4b004c: b9 03 00 00 00 mov $0x3,%ecx : : /* : * Add the new item into the current page. : */ : last_off = OffsetNumberNext(last_off); : _bt_sortaddtup(npage, itupsz, itup, last_off); /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:597 0.93 : 4b0051: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 4b0055: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 4b0059: 4c 89 f7 mov %r14,%rdi 0.00 : 4b005c: e8 7f fd ff ff callq 4afde0 <_bt_sortaddtup> : : state->btps_page = npage; 0.00 : 4b0061: 4d 89 34 24 mov %r14,(%r12) : state->btps_blkno = nblkno; 0.09 : 4b0065: 45 89 7c 24 08 mov %r15d,0x8(%r12) : state->btps_lastoff = last_off; 0.00 : 4b006a: 66 41 89 5c 24 18 mov %bx,0x18(%r12) : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:602 0.74 : 4b0070: 48 83 c4 38 add $0x38,%rsp 0.09 : 4b0074: 5b pop %rbx 0.19 : 4b0075: 41 5c pop %r12 0.65 : 4b0077: 41 5d pop %r13 0.00 : 4b0079: 41 5e pop %r14 0.00 : 4b007b: 41 5f pop %r15 0.19 : 4b007d: c9 leaveq 0.74 : 4b007e: c3 retq 0.00 : 4b007f: 90 nop : : /* : * This is a handy place to check for cancel interrupts during the btree : * load phase of index creation. : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 4b0080: e8 1b c2 1e 00 callq 69c2a0 0.00 : 4b0085: e9 11 fe ff ff jmpq 4afe9b <_bt_buildadd+0x2b> 0.00 : 4b008a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * If the new item is the first for its page, stash a copy for later. Note : * this will only happen for the first item on a level; on later pages, : * the first item for a page is copied from the prior page in the code : * above. : */ : if (last_off == P_HIKEY) 0.28 : 4b0090: 83 c3 01 add $0x1,%ebx 0.00 : 4b0093: 0f b7 cb movzwl %bx,%ecx 0.00 : 4b0096: eb b9 jmp 4b0051 <_bt_buildadd+0x1e1> 0.00 : 4b0098: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4b009f: 00 : * Link the old page into its parent, using its minimum key. If we : * don't have a parent, we have to create one; this adds a new btree : * level. : */ : if (state->btps_next == NULL) : state->btps_next = _bt_pagestate(wstate, state->btps_level + 1); 0.00 : 4b00a0: 41 8b 74 24 1c mov 0x1c(%r12),%esi 0.00 : 4b00a5: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 4b00a9: 83 c6 01 add $0x1,%esi 0.00 : 4b00ac: e8 3f fb ff ff callq 4afbf0 <_bt_pagestate> 0.00 : 4b00b1: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4b00b6: e9 07 ff ff ff jmpq 4affc2 <_bt_buildadd+0x152> : * NOTE: similar code appears in _bt_insertonpg() to defend against : * oversize items being inserted into an already-existing index. But : * during creation of an index, we don't go through there. : */ : if (itupsz > BTMaxItemSize(npage)) : ereport(ERROR, 0.00 : 4b00bb: 45 31 c0 xor %r8d,%r8d 0.00 : 4b00be: b9 2d 4c 7b 00 mov $0x7b4c2d,%ecx 0.00 : 4b00c3: ba ec 01 00 00 mov $0x1ec,%edx 0.00 : 4b00c8: be f8 4b 7b 00 mov $0x7b4bf8,%esi 0.00 : 4b00cd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4b00d2: 4c 89 4d a8 mov %r9,-0x58(%rbp) 0.00 : 4b00d6: e8 e5 a9 2c 00 callq 77aac0 0.00 : 4b00db: 84 c0 test %al,%al 0.00 : 4b00dd: 75 05 jne 4b00e4 <_bt_buildadd+0x274> 0.00 : 4b00df: e8 ec 93 fb ff callq 4694d0 0.00 : 4b00e4: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 4b00e8: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4b00ec: 48 8b 3a mov (%rdx),%rdi 0.00 : 4b00ef: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 4b00f3: e8 28 9a 2b 00 callq 769b20 0.00 : 4b00f8: bf f0 41 7b 00 mov $0x7b41f0,%edi 0.00 : 4b00fd: 41 89 c4 mov %eax,%r12d 0.00 : 4b0100: 31 c0 xor %eax,%eax 0.00 : 4b0102: e8 99 bb 2c 00 callq 77bca0 0.00 : 4b0107: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 4b010b: 41 0f b7 56 12 movzwl 0x12(%r14),%edx 0.00 : 4b0110: 41 89 c5 mov %eax,%r13d 0.00 : 4b0113: 4c 8b 4d a8 mov -0x58(%rbp),%r9 0.00 : 4b0117: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 4b011b: bf 20 0d 7b 00 mov $0x7b0d20,%edi 0.00 : 4b0120: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 4b0124: 81 e2 00 ff 00 00 and $0xff00,%edx 0.00 : 4b012a: 48 83 ea 38 sub $0x38,%rdx 0.00 : 4b012e: 48 8b 48 30 mov 0x30(%rax),%rcx 0.00 : 4b0132: 48 89 d0 mov %rdx,%rax 0.00 : 4b0135: 49 f7 e1 mul %r9 0.00 : 4b0138: 31 c0 xor %eax,%eax 0.00 : 4b013a: 48 d1 ea shr %rdx 0.00 : 4b013d: 48 83 e2 f8 and $0xfffffffffffffff8,%rdx 0.00 : 4b0141: e8 5a c7 2c 00 callq 77c8a0 0.00 : 4b0146: bf 05 01 00 00 mov $0x105,%edi 0.00 : 4b014b: 89 c3 mov %eax,%ebx 0.00 : 4b014d: e8 fe cb 2c 00 callq 77cd50 0.00 : 4b0152: 44 89 e1 mov %r12d,%ecx 0.00 : 4b0155: 89 c7 mov %eax,%edi 0.00 : 4b0157: 44 89 ea mov %r13d,%edx 0.00 : 4b015a: 89 de mov %ebx,%esi 0.00 : 4b015c: 31 c0 xor %eax,%eax 0.00 : 4b015e: e8 7d a4 2c 00 callq 77a5e0 0.00 : 4b0163: e9 77 ff ff ff jmpq 4b00df <_bt_buildadd+0x26f> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.12 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1240 13.93 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1226 5.47 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1241 3.88 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 3.58 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1206 3.38 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1235 3.28 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 3.28 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 3.08 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1195 3.08 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 2.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1206 2.49 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1206 2.39 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1226 2.29 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1176 2.29 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1240 2.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1158 1.99 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1240 1.89 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 1.89 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 1.79 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 1.79 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1226 1.79 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1178 1.69 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 1.49 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1215 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 1.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 1.19 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1226 1.09 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 0.70 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1185 0.60 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1215 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046f400 : : * slot's tupdesc's last attribute will be considered NULL even : * when the physical tuple is longer than the tupdesc. : */ : Datum : slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1156 1.79 : 46f400: 55 push %rbp 1.19 : 46f401: 48 89 e5 mov %rsp,%rbp 3.28 : 46f404: 48 89 5d e0 mov %rbx,-0x20(%rbp) 3.88 : 46f408: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.70 : 46f40c: 48 89 fb mov %rdi,%rbx 1.69 : 46f40f: 4c 89 6d f0 mov %r13,-0x10(%rbp) 1.09 : 46f413: 4c 89 75 f8 mov %r14,-0x8(%rbp) 1.39 : 46f417: 48 83 ec 20 sub $0x20,%rsp : HeapTupleHeader tup; : : /* : * system attributes are handled by heap_getsysattr : */ : if (attnum <= 0) 0.30 : 46f41b: 85 f6 test %esi,%esi : * slot's tupdesc's last attribute will be considered NULL even : * when the physical tuple is longer than the tupdesc. : */ : Datum : slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull) : { 1.89 : 46f41d: 49 89 d4 mov %rdx,%r12 : HeapTuple tuple = slot->tts_tuple; 0.50 : 46f420: 48 8b 7f 08 mov 0x8(%rdi),%rdi : TupleDesc tupleDesc = slot->tts_tupleDescriptor; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1158 2.19 : 46f424: 48 8b 53 10 mov 0x10(%rbx),%rdx : HeapTupleHeader tup; : : /* : * system attributes are handled by heap_getsysattr : */ : if (attnum <= 0) 0.10 : 46f428: 0f 8e a2 00 00 00 jle 46f4d0 : } : : /* : * fast path if desired attribute already cached : */ : if (attnum <= slot->tts_nvalid) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1176 2.29 : 46f42e: 3b 73 24 cmp 0x24(%rbx),%esi 0.00 : 46f431: 7e 65 jle 46f498 : } : : /* : * return NULL if attnum is out of range according to the tupdesc : */ : if (attnum > tupleDesc->natts) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1185 0.70 : 46f433: 3b 32 cmp (%rdx),%esi 0.00 : 46f435: 7f 51 jg 46f488 : : /* : * otherwise we had better have a physical tuple (tts_nvalid should equal : * natts in all virtual-tuple cases) : */ : if (tuple == NULL) /* internal error */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1195 3.08 : 46f437: 48 85 ff test %rdi,%rdi 0.00 : 46f43a: 0f 84 34 01 00 00 je 46f574 : * : * (We have to check this separately because of various inheritance and : * table-alteration scenarios: the tuple could be either longer or shorter : * than the tupdesc.) : */ : tup = tuple->t_data; 0.20 : 46f440: 48 8b 7f 10 mov 0x10(%rdi),%rdi : if (attnum > HeapTupleHeaderGetNatts(tup)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1206 2.59 : 46f444: 0f b7 47 12 movzwl 0x12(%rdi),%eax 3.58 : 46f448: 25 ff 07 00 00 and $0x7ff,%eax 2.49 : 46f44d: 39 c6 cmp %eax,%esi 0.00 : 46f44f: 7f 37 jg 46f488 : } : : /* : * check if target attribute is null: no point in groveling through tuple : */ : if (HeapTupleHasNulls(tuple) && att_isnull(attnum - 1, tup->t_bits)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1215 1.39 : 46f451: f6 47 14 01 testb $0x1,0x14(%rdi) 0.60 : 46f455: 74 18 je 46f46f 0.00 : 46f457: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 46f45a: 89 c8 mov %ecx,%eax 0.00 : 46f45c: 83 e1 07 and $0x7,%ecx 0.00 : 46f45f: c1 f8 03 sar $0x3,%eax 0.00 : 46f462: 48 98 cltq 0.00 : 46f464: 0f b6 44 07 17 movzbl 0x17(%rdi,%rax,1),%eax 0.00 : 46f469: d3 f8 sar %cl,%eax 0.00 : 46f46b: a8 01 test $0x1,%al 0.00 : 46f46d: 74 19 je 46f488 : /* : * If the attribute's column has been dropped, we force a NULL result. : * This case should not happen in normal use, but it could happen if we : * are executing a plan cached before the column was dropped. : */ : if (tupleDesc->attrs[attnum - 1]->attisdropped) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1226 1.79 : 46f46f: 4c 63 ee movslq %esi,%r13 1.19 : 46f472: 48 8b 42 08 mov 0x8(%rdx),%rax 0.50 : 46f476: 4d 8d 75 ff lea -0x1(%r13),%r14 0.20 : 46f47a: 4a 8b 04 f0 mov (%rax,%r14,8),%rax 2.39 : 46f47e: 80 78 61 00 cmpb $0x0,0x61(%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1226 13.93 : 46f482: 74 7c je 46f500 0.00 : 46f484: 0f 1f 40 00 nopl 0x0(%rax) : { : *isnull = true; 0.00 : 46f488: 41 c6 04 24 01 movb $0x1,(%r12) 0.00 : 46f48d: 31 c0 xor %eax,%eax : /* : * The result is acquired from tts_values array. : */ : *isnull = slot->tts_isnull[attnum - 1]; : return slot->tts_values[attnum - 1]; : } 0.00 : 46f48f: eb 20 jmp 46f4b1 0.00 : 46f491: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * fast path if desired attribute already cached : */ : if (attnum <= slot->tts_nvalid) : { : *isnull = slot->tts_isnull[attnum - 1]; 0.00 : 46f498: 48 8b 43 30 mov 0x30(%rbx),%rax 0.30 : 46f49c: 48 63 d6 movslq %esi,%rdx 0.10 : 46f49f: 0f b6 44 10 ff movzbl -0x1(%rax,%rdx,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1178 1.79 : 46f4a4: 41 88 04 24 mov %al,(%r12) : return slot->tts_values[attnum - 1]; 0.40 : 46f4a8: 48 8b 43 28 mov 0x28(%rbx),%rax 0.50 : 46f4ac: 48 8b 44 d0 f8 mov -0x8(%rax,%rdx,8),%rax : /* : * The result is acquired from tts_values array. : */ : *isnull = slot->tts_isnull[attnum - 1]; : return slot->tts_values[attnum - 1]; : } 0.10 : 46f4b1: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 3.28 : 46f4b5: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 1.39 : 46f4ba: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.20 : 46f4bf: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 3.08 : 46f4c4: c9 leaveq 1.49 : 46f4c5: c3 retq 0.00 : 46f4c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46f4cd: 00 00 00 : /* : * system attributes are handled by heap_getsysattr : */ : if (attnum <= 0) : { : if (tuple == NULL) /* internal error */ 0.00 : 46f4d0: 48 85 ff test %rdi,%rdi 0.00 : 46f4d3: 74 4b je 46f520 : elog(ERROR, "cannot extract system attribute from virtual tuple"); : if (tuple == &(slot->tts_minhdr)) /* internal error */ 0.00 : 46f4d5: 48 8d 43 40 lea 0x40(%rbx),%rax 0.00 : 46f4d9: 48 39 c7 cmp %rax,%rdi 0.00 : 46f4dc: 74 6c je 46f54a : elog(ERROR, "cannot extract system attribute from minimal tuple"); : return heap_getsysattr(tuple, attnum, tupleDesc, isnull); 0.00 : 46f4de: 4c 89 e1 mov %r12,%rcx : /* : * The result is acquired from tts_values array. : */ : *isnull = slot->tts_isnull[attnum - 1]; : return slot->tts_values[attnum - 1]; : } 0.00 : 46f4e1: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 46f4e5: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 46f4ea: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 46f4ef: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 46f4f4: c9 leaveq : { : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract system attribute from virtual tuple"); : if (tuple == &(slot->tts_minhdr)) /* internal error */ : elog(ERROR, "cannot extract system attribute from minimal tuple"); : return heap_getsysattr(tuple, attnum, tupleDesc, isnull); 0.00 : 46f4f5: e9 d6 f7 ff ff jmpq 46ecd0 0.00 : 46f4fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : /* : * Extract the attribute, along with any preceding attributes. : */ : slot_deform_tuple(slot, attnum); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1235 3.38 : 46f500: 48 89 df mov %rbx,%rdi 0.20 : 46f503: e8 08 fa ff ff callq 46ef10 : : /* : * The result is acquired from tts_values array. : */ : *isnull = slot->tts_isnull[attnum - 1]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1240 1.99 : 46f508: 48 8b 43 30 mov 0x30(%rbx),%rax 2.29 : 46f50c: 42 0f b6 44 28 ff movzbl -0x1(%rax,%r13,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1240 15.12 : 46f512: 41 88 04 24 mov %al,(%r12) : return slot->tts_values[attnum - 1]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1241 5.47 : 46f516: 48 8b 43 28 mov 0x28(%rbx),%rax 0.10 : 46f51a: 4a 8b 04 f0 mov (%rax,%r14,8),%rax : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1242 1.89 : 46f51e: eb 91 jmp 46f4b1 : * system attributes are handled by heap_getsysattr : */ : if (attnum <= 0) : { : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract system attribute from virtual tuple"); 0.00 : 46f520: ba f1 f6 7a 00 mov $0x7af6f1,%edx 0.00 : 46f525: be 8f 04 00 00 mov $0x48f,%esi 0.00 : 46f52a: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46f52f: e8 ec be 30 00 callq 77b420 0.00 : 46f534: be 40 f7 7a 00 mov $0x7af740,%esi 0.00 : 46f539: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46f53e: 31 c0 xor %eax,%eax 0.00 : 46f540: e8 eb bc 30 00 callq 77b230 0.00 : 46f545: e8 86 9f ff ff callq 4694d0 : if (tuple == &(slot->tts_minhdr)) /* internal error */ : elog(ERROR, "cannot extract system attribute from minimal tuple"); 0.00 : 46f54a: ba f1 f6 7a 00 mov $0x7af6f1,%edx 0.00 : 46f54f: be 91 04 00 00 mov $0x491,%esi 0.00 : 46f554: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46f559: e8 c2 be 30 00 callq 77b420 0.00 : 46f55e: be 78 f7 7a 00 mov $0x7af778,%esi 0.00 : 46f563: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46f568: 31 c0 xor %eax,%eax 0.00 : 46f56a: e8 c1 bc 30 00 callq 77b230 0.00 : 46f56f: e8 5c 9f ff ff callq 4694d0 : /* : * otherwise we had better have a physical tuple (tts_nvalid should equal : * natts in all virtual-tuple cases) : */ : if (tuple == NULL) /* internal error */ : elog(ERROR, "cannot extract attribute from empty tuple slot"); 0.00 : 46f574: ba f1 f6 7a 00 mov $0x7af6f1,%edx 0.00 : 46f579: be ac 04 00 00 mov $0x4ac,%esi 0.00 : 46f57e: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46f583: e8 98 be 30 00 callq 77b420 0.00 : 46f588: be b0 f7 7a 00 mov $0x7af7b0,%esi 0.00 : 46f58d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46f592: 31 c0 xor %eax,%eax 0.00 : 46f594: e8 97 bc 30 00 callq 77b230 0.00 : 46f599: e8 32 9f ff ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 41.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 24.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 10.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 2.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 2.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 1.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 1.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1376 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 1.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 1.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1376 0.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 0.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 0.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 0.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 0.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 0.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075f6b0 : : * Returns an integer less than, equal to, or greater than zero, indicating : * whether arg1 is less than, equal to, or greater than arg2. : */ : int : varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid) : { 0.30 : 75f6b0: 55 push %rbp 0.50 : 75f6b1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1364 0.60 : 75f6b4: 48 89 5d d8 mov %rbx,-0x28(%rbp) 1.60 : 75f6b8: 4c 89 65 e0 mov %r12,-0x20(%rbp) 2.00 : 75f6bc: 44 89 c3 mov %r8d,%ebx 0.00 : 75f6bf: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.80 : 75f6c3: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.30 : 75f6c7: 41 89 f4 mov %esi,%r12d 0.40 : 75f6ca: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.30 : 75f6ce: 48 81 ec 60 08 00 00 sub $0x860,%rsp 0.30 : 75f6d5: 48 89 bd c0 f7 ff ff mov %rdi,-0x840(%rbp) : * Unfortunately, there is no strncoll(), so in the non-C locale case we : * have to do some memory copying. This turns out to be significantly : * slower, so we optimize the case where LC_COLLATE is C. We also try to : * optimize relatively-short strings by avoiding palloc/pfree overhead. : */ : if (lc_collate_is_c(collid)) 0.30 : 75f6dc: 44 89 c7 mov %r8d,%edi : * Returns an integer less than, equal to, or greater than zero, indicating : * whether arg1 is less than, equal to, or greater than arg2. : */ : int : varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid) : { 0.20 : 75f6df: 48 89 95 b8 f7 ff ff mov %rdx,-0x848(%rbp) 0.60 : 75f6e6: 41 89 ce mov %ecx,%r14d : * Unfortunately, there is no strncoll(), so in the non-C locale case we : * have to do some memory copying. This turns out to be significantly : * slower, so we optimize the case where LC_COLLATE is C. We also try to : * optimize relatively-short strings by avoiding palloc/pfree overhead. : */ : if (lc_collate_is_c(collid)) 0.20 : 75f6e9: e8 e2 34 fb ff callq 712bd0 0.20 : 75f6ee: 84 c0 test %al,%al 0.00 : 75f6f0: 0f 85 0a 01 00 00 jne 75f800 : : #ifdef HAVE_LOCALE_T : pg_locale_t mylocale = 0; : #endif : : if (collid != DEFAULT_COLLATION_OID) 0.00 : 75f6f6: 83 fb 64 cmp $0x64,%ebx 0.00 : 75f6f9: 48 c7 85 c8 f7 ff ff movq $0x0,-0x838(%rbp) 0.00 : 75f700: 00 00 00 00 0.00 : 75f704: 74 16 je 75f71c : { : if (!OidIsValid(collid)) 0.00 : 75f706: 85 db test %ebx,%ebx 0.00 : 75f708: 0f 84 e4 01 00 00 je 75f8f2 : (errcode(ERRCODE_INDETERMINATE_COLLATION), : errmsg("could not determine which collation to use for string comparison"), : errhint("Use the COLLATE clause to set the collation explicitly."))); : } : #ifdef HAVE_LOCALE_T : mylocale = pg_newlocale_from_collation(collid); 0.00 : 75f70e: 89 df mov %ebx,%edi 0.00 : 75f710: e8 ab 32 fb ff callq 7129c0 0.00 : 75f715: 48 89 85 c8 f7 ff ff mov %rax,-0x838(%rbp) : * strcoll() by itself, so we don't lose much if this doesn't work out : * very often, and if it does - for example, because there are many : * equal strings in the input - then we win big by avoiding expensive : * collation-aware comparisons. : */ : if (len1 == len2 && memcmp(arg1, arg2, len1) == 0) 0.00 : 75f71c: 45 39 f4 cmp %r14d,%r12d 0.00 : 75f71f: 4d 63 fc movslq %r12d,%r15 0.00 : 75f722: 0f 84 88 01 00 00 je 75f8b0 : : return result; : } : #endif /* WIN32 */ : : if (len1 >= TEXTBUFLEN) 0.00 : 75f728: 41 81 fc ff 03 00 00 cmp $0x3ff,%r12d 0.00 : 75f72f: 0f 8f 13 01 00 00 jg 75f848 0.00 : 75f735: 48 8d 85 d0 fb ff ff lea -0x430(%rbp),%rax : a1p = (char *) palloc(len1 + 1); : else : a1p = a1buf; : if (len2 >= TEXTBUFLEN) 0.00 : 75f73c: 41 81 fe ff 03 00 00 cmp $0x3ff,%r14d : : return result; : } : #endif /* WIN32 */ : : if (len1 >= TEXTBUFLEN) 0.00 : 75f743: 48 89 85 b0 f7 ff ff mov %rax,-0x850(%rbp) 0.00 : 75f74a: 49 89 c5 mov %rax,%r13 : a1p = (char *) palloc(len1 + 1); : else : a1p = a1buf; : if (len2 >= TEXTBUFLEN) 0.00 : 75f74d: 0f 8f 20 01 00 00 jg 75f873 0.00 : 75f753: 48 8d 85 d0 f7 ff ff lea -0x830(%rbp),%rax 0.00 : 75f75a: 48 89 85 a8 f7 ff ff mov %rax,-0x858(%rbp) 0.00 : 75f761: 49 89 c4 mov %rax,%r12 : a2p = (char *) palloc(len2 + 1); : else : a2p = a2buf; : : memcpy(a1p, arg1, len1); 0.00 : 75f764: 48 8b b5 c0 f7 ff ff mov -0x840(%rbp),%rsi 0.00 : 75f76b: 4c 89 fa mov %r15,%rdx 0.00 : 75f76e: 4c 89 ef mov %r13,%rdi : a1p[len1] = '\0'; : memcpy(a2p, arg2, len2); 0.00 : 75f771: 49 63 de movslq %r14d,%rbx : if (len2 >= TEXTBUFLEN) : a2p = (char *) palloc(len2 + 1); : else : a2p = a2buf; : : memcpy(a1p, arg1, len1); 0.00 : 75f774: e8 77 a4 d0 ff callq 469bf0 : a1p[len1] = '\0'; 0.00 : 75f779: 43 c6 44 3d 00 00 movb $0x0,0x0(%r13,%r15,1) : memcpy(a2p, arg2, len2); 0.00 : 75f77f: 48 8b b5 b8 f7 ff ff mov -0x848(%rbp),%rsi 0.00 : 75f786: 48 89 da mov %rbx,%rdx 0.00 : 75f789: 4c 89 e7 mov %r12,%rdi 0.00 : 75f78c: e8 5f a4 d0 ff callq 469bf0 : a2p[len2] = '\0'; 0.00 : 75f791: 41 c6 04 1c 00 movb $0x0,(%r12,%rbx,1) : : #ifdef HAVE_LOCALE_T : if (mylocale) 0.00 : 75f796: 48 83 bd c8 f7 ff ff cmpq $0x0,-0x838(%rbp) 0.00 : 75f79d: 00 0.00 : 75f79e: 0f 84 3c 01 00 00 je 75f8e0 : result = strcoll_l(a1p, a2p, mylocale); 0.00 : 75f7a4: 48 8b 95 c8 f7 ff ff mov -0x838(%rbp),%rdx 0.00 : 75f7ab: 4c 89 e6 mov %r12,%rsi 0.00 : 75f7ae: 4c 89 ef mov %r13,%rdi 0.00 : 75f7b1: e8 ea 9f d0 ff callq 4697a0 0.00 : 75f7b6: 89 c3 mov %eax,%ebx : * In some locales strcoll() can claim that nonidentical strings are : * equal. Believing that would be bad news for a number of reasons, : * so we follow Perl's lead and sort "equal" strings according to : * strcmp(). : */ : if (result == 0) 0.00 : 75f7b8: 85 db test %ebx,%ebx 0.00 : 75f7ba: 0f 84 d8 00 00 00 je 75f898 : result = strcmp(a1p, a2p); : : if (a1p != a1buf) 0.00 : 75f7c0: 4c 3b ad b0 f7 ff ff cmp -0x850(%rbp),%r13 0.00 : 75f7c7: 74 08 je 75f7d1 : pfree(a1p); 0.00 : 75f7c9: 4c 89 ef mov %r13,%rdi 0.00 : 75f7cc: e8 af 93 03 00 callq 798b80 : if (a2p != a2buf) 0.00 : 75f7d1: 4c 3b a5 a8 f7 ff ff cmp -0x858(%rbp),%r12 0.00 : 75f7d8: 74 08 je 75f7e2 : pfree(a2p); 0.00 : 75f7da: 4c 89 e7 mov %r12,%rdi 0.00 : 75f7dd: e8 9e 93 03 00 callq 798b80 : } : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1547 1.10 : 75f7e2: 89 d8 mov %ebx,%eax 0.90 : 75f7e4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 2.69 : 75f7e8: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 75f7ec: 4c 8b 6d e8 mov -0x18(%rbp),%r13 1.00 : 75f7f0: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 75f7f4: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.90 : 75f7f8: c9 leaveq 0.70 : 75f7f9: c3 retq 0.00 : 75f7fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * slower, so we optimize the case where LC_COLLATE is C. We also try to : * optimize relatively-short strings by avoiding palloc/pfree overhead. : */ : if (lc_collate_is_c(collid)) : { : result = memcmp(arg1, arg2, Min(len1, len2)); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.10 : 75f800: 45 39 e6 cmp %r12d,%r14d 0.00 : 75f803: 44 89 e1 mov %r12d,%ecx 0.00 : 75f806: 48 8b b5 c0 f7 ff ff mov -0x840(%rbp),%rsi 0.30 : 75f80d: 41 0f 4e ce cmovle %r14d,%ecx 1.00 : 75f811: 48 8b bd b8 f7 ff ff mov -0x848(%rbp),%rdi 0.00 : 75f818: 48 63 c9 movslq %ecx,%rcx 0.20 : 75f81b: 48 39 c9 cmp %rcx,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 24.35 : 75f81e: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 41.32 : 75f820: 0f 97 c2 seta %dl 10.48 : 75f823: 0f 92 c0 setb %al 0.00 : 75f826: 89 d3 mov %edx,%ebx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1375 1.30 : 75f828: 28 c3 sub %al,%bl 1.70 : 75f82a: 0f be db movsbl %bl,%ebx : if ((result == 0) && (len1 != len2)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1376 1.40 : 75f82d: 85 db test %ebx,%ebx 0.00 : 75f82f: 75 b1 jne 75f7e2 1.00 : 75f831: 45 39 f4 cmp %r14d,%r12d 0.00 : 75f834: 74 ac je 75f7e2 : result = (len1 < len2) ? -1 : 1; 0.00 : 75f836: 31 db xor %ebx,%ebx 0.00 : 75f838: 45 39 e6 cmp %r12d,%r14d 0.00 : 75f83b: 0f 9e c3 setle %bl 0.00 : 75f83e: 8d 5c 1b ff lea -0x1(%rbx,%rbx,1),%ebx 0.00 : 75f842: eb 9e jmp 75f7e2 0.00 : 75f844: 0f 1f 40 00 nopl 0x0(%rax) : return result; : } : #endif /* WIN32 */ : : if (len1 >= TEXTBUFLEN) : a1p = (char *) palloc(len1 + 1); 0.00 : 75f848: 41 8d 7c 24 01 lea 0x1(%r12),%edi 0.00 : 75f84d: 48 63 ff movslq %edi,%rdi 0.00 : 75f850: e8 fb 94 03 00 callq 798d50 0.00 : 75f855: 49 89 c5 mov %rax,%r13 0.00 : 75f858: 48 8d 85 d0 fb ff ff lea -0x430(%rbp),%rax : else : a1p = a1buf; : if (len2 >= TEXTBUFLEN) 0.00 : 75f85f: 41 81 fe ff 03 00 00 cmp $0x3ff,%r14d 0.00 : 75f866: 48 89 85 b0 f7 ff ff mov %rax,-0x850(%rbp) 0.00 : 75f86d: 0f 8e e0 fe ff ff jle 75f753 : a2p = (char *) palloc(len2 + 1); 0.00 : 75f873: 41 8d 7e 01 lea 0x1(%r14),%edi 0.00 : 75f877: 48 63 ff movslq %edi,%rdi 0.00 : 75f87a: e8 d1 94 03 00 callq 798d50 0.00 : 75f87f: 49 89 c4 mov %rax,%r12 0.00 : 75f882: 48 8d 85 d0 f7 ff ff lea -0x830(%rbp),%rax 0.00 : 75f889: 48 89 85 a8 f7 ff ff mov %rax,-0x858(%rbp) 0.00 : 75f890: e9 cf fe ff ff jmpq 75f764 0.00 : 75f895: 0f 1f 00 nopl (%rax) : * equal. Believing that would be bad news for a number of reasons, : * so we follow Perl's lead and sort "equal" strings according to : * strcmp(). : */ : if (result == 0) : result = strcmp(a1p, a2p); 0.00 : 75f898: 4c 89 e6 mov %r12,%rsi 0.00 : 75f89b: 4c 89 ef mov %r13,%rdi 0.00 : 75f89e: e8 8d a4 d0 ff callq 469d30 0.00 : 75f8a3: 89 c3 mov %eax,%ebx 0.00 : 75f8a5: e9 16 ff ff ff jmpq 75f7c0 0.00 : 75f8aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * strcoll() by itself, so we don't lose much if this doesn't work out : * very often, and if it does - for example, because there are many : * equal strings in the input - then we win big by avoiding expensive : * collation-aware comparisons. : */ : if (len1 == len2 && memcmp(arg1, arg2, len1) == 0) 0.00 : 75f8b0: 48 8b b5 c0 f7 ff ff mov -0x840(%rbp),%rsi 0.00 : 75f8b7: 48 8b bd b8 f7 ff ff mov -0x848(%rbp),%rdi 0.00 : 75f8be: 4d 63 fc movslq %r12d,%r15 0.00 : 75f8c1: 4d 39 ff cmp %r15,%r15 0.00 : 75f8c4: 4c 89 f9 mov %r15,%rcx 0.00 : 75f8c7: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 75f8c9: 0f 97 c2 seta %dl 0.00 : 75f8cc: 0f 92 c0 setb %al 0.00 : 75f8cf: 31 db xor %ebx,%ebx 0.00 : 75f8d1: 38 c2 cmp %al,%dl 0.00 : 75f8d3: 0f 85 4f fe ff ff jne 75f728 0.00 : 75f8d9: e9 04 ff ff ff jmpq 75f7e2 0.00 : 75f8de: 66 90 xchg %ax,%ax : #ifdef HAVE_LOCALE_T : if (mylocale) : result = strcoll_l(a1p, a2p, mylocale); : else : #endif : result = strcoll(a1p, a2p); 0.00 : 75f8e0: 4c 89 e6 mov %r12,%rsi 0.00 : 75f8e3: 4c 89 ef mov %r13,%rdi 0.00 : 75f8e6: e8 25 9b d0 ff callq 469410 0.00 : 75f8eb: 89 c3 mov %eax,%ebx 0.00 : 75f8ed: e9 c6 fe ff ff jmpq 75f7b8 : { : /* : * This typically means that the parser could not resolve a : * conflict of implicit collations, so report it that way. : */ : ereport(ERROR, 0.00 : 75f8f2: 45 31 c0 xor %r8d,%r8d 0.00 : 75f8f5: b9 f5 bf 8c 00 mov $0x8cbff5,%ecx 0.00 : 75f8fa: ba 79 05 00 00 mov $0x579,%edx 0.00 : 75f8ff: be 8b bb 8c 00 mov $0x8cbb8b,%esi 0.00 : 75f904: bf 14 00 00 00 mov $0x14,%edi 0.00 : 75f909: e8 b2 b1 01 00 callq 77aac0 0.00 : 75f90e: 84 c0 test %al,%al 0.00 : 75f910: 75 05 jne 75f917 0.00 : 75f912: e8 b9 9b d0 ff callq 4694d0 0.00 : 75f917: bf f0 18 7c 00 mov $0x7c18f0,%edi 0.00 : 75f91c: 31 c0 xor %eax,%eax 0.00 : 75f91e: e8 7d c3 01 00 callq 77bca0 0.00 : 75f923: bf f0 bd 8c 00 mov $0x8cbdf0,%edi 0.00 : 75f928: 41 89 c4 mov %eax,%r12d 0.00 : 75f92b: 31 c0 xor %eax,%eax 0.00 : 75f92d: e8 6e cf 01 00 callq 77c8a0 0.00 : 75f932: bf 84 00 0a 02 mov $0x20a0084,%edi 0.00 : 75f937: 89 c3 mov %eax,%ebx 0.00 : 75f939: e8 12 d4 01 00 callq 77cd50 0.00 : 75f93e: 44 89 e2 mov %r12d,%edx 0.00 : 75f941: 89 c7 mov %eax,%edi 0.00 : 75f943: 89 de mov %ebx,%esi 0.00 : 75f945: 31 c0 xor %eax,%eax 0.00 : 75f947: e8 94 ac 01 00 callq 77a5e0 0.00 : 75f94c: eb c4 jmp 75f912 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2243 7.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2257 6.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 5.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2261 5.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2187 4.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2214 3.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2254 3.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2264 3.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2193 2.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2243 2.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 2.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2212 2.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2264 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 2.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 2.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2248 2.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2251 1.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 1.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2251 1.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2251 1.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2194 1.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2212 1.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2214 1.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2169 1.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2264 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2169 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2216 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2270 0.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2169 0.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2178 0.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2184 0.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2243 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2169 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2169 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2181 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2197 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2214 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2208 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2184 0.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2251 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2184 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2206 0.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2212 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cd8b0 : : * *tm: field values are stored into appropriate members of this struct : */ : static int : DecodeDate(char *str, int fmask, int *tmask, bool *is2digits, : struct pg_tm * tm) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2169 0.63 : 6cd8b0: 55 push %rbp 0.11 : 6cd8b1: 48 89 e5 mov %rsp,%rbp 0.00 : 6cd8b4: 41 57 push %r15 0.42 : 6cd8b6: 41 56 push %r14 0.00 : 6cd8b8: 41 55 push %r13 0.00 : 6cd8ba: 41 54 push %r12 0.00 : 6cd8bc: 53 push %rbx 0.63 : 6cd8bd: 48 89 fb mov %rdi,%rbx 0.00 : 6cd8c0: 48 81 ec 28 01 00 00 sub $0x128,%rsp 0.21 : 6cd8c7: 89 b5 e8 fe ff ff mov %esi,-0x118(%rbp) 0.42 : 6cd8cd: 48 89 95 e0 fe ff ff mov %rdx,-0x120(%rbp) 0.74 : 6cd8d4: 48 89 8d d8 fe ff ff mov %rcx,-0x128(%rbp) 0.84 : 6cd8db: 4c 89 85 d0 fe ff ff mov %r8,-0x130(%rbp) : len; : int dterr; : bool haveTextMonth = FALSE; : int type, : val, : dmask = 0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2178 0.74 : 6cd8e2: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : char *field[MAXDATEFIELDS]; : : *tmask = 0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2181 0.63 : 6cd8e9: c7 02 00 00 00 00 movl $0x0,(%rdx) : : /* parse this string... */ : while (*str != '\0' && nf < MAXDATEFIELDS) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2184 0.53 : 6cd8ef: 44 0f b6 27 movzbl (%rdi),%r12d 0.00 : 6cd8f3: 45 84 e4 test %r12b,%r12b 0.00 : 6cd8f6: 0f 84 56 02 00 00 je 6cdb52 0.00 : 6cd8fc: 4c 8d b5 f0 fe ff ff lea -0x110(%rbp),%r14 0.11 : 6cd903: 45 31 ed xor %r13d,%r13d 0.74 : 6cd906: 4d 89 f7 mov %r14,%r15 : * *tm: field values are stored into appropriate members of this struct : */ : static int : DecodeDate(char *str, int fmask, int *tmask, bool *is2digits, : struct pg_tm * tm) : { 0.00 : 6cd909: e8 b2 bf d9 ff callq 4698c0 <__ctype_b_loc@plt> 0.32 : 6cd90e: 49 89 c0 mov %rax,%r8 0.42 : 6cd911: 48 8b 30 mov (%rax),%rsi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2169 1.16 : 6cd914: eb 1b jmp 6cd931 0.00 : 6cd916: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6cd91d: 00 00 00 : /* parse this string... */ : while (*str != '\0' && nf < MAXDATEFIELDS) : { : /* skip field separators */ : while (*str != '\0' && !isalnum((unsigned char) *str)) : str++; 0.00 : 6cd920: 48 83 c3 01 add $0x1,%rbx : : /* parse this string... */ : while (*str != '\0' && nf < MAXDATEFIELDS) : { : /* skip field separators */ : while (*str != '\0' && !isalnum((unsigned char) *str)) 0.00 : 6cd924: 44 0f b6 23 movzbl (%rbx),%r12d 0.00 : 6cd928: 45 84 e4 test %r12b,%r12b 0.00 : 6cd92b: 0f 84 af 00 00 00 je 6cd9e0 0.42 : 6cd931: 41 0f b6 d4 movzbl %r12b,%edx 0.00 : 6cd935: 0f b7 04 56 movzwl (%rsi,%rdx,2),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2187 5.17 : 6cd939: a8 08 test $0x8,%al 0.00 : 6cd93b: 74 e3 je 6cd920 : : if (*str == '\0') : return DTERR_BAD_FORMAT; /* end of string after separator */ : : field[nf] = str; : if (isdigit((unsigned char) *str)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2194 1.69 : 6cd93d: f6 c4 08 test $0x8,%ah : str++; : : if (*str == '\0') : return DTERR_BAD_FORMAT; /* end of string after separator */ : : field[nf] = str; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2193 3.17 : 6cd940: 49 89 1f mov %rbx,(%r15) : if (isdigit((unsigned char) *str)) 0.00 : 6cd943: 0f 84 e7 00 00 00 je 6cda30 : { : while (isdigit((unsigned char) *str)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 2.53 : 6cd949: f6 44 56 01 08 testb $0x8,0x1(%rsi,%rdx,2) 0.00 : 6cd94e: 44 89 e1 mov %r12d,%ecx 0.00 : 6cd951: 74 16 je 6cd969 2.43 : 6cd953: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : str++; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2197 0.63 : 6cd958: 48 83 c3 01 add $0x1,%rbx : return DTERR_BAD_FORMAT; /* end of string after separator */ : : field[nf] = str; : if (isdigit((unsigned char) *str)) : { : while (isdigit((unsigned char) *str)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 1.90 : 6cd95c: 0f b6 0b movzbl (%rbx),%ecx 0.21 : 6cd95f: 0f b6 c1 movzbl %cl,%eax 2.64 : 6cd962: f6 44 46 01 08 testb $0x8,0x1(%rsi,%rax,2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2196 6.34 : 6cd967: 75 ef jne 6cd958 : while (isalpha((unsigned char) *str)) : str++; : } : : /* Just get rid of any non-digit, non-alpha characters... */ : if (*str != '\0') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2206 0.53 : 6cd969: 84 c9 test %cl,%cl 0.00 : 6cd96b: 0f 85 8f 00 00 00 jne 6cda00 : *str++ = '\0'; : nf++; 0.00 : 6cd971: 41 83 c5 01 add $0x1,%r13d : } : : /* look first for text fields, since that will be unambiguous month */ : for (i = 0; i < nf; i++) 0.00 : 6cd975: 45 85 ed test %r13d,%r13d 0.00 : 6cd978: 0f 8e d4 01 00 00 jle 6cdb52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2212 0.53 : 6cd97e: 4d 89 f4 mov %r14,%r12 0.00 : 6cd981: 31 db xor %ebx,%ebx 0.00 : 6cd983: c6 85 ef fe ff ff 00 movb $0x0,-0x111(%rbp) : { : if (isalpha((unsigned char) *field[i])) : { : type = DecodeSpecial(i, field[i], &val); 0.00 : 6cd98a: 4c 8d 7d c8 lea -0x38(%rbp),%r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2216 0.84 : 6cd98e: eb 10 jmp 6cd9a0 : *str++ = '\0'; : nf++; : } : : /* look first for text fields, since that will be unambiguous month */ : for (i = 0; i < nf; i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2212 2.64 : 6cd990: 83 c3 01 add $0x1,%ebx 0.21 : 6cd993: 49 83 c4 08 add $0x8,%r12 0.00 : 6cd997: 44 39 eb cmp %r13d,%ebx 0.00 : 6cd99a: 0f 8d 17 01 00 00 jge 6cdab7 : { : if (isalpha((unsigned char) *field[i])) 0.00 : 6cd9a0: 49 8b 34 24 mov (%r12),%rsi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2214 0.63 : 6cd9a4: 49 8b 00 mov (%r8),%rax 0.42 : 6cd9a7: 0f b6 16 movzbl (%rsi),%edx 1.27 : 6cd9aa: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 4.01 : 6cd9af: 74 df je 6cd990 : { : type = DecodeSpecial(i, field[i], &val); 0.00 : 6cd9b1: 4c 89 fa mov %r15,%rdx 0.00 : 6cd9b4: 89 df mov %ebx,%edi 0.00 : 6cd9b6: 4c 89 85 c8 fe ff ff mov %r8,-0x138(%rbp) 0.00 : 6cd9bd: e8 ae cf ff ff callq 6ca970 : if (type == IGNORE_DTF) 0.00 : 6cd9c2: 83 f8 08 cmp $0x8,%eax 0.00 : 6cd9c5: 4c 8b 85 c8 fe ff ff mov -0x138(%rbp),%r8 0.00 : 6cd9cc: 74 c2 je 6cd990 : continue; : : dmask = DTK_M(type); : switch (type) 0.00 : 6cd9ce: 83 e8 01 sub $0x1,%eax 0.00 : 6cd9d1: 0f 84 8f 00 00 00 je 6cda66 0.00 : 6cd9d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6cd9de: 00 00 : : fmask |= dmask; : *tmask |= dmask; : } : : if ((fmask & ~(DTK_M(DOY) | DTK_M(TZ))) != DTK_DATE_M) 0.00 : 6cd9e0: b8 ff ff ff ff mov $0xffffffff,%eax : return DTERR_BAD_FORMAT; : : /* validation of the field values must wait until ValidateDate() */ : : return 0; : } 0.00 : 6cd9e5: 48 81 c4 28 01 00 00 add $0x128,%rsp 0.00 : 6cd9ec: 5b pop %rbx 0.11 : 6cd9ed: 41 5c pop %r12 0.00 : 6cd9ef: 41 5d pop %r13 0.00 : 6cd9f1: 41 5e pop %r14 0.00 : 6cd9f3: 41 5f pop %r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2270 0.84 : 6cd9f5: c9 leaveq 0.00 : 6cd9f6: c3 retq 0.00 : 6cd9f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6cd9fe: 00 00 : str++; : } : : /* Just get rid of any non-digit, non-alpha characters... */ : if (*str != '\0') : *str++ = '\0'; 0.00 : 6cda00: c6 03 00 movb $0x0,(%rbx) 0.21 : 6cda03: 48 83 c3 01 add $0x1,%rbx : nf++; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2208 0.63 : 6cda07: 41 83 c5 01 add $0x1,%r13d : char *field[MAXDATEFIELDS]; : : *tmask = 0; : : /* parse this string... */ : while (*str != '\0' && nf < MAXDATEFIELDS) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2184 0.63 : 6cda0b: 44 0f b6 23 movzbl (%rbx),%r12d 0.00 : 6cda0f: 49 83 c7 08 add $0x8,%r15 0.11 : 6cda13: 45 84 e4 test %r12b,%r12b 0.00 : 6cda16: 0f 84 59 ff ff ff je 6cd975 0.21 : 6cda1c: 41 83 fd 18 cmp $0x18,%r13d 0.00 : 6cda20: 0f 8f 4f ff ff ff jg 6cd975 0.42 : 6cda26: e9 de fe ff ff jmpq 6cd909 0.00 : 6cda2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (isdigit((unsigned char) *str)) : { : while (isdigit((unsigned char) *str)) : str++; : } : else if (isalpha((unsigned char) *str)) 0.00 : 6cda30: f6 c4 04 test $0x4,%ah 0.00 : 6cda33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cda38: 74 c6 je 6cda00 : { : while (isalpha((unsigned char) *str)) 0.00 : 6cda3a: f6 44 56 01 04 testb $0x4,0x1(%rsi,%rdx,2) 0.00 : 6cda3f: 44 89 e1 mov %r12d,%ecx 0.00 : 6cda42: 0f 84 21 ff ff ff je 6cd969 0.00 : 6cda48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cda4f: 00 : str++; 0.00 : 6cda50: 48 83 c3 01 add $0x1,%rbx : while (isdigit((unsigned char) *str)) : str++; : } : else if (isalpha((unsigned char) *str)) : { : while (isalpha((unsigned char) *str)) 0.00 : 6cda54: 0f b6 0b movzbl (%rbx),%ecx 0.00 : 6cda57: 0f b6 c1 movzbl %cl,%eax 0.00 : 6cda5a: f6 44 46 01 04 testb $0x4,0x1(%rsi,%rax,2) 0.00 : 6cda5f: 75 ef jne 6cda50 0.00 : 6cda61: e9 03 ff ff ff jmpq 6cd969 : : dmask = DTK_M(type); : switch (type) : { : case MONTH: : tm->tm_mon = val; 0.00 : 6cda66: 8b 45 c8 mov -0x38(%rbp),%eax 0.00 : 6cda69: 48 8b 95 d0 fe ff ff mov -0x130(%rbp),%rdx : { : type = DecodeSpecial(i, field[i], &val); : if (type == IGNORE_DTF) : continue; : : dmask = DTK_M(type); 0.00 : 6cda70: c7 45 c4 02 00 00 00 movl $0x2,-0x3c(%rbp) : switch (type) : { : case MONTH: : tm->tm_mon = val; 0.00 : 6cda77: 89 42 10 mov %eax,0x10(%rdx) : break; : : default: : return DTERR_BAD_FORMAT; : } : if (fmask & dmask) 0.00 : 6cda7a: f6 85 e8 fe ff ff 02 testb $0x2,-0x118(%rbp) 0.00 : 6cda81: 0f 85 59 ff ff ff jne 6cd9e0 : return DTERR_BAD_FORMAT; : : fmask |= dmask; : *tmask |= dmask; 0.00 : 6cda87: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax : return DTERR_BAD_FORMAT; : } : if (fmask & dmask) : return DTERR_BAD_FORMAT; : : fmask |= dmask; 0.00 : 6cda8e: 83 8d e8 fe ff ff 02 orl $0x2,-0x118(%rbp) : *str++ = '\0'; : nf++; : } : : /* look first for text fields, since that will be unambiguous month */ : for (i = 0; i < nf; i++) 0.00 : 6cda95: 83 c3 01 add $0x1,%ebx : } : if (fmask & dmask) : return DTERR_BAD_FORMAT; : : fmask |= dmask; : *tmask |= dmask; 0.00 : 6cda98: 83 08 02 orl $0x2,(%rax) : : /* mark this field as being completed */ : field[i] = NULL; 0.00 : 6cda9b: 49 c7 04 24 00 00 00 movq $0x0,(%r12) 0.00 : 6cdaa2: 00 : *str++ = '\0'; : nf++; : } : : /* look first for text fields, since that will be unambiguous month */ : for (i = 0; i < nf; i++) 0.00 : 6cdaa3: 49 83 c4 08 add $0x8,%r12 0.00 : 6cdaa7: 44 39 eb cmp %r13d,%ebx : : fmask |= dmask; : *tmask |= dmask; : : /* mark this field as being completed */ : field[i] = NULL; 0.00 : 6cdaaa: c6 85 ef fe ff ff 01 movb $0x1,-0x111(%rbp) : *str++ = '\0'; : nf++; : } : : /* look first for text fields, since that will be unambiguous month */ : for (i = 0; i < nf; i++) 0.00 : 6cdab1: 0f 8c e9 fe ff ff jl 6cd9a0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2212 1.37 : 6cdab7: 45 31 e4 xor %r12d,%r12d : continue; : : if ((len = strlen(field[i])) <= 0) : return DTERR_BAD_FORMAT; : : dterr = DecodeNumber(len, field[i], haveTextMonth, fmask, 0.00 : 6cdaba: 44 0f be bd ef fe ff movsbl -0x111(%rbp),%r15d 0.00 : 6cdac1: ff 0.11 : 6cdac2: eb 11 jmp 6cdad5 0.00 : 6cdac4: 0f 1f 40 00 nopl 0x0(%rax) : field[i] = NULL; : } : } : : /* now pick up remaining numeric fields */ : for (i = 0; i < nf; i++) 0.00 : 6cdac8: 41 83 c4 01 add $0x1,%r12d 0.00 : 6cdacc: 49 83 c6 08 add $0x8,%r14 0.00 : 6cdad0: 45 39 ec cmp %r13d,%r12d 0.00 : 6cdad3: 7d 7d jge 6cdb52 : { : if (field[i] == NULL) 0.11 : 6cdad5: 49 8b 1e mov (%r14),%rbx 0.00 : 6cdad8: 48 85 db test %rbx,%rbx 0.00 : 6cdadb: 74 eb je 6cdac8 : continue; : : if ((len = strlen(field[i])) <= 0) 0.00 : 6cdadd: 48 89 df mov %rbx,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2248 2.32 : 6cdae0: e8 6b bd d9 ff callq 469850 0.00 : 6cdae5: 85 c0 test %eax,%eax 0.00 : 6cdae7: 0f 8e f3 fe ff ff jle 6cd9e0 : return DTERR_BAD_FORMAT; : : dterr = DecodeNumber(len, field[i], haveTextMonth, fmask, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2251 2.32 : 6cdaed: 48 8b 95 d8 fe ff ff mov -0x128(%rbp),%rdx 0.00 : 6cdaf4: 4c 8b 8d d0 fe ff ff mov -0x130(%rbp),%r9 0.32 : 6cdafb: 4c 8d 45 c4 lea -0x3c(%rbp),%r8 0.11 : 6cdaff: 8b 8d e8 fe ff ff mov -0x118(%rbp),%ecx 1.90 : 6cdb05: 48 89 de mov %rbx,%rsi 0.00 : 6cdb08: 89 c7 mov %eax,%edi 0.21 : 6cdb0a: 48 89 54 24 08 mov %rdx,0x8(%rsp) 1.80 : 6cdb0f: 48 8d 55 cc lea -0x34(%rbp),%rdx 0.63 : 6cdb13: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 6cdb17: 44 89 fa mov %r15d,%edx 0.21 : 6cdb1a: e8 81 fb ff ff callq 6cd6a0 : &dmask, tm, : &fsec, is2digits); : if (dterr) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2254 3.80 : 6cdb1f: 85 c0 test %eax,%eax 0.00 : 6cdb21: 0f 85 be fe ff ff jne 6cd9e5 : return dterr; : : if (fmask & dmask) 0.00 : 6cdb27: 8b 45 c4 mov -0x3c(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2257 7.60 : 6cdb2a: 85 85 e8 fe ff ff test %eax,-0x118(%rbp) 0.00 : 6cdb30: 0f 85 aa fe ff ff jne 6cd9e0 : return DTERR_BAD_FORMAT; : : fmask |= dmask; : *tmask |= dmask; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2261 5.60 : 6cdb36: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx : return dterr; : : if (fmask & dmask) : return DTERR_BAD_FORMAT; : : fmask |= dmask; 0.00 : 6cdb3d: 09 85 e8 fe ff ff or %eax,-0x118(%rbp) : field[i] = NULL; : } : } : : /* now pick up remaining numeric fields */ : for (i = 0; i < nf; i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2243 2.96 : 6cdb43: 41 83 c4 01 add $0x1,%r12d 0.74 : 6cdb47: 49 83 c6 08 add $0x8,%r14 : : if (fmask & dmask) : return DTERR_BAD_FORMAT; : : fmask |= dmask; : *tmask |= dmask; 0.00 : 6cdb4b: 09 02 or %eax,(%rdx) : field[i] = NULL; : } : } : : /* now pick up remaining numeric fields */ : for (i = 0; i < nf; i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2243 10.67 : 6cdb4d: 45 39 ec cmp %r13d,%r12d 0.00 : 6cdb50: 7c 83 jl 6cdad5 : : fmask |= dmask; : *tmask |= dmask; : } : : if ((fmask & ~(DTK_M(DOY) | DTK_M(TZ))) != DTK_DATE_M) 0.00 : 6cdb52: 81 a5 e8 fe ff ff df andl $0xffff7fdf,-0x118(%rbp) 0.00 : 6cdb59: 7f ff ff /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2264 2.64 : 6cdb5c: 31 c0 xor %eax,%eax 0.21 : 6cdb5e: 83 bd e8 fe ff ff 0e cmpl $0xe,-0x118(%rbp) 3.27 : 6cdb65: 0f 85 75 fe ff ff jne 6cd9e0 1.06 : 6cdb6b: e9 75 fe ff ff jmpq 6cd9e5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 18.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 8.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 6.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 6.06 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3007 5.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3010 4.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 4.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3010 4.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3012 4.39 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3013 4.39 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3015 2.61 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3015 2.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 1.43 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 1.31 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 0.95 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674710 : : /* : * Acquire or release the content_lock for the buffer. : */ : void : LockBuffer(Buffer buffer, int mode) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 8.55 : 674710: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 1.31 : 674711: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 6.18 : 674714: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3003 4.63 : 674715: 89 f3 mov %esi,%ebx 0.95 : 674717: 48 83 ec 08 sub $0x8,%rsp : volatile BufferDesc *buf; : : Assert(BufferIsValid(buffer)); : if (BufferIsLocal(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3007 6.06 : 67471b: 85 ff test %edi,%edi 0.00 : 67471d: 78 31 js 674750 : return; /* local buffers need no lock */ : : buf = &(BufferDescriptors[buffer - 1]); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3010 4.63 : 67471f: 48 63 c7 movslq %edi,%rax 0.24 : 674722: 48 83 e8 01 sub $0x1,%rax 0.48 : 674726: 48 c1 e0 06 shl $0x6,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3010 5.94 : 67472a: 48 03 05 cf b3 54 00 add 0x54b3cf(%rip),%rax # bbfb00 : : if (mode == BUFFER_LOCK_UNLOCK) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3012 4.63 : 674731: 85 f6 test %esi,%esi 0.00 : 674733: 74 2b je 674760 : LWLockRelease(buf->content_lock); : else if (mode == BUFFER_LOCK_SHARE) 0.12 : 674735: 83 fe 01 cmp $0x1,%esi 0.00 : 674738: 74 36 je 674770 : LWLockAcquire(buf->content_lock, LW_SHARED); : else if (mode == BUFFER_LOCK_EXCLUSIVE) 0.00 : 67473a: 83 fe 02 cmp $0x2,%esi 0.00 : 67473d: 75 45 jne 674784 : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); 0.00 : 67473f: 48 8b 78 38 mov 0x38(%rax),%rdi : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } 0.00 : 674743: 48 83 c4 08 add $0x8,%rsp : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); : else if (mode == BUFFER_LOCK_SHARE) : LWLockAcquire(buf->content_lock, LW_SHARED); : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); 0.12 : 674747: 31 f6 xor %esi,%esi : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } 0.00 : 674749: 5b pop %rbx 0.00 : 67474a: c9 leaveq : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); : else if (mode == BUFFER_LOCK_SHARE) : LWLockAcquire(buf->content_lock, LW_SHARED); : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); 0.00 : 67474b: e9 a0 b3 01 00 jmpq 68faf0 : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } 0.00 : 674750: 48 83 c4 08 add $0x8,%rsp 0.00 : 674754: 5b pop %rbx 0.00 : 674755: c9 leaveq 0.00 : 674756: c3 retq 0.00 : 674757: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 67475e: 00 00 : return; /* local buffers need no lock */ : : buf = &(BufferDescriptors[buffer - 1]); : : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); 0.12 : 674760: 48 8b 78 38 mov 0x38(%rax),%rdi : LWLockAcquire(buf->content_lock, LW_SHARED); : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 22.09 : 674764: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 2.38 : 674768: 5b pop %rbx 0.00 : 674769: c9 leaveq : return; /* local buffers need no lock */ : : buf = &(BufferDescriptors[buffer - 1]); : : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3013 4.39 : 67476a: e9 31 ac 01 00 jmpq 68f3a0 0.00 : 67476f: 90 nop : else if (mode == BUFFER_LOCK_SHARE) : LWLockAcquire(buf->content_lock, LW_SHARED); 0.24 : 674770: 48 8b 78 38 mov 0x38(%rax),%rdi : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 18.29 : 674774: 48 83 c4 08 add $0x8,%rsp : buf = &(BufferDescriptors[buffer - 1]); : : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); : else if (mode == BUFFER_LOCK_SHARE) : LWLockAcquire(buf->content_lock, LW_SHARED); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3015 2.61 : 674778: be 01 00 00 00 mov $0x1,%esi : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); : } 0.24 : 67477d: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3020 1.43 : 67477e: c9 leaveq : buf = &(BufferDescriptors[buffer - 1]); : : if (mode == BUFFER_LOCK_UNLOCK) : LWLockRelease(buf->content_lock); : else if (mode == BUFFER_LOCK_SHARE) : LWLockAcquire(buf->content_lock, LW_SHARED); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3015 4.39 : 67477f: e9 6c b3 01 00 jmpq 68faf0 : else if (mode == BUFFER_LOCK_EXCLUSIVE) : LWLockAcquire(buf->content_lock, LW_EXCLUSIVE); : else : elog(ERROR, "unrecognized buffer lock mode: %d", mode); 0.00 : 674784: ba 15 a0 8a 00 mov $0x8aa015,%edx 0.00 : 674789: be cb 0b 00 00 mov $0xbcb,%esi 0.00 : 67478e: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 674793: e8 88 6c 10 00 callq 77b420 0.00 : 674798: 89 da mov %ebx,%edx 0.00 : 67479a: be f8 9d 8a 00 mov $0x8a9df8,%esi 0.00 : 67479f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6747a4: 31 c0 xor %eax,%eax 0.00 : 6747a6: e8 85 6a 10 00 callq 77b230 0.00 : 6747ab: e8 20 4d df ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 7.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 7.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 6.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 6.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 6.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:146 5.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 4.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:141 3.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 3.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 2.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:131 2.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 2.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 2.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:130 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 1.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 1.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 1.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 1.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 1.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:155 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 0.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 0.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:140 0.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 0.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 0.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:50 0.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:100 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:161 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079d300 : : (cmp_tuple(a, c, state) < 0 ? a : c)); : } : : static void : qsort_tuple(SortTuple *a, size_t n, SortTupleComparator cmp_tuple, Tuplesortstate *state) : { 0.00 : 79d300: 55 push %rbp 0.00 : 79d301: 48 89 e5 mov %rsp,%rbp 0.00 : 79d304: 41 57 push %r15 0.12 : 79d306: 41 56 push %r14 0.00 : 79d308: 41 55 push %r13 0.00 : 79d30a: 41 54 push %r12 0.00 : 79d30c: 49 89 f4 mov %rsi,%r12 0.00 : 79d30f: 53 push %rbx 0.00 : 79d310: 48 83 ec 38 sub $0x38,%rsp : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.24 : 79d314: 0f b6 05 75 cd 41 00 movzbl 0x41cd75(%rip),%eax # bba090 : (cmp_tuple(a, c, state) < 0 ? a : c)); : } : : static void : qsort_tuple(SortTuple *a, size_t n, SortTupleComparator cmp_tuple, Tuplesortstate *state) : { 0.00 : 79d31b: 48 89 7d b0 mov %rdi,-0x50(%rbp) 0.12 : 79d31f: 48 89 55 a8 mov %rdx,-0x58(%rbp) 0.12 : 79d323: 48 89 4d a0 mov %rcx,-0x60(%rbp) : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.00 : 79d327: 84 c0 test %al,%al 0.00 : 79d329: 0f 85 86 02 00 00 jne 79d5b5 : if (n < 7) 0.00 : 79d32f: 49 83 fc 06 cmp $0x6,%r12 0.00 : 79d333: 0f 86 8b 02 00 00 jbe 79d5c4 : for (pl = pm; pl > a && cmp_tuple(pl - 1, pl, state) > 0; pl--) : swap(pl, pl - 1); : return; : } : presorted = 1; : for (pm = a + 1; pm < a + n; pm++) 0.00 : 79d339: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.37 : 79d33d: 4c 8b 75 b0 mov -0x50(%rbp),%r14 0.00 : 79d341: 4b 8d 04 64 lea (%r12,%r12,2),%rax 0.00 : 79d345: 48 8d 04 c3 lea (%rbx,%rax,8),%rax 0.12 : 79d349: 49 83 c6 18 add $0x18,%r14 0.00 : 79d34d: 49 39 c6 cmp %rax,%r14 0.00 : 79d350: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 79d354: 0f 83 fe 02 00 00 jae 79d658 0.12 : 79d35a: 4c 89 f3 mov %r14,%rbx 0.12 : 79d35d: eb 21 jmp 79d380 0.00 : 79d35f: 90 nop : { : CHECK_FOR_INTERRUPTS(); : if (cmp_tuple(pm - 1, pm, state) > 0) 0.24 : 79d360: 48 8d 7b e8 lea -0x18(%rbx),%rdi 0.00 : 79d364: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.49 : 79d368: 48 89 de mov %rbx,%rsi 0.24 : 79d36b: ff 55 a8 callq *-0x58(%rbp) 0.37 : 79d36e: 85 c0 test %eax,%eax 0.00 : 79d370: 7f 20 jg 79d392 : for (pl = pm; pl > a && cmp_tuple(pl - 1, pl, state) > 0; pl--) : swap(pl, pl - 1); : return; : } : presorted = 1; : for (pm = a + 1; pm < a + n; pm++) 0.00 : 79d372: 48 83 c3 18 add $0x18,%rbx 0.00 : 79d376: 48 3b 5d c8 cmp -0x38(%rbp),%rbx 0.00 : 79d37a: 0f 83 d8 02 00 00 jae 79d658 : { : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:100 0.61 : 79d380: 0f b6 05 09 cd 41 00 movzbl 0x41cd09(%rip),%eax # bba090 0.00 : 79d387: 84 c0 test %al,%al 0.00 : 79d389: 74 d5 je 79d360 0.00 : 79d38b: e8 10 ef ef ff callq 69c2a0 0.00 : 79d390: eb ce jmp 79d360 : break; : } : } : if (presorted) : return; : pm = a + (n / 2); 0.12 : 79d392: 4c 89 e0 mov %r12,%rax 0.00 : 79d395: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.12 : 79d399: 48 d1 e8 shr %rax : if (n > 7) 0.00 : 79d39c: 49 83 fc 07 cmp $0x7,%r12 : break; : } : } : if (presorted) : return; : pm = a + (n / 2); 0.12 : 79d3a0: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 79d3a4: 4c 8d 2c c2 lea (%rdx,%rax,8),%r13 : if (n > 7) 0.00 : 79d3a8: 0f 85 07 04 00 00 jne 79d7b5 0.00 : 79d3ae: 48 81 c2 90 00 00 00 add $0x90,%rdx 0.00 : 79d3b5: 48 89 55 c0 mov %rdx,-0x40(%rbp) : pm = med3_tuple(pm - d, pm, pm + d, cmp_tuple, state); : pn = med3_tuple(pn - 2 * d, pn - d, pn, cmp_tuple, state); : } : pm = med3_tuple(pl, pm, pn, cmp_tuple, state); : } : swap(a, pm); 0.12 : 79d3b9: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 79d3bd: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.00 : 79d3c1: 8b 50 14 mov 0x14(%rax),%edx 0.37 : 79d3c4: 0f b6 48 10 movzbl 0x10(%rax),%ecx 0.00 : 79d3c8: 49 89 df mov %rbx,%r15 0.00 : 79d3cb: 48 8b 70 08 mov 0x8(%rax),%rsi 0.12 : 79d3cf: 48 8b 38 mov (%rax),%rdi 0.00 : 79d3d2: 49 83 c7 30 add $0x30,%r15 0.00 : 79d3d6: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 79d3da: 48 89 03 mov %rax,(%rbx) 0.12 : 79d3dd: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 79d3e1: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 79d3e5: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 79d3e9: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 79d3ed: 41 89 55 14 mov %edx,0x14(%r13) 0.00 : 79d3f1: 41 88 4d 10 mov %cl,0x10(%r13) 0.12 : 79d3f5: 49 89 75 08 mov %rsi,0x8(%r13) 0.00 : 79d3f9: 49 89 7d 00 mov %rdi,0x0(%r13) 0.00 : 79d3fd: 4c 8b 65 c0 mov -0x40(%rbp),%r12 0.00 : 79d401: 4c 89 75 b8 mov %r14,-0x48(%rbp) 0.00 : 79d405: 4d 89 e5 mov %r12,%r13 0.00 : 79d408: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79d40f: 00 : { : CHECK_FOR_INTERRUPTS(); : if (r == 0) : { : swap(pa, pb); : pa++; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 6.83 : 79d410: 4d 8d 77 e8 lea -0x18(%r15),%r14 : swap(a, pm); : pa = pb = a + 1; : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_tuple(pb, a, state)) <= 0) 0.37 : 79d414: 4d 39 f4 cmp %r14,%r12 0.00 : 79d417: 0f 83 53 02 00 00 jae 79d670 : swap(pb, pc); : pb++; : pc--; : } : pn = a + n; : r = Min(pa - a, pb - pa); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:155 1.10 : 79d41d: 4d 89 f2 mov %r14,%r10 0.37 : 79d420: 4c 2b 55 b8 sub -0x48(%rbp),%r10 0.49 : 79d424: 48 b8 ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rax 0.00 : 79d42b: aa aa aa 0.00 : 79d42e: 48 ba ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rdx 0.00 : 79d435: aa aa aa 0.00 : 79d438: 49 c1 fa 03 sar $0x3,%r10 0.00 : 79d43c: 4c 0f af d0 imul %rax,%r10 0.49 : 79d440: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 79d444: 48 2b 45 b0 sub -0x50(%rbp),%rax 0.12 : 79d448: 48 c1 f8 03 sar $0x3,%rax 0.00 : 79d44c: 48 0f af c2 imul %rdx,%rax 0.12 : 79d450: 4c 39 d0 cmp %r10,%rax 0.24 : 79d453: 49 0f 4f c2 cmovg %r10,%rax : vecswap(a, pb - r, r); 0.00 : 79d457: 85 c0 test %eax,%eax 0.00 : 79d459: 7e 66 jle 79d4c1 0.00 : 79d45b: 4c 63 d8 movslq %eax,%r11 0.00 : 79d45e: 4d 89 f1 mov %r14,%r9 0.00 : 79d461: 45 31 c0 xor %r8d,%r8d 0.00 : 79d464: 4b 8d 04 5b lea (%r11,%r11,2),%rax 0.00 : 79d468: 48 c1 e0 03 shl $0x3,%rax 0.12 : 79d46c: 49 29 c1 sub %rax,%r9 0.37 : 79d46f: 90 nop : static void : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; 0.00 : 79d470: 48 8b 5d b0 mov -0x50(%rbp),%rbx : *a++ = *b; 0.00 : 79d474: 4b 8b 04 01 mov (%r9,%r8,1),%rax : static void : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:50 0.73 : 79d478: 4a 8b 3c 03 mov (%rbx,%r8,1),%rdi : *a++ = *b; 0.00 : 79d47c: 4a 89 04 03 mov %rax,(%rbx,%r8,1) 0.24 : 79d480: 4b 8b 44 01 08 mov 0x8(%r9,%r8,1),%rax : static void : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; 0.00 : 79d485: 42 0f b6 4c 03 10 movzbl 0x10(%rbx,%r8,1),%ecx 0.00 : 79d48b: 42 8b 54 03 14 mov 0x14(%rbx,%r8,1),%edx 0.00 : 79d490: 4a 8b 74 03 08 mov 0x8(%rbx,%r8,1),%rsi : *a++ = *b; 0.00 : 79d495: 4a 89 44 03 08 mov %rax,0x8(%rbx,%r8,1) 0.00 : 79d49a: 4b 8b 44 01 10 mov 0x10(%r9,%r8,1),%rax 0.37 : 79d49f: 4a 89 44 03 10 mov %rax,0x10(%rbx,%r8,1) : *b++ = t; 0.00 : 79d4a4: 43 89 54 01 14 mov %edx,0x14(%r9,%r8,1) 0.37 : 79d4a9: 43 88 4c 01 10 mov %cl,0x10(%r9,%r8,1) 0.37 : 79d4ae: 4b 89 74 01 08 mov %rsi,0x8(%r9,%r8,1) 0.00 : 79d4b3: 4b 89 3c 01 mov %rdi,(%r9,%r8,1) : } while (--n > 0); 0.00 : 79d4b7: 49 83 c0 18 add $0x18,%r8 0.00 : 79d4bb: 49 83 eb 01 sub $0x1,%r11 0.00 : 79d4bf: 75 af jne 79d470 : pc--; : } : pn = a + n; : r = Min(pa - a, pb - pa); : vecswap(a, pb - r, r); : r = Min(pd - pc, pn - pd - 1); 0.12 : 79d4c1: 4c 89 eb mov %r13,%rbx 0.00 : 79d4c4: 48 b8 ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rax 0.00 : 79d4cb: aa aa aa 0.00 : 79d4ce: 48 ba ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rdx 0.00 : 79d4d5: aa aa aa 0.00 : 79d4d8: 4c 29 e3 sub %r12,%rbx 0.37 : 79d4db: 48 c1 fb 03 sar $0x3,%rbx 0.00 : 79d4df: 48 0f af d8 imul %rax,%rbx 0.00 : 79d4e3: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 79d4e7: 4c 29 e8 sub %r13,%rax 0.00 : 79d4ea: 48 c1 f8 03 sar $0x3,%rax 0.00 : 79d4ee: 48 0f af c2 imul %rdx,%rax 0.00 : 79d4f2: 48 83 e8 01 sub $0x1,%rax 0.00 : 79d4f6: 48 39 d8 cmp %rbx,%rax 0.12 : 79d4f9: 48 0f 4f c3 cmovg %rbx,%rax : vecswap(pb, pn - r, r); 0.00 : 79d4fd: 85 c0 test %eax,%eax 0.00 : 79d4ff: 7e 6c jle 79d56d 0.00 : 79d501: 4c 63 d8 movslq %eax,%r11 0.00 : 79d504: 4c 8b 4d c8 mov -0x38(%rbp),%r9 0.00 : 79d508: 45 31 c0 xor %r8d,%r8d 0.00 : 79d50b: 4b 8d 04 5b lea (%r11,%r11,2),%rax 0.00 : 79d50f: 48 c1 e0 03 shl $0x3,%rax 0.00 : 79d513: 49 29 c1 sub %rax,%r9 0.00 : 79d516: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 79d51d: 00 00 00 : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; : *a++ = *b; 0.00 : 79d520: 4b 8b 04 01 mov (%r9,%r8,1),%rax : static void : swapfunc(SortTuple *a, SortTuple *b, size_t n) : { : do : { : SortTuple t = *a; 0.00 : 79d524: 4b 8b 3c 06 mov (%r14,%r8,1),%rdi 0.00 : 79d528: 43 0f b6 4c 06 10 movzbl 0x10(%r14,%r8,1),%ecx 0.00 : 79d52e: 43 8b 54 06 14 mov 0x14(%r14,%r8,1),%edx 0.00 : 79d533: 4b 8b 74 06 08 mov 0x8(%r14,%r8,1),%rsi : *a++ = *b; 0.00 : 79d538: 4b 89 04 06 mov %rax,(%r14,%r8,1) 0.00 : 79d53c: 4b 8b 44 01 08 mov 0x8(%r9,%r8,1),%rax 0.00 : 79d541: 4b 89 44 06 08 mov %rax,0x8(%r14,%r8,1) 0.00 : 79d546: 4b 8b 44 01 10 mov 0x10(%r9,%r8,1),%rax 0.00 : 79d54b: 4b 89 44 06 10 mov %rax,0x10(%r14,%r8,1) : *b++ = t; 0.00 : 79d550: 43 89 54 01 14 mov %edx,0x14(%r9,%r8,1) 0.00 : 79d555: 43 88 4c 01 10 mov %cl,0x10(%r9,%r8,1) 0.00 : 79d55a: 4b 89 74 01 08 mov %rsi,0x8(%r9,%r8,1) 0.00 : 79d55f: 4b 89 3c 01 mov %rdi,(%r9,%r8,1) : } while (--n > 0); 0.00 : 79d563: 49 83 c0 18 add $0x18,%r8 0.00 : 79d567: 49 83 eb 01 sub $0x1,%r11 0.00 : 79d56b: 75 b3 jne 79d520 : pn = a + n; : r = Min(pa - a, pb - pa); : vecswap(a, pb - r, r); : r = Min(pd - pc, pn - pd - 1); : vecswap(pb, pn - r, r); : if ((r = pb - pa) > 1) 0.00 : 79d56d: 41 83 fa 01 cmp $0x1,%r10d 0.00 : 79d571: 7e 14 jle 79d587 : qsort_tuple(a, r, cmp_tuple, state); 0.00 : 79d573: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 79d577: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 79d57b: 49 63 f2 movslq %r10d,%rsi 0.00 : 79d57e: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 79d582: e8 79 fd ff ff callq 79d300 : if ((r = pd - pc) > 1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:161 0.61 : 79d587: 83 fb 01 cmp $0x1,%ebx 0.00 : 79d58a: 0f 8e c8 00 00 00 jle 79d658 : { : /* Iterate rather than recurse to save stack space */ : a = pn - r; 0.00 : 79d590: 4c 63 e3 movslq %ebx,%r12 0.12 : 79d593: 48 8b 5d c8 mov -0x38(%rbp),%rbx 0.49 : 79d597: 4b 8d 04 64 lea (%r12,%r12,2),%rax 0.00 : 79d59b: 48 c1 e0 03 shl $0x3,%rax 0.00 : 79d59f: 48 29 c3 sub %rax,%rbx : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.24 : 79d5a2: 0f b6 05 e7 ca 41 00 movzbl 0x41cae7(%rip),%eax # bba090 : if ((r = pb - pa) > 1) : qsort_tuple(a, r, cmp_tuple, state); : if ((r = pd - pc) > 1) : { : /* Iterate rather than recurse to save stack space */ : a = pn - r; 0.00 : 79d5a9: 48 89 5d b0 mov %rbx,-0x50(%rbp) : int d, : r, : presorted; : : loop: : CHECK_FOR_INTERRUPTS(); 0.12 : 79d5ad: 84 c0 test %al,%al 0.00 : 79d5af: 0f 84 7a fd ff ff je 79d32f 0.00 : 79d5b5: e8 e6 ec ef ff callq 69c2a0 : if (n < 7) 0.00 : 79d5ba: 49 83 fc 06 cmp $0x6,%r12 0.00 : 79d5be: 0f 87 75 fd ff ff ja 79d339 : { : for (pm = a + 1; pm < a + n; pm++) 0.00 : 79d5c4: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.37 : 79d5c8: 4c 8b 6d b0 mov -0x50(%rbp),%r13 0.00 : 79d5cc: 4b 8d 04 64 lea (%r12,%r12,2),%rax 0.00 : 79d5d0: 4c 8d 34 c2 lea (%rdx,%rax,8),%r14 0.12 : 79d5d4: 49 83 c5 18 add $0x18,%r13 0.00 : 79d5d8: 4c 89 eb mov %r13,%rbx 0.12 : 79d5db: 4d 39 f5 cmp %r14,%r13 0.00 : 79d5de: 73 78 jae 79d658 : for (pl = pm; pl > a && cmp_tuple(pl - 1, pl, state) > 0; pl--) 0.37 : 79d5e0: 4c 3b 6d b0 cmp -0x50(%rbp),%r13 0.00 : 79d5e4: 77 51 ja 79d637 0.00 : 79d5e6: eb 64 jmp 79d64c 0.00 : 79d5e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79d5ef: 00 : swap(pl, pl - 1); 0.12 : 79d5f0: 49 8b 04 24 mov (%r12),%rax 0.00 : 79d5f4: 8b 53 14 mov 0x14(%rbx),%edx 0.00 : 79d5f7: 0f b6 4b 10 movzbl 0x10(%rbx),%ecx 0.00 : 79d5fb: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.49 : 79d5ff: 48 8b 3b mov (%rbx),%rdi 0.00 : 79d602: 4c 89 e3 mov %r12,%rbx 0.00 : 79d605: 49 89 44 24 18 mov %rax,0x18(%r12) 0.12 : 79d60a: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.37 : 79d60f: 49 89 74 24 08 mov %rsi,0x8(%r12) 0.00 : 79d614: 49 89 3c 24 mov %rdi,(%r12) 0.24 : 79d618: 49 89 44 24 20 mov %rax,0x20(%r12) 0.12 : 79d61d: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.24 : 79d622: 41 89 54 24 14 mov %edx,0x14(%r12) 0.37 : 79d627: 41 88 4c 24 10 mov %cl,0x10(%r12) 0.12 : 79d62c: 49 89 44 24 28 mov %rax,0x28(%r12) : loop: : CHECK_FOR_INTERRUPTS(); : if (n < 7) : { : for (pm = a + 1; pm < a + n; pm++) : for (pl = pm; pl > a && cmp_tuple(pl - 1, pl, state) > 0; pl--) 0.00 : 79d631: 4c 3b 65 b0 cmp -0x50(%rbp),%r12 0.00 : 79d635: 76 15 jbe 79d64c 0.37 : 79d637: 4c 8d 63 e8 lea -0x18(%rbx),%r12 0.12 : 79d63b: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 79d63f: 48 89 de mov %rbx,%rsi 0.00 : 79d642: 4c 89 e7 mov %r12,%rdi 0.24 : 79d645: ff 55 a8 callq *-0x58(%rbp) 0.37 : 79d648: 85 c0 test %eax,%eax 0.00 : 79d64a: 7f a4 jg 79d5f0 : : loop: : CHECK_FOR_INTERRUPTS(); : if (n < 7) : { : for (pm = a + 1; pm < a + n; pm++) 0.24 : 79d64c: 49 83 c5 18 add $0x18,%r13 0.12 : 79d650: 4d 39 f5 cmp %r14,%r13 0.00 : 79d653: 4c 89 eb mov %r13,%rbx 0.00 : 79d656: 72 88 jb 79d5e0 : a = pn - r; : n = r; : goto loop; : } : /* qsort_tuple(pn - r, r, cmp_tuple, state);*/ : } 0.24 : 79d658: 48 83 c4 38 add $0x38,%rsp 0.37 : 79d65c: 5b pop %rbx 0.12 : 79d65d: 41 5c pop %r12 0.00 : 79d65f: 41 5d pop %r13 0.00 : 79d661: 41 5e pop %r14 0.00 : 79d663: 41 5f pop %r15 0.00 : 79d665: c9 leaveq 0.00 : 79d666: c3 retq 0.00 : 79d667: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79d66e: 00 00 : swap(a, pm); : pa = pb = a + 1; : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_tuple(pb, a, state)) <= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 7.80 : 79d670: 48 8b 55 a0 mov -0x60(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 0.98 : 79d674: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.61 : 79d678: 4c 89 f7 mov %r14,%rdi 0.24 : 79d67b: ff 55 a8 callq *-0x58(%rbp) 3.78 : 79d67e: 85 c0 test %eax,%eax 0.61 : 79d680: 89 c3 mov %eax,%ebx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:128 5.12 : 79d682: 7f 5f jg 79d6e3 0.24 : 79d684: e9 d2 00 00 00 jmpq 79d75b 0.00 : 79d689: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : pb++; : } : while (pb <= pc && (r = cmp_tuple(pc, a, state)) >= 0) : { : CHECK_FOR_INTERRUPTS(); : if (r == 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:141 4.63 : 79d690: 85 db test %ebx,%ebx 0.00 : 79d692: 75 42 jne 79d6d6 : { : swap(pc, pd); 0.00 : 79d694: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 79d698: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 79d69c: 41 0f b6 4c 24 10 movzbl 0x10(%r12),%ecx 0.00 : 79d6a2: 41 8b 54 24 14 mov 0x14(%r12),%edx 0.00 : 79d6a7: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 79d6ac: 49 89 04 24 mov %rax,(%r12) 0.00 : 79d6b0: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 79d6b4: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 79d6b9: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 79d6bd: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 79d6c2: 41 89 55 14 mov %edx,0x14(%r13) 0.00 : 79d6c6: 41 88 4d 10 mov %cl,0x10(%r13) 0.00 : 79d6ca: 49 89 75 08 mov %rsi,0x8(%r13) 0.00 : 79d6ce: 49 89 7d 00 mov %rdi,0x0(%r13) : pd--; 0.00 : 79d6d2: 49 83 ed 18 sub $0x18,%r13 : } : pc--; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:146 6.10 : 79d6d6: 49 83 ec 18 sub $0x18,%r12 : swap(pa, pb); : pa++; : } : pb++; : } : while (pb <= pc && (r = cmp_tuple(pc, a, state)) >= 0) 0.00 : 79d6da: 4d 39 f4 cmp %r14,%r12 0.00 : 79d6dd: 0f 82 3a fd ff ff jb 79d41d 0.24 : 79d6e3: 48 8b 55 a0 mov -0x60(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 2.44 : 79d6e7: 48 8b 75 b0 mov -0x50(%rbp),%rsi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 6.59 : 79d6eb: 4c 89 e7 mov %r12,%rdi 0.37 : 79d6ee: ff 55 a8 callq *-0x58(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 1.71 : 79d6f1: 85 c0 test %eax,%eax 0.49 : 79d6f3: 89 c3 mov %eax,%ebx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:138 7.20 : 79d6f5: 78 19 js 79d710 : { : CHECK_FOR_INTERRUPTS(); 0.12 : 79d6f7: 0f b6 05 92 c9 41 00 movzbl 0x41c992(%rip),%eax # bba090 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:140 0.85 : 79d6fe: 84 c0 test %al,%al 0.12 : 79d700: 74 8e je 79d690 0.00 : 79d702: e8 99 eb ef ff callq 69c2a0 0.00 : 79d707: eb 87 jmp 79d690 0.00 : 79d709: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : pc--; : } : if (pb > pc) : break; : swap(pb, pc); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:150 1.34 : 79d710: 49 8b 04 24 mov (%r12),%rax 1.34 : 79d714: 49 8b 7f e8 mov -0x18(%r15),%rdi 1.59 : 79d718: 41 0f b6 4f f8 movzbl -0x8(%r15),%ecx 0.24 : 79d71d: 41 8b 57 fc mov -0x4(%r15),%edx 1.46 : 79d721: 49 8b 77 f0 mov -0x10(%r15),%rsi 0.24 : 79d725: 49 89 47 e8 mov %rax,-0x18(%r15) 1.95 : 79d729: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.37 : 79d72e: 49 89 47 f0 mov %rax,-0x10(%r15) 3.17 : 79d732: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.61 : 79d737: 49 89 47 f8 mov %rax,-0x8(%r15) 0.61 : 79d73b: 41 89 54 24 14 mov %edx,0x14(%r12) 0.85 : 79d740: 41 88 4c 24 10 mov %cl,0x10(%r12) 0.73 : 79d745: 49 89 74 24 08 mov %rsi,0x8(%r12) 0.98 : 79d74a: 49 89 3c 24 mov %rdi,(%r12) : pb++; : pc--; 0.00 : 79d74e: 49 83 ec 18 sub $0x18,%r12 : { : CHECK_FOR_INTERRUPTS(); : if (r == 0) : { : swap(pa, pb); : pa++; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:134 2.56 : 79d752: 49 83 c7 18 add $0x18,%r15 0.85 : 79d756: e9 b5 fc ff ff jmpq 79d410 : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_tuple(pb, a, state)) <= 0) : { : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:130 2.07 : 79d75b: 0f b6 05 2e c9 41 00 movzbl 0x41c92e(%rip),%eax # bba090 0.49 : 79d762: 84 c0 test %al,%al 0.00 : 79d764: 0f 85 83 00 00 00 jne 79d7ed : if (r == 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:131 2.80 : 79d76a: 85 db test %ebx,%ebx 0.00 : 79d76c: 75 e4 jne 79d752 : { : swap(pa, pb); 0.00 : 79d76e: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 79d772: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 79d776: 8b 50 14 mov 0x14(%rax),%edx 0.00 : 79d779: 0f b6 48 10 movzbl 0x10(%rax),%ecx 0.00 : 79d77d: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 79d781: 48 8b 38 mov (%rax),%rdi 0.00 : 79d784: 49 8b 47 e8 mov -0x18(%r15),%rax 0.00 : 79d788: 48 89 03 mov %rax,(%rbx) 0.00 : 79d78b: 49 8b 47 f0 mov -0x10(%r15),%rax 0.00 : 79d78f: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 79d793: 49 8b 47 f8 mov -0x8(%r15),%rax 0.00 : 79d797: 48 89 43 10 mov %rax,0x10(%rbx) : pa++; 0.00 : 79d79b: 48 83 c3 18 add $0x18,%rbx : while (pb <= pc && (r = cmp_tuple(pb, a, state)) <= 0) : { : CHECK_FOR_INTERRUPTS(); : if (r == 0) : { : swap(pa, pb); 0.00 : 79d79f: 41 89 57 fc mov %edx,-0x4(%r15) 0.00 : 79d7a3: 41 88 4f f8 mov %cl,-0x8(%r15) 0.00 : 79d7a7: 49 89 77 f0 mov %rsi,-0x10(%r15) 0.00 : 79d7ab: 49 89 7f e8 mov %rdi,-0x18(%r15) : pa++; 0.00 : 79d7af: 48 89 5d b8 mov %rbx,-0x48(%rbp) 0.00 : 79d7b3: eb 9d jmp 79d752 : return; : pm = a + (n / 2); : if (n > 7) : { : pl = a; : pn = a + (n - 1); 0.00 : 79d7b5: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.12 : 79d7b9: 4b 8d 44 64 fd lea -0x3(%r12,%r12,2),%rax : if (n > 40) 0.00 : 79d7be: 49 83 fc 28 cmp $0x28,%r12 : return; : pm = a + (n / 2); : if (n > 7) : { : pl = a; : pn = a + (n - 1); 0.12 : 79d7c2: 48 8d 04 c3 lea (%rbx,%rax,8),%rax : if (n > 40) 0.00 : 79d7c6: 49 89 df mov %rbx,%r15 : return; : pm = a + (n / 2); : if (n > 7) : { : pl = a; : pn = a + (n - 1); 0.00 : 79d7c9: 48 89 45 c0 mov %rax,-0x40(%rbp) : if (n > 40) 0.00 : 79d7cd: 48 89 c2 mov %rax,%rdx 0.00 : 79d7d0: 77 25 ja 79d7f7 : d = (n / 8); : pl = med3_tuple(pl, pl + d, pl + 2 * d, cmp_tuple, state); : pm = med3_tuple(pm - d, pm, pm + d, cmp_tuple, state); : pn = med3_tuple(pn - 2 * d, pn - d, pn, cmp_tuple, state); : } : pm = med3_tuple(pl, pm, pn, cmp_tuple, state); 0.00 : 79d7d2: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.12 : 79d7d6: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 79d7da: 4c 89 ee mov %r13,%rsi 0.00 : 79d7dd: 4c 89 ff mov %r15,%rdi 0.00 : 79d7e0: e8 4b f2 ff ff callq 79ca30 0.12 : 79d7e5: 49 89 c5 mov %rax,%r13 0.00 : 79d7e8: e9 cc fb ff ff jmpq 79d3b9 : pc = pd = a + (n - 1); : for (;;) : { : while (pb <= pc && (r = cmp_tuple(pb, a, state)) <= 0) : { : CHECK_FOR_INTERRUPTS(); 0.00 : 79d7ed: e8 ae ea ef ff callq 69c2a0 0.00 : 79d7f2: e9 73 ff ff ff jmpq 79d76a : { : pl = a; : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); 0.12 : 79d7f7: 4c 89 e0 mov %r12,%rax : pl = med3_tuple(pl, pl + d, pl + 2 * d, cmp_tuple, state); 0.12 : 79d7fa: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 79d7fe: 48 8b 75 b0 mov -0x50(%rbp),%rsi : { : pl = a; : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); 0.00 : 79d802: 48 c1 e8 03 shr $0x3,%rax : pl = med3_tuple(pl, pl + d, pl + 2 * d, cmp_tuple, state); 0.00 : 79d806: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 79d80a: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 79d80e: 8d 1c 00 lea (%rax,%rax,1),%ebx 0.00 : 79d811: 48 98 cltq 0.00 : 79d813: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 79d817: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 79d81b: 48 63 db movslq %ebx,%rbx 0.00 : 79d81e: 48 8d 1c 5b lea (%rbx,%rbx,2),%rbx 0.00 : 79d822: 4c 8d 24 c5 00 00 00 lea 0x0(,%rax,8),%r12 0.00 : 79d829: 00 0.00 : 79d82a: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 79d82e: 4c 01 e6 add %r12,%rsi 0.00 : 79d831: 48 01 da add %rbx,%rdx 0.00 : 79d834: e8 f7 f1 ff ff callq 79ca30 : pm = med3_tuple(pm - d, pm, pm + d, cmp_tuple, state); 0.00 : 79d839: 4b 8d 54 25 00 lea 0x0(%r13,%r12,1),%rdx 0.00 : 79d83e: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 79d842: 49 f7 dc neg %r12 0.00 : 79d845: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 79d849: 4b 8d 7c 25 00 lea 0x0(%r13,%r12,1),%rdi 0.00 : 79d84e: 4c 89 ee mov %r13,%rsi : pl = a; : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); : pl = med3_tuple(pl, pl + d, pl + 2 * d, cmp_tuple, state); 0.00 : 79d851: 49 89 c7 mov %rax,%r15 : pm = med3_tuple(pm - d, pm, pm + d, cmp_tuple, state); 0.00 : 79d854: e8 d7 f1 ff ff callq 79ca30 : pn = med3_tuple(pn - 2 * d, pn - d, pn, cmp_tuple, state); 0.00 : 79d859: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 79d85d: 48 8b 7d c0 mov -0x40(%rbp),%rdi : pn = a + (n - 1); : if (n > 40) : { : d = (n / 8); : pl = med3_tuple(pl, pl + d, pl + 2 * d, cmp_tuple, state); : pm = med3_tuple(pm - d, pm, pm + d, cmp_tuple, state); 0.00 : 79d861: 49 89 c5 mov %rax,%r13 : pn = med3_tuple(pn - 2 * d, pn - d, pn, cmp_tuple, state); 0.00 : 79d864: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 79d868: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 79d86c: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 79d870: 4c 01 e6 add %r12,%rsi 0.00 : 79d873: 48 29 df sub %rbx,%rdi 0.00 : 79d876: e8 b5 f1 ff ff callq 79ca30 0.00 : 79d87b: 48 89 c2 mov %rax,%rdx 0.00 : 79d87e: e9 4f ff ff ff jmpq 79d7d2 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:497 3.22 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:710 3.22 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:710 3.09 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:490 2.97 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:453 2.85 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:496 2.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:454 2.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:454 2.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:500 2.48 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:496 2.35 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:468 2.35 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:490 2.23 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:453 2.23 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:468 2.10 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:597 2.10 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:710 1.98 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:453 1.98 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:596 1.98 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:598 1.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:453 1.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:587 1.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:590 1.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:490 1.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:497 1.73 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:453 1.73 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:611 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:697 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:596 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:603 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:610 1.49 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:610 1.49 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:616 1.36 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:616 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:592 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:607 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:453 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:500 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:598 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:616 0.99 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:455 0.99 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:592 0.99 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:497 0.99 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:597 0.99 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:598 0.99 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:607 0.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:497 0.74 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:490 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:453 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:456 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:603 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:607 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:710 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004966b0 : : static void : heapgettup(HeapScanDesc scan, : ScanDirection dir, : int nkeys, : ScanKey key) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:453 2.97 : 4966b0: 55 push %rbp : HeapTuple tuple = &(scan->rs_ctup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:454 2.60 : 4966b1: 48 8d 47 48 lea 0x48(%rdi),%rax : static void : heapgettup(HeapScanDesc scan, : ScanDirection dir, : int nkeys, : ScanKey key) : { 0.12 : 4966b5: 48 89 e5 mov %rsp,%rbp 0.12 : 4966b8: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:453 2.23 : 4966ba: 41 56 push %r14 1.11 : 4966bc: 41 55 push %r13 1.73 : 4966be: 41 54 push %r12 0.62 : 4966c0: 49 89 fc mov %rdi,%r12 0.25 : 4966c3: 53 push %rbx 1.98 : 4966c4: 48 83 ec 58 sub $0x58,%rsp 0.50 : 4966c8: 89 55 9c mov %edx,-0x64(%rbp) 1.86 : 4966cb: 48 89 4d 90 mov %rcx,-0x70(%rbp) : HeapTuple tuple = &(scan->rs_ctup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:454 2.60 : 4966cf: 48 89 45 a0 mov %rax,-0x60(%rbp) : Snapshot snapshot = scan->rs_snapshot; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:455 0.99 : 4966d3: 48 8b 57 08 mov 0x8(%rdi),%rdx : bool backward = ScanDirectionIsBackward(dir); 0.00 : 4966d7: 83 fe ff cmp $0xffffffff,%esi /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:456 0.62 : 4966da: 0f 94 45 b3 sete -0x4d(%rbp) : ItemId lpp; : : /* : * calculate next starting lineoff, given scan direction : */ : if (ScanDirectionIsForward(dir)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:468 2.23 : 4966de: 83 fe 01 cmp $0x1,%esi : ScanDirection dir, : int nkeys, : ScanKey key) : { : HeapTuple tuple = &(scan->rs_ctup); : Snapshot snapshot = scan->rs_snapshot; 0.00 : 4966e1: 48 89 55 a8 mov %rdx,-0x58(%rbp) : ItemId lpp; : : /* : * calculate next starting lineoff, given scan direction : */ : if (ScanDirectionIsForward(dir)) 2.35 : 4966e5: 0f 84 55 02 00 00 je 496940 : lines = PageGetMaxOffsetNumber(dp); : /* page and lineoff now reference the physically next tid */ : : linesleft = lines - lineoff + 1; : } : else if (backward) 0.00 : 4966eb: 80 7d b3 00 cmpb $0x0,-0x4d(%rbp) 0.00 : 4966ef: 0f 84 ab 01 00 00 je 4968a0 : { : if (!scan->rs_inited) 0.00 : 4966f5: 80 7f 41 00 cmpb $0x0,0x41(%rdi) 0.00 : 4966f9: 0f 84 d0 02 00 00 je 4969cf : heapgetpage(scan, page); : } : else : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ 0.00 : 4966ff: 8b 47 60 mov 0x60(%rdi),%eax 0.00 : 496702: 89 45 b4 mov %eax,-0x4c(%rbp) : } : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE); 0.00 : 496705: 41 8b 7c 24 64 mov 0x64(%r12),%edi 0.00 : 49670a: be 01 00 00 00 mov $0x1,%esi 0.00 : 49670f: e8 fc df 1d 00 callq 674710 : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496714: 41 8b 7c 24 64 mov 0x64(%r12),%edi 0.00 : 496719: 85 ff test %edi,%edi 0.00 : 49671b: 0f 88 84 06 00 00 js 496da5 0.00 : 496721: 8d 47 ff lea -0x1(%rdi),%eax 0.00 : 496724: 48 8b 15 cd 93 72 00 mov 0x7293cd(%rip),%rdx # bbfaf8 0.00 : 49672b: 48 98 cltq 0.00 : 49672d: 48 c1 e0 0d shl $0xd,%rax 0.00 : 496731: 48 01 d0 add %rdx,%rax 0.00 : 496734: 48 89 45 b8 mov %rax,-0x48(%rbp) : lines = PageGetMaxOffsetNumber(dp); 0.00 : 496738: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 49673c: 31 d2 xor %edx,%edx 0.00 : 49673e: 0f b7 41 0c movzwl 0xc(%rcx),%eax 0.00 : 496742: 66 83 f8 18 cmp $0x18,%ax 0.00 : 496746: 76 0e jbe 496756 0.00 : 496748: 0f b7 c0 movzwl %ax,%eax 0.00 : 49674b: 48 83 e8 18 sub $0x18,%rax 0.00 : 49674f: 48 89 c2 mov %rax,%rdx 0.00 : 496752: 48 c1 ea 02 shr $0x2,%rdx : : if (!scan->rs_inited) 0.00 : 496756: 41 80 7c 24 41 00 cmpb $0x0,0x41(%r12) 0.00 : 49675c: 0f 85 31 06 00 00 jne 496d93 : { : lineoff = lines; /* final offnum */ 0.00 : 496762: 66 89 55 c6 mov %dx,-0x3a(%rbp) : scan->rs_inited = true; 0.00 : 496766: 41 c6 44 24 41 01 movb $0x1,0x41(%r12) : lineoff = /* previous offnum */ : OffsetNumberPrev(ItemPointerGetOffsetNumber(&(tuple->t_self))); : } : /* page and lineoff now reference the physically previous tid */ : : linesleft = lineoff; 0.00 : 49676c: 0f b7 45 c6 movzwl -0x3a(%rbp),%eax 0.00 : 496770: 44 0f b7 7d c6 movzwl -0x3a(%rbp),%r15d 0.00 : 496775: 48 8d 58 ff lea -0x1(%rax),%rbx : : /* : * advance the scan until we find a qualifying tuple or run out of stuff : * to scan : */ : lpp = PageGetItemId(dp, lineoff); 0.00 : 496779: 48 8b 45 b8 mov -0x48(%rbp),%rax : : CheckForSerializableConflictOut(valid, scan->rs_rd, tuple, : scan->rs_cbuf, snapshot); : : if (valid && key != NULL) : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 49677d: 8b 55 9c mov -0x64(%rbp),%edx : : /* : * advance the scan until we find a qualifying tuple or run out of stuff : * to scan : */ : lpp = PageGetItemId(dp, lineoff); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:587 1.86 : 496780: 4c 8d 6c 98 18 lea 0x18(%rax,%rbx,4),%r13 : : CheckForSerializableConflictOut(valid, scan->rs_rd, tuple, : scan->rs_cbuf, snapshot); : : if (valid && key != NULL) : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:611 1.73 : 496785: 83 ea 01 sub $0x1,%edx 0.00 : 496788: 89 55 8c mov %edx,-0x74(%rbp) 0.00 : 49678b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * to scan : */ : lpp = PageGetItemId(dp, lineoff); : for (;;) : { : while (linesleft > 0) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:590 1.86 : 496790: 45 85 ff test %r15d,%r15d 0.00 : 496793: 7e 30 jle 4967c5 : { : if (ItemIdIsNormal(lpp)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:592 1.24 : 496795: 41 8b 45 00 mov 0x0(%r13),%eax 0.99 : 496799: 25 00 80 01 00 and $0x18000,%eax 0.37 : 49679e: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 4967a3: 0f 84 97 02 00 00 je 496a40 : } : : /* : * otherwise move to the next item on the page : */ : --linesleft; 0.00 : 4967a9: 41 83 ef 01 sub $0x1,%r15d : if (backward) 0.00 : 4967ad: 80 7d b3 00 cmpb $0x0,-0x4d(%rbp) 0.00 : 4967b1: 0f 84 79 02 00 00 je 496a30 : { : --lpp; /* move back in this page's ItemId array */ 0.00 : 4967b7: 49 83 ed 04 sub $0x4,%r13 : --lineoff; 0.00 : 4967bb: 66 83 6d c6 01 subw $0x1,-0x3a(%rbp) : * to scan : */ : lpp = PageGetItemId(dp, lineoff); : for (;;) : { : while (linesleft > 0) 0.00 : 4967c0: 45 85 ff test %r15d,%r15d 0.00 : 4967c3: 7f d0 jg 496795 : : /* : * if we get here, it means we've exhausted the items on this page and : * it's time to move to the next. : */ : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); 0.12 : 4967c5: 31 f6 xor %esi,%esi 0.00 : 4967c7: e8 44 df 1d 00 callq 674710 : : /* : * advance to next/prior page and detect end of scan : */ : if (backward) 0.00 : 4967cc: 80 7d b3 00 cmpb $0x0,-0x4d(%rbp) 0.00 : 4967d0: 0f 84 4a 04 00 00 je 496c20 : { : finished = (page == scan->rs_startblock) || 0.00 : 4967d6: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 4967d9: 41 39 54 24 2c cmp %edx,0x2c(%r12) 0.00 : 4967de: 74 1e je 4967fe 0.00 : 4967e0: 41 8b 44 24 34 mov 0x34(%r12),%eax 0.00 : 4967e5: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 4967e8: 0f 84 da 01 00 00 je 4969c8 0.00 : 4967ee: 83 e8 01 sub $0x1,%eax 0.00 : 4967f1: 85 c0 test %eax,%eax 0.00 : 4967f3: 41 89 44 24 34 mov %eax,0x34(%r12) 0.00 : 4967f8: 0f 85 ca 01 00 00 jne 4969c8 0.00 : 4967fe: bb 01 00 00 00 mov $0x1,%ebx : (scan->rs_numblocks != InvalidBlockNumber ? --scan->rs_numblocks <= 0 : false); : if (page == 0) 0.00 : 496803: 44 8b 6d b4 mov -0x4c(%rbp),%r13d 0.00 : 496807: 45 85 ed test %r13d,%r13d 0.00 : 49680a: 75 08 jne 496814 : page = scan->rs_nblocks; 0.00 : 49680c: 41 8b 4c 24 28 mov 0x28(%r12),%ecx 0.00 : 496811: 89 4d b4 mov %ecx,-0x4c(%rbp) : page--; 0.00 : 496814: 83 6d b4 01 subl $0x1,-0x4c(%rbp) : } : : /* : * return NULL if we've exhausted all the pages : */ : if (finished) 0.00 : 496818: 84 db test %bl,%bl 0.00 : 49681a: 0f 85 5a 04 00 00 jne 496c7a : tuple->t_data = NULL; : scan->rs_inited = false; : return; : } : : heapgetpage(scan, page); 0.00 : 496820: 8b 75 b4 mov -0x4c(%rbp),%esi 0.00 : 496823: 4c 89 e7 mov %r12,%rdi 0.00 : 496826: e8 35 f6 ff ff callq 495e60 : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE); 0.37 : 49682b: 41 8b 7c 24 64 mov 0x64(%r12),%edi 0.37 : 496830: be 01 00 00 00 mov $0x1,%esi 0.00 : 496835: e8 d6 de 1d 00 callq 674710 : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 49683a: 41 8b 7c 24 64 mov 0x64(%r12),%edi 0.00 : 49683f: 85 ff test %edi,%edi 0.00 : 496841: 0f 88 b1 04 00 00 js 496cf8 0.00 : 496847: 8d 47 ff lea -0x1(%rdi),%eax 0.25 : 49684a: 48 8b 15 a7 92 72 00 mov 0x7292a7(%rip),%rdx # bbfaf8 0.00 : 496851: 48 98 cltq 0.00 : 496853: 48 c1 e0 0d shl $0xd,%rax 0.00 : 496857: 48 01 d0 add %rdx,%rax 0.12 : 49685a: 48 89 45 b8 mov %rax,-0x48(%rbp) : lines = PageGetMaxOffsetNumber((Page) dp); 0.00 : 49685e: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 496862: 31 d2 xor %edx,%edx 0.37 : 496864: 0f b7 41 0c movzwl 0xc(%rcx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:697 1.61 : 496868: 66 83 f8 18 cmp $0x18,%ax 0.00 : 49686c: 76 0e jbe 49687c 0.00 : 49686e: 0f b7 c0 movzwl %ax,%eax 0.00 : 496871: 48 83 e8 18 sub $0x18,%rax 0.00 : 496875: 48 89 c2 mov %rax,%rdx 0.00 : 496878: 48 c1 ea 02 shr $0x2,%rdx : linesleft = lines; : if (backward) 0.00 : 49687c: 80 7d b3 00 cmpb $0x0,-0x4d(%rbp) 0.00 : 496880: 0f 84 42 04 00 00 je 496cc8 : { : lineoff = lines; : lpp = PageGetItemId(dp, lines); 0.00 : 496886: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 49688a: 48 63 c2 movslq %edx,%rax : dp = (Page) BufferGetPage(scan->rs_cbuf); : lines = PageGetMaxOffsetNumber((Page) dp); : linesleft = lines; : if (backward) : { : lineoff = lines; 0.00 : 49688d: 66 89 55 c6 mov %dx,-0x3a(%rbp) : lpp = PageGetItemId(dp, lines); 0.00 : 496891: 41 89 d7 mov %edx,%r15d 0.00 : 496894: 4c 8d 6c 81 14 lea 0x14(%rcx,%rax,4),%r13 0.00 : 496899: e9 f2 fe ff ff jmpq 496790 0.00 : 49689e: 66 90 xchg %ax,%ax : else : { : /* : * ``no movement'' scan direction: refetch prior tuple : */ : if (!scan->rs_inited) 0.00 : 4968a0: 80 7f 41 00 cmpb $0x0,0x41(%rdi) 0.00 : 4968a4: 74 7a je 496920 : Assert(!BufferIsValid(scan->rs_cbuf)); : tuple->t_data = NULL; : return; : } : : page = ItemPointerGetBlockNumber(&(tuple->t_self)); 0.00 : 4968a6: 0f b7 77 4c movzwl 0x4c(%rdi),%esi 0.00 : 4968aa: 0f b7 47 4e movzwl 0x4e(%rdi),%eax 0.00 : 4968ae: c1 e6 10 shl $0x10,%esi 0.00 : 4968b1: 09 c6 or %eax,%esi : if (page != scan->rs_cblock) 0.00 : 4968b3: 39 77 60 cmp %esi,0x60(%rdi) 0.00 : 4968b6: 74 05 je 4968bd : heapgetpage(scan, page); 0.00 : 4968b8: e8 a3 f5 ff ff callq 495e60 : : /* Since the tuple was previously fetched, needn't lock page here */ : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 4968bd: 41 8b 44 24 64 mov 0x64(%r12),%eax 0.00 : 4968c2: 85 c0 test %eax,%eax 0.00 : 4968c4: 0f 88 0f 05 00 00 js 496dd9 0.00 : 4968ca: 83 e8 01 sub $0x1,%eax 0.00 : 4968cd: 48 63 c8 movslq %eax,%rcx 0.00 : 4968d0: 48 c1 e1 0d shl $0xd,%rcx 0.00 : 4968d4: 48 03 0d 1d 92 72 00 add 0x72921d(%rip),%rcx # bbfaf8 : lineoff = ItemPointerGetOffsetNumber(&(tuple->t_self)); : lpp = PageGetItemId(dp, lineoff); 0.00 : 4968db: 41 0f b7 44 24 50 movzwl 0x50(%r12),%eax : Assert(ItemIdIsNormal(lpp)); : : tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); 0.00 : 4968e1: 48 83 c0 03 add $0x3,%rax 0.00 : 4968e5: 0f b7 54 81 08 movzwl 0x8(%rcx,%rax,4),%edx 0.00 : 4968ea: 81 e2 ff 7f 00 00 and $0x7fff,%edx 0.00 : 4968f0: 48 8d 14 11 lea (%rcx,%rdx,1),%rdx 0.00 : 4968f4: 49 89 54 24 58 mov %rdx,0x58(%r12) : tuple->t_len = ItemIdGetLength(lpp); 0.00 : 4968f9: 0f b7 44 81 0a movzwl 0xa(%rcx,%rax,4),%eax 0.00 : 4968fe: 66 d1 e8 shr %ax 0.00 : 496901: 0f b7 c0 movzwl %ax,%eax 0.00 : 496904: 41 89 44 24 48 mov %eax,0x48(%r12) : { : lineoff = FirstOffsetNumber; : lpp = PageGetItemId(dp, FirstOffsetNumber); : } : } : } 0.00 : 496909: 48 83 c4 58 add $0x58,%rsp 0.00 : 49690d: 5b pop %rbx 0.00 : 49690e: 41 5c pop %r12 0.00 : 496910: 41 5d pop %r13 0.00 : 496912: 41 5e pop %r14 0.00 : 496914: 41 5f pop %r15 0.00 : 496916: c9 leaveq 0.00 : 496917: c3 retq 0.00 : 496918: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49691f: 00 : * ``no movement'' scan direction: refetch prior tuple : */ : if (!scan->rs_inited) : { : Assert(!BufferIsValid(scan->rs_cbuf)); : tuple->t_data = NULL; 0.00 : 496920: 49 c7 44 24 58 00 00 movq $0x0,0x58(%r12) 0.00 : 496927: 00 00 : { : lineoff = FirstOffsetNumber; : lpp = PageGetItemId(dp, FirstOffsetNumber); : } : } : } 0.00 : 496929: 48 83 c4 58 add $0x58,%rsp 0.00 : 49692d: 5b pop %rbx 0.00 : 49692e: 41 5c pop %r12 0.00 : 496930: 41 5d pop %r13 0.00 : 496932: 41 5e pop %r14 0.00 : 496934: 41 5f pop %r15 0.00 : 496936: c9 leaveq 0.00 : 496937: c3 retq 0.00 : 496938: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49693f: 00 : /* : * calculate next starting lineoff, given scan direction : */ : if (ScanDirectionIsForward(dir)) : { : if (!scan->rs_inited) 0.25 : 496940: 80 7f 41 00 cmpb $0x0,0x41(%rdi) 0.37 : 496944: 0f 84 b6 00 00 00 je 496a00 : scan->rs_inited = true; : } : else : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ 0.12 : 49694a: 8b 47 60 mov 0x60(%rdi),%eax : lineoff = /* next offnum */ /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:490 3.09 : 49694d: 41 89 f5 mov %esi,%r13d : scan->rs_inited = true; : } : else : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ 0.12 : 496950: 89 45 b4 mov %eax,-0x4c(%rbp) : lineoff = /* next offnum */ 0.25 : 496953: 0f b7 47 50 movzwl 0x50(%rdi),%eax 0.00 : 496957: 83 c0 01 add $0x1,%eax 1.86 : 49695a: 66 89 45 c6 mov %ax,-0x3a(%rbp) 0.74 : 49695e: 0f b7 c0 movzwl %ax,%eax 0.12 : 496961: 41 29 c5 sub %eax,%r13d 0.12 : 496964: 0f b7 45 c6 movzwl -0x3a(%rbp),%eax 2.35 : 496968: 48 8d 58 ff lea -0x1(%rax),%rbx : OffsetNumberNext(ItemPointerGetOffsetNumber(&(tuple->t_self))); : } : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE); 0.50 : 49696c: 41 8b 7c 24 64 mov 0x64(%r12),%edi 0.12 : 496971: be 01 00 00 00 mov $0x1,%esi 0.00 : 496976: e8 95 dd 1d 00 callq 674710 : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.12 : 49697b: 41 8b 7c 24 64 mov 0x64(%r12),%edi 0.00 : 496980: 85 ff test %edi,%edi 0.00 : 496982: 0f 88 37 04 00 00 js 496dbf 0.00 : 496988: 8d 47 ff lea -0x1(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:496 2.48 : 49698b: 48 8b 15 66 91 72 00 mov 0x729166(%rip),%rdx # bbfaf8 0.12 : 496992: 48 98 cltq 0.25 : 496994: 48 c1 e0 0d shl $0xd,%rax 0.25 : 496998: 48 01 d0 add %rdx,%rax 2.85 : 49699b: 48 89 45 b8 mov %rax,-0x48(%rbp) : lines = PageGetMaxOffsetNumber(dp); 0.25 : 49699f: 48 8b 4d b8 mov -0x48(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:497 1.86 : 4969a3: 31 c0 xor %eax,%eax 0.00 : 4969a5: 0f b7 51 0c movzwl 0xc(%rcx),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:497 6.56 : 4969a9: 66 83 fa 18 cmp $0x18,%dx 0.00 : 4969ad: 76 0b jbe 4969ba /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:497 0.87 : 4969af: 0f b7 c2 movzwl %dx,%eax 0.00 : 4969b2: 48 83 e8 18 sub $0x18,%rax 0.99 : 4969b6: 48 c1 e8 02 shr $0x2,%rax : /* page and lineoff now reference the physically next tid */ : : linesleft = lines - lineoff + 1; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:500 2.60 : 4969ba: 46 8d 3c 28 lea (%rax,%r13,1),%r15d 1.11 : 4969be: e9 b6 fd ff ff jmpq 496779 0.00 : 4969c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * advance to next/prior page and detect end of scan : */ : if (backward) : { : finished = (page == scan->rs_startblock) || 0.00 : 4969c8: 31 db xor %ebx,%ebx 0.00 : 4969ca: e9 34 fe ff ff jmpq 496803 : if (!scan->rs_inited) : { : /* : * return null immediately if relation is empty : */ : if (scan->rs_nblocks == 0) 0.00 : 4969cf: 44 8b 7f 28 mov 0x28(%rdi),%r15d 0.00 : 4969d3: 45 85 ff test %r15d,%r15d 0.00 : 4969d6: 0f 84 44 ff ff ff je 496920 : * time, and much more likely that we'll just bollix things for : * forward scanners. : */ : scan->rs_syncscan = false; : /* start from last page of the scan */ : if (scan->rs_startblock > 0) 0.00 : 4969dc: 8b 47 2c mov 0x2c(%rdi),%eax : * Disable reporting to syncscan logic in a backwards scan; it's : * not very likely anyone else is doing the same thing at the same : * time, and much more likely that we'll just bollix things for : * forward scanners. : */ : scan->rs_syncscan = false; 0.00 : 4969df: c6 47 40 00 movb $0x0,0x40(%rdi) : /* start from last page of the scan */ : if (scan->rs_startblock > 0) 0.00 : 4969e3: 85 c0 test %eax,%eax 0.00 : 4969e5: 75 03 jne 4969ea : page = scan->rs_startblock - 1; : else : page = scan->rs_nblocks - 1; 0.00 : 4969e7: 8b 47 28 mov 0x28(%rdi),%eax 0.00 : 4969ea: 83 e8 01 sub $0x1,%eax : heapgetpage(scan, page); 0.00 : 4969ed: 4c 89 e7 mov %r12,%rdi : scan->rs_syncscan = false; : /* start from last page of the scan */ : if (scan->rs_startblock > 0) : page = scan->rs_startblock - 1; : else : page = scan->rs_nblocks - 1; 0.00 : 4969f0: 89 45 b4 mov %eax,-0x4c(%rbp) : heapgetpage(scan, page); 0.00 : 4969f3: 8b 75 b4 mov -0x4c(%rbp),%esi 0.00 : 4969f6: e8 65 f4 ff ff callq 495e60 0.00 : 4969fb: e9 05 fd ff ff jmpq 496705 : if (!scan->rs_inited) : { : /* : * return null immediately if relation is empty : */ : if (scan->rs_nblocks == 0) 0.00 : 496a00: 8b 47 28 mov 0x28(%rdi),%eax 0.00 : 496a03: 85 c0 test %eax,%eax 0.00 : 496a05: 0f 84 15 ff ff ff je 496920 : { : Assert(!BufferIsValid(scan->rs_cbuf)); : tuple->t_data = NULL; : return; : } : page = scan->rs_startblock; /* first page */ 0.00 : 496a0b: 8b 4f 2c mov 0x2c(%rdi),%ecx : heapgetpage(scan, page); : lineoff = FirstOffsetNumber; /* first offnum */ : scan->rs_inited = true; 0.00 : 496a0e: 45 31 ed xor %r13d,%r13d 0.00 : 496a11: 31 db xor %ebx,%ebx : { : Assert(!BufferIsValid(scan->rs_cbuf)); : tuple->t_data = NULL; : return; : } : page = scan->rs_startblock; /* first page */ 0.00 : 496a13: 89 4d b4 mov %ecx,-0x4c(%rbp) : heapgetpage(scan, page); 0.00 : 496a16: 89 ce mov %ecx,%esi 0.00 : 496a18: e8 43 f4 ff ff callq 495e60 : lineoff = FirstOffsetNumber; /* first offnum */ : scan->rs_inited = true; 0.00 : 496a1d: 41 c6 44 24 41 01 movb $0x1,0x41(%r12) 0.00 : 496a23: 66 c7 45 c6 01 00 movw $0x1,-0x3a(%rbp) 0.00 : 496a29: e9 3e ff ff ff jmpq 49696c 0.00 : 496a2e: 66 90 xchg %ax,%ax : --lpp; /* move back in this page's ItemId array */ : --lineoff; : } : else : { : ++lpp; /* move forward in this page's ItemId array */ 0.00 : 496a30: 49 83 c5 04 add $0x4,%r13 : ++lineoff; 0.00 : 496a34: 66 83 45 c6 01 addw $0x1,-0x3a(%rbp) 0.00 : 496a39: e9 52 fd ff ff jmpq 496790 0.00 : 496a3e: 66 90 xchg %ax,%ax : { : if (ItemIdIsNormal(lpp)) : { : bool valid; : : tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:596 1.61 : 496a40: 41 0f b7 45 00 movzwl 0x0(%r13),%eax : ItemPointerSet(&(tuple->t_self), page, lineoff); : : /* : * if current tuple qualifies, return it. : */ : valid = HeapTupleSatisfiesVisibility(tuple, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:603 0.62 : 496a45: 89 fa mov %edi,%edx : { : if (ItemIdIsNormal(lpp)) : { : bool valid; : : tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); 0.00 : 496a47: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 496a4c: 48 03 45 b8 add -0x48(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:596 1.98 : 496a50: 49 89 44 24 58 mov %rax,0x58(%r12) : tuple->t_len = ItemIdGetLength(lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:597 0.99 : 496a55: 41 0f b7 45 02 movzwl 0x2(%r13),%eax 0.00 : 496a5a: 66 d1 e8 shr %ax 0.00 : 496a5d: 0f b7 c0 movzwl %ax,%eax 2.10 : 496a60: 41 89 44 24 48 mov %eax,0x48(%r12) : ItemPointerSet(&(tuple->t_self), page, lineoff); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:598 0.99 : 496a65: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 496a68: c1 e8 10 shr $0x10,%eax 0.00 : 496a6b: 66 41 89 44 24 4c mov %ax,0x4c(%r12) 1.98 : 496a71: 0f b7 4d b4 movzwl -0x4c(%rbp),%ecx 1.11 : 496a75: 66 41 89 4c 24 4e mov %cx,0x4e(%r12) 0.00 : 496a7b: 0f b7 45 c6 movzwl -0x3a(%rbp),%eax 0.00 : 496a7f: 66 41 89 44 24 50 mov %ax,0x50(%r12) : : /* : * if current tuple qualifies, return it. : */ : valid = HeapTupleSatisfiesVisibility(tuple, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:603 1.61 : 496a85: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.37 : 496a89: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 496a8d: ff 16 callq *(%rsi) : snapshot, : scan->rs_cbuf); : : CheckForSerializableConflictOut(valid, scan->rs_rd, tuple, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:607 0.62 : 496a8f: 41 8b 4c 24 64 mov 0x64(%r12),%ecx 0.00 : 496a94: 4c 8b 45 a8 mov -0x58(%rbp),%r8 : ItemPointerSet(&(tuple->t_self), page, lineoff); : : /* : * if current tuple qualifies, return it. : */ : valid = HeapTupleSatisfiesVisibility(tuple, 0.50 : 496a98: 89 c3 mov %eax,%ebx : snapshot, : scan->rs_cbuf); : : CheckForSerializableConflictOut(valid, scan->rs_rd, tuple, 1.24 : 496a9a: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.99 : 496a9e: 49 8b 34 24 mov (%r12),%rsi 0.00 : 496aa2: 0f be f8 movsbl %al,%edi 0.37 : 496aa5: e8 b6 db 1f 00 callq 694660 : scan->rs_cbuf, snapshot); : : if (valid && key != NULL) 0.00 : 496aaa: 84 db test %bl,%bl 0.00 : 496aac: 0f 84 3e 01 00 00 je 496bf0 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:610 1.61 : 496ab2: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 1.49 : 496ab7: 0f 84 bb 02 00 00 je 496d78 : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 496abd: 44 8b 75 9c mov -0x64(%rbp),%r14d 0.00 : 496ac1: 45 85 f6 test %r14d,%r14d 0.00 : 496ac4: 0f 84 ae 02 00 00 je 496d78 0.00 : 496aca: 48 8b 5d 90 mov -0x70(%rbp),%rbx 0.00 : 496ace: 44 8b 75 8c mov -0x74(%rbp),%r14d 0.00 : 496ad2: f6 03 01 testb $0x1,(%rbx) 0.00 : 496ad5: 0f 84 a3 00 00 00 je 496b7e 0.00 : 496adb: e9 10 01 00 00 jmpq 496bf0 0.00 : 496ae0: c6 45 d7 00 movb $0x0,-0x29(%rbp) 0.00 : 496ae4: f6 47 14 01 testb $0x1,0x14(%rdi) 0.00 : 496ae8: 0f 85 c2 00 00 00 jne 496bb0 0.00 : 496aee: 49 8b 04 24 mov (%r12),%rax 0.00 : 496af2: 48 0f bf d1 movswq %cx,%rdx 0.00 : 496af6: 4c 8b 40 38 mov 0x38(%rax),%r8 0.00 : 496afa: 49 8b 40 08 mov 0x8(%r8),%rax 0.00 : 496afe: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 496b03: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 496b06: 85 c0 test %eax,%eax 0.00 : 496b08: 0f 88 0a 02 00 00 js 496d18 0.00 : 496b0e: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 496b12: 0f 84 c8 01 00 00 je 496ce0 0.00 : 496b18: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 496b1c: 66 83 fa 08 cmp $0x8,%dx 0.00 : 496b20: 0f 84 0a 02 00 00 je 496d30 0.00 : 496b26: 66 83 fa 04 cmp $0x4,%dx 0.00 : 496b2a: 0f 84 18 02 00 00 je 496d48 0.00 : 496b30: 66 83 fa 02 cmp $0x2,%dx 0.00 : 496b34: 0f 84 26 02 00 00 je 496d60 0.00 : 496b3a: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 496b3e: 48 98 cltq 0.00 : 496b40: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 496b44: 0f b6 14 10 movzbl (%rax,%rdx,1),%edx 0.00 : 496b48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 496b4f: 00 0.00 : 496b50: 48 8b 4b 40 mov 0x40(%rbx),%rcx 0.00 : 496b54: 8b 73 0c mov 0xc(%rbx),%esi 0.00 : 496b57: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 496b5b: e8 d0 74 2e 00 callq 77e030 0.00 : 496b60: 84 c0 test %al,%al 0.00 : 496b62: 0f 84 88 00 00 00 je 496bf0 0.00 : 496b68: 45 85 f6 test %r14d,%r14d 0.00 : 496b6b: 0f 84 07 02 00 00 je 496d78 0.00 : 496b71: 48 83 c3 48 add $0x48,%rbx 0.00 : 496b75: f6 03 01 testb $0x1,(%rbx) 0.00 : 496b78: 75 76 jne 496bf0 0.00 : 496b7a: 41 83 ee 01 sub $0x1,%r14d 0.00 : 496b7e: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx 0.00 : 496b82: 66 85 c9 test %cx,%cx 0.00 : 496b85: 7e 79 jle 496c00 0.00 : 496b87: 49 8b 7c 24 58 mov 0x58(%r12),%rdi 0.00 : 496b8c: 0f bf f1 movswl %cx,%esi 0.00 : 496b8f: 0f b7 47 12 movzwl 0x12(%rdi),%eax 0.00 : 496b93: 25 ff 07 00 00 and $0x7ff,%eax 0.00 : 496b98: 39 c6 cmp %eax,%esi 0.00 : 496b9a: 0f 8e 40 ff ff ff jle 496ae0 0.00 : 496ba0: c6 45 d7 01 movb $0x1,-0x29(%rbp) 0.00 : 496ba4: 41 8b 7c 24 64 mov 0x64(%r12),%edi 0.00 : 496ba9: e9 fb fb ff ff jmpq 4967a9 0.00 : 496bae: 66 90 xchg %ax,%ax 0.00 : 496bb0: 0f bf 73 04 movswl 0x4(%rbx),%esi 0.00 : 496bb4: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 496bb7: 89 c8 mov %ecx,%eax 0.00 : 496bb9: 83 e1 07 and $0x7,%ecx 0.00 : 496bbc: c1 f8 03 sar $0x3,%eax 0.00 : 496bbf: 48 98 cltq 0.00 : 496bc1: 0f b6 44 07 17 movzbl 0x17(%rdi,%rax,1),%eax 0.00 : 496bc6: d3 f8 sar %cl,%eax 0.00 : 496bc8: a8 01 test $0x1,%al 0.00 : 496bca: 74 d4 je 496ba0 0.00 : 496bcc: 49 8b 04 24 mov (%r12),%rax 0.00 : 496bd0: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 496bd4: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 496bd8: e8 b3 8d fd ff callq 46f990 0.00 : 496bdd: 48 89 c2 mov %rax,%rdx 0.00 : 496be0: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 496be4: 0f 84 66 ff ff ff je 496b50 0.00 : 496bea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 496bf0: 41 8b 7c 24 64 mov 0x64(%r12),%edi 0.00 : 496bf5: e9 af fb ff ff jmpq 4967a9 0.00 : 496bfa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 496c00: 49 8b 04 24 mov (%r12),%rax 0.00 : 496c04: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 496c08: 0f bf f1 movswl %cx,%esi 0.00 : 496c0b: 48 8d 4d d7 lea -0x29(%rbp),%rcx 0.00 : 496c0f: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 496c13: e8 b8 80 fd ff callq 46ecd0 0.00 : 496c18: 48 89 c2 mov %rax,%rdx 0.00 : 496c1b: eb c3 jmp 496be0 0.00 : 496c1d: 0f 1f 00 nopl (%rax) : page = scan->rs_nblocks; : page--; : } : else : { : page++; 0.00 : 496c20: 83 45 b4 01 addl $0x1,-0x4c(%rbp) : if (page >= scan->rs_nblocks) 0.00 : 496c24: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 496c27: 41 3b 44 24 28 cmp 0x28(%r12),%eax 0.00 : 496c2c: b8 00 00 00 00 mov $0x0,%eax 0.00 : 496c31: 0f 42 45 b4 cmovb -0x4c(%rbp),%eax 0.00 : 496c35: 89 45 b4 mov %eax,-0x4c(%rbp) : page = 0; : finished = (page == scan->rs_startblock) || 0.00 : 496c38: 41 39 44 24 2c cmp %eax,0x2c(%r12) 0.00 : 496c3d: 74 16 je 496c55 0.00 : 496c3f: 41 8b 44 24 34 mov 0x34(%r12),%eax 0.00 : 496c44: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 496c47: 74 77 je 496cc0 0.00 : 496c49: 83 e8 01 sub $0x1,%eax 0.00 : 496c4c: 85 c0 test %eax,%eax 0.00 : 496c4e: 41 89 44 24 34 mov %eax,0x34(%r12) 0.00 : 496c53: 75 6b jne 496cc0 0.00 : 496c55: bb 01 00 00 00 mov $0x1,%ebx : * rel. That's not strictly necessary, but otherwise when you run : * the same query multiple times the starting position would shift : * a little bit backwards on every invocation, which is confusing. : * We don't guarantee any specific ordering in general, though. : */ : if (scan->rs_syncscan) 0.00 : 496c5a: 41 80 7c 24 40 00 cmpb $0x0,0x40(%r12) 0.00 : 496c60: 0f 84 b2 fb ff ff je 496818 : ss_report_location(scan->rs_rd, page); 0.00 : 496c66: 8b 75 b4 mov -0x4c(%rbp),%esi 0.00 : 496c69: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 496c6d: e8 ae a1 00 00 callq 4a0e20 : } : : /* : * return NULL if we've exhausted all the pages : */ : if (finished) 0.00 : 496c72: 84 db test %bl,%bl 0.00 : 496c74: 0f 84 a6 fb ff ff je 496820 : { : if (BufferIsValid(scan->rs_cbuf)) 0.00 : 496c7a: 41 8b 7c 24 64 mov 0x64(%r12),%edi 0.00 : 496c7f: 85 ff test %edi,%edi 0.00 : 496c81: 74 05 je 496c88 : ReleaseBuffer(scan->rs_cbuf); 0.00 : 496c83: e8 d8 e1 1d 00 callq 674e60 : scan->rs_cbuf = InvalidBuffer; 0.00 : 496c88: 41 c7 44 24 64 00 00 movl $0x0,0x64(%r12) 0.00 : 496c8f: 00 00 : scan->rs_cblock = InvalidBlockNumber; 0.00 : 496c91: 41 c7 44 24 60 ff ff movl $0xffffffff,0x60(%r12) 0.00 : 496c98: ff ff : tuple->t_data = NULL; 0.00 : 496c9a: 49 c7 44 24 58 00 00 movq $0x0,0x58(%r12) 0.00 : 496ca1: 00 00 : scan->rs_inited = false; 0.00 : 496ca3: 41 c6 44 24 41 00 movb $0x0,0x41(%r12) : { : lineoff = FirstOffsetNumber; : lpp = PageGetItemId(dp, FirstOffsetNumber); : } : } : } 0.00 : 496ca9: 48 83 c4 58 add $0x58,%rsp 0.00 : 496cad: 5b pop %rbx 0.00 : 496cae: 41 5c pop %r12 0.00 : 496cb0: 41 5d pop %r13 0.00 : 496cb2: 41 5e pop %r14 0.00 : 496cb4: 41 5f pop %r15 0.00 : 496cb6: c9 leaveq 0.00 : 496cb7: c3 retq 0.00 : 496cb8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 496cbf: 00 : else : { : page++; : if (page >= scan->rs_nblocks) : page = 0; : finished = (page == scan->rs_startblock) || 0.00 : 496cc0: 31 db xor %ebx,%ebx 0.00 : 496cc2: eb 96 jmp 496c5a 0.00 : 496cc4: 0f 1f 40 00 nopl 0x0(%rax) : lpp = PageGetItemId(dp, lines); : } : else : { : lineoff = FirstOffsetNumber; : lpp = PageGetItemId(dp, FirstOffsetNumber); 0.00 : 496cc8: 4c 8b 6d b8 mov -0x48(%rbp),%r13 0.00 : 496ccc: 41 89 d7 mov %edx,%r15d 0.00 : 496ccf: 66 c7 45 c6 01 00 movw $0x1,-0x3a(%rbp) 0.00 : 496cd5: 49 83 c5 18 add $0x18,%r13 0.00 : 496cd9: e9 b2 fa ff ff jmpq 496790 0.00 : 496cde: 66 90 xchg %ax,%ax : : CheckForSerializableConflictOut(valid, scan->rs_rd, tuple, : scan->rs_cbuf, snapshot); : : if (valid && key != NULL) : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 496ce0: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 496ce4: 48 98 cltq 0.00 : 496ce6: 48 01 d0 add %rdx,%rax 0.00 : 496ce9: 48 8d 14 07 lea (%rdi,%rax,1),%rdx 0.00 : 496ced: e9 5e fe ff ff jmpq 496b50 0.00 : 496cf2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : heapgetpage(scan, page); : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE); : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496cf8: 89 f8 mov %edi,%eax 0.00 : 496cfa: 48 8b 15 17 64 6e 00 mov 0x6e6417(%rip),%rdx # b7d118 0.00 : 496d01: f7 d0 not %eax 0.00 : 496d03: 48 98 cltq 0.00 : 496d05: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 496d09: 48 89 55 b8 mov %rdx,-0x48(%rbp) 0.00 : 496d0d: e9 4c fb ff ff jmpq 49685e 0.00 : 496d12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : CheckForSerializableConflictOut(valid, scan->rs_rd, tuple, : scan->rs_cbuf, snapshot); : : if (valid && key != NULL) : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 496d18: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 496d1c: 4c 89 c2 mov %r8,%rdx 0.00 : 496d1f: e8 6c 8c fd ff callq 46f990 0.00 : 496d24: 48 89 c2 mov %rax,%rdx 0.00 : 496d27: e9 b4 fe ff ff jmpq 496be0 0.00 : 496d2c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 496d30: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 496d34: 48 98 cltq 0.00 : 496d36: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 496d3a: 48 8b 14 10 mov (%rax,%rdx,1),%rdx 0.00 : 496d3e: e9 0d fe ff ff jmpq 496b50 0.00 : 496d43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 496d48: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 496d4c: 48 98 cltq 0.00 : 496d4e: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 496d52: 8b 14 10 mov (%rax,%rdx,1),%edx 0.00 : 496d55: e9 f6 fd ff ff jmpq 496b50 0.00 : 496d5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 496d60: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 496d64: 48 98 cltq 0.00 : 496d66: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 496d6a: 0f b7 14 10 movzwl (%rax,%rdx,1),%edx 0.00 : 496d6e: e9 dd fd ff ff jmpq 496b50 0.00 : 496d73: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : nkeys, key, valid); : : if (valid) : { : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:616 1.49 : 496d78: 41 8b 7c 24 64 mov 0x64(%r12),%edi 1.36 : 496d7d: 31 f6 xor %esi,%esi 1.11 : 496d7f: e8 8c d9 1d 00 callq 674710 : { : lineoff = FirstOffsetNumber; : lpp = PageGetItemId(dp, FirstOffsetNumber); : } : } : } /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:710 0.62 : 496d84: 48 83 c4 58 add $0x58,%rsp 2.10 : 496d88: 5b pop %rbx 0.12 : 496d89: 41 5c pop %r12 0.12 : 496d8b: 41 5d pop %r13 3.22 : 496d8d: 41 5e pop %r14 0.00 : 496d8f: 41 5f pop %r15 0.00 : 496d91: c9 leaveq 3.22 : 496d92: c3 retq : lineoff = lines; /* final offnum */ : scan->rs_inited = true; : } : else : { : lineoff = /* previous offnum */ 0.00 : 496d93: 41 0f b7 44 24 50 movzwl 0x50(%r12),%eax 0.00 : 496d99: 83 e8 01 sub $0x1,%eax 0.00 : 496d9c: 66 89 45 c6 mov %ax,-0x3a(%rbp) 0.00 : 496da0: e9 c7 f9 ff ff jmpq 49676c : page = scan->rs_cblock; /* current page */ : } : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE); : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496da5: 89 f8 mov %edi,%eax 0.00 : 496da7: 48 8b 15 6a 63 6e 00 mov 0x6e636a(%rip),%rdx # b7d118 0.00 : 496dae: f7 d0 not %eax 0.00 : 496db0: 48 98 cltq 0.00 : 496db2: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 496db6: 48 89 55 b8 mov %rdx,-0x48(%rbp) 0.00 : 496dba: e9 79 f9 ff ff jmpq 496738 : OffsetNumberNext(ItemPointerGetOffsetNumber(&(tuple->t_self))); : } : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE); : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496dbf: 89 f8 mov %edi,%eax 0.00 : 496dc1: 48 8b 15 50 63 6e 00 mov 0x6e6350(%rip),%rdx # b7d118 0.00 : 496dc8: f7 d0 not %eax 0.00 : 496dca: 48 98 cltq 0.00 : 496dcc: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 496dd0: 48 89 55 b8 mov %rdx,-0x48(%rbp) 0.00 : 496dd4: e9 c6 fb ff ff jmpq 49699f : page = ItemPointerGetBlockNumber(&(tuple->t_self)); : if (page != scan->rs_cblock) : heapgetpage(scan, page); : : /* Since the tuple was previously fetched, needn't lock page here */ : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496dd9: f7 d0 not %eax 0.00 : 496ddb: 48 63 d0 movslq %eax,%rdx 0.00 : 496dde: 48 8b 05 33 63 6e 00 mov 0x6e6333(%rip),%rax # b7d118 0.00 : 496de5: 48 8b 0c d0 mov (%rax,%rdx,8),%rcx 0.00 : 496de9: e9 ed fa ff ff jmpq 4968db Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.72 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:897 6.46 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1098 6.20 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:897 5.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1092 5.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1098 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:914 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:897 5.30 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:978 5.17 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 4.13 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:951 3.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 3.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:976 3.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 3.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1072 2.97 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 2.71 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 2.58 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1065 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 2.20 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1072 1.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 1.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 1.42 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 1.42 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:976 1.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:943 1.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:943 1.03 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:951 0.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 0.90 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1066 0.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 0.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:976 0.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 0.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 0.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1072 0.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1093 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068faf0 : : * : * Side effect: cancel/die interrupts are held off until lock release. : */ : bool : LWLockAcquire(LWLock *l, LWLockMode mode) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 0.90 : 68faf0: 55 push %rbp 2.97 : 68faf1: 48 89 e5 mov %rsp,%rbp 3.23 : 68faf4: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 5.17 : 68faf6: 41 89 f7 mov %esi,%r15d /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:895 0.78 : 68faf9: 41 56 push %r14 3.62 : 68fafb: 49 89 fe mov %rdi,%r14 0.00 : 68fafe: 41 55 push %r13 2.33 : 68fb00: 41 54 push %r12 1.68 : 68fb02: 53 push %rbx 2.71 : 68fb03: 48 83 ec 18 sub $0x18,%rsp : * to catch unsafe coding practices. : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:943 1.29 : 68fb07: 81 3d f7 de 4e 00 c7 cmpl $0xc7,0x4edef7(%rip) # b7da08 0.00 : 68fb0e: 00 00 00 : : /* internal function to implement LWLockAcquire and LWLockAcquireWithVar */ : static inline bool : LWLockAcquireCommon(LWLock *lock, LWLockMode mode, uint64 *valptr, uint64 val) : { : PGPROC *proc = MyProc; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:914 5.56 : 68fb11: 4c 8b 25 30 de 4e 00 mov 0x4ede30(%rip),%r12 # b7d948 : * to catch unsafe coding practices. : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:943 1.29 : 68fb18: 0f 8f 0c 01 00 00 jg 68fc2a : /* : * Lock out cancel/die interrupts until we exit the code section protected : * by the LWLock. This ensures that interrupts will not interfere with : * manipulations of data structures in shared memory. : */ : HOLD_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:951 1.03 : 68fb1e: 8b 05 74 a5 52 00 mov 0x52a574(%rip),%eax # bba098 : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; : : /* not waiting anymore */ : pg_atomic_fetch_sub_u32(&lock->nwaiters, 1); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 1.42 : 68fb24: 48 8d 57 08 lea 0x8(%rdi),%rdx : TRACE_POSTGRESQL_LWLOCK_WAIT_START(T_NAME(lock), T_ID(lock), mode); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1065 2.58 : 68fb28: 4d 8d 6c 24 10 lea 0x10(%r12),%r13 : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; : : /* not waiting anymore */ : pg_atomic_fetch_sub_u32(&lock->nwaiters, 1); 0.39 : 68fb2d: 31 db xor %ebx,%ebx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1075 0.65 : 68fb2f: c6 45 c7 01 movb $0x1,-0x39(%rbp) 1.55 : 68fb33: 48 89 55 c8 mov %rdx,-0x38(%rbp) : /* : * Lock out cancel/die interrupts until we exit the code section protected : * by the LWLock. This ensures that interrupts will not interfere with : * manipulations of data structures in shared memory. : */ : HOLD_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:951 4.13 : 68fb37: 83 c0 01 add $0x1,%eax 0.13 : 68fb3a: 89 05 58 a5 52 00 mov %eax,0x52a558(%rip) # bba098 : break; : extraWaits++; : } : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1072 2.20 : 68fb40: 48 8d 47 01 lea 0x1(%rdi),%rax 0.65 : 68fb44: 48 89 45 d0 mov %rax,-0x30(%rbp) 3.23 : 68fb48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68fb4f: 00 : bool mustwait; : : /* : * try to grab the lock the first time, we're not in the waitqueue yet. : */ : mustwait = LWLockAttemptLock(lock, mode, NULL); 0.13 : 68fb50: 31 d2 xor %edx,%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:976 1.42 : 68fb52: 44 89 fe mov %r15d,%esi 0.78 : 68fb55: 4c 89 f7 mov %r14,%rdi 3.62 : 68fb58: e8 63 f3 ff ff callq 68eec0 : : if (!mustwait) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:978 5.30 : 68fb5d: 84 c0 test %al,%al 0.00 : 68fb5f: 74 79 je 68fbda : * other lock will see our queue entries when releasing since they : * existed before we checked for the lock. : */ : : /* add to the queue */ : LWLockQueueSelf(lock, mode); 0.00 : 68fb61: 44 89 fe mov %r15d,%esi 0.00 : 68fb64: 4c 89 f7 mov %r14,%rdi 0.00 : 68fb67: e8 14 f5 ff ff callq 68f080 : : /* we're now guaranteed to be woken up if necessary */ : mustwait = LWLockAttemptLock(lock, mode, NULL); 0.00 : 68fb6c: 31 d2 xor %edx,%edx 0.00 : 68fb6e: 44 89 fe mov %r15d,%esi 0.00 : 68fb71: 4c 89 f7 mov %r14,%rdi 0.00 : 68fb74: e8 47 f3 ff ff callq 68eec0 : : /* ok, grabbed the lock the second time round, need to undo queueing */ : if (!mustwait) 0.00 : 68fb79: 84 c0 test %al,%al 0.00 : 68fb7b: 75 06 jne 68fb83 0.00 : 68fb7d: eb 30 jmp 68fbaf 0.00 : 68fb7f: 90 nop : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68fb80: 83 c3 01 add $0x1,%ebx : TRACE_POSTGRESQL_LWLOCK_WAIT_START(T_NAME(lock), T_ID(lock), mode); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); 0.00 : 68fb83: 31 f6 xor %esi,%esi 0.00 : 68fb85: 4c 89 ef mov %r13,%rdi 0.00 : 68fb88: e8 93 85 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68fb8d: 41 80 7c 24 41 00 cmpb $0x0,0x41(%r12) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1066 0.90 : 68fb93: 75 eb jne 68fb80 : break; : extraWaits++; : } : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; 0.00 : 68fb95: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 68fb99: c6 00 01 movb $0x1,(%rax) : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.00 : 68fb9c: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 68fba1: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 68fba5: f0 0f c1 02 lock xadd %eax,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/port/atomics/arch-x86.h:202 0.78 : 68fba9: c6 45 c7 00 movb $0x0,-0x39(%rbp) 0.00 : 68fbad: eb a1 jmp 68fb50 : LOG_LWDEBUG("LWLockAcquire", lock, "acquired, undoing queue"); : : #ifdef LWLOCK_STATS : lwstats->dequeue_self_count++; : #endif : if (!LWLockDequeueSelf(lock)) 0.00 : 68fbaf: 4c 89 f7 mov %r14,%rdi 0.00 : 68fbb2: e8 19 f6 ff ff callq 68f1d0 0.00 : 68fbb7: 84 c0 test %al,%al 0.00 : 68fbb9: 75 1f jne 68fbda 0.00 : 68fbbb: eb 06 jmp 68fbc3 0.00 : 68fbbd: 0f 1f 00 nopl (%rax) : for (;;) : { : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68fbc0: 83 c3 01 add $0x1,%ebx : * reset at some inconvenient point later, and releaseOk : * wouldn't be managed correctly. : */ : for (;;) : { : PGSemaphoreLock(&proc->sem, false); 0.00 : 68fbc3: 31 f6 xor %esi,%esi 0.00 : 68fbc5: 4c 89 ef mov %r13,%rdi 0.00 : 68fbc8: e8 53 85 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68fbcd: 41 80 7c 24 41 00 cmpb $0x0,0x41(%r12) 0.00 : 68fbd3: 75 eb jne 68fbc0 : /* : * Reset releaseOk - if somebody woke us they'll have set it : * to false. No need for a barrier here - we got the lock and : * will perform wakeup if necessary. : */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; 0.00 : 68fbd5: 41 c6 46 01 01 movb $0x1,0x1(%r14) : *valptr = val; : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1092 5.68 : 68fbda: 8b 15 28 de 4e 00 mov 0x4ede28(%rip),%edx # b7da08 0.00 : 68fbe0: 48 63 c2 movslq %edx,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68fbe3: 83 c2 01 add $0x1,%edx : *valptr = val; : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68fbe6: 48 c1 e0 04 shl $0x4,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1098 6.46 : 68fbea: 85 db test %ebx,%ebx : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68fbec: 89 15 16 de 4e 00 mov %edx,0x4ede16(%rip) # b7da08 : *valptr = val; : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68fbf2: 4c 89 b0 40 da b7 00 mov %r14,0xb7da40(%rax) : held_lwlocks[num_held_lwlocks++].mode = mode; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1093 0.52 : 68fbf9: 44 89 b8 48 da b7 00 mov %r15d,0xb7da48(%rax) : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1098 5.68 : 68fc00: 7e 15 jle 68fc17 0.00 : 68fc02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : PGSemaphoreUnlock(&proc->sem); 0.00 : 68fc08: 4c 89 ef mov %r13,%rdi 0.00 : 68fc0b: 83 eb 01 sub $0x1,%ebx 0.00 : 68fc0e: e8 7d 84 fa ff callq 638090 : held_lwlocks[num_held_lwlocks++].mode = mode; : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 0.00 : 68fc13: 85 db test %ebx,%ebx 0.00 : 68fc15: 7f f1 jg 68fc08 : */ : bool : LWLockAcquire(LWLock *l, LWLockMode mode) : { : return LWLockAcquireCommon(l, mode, NULL, 0); : } 0.00 : 68fc17: 0f b6 45 c7 movzbl -0x39(%rbp),%eax 0.39 : 68fc1b: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:897 6.72 : 68fc1f: 5b pop %rbx 0.00 : 68fc20: 41 5c pop %r12 0.26 : 68fc22: 41 5d pop %r13 0.13 : 68fc24: 41 5e pop %r14 5.56 : 68fc26: 41 5f pop %r15 0.00 : 68fc28: c9 leaveq 6.20 : 68fc29: c3 retq : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) : elog(ERROR, "too many LWLocks taken"); 0.00 : 68fc2a: ba 70 d1 8a 00 mov $0x8ad170,%edx 0.00 : 68fc2f: be b0 03 00 00 mov $0x3b0,%esi 0.00 : 68fc34: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68fc39: e8 e2 b7 0e 00 callq 77b420 0.00 : 68fc3e: be 8e d0 8a 00 mov $0x8ad08e,%esi 0.00 : 68fc43: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68fc48: 31 c0 xor %eax,%eax 0.00 : 68fc4a: e8 e1 b5 0e 00 callq 77b230 0.00 : 68fc4f: e8 7c 98 dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 83.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2269 3.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2274 2.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 2.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2269 2.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 1.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2274 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077ece0 : : return heap_tuple_untoast_attr_slice(datum, first, count); : } : : struct varlena * : pg_detoast_datum_packed(struct varlena * datum) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2269 2.74 : 77ece0: 55 push %rbp : if (VARATT_IS_COMPRESSED(datum) || VARATT_IS_EXTERNAL(datum)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 1.70 : 77ece1: 0f b6 17 movzbl (%rdi),%edx : return heap_tuple_untoast_attr_slice(datum, first, count); : } : : struct varlena * : pg_detoast_datum_packed(struct varlena * datum) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2269 83.81 : 77ece4: 48 89 e5 mov %rsp,%rbp : if (VARATT_IS_COMPRESSED(datum) || VARATT_IS_EXTERNAL(datum)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2270 0.78 : 77ece7: 89 d0 mov %edx,%eax 2.87 : 77ece9: 83 e0 03 and $0x3,%eax 2.48 : 77ecec: 83 f8 02 cmp $0x2,%eax 0.00 : 77ecef: 74 0f je 77ed00 1.04 : 77ecf1: 80 ea 01 sub $0x1,%dl 0.00 : 77ecf4: 74 0a je 77ed00 : return heap_tuple_untoast_attr(datum); : else : return datum; : } 0.39 : 77ecf6: 48 89 f8 mov %rdi,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2274 0.78 : 77ecf9: c9 leaveq 3.39 : 77ecfa: c3 retq 0.00 : 77ecfb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 77ed00: c9 leaveq : : struct varlena * : pg_detoast_datum_packed(struct varlena * datum) : { : if (VARATT_IS_COMPRESSED(datum) || VARATT_IS_EXTERNAL(datum)) : return heap_tuple_untoast_attr(datum); 0.00 : 77ed01: e9 4a 41 d2 ff jmpq 4a2e50 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.87 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:311 14.97 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:311 10.99 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:311 6.49 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:316 6.23 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:320 4.24 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 4.11 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:320 3.84 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 3.18 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 2.78 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 2.25 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 1.72 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 1.72 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 1.72 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:305 1.46 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:305 1.19 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:305 1.06 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:305 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:311 0.53 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:303 0.53 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:316 0.53 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:320 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046e480 : : /* : * Return the procedure corresponding to the given function support number. : */ : static FmgrInfo * : minmax_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum) : { /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 4.24 : 46e480: 55 push %rbp : MinmaxOpaque *opaque; : uint16 basenum = procnum - PROCNUM_BASE; : : opaque = (MinmaxOpaque *) bdesc->bd_info[attno - 1]->oi_opaque; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:305 1.46 : 46e481: 0f b7 c6 movzwl %si,%eax 1.19 : 46e484: 83 e8 01 sub $0x1,%eax : /* : * Return the procedure corresponding to the given function support number. : */ : static FmgrInfo * : minmax_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum) : { /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 2.78 : 46e487: 48 89 e5 mov %rsp,%rbp : MinmaxOpaque *opaque; : uint16 basenum = procnum - PROCNUM_BASE; : : opaque = (MinmaxOpaque *) bdesc->bd_info[attno - 1]->oi_opaque; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:305 1.06 : 46e48a: 48 98 cltq : /* : * Return the procedure corresponding to the given function support number. : */ : static FmgrInfo * : minmax_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum) : { /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 3.84 : 46e48c: 4c 89 65 e0 mov %r12,-0x20(%rbp) 1.72 : 46e490: 4c 89 6d e8 mov %r13,-0x18(%rbp) : MinmaxOpaque *opaque; : uint16 basenum = procnum - PROCNUM_BASE; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:303 0.53 : 46e494: 44 8d 6a fb lea -0x5(%rdx),%r13d : /* : * Return the procedure corresponding to the given function support number. : */ : static FmgrInfo * : minmax_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum) : { /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:301 1.72 : 46e498: 4c 89 7d f8 mov %r15,-0x8(%rbp) 3.18 : 46e49c: 48 89 5d d8 mov %rbx,-0x28(%rbp) 2.25 : 46e4a0: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.40 : 46e4a4: 48 83 ec 30 sub $0x30,%rsp : MinmaxOpaque *opaque; : uint16 basenum = procnum - PROCNUM_BASE; : : opaque = (MinmaxOpaque *) bdesc->bd_info[attno - 1]->oi_opaque; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:305 1.72 : 46e4a8: 48 8b 44 c7 28 mov 0x28(%rdi,%rax,8),%rax : : /* : * We cache these in the opaque struct, to avoid repetitive syscache : * lookups. : */ : if (!opaque->inited[basenum]) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:311 10.99 : 46e4ad: 45 0f b7 fd movzwl %r13w,%r15d /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:311 0.93 : 46e4b1: 4d 89 fc mov %r15,%r12 : minmax_get_procinfo(BrinDesc *bdesc, uint16 attno, uint16 procnum) : { : MinmaxOpaque *opaque; : uint16 basenum = procnum - PROCNUM_BASE; : : opaque = (MinmaxOpaque *) bdesc->bd_info[attno - 1]->oi_opaque; 0.13 : 46e4b4: 4c 8b 70 08 mov 0x8(%rax),%r14 : : /* : * We cache these in the opaque struct, to avoid repetitive syscache : * lookups. : */ : if (!opaque->inited[basenum]) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:311 14.97 : 46e4b8: 43 80 bc 3e c0 00 00 cmpb $0x0,0xc0(%r14,%r15,1) 0.00 : 46e4bf: 00 00 28.87 : 46e4c1: 75 36 jne 46e4f9 : { : fmgr_info_copy(&opaque->operators[basenum], 0.00 : 46e4c3: 48 8b 1f mov (%rdi),%rbx 0.00 : 46e4c6: 48 8b 7f 08 mov 0x8(%rdi),%rdi 0.00 : 46e4ca: 0f b7 d2 movzwl %dx,%edx 0.00 : 46e4cd: 0f bf f6 movswl %si,%esi 0.00 : 46e4d0: 45 0f b7 e5 movzwl %r13w,%r12d 0.00 : 46e4d4: e8 e7 6b 03 00 callq 4a50c0 0.00 : 46e4d9: 4b 8d 3c 64 lea (%r12,%r12,2),%rdi 0.00 : 46e4dd: 48 89 c6 mov %rax,%rsi 0.00 : 46e4e0: 48 89 da mov %rbx,%rdx 0.00 : 46e4e3: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 46e4e7: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 46e4eb: e8 50 12 31 00 callq 77f740 : index_getprocinfo(bdesc->bd_index, attno, procnum), : bdesc->bd_context); : opaque->inited[basenum] = true; 0.00 : 46e4f0: 43 c6 84 3e c0 00 00 movb $0x1,0xc0(%r14,%r15,1) 0.00 : 46e4f7: 00 01 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:316 6.49 : 46e4f9: 4b 8d 04 64 lea (%r12,%r12,2),%rax : } : : return &opaque->operators[basenum]; : } 0.13 : 46e4fd: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 46e501: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 46e505: 4c 8b 6d e8 mov -0x18(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:320 6.23 : 46e509: 4c 8b 7d f8 mov -0x8(%rbp),%r15 : if (!opaque->inited[basenum]) : { : fmgr_info_copy(&opaque->operators[basenum], : index_getprocinfo(bdesc->bd_index, attno, procnum), : bdesc->bd_context); : opaque->inited[basenum] = true; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:316 0.53 : 46e50d: 48 c1 e0 04 shl $0x4,%rax 0.00 : 46e511: 49 8d 04 06 lea (%r14,%rax,1),%rax : } : : return &opaque->operators[basenum]; : } 0.00 : 46e515: 4c 8b 75 f0 mov -0x10(%rbp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:320 4.64 : 46e519: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 43.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:720 35.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:697 4.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 3.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 1.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 1.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:710 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:826 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:801 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:779 0.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:702 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000782ca0 : : CHashBucketScan(CHashTable table, : CHashPtr *start, : uint32 hashcode, : const void *key, : CHashScanResult *res) : { 0.15 : 782ca0: 55 push %rbp 0.45 : 782ca1: 48 89 e5 mov %rsp,%rbp 0.30 : 782ca4: 41 57 push %r15 0.00 : 782ca6: 41 89 d7 mov %edx,%r15d 0.00 : 782ca9: 41 56 push %r14 0.45 : 782cab: 41 55 push %r13 0.15 : 782cad: 49 89 fd mov %rdi,%r13 0.00 : 782cb0: 41 54 push %r12 0.00 : 782cb2: 45 31 e4 xor %r12d,%r12d 0.15 : 782cb5: 53 push %rbx 0.00 : 782cb6: 48 83 ec 18 sub $0x18,%rsp 0.00 : 782cba: 48 89 75 d0 mov %rsi,-0x30(%rbp) 0.30 : 782cbe: 48 89 4d c8 mov %rcx,-0x38(%rbp) 0.00 : 782cc2: 4c 89 45 c0 mov %r8,-0x40(%rbp) : CHashPtr *pointer_to_target; : CHashNode *target_node = NULL; : : retry: : pointer_to_target = start; : target = *pointer_to_target; 0.15 : 782cc6: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 782cca: 44 8b 10 mov (%rax),%r10d : : /* : * If we've reached the end of the bucket chain, stop; otherwise, : * figure out the actual address of the next item. : */ : if (CHashPtrIsInvalid(target)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:697 35.55 : 782ccd: 41 83 fa fd cmp $0xfffffffd,%r10d 0.00 : 782cd1: 0f 87 ff 00 00 00 ja 782dd6 : { : res->found = false; : break; 0.30 : 782cd7: 4c 8b 75 d0 mov -0x30(%rbp),%r14 0.30 : 782cdb: eb 21 jmp 782cfe 0.00 : 782cdd: 0f 1f 00 nopl (%rax) : /* : * Bucket chains are kept in order, so that there is exactly one legal : * point at which any given key can be inserted. The ordering is by : * hashcode first, and then by memcmp ordering of the keys involved. : */ : h = target_node->un.hashcode; 0.15 : 782ce0: 41 8b 44 24 04 mov 0x4(%r12),%eax : if (h == hashcode) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:779 0.61 : 782ce5: 44 39 f8 cmp %r15d,%eax 0.00 : 782ce8: 74 5e je 782d48 : cmp = memcmp(CHashNodeGetItem(target_node), key, : table->desc.key_size); : else if (h > hashcode) 0.45 : 782cea: 41 39 c7 cmp %eax,%r15d 0.15 : 782ced: 0f 1f 00 nopl (%rax) 0.00 : 782cf0: 72 7b jb 782d6d : break; : } : } : : /* Continue scan from next node. */ : pointer_to_target = &target_node->next; 0.15 : 782cf2: 4d 89 e6 mov %r12,%r14 0.15 : 782cf5: 45 89 c2 mov %r8d,%r10d : : /* : * If we've reached the end of the bucket chain, stop; otherwise, : * figure out the actual address of the next item. : */ : if (CHashPtrIsInvalid(target)) 0.00 : 782cf8: 41 83 fa fd cmp $0xfffffffd,%r10d 0.00 : 782cfc: 77 79 ja 782d77 : { : res->found = false; : break; : } : target_node = CHashTableGetNode(table, target); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:702 0.61 : 782cfe: 44 89 d0 mov %r10d,%eax 0.00 : 782d01: d1 e8 shr %eax 0.15 : 782d03: 41 89 c4 mov %eax,%r12d 0.15 : 782d06: 45 0f af 65 1c imul 0x1c(%r13),%r12d 0.45 : 782d0b: 4d 03 65 30 add 0x30(%r13),%r12 : * target may have been fetched from an arena entry that could be : * concurrently modified, so a dependency barrier is required before : * dereferencing the derived pointer. : */ : pg_read_barrier_depends(); : next = target_node->next; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:710 1.51 : 782d0f: 45 8b 04 24 mov (%r12),%r8d : * ensures that delete-marked elements are removed from bucket chains : * as quickly as possible and reduces code duplication. See : * CHashDelete for further comments about why delete-marking is : * necessary and how it allows safe deletion. : */ : if (CHashPtrIsMarked(next)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:720 43.72 : 782d13: 41 f6 c0 01 test $0x1,%r8b 0.00 : 782d17: 74 c7 je 782ce0 : { : zap: : if (__sync_bool_compare_and_swap(pointer_to_target, 0.00 : 782d19: 44 89 c3 mov %r8d,%ebx 0.00 : 782d1c: 44 89 d0 mov %r10d,%eax 0.00 : 782d1f: 83 e3 fe and $0xfffffffe,%ebx 0.00 : 782d22: f0 41 0f b1 1e lock cmpxchg %ebx,(%r14) 0.00 : 782d27: 74 77 je 782da0 : * the node which precedes it before we advance to the next : * node. That could certainly happen occasionally, but we'd : * have to be pretty unlucky to have it happen even twice in : * a row. : */ : CHashTableIncrementStatistic(table, CHS_Scan_Expunge_Fail); 0.00 : 782d29: 49 83 85 88 00 00 00 addq $0x1,0x88(%r13) 0.00 : 782d30: 01 : target = *pointer_to_target; 0.00 : 782d31: 45 8b 16 mov (%r14),%r10d : if (CHashPtrIsMarked(target)) 0.00 : 782d34: 41 f6 c2 01 test $0x1,%r10b 0.00 : 782d38: 74 be je 782cf8 : { : CHashTableIncrementStatistic(table, CHS_Scan_Restart); 0.00 : 782d3a: 49 83 85 90 00 00 00 addq $0x1,0x90(%r13) 0.00 : 782d41: 01 : goto retry; 0.00 : 782d42: eb 82 jmp 782cc6 0.00 : 782d44: 0f 1f 40 00 nopl 0x0(%rax) : * point at which any given key can be inserted. The ordering is by : * hashcode first, and then by memcmp ordering of the keys involved. : */ : h = target_node->un.hashcode; : if (h == hashcode) : cmp = memcmp(CHashNodeGetItem(target_node), key, 0.15 : 782d48: 41 0f b7 4d 0e movzwl 0xe(%r13),%ecx 0.15 : 782d4d: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 782d51: 49 8d 74 24 08 lea 0x8(%r12),%rsi 0.00 : 782d56: 48 39 c9 cmp %rcx,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:780 3.78 : 782d59: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 4.84 : 782d5b: 0f 97 c0 seta %al 1.82 : 782d5e: 0f 92 c2 setb %dl 0.00 : 782d61: 28 d0 sub %dl,%al 0.15 : 782d63: 0f be c0 movsbl %al,%eax : * the point where we expect to find the key OR someone delete-marked : * the item and overwrote the hashcode with a gcnext pointer. In the : * latter case we must take care not to be fooled into stopping the : * scan early. : */ : if (cmp >= 0) 0.00 : 782d66: 83 f8 00 cmp $0x0,%eax 0.00 : 782d69: 7c 87 jl 782cf2 : { : if (cmp == 0) 0.00 : 782d6b: 74 5b je 782dc8 : /* : * pg_read_barrier() prevents the reread of the next pointer : * from being speculated ahead of the read of the hash value. : */ : pg_read_barrier(); : next = target_node->next; 0.15 : 782d6d: 45 8b 04 24 mov (%r12),%r8d : if (CHashPtrIsMarked(next)) 0.00 : 782d71: 41 f6 c0 01 test $0x1,%r8b 0.00 : 782d75: 75 a2 jne 782d19 : goto zap; : res->found = false; 0.00 : 782d77: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 782d7b: c6 47 18 00 movb $0x0,0x18(%rdi) : pointer_to_target = &target_node->next; : target = next; : } : : /* Send results back to caller. */ : res->target = target; 0.15 : 782d7f: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.15 : 782d83: 44 89 10 mov %r10d,(%rax) : res->pointer_to_target = pointer_to_target; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:826 0.91 : 782d86: 4c 89 70 08 mov %r14,0x8(%rax) : res->target_node = target_node; 0.30 : 782d8a: 4c 89 60 10 mov %r12,0x10(%rax) : } 0.00 : 782d8e: 48 83 c4 18 add $0x18,%rsp 0.00 : 782d92: 5b pop %rbx 0.00 : 782d93: 41 5c pop %r12 0.00 : 782d95: 41 5d pop %r13 0.00 : 782d97: 41 5e pop %r14 0.00 : 782d99: 41 5f pop %r15 0.00 : 782d9b: c9 leaveq 0.00 : 782d9c: c3 retq 0.00 : 782d9d: 0f 1f 00 nopl (%rax) : * delete-mark has been applied. Thus, if we just keep : * following the next pointers, we're guaranteed to visit : * all non-deleted items (and possibly some deleted items) : * that were present at the time we began the scan. : */ : CHashTableIncrementStatistic(table, CHS_Scan_Expunge); 0.00 : 782da0: 49 83 85 80 00 00 00 addq $0x1,0x80(%r13) 0.00 : 782da7: 01 : CHashAddToGarbage(table, hashcode & table->bucket_mask, 0.00 : 782da8: 44 89 fe mov %r15d,%esi 0.00 : 782dab: 41 23 75 10 and 0x10(%r13),%esi 0.00 : 782daf: 44 89 d2 mov %r10d,%edx 0.00 : 782db2: 4c 89 ef mov %r13,%rdi 0.00 : 782db5: e8 96 fe ff ff callq 782c50 0.00 : 782dba: 41 89 da mov %ebx,%r10d 0.00 : 782dbd: e9 36 ff ff ff jmpq 782cf8 0.00 : 782dc2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : if (cmp >= 0) : { : if (cmp == 0) : { : res->found = true; 0.00 : 782dc8: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 782dcc: c6 40 18 01 movb $0x1,0x18(%rax) : res->next = next; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:801 0.76 : 782dd0: 44 89 40 04 mov %r8d,0x4(%rax) : break; 0.15 : 782dd4: eb a9 jmp 782d7f : : /* : * If we've reached the end of the bucket chain, stop; otherwise, : * figure out the actual address of the next item. : */ : if (CHashPtrIsInvalid(target)) 0.00 : 782dd6: 49 89 c6 mov %rax,%r14 0.00 : 782dd9: eb 9c jmp 782d77 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.72 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1424 12.15 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1431 7.26 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1426 5.99 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1437 4.73 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1426 4.26 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1428 4.10 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1428 3.79 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1345 2.37 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1428 1.89 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1426 1.89 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1445 1.89 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1436 1.89 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1437 1.74 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1330 1.74 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1428 1.58 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1398 1.58 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1431 1.58 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1438 1.42 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1322 1.42 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1389 1.10 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1322 1.10 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1330 1.10 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1345 1.10 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1424 1.10 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1443 1.10 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1437 0.95 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1330 0.95 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1398 0.95 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1439 0.79 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1345 0.79 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1426 0.63 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1345 0.63 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1428 0.63 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1437 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a8620 : : int *before_isdst, : pg_time_t *boundary, : long int *after_gmtoff, : int *after_isdst, : const pg_tz *tz) : { 0.16 : 7a8620: 55 push %rbp 0.00 : 7a8621: 49 89 d2 mov %rdx,%r10 : int i; : int j; : const pg_time_t t = *timep; : : sp = &tz->state; : if (sp->timecnt == 0) /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1330 1.74 : 7a8624: 31 d2 xor %edx,%edx : int *before_isdst, : pg_time_t *boundary, : long int *after_gmtoff, : int *after_isdst, : const pg_tz *tz) : { 0.00 : 7a8626: 48 89 e5 mov %rsp,%rbp 0.16 : 7a8629: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1322 1.10 : 7a862b: 49 89 ce mov %rcx,%r14 0.00 : 7a862e: 41 55 push %r13 0.00 : 7a8630: 41 54 push %r12 0.00 : 7a8632: 53 push %rbx 1.42 : 7a8633: 48 83 ec 20 sub $0x20,%rsp 0.00 : 7a8637: 48 8b 5d 10 mov 0x10(%rbp),%rbx : const struct state *sp; : const struct ttinfo *ttisp; : int i; : int j; : const pg_time_t t = *timep; 0.16 : 7a863b: 4c 8b 27 mov (%rdi),%r12 : : sp = &tz->state; : if (sp->timecnt == 0) /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1330 1.10 : 7a863e: 8b 8b 04 01 00 00 mov 0x104(%rbx),%ecx 0.95 : 7a8644: 48 89 d8 mov %rbx,%rax 0.16 : 7a8647: 85 c9 test %ecx,%ecx 0.00 : 7a8649: 0f 84 91 00 00 00 je 7a86e0 : ttisp = &sp->ttis[i]; : *before_gmtoff = ttisp->tt_gmtoff; : *before_isdst = ttisp->tt_isdst; : return 0; : } : if ((sp->goback && t < sp->ats[0]) || /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1345 1.10 : 7a864f: 8b 83 10 01 00 00 mov 0x110(%rbx),%eax 0.63 : 7a8655: 85 c0 test %eax,%eax 0.00 : 7a8657: 0f 85 d3 00 00 00 jne 7a8730 0.47 : 7a865d: 44 8b ab 14 01 00 00 mov 0x114(%rbx),%r13d 0.00 : 7a8664: 45 85 ed test %r13d,%r13d 0.00 : 7a8667: 0f 84 db 01 00 00 je 7a8848 0.79 : 7a866d: 8d 79 ff lea -0x1(%rcx),%edi 0.32 : 7a8670: 48 63 d7 movslq %edi,%rdx 0.00 : 7a8673: 48 8b 84 d3 18 01 00 mov 0x118(%rbx,%rdx,8),%rax 0.00 : 7a867a: 00 3.79 : 7a867b: 49 39 c4 cmp %rax,%r12 0.00 : 7a867e: 0f 8f b9 00 00 00 jg 7a873d : else : *boundary += seconds; : return result; : } : : if (t >= sp->ats[sp->timecnt - 1]) /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1389 1.42 : 7a8684: 49 39 c4 cmp %rax,%r12 0.00 : 7a8687: 0f 8d d2 01 00 00 jge 7a885f : ttisp = &sp->ttis[i]; : *before_gmtoff = ttisp->tt_gmtoff; : *before_isdst = ttisp->tt_isdst; : return 0; : } : if (t < sp->ats[0]) /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1398 1.58 : 7a868d: 31 c0 xor %eax,%eax 0.00 : 7a868f: 4c 3b a3 18 01 00 00 cmp 0x118(%rbx),%r12 0.00 : 7a8696: 48 89 da mov %rbx,%rdx 0.16 : 7a8699: b9 01 00 00 00 mov $0x1,%ecx 0.95 : 7a869e: 0f 8c 24 01 00 00 jl 7a87c8 : /* Else search to find the boundary following t */ : { : int lo = 1; : int hi = sp->timecnt - 1; : : while (lo < hi) /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1424 1.10 : 7a86a4: 39 f9 cmp %edi,%ecx 0.00 : 7a86a6: 0f 8d 14 02 00 00 jge 7a88c0 : { : int mid = (lo + hi) >> 1; /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1426 0.79 : 7a86ac: 8d 14 0f lea (%rdi,%rcx,1),%edx 1.89 : 7a86af: d1 fa sar %edx : : if (t < sp->ats[mid]) /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1428 2.37 : 7a86b1: 48 63 c2 movslq %edx,%rax 1.74 : 7a86b4: 4c 3b a4 c3 18 01 00 cmp 0x118(%rbx,%rax,8),%r12 0.00 : 7a86bb: 00 0.00 : 7a86bc: 7d 1d jge 7a86db 4.10 : 7a86be: 66 90 xchg %ax,%ax : /* Else search to find the boundary following t */ : { : int lo = 1; : int hi = sp->timecnt - 1; : : while (lo < hi) /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1424 19.72 : 7a86c0: 39 d1 cmp %edx,%ecx : { : int mid = (lo + hi) >> 1; : : if (t < sp->ats[mid]) /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1428 4.26 : 7a86c2: 89 d7 mov %edx,%edi : /* Else search to find the boundary following t */ : { : int lo = 1; : int hi = sp->timecnt - 1; : : while (lo < hi) 0.00 : 7a86c4: 0f 8d f6 01 00 00 jge 7a88c0 : { : int mid = (lo + hi) >> 1; /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1426 4.73 : 7a86ca: 01 ca add %ecx,%edx /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1426 7.26 : 7a86cc: d1 fa sar %edx : : if (t < sp->ats[mid]) 0.00 : 7a86ce: 48 63 c2 movslq %edx,%rax /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1428 0.63 : 7a86d1: 4c 3b a4 c3 18 01 00 cmp 0x118(%rbx,%rax,8),%r12 0.00 : 7a86d8: 00 0.00 : 7a86d9: 7c e5 jl 7a86c0 : hi = mid; : else : lo = mid + 1; /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1431 12.15 : 7a86db: 8d 4a 01 lea 0x1(%rdx),%ecx /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1431 1.58 : 7a86de: eb c4 jmp 7a86a4 : sp = &tz->state; : if (sp->timecnt == 0) : { : /* non-DST zone, use lowest-numbered standard type */ : i = 0; : while (sp->ttis[i].tt_isdst) 0.00 : 7a86e0: 8b 88 50 2b 00 00 mov 0x2b50(%rax),%ecx 0.00 : 7a86e6: 85 c9 test %ecx,%ecx 0.00 : 7a86e8: 0f 84 ca 01 00 00 je 7a88b8 : if (++i >= sp->typecnt) 0.00 : 7a86ee: 83 c2 01 add $0x1,%edx 0.00 : 7a86f1: 48 83 c0 18 add $0x18,%rax 0.00 : 7a86f5: 3b 93 08 01 00 00 cmp 0x108(%rbx),%edx 0.00 : 7a86fb: 7c e3 jl 7a86e0 0.00 : 7a86fd: 31 c0 xor %eax,%eax : if (t >= sp->ats[sp->timecnt - 1]) : { : /* No known transition > t, so use last known segment's type */ : i = sp->types[sp->timecnt - 1]; : ttisp = &sp->ttis[i]; : *before_gmtoff = ttisp->tt_gmtoff; 0.00 : 7a86ff: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 7a8703: 48 8d 04 c3 lea (%rbx,%rax,8),%rax 0.00 : 7a8707: 48 8b 90 48 2b 00 00 mov 0x2b48(%rax),%rdx 0.00 : 7a870e: 48 89 16 mov %rdx,(%rsi) : *before_isdst = ttisp->tt_isdst; 0.00 : 7a8711: 8b 80 50 2b 00 00 mov 0x2b50(%rax),%eax 0.00 : 7a8717: 41 89 02 mov %eax,(%r10) 0.00 : 7a871a: 31 c0 xor %eax,%eax : j = sp->types[i]; : ttisp = &sp->ttis[j]; : *after_gmtoff = ttisp->tt_gmtoff; : *after_isdst = ttisp->tt_isdst; : return 1; : } 0.00 : 7a871c: 48 83 c4 20 add $0x20,%rsp 0.00 : 7a8720: 5b pop %rbx 0.00 : 7a8721: 41 5c pop %r12 0.00 : 7a8723: 41 5d pop %r13 0.00 : 7a8725: 41 5e pop %r14 0.00 : 7a8727: c9 leaveq 0.00 : 7a8728: c3 retq 0.00 : 7a8729: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : ttisp = &sp->ttis[i]; : *before_gmtoff = ttisp->tt_gmtoff; : *before_isdst = ttisp->tt_isdst; : return 0; : } : if ((sp->goback && t < sp->ats[0]) || 0.00 : 7a8730: 4c 3b a3 18 01 00 00 cmp 0x118(%rbx),%r12 0.00 : 7a8737: 0f 8d 20 ff ff ff jge 7a865d : (sp->goahead && t > sp->ats[sp->timecnt - 1])) : { : /* For values outside the transition table, extrapolate */ : pg_time_t newt = t; 0.00 : 7a873d: 4c 89 65 d8 mov %r12,-0x28(%rbp) : pg_time_t seconds; : pg_time_t tcycles; : int64 icycles; : int result; : : if (t < sp->ats[0]) 0.00 : 7a8741: 48 8b 83 18 01 00 00 mov 0x118(%rbx),%rax 0.00 : 7a8748: 49 39 c4 cmp %rax,%r12 0.00 : 7a874b: 0f 8c 1f 01 00 00 jl 7a8870 : seconds = sp->ats[0] - t; : else : seconds = t - sp->ats[sp->timecnt - 1]; 0.00 : 7a8751: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 7a8754: 4c 89 e2 mov %r12,%rdx 0.00 : 7a8757: 48 98 cltq 0.00 : 7a8759: 48 2b 94 c3 18 01 00 sub 0x118(%rbx,%rax,8),%rdx 0.00 : 7a8760: 00 : --seconds; : tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR; 0.00 : 7a8761: 48 8d 7a ff lea -0x1(%rdx),%rdi 0.00 : 7a8765: 48 ba e7 58 ef 44 46 movabs $0xae35ef4644ef58e7,%rdx 0.00 : 7a876c: ef 35 ae 0.00 : 7a876f: 48 89 f8 mov %rdi,%rax 0.00 : 7a8772: 48 f7 ea imul %rdx : icycles = tcycles; : if (tcycles - icycles >= 1 || icycles - tcycles >= 1) : return -1; : seconds = icycles; : seconds *= YEARSPERREPEAT; : seconds *= AVGSECSPERYEAR; 0.00 : 7a8775: 48 b8 80 59 60 f0 02 movabs $0x2f0605980,%rax 0.00 : 7a877c: 00 00 00 : if (t < sp->ats[0]) : seconds = sp->ats[0] - t; : else : seconds = t - sp->ats[sp->timecnt - 1]; : --seconds; : tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR; 0.00 : 7a877f: 48 01 fa add %rdi,%rdx 0.00 : 7a8782: 48 c1 ff 3f sar $0x3f,%rdi 0.00 : 7a8786: 48 c1 fa 21 sar $0x21,%rdx 0.00 : 7a878a: 48 29 fa sub %rdi,%rdx : icycles = tcycles; : if (tcycles - icycles >= 1 || icycles - tcycles >= 1) : return -1; : seconds = icycles; : seconds *= YEARSPERREPEAT; : seconds *= AVGSECSPERYEAR; 0.00 : 7a878d: 4c 8d 6a 01 lea 0x1(%rdx),%r13 0.00 : 7a8791: 4c 0f af e8 imul %rax,%r13 : if (t < sp->ats[0]) : newt += seconds; : else : newt -= seconds; 0.00 : 7a8795: 4c 89 e0 mov %r12,%rax 0.00 : 7a8798: 4c 29 e8 sub %r13,%rax 0.00 : 7a879b: 48 89 45 d8 mov %rax,-0x28(%rbp) : if (newt < sp->ats[0] || 0.00 : 7a879f: 48 8b 55 d8 mov -0x28(%rbp),%rdx 0.00 : 7a87a3: 48 39 93 18 01 00 00 cmp %rdx,0x118(%rbx) 0.00 : 7a87aa: 0f 8e 5a 01 00 00 jle 7a890a : j = sp->types[i]; : ttisp = &sp->ttis[j]; : *after_gmtoff = ttisp->tt_gmtoff; : *after_isdst = ttisp->tt_isdst; : return 1; : } 0.00 : 7a87b0: 48 83 c4 20 add $0x20,%rsp : *before_isdst = ttisp->tt_isdst; : *boundary = sp->ats[i]; : j = sp->types[i]; : ttisp = &sp->ttis[j]; : *after_gmtoff = ttisp->tt_gmtoff; : *after_isdst = ttisp->tt_isdst; 0.00 : 7a87b4: b8 ff ff ff ff mov $0xffffffff,%eax : return 1; : } 0.00 : 7a87b9: 5b pop %rbx 0.00 : 7a87ba: 41 5c pop %r12 0.00 : 7a87bc: 41 5d pop %r13 0.00 : 7a87be: 41 5e pop %r14 0.00 : 7a87c0: c9 leaveq 0.00 : 7a87c1: c3 retq 0.00 : 7a87c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : if (t < sp->ats[0]) : { : /* For "before", use lowest-numbered standard type */ : i = 0; : while (sp->ttis[i].tt_isdst) 0.00 : 7a87c8: 44 8b 9a 50 2b 00 00 mov 0x2b50(%rdx),%r11d 0.00 : 7a87cf: 45 85 db test %r11d,%r11d 0.00 : 7a87d2: 0f 84 2b 01 00 00 je 7a8903 : if (++i >= sp->typecnt) 0.00 : 7a87d8: 83 c0 01 add $0x1,%eax 0.00 : 7a87db: 48 83 c2 18 add $0x18,%rdx 0.00 : 7a87df: 3b 83 08 01 00 00 cmp 0x108(%rbx),%eax 0.00 : 7a87e5: 7c e1 jl 7a87c8 0.00 : 7a87e7: 31 c0 xor %eax,%eax : { : i = 0; : break; : } : ttisp = &sp->ttis[i]; : *before_gmtoff = ttisp->tt_gmtoff; 0.00 : 7a87e9: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 7a87ed: 48 8d 04 c3 lea (%rbx,%rax,8),%rax 0.00 : 7a87f1: 48 8b 90 48 2b 00 00 mov 0x2b48(%rax),%rdx 0.00 : 7a87f8: 48 89 16 mov %rdx,(%rsi) : *before_isdst = ttisp->tt_isdst; 0.00 : 7a87fb: 8b 80 50 2b 00 00 mov 0x2b50(%rax),%eax 0.00 : 7a8801: 41 89 02 mov %eax,(%r10) : *boundary = sp->ats[0]; 0.00 : 7a8804: 48 8b 83 18 01 00 00 mov 0x118(%rbx),%rax 0.00 : 7a880b: 49 89 06 mov %rax,(%r14) : /* And for "after", use the first segment's type */ : i = sp->types[0]; : ttisp = &sp->ttis[i]; 0.00 : 7a880e: 0f b6 83 98 26 00 00 movzbl 0x2698(%rbx),%eax : *before_gmtoff = ttisp->tt_gmtoff; : *before_isdst = ttisp->tt_isdst; : *boundary = sp->ats[i]; : j = sp->types[i]; : ttisp = &sp->ttis[j]; : *after_gmtoff = ttisp->tt_gmtoff; 0.32 : 7a8815: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.16 : 7a8819: 48 8d 04 c3 lea (%rbx,%rax,8),%rax 0.32 : 7a881d: 48 8b 90 48 2b 00 00 mov 0x2b48(%rax),%rdx 0.16 : 7a8824: 49 89 10 mov %rdx,(%r8) : *after_isdst = ttisp->tt_isdst; /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1443 1.10 : 7a8827: 8b 80 50 2b 00 00 mov 0x2b50(%rax),%eax 0.00 : 7a882d: 41 89 01 mov %eax,(%r9) : return 1; : } 0.32 : 7a8830: 48 83 c4 20 add $0x20,%rsp : *before_isdst = ttisp->tt_isdst; : *boundary = sp->ats[i]; : j = sp->types[i]; : ttisp = &sp->ttis[j]; : *after_gmtoff = ttisp->tt_gmtoff; : *after_isdst = ttisp->tt_isdst; 0.00 : 7a8834: b8 01 00 00 00 mov $0x1,%eax : return 1; : } 0.47 : 7a8839: 5b pop %rbx 0.00 : 7a883a: 41 5c pop %r12 0.16 : 7a883c: 41 5d pop %r13 0.00 : 7a883e: 41 5e pop %r14 /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1445 1.89 : 7a8840: c9 leaveq 0.16 : 7a8841: c3 retq 0.00 : 7a8842: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : after_isdst, : tz); : if (t < sp->ats[0]) : *boundary -= seconds; : else : *boundary += seconds; 0.00 : 7a8848: 8d 79 ff lea -0x1(%rcx),%edi 0.00 : 7a884b: 48 63 d7 movslq %edi,%rdx 0.00 : 7a884e: 48 8b 84 d3 18 01 00 mov 0x118(%rbx,%rdx,8),%rax 0.00 : 7a8855: 00 : return result; : } : : if (t >= sp->ats[sp->timecnt - 1]) 0.00 : 7a8856: 49 39 c4 cmp %rax,%r12 0.00 : 7a8859: 0f 8c 2e fe ff ff jl 7a868d : { : /* No known transition > t, so use last known segment's type */ : i = sp->types[sp->timecnt - 1]; : ttisp = &sp->ttis[i]; 0.00 : 7a885f: 0f b6 84 13 98 26 00 movzbl 0x2698(%rbx,%rdx,1),%eax 0.00 : 7a8866: 00 0.00 : 7a8867: e9 93 fe ff ff jmpq 7a86ff 0.00 : 7a886c: 0f 1f 40 00 nopl 0x0(%rax) : pg_time_t tcycles; : int64 icycles; : int result; : : if (t < sp->ats[0]) : seconds = sp->ats[0] - t; 0.00 : 7a8870: 48 8d 78 ff lea -0x1(%rax),%rdi : else : seconds = t - sp->ats[sp->timecnt - 1]; : --seconds; : tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR; 0.00 : 7a8874: 48 ba e7 58 ef 44 46 movabs $0xae35ef4644ef58e7,%rdx 0.00 : 7a887b: ef 35 ae 0.00 : 7a887e: 4c 29 e7 sub %r12,%rdi 0.00 : 7a8881: 48 89 f8 mov %rdi,%rax 0.00 : 7a8884: 48 f7 ea imul %rdx : icycles = tcycles; : if (tcycles - icycles >= 1 || icycles - tcycles >= 1) : return -1; : seconds = icycles; : seconds *= YEARSPERREPEAT; : seconds *= AVGSECSPERYEAR; 0.00 : 7a8887: 48 b8 80 59 60 f0 02 movabs $0x2f0605980,%rax 0.00 : 7a888e: 00 00 00 : if (t < sp->ats[0]) : seconds = sp->ats[0] - t; : else : seconds = t - sp->ats[sp->timecnt - 1]; : --seconds; : tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR; 0.00 : 7a8891: 48 01 fa add %rdi,%rdx 0.00 : 7a8894: 48 c1 ff 3f sar $0x3f,%rdi 0.00 : 7a8898: 48 c1 fa 21 sar $0x21,%rdx 0.00 : 7a889c: 48 29 fa sub %rdi,%rdx : icycles = tcycles; : if (tcycles - icycles >= 1 || icycles - tcycles >= 1) : return -1; : seconds = icycles; : seconds *= YEARSPERREPEAT; : seconds *= AVGSECSPERYEAR; 0.00 : 7a889f: 4c 8d 6a 01 lea 0x1(%rdx),%r13 0.00 : 7a88a3: 4c 0f af e8 imul %rax,%r13 : if (t < sp->ats[0]) : newt += seconds; 0.00 : 7a88a7: 4b 8d 44 25 00 lea 0x0(%r13,%r12,1),%rax 0.00 : 7a88ac: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 7a88b0: e9 ea fe ff ff jmpq 7a879f 0.00 : 7a88b5: 0f 1f 00 nopl (%rax) : sp = &tz->state; : if (sp->timecnt == 0) : { : /* non-DST zone, use lowest-numbered standard type */ : i = 0; : while (sp->ttis[i].tt_isdst) 0.00 : 7a88b8: 48 63 c2 movslq %edx,%rax 0.00 : 7a88bb: e9 3f fe ff ff jmpq 7a86ff : lo = mid + 1; : } : i = lo; : } : j = sp->types[i - 1]; : ttisp = &sp->ttis[j]; /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1436 1.89 : 7a88c0: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 7a88c3: 48 98 cltq 0.32 : 7a88c5: 0f b6 84 03 98 26 00 movzbl 0x2698(%rbx,%rax,1),%eax 0.00 : 7a88cc: 00 : *before_gmtoff = ttisp->tt_gmtoff; /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1437 1.10 : 7a88cd: 48 8d 04 40 lea (%rax,%rax,2),%rax 1.89 : 7a88d1: 48 8d 04 c3 lea (%rbx,%rax,8),%rax 0.63 : 7a88d5: 48 8b 90 48 2b 00 00 mov 0x2b48(%rax),%rdx /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1437 5.99 : 7a88dc: 48 89 16 mov %rdx,(%rsi) : *before_isdst = ttisp->tt_isdst; /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1438 1.58 : 7a88df: 8b 80 50 2b 00 00 mov 0x2b50(%rax),%eax : *boundary = sp->ats[i]; 0.16 : 7a88e5: 48 63 d1 movslq %ecx,%rdx : i = lo; : } : j = sp->types[i - 1]; : ttisp = &sp->ttis[j]; : *before_gmtoff = ttisp->tt_gmtoff; : *before_isdst = ttisp->tt_isdst; 0.00 : 7a88e8: 41 89 02 mov %eax,(%r10) : *boundary = sp->ats[i]; /home/Computational/mark/src/postgres-andres/src/timezone/localtime.c:1439 0.95 : 7a88eb: 48 8b 84 d3 18 01 00 mov 0x118(%rbx,%rdx,8),%rax 0.00 : 7a88f2: 00 0.00 : 7a88f3: 49 89 06 mov %rax,(%r14) : j = sp->types[i]; : ttisp = &sp->ttis[j]; 0.00 : 7a88f6: 0f b6 84 13 98 26 00 movzbl 0x2698(%rbx,%rdx,1),%eax 0.00 : 7a88fd: 00 0.00 : 7a88fe: e9 12 ff ff ff jmpq 7a8815 : } : if (t < sp->ats[0]) : { : /* For "before", use lowest-numbered standard type */ : i = 0; : while (sp->ttis[i].tt_isdst) 0.00 : 7a8903: 48 98 cltq 0.00 : 7a8905: e9 df fe ff ff jmpq 7a87e9 : seconds *= AVGSECSPERYEAR; : if (t < sp->ats[0]) : newt += seconds; : else : newt -= seconds; : if (newt < sp->ats[0] || 0.00 : 7a890a: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 7a890d: 48 98 cltq 0.00 : 7a890f: 48 3b 94 c3 18 01 00 cmp 0x118(%rbx,%rax,8),%rdx 0.00 : 7a8916: 00 0.00 : 7a8917: 0f 8f 93 fe ff ff jg 7a87b0 : newt > sp->ats[sp->timecnt - 1]) : return -1; /* "cannot happen" */ : : result = pg_next_dst_boundary(&newt, before_gmtoff, 0.00 : 7a891d: 48 8d 7d d8 lea -0x28(%rbp),%rdi 0.00 : 7a8921: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 7a8925: 4c 89 f1 mov %r14,%rcx 0.00 : 7a8928: 4c 89 d2 mov %r10,%rdx 0.00 : 7a892b: e8 f0 fc ff ff callq 7a8620 : before_isdst, : boundary, : after_gmtoff, : after_isdst, : tz); : if (t < sp->ats[0]) 0.00 : 7a8930: 4c 3b a3 18 01 00 00 cmp 0x118(%rbx),%r12 0.00 : 7a8937: 7d 08 jge 7a8941 : *boundary -= seconds; 0.00 : 7a8939: 4d 29 2e sub %r13,(%r14) 0.00 : 7a893c: e9 db fd ff ff jmpq 7a871c : else : *boundary += seconds; 0.00 : 7a8941: 4d 01 2e add %r13,(%r14) 0.00 : 7a8944: e9 d3 fd ff ff jmpq 7a871c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:927 8.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 6.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:736 5.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:765 4.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:776 3.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 3.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:772 3.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 3.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:911 3.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 3.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 2.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 2.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 2.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 2.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:735 2.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 2.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 2.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 1.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 1.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 1.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:774 1.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 1.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 1.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 1.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:668 1.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:323 1.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:776 1.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:908 1.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 0.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:735 0.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:908 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:323 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:336 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:765 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:774 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798110 : : * MAXALIGN_DOWN(SIZE_MAX) - ALLOC_BLOCKHDRSZ - ALLOC_CHUNKHDRSZ : * All callers use a much-lower limit. : */ : static void * : AllocSetAlloc(MemoryContext context, Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 1.63 : 798110: 55 push %rbp 1.47 : 798111: 48 89 e5 mov %rsp,%rbp 1.14 : 798114: 4c 89 65 e0 mov %r12,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 8.66 : 798118: 4c 89 75 f0 mov %r14,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:654 2.61 : 79811c: 49 89 fc mov %rdi,%r12 0.00 : 79811f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 2.61 : 798123: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.65 : 798127: 49 89 f6 mov %rsi,%r14 0.49 : 79812a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.65 : 79812e: 48 83 ec 30 sub $0x30,%rsp : : /* : * If requested size exceeds maximum for chunks, allocate an entire block : * for this request. : */ : if (size > set->allocChunkLimit) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:668 1.47 : 798132: 48 39 b7 b0 00 00 00 cmp %rsi,0xb0(%rdi) 0.00 : 798139: 72 6d jb 7981a8 : { : int idx; : unsigned int t, : tsize; : : if (size > (1 << ALLOC_MINBITS)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:323 1.47 : 79813b: 31 f6 xor %esi,%esi 0.65 : 79813d: 49 83 fe 08 cmp $0x8,%r14 0.00 : 798141: 77 3d ja 798180 : * corresponding free list to see if there is a free chunk we could reuse. : * If one is found, remove it from the free list, make it again a member : * of the alloc set and return its data address. : */ : fidx = AllocSetFreeIndex(size); : chunk = set->freelist[fidx]; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:735 2.45 : 798143: 48 63 c6 movslq %esi,%rax 0.16 : 798146: 48 8d 48 08 lea 0x8(%rax),%rcx 0.82 : 79814a: 49 8b 14 cc mov (%r12,%rcx,8),%rdx : if (chunk != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:736 6.21 : 79814e: 48 85 d2 test %rdx,%rdx 0.00 : 798151: 0f 84 c9 00 00 00 je 798220 : { : Assert(chunk->size >= size); : : set->freelist[fidx] = (AllocChunk) chunk->aset; 0.49 : 798157: 48 8b 02 mov (%rdx),%rax 0.00 : 79815a: 49 89 04 cc mov %rax,(%r12,%rcx,8) : /* fill the allocated space with junk */ : randomize_mem((char *) AllocChunkGetPointer(chunk), size); : #endif : : AllocAllocInfo(set, chunk); : return AllocChunkGetPointer(chunk); 0.16 : 79815e: 48 8d 42 10 lea 0x10(%rdx),%rax : { : Assert(chunk->size >= size); : : set->freelist[fidx] = (AllocChunk) chunk->aset; : : chunk->aset = (void *) set; 0.00 : 798162: 4c 89 22 mov %r12,(%rdx) : randomize_mem((char *) AllocChunkGetPointer(chunk), size); : #endif : : AllocAllocInfo(set, chunk); : return AllocChunkGetPointer(chunk); : } 0.00 : 798165: 48 8b 5d d8 mov -0x28(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 3.92 : 798169: 4c 8b 65 e0 mov -0x20(%rbp),%r12 3.27 : 79816d: 4c 8b 6d e8 mov -0x18(%rbp),%r13 2.78 : 798171: 4c 8b 75 f0 mov -0x10(%rbp),%r14 1.96 : 798175: 4c 8b 7d f8 mov -0x8(%rbp),%r15 1.31 : 798179: c9 leaveq 3.27 : 79817a: c3 retq 0.00 : 79817b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : unsigned int t, : tsize; : : if (size > (1 << ALLOC_MINBITS)) : { : tsize = (size - 1) >> ALLOC_MINBITS; 0.16 : 798180: 49 8d 46 ff lea -0x1(%r14),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 2.12 : 798184: 48 89 c2 mov %rax,%rdx 2.12 : 798187: 48 c1 ea 03 shr $0x3,%rdx : * justify micro-optimization effort. The best approach seems to be : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; 0.33 : 79818b: 89 d0 mov %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:336 0.65 : 79818d: c1 e8 08 shr $0x8,%eax : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 2.29 : 798190: 85 c0 test %eax,%eax 0.00 : 798192: 74 7c je 798210 0.00 : 798194: 89 c0 mov %eax,%eax 0.00 : 798196: 0f b6 80 80 1e 8e 00 movzbl 0x8e1e80(%rax),%eax 0.00 : 79819d: 8d 70 08 lea 0x8(%rax),%esi 0.00 : 7981a0: eb a1 jmp 798143 0.00 : 7981a2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * If requested size exceeds maximum for chunks, allocate an entire block : * for this request. : */ : if (size > set->allocChunkLimit) : { : chunk_size = MAXALIGN(size); 0.00 : 7981a8: 48 8d 5e 07 lea 0x7(%rsi),%rbx 0.00 : 7981ac: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx : blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; 0.00 : 7981b0: 4c 8d 6b 30 lea 0x30(%rbx),%r13 : block = (AllocBlock) malloc(blksize); 0.00 : 7981b4: 4c 89 ef mov %r13,%rdi 0.00 : 7981b7: e8 74 14 cd ff callq 469630 : if (block == NULL) 0.00 : 7981bc: 48 85 c0 test %rax,%rax : */ : if (size > set->allocChunkLimit) : { : chunk_size = MAXALIGN(size); : blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; : block = (AllocBlock) malloc(blksize); 0.00 : 7981bf: 48 89 c2 mov %rax,%rdx : if (block == NULL) 0.00 : 7981c2: 0f 84 2e 02 00 00 je 7983f6 : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"), : errdetail("Failed on request of size %zu.", size))); : } : block->aset = set; 0.00 : 7981c8: 4c 89 20 mov %r12,(%rax) : block->freeptr = block->endptr = ((char *) block) + blksize; : : chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); 0.00 : 7981cb: 48 8d 72 20 lea 0x20(%rdx),%rsi : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"), : errdetail("Failed on request of size %zu.", size))); : } : block->aset = set; : block->freeptr = block->endptr = ((char *) block) + blksize; 0.00 : 7981cf: 4a 8d 04 28 lea (%rax,%r13,1),%rax : : chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); : chunk->aset = set; 0.00 : 7981d3: 4c 89 62 20 mov %r12,0x20(%rdx) : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"), : errdetail("Failed on request of size %zu.", size))); : } : block->aset = set; : block->freeptr = block->endptr = ((char *) block) + blksize; 0.00 : 7981d7: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 7981db: 48 89 42 10 mov %rax,0x10(%rdx) : : chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); : chunk->aset = set; : chunk->size = chunk_size; 0.00 : 7981df: 48 89 5e 08 mov %rbx,0x8(%rsi) : : /* : * Stick the new block underneath the active allocation block, so that : * we don't lose the use of the space remaining therein. : */ : if (set->blocks != NULL) 0.00 : 7981e3: 49 8b 4c 24 38 mov 0x38(%r12),%rcx 0.00 : 7981e8: 48 85 c9 test %rcx,%rcx 0.00 : 7981eb: 0f 84 cf 01 00 00 je 7983c0 : { : block->next = set->blocks->next; 0.00 : 7981f1: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 7981f5: 48 89 42 08 mov %rax,0x8(%rdx) : set->blocks->next = block; 0.00 : 7981f9: 48 89 51 08 mov %rdx,0x8(%rcx) : * if any, NOACCESS. : */ : VALGRIND_MAKE_MEM_NOACCESS((char *) chunk + ALLOC_CHUNK_PUBLIC, : chunk_size + ALLOC_CHUNKHDRSZ - ALLOC_CHUNK_PUBLIC); : : return AllocChunkGetPointer(chunk); 0.00 : 7981fd: 48 8d 46 10 lea 0x10(%rsi),%rax : randomize_mem((char *) AllocChunkGetPointer(chunk), size); : #endif : : AllocAllocInfo(set, chunk); : return AllocChunkGetPointer(chunk); : } 0.00 : 798201: e9 5f ff ff ff jmpq 798165 0.00 : 798206: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 79820d: 00 00 00 : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 1.80 : 798210: 89 d0 mov %edx,%eax 0.49 : 798212: 0f b6 b0 80 1e 8e 00 movzbl 0x8e1e80(%rax),%esi 1.63 : 798219: e9 25 ff ff ff jmpq 798143 0.00 : 79821e: 66 90 xchg %ax,%ax : : /* : * If there is enough room in the active allocation block, we will put the : * chunk into that block. Else must start a new one. : */ : if ((block = set->blocks) != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:772 3.92 : 798220: 4d 8b 4c 24 38 mov 0x38(%r12),%r9 : } : : /* : * Choose the actual chunk size to allocate. : */ : chunk_size = (1 << ALLOC_MINBITS) << fidx; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:765 0.65 : 798225: b8 08 00 00 00 mov $0x8,%eax 0.49 : 79822a: 89 f1 mov %esi,%ecx 0.16 : 79822c: d3 e0 shl %cl,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:765 5.23 : 79822e: 4c 63 f8 movslq %eax,%r15 : : /* : * If there is enough room in the active allocation block, we will put the : * chunk into that block. Else must start a new one. : */ : if ((block = set->blocks) != NULL) 0.00 : 798231: 4d 85 c9 test %r9,%r9 0.00 : 798234: 0f 84 ce 00 00 00 je 798308 : { : Size availspace = block->endptr - block->freeptr; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:774 0.65 : 79823a: 49 8b 79 10 mov 0x10(%r9),%rdi 1.80 : 79823e: 4d 8b 41 18 mov 0x18(%r9),%r8 : : if (availspace < (chunk_size + ALLOC_CHUNKHDRSZ)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:776 4.25 : 798242: 49 8d 47 10 lea 0x10(%r15),%rax : * If there is enough room in the active allocation block, we will put the : * chunk into that block. Else must start a new one. : */ : if ((block = set->blocks) != NULL) : { : Size availspace = block->endptr - block->freeptr; 0.49 : 798246: 49 29 f8 sub %rdi,%r8 : : if (availspace < (chunk_size + ALLOC_CHUNKHDRSZ)) 1.47 : 798249: 49 39 c0 cmp %rax,%r8 0.00 : 79824c: 0f 83 52 01 00 00 jae 7983a4 : * : * Because we can only get here when there's less than : * ALLOC_CHUNK_LIMIT left in the block, this loop cannot iterate : * more than ALLOCSET_NUM_FREELISTS-1 times. : */ : while (availspace >= ((1 << ALLOC_MINBITS) + ALLOC_CHUNKHDRSZ)) 0.00 : 798252: 49 83 f8 17 cmp $0x17,%r8 0.00 : 798256: 0f 86 ac 00 00 00 jbe 798308 : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 0.00 : 79825c: 41 ba 01 00 00 00 mov $0x1,%r10d : : /* Prepare to initialize the chunk header. */ : VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNK_USED); : : block->freeptr += (availchunk + ALLOC_CHUNKHDRSZ); : availspace -= (availchunk + ALLOC_CHUNKHDRSZ); 0.00 : 798262: 49 c7 c3 f0 ff ff ff mov $0xfffffffffffffff0,%r11 0.00 : 798269: eb 5d jmp 7982c8 0.00 : 79826b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 0.00 : 798270: 89 c0 mov %eax,%eax 0.00 : 798272: 0f b6 88 80 1e 8e 00 movzbl 0x8e1e80(%rax),%ecx 0.00 : 798279: 4c 89 d0 mov %r10,%rax 0.00 : 79827c: 8d 51 08 lea 0x8(%rcx),%edx 0.00 : 79827f: 83 c1 0b add $0xb,%ecx 0.00 : 798282: 48 d3 e0 shl %cl,%rax : /* : * In most cases, we'll get back the index of the next larger : * freelist than the one we need to put this chunk on. The : * exception is when availchunk is exactly a power of 2. : */ : if (availchunk != ((Size) 1 << (a_fidx + ALLOC_MINBITS))) 0.00 : 798285: 48 39 c6 cmp %rax,%rsi 0.00 : 798288: 74 0c je 798296 : { : a_fidx--; 0.16 : 79828a: 83 ea 01 sub $0x1,%edx : Assert(a_fidx >= 0); : availchunk = ((Size) 1 << (a_fidx + ALLOC_MINBITS)); 0.00 : 79828d: 4c 89 d6 mov %r10,%rsi 0.00 : 798290: 8d 4a 03 lea 0x3(%rdx),%ecx 0.00 : 798293: 48 d3 e6 shl %cl,%rsi : chunk = (AllocChunk) (block->freeptr); : : /* Prepare to initialize the chunk header. */ : VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNK_USED); : : block->freeptr += (availchunk + ALLOC_CHUNKHDRSZ); 0.00 : 798296: 48 8d 44 37 10 lea 0x10(%rdi,%rsi,1),%rax 0.00 : 79829b: 49 89 41 10 mov %rax,0x10(%r9) : availspace -= (availchunk + ALLOC_CHUNKHDRSZ); 0.00 : 79829f: 4c 89 d8 mov %r11,%rax : : chunk->size = availchunk; 0.00 : 7982a2: 48 89 77 08 mov %rsi,0x8(%rdi) : : /* Prepare to initialize the chunk header. */ : VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNK_USED); : : block->freeptr += (availchunk + ALLOC_CHUNKHDRSZ); : availspace -= (availchunk + ALLOC_CHUNKHDRSZ); 0.00 : 7982a6: 48 29 f0 sub %rsi,%rax 0.00 : 7982a9: 49 01 c0 add %rax,%r8 : : chunk->size = availchunk; : #ifdef MEMORY_CONTEXT_CHECKING : chunk->requested_size = 0; /* mark it free */ : #endif : chunk->aset = (void *) set->freelist[a_fidx]; 0.00 : 7982ac: 48 63 c2 movslq %edx,%rax 0.00 : 7982af: 48 83 c0 08 add $0x8,%rax : * : * Because we can only get here when there's less than : * ALLOC_CHUNK_LIMIT left in the block, this loop cannot iterate : * more than ALLOCSET_NUM_FREELISTS-1 times. : */ : while (availspace >= ((1 << ALLOC_MINBITS) + ALLOC_CHUNKHDRSZ)) 0.00 : 7982b3: 49 83 f8 17 cmp $0x17,%r8 : : chunk->size = availchunk; : #ifdef MEMORY_CONTEXT_CHECKING : chunk->requested_size = 0; /* mark it free */ : #endif : chunk->aset = (void *) set->freelist[a_fidx]; 0.00 : 7982b7: 49 8b 14 c4 mov (%r12,%rax,8),%rdx 0.00 : 7982bb: 48 89 17 mov %rdx,(%rdi) : set->freelist[a_fidx] = chunk; 0.00 : 7982be: 49 89 3c c4 mov %rdi,(%r12,%rax,8) : * : * Because we can only get here when there's less than : * ALLOC_CHUNK_LIMIT left in the block, this loop cannot iterate : * more than ALLOCSET_NUM_FREELISTS-1 times. : */ : while (availspace >= ((1 << ALLOC_MINBITS) + ALLOC_CHUNKHDRSZ)) 0.00 : 7982c2: 76 44 jbe 798308 0.00 : 7982c4: 49 8b 79 10 mov 0x10(%r9),%rdi : { : Size availchunk = availspace - ALLOC_CHUNKHDRSZ; 0.00 : 7982c8: 49 8d 70 f0 lea -0x10(%r8),%rsi : { : int idx; : unsigned int t, : tsize; : : if (size > (1 << ALLOC_MINBITS)) 0.00 : 7982cc: 31 d2 xor %edx,%edx 0.00 : 7982ce: b8 08 00 00 00 mov $0x8,%eax 0.00 : 7982d3: 48 83 fe 08 cmp $0x8,%rsi 0.00 : 7982d7: 76 ac jbe 798285 : { : tsize = (size - 1) >> ALLOC_MINBITS; 0.00 : 7982d9: 49 8d 40 ef lea -0x11(%r8),%rax 0.00 : 7982dd: 48 89 c2 mov %rax,%rdx 0.00 : 7982e0: 48 c1 ea 03 shr $0x3,%rdx : * justify micro-optimization effort. The best approach seems to be : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; 0.00 : 7982e4: 89 d0 mov %edx,%eax 0.00 : 7982e6: c1 e8 08 shr $0x8,%eax : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 0.00 : 7982e9: 85 c0 test %eax,%eax 0.00 : 7982eb: 75 83 jne 798270 0.00 : 7982ed: 89 d0 mov %edx,%eax 0.00 : 7982ef: 0f b6 90 80 1e 8e 00 movzbl 0x8e1e80(%rax),%edx 0.00 : 7982f6: 4c 89 d0 mov %r10,%rax 0.00 : 7982f9: 8d 4a 03 lea 0x3(%rdx),%ecx 0.00 : 7982fc: 48 d3 e0 shl %cl,%rax 0.00 : 7982ff: eb 84 jmp 798285 0.00 : 798301: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * The first such block has size initBlockSize, and we double the : * space in each succeeding block, but not more than maxBlockSize. : */ : blksize = set->nextBlockSize; 0.00 : 798308: 49 8b 94 24 a8 00 00 mov 0xa8(%r12),%rdx 0.00 : 79830f: 00 : set->nextBlockSize <<= 1; : if (set->nextBlockSize > set->maxBlockSize) 0.16 : 798310: 49 8b 8c 24 a0 00 00 mov 0xa0(%r12),%rcx 0.00 : 798317: 00 : /* : * The first such block has size initBlockSize, and we double the : * space in each succeeding block, but not more than maxBlockSize. : */ : blksize = set->nextBlockSize; : set->nextBlockSize <<= 1; 0.00 : 798318: 48 8d 04 12 lea (%rdx,%rdx,1),%rax : if (set->nextBlockSize > set->maxBlockSize) 0.00 : 79831c: 48 39 c8 cmp %rcx,%rax : /* : * The first such block has size initBlockSize, and we double the : * space in each succeeding block, but not more than maxBlockSize. : */ : blksize = set->nextBlockSize; : set->nextBlockSize <<= 1; 0.00 : 79831f: 49 89 84 24 a8 00 00 mov %rax,0xa8(%r12) 0.00 : 798326: 00 : if (set->nextBlockSize > set->maxBlockSize) 0.00 : 798327: 76 08 jbe 798331 : set->nextBlockSize = set->maxBlockSize; 0.00 : 798329: 49 89 8c 24 a8 00 00 mov %rcx,0xa8(%r12) 0.00 : 798330: 00 : : /* : * If initBlockSize is less than ALLOC_CHUNK_LIMIT, we could need more : * space... but try to keep it a power of 2. : */ : required_size = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; 0.00 : 798331: 4d 8d 6f 30 lea 0x30(%r15),%r13 : while (blksize < required_size) 0.00 : 798335: 4c 39 ea cmp %r13,%rdx 0.00 : 798338: 73 0e jae 798348 0.00 : 79833a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : blksize <<= 1; 0.00 : 798340: 48 01 d2 add %rdx,%rdx : /* : * If initBlockSize is less than ALLOC_CHUNK_LIMIT, we could need more : * space... but try to keep it a power of 2. : */ : required_size = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; : while (blksize < required_size) 0.00 : 798343: 49 39 d5 cmp %rdx,%r13 0.00 : 798346: 77 f8 ja 798340 0.00 : 798348: 48 89 d3 mov %rdx,%rbx 0.00 : 79834b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : while (block == NULL && blksize > 1024 * 1024) : { : blksize >>= 1; : if (blksize < required_size) : break; : block = (AllocBlock) malloc(blksize); 0.00 : 798350: 48 89 df mov %rbx,%rdi 0.00 : 798353: e8 d8 12 cd ff callq 469630 : : /* : * We could be asking for pretty big blocks here, so cope if malloc : * fails. But give up if there's less than a meg or so available... : */ : while (block == NULL && blksize > 1024 * 1024) 0.16 : 798358: 48 85 c0 test %rax,%rax : { : blksize >>= 1; : if (blksize < required_size) : break; : block = (AllocBlock) malloc(blksize); 0.00 : 79835b: 48 89 c2 mov %rax,%rdx : : /* : * We could be asking for pretty big blocks here, so cope if malloc : * fails. But give up if there's less than a meg or so available... : */ : while (block == NULL && blksize > 1024 * 1024) 0.00 : 79835e: 74 78 je 7983d8 : if (blksize < required_size) : break; : block = (AllocBlock) malloc(blksize); : } : : if (block == NULL) 0.00 : 798360: 48 85 d2 test %rdx,%rdx : : /* : * We could be asking for pretty big blocks here, so cope if malloc : * fails. But give up if there's less than a meg or so available... : */ : while (block == NULL && blksize > 1024 * 1024) 0.00 : 798363: 49 89 d1 mov %rdx,%r9 : if (blksize < required_size) : break; : block = (AllocBlock) malloc(blksize); : } : : if (block == NULL) 0.00 : 798366: 0f 84 10 01 00 00 je 79847c : errmsg("out of memory"), : errdetail("Failed on request of size %zu.", size))); : } : : block->aset = set; : block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; 0.00 : 79836c: 48 8d 42 20 lea 0x20(%rdx),%rax : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"), : errdetail("Failed on request of size %zu.", size))); : } : : block->aset = set; 0.00 : 798370: 4c 89 22 mov %r12,(%rdx) : block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; 0.00 : 798373: 48 89 42 10 mov %rax,0x10(%rdx) : block->endptr = ((char *) block) + blksize; 0.00 : 798377: 48 8d 04 1a lea (%rdx,%rbx,1),%rax 0.00 : 79837b: 48 89 42 18 mov %rax,0x18(%rdx) : * cycling even for contexts created with minContextSize = 0; that way : * we don't have to force space to be allocated in contexts that might : * never need any space. Don't mark an oversize block as a keeper, : * however. : */ : if (set->keeper == NULL && blksize == set->initBlockSize) 0.00 : 79837f: 49 83 bc 24 b8 00 00 cmpq $0x0,0xb8(%r12) 0.00 : 798386: 00 00 0.00 : 798388: 0f 84 99 00 00 00 je 798427 : : /* Mark unallocated space NOACCESS. */ : VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, : blksize - ALLOC_BLOCKHDRSZ); : : block->next = set->blocks; 0.00 : 79838e: 49 8b 44 24 38 mov 0x38(%r12),%rax 0.00 : 798393: 48 89 42 08 mov %rax,0x8(%rdx) : set->blocks = block; 0.00 : 798397: 49 89 54 24 38 mov %rdx,0x38(%r12) 0.00 : 79839c: 49 8d 47 10 lea 0x10(%r15),%rax 0.00 : 7983a0: 48 8b 7a 10 mov 0x10(%rdx),%rdi : chunk = (AllocChunk) (block->freeptr); : : /* Prepare to initialize the chunk header. */ : VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNK_USED); : : block->freeptr += (chunk_size + ALLOC_CHUNKHDRSZ); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:908 0.82 : 7983a4: 48 8d 04 07 lea (%rdi,%rax,1),%rax 1.47 : 7983a8: 49 89 41 10 mov %rax,0x10(%r9) : Assert(block->freeptr <= block->endptr); : : chunk->aset = (void *) set; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:911 3.43 : 7983ac: 4c 89 27 mov %r12,(%rdi) : /* fill the allocated space with junk */ : randomize_mem((char *) AllocChunkGetPointer(chunk), size); : #endif : : AllocAllocInfo(set, chunk); : return AllocChunkGetPointer(chunk); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:927 8.99 : 7983af: 48 8d 47 10 lea 0x10(%rdi),%rax : : block->freeptr += (chunk_size + ALLOC_CHUNKHDRSZ); : Assert(block->freeptr <= block->endptr); : : chunk->aset = (void *) set; : chunk->size = chunk_size; 0.16 : 7983b3: 4c 89 7f 08 mov %r15,0x8(%rdi) : randomize_mem((char *) AllocChunkGetPointer(chunk), size); : #endif : : AllocAllocInfo(set, chunk); : return AllocChunkGetPointer(chunk); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:928 3.59 : 7983b7: e9 a9 fd ff ff jmpq 798165 0.00 : 7983bc: 0f 1f 40 00 nopl 0x0(%rax) : block->next = set->blocks->next; : set->blocks->next = block; : } : else : { : block->next = NULL; 0.00 : 7983c0: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 7983c7: 00 : set->blocks = block; 0.00 : 7983c8: 49 89 54 24 38 mov %rdx,0x38(%r12) 0.00 : 7983cd: e9 2b fe ff ff jmpq 7981fd 0.00 : 7983d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * We could be asking for pretty big blocks here, so cope if malloc : * fails. But give up if there's less than a meg or so available... : */ : while (block == NULL && blksize > 1024 * 1024) 0.00 : 7983d8: 48 81 fb 00 00 10 00 cmp $0x100000,%rbx 0.00 : 7983df: 0f 86 7b ff ff ff jbe 798360 : { : blksize >>= 1; 0.00 : 7983e5: 48 d1 eb shr %rbx : if (blksize < required_size) 0.00 : 7983e8: 49 39 dd cmp %rbx,%r13 0.00 : 7983eb: 0f 86 5f ff ff ff jbe 798350 0.00 : 7983f1: e9 6a ff ff ff jmpq 798360 : chunk_size = MAXALIGN(size); : blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; : block = (AllocBlock) malloc(blksize); : if (block == NULL) : { : MemoryContextStats(TopMemoryContext); 0.00 : 7983f6: 48 8b 3d 6b 24 42 00 mov 0x42246b(%rip),%rdi # bba868 0.00 : 7983fd: e8 3e 07 00 00 callq 798b40 : ereport(ERROR, 0.00 : 798402: 45 31 c0 xor %r8d,%r8d 0.00 : 798405: b9 80 1f 8e 00 mov $0x8e1f80,%ecx 0.00 : 79840a: ba a7 02 00 00 mov $0x2a7,%edx : } : : if (block == NULL) : { : MemoryContextStats(TopMemoryContext); : ereport(ERROR, 0.00 : 79840f: be 6d 1d 8e 00 mov $0x8e1d6d,%esi 0.00 : 798414: bf 14 00 00 00 mov $0x14,%edi 0.00 : 798419: e8 a2 26 fe ff callq 77aac0 0.00 : 79841e: 84 c0 test %al,%al 0.00 : 798420: 75 20 jne 798442 0.00 : 798422: e8 a9 10 cd ff callq 4694d0 : * cycling even for contexts created with minContextSize = 0; that way : * we don't have to force space to be allocated in contexts that might : * never need any space. Don't mark an oversize block as a keeper, : * however. : */ : if (set->keeper == NULL && blksize == set->initBlockSize) 0.00 : 798427: 49 39 9c 24 98 00 00 cmp %rbx,0x98(%r12) 0.00 : 79842e: 00 0.00 : 79842f: 0f 85 59 ff ff ff jne 79838e : set->keeper = block; 0.00 : 798435: 49 89 94 24 b8 00 00 mov %rdx,0xb8(%r12) 0.00 : 79843c: 00 0.00 : 79843d: e9 4c ff ff ff jmpq 79838e : } : : if (block == NULL) : { : MemoryContextStats(TopMemoryContext); : ereport(ERROR, 0.00 : 798442: 4c 89 f6 mov %r14,%rsi 0.00 : 798445: bf a8 1d 8e 00 mov $0x8e1da8,%edi 0.00 : 79844a: 31 c0 xor %eax,%eax 0.00 : 79844c: e8 df 40 fe ff callq 77c530 0.00 : 798451: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 798456: 41 89 c4 mov %eax,%r12d 0.00 : 798459: 31 c0 xor %eax,%eax 0.00 : 79845b: e8 40 44 fe ff callq 77c8a0 0.00 : 798460: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 798465: 89 c3 mov %eax,%ebx 0.00 : 798467: e8 e4 48 fe ff callq 77cd50 0.00 : 79846c: 44 89 e2 mov %r12d,%edx 0.00 : 79846f: 89 c7 mov %eax,%edi 0.00 : 798471: 89 de mov %ebx,%esi 0.00 : 798473: 31 c0 xor %eax,%eax 0.00 : 798475: e8 66 21 fe ff callq 77a5e0 0.00 : 79847a: eb a6 jmp 798422 : block = (AllocBlock) malloc(blksize); : } : : if (block == NULL) : { : MemoryContextStats(TopMemoryContext); 0.00 : 79847c: 48 8b 3d e5 23 42 00 mov 0x4223e5(%rip),%rdi # bba868 0.00 : 798483: e8 b8 06 00 00 callq 798b40 : ereport(ERROR, 0.00 : 798488: 45 31 c0 xor %r8d,%r8d 0.00 : 79848b: b9 80 1f 8e 00 mov $0x8e1f80,%ecx 0.00 : 798490: ba 69 03 00 00 mov $0x369,%edx 0.00 : 798495: e9 75 ff ff ff jmpq 79840f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.73 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:85 7.50 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:132 7.33 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:143 4.26 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:117 4.26 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:131 3.92 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:143 3.75 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:154 3.75 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:145 3.58 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:144 3.07 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:154 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:85 2.73 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:90 2.73 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:154 2.73 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:130 2.39 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:143 2.21 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:85 2.21 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:88 2.21 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:110 2.21 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:111 2.21 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:130 2.04 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:90 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:85 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:111 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:130 1.36 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:111 1.36 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:145 1.19 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:154 1.19 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:117 1.19 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:130 1.19 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:147 1.02 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:154 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:149 0.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:149 0.68 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:85 0.68 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:154 0.68 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:149 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:132 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:130 0.51 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:147 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046e6d0 : : * existing tuple values, update the index tuple and return true. Otherwise, : * return false and do not modify in this case. : */ : Datum : minmaxAddValue(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:85 10.73 : 46e6d0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:85 2.90 : 46e6d1: 48 89 e5 mov %rsp,%rbp 0.00 : 46e6d4: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.68 : 46e6d8: 4c 89 65 e0 mov %r12,-0x20(%rbp) 1.87 : 46e6dc: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 46e6e0: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.34 : 46e6e4: 4c 89 7d f8 mov %r15,-0x8(%rbp) 2.21 : 46e6e8: 48 83 ec 30 sub $0x30,%rsp : BrinDesc *bdesc = (BrinDesc *) PG_GETARG_POINTER(0); : BrinValues *column = (BrinValues *) PG_GETARG_POINTER(1); : Datum newval = PG_GETARG_DATUM(2); : bool isnull = PG_GETARG_DATUM(3); : Oid colloid = PG_GET_COLLATION(); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:90 2.73 : 46e6ec: 8b 47 18 mov 0x18(%rdi),%eax : * return false and do not modify in this case. : */ : Datum : minmaxAddValue(PG_FUNCTION_ARGS) : { : BrinDesc *bdesc = (BrinDesc *) PG_GETARG_POINTER(0); 0.00 : 46e6ef: 4c 8b 77 20 mov 0x20(%rdi),%r14 : BrinValues *column = (BrinValues *) PG_GETARG_POINTER(1); 0.00 : 46e6f3: 4c 8b 67 28 mov 0x28(%rdi),%r12 : Datum newval = PG_GETARG_DATUM(2); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:88 2.21 : 46e6f7: 4c 8b 7f 30 mov 0x30(%rdi),%r15 : bool isnull = PG_GETARG_DATUM(3); : Oid colloid = PG_GET_COLLATION(); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:90 2.04 : 46e6fb: 89 45 d4 mov %eax,-0x2c(%rbp) : : /* : * If the new value is null, we record that we saw it if it's the first : * one; otherwise, there's nothing to do. : */ : if (isnull) 0.00 : 46e6fe: 80 7f 38 00 cmpb $0x0,0x38(%rdi) 0.00 : 46e702: 74 2c je 46e730 : { : if (column->hasnulls) 0.00 : 46e704: 31 c0 xor %eax,%eax 0.00 : 46e706: 41 80 7c 24 02 00 cmpb $0x0,0x2(%r12) 0.00 : 46e70c: 75 0b jne 46e719 : PG_RETURN_BOOL(false); : : column->hasnulls = true; 0.00 : 46e70e: 41 c6 44 24 02 01 movb $0x1,0x2(%r12) 0.00 : 46e714: b8 01 00 00 00 mov $0x1,%eax : column->values[1] = datumCopy(newval, attr->attbyval, attr->attlen); : updated = true; : } : : PG_RETURN_BOOL(updated); : } /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:154 3.07 : 46e719: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.68 : 46e71d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.34 : 46e721: 4c 8b 6d e8 mov -0x18(%rbp),%r13 1.02 : 46e725: 4c 8b 75 f0 mov -0x10(%rbp),%r14 2.73 : 46e729: 4c 8b 7d f8 mov -0x8(%rbp),%r15 1.19 : 46e72d: c9 leaveq 3.75 : 46e72e: c3 retq 0.00 : 46e72f: 90 nop : column->hasnulls = true; : PG_RETURN_BOOL(true); : } : : attno = column->attno; : attr = bdesc->bd_tupdesc->attrs[attno - 1]; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:111 1.87 : 46e730: 49 8b 46 10 mov 0x10(%r14),%rax : : column->hasnulls = true; : PG_RETURN_BOOL(true); : } : : attno = column->attno; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:110 2.21 : 46e734: 41 0f b7 0c 24 movzwl (%r12),%ecx : : /* : * If the recorded value is null, store the new value (which we know to be : * not null) as both minimum and maximum, and we're done. : */ : if (column->allnulls) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:117 1.19 : 46e739: 41 80 7c 24 03 00 cmpb $0x0,0x3(%r12) : column->hasnulls = true; : PG_RETURN_BOOL(true); : } : : attno = column->attno; : attr = bdesc->bd_tupdesc->attrs[attno - 1]; 0.17 : 46e73f: 48 8b 40 08 mov 0x8(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:111 1.36 : 46e743: 48 0f bf d1 movswq %cx,%rdx 2.21 : 46e747: 4c 8b 6c d0 f8 mov -0x8(%rax,%rdx,8),%r13 : : /* : * If the recorded value is null, store the new value (which we know to be : * not null) as both minimum and maximum, and we're done. : */ : if (column->allnulls) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:117 4.26 : 46e74c: 0f 85 b6 00 00 00 jne 46e808 : /* : * Otherwise, need to compare the new value with the existing boundaries : * and update them accordingly. First check if it's less than the : * existing minimum. : */ : cmpFn = minmax_get_procinfo(bdesc, attno, PROCNUM_LESS); 0.00 : 46e752: 0f b7 c9 movzwl %cx,%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:130 1.87 : 46e755: ba 05 00 00 00 mov $0x5,%edx 2.21 : 46e75a: 4c 89 f7 mov %r14,%rdi 1.19 : 46e75d: 89 ce mov %ecx,%esi 0.00 : 46e75f: 89 4d d0 mov %ecx,-0x30(%rbp) : compar = FunctionCall2Coll(cmpFn, colloid, newval, column->values[0]); : if (DatumGetBool(compar)) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:132 0.51 : 46e762: 31 db xor %ebx,%ebx : /* : * Otherwise, need to compare the new value with the existing boundaries : * and update them accordingly. First check if it's less than the : * existing minimum. : */ : cmpFn = minmax_get_procinfo(bdesc, attno, PROCNUM_LESS); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:130 0.51 : 46e764: e8 17 fd ff ff callq 46e480 2.73 : 46e769: 48 89 c7 mov %rax,%rdi : compar = FunctionCall2Coll(cmpFn, colloid, newval, column->values[0]); 0.34 : 46e76c: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 46e771: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 46e774: 4c 89 fa mov %r15,%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:131 4.26 : 46e777: 48 8b 08 mov (%rax),%rcx 0.17 : 46e77a: e8 b1 f8 30 00 callq 77e030 : if (DatumGetBool(compar)) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:132 7.50 : 46e77f: 84 c0 test %al,%al 0.00 : 46e781: 74 2a je 46e7ad : { : if (!attr->attbyval) 0.00 : 46e783: 41 0f b6 45 5c movzbl 0x5c(%r13),%eax 0.00 : 46e788: 84 c0 test %al,%al 0.00 : 46e78a: 0f 84 f0 00 00 00 je 46e880 : pfree(DatumGetPointer(column->values[0])); : column->values[0] = datumCopy(newval, attr->attbyval, attr->attlen); 0.00 : 46e790: 41 0f bf 55 4c movswl 0x4c(%r13),%edx 0.00 : 46e795: 49 8b 5c 24 08 mov 0x8(%r12),%rbx 0.00 : 46e79a: 0f be f0 movsbl %al,%esi 0.00 : 46e79d: 4c 89 ff mov %r15,%rdi 0.00 : 46e7a0: e8 cb 17 26 00 callq 6cff70 0.00 : 46e7a5: 48 89 03 mov %rax,(%rbx) 0.00 : 46e7a8: bb 01 00 00 00 mov $0x1,%ebx : } : : /* : * And now compare it to the existing maximum. : */ : cmpFn = minmax_get_procinfo(bdesc, attno, PROCNUM_GREATER); /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:143 3.92 : 46e7ad: 8b 75 d0 mov -0x30(%rbp),%esi /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:143 7.33 : 46e7b0: ba 08 00 00 00 mov $0x8,%edx 0.00 : 46e7b5: 4c 89 f7 mov %r14,%rdi 0.00 : 46e7b8: e8 c3 fc ff ff callq 46e480 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:143 2.39 : 46e7bd: 48 89 c7 mov %rax,%rdi : compar = FunctionCall2Coll(cmpFn, colloid, newval, column->values[1]); 0.00 : 46e7c0: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 46e7c5: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 46e7c8: 4c 89 fa mov %r15,%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:144 3.58 : 46e7cb: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 46e7cf: e8 5c f8 30 00 callq 77e030 : if (DatumGetBool(compar)) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:145 1.36 : 46e7d4: 84 c0 test %al,%al 0.00 : 46e7d6: 74 78 je 46e850 : { : if (!attr->attbyval) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:147 0.51 : 46e7d8: 41 0f b6 45 5c movzbl 0x5c(%r13),%eax 1.19 : 46e7dd: 84 c0 test %al,%al 0.00 : 46e7df: 74 7f je 46e860 : pfree(DatumGetPointer(column->values[1])); : column->values[1] = datumCopy(newval, attr->attbyval, attr->attlen); 0.34 : 46e7e1: 41 0f bf 55 4c movswl 0x4c(%r13),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:149 0.85 : 46e7e6: 49 8b 5c 24 08 mov 0x8(%r12),%rbx 0.68 : 46e7eb: 0f be f0 movsbl %al,%esi 0.00 : 46e7ee: 4c 89 ff mov %r15,%rdi 0.00 : 46e7f1: e8 7a 17 26 00 callq 6cff70 0.00 : 46e7f6: 48 89 43 08 mov %rax,0x8(%rbx) 0.85 : 46e7fa: b8 01 00 00 00 mov $0x1,%eax 0.00 : 46e7ff: e9 15 ff ff ff jmpq 46e719 0.00 : 46e804: 0f 1f 40 00 nopl 0x0(%rax) : * If the recorded value is null, store the new value (which we know to be : * not null) as both minimum and maximum, and we're done. : */ : if (column->allnulls) : { : column->values[0] = datumCopy(newval, attr->attbyval, attr->attlen); 0.00 : 46e808: 41 0f bf 55 4c movswl 0x4c(%r13),%edx 0.17 : 46e80d: 41 0f be 75 5c movsbl 0x5c(%r13),%esi 0.00 : 46e812: 4c 89 ff mov %r15,%rdi 0.00 : 46e815: 49 8b 5c 24 08 mov 0x8(%r12),%rbx 0.00 : 46e81a: e8 51 17 26 00 callq 6cff70 0.00 : 46e81f: 48 89 03 mov %rax,(%rbx) : column->values[1] = datumCopy(newval, attr->attbyval, attr->attlen); 0.00 : 46e822: 41 0f bf 55 4c movswl 0x4c(%r13),%edx 0.00 : 46e827: 4c 89 ff mov %r15,%rdi 0.00 : 46e82a: 41 0f be 75 5c movsbl 0x5c(%r13),%esi 0.00 : 46e82f: 49 8b 5c 24 08 mov 0x8(%r12),%rbx 0.00 : 46e834: e8 37 17 26 00 callq 6cff70 0.00 : 46e839: 48 89 43 08 mov %rax,0x8(%rbx) : column->allnulls = false; 0.00 : 46e83d: 41 c6 44 24 03 00 movb $0x0,0x3(%r12) 0.00 : 46e843: b8 01 00 00 00 mov $0x1,%eax : column->values[1] = datumCopy(newval, attr->attbyval, attr->attlen); : updated = true; : } : : PG_RETURN_BOOL(updated); : } 0.00 : 46e848: e9 cc fe ff ff jmpq 46e719 0.00 : 46e84d: 0f 1f 00 nopl (%rax) : /* : * And now compare it to the existing maximum. : */ : cmpFn = minmax_get_procinfo(bdesc, attno, PROCNUM_GREATER); : compar = FunctionCall2Coll(cmpFn, colloid, newval, column->values[1]); : if (DatumGetBool(compar)) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_minmax.c:145 3.75 : 46e850: 48 89 d8 mov %rbx,%rax 0.00 : 46e853: 83 e0 01 and $0x1,%eax 0.00 : 46e856: e9 be fe ff ff jmpq 46e719 0.00 : 46e85b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : if (!attr->attbyval) : pfree(DatumGetPointer(column->values[1])); 0.00 : 46e860: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 46e865: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 46e869: e8 12 a3 32 00 callq 798b80 0.00 : 46e86e: 41 0f b6 45 5c movzbl 0x5c(%r13),%eax 0.00 : 46e873: e9 69 ff ff ff jmpq 46e7e1 0.00 : 46e878: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46e87f: 00 : cmpFn = minmax_get_procinfo(bdesc, attno, PROCNUM_LESS); : compar = FunctionCall2Coll(cmpFn, colloid, newval, column->values[0]); : if (DatumGetBool(compar)) : { : if (!attr->attbyval) : pfree(DatumGetPointer(column->values[0])); 0.00 : 46e880: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 46e885: 48 8b 38 mov (%rax),%rdi 0.00 : 46e888: e8 f3 a2 32 00 callq 798b80 0.00 : 46e88d: 41 0f b6 45 5c movzbl 0x5c(%r13),%eax 0.00 : 46e892: e9 f9 fe ff ff jmpq 46e790 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 7.48 ??:0 7.30 ??:0 5.57 ??:0 5.57 ??:0 3.13 ??:0 2.26 ??:0 1.91 ??:0 1.91 ??:0 1.91 ??:0 1.91 ??:0 1.74 ??:0 1.74 ??:0 1.57 ??:0 1.57 ??:0 1.57 ??:0 1.39 ??:0 1.39 ??:0 1.39 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.04 ??:0 1.04 ??:0 1.04 ??:0 1.04 ??:0 0.87 ??:0 0.87 ??:0 0.87 ??:0 0.87 ??:0 0.87 ??:0 0.87 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.70 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 0.52 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000083470 <__GI_memset>: ??:0 7.30 : 83470: 48 83 fa 01 cmp $0x1,%rdx 5.57 : 83474: 48 89 f8 mov %rdi,%rax 0.00 : 83477: 75 04 jne 8347d <__GI_memset+0xd> 0.00 : 83479: 40 88 37 mov %sil,(%rdi) 0.17 : 8347c: c3 retq ??:0 3.13 : 8347d: 49 b9 01 01 01 01 01 movabs $0x101010101010101,%r9 0.00 : 83484: 01 01 01 1.39 : 83487: 49 89 d0 mov %rdx,%r8 2.26 : 8348a: 48 0f b6 d6 movzbq %sil,%rdx 0.17 : 8348e: 49 0f af d1 imul %r9,%rdx ??:0 5.57 : 83492: 49 81 f8 90 00 00 00 cmp $0x90,%r8 0.00 : 83499: 0f 87 e1 02 00 00 ja 83780 <__GI_memset+0x310> 0.17 : 8349f: 4c 01 c7 add %r8,%rdi 0.17 : 834a2: 4c 8d 1d 13 00 00 00 lea 0x13(%rip),%r11 # 834bc <__GI_memset+0x4c> ??:0 1.22 : 834a9: 48 8d 0d 60 2d 0b 00 lea 0xb2d60(%rip),%rcx # 136210 1.74 : 834b0: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx ??:0 7.48 : 834b5: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 ??:0 1.91 : 834b9: 41 ff e3 jmpq *%r11 0.00 : 834bc: c3 retq 0.00 : 834bd: 0f 1f 00 nopl (%rax) 0.00 : 834c0: 48 89 97 77 ff ff ff mov %rdx,-0x89(%rdi) 0.17 : 834c7: 48 89 97 7f ff ff ff mov %rdx,-0x81(%rdi) 0.17 : 834ce: 48 89 57 87 mov %rdx,-0x79(%rdi) 0.00 : 834d2: 48 89 57 8f mov %rdx,-0x71(%rdi) 0.00 : 834d6: 48 89 57 97 mov %rdx,-0x69(%rdi) 0.00 : 834da: 48 89 57 9f mov %rdx,-0x61(%rdi) 0.00 : 834de: 48 89 57 a7 mov %rdx,-0x59(%rdi) 0.00 : 834e2: 48 89 57 af mov %rdx,-0x51(%rdi) 0.00 : 834e6: 48 89 57 b7 mov %rdx,-0x49(%rdi) 0.00 : 834ea: 48 89 57 bf mov %rdx,-0x41(%rdi) 0.00 : 834ee: 48 89 57 c7 mov %rdx,-0x39(%rdi) 0.00 : 834f2: 48 89 57 cf mov %rdx,-0x31(%rdi) 0.00 : 834f6: 48 89 57 d7 mov %rdx,-0x29(%rdi) 0.00 : 834fa: 48 89 57 df mov %rdx,-0x21(%rdi) 0.00 : 834fe: 48 89 57 e7 mov %rdx,-0x19(%rdi) 0.00 : 83502: 48 89 57 ef mov %rdx,-0x11(%rdi) 1.91 : 83506: 48 89 57 f7 mov %rdx,-0x9(%rdi) 1.91 : 8350a: 88 57 ff mov %dl,-0x1(%rdi) 0.17 : 8350d: c3 retq 0.00 : 8350e: 66 90 xchg %ax,%ax 0.00 : 83510: 48 89 97 70 ff ff ff mov %rdx,-0x90(%rdi) 0.00 : 83517: 48 89 97 78 ff ff ff mov %rdx,-0x88(%rdi) 0.00 : 8351e: 48 89 57 80 mov %rdx,-0x80(%rdi) 0.00 : 83522: 48 89 57 88 mov %rdx,-0x78(%rdi) 0.00 : 83526: 48 89 57 90 mov %rdx,-0x70(%rdi) 0.00 : 8352a: 48 89 57 98 mov %rdx,-0x68(%rdi) 0.00 : 8352e: 48 89 57 a0 mov %rdx,-0x60(%rdi) 0.00 : 83532: 48 89 57 a8 mov %rdx,-0x58(%rdi) 0.00 : 83536: 48 89 57 b0 mov %rdx,-0x50(%rdi) 0.00 : 8353a: 48 89 57 b8 mov %rdx,-0x48(%rdi) 0.00 : 8353e: 48 89 57 c0 mov %rdx,-0x40(%rdi) 0.00 : 83542: 48 89 57 c8 mov %rdx,-0x38(%rdi) 0.00 : 83546: 48 89 57 d0 mov %rdx,-0x30(%rdi) 0.00 : 8354a: 48 89 57 d8 mov %rdx,-0x28(%rdi) 0.00 : 8354e: 48 89 57 e0 mov %rdx,-0x20(%rdi) 0.00 : 83552: 48 89 57 e8 mov %rdx,-0x18(%rdi) 1.39 : 83556: 48 89 57 f0 mov %rdx,-0x10(%rdi) 1.57 : 8355a: 48 89 57 f8 mov %rdx,-0x8(%rdi) 1.57 : 8355e: c3 retq 0.00 : 8355f: 90 nop 0.00 : 83560: 48 89 97 76 ff ff ff mov %rdx,-0x8a(%rdi) 0.00 : 83567: 48 89 97 7e ff ff ff mov %rdx,-0x82(%rdi) 0.00 : 8356e: 48 89 57 86 mov %rdx,-0x7a(%rdi) 0.00 : 83572: 48 89 57 8e mov %rdx,-0x72(%rdi) 0.00 : 83576: 48 89 57 96 mov %rdx,-0x6a(%rdi) 0.00 : 8357a: 48 89 57 9e mov %rdx,-0x62(%rdi) 0.00 : 8357e: 48 89 57 a6 mov %rdx,-0x5a(%rdi) 0.00 : 83582: 48 89 57 ae mov %rdx,-0x52(%rdi) 0.00 : 83586: 48 89 57 b6 mov %rdx,-0x4a(%rdi) 0.00 : 8358a: 48 89 57 be mov %rdx,-0x42(%rdi) 0.00 : 8358e: 48 89 57 c6 mov %rdx,-0x3a(%rdi) 0.00 : 83592: 48 89 57 ce mov %rdx,-0x32(%rdi) 0.00 : 83596: 48 89 57 d6 mov %rdx,-0x2a(%rdi) 0.00 : 8359a: 48 89 57 de mov %rdx,-0x22(%rdi) 0.00 : 8359e: 48 89 57 e6 mov %rdx,-0x1a(%rdi) 0.00 : 835a2: 48 89 57 ee mov %rdx,-0x12(%rdi) 0.00 : 835a6: 48 89 57 f6 mov %rdx,-0xa(%rdi) 0.17 : 835aa: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 835ae: c3 retq 0.00 : 835af: 90 nop 0.00 : 835b0: 48 89 97 75 ff ff ff mov %rdx,-0x8b(%rdi) 0.00 : 835b7: 48 89 97 7d ff ff ff mov %rdx,-0x83(%rdi) 0.00 : 835be: 48 89 57 85 mov %rdx,-0x7b(%rdi) 0.00 : 835c2: 48 89 57 8d mov %rdx,-0x73(%rdi) 0.00 : 835c6: 48 89 57 95 mov %rdx,-0x6b(%rdi) 0.00 : 835ca: 48 89 57 9d mov %rdx,-0x63(%rdi) 0.00 : 835ce: 48 89 57 a5 mov %rdx,-0x5b(%rdi) 0.00 : 835d2: 48 89 57 ad mov %rdx,-0x53(%rdi) 0.00 : 835d6: 48 89 57 b5 mov %rdx,-0x4b(%rdi) 0.00 : 835da: 48 89 57 bd mov %rdx,-0x43(%rdi) 0.00 : 835de: 48 89 57 c5 mov %rdx,-0x3b(%rdi) 0.00 : 835e2: 48 89 57 cd mov %rdx,-0x33(%rdi) 0.00 : 835e6: 48 89 57 d5 mov %rdx,-0x2b(%rdi) 0.00 : 835ea: 48 89 57 dd mov %rdx,-0x23(%rdi) 0.00 : 835ee: 48 89 57 e5 mov %rdx,-0x1b(%rdi) 0.00 : 835f2: 48 89 57 ed mov %rdx,-0x13(%rdi) 0.00 : 835f6: 48 89 57 f5 mov %rdx,-0xb(%rdi) 1.22 : 835fa: 66 89 57 fd mov %dx,-0x3(%rdi) 0.35 : 835fe: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83601: c3 retq 0.00 : 83602: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 83609: 1f 84 00 00 00 00 00 0.00 : 83610: 48 89 97 74 ff ff ff mov %rdx,-0x8c(%rdi) 0.17 : 83617: 48 89 97 7c ff ff ff mov %rdx,-0x84(%rdi) 0.00 : 8361e: 48 89 57 84 mov %rdx,-0x7c(%rdi) 0.17 : 83622: 48 89 57 8c mov %rdx,-0x74(%rdi) 0.00 : 83626: 48 89 57 94 mov %rdx,-0x6c(%rdi) 0.00 : 8362a: 48 89 57 9c mov %rdx,-0x64(%rdi) 0.00 : 8362e: 48 89 57 a4 mov %rdx,-0x5c(%rdi) 0.00 : 83632: 48 89 57 ac mov %rdx,-0x54(%rdi) 0.17 : 83636: 48 89 57 b4 mov %rdx,-0x4c(%rdi) 0.00 : 8363a: 48 89 57 bc mov %rdx,-0x44(%rdi) 0.00 : 8363e: 48 89 57 c4 mov %rdx,-0x3c(%rdi) 0.00 : 83642: 48 89 57 cc mov %rdx,-0x34(%rdi) 0.00 : 83646: 48 89 57 d4 mov %rdx,-0x2c(%rdi) 0.00 : 8364a: 48 89 57 dc mov %rdx,-0x24(%rdi) 0.00 : 8364e: 48 89 57 e4 mov %rdx,-0x1c(%rdi) 0.00 : 83652: 48 89 57 ec mov %rdx,-0x14(%rdi) 0.00 : 83656: 48 89 57 f4 mov %rdx,-0xc(%rdi) 0.00 : 8365a: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 8365d: c3 retq 0.00 : 8365e: 66 90 xchg %ax,%ax 0.00 : 83660: 48 89 97 73 ff ff ff mov %rdx,-0x8d(%rdi) 0.00 : 83667: 48 89 97 7b ff ff ff mov %rdx,-0x85(%rdi) 0.17 : 8366e: 48 89 57 83 mov %rdx,-0x7d(%rdi) 0.00 : 83672: 48 89 57 8b mov %rdx,-0x75(%rdi) 0.00 : 83676: 48 89 57 93 mov %rdx,-0x6d(%rdi) 0.00 : 8367a: 48 89 57 9b mov %rdx,-0x65(%rdi) 0.00 : 8367e: 48 89 57 a3 mov %rdx,-0x5d(%rdi) 0.00 : 83682: 48 89 57 ab mov %rdx,-0x55(%rdi) 0.00 : 83686: 48 89 57 b3 mov %rdx,-0x4d(%rdi) 0.00 : 8368a: 48 89 57 bb mov %rdx,-0x45(%rdi) 0.00 : 8368e: 48 89 57 c3 mov %rdx,-0x3d(%rdi) 0.00 : 83692: 48 89 57 cb mov %rdx,-0x35(%rdi) 0.00 : 83696: 48 89 57 d3 mov %rdx,-0x2d(%rdi) 0.00 : 8369a: 48 89 57 db mov %rdx,-0x25(%rdi) 0.00 : 8369e: 48 89 57 e3 mov %rdx,-0x1d(%rdi) 1.22 : 836a2: 48 89 57 eb mov %rdx,-0x15(%rdi) 0.52 : 836a6: 48 89 57 f3 mov %rdx,-0xd(%rdi) 0.87 : 836aa: 89 57 fb mov %edx,-0x5(%rdi) 0.70 : 836ad: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 836b0: c3 retq 0.00 : 836b1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 836b8: 0f 1f 84 00 00 00 00 0.00 : 836bf: 00 0.00 : 836c0: 48 89 97 72 ff ff ff mov %rdx,-0x8e(%rdi) 0.00 : 836c7: 48 89 97 7a ff ff ff mov %rdx,-0x86(%rdi) 0.17 : 836ce: 48 89 57 82 mov %rdx,-0x7e(%rdi) 0.00 : 836d2: 48 89 57 8a mov %rdx,-0x76(%rdi) 0.17 : 836d6: 48 89 57 92 mov %rdx,-0x6e(%rdi) 0.00 : 836da: 48 89 57 9a mov %rdx,-0x66(%rdi) 0.00 : 836de: 48 89 57 a2 mov %rdx,-0x5e(%rdi) 0.00 : 836e2: 48 89 57 aa mov %rdx,-0x56(%rdi) 0.00 : 836e6: 48 89 57 b2 mov %rdx,-0x4e(%rdi) 0.00 : 836ea: 48 89 57 ba mov %rdx,-0x46(%rdi) 0.00 : 836ee: 48 89 57 c2 mov %rdx,-0x3e(%rdi) 0.00 : 836f2: 48 89 57 ca mov %rdx,-0x36(%rdi) 0.00 : 836f6: 48 89 57 d2 mov %rdx,-0x2e(%rdi) 0.00 : 836fa: 48 89 57 da mov %rdx,-0x26(%rdi) 0.00 : 836fe: 48 89 57 e2 mov %rdx,-0x1e(%rdi) 0.00 : 83702: 48 89 57 ea mov %rdx,-0x16(%rdi) 0.17 : 83706: 48 89 57 f2 mov %rdx,-0xe(%rdi) 0.35 : 8370a: 89 57 fa mov %edx,-0x6(%rdi) 1.04 : 8370d: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 83711: c3 retq 0.00 : 83712: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 83719: 1f 84 00 00 00 00 00 0.00 : 83720: 48 89 97 71 ff ff ff mov %rdx,-0x8f(%rdi) 0.35 : 83727: 48 89 97 79 ff ff ff mov %rdx,-0x87(%rdi) 0.00 : 8372e: 48 89 57 81 mov %rdx,-0x7f(%rdi) 0.00 : 83732: 48 89 57 89 mov %rdx,-0x77(%rdi) 0.00 : 83736: 48 89 57 91 mov %rdx,-0x6f(%rdi) 0.00 : 8373a: 48 89 57 99 mov %rdx,-0x67(%rdi) 0.00 : 8373e: 48 89 57 a1 mov %rdx,-0x5f(%rdi) 0.00 : 83742: 48 89 57 a9 mov %rdx,-0x57(%rdi) 0.00 : 83746: 48 89 57 b1 mov %rdx,-0x4f(%rdi) 0.00 : 8374a: 48 89 57 b9 mov %rdx,-0x47(%rdi) 0.00 : 8374e: 48 89 57 c1 mov %rdx,-0x3f(%rdi) 0.00 : 83752: 48 89 57 c9 mov %rdx,-0x37(%rdi) 0.00 : 83756: 48 89 57 d1 mov %rdx,-0x2f(%rdi) 0.00 : 8375a: 48 89 57 d9 mov %rdx,-0x27(%rdi) 0.00 : 8375e: 48 89 57 e1 mov %rdx,-0x1f(%rdi) 0.00 : 83762: 48 89 57 e9 mov %rdx,-0x17(%rdi) 0.00 : 83766: 48 89 57 f1 mov %rdx,-0xf(%rdi) 0.70 : 8376a: 89 57 f9 mov %edx,-0x7(%rdi) 0.87 : 8376d: 66 89 57 fd mov %dx,-0x3(%rdi) 0.17 : 83771: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83774: c3 retq 0.00 : 83775: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8377c: 00 00 00 00 0.52 : 83780: 49 c7 c2 10 00 00 00 mov $0x10,%r10 0.17 : 83787: 49 89 f9 mov %rdi,%r9 0.00 : 8378a: 49 83 e1 0f and $0xf,%r9 0.35 : 8378e: 4d 29 ca sub %r9,%r10 0.17 : 83791: 49 83 e2 0f and $0xf,%r10 0.35 : 83795: 4c 01 d7 add %r10,%rdi 0.52 : 83798: 4d 29 d0 sub %r10,%r8 0.17 : 8379b: 4c 8d 1d 98 00 00 00 lea 0x98(%rip),%r11 # 8383a <__GI_memset+0x3ca> 0.00 : 837a2: 48 8d 0d 97 2b 0b 00 lea 0xb2b97(%rip),%rcx # 136340 0.00 : 837a9: 4a 0f bf 0c 51 movswq (%rcx,%r10,2),%rcx 1.04 : 837ae: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 1.22 : 837b2: 41 ff e3 jmpq *%r11 0.00 : 837b5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 837bc: 00 00 00 00 0.00 : 837c0: 88 57 f3 mov %dl,-0xd(%rdi) 0.00 : 837c3: 89 57 f4 mov %edx,-0xc(%rdi) 0.17 : 837c6: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.17 : 837ca: eb 6e jmp 8383a <__GI_memset+0x3ca> 0.00 : 837cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 837d0: 88 57 f7 mov %dl,-0x9(%rdi) 0.00 : 837d3: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 837d7: eb 61 jmp 8383a <__GI_memset+0x3ca> 0.00 : 837d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 837e0: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 837e3: eb 55 jmp 8383a <__GI_memset+0x3ca> 0.00 : 837e5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 837ec: 00 00 00 00 0.00 : 837f0: 88 57 f5 mov %dl,-0xb(%rdi) 0.00 : 837f3: 66 89 57 f6 mov %dx,-0xa(%rdi) 0.00 : 837f7: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 837fb: eb 3d jmp 8383a <__GI_memset+0x3ca> 0.00 : 837fd: 0f 1f 00 nopl (%rax) 0.00 : 83800: 88 57 fd mov %dl,-0x3(%rdi) 0.00 : 83803: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 83807: eb 31 jmp 8383a <__GI_memset+0x3ca> 0.00 : 83809: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 83810: 88 57 fb mov %dl,-0x5(%rdi) 0.00 : 83813: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 83816: eb 22 jmp 8383a <__GI_memset+0x3ca> 0.00 : 83818: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 8381f: 00 0.00 : 83820: 88 57 f1 mov %dl,-0xf(%rdi) 0.00 : 83823: 66 89 57 f2 mov %dx,-0xe(%rdi) 0.00 : 83827: 89 57 f4 mov %edx,-0xc(%rdi) 0.00 : 8382a: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 8382e: eb 0a jmp 8383a <__GI_memset+0x3ca> 0.00 : 83830: 88 57 f9 mov %dl,-0x7(%rdi) 0.00 : 83833: 66 89 57 fa mov %dx,-0x6(%rdi) 0.00 : 83837: 89 57 fc mov %edx,-0x4(%rdi) 1.04 : 8383a: 66 48 0f 6e c2 movq %rdx,%xmm0 0.00 : 8383f: 66 0f 6c c0 punpcklqdq %xmm0,%xmm0 0.00 : 83843: 49 81 f8 b0 00 00 00 cmp $0xb0,%r8 0.00 : 8384a: 0f 83 d0 04 00 00 jae 83d20 <__GI_memset+0x8b0> 0.00 : 83850: 4c 01 c7 add %r8,%rdi 0.17 : 83853: 4c 8d 0d 53 00 00 00 lea 0x53(%rip),%r9 # 838ad <__GI_memset+0x43d> 0.00 : 8385a: 48 8d 0d ff 2a 0b 00 lea 0xb2aff(%rip),%rcx # 136360 0.00 : 83861: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.70 : 83866: 4e 8d 0c 09 lea (%rcx,%r9,1),%r9 0.00 : 8386a: 41 ff e1 jmpq *%r9 0.00 : 8386d: 66 0f 7f 87 50 ff ff movdqa %xmm0,-0xb0(%rdi) 0.00 : 83874: ff 0.00 : 83875: 66 0f 7f 87 60 ff ff movdqa %xmm0,-0xa0(%rdi) 0.00 : 8387c: ff 0.00 : 8387d: 66 0f 7f 87 70 ff ff movdqa %xmm0,-0x90(%rdi) 0.00 : 83884: ff 0.00 : 83885: 66 0f 7f 47 80 movdqa %xmm0,-0x80(%rdi) 0.00 : 8388a: 66 0f 7f 47 90 movdqa %xmm0,-0x70(%rdi) 0.00 : 8388f: 66 0f 7f 47 a0 movdqa %xmm0,-0x60(%rdi) 0.00 : 83894: 66 0f 7f 47 b0 movdqa %xmm0,-0x50(%rdi) 0.00 : 83899: 66 0f 7f 47 c0 movdqa %xmm0,-0x40(%rdi) 0.00 : 8389e: 66 0f 7f 47 d0 movdqa %xmm0,-0x30(%rdi) 0.00 : 838a3: 66 0f 7f 47 e0 movdqa %xmm0,-0x20(%rdi) 0.00 : 838a8: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 838ad: c3 retq 0.00 : 838ae: 66 0f 7f 87 4f ff ff movdqa %xmm0,-0xb1(%rdi) 0.00 : 838b5: ff 0.00 : 838b6: 66 0f 7f 87 5f ff ff movdqa %xmm0,-0xa1(%rdi) 0.00 : 838bd: ff 0.87 : 838be: 66 0f 7f 87 6f ff ff movdqa %xmm0,-0x91(%rdi) 0.00 : 838c5: ff 0.35 : 838c6: 66 0f 7f 87 7f ff ff movdqa %xmm0,-0x81(%rdi) 0.00 : 838cd: ff 0.00 : 838ce: 66 0f 7f 47 8f movdqa %xmm0,-0x71(%rdi) 0.17 : 838d3: 66 0f 7f 47 9f movdqa %xmm0,-0x61(%rdi) 0.35 : 838d8: 66 0f 7f 47 af movdqa %xmm0,-0x51(%rdi) 0.00 : 838dd: 66 0f 7f 47 bf movdqa %xmm0,-0x41(%rdi) 0.17 : 838e2: 66 0f 7f 47 cf movdqa %xmm0,-0x31(%rdi) 0.17 : 838e7: 66 0f 7f 47 df movdqa %xmm0,-0x21(%rdi) 0.00 : 838ec: 66 0f 7f 47 ef movdqa %xmm0,-0x11(%rdi) 0.00 : 838f1: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 838f4: c3 retq 0.00 : 838f5: 66 0f 7f 87 4e ff ff movdqa %xmm0,-0xb2(%rdi) 0.00 : 838fc: ff 0.35 : 838fd: 66 0f 7f 87 5e ff ff movdqa %xmm0,-0xa2(%rdi) 0.00 : 83904: ff 0.52 : 83905: 66 0f 7f 87 6e ff ff movdqa %xmm0,-0x92(%rdi) 0.00 : 8390c: ff 0.52 : 8390d: 66 0f 7f 87 7e ff ff movdqa %xmm0,-0x82(%rdi) 0.00 : 83914: ff 0.35 : 83915: 66 0f 7f 47 8e movdqa %xmm0,-0x72(%rdi) 0.35 : 8391a: 66 0f 7f 47 9e movdqa %xmm0,-0x62(%rdi) 0.00 : 8391f: 66 0f 7f 47 ae movdqa %xmm0,-0x52(%rdi) 0.17 : 83924: 66 0f 7f 47 be movdqa %xmm0,-0x42(%rdi) 0.00 : 83929: 66 0f 7f 47 ce movdqa %xmm0,-0x32(%rdi) 0.17 : 8392e: 66 0f 7f 47 de movdqa %xmm0,-0x22(%rdi) 0.00 : 83933: 66 0f 7f 47 ee movdqa %xmm0,-0x12(%rdi) 0.00 : 83938: 66 89 57 fe mov %dx,-0x2(%rdi) 0.17 : 8393c: c3 retq 0.00 : 8393d: 66 0f 7f 87 4d ff ff movdqa %xmm0,-0xb3(%rdi) 0.00 : 83944: ff 0.17 : 83945: 66 0f 7f 87 5d ff ff movdqa %xmm0,-0xa3(%rdi) 0.00 : 8394c: ff 0.70 : 8394d: 66 0f 7f 87 6d ff ff movdqa %xmm0,-0x93(%rdi) 0.00 : 83954: ff 0.17 : 83955: 66 0f 7f 87 7d ff ff movdqa %xmm0,-0x83(%rdi) 0.00 : 8395c: ff 0.35 : 8395d: 66 0f 7f 47 8d movdqa %xmm0,-0x73(%rdi) 0.00 : 83962: 66 0f 7f 47 9d movdqa %xmm0,-0x63(%rdi) 0.52 : 83967: 66 0f 7f 47 ad movdqa %xmm0,-0x53(%rdi) 0.17 : 8396c: 66 0f 7f 47 bd movdqa %xmm0,-0x43(%rdi) 0.00 : 83971: 66 0f 7f 47 cd movdqa %xmm0,-0x33(%rdi) 0.00 : 83976: 66 0f 7f 47 dd movdqa %xmm0,-0x23(%rdi) 0.00 : 8397b: 66 0f 7f 47 ed movdqa %xmm0,-0x13(%rdi) 0.00 : 83980: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 83984: 88 57 ff mov %dl,-0x1(%rdi) 0.17 : 83987: c3 retq 0.00 : 83988: 66 0f 7f 87 4c ff ff movdqa %xmm0,-0xb4(%rdi) 0.00 : 8398f: ff 0.00 : 83990: 66 0f 7f 87 5c ff ff movdqa %xmm0,-0xa4(%rdi) 0.00 : 83997: ff 0.52 : 83998: 66 0f 7f 87 6c ff ff movdqa %xmm0,-0x94(%rdi) 0.00 : 8399f: ff 0.00 : 839a0: 66 0f 7f 87 7c ff ff movdqa %xmm0,-0x84(%rdi) 0.00 : 839a7: ff 0.00 : 839a8: 66 0f 7f 47 8c movdqa %xmm0,-0x74(%rdi) 0.00 : 839ad: 66 0f 7f 47 9c movdqa %xmm0,-0x64(%rdi) 0.17 : 839b2: 66 0f 7f 47 ac movdqa %xmm0,-0x54(%rdi) 0.00 : 839b7: 66 0f 7f 47 bc movdqa %xmm0,-0x44(%rdi) 0.17 : 839bc: 66 0f 7f 47 cc movdqa %xmm0,-0x34(%rdi) 0.00 : 839c1: 66 0f 7f 47 dc movdqa %xmm0,-0x24(%rdi) 0.00 : 839c6: 66 0f 7f 47 ec movdqa %xmm0,-0x14(%rdi) 0.00 : 839cb: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 839ce: c3 retq 0.00 : 839cf: 66 0f 7f 87 4b ff ff movdqa %xmm0,-0xb5(%rdi) 0.00 : 839d6: ff 0.17 : 839d7: 66 0f 7f 87 5b ff ff movdqa %xmm0,-0xa5(%rdi) 0.00 : 839de: ff 0.70 : 839df: 66 0f 7f 87 6b ff ff movdqa %xmm0,-0x95(%rdi) 0.00 : 839e6: ff 0.17 : 839e7: 66 0f 7f 87 7b ff ff movdqa %xmm0,-0x85(%rdi) 0.00 : 839ee: ff 0.00 : 839ef: 66 0f 7f 47 8b movdqa %xmm0,-0x75(%rdi) 0.00 : 839f4: 66 0f 7f 47 9b movdqa %xmm0,-0x65(%rdi) 0.00 : 839f9: 66 0f 7f 47 ab movdqa %xmm0,-0x55(%rdi) 0.00 : 839fe: 66 0f 7f 47 bb movdqa %xmm0,-0x45(%rdi) 0.17 : 83a03: 66 0f 7f 47 cb movdqa %xmm0,-0x35(%rdi) 0.00 : 83a08: 66 0f 7f 47 db movdqa %xmm0,-0x25(%rdi) 0.35 : 83a0d: 66 0f 7f 47 eb movdqa %xmm0,-0x15(%rdi) 0.00 : 83a12: 89 57 fb mov %edx,-0x5(%rdi) 0.00 : 83a15: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83a18: c3 retq 0.00 : 83a19: 66 0f 7f 87 4a ff ff movdqa %xmm0,-0xb6(%rdi) 0.00 : 83a20: ff 0.17 : 83a21: 66 0f 7f 87 5a ff ff movdqa %xmm0,-0xa6(%rdi) 0.00 : 83a28: ff 1.04 : 83a29: 66 0f 7f 87 6a ff ff movdqa %xmm0,-0x96(%rdi) 0.00 : 83a30: ff 0.00 : 83a31: 66 0f 7f 87 7a ff ff movdqa %xmm0,-0x86(%rdi) 0.00 : 83a38: ff 0.17 : 83a39: 66 0f 7f 47 8a movdqa %xmm0,-0x76(%rdi) 0.00 : 83a3e: 66 0f 7f 47 9a movdqa %xmm0,-0x66(%rdi) 0.17 : 83a43: 66 0f 7f 47 aa movdqa %xmm0,-0x56(%rdi) 0.00 : 83a48: 66 0f 7f 47 ba movdqa %xmm0,-0x46(%rdi) 0.00 : 83a4d: 66 0f 7f 47 ca movdqa %xmm0,-0x36(%rdi) 0.17 : 83a52: 66 0f 7f 47 da movdqa %xmm0,-0x26(%rdi) 0.00 : 83a57: 66 0f 7f 47 ea movdqa %xmm0,-0x16(%rdi) 0.00 : 83a5c: 89 57 fa mov %edx,-0x6(%rdi) 0.00 : 83a5f: 66 89 57 fe mov %dx,-0x2(%rdi) 0.17 : 83a63: c3 retq 0.00 : 83a64: 66 0f 7f 87 49 ff ff movdqa %xmm0,-0xb7(%rdi) 0.00 : 83a6b: ff 0.00 : 83a6c: 66 0f 7f 87 59 ff ff movdqa %xmm0,-0xa7(%rdi) 0.00 : 83a73: ff 0.00 : 83a74: 66 0f 7f 87 69 ff ff movdqa %xmm0,-0x97(%rdi) 0.00 : 83a7b: ff 0.00 : 83a7c: 66 0f 7f 87 79 ff ff movdqa %xmm0,-0x87(%rdi) 0.00 : 83a83: ff 0.17 : 83a84: 66 0f 7f 47 89 movdqa %xmm0,-0x77(%rdi) 0.00 : 83a89: 66 0f 7f 47 99 movdqa %xmm0,-0x67(%rdi) 0.00 : 83a8e: 66 0f 7f 47 a9 movdqa %xmm0,-0x57(%rdi) 0.17 : 83a93: 66 0f 7f 47 b9 movdqa %xmm0,-0x47(%rdi) 0.52 : 83a98: 66 0f 7f 47 c9 movdqa %xmm0,-0x37(%rdi) 0.17 : 83a9d: 66 0f 7f 47 d9 movdqa %xmm0,-0x27(%rdi) 0.17 : 83aa2: 66 0f 7f 47 e9 movdqa %xmm0,-0x17(%rdi) 0.17 : 83aa7: 89 57 f9 mov %edx,-0x7(%rdi) 0.17 : 83aaa: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 83aae: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83ab1: c3 retq 0.00 : 83ab2: 66 0f 7f 87 48 ff ff movdqa %xmm0,-0xb8(%rdi) 0.00 : 83ab9: ff 0.00 : 83aba: 66 0f 7f 87 58 ff ff movdqa %xmm0,-0xa8(%rdi) 0.00 : 83ac1: ff 0.00 : 83ac2: 66 0f 7f 87 68 ff ff movdqa %xmm0,-0x98(%rdi) 0.00 : 83ac9: ff 0.00 : 83aca: 66 0f 7f 87 78 ff ff movdqa %xmm0,-0x88(%rdi) 0.00 : 83ad1: ff 0.00 : 83ad2: 66 0f 7f 47 88 movdqa %xmm0,-0x78(%rdi) 0.00 : 83ad7: 66 0f 7f 47 98 movdqa %xmm0,-0x68(%rdi) 0.00 : 83adc: 66 0f 7f 47 a8 movdqa %xmm0,-0x58(%rdi) 0.00 : 83ae1: 66 0f 7f 47 b8 movdqa %xmm0,-0x48(%rdi) 0.00 : 83ae6: 66 0f 7f 47 c8 movdqa %xmm0,-0x38(%rdi) 0.00 : 83aeb: 66 0f 7f 47 d8 movdqa %xmm0,-0x28(%rdi) 0.00 : 83af0: 66 0f 7f 47 e8 movdqa %xmm0,-0x18(%rdi) 0.00 : 83af5: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 83af9: c3 retq 0.00 : 83afa: 66 0f 7f 87 47 ff ff movdqa %xmm0,-0xb9(%rdi) 0.00 : 83b01: ff 0.35 : 83b02: 66 0f 7f 87 57 ff ff movdqa %xmm0,-0xa9(%rdi) 0.00 : 83b09: ff 0.35 : 83b0a: 66 0f 7f 87 67 ff ff movdqa %xmm0,-0x99(%rdi) 0.00 : 83b11: ff 0.70 : 83b12: 66 0f 7f 87 77 ff ff movdqa %xmm0,-0x89(%rdi) 0.00 : 83b19: ff 0.17 : 83b1a: 66 0f 7f 47 87 movdqa %xmm0,-0x79(%rdi) 0.00 : 83b1f: 66 0f 7f 47 97 movdqa %xmm0,-0x69(%rdi) 0.17 : 83b24: 66 0f 7f 47 a7 movdqa %xmm0,-0x59(%rdi) 0.00 : 83b29: 66 0f 7f 47 b7 movdqa %xmm0,-0x49(%rdi) 0.00 : 83b2e: 66 0f 7f 47 c7 movdqa %xmm0,-0x39(%rdi) 0.17 : 83b33: 66 0f 7f 47 d7 movdqa %xmm0,-0x29(%rdi) 0.17 : 83b38: 66 0f 7f 47 e7 movdqa %xmm0,-0x19(%rdi) 0.00 : 83b3d: 48 89 57 f7 mov %rdx,-0x9(%rdi) 0.00 : 83b41: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83b44: c3 retq 0.00 : 83b45: 66 0f 7f 87 46 ff ff movdqa %xmm0,-0xba(%rdi) 0.00 : 83b4c: ff 0.00 : 83b4d: 66 0f 7f 87 56 ff ff movdqa %xmm0,-0xaa(%rdi) 0.00 : 83b54: ff 0.52 : 83b55: 66 0f 7f 87 66 ff ff movdqa %xmm0,-0x9a(%rdi) 0.00 : 83b5c: ff 0.00 : 83b5d: 66 0f 7f 87 76 ff ff movdqa %xmm0,-0x8a(%rdi) 0.00 : 83b64: ff 0.00 : 83b65: 66 0f 7f 47 86 movdqa %xmm0,-0x7a(%rdi) 0.00 : 83b6a: 66 0f 7f 47 96 movdqa %xmm0,-0x6a(%rdi) 0.00 : 83b6f: 66 0f 7f 47 a6 movdqa %xmm0,-0x5a(%rdi) 0.00 : 83b74: 66 0f 7f 47 b6 movdqa %xmm0,-0x4a(%rdi) 0.17 : 83b79: 66 0f 7f 47 c6 movdqa %xmm0,-0x3a(%rdi) 0.00 : 83b7e: 66 0f 7f 47 d6 movdqa %xmm0,-0x2a(%rdi) 0.35 : 83b83: 66 0f 7f 47 e6 movdqa %xmm0,-0x1a(%rdi) 0.17 : 83b88: 48 89 57 f6 mov %rdx,-0xa(%rdi) 0.00 : 83b8c: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 83b90: c3 retq 0.00 : 83b91: 66 0f 7f 87 45 ff ff movdqa %xmm0,-0xbb(%rdi) 0.00 : 83b98: ff 0.00 : 83b99: 66 0f 7f 87 55 ff ff movdqa %xmm0,-0xab(%rdi) 0.00 : 83ba0: ff 0.17 : 83ba1: 66 0f 7f 87 65 ff ff movdqa %xmm0,-0x9b(%rdi) 0.00 : 83ba8: ff 0.00 : 83ba9: 66 0f 7f 87 75 ff ff movdqa %xmm0,-0x8b(%rdi) 0.00 : 83bb0: ff 0.00 : 83bb1: 66 0f 7f 47 85 movdqa %xmm0,-0x7b(%rdi) 0.17 : 83bb6: 66 0f 7f 47 95 movdqa %xmm0,-0x6b(%rdi) 0.00 : 83bbb: 66 0f 7f 47 a5 movdqa %xmm0,-0x5b(%rdi) 0.17 : 83bc0: 66 0f 7f 47 b5 movdqa %xmm0,-0x4b(%rdi) 0.17 : 83bc5: 66 0f 7f 47 c5 movdqa %xmm0,-0x3b(%rdi) 0.00 : 83bca: 66 0f 7f 47 d5 movdqa %xmm0,-0x2b(%rdi) 0.17 : 83bcf: 66 0f 7f 47 e5 movdqa %xmm0,-0x1b(%rdi) 0.00 : 83bd4: 48 89 57 f5 mov %rdx,-0xb(%rdi) 0.00 : 83bd8: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 83bdc: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83bdf: c3 retq 0.00 : 83be0: 66 0f 7f 87 44 ff ff movdqa %xmm0,-0xbc(%rdi) 0.00 : 83be7: ff 0.35 : 83be8: 66 0f 7f 87 54 ff ff movdqa %xmm0,-0xac(%rdi) 0.00 : 83bef: ff 0.52 : 83bf0: 66 0f 7f 87 64 ff ff movdqa %xmm0,-0x9c(%rdi) 0.00 : 83bf7: ff 0.35 : 83bf8: 66 0f 7f 87 74 ff ff movdqa %xmm0,-0x8c(%rdi) 0.00 : 83bff: ff 0.17 : 83c00: 66 0f 7f 47 84 movdqa %xmm0,-0x7c(%rdi) 0.87 : 83c05: 66 0f 7f 47 94 movdqa %xmm0,-0x6c(%rdi) 0.00 : 83c0a: 66 0f 7f 47 a4 movdqa %xmm0,-0x5c(%rdi) 0.00 : 83c0f: 66 0f 7f 47 b4 movdqa %xmm0,-0x4c(%rdi) 0.17 : 83c14: 66 0f 7f 47 c4 movdqa %xmm0,-0x3c(%rdi) 0.00 : 83c19: 66 0f 7f 47 d4 movdqa %xmm0,-0x2c(%rdi) 0.00 : 83c1e: 66 0f 7f 47 e4 movdqa %xmm0,-0x1c(%rdi) 0.00 : 83c23: 48 89 57 f4 mov %rdx,-0xc(%rdi) 0.17 : 83c27: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 83c2a: c3 retq 0.00 : 83c2b: 66 0f 7f 87 43 ff ff movdqa %xmm0,-0xbd(%rdi) 0.00 : 83c32: ff 0.00 : 83c33: 66 0f 7f 87 53 ff ff movdqa %xmm0,-0xad(%rdi) 0.00 : 83c3a: ff 0.87 : 83c3b: 66 0f 7f 87 63 ff ff movdqa %xmm0,-0x9d(%rdi) 0.00 : 83c42: ff 0.17 : 83c43: 66 0f 7f 87 73 ff ff movdqa %xmm0,-0x8d(%rdi) 0.00 : 83c4a: ff 0.00 : 83c4b: 66 0f 7f 47 83 movdqa %xmm0,-0x7d(%rdi) 0.00 : 83c50: 66 0f 7f 47 93 movdqa %xmm0,-0x6d(%rdi) 0.17 : 83c55: 66 0f 7f 47 a3 movdqa %xmm0,-0x5d(%rdi) 0.00 : 83c5a: 66 0f 7f 47 b3 movdqa %xmm0,-0x4d(%rdi) 0.17 : 83c5f: 66 0f 7f 47 c3 movdqa %xmm0,-0x3d(%rdi) 0.00 : 83c64: 66 0f 7f 47 d3 movdqa %xmm0,-0x2d(%rdi) 0.00 : 83c69: 66 0f 7f 47 e3 movdqa %xmm0,-0x1d(%rdi) 0.00 : 83c6e: 48 89 57 f3 mov %rdx,-0xd(%rdi) 0.00 : 83c72: 89 57 fb mov %edx,-0x5(%rdi) 0.00 : 83c75: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83c78: c3 retq 0.00 : 83c79: 66 0f 7f 87 42 ff ff movdqa %xmm0,-0xbe(%rdi) 0.00 : 83c80: ff 0.17 : 83c81: 66 0f 7f 87 52 ff ff movdqa %xmm0,-0xae(%rdi) 0.00 : 83c88: ff 0.52 : 83c89: 66 0f 7f 87 62 ff ff movdqa %xmm0,-0x9e(%rdi) 0.00 : 83c90: ff 0.35 : 83c91: 66 0f 7f 87 72 ff ff movdqa %xmm0,-0x8e(%rdi) 0.00 : 83c98: ff 0.00 : 83c99: 66 0f 7f 47 82 movdqa %xmm0,-0x7e(%rdi) 0.00 : 83c9e: 66 0f 7f 47 92 movdqa %xmm0,-0x6e(%rdi) 0.00 : 83ca3: 66 0f 7f 47 a2 movdqa %xmm0,-0x5e(%rdi) 0.17 : 83ca8: 66 0f 7f 47 b2 movdqa %xmm0,-0x4e(%rdi) 0.00 : 83cad: 66 0f 7f 47 c2 movdqa %xmm0,-0x3e(%rdi) 0.00 : 83cb2: 66 0f 7f 47 d2 movdqa %xmm0,-0x2e(%rdi) 0.17 : 83cb7: 66 0f 7f 47 e2 movdqa %xmm0,-0x1e(%rdi) 0.00 : 83cbc: 48 89 57 f2 mov %rdx,-0xe(%rdi) 0.17 : 83cc0: 89 57 fa mov %edx,-0x6(%rdi) 0.35 : 83cc3: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 83cc7: c3 retq 0.00 : 83cc8: 66 0f 7f 87 41 ff ff movdqa %xmm0,-0xbf(%rdi) 0.00 : 83ccf: ff 0.17 : 83cd0: 66 0f 7f 87 51 ff ff movdqa %xmm0,-0xaf(%rdi) 0.00 : 83cd7: ff 0.52 : 83cd8: 66 0f 7f 87 61 ff ff movdqa %xmm0,-0x9f(%rdi) 0.00 : 83cdf: ff 0.00 : 83ce0: 66 0f 7f 87 71 ff ff movdqa %xmm0,-0x8f(%rdi) 0.00 : 83ce7: ff 0.17 : 83ce8: 66 0f 7f 47 81 movdqa %xmm0,-0x7f(%rdi) 0.00 : 83ced: 66 0f 7f 47 91 movdqa %xmm0,-0x6f(%rdi) 0.00 : 83cf2: 66 0f 7f 47 a1 movdqa %xmm0,-0x5f(%rdi) 0.00 : 83cf7: 66 0f 7f 47 b1 movdqa %xmm0,-0x4f(%rdi) 0.17 : 83cfc: 66 0f 7f 47 c1 movdqa %xmm0,-0x3f(%rdi) 0.35 : 83d01: 66 0f 7f 47 d1 movdqa %xmm0,-0x2f(%rdi) 0.00 : 83d06: 66 0f 7f 47 e1 movdqa %xmm0,-0x1f(%rdi) 0.00 : 83d0b: 48 89 57 f1 mov %rdx,-0xf(%rdi) 0.00 : 83d0f: 89 57 f9 mov %edx,-0x7(%rdi) 0.17 : 83d12: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 83d16: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 83d19: c3 retq 0.00 : 83d1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.35 : 83d20: 44 8b 0d 11 e4 2e 00 mov 0x2ee411(%rip),%r9d # 372138 <__x86_64_shared_cache_size> 0.87 : 83d27: 4d 39 c8 cmp %r9,%r8 0.00 : 83d2a: 77 64 ja 83d90 <__GI_memset+0x920> 0.17 : 83d2c: 0f 1f 40 00 nopl 0x0(%rax) 0.35 : 83d30: 4d 8d 40 80 lea -0x80(%r8),%r8 0.70 : 83d34: 49 81 f8 80 00 00 00 cmp $0x80,%r8 1.39 : 83d3b: 66 0f 7f 07 movdqa %xmm0,(%rdi) 0.35 : 83d3f: 66 0f 7f 47 10 movdqa %xmm0,0x10(%rdi) 1.57 : 83d44: 66 0f 7f 47 20 movdqa %xmm0,0x20(%rdi) 1.91 : 83d49: 66 0f 7f 47 30 movdqa %xmm0,0x30(%rdi) 1.74 : 83d4e: 66 0f 7f 47 40 movdqa %xmm0,0x40(%rdi) 0.35 : 83d53: 66 0f 7f 47 50 movdqa %xmm0,0x50(%rdi) 0.00 : 83d58: 66 0f 7f 47 60 movdqa %xmm0,0x60(%rdi) 0.70 : 83d5d: 66 0f 7f 47 70 movdqa %xmm0,0x70(%rdi) 0.70 : 83d62: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 83d69: 73 c5 jae 83d30 <__GI_memset+0x8c0> 0.00 : 83d6b: 4c 01 c7 add %r8,%rdi 0.35 : 83d6e: 4c 8d 1d 38 fb ff ff lea -0x4c8(%rip),%r11 # 838ad <__GI_memset+0x43d> 0.00 : 83d75: 48 8d 0d e4 25 0b 00 lea 0xb25e4(%rip),%rcx # 136360 0.00 : 83d7c: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.35 : 83d81: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 83d85: 41 ff e3 jmpq *%r11 0.00 : 83d88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 83d8f: 00 0.00 : 83d90: 49 83 f9 00 cmp $0x0,%r9 0.00 : 83d94: 74 9a je 83d30 <__GI_memset+0x8c0> 0.00 : 83d96: eb 08 jmp 83da0 <__GI_memset+0x930> 0.00 : 83d98: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 83d9f: 00 0.00 : 83da0: 4d 8d 40 80 lea -0x80(%r8),%r8 0.00 : 83da4: 49 81 f8 80 00 00 00 cmp $0x80,%r8 0.00 : 83dab: 66 0f e7 07 movntdq %xmm0,(%rdi) 0.00 : 83daf: 66 0f e7 47 10 movntdq %xmm0,0x10(%rdi) 0.00 : 83db4: 66 0f e7 47 20 movntdq %xmm0,0x20(%rdi) 0.00 : 83db9: 66 0f e7 47 30 movntdq %xmm0,0x30(%rdi) 0.00 : 83dbe: 66 0f e7 47 40 movntdq %xmm0,0x40(%rdi) 0.00 : 83dc3: 66 0f e7 47 50 movntdq %xmm0,0x50(%rdi) 0.00 : 83dc8: 66 0f e7 47 60 movntdq %xmm0,0x60(%rdi) 0.00 : 83dcd: 66 0f e7 47 70 movntdq %xmm0,0x70(%rdi) 0.00 : 83dd2: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 83dd9: 73 c5 jae 83da0 <__GI_memset+0x930> 0.00 : 83ddb: 0f ae f8 sfence 0.00 : 83dde: 4c 01 c7 add %r8,%rdi 0.00 : 83de1: 4c 8d 1d c5 fa ff ff lea -0x53b(%rip),%r11 # 838ad <__GI_memset+0x43d> 0.00 : 83de8: 48 8d 0d 71 25 0b 00 lea 0xb2571(%rip),%rcx # 136360 0.00 : 83def: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 83df4: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 83df8: 41 ff e3 jmpq *%r11 0.00 : 83dfb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 83e00: 49 81 f8 00 20 00 00 cmp $0x2000,%r8 0.00 : 83e07: 0f 83 83 00 00 00 jae 83e90 <__GI_memset+0xa20> 0.00 : 83e0d: 0f 1f 00 nopl (%rax) 0.00 : 83e10: 4c 89 c1 mov %r8,%rcx 0.00 : 83e13: 48 c1 e9 07 shr $0x7,%rcx 0.00 : 83e17: 74 52 je 83e6b <__GI_memset+0x9fb> 0.00 : 83e19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 83e20: 48 ff c9 dec %rcx 0.00 : 83e23: 48 89 17 mov %rdx,(%rdi) 0.00 : 83e26: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 83e2a: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 83e2e: 48 89 57 18 mov %rdx,0x18(%rdi) 0.00 : 83e32: 48 89 57 20 mov %rdx,0x20(%rdi) 0.00 : 83e36: 48 89 57 28 mov %rdx,0x28(%rdi) 0.00 : 83e3a: 48 89 57 30 mov %rdx,0x30(%rdi) 0.00 : 83e3e: 48 89 57 38 mov %rdx,0x38(%rdi) 0.00 : 83e42: 48 89 57 40 mov %rdx,0x40(%rdi) 0.00 : 83e46: 48 89 57 48 mov %rdx,0x48(%rdi) 0.00 : 83e4a: 48 89 57 50 mov %rdx,0x50(%rdi) 0.00 : 83e4e: 48 89 57 58 mov %rdx,0x58(%rdi) 0.00 : 83e52: 48 89 57 60 mov %rdx,0x60(%rdi) 0.00 : 83e56: 48 89 57 68 mov %rdx,0x68(%rdi) 0.00 : 83e5a: 48 89 57 70 mov %rdx,0x70(%rdi) 0.00 : 83e5e: 48 89 57 78 mov %rdx,0x78(%rdi) 0.00 : 83e62: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 83e69: 75 b5 jne 83e20 <__GI_memset+0x9b0> 0.00 : 83e6b: 41 83 e0 7f and $0x7f,%r8d 0.00 : 83e6f: 4a 8d 3c 07 lea (%rdi,%r8,1),%rdi 0.00 : 83e73: 4c 8d 1d 42 f6 ff ff lea -0x9be(%rip),%r11 # 834bc <__GI_memset+0x4c> 0.00 : 83e7a: 48 8d 0d 8f 23 0b 00 lea 0xb238f(%rip),%rcx # 136210 0.00 : 83e81: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 83e86: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 83e8a: 41 ff e3 jmpq *%r11 0.00 : 83e8d: 0f 1f 00 nopl (%rax) 0.00 : 83e90: 44 8b 0d a1 e2 2e 00 mov 0x2ee2a1(%rip),%r9d # 372138 <__x86_64_shared_cache_size> 0.00 : 83e97: 4d 39 c1 cmp %r8,%r9 0.00 : 83e9a: 4d 0f 47 c8 cmova %r8,%r9 0.00 : 83e9e: 76 10 jbe 83eb0 <__GI_memset+0xa40> 0.00 : 83ea0: 49 81 f8 00 00 01 00 cmp $0x10000,%r8 0.00 : 83ea7: 0f 83 63 ff ff ff jae 83e10 <__GI_memset+0x9a0> 0.00 : 83ead: 0f 1f 00 nopl (%rax) 0.00 : 83eb0: 4c 89 c9 mov %r9,%rcx 0.00 : 83eb3: 49 83 e1 f8 and $0xfffffffffffffff8,%r9 0.00 : 83eb7: 48 c1 e9 03 shr $0x3,%rcx 0.00 : 83ebb: 74 07 je 83ec4 <__GI_memset+0xa54> 0.00 : 83ebd: 48 92 xchg %rax,%rdx 0.00 : 83ebf: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 83ec2: 48 92 xchg %rax,%rdx 0.00 : 83ec4: 4d 29 c8 sub %r9,%r8 0.00 : 83ec7: 77 27 ja 83ef0 <__GI_memset+0xa80> 0.00 : 83ec9: 41 83 e0 07 and $0x7,%r8d 0.00 : 83ecd: 4a 8d 3c 07 lea (%rdi,%r8,1),%rdi 0.00 : 83ed1: 4c 8d 1d e4 f5 ff ff lea -0xa1c(%rip),%r11 # 834bc <__GI_memset+0x4c> 0.00 : 83ed8: 48 8d 0d 31 23 0b 00 lea 0xb2331(%rip),%rcx # 136210 0.00 : 83edf: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 83ee4: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 83ee8: 41 ff e3 jmpq *%r11 0.00 : 83eeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 83ef0: 4c 89 c1 mov %r8,%rcx 0.00 : 83ef3: 48 c1 e9 07 shr $0x7,%rcx 0.00 : 83ef7: 74 65 je 83f5e <__GI_memset+0xaee> 0.00 : 83ef9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 83f00: 48 ff c9 dec %rcx 0.00 : 83f03: 48 0f c3 17 movnti %rdx,(%rdi) 0.00 : 83f07: 48 0f c3 57 08 movnti %rdx,0x8(%rdi) 0.00 : 83f0c: 48 0f c3 57 10 movnti %rdx,0x10(%rdi) 0.00 : 83f11: 48 0f c3 57 18 movnti %rdx,0x18(%rdi) 0.00 : 83f16: 48 0f c3 57 20 movnti %rdx,0x20(%rdi) 0.00 : 83f1b: 48 0f c3 57 28 movnti %rdx,0x28(%rdi) 0.00 : 83f20: 48 0f c3 57 30 movnti %rdx,0x30(%rdi) 0.00 : 83f25: 48 0f c3 57 38 movnti %rdx,0x38(%rdi) 0.00 : 83f2a: 48 0f c3 57 40 movnti %rdx,0x40(%rdi) 0.00 : 83f2f: 48 0f c3 57 48 movnti %rdx,0x48(%rdi) 0.00 : 83f34: 48 0f c3 57 50 movnti %rdx,0x50(%rdi) 0.00 : 83f39: 48 0f c3 57 58 movnti %rdx,0x58(%rdi) 0.00 : 83f3e: 48 0f c3 57 60 movnti %rdx,0x60(%rdi) 0.00 : 83f43: 48 0f c3 57 68 movnti %rdx,0x68(%rdi) 0.00 : 83f48: 48 0f c3 57 70 movnti %rdx,0x70(%rdi) 0.00 : 83f4d: 48 0f c3 57 78 movnti %rdx,0x78(%rdi) 0.00 : 83f52: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 83f59: 75 a5 jne 83f00 <__GI_memset+0xa90> 0.00 : 83f5b: 0f ae f8 sfence 0.00 : 83f5e: 41 83 e0 7f and $0x7f,%r8d 0.00 : 83f62: 4a 8d 3c 07 lea (%rdi,%r8,1),%rdi 0.00 : 83f66: 4c 8d 1d 4f f5 ff ff lea -0xab1(%rip),%r11 # 834bc <__GI_memset+0x4c> 0.00 : 83f6d: 48 8d 0d 9c 22 0b 00 lea 0xb229c(%rip),%rcx # 136210 0.00 : 83f74: 4a 0f bf 0c 41 movswq (%rcx,%r8,2),%rcx 0.00 : 83f79: 4e 8d 1c 19 lea (%rcx,%r11,1),%r11 0.00 : 83f7d: 41 ff e3 jmpq *%r11 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 21.61 ??:0 12.14 ??:0 9.11 ??:0 8.21 ??:0 6.96 ??:0 6.61 ??:0 5.00 ??:0 5.00 ??:0 5.00 ??:0 4.46 ??:0 4.11 ??:0 2.86 ??:0 2.68 ??:0 2.14 ??:0 1.79 ??:0 1.61 ??:0 0.71 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000114d00 <__strlen_sse42>: ??:0 8.21 : 114d00: 66 0f ef d2 pxor %xmm2,%xmm2 0.00 : 114d04: 48 89 f9 mov %rdi,%rcx 0.00 : 114d07: 49 89 f8 mov %rdi,%r8 ??:0 2.14 : 114d0a: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi ??:0 6.61 : 114d0e: 66 0f 6f ca movdqa %xmm2,%xmm1 0.00 : 114d12: 66 0f 74 17 pcmpeqb (%rdi),%xmm2 ??:0 4.11 : 114d16: 83 ce ff or $0xffffffff,%esi 1.61 : 114d19: 48 29 f9 sub %rdi,%rcx ??:0 5.00 : 114d1c: d3 e6 shl %cl,%esi ??:0 2.68 : 114d1e: 66 0f d7 d2 pmovmskb %xmm2,%edx ??:0 5.00 : 114d22: 21 f2 and %esi,%edx 0.00 : 114d24: 75 15 jne 114d3b <__strlen_sse42+0x3b> 9.11 : 114d26: 66 0f 3a 63 4f 10 08 pcmpistri $0x8,0x10(%rdi),%xmm1 21.61 : 114d2d: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 114d31: 75 f3 jne 114d26 <__strlen_sse42+0x26> ??:0 4.46 : 114d33: 48 8d 04 0f lea (%rdi,%rcx,1),%rax 2.86 : 114d37: 4c 29 c0 sub %r8,%rax 1.79 : 114d3a: c3 retq ??:0 5.00 : 114d3b: 4c 29 c7 sub %r8,%rdi ??:0 0.71 : 114d3e: 0f bc c2 bsf %edx,%eax ??:0 19.11 : 114d41: 48 01 f8 add %rdi,%rax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 68.13 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:763 5.68 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:740 4.95 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:763 3.30 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:773 2.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:773 2.38 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:756 2.38 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:770 2.20 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:751 1.65 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:751 1.47 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:745 1.10 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:756 0.92 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:819 0.73 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:754 0.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:740 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049e950 : : * holds a pin on the buffer. Once pin is released, a tuple might be pruned : * and reused by a completely unrelated tuple. : */ : void : heap_get_root_tuples(Page page, OffsetNumber *root_offsets) : { 0.00 : 49e950: 55 push %rbp : OffsetNumber offnum, : maxoff; : : MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber)); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:740 0.55 : 49e951: 31 c0 xor %eax,%eax 0.00 : 49e953: b9 48 00 00 00 mov $0x48,%ecx : * holds a pin on the buffer. Once pin is released, a tuple might be pruned : * and reused by a completely unrelated tuple. : */ : void : heap_get_root_tuples(Page page, OffsetNumber *root_offsets) : { 0.00 : 49e958: 48 89 e5 mov %rsp,%rbp 0.00 : 49e95b: 41 57 push %r15 0.00 : 49e95d: 41 56 push %r14 0.00 : 49e95f: 49 89 f6 mov %rsi,%r14 0.00 : 49e962: 41 55 push %r13 0.00 : 49e964: 41 54 push %r12 0.00 : 49e966: 49 89 fc mov %rdi,%r12 : OffsetNumber offnum, : maxoff; : : MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber)); 0.00 : 49e969: 48 89 f7 mov %rsi,%rdi : * holds a pin on the buffer. Once pin is released, a tuple might be pruned : * and reused by a completely unrelated tuple. : */ : void : heap_get_root_tuples(Page page, OffsetNumber *root_offsets) : { 0.00 : 49e96c: 53 push %rbx 0.00 : 49e96d: 48 83 ec 08 sub $0x8,%rsp : OffsetNumber offnum, : maxoff; : : MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber)); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:740 5.68 : 49e971: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 49e974: c7 07 00 00 00 00 movl $0x0,(%rdi) 0.18 : 49e97a: 66 c7 47 04 00 00 movw $0x0,0x4(%rdi) : : maxoff = PageGetMaxOffsetNumber(page); 0.18 : 49e980: 41 0f b7 44 24 0c movzwl 0xc(%r12),%eax 0.00 : 49e986: 66 83 f8 18 cmp $0x18,%ax 0.00 : 49e98a: 0f 86 3e 01 00 00 jbe 49eace 0.00 : 49e990: 0f b7 c0 movzwl %ax,%eax 0.00 : 49e993: 48 83 e8 18 sub $0x18,%rax 0.00 : 49e997: 49 89 c7 mov %rax,%r15 0.00 : 49e99a: 49 c1 ef 02 shr $0x2,%r15 : for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum)) 0.00 : 49e99e: 66 45 85 ff test %r15w,%r15w 0.00 : 49e9a2: 0f 84 26 01 00 00 je 49eace 0.00 : 49e9a8: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 49e9ae: 66 90 xchg %ax,%ax : { : ItemId lp = PageGetItemId(page, offnum); 0.00 : 49e9b0: 41 0f b7 c5 movzwl %r13w,%eax : HeapTupleHeader htup; : OffsetNumber nextoffnum; : TransactionId priorXmax; : : /* skip unused and dead items */ : if (!ItemIdIsUsed(lp) || ItemIdIsDead(lp)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:751 2.20 : 49e9b4: 48 8d 50 03 lea 0x3(%rax),%rdx : MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber)); : : maxoff = PageGetMaxOffsetNumber(page); : for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum)) : { : ItemId lp = PageGetItemId(page, offnum); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:745 1.47 : 49e9b8: 48 8d 48 ff lea -0x1(%rax),%rcx : HeapTupleHeader htup; : OffsetNumber nextoffnum; : TransactionId priorXmax; : : /* skip unused and dead items */ : if (!ItemIdIsUsed(lp) || ItemIdIsDead(lp)) 0.37 : 49e9bc: 41 8b 44 94 08 mov 0x8(%r12,%rdx,4),%eax 0.37 : 49e9c1: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49e9c6: 0f 84 f4 00 00 00 je 49eac0 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:751 1.65 : 49e9cc: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 49e9d1: 0f 84 e9 00 00 00 je 49eac0 : continue; : : if (ItemIdIsNormal(lp)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:754 0.73 : 49e9d7: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 49e9dc: 0f 84 b6 00 00 00 je 49ea98 : else : { : /* Must be a redirect item. We do not set its root_offsets entry */ : Assert(ItemIdIsRedirected(lp)); : /* Set up to scan the HOT-chain */ : nextoffnum = ItemIdGetRedirect(lp); 0.00 : 49e9e2: 41 0f b7 5c 94 08 movzwl 0x8(%r12,%rdx,4),%ebx 0.00 : 49e9e8: 31 c9 xor %ecx,%ecx 0.00 : 49e9ea: 66 81 e3 ff 7f and $0x7fff,%bx 0.00 : 49e9ef: eb 0a jmp 49e9fb 0.00 : 49e9f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* Advance to next chain member, if any */ : if (!HeapTupleHeaderIsHotUpdated(htup)) : break; : : nextoffnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49e9f8: 8b 4f 04 mov 0x4(%rdi),%ecx : * more than twice, once in the outer loop and once in HOT-chain : * chases. : */ : for (;;) : { : lp = PageGetItemId(page, nextoffnum); 0.00 : 49e9fb: 0f b7 c3 movzwl %bx,%eax : : /* Check for broken chains */ : if (!ItemIdIsNormal(lp)) 0.00 : 49e9fe: 48 8d 50 03 lea 0x3(%rax),%rdx : * more than twice, once in the outer loop and once in HOT-chain : * chases. : */ : for (;;) : { : lp = PageGetItemId(page, nextoffnum); 0.00 : 49ea02: 48 8d 70 ff lea -0x1(%rax),%rsi : : /* Check for broken chains */ : if (!ItemIdIsNormal(lp)) 0.00 : 49ea06: 41 8b 44 94 08 mov 0x8(%r12,%rdx,4),%eax 0.00 : 49ea0b: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49ea10: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 49ea15: 0f 85 a5 00 00 00 jne 49eac0 : break; : : htup = (HeapTupleHeader) PageGetItem(page, lp); 0.00 : 49ea1b: 41 0f b7 44 94 08 movzwl 0x8(%r12,%rdx,4),%eax 0.00 : 49ea21: 25 ff 7f 00 00 and $0x7fff,%eax : : if (TransactionIdIsValid(priorXmax) && 0.00 : 49ea26: 85 c9 test %ecx,%ecx : : /* Check for broken chains */ : if (!ItemIdIsNormal(lp)) : break; : : htup = (HeapTupleHeader) PageGetItem(page, lp); 0.00 : 49ea28: 49 8d 3c 04 lea (%r12,%rax,1),%rdi : : if (TransactionIdIsValid(priorXmax) && 0.00 : 49ea2c: 74 1b je 49ea49 0.00 : 49ea2e: 0f b7 47 14 movzwl 0x14(%rdi),%eax 0.00 : 49ea32: ba 02 00 00 00 mov $0x2,%edx 0.00 : 49ea37: 25 00 03 00 00 and $0x300,%eax 0.00 : 49ea3c: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 49ea41: 74 02 je 49ea45 0.00 : 49ea43: 8b 17 mov (%rdi),%edx 0.00 : 49ea45: 39 ca cmp %ecx,%edx 0.00 : 49ea47: 75 77 jne 49eac0 : !TransactionIdEquals(priorXmax, HeapTupleHeaderGetXmin(htup))) : break; : : /* Remember the root line pointer for this item */ : root_offsets[nextoffnum - 1] = offnum; 0.00 : 49ea49: 66 45 89 2c 76 mov %r13w,(%r14,%rsi,2) : : /* Advance to next chain member, if any */ : if (!HeapTupleHeaderIsHotUpdated(htup)) 0.00 : 49ea4e: f6 47 13 40 testb $0x40,0x13(%rdi) 0.00 : 49ea52: 74 6c je 49eac0 0.00 : 49ea54: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 49ea58: f6 c6 08 test $0x8,%dh 0.00 : 49ea5b: 75 63 jne 49eac0 0.00 : 49ea5d: 89 d0 mov %edx,%eax 0.00 : 49ea5f: 25 00 03 00 00 and $0x300,%eax 0.00 : 49ea64: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 49ea69: 74 55 je 49eac0 : break; : : nextoffnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49ea6b: 89 d0 mov %edx,%eax : : /* Advance to next chain member, if any */ : if (!HeapTupleHeaderIsHotUpdated(htup)) : break; : : nextoffnum = ItemPointerGetOffsetNumber(&htup->t_ctid); 0.00 : 49ea6d: 0f b7 5f 10 movzwl 0x10(%rdi),%ebx : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49ea71: 25 00 18 00 00 and $0x1800,%eax 0.00 : 49ea76: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49ea7b: 0f 85 77 ff ff ff jne 49e9f8 0.00 : 49ea81: 84 d2 test %dl,%dl 0.00 : 49ea83: 0f 88 6f ff ff ff js 49e9f8 0.00 : 49ea89: e8 92 86 ff ff callq 497120 0.00 : 49ea8e: 89 c1 mov %eax,%ecx 0.00 : 49ea90: e9 66 ff ff ff jmpq 49e9fb 0.00 : 49ea95: 0f 1f 00 nopl (%rax) : if (!ItemIdIsUsed(lp) || ItemIdIsDead(lp)) : continue; : : if (ItemIdIsNormal(lp)) : { : htup = (HeapTupleHeader) PageGetItem(page, lp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:756 1.10 : 49ea98: 41 0f b7 44 94 08 movzwl 0x8(%r12,%rdx,4),%eax 0.18 : 49ea9e: 25 ff 7f 00 00 and $0x7fff,%eax 2.38 : 49eaa3: 49 8d 3c 04 lea (%r12,%rax,1),%rdi : /* : * Check if this tuple is part of a HOT-chain rooted at some other : * tuple. If so, skip it for now; we'll process it when we find : * its root. : */ : if (HeapTupleHeaderIsHeapOnly(htup)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:763 4.95 : 49eaa7: 66 83 7f 12 00 cmpw $0x0,0x12(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:763 68.13 : 49eaac: 78 12 js 49eac0 : : /* : * This is either a plain tuple or the root of a HOT-chain. : * Remember it in the mapping. : */ : root_offsets[offnum - 1] = offnum; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:770 2.38 : 49eaae: 66 45 89 2c 4e mov %r13w,(%r14,%rcx,2) : : /* If it's not the start of a HOT-chain, we're done with it */ : if (!HeapTupleHeaderIsHotUpdated(htup)) 0.37 : 49eab3: f6 47 13 40 testb $0x40,0x13(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:773 3.30 : 49eab7: 75 9b jne 49ea54 2.56 : 49eab9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* Advance to next chain member, if any */ : if (!HeapTupleHeaderIsHotUpdated(htup)) : break; : : nextoffnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:819 0.92 : 49eac0: 41 83 c5 01 add $0x1,%r13d : maxoff; : : MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber)); : : maxoff = PageGetMaxOffsetNumber(page); : for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum)) 0.18 : 49eac4: 66 45 39 ef cmp %r13w,%r15w 0.00 : 49eac8: 0f 83 e2 fe ff ff jae 49e9b0 : : nextoffnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); : } : } : } 0.00 : 49eace: 48 83 c4 08 add $0x8,%rsp 0.00 : 49ead2: 5b pop %rbx 0.00 : 49ead3: 41 5c pop %r12 0.00 : 49ead5: 41 5d pop %r13 0.00 : 49ead7: 41 5e pop %r14 0.00 : 49ead9: 41 5f pop %r15 0.18 : 49eadb: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:993 16.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:899 15.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:977 8.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:888 4.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:508 3.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:940 2.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:944 2.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:540 2.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:977 1.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:889 1.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:551 1.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:973 1.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:976 0.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:899 0.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:504 0.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:971 0.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:971 0.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:973 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:887 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:516 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:936 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:971 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:488 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:504 0.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:911 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000782f20 : : * degrading performance; or CHashAllocate may enter a tight loop until such : * time as an element is deleted). : */ : bool : CHashInsert(CHashTable table, void *entry) : { 0.38 : 782f20: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:488 0.57 : 782f21: 48 89 e5 mov %rsp,%rbp 0.00 : 782f24: 41 57 push %r15 0.19 : 782f26: 41 56 push %r14 0.00 : 782f28: 41 55 push %r13 0.00 : 782f2a: 41 54 push %r12 0.00 : 782f2c: 49 89 fc mov %rdi,%r12 0.00 : 782f2f: 53 push %rbx 0.00 : 782f30: 48 83 ec 38 sub $0x38,%rsp 0.00 : 782f34: 48 89 75 a0 mov %rsi,-0x60(%rbp) : uint32 hashcode = hash_any(entry, table->desc.key_size); 0.00 : 782f38: 0f b7 77 0e movzwl 0xe(%rdi),%esi 0.19 : 782f3c: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 782f40: e8 0b d4 d0 ff callq 490350 0.00 : 782f45: 89 45 a8 mov %eax,-0x58(%rbp) : uint32 bucket = hashcode & table->bucket_mask; 0.00 : 782f48: 41 23 44 24 10 and 0x10(%r12),%eax : { : uint32 f_current; : CHashPtr new; : : /* Pick a starting freelist base on our backend ID. */ : f_current = ((uint32) MyBackendId) % CHashTableNFreeLists(table); 0.00 : 782f4d: 8b 35 b5 5b 3e 00 mov 0x3e5bb5(%rip),%esi # b68b08 0.00 : 782f53: 41 0f b7 7c 24 16 movzwl 0x16(%r12),%edi : */ : bool : CHashInsert(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; 0.00 : 782f59: 89 45 ac mov %eax,-0x54(%rbp) : CHashPtr *b = &table->bucket[bucket]; 0.00 : 782f5c: 89 c0 mov %eax,%eax 0.19 : 782f5e: 4c 8d 3c 85 00 00 00 lea 0x0(,%rax,4),%r15 0.00 : 782f65: 00 : : /* Pick a starting freelist base on our backend ID. */ : f_current = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : : /* If this process hasn't initialized gc_next yet, do that now. */ : if (table->gc_pid != MyProcPid) 0.00 : 782f66: 8b 05 78 cd 43 00 mov 0x43cd78(%rip),%eax # bbfce4 : bool : CHashInsert(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; : CHashPtr *b = &table->bucket[bucket]; 0.19 : 782f6c: 4d 03 7c 24 20 add 0x20(%r12),%r15 : : /* Pick a starting freelist base on our backend ID. */ : f_current = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : : /* If this process hasn't initialized gc_next yet, do that now. */ : if (table->gc_pid != MyProcPid) 0.19 : 782f71: 41 39 44 24 38 cmp %eax,0x38(%r12) 0.00 : 782f76: 74 26 je 782f9e : { : table->gc_pid = MyProcPid; : table->gc_next = ((uint32) MyProcPid) % CHashTableNGarbage(table); 0.00 : 782f78: 41 0f b6 4c 24 14 movzbl 0x14(%r12),%ecx 0.00 : 782f7e: 41 8b 54 24 10 mov 0x10(%r12),%edx : f_current = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : : /* If this process hasn't initialized gc_next yet, do that now. */ : if (table->gc_pid != MyProcPid) : { : table->gc_pid = MyProcPid; 0.00 : 782f83: 41 89 44 24 38 mov %eax,0x38(%r12) : table->gc_next = ((uint32) MyProcPid) % CHashTableNGarbage(table); 0.00 : 782f88: 8b 05 56 cd 43 00 mov 0x43cd56(%rip),%eax # bbfce4 0.00 : 782f8e: 83 c2 01 add $0x1,%edx 0.00 : 782f91: d3 ea shr %cl,%edx 0.00 : 782f93: 89 d1 mov %edx,%ecx 0.00 : 782f95: 31 d2 xor %edx,%edx 0.00 : 782f97: f7 f1 div %ecx 0.00 : 782f99: 41 89 54 24 3c mov %edx,0x3c(%r12) : { : uint32 f_current; : CHashPtr new; : : /* Pick a starting freelist base on our backend ID. */ : f_current = ((uint32) MyBackendId) % CHashTableNFreeLists(table); 0.00 : 782f9e: 0f b7 cf movzwl %di,%ecx 0.00 : 782fa1: 89 f0 mov %esi,%eax 0.00 : 782fa3: 31 d2 xor %edx,%edx 0.00 : 782fa5: f7 f1 div %ecx 0.19 : 782fa7: 41 0f b6 4c 24 15 movzbl 0x15(%r12),%ecx 0.00 : 782fad: 49 8b 74 24 28 mov 0x28(%r12),%rsi : /* If list is empty, fail. */ : if (CHashPtrIsInvalid(garbage)) : return InvalidCHashPtr; : : /* If we're unable to empty the list via compare-and-swap, fail. */ : if (!__sync_bool_compare_and_swap(b, garbage, InvalidCHashPtr)) 0.00 : 782fb2: 41 bb fe ff ff ff mov $0xfffffffe,%r11d : * If we attempt to pop the free-list and fail, we retry immediately : * with the same free-list. This reduces the frequency with which : * we're obliged to update our hazard pointers, which is a material : * savings due to the associated memory barrier. : */ : b = CHashTableGetFreeList(table, f_current); 0.19 : 782fb8: 44 8d 42 01 lea 0x1(%rdx),%r8d 0.00 : 782fbc: 44 89 c0 mov %r8d,%eax 0.19 : 782fbf: d3 e0 shl %cl,%eax 0.00 : 782fc1: 01 d0 add %edx,%eax 0.00 : 782fc3: 48 8d 0c 86 lea (%rsi,%rax,4),%rcx : MyProc->hazard[0] = b; 0.19 : 782fc7: 48 8b 05 7a a9 3f 00 mov 0x3fa97a(%rip),%rax # b7d948 0.00 : 782fce: 48 89 88 e8 02 00 00 mov %rcx,0x2e8(%rax) : pg_memory_barrier(); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:887 0.76 : 782fd5: f0 83 04 24 00 lock addl $0x0,(%rsp) : new = *b; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:888 8.03 : 782fda: 8b 19 mov (%rcx),%ebx : while (!CHashPtrIsInvalid(new)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:889 1.72 : 782fdc: 83 fb fd cmp $0xfffffffd,%ebx 0.00 : 782fdf: 76 23 jbe 783004 0.00 : 782fe1: e9 52 01 00 00 jmpq 783138 0.00 : 782fe6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 782fed: 00 00 00 : * barrier here. : */ : pg_read_barrier_depends(); : if (__sync_bool_compare_and_swap(b, new, n->un.gcnext)) : return new; : CHashTableIncrementStatistic(table, CHS_Allocate_Fail); 0.00 : 782ff0: 49 83 84 24 a0 00 00 addq $0x1,0xa0(%r12) 0.00 : 782ff7: 00 01 : new = *b; 0.00 : 782ff9: 8b 19 mov (%rcx),%ebx : */ : b = CHashTableGetFreeList(table, f_current); : MyProc->hazard[0] = b; : pg_memory_barrier(); : new = *b; : while (!CHashPtrIsInvalid(new)) 0.00 : 782ffb: 83 fb fd cmp $0xfffffffd,%ebx 0.00 : 782ffe: 0f 87 34 01 00 00 ja 783138 : { : CHashNode *n = CHashTableGetNode(table, new); 0.00 : 783004: 89 de mov %ebx,%esi : * n is computed from table->freelist[f_current], which could : * be modified by concurrent activity, so we need a dependency : * barrier here. : */ : pg_read_barrier_depends(); : if (__sync_bool_compare_and_swap(b, new, n->un.gcnext)) 0.00 : 783006: 49 8b 44 24 30 mov 0x30(%r12),%rax : MyProc->hazard[0] = b; : pg_memory_barrier(); : new = *b; : while (!CHashPtrIsInvalid(new)) : { : CHashNode *n = CHashTableGetNode(table, new); 0.00 : 78300b: d1 ee shr %esi : * n is computed from table->freelist[f_current], which could : * be modified by concurrent activity, so we need a dependency : * barrier here. : */ : pg_read_barrier_depends(); : if (__sync_bool_compare_and_swap(b, new, n->un.gcnext)) 0.19 : 78300d: 89 f2 mov %esi,%edx 0.00 : 78300f: 41 0f af 54 24 1c imul 0x1c(%r12),%edx 0.38 : 783015: 8b 54 10 04 mov 0x4(%rax,%rdx,1),%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:899 16.63 : 783019: 89 d8 mov %ebx,%eax 0.00 : 78301b: f0 0f b1 11 lock cmpxchg %edx,(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:899 0.96 : 78301f: 75 cf jne 782ff0 : * Allocate and initialize a new entry, on the assumption that the insert : * will succeed. If it ends up failing, we must be sure to put this back : * on some free list, lest it be permanently leaked. : */ : new = CHashAllocate(table); : nnew = CHashTableGetNode(table, new); 0.00 : 783021: 41 89 f5 mov %esi,%r13d : nnew->un.hashcode = hashcode; 0.00 : 783024: 8b 4d a8 mov -0x58(%rbp),%ecx : * Allocate and initialize a new entry, on the assumption that the insert : * will succeed. If it ends up failing, we must be sure to put this back : * on some free list, lest it be permanently leaked. : */ : new = CHashAllocate(table); : nnew = CHashTableGetNode(table, new); 0.00 : 783027: 45 0f af 6c 24 1c imul 0x1c(%r12),%r13d 0.00 : 78302d: 4d 03 6c 24 30 add 0x30(%r12),%r13 : nnew->un.hashcode = hashcode; 0.00 : 783032: 41 89 4d 04 mov %ecx,0x4(%r13) : memcpy(CHashNodeGetItem(nnew), entry, table->desc.element_size); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:504 0.96 : 783036: 41 0f b7 54 24 0c movzwl 0xc(%r12),%edx 0.00 : 78303c: 49 8d 7d 08 lea 0x8(%r13),%rdi 0.00 : 783040: 48 8b 75 a0 mov -0x60(%rbp),%rsi 0.57 : 783044: e8 a7 6b ce ff callq 469bf0 : : /* Prevent garbage collection for this bucket. */ : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 783049: 41 0f b6 4c 24 14 movzbl 0x14(%r12),%ecx 0.00 : 78304f: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 783052: d3 ea shr %cl,%edx 0.38 : 783054: 41 0f b6 4c 24 15 movzbl 0x15(%r12),%ecx 0.00 : 78305a: 89 d0 mov %edx,%eax 0.00 : 78305c: d3 e8 shr %cl,%eax 0.00 : 78305e: 01 d0 add %edx,%eax 0.00 : 783060: 48 8b 15 e1 a8 3f 00 mov 0x3fa8e1(%rip),%rdx # b7d948 0.19 : 783067: 48 c1 e0 02 shl $0x2,%rax 0.00 : 78306b: 49 03 44 24 28 add 0x28(%r12),%rax 0.00 : 783070: 48 89 82 e8 02 00 00 mov %rax,0x2e8(%rdx) : pg_memory_barrier(); 0.00 : 783077: f0 83 04 24 00 lock addl $0x0,(%rsp) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:508 4.40 : 78307c: 4c 8d 75 b0 lea -0x50(%rbp),%r14 0.00 : 783080: eb 20 jmp 7830a2 0.00 : 783082: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * where N is the number of buckets and M is the number of elements : * in the table. Even for a quite modestly size table this is likely : * to exceed the number of CPU cores. : */ : Assert(!CHashPtrIsMarked(scan.target)); : nnew->next = scan.target; 0.00 : 783088: 8b 45 b0 mov -0x50(%rbp),%eax 0.19 : 78308b: 41 89 45 00 mov %eax,0x0(%r13) : if (!__sync_bool_compare_and_swap(scan.pointer_to_target, 0.00 : 78308f: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 783093: 8b 45 b0 mov -0x50(%rbp),%eax 0.19 : 783096: f0 0f b1 1a lock cmpxchg %ebx,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:540 2.29 : 78309a: 74 49 je 7830e5 : scan.target, new)) : { : CHashTableIncrementStatistic(table, CHS_Insert_Retry); 0.00 : 78309c: 49 83 44 24 60 01 addq $0x1,0x60(%r12) : * Scan the bucket. If we don't find a match, use compare-and-swap to : * insert the new node at the insert position. If we do find a match, : * return the data to the caller. : */ : retry: : CHashBucketScan(table, b, hashcode, entry, &scan); 0.00 : 7830a2: 48 8b 4d a0 mov -0x60(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:516 0.76 : 7830a6: 8b 55 a8 mov -0x58(%rbp),%edx 0.00 : 7830a9: 4d 89 f0 mov %r14,%r8 0.00 : 7830ac: 4c 89 fe mov %r15,%rsi 0.00 : 7830af: 4c 89 e7 mov %r12,%rdi 0.00 : 7830b2: e8 e9 fb ff ff callq 782ca0 : if (scan.found) 0.19 : 7830b7: 80 7d c8 00 cmpb $0x0,-0x38(%rbp) 0.00 : 7830bb: 74 cb je 783088 : memcpy(((char *) entry) + table->desc.key_size, 0.00 : 7830bd: 41 0f b7 44 24 0e movzwl 0xe(%r12),%eax 0.00 : 7830c3: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 7830c7: 41 0f b7 54 24 0c movzwl 0xc(%r12),%edx 0.00 : 7830cd: 0f b7 f0 movzwl %ax,%esi 0.00 : 7830d0: 48 01 f7 add %rsi,%rdi 0.00 : 7830d3: 48 83 c6 08 add $0x8,%rsi 0.00 : 7830d7: 48 03 75 c0 add -0x40(%rbp),%rsi 0.00 : 7830db: 29 c2 sub %eax,%edx 0.00 : 7830dd: 48 63 d2 movslq %edx,%rdx 0.00 : 7830e0: e8 0b 6b ce ff callq 469bf0 : } : } : : /* Allow garbage collection for this bucket. */ : Assert(MyProc->hazard[0] != NULL); : pg_memory_barrier(); 0.00 : 7830e5: f0 83 04 24 00 lock addl $0x0,(%rsp) : MyProc->hazard[0] = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:551 1.72 : 7830ea: 48 8b 05 57 a8 3f 00 mov 0x3fa857(%rip),%rax # b7d948 0.00 : 7830f1: 48 c7 80 e8 02 00 00 movq $0x0,0x2e8(%rax) 0.00 : 7830f8: 00 00 00 00 : * guarantees that any allocation still in progress at the time this : * element makes it back to the freelist is trying to allocate some : * other node. : */ : CHashTableIncrementStatistic(table, CHS_Insert); : if (scan.found) 0.00 : 7830fc: 31 c0 xor %eax,%eax : * progress at the time we popped the freelist has completed. This : * guarantees that any allocation still in progress at the time this : * element makes it back to the freelist is trying to allocate some : * other node. : */ : CHashTableIncrementStatistic(table, CHS_Insert); 0.00 : 7830fe: 49 83 44 24 50 01 addq $0x1,0x50(%r12) : if (scan.found) 0.19 : 783104: 80 7d c8 00 cmpb $0x0,-0x38(%rbp) 0.00 : 783108: 74 17 je 783121 : { : CHashTableIncrementStatistic(table, CHS_Insert_Failed); 0.00 : 78310a: 49 83 44 24 58 01 addq $0x1,0x58(%r12) : CHashAddToGarbage(table, bucket, new); 0.00 : 783110: 8b 75 ac mov -0x54(%rbp),%esi 0.00 : 783113: 89 da mov %ebx,%edx 0.00 : 783115: 4c 89 e7 mov %r12,%rdi 0.00 : 783118: e8 33 fb ff ff callq 782c50 0.00 : 78311d: 0f b6 45 c8 movzbl -0x38(%rbp),%eax 0.00 : 783121: 84 c0 test %al,%al 0.00 : 783123: 0f 94 c0 sete %al : } : : /* The insert succeeded if and only if no duplicate was found. */ : return !scan.found; : } 0.00 : 783126: 48 83 c4 38 add $0x38,%rsp 0.00 : 78312a: 5b pop %rbx 0.00 : 78312b: 41 5c pop %r12 0.00 : 78312d: 41 5d pop %r13 0.00 : 78312f: 41 5e pop %r14 0.00 : 783131: 41 5f pop %r15 0.00 : 783133: c9 leaveq 0.19 : 783134: c3 retq 0.00 : 783135: 0f 1f 00 nopl (%rax) : CHashPtr new; : CHashNode *n; : uint32 i; : : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); 0.00 : 783138: 41 0f b7 7c 24 16 movzwl 0x16(%r12),%edi 0.19 : 78313e: 8b 05 c4 59 3e 00 mov 0x3e59c4(%rip),%eax # b68b08 0.19 : 783144: 31 d2 xor %edx,%edx : fh = CHashTableGetFreeList(table, f_home); 0.00 : 783146: 41 0f b6 4c 24 15 movzbl 0x15(%r12),%ecx 0.00 : 78314c: 4d 8b 4c 24 28 mov 0x28(%r12),%r9 : CHashPtr new; : CHashNode *n; : uint32 i; : : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); 0.38 : 783151: f7 f7 div %edi : fh = CHashTableGetFreeList(table, f_home); 0.19 : 783153: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : 783156: d3 e0 shl %cl,%eax : : /* Select target garbage list. */ : table->gc_next = (table->gc_next + 1) % CHashTableNGarbage(table); 0.19 : 783158: 41 0f b6 4c 24 14 movzbl 0x14(%r12),%ecx : CHashNode *n; : uint32 i; : : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : fh = CHashTableGetFreeList(table, f_home); 0.00 : 78315e: 01 d0 add %edx,%eax 0.00 : 783160: 4c 8d 14 85 00 00 00 lea 0x0(,%rax,4),%r10 0.00 : 783167: 00 : : /* Select target garbage list. */ : table->gc_next = (table->gc_next + 1) % CHashTableNGarbage(table); 0.00 : 783168: 41 8b 44 24 3c mov 0x3c(%r12),%eax 0.00 : 78316d: 8d 50 01 lea 0x1(%rax),%edx 0.00 : 783170: 41 8b 44 24 10 mov 0x10(%r12),%eax 0.38 : 783175: 8d 70 01 lea 0x1(%rax),%esi 0.00 : 783178: 89 d0 mov %edx,%eax 0.00 : 78317a: 31 d2 xor %edx,%edx 0.19 : 78317c: d3 ee shr %cl,%esi : b = CHashTableGetGarbageList(table, table->gc_next); 0.38 : 78317e: 41 0f b6 4c 24 15 movzbl 0x15(%r12),%ecx : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : fh = CHashTableGetFreeList(table, f_home); : : /* Select target garbage list. */ : table->gc_next = (table->gc_next + 1) % CHashTableNGarbage(table); 0.19 : 783184: f7 f6 div %esi : b = CHashTableGetGarbageList(table, table->gc_next); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:936 0.76 : 783186: 4c 89 ce mov %r9,%rsi 0.19 : 783189: 89 d0 mov %edx,%eax : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : fh = CHashTableGetFreeList(table, f_home); : : /* Select target garbage list. */ : table->gc_next = (table->gc_next + 1) % CHashTableNGarbage(table); 0.19 : 78318b: 41 89 54 24 3c mov %edx,0x3c(%r12) : b = CHashTableGetGarbageList(table, table->gc_next); 0.00 : 783190: d3 e8 shr %cl,%eax 0.00 : 783192: 01 d0 add %edx,%eax 0.00 : 783194: 49 8d 14 81 lea (%r9,%rax,4),%rdx : garbage = *b; 0.00 : 783198: 8b 1a mov (%rdx),%ebx : : /* If list is empty, fail. */ : if (CHashPtrIsInvalid(garbage)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:940 3.25 : 78319a: 83 fb fd cmp $0xfffffffd,%ebx 0.00 : 78319d: 76 11 jbe 7831b0 : new = CHashAllocateViaGC(table); : if (!CHashPtrIsInvalid(new)) : return new; : : /* Advance to next freelist. */ : f_current = (f_current + 1) % CHashTableNFreeLists(table); 0.19 : 78319f: 44 89 c0 mov %r8d,%eax 0.00 : 7831a2: 31 d2 xor %edx,%edx 0.00 : 7831a4: f7 f7 div %edi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:911 0.57 : 7831a6: e9 0d fe ff ff jmpq 782fb8 0.00 : 7831ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* If list is empty, fail. */ : if (CHashPtrIsInvalid(garbage)) : return InvalidCHashPtr; : : /* If we're unable to empty the list via compare-and-swap, fail. */ : if (!__sync_bool_compare_and_swap(b, garbage, InvalidCHashPtr)) 0.00 : 7831b0: 89 d8 mov %ebx,%eax 0.19 : 7831b2: f0 44 0f b1 1a lock cmpxchg %r11d,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:944 2.87 : 7831b7: 74 1c je 7831d5 : { : CHashTableIncrementStatistic(table, CHS_Garbage_Dequeue_Fail); 0.00 : 7831b9: 49 83 84 24 b0 00 00 addq $0x1,0xb0(%r12) 0.00 : 7831c0: 00 01 0.00 : 7831c2: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 7831c7: 41 0f b6 4c 24 15 movzbl 0x15(%r12),%ecx 0.00 : 7831cd: 41 0f b7 7c 24 16 movzwl 0x16(%r12),%edi 0.00 : 7831d3: eb ca jmp 78319f : * requeues the garbage if it's not immediately recycleable, but : * it's not clear that we need such a thing. On the flip side we : * might want to eventually enter a longer sleep here, or PANIC, : * but it's not clear exactly how to calibrate that. : */ : CHashTableIncrementStatistic(table, CHS_GC); 0.00 : 7831d5: 49 83 84 24 b8 00 00 addq $0x1,0xb8(%r12) 0.00 : 7831dc: 00 01 : CHashNode *n; : uint32 i; : : /* Pick a target freelist based on our backend ID. */ : f_home = ((uint32) MyBackendId) % CHashTableNFreeLists(table); : fh = CHashTableGetFreeList(table, f_home); 0.00 : 7831de: 4f 8d 04 11 lea (%r9,%r10,1),%r8 : * it's not clear that we need such a thing. On the flip side we : * might want to eventually enter a longer sleep here, or PANIC, : * but it's not clear exactly how to calibrate that. : */ : CHashTableIncrementStatistic(table, CHS_GC); : MyProc->hazard[0] = NULL; 0.00 : 7831e2: 48 8b 05 5f a7 3f 00 mov 0x3fa75f(%rip),%rax # b7d948 0.00 : 7831e9: 48 c7 80 e8 02 00 00 movq $0x0,0x2e8(%rax) 0.00 : 7831f0: 00 00 00 00 : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.19 : 7831f4: 48 8b 35 5d a7 3f 00 mov 0x3fa75d(%rip),%rsi # b7d958 0.38 : 7831fb: 8b 46 10 mov 0x10(%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:971 0.76 : 7831fe: 85 c0 test %eax,%eax 0.00 : 783200: 74 5f je 783261 0.00 : 783202: 31 ff xor %edi,%edi 0.00 : 783204: eb 1a jmp 783220 0.00 : 783206: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 78320d: 00 00 00 : { : volatile PGPROC *proc = &ProcGlobal->allProcs[i]; : void *hazard; : : hazard = proc->hazard[0]; : if (hazard == b || hazard == fh) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:977 2.10 : 783210: 49 39 c8 cmp %rcx,%r8 0.00 : 783213: 74 23 je 783238 : * might want to eventually enter a longer sleep here, or PANIC, : * but it's not clear exactly how to calibrate that. : */ : CHashTableIncrementStatistic(table, CHS_GC); : MyProc->hazard[0] = NULL; : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.38 : 783215: 83 c7 01 add $0x1,%edi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:971 0.96 : 783218: 3b 7e 10 cmp 0x10(%rsi),%edi 0.00 : 78321b: 73 44 jae 783261 0.96 : 78321d: 0f 1f 00 nopl (%rax) : { : volatile PGPROC *proc = &ProcGlobal->allProcs[i]; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:973 0.96 : 783220: 89 f8 mov %edi,%eax 1.53 : 783222: 48 69 c0 f0 02 00 00 imul $0x2f0,%rax,%rax 0.38 : 783229: 48 03 06 add (%rsi),%rax : void *hazard; : : hazard = proc->hazard[0]; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:976 1.15 : 78322c: 48 8b 88 e8 02 00 00 mov 0x2e8(%rax),%rcx : if (hazard == b || hazard == fh) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:977 15.68 : 783233: 48 39 ca cmp %rcx,%rdx 0.00 : 783236: 75 d8 jne 783210 : { : CHashTableIncrementStatistic(table, CHS_GC_Spin); 0.00 : 783238: 49 83 84 24 c0 00 00 addq $0x1,0xc0(%r12) 0.00 : 78323f: 00 01 : do : { : hazard = proc->hazard[0]; 0.00 : 783241: 48 8b 88 e8 02 00 00 mov 0x2e8(%rax),%rcx : } while (hazard == b || hazard == fh); 0.00 : 783248: 48 39 ca cmp %rcx,%rdx 0.00 : 78324b: 74 f4 je 783241 0.00 : 78324d: 49 39 c8 cmp %rcx,%r8 0.00 : 783250: 74 ef je 783241 0.00 : 783252: 48 8b 35 ff a6 3f 00 mov 0x3fa6ff(%rip),%rsi # b7d958 : * might want to eventually enter a longer sleep here, or PANIC, : * but it's not clear exactly how to calibrate that. : */ : CHashTableIncrementStatistic(table, CHS_GC); : MyProc->hazard[0] = NULL; : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.00 : 783259: 83 c7 01 add $0x1,%edi 0.00 : 78325c: 3b 7e 10 cmp 0x10(%rsi),%edi 0.00 : 78325f: 72 bf jb 783220 : } : } : : /* Remove one item from list to satisfy current allocation. */ : new = garbage; : n = CHashTableGetNode(table, new); 0.19 : 783261: 89 de mov %ebx,%esi : pg_read_barrier_depends(); : fhead = n->un.gcnext; 0.00 : 783263: 49 8b 44 24 30 mov 0x30(%r12),%rax : } : } : : /* Remove one item from list to satisfy current allocation. */ : new = garbage; : n = CHashTableGetNode(table, new); 0.00 : 783268: d1 ee shr %esi : pg_read_barrier_depends(); : fhead = n->un.gcnext; 0.00 : 78326a: 89 f2 mov %esi,%edx 0.00 : 78326c: 41 0f af 54 24 1c imul 0x1c(%r12),%edx 0.38 : 783272: 8b 54 10 04 mov 0x4(%rax,%rdx,1),%edx : : if (CHashPtrIsInvalid(fhead)) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:993 19.12 : 783276: 83 fa fd cmp $0xfffffffd,%edx 0.00 : 783279: 76 13 jbe 78328e : * before we overwrite n->un.gcnext with a new hashcode. : * (This is only needed when we reclaim exactly one node, : * because in any other case we'll do a compare-and-swap : * before returning, which implies a full barrier.) : */ : pg_memory_barrier(); 0.00 : 78327b: f0 83 04 24 00 lock addl $0x0,(%rsp) : CHashTableIncrementStatistic(table, CHS_GC_Reclaim_Skipped); 0.38 : 783280: 49 83 84 24 c8 00 00 addq $0x1,0xc8(%r12) 0.00 : 783287: 00 01 0.00 : 783289: e9 93 fd ff ff jmpq 783021 : } : else if (__sync_bool_compare_and_swap(fh, InvalidCHashPtr, fhead)) 0.00 : 78328e: b8 fe ff ff ff mov $0xfffffffe,%eax 0.19 : 783293: f0 41 0f b1 10 lock cmpxchg %edx,(%r8) 0.19 : 783298: 74 41 je 7832db : { : /* : * Our free list is empty, and we've succesfully pushed the : * reclaimed nodes onto it. So we're done. : */ : CHashTableIncrementStatistic(table, CHS_GC_Reclaim_Fast); 0.00 : 78329a: 4d 8b 4c 24 30 mov 0x30(%r12),%r9 0.00 : 78329f: 41 8b 7c 24 1c mov 0x1c(%r12),%edi 0.00 : 7832a4: 89 d0 mov %edx,%eax : : /* Walk list of reclaimed elements to end. */ : fcurrent = fhead; : for (;;) : { : n = CHashTableGetNode(table, fcurrent); 0.00 : 7832a6: d1 e8 shr %eax 0.00 : 7832a8: 0f af c7 imul %edi,%eax 0.00 : 7832ab: 49 8d 0c 01 lea (%r9,%rax,1),%rcx : fnext = n->un.gcnext; 0.00 : 7832af: 8b 41 04 mov 0x4(%rcx),%eax : if (CHashPtrIsInvalid(fnext)) 0.00 : 7832b2: 83 f8 fd cmp $0xfffffffd,%eax 0.00 : 7832b5: 76 ef jbe 7832a6 0.00 : 7832b7: eb 10 jmp 7832c9 0.00 : 7832b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : oldhead = *fh; : n->un.gcnext = oldhead; : if (__sync_bool_compare_and_swap(fh, oldhead, fhead)) : break; : CHashTableIncrementStatistic(table, CHS_GC_Reclaim_Retry); 0.00 : 7832c0: 49 83 84 24 d8 00 00 addq $0x1,0xd8(%r12) 0.00 : 7832c7: 00 01 : } : : /* Push reclaimed elements onto home free list. */ : for (;;) : { : oldhead = *fh; 0.00 : 7832c9: 41 8b 00 mov (%r8),%eax : n->un.gcnext = oldhead; 0.00 : 7832cc: 89 41 04 mov %eax,0x4(%rcx) : if (__sync_bool_compare_and_swap(fh, oldhead, fhead)) 0.00 : 7832cf: f0 41 0f b1 10 lock cmpxchg %edx,(%r8) 0.00 : 7832d4: 75 ea jne 7832c0 0.00 : 7832d6: e9 46 fd ff ff jmpq 783021 : { : /* : * Our free list is empty, and we've succesfully pushed the : * reclaimed nodes onto it. So we're done. : */ : CHashTableIncrementStatistic(table, CHS_GC_Reclaim_Fast); 0.00 : 7832db: 49 83 84 24 d0 00 00 addq $0x1,0xd0(%r12) 0.00 : 7832e2: 00 01 0.00 : 7832e4: e9 38 fd ff ff jmpq 783021 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 36.03 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1727 6.74 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1727 5.59 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1726 4.24 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1732 3.66 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1711 3.47 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1711 3.28 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1683 2.89 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1732 2.89 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1697 2.50 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1683 2.50 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1699 2.50 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1732 2.31 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1683 2.31 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1701 2.31 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1711 2.12 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1683 2.12 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1711 1.54 /home/Computational/mark/src/postgres-andres/src/backend/catalog/../../../src/include/nodes/pg_list.h:87 1.35 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1683 1.35 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1687 1.16 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1683 0.77 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1683 0.58 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1683 0.58 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1726 0.58 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1727 0.58 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1730 0.58 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1732 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e9280 : : FormIndexDatum(IndexInfo *indexInfo, : TupleTableSlot *slot, : EState *estate, : Datum *values, : bool *isnull) : { 0.19 : 4e9280: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1683 2.31 : 4e9281: 48 89 e5 mov %rsp,%rbp 0.39 : 4e9284: 41 57 push %r15 0.58 : 4e9286: 4d 89 c7 mov %r8,%r15 2.50 : 4e9289: 41 56 push %r14 0.39 : 4e928b: 49 89 d6 mov %rdx,%r14 0.19 : 4e928e: 41 55 push %r13 1.35 : 4e9290: 49 89 fd mov %rdi,%r13 2.12 : 4e9293: 41 54 push %r12 0.19 : 4e9295: 53 push %rbx 1.16 : 4e9296: 48 83 ec 28 sub $0x28,%rsp 3.28 : 4e929a: 48 89 75 c0 mov %rsi,-0x40(%rbp) 0.77 : 4e929e: 48 89 4d b8 mov %rcx,-0x48(%rbp) : ListCell *indexpr_item; : int i; : : if (indexInfo->ii_Expressions != NIL && /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1687 1.35 : 4e92a2: 48 8b 7f 48 mov 0x48(%rdi),%rdi 0.39 : 4e92a6: 48 85 ff test %rdi,%rdi 0.00 : 4e92a9: 0f 84 b1 00 00 00 je 4e9360 0.00 : 4e92af: 49 8b 45 50 mov 0x50(%r13),%rax 0.00 : 4e92b3: 48 85 c0 test %rax,%rax 0.00 : 4e92b6: 0f 84 98 00 00 00 je 4e9354 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 4e92bc: 4c 8b 60 08 mov 0x8(%rax),%r12 : /* Check caller has set up context correctly */ : Assert(GetPerTupleExprContext(estate)->ecxt_scantuple == slot); : } : indexpr_item = list_head(indexInfo->ii_ExpressionsState); : : for (i = 0; i < indexInfo->ii_NumIndexAttrs; i++) /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1699 2.50 : 4e92c0: 41 8b 55 04 mov 0x4(%r13),%edx 0.39 : 4e92c4: 85 d2 test %edx,%edx 0.00 : 4e92c6: 7e 78 jle 4e9340 0.19 : 4e92c8: 31 db xor %ebx,%ebx 0.39 : 4e92ca: eb 4a jmp 4e9316 0.00 : 4e92cc: 0f 1f 40 00 nopl 0x0(%rax) : else : { : /* : * Index expression --- need to evaluate it. : */ : if (indexpr_item == NULL) 0.00 : 4e92d0: 4d 85 e4 test %r12,%r12 0.00 : 4e92d3: 0f 84 9c 00 00 00 je 4e9375 : elog(ERROR, "wrong number of index expressions"); : iDatum = ExecEvalExprSwitchContext((ExprState *) lfirst(indexpr_item), 0.00 : 4e92d9: 49 8b b6 c8 00 00 00 mov 0xc8(%r14),%rsi 0.00 : 4e92e0: 48 85 f6 test %rsi,%rsi 0.00 : 4e92e3: 74 4b je 4e9330 0.00 : 4e92e5: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 4e92e9: 48 8d 55 d7 lea -0x29(%rbp),%rdx 0.00 : 4e92ed: 31 c9 xor %ecx,%ecx 0.00 : 4e92ef: e8 ec 3b 0c 00 callq 5acee0 : GetPerTupleExprContext(estate), : &isNull, : NULL); : indexpr_item = lnext(indexpr_item); 0.00 : 4e92f4: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : } : values[i] = iDatum; /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1726 5.59 : 4e92f9: 48 8b 55 b8 mov -0x48(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1726 0.58 : 4e92fd: 48 89 04 da mov %rax,(%rdx,%rbx,8) : isnull[i] = isNull; /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1727 36.03 : 4e9301: 0f b6 45 d7 movzbl -0x29(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1727 0.58 : 4e9305: 41 88 04 1f mov %al,(%r15,%rbx,1) 0.19 : 4e9309: 8d 43 01 lea 0x1(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1727 6.74 : 4e930c: 48 83 c3 01 add $0x1,%rbx : /* Check caller has set up context correctly */ : Assert(GetPerTupleExprContext(estate)->ecxt_scantuple == slot); : } : indexpr_item = list_head(indexInfo->ii_ExpressionsState); : : for (i = 0; i < indexInfo->ii_NumIndexAttrs; i++) 0.19 : 4e9310: 41 39 45 04 cmp %eax,0x4(%r13) 0.00 : 4e9314: 7e 2a jle 4e9340 : { : int keycol = indexInfo->ii_KeyAttrNumbers[i]; /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1701 2.31 : 4e9316: 41 0f bf 74 5d 08 movswl 0x8(%r13,%rbx,2),%esi : Datum iDatum; : bool isNull; : : if (keycol != 0) 0.00 : 4e931c: 85 f6 test %esi,%esi 0.00 : 4e931e: 74 b0 je 4e92d0 : { : /* : * Plain index column; get the value we need directly from the : * heap tuple. : */ : iDatum = slot_getattr(slot, keycol, &isNull); /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1711 3.47 : 4e9320: 48 8b 7d c0 mov -0x40(%rbp),%rdi 2.31 : 4e9324: 48 8d 55 d7 lea -0x29(%rbp),%rdx 2.12 : 4e9328: e8 d3 60 f8 ff callq 46f400 3.66 : 4e932d: eb ca jmp 4e92f9 0.00 : 4e932f: 90 nop : /* : * Index expression --- need to evaluate it. : */ : if (indexpr_item == NULL) : elog(ERROR, "wrong number of index expressions"); : iDatum = ExecEvalExprSwitchContext((ExprState *) lfirst(indexpr_item), 0.00 : 4e9330: 4c 89 f7 mov %r14,%rdi 0.00 : 4e9333: e8 78 c2 0c 00 callq 5b55b0 0.00 : 4e9338: 48 89 c6 mov %rax,%rsi 0.00 : 4e933b: eb a8 jmp 4e92e5 0.00 : 4e933d: 0f 1f 00 nopl (%rax) : } : values[i] = iDatum; : isnull[i] = isNull; : } : : if (indexpr_item != NULL) /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1730 0.58 : 4e9340: 4d 85 e4 test %r12,%r12 0.00 : 4e9343: 75 5a jne 4e939f : elog(ERROR, "wrong number of index expressions"); : } 0.00 : 4e9345: 48 83 c4 28 add $0x28,%rsp /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1732 4.24 : 4e9349: 5b pop %rbx 0.00 : 4e934a: 41 5c pop %r12 0.00 : 4e934c: 41 5d pop %r13 2.50 : 4e934e: 41 5e pop %r14 0.19 : 4e9350: 41 5f pop %r15 0.58 : 4e9352: c9 leaveq 2.89 : 4e9353: c3 retq : : if (indexInfo->ii_Expressions != NIL && : indexInfo->ii_ExpressionsState == NIL) : { : /* First time through, set up expression evaluation state */ : indexInfo->ii_ExpressionsState = (List *) 0.00 : 4e9354: 48 89 d6 mov %rdx,%rsi 0.00 : 4e9357: e8 f4 5b 0c 00 callq 5aef50 0.00 : 4e935c: 49 89 45 50 mov %rax,0x50(%r13) : ExecPrepareExpr((Expr *) indexInfo->ii_Expressions, : estate); : /* Check caller has set up context correctly */ : Assert(GetPerTupleExprContext(estate)->ecxt_scantuple == slot); : } : indexpr_item = list_head(indexInfo->ii_ExpressionsState); /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:1697 2.89 : 4e9360: 49 8b 45 50 mov 0x50(%r13),%rax 0.19 : 4e9364: 45 31 e4 xor %r12d,%r12d /home/Computational/mark/src/postgres-andres/src/backend/catalog/../../../src/include/nodes/pg_list.h:87 1.54 : 4e9367: 48 85 c0 test %rax,%rax 0.00 : 4e936a: 0f 84 50 ff ff ff je 4e92c0 0.00 : 4e9370: e9 47 ff ff ff jmpq 4e92bc : { : /* : * Index expression --- need to evaluate it. : */ : if (indexpr_item == NULL) : elog(ERROR, "wrong number of index expressions"); 0.00 : 4e9375: ba a3 24 7c 00 mov $0x7c24a3,%edx 0.00 : 4e937a: be b7 06 00 00 mov $0x6b7,%esi : values[i] = iDatum; : isnull[i] = isNull; : } : : if (indexpr_item != NULL) : elog(ERROR, "wrong number of index expressions"); 0.00 : 4e937f: bf ca 1d 7c 00 mov $0x7c1dca,%edi 0.00 : 4e9384: e8 97 20 29 00 callq 77b420 0.00 : 4e9389: be 98 1e 7c 00 mov $0x7c1e98,%esi 0.00 : 4e938e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4e9393: 31 c0 xor %eax,%eax 0.00 : 4e9395: e8 96 1e 29 00 callq 77b230 0.00 : 4e939a: e8 31 01 f8 ff callq 4694d0 0.00 : 4e939f: ba a3 24 7c 00 mov $0x7c24a3,%edx 0.00 : 4e93a4: be c3 06 00 00 mov $0x6c3,%esi 0.00 : 4e93a9: eb d4 jmp 4e937f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:590 4.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:628 3.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:639 3.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:640 2.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:605 2.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:639 2.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 2.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:597 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:605 2.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:639 2.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:605 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:605 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:751 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:639 1.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:587 1.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:628 1.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:628 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:757 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:757 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:604 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:605 1.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:628 1.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 1.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 1.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:590 1.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:602 1.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:754 1.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:606 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:604 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:605 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:606 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:628 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:629 1.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:639 0.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:627 0.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:628 0.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:637 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:757 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:757 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:606 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:618 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:625 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:627 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:629 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:629 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:638 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:638 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:599 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:606 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:609 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:623 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:623 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:627 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:629 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:635 0.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:639 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cf730 : : * DTK_DATE can hold time zone names (America/New_York, GMT-8) : */ : int : ParseDateTime(const char *timestr, char *workbuf, size_t buflen, : char **field, int *ftype, int maxfields, int *numfields) : { 0.39 : 6cf730: 55 push %rbp : int nf = 0; : const char *cp = timestr; : char *bufp = workbuf; : const char *bufend = workbuf + buflen; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 1.36 : 6cf731: 48 8d 14 16 lea (%rsi,%rdx,1),%rdx : * DTK_DATE can hold time zone names (America/New_York, GMT-8) : */ : int : ParseDateTime(const char *timestr, char *workbuf, size_t buflen, : char **field, int *ftype, int maxfields, int *numfields) : { 0.00 : 6cf735: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 0.78 : 6cf738: 41 57 push %r15 : int nf = 0; : const char *cp = timestr; : char *bufp = workbuf; : const char *bufend = workbuf + buflen; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 0.78 : 6cf73a: 49 89 f7 mov %rsi,%r15 : * DTK_DATE can hold time zone names (America/New_York, GMT-8) : */ : int : ParseDateTime(const char *timestr, char *workbuf, size_t buflen, : char **field, int *ftype, int maxfields, int *numfields) : { 0.00 : 6cf73d: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 2.72 : 6cf73f: 41 55 push %r13 1.17 : 6cf741: 41 54 push %r12 : int nf = 0; : const char *cp = timestr; : char *bufp = workbuf; : const char *bufend = workbuf + buflen; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 1.36 : 6cf743: 49 89 fc mov %rdi,%r12 : * DTK_DATE can hold time zone names (America/New_York, GMT-8) : */ : int : ParseDateTime(const char *timestr, char *workbuf, size_t buflen, : char **field, int *ftype, int maxfields, int *numfields) : { 0.00 : 6cf746: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:566 0.78 : 6cf747: 48 83 ec 48 sub $0x48,%rsp 0.00 : 6cf74b: 48 89 4d b8 mov %rcx,-0x48(%rbp) 1.95 : 6cf74f: 4c 89 45 b0 mov %r8,-0x50(%rbp) 0.58 : 6cf753: 44 89 4d ac mov %r9d,-0x54(%rbp) : int nf = 0; : const char *cp = timestr; : char *bufp = workbuf; : const char *bufend = workbuf + buflen; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:570 1.17 : 6cf757: 48 89 55 c8 mov %rdx,-0x38(%rbp) 1.17 : 6cf75b: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%rbp) : return DTERR_BAD_FORMAT; \ : *(bufptr)++ = newchar; \ : } while (0) : : /* outer loop through fields */ : while (*cp != '\0') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:587 1.75 : 6cf762: eb 08 jmp 6cf76c 0.00 : 6cf764: 0f 1f 40 00 nopl 0x0(%rax) : return DTERR_BAD_FORMAT; : } : /* ignore other punctuation but use as delimiter */ : else if (ispunct((unsigned char) *cp)) : { : cp++; 0.00 : 6cf768: 49 83 c4 01 add $0x1,%r12 : return DTERR_BAD_FORMAT; \ : *(bufptr)++ = newchar; \ : } while (0) : : /* outer loop through fields */ : while (*cp != '\0') 0.19 : 6cf76c: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 6cf771: 84 db test %bl,%bl 0.00 : 6cf773: 0f 84 3f 01 00 00 je 6cf8b8 : { : /* Ignore spaces between fields */ : if (isspace((unsigned char) *cp)) 0.00 : 6cf779: e8 42 a1 d9 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 6cf77e: 49 89 c5 mov %rax,%r13 0.39 : 6cf781: 48 8b 00 mov (%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:590 1.36 : 6cf784: 0f b6 d3 movzbl %bl,%edx 0.00 : 6cf787: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:590 6.03 : 6cf78c: 75 da jne 6cf768 : cp++; : continue; : } : : /* Record start of current field */ : if (nf >= maxfields) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:597 2.72 : 6cf78e: 8b 45 ac mov -0x54(%rbp),%eax 0.00 : 6cf791: 39 45 c4 cmp %eax,-0x3c(%rbp) 0.00 : 6cf794: 7d 4c jge 6cf7e2 : return DTERR_BAD_FORMAT; : field[nf] = bufp; 0.00 : 6cf796: 4c 63 4d c4 movslq -0x3c(%rbp),%r9 0.00 : 6cf79a: 48 8b 55 b8 mov -0x48(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:599 0.58 : 6cf79e: 4e 8d 04 ca lea (%rdx,%r9,8),%r8 0.00 : 6cf7a2: 4d 89 38 mov %r15,(%r8) : : /* leading digit? then date or time */ : if (isdigit((unsigned char) *cp)) 0.00 : 6cf7a5: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cf7aa: 49 8b 45 00 mov 0x0(%r13),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:602 1.36 : 6cf7ae: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cf7b1: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 6cf7b5: f6 c4 08 test $0x8,%ah 0.00 : 6cf7b8: 0f 85 14 01 00 00 jne 6cf8d2 : */ : else : ftype[nf] = DTK_NUMBER; : } : /* Leading decimal point? Then fractional seconds... */ : else if (*cp == '.') 0.00 : 6cf7be: 80 f9 2e cmp $0x2e,%cl 0.00 : 6cf7c1: 0f 84 61 02 00 00 je 6cfa28 : } : : /* : * text? then date string, month, day of week, special, or timezone : */ : else if (isalpha((unsigned char) *cp)) 0.00 : 6cf7c7: f6 c4 04 test $0x4,%ah 0.00 : 6cf7ca: 0f 85 de 02 00 00 jne 6cfaae : *cp == '.' || *cp == ':' || : isalnum((unsigned char) *cp)); : } : } : /* sign? then special or numeric timezone */ : else if (*cp == '+' || *cp == '-') 0.00 : 6cf7d0: 80 f9 2b cmp $0x2b,%cl 0.00 : 6cf7d3: 74 2b je 6cf800 0.00 : 6cf7d5: 80 f9 2d cmp $0x2d,%cl 0.00 : 6cf7d8: 74 26 je 6cf800 : /* otherwise something wrong... */ : else : return DTERR_BAD_FORMAT; : } : /* ignore other punctuation but use as delimiter */ : else if (ispunct((unsigned char) *cp)) 0.00 : 6cf7da: a8 04 test $0x4,%al 0.00 : 6cf7dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6cf7e0: 75 86 jne 6cf768 : /* force in a delimiter after each field */ : *bufp++ = '\0'; : nf++; : } : : *numfields = nf; 0.00 : 6cf7e2: b8 ff ff ff ff mov $0xffffffff,%eax : : return 0; : } 0.00 : 6cf7e7: 48 83 c4 48 add $0x48,%rsp 0.00 : 6cf7eb: 5b pop %rbx 0.00 : 6cf7ec: 41 5c pop %r12 0.00 : 6cf7ee: 41 5d pop %r13 0.00 : 6cf7f0: 41 5e pop %r14 0.00 : 6cf7f2: 41 5f pop %r15 0.00 : 6cf7f4: c9 leaveq 0.00 : 6cf7f5: c3 retq 0.00 : 6cf7f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6cf7fd: 00 00 00 : } : } : /* sign? then special or numeric timezone */ : else if (*cp == '+' || *cp == '-') : { : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf800: 4d 8d 47 01 lea 0x1(%r15),%r8 0.00 : 6cf804: 4c 39 45 c8 cmp %r8,-0x38(%rbp) 0.00 : 6cf808: 76 d8 jbe 6cf7e2 0.00 : 6cf80a: 41 88 0f mov %cl,(%r15) : /* soak up leading whitespace */ : while (isspace((unsigned char) *cp)) 0.00 : 6cf80d: 41 0f b6 44 24 01 movzbl 0x1(%r12),%eax : } : } : /* sign? then special or numeric timezone */ : else if (*cp == '+' || *cp == '-') : { : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf813: 49 8d 5c 24 01 lea 0x1(%r12),%rbx : /* soak up leading whitespace */ : while (isspace((unsigned char) *cp)) 0.00 : 6cf818: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 6cf81c: 0f b7 04 42 movzwl (%rdx,%rax,2),%eax 0.00 : 6cf820: f6 c4 20 test $0x20,%ah 0.00 : 6cf823: 74 13 je 6cf838 0.00 : 6cf825: 0f 1f 00 nopl (%rax) : cp++; 0.00 : 6cf828: 48 83 c3 01 add $0x1,%rbx : /* sign? then special or numeric timezone */ : else if (*cp == '+' || *cp == '-') : { : APPEND_CHAR(bufp, bufend, *cp++); : /* soak up leading whitespace */ : while (isspace((unsigned char) *cp)) 0.00 : 6cf82c: 0f b6 03 movzbl (%rbx),%eax 0.00 : 6cf82f: 0f b7 04 42 movzwl (%rdx,%rax,2),%eax 0.00 : 6cf833: f6 c4 20 test $0x20,%ah 0.00 : 6cf836: 75 f0 jne 6cf828 : cp++; : /* numeric timezone? */ : /* note that "DTK_TZ" could also be a signed float or yyyy-mm */ : if (isdigit((unsigned char) *cp)) 0.00 : 6cf838: f6 c4 08 test $0x8,%ah 0.00 : 6cf83b: 0f 84 48 01 00 00 je 6cf989 : { : ftype[nf] = DTK_TZ; 0.00 : 6cf841: 48 8b 55 b0 mov -0x50(%rbp),%rdx : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf845: 49 8d 40 01 lea 0x1(%r8),%rax : cp++; : /* numeric timezone? */ : /* note that "DTK_TZ" could also be a signed float or yyyy-mm */ : if (isdigit((unsigned char) *cp)) : { : ftype[nf] = DTK_TZ; 0.00 : 6cf849: 42 c7 04 8a 04 00 00 movl $0x4,(%rdx,%r9,4) 0.00 : 6cf850: 00 : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf851: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cf855: 76 8b jbe 6cf7e2 0.00 : 6cf857: 0f b6 03 movzbl (%rbx),%eax 0.00 : 6cf85a: 4c 8d 63 01 lea 0x1(%rbx),%r12 0.00 : 6cf85e: 49 8d 77 02 lea 0x2(%r15),%rsi 0.00 : 6cf862: 41 88 00 mov %al,(%r8) : while (isdigit((unsigned char) *cp) || 0.00 : 6cf865: eb 10 jmp 6cf877 0.00 : 6cf867: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6cf86e: 00 00 : *cp == ':' || *cp == '.' || *cp == '-') : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf870: 88 4e ff mov %cl,-0x1(%rsi) 0.00 : 6cf873: 49 83 c4 01 add $0x1,%r12 : /* note that "DTK_TZ" could also be a signed float or yyyy-mm */ : if (isdigit((unsigned char) *cp)) : { : ftype[nf] = DTK_TZ; : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp) || 0.00 : 6cf877: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cf87c: 49 8b 45 00 mov 0x0(%r13),%rax : *cp == ':' || *cp == '.' || *cp == '-') : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf880: 49 89 f6 mov %rsi,%r14 : /* note that "DTK_TZ" could also be a signed float or yyyy-mm */ : if (isdigit((unsigned char) *cp)) : { : ftype[nf] = DTK_TZ; : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp) || 0.00 : 6cf883: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cf886: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cf88b: 75 13 jne 6cf8a0 0.00 : 6cf88d: 80 f9 3a cmp $0x3a,%cl 0.00 : 6cf890: 74 0e je 6cf8a0 0.00 : 6cf892: 80 f9 2e cmp $0x2e,%cl 0.00 : 6cf895: 74 09 je 6cf8a0 0.00 : 6cf897: 80 f9 2d cmp $0x2d,%cl 0.00 : 6cf89a: 0f 85 d8 00 00 00 jne 6cf978 0.00 : 6cf8a0: 48 83 c6 01 add $0x1,%rsi : *cp == ':' || *cp == '.' || *cp == '-') : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf8a4: 48 39 75 c8 cmp %rsi,-0x38(%rbp) 0.00 : 6cf8a8: 77 c6 ja 6cf870 : /* force in a delimiter after each field */ : *bufp++ = '\0'; : nf++; : } : : *numfields = nf; 0.00 : 6cf8aa: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 6cf8af: 90 nop 0.00 : 6cf8b0: e9 32 ff ff ff jmpq 6cf7e7 0.00 : 6cf8b5: 0f 1f 00 nopl (%rax) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:754 1.36 : 6cf8b8: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf8bb: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cf8bf: 89 02 mov %eax,(%rdx) : : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:757 1.56 : 6cf8c1: 48 83 c4 48 add $0x48,%rsp : /* force in a delimiter after each field */ : *bufp++ = '\0'; : nf++; : } : : *numfields = nf; 0.19 : 6cf8c5: 31 c0 xor %eax,%eax : : return 0; : } 0.00 : 6cf8c7: 5b pop %rbx 0.00 : 6cf8c8: 41 5c pop %r12 0.78 : 6cf8ca: 41 5d pop %r13 0.78 : 6cf8cc: 41 5e pop %r14 0.00 : 6cf8ce: 41 5f pop %r15 0.00 : 6cf8d0: c9 leaveq 1.56 : 6cf8d1: c3 retq : field[nf] = bufp; : : /* leading digit? then date or time */ : if (isdigit((unsigned char) *cp)) : { : APPEND_CHAR(bufp, bufend, *cp++); 0.19 : 6cf8d2: 49 8d 47 01 lea 0x1(%r15),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:604 1.56 : 6cf8d6: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cf8da: 0f 86 02 ff ff ff jbe 6cf7e2 1.17 : 6cf8e0: 49 83 c4 01 add $0x1,%r12 0.00 : 6cf8e4: 41 88 0f mov %cl,(%r15) 0.00 : 6cf8e7: 49 89 c6 mov %rax,%r14 : while (isdigit((unsigned char) *cp)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:605 1.56 : 6cf8ea: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 6cf8ef: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cf8f3: 0f b6 d3 movzbl %bl,%edx 0.00 : 6cf8f6: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 1.17 : 6cf8fb: 74 3e je 6cf93b : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cf8fd: 49 8d 47 02 lea 0x2(%r15),%rax 0.00 : 6cf901: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cf905: 0f 86 d7 fe ff ff jbe 6cf7e2 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:606 1.17 : 6cf90b: 48 89 c1 mov %rax,%rcx 0.00 : 6cf90e: eb 0e jmp 6cf91e 0.58 : 6cf910: 48 83 c1 01 add $0x1,%rcx 1.36 : 6cf914: 48 39 4d c8 cmp %rcx,-0x38(%rbp) 0.00 : 6cf918: 0f 86 c4 fe ff ff jbe 6cf7e2 0.78 : 6cf91e: 49 83 c4 01 add $0x1,%r12 0.00 : 6cf922: 88 59 ff mov %bl,-0x1(%rcx) : : /* leading digit? then date or time */ : if (isdigit((unsigned char) *cp)) : { : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:605 2.53 : 6cf925: 49 8b 45 00 mov 0x0(%r13),%rax 1.95 : 6cf929: 41 0f b6 1c 24 movzbl (%r12),%ebx : APPEND_CHAR(bufp, bufend, *cp++); 0.39 : 6cf92e: 49 89 ce mov %rcx,%r14 : : /* leading digit? then date or time */ : if (isdigit((unsigned char) *cp)) : { : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp)) 0.00 : 6cf931: 0f b6 d3 movzbl %bl,%edx 2.14 : 6cf934: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 2.92 : 6cf939: 75 d5 jne 6cf910 : APPEND_CHAR(bufp, bufend, *cp++); : : /* time field? */ : if (*cp == ':') 0.19 : 6cf93b: 80 fb 3a cmp $0x3a,%bl : : /* leading digit? then date or time */ : if (isdigit((unsigned char) *cp)) : { : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp)) 0.39 : 6cf93e: 4c 89 f1 mov %r14,%rcx : APPEND_CHAR(bufp, bufend, *cp++); : : /* time field? */ : if (*cp == ':') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:609 0.58 : 6cf941: 0f 84 0d 04 00 00 je 6cfd54 : while (isdigit((unsigned char) *cp) || : (*cp == ':') || (*cp == '.')) : APPEND_CHAR(bufp, bufend, *cp++); : } : /* date field? allow embedded text month */ : else if (*cp == '-' || *cp == '/' || *cp == '.') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:618 0.78 : 6cf947: 80 fb 2d cmp $0x2d,%bl 0.00 : 6cf94a: 0f 84 b8 02 00 00 je 6cfc08 0.00 : 6cf950: 80 fb 2f cmp $0x2f,%bl 0.00 : 6cf953: 0f 84 af 02 00 00 je 6cfc08 0.00 : 6cf959: 80 fb 2e cmp $0x2e,%bl 0.00 : 6cf95c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6cf960: 0f 84 a2 02 00 00 je 6cfc08 : /* : * otherwise, number only and will determine year, month, day, or : * concatenated fields later... : */ : else : ftype[nf] = DTK_NUMBER; 0.00 : 6cf966: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 6cf96a: 42 c7 04 8a 00 00 00 movl $0x0,(%rdx,%r9,4) 0.00 : 6cf971: 00 0.00 : 6cf972: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* otherwise, something is not right... */ : else : return DTERR_BAD_FORMAT; : : /* force in a delimiter after each field */ : *bufp++ = '\0'; 0.19 : 6cf978: 41 c6 06 00 movb $0x0,(%r14) 0.00 : 6cf97c: 4d 8d 7e 01 lea 0x1(%r14),%r15 : nf++; 0.00 : 6cf980: 83 45 c4 01 addl $0x1,-0x3c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:751 1.95 : 6cf984: e9 e3 fd ff ff jmpq 6cf76c : while (isdigit((unsigned char) *cp) || : *cp == ':' || *cp == '.' || *cp == '-') : APPEND_CHAR(bufp, bufend, *cp++); : } : /* special? */ : else if (isalpha((unsigned char) *cp)) 0.00 : 6cf989: f6 c4 04 test $0x4,%ah 0.00 : 6cf98c: 0f 84 50 fe ff ff je 6cf7e2 : { : ftype[nf] = DTK_SPECIAL; 0.00 : 6cf992: 48 8b 45 b0 mov -0x50(%rbp),%rax : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cf996: 4d 8d 70 01 lea 0x1(%r8),%r14 : APPEND_CHAR(bufp, bufend, *cp++); : } : /* special? */ : else if (isalpha((unsigned char) *cp)) : { : ftype[nf] = DTK_SPECIAL; 0.00 : 6cf99a: 42 c7 04 88 06 00 00 movl $0x6,(%rax,%r9,4) 0.00 : 6cf9a1: 00 : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cf9a2: 4c 39 75 c8 cmp %r14,-0x38(%rbp) 0.00 : 6cf9a6: 0f 86 36 fe ff ff jbe 6cf7e2 0.00 : 6cf9ac: 0f b6 3b movzbl (%rbx),%edi 0.00 : 6cf9af: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 6cf9b3: 4c 8d 63 01 lea 0x1(%rbx),%r12 0.00 : 6cf9b7: e8 24 ce 0d 00 callq 7ac7e0 0.00 : 6cf9bc: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 6cf9c0: 41 88 00 mov %al,(%r8) : while (isalpha((unsigned char) *cp)) 0.00 : 6cf9c3: 0f b6 4b 01 movzbl 0x1(%rbx),%ecx 0.00 : 6cf9c7: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cf9cb: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cf9ce: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 6cf9d3: 74 a3 je 6cf978 : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cf9d5: 49 8d 40 02 lea 0x2(%r8),%rax 0.00 : 6cf9d9: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cf9dd: 0f 86 ff fd ff ff jbe 6cf7e2 0.00 : 6cf9e3: 49 8d 5f 03 lea 0x3(%r15),%rbx 0.00 : 6cf9e7: eb 15 jmp 6cf9fe 0.00 : 6cf9e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 6cf9f0: 48 83 c3 01 add $0x1,%rbx 0.00 : 6cf9f4: 48 39 5d c8 cmp %rbx,-0x38(%rbp) 0.00 : 6cf9f8: 0f 86 e4 fd ff ff jbe 6cf7e2 0.00 : 6cf9fe: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfa02: 0f b6 f9 movzbl %cl,%edi 0.00 : 6cfa05: 49 89 de mov %rbx,%r14 0.00 : 6cfa08: e8 d3 cd 0d 00 callq 7ac7e0 0.00 : 6cfa0d: 88 43 ff mov %al,-0x1(%rbx) : /* special? */ : else if (isalpha((unsigned char) *cp)) : { : ftype[nf] = DTK_SPECIAL; : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); : while (isalpha((unsigned char) *cp)) 0.00 : 6cfa10: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cfa15: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfa19: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cfa1c: f6 44 50 01 04 testb $0x4,0x1(%rax,%rdx,2) 0.00 : 6cfa21: 75 cd jne 6cf9f0 0.00 : 6cfa23: e9 50 ff ff ff jmpq 6cf978 : ftype[nf] = DTK_NUMBER; : } : /* Leading decimal point? Then fractional seconds... */ : else if (*cp == '.') : { : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfa28: 49 8d 47 01 lea 0x1(%r15),%rax 0.00 : 6cfa2c: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cfa30: 0f 86 ac fd ff ff jbe 6cf7e2 0.00 : 6cfa36: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfa3a: 41 c6 07 2e movb $0x2e,(%r15) 0.00 : 6cfa3e: 49 89 c6 mov %rax,%r14 : while (isdigit((unsigned char) *cp)) 0.00 : 6cfa41: 41 0f b6 3c 24 movzbl (%r12),%edi 0.00 : 6cfa46: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfa4a: 40 0f b6 d7 movzbl %dil,%edx 0.00 : 6cfa4e: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cfa53: 74 48 je 6cfa9d : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfa55: 49 8d 47 02 lea 0x2(%r15),%rax 0.00 : 6cfa59: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cfa5d: 0f 86 7f fd ff ff jbe 6cf7e2 0.00 : 6cfa63: 48 89 c1 mov %rax,%rcx 0.00 : 6cfa66: eb 16 jmp 6cfa7e 0.00 : 6cfa68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cfa6f: 00 0.00 : 6cfa70: 48 83 c1 01 add $0x1,%rcx 0.00 : 6cfa74: 48 39 4d c8 cmp %rcx,-0x38(%rbp) 0.00 : 6cfa78: 0f 86 64 fd ff ff jbe 6cf7e2 0.00 : 6cfa7e: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfa82: 40 88 79 ff mov %dil,-0x1(%rcx) : } : /* Leading decimal point? Then fractional seconds... */ : else if (*cp == '.') : { : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp)) 0.00 : 6cfa86: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfa8a: 41 0f b6 3c 24 movzbl (%r12),%edi : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfa8f: 49 89 ce mov %rcx,%r14 : } : /* Leading decimal point? Then fractional seconds... */ : else if (*cp == '.') : { : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp)) 0.00 : 6cfa92: 40 0f b6 d7 movzbl %dil,%edx 0.00 : 6cfa96: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cfa9b: 75 d3 jne 6cfa70 : APPEND_CHAR(bufp, bufend, *cp++); : : ftype[nf] = DTK_NUMBER; 0.00 : 6cfa9d: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 6cfaa1: 42 c7 04 88 00 00 00 movl $0x0,(%rax,%r9,4) 0.00 : 6cfaa8: 00 0.00 : 6cfaa9: e9 ca fe ff ff jmpq 6cf978 : */ : else if (isalpha((unsigned char) *cp)) : { : bool is_date; : : ftype[nf] = DTK_STRING; 0.00 : 6cfaae: 48 8b 55 b0 mov -0x50(%rbp),%rdx : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfab2: 49 8d 5f 01 lea 0x1(%r15),%rbx : */ : else if (isalpha((unsigned char) *cp)) : { : bool is_date; : : ftype[nf] = DTK_STRING; 0.00 : 6cfab6: 4e 8d 0c 8a lea (%rdx,%r9,4),%r9 0.00 : 6cfaba: 4c 89 4d d0 mov %r9,-0x30(%rbp) 0.00 : 6cfabe: 41 c7 01 01 00 00 00 movl $0x1,(%r9) : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfac5: 48 39 5d c8 cmp %rbx,-0x38(%rbp) 0.00 : 6cfac9: 0f 86 13 fd ff ff jbe 6cf7e2 0.00 : 6cfacf: 41 0f b6 3c 24 movzbl (%r12),%edi 0.00 : 6cfad4: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfad8: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 6cfadc: e8 ff cc 0d 00 callq 7ac7e0 0.00 : 6cfae1: 41 88 07 mov %al,(%r15) : while (isalpha((unsigned char) *cp)) 0.00 : 6cfae4: 41 0f b6 0c 24 movzbl (%r12),%ecx : else if (isalpha((unsigned char) *cp)) : { : bool is_date; : : ftype[nf] = DTK_STRING; : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfae9: 49 89 d9 mov %rbx,%r9 : while (isalpha((unsigned char) *cp)) 0.00 : 6cfaec: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfaf0: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 6cfaf4: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cfaf7: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 6cfafb: f6 c4 04 test $0x4,%ah 0.00 : 6cfafe: 74 55 je 6cfb55 : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfb00: 49 8d 47 02 lea 0x2(%r15),%rax 0.00 : 6cfb04: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cfb08: 0f 86 d4 fc ff ff jbe 6cf7e2 0.00 : 6cfb0e: 48 89 c3 mov %rax,%rbx 0.00 : 6cfb11: eb 13 jmp 6cfb26 0.00 : 6cfb13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cfb18: 48 83 c3 01 add $0x1,%rbx 0.00 : 6cfb1c: 48 39 5d c8 cmp %rbx,-0x38(%rbp) 0.00 : 6cfb20: 0f 86 bc fc ff ff jbe 6cf7e2 0.00 : 6cfb26: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfb2a: 0f b6 f9 movzbl %cl,%edi 0.00 : 6cfb2d: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 6cfb31: e8 aa cc 0d 00 callq 7ac7e0 0.00 : 6cfb36: 88 43 ff mov %al,-0x1(%rbx) : { : bool is_date; : : ftype[nf] = DTK_STRING; : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); : while (isalpha((unsigned char) *cp)) 0.00 : 6cfb39: 41 0f b6 0c 24 movzbl (%r12),%ecx : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfb3e: 49 89 d9 mov %rbx,%r9 : { : bool is_date; : : ftype[nf] = DTK_STRING; : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); : while (isalpha((unsigned char) *cp)) 0.00 : 6cfb41: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfb45: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 6cfb49: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cfb4c: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 6cfb50: f6 c4 04 test $0x4,%ah 0.00 : 6cfb53: 75 c3 jne 6cfb18 : * next character is a digit or '+', we need to check whether what : * we have so far is a recognized non-timezone keyword --- if so, : * don't believe that this is the start of a timezone. : */ : is_date = false; : if (*cp == '-' || *cp == '/' || *cp == '.') 0.00 : 6cfb55: 80 f9 2d cmp $0x2d,%cl : { : bool is_date; : : ftype[nf] = DTK_STRING; : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); : while (isalpha((unsigned char) *cp)) 0.00 : 6cfb58: 4d 89 ce mov %r9,%r14 : * next character is a digit or '+', we need to check whether what : * we have so far is a recognized non-timezone keyword --- if so, : * don't believe that this is the start of a timezone. : */ : is_date = false; : if (*cp == '-' || *cp == '/' || *cp == '.') 0.00 : 6cfb5b: 74 40 je 6cfb9d 0.00 : 6cfb5d: 80 f9 2f cmp $0x2f,%cl 0.00 : 6cfb60: 74 3b je 6cfb9d 0.00 : 6cfb62: 80 f9 2e cmp $0x2e,%cl 0.00 : 6cfb65: 74 36 je 6cfb9d : is_date = true; : else if (*cp == '+' || isdigit((unsigned char) *cp)) 0.00 : 6cfb67: 80 f9 2b cmp $0x2b,%cl 0.00 : 6cfb6a: 74 0a je 6cfb76 0.00 : 6cfb6c: f6 c4 08 test $0x8,%ah 0.00 : 6cfb6f: 90 nop 0.00 : 6cfb70: 0f 84 02 fe ff ff je 6cf978 : { : *bufp = '\0'; /* null-terminate current field value */ 0.00 : 6cfb76: 41 c6 01 00 movb $0x0,(%r9) : /* we need search only the core token table, not TZ names */ : if (datebsearch(field[nf], datetktbl, szdatetktbl) == NULL) 0.00 : 6cfb7a: 49 8b 38 mov (%r8),%rdi 0.00 : 6cfb7d: ba 4a 00 00 00 mov $0x4a,%edx 0.00 : 6cfb82: 4c 89 4d 98 mov %r9,-0x68(%rbp) 0.00 : 6cfb86: be 20 a6 8b 00 mov $0x8ba620,%esi 0.00 : 6cfb8b: e8 40 ac ff ff callq 6ca7d0 0.00 : 6cfb90: 48 85 c0 test %rax,%rax 0.00 : 6cfb93: 4c 8b 4d 98 mov -0x68(%rbp),%r9 0.00 : 6cfb97: 0f 85 db fd ff ff jne 6cf978 : is_date = true; : } : if (is_date) : { : ftype[nf] = DTK_DATE; 0.00 : 6cfb9d: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 6cfba1: 49 8d 59 01 lea 0x1(%r9),%rbx 0.00 : 6cfba5: c7 00 02 00 00 00 movl $0x2,(%rax) 0.00 : 6cfbab: eb 4a jmp 6cfbf7 : do : { : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfbad: 41 0f b6 3c 24 movzbl (%r12),%edi 0.00 : 6cfbb2: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfbb6: 49 89 de mov %rbx,%r14 0.00 : 6cfbb9: e8 22 cc 0d 00 callq 7ac7e0 0.00 : 6cfbbe: 88 43 ff mov %al,-0x1(%rbx) : } while (*cp == '+' || *cp == '-' || : *cp == '/' || *cp == '_' || : *cp == '.' || *cp == ':' || : isalnum((unsigned char) *cp)); 0.00 : 6cfbc1: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 6cfbc6: 3c 2b cmp $0x2b,%al 0.00 : 6cfbc8: 74 29 je 6cfbf3 0.00 : 6cfbca: 3c 2d cmp $0x2d,%al 0.00 : 6cfbcc: 74 25 je 6cfbf3 0.00 : 6cfbce: 3c 2f cmp $0x2f,%al 0.00 : 6cfbd0: 74 21 je 6cfbf3 0.00 : 6cfbd2: 3c 5f cmp $0x5f,%al 0.00 : 6cfbd4: 74 1d je 6cfbf3 0.00 : 6cfbd6: 3c 2e cmp $0x2e,%al 0.00 : 6cfbd8: 74 19 je 6cfbf3 0.00 : 6cfbda: 3c 3a cmp $0x3a,%al 0.00 : 6cfbdc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6cfbe0: 74 11 je 6cfbf3 0.00 : 6cfbe2: 0f b6 d0 movzbl %al,%edx 0.00 : 6cfbe5: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfbe9: f6 04 50 08 testb $0x8,(%rax,%rdx,2) 0.00 : 6cfbed: 0f 84 85 fd ff ff je 6cf978 : if (datebsearch(field[nf], datetktbl, szdatetktbl) == NULL) : is_date = true; : } : if (is_date) : { : ftype[nf] = DTK_DATE; 0.00 : 6cfbf3: 48 83 c3 01 add $0x1,%rbx : do : { : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfbf7: 48 39 5d c8 cmp %rbx,-0x38(%rbp) 0.00 : 6cfbfb: 77 b0 ja 6cfbad 0.00 : 6cfbfd: e9 e0 fb ff ff jmpq 6cf7e2 0.00 : 6cfc02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else if (*cp == '-' || *cp == '/' || *cp == '.') : { : /* save delimiting character to use later */ : char delim = *cp; : : APPEND_CHAR(bufp, bufend, *cp++); 0.19 : 6cfc08: 49 8d 46 01 lea 0x1(%r14),%rax 0.19 : 6cfc0c: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cfc10: 0f 86 cc fb ff ff jbe 6cf7e2 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:623 0.58 : 6cfc16: 49 83 c4 01 add $0x1,%r12 0.58 : 6cfc1a: 41 88 1e mov %bl,(%r14) 0.00 : 6cfc1d: 49 89 c6 mov %rax,%r14 : /* second field is all digits? then no embedded text month */ : if (isdigit((unsigned char) *cp)) 0.00 : 6cfc20: 41 0f b6 14 24 movzbl (%r12),%edx 0.39 : 6cfc25: 49 8b 45 00 mov 0x0(%r13),%rax 0.39 : 6cfc29: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:625 0.78 : 6cfc2e: 0f 84 cc 00 00 00 je 6cfd00 : { : ftype[nf] = ((delim == '.') ? DTK_NUMBER : DTK_DATE); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:627 0.97 : 6cfc34: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.58 : 6cfc38: 31 c0 xor %eax,%eax 0.00 : 6cfc3a: 80 fb 2e cmp $0x2e,%bl 0.00 : 6cfc3d: 0f 95 c0 setne %al 0.78 : 6cfc40: 01 c0 add %eax,%eax 0.39 : 6cfc42: 4a 8d 34 8a lea (%rdx,%r9,4),%rsi 0.00 : 6cfc46: 89 06 mov %eax,(%rsi) : while (isdigit((unsigned char) *cp)) 0.19 : 6cfc48: 41 0f b6 3c 24 movzbl (%r12),%edi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:628 1.17 : 6cfc4d: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6cfc51: 40 0f b6 d7 movzbl %dil,%edx 0.00 : 6cfc55: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 1.75 : 6cfc5a: 74 41 je 6cfc9d : APPEND_CHAR(bufp, bufend, *cp++); 0.39 : 6cfc5c: 49 8d 46 01 lea 0x1(%r14),%rax 0.00 : 6cfc60: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 6cfc64: 0f 86 78 fb ff ff jbe 6cf7e2 0.19 : 6cfc6a: 48 83 c1 02 add $0x2,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:629 0.58 : 6cfc6e: eb 0e jmp 6cfc7e 1.17 : 6cfc70: 48 83 c1 01 add $0x1,%rcx 0.00 : 6cfc74: 48 39 4d c8 cmp %rcx,-0x38(%rbp) 0.00 : 6cfc78: 0f 86 64 fb ff ff jbe 6cf7e2 0.78 : 6cfc7e: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfc82: 40 88 79 ff mov %dil,-0x1(%rcx) : APPEND_CHAR(bufp, bufend, *cp++); : /* second field is all digits? then no embedded text month */ : if (isdigit((unsigned char) *cp)) : { : ftype[nf] = ((delim == '.') ? DTK_NUMBER : DTK_DATE); : while (isdigit((unsigned char) *cp)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:628 1.56 : 6cfc86: 49 8b 45 00 mov 0x0(%r13),%rax 1.75 : 6cfc8a: 41 0f b6 3c 24 movzbl (%r12),%edi : APPEND_CHAR(bufp, bufend, *cp++); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:629 0.78 : 6cfc8f: 49 89 ce mov %rcx,%r14 : APPEND_CHAR(bufp, bufend, *cp++); : /* second field is all digits? then no embedded text month */ : if (isdigit((unsigned char) *cp)) : { : ftype[nf] = ((delim == '.') ? DTK_NUMBER : DTK_DATE); : while (isdigit((unsigned char) *cp)) 0.00 : 6cfc92: 40 0f b6 d7 movzbl %dil,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:628 0.97 : 6cfc96: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 4.28 : 6cfc9b: 75 d3 jne 6cfc70 : : /* : * insist that the delimiters match to get a three-field : * date. : */ : if (*cp == delim) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:635 0.58 : 6cfc9d: 40 38 df cmp %bl,%dil 0.00 : 6cfca0: 0f 85 d2 fc ff ff jne 6cf978 : { : ftype[nf] = DTK_DATE; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:637 0.97 : 6cfca6: c7 06 02 00 00 00 movl $0x2,(%rsi) : APPEND_CHAR(bufp, bufend, *cp++); 0.19 : 6cfcac: 49 8d 56 01 lea 0x1(%r14),%rdx 0.19 : 6cfcb0: 48 39 55 c8 cmp %rdx,-0x38(%rbp) 0.00 : 6cfcb4: 0f 86 28 fb ff ff jbe 6cf7e2 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:638 0.78 : 6cfcba: 41 0f b6 04 24 movzbl (%r12),%eax 0.78 : 6cfcbf: 48 89 d6 mov %rdx,%rsi 0.00 : 6cfcc2: 49 83 c4 01 add $0x1,%r12 0.19 : 6cfcc6: 41 88 06 mov %al,(%r14) : while (isdigit((unsigned char) *cp) || *cp == delim) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:639 0.58 : 6cfcc9: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.39 : 6cfcce: 49 8b 45 00 mov 0x0(%r13),%rax : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfcd2: 49 89 f6 mov %rsi,%r14 : */ : if (*cp == delim) : { : ftype[nf] = DTK_DATE; : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp) || *cp == delim) 2.33 : 6cfcd5: 0f b6 d1 movzbl %cl,%edx 1.17 : 6cfcd8: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 3.70 : 6cfcdd: 75 09 jne 6cfce8 1.95 : 6cfcdf: 40 38 f9 cmp %dil,%cl 0.00 : 6cfce2: 0f 85 90 fc ff ff jne 6cf978 2.92 : 6cfce8: 48 83 c6 01 add $0x1,%rsi : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfcec: 48 39 75 c8 cmp %rsi,-0x38(%rbp) 0.00 : 6cfcf0: 0f 86 ec fa ff ff jbe 6cf7e2 0.19 : 6cfcf6: 88 4e ff mov %cl,-0x1(%rsi) 0.00 : 6cfcf9: 49 83 c4 01 add $0x1,%r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:640 3.31 : 6cfcfd: eb ca jmp 6cfcc9 0.00 : 6cfcff: 90 nop : } : } : else : { : ftype[nf] = DTK_DATE; 0.00 : 6cfd00: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 6cfd04: 4d 89 f7 mov %r14,%r15 0.00 : 6cfd07: 42 c7 04 88 02 00 00 movl $0x2,(%rax,%r9,4) 0.00 : 6cfd0e: 00 : while (isalnum((unsigned char) *cp) || *cp == delim) 0.00 : 6cfd0f: eb 25 jmp 6cfd36 0.00 : 6cfd11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 6cfd18: 49 83 c7 01 add $0x1,%r15 : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfd1c: 4c 39 7d c8 cmp %r15,-0x38(%rbp) 0.00 : 6cfd20: 0f 86 bc fa ff ff jbe 6cf7e2 0.00 : 6cfd26: 0f b6 f9 movzbl %cl,%edi 0.00 : 6cfd29: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfd2d: e8 ae ca 0d 00 callq 7ac7e0 0.00 : 6cfd32: 41 88 47 ff mov %al,-0x1(%r15) : } : } : else : { : ftype[nf] = DTK_DATE; : while (isalnum((unsigned char) *cp) || *cp == delim) 0.00 : 6cfd36: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cfd3b: 49 8b 45 00 mov 0x0(%r13),%rax : APPEND_CHAR(bufp, bufend, pg_tolower((unsigned char) *cp++)); 0.00 : 6cfd3f: 4d 89 fe mov %r15,%r14 : } : } : else : { : ftype[nf] = DTK_DATE; : while (isalnum((unsigned char) *cp) || *cp == delim) 0.00 : 6cfd42: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cfd45: f6 04 50 08 testb $0x8,(%rax,%rdx,2) 0.00 : 6cfd49: 75 cd jne 6cfd18 0.00 : 6cfd4b: 38 d9 cmp %bl,%cl 0.00 : 6cfd4d: 74 c9 je 6cfd18 0.00 : 6cfd4f: e9 24 fc ff ff jmpq 6cf978 : APPEND_CHAR(bufp, bufend, *cp++); : : /* time field? */ : if (*cp == ':') : { : ftype[nf] = DTK_TIME; 0.00 : 6cfd54: 48 8b 45 b0 mov -0x50(%rbp),%rax : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfd58: 49 8d 56 01 lea 0x1(%r14),%rdx : APPEND_CHAR(bufp, bufend, *cp++); : : /* time field? */ : if (*cp == ':') : { : ftype[nf] = DTK_TIME; 0.00 : 6cfd5c: 42 c7 04 88 03 00 00 movl $0x3,(%rax,%r9,4) 0.00 : 6cfd63: 00 : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfd64: 48 39 55 c8 cmp %rdx,-0x38(%rbp) 0.00 : 6cfd68: 0f 86 74 fa ff ff jbe 6cf7e2 0.00 : 6cfd6e: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 6cfd73: 48 89 d6 mov %rdx,%rsi 0.00 : 6cfd76: 49 83 c4 01 add $0x1,%r12 0.00 : 6cfd7a: 41 88 06 mov %al,(%r14) : while (isdigit((unsigned char) *cp) || 0.00 : 6cfd7d: eb 16 jmp 6cfd95 0.00 : 6cfd7f: 90 nop 0.00 : 6cfd80: 48 83 c6 01 add $0x1,%rsi : (*cp == ':') || (*cp == '.')) : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfd84: 48 39 75 c8 cmp %rsi,-0x38(%rbp) 0.00 : 6cfd88: 0f 86 54 fa ff ff jbe 6cf7e2 0.00 : 6cfd8e: 88 4e ff mov %cl,-0x1(%rsi) 0.00 : 6cfd91: 49 83 c4 01 add $0x1,%r12 : /* time field? */ : if (*cp == ':') : { : ftype[nf] = DTK_TIME; : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp) || 0.00 : 6cfd95: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 6cfd9a: 49 8b 45 00 mov 0x0(%r13),%rax : (*cp == ':') || (*cp == '.')) : APPEND_CHAR(bufp, bufend, *cp++); 0.00 : 6cfd9e: 49 89 f6 mov %rsi,%r14 : /* time field? */ : if (*cp == ':') : { : ftype[nf] = DTK_TIME; : APPEND_CHAR(bufp, bufend, *cp++); : while (isdigit((unsigned char) *cp) || 0.00 : 6cfda1: 0f b6 d1 movzbl %cl,%edx 0.00 : 6cfda4: f6 44 50 01 08 testb $0x8,0x1(%rax,%rdx,2) 0.00 : 6cfda9: 75 d5 jne 6cfd80 0.00 : 6cfdab: 80 f9 3a cmp $0x3a,%cl 0.00 : 6cfdae: 74 d0 je 6cfd80 0.00 : 6cfdb0: 80 f9 2e cmp $0x2e,%cl 0.00 : 6cfdb3: 74 cb je 6cfd80 0.00 : 6cfdb5: 0f 1f 00 nopl (%rax) 0.00 : 6cfdb8: e9 bb fb ff ff jmpq 6cf978 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1400 6.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1432 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1400 3.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1432 2.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1392 2.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:817 2.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1350 2.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1400 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:841 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:817 2.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:864 1.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:813 1.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:819 1.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:787 1.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:808 1.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:811 1.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1381 1.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:941 1.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1423 1.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:787 1.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:809 1.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:810 1.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1437 1.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:817 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:807 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1413 1.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1432 1.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:787 1.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:787 1.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:817 1.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 1.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 1.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1387 1.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1387 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:787 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1437 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1402 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:828 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:787 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:798 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:815 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:841 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1350 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:819 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:864 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:939 0.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:787 0.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:787 0.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:787 0.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:817 0.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1437 0.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1388 0.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1432 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cea40 : : * 1997-05-27 : */ : int : DecodeDateTime(char **field, int *ftype, int nf, : int *dtype, struct pg_tm * tm, fsec_t *fsec, int *tzp) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:787 1.78 : 6cea40: 55 push %rbp 1.19 : 6cea41: 48 89 e5 mov %rsp,%rbp 0.20 : 6cea44: 41 57 push %r15 0.59 : 6cea46: 41 56 push %r14 1.19 : 6cea48: 41 55 push %r13 0.79 : 6cea4a: 4d 89 c5 mov %r8,%r13 0.00 : 6cea4d: 41 54 push %r12 0.59 : 6cea4f: 53 push %rbx 0.59 : 6cea50: 48 81 ec d8 00 00 00 sub $0xd8,%rsp 0.00 : 6cea57: 4c 89 8d 20 ff ff ff mov %r9,-0xe0(%rbp) 0.99 : 6cea5e: 89 95 34 ff ff ff mov %edx,-0xcc(%rbp) 1.58 : 6cea64: 48 89 8d 28 ff ff ff mov %rcx,-0xd8(%rbp) : int val; : int dterr; : int mer = HR24; : bool haveTextMonth = FALSE; : bool isjulian = FALSE; : bool is2digits = FALSE; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:798 0.79 : 6cea6b: c6 45 cf 00 movb $0x0,-0x31(%rbp) : : /* : * We'll insist on at least all of the date fields, but initialize the : * remaining fields in case they are not set later... : */ : *dtype = DTK_DATE; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:807 1.38 : 6cea6f: c7 01 02 00 00 00 movl $0x2,(%rcx) : tm->tm_hour = 0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:808 1.78 : 6cea75: 41 c7 40 08 00 00 00 movl $0x0,0x8(%r8) 0.00 : 6cea7c: 00 : tm->tm_min = 0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:809 1.58 : 6cea7d: 41 c7 40 04 00 00 00 movl $0x0,0x4(%r8) 0.00 : 6cea84: 00 : tm->tm_sec = 0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:810 1.58 : 6cea85: 41 c7 00 00 00 00 00 movl $0x0,(%r8) : *fsec = 0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:811 1.78 : 6cea8c: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : 6cea93: c7 00 00 00 00 00 movl $0x0,(%rax) : /* don't know daylight savings time status apriori */ : tm->tm_isdst = -1; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:813 1.98 : 6cea99: 41 c7 40 20 ff ff ff movl $0xffffffff,0x20(%r8) 0.00 : 6ceaa0: ff : if (tzp != NULL) 0.20 : 6ceaa1: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 6ceaa6: 74 0a je 6ceab2 : *tzp = 0; 0.00 : 6ceaa8: 48 8b 55 10 mov 0x10(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:815 0.79 : 6ceaac: c7 02 00 00 00 00 movl $0x0,(%rdx) : : for (i = 0; i < nf; i++) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:817 0.59 : 6ceab2: 44 8b 85 34 ff ff ff mov -0xcc(%rbp),%r8d 1.19 : 6ceab9: 45 85 c0 test %r8d,%r8d 0.20 : 6ceabc: 0f 8e f1 08 00 00 jle 6cf3b3 : errno = 0; : val = strtoi(field[i], &cp, 10); : if (errno == ERANGE || val < 0) : return DTERR_FIELD_OVERFLOW; : : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.00 : 6ceac2: 49 8d 55 14 lea 0x14(%r13),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:841 0.79 : 6ceac6: 49 8d 4d 0c lea 0xc(%r13),%rcx 0.40 : 6ceaca: 49 8d 45 10 lea 0x10(%r13),%rax : #ifdef HAVE_INT64_TIMESTAMP : time *= USECS_PER_DAY; : #else : time *= SECS_PER_DAY; : #endif : dt2time(time, 0.00 : 6ceace: 48 89 b5 78 ff ff ff mov %rsi,-0x88(%rbp) 0.00 : 6cead5: 49 89 ff mov %rdi,%r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 1.38 : 6cead8: 45 31 f6 xor %r14d,%r14d : errno = 0; : val = strtoi(field[i], &cp, 10); : if (errno == ERANGE || val < 0) : return DTERR_FIELD_OVERFLOW; : : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.40 : 6ceadb: 48 89 95 48 ff ff ff mov %rdx,-0xb8(%rbp) : * We will need one of the following fields: : * DTK_NUMBER should be hhmmss.fff : * DTK_TIME should be hh:mm:ss.fff : * DTK_DATE should be hhmmss-zz : ***/ : if (i >= nf - 1 || 0.00 : 6ceae2: 8b 95 34 ff ff ff mov -0xcc(%rbp),%edx : errno = 0; : val = strtoi(field[i], &cp, 10); : if (errno == ERANGE || val < 0) : return DTERR_FIELD_OVERFLOW; : : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.20 : 6ceae8: 48 89 8d 38 ff ff ff mov %rcx,-0xc8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:841 2.17 : 6ceaef: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) : #ifdef HAVE_INT64_TIMESTAMP : time *= USECS_PER_DAY; : #else : time *= SECS_PER_DAY; : #endif : dt2time(time, 0.40 : 6ceaf6: 49 8d 4d 04 lea 0x4(%r13),%rcx 0.00 : 6ceafa: 49 8d 45 08 lea 0x8(%r13),%rax 0.00 : 6ceafe: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6ceb05: 00 00 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 1.38 : 6ceb08: c7 85 64 ff ff ff 00 movl $0x0,-0x9c(%rbp) 0.00 : 6ceb0f: 00 00 00 : * We will need one of the following fields: : * DTK_NUMBER should be hhmmss.fff : * DTK_TIME should be hh:mm:ss.fff : * DTK_DATE should be hhmmss-zz : ***/ : if (i >= nf - 1 || /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1350 2.37 : 6ceb12: 83 ea 01 sub $0x1,%edx : #ifdef HAVE_INT64_TIMESTAMP : time *= USECS_PER_DAY; : #else : time *= SECS_PER_DAY; : #endif : dt2time(time, 0.00 : 6ceb15: 48 89 8d 50 ff ff ff mov %rcx,-0xb0(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1106 1.38 : 6ceb1c: c7 85 68 ff ff ff 02 movl $0x2,-0x98(%rbp) 0.00 : 6ceb23: 00 00 00 0.79 : 6ceb26: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) 1.19 : 6ceb2d: c6 85 6d ff ff ff 00 movb $0x0,-0x93(%rbp) 1.38 : 6ceb34: c6 85 6e ff ff ff 00 movb $0x0,-0x92(%rbp) 0.79 : 6ceb3b: c6 85 6f ff ff ff 00 movb $0x0,-0x91(%rbp) 1.19 : 6ceb42: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) 0.00 : 6ceb49: 00 00 00 00 : * We will need one of the following fields: : * DTK_NUMBER should be hhmmss.fff : * DTK_TIME should be hh:mm:ss.fff : * DTK_DATE should be hhmmss-zz : ***/ : if (i >= nf - 1 || /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1350 0.79 : 6ceb4d: 89 95 14 ff ff ff mov %edx,-0xec(%rbp) : if (tzp != NULL) : *tzp = 0; : : for (i = 0; i < nf; i++) : { : switch (ftype[i]) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:819 1.98 : 6ceb53: 48 8b 8d 78 ff ff ff mov -0x88(%rbp),%rcx 0.00 : 6ceb5a: 83 39 06 cmpl $0x6,(%rcx) 0.00 : 6ceb5d: 76 21 jbe 6ceb80 : * error : */ : if (fmask & DTK_M(DTZMOD)) : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, session_timezone); 0.00 : 6ceb5f: bb ff ff ff ff mov $0xffffffff,%ebx : } : } : : return 0; : } 0.20 : 6ceb64: 48 81 c4 d8 00 00 00 add $0xd8,%rsp 0.20 : 6ceb6b: 89 d8 mov %ebx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1437 0.99 : 6ceb6d: 5b pop %rbx 0.00 : 6ceb6e: 41 5c pop %r12 0.00 : 6ceb70: 41 5d pop %r13 0.00 : 6ceb72: 41 5e pop %r14 0.59 : 6ceb74: 41 5f pop %r15 0.20 : 6ceb76: c9 leaveq 1.58 : 6ceb77: c3 retq 0.00 : 6ceb78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6ceb7f: 00 : if (tzp != NULL) : *tzp = 0; : : for (i = 0; i < nf; i++) : { : switch (ftype[i]) 0.00 : 6ceb80: 8b 01 mov (%rcx),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:819 0.79 : 6ceb82: ff 24 c5 78 a2 8b 00 jmpq *0x8ba278(,%rax,8) 0.00 : 6ceb89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : case DTK_TZ: : { : int tz; : : if (tzp == NULL) 0.00 : 6ceb90: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 6ceb95: 74 c8 je 6ceb5f : return DTERR_BAD_FORMAT; : : dterr = DecodeTimezone(field[i], &tz); 0.00 : 6ceb97: 49 8b 3f mov (%r15),%rdi 0.00 : 6ceb9a: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 6ceb9e: e8 5d e7 ff ff callq 6cd300 : if (dterr) 0.00 : 6ceba3: 85 c0 test %eax,%eax : int tz; : : if (tzp == NULL) : return DTERR_BAD_FORMAT; : : dterr = DecodeTimezone(field[i], &tz); 0.00 : 6ceba5: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6ceba7: 75 bb jne 6ceb64 : return dterr; : *tzp = tz; 0.00 : 6ceba9: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 6cebac: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cebb0: 89 02 mov %eax,(%rdx) : tmask = DTK_M(TZ); 0.00 : 6cebb2: c7 45 c8 20 00 00 00 movl $0x20,-0x38(%rbp) : : default: : return DTERR_BAD_FORMAT; : } : : if (tmask & fmask) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1381 1.78 : 6cebb9: 8b 45 c8 mov -0x38(%rbp),%eax 0.20 : 6cebbc: 41 85 c6 test %eax,%r14d 0.00 : 6cebbf: 75 9e jne 6ceb5f : return DTERR_BAD_FORMAT; : fmask |= tmask; 0.00 : 6cebc1: 41 09 c6 or %eax,%r14d : /* don't know daylight savings time status apriori */ : tm->tm_isdst = -1; : if (tzp != NULL) : *tzp = 0; : : for (i = 0; i < nf; i++) 0.00 : 6cebc4: 83 85 64 ff ff ff 01 addl $0x1,-0x9c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:817 2.17 : 6cebcb: 48 83 85 78 ff ff ff addq $0x4,-0x88(%rbp) 0.00 : 6cebd2: 04 0.40 : 6cebd3: 49 83 c7 08 add $0x8,%r15 1.58 : 6cebd7: 8b 95 64 ff ff ff mov -0x9c(%rbp),%edx 0.40 : 6cebdd: 39 95 34 ff ff ff cmp %edx,-0xcc(%rbp) 0.00 : 6cebe3: 0f 8f 6a ff ff ff jg 6ceb53 2.57 : 6cebe9: 0f be 8d 6f ff ff ff movsbl -0x91(%rbp),%ecx 0.00 : 6cebf0: 0f be b5 6e ff ff ff movsbl -0x92(%rbp),%esi : return DTERR_BAD_FORMAT; : fmask |= tmask; : } /* end loop over fields */ : : /* do final checking/adjustment of Y/M/D fields */ : dterr = ValidateDate(fmask, isjulian, is2digits, bc, tm); 0.20 : 6cebf7: 0f be 55 cf movsbl -0x31(%rbp),%edx 0.00 : 6cebfb: 4d 89 e8 mov %r13,%r8 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1387 1.19 : 6cebfe: 44 89 f7 mov %r14d,%edi 0.00 : 6cec01: e8 ea b2 ff ff callq 6c9ef0 : if (dterr) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1388 0.59 : 6cec06: 85 c0 test %eax,%eax : return DTERR_BAD_FORMAT; : fmask |= tmask; : } /* end loop over fields */ : : /* do final checking/adjustment of Y/M/D fields */ : dterr = ValidateDate(fmask, isjulian, is2digits, bc, tm); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1387 1.19 : 6cec08: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6cec0a: 0f 85 54 ff ff ff jne 6ceb64 : return dterr; : : /* handle AM/PM */ : if (mer != HR24 && tm->tm_hour > HOURS_PER_DAY / 2) 0.20 : 6cec10: 83 bd 68 ff ff ff 02 cmpl $0x2,-0x98(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1392 2.96 : 6cec17: 0f 85 bb 08 00 00 jne 6cf4d8 : tm->tm_hour = 0; : else if (mer == PM && tm->tm_hour != HOURS_PER_DAY / 2) : tm->tm_hour += HOURS_PER_DAY / 2; : : /* do additional checking for full date specs... */ : if (*dtype == DTK_DATE) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1400 2.37 : 6cec1d: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 4.55 : 6cec24: 83 39 02 cmpl $0x2,(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1400 8.30 : 6cec27: 0f 85 37 ff ff ff jne 6ceb64 : { : if ((fmask & DTK_DATE_M) != DTK_DATE_M) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1402 0.99 : 6cec2d: 44 89 f0 mov %r14d,%eax 0.00 : 6cec30: 83 e0 0e and $0xe,%eax 0.00 : 6cec33: 83 f8 0e cmp $0xe,%eax 0.00 : 6cec36: 0f 84 4f 08 00 00 je 6cf48b : { : if ((fmask & DTK_TIME_M) == DTK_TIME_M) 0.00 : 6cec3c: 41 81 e6 00 7c 00 00 and $0x7c00,%r14d 0.00 : 6cec43: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 6cec48: 41 81 fe 00 7c 00 00 cmp $0x7c00,%r14d 0.00 : 6cec4f: 0f 84 0f ff ff ff je 6ceb64 0.00 : 6cec55: e9 05 ff ff ff jmpq 6ceb5f 0.00 : 6cec5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case DTK_TIME: : : /* : * This might be an ISO time following a "t" field. : */ : if (ptype != 0) 0.00 : 6cec60: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 6cec66: 85 c0 test %eax,%eax 0.00 : 6cec68: 0f 85 52 03 00 00 jne 6cefc0 : /* Sanity check; should not fail this test */ : if (ptype != DTK_TIME) : return DTERR_BAD_FORMAT; : ptype = 0; : } : dterr = DecodeTime(field[i], fmask, INTERVAL_FULL_RANGE, 0.00 : 6cec6e: 4c 8b 8d 20 ff ff ff mov -0xe0(%rbp),%r9 0.00 : 6cec75: 49 8b 3f mov (%r15),%rdi 0.00 : 6cec78: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6cec7c: 4d 89 e8 mov %r13,%r8 0.00 : 6cec7f: ba ff 7f 00 00 mov $0x7fff,%edx 0.00 : 6cec84: 44 89 f6 mov %r14d,%esi 0.00 : 6cec87: e8 74 db ff ff callq 6cc800 : &tmask, tm, fsec); : if (dterr) 0.00 : 6cec8c: 85 c0 test %eax,%eax : /* Sanity check; should not fail this test */ : if (ptype != DTK_TIME) : return DTERR_BAD_FORMAT; : ptype = 0; : } : dterr = DecodeTime(field[i], fmask, INTERVAL_FULL_RANGE, 0.00 : 6cec8e: 89 c3 mov %eax,%ebx : &tmask, tm, fsec); : if (dterr) 0.00 : 6cec90: 0f 85 ce fe ff ff jne 6ceb64 : /* : * Check upper limit on hours; other limits checked in : * DecodeTime() : */ : /* test for > 24:00:00 */ : if (tm->tm_hour > HOURS_PER_DAY || 0.00 : 6cec96: 41 83 7d 08 18 cmpl $0x18,0x8(%r13) 0.00 : 6cec9b: 7f 2e jg 6ceccb 0.00 : 6cec9d: 0f 1f 00 nopl (%rax) 0.00 : 6ceca0: 0f 85 13 ff ff ff jne 6cebb9 0.00 : 6ceca6: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 6cecaa: 85 c0 test %eax,%eax 0.00 : 6cecac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6cecb0: 7f 19 jg 6ceccb 0.00 : 6cecb2: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 6cecb6: 85 c0 test %eax,%eax 0.00 : 6cecb8: 7f 11 jg 6ceccb 0.00 : 6cecba: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 6cecc1: 8b 01 mov (%rcx),%eax 0.00 : 6cecc3: 85 c0 test %eax,%eax 0.00 : 6cecc5: 0f 8e ee fe ff ff jle 6cebb9 : * error : */ : if (fmask & DTK_M(DTZMOD)) : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, session_timezone); 0.00 : 6ceccb: bb fe ff ff ff mov $0xfffffffe,%ebx 0.00 : 6cecd0: e9 8f fe ff ff jmpq 6ceb64 0.00 : 6cecd5: 0f 1f 00 nopl (%rax) : /* : * Integral julian day with attached time zone? All other : * forms with JD will be separated into distinct fields, so we : * handle just this case here. : */ : if (ptype == DTK_JULIAN) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:828 0.99 : 6cecd8: 83 bd 60 ff ff ff 1f cmpl $0x1f,-0xa0(%rbp) 0.00 : 6cecdf: 0f 84 ef 06 00 00 je 6cf3d4 : * : * We consider it a time zone if we already have month & day. : * This is to allow the form "mmm dd hhmmss tz year", which : * we've historically accepted. : */ : else if (ptype != 0 || /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:864 0.79 : 6cece5: 8b 8d 60 ff ff ff mov -0xa0(%rbp),%ecx 0.00 : 6ceceb: 85 c9 test %ecx,%ecx 0.00 : 6ceced: 75 0f jne 6cecfe 0.00 : 6cecef: 44 89 f0 mov %r14d,%eax 0.00 : 6cecf2: 83 e0 0a and $0xa,%eax 2.17 : 6cecf5: 83 f8 0a cmp $0xa,%eax 0.00 : 6cecf8: 0f 85 a2 01 00 00 jne 6ceea0 : ((fmask & (DTK_M(MONTH) | DTK_M(DAY))) == : (DTK_M(MONTH) | DTK_M(DAY)))) : { : /* No time zone accepted? Then quit... */ : if (tzp == NULL) 0.00 : 6cecfe: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 6ced03: 0f 84 56 fe ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : : if (isdigit((unsigned char) *field[i]) || ptype != 0) 0.00 : 6ced09: e8 b2 ab d9 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 6ced0e: 49 8b 3f mov (%r15),%rdi 0.00 : 6ced11: 48 8b 00 mov (%rax),%rax 0.00 : 6ced14: 0f b6 17 movzbl (%rdi),%edx 0.00 : 6ced17: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : 6ced1b: 25 00 08 00 00 and $0x800,%eax 0.00 : 6ced20: 0b 85 60 ff ff ff or -0xa0(%rbp),%eax 0.00 : 6ced26: 0f 84 64 02 00 00 je 6cef90 : { : char *cp; : : if (ptype != 0) 0.00 : 6ced2c: 8b 95 60 ff ff ff mov -0xa0(%rbp),%edx 0.00 : 6ced32: 85 d2 test %edx,%edx 0.00 : 6ced34: 0f 85 fe 01 00 00 jne 6cef38 : /* : * Starts with a digit but we already have a time : * field? Then we are in trouble with a date and time : * already... : */ : if ((fmask & DTK_TIME_M) == DTK_TIME_M) 0.00 : 6ced3a: 44 89 f0 mov %r14d,%eax 0.00 : 6ced3d: 25 00 7c 00 00 and $0x7c00,%eax 0.00 : 6ced42: 3d 00 7c 00 00 cmp $0x7c00,%eax 0.00 : 6ced47: 0f 84 12 fe ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : : if ((cp = strchr(field[i], '-')) == NULL) 0.00 : 6ced4d: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 6ced52: e8 f9 ae d9 ff callq 469c50 0.00 : 6ced57: 48 85 c0 test %rax,%rax 0.00 : 6ced5a: 49 89 c4 mov %rax,%r12 0.00 : 6ced5d: 0f 84 fc fd ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : : /* Get the time zone from the end of the string */ : dterr = DecodeTimezone(cp, tzp); 0.00 : 6ced63: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 6ced67: 48 89 c7 mov %rax,%rdi 0.00 : 6ced6a: e8 91 e5 ff ff callq 6cd300 : if (dterr) 0.00 : 6ced6f: 85 c0 test %eax,%eax : : if ((cp = strchr(field[i], '-')) == NULL) : return DTERR_BAD_FORMAT; : : /* Get the time zone from the end of the string */ : dterr = DecodeTimezone(cp, tzp); 0.00 : 6ced71: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6ced73: 0f 85 eb fd ff ff jne 6ceb64 : return dterr; : *cp = '\0'; 0.00 : 6ced79: 41 c6 04 24 00 movb $0x0,(%r12) : : /* : * Then read the rest of the field as a concatenated : * time : */ : dterr = DecodeNumberField(strlen(field[i]), field[i], 0.00 : 6ced7e: 49 8b 1f mov (%r15),%rbx 0.00 : 6ced81: 48 89 df mov %rbx,%rdi 0.00 : 6ced84: e8 c7 aa d9 ff callq 469850 0.00 : 6ced89: 48 8d 55 cf lea -0x31(%rbp),%rdx 0.00 : 6ced8d: 4c 8b 8d 20 ff ff ff mov -0xe0(%rbp),%r9 0.00 : 6ced94: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6ced98: 48 89 de mov %rbx,%rsi 0.00 : 6ced9b: 4d 89 e8 mov %r13,%r8 0.00 : 6ced9e: 89 c7 mov %eax,%edi 0.00 : 6ceda0: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 6ceda4: 44 89 f2 mov %r14d,%edx 0.00 : 6ceda7: e8 04 e7 ff ff callq 6cd4b0 : fmask, : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cedac: 85 c0 test %eax,%eax : : /* : * Then read the rest of the field as a concatenated : * time : */ : dterr = DecodeNumberField(strlen(field[i]), field[i], 0.00 : 6cedae: 89 c3 mov %eax,%ebx : fmask, : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cedb0: 0f 88 ae fd ff ff js 6ceb64 : : /* : * modify tmask after returning from : * DecodeNumberField() : */ : tmask |= DTK_M(TZ); 0.00 : 6cedb6: 83 4d c8 20 orl $0x20,-0x38(%rbp) 0.00 : 6cedba: e9 fa fd ff ff jmpq 6cebb9 0.00 : 6cedbf: 90 nop : } : break; : : case DTK_STRING: : case DTK_SPECIAL: : type = DecodeSpecial(i, field[i], &val); 0.00 : 6cedc0: 49 8b 37 mov (%r15),%rsi 0.00 : 6cedc3: 8b bd 64 ff ff ff mov -0x9c(%rbp),%edi 0.00 : 6cedc9: 48 8d 55 c4 lea -0x3c(%rbp),%rdx 0.00 : 6cedcd: e8 9e bb ff ff callq 6ca970 : if (type == IGNORE_DTF) 0.00 : 6cedd2: 83 f8 08 cmp $0x8,%eax 0.00 : 6cedd5: 0f 84 e9 fd ff ff je 6cebc4 : continue; : : tmask = DTK_M(type); 0.00 : 6ceddb: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6cede0: 89 c1 mov %eax,%ecx 0.00 : 6cede2: d3 e2 shl %cl,%edx : switch (type) 0.00 : 6cede4: 83 f8 1f cmp $0x1f,%eax : case DTK_SPECIAL: : type = DecodeSpecial(i, field[i], &val); : if (type == IGNORE_DTF) : continue; : : tmask = DTK_M(type); 0.00 : 6cede7: 89 55 c8 mov %edx,-0x38(%rbp) : switch (type) 0.00 : 6cedea: 0f 87 6f fd ff ff ja 6ceb5f 0.00 : 6cedf0: 89 c0 mov %eax,%eax 0.00 : 6cedf2: ff 24 c5 b0 a2 8b 00 jmpq *0x8ba2b0(,%rax,8) 0.00 : 6cedf9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * Was this an "ISO date" with embedded field labels? An : * example is "y2001m02d04" - thomas 2001-02-04 : */ : if (ptype != 0) 0.00 : 6cee00: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 6cee06: 85 c0 test %eax,%eax 0.00 : 6cee08: 0f 85 7a 03 00 00 jne 6cf188 : else : { : char *cp; : int flen; : : flen = strlen(field[i]); 0.00 : 6cee0e: 49 8b 1f mov (%r15),%rbx 0.00 : 6cee11: 48 89 df mov %rbx,%rdi 0.00 : 6cee14: e8 37 aa d9 ff callq 469850 : cp = strchr(field[i], '.'); 0.00 : 6cee19: be 2e 00 00 00 mov $0x2e,%esi : else : { : char *cp; : int flen; : : flen = strlen(field[i]); 0.00 : 6cee1e: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) : cp = strchr(field[i], '.'); 0.00 : 6cee25: 48 89 df mov %rbx,%rdi : else : { : char *cp; : int flen; : : flen = strlen(field[i]); 0.00 : 6cee28: 41 89 c4 mov %eax,%r12d : cp = strchr(field[i], '.'); 0.00 : 6cee2b: e8 20 ae d9 ff callq 469c50 : : /* Embedded decimal and no date yet? */ : if (cp != NULL && !(fmask & DTK_DATE_M)) 0.00 : 6cee30: 48 85 c0 test %rax,%rax 0.00 : 6cee33: 74 22 je 6cee57 0.00 : 6cee35: 41 f6 c6 0e test $0xe,%r14b 0.00 : 6cee39: 0f 84 d1 00 00 00 je 6cef10 : &tmask, &is2digits, tm); : if (dterr) : return dterr; : } : /* embedded decimal and several digits before? */ : else if (cp != NULL && flen - strlen(cp) > 2) 0.00 : 6cee3f: 48 89 c7 mov %rax,%rdi 0.00 : 6cee42: e8 09 aa d9 ff callq 469850 0.00 : 6cee47: 49 63 d4 movslq %r12d,%rdx 0.00 : 6cee4a: 48 29 c2 sub %rax,%rdx 0.00 : 6cee4d: 48 83 fa 02 cmp $0x2,%rdx 0.00 : 6cee51: 0f 87 01 01 00 00 ja 6cef58 : * more digits, we assume it is YMD or HMS unless no date : * and no time values have been specified. This forces 6+ : * digit years to be at the end of the string, or to use : * the ISO date specification. : */ : else if (flen >= 6 && (!(fmask & DTK_DATE_M) || 0.00 : 6cee57: 41 83 fc 05 cmp $0x5,%r12d 0.00 : 6cee5b: 7e 6b jle 6ceec8 0.00 : 6cee5d: 41 f6 c6 0e test $0xe,%r14b 0.00 : 6cee61: 74 09 je 6cee6c 0.00 : 6cee63: 41 f7 c6 00 7c 00 00 test $0x7c00,%r14d 0.00 : 6cee6a: 75 5c jne 6ceec8 : !(fmask & DTK_TIME_M))) : { : dterr = DecodeNumberField(flen, field[i], fmask, 0.00 : 6cee6c: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 6cee70: 4c 8b 8d 20 ff ff ff mov -0xe0(%rbp),%r9 0.00 : 6cee77: 48 89 de mov %rbx,%rsi 0.00 : 6cee7a: 4d 89 e8 mov %r13,%r8 0.00 : 6cee7d: 44 89 f2 mov %r14d,%edx 0.00 : 6cee80: 44 89 e7 mov %r12d,%edi 0.00 : 6cee83: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 6cee87: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6cee8b: e8 20 e6 ff ff callq 6cd4b0 : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cee90: 85 c0 test %eax,%eax : * the ISO date specification. : */ : else if (flen >= 6 && (!(fmask & DTK_DATE_M) || : !(fmask & DTK_TIME_M))) : { : dterr = DecodeNumberField(flen, field[i], fmask, 0.00 : 6cee92: 89 c3 mov %eax,%ebx : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cee94: 0f 89 1f fd ff ff jns 6cebb9 0.00 : 6cee9a: e9 c5 fc ff ff jmpq 6ceb64 0.00 : 6cee9f: 90 nop : tmask = DTK_M(TZ); : } : } : else : { : dterr = DecodeDate(field[i], fmask, 0.00 : 6ceea0: 49 8b 3f mov (%r15),%rdi 0.20 : 6ceea3: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 6ceea7: 48 8d 55 c8 lea -0x38(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:939 0.79 : 6ceeab: 4d 89 e8 mov %r13,%r8 0.00 : 6ceeae: 44 89 f6 mov %r14d,%esi 0.00 : 6ceeb1: e8 fa e9 ff ff callq 6cd8b0 : &tmask, &is2digits, tm); : if (dterr) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:941 1.78 : 6ceeb6: 85 c0 test %eax,%eax : tmask = DTK_M(TZ); : } : } : else : { : dterr = DecodeDate(field[i], fmask, 0.00 : 6ceeb8: 89 c3 mov %eax,%ebx : &tmask, &is2digits, tm); : if (dterr) 0.00 : 6ceeba: 0f 84 f9 fc ff ff je 6cebb9 0.00 : 6ceec0: e9 9f fc ff ff jmpq 6ceb64 0.00 : 6ceec5: 0f 1f 00 nopl (%rax) : return dterr; : } : /* otherwise it is a single date/time field... */ : else : { : dterr = DecodeNumber(flen, field[i], 0.00 : 6ceec8: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 6ceecf: 0f be 95 6d ff ff ff movsbl -0x93(%rbp),%edx 0.00 : 6ceed6: 48 8d 45 cf lea -0x31(%rbp),%rax 0.00 : 6ceeda: 4c 8d 45 c8 lea -0x38(%rbp),%r8 0.00 : 6ceede: 48 89 de mov %rbx,%rsi 0.00 : 6ceee1: 4d 89 e9 mov %r13,%r9 0.00 : 6ceee4: 44 89 e7 mov %r12d,%edi 0.00 : 6ceee7: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 6ceeec: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 6ceef0: 44 89 f1 mov %r14d,%ecx 0.00 : 6ceef3: e8 a8 e7 ff ff callq 6cd6a0 : haveTextMonth, fmask, : &tmask, tm, : fsec, &is2digits); : if (dterr) 0.00 : 6ceef8: 85 c0 test %eax,%eax : return dterr; : } : /* otherwise it is a single date/time field... */ : else : { : dterr = DecodeNumber(flen, field[i], 0.00 : 6ceefa: 89 c3 mov %eax,%ebx : haveTextMonth, fmask, : &tmask, tm, : fsec, &is2digits); : if (dterr) 0.00 : 6ceefc: 0f 84 b7 fc ff ff je 6cebb9 0.00 : 6cef02: e9 5d fc ff ff jmpq 6ceb64 0.00 : 6cef07: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6cef0e: 00 00 : cp = strchr(field[i], '.'); : : /* Embedded decimal and no date yet? */ : if (cp != NULL && !(fmask & DTK_DATE_M)) : { : dterr = DecodeDate(field[i], fmask, 0.00 : 6cef10: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 6cef14: 48 8d 55 c8 lea -0x38(%rbp),%rdx 0.00 : 6cef18: 48 89 df mov %rbx,%rdi 0.00 : 6cef1b: 4d 89 e8 mov %r13,%r8 0.00 : 6cef1e: 44 89 f6 mov %r14d,%esi 0.00 : 6cef21: e8 8a e9 ff ff callq 6cd8b0 : &tmask, &is2digits, tm); : if (dterr) 0.00 : 6cef26: 85 c0 test %eax,%eax : cp = strchr(field[i], '.'); : : /* Embedded decimal and no date yet? */ : if (cp != NULL && !(fmask & DTK_DATE_M)) : { : dterr = DecodeDate(field[i], fmask, 0.00 : 6cef28: 89 c3 mov %eax,%ebx : &tmask, &is2digits, tm); : if (dterr) 0.00 : 6cef2a: 0f 84 89 fc ff ff je 6cebb9 0.00 : 6cef30: e9 2f fc ff ff jmpq 6ceb64 0.00 : 6cef35: 0f 1f 00 nopl (%rax) : char *cp; : : if (ptype != 0) : { : /* Sanity check; should not fail this test */ : if (ptype != DTK_TIME) 0.00 : 6cef38: 83 bd 60 ff ff ff 03 cmpl $0x3,-0xa0(%rbp) 0.00 : 6cef3f: 90 nop 0.00 : 6cef40: 0f 85 19 fc ff ff jne 6ceb5f 0.00 : 6cef46: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6cef4d: 00 00 00 0.00 : 6cef50: e9 e5 fd ff ff jmpq 6ced3a 0.00 : 6cef55: 0f 1f 00 nopl (%rax) : /* : * Interpret as a concatenated date or time Set the : * type field to allow decoding other fields later. : * Example: 20011223 or 040506 : */ : dterr = DecodeNumberField(flen, field[i], fmask, 0.00 : 6cef58: 48 8d 55 cf lea -0x31(%rbp),%rdx 0.00 : 6cef5c: 4c 8b 8d 20 ff ff ff mov -0xe0(%rbp),%r9 0.00 : 6cef63: 8b bd 18 ff ff ff mov -0xe8(%rbp),%edi 0.00 : 6cef69: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6cef6d: 48 89 de mov %rbx,%rsi 0.00 : 6cef70: 4d 89 e8 mov %r13,%r8 0.00 : 6cef73: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 6cef77: 44 89 f2 mov %r14d,%edx 0.00 : 6cef7a: e8 31 e5 ff ff callq 6cd4b0 : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cef7f: 85 c0 test %eax,%eax : /* : * Interpret as a concatenated date or time Set the : * type field to allow decoding other fields later. : * Example: 20011223 or 040506 : */ : dterr = DecodeNumberField(flen, field[i], fmask, 0.00 : 6cef81: 89 c3 mov %eax,%ebx : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cef83: 0f 89 30 fc ff ff jns 6cebb9 0.00 : 6cef89: e9 d6 fb ff ff jmpq 6ceb64 0.00 : 6cef8e: 66 90 xchg %ax,%ax : */ : tmask |= DTK_M(TZ); : } : else : { : namedTz = pg_tzset(field[i]); 0.00 : 6cef90: e8 ab bb 0d 00 callq 7aab40 : if (!namedTz) 0.00 : 6cef95: 48 85 c0 test %rax,%rax : */ : tmask |= DTK_M(TZ); : } : else : { : namedTz = pg_tzset(field[i]); 0.00 : 6cef98: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : if (!namedTz) 0.00 : 6cef9f: 0f 84 de 06 00 00 je 6cf683 : (errcode(ERRCODE_INVALID_PARAMETER_VALUE), : errmsg("time zone \"%s\" not recognized", : field[i]))); : } : /* we'll apply the zone setting below */ : tmask = DTK_M(TZ); 0.00 : 6cefa5: c7 45 c8 20 00 00 00 movl $0x20,-0x38(%rbp) 0.00 : 6cefac: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6cefb3: 00 00 00 0.00 : 6cefb6: e9 fe fb ff ff jmpq 6cebb9 0.00 : 6cefbb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * This might be an ISO time following a "t" field. : */ : if (ptype != 0) : { : /* Sanity check; should not fail this test */ : if (ptype != DTK_TIME) 0.00 : 6cefc0: 83 bd 60 ff ff ff 03 cmpl $0x3,-0xa0(%rbp) 0.00 : 6cefc7: 0f 85 92 fb ff ff jne 6ceb5f 0.00 : 6cefcd: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6cefd4: 00 00 00 0.00 : 6cefd7: e9 92 fc ff ff jmpq 6cec6e : : /* : * Before giving up and declaring error, check to see : * if it is an all-alpha timezone name. : */ : namedTz = pg_tzset(field[i]); 0.00 : 6cefdc: 49 8b 3f mov (%r15),%rdi 0.00 : 6cefdf: e8 5c bb 0d 00 callq 7aab40 : if (!namedTz) 0.00 : 6cefe4: 48 85 c0 test %rax,%rax : : /* : * Before giving up and declaring error, check to see : * if it is an all-alpha timezone name. : */ : namedTz = pg_tzset(field[i]); 0.00 : 6cefe7: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : if (!namedTz) 0.00 : 6cefee: 0f 84 6b fb ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : /* we'll apply the zone setting below */ : tmask = DTK_M(TZ); 0.00 : 6ceff4: c7 45 c8 20 00 00 00 movl $0x20,-0x38(%rbp) : break; 0.00 : 6ceffb: e9 b9 fb ff ff jmpq 6cebb9 : * field is time. Try to verify that this is sensible. : */ : tmask = 0; : : /* No preceding date? Then quit... */ : if ((fmask & DTK_DATE_M) != DTK_DATE_M) 0.00 : 6cf000: 44 89 f0 mov %r14d,%eax : : /* : * This is a filler field "t" indicating that the next : * field is time. Try to verify that this is sensible. : */ : tmask = 0; 0.00 : 6cf003: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : : /* No preceding date? Then quit... */ : if ((fmask & DTK_DATE_M) != DTK_DATE_M) 0.00 : 6cf00a: 83 e0 0e and $0xe,%eax 0.00 : 6cf00d: 83 f8 0e cmp $0xe,%eax 0.00 : 6cf010: 0f 85 49 fb ff ff jne 6ceb5f : * We will need one of the following fields: : * DTK_NUMBER should be hhmmss.fff : * DTK_TIME should be hh:mm:ss.fff : * DTK_DATE should be hhmmss-zz : ***/ : if (i >= nf - 1 || 0.00 : 6cf016: 8b 95 14 ff ff ff mov -0xec(%rbp),%edx 0.00 : 6cf01c: 39 95 64 ff ff ff cmp %edx,-0x9c(%rbp) 0.00 : 6cf022: 0f 8d 37 fb ff ff jge 6ceb5f 0.00 : 6cf028: 48 8b 8d 78 ff ff ff mov -0x88(%rbp),%rcx 0.00 : 6cf02f: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 6cf032: 85 c0 test %eax,%eax 0.00 : 6cf034: 74 0e je 6cf044 0.00 : 6cf036: 83 f8 03 cmp $0x3,%eax 0.00 : 6cf039: 74 09 je 6cf044 0.00 : 6cf03b: 83 f8 02 cmp $0x2,%eax 0.00 : 6cf03e: 0f 85 1b fb ff ff jne 6ceb5f : (ftype[i + 1] != DTK_NUMBER && : ftype[i + 1] != DTK_TIME && : ftype[i + 1] != DTK_DATE)) : return DTERR_BAD_FORMAT; : : ptype = val; 0.00 : 6cf044: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf047: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) : * error : */ : if (fmask & DTK_M(DTZMOD)) : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, session_timezone); 0.00 : 6cf04d: 31 c0 xor %eax,%eax 0.00 : 6cf04f: e9 6d fb ff ff jmpq 6cebc1 : case AMPM: : mer = val; : break; : : case ADBC: : bc = (val == BC); 0.00 : 6cf054: 83 7d c4 01 cmpl $0x1,-0x3c(%rbp) 0.00 : 6cf058: 0f 94 85 6f ff ff ff sete -0x91(%rbp) : break; 0.00 : 6cf05f: e9 55 fb ff ff jmpq 6cebb9 : tm->tm_wday = val; : break; : : case UNITS: : tmask = 0; : ptype = val; 0.00 : 6cf064: 8b 45 c4 mov -0x3c(%rbp),%eax : case DOW: : tm->tm_wday = val; : break; : : case UNITS: : tmask = 0; 0.00 : 6cf067: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%rbp) : ptype = val; 0.00 : 6cf06e: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) : * error : */ : if (fmask & DTK_M(DTZMOD)) : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, session_timezone); 0.00 : 6cf074: 31 c0 xor %eax,%eax 0.00 : 6cf076: e9 46 fb ff ff jmpq 6cebc1 : case ADBC: : bc = (val == BC); : break; : : case DOW: : tm->tm_wday = val; 0.00 : 6cf07b: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf07e: 41 89 45 18 mov %eax,0x18(%r13) : break; 0.00 : 6cf082: e9 32 fb ff ff jmpq 6cebb9 : : case IGNORE_DTF: : break; : : case AMPM: : mer = val; 0.00 : 6cf087: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 6cf08a: 89 8d 68 ff ff ff mov %ecx,-0x98(%rbp) : break; 0.00 : 6cf090: e9 24 fb ff ff jmpq 6cebb9 : : /* : * daylight savings time modifier (solves "MET DST" : * syntax) : */ : tmask |= DTK_M(DTZ); 0.00 : 6cf095: 89 d0 mov %edx,%eax : tm->tm_isdst = 1; 0.00 : 6cf097: 41 c7 45 20 01 00 00 movl $0x1,0x20(%r13) 0.00 : 6cf09e: 00 : : /* : * daylight savings time modifier (solves "MET DST" : * syntax) : */ : tmask |= DTK_M(DTZ); 0.00 : 6cf09f: 83 c8 40 or $0x40,%eax : tm->tm_isdst = 1; : if (tzp == NULL) 0.00 : 6cf0a2: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) : : /* : * daylight savings time modifier (solves "MET DST" : * syntax) : */ : tmask |= DTK_M(DTZ); 0.00 : 6cf0a7: 89 45 c8 mov %eax,-0x38(%rbp) : tm->tm_isdst = 1; : if (tzp == NULL) 0.00 : 6cf0aa: 0f 84 af fa ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : *tzp += val * MINS_PER_HOUR; 0.00 : 6cf0b0: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf0b3: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cf0b7: 41 bc 3c 00 00 00 mov $0x3c,%r12d 0.00 : 6cf0bd: 41 0f af c4 imul %r12d,%eax 0.00 : 6cf0c1: 01 02 add %eax,(%rdx) : break; 0.00 : 6cf0c3: e9 f1 fa ff ff jmpq 6cebb9 : : /* : * set mask for TZ here _or_ check for DTZ later when : * getting default timezone : */ : tmask |= DTK_M(TZ); 0.00 : 6cf0c8: 89 d0 mov %edx,%eax : tm->tm_isdst = 1; 0.00 : 6cf0ca: 41 c7 45 20 01 00 00 movl $0x1,0x20(%r13) 0.00 : 6cf0d1: 00 : : /* : * set mask for TZ here _or_ check for DTZ later when : * getting default timezone : */ : tmask |= DTK_M(TZ); 0.00 : 6cf0d2: 83 c8 20 or $0x20,%eax : tm->tm_isdst = 1; : if (tzp == NULL) 0.00 : 6cf0d5: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) : : /* : * set mask for TZ here _or_ check for DTZ later when : * getting default timezone : */ : tmask |= DTK_M(TZ); 0.00 : 6cf0da: 89 45 c8 mov %eax,-0x38(%rbp) : tm->tm_isdst = 1; : if (tzp == NULL) 0.00 : 6cf0dd: 0f 84 7c fa ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : *tzp = val * MINS_PER_HOUR; 0.00 : 6cf0e3: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf0e6: bb 3c 00 00 00 mov $0x3c,%ebx 0.00 : 6cf0eb: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 6cf0ef: 0f af c3 imul %ebx,%eax 0.00 : 6cf0f2: 89 01 mov %eax,(%rcx) : break; 0.00 : 6cf0f4: e9 c0 fa ff ff jmpq 6cebb9 : : case TZ: : tm->tm_isdst = 0; : if (tzp == NULL) 0.00 : 6cf0f9: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) : return DTERR_BAD_FORMAT; : *tzp = val * MINS_PER_HOUR; : break; : : case TZ: : tm->tm_isdst = 0; 0.00 : 6cf0fe: 41 c7 45 20 00 00 00 movl $0x0,0x20(%r13) 0.00 : 6cf105: 00 : if (tzp == NULL) 0.00 : 6cf106: 0f 84 53 fa ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : *tzp = val * MINS_PER_HOUR; 0.00 : 6cf10c: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf10f: 41 bb 3c 00 00 00 mov $0x3c,%r11d 0.00 : 6cf115: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cf119: 41 0f af c3 imul %r11d,%eax 0.00 : 6cf11d: 89 02 mov %eax,(%rdx) : break; 0.00 : 6cf11f: e9 95 fa ff ff jmpq 6cebb9 : : /* : * already have a (numeric) month? then see if we can : * substitute... : */ : if ((fmask & DTK_M(MONTH)) && !haveTextMonth && 0.00 : 6cf124: 41 f6 c6 02 test $0x2,%r14b 0.00 : 6cf128: 74 27 je 6cf151 0.00 : 6cf12a: 80 bd 6d ff ff ff 00 cmpb $0x0,-0x93(%rbp) 0.00 : 6cf131: 75 1e jne 6cf151 0.00 : 6cf133: 41 f6 c6 08 test $0x8,%r14b 0.00 : 6cf137: 75 18 jne 6cf151 0.00 : 6cf139: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 6cf13d: 85 c0 test %eax,%eax 0.00 : 6cf13f: 7e 10 jle 6cf151 0.00 : 6cf141: 83 f8 1f cmp $0x1f,%eax 0.00 : 6cf144: 7f 0b jg 6cf151 : !(fmask & DTK_M(DAY)) && tm->tm_mon >= 1 && : tm->tm_mon <= 31) : { : tm->tm_mday = tm->tm_mon; 0.00 : 6cf146: 41 89 45 0c mov %eax,0xc(%r13) : tmask = DTK_M(DAY); 0.00 : 6cf14a: c7 45 c8 08 00 00 00 movl $0x8,-0x38(%rbp) : } : haveTextMonth = TRUE; : tm->tm_mon = val; 0.00 : 6cf151: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6cf154: c6 85 6d ff ff ff 01 movb $0x1,-0x93(%rbp) 0.00 : 6cf15b: 41 89 45 10 mov %eax,0x10(%r13) : break; 0.00 : 6cf15f: e9 55 fa ff ff jmpq 6cebb9 : : tmask = DTK_M(type); : switch (type) : { : case RESERV: : switch (val) 0.00 : 6cf164: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 6cf167: 8d 42 f8 lea -0x8(%rdx),%eax 0.00 : 6cf16a: 83 f8 08 cmp $0x8,%eax 0.00 : 6cf16d: 0f 86 98 03 00 00 jbe 6cf50b : if (tzp != NULL) : *tzp = 0; : break; : : default: : *dtype = val; 0.00 : 6cf173: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 6cf17a: 89 10 mov %edx,(%rax) 0.00 : 6cf17c: e9 38 fa ff ff jmpq 6cebb9 0.00 : 6cf181: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (ptype != 0) : { : char *cp; : int val; : : errno = 0; 0.00 : 6cf188: e8 33 ab d9 ff callq 469cc0 <__errno_location@plt> 0.00 : 6cf18d: c7 00 00 00 00 00 movl $0x0,(%rax) : val = strtoi(field[i], &cp, 10); 0.00 : 6cf193: 49 8b 3f mov (%r15),%rdi 0.00 : 6cf196: 48 8d 75 b8 lea -0x48(%rbp),%rsi : if (ptype != 0) : { : char *cp; : int val; : : errno = 0; 0.00 : 6cf19a: 48 89 c3 mov %rax,%rbx : val = strtoi(field[i], &cp, 10); 0.00 : 6cf19d: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 6cf1a2: e8 29 d6 ff ff callq 6cc7d0 : if (errno == ERANGE) 0.00 : 6cf1a7: 83 3b 22 cmpl $0x22,(%rbx) : { : char *cp; : int val; : : errno = 0; : val = strtoi(field[i], &cp, 10); 0.00 : 6cf1aa: 41 89 c0 mov %eax,%r8d : if (errno == ERANGE) 0.00 : 6cf1ad: 0f 84 18 fb ff ff je 6ceccb : : /* : * only a few kinds are allowed to have an embedded : * decimal : */ : if (*cp == '.') 0.00 : 6cf1b3: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 6cf1b7: 0f b6 07 movzbl (%rdi),%eax 0.00 : 6cf1ba: 3c 2e cmp $0x2e,%al 0.00 : 6cf1bc: 0f 84 9d 02 00 00 je 6cf45f : break; : default: : return DTERR_BAD_FORMAT; : break; : } : else if (*cp != '\0') 0.00 : 6cf1c2: 84 c0 test %al,%al 0.00 : 6cf1c4: 0f 85 95 f9 ff ff jne 6ceb5f : return DTERR_BAD_FORMAT; : : switch (ptype) 0.00 : 6cf1ca: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 6cf1d0: 83 e8 03 sub $0x3,%eax 0.00 : 6cf1d3: 83 f8 1c cmp $0x1c,%eax 0.00 : 6cf1d6: 0f 87 83 f9 ff ff ja 6ceb5f 0.00 : 6cf1dc: 89 c0 mov %eax,%eax 0.00 : 6cf1de: ff 24 c5 b0 a3 8b 00 jmpq *0x8ba3b0(,%rax,8) : tm->tm_hour = val; : tmask = DTK_M(HOUR); : break; : : case DTK_MINUTE: : tm->tm_min = val; 0.00 : 6cf1e5: 45 89 45 04 mov %r8d,0x4(%r13) : tmask = DTK_M(MINUTE); 0.00 : 6cf1e9: c7 45 c8 00 08 00 00 movl $0x800,-0x38(%rbp) : return DTERR_BAD_FORMAT; : break; : } : : ptype = 0; : *dtype = DTK_DATE; 0.00 : 6cf1f0: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 6cf1f7: c7 00 02 00 00 00 movl $0x2,(%rax) 0.00 : 6cf1fd: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6cf204: 00 00 00 0.00 : 6cf207: e9 ad f9 ff ff jmpq 6cebb9 : tm->tm_min = val; : tmask = DTK_M(MINUTE); : break; : : case DTK_SECOND: : tm->tm_sec = val; 0.00 : 6cf20c: 45 89 45 00 mov %r8d,0x0(%r13) : tmask = DTK_M(SECOND); 0.00 : 6cf210: c7 45 c8 00 10 00 00 movl $0x1000,-0x38(%rbp) : if (*cp == '.') 0.00 : 6cf217: 80 3f 2e cmpb $0x2e,(%rdi) 0.00 : 6cf21a: 75 d4 jne 6cf1f0 : { : dterr = ParseFractionalSecond(cp, fsec); 0.00 : 6cf21c: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 6cf223: e8 28 d5 ff ff callq 6cc750 : if (dterr) 0.00 : 6cf228: 85 c0 test %eax,%eax : case DTK_SECOND: : tm->tm_sec = val; : tmask = DTK_M(SECOND); : if (*cp == '.') : { : dterr = ParseFractionalSecond(cp, fsec); 0.00 : 6cf22a: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6cf22c: 0f 85 32 f9 ff ff jne 6ceb64 : return dterr; : tmask = DTK_ALL_SECS_M; 0.00 : 6cf232: c7 45 c8 00 70 00 00 movl $0x7000,-0x38(%rbp) 0.00 : 6cf239: eb b5 jmp 6cf1f0 : } : break; : : case DTK_TZ: : tmask = DTK_M(TZ); 0.00 : 6cf23b: c7 45 c8 20 00 00 00 movl $0x20,-0x38(%rbp) : dterr = DecodeTimezone(field[i], tzp); 0.00 : 6cf242: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 6cf246: 49 8b 3f mov (%r15),%rdi 0.00 : 6cf249: e8 b2 e0 ff ff callq 6cd300 : if (dterr) 0.00 : 6cf24e: 85 c0 test %eax,%eax : } : break; : : case DTK_TZ: : tmask = DTK_M(TZ); : dterr = DecodeTimezone(field[i], tzp); 0.00 : 6cf250: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6cf252: 74 9c je 6cf1f0 0.00 : 6cf254: e9 0b f9 ff ff jmpq 6ceb64 0.00 : 6cf259: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : break; : : case DTK_TIME: : /* previous field was "t" for ISO time */ : dterr = DecodeNumberField(strlen(field[i]), field[i], 0.00 : 6cf260: 49 8b 1f mov (%r15),%rbx 0.00 : 6cf263: 48 89 df mov %rbx,%rdi 0.00 : 6cf266: e8 e5 a5 d9 ff callq 469850 0.00 : 6cf26b: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 6cf26f: 4c 8b 8d 20 ff ff ff mov -0xe0(%rbp),%r9 0.00 : 6cf276: 44 89 f2 mov %r14d,%edx 0.00 : 6cf279: 83 ca 0e or $0xe,%edx 0.00 : 6cf27c: 48 89 de mov %rbx,%rsi 0.00 : 6cf27f: 4d 89 e8 mov %r13,%r8 0.00 : 6cf282: 48 89 0c 24 mov %rcx,(%rsp) 0.00 : 6cf286: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6cf28a: 89 c7 mov %eax,%edi 0.00 : 6cf28c: e8 1f e2 ff ff callq 6cd4b0 : (fmask | DTK_DATE_M), : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cf291: 85 c0 test %eax,%eax : } : break; : : case DTK_TIME: : /* previous field was "t" for ISO time */ : dterr = DecodeNumberField(strlen(field[i]), field[i], 0.00 : 6cf293: 89 c3 mov %eax,%ebx : (fmask | DTK_DATE_M), : &tmask, tm, : fsec, &is2digits); : if (dterr < 0) 0.00 : 6cf295: 0f 88 c9 f8 ff ff js 6ceb64 : return dterr; : if (tmask != DTK_TIME_M) 0.00 : 6cf29b: 81 7d c8 00 7c 00 00 cmpl $0x7c00,-0x38(%rbp) 0.00 : 6cf2a2: 0f 84 48 ff ff ff je 6cf1f0 0.00 : 6cf2a8: e9 b2 f8 ff ff jmpq 6ceb5f 0.00 : 6cf2ad: 0f 1f 00 nopl (%rax) : return dterr; : break; : : case DTK_JULIAN: : /* previous field was a label for "julian date" */ : if (val < 0) 0.00 : 6cf2b0: 45 85 c0 test %r8d,%r8d 0.00 : 6cf2b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cf2b8: 0f 88 0d fa ff ff js 6ceccb : return DTERR_FIELD_OVERFLOW; : tmask = DTK_DATE_M; : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.00 : 6cf2be: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 6cf2c5: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 6cf2cc: 44 89 c7 mov %r8d,%edi 0.00 : 6cf2cf: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi : : case DTK_JULIAN: : /* previous field was a label for "julian date" */ : if (val < 0) : return DTERR_FIELD_OVERFLOW; : tmask = DTK_DATE_M; 0.00 : 6cf2d6: c7 45 c8 0e 00 00 00 movl $0xe,-0x38(%rbp) : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.00 : 6cf2dd: e8 ce aa ff ff callq 6c9db0 : isjulian = TRUE; : : /* fractional Julian Day? */ : if (*cp == '.') 0.00 : 6cf2e2: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6cf2e6: c6 85 6e ff ff ff 01 movb $0x1,-0x92(%rbp) 0.00 : 6cf2ed: 80 38 2e cmpb $0x2e,(%rax) 0.00 : 6cf2f0: 0f 85 fa fe ff ff jne 6cf1f0 : { : double time; : : errno = 0; 0.00 : 6cf2f6: c7 03 00 00 00 00 movl $0x0,(%rbx) : time = strtod(cp, &cp); 0.00 : 6cf2fc: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 6cf300: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 6cf304: e8 77 ae d9 ff callq 46a180 : if (*cp != '\0' || errno != 0) 0.00 : 6cf309: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6cf30d: 80 38 00 cmpb $0x0,(%rax) 0.00 : 6cf310: 0f 85 49 f8 ff ff jne 6ceb5f 0.00 : 6cf316: 8b 03 mov (%rbx),%eax 0.00 : 6cf318: 85 c0 test %eax,%eax 0.00 : 6cf31a: 0f 85 3f f8 ff ff jne 6ceb5f : #ifdef HAVE_INT64_TIMESTAMP : time *= USECS_PER_DAY; : #else : time *= SECS_PER_DAY; : #endif : dt2time(time, 0.00 : 6cf320: f2 0f 59 05 98 a8 1e mulsd 0x1ea898(%rip),%xmm0 # 8b9bc0 <__func__.15194+0x1e> 0.00 : 6cf327: 00 0.00 : 6cf328: 4c 8b 85 20 ff ff ff mov -0xe0(%rbp),%r8 0.00 : 6cf32f: 4c 89 e9 mov %r13,%rcx 0.00 : 6cf332: 48 8b 95 50 ff ff ff mov -0xb0(%rbp),%rdx 0.00 : 6cf339: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 6cf340: f2 48 0f 2c f8 cvttsd2si %xmm0,%rdi 0.00 : 6cf345: e8 a6 13 07 00 callq 7406f0 : &tm->tm_hour, &tm->tm_min, : &tm->tm_sec, fsec); : tmask |= DTK_TIME_M; 0.00 : 6cf34a: 81 4d c8 00 7c 00 00 orl $0x7c00,-0x38(%rbp) 0.00 : 6cf351: c6 85 6e ff ff ff 01 movb $0x1,-0x92(%rbp) 0.00 : 6cf358: e9 93 fe ff ff jmpq 6cf1f0 0.00 : 6cf35d: 0f 1f 00 nopl (%rax) : return DTERR_BAD_FORMAT; : : switch (ptype) : { : case DTK_YEAR: : tm->tm_year = val; 0.00 : 6cf360: 45 89 45 14 mov %r8d,0x14(%r13) : tmask = DTK_M(YEAR); 0.00 : 6cf364: c7 45 c8 04 00 00 00 movl $0x4,-0x38(%rbp) : break; 0.00 : 6cf36b: e9 80 fe ff ff jmpq 6cf1f0 : : /* : * already have a month and hour? then assume : * minutes : */ : if ((fmask & DTK_M(MONTH)) != 0 && 0.00 : 6cf370: 44 89 f0 mov %r14d,%eax 0.00 : 6cf373: 25 02 04 00 00 and $0x402,%eax 0.00 : 6cf378: 3d 02 04 00 00 cmp $0x402,%eax 0.00 : 6cf37d: 0f 84 62 fe ff ff je 6cf1e5 : tm->tm_min = val; : tmask = DTK_M(MINUTE); : } : else : { : tm->tm_mon = val; 0.00 : 6cf383: 45 89 45 10 mov %r8d,0x10(%r13) : tmask = DTK_M(MONTH); 0.00 : 6cf387: c7 45 c8 02 00 00 00 movl $0x2,-0x38(%rbp) 0.00 : 6cf38e: e9 5d fe ff ff jmpq 6cf1f0 : } : break; : : case DTK_DAY: : tm->tm_mday = val; 0.00 : 6cf393: 45 89 45 0c mov %r8d,0xc(%r13) : tmask = DTK_M(DAY); 0.00 : 6cf397: c7 45 c8 08 00 00 00 movl $0x8,-0x38(%rbp) : break; 0.00 : 6cf39e: e9 4d fe ff ff jmpq 6cf1f0 : : case DTK_HOUR: : tm->tm_hour = val; 0.00 : 6cf3a3: 45 89 45 08 mov %r8d,0x8(%r13) : tmask = DTK_M(HOUR); 0.00 : 6cf3a7: c7 45 c8 00 04 00 00 movl $0x400,-0x38(%rbp) : break; 0.00 : 6cf3ae: e9 3d fe ff ff jmpq 6cf1f0 : /* don't know daylight savings time status apriori */ : tm->tm_isdst = -1; : if (tzp != NULL) : *tzp = 0; : : for (i = 0; i < nf; i++) 0.00 : 6cf3b3: 45 31 f6 xor %r14d,%r14d 0.00 : 6cf3b6: c7 85 68 ff ff ff 02 movl $0x2,-0x98(%rbp) 0.00 : 6cf3bd: 00 00 00 0.00 : 6cf3c0: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) 0.00 : 6cf3c7: 00 00 00 00 0.00 : 6cf3cb: 31 c9 xor %ecx,%ecx 0.00 : 6cf3cd: 31 f6 xor %esi,%esi 0.00 : 6cf3cf: e9 23 f8 ff ff jmpq 6cebf7 : if (ptype == DTK_JULIAN) : { : char *cp; : int val; : : if (tzp == NULL) 0.00 : 6cf3d4: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 6cf3d9: 0f 84 80 f7 ff ff je 6ceb5f : return DTERR_BAD_FORMAT; : : errno = 0; 0.00 : 6cf3df: e8 dc a8 d9 ff callq 469cc0 <__errno_location@plt> 0.00 : 6cf3e4: c7 00 00 00 00 00 movl $0x0,(%rax) : val = strtoi(field[i], &cp, 10); 0.00 : 6cf3ea: 49 8b 3f mov (%r15),%rdi 0.00 : 6cf3ed: 48 8d 75 b8 lea -0x48(%rbp),%rsi : int val; : : if (tzp == NULL) : return DTERR_BAD_FORMAT; : : errno = 0; 0.00 : 6cf3f1: 48 89 c3 mov %rax,%rbx : val = strtoi(field[i], &cp, 10); 0.00 : 6cf3f4: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 6cf3f9: e8 d2 d3 ff ff callq 6cc7d0 : if (errno == ERANGE || val < 0) 0.00 : 6cf3fe: 83 3b 22 cmpl $0x22,(%rbx) : : if (tzp == NULL) : return DTERR_BAD_FORMAT; : : errno = 0; : val = strtoi(field[i], &cp, 10); 0.00 : 6cf401: 89 c7 mov %eax,%edi : if (errno == ERANGE || val < 0) 0.00 : 6cf403: 0f 84 c2 f8 ff ff je 6ceccb 0.00 : 6cf409: 85 c0 test %eax,%eax 0.00 : 6cf40b: 0f 88 ba f8 ff ff js 6ceccb : return DTERR_FIELD_OVERFLOW; : : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); 0.00 : 6cf411: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 6cf418: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 6cf41f: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 6cf426: e8 85 a9 ff ff callq 6c9db0 : isjulian = TRUE; : : /* Get the time zone from the end of the string */ : dterr = DecodeTimezone(cp, tzp); 0.00 : 6cf42b: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 6cf42f: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 6cf433: e8 c8 de ff ff callq 6cd300 : if (dterr) 0.00 : 6cf438: 85 c0 test %eax,%eax : : j2date(val, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : isjulian = TRUE; : : /* Get the time zone from the end of the string */ : dterr = DecodeTimezone(cp, tzp); 0.00 : 6cf43a: 89 c3 mov %eax,%ebx : if (dterr) 0.00 : 6cf43c: 0f 85 22 f7 ff ff jne 6ceb64 : return dterr; : : tmask = DTK_DATE_M | DTK_TIME_M | DTK_M(TZ); 0.00 : 6cf442: c7 45 c8 2e 7c 00 00 movl $0x7c2e,-0x38(%rbp) 0.00 : 6cf449: c7 85 60 ff ff ff 00 movl $0x0,-0xa0(%rbp) 0.00 : 6cf450: 00 00 00 0.00 : 6cf453: c6 85 6e ff ff ff 01 movb $0x1,-0x92(%rbp) : ptype = 0; : break; 0.00 : 6cf45a: e9 5a f7 ff ff jmpq 6cebb9 : /* : * only a few kinds are allowed to have an embedded : * decimal : */ : if (*cp == '.') : switch (ptype) 0.00 : 6cf45f: 83 bd 60 ff ff ff 1f cmpl $0x1f,-0xa0(%rbp) 0.00 : 6cf466: 0f 87 f3 f6 ff ff ja 6ceb5f 0.00 : 6cf46c: 0f b6 8d 60 ff ff ff movzbl -0xa0(%rbp),%ecx 0.00 : 6cf473: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6cf478: 48 d3 e0 shl %cl,%rax 0.00 : 6cf47b: a9 08 00 04 80 test $0x80040008,%eax 0.00 : 6cf480: 0f 85 44 fd ff ff jne 6cf1ca 0.00 : 6cf486: e9 d4 f6 ff ff jmpq 6ceb5f : : /* : * If we had a full timezone spec, compute the offset (we could not do : * it before, because we need the date to resolve DST status). : */ : if (namedTz != NULL) 0.00 : 6cf48b: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 6cf492: 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1413 1.38 : 6cf493: 0f 85 32 02 00 00 jne 6cf6cb : : *tzp = DetermineTimeZoneOffset(tm, namedTz); : } : : /* timezone not specified? then find local timezone if possible */ : if (tzp != NULL && !(fmask & DTK_M(TZ))) 0.00 : 6cf499: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) 0.00 : 6cf49e: 66 90 xchg %ax,%ax 0.00 : 6cf4a0: 0f 84 be f6 ff ff je 6ceb64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1423 1.78 : 6cf4a6: 41 f6 c6 20 test $0x20,%r14b 0.00 : 6cf4aa: 0f 85 b4 f6 ff ff jne 6ceb64 : { : /* : * daylight savings time modifier but no standard timezone? then : * error : */ : if (fmask & DTK_M(DTZMOD)) 0.00 : 6cf4b0: 45 84 f6 test %r14b,%r14b 0.00 : 6cf4b3: 0f 88 a6 f6 ff ff js 6ceb5f : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, session_timezone); 0.00 : 6cf4b9: 48 8b 35 80 fc 4e 00 mov 0x4efc80(%rip),%rsi # bbf140 0.00 : 6cf4c0: 4c 89 ef mov %r13,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1432 0.59 : 6cf4c3: e8 a8 e6 ff ff callq 6cdb70 1.38 : 6cf4c8: 48 8b 4d 10 mov 0x10(%rbp),%rcx 3.56 : 6cf4cc: 89 01 mov %eax,(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1432 6.13 : 6cf4ce: e9 91 f6 ff ff jmpq 6ceb64 0.00 : 6cf4d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : dterr = ValidateDate(fmask, isjulian, is2digits, bc, tm); : if (dterr) : return dterr; : : /* handle AM/PM */ : if (mer != HR24 && tm->tm_hour > HOURS_PER_DAY / 2) 0.00 : 6cf4d8: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 6cf4dc: 83 f8 0c cmp $0xc,%eax 0.00 : 6cf4df: 0f 8f e6 f7 ff ff jg 6ceccb : return DTERR_FIELD_OVERFLOW; : if (mer == AM && tm->tm_hour == HOURS_PER_DAY / 2) 0.00 : 6cf4e5: 44 8b 95 68 ff ff ff mov -0x98(%rbp),%r10d 0.00 : 6cf4ec: 45 85 d2 test %r10d,%r10d 0.00 : 6cf4ef: 0f 85 f9 01 00 00 jne 6cf6ee 0.00 : 6cf4f5: 83 f8 0c cmp $0xc,%eax 0.00 : 6cf4f8: 0f 85 1f f7 ff ff jne 6cec1d : tm->tm_hour = 0; 0.00 : 6cf4fe: 41 c7 45 08 00 00 00 movl $0x0,0x8(%r13) 0.00 : 6cf505: 00 : return dterr; : : /* handle AM/PM */ : if (mer != HR24 && tm->tm_hour > HOURS_PER_DAY / 2) : return DTERR_FIELD_OVERFLOW; : if (mer == AM && tm->tm_hour == HOURS_PER_DAY / 2) 0.00 : 6cf506: e9 12 f7 ff ff jmpq 6cec1d : : tmask = DTK_M(type); : switch (type) : { : case RESERV: : switch (val) 0.00 : 6cf50b: 89 c0 mov %eax,%eax 0.00 : 6cf50d: 0f 1f 00 nopl (%rax) 0.00 : 6cf510: ff 24 c5 98 a4 8b 00 jmpq *0x8ba498(,%rax,8) : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; : : case DTK_ZULU: : tmask = (DTK_TIME_M | DTK_M(TZ)); : *dtype = DTK_DATE; 0.00 : 6cf517: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx : j2date(date2j(cur_tm.tm_year, cur_tm.tm_mon, cur_tm.tm_mday) + 1, : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; : : case DTK_ZULU: : tmask = (DTK_TIME_M | DTK_M(TZ)); 0.00 : 6cf51e: c7 45 c8 20 7c 00 00 movl $0x7c20,-0x38(%rbp) : *dtype = DTK_DATE; 0.00 : 6cf525: c7 02 02 00 00 00 movl $0x2,(%rdx) : tm->tm_hour = 0; : tm->tm_min = 0; : tm->tm_sec = 0; : if (tzp != NULL) 0.00 : 6cf52b: 48 83 7d 10 00 cmpq $0x0,0x10(%rbp) : break; : : case DTK_ZULU: : tmask = (DTK_TIME_M | DTK_M(TZ)); : *dtype = DTK_DATE; : tm->tm_hour = 0; 0.00 : 6cf530: 41 c7 45 08 00 00 00 movl $0x0,0x8(%r13) 0.00 : 6cf537: 00 : tm->tm_min = 0; 0.00 : 6cf538: 41 c7 45 04 00 00 00 movl $0x0,0x4(%r13) 0.00 : 6cf53f: 00 : tm->tm_sec = 0; 0.00 : 6cf540: 41 c7 45 00 00 00 00 movl $0x0,0x0(%r13) 0.00 : 6cf547: 00 : if (tzp != NULL) 0.00 : 6cf548: 0f 84 6b f6 ff ff je 6cebb9 : *tzp = 0; 0.00 : 6cf54e: 48 8b 4d 10 mov 0x10(%rbp),%rcx 0.00 : 6cf552: c7 01 00 00 00 00 movl $0x0,(%rcx) 0.00 : 6cf558: e9 5c f6 ff ff jmpq 6cebb9 : tm->tm_mday = cur_tm.tm_mday; : break; : : case DTK_TOMORROW: : tmask = DTK_DATE_M; : *dtype = DTK_DATE; 0.00 : 6cf55d: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax : GetCurrentDateTime(&cur_tm); 0.00 : 6cf564: 48 8d 7d 80 lea -0x80(%rbp),%rdi : tm->tm_mon = cur_tm.tm_mon; : tm->tm_mday = cur_tm.tm_mday; : break; : : case DTK_TOMORROW: : tmask = DTK_DATE_M; 0.00 : 6cf568: c7 45 c8 0e 00 00 00 movl $0xe,-0x38(%rbp) : *dtype = DTK_DATE; 0.00 : 6cf56f: c7 00 02 00 00 00 movl $0x2,(%rax) : GetCurrentDateTime(&cur_tm); 0.00 : 6cf575: e8 c6 ab ff ff callq 6ca140 : j2date(date2j(cur_tm.tm_year, cur_tm.tm_mon, cur_tm.tm_mday) + 1, 0.00 : 6cf57a: 8b 55 8c mov -0x74(%rbp),%edx 0.00 : 6cf57d: 8b 75 90 mov -0x70(%rbp),%esi 0.00 : 6cf580: 8b 7d 94 mov -0x6c(%rbp),%edi 0.00 : 6cf583: e8 98 a7 ff ff callq 6c9d20 0.00 : 6cf588: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 6cf58f: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 6cf596: 8d 78 01 lea 0x1(%rax),%edi 0.00 : 6cf599: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 6cf5a0: e8 0b a8 ff ff callq 6c9db0 : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; 0.00 : 6cf5a5: e9 0f f6 ff ff jmpq 6cebb9 : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; : : case DTK_TODAY: : tmask = DTK_DATE_M; : *dtype = DTK_DATE; 0.00 : 6cf5aa: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx : GetCurrentDateTime(&cur_tm); 0.00 : 6cf5b1: 48 8d 7d 80 lea -0x80(%rbp),%rdi : j2date(date2j(cur_tm.tm_year, cur_tm.tm_mon, cur_tm.tm_mday) - 1, : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; : : case DTK_TODAY: : tmask = DTK_DATE_M; 0.00 : 6cf5b5: c7 45 c8 0e 00 00 00 movl $0xe,-0x38(%rbp) : *dtype = DTK_DATE; 0.00 : 6cf5bc: c7 01 02 00 00 00 movl $0x2,(%rcx) : GetCurrentDateTime(&cur_tm); 0.00 : 6cf5c2: e8 79 ab ff ff callq 6ca140 : tm->tm_year = cur_tm.tm_year; 0.00 : 6cf5c7: 8b 45 94 mov -0x6c(%rbp),%eax 0.00 : 6cf5ca: 41 89 45 14 mov %eax,0x14(%r13) : tm->tm_mon = cur_tm.tm_mon; 0.00 : 6cf5ce: 8b 45 90 mov -0x70(%rbp),%eax 0.00 : 6cf5d1: 41 89 45 10 mov %eax,0x10(%r13) : tm->tm_mday = cur_tm.tm_mday; 0.00 : 6cf5d5: 8b 45 8c mov -0x74(%rbp),%eax 0.00 : 6cf5d8: 41 89 45 0c mov %eax,0xc(%r13) : break; 0.00 : 6cf5dc: e9 d8 f5 ff ff jmpq 6cebb9 : GetCurrentTimeUsec(tm, fsec, tzp); : break; : : case DTK_YESTERDAY: : tmask = DTK_DATE_M; : *dtype = DTK_DATE; 0.00 : 6cf5e1: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx : GetCurrentDateTime(&cur_tm); 0.00 : 6cf5e8: 48 8d 7d 80 lea -0x80(%rbp),%rdi : *dtype = DTK_DATE; : GetCurrentTimeUsec(tm, fsec, tzp); : break; : : case DTK_YESTERDAY: : tmask = DTK_DATE_M; 0.00 : 6cf5ec: c7 45 c8 0e 00 00 00 movl $0xe,-0x38(%rbp) : *dtype = DTK_DATE; 0.00 : 6cf5f3: c7 02 02 00 00 00 movl $0x2,(%rdx) : GetCurrentDateTime(&cur_tm); 0.00 : 6cf5f9: e8 42 ab ff ff callq 6ca140 : j2date(date2j(cur_tm.tm_year, cur_tm.tm_mon, cur_tm.tm_mday) - 1, 0.00 : 6cf5fe: 8b 55 8c mov -0x74(%rbp),%edx 0.00 : 6cf601: 8b 75 90 mov -0x70(%rbp),%esi 0.00 : 6cf604: 8b 7d 94 mov -0x6c(%rbp),%edi 0.00 : 6cf607: e8 14 a7 ff ff callq 6c9d20 0.00 : 6cf60c: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 6cf613: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 6cf61a: 8d 78 ff lea -0x1(%rax),%edi 0.00 : 6cf61d: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi 0.00 : 6cf624: e8 87 a7 ff ff callq 6c9db0 : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : break; 0.00 : 6cf629: e9 8b f5 ff ff jmpq 6cebb9 : return DTERR_BAD_FORMAT; : break; : : case DTK_NOW: : tmask = (DTK_DATE_M | DTK_TIME_M | DTK_M(TZ)); : *dtype = DTK_DATE; 0.00 : 6cf62e: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax : : return DTERR_BAD_FORMAT; : break; : : case DTK_NOW: : tmask = (DTK_DATE_M | DTK_TIME_M | DTK_M(TZ)); 0.00 : 6cf635: c7 45 c8 2e 7c 00 00 movl $0x7c2e,-0x38(%rbp) : *dtype = DTK_DATE; : GetCurrentTimeUsec(tm, fsec, tzp); 0.00 : 6cf63c: 4c 89 ef mov %r13,%rdi : return DTERR_BAD_FORMAT; : break; : : case DTK_NOW: : tmask = (DTK_DATE_M | DTK_TIME_M | DTK_M(TZ)); : *dtype = DTK_DATE; 0.00 : 6cf63f: c7 00 02 00 00 00 movl $0x2,(%rax) : GetCurrentTimeUsec(tm, fsec, tzp); 0.00 : 6cf645: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cf649: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 6cf650: e8 8b aa ff ff callq 6ca0e0 : break; 0.00 : 6cf655: e9 5f f5 ff ff jmpq 6cebb9 : { : case RESERV: : switch (val) : { : case DTK_CURRENT: : ereport(ERROR, 0.00 : 6cf65a: 45 31 c0 xor %r8d,%r8d 0.00 : 6cf65d: b9 e2 ac 8b 00 mov $0x8bace2,%ecx 0.00 : 6cf662: ba ba 04 00 00 mov $0x4ba,%edx 0.00 : 6cf667: be f2 9b 8b 00 mov $0x8b9bf2,%esi 0.00 : 6cf66c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6cf671: e8 4a b4 0a 00 callq 77aac0 0.00 : 6cf676: 84 c0 test %al,%al 0.00 : 6cf678: 0f 85 92 00 00 00 jne 6cf710 0.00 : 6cf67e: e8 4d 9e d9 ff callq 4694d0 : /* : * We should return an error code instead of : * ereport'ing directly, but then there is no way : * to report the bad time zone name. : */ : ereport(ERROR, 0.00 : 6cf683: 45 31 c0 xor %r8d,%r8d 0.00 : 6cf686: b9 e2 ac 8b 00 mov $0x8bace2,%ecx 0.00 : 6cf68b: ba a3 03 00 00 mov $0x3a3,%edx 0.00 : 6cf690: be f2 9b 8b 00 mov $0x8b9bf2,%esi 0.00 : 6cf695: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6cf69a: e8 21 b4 0a 00 callq 77aac0 0.00 : 6cf69f: 84 c0 test %al,%al 0.00 : 6cf6a1: 74 db je 6cf67e 0.00 : 6cf6a3: 49 8b 37 mov (%r15),%rsi 0.00 : 6cf6a6: bf da 94 8b 00 mov $0x8b94da,%edi 0.00 : 6cf6ab: 31 c0 xor %eax,%eax 0.00 : 6cf6ad: e8 ee d1 0a 00 callq 77c8a0 0.00 : 6cf6b2: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 6cf6b7: 89 c3 mov %eax,%ebx : { : case RESERV: : switch (val) : { : case DTK_CURRENT: : ereport(ERROR, 0.00 : 6cf6b9: e8 92 d6 0a 00 callq 77cd50 0.00 : 6cf6be: 89 de mov %ebx,%esi 0.00 : 6cf6c0: 89 c7 mov %eax,%edi 0.00 : 6cf6c2: 31 c0 xor %eax,%eax 0.00 : 6cf6c4: e8 17 af 0a 00 callq 77a5e0 0.00 : 6cf6c9: eb b3 jmp 6cf67e : * it before, because we need the date to resolve DST status). : */ : if (namedTz != NULL) : { : /* daylight savings time modifier disallowed with full TZ */ : if (fmask & DTK_M(DTZMOD)) 0.00 : 6cf6cb: 45 84 f6 test %r14b,%r14b 0.00 : 6cf6ce: 0f 88 8b f4 ff ff js 6ceb5f : return DTERR_BAD_FORMAT; : : *tzp = DetermineTimeZoneOffset(tm, namedTz); 0.00 : 6cf6d4: 48 8b b5 70 ff ff ff mov -0x90(%rbp),%rsi 0.00 : 6cf6db: 4c 89 ef mov %r13,%rdi 0.00 : 6cf6de: e8 8d e4 ff ff callq 6cdb70 0.00 : 6cf6e3: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 6cf6e7: 89 02 mov %eax,(%rdx) 0.00 : 6cf6e9: e9 ab fd ff ff jmpq 6cf499 : /* handle AM/PM */ : if (mer != HR24 && tm->tm_hour > HOURS_PER_DAY / 2) : return DTERR_FIELD_OVERFLOW; : if (mer == AM && tm->tm_hour == HOURS_PER_DAY / 2) : tm->tm_hour = 0; : else if (mer == PM && tm->tm_hour != HOURS_PER_DAY / 2) 0.00 : 6cf6ee: 83 bd 68 ff ff ff 01 cmpl $0x1,-0x98(%rbp) 0.00 : 6cf6f5: 0f 85 22 f5 ff ff jne 6cec1d 0.00 : 6cf6fb: 83 f8 0c cmp $0xc,%eax 0.00 : 6cf6fe: 0f 84 19 f5 ff ff je 6cec1d : tm->tm_hour += HOURS_PER_DAY / 2; 0.00 : 6cf704: 83 c0 0c add $0xc,%eax 0.00 : 6cf707: 41 89 45 08 mov %eax,0x8(%r13) 0.00 : 6cf70b: e9 0d f5 ff ff jmpq 6cec1d : { : case RESERV: : switch (val) : { : case DTK_CURRENT: : ereport(ERROR, 0.00 : 6cf710: bf c8 97 8b 00 mov $0x8b97c8,%edi 0.00 : 6cf715: 31 c0 xor %eax,%eax 0.00 : 6cf717: e8 84 d1 0a 00 callq 77c8a0 0.00 : 6cf71c: bf 40 04 00 00 mov $0x440,%edi 0.00 : 6cf721: 89 c3 mov %eax,%ebx 0.00 : 6cf723: eb 94 jmp 6cf6b9 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.05 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 8.84 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 8.84 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 8.03 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 7.63 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 7.03 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 5.02 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:97 3.41 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 2.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 2.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 2.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 2.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 2.21 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 2.21 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 2.21 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:100 2.21 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 2.01 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 1.41 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 1.41 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 1.20 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 1.20 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:97 1.20 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 1.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 0.80 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 0.80 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 0.80 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 0.60 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 0.60 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:90 0.60 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 0.60 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000470370 : : */ : Size : heap_compute_data_size(TupleDesc tupleDesc, : Datum *values, : bool *isnull) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 2.21 : 470370: 55 push %rbp 1.41 : 470371: 49 89 f0 mov %rsi,%r8 0.20 : 470374: 48 89 e5 mov %rsp,%rbp 2.21 : 470377: 41 57 push %r15 0.40 : 470379: 41 56 push %r14 1.41 : 47037b: 49 89 d6 mov %rdx,%r14 0.40 : 47037e: 41 55 push %r13 1.20 : 470380: 41 54 push %r12 : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; : Form_pg_attribute *att = tupleDesc->attrs; : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 0.60 : 470382: 45 31 e4 xor %r12d,%r12d : */ : Size : heap_compute_data_size(TupleDesc tupleDesc, : Datum *values, : bool *isnull) : { 0.20 : 470385: 53 push %rbx : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; : Form_pg_attribute *att = tupleDesc->attrs; : : for (i = 0; i < numberOfAttributes; i++) 0.40 : 470386: 31 db xor %ebx,%ebx : */ : Size : heap_compute_data_size(TupleDesc tupleDesc, : Datum *values, : bool *isnull) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:87 0.80 : 470388: 48 83 ec 08 sub $0x8,%rsp : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:90 0.60 : 47038c: 44 8b 2f mov (%rdi),%r13d : Form_pg_attribute *att = tupleDesc->attrs; 0.40 : 47038f: 4c 8b 7f 08 mov 0x8(%rdi),%r15 : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 1.00 : 470393: 45 85 ed test %r13d,%r13d 0.00 : 470396: 7f 43 jg 4703db 0.00 : 470398: e9 c3 00 00 00 jmpq 470460 0.00 : 47039d: 0f 1f 00 nopl (%rax) : */ : data_length += VARATT_CONVERTED_SHORT_SIZE(DatumGetPointer(val)); : } : else : { : data_length = att_align_datum(data_length, att[i]->attalign, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 7.03 : 4703a0: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.20 : 4703a4: 3c 69 cmp $0x69,%al 0.00 : 4703a6: 0f 84 cc 00 00 00 je 470478 0.00 : 4703ac: 3c 63 cmp $0x63,%al 0.00 : 4703ae: 66 90 xchg %ax,%ax 0.00 : 4703b0: 74 10 je 4703c2 0.00 : 4703b2: 3c 64 cmp $0x64,%al 0.00 : 4703b4: 0f 84 ce 00 00 00 je 470488 0.00 : 4703ba: 49 83 c4 01 add $0x1,%r12 0.00 : 4703be: 49 83 e4 fe and $0xfffffffffffffffe,%r12 : att[i]->attlen, val); : data_length = att_addlength_datum(data_length, att[i]->attlen, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 8.84 : 4703c2: 66 85 c9 test %cx,%cx 0.00 : 4703c5: 7e 71 jle 470438 0.00 : 4703c7: 48 0f bf c1 movswq %cx,%rax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:115 2.61 : 4703cb: 49 01 c4 add %rax,%r12 0.40 : 4703ce: 48 83 c3 01 add $0x1,%rbx : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; : Form_pg_attribute *att = tupleDesc->attrs; : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:93 7.63 : 4703d2: 41 39 dd cmp %ebx,%r13d 0.00 : 4703d5: 0f 8e 85 00 00 00 jle 470460 : { : Datum val; : : if (isnull[i]) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:97 1.20 : 4703db: 41 80 3c 1e 00 cmpb $0x0,(%r14,%rbx,1) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:97 5.02 : 4703e0: 75 ec jne 4703ce : continue; : : val = values[i]; : : if (ATT_IS_PACKABLE(att[i]) && /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 8.03 : 4703e2: 49 8b 14 df mov (%r15,%rbx,8),%rdx : Datum val; : : if (isnull[i]) : continue; : : val = values[i]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:100 2.21 : 4703e6: 49 8b 3c d8 mov (%r8,%rbx,8),%rdi : : if (ATT_IS_PACKABLE(att[i]) && /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 2.61 : 4703ea: 0f b7 4a 4c movzwl 0x4c(%rdx),%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 13.05 : 4703ee: 66 83 f9 ff cmp $0xffff,%cx 0.00 : 4703f2: 75 ac jne 4703a0 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:102 3.41 : 4703f4: 80 7a 5d 70 cmpb $0x70,0x5d(%rdx) 0.00 : 4703f8: 0f 84 c2 00 00 00 je 4704c0 2.81 : 4703fe: 0f b6 37 movzbl (%rdi),%esi 0.20 : 470401: 40 f6 c6 03 test $0x3,%sil 0.00 : 470405: 75 12 jne 470419 2.01 : 470407: 8b 07 mov (%rdi),%eax 0.00 : 470409: c1 e8 02 shr $0x2,%eax 0.20 : 47040c: 83 e8 04 sub $0x4,%eax 0.80 : 47040f: 48 83 c0 01 add $0x1,%rax 2.81 : 470413: 48 83 f8 7f cmp $0x7f,%rax 0.00 : 470417: 76 b2 jbe 4703cb : */ : data_length += VARATT_CONVERTED_SHORT_SIZE(DatumGetPointer(val)); : } : else : { : data_length = att_align_datum(data_length, att[i]->attalign, 0.00 : 470419: 83 e6 01 and $0x1,%esi 0.00 : 47041c: 74 82 je 4703a0 : att[i]->attlen, val); : data_length = att_addlength_datum(data_length, att[i]->attlen, 0.20 : 47041e: 0f b6 07 movzbl (%rdi),%eax 0.00 : 470421: 3c 01 cmp $0x1,%al 0.00 : 470423: 74 73 je 470498 0.00 : 470425: a8 01 test $0x1,%al 0.00 : 470427: 0f 84 a3 00 00 00 je 4704d0 0.00 : 47042d: d0 e8 shr %al 0.00 : 47042f: 0f b6 c0 movzbl %al,%eax 0.00 : 470432: eb 97 jmp 4703cb 0.00 : 470434: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 470438: 66 83 c1 01 add $0x1,%cx 0.00 : 47043c: 74 e0 je 47041e 0.00 : 47043e: 4c 89 45 d0 mov %r8,-0x30(%rbp) 0.00 : 470442: 48 83 c3 01 add $0x1,%rbx 0.00 : 470446: e8 05 94 ff ff callq 469850 : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; : Form_pg_attribute *att = tupleDesc->attrs; : : for (i = 0; i < numberOfAttributes; i++) 0.00 : 47044b: 41 39 dd cmp %ebx,%r13d : } : else : { : data_length = att_align_datum(data_length, att[i]->attalign, : att[i]->attlen, val); : data_length = att_addlength_datum(data_length, att[i]->attlen, 0.00 : 47044e: 4d 8d 64 04 01 lea 0x1(%r12,%rax,1),%r12 0.00 : 470453: 4c 8b 45 d0 mov -0x30(%rbp),%r8 : Size data_length = 0; : int i; : int numberOfAttributes = tupleDesc->natts; : Form_pg_attribute *att = tupleDesc->attrs; : : for (i = 0; i < numberOfAttributes; i++) 0.00 : 470457: 7f 82 jg 4703db 0.00 : 470459: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : val); : } : } : : return data_length; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:121 0.60 : 470460: 48 83 c4 08 add $0x8,%rsp 0.00 : 470464: 4c 89 e0 mov %r12,%rax 0.00 : 470467: 5b pop %rbx 2.21 : 470468: 41 5c pop %r12 0.60 : 47046a: 41 5d pop %r13 0.20 : 47046c: 41 5e pop %r14 0.40 : 47046e: 41 5f pop %r15 1.20 : 470470: c9 leaveq 0.80 : 470471: c3 retq 0.00 : 470472: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : data_length += VARATT_CONVERTED_SHORT_SIZE(DatumGetPointer(val)); : } : else : { : data_length = att_align_datum(data_length, att[i]->attalign, /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:113 8.84 : 470478: 49 83 c4 03 add $0x3,%r12 0.00 : 47047c: 49 83 e4 fc and $0xfffffffffffffffc,%r12 0.20 : 470480: e9 3d ff ff ff jmpq 4703c2 0.00 : 470485: 0f 1f 00 nopl (%rax) 0.00 : 470488: 49 83 c4 07 add $0x7,%r12 0.00 : 47048c: 49 83 e4 f8 and $0xfffffffffffffff8,%r12 0.00 : 470490: e9 2d ff ff ff jmpq 4703c2 0.00 : 470495: 0f 1f 00 nopl (%rax) : att[i]->attlen, val); : data_length = att_addlength_datum(data_length, att[i]->attlen, 0.00 : 470498: 0f b6 57 01 movzbl 0x1(%rdi),%edx 0.00 : 47049c: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 4704a1: 80 fa 01 cmp $0x1,%dl 0.00 : 4704a4: 0f 84 21 ff ff ff je 4703cb 0.00 : 4704aa: 80 fa 12 cmp $0x12,%dl 0.00 : 4704ad: b8 03 00 00 00 mov $0x3,%eax 0.00 : 4704b2: ba 12 00 00 00 mov $0x12,%edx 0.00 : 4704b7: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 4704bb: e9 0b ff ff ff jmpq 4703cb : if (isnull[i]) : continue; : : val = values[i]; : : if (ATT_IS_PACKABLE(att[i]) && 0.00 : 4704c0: 0f b6 37 movzbl (%rdi),%esi 0.00 : 4704c3: e9 51 ff ff ff jmpq 470419 0.00 : 4704c8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4704cf: 00 : } : else : { : data_length = att_align_datum(data_length, att[i]->attalign, : att[i]->attlen, val); : data_length = att_addlength_datum(data_length, att[i]->attlen, 0.20 : 4704d0: 8b 07 mov (%rdi),%eax 0.00 : 4704d2: c1 e8 02 shr $0x2,%eax 0.00 : 4704d5: 89 c0 mov %eax,%eax 0.00 : 4704d7: e9 ef fe ff ff jmpq 4703cb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.40 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:587 12.94 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:574 9.65 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:581 9.45 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:569 7.60 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:581 4.52 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:569 4.31 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:581 3.08 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:539 2.67 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:587 2.05 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:569 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:539 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:539 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:539 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:550 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:575 1.85 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:574 1.64 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:569 1.64 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:575 1.44 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:568 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:550 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:575 1.23 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:587 1.03 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:550 1.03 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:550 1.03 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:574 0.82 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:539 0.82 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:539 0.82 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:575 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:539 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:550 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:569 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046a6a0 : : HeapTuple htup, : Datum *values, : bool *isnull, : bool tupleIsAlive, : void *brstate) : { /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:539 3.08 : 46a6a0: 55 push %rbp 0.21 : 46a6a1: 48 89 e5 mov %rsp,%rbp 1.85 : 46a6a4: 41 57 push %r15 0.62 : 46a6a6: 49 89 cf mov %rcx,%r15 0.00 : 46a6a9: 41 56 push %r14 0.82 : 46a6ab: 41 55 push %r13 1.85 : 46a6ad: 4d 89 cd mov %r9,%r13 0.00 : 46a6b0: 41 54 push %r12 0.00 : 46a6b2: 53 push %rbx 0.82 : 46a6b3: 48 83 ec 18 sub $0x18,%rsp 1.85 : 46a6b7: 48 89 7d d0 mov %rdi,-0x30(%rbp) 0.00 : 46a6bb: 48 89 55 c8 mov %rdx,-0x38(%rbp) : : /* : * If we're in a new block which belongs to the next range, summarize what : * we've got and start afresh. : */ : if (thisblock > (state->currRangeStart + state->pagesPerRange - 1)) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:550 1.03 : 46a6bf: 0f b7 56 04 movzwl 0x4(%rsi),%edx 1.03 : 46a6c3: 0f b7 46 06 movzwl 0x6(%rsi),%eax 0.00 : 46a6c7: c1 e2 10 shl $0x10,%edx 0.21 : 46a6ca: 09 c2 or %eax,%edx 1.85 : 46a6cc: 41 8b 41 14 mov 0x14(%r9),%eax 1.23 : 46a6d0: 41 03 41 10 add 0x10(%r9),%eax 0.62 : 46a6d4: 83 e8 01 sub $0x1,%eax 0.21 : 46a6d7: 39 c2 cmp %eax,%edx 0.00 : 46a6d9: 0f 87 91 00 00 00 ja 46a770 : brin_dtuple_initialize(state->dtuple, state->bs_bdesc); : } : : /* Accumulate the current tuple into the running state */ : state->seentup = true; : for (i = 0; i < state->bs_bdesc->bd_tupdesc->natts; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:569 1.64 : 46a6df: 49 8b 45 20 mov 0x20(%r13),%rax : /* re-initialize state for it */ : brin_dtuple_initialize(state->dtuple, state->bs_bdesc); : } : : /* Accumulate the current tuple into the running state */ : state->seentup = true; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:568 1.44 : 46a6e3: 41 c6 45 28 01 movb $0x1,0x28(%r13) : for (i = 0; i < state->bs_bdesc->bd_tupdesc->natts; i++) 0.41 : 46a6e8: 48 8b 40 10 mov 0x10(%rax),%rax 0.21 : 46a6ec: 8b 10 mov (%rax),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:569 4.52 : 46a6ee: 85 d2 test %edx,%edx 0.00 : 46a6f0: 7e 6a jle 46a75c 2.05 : 46a6f2: 45 31 e4 xor %r12d,%r12d 0.00 : 46a6f5: 0f 1f 00 nopl (%rax) : { : FmgrInfo *addValue; : BrinValues *col; : : col = &state->dtuple->dt_columns[i]; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:574 12.94 : 46a6f8: 49 63 dc movslq %r12d,%rbx : addValue = index_getprocinfo(index, i + 1, 0.21 : 46a6fb: 41 8d 74 24 01 lea 0x1(%r12),%esi /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:575 1.85 : 46a700: 48 8b 7d d0 mov -0x30(%rbp),%rdi : for (i = 0; i < state->bs_bdesc->bd_tupdesc->natts; i++) : { : FmgrInfo *addValue; : BrinValues *col; : : col = &state->dtuple->dt_columns[i]; 0.00 : 46a704: 48 89 d8 mov %rbx,%rax : addValue = index_getprocinfo(index, i + 1, 0.82 : 46a707: ba 02 00 00 00 mov $0x2,%edx : brin_dtuple_initialize(state->dtuple, state->bs_bdesc); : } : : /* Accumulate the current tuple into the running state */ : state->seentup = true; : for (i = 0; i < state->bs_bdesc->bd_tupdesc->natts; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:569 0.62 : 46a70c: 41 83 c4 01 add $0x1,%r12d : { : FmgrInfo *addValue; : BrinValues *col; : : col = &state->dtuple->dt_columns[i]; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:574 1.85 : 46a710: 48 c1 e0 04 shl $0x4,%rax 0.00 : 46a714: 49 03 45 30 add 0x30(%r13),%rax : addValue = index_getprocinfo(index, i + 1, /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:575 1.64 : 46a718: 0f bf f6 movswl %si,%esi : for (i = 0; i < state->bs_bdesc->bd_tupdesc->natts; i++) : { : FmgrInfo *addValue; : BrinValues *col; : : col = &state->dtuple->dt_columns[i]; /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:574 1.03 : 46a71b: 4c 8d 70 08 lea 0x8(%rax),%r14 : addValue = index_getprocinfo(index, i + 1, /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:575 1.23 : 46a71f: e8 9c a9 03 00 callq 4a50c0 : BRIN_PROCNUM_ADDVALUE); : : /* : * Update dtuple state, if and as necessary. : */ : FunctionCall4Coll(addValue, 0.00 : 46a724: 49 8b 55 20 mov 0x20(%r13),%rdx : { : FmgrInfo *addValue; : BrinValues *col; : : col = &state->dtuple->dt_columns[i]; : addValue = index_getprocinfo(index, i + 1, 0.00 : 46a728: 48 89 c7 mov %rax,%rdi : BRIN_PROCNUM_ADDVALUE); : : /* : * Update dtuple state, if and as necessary. : */ : FunctionCall4Coll(addValue, 0.00 : 46a72b: 4d 0f be 0c 1f movsbq (%r15,%rbx,1),%r9 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:581 4.31 : 46a730: 4c 89 f1 mov %r14,%rcx 0.00 : 46a733: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 46a737: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 46a73b: 48 8b 04 d8 mov (%rax,%rbx,8),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:581 7.60 : 46a73f: 8b 70 68 mov 0x68(%rax),%esi 9.65 : 46a742: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 46a746: 4c 8b 04 d8 mov (%rax,%rbx,8),%r8 0.00 : 46a74a: e8 71 37 31 00 callq 77dec0 : brin_dtuple_initialize(state->dtuple, state->bs_bdesc); : } : : /* Accumulate the current tuple into the running state */ : state->seentup = true; : for (i = 0; i < state->bs_bdesc->bd_tupdesc->natts; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:569 9.45 : 46a74f: 49 8b 45 20 mov 0x20(%r13),%rax 0.00 : 46a753: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 46a757: 44 39 20 cmp %r12d,(%rax) 0.00 : 46a75a: 7f 9c jg 46a6f8 : state->bs_bdesc->bd_tupdesc->attrs[i]->attcollation, : PointerGetDatum(state->bs_bdesc), : PointerGetDatum(col), : values[i], isnull[i]); : } : } /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:587 15.40 : 46a75c: 48 83 c4 18 add $0x18,%rsp 0.00 : 46a760: 5b pop %rbx 0.00 : 46a761: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin.c:587 1.23 : 46a763: 41 5d pop %r13 0.00 : 46a765: 41 5e pop %r14 0.00 : 46a767: 41 5f pop %r15 0.00 : 46a769: c9 leaveq 2.67 : 46a76a: c3 retq 0.00 : 46a76b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * we've got and start afresh. : */ : if (thisblock > (state->currRangeStart + state->pagesPerRange - 1)) : { : : BRIN_elog(DEBUG2, "brinbuildCallback: completed a range: %u--%u", 0.00 : 46a770: ba 10 f1 7a 00 mov $0x7af110,%edx 0.00 : 46a775: be 2b 02 00 00 mov $0x22b,%esi 0.00 : 46a77a: bf 12 f0 7a 00 mov $0x7af012,%edi 0.00 : 46a77f: e8 9c 0c 31 00 callq 77b420 0.00 : 46a784: 41 8b 55 14 mov 0x14(%r13),%edx 0.00 : 46a788: 31 c0 xor %eax,%eax 0.00 : 46a78a: be 70 f0 7a 00 mov $0x7af070,%esi 0.00 : 46a78f: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 46a794: 89 d1 mov %edx,%ecx 0.00 : 46a796: 41 03 4d 10 add 0x10(%r13),%ecx 0.00 : 46a79a: e8 91 0a 31 00 callq 77b230 : state->currRangeStart, : state->currRangeStart + state->pagesPerRange); : : /* create the index tuple and insert it */ : form_and_insert_tuple(state); 0.00 : 46a79f: 4c 89 ef mov %r13,%rdi 0.00 : 46a7a2: e8 19 fe ff ff callq 46a5c0 : : /* set state to correspond to the next range */ : state->currRangeStart += state->pagesPerRange; 0.00 : 46a7a7: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 46a7ab: 41 01 45 14 add %eax,0x14(%r13) : : /* re-initialize state for it */ : brin_dtuple_initialize(state->dtuple, state->bs_bdesc); 0.00 : 46a7af: 49 8b 75 20 mov 0x20(%r13),%rsi 0.00 : 46a7b3: 49 8b 7d 30 mov 0x30(%r13),%rdi 0.00 : 46a7b7: e8 b4 29 00 00 callq 46d170 0.00 : 46a7bc: e9 1e ff ff ff jmpq 46a6df Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 94.47 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2199 1.70 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2127 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4670 : : * unwritten data. Any new pages are initialized to zeros, with pages headers : * initialized properly. : */ : static void : AdvanceXLInsertBuffer(XLogRecPtr upto, bool opportunistic) : { 0.00 : 4d4670: 55 push %rbp 0.00 : 4d4671: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4674: 41 57 push %r15 0.00 : 4d4676: 49 89 ff mov %rdi,%r15 0.00 : 4d4679: 41 56 push %r14 0.00 : 4d467b: 41 55 push %r13 0.00 : 4d467d: 41 54 push %r12 0.00 : 4d467f: 53 push %rbx 0.00 : 4d4680: 89 f3 mov %esi,%ebx : XLogRecPtr NewPageEndPtr = InvalidXLogRecPtr; : XLogRecPtr NewPageBeginPtr; : XLogPageHeader NewPage; : int npages = 0; : : LWLockAcquire(WALBufMappingLock, LW_EXCLUSIVE); 0.00 : 4d4682: 31 f6 xor %esi,%esi : * unwritten data. Any new pages are initialized to zeros, with pages headers : * initialized properly. : */ : static void : AdvanceXLInsertBuffer(XLogRecPtr upto, bool opportunistic) : { 0.00 : 4d4684: 48 83 ec 28 sub $0x28,%rsp : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d4688: 48 8b 05 09 4b 6a 00 mov 0x6a4b09(%rip),%rax # b79198 : XLogRecPtr NewPageEndPtr = InvalidXLogRecPtr; : XLogRecPtr NewPageBeginPtr; : XLogPageHeader NewPage; : int npages = 0; : : LWLockAcquire(WALBufMappingLock, LW_EXCLUSIVE); 0.00 : 4d468f: 48 8b 3d 6a 93 6a 00 mov 0x6a936a(%rip),%rdi # b7da00 : * initialized properly. : */ : static void : AdvanceXLInsertBuffer(XLogRecPtr upto, bool opportunistic) : { : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d4696: 48 89 45 b8 mov %rax,-0x48(%rbp) : XLogRecPtr NewPageEndPtr = InvalidXLogRecPtr; : XLogRecPtr NewPageBeginPtr; : XLogPageHeader NewPage; : int npages = 0; : : LWLockAcquire(WALBufMappingLock, LW_EXCLUSIVE); 0.00 : 4d469a: 48 81 c7 e0 00 00 00 add $0xe0,%rdi 0.00 : 4d46a1: e8 4a b4 1b 00 callq 68faf0 0.00 : 4d46a6: 84 db test %bl,%bl 0.00 : 4d46a8: 41 0f 95 c6 setne %r14b 0.00 : 4d46ac: 0f 1f 40 00 nopl 0x0(%rax) : : /* : * Now that we have the lock, check if someone initialized the page : * already. : */ : while (upto >= XLogCtl->InitializedUpTo || opportunistic) 0.00 : 4d46b0: 48 8b 0d e1 4a 6a 00 mov 0x6a4ae1(%rip),%rcx # b79198 0.00 : 4d46b7: 48 8b 91 38 01 00 00 mov 0x138(%rcx),%rdx 0.21 : 4d46be: 4c 39 fa cmp %r15,%rdx 0.00 : 4d46c1: 76 2d jbe 4d46f0 0.21 : 4d46c3: 45 84 f6 test %r14b,%r14b 0.00 : 4d46c6: 75 28 jne 4d46f0 : : XLogCtl->InitializedUpTo = NewPageEndPtr; : : npages++; : } : LWLockRelease(WALBufMappingLock); 0.00 : 4d46c8: 48 8b 3d 31 93 6a 00 mov 0x6a9331(%rip),%rdi # b7da00 : { : elog(DEBUG1, "initialized %d pages, upto %X/%X", : npages, (uint32) (NewPageEndPtr >> 32), (uint32) NewPageEndPtr); : } : #endif : } 0.00 : 4d46cf: 48 83 c4 28 add $0x28,%rsp 0.00 : 4d46d3: 5b pop %rbx 0.00 : 4d46d4: 41 5c pop %r12 0.00 : 4d46d6: 41 5d pop %r13 0.00 : 4d46d8: 41 5e pop %r14 0.00 : 4d46da: 41 5f pop %r15 0.00 : 4d46dc: c9 leaveq : : XLogCtl->InitializedUpTo = NewPageEndPtr; : : npages++; : } : LWLockRelease(WALBufMappingLock); 0.00 : 4d46dd: 48 81 c7 e0 00 00 00 add $0xe0,%rdi 0.00 : 4d46e4: e9 b7 ac 1b 00 jmpq 68f3a0 0.00 : 4d46e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Get ending-offset of the buffer page we need to replace (this may : * be zero if the buffer hasn't been used yet). Fall through if it's : * already written out. : */ : OldPageRqstPtr = XLogCtl->xlblocks[nextidx]; 0.00 : 4d46f0: 8b 81 50 01 00 00 mov 0x150(%rcx),%eax 0.00 : 4d46f6: 48 c1 ea 0d shr $0xd,%rdx 0.00 : 4d46fa: 83 c0 01 add $0x1,%eax 0.00 : 4d46fd: 48 63 f0 movslq %eax,%rsi 0.00 : 4d4700: 48 89 d0 mov %rdx,%rax 0.00 : 4d4703: 31 d2 xor %edx,%edx 0.00 : 4d4705: 48 f7 f6 div %rsi /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2127 1.70 : 4d4708: 48 8b 81 48 01 00 00 mov 0x148(%rcx),%rax 0.00 : 4d470f: 4c 63 e2 movslq %edx,%r12 0.00 : 4d4712: 4a 8b 1c e0 mov (%rax,%r12,8),%rbx : if (LogwrtResult.Write < OldPageRqstPtr) 0.43 : 4d4716: 48 3b 1d 93 4a 6a 00 cmp 0x6a4a93(%rip),%rbx # b791b0 : /* : * Get ending-offset of the buffer page we need to replace (this may : * be zero if the buffer hasn't been used yet). Fall through if it's : * already written out. : */ : OldPageRqstPtr = XLogCtl->xlblocks[nextidx]; 0.00 : 4d471d: 4e 8d 2c e5 00 00 00 lea 0x0(,%r12,8),%r13 0.00 : 4d4724: 00 : if (LogwrtResult.Write < OldPageRqstPtr) 0.00 : 4d4725: 76 71 jbe 4d4798 : { : /* : * Nope, got work to do. If we just want to pre-initialize as much : * as we can without flushing, give up now. : */ : if (opportunistic) 0.00 : 4d4727: 45 84 f6 test %r14b,%r14b 0.00 : 4d472a: 75 9c jne 4d46c8 : break; : : /* Before waiting, get info_lck and update LogwrtResult */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d472c: 48 8d 91 08 06 00 00 lea 0x608(%rcx),%rdx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d4733: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d4738: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d473b: 84 c0 test %al,%al 0.00 : 4d473d: 0f 85 f5 00 00 00 jne 4d4838 : if (XLogCtl->LogwrtRqst.Write < OldPageRqstPtr) 0.00 : 4d4743: 48 8b 15 4e 4a 6a 00 mov 0x6a4a4e(%rip),%rdx # b79198 0.00 : 4d474a: 48 3b 9a d8 00 00 00 cmp 0xd8(%rdx),%rbx 0.00 : 4d4751: 76 07 jbe 4d475a : XLogCtl->LogwrtRqst.Write = OldPageRqstPtr; 0.00 : 4d4753: 48 89 9a d8 00 00 00 mov %rbx,0xd8(%rdx) : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d475a: 48 8b 82 28 01 00 00 mov 0x128(%rdx),%rax 0.00 : 4d4761: 48 89 05 48 4a 6a 00 mov %rax,0x6a4a48(%rip) # b791b0 0.00 : 4d4768: 48 8b 82 30 01 00 00 mov 0x130(%rdx),%rax 0.00 : 4d476f: 48 89 05 42 4a 6a 00 mov %rax,0x6a4a42(%rip) # b791b8 : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d4776: 48 8b 05 1b 4a 6a 00 mov 0x6a4a1b(%rip),%rax # b79198 0.00 : 4d477d: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : : /* : * Now that we have an up-to-date LogwrtResult value, see if we : * still need to write it or if someone else already did. : */ : if (LogwrtResult.Write < OldPageRqstPtr) 0.00 : 4d4784: 48 3b 1d 25 4a 6a 00 cmp 0x6a4a25(%rip),%rbx # b791b0 0.00 : 4d478b: 0f 87 cf 00 00 00 ja 4d4860 0.00 : 4d4791: 48 8b 0d 00 4a 6a 00 mov 0x6a4a00(%rip),%rcx # b79198 : NewPageBeginPtr = XLogCtl->InitializedUpTo; : NewPageEndPtr = NewPageBeginPtr + XLOG_BLCKSZ; : : Assert(XLogRecPtrToBufIdx(NewPageBeginPtr) == nextidx); : : NewPage = (XLogPageHeader) (XLogCtl->pages + nextidx * (Size) XLOG_BLCKSZ); 0.21 : 4d4798: 4d 89 e0 mov %r12,%r8 : : /* : * Now the next buffer slot is free and we can set it up to be the : * next output page. : */ : NewPageBeginPtr = XLogCtl->InitializedUpTo; 0.00 : 4d479b: 48 8b 91 38 01 00 00 mov 0x138(%rcx),%rdx : : /* : * Be sure to re-zero the buffer so that bytes beyond what we've : * written will look like zeroes and not valid XLOG records... : */ : MemSet((char *) NewPage, 0, XLOG_BLCKSZ); 0.00 : 4d47a2: 31 c0 xor %eax,%eax : NewPageBeginPtr = XLogCtl->InitializedUpTo; : NewPageEndPtr = NewPageBeginPtr + XLOG_BLCKSZ; : : Assert(XLogRecPtrToBufIdx(NewPageBeginPtr) == nextidx); : : NewPage = (XLogPageHeader) (XLogCtl->pages + nextidx * (Size) XLOG_BLCKSZ); 0.00 : 4d47a4: 49 c1 e0 0d shl $0xd,%r8 0.00 : 4d47a8: 4c 03 81 40 01 00 00 add 0x140(%rcx),%r8 : : /* : * Be sure to re-zero the buffer so that bytes beyond what we've : * written will look like zeroes and not valid XLOG records... : */ : MemSet((char *) NewPage, 0, XLOG_BLCKSZ); 0.00 : 4d47af: b9 00 04 00 00 mov $0x400,%ecx : /* : * Now the next buffer slot is free and we can set it up to be the : * next output page. : */ : NewPageBeginPtr = XLogCtl->InitializedUpTo; : NewPageEndPtr = NewPageBeginPtr + XLOG_BLCKSZ; 0.00 : 4d47b4: 48 8d b2 00 20 00 00 lea 0x2000(%rdx),%rsi : : /* : * Be sure to re-zero the buffer so that bytes beyond what we've : * written will look like zeroes and not valid XLOG records... : */ : MemSet((char *) NewPage, 0, XLOG_BLCKSZ); 0.00 : 4d47bb: 4c 89 c7 mov %r8,%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2199 94.47 : 4d47be: f3 48 ab rep stos %rax,%es:(%rdi) : : /* : * Fill the new page's header : */ : NewPage ->xlp_magic = XLOG_PAGE_MAGIC; 0.43 : 4d47c1: 66 41 c7 00 7f d0 movw $0xd07f,(%r8) : : /* NewPage->xlp_info = 0; */ /* done by memset */ : NewPage ->xlp_tli = ThisTimeLineID; 0.43 : 4d47c7: 8b 05 97 49 6a 00 mov 0x6a4997(%rip),%eax # b79164 : NewPage ->xlp_pageaddr = NewPageBeginPtr; 0.21 : 4d47cd: 49 89 50 08 mov %rdx,0x8(%r8) : * Fill the new page's header : */ : NewPage ->xlp_magic = XLOG_PAGE_MAGIC; : : /* NewPage->xlp_info = 0; */ /* done by memset */ : NewPage ->xlp_tli = ThisTimeLineID; 0.21 : 4d47d1: 41 89 40 04 mov %eax,0x4(%r8) : * records can be written during the backup. At the end of a backup, : * the last page will be marked as all unsafe when perhaps only part : * is unsafe, but at worst the archiver would miss the opportunity to : * compress a few records. : */ : if (!Insert->forcePageWrites) 0.00 : 4d47d5: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 4d47d9: 80 b8 a0 00 00 00 00 cmpb $0x0,0xa0(%rax) 0.00 : 4d47e0: 75 06 jne 4d47e8 : NewPage ->xlp_info |= XLP_BKP_REMOVABLE; 0.00 : 4d47e2: 66 41 83 48 02 04 orw $0x4,0x2(%r8) : : /* : * If first page of an XLOG segment file, make it a long header. : */ : if ((NewPage->xlp_pageaddr % XLogSegSize) == 0) 0.00 : 4d47e8: 41 f7 40 08 ff ff ff testl $0xffffff,0x8(%r8) 0.00 : 4d47ef: 00 0.00 : 4d47f0: 75 24 jne 4d4816 : { : XLogLongPageHeader NewLongPage = (XLogLongPageHeader) NewPage; : : NewLongPage->xlp_sysid = ControlFile->system_identifier; 0.00 : 4d47f2: 48 8b 05 a7 49 6a 00 mov 0x6a49a7(%rip),%rax # b791a0 0.00 : 4d47f9: 48 8b 00 mov (%rax),%rax : NewLongPage->xlp_seg_size = XLogSegSize; : NewLongPage->xlp_xlog_blcksz = XLOG_BLCKSZ; : NewPage ->xlp_info |= XLP_LONG_HEADER; 0.00 : 4d47fc: 66 41 83 48 02 02 orw $0x2,0x2(%r8) : if ((NewPage->xlp_pageaddr % XLogSegSize) == 0) : { : XLogLongPageHeader NewLongPage = (XLogLongPageHeader) NewPage; : : NewLongPage->xlp_sysid = ControlFile->system_identifier; : NewLongPage->xlp_seg_size = XLogSegSize; 0.00 : 4d4802: 41 c7 40 20 00 00 00 movl $0x1000000,0x20(%r8) 0.00 : 4d4809: 01 : NewLongPage->xlp_xlog_blcksz = XLOG_BLCKSZ; 0.00 : 4d480a: 41 c7 40 24 00 20 00 movl $0x2000,0x24(%r8) 0.00 : 4d4811: 00 : */ : if ((NewPage->xlp_pageaddr % XLogSegSize) == 0) : { : XLogLongPageHeader NewLongPage = (XLogLongPageHeader) NewPage; : : NewLongPage->xlp_sysid = ControlFile->system_identifier; 0.00 : 4d4812: 49 89 40 18 mov %rax,0x18(%r8) : * before the xlblocks update. GetXLogBuffer() reads xlblocks without : * holding a lock. : */ : pg_write_barrier(); : : *((volatile XLogRecPtr *) &XLogCtl->xlblocks[nextidx]) = NewPageEndPtr; 0.43 : 4d4816: 48 8b 05 7b 49 6a 00 mov 0x6a497b(%rip),%rax # b79198 0.00 : 4d481d: 4c 03 a8 48 01 00 00 add 0x148(%rax),%r13 0.00 : 4d4824: 49 89 75 00 mov %rsi,0x0(%r13) : : XLogCtl->InitializedUpTo = NewPageEndPtr; 0.43 : 4d4828: 48 89 b0 38 01 00 00 mov %rsi,0x138(%rax) 0.21 : 4d482f: e9 7c fe ff ff jmpq 4d46b0 0.00 : 4d4834: 0f 1f 40 00 nopl 0x0(%rax) : */ : if (opportunistic) : break; : : /* Before waiting, get info_lck and update LogwrtResult */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4838: 48 8b 3d 59 49 6a 00 mov 0x6a4959(%rip),%rdi # b79198 0.00 : 4d483f: ba 5a 08 00 00 mov $0x85a,%edx 0.00 : 4d4844: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d4849: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d4850: e8 eb b7 1b 00 callq 690040 0.00 : 4d4855: e9 e9 fe ff ff jmpq 4d4743 0.00 : 4d485a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Must acquire write lock. Release WALBufMappingLock first, : * to make sure that all insertions that we need to wait for : * can finish (up to this same position). Otherwise we risk : * deadlock. : */ : LWLockRelease(WALBufMappingLock); 0.00 : 4d4860: 48 8b 3d 99 91 6a 00 mov 0x6a9199(%rip),%rdi # b7da00 0.00 : 4d4867: 48 81 c7 e0 00 00 00 add $0xe0,%rdi 0.00 : 4d486e: e8 2d ab 1b 00 callq 68f3a0 : : WaitXLogInsertionsToFinish(OldPageRqstPtr); 0.00 : 4d4873: 48 89 df mov %rbx,%rdi 0.00 : 4d4876: e8 95 f6 ff ff callq 4d3f10 : : LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); 0.00 : 4d487b: 48 8b 3d 7e 91 6a 00 mov 0x6a917e(%rip),%rdi # b7da00 0.00 : 4d4882: 31 f6 xor %esi,%esi 0.00 : 4d4884: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d488b: e8 60 b2 1b 00 callq 68faf0 : : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d4890: 48 8b 15 01 49 6a 00 mov 0x6a4901(%rip),%rdx # b79198 0.00 : 4d4897: 48 8b 82 28 01 00 00 mov 0x128(%rdx),%rax 0.43 : 4d489e: 48 89 05 0b 49 6a 00 mov %rax,0x6a490b(%rip) # b791b0 : if (LogwrtResult.Write >= OldPageRqstPtr) 0.00 : 4d48a5: 48 3b 1d 04 49 6a 00 cmp 0x6a4904(%rip),%rbx # b791b0 : : WaitXLogInsertionsToFinish(OldPageRqstPtr); : : LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); : : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d48ac: 48 8b 82 30 01 00 00 mov 0x130(%rdx),%rax 0.00 : 4d48b3: 48 89 05 fe 48 6a 00 mov %rax,0x6a48fe(%rip) # b791b8 : if (LogwrtResult.Write >= OldPageRqstPtr) 0.00 : 4d48ba: 76 18 jbe 4d48d4 : } : else : { : /* Have to write it ourselves */ : TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_START(); : WriteRqst.Write = OldPageRqstPtr; 0.00 : 4d48bc: 48 89 5d c0 mov %rbx,-0x40(%rbp) : WriteRqst.Flush = 0; 0.00 : 4d48c0: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 4d48c7: 00 : XLogWrite(WriteRqst, false); 0.00 : 4d48c8: 31 d2 xor %edx,%edx 0.00 : 4d48ca: 48 89 df mov %rbx,%rdi 0.00 : 4d48cd: 31 f6 xor %esi,%esi 0.00 : 4d48cf: e8 8c f7 ff ff callq 4d4060 : LWLockRelease(WALWriteLock); 0.00 : 4d48d4: 48 8b 3d 25 91 6a 00 mov 0x6a9125(%rip),%rdi # b7da00 0.00 : 4d48db: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d48e2: e8 b9 aa 1b 00 callq 68f3a0 : TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_DONE(); : } : /* Re-acquire WALBufMappingLock and retry */ : LWLockAcquire(WALBufMappingLock, LW_EXCLUSIVE); 0.00 : 4d48e7: 48 8b 3d 12 91 6a 00 mov 0x6a9112(%rip),%rdi # b7da00 0.00 : 4d48ee: 31 f6 xor %esi,%esi 0.00 : 4d48f0: 48 81 c7 e0 00 00 00 add $0xe0,%rdi 0.00 : 4d48f7: e8 f4 b1 1b 00 callq 68faf0 : continue; 0.00 : 4d48fc: e9 af fd ff ff jmpq 4d46b0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.86 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:827 12.50 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 6.14 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:850 5.68 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 5.45 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:827 5.23 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:850 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:850 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 3.86 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 3.86 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 3.64 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 3.64 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 3.18 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 2.95 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:818 2.27 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 2.05 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 1.14 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 1.14 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 0.91 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 0.68 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 0.68 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:818 0.68 /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a50c0 : : */ : FmgrInfo * : index_getprocinfo(Relation irel, : AttrNumber attnum, : uint16 procnum) : { /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:809 1.14 : 4a50c0: 55 push %rbp 0.68 : 4a50c1: 48 89 e5 mov %rsp,%rbp 2.05 : 4a50c4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 3.86 : 4a50c8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.91 : 4a50cc: 49 89 fc mov %rdi,%r12 2.27 : 4a50cf: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.23 : 4a50d3: 4c 89 75 f8 mov %r14,-0x8(%rbp) : : nproc = irel->rd_am->amsupport; : : Assert(procnum > 0 && procnum <= (uint16) nproc); : : procindex = (nproc * (attnum - 1)) + (procnum - 1); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:818 2.95 : 4a50d7: 44 0f b7 ea movzwl %dx,%r13d : */ : FmgrInfo * : index_getprocinfo(Relation irel, : AttrNumber attnum, : uint16 procnum) : { 0.45 : 4a50db: 48 83 ec 20 sub $0x20,%rsp : : locinfo = irel->rd_supportinfo; : : Assert(locinfo != NULL); : : locinfo += procindex; /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 1.14 : 4a50df: 48 8b 97 b0 00 00 00 mov 0xb0(%rdi),%rdx : : nproc = irel->rd_am->amsupport; : : Assert(procnum > 0 && procnum <= (uint16) nproc); : : procindex = (nproc * (attnum - 1)) + (procnum - 1); /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:818 0.68 : 4a50e6: 44 0f bf f6 movswl %si,%r14d : : locinfo = irel->rd_supportinfo; : : Assert(locinfo != NULL); : : locinfo += procindex; /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 3.64 : 4a50ea: 41 8d 46 ff lea -0x1(%r14),%eax 0.68 : 4a50ee: 0f bf 52 42 movswl 0x42(%rdx),%edx 3.64 : 4a50f2: 0f af c2 imul %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 5.68 : 4a50f5: 41 8d 44 05 ff lea -0x1(%r13,%rax,1),%eax 12.50 : 4a50fa: 48 63 d0 movslq %eax,%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:824 3.18 : 4a50fd: 48 8d 1c 52 lea (%rdx,%rdx,2),%rbx 3.86 : 4a5101: 48 c1 e3 04 shl $0x4,%rbx 4.55 : 4a5105: 48 03 9f e0 00 00 00 add 0xe0(%rdi),%rbx : : /* Initialize the lookup info if first time through */ : if (locinfo->fn_oid == InvalidOid) /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:827 5.45 : 4a510c: 8b 43 08 mov 0x8(%rbx),%eax 23.86 : 4a510f: 85 c0 test %eax,%eax 0.00 : 4a5111: 75 1e jne 4a5131 : RegProcedure *loc = irel->rd_support; : RegProcedure procId; : : Assert(loc != NULL); : : procId = loc[procindex]; 0.00 : 4a5113: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 4a511a: 8b 3c 90 mov (%rax,%rdx,4),%edi : * Complain if function was not found during IndexSupportInitialize. : * This should not happen unless the system tables contain bogus : * entries for the index opclass. (If an AM wants to allow a support : * function to be optional, it can use index_getprocid.) : */ : if (!RegProcedureIsValid(procId)) 0.00 : 4a511d: 85 ff test %edi,%edi 0.00 : 4a511f: 74 28 je 4a5149 : elog(ERROR, "missing support function %d for attribute %d of index \"%s\"", : procnum, attnum, RelationGetRelationName(irel)); : : fmgr_info_cxt(procId, locinfo, irel->rd_indexcxt); 0.00 : 4a5121: 49 8b 94 24 b8 00 00 mov 0xb8(%r12),%rdx 0.00 : 4a5128: 00 0.00 : 4a5129: 48 89 de mov %rbx,%rsi 0.00 : 4a512c: e8 1f af 2d 00 callq 780050 : } : : return locinfo; : } /home/Computational/mark/src/postgres-andres/src/backend/access/index/indexam.c:850 5.00 : 4a5131: 48 89 d8 mov %rbx,%rax 0.00 : 4a5134: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.23 : 4a5139: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4a513d: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 6.14 : 4a5142: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 4a5147: c9 leaveq 5.23 : 4a5148: c3 retq : * This should not happen unless the system tables contain bogus : * entries for the index opclass. (If an AM wants to allow a support : * function to be optional, it can use index_getprocid.) : */ : if (!RegProcedureIsValid(procId)) : elog(ERROR, "missing support function %d for attribute %d of index \"%s\"", 0.00 : 4a5149: ba e0 3b 7b 00 mov $0x7b3be0,%edx 0.00 : 4a514e: be 4c 03 00 00 mov $0x34c,%esi 0.00 : 4a5153: bf 33 3b 7b 00 mov $0x7b3b33,%edi 0.00 : 4a5158: e8 c3 62 2d 00 callq 77b420 0.00 : 4a515d: 4d 8b 44 24 30 mov 0x30(%r12),%r8 0.00 : 4a5162: 44 89 f1 mov %r14d,%ecx 0.00 : 4a5165: 44 89 ea mov %r13d,%edx 0.00 : 4a5168: be c8 19 7b 00 mov $0x7b19c8,%esi 0.00 : 4a516d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a5172: 31 c0 xor %eax,%eax 0.00 : 4a5174: e8 b7 60 2d 00 callq 77b230 0.00 : 4a5179: e8 52 43 fc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 7.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 7.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:208 5.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 5.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:222 4.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:323 4.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:225 4.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:222 2.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:326 2.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 2.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:225 2.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:309 2.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:325 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:208 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:221 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:225 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:326 2.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 2.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:208 2.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:323 1.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 1.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:222 1.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:309 1.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:309 1.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:323 1.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:222 1.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:225 1.37 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:326 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:208 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:326 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 0.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 0.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:323 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d8860 : : /* : * float4in - converts "num" to float4 : */ : Datum : float4in(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 5.72 : 6d8860: 55 push %rbp 11.21 : 6d8861: 48 89 e5 mov %rsp,%rbp 0.23 : 6d8864: 41 56 push %r14 7.78 : 6d8866: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 1.83 : 6d8868: 41 54 push %r12 2.06 : 6d886a: 53 push %rbx 2.75 : 6d886b: 48 83 ec 20 sub $0x20,%rsp : char *num = PG_GETARG_CSTRING(0); 0.00 : 6d886f: 4c 8b 77 20 mov 0x20(%rdi),%r14 : * string. : */ : orig_num = num; : : /* skip leading whitespace */ : while (*num != '\0' && isspace((unsigned char) *num)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:208 1.14 : 6d8873: 41 0f b6 1e movzbl (%r14),%ebx 2.52 : 6d8877: 84 db test %bl,%bl 0.00 : 6d8879: 0f 84 d1 00 00 00 je 6d8950 : /* : * float4in - converts "num" to float4 : */ : Datum : float4in(PG_FUNCTION_ARGS) : { 0.00 : 6d887f: e8 3c 10 d9 ff callq 4698c0 <__ctype_b_loc@plt> /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:194 0.92 : 6d8884: 4d 89 f4 mov %r14,%r12 0.00 : 6d8887: 49 89 c5 mov %rax,%r13 0.92 : 6d888a: 48 8b 10 mov (%rax),%rdx 0.00 : 6d888d: eb 12 jmp 6d88a1 0.00 : 6d888f: 90 nop : */ : orig_num = num; : : /* skip leading whitespace */ : while (*num != '\0' && isspace((unsigned char) *num)) : num++; 0.00 : 6d8890: 49 83 c4 01 add $0x1,%r12 : * string. : */ : orig_num = num; : : /* skip leading whitespace */ : while (*num != '\0' && isspace((unsigned char) *num)) 0.00 : 6d8894: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 6d8899: 84 db test %bl,%bl 0.00 : 6d889b: 0f 84 af 00 00 00 je 6d8950 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:208 2.06 : 6d88a1: 0f b6 c3 movzbl %bl,%eax 0.00 : 6d88a4: f6 44 42 01 20 testb $0x20,0x1(%rdx,%rax,2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:208 7.78 : 6d88a9: 75 e5 jne 6d8890 : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type real: \"%s\"", : orig_num))); : : errno = 0; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:221 2.52 : 6d88ab: e8 10 14 d9 ff callq 469cc0 <__errno_location@plt> : val = strtod(num, &endptr); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:222 1.37 : 6d88b0: 48 8d 75 d8 lea -0x28(%rbp),%rsi : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type real: \"%s\"", : orig_num))); : : errno = 0; 0.46 : 6d88b4: c7 00 00 00 00 00 movl $0x0,(%rax) : val = strtod(num, &endptr); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:222 5.72 : 6d88ba: 4c 89 e7 mov %r12,%rdi : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type real: \"%s\"", : orig_num))); : : errno = 0; 0.00 : 6d88bd: 48 89 c3 mov %rax,%rbx : val = strtod(num, &endptr); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:222 1.83 : 6d88c0: e8 bb 18 d9 ff callq 46a180 : : /* did we not see anything that looks like a double? */ : if (endptr == num || errno != 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:225 4.12 : 6d88c5: 4c 39 65 d8 cmp %r12,-0x28(%rbp) : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for type real: \"%s\"", : orig_num))); : : errno = 0; : val = strtod(num, &endptr); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:222 4.12 : 6d88c9: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) : : /* did we not see anything that looks like a double? */ : if (endptr == num || errno != 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:225 1.37 : 6d88ce: 0f 84 9d 01 00 00 je 6d8a71 2.52 : 6d88d4: 8b 1b mov (%rbx),%ebx 2.75 : 6d88d6: 85 db test %ebx,%ebx 0.00 : 6d88d8: 74 30 je 6d890a : * : * Note: C99 also requires hexadecimal input as well as some extended : * forms of NaN, but we consider these forms unportable and don't try : * to support them. You can use 'em if your strtod() takes 'em. : */ : if (pg_strncasecmp(num, "NaN", 3) == 0) 0.00 : 6d88da: ba 03 00 00 00 mov $0x3,%edx 0.00 : 6d88df: be e7 b5 8b 00 mov $0x8bb5e7,%esi 0.00 : 6d88e4: 4c 89 e7 mov %r12,%rdi 0.00 : 6d88e7: e8 54 3f 0d 00 callq 7ac840 0.00 : 6d88ec: 85 c0 test %eax,%eax 0.00 : 6d88ee: 0f 85 4c 01 00 00 jne 6d8a40 : { : val = get_float4_nan(); : endptr = num + 3; 0.00 : 6d88f4: f2 0f 10 05 84 32 1e movsd 0x1e3284(%rip),%xmm0 # 8bbb80 <__func__.11658+0x17> 0.00 : 6d88fb: 00 0.00 : 6d88fc: 49 8d 44 24 03 lea 0x3(%r12),%rax 0.00 : 6d8901: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8906: 48 89 45 d8 mov %rax,-0x28(%rbp) : endptr--; : } : #endif /* HAVE_BUGGY_SOLARIS_STRTOD */ : : /* skip trailing whitespace */ : while (*endptr != '\0' && isspace((unsigned char) *endptr)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:309 1.60 : 6d890a: 48 8b 4d d8 mov -0x28(%rbp),%rcx 0.00 : 6d890e: 0f b6 01 movzbl (%rcx),%eax 2.75 : 6d8911: 84 c0 test %al,%al 0.00 : 6d8913: 75 1a jne 6d892f 1.83 : 6d8915: eb 69 jmp 6d8980 0.00 : 6d8917: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6d891e: 00 00 : endptr++; 0.00 : 6d8920: 48 83 c1 01 add $0x1,%rcx 0.00 : 6d8924: 48 89 4d d8 mov %rcx,-0x28(%rbp) : endptr--; : } : #endif /* HAVE_BUGGY_SOLARIS_STRTOD */ : : /* skip trailing whitespace */ : while (*endptr != '\0' && isspace((unsigned char) *endptr)) 0.00 : 6d8928: 0f b6 01 movzbl (%rcx),%eax 0.00 : 6d892b: 84 c0 test %al,%al 0.00 : 6d892d: 74 51 je 6d8980 0.00 : 6d892f: 0f b6 d0 movzbl %al,%edx 0.00 : 6d8932: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 6d8936: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 6d893b: 75 e3 jne 6d8920 : endptr++; : : /* if there is any junk left at the end of the string, bail out */ : if (*endptr != '\0') : ereport(ERROR, 0.00 : 6d893d: 45 31 c0 xor %r8d,%r8d 0.00 : 6d8940: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d8945: ba 3d 01 00 00 mov $0x13d,%edx 0.00 : 6d894a: eb 11 jmp 6d895d 0.00 : 6d894c: 0f 1f 40 00 nopl 0x0(%rax) : /* : * Check for an empty-string input to begin with, to avoid the vagaries of : * strtod() on different platforms. : */ : if (*num == '\0') : ereport(ERROR, 0.00 : 6d8950: 45 31 c0 xor %r8d,%r8d 0.00 : 6d8953: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d8958: ba db 00 00 00 mov $0xdb,%edx : while (*endptr != '\0' && isspace((unsigned char) *endptr)) : endptr++; : : /* if there is any junk left at the end of the string, bail out */ : if (*endptr != '\0') : ereport(ERROR, 0.00 : 6d895d: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d8962: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d8967: e8 54 21 0a 00 callq 77aac0 0.00 : 6d896c: 84 c0 test %al,%al 0.00 : 6d896e: 0f 85 9c 01 00 00 jne 6d8b10 : : /* : * if we get here, we have a legal double, still need to check to see if : * it's a legal float4 : */ : CHECKFLOATVAL((float4) val, isinf(val), val == 0); 0.00 : 6d8974: e8 57 0b d9 ff callq 4694d0 0.00 : 6d8979: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 6d8980: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 0.00 : 6d8985: 66 0f 5a c0 cvtpd2ps %xmm0,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:323 4.81 : 6d8989: f3 0f 11 45 c4 movss %xmm0,-0x3c(%rbp) 1.60 : 6d898e: e8 9d 0d d9 ff callq 469730 <__isinff@plt> 0.00 : 6d8993: 85 c0 test %eax,%eax 0.00 : 6d8995: 75 49 jne 6d89e0 2.06 : 6d8997: f3 0f 10 45 c4 movss -0x3c(%rbp),%xmm0 0.00 : 6d899c: 0f 2e 05 3d 99 0d 00 ucomiss 0xd993d(%rip),%xmm0 # 7b22e0 <__func__.14992+0xd7> 0.69 : 6d89a3: 75 1b jne 6d89c0 0.00 : 6d89a5: 7a 19 jp 6d89c0 0.00 : 6d89a7: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 0.00 : 6d89ac: 66 0f 2e 05 24 99 0d ucomisd 0xd9924(%rip),%xmm0 # 7b22d8 <__func__.14992+0xcf> 0.00 : 6d89b3: 00 0.00 : 6d89b4: 0f 8a 20 01 00 00 jp 6d8ada 0.00 : 6d89ba: 0f 85 1a 01 00 00 jne 6d8ada : : PG_RETURN_FLOAT4((float4) val); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:325 2.75 : 6d89c0: f3 0f 10 45 c4 movss -0x3c(%rbp),%xmm0 0.00 : 6d89c5: e8 d6 4f 0a 00 callq 77d9a0 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:326 1.14 : 6d89ca: 48 83 c4 20 add $0x20,%rsp 0.00 : 6d89ce: 5b pop %rbx 2.97 : 6d89cf: 41 5c pop %r12 0.23 : 6d89d1: 41 5d pop %r13 1.37 : 6d89d3: 41 5e pop %r14 0.00 : 6d89d5: c9 leaveq 2.52 : 6d89d6: c3 retq 0.00 : 6d89d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6d89de: 00 00 : : /* : * if we get here, we have a legal double, still need to check to see if : * it's a legal float4 : */ : CHECKFLOATVAL((float4) val, isinf(val), val == 0); 0.00 : 6d89e0: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 0.00 : 6d89e5: e8 06 11 d9 ff callq 469af0 <__isinf@plt> 0.00 : 6d89ea: 85 c0 test %eax,%eax 0.00 : 6d89ec: 75 a9 jne 6d8997 0.00 : 6d89ee: 45 31 c0 xor %r8d,%r8d 0.00 : 6d89f1: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d89f6: ba 43 01 00 00 mov $0x143,%edx 0.00 : 6d89fb: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d8a00: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d8a05: e8 b6 20 0a 00 callq 77aac0 0.00 : 6d8a0a: 84 c0 test %al,%al 0.00 : 6d8a0c: 0f 84 62 ff ff ff je 6d8974 0.00 : 6d8a12: bf 2f b4 8b 00 mov $0x8bb42f,%edi 0.00 : 6d8a17: 31 c0 xor %eax,%eax 0.00 : 6d8a19: e8 82 3e 0a 00 callq 77c8a0 0.00 : 6d8a1e: 89 c3 mov %eax,%ebx 0.00 : 6d8a20: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 6d8a25: e8 26 43 0a 00 callq 77cd50 0.00 : 6d8a2a: 89 de mov %ebx,%esi 0.00 : 6d8a2c: 89 c7 mov %eax,%edi 0.00 : 6d8a2e: 31 c0 xor %eax,%eax 0.00 : 6d8a30: e8 ab 1b 0a 00 callq 77a5e0 0.00 : 6d8a35: e9 3a ff ff ff jmpq 6d8974 0.00 : 6d8a3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (pg_strncasecmp(num, "NaN", 3) == 0) : { : val = get_float4_nan(); : endptr = num + 3; : } : else if (pg_strncasecmp(num, "Infinity", 8) == 0) 0.00 : 6d8a40: ba 08 00 00 00 mov $0x8,%edx 0.00 : 6d8a45: be ec b5 8b 00 mov $0x8bb5ec,%esi 0.00 : 6d8a4a: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8a4d: e8 ee 3d 0d 00 callq 7ac840 0.00 : 6d8a52: 85 c0 test %eax,%eax 0.00 : 6d8a54: 75 22 jne 6d8a78 : { : val = get_float4_infinity(); : endptr = num + 8; 0.00 : 6d8a56: 49 8d 44 24 08 lea 0x8(%r12),%rax 0.00 : 6d8a5b: f2 0f 10 05 15 31 1e movsd 0x1e3115(%rip),%xmm0 # 8bbb78 <__func__.11658+0xf> 0.00 : 6d8a62: 00 0.00 : 6d8a63: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8a67: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8a6c: e9 99 fe ff ff jmpq 6d890a : : errno = 0; : val = strtod(num, &endptr); : : /* did we not see anything that looks like a double? */ : if (endptr == num || errno != 0) 0.00 : 6d8a71: 8b 1b mov (%rbx),%ebx 0.00 : 6d8a73: e9 62 fe ff ff jmpq 6d88da : else if (pg_strncasecmp(num, "Infinity", 8) == 0) : { : val = get_float4_infinity(); : endptr = num + 8; : } : else if (pg_strncasecmp(num, "+Infinity", 9) == 0) 0.00 : 6d8a78: ba 09 00 00 00 mov $0x9,%edx 0.00 : 6d8a7d: be eb b5 8b 00 mov $0x8bb5eb,%esi 0.00 : 6d8a82: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8a85: e8 b6 3d 0d 00 callq 7ac840 0.00 : 6d8a8a: 85 c0 test %eax,%eax 0.00 : 6d8a8c: 75 1b jne 6d8aa9 : { : val = get_float4_infinity(); : endptr = num + 9; 0.00 : 6d8a8e: 49 8d 44 24 09 lea 0x9(%r12),%rax 0.00 : 6d8a93: f2 0f 10 05 dd 30 1e movsd 0x1e30dd(%rip),%xmm0 # 8bbb78 <__func__.11658+0xf> 0.00 : 6d8a9a: 00 0.00 : 6d8a9b: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8a9f: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8aa4: e9 61 fe ff ff jmpq 6d890a : } : else if (pg_strncasecmp(num, "-Infinity", 9) == 0) 0.00 : 6d8aa9: ba 09 00 00 00 mov $0x9,%edx 0.00 : 6d8aae: be f5 b5 8b 00 mov $0x8bb5f5,%esi 0.00 : 6d8ab3: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8ab6: e8 85 3d 0d 00 callq 7ac840 0.00 : 6d8abb: 85 c0 test %eax,%eax 0.00 : 6d8abd: 75 6c jne 6d8b2b : { : val = -get_float4_infinity(); : endptr = num + 9; 0.00 : 6d8abf: 49 8d 44 24 09 lea 0x9(%r12),%rax 0.00 : 6d8ac4: f2 0f 10 05 ec 30 1e movsd 0x1e30ec(%rip),%xmm0 # 8bbbb8 <__func__.11658+0x4f> 0.00 : 6d8acb: 00 0.00 : 6d8acc: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8ad0: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8ad5: e9 30 fe ff ff jmpq 6d890a : : /* : * if we get here, we have a legal double, still need to check to see if : * it's a legal float4 : */ : CHECKFLOATVAL((float4) val, isinf(val), val == 0); 0.00 : 6d8ada: 45 31 c0 xor %r8d,%r8d 0.00 : 6d8add: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d8ae2: ba 43 01 00 00 mov $0x143,%edx 0.00 : 6d8ae7: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d8aec: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d8af1: e8 ca 1f 0a 00 callq 77aac0 0.00 : 6d8af6: 84 c0 test %al,%al 0.00 : 6d8af8: 0f 84 76 fe ff ff je 6d8974 0.00 : 6d8afe: bf 4c b4 8b 00 mov $0x8bb44c,%edi 0.00 : 6d8b03: 31 c0 xor %eax,%eax 0.00 : 6d8b05: e8 96 3d 0a 00 callq 77c8a0 0.00 : 6d8b0a: e9 0f ff ff ff jmpq 6d8a1e 0.00 : 6d8b0f: 90 nop : while (*endptr != '\0' && isspace((unsigned char) *endptr)) : endptr++; : : /* if there is any junk left at the end of the string, bail out */ : if (*endptr != '\0') : ereport(ERROR, 0.00 : 6d8b10: bf 50 b8 8b 00 mov $0x8bb850,%edi 0.00 : 6d8b15: 4c 89 f6 mov %r14,%rsi 0.00 : 6d8b18: 31 c0 xor %eax,%eax 0.00 : 6d8b1a: e8 81 3d 0a 00 callq 77c8a0 0.00 : 6d8b1f: bf 82 00 02 02 mov $0x2020082,%edi 0.00 : 6d8b24: 89 c3 mov %eax,%ebx 0.00 : 6d8b26: e9 fa fe ff ff jmpq 6d8a25 : else if (pg_strncasecmp(num, "-Infinity", 9) == 0) : { : val = -get_float4_infinity(); : endptr = num + 9; : } : else if (pg_strncasecmp(num, "inf", 3) == 0) 0.00 : 6d8b2b: ba 03 00 00 00 mov $0x3,%edx 0.00 : 6d8b30: be 00 b6 8b 00 mov $0x8bb600,%esi 0.00 : 6d8b35: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8b38: e8 03 3d 0d 00 callq 7ac840 0.00 : 6d8b3d: 85 c0 test %eax,%eax 0.00 : 6d8b3f: 75 1b jne 6d8b5c : { : val = get_float4_infinity(); : endptr = num + 3; 0.00 : 6d8b41: 49 8d 44 24 03 lea 0x3(%r12),%rax 0.00 : 6d8b46: f2 0f 10 05 2a 30 1e movsd 0x1e302a(%rip),%xmm0 # 8bbb78 <__func__.11658+0xf> 0.00 : 6d8b4d: 00 0.00 : 6d8b4e: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8b52: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8b57: e9 ae fd ff ff jmpq 6d890a : } : else if (pg_strncasecmp(num, "+inf", 4) == 0) 0.00 : 6d8b5c: ba 04 00 00 00 mov $0x4,%edx 0.00 : 6d8b61: be ff b5 8b 00 mov $0x8bb5ff,%esi 0.00 : 6d8b66: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8b69: e8 d2 3c 0d 00 callq 7ac840 0.00 : 6d8b6e: 85 c0 test %eax,%eax 0.00 : 6d8b70: 75 1b jne 6d8b8d : { : val = get_float4_infinity(); : endptr = num + 4; 0.00 : 6d8b72: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.00 : 6d8b77: f2 0f 10 05 f9 2f 1e movsd 0x1e2ff9(%rip),%xmm0 # 8bbb78 <__func__.11658+0xf> 0.00 : 6d8b7e: 00 0.00 : 6d8b7f: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8b83: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8b88: e9 7d fd ff ff jmpq 6d890a : } : else if (pg_strncasecmp(num, "-inf", 4) == 0) 0.00 : 6d8b8d: ba 04 00 00 00 mov $0x4,%edx 0.00 : 6d8b92: be 04 b6 8b 00 mov $0x8bb604,%esi 0.00 : 6d8b97: 4c 89 e7 mov %r12,%rdi 0.00 : 6d8b9a: e8 a1 3c 0d 00 callq 7ac840 0.00 : 6d8b9f: 85 c0 test %eax,%eax 0.00 : 6d8ba1: 75 1b jne 6d8bbe : { : val = -get_float4_infinity(); : endptr = num + 4; 0.00 : 6d8ba3: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.00 : 6d8ba8: f2 0f 10 05 08 30 1e movsd 0x1e3008(%rip),%xmm0 # 8bbbb8 <__func__.11658+0x4f> 0.00 : 6d8baf: 00 0.00 : 6d8bb0: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6d8bb4: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 6d8bb9: e9 4c fd ff ff jmpq 6d890a : } : else if (save_errno == ERANGE) 0.00 : 6d8bbe: 83 fb 22 cmp $0x22,%ebx 0.00 : 6d8bc1: 75 67 jne 6d8c2a : * that are not zero, but are too close to zero to have full : * precision). We'd prefer not to throw error for that, so try to : * detect whether it's a "real" out-of-range condition by checking : * to see if the result is zero or huge. : */ : if (val == 0.0 || val >= HUGE_VAL || val <= -HUGE_VAL) 0.00 : 6d8bc3: f2 0f 10 45 c8 movsd -0x38(%rbp),%xmm0 0.00 : 6d8bc8: 66 0f 2e 05 08 97 0d ucomisd 0xd9708(%rip),%xmm0 # 7b22d8 <__func__.14992+0xcf> 0.00 : 6d8bcf: 00 0.00 : 6d8bd0: 7a 02 jp 6d8bd4 0.00 : 6d8bd2: 74 1e je 6d8bf2 0.00 : 6d8bd4: 66 0f 2e 05 dc 0f 1e ucomisd 0x1e0fdc(%rip),%xmm0 # 8b9bb8 <__func__.15194+0x16> 0.00 : 6d8bdb: 00 0.00 : 6d8bdc: 77 14 ja 6d8bf2 0.00 : 6d8bde: 66 0f 2e 05 ca 0f 1e ucomisd 0x1e0fca(%rip),%xmm0 # 8b9bb0 <__func__.15194+0xe> 0.00 : 6d8be5: 00 0.00 : 6d8be6: 0f 83 1e fd ff ff jae 6d890a 0.00 : 6d8bec: 0f 8a 18 fd ff ff jp 6d890a : ereport(ERROR, 0.00 : 6d8bf2: 45 31 c0 xor %r8d,%r8d 0.00 : 6d8bf5: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d8bfa: ba 1f 01 00 00 mov $0x11f,%edx 0.00 : 6d8bff: be 27 b4 8b 00 mov $0x8bb427,%esi 0.00 : 6d8c04: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6d8c09: e8 b2 1e 0a 00 callq 77aac0 0.00 : 6d8c0e: 84 c0 test %al,%al 0.00 : 6d8c10: 0f 84 5e fd ff ff je 6d8974 0.00 : 6d8c16: 4c 89 f6 mov %r14,%rsi 0.00 : 6d8c19: bf 80 b8 8b 00 mov $0x8bb880,%edi 0.00 : 6d8c1e: 31 c0 xor %eax,%eax 0.00 : 6d8c20: e8 7b 3c 0a 00 callq 77c8a0 0.00 : 6d8c25: e9 f4 fd ff ff jmpq 6d8a1e : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("\"%s\" is out of range for type real", : orig_num))); : } : else : ereport(ERROR, 0.00 : 6d8c2a: 45 31 c0 xor %r8d,%r8d 0.00 : 6d8c2d: b9 69 bb 8b 00 mov $0x8bbb69,%ecx 0.00 : 6d8c32: ba 25 01 00 00 mov $0x125,%edx 0.00 : 6d8c37: e9 21 fd ff ff jmpq 6d895d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 7.33 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2428 6.62 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2460 6.38 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2255 6.15 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2203 6.15 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2258 6.15 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2258 5.44 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2448 4.96 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2431 4.96 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2487 4.73 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2199 4.49 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2504 4.26 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2448 4.26 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2460 4.02 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2487 3.55 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2241 2.60 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2426 2.36 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2426 1.89 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2426 1.65 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2437 1.65 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2487 1.42 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2487 1.42 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2415 0.95 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2428 0.95 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2439 0.95 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2439 0.71 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2437 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e97e0 : : bool allow_sync, : BlockNumber start_blockno, : BlockNumber numblocks, : IndexBuildCallback callback, : void *callback_state) : { 0.00 : 4e97e0: 55 push %rbp 0.00 : 4e97e1: 48 89 e5 mov %rsp,%rbp 0.00 : 4e97e4: 41 57 push %r15 0.00 : 4e97e6: 41 56 push %r14 0.00 : 4e97e8: 45 89 c6 mov %r8d,%r14d 0.00 : 4e97eb: 41 55 push %r13 0.00 : 4e97ed: 41 54 push %r12 0.00 : 4e97ef: 45 89 cc mov %r9d,%r12d 0.00 : 4e97f2: 53 push %rbx 0.00 : 4e97f3: 89 cb mov %ecx,%ebx 0.00 : 4e97f5: 48 81 ec f8 03 00 00 sub $0x3f8,%rsp 0.00 : 4e97fc: 48 89 bd f8 fb ff ff mov %rdi,-0x408(%rbp) 0.00 : 4e9803: 48 89 b5 f0 fb ff ff mov %rsi,-0x410(%rbp) 0.00 : 4e980a: 48 89 95 e8 fb ff ff mov %rdx,-0x418(%rbp) : * sanity checks : */ : Assert(OidIsValid(indexRelation->rd_rel->relam)); : : /* Remember if it's a system catalog */ : is_system_catalog = IsSystemRelation(heapRelation); 0.00 : 4e9811: e8 3a 96 ff ff callq 4e2e50 0.00 : 4e9816: 88 85 07 fc ff ff mov %al,-0x3f9(%rbp) : : /* See whether we're verifying uniqueness/exclusion properties */ : checking_uniqueness = (indexInfo->ii_Unique || 0.00 : 4e981c: 48 8b 85 e8 fb ff ff mov -0x418(%rbp),%rax 0.00 : 4e9823: c6 85 3f fc ff ff 01 movb $0x1,-0x3c1(%rbp) 0.00 : 4e982a: 80 b8 80 00 00 00 00 cmpb $0x0,0x80(%rax) 0.00 : 4e9831: 75 13 jne 4e9846 0.00 : 4e9833: 48 8b 95 e8 fb ff ff mov -0x418(%rbp),%rdx 0.00 : 4e983a: 48 83 7a 68 00 cmpq $0x0,0x68(%rdx) 0.00 : 4e983f: 0f 95 85 3f fc ff ff setne -0x3c1(%rbp) : : /* : * Need an EState for evaluation of index expressions and partial-index : * predicates. Also a slot to hold the current tuple. : */ : estate = CreateExecutorState(); 0.00 : 4e9846: e8 d5 ba 0c 00 callq 5b5320 0.00 : 4e984b: 48 89 85 20 fc ff ff mov %rax,-0x3e0(%rbp) : econtext = GetPerTupleExprContext(estate); 0.00 : 4e9852: 48 8b 80 c8 00 00 00 mov 0xc8(%rax),%rax 0.00 : 4e9859: 48 85 c0 test %rax,%rax 0.00 : 4e985c: 48 89 85 28 fc ff ff mov %rax,-0x3d8(%rbp) 0.00 : 4e9863: 0f 84 b6 05 00 00 je 4e9e1f : slot = MakeSingleTupleTableSlot(RelationGetDescr(heapRelation)); 0.00 : 4e9869: 48 8b 95 f8 fb ff ff mov -0x408(%rbp),%rdx 0.00 : 4e9870: 48 8b 7a 38 mov 0x38(%rdx),%rdi 0.00 : 4e9874: e8 d7 ae 0c 00 callq 5b4750 : : /* Arrange for econtext's scan tuple to be the tuple under test */ : econtext->ecxt_scantuple = slot; 0.00 : 4e9879: 48 8b 95 28 fc ff ff mov -0x3d8(%rbp),%rdx : * Need an EState for evaluation of index expressions and partial-index : * predicates. Also a slot to hold the current tuple. : */ : estate = CreateExecutorState(); : econtext = GetPerTupleExprContext(estate); : slot = MakeSingleTupleTableSlot(RelationGetDescr(heapRelation)); 0.00 : 4e9880: 48 89 85 18 fc ff ff mov %rax,-0x3e8(%rbp) : : /* Arrange for econtext's scan tuple to be the tuple under test */ : econtext->ecxt_scantuple = slot; 0.00 : 4e9887: 48 89 42 08 mov %rax,0x8(%rdx) : : /* Set up execution state for predicate, if any. */ : predicate = (List *) 0.00 : 4e988b: 48 8b 85 e8 fb ff ff mov -0x418(%rbp),%rax 0.00 : 4e9892: 48 8b b5 20 fc ff ff mov -0x3e0(%rbp),%rsi 0.00 : 4e9899: 48 8b 78 58 mov 0x58(%rax),%rdi 0.00 : 4e989d: e8 ae 56 0c 00 callq 5aef50 : * SnapshotAny because we must retrieve all tuples and do our own time : * qual checks (because we have to index RECENTLY_DEAD tuples). In a : * concurrent build, or during bootstrap, we take a regular MVCC snapshot : * and index whatever's live according to that. : */ : if (IsBootstrapProcessingMode() || indexInfo->ii_Concurrent) 0.00 : 4e98a2: 8b 35 94 f2 67 00 mov 0x67f294(%rip),%esi # b68b3c : : /* Arrange for econtext's scan tuple to be the tuple under test */ : econtext->ecxt_scantuple = slot; : : /* Set up execution state for predicate, if any. */ : predicate = (List *) 0.00 : 4e98a8: 48 89 85 10 fc ff ff mov %rax,-0x3f0(%rbp) : * SnapshotAny because we must retrieve all tuples and do our own time : * qual checks (because we have to index RECENTLY_DEAD tuples). In a : * concurrent build, or during bootstrap, we take a regular MVCC snapshot : * and index whatever's live according to that. : */ : if (IsBootstrapProcessingMode() || indexInfo->ii_Concurrent) 0.00 : 4e98af: 85 f6 test %esi,%esi 0.00 : 4e98b1: 74 14 je 4e98c7 0.00 : 4e98b3: 48 8b 95 e8 fb ff ff mov -0x418(%rbp),%rdx 0.00 : 4e98ba: 80 ba 82 00 00 00 00 cmpb $0x0,0x82(%rdx) 0.00 : 4e98c1: 0f 84 99 04 00 00 je 4e9d60 : { : snapshot = RegisterSnapshot(GetTransactionSnapshot()); 0.00 : 4e98c7: e8 44 dd 2b 00 callq 7a7610 0.00 : 4e98cc: 48 89 c7 mov %rax,%rdi 0.00 : 4e98cf: e8 ac db 2b 00 callq 7a7480 0.00 : 4e98d4: c7 85 38 fc ff ff 00 movl $0x0,-0x3c8(%rbp) 0.00 : 4e98db: 00 00 00 0.00 : 4e98de: 48 89 85 30 fc ff ff mov %rax,-0x3d0(%rbp) : snapshot = SnapshotAny; : /* okay to ignore lazy VACUUMs here */ : OldestXmin = GetOldestXmin(heapRelation, true); : } : : scan = heap_beginscan_strat(heapRelation, /* relation */ 0.00 : 4e98e5: 48 8b b5 30 fc ff ff mov -0x3d0(%rbp),%rsi 0.00 : 4e98ec: 48 8b bd f8 fb ff ff mov -0x408(%rbp),%rdi 0.00 : 4e98f3: 44 0f be cb movsbl %bl,%r9d 0.00 : 4e98f7: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4e98fd: 31 c9 xor %ecx,%ecx 0.00 : 4e98ff: 31 d2 xor %edx,%edx : NULL, /* scan key */ : true, /* buffer access strategy OK */ : allow_sync); /* syncscan OK? */ : : /* set our endpoints */ : heap_setscanlimits(scan, start_blockno, numblocks); 0.00 : 4e9901: bb ff ff ff ff mov $0xffffffff,%ebx : snapshot = SnapshotAny; : /* okay to ignore lazy VACUUMs here */ : OldestXmin = GetOldestXmin(heapRelation, true); : } : : scan = heap_beginscan_strat(heapRelation, /* relation */ 0.00 : 4e9906: e8 e5 3f fb ff callq 49d8f0 : NULL, /* scan key */ : true, /* buffer access strategy OK */ : allow_sync); /* syncscan OK? */ : : /* set our endpoints */ : heap_setscanlimits(scan, start_blockno, numblocks); 0.00 : 4e990b: 44 89 e2 mov %r12d,%edx 0.00 : 4e990e: 44 89 f6 mov %r14d,%esi 0.00 : 4e9911: 48 89 c7 mov %rax,%rdi : snapshot = SnapshotAny; : /* okay to ignore lazy VACUUMs here */ : OldestXmin = GetOldestXmin(heapRelation, true); : } : : scan = heap_beginscan_strat(heapRelation, /* relation */ 0.00 : 4e9914: 49 89 c5 mov %rax,%r13 : NULL, /* scan key */ : true, /* buffer access strategy OK */ : allow_sync); /* syncscan OK? */ : : /* set our endpoints */ : heap_setscanlimits(scan, start_blockno, numblocks); 0.00 : 4e9917: e8 d4 a2 fa ff callq 493bf0 0.00 : 4e991c: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 4e9920: f2 0f 11 85 08 fc ff movsd %xmm0,-0x3f8(%rbp) 0.00 : 4e9927: ff : reltuples = 0; : : /* : * Scan all tuples in the base relation. : */ : while ((heapTuple = heap_getnext(scan, ForwardScanDirection)) != NULL) 0.00 : 4e9928: e9 61 01 00 00 jmpq 4e9a8e 0.00 : 4e992d: 0f 1f 00 nopl (%rax) : * : * Note the implied assumption that there is no more than one live : * tuple per HOT-chain --- else we could create more than one index : * entry pointing to the same root tuple. : */ : if (scan->rs_cblock != root_blkno) 0.00 : 4e9930: 45 8b 75 60 mov 0x60(%r13),%r14d 0.24 : 4e9934: 41 39 de cmp %ebx,%r14d 0.00 : 4e9937: 74 45 je 4e997e : { : Page page = BufferGetPage(scan->rs_cbuf); 0.00 : 4e9939: 41 8b 7d 64 mov 0x64(%r13),%edi 0.24 : 4e993d: 85 ff test %edi,%edi 0.00 : 4e993f: 0f 88 d3 02 00 00 js 4e9c18 0.00 : 4e9945: 8d 47 ff lea -0x1(%rdi),%eax 0.00 : 4e9948: 48 63 d8 movslq %eax,%rbx 0.00 : 4e994b: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 4e994f: 48 03 1d a2 61 6d 00 add 0x6d61a2(%rip),%rbx # bbfaf8 : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE); 0.47 : 4e9956: be 01 00 00 00 mov $0x1,%esi 0.00 : 4e995b: e8 b0 ad 18 00 callq 674710 : heap_get_root_tuples(page, root_offsets); 0.00 : 4e9960: 48 8d b5 40 fc ff ff lea -0x3c0(%rbp),%rsi 0.00 : 4e9967: 48 89 df mov %rbx,%rdi 0.00 : 4e996a: e8 e1 4f fb ff callq 49e950 : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); 0.00 : 4e996f: 41 8b 7d 64 mov 0x64(%r13),%edi 0.00 : 4e9973: 31 f6 xor %esi,%esi 0.00 : 4e9975: e8 96 ad 18 00 callq 674710 : : root_blkno = scan->rs_cblock; 0.00 : 4e997a: 45 8b 75 60 mov 0x60(%r13),%r14d : } : : if (snapshot == SnapshotAny) /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2241 3.55 : 4e997e: 48 81 bd 30 fc ff ff cmpq $0xb726a0,-0x3d0(%rbp) 0.00 : 4e9985: a0 26 b7 00 : } : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); : : if (!indexIt) : continue; 0.00 : 4e9989: bb 01 00 00 00 mov $0x1,%ebx : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); : : root_blkno = scan->rs_cblock; : } : : if (snapshot == SnapshotAny) 0.00 : 4e998e: 0f 84 04 02 00 00 je 4e9b98 : { : /* heap_getnext did the time qual check */ : tupleIsAlive = true; : } : : reltuples += 1; /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2426 2.60 : 4e9994: f2 0f 10 05 bc 57 2c movsd 0x2c57bc(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 4e999b: 00 : : MemoryContextReset(econtext->ecxt_per_tuple_memory); 0.24 : 4e999c: 48 8b 85 28 fc ff ff mov -0x3d8(%rbp),%rax : { : /* heap_getnext did the time qual check */ : tupleIsAlive = true; : } : : reltuples += 1; 2.36 : 4e99a3: f2 0f 58 85 08 fc ff addsd -0x3f8(%rbp),%xmm0 0.00 : 4e99aa: ff 1.89 : 4e99ab: f2 0f 11 85 08 fc ff movsd %xmm0,-0x3f8(%rbp) 0.00 : 4e99b2: ff : : MemoryContextReset(econtext->ecxt_per_tuple_memory); /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2428 7.33 : 4e99b3: 48 8b 78 28 mov 0x28(%rax),%rdi /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2428 0.95 : 4e99b7: e8 f4 ef 2a 00 callq 7989b0 : : /* Set up for predicate or expression evaluation */ : ExecStoreTuple(heapTuple, slot, InvalidBuffer, false); 0.00 : 4e99bc: 48 8b b5 18 fc ff ff mov -0x3e8(%rbp),%rsi 0.00 : 4e99c3: 31 c9 xor %ecx,%ecx /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2431 4.96 : 4e99c5: 31 d2 xor %edx,%edx 0.00 : 4e99c7: 4c 89 e7 mov %r12,%rdi 0.00 : 4e99ca: e8 b1 aa 0c 00 callq 5b4480 : : /* : * In a partial index, discard tuples that don't satisfy the : * predicate. : */ : if (predicate != NIL) /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2437 0.71 : 4e99cf: 48 83 bd 10 fc ff ff cmpq $0x0,-0x3f0(%rbp) 0.00 : 4e99d6: 00 1.65 : 4e99d7: 74 1d je 4e99f6 : { : if (!ExecQual(predicate, econtext, false)) /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2439 0.95 : 4e99d9: 48 8b b5 28 fc ff ff mov -0x3d8(%rbp),%rsi 0.00 : 4e99e0: 48 8b bd 10 fc ff ff mov -0x3f0(%rbp),%rdi 0.00 : 4e99e7: 31 d2 xor %edx,%edx 0.00 : 4e99e9: e8 22 35 0c 00 callq 5acf10 0.95 : 4e99ee: 84 c0 test %al,%al 0.00 : 4e99f0: 0f 84 95 00 00 00 je 4e9a8b : /* : * For the current heap tuple, extract all the attributes we use in : * this index, and note which are null. This also performs evaluation : * of any expressions needed. : */ : FormIndexDatum(indexInfo, /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2448 5.44 : 4e99f6: 48 8b 95 20 fc ff ff mov -0x3e0(%rbp),%rdx 0.47 : 4e99fd: 48 8b b5 18 fc ff ff mov -0x3e8(%rbp),%rsi 0.24 : 4e9a04: 4c 8d 45 90 lea -0x70(%rbp),%r8 0.00 : 4e9a08: 48 8b bd e8 fb ff ff mov -0x418(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2448 4.26 : 4e9a0f: 48 8d 8d 90 fe ff ff lea -0x170(%rbp),%rcx 0.00 : 4e9a16: e8 65 f8 ff ff callq 4e9280 : * You'd think we should go ahead and build the index tuple here, but : * some index AMs want to do further processing on the data first. So : * pass the values[] and isnull[] arrays, instead. : */ : : if (HeapTupleIsHeapOnly(heapTuple)) 0.24 : 4e9a1b: 49 8b 44 24 10 mov 0x10(%r12),%rax /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2460 4.26 : 4e9a20: 66 83 78 12 00 cmpw $0x0,0x12(%rax) /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2460 6.62 : 4e9a25: 0f 89 c5 01 00 00 jns 4e9bf0 : * src/backend/access/heap/README.HOT for discussion. : */ : HeapTupleData rootTuple; : OffsetNumber offnum; : : rootTuple = *heapTuple; 0.00 : 4e9a2b: 49 8b 04 24 mov (%r12),%rax 0.00 : 4e9a2f: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 4e9a33: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 4e9a38: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 4e9a3c: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 4e9a41: 48 89 45 c0 mov %rax,-0x40(%rbp) : offnum = ItemPointerGetOffsetNumber(&heapTuple->t_self); : : if (!OffsetNumberIsValid(root_offsets[offnum - 1])) 0.00 : 4e9a45: 45 0f b7 7c 24 08 movzwl 0x8(%r12),%r15d 0.00 : 4e9a4b: 41 8d 47 ff lea -0x1(%r15),%eax 0.00 : 4e9a4f: 48 98 cltq 0.00 : 4e9a51: 0f b7 94 45 40 fc ff movzwl -0x3c0(%rbp,%rax,2),%edx 0.00 : 4e9a58: ff 0.00 : 4e9a59: 8d 42 ff lea -0x1(%rdx),%eax 0.00 : 4e9a5c: 66 3d ff 07 cmp $0x7ff,%ax 0.00 : 4e9a60: 0f 87 d1 03 00 00 ja 4e9e37 : elog(ERROR, "failed to find parent tuple for heap-only tuple at (%u,%u) in table \"%s\"", : ItemPointerGetBlockNumber(&heapTuple->t_self), : offnum, RelationGetRelationName(heapRelation)); : : ItemPointerSetOffsetNumber(&rootTuple.t_self, 0.00 : 4e9a66: 66 89 55 b8 mov %dx,-0x48(%rbp) : root_offsets[offnum - 1]); : : /* Call the AM's callback routine to process the tuple */ : callback(indexRelation, &rootTuple, values, isnull, tupleIsAlive, 0.00 : 4e9a6a: 4c 8b 4d 18 mov 0x18(%rbp),%r9 0.00 : 4e9a6e: 44 0f be c3 movsbl %bl,%r8d 0.00 : 4e9a72: 48 8d 4d 90 lea -0x70(%rbp),%rcx 0.00 : 4e9a76: 48 8d 95 90 fe ff ff lea -0x170(%rbp),%rdx 0.00 : 4e9a7d: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 4e9a81: 48 8b bd f0 fb ff ff mov -0x410(%rbp),%rdi 0.00 : 4e9a88: ff 55 10 callq *0x10(%rbp) : callback_state); : } : else : { : /* Call the AM's callback routine to process the tuple */ : callback(indexRelation, heapTuple, values, isnull, tupleIsAlive, /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2487 4.02 : 4e9a8b: 44 89 f3 mov %r14d,%ebx : reltuples = 0; : : /* : * Scan all tuples in the base relation. : */ : while ((heapTuple = heap_getnext(scan, ForwardScanDirection)) != NULL) 0.00 : 4e9a8e: be 01 00 00 00 mov $0x1,%esi 0.00 : 4e9a93: 4c 89 ef mov %r13,%rdi 0.00 : 4e9a96: e8 f5 d3 fa ff callq 496e90 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2199 4.73 : 4e9a9b: 48 85 c0 test %rax,%rax 0.47 : 4e9a9e: 49 89 c4 mov %rax,%r12 0.00 : 4e9aa1: 0f 84 01 03 00 00 je 4e9da8 : { : bool tupleIsAlive; : : CHECK_FOR_INTERRUPTS(); 0.00 : 4e9aa7: 0f b6 05 e2 05 6d 00 movzbl 0x6d05e2(%rip),%eax # bba090 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2203 6.15 : 4e9aae: 84 c0 test %al,%al 0.00 : 4e9ab0: 0f 84 7a fe ff ff je 4e9930 0.00 : 4e9ab6: e8 e5 27 1b 00 callq 69c2a0 0.00 : 4e9abb: e9 70 fe ff ff jmpq 4e9930 : : /* : * As with INSERT_IN_PROGRESS case, this is unexpected : * unless it's our own deletion or a system catalog. : */ : xwait = HeapTupleHeaderGetUpdateXid(heapTuple->t_data); 0.00 : 4e9ac0: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 4e9ac5: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 4e9ac9: 89 d0 mov %edx,%eax 0.00 : 4e9acb: 25 00 18 00 00 and $0x1800,%eax 0.00 : 4e9ad0: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 4e9ad5: 0f 84 b5 02 00 00 je 4e9d90 0.00 : 4e9adb: 8b 5f 04 mov 0x4(%rdi),%ebx : if (!TransactionIdIsCurrentTransactionId(xwait)) 0.00 : 4e9ade: 89 df mov %ebx,%edi 0.00 : 4e9ae0: e8 bb a9 fd ff callq 4c44a0 0.00 : 4e9ae5: 84 c0 test %al,%al 0.00 : 4e9ae7: 0f 85 d8 01 00 00 jne 4e9cc5 : { : if (!is_system_catalog) 0.00 : 4e9aed: 80 bd 07 fc ff ff 00 cmpb $0x0,-0x3f9(%rbp) 0.00 : 4e9af4: 75 30 jne 4e9b26 : elog(WARNING, "concurrent delete in progress within table \"%s\"", 0.00 : 4e9af6: ba 60 24 7c 00 mov $0x7c2460,%edx 0.00 : 4e9afb: be 2d 09 00 00 mov $0x92d,%esi 0.00 : 4e9b00: bf ca 1d 7c 00 mov $0x7c1dca,%edi 0.00 : 4e9b05: e8 16 19 29 00 callq 77b420 0.00 : 4e9b0a: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax 0.00 : 4e9b11: be 40 1f 7c 00 mov $0x7c1f40,%esi 0.00 : 4e9b16: bf 13 00 00 00 mov $0x13,%edi 0.00 : 4e9b1b: 48 8b 50 30 mov 0x30(%rax),%rdx 0.00 : 4e9b1f: 31 c0 xor %eax,%eax 0.00 : 4e9b21: e8 0a 17 29 00 callq 77b230 : * could abort, possibly leaving this tuple as live : * after all, in which case it has to be indexed. The : * only way to know what to do is to wait for the : * deleting transaction to finish and check again. : */ : if (checking_uniqueness || 0.00 : 4e9b26: 80 bd 3f fc ff ff 00 cmpb $0x0,-0x3c1(%rbp) 0.00 : 4e9b2d: 75 2c jne 4e9b5b 0.00 : 4e9b2f: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 4e9b34: f6 40 13 40 testb $0x40,0x13(%rax) 0.00 : 4e9b38: 0f 84 dd 01 00 00 je 4e9d1b 0.00 : 4e9b3e: 0f b7 40 14 movzwl 0x14(%rax),%eax 0.00 : 4e9b42: f6 c4 08 test $0x8,%ah 0.00 : 4e9b45: 0f 85 d0 01 00 00 jne 4e9d1b 0.00 : 4e9b4b: 25 00 03 00 00 and $0x300,%eax 0.00 : 4e9b50: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 4e9b55: 0f 84 c0 01 00 00 je 4e9d1b : HeapTupleIsHotUpdated(heapTuple)) : { : /* : * Must drop the lock on the buffer before we wait : */ : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); 0.00 : 4e9b5b: 41 8b 7d 64 mov 0x64(%r13),%edi 0.00 : 4e9b5f: 31 f6 xor %esi,%esi 0.00 : 4e9b61: e8 aa ab 18 00 callq 674710 : XactLockTableWait(xwait, heapRelation, 0.00 : 4e9b66: 49 8b 54 24 10 mov 0x10(%r12),%rdx 0.00 : 4e9b6b: 48 8b b5 f8 fb ff ff mov -0x408(%rbp),%rsi 0.00 : 4e9b72: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 4e9b77: 89 df mov %ebx,%edi 0.00 : 4e9b79: 48 83 c2 0c add $0xc,%rdx 0.00 : 4e9b7d: e8 1e e6 19 00 callq 6881a0 : &heapTuple->t_data->t_ctid, : XLTW_InsertIndexUnique); : CHECK_FOR_INTERRUPTS(); 0.00 : 4e9b82: 0f b6 05 07 05 6d 00 movzbl 0x6d0507(%rip),%eax # bba090 0.00 : 4e9b89: 84 c0 test %al,%al 0.00 : 4e9b8b: 74 0b je 4e9b98 0.00 : 4e9b8d: e8 0e 27 1b 00 callq 69c2a0 0.00 : 4e9b92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * We could possibly get away with not locking the buffer here, : * since caller should hold ShareLock on the relation, but let's : * be conservative about it. (This remark is still correct even : * with HOT-pruning: our pin on the buffer prevents pruning.) : */ : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE); /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2255 6.38 : 4e9b98: 41 8b 7d 64 mov 0x64(%r13),%edi 0.00 : 4e9b9c: be 01 00 00 00 mov $0x1,%esi 0.00 : 4e9ba1: e8 6a ab 18 00 callq 674710 : : switch (HeapTupleSatisfiesVacuum(heapTuple, OldestXmin, : scan->rs_cbuf)) 0.00 : 4e9ba6: 41 8b 55 64 mov 0x64(%r13),%edx 0.24 : 4e9baa: 8b b5 38 fc ff ff mov -0x3c8(%rbp),%esi 0.47 : 4e9bb0: 4c 89 e7 mov %r12,%rdi /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2258 6.15 : 4e9bb3: e8 68 af 2b 00 callq 7a4b20 0.24 : 4e9bb8: 83 f8 04 cmp $0x4,%eax 0.00 : 4e9bbb: 76 73 jbe 4e9c30 : } : /* In any case, exclude the tuple from unique-checking */ : tupleIsAlive = false; : break; : default: : elog(ERROR, "unexpected HeapTupleSatisfiesVacuum result"); 0.00 : 4e9bbd: ba 60 24 7c 00 mov $0x7c2460,%edx 0.00 : 4e9bc2: be 6a 09 00 00 mov $0x96a,%esi 0.00 : 4e9bc7: bf ca 1d 7c 00 mov $0x7c1dca,%edi 0.00 : 4e9bcc: e8 4f 18 29 00 callq 77b420 0.00 : 4e9bd1: be 68 30 7b 00 mov $0x7b3068,%esi 0.00 : 4e9bd6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4e9bdb: 31 c0 xor %eax,%eax 0.00 : 4e9bdd: e8 4e 16 29 00 callq 77b230 0.00 : 4e9be2: e8 e9 f8 f7 ff callq 4694d0 0.00 : 4e9be7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4e9bee: 00 00 : callback_state); : } : else : { : /* Call the AM's callback routine to process the tuple */ : callback(indexRelation, heapTuple, values, isnull, tupleIsAlive, /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2487 4.96 : 4e9bf0: 4c 8b 4d 18 mov 0x18(%rbp),%r9 0.00 : 4e9bf4: 44 0f be c3 movsbl %bl,%r8d 0.00 : 4e9bf8: 48 8d 4d 90 lea -0x70(%rbp),%rcx 1.65 : 4e9bfc: 48 8d 95 90 fe ff ff lea -0x170(%rbp),%rdx 1.42 : 4e9c03: 4c 89 e6 mov %r12,%rsi 0.24 : 4e9c06: 48 8b bd f0 fb ff ff mov -0x410(%rbp),%rdi 0.00 : 4e9c0d: ff 55 10 callq *0x10(%rbp) 0.00 : 4e9c10: e9 76 fe ff ff jmpq 4e9a8b 0.00 : 4e9c15: 0f 1f 00 nopl (%rax) : * tuple per HOT-chain --- else we could create more than one index : * entry pointing to the same root tuple. : */ : if (scan->rs_cblock != root_blkno) : { : Page page = BufferGetPage(scan->rs_cbuf); 0.00 : 4e9c18: 89 f8 mov %edi,%eax 0.00 : 4e9c1a: 48 8b 15 f7 34 69 00 mov 0x6934f7(%rip),%rdx # b7d118 0.00 : 4e9c21: f7 d0 not %eax 0.00 : 4e9c23: 48 98 cltq 0.00 : 4e9c25: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 4e9c29: e9 28 fd ff ff jmpq 4e9956 0.00 : 4e9c2e: 66 90 xchg %ax,%ax : * with HOT-pruning: our pin on the buffer prevents pruning.) : */ : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE); : : switch (HeapTupleSatisfiesVacuum(heapTuple, OldestXmin, : scan->rs_cbuf)) /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2258 6.15 : 4e9c30: 89 c0 mov %eax,%eax 0.24 : 4e9c32: ff 24 c5 80 23 7c 00 jmpq *0x7c2380(,%rax,8) 0.00 : 4e9c39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * in our own transaction. However, it can happen in : * system catalogs, since we tend to release write lock : * before commit there. Give a warning if neither case : * applies. : */ : xwait = HeapTupleHeaderGetXmin(heapTuple->t_data); 0.00 : 4e9c40: 49 8b 54 24 10 mov 0x10(%r12),%rdx 0.00 : 4e9c45: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 4e9c4a: 0f b7 42 14 movzwl 0x14(%rdx),%eax 0.00 : 4e9c4e: 25 00 03 00 00 and $0x300,%eax 0.00 : 4e9c53: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 4e9c58: 74 02 je 4e9c5c 0.00 : 4e9c5a: 8b 1a mov (%rdx),%ebx : if (!TransactionIdIsCurrentTransactionId(xwait)) 0.00 : 4e9c5c: 89 df mov %ebx,%edi 0.00 : 4e9c5e: e8 3d a8 fd ff callq 4c44a0 0.00 : 4e9c63: 84 c0 test %al,%al 0.00 : 4e9c65: 75 49 jne 4e9cb0 : { : if (!is_system_catalog) 0.00 : 4e9c67: 80 bd 07 fc ff ff 00 cmpb $0x0,-0x3f9(%rbp) 0.00 : 4e9c6e: 75 30 jne 4e9ca0 : elog(WARNING, "concurrent insert in progress within table \"%s\"", 0.00 : 4e9c70: ba 60 24 7c 00 mov $0x7c2460,%edx 0.00 : 4e9c75: be 05 09 00 00 mov $0x905,%esi 0.00 : 4e9c7a: bf ca 1d 7c 00 mov $0x7c1dca,%edi 0.00 : 4e9c7f: e8 9c 17 29 00 callq 77b420 0.00 : 4e9c84: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax 0.00 : 4e9c8b: be 10 1f 7c 00 mov $0x7c1f10,%esi 0.00 : 4e9c90: bf 13 00 00 00 mov $0x13,%edi 0.00 : 4e9c95: 48 8b 50 30 mov 0x30(%rax),%rdx 0.00 : 4e9c99: 31 c0 xor %eax,%eax 0.00 : 4e9c9b: e8 90 15 29 00 callq 77b230 : * If we are performing uniqueness checks, indexing : * such a tuple could lead to a bogus uniqueness : * failure. In that case we wait for the inserting : * transaction to finish and check again. : */ : if (checking_uniqueness) 0.00 : 4e9ca0: 80 bd 3f fc ff ff 00 cmpb $0x0,-0x3c1(%rbp) 0.00 : 4e9ca7: 0f 85 ae fe ff ff jne 4e9b5b 0.00 : 4e9cad: 0f 1f 00 nopl (%rax) : : FreeExecutorState(estate); : : /* These may have been pointing to the now-gone estate */ : indexInfo->ii_ExpressionsState = NIL; : indexInfo->ii_PredicateState = NIL; /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2504 4.49 : 4e9cb0: bb 01 00 00 00 mov $0x1,%ebx : elog(ERROR, "unexpected HeapTupleSatisfiesVacuum result"); : indexIt = tupleIsAlive = false; /* keep compiler quiet */ : break; : } : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); 0.00 : 4e9cb5: 41 8b 7d 64 mov 0x64(%r13),%edi 0.00 : 4e9cb9: 31 f6 xor %esi,%esi 0.00 : 4e9cbb: e8 50 aa 18 00 callq 674710 /home/Computational/mark/src/postgres-andres/src/backend/catalog/index.c:2415 1.42 : 4e9cc0: e9 cf fc ff ff jmpq 4e9994 : * Otherwise index it but don't check for uniqueness, : * the same as a RECENTLY_DEAD tuple. : */ : indexIt = true; : } : else if (HeapTupleIsHotUpdated(heapTuple)) 0.00 : 4e9cc5: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 4e9cca: f6 40 13 40 testb $0x40,0x13(%rax) 0.00 : 4e9cce: 74 4b je 4e9d1b 0.00 : 4e9cd0: 0f b7 40 14 movzwl 0x14(%rax),%eax 0.00 : 4e9cd4: f6 c4 08 test $0x8,%ah 0.00 : 4e9cd7: 75 42 jne 4e9d1b 0.00 : 4e9cd9: 25 00 03 00 00 and $0x300,%eax 0.00 : 4e9cde: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 4e9ce3: 74 36 je 4e9d1b : * index contents don't matter), so treat the same as : * RECENTLY_DEAD HOT-updated tuples. : */ : indexIt = false; : /* mark the index as unsafe for old snapshots */ : indexInfo->ii_BrokenHotChain = true; 0.00 : 4e9ce5: 48 8b 95 e8 fb ff ff mov -0x418(%rbp),%rdx 0.00 : 4e9cec: c6 82 83 00 00 00 01 movb $0x1,0x83(%rdx) 0.00 : 4e9cf3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : elog(ERROR, "unexpected HeapTupleSatisfiesVacuum result"); : indexIt = tupleIsAlive = false; /* keep compiler quiet */ : break; : } : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); 0.00 : 4e9cf8: 41 8b 7d 64 mov 0x64(%r13),%edi 0.00 : 4e9cfc: 31 f6 xor %esi,%esi 0.00 : 4e9cfe: e8 0d aa 18 00 callq 674710 : : if (!indexIt) : continue; 0.00 : 4e9d03: e9 83 fd ff ff jmpq 4e9a8b 0.00 : 4e9d08: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4e9d0f: 00 : * However, if it was HOT-updated then we must only index : * the live tuple at the end of the HOT-chain. Since this : * breaks semantics for pre-existing snapshots, mark the : * index as unusable for them. : */ : if (HeapTupleIsHotUpdated(heapTuple)) 0.00 : 4e9d10: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 4e9d15: f6 40 13 40 testb $0x40,0x13(%rax) 0.00 : 4e9d19: 75 0d jne 4e9d28 : : FreeExecutorState(estate); : : /* These may have been pointing to the now-gone estate */ : indexInfo->ii_ExpressionsState = NIL; : indexInfo->ii_PredicateState = NIL; 0.00 : 4e9d1b: 31 db xor %ebx,%ebx 0.00 : 4e9d1d: 0f 1f 00 nopl (%rax) 0.00 : 4e9d20: eb 93 jmp 4e9cb5 0.00 : 4e9d22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * However, if it was HOT-updated then we must only index : * the live tuple at the end of the HOT-chain. Since this : * breaks semantics for pre-existing snapshots, mark the : * index as unusable for them. : */ : if (HeapTupleIsHotUpdated(heapTuple)) 0.00 : 4e9d28: 0f b7 40 14 movzwl 0x14(%rax),%eax 0.00 : 4e9d2c: f6 c4 08 test $0x8,%ah 0.00 : 4e9d2f: 75 ea jne 4e9d1b 0.00 : 4e9d31: 25 00 03 00 00 and $0x300,%eax 0.00 : 4e9d36: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 4e9d3b: 74 de je 4e9d1b : { : indexIt = false; : /* mark the index as unsafe for old snapshots */ : indexInfo->ii_BrokenHotChain = true; 0.00 : 4e9d3d: 48 8b 85 e8 fb ff ff mov -0x418(%rbp),%rax : elog(ERROR, "unexpected HeapTupleSatisfiesVacuum result"); : indexIt = tupleIsAlive = false; /* keep compiler quiet */ : break; : } : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); 0.00 : 4e9d44: 31 f6 xor %esi,%esi : */ : if (HeapTupleIsHotUpdated(heapTuple)) : { : indexIt = false; : /* mark the index as unsafe for old snapshots */ : indexInfo->ii_BrokenHotChain = true; 0.00 : 4e9d46: c6 80 83 00 00 00 01 movb $0x1,0x83(%rax) : elog(ERROR, "unexpected HeapTupleSatisfiesVacuum result"); : indexIt = tupleIsAlive = false; /* keep compiler quiet */ : break; : } : : LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); 0.00 : 4e9d4d: 41 8b 7d 64 mov 0x64(%r13),%edi 0.00 : 4e9d51: e8 ba a9 18 00 callq 674710 0.00 : 4e9d56: e9 30 fd ff ff jmpq 4e9a8b 0.00 : 4e9d5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : else : { : snapshot = SnapshotAny; : /* okay to ignore lazy VACUUMs here */ : OldestXmin = GetOldestXmin(heapRelation, true); 0.00 : 4e9d60: 48 8b bd f8 fb ff ff mov -0x408(%rbp),%rdi 0.00 : 4e9d67: be 01 00 00 00 mov $0x1,%esi 0.00 : 4e9d6c: e8 2f 7c 19 00 callq 6819a0 0.00 : 4e9d71: 48 c7 85 30 fc ff ff movq $0xb726a0,-0x3d0(%rbp) 0.00 : 4e9d78: a0 26 b7 00 0.00 : 4e9d7c: 89 85 38 fc ff ff mov %eax,-0x3c8(%rbp) 0.00 : 4e9d82: e9 5e fb ff ff jmpq 4e98e5 0.00 : 4e9d87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4e9d8e: 00 00 : : /* : * As with INSERT_IN_PROGRESS case, this is unexpected : * unless it's our own deletion or a system catalog. : */ : xwait = HeapTupleHeaderGetUpdateXid(heapTuple->t_data); 0.00 : 4e9d90: 84 d2 test %dl,%dl 0.00 : 4e9d92: 0f 88 43 fd ff ff js 4e9adb 0.00 : 4e9d98: e8 83 d3 fa ff callq 497120 0.00 : 4e9d9d: 89 c3 mov %eax,%ebx 0.00 : 4e9d9f: 90 nop 0.00 : 4e9da0: e9 39 fd ff ff jmpq 4e9ade 0.00 : 4e9da5: 0f 1f 00 nopl (%rax) : callback(indexRelation, heapTuple, values, isnull, tupleIsAlive, : callback_state); : } : } : : heap_endscan(scan); 0.00 : 4e9da8: 4c 89 ef mov %r13,%rdi 0.00 : 4e9dab: e8 c0 37 fb ff callq 49d570 : : /* we can now forget our snapshot, if set */ : if (IsBootstrapProcessingMode() || indexInfo->ii_Concurrent) 0.00 : 4e9db0: 8b 0d 86 ed 67 00 mov 0x67ed86(%rip),%ecx # b68b3c 0.00 : 4e9db6: 85 c9 test %ecx,%ecx 0.00 : 4e9db8: 74 10 je 4e9dca 0.00 : 4e9dba: 48 8b 95 e8 fb ff ff mov -0x418(%rbp),%rdx 0.00 : 4e9dc1: 80 ba 82 00 00 00 00 cmpb $0x0,0x82(%rdx) 0.00 : 4e9dc8: 74 0c je 4e9dd6 : UnregisterSnapshot(snapshot); 0.00 : 4e9dca: 48 8b bd 30 fc ff ff mov -0x3d0(%rbp),%rdi 0.00 : 4e9dd1: e8 1a d6 2b 00 callq 7a73f0 : : ExecDropSingleTupleTableSlot(slot); 0.00 : 4e9dd6: 48 8b bd 18 fc ff ff mov -0x3e8(%rbp),%rdi 0.00 : 4e9ddd: e8 7e a5 0c 00 callq 5b4360 : : FreeExecutorState(estate); 0.00 : 4e9de2: 48 8b bd 20 fc ff ff mov -0x3e0(%rbp),%rdi 0.00 : 4e9de9: e8 22 b4 0c 00 callq 5b5210 : : /* These may have been pointing to the now-gone estate */ : indexInfo->ii_ExpressionsState = NIL; 0.00 : 4e9dee: 48 8b 85 e8 fb ff ff mov -0x418(%rbp),%rax 0.00 : 4e9df5: 48 c7 40 50 00 00 00 movq $0x0,0x50(%rax) 0.00 : 4e9dfc: 00 : indexInfo->ii_PredicateState = NIL; 0.00 : 4e9dfd: 48 c7 40 60 00 00 00 movq $0x0,0x60(%rax) 0.00 : 4e9e04: 00 : : return reltuples; : } 0.00 : 4e9e05: f2 0f 10 85 08 fc ff movsd -0x3f8(%rbp),%xmm0 0.00 : 4e9e0c: ff 0.00 : 4e9e0d: 48 81 c4 f8 03 00 00 add $0x3f8,%rsp 0.00 : 4e9e14: 5b pop %rbx 0.00 : 4e9e15: 41 5c pop %r12 0.00 : 4e9e17: 41 5d pop %r13 0.00 : 4e9e19: 41 5e pop %r14 0.00 : 4e9e1b: 41 5f pop %r15 0.00 : 4e9e1d: c9 leaveq 0.00 : 4e9e1e: c3 retq : /* : * Need an EState for evaluation of index expressions and partial-index : * predicates. Also a slot to hold the current tuple. : */ : estate = CreateExecutorState(); : econtext = GetPerTupleExprContext(estate); 0.00 : 4e9e1f: 48 8b bd 20 fc ff ff mov -0x3e0(%rbp),%rdi 0.00 : 4e9e26: e8 85 b7 0c 00 callq 5b55b0 0.00 : 4e9e2b: 48 89 85 28 fc ff ff mov %rax,-0x3d8(%rbp) 0.00 : 4e9e32: e9 32 fa ff ff jmpq 4e9869 : : rootTuple = *heapTuple; : offnum = ItemPointerGetOffsetNumber(&heapTuple->t_self); : : if (!OffsetNumberIsValid(root_offsets[offnum - 1])) : elog(ERROR, "failed to find parent tuple for heap-only tuple at (%u,%u) in table \"%s\"", 0.00 : 4e9e37: ba 60 24 7c 00 mov $0x7c2460,%edx 0.00 : 4e9e3c: be ab 09 00 00 mov $0x9ab,%esi 0.00 : 4e9e41: bf ca 1d 7c 00 mov $0x7c1dca,%edi 0.00 : 4e9e46: e8 d5 15 29 00 callq 77b420 0.00 : 4e9e4b: 41 0f b7 54 24 04 movzwl 0x4(%r12),%edx 0.00 : 4e9e51: 41 0f b7 44 24 06 movzwl 0x6(%r12),%eax 0.00 : 4e9e57: 44 89 f9 mov %r15d,%ecx 0.00 : 4e9e5a: be c0 1e 7c 00 mov $0x7c1ec0,%esi 0.00 : 4e9e5f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4e9e64: c1 e2 10 shl $0x10,%edx 0.00 : 4e9e67: 09 c2 or %eax,%edx 0.00 : 4e9e69: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax 0.00 : 4e9e70: 4c 8b 40 30 mov 0x30(%rax),%r8 0.00 : 4e9e74: 31 c0 xor %eax,%eax 0.00 : 4e9e76: e8 b5 13 29 00 callq 77b230 0.00 : 4e9e7b: e8 50 f6 f7 ff callq 4694d0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 9.41 ??:0 7.18 ??:0 6.93 ??:0 5.20 ??:0 5.20 ??:0 4.95 ??:0 4.70 ??:0 4.46 ??:0 4.21 ??:0 3.96 ??:0 3.71 ??:0 3.71 ??:0 2.97 ??:0 2.97 ??:0 2.48 ??:0 2.23 ??:0 2.23 ??:0 1.98 ??:0 1.98 ??:0 1.73 ??:0 1.73 ??:0 1.73 ??:0 1.73 ??:0 1.49 ??:0 1.49 ??:0 1.24 ??:0 0.99 ??:0 0.99 ??:0 0.99 ??:0 0.74 ??:0 0.74 ??:0 0.74 ??:0 0.74 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000039d00 : ??:0 1.73 : 39d00: 41 57 push %r15 4.21 : 39d02: 49 89 d7 mov %rdx,%r15 0.25 : 39d05: 41 56 push %r14 2.23 : 39d07: 49 89 ce mov %rcx,%r14 0.50 : 39d0a: 41 55 push %r13 2.97 : 39d0c: 41 54 push %r12 1.98 : 39d0e: 41 89 f4 mov %esi,%r12d 0.74 : 39d11: 55 push %rbp 3.71 : 39d12: 48 89 fd mov %rdi,%rbp 0.00 : 39d15: 53 push %rbx 2.48 : 39d16: 48 83 ec 18 sub $0x18,%rsp 0.74 : 39d1a: 85 f6 test %esi,%esi 0.00 : 39d1c: 4c 89 44 24 10 mov %r8,0x10(%rsp) ??:0 5.20 : 39d21: 4c 8b 6c 24 58 mov 0x58(%rsp),%r13 0.00 : 39d26: 4c 8b 44 24 50 mov 0x50(%rsp),%r8 0.00 : 39d2b: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : 39d32: 0f 8e 52 02 00 00 jle 39f8a ??:0 4.70 : 39d38: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 39d3c: 31 f6 xor %esi,%esi 0.00 : 39d3e: 31 db xor %ebx,%ebx 0.74 : 39d40: 48 89 44 24 08 mov %rax,0x8(%rsp) 3.71 : 39d45: 0f 1f 00 nopl (%rax) 0.00 : 39d48: 0f b6 4d 00 movzbl 0x0(%rbp),%ecx 1.24 : 39d4c: 8d 41 d0 lea -0x30(%rcx),%eax 2.97 : 39d4f: 3c 09 cmp $0x9,%al 0.00 : 39d51: 76 16 jbe 39d69 1.49 : 39d53: 4d 85 ed test %r13,%r13 0.00 : 39d56: 74 0a je 39d62 0.00 : 39d58: 41 3a 4d 00 cmp 0x0(%r13),%cl 0.00 : 39d5c: 0f 84 a6 00 00 00 je 39e08 0.00 : 39d62: 4c 01 c5 add %r8,%rbp 0.00 : 39d65: 0f b6 4d 00 movzbl 0x0(%rbp),%ecx 4.95 : 39d69: 48 8d 14 9b lea (%rbx,%rbx,4),%rdx 0.99 : 39d6d: 41 83 ec 01 sub $0x1,%r12d 0.00 : 39d71: 48 0f be c1 movsbq %cl,%rax 0.25 : 39d75: 48 83 c5 01 add $0x1,%rbp ??:0 6.93 : 39d79: 83 c6 01 add $0x1,%esi 0.50 : 39d7c: 45 85 e4 test %r12d,%r12d ??:0 0.74 : 39d7f: 48 8d 5c 50 d0 lea -0x30(%rax,%rdx,2),%rbx ??:0 5.20 : 39d84: 7e 2a jle 39db0 ??:0 1.98 : 39d86: 83 fe 13 cmp $0x13,%esi 0.00 : 39d89: 75 bd jne 39d48 0.00 : 39d8b: 49 8b 16 mov (%r14),%rdx 0.00 : 39d8e: 48 85 d2 test %rdx,%rdx 0.00 : 39d91: 0f 85 b9 00 00 00 jne 39e50 0.00 : 39d97: 49 89 1f mov %rbx,(%r15) 0.00 : 39d9a: 40 30 f6 xor %sil,%sil 0.00 : 39d9d: 49 c7 06 01 00 00 00 movq $0x1,(%r14) 0.00 : 39da4: 31 db xor %ebx,%ebx 0.00 : 39da6: eb a0 jmp 39d48 0.00 : 39da8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 39daf: 00 1.73 : 39db0: 48 8b 44 24 10 mov 0x10(%rsp),%rax 1.73 : 39db5: 48 8b 38 mov (%rax),%rdi ??:0 7.18 : 39db8: 48 85 ff test %rdi,%rdi 0.00 : 39dbb: 7e 12 jle 39dcf 0.00 : 39dbd: b8 13 00 00 00 mov $0x13,%eax 0.00 : 39dc2: 29 f0 sub %esi,%eax 0.00 : 39dc4: 48 98 cltq 0.00 : 39dc6: 48 39 c7 cmp %rax,%rdi 0.00 : 39dc9: 0f 8e 11 01 00 00 jle 39ee0 ??:0 2.23 : 39dcf: 48 8b 05 a2 7f 33 00 mov 0x337fa2(%rip),%rax # 371d78 <_DYNAMIC+0x218> 0.00 : 39dd6: 48 63 d6 movslq %esi,%rdx 0.00 : 39dd9: 48 8b 0c d0 mov (%rax,%rdx,8),%rcx ??:0 9.41 : 39ddd: 49 8b 16 mov (%r14),%rdx 0.00 : 39de0: 48 85 d2 test %rdx,%rdx 0.00 : 39de3: 0f 85 25 01 00 00 jne 39f0e 0.00 : 39de9: 49 89 1f mov %rbx,(%r15) 0.00 : 39dec: 49 c7 06 01 00 00 00 movq $0x1,(%r14) ??:0 4.46 : 39df3: 48 83 c4 18 add $0x18,%rsp 0.50 : 39df7: 48 89 e8 mov %rbp,%rax 0.00 : 39dfa: 5b pop %rbx 0.50 : 39dfb: 5d pop %rbp 3.96 : 39dfc: 41 5c pop %r12 1.73 : 39dfe: 41 5d pop %r13 0.99 : 39e00: 41 5e pop %r14 1.49 : 39e02: 41 5f pop %r15 0.99 : 39e04: c3 retq 0.00 : 39e05: 0f 1f 00 nopl (%rax) 0.00 : 39e08: 41 0f b6 45 01 movzbl 0x1(%r13),%eax 0.00 : 39e0d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 39e12: 84 c0 test %al,%al 0.00 : 39e14: 74 2d je 39e43 0.00 : 39e16: 3a 45 01 cmp 0x1(%rbp),%al 0.00 : 39e19: ba 02 00 00 00 mov $0x2,%edx 0.00 : 39e1e: 74 19 je 39e39 0.00 : 39e20: e9 3d ff ff ff jmpq 39d62 0.00 : 39e25: 0f 1f 00 nopl (%rax) 0.00 : 39e28: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 39e2d: 48 83 c2 01 add $0x1,%rdx 0.00 : 39e31: 38 c1 cmp %al,%cl 0.00 : 39e33: 0f 85 29 ff ff ff jne 39d62 0.00 : 39e39: 41 0f b6 4c 15 00 movzbl 0x0(%r13,%rdx,1),%ecx 0.00 : 39e3f: 84 c9 test %cl,%cl 0.00 : 39e41: 75 e5 jne 39e28 0.00 : 39e43: 48 01 d5 add %rdx,%rbp 0.00 : 39e46: 0f b6 4d 00 movzbl 0x0(%rbp),%ecx 0.00 : 39e4a: e9 1a ff ff ff jmpq 39d69 0.00 : 39e4f: 90 nop 0.00 : 39e50: 48 b9 00 00 e8 89 04 movabs $0x8ac7230489e80000,%rcx 0.00 : 39e57: 23 c7 8a 0.00 : 39e5a: 4c 89 fe mov %r15,%rsi 0.00 : 39e5d: 4c 89 ff mov %r15,%rdi 0.00 : 39e60: 4c 89 04 24 mov %r8,(%rsp) 0.00 : 39e64: e8 d7 8b 00 00 callq 42a40 <__mpn_mul_1> 0.00 : 39e69: 49 8b 17 mov (%r15),%rdx 0.00 : 39e6c: 48 89 c7 mov %rax,%rdi 0.00 : 39e6f: 49 8b 36 mov (%r14),%rsi 0.00 : 39e72: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 39e77: 4c 8b 04 24 mov (%rsp),%r8 0.00 : 39e7b: 48 8d 04 13 lea (%rbx,%rdx,1),%rax 0.00 : 39e7f: 48 39 c2 cmp %rax,%rdx 0.00 : 39e82: 49 89 07 mov %rax,(%r15) 0.00 : 39e85: 76 27 jbe 39eae 0.00 : 39e87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 39e8e: 00 00 0.00 : 39e90: 48 83 ee 01 sub $0x1,%rsi 0.00 : 39e94: 0f 84 df 00 00 00 je 39f79 0.00 : 39e9a: 48 8b 01 mov (%rcx),%rax 0.00 : 39e9d: 48 83 c1 08 add $0x8,%rcx 0.00 : 39ea1: 48 83 c0 01 add $0x1,%rax 0.00 : 39ea5: 48 85 c0 test %rax,%rax 0.00 : 39ea8: 48 89 41 f8 mov %rax,-0x8(%rcx) 0.00 : 39eac: 74 e2 je 39e90 0.00 : 39eae: 31 c0 xor %eax,%eax 0.00 : 39eb0: 48 89 c2 mov %rax,%rdx 0.00 : 39eb3: 31 f6 xor %esi,%esi 0.00 : 39eb5: 31 db xor %ebx,%ebx 0.00 : 39eb7: 48 01 fa add %rdi,%rdx 0.00 : 39eba: 0f 84 88 fe ff ff je 39d48 0.00 : 39ec0: 49 8b 06 mov (%r14),%rax 0.00 : 39ec3: 48 83 f8 13 cmp $0x13,%rax 0.00 : 39ec7: 0f 8f dc 00 00 00 jg 39fa9 0.00 : 39ecd: 49 89 14 c7 mov %rdx,(%r15,%rax,8) 0.00 : 39ed1: 31 f6 xor %esi,%esi 0.00 : 39ed3: 49 83 06 01 addq $0x1,(%r14) 0.00 : 39ed7: 31 db xor %ebx,%ebx 0.00 : 39ed9: e9 6a fe ff ff jmpq 39d48 0.00 : 39ede: 66 90 xchg %ax,%ax 0.00 : 39ee0: 48 8b 15 91 7e 33 00 mov 0x337e91(%rip),%rdx # 371d78 <_DYNAMIC+0x218> 0.00 : 39ee7: 48 63 c6 movslq %esi,%rax 0.00 : 39eea: 48 01 f8 add %rdi,%rax 0.00 : 39eed: 48 8b 0c c2 mov (%rdx,%rax,8),%rcx 0.00 : 39ef1: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 39ef6: 48 0f af 1c fa imul (%rdx,%rdi,8),%rbx 0.00 : 39efb: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 39f02: 49 8b 16 mov (%r14),%rdx 0.00 : 39f05: 48 85 d2 test %rdx,%rdx 0.00 : 39f08: 0f 84 db fe ff ff je 39de9 0.00 : 39f0e: 4c 89 fe mov %r15,%rsi 0.00 : 39f11: 4c 89 ff mov %r15,%rdi 0.00 : 39f14: e8 27 8b 00 00 callq 42a40 <__mpn_mul_1> 0.00 : 39f19: 49 8b 17 mov (%r15),%rdx 0.00 : 39f1c: 48 89 c7 mov %rax,%rdi 0.00 : 39f1f: 49 8b 36 mov (%r14),%rsi 0.00 : 39f22: 49 8d 4f 08 lea 0x8(%r15),%rcx 0.00 : 39f26: 48 8d 04 13 lea (%rbx,%rdx,1),%rax 0.00 : 39f2a: 48 39 c2 cmp %rax,%rdx 0.00 : 39f2d: 49 89 07 mov %rax,(%r15) 0.00 : 39f30: 76 20 jbe 39f52 0.00 : 39f32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 39f38: 48 83 ee 01 sub $0x1,%rsi 0.00 : 39f3c: 74 45 je 39f83 0.00 : 39f3e: 48 8b 01 mov (%rcx),%rax 0.00 : 39f41: 48 83 c1 08 add $0x8,%rcx 0.00 : 39f45: 48 83 c0 01 add $0x1,%rax 0.00 : 39f49: 48 85 c0 test %rax,%rax 0.00 : 39f4c: 48 89 41 f8 mov %rax,-0x8(%rcx) 0.00 : 39f50: 74 e6 je 39f38 0.00 : 39f52: 31 c0 xor %eax,%eax 0.00 : 39f54: 48 89 c2 mov %rax,%rdx 0.00 : 39f57: 48 01 fa add %rdi,%rdx 0.00 : 39f5a: 0f 84 93 fe ff ff je 39df3 0.00 : 39f60: 49 8b 06 mov (%r14),%rax 0.00 : 39f63: 48 83 f8 13 cmp $0x13,%rax 0.00 : 39f67: 7f 5f jg 39fc8 0.00 : 39f69: 49 89 14 c7 mov %rdx,(%r15,%rax,8) 0.00 : 39f6d: 48 83 c0 01 add $0x1,%rax 0.00 : 39f71: 49 89 06 mov %rax,(%r14) 0.00 : 39f74: e9 7a fe ff ff jmpq 39df3 0.00 : 39f79: b8 01 00 00 00 mov $0x1,%eax 0.00 : 39f7e: e9 2d ff ff ff jmpq 39eb0 0.00 : 39f83: b8 01 00 00 00 mov $0x1,%eax 0.00 : 39f88: eb ca jmp 39f54 0.00 : 39f8a: 48 8d 0d 7a 0c 10 00 lea 0x100c7a(%rip),%rcx # 13ac0b <__PRETTY_FUNCTION__.12046> 0.00 : 39f91: 48 8d 35 88 0c 10 00 lea 0x100c88(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 39f98: 48 8d 3d ec 0b 10 00 lea 0x100bec(%rip),%rdi # 13ab8b <__PRETTY_FUNCTION__.8908+0xd> 0.00 : 39f9f: ba 25 01 00 00 mov $0x125,%edx 0.00 : 39fa4: e8 77 19 ff ff callq 2b920 <__assert_fail> 0.00 : 39fa9: 48 8d 0d 5b 0c 10 00 lea 0x100c5b(%rip),%rcx # 13ac0b <__PRETTY_FUNCTION__.12046> 0.00 : 39fb0: 48 8d 35 69 0c 10 00 lea 0x100c69(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 39fb7: 48 8d 3d c2 45 10 00 lea 0x1045c2(%rip),%rdi # 13e580 <__PRETTY_FUNCTION__.11129+0xba7> 0.00 : 39fbe: ba 36 01 00 00 mov $0x136,%edx 0.00 : 39fc3: e8 58 19 ff ff callq 2b920 <__assert_fail> 0.00 : 39fc8: 48 8d 0d 3c 0c 10 00 lea 0x100c3c(%rip),%rcx # 13ac0b <__PRETTY_FUNCTION__.12046> 0.00 : 39fcf: 48 8d 35 4a 0c 10 00 lea 0x100c4a(%rip),%rsi # 13ac20 <__PRETTY_FUNCTION__.12046+0x15> 0.00 : 39fd6: 48 8d 3d a3 45 10 00 lea 0x1045a3(%rip),%rdi # 13e580 <__PRETTY_FUNCTION__.11129+0xba7> 0.00 : 39fdd: ba 6e 01 00 00 mov $0x16e,%edx 0.00 : 39fe2: e8 39 19 ff ff callq 2b920 <__assert_fail> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 9.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 8.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 7.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 7.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 7.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 6.62 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:358 4.83 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 4.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 4.58 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 4.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 3.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 3.56 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:359 3.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:356 3.31 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:357 2.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 2.80 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 2.54 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:355 2.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 2.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 2.04 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 1.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 1.53 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:349 1.02 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:349 0.76 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:362 0.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 0.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 0.51 /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b4480 : : TupleTableSlot * : ExecStoreTuple(HeapTuple tuple, : TupleTableSlot *slot, : Buffer buffer, : bool shouldFree) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 7.63 : 5b4480: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:334 2.80 : 5b4481: 48 89 e5 mov %rsp,%rbp 2.04 : 5b4484: 48 89 5d e0 mov %rbx,-0x20(%rbp) 4.07 : 5b4488: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.25 : 5b448c: 48 89 f3 mov %rsi,%rbx 1.53 : 5b448f: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 5b4493: 4c 89 75 f8 mov %r14,-0x8(%rbp) 4.58 : 5b4497: 48 83 ec 20 sub $0x20,%rsp : Assert(BufferIsValid(buffer) ? (!shouldFree) : true); : : /* : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) 0.25 : 5b449b: 80 7e 05 00 cmpb $0x0,0x5(%rsi) : TupleTableSlot * : ExecStoreTuple(HeapTuple tuple, : TupleTableSlot *slot, : Buffer buffer, : bool shouldFree) : { 2.04 : 5b449f: 49 89 fe mov %rdi,%r14 0.51 : 5b44a2: 41 89 d4 mov %edx,%r12d 4.83 : 5b44a5: 41 89 cd mov %ecx,%r13d : Assert(BufferIsValid(buffer) ? (!shouldFree) : true); : : /* : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) 0.00 : 5b44a8: 0f 85 92 00 00 00 jne 5b4540 : heap_freetuple(slot->tts_tuple); : if (slot->tts_shouldFreeMin) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:349 1.53 : 5b44ae: 80 7b 06 00 cmpb $0x0,0x6(%rbx) 1.02 : 5b44b2: 75 74 jne 5b4528 : * This is coded to optimize the case where the slot previously held a : * tuple on the same disk page: in that case releasing and re-acquiring : * the pin is a waste of cycles. This is a common situation during : * seqscans, so it's worth troubling over. : */ : if (slot->tts_buffer != buffer) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 4.58 : 5b44b4: 8b 7b 20 mov 0x20(%rbx),%edi : heap_free_minimal_tuple(slot->tts_mintuple); : : /* : * Store the new tuple into the specified slot. : */ : slot->tts_isempty = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:355 2.54 : 5b44b7: c6 43 04 00 movb $0x0,0x4(%rbx) : slot->tts_shouldFree = shouldFree; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:356 3.31 : 5b44bb: 44 88 6b 05 mov %r13b,0x5(%rbx) : slot->tts_shouldFreeMin = false; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:357 3.31 : 5b44bf: c6 43 06 00 movb $0x0,0x6(%rbx) : slot->tts_tuple = tuple; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:358 6.62 : 5b44c3: 4c 89 73 08 mov %r14,0x8(%rbx) : slot->tts_mintuple = NULL; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:359 3.56 : 5b44c7: 48 c7 43 38 00 00 00 movq $0x0,0x38(%rbx) 0.00 : 5b44ce: 00 : * This is coded to optimize the case where the slot previously held a : * tuple on the same disk page: in that case releasing and re-acquiring : * the pin is a waste of cycles. This is a common situation during : * seqscans, so it's worth troubling over. : */ : if (slot->tts_buffer != buffer) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 0.51 : 5b44cf: 44 39 e7 cmp %r12d,%edi : slot->tts_shouldFreeMin = false; : slot->tts_tuple = tuple; : slot->tts_mintuple = NULL; : : /* Mark extracted state invalid */ : slot->tts_nvalid = 0; /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:362 0.76 : 5b44d2: c7 43 24 00 00 00 00 movl $0x0,0x24(%rbx) : * This is coded to optimize the case where the slot previously held a : * tuple on the same disk page: in that case releasing and re-acquiring : * the pin is a waste of cycles. This is a common situation during : * seqscans, so it's worth troubling over. : */ : if (slot->tts_buffer != buffer) /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:373 2.80 : 5b44d9: 74 0d je 5b44e8 : { : if (BufferIsValid(slot->tts_buffer)) 0.00 : 5b44db: 85 ff test %edi,%edi 0.00 : 5b44dd: 75 31 jne 5b4510 : ReleaseBuffer(slot->tts_buffer); : slot->tts_buffer = buffer; : if (BufferIsValid(buffer)) 0.00 : 5b44df: 45 85 e4 test %r12d,%r12d : */ : if (slot->tts_buffer != buffer) : { : if (BufferIsValid(slot->tts_buffer)) : ReleaseBuffer(slot->tts_buffer); : slot->tts_buffer = buffer; 0.00 : 5b44e2: 44 89 63 20 mov %r12d,0x20(%rbx) : if (BufferIsValid(buffer)) 0.00 : 5b44e6: 75 18 jne 5b4500 : IncrBufferRefCount(buffer); : } : : return slot; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 2.04 : 5b44e8: 48 89 d8 mov %rbx,%rax 0.51 : 5b44eb: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 3.82 : 5b44f0: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/execTuples.c:383 7.38 : 5b44f4: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 9.67 : 5b44f9: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 7.38 : 5b44fe: c9 leaveq 8.14 : 5b44ff: c3 retq : { : if (BufferIsValid(slot->tts_buffer)) : ReleaseBuffer(slot->tts_buffer); : slot->tts_buffer = buffer; : if (BufferIsValid(buffer)) : IncrBufferRefCount(buffer); 0.00 : 5b4500: 44 89 e7 mov %r12d,%edi 0.00 : 5b4503: e8 58 06 0c 00 callq 674b60 0.00 : 5b4508: eb de jmp 5b44e8 0.00 : 5b450a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * seqscans, so it's worth troubling over. : */ : if (slot->tts_buffer != buffer) : { : if (BufferIsValid(slot->tts_buffer)) : ReleaseBuffer(slot->tts_buffer); 0.00 : 5b4510: e8 4b 09 0c 00 callq 674e60 : slot->tts_buffer = buffer; : if (BufferIsValid(buffer)) 0.00 : 5b4515: 45 85 e4 test %r12d,%r12d : */ : if (slot->tts_buffer != buffer) : { : if (BufferIsValid(slot->tts_buffer)) : ReleaseBuffer(slot->tts_buffer); : slot->tts_buffer = buffer; 0.00 : 5b4518: 44 89 63 20 mov %r12d,0x20(%rbx) 0.00 : 5b451c: 0f 1f 40 00 nopl 0x0(%rax) : if (BufferIsValid(buffer)) 0.00 : 5b4520: 74 c6 je 5b44e8 0.00 : 5b4522: eb dc jmp 5b4500 0.00 : 5b4524: 0f 1f 40 00 nopl 0x0(%rax) : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) : heap_freetuple(slot->tts_tuple); : if (slot->tts_shouldFreeMin) : heap_free_minimal_tuple(slot->tts_mintuple); 0.00 : 5b4528: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 5b452c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5b4530: e8 7b a7 eb ff callq 46ecb0 0.00 : 5b4535: e9 7a ff ff ff jmpq 5b44b4 0.00 : 5b453a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Free any old physical tuple belonging to the slot. : */ : if (slot->tts_shouldFree) : heap_freetuple(slot->tts_tuple); 0.00 : 5b4540: 48 8b 7e 08 mov 0x8(%rsi),%rdi 0.00 : 5b4544: e8 77 a7 eb ff callq 46ecc0 0.00 : 5b4549: e9 60 ff ff ff jmpq 5b44ae Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 45.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1133 9.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1348 7.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1353 6.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 6.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1353 5.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1224 4.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 2.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 2.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 1.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 1.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 1.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1133 1.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 0.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 0.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1353 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a4b20 : : * even if we see that the deleting transaction has committed. : */ : HTSV_Result : HeapTupleSatisfiesVacuum(HeapTuple htup, TransactionId OldestXmin, : Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 1.03 : 7a4b20: 55 push %rbp 1.81 : 7a4b21: 48 89 e5 mov %rsp,%rbp 2.58 : 7a4b24: 4c 89 6d f0 mov %r13,-0x10(%rbp) 1.29 : 7a4b28: 4c 89 75 f8 mov %r14,-0x8(%rbp) 2.07 : 7a4b2c: 41 89 d5 mov %edx,%r13d 4.65 : 7a4b2f: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.78 : 7a4b33: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.52 : 7a4b37: 48 83 ec 20 sub $0x20,%rsp : HeapTupleHeader tuple = htup->t_data; 0.26 : 7a4b3b: 4c 8b 67 10 mov 0x10(%rdi),%r12 : * even if we see that the deleting transaction has committed. : */ : HTSV_Result : HeapTupleSatisfiesVacuum(HeapTuple htup, TransactionId OldestXmin, : Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1121 6.72 : 7a4b3f: 41 89 f6 mov %esi,%r14d : * Has inserting transaction committed? : * : * If the inserting transaction aborted, then the tuple was never visible : * to any other transaction, so we can delete it immediately. : */ : if (!HeapTupleHeaderXminCommitted(tuple)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1133 1.29 : 7a4b42: 41 0f b7 4c 24 14 movzwl 0x14(%r12),%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1133 45.99 : 7a4b48: 0f b7 d1 movzwl %cx,%edx 0.26 : 7a4b4b: f6 c6 01 test $0x1,%dh 0.00 : 7a4b4e: 0f 85 ac 00 00 00 jne 7a4c00 : { : if (HeapTupleHeaderXminInvalid(tuple)) 0.00 : 7a4b54: 89 d0 mov %edx,%eax 0.00 : 7a4b56: 25 00 03 00 00 and $0x300,%eax 0.00 : 7a4b5b: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 7a4b60: 0f 84 a2 01 00 00 je 7a4d08 : return HEAPTUPLE_DEAD; : /* Used by pre-9.0 binary upgrades */ : else if (tuple->t_infomask & HEAP_MOVED_OFF) 0.00 : 7a4b66: f6 c6 40 test $0x40,%dh 0.00 : 7a4b69: 74 2d je 7a4b98 : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); 0.00 : 7a4b6b: 31 db xor %ebx,%ebx 0.00 : 7a4b6d: 66 f7 c2 00 c0 test $0xc000,%dx 0.00 : 7a4b72: 0f 85 98 01 00 00 jne 7a4d10 : : if (TransactionIdIsCurrentTransactionId(xvac)) 0.00 : 7a4b78: 89 df mov %ebx,%edi 0.00 : 7a4b7a: e8 21 f9 d1 ff callq 4c44a0 0.00 : 7a4b7f: 84 c0 test %al,%al 0.00 : 7a4b81: 0f 84 9d 01 00 00 je 7a4d24 : : /* : * Deleter committed, but perhaps it was recent enough that some open : * transactions could still see the tuple. : */ : if (!TransactionIdPrecedes(HeapTupleHeaderGetRawXmax(tuple), OldestXmin)) 0.00 : 7a4b87: b8 04 00 00 00 mov $0x4,%eax 0.00 : 7a4b8c: e9 b4 00 00 00 jmpq 7a4c45 0.00 : 7a4b91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, : InvalidTransactionId); : } : /* Used by pre-9.0 binary upgrades */ : else if (tuple->t_infomask & HEAP_MOVED_IN) 0.00 : 7a4b98: 66 85 c9 test %cx,%cx 0.00 : 7a4b9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a4ba0: 0f 89 f2 01 00 00 jns 7a4d98 : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); 0.00 : 7a4ba6: 31 db xor %ebx,%ebx 0.00 : 7a4ba8: 66 f7 c2 00 c0 test $0xc000,%dx 0.00 : 7a4bad: 0f 1f 00 nopl (%rax) 0.00 : 7a4bb0: 74 05 je 7a4bb7 0.00 : 7a4bb2: 41 8b 5c 24 08 mov 0x8(%r12),%ebx : : if (TransactionIdIsCurrentTransactionId(xvac)) 0.00 : 7a4bb7: 89 df mov %ebx,%edi 0.00 : 7a4bb9: e8 e2 f8 d1 ff callq 4c44a0 0.00 : 7a4bbe: 84 c0 test %al,%al 0.00 : 7a4bc0: 0f 85 3a 02 00 00 jne 7a4e00 : return HEAPTUPLE_INSERT_IN_PROGRESS; : if (TransactionIdIsInProgress(xvac)) 0.00 : 7a4bc6: 89 df mov %ebx,%edi 0.00 : 7a4bc8: e8 e3 d0 ed ff callq 681cb0 0.00 : 7a4bcd: 84 c0 test %al,%al 0.00 : 7a4bcf: 90 nop 0.00 : 7a4bd0: 0f 85 2a 02 00 00 jne 7a4e00 : return HEAPTUPLE_INSERT_IN_PROGRESS; : if (TransactionIdDidCommit(xvac)) 0.00 : 7a4bd6: 89 df mov %ebx,%edi 0.00 : 7a4bd8: e8 03 b7 d1 ff callq 4c02e0 0.00 : 7a4bdd: 84 c0 test %al,%al 0.00 : 7a4bdf: 90 nop 0.00 : 7a4be0: 0f 84 5c 01 00 00 je 7a4d42 : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, 0.00 : 7a4be6: 31 c9 xor %ecx,%ecx : * what's happening from the view of other backends. : */ : return HEAPTUPLE_INSERT_IN_PROGRESS; : } : else if (TransactionIdDidCommit(HeapTupleHeaderGetRawXmin(tuple))) : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, 0.00 : 7a4be8: ba 00 01 00 00 mov $0x100,%edx 0.00 : 7a4bed: 44 89 ee mov %r13d,%esi 0.00 : 7a4bf0: 4c 89 e7 mov %r12,%rdi 0.00 : 7a4bf3: e8 a8 fe ff ff callq 7a4aa0 0.00 : 7a4bf8: 41 0f b7 54 24 14 movzwl 0x14(%r12),%edx 0.00 : 7a4bfe: 66 90 xchg %ax,%ax : : /* : * Okay, the inserter committed, so it was good at some point. Now what : * about the deleting transaction? : */ : if (tuple->t_infomask & HEAP_XMAX_INVALID) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1224 5.68 : 7a4c00: f6 c6 08 test $0x8,%dh 0.00 : 7a4c03: 75 3b jne 7a4c40 : return HEAPTUPLE_LIVE; : : if (HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)) 0.00 : 7a4c05: 84 d2 test %dl,%dl 0.00 : 7a4c07: 79 57 jns 7a4c60 : * XMAX_INVALID gets set once the xact is gone, to reduce the costs of : * examining the tuple for future xacts. Also, marking dead : * MultiXacts as invalid here provides defense against MultiXactId : * wraparound (see also comments in heap_freeze_tuple()). : */ : if (!(tuple->t_infomask & HEAP_XMAX_COMMITTED)) 0.00 : 7a4c09: f6 c6 04 test $0x4,%dh 0.00 : 7a4c0c: 75 32 jne 7a4c40 : { : if (tuple->t_infomask & HEAP_XMAX_IS_MULTI) 0.00 : 7a4c0e: f6 c6 10 test $0x10,%dh 0.00 : 7a4c11: 0f 84 49 01 00 00 je 7a4d60 : /* : * If it's only locked but neither EXCL_LOCK nor KEYSHR_LOCK : * are set, it cannot possibly be running; otherwise have to : * check. : */ : if ((tuple->t_infomask & (HEAP_XMAX_EXCL_LOCK | 0.00 : 7a4c17: 83 e2 50 and $0x50,%edx 0.00 : 7a4c1a: 0f 84 58 01 00 00 je 7a4d78 0.00 : 7a4c20: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 7a4c25: be 01 00 00 00 mov $0x1,%esi 0.00 : 7a4c2a: e8 d1 3d d2 ff callq 4c8a00 0.00 : 7a4c2f: 84 c0 test %al,%al 0.00 : 7a4c31: 0f 84 41 01 00 00 je 7a4d78 0.00 : 7a4c37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a4c3e: 00 00 : : /* : * Deleter committed, but perhaps it was recent enough that some open : * transactions could still see the tuple. : */ : if (!TransactionIdPrecedes(HeapTupleHeaderGetRawXmax(tuple), OldestXmin)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1348 9.56 : 7a4c40: b8 01 00 00 00 mov $0x1,%eax : return HEAPTUPLE_RECENTLY_DEAD; : : /* Otherwise, it's dead and removable */ : return HEAPTUPLE_DEAD; : } 0.26 : 7a4c45: 48 8b 1c 24 mov (%rsp),%rbx 0.26 : 7a4c49: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1353 0.52 : 7a4c4e: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1353 7.75 : 7a4c53: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 7a4c58: c9 leaveq 6.20 : 7a4c59: c3 retq 0.00 : 7a4c5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * about the deleting transaction? : */ : if (tuple->t_infomask & HEAP_XMAX_INVALID) : return HEAPTUPLE_LIVE; : : if (HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)) 0.00 : 7a4c60: 89 d0 mov %edx,%eax 0.00 : 7a4c62: 25 50 10 00 00 and $0x1050,%eax 0.00 : 7a4c67: 83 f8 40 cmp $0x40,%eax 0.00 : 7a4c6a: 74 9d je 7a4c09 : */ : : return HEAPTUPLE_LIVE; : } : : if (tuple->t_infomask & HEAP_XMAX_IS_MULTI) 0.00 : 7a4c6c: f6 c6 10 test $0x10,%dh 0.00 : 7a4c6f: 0f 85 9b 01 00 00 jne 7a4e10 : */ : SetHintBits(tuple, buffer, HEAP_XMAX_INVALID, InvalidTransactionId); : return HEAPTUPLE_LIVE; : } : : if (!(tuple->t_infomask & HEAP_XMAX_COMMITTED)) 0.00 : 7a4c75: 80 e6 04 and $0x4,%dh 0.00 : 7a4c78: 75 3e jne 7a4cb8 : { : if (TransactionIdIsInProgress(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a4c7a: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 7a4c7f: 90 nop 0.00 : 7a4c80: e8 2b d0 ed ff callq 681cb0 0.00 : 7a4c85: 84 c0 test %al,%al 0.00 : 7a4c87: 0f 85 fa fe ff ff jne 7a4b87 : return HEAPTUPLE_DELETE_IN_PROGRESS; : else if (TransactionIdDidCommit(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a4c8d: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 7a4c92: e8 49 b6 d1 ff callq 4c02e0 0.00 : 7a4c97: 84 c0 test %al,%al 0.00 : 7a4c99: 0f 84 d9 00 00 00 je 7a4d78 : SetHintBits(tuple, buffer, HEAP_XMAX_COMMITTED, 0.00 : 7a4c9f: 41 8b 4c 24 04 mov 0x4(%r12),%ecx 0.00 : 7a4ca4: ba 00 04 00 00 mov $0x400,%edx 0.00 : 7a4ca9: 44 89 ee mov %r13d,%esi 0.00 : 7a4cac: 4c 89 e7 mov %r12,%rdi 0.00 : 7a4caf: e8 ec fd ff ff callq 7a4aa0 0.00 : 7a4cb4: 0f 1f 40 00 nopl 0x0(%rax) : : /* : * Deleter committed, but perhaps it was recent enough that some open : * transactions could still see the tuple. : */ : if (!TransactionIdPrecedes(HeapTupleHeaderGetRawXmax(tuple), OldestXmin)) 0.00 : 7a4cb8: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 7a4cbd: 44 89 f6 mov %r14d,%esi 0.00 : 7a4cc0: e8 1b b3 d1 ff callq 4bffe0 0.00 : 7a4cc5: 84 c0 test %al,%al 0.00 : 7a4cc7: 75 3f jne 7a4d08 0.00 : 7a4cc9: b8 02 00 00 00 mov $0x2,%eax 0.00 : 7a4cce: e9 72 ff ff ff jmpq 7a4c45 0.00 : 7a4cd3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return HEAPTUPLE_LIVE; : } : : Assert(!(tuple->t_infomask & HEAP_XMAX_COMMITTED)); : : xmax = HeapTupleGetUpdateXid(tuple); 0.00 : 7a4cd8: 4c 89 e7 mov %r12,%rdi 0.00 : 7a4cdb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a4ce0: e8 3b 24 cf ff callq 497120 : /* not LOCKED_ONLY, so it has to have an xmax */ : Assert(TransactionIdIsValid(xmax)); : : /* multi is not running -- updating xact cannot be */ : Assert(!TransactionIdIsInProgress(xmax)); : if (TransactionIdDidCommit(xmax)) 0.00 : 7a4ce5: 89 c7 mov %eax,%edi : return HEAPTUPLE_LIVE; : } : : Assert(!(tuple->t_infomask & HEAP_XMAX_COMMITTED)); : : xmax = HeapTupleGetUpdateXid(tuple); 0.00 : 7a4ce7: 89 c3 mov %eax,%ebx : /* not LOCKED_ONLY, so it has to have an xmax */ : Assert(TransactionIdIsValid(xmax)); : : /* multi is not running -- updating xact cannot be */ : Assert(!TransactionIdIsInProgress(xmax)); : if (TransactionIdDidCommit(xmax)) 0.00 : 7a4ce9: e8 f2 b5 d1 ff callq 4c02e0 0.00 : 7a4cee: 84 c0 test %al,%al 0.00 : 7a4cf0: 0f 84 82 00 00 00 je 7a4d78 : { : if (!TransactionIdPrecedes(xmax, OldestXmin)) 0.00 : 7a4cf6: 44 89 f6 mov %r14d,%esi 0.00 : 7a4cf9: 89 df mov %ebx,%edi 0.00 : 7a4cfb: e8 e0 b2 d1 ff callq 4bffe0 0.00 : 7a4d00: 84 c0 test %al,%al 0.00 : 7a4d02: 74 c5 je 7a4cc9 0.00 : 7a4d04: 0f 1f 40 00 nopl 0x0(%rax) : : /* : * Deleter committed, but perhaps it was recent enough that some open : * transactions could still see the tuple. : */ : if (!TransactionIdPrecedes(HeapTupleHeaderGetRawXmax(tuple), OldestXmin)) 0.00 : 7a4d08: 31 c0 xor %eax,%eax 0.00 : 7a4d0a: e9 36 ff ff ff jmpq 7a4c45 0.00 : 7a4d0f: 90 nop : if (HeapTupleHeaderXminInvalid(tuple)) : return HEAPTUPLE_DEAD; : /* Used by pre-9.0 binary upgrades */ : else if (tuple->t_infomask & HEAP_MOVED_OFF) : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); 0.00 : 7a4d10: 41 8b 5c 24 08 mov 0x8(%r12),%ebx : : if (TransactionIdIsCurrentTransactionId(xvac)) 0.00 : 7a4d15: 89 df mov %ebx,%edi 0.00 : 7a4d17: e8 84 f7 d1 ff callq 4c44a0 0.00 : 7a4d1c: 84 c0 test %al,%al 0.00 : 7a4d1e: 0f 85 63 fe ff ff jne 7a4b87 : return HEAPTUPLE_DELETE_IN_PROGRESS; : if (TransactionIdIsInProgress(xvac)) 0.00 : 7a4d24: 89 df mov %ebx,%edi 0.00 : 7a4d26: e8 85 cf ed ff callq 681cb0 0.00 : 7a4d2b: 84 c0 test %al,%al 0.00 : 7a4d2d: 0f 85 54 fe ff ff jne 7a4b87 : return HEAPTUPLE_DELETE_IN_PROGRESS; : if (TransactionIdDidCommit(xvac)) 0.00 : 7a4d33: 89 df mov %ebx,%edi 0.00 : 7a4d35: e8 a6 b5 d1 ff callq 4c02e0 0.00 : 7a4d3a: 84 c0 test %al,%al 0.00 : 7a4d3c: 0f 84 a4 fe ff ff je 7a4be6 : else : { : /* : * Not in Progress, Not Committed, so either Aborted or crashed : */ : SetHintBits(tuple, buffer, HEAP_XMIN_INVALID, 0.00 : 7a4d42: 31 c9 xor %ecx,%ecx 0.00 : 7a4d44: ba 00 02 00 00 mov $0x200,%edx 0.00 : 7a4d49: 44 89 ee mov %r13d,%esi 0.00 : 7a4d4c: 4c 89 e7 mov %r12,%rdi 0.00 : 7a4d4f: e8 4c fd ff ff callq 7a4aa0 0.00 : 7a4d54: 31 c0 xor %eax,%eax : if (!TransactionIdPrecedes(HeapTupleHeaderGetRawXmax(tuple), OldestXmin)) : return HEAPTUPLE_RECENTLY_DEAD; : : /* Otherwise, it's dead and removable */ : return HEAPTUPLE_DEAD; : } 0.00 : 7a4d56: e9 ea fe ff ff jmpq 7a4c45 0.00 : 7a4d5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : SetHintBits(tuple, buffer, HEAP_XMAX_INVALID, InvalidTransactionId); : : } : else : { : if (TransactionIdIsInProgress(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a4d60: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 7a4d65: e8 46 cf ed ff callq 681cb0 0.00 : 7a4d6a: 84 c0 test %al,%al 0.00 : 7a4d6c: 0f 85 ce fe ff ff jne 7a4c40 0.00 : 7a4d72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else : { : /* : * Not in Progress, Not Committed, so either Aborted or crashed : */ : SetHintBits(tuple, buffer, HEAP_XMAX_INVALID, 0.00 : 7a4d78: 31 c9 xor %ecx,%ecx 0.00 : 7a4d7a: ba 00 08 00 00 mov $0x800,%edx 0.00 : 7a4d7f: 44 89 ee mov %r13d,%esi 0.00 : 7a4d82: 4c 89 e7 mov %r12,%rdi 0.00 : 7a4d85: e8 16 fd ff ff callq 7a4aa0 0.00 : 7a4d8a: b8 01 00 00 00 mov $0x1,%eax : if (!TransactionIdPrecedes(HeapTupleHeaderGetRawXmax(tuple), OldestXmin)) : return HEAPTUPLE_RECENTLY_DEAD; : : /* Otherwise, it's dead and removable */ : return HEAPTUPLE_DEAD; : } 0.00 : 7a4d8f: e9 b1 fe ff ff jmpq 7a4c45 0.00 : 7a4d94: 0f 1f 40 00 nopl 0x0(%rax) : SetHintBits(tuple, buffer, HEAP_XMIN_INVALID, : InvalidTransactionId); : return HEAPTUPLE_DEAD; : } : } : else if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetRawXmin(tuple))) 0.00 : 7a4d98: 41 8b 3c 24 mov (%r12),%edi 0.26 : 7a4d9c: e8 ff f6 d1 ff callq 4c44a0 0.00 : 7a4da1: 84 c0 test %al,%al 0.00 : 7a4da3: 0f 84 af 00 00 00 je 7a4e58 : { : if (tuple->t_infomask & HEAP_XMAX_INVALID) /* xid invalid */ 0.00 : 7a4da9: 41 0f b7 44 24 14 movzwl 0x14(%r12),%eax : return HEAPTUPLE_INSERT_IN_PROGRESS; : /* only locked? run infomask-only check first, for performance */ : if (HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask) || 0.00 : 7a4daf: a9 80 08 00 00 test $0x880,%eax 0.00 : 7a4db4: 75 4a jne 7a4e00 0.00 : 7a4db6: 25 50 10 00 00 and $0x1050,%eax 0.00 : 7a4dbb: 83 f8 40 cmp $0x40,%eax 0.00 : 7a4dbe: 74 40 je 7a4e00 0.00 : 7a4dc0: 4c 89 e7 mov %r12,%rdi 0.00 : 7a4dc3: e8 68 fc ff ff callq 7a4a30 0.00 : 7a4dc8: 84 c0 test %al,%al 0.00 : 7a4dca: 75 34 jne 7a4e00 : HeapTupleHeaderIsOnlyLocked(tuple)) : return HEAPTUPLE_INSERT_IN_PROGRESS; : /* inserted and then deleted by same xact */ : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetUpdateXid(tuple))) 0.00 : 7a4dcc: 41 0f b7 54 24 14 movzwl 0x14(%r12),%edx 0.00 : 7a4dd2: 89 d0 mov %edx,%eax 0.00 : 7a4dd4: 25 00 18 00 00 and $0x1800,%eax 0.00 : 7a4dd9: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 7a4dde: 0f 84 a1 00 00 00 je 7a4e85 0.00 : 7a4de4: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 7a4de9: e8 b2 f6 d1 ff callq 4c44a0 0.00 : 7a4dee: 84 c0 test %al,%al 0.00 : 7a4df0: 0f 85 91 fd ff ff jne 7a4b87 0.00 : 7a4df6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7a4dfd: 00 00 00 : : /* : * Deleter committed, but perhaps it was recent enough that some open : * transactions could still see the tuple. : */ : if (!TransactionIdPrecedes(HeapTupleHeaderGetRawXmax(tuple), OldestXmin)) 0.00 : 7a4e00: b8 03 00 00 00 mov $0x3,%eax 0.00 : 7a4e05: e9 3b fe ff ff jmpq 7a4c45 0.00 : 7a4e0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : if (tuple->t_infomask & HEAP_XMAX_IS_MULTI) : { : TransactionId xmax; : : if (MultiXactIdIsRunning(HeapTupleHeaderGetRawXmax(tuple), false)) 0.00 : 7a4e10: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 7a4e15: 31 f6 xor %esi,%esi 0.00 : 7a4e17: e8 e4 3b d2 ff callq 4c8a00 0.00 : 7a4e1c: 84 c0 test %al,%al 0.00 : 7a4e1e: 0f 84 b4 fe ff ff je 7a4cd8 : { : /* already checked above */ : Assert(!HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)); : : xmax = HeapTupleGetUpdateXid(tuple); 0.00 : 7a4e24: 4c 89 e7 mov %r12,%rdi 0.00 : 7a4e27: e8 f4 22 cf ff callq 497120 : : /* not LOCKED_ONLY, so it has to have an xmax */ : Assert(TransactionIdIsValid(xmax)); : : if (TransactionIdIsInProgress(xmax)) 0.00 : 7a4e2c: 89 c7 mov %eax,%edi : if (MultiXactIdIsRunning(HeapTupleHeaderGetRawXmax(tuple), false)) : { : /* already checked above */ : Assert(!HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)); : : xmax = HeapTupleGetUpdateXid(tuple); 0.00 : 7a4e2e: 89 c3 mov %eax,%ebx : : /* not LOCKED_ONLY, so it has to have an xmax */ : Assert(TransactionIdIsValid(xmax)); : : if (TransactionIdIsInProgress(xmax)) 0.00 : 7a4e30: e8 7b ce ed ff callq 681cb0 0.00 : 7a4e35: 84 c0 test %al,%al 0.00 : 7a4e37: 0f 85 4a fd ff ff jne 7a4b87 : return HEAPTUPLE_DELETE_IN_PROGRESS; : else if (TransactionIdDidCommit(xmax)) 0.00 : 7a4e3d: 89 df mov %ebx,%edi 0.00 : 7a4e3f: e8 9c b4 d1 ff callq 4c02e0 0.00 : 7a4e44: 84 c0 test %al,%al 0.00 : 7a4e46: 0f 85 7d fe ff ff jne 7a4cc9 0.00 : 7a4e4c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7a4e50: e9 eb fd ff ff jmpq 7a4c40 0.00 : 7a4e55: 0f 1f 00 nopl (%rax) : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetUpdateXid(tuple))) : return HEAPTUPLE_DELETE_IN_PROGRESS; : /* deleting subtransaction must have aborted */ : return HEAPTUPLE_INSERT_IN_PROGRESS; : } : else if (TransactionIdIsInProgress(HeapTupleHeaderGetRawXmin(tuple))) 0.00 : 7a4e58: 41 8b 3c 24 mov (%r12),%edi 0.00 : 7a4e5c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7a4e60: e8 4b ce ed ff callq 681cb0 0.00 : 7a4e65: 84 c0 test %al,%al 0.00 : 7a4e67: 75 97 jne 7a4e00 : * always correct to return INSERT_IN_PROGRESS because that's : * what's happening from the view of other backends. : */ : return HEAPTUPLE_INSERT_IN_PROGRESS; : } : else if (TransactionIdDidCommit(HeapTupleHeaderGetRawXmin(tuple))) 0.00 : 7a4e69: 41 8b 3c 24 mov (%r12),%edi 0.00 : 7a4e6d: e8 6e b4 d1 ff callq 4c02e0 0.00 : 7a4e72: 84 c0 test %al,%al 0.00 : 7a4e74: 0f 84 c8 fe ff ff je 7a4d42 : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, 0.26 : 7a4e7a: 41 8b 0c 24 mov (%r12),%ecx 0.00 : 7a4e7e: 66 90 xchg %ax,%ax 0.00 : 7a4e80: e9 63 fd ff ff jmpq 7a4be8 : /* only locked? run infomask-only check first, for performance */ : if (HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask) || : HeapTupleHeaderIsOnlyLocked(tuple)) : return HEAPTUPLE_INSERT_IN_PROGRESS; : /* inserted and then deleted by same xact */ : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetUpdateXid(tuple))) 0.00 : 7a4e85: 84 d2 test %dl,%dl 0.00 : 7a4e87: 0f 88 57 ff ff ff js 7a4de4 0.00 : 7a4e8d: 4c 89 e7 mov %r12,%rdi 0.00 : 7a4e90: e8 8b 22 cf ff callq 497120 0.00 : 7a4e95: 89 c7 mov %eax,%edi 0.00 : 7a4e97: e9 4d ff ff ff jmpq 7a4de9 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 21.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1327 12.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 11.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 10.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1320 10.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1331 7.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1327 6.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 5.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1331 3.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1321 2.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1324 1.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1322 1.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 1.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 1.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077e030 : : return result; : } : : Datum : FunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2) : { 0.00 : 77e030: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 12.01 : 77e031: 48 89 f8 mov %rdi,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1309 1.04 : 77e034: 48 89 e5 mov %rsp,%rbp 0.26 : 77e037: 48 81 ec b0 03 00 00 sub $0x3b0,%rsp : * utils/sort/tuplesort.c! : */ : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 2, collation, NULL, NULL); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 6.01 : 77e03e: 48 89 bd 50 fc ff ff mov %rdi,-0x3b0(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 1.57 : 77e045: 48 c7 85 58 fc ff ff movq $0x0,-0x3a8(%rbp) 0.00 : 77e04c: 00 00 00 00 : fcinfo.arg[0] = arg1; : fcinfo.arg[1] = arg2; : fcinfo.argnull[0] = false; : fcinfo.argnull[1] = false; : : result = FunctionCallInvoke(&fcinfo); 0.26 : 77e050: 48 8d bd 50 fc ff ff lea -0x3b0(%rbp),%rdi : * utils/sort/tuplesort.c! : */ : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 2, collation, NULL, NULL); 0.00 : 77e057: 48 c7 85 60 fc ff ff movq $0x0,-0x3a0(%rbp) 0.00 : 77e05e: 00 00 00 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 11.23 : 77e062: 89 b5 68 fc ff ff mov %esi,-0x398(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1317 1.31 : 77e068: c6 85 6c fc ff ff 00 movb $0x0,-0x394(%rbp) 1.57 : 77e06f: 66 c7 85 6e fc ff ff movw $0x2,-0x392(%rbp) 0.00 : 77e076: 02 00 : : fcinfo.arg[0] = arg1; 0.00 : 77e078: 48 89 95 70 fc ff ff mov %rdx,-0x390(%rbp) : fcinfo.arg[1] = arg2; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1320 10.70 : 77e07f: 48 89 8d 78 fc ff ff mov %rcx,-0x388(%rbp) : fcinfo.argnull[0] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1321 3.66 : 77e086: c6 45 90 00 movb $0x0,-0x70(%rbp) : fcinfo.argnull[1] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1322 1.83 : 77e08a: c6 45 91 00 movb $0x0,-0x6f(%rbp) : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1324 2.61 : 77e08e: ff 10 callq *(%rax) : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1327 7.57 : 77e090: 80 bd 6c fc ff ff 00 cmpb $0x0,-0x394(%rbp) 21.93 : 77e097: 75 02 jne 77e09b : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1331 5.74 : 77e099: c9 leaveq 10.70 : 77e09a: c3 retq : : result = FunctionCallInvoke(&fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); 0.00 : 77e09b: ba 40 52 8d 00 mov $0x8d5240,%edx 0.00 : 77e0a0: be 30 05 00 00 mov $0x530,%esi 0.00 : 77e0a5: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77e0aa: e8 71 d3 ff ff callq 77b420 0.00 : 77e0af: 48 8b 85 50 fc ff ff mov -0x3b0(%rbp),%rax 0.00 : 77e0b6: be 97 4c 8d 00 mov $0x8d4c97,%esi 0.00 : 77e0bb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77e0c0: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77e0c3: 31 c0 xor %eax,%eax 0.00 : 77e0c5: e8 66 d1 ff ff callq 77b230 0.00 : 77e0ca: e8 01 b4 ce ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.11 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:401 3.89 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:390 3.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:211 3.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 3.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:289 3.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:293 3.33 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 3.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:230 3.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:278 3.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:369 3.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:358 3.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:367 3.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 3.06 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 2.78 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:390 2.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:228 2.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:396 2.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:403 2.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 2.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:295 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:211 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:367 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:367 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:393 1.94 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:211 1.94 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:407 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:278 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:360 1.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:407 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 1.39 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:382 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:407 1.11 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:407 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:401 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 0.56 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:382 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000470b60 : : */ : Datum : nocache_index_getattr(IndexTuple tup, : int attnum, : TupleDesc tupleDesc) : { /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:211 1.94 : 470b60: 55 push %rbp 0.00 : 470b61: 49 89 f9 mov %rdi,%r9 0.00 : 470b64: 48 89 d7 mov %rdx,%rdi 0.00 : 470b67: 48 89 e5 mov %rsp,%rbp 2.22 : 470b6a: 41 57 push %r15 0.00 : 470b6c: 41 56 push %r14 0.00 : 470b6e: 41 55 push %r13 3.61 : 470b70: 41 54 push %r12 0.00 : 470b72: 53 push %rbx 0.00 : 470b73: 48 83 ec 28 sub $0x28,%rsp : * 2: Has a null or a var-width AFTER att. : * 3: Has nulls or var-widths BEFORE att. : * ---------------- : */ : : data_off = IndexInfoFindDataOffset(tup->t_info); /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:228 2.50 : 470b77: 45 0f b7 41 06 movzwl 0x6(%r9),%r8d : Datum : nocache_index_getattr(IndexTuple tup, : int attnum, : TupleDesc tupleDesc) : { : Form_pg_attribute *att = tupleDesc->attrs; 0.00 : 470b7c: 4c 8b 7a 08 mov 0x8(%rdx),%r15 : * 2: Has a null or a var-width AFTER att. : * 3: Has nulls or var-widths BEFORE att. : * ---------------- : */ : : data_off = IndexInfoFindDataOffset(tup->t_info); 0.00 : 470b80: 66 45 85 c0 test %r8w,%r8w 0.00 : 470b84: 78 6a js 470bf0 : : attnum--; 0.00 : 470b86: 44 8d 56 ff lea -0x1(%rsi),%r10d /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:230 3.06 : 470b8a: 48 c7 45 d0 00 00 00 movq $0x0,-0x30(%rbp) 0.00 : 470b91: 00 0.00 : 470b92: b8 08 00 00 00 mov $0x8,%eax : } : } : } : } : : tp = (char *) tup + data_off; 0.00 : 470b97: 4d 8d 1c 01 lea (%r9,%rax,1),%r11 : { : /* : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) 0.00 : 470b9b: 49 63 c2 movslq %r10d,%rax /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:278 3.06 : 470b9e: 49 8d 1c c7 lea (%r15,%rax,8),%rbx 0.00 : 470ba2: 48 8b 13 mov (%rbx),%rdx 0.00 : 470ba5: 8b 42 54 mov 0x54(%rdx),%eax 1.67 : 470ba8: 85 c0 test %eax,%eax 0.00 : 470baa: 0f 88 8c 03 00 00 js 470f3c : { : return fetchatt(att[attnum], 0.00 : 470bb0: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 470bb4: 0f 84 c6 02 00 00 je 470e80 0.00 : 470bba: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 470bbe: 66 83 fa 08 cmp $0x8,%dx 0.00 : 470bc2: 0f 84 e8 04 00 00 je 4710b0 0.00 : 470bc8: 66 83 fa 04 cmp $0x4,%dx 0.00 : 470bcc: 0f 84 1c 05 00 00 je 4710ee 0.00 : 470bd2: 66 83 fa 02 cmp $0x2,%dx 0.00 : 470bd6: 0f 84 1d 05 00 00 je 4710f9 0.00 : 470bdc: 48 98 cltq 0.00 : 470bde: 41 0f b6 04 03 movzbl (%r11,%rax,1),%eax 0.00 : 470be3: e9 6f 02 00 00 jmpq 470e57 0.00 : 470be8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 470bef: 00 : * ---------------- : */ : : data_off = IndexInfoFindDataOffset(tup->t_info); : : attnum--; 0.00 : 470bf0: 44 8d 56 ff lea -0x1(%rsi),%r10d : * : * check to see if desired att is null : */ : : /* XXX "knows" t_bits are just after fixed tuple header! */ : bp = (bits8 *) ((char *) tup + sizeof(IndexTupleData)); 0.00 : 470bf4: 49 8d 41 08 lea 0x8(%r9),%rax : : /* : * Now check to see if any preceding bits are null... : */ : { : int byte = attnum >> 3; 0.00 : 470bf8: 44 89 d6 mov %r10d,%esi : * : * check to see if desired att is null : */ : : /* XXX "knows" t_bits are just after fixed tuple header! */ : bp = (bits8 *) ((char *) tup + sizeof(IndexTupleData)); 0.00 : 470bfb: 48 89 45 d0 mov %rax,-0x30(%rbp) : { : int byte = attnum >> 3; : int finalbit = attnum & 0x07; : : /* check for nulls "before" final bit of last byte */ : if ((~bp[byte]) & ((1 << finalbit) - 1)) 0.00 : 470bff: 44 89 d1 mov %r10d,%ecx : : /* : * Now check to see if any preceding bits are null... : */ : { : int byte = attnum >> 3; 0.00 : 470c02: c1 fe 03 sar $0x3,%esi : int finalbit = attnum & 0x07; : : /* check for nulls "before" final bit of last byte */ : if ((~bp[byte]) & ((1 << finalbit) - 1)) 0.00 : 470c05: 83 e1 07 and $0x7,%ecx 0.00 : 470c08: 48 63 c6 movslq %esi,%rax 0.00 : 470c0b: 41 0f b6 54 01 08 movzbl 0x8(%r9,%rax,1),%edx 0.00 : 470c11: b8 01 00 00 00 mov $0x1,%eax 0.00 : 470c16: d3 e0 shl %cl,%eax 0.00 : 470c18: 83 e8 01 sub $0x1,%eax 0.00 : 470c1b: f7 d2 not %edx 0.00 : 470c1d: 85 c2 test %eax,%edx 0.00 : 470c1f: 0f 84 8b 02 00 00 je 470eb0 : } : } : } : } : : tp = (char *) tup + data_off; 0.00 : 470c25: 4d 8d 59 10 lea 0x10(%r9),%r11 : */ : if (IndexTupleHasVarwidths(tup)) : { : int j; : : for (j = 0; j <= attnum; j++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:293 3.33 : 470c29: 31 f6 xor %esi,%esi 0.00 : 470c2b: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 470c31: 45 31 ed xor %r13d,%r13d 0.00 : 470c34: eb 78 jmp 470cae 0.00 : 470c36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 470c3d: 00 00 00 : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:367 2.22 : 470c40: 49 63 fd movslq %r13d,%rdi 0.00 : 470c43: 49 8b 14 ff mov (%r15,%rdi,8),%rdx : off = att[i]->attcacheoff; : else if (att[i]->attlen == -1) 0.28 : 470c47: 66 83 7a 4c ff cmpw $0xffff,0x4c(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:369 3.06 : 470c4c: 0f 84 2e 01 00 00 je 470d80 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:390 2.78 : 470c52: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.00 : 470c56: 3c 69 cmp $0x69,%al 0.00 : 470c58: 0f 84 a2 01 00 00 je 470e00 0.00 : 470c5e: 3c 63 cmp $0x63,%al 0.00 : 470c60: 74 0e je 470c70 0.00 : 470c62: 3c 64 cmp $0x64,%al 0.00 : 470c64: 0f 84 06 02 00 00 je 470e70 0.00 : 470c6a: 83 c6 01 add $0x1,%esi 0.00 : 470c6d: 83 e6 fe and $0xfffffffe,%esi : : if (usecache) 0.00 : 470c70: 45 84 f6 test %r14b,%r14b 0.00 : 470c73: 74 03 je 470c78 : att[i]->attcacheoff = off; 0.00 : 470c75: 89 72 54 mov %esi,0x54(%rdx) : } : : if (i == attnum) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:396 2.50 : 470c78: 45 39 d5 cmp %r10d,%r13d 0.00 : 470c7b: 74 57 je 470cd4 : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 470c7d: 49 8b 04 ff mov (%r15,%rdi,8),%rax 0.00 : 470c81: 44 0f b7 60 4c movzwl 0x4c(%rax),%r12d /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 3.33 : 470c86: 66 45 85 e4 test %r12w,%r12w 0.00 : 470c8a: 0f 8e c0 00 00 00 jle 470d50 0.00 : 470c90: 41 0f bf c4 movswl %r12w,%eax 0.00 : 470c94: 01 c6 add %eax,%esi : : if (usecache && att[i]->attlen <= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:401 0.56 : 470c96: 45 84 f6 test %r14b,%r14b 0.00 : 470c99: 74 0a je 470ca5 0.00 : 470c9b: 66 45 85 e4 test %r12w,%r12w 0.00 : 470c9f: 0f 8e 9b 01 00 00 jle 470e40 0.28 : 470ca5: 45 0f b7 41 06 movzwl 0x6(%r9),%r8d : * then advance over the attr based on its length. Nulls have no : * storage and no alignment padding either. We can use/set : * attcacheoff until we reach either a null or a var-width attribute. : */ : off = 0; : for (i = 0;; i++) /* loop exit is at "break" */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:358 3.06 : 470caa: 41 83 c5 01 add $0x1,%r13d : { : if (IndexTupleHasNulls(tup) && att_isnull(i, bp)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:360 1.67 : 470cae: 66 45 85 c0 test %r8w,%r8w 0.00 : 470cb2: 78 6c js 470d20 : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) 0.00 : 470cb4: 45 84 f6 test %r14b,%r14b 0.00 : 470cb7: 74 87 je 470c40 0.00 : 470cb9: 49 63 fd movslq %r13d,%rdi 0.00 : 470cbc: 49 8b 14 ff mov (%r15,%rdi,8),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:367 2.22 : 470cc0: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 470cc3: 85 c0 test %eax,%eax 0.00 : 470cc5: 78 80 js 470c47 : : if (usecache) : att[i]->attcacheoff = off; : } : : if (i == attnum) 0.00 : 470cc7: 45 39 d5 cmp %r10d,%r13d : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) 0.00 : 470cca: 89 c6 mov %eax,%esi 3.06 : 470ccc: 41 be 01 00 00 00 mov $0x1,%r14d : : if (usecache) : att[i]->attcacheoff = off; : } : : if (i == attnum) 0.00 : 470cd2: 75 a9 jne 470c7d : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); : : if (usecache && att[i]->attlen <= 0) : usecache = false; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:403 2.50 : 470cd4: 49 8b 04 ff mov (%r15,%rdi,8),%rax : } : : return fetchatt(att[attnum], tp + off); 0.00 : 470cd8: 80 78 5c 00 cmpb $0x0,0x5c(%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 6.11 : 470cdc: 0f 84 6e 01 00 00 je 470e50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 1.39 : 470ce2: 0f b7 40 4c movzwl 0x4c(%rax),%eax 0.83 : 470ce6: 66 83 f8 08 cmp $0x8,%ax 0.00 : 470cea: 0f 84 80 03 00 00 je 471070 0.00 : 470cf0: 66 83 f8 04 cmp $0x4,%ax 0.00 : 470cf4: 0f 84 06 02 00 00 je 470f00 0.00 : 470cfa: 66 83 f8 02 cmp $0x2,%ax 0.00 : 470cfe: 66 90 xchg %ax,%ax 0.00 : 470d00: 0f 84 ca 03 00 00 je 4710d0 0.00 : 470d06: 48 63 c6 movslq %esi,%rax 0.00 : 470d09: 41 0f b6 04 03 movzbl (%r11,%rax,1),%eax : } 0.00 : 470d0e: 48 83 c4 28 add $0x28,%rsp 0.00 : 470d12: 5b pop %rbx 0.00 : 470d13: 41 5c pop %r12 0.00 : 470d15: 41 5d pop %r13 0.00 : 470d17: 41 5e pop %r14 0.00 : 470d19: 41 5f pop %r15 0.00 : 470d1b: c9 leaveq 0.00 : 470d1c: c3 retq 0.00 : 470d1d: 0f 1f 00 nopl (%rax) : * attcacheoff until we reach either a null or a var-width attribute. : */ : off = 0; : for (i = 0;; i++) /* loop exit is at "break" */ : { : if (IndexTupleHasNulls(tup) && att_isnull(i, bp)) 0.00 : 470d20: 44 89 e8 mov %r13d,%eax 0.00 : 470d23: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 470d27: 44 89 e9 mov %r13d,%ecx 0.00 : 470d2a: c1 f8 03 sar $0x3,%eax 0.00 : 470d2d: 83 e1 07 and $0x7,%ecx 0.00 : 470d30: 48 98 cltq 0.00 : 470d32: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 0.00 : 470d36: d3 f8 sar %cl,%eax 0.00 : 470d38: a8 01 test $0x1,%al 0.00 : 470d3a: 0f 85 74 ff ff ff jne 470cb4 : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); : : if (usecache && att[i]->attlen <= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:401 4.17 : 470d40: 45 31 f6 xor %r14d,%r14d 0.00 : 470d43: e9 62 ff ff ff jmpq 470caa 0.00 : 470d48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 470d4f: 00 : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 0.56 : 470d50: 66 41 83 fc ff cmp $0xffff,%r12w 0.00 : 470d55: 0f 85 b5 00 00 00 jne 470e10 0.56 : 470d5b: 48 63 d6 movslq %esi,%rdx 0.00 : 470d5e: 41 0f b6 04 13 movzbl (%r11,%rdx,1),%eax 3.06 : 470d63: 3c 01 cmp $0x1,%al 0.00 : 470d65: 0f 84 a5 01 00 00 je 470f10 1.11 : 470d6b: a8 01 test $0x1,%al 0.00 : 470d6d: 0f 84 25 01 00 00 je 470e98 1.39 : 470d73: d0 e8 shr %al 0.00 : 470d75: 0f b6 c0 movzbl %al,%eax 3.06 : 470d78: 8d 34 30 lea (%rax,%rsi,1),%esi 0.56 : 470d7b: e9 16 ff ff ff jmpq 470c96 : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.28 : 470d80: 45 84 f6 test %r14b,%r14b 0.00 : 470d83: 48 63 c6 movslq %esi,%rax 0.00 : 470d86: 74 30 je 470db8 0.00 : 470d88: 0f b6 4a 5e movzbl 0x5e(%rdx),%ecx 0.00 : 470d8c: 80 f9 69 cmp $0x69,%cl 0.00 : 470d8f: 0f 84 cb 02 00 00 je 471060 0.00 : 470d95: 80 f9 63 cmp $0x63,%cl 0.00 : 470d98: 0f 84 52 01 00 00 je 470ef0 0.00 : 470d9e: 80 f9 64 cmp $0x64,%cl 0.00 : 470da1: 0f 84 19 03 00 00 je 4710c0 0.00 : 470da7: 48 8d 48 01 lea 0x1(%rax),%rcx 0.00 : 470dab: 48 83 e1 fe and $0xfffffffffffffffe,%rcx 0.00 : 470daf: 48 39 c1 cmp %rax,%rcx 0.00 : 470db2: 0f 84 38 01 00 00 je 470ef0 : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:382 1.39 : 470db8: 41 80 3c 03 00 cmpb $0x0,(%r11,%rax,1) 0.56 : 470dbd: 75 31 jne 470df0 0.00 : 470dbf: 0f b6 52 5e movzbl 0x5e(%rdx),%edx 0.00 : 470dc3: 80 fa 69 cmp $0x69,%dl 0.00 : 470dc6: 0f 84 c4 02 00 00 je 471090 0.00 : 470dcc: 80 fa 63 cmp $0x63,%dl 0.00 : 470dcf: 90 nop 0.00 : 470dd0: 74 1e je 470df0 0.00 : 470dd2: 80 fa 64 cmp $0x64,%dl 0.00 : 470dd5: 0f 84 05 03 00 00 je 4710e0 0.00 : 470ddb: 48 83 c0 01 add $0x1,%rax 0.00 : 470ddf: 45 31 f6 xor %r14d,%r14d 0.00 : 470de2: 89 c6 mov %eax,%esi 0.00 : 470de4: 83 e6 fe and $0xfffffffe,%esi 0.00 : 470de7: e9 8c fe ff ff jmpq 470c78 0.00 : 470dec: 0f 1f 40 00 nopl 0x0(%rax) : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); : : if (usecache) : att[i]->attcacheoff = off; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:393 2.22 : 470df0: 45 31 f6 xor %r14d,%r14d 0.00 : 470df3: e9 80 fe ff ff jmpq 470c78 0.00 : 470df8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 470dff: 00 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.00 : 470e00: 83 c6 03 add $0x3,%esi 0.00 : 470e03: 83 e6 fc and $0xfffffffc,%esi /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:390 3.89 : 470e06: e9 65 fe ff ff jmpq 470c70 0.00 : 470e0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 470e10: 48 63 de movslq %esi,%rbx 0.00 : 470e13: 4c 89 4d c8 mov %r9,-0x38(%rbp) 0.00 : 470e17: 44 89 55 c0 mov %r10d,-0x40(%rbp) 0.00 : 470e1b: 49 8d 3c 1b lea (%r11,%rbx,1),%rdi 0.00 : 470e1f: 4c 89 5d b8 mov %r11,-0x48(%rbp) 0.00 : 470e23: e8 28 8a ff ff callq 469850 0.00 : 470e28: 4c 8b 5d b8 mov -0x48(%rbp),%r11 0.00 : 470e2c: 8d 74 03 01 lea 0x1(%rbx,%rax,1),%esi 0.00 : 470e30: 44 8b 55 c0 mov -0x40(%rbp),%r10d 0.00 : 470e34: 4c 8b 4d c8 mov -0x38(%rbp),%r9 0.00 : 470e38: e9 59 fe ff ff jmpq 470c96 0.00 : 470e3d: 0f 1f 00 nopl (%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:399 3.61 : 470e40: 45 0f b7 41 06 movzwl 0x6(%r9),%r8d 0.00 : 470e45: e9 f6 fe ff ff jmpq 470d40 0.00 : 470e4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 1.11 : 470e50: 48 63 c6 movslq %esi,%rax 0.00 : 470e53: 49 8d 04 03 lea (%r11,%rax,1),%rax : } 0.00 : 470e57: 48 83 c4 28 add $0x28,%rsp 0.00 : 470e5b: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:407 1.94 : 470e5c: 41 5c pop %r12 1.67 : 470e5e: 41 5d pop %r13 0.00 : 470e60: 41 5e pop %r14 0.00 : 470e62: 41 5f pop %r15 0.83 : 470e64: c9 leaveq 1.11 : 470e65: c3 retq 0.00 : 470e66: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 470e6d: 00 00 00 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.00 : 470e70: 83 c6 07 add $0x7,%esi 0.00 : 470e73: 83 e6 f8 and $0xfffffff8,%esi 0.00 : 470e76: e9 f5 fd ff ff jmpq 470c70 0.00 : 470e7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 470e80: 48 83 c4 28 add $0x28,%rsp : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 470e84: 48 98 cltq : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 470e86: 5b pop %rbx 0.00 : 470e87: 41 5c pop %r12 0.00 : 470e89: 41 5d pop %r13 0.00 : 470e8b: 41 5e pop %r14 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 470e8d: 49 8d 04 03 lea (%r11,%rax,1),%rax : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 470e91: 41 5f pop %r15 0.00 : 470e93: c9 leaveq 0.00 : 470e94: c3 retq 0.00 : 470e95: 0f 1f 00 nopl (%rax) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 470e98: 41 8b 04 13 mov (%r11,%rdx,1),%eax 0.00 : 470e9c: c1 e8 02 shr $0x2,%eax 0.00 : 470e9f: 8d 34 30 lea (%rax,%rsi,1),%esi 0.00 : 470ea2: e9 ef fd ff ff jmpq 470c96 0.00 : 470ea7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 470eae: 00 00 : else : { : /* check for nulls in any "earlier" bytes */ : int i; : : for (i = 0; i < byte; i++) 0.00 : 470eb0: 85 f6 test %esi,%esi 0.00 : 470eb2: 7e 2b jle 470edf : { : if (bp[i] != 0xFF) 0.00 : 470eb4: 31 d2 xor %edx,%edx 0.00 : 470eb6: 41 80 79 08 ff cmpb $0xff,0x8(%r9) 0.00 : 470ebb: 4c 89 c9 mov %r9,%rcx 0.00 : 470ebe: 74 18 je 470ed8 0.00 : 470ec0: e9 60 fd ff ff jmpq 470c25 0.00 : 470ec5: 0f 1f 00 nopl (%rax) 0.00 : 470ec8: 0f b6 41 09 movzbl 0x9(%rcx),%eax 0.00 : 470ecc: 48 83 c1 01 add $0x1,%rcx 0.00 : 470ed0: 04 01 add $0x1,%al 0.00 : 470ed2: 0f 85 4d fd ff ff jne 470c25 : else : { : /* check for nulls in any "earlier" bytes */ : int i; : : for (i = 0; i < byte; i++) 0.00 : 470ed8: 83 c2 01 add $0x1,%edx 0.00 : 470edb: 39 d6 cmp %edx,%esi 0.00 : 470edd: 7f e9 jg 470ec8 0.00 : 470edf: b8 10 00 00 00 mov $0x10,%eax 0.00 : 470ee4: e9 ae fc ff ff jmpq 470b97 0.00 : 470ee9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; 0.00 : 470ef0: 89 72 54 mov %esi,0x54(%rdx) 0.00 : 470ef3: 41 be 01 00 00 00 mov $0x1,%r14d : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 470ef9: e9 7a fd ff ff jmpq 470c78 0.00 : 470efe: 66 90 xchg %ax,%ax : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 470f00: 48 63 c6 movslq %esi,%rax /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:406 1.11 : 470f03: 41 8b 04 03 mov (%r11,%rax,1),%eax 2.50 : 470f07: e9 4b ff ff ff jmpq 470e57 0.00 : 470f0c: 0f 1f 40 00 nopl 0x0(%rax) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 470f10: 41 0f b6 54 13 01 movzbl 0x1(%r11,%rdx,1),%edx 0.00 : 470f16: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 470f1b: 80 fa 01 cmp $0x1,%dl 0.00 : 470f1e: 0f 84 54 fe ff ff je 470d78 0.00 : 470f24: 80 fa 12 cmp $0x12,%dl 0.00 : 470f27: b8 03 00 00 00 mov $0x3,%eax 0.00 : 470f2c: ba 12 00 00 00 mov $0x12,%edx 0.00 : 470f31: 0f 44 c2 cmove %edx,%eax 0.00 : 470f34: 8d 34 30 lea (%rax,%rsi,1),%esi 0.00 : 470f37: e9 5a fd ff ff jmpq 470c96 : /* : * Otherwise, check for non-fixed-length attrs up to and including : * target. If there aren't any, it's safe to cheaply initialize the : * cached offsets for these attrs. : */ : if (IndexTupleHasVarwidths(tup)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:289 3.61 : 470f3c: 66 41 f7 c0 00 40 test $0x4000,%r8w 0.00 : 470f42: 0f 84 58 01 00 00 je 4710a0 : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 470f48: 45 85 d2 test %r10d,%r10d 0.00 : 470f4b: 0f 88 4f 01 00 00 js 4710a0 : { : if (att[j]->attlen <= 0) 0.00 : 470f51: 49 8b 0f mov (%r15),%rcx 0.00 : 470f54: 31 d2 xor %edx,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:295 2.50 : 470f56: 66 83 79 4c 00 cmpw $0x0,0x4c(%rcx) 0.00 : 470f5b: 7f 1d jg 470f7a 0.00 : 470f5d: 0f 1f 00 nopl (%rax) 0.00 : 470f60: e9 c4 fc ff ff jmpq 470c29 0.00 : 470f65: 0f 1f 00 nopl (%rax) 0.00 : 470f68: 48 63 c2 movslq %edx,%rax 0.00 : 470f6b: 49 8b 04 c7 mov (%r15,%rax,8),%rax 0.00 : 470f6f: 66 83 78 4c 00 cmpw $0x0,0x4c(%rax) 0.00 : 470f74: 0f 8e af fc ff ff jle 470c29 : */ : if (IndexTupleHasVarwidths(tup)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 470f7a: 83 c2 01 add $0x1,%edx 0.00 : 470f7d: 41 39 d2 cmp %edx,%r10d 0.00 : 470f80: 7d e6 jge 470f68 : } : } : : if (!slow) : { : int natts = tupleDesc->natts; 0.00 : 470f82: 44 8b 0f mov (%rdi),%r9d : * it's cheap to compute offsets for fixed-width columns, we take the : * opportunity to initialize the cached offsets for *all* the leading : * fixed-width columns, in hope of avoiding future visits to this : * routine. : */ : att[0]->attcacheoff = 0; 0.00 : 470f85: c7 41 54 00 00 00 00 movl $0x0,0x54(%rcx) : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 470f8c: 41 83 f9 01 cmp $0x1,%r9d 0.00 : 470f90: 7e 35 jle 470fc7 0.00 : 470f92: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 470f96: 8b 50 54 mov 0x54(%rax),%edx 0.00 : 470f99: 85 d2 test %edx,%edx 0.00 : 470f9b: 0f 8e 64 01 00 00 jle 471105 0.00 : 470fa1: 4c 89 fa mov %r15,%rdx 0.00 : 470fa4: be 01 00 00 00 mov $0x1,%esi 0.00 : 470fa9: eb 14 jmp 470fbf 0.00 : 470fab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 470fb0: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 470fb4: 48 83 c2 08 add $0x8,%rdx 0.00 : 470fb8: 8b 40 54 mov 0x54(%rax),%eax 0.00 : 470fbb: 85 c0 test %eax,%eax 0.00 : 470fbd: 7e 19 jle 470fd8 : j++; 0.00 : 470fbf: 83 c6 01 add $0x1,%esi : * routine. : */ : att[0]->attcacheoff = 0; : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 470fc2: 41 39 f1 cmp %esi,%r9d 0.00 : 470fc5: 7f e9 jg 470fb0 : off += att[j]->attlen; : } : : Assert(j > attnum); : : off = att[attnum]->attcacheoff; 0.00 : 470fc7: 48 8b 03 mov (%rbx),%rax 0.00 : 470fca: 8b 70 54 mov 0x54(%rax),%esi 0.00 : 470fcd: e9 06 fd ff ff jmpq 470cd8 0.00 : 470fd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * routine. : */ : att[0]->attcacheoff = 0; : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 470fd8: 89 f0 mov %esi,%eax : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 470fda: 48 63 d0 movslq %eax,%rdx 0.00 : 470fdd: 49 8b 44 d7 f8 mov -0x8(%r15,%rdx,8),%rax : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 470fe2: 49 8d 14 d7 lea (%r15,%rdx,8),%rdx 0.00 : 470fe6: 48 8b 3a mov (%rdx),%rdi : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 470fe9: 8b 48 54 mov 0x54(%rax),%ecx 0.00 : 470fec: 0f b7 40 4c movzwl 0x4c(%rax),%eax : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 470ff0: 66 83 7f 4c 00 cmpw $0x0,0x4c(%rdi) : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 470ff5: 98 cwtl 0.00 : 470ff6: 8d 0c 08 lea (%rax,%rcx,1),%ecx : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 470ff9: 7f 3f jg 47103a 0.00 : 470ffb: eb ca jmp 470fc7 0.00 : 470ffd: 0f 1f 00 nopl (%rax) : break; : : off = att_align_nominal(off, att[j]->attalign); 0.00 : 471000: 3c 63 cmp $0x63,%al 0.00 : 471002: 74 0c je 471010 0.00 : 471004: 3c 64 cmp $0x64,%al 0.00 : 471006: 66 90 xchg %ax,%ax 0.00 : 471008: 74 46 je 471050 0.00 : 47100a: 83 c1 01 add $0x1,%ecx 0.00 : 47100d: 83 e1 fe and $0xfffffffe,%ecx : : att[j]->attcacheoff = off; 0.00 : 471010: 89 4f 54 mov %ecx,0x54(%rdi) : : off += att[j]->attlen; 0.00 : 471013: 48 8b 02 mov (%rdx),%rax : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; : : for (; j < natts; j++) 0.00 : 471016: 83 c6 01 add $0x1,%esi 0.00 : 471019: 41 39 f1 cmp %esi,%r9d : : off = att_align_nominal(off, att[j]->attalign); : : att[j]->attcacheoff = off; : : off += att[j]->attlen; 0.00 : 47101c: 44 0f b7 40 4c movzwl 0x4c(%rax),%r8d : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; : : for (; j < natts; j++) 0.00 : 471021: 7e a4 jle 470fc7 : { : if (att[j]->attlen <= 0) 0.00 : 471023: 48 63 c6 movslq %esi,%rax 0.00 : 471026: 49 8d 14 c7 lea (%r15,%rax,8),%rdx 0.00 : 47102a: 48 8b 3a mov (%rdx),%rdi 0.00 : 47102d: 66 83 7f 4c 00 cmpw $0x0,0x4c(%rdi) 0.00 : 471032: 7e 93 jle 470fc7 : : off = att_align_nominal(off, att[j]->attalign); : : att[j]->attcacheoff = off; : : off += att[j]->attlen; 0.00 : 471034: 41 0f bf c0 movswl %r8w,%eax 0.00 : 471038: 01 c1 add %eax,%ecx : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) : break; : : off = att_align_nominal(off, att[j]->attalign); 0.00 : 47103a: 0f b6 47 5e movzbl 0x5e(%rdi),%eax 0.00 : 47103e: 3c 69 cmp $0x69,%al 0.00 : 471040: 75 be jne 471000 0.00 : 471042: 83 c1 03 add $0x3,%ecx 0.00 : 471045: 83 e1 fc and $0xfffffffc,%ecx 0.00 : 471048: eb c6 jmp 471010 0.00 : 47104a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 471050: 83 c1 07 add $0x7,%ecx 0.00 : 471053: 83 e1 f8 and $0xfffffff8,%ecx 0.00 : 471056: eb b8 jmp 471010 0.00 : 471058: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 47105f: 00 : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 471060: 48 8d 48 03 lea 0x3(%rax),%rcx 0.00 : 471064: 48 83 e1 fc and $0xfffffffffffffffc,%rcx 0.00 : 471068: e9 42 fd ff ff jmpq 470daf 0.00 : 47106d: 0f 1f 00 nopl (%rax) : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 471070: 48 63 c6 movslq %esi,%rax 0.00 : 471073: 49 8b 04 03 mov (%r11,%rax,1),%rax : } 0.00 : 471077: 48 83 c4 28 add $0x28,%rsp 0.00 : 47107b: 5b pop %rbx 0.00 : 47107c: 41 5c pop %r12 0.00 : 47107e: 41 5d pop %r13 0.00 : 471080: 41 5e pop %r14 0.00 : 471082: 41 5f pop %r15 0.00 : 471084: c9 leaveq 0.00 : 471085: c3 retq 0.00 : 471086: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 47108d: 00 00 00 : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, 0.00 : 471090: 83 c6 03 add $0x3,%esi 0.00 : 471093: 45 31 f6 xor %r14d,%r14d 0.00 : 471096: 83 e6 fc and $0xfffffffc,%esi 0.00 : 471099: e9 da fb ff ff jmpq 470c78 0.00 : 47109e: 66 90 xchg %ax,%ax : */ : if (IndexTupleHasVarwidths(tup)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 4710a0: 49 8b 0f mov (%r15),%rcx 0.00 : 4710a3: e9 da fe ff ff jmpq 470f82 0.00 : 4710a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4710af: 00 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 4710b0: 48 98 cltq 0.00 : 4710b2: 49 8b 04 03 mov (%r11,%rax,1),%rax 0.00 : 4710b6: e9 9c fd ff ff jmpq 470e57 0.00 : 4710bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 4710c0: 48 8d 48 07 lea 0x7(%rax),%rcx 0.00 : 4710c4: 48 83 e1 f8 and $0xfffffffffffffff8,%rcx 0.00 : 4710c8: e9 e2 fc ff ff jmpq 470daf 0.00 : 4710cd: 0f 1f 00 nopl (%rax) : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 4710d0: 48 63 c6 movslq %esi,%rax 0.00 : 4710d3: 41 0f b7 04 03 movzwl (%r11,%rax,1),%eax 0.00 : 4710d8: e9 7a fd ff ff jmpq 470e57 0.00 : 4710dd: 0f 1f 00 nopl (%rax) : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, 0.00 : 4710e0: 83 c6 07 add $0x7,%esi 0.00 : 4710e3: 45 31 f6 xor %r14d,%r14d 0.00 : 4710e6: 83 e6 f8 and $0xfffffff8,%esi 0.00 : 4710e9: e9 8a fb ff ff jmpq 470c78 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 4710ee: 48 98 cltq 0.00 : 4710f0: 41 8b 04 03 mov (%r11,%rax,1),%eax 0.00 : 4710f4: e9 5e fd ff ff jmpq 470e57 0.00 : 4710f9: 48 98 cltq 0.00 : 4710fb: 41 0f b7 04 03 movzwl (%r11,%rax,1),%eax 0.00 : 471100: e9 52 fd ff ff jmpq 470e57 : } : } : } : } : : tp = (char *) tup + data_off; 0.00 : 471105: b8 01 00 00 00 mov $0x1,%eax 0.00 : 47110a: be 01 00 00 00 mov $0x1,%esi 0.00 : 47110f: e9 c6 fe ff ff jmpq 470fda Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:55 7.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 6.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:64 5.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:97 5.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:107 5.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 4.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:58 4.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:107 4.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 3.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 3.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 3.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:107 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:46 3.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:67 2.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:55 2.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:67 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:55 1.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:107 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:64 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:67 0.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:67 0.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:67 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000070dbd0 : : * Unlike plain atoi(), this will throw ereport() upon bad input format or : * overflow. : */ : int32 : pg_atoi(char *s, int size, int c) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 3.06 : 70dbd0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 7.24 : 70dbd1: 48 89 e5 mov %rsp,%rbp 0.00 : 70dbd4: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 3.34 : 70dbd6: 49 89 ff mov %rdi,%r15 0.28 : 70dbd9: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 5.29 : 70dbdb: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:38 3.62 : 70dbdd: 41 89 f5 mov %esi,%r13d 0.00 : 70dbe0: 41 54 push %r12 4.18 : 70dbe2: 53 push %rbx 3.06 : 70dbe3: 48 83 ec 18 sub $0x18,%rsp : : /* : * Some versions of strtol treat the empty string as an error, but some : * seem not to. Make an explicit test to be sure we catch it. : */ : if (s == NULL) 0.00 : 70dbe7: 48 85 ff test %rdi,%rdi : * Unlike plain atoi(), this will throw ereport() upon bad input format or : * overflow. : */ : int32 : pg_atoi(char *s, int size, int c) : { 0.84 : 70dbea: 89 55 c4 mov %edx,-0x3c(%rbp) : : /* : * Some versions of strtol treat the empty string as an error, but some : * seem not to. Make an explicit test to be sure we catch it. : */ : if (s == NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:46 3.06 : 70dbed: 0f 84 86 02 00 00 je 70de79 : elog(ERROR, "NULL pointer"); : if (*s == 0) 0.00 : 70dbf3: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 70dbf6: 0f 84 6b 02 00 00 je 70de67 : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : errno = 0; 0.00 : 70dbfc: e8 bf c0 d5 ff callq 469cc0 <__errno_location@plt> : l = strtol(s, &badp, 10); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:55 1.95 : 70dc01: 48 8d 75 d0 lea -0x30(%rbp),%rsi : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : errno = 0; 0.00 : 70dc05: c7 00 00 00 00 00 movl $0x0,(%rax) : l = strtol(s, &badp, 10); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:55 19.50 : 70dc0b: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 70dc10: 4c 89 ff mov %r15,%rdi : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : errno = 0; 0.00 : 70dc13: 48 89 c3 mov %rax,%rbx : l = strtol(s, &badp, 10); 0.00 : 70dc16: e8 75 bf d5 ff callq 469b90 : : /* We made no progress parsing the string, so bail out */ : if (s == badp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:58 4.74 : 70dc1b: 4c 8b 65 d0 mov -0x30(%rbp),%r12 : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : errno = 0; : l = strtol(s, &badp, 10); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:55 2.79 : 70dc1f: 49 89 c6 mov %rax,%r14 : : /* We made no progress parsing the string, so bail out */ : if (s == badp) 0.00 : 70dc22: 4d 39 e7 cmp %r12,%r15 0.00 : 70dc25: 0f 84 2a 02 00 00 je 70de55 : ereport(ERROR, : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : switch (size) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:64 6.41 : 70dc2b: 41 83 fd 02 cmp $0x2,%r13d 0.00 : 70dc2f: 0f 84 db 00 00 00 je 70dd10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:64 0.84 : 70dc35: 41 83 fd 04 cmp $0x4,%r13d 0.00 : 70dc39: 74 35 je 70dc70 0.00 : 70dc3b: 41 83 fd 01 cmp $0x1,%r13d 0.00 : 70dc3f: 90 nop 0.00 : 70dc40: 74 7e je 70dcc0 : ereport(ERROR, : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for 8-bit integer", s))); : break; : default: : elog(ERROR, "unsupported result size: %d", size); 0.00 : 70dc42: ba bd 43 8c 00 mov $0x8c43bd,%edx 0.00 : 70dc47: be 5a 00 00 00 mov $0x5a,%esi 0.00 : 70dc4c: bf f8 42 8c 00 mov $0x8c42f8,%edi 0.00 : 70dc51: e8 ca d7 06 00 callq 77b420 0.00 : 70dc56: 44 89 ea mov %r13d,%edx 0.00 : 70dc59: be 10 43 8c 00 mov $0x8c4310,%esi 0.00 : 70dc5e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70dc63: 31 c0 xor %eax,%eax 0.00 : 70dc65: e8 c6 d5 06 00 callq 77b230 0.00 : 70dc6a: e8 61 b8 d5 ff callq 4694d0 0.00 : 70dc6f: 90 nop : s))); : : switch (size) : { : case sizeof(int32): : if (errno == ERANGE 0.00 : 70dc70: 83 3b 22 cmpl $0x22,(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:67 0.84 : 70dc73: 74 0c je 70dc81 2.79 : 70dc75: 48 3d 00 00 00 80 cmp $0xffffffff80000000,%rax 0.00 : 70dc7b: 0f 8d a7 01 00 00 jge 70de28 : #if defined(HAVE_LONG_INT_64) : /* won't get ERANGE on these with 64-bit longs... */ : || l < INT_MIN || l > INT_MAX : #endif : ) : ereport(ERROR, 0.00 : 70dc81: 45 31 c0 xor %r8d,%r8d 0.00 : 70dc84: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70dc89: ba 4b 00 00 00 mov $0x4b,%edx 0.00 : 70dc8e: be f8 42 8c 00 mov $0x8c42f8,%esi 0.00 : 70dc93: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70dc98: e8 23 ce 06 00 callq 77aac0 0.00 : 70dc9d: 84 c0 test %al,%al 0.00 : 70dc9f: 0f 84 a3 00 00 00 je 70dd48 0.00 : 70dca5: bf 30 43 8c 00 mov $0x8c4330,%edi 0.00 : 70dcaa: 4c 89 fe mov %r15,%rsi 0.00 : 70dcad: 31 c0 xor %eax,%eax 0.00 : 70dcaf: e8 ec eb 06 00 callq 77c8a0 0.00 : 70dcb4: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 70dcb9: 89 c3 mov %eax,%ebx 0.00 : 70dcbb: e9 20 01 00 00 jmpq 70dde0 : ereport(ERROR, : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for type smallint", s))); : break; : case sizeof(int8): : if (errno == ERANGE || l < SCHAR_MIN || l > SCHAR_MAX) 0.00 : 70dcc0: 83 3b 22 cmpl $0x22,(%rbx) 0.00 : 70dcc3: 74 0a je 70dccf 0.00 : 70dcc5: 48 83 f8 80 cmp $0xffffffffffffff80,%rax 0.00 : 70dcc9: 0f 8d 81 00 00 00 jge 70dd50 : ereport(ERROR, 0.00 : 70dccf: 45 31 c0 xor %r8d,%r8d 0.00 : 70dcd2: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70dcd7: ba 57 00 00 00 mov $0x57,%edx 0.00 : 70dcdc: be f8 42 8c 00 mov $0x8c42f8,%esi 0.00 : 70dce1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70dce6: e8 d5 cd 06 00 callq 77aac0 0.00 : 70dceb: 84 c0 test %al,%al 0.00 : 70dced: 74 59 je 70dd48 0.00 : 70dcef: bf 90 43 8c 00 mov $0x8c4390,%edi 0.00 : 70dcf4: 4c 89 fe mov %r15,%rsi 0.00 : 70dcf7: 31 c0 xor %eax,%eax 0.00 : 70dcf9: e8 a2 eb 06 00 callq 77c8a0 0.00 : 70dcfe: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 70dd03: 89 c3 mov %eax,%ebx 0.00 : 70dd05: e9 d6 00 00 00 jmpq 70dde0 0.00 : 70dd0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : ereport(ERROR, : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for type integer", s))); : break; : case sizeof(int16): : if (errno == ERANGE || l < SHRT_MIN || l > SHRT_MAX) 0.00 : 70dd10: 83 3b 22 cmpl $0x22,(%rbx) 0.00 : 70dd13: 74 0c je 70dd21 0.00 : 70dd15: 48 3d 00 80 ff ff cmp $0xffffffffffff8000,%rax 0.00 : 70dd1b: 0f 8d ef 00 00 00 jge 70de10 : ereport(ERROR, 0.00 : 70dd21: 45 31 c0 xor %r8d,%r8d 0.00 : 70dd24: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70dd29: ba 51 00 00 00 mov $0x51,%edx 0.00 : 70dd2e: be f8 42 8c 00 mov $0x8c42f8,%esi 0.00 : 70dd33: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70dd38: e8 83 cd 06 00 callq 77aac0 0.00 : 70dd3d: 84 c0 test %al,%al 0.00 : 70dd3f: 0f 85 f8 00 00 00 jne 70de3d 0.00 : 70dd45: 0f 1f 00 nopl (%rax) : */ : while (*badp && *badp != c && isspace((unsigned char) *badp)) : badp++; : : if (*badp && *badp != c) : ereport(ERROR, 0.00 : 70dd48: e8 83 b7 d5 ff callq 4694d0 0.00 : 70dd4d: 0f 1f 00 nopl (%rax) : ereport(ERROR, : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for type smallint", s))); : break; : case sizeof(int8): : if (errno == ERANGE || l < SCHAR_MIN || l > SCHAR_MAX) 0.00 : 70dd50: 48 83 f8 7f cmp $0x7f,%rax 0.00 : 70dd54: 0f 8f 75 ff ff ff jg 70dccf : : /* : * Skip any trailing whitespace; if anything but whitespace remains before : * the terminating character, bail out : */ : while (*badp && *badp != c && isspace((unsigned char) *badp)) 0.28 : 70dd5a: 41 0f b6 1c 24 movzbl (%r12),%ebx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:97 5.85 : 70dd5f: 84 db test %bl,%bl 0.00 : 70dd61: 0f 84 91 00 00 00 je 70ddf8 0.00 : 70dd67: 0f be c3 movsbl %bl,%eax 0.00 : 70dd6a: 3b 45 c4 cmp -0x3c(%rbp),%eax 0.00 : 70dd6d: 0f 84 85 00 00 00 je 70ddf8 : * Unlike plain atoi(), this will throw ereport() upon bad input format or : * overflow. : */ : int32 : pg_atoi(char *s, int size, int c) : { 0.00 : 70dd73: e8 48 bb d5 ff callq 4698c0 <__ctype_b_loc@plt> 0.00 : 70dd78: 48 89 c1 mov %rax,%rcx 0.00 : 70dd7b: eb 1c jmp 70dd99 0.00 : 70dd7d: 0f 1f 00 nopl (%rax) : /* : * Skip any trailing whitespace; if anything but whitespace remains before : * the terminating character, bail out : */ : while (*badp && *badp != c && isspace((unsigned char) *badp)) : badp++; 0.00 : 70dd80: 49 83 c4 01 add $0x1,%r12 0.00 : 70dd84: 4c 89 65 d0 mov %r12,-0x30(%rbp) : : /* : * Skip any trailing whitespace; if anything but whitespace remains before : * the terminating character, bail out : */ : while (*badp && *badp != c && isspace((unsigned char) *badp)) 0.00 : 70dd88: 41 0f b6 1c 24 movzbl (%r12),%ebx 0.00 : 70dd8d: 84 db test %bl,%bl 0.00 : 70dd8f: 74 67 je 70ddf8 0.00 : 70dd91: 0f be c3 movsbl %bl,%eax 0.00 : 70dd94: 3b 45 c4 cmp -0x3c(%rbp),%eax 0.00 : 70dd97: 74 5f je 70ddf8 0.00 : 70dd99: 48 8b 01 mov (%rcx),%rax 0.00 : 70dd9c: 0f b6 d3 movzbl %bl,%edx 0.00 : 70dd9f: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 70dda4: 75 da jne 70dd80 : badp++; : : if (*badp && *badp != c) : ereport(ERROR, 0.00 : 70dda6: 45 31 c0 xor %r8d,%r8d 0.00 : 70dda9: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70ddae: ba 68 00 00 00 mov $0x68,%edx 0.00 : 70ddb3: be f8 42 8c 00 mov $0x8c42f8,%esi 0.00 : 70ddb8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70ddbd: e8 fe cc 06 00 callq 77aac0 0.00 : 70ddc2: 84 c0 test %al,%al 0.00 : 70ddc4: 74 82 je 70dd48 0.00 : 70ddc6: bf 18 ed 8b 00 mov $0x8bed18,%edi 0.00 : 70ddcb: 4c 89 fe mov %r15,%rsi 0.00 : 70ddce: 31 c0 xor %eax,%eax 0.00 : 70ddd0: e8 cb ea 06 00 callq 77c8a0 0.00 : 70ddd5: bf 82 00 02 02 mov $0x2020082,%edi 0.00 : 70ddda: 89 c3 mov %eax,%ebx 0.00 : 70dddc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 70dde0: e8 6b ef 06 00 callq 77cd50 0.00 : 70dde5: 89 de mov %ebx,%esi 0.00 : 70dde7: 89 c7 mov %eax,%edi 0.00 : 70dde9: 31 c0 xor %eax,%eax 0.00 : 70ddeb: e8 f0 c7 06 00 callq 77a5e0 0.00 : 70ddf0: e9 53 ff ff ff jmpq 70dd48 0.00 : 70ddf5: 0f 1f 00 nopl (%rax) : (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), : errmsg("invalid input syntax for integer: \"%s\"", : s))); : : return (int32) l; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:107 4.74 : 70ddf8: 48 83 c4 18 add $0x18,%rsp 0.00 : 70ddfc: 44 89 f0 mov %r14d,%eax 0.00 : 70ddff: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:107 5.85 : 70de00: 41 5c pop %r12 0.28 : 70de02: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:107 1.67 : 70de04: 41 5e pop %r14 0.00 : 70de06: 41 5f pop %r15 3.34 : 70de08: c9 leaveq 0.00 : 70de09: c3 retq 0.00 : 70de0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : ereport(ERROR, : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for type integer", s))); : break; : case sizeof(int16): : if (errno == ERANGE || l < SHRT_MIN || l > SHRT_MAX) 0.00 : 70de10: 48 3d ff 7f 00 00 cmp $0x7fff,%rax 0.00 : 70de16: 0f 8e 3e ff ff ff jle 70dd5a 0.00 : 70de1c: e9 00 ff ff ff jmpq 70dd21 0.00 : 70de21: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : s))); : : switch (size) : { : case sizeof(int32): : if (errno == ERANGE /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/numutils.c:67 0.56 : 70de28: 48 3d ff ff ff 7f cmp $0x7fffffff,%rax 0.00 : 70de2e: 66 90 xchg %ax,%ax 0.00 : 70de30: 0f 8f 4b fe ff ff jg 70dc81 3.06 : 70de36: 66 90 xchg %ax,%ax 0.56 : 70de38: e9 1d ff ff ff jmpq 70dd5a : (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), : errmsg("value \"%s\" is out of range for type integer", s))); : break; : case sizeof(int16): : if (errno == ERANGE || l < SHRT_MIN || l > SHRT_MAX) : ereport(ERROR, 0.00 : 70de3d: bf 60 43 8c 00 mov $0x8c4360,%edi 0.00 : 70de42: 4c 89 fe mov %r15,%rsi 0.00 : 70de45: 31 c0 xor %eax,%eax 0.00 : 70de47: e8 54 ea 06 00 callq 77c8a0 0.00 : 70de4c: bf 82 00 00 03 mov $0x3000082,%edi 0.00 : 70de51: 89 c3 mov %eax,%ebx 0.00 : 70de53: eb 8b jmp 70dde0 : errno = 0; : l = strtol(s, &badp, 10); : : /* We made no progress parsing the string, so bail out */ : if (s == badp) : ereport(ERROR, 0.00 : 70de55: 45 31 c0 xor %r8d,%r8d 0.00 : 70de58: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70de5d: ba 3e 00 00 00 mov $0x3e,%edx 0.00 : 70de62: e9 4c ff ff ff jmpq 70ddb3 : * seem not to. Make an explicit test to be sure we catch it. : */ : if (s == NULL) : elog(ERROR, "NULL pointer"); : if (*s == 0) : ereport(ERROR, 0.00 : 70de67: 45 31 c0 xor %r8d,%r8d 0.00 : 70de6a: b9 bd 43 8c 00 mov $0x8c43bd,%ecx 0.00 : 70de6f: ba 34 00 00 00 mov $0x34,%edx 0.00 : 70de74: e9 3a ff ff ff jmpq 70ddb3 : /* : * Some versions of strtol treat the empty string as an error, but some : * seem not to. Make an explicit test to be sure we catch it. : */ : if (s == NULL) : elog(ERROR, "NULL pointer"); 0.00 : 70de79: ba bd 43 8c 00 mov $0x8c43bd,%edx 0.00 : 70de7e: be 2f 00 00 00 mov $0x2f,%esi 0.00 : 70de83: bf f8 42 8c 00 mov $0x8c42f8,%edi 0.00 : 70de88: e8 93 d5 06 00 callq 77b420 0.00 : 70de8d: be 03 43 8c 00 mov $0x8c4303,%esi 0.00 : 70de92: bf 14 00 00 00 mov $0x14,%edi 0.00 : 70de97: 31 c0 xor %eax,%eax 0.00 : 70de99: e8 92 d3 06 00 callq 77b230 0.00 : 70de9e: e8 2d b6 d5 ff callq 4694d0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 64.79 ??:0 8.28 ??:0 4.73 ??:0 4.14 ??:0 4.14 ??:0 4.14 ??:0 4.14 ??:0 3.55 ??:0 0.89 ??:0 0.59 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000042590 <__mpn_lshift>: 0.30 : 42590: 0f 6f 7c d6 f8 movq -0x8(%rsi,%rdx,8),%mm7 ??:0 4.14 : 42595: 0f 6e c9 movd %ecx,%mm1 4.73 : 42598: b8 40 00 00 00 mov $0x40,%eax 0.00 : 4259d: 29 c8 sub %ecx,%eax 0.00 : 4259f: 0f 6e c0 movd %eax,%mm0 4.14 : 425a2: 0f 6f df movq %mm7,%mm3 ??:0 8.28 : 425a5: 0f d3 f8 psrlq %mm0,%mm7 ??:0 0.89 : 425a8: 48 0f 7e f8 movq %mm7,%rax 4.14 : 425ac: 48 83 ea 02 sub $0x2,%rdx 0.00 : 425b0: 7c 34 jl 425e6 <__mpn_lshift+0x56> 0.00 : 425b2: 66 90 xchg %ax,%ax 0.00 : 425b4: 0f 6f 34 d6 movq (%rsi,%rdx,8),%mm6 0.00 : 425b8: 0f 6f d6 movq %mm6,%mm2 0.00 : 425bb: 0f d3 f0 psrlq %mm0,%mm6 0.00 : 425be: 0f f3 d9 psllq %mm1,%mm3 0.00 : 425c1: 0f eb de por %mm6,%mm3 0.00 : 425c4: 0f 7f 5c d7 08 movq %mm3,0x8(%rdi,%rdx,8) 0.00 : 425c9: 74 1e je 425e9 <__mpn_lshift+0x59> 0.00 : 425cb: 0f 6f 7c d6 f8 movq -0x8(%rsi,%rdx,8),%mm7 0.00 : 425d0: 0f 6f df movq %mm7,%mm3 0.00 : 425d3: 0f d3 f8 psrlq %mm0,%mm7 0.00 : 425d6: 0f f3 d1 psllq %mm1,%mm2 0.00 : 425d9: 0f eb d7 por %mm7,%mm2 0.00 : 425dc: 0f 7f 14 d7 movq %mm2,(%rdi,%rdx,8) 0.00 : 425e0: 48 83 ea 02 sub $0x2,%rdx 0.00 : 425e4: 7d ce jge 425b4 <__mpn_lshift+0x24> 0.30 : 425e6: 0f 6f d3 movq %mm3,%mm2 0.59 : 425e9: 0f f3 d1 psllq %mm1,%mm2 3.55 : 425ec: 0f 7f 17 movq %mm2,(%rdi) ??:0 68.93 : 425ef: 0f 77 emms Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 38.32 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:377 5.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:377 2.80 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:354 2.80 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:375 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:553 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:432 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:481 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:594 1.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:461 1.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:354 1.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:370 1.25 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:349 1.25 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:354 1.25 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:440 1.25 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:462 1.25 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:458 1.25 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:354 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:354 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:368 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:458 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:467 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:467 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:474 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:215 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:594 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:373 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:373 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:373 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:206 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:211 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:368 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:368 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:426 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:474 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:481 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:354 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:594 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:646 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:370 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:372 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:374 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:373 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:375 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:375 0.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:375 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049ebc0 : : * latestRemovedXid. : */ : int : heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, : bool report_stats, TransactionId *latestRemovedXid) : { 0.31 : 49ebc0: 55 push %rbp 0.00 : 49ebc1: 48 89 e5 mov %rsp,%rbp 0.00 : 49ebc4: 41 57 push %r15 0.31 : 49ebc6: 41 56 push %r14 0.00 : 49ebc8: 41 55 push %r13 0.00 : 49ebca: 41 54 push %r12 0.00 : 49ebcc: 53 push %rbx 0.00 : 49ebcd: 48 81 ec 98 0d 00 00 sub $0xd98,%rsp : int ndeleted = 0; : Page page = BufferGetPage(buffer); 0.00 : 49ebd4: 85 f6 test %esi,%esi : * latestRemovedXid. : */ : int : heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, : bool report_stats, TransactionId *latestRemovedXid) : { 0.00 : 49ebd6: 48 89 bd 98 f2 ff ff mov %rdi,-0xd68(%rbp) 0.00 : 49ebdd: 89 b5 94 f2 ff ff mov %esi,-0xd6c(%rbp) 0.00 : 49ebe3: 89 95 90 f2 ff ff mov %edx,-0xd70(%rbp) 0.00 : 49ebe9: 4c 89 85 80 f2 ff ff mov %r8,-0xd80(%rbp) 0.00 : 49ebf0: 88 8d 8f f2 ff ff mov %cl,-0xd71(%rbp) : int ndeleted = 0; : Page page = BufferGetPage(buffer); 0.00 : 49ebf6: 0f 88 a4 06 00 00 js 49f2a0 0.00 : 49ebfc: 8b 85 94 f2 ff ff mov -0xd6c(%rbp),%eax 0.00 : 49ec02: 48 8b 15 ef 0e 72 00 mov 0x720eef(%rip),%rdx # bbfaf8 0.00 : 49ec09: 83 e8 01 sub $0x1,%eax 0.00 : 49ec0c: 48 98 cltq 0.00 : 49ec0e: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49ec12: 48 01 d0 add %rdx,%rax 0.00 : 49ec15: 48 89 85 a8 f2 ff ff mov %rax,-0xd58(%rbp) : * prunable tuples). If we find any tuples which may soon become : * prunable, we will save the lowest relevant XID in new_prune_xid. Also : * initialize the rest of our working state. : */ : prstate.new_prune_xid = InvalidTransactionId; : prstate.latestRemovedXid = *latestRemovedXid; 0.00 : 49ec1c: 48 8b 8d 80 f2 ff ff mov -0xd80(%rbp),%rcx : * First, initialize the new pd_prune_xid value to zero (indicating no : * prunable tuples). If we find any tuples which may soon become : * prunable, we will save the lowest relevant XID in new_prune_xid. Also : * initialize the rest of our working state. : */ : prstate.new_prune_xid = InvalidTransactionId; 0.00 : 49ec23: c7 85 10 f3 ff ff 00 movl $0x0,-0xcf0(%rbp) 0.00 : 49ec2a: 00 00 00 : prstate.latestRemovedXid = *latestRemovedXid; : prstate.nredirected = prstate.ndead = prstate.nunused = 0; : memset(prstate.marked, 0, sizeof(prstate.marked)); 0.00 : 49ec2d: 48 8d bd 10 f3 ff ff lea -0xcf0(%rbp),%rdi 0.00 : 49ec34: 48 81 c7 2c 09 00 00 add $0x92c,%rdi : * prunable tuples). If we find any tuples which may soon become : * prunable, we will save the lowest relevant XID in new_prune_xid. Also : * initialize the rest of our working state. : */ : prstate.new_prune_xid = InvalidTransactionId; : prstate.latestRemovedXid = *latestRemovedXid; 0.00 : 49ec3b: 8b 01 mov (%rcx),%eax : prstate.nredirected = prstate.ndead = prstate.nunused = 0; : memset(prstate.marked, 0, sizeof(prstate.marked)); 0.00 : 49ec3d: b9 24 00 00 00 mov $0x24,%ecx : * prunable, we will save the lowest relevant XID in new_prune_xid. Also : * initialize the rest of our working state. : */ : prstate.new_prune_xid = InvalidTransactionId; : prstate.latestRemovedXid = *latestRemovedXid; : prstate.nredirected = prstate.ndead = prstate.nunused = 0; 0.00 : 49ec42: c7 85 20 f3 ff ff 00 movl $0x0,-0xce0(%rbp) 0.00 : 49ec49: 00 00 00 0.00 : 49ec4c: c7 85 1c f3 ff ff 00 movl $0x0,-0xce4(%rbp) 0.00 : 49ec53: 00 00 00 0.00 : 49ec56: c7 85 18 f3 ff ff 00 movl $0x0,-0xce8(%rbp) 0.00 : 49ec5d: 00 00 00 : * prunable tuples). If we find any tuples which may soon become : * prunable, we will save the lowest relevant XID in new_prune_xid. Also : * initialize the rest of our working state. : */ : prstate.new_prune_xid = InvalidTransactionId; : prstate.latestRemovedXid = *latestRemovedXid; 0.00 : 49ec60: 89 85 14 f3 ff ff mov %eax,-0xcec(%rbp) : prstate.nredirected = prstate.ndead = prstate.nunused = 0; : memset(prstate.marked, 0, sizeof(prstate.marked)); 0.00 : 49ec66: 31 c0 xor %eax,%eax 0.00 : 49ec68: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 49ec6b: c7 07 00 00 00 00 movl $0x0,(%rdi) : : /* Scan the page */ : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 49ec71: 48 8b 9d a8 f2 ff ff mov -0xd58(%rbp),%rbx 0.00 : 49ec78: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 49ec7c: 66 83 f8 18 cmp $0x18,%ax 0.00 : 49ec80: 0f 87 fa 00 00 00 ja 49ed80 : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 49ec86: c7 85 a4 f2 ff ff 00 movl $0x0,-0xd5c(%rbp) 0.00 : 49ec8d: 00 00 00 : OldestXmin, : &prstate); : } : : /* Any error while applying the changes is critical */ : START_CRIT_SECTION(); 0.31 : 49ec90: 8b 05 06 b4 71 00 mov 0x71b406(%rip),%eax # bba09c : : /* Have we found any prunable items? */ : if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) 0.31 : 49ec96: 8b 95 18 f3 ff ff mov -0xce8(%rbp),%edx : OldestXmin, : &prstate); : } : : /* Any error while applying the changes is critical */ : START_CRIT_SECTION(); 0.00 : 49ec9c: 83 c0 01 add $0x1,%eax : : /* Have we found any prunable items? */ : if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) 0.00 : 49ec9f: 85 d2 test %edx,%edx : OldestXmin, : &prstate); : } : : /* Any error while applying the changes is critical */ : START_CRIT_SECTION(); 0.00 : 49eca1: 89 05 f5 b3 71 00 mov %eax,0x71b3f5(%rip) # bba09c : : /* Have we found any prunable items? */ : if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) 0.00 : 49eca7: 0f 8e e3 04 00 00 jle 49f190 0.00 : 49ecad: 8b 8d 1c f3 ff ff mov -0xce4(%rbp),%ecx 0.00 : 49ecb3: 8b 85 20 f3 ff ff mov -0xce0(%rbp),%eax : { : /* : * Apply the planned item changes, then repair page fragmentation, and : * update the page's hint bit about whether it has free line pointers. : */ : heap_page_prune_execute(buffer, 0.00 : 49ecb9: 48 8d 9d 10 f3 ff ff lea -0xcf0(%rbp),%rbx 0.00 : 49ecc0: 4c 8d a5 10 f3 ff ff lea -0xcf0(%rbp),%r12 0.00 : 49ecc7: 4c 8d ad 10 f3 ff ff lea -0xcf0(%rbp),%r13 0.00 : 49ecce: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi 0.00 : 49ecd4: 41 89 c8 mov %ecx,%r8d 0.00 : 49ecd7: 89 04 24 mov %eax,(%rsp) 0.00 : 49ecda: 48 81 c3 e6 06 00 00 add $0x6e6,%rbx 0.00 : 49ece1: 49 81 c4 a0 04 00 00 add $0x4a0,%r12 0.00 : 49ece8: 49 83 c5 14 add $0x14,%r13 0.00 : 49ecec: 49 89 d9 mov %rbx,%r9 0.00 : 49ecef: 4c 89 e1 mov %r12,%rcx 0.00 : 49ecf2: 4c 89 ee mov %r13,%rsi 0.00 : 49ecf5: e8 e6 fd ff ff callq 49eae0 : : /* : * Update the page's pd_prune_xid field to either zero, or the lowest : * XID of any soon-prunable tuple. : */ : ((PageHeader) page)->pd_prune_xid = prstate.new_prune_xid; 0.00 : 49ecfa: 48 8b b5 a8 f2 ff ff mov -0xd58(%rbp),%rsi 0.00 : 49ed01: 8b 85 10 f3 ff ff mov -0xcf0(%rbp),%eax : /* : * Also clear the "page is full" flag, since there's no point in : * repeating the prune/defrag process until something else happens to : * the page. : */ : PageClearFull(page); 0.00 : 49ed07: 66 83 66 0a fd andw $0xfffd,0xa(%rsi) : : /* : * Update the page's pd_prune_xid field to either zero, or the lowest : * XID of any soon-prunable tuple. : */ : ((PageHeader) page)->pd_prune_xid = prstate.new_prune_xid; 0.00 : 49ed0c: 89 46 14 mov %eax,0x14(%rsi) : * repeating the prune/defrag process until something else happens to : * the page. : */ : PageClearFull(page); : : MarkBufferDirty(buffer); 0.00 : 49ed0f: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi 0.00 : 49ed15: e8 d6 5a 1d 00 callq 6747f0 : : /* : * Emit a WAL HEAP_CLEAN record showing what we did : */ : if (RelationNeedsWAL(relation)) 0.00 : 49ed1a: 48 8b 95 98 f2 ff ff mov -0xd68(%rbp),%rdx 0.00 : 49ed21: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 49ed25: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49ed29: 0f 84 69 08 00 00 je 49f598 : PageClearFull(page); : MarkBufferDirtyHint(buffer, true); : } : } : : END_CRIT_SECTION(); 0.31 : 49ed2f: 8b 05 67 b3 71 00 mov 0x71b367(%rip),%eax # bba09c 0.00 : 49ed35: 83 e8 01 sub $0x1,%eax : /* : * If requested, report the number of tuples reclaimed to pgstats. This is : * ndeleted minus ndead, because we don't want to count a now-DEAD root : * item as a deletion for this purpose. : */ : if (report_stats && ndeleted > prstate.ndead) 0.31 : 49ed38: 80 bd 8f f2 ff ff 00 cmpb $0x0,-0xd71(%rbp) : PageClearFull(page); : MarkBufferDirtyHint(buffer, true); : } : } : : END_CRIT_SECTION(); 0.00 : 49ed3f: 89 05 57 b3 71 00 mov %eax,0x71b357(%rip) # bba09c : /* : * If requested, report the number of tuples reclaimed to pgstats. This is : * ndeleted minus ndead, because we don't want to count a now-DEAD root : * item as a deletion for this purpose. : */ : if (report_stats && ndeleted > prstate.ndead) 0.00 : 49ed45: 74 12 je 49ed59 0.00 : 49ed47: 8b 85 1c f3 ff ff mov -0xce4(%rbp),%eax 0.00 : 49ed4d: 3b 85 a4 f2 ff ff cmp -0xd5c(%rbp),%eax 0.00 : 49ed53: 0f 8c b7 05 00 00 jl 49f310 : pgstat_update_heap_dead_tuples(relation, ndeleted - prstate.ndead); : : *latestRemovedXid = prstate.latestRemovedXid; 0.00 : 49ed59: 8b 85 14 f3 ff ff mov -0xcec(%rbp),%eax 0.00 : 49ed5f: 48 8b b5 80 f2 ff ff mov -0xd80(%rbp),%rsi 0.00 : 49ed66: 89 06 mov %eax,(%rsi) : * One possibility is to leave "fillfactor" worth of space in this page : * and update FSM with the remaining space. : */ : : return ndeleted; : } 0.31 : 49ed68: 8b 85 a4 f2 ff ff mov -0xd5c(%rbp),%eax 0.00 : 49ed6e: 48 81 c4 98 0d 00 00 add $0xd98,%rsp 0.00 : 49ed75: 5b pop %rbx 0.00 : 49ed76: 41 5c pop %r12 0.00 : 49ed78: 41 5d pop %r13 0.00 : 49ed7a: 41 5e pop %r14 0.00 : 49ed7c: 41 5f pop %r15 0.00 : 49ed7e: c9 leaveq 0.00 : 49ed7f: c3 retq : prstate.latestRemovedXid = *latestRemovedXid; : prstate.nredirected = prstate.ndead = prstate.nunused = 0; : memset(prstate.marked, 0, sizeof(prstate.marked)); : : /* Scan the page */ : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 49ed80: 0f b7 c0 movzwl %ax,%eax 0.00 : 49ed83: 48 83 e8 18 sub $0x18,%rax 0.00 : 49ed87: 48 c1 e8 02 shr $0x2,%rax : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 49ed8b: 66 85 c0 test %ax,%ax : prstate.latestRemovedXid = *latestRemovedXid; : prstate.nredirected = prstate.ndead = prstate.nunused = 0; : memset(prstate.marked, 0, sizeof(prstate.marked)); : : /* Scan the page */ : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 49ed8e: 66 89 85 b0 f2 ff ff mov %ax,-0xd50(%rbp) : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 49ed95: 0f 84 eb fe ff ff je 49ec86 : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49ed9b: 8b 85 94 f2 ff ff mov -0xd6c(%rbp),%eax : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49eda1: 48 8d b5 10 f3 ff ff lea -0xcf0(%rbp),%rsi : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49eda8: c7 85 a4 f2 ff ff 00 movl $0x0,-0xd5c(%rbp) 0.00 : 49edaf: 00 00 00 0.00 : 49edb2: 41 be 01 00 00 00 mov $0x1,%r14d : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49edb8: 48 83 c6 04 add $0x4,%rsi : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49edbc: f7 d0 not %eax : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49edbe: 48 89 b5 68 f2 ff ff mov %rsi,-0xd98(%rbp) : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49edc5: 48 98 cltq 0.00 : 49edc7: 48 c1 e0 03 shl $0x3,%rax 0.00 : 49edcb: 48 89 85 00 f3 ff ff mov %rax,-0xd00(%rbp) 0.00 : 49edd2: 8b 85 94 f2 ff ff mov -0xd6c(%rbp),%eax 0.00 : 49edd8: 83 e8 01 sub $0x1,%eax 0.00 : 49eddb: 48 98 cltq 0.00 : 49eddd: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49ede1: 48 89 85 f8 f2 ff ff mov %rax,-0xd08(%rbp) 0.00 : 49ede8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49edef: 00 : offnum = OffsetNumberNext(offnum)) : { : ItemId itemid; : : /* Ignore items already processed as part of an earlier chain */ : if (prstate.marked[offnum]) 0.00 : 49edf0: 41 0f b7 c6 movzwl %r14w,%eax 0.00 : 49edf4: 48 89 85 78 f2 ff ff mov %rax,-0xd88(%rbp) 0.00 : 49edfb: 80 bc 05 3c fc ff ff cmpb $0x0,-0x3c4(%rbp,%rax,1) 0.00 : 49ee02: 00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:206 0.62 : 49ee03: 0f 85 b7 01 00 00 jne 49efc0 : continue; : : /* Nothing to do if slot is empty or already dead */ : itemid = PageGetItemId(page, offnum); : if (!ItemIdIsUsed(itemid) || ItemIdIsDead(itemid)) 0.31 : 49ee09: 48 8b 8d a8 f2 ff ff mov -0xd58(%rbp),%rcx : /* Ignore items already processed as part of an earlier chain */ : if (prstate.marked[offnum]) : continue; : : /* Nothing to do if slot is empty or already dead */ : itemid = PageGetItemId(page, offnum); 0.31 : 49ee10: 48 8d 50 ff lea -0x1(%rax),%rdx : if (!ItemIdIsUsed(itemid) || ItemIdIsDead(itemid)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:211 0.62 : 49ee14: 8b 44 81 14 mov 0x14(%rcx,%rax,4),%eax 0.00 : 49ee18: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49ee1d: 0f 84 9d 01 00 00 je 49efc0 0.00 : 49ee23: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 49ee28: 0f 84 92 01 00 00 je 49efc0 : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.31 : 49ee2e: 8b 8d 94 f2 ff ff mov -0xd6c(%rbp),%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:349 1.25 : 49ee34: 85 c9 test %ecx,%ecx 0.00 : 49ee36: 0f 88 84 04 00 00 js 49f2c0 0.31 : 49ee3c: 48 8b b5 f8 f2 ff ff mov -0xd08(%rbp),%rsi 0.00 : 49ee43: 48 03 35 ae 0c 72 00 add 0x720cae(%rip),%rsi # bbfaf8 0.00 : 49ee4a: 48 89 b5 f0 f2 ff ff mov %rsi,-0xd10(%rbp) : TransactionId priorXmax = InvalidTransactionId; : ItemId rootlp; : HeapTupleHeader htup; : OffsetNumber latestdead = InvalidOffsetNumber, : maxoff = PageGetMaxOffsetNumber(dp), /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:354 0.93 : 49ee51: 48 8b 8d f0 f2 ff ff mov -0xd10(%rbp),%rcx 1.25 : 49ee58: 0f b7 41 0c movzwl 0xc(%rcx),%eax 2.80 : 49ee5c: 66 c7 85 d0 f2 ff ff movw $0x0,-0xd30(%rbp) 0.00 : 49ee63: 00 00 0.00 : 49ee65: 66 83 f8 18 cmp $0x18,%ax 0.00 : 49ee69: 0f 87 01 03 00 00 ja 49f170 : OffsetNumber chainitems[MaxHeapTuplesPerPage]; : int nchain = 0, : i; : HeapTupleData tup; : : tup.t_tableOid = RelationGetRelid(relation); 0.00 : 49ee6f: 48 8b 9d 98 f2 ff ff mov -0xd68(%rbp),%rbx : rootlp = PageGetItemId(dp, rootoffnum); : : /* : * If it's a heap-only tuple, then it is not the start of a HOT chain. : */ : if (ItemIdIsNormal(rootlp)) 0.00 : 49ee76: 48 8b b5 f0 f2 ff ff mov -0xd10(%rbp),%rsi 0.31 : 49ee7d: 48 83 c2 04 add $0x4,%rdx : OffsetNumber chainitems[MaxHeapTuplesPerPage]; : int nchain = 0, : i; : HeapTupleData tup; : : tup.t_tableOid = RelationGetRelid(relation); 0.31 : 49ee81: 8b 4b 40 mov 0x40(%rbx),%ecx : rootlp = PageGetItemId(dp, rootoffnum); : : /* : * If it's a heap-only tuple, then it is not the start of a HOT chain. : */ : if (ItemIdIsNormal(rootlp)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:368 0.62 : 49ee84: 48 89 95 70 f2 ff ff mov %rdx,-0xd90(%rbp) : OffsetNumber chainitems[MaxHeapTuplesPerPage]; : int nchain = 0, : i; : HeapTupleData tup; : : tup.t_tableOid = RelationGetRelid(relation); 0.00 : 49ee8b: 89 4d bc mov %ecx,-0x44(%rbp) : rootlp = PageGetItemId(dp, rootoffnum); : : /* : * If it's a heap-only tuple, then it is not the start of a HOT chain. : */ : if (ItemIdIsNormal(rootlp)) 0.62 : 49ee8e: 8b 44 96 08 mov 0x8(%rsi,%rdx,4),%eax 0.93 : 49ee92: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49ee97: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 49ee9c: 0f 84 2e 05 00 00 je 49f3d0 0.00 : 49eea2: 45 89 f5 mov %r14d,%r13d 0.31 : 49eea5: 66 c7 85 0e f3 ff ff movw $0x0,-0xcf2(%rbp) 0.00 : 49eeac: 00 00 0.31 : 49eeae: c7 85 ec f2 ff ff 00 movl $0x0,-0xd14(%rbp) 0.00 : 49eeb5: 00 00 00 0.00 : 49eeb8: 45 31 ff xor %r15d,%r15d 0.31 : 49eebb: c7 85 08 f3 ff ff 01 movl $0x1,-0xcf8(%rbp) 0.00 : 49eec2: 00 00 00 : ItemId lp; : bool tupdead, : recent_dead; : : /* Some sanity checks */ : if (offnum < FirstOffsetNumber || offnum > maxoff) 0.31 : 49eec5: 66 45 85 ed test %r13w,%r13w : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49eec9: 44 89 bd cc f2 ff ff mov %r15d,-0xd34(%rbp) : ItemId lp; : bool tupdead, : recent_dead; : : /* Some sanity checks */ : if (offnum < FirstOffsetNumber || offnum > maxoff) 0.31 : 49eed0: 0f 85 0a 01 00 00 jne 49efe0 : * Advance to next chain member. : */ : Assert(ItemPointerGetBlockNumber(&htup->t_ctid) == : BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:553 1.87 : 49eed6: 44 0f b7 ad 0e f3 ff movzwl -0xcf2(%rbp),%r13d 0.00 : 49eedd: ff : /* : * If we found a DEAD tuple in the chain, adjust the HOT chain so that all : * the DEAD tuples at the start of the chain are removed and the root line : * pointer is appropriately redirected. : */ : if (OffsetNumberIsValid(latestdead)) 0.00 : 49eede: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 49eee2: 66 3d ff 07 cmp $0x7ff,%ax 0.00 : 49eee6: 0f 87 f4 03 00 00 ja 49f2e0 : * from the chain. : * : * When the previous item is the last dead tuple seen, we are at the : * right candidate for redirection. : */ : for (i = 1; (i < nchain) && (chainitems[i - 1] != latestdead); i++) 0.00 : 49eeec: 83 bd cc f2 ff ff 01 cmpl $0x1,-0xd34(%rbp) 0.00 : 49eef3: 0f 8e 19 07 00 00 jle 49f612 0.00 : 49eef9: 66 44 3b ad 60 fd ff cmp -0x2a0(%rbp),%r13w 0.00 : 49ef00: ff 0.00 : 49ef01: 0f 84 0b 07 00 00 je 49f612 0.00 : 49ef07: 8b b5 20 f3 ff ff mov -0xce0(%rbp),%esi 0.00 : 49ef0d: 48 8d 8d 62 fd ff ff lea -0x29e(%rbp),%rcx 0.00 : 49ef14: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 49ef1a: eb 11 jmp 49ef2d 0.00 : 49ef1c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 49ef20: 48 83 c1 02 add $0x2,%rcx 0.00 : 49ef24: 66 41 39 d5 cmp %dx,%r13w 0.00 : 49ef28: 74 2b je 49ef55 0.00 : 49ef2a: 41 89 f8 mov %edi,%r8d : { : heap_prune_record_unused(prstate, chainitems[i]); 0.00 : 49ef2d: 0f b7 11 movzwl (%rcx),%edx : /* Record item pointer to be marked unused */ : static void : heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->nunused < MaxHeapTuplesPerPage); : prstate->nowunused[prstate->nunused] = offnum; 0.00 : 49ef30: 48 63 c6 movslq %esi,%rax : * from the chain. : * : * When the previous item is the last dead tuple seen, we are at the : * right candidate for redirection. : */ : for (i = 1; (i < nchain) && (chainitems[i - 1] != latestdead); i++) 0.00 : 49ef33: 41 8d 78 01 lea 0x1(%r8),%edi : * latestRemovedXid. : */ : int : heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, : bool report_stats, TransactionId *latestRemovedXid) : { 0.00 : 49ef37: 83 c6 01 add $0x1,%esi : /* Record item pointer to be marked unused */ : static void : heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->nunused < MaxHeapTuplesPerPage); : prstate->nowunused[prstate->nunused] = offnum; 0.00 : 49ef3a: 66 89 94 45 f6 f9 ff mov %dx,-0x60a(%rbp,%rax,2) 0.00 : 49ef41: ff : prstate->nunused++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49ef42: 0f b7 c2 movzwl %dx,%eax 0.00 : 49ef45: c6 84 05 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rax,1) 0.00 : 49ef4c: 01 : * from the chain. : * : * When the previous item is the last dead tuple seen, we are at the : * right candidate for redirection. : */ : for (i = 1; (i < nchain) && (chainitems[i - 1] != latestdead); i++) 0.00 : 49ef4d: 3b bd cc f2 ff ff cmp -0xd34(%rbp),%edi 0.00 : 49ef53: 7c cb jl 49ef20 0.00 : 49ef55: 89 b5 20 f3 ff ff mov %esi,-0xce0(%rbp) 0.00 : 49ef5b: 44 89 c2 mov %r8d,%edx : /* : * If the root entry had been a normal tuple, we are deleting it, so : * count it in the result. But changing a redirect (even to DEAD : * state) doesn't count. : */ : if (ItemIdIsNormal(rootlp)) 0.00 : 49ef5e: 48 8b 8d 70 f2 ff ff mov -0xd90(%rbp),%rcx 0.00 : 49ef65: 48 8b 9d f0 f2 ff ff mov -0xd10(%rbp),%rbx : ndeleted++; 0.00 : 49ef6c: 83 c2 01 add $0x1,%edx : /* : * If the root entry had been a normal tuple, we are deleting it, so : * count it in the result. But changing a redirect (even to DEAD : * state) doesn't count. : */ : if (ItemIdIsNormal(rootlp)) 0.00 : 49ef6f: 8b 44 8b 08 mov 0x8(%rbx,%rcx,4),%eax 0.00 : 49ef73: 25 00 80 01 00 and $0x18000,%eax : ndeleted++; 0.00 : 49ef78: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 49ef7d: 44 0f 44 c2 cmove %edx,%r8d : /* : * If the DEAD tuple is at the end of the chain, the entire chain is : * dead and the root line pointer can be marked dead. Otherwise just : * redirect the root to the correct chain member. : */ : if (i >= nchain) 0.00 : 49ef81: 39 bd cc f2 ff ff cmp %edi,-0xd34(%rbp) 0.00 : 49ef87: 0f 8f b3 05 00 00 jg 49f540 : /* Record item pointer to be marked dead */ : static void : heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; 0.00 : 49ef8d: 48 63 85 1c f3 ff ff movslq -0xce4(%rbp),%rax 0.00 : 49ef94: 66 44 89 b4 45 b0 f7 mov %r14w,-0x850(%rbp,%rax,2) 0.00 : 49ef9b: ff ff : prstate->ndead++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49ef9d: 48 8b b5 78 f2 ff ff mov -0xd88(%rbp),%rsi : static void : heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; : prstate->ndead++; 0.00 : 49efa4: 83 85 1c f3 ff ff 01 addl $0x1,-0xce4(%rbp) : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49efab: c6 84 35 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rsi,1) 0.00 : 49efb2: 01 : itemid = PageGetItemId(page, offnum); : if (!ItemIdIsUsed(itemid) || ItemIdIsDead(itemid)) : continue; : : /* Process this item or chain of items */ : ndeleted += heap_prune_chain(relation, buffer, offnum, 0.00 : 49efb3: 44 01 85 a4 f2 ff ff add %r8d,-0xd5c(%rbp) 0.00 : 49efba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49efc0: 41 83 c6 01 add $0x1,%r14d : memset(prstate.marked, 0, sizeof(prstate.marked)); : : /* Scan the page */ : maxoff = PageGetMaxOffsetNumber(page); : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 49efc4: 66 44 39 b5 b0 f2 ff cmp %r14w,-0xd50(%rbp) 0.00 : 49efcb: ff 0.00 : 49efcc: 0f 83 1e fe ff ff jae 49edf0 0.00 : 49efd2: e9 b9 fc ff ff jmpq 49ec90 0.00 : 49efd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49efde: 00 00 : ItemId lp; : bool tupdead, : recent_dead; : : /* Some sanity checks */ : if (offnum < FirstOffsetNumber || offnum > maxoff) 0.00 : 49efe0: 66 44 3b ad d0 f2 ff cmp -0xd30(%rbp),%r13w 0.00 : 49efe7: ff 0.00 : 49efe8: 0f 87 e8 fe ff ff ja 49eed6 : break; : : /* If item is already processed, stop --- it must not be same chain */ : if (prstate->marked[offnum]) 0.00 : 49efee: 41 0f b7 c5 movzwl %r13w,%eax 0.00 : 49eff2: 80 bc 05 3c fc ff ff cmpb $0x0,-0x3c4(%rbp,%rax,1) 0.00 : 49eff9: 00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:426 0.62 : 49effa: 0f 85 d6 fe ff ff jne 49eed6 : break; : : lp = PageGetItemId(dp, offnum); : : /* Unused item obviously isn't part of the chain */ : if (!ItemIdIsUsed(lp)) 0.31 : 49f000: 48 8b 8d f0 f2 ff ff mov -0xd10(%rbp),%rcx 0.00 : 49f007: 48 8d 50 03 lea 0x3(%rax),%rdx 0.31 : 49f00b: 8b 44 91 08 mov 0x8(%rcx,%rdx,4),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:432 1.87 : 49f00f: 25 00 80 01 00 and $0x18000,%eax 0.00 : 49f014: 0f 84 bc fe ff ff je 49eed6 : /* : * If we are looking at the redirected root line pointer, jump to the : * first normal tuple in the chain. If we find a redirect somewhere : * else, stop --- it must not be same chain. : */ : if (ItemIdIsRedirected(lp)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:440 1.25 : 49f01a: 3d 00 00 01 00 cmp $0x10000,%eax 0.00 : 49f01f: 0f 84 fb 00 00 00 je 49f120 : /* : * Likewise, a dead item pointer can't be part of the chain. (We : * already eliminated the case of dead root tuple outside this : * function.) : */ : if (ItemIdIsDead(lp)) 0.31 : 49f025: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 49f02a: 0f 84 a6 fe ff ff je 49eed6 : break; : : Assert(ItemIdIsNormal(lp)); : htup = (HeapTupleHeader) PageGetItem(dp, lp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:458 0.93 : 49f030: 48 8b b5 f0 f2 ff ff mov -0xd10(%rbp),%rsi : : tup.t_data = htup; : tup.t_len = ItemIdGetLength(lp); : ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), offnum); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:462 1.25 : 49f037: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi : */ : if (ItemIdIsDead(lp)) : break; : : Assert(ItemIdIsNormal(lp)); : htup = (HeapTupleHeader) PageGetItem(dp, lp); 0.00 : 49f03d: 0f b7 44 96 08 movzwl 0x8(%rsi,%rdx,4),%eax 0.00 : 49f042: 48 89 f3 mov %rsi,%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:458 1.25 : 49f045: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 49f04a: 48 01 c3 add %rax,%rbx : : tup.t_data = htup; 0.00 : 49f04d: 48 89 5d c0 mov %rbx,-0x40(%rbp) : tup.t_len = ItemIdGetLength(lp); 0.00 : 49f051: 0f b7 44 96 0a movzwl 0xa(%rsi,%rdx,4),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:461 1.56 : 49f056: 66 d1 e8 shr %ax 0.31 : 49f059: 0f b7 c0 movzwl %ax,%eax 0.00 : 49f05c: 89 45 b0 mov %eax,-0x50(%rbp) : ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), offnum); 0.31 : 49f05f: e8 cc 4f 1d 00 callq 674030 0.31 : 49f064: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi 0.00 : 49f06a: c1 e8 10 shr $0x10,%eax 0.00 : 49f06d: 66 89 45 b4 mov %ax,-0x4c(%rbp) 0.00 : 49f071: e8 ba 4f 1d 00 callq 674030 : : /* : * Check the tuple XMIN against prior XMAX, if any : */ : if (TransactionIdIsValid(priorXmax) && /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:467 0.93 : 49f076: 8b 95 ec f2 ff ff mov -0xd14(%rbp),%edx : Assert(ItemIdIsNormal(lp)); : htup = (HeapTupleHeader) PageGetItem(dp, lp); : : tup.t_data = htup; : tup.t_len = ItemIdGetLength(lp); : ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), offnum); 0.00 : 49f07c: 66 89 45 b6 mov %ax,-0x4a(%rbp) 0.31 : 49f080: 66 44 89 6d b8 mov %r13w,-0x48(%rbp) : : /* : * Check the tuple XMIN against prior XMAX, if any : */ : if (TransactionIdIsValid(priorXmax) && 0.93 : 49f085: 85 d2 test %edx,%edx 0.00 : 49f087: 74 23 je 49f0ac 0.00 : 49f089: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 49f08d: ba 02 00 00 00 mov $0x2,%edx 0.00 : 49f092: 25 00 03 00 00 and $0x300,%eax 0.00 : 49f097: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 49f09c: 74 02 je 49f0a0 0.00 : 49f09e: 8b 13 mov (%rbx),%edx 0.00 : 49f0a0: 39 95 ec f2 ff ff cmp %edx,-0xd14(%rbp) 0.00 : 49f0a6: 0f 85 2a fe ff ff jne 49eed6 : break; : : /* : * OK, this tuple is indeed a member of the chain. : */ : chainitems[nchain++] = offnum; 0.00 : 49f0ac: 49 63 c7 movslq %r15d,%rax : /* : * Check tuple's visibility status. : */ : tupdead = recent_dead = false; : : switch (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer)) 0.00 : 49f0af: 48 8d 7d b0 lea -0x50(%rbp),%rdi : break; : : /* : * OK, this tuple is indeed a member of the chain. : */ : chainitems[nchain++] = offnum; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:474 0.93 : 49f0b3: 66 44 89 ac 45 60 fd mov %r13w,-0x2a0(%rbp,%rax,2) 0.00 : 49f0ba: ff ff 0.00 : 49f0bc: 8b 85 08 f3 ff ff mov -0xcf8(%rbp),%eax : /* : * Check tuple's visibility status. : */ : tupdead = recent_dead = false; : : switch (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer)) 0.00 : 49f0c2: 8b 95 94 f2 ff ff mov -0xd6c(%rbp),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:481 1.87 : 49f0c8: 8b b5 90 f2 ff ff mov -0xd70(%rbp),%esi : break; : : /* : * OK, this tuple is indeed a member of the chain. : */ : chainitems[nchain++] = offnum; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:474 0.62 : 49f0ce: 89 85 cc f2 ff ff mov %eax,-0xd34(%rbp) : /* : * Check tuple's visibility status. : */ : tupdead = recent_dead = false; : : switch (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:481 0.62 : 49f0d4: e8 47 5a 30 00 callq 7a4b20 0.00 : 49f0d9: 83 f8 04 cmp $0x4,%eax 0.00 : 49f0dc: 76 32 jbe 49f110 : * page prunable in heapam.c. : */ : break; : : default: : elog(ERROR, "unexpected HeapTupleSatisfiesVacuum result"); 0.00 : 49f0de: ba d0 30 7b 00 mov $0x7b30d0,%edx 0.00 : 49f0e3: be 08 02 00 00 mov $0x208,%esi 0.00 : 49f0e8: bf 55 30 7b 00 mov $0x7b3055,%edi 0.00 : 49f0ed: e8 2e c3 2d 00 callq 77b420 0.00 : 49f0f2: be 68 30 7b 00 mov $0x7b3068,%esi 0.00 : 49f0f7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 49f0fc: 31 c0 xor %eax,%eax 0.00 : 49f0fe: e8 2d c1 2d 00 callq 77b230 0.00 : 49f103: e8 c8 a3 fc ff callq 4694d0 0.00 : 49f108: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49f10f: 00 : /* : * Check tuple's visibility status. : */ : tupdead = recent_dead = false; : : switch (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer)) 0.31 : 49f110: 89 c0 mov %eax,%eax 0.00 : 49f112: ff 24 c5 a0 30 7b 00 jmpq *0x7b30a0(,%rax,8) 0.00 : 49f119: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * first normal tuple in the chain. If we find a redirect somewhere : * else, stop --- it must not be same chain. : */ : if (ItemIdIsRedirected(lp)) : { : if (nchain > 0) 0.00 : 49f120: 45 85 ff test %r15d,%r15d 0.00 : 49f123: 0f 8f ad fd ff ff jg 49eed6 : break; /* not at start of chain */ : chainitems[nchain++] = offnum; 0.00 : 49f129: 49 63 c7 movslq %r15d,%rax 0.00 : 49f12c: 66 44 89 ac 45 60 fd mov %r13w,-0x2a0(%rbp,%rax,2) 0.00 : 49f133: ff ff : offnum = ItemIdGetRedirect(rootlp); 0.00 : 49f135: 48 8b 9d 70 f2 ff ff mov -0xd90(%rbp),%rbx 0.00 : 49f13c: 44 0f b7 ad 0e f3 ff movzwl -0xcf2(%rbp),%r13d 0.00 : 49f143: ff 0.00 : 49f144: 44 0f b7 64 99 08 movzwl 0x8(%rcx,%rbx,4),%r12d 0.00 : 49f14a: 66 41 81 e4 ff 7f and $0x7fff,%r12w : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49f150: 66 44 89 ad 0e f3 ff mov %r13w,-0xcf2(%rbp) 0.00 : 49f157: ff 0.00 : 49f158: 41 83 c7 01 add $0x1,%r15d 0.00 : 49f15c: 83 85 08 f3 ff ff 01 addl $0x1,-0xcf8(%rbp) 0.00 : 49f163: 45 89 e5 mov %r12d,%r13d 0.00 : 49f166: e9 5a fd ff ff jmpq 49eec5 0.00 : 49f16b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Page dp = (Page) BufferGetPage(buffer); : TransactionId priorXmax = InvalidTransactionId; : ItemId rootlp; : HeapTupleHeader htup; : OffsetNumber latestdead = InvalidOffsetNumber, : maxoff = PageGetMaxOffsetNumber(dp), 0.31 : 49f170: 0f b7 c0 movzwl %ax,%eax 0.00 : 49f173: 48 83 e8 18 sub $0x18,%rax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:354 0.62 : 49f177: 48 c1 e8 02 shr $0x2,%rax 1.25 : 49f17b: 66 89 85 d0 f2 ff ff mov %ax,-0xd30(%rbp) 1.56 : 49f182: e9 e8 fc ff ff jmpq 49ee6f 0.00 : 49f187: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49f18e: 00 00 : : /* Any error while applying the changes is critical */ : START_CRIT_SECTION(); : : /* Have we found any prunable items? */ : if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) 0.00 : 49f190: 8b 8d 1c f3 ff ff mov -0xce4(%rbp),%ecx 0.00 : 49f196: 85 c9 test %ecx,%ecx 0.00 : 49f198: 0f 8e 92 01 00 00 jle 49f330 0.00 : 49f19e: 8b 85 20 f3 ff ff mov -0xce0(%rbp),%eax 0.00 : 49f1a4: e9 10 fb ff ff jmpq 49ecb9 0.00 : 49f1a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * This tuple may soon become DEAD. Update the hint field so : * that the page is reconsidered for pruning in future. : */ : heap_prune_record_prunable(prstate, 0.00 : 49f1b0: 0f b7 53 14 movzwl 0x14(%rbx),%edx 0.00 : 49f1b4: 89 d0 mov %edx,%eax 0.00 : 49f1b6: 25 00 18 00 00 and $0x1800,%eax 0.00 : 49f1bb: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49f1c0: 0f 84 52 03 00 00 je 49f518 0.00 : 49f1c6: 44 8b 63 04 mov 0x4(%rbx),%r12d : /* : * This should exactly match the PageSetPrunable macro. We can't store : * directly into the page header yet, so we update working state. : */ : Assert(TransactionIdIsNormal(xid)); : if (!TransactionIdIsValid(prstate->new_prune_xid) || 0.00 : 49f1ca: 8b b5 10 f3 ff ff mov -0xcf0(%rbp),%esi 0.00 : 49f1d0: 85 f6 test %esi,%esi 0.00 : 49f1d2: 0f 85 28 03 00 00 jne 49f500 : TransactionIdPrecedes(xid, prstate->new_prune_xid)) : prstate->new_prune_xid = xid; 0.00 : 49f1d8: 44 89 a5 10 f3 ff ff mov %r12d,-0xcf0(%rbp) : * find another DEAD tuple is a fairly unusual corner case.) : */ : if (tupdead) : { : latestdead = offnum; : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49f1df: 44 0f b7 ad 0e f3 ff movzwl -0xcf2(%rbp),%r13d 0.00 : 49f1e6: ff : : /* : * If the tuple is not HOT-updated, then we are at the end of this : * HOT-update chain. : */ : if (!HeapTupleHeaderIsHotUpdated(htup)) 0.00 : 49f1e7: f6 43 13 40 testb $0x40,0x13(%rbx) 0.00 : 49f1eb: 0f 84 ed fc ff ff je 49eede 0.00 : 49f1f1: 0f b7 53 14 movzwl 0x14(%rbx),%edx 0.00 : 49f1f5: f6 c6 08 test $0x8,%dh 0.00 : 49f1f8: 0f 85 e0 fc ff ff jne 49eede 0.00 : 49f1fe: 89 d0 mov %edx,%eax 0.00 : 49f200: 25 00 03 00 00 and $0x300,%eax 0.00 : 49f205: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 49f20a: 0f 84 ce fc ff ff je 49eede : * Advance to next chain member. : */ : Assert(ItemPointerGetBlockNumber(&htup->t_ctid) == : BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49f210: 89 d0 mov %edx,%eax : /* : * Advance to next chain member. : */ : Assert(ItemPointerGetBlockNumber(&htup->t_ctid) == : BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(&htup->t_ctid); 0.00 : 49f212: 44 0f b7 63 10 movzwl 0x10(%rbx),%r12d : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49f217: 25 00 18 00 00 and $0x1800,%eax 0.00 : 49f21c: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49f221: 74 65 je 49f288 0.00 : 49f223: 8b 5b 04 mov 0x4(%rbx),%ebx 0.00 : 49f226: 89 9d ec f2 ff ff mov %ebx,-0xd14(%rbp) 0.00 : 49f22c: e9 1f ff ff ff jmpq 49f150 0.00 : 49f231: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * find another DEAD tuple is a fairly unusual corner case.) : */ : if (tupdead) : { : latestdead = offnum; : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49f238: 48 8b b5 68 f2 ff ff mov -0xd98(%rbp),%rsi 0.00 : 49f23f: 48 89 df mov %rbx,%rdi 0.00 : 49f242: e8 e9 7e ff ff callq 497130 0.00 : 49f247: eb 9e jmp 49f1e7 0.00 : 49f249: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * This tuple may soon become DEAD. Update the hint field so : * that the page is reconsidered for pruning in future. : */ : heap_prune_record_prunable(prstate, 0.00 : 49f250: 0f b7 53 14 movzwl 0x14(%rbx),%edx 0.00 : 49f254: 89 d0 mov %edx,%eax 0.00 : 49f256: 25 00 18 00 00 and $0x1800,%eax 0.00 : 49f25b: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 49f260: 0f 84 72 02 00 00 je 49f4d8 0.00 : 49f266: 8b 5b 04 mov 0x4(%rbx),%ebx : /* : * This should exactly match the PageSetPrunable macro. We can't store : * directly into the page header yet, so we update working state. : */ : Assert(TransactionIdIsNormal(xid)); : if (!TransactionIdIsValid(prstate->new_prune_xid) || 0.00 : 49f269: 8b b5 10 f3 ff ff mov -0xcf0(%rbp),%esi 0.00 : 49f26f: 85 f6 test %esi,%esi 0.00 : 49f271: 0f 85 49 02 00 00 jne 49f4c0 : TransactionIdPrecedes(xid, prstate->new_prune_xid)) : prstate->new_prune_xid = xid; 0.00 : 49f277: 89 9d 10 f3 ff ff mov %ebx,-0xcf0(%rbp) 0.00 : 49f27d: e9 54 fc ff ff jmpq 49eed6 0.00 : 49f282: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Advance to next chain member. : */ : Assert(ItemPointerGetBlockNumber(&htup->t_ctid) == : BufferGetBlockNumber(buffer)); : offnum = ItemPointerGetOffsetNumber(&htup->t_ctid); : priorXmax = HeapTupleHeaderGetUpdateXid(htup); 0.00 : 49f288: 84 d2 test %dl,%dl 0.00 : 49f28a: 78 97 js 49f223 0.00 : 49f28c: 48 89 df mov %rbx,%rdi 0.00 : 49f28f: e8 8c 7e ff ff callq 497120 0.00 : 49f294: 89 85 ec f2 ff ff mov %eax,-0xd14(%rbp) 0.00 : 49f29a: e9 b1 fe ff ff jmpq 49f150 0.00 : 49f29f: 90 nop : int : heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, : bool report_stats, TransactionId *latestRemovedXid) : { : int ndeleted = 0; : Page page = BufferGetPage(buffer); 0.00 : 49f2a0: 89 f0 mov %esi,%eax 0.00 : 49f2a2: 48 8b 15 6f de 6d 00 mov 0x6dde6f(%rip),%rdx # b7d118 0.00 : 49f2a9: f7 d0 not %eax 0.00 : 49f2ab: 48 98 cltq 0.00 : 49f2ad: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 49f2b1: 48 89 95 a8 f2 ff ff mov %rdx,-0xd58(%rbp) 0.00 : 49f2b8: e9 5f f9 ff ff jmpq 49ec1c 0.00 : 49f2bd: 0f 1f 00 nopl (%rax) : heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, : TransactionId OldestXmin, : PruneState *prstate) : { : int ndeleted = 0; : Page dp = (Page) BufferGetPage(buffer); 0.00 : 49f2c0: 48 8b 05 51 de 6d 00 mov 0x6dde51(%rip),%rax # b7d118 0.00 : 49f2c7: 48 8b 9d 00 f3 ff ff mov -0xd00(%rbp),%rbx 0.00 : 49f2ce: 48 8b 04 18 mov (%rax,%rbx,1),%rax 0.00 : 49f2d2: 48 89 85 f0 f2 ff ff mov %rax,-0xd10(%rbp) 0.00 : 49f2d9: e9 73 fb ff ff jmpq 49ee51 0.00 : 49f2de: 66 90 xchg %ax,%ax : if (i >= nchain) : heap_prune_record_dead(prstate, rootoffnum); : else : heap_prune_record_redirect(prstate, rootoffnum, chainitems[i]); : } : else if (nchain < 2 && ItemIdIsRedirected(rootlp)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:594 0.62 : 49f2e0: 83 bd cc f2 ff ff 01 cmpl $0x1,-0xd34(%rbp) 0.00 : 49f2e7: 0f 8e 93 00 00 00 jle 49f380 : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; : prstate->ndead++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:646 0.62 : 49f2ed: 45 31 c0 xor %r8d,%r8d : itemid = PageGetItemId(page, offnum); : if (!ItemIdIsUsed(itemid) || ItemIdIsDead(itemid)) : continue; : : /* Process this item or chain of items */ : ndeleted += heap_prune_chain(relation, buffer, offnum, 0.00 : 49f2f0: 44 01 85 a4 f2 ff ff add %r8d,-0xd5c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:215 0.93 : 49f2f7: 41 83 c6 01 add $0x1,%r14d : memset(prstate.marked, 0, sizeof(prstate.marked)); : : /* Scan the page */ : maxoff = PageGetMaxOffsetNumber(page); : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.31 : 49f2fb: 66 44 39 b5 b0 f2 ff cmp %r14w,-0xd50(%rbp) 0.00 : 49f302: ff 0.00 : 49f303: 0f 83 e7 fa ff ff jae 49edf0 0.00 : 49f309: e9 82 f9 ff ff jmpq 49ec90 0.00 : 49f30e: 66 90 xchg %ax,%ax : * If requested, report the number of tuples reclaimed to pgstats. This is : * ndeleted minus ndead, because we don't want to count a now-DEAD root : * item as a deletion for this purpose. : */ : if (report_stats && ndeleted > prstate.ndead) : pgstat_update_heap_dead_tuples(relation, ndeleted - prstate.ndead); 0.00 : 49f310: 8b b5 a4 f2 ff ff mov -0xd5c(%rbp),%esi 0.00 : 49f316: 48 8b bd 98 f2 ff ff mov -0xd68(%rbp),%rdi 0.00 : 49f31d: 29 c6 sub %eax,%esi 0.00 : 49f31f: e8 ec 07 1a 00 callq 63fb10 0.00 : 49f324: e9 30 fa ff ff jmpq 49ed59 0.00 : 49f329: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* Any error while applying the changes is critical */ : START_CRIT_SECTION(); : : /* Have we found any prunable items? */ : if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) 0.00 : 49f330: 8b 85 20 f3 ff ff mov -0xce0(%rbp),%eax 0.00 : 49f336: 85 c0 test %eax,%eax 0.00 : 49f338: 0f 8f 7b f9 ff ff jg 49ecb9 : * : * Also clear the "page is full" flag if it is set, since there's no : * point in repeating the prune/defrag process until something else : * happens to the page. : */ : if (((PageHeader) page)->pd_prune_xid != prstate.new_prune_xid || 0.00 : 49f33e: 48 8b 8d a8 f2 ff ff mov -0xd58(%rbp),%rcx 0.00 : 49f345: 8b 85 10 f3 ff ff mov -0xcf0(%rbp),%eax 0.00 : 49f34b: 39 41 14 cmp %eax,0x14(%rcx) 0.00 : 49f34e: 75 0a jne 49f35a 0.00 : 49f350: f6 41 0a 02 testb $0x2,0xa(%rcx) 0.00 : 49f354: 0f 84 d5 f9 ff ff je 49ed2f : PageIsFull(page)) : { : ((PageHeader) page)->pd_prune_xid = prstate.new_prune_xid; 0.00 : 49f35a: 48 8b 9d a8 f2 ff ff mov -0xd58(%rbp),%rbx : PageClearFull(page); : MarkBufferDirtyHint(buffer, true); 0.00 : 49f361: be 01 00 00 00 mov $0x1,%esi : */ : if (((PageHeader) page)->pd_prune_xid != prstate.new_prune_xid || : PageIsFull(page)) : { : ((PageHeader) page)->pd_prune_xid = prstate.new_prune_xid; : PageClearFull(page); 0.00 : 49f366: 66 83 63 0a fd andw $0xfffd,0xa(%rbx) : * happens to the page. : */ : if (((PageHeader) page)->pd_prune_xid != prstate.new_prune_xid || : PageIsFull(page)) : { : ((PageHeader) page)->pd_prune_xid = prstate.new_prune_xid; 0.00 : 49f36b: 89 43 14 mov %eax,0x14(%rbx) : PageClearFull(page); : MarkBufferDirtyHint(buffer, true); 0.00 : 49f36e: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi 0.00 : 49f374: e8 17 56 1d 00 callq 674990 0.00 : 49f379: e9 b1 f9 ff ff jmpq 49ed2f 0.00 : 49f37e: 66 90 xchg %ax,%ax : if (i >= nchain) : heap_prune_record_dead(prstate, rootoffnum); : else : heap_prune_record_redirect(prstate, rootoffnum, chainitems[i]); : } : else if (nchain < 2 && ItemIdIsRedirected(rootlp)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:594 0.93 : 49f380: 48 8b 95 70 f2 ff ff mov -0xd90(%rbp),%rdx 0.00 : 49f387: 48 8b 8d f0 f2 ff ff mov -0xd10(%rbp),%rcx 0.00 : 49f38e: 8b 44 91 08 mov 0x8(%rcx,%rdx,4),%eax 1.87 : 49f392: 25 00 80 01 00 and $0x18000,%eax 0.31 : 49f397: 3d 00 00 01 00 cmp $0x10000,%eax 0.00 : 49f39c: 0f 85 4b ff ff ff jne 49f2ed : /* Record item pointer to be marked dead */ : static void : heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; 0.00 : 49f3a2: 48 63 85 1c f3 ff ff movslq -0xce4(%rbp),%rax : prstate->ndead++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f3a9: 45 31 c0 xor %r8d,%r8d : /* Record item pointer to be marked dead */ : static void : heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; 0.00 : 49f3ac: 66 44 89 b4 45 b0 f7 mov %r14w,-0x850(%rbp,%rax,2) 0.00 : 49f3b3: ff ff : prstate->ndead++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f3b5: 48 8b 9d 78 f2 ff ff mov -0xd88(%rbp),%rbx : static void : heap_prune_record_dead(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->ndead < MaxHeapTuplesPerPage); : prstate->nowdead[prstate->ndead] = offnum; : prstate->ndead++; 0.00 : 49f3bc: 83 85 1c f3 ff ff 01 addl $0x1,-0xce4(%rbp) : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f3c3: c6 84 1d 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rbx,1) 0.00 : 49f3ca: 01 0.00 : 49f3cb: e9 20 ff ff ff jmpq 49f2f0 : /* : * If it's a heap-only tuple, then it is not the start of a HOT chain. : */ : if (ItemIdIsNormal(rootlp)) : { : htup = (HeapTupleHeader) PageGetItem(dp, rootlp); 0.00 : 49f3d0: 48 8b 95 70 f2 ff ff mov -0xd90(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:370 0.62 : 49f3d7: 48 8b 9d f0 f2 ff ff mov -0xd10(%rbp),%rbx : : tup.t_data = htup; : tup.t_len = ItemIdGetLength(rootlp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:373 0.93 : 49f3de: 48 8b b5 f0 f2 ff ff mov -0xd10(%rbp),%rsi : tup.t_tableOid = RelationGetRelid(relation); : ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), rootoffnum); 0.00 : 49f3e5: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi : /* : * If it's a heap-only tuple, then it is not the start of a HOT chain. : */ : if (ItemIdIsNormal(rootlp)) : { : htup = (HeapTupleHeader) PageGetItem(dp, rootlp); 0.00 : 49f3eb: 0f b7 44 93 08 movzwl 0x8(%rbx,%rdx,4),%eax 0.31 : 49f3f0: 25 ff 7f 00 00 and $0x7fff,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:370 1.56 : 49f3f5: 48 01 c3 add %rax,%rbx : : tup.t_data = htup; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:372 0.62 : 49f3f8: 48 89 5d c0 mov %rbx,-0x40(%rbp) : tup.t_len = ItemIdGetLength(rootlp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:373 0.93 : 49f3fc: 0f b7 44 96 0a movzwl 0xa(%rsi,%rdx,4),%eax : tup.t_tableOid = RelationGetRelid(relation); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:374 0.62 : 49f401: 89 4d bc mov %ecx,-0x44(%rbp) : if (ItemIdIsNormal(rootlp)) : { : htup = (HeapTupleHeader) PageGetItem(dp, rootlp); : : tup.t_data = htup; : tup.t_len = ItemIdGetLength(rootlp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:373 0.62 : 49f404: 66 d1 e8 shr %ax 0.00 : 49f407: 0f b7 c0 movzwl %ax,%eax 0.93 : 49f40a: 89 45 b0 mov %eax,-0x50(%rbp) : tup.t_tableOid = RelationGetRelid(relation); : ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), rootoffnum); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:375 0.62 : 49f40d: e8 1e 4c 1d 00 callq 674030 0.31 : 49f412: 8b bd 94 f2 ff ff mov -0xd6c(%rbp),%edi 0.62 : 49f418: c1 e8 10 shr $0x10,%eax 0.00 : 49f41b: 66 89 45 b4 mov %ax,-0x4c(%rbp) 2.80 : 49f41f: e8 0c 4c 1d 00 callq 674030 0.31 : 49f424: 66 44 89 75 b8 mov %r14w,-0x48(%rbp) 0.62 : 49f429: 66 89 45 b6 mov %ax,-0x4a(%rbp) : : if (HeapTupleHeaderIsHeapOnly(htup)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:377 5.61 : 49f42d: 66 83 7b 12 00 cmpw $0x0,0x12(%rbx) 38.32 : 49f432: 0f 89 6a fa ff ff jns 49eea2 : * : * Note that we might first arrive at a dead heap-only tuple : * either here or while following a chain below. Whichever path : * gets there first will mark the tuple unused. : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) 0.00 : 49f438: 8b 95 94 f2 ff ff mov -0xd6c(%rbp),%edx 0.00 : 49f43e: 8b b5 90 f2 ff ff mov -0xd70(%rbp),%esi 0.00 : 49f444: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 49f448: e8 d3 56 30 00 callq 7a4b20 0.00 : 49f44d: 85 c0 test %eax,%eax 0.00 : 49f44f: 0f 85 98 fe ff ff jne 49f2ed 0.00 : 49f455: f6 43 13 40 testb $0x40,0x13(%rbx) 0.00 : 49f459: 74 19 je 49f474 0.00 : 49f45b: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 49f45f: f6 c4 08 test $0x8,%ah 0.00 : 49f462: 75 10 jne 49f474 0.00 : 49f464: 25 00 03 00 00 and $0x300,%eax 0.00 : 49f469: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 49f46e: 0f 85 79 fe ff ff jne 49f2ed : /* Record item pointer to be marked unused */ : static void : heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->nunused < MaxHeapTuplesPerPage); : prstate->nowunused[prstate->nunused] = offnum; 0.00 : 49f474: 8b 85 20 f3 ff ff mov -0xce0(%rbp),%eax : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49f47a: 48 89 df mov %rbx,%rdi : /* Record item pointer to be marked unused */ : static void : heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->nunused < MaxHeapTuplesPerPage); : prstate->nowunused[prstate->nunused] = offnum; 0.00 : 49f47d: 48 63 d0 movslq %eax,%rdx : prstate->nunused++; 0.00 : 49f480: 83 c0 01 add $0x1,%eax : /* Record item pointer to be marked unused */ : static void : heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) : { : Assert(prstate->nunused < MaxHeapTuplesPerPage); : prstate->nowunused[prstate->nunused] = offnum; 0.00 : 49f483: 66 44 89 b4 55 f6 f9 mov %r14w,-0x60a(%rbp,%rdx,2) 0.00 : 49f48a: ff ff : prstate->nunused++; 0.00 : 49f48c: 89 85 20 f3 ff ff mov %eax,-0xce0(%rbp) : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f492: 48 8b 85 78 f2 ff ff mov -0xd88(%rbp),%rax 0.00 : 49f499: c6 84 05 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rax,1) 0.00 : 49f4a0: 01 : */ : if (HeapTupleSatisfiesVacuum(&tup, OldestXmin, buffer) : == HEAPTUPLE_DEAD && !HeapTupleHeaderIsHotUpdated(htup)) : { : heap_prune_record_unused(prstate, rootoffnum); : HeapTupleHeaderAdvanceLatestRemovedXid(htup, 0.00 : 49f4a1: 48 8b b5 68 f2 ff ff mov -0xd98(%rbp),%rsi 0.00 : 49f4a8: e8 83 7c ff ff callq 497130 0.00 : 49f4ad: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 49f4b3: e9 38 fe ff ff jmpq 49f2f0 0.00 : 49f4b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49f4bf: 00 : /* : * This should exactly match the PageSetPrunable macro. We can't store : * directly into the page header yet, so we update working state. : */ : Assert(TransactionIdIsNormal(xid)); : if (!TransactionIdIsValid(prstate->new_prune_xid) || 0.00 : 49f4c0: 89 df mov %ebx,%edi 0.00 : 49f4c2: e8 19 0b 02 00 callq 4bffe0 0.00 : 49f4c7: 84 c0 test %al,%al 0.00 : 49f4c9: 0f 84 07 fa ff ff je 49eed6 0.00 : 49f4cf: 90 nop 0.00 : 49f4d0: e9 a2 fd ff ff jmpq 49f277 0.00 : 49f4d5: 0f 1f 00 nopl (%rax) : : /* : * This tuple may soon become DEAD. Update the hint field so : * that the page is reconsidered for pruning in future. : */ : heap_prune_record_prunable(prstate, 0.00 : 49f4d8: 84 d2 test %dl,%dl 0.00 : 49f4da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49f4e0: 0f 88 80 fd ff ff js 49f266 0.00 : 49f4e6: 48 89 df mov %rbx,%rdi 0.00 : 49f4e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 49f4f0: e8 2b 7c ff ff callq 497120 0.00 : 49f4f5: 89 c3 mov %eax,%ebx 0.00 : 49f4f7: e9 6d fd ff ff jmpq 49f269 0.00 : 49f4fc: 0f 1f 40 00 nopl 0x0(%rax) : /* : * This should exactly match the PageSetPrunable macro. We can't store : * directly into the page header yet, so we update working state. : */ : Assert(TransactionIdIsNormal(xid)); : if (!TransactionIdIsValid(prstate->new_prune_xid) || 0.00 : 49f500: 44 89 e7 mov %r12d,%edi 0.00 : 49f503: e8 d8 0a 02 00 callq 4bffe0 0.00 : 49f508: 84 c0 test %al,%al 0.00 : 49f50a: 0f 84 cf fc ff ff je 49f1df 0.00 : 49f510: e9 c3 fc ff ff jmpq 49f1d8 0.00 : 49f515: 0f 1f 00 nopl (%rax) : : /* : * This tuple may soon become DEAD. Update the hint field so : * that the page is reconsidered for pruning in future. : */ : heap_prune_record_prunable(prstate, 0.00 : 49f518: 84 d2 test %dl,%dl 0.00 : 49f51a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49f520: 0f 88 a0 fc ff ff js 49f1c6 0.00 : 49f526: 48 89 df mov %rbx,%rdi 0.00 : 49f529: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 49f530: e8 eb 7b ff ff callq 497120 0.00 : 49f535: 41 89 c4 mov %eax,%r12d 0.00 : 49f538: e9 8d fc ff ff jmpq 49f1ca 0.00 : 49f53d: 0f 1f 00 nopl (%rax) : * redirect the root to the correct chain member. : */ : if (i >= nchain) : heap_prune_record_dead(prstate, rootoffnum); : else : heap_prune_record_redirect(prstate, rootoffnum, chainitems[i]); 0.00 : 49f540: 48 63 c7 movslq %edi,%rax 0.00 : 49f543: 0f b7 94 45 60 fd ff movzwl -0x2a0(%rbp,%rax,2),%edx 0.00 : 49f54a: ff : static void : heap_prune_record_redirect(PruneState *prstate, : OffsetNumber offnum, OffsetNumber rdoffnum) : { : Assert(prstate->nredirected < MaxHeapTuplesPerPage); : prstate->redirected[prstate->nredirected * 2] = offnum; 0.00 : 49f54b: 8b 85 18 f3 ff ff mov -0xce8(%rbp),%eax 0.00 : 49f551: 01 c0 add %eax,%eax 0.00 : 49f553: 48 98 cltq 0.00 : 49f555: 66 44 89 b4 45 24 f3 mov %r14w,-0xcdc(%rbp,%rax,2) 0.00 : 49f55c: ff ff : prstate->redirected[prstate->nredirected * 2 + 1] = rdoffnum; 0.00 : 49f55e: 8b 85 18 f3 ff ff mov -0xce8(%rbp),%eax 0.00 : 49f564: 8d 44 00 01 lea 0x1(%rax,%rax,1),%eax 0.00 : 49f568: 48 98 cltq 0.00 : 49f56a: 66 89 94 45 24 f3 ff mov %dx,-0xcdc(%rbp,%rax,2) 0.00 : 49f571: ff : prstate->nredirected++; : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f572: 48 8b 85 78 f2 ff ff mov -0xd88(%rbp),%rax : OffsetNumber offnum, OffsetNumber rdoffnum) : { : Assert(prstate->nredirected < MaxHeapTuplesPerPage); : prstate->redirected[prstate->nredirected * 2] = offnum; : prstate->redirected[prstate->nredirected * 2 + 1] = rdoffnum; : prstate->nredirected++; 0.00 : 49f579: 83 85 18 f3 ff ff 01 addl $0x1,-0xce8(%rbp) : Assert(!prstate->marked[offnum]); : prstate->marked[offnum] = true; 0.00 : 49f580: c6 84 05 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rax,1) 0.00 : 49f587: 01 : Assert(!prstate->marked[rdoffnum]); : prstate->marked[rdoffnum] = true; 0.00 : 49f588: c6 84 15 3c fc ff ff movb $0x1,-0x3c4(%rbp,%rdx,1) 0.00 : 49f58f: 01 0.00 : 49f590: e9 5b fd ff ff jmpq 49f2f0 0.00 : 49f595: 0f 1f 00 nopl (%rax) : */ : if (RelationNeedsWAL(relation)) : { : XLogRecPtr recptr; : : recptr = log_heap_clean(relation, buffer, 0.00 : 49f598: 8b 85 14 f3 ff ff mov -0xcec(%rbp),%eax 0.00 : 49f59e: 8b 8d 18 f3 ff ff mov -0xce8(%rbp),%ecx 0.00 : 49f5a4: 4d 89 e0 mov %r12,%r8 0.00 : 49f5a7: 44 8b 8d 1c f3 ff ff mov -0xce4(%rbp),%r9d 0.00 : 49f5ae: 8b b5 94 f2 ff ff mov -0xd6c(%rbp),%esi 0.00 : 49f5b4: 4c 89 ea mov %r13,%rdx 0.00 : 49f5b7: 48 8b bd 98 f2 ff ff mov -0xd68(%rbp),%rdi 0.00 : 49f5be: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 49f5c2: 89 44 24 10 mov %eax,0x10(%rsp) 0.00 : 49f5c6: 8b 85 20 f3 ff ff mov -0xce0(%rbp),%eax 0.00 : 49f5cc: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 49f5d0: e8 8b 66 ff ff callq 495c60 0.00 : 49f5d5: 49 89 c0 mov %rax,%r8 : prstate.redirected, prstate.nredirected, : prstate.nowdead, prstate.ndead, : prstate.nowunused, prstate.nunused, : prstate.latestRemovedXid); : : PageSetLSN(BufferGetPage(buffer), recptr); 0.00 : 49f5d8: 8b 85 94 f2 ff ff mov -0xd6c(%rbp),%eax 0.00 : 49f5de: 85 c0 test %eax,%eax 0.00 : 49f5e0: 78 3f js 49f621 0.00 : 49f5e2: 8b 85 94 f2 ff ff mov -0xd6c(%rbp),%eax 0.00 : 49f5e8: 48 8b 15 09 05 72 00 mov 0x720509(%rip),%rdx # bbfaf8 0.00 : 49f5ef: 4c 89 c1 mov %r8,%rcx 0.00 : 49f5f2: 48 c1 e9 20 shr $0x20,%rcx 0.00 : 49f5f6: 83 e8 01 sub $0x1,%eax 0.00 : 49f5f9: 48 98 cltq 0.00 : 49f5fb: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49f5ff: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 49f602: 48 03 05 ef 04 72 00 add 0x7204ef(%rip),%rax # bbfaf8 0.00 : 49f609: 44 89 40 04 mov %r8d,0x4(%rax) 0.00 : 49f60d: e9 1d f7 ff ff jmpq 49ed2f : * from the chain. : * : * When the previous item is the last dead tuple seen, we are at the : * right candidate for redirection. : */ : for (i = 1; (i < nchain) && (chainitems[i - 1] != latestdead); i++) 0.00 : 49f612: bf 01 00 00 00 mov $0x1,%edi 0.00 : 49f617: 31 d2 xor %edx,%edx 0.00 : 49f619: 45 31 c0 xor %r8d,%r8d 0.00 : 49f61c: e9 3d f9 ff ff jmpq 49ef5e : prstate.redirected, prstate.nredirected, : prstate.nowdead, prstate.ndead, : prstate.nowunused, prstate.nunused, : prstate.latestRemovedXid); : : PageSetLSN(BufferGetPage(buffer), recptr); 0.00 : 49f621: f7 95 94 f2 ff ff notl -0xd6c(%rbp) 0.00 : 49f627: 48 8b 05 ea da 6d 00 mov 0x6ddaea(%rip),%rax # b7d118 0.00 : 49f62e: 48 63 8d 94 f2 ff ff movslq -0xd6c(%rbp),%rcx 0.00 : 49f635: 48 8b 14 c8 mov (%rax,%rcx,8),%rdx 0.00 : 49f639: 4c 89 c0 mov %r8,%rax 0.00 : 49f63c: 48 c1 e8 20 shr $0x20,%rax 0.00 : 49f640: 89 02 mov %eax,(%rdx) 0.00 : 49f642: 48 8b 05 cf da 6d 00 mov 0x6ddacf(%rip),%rax # b7d118 0.00 : 49f649: 48 8b 04 c8 mov (%rax,%rcx,8),%rax 0.00 : 49f64d: eb ba jmp 49f609 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.38 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:150 7.01 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 6.37 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:186 5.10 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 3.82 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:72 3.82 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:132 3.50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:68 3.18 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 3.18 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:151 2.87 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:72 2.23 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:64 2.23 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:69 2.23 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:123 2.23 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:130 2.23 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:162 1.91 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:111 1.91 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 1.91 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:186 1.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:123 1.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 1.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:173 1.59 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:186 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:40 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:57 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:72 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:72 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:109 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:173 1.27 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:184 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:103 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:66 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:66 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:109 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:40 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:49 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:50 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:111 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:186 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004712a0 : : */ : IndexTuple : index_form_tuple(TupleDesc tupleDescriptor, : Datum *values, : bool *isnull) : { 0.32 : 4712a0: 55 push %rbp 0.32 : 4712a1: 49 89 f0 mov %rsi,%r8 0.00 : 4712a4: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:40 0.64 : 4712a7: 41 57 push %r15 0.32 : 4712a9: 49 89 ff mov %rdi,%r15 0.00 : 4712ac: 41 56 push %r14 0.32 : 4712ae: 49 89 d6 mov %rdx,%r14 1.27 : 4712b1: 41 55 push %r13 0.32 : 4712b3: 41 54 push %r12 0.32 : 4712b5: 53 push %rbx 0.32 : 4712b6: 48 81 ec 68 01 00 00 sub $0x168,%rsp : data_size, : hoff; : int i; : unsigned short infomask = 0; : bool hasnull = false; : uint16 tupmask = 0; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:49 0.64 : 4712bd: 66 c7 45 ce 00 00 movw $0x0,-0x32(%rbp) : int numberOfAttributes = tupleDescriptor->natts; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:50 0.64 : 4712c3: 44 8b 2f mov (%rdi),%r13d : #ifdef TOAST_INDEX_HACK : Datum untoasted_values[INDEX_MAX_KEYS]; : bool untoasted_free[INDEX_MAX_KEYS]; : #endif : : if (numberOfAttributes > INDEX_MAX_KEYS) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:57 1.27 : 4712c6: 41 83 fd 20 cmp $0x20,%r13d 0.00 : 4712ca: 0f 8f 4d 03 00 00 jg 47161d : (errcode(ERRCODE_TOO_MANY_COLUMNS), : errmsg("number of index columns (%d) exceeds limit (%d)", : numberOfAttributes, INDEX_MAX_KEYS))); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:64 2.23 : 4712d0: 45 85 ed test %r13d,%r13d 0.00 : 4712d3: 0f 8e c3 02 00 00 jle 47159c : Datum untoasted_values[INDEX_MAX_KEYS]; : bool untoasted_free[INDEX_MAX_KEYS]; : #endif : : if (numberOfAttributes > INDEX_MAX_KEYS) : ereport(ERROR, 0.32 : 4712d9: 31 db xor %ebx,%ebx 0.32 : 4712db: 4c 8d 55 a0 lea -0x60(%rbp),%r10 0.32 : 4712df: eb 14 jmp 4712f5 0.00 : 4712e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* successful compression */ : if (untoasted_free[i]) : pfree(DatumGetPointer(untoasted_values[i])); : untoasted_values[i] = cvalue; : untoasted_free[i] = true; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:103 0.96 : 4712e8: 48 83 c3 01 add $0x1,%rbx : (errcode(ERRCODE_TOO_MANY_COLUMNS), : errmsg("number of index columns (%d) exceeds limit (%d)", : numberOfAttributes, INDEX_MAX_KEYS))); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 4712ec: 41 39 dd cmp %ebx,%r13d 0.00 : 4712ef: 0f 8e ab 00 00 00 jle 4713a0 : { : Form_pg_attribute att = tupleDescriptor->attrs[i]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:66 0.96 : 4712f5: 49 8b 47 08 mov 0x8(%r15),%rax : : untoasted_values[i] = values[i]; 0.00 : 4712f9: 49 8b 3c d8 mov (%r8,%rbx,8),%rdi : numberOfAttributes, INDEX_MAX_KEYS))); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) : { : Form_pg_attribute att = tupleDescriptor->attrs[i]; 0.96 : 4712fd: 4c 8b 24 d8 mov (%rax,%rbx,8),%r12 : : untoasted_values[i] = values[i]; : untoasted_free[i] = false; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:69 2.23 : 471301: 41 c6 04 1a 00 movb $0x0,(%r10,%rbx,1) : : /* Do nothing if value is NULL or not of varlena type */ : if (isnull[i] || att->attlen != -1) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:72 1.27 : 471306: 41 80 3c 1e 00 cmpb $0x0,(%r14,%rbx,1) : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) : { : Form_pg_attribute att = tupleDescriptor->attrs[i]; : : untoasted_values[i] = values[i]; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:68 3.50 : 47130b: 48 89 bc dd a0 fe ff mov %rdi,-0x160(%rbp,%rbx,8) 0.00 : 471312: ff : untoasted_free[i] = false; : : /* Do nothing if value is NULL or not of varlena type */ : if (isnull[i] || att->attlen != -1) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:72 1.27 : 471313: 75 d3 jne 4712e8 2.87 : 471315: 66 41 83 7c 24 4c ff cmpw $0xffff,0x4c(%r12) 3.82 : 47131c: 75 ca jne 4712e8 : : /* : * If value is stored EXTERNAL, must fetch it so we are not depending : * on outside storage. This should be improved someday. : */ : if (VARATT_IS_EXTERNAL(DatumGetPointer(values[i]))) 0.00 : 47131e: 80 3f 01 cmpb $0x1,(%rdi) 0.00 : 471321: 0f 84 a9 01 00 00 je 4714d0 : : /* : * If value is above size target, and is of a compressible datatype, : * try to compress it in-line. : */ : if (!VARATT_IS_EXTENDED(DatumGetPointer(untoasted_values[i])) && 0.00 : 471327: 48 8b bc dd a0 fe ff mov -0x160(%rbp,%rbx,8),%rdi 0.00 : 47132e: ff 0.00 : 47132f: f6 07 03 testb $0x3,(%rdi) 0.00 : 471332: 75 b4 jne 4712e8 0.00 : 471334: 8b 07 mov (%rdi),%eax 0.00 : 471336: c1 e8 02 shr $0x2,%eax 0.00 : 471339: 3d fe 01 00 00 cmp $0x1fe,%eax 0.00 : 47133e: 76 a8 jbe 4712e8 0.00 : 471340: 41 0f b6 44 24 5d movzbl 0x5d(%r12),%eax 0.00 : 471346: 3c 78 cmp $0x78,%al 0.00 : 471348: 74 04 je 47134e 0.00 : 47134a: 3c 6d cmp $0x6d,%al 0.00 : 47134c: 75 9a jne 4712e8 : VARSIZE(DatumGetPointer(untoasted_values[i])) > TOAST_INDEX_TARGET && : (att->attstorage == 'x' || att->attstorage == 'm')) : { : Datum cvalue = toast_compress_datum(untoasted_values[i]); 0.00 : 47134e: 4c 89 85 88 fe ff ff mov %r8,-0x178(%rbp) 0.00 : 471355: 4c 89 95 80 fe ff ff mov %r10,-0x180(%rbp) 0.00 : 47135c: e8 df ff 02 00 callq 4a1340 : : if (DatumGetPointer(cvalue) != NULL) 0.00 : 471361: 48 85 c0 test %rax,%rax : */ : if (!VARATT_IS_EXTENDED(DatumGetPointer(untoasted_values[i])) && : VARSIZE(DatumGetPointer(untoasted_values[i])) > TOAST_INDEX_TARGET && : (att->attstorage == 'x' || att->attstorage == 'm')) : { : Datum cvalue = toast_compress_datum(untoasted_values[i]); 0.00 : 471364: 49 89 c4 mov %rax,%r12 : : if (DatumGetPointer(cvalue) != NULL) 0.00 : 471367: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : 47136e: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 0.00 : 471375: 0f 84 6d ff ff ff je 4712e8 : { : /* successful compression */ : if (untoasted_free[i]) 0.00 : 47137b: 41 80 3c 1a 00 cmpb $0x0,(%r10,%rbx,1) 0.00 : 471380: 0f 85 f6 01 00 00 jne 47157c : pfree(DatumGetPointer(untoasted_values[i])); : untoasted_values[i] = cvalue; 0.00 : 471386: 4c 89 a4 dd a0 fe ff mov %r12,-0x160(%rbp,%rbx,8) 0.00 : 47138d: ff : untoasted_free[i] = true; 0.00 : 47138e: 41 c6 04 1a 01 movb $0x1,(%r10,%rbx,1) 0.00 : 471393: 48 83 c3 01 add $0x1,%rbx : (errcode(ERRCODE_TOO_MANY_COLUMNS), : errmsg("number of index columns (%d) exceeds limit (%d)", : numberOfAttributes, INDEX_MAX_KEYS))); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 471397: 41 39 dd cmp %ebx,%r13d 0.00 : 47139a: 0f 8f 55 ff ff ff jg 4712f5 : } : #endif : : for (i = 0; i < numberOfAttributes; i++) : { : if (isnull[i]) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:111 1.91 : 4713a0: 31 d2 xor %edx,%edx 0.00 : 4713a2: 41 80 3e 00 cmpb $0x0,(%r14) 0.00 : 4713a6: 4c 89 f1 mov %r14,%rcx 0.00 : 4713a9: 74 15 je 4713c0 0.00 : 4713ab: e9 58 01 00 00 jmpq 471508 0.64 : 4713b0: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 4713b4: 48 83 c1 01 add $0x1,%rcx 0.00 : 4713b8: 84 c0 test %al,%al 0.00 : 4713ba: 0f 85 48 01 00 00 jne 471508 : } : } : } : #endif : : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:109 1.27 : 4713c0: 83 c2 01 add $0x1,%edx 0.96 : 4713c3: 41 39 d5 cmp %edx,%r13d 0.00 : 4713c6: 7f e8 jg 4713b0 : if (hasnull) : infomask |= INDEX_NULL_MASK; : : hoff = IndexInfoFindDataOffset(infomask); : #ifdef TOAST_INDEX_HACK : data_size = heap_compute_data_size(tupleDescriptor, 0.00 : 4713c8: 48 8d b5 a0 fe ff ff lea -0x160(%rbp),%rsi 0.00 : 4713cf: 4c 89 f2 mov %r14,%rdx 0.00 : 4713d2: 4c 89 ff mov %r15,%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:123 1.59 : 4713d5: 4c 89 95 80 fe ff ff mov %r10,-0x180(%rbp) : size = MAXALIGN(size); /* be conservative */ : : tp = (char *) palloc0(size); : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 4713dc: 45 31 e4 xor %r12d,%r12d : if (hasnull) : infomask |= INDEX_NULL_MASK; : : hoff = IndexInfoFindDataOffset(infomask); : #ifdef TOAST_INDEX_HACK : data_size = heap_compute_data_size(tupleDescriptor, 0.00 : 4713df: e8 8c ef ff ff callq 470370 2.23 : 4713e4: 48 89 c3 mov %rax,%rbx : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.32 : 4713e7: 48 8d 40 0f lea 0xf(%rax),%rax 0.00 : 4713eb: 48 83 e0 f8 and $0xfffffffffffffff8,%rax : : tp = (char *) palloc0(size); 0.00 : 4713ef: 48 89 c7 mov %rax,%rdi : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:130 2.23 : 4713f2: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) : : tp = (char *) palloc0(size); /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:132 3.82 : 4713f9: e8 72 7b 32 00 callq 798f70 : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 1.27 : 4713fe: 4c 8d 4d ce lea -0x32(%rbp),%r9 0.00 : 471402: 48 89 c1 mov %rax,%rcx 0.64 : 471405: 48 8d b5 a0 fe ff ff lea -0x160(%rbp),%rsi 0.32 : 47140c: 48 83 c1 08 add $0x8,%rcx 1.59 : 471410: 49 89 d8 mov %rbx,%r8 0.64 : 471413: 4c 89 f2 mov %r14,%rdx 0.32 : 471416: 4c 89 ff mov %r15,%rdi : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ : : tp = (char *) palloc0(size); 0.32 : 471419: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 5.10 : 471420: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 471427: 00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 3.18 : 471428: e8 33 eb ff ff callq 46ff60 1.91 : 47142d: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 7.01 : 471434: 31 db xor %ebx,%ebx /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:135 0.64 : 471436: eb 11 jmp 471449 0.00 : 471438: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 47143f: 00 : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) : { : if (untoasted_free[i]) : pfree(DatumGetPointer(untoasted_values[i])); /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:151 3.18 : 471440: 48 83 c3 01 add $0x1,%rbx : data_size, : &tupmask, : (hasnull ? (bits8 *) tp + sizeof(IndexTupleData) : NULL)); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 471444: 41 39 dd cmp %ebx,%r13d 0.00 : 471447: 7e 2b jle 471474 : { : if (untoasted_free[i]) 0.00 : 471449: 41 80 3c 1a 00 cmpb $0x0,(%r10,%rbx,1) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:150 13.38 : 47144e: 74 f0 je 471440 : pfree(DatumGetPointer(untoasted_values[i])); 0.00 : 471450: 48 8b bc dd a0 fe ff mov -0x160(%rbp,%rbx,8),%rdi 0.00 : 471457: ff 0.00 : 471458: 48 83 c3 01 add $0x1,%rbx 0.00 : 47145c: 4c 89 95 80 fe ff ff mov %r10,-0x180(%rbp) 0.00 : 471463: e8 18 77 32 00 callq 798b80 : data_size, : &tupmask, : (hasnull ? (bits8 *) tp + sizeof(IndexTupleData) : NULL)); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 471468: 41 39 dd cmp %ebx,%r13d : { : if (untoasted_free[i]) : pfree(DatumGetPointer(untoasted_values[i])); 0.00 : 47146b: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 : data_size, : &tupmask, : (hasnull ? (bits8 *) tp + sizeof(IndexTupleData) : NULL)); : : #ifdef TOAST_INDEX_HACK : for (i = 0; i < numberOfAttributes; i++) 0.00 : 471472: 7f d5 jg 471449 : * which is used for HeapTuples, but we want an indextuple infomask. The : * only relevant info is the "has variable attributes" field. We have : * already set the hasnull bit above. : */ : if (tupmask & HEAP_HASVARWIDTH) : infomask |= INDEX_VAR_MASK; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:162 2.23 : 471474: 44 89 e0 mov %r12d,%eax 0.00 : 471477: 80 cc 40 or $0x40,%ah 0.00 : 47147a: f6 45 ce 02 testb $0x2,-0x32(%rbp) 0.00 : 47147e: 44 0f 45 e0 cmovne %eax,%r12d : : /* : * Here we make sure that the size will fit in the field reserved for it : * in t_info. : */ : if ((size & INDEX_SIZE_MASK) != size) /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:173 1.59 : 471482: 48 8b 85 98 fe ff ff mov -0x168(%rbp),%rax 0.00 : 471489: 25 ff 1f 00 00 and $0x1fff,%eax 1.27 : 47148e: 48 3b 85 98 fe ff ff cmp -0x168(%rbp),%rax 0.00 : 471495: 0f 85 5d 01 00 00 jne 4715f8 : infomask |= size; : : /* : * initialize metadata : */ : tuple->t_info = infomask; /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:184 1.27 : 47149b: 66 44 0b a5 98 fe ff or -0x168(%rbp),%r12w 0.00 : 4714a2: ff 0.32 : 4714a3: 48 8b 85 90 fe ff ff mov -0x170(%rbp),%rax 0.00 : 4714aa: 66 44 89 60 06 mov %r12w,0x6(%rax) : return tuple; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:186 6.37 : 4714af: 48 8b 85 90 fe ff ff mov -0x170(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:186 0.64 : 4714b6: 48 81 c4 68 01 00 00 add $0x168,%rsp 0.00 : 4714bd: 5b pop %rbx 1.59 : 4714be: 41 5c pop %r12 0.00 : 4714c0: 41 5d pop %r13 0.32 : 4714c2: 41 5e pop %r14 0.00 : 4714c4: 41 5f pop %r15 1.91 : 4714c6: c9 leaveq 0.32 : 4714c7: c3 retq 0.00 : 4714c8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4714cf: 00 : * If value is stored EXTERNAL, must fetch it so we are not depending : * on outside storage. This should be improved someday. : */ : if (VARATT_IS_EXTERNAL(DatumGetPointer(values[i]))) : { : untoasted_values[i] = 0.00 : 4714d0: 4c 89 85 88 fe ff ff mov %r8,-0x178(%rbp) 0.00 : 4714d7: 4c 89 95 80 fe ff ff mov %r10,-0x180(%rbp) 0.00 : 4714de: e8 3d 08 03 00 callq 4a1d20 0.00 : 4714e3: 48 89 84 dd a0 fe ff mov %rax,-0x160(%rbp,%rbx,8) 0.00 : 4714ea: ff : PointerGetDatum(heap_tuple_fetch_attr((struct varlena *) : DatumGetPointer(values[i]))); : untoasted_free[i] = true; 0.00 : 4714eb: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 0.00 : 4714f2: 41 c6 04 1a 01 movb $0x1,(%r10,%rbx,1) 0.00 : 4714f7: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : 4714fe: e9 24 fe ff ff jmpq 471327 0.00 : 471503: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (hasnull) : infomask |= INDEX_NULL_MASK; : : hoff = IndexInfoFindDataOffset(infomask); : #ifdef TOAST_INDEX_HACK : data_size = heap_compute_data_size(tupleDescriptor, 0.00 : 471508: 48 8d b5 a0 fe ff ff lea -0x160(%rbp),%rsi 0.00 : 47150f: 4c 89 f2 mov %r14,%rdx 0.00 : 471512: 4c 89 ff mov %r15,%rdi 0.00 : 471515: 4c 89 95 80 fe ff ff mov %r10,-0x180(%rbp) : size = MAXALIGN(size); /* be conservative */ : : tp = (char *) palloc0(size); : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 47151c: 41 bc 00 80 ff ff mov $0xffff8000,%r12d : if (hasnull) : infomask |= INDEX_NULL_MASK; : : hoff = IndexInfoFindDataOffset(infomask); : #ifdef TOAST_INDEX_HACK : data_size = heap_compute_data_size(tupleDescriptor, 0.00 : 471522: e8 49 ee ff ff callq 470370 0.00 : 471527: 48 89 c3 mov %rax,%rbx : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.00 : 47152a: 48 8d 40 17 lea 0x17(%rax),%rax 0.00 : 47152e: 48 83 e0 f8 and $0xfffffffffffffff8,%rax : : tp = (char *) palloc0(size); 0.00 : 471532: 48 89 c7 mov %rax,%rdi : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.00 : 471535: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) : : tp = (char *) palloc0(size); 0.00 : 47153c: e8 2f 7a 32 00 callq 798f70 : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 471541: 4c 8d 4d ce lea -0x32(%rbp),%r9 0.00 : 471545: 48 89 c1 mov %rax,%rcx 0.00 : 471548: 48 8d b5 a0 fe ff ff lea -0x160(%rbp),%rsi : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ : : tp = (char *) palloc0(size); 0.00 : 47154f: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 471556: 48 83 c1 10 add $0x10,%rcx 0.00 : 47155a: 48 83 c0 08 add $0x8,%rax 0.00 : 47155e: 49 89 d8 mov %rbx,%r8 0.00 : 471561: 4c 89 f2 mov %r14,%rdx 0.00 : 471564: 4c 89 ff mov %r15,%rdi 0.00 : 471567: 48 89 04 24 mov %rax,(%rsp) 0.00 : 47156b: e8 f0 e9 ff ff callq 46ff60 0.00 : 471570: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 0.00 : 471577: e9 b8 fe ff ff jmpq 471434 : : if (DatumGetPointer(cvalue) != NULL) : { : /* successful compression */ : if (untoasted_free[i]) : pfree(DatumGetPointer(untoasted_values[i])); 0.00 : 47157c: 48 8b bc dd a0 fe ff mov -0x160(%rbp,%rbx,8),%rdi 0.00 : 471583: ff 0.00 : 471584: e8 f7 75 32 00 callq 798b80 0.00 : 471589: 4c 8b 95 80 fe ff ff mov -0x180(%rbp),%r10 0.00 : 471590: 4c 8b 85 88 fe ff ff mov -0x178(%rbp),%r8 0.00 : 471597: e9 ea fd ff ff jmpq 471386 : if (hasnull) : infomask |= INDEX_NULL_MASK; : : hoff = IndexInfoFindDataOffset(infomask); : #ifdef TOAST_INDEX_HACK : data_size = heap_compute_data_size(tupleDescriptor, 0.00 : 47159c: 4c 8d a5 a0 fe ff ff lea -0x160(%rbp),%r12 0.00 : 4715a3: 4c 89 e6 mov %r12,%rsi 0.00 : 4715a6: e8 c5 ed ff ff callq 470370 0.00 : 4715ab: 48 89 c3 mov %rax,%rbx : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.00 : 4715ae: 48 8d 40 0f lea 0xf(%rax),%rax 0.00 : 4715b2: 48 83 e0 f8 and $0xfffffffffffffff8,%rax : : tp = (char *) palloc0(size); 0.00 : 4715b6: 48 89 c7 mov %rax,%rdi : #else : data_size = heap_compute_data_size(tupleDescriptor, : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ 0.00 : 4715b9: 48 89 85 98 fe ff ff mov %rax,-0x168(%rbp) : : tp = (char *) palloc0(size); 0.00 : 4715c0: e8 ab 79 32 00 callq 798f70 : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 4715c5: 4c 8d 4d ce lea -0x32(%rbp),%r9 0.00 : 4715c9: 48 89 c1 mov %rax,%rcx 0.00 : 4715cc: 4c 89 e6 mov %r12,%rsi 0.00 : 4715cf: 48 83 c1 08 add $0x8,%rcx 0.00 : 4715d3: 49 89 d8 mov %rbx,%r8 0.00 : 4715d6: 4c 89 f2 mov %r14,%rdx 0.00 : 4715d9: 4c 89 ff mov %r15,%rdi : values, isnull); : #endif : size = hoff + data_size; : size = MAXALIGN(size); /* be conservative */ : : tp = (char *) palloc0(size); 0.00 : 4715dc: 48 89 85 90 fe ff ff mov %rax,-0x170(%rbp) : tuple = (IndexTuple) tp; : : heap_fill_tuple(tupleDescriptor, 0.00 : 4715e3: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 4715ea: 00 0.00 : 4715eb: 45 31 e4 xor %r12d,%r12d 0.00 : 4715ee: e8 6d e9 ff ff callq 46ff60 0.00 : 4715f3: e9 7c fe ff ff jmpq 471474 : /* : * Here we make sure that the size will fit in the field reserved for it : * in t_info. : */ : if ((size & INDEX_SIZE_MASK) != size) : ereport(ERROR, 0.00 : 4715f8: 45 31 c0 xor %r8d,%r8d 0.00 : 4715fb: b9 80 f8 7a 00 mov $0x7af880,%ecx 0.00 : 471600: ba b1 00 00 00 mov $0xb1,%edx 0.00 : 471605: be 0a f8 7a 00 mov $0x7af80a,%esi 0.00 : 47160a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 47160f: e8 ac 94 30 00 callq 77aac0 0.00 : 471614: 84 c0 test %al,%al 0.00 : 471616: 75 52 jne 47166a 0.00 : 471618: e8 b3 7e ff ff callq 4694d0 : Datum untoasted_values[INDEX_MAX_KEYS]; : bool untoasted_free[INDEX_MAX_KEYS]; : #endif : : if (numberOfAttributes > INDEX_MAX_KEYS) : ereport(ERROR, 0.00 : 47161d: 45 31 c0 xor %r8d,%r8d 0.00 : 471620: b9 80 f8 7a 00 mov $0x7af880,%ecx 0.00 : 471625: ba 3d 00 00 00 mov $0x3d,%edx 0.00 : 47162a: be 0a f8 7a 00 mov $0x7af80a,%esi 0.00 : 47162f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 471634: e8 87 94 30 00 callq 77aac0 0.00 : 471639: 84 c0 test %al,%al 0.00 : 47163b: 74 db je 471618 0.00 : 47163d: bf 18 f8 7a 00 mov $0x7af818,%edi 0.00 : 471642: ba 20 00 00 00 mov $0x20,%edx 0.00 : 471647: 44 89 ee mov %r13d,%esi 0.00 : 47164a: 31 c0 xor %eax,%eax 0.00 : 47164c: e8 4f b2 30 00 callq 77c8a0 0.00 : 471651: bf 05 01 04 01 mov $0x1040105,%edi 0.00 : 471656: 89 c3 mov %eax,%ebx : /* : * Here we make sure that the size will fit in the field reserved for it : * in t_info. : */ : if ((size & INDEX_SIZE_MASK) != size) : ereport(ERROR, 0.00 : 471658: e8 f3 b6 30 00 callq 77cd50 0.00 : 47165d: 89 de mov %ebx,%esi 0.00 : 47165f: 89 c7 mov %eax,%edi 0.00 : 471661: 31 c0 xor %eax,%eax 0.00 : 471663: e8 78 8f 30 00 callq 77a5e0 0.00 : 471668: eb ae jmp 471618 0.00 : 47166a: 48 8b b5 98 fe ff ff mov -0x168(%rbp),%rsi 0.00 : 471671: bf 48 f8 7a 00 mov $0x7af848,%edi 0.00 : 471676: ba ff 1f 00 00 mov $0x1fff,%edx 0.00 : 47167b: 31 c0 xor %eax,%eax 0.00 : 47167d: e8 1e b2 30 00 callq 77c8a0 0.00 : 471682: bf 05 01 00 00 mov $0x105,%edi 0.00 : 471687: 89 c3 mov %eax,%ebx 0.00 : 471689: eb cd jmp 471658 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 37.70 ??:0 32.91 ??:0 22.68 ??:0 6.39 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002c220 <__ctype_b_loc>: ??:0 32.91 : 2c220: 64 48 8b 0c 25 00 00 mov %fs:0x0,%rcx 0.00 : 2c227: 00 00 22.68 : 2c229: 48 8b 15 a0 5b 34 00 mov 0x345ba0(%rip),%rdx # 371dd0 <_DYNAMIC+0x270> 0.32 : 2c230: 48 83 3c 11 00 cmpq $0x0,(%rcx,%rdx,1) 37.70 : 2c235: 74 05 je 2c23c <__ctype_b_loc+0x1c> 6.39 : 2c237: 48 8d 04 11 lea (%rcx,%rdx,1),%rax 0.00 : 2c23b: c3 retq 0.00 : 2c23c: 48 8b 05 45 5b 34 00 mov 0x345b45(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 2c243: 48 8b 04 01 mov (%rcx,%rax,1),%rax 0.00 : 2c247: 48 8b 00 mov (%rax),%rax 0.00 : 2c24a: 48 8b 40 40 mov 0x40(%rax),%rax 0.00 : 2c24e: 48 05 00 01 00 00 add $0x100,%rax 0.00 : 2c254: 48 89 04 11 mov %rax,(%rcx,%rdx,1) 0.00 : 2c258: eb dd jmp 2c237 <__ctype_b_loc+0x17> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.10 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2394 7.37 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2471 6.73 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2465 6.73 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 5.45 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2394 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2480 2.88 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2340 2.88 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2471 2.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2461 2.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 1.92 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2477 1.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2390 1.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2394 1.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2394 1.60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2472 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2340 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2339 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2397 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2461 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2476 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 1.28 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2570 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2340 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2392 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2394 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2488 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2469 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2473 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2487 0.96 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2340 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2340 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2339 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2380 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2389 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2321 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2400 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2472 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2481 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2487 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2493 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2494 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2527 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2570 0.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2570 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049acd0 : : * temporary context before calling this, if that's a problem. : */ : void : heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, : CommandId cid, int options, BulkInsertState bistate) : { 0.00 : 49acd0: 55 push %rbp 0.32 : 49acd1: 48 89 e5 mov %rsp,%rbp 0.00 : 49acd4: 41 57 push %r15 0.00 : 49acd6: 41 56 push %r14 0.00 : 49acd8: 41 89 ce mov %ecx,%r14d 0.00 : 49acdb: 41 55 push %r13 0.00 : 49acdd: 41 54 push %r12 0.00 : 49acdf: 53 push %rbx 0.00 : 49ace0: 48 81 ec 18 01 00 00 sub $0x118,%rsp 0.00 : 49ace7: 48 89 bd 00 ff ff ff mov %rdi,-0x100(%rbp) 0.00 : 49acee: 48 89 b5 f8 fe ff ff mov %rsi,-0x108(%rbp) 0.00 : 49acf5: 89 95 f4 fe ff ff mov %edx,-0x10c(%rbp) 0.00 : 49acfb: 44 89 85 f0 fe ff ff mov %r8d,-0x110(%rbp) 0.00 : 49ad02: 4c 89 8d e8 fe ff ff mov %r9,-0x118(%rbp) : TransactionId xid = GetCurrentTransactionId(); 0.00 : 49ad09: e8 b2 9b 02 00 callq 4c48c0 : int ndone; : char *scratch = NULL; : Page page; : bool needwal; : Size saveFreeSpace; : bool need_tuple_data = RelationIsLogicallyLogged(relation); 0.00 : 49ad0e: 83 3d 47 e4 6d 00 02 cmpl $0x2,0x6de447(%rip) # b7915c : */ : void : heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, : CommandId cid, int options, BulkInsertState bistate) : { : TransactionId xid = GetCurrentTransactionId(); 0.00 : 49ad15: 41 89 c5 mov %eax,%r13d : int ndone; : char *scratch = NULL; : Page page; : bool needwal; : Size saveFreeSpace; : bool need_tuple_data = RelationIsLogicallyLogged(relation); 0.00 : 49ad18: 0f 8f 12 07 00 00 jg 49b430 0.00 : 49ad1e: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 49ad25: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.32 : 49ad2c: c6 85 37 ff ff ff 00 movb $0x0,-0xc9(%rbp) 0.00 : 49ad33: c6 85 4e ff ff ff 00 movb $0x0,-0xb2(%rbp) : bool need_cids = RelationIsAccessibleInLogicalDecoding(relation); : : needwal = !(options & HEAP_INSERT_SKIP_WAL) && RelationNeedsWAL(relation); 0.00 : 49ad3a: f6 85 f0 fe ff ff 01 testb $0x1,-0x110(%rbp) 0.00 : 49ad41: c6 85 4f ff ff ff 00 movb $0x0,-0xb1(%rbp) 0.00 : 49ad48: 75 16 jne 49ad60 0.00 : 49ad4a: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 49ad51: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 49ad55: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49ad59: 0f 94 85 4f ff ff ff sete -0xb1(%rbp) : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, 0.00 : 49ad60: 48 85 d2 test %rdx,%rdx 0.00 : 49ad63: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 49ad6a: 00 00 00 00 0.00 : 49ad6e: 74 26 je 49ad96 0.00 : 49ad70: b9 64 00 00 00 mov $0x64,%ecx 0.00 : 49ad75: 2b 4a 04 sub 0x4(%rdx),%ecx 0.00 : 49ad78: ba 1f 85 eb 51 mov $0x51eb851f,%edx 0.00 : 49ad7d: c1 e1 0d shl $0xd,%ecx 0.00 : 49ad80: 89 c8 mov %ecx,%eax 0.00 : 49ad82: c1 f9 1f sar $0x1f,%ecx 0.00 : 49ad85: f7 ea imul %edx 0.00 : 49ad87: c1 fa 05 sar $0x5,%edx 0.00 : 49ad8a: 29 ca sub %ecx,%edx 0.00 : 49ad8c: 48 63 d2 movslq %edx,%rdx 0.00 : 49ad8f: 48 89 95 28 ff ff ff mov %rdx,-0xd8(%rbp) : HEAP_DEFAULT_FILLFACTOR); : : /* Toast and set header data in all the tuples */ : heaptuples = palloc(ntuples * sizeof(HeapTuple)); 0.00 : 49ad96: 48 63 bd f4 fe ff ff movslq -0x10c(%rbp),%rdi 0.00 : 49ad9d: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 49ada1: e8 aa df 2f 00 callq 798d50 : for (i = 0; i < ntuples; i++) 0.00 : 49ada6: 44 8b bd f4 fe ff ff mov -0x10c(%rbp),%r15d : needwal = !(options & HEAP_INSERT_SKIP_WAL) && RelationNeedsWAL(relation); : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, : HEAP_DEFAULT_FILLFACTOR); : : /* Toast and set header data in all the tuples */ : heaptuples = palloc(ntuples * sizeof(HeapTuple)); 0.00 : 49adad: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) : for (i = 0; i < ntuples; i++) 0.00 : 49adb4: 45 85 ff test %r15d,%r15d 0.00 : 49adb7: 7e 47 jle 49ae00 0.00 : 49adb9: 45 31 e4 xor %r12d,%r12d 0.00 : 49adbc: 31 db xor %ebx,%ebx 0.00 : 49adbe: 66 90 xchg %ax,%ax : heaptuples[i] = heap_prepare_insert(relation, tuples[i], 0.00 : 49adc0: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2340 0.64 : 49adc7: 44 8b 85 f0 fe ff ff mov -0x110(%rbp),%r8d 0.00 : 49adce: 44 89 f1 mov %r14d,%ecx 0.96 : 49add1: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, : HEAP_DEFAULT_FILLFACTOR); : : /* Toast and set header data in all the tuples */ : heaptuples = palloc(ntuples * sizeof(HeapTuple)); : for (i = 0; i < ntuples; i++) 0.00 : 49add8: 41 83 c4 01 add $0x1,%r12d : heaptuples[i] = heap_prepare_insert(relation, tuples[i], 0.00 : 49addc: 48 8b 34 1a mov (%rdx,%rbx,1),%rsi 0.64 : 49ade0: 44 89 ea mov %r13d,%edx 1.28 : 49ade3: e8 78 fd ff ff callq 49ab60 0.32 : 49ade8: 48 8b 8d 08 ff ff ff mov -0xf8(%rbp),%rcx 2.88 : 49adef: 48 89 04 19 mov %rax,(%rcx,%rbx,1) : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, : HEAP_DEFAULT_FILLFACTOR); : : /* Toast and set header data in all the tuples */ : heaptuples = palloc(ntuples * sizeof(HeapTuple)); : for (i = 0; i < ntuples; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2339 1.28 : 49adf3: 48 83 c3 08 add $0x8,%rbx 0.64 : 49adf7: 44 39 a5 f4 fe ff ff cmp %r12d,-0x10c(%rbp) 0.00 : 49adfe: 7f c0 jg 49adc0 : /* : * Allocate some memory to use for constructing the WAL record. Using : * palloc() within a critical section is not safe, so we allocate this : * beforehand. : */ : if (needwal) 0.00 : 49ae00: 80 bd 4f ff ff ff 00 cmpb $0x0,-0xb1(%rbp) 0.00 : 49ae07: 48 c7 85 18 ff ff ff movq $0x0,-0xe8(%rbp) 0.00 : 49ae0e: 00 00 00 00 0.00 : 49ae12: 0f 85 56 06 00 00 jne 49b46e : * new tuple can't possibly conflict with existing tuple locks, and heap : * page locks are only consolidated versions of tuple locks; they do not : * lock "gaps" as index page locks do. So we don't need to identify a : * buffer before making the call. : */ : CheckForSerializableConflictIn(relation, NULL, InvalidBuffer); 0.00 : 49ae18: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49ae1f: 31 d2 xor %edx,%edx 0.00 : 49ae21: 31 f6 xor %esi,%esi 0.00 : 49ae23: e8 68 79 1f 00 callq 692790 : : ndone = 0; : while (ndone < ntuples) 0.00 : 49ae28: 44 8b b5 f4 fe ff ff mov -0x10c(%rbp),%r14d 0.00 : 49ae2f: 45 85 f6 test %r14d,%r14d 0.00 : 49ae32: 0f 8e 6b 04 00 00 jle 49b2a3 : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && : PageGetMaxOffsetNumber(page) == FirstOffsetNumber + nthispage - 1); : : /* allocate xl_heap_multi_insert struct from the scratch area */ : xlrec = (xl_heap_multi_insert *) scratchptr; : scratchptr += SizeOfHeapMultiInsert; 0.00 : 49ae38: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; 0.00 : 49ae3f: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx : * doing logical decoding, so that an eventual FPW doesn't remove : * the tuple's data. : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); 0.00 : 49ae46: 48 8d 8d 60 ff ff ff lea -0xa0(%rbp),%rcx : * buffer before making the call. : */ : CheckForSerializableConflictIn(relation, NULL, InvalidBuffer); : : ndone = 0; : while (ndone < ntuples) 0.00 : 49ae4d: c7 85 5c ff ff ff 00 movl $0x0,-0xa4(%rbp) 0.00 : 49ae54: 00 00 00 : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; 0.32 : 49ae57: 48 83 c2 20 add $0x20,%rdx : * doing logical decoding, so that an eventual FPW doesn't remove : * the tuple's data. : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); 0.00 : 49ae5b: 48 83 c1 40 add $0x40,%rcx : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && : PageGetMaxOffsetNumber(page) == FirstOffsetNumber + nthispage - 1); : : /* allocate xl_heap_multi_insert struct from the scratch area */ : xlrec = (xl_heap_multi_insert *) scratchptr; : scratchptr += SizeOfHeapMultiInsert; 0.00 : 49ae5f: 48 83 c0 14 add $0x14,%rax : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; 0.00 : 49ae63: 48 89 95 d8 fe ff ff mov %rdx,-0x128(%rbp) : * doing logical decoding, so that an eventual FPW doesn't remove : * the tuple's data. : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); 0.00 : 49ae6a: 48 89 8d d0 fe ff ff mov %rcx,-0x130(%rbp) : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && : PageGetMaxOffsetNumber(page) == FirstOffsetNumber + nthispage - 1); : : /* allocate xl_heap_multi_insert struct from the scratch area */ : xlrec = (xl_heap_multi_insert *) scratchptr; : scratchptr += SizeOfHeapMultiInsert; 0.00 : 49ae71: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) 0.00 : 49ae78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49ae7f: 00 : Buffer buffer; : Buffer vmbuffer = InvalidBuffer; : bool all_visible_cleared = false; : int nthispage; : : CHECK_FOR_INTERRUPTS(); 0.00 : 49ae80: 0f b6 05 09 f2 71 00 movzbl 0x71f209(%rip),%eax # bba090 : : ndone = 0; : while (ndone < ntuples) : { : Buffer buffer; : Buffer vmbuffer = InvalidBuffer; 0.00 : 49ae87: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) : bool all_visible_cleared = false; : int nthispage; : : CHECK_FOR_INTERRUPTS(); 0.00 : 49ae8e: 84 c0 test %al,%al 0.00 : 49ae90: 0f 85 ea 03 00 00 jne 49b280 : : /* : * Find buffer where at least the next tuple will fit. If the page is : * all-visible, this will also pin the requisite visibility map page. : */ : buffer = RelationGetBufferForTuple(relation, heaptuples[ndone]->t_len, 0.00 : 49ae96: 48 63 85 5c ff ff ff movslq -0xa4(%rbp),%rax 0.00 : 49ae9d: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 49aea4: 4c 8d 4d cc lea -0x34(%rbp),%r9 0.00 : 49aea8: 4c 8b 85 e8 fe ff ff mov -0x118(%rbp),%r8 0.00 : 49aeaf: 8b 8d f0 fe ff ff mov -0x110(%rbp),%ecx 0.00 : 49aeb5: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49aebc: 4c 8d 24 c2 lea (%rdx,%rax,8),%r12 0.00 : 49aec0: 31 d2 xor %edx,%edx 0.00 : 49aec2: 49 8b 04 24 mov (%r12),%rax 0.32 : 49aec6: 8b 30 mov (%rax),%esi 0.00 : 49aec8: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 49aecf: 00 0.00 : 49aed0: e8 9b 32 00 00 callq 49e170 : InvalidBuffer, options, bistate, : &vmbuffer, NULL); : page = BufferGetPage(buffer); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2380 0.64 : 49aed5: 85 c0 test %eax,%eax : : /* : * Find buffer where at least the next tuple will fit. If the page is : * all-visible, this will also pin the requisite visibility map page. : */ : buffer = RelationGetBufferForTuple(relation, heaptuples[ndone]->t_len, 0.00 : 49aed7: 89 85 38 ff ff ff mov %eax,-0xc8(%rbp) : InvalidBuffer, options, bistate, : &vmbuffer, NULL); : page = BufferGetPage(buffer); 0.00 : 49aedd: 0f 88 ad 04 00 00 js 49b390 0.00 : 49aee3: 8b 85 38 ff ff ff mov -0xc8(%rbp),%eax 0.00 : 49aee9: 48 8b 0d 08 4c 72 00 mov 0x724c08(%rip),%rcx # bbfaf8 0.00 : 49aef0: 83 e8 01 sub $0x1,%eax 0.00 : 49aef3: 48 98 cltq 0.00 : 49aef5: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49aef9: 48 01 c8 add %rcx,%rax 0.00 : 49aefc: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : : /* NO EREPORT(ERROR) from here till changes are logged */ : START_CRIT_SECTION(); 0.00 : 49af03: 8b 05 93 f1 71 00 mov 0x71f193(%rip),%eax # bba09c : : /* : * RelationGetBufferForTuple has ensured that the first tuple fits. : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); 0.00 : 49af09: 8b b5 38 ff ff ff mov -0xc8(%rbp),%esi 0.00 : 49af0f: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi : InvalidBuffer, options, bistate, : &vmbuffer, NULL); : page = BufferGetPage(buffer); : : /* NO EREPORT(ERROR) from here till changes are logged */ : START_CRIT_SECTION(); 0.00 : 49af16: 83 c0 01 add $0x1,%eax 0.00 : 49af19: 89 05 7d f1 71 00 mov %eax,0x71f17d(%rip) # bba09c : : /* : * RelationGetBufferForTuple has ensured that the first tuple fits. : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); 0.00 : 49af1f: 49 8b 14 24 mov (%r12),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2389 0.64 : 49af23: e8 28 39 00 00 callq 49e850 : for (nthispage = 1; ndone + nthispage < ntuples; nthispage++) 0.00 : 49af28: 8b 85 5c ff ff ff mov -0xa4(%rbp),%eax 0.00 : 49af2e: c7 85 3c ff ff ff 01 movl $0x1,-0xc4(%rbp) 0.00 : 49af35: 00 00 00 0.00 : 49af38: 83 c0 01 add $0x1,%eax 0.00 : 49af3b: 39 85 f4 fe ff ff cmp %eax,-0x10c(%rbp) 0.00 : 49af41: 89 85 14 ff ff ff mov %eax,-0xec(%rbp) 0.00 : 49af47: 7f 3f jg 49af88 0.00 : 49af49: eb 71 jmp 49afbc 0.00 : 49af4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : HeapTuple heaptup = heaptuples[ndone + nthispage]; : : if (PageGetHeapFreeSpace(page) < MAXALIGN(heaptup->t_len) + saveFreeSpace) : break; : : RelationPutHeapTuple(relation, buffer, heaptup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2397 1.28 : 49af50: 8b b5 38 ff ff ff mov -0xc8(%rbp),%esi 0.32 : 49af56: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49af5d: 48 89 da mov %rbx,%rdx 0.00 : 49af60: e8 eb 38 00 00 callq 49e850 : /* : * RelationGetBufferForTuple has ensured that the first tuple fits. : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); : for (nthispage = 1; ndone + nthispage < ntuples; nthispage++) 0.00 : 49af65: 83 85 3c ff ff ff 01 addl $0x1,-0xc4(%rbp) 0.32 : 49af6c: 8b 85 f4 fe ff ff mov -0x10c(%rbp),%eax : * temporary context before calling this, if that's a problem. : */ : void : heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, : CommandId cid, int options, BulkInsertState bistate) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2321 0.64 : 49af72: 8b 8d 3c ff ff ff mov -0xc4(%rbp),%ecx 0.00 : 49af78: 03 8d 5c ff ff ff add -0xa4(%rbp),%ecx : /* : * RelationGetBufferForTuple has ensured that the first tuple fits. : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); : for (nthispage = 1; ndone + nthispage < ntuples; nthispage++) 0.00 : 49af7e: 39 c1 cmp %eax,%ecx : * temporary context before calling this, if that's a problem. : */ : void : heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, : CommandId cid, int options, BulkInsertState bistate) : { 0.00 : 49af80: 89 8d 14 ff ff ff mov %ecx,-0xec(%rbp) : /* : * RelationGetBufferForTuple has ensured that the first tuple fits. : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); : for (nthispage = 1; ndone + nthispage < ntuples; nthispage++) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2390 1.60 : 49af86: 7d 34 jge 49afbc : { : HeapTuple heaptup = heaptuples[ndone + nthispage]; 0.00 : 49af88: 48 63 85 14 ff ff ff movslq -0xec(%rbp),%rax 0.00 : 49af8f: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx : : if (PageGetHeapFreeSpace(page) < MAXALIGN(heaptup->t_len) + saveFreeSpace) 0.00 : 49af96: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi : * Put that on the page, and then as many other tuples as fit. : */ : RelationPutHeapTuple(relation, buffer, heaptuples[ndone]); : for (nthispage = 1; ndone + nthispage < ntuples; nthispage++) : { : HeapTuple heaptup = heaptuples[ndone + nthispage]; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2392 0.96 : 49af9d: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx : : if (PageGetHeapFreeSpace(page) < MAXALIGN(heaptup->t_len) + saveFreeSpace) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2394 5.45 : 49afa1: e8 ba 9d 1f 00 callq 694d60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2394 0.96 : 49afa6: 8b 13 mov (%rbx),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2394 14.10 : 49afa8: 48 83 c2 07 add $0x7,%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2394 1.60 : 49afac: 48 83 e2 f8 and $0xfffffffffffffff8,%rdx 0.32 : 49afb0: 48 03 95 28 ff ff ff add -0xd8(%rbp),%rdx 1.60 : 49afb7: 48 39 d0 cmp %rdx,%rax 0.00 : 49afba: 73 94 jae 49af50 : break; : : RelationPutHeapTuple(relation, buffer, heaptup); : } : : if (PageIsAllVisible(page)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2400 0.64 : 49afbc: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.32 : 49afc3: 31 db xor %ebx,%ebx 0.00 : 49afc5: 0f b7 42 0a movzwl 0xa(%rdx),%eax 0.00 : 49afc9: a8 04 test $0x4,%al 0.00 : 49afcb: 0f 85 7f 03 00 00 jne 49b350 : : /* : * XXX Should we set PageSetPrunable on this page ? See heap_insert() : */ : : MarkBufferDirty(buffer); 0.00 : 49afd1: 8b bd 38 ff ff ff mov -0xc8(%rbp),%edi 0.00 : 49afd7: e8 14 98 1d 00 callq 6747f0 : : /* XLOG stuff */ : if (needwal) 0.00 : 49afdc: 80 bd 4f ff ff ff 00 cmpb $0x0,-0xb1(%rbp) 0.00 : 49afe3: 0f 84 5a 02 00 00 je 49b243 : : /* : * If the page was previously empty, we can reinit the page : * instead of restoring the whole thing. : */ : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && 0.00 : 49afe9: 49 8b 04 24 mov (%r12),%rax : */ : for (i = 0; i < ntuples; i++) : tuples[i]->t_self = heaptuples[i]->t_self; : : pgstat_count_heap_insert(relation, ntuples); : } 0.00 : 49afed: 48 63 8d 3c ff ff ff movslq -0xc4(%rbp),%rcx : : /* : * If the page was previously empty, we can reinit the page : * instead of restoring the whole thing. : */ : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && 0.00 : 49aff4: 66 83 78 08 01 cmpw $0x1,0x8(%rax) 0.00 : 49aff9: 0f 84 d1 03 00 00 je 49b3d0 : * in that case the tuples are stored in order starting at : * FirstOffsetNumber and we don't need to store the offsets : * explicitly. : */ : if (!init) : scratchptr += nthispage * sizeof(OffsetNumber); 0.00 : 49afff: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 49b006: c6 85 4d ff ff ff 00 movb $0x0,-0xb3(%rbp) 0.00 : 49b00d: 48 8d 0c 4a lea (%rdx,%rcx,2),%rcx 0.00 : 49b011: 48 89 8d 40 ff ff ff mov %rcx,-0xc0(%rbp) : : /* the rest of the scratch space is used for tuple data */ : tupledata = scratchptr; : : xlrec->flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; 0.32 : 49b018: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx : : /* : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) 0.00 : 49b01f: 45 31 f6 xor %r14d,%r14d : scratchptr += nthispage * sizeof(OffsetNumber); : : /* the rest of the scratch space is used for tuple data */ : tupledata = scratchptr; : : xlrec->flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; 0.00 : 49b022: 88 59 10 mov %bl,0x10(%rcx) : xlrec->node = relation->rd_node; 0.32 : 49b025: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 49b02c: 48 8b 02 mov (%rdx),%rax 0.00 : 49b02f: 48 89 01 mov %rax,(%rcx) 0.32 : 49b032: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 49b035: 89 41 08 mov %eax,0x8(%rcx) : xlrec->blkno = BufferGetBlockNumber(buffer); 0.00 : 49b038: 8b bd 38 ff ff ff mov -0xc8(%rbp),%edi 0.00 : 49b03e: e8 ed 8f 1d 00 callq 674030 0.00 : 49b043: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx : : /* : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) 0.00 : 49b04a: 31 d2 xor %edx,%edx : /* the rest of the scratch space is used for tuple data */ : tupledata = scratchptr; : : xlrec->flags = all_visible_cleared ? XLOG_HEAP_ALL_VISIBLE_CLEARED : 0; : xlrec->node = relation->rd_node; : xlrec->blkno = BufferGetBlockNumber(buffer); 0.00 : 49b04c: 89 41 0c mov %eax,0xc(%rcx) : xlrec->ntuples = nthispage; 0.32 : 49b04f: 0f b7 85 3c ff ff ff movzwl -0xc4(%rbp),%eax 0.00 : 49b056: 66 89 41 12 mov %ax,0x12(%rcx) : : /* : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) 0.00 : 49b05a: 44 8b ad 3c ff ff ff mov -0xc4(%rbp),%r13d 0.00 : 49b061: 48 8b 9d 40 ff ff ff mov -0xc0(%rbp),%rbx 0.00 : 49b068: 8b 85 40 ff ff ff mov -0xc0(%rbp),%eax 0.00 : 49b06e: 45 85 ed test %r13d,%r13d 0.00 : 49b071: 7f 1e jg 49b091 0.00 : 49b073: e9 e6 00 00 00 jmpq 49b15e 0.00 : 49b078: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49b07f: 00 : /* : * We don't use heap_multi_insert for catalog tuples yet, but : * better be prepared... : */ : if (need_cids) : log_heap_new_cid(relation, heaptup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2488 0.96 : 49b080: 49 83 c6 01 add $0x1,%r14 : : /* : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) 0.00 : 49b084: 44 39 b5 3c ff ff ff cmp %r14d,-0xc4(%rbp) 0.00 : 49b08b: 0f 8e c3 00 00 00 jle 49b154 : { : HeapTuple heaptup = heaptuples[ndone + i]; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2461 2.56 : 49b091: 8b 85 5c ff ff ff mov -0xa4(%rbp),%eax 0.32 : 49b097: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 49b09e: 44 01 f0 add %r14d,%eax : xl_multi_insert_tuple *tuphdr; : int datalen; : : if (!init) 0.32 : 49b0a1: 80 bd 4d ff ff ff 00 cmpb $0x0,-0xb3(%rbp) : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) : { : HeapTuple heaptup = heaptuples[ndone + i]; 1.28 : 49b0a8: 48 98 cltq 0.32 : 49b0aa: 4c 8b 3c c2 mov (%rdx,%rax,8),%r15 : xl_multi_insert_tuple *tuphdr; : int datalen; : : if (!init) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2465 6.73 : 49b0ae: 75 12 jne 49b0c2 : xlrec->offsets[i] = ItemPointerGetOffsetNumber(&heaptup->t_self); 0.00 : 49b0b0: 41 0f b7 47 08 movzwl 0x8(%r15),%eax 0.32 : 49b0b5: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx 0.00 : 49b0bc: 66 42 89 44 71 14 mov %ax,0x14(%rcx,%r14,2) : /* xl_multi_insert_tuple needs two-byte alignment. */ : tuphdr = (xl_multi_insert_tuple *) SHORTALIGN(scratchptr); 0.00 : 49b0c2: 48 83 c3 01 add $0x1,%rbx 0.00 : 49b0c6: 48 83 e3 fe and $0xfffffffffffffffe,%rbx : scratchptr = ((char *) tuphdr) + SizeOfMultiInsertTuple; 0.00 : 49b0ca: 48 8d 43 07 lea 0x7(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2469 0.96 : 49b0ce: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : : tuphdr->t_infomask2 = heaptup->t_data->t_infomask2; 0.32 : 49b0d5: 49 8b 47 10 mov 0x10(%r15),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2471 2.88 : 49b0d9: 0f b7 40 12 movzwl 0x12(%rax),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2471 7.37 : 49b0dd: 66 89 43 02 mov %ax,0x2(%rbx) : tuphdr->t_infomask = heaptup->t_data->t_infomask; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2472 0.64 : 49b0e1: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 49b0e5: 0f b7 40 14 movzwl 0x14(%rax),%eax 1.60 : 49b0e9: 66 89 43 04 mov %ax,0x4(%rbx) : tuphdr->t_hoff = heaptup->t_data->t_hoff; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2473 0.96 : 49b0ed: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 49b0f1: 0f b6 40 16 movzbl 0x16(%rax),%eax 0.00 : 49b0f5: 88 43 06 mov %al,0x6(%rbx) : : /* write bitmap [+ padding] [+ oid] + data */ : datalen = heaptup->t_len - offsetof(HeapTupleHeaderData, t_bits); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2476 1.28 : 49b0f8: 45 8b 27 mov (%r15),%r12d : memcpy(scratchptr, 0.00 : 49b0fb: 49 8b 77 10 mov 0x10(%r15),%rsi 0.00 : 49b0ff: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi : tuphdr->t_infomask2 = heaptup->t_data->t_infomask2; : tuphdr->t_infomask = heaptup->t_data->t_infomask; : tuphdr->t_hoff = heaptup->t_data->t_hoff; : : /* write bitmap [+ padding] [+ oid] + data */ : datalen = heaptup->t_len - offsetof(HeapTupleHeaderData, t_bits); 0.00 : 49b106: 41 83 ec 17 sub $0x17,%r12d : memcpy(scratchptr, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2477 1.92 : 49b10a: 4d 63 ec movslq %r12d,%r13 0.00 : 49b10d: 48 83 c6 17 add $0x17,%rsi 0.32 : 49b111: 4c 89 ea mov %r13,%rdx 0.00 : 49b114: e8 d7 ea fc ff callq 469bf0 : (char *) heaptup->t_data + offsetof(HeapTupleHeaderData, t_bits), : datalen); : tuphdr->datalen = datalen; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2480 4.17 : 49b119: 66 44 89 23 mov %r12w,(%rbx) : scratchptr += datalen; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2481 0.64 : 49b11d: 48 8b 9d 50 ff ff ff mov -0xb0(%rbp),%rbx 0.00 : 49b124: 4c 01 eb add %r13,%rbx : : /* : * We don't use heap_multi_insert for catalog tuples yet, but : * better be prepared... : */ : if (need_cids) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2487 0.96 : 49b127: 80 bd 4e ff ff ff 00 cmpb $0x0,-0xb2(%rbp) 0.64 : 49b12e: 0f 84 4c ff ff ff je 49b080 : log_heap_new_cid(relation, heaptup); 0.00 : 49b134: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b13b: 4c 89 fe mov %r15,%rsi 0.00 : 49b13e: 49 83 c6 01 add $0x1,%r14 0.00 : 49b142: e8 79 d2 ff ff callq 4983c0 : : /* : * Write out an xl_multi_insert_tuple and the tuple data itself : * for each tuple. : */ : for (i = 0; i < nthispage; i++) 0.00 : 49b147: 44 39 b5 3c ff ff ff cmp %r14d,-0xc4(%rbp) 0.00 : 49b14e: 0f 8f 3d ff ff ff jg 49b091 0.32 : 49b154: 8b 85 40 ff ff ff mov -0xc0(%rbp),%eax 0.00 : 49b15a: 89 da mov %ebx,%edx 0.00 : 49b15c: 29 c2 sub %eax,%edx : log_heap_new_cid(relation, heaptup); : } : totaldatalen = scratchptr - tupledata; : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; 0.00 : 49b15e: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; 0.00 : 49b165: c7 85 6c ff ff ff 00 movl $0x0,-0x94(%rbp) 0.00 : 49b16c: 00 00 00 : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; 0.00 : 49b16f: 89 55 88 mov %edx,-0x78(%rbp) : } : totaldatalen = scratchptr - tupledata; : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; 0.00 : 49b172: 29 c8 sub %ecx,%eax : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; 0.00 : 49b174: 80 bd 37 ff ff ff 00 cmpb $0x0,-0xc9(%rbp) : log_heap_new_cid(relation, heaptup); : } : totaldatalen = scratchptr - tupledata; : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2493 0.64 : 49b17b: 48 89 8d 60 ff ff ff mov %rcx,-0xa0(%rbp) : rdata[0].len = tupledata - scratch; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2494 0.64 : 49b182: 89 85 68 ff ff ff mov %eax,-0x98(%rbp) : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; 0.00 : 49b188: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; 0.00 : 49b18f: 48 8b 85 d8 fe ff ff mov -0x128(%rbp),%rax : : rdata[1].data = tupledata; 0.00 : 49b196: 48 89 4d 80 mov %rcx,-0x80(%rbp) : Assert((scratchptr - scratch) < BLCKSZ); : : rdata[0].data = (char *) xlrec; : rdata[0].len = tupledata - scratch; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; 0.00 : 49b19a: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; 0.00 : 49b1a1: 0f 84 09 02 00 00 je 49b3b0 : * doing logical decoding, so that an eventual FPW doesn't remove : * the tuple's data. : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); 0.00 : 49b1a7: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax : : rdata[2].data = NULL; : rdata[2].len = 0; : rdata[2].buffer = buffer; 0.00 : 49b1ae: 8b 95 38 ff ff ff mov -0xc8(%rbp),%edx : rdata[2].buffer_std = true; : rdata[2].next = NULL; : xlrec->flags |= XLOG_HEAP_CONTAINS_NEW_TUPLE; 0.00 : 49b1b4: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; 0.00 : 49b1bb: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) : rdata[1].buffer_std = true; 0.00 : 49b1c2: c6 45 90 01 movb $0x1,-0x70(%rbp) : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); : : rdata[2].data = NULL; 0.00 : 49b1c6: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 49b1cd: 00 : * doing logical decoding, so that an eventual FPW doesn't remove : * the tuple's data. : */ : if (need_tuple_data) : { : rdata[1].next = &(rdata[2]); 0.00 : 49b1ce: 48 89 45 98 mov %rax,-0x68(%rbp) : : rdata[2].data = NULL; : rdata[2].len = 0; 0.00 : 49b1d2: c7 45 a8 00 00 00 00 movl $0x0,-0x58(%rbp) : rdata[2].buffer = buffer; 0.00 : 49b1d9: 89 55 ac mov %edx,-0x54(%rbp) : rdata[2].buffer_std = true; 0.00 : 49b1dc: c6 45 b0 01 movb $0x1,-0x50(%rbp) : rdata[2].next = NULL; 0.00 : 49b1e0: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 49b1e7: 00 : xlrec->flags |= XLOG_HEAP_CONTAINS_NEW_TUPLE; 0.00 : 49b1e8: 80 49 10 10 orb $0x10,0x10(%rcx) : : /* : * If we're going to reinitialize the whole page using the WAL : * record, hide buffer reference from XLogInsert. : */ : if (init) 0.00 : 49b1ec: 80 bd 4d ff ff ff 00 cmpb $0x0,-0xb3(%rbp) 0.32 : 49b1f3: be 50 00 00 00 mov $0x50,%esi 0.00 : 49b1f8: 74 13 je 49b20d : { : rdata[1].buffer = rdata[2].buffer = InvalidBuffer; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2527 0.64 : 49b1fa: c7 45 ac 00 00 00 00 movl $0x0,-0x54(%rbp) 0.32 : 49b201: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : 49b208: be d0 00 00 00 mov $0xd0,%esi : /* : * Signal that this is the last xl_heap_multi_insert record : * emitted by this call to heap_multi_insert(). Needed for logical : * decoding so it knows when to cleanup temporary data. : */ : if (ndone + nthispage == ntuples) 0.00 : 49b20d: 8b 85 f4 fe ff ff mov -0x10c(%rbp),%eax 0.00 : 49b213: 39 85 14 ff ff ff cmp %eax,-0xec(%rbp) 0.00 : 49b219: 0f 84 01 02 00 00 je 49b420 : xlrec->flags |= XLOG_HEAP_LAST_MULTI_INSERT; : : recptr = XLogInsert(RM_HEAP2_ID, info, rdata); 0.00 : 49b21f: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx 0.00 : 49b226: bf 09 00 00 00 mov $0x9,%edi 0.00 : 49b22b: e8 f0 9c 03 00 callq 4d4f20 : : PageSetLSN(page, recptr); 0.00 : 49b230: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 49b237: 48 89 c2 mov %rax,%rdx 0.00 : 49b23a: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 49b23e: 89 11 mov %edx,(%rcx) 0.00 : 49b240: 89 41 04 mov %eax,0x4(%rcx) : } : : END_CRIT_SECTION(); 0.00 : 49b243: 8b 05 53 ee 71 00 mov 0x71ee53(%rip),%eax # bba09c : : UnlockReleaseBuffer(buffer); 0.00 : 49b249: 8b bd 38 ff ff ff mov -0xc8(%rbp),%edi : recptr = XLogInsert(RM_HEAP2_ID, info, rdata); : : PageSetLSN(page, recptr); : } : : END_CRIT_SECTION(); 0.00 : 49b24f: 83 e8 01 sub $0x1,%eax 0.00 : 49b252: 89 05 44 ee 71 00 mov %eax,0x71ee44(%rip) # bba09c : : UnlockReleaseBuffer(buffer); 0.00 : 49b258: e8 d3 9c 1d 00 callq 674f30 : if (vmbuffer != InvalidBuffer) 0.00 : 49b25d: 8b 7d cc mov -0x34(%rbp),%edi 0.32 : 49b260: 85 ff test %edi,%edi 0.00 : 49b262: 75 2c jne 49b290 : * buffer before making the call. : */ : CheckForSerializableConflictIn(relation, NULL, InvalidBuffer); : : ndone = 0; : while (ndone < ntuples) 0.00 : 49b264: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 49b26a: 39 85 f4 fe ff ff cmp %eax,-0x10c(%rbp) 0.00 : 49b270: 7e 31 jle 49b2a3 0.00 : 49b272: 89 85 5c ff ff ff mov %eax,-0xa4(%rbp) 0.00 : 49b278: e9 03 fc ff ff jmpq 49ae80 0.00 : 49b27d: 0f 1f 00 nopl (%rax) : Buffer buffer; : Buffer vmbuffer = InvalidBuffer; : bool all_visible_cleared = false; : int nthispage; : : CHECK_FOR_INTERRUPTS(); 0.00 : 49b280: e8 1b 10 20 00 callq 69c2a0 0.00 : 49b285: e9 0c fc ff ff jmpq 49ae96 0.00 : 49b28a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : END_CRIT_SECTION(); : : UnlockReleaseBuffer(buffer); : if (vmbuffer != InvalidBuffer) : ReleaseBuffer(vmbuffer); 0.00 : 49b290: e8 cb 9b 1d 00 callq 674e60 : * buffer before making the call. : */ : CheckForSerializableConflictIn(relation, NULL, InvalidBuffer); : : ndone = 0; : while (ndone < ntuples) 0.00 : 49b295: 8b 85 14 ff ff ff mov -0xec(%rbp),%eax 0.00 : 49b29b: 39 85 f4 fe ff ff cmp %eax,-0x10c(%rbp) 0.00 : 49b2a1: 7f cf jg 49b272 : * If tuples are cachable, mark them for invalidation from the caches in : * case we abort. Note it is OK to do this after releasing the buffer, : * because the heaptuples data structure is all in local memory, not in : * the shared buffer. : */ : if (IsCatalogRelation(relation)) 0.00 : 49b2a3: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b2aa: e8 31 7b 04 00 callq 4e2de0 0.00 : 49b2af: 84 c0 test %al,%al 0.00 : 49b2b1: 0f 84 a4 01 00 00 je 49b45b : { : for (i = 0; i < ntuples; i++) 0.00 : 49b2b7: 44 8b a5 f4 fe ff ff mov -0x10c(%rbp),%r12d 0.00 : 49b2be: 45 85 e4 test %r12d,%r12d 0.00 : 49b2c1: 7e 68 jle 49b32b 0.00 : 49b2c3: 4c 8b a5 08 ff ff ff mov -0xf8(%rbp),%r12 0.00 : 49b2ca: 31 db xor %ebx,%ebx 0.00 : 49b2cc: 0f 1f 40 00 nopl 0x0(%rax) : CacheInvalidateHeapTuple(relation, heaptuples[i], NULL); 0.00 : 49b2d0: 49 8b 34 24 mov (%r12),%rsi 0.00 : 49b2d4: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b2db: 31 d2 xor %edx,%edx : * because the heaptuples data structure is all in local memory, not in : * the shared buffer. : */ : if (IsCatalogRelation(relation)) : { : for (i = 0; i < ntuples; i++) 0.00 : 49b2dd: 83 c3 01 add $0x1,%ebx 0.00 : 49b2e0: 49 83 c4 08 add $0x8,%r12 : CacheInvalidateHeapTuple(relation, heaptuples[i], NULL); 0.00 : 49b2e4: e8 07 c2 2c 00 callq 7674f0 : * because the heaptuples data structure is all in local memory, not in : * the shared buffer. : */ : if (IsCatalogRelation(relation)) : { : for (i = 0; i < ntuples; i++) 0.00 : 49b2e9: 39 9d f4 fe ff ff cmp %ebx,-0x10c(%rbp) 0.00 : 49b2ef: 7f df jg 49b2d0 : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; : rdata[1].buffer_std = true; : rdata[1].next = NULL; 0.00 : 49b2f1: 31 ff xor %edi,%edi 0.00 : 49b2f3: 31 f6 xor %esi,%esi 0.00 : 49b2f5: 0f 1f 00 nopl (%rax) : * Copy t_self fields back to the caller's original tuples. This does : * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's : * probably faster to always copy than check. : */ : for (i = 0; i < ntuples; i++) : tuples[i]->t_self = heaptuples[i]->t_self; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 0.64 : 49b2f8: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 49b2ff: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax : /* : * Copy t_self fields back to the caller's original tuples. This does : * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's : * probably faster to always copy than check. : */ : for (i = 0; i < ntuples; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2570 0.64 : 49b306: 83 c7 01 add $0x1,%edi : tuples[i]->t_self = heaptuples[i]->t_self; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 0.96 : 49b309: 48 8b 0c 32 mov (%rdx,%rsi,1),%rcx 0.00 : 49b30d: 48 8b 14 30 mov (%rax,%rsi,1),%rdx : /* : * Copy t_self fields back to the caller's original tuples. This does : * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's : * probably faster to always copy than check. : */ : for (i = 0; i < ntuples; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2570 0.64 : 49b311: 48 83 c6 08 add $0x8,%rsi : tuples[i]->t_self = heaptuples[i]->t_self; 0.00 : 49b315: 8b 42 04 mov 0x4(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 6.73 : 49b318: 89 41 04 mov %eax,0x4(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2571 2.56 : 49b31b: 0f b7 42 08 movzwl 0x8(%rdx),%eax 1.28 : 49b31f: 66 89 41 08 mov %ax,0x8(%rcx) : /* : * Copy t_self fields back to the caller's original tuples. This does : * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's : * probably faster to always copy than check. : */ : for (i = 0; i < ntuples; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2570 1.28 : 49b323: 39 bd f4 fe ff ff cmp %edi,-0x10c(%rbp) 0.00 : 49b329: 7f cd jg 49b2f8 : tuples[i]->t_self = heaptuples[i]->t_self; : : pgstat_count_heap_insert(relation, ntuples); 0.00 : 49b32b: 8b b5 f4 fe ff ff mov -0x10c(%rbp),%esi 0.00 : 49b331: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b338: e8 33 72 1a 00 callq 642570 : } 0.00 : 49b33d: 48 81 c4 18 01 00 00 add $0x118,%rsp 0.00 : 49b344: 5b pop %rbx 0.00 : 49b345: 41 5c pop %r12 0.00 : 49b347: 41 5d pop %r13 0.00 : 49b349: 41 5e pop %r14 0.00 : 49b34b: 41 5f pop %r15 0.00 : 49b34d: c9 leaveq 0.00 : 49b34e: c3 retq 0.00 : 49b34f: 90 nop : } : : if (PageIsAllVisible(page)) : { : all_visible_cleared = true; : PageClearAllVisible(page); 0.00 : 49b350: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 49b357: 83 e0 fb and $0xfffffffb,%eax 0.00 : 49b35a: 66 89 41 0a mov %ax,0xa(%rcx) : visibilitymap_clear(relation, 0.00 : 49b35e: 8b bd 38 ff ff ff mov -0xc8(%rbp),%edi 0.00 : 49b364: 8b 5d cc mov -0x34(%rbp),%ebx 0.00 : 49b367: e8 c4 8c 1d 00 callq 674030 0.00 : 49b36c: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b373: 89 da mov %ebx,%edx 0.00 : 49b375: 89 c6 mov %eax,%esi 0.00 : 49b377: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 49b37c: e8 af 91 00 00 callq 4a4530 0.00 : 49b381: e9 4b fc ff ff jmpq 49afd1 0.00 : 49b386: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 49b38d: 00 00 00 : * all-visible, this will also pin the requisite visibility map page. : */ : buffer = RelationGetBufferForTuple(relation, heaptuples[ndone]->t_len, : InvalidBuffer, options, bistate, : &vmbuffer, NULL); : page = BufferGetPage(buffer); 0.00 : 49b390: 48 8b 15 81 1d 6e 00 mov 0x6e1d81(%rip),%rdx # b7d118 0.00 : 49b397: f7 d0 not %eax 0.00 : 49b399: 48 98 cltq 0.00 : 49b39b: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 49b39f: 48 89 95 20 ff ff ff mov %rdx,-0xe0(%rbp) 0.00 : 49b3a6: e9 58 fb ff ff jmpq 49af03 0.00 : 49b3ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; 0.32 : 49b3b0: 8b 8d 38 ff ff ff mov -0xc8(%rbp),%ecx : rdata[1].buffer_std = true; 0.32 : 49b3b6: c6 45 90 01 movb $0x1,-0x70(%rbp) : rdata[1].next = NULL; 0.00 : 49b3ba: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 49b3c1: 00 : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &rdata[1]; : : rdata[1].data = tupledata; : rdata[1].len = totaldatalen; : rdata[1].buffer = need_tuple_data ? InvalidBuffer : buffer; 0.00 : 49b3c2: 89 4d 8c mov %ecx,-0x74(%rbp) 0.00 : 49b3c5: e9 22 fe ff ff jmpq 49b1ec 0.00 : 49b3ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * If the page was previously empty, we can reinit the page : * instead of restoring the whole thing. : */ : init = (ItemPointerGetOffsetNumber(&(heaptuples[ndone]->t_self)) == FirstOffsetNumber && 0.00 : 49b3d0: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : 49b3d7: 0f b7 50 0c movzwl 0xc(%rax),%edx 0.32 : 49b3db: 31 c0 xor %eax,%eax 0.00 : 49b3dd: 66 83 fa 18 cmp $0x18,%dx 0.00 : 49b3e1: 76 0b jbe 49b3ee 0.00 : 49b3e3: 0f b7 c2 movzwl %dx,%eax 0.00 : 49b3e6: 48 83 e8 18 sub $0x18,%rax 0.00 : 49b3ea: 48 c1 e8 02 shr $0x2,%rax 0.32 : 49b3ee: 48 63 8d 3c ff ff ff movslq -0xc4(%rbp),%rcx 0.00 : 49b3f5: 48 39 c8 cmp %rcx,%rax 0.00 : 49b3f8: 0f 85 01 fc ff ff jne 49afff : PageGetMaxOffsetNumber(page) == FirstOffsetNumber + nthispage - 1); : : /* allocate xl_heap_multi_insert struct from the scratch area */ : xlrec = (xl_heap_multi_insert *) scratchptr; : scratchptr += SizeOfHeapMultiInsert; 0.32 : 49b3fe: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 49b405: c6 85 4d ff ff ff 01 movb $0x1,-0xb3(%rbp) 0.00 : 49b40c: 48 89 95 40 ff ff ff mov %rdx,-0xc0(%rbp) 0.00 : 49b413: e9 00 fc ff ff jmpq 49b018 0.00 : 49b418: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49b41f: 00 : * Signal that this is the last xl_heap_multi_insert record : * emitted by this call to heap_multi_insert(). Needed for logical : * decoding so it knows when to cleanup temporary data. : */ : if (ndone + nthispage == ntuples) : xlrec->flags |= XLOG_HEAP_LAST_MULTI_INSERT; 0.00 : 49b420: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 49b427: 80 4a 10 80 orb $0x80,0x10(%rdx) 0.00 : 49b42b: e9 ef fd ff ff jmpq 49b21f : int ndone; : char *scratch = NULL; : Page page; : bool needwal; : Size saveFreeSpace; : bool need_tuple_data = RelationIsLogicallyLogged(relation); 0.00 : 49b430: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 49b437: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 49b43b: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49b43f: 74 43 je 49b484 0.00 : 49b441: 48 8b 92 98 00 00 00 mov 0x98(%rdx),%rdx 0.00 : 49b448: c6 85 37 ff ff ff 00 movb $0x0,-0xc9(%rbp) 0.00 : 49b44f: c6 85 4e ff ff ff 00 movb $0x0,-0xb2(%rbp) 0.00 : 49b456: e9 df f8 ff ff jmpq 49ad3a : /* : * Copy t_self fields back to the caller's original tuples. This does : * nothing for untoasted tuples (tuples[i] == heaptuples[i)], but it's : * probably faster to always copy than check. : */ : for (i = 0; i < ntuples; i++) 0.00 : 49b45b: 8b 9d f4 fe ff ff mov -0x10c(%rbp),%ebx 0.00 : 49b461: 85 db test %ebx,%ebx 0.00 : 49b463: 0f 8f 88 fe ff ff jg 49b2f1 0.00 : 49b469: e9 bd fe ff ff jmpq 49b32b : * Allocate some memory to use for constructing the WAL record. Using : * palloc() within a critical section is not safe, so we allocate this : * beforehand. : */ : if (needwal) : scratch = palloc(BLCKSZ); 0.00 : 49b46e: bf 00 20 00 00 mov $0x2000,%edi 0.32 : 49b473: e8 d8 d8 2f 00 callq 798d50 0.00 : 49b478: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) 0.00 : 49b47f: e9 94 f9 ff ff jmpq 49ae18 : int ndone; : char *scratch = NULL; : Page page; : bool needwal; : Size saveFreeSpace; : bool need_tuple_data = RelationIsLogicallyLogged(relation); 0.00 : 49b484: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b48b: e8 50 79 04 00 callq 4e2de0 0.00 : 49b490: 84 c0 test %al,%al 0.00 : 49b492: 0f 94 85 37 ff ff ff sete -0xc9(%rbp) : bool need_cids = RelationIsAccessibleInLogicalDecoding(relation); 0.00 : 49b499: 83 3d bc dc 6d 00 02 cmpl $0x2,0x6ddcbc(%rip) # b7915c 0.00 : 49b4a0: 7e 7e jle 49b520 0.00 : 49b4a2: 48 8b 95 00 ff ff ff mov -0x100(%rbp),%rdx 0.00 : 49b4a9: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 49b4ad: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49b4b1: 75 5a jne 49b50d 0.00 : 49b4b3: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi 0.00 : 49b4ba: e8 21 79 04 00 callq 4e2de0 0.00 : 49b4bf: 84 c0 test %al,%al 0.00 : 49b4c1: 74 1a je 49b4dd 0.00 : 49b4c3: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 49b4ca: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.00 : 49b4d1: c6 85 4e ff ff ff 01 movb $0x1,-0xb2(%rbp) 0.00 : 49b4d8: e9 5d f8 ff ff jmpq 49ad3a 0.00 : 49b4dd: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 49b4e4: 48 8b 91 98 00 00 00 mov 0x98(%rcx),%rdx 0.00 : 49b4eb: 48 85 d2 test %rdx,%rdx 0.00 : 49b4ee: 74 11 je 49b501 0.00 : 49b4f0: c6 85 4e ff ff ff 01 movb $0x1,-0xb2(%rbp) 0.00 : 49b4f7: 80 7a 48 00 cmpb $0x0,0x48(%rdx) 0.00 : 49b4fb: 0f 85 39 f8 ff ff jne 49ad3a 0.00 : 49b501: c6 85 4e ff ff ff 00 movb $0x0,-0xb2(%rbp) 0.00 : 49b508: e9 2d f8 ff ff jmpq 49ad3a 0.00 : 49b50d: 48 8b 92 98 00 00 00 mov 0x98(%rdx),%rdx 0.00 : 49b514: c6 85 4e ff ff ff 00 movb $0x0,-0xb2(%rbp) 0.00 : 49b51b: e9 1a f8 ff ff jmpq 49ad3a 0.00 : 49b520: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax 0.00 : 49b527: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.00 : 49b52e: c6 85 4e ff ff ff 00 movb $0x0,-0xb2(%rbp) 0.00 : 49b535: e9 00 f8 ff ff jmpq 49ad3a Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:898 11.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:898 10.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:893 9.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:885 9.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:893 8.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:893 6.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:872 6.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:878 4.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:872 4.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:891 3.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:898 2.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:872 2.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:891 1.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:872 1.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:891 1.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:893 1.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:898 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d7eb0 : : /* : * float4{eq,ne,lt,le,gt,ge} - float4/float4 comparison operations : */ : static int : float4_cmp_internal(float4 a, float4 b) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:872 1.41 : 6d7eb0: 55 push %rbp 2.46 : 6d7eb1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:872 6.69 : 6d7eb4: 48 83 ec 10 sub $0x10,%rsp 0.35 : 6d7eb8: f3 0f 11 45 fc movss %xmm0,-0x4(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:872 4.93 : 6d7ebd: f3 0f 11 4d f8 movss %xmm1,-0x8(%rbp) : /* : * We consider all NANs to be equal and larger than any non-NAN. This is : * somewhat arbitrary; the important thing is to have a consistent sort : * order. : */ : if (isnan(a)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:878 6.69 : 6d7ec2: e8 99 14 d9 ff callq 469360 <__isnanf@plt> 0.00 : 6d7ec7: 85 c0 test %eax,%eax 0.00 : 6d7ec9: 74 15 je 6d7ee0 : { : if (isnan(b)) 0.00 : 6d7ecb: f3 0f 10 45 f8 movss -0x8(%rbp),%xmm0 0.00 : 6d7ed0: e8 8b 14 d9 ff callq 469360 <__isnanf@plt> 0.00 : 6d7ed5: 85 c0 test %eax,%eax 0.00 : 6d7ed7: 0f 94 c0 sete %al 0.00 : 6d7eda: 0f b6 c0 movzbl %al,%eax : else if (a < b) : return -1; : else : return 0; : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:898 11.97 : 6d7edd: c9 leaveq 13.03 : 6d7ede: c3 retq 0.00 : 6d7edf: 90 nop : if (isnan(b)) : return 0; /* NAN = NAN */ : else : return 1; /* NAN > non-NAN */ : } : else if (isnan(b)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:885 9.86 : 6d7ee0: f3 0f 10 45 f8 movss -0x8(%rbp),%xmm0 0.00 : 6d7ee5: e8 76 14 d9 ff callq 469360 <__isnanf@plt> 0.00 : 6d7eea: 85 c0 test %eax,%eax 0.00 : 6d7eec: 75 22 jne 6d7f10 : { : return -1; /* non-NAN < NAN */ : } : else : { : if (a > b) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:891 2.11 : 6d7eee: f3 0f 10 45 fc movss -0x4(%rbp),%xmm0 1.06 : 6d7ef3: b0 01 mov $0x1,%al 0.00 : 6d7ef5: 0f 2e 45 f8 ucomiss -0x8(%rbp),%xmm0 4.23 : 6d7ef9: 77 e2 ja 6d7edd : return 1; : else if (a < b) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:893 10.56 : 6d7efb: f3 0f 10 45 f8 movss -0x8(%rbp),%xmm0 9.51 : 6d7f00: 30 c0 xor %al,%al 0.35 : 6d7f02: 0f 2e 45 fc ucomiss -0x4(%rbp),%xmm0 8.80 : 6d7f06: 76 d5 jbe 6d7edd /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:893 1.06 : 6d7f08: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6d7f0f: 00 0.35 : 6d7f10: b8 ff ff ff ff mov $0xffffffff,%eax : return -1; : else : return 0; : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:898 4.58 : 6d7f15: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 9.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 4.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1497 4.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1522 3.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1474 3.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 3.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1497 3.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1551 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1478 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1482 2.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1482 2.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1497 2.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1558 2.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1453 2.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1453 2.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 2.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1482 2.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1493 1.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1453 1.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1516 1.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1521 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1531 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1531 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1551 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1558 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1558 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1502 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1515 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1522 1.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1552 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1453 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1484 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1515 0.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1515 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cdb70 : : * experience teaches otherwise. This code is much faster than most versions : * of mktime(), anyway. : */ : int : DetermineTimeZoneOffset(struct pg_tm * tm, pg_tz *tzp) : { 0.38 : 6cdb70: 55 push %rbp 0.00 : 6cdb71: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1453 1.89 : 6cdb74: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.76 : 6cdb78: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 6cdb7c: 48 89 fb mov %rdi,%rbx 2.27 : 6cdb7f: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.38 : 6cdb83: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 6cdb87: 48 83 ec 60 sub $0x60,%rsp : * First, generate the pg_time_t value corresponding to the given : * y/m/d/h/m/s taken as GMT time. If this overflows, punt and decide the : * timezone is GMT. (We only need to worry about overflow on machines : * where pg_time_t is 32 bits.) : */ : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6cdb8b: 8b 7f 14 mov 0x14(%rdi),%edi : * experience teaches otherwise. This code is much faster than most versions : * of mktime(), anyway. : */ : int : DetermineTimeZoneOffset(struct pg_tm * tm, pg_tz *tzp) : { 2.27 : 6cdb8e: 49 89 f4 mov %rsi,%r12 : * First, generate the pg_time_t value corresponding to the given : * y/m/d/h/m/s taken as GMT time. If this overflows, punt and decide the : * timezone is GMT. (We only need to worry about overflow on machines : * where pg_time_t is 32 bits.) : */ : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6cdb91: 81 ff 97 ed ff ff cmp $0xffffed97,%edi 0.00 : 6cdb97: 7f 27 jg 6cdbc0 0.00 : 6cdb99: 0f 84 71 01 00 00 je 6cdd10 : tm->tm_isdst = before_isdst; : return -(int) before_gmtoff; : : overflow: : /* Given date is out of range, so assume UTC */ : tm->tm_isdst = 0; 0.00 : 6cdb9f: c7 43 20 00 00 00 00 movl $0x0,0x20(%rbx) 0.00 : 6cdba6: 31 c0 xor %eax,%eax : return 0; : } 0.38 : 6cdba8: 48 8b 5d e0 mov -0x20(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1558 1.14 : 6cdbac: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 6cdbb0: 4c 8b 6d f0 mov -0x10(%rbp),%r13 1.14 : 6cdbb4: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.38 : 6cdbb8: c9 leaveq 0.38 : 6cdbb9: c3 retq 0.00 : 6cdbba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * First, generate the pg_time_t value corresponding to the given : * y/m/d/h/m/s taken as GMT time. If this overflows, punt and decide the : * timezone is GMT. (We only need to worry about overflow on machines : * where pg_time_t is 32 bits.) : */ : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6cdbc0: 81 ff d1 a4 59 00 cmp $0x59a4d1,%edi 0.00 : 6cdbc6: 7f d7 jg 6cdb9f 0.00 : 6cdbc8: 8b 73 10 mov 0x10(%rbx),%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1474 3.41 : 6cdbcb: 8b 53 0c mov 0xc(%rbx),%edx : goto overflow; : date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - UNIX_EPOCH_JDATE; 0.00 : 6cdbce: e8 4d c1 ff ff callq 6c9d20 : : day = ((pg_time_t) date) * SECS_PER_DAY; 0.00 : 6cdbd3: 2d 8c 3d 25 00 sub $0x253d8c,%eax : if (day / SECS_PER_DAY != date) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 2.27 : 6cdbd8: 48 ba 57 29 51 ce a0 movabs $0x1845c8a0ce512957,%rdx 0.00 : 6cdbdf: c8 45 18 : */ : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) : goto overflow; : date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - UNIX_EPOCH_JDATE; : : day = ((pg_time_t) date) * SECS_PER_DAY; 0.00 : 6cdbe2: 48 63 f8 movslq %eax,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1478 3.03 : 6cdbe5: 48 69 f7 80 51 01 00 imul $0x15180,%rdi,%rsi : if (day / SECS_PER_DAY != date) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 9.47 : 6cdbec: 48 89 f0 mov %rsi,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 3.03 : 6cdbef: 48 89 f1 mov %rsi,%rcx 0.00 : 6cdbf2: 48 f7 ea imul %rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 12.50 : 6cdbf5: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 6cdbf9: 48 c1 fa 0d sar $0xd,%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1479 3.41 : 6cdbfd: 48 29 ca sub %rcx,%rdx 3.03 : 6cdc00: 48 39 d7 cmp %rdx,%rdi 0.00 : 6cdc03: 75 9a jne 6cdb9f : goto overflow; : sec = tm->tm_sec + (tm->tm_min + tm->tm_hour * MINS_PER_HOUR) * SECS_PER_MINUTE; : mytime = day + sec; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1482 2.65 : 6cdc05: 8b 43 08 mov 0x8(%rbx),%eax 0.00 : 6cdc08: 41 bb 3c 00 00 00 mov $0x3c,%r11d 0.00 : 6cdc0e: 41 ba 3c 00 00 00 mov $0x3c,%r10d 0.00 : 6cdc14: 41 0f af c3 imul %r11d,%eax 2.27 : 6cdc18: 03 43 04 add 0x4(%rbx),%eax 0.00 : 6cdc1b: 41 0f af c2 imul %r10d,%eax 0.00 : 6cdc1f: 03 03 add (%rbx),%eax 0.00 : 6cdc21: 48 98 cltq 3.03 : 6cdc23: 4c 8d 2c 30 lea (%rax,%rsi,1),%r13 : /* since sec >= 0, overflow could only be from +day to -mytime */ : if (mytime < 0 && day > 0) 0.00 : 6cdc27: 4d 89 ee mov %r13,%r14 0.00 : 6cdc2a: 49 c1 ee 3f shr $0x3f,%r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1484 0.76 : 6cdc2e: 45 84 f6 test %r14b,%r14b 0.00 : 6cdc31: 74 0d je 6cdc40 0.00 : 6cdc33: 48 85 f6 test %rsi,%rsi 0.00 : 6cdc36: 0f 8f 63 ff ff ff jg 6cdb9f 0.00 : 6cdc3c: 0f 1f 40 00 nopl 0x0(%rax) : * Find the DST time boundary just before or following the target time. We : * assume that all zones have GMT offsets less than 24 hours, and that DST : * boundaries can't be closer together than 48 hours, so backing up 24 : * hours and finding the "next" boundary will work. : */ : prevtime = mytime - SECS_PER_DAY; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1493 2.27 : 6cdc40: 49 8d 85 80 ae fe ff lea -0x15180(%r13),%rax : if (mytime < 0 && prevtime > 0) 0.00 : 6cdc47: 45 84 f6 test %r14b,%r14b : * Find the DST time boundary just before or following the target time. We : * assume that all zones have GMT offsets less than 24 hours, and that DST : * boundaries can't be closer together than 48 hours, so backing up 24 : * hours and finding the "next" boundary will work. : */ : prevtime = mytime - SECS_PER_DAY; 0.38 : 6cdc4a: 48 89 45 d0 mov %rax,-0x30(%rbp) : if (mytime < 0 && prevtime > 0) 0.00 : 6cdc4e: 0f 85 e4 00 00 00 jne 6cdd38 : goto overflow; : : res = pg_next_dst_boundary(&prevtime, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1497 2.65 : 6cdc54: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 6cdc58: 48 8d 55 dc lea -0x24(%rbp),%rdx 0.00 : 6cdc5c: 48 8d 75 c0 lea -0x40(%rbp),%rsi 0.00 : 6cdc60: 48 8d 7d d0 lea -0x30(%rbp),%rdi 4.17 : 6cdc64: 4c 8d 4d d8 lea -0x28(%rbp),%r9 0.00 : 6cdc68: 4c 8d 45 b8 lea -0x48(%rbp),%r8 0.00 : 6cdc6c: 4c 89 24 24 mov %r12,(%rsp) 3.41 : 6cdc70: e8 ab a9 0d 00 callq 7a8620 : &before_gmtoff, &before_isdst, : &boundary, : &after_gmtoff, &after_isdst, : tzp); : if (res < 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1502 1.14 : 6cdc75: 83 f8 00 cmp $0x0,%eax 0.00 : 6cdc78: 0f 8c 21 ff ff ff jl 6cdb9f : goto overflow; /* failure? */ : : if (res == 0) 0.38 : 6cdc7e: 0f 84 c9 00 00 00 je 6cdd4d : } : : /* : * Form the candidate pg_time_t values with local-time adjustment : */ : beforetime = mytime - before_gmtoff; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1515 0.76 : 6cdc84: 48 8b 75 c0 mov -0x40(%rbp),%rsi 1.14 : 6cdc88: 4c 89 ef mov %r13,%rdi 0.76 : 6cdc8b: 48 29 f7 sub %rsi,%rdi : if ((before_gmtoff > 0 && 0.38 : 6cdc8e: 45 84 f6 test %r14b,%r14b 0.00 : 6cdc91: 74 0e je 6cdca1 0.00 : 6cdc93: 48 85 f6 test %rsi,%rsi 0.00 : 6cdc96: 7e 09 jle 6cdca1 0.00 : 6cdc98: 48 85 ff test %rdi,%rdi 0.00 : 6cdc9b: 0f 8f fe fe ff ff jg 6cdb9f 0.00 : 6cdca1: 4d 85 ed test %r13,%r13 0.00 : 6cdca4: 0f 9f c2 setg %dl /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1516 1.89 : 6cdca7: 48 85 f6 test %rsi,%rsi 0.00 : 6cdcaa: 0f 8e bc 00 00 00 jle 6cdd6c : mytime < 0 && beforetime > 0) || : (before_gmtoff <= 0 && : mytime > 0 && beforetime < 0)) : goto overflow; : aftertime = mytime - after_gmtoff; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1521 1.89 : 6cdcb0: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.38 : 6cdcb4: 4c 89 e8 mov %r13,%rax 0.00 : 6cdcb7: 48 29 c8 sub %rcx,%rax : if ((after_gmtoff > 0 && /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1522 4.17 : 6cdcba: 45 84 f6 test %r14b,%r14b 0.00 : 6cdcbd: 74 0e je 6cdccd 0.00 : 6cdcbf: 48 85 c9 test %rcx,%rcx 0.00 : 6cdcc2: 7e 09 jle 6cdccd 0.00 : 6cdcc4: 48 85 c0 test %rax,%rax 0.00 : 6cdcc7: 0f 8f d2 fe ff ff jg 6cdb9f 0.38 : 6cdccd: 84 d2 test %dl,%dl 0.00 : 6cdccf: 90 nop 0.00 : 6cdcd0: 74 09 je 6cdcdb 1.14 : 6cdcd2: 48 85 c9 test %rcx,%rcx 0.00 : 6cdcd5: 0f 8e 83 00 00 00 jle 6cdd5e : goto overflow; : : /* : * If both before or both after the boundary time, we know what to do : */ : if (beforetime <= boundary && aftertime < boundary) 0.00 : 6cdcdb: 48 8b 55 c8 mov -0x38(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1531 1.52 : 6cdcdf: 48 39 d7 cmp %rdx,%rdi 0.00 : 6cdce2: 0f 8e a5 00 00 00 jle 6cdd8d : { : tm->tm_isdst = before_isdst; : return -(int) before_gmtoff; : } : if (beforetime > boundary && aftertime >= boundary) 0.38 : 6cdce8: 48 39 d0 cmp %rdx,%rax 0.00 : 6cdceb: 0f 8d b4 00 00 00 jge 6cdda5 : : /* : * It's an invalid or ambiguous time due to timezone transition. Prefer : * the standard-time interpretation. : */ : if (after_isdst == 0) 0.00 : 6cdcf1: 44 8b 4d d8 mov -0x28(%rbp),%r9d 0.00 : 6cdcf5: 45 85 c9 test %r9d,%r9d 0.00 : 6cdcf8: 0f 85 98 00 00 00 jne 6cdd96 : { : tm->tm_isdst = after_isdst; : return -(int) after_gmtoff; 0.00 : 6cdcfe: 89 c8 mov %ecx,%eax : * It's an invalid or ambiguous time due to timezone transition. Prefer : * the standard-time interpretation. : */ : if (after_isdst == 0) : { : tm->tm_isdst = after_isdst; 0.00 : 6cdd00: c7 43 20 00 00 00 00 movl $0x0,0x20(%rbx) : return -(int) after_gmtoff; 0.00 : 6cdd07: f7 d8 neg %eax : : overflow: : /* Given date is out of range, so assume UTC */ : tm->tm_isdst = 0; : return 0; : } 0.00 : 6cdd09: e9 9a fe ff ff jmpq 6cdba8 0.00 : 6cdd0e: 66 90 xchg %ax,%ax : * First, generate the pg_time_t value corresponding to the given : * y/m/d/h/m/s taken as GMT time. If this overflows, punt and decide the : * timezone is GMT. (We only need to worry about overflow on machines : * where pg_time_t is 32 bits.) : */ : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6cdd10: 8b 73 10 mov 0x10(%rbx),%esi 0.00 : 6cdd13: 83 fe 0b cmp $0xb,%esi 0.00 : 6cdd16: 0f 8f af fe ff ff jg 6cdbcb 0.00 : 6cdd1c: 0f 85 7d fe ff ff jne 6cdb9f 0.00 : 6cdd22: 8b 53 0c mov 0xc(%rbx),%edx 0.00 : 6cdd25: 83 fa 17 cmp $0x17,%edx 0.00 : 6cdd28: 0f 8e 71 fe ff ff jle 6cdb9f 0.00 : 6cdd2e: 66 90 xchg %ax,%ax 0.00 : 6cdd30: e9 99 fe ff ff jmpq 6cdbce 0.00 : 6cdd35: 0f 1f 00 nopl (%rax) : * assume that all zones have GMT offsets less than 24 hours, and that DST : * boundaries can't be closer together than 48 hours, so backing up 24 : * hours and finding the "next" boundary will work. : */ : prevtime = mytime - SECS_PER_DAY; : if (mytime < 0 && prevtime > 0) 0.00 : 6cdd38: 48 85 c0 test %rax,%rax 0.00 : 6cdd3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6cdd40: 0f 8f 59 fe ff ff jg 6cdb9f 0.00 : 6cdd46: 66 90 xchg %ax,%ax 0.00 : 6cdd48: e9 07 ff ff ff jmpq 6cdc54 : goto overflow; /* failure? */ : : if (res == 0) : { : /* Non-DST zone, life is simple */ : tm->tm_isdst = before_isdst; 0.00 : 6cdd4d: 8b 45 dc mov -0x24(%rbp),%eax 0.00 : 6cdd50: 89 43 20 mov %eax,0x20(%rbx) : return -(int) before_gmtoff; 0.00 : 6cdd53: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 6cdd57: f7 d8 neg %eax : : overflow: : /* Given date is out of range, so assume UTC */ : tm->tm_isdst = 0; : return 0; : } 0.00 : 6cdd59: e9 4a fe ff ff jmpq 6cdba8 : mytime < 0 && beforetime > 0) || : (before_gmtoff <= 0 && : mytime > 0 && beforetime < 0)) : goto overflow; : aftertime = mytime - after_gmtoff; : if ((after_gmtoff > 0 && 0.00 : 6cdd5e: 48 85 c0 test %rax,%rax 0.00 : 6cdd61: 0f 89 74 ff ff ff jns 6cdcdb 0.00 : 6cdd67: e9 33 fe ff ff jmpq 6cdb9f : : /* : * Form the candidate pg_time_t values with local-time adjustment : */ : beforetime = mytime - before_gmtoff; : if ((before_gmtoff > 0 && 0.00 : 6cdd6c: 84 d2 test %dl,%dl 0.00 : 6cdd6e: 66 90 xchg %ax,%ax 0.00 : 6cdd70: 0f 84 3a ff ff ff je 6cdcb0 0.00 : 6cdd76: 48 85 ff test %rdi,%rdi 0.00 : 6cdd79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 6cdd80: 0f 89 2a ff ff ff jns 6cdcb0 0.00 : 6cdd86: 66 90 xchg %ax,%ax 0.00 : 6cdd88: e9 12 fe ff ff jmpq 6cdb9f : goto overflow; : : /* : * If both before or both after the boundary time, we know what to do : */ : if (beforetime <= boundary && aftertime < boundary) 1.52 : 6cdd8d: 48 39 d0 cmp %rdx,%rax 0.00 : 6cdd90: 0f 8d 5b ff ff ff jge 6cdcf1 : if (after_isdst == 0) : { : tm->tm_isdst = after_isdst; : return -(int) after_gmtoff; : } : tm->tm_isdst = before_isdst; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1551 1.52 : 6cdd96: 8b 45 dc mov -0x24(%rbp),%eax 3.41 : 6cdd99: 89 43 20 mov %eax,0x20(%rbx) : return -(int) before_gmtoff; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1552 1.14 : 6cdd9c: 89 f0 mov %esi,%eax 0.00 : 6cdd9e: f7 d8 neg %eax : : overflow: : /* Given date is out of range, so assume UTC */ : tm->tm_isdst = 0; : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:1558 2.65 : 6cdda0: e9 03 fe ff ff jmpq 6cdba8 : tm->tm_isdst = before_isdst; : return -(int) before_gmtoff; : } : if (beforetime > boundary && aftertime >= boundary) : { : tm->tm_isdst = after_isdst; 0.38 : 6cdda5: 8b 45 d8 mov -0x28(%rbp),%eax 0.00 : 6cdda8: 89 43 20 mov %eax,0x20(%rbx) : return -(int) after_gmtoff; 0.00 : 6cddab: 89 c8 mov %ecx,%eax 0.00 : 6cddad: f7 d8 neg %eax : : overflow: : /* Given date is out of range, so assume UTC */ : tm->tm_isdst = 0; : return 0; : } 0.00 : 6cddaf: e9 f4 fd ff ff jmpq 6cdba8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1379 9.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1383 9.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1367 8.75 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1376 7.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1379 6.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1361 6.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1361 6.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1371 5.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1365 4.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1374 3.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1365 3.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1376 2.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1370 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1383 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077dec0 : : } : : Datum : FunctionCall4Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, : Datum arg3, Datum arg4) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1361 6.84 : 77dec0: 55 push %rbp 0.00 : 77dec1: 48 89 f8 mov %rdi,%rax 0.00 : 77dec4: 48 89 e5 mov %rsp,%rbp 6.84 : 77dec7: 48 81 ec b0 03 00 00 sub $0x3b0,%rsp : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 4, collation, NULL, NULL); 0.00 : 77dece: 48 89 bd 50 fc ff ff mov %rdi,-0x3b0(%rbp) 0.00 : 77ded5: 48 c7 85 58 fc ff ff movq $0x0,-0x3a8(%rbp) 0.00 : 77dedc: 00 00 00 00 : fcinfo.argnull[0] = false; : fcinfo.argnull[1] = false; : fcinfo.argnull[2] = false; : fcinfo.argnull[3] = false; : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1376 3.04 : 77dee0: 48 8d bd 50 fc ff ff lea -0x3b0(%rbp),%rdi : Datum arg3, Datum arg4) : { : FunctionCallInfoData fcinfo; : Datum result; : : InitFunctionCallInfoData(fcinfo, flinfo, 4, collation, NULL, NULL); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1365 5.70 : 77dee7: 48 c7 85 60 fc ff ff movq $0x0,-0x3a0(%rbp) 0.00 : 77deee: 00 00 00 00 0.00 : 77def2: 89 b5 68 fc ff ff mov %esi,-0x398(%rbp) 0.00 : 77def8: c6 85 6c fc ff ff 00 movb $0x0,-0x394(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1365 3.80 : 77deff: 66 c7 85 6e fc ff ff movw $0x4,-0x392(%rbp) 0.00 : 77df06: 04 00 : : fcinfo.arg[0] = arg1; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1367 9.13 : 77df08: 48 89 95 70 fc ff ff mov %rdx,-0x390(%rbp) : fcinfo.arg[1] = arg2; 0.00 : 77df0f: 48 89 8d 78 fc ff ff mov %rcx,-0x388(%rbp) : fcinfo.arg[2] = arg3; 0.00 : 77df16: 4c 89 85 80 fc ff ff mov %r8,-0x380(%rbp) : fcinfo.arg[3] = arg4; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1370 2.66 : 77df1d: 4c 89 8d 88 fc ff ff mov %r9,-0x378(%rbp) : fcinfo.argnull[0] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1371 6.84 : 77df24: c6 45 90 00 movb $0x0,-0x70(%rbp) : fcinfo.argnull[1] = false; 0.00 : 77df28: c6 45 91 00 movb $0x0,-0x6f(%rbp) : fcinfo.argnull[2] = false; 0.00 : 77df2c: c6 45 92 00 movb $0x0,-0x6e(%rbp) : fcinfo.argnull[3] = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1374 4.18 : 77df30: c6 45 93 00 movb $0x0,-0x6d(%rbp) : : result = FunctionCallInvoke(&fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1376 8.75 : 77df34: ff 10 callq *(%rax) : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1379 7.60 : 77df36: 80 bd 6c fc ff ff 00 cmpb $0x0,-0x394(%rbp) 23.57 : 77df3d: 75 02 jne 77df41 : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1383 9.51 : 77df3f: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:1383 1.52 : 77df40: c3 retq : : result = FunctionCallInvoke(&fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (unlikely(fcinfo.isnull)) : elog(ERROR, "function %u returned NULL", fcinfo.flinfo->fn_oid); 0.00 : 77df41: ba 00 52 8d 00 mov $0x8d5200,%edx 0.00 : 77df46: be 64 05 00 00 mov $0x564,%esi 0.00 : 77df4b: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77df50: e8 cb d4 ff ff callq 77b420 0.00 : 77df55: 48 8b 85 50 fc ff ff mov -0x3b0(%rbp),%rax 0.00 : 77df5c: be 97 4c 8d 00 mov $0x8d4c97,%esi 0.00 : 77df61: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77df66: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 77df69: 31 c0 xor %eax,%eax 0.00 : 77df6b: e8 c0 d2 ff ff callq 77b230 0.00 : 77df70: e8 5b b5 ce ff callq 4694d0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:130 10.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:164 10.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 7.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 7.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 5.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:172 4.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:130 4.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:164 4.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 3.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 3.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:130 3.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:172 2.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 2.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:130 2.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 2.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 2.01 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:134 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:130 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:130 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:134 1.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:172 1.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 1.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 1.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c9b10 : : /* date_in() : * Given date text string, convert to internal date format. : */ : Datum : date_in(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 7.63 : 6c9b10: 55 push %rbp : int dterr; : char *field[MAXDATEFIELDS]; : int ftype[MAXDATEFIELDS]; : char workbuf[MAXDATELEN + 1]; : : dterr = ParseDateTime(str, workbuf, sizeof(workbuf), /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 10.44 : 6c9b11: 41 b9 19 00 00 00 mov $0x19,%r9d 0.00 : 6c9b17: ba 81 00 00 00 mov $0x81,%edx : /* date_in() : * Given date text string, convert to internal date format. : */ : Datum : date_in(PG_FUNCTION_ARGS) : { 0.00 : 6c9b1c: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 2.01 : 6c9b1f: 4c 89 65 e8 mov %r12,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 7.63 : 6c9b23: 4c 89 6d f0 mov %r13,-0x10(%rbp) : int dterr; : char *field[MAXDATEFIELDS]; : int ftype[MAXDATEFIELDS]; : char workbuf[MAXDATELEN + 1]; : : dterr = ParseDateTime(str, workbuf, sizeof(workbuf), /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 2.01 : 6c9b27: 4c 8d a5 20 ff ff ff lea -0xe0(%rbp),%r12 : /* date_in() : * Given date text string, convert to internal date format. : */ : Datum : date_in(PG_FUNCTION_ARGS) : { 0.00 : 6c9b2e: 48 89 5d e0 mov %rbx,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:113 4.02 : 6c9b32: 4c 89 75 f8 mov %r14,-0x8(%rbp) 1.20 : 6c9b36: 48 81 ec 50 02 00 00 sub $0x250,%rsp : char *str = PG_GETARG_CSTRING(0); 0.00 : 6c9b3d: 48 8b 5f 20 mov 0x20(%rdi),%rbx : int dterr; : char *field[MAXDATEFIELDS]; : int ftype[MAXDATEFIELDS]; : char workbuf[MAXDATELEN + 1]; : : dterr = ParseDateTime(str, workbuf, sizeof(workbuf), 0.00 : 6c9b41: 4c 8d ad c0 fd ff ff lea -0x240(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:127 1.20 : 6c9b48: 48 8d 45 d0 lea -0x30(%rbp),%rax 2.81 : 6c9b4c: 48 8d b5 90 fe ff ff lea -0x170(%rbp),%rsi 0.00 : 6c9b53: 4d 89 e0 mov %r12,%r8 0.00 : 6c9b56: 4c 89 e9 mov %r13,%rcx 1.20 : 6c9b59: 48 89 04 24 mov %rax,(%rsp) 3.21 : 6c9b5d: 48 89 df mov %rbx,%rdi 0.00 : 6c9b60: e8 cb 5b 00 00 callq 6cf730 : field, ftype, MAXDATEFIELDS, &nf); : if (dterr == 0) 0.40 : 6c9b65: 85 c0 test %eax,%eax 0.00 : 6c9b67: 74 17 je 6c9b80 : dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp); : if (dterr != 0) : DateTimeParseError(dterr, str, "date"); 0.00 : 6c9b69: ba 10 72 8e 00 mov $0x8e7210,%edx 0.00 : 6c9b6e: 48 89 de mov %rbx,%rsi 0.00 : 6c9b71: 89 c7 mov %eax,%edi 0.00 : 6c9b73: e8 e8 21 00 00 callq 6cbd60 0.00 : 6c9b78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6c9b7f: 00 : char workbuf[MAXDATELEN + 1]; : : dterr = ParseDateTime(str, workbuf, sizeof(workbuf), : field, ftype, MAXDATEFIELDS, &nf); : if (dterr == 0) : dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:130 4.82 : 6c9b80: 4c 8d 75 90 lea -0x70(%rbp),%r14 0.00 : 6c9b84: 8b 55 d0 mov -0x30(%rbp),%edx 2.81 : 6c9b87: 48 8d 45 d8 lea -0x28(%rbp),%rax 0.00 : 6c9b8b: 48 8d 4d d4 lea -0x2c(%rbp),%rcx 1.61 : 6c9b8f: 4c 8d 4d dc lea -0x24(%rbp),%r9 0.00 : 6c9b93: 4c 89 e6 mov %r12,%rsi 3.21 : 6c9b96: 4d 89 f0 mov %r14,%r8 0.00 : 6c9b99: 4c 89 ef mov %r13,%rdi 1.61 : 6c9b9c: 48 89 04 24 mov %rax,(%rsp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:130 12.45 : 6c9ba0: e8 9b 4e 00 00 callq 6cea40 : if (dterr != 0) 0.40 : 6c9ba5: 85 c0 test %eax,%eax 0.00 : 6c9ba7: 75 c0 jne 6c9b69 : DateTimeParseError(dterr, str, "date"); : : switch (dtype) 0.00 : 6c9ba9: 83 7d d4 0b cmpl $0xb,-0x2c(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:134 2.01 : 6c9bad: 76 19 jbe 6c9bc8 : case DTK_EARLY: : DATE_NOBEGIN(date); : PG_RETURN_DATEADT(date); : : default: : DateTimeParseError(DTERR_BAD_FORMAT, str, "date"); 0.00 : 6c9baf: ba 10 72 8e 00 mov $0x8e7210,%edx 0.00 : 6c9bb4: 48 89 de mov %rbx,%rsi 0.00 : 6c9bb7: bf ff ff ff ff mov $0xffffffff,%edi 0.00 : 6c9bbc: e8 9f 21 00 00 callq 6cbd60 0.00 : 6c9bc1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (dterr == 0) : dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp); : if (dterr != 0) : DateTimeParseError(dterr, str, "date"); : : switch (dtype) 1.61 : 6c9bc8: 8b 45 d4 mov -0x2c(%rbp),%eax 0.40 : 6c9bcb: ff 24 c5 68 99 8b 00 jmpq *0x8b9968(,%rax,8) 0.00 : 6c9bd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : GetCurrentDateTime(tm); : break; : : case DTK_EPOCH: : GetEpochTime(tm); 0.00 : 6c9bd8: 4c 89 f7 mov %r14,%rdi 0.00 : 6c9bdb: e8 30 98 07 00 callq 743410 : default: : DateTimeParseError(DTERR_BAD_FORMAT, str, "date"); : break; : } : : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:164 10.84 : 6c9be0: 8b 7d a4 mov -0x5c(%rbp),%edi 0.00 : 6c9be3: 81 ff 97 ed ff ff cmp $0xffffed97,%edi 0.00 : 6c9be9: 7f 35 jg 6c9c20 0.00 : 6c9beb: 0f 84 ef 00 00 00 je 6c9ce0 : ereport(ERROR, 0.00 : 6c9bf1: 45 31 c0 xor %r8d,%r8d 0.00 : 6c9bf4: b9 a2 9b 8b 00 mov $0x8b9ba2,%ecx 0.00 : 6c9bf9: ba a7 00 00 00 mov $0xa7,%edx 0.00 : 6c9bfe: be d3 94 8b 00 mov $0x8b94d3,%esi 0.00 : 6c9c03: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6c9c08: e8 b3 0e 0b 00 callq 77aac0 0.00 : 6c9c0d: 84 c0 test %al,%al 0.00 : 6c9c0f: 0f 85 ab 00 00 00 jne 6c9cc0 0.00 : 6c9c15: e8 b6 f8 d9 ff callq 4694d0 0.00 : 6c9c1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : default: : DateTimeParseError(DTERR_BAD_FORMAT, str, "date"); : break; : } : : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:164 4.42 : 6c9c20: 81 ff d1 a4 59 00 cmp $0x59a4d1,%edi 0.00 : 6c9c26: 7f c9 jg 6c9bf1 0.00 : 6c9c28: 8b 75 a0 mov -0x60(%rbp),%esi 0.00 : 6c9c2b: 8b 55 9c mov -0x64(%rbp),%edx : ereport(ERROR, : (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), : errmsg("date out of range: \"%s\"", str))); : : date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - POSTGRES_EPOCH_JDATE; 0.00 : 6c9c2e: e8 ed 00 00 00 callq 6c9d20 : : PG_RETURN_DATEADT(date); 0.00 : 6c9c33: 2d 59 68 25 00 sub $0x256859,%eax : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:172 1.61 : 6c9c38: eb 0b jmp 6c9c45 0.00 : 6c9c3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (dterr == 0) : dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp); : if (dterr != 0) : DateTimeParseError(dterr, str, "date"); : : switch (dtype) 0.00 : 6c9c40: b8 ff ff ff 7f mov $0x7fffffff,%eax : errmsg("date out of range: \"%s\"", str))); : : date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - POSTGRES_EPOCH_JDATE; : : PG_RETURN_DATEADT(date); : } 0.00 : 6c9c45: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 6c9c49: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 6c9c4d: 4c 8b 6d f0 mov -0x10(%rbp),%r13 3.21 : 6c9c51: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 6c9c55: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:172 5.22 : 6c9c56: c3 retq 0.00 : 6c9c57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6c9c5e: 00 00 : if (dterr == 0) : dterr = DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp); : if (dterr != 0) : DateTimeParseError(dterr, str, "date"); : : switch (dtype) 0.00 : 6c9c60: b8 00 00 00 80 mov $0x80000000,%eax 0.00 : 6c9c65: eb de jmp 6c9c45 0.00 : 6c9c67: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6c9c6e: 00 00 : { : case DTK_DATE: : break; : : case DTK_CURRENT: : ereport(ERROR, 0.00 : 6c9c70: 45 31 c0 xor %r8d,%r8d 0.00 : 6c9c73: b9 a2 9b 8b 00 mov $0x8b9ba2,%ecx 0.00 : 6c9c78: ba 8e 00 00 00 mov $0x8e,%edx 0.00 : 6c9c7d: be d3 94 8b 00 mov $0x8b94d3,%esi 0.00 : 6c9c82: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6c9c87: e8 34 0e 0b 00 callq 77aac0 0.00 : 6c9c8c: 84 c0 test %al,%al 0.00 : 6c9c8e: 74 85 je 6c9c15 0.00 : 6c9c90: bf c8 97 8b 00 mov $0x8b97c8,%edi 0.00 : 6c9c95: 31 c0 xor %eax,%eax 0.00 : 6c9c97: e8 04 2c 0b 00 callq 77c8a0 0.00 : 6c9c9c: bf 40 04 00 00 mov $0x440,%edi 0.00 : 6c9ca1: 89 c3 mov %eax,%ebx : DateTimeParseError(DTERR_BAD_FORMAT, str, "date"); : break; : } : : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) : ereport(ERROR, 0.00 : 6c9ca3: e8 a8 30 0b 00 callq 77cd50 0.00 : 6c9ca8: 89 de mov %ebx,%esi 0.00 : 6c9caa: 89 c7 mov %eax,%edi 0.00 : 6c9cac: 31 c0 xor %eax,%eax 0.00 : 6c9cae: e8 2d 09 0b 00 callq 77a5e0 0.00 : 6c9cb3: e9 5d ff ff ff jmpq 6c9c15 0.00 : 6c9cb8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6c9cbf: 00 0.00 : 6c9cc0: 48 89 de mov %rbx,%rsi 0.00 : 6c9cc3: bf 74 95 8b 00 mov $0x8b9574,%edi 0.00 : 6c9cc8: 31 c0 xor %eax,%eax 0.00 : 6c9cca: e8 d1 2b 0b 00 callq 77c8a0 0.00 : 6c9ccf: bf 82 00 00 08 mov $0x8000082,%edi 0.00 : 6c9cd4: 89 c3 mov %eax,%ebx 0.00 : 6c9cd6: eb cb jmp 6c9ca3 0.00 : 6c9cd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6c9cdf: 00 : default: : DateTimeParseError(DTERR_BAD_FORMAT, str, "date"); : break; : } : : if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) 0.00 : 6c9ce0: 8b 75 a0 mov -0x60(%rbp),%esi 0.00 : 6c9ce3: 83 fe 0b cmp $0xb,%esi 0.00 : 6c9ce6: 7f 20 jg 6c9d08 0.00 : 6c9ce8: 0f 85 03 ff ff ff jne 6c9bf1 0.00 : 6c9cee: 8b 55 9c mov -0x64(%rbp),%edx 0.00 : 6c9cf1: 83 fa 17 cmp $0x17,%edx 0.00 : 6c9cf4: 0f 8e f7 fe ff ff jle 6c9bf1 0.00 : 6c9cfa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6c9d00: e9 29 ff ff ff jmpq 6c9c2e 0.00 : 6c9d05: 0f 1f 00 nopl (%rax) : ereport(ERROR, 0.00 : 6c9d08: 8b 55 9c mov -0x64(%rbp),%edx 0.00 : 6c9d0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6c9d10: e9 19 ff ff ff jmpq 6c9c2e Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.31 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:685 12.90 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:687 5.24 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:715 4.44 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:709 4.44 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:731 4.03 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:715 3.63 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:687 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:666 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:724 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:734 2.42 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:666 2.42 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:687 2.42 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:685 2.42 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:705 2.42 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:728 2.42 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:746 2.02 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:666 2.02 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:725 2.02 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:737 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:707 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:716 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:729 1.61 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:746 1.21 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:676 1.21 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:732 1.21 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:737 1.21 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:737 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:666 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:666 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:687 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:700 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:707 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:731 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:737 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:746 0.81 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:746 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000470660 : : */ : HeapTuple : heap_form_tuple(TupleDesc tupleDescriptor, : Datum *values, : bool *isnull) : { 0.00 : 470660: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:666 0.81 : 470661: 48 89 e5 mov %rsp,%rbp 2.42 : 470664: 41 57 push %r15 0.00 : 470666: 49 89 d7 mov %rdx,%r15 0.00 : 470669: 41 56 push %r14 2.02 : 47066b: 49 89 fe mov %rdi,%r14 0.00 : 47066e: 41 55 push %r13 0.00 : 470670: 41 54 push %r12 0.81 : 470672: 53 push %rbx 3.23 : 470673: 48 83 ec 28 sub $0x28,%rsp 0.00 : 470677: 48 89 75 c0 mov %rsi,-0x40(%rbp) : HeapTupleHeader td; /* tuple data */ : Size len, : data_len; : int hoff; : bool hasnull = false; : int numberOfAttributes = tupleDescriptor->natts; 0.00 : 47067b: 44 8b 2f mov (%rdi),%r13d : int i; : : if (numberOfAttributes > MaxTupleAttributeNumber) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:676 1.21 : 47067e: 41 81 fd 80 06 00 00 cmp $0x680,%r13d 0.00 : 470685: 0f 8f 2b 01 00 00 jg 4707b6 : numberOfAttributes, MaxTupleAttributeNumber))); : : /* : * Check for nulls : */ : for (i = 0; i < numberOfAttributes; i++) 0.00 : 47068b: 45 85 ed test %r13d,%r13d 0.00 : 47068e: 7e 28 jle 4706b8 : { : if (isnull[i]) 0.00 : 470690: 48 89 d1 mov %rdx,%rcx 0.40 : 470693: 31 d2 xor %edx,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:687 0.81 : 470695: 41 80 3f 00 cmpb $0x0,(%r15) 0.00 : 470699: 74 15 je 4706b0 0.00 : 47069b: e9 00 01 00 00 jmpq 4707a0 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:687 12.90 : 4706a0: 0f b6 41 01 movzbl 0x1(%rcx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:687 3.63 : 4706a4: 48 83 c1 01 add $0x1,%rcx 2.42 : 4706a8: 84 c0 test %al,%al 0.00 : 4706aa: 0f 85 f0 00 00 00 jne 4707a0 : numberOfAttributes, MaxTupleAttributeNumber))); : : /* : * Check for nulls : */ : for (i = 0; i < numberOfAttributes; i++) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:685 13.31 : 4706b0: 83 c2 01 add $0x1,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:685 2.42 : 4706b3: 41 39 d5 cmp %edx,%r13d 0.00 : 4706b6: 7f e8 jg 4706a0 : * Determine total space needed : */ : len = offsetof(HeapTupleHeaderData, t_bits); : : if (hasnull) : len += BITMAPLEN(numberOfAttributes); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:700 0.81 : 4706b8: ba 17 00 00 00 mov $0x17,%edx 0.00 : 4706bd: c6 45 d7 00 movb $0x0,-0x29(%rbp) : : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); 0.40 : 4706c1: 41 80 7e 20 00 cmpb $0x0,0x20(%r14) 0.00 : 4706c6: 48 8d 42 04 lea 0x4(%rdx),%rax : : hoff = len = MAXALIGN(len); /* align user data safely */ : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:707 1.61 : 4706ca: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 4706ce: 4c 89 f7 mov %r14,%rdi : : if (hasnull) : len += BITMAPLEN(numberOfAttributes); : : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); 0.00 : 4706d1: 48 0f 45 d0 cmovne %rax,%rdx : : hoff = len = MAXALIGN(len); /* align user data safely */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:705 2.42 : 4706d5: 48 8d 5a 07 lea 0x7(%rdx),%rbx : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); 0.00 : 4706d9: 4c 89 fa mov %r15,%rdx : len += BITMAPLEN(numberOfAttributes); : : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); : : hoff = len = MAXALIGN(len); /* align user data safely */ 0.00 : 4706dc: 48 83 e3 f8 and $0xfffffffffffffff8,%rbx 0.00 : 4706e0: 89 5d d0 mov %ebx,-0x30(%rbp) : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:707 0.81 : 4706e3: e8 88 fc ff ff callq 470370 : : len += data_len; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:709 4.44 : 4706e8: 48 01 c3 add %rax,%rbx : if (tupleDescriptor->tdhasoid) : len += sizeof(Oid); : : hoff = len = MAXALIGN(len); /* align user data safely */ : : data_len = heap_compute_data_size(tupleDescriptor, values, isnull); 0.00 : 4706eb: 48 89 45 c8 mov %rax,-0x38(%rbp) : : /* : * Allocate and zero the space needed. Note that the tuple body and : * HeapTupleData management structure are allocated in one chunk. : */ : tuple = (HeapTuple) palloc0(HEAPTUPLESIZE + len); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:715 5.24 : 4706ef: 48 8d 7b 18 lea 0x18(%rbx),%rdi 0.00 : 4706f3: e8 78 88 32 00 callq 798f70 : tuple->t_data = td = (HeapTupleHeader) ((char *) tuple + HEAPTUPLESIZE); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:716 1.61 : 4706f8: 4c 8d 48 18 lea 0x18(%rax),%r9 : /* : * And fill in the information. Note we fill the Datum fields even though : * this tuple may never become a Datum. This lets HeapTupleHeaderGetDatum : * identify the tuple type if needed. : */ : tuple->t_len = len; 0.00 : 4706fc: 89 18 mov %ebx,(%rax) : ItemPointerSetInvalid(&(tuple->t_self)); : tuple->t_tableOid = InvalidOid; : : HeapTupleHeaderSetDatumLength(td, len); 0.40 : 4706fe: c1 e3 02 shl $0x2,%ebx : * And fill in the information. Note we fill the Datum fields even though : * this tuple may never become a Datum. This lets HeapTupleHeaderGetDatum : * identify the tuple type if needed. : */ : tuple->t_len = len; : ItemPointerSetInvalid(&(tuple->t_self)); 0.40 : 470701: 66 c7 40 04 ff ff movw $0xffff,0x4(%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:724 3.23 : 470707: 66 c7 40 06 ff ff movw $0xffff,0x6(%rax) : : /* : * Allocate and zero the space needed. Note that the tuple body and : * HeapTupleData management structure are allocated in one chunk. : */ : tuple = (HeapTuple) palloc0(HEAPTUPLESIZE + len); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:715 4.03 : 47070d: 49 89 c4 mov %rax,%r12 : tuple->t_data = td = (HeapTupleHeader) ((char *) tuple + HEAPTUPLESIZE); 0.00 : 470710: 4c 89 48 10 mov %r9,0x10(%rax) : * And fill in the information. Note we fill the Datum fields even though : * this tuple may never become a Datum. This lets HeapTupleHeaderGetDatum : * identify the tuple type if needed. : */ : tuple->t_len = len; : ItemPointerSetInvalid(&(tuple->t_self)); 0.00 : 470714: 66 c7 40 08 00 00 movw $0x0,0x8(%rax) : tuple->t_tableOid = InvalidOid; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:725 2.02 : 47071a: c7 40 0c 00 00 00 00 movl $0x0,0xc(%rax) : : HeapTupleHeaderSetDatumLength(td, len); 0.00 : 470721: 89 58 18 mov %ebx,0x18(%rax) : HeapTupleHeaderSetTypeId(td, tupleDescriptor->tdtypeid); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:728 2.42 : 470724: 41 8b 46 18 mov 0x18(%r14),%eax 0.00 : 470728: 41 89 41 08 mov %eax,0x8(%r9) : HeapTupleHeaderSetTypMod(td, tupleDescriptor->tdtypmod); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:729 1.61 : 47072c: 41 8b 46 1c mov 0x1c(%r14),%eax 0.00 : 470730: 41 89 41 04 mov %eax,0x4(%r9) : : HeapTupleHeaderSetNatts(td, numberOfAttributes); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:731 4.44 : 470734: 41 0f b7 41 12 movzwl 0x12(%r9),%eax 0.00 : 470739: 66 25 00 f8 and $0xf800,%ax 0.00 : 47073d: 44 09 e8 or %r13d,%eax 0.81 : 470740: 66 41 89 41 12 mov %ax,0x12(%r9) : td->t_hoff = hoff; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:732 1.21 : 470745: 0f b6 45 d0 movzbl -0x30(%rbp),%eax 0.00 : 470749: 41 88 41 16 mov %al,0x16(%r9) : : if (tupleDescriptor->tdhasoid) /* else leave infomask = 0 */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:734 3.23 : 47074d: 41 80 7e 20 00 cmpb $0x0,0x20(%r14) 0.00 : 470752: 74 07 je 47075b : td->t_infomask = HEAP_HASOID; 0.00 : 470754: 66 41 c7 41 14 08 00 movw $0x8,0x14(%r9) : : heap_fill_tuple(tupleDescriptor, 0.40 : 47075b: 48 63 4d d0 movslq -0x30(%rbp),%rcx 0.00 : 47075f: 31 d2 xor %edx,%edx 0.00 : 470761: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 470765: 49 8d 41 17 lea 0x17(%r9),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:737 1.21 : 470769: 4c 8b 45 c8 mov -0x38(%rbp),%r8 0.40 : 47076d: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.40 : 470771: 4c 89 f7 mov %r14,%rdi 0.00 : 470774: 48 0f 45 d0 cmovne %rax,%rdx 1.21 : 470778: 49 8d 0c 09 lea (%r9,%rcx,1),%rcx 0.81 : 47077c: 49 83 c1 14 add $0x14,%r9 0.00 : 470780: 48 89 14 24 mov %rdx,(%rsp) 2.02 : 470784: 4c 89 fa mov %r15,%rdx 0.40 : 470787: e8 d4 f7 ff ff callq 46ff60 : data_len, : &td->t_infomask, : (hasnull ? td->t_bits : NULL)); : : return tuple; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:746 0.81 : 47078c: 48 83 c4 28 add $0x28,%rsp 0.00 : 470790: 4c 89 e0 mov %r12,%rax 0.00 : 470793: 5b pop %rbx 2.42 : 470794: 41 5c pop %r12 0.00 : 470796: 41 5d pop %r13 1.61 : 470798: 41 5e pop %r14 0.00 : 47079a: 41 5f pop %r15 0.00 : 47079c: c9 leaveq 0.81 : 47079d: c3 retq 0.00 : 47079e: 66 90 xchg %ax,%ax : * Determine total space needed : */ : len = offsetof(HeapTupleHeaderData, t_bits); : : if (hasnull) : len += BITMAPLEN(numberOfAttributes); 0.00 : 4707a0: 41 8d 45 07 lea 0x7(%r13),%eax 0.00 : 4707a4: c6 45 d7 01 movb $0x1,-0x29(%rbp) 0.00 : 4707a8: c1 f8 03 sar $0x3,%eax 0.00 : 4707ab: 48 98 cltq 0.00 : 4707ad: 48 8d 50 17 lea 0x17(%rax),%rdx 0.00 : 4707b1: e9 0b ff ff ff jmpq 4706c1 : bool hasnull = false; : int numberOfAttributes = tupleDescriptor->natts; : int i; : : if (numberOfAttributes > MaxTupleAttributeNumber) : ereport(ERROR, 0.00 : 4707b6: 45 31 c0 xor %r8d,%r8d 0.00 : 4707b9: b9 00 f7 7a 00 mov $0x7af700,%ecx 0.00 : 4707be: ba a8 02 00 00 mov $0x2a8,%edx 0.00 : 4707c3: be f4 f5 7a 00 mov $0x7af5f4,%esi 0.00 : 4707c8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4707cd: e8 ee a2 30 00 callq 77aac0 0.00 : 4707d2: 84 c0 test %al,%al 0.00 : 4707d4: 74 2b je 470801 0.00 : 4707d6: 44 89 ee mov %r13d,%esi 0.00 : 4707d9: ba 80 06 00 00 mov $0x680,%edx 0.00 : 4707de: bf e0 f7 7a 00 mov $0x7af7e0,%edi 0.00 : 4707e3: 31 c0 xor %eax,%eax 0.00 : 4707e5: e8 b6 c0 30 00 callq 77c8a0 0.00 : 4707ea: bf 05 01 04 01 mov $0x1040105,%edi 0.00 : 4707ef: 89 c3 mov %eax,%ebx 0.00 : 4707f1: e8 5a c5 30 00 callq 77cd50 0.00 : 4707f6: 89 de mov %ebx,%esi 0.00 : 4707f8: 89 c7 mov %eax,%edi 0.00 : 4707fa: 31 c0 xor %eax,%eax 0.00 : 4707fc: e8 df 9d 30 00 callq 77a5e0 0.00 : 470801: e8 ca 8c ff ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.09 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1508 12.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 10.37 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1509 8.30 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1494 7.47 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 7.05 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 4.98 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1488 4.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 4.56 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1488 4.15 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 2.90 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1492 2.07 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 1.66 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1494 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1494 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1492 1.24 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1492 0.83 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1509 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000496e90 : : #endif /* !defined(HEAPDEBUGALL) */ : : : HeapTuple : heap_getnext(HeapScanDesc scan, ScanDirection direction) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 12.86 : 496e90: 55 push %rbp 7.47 : 496e91: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1483 4.56 : 496e94: 53 push %rbx 4.15 : 496e95: 48 89 fb mov %rdi,%rbx 2.07 : 496e98: 48 83 ec 08 sub $0x8,%rsp : /* Note: no locking manipulations needed */ : : HEAPDEBUG_1; /* heap_getnext( info ) */ : : if (scan->rs_pageatatime) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1488 4.98 : 496e9c: 80 7f 21 00 cmpb $0x0,0x21(%rdi) 4.56 : 496ea0: 74 3e je 496ee0 : heapgettup_pagemode(scan, direction, 0.41 : 496ea2: 48 8b 4f 18 mov 0x18(%rdi),%rcx 0.00 : 496ea6: 8b 57 10 mov 0x10(%rdi),%edx 0.00 : 496ea9: e8 42 f2 ff ff callq 4960f0 : scan->rs_nkeys, scan->rs_key); : else : heapgettup(scan, direction, scan->rs_nkeys, scan->rs_key); : : if (scan->rs_ctup.t_data == NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1494 8.30 : 496eae: 31 c0 xor %eax,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1494 1.24 : 496eb0: 48 83 7b 58 00 cmpq $0x0,0x58(%rbx) 1.24 : 496eb5: 74 18 je 496ecf : * if we get here it means we have a new current scan tuple, so point to : * the proper return buffer and return the tuple. : */ : HEAPDEBUG_3; /* heap_getnext returning tuple */ : : pgstat_count_heap_getnext(scan->rs_rd); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 1.66 : 496eb7: 48 8b 03 mov (%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 7.05 : 496eba: 48 8b 80 38 01 00 00 mov 0x138(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1506 2.90 : 496ec1: 48 85 c0 test %rax,%rax 0.00 : 496ec4: 74 05 je 496ecb 0.41 : 496ec6: 48 83 40 18 01 addq $0x1,0x18(%rax) : : return &(scan->rs_ctup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1508 19.09 : 496ecb: 48 8d 43 48 lea 0x48(%rbx),%rax : } 0.00 : 496ecf: 48 83 c4 08 add $0x8,%rsp 0.00 : 496ed3: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1509 10.37 : 496ed4: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1509 0.83 : 496ed5: c3 retq 0.00 : 496ed6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 496edd: 00 00 00 : : if (scan->rs_pageatatime) : heapgettup_pagemode(scan, direction, : scan->rs_nkeys, scan->rs_key); : else : heapgettup(scan, direction, scan->rs_nkeys, scan->rs_key); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:1492 2.90 : 496ee0: 48 8b 4f 18 mov 0x18(%rdi),%rcx 0.41 : 496ee4: 8b 57 10 mov 0x10(%rdi),%edx 1.24 : 496ee7: e8 c4 f7 ff ff callq 4966b0 1.24 : 496eec: eb c0 jmp 496eae Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.28 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 7.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 5.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:320 5.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 5.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 4.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 4.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:310 3.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 3.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:306 3.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:311 3.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 3.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 2.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:299 2.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:303 2.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 2.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 2.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 2.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:303 2.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 2.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 2.07 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 1.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:299 1.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:315 1.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 1.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 1.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 1.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 1.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:315 1.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 1.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 0.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:305 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c9d20 : : * of their precision. : */ : : int : date2j(int y, int m, int d) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:299 2.49 : 6c9d20: 55 push %rbp : int julian; : int century; : : if (m > 2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:303 2.07 : 6c9d21: 83 fe 02 cmp $0x2,%esi : * of their precision. : */ : : int : date2j(int y, int m, int d) : { 0.00 : 6c9d24: 41 89 d1 mov %edx,%r9d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:299 1.66 : 6c9d27: 48 89 e5 mov %rsp,%rbp : int julian; : int century; : : if (m > 2) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:303 2.49 : 6c9d2a: 7f 6c jg 6c9d98 : y += 4800; : } : else : { : m += 13; : y += 4799; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:311 3.32 : 6c9d2c: 8d 8f bf 12 00 00 lea 0x12bf(%rdi),%ecx : m += 1; : y += 4800; : } : else : { : m += 13; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:310 4.15 : 6c9d32: 83 c6 0d add $0xd,%esi : y += 4799; : } : : century = y / 100; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 3.32 : 6c9d35: b8 1f 85 eb 51 mov $0x51eb851f,%eax : julian = y * 365 - 32167; : julian += y / 4 - century + century / 4; : julian += 7834 * m / 256 + d; : : return julian; : } /* date2j() */ 0.41 : 6c9d3a: c9 leaveq : { : m += 13; : y += 4799; : } : : century = y / 100; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 13.28 : 6c9d3b: f7 e9 imul %ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 2.07 : 6c9d3d: 89 c8 mov %ecx,%eax 1.24 : 6c9d3f: c1 f8 1f sar $0x1f,%eax 0.00 : 6c9d42: 41 89 d0 mov %edx,%r8d : julian = y * 365 - 32167; : julian += y / 4 - century + century / 4; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 3.32 : 6c9d45: 8d 51 03 lea 0x3(%rcx),%edx : { : m += 13; : y += 4799; : } : : century = y / 100; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:314 2.07 : 6c9d48: 41 c1 f8 05 sar $0x5,%r8d 2.49 : 6c9d4c: 41 29 c0 sub %eax,%r8d : julian = y * 365 - 32167; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:315 1.66 : 6c9d4f: 69 c1 6d 01 00 00 imul $0x16d,%ecx,%eax : julian += y / 4 - century + century / 4; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 2.49 : 6c9d55: 85 c9 test %ecx,%ecx 0.83 : 6c9d57: 0f 48 ca cmovs %edx,%ecx 2.49 : 6c9d5a: 41 8d 50 03 lea 0x3(%r8),%edx 1.24 : 6c9d5e: c1 f9 02 sar $0x2,%ecx : m += 13; : y += 4799; : } : : century = y / 100; : julian = y * 365 - 32167; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:315 1.24 : 6c9d61: 41 8d 84 01 59 82 ff lea -0x7da7(%r9,%rax,1),%eax 0.00 : 6c9d68: ff : julian += y / 4 - century + century / 4; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 1.24 : 6c9d69: 01 c8 add %ecx,%eax 1.66 : 6c9d6b: 45 85 c0 test %r8d,%r8d 1.24 : 6c9d6e: 41 0f 49 d0 cmovns %r8d,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 7.05 : 6c9d72: c1 fa 02 sar $0x2,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 2.07 : 6c9d75: 01 d0 add %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 5.39 : 6c9d77: 69 d6 9a 1e 00 00 imul $0x1e9a,%esi,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 0.83 : 6c9d7d: 8d 8a ff 00 00 00 lea 0xff(%rdx),%ecx 1.66 : 6c9d83: 85 d2 test %edx,%edx 0.41 : 6c9d85: 0f 48 d1 cmovs %ecx,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 5.39 : 6c9d88: c1 fa 08 sar $0x8,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:316 4.56 : 6c9d8b: 01 d0 add %edx,%eax 3.73 : 6c9d8d: 44 29 c0 sub %r8d,%eax : julian += 7834 * m / 256 + d; : : return julian; : } /* date2j() */ /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:320 5.81 : 6c9d90: c3 retq 0.00 : 6c9d91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : int julian; : int century; : : if (m > 2) : { : m += 1; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:305 0.83 : 6c9d98: 83 c6 01 add $0x1,%esi : y += 4800; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:306 3.73 : 6c9d9b: 8d 8f c0 12 00 00 lea 0x12c0(%rdi),%ecx 0.00 : 6c9da1: eb 92 jmp 6c9d35 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 33.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 12.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 11.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 3.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:414 2.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:414 1.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ea7e0 : : PG_RETURN_BOOL(arg1 != arg2); : } : : Datum : int4lt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 35.29 : 6ea7e0: 48 8b 47 28 mov 0x28(%rdi),%rax 33.61 : 6ea7e4: 39 47 20 cmp %eax,0x20(%rdi) 11.34 : 6ea7e7: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 0.84 : 6ea7e8: 48 89 e5 mov %rsp,%rbp : int32 arg1 = PG_GETARG_INT32(0); : int32 arg2 = PG_GETARG_INT32(1); : : PG_RETURN_BOOL(arg1 < arg2); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:414 2.10 : 6ea7eb: c9 leaveq : PG_RETURN_BOOL(arg1 != arg2); : } : : Datum : int4lt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 12.18 : 6ea7ec: 0f 9c c0 setl %al /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:409 4.62 : 6ea7ef: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 7.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 7.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 6.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:666 5.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 5.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 3.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 3.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 3.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 3.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 2.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 2.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 2.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:666 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 2.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 2.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:654 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 1.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 1.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:654 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000757d90 : : *****************************************************************************/ : : /* "True" length (not counting trailing blanks) of a BpChar */ : static int : bcTruelen(BpChar *arg) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:654 0.84 : 757d90: 55 push %rbp : char *s = VARDATA_ANY(arg); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 2.10 : 757d91: 0f b6 17 movzbl (%rdi),%edx 0.84 : 757d94: 48 8d 4f 01 lea 0x1(%rdi),%rcx 1.68 : 757d98: 48 8d 47 04 lea 0x4(%rdi),%rax 1.26 : 757d9c: be 01 00 00 00 mov $0x1,%esi : *****************************************************************************/ : : /* "True" length (not counting trailing blanks) of a BpChar */ : static int : bcTruelen(BpChar *arg) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:654 1.68 : 757da1: 48 89 e5 mov %rsp,%rbp : char *s = VARDATA_ANY(arg); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:655 2.52 : 757da4: 21 d6 and %edx,%esi 0.84 : 757da6: 48 0f 44 c8 cmove %rax,%rcx : int i; : int len; : : len = VARSIZE_ANY_EXHDR(arg); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 5.04 : 757daa: 80 fa 01 cmp $0x1,%dl 0.00 : 757dad: 74 51 je 757e00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 3.78 : 757daf: 85 f6 test %esi,%esi 0.00 : 757db1: 75 3d jne 757df0 0.00 : 757db3: 8b 07 mov (%rdi),%eax 2.10 : 757db5: c1 e8 02 shr $0x2,%eax 0.42 : 757db8: 83 e8 04 sub $0x4,%eax : for (i = len - 1; i >= 0; i--) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 1.68 : 757dbb: 89 c2 mov %eax,%edx 1.68 : 757dbd: 83 ea 01 sub $0x1,%edx 2.94 : 757dc0: 78 20 js 757de2 1.26 : 757dc2: 48 63 f2 movslq %edx,%rsi : { : if (s[i] != ' ') /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 3.78 : 757dc5: 80 3c 31 20 cmpb $0x20,(%rcx,%rsi,1) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 15.55 : 757dc9: 74 0e je 757dd9 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 2.94 : 757dcb: eb 15 jmp 757de2 0.00 : 757dcd: 0f 1f 00 nopl (%rax) 3.78 : 757dd0: 48 63 c2 movslq %edx,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:662 5.04 : 757dd3: 80 3c 01 20 cmpb $0x20,(%rcx,%rax,1) 7.98 : 757dd7: 75 09 jne 757de2 : char *s = VARDATA_ANY(arg); : int i; : int len; : : len = VARSIZE_ANY_EXHDR(arg); : for (i = len - 1; i >= 0; i--) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 7.98 : 757dd9: 83 ea 01 sub $0x1,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:660 1.68 : 757ddc: 0f 1f 40 00 nopl 0x0(%rax) 1.68 : 757de0: 79 ee jns 757dd0 3.78 : 757de2: 8d 42 01 lea 0x1(%rdx),%eax : { : if (s[i] != ' ') : break; : } : return i + 1; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:666 2.94 : 757de5: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:666 6.72 : 757de6: c3 retq 0.00 : 757de7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 757dee: 00 00 : { : char *s = VARDATA_ANY(arg); : int i; : int len; : : len = VARSIZE_ANY_EXHDR(arg); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:659 2.52 : 757df0: d0 ea shr %dl 0.00 : 757df2: 0f b6 c2 movzbl %dl,%eax 2.52 : 757df5: 83 e8 01 sub $0x1,%eax 0.42 : 757df8: eb c1 jmp 757dbb 0.00 : 757dfa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 757e00: 0f b6 7f 01 movzbl 0x1(%rdi),%edi 0.00 : 757e04: ba 07 00 00 00 mov $0x7,%edx 0.00 : 757e09: be 07 00 00 00 mov $0x7,%esi 0.00 : 757e0e: 40 80 ff 01 cmp $0x1,%dil 0.00 : 757e12: 74 b1 je 757dc5 0.00 : 757e14: 40 80 ff 12 cmp $0x12,%dil 0.00 : 757e18: b8 00 00 00 00 mov $0x0,%eax 0.00 : 757e1d: ba 0f 00 00 00 mov $0xf,%edx 0.00 : 757e22: 0f 45 d0 cmovne %eax,%edx 0.00 : 757e25: be 0f 00 00 00 mov $0xf,%esi 0.00 : 757e2a: b8 00 00 00 00 mov $0x0,%eax 0.00 : 757e2f: 48 0f 45 f0 cmovne %rax,%rsi 0.00 : 757e33: eb 90 jmp 757dc5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 9.96 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/sortsupport.h:143 9.96 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2793 7.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 7.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 7.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 7.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2785 6.06 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/sortsupport.h:145 5.63 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2792 4.76 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/sortsupport.h:143 4.33 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2800 3.90 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 3.46 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 3.46 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2780 2.60 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2800 1.73 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 1.73 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2800 1.73 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2800 1.30 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 1.30 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2792 1.30 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2799 1.30 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2800 0.87 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 0.87 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2784 0.87 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2791 0.87 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2800 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000054aec0 : : * tupno that that item's datum has been found to be equal to. This allows : * us to avoid additional comparisons in compute_scalar_stats(). : */ : static int : compare_scalars(const void *a, const void *b, void *arg) : { /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 7.36 : 54aec0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 0.87 : 54aec1: 48 89 e5 mov %rsp,%rbp 3.46 : 54aec4: 4c 89 65 e8 mov %r12,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 7.79 : 54aec8: 48 89 5d e0 mov %rbx,-0x20(%rbp) 7.36 : 54aecc: 49 89 d4 mov %rdx,%r12 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2776 1.30 : 54aecf: 4c 89 6d f0 mov %r13,-0x10(%rbp) 1.73 : 54aed3: 4c 89 75 f8 mov %r14,-0x8(%rbp) 3.90 : 54aed7: 48 83 ec 20 sub $0x20,%rsp : Datum db = ((const ScalarItem *) b)->value; : int tb = ((const ScalarItem *) b)->tupno; : CompareScalarsContext *cxt = (CompareScalarsContext *) arg; : int compare; : : compare = ApplySortComparator(da, false, db, false, cxt->ssup); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2784 0.87 : 54aedb: 48 8b 1a mov (%rdx),%rbx : */ : static int : compare_scalars(const void *a, const void *b, void *arg) : { : Datum da = ((const ScalarItem *) a)->value; : int ta = ((const ScalarItem *) a)->tupno; 0.43 : 54aede: 44 8b 77 08 mov 0x8(%rdi),%r14d : Datum db = ((const ScalarItem *) b)->value; : int tb = ((const ScalarItem *) b)->tupno; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2780 3.46 : 54aee2: 44 8b 6e 08 mov 0x8(%rsi),%r13d : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = (*ssup->comparator) (datum1, datum2, ssup); /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/sortsupport.h:143 4.76 : 54aee6: 48 8b 3f mov (%rdi),%rdi 0.00 : 54aee9: 48 8b 36 mov (%rsi),%rsi 0.00 : 54aeec: 48 89 da mov %rbx,%rdx 0.43 : 54aeef: ff 53 18 callq *0x18(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/sortsupport.h:143 9.96 : 54aef2: 89 c2 mov %eax,%edx : if (ssup->ssup_reverse) : compare = -compare; 0.00 : 54aef4: f7 d8 neg %eax 0.00 : 54aef6: 80 7b 0c 00 cmpb $0x0,0xc(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/sortsupport.h:145 6.06 : 54aefa: 0f 45 d0 cmovne %eax,%edx : CompareScalarsContext *cxt = (CompareScalarsContext *) arg; : int compare; : : compare = ApplySortComparator(da, false, db, false, cxt->ssup); : if (compare != 0) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2785 7.36 : 54aefd: 85 d2 test %edx,%edx 0.00 : 54aeff: 75 2b jne 54af2c : return compare; : : /* : * The two datums are equal, so update cxt->tupnoLink[]. : */ : if (cxt->tupnoLink[ta] < tb) 0.43 : 54af01: 49 8b 54 24 08 mov 0x8(%r12),%rdx /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2791 0.87 : 54af06: 49 63 c6 movslq %r14d,%rax 0.00 : 54af09: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.43 : 54af0d: 44 3b 28 cmp (%rax),%r13d 0.00 : 54af10: 7e 08 jle 54af1a : cxt->tupnoLink[ta] = tb; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2792 5.63 : 54af12: 44 89 28 mov %r13d,(%rax) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2792 1.30 : 54af15: 49 8b 54 24 08 mov 0x8(%r12),%rdx : if (cxt->tupnoLink[tb] < ta) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2793 9.96 : 54af1a: 49 63 c5 movslq %r13d,%rax 0.00 : 54af1d: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 54af21: 44 3b 30 cmp (%rax),%r14d 0.00 : 54af24: 7f 22 jg 54af48 : cxt->tupnoLink[tb] = ta; : : /* : * For equal datums, sort by tupno : */ : return ta - tb; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2799 1.30 : 54af26: 44 89 f2 mov %r14d,%edx 0.00 : 54af29: 44 29 ea sub %r13d,%edx : } /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2800 1.73 : 54af2c: 89 d0 mov %edx,%eax 0.43 : 54af2e: 48 8b 1c 24 mov (%rsp),%rbx 2.60 : 54af32: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.87 : 54af37: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 1.30 : 54af3c: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 1.73 : 54af41: c9 leaveq 4.33 : 54af42: c3 retq 0.00 : 54af43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * The two datums are equal, so update cxt->tupnoLink[]. : */ : if (cxt->tupnoLink[ta] < tb) : cxt->tupnoLink[ta] = tb; : if (cxt->tupnoLink[tb] < ta) : cxt->tupnoLink[tb] = ta; 0.00 : 54af48: 44 89 30 mov %r14d,(%rax) 0.00 : 54af4b: eb d9 jmp 54af26 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 7.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:135 6.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:183 6.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:169 5.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 5.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:179 5.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:129 4.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:183 4.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:129 4.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:176 4.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:174 3.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:183 3.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:183 3.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:135 3.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:176 2.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:173 2.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 2.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:173 2.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:180 1.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:176 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:180 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:183 0.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 0.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 0.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:136 0.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:174 0.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:180 0.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:180 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007590d0 : : * If the input string is too long, raise an error, unless the extra : * characters are spaces, in which case they're truncated. (per SQL) : */ : static BpChar * : bpchar_input(const char *s, size_t len, int32 atttypmod) : { 0.43 : 7590d0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 5.63 : 7590d1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 0.87 : 7590d4: 48 89 5d e0 mov %rbx,-0x20(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 8.23 : 7590d8: 4c 89 6d f0 mov %r13,-0x10(%rbp) : BpChar *result; : char *r; : size_t maxlen; : : /* If typmod is -1 (or invalid), use the actual string length */ : if (atttypmod < (int32) VARHDRSZ) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:129 5.19 : 7590dc: 48 89 f3 mov %rsi,%rbx : * If the input string is too long, raise an error, unless the extra : * characters are spaces, in which case they're truncated. (per SQL) : */ : static BpChar * : bpchar_input(const char *s, size_t len, int32 atttypmod) : { 0.43 : 7590df: 4c 89 75 f8 mov %r14,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 1.73 : 7590e3: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 7590e7: 48 83 ec 20 sub $0x20,%rsp : BpChar *result; : char *r; : size_t maxlen; : : /* If typmod is -1 (or invalid), use the actual string length */ : if (atttypmod < (int32) VARHDRSZ) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:129 4.33 : 7590eb: 83 fa 03 cmp $0x3,%edx : * If the input string is too long, raise an error, unless the extra : * characters are spaces, in which case they're truncated. (per SQL) : */ : static BpChar * : bpchar_input(const char *s, size_t len, int32 atttypmod) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:123 0.87 : 7590ee: 49 89 fe mov %rdi,%r14 2.16 : 7590f1: 49 89 f5 mov %rsi,%r13 : BpChar *result; : char *r; : size_t maxlen; : : /* If typmod is -1 (or invalid), use the actual string length */ : if (atttypmod < (int32) VARHDRSZ) 0.43 : 7590f4: 0f 8e b0 00 00 00 jle 7591aa : maxlen = len; : else : { : size_t charlen; /* number of CHARACTERS in the input */ : : maxlen = atttypmod - VARHDRSZ; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:135 3.46 : 7590fa: 44 8d 62 fc lea -0x4(%rdx),%r12d : charlen = pg_mbstrlen_with_len(s, len); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:136 0.87 : 7590fe: e8 7d f9 02 00 callq 788a80 : maxlen = len; : else : { : size_t charlen; /* number of CHARACTERS in the input */ : : maxlen = atttypmod - VARHDRSZ; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:135 7.79 : 759103: 49 63 dc movslq %r12d,%rbx : charlen = pg_mbstrlen_with_len(s, len); 0.00 : 759106: 48 98 cltq : if (charlen > maxlen) 0.43 : 759108: 48 39 c3 cmp %rax,%rbx 0.00 : 75910b: 72 53 jb 759160 : { : /* : * Now we set maxlen to the necessary byte length, not the number : * of CHARACTERS! : */ : maxlen = len + (maxlen - charlen); 0.43 : 75910d: 4c 01 eb add %r13,%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:169 6.06 : 759110: 48 29 c3 sub %rax,%rbx : } : } : : result = (BpChar *) palloc(maxlen + VARHDRSZ); 0.00 : 759113: 48 8d 7b 04 lea 0x4(%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:173 2.60 : 759117: e8 34 fc 03 00 callq 798d50 2.16 : 75911c: 49 89 c4 mov %rax,%r12 : SET_VARSIZE(result, maxlen + VARHDRSZ); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:174 0.87 : 75911f: 8d 04 9d 10 00 00 00 lea 0x10(,%rbx,4),%eax : r = VARDATA(result); : memcpy(r, s, len); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:176 4.33 : 759126: 4c 89 ea mov %r13,%rdx 0.43 : 759129: 49 8d 7c 24 04 lea 0x4(%r12),%rdi 3.46 : 75912e: 4c 89 f6 mov %r14,%rsi : maxlen = len + (maxlen - charlen); : } : } : : result = (BpChar *) palloc(maxlen + VARHDRSZ); : SET_VARSIZE(result, maxlen + VARHDRSZ); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:174 4.33 : 759131: 41 89 04 24 mov %eax,(%r12) : r = VARDATA(result); : memcpy(r, s, len); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:176 1.30 : 759135: e8 b6 0a d1 ff callq 469bf0 : : /* blank pad the string if necessary */ : if (maxlen > len) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:179 5.63 : 75913a: 49 39 dd cmp %rbx,%r13 0.00 : 75913d: 0f 83 8e 00 00 00 jae 7591d1 : memset(r + len, ' ', maxlen - len); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:180 0.87 : 759143: 4c 29 eb sub %r13,%rbx 0.00 : 759146: 4b 8d 7c 2c 04 lea 0x4(%r12,%r13,1),%rdi 2.16 : 75914b: be 20 00 00 00 mov $0x20,%esi 1.30 : 759150: 48 89 da mov %rbx,%rdx 0.00 : 759153: e8 c8 02 d1 ff callq 469420 0.87 : 759158: eb 77 jmp 7591d1 0.00 : 75915a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : maxlen = atttypmod - VARHDRSZ; : charlen = pg_mbstrlen_with_len(s, len); : if (charlen > maxlen) : { : /* Verify that extra characters are spaces, and clip them off */ : size_t mbmaxlen = pg_mbcharcliplen(s, len, maxlen); 0.00 : 759160: 44 89 ee mov %r13d,%esi 0.00 : 759163: 44 89 e2 mov %r12d,%edx 0.00 : 759166: 4c 89 f7 mov %r14,%rdi 0.00 : 759169: e8 42 f8 02 00 callq 7889b0 0.00 : 75916e: 48 63 f0 movslq %eax,%rsi : /* : * at this point, len is the actual BYTE length of the input : * string, maxlen is the max number of CHARACTERS allowed for this : * bpchar type, mbmaxlen is the length in BYTES of those chars. : */ : for (j = mbmaxlen; j < len; j++) 0.00 : 759171: 49 39 f5 cmp %rsi,%r13 0.00 : 759174: 76 2e jbe 7591a4 : { : if (s[j] != ' ') 0.00 : 759176: 41 80 3c 36 20 cmpb $0x20,(%r14,%rsi,1) : ereport(ERROR, 0.00 : 75917b: 49 8d 4c 36 01 lea 0x1(%r14,%rsi,1),%rcx 0.00 : 759180: 48 89 f2 mov %rsi,%rdx : * string, maxlen is the max number of CHARACTERS allowed for this : * bpchar type, mbmaxlen is the length in BYTES of those chars. : */ : for (j = mbmaxlen; j < len; j++) : { : if (s[j] != ' ') 0.00 : 759183: 74 16 je 75919b 0.00 : 759185: eb 69 jmp 7591f0 0.00 : 759187: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 75918e: 00 00 0.00 : 759190: 0f b6 01 movzbl (%rcx),%eax 0.00 : 759193: 48 83 c1 01 add $0x1,%rcx 0.00 : 759197: 3c 20 cmp $0x20,%al 0.00 : 759199: 75 55 jne 7591f0 : /* : * at this point, len is the actual BYTE length of the input : * string, maxlen is the max number of CHARACTERS allowed for this : * bpchar type, mbmaxlen is the length in BYTES of those chars. : */ : for (j = mbmaxlen; j < len; j++) 0.00 : 75919b: 48 83 c2 01 add $0x1,%rdx 0.00 : 75919f: 49 39 d5 cmp %rdx,%r13 0.00 : 7591a2: 77 ec ja 759190 : r = VARDATA(result); : memcpy(r, s, len); : : /* blank pad the string if necessary */ : if (maxlen > len) : memset(r + len, ' ', maxlen - len); 0.00 : 7591a4: 49 89 f5 mov %rsi,%r13 0.00 : 7591a7: 48 89 f3 mov %rsi,%rbx : */ : maxlen = len + (maxlen - charlen); : } : } : : result = (BpChar *) palloc(maxlen + VARHDRSZ); 0.00 : 7591aa: 48 8d 7b 04 lea 0x4(%rbx),%rdi 0.00 : 7591ae: e8 9d fb 03 00 callq 798d50 0.00 : 7591b3: 49 89 c4 mov %rax,%r12 : SET_VARSIZE(result, maxlen + VARHDRSZ); 0.00 : 7591b6: 8d 04 9d 10 00 00 00 lea 0x10(,%rbx,4),%eax : r = VARDATA(result); : memcpy(r, s, len); 0.00 : 7591bd: 4c 89 ea mov %r13,%rdx 0.00 : 7591c0: 49 8d 7c 24 04 lea 0x4(%r12),%rdi 0.00 : 7591c5: 4c 89 f6 mov %r14,%rsi : maxlen = len + (maxlen - charlen); : } : } : : result = (BpChar *) palloc(maxlen + VARHDRSZ); : SET_VARSIZE(result, maxlen + VARHDRSZ); 0.00 : 7591c8: 41 89 04 24 mov %eax,(%r12) : r = VARDATA(result); : memcpy(r, s, len); 0.00 : 7591cc: e8 1f 0a d1 ff callq 469bf0 : /* blank pad the string if necessary */ : if (maxlen > len) : memset(r + len, ' ', maxlen - len); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:183 4.76 : 7591d1: 4c 89 e0 mov %r12,%rax 0.00 : 7591d4: 48 8b 1c 24 mov (%rsp),%rbx 3.90 : 7591d8: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 3.90 : 7591dd: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 1.30 : 7591e2: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 7591e7: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:183 6.49 : 7591e8: c3 retq 0.00 : 7591e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * bpchar type, mbmaxlen is the length in BYTES of those chars. : */ : for (j = mbmaxlen; j < len; j++) : { : if (s[j] != ' ') : ereport(ERROR, 0.00 : 7591f0: 45 31 c0 xor %r8d,%r8d 0.00 : 7591f3: b9 7e bb 8c 00 mov $0x8cbb7e,%ecx 0.00 : 7591f8: ba 9a 00 00 00 mov $0x9a,%edx 0.00 : 7591fd: be e1 ba 8c 00 mov $0x8cbae1,%esi 0.00 : 759202: bf 14 00 00 00 mov $0x14,%edi 0.00 : 759207: e8 b4 18 02 00 callq 77aac0 0.00 : 75920c: 84 c0 test %al,%al 0.00 : 75920e: 75 05 jne 759215 0.00 : 759210: e8 bb 02 d1 ff callq 4694d0 0.00 : 759215: 44 89 e6 mov %r12d,%esi 0.00 : 759218: bf 20 bb 8c 00 mov $0x8cbb20,%edi 0.00 : 75921d: 31 c0 xor %eax,%eax 0.00 : 75921f: e8 7c 36 02 00 callq 77c8a0 0.00 : 759224: bf 82 00 00 01 mov $0x1000082,%edi 0.00 : 759229: 89 c3 mov %eax,%ebx 0.00 : 75922b: e8 20 3b 02 00 callq 77cd50 0.00 : 759230: 89 de mov %ebx,%esi 0.00 : 759232: 89 c7 mov %eax,%edi 0.00 : 759234: 31 c0 xor %eax,%eax 0.00 : 759236: e8 a5 13 02 00 callq 77a5e0 0.00 : 75923b: eb d3 jmp 759210 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 9.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 7.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:200 6.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 5.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:202 3.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:200 2.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 2.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:200 1.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:200 1.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:200 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000759290 : : * Convert a C string to CHARACTER internal representation. atttypmod : * is the declared length of the type plus VARHDRSZ. : */ : Datum : bpcharin(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 9.26 : 759290: 55 push %rbp 33.80 : 759291: 48 89 e5 mov %rsp,%rbp 0.00 : 759294: 48 89 5d f0 mov %rbx,-0x10(%rbp) 25.00 : 759298: 4c 89 65 f8 mov %r12,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 2.78 : 75929c: 48 83 ec 10 sub $0x10,%rsp : char *s = PG_GETARG_CSTRING(0); 0.00 : 7592a0: 4c 8b 67 20 mov 0x20(%rdi),%r12 : * Convert a C string to CHARACTER internal representation. atttypmod : * is the declared length of the type plus VARHDRSZ. : */ : Datum : bpcharin(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:191 6.94 : 7592a4: 48 89 fb mov %rdi,%rbx : Oid typelem = PG_GETARG_OID(1); : #endif : int32 atttypmod = PG_GETARG_INT32(2); : BpChar *result; : : result = bpchar_input(s, strlen(s), atttypmod); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:200 3.70 : 7592a7: 4c 89 e7 mov %r12,%rdi 1.85 : 7592aa: e8 a1 05 d1 ff callq 469850 2.31 : 7592af: 48 8b 53 30 mov 0x30(%rbx),%rdx 1.39 : 7592b3: 4c 89 e7 mov %r12,%rdi : PG_RETURN_BPCHAR_P(result); : } 0.00 : 7592b6: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:202 5.09 : 7592ba: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.46 : 7592bf: c9 leaveq : Oid typelem = PG_GETARG_OID(1); : #endif : int32 atttypmod = PG_GETARG_INT32(2); : BpChar *result; : : result = bpchar_input(s, strlen(s), atttypmod); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:200 7.41 : 7592c0: 48 89 c6 mov %rax,%rsi 0.00 : 7592c3: e9 08 fe ff ff jmpq 7590d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 6.98 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:278 6.51 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:285 5.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:266 4.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:293 4.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:300 4.19 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:182 4.19 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:317 4.19 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:324 3.72 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:317 3.72 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:320 3.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:182 3.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:182 3.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:182 3.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:206 3.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:206 3.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:209 3.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:279 2.79 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:300 2.79 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:226 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:194 1.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:182 1.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:182 1.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:194 1.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:206 1.86 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:324 1.40 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:321 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:206 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:234 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:324 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:324 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:324 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:324 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000695e80 : : Item item, : Size size, : OffsetNumber offsetNumber, : bool overwrite, : bool is_heap) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:182 3.26 : 695e80: 55 push %rbp 3.26 : 695e81: 48 89 e5 mov %rsp,%rbp 4.19 : 695e84: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 695e88: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.47 : 695e8c: 48 89 fb mov %rdi,%rbx 3.26 : 695e8f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 1.86 : 695e93: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 695e97: 49 89 d5 mov %rdx,%r13 0.00 : 695e9a: 4c 89 75 f0 mov %r14,-0x10(%rbp) 1.86 : 695e9e: 48 83 ec 40 sub $0x40,%rsp : bool needshuffle = false; : : /* : * Be wary about corrupted page pointers : */ : if (phdr->pd_lower < SizeOfPageHeaderData || /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:194 2.33 : 695ea2: 0f b7 47 0c movzwl 0xc(%rdi),%eax : Item item, : Size size, : OffsetNumber offsetNumber, : bool overwrite, : bool is_heap) : { 0.00 : 695ea6: 49 89 f7 mov %rsi,%r15 0.00 : 695ea9: 41 89 cc mov %ecx,%r12d : bool needshuffle = false; : : /* : * Be wary about corrupted page pointers : */ : if (phdr->pd_lower < SizeOfPageHeaderData || 0.47 : 695eac: 66 83 f8 17 cmp $0x17,%ax 0.00 : 695eb0: 76 09 jbe 695ebb 0.47 : 695eb2: 0f b7 57 0e movzwl 0xe(%rdi),%edx 0.00 : 695eb6: 66 39 d0 cmp %dx,%ax 0.00 : 695eb9: 76 2d jbe 695ee8 : phdr->pd_lower > phdr->pd_upper || : phdr->pd_upper > phdr->pd_special || : phdr->pd_special > BLCKSZ) : ereport(PANIC, 0.00 : 695ebb: 45 31 c0 xor %r8d,%r8d 0.00 : 695ebe: b9 d8 de 8a 00 mov $0x8aded8,%ecx 0.00 : 695ec3: ba c9 00 00 00 mov $0xc9,%edx 0.00 : 695ec8: be 33 dc 8a 00 mov $0x8adc33,%esi 0.00 : 695ecd: bf 16 00 00 00 mov $0x16,%edi 0.00 : 695ed2: e8 e9 4b 0e 00 callq 77aac0 0.00 : 695ed7: 84 c0 test %al,%al 0.00 : 695ed9: 0f 85 a1 00 00 00 jne 695f80 0.00 : 695edf: e8 ec 35 dd ff callq 4694d0 0.00 : 695ee4: 0f 1f 40 00 nopl 0x0(%rax) : bool needshuffle = false; : : /* : * Be wary about corrupted page pointers : */ : if (phdr->pd_lower < SizeOfPageHeaderData || 0.00 : 695ee8: 0f b7 4f 10 movzwl 0x10(%rdi),%ecx 1.86 : 695eec: 66 39 ca cmp %cx,%dx 0.47 : 695eef: 90 nop 0.00 : 695ef0: 77 c9 ja 695ebb 0.00 : 695ef2: 66 81 f9 00 20 cmp $0x2000,%cx 0.00 : 695ef7: 77 c2 ja 695ebb : phdr->pd_lower, phdr->pd_upper, phdr->pd_special))); : : /* : * Select offsetNumber to place the new item at : */ : limit = OffsetNumberNext(PageGetMaxOffsetNumber(page)); /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:206 3.26 : 695ef9: 66 83 f8 18 cmp $0x18,%ax 3.26 : 695efd: ba 01 00 00 00 mov $0x1,%edx 0.93 : 695f02: 76 0e jbe 695f12 0.00 : 695f04: 0f b7 c0 movzwl %ax,%eax 1.86 : 695f07: 48 83 e8 18 sub $0x18,%rax 0.00 : 695f0b: 48 c1 e8 02 shr $0x2,%rax 0.00 : 695f0f: 8d 50 01 lea 0x1(%rax),%edx : : /* was offsetNumber passed in? */ : if (OffsetNumberIsValid(offsetNumber)) 0.00 : 695f12: 41 8d 44 24 ff lea -0x1(%r12),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:209 3.26 : 695f17: 66 3d ff 07 cmp $0x7ff,%ax 0.00 : 695f1b: 0f 87 97 00 00 00 ja 695fb8 : { : /* yes, check it */ : if (overwrite) 0.00 : 695f21: 45 84 c0 test %r8b,%r8b 0.00 : 695f24: 0f 84 d6 01 00 00 je 696100 : { : if (offsetNumber < limit) 0.00 : 695f2a: 66 44 39 e2 cmp %r12w,%dx 0.00 : 695f2e: 76 12 jbe 695f42 : { : itemId = PageGetItemId(phdr, offsetNumber); : if (ItemIdIsUsed(itemId) || ItemIdHasStorage(itemId)) 0.00 : 695f30: 41 0f b7 c4 movzwl %r12w,%eax 0.00 : 695f34: f7 44 83 14 00 80 ff testl $0xffff8000,0x14(%rbx,%rax,4) 0.00 : 695f3b: ff 0.00 : 695f3c: 0f 85 d4 01 00 00 jne 696116 : /* : * Look for "recyclable" (unused) ItemId. We check for no storage : * as well, just to be paranoid --- unused items should never have : * storage. : */ : for (offsetNumber = 1; offsetNumber < limit; offsetNumber++) 0.00 : 695f42: 31 c0 xor %eax,%eax : /* don't bother searching if hint says there's no free slot */ : offsetNumber = limit; : } : } : : if (offsetNumber > limit) 0.00 : 695f44: 66 41 39 d4 cmp %dx,%r12w 0.00 : 695f48: 0f 86 d2 00 00 00 jbe 696020 : { : elog(WARNING, "specified item offset is too large"); 0.00 : 695f4e: ba d8 de 8a 00 mov $0x8aded8,%edx 0.00 : 695f53: be 06 01 00 00 mov $0x106,%esi 0.00 : 695f58: bf 33 dc 8a 00 mov $0x8adc33,%edi 0.00 : 695f5d: e8 be 54 0e 00 callq 77b420 0.00 : 695f62: be f0 dd 8a 00 mov $0x8addf0,%esi 0.00 : 695f67: bf 13 00 00 00 mov $0x13,%edi 0.00 : 695f6c: 31 c0 xor %eax,%eax 0.00 : 695f6e: e8 bd 52 0e 00 callq 77b230 0.00 : 695f73: 45 31 e4 xor %r12d,%r12d : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; : phdr->pd_upper = (LocationIndex) upper; : : return offsetNumber; : } 0.00 : 695f76: e9 62 01 00 00 jmpq 6960dd 0.00 : 695f7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : */ : if (phdr->pd_lower < SizeOfPageHeaderData || : phdr->pd_lower > phdr->pd_upper || : phdr->pd_upper > phdr->pd_special || : phdr->pd_special > BLCKSZ) : ereport(PANIC, 0.00 : 695f80: 0f b7 4b 10 movzwl 0x10(%rbx),%ecx 0.00 : 695f84: 0f b7 53 0e movzwl 0xe(%rbx),%edx 0.00 : 695f88: bf c0 dc 8a 00 mov $0x8adcc0,%edi 0.00 : 695f8d: 0f b7 73 0c movzwl 0xc(%rbx),%esi 0.00 : 695f91: 31 c0 xor %eax,%eax 0.00 : 695f93: e8 08 69 0e 00 callq 77c8a0 0.00 : 695f98: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 695f9d: 89 c3 mov %eax,%ebx 0.00 : 695f9f: e8 ac 6d 0e 00 callq 77cd50 0.00 : 695fa4: 89 de mov %ebx,%esi 0.00 : 695fa6: 89 c7 mov %eax,%edi 0.00 : 695fa8: 31 c0 xor %eax,%eax 0.00 : 695faa: e8 31 46 0e 00 callq 77a5e0 0.00 : 695faf: e9 2b ff ff ff jmpq 695edf 0.00 : 695fb4: 0f 1f 40 00 nopl 0x0(%rax) : } : else : { : /* offsetNumber was not passed in, so find a free slot */ : /* if no free slot, we'll put it at limit (1st open slot) */ : if (PageHasFreeLinePointers(phdr)) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:234 0.93 : 695fb8: 0f b7 73 0a movzwl 0xa(%rbx),%esi : } : } : : if (offsetNumber > limit) : { : elog(WARNING, "specified item offset is too large"); 0.00 : 695fbc: 31 c0 xor %eax,%eax 0.00 : 695fbe: 41 89 d4 mov %edx,%r12d : } : else : { : /* offsetNumber was not passed in, so find a free slot */ : /* if no free slot, we'll put it at limit (1st open slot) */ : if (PageHasFreeLinePointers(phdr)) 0.00 : 695fc1: 40 f6 c6 01 test $0x1,%sil 0.00 : 695fc5: 74 59 je 696020 : /* : * Look for "recyclable" (unused) ItemId. We check for no storage : * as well, just to be paranoid --- unused items should never have : * storage. : */ : for (offsetNumber = 1; offsetNumber < limit; offsetNumber++) 0.00 : 695fc7: 66 83 fa 01 cmp $0x1,%dx 0.00 : 695fcb: 0f 86 b6 01 00 00 jbe 696187 : { : itemId = PageGetItemId(phdr, offsetNumber); : if (!ItemIdIsUsed(itemId) && !ItemIdHasStorage(itemId)) 0.00 : 695fd1: f7 43 18 00 80 ff ff testl $0xffff8000,0x18(%rbx) 0.00 : 695fd8: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 695fde: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 695fe3: 75 1e jne 696003 0.00 : 695fe5: eb 73 jmp 69605a 0.00 : 695fe7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 695fee: 00 00 0.00 : 695ff0: 8b 44 8b 18 mov 0x18(%rbx,%rcx,4),%eax 0.00 : 695ff4: 48 83 c1 01 add $0x1,%rcx 0.00 : 695ff8: a9 00 80 ff ff test $0xffff8000,%eax 0.00 : 695ffd: 0f 84 3f ff ff ff je 695f42 : /* : * Look for "recyclable" (unused) ItemId. We check for no storage : * as well, just to be paranoid --- unused items should never have : * storage. : */ : for (offsetNumber = 1; offsetNumber < limit; offsetNumber++) 0.00 : 696003: 41 83 c4 01 add $0x1,%r12d 0.00 : 696007: 66 44 39 e2 cmp %r12w,%dx 0.00 : 69600b: 77 e3 ja 695ff0 : break; : } : if (offsetNumber >= limit) : { : /* the hint is wrong, so reset it */ : PageClearHasFreeLinePointers(phdr); 0.00 : 69600d: 83 e6 fe and $0xfffffffe,%esi 0.00 : 696010: 31 c0 xor %eax,%eax 0.00 : 696012: 66 89 73 0a mov %si,0xa(%rbx) 0.00 : 696016: e9 29 ff ff ff jmpq 695f44 0.00 : 69601b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : elog(WARNING, "specified item offset is too large"); : return InvalidOffsetNumber; : } : : if (is_heap && offsetNumber > MaxHeapTuplesPerPage) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:266 5.12 : 696020: 45 84 c9 test %r9b,%r9b 0.00 : 696023: 74 3b je 696060 0.00 : 696025: 66 41 81 fc 23 01 cmp $0x123,%r12w 0.00 : 69602b: 76 33 jbe 696060 : { : elog(WARNING, "can't put more than MaxHeapTuplesPerPage items in a heap page"); 0.00 : 69602d: ba d8 de 8a 00 mov $0x8aded8,%edx 0.00 : 696032: be 0c 01 00 00 mov $0x10c,%esi 0.00 : 696037: bf 33 dc 8a 00 mov $0x8adc33,%edi 0.00 : 69603c: e8 df 53 0e 00 callq 77b420 0.00 : 696041: be 18 de 8a 00 mov $0x8ade18,%esi 0.00 : 696046: bf 13 00 00 00 mov $0x13,%edi 0.00 : 69604b: 31 c0 xor %eax,%eax 0.00 : 69604d: e8 de 51 0e 00 callq 77b230 0.00 : 696052: 45 31 e4 xor %r12d,%r12d : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; : phdr->pd_upper = (LocationIndex) upper; : : return offsetNumber; : } 0.00 : 696055: e9 83 00 00 00 jmpq 6960dd : return InvalidOffsetNumber; : } : : if (is_heap && offsetNumber > MaxHeapTuplesPerPage) : { : elog(WARNING, "can't put more than MaxHeapTuplesPerPage items in a heap page"); 0.00 : 69605a: 41 bc 01 00 00 00 mov $0x1,%r12d : * Compute new lower and upper pointers for page, see if it'll fit. : * : * Note: do arithmetic as signed ints, to avoid mistakes if, say, : * alignedSize > pd_upper. : */ : if (offsetNumber == limit || needshuffle) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:278 6.98 : 696060: 66 41 39 d4 cmp %dx,%r12w 0.47 : 696064: 89 c1 mov %eax,%ecx 0.00 : 696066: 74 08 je 696070 0.00 : 696068: 84 c0 test %al,%al 0.00 : 69606a: 0f 84 d0 00 00 00 je 696140 : lower = phdr->pd_lower + sizeof(ItemIdData); /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:279 3.26 : 696070: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.47 : 696074: 83 c0 04 add $0x4,%eax 0.47 : 696077: 89 45 d4 mov %eax,-0x2c(%rbp) : else : lower = phdr->pd_lower; : : alignedSize = MAXALIGN(size); : : upper = (int) phdr->pd_upper - (int) alignedSize; 0.00 : 69607a: 44 0f b7 73 0e movzwl 0xe(%rbx),%r14d /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:285 6.51 : 69607f: 49 8d 45 07 lea 0x7(%r13),%rax 0.00 : 696083: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 696087: 41 29 c6 sub %eax,%r14d : : if (lower > upper) 0.47 : 69608a: 44 39 75 d4 cmp %r14d,-0x2c(%rbp) 0.00 : 69608e: 0f 8f bc 00 00 00 jg 696150 : return InvalidOffsetNumber; : : /* : * OK to insert the item. First, shuffle the existing pointers if needed. : */ : itemId = PageGetItemId(phdr, offsetNumber); /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:293 4.65 : 696094: 41 0f b7 c4 movzwl %r12w,%eax : : if (needshuffle) 0.00 : 696098: 84 c9 test %cl,%cl : return InvalidOffsetNumber; : : /* : * OK to insert the item. First, shuffle the existing pointers if needed. : */ : itemId = PageGetItemId(phdr, offsetNumber); 0.00 : 69609a: 4c 8d 40 ff lea -0x1(%rax),%r8 : : if (needshuffle) 0.00 : 69609e: 0f 85 b4 00 00 00 jne 696158 : memmove(itemId + 1, itemId, : (limit - offsetNumber) * sizeof(ItemIdData)); : : /* set the item pointer */ : ItemIdSetNormal(itemId, upper, size); /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:300 2.79 : 6960a4: 49 8d 50 04 lea 0x4(%r8),%rdx 0.00 : 6960a8: 44 89 f0 mov %r14d,%eax : * this as an error, but it is safe to ignore. : */ : VALGRIND_CHECK_MEM_IS_DEFINED(item, size); : : /* copy the item's data onto the page */ : memcpy((char *) page + upper, item, size); 0.00 : 6960ab: 49 63 fe movslq %r14d,%rdi : if (needshuffle) : memmove(itemId + 1, itemId, : (limit - offsetNumber) * sizeof(ItemIdData)); : : /* set the item pointer */ : ItemIdSetNormal(itemId, upper, size); 0.00 : 6960ae: 66 0d 00 80 or $0x8000,%ax : * this as an error, but it is safe to ignore. : */ : VALGRIND_CHECK_MEM_IS_DEFINED(item, size); : : /* copy the item's data onto the page */ : memcpy((char *) page + upper, item, size); /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:317 3.72 : 6960b2: 48 8d 3c 3b lea (%rbx,%rdi,1),%rdi 0.00 : 6960b6: 4c 89 fe mov %r15,%rsi : if (needshuffle) : memmove(itemId + 1, itemId, : (limit - offsetNumber) * sizeof(ItemIdData)); : : /* set the item pointer */ : ItemIdSetNormal(itemId, upper, size); 0.00 : 6960b9: 66 89 44 93 08 mov %ax,0x8(%rbx,%rdx,4) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:300 4.65 : 6960be: 43 8d 44 2d 00 lea 0x0(%r13,%r13,1),%eax 0.00 : 6960c3: 66 89 44 93 0a mov %ax,0xa(%rbx,%rdx,4) : * this as an error, but it is safe to ignore. : */ : VALGRIND_CHECK_MEM_IS_DEFINED(item, size); : : /* copy the item's data onto the page */ : memcpy((char *) page + upper, item, size); 0.00 : 6960c8: 4c 89 ea mov %r13,%rdx /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:317 4.19 : 6960cb: e8 20 3b dd ff callq 469bf0 : : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:320 3.72 : 6960d0: 0f b7 45 d4 movzwl -0x2c(%rbp),%eax : phdr->pd_upper = (LocationIndex) upper; /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:321 1.40 : 6960d4: 66 44 89 73 0e mov %r14w,0xe(%rbx) : : /* copy the item's data onto the page */ : memcpy((char *) page + upper, item, size); : : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; 0.47 : 6960d9: 66 89 43 0c mov %ax,0xc(%rbx) : phdr->pd_upper = (LocationIndex) upper; : : return offsetNumber; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:324 0.93 : 6960dd: 44 89 e0 mov %r12d,%eax 0.47 : 6960e0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 1.86 : 6960e4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.93 : 6960e8: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.93 : 6960ec: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.47 : 6960f0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 4.19 : 6960f4: c9 leaveq 0.93 : 6960f5: c3 retq 0.00 : 6960f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6960fd: 00 00 00 : } : } : } : else : { : if (offsetNumber < limit) 0.00 : 696100: 66 44 39 e2 cmp %r12w,%dx 0.00 : 696104: b8 01 00 00 00 mov $0x1,%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:226 2.79 : 696109: 0f 87 35 fe ff ff ja 695f44 : /* : * Look for "recyclable" (unused) ItemId. We check for no storage : * as well, just to be paranoid --- unused items should never have : * storage. : */ : for (offsetNumber = 1; offsetNumber < limit; offsetNumber++) 0.00 : 69610f: 31 c0 xor %eax,%eax 0.00 : 696111: e9 2e fe ff ff jmpq 695f44 : if (offsetNumber < limit) : { : itemId = PageGetItemId(phdr, offsetNumber); : if (ItemIdIsUsed(itemId) || ItemIdHasStorage(itemId)) : { : elog(WARNING, "will not overwrite a used ItemId"); 0.00 : 696116: ba d8 de 8a 00 mov $0x8aded8,%edx 0.00 : 69611b: be db 00 00 00 mov $0xdb,%esi 0.00 : 696120: bf 33 dc 8a 00 mov $0x8adc33,%edi 0.00 : 696125: e8 f6 52 0e 00 callq 77b420 0.00 : 69612a: be c8 dd 8a 00 mov $0x8addc8,%esi 0.00 : 69612f: bf 13 00 00 00 mov $0x13,%edi 0.00 : 696134: 31 c0 xor %eax,%eax 0.00 : 696136: e8 f5 50 0e 00 callq 77b230 0.00 : 69613b: 45 31 e4 xor %r12d,%r12d : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; : phdr->pd_upper = (LocationIndex) upper; : : return offsetNumber; : } 0.00 : 69613e: eb 9d jmp 6960dd : * alignedSize > pd_upper. : */ : if (offsetNumber == limit || needshuffle) : lower = phdr->pd_lower + sizeof(ItemIdData); : else : lower = phdr->pd_lower; 0.00 : 696140: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 696144: 89 45 d4 mov %eax,-0x2c(%rbp) 0.00 : 696147: e9 2e ff ff ff jmpq 69607a 0.00 : 69614c: 0f 1f 40 00 nopl 0x0(%rax) : : alignedSize = MAXALIGN(size); : : upper = (int) phdr->pd_upper - (int) alignedSize; : : if (lower > upper) 0.00 : 696150: 45 31 e4 xor %r12d,%r12d 0.00 : 696153: eb 88 jmp 6960dd 0.00 : 696155: 0f 1f 00 nopl (%rax) : return InvalidOffsetNumber; : : /* : * OK to insert the item. First, shuffle the existing pointers if needed. : */ : itemId = PageGetItemId(phdr, offsetNumber); 0.00 : 696158: 48 8d 7c 83 0c lea 0xc(%rbx,%rax,4),%rdi : : if (needshuffle) : memmove(itemId + 1, itemId, 0.00 : 69615d: 0f b7 d2 movzwl %dx,%edx 0.00 : 696160: 41 0f b7 c4 movzwl %r12w,%eax 0.00 : 696164: 29 c2 sub %eax,%edx 0.00 : 696166: 4c 89 45 c8 mov %r8,-0x38(%rbp) : return InvalidOffsetNumber; : : /* : * OK to insert the item. First, shuffle the existing pointers if needed. : */ : itemId = PageGetItemId(phdr, offsetNumber); 0.00 : 69616a: 48 8d 77 08 lea 0x8(%rdi),%rsi : : if (needshuffle) : memmove(itemId + 1, itemId, 0.00 : 69616e: 48 63 d2 movslq %edx,%rdx 0.00 : 696171: 48 83 c7 0c add $0xc,%rdi 0.00 : 696175: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 696179: e8 b2 3a dd ff callq 469c30 0.00 : 69617e: 4c 8b 45 c8 mov -0x38(%rbp),%r8 0.00 : 696182: e9 1d ff ff ff jmpq 6960a4 : /* copy the item's data onto the page */ : memcpy((char *) page + upper, item, size); : : /* adjust page header */ : phdr->pd_lower = (LocationIndex) lower; : phdr->pd_upper = (LocationIndex) upper; 0.00 : 696187: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 69618d: e9 7b fe ff ff jmpq 69600d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 21.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 10.23 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 3.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1822 2.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1826 2.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1832 1.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 1.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 1.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 1.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1832 1.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 1.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1808 1.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1832 1.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1832 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1819 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 0.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075e1e0 : : /* : * sortsupport comparison func (for C locale case) : */ : static int : bttextfastcmp_c(Datum x, Datum y, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1806 1.86 : 75e1e0: 55 push %rbp 0.00 : 75e1e1: 48 89 e5 mov %rsp,%rbp 0.47 : 75e1e4: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 75e1e8: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 75e1ec: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.93 : 75e1f0: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.47 : 75e1f4: 49 89 f7 mov %rsi,%r15 0.47 : 75e1f7: 48 89 5d d8 mov %rbx,-0x28(%rbp) 1.40 : 75e1fb: 48 83 ec 30 sub $0x30,%rsp 0.47 : 75e1ff: 49 89 fe mov %rdi,%r14 : text *arg1 = DatumGetTextPP(x); 0.00 : 75e202: e8 d9 0a 02 00 callq 77ece0 : text *arg2 = DatumGetTextPP(y); 0.47 : 75e207: 4c 89 ff mov %r15,%rdi : * sortsupport comparison func (for C locale case) : */ : static int : bttextfastcmp_c(Datum x, Datum y, SortSupport ssup) : { : text *arg1 = DatumGetTextPP(x); 0.00 : 75e20a: 49 89 c4 mov %rax,%r12 : text *arg2 = DatumGetTextPP(y); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1808 1.40 : 75e20d: e8 ce 0a 02 00 callq 77ece0 : *a2p; : int len1, : len2, : result; : : a1p = VARDATA_ANY(arg1); 0.00 : 75e212: 41 0f b6 14 24 movzbl (%r12),%edx : */ : static int : bttextfastcmp_c(Datum x, Datum y, SortSupport ssup) : { : text *arg1 = DatumGetTextPP(x); : text *arg2 = DatumGetTextPP(y); 0.00 : 75e217: 49 89 c5 mov %rax,%r13 : *a2p; : int len1, : len2, : result; : : a1p = VARDATA_ANY(arg1); 0.00 : 75e21a: 4d 8d 4c 24 01 lea 0x1(%r12),%r9 : a2p = VARDATA_ANY(arg2); 0.00 : 75e21f: 41 0f b6 4d 00 movzbl 0x0(%r13),%ecx : *a2p; : int len1, : len2, : result; : : a1p = VARDATA_ANY(arg1); 0.00 : 75e224: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.47 : 75e229: be 01 00 00 00 mov $0x1,%esi : a2p = VARDATA_ANY(arg2); 0.00 : 75e22e: 4d 8d 45 01 lea 0x1(%r13),%r8 0.47 : 75e232: 41 ba 01 00 00 00 mov $0x1,%r10d : *a2p; : int len1, : len2, : result; : : a1p = VARDATA_ANY(arg1); 0.00 : 75e238: 21 d6 and %edx,%esi 0.47 : 75e23a: 4c 0f 44 c8 cmove %rax,%r9 : a2p = VARDATA_ANY(arg2); 0.47 : 75e23e: 49 8d 45 04 lea 0x4(%r13),%rax 0.00 : 75e242: 41 21 ca and %ecx,%r10d 0.47 : 75e245: 4c 0f 44 c0 cmove %rax,%r8 : : len1 = VARSIZE_ANY_EXHDR(arg1); 0.00 : 75e249: 80 fa 01 cmp $0x1,%dl 0.00 : 75e24c: 0f 84 ee 00 00 00 je 75e340 0.00 : 75e252: 85 f6 test %esi,%esi 0.00 : 75e254: 0f 85 96 00 00 00 jne 75e2f0 0.47 : 75e25a: 41 8b 04 24 mov (%r12),%eax 0.00 : 75e25e: c1 e8 02 shr $0x2,%eax 0.00 : 75e261: 83 e8 04 sub $0x4,%eax 0.00 : 75e264: 89 45 d4 mov %eax,-0x2c(%rbp) : len2 = VARSIZE_ANY_EXHDR(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1819 0.93 : 75e267: 80 f9 01 cmp $0x1,%cl 0.00 : 75e26a: 0f 84 94 00 00 00 je 75e304 0.47 : 75e270: 45 85 d2 test %r10d,%r10d 0.00 : 75e273: 0f 84 b7 00 00 00 je 75e330 0.00 : 75e279: d0 e9 shr %cl 0.00 : 75e27b: 0f b6 c1 movzbl %cl,%eax 0.00 : 75e27e: 44 8d 58 ff lea -0x1(%rax),%r11d : : result = memcmp(a1p, a2p, Min(len1, len2)); 0.47 : 75e282: 44 3b 5d d4 cmp -0x2c(%rbp),%r11d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 1.86 : 75e286: 8b 4d d4 mov -0x2c(%rbp),%ecx 0.93 : 75e289: 4c 89 ce mov %r9,%rsi 0.00 : 75e28c: 4c 89 c7 mov %r8,%rdi 0.93 : 75e28f: 41 0f 4e cb cmovle %r11d,%ecx 1.86 : 75e293: 48 63 c9 movslq %ecx,%rcx 0.93 : 75e296: 48 39 c9 cmp %rcx,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 21.86 : 75e299: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 33.02 : 75e29b: 0f 97 c2 seta %dl 10.23 : 75e29e: 0f 92 c0 setb %al 0.00 : 75e2a1: 89 d3 mov %edx,%ebx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1821 0.93 : 75e2a3: 28 c3 sub %al,%bl 0.47 : 75e2a5: 0f be db movsbl %bl,%ebx : if ((result == 0) && (len1 != len2)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1822 3.72 : 75e2a8: 85 db test %ebx,%ebx 0.00 : 75e2aa: 75 10 jne 75e2bc 0.00 : 75e2ac: 44 39 5d d4 cmp %r11d,-0x2c(%rbp) 0.00 : 75e2b0: 74 0a je 75e2bc : result = (len1 < len2) ? -1 : 1; 0.00 : 75e2b2: 0f 9d c0 setge %al 0.00 : 75e2b5: 0f b6 d8 movzbl %al,%ebx 0.00 : 75e2b8: 8d 5c 1b ff lea -0x1(%rbx,%rbx,1),%ebx : : /* We can't afford to leak memory here. */ : if (PointerGetDatum(arg1) != x) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1826 2.33 : 75e2bc: 4d 39 f4 cmp %r14,%r12 0.00 : 75e2bf: 74 08 je 75e2c9 : pfree(arg1); 0.00 : 75e2c1: 4c 89 e7 mov %r12,%rdi 0.00 : 75e2c4: e8 b7 a8 03 00 callq 798b80 : if (PointerGetDatum(arg2) != y) 0.47 : 75e2c9: 4d 39 fd cmp %r15,%r13 0.00 : 75e2cc: 74 08 je 75e2d6 : pfree(arg2); 0.00 : 75e2ce: 4c 89 ef mov %r13,%rdi 0.00 : 75e2d1: e8 aa a8 03 00 callq 798b80 : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1832 1.40 : 75e2d6: 89 d8 mov %ebx,%eax 0.00 : 75e2d8: 4c 8b 65 e0 mov -0x20(%rbp),%r12 2.33 : 75e2dc: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 75e2e0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.47 : 75e2e4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 75e2e8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 1.40 : 75e2ec: c9 leaveq 1.86 : 75e2ed: c3 retq 0.00 : 75e2ee: 66 90 xchg %ax,%ax : result; : : a1p = VARDATA_ANY(arg1); : a2p = VARDATA_ANY(arg2); : : len1 = VARSIZE_ANY_EXHDR(arg1); 0.00 : 75e2f0: d0 ea shr %dl 0.00 : 75e2f2: 0f b6 c2 movzbl %dl,%eax 0.00 : 75e2f5: 83 e8 01 sub $0x1,%eax : len2 = VARSIZE_ANY_EXHDR(arg2); 0.00 : 75e2f8: 80 f9 01 cmp $0x1,%cl : result; : : a1p = VARDATA_ANY(arg1); : a2p = VARDATA_ANY(arg2); : : len1 = VARSIZE_ANY_EXHDR(arg1); 0.00 : 75e2fb: 89 45 d4 mov %eax,-0x2c(%rbp) : len2 = VARSIZE_ANY_EXHDR(arg2); 0.00 : 75e2fe: 0f 85 6c ff ff ff jne 75e270 0.00 : 75e304: 41 0f b6 45 01 movzbl 0x1(%r13),%eax 0.00 : 75e309: 41 bb 08 00 00 00 mov $0x8,%r11d 0.00 : 75e30f: 3c 01 cmp $0x1,%al 0.00 : 75e311: 0f 84 6b ff ff ff je 75e282 0.00 : 75e317: 3c 12 cmp $0x12,%al 0.00 : 75e319: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 75e31f: b8 10 00 00 00 mov $0x10,%eax 0.00 : 75e324: 44 0f 44 d8 cmove %eax,%r11d 0.00 : 75e328: e9 55 ff ff ff jmpq 75e282 0.00 : 75e32d: 0f 1f 00 nopl (%rax) 0.00 : 75e330: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 75e334: c1 e8 02 shr $0x2,%eax 0.47 : 75e337: 44 8d 58 fc lea -0x4(%rax),%r11d 0.00 : 75e33b: e9 42 ff ff ff jmpq 75e282 : result; : : a1p = VARDATA_ANY(arg1); : a2p = VARDATA_ANY(arg2); : : len1 = VARSIZE_ANY_EXHDR(arg1); 0.00 : 75e340: 41 0f b6 44 24 01 movzbl 0x1(%r12),%eax 0.00 : 75e346: c7 45 d4 08 00 00 00 movl $0x8,-0x2c(%rbp) 0.00 : 75e34d: 3c 01 cmp $0x1,%al 0.00 : 75e34f: 0f 84 12 ff ff ff je 75e267 0.00 : 75e355: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%rbp) 0.00 : 75e35c: 3c 12 cmp $0x12,%al 0.00 : 75e35e: b8 10 00 00 00 mov $0x10,%eax 0.00 : 75e363: 0f 45 45 d4 cmovne -0x2c(%rbp),%eax 0.00 : 75e367: 89 45 d4 mov %eax,-0x2c(%rbp) 0.00 : 75e36a: e9 f8 fe ff ff jmpq 75e267 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 6.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 6.40 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 5.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 4.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2307 4.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 4.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2329 3.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2279 3.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2313 3.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 3.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2333 3.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 2.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2345 2.96 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 2.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 2.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 2.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 2.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2322 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2279 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2327 1.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2294 1.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2280 1.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2279 1.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2282 1.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 1.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2279 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2345 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 0.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c9ef0 : : * Return 0 if okay, a DTERR code if not. : */ : int : ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc, : struct pg_tm * tm) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2279 1.97 : 6c9ef0: 55 push %rbp : if (fmask & DTK_M(YEAR)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2280 1.48 : 6c9ef1: 40 f6 c7 04 test $0x4,%dil : * Return 0 if okay, a DTERR code if not. : */ : int : ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc, : struct pg_tm * tm) : { 0.00 : 6c9ef5: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2279 1.48 : 6c9ef8: 41 54 push %r12 3.94 : 6c9efa: 4d 89 c4 mov %r8,%r12 0.00 : 6c9efd: 53 push %rbx 0.99 : 6c9efe: 89 fb mov %edi,%ebx : if (fmask & DTK_M(YEAR)) 0.00 : 6c9f00: 74 05 je 6c9f07 : { : if (isjulian) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2282 1.48 : 6c9f02: 40 84 f6 test %sil,%sil 0.00 : 6c9f05: 74 31 je 6c9f38 : return DTERR_FIELD_OVERFLOW; : } : } : : /* now that we have correct year, decode DOY */ : if (fmask & DTK_M(DOY)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2313 3.94 : 6c9f07: 66 85 db test %bx,%bx 0.00 : 6c9f0a: 78 5c js 6c9f68 : j2date(date2j(tm->tm_year, 1, 1) + tm->tm_yday - 1, : &tm->tm_year, &tm->tm_mon, &tm->tm_mday); : } : : /* check for valid month */ : if (fmask & DTK_M(MONTH)) 0.00 : 6c9f0c: f6 c3 02 test $0x2,%bl 0.00 : 6c9f0f: 90 nop 0.00 : 6c9f10: 0f 85 3a 01 00 00 jne 6ca050 : if (tm->tm_mon < 1 || tm->tm_mon > MONTHS_PER_YEAR) : return DTERR_MD_FIELD_OVERFLOW; : } : : /* minimal check for valid day */ : if (fmask & DTK_M(DAY)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2327 1.97 : 6c9f16: f6 c3 08 test $0x8,%bl 0.00 : 6c9f19: 0f 85 51 01 00 00 jne 6ca070 : { : if (tm->tm_mday < 1 || tm->tm_mday > 31) : return DTERR_MD_FIELD_OVERFLOW; : } : : if ((fmask & DTK_DATE_M) == DTK_DATE_M) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2333 3.45 : 6c9f1f: 83 e3 0e and $0xe,%ebx 0.00 : 6c9f22: 83 fb 0e cmp $0xe,%ebx 0.00 : 6c9f25: 0f 84 a5 00 00 00 je 6c9fd0 : /* : * Check for valid day of month, now that we know for sure the month : * and year. Note we don't use MD_FIELD_OVERFLOW here, since it seems : * unlikely that "Feb 29" is a YMD-order error. : */ : if (tm->tm_mday > day_tab[isleap(tm->tm_year)][tm->tm_mon - 1]) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 12.81 : 6c9f2b: 31 c0 xor %eax,%eax : return DTERR_FIELD_OVERFLOW; : } : : return 0; : } 0.00 : 6c9f2d: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2345 0.99 : 6c9f2e: 41 5c pop %r12 0.49 : 6c9f30: c9 leaveq 2.96 : 6c9f31: c3 retq 0.00 : 6c9f32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (isjulian) : { : /* tm_year is correct and should not be touched */ : } : else if (bc) 0.00 : 6c9f38: 84 c9 test %cl,%cl 0.00 : 6c9f3a: 0f 85 43 01 00 00 jne 6ca083 : if (tm->tm_year <= 0) : return DTERR_FIELD_OVERFLOW; : /* internally, we represent 1 BC as year zero, 2 BC as -1, etc */ : tm->tm_year = -(tm->tm_year - 1); : } : else if (is2digits) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2294 1.97 : 6c9f40: 84 d2 test %dl,%dl 0.00 : 6c9f42: 74 5c je 6c9fa0 : { : /* process 1 or 2-digit input as 1970-2069 AD, allow '0' and '00' */ : if (tm->tm_year < 0) /* just paranoia */ 0.00 : 6c9f44: 41 8b 40 14 mov 0x14(%r8),%eax 0.00 : 6c9f48: 85 c0 test %eax,%eax 0.00 : 6c9f4a: 78 60 js 6c9fac : return DTERR_FIELD_OVERFLOW; : if (tm->tm_year < 70) 0.00 : 6c9f4c: 83 f8 45 cmp $0x45,%eax 0.00 : 6c9f4f: 90 nop 0.00 : 6c9f50: 7e 6e jle 6c9fc0 : tm->tm_year += 2000; : else if (tm->tm_year < 100) 0.00 : 6c9f52: 83 f8 63 cmp $0x63,%eax 0.00 : 6c9f55: 7f b0 jg 6c9f07 : tm->tm_year += 1900; 0.00 : 6c9f57: 05 6c 07 00 00 add $0x76c,%eax 0.00 : 6c9f5c: 41 89 40 14 mov %eax,0x14(%r8) 0.00 : 6c9f60: eb a5 jmp 6c9f07 0.00 : 6c9f62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : /* now that we have correct year, decode DOY */ : if (fmask & DTK_M(DOY)) : { : j2date(date2j(tm->tm_year, 1, 1) + tm->tm_yday - 1, 0.00 : 6c9f68: 41 8b 7c 24 14 mov 0x14(%r12),%edi 0.00 : 6c9f6d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6c9f72: be 01 00 00 00 mov $0x1,%esi 0.00 : 6c9f77: e8 a4 fd ff ff callq 6c9d20 0.00 : 6c9f7c: 41 03 44 24 1c add 0x1c(%r12),%eax 0.00 : 6c9f81: 49 8d 4c 24 0c lea 0xc(%r12),%rcx 0.00 : 6c9f86: 49 8d 54 24 10 lea 0x10(%r12),%rdx 0.00 : 6c9f8b: 49 8d 74 24 14 lea 0x14(%r12),%rsi 0.00 : 6c9f90: 8d 78 ff lea -0x1(%rax),%edi 0.00 : 6c9f93: e8 18 fe ff ff callq 6c9db0 0.00 : 6c9f98: e9 6f ff ff ff jmpq 6c9f0c 0.00 : 6c9f9d: 0f 1f 00 nopl (%rax) : tm->tm_year += 1900; : } : else : { : /* there is no year zero in AD/BC notation */ : if (tm->tm_year <= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2307 4.93 : 6c9fa0: 41 8b 48 14 mov 0x14(%r8),%ecx 0.00 : 6c9fa4: 85 c9 test %ecx,%ecx 0.00 : 6c9fa6: 0f 8f 5b ff ff ff jg 6c9f07 : /* : * Check for valid day of month, now that we know for sure the month : * and year. Note we don't use MD_FIELD_OVERFLOW here, since it seems : * unlikely that "Feb 29" is a YMD-order error. : */ : if (tm->tm_mday > day_tab[isleap(tm->tm_year)][tm->tm_mon - 1]) 0.00 : 6c9fac: b8 fe ff ff ff mov $0xfffffffe,%eax 0.00 : 6c9fb1: e9 77 ff ff ff jmpq 6c9f2d 0.00 : 6c9fb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6c9fbd: 00 00 00 : { : /* process 1 or 2-digit input as 1970-2069 AD, allow '0' and '00' */ : if (tm->tm_year < 0) /* just paranoia */ : return DTERR_FIELD_OVERFLOW; : if (tm->tm_year < 70) : tm->tm_year += 2000; 0.00 : 6c9fc0: 05 d0 07 00 00 add $0x7d0,%eax 0.00 : 6c9fc5: 41 89 40 14 mov %eax,0x14(%r8) 0.00 : 6c9fc9: e9 39 ff ff ff jmpq 6c9f07 0.00 : 6c9fce: 66 90 xchg %ax,%ax : /* : * Check for valid day of month, now that we know for sure the month : * and year. Note we don't use MD_FIELD_OVERFLOW here, since it seems : * unlikely that "Feb 29" is a YMD-order error. : */ : if (tm->tm_mday > day_tab[isleap(tm->tm_year)][tm->tm_mon - 1]) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 3.94 : 6c9fd0: 41 8b 4c 24 14 mov 0x14(%r12),%ecx 0.00 : 6c9fd5: 31 d2 xor %edx,%edx 0.00 : 6c9fd7: 45 8b 44 24 0c mov 0xc(%r12),%r8d 0.00 : 6c9fdc: f6 c1 03 test $0x3,%cl 0.00 : 6c9fdf: 75 3b jne 6ca01c /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 5.42 : 6c9fe1: b8 1f 85 eb 51 mov $0x51eb851f,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 2.96 : 6c9fe6: 89 cf mov %ecx,%edi 0.49 : 6c9fe8: f7 e9 imul %ecx 2.46 : 6c9fea: c1 ff 1f sar $0x1f,%edi 0.00 : 6c9fed: 89 d0 mov %edx,%eax 0.49 : 6c9fef: 89 d6 mov %edx,%esi 0.49 : 6c9ff1: ba 64 00 00 00 mov $0x64,%edx 0.00 : 6c9ff6: c1 f8 05 sar $0x5,%eax 0.99 : 6c9ff9: 29 f8 sub %edi,%eax 1.48 : 6c9ffb: 0f af c2 imul %edx,%eax 2.46 : 6c9ffe: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6ca003: 39 c1 cmp %eax,%ecx 0.00 : 6ca005: 75 15 jne 6ca01c 0.00 : 6ca007: 89 f2 mov %esi,%edx 0.00 : 6ca009: c1 fa 07 sar $0x7,%edx 0.00 : 6ca00c: 29 fa sub %edi,%edx 0.00 : 6ca00e: 69 d2 90 01 00 00 imul $0x190,%edx,%edx 0.00 : 6ca014: 39 d1 cmp %edx,%ecx 0.00 : 6ca016: 0f 94 c0 sete %al 0.00 : 6ca019: 0f b6 d0 movzbl %al,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 6.40 : 6ca01c: 48 63 d2 movslq %edx,%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 0.99 : 6ca01f: 41 8b 4c 24 10 mov 0x10(%r12),%ecx 0.00 : 6ca024: 48 8d 04 12 lea (%rdx,%rdx,1),%rax 0.00 : 6ca028: 48 01 d0 add %rdx,%rax 2.46 : 6ca02b: 83 e9 01 sub $0x1,%ecx 3.45 : 6ca02e: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.99 : 6ca032: 48 63 c9 movslq %ecx,%rcx 1.48 : 6ca035: 48 01 c8 add %rcx,%rax 4.93 : 6ca038: 44 3b 04 85 e0 a4 8b cmp 0x8ba4e0(,%rax,4),%r8d 0.00 : 6ca03f: 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2340 6.40 : 6ca040: 0f 8e e5 fe ff ff jle 6c9f2b 0.00 : 6ca046: e9 61 ff ff ff jmpq 6c9fac 0.00 : 6ca04b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* check for valid month */ : if (fmask & DTK_M(MONTH)) : { : if (tm->tm_mon < 1 || tm->tm_mon > MONTHS_PER_YEAR) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2322 2.46 : 6ca050: 41 8b 44 24 10 mov 0x10(%r12),%eax 0.00 : 6ca055: 83 e8 01 sub $0x1,%eax 0.00 : 6ca058: 83 f8 0b cmp $0xb,%eax 0.00 : 6ca05b: 0f 86 b5 fe ff ff jbe 6c9f16 : /* : * Check for valid day of month, now that we know for sure the month : * and year. Note we don't use MD_FIELD_OVERFLOW here, since it seems : * unlikely that "Feb 29" is a YMD-order error. : */ : if (tm->tm_mday > day_tab[isleap(tm->tm_year)][tm->tm_mon - 1]) 0.00 : 6ca061: b8 fd ff ff ff mov $0xfffffffd,%eax 0.00 : 6ca066: e9 c2 fe ff ff jmpq 6c9f2d 0.00 : 6ca06b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* minimal check for valid day */ : if (fmask & DTK_M(DAY)) : { : if (tm->tm_mday < 1 || tm->tm_mday > 31) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:2329 4.43 : 6ca070: 41 8b 44 24 0c mov 0xc(%r12),%eax 0.00 : 6ca075: 83 e8 01 sub $0x1,%eax 0.00 : 6ca078: 83 f8 1e cmp $0x1e,%eax 0.00 : 6ca07b: 0f 86 9e fe ff ff jbe 6c9f1f 0.00 : 6ca081: eb de jmp 6ca061 : /* tm_year is correct and should not be touched */ : } : else if (bc) : { : /* there is no year zero in AD/BC notation */ : if (tm->tm_year <= 0) 0.00 : 6ca083: 41 8b 50 14 mov 0x14(%r8),%edx 0.00 : 6ca087: 85 d2 test %edx,%edx 0.00 : 6ca089: 0f 8e 1d ff ff ff jle 6c9fac : return DTERR_FIELD_OVERFLOW; : /* internally, we represent 1 BC as year zero, 2 BC as -1, etc */ : tm->tm_year = -(tm->tm_year - 1); 0.00 : 6ca08f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6ca094: 29 d0 sub %edx,%eax 0.00 : 6ca096: 41 89 40 14 mov %eax,0x14(%r8) 0.00 : 6ca09a: e9 68 fe ff ff jmpq 6c9f07 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1149 10.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:93 8.63 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1150 6.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 5.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1148 5.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 4.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1150 3.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1144 3.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1150 3.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1156 2.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 2.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1144 2.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1144 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1144 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1149 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1150 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1159 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1144 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1156 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1159 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1159 1.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1159 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1144 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1144 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1148 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1148 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1148 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1159 0.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079f090 : : */ : void : tuplesort_putindextuplevalues(Tuplesortstate *state, Relation rel, : ItemPointer self, Datum *values, : bool *isnull) : { 0.00 : 79f090: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1144 1.52 : 79f091: 48 89 e5 mov %rsp,%rbp 3.55 : 79f094: 41 55 push %r13 1.52 : 79f096: 41 54 push %r12 1.02 : 79f098: 49 89 fc mov %rdi,%r12 0.51 : 79f09b: 53 push %rbx 0.51 : 79f09c: 48 89 d3 mov %rdx,%rbx 0.00 : 79f09f: 4c 89 c2 mov %r8,%rdx 2.03 : 79f0a2: 48 83 ec 28 sub $0x28,%rsp : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 1.52 : 79f0a6: 48 8b 47 28 mov 0x28(%rdi),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:93 10.15 : 79f0aa: 4c 8b 2d af b7 41 00 mov 0x41b7af(%rip),%r13 # bba860 : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 1.52 : 79f0b1: 48 89 05 a8 b7 41 00 mov %rax,0x41b7a8(%rip) # bba860 : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : : stup.tuple = index_form_tuple(RelationGetDescr(rel), values, isnull); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1148 0.51 : 79f0b8: 48 8b 7e 38 mov 0x38(%rsi),%rdi 0.51 : 79f0bc: 48 89 ce mov %rcx,%rsi 0.51 : 79f0bf: e8 dc 21 cd ff callq 4712a0 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1148 5.58 : 79f0c4: 48 89 45 c0 mov %rax,-0x40(%rbp) : ((IndexTuple) stup.tuple)->t_tid = *self; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1149 16.24 : 79f0c8: 8b 13 mov (%rbx),%edx 0.00 : 79f0ca: 89 10 mov %edx,(%rax) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1149 1.52 : 79f0cc: 0f b7 53 04 movzwl 0x4(%rbx),%edx 0.00 : 79f0d0: 66 89 50 04 mov %dx,0x4(%rax) : USEMEM(state, GetMemoryChunkSpace(stup.tuple)); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1150 4.06 : 79f0d4: 48 8b 7d c0 mov -0x40(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1150 8.63 : 79f0d8: 49 8b 5c 24 10 mov 0x10(%r12),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1150 1.52 : 79f0dd: e8 ae 99 ff ff callq 798a90 : /* set up first-column key value */ : stup.datum1 = index_getattr((IndexTuple) stup.tuple, 0.00 : 79f0e2: 48 8b 7d c0 mov -0x40(%rbp),%rdi : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : : stup.tuple = index_form_tuple(RelationGetDescr(rel), values, isnull); : ((IndexTuple) stup.tuple)->t_tid = *self; : USEMEM(state, GetMemoryChunkSpace(stup.tuple)); 0.00 : 79f0e6: 48 29 c3 sub %rax,%rbx : /* set up first-column key value */ : stup.datum1 = index_getattr((IndexTuple) stup.tuple, 0.00 : 79f0e9: c6 45 d0 00 movb $0x0,-0x30(%rbp) : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : : stup.tuple = index_form_tuple(RelationGetDescr(rel), values, isnull); : ((IndexTuple) stup.tuple)->t_tid = *self; : USEMEM(state, GetMemoryChunkSpace(stup.tuple)); 3.05 : 79f0ed: 49 89 5c 24 10 mov %rbx,0x10(%r12) : /* set up first-column key value */ : stup.datum1 = index_getattr((IndexTuple) stup.tuple, 0.00 : 79f0f2: 66 83 7f 06 00 cmpw $0x0,0x6(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 2.03 : 79f0f7: 78 7f js 79f178 1.02 : 79f0f9: 49 8b 84 24 20 01 00 mov 0x120(%r12),%rax 0.00 : 79f100: 00 1.52 : 79f101: 48 8b 50 38 mov 0x38(%rax),%rdx 1.02 : 79f105: 48 8b 42 08 mov 0x8(%rdx),%rax 1.02 : 79f109: 48 8b 08 mov (%rax),%rcx 1.52 : 79f10c: 8b 71 54 mov 0x54(%rcx),%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 5.58 : 79f10f: 85 f6 test %esi,%esi 0.00 : 79f111: 0f 88 85 00 00 00 js 79f19c /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 0.51 : 79f117: 80 79 5c 00 cmpb $0x0,0x5c(%rcx) 0.00 : 79f11b: 48 63 c6 movslq %esi,%rax 1.02 : 79f11e: 48 8d 44 07 08 lea 0x8(%rdi,%rax,1),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 6.60 : 79f123: 74 2b je 79f150 0.00 : 79f125: 0f b7 41 4c movzwl 0x4c(%rcx),%eax 0.00 : 79f129: 66 83 f8 08 cmp $0x8,%ax 0.00 : 79f12d: 0f 84 8d 00 00 00 je 79f1c0 0.00 : 79f133: 66 83 f8 04 cmp $0x4,%ax 0.00 : 79f137: 74 77 je 79f1b0 0.00 : 79f139: 66 83 f8 02 cmp $0x2,%ax 0.00 : 79f13d: 0f 1f 00 nopl (%rax) 0.00 : 79f140: 0f 84 8a 00 00 00 je 79f1d0 0.00 : 79f146: 48 63 c6 movslq %esi,%rax 0.00 : 79f149: 0f b6 44 07 08 movzbl 0x8(%rdi,%rax,1),%eax 0.00 : 79f14e: 66 90 xchg %ax,%ax : 1, : RelationGetDescr(state->indexRel), : &stup.isnull1); : puttuple_common(state, &stup); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1156 1.02 : 79f150: 48 8d 75 c0 lea -0x40(%rbp),%rsi 0.00 : 79f154: 4c 89 e7 mov %r12,%rdi : : stup.tuple = index_form_tuple(RelationGetDescr(rel), values, isnull); : ((IndexTuple) stup.tuple)->t_tid = *self; : USEMEM(state, GetMemoryChunkSpace(stup.tuple)); : /* set up first-column key value */ : stup.datum1 = index_getattr((IndexTuple) stup.tuple, 0.00 : 79f157: 48 89 45 c8 mov %rax,-0x38(%rbp) : 1, : RelationGetDescr(state->indexRel), : &stup.isnull1); : puttuple_common(state, &stup); 3.05 : 79f15b: e8 d0 f6 ff ff callq 79e830 0.00 : 79f160: 4c 89 2d f9 b6 41 00 mov %r13,0x41b6f9(%rip) # bba860 : : MemoryContextSwitchTo(oldcontext); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1159 1.02 : 79f167: 48 83 c4 28 add $0x28,%rsp 1.02 : 79f16b: 5b pop %rbx 0.00 : 79f16c: 41 5c pop %r12 0.51 : 79f16e: 41 5d pop %r13 1.02 : 79f170: c9 leaveq 1.52 : 79f171: c3 retq 0.00 : 79f172: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : stup.tuple = index_form_tuple(RelationGetDescr(rel), values, isnull); : ((IndexTuple) stup.tuple)->t_tid = *self; : USEMEM(state, GetMemoryChunkSpace(stup.tuple)); : /* set up first-column key value */ : stup.datum1 = index_getattr((IndexTuple) stup.tuple, 0.00 : 79f178: f6 47 08 01 testb $0x1,0x8(%rdi) 0.00 : 79f17c: 75 12 jne 79f190 0.00 : 79f17e: c6 45 d0 01 movb $0x1,-0x30(%rbp) 0.00 : 79f182: 31 c0 xor %eax,%eax 0.00 : 79f184: eb ca jmp 79f150 0.00 : 79f186: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 79f18d: 00 00 00 0.00 : 79f190: 49 8b 84 24 20 01 00 mov 0x120(%r12),%rax 0.00 : 79f197: 00 0.00 : 79f198: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 79f19c: be 01 00 00 00 mov $0x1,%esi 0.00 : 79f1a1: e8 ba 19 cd ff callq 470b60 0.00 : 79f1a6: eb a8 jmp 79f150 0.00 : 79f1a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79f1af: 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1152 2.54 : 79f1b0: 48 63 c6 movslq %esi,%rax 0.00 : 79f1b3: 8b 44 07 08 mov 0x8(%rdi,%rax,1),%eax 0.51 : 79f1b7: eb 97 jmp 79f150 0.00 : 79f1b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 79f1c0: 48 63 c6 movslq %esi,%rax 0.00 : 79f1c3: 48 8b 44 07 08 mov 0x8(%rdi,%rax,1),%rax 0.00 : 79f1c8: eb 86 jmp 79f150 0.00 : 79f1ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79f1d0: 48 63 c6 movslq %esi,%rax 0.00 : 79f1d3: 0f b7 44 07 08 movzwl 0x8(%rdi,%rax,1),%eax 0.00 : 79f1d8: e9 73 ff ff ff jmpq 79f150 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 13.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 11.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 7.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 5.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:719 4.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:716 3.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 3.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 3.87 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 3.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 3.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 2.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 2.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 2.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 2.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 2.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 1.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 1.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 1.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 1.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 1.10 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 0.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798f70 : : return ret; : } : : void * : palloc0(Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 1.10 : 798f70: 55 push %rbp : void *ret; : : AssertArg(MemoryContextIsValid(CurrentMemoryContext)); : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:716 4.42 : 798f71: 48 81 ff ff ff ff 3f cmp $0x3fffffff,%rdi : return ret; : } : : void * : palloc0(Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 3.31 : 798f78: 48 89 e5 mov %rsp,%rbp 0.55 : 798f7b: 41 54 push %r12 3.87 : 798f7d: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:709 7.18 : 798f7e: 48 89 fb mov %rdi,%rbx : void *ret; : : AssertArg(MemoryContextIsValid(CurrentMemoryContext)); : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) 0.00 : 798f81: 77 6d ja 798ff0 : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; 0.00 : 798f83: 48 8b 05 d6 18 42 00 mov 0x4218d6(%rip),%rax # bba860 : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 2.76 : 798f8a: 48 89 de mov %rbx,%rsi : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:719 5.52 : 798f8d: c6 40 30 00 movb $0x0,0x30(%rax) : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 13.81 : 798f91: 48 8b 3d c8 18 42 00 mov 0x4218c8(%rip),%rdi # bba860 0.00 : 798f98: 48 8b 47 08 mov 0x8(%rdi),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 1.10 : 798f9c: ff 10 callq *(%rax) : VALGRIND_MEMPOOL_ALLOC(CurrentMemoryContext, ret, size); : : MemSetAligned(ret, 0, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 3.87 : 798f9e: f6 c3 07 test $0x7,%bl : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:721 0.55 : 798fa1: 49 89 c4 mov %rax,%r12 : VALGRIND_MEMPOOL_ALLOC(CurrentMemoryContext, ret, size); : : MemSetAligned(ret, 0, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 2.21 : 798fa4: 75 09 jne 798faf 0.55 : 798fa6: 48 81 fb 00 04 00 00 cmp $0x400,%rbx 0.00 : 798fad: 76 19 jbe 798fc8 2.21 : 798faf: 48 89 da mov %rbx,%rdx 0.00 : 798fb2: 31 f6 xor %esi,%esi 0.00 : 798fb4: 4c 89 e7 mov %r12,%rdi 0.55 : 798fb7: e8 64 04 cd ff callq 469420 : : return ret; : } 0.00 : 798fbc: 5b pop %rbx 0.00 : 798fbd: 4c 89 e0 mov %r12,%rax 0.00 : 798fc0: 41 5c pop %r12 0.00 : 798fc2: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 1.10 : 798fc3: c3 retq 0.00 : 798fc4: 0f 1f 40 00 nopl 0x0(%rax) : CurrentMemoryContext->isReset = false; : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); : VALGRIND_MEMPOOL_ALLOC(CurrentMemoryContext, ret, size); : : MemSetAligned(ret, 0, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 3.87 : 798fc8: 49 8d 14 1c lea (%r12,%rbx,1),%rdx 0.55 : 798fcc: 49 39 d4 cmp %rdx,%r12 0.00 : 798fcf: 73 eb jae 798fbc 1.66 : 798fd1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 11.60 : 798fd8: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 16.57 : 798fdf: 48 83 c0 08 add $0x8,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:724 0.55 : 798fe3: 48 39 c2 cmp %rax,%rdx 0.00 : 798fe6: 77 f0 ja 798fd8 : : return ret; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:727 3.31 : 798fe8: 5b pop %rbx 2.76 : 798fe9: 4c 89 e0 mov %r12,%rax 1.66 : 798fec: 41 5c pop %r12 0.55 : 798fee: c9 leaveq 2.21 : 798fef: c3 retq : : AssertArg(MemoryContextIsValid(CurrentMemoryContext)); : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); 0.00 : 798ff0: ba 10 20 8e 00 mov $0x8e2010,%edx 0.00 : 798ff5: be cd 02 00 00 mov $0x2cd,%esi 0.00 : 798ffa: bf 8e 1f 8e 00 mov $0x8e1f8e,%edi 0.00 : 798fff: e8 1c 24 fe ff callq 77b420 0.00 : 799004: 48 89 da mov %rbx,%rdx 0.00 : 799007: be b8 1f 8e 00 mov $0x8e1fb8,%esi 0.00 : 79900c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 799011: 31 c0 xor %eax,%eax 0.00 : 799013: e8 18 22 fe ff callq 77b230 0.00 : 799018: e8 b3 04 cd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 37.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 31.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 13.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:286 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:282 6.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 1.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 0.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ebc80 : : /* : * int4in - converts "num" to int4 : */ : Datum : int4in(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:282 10.00 : 6ebc80: 55 push %rbp : char *num = PG_GETARG_CSTRING(0); : : PG_RETURN_INT32(pg_atoi(num, sizeof(int32), '\0')); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 31.11 : 6ebc81: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 1.11 : 6ebc85: 31 d2 xor %edx,%edx 0.56 : 6ebc87: be 04 00 00 00 mov $0x4,%esi : /* : * int4in - converts "num" to int4 : */ : Datum : int4in(PG_FUNCTION_ARGS) : { 0.00 : 6ebc8c: 48 89 e5 mov %rsp,%rbp : char *num = PG_GETARG_CSTRING(0); : : PG_RETURN_INT32(pg_atoi(num, sizeof(int32), '\0')); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 6.11 : 6ebc8f: e8 3c 1f 02 00 callq 70dbd0 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:286 13.89 : 6ebc94: c9 leaveq : Datum : int4in(PG_FUNCTION_ARGS) : { : char *num = PG_GETARG_CSTRING(0); : : PG_RETURN_INT32(pg_atoi(num, sizeof(int32), '\0')); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:285 37.22 : 6ebc95: 89 c0 mov %eax,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 7.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 5.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 5.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 5.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 4.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1979 4.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 3.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 3.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 3.43 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1979 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 2.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 2.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 2.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1992 2.29 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1954 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1956 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1977 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1960 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1992 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1995 1.71 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1995 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1964 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1981 1.14 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1993 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1977 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1981 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1981 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1989 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1989 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1992 0.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1993 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b1430 : : static Datum : ExecMakeFunctionResultNoSets(FuncExprState *fcache, : ExprContext *econtext, : bool *isNull, : ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 8.00 : 5b1430: 55 push %rbp 0.00 : 5b1431: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1946 1.14 : 5b1434: 41 57 push %r15 2.29 : 5b1436: 49 89 d7 mov %rdx,%r15 0.00 : 5b1439: 41 56 push %r14 2.86 : 5b143b: 49 89 f6 mov %rsi,%r14 0.00 : 5b143e: 41 55 push %r13 3.43 : 5b1440: 49 89 fd mov %rdi,%r13 0.00 : 5b1443: 41 54 push %r12 2.29 : 5b1445: 53 push %rbx 0.57 : 5b1446: 48 89 cb mov %rcx,%rbx 0.57 : 5b1449: 48 83 ec 48 sub $0x48,%rsp : FunctionCallInfo fcinfo; : PgStat_FunctionCallUsage fcusage; : int i; : : /* Guard against stack overflow due to overly complex expressions */ : check_stack_depth(); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1954 1.71 : 5b144d: e8 8e a5 0e 00 callq 69b9e0 : : if (isDone) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1956 1.71 : 5b1452: 48 85 db test %rbx,%rbx 0.00 : 5b1455: 74 06 je 5b145d : *isDone = ExprSingleResult; 0.00 : 5b1457: c7 03 00 00 00 00 movl $0x0,(%rbx) : : /* inlined, simplified version of ExecEvalFuncArgs */ : fcinfo = &fcache->fcinfo_data; : i = 0; : foreach(arg, fcache->args) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 1.71 : 5b145d: 49 8b 45 18 mov 0x18(%r13),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5b1461: 48 85 c0 test %rax,%rax 0.00 : 5b1464: 0f 84 c2 00 00 00 je 5b152c 0.00 : 5b146a: 4c 8b 60 08 mov 0x8(%rax),%r12 0.57 : 5b146e: 4d 85 e4 test %r12,%r12 0.00 : 5b1471: 0f 84 b5 00 00 00 je 5b152c /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 5.71 : 5b1477: 31 db xor %ebx,%ebx 0.00 : 5b1479: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : ExprState *argstate = (ExprState *) lfirst(arg); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1964 1.14 : 5b1480: 49 8b 04 24 mov (%r12),%rax : : fcinfo->arg[i] = ExecEvalExpr(argstate, /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 2.86 : 5b1484: 49 8d 94 1d b0 03 00 lea 0x3b0(%r13,%rbx,1),%rdx 0.00 : 5b148b: 00 3.43 : 5b148c: 31 c9 xor %ecx,%ecx 0.00 : 5b148e: 4c 89 f6 mov %r14,%rsi 0.57 : 5b1491: 48 89 c7 mov %rax,%rdi 1.14 : 5b1494: ff 50 10 callq *0x10(%rax) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1966 7.43 : 5b1497: 49 89 84 dd 90 00 00 mov %rax,0x90(%r13,%rbx,8) 0.00 : 5b149e: 00 : *isDone = ExprSingleResult; : : /* inlined, simplified version of ExecEvalFuncArgs */ : fcinfo = &fcache->fcinfo_data; : i = 0; : foreach(arg, fcache->args) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 5.14 : 5b149f: 4d 8b 64 24 08 mov 0x8(%r12),%r12 : { : ExprState *argstate = (ExprState *) lfirst(arg); : : fcinfo->arg[i] = ExecEvalExpr(argstate, 0.00 : 5b14a4: 8d 53 01 lea 0x1(%rbx),%edx : *isDone = ExprSingleResult; : : /* inlined, simplified version of ExecEvalFuncArgs */ : fcinfo = &fcache->fcinfo_data; : i = 0; : foreach(arg, fcache->args) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1962 4.00 : 5b14a7: 48 83 c3 01 add $0x1,%rbx 1.71 : 5b14ab: 4d 85 e4 test %r12,%r12 0.00 : 5b14ae: 75 d0 jne 5b1480 : : /* : * If function is strict, and there are any NULL arguments, skip calling : * the function and return NULL. : */ : if (fcache->func.fn_strict) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1977 0.57 : 5b14b0: 41 80 7d 2e 00 cmpb $0x0,0x2e(%r13) 0.00 : 5b14b5: 74 34 je 5b14eb 1.71 : 5b14b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b14be: 00 00 : { : while (--i >= 0) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1979 3.43 : 5b14c0: 83 ea 01 sub $0x1,%edx 4.57 : 5b14c3: 78 26 js 5b14eb : { : if (fcinfo->argnull[i]) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1981 0.57 : 5b14c5: 48 63 c2 movslq %edx,%rax 0.57 : 5b14c8: 41 80 bc 05 b0 03 00 cmpb $0x0,0x3b0(%r13,%rax,1) 0.00 : 5b14cf: 00 00 1.14 : 5b14d1: 74 ed je 5b14c0 : { : *isNull = true; 0.00 : 5b14d3: 41 c6 07 01 movb $0x1,(%r15) 0.00 : 5b14d7: 31 db xor %ebx,%ebx : *isNull = fcinfo->isnull; : : pgstat_end_function_usage(&fcusage, true); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 2.86 : 5b14d9: 48 83 c4 48 add $0x48,%rsp 0.00 : 5b14dd: 48 89 d8 mov %rbx,%rax 0.00 : 5b14e0: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 5.14 : 5b14e1: 41 5c pop %r12 0.00 : 5b14e3: 41 5d pop %r13 0.00 : 5b14e5: 41 5e pop %r14 0.00 : 5b14e7: 41 5f pop %r15 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 2.86 : 5b14e9: c9 leaveq 1.71 : 5b14ea: c3 retq : : if (isDone) : *isDone = ExprSingleResult; : : /* inlined, simplified version of ExecEvalFuncArgs */ : fcinfo = &fcache->fcinfo_data; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1960 1.71 : 5b14eb: 49 8d 5d 70 lea 0x70(%r13),%rbx : return (Datum) 0; : } : } : } : : pgstat_init_function_usage(fcinfo, &fcusage); 0.00 : 5b14ef: 4c 8d 65 90 lea -0x70(%rbp),%r12 0.00 : 5b14f3: 48 89 df mov %rbx,%rdi /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1989 0.57 : 5b14f6: 4c 89 e6 mov %r12,%rsi 0.57 : 5b14f9: e8 82 12 09 00 callq 642780 : : fcinfo->isnull = false; : result = FunctionCallInvoke(fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1992 2.29 : 5b14fe: 49 8b 45 70 mov 0x70(%r13),%rax 0.57 : 5b1502: 48 89 df mov %rbx,%rdi : } : } : : pgstat_init_function_usage(fcinfo, &fcusage); : : fcinfo->isnull = false; 0.00 : 5b1505: 41 c6 85 8c 00 00 00 movb $0x0,0x8c(%r13) 0.00 : 5b150c: 00 : result = FunctionCallInvoke(fcinfo); 0.00 : 5b150d: ff 10 callq *(%rax) 1.71 : 5b150f: 48 89 c3 mov %rax,%rbx : *isNull = fcinfo->isnull; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1993 0.57 : 5b1512: 41 0f b6 85 8c 00 00 movzbl 0x8c(%r13),%eax 0.00 : 5b1519: 00 : : pgstat_end_function_usage(&fcusage, true); 0.00 : 5b151a: be 01 00 00 00 mov $0x1,%esi /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1995 1.71 : 5b151f: 4c 89 e7 mov %r12,%rdi : : pgstat_init_function_usage(fcinfo, &fcusage); : : fcinfo->isnull = false; : result = FunctionCallInvoke(fcinfo); : *isNull = fcinfo->isnull; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1993 1.14 : 5b1522: 41 88 07 mov %al,(%r15) : : pgstat_end_function_usage(&fcusage, true); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1995 1.71 : 5b1525: e8 a6 10 09 00 callq 6425d0 : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1998 2.29 : 5b152a: eb ad jmp 5b14d9 : *isDone = ExprSingleResult; : : /* inlined, simplified version of ExecEvalFuncArgs */ : fcinfo = &fcache->fcinfo_data; : i = 0; : foreach(arg, fcache->args) 0.00 : 5b152c: 31 d2 xor %edx,%edx 0.00 : 5b152e: eb 80 jmp 5b14b0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.79 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2255 14.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2279 10.53 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2283 10.53 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2301 8.77 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2287 4.68 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2281 3.51 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2255 2.92 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2294 2.92 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2305 2.34 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2305 2.34 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2301 1.75 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2254 1.75 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2254 1.75 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2254 1.75 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2280 1.75 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2286 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2279 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2281 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2294 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2294 1.17 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2305 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2254 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2254 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2254 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2254 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2254 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2283 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2286 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2288 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2305 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2305 0.58 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2301 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049ab60 : : * the original tuple. : */ : static HeapTuple : heap_prepare_insert(Relation relation, HeapTuple tup, TransactionId xid, : CommandId cid, int options) : { 0.00 : 49ab60: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2254 0.58 : 49ab61: 41 89 c9 mov %ecx,%r9d 1.75 : 49ab64: 48 89 e5 mov %rsp,%rbp 0.00 : 49ab67: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 49ab6b: 4c 89 6d e8 mov %r13,-0x18(%rbp) 1.75 : 49ab6f: 48 89 f3 mov %rsi,%rbx 0.58 : 49ab72: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 49ab76: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.58 : 49ab7a: 49 89 fd mov %rdi,%r13 1.75 : 49ab7d: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.58 : 49ab81: 48 83 ec 40 sub $0x40,%rsp : if (relation->rd_rel->relhasoids) 0.00 : 49ab85: 48 8b 47 30 mov 0x30(%rdi),%rax : * the original tuple. : */ : static HeapTuple : heap_prepare_insert(Relation relation, HeapTuple tup, TransactionId xid, : CommandId cid, int options) : { 0.58 : 49ab89: 41 89 d7 mov %edx,%r15d : if (relation->rd_rel->relhasoids) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2255 3.51 : 49ab8c: 80 78 74 00 cmpb $0x0,0x74(%rax) 0.00 : 49ab90: 0f 85 ca 00 00 00 jne 49ac60 0.00 : 49ab96: 4c 8b 66 10 mov 0x10(%rsi),%r12 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2255 15.79 : 49ab9a: 41 0f b7 54 24 14 movzwl 0x14(%r12),%edx : { : /* check there is not space for an OID */ : Assert(!(tup->t_data->t_infomask & HEAP_HASOID)); : } : : tup->t_data->t_infomask &= ~(HEAP_XACT_MASK); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2279 14.62 : 49aba0: 83 e2 0f and $0xf,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2279 1.17 : 49aba3: 66 41 89 54 24 14 mov %dx,0x14(%r12) : tup->t_data->t_infomask2 &= ~(HEAP2_XACT_MASK); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2280 1.75 : 49aba9: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abad: 66 81 60 12 ff 1f andw $0x1fff,0x12(%rax) : tup->t_data->t_infomask |= HEAP_XMAX_INVALID; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2281 4.68 : 49abb3: 48 8b 43 10 mov 0x10(%rbx),%rax 1.17 : 49abb7: 66 81 48 14 00 08 orw $0x800,0x14(%rax) : HeapTupleHeaderSetXmin(tup->t_data, xid); : if (options & HEAP_INSERT_FROZEN) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2283 10.53 : 49abbd: 41 f6 c0 04 test $0x4,%r8b : } : : tup->t_data->t_infomask &= ~(HEAP_XACT_MASK); : tup->t_data->t_infomask2 &= ~(HEAP2_XACT_MASK); : tup->t_data->t_infomask |= HEAP_XMAX_INVALID; : HeapTupleHeaderSetXmin(tup->t_data, xid); 0.00 : 49abc1: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abc5: 44 89 38 mov %r15d,(%rax) : if (options & HEAP_INSERT_FROZEN) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2283 0.58 : 49abc8: 74 0a je 49abd4 : HeapTupleHeaderSetXminFrozen(tup->t_data); 0.00 : 49abca: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abce: 66 81 48 14 00 03 orw $0x300,0x14(%rax) : : HeapTupleHeaderSetCmin(tup->t_data, cid); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2286 1.75 : 49abd4: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abd8: 44 89 48 08 mov %r9d,0x8(%rax) 0.00 : 49abdc: 48 8b 43 10 mov 0x10(%rbx),%rax 0.58 : 49abe0: 66 83 60 14 df andw $0xffdf,0x14(%rax) : HeapTupleHeaderSetXmax(tup->t_data, 0); /* for cleanliness */ /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2287 8.77 : 49abe5: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49abe9: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : tup->t_tableOid = RelationGetRelid(relation); 0.00 : 49abf0: 41 8b 45 40 mov 0x40(%r13),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2288 0.58 : 49abf4: 89 43 0c mov %eax,0xc(%rbx) : : /* : * If the new tuple is too big for storage or contains already toasted : * out-of-line attributes from some other relation, invoke the toaster. : */ : if (relation->rd_rel->relkind != RELKIND_RELATION && /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2294 2.92 : 49abf7: 49 8b 45 30 mov 0x30(%r13),%rax 1.17 : 49abfb: 0f b6 40 6f movzbl 0x6f(%rax),%eax 1.17 : 49abff: 3c 72 cmp $0x72,%al 0.00 : 49ac01: 74 1d je 49ac20 0.00 : 49ac03: 3c 6d cmp $0x6d,%al 0.00 : 49ac05: 74 19 je 49ac20 : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) : return toast_insert_or_update(relation, tup, NULL, options); : else : return tup; : } /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2305 0.58 : 49ac07: 48 89 d8 mov %rbx,%rax 0.00 : 49ac0a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 2.92 : 49ac0e: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 49ac12: 4c 8b 6d e8 mov -0x18(%rbp),%r13 1.17 : 49ac16: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 49ac1a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 2.34 : 49ac1e: c9 leaveq 0.58 : 49ac1f: c3 retq : { : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(tup)); : return tup; : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) 0.00 : 49ac20: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 49ac24: f6 40 14 04 testb $0x4,0x14(%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2301 10.53 : 49ac28: 75 08 jne 49ac32 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:2301 2.34 : 49ac2a: 81 3b f0 07 00 00 cmpl $0x7f0,(%rbx) 0.58 : 49ac30: 76 d5 jbe 49ac07 : return toast_insert_or_update(relation, tup, NULL, options); 0.00 : 49ac32: 48 89 de mov %rbx,%rsi 0.00 : 49ac35: 4c 89 ef mov %r13,%rdi : else : return tup; : } 0.00 : 49ac38: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 49ac3c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 49ac40: 4c 8b 6d e8 mov -0x18(%rbp),%r13 : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(tup)); : return tup; : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) : return toast_insert_or_update(relation, tup, NULL, options); 0.00 : 49ac44: 44 89 c1 mov %r8d,%ecx : else : return tup; : } 0.00 : 49ac47: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 49ac4b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(tup)); : return tup; : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) : return toast_insert_or_update(relation, tup, NULL, options); 0.00 : 49ac4f: 31 d2 xor %edx,%edx : else : return tup; : } 0.00 : 49ac51: c9 leaveq : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(tup)); : return tup; : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) : return toast_insert_or_update(relation, tup, NULL, options); 0.00 : 49ac52: e9 89 85 00 00 jmpq 4a31e0 0.00 : 49ac57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49ac5e: 00 00 : * creation, the backend program sets oids for tuples. When we define : * an index, we set the oid. Finally, in the future, we may allow : * users to set their own object ids in order to support a persistent : * object store (objects need to contain pointers to one another). : */ : if (!OidIsValid(HeapTupleGetOid(tup))) 0.00 : 49ac60: 4c 8b 66 10 mov 0x10(%rsi),%r12 0.00 : 49ac64: 41 0f b7 54 24 14 movzwl 0x14(%r12),%edx 0.00 : 49ac6a: f6 c2 08 test $0x8,%dl 0.00 : 49ac6d: 75 39 jne 49aca8 : /* toast table entries should never be recursively toasted */ : Assert(!HeapTupleHasExternal(tup)); : return tup; : } : else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) : return toast_insert_or_update(relation, tup, NULL, options); 0.00 : 49ac6f: 41 0f b6 44 24 16 movzbl 0x16(%r12),%eax 0.00 : 49ac75: 4c 8d 70 fc lea -0x4(%rax),%r14 : * an index, we set the oid. Finally, in the future, we may allow : * users to set their own object ids in order to support a persistent : * object store (objects need to contain pointers to one another). : */ : if (!OidIsValid(HeapTupleGetOid(tup))) : HeapTupleSetOid(tup, GetNewOid(relation)); 0.00 : 49ac79: 44 89 45 d0 mov %r8d,-0x30(%rbp) 0.00 : 49ac7d: 44 89 4d c8 mov %r9d,-0x38(%rbp) 0.00 : 49ac81: 4c 89 ef mov %r13,%rdi 0.00 : 49ac84: e8 e7 81 04 00 callq 4e2e70 0.00 : 49ac89: 43 89 04 34 mov %eax,(%r12,%r14,1) 0.00 : 49ac8d: 4c 8b 63 10 mov 0x10(%rbx),%r12 0.00 : 49ac91: 44 8b 45 d0 mov -0x30(%rbp),%r8d 0.00 : 49ac95: 44 8b 4d c8 mov -0x38(%rbp),%r9d 0.00 : 49ac99: 41 0f b7 54 24 14 movzwl 0x14(%r12),%edx 0.00 : 49ac9f: e9 fc fe ff ff jmpq 49aba0 0.00 : 49aca4: 0f 1f 40 00 nopl 0x0(%rax) : * creation, the backend program sets oids for tuples. When we define : * an index, we set the oid. Finally, in the future, we may allow : * users to set their own object ids in order to support a persistent : * object store (objects need to contain pointers to one another). : */ : if (!OidIsValid(HeapTupleGetOid(tup))) 0.00 : 49aca8: 41 0f b6 44 24 16 movzbl 0x16(%r12),%eax 0.00 : 49acae: 45 8b 5c 04 fc mov -0x4(%r12,%rax,1),%r11d 0.00 : 49acb3: 4c 8d 70 fc lea -0x4(%rax),%r14 0.00 : 49acb7: 45 85 db test %r11d,%r11d 0.00 : 49acba: 74 bd je 49ac79 0.00 : 49acbc: e9 df fe ff ff jmpq 49aba0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 13.02 ??:0 10.06 ??:0 8.88 ??:0 4.73 ??:0 4.73 ??:0 4.14 ??:0 4.14 ??:0 4.14 ??:0 3.55 ??:0 3.55 ??:0 3.55 ??:0 3.55 ??:0 3.55 ??:0 2.96 ??:0 2.96 ??:0 2.96 ??:0 2.96 ??:0 2.37 ??:0 2.37 ??:0 2.37 ??:0 1.78 ??:0 1.78 ??:0 1.18 ??:0 1.18 ??:0 1.18 ??:0 1.18 ??:0 0.59 ??:0 0.59 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000039ff0 : ??:0 3.55 : 39ff0: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 3.55 : 39ff5: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) ??:0 13.02 : 39ffa: 44 89 cd mov %r9d,%ebp ??:0 0.59 : 39ffd: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 2.37 : 3a002: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 2.37 : 3a007: 49 89 cc mov %rcx,%r12 0.00 : 3a00a: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 1.18 : 3a00f: 48 83 ec 28 sub $0x28,%rsp 4.14 : 3a013: 48 81 fe 02 fc ff ff cmp $0xfffffffffffffc02,%rsi 4.14 : 3a01a: 49 89 fd mov %rdi,%r13 0.00 : 3a01d: 41 89 d6 mov %edx,%r14d 1.18 : 3a020: 4c 89 c1 mov %r8,%rcx 4.14 : 3a023: 7d 5b jge 3a080 0.00 : 3a025: 48 81 fe cd fb ff ff cmp $0xfffffffffffffbcd,%rsi 0.00 : 3a02c: 0f 8c 9e 00 00 00 jl 3a0d0 0.00 : 3a032: b8 01 00 00 00 mov $0x1,%eax 0.00 : 3a037: 48 c7 c3 02 fc ff ff mov $0xfffffffffffffc02,%rbx 0.00 : 3a03e: 48 d3 e0 shl %cl,%rax 0.00 : 3a041: 48 29 f3 sub %rsi,%rbx 0.00 : 3a044: 48 83 e8 01 sub $0x1,%rax 0.00 : 3a048: 4c 85 e0 test %r12,%rax 0.00 : 3a04b: 0f 95 c0 setne %al 0.00 : 3a04e: 0f b6 c0 movzbl %al,%eax 0.00 : 3a051: 09 c5 or %eax,%ebp 0.00 : 3a053: 48 83 fb 35 cmp $0x35,%rbx 0.00 : 3a057: 0f 84 93 00 00 00 je 3a0f0 0.00 : 3a05d: 89 d9 mov %ebx,%ecx 0.00 : 3a05f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3a064: 48 89 fe mov %rdi,%rsi 0.00 : 3a067: 4c 8b 27 mov (%rdi),%r12 0.00 : 3a06a: e8 91 85 00 00 callq 42600 <__mpn_rshift> 0.00 : 3a06f: 8d 4b ff lea -0x1(%rbx),%ecx 0.00 : 3a072: e9 92 00 00 00 jmpq 3a109 0.00 : 3a077: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a07e: 00 00 1.78 : 3a080: 48 81 fe 00 04 00 00 cmp $0x400,%rsi 0.00 : 3a087: 0f 8e 9a 00 00 00 jle 3a127 0.00 : 3a08d: 45 85 f6 test %r14d,%r14d 0.00 : 3a090: 75 2e jne 3a0c0 0.00 : 3a092: f2 0f 10 05 8e 99 10 movsd 0x10998e(%rip),%xmm0 # 143a28 0.00 : 3a099: 00 0.00 : 3a09a: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 3a09e: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 3a0a3: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 3a0a8: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 3a0ad: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 3a0b2: 48 83 c4 28 add $0x28,%rsp 0.00 : 3a0b6: c3 retq 0.00 : 3a0b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a0be: 00 00 0.00 : 3a0c0: f2 0f 10 05 98 99 10 movsd 0x109998(%rip),%xmm0 # 143a60 0.00 : 3a0c7: 00 0.00 : 3a0c8: eb d0 jmp 3a09a 0.00 : 3a0ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a0d0: 48 8b 15 61 7d 33 00 mov 0x337d61(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3a0d7: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3a0de: 00 00 0.00 : 3a0e0: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 3a0e4: c7 04 10 21 00 00 00 movl $0x21,(%rax,%rdx,1) 0.00 : 3a0eb: eb ad jmp 3a09a 0.00 : 3a0ed: 0f 1f 00 nopl (%rax) 0.00 : 3a0f0: 4c 8b 27 mov (%rdi),%r12 0.00 : 3a0f3: 31 c0 xor %eax,%eax 0.00 : 3a0f5: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) 0.00 : 3a0fc: b9 34 00 00 00 mov $0x34,%ecx 0.00 : 3a101: 4d 85 e4 test %r12,%r12 0.00 : 3a104: 0f 95 c0 setne %al 0.00 : 3a107: 09 c5 or %eax,%ebp 0.00 : 3a109: 48 8b 15 28 7d 33 00 mov 0x337d28(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3a110: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 3a117: 00 00 0.00 : 3a119: 48 c7 c6 01 fc ff ff mov $0xfffffffffffffc01,%rsi 0.00 : 3a120: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 4.73 : 3a127: 4c 89 e0 mov %r12,%rax 0.00 : 3a12a: 89 f7 mov %esi,%edi 0.00 : 3a12c: 48 d3 e8 shr %cl,%rax 2.96 : 3a12f: a8 01 test $0x1,%al 0.00 : 3a131: 74 2e je 3a161 2.37 : 3a133: 85 ed test %ebp,%ebp 0.00 : 3a135: 74 59 je 3a190 1.78 : 3a137: 49 8b 55 00 mov 0x0(%r13),%rdx 3.55 : 3a13b: 48 83 c2 01 add $0x1,%rdx 3.55 : 3a13f: 48 b8 00 00 00 00 00 movabs $0x20000000000000,%rax 0.00 : 3a146: 00 20 00 0.00 : 3a149: 48 85 c2 test %rax,%rdx 1.18 : 3a14c: 49 89 55 00 mov %rdx,0x0(%r13) 3.55 : 3a150: 75 5e jne 3a1b0 0.00 : 3a152: 48 81 fe 01 fc ff ff cmp $0xfffffffffffffc01,%rsi 0.00 : 3a159: 89 f7 mov %esi,%edi 0.00 : 3a15b: 0f 84 8f 00 00 00 je 3a1f0 ??:0 10.06 : 3a161: 44 89 f2 mov %r14d,%edx 8.88 : 3a164: 89 fe mov %edi,%esi 0.00 : 3a166: 48 8b 1c 24 mov (%rsp),%rbx ??:0 2.96 : 3a16a: 4c 89 ef mov %r13,%rdi 4.73 : 3a16d: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 2.96 : 3a172: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 1.18 : 3a177: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 2.96 : 3a17c: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.59 : 3a181: 48 83 c4 28 add $0x28,%rsp 0.00 : 3a185: e9 c6 95 00 00 jmpq 43750 <__mpn_construct_double> 0.00 : 3a18a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 3a190: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 3a194: f6 c2 01 test $0x1,%dl 0.00 : 3a197: 75 a2 jne 3a13b 0.00 : 3a199: b8 01 00 00 00 mov $0x1,%eax 0.00 : 3a19e: 48 d3 e0 shl %cl,%rax 0.00 : 3a1a1: 48 83 e8 01 sub $0x1,%rax 0.00 : 3a1a5: 4c 85 e0 test %r12,%rax 0.00 : 3a1a8: 74 b7 je 3a161 0.00 : 3a1aa: eb 8f jmp 3a13b 0.00 : 3a1ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 3a1b0: 48 8d 5e 01 lea 0x1(%rsi),%rbx 0.00 : 3a1b4: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 3a1b9: ba 01 00 00 00 mov $0x1,%edx 0.00 : 3a1be: 4c 89 ee mov %r13,%rsi 0.00 : 3a1c1: 4c 89 ef mov %r13,%rdi 0.00 : 3a1c4: e8 37 84 00 00 callq 42600 <__mpn_rshift> 0.00 : 3a1c9: 48 b8 00 00 00 00 00 movabs $0x10000000000000,%rax 0.00 : 3a1d0: 00 10 00 0.00 : 3a1d3: 49 09 45 00 or %rax,0x0(%r13) 0.00 : 3a1d7: 48 81 fb 01 04 00 00 cmp $0x401,%rbx 0.00 : 3a1de: 0f 84 a9 fe ff ff je 3a08d 0.00 : 3a1e4: 89 df mov %ebx,%edi 0.00 : 3a1e6: e9 76 ff ff ff jmpq 3a161 0.00 : 3a1eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3a1f0: 48 b8 00 00 00 00 00 movabs $0x10000000000000,%rax 0.00 : 3a1f7: 00 10 00 0.00 : 3a1fa: 48 21 c2 and %rax,%rdx 0.00 : 3a1fd: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 3a201: 19 ff sbb %edi,%edi 0.00 : 3a203: 81 ef fe 03 00 00 sub $0x3fe,%edi 0.00 : 3a209: e9 53 ff ff ff jmpq 3a161 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 51.81 ??:0 17.47 ??:0 9.04 ??:0 5.42 ??:0 4.82 ??:0 4.82 ??:0 4.22 ??:0 1.20 ??:0 1.20 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000080bb0 <__GI_strlen>: 0.00 : 80bb0: 66 0f ef d2 pxor %xmm2,%xmm2 0.00 : 80bb4: 48 89 f9 mov %rdi,%rcx ??:0 4.22 : 80bb7: 49 89 f8 mov %rdi,%r8 1.20 : 80bba: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 1.20 : 80bbe: 66 0f 6f ca movdqa %xmm2,%xmm1 0.00 : 80bc2: 66 0f 74 17 pcmpeqb (%rdi),%xmm2 ??:0 51.81 : 80bc6: 83 ce ff or $0xffffffff,%esi 0.00 : 80bc9: 48 29 f9 sub %rdi,%rcx 0.00 : 80bcc: d3 e6 shl %cl,%esi 5.42 : 80bce: 66 0f d7 d2 pmovmskb %xmm2,%edx ??:0 4.82 : 80bd2: 21 f2 and %esi,%edx 0.00 : 80bd4: 75 15 jne 80beb <__GI_strlen+0x3b> 0.00 : 80bd6: 66 0f 6f 47 10 movdqa 0x10(%rdi),%xmm0 0.00 : 80bdb: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 80bdf: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 80be3: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 80be7: 85 d2 test %edx,%edx 0.00 : 80be9: 74 eb je 80bd6 <__GI_strlen+0x26> 4.82 : 80beb: 4c 29 c7 sub %r8,%rdi 0.00 : 80bee: 0f bc c2 bsf %edx,%eax ??:0 26.51 : 80bf1: 48 01 f8 add %rdi,%rax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 21.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:276 18.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:276 17.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:272 15.48 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:270 11.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:267 9.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:276 2.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:267 2.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:267 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:267 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:272 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cc7d0 : : /* : * strtoi --- just like strtol, but returns int not long : */ : static int : strtoi(const char *nptr, char **endptr, int base) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:267 2.58 : 6cc7d0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:267 11.61 : 6cc7d1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:267 0.65 : 6cc7d4: 53 push %rbx 2.58 : 6cc7d5: 48 83 ec 08 sub $0x8,%rsp : long val; : : val = strtol(nptr, endptr, base); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:270 15.48 : 6cc7d9: e8 b2 d3 d9 ff callq 469b90 : #ifdef HAVE_LONG_INT_64 : if (val != (long) ((int32) val)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:272 17.42 : 6cc7de: 48 63 d0 movslq %eax,%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:272 0.65 : 6cc7e1: 89 c3 mov %eax,%ebx 0.00 : 6cc7e3: 48 39 d0 cmp %rdx,%rax 0.00 : 6cc7e6: 74 0b je 6cc7f3 : errno = ERANGE; 0.00 : 6cc7e8: e8 d3 d4 d9 ff callq 469cc0 <__errno_location@plt> 0.00 : 6cc7ed: c7 00 22 00 00 00 movl $0x22,(%rax) : #endif : return (int) val; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datetime.c:276 18.71 : 6cc7f3: 89 d8 mov %ebx,%eax 0.00 : 6cc7f5: 48 83 c4 08 add $0x8,%rsp 0.00 : 6cc7f9: 5b pop %rbx 30.32 : 6cc7fa: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.99 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:881 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1440 5.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:871 5.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 5.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:869 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1178 3.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:885 3.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:885 2.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:902 2.60 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1159 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 1.95 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:917 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:848 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:848 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:772 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:949 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:994 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1178 1.30 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:979 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:848 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:825 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:771 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:869 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:869 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:869 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:881 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:883 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:885 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:885 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:896 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:897 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:897 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:905 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:994 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:994 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:902 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1181 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:975 0.65 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:979 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000784050 : : hash_search_with_hash_value(HTAB *hashp, : const void *keyPtr, : uint32 hashvalue, : HASHACTION action, : bool *foundPtr) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:824 0.65 : 784050: 55 push %rbp 0.65 : 784051: 48 89 e5 mov %rsp,%rbp 0.65 : 784054: 41 57 push %r15 1.95 : 784056: 41 89 d7 mov %edx,%r15d 0.00 : 784059: 41 56 push %r14 0.00 : 78405b: 49 89 fe mov %rdi,%r14 0.65 : 78405e: 41 55 push %r13 0.00 : 784060: 41 54 push %r12 0.00 : 784062: 53 push %rbx 0.65 : 784063: 48 83 ec 68 sub $0x68,%rsp 0.00 : 784067: 89 8d 7c ff ff ff mov %ecx,-0x84(%rbp) 0.00 : 78406d: 48 89 75 80 mov %rsi,-0x80(%rbp) 0.65 : 784071: 4c 89 85 70 ff ff ff mov %r8,-0x90(%rbp) : HASHHDR *hctl = hashp->hctl; 0.00 : 784078: 48 8b 07 mov (%rdi),%rax : * NOTE: failure to expand table is not a fatal error, it just means we : * have to run at higher fill factor than we wanted. However, if we're : * using the palloc allocator then it will throw error anyway on : * out-of-memory, so we must do this before modifying the table. : */ : if (action == HASH_ENTER || action == HASH_ENTER_NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:848 1.30 : 78407b: 83 f9 03 cmp $0x3,%ecx 0.00 : 78407e: 0f 94 45 8f sete -0x71(%rbp) 0.65 : 784082: 83 e9 01 sub $0x1,%ecx : const void *keyPtr, : uint32 hashvalue, : HASHACTION action, : bool *foundPtr) : { : HASHHDR *hctl = hashp->hctl; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:825 0.65 : 784085: 48 89 45 90 mov %rax,-0x70(%rbp) : * NOTE: failure to expand table is not a fatal error, it just means we : * have to run at higher fill factor than we wanted. However, if we're : * using the palloc allocator then it will throw error anyway on : * out-of-memory, so we must do this before modifying the table. : */ : if (action == HASH_ENTER || action == HASH_ENTER_NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:848 1.30 : 784089: 0f 84 d9 00 00 00 je 784168 0.00 : 78408f: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 784093: 0f 85 cf 00 00 00 jne 784168 : newlink = &currElement->link; : } : } : /* don't forget to terminate the rebuilt hash chains... */ : *oldlink = NULL; : *newlink = NULL; 0.00 : 784099: 8b 70 28 mov 0x28(%rax),%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1440 7.14 : 78409c: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 7840a0: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 7840a4: 4c 8d 68 ff lea -0x1(%rax),%r13 : static inline uint32 : calc_bucket(HASHHDR *hctl, uint32 hash_val) : { : uint32 bucket; : : bucket = hash_val & hctl->high_mask; 0.00 : 7840a8: 48 8b 55 90 mov -0x70(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:771 0.65 : 7840ac: 44 89 fb mov %r15d,%ebx 0.00 : 7840af: 23 5a 2c and 0x2c(%rdx),%ebx : if (bucket > hctl->max_bucket) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:772 1.30 : 7840b2: 39 f3 cmp %esi,%ebx 0.00 : 7840b4: 76 03 jbe 7840b9 : bucket = bucket & hctl->low_mask; 0.00 : 7840b6: 23 5a 30 and 0x30(%rdx),%ebx : bucket = calc_bucket(hctl, hashvalue); : : segment_num = bucket >> hashp->sshift; : segment_ndx = MOD(bucket, hashp->ssize); : : segp = hashp->dir[segment_num]; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:869 5.19 : 7840b9: 89 d8 mov %ebx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:869 0.65 : 7840bb: 49 8b 56 08 mov 0x8(%r14),%rdx 0.65 : 7840bf: d3 e8 shr %cl,%eax 0.65 : 7840c1: 89 c0 mov %eax,%eax 0.00 : 7840c3: 4c 8b 24 c2 mov (%rdx,%rax,8),%r12 : : if (segp == NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:871 5.84 : 7840c7: 4d 85 e4 test %r12,%r12 0.00 : 7840ca: 0f 84 b7 02 00 00 je 784387 : hash_corrupted(hashp); : : prevBucketPtr = &segp[segment_ndx]; 0.00 : 7840d0: 89 d8 mov %ebx,%eax 0.00 : 7840d2: 44 21 e8 and %r13d,%eax : currBucket = *prevBucketPtr; : : /* : * Follow collision chain looking for matching key : */ : match = hashp->match; /* save one fetch in inner loop */ 0.00 : 7840d5: 4d 8b 6e 18 mov 0x18(%r14),%r13 : segp = hashp->dir[segment_num]; : : if (segp == NULL) : hash_corrupted(hashp); : : prevBucketPtr = &segp[segment_ndx]; 0.00 : 7840d9: 4d 8d 24 c4 lea (%r12,%rax,8),%r12 : : /* : * Follow collision chain looking for matching key : */ : match = hashp->match; /* save one fetch in inner loop */ : keysize = hashp->keysize; /* ditto */ /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:881 0.65 : 7840dd: 49 8b 46 48 mov 0x48(%r14),%rax : : if (segp == NULL) : hash_corrupted(hashp); : : prevBucketPtr = &segp[segment_ndx]; : currBucket = *prevBucketPtr; 0.00 : 7840e1: 49 8b 1c 24 mov (%r12),%rbx : : /* : * Follow collision chain looking for matching key : */ : match = hashp->match; /* save one fetch in inner loop */ : keysize = hashp->keysize; /* ditto */ /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:881 9.09 : 7840e5: 48 89 45 98 mov %rax,-0x68(%rbp) : : while (currBucket != NULL) 0.00 : 7840e9: 48 85 db test %rbx,%rbx 0.00 : 7840ec: 75 0d jne 7840fb 0.00 : 7840ee: eb 28 jmp 784118 : { : if (currBucket->hashvalue == hashvalue && : match(ELEMENTKEY(currBucket), keyPtr, keysize) == 0) : break; : prevBucketPtr = &(currBucket->link); 0.00 : 7840f0: 49 89 dc mov %rbx,%r12 : currBucket = *prevBucketPtr; 0.00 : 7840f3: 48 8b 1b mov (%rbx),%rbx : * Follow collision chain looking for matching key : */ : match = hashp->match; /* save one fetch in inner loop */ : keysize = hashp->keysize; /* ditto */ : : while (currBucket != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:883 0.65 : 7840f6: 48 85 db test %rbx,%rbx 0.00 : 7840f9: 74 1d je 784118 : { : if (currBucket->hashvalue == hashvalue && /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:885 0.65 : 7840fb: 44 39 7b 08 cmp %r15d,0x8(%rbx) 3.90 : 7840ff: 90 nop 0.00 : 784100: 75 ee jne 7840f0 0.65 : 784102: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 784106: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 78410a: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.00 : 78410e: 41 ff d5 callq *%r13 3.90 : 784111: 85 c0 test %eax,%eax 0.00 : 784113: 75 db jne 7840f0 0.00 : 784115: 0f 1f 00 nopl (%rax) : hash_collisions++; : hctl->collisions++; : #endif : } : : if (foundPtr) 0.00 : 784118: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 78411f: 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:896 0.65 : 784120: 74 0d je 78412f : *foundPtr = (bool) (currBucket != NULL); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:897 0.65 : 784122: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.65 : 784129: 48 85 db test %rbx,%rbx 0.00 : 78412c: 0f 95 02 setne (%rdx) : : /* : * OK, now what? : */ : switch (action) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:902 2.60 : 78412f: 83 bd 7c ff ff ff 01 cmpl $0x1,-0x84(%rbp) 0.00 : 784136: 0f 84 5c 01 00 00 je 784298 0.00 : 78413c: 0f 83 ee 00 00 00 jae 784230 : { : case HASH_FIND: : if (currBucket != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:905 0.65 : 784142: 48 85 db test %rbx,%rbx 0.00 : 784145: 0f 84 35 02 00 00 je 784380 : /* FALL THRU */ : : case HASH_ENTER: : /* Return existing element if found, else create one */ : if (currBucket != NULL) : return (void *) ELEMENTKEY(currBucket); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:949 1.30 : 78414b: 48 83 c3 10 add $0x10,%rbx : } : : elog(ERROR, "unrecognized hash action code: %d", (int) action); : : return NULL; /* keep compiler quiet */ : } 0.00 : 78414f: 48 83 c4 68 add $0x68,%rsp 0.00 : 784153: 48 89 d8 mov %rbx,%rax 0.00 : 784156: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:994 1.30 : 784157: 41 5c pop %r12 0.65 : 784159: 41 5d pop %r13 0.00 : 78415b: 41 5e pop %r14 0.00 : 78415d: 41 5f pop %r15 0.65 : 78415f: c9 leaveq 0.00 : 784160: c3 retq 0.00 : 784161: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Can't split if running in partitioned mode, nor if frozen, nor if : * table is the subject of any active hash_seq_search scans. Strange : * order of these tests is to try to check cheaper conditions first. : */ : if (!IS_PARTITIONED(hctl) && !hashp->frozen && 0.00 : 784168: 48 8b 55 90 mov -0x70(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 1.30 : 78416c: 48 83 7a 48 00 cmpq $0x0,0x48(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 5.84 : 784171: 0f 85 09 01 00 00 jne 784280 0.00 : 784177: 41 80 7e 42 00 cmpb $0x0,0x42(%r14) 0.00 : 78417c: 0f 85 e6 01 00 00 jne 784368 0.00 : 784182: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 784186: 48 8b 5d 90 mov -0x70(%rbp),%rbx 0.00 : 78418a: 8b 70 28 mov 0x28(%rax),%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 0.65 : 78418d: 8d 56 01 lea 0x1(%rsi),%edx 0.00 : 784190: 41 89 f0 mov %esi,%r8d 0.00 : 784193: 89 55 d4 mov %edx,-0x2c(%rbp) 0.00 : 784196: 41 89 d4 mov %edx,%r12d 0.00 : 784199: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 78419d: 48 89 d0 mov %rdx,%rax 0.00 : 7841a0: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 7841a4: 49 f7 fc idiv %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 12.99 : 7841a7: 48 3b 43 50 cmp 0x50(%rbx),%rax 0.00 : 7841ab: 0f 8c eb fe ff ff jl 78409c : static bool : has_seq_scans(HTAB *hashp) : { : int i; : : for (i = 0; i < num_seq_scans; i++) 0.00 : 7841b1: 8b 3d 09 5a 43 00 mov 0x435a09(%rip),%edi # bb9bc0 0.00 : 7841b7: 85 ff test %edi,%edi 0.00 : 7841b9: 7e 2c jle 7841e7 : { : if (seq_scan_tables[i] == hashp) 0.00 : 7841bb: 31 d2 xor %edx,%edx 0.00 : 7841bd: 4c 3b 35 1c 5a 43 00 cmp 0x435a1c(%rip),%r14 # bb9be0 0.00 : 7841c4: b9 e8 9b bb 00 mov $0xbb9be8,%ecx 0.00 : 7841c9: 75 15 jne 7841e0 0.00 : 7841cb: e9 cc fe ff ff jmpq 78409c 0.00 : 7841d0: 48 8b 01 mov (%rcx),%rax 0.00 : 7841d3: 48 83 c1 08 add $0x8,%rcx 0.00 : 7841d7: 49 39 c6 cmp %rax,%r14 0.00 : 7841da: 0f 84 bc fe ff ff je 78409c : static bool : has_seq_scans(HTAB *hashp) : { : int i; : : for (i = 0; i < num_seq_scans; i++) 0.00 : 7841e0: 83 c2 01 add $0x1,%edx 0.00 : 7841e3: 39 fa cmp %edi,%edx 0.00 : 7841e5: 7c e9 jl 7841d0 : hash_expansions++; : #endif : : new_bucket = hctl->max_bucket + 1; : new_segnum = new_bucket >> hashp->sshift; : new_segndx = MOD(new_bucket, hashp->ssize); 0.00 : 7841e7: 49 8b 46 50 mov 0x50(%r14),%rax : #ifdef HASH_STATISTICS : hash_expansions++; : #endif : : new_bucket = hctl->max_bucket + 1; : new_segnum = new_bucket >> hashp->sshift; 0.00 : 7841eb: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 7841ef: 4c 89 e3 mov %r12,%rbx : new_segndx = MOD(new_bucket, hashp->ssize); 0.00 : 7841f2: 4c 8d 68 ff lea -0x1(%rax),%r13 : : if (new_segnum >= hctl->nsegs) 0.00 : 7841f6: 48 8b 45 90 mov -0x70(%rbp),%rax : #ifdef HASH_STATISTICS : hash_expansions++; : #endif : : new_bucket = hctl->max_bucket + 1; : new_segnum = new_bucket >> hashp->sshift; 0.00 : 7841fa: 48 d3 fb sar %cl,%rbx 0.00 : 7841fd: 48 89 5d c0 mov %rbx,-0x40(%rbp) : new_segndx = MOD(new_bucket, hashp->ssize); : : if (new_segnum >= hctl->nsegs) 0.00 : 784201: 48 3b 58 20 cmp 0x20(%rax),%rbx 0.00 : 784205: 0f 8c 05 02 00 00 jl 784410 : { : /* Allocate new segment if necessary -- could fail if dir full */ : if (new_segnum >= hctl->dsize) 0.00 : 78420b: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 78420f: 48 8b 58 18 mov 0x18(%rax),%rbx 0.00 : 784213: 48 39 5d c0 cmp %rbx,-0x40(%rbp) 0.00 : 784217: 0f 8c 1d 03 00 00 jl 78453a : HASHSEGMENT *old_p; : long new_dsize; : long old_dirsize; : long new_dirsize; : : if (hashp->hctl->max_dsize != NO_MAX_DSIZE) 0.00 : 78421d: 48 83 78 58 ff cmpq $0xffffffffffffffff,0x58(%rax) 0.00 : 784222: 0f 84 4a 03 00 00 je 784572 : hashp->dir = p; : hashp->hctl->dsize = new_dsize; : : /* XXX assume the allocator is palloc, so we know how to free */ : Assert(hashp->alloc == DynaHashAlloc); : pfree(old_p); 0.00 : 784228: 44 89 c6 mov %r8d,%esi 0.00 : 78422b: e9 78 fe ff ff jmpq 7840a8 : *foundPtr = (bool) (currBucket != NULL); : : /* : * OK, now what? : */ : switch (action) 0.00 : 784230: 83 bd 7c ff ff ff 02 cmpl $0x2,-0x84(%rbp) 0.00 : 784237: 0f 84 d6 00 00 00 je 784313 0.00 : 78423d: 83 bd 7c ff ff ff 03 cmpl $0x3,-0x84(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:902 0.65 : 784244: 74 52 je 784298 : */ : : return (void *) ELEMENTKEY(currBucket); : } : : elog(ERROR, "unrecognized hash action code: %d", (int) action); 0.00 : 784246: ba f0 5b 8d 00 mov $0x8d5bf0,%edx 0.00 : 78424b: be df 03 00 00 mov $0x3df,%esi 0.00 : 784250: bf 33 59 8d 00 mov $0x8d5933,%edi 0.00 : 784255: e8 c6 71 ff ff callq 77b420 0.00 : 78425a: 8b 95 7c ff ff ff mov -0x84(%rbp),%edx 0.00 : 784260: be f0 5a 8d 00 mov $0x8d5af0,%esi 0.00 : 784265: bf 14 00 00 00 mov $0x14,%edi 0.00 : 78426a: 31 c0 xor %eax,%eax 0.00 : 78426c: e8 bf 6f ff ff callq 77b230 0.00 : 784271: e8 5a 52 ce ff callq 4694d0 0.00 : 784276: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 78427d: 00 00 00 : /* : * Can't split if running in partitioned mode, nor if frozen, nor if : * table is the subject of any active hash_seq_search scans. Strange : * order of these tests is to try to check cheaper conditions first. : */ : if (!IS_PARTITIONED(hctl) && !hashp->frozen && 0.00 : 784280: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 784284: 8b 72 28 mov 0x28(%rdx),%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:855 4.55 : 784287: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 78428b: 4c 8d 68 ff lea -0x1(%rax),%r13 0.00 : 78428f: e9 14 fe ff ff jmpq 7840a8 0.00 : 784294: 0f 1f 40 00 nopl 0x0(%rax) : Assert(hashp->alloc != DynaHashAlloc); : /* FALL THRU */ : : case HASH_ENTER: : /* Return existing element if found, else create one */ : if (currBucket != NULL) 0.00 : 784298: 48 85 db test %rbx,%rbx 0.00 : 78429b: 0f 85 aa fe ff ff jne 78414b : return (void *) ELEMENTKEY(currBucket); : : /* disallow inserts if frozen */ : if (hashp->frozen) 0.00 : 7842a1: 41 80 7e 42 00 cmpb $0x0,0x42(%r14) 0.00 : 7842a6: 0f 85 a3 03 00 00 jne 78464f : */ : static HASHBUCKET : get_hash_entry(HTAB *hashp) : { : /* use volatile pointer to prevent code rearrangement */ : volatile HASHHDR *hctlv = hashp->hctl; 0.00 : 7842ac: 49 8b 1e mov (%r14),%rbx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 7842af: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 7842b5: eb 35 jmp 7842ec 0.00 : 7842b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7842be: 00 00 : /* if partitioned, must lock to touch nentries and freeList */ : if (IS_PARTITIONED(hctlv)) : SpinLockAcquire(&hctlv->mutex); : : /* try to get an entry from the freelist */ : newElement = hctlv->freeList; 0.00 : 7842c0: 48 8b 53 10 mov 0x10(%rbx),%rdx : if (newElement != NULL) 0.00 : 7842c4: 48 85 d2 test %rdx,%rdx 0.00 : 7842c7: 0f 85 04 02 00 00 jne 7844d1 : break; : : /* no free elements. allocate another chunk of buckets */ : if (IS_PARTITIONED(hctlv)) 0.00 : 7842cd: 48 8b 43 48 mov 0x48(%rbx),%rax 0.00 : 7842d1: 48 85 c0 test %rax,%rax 0.00 : 7842d4: 74 03 je 7842d9 : SpinLockRelease(&hctlv->mutex); 0.00 : 7842d6: c6 03 00 movb $0x0,(%rbx) : : if (!element_alloc(hashp, hctlv->nelem_alloc)) 0.00 : 7842d9: 8b 73 6c mov 0x6c(%rbx),%esi 0.00 : 7842dc: 4c 89 f7 mov %r14,%rdi 0.00 : 7842df: e8 dc fb ff ff callq 783ec0 0.00 : 7842e4: 84 c0 test %al,%al 0.00 : 7842e6: 0f 84 be 00 00 00 je 7843aa : HASHBUCKET newElement; : : for (;;) : { : /* if partitioned, must lock to touch nentries and freeList */ : if (IS_PARTITIONED(hctlv)) 0.00 : 7842ec: 48 8b 43 48 mov 0x48(%rbx),%rax 0.00 : 7842f0: 48 85 c0 test %rax,%rax 0.00 : 7842f3: 74 cb je 7842c0 0.00 : 7842f5: 44 89 e8 mov %r13d,%eax 0.00 : 7842f8: f0 86 03 lock xchg %al,(%rbx) : SpinLockAcquire(&hctlv->mutex); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1159 2.60 : 7842fb: 84 c0 test %al,%al 0.00 : 7842fd: 74 c1 je 7842c0 0.00 : 7842ff: ba 87 04 00 00 mov $0x487,%edx 0.00 : 784304: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 784309: 48 89 df mov %rbx,%rdi 0.00 : 78430c: e8 2f bd f0 ff callq 690040 0.00 : 784311: eb ad jmp 7842c0 : if (currBucket != NULL) : return (void *) ELEMENTKEY(currBucket); : return NULL; : : case HASH_REMOVE: : if (currBucket != NULL) 0.00 : 784313: 48 85 db test %rbx,%rbx 0.00 : 784316: 74 68 je 784380 : { : /* use volatile pointer to prevent code rearrangement */ : volatile HASHHDR *hctlv = hctl; : : /* if partitioned, must lock to touch nentries and freeList */ : if (IS_PARTITIONED(hctlv)) 0.00 : 784318: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 78431c: 48 8b 42 48 mov 0x48(%rdx),%rax 0.00 : 784320: 48 85 c0 test %rax,%rax 0.00 : 784323: 74 0c je 784331 0.00 : 784325: b8 01 00 00 00 mov $0x1,%eax 0.00 : 78432a: f0 86 02 lock xchg %al,(%rdx) : SpinLockAcquire(&hctlv->mutex); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:917 1.95 : 78432d: 84 c0 test %al,%al 0.00 : 78432f: 75 64 jne 784395 : : Assert(hctlv->nentries > 0); : hctlv->nentries--; 0.00 : 784331: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 784335: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 784339: 48 83 e8 01 sub $0x1,%rax 0.00 : 78433d: 48 89 42 08 mov %rax,0x8(%rdx) : : /* remove record from hash bucket's chain. */ : *prevBucketPtr = currBucket->link; 0.00 : 784341: 48 8b 03 mov (%rbx),%rax 0.00 : 784344: 49 89 04 24 mov %rax,(%r12) : : /* add the record to the freelist for this table. */ : currBucket->link = hctlv->freeList; 0.00 : 784348: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 78434c: 48 89 03 mov %rax,(%rbx) : hctlv->freeList = currBucket; 0.00 : 78434f: 48 89 5a 10 mov %rbx,0x10(%rdx) : : if (IS_PARTITIONED(hctlv)) 0.00 : 784353: 48 8b 42 48 mov 0x48(%rdx),%rax 0.00 : 784357: 48 85 c0 test %rax,%rax 0.00 : 78435a: 0f 84 eb fd ff ff je 78414b : SpinLockRelease(&hctlv->mutex); 0.00 : 784360: c6 02 00 movb $0x0,(%rdx) 0.00 : 784363: e9 e3 fd ff ff jmpq 78414b : /* : * Can't split if running in partitioned mode, nor if frozen, nor if : * table is the subject of any active hash_seq_search scans. Strange : * order of these tests is to try to check cheaper conditions first. : */ : if (!IS_PARTITIONED(hctl) && !hashp->frozen && 0.00 : 784368: 48 8b 5d 90 mov -0x70(%rbp),%rbx 0.00 : 78436c: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 784370: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 784374: 8b 73 28 mov 0x28(%rbx),%esi 0.00 : 784377: 4c 8d 68 ff lea -0x1(%rax),%r13 0.00 : 78437b: e9 28 fd ff ff jmpq 7840a8 : */ : : return (void *) ELEMENTKEY(currBucket); : } : : elog(ERROR, "unrecognized hash action code: %d", (int) action); 0.00 : 784380: 31 db xor %ebx,%ebx 0.00 : 784382: e9 c8 fd ff ff jmpq 78414f : segment_ndx = MOD(bucket, hashp->ssize); : : segp = hashp->dir[segment_num]; : : if (segp == NULL) : hash_corrupted(hashp); 0.00 : 784387: 4c 89 f7 mov %r14,%rdi 0.00 : 78438a: e8 01 f8 ff ff callq 783b90 0.00 : 78438f: 90 nop 0.00 : 784390: e9 3b fd ff ff jmpq 7840d0 : /* use volatile pointer to prevent code rearrangement */ : volatile HASHHDR *hctlv = hctl; : : /* if partitioned, must lock to touch nentries and freeList */ : if (IS_PARTITIONED(hctlv)) : SpinLockAcquire(&hctlv->mutex); 0.00 : 784395: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 784399: ba 95 03 00 00 mov $0x395,%edx 0.00 : 78439e: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 7843a3: e8 98 bc f0 ff callq 690040 0.00 : 7843a8: eb 87 jmp 784331 : : currBucket = get_hash_entry(hashp); : if (currBucket == NULL) : { : /* out of memory */ : if (action == HASH_ENTER_NULL) 0.00 : 7843aa: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 7843ae: 75 d0 jne 784380 : return NULL; : /* report a generic message */ : if (hashp->isshared) 0.00 : 7843b0: 41 80 7e 40 00 cmpb $0x0,0x40(%r14) 0.00 : 7843b5: 0f 1f 00 nopl (%rax) 0.00 : 7843b8: 0f 84 4a 02 00 00 je 784608 : ereport(ERROR, 0.00 : 7843be: 45 31 c0 xor %r8d,%r8d 0.00 : 7843c1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 7843c6: b9 f0 5b 8d 00 mov $0x8d5bf0,%ecx 0.00 : 7843cb: ba c6 03 00 00 mov $0x3c6,%edx 0.00 : 7843d0: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 7843d5: e8 e6 66 ff ff callq 77aac0 0.00 : 7843da: 84 c0 test %al,%al 0.00 : 7843dc: bf 47 ba 8a 00 mov $0x8aba47,%edi 0.00 : 7843e1: 0f 84 8a fe ff ff je 784271 : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of shared memory"))); : else : ereport(ERROR, 0.00 : 7843e7: 31 c0 xor %eax,%eax 0.00 : 7843e9: e8 b2 84 ff ff callq 77c8a0 0.00 : 7843ee: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 7843f3: 89 c3 mov %eax,%ebx 0.00 : 7843f5: e8 56 89 ff ff callq 77cd50 0.00 : 7843fa: 89 de mov %ebx,%esi 0.00 : 7843fc: 89 c7 mov %eax,%edi 0.00 : 7843fe: 31 c0 xor %eax,%eax 0.00 : 784400: e8 db 61 ff ff callq 77a5e0 0.00 : 784405: e9 67 fe ff ff jmpq 784271 0.00 : 78440a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : new_bucket = hctl->max_bucket + 1; : new_segnum = new_bucket >> hashp->sshift; : new_segndx = MOD(new_bucket, hashp->ssize); : : if (new_segnum >= hctl->nsegs) 0.00 : 784410: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 784413: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 784417: 48 89 5d c8 mov %rbx,-0x38(%rbp) : return false; : hctl->nsegs++; : } : : /* OK, we created a new bucket */ : hctl->max_bucket++; 0.00 : 78441b: 48 8b 5d 90 mov -0x70(%rbp),%rbx : * *Before* changing masks, find old bucket corresponding to same hash : * values; values in that bucket may need to be relocated to new bucket. : * Note that new_bucket is certainly larger than low_mask at this point, : * so we can skip the first step of the regular hash mask calc. : */ : old_bucket = (new_bucket & hctl->low_mask); 0.00 : 78441f: 4d 89 e1 mov %r12,%r9 : return false; : hctl->nsegs++; : } : : /* OK, we created a new bucket */ : hctl->max_bucket++; 0.00 : 784422: 89 43 28 mov %eax,0x28(%rbx) : * *Before* changing masks, find old bucket corresponding to same hash : * values; values in that bucket may need to be relocated to new bucket. : * Note that new_bucket is certainly larger than low_mask at this point, : * so we can skip the first step of the regular hash mask calc. : */ : old_bucket = (new_bucket & hctl->low_mask); 0.00 : 784425: 8b 43 30 mov 0x30(%rbx),%eax 0.00 : 784428: 49 21 c1 and %rax,%r9 : : /* : * If we crossed a power of 2, readjust masks. : */ : if ((uint32) new_bucket > hctl->high_mask) 0.00 : 78442b: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : 78442e: 39 45 d4 cmp %eax,-0x2c(%rbp) 0.00 : 784431: 76 0c jbe 78443f : { : hctl->low_mask = hctl->high_mask; 0.00 : 784433: 89 43 30 mov %eax,0x30(%rbx) : hctl->high_mask = (uint32) new_bucket | hctl->low_mask; 0.00 : 784436: 09 45 d4 or %eax,-0x2c(%rbp) 0.00 : 784439: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 78443c: 89 43 2c mov %eax,0x2c(%rbx) : old_segndx = MOD(old_bucket, hashp->ssize); : : old_seg = hashp->dir[old_segnum]; : new_seg = hashp->dir[new_segnum]; : : oldlink = &old_seg[old_segndx]; 0.00 : 78443f: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 784443: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 784447: 4c 89 ca mov %r9,%rdx : * that might not be true! : */ : old_segnum = old_bucket >> hashp->sshift; : old_segndx = MOD(old_bucket, hashp->ssize); : : old_seg = hashp->dir[old_segnum]; 0.00 : 78444a: 49 8b 76 08 mov 0x8(%r14),%rsi : new_seg = hashp->dir[new_segnum]; : : oldlink = &old_seg[old_segndx]; : newlink = &new_seg[new_segndx]; 0.00 : 78444e: 4d 21 ec and %r13,%r12 0.00 : 784451: 4a 8d 3c e5 00 00 00 lea 0x0(,%r12,8),%rdi 0.00 : 784458: 00 : old_segndx = MOD(old_bucket, hashp->ssize); : : old_seg = hashp->dir[old_segnum]; : new_seg = hashp->dir[new_segnum]; : : oldlink = &old_seg[old_segndx]; 0.00 : 784459: 48 83 e8 01 sub $0x1,%rax 0.00 : 78445d: 48 d3 fa sar %cl,%rdx 0.00 : 784460: 4c 21 c8 and %r9,%rax 0.00 : 784463: 4c 8d 04 c5 00 00 00 lea 0x0(,%rax,8),%r8 0.00 : 78446a: 00 0.00 : 78446b: 4c 03 04 d6 add (%rsi,%rdx,8),%r8 : newlink = &new_seg[new_segndx]; 0.00 : 78446f: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 784473: 48 03 3c 16 add (%rsi,%rdx,1),%rdi : : for (currElement = *oldlink; 0.00 : 784477: 49 8b 10 mov (%r8),%rdx : currElement != NULL; 0.00 : 78447a: 48 85 d2 test %rdx,%rdx 0.00 : 78447d: 75 17 jne 784496 0.00 : 78447f: eb 39 jmp 7844ba 0.00 : 784481: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : *oldlink = currElement; : oldlink = &currElement->link; : } : else : { : *newlink = currElement; 0.00 : 784488: 48 89 17 mov %rdx,(%rdi) : newlink = &currElement->link; 0.00 : 78448b: 48 89 d7 mov %rdx,%rdi : : oldlink = &old_seg[old_segndx]; : newlink = &new_seg[new_segndx]; : : for (currElement = *oldlink; : currElement != NULL; 0.00 : 78448e: 48 85 c9 test %rcx,%rcx 0.00 : 784491: 74 27 je 7844ba 0.00 : 784493: 48 89 ca mov %rcx,%rdx : static inline uint32 : calc_bucket(HASHHDR *hctl, uint32 hash_val) : { : uint32 bucket; : : bucket = hash_val & hctl->high_mask; 0.00 : 784496: 48 8b 5d 90 mov -0x70(%rbp),%rbx : : for (currElement = *oldlink; : currElement != NULL; : currElement = nextElement) : { : nextElement = currElement->link; 0.00 : 78449a: 48 8b 0a mov (%rdx),%rcx : static inline uint32 : calc_bucket(HASHHDR *hctl, uint32 hash_val) : { : uint32 bucket; : : bucket = hash_val & hctl->high_mask; 0.00 : 78449d: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : 7844a0: 23 42 08 and 0x8(%rdx),%eax : if (bucket > hctl->max_bucket) 0.00 : 7844a3: 3b 43 28 cmp 0x28(%rbx),%eax 0.00 : 7844a6: 76 03 jbe 7844ab : bucket = bucket & hctl->low_mask; 0.00 : 7844a8: 23 43 30 and 0x30(%rbx),%eax : for (currElement = *oldlink; : currElement != NULL; : currElement = nextElement) : { : nextElement = currElement->link; : if ((long) calc_bucket(hctl, currElement->hashvalue) == old_bucket) 0.00 : 7844ab: 89 c0 mov %eax,%eax 0.00 : 7844ad: 49 39 c1 cmp %rax,%r9 0.00 : 7844b0: 75 d6 jne 784488 : { : *oldlink = currElement; 0.00 : 7844b2: 49 89 10 mov %rdx,(%r8) : oldlink = &currElement->link; 0.00 : 7844b5: 49 89 d0 mov %rdx,%r8 0.00 : 7844b8: eb d4 jmp 78448e : *newlink = currElement; : newlink = &currElement->link; : } : } : /* don't forget to terminate the rebuilt hash chains... */ : *oldlink = NULL; 0.00 : 7844ba: 49 c7 00 00 00 00 00 movq $0x0,(%r8) : *newlink = NULL; 0.00 : 7844c1: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) 0.00 : 7844c8: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 7844cc: e9 c8 fb ff ff jmpq 784099 : return NULL; : } : } : : /* remove entry from freelist, bump nentries */ : hctlv->freeList = newElement->link; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1178 1.30 : 7844d1: 48 8b 02 mov (%rdx),%rax 4.55 : 7844d4: 48 89 43 10 mov %rax,0x10(%rbx) : hctlv->nentries++; 0.00 : 7844d8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7844dc: 48 83 c0 01 add $0x1,%rax 0.00 : 7844e0: 48 89 43 08 mov %rax,0x8(%rbx) : : if (IS_PARTITIONED(hctlv)) 0.00 : 7844e4: 48 8b 43 48 mov 0x48(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:1181 0.65 : 7844e8: 48 85 c0 test %rax,%rax 0.00 : 7844eb: 74 03 je 7844f0 : SpinLockRelease(&hctlv->mutex); 0.00 : 7844ed: c6 03 00 movb $0x0,(%rbx) : *prevBucketPtr = currBucket; : currBucket->link = NULL; : : /* copy key into record */ : currBucket->hashvalue = hashvalue; : hashp->keycopy(ELEMENTKEY(currBucket), keyPtr, keysize); 0.00 : 7844f0: 48 8d 5a 10 lea 0x10(%rdx),%rbx : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : } : : /* link into hashbucket chain */ : *prevBucketPtr = currBucket; 0.00 : 7844f4: 49 89 14 24 mov %rdx,(%r12) : currBucket->link = NULL; : : /* copy key into record */ : currBucket->hashvalue = hashvalue; 0.00 : 7844f8: 44 89 7a 08 mov %r15d,0x8(%rdx) : errmsg("out of memory"))); : } : : /* link into hashbucket chain */ : *prevBucketPtr = currBucket; : currBucket->link = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:975 0.65 : 7844fc: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) : : /* copy key into record */ : currBucket->hashvalue = hashvalue; : hashp->keycopy(ELEMENTKEY(currBucket), keyPtr, keysize); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:979 1.30 : 784503: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 784507: 48 8b 75 80 mov -0x80(%rbp),%rsi 0.65 : 78450b: 48 89 df mov %rbx,%rdi 0.00 : 78450e: 41 ff 56 20 callq *0x20(%r14) : } : : elog(ERROR, "unrecognized hash action code: %d", (int) action); : : return NULL; /* keep compiler quiet */ : } 0.00 : 784512: e9 38 fc ff ff jmpq 78414f : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); : : if (p != NULL) : { : memcpy(p, old_p, old_dirsize); : MemSet(((char *) p) + old_dirsize, 0, new_dirsize - old_dirsize); 0.00 : 784517: 31 f6 xor %esi,%esi 0.00 : 784519: e8 02 4f ce ff callq 469420 : hashp->dir = p; 0.00 : 78451e: 48 8b 45 a8 mov -0x58(%rbp),%rax : hashp->hctl->dsize = new_dsize; 0.00 : 784522: 48 8b 55 b8 mov -0x48(%rbp),%rdx : : if (p != NULL) : { : memcpy(p, old_p, old_dirsize); : MemSet(((char *) p) + old_dirsize, 0, new_dirsize - old_dirsize); : hashp->dir = p; 0.00 : 784526: 49 89 46 08 mov %rax,0x8(%r14) : hashp->hctl->dsize = new_dsize; 0.00 : 78452a: 49 8b 06 mov (%r14),%rax 0.00 : 78452d: 48 89 50 18 mov %rdx,0x18(%rax) : : /* XXX assume the allocator is palloc, so we know how to free */ : Assert(hashp->alloc == DynaHashAlloc); : pfree(old_p); 0.00 : 784531: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 784535: e8 46 46 01 00 callq 798b80 : { : /* Allocate new segment if necessary -- could fail if dir full */ : if (new_segnum >= hctl->dsize) : if (!dir_realloc(hashp)) : return false; : if (!(hashp->dir[new_segnum] = seg_alloc(hashp))) 0.00 : 78453a: 48 8b 5d c0 mov -0x40(%rbp),%rbx 0.00 : 78453e: 4c 89 f7 mov %r14,%rdi 0.00 : 784541: 48 c1 e3 03 shl $0x3,%rbx 0.00 : 784545: 48 89 5d c8 mov %rbx,-0x38(%rbp) 0.00 : 784549: 49 03 5e 08 add 0x8(%r14),%rbx 0.00 : 78454d: e8 7e fa ff ff callq 783fd0 0.00 : 784552: 48 85 c0 test %rax,%rax 0.00 : 784555: 48 89 03 mov %rax,(%rbx) 0.00 : 784558: 0f 84 1f 01 00 00 je 78467d : return false; : hctl->nsegs++; 0.00 : 78455e: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 784562: 8b 42 28 mov 0x28(%rdx),%eax 0.00 : 784565: 48 83 42 20 01 addq $0x1,0x20(%rdx) 0.00 : 78456a: 83 c0 01 add $0x1,%eax 0.00 : 78456d: e9 a9 fe ff ff jmpq 78441b : : if (hashp->hctl->max_dsize != NO_MAX_DSIZE) : return false; : : /* Reallocate directory */ : new_dsize = hashp->hctl->dsize << 1; 0.00 : 784572: 48 8d 14 1b lea (%rbx,%rbx,1),%rdx : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); : new_dirsize = new_dsize * sizeof(HASHSEGMENT); 0.00 : 784576: 48 89 d8 mov %rbx,%rax 0.00 : 784579: 48 c1 e0 04 shl $0x4,%rax 0.00 : 78457d: 48 89 45 a0 mov %rax,-0x60(%rbp) : : if (hashp->hctl->max_dsize != NO_MAX_DSIZE) : return false; : : /* Reallocate directory */ : new_dsize = hashp->hctl->dsize << 1; 0.00 : 784581: 48 89 55 b8 mov %rdx,-0x48(%rbp) : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); : new_dirsize = new_dsize * sizeof(HASHSEGMENT); : : old_p = hashp->dir; : CurrentDynaHashCxt = hashp->hcxt; 0.00 : 784585: 49 8b 46 30 mov 0x30(%r14),%rax : /* Reallocate directory */ : new_dsize = hashp->hctl->dsize << 1; : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); : new_dirsize = new_dsize * sizeof(HASHSEGMENT); : : old_p = hashp->dir; 0.00 : 784589: 49 8b 56 08 mov 0x8(%r14),%rdx : CurrentDynaHashCxt = hashp->hcxt; : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); 0.00 : 78458d: 48 8b 7d a0 mov -0x60(%rbp),%rdi : /* Reallocate directory */ : new_dsize = hashp->hctl->dsize << 1; : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); : new_dirsize = new_dsize * sizeof(HASHSEGMENT); : : old_p = hashp->dir; 0.00 : 784591: 48 89 55 b0 mov %rdx,-0x50(%rbp) : CurrentDynaHashCxt = hashp->hcxt; 0.00 : 784595: 48 89 05 2c 56 43 00 mov %rax,0x43562c(%rip) # bb9bc8 : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); 0.00 : 78459c: 41 ff 56 28 callq *0x28(%r14) : : if (p != NULL) 0.00 : 7845a0: 48 85 c0 test %rax,%rax : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); : new_dirsize = new_dsize * sizeof(HASHSEGMENT); : : old_p = hashp->dir; : CurrentDynaHashCxt = hashp->hcxt; : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); 0.00 : 7845a3: 48 89 45 a8 mov %rax,-0x58(%rbp) : : if (p != NULL) 0.00 : 7845a7: 0f 84 89 00 00 00 je 784636 : { : memcpy(p, old_p, old_dirsize); 0.00 : 7845ad: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7845b1: 48 8b 75 b0 mov -0x50(%rbp),%rsi : if (hashp->hctl->max_dsize != NO_MAX_DSIZE) : return false; : : /* Reallocate directory */ : new_dsize = hashp->hctl->dsize << 1; : old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); 0.00 : 7845b5: 48 c1 e3 03 shl $0x3,%rbx : CurrentDynaHashCxt = hashp->hcxt; : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); : : if (p != NULL) : { : memcpy(p, old_p, old_dirsize); 0.00 : 7845b9: 48 89 da mov %rbx,%rdx 0.00 : 7845bc: e8 2f 56 ce ff callq 469bf0 : MemSet(((char *) p) + old_dirsize, 0, new_dirsize - old_dirsize); 0.00 : 7845c1: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7845c5: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7845c9: 48 01 df add %rbx,%rdi 0.00 : 7845cc: 48 29 da sub %rbx,%rdx 0.00 : 7845cf: 40 f6 c7 07 test $0x7,%dil 0.00 : 7845d3: 0f 85 3e ff ff ff jne 784517 0.00 : 7845d9: 48 81 fa 00 04 00 00 cmp $0x400,%rdx 0.00 : 7845e0: 0f 87 31 ff ff ff ja 784517 0.00 : 7845e6: 48 8d 04 17 lea (%rdi,%rdx,1),%rax 0.00 : 7845ea: 48 39 c7 cmp %rax,%rdi 0.00 : 7845ed: 0f 83 2b ff ff ff jae 78451e 0.00 : 7845f3: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) 0.00 : 7845fa: 48 83 c7 08 add $0x8,%rdi 0.00 : 7845fe: 48 39 f8 cmp %rdi,%rax 0.00 : 784601: 77 f0 ja 7845f3 0.00 : 784603: e9 16 ff ff ff jmpq 78451e : if (hashp->isshared) : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of shared memory"))); : else : ereport(ERROR, 0.00 : 784608: 45 31 c0 xor %r8d,%r8d 0.00 : 78460b: b9 f0 5b 8d 00 mov $0x8d5bf0,%ecx 0.00 : 784610: ba ca 03 00 00 mov $0x3ca,%edx 0.00 : 784615: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 78461a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 78461f: e8 9c 64 ff ff callq 77aac0 0.00 : 784624: 84 c0 test %al,%al 0.00 : 784626: 0f 84 45 fc ff ff je 784271 0.00 : 78462c: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 784631: e9 b1 fd ff ff jmpq 7843e7 : : old_p = hashp->dir; : CurrentDynaHashCxt = hashp->hcxt; : p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); : : if (p != NULL) 0.00 : 784636: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 78463a: 48 8b 5d 90 mov -0x70(%rbp),%rbx 0.00 : 78463e: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 784642: 4c 8d 68 ff lea -0x1(%rax),%r13 0.00 : 784646: 44 8b 43 28 mov 0x28(%rbx),%r8d 0.00 : 78464a: e9 d9 fb ff ff jmpq 784228 : if (currBucket != NULL) : return (void *) ELEMENTKEY(currBucket); : : /* disallow inserts if frozen */ : if (hashp->frozen) : elog(ERROR, "cannot insert into frozen hashtable \"%s\"", 0.00 : 78464f: ba f0 5b 8d 00 mov $0x8d5bf0,%edx 0.00 : 784654: be ba 03 00 00 mov $0x3ba,%esi 0.00 : 784659: bf 33 59 8d 00 mov $0x8d5933,%edi 0.00 : 78465e: e8 bd 6d ff ff callq 77b420 0.00 : 784663: 49 8b 56 38 mov 0x38(%r14),%rdx 0.00 : 784667: be c0 5a 8d 00 mov $0x8d5ac0,%esi 0.00 : 78466c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 784671: 31 c0 xor %eax,%eax 0.00 : 784673: e8 b8 6b ff ff callq 77b230 0.00 : 784678: e8 53 4e ce ff callq 4694d0 : { : /* Allocate new segment if necessary -- could fail if dir full */ : if (new_segnum >= hctl->dsize) : if (!dir_realloc(hashp)) : return false; : if (!(hashp->dir[new_segnum] = seg_alloc(hashp))) 0.00 : 78467d: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 784681: 41 8b 4e 58 mov 0x58(%r14),%ecx 0.00 : 784685: 8b 70 28 mov 0x28(%rax),%esi 0.00 : 784688: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : 78468c: 4c 8d 68 ff lea -0x1(%rax),%r13 0.00 : 784690: e9 13 fa ff ff jmpq 7840a8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.40 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:346 32.45 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:339 26.49 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:336 0.66 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:337 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005cd2e0 : : : /* Conditional push: push only if we're inside a SPI procedure */ : bool : SPI_push_conditional(void) : { : bool pushed = (_SPI_curid != _SPI_connected); 0.00 : 5cd2e0: 8b 05 8e b1 59 00 mov 0x59b18e(%rip),%eax # b68474 <_SPI_curid> /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:337 0.66 : 5cd2e6: 3b 05 8c b1 59 00 cmp 0x59b18c(%rip),%eax # b68478 <_SPI_connected> : } : : /* Conditional push: push only if we're inside a SPI procedure */ : bool : SPI_push_conditional(void) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:336 26.49 : 5cd2ec: 55 push %rbp 0.00 : 5cd2ed: 48 89 e5 mov %rsp,%rbp : bool pushed = (_SPI_curid != _SPI_connected); : : if (pushed) 0.00 : 5cd2f0: 0f 95 c2 setne %dl /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:339 32.45 : 5cd2f3: 74 09 je 5cd2fe : { : _SPI_curid++; 0.00 : 5cd2f5: 83 c0 01 add $0x1,%eax 0.00 : 5cd2f8: 89 05 76 b1 59 00 mov %eax,0x59b176(%rip) # b68474 <_SPI_curid> : /* We should now be in a state where SPI_connect would succeed */ : Assert(_SPI_curid == _SPI_connected); : } : return pushed; : } 0.00 : 5cd2fe: 89 d0 mov %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:346 40.40 : 5cd300: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.88 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2363 8.84 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2328 8.84 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2363 6.12 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2414 4.76 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2324 4.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2344 4.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2357 3.40 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2344 2.72 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2324 2.72 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2337 2.72 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2337 2.72 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/palloc.h:95 2.72 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2363 2.72 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2371 2.72 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2380 2.04 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2309 2.04 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2324 2.04 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2330 2.04 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2344 2.04 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2337 2.04 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2372 2.04 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2380 2.04 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2414 1.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2322 1.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/palloc.h:95 1.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2324 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2307 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2309 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2311 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2318 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2322 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2324 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2328 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2349 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2363 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2366 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2371 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2372 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2380 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2383 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000559170 : : * Do not allow the copy if user doesn't have proper permission to access : * the table or the specifically requested columns. : */ : Oid : DoCopy(const CopyStmt *stmt, const char *queryString, uint64 *processed) : { 0.00 : 559170: 55 push %rbp 0.00 : 559171: 48 89 e5 mov %rsp,%rbp 0.00 : 559174: 41 57 push %r15 0.00 : 559176: 49 89 f7 mov %rsi,%r15 0.00 : 559179: 41 56 push %r14 0.00 : 55917b: 49 89 fe mov %rdi,%r14 0.00 : 55917e: 41 55 push %r13 0.00 : 559180: 41 54 push %r12 0.00 : 559182: 53 push %rbx 0.00 : 559183: 48 81 ec 68 01 00 00 sub $0x168,%rsp 0.00 : 55918a: 48 89 95 98 fe ff ff mov %rdx,-0x168(%rbp) : CopyState cstate; : bool is_from = stmt->is_from; 0.00 : 559191: 0f b6 47 20 movzbl 0x20(%rdi),%eax 0.00 : 559195: 88 85 af fe ff ff mov %al,-0x151(%rbp) : Relation rel; : Oid relid; : Node *query = NULL; : : /* Disallow COPY to/from file or program except to superusers. */ : if (!pipe && !superuser()) 0.00 : 55919b: 48 83 7f 28 00 cmpq $0x0,0x28(%rdi) 0.00 : 5591a0: 74 3e je 5591e0 0.00 : 5591a2: e8 c9 d9 23 00 callq 796b70 0.00 : 5591a7: 84 c0 test %al,%al 0.00 : 5591a9: 75 35 jne 5591e0 : { : if (stmt->is_program) 0.00 : 5591ab: 41 80 7e 21 00 cmpb $0x0,0x21(%r14) 0.00 : 5591b0: 0f 84 9c 0c 00 00 je 559e52 : ereport(ERROR, 0.00 : 5591b6: 45 31 c0 xor %r8d,%r8d 0.00 : 5591b9: b9 e3 9d 87 00 mov $0x879de3,%ecx 0.00 : 5591be: ba 1f 03 00 00 mov $0x31f,%edx 0.00 : 5591c3: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5591c8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5591cd: e8 ee 18 22 00 callq 77aac0 0.00 : 5591d2: 84 c0 test %al,%al 0.00 : 5591d4: 0f 85 16 05 00 00 jne 5596f0 : errmsg("could not open file \"%s\" for writing: %m", : cstate->filename))); : : fstat(fileno(cstate->copy_file), &st); : if (S_ISDIR(st.st_mode)) : ereport(ERROR, 0.00 : 5591da: e8 f1 02 f1 ff callq 4694d0 0.00 : 5591df: 90 nop : errmsg("must be superuser to COPY to or from a file"), : errhint("Anyone can COPY to stdout or from stdin. " : "psql's \\copy command also works for anyone."))); : } : : if (stmt->relation) 0.00 : 5591e0: 49 8b 7e 08 mov 0x8(%r14),%rdi 0.00 : 5591e4: 48 85 ff test %rdi,%rdi 0.00 : 5591e7: 0f 84 43 05 00 00 je 559730 : { : TupleDesc tupDesc; : AclMode required_access = (is_from ? ACL_INSERT : ACL_SELECT); 0.00 : 5591ed: 80 bd af fe ff ff 01 cmpb $0x1,-0x151(%rbp) 0.00 : 5591f4: 19 f6 sbb %esi,%esi 0.00 : 5591f6: 83 e6 fe and $0xfffffffe,%esi 0.00 : 5591f9: 83 c6 03 add $0x3,%esi 0.00 : 5591fc: 80 bd af fe ff ff 01 cmpb $0x1,-0x151(%rbp) 0.00 : 559203: 19 db sbb %ebx,%ebx : ListCell *cur; : : Assert(!stmt->query); : : /* Open and lock the relation, using the appropriate lock type. */ : rel = heap_openrv(stmt->relation, 0.00 : 559205: e8 f6 4b f4 ff callq 49de00 : (is_from ? RowExclusiveLock : AccessShareLock)); : : relid = RelationGetRelid(rel); : : rte = makeNode(RangeTblEntry); 0.00 : 55920a: 48 8b 3d 4f 16 66 00 mov 0x66164f(%rip),%rdi # bba860 : ListCell *cur; : : Assert(!stmt->query); : : /* Open and lock the relation, using the appropriate lock type. */ : rel = heap_openrv(stmt->relation, 0.00 : 559211: 48 89 85 b0 fe ff ff mov %rax,-0x150(%rbp) : (is_from ? RowExclusiveLock : AccessShareLock)); : : relid = RelationGetRelid(rel); : : rte = makeNode(RangeTblEntry); 0.00 : 559218: be a8 00 00 00 mov $0xa8,%esi : : /* Open and lock the relation, using the appropriate lock type. */ : rel = heap_openrv(stmt->relation, : (is_from ? RowExclusiveLock : AccessShareLock)); : : relid = RelationGetRelid(rel); 0.00 : 55921d: 8b 50 40 mov 0x40(%rax),%edx : } : : if (stmt->relation) : { : TupleDesc tupDesc; : AclMode required_access = (is_from ? ACL_INSERT : ACL_SELECT); 0.00 : 559220: f7 d3 not %ebx 0.00 : 559222: 83 c3 02 add $0x2,%ebx : : /* Open and lock the relation, using the appropriate lock type. */ : rel = heap_openrv(stmt->relation, : (is_from ? RowExclusiveLock : AccessShareLock)); : : relid = RelationGetRelid(rel); 0.00 : 559225: 89 95 bc fe ff ff mov %edx,-0x144(%rbp) : : rte = makeNode(RangeTblEntry); 0.00 : 55922b: e8 e0 fb 23 00 callq 798e10 0.00 : 559230: c7 00 9a 03 00 00 movl $0x39a,(%rax) : rte->rtekind = RTE_RELATION; 0.00 : 559236: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : rel = heap_openrv(stmt->relation, : (is_from ? RowExclusiveLock : AccessShareLock)); : : relid = RelationGetRelid(rel); : : rte = makeNode(RangeTblEntry); 0.00 : 55923d: 49 89 c4 mov %rax,%r12 : rte->rtekind = RTE_RELATION; : rte->relid = RelationGetRelid(rel); 0.00 : 559240: 48 8b b5 b0 fe ff ff mov -0x150(%rbp),%rsi 0.00 : 559247: 8b 46 40 mov 0x40(%rsi),%eax 0.00 : 55924a: 41 89 44 24 08 mov %eax,0x8(%r12) : rte->relkind = rel->rd_rel->relkind; 0.00 : 55924f: 48 8b 46 30 mov 0x30(%rsi),%rax 0.00 : 559253: 0f b6 40 6f movzbl 0x6f(%rax),%eax : rte->requiredPerms = required_access; 0.00 : 559257: 41 89 9c 24 84 00 00 mov %ebx,0x84(%r12) 0.00 : 55925e: 00 : relid = RelationGetRelid(rel); : : rte = makeNode(RangeTblEntry); : rte->rtekind = RTE_RELATION; : rte->relid = RelationGetRelid(rel); : rte->relkind = rel->rd_rel->relkind; 0.00 : 55925f: 41 88 44 24 0c mov %al,0xc(%r12) : rte->requiredPerms = required_access; : : tupDesc = RelationGetDescr(rel); : attnums = CopyGetAttnums(tupDesc, rel, stmt->attlist); 0.00 : 559264: 48 8b 7e 38 mov 0x38(%rsi),%rdi 0.00 : 559268: 49 8b 56 18 mov 0x18(%r14),%rdx 0.00 : 55926c: 48 8b b5 b0 fe ff ff mov -0x150(%rbp),%rsi 0.00 : 559273: e8 b8 d5 ff ff callq 556830 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 559278: 48 85 c0 test %rax,%rax 0.00 : 55927b: 74 5d je 5592da 0.00 : 55927d: 48 8b 58 08 mov 0x8(%rax),%rbx : foreach(cur, attnums) 0.00 : 559281: 48 85 db test %rbx,%rbx 0.00 : 559284: 75 28 jne 5592ae 0.00 : 559286: eb 52 jmp 5592da 0.00 : 559288: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 55928f: 00 : { : int attno = lfirst_int(cur) - : FirstLowInvalidHeapAttributeNumber; : : if (is_from) : rte->modifiedCols = bms_add_member(rte->modifiedCols, attno); 0.00 : 559290: 49 8b bc 24 98 00 00 mov 0x98(%r12),%rdi 0.00 : 559297: 00 0.00 : 559298: e8 63 9d 08 00 callq 5e3000 0.00 : 55929d: 49 89 84 24 98 00 00 mov %rax,0x98(%r12) 0.00 : 5592a4: 00 : rte->relkind = rel->rd_rel->relkind; : rte->requiredPerms = required_access; : : tupDesc = RelationGetDescr(rel); : attnums = CopyGetAttnums(tupDesc, rel, stmt->attlist); : foreach(cur, attnums) 0.00 : 5592a5: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5592a9: 48 85 db test %rbx,%rbx 0.00 : 5592ac: 74 2c je 5592da : { : int attno = lfirst_int(cur) - : FirstLowInvalidHeapAttributeNumber; : : if (is_from) 0.00 : 5592ae: 80 bd af fe ff ff 00 cmpb $0x0,-0x151(%rbp) : tupDesc = RelationGetDescr(rel); : attnums = CopyGetAttnums(tupDesc, rel, stmt->attlist); : foreach(cur, attnums) : { : int attno = lfirst_int(cur) - : FirstLowInvalidHeapAttributeNumber; 0.00 : 5592b5: 8b 03 mov (%rbx),%eax 0.00 : 5592b7: 8d 70 08 lea 0x8(%rax),%esi : : if (is_from) 0.00 : 5592ba: 75 d4 jne 559290 : rte->modifiedCols = bms_add_member(rte->modifiedCols, attno); : else : rte->selectedCols = bms_add_member(rte->selectedCols, attno); 0.00 : 5592bc: 49 8b bc 24 90 00 00 mov 0x90(%r12),%rdi 0.00 : 5592c3: 00 0.00 : 5592c4: e8 37 9d 08 00 callq 5e3000 0.00 : 5592c9: 49 89 84 24 90 00 00 mov %rax,0x90(%r12) 0.00 : 5592d0: 00 : rte->relkind = rel->rd_rel->relkind; : rte->requiredPerms = required_access; : : tupDesc = RelationGetDescr(rel); : attnums = CopyGetAttnums(tupDesc, rel, stmt->attlist); : foreach(cur, attnums) 0.00 : 5592d1: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5592d5: 48 85 db test %rbx,%rbx 0.00 : 5592d8: 75 d4 jne 5592ae : if (is_from) : rte->modifiedCols = bms_add_member(rte->modifiedCols, attno); : else : rte->selectedCols = bms_add_member(rte->selectedCols, attno); : } : ExecCheckRTPerms(list_make1(rte), true); 0.00 : 5592da: 31 f6 xor %esi,%esi 0.00 : 5592dc: 4c 89 e7 mov %r12,%rdi 0.00 : 5592df: e8 6c 85 08 00 callq 5e1850 0.00 : 5592e4: be 01 00 00 00 mov $0x1,%esi 0.00 : 5592e9: 48 89 c7 mov %rax,%rdi 0.00 : 5592ec: e8 3f 20 05 00 callq 5ab330 : * handle the policies. : * : * If RLS is not enabled for this, then just fall through to the : * normal non-filtering relation handling. : */ : if (check_enable_rls(rte->relid, InvalidOid) == RLS_ENABLED) 0.00 : 5592f1: 41 8b 7c 24 08 mov 0x8(%r12),%edi 0.00 : 5592f6: 31 f6 xor %esi,%esi 0.00 : 5592f8: e8 a3 a2 11 00 callq 6735a0 0.00 : 5592fd: 31 d2 xor %edx,%edx 0.00 : 5592ff: 83 f8 02 cmp $0x2,%eax 0.00 : 559302: 0f 84 10 01 00 00 je 559418 : query = stmt->query; : relid = InvalidOid; : rel = NULL; : } : : if (is_from) 0.00 : 559308: 80 bd af fe ff ff 00 cmpb $0x0,-0x151(%rbp) 0.00 : 55930f: 0f 84 43 0a 00 00 je 559d58 : { : Assert(rel); : : /* check read-only transaction */ : if (XactReadOnly && !rel->rd_islocaltemp) 0.00 : 559315: 80 3d 5c 62 66 00 00 cmpb $0x0,0x66625c(%rip) # bbf578 0.00 : 55931c: 74 11 je 55932f 0.00 : 55931e: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 559325: 80 7a 20 00 cmpb $0x0,0x20(%rdx) 0.00 : 559329: 0f 84 f9 02 00 00 je 559628 : PreventCommandIfReadOnly("COPY FROM"); : : cstate = BeginCopyFrom(rel, stmt->filename, stmt->is_program, 0.00 : 55932f: 41 0f be 56 21 movsbl 0x21(%r14),%edx 0.00 : 559334: 49 8b 4e 18 mov 0x18(%r14),%rcx 0.00 : 559338: 49 8b 76 28 mov 0x28(%r14),%rsi 0.00 : 55933c: 4d 8b 46 30 mov 0x30(%r14),%r8 0.00 : 559340: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi 0.00 : 559347: e8 04 ed ff ff callq 558050 0.00 : 55934c: 48 89 85 a0 fe ff ff mov %rax,-0x160(%rbp) : HeapTuple tuple; : TupleDesc tupDesc; : Datum *values; : bool *nulls; : ResultRelInfo *resultRelInfo; : EState *estate = CreateExecutorState(); /* for ExecConstraints() */ 0.00 : 559353: e8 c8 bf 05 00 callq 5b5320 : ExprContext *econtext; : TupleTableSlot *myslot; : MemoryContext oldcontext = CurrentMemoryContext; 0.00 : 559358: 48 8b 35 01 15 66 00 mov 0x661501(%rip),%rsi # bba860 : : ErrorContextCallback errcallback; : CommandId mycid = GetCurrentCommandId(true); 0.00 : 55935f: bf 01 00 00 00 mov $0x1,%edi : HeapTuple tuple; : TupleDesc tupDesc; : Datum *values; : bool *nulls; : ResultRelInfo *resultRelInfo; : EState *estate = CreateExecutorState(); /* for ExecConstraints() */ 0.00 : 559364: 49 89 c7 mov %rax,%r15 : ExprContext *econtext; : TupleTableSlot *myslot; : MemoryContext oldcontext = CurrentMemoryContext; 0.00 : 559367: 48 89 b5 08 ff ff ff mov %rsi,-0xf8(%rbp) : : ErrorContextCallback errcallback; : CommandId mycid = GetCurrentCommandId(true); 0.00 : 55936e: e8 9d 78 f6 ff callq 4c0c10 0.00 : 559373: 89 85 04 ff ff ff mov %eax,-0xfc(%rbp) : Size bufferedTuplesSize = 0; : int firstBufferedLineNo = 0; : : Assert(cstate->rel); : : if (cstate->rel->rd_rel->relkind != RELKIND_RELATION) 0.00 : 559379: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 559380: 48 8b 50 28 mov 0x28(%rax),%rdx 0.00 : 559384: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 559388: 0f b6 40 6f movzbl 0x6f(%rax),%eax 0.00 : 55938c: 3c 72 cmp $0x72,%al 0.00 : 55938e: 0f 84 ac 02 00 00 je 559640 : { : if (cstate->rel->rd_rel->relkind == RELKIND_VIEW) 0.00 : 559394: 3c 76 cmp $0x76,%al 0.00 : 559396: 0f 84 97 0b 00 00 je 559f33 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to view \"%s\"", : RelationGetRelationName(cstate->rel)))); : else if (cstate->rel->rd_rel->relkind == RELKIND_MATVIEW) 0.00 : 55939c: 3c 6d cmp $0x6d,%al 0.00 : 55939e: 0f 84 da 0b 00 00 je 559f7e : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to materialized view \"%s\"", : RelationGetRelationName(cstate->rel)))); : else if (cstate->rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) 0.00 : 5593a4: 3c 66 cmp $0x66,%al 0.00 : 5593a6: 0f 84 3c 0b 00 00 je 559ee8 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to foreign table \"%s\"", : RelationGetRelationName(cstate->rel)))); : else if (cstate->rel->rd_rel->relkind == RELKIND_SEQUENCE) 0.00 : 5593ac: 3c 53 cmp $0x53,%al 0.00 : 5593ae: 66 90 xchg %ax,%ax 0.00 : 5593b0: 0f 85 e7 0a 00 00 jne 559e9d : ereport(ERROR, 0.00 : 5593b6: 45 31 c0 xor %r8d,%r8d 0.00 : 5593b9: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 5593be: ba 6d 08 00 00 mov $0x86d,%edx 0.00 : 5593c3: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 5593c8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5593cd: e8 ee 16 22 00 callq 77aac0 0.00 : 5593d2: 84 c0 test %al,%al 0.00 : 5593d4: 0f 84 00 fe ff ff je 5591da 0.00 : 5593da: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 5593e1: bf f8 8a 87 00 mov $0x878af8,%edi 0.00 : 5593e6: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 5593ea: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 5593ee: 31 c0 xor %eax,%eax 0.00 : 5593f0: e8 ab 34 22 00 callq 77c8a0 0.00 : 5593f5: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 5593fa: 89 c3 mov %eax,%ebx : errmsg("could not open file \"%s\" for writing: %m", : cstate->filename))); : : fstat(fileno(cstate->copy_file), &st); : if (S_ISDIR(st.st_mode)) : ereport(ERROR, 0.00 : 5593fc: e8 4f 39 22 00 callq 77cd50 0.00 : 559401: 89 de mov %ebx,%esi 0.00 : 559403: 89 c7 mov %eax,%edi 0.00 : 559405: 31 c0 xor %eax,%eax 0.00 : 559407: e8 d4 11 22 00 callq 77a5e0 0.00 : 55940c: e9 c9 fd ff ff jmpq 5591da 0.00 : 559411: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : SelectStmt *select; : ColumnRef *cr; : ResTarget *target; : RangeVar *from; : : if (is_from) 0.00 : 559418: 80 bd af fe ff ff 00 cmpb $0x0,-0x151(%rbp) 0.00 : 55941f: 0f 85 a4 0b 00 00 jne 559fc9 : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("COPY FROM not supported with row security."), : errhint("Use direct INSERT statements instead."))); : : /* Build target list */ : cr = makeNode(ColumnRef); 0.00 : 559425: 48 8b 3d 34 14 66 00 mov 0x661434(%rip),%rdi # bba860 0.00 : 55942c: be 18 00 00 00 mov $0x18,%esi 0.00 : 559431: e8 da f9 23 00 callq 798e10 0.00 : 559436: 49 89 c4 mov %rax,%r12 0.00 : 559439: c7 00 85 03 00 00 movl $0x385,(%rax) : : if (!stmt->attlist) 0.00 : 55943f: 49 8b 46 18 mov 0x18(%r14),%rax 0.00 : 559443: 48 85 c0 test %rax,%rax 0.00 : 559446: 0f 84 c7 09 00 00 je 559e13 : cr->fields = list_make1(makeNode(A_Star)); : else : cr->fields = stmt->attlist; 0.00 : 55944c: 49 89 44 24 08 mov %rax,0x8(%r12) : : cr->location = 1; 0.00 : 559451: 41 c7 44 24 10 01 00 movl $0x1,0x10(%r12) 0.00 : 559458: 00 00 : : target = makeNode(ResTarget); 0.00 : 55945a: 48 8b 3d ff 13 66 00 mov 0x6613ff(%rip),%rdi # bba860 0.00 : 559461: be 28 00 00 00 mov $0x28,%esi 0.00 : 559466: e8 a5 f9 23 00 callq 798e10 0.00 : 55946b: 48 89 c3 mov %rax,%rbx : target->name = NULL; : target->indirection = NIL; : target->val = (Node *) cr; 0.00 : 55946e: 4c 89 60 18 mov %r12,0x18(%rax) : else : cr->fields = stmt->attlist; : : cr->location = 1; : : target = makeNode(ResTarget); 0.00 : 559472: c7 00 8d 03 00 00 movl $0x38d,(%rax) : target->name = NULL; 0.00 : 559478: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 55947f: 00 : target->indirection = NIL; 0.00 : 559480: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 559487: 00 : target->val = (Node *) cr; : target->location = 1; : : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); 0.00 : 559488: ba 01 00 00 00 mov $0x1,%edx : : target = makeNode(ResTarget); : target->name = NULL; : target->indirection = NIL; : target->val = (Node *) cr; : target->location = 1; 0.00 : 55948d: c7 40 20 01 00 00 00 movl $0x1,0x20(%rax) : : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); 0.00 : 559494: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 55949b: 31 ff xor %edi,%edi 0.00 : 55949d: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 5594a1: e8 da 81 09 00 callq 5f1680 : : /* Build query */ : select = makeNode(SelectStmt); 0.00 : 5594a6: 48 8b 3d b3 13 66 00 mov 0x6613b3(%rip),%rdi # bba860 0.00 : 5594ad: be 90 00 00 00 mov $0x90,%esi : target->indirection = NIL; : target->val = (Node *) cr; : target->location = 1; : : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); 0.00 : 5594b2: 49 89 c5 mov %rax,%r13 : : /* Build query */ : select = makeNode(SelectStmt); 0.00 : 5594b5: e8 56 f9 23 00 callq 798e10 : select->targetList = list_make1(target); 0.00 : 5594ba: 48 89 df mov %rbx,%rdi : : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); : : /* Build query */ : select = makeNode(SelectStmt); 0.00 : 5594bd: 49 89 c4 mov %rax,%r12 : select->targetList = list_make1(target); 0.00 : 5594c0: 31 f6 xor %esi,%esi : : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); : : /* Build query */ : select = makeNode(SelectStmt); 0.00 : 5594c2: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : select->targetList = list_make1(target); 0.00 : 5594c8: e8 83 83 08 00 callq 5e1850 : select->fromClause = list_make1(from); 0.00 : 5594cd: 4c 89 ef mov %r13,%rdi 0.00 : 5594d0: 31 f6 xor %esi,%esi : /* Build FROM clause */ : from = makeRangeVar(NULL, RelationGetRelationName(rel), 1); : : /* Build query */ : select = makeNode(SelectStmt); : select->targetList = list_make1(target); 0.00 : 5594d2: 49 89 44 24 18 mov %rax,0x18(%r12) : select->fromClause = list_make1(from); 0.00 : 5594d7: e8 74 83 08 00 callq 5e1850 0.00 : 5594dc: 49 89 44 24 20 mov %rax,0x20(%r12) : query = (Node*) select; : : relid = InvalidOid; : : /* Close the handle to the relation as it is no longer needed. */ : heap_close(rel, (is_from ? RowExclusiveLock : AccessShareLock)); 0.00 : 5594e1: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi 0.00 : 5594e8: be 01 00 00 00 mov $0x1,%esi 0.00 : 5594ed: e8 ce 44 f4 ff callq 49d9c0 : *processed = CopyFrom(cstate); /* copy from file to database */ : EndCopyFrom(cstate); : } : else : { : cstate = BeginCopyTo(rel, query, queryString, 0.00 : 5594f2: 4d 8b 4e 30 mov 0x30(%r14),%r9 0.00 : 5594f6: 49 8b 4e 18 mov 0x18(%r14),%rcx 0.00 : 5594fa: 4c 89 e2 mov %r12,%rdx 0.00 : 5594fd: 45 0f b6 6e 21 movzbl 0x21(%r14),%r13d 0.00 : 559502: 49 8b 5e 28 mov 0x28(%r14),%rbx 0.00 : 559506: 48 c7 85 b0 fe ff ff movq $0x0,-0x150(%rbp) 0.00 : 55950d: 00 00 00 00 0.00 : 559511: c7 85 bc fe ff ff 00 movl $0x0,-0x144(%rbp) 0.00 : 559518: 00 00 00 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from non-table relation \"%s\"", : RelationGetRelationName(rel)))); : } : : cstate = BeginCopy(false, rel, query, queryString, attnamelist, options); 0.00 : 55951b: 48 8b b5 b0 fe ff ff mov -0x150(%rbp),%rsi 0.00 : 559522: 49 89 c8 mov %rcx,%r8 0.00 : 559525: 31 ff xor %edi,%edi 0.00 : 559527: 4c 89 f9 mov %r15,%rcx 0.00 : 55952a: e8 e1 e4 ff ff callq 557a10 0.00 : 55952f: 49 89 c4 mov %rax,%r12 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 559532: 48 8b 80 f0 00 00 00 mov 0xf0(%rax),%rax : oldcontext = MemoryContextSwitchTo(cstate->copycontext); : : if (pipe) 0.00 : 559539: 48 85 db test %rbx,%rbx : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 55953c: 4c 8b 35 1d 13 66 00 mov 0x66131d(%rip),%r14 # bba860 : : CurrentMemoryContext = context; 0.00 : 559543: 48 89 05 16 13 66 00 mov %rax,0x661316(%rip) # bba860 0.00 : 55954a: 0f 84 a5 08 00 00 je 559df5 : if (whereToSendOutput != DestRemote) : cstate->copy_file = stdout; : } : else : { : cstate->filename = pstrdup(filename); 0.00 : 559550: 48 89 df mov %rbx,%rdi 0.00 : 559553: e8 f8 f9 23 00 callq 798f50 : cstate->is_program = is_program; : : if (is_program) 0.00 : 559558: 45 84 ed test %r13b,%r13b : if (whereToSendOutput != DestRemote) : cstate->copy_file = stdout; : } : else : { : cstate->filename = pstrdup(filename); 0.00 : 55955b: 49 89 44 24 40 mov %rax,0x40(%r12) : cstate->is_program = is_program; 0.00 : 559560: 45 88 6c 24 48 mov %r13b,0x48(%r12) : : if (is_program) 0.00 : 559565: 0f 85 8a 07 00 00 jne 559cf5 : : /* : * Prevent write to relative path ... too easy to shoot oneself in : * the foot by overwriting a database file ... : */ : if (!is_absolute_path(filename)) 0.00 : 55956b: 80 3b 2f cmpb $0x2f,(%rbx) 0.00 : 55956e: 0f 85 e9 0b 00 00 jne 55a15d : ereport(ERROR, : (errcode(ERRCODE_INVALID_NAME), : errmsg("relative path not allowed for COPY to file"))); : : oumask = umask(S_IWGRP | S_IWOTH); 0.00 : 559574: bf 12 00 00 00 mov $0x12,%edi 0.00 : 559579: e8 72 0b f1 ff callq 46a0f0 : cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W); 0.00 : 55957e: 49 8b 7c 24 40 mov 0x40(%r12),%rdi : if (!is_absolute_path(filename)) : ereport(ERROR, : (errcode(ERRCODE_INVALID_NAME), : errmsg("relative path not allowed for COPY to file"))); : : oumask = umask(S_IWGRP | S_IWOTH); 0.00 : 559583: 89 c3 mov %eax,%ebx : cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W); 0.00 : 559585: be 67 55 88 00 mov $0x885567,%esi 0.00 : 55958a: e8 91 fc 11 00 callq 679220 : umask(oumask); 0.00 : 55958f: 89 df mov %ebx,%edi : ereport(ERROR, : (errcode(ERRCODE_INVALID_NAME), : errmsg("relative path not allowed for COPY to file"))); : : oumask = umask(S_IWGRP | S_IWOTH); : cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W); 0.00 : 559591: 49 89 44 24 08 mov %rax,0x8(%r12) : umask(oumask); 0.00 : 559596: e8 55 0b f1 ff callq 46a0f0 : if (cstate->copy_file == NULL) 0.00 : 55959b: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 5595a0: 48 85 ff test %rdi,%rdi 0.00 : 5595a3: 0f 84 3f 0c 00 00 je 55a1e8 : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not open file \"%s\" for writing: %m", : cstate->filename))); : : fstat(fileno(cstate->copy_file), &st); 0.00 : 5595a9: e8 12 fe f0 ff callq 4693c0 : # endif : : __extern_inline int : __NTH (fstat (int __fd, struct stat *__statbuf)) : { : return __fxstat (_STAT_VER, __fd, __statbuf); 0.00 : 5595ae: 48 8d 95 30 ff ff ff lea -0xd0(%rbp),%rdx 0.00 : 5595b5: 89 c6 mov %eax,%esi 0.00 : 5595b7: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5595bc: e8 df 06 f1 ff callq 469ca0 <__fxstat@plt> : if (S_ISDIR(st.st_mode)) 0.00 : 5595c1: 8b 85 48 ff ff ff mov -0xb8(%rbp),%eax 0.00 : 5595c7: 25 00 f0 00 00 and $0xf000,%eax 0.00 : 5595cc: 3d 00 40 00 00 cmp $0x4000,%eax 0.00 : 5595d1: 0f 84 c9 0b 00 00 je 55a1a0 : else : { : cstate = BeginCopyTo(rel, query, queryString, : stmt->filename, stmt->is_program, : stmt->attlist, stmt->options); : *processed = DoCopyTo(cstate); /* copy from database to file */ 0.00 : 5595d7: 4c 89 e7 mov %r12,%rdi 0.00 : 5595da: 4c 89 35 7f 12 66 00 mov %r14,0x66127f(%rip) # bba860 0.00 : 5595e1: e8 8a f4 ff ff callq 558a70 0.00 : 5595e6: 48 8b 95 98 fe ff ff mov -0x168(%rbp),%rdx 0.00 : 5595ed: 48 89 02 mov %rax,(%rdx) : * Clean up storage and release resources for COPY TO. : */ : static void : EndCopyTo(CopyState cstate) : { : if (cstate->queryDesc != NULL) 0.00 : 5595f0: 49 8b 7c 24 30 mov 0x30(%r12),%rdi 0.00 : 5595f5: 48 85 ff test %rdi,%rdi 0.00 : 5595f8: 74 1e je 559618 : { : /* Close down the query and free resources. */ : ExecutorFinish(cstate->queryDesc); 0.00 : 5595fa: e8 81 22 05 00 callq 5ab880 : ExecutorEnd(cstate->queryDesc); 0.00 : 5595ff: 49 8b 7c 24 30 mov 0x30(%r12),%rdi 0.00 : 559604: e8 57 21 05 00 callq 5ab760 : FreeQueryDesc(cstate->queryDesc); 0.00 : 559609: 49 8b 7c 24 30 mov 0x30(%r12),%rdi 0.00 : 55960e: e8 7d 73 14 00 callq 6a0990 : PopActiveSnapshot(); 0.00 : 559613: e8 e8 dc 24 00 callq 7a7300 : } : : /* Clean up storage */ : EndCopy(cstate); 0.00 : 559618: 4c 89 e7 mov %r12,%rdi 0.00 : 55961b: e8 30 b4 ff ff callq 554a50 0.00 : 559620: e9 1a 06 00 00 jmpq 559c3f 0.00 : 559625: 0f 1f 00 nopl (%rax) : { : Assert(rel); : : /* check read-only transaction */ : if (XactReadOnly && !rel->rd_islocaltemp) : PreventCommandIfReadOnly("COPY FROM"); 0.00 : 559628: bf d5 8a 87 00 mov $0x878ad5,%edi 0.00 : 55962d: e8 8e 93 14 00 callq 6a29c0 0.00 : 559632: e9 f8 fc ff ff jmpq 55932f 0.00 : 559637: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 55963e: 00 00 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to non-table relation \"%s\"", : RelationGetRelationName(cstate->rel)))); : } : : tupDesc = RelationGetDescr(cstate->rel); 0.00 : 559640: 48 8b 72 38 mov 0x38(%rdx),%rsi 0.00 : 559644: 48 89 b5 28 ff ff ff mov %rsi,-0xd8(%rbp) : * must be the case if we have a new table or new relfilenode, so we need : * no additional work to enforce that. : *---------- : */ : /* createSubid is creation check, newRelfilenodeSubid is truncation check */ : if (cstate->rel->rd_createSubid != InvalidSubTransactionId || 0.00 : 55964b: 8b 42 24 mov 0x24(%rdx),%eax 0.00 : 55964e: 85 c0 test %eax,%eax 0.00 : 559650: 75 7e jne 5596d0 0.00 : 559652: c7 85 00 ff ff ff 00 movl $0x0,-0x100(%rbp) 0.00 : 559659: 00 00 00 0.00 : 55965c: 8b 42 28 mov 0x28(%rdx),%eax 0.00 : 55965f: 85 c0 test %eax,%eax 0.00 : 559661: 75 6d jne 5596d0 : * earlier scan or command. This ensures that if this subtransaction : * aborts then the frozen rows won't be visible after xact cleanup. Note : * that the stronger test of exactly which subtransaction created it is : * crucial for correctness of this optimisation. : */ : if (cstate->freeze) 0.00 : 559663: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 55966a: 80 78 4b 00 cmpb $0x0,0x4b(%rax) 0.00 : 55966e: 0f 84 13 01 00 00 je 559787 : { : if (!ThereAreNoPriorRegisteredSnapshots() || !ThereAreNoReadyPortals()) 0.00 : 559674: e8 b7 c9 24 00 callq 7a6030 0.00 : 559679: 84 c0 test %al,%al 0.00 : 55967b: 74 10 je 55968d 0.00 : 55967d: 0f 1f 00 nopl (%rax) 0.00 : 559680: e8 bb fc 23 00 callq 799340 0.00 : 559685: 84 c0 test %al,%al 0.00 : 559687: 0f 85 c1 00 00 00 jne 55974e : ereport(ERROR, 0.00 : 55968d: 45 31 c0 xor %r8d,%r8d 0.00 : 559690: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 559695: ba b0 08 00 00 mov $0x8b0,%edx 0.00 : 55969a: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55969f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5596a4: e8 17 14 22 00 callq 77aac0 0.00 : 5596a9: 84 c0 test %al,%al 0.00 : 5596ab: 0f 84 29 fb ff ff je 5591da 0.00 : 5596b1: bf 30 97 87 00 mov $0x879730,%edi 0.00 : 5596b6: 31 c0 xor %eax,%eax 0.00 : 5596b8: e8 e3 31 22 00 callq 77c8a0 0.00 : 5596bd: bf 42 01 00 00 mov $0x142,%edi 0.00 : 5596c2: 89 c6 mov %eax,%esi 0.00 : 5596c4: 31 c0 xor %eax,%eax 0.00 : 5596c6: e8 15 0f 22 00 callq 77a5e0 0.00 : 5596cb: e9 0a fb ff ff jmpq 5591da : /* createSubid is creation check, newRelfilenodeSubid is truncation check */ : if (cstate->rel->rd_createSubid != InvalidSubTransactionId || : cstate->rel->rd_newRelfilenodeSubid != InvalidSubTransactionId) : { : hi_options |= HEAP_INSERT_SKIP_FSM; : if (!XLogIsNeeded()) 0.00 : 5596d0: 31 c0 xor %eax,%eax 0.00 : 5596d2: 83 3d 83 fa 61 00 00 cmpl $0x0,0x61fa83(%rip) # b7915c 0.00 : 5596d9: 0f 9e c0 setle %al 0.00 : 5596dc: 83 c0 02 add $0x2,%eax 0.00 : 5596df: 89 85 00 ff ff ff mov %eax,-0x100(%rbp) 0.00 : 5596e5: e9 79 ff ff ff jmpq 559663 0.00 : 5596ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* Disallow COPY to/from file or program except to superusers. */ : if (!pipe && !superuser()) : { : if (stmt->is_program) : ereport(ERROR, 0.00 : 5596f0: bf 98 95 87 00 mov $0x879598,%edi 0.00 : 5596f5: 31 c0 xor %eax,%eax 0.00 : 5596f7: e8 a4 25 22 00 callq 77bca0 0.00 : 5596fc: bf f0 95 87 00 mov $0x8795f0,%edi 0.00 : 559701: 41 89 c4 mov %eax,%r12d 0.00 : 559704: 31 c0 xor %eax,%eax 0.00 : 559706: e8 95 31 22 00 callq 77c8a0 0.00 : 55970b: bf 84 50 00 01 mov $0x1005084,%edi 0.00 : 559710: 89 c3 mov %eax,%ebx : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from materialized view \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) : ereport(ERROR, 0.00 : 559712: e8 39 36 22 00 callq 77cd50 0.00 : 559717: 44 89 e2 mov %r12d,%edx 0.00 : 55971a: 89 c7 mov %eax,%edi 0.00 : 55971c: 89 de mov %ebx,%esi 0.00 : 55971e: 31 c0 xor %eax,%eax 0.00 : 559720: e8 bb 0e 22 00 callq 77a5e0 0.00 : 559725: e9 b0 fa ff ff jmpq 5591da 0.00 : 55972a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else : { : Assert(stmt->query); : : query = stmt->query; 0.00 : 559730: 49 8b 56 10 mov 0x10(%r14),%rdx 0.00 : 559734: 48 c7 85 b0 fe ff ff movq $0x0,-0x150(%rbp) 0.00 : 55973b: 00 00 00 00 0.00 : 55973f: c7 85 bc fe ff ff 00 movl $0x0,-0x144(%rbp) 0.00 : 559746: 00 00 00 0.00 : 559749: e9 ba fb ff ff jmpq 559308 : if (!ThereAreNoPriorRegisteredSnapshots() || !ThereAreNoReadyPortals()) : ereport(ERROR, : (ERRCODE_INVALID_TRANSACTION_STATE, : errmsg("cannot perform FREEZE because of prior transaction activity"))); : : if (cstate->rel->rd_createSubid != GetCurrentSubTransactionId() && 0.00 : 55974e: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559755: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 559759: 8b 58 24 mov 0x24(%rax),%ebx 0.00 : 55975c: e8 5f 74 f6 ff callq 4c0bc0 0.00 : 559761: 39 c3 cmp %eax,%ebx 0.00 : 559763: 74 1b je 559780 0.00 : 559765: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 55976c: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 559770: 8b 58 28 mov 0x28(%rax),%ebx 0.00 : 559773: e8 48 74 f6 ff callq 4c0bc0 0.00 : 559778: 39 c3 cmp %eax,%ebx 0.00 : 55977a: 0f 85 b2 0a 00 00 jne 55a232 : cstate->rel->rd_newRelfilenodeSubid != GetCurrentSubTransactionId()) : ereport(ERROR, : (ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE, : errmsg("cannot perform FREEZE because the table was not created or truncated in the current subtransaction"))); : : hi_options |= HEAP_INSERT_FROZEN; 0.00 : 559780: 83 8d 00 ff ff ff 04 orl $0x4,-0x100(%rbp) : /* : * We need a ResultRelInfo so we can use the regular executor's : * index-entry-making machinery. (There used to be a huge amount of code : * here that basically duplicated execUtils.c ...) : */ : resultRelInfo = makeNode(ResultRelInfo); 0.00 : 559787: 48 8b 3d d2 10 66 00 mov 0x6610d2(%rip),%rdi # bba860 0.00 : 55978e: be 80 00 00 00 mov $0x80,%esi 0.00 : 559793: e8 78 f6 23 00 callq 798e10 0.00 : 559798: 49 89 c5 mov %rax,%r13 0.00 : 55979b: c7 00 0e 00 00 00 movl $0xe,(%rax) : InitResultRelInfo(resultRelInfo, 0.00 : 5597a1: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 5597a8: 31 c9 xor %ecx,%ecx 0.00 : 5597aa: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5597af: 4c 89 ef mov %r13,%rdi 0.00 : 5597b2: 48 8b 70 28 mov 0x28(%rax),%rsi 0.00 : 5597b6: e8 e5 13 05 00 callq 5aaba0 : cstate->rel, : 1, /* dummy rangetable index */ : 0); : : ExecOpenIndices(resultRelInfo); 0.00 : 5597bb: 4c 89 ef mov %r13,%rdi 0.00 : 5597be: e8 cd b3 05 00 callq 5b4b90 : estate->es_result_relations = resultRelInfo; : estate->es_num_result_relations = 1; : estate->es_result_relation_info = resultRelInfo; : : /* Set up a tuple slot too */ : myslot = ExecInitExtraTupleSlot(estate); 0.00 : 5597c3: 4c 89 ff mov %r15,%rdi : 1, /* dummy rangetable index */ : 0); : : ExecOpenIndices(resultRelInfo); : : estate->es_result_relations = resultRelInfo; 0.00 : 5597c6: 4d 89 6f 38 mov %r13,0x38(%r15) : estate->es_num_result_relations = 1; 0.00 : 5597ca: 41 c7 47 40 01 00 00 movl $0x1,0x40(%r15) 0.00 : 5597d1: 00 : estate->es_result_relation_info = resultRelInfo; 0.00 : 5597d2: 4d 89 6f 48 mov %r13,0x48(%r15) : : /* Set up a tuple slot too */ : myslot = ExecInitExtraTupleSlot(estate); 0.00 : 5597d6: e8 75 b0 05 00 callq 5b4850 : ExecSetSlotDescriptor(myslot, tupDesc); 0.00 : 5597db: 48 8b b5 28 ff ff ff mov -0xd8(%rbp),%rsi 0.00 : 5597e2: 48 89 c7 mov %rax,%rdi : estate->es_result_relations = resultRelInfo; : estate->es_num_result_relations = 1; : estate->es_result_relation_info = resultRelInfo; : : /* Set up a tuple slot too */ : myslot = ExecInitExtraTupleSlot(estate); 0.00 : 5597e5: 48 89 85 c8 fe ff ff mov %rax,-0x138(%rbp) : ExecSetSlotDescriptor(myslot, tupDesc); 0.00 : 5597ec: e8 bf ad 05 00 callq 5b45b0 : /* Triggers might need a slot as well */ : estate->es_trig_tuple_slot = ExecInitExtraTupleSlot(estate); 0.00 : 5597f1: 4c 89 ff mov %r15,%rdi 0.00 : 5597f4: e8 57 b0 05 00 callq 5b4850 0.00 : 5597f9: 49 89 47 58 mov %rax,0x58(%r15) : * BEFORE/INSTEAD OF triggers, or we need to evaluate volatile default : * expressions. Such triggers or expressions might query the table we're : * inserting to, and act differently if the tuples that have already been : * processed and prepared for insertion are not there. : */ : if ((resultRelInfo->ri_TrigDesc != NULL && 0.00 : 5597fd: 49 8b 45 28 mov 0x28(%r13),%rax 0.00 : 559801: 48 85 c0 test %rax,%rax 0.00 : 559804: 0f 84 d6 01 00 00 je 5599e0 0.00 : 55980a: f7 40 0c ff 00 ff 00 testl $0xff00ff,0xc(%rax) 0.00 : 559811: 0f 84 c9 01 00 00 je 5599e0 : useHeapMultiInsert = false; : } : else : { : useHeapMultiInsert = true; : bufferedTuples = palloc(MAX_BUFFERED_TUPLES * sizeof(HeapTuple)); 0.00 : 559817: 48 c7 85 e0 fe ff ff movq $0x0,-0x120(%rbp) 0.00 : 55981e: 00 00 00 00 0.00 : 559822: c6 85 ef fe ff ff 00 movb $0x0,-0x111(%rbp) : } : : /* Prepare to catch AFTER triggers. */ : AfterTriggerBeginQuery(); 0.00 : 559829: e8 a2 8a 03 00 callq 5922d0 : * Check BEFORE STATEMENT insertion triggers. It's debatable whether we : * should do this for COPY, since it's not really an "INSERT" statement as : * such. However, executing these triggers maintains consistency with the : * EACH ROW triggers that we already fire on COPY. : */ : ExecBSInsertTriggers(estate, resultRelInfo); 0.00 : 55982e: 4c 89 ee mov %r13,%rsi 0.00 : 559831: 4c 89 ff mov %r15,%rdi 0.00 : 559834: e8 97 9d 03 00 callq 5935d0 : : values = (Datum *) palloc(tupDesc->natts * sizeof(Datum)); 0.00 : 559839: 48 8b b5 28 ff ff ff mov -0xd8(%rbp),%rsi 0.00 : 559840: 48 63 3e movslq (%rsi),%rdi 0.00 : 559843: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 559847: e8 04 f5 23 00 callq 798d50 0.00 : 55984c: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : nulls = (bool *) palloc(tupDesc->natts * sizeof(bool)); 0.00 : 559853: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : 55985a: 48 63 38 movslq (%rax),%rdi 0.00 : 55985d: e8 ee f4 23 00 callq 798d50 0.00 : 559862: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) : : bistate = GetBulkInsertState(); 0.00 : 559869: e8 b2 21 f4 ff callq 49ba20 0.00 : 55986e: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) : econtext = GetPerTupleExprContext(estate); 0.00 : 559875: 49 8b 97 c8 00 00 00 mov 0xc8(%r15),%rdx 0.00 : 55987c: 48 85 d2 test %rdx,%rdx 0.00 : 55987f: 48 89 95 10 ff ff ff mov %rdx,-0xf0(%rbp) 0.00 : 559886: 0f 84 b2 05 00 00 je 559e3e : : /* Set up callback to identify error line number */ : errcallback.callback = CopyFromErrorCallback; : errcallback.arg = (void *) cstate; : errcallback.previous = error_context_stack; 0.00 : 55988c: 48 8b 05 ad fd 65 00 mov 0x65fdad(%rip),%rax # bb9640 : bistate = GetBulkInsertState(); : econtext = GetPerTupleExprContext(estate); : : /* Set up callback to identify error line number */ : errcallback.callback = CopyFromErrorCallback; : errcallback.arg = (void *) cstate; 0.00 : 559893: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi : errcallback.previous = error_context_stack; : error_context_stack = &errcallback; 0.00 : 55989a: 45 31 f6 xor %r14d,%r14d : : bistate = GetBulkInsertState(); : econtext = GetPerTupleExprContext(estate); : : /* Set up callback to identify error line number */ : errcallback.callback = CopyFromErrorCallback; 0.00 : 55989d: 48 c7 85 38 ff ff ff movq $0x556b00,-0xc8(%rbp) 0.00 : 5598a4: 00 6b 55 00 : errcallback.arg = (void *) cstate; : errcallback.previous = error_context_stack; : error_context_stack = &errcallback; 0.00 : 5598a8: c7 85 d4 fe ff ff 00 movl $0x0,-0x12c(%rbp) 0.00 : 5598af: 00 00 00 0.00 : 5598b2: 48 c7 85 d8 fe ff ff movq $0x0,-0x128(%rbp) 0.00 : 5598b9: 00 00 00 00 0.00 : 5598bd: 48 c7 85 f0 fe ff ff movq $0x0,-0x110(%rbp) 0.00 : 5598c4: 00 00 00 00 : econtext = GetPerTupleExprContext(estate); : : /* Set up callback to identify error line number */ : errcallback.callback = CopyFromErrorCallback; : errcallback.arg = (void *) cstate; : errcallback.previous = error_context_stack; 0.00 : 5598c8: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) : error_context_stack = &errcallback; 0.00 : 5598cf: 48 8d 85 30 ff ff ff lea -0xd0(%rbp),%rax : bistate = GetBulkInsertState(); : econtext = GetPerTupleExprContext(estate); : : /* Set up callback to identify error line number */ : errcallback.callback = CopyFromErrorCallback; : errcallback.arg = (void *) cstate; 0.00 : 5598d6: 48 89 b5 40 ff ff ff mov %rsi,-0xc0(%rbp) : errcallback.previous = error_context_stack; : error_context_stack = &errcallback; 0.00 : 5598dd: 48 89 05 5c fd 65 00 mov %rax,0x65fd5c(%rip) # bb9640 0.00 : 5598e4: 0f 1f 40 00 nopl 0x0(%rax) : { : TupleTableSlot *slot; : bool skip_tuple; : Oid loaded_oid = InvalidOid; : : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2309 2.04 : 5598e8: 0f b6 05 a1 07 66 00 movzbl 0x6607a1(%rip),%eax # bba090 : : for (;;) : { : TupleTableSlot *slot; : bool skip_tuple; : Oid loaded_oid = InvalidOid; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2307 0.68 : 5598ef: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) : : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2309 0.68 : 5598f6: 84 c0 test %al,%al 0.00 : 5598f8: 0f 85 1a 01 00 00 jne 559a18 : : if (nBufferedTuples == 0) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2311 0.68 : 5598fe: 45 85 f6 test %r14d,%r14d 0.00 : 559901: 75 19 jne 55991c : /* : * Reset the per-tuple exprcontext. We can only do this if the : * tuple buffer is empty. (Calling the context the per-tuple : * memory context is a bit of a misnomer now.) : */ : ResetPerTupleExprContext(estate); 0.00 : 559903: 49 8b 87 c8 00 00 00 mov 0xc8(%r15),%rax 0.00 : 55990a: 48 85 c0 test %rax,%rax 0.00 : 55990d: 0f 84 25 02 00 00 je 559b38 0.00 : 559913: 48 8b 78 28 mov 0x28(%rax),%rdi /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2318 0.68 : 559917: e8 94 f0 23 00 callq 7989b0 : } : : /* Switch into its memory context */ : MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2322 0.68 : 55991c: 49 8b 87 c8 00 00 00 mov 0xc8(%r15),%rax 1.36 : 559923: 48 85 c0 test %rax,%rax 0.00 : 559926: 0f 84 0c 02 00 00 je 559b38 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/palloc.h:95 1.36 : 55992c: 48 8b 40 28 mov 0x28(%rax),%rax : : if (!NextCopyFrom(cstate, econtext, values, nulls, &loaded_oid)) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2324 4.76 : 559930: 48 8b 8d 18 ff ff ff mov -0xe8(%rbp),%rcx 0.00 : 559937: 4c 8d 45 cc lea -0x34(%rbp),%r8 0.00 : 55993b: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx 0.68 : 559942: 48 8b b5 10 ff ff ff mov -0xf0(%rbp),%rsi 2.04 : 559949: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 559950: 48 89 05 09 0f 66 00 mov %rax,0x660f09(%rip) # bba860 2.72 : 559957: e8 c4 c7 ff ff callq 556120 1.36 : 55995c: 84 c0 test %al,%al 0.00 : 55995e: 0f 84 e4 01 00 00 je 559b48 : break; : : /* And now we can form the input tuple. */ : tuple = heap_form_tuple(tupDesc, values, nulls); 0.00 : 559964: 48 8b 95 18 ff ff ff mov -0xe8(%rbp),%rdx 0.00 : 55996b: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 559972: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2328 0.68 : 559979: e8 e2 6c f1 ff callq 470660 : : if (loaded_oid != InvalidOid) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2330 2.04 : 55997e: 8b 4d cc mov -0x34(%rbp),%ecx : : if (!NextCopyFrom(cstate, econtext, values, nulls, &loaded_oid)) : break; : : /* And now we can form the input tuple. */ : tuple = heap_form_tuple(tupDesc, values, nulls); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2328 8.84 : 559981: 48 89 c3 mov %rax,%rbx : : if (loaded_oid != InvalidOid) 0.00 : 559984: 85 c9 test %ecx,%ecx 0.00 : 559986: 74 0c je 559994 : HeapTupleSetOid(tuple, loaded_oid); 0.00 : 559988: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 55998c: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 559990: 89 4c 02 fc mov %ecx,-0x4(%rdx,%rax,1) : : /* : * Constraints might reference the tableoid column, so initialize : * t_tableOid before evaluating them. : */ : tuple->t_tableOid = RelationGetRelid(resultRelInfo->ri_RelationDesc); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2337 2.72 : 559994: 49 8b 45 08 mov 0x8(%r13),%rax : /* Triggers and stuff need to be invoked in query context. */ : MemoryContextSwitchTo(oldcontext); : : /* Place tuple in tuple slot --- but slot shouldn't free it */ : slot = myslot; : ExecStoreTuple(tuple, slot, InvalidBuffer, false); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2344 2.04 : 559998: 31 c9 xor %ecx,%ecx 0.00 : 55999a: 31 d2 xor %edx,%edx 0.00 : 55999c: 48 89 df mov %rbx,%rdi : : /* : * Constraints might reference the tableoid column, so initialize : * t_tableOid before evaluating them. : */ : tuple->t_tableOid = RelationGetRelid(resultRelInfo->ri_RelationDesc); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2337 2.72 : 55999f: 8b 40 40 mov 0x40(%rax),%eax 2.04 : 5599a2: 89 43 0c mov %eax,0xc(%rbx) /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/utils/palloc.h:95 2.72 : 5599a5: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax : /* Triggers and stuff need to be invoked in query context. */ : MemoryContextSwitchTo(oldcontext); : : /* Place tuple in tuple slot --- but slot shouldn't free it */ : slot = myslot; : ExecStoreTuple(tuple, slot, InvalidBuffer, false); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2344 4.08 : 5599ac: 48 8b b5 c8 fe ff ff mov -0x138(%rbp),%rsi 0.00 : 5599b3: 48 89 05 a6 0e 66 00 mov %rax,0x660ea6(%rip) # bba860 3.40 : 5599ba: e8 c1 aa 05 00 callq 5b4480 : : skip_tuple = false; : : /* BEFORE ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2349 0.68 : 5599bf: 49 8b 45 28 mov 0x28(%r13),%rax 0.00 : 5599c3: 48 85 c0 test %rax,%rax 0.00 : 5599c6: 74 06 je 5599ce 0.00 : 5599c8: 80 78 0c 00 cmpb $0x0,0xc(%rax) 0.00 : 5599cc: 75 5a jne 559a28 : slot = ExecBRInsertTriggers(estate, resultRelInfo, slot); : : if (slot == NULL) /* "do nothing" */ : skip_tuple = true; : else /* trigger might have changed tuple */ : tuple = ExecMaterializeSlot(slot); /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2357 4.08 : 5599ce: 4c 8b a5 c8 fe ff ff mov -0x138(%rbp),%r12 0.00 : 5599d5: eb 7a jmp 559a51 0.00 : 5599d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5599de: 00 00 : * BEFORE/INSTEAD OF triggers, or we need to evaluate volatile default : * expressions. Such triggers or expressions might query the table we're : * inserting to, and act differently if the tuples that have already been : * processed and prepared for insertion are not there. : */ : if ((resultRelInfo->ri_TrigDesc != NULL && 0.00 : 5599e0: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 5599e7: 80 ba 68 01 00 00 00 cmpb $0x0,0x168(%rdx) 0.00 : 5599ee: 0f 85 23 fe ff ff jne 559817 : useHeapMultiInsert = false; : } : else : { : useHeapMultiInsert = true; : bufferedTuples = palloc(MAX_BUFFERED_TUPLES * sizeof(HeapTuple)); 0.00 : 5599f4: bf 40 1f 00 00 mov $0x1f40,%edi 0.00 : 5599f9: e8 52 f3 23 00 callq 798d50 0.00 : 5599fe: c6 85 ef fe ff ff 01 movb $0x1,-0x111(%rbp) 0.00 : 559a05: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) 0.00 : 559a0c: e9 18 fe ff ff jmpq 559829 0.00 : 559a11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : TupleTableSlot *slot; : bool skip_tuple; : Oid loaded_oid = InvalidOid; : : CHECK_FOR_INTERRUPTS(); 0.00 : 559a18: e8 83 28 14 00 callq 69c2a0 0.00 : 559a1d: e9 dc fe ff ff jmpq 5598fe 0.00 : 559a22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* BEFORE ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_insert_before_row) : { : slot = ExecBRInsertTriggers(estate, resultRelInfo, slot); 0.00 : 559a28: 48 8b 95 c8 fe ff ff mov -0x138(%rbp),%rdx 0.00 : 559a2f: 4c 89 ee mov %r13,%rsi 0.00 : 559a32: 4c 89 ff mov %r15,%rdi 0.00 : 559a35: e8 06 9a 03 00 callq 593440 : : if (slot == NULL) /* "do nothing" */ 0.00 : 559a3a: 48 85 c0 test %rax,%rax : : /* BEFORE ROW INSERT Triggers */ : if (resultRelInfo->ri_TrigDesc && : resultRelInfo->ri_TrigDesc->trig_insert_before_row) : { : slot = ExecBRInsertTriggers(estate, resultRelInfo, slot); 0.00 : 559a3d: 49 89 c4 mov %rax,%r12 : : if (slot == NULL) /* "do nothing" */ 0.00 : 559a40: 0f 84 a2 fe ff ff je 5598e8 : skip_tuple = true; : else /* trigger might have changed tuple */ : tuple = ExecMaterializeSlot(slot); 0.00 : 559a46: 48 89 c7 mov %rax,%rdi 0.00 : 559a49: e8 b2 a5 05 00 callq 5b4000 0.00 : 559a4e: 48 89 c3 mov %rax,%rbx : } : : if (!skip_tuple) : { : /* Check the constraints of the tuple */ : if (cstate->rel->rd_att->constr) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2363 0.68 : 559a51: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559a58: 48 8b 42 28 mov 0x28(%rdx),%rax 2.72 : 559a5c: 48 8b 40 38 mov 0x38(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2363 10.88 : 559a60: 48 83 78 10 00 cmpq $0x0,0x10(%rax) 8.84 : 559a65: 74 0e je 559a75 : ExecConstraints(resultRelInfo, slot, estate); 0.00 : 559a67: 4c 89 fa mov %r15,%rdx 0.00 : 559a6a: 4c 89 e6 mov %r12,%rsi 0.00 : 559a6d: 4c 89 ef mov %r13,%rdi 0.00 : 559a70: e8 3b 0e 05 00 callq 5aa8b0 : : if (useHeapMultiInsert) /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2366 0.68 : 559a75: 80 bd ef fe ff ff 00 cmpb $0x0,-0x111(%rbp) 0.00 : 559a7c: 0f 84 fe 01 00 00 je 559c80 : { : /* Add this tuple to the tuple buffer */ : if (nBufferedTuples == 0) 0.00 : 559a82: 45 85 f6 test %r14d,%r14d 0.00 : 559a85: 75 13 jne 559a9a : firstBufferedLineNo = cstate->cur_lineno; 0.00 : 559a87: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 559a8e: 8b b6 d8 00 00 00 mov 0xd8(%rsi),%esi 0.00 : 559a94: 89 b5 d4 fe ff ff mov %esi,-0x12c(%rbp) : bufferedTuples[nBufferedTuples++] = tuple; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2371 2.72 : 559a9a: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.68 : 559aa1: 49 63 c6 movslq %r14d,%rax 0.00 : 559aa4: 41 83 c6 01 add $0x1,%r14d 0.00 : 559aa8: 48 89 1c c2 mov %rbx,(%rdx,%rax,8) : bufferedTuplesSize += tuple->t_len; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2372 2.04 : 559aac: 8b 03 mov (%rbx),%eax 0.68 : 559aae: 48 01 85 d8 fe ff ff add %rax,-0x128(%rbp) : * If the buffer filled up, flush it. Also flush if the total : * size of all the tuples in the buffer becomes large, to : * avoid using large amounts of memory for the buffers when : * the tuples are exceptionally wide. : */ : if (nBufferedTuples == MAX_BUFFERED_TUPLES || /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2380 2.04 : 559ab5: 41 81 fe e8 03 00 00 cmp $0x3e8,%r14d 0.00 : 559abc: 74 0d je 559acb 0.68 : 559abe: 48 81 bd d8 fe ff ff cmpq $0xffff,-0x128(%rbp) 0.00 : 559ac5: ff ff 00 00 2.72 : 559ac9: 76 59 jbe 559b24 : bufferedTuplesSize > 65535) : { : CopyFromInsertBatch(cstate, estate, mycid, hi_options, 0.00 : 559acb: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 559ad2: 8b b5 d4 fe ff ff mov -0x12c(%rbp),%esi 0.00 : 559ad8: 4d 89 e8 mov %r13,%r8 0.00 : 559adb: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax 0.00 : 559ae2: 4c 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9 0.00 : 559ae9: 8b 8d 00 ff ff ff mov -0x100(%rbp),%ecx 0.00 : 559aef: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 559af6: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 559afa: 8b 95 04 ff ff ff mov -0xfc(%rbp),%edx 0.00 : 559b00: 89 74 24 18 mov %esi,0x18(%rsp) 0.00 : 559b04: 4c 89 fe mov %r15,%rsi 0.00 : 559b07: 44 89 74 24 08 mov %r14d,0x8(%rsp) 0.00 : 559b0c: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 559b11: 45 31 f6 xor %r14d,%r14d 0.00 : 559b14: e8 d7 ed ff ff callq 5588f0 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2383 0.68 : 559b19: 48 c7 85 d8 fe ff ff movq $0x0,-0x128(%rbp) 0.00 : 559b20: 00 00 00 00 : /* : * We count only tuples not suppressed by a BEFORE INSERT trigger; : * this is the same definition used by execMain.c for counting : * tuples inserted by an INSERT command. : */ : processed++; /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2414 2.04 : 559b24: 48 83 85 f0 fe ff ff addq $0x1,-0x110(%rbp) 0.00 : 559b2b: 01 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2414 6.12 : 559b2c: e9 b7 fd ff ff jmpq 5598e8 0.00 : 559b31: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : ResetPerTupleExprContext(estate); : } : : /* Switch into its memory context */ : MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); 0.00 : 559b38: 4c 89 ff mov %r15,%rdi 0.00 : 559b3b: e8 70 ba 05 00 callq 5b55b0 0.00 : 559b40: e9 e7 fd ff ff jmpq 55992c 0.00 : 559b45: 0f 1f 00 nopl (%rax) : processed++; : } : } : : /* Flush any remaining buffered tuples */ : if (nBufferedTuples > 0) 0.00 : 559b48: 45 85 f6 test %r14d,%r14d 0.00 : 559b4b: 7e 4b jle 559b98 : CopyFromInsertBatch(cstate, estate, mycid, hi_options, 0.00 : 559b4d: 48 8b 95 e0 fe ff ff mov -0x120(%rbp),%rdx 0.00 : 559b54: 48 8b b5 f8 fe ff ff mov -0x108(%rbp),%rsi 0.00 : 559b5b: 4d 89 e8 mov %r13,%r8 0.00 : 559b5e: 8b 85 d4 fe ff ff mov -0x12c(%rbp),%eax 0.00 : 559b64: 4c 8b 8d c8 fe ff ff mov -0x138(%rbp),%r9 0.00 : 559b6b: 8b 8d 00 ff ff ff mov -0x100(%rbp),%ecx 0.00 : 559b71: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 559b78: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 559b7d: 8b 95 04 ff ff ff mov -0xfc(%rbp),%edx 0.00 : 559b83: 48 89 34 24 mov %rsi,(%rsp) 0.00 : 559b87: 4c 89 fe mov %r15,%rsi 0.00 : 559b8a: 89 44 24 18 mov %eax,0x18(%rsp) 0.00 : 559b8e: 44 89 74 24 08 mov %r14d,0x8(%rsp) 0.00 : 559b93: e8 58 ed ff ff callq 5588f0 : resultRelInfo, myslot, bistate, : nBufferedTuples, bufferedTuples, : firstBufferedLineNo); : : /* Done, clean up */ : error_context_stack = errcallback.previous; 0.00 : 559b98: 48 8b 85 30 ff ff ff mov -0xd0(%rbp),%rax : : FreeBulkInsertState(bistate); 0.00 : 559b9f: 48 8b bd f8 fe ff ff mov -0x108(%rbp),%rdi : resultRelInfo, myslot, bistate, : nBufferedTuples, bufferedTuples, : firstBufferedLineNo); : : /* Done, clean up */ : error_context_stack = errcallback.previous; 0.00 : 559ba6: 48 89 05 93 fa 65 00 mov %rax,0x65fa93(%rip) # bb9640 : : FreeBulkInsertState(bistate); 0.00 : 559bad: e8 3e 1e f4 ff callq 49b9f0 0.00 : 559bb2: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax : : MemoryContextSwitchTo(oldcontext); : : /* Execute AFTER STATEMENT insertion triggers */ : ExecASInsertTriggers(estate, resultRelInfo); 0.00 : 559bb9: 4c 89 ee mov %r13,%rsi 0.00 : 559bbc: 4c 89 ff mov %r15,%rdi 0.00 : 559bbf: 48 89 05 9a 0c 66 00 mov %rax,0x660c9a(%rip) # bba860 0.00 : 559bc6: e8 15 91 03 00 callq 592ce0 : : /* Handle queued AFTER triggers */ : AfterTriggerEndQuery(estate); 0.00 : 559bcb: 4c 89 ff mov %r15,%rdi 0.00 : 559bce: e8 4d 84 03 00 callq 592020 : : pfree(values); 0.00 : 559bd3: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi 0.00 : 559bda: e8 a1 ef 23 00 callq 798b80 : pfree(nulls); 0.00 : 559bdf: 48 8b bd 18 ff ff ff mov -0xe8(%rbp),%rdi 0.00 : 559be6: e8 95 ef 23 00 callq 798b80 : : ExecResetTupleTable(estate->es_tupleTable, false); 0.00 : 559beb: 49 8b bf 88 00 00 00 mov 0x88(%r15),%rdi 0.00 : 559bf2: 31 f6 xor %esi,%esi 0.00 : 559bf4: e8 47 aa 05 00 callq 5b4640 : : ExecCloseIndices(resultRelInfo); 0.00 : 559bf9: 4c 89 ef mov %r13,%rdi 0.00 : 559bfc: e8 3f af 05 00 callq 5b4b40 : : FreeExecutorState(estate); 0.00 : 559c01: 4c 89 ff mov %r15,%rdi 0.00 : 559c04: e8 07 b6 05 00 callq 5b5210 : : /* : * If we skipped writing WAL, then we need to sync the heap (but not : * indexes since those use WAL anyway) : */ : if (hi_options & HEAP_INSERT_SKIP_WAL) 0.00 : 559c09: f6 85 00 ff ff ff 01 testb $0x1,-0x100(%rbp) 0.00 : 559c10: 74 10 je 559c22 : heap_sync(cstate->rel); 0.00 : 559c12: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559c19: 48 8b 7a 28 mov 0x28(%rdx),%rdi 0.00 : 559c1d: e8 ee 3f f4 ff callq 49dc10 : if (XactReadOnly && !rel->rd_islocaltemp) : PreventCommandIfReadOnly("COPY FROM"); : : cstate = BeginCopyFrom(rel, stmt->filename, stmt->is_program, : stmt->attlist, stmt->options); : *processed = CopyFrom(cstate); /* copy from file to database */ 0.00 : 559c22: 48 8b 85 f0 fe ff ff mov -0x110(%rbp),%rax 0.00 : 559c29: 48 8b b5 98 fe ff ff mov -0x168(%rbp),%rsi 0.00 : 559c30: 48 89 06 mov %rax,(%rsi) : void : EndCopyFrom(CopyState cstate) : { : /* No COPY FROM related resources except memory. */ : : EndCopy(cstate); 0.00 : 559c33: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 559c3a: e8 11 ae ff ff callq 554a50 : /* : * Close the relation. If reading, we can release the AccessShareLock we : * got; if writing, we should hold the lock until end of transaction to : * ensure that updates will be committed before lock is released. : */ : if (rel != NULL) 0.00 : 559c3f: 48 83 bd b0 fe ff ff cmpq $0x0,-0x150(%rbp) 0.00 : 559c46: 00 0.00 : 559c47: 74 19 je 559c62 : heap_close(rel, (is_from ? NoLock : AccessShareLock)); 0.00 : 559c49: 31 f6 xor %esi,%esi 0.00 : 559c4b: 80 bd af fe ff ff 00 cmpb $0x0,-0x151(%rbp) 0.00 : 559c52: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi 0.00 : 559c59: 40 0f 94 c6 sete %sil 0.00 : 559c5d: e8 5e 3d f4 ff callq 49d9c0 : : return relid; : } 0.00 : 559c62: 8b 85 bc fe ff ff mov -0x144(%rbp),%eax 0.00 : 559c68: 48 81 c4 68 01 00 00 add $0x168,%rsp 0.00 : 559c6f: 5b pop %rbx 0.00 : 559c70: 41 5c pop %r12 0.00 : 559c72: 41 5d pop %r13 0.00 : 559c74: 41 5e pop %r14 0.00 : 559c76: 41 5f pop %r15 0.00 : 559c78: c9 leaveq 0.00 : 559c79: c3 retq 0.00 : 559c7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else : { : List *recheckIndexes = NIL; : : /* OK, store the tuple and create index entries for it */ : heap_insert(cstate->rel, tuple, mycid, hi_options, bistate); 0.00 : 559c80: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 559c87: 4c 8b 85 f8 fe ff ff mov -0x108(%rbp),%r8 0.00 : 559c8e: 8b 8d 00 ff ff ff mov -0x100(%rbp),%ecx 0.00 : 559c94: 8b 95 04 ff ff ff mov -0xfc(%rbp),%edx 0.00 : 559c9a: 48 8b 7e 28 mov 0x28(%rsi),%rdi 0.00 : 559c9e: 48 89 de mov %rbx,%rsi 0.00 : 559ca1: e8 9a 18 f4 ff callq 49b540 : : if (resultRelInfo->ri_NumIndices > 0) 0.00 : 559ca6: 48 c7 85 c0 fe ff ff movq $0x0,-0x140(%rbp) 0.00 : 559cad: 00 00 00 00 0.00 : 559cb1: 41 8b 45 10 mov 0x10(%r13),%eax 0.00 : 559cb5: 85 c0 test %eax,%eax 0.00 : 559cb7: 7e 16 jle 559ccf : recheckIndexes = ExecInsertIndexTuples(slot, &(tuple->t_self), 0.00 : 559cb9: 48 8d 73 04 lea 0x4(%rbx),%rsi 0.00 : 559cbd: 4c 89 fa mov %r15,%rdx 0.00 : 559cc0: 4c 89 e7 mov %r12,%rdi 0.00 : 559cc3: e8 28 be 05 00 callq 5b5af0 0.00 : 559cc8: 48 89 85 c0 fe ff ff mov %rax,-0x140(%rbp) : estate); : : /* AFTER ROW INSERT Triggers */ : ExecARInsertTriggers(estate, resultRelInfo, tuple, 0.00 : 559ccf: 48 8b 8d c0 fe ff ff mov -0x140(%rbp),%rcx 0.00 : 559cd6: 4c 89 ff mov %r15,%rdi 0.00 : 559cd9: 48 89 da mov %rbx,%rdx 0.00 : 559cdc: 4c 89 ee mov %r13,%rsi 0.00 : 559cdf: e8 ac 8f 03 00 callq 592c90 : recheckIndexes); : : list_free(recheckIndexes); 0.00 : 559ce4: 48 8b bd c0 fe ff ff mov -0x140(%rbp),%rdi 0.00 : 559ceb: e8 60 84 08 00 callq 5e2150 0.00 : 559cf0: e9 2f fe ff ff jmpq 559b24 : cstate->filename = pstrdup(filename); : cstate->is_program = is_program; : : if (is_program) : { : cstate->copy_file = OpenPipeStream(cstate->filename, PG_BINARY_W); 0.00 : 559cf5: be 67 55 88 00 mov $0x885567,%esi 0.00 : 559cfa: 48 89 c7 mov %rax,%rdi 0.00 : 559cfd: e8 7e f3 11 00 callq 679080 : if (cstate->copy_file == NULL) 0.00 : 559d02: 48 85 c0 test %rax,%rax : cstate->filename = pstrdup(filename); : cstate->is_program = is_program; : : if (is_program) : { : cstate->copy_file = OpenPipeStream(cstate->filename, PG_BINARY_W); 0.00 : 559d05: 49 89 44 24 08 mov %rax,0x8(%r12) : if (cstate->copy_file == NULL) 0.00 : 559d0a: 0f 85 c7 f8 ff ff jne 5595d7 : ereport(ERROR, 0.00 : 559d10: 45 31 c0 xor %r8d,%r8d 0.00 : 559d13: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 559d18: ba 7a 06 00 00 mov $0x67a,%edx 0.00 : 559d1d: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559d22: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559d27: e8 94 0d 22 00 callq 77aac0 0.00 : 559d2c: 84 c0 test %al,%al 0.00 : 559d2e: 0f 84 a6 f4 ff ff je 5591da 0.00 : 559d34: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 559d39: bf 60 94 87 00 mov $0x879460,%edi 0.00 : 559d3e: 31 c0 xor %eax,%eax 0.00 : 559d40: e8 5b 2b 22 00 callq 77c8a0 0.00 : 559d45: 89 c7 mov %eax,%edi 0.00 : 559d47: 31 c0 xor %eax,%eax 0.00 : 559d49: e8 92 08 22 00 callq 77a5e0 0.00 : 559d4e: e9 87 f4 ff ff jmpq 5591da 0.00 : 559d53: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : CopyState cstate; : bool pipe = (filename == NULL); : MemoryContext oldcontext; : : if (rel != NULL && rel->rd_rel->relkind != RELKIND_RELATION) 0.00 : 559d58: 48 83 bd b0 fe ff ff cmpq $0x0,-0x150(%rbp) 0.00 : 559d5f: 00 : *processed = CopyFrom(cstate); /* copy from file to database */ : EndCopyFrom(cstate); : } : else : { : cstate = BeginCopyTo(rel, query, queryString, 0.00 : 559d60: 4d 8b 4e 30 mov 0x30(%r14),%r9 0.00 : 559d64: 49 8b 4e 18 mov 0x18(%r14),%rcx 0.00 : 559d68: 45 0f b6 6e 21 movzbl 0x21(%r14),%r13d 0.00 : 559d6d: 49 8b 5e 28 mov 0x28(%r14),%rbx : { : CopyState cstate; : bool pipe = (filename == NULL); : MemoryContext oldcontext; : : if (rel != NULL && rel->rd_rel->relkind != RELKIND_RELATION) 0.00 : 559d71: 0f 84 a4 f7 ff ff je 55951b 0.00 : 559d77: 48 8b b5 b0 fe ff ff mov -0x150(%rbp),%rsi 0.00 : 559d7e: 48 8b 46 30 mov 0x30(%rsi),%rax 0.00 : 559d82: 0f b6 40 6f movzbl 0x6f(%rax),%eax 0.00 : 559d86: 3c 72 cmp $0x72,%al 0.00 : 559d88: 0f 84 8d f7 ff ff je 55951b : { : if (rel->rd_rel->relkind == RELKIND_VIEW) 0.00 : 559d8e: 3c 76 cmp $0x76,%al 0.00 : 559d90: 0f 84 71 03 00 00 je 55a107 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from view \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_MATVIEW) 0.00 : 559d96: 3c 6d cmp $0x6d,%al 0.00 : 559d98: 0f 84 13 03 00 00 je 55a0b1 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from materialized view \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) 0.00 : 559d9e: 3c 66 cmp $0x66,%al 0.00 : 559da0: 0f 84 b5 02 00 00 je 55a05b : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from foreign table \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_SEQUENCE) 0.00 : 559da6: 3c 53 cmp $0x53,%al 0.00 : 559da8: 0f 85 66 02 00 00 jne 55a014 : ereport(ERROR, 0.00 : 559dae: 45 31 c0 xor %r8d,%r8d 0.00 : 559db1: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 559db6: ba 5e 06 00 00 mov $0x65e,%edx 0.00 : 559dbb: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559dc0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559dc5: e8 f6 0c 22 00 callq 77aac0 0.00 : 559dca: 84 c0 test %al,%al 0.00 : 559dcc: 0f 84 08 f4 ff ff je 5591da 0.00 : 559dd2: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 559dd9: bf 50 98 87 00 mov $0x879850,%edi 0.00 : 559dde: 31 c0 xor %eax,%eax 0.00 : 559de0: 48 8b 72 30 mov 0x30(%rdx),%rsi 0.00 : 559de4: e8 b7 2a 22 00 callq 77c8a0 0.00 : 559de9: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 559dee: 89 c3 mov %eax,%ebx 0.00 : 559df0: e9 07 f6 ff ff jmpq 5593fc : oldcontext = MemoryContextSwitchTo(cstate->copycontext); : : if (pipe) : { : Assert(!is_program); /* the grammar does not allow this */ : if (whereToSendOutput != DestRemote) 0.00 : 559df5: 83 3d ac e9 60 00 02 cmpl $0x2,0x60e9ac(%rip) # b687a8 0.00 : 559dfc: 0f 84 d5 f7 ff ff je 5595d7 : cstate->copy_file = stdout; 0.00 : 559e02: 48 8b 05 67 8c 61 00 mov 0x618c67(%rip),%rax # b72a70 0.00 : 559e09: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 559e0e: e9 c4 f7 ff ff jmpq 5595d7 : : /* Build target list */ : cr = makeNode(ColumnRef); : : if (!stmt->attlist) : cr->fields = list_make1(makeNode(A_Star)); 0.00 : 559e13: 48 8b 3d 46 0a 66 00 mov 0x660a46(%rip),%rdi # bba860 0.00 : 559e1a: be 04 00 00 00 mov $0x4,%esi 0.00 : 559e1f: e8 fc f1 23 00 callq 799020 0.00 : 559e24: 31 f6 xor %esi,%esi 0.00 : 559e26: 48 89 c7 mov %rax,%rdi 0.00 : 559e29: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 559e2f: e8 1c 7a 08 00 callq 5e1850 0.00 : 559e34: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 559e39: e9 13 f6 ff ff jmpq 559451 : : values = (Datum *) palloc(tupDesc->natts * sizeof(Datum)); : nulls = (bool *) palloc(tupDesc->natts * sizeof(bool)); : : bistate = GetBulkInsertState(); : econtext = GetPerTupleExprContext(estate); 0.00 : 559e3e: 4c 89 ff mov %r15,%rdi 0.00 : 559e41: e8 6a b7 05 00 callq 5b55b0 0.00 : 559e46: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : 559e4d: e9 3a fa ff ff jmpq 55988c : (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), : errmsg("must be superuser to COPY to or from an external program"), : errhint("Anyone can COPY to stdout or from stdin. " : "psql's \\copy command also works for anyone."))); : else : ereport(ERROR, 0.00 : 559e52: 45 31 c0 xor %r8d,%r8d 0.00 : 559e55: b9 e3 9d 87 00 mov $0x879de3,%ecx 0.00 : 559e5a: ba 25 03 00 00 mov $0x325,%edx 0.00 : 559e5f: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559e64: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559e69: e8 52 0c 22 00 callq 77aac0 0.00 : 559e6e: 84 c0 test %al,%al 0.00 : 559e70: 0f 84 64 f3 ff ff je 5591da 0.00 : 559e76: bf 98 95 87 00 mov $0x879598,%edi 0.00 : 559e7b: 31 c0 xor %eax,%eax 0.00 : 559e7d: e8 1e 1e 22 00 callq 77bca0 0.00 : 559e82: bf 30 96 87 00 mov $0x879630,%edi 0.00 : 559e87: 41 89 c4 mov %eax,%r12d 0.00 : 559e8a: 31 c0 xor %eax,%eax 0.00 : 559e8c: e8 0f 2a 22 00 callq 77c8a0 0.00 : 559e91: bf 84 50 00 01 mov $0x1005084,%edi 0.00 : 559e96: 89 c3 mov %eax,%ebx 0.00 : 559e98: e9 75 f8 ff ff jmpq 559712 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to sequence \"%s\"", : RelationGetRelationName(cstate->rel)))); : else : ereport(ERROR, 0.00 : 559e9d: 45 31 c0 xor %r8d,%r8d 0.00 : 559ea0: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 559ea5: ba 72 08 00 00 mov $0x872,%edx 0.00 : 559eaa: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559eaf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559eb4: e8 07 0c 22 00 callq 77aac0 0.00 : 559eb9: 84 c0 test %al,%al 0.00 : 559ebb: 0f 84 19 f3 ff ff je 5591da 0.00 : 559ec1: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559ec8: bf 08 97 87 00 mov $0x879708,%edi 0.00 : 559ecd: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 559ed1: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 559ed5: 31 c0 xor %eax,%eax 0.00 : 559ed7: e8 c4 29 22 00 callq 77c8a0 0.00 : 559edc: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 559ee1: 89 c3 mov %eax,%ebx 0.00 : 559ee3: e9 14 f5 ff ff jmpq 5593fc : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to materialized view \"%s\"", : RelationGetRelationName(cstate->rel)))); : else if (cstate->rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) : ereport(ERROR, 0.00 : 559ee8: 45 31 c0 xor %r8d,%r8d 0.00 : 559eeb: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 559ef0: ba 68 08 00 00 mov $0x868,%edx 0.00 : 559ef5: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559efa: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559eff: e8 bc 0b 22 00 callq 77aac0 0.00 : 559f04: 84 c0 test %al,%al 0.00 : 559f06: 0f 84 ce f2 ff ff je 5591da 0.00 : 559f0c: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559f13: bf e0 96 87 00 mov $0x8796e0,%edi 0.00 : 559f18: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 559f1c: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 559f20: 31 c0 xor %eax,%eax 0.00 : 559f22: e8 79 29 22 00 callq 77c8a0 0.00 : 559f27: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 559f2c: 89 c3 mov %eax,%ebx 0.00 : 559f2e: e9 c9 f4 ff ff jmpq 5593fc : Assert(cstate->rel); : : if (cstate->rel->rd_rel->relkind != RELKIND_RELATION) : { : if (cstate->rel->rd_rel->relkind == RELKIND_VIEW) : ereport(ERROR, 0.00 : 559f33: 45 31 c0 xor %r8d,%r8d 0.00 : 559f36: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 559f3b: ba 5e 08 00 00 mov $0x85e,%edx 0.00 : 559f40: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559f45: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559f4a: e8 71 0b 22 00 callq 77aac0 0.00 : 559f4f: 84 c0 test %al,%al 0.00 : 559f51: 0f 84 83 f2 ff ff je 5591da 0.00 : 559f57: 48 8b 95 a0 fe ff ff mov -0x160(%rbp),%rdx 0.00 : 559f5e: bf df 8a 87 00 mov $0x878adf,%edi 0.00 : 559f63: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 559f67: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 559f6b: 31 c0 xor %eax,%eax 0.00 : 559f6d: e8 2e 29 22 00 callq 77c8a0 0.00 : 559f72: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 559f77: 89 c3 mov %eax,%ebx 0.00 : 559f79: e9 7e f4 ff ff jmpq 5593fc : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy to view \"%s\"", : RelationGetRelationName(cstate->rel)))); : else if (cstate->rel->rd_rel->relkind == RELKIND_MATVIEW) : ereport(ERROR, 0.00 : 559f7e: 45 31 c0 xor %r8d,%r8d 0.00 : 559f81: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 559f86: ba 63 08 00 00 mov $0x863,%edx 0.00 : 559f8b: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559f90: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559f95: e8 26 0b 22 00 callq 77aac0 0.00 : 559f9a: 84 c0 test %al,%al 0.00 : 559f9c: 0f 84 38 f2 ff ff je 5591da 0.00 : 559fa2: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 559fa9: bf b8 96 87 00 mov $0x8796b8,%edi 0.00 : 559fae: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 559fb2: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 559fb6: 31 c0 xor %eax,%eax 0.00 : 559fb8: e8 e3 28 22 00 callq 77c8a0 0.00 : 559fbd: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 559fc2: 89 c3 mov %eax,%ebx 0.00 : 559fc4: e9 33 f4 ff ff jmpq 5593fc : ColumnRef *cr; : ResTarget *target; : RangeVar *from; : : if (is_from) : ereport(ERROR, 0.00 : 559fc9: 45 31 c0 xor %r8d,%r8d 0.00 : 559fcc: b9 e3 9d 87 00 mov $0x879de3,%ecx 0.00 : 559fd1: ba 65 03 00 00 mov $0x365,%edx 0.00 : 559fd6: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 559fdb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 559fe0: e8 db 0a 22 00 callq 77aac0 0.00 : 559fe5: 84 c0 test %al,%al 0.00 : 559fe7: 0f 84 ed f1 ff ff je 5591da 0.00 : 559fed: bf 60 96 87 00 mov $0x879660,%edi 0.00 : 559ff2: 31 c0 xor %eax,%eax 0.00 : 559ff4: e8 a7 1c 22 00 callq 77bca0 0.00 : 559ff9: bf 88 96 87 00 mov $0x879688,%edi 0.00 : 559ffe: 41 89 c4 mov %eax,%r12d 0.00 : 55a001: 31 c0 xor %eax,%eax 0.00 : 55a003: e8 98 28 22 00 callq 77c8a0 0.00 : 55a008: bf 40 04 00 00 mov $0x440,%edi 0.00 : 55a00d: 89 c3 mov %eax,%ebx 0.00 : 55a00f: e9 fe f6 ff ff jmpq 559712 : ereport(ERROR, : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from sequence \"%s\"", : RelationGetRelationName(rel)))); : else : ereport(ERROR, 0.00 : 55a014: 45 31 c0 xor %r8d,%r8d 0.00 : 55a017: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a01c: ba 63 06 00 00 mov $0x663,%edx 0.00 : 55a021: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a026: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a02b: e8 90 0a 22 00 callq 77aac0 0.00 : 55a030: 84 c0 test %al,%al 0.00 : 55a032: 0f 84 a2 f1 ff ff je 5591da 0.00 : 55a038: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 55a03f: bf 70 98 87 00 mov $0x879870,%edi 0.00 : 55a044: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 55a048: 31 c0 xor %eax,%eax 0.00 : 55a04a: e8 51 28 22 00 callq 77c8a0 0.00 : 55a04f: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 55a054: 89 c3 mov %eax,%ebx 0.00 : 55a056: e9 a1 f3 ff ff jmpq 5593fc : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from materialized view \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) : ereport(ERROR, 0.00 : 55a05b: 45 31 c0 xor %r8d,%r8d 0.00 : 55a05e: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a063: ba 59 06 00 00 mov $0x659,%edx 0.00 : 55a068: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a06d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a072: e8 49 0a 22 00 callq 77aac0 0.00 : 55a077: 84 c0 test %al,%al 0.00 : 55a079: 0f 84 5b f1 ff ff je 5591da 0.00 : 55a07f: bf d8 97 87 00 mov $0x8797d8,%edi 0.00 : 55a084: 31 c0 xor %eax,%eax 0.00 : 55a086: e8 15 1c 22 00 callq 77bca0 0.00 : 55a08b: 41 89 c4 mov %eax,%r12d 0.00 : 55a08e: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 55a095: bf 28 98 87 00 mov $0x879828,%edi 0.00 : 55a09a: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 55a09e: 31 c0 xor %eax,%eax 0.00 : 55a0a0: e8 fb 27 22 00 callq 77c8a0 0.00 : 55a0a5: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 55a0aa: 89 c3 mov %eax,%ebx 0.00 : 55a0ac: e9 61 f6 ff ff jmpq 559712 : (errcode(ERRCODE_WRONG_OBJECT_TYPE), : errmsg("cannot copy from view \"%s\"", : RelationGetRelationName(rel)), : errhint("Try the COPY (SELECT ...) TO variant."))); : else if (rel->rd_rel->relkind == RELKIND_MATVIEW) : ereport(ERROR, 0.00 : 55a0b1: 45 31 c0 xor %r8d,%r8d 0.00 : 55a0b4: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a0b9: ba 53 06 00 00 mov $0x653,%edx 0.00 : 55a0be: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a0c3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a0c8: e8 f3 09 22 00 callq 77aac0 0.00 : 55a0cd: 84 c0 test %al,%al 0.00 : 55a0cf: 0f 84 05 f1 ff ff je 5591da 0.00 : 55a0d5: bf d8 97 87 00 mov $0x8797d8,%edi 0.00 : 55a0da: 31 c0 xor %eax,%eax 0.00 : 55a0dc: e8 bf 1b 22 00 callq 77bca0 0.00 : 55a0e1: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 55a0e8: bf 00 98 87 00 mov $0x879800,%edi 0.00 : 55a0ed: 41 89 c4 mov %eax,%r12d 0.00 : 55a0f0: 31 c0 xor %eax,%eax 0.00 : 55a0f2: 48 8b 72 30 mov 0x30(%rdx),%rsi 0.00 : 55a0f6: e8 a5 27 22 00 callq 77c8a0 0.00 : 55a0fb: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 55a100: 89 c3 mov %eax,%ebx 0.00 : 55a102: e9 0b f6 ff ff jmpq 559712 : MemoryContext oldcontext; : : if (rel != NULL && rel->rd_rel->relkind != RELKIND_RELATION) : { : if (rel->rd_rel->relkind == RELKIND_VIEW) : ereport(ERROR, 0.00 : 55a107: 45 31 c0 xor %r8d,%r8d 0.00 : 55a10a: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a10f: ba 4d 06 00 00 mov $0x64d,%edx 0.00 : 55a114: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a119: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a11e: e8 9d 09 22 00 callq 77aac0 0.00 : 55a123: 84 c0 test %al,%al 0.00 : 55a125: 0f 84 af f0 ff ff je 5591da 0.00 : 55a12b: bf d8 97 87 00 mov $0x8797d8,%edi 0.00 : 55a130: 31 c0 xor %eax,%eax 0.00 : 55a132: e8 69 1b 22 00 callq 77bca0 0.00 : 55a137: 41 89 c4 mov %eax,%r12d 0.00 : 55a13a: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 55a141: bf 15 8b 87 00 mov $0x878b15,%edi 0.00 : 55a146: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 55a14a: 31 c0 xor %eax,%eax 0.00 : 55a14c: e8 4f 27 22 00 callq 77c8a0 0.00 : 55a151: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 55a156: 89 c3 mov %eax,%ebx 0.00 : 55a158: e9 b5 f5 ff ff jmpq 559712 : /* : * Prevent write to relative path ... too easy to shoot oneself in : * the foot by overwriting a database file ... : */ : if (!is_absolute_path(filename)) : ereport(ERROR, 0.00 : 55a15d: 45 31 c0 xor %r8d,%r8d 0.00 : 55a160: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a165: ba 88 06 00 00 mov $0x688,%edx 0.00 : 55a16a: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a16f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a174: e8 47 09 22 00 callq 77aac0 0.00 : 55a179: 84 c0 test %al,%al 0.00 : 55a17b: 0f 84 59 f0 ff ff je 5591da 0.00 : 55a181: bf a0 98 87 00 mov $0x8798a0,%edi 0.00 : 55a186: 31 c0 xor %eax,%eax 0.00 : 55a188: e8 13 27 22 00 callq 77c8a0 0.00 : 55a18d: bf 84 60 00 02 mov $0x2006084,%edi 0.00 : 55a192: 89 c3 mov %eax,%ebx 0.00 : 55a194: e9 63 f2 ff ff jmpq 5593fc 0.00 : 55a199: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : errmsg("could not open file \"%s\" for writing: %m", : cstate->filename))); : : fstat(fileno(cstate->copy_file), &st); : if (S_ISDIR(st.st_mode)) : ereport(ERROR, 0.00 : 55a1a0: 45 31 c0 xor %r8d,%r8d 0.00 : 55a1a3: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a1a8: ba 97 06 00 00 mov $0x697,%edx 0.00 : 55a1ad: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a1b2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a1b7: e8 04 09 22 00 callq 77aac0 0.00 : 55a1bc: 84 c0 test %al,%al 0.00 : 55a1be: 0f 84 16 f0 ff ff je 5591da 0.00 : 55a1c4: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 55a1c9: bf b6 8a 87 00 mov $0x878ab6,%edi 0.00 : 55a1ce: 31 c0 xor %eax,%eax 0.00 : 55a1d0: e8 cb 26 22 00 callq 77c8a0 0.00 : 55a1d5: bf 84 80 00 09 mov $0x9008084,%edi 0.00 : 55a1da: 89 c3 mov %eax,%ebx 0.00 : 55a1dc: e9 1b f2 ff ff jmpq 5593fc 0.00 : 55a1e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : oumask = umask(S_IWGRP | S_IWOTH); : cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W); : umask(oumask); : if (cstate->copy_file == NULL) : ereport(ERROR, 0.00 : 55a1e8: 45 31 c0 xor %r8d,%r8d 0.00 : 55a1eb: b9 f3 9d 87 00 mov $0x879df3,%ecx 0.00 : 55a1f0: ba 91 06 00 00 mov $0x691,%edx 0.00 : 55a1f5: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a1fa: 40 b7 14 mov $0x14,%dil 0.00 : 55a1fd: e8 be 08 22 00 callq 77aac0 0.00 : 55a202: 84 c0 test %al,%al 0.00 : 55a204: 0f 84 d0 ef ff ff je 5591da 0.00 : 55a20a: 49 8b 74 24 40 mov 0x40(%r12),%rsi 0.00 : 55a20f: bf d0 98 87 00 mov $0x8798d0,%edi 0.00 : 55a214: 31 c0 xor %eax,%eax 0.00 : 55a216: e8 85 26 22 00 callq 77c8a0 0.00 : 55a21b: 89 c3 mov %eax,%ebx 0.00 : 55a21d: e8 ce 28 22 00 callq 77caf0 0.00 : 55a222: 89 de mov %ebx,%esi 0.00 : 55a224: 89 c7 mov %eax,%edi 0.00 : 55a226: 31 c0 xor %eax,%eax 0.00 : 55a228: e8 b3 03 22 00 callq 77a5e0 0.00 : 55a22d: e9 a8 ef ff ff jmpq 5591da : (ERRCODE_INVALID_TRANSACTION_STATE, : errmsg("cannot perform FREEZE because of prior transaction activity"))); : : if (cstate->rel->rd_createSubid != GetCurrentSubTransactionId() && : cstate->rel->rd_newRelfilenodeSubid != GetCurrentSubTransactionId()) : ereport(ERROR, 0.00 : 55a232: 45 31 c0 xor %r8d,%r8d 0.00 : 55a235: b9 ea 9d 87 00 mov $0x879dea,%ecx 0.00 : 55a23a: ba b6 08 00 00 mov $0x8b6,%edx 0.00 : 55a23f: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 55a244: bf 14 00 00 00 mov $0x14,%edi 0.00 : 55a249: e8 72 08 22 00 callq 77aac0 0.00 : 55a24e: 84 c0 test %al,%al 0.00 : 55a250: 0f 84 84 ef ff ff je 5591da 0.00 : 55a256: bf 70 97 87 00 mov $0x879770,%edi 0.00 : 55a25b: 31 c0 xor %eax,%eax 0.00 : 55a25d: e8 3e 26 22 00 callq 77c8a0 0.00 : 55a262: bf 45 01 00 00 mov $0x145,%edi 0.00 : 55a267: 89 c6 mov %eax,%esi 0.00 : 55a269: 31 c0 xor %eax,%eax 0.00 : 55a26b: e8 70 03 22 00 callq 77a5e0 0.00 : 55a270: e9 65 ef ff ff jmpq 5591da Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 73.29 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1760 11.64 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1760 6.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1761 5.48 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1760 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1755 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1760 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1761 0.68 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1760 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000054cd90 : : * This exists to provide some insulation between compute_stats routines : * and the actual storage of the sample data. : */ : static Datum : std_fetch_func(VacAttrStatsP stats, int rownum, bool *isNull) : { /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1755 0.68 : 54cd90: 55 push %rbp : int attnum = stats->tupattnum; 0.00 : 54cd91: 44 8b 87 10 01 00 00 mov 0x110(%rdi),%r8d : HeapTuple tuple = stats->rows[rownum]; 0.00 : 54cd98: 48 63 f6 movslq %esi,%rsi 0.00 : 54cd9b: 48 8b 87 18 01 00 00 mov 0x118(%rdi),%rax : TupleDesc tupDesc = stats->tupDesc; 0.00 : 54cda2: 48 8b bf 20 01 00 00 mov 0x120(%rdi),%rdi : * This exists to provide some insulation between compute_stats routines : * and the actual storage of the sample data. : */ : static Datum : std_fetch_func(VacAttrStatsP stats, int rownum, bool *isNull) : { 0.00 : 54cda9: 48 89 e5 mov %rsp,%rbp : int attnum = stats->tupattnum; : HeapTuple tuple = stats->rows[rownum]; : TupleDesc tupDesc = stats->tupDesc; : : return heap_getattr(tuple, attnum, tupDesc, isNull); 0.00 : 54cdac: 45 85 c0 test %r8d,%r8d : */ : static Datum : std_fetch_func(VacAttrStatsP stats, int rownum, bool *isNull) : { : int attnum = stats->tupattnum; : HeapTuple tuple = stats->rows[rownum]; 0.00 : 54cdaf: 4c 8b 0c f0 mov (%rax,%rsi,8),%r9 : TupleDesc tupDesc = stats->tupDesc; : : return heap_getattr(tuple, attnum, tupDesc, isNull); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1760 5.48 : 54cdb3: 0f 8e 97 00 00 00 jle 54ce50 0.00 : 54cdb9: 49 8b 41 10 mov 0x10(%r9),%rax 73.29 : 54cdbd: 0f b7 40 12 movzwl 0x12(%rax),%eax 11.64 : 54cdc1: 25 ff 07 00 00 and $0x7ff,%eax 0.00 : 54cdc6: 41 39 c0 cmp %eax,%r8d 0.00 : 54cdc9: 7f 6e jg 54ce39 0.00 : 54cdcb: c6 02 00 movb $0x0,(%rdx) 0.00 : 54cdce: 49 8b 71 10 mov 0x10(%r9),%rsi 0.00 : 54cdd2: f6 46 14 01 testb $0x1,0x14(%rsi) 0.00 : 54cdd6: 75 48 jne 54ce20 0.00 : 54cdd8: 48 8b 47 08 mov 0x8(%rdi),%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1760 0.68 : 54cddc: 49 63 d0 movslq %r8d,%rdx 0.00 : 54cddf: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 54cde4: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 54cde7: 85 c0 test %eax,%eax 0.00 : 54cde9: 78 55 js 54ce40 0.00 : 54cdeb: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 54cdef: 74 77 je 54ce68 0.00 : 54cdf1: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 54cdf5: 66 83 fa 08 cmp $0x8,%dx 0.00 : 54cdf9: 0f 84 91 00 00 00 je 54ce90 0.00 : 54cdff: 66 83 fa 04 cmp $0x4,%dx 0.00 : 54ce03: 74 7b je 54ce80 0.00 : 54ce05: 66 83 fa 02 cmp $0x2,%dx 0.00 : 54ce09: 0f 84 91 00 00 00 je 54cea0 0.00 : 54ce0f: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 54ce13: 48 98 cltq 0.00 : 54ce15: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 54ce19: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax : } /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1761 0.68 : 54ce1d: c9 leaveq 0.00 : 54ce1e: c3 retq 0.00 : 54ce1f: 90 nop : { : int attnum = stats->tupattnum; : HeapTuple tuple = stats->rows[rownum]; : TupleDesc tupDesc = stats->tupDesc; : : return heap_getattr(tuple, attnum, tupDesc, isNull); 0.00 : 54ce20: 41 8d 48 ff lea -0x1(%r8),%ecx 0.00 : 54ce24: 89 c8 mov %ecx,%eax 0.00 : 54ce26: 83 e1 07 and $0x7,%ecx 0.00 : 54ce29: c1 f8 03 sar $0x3,%eax 0.00 : 54ce2c: 48 98 cltq 0.00 : 54ce2e: 0f b6 44 06 17 movzbl 0x17(%rsi,%rax,1),%eax 0.00 : 54ce33: d3 f8 sar %cl,%eax 0.00 : 54ce35: a8 01 test $0x1,%al 0.00 : 54ce37: 75 07 jne 54ce40 0.00 : 54ce39: c6 02 01 movb $0x1,(%rdx) 0.00 : 54ce3c: 31 c0 xor %eax,%eax : } 0.00 : 54ce3e: c9 leaveq 0.00 : 54ce3f: c3 retq 0.00 : 54ce40: c9 leaveq : { : int attnum = stats->tupattnum; : HeapTuple tuple = stats->rows[rownum]; : TupleDesc tupDesc = stats->tupDesc; : : return heap_getattr(tuple, attnum, tupDesc, isNull); 0.00 : 54ce41: 48 89 fa mov %rdi,%rdx 0.00 : 54ce44: 44 89 c6 mov %r8d,%esi 0.00 : 54ce47: 4c 89 cf mov %r9,%rdi 0.00 : 54ce4a: e9 41 2b f2 ff jmpq 46f990 0.00 : 54ce4f: 90 nop : } 0.00 : 54ce50: c9 leaveq : { : int attnum = stats->tupattnum; : HeapTuple tuple = stats->rows[rownum]; : TupleDesc tupDesc = stats->tupDesc; : : return heap_getattr(tuple, attnum, tupDesc, isNull); 0.00 : 54ce51: 48 89 d1 mov %rdx,%rcx 0.00 : 54ce54: 44 89 c6 mov %r8d,%esi 0.00 : 54ce57: 48 89 fa mov %rdi,%rdx 0.00 : 54ce5a: 4c 89 cf mov %r9,%rdi 0.00 : 54ce5d: e9 6e 1e f2 ff jmpq 46ecd0 0.00 : 54ce62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54ce68: 0f b6 56 16 movzbl 0x16(%rsi),%edx /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1760 0.68 : 54ce6c: 48 98 cltq : } 0.00 : 54ce6e: c9 leaveq : { : int attnum = stats->tupattnum; : HeapTuple tuple = stats->rows[rownum]; : TupleDesc tupDesc = stats->tupDesc; : : return heap_getattr(tuple, attnum, tupDesc, isNull); 0.00 : 54ce6f: 48 01 d0 add %rdx,%rax 0.00 : 54ce72: 48 8d 04 06 lea (%rsi,%rax,1),%rax : } 0.00 : 54ce76: c3 retq 0.00 : 54ce77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54ce7e: 00 00 : { : int attnum = stats->tupattnum; : HeapTuple tuple = stats->rows[rownum]; : TupleDesc tupDesc = stats->tupDesc; : : return heap_getattr(tuple, attnum, tupDesc, isNull); 0.00 : 54ce80: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 54ce84: 48 98 cltq 0.00 : 54ce86: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 54ce8a: 8b 04 10 mov (%rax,%rdx,1),%eax : } /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1761 6.85 : 54ce8d: c9 leaveq 0.00 : 54ce8e: c3 retq 0.00 : 54ce8f: 90 nop : { : int attnum = stats->tupattnum; : HeapTuple tuple = stats->rows[rownum]; : TupleDesc tupDesc = stats->tupDesc; : : return heap_getattr(tuple, attnum, tupDesc, isNull); 0.00 : 54ce90: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 54ce94: 48 98 cltq 0.00 : 54ce96: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 54ce9a: 48 8b 04 10 mov (%rax,%rdx,1),%rax : } 0.00 : 54ce9e: c9 leaveq 0.00 : 54ce9f: c3 retq : { : int attnum = stats->tupattnum; : HeapTuple tuple = stats->rows[rownum]; : TupleDesc tupDesc = stats->tupDesc; : : return heap_getattr(tuple, attnum, tupDesc, isNull); 0.00 : 54cea0: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 54cea4: 48 98 cltq 0.00 : 54cea6: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 54ceaa: 0f b7 04 10 movzwl (%rax,%rdx,1),%eax : } 0.00 : 54ceae: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 53.42 ??:0 32.19 ??:0 14.38 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000001f0f0 <__errno_location>: ??:0 53.42 : 1f0f0: 48 8b 05 41 2d 35 00 mov 0x352d41(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 32.19 : 1f0f7: 64 48 03 04 25 00 00 add %fs:0x0,%rax 14.38 : 1f0fe: 00 00 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.10 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:713 12.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:929 4.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1039 3.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 2.82 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 2.82 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:623 2.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:595 2.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:789 2.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 2.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:615 1.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:583 1.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:598 1.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 1.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 1.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 1.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1048 1.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:928 1.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1066 1.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1067 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:580 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:580 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:623 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:631 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:789 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:828 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:829 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:735 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:735 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1039 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:885 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:974 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:985 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:914 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:929 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:929 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1064 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:715 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:773 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:596 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1085 0.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1067 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000675ca0 : : */ : static Buffer : ReadBuffer_common(SMgrRelation smgr, char relpersistence, ForkNumber forkNum, : BlockNumber blockNum, ReadBufferMode mode, : BufferAccessStrategy strategy, bool *hit) : { 0.00 : 675ca0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:573 0.70 : 675ca1: 48 89 e5 mov %rsp,%rbp 0.00 : 675ca4: 41 57 push %r15 0.00 : 675ca6: 4d 89 cf mov %r9,%r15 0.00 : 675ca9: 41 56 push %r14 0.00 : 675cab: 41 55 push %r13 0.00 : 675cad: 41 54 push %r12 0.70 : 675caf: 53 push %rbx 0.00 : 675cb0: 48 83 ec 68 sub $0x68,%rsp 0.70 : 675cb4: 48 89 7d 80 mov %rdi,-0x80(%rbp) 0.70 : 675cb8: 89 95 78 ff ff ff mov %edx,-0x88(%rbp) 0.00 : 675cbe: 89 8d 74 ff ff ff mov %ecx,-0x8c(%rbp) 0.70 : 675cc4: 44 89 85 70 ff ff ff mov %r8d,-0x90(%rbp) 0.00 : 675ccb: 40 88 b5 7f ff ff ff mov %sil,-0x81(%rbp) : volatile BufferDesc *bufHdr; : Block bufBlock; : bool found; : bool isExtend; : bool isLocalBuf = SmgrIsTemp(smgr); 0.00 : 675cd2: 83 7f 0c ff cmpl $0xffffffff,0xc(%rdi) : : *hit = false; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:580 0.70 : 675cd6: 48 8b 45 10 mov 0x10(%rbp),%rax : { : volatile BufferDesc *bufHdr; : Block bufBlock; : bool found; : bool isExtend; : bool isLocalBuf = SmgrIsTemp(smgr); 0.00 : 675cda: 0f 95 45 8f setne -0x71(%rbp) : : *hit = false; 0.70 : 675cde: c6 00 00 movb $0x0,(%rax) : : /* Make sure we will have room to remember the buffer pin */ : ResourceOwnerEnlargeBuffers(CurrentResourceOwner); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:583 1.41 : 675ce1: 48 8b 3d d8 4b 54 00 mov 0x544bd8(%rip),%rdi # bba8c0 0.00 : 675ce8: e8 83 51 12 00 callq 79ae70 : : isExtend = (blockNum == P_NEW); 0.00 : 675ced: 83 bd 74 ff ff ff ff cmpl $0xffffffff,-0x8c(%rbp) : smgr->smgr_rnode.node.relNode, : smgr->smgr_rnode.backend, : isExtend); : : /* Substitute proper block number if caller asked for P_NEW */ : if (isExtend) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:595 2.11 : 675cf4: 0f 94 45 8e sete -0x72(%rbp) 0.00 : 675cf8: 0f 84 2f 05 00 00 je 67622d : blockNum = smgrnblocks(smgr, forkNum); : : if (isLocalBuf) 0.00 : 675cfe: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:598 1.41 : 675d02: 74 7b je 675d7f : { : bufHdr = LocalBufferAlloc(smgr, forkNum, blockNum, &found); 0.00 : 675d04: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx 0.00 : 675d0a: 8b b5 78 ff ff ff mov -0x88(%rbp),%esi 0.00 : 675d10: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 675d14: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 675d18: e8 c3 20 00 00 callq 677de0 : if (found) 0.00 : 675d1d: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : if (isExtend) : blockNum = smgrnblocks(smgr, forkNum); : : if (isLocalBuf) : { : bufHdr = LocalBufferAlloc(smgr, forkNum, blockNum, &found); 0.00 : 675d21: 49 89 c6 mov %rax,%r14 : if (found) 0.00 : 675d24: 0f 85 1b 04 00 00 jne 676145 : pgBufferUsage.local_blks_hit++; : else : pgBufferUsage.local_blks_read++; 0.00 : 675d2a: 48 83 05 56 9a 54 00 addq $0x1,0x549a56(%rip) # bbf788 0.00 : 675d31: 01 : } : : /* At this point we do NOT hold any locks. */ : : /* if it was already in the buffer pool, we're done */ : if (found) 0.00 : 675d32: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:623 0.70 : 675d36: 0f 84 fa 00 00 00 je 675e36 : { : if (!isExtend) 0.00 : 675d3c: 80 7d 8e 00 cmpb $0x0,-0x72(%rbp) 0.00 : 675d40: 0f 85 01 05 00 00 jne 676247 : { : /* Just need to update stats before we exit */ : *hit = true; 0.00 : 675d46: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 675d4a: c6 00 01 movb $0x1,(%rax) : VacuumPageHit++; 0.00 : 675d4d: 83 05 80 43 54 00 01 addl $0x1,0x544380(%rip) # bba0d4 : : if (VacuumCostActive) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:631 0.70 : 675d54: 80 3d 89 43 54 00 00 cmpb $0x0,0x544389(%rip) # bba0e4 0.00 : 675d5b: 74 0c je 675d69 : VacuumCostBalance += VacuumCostPageHit; 0.00 : 675d5d: 8b 05 c9 2d 4f 00 mov 0x4f2dc9(%rip),%eax # b68b2c 0.00 : 675d63: 01 05 77 43 54 00 add %eax,0x544377(%rip) # bba0e0 : smgr->smgr_rnode.node.relNode, : smgr->smgr_rnode.backend, : isExtend, : found); : : return BufferDescriptorGetBuffer(bufHdr); 0.00 : 675d69: 41 8b 46 24 mov 0x24(%r14),%eax : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:789 2.11 : 675d6d: 48 83 c4 68 add $0x68,%rsp 0.00 : 675d71: 5b pop %rbx 0.00 : 675d72: 41 5c pop %r12 0.70 : 675d74: 41 5d pop %r13 0.00 : 675d76: 41 5e pop %r14 : smgr->smgr_rnode.node.relNode, : smgr->smgr_rnode.backend, : isExtend, : found); : : return BufferDescriptorGetBuffer(bufHdr); 0.00 : 675d78: 83 c0 01 add $0x1,%eax : } 0.00 : 675d7b: 41 5f pop %r15 0.00 : 675d7d: c9 leaveq 0.00 : 675d7e: c3 retq : int buf_id; : volatile BufferDesc *buf; : bool valid; : : /* create a tag so we can lookup the buffer */ : INIT_BUFFERTAG(newTag, smgr->smgr_rnode.node, forkNum, blockNum); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:824 2.11 : 675d7f: 48 8b 55 80 mov -0x80(%rbp),%rdx 2.82 : 675d83: 48 8b 02 mov (%rdx),%rax 1.41 : 675d86: 48 89 45 b0 mov %rax,-0x50(%rbp) 1.41 : 675d8a: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 675d8d: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx 0.00 : 675d93: 89 45 b8 mov %eax,-0x48(%rbp) 0.00 : 675d96: 8b 85 78 ff ff ff mov -0x88(%rbp),%eax 0.00 : 675d9c: 89 55 c0 mov %edx,-0x40(%rbp) 0.00 : 675d9f: 89 45 bc mov %eax,-0x44(%rbp) 0.00 : 675da2: eb 11 jmp 675db5 0.00 : 675da4: 0f 1f 40 00 nopl 0x0(%rax) : valid = PinBuffer(foundbuf, strategy); : : /* Check whether someone recycled the buffer before we pinned it. */ : if (!BUFFERTAGS_EQUAL(newTag, foundbuf->tag)) : { : UnpinBuffer(foundbuf, true); 0.00 : 675da8: be 01 00 00 00 mov $0x1,%esi 0.00 : 675dad: 48 89 df mov %rbx,%rdi 0.00 : 675db0: e8 7b ef ff ff callq 674d30 : /* create a tag so we can lookup the buffer */ : INIT_BUFFERTAG(newTag, smgr->smgr_rnode.node, forkNum, blockNum); : : /* see if the block is in the buffer pool already */ : start: : buf_id = BufTableLookup(&newTag); 0.00 : 675db5: 48 8d 7d b0 lea -0x50(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:828 0.70 : 675db9: e8 22 e0 ff ff callq 673de0 : if (buf_id >= 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:829 0.70 : 675dbe: 85 c0 test %eax,%eax 0.00 : 675dc0: 0f 88 bb 01 00 00 js 675f81 : : /* : * Found it. Now, pin the buffer so no one can steal it from the : * buffer pool. : */ : foundbuf = &BufferDescriptors[buf_id]; 0.00 : 675dc6: 48 63 d8 movslq %eax,%rbx : : valid = PinBuffer(foundbuf, strategy); 0.00 : 675dc9: 4c 89 fe mov %r15,%rsi : : /* : * Found it. Now, pin the buffer so no one can steal it from the : * buffer pool. : */ : foundbuf = &BufferDescriptors[buf_id]; 0.00 : 675dcc: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 675dd0: 48 03 1d 29 9d 54 00 add 0x549d29(%rip),%rbx # bbfb00 : : valid = PinBuffer(foundbuf, strategy); 0.00 : 675dd7: 48 89 df mov %rbx,%rdi 0.00 : 675dda: 49 89 dc mov %rbx,%r12 0.00 : 675ddd: e8 4e ee ff ff callq 674c30 0.00 : 675de2: 89 c2 mov %eax,%edx : : /* Check whether someone recycled the buffer before we pinned it. */ : if (!BUFFERTAGS_EQUAL(newTag, foundbuf->tag)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:842 0.70 : 675de4: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 675de7: 3b 43 08 cmp 0x8(%rbx),%eax 0.00 : 675dea: 75 bc jne 675da8 3.52 : 675dec: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 675def: 3b 43 04 cmp 0x4(%rbx),%eax 0.00 : 675df2: 75 b4 jne 675da8 0.00 : 675df4: 8b 45 b0 mov -0x50(%rbp),%eax 0.00 : 675df7: 3b 03 cmp (%rbx),%eax 0.00 : 675df9: 75 ad jne 675da8 0.00 : 675dfb: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 675dfe: 3b 43 10 cmp 0x10(%rbx),%eax 0.00 : 675e01: 75 a5 jne 675da8 1.41 : 675e03: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 675e06: 3b 43 0c cmp 0xc(%rbx),%eax 0.00 : 675e09: 75 9d jne 675da8 : } : : *foundPtr = TRUE; : : /* Check to see if the correct data has been loaded into the buffer. */ : if (!valid) 0.00 : 675e0b: 84 d2 test %dl,%dl : { : UnpinBuffer(foundbuf, true); : goto start; : } : : *foundPtr = TRUE; 0.00 : 675e0d: c6 45 cf 01 movb $0x1,-0x31(%rbp) : : /* Check to see if the correct data has been loaded into the buffer. */ : if (!valid) 0.00 : 675e11: 0f 84 33 02 00 00 je 67604a : * lookup the buffer. IO_IN_PROGRESS is set if the requested block is : * not currently in memory. : */ : bufHdr = BufferAlloc(smgr, relpersistence, forkNum, blockNum, : strategy, &found); : if (found) 0.00 : 675e17: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : pgBufferUsage.shared_blks_hit++; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:615 2.11 : 675e1b: 4d 89 e6 mov %r12,%r14 : * lookup the buffer. IO_IN_PROGRESS is set if the requested block is : * not currently in memory. : */ : bufHdr = BufferAlloc(smgr, relpersistence, forkNum, blockNum, : strategy, &found); : if (found) 0.00 : 675e1e: 0f 84 9a 03 00 00 je 6761be : pgBufferUsage.shared_blks_hit++; 0.00 : 675e24: 48 83 05 34 99 54 00 addq $0x1,0x549934(%rip) # bbf760 0.00 : 675e2b: 01 : } : : /* At this point we do NOT hold any locks. */ : : /* if it was already in the buffer pool, we're done */ : if (found) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:623 2.82 : 675e2c: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 675e30: 0f 85 06 ff ff ff jne 675d3c : * it's not been recycled) but come right back here to try smgrextend : * again. : */ : Assert(!(bufHdr->flags & BM_VALID)); /* spinlock not needed */ : : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); 0.00 : 675e36: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 675e3a: 0f 84 8b 03 00 00 je 6761cb 0.00 : 675e40: 41 8b 46 24 mov 0x24(%r14),%eax 0.00 : 675e44: ba fe ff ff ff mov $0xfffffffe,%edx 0.00 : 675e49: 29 c2 sub %eax,%edx : : if (isExtend) 0.00 : 675e4b: 80 7d 8e 00 cmpb $0x0,-0x72(%rbp) : * it's not been recycled) but come right back here to try smgrextend : * again. : */ : Assert(!(bufHdr->flags & BM_VALID)); /* spinlock not needed */ : : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); 0.00 : 675e4f: 48 8b 05 c2 72 50 00 mov 0x5072c2(%rip),%rax # b7d118 0.00 : 675e56: 48 63 d2 movslq %edx,%rdx 0.00 : 675e59: 4c 8b 24 d0 mov (%rax,%rdx,8),%r12 : : if (isExtend) 0.00 : 675e5d: 0f 85 84 03 00 00 jne 6761e7 : { : /* : * Read in the page, unless the caller intends to overwrite it and : * just wants us to allocate a buffer. : */ : if (mode == RBM_ZERO) 0.00 : 675e63: 83 bd 70 ff ff ff 01 cmpl $0x1,-0x90(%rbp) 0.00 : 675e6a: 74 7e je 675eea : else : { : instr_time io_start, : io_time; : : if (track_io_timing) 0.00 : 675e6c: 80 3d ee 71 50 00 00 cmpb $0x0,0x5071ee(%rip) # b7d061 0.00 : 675e73: 0f 85 d1 04 00 00 jne 67634a : INSTR_TIME_SET_CURRENT(io_start); : : smgrread(smgr, forkNum, blockNum, (char *) bufBlock); 0.00 : 675e79: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx 0.00 : 675e7f: 8b b5 78 ff ff ff mov -0x88(%rbp),%esi 0.00 : 675e85: 4c 89 e1 mov %r12,%rcx 0.00 : 675e88: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 675e8c: e8 7f 35 02 00 callq 699410 : : if (track_io_timing) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:735 0.70 : 675e91: 80 3d c9 71 50 00 00 cmpb $0x0,0x5071c9(%rip) # b7d061 0.70 : 675e98: 0f 85 bc 04 00 00 jne 67635a : pgstat_count_buffer_read_time(INSTR_TIME_GET_MICROSEC(io_time)); : INSTR_TIME_ADD(pgBufferUsage.blk_read_time, io_time); : } : : /* check for garbage data */ : if (!PageIsVerified((Page) bufBlock, blockNum)) 0.00 : 675e9e: 8b b5 74 ff ff ff mov -0x8c(%rbp),%esi 0.00 : 675ea4: 4c 89 e7 mov %r12,%rdi 0.00 : 675ea7: e8 24 f0 01 00 callq 694ed0 0.00 : 675eac: 84 c0 test %al,%al 0.00 : 675eae: 75 47 jne 675ef7 : { : if (mode == RBM_ZERO_ON_ERROR || zero_damaged_pages) 0.00 : 675eb0: 83 bd 70 ff ff ff 02 cmpl $0x2,-0x90(%rbp) 0.00 : 675eb7: 74 0d je 675ec6 0.00 : 675eb9: 80 3d a0 71 50 00 00 cmpb $0x0,0x5071a0(%rip) # b7d060 0.00 : 675ec0: 0f 84 51 05 00 00 je 676417 : { : ereport(WARNING, 0.00 : 675ec6: 45 31 c0 xor %r8d,%r8d 0.00 : 675ec9: b9 a0 a0 8a 00 mov $0x8aa0a0,%ecx 0.00 : 675ece: ba f0 02 00 00 mov $0x2f0,%edx 0.00 : 675ed3: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 675ed8: bf 13 00 00 00 mov $0x13,%edi 0.00 : 675edd: e8 de 4b 10 00 callq 77aac0 0.00 : 675ee2: 84 c0 test %al,%al 0.00 : 675ee4: 0f 85 11 04 00 00 jne 6762fb : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("invalid page in block %u of relation %s; zeroing out page", : blockNum, : relpath(smgr->smgr_rnode, forkNum)))); : MemSet((char *) bufBlock, 0, BLCKSZ); 0.00 : 675eea: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 675eef: 31 c0 xor %eax,%eax 0.00 : 675ef1: 4c 89 e7 mov %r12,%rdi 0.00 : 675ef4: f3 48 ab rep stos %rax,%es:(%rdi) : relpath(smgr->smgr_rnode, forkNum)))); : } : } : } : : if (isLocalBuf) 0.00 : 675ef7: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 675efb: 0f 84 18 03 00 00 je 676219 : { : /* Only need to adjust flags */ : bufHdr->flags |= BM_VALID; 0.00 : 675f01: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 675f06: 83 c8 02 or $0x2,%eax 0.00 : 675f09: 66 41 89 46 14 mov %ax,0x14(%r14) : { : /* Set BM_VALID, terminate IO, and wake up any waiters */ : TerminateBufferIO(bufHdr, false, BM_VALID); : } : : VacuumPageMiss++; 0.00 : 675f0e: 83 05 c3 41 54 00 01 addl $0x1,0x5441c3(%rip) # bba0d8 : if (VacuumCostActive) 0.00 : 675f15: 80 3d c8 41 54 00 00 cmpb $0x0,0x5441c8(%rip) # bba0e4 0.00 : 675f1c: 0f 84 47 fe ff ff je 675d69 : VacuumCostBalance += VacuumCostPageMiss; 0.00 : 675f22: 8b 05 08 2c 4f 00 mov 0x4f2c08(%rip),%eax # b68b30 0.00 : 675f28: 01 05 b2 41 54 00 add %eax,0x5441b2(%rip) # bba0e0 0.00 : 675f2e: e9 36 fe ff ff jmpq 675d69 0.00 : 675f33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* : * Need to lock the buffer header too in order to change its tag. : */ : LockBufHdr(buf); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1039 0.70 : 675f38: 49 8d 5e 20 lea 0x20(%r14),%rbx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 675f3c: b8 01 00 00 00 mov $0x1,%eax 0.00 : 675f41: f0 86 03 lock xchg %al,(%rbx) 4.23 : 675f44: 84 c0 test %al,%al 0.00 : 675f46: 0f 85 a4 01 00 00 jne 6760f0 : * Somebody could have pinned or re-dirtied the buffer while we were : * doing the I/O and making the new hashtable entry. If so, we can't : * recycle this buffer; we must undo everything we've done and start : * over with a new victim buffer. : */ : oldFlags = buf->flags; 0.00 : 675f4c: 41 0f b7 56 14 movzwl 0x14(%r14),%edx : if (buf->refcount == 1 && !(oldFlags & BM_DIRTY)) 0.00 : 675f51: 41 8b 46 18 mov 0x18(%r14),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1048 1.41 : 675f55: 83 e8 01 sub $0x1,%eax 0.00 : 675f58: 75 0c jne 675f66 0.00 : 675f5a: 0f b7 d2 movzwl %dx,%edx 0.00 : 675f5d: f6 c2 01 test $0x1,%dl 0.00 : 675f60: 0f 84 ec 01 00 00 je 676152 : break; : : UnlockBufHdr(buf); : BufTableDelete(&newTag); 0.00 : 675f66: 48 8d 7d b0 lea -0x50(%rbp),%rdi : */ : oldFlags = buf->flags; : if (buf->refcount == 1 && !(oldFlags & BM_DIRTY)) : break; : : UnlockBufHdr(buf); 0.00 : 675f6a: 41 c6 46 20 00 movb $0x0,0x20(%r14) : BufTableDelete(&newTag); 0.00 : 675f6f: e8 dc dd ff ff callq 673d50 : UnpinBuffer(buf, true); 0.00 : 675f74: be 01 00 00 00 mov $0x1,%esi 0.00 : 675f79: 4c 89 f7 mov %r14,%rdi 0.00 : 675f7c: e8 af ed ff ff callq 674d30 : { : /* : * Select a victim buffer. The buffer is returned with its header : * spinlock still held! : */ : buf = StrategyGetBuffer(strategy); 0.00 : 675f81: 4c 89 ff mov %r15,%rdi 0.00 : 675f84: e8 d7 15 00 00 callq 677560 : : Assert(buf->refcount == 0); : : /* Must copy buffer flags while we still hold the spinlock */ : oldFlags = buf->flags; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:885 0.70 : 675f89: 0f b7 58 14 movzwl 0x14(%rax),%ebx : : /* Pin the buffer and then release the buffer spinlock */ : PinBuffer_Locked(buf); 0.00 : 675f8d: 48 89 c7 mov %rax,%rdi : { : /* : * Select a victim buffer. The buffer is returned with its header : * spinlock still held! : */ : buf = StrategyGetBuffer(strategy); 0.00 : 675f90: 49 89 c6 mov %rax,%r14 : : /* Must copy buffer flags while we still hold the spinlock */ : oldFlags = buf->flags; : : /* Pin the buffer and then release the buffer spinlock */ : PinBuffer_Locked(buf); 0.00 : 675f93: e8 38 ec ff ff callq 674bd0 : * condition here, in that someone might dirty it after we released it : * above, or even while we are writing it out (since our share-lock : * won't prevent hint-bit updates). We will recheck the dirty bit : * after re-locking the buffer header. : */ : if (oldFlags & BM_DIRTY) 0.00 : 675f98: 0f b7 db movzwl %bx,%ebx 0.00 : 675f9b: f6 c3 01 test $0x1,%bl 0.00 : 675f9e: 0f 85 cc 00 00 00 jne 676070 : : /* : * To change the association of a valid buffer, we'll need to have : * exclusive lock on both the old and new mapping partitions. : */ : if (oldFlags & BM_TAG_VALID) 0.00 : 675fa4: 83 e3 04 and $0x4,%ebx 0.00 : 675fa7: 74 2c je 675fd5 : { : /* Save old tag. */ : oldTag = buf->tag; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:974 0.70 : 675fa9: 49 8b 06 mov (%r14),%rax 0.00 : 675fac: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 675fb0: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 675fb4: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 675fb8: 41 8b 46 10 mov 0x10(%r14),%eax 0.00 : 675fbc: 89 45 a0 mov %eax,-0x60(%rbp) 0.00 : 675fbf: eb 14 jmp 675fd5 0.00 : 675fc1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : foundbuf = &BufferDescriptors[buf_id]; : valid = PinBuffer(foundbuf, strategy); : if (!BUFFERTAGS_EQUAL(newTag, foundbuf->tag)) : { : UnpinBuffer(foundbuf, true); 0.00 : 675fc8: be 01 00 00 00 mov $0x1,%esi 0.00 : 675fcd: 48 89 df mov %rbx,%rdi 0.00 : 675fd0: e8 5b ed ff ff callq 674d30 : * allocated another buffer for the same block we want to read in. : * Note that we have not yet removed the hashtable entry for the old : * tag. : */ : enter: : buf_id = BufTableInsert(&newTag, buf->buf_id); 0.00 : 675fd5: 41 8b 76 24 mov 0x24(%r14),%esi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:985 0.70 : 675fd9: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 675fdd: e8 be dd ff ff callq 673da0 : : if (buf_id >= 0) 0.00 : 675fe2: 85 c0 test %eax,%eax 0.00 : 675fe4: 0f 88 4e ff ff ff js 675f38 : * did what we were about to do. We can handle this as if we had : * found the buffer in the pool in the first place, but we must : * recheck the buffer tag after pinning it, because it could still : * get renamed under us. : */ : foundbuf = &BufferDescriptors[buf_id]; 0.00 : 675fea: 48 63 d8 movslq %eax,%rbx : valid = PinBuffer(foundbuf, strategy); 0.00 : 675fed: 4c 89 fe mov %r15,%rsi : * did what we were about to do. We can handle this as if we had : * found the buffer in the pool in the first place, but we must : * recheck the buffer tag after pinning it, because it could still : * get renamed under us. : */ : foundbuf = &BufferDescriptors[buf_id]; 0.00 : 675ff0: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 675ff4: 48 03 1d 05 9b 54 00 add 0x549b05(%rip),%rbx # bbfb00 : valid = PinBuffer(foundbuf, strategy); 0.00 : 675ffb: 48 89 df mov %rbx,%rdi 0.00 : 675ffe: 49 89 dc mov %rbx,%r12 0.00 : 676001: e8 2a ec ff ff callq 674c30 0.00 : 676006: 41 89 c5 mov %eax,%r13d : if (!BUFFERTAGS_EQUAL(newTag, foundbuf->tag)) 0.00 : 676009: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 67600c: 3b 43 08 cmp 0x8(%rbx),%eax 0.00 : 67600f: 75 b7 jne 675fc8 0.00 : 676011: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 676014: 3b 43 04 cmp 0x4(%rbx),%eax 0.00 : 676017: 75 af jne 675fc8 0.00 : 676019: 8b 45 b0 mov -0x50(%rbp),%eax 0.00 : 67601c: 3b 03 cmp (%rbx),%eax 0.00 : 67601e: 75 a8 jne 675fc8 0.00 : 676020: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 676023: 3b 43 10 cmp 0x10(%rbx),%eax 0.00 : 676026: 75 a0 jne 675fc8 0.00 : 676028: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 67602b: 3b 43 0c cmp 0xc(%rbx),%eax 0.00 : 67602e: 75 98 jne 675fc8 : : /* : * Collision confirmed. Give up the buffer we were planning to : * use. : */ : UnpinBuffer(buf, true); 0.00 : 676030: be 01 00 00 00 mov $0x1,%esi 0.00 : 676035: 4c 89 f7 mov %r14,%rdi 0.00 : 676038: e8 f3 ec ff ff callq 674d30 : : *foundPtr = TRUE; : : if (!valid) 0.00 : 67603d: 45 84 ed test %r13b,%r13b : * Collision confirmed. Give up the buffer we were planning to : * use. : */ : UnpinBuffer(buf, true); : : *foundPtr = TRUE; 0.00 : 676040: c6 45 cf 01 movb $0x1,-0x31(%rbp) : : if (!valid) 0.00 : 676044: 0f 85 cd fd ff ff jne 675e17 : * in the page, or (b) a previous read attempt failed. We : * have to wait for any active read attempt to finish, and : * then set up our own read attempt if the page is still not : * BM_VALID. StartBufferIO does it all. : */ : if (StartBufferIO(foundbuf, true)) 0.00 : 67604a: be 01 00 00 00 mov $0x1,%esi 0.00 : 67604f: 4c 89 e7 mov %r12,%rdi 0.00 : 676052: e8 e9 e3 ff ff callq 674440 0.00 : 676057: 84 c0 test %al,%al 0.00 : 676059: 0f 84 b8 fd ff ff je 675e17 : { : /* : * If we get here, previous attempts to read the buffer : * must have failed ... but we shall bravely try again. : */ : *foundPtr = FALSE; 0.00 : 67605f: c6 45 cf 00 movb $0x0,-0x31(%rbp) 0.00 : 676063: e9 af fd ff ff jmpq 675e17 0.00 : 676068: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 67606f: 00 : * (This has been observed to happen when two backends are both : * trying to split btree index pages, and the second one just : * happens to be trying to split the page the first one got from : * StrategyGetBuffer.) : */ : if (LWLockConditionalAcquire(buf->content_lock, LW_SHARED)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:914 0.70 : 676070: 49 8b 7e 38 mov 0x38(%r14),%rdi 0.00 : 676074: be 01 00 00 00 mov $0x1,%esi 0.00 : 676079: e8 22 8f 01 00 callq 68efa0 0.00 : 67607e: 84 c0 test %al,%al 0.00 : 676080: 0f 84 ee fe ff ff je 675f74 : * would require a WAL flush, let the strategy decide whether : * to go ahead and write/reuse the buffer or to choose another : * victim. We need lock to inspect the page LSN, so this : * can't be done inside StrategyGetBuffer. : */ : if (strategy != NULL) 0.00 : 676086: 4d 85 ff test %r15,%r15 0.00 : 676089: 74 4c je 6760d7 : { : XLogRecPtr lsn; : : /* Read the LSN while holding buffer header lock */ : LockBufHdr(buf); 0.00 : 67608b: 49 8d 7e 20 lea 0x20(%r14),%rdi 0.00 : 67608f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 676094: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:928 1.41 : 676097: 84 c0 test %al,%al 0.00 : 676099: 0f 85 92 00 00 00 jne 676131 : lsn = BufferGetLSN(buf); 0.00 : 67609f: 41 8b 46 24 mov 0x24(%r14),%eax 0.00 : 6760a3: 41 8b 56 24 mov 0x24(%r14),%edx 0.00 : 6760a7: 48 8b 0d 4a 9a 54 00 mov 0x549a4a(%rip),%rcx # bbfaf8 0.00 : 6760ae: 48 98 cltq 0.00 : 6760b0: 48 63 d2 movslq %edx,%rdx 0.00 : 6760b3: 48 c1 e0 0d shl $0xd,%rax 0.00 : 6760b7: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 6760bb: 8b 3c 01 mov (%rcx,%rax,1),%edi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:929 12.68 : 6760be: 8b 44 11 04 mov 0x4(%rcx,%rdx,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:929 0.70 : 6760c2: 48 c1 e7 20 shl $0x20,%rdi 0.70 : 6760c6: 48 09 c7 or %rax,%rdi : UnlockBufHdr(buf); 0.00 : 6760c9: 41 c6 46 20 00 movb $0x0,0x20(%r14) : : if (XLogNeedsFlush(lsn) && 0.00 : 6760ce: e8 dd dc e5 ff callq 4d3db0 0.00 : 6760d3: 84 c0 test %al,%al 0.00 : 6760d5: 75 30 jne 676107 : TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START(forkNum, blockNum, : smgr->smgr_rnode.node.spcNode, : smgr->smgr_rnode.node.dbNode, : smgr->smgr_rnode.node.relNode); : : FlushBuffer(buf, NULL); 0.00 : 6760d7: 4c 89 f7 mov %r14,%rdi 0.00 : 6760da: 31 f6 xor %esi,%esi 0.00 : 6760dc: e8 6f ee ff ff callq 674f50 : LWLockRelease(buf->content_lock); 0.00 : 6760e1: 49 8b 7e 38 mov 0x38(%r14),%rdi 0.00 : 6760e5: e8 b6 92 01 00 callq 68f3a0 0.00 : 6760ea: e9 b5 fe ff ff jmpq 675fa4 0.00 : 6760ef: 90 nop : } : : /* : * Need to lock the buffer header too in order to change its tag. : */ : LockBufHdr(buf); 0.00 : 6760f0: ba 0f 04 00 00 mov $0x40f,%edx 0.00 : 6760f5: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 6760fa: 48 89 df mov %rbx,%rdi 0.00 : 6760fd: e8 3e 9f 01 00 callq 690040 0.00 : 676102: e9 45 fe ff ff jmpq 675f4c : /* Read the LSN while holding buffer header lock */ : LockBufHdr(buf); : lsn = BufferGetLSN(buf); : UnlockBufHdr(buf); : : if (XLogNeedsFlush(lsn) && 0.00 : 676107: 4c 89 f6 mov %r14,%rsi 0.00 : 67610a: 4c 89 ff mov %r15,%rdi 0.00 : 67610d: e8 0e 11 00 00 callq 677220 0.00 : 676112: 84 c0 test %al,%al 0.00 : 676114: 74 c1 je 6760d7 : StrategyRejectBuffer(strategy, buf)) : { : /* Drop lock/pin and loop around for another buffer */ : LWLockRelease(buf->content_lock); 0.00 : 676116: 49 8b 7e 38 mov 0x38(%r14),%rdi 0.00 : 67611a: e8 81 92 01 00 callq 68f3a0 : UnpinBuffer(buf, true); 0.00 : 67611f: be 01 00 00 00 mov $0x1,%esi 0.00 : 676124: 4c 89 f7 mov %r14,%rdi 0.00 : 676127: e8 04 ec ff ff callq 674d30 0.00 : 67612c: e9 50 fe ff ff jmpq 675f81 : if (strategy != NULL) : { : XLogRecPtr lsn; : : /* Read the LSN while holding buffer header lock */ : LockBufHdr(buf); 0.00 : 676131: ba a0 03 00 00 mov $0x3a0,%edx 0.00 : 676136: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 67613b: e8 00 9f 01 00 callq 690040 0.00 : 676140: e9 5a ff ff ff jmpq 67609f : : if (isLocalBuf) : { : bufHdr = LocalBufferAlloc(smgr, forkNum, blockNum, &found); : if (found) : pgBufferUsage.local_blks_hit++; 0.00 : 676145: 48 83 05 33 96 54 00 addq $0x1,0x549633(%rip) # bbf780 0.00 : 67614c: 01 0.00 : 67614d: e9 e0 fb ff ff jmpq 675d32 : * Clearing BM_VALID here is necessary, clearing the dirtybits is just : * paranoia. We also reset the usage_count since any recency of use of : * the old content is no longer relevant. (The usage_count starts out at : * 1 so that the buffer can survive one clock-sweep pass.) : */ : buf->tag = newTag; 0.00 : 676152: 48 8b 45 b0 mov -0x50(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1064 0.70 : 676156: 49 89 06 mov %rax,(%r14) 0.00 : 676159: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 67615d: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 676161: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 676164: 41 89 46 10 mov %eax,0x10(%r14) : buf->flags &= ~(BM_VALID | BM_DIRTY | BM_JUST_DIRTIED | BM_CHECKPOINT_NEEDED | BM_IO_ERROR | BM_PERMANENT); 0.00 : 676168: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 67616d: 66 25 4c fe and $0xfe4c,%ax 0.00 : 676171: 66 41 89 46 14 mov %ax,0x14(%r14) : if (relpersistence == RELPERSISTENCE_PERMANENT) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1066 1.41 : 676176: 80 bd 7f ff ff ff 70 cmpb $0x70,-0x81(%rbp) 0.00 : 67617d: 0f 84 73 02 00 00 je 6763f6 : buf->flags |= BM_TAG_VALID | BM_PERMANENT; : else : buf->flags |= BM_TAG_VALID; 0.00 : 676183: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 676188: 83 c8 04 or $0x4,%eax 0.00 : 67618b: 66 41 89 46 14 mov %ax,0x14(%r14) : buf->usage_count = 1; 0.00 : 676190: 66 41 c7 46 16 01 00 movw $0x1,0x16(%r14) : : UnlockBufHdr(buf); : : if (oldFlags & BM_TAG_VALID) 0.00 : 676197: 83 e2 04 and $0x4,%edx : buf->flags |= BM_TAG_VALID | BM_PERMANENT; : else : buf->flags |= BM_TAG_VALID; : buf->usage_count = 1; : : UnlockBufHdr(buf); 0.00 : 67619a: 41 c6 46 20 00 movb $0x0,0x20(%r14) : : if (oldFlags & BM_TAG_VALID) 0.00 : 67619f: 0f 85 64 02 00 00 jne 676409 : /* : * Buffer contents are currently invalid. Try to get the io_in_progress : * lock. If StartBufferIO returns false, then someone else managed to : * read it before we did, so there's nothing left for BufferAlloc() to do. : */ : if (StartBufferIO(buf, true)) 0.00 : 6761a5: be 01 00 00 00 mov $0x1,%esi 0.00 : 6761aa: 4c 89 f7 mov %r14,%rdi 0.00 : 6761ad: e8 8e e2 ff ff callq 674440 0.00 : 6761b2: 84 c0 test %al,%al 0.00 : 6761b4: 0f 84 d5 00 00 00 je 67628f : *foundPtr = FALSE; 0.00 : 6761ba: c6 45 cf 00 movb $0x0,-0x31(%rbp) : bufHdr = BufferAlloc(smgr, relpersistence, forkNum, blockNum, : strategy, &found); : if (found) : pgBufferUsage.shared_blks_hit++; : else : pgBufferUsage.shared_blks_read++; 0.00 : 6761be: 48 83 05 a2 95 54 00 addq $0x1,0x5495a2(%rip) # bbf768 0.00 : 6761c5: 01 0.00 : 6761c6: e9 67 fb ff ff jmpq 675d32 : * it's not been recycled) but come right back here to try smgrextend : * again. : */ : Assert(!(bufHdr->flags & BM_VALID)); /* spinlock not needed */ : : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); 0.00 : 6761cb: 41 8b 46 24 mov 0x24(%r14),%eax 0.00 : 6761cf: 4c 63 e0 movslq %eax,%r12 0.00 : 6761d2: 49 c1 e4 0d shl $0xd,%r12 0.00 : 6761d6: 4c 03 25 1b 99 54 00 add 0x54991b(%rip),%r12 # bbfaf8 : : if (isExtend) 0.00 : 6761dd: 80 7d 8e 00 cmpb $0x0,-0x72(%rbp) 0.00 : 6761e1: 0f 84 7c fc ff ff je 675e63 : { : /* new buffers are zero-filled */ : MemSet((char *) bufBlock, 0, BLCKSZ); 0.00 : 6761e7: 31 c0 xor %eax,%eax 0.00 : 6761e9: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 6761ee: 4c 89 e7 mov %r12,%rdi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:713 33.10 : 6761f1: f3 48 ab rep stos %rax,%es:(%rdi) : /* don't set checksum for all-zero page */ : smgrextend(smgr, forkNum, blockNum, (char *) bufBlock, false); 0.00 : 6761f4: 45 31 c0 xor %r8d,%r8d 0.00 : 6761f7: 4c 89 e1 mov %r12,%rcx 0.00 : 6761fa: 8b 95 74 ff ff ff mov -0x8c(%rbp),%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:715 0.70 : 676200: 8b b5 78 ff ff ff mov -0x88(%rbp),%esi 0.00 : 676206: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 67620a: e8 c1 31 02 00 callq 6993d0 : relpath(smgr->smgr_rnode, forkNum)))); : } : } : } : : if (isLocalBuf) 0.00 : 67620f: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 676213: 0f 85 e8 fc ff ff jne 675f01 : bufHdr->flags |= BM_VALID; : } : else : { : /* Set BM_VALID, terminate IO, and wake up any waiters */ : TerminateBufferIO(bufHdr, false, BM_VALID); 0.00 : 676219: ba 02 00 00 00 mov $0x2,%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:773 0.70 : 67621e: 31 f6 xor %esi,%esi 0.00 : 676220: 4c 89 f7 mov %r14,%rdi 0.00 : 676223: e8 a8 df ff ff callq 6741d0 0.00 : 676228: e9 e1 fc ff ff jmpq 675f0e : smgr->smgr_rnode.backend, : isExtend); : : /* Substitute proper block number if caller asked for P_NEW */ : if (isExtend) : blockNum = smgrnblocks(smgr, forkNum); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:596 0.70 : 67622d: 8b b5 78 ff ff ff mov -0x88(%rbp),%esi 0.00 : 676233: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 676237: e8 14 32 02 00 callq 699450 0.00 : 67623c: 89 85 74 ff ff ff mov %eax,-0x8c(%rbp) 0.00 : 676242: e9 b7 fa ff ff jmpq 675cfe : * lseek(SEEK_END) result that doesn't account for a recent write. In : * that situation, the pre-existing buffer would contain valid data : * that we don't want to overwrite. Since the legitimate case should : * always have left a zero-filled buffer, complain if not PageIsNew. : */ : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); 0.00 : 676247: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 67624b: 0f 85 8c 00 00 00 jne 6762dd 0.00 : 676251: 41 8b 46 24 mov 0x24(%r14),%eax 0.00 : 676255: 48 98 cltq 0.00 : 676257: 48 c1 e0 0d shl $0xd,%rax 0.00 : 67625b: 48 03 05 96 98 54 00 add 0x549896(%rip),%rax # bbfaf8 : if (!PageIsNew((Page) bufBlock)) 0.00 : 676262: 66 83 78 0e 00 cmpw $0x0,0xe(%rax) 0.00 : 676267: 0f 85 19 02 00 00 jne 676486 : * We *must* do smgrextend before succeeding, else the page will not : * be reserved by the kernel, and the next P_NEW call will decide to : * return the same page. Clear the BM_VALID bit, do the StartBufferIO : * call that BufferAlloc didn't, and proceed. : */ : if (isLocalBuf) 0.00 : 67626d: 80 7d 8f 00 cmpb $0x0,-0x71(%rbp) 0.00 : 676271: 49 8d 5e 20 lea 0x20(%r14),%rbx 0.00 : 676275: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 67627b: 74 54 je 6762d1 : { : /* Only need to adjust flags */ : Assert(bufHdr->flags & BM_VALID); : bufHdr->flags &= ~BM_VALID; 0.00 : 67627d: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 676282: 83 e0 fd and $0xfffffffd,%eax 0.00 : 676285: 66 41 89 46 14 mov %ax,0x14(%r14) 0.00 : 67628a: e9 b1 fb ff ff jmpq 675e40 : * read it before we did, so there's nothing left for BufferAlloc() to do. : */ : if (StartBufferIO(buf, true)) : *foundPtr = FALSE; : else : *foundPtr = TRUE; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1085 0.70 : 67628f: c6 45 cf 01 movb $0x1,-0x31(%rbp) 0.00 : 676293: e9 8c fb ff ff jmpq 675e24 : * BM_VALID between our clearing it and StartBufferIO inspecting : * it. : */ : do : { : LockBufHdr(bufHdr); 0.00 : 676298: ba ae 02 00 00 mov $0x2ae,%edx 0.00 : 67629d: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 6762a2: 48 89 df mov %rbx,%rdi 0.00 : 6762a5: e8 96 9d 01 00 callq 690040 : Assert(bufHdr->flags & BM_VALID); : bufHdr->flags &= ~BM_VALID; 0.00 : 6762aa: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 6762af: 83 e0 fd and $0xfffffffd,%eax 0.00 : 6762b2: 66 41 89 46 14 mov %ax,0x14(%r14) : UnlockBufHdr(bufHdr); : } while (!StartBufferIO(bufHdr, true)); 0.00 : 6762b7: be 01 00 00 00 mov $0x1,%esi : do : { : LockBufHdr(bufHdr); : Assert(bufHdr->flags & BM_VALID); : bufHdr->flags &= ~BM_VALID; : UnlockBufHdr(bufHdr); 0.00 : 6762bc: 41 c6 46 20 00 movb $0x0,0x20(%r14) : } while (!StartBufferIO(bufHdr, true)); 0.00 : 6762c1: 4c 89 f7 mov %r14,%rdi 0.00 : 6762c4: e8 77 e1 ff ff callq 674440 0.00 : 6762c9: 84 c0 test %al,%al 0.00 : 6762cb: 0f 85 fa fe ff ff jne 6761cb 0.00 : 6762d1: 44 89 e0 mov %r12d,%eax 0.00 : 6762d4: f0 86 03 lock xchg %al,(%rbx) : * BM_VALID between our clearing it and StartBufferIO inspecting : * it. : */ : do : { : LockBufHdr(bufHdr); 0.00 : 6762d7: 84 c0 test %al,%al 0.00 : 6762d9: 74 cf je 6762aa 0.00 : 6762db: eb bb jmp 676298 : * lseek(SEEK_END) result that doesn't account for a recent write. In : * that situation, the pre-existing buffer would contain valid data : * that we don't want to overwrite. Since the legitimate case should : * always have left a zero-filled buffer, complain if not PageIsNew. : */ : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); 0.00 : 6762dd: 41 8b 46 24 mov 0x24(%r14),%eax 0.00 : 6762e1: ba fe ff ff ff mov $0xfffffffe,%edx 0.00 : 6762e6: 29 c2 sub %eax,%edx 0.00 : 6762e8: 48 8b 05 29 6e 50 00 mov 0x506e29(%rip),%rax # b7d118 0.00 : 6762ef: 48 63 d2 movslq %edx,%rdx 0.00 : 6762f2: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 6762f6: e9 67 ff ff ff jmpq 676262 : /* check for garbage data */ : if (!PageIsVerified((Page) bufBlock, blockNum)) : { : if (mode == RBM_ZERO_ON_ERROR || zero_damaged_pages) : { : ereport(WARNING, 0.00 : 6762fb: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 6762ff: 44 8b 85 78 ff ff ff mov -0x88(%rbp),%r8d 0.00 : 676306: 48 89 d0 mov %rdx,%rax 0.00 : 676309: 8b 4a 0c mov 0xc(%rdx),%ecx 0.00 : 67630c: 8b 52 08 mov 0x8(%rdx),%edx 0.00 : 67630f: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 676312: 8b 30 mov (%rax),%esi 0.00 : 676314: e8 b7 82 13 00 callq 7ae5d0 0.00 : 676319: 8b b5 74 ff ff ff mov -0x8c(%rbp),%esi 0.00 : 67631f: 48 89 c2 mov %rax,%rdx 0.00 : 676322: bf c8 9e 8a 00 mov $0x8a9ec8,%edi 0.00 : 676327: 31 c0 xor %eax,%eax 0.00 : 676329: e8 72 65 10 00 callq 77c8a0 0.00 : 67632e: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 676333: 89 c3 mov %eax,%ebx 0.00 : 676335: e8 16 6a 10 00 callq 77cd50 0.00 : 67633a: 89 de mov %ebx,%esi 0.00 : 67633c: 89 c7 mov %eax,%edi 0.00 : 67633e: 31 c0 xor %eax,%eax 0.00 : 676340: e8 9b 42 10 00 callq 77a5e0 0.00 : 676345: e9 a0 fb ff ff jmpq 675eea : { : instr_time io_start, : io_time; : : if (track_io_timing) : INSTR_TIME_SET_CURRENT(io_start); 0.00 : 67634a: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 67634e: 31 f6 xor %esi,%esi 0.00 : 676350: e8 6b 32 df ff callq 4695c0 0.00 : 676355: e9 1f fb ff ff jmpq 675e79 : : smgrread(smgr, forkNum, blockNum, (char *) bufBlock); : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); 0.00 : 67635a: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 67635e: 31 f6 xor %esi,%esi 0.00 : 676360: e8 5b 32 df ff callq 4695c0 : INSTR_TIME_SUBTRACT(io_time, io_start); 0.00 : 676365: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 676369: 48 2b 55 98 sub -0x68(%rbp),%rdx 0.00 : 67636d: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 676371: 48 2b 45 90 sub -0x70(%rbp),%rax 0.00 : 676375: 48 85 d2 test %rdx,%rdx 0.00 : 676378: 48 89 55 b8 mov %rdx,-0x48(%rbp) 0.00 : 67637c: 48 89 c1 mov %rax,%rcx 0.00 : 67637f: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 676383: 79 18 jns 67639d : */ : static Buffer : ReadBuffer_common(SMgrRelation smgr, char relpersistence, ForkNumber forkNum, : BlockNumber blockNum, ReadBufferMode mode, : BufferAccessStrategy strategy, bool *hit) : { 0.00 : 676385: 48 83 e8 01 sub $0x1,%rax : smgrread(smgr, forkNum, blockNum, (char *) bufBlock); : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); : INSTR_TIME_SUBTRACT(io_time, io_start); 0.00 : 676389: 48 81 c2 40 42 0f 00 add $0xf4240,%rdx 0.00 : 676390: 78 f3 js 676385 0.00 : 676392: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 676396: 48 89 55 b8 mov %rdx,-0x48(%rbp) 0.00 : 67639a: 48 89 c1 mov %rax,%rcx : pgstat_count_buffer_read_time(INSTR_TIME_GET_MICROSEC(io_time)); 0.00 : 67639d: 48 69 c1 40 42 0f 00 imul $0xf4240,%rcx,%rax : INSTR_TIME_ADD(pgBufferUsage.blk_read_time, io_time); 0.00 : 6763a4: 48 01 0d 05 94 54 00 add %rcx,0x549405(%rip) # bbf7b0 : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); : INSTR_TIME_SUBTRACT(io_time, io_start); : pgstat_count_buffer_read_time(INSTR_TIME_GET_MICROSEC(io_time)); 0.00 : 6763ab: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 6763af: 48 01 05 0a 58 50 00 add %rax,0x50580a(%rip) # b7bbc0 : INSTR_TIME_ADD(pgBufferUsage.blk_read_time, io_time); 0.00 : 6763b6: 48 8b 05 fb 93 54 00 mov 0x5493fb(%rip),%rax # bbf7b8 0.00 : 6763bd: 48 03 45 b8 add -0x48(%rbp),%rax 0.00 : 6763c1: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6763c7: 48 89 05 ea 93 54 00 mov %rax,0x5493ea(%rip) # bbf7b8 0.00 : 6763ce: 0f 8e ca fa ff ff jle 675e9e 0.00 : 6763d4: 48 2d 40 42 0f 00 sub $0xf4240,%rax 0.00 : 6763da: 48 83 05 ce 93 54 00 addq $0x1,0x5493ce(%rip) # bbf7b0 0.00 : 6763e1: 01 0.00 : 6763e2: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6763e8: 48 89 05 c9 93 54 00 mov %rax,0x5493c9(%rip) # bbf7b8 0.00 : 6763ef: 7f e3 jg 6763d4 0.00 : 6763f1: e9 a8 fa ff ff jmpq 675e9e : * 1 so that the buffer can survive one clock-sweep pass.) : */ : buf->tag = newTag; : buf->flags &= ~(BM_VALID | BM_DIRTY | BM_JUST_DIRTIED | BM_CHECKPOINT_NEEDED | BM_IO_ERROR | BM_PERMANENT); : if (relpersistence == RELPERSISTENCE_PERMANENT) : buf->flags |= BM_TAG_VALID | BM_PERMANENT; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1067 1.41 : 6763f6: 41 0f b7 46 14 movzwl 0x14(%r14),%eax 0.00 : 6763fb: 66 0d 04 01 or $0x104,%ax 0.70 : 6763ff: 66 41 89 46 14 mov %ax,0x14(%r14) 0.00 : 676404: e9 87 fd ff ff jmpq 676190 : buf->usage_count = 1; : : UnlockBufHdr(buf); : : if (oldFlags & BM_TAG_VALID) : BufTableDelete(&oldTag); 0.00 : 676409: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 67640d: e8 3e d9 ff ff callq 673d50 0.00 : 676412: e9 8e fd ff ff jmpq 6761a5 : blockNum, : relpath(smgr->smgr_rnode, forkNum)))); : MemSet((char *) bufBlock, 0, BLCKSZ); : } : else : ereport(ERROR, 0.00 : 676417: 45 31 c0 xor %r8d,%r8d 0.00 : 67641a: b9 a0 a0 8a 00 mov $0x8aa0a0,%ecx 0.00 : 67641f: ba f8 02 00 00 mov $0x2f8,%edx 0.00 : 676424: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 676429: bf 14 00 00 00 mov $0x14,%edi 0.00 : 67642e: e8 8d 46 10 00 callq 77aac0 0.00 : 676433: 84 c0 test %al,%al 0.00 : 676435: 74 4a je 676481 0.00 : 676437: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 67643b: 44 8b 85 78 ff ff ff mov -0x88(%rbp),%r8d 0.00 : 676442: 48 89 d0 mov %rdx,%rax 0.00 : 676445: 8b 4a 0c mov 0xc(%rdx),%ecx 0.00 : 676448: 8b 52 08 mov 0x8(%rdx),%edx 0.00 : 67644b: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 67644e: 8b 30 mov (%rax),%esi 0.00 : 676450: e8 7b 81 13 00 callq 7ae5d0 0.00 : 676455: 8b b5 74 ff ff ff mov -0x8c(%rbp),%esi 0.00 : 67645b: 48 89 c2 mov %rax,%rdx 0.00 : 67645e: bf 48 28 88 00 mov $0x882848,%edi 0.00 : 676463: 31 c0 xor %eax,%eax 0.00 : 676465: e8 36 64 10 00 callq 77c8a0 0.00 : 67646a: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 67646f: 89 c3 mov %eax,%ebx 0.00 : 676471: e8 da 68 10 00 callq 77cd50 0.00 : 676476: 89 de mov %ebx,%esi 0.00 : 676478: 89 c7 mov %eax,%edi 0.00 : 67647a: 31 c0 xor %eax,%eax 0.00 : 67647c: e8 5f 41 10 00 callq 77a5e0 0.00 : 676481: e8 4a 30 df ff callq 4694d0 : * that we don't want to overwrite. Since the legitimate case should : * always have left a zero-filled buffer, complain if not PageIsNew. : */ : bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); : if (!PageIsNew((Page) bufBlock)) : ereport(ERROR, 0.00 : 676486: 45 31 c0 xor %r8d,%r8d 0.00 : 676489: b9 a0 a0 8a 00 mov $0x8aa0a0,%ecx 0.00 : 67648e: ba 97 02 00 00 mov $0x297,%edx 0.00 : 676493: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 676498: bf 14 00 00 00 mov $0x14,%edi 0.00 : 67649d: e8 1e 46 10 00 callq 77aac0 0.00 : 6764a2: 84 c0 test %al,%al 0.00 : 6764a4: 74 db je 676481 0.00 : 6764a6: bf 40 9e 8a 00 mov $0x8a9e40,%edi 0.00 : 6764ab: 31 c0 xor %eax,%eax 0.00 : 6764ad: e8 ee 57 10 00 callq 77bca0 0.00 : 6764b2: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 6764b6: 89 c3 mov %eax,%ebx 0.00 : 6764b8: 44 8b 85 78 ff ff ff mov -0x88(%rbp),%r8d 0.00 : 6764bf: 48 89 d0 mov %rdx,%rax 0.00 : 6764c2: 8b 4a 0c mov 0xc(%rdx),%ecx 0.00 : 6764c5: 8b 52 08 mov 0x8(%rdx),%edx 0.00 : 6764c8: 8b 78 04 mov 0x4(%rax),%edi 0.00 : 6764cb: 8b 30 mov (%rax),%esi 0.00 : 6764cd: e8 fe 80 13 00 callq 7ae5d0 0.00 : 6764d2: 8b b5 74 ff ff ff mov -0x8c(%rbp),%esi 0.00 : 6764d8: 48 89 c2 mov %rax,%rdx 0.00 : 6764db: bf 90 9e 8a 00 mov $0x8a9e90,%edi 0.00 : 6764e0: 31 c0 xor %eax,%eax 0.00 : 6764e2: e8 b9 63 10 00 callq 77c8a0 0.00 : 6764e7: 89 de mov %ebx,%esi 0.00 : 6764e9: 89 c7 mov %eax,%edi 0.00 : 6764eb: 31 c0 xor %eax,%eax 0.00 : 6764ed: e8 ee 40 10 00 callq 77a5e0 0.00 : 6764f2: eb 8d jmp 676481 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 29.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 17.61 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 16.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 0.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:317 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c6af0 : : PG_RETURN_BOOL(dateVal1 != dateVal2); : } : : Datum : date_lt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:312 29.58 : 6c6af0: 48 8b 47 28 mov 0x28(%rdi),%rax 35.21 : 6c6af4: 39 47 20 cmp %eax,0x20(%rdi) 17.61 : 6c6af7: 55 push %rbp 0.00 : 6c6af8: 48 89 e5 mov %rsp,%rbp : DateADT dateVal1 = PG_GETARG_DATEADT(0); : DateADT dateVal2 = PG_GETARG_DATEADT(1); : : PG_RETURN_BOOL(dateVal1 < dateVal2); : } 0.00 : 6c6afb: c9 leaveq : PG_RETURN_BOOL(dateVal1 != dateVal2); : } : : Datum : date_lt(PG_FUNCTION_ARGS) : { 16.90 : 6c6afc: 0f 9c c0 setl %al /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:317 0.70 : 6c6aff: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.55 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 18.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 11.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 10.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 8.03 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 5.84 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 4.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 4.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 3.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 2.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 1.46 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 1.46 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 1.46 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 0.73 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694660 : : */ : void : CheckForSerializableConflictOut(bool visible, Relation relation, : HeapTuple tuple, Buffer buffer, : Snapshot snapshot) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 18.25 : 694660: 55 push %rbp 0.00 : 694661: 48 89 e5 mov %rsp,%rbp 10.22 : 694664: 4c 89 65 f0 mov %r12,-0x10(%rbp) 8.03 : 694668: 4c 89 6d f8 mov %r13,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 2.92 : 69466c: 49 89 d4 mov %rdx,%r12 3.65 : 69466f: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 11.68 : 694673: 48 83 ec 30 sub $0x30,%rsp : */ : static inline bool : SerializationNeededForRead(Relation relation, Snapshot snapshot) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 4.38 : 694677: 48 8b 15 42 a0 4e 00 mov 0x4ea042(%rip),%rdx # b7e6c0 : */ : void : CheckForSerializableConflictOut(bool visible, Relation relation, : HeapTuple tuple, Buffer buffer, : Snapshot snapshot) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:3871 1.46 : 69467e: 41 89 fd mov %edi,%r13d : */ : static inline bool : SerializationNeededForRead(Relation relation, Snapshot snapshot) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:491 1.46 : 694681: 48 85 d2 test %rdx,%rdx 0.00 : 694684: 74 13 je 694699 : * This excludes things like CLUSTER and REINDEX. They use the wholesale : * functions TransferPredicateLocksToHeapRelation() and : * CheckTableForSerializableConflictIn() to participate serialization, but : * the scans involved don't need serialization. : */ : if (!IsMVCCSnapshot(snapshot)) 0.00 : 694686: 49 8b 00 mov (%r8),%rax 0.00 : 694689: 48 3d 50 57 7a 00 cmp $0x7a5750,%rax 0.00 : 69468f: 74 1f je 6946b0 0.00 : 694691: 48 3d 60 47 7a 00 cmp $0x7a4760,%rax 0.00 : 694697: 74 17 je 6946b0 : * Flag the conflict. But first, if this conflict creates a dangerous : * structure, ereport an error. : */ : FlagRWConflict(MySerializableXact, sxact); : LWLockRelease(SerializableXactHashLock); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 5.84 : 694699: 48 8b 5d e8 mov -0x18(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 4.38 : 69469d: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.73 : 6946a1: 4c 8b 6d f8 mov -0x8(%rbp),%r13 1.46 : 6946a5: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4064 25.55 : 6946a6: c3 retq 0.00 : 6946a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6946ae: 00 00 : * : * A transaction is flagged as RO_SAFE if all concurrent R/W transactions : * commit without having conflicts out to an earlier snapshot, thus : * ensuring that no conflicts are possible for this transaction. : */ : if (SxactIsROSafe(MySerializableXact)) 0.00 : 6946b0: 8b 52 7c mov 0x7c(%rdx),%edx 0.00 : 6946b3: 84 d2 test %dl,%dl 0.00 : 6946b5: 78 69 js 694720 : * relations are exempt, as are materialized views. : */ : static inline bool : PredicateLockingNeededForRelation(Relation relation) : { : return !(relation->rd_id < FirstBootstrapObjectId || 0.00 : 6946b7: 81 7e 40 0f 27 00 00 cmpl $0x270f,0x40(%rsi) 0.00 : 6946be: 76 d9 jbe 694699 0.00 : 6946c0: 48 8b 46 30 mov 0x30(%rsi),%rax 0.00 : 6946c4: 80 78 6e 74 cmpb $0x74,0x6e(%rax) 0.00 : 6946c8: 74 cf je 694699 0.00 : 6946ca: 80 78 6f 6d cmpb $0x6d,0x6f(%rax) 0.00 : 6946ce: 66 90 xchg %ax,%ax 0.00 : 6946d0: 74 c7 je 694699 : : if (!SerializationNeededForRead(relation, snapshot)) : return; : : /* Check if someone else has already decided that we need to die */ : if (SxactIsDoomed(MySerializableXact)) 0.00 : 6946d2: 83 e2 08 and $0x8,%edx 0.00 : 6946d5: 0f 85 55 02 00 00 jne 694930 : * transaction, either to create it not visible to us, or to delete it : * while it is visible to us. The "visible" bool indicates whether the : * tuple is visible to us, while HeapTupleSatisfiesVacuum checks what else : * is going on with it. : */ : htsvResult = HeapTupleSatisfiesVacuum(tuple, TransactionXmin, buffer); 0.00 : 6946db: 8b 35 77 e0 4d 00 mov 0x4de077(%rip),%esi # b72758 0.00 : 6946e1: 89 ca mov %ecx,%edx 0.00 : 6946e3: 4c 89 e7 mov %r12,%rdi 0.00 : 6946e6: e8 35 04 11 00 callq 7a4b20 : switch (htsvResult) 0.00 : 6946eb: 83 f8 04 cmp $0x4,%eax : * transaction, either to create it not visible to us, or to delete it : * while it is visible to us. The "visible" bool indicates whether the : * tuple is visible to us, while HeapTupleSatisfiesVacuum checks what else : * is going on with it. : */ : htsvResult = HeapTupleSatisfiesVacuum(tuple, TransactionXmin, buffer); 0.00 : 6946ee: 89 c3 mov %eax,%ebx : switch (htsvResult) 0.00 : 6946f0: 76 3e jbe 694730 : /* : * The only way to get to this default clause is if a new value is : * added to the enum type without adding it to this switch : * statement. That's a bug, so elog. : */ : elog(ERROR, "unrecognized return value from HeapTupleSatisfiesVacuum: %u", htsvResult); 0.00 : 6946f2: ba e0 da 8a 00 mov $0x8adae0,%edx 0.00 : 6946f7: be 56 0f 00 00 mov $0xf56,%esi 0.00 : 6946fc: bf d3 d1 8a 00 mov $0x8ad1d3,%edi 0.00 : 694701: e8 1a 6d 0e 00 callq 77b420 0.00 : 694706: 89 da mov %ebx,%edx 0.00 : 694708: be a0 d8 8a 00 mov $0x8ad8a0,%esi 0.00 : 69470d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 694712: 31 c0 xor %eax,%eax 0.00 : 694714: e8 17 6b 0e 00 callq 77b230 0.00 : 694719: e8 b2 4d dd ff callq 4694d0 0.00 : 69471e: 66 90 xchg %ax,%ax : * commit without having conflicts out to an earlier snapshot, thus : * ensuring that no conflicts are possible for this transaction. : */ : if (SxactIsROSafe(MySerializableXact)) : { : ReleasePredicateLocks(false); 0.00 : 694720: 31 ff xor %edi,%edi 0.00 : 694722: e8 c9 e1 ff ff callq 6928f0 0.00 : 694727: e9 6d ff ff ff jmpq 694699 0.00 : 69472c: 0f 1f 40 00 nopl 0x0(%rax) : * while it is visible to us. The "visible" bool indicates whether the : * tuple is visible to us, while HeapTupleSatisfiesVacuum checks what else : * is going on with it. : */ : htsvResult = HeapTupleSatisfiesVacuum(tuple, TransactionXmin, buffer); : switch (htsvResult) 0.00 : 694730: 89 c0 mov %eax,%eax 0.00 : 694732: ff 24 c5 c0 d9 8a 00 jmpq *0x8ad9c0(,%rax,8) 0.00 : 694739: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (visible) : return; : xid = HeapTupleHeaderGetXmin(tuple->t_data); : break; : case HEAPTUPLE_RECENTLY_DEAD: : if (!visible) 0.00 : 694740: 45 84 ed test %r13b,%r13b 0.00 : 694743: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 694748: 0f 84 4b ff ff ff je 694699 : return; : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); : break; : case HEAPTUPLE_DELETE_IN_PROGRESS: : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); 0.00 : 69474e: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 694753: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 694757: 89 d0 mov %edx,%eax 0.00 : 694759: 25 00 18 00 00 and $0x1800,%eax 0.00 : 69475e: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 694763: 0f 84 f7 00 00 00 je 694860 0.00 : 694769: 8b 5f 04 mov 0x4(%rdi),%ebx : : /* : * Find top level xid. Bail out if xid is too early to be a conflict, or : * if it's our own xid. : */ : if (TransactionIdEquals(xid, GetTopTransactionIdIfAny())) 0.00 : 69476c: e8 0f c4 e2 ff callq 4c0b80 0.00 : 694771: 39 d8 cmp %ebx,%eax 0.00 : 694773: 0f 84 20 ff ff ff je 694699 : return; : xid = SubTransGetTopmostTransaction(xid); 0.00 : 694779: 89 df mov %ebx,%edi 0.00 : 69477b: e8 70 21 e3 ff callq 4c68f0 : if (TransactionIdPrecedes(xid, TransactionXmin)) 0.00 : 694780: 8b 35 d2 df 4d 00 mov 0x4ddfd2(%rip),%esi # b72758 0.00 : 694786: 89 c7 mov %eax,%edi : * Find top level xid. Bail out if xid is too early to be a conflict, or : * if it's our own xid. : */ : if (TransactionIdEquals(xid, GetTopTransactionIdIfAny())) : return; : xid = SubTransGetTopmostTransaction(xid); 0.00 : 694788: 89 c3 mov %eax,%ebx : if (TransactionIdPrecedes(xid, TransactionXmin)) 0.00 : 69478a: e8 51 b8 e2 ff callq 4bffe0 0.00 : 69478f: 84 c0 test %al,%al 0.00 : 694791: 0f 85 02 ff ff ff jne 694699 : return; : if (TransactionIdEquals(xid, GetTopTransactionIdIfAny())) 0.00 : 694797: e8 e4 c3 e2 ff callq 4c0b80 0.00 : 69479c: 39 c3 cmp %eax,%ebx 0.00 : 69479e: 66 90 xchg %ax,%ax 0.00 : 6947a0: 0f 84 f3 fe ff ff je 694699 : : /* : * Find sxact or summarized info for the top level xid. : */ : sxidtag.xid = xid; : LWLockAcquire(SerializableXactHashLock, LW_EXCLUSIVE); 0.00 : 6947a6: 48 8b 3d 53 92 4e 00 mov 0x4e9253(%rip),%rdi # b7da00 0.00 : 6947ad: 31 f6 xor %esi,%esi : return; : : /* : * Find sxact or summarized info for the top level xid. : */ : sxidtag.xid = xid; 0.00 : 6947af: 89 5d d0 mov %ebx,-0x30(%rbp) : LWLockAcquire(SerializableXactHashLock, LW_EXCLUSIVE); 0.00 : 6947b2: 48 81 c7 80 03 00 00 add $0x380,%rdi 0.00 : 6947b9: e8 32 b3 ff ff callq 68faf0 : sxid = (SERIALIZABLEXID *) 0.00 : 6947be: 48 8b 3d 93 9f 4e 00 mov 0x4e9f93(%rip),%rdi # b7e758 0.00 : 6947c5: 48 8d 75 d0 lea -0x30(%rbp),%rsi 0.00 : 6947c9: 31 c9 xor %ecx,%ecx 0.00 : 6947cb: 31 d2 xor %edx,%edx 0.00 : 6947cd: e8 ce fe 0e 00 callq 7846a0 : hash_search(SerializableXidHash, &sxidtag, HASH_FIND, NULL); : if (!sxid) 0.00 : 6947d2: 48 85 c0 test %rax,%rax 0.00 : 6947d5: 0f 84 c5 01 00 00 je 6949a0 : : /* It's not serializable or otherwise not important. */ : LWLockRelease(SerializableXactHashLock); : return; : } : sxact = sxid->myXact; 0.00 : 6947db: 4c 8b 60 08 mov 0x8(%rax),%r12 : Assert(TransactionIdEquals(sxact->topXid, xid)); : if (sxact == MySerializableXact || SxactIsDoomed(sxact)) 0.00 : 6947df: 48 8b 0d da 9e 4e 00 mov 0x4e9eda(%rip),%rcx # b7e6c0 0.00 : 6947e6: 49 39 cc cmp %rcx,%r12 0.00 : 6947e9: 0f 84 b1 00 00 00 je 6948a0 0.00 : 6947ef: 41 8b 54 24 7c mov 0x7c(%r12),%edx 0.00 : 6947f4: f6 c2 08 test $0x8,%dl 0.00 : 6947f7: 0f 85 a3 00 00 00 jne 6948a0 : * We have a conflict out to a transaction which has a conflict out to a : * summarized transaction. That summarized transaction must have : * committed first, and we can't tell when it committed in relation to our : * snapshot acquisition, so something needs to be canceled. : */ : if (SxactHasSummaryConflictOut(sxact)) 0.00 : 6947fd: f6 c6 04 test $0x4,%dh 0.00 : 694800: 0f 84 b2 00 00 00 je 6948b8 : { : if (!SxactIsPrepared(sxact)) 0.00 : 694806: f6 c2 02 test $0x2,%dl 0.00 : 694809: 0f 85 39 03 00 00 jne 694b48 : { : sxact->flags |= SXACT_FLAG_DOOMED; 0.00 : 69480f: 83 ca 08 or $0x8,%edx 0.00 : 694812: 41 89 54 24 7c mov %edx,0x7c(%r12) : LWLockRelease(SerializableXactHashLock); 0.00 : 694817: 48 8b 3d e2 91 4e 00 mov 0x4e91e2(%rip),%rdi # b7da00 0.00 : 69481e: 48 81 c7 80 03 00 00 add $0x380,%rdi 0.00 : 694825: e8 76 ab ff ff callq 68f3a0 : * Flag the conflict. But first, if this conflict creates a dangerous : * structure, ereport an error. : */ : FlagRWConflict(MySerializableXact, sxact); : LWLockRelease(SerializableXactHashLock); : } 0.00 : 69482a: e9 6a fe ff ff jmpq 694699 0.00 : 69482f: 90 nop : */ : htsvResult = HeapTupleSatisfiesVacuum(tuple, TransactionXmin, buffer); : switch (htsvResult) : { : case HEAPTUPLE_LIVE: : if (visible) 0.00 : 694830: 45 84 ed test %r13b,%r13b 0.00 : 694833: 0f 85 60 fe ff ff jne 694699 : break; : case HEAPTUPLE_DELETE_IN_PROGRESS: : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); : break; : case HEAPTUPLE_INSERT_IN_PROGRESS: : xid = HeapTupleHeaderGetXmin(tuple->t_data); 0.00 : 694839: 49 8b 54 24 10 mov 0x10(%r12),%rdx : /* : * The only way to get to this default clause is if a new value is : * added to the enum type without adding it to this switch : * statement. That's a bug, so elog. : */ : elog(ERROR, "unrecognized return value from HeapTupleSatisfiesVacuum: %u", htsvResult); 0.00 : 69483e: bb 02 00 00 00 mov $0x2,%ebx : break; : case HEAPTUPLE_DELETE_IN_PROGRESS: : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); : break; : case HEAPTUPLE_INSERT_IN_PROGRESS: : xid = HeapTupleHeaderGetXmin(tuple->t_data); 0.00 : 694843: 0f b7 42 14 movzwl 0x14(%rdx),%eax 0.00 : 694847: 25 00 03 00 00 and $0x300,%eax 0.00 : 69484c: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 694851: 0f 84 15 ff ff ff je 69476c 0.00 : 694857: 8b 1a mov (%rdx),%ebx 0.00 : 694859: e9 0e ff ff ff jmpq 69476c 0.00 : 69485e: 66 90 xchg %ax,%ax : if (!visible) : return; : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); : break; : case HEAPTUPLE_DELETE_IN_PROGRESS: : xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); 0.00 : 694860: 84 d2 test %dl,%dl 0.00 : 694862: 0f 88 01 ff ff ff js 694769 0.00 : 694868: e8 b3 28 e0 ff callq 497120 0.00 : 69486d: 89 c3 mov %eax,%ebx 0.00 : 69486f: 90 nop 0.00 : 694870: e9 f7 fe ff ff jmpq 69476c : /* This write was already in our snapshot; no conflict. */ : LWLockRelease(SerializableXactHashLock); : return; : } : : if (RWConflictExists(MySerializableXact, sxact)) 0.00 : 694875: 48 8b 3d 44 9e 4e 00 mov 0x4e9e44(%rip),%rdi # b7e6c0 0.00 : 69487c: 4c 89 e6 mov %r12,%rsi 0.00 : 69487f: e8 1c cc ff ff callq 6914a0 0.00 : 694884: 84 c0 test %al,%al 0.00 : 694886: 75 18 jne 6948a0 : : /* : * Flag the conflict. But first, if this conflict creates a dangerous : * structure, ereport an error. : */ : FlagRWConflict(MySerializableXact, sxact); 0.00 : 694888: 48 8b 3d 31 9e 4e 00 mov 0x4e9e31(%rip),%rdi # b7e6c0 0.00 : 69488f: 4c 89 e6 mov %r12,%rsi 0.00 : 694892: e8 79 c5 ff ff callq 690e10 0.00 : 694897: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 69489e: 00 00 : LWLockRelease(SerializableXactHashLock); 0.00 : 6948a0: 48 8b 3d 59 91 4e 00 mov 0x4e9159(%rip),%rdi # b7da00 0.00 : 6948a7: 48 81 c7 80 03 00 00 add $0x380,%rdi 0.00 : 6948ae: e8 ed aa ff ff callq 68f3a0 0.00 : 6948b3: e9 e1 fd ff ff jmpq 694699 : /* : * If this is a read-only transaction and the writing transaction has : * committed, and it doesn't have a rw-conflict to a transaction which : * committed before it, no conflict. : */ : if (SxactIsReadOnly(MySerializableXact) 0.00 : 6948b8: f6 41 7c 20 testb $0x20,0x7c(%rcx) 0.00 : 6948bc: 74 10 je 6948ce 0.00 : 6948be: 89 d0 mov %edx,%eax 0.00 : 6948c0: 25 01 04 00 00 and $0x401,%eax 0.00 : 6948c5: 83 e8 01 sub $0x1,%eax 0.00 : 6948c8: 0f 84 e9 01 00 00 je 694ab7 : uint32 i; : : Assert(TransactionIdIsValid(xid)); : Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny())); : : snap = GetTransactionSnapshot(); 0.00 : 6948ce: e8 3d 2d 11 00 callq 7a7610 : : if (TransactionIdPrecedes(xid, snap->xmin)) 0.00 : 6948d3: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 6948d6: 89 df mov %ebx,%edi : uint32 i; : : Assert(TransactionIdIsValid(xid)); : Assert(!TransactionIdEquals(xid, GetTopTransactionIdIfAny())); : : snap = GetTransactionSnapshot(); 0.00 : 6948d8: 49 89 c5 mov %rax,%r13 : : if (TransactionIdPrecedes(xid, snap->xmin)) 0.00 : 6948db: e8 00 b7 e2 ff callq 4bffe0 0.00 : 6948e0: 84 c0 test %al,%al 0.00 : 6948e2: 75 bc jne 6948a0 : return false; : : if (TransactionIdFollowsOrEquals(xid, snap->xmax)) 0.00 : 6948e4: 41 8b 75 0c mov 0xc(%r13),%esi 0.00 : 6948e8: 89 df mov %ebx,%edi 0.00 : 6948ea: e8 81 b7 e2 ff callq 4c0070 0.00 : 6948ef: 84 c0 test %al,%al 0.00 : 6948f1: 75 82 jne 694875 : return true; : : for (i = 0; i < snap->xcnt; i++) 0.00 : 6948f3: 41 8b 75 18 mov 0x18(%r13),%esi 0.00 : 6948f7: 85 f6 test %esi,%esi 0.00 : 6948f9: 74 a5 je 6948a0 : { : if (xid == snap->xip[i]) 0.00 : 6948fb: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 6948ff: 31 d2 xor %edx,%edx 0.00 : 694901: 3b 18 cmp (%rax),%ebx 0.00 : 694903: 48 89 c1 mov %rax,%rcx 0.00 : 694906: 75 17 jne 69491f 0.00 : 694908: e9 68 ff ff ff jmpq 694875 0.00 : 69490d: 0f 1f 00 nopl (%rax) 0.00 : 694910: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 694913: 48 83 c1 04 add $0x4,%rcx 0.00 : 694917: 39 c3 cmp %eax,%ebx 0.00 : 694919: 0f 84 56 ff ff ff je 694875 : return false; : : if (TransactionIdFollowsOrEquals(xid, snap->xmax)) : return true; : : for (i = 0; i < snap->xcnt; i++) 0.00 : 69491f: 83 c2 01 add $0x1,%edx 0.00 : 694922: 39 f2 cmp %esi,%edx 0.00 : 694924: 72 ea jb 694910 0.00 : 694926: e9 75 ff ff ff jmpq 6948a0 0.00 : 69492b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return; : : /* Check if someone else has already decided that we need to die */ : if (SxactIsDoomed(MySerializableXact)) : { : ereport(ERROR, 0.00 : 694930: 45 31 c0 xor %r8d,%r8d 0.00 : 694933: b9 e0 da 8a 00 mov $0x8adae0,%ecx 0.00 : 694938: ba 30 0f 00 00 mov $0xf30,%edx 0.00 : 69493d: be d3 d1 8a 00 mov $0x8ad1d3,%esi 0.00 : 694942: bf 14 00 00 00 mov $0x14,%edi 0.00 : 694947: e8 74 61 0e 00 callq 77aac0 0.00 : 69494c: 84 c0 test %al,%al 0.00 : 69494e: 0f 84 c5 fd ff ff je 694719 0.00 : 694954: bf c8 d2 8a 00 mov $0x8ad2c8,%edi 0.00 : 694959: 31 c0 xor %eax,%eax 0.00 : 69495b: e8 40 73 0e 00 callq 77bca0 0.00 : 694960: bf 48 d8 8a 00 mov $0x8ad848,%edi 0.00 : 694965: 41 89 c5 mov %eax,%r13d : return; : } : else : { : LWLockRelease(SerializableXactHashLock); : ereport(ERROR, 0.00 : 694968: 31 c0 xor %eax,%eax 0.00 : 69496a: e8 11 7a 0e 00 callq 77c380 0.00 : 69496f: 89 c3 mov %eax,%ebx 0.00 : 694971: bf 48 d3 8a 00 mov $0x8ad348,%edi 0.00 : 694976: 31 c0 xor %eax,%eax 0.00 : 694978: e8 23 7f 0e 00 callq 77c8a0 0.00 : 69497d: bf 04 00 00 01 mov $0x1000004,%edi 0.00 : 694982: 41 89 c4 mov %eax,%r12d 0.00 : 694985: e8 c6 83 0e 00 callq 77cd50 0.00 : 69498a: 44 89 e9 mov %r13d,%ecx 0.00 : 69498d: 89 c7 mov %eax,%edi 0.00 : 69498f: 89 da mov %ebx,%edx 0.00 : 694991: 44 89 e6 mov %r12d,%esi 0.00 : 694994: 31 c0 xor %eax,%eax 0.00 : 694996: e8 45 5c 0e 00 callq 77a5e0 0.00 : 69499b: e9 79 fd ff ff jmpq 694719 : SerCommitSeqNo val; : int slotno; : : Assert(TransactionIdIsValid(xid)); : : LWLockAcquire(OldSerXidLock, LW_SHARED); 0.00 : 6949a0: 48 8b 3d 59 90 4e 00 mov 0x4e9059(%rip),%rdi # b7da00 0.00 : 6949a7: be 01 00 00 00 mov $0x1,%esi 0.00 : 6949ac: 48 81 c7 e0 03 00 00 add $0x3e0,%rdi 0.00 : 6949b3: e8 38 b1 ff ff callq 68faf0 : headXid = oldSerXidControl->headXid; 0.00 : 6949b8: 48 8b 05 79 9d 4e 00 mov 0x4e9d79(%rip),%rax # b7e738 : tailXid = oldSerXidControl->tailXid; : LWLockRelease(OldSerXidLock); 0.00 : 6949bf: 48 8b 3d 3a 90 4e 00 mov 0x4e903a(%rip),%rdi # b7da00 : int slotno; : : Assert(TransactionIdIsValid(xid)); : : LWLockAcquire(OldSerXidLock, LW_SHARED); : headXid = oldSerXidControl->headXid; 0.00 : 6949c6: 44 8b 60 04 mov 0x4(%rax),%r12d : tailXid = oldSerXidControl->tailXid; : LWLockRelease(OldSerXidLock); 0.00 : 6949ca: 48 81 c7 e0 03 00 00 add $0x3e0,%rdi : : Assert(TransactionIdIsValid(xid)); : : LWLockAcquire(OldSerXidLock, LW_SHARED); : headXid = oldSerXidControl->headXid; : tailXid = oldSerXidControl->tailXid; 0.00 : 6949d1: 44 8b 68 08 mov 0x8(%rax),%r13d : LWLockRelease(OldSerXidLock); 0.00 : 6949d5: e8 c6 a9 ff ff callq 68f3a0 : : if (!TransactionIdIsValid(headXid)) 0.00 : 6949da: 45 85 e4 test %r12d,%r12d 0.00 : 6949dd: 0f 84 bd fe ff ff je 6948a0 : return 0; : : Assert(TransactionIdIsValid(tailXid)); : : if (TransactionIdPrecedes(xid, tailXid) 0.00 : 6949e3: 44 89 ee mov %r13d,%esi 0.00 : 6949e6: 89 df mov %ebx,%edi 0.00 : 6949e8: e8 f3 b5 e2 ff callq 4bffe0 0.00 : 6949ed: 84 c0 test %al,%al 0.00 : 6949ef: 0f 85 ab fe ff ff jne 6948a0 0.00 : 6949f5: 44 89 e6 mov %r12d,%esi 0.00 : 6949f8: 89 df mov %ebx,%edi 0.00 : 6949fa: e8 41 b6 e2 ff callq 4c0040 0.00 : 6949ff: 84 c0 test %al,%al 0.00 : 694a01: 0f 85 99 fe ff ff jne 6948a0 : : /* : * The following function must be called without holding OldSerXidLock, : * but will return with that lock held, which must then be released. : */ : slotno = SimpleLruReadPage_ReadOnly(OldSerXidSlruCtl, 0.00 : 694a07: 89 de mov %ebx,%esi 0.00 : 694a09: 89 da mov %ebx,%edx 0.00 : 694a0b: bf e0 e6 b7 00 mov $0xb7e6e0,%edi 0.00 : 694a10: c1 ee 0a shr $0xa,%esi 0.00 : 694a13: 81 e6 ff ff 1f 00 and $0x1fffff,%esi 0.00 : 694a19: e8 02 1a e3 ff callq 4c6420 : OldSerXidPage(xid), xid); : val = OldSerXidValue(slotno, xid); 0.00 : 694a1e: 48 8b 15 bb 9c 4e 00 mov 0x4e9cbb(%rip),%rdx # b7e6e0 0.00 : 694a25: 48 98 cltq 0.00 : 694a27: 48 89 d9 mov %rbx,%rcx 0.00 : 694a2a: 81 e1 ff 03 00 00 and $0x3ff,%ecx : LWLockRelease(OldSerXidLock); 0.00 : 694a30: 48 8b 3d c9 8f 4e 00 mov 0x4e8fc9(%rip),%rdi # b7da00 : * The following function must be called without holding OldSerXidLock, : * but will return with that lock held, which must then be released. : */ : slotno = SimpleLruReadPage_ReadOnly(OldSerXidSlruCtl, : OldSerXidPage(xid), xid); : val = OldSerXidValue(slotno, xid); 0.00 : 694a37: 48 8b 52 10 mov 0x10(%rdx),%rdx : LWLockRelease(OldSerXidLock); 0.00 : 694a3b: 48 81 c7 e0 03 00 00 add $0x3e0,%rdi : * The following function must be called without holding OldSerXidLock, : * but will return with that lock held, which must then be released. : */ : slotno = SimpleLruReadPage_ReadOnly(OldSerXidSlruCtl, : OldSerXidPage(xid), xid); : val = OldSerXidValue(slotno, xid); 0.00 : 694a42: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 694a46: 4c 8b 24 c8 mov (%rax,%rcx,8),%r12 : LWLockRelease(OldSerXidLock); 0.00 : 694a4a: e8 51 a9 ff ff callq 68f3a0 : * got pushed out to SLRU storage for "old committed" transactions. : */ : SerCommitSeqNo conflictCommitSeqNo; : : conflictCommitSeqNo = OldSerXidGetMinConflictCommitSeqNo(xid); : if (conflictCommitSeqNo != 0) 0.00 : 694a4f: 4d 85 e4 test %r12,%r12 0.00 : 694a52: 0f 84 48 fe ff ff je 6948a0 : { : if (conflictCommitSeqNo != InvalidSerCommitSeqNo 0.00 : 694a58: 49 83 fc ff cmp $0xffffffffffffffff,%r12 0.00 : 694a5c: 74 77 je 694ad5 0.00 : 694a5e: 48 8b 05 5b 9c 4e 00 mov 0x4e9c5b(%rip),%rax # b7e6c0 0.00 : 694a65: f6 40 7c 20 testb $0x20,0x7c(%rax) 0.00 : 694a69: 74 06 je 694a71 0.00 : 694a6b: 4c 39 60 18 cmp %r12,0x18(%rax) 0.00 : 694a6f: 72 6b jb 694adc : && (!SxactIsReadOnly(MySerializableXact) : || conflictCommitSeqNo : <= MySerializableXact->SeqNo.lastCommitBeforeSnapshot)) : ereport(ERROR, 0.00 : 694a71: 45 31 c0 xor %r8d,%r8d 0.00 : 694a74: b9 e0 da 8a 00 mov $0x8adae0,%ecx 0.00 : 694a79: ba 89 0f 00 00 mov $0xf89,%edx 0.00 : 694a7e: be d3 d1 8a 00 mov $0x8ad1d3,%esi 0.00 : 694a83: bf 14 00 00 00 mov $0x14,%edi 0.00 : 694a88: e8 33 60 0e 00 callq 77aac0 0.00 : 694a8d: 84 c0 test %al,%al 0.00 : 694a8f: 0f 84 84 fc ff ff je 694719 0.00 : 694a95: bf c8 d2 8a 00 mov $0x8ad2c8,%edi 0.00 : 694a9a: 31 c0 xor %eax,%eax 0.00 : 694a9c: e8 ff 71 0e 00 callq 77bca0 0.00 : 694aa1: 89 de mov %ebx,%esi 0.00 : 694aa3: 41 89 c5 mov %eax,%r13d 0.00 : 694aa6: bf e0 d8 8a 00 mov $0x8ad8e0,%edi 0.00 : 694aab: 31 c0 xor %eax,%eax 0.00 : 694aad: e8 ce 78 0e 00 callq 77c380 0.00 : 694ab2: e9 b8 fe ff ff jmpq 69496f : /* : * If this is a read-only transaction and the writing transaction has : * committed, and it doesn't have a rw-conflict to a transaction which : * committed before it, no conflict. : */ : if (SxactIsReadOnly(MySerializableXact) 0.00 : 694ab7: 83 e2 10 and $0x10,%edx 0.00 : 694aba: 0f 84 e0 fd ff ff je 6948a0 0.00 : 694ac0: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 694ac5: 48 39 41 18 cmp %rax,0x18(%rcx) 0.00 : 694ac9: 0f 83 ff fd ff ff jae 6948ce 0.00 : 694acf: 90 nop 0.00 : 694ad0: e9 cb fd ff ff jmpq 6948a0 0.00 : 694ad5: 48 8b 05 e4 9b 4e 00 mov 0x4e9be4(%rip),%rax # b7e6c0 : (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), : errmsg("could not serialize access due to read/write dependencies among transactions"), : errdetail_internal("Reason code: Canceled on conflict out to old pivot %u.", xid), : errhint("The transaction might succeed if retried."))); : : if (SxactHasSummaryConflictIn(MySerializableXact) 0.00 : 694adc: f6 40 7d 02 testb $0x2,0x7d(%rax) 0.00 : 694ae0: 75 0d jne 694aef 0.00 : 694ae2: 48 8d 78 30 lea 0x30(%rax),%rdi 0.00 : 694ae6: e8 25 ea fe ff callq 683510 0.00 : 694aeb: 84 c0 test %al,%al 0.00 : 694aed: 75 46 jne 694b35 : || !SHMQueueEmpty(&MySerializableXact->inConflicts)) : ereport(ERROR, 0.00 : 694aef: 45 31 c0 xor %r8d,%r8d 0.00 : 694af2: b9 e0 da 8a 00 mov $0x8adae0,%ecx 0.00 : 694af7: ba 91 0f 00 00 mov $0xf91,%edx 0.00 : 694afc: be d3 d1 8a 00 mov $0x8ad1d3,%esi 0.00 : 694b01: bf 14 00 00 00 mov $0x14,%edi 0.00 : 694b06: e8 b5 5f 0e 00 callq 77aac0 0.00 : 694b0b: 84 c0 test %al,%al 0.00 : 694b0d: 0f 84 06 fc ff ff je 694719 0.00 : 694b13: bf c8 d2 8a 00 mov $0x8ad2c8,%edi 0.00 : 694b18: 31 c0 xor %eax,%eax 0.00 : 694b1a: e8 81 71 0e 00 callq 77bca0 0.00 : 694b1f: 89 de mov %ebx,%esi 0.00 : 694b21: 41 89 c5 mov %eax,%r13d 0.00 : 694b24: bf 18 d9 8a 00 mov $0x8ad918,%edi 0.00 : 694b29: 31 c0 xor %eax,%eax 0.00 : 694b2b: e8 50 78 0e 00 callq 77c380 0.00 : 694b30: e9 3a fe ff ff jmpq 69496f : (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), : errmsg("could not serialize access due to read/write dependencies among transactions"), : errdetail_internal("Reason code: Canceled on identification as a pivot, with conflict out to old committed transaction %u.", xid), : errhint("The transaction might succeed if retried."))); : : MySerializableXact->flags |= SXACT_FLAG_SUMMARY_CONFLICT_OUT; 0.00 : 694b35: 48 8b 05 84 9b 4e 00 mov 0x4e9b84(%rip),%rax # b7e6c0 0.00 : 694b3c: 81 48 7c 00 04 00 00 orl $0x400,0x7c(%rax) 0.00 : 694b43: e9 58 fd ff ff jmpq 6948a0 : LWLockRelease(SerializableXactHashLock); : return; : } : else : { : LWLockRelease(SerializableXactHashLock); 0.00 : 694b48: 48 8b 3d b1 8e 4e 00 mov 0x4e8eb1(%rip),%rdi # b7da00 0.00 : 694b4f: 48 81 c7 80 03 00 00 add $0x380,%rdi 0.00 : 694b56: e8 45 a8 ff ff callq 68f3a0 : ereport(ERROR, 0.00 : 694b5b: 45 31 c0 xor %r8d,%r8d 0.00 : 694b5e: b9 e0 da 8a 00 mov $0x8adae0,%ecx 0.00 : 694b63: ba b8 0f 00 00 mov $0xfb8,%edx 0.00 : 694b68: be d3 d1 8a 00 mov $0x8ad1d3,%esi 0.00 : 694b6d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 694b72: e8 49 5f 0e 00 callq 77aac0 0.00 : 694b77: 84 c0 test %al,%al 0.00 : 694b79: 0f 84 9a fb ff ff je 694719 0.00 : 694b7f: bf c8 d2 8a 00 mov $0x8ad2c8,%edi 0.00 : 694b84: 31 c0 xor %eax,%eax 0.00 : 694b86: e8 15 71 0e 00 callq 77bca0 0.00 : 694b8b: bf 80 d9 8a 00 mov $0x8ad980,%edi 0.00 : 694b90: 41 89 c5 mov %eax,%r13d 0.00 : 694b93: e9 d0 fd ff ff jmpq 694968 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2181 20.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2190 20.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2190 17.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2181 11.19 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2181 8.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2181 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077d9b0 : : : #ifdef USE_FLOAT4_BYVAL : : float4 : DatumGetFloat4(Datum X) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2181 22.39 : 77d9b0: 55 push %rbp 8.21 : 77d9b1: 48 89 e5 mov %rsp,%rbp 17.16 : 77d9b4: 89 7d fc mov %edi,-0x4(%rbp) 11.19 : 77d9b7: f3 0f 10 45 fc movss -0x4(%rbp),%xmm0 : float4 retval; : } myunion; : : myunion.value = GET_4_BYTES(X); : return myunion.retval; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2190 41.04 : 77d9bc: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 7.69 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:388 4.62 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:323 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:389 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:323 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:500 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:500 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:314 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:323 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:323 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:325 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:325 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:329 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:375 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:390 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000490350 : : * by using the final values of both b and c. b is perhaps a little less : * well mixed than c, however. : */ : Datum : hash_any(register const unsigned char *k, register int keylen) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 1.54 : 490350: 55 push %rbp 3.85 : 490351: 41 89 f2 mov %esi,%r10d : /* Set up the internal state */ : len = keylen; : a = b = c = 0x9e3779b9 + len + 3923095; : : /* If the source pointer is word-aligned, we use word-wide fetches */ : if (((uintptr_t) k & UINT32_ALIGN_MASK) == 0) 0.00 : 490354: 40 f6 c7 03 test $0x3,%dil : c, : len; : : /* Set up the internal state */ : len = keylen; : a = b = c = 0x9e3779b9 + len + 3923095; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:314 0.77 : 490358: 45 8d 82 50 56 73 9e lea -0x618ca9b0(%r10),%r8d : * by using the final values of both b and c. b is perhaps a little less : * well mixed than c, however. : */ : Datum : hash_any(register const unsigned char *k, register int keylen) : { /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:306 0.77 : 49035f: 48 89 e5 mov %rsp,%rbp 1.54 : 490362: 53 push %rbx : /* Set up the internal state */ : len = keylen; : a = b = c = 0x9e3779b9 + len + 3923095; : : /* If the source pointer is word-aligned, we use word-wide fetches */ : if (((uintptr_t) k & UINT32_ALIGN_MASK) == 0) 0.00 : 490363: 0f 84 f7 00 00 00 je 490460 : else : { : /* Code path for non-aligned source data */ : : /* handle most of the key */ : while (len >= 12) 0.00 : 490369: 83 fe 0b cmp $0xb,%esi : /* fall through */ : case 2: : a += ((uint32) k[1] << 8); : /* fall through */ : case 1: : a += k[0]; 0.00 : 49036c: 45 89 c1 mov %r8d,%r9d 0.00 : 49036f: 44 89 c2 mov %r8d,%edx : else : { : /* Code path for non-aligned source data */ : : /* handle most of the key */ : while (len >= 12) 0.00 : 490372: 0f 86 7e 02 00 00 jbe 4905f6 0.00 : 490378: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49037f: 00 : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); 0.00 : 490380: 0f b6 4f 05 movzbl 0x5(%rdi),%ecx 0.00 : 490384: 0f b6 47 06 movzbl 0x6(%rdi),%eax : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.00 : 490388: 0f b6 77 09 movzbl 0x9(%rdi),%esi : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); 0.00 : 49038c: c1 e0 10 shl $0x10,%eax 0.00 : 49038f: c1 e1 08 shl $0x8,%ecx 0.00 : 490392: 01 c1 add %eax,%ecx 0.00 : 490394: 0f b6 47 04 movzbl 0x4(%rdi),%eax : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.00 : 490398: c1 e6 08 shl $0x8,%esi : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); 0.00 : 49039b: 01 c1 add %eax,%ecx 0.00 : 49039d: 0f b6 47 07 movzbl 0x7(%rdi),%eax 0.00 : 4903a1: c1 e0 18 shl $0x18,%eax 0.00 : 4903a4: 01 c1 add %eax,%ecx : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.00 : 4903a6: 0f b6 47 0a movzbl 0xa(%rdi),%eax : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); 0.00 : 4903aa: 01 d1 add %edx,%ecx : #ifdef WORDS_BIGENDIAN : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); 0.00 : 4903ac: 0f b6 57 01 movzbl 0x1(%rdi),%edx : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.00 : 4903b0: c1 e0 10 shl $0x10,%eax 0.00 : 4903b3: 01 c6 add %eax,%esi 0.00 : 4903b5: 0f b6 47 08 movzbl 0x8(%rdi),%eax : #ifdef WORDS_BIGENDIAN : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); 0.00 : 4903b9: c1 e2 08 shl $0x8,%edx : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.00 : 4903bc: 01 c6 add %eax,%esi 0.00 : 4903be: 0f b6 47 0b movzbl 0xb(%rdi),%eax 0.00 : 4903c2: c1 e0 18 shl $0x18,%eax 0.00 : 4903c5: 01 c6 add %eax,%esi : #ifdef WORDS_BIGENDIAN : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); 0.00 : 4903c7: 0f b6 47 02 movzbl 0x2(%rdi),%eax : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); 0.00 : 4903cb: 44 01 c6 add %r8d,%esi : #ifdef WORDS_BIGENDIAN : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); 0.00 : 4903ce: c1 e0 10 shl $0x10,%eax 0.00 : 4903d1: 01 c2 add %eax,%edx 0.00 : 4903d3: 0f b6 07 movzbl (%rdi),%eax 0.00 : 4903d6: 01 c2 add %eax,%edx 0.00 : 4903d8: 0f b6 47 03 movzbl 0x3(%rdi),%eax 0.00 : 4903dc: c1 e0 18 shl $0x18,%eax 0.00 : 4903df: 01 c2 add %eax,%edx : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); : #endif /* WORDS_BIGENDIAN */ : mix(a, b, c); 0.00 : 4903e1: 89 f0 mov %esi,%eax : #ifdef WORDS_BIGENDIAN : a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); : b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); : c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); 0.00 : 4903e3: 44 01 ca add %r9d,%edx : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); : #endif /* WORDS_BIGENDIAN */ : mix(a, b, c); 0.00 : 4903e6: c1 c8 1c ror $0x1c,%eax 0.00 : 4903e9: 29 f2 sub %esi,%edx 0.00 : 4903eb: 01 ce add %ecx,%esi 0.00 : 4903ed: 31 c2 xor %eax,%edx 0.00 : 4903ef: 89 d0 mov %edx,%eax 0.00 : 4903f1: 29 d1 sub %edx,%ecx 0.00 : 4903f3: 01 f2 add %esi,%edx 0.00 : 4903f5: c1 c8 1a ror $0x1a,%eax 0.00 : 4903f8: 31 c8 xor %ecx,%eax 0.00 : 4903fa: 89 c1 mov %eax,%ecx 0.00 : 4903fc: 29 c6 sub %eax,%esi 0.00 : 4903fe: 01 d0 add %edx,%eax 0.00 : 490400: c1 c9 18 ror $0x18,%ecx 0.00 : 490403: 31 f1 xor %esi,%ecx 0.00 : 490405: 89 ce mov %ecx,%esi 0.00 : 490407: 29 ca sub %ecx,%edx 0.00 : 490409: 01 c1 add %eax,%ecx 0.00 : 49040b: c1 ce 10 ror $0x10,%esi : k += 12; : len -= 12; 0.00 : 49040e: 41 83 ea 0c sub $0xc,%r10d : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); : #endif /* WORDS_BIGENDIAN */ : mix(a, b, c); : k += 12; 0.00 : 490412: 48 83 c7 0c add $0xc,%rdi : #else /* !WORDS_BIGENDIAN */ : a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); : b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); : c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); : #endif /* WORDS_BIGENDIAN */ : mix(a, b, c); 0.00 : 490416: 31 d6 xor %edx,%esi 0.00 : 490418: 89 f2 mov %esi,%edx 0.00 : 49041a: 29 f0 sub %esi,%eax 0.00 : 49041c: 44 8d 0c 0e lea (%rsi,%rcx,1),%r9d 0.00 : 490420: c1 ca 0d ror $0xd,%edx 0.00 : 490423: 31 c2 xor %eax,%edx 0.00 : 490425: 41 89 d0 mov %edx,%r8d 0.00 : 490428: 29 d1 sub %edx,%ecx 0.00 : 49042a: 44 01 ca add %r9d,%edx 0.00 : 49042d: 41 c1 c8 1c ror $0x1c,%r8d 0.00 : 490431: 41 31 c8 xor %ecx,%r8d : else : { : /* Code path for non-aligned source data */ : : /* handle most of the key */ : while (len >= 12) 0.00 : 490434: 41 83 fa 0b cmp $0xb,%r10d 0.00 : 490438: 0f 87 42 ff ff ff ja 490380 0.00 : 49043e: 45 89 cb mov %r9d,%r11d 0.00 : 490441: 89 d6 mov %edx,%esi 0.00 : 490443: 44 89 c3 mov %r8d,%ebx : case 1: : a += ((uint32) k[0] << 24); : /* case 0: nothing left to add */ : } : #else /* !WORDS_BIGENDIAN */ : switch (len) /* all the case statements fall through */ 0.00 : 490446: 41 83 fa 0b cmp $0xb,%r10d 0.00 : 49044a: 0f 87 01 01 00 00 ja 490551 0.00 : 490450: 44 89 d0 mov %r10d,%eax 0.00 : 490453: ff 24 c5 18 22 7b 00 jmpq *0x7b2218(,%rax,8) 0.00 : 49045a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : /* Code path for aligned source data */ : register const uint32 *ka = (const uint32 *) k; : : /* handle most of the key */ : while (len >= 12) /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:323 1.54 : 490460: 83 fe 0b cmp $0xb,%esi 0.77 : 490463: 45 89 c1 mov %r8d,%r9d 0.00 : 490466: 44 89 c1 mov %r8d,%ecx 0.00 : 490469: 0f 86 79 01 00 00 jbe 4905e8 0.77 : 49046f: 90 nop : { : a += ka[0]; : b += ka[1]; : c += ka[2]; 0.00 : 490470: 44 89 c6 mov %r8d,%esi 0.00 : 490473: 03 77 08 add 0x8(%rdi),%esi : register const uint32 *ka = (const uint32 *) k; : : /* handle most of the key */ : while (len >= 12) : { : a += ka[0]; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:325 0.77 : 490476: 44 89 c8 mov %r9d,%eax 0.77 : 490479: 03 07 add (%rdi),%eax : b += ka[1]; 0.00 : 49047b: 03 4f 04 add 0x4(%rdi),%ecx : c += ka[2]; : mix(a, b, c); : ka += 3; : len -= 12; 0.00 : 49047e: 41 83 ea 0c sub $0xc,%r10d : { : a += ka[0]; : b += ka[1]; : c += ka[2]; : mix(a, b, c); : ka += 3; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:329 0.77 : 490482: 48 83 c7 0c add $0xc,%rdi : while (len >= 12) : { : a += ka[0]; : b += ka[1]; : c += ka[2]; : mix(a, b, c); 0.00 : 490486: 89 f2 mov %esi,%edx 0.00 : 490488: 29 f0 sub %esi,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:328 1.54 : 49048a: c1 ca 1c ror $0x1c,%edx 3.85 : 49048d: 01 ce add %ecx,%esi 0.77 : 49048f: 31 d0 xor %edx,%eax 0.00 : 490491: 89 c2 mov %eax,%edx 1.54 : 490493: 29 c1 sub %eax,%ecx 0.00 : 490495: 01 f0 add %esi,%eax 0.00 : 490497: c1 ca 1a ror $0x1a,%edx 1.54 : 49049a: 31 ca xor %ecx,%edx 0.00 : 49049c: 89 d1 mov %edx,%ecx 1.54 : 49049e: 29 d6 sub %edx,%esi 0.00 : 4904a0: 01 c2 add %eax,%edx 0.77 : 4904a2: c1 c9 18 ror $0x18,%ecx 2.31 : 4904a5: 31 f1 xor %esi,%ecx 0.00 : 4904a7: 89 ce mov %ecx,%esi 1.54 : 4904a9: 29 c8 sub %ecx,%eax 0.00 : 4904ab: 01 d1 add %edx,%ecx 0.77 : 4904ad: c1 ce 10 ror $0x10,%esi 2.31 : 4904b0: 31 c6 xor %eax,%esi 0.00 : 4904b2: 89 f0 mov %esi,%eax 1.54 : 4904b4: 29 f2 sub %esi,%edx 0.00 : 4904b6: 44 8d 0c 0e lea (%rsi,%rcx,1),%r9d 0.00 : 4904ba: c1 c8 0d ror $0xd,%eax 1.54 : 4904bd: 31 d0 xor %edx,%eax 1.54 : 4904bf: 41 89 c0 mov %eax,%r8d 4.62 : 4904c2: 29 c1 sub %eax,%ecx 0.00 : 4904c4: 41 c1 c8 1c ror $0x1c,%r8d 3.85 : 4904c8: 41 31 c8 xor %ecx,%r8d : { : /* Code path for aligned source data */ : register const uint32 *ka = (const uint32 *) k; : : /* handle most of the key */ : while (len >= 12) 0.00 : 4904cb: 41 83 fa 0b cmp $0xb,%r10d : { : a += ka[0]; : b += ka[1]; : c += ka[2]; : mix(a, b, c); 1.54 : 4904cf: 42 8d 0c 08 lea (%rax,%r9,1),%ecx : { : /* Code path for aligned source data */ : register const uint32 *ka = (const uint32 *) k; : : /* handle most of the key */ : while (len >= 12) 0.00 : 4904d3: 77 9b ja 490470 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:323 2.31 : 4904d5: 45 89 cb mov %r9d,%r11d 0.00 : 4904d8: 89 ce mov %ecx,%esi 0.00 : 4904da: 44 89 c3 mov %r8d,%ebx : case 1: : a += ((uint32) k[0] << 24); : /* case 0: nothing left to add */ : } : #else /* !WORDS_BIGENDIAN */ : switch (len) 0.00 : 4904dd: 41 83 fa 0b cmp $0xb,%r10d 0.00 : 4904e1: 77 6e ja 490551 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:375 0.77 : 4904e3: 44 89 d0 mov %r10d,%eax 0.00 : 4904e6: ff 24 c5 78 22 7b 00 jmpq *0x7b2278(,%rax,8) : } : #else /* !WORDS_BIGENDIAN */ : switch (len) /* all the case statements fall through */ : { : case 11: : c += ((uint32) k[10] << 24); 0.00 : 4904ed: 0f b6 47 0a movzbl 0xa(%rdi),%eax 0.00 : 4904f1: c1 e0 18 shl $0x18,%eax 0.00 : 4904f4: 42 8d 1c 00 lea (%rax,%r8,1),%ebx : case 10: : c += ((uint32) k[9] << 16); 0.00 : 4904f8: 0f b6 47 09 movzbl 0x9(%rdi),%eax 0.00 : 4904fc: c1 e0 10 shl $0x10,%eax 0.00 : 4904ff: 01 c3 add %eax,%ebx : case 9: : c += ((uint32) k[8] << 8); 0.00 : 490501: 0f b6 47 08 movzbl 0x8(%rdi),%eax 0.00 : 490505: c1 e0 08 shl $0x8,%eax 0.00 : 490508: 01 c3 add %eax,%ebx : /* the lowest byte of c is reserved for the length */ : case 8: : b += ((uint32) k[7] << 24); 0.00 : 49050a: 0f b6 47 07 movzbl 0x7(%rdi),%eax 0.00 : 49050e: c1 e0 18 shl $0x18,%eax 0.00 : 490511: 8d 34 10 lea (%rax,%rdx,1),%esi : case 7: : b += ((uint32) k[6] << 16); 0.00 : 490514: 0f b6 47 06 movzbl 0x6(%rdi),%eax 0.00 : 490518: c1 e0 10 shl $0x10,%eax 0.00 : 49051b: 01 c6 add %eax,%esi : case 6: : b += ((uint32) k[5] << 8); 0.00 : 49051d: 0f b6 47 05 movzbl 0x5(%rdi),%eax 0.00 : 490521: c1 e0 08 shl $0x8,%eax 0.00 : 490524: 01 c6 add %eax,%esi : case 5: : b += k[4]; 0.00 : 490526: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.00 : 49052a: 01 c6 add %eax,%esi : case 4: : a += ((uint32) k[3] << 24); 0.00 : 49052c: 0f b6 47 03 movzbl 0x3(%rdi),%eax 0.00 : 490530: c1 e0 18 shl $0x18,%eax 0.00 : 490533: 46 8d 1c 08 lea (%rax,%r9,1),%r11d : case 3: : a += ((uint32) k[2] << 16); 0.00 : 490537: 0f b6 47 02 movzbl 0x2(%rdi),%eax 0.00 : 49053b: c1 e0 10 shl $0x10,%eax 0.00 : 49053e: 41 01 c3 add %eax,%r11d : case 2: : a += ((uint32) k[1] << 8); 0.00 : 490541: 0f b6 47 01 movzbl 0x1(%rdi),%eax 0.00 : 490545: c1 e0 08 shl $0x8,%eax 0.00 : 490548: 41 01 c3 add %eax,%r11d : case 1: : a += k[0]; 0.00 : 49054b: 0f b6 07 movzbl (%rdi),%eax 0.00 : 49054e: 41 01 c3 add %eax,%r11d : /* case 0: nothing left to add */ : } : #endif /* WORDS_BIGENDIAN */ : } : : final(a, b, c); /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:496 1.54 : 490551: 89 da mov %ebx,%edx 0.00 : 490553: 89 f0 mov %esi,%eax 0.00 : 490555: 31 f2 xor %esi,%edx 1.54 : 490557: c1 c8 12 ror $0x12,%eax 2.31 : 49055a: 29 c2 sub %eax,%edx 1.54 : 49055c: 89 d1 mov %edx,%ecx 1.54 : 49055e: 89 d0 mov %edx,%eax 0.00 : 490560: c1 c8 15 ror $0x15,%eax 2.31 : 490563: 44 31 d9 xor %r11d,%ecx 0.00 : 490566: 29 c1 sub %eax,%ecx 2.31 : 490568: 89 c8 mov %ecx,%eax 1.54 : 49056a: 31 ce xor %ecx,%esi 0.00 : 49056c: c1 c8 07 ror $0x7,%eax 2.31 : 49056f: 29 c6 sub %eax,%esi 0.77 : 490571: 89 f0 mov %esi,%eax 1.54 : 490573: 31 d0 xor %edx,%eax 2.31 : 490575: 89 f2 mov %esi,%edx 0.00 : 490577: c1 ca 10 ror $0x10,%edx 1.54 : 49057a: 29 d0 sub %edx,%eax 0.77 : 49057c: 89 c2 mov %eax,%edx 0.77 : 49057e: 31 ca xor %ecx,%edx 0.77 : 490580: 89 c1 mov %eax,%ecx 0.00 : 490582: c1 c9 1c ror $0x1c,%ecx 1.54 : 490585: 29 ca sub %ecx,%edx 0.00 : 490587: 89 d1 mov %edx,%ecx 2.31 : 490589: c1 ca 12 ror $0x12,%edx 2.31 : 49058c: 31 f1 xor %esi,%ecx 0.00 : 49058e: 29 d1 sub %edx,%ecx 2.31 : 490590: 31 c8 xor %ecx,%eax 2.31 : 490592: c1 c9 08 ror $0x8,%ecx 0.00 : 490595: 29 c8 sub %ecx,%eax : : /* report the result */ : return UInt32GetDatum(c); : } /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:500 1.54 : 490597: 5b pop %rbx 0.00 : 490598: c9 leaveq 1.54 : 490599: c3 retq : case 8: : b += ka[1]; : a += ka[0]; : break; : case 7: : b += ((uint32) k[6] << 16); 0.00 : 49059a: 0f b6 47 06 movzbl 0x6(%rdi),%eax 0.00 : 49059e: c1 e0 10 shl $0x10,%eax 0.00 : 4905a1: 8d 34 08 lea (%rax,%rcx,1),%esi : /* fall through */ : case 6: : b += ((uint32) k[5] << 8); 0.00 : 4905a4: 0f b6 47 05 movzbl 0x5(%rdi),%eax 0.00 : 4905a8: c1 e0 08 shl $0x8,%eax 0.00 : 4905ab: 01 c6 add %eax,%esi : /* fall through */ : case 5: : b += k[4]; 0.00 : 4905ad: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.00 : 4905b1: 01 c6 add %eax,%esi : /* fall through */ : case 4: : a += ka[0]; 0.00 : 4905b3: 45 89 cb mov %r9d,%r11d 0.00 : 4905b6: 44 03 1f add (%rdi),%r11d : break; 0.00 : 4905b9: eb 96 jmp 490551 : } : #else /* !WORDS_BIGENDIAN */ : switch (len) : { : case 11: : c += ((uint32) k[10] << 24); 0.00 : 4905bb: 0f b6 47 0a movzbl 0xa(%rdi),%eax 0.00 : 4905bf: c1 e0 18 shl $0x18,%eax 0.00 : 4905c2: 42 8d 1c 00 lea (%rax,%r8,1),%ebx : /* fall through */ : case 10: : c += ((uint32) k[9] << 16); 0.00 : 4905c6: 0f b6 47 09 movzbl 0x9(%rdi),%eax 0.00 : 4905ca: c1 e0 10 shl $0x10,%eax 0.00 : 4905cd: 01 c3 add %eax,%ebx : /* fall through */ : case 9: : c += ((uint32) k[8] << 8); 0.00 : 4905cf: 0f b6 47 08 movzbl 0x8(%rdi),%eax 0.00 : 4905d3: c1 e0 08 shl $0x8,%eax 0.00 : 4905d6: 01 c3 add %eax,%ebx : /* the lowest byte of c is reserved for the length */ : /* fall through */ : case 8: : b += ka[1]; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:388 7.69 : 4905d8: 89 ce mov %ecx,%esi : a += ka[0]; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:389 2.31 : 4905da: 45 89 cb mov %r9d,%r11d : case 9: : c += ((uint32) k[8] << 8); : /* the lowest byte of c is reserved for the length */ : /* fall through */ : case 8: : b += ka[1]; 0.00 : 4905dd: 03 77 04 add 0x4(%rdi),%esi : a += ka[0]; 0.00 : 4905e0: 44 03 1f add (%rdi),%r11d : break; /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:390 0.77 : 4905e3: e9 69 ff ff ff jmpq 490551 : { : /* Code path for aligned source data */ : register const uint32 *ka = (const uint32 *) k; : : /* handle most of the key */ : while (len >= 12) 0.00 : 4905e8: 45 89 c3 mov %r8d,%r11d 0.00 : 4905eb: 44 89 c6 mov %r8d,%esi 0.00 : 4905ee: 44 89 c3 mov %r8d,%ebx 0.00 : 4905f1: e9 e7 fe ff ff jmpq 4904dd : else : { : /* Code path for non-aligned source data */ : : /* handle most of the key */ : while (len >= 12) 0.00 : 4905f6: 45 89 c3 mov %r8d,%r11d 0.00 : 4905f9: 44 89 c6 mov %r8d,%esi 0.00 : 4905fc: 44 89 c3 mov %r8d,%ebx 0.00 : 4905ff: e9 42 fe ff ff jmpq 490446 : /* fall through */ : case 4: : a += ka[0]; : break; : case 3: : a += ((uint32) k[2] << 16); 0.00 : 490604: 0f b6 47 02 movzbl 0x2(%rdi),%eax 0.00 : 490608: c1 e0 10 shl $0x10,%eax 0.00 : 49060b: 46 8d 1c 08 lea (%rax,%r9,1),%r11d 0.00 : 49060f: e9 2d ff ff ff jmpq 490541 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 32.31 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:60 9.23 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:61 6.15 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:46 4.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:60 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:48 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:51 3.85 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:61 3.08 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:39 3.08 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:46 3.08 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:55 3.08 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:60 3.08 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:60 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:48 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:55 2.31 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:55 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:39 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:39 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:39 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:48 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:48 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:51 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:39 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:46 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:48 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:55 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:60 0.77 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:61 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049e850 : : */ : void : RelationPutHeapTuple(Relation relation, : Buffer buffer, : HeapTuple tuple) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:39 3.08 : 49e850: 55 push %rbp 1.54 : 49e851: 48 89 e5 mov %rsp,%rbp 0.00 : 49e854: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.77 : 49e858: 4c 89 75 f8 mov %r14,-0x8(%rbp) 1.54 : 49e85c: 49 89 d4 mov %rdx,%r12 0.00 : 49e85f: 48 89 5d e0 mov %rbx,-0x20(%rbp) 1.54 : 49e863: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 49e867: 48 83 ec 20 sub $0x20,%rsp : OffsetNumber offnum; : ItemId itemId; : Item item; : : /* Add the tuple to the page */ : pageHeader = BufferGetPage(buffer); 0.00 : 49e86b: 85 f6 test %esi,%esi : */ : void : RelationPutHeapTuple(Relation relation, : Buffer buffer, : HeapTuple tuple) : { 0.00 : 49e86d: 41 89 f6 mov %esi,%r14d : OffsetNumber offnum; : ItemId itemId; : Item item; : : /* Add the tuple to the page */ : pageHeader = BufferGetPage(buffer); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:46 3.08 : 49e870: 0f 88 9a 00 00 00 js 49e910 0.00 : 49e876: 41 8d 46 ff lea -0x1(%r14),%eax 0.77 : 49e87a: 48 63 d8 movslq %eax,%rbx 0.00 : 49e87d: 48 c1 e3 0d shl $0xd,%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:46 6.15 : 49e881: 48 03 1d 70 12 72 00 add 0x721270(%rip),%rbx # bbfaf8 : : offnum = PageAddItem(pageHeader, (Item) tuple->t_data, 0.00 : 49e888: 41 8b 14 24 mov (%r12),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:48 1.54 : 49e88c: 49 8b 74 24 10 mov 0x10(%r12),%rsi 2.31 : 49e891: 45 31 c0 xor %r8d,%r8d 3.85 : 49e894: 31 c9 xor %ecx,%ecx 0.00 : 49e896: 41 b9 01 00 00 00 mov $0x1,%r9d 0.77 : 49e89c: 48 89 df mov %rbx,%rdi 0.00 : 49e89f: e8 dc 75 1f 00 callq 695e80 : tuple->t_len, InvalidOffsetNumber, false, true); : : if (offnum == InvalidOffsetNumber) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:51 3.85 : 49e8a4: 66 85 c0 test %ax,%ax : Item item; : : /* Add the tuple to the page */ : pageHeader = BufferGetPage(buffer); : : offnum = PageAddItem(pageHeader, (Item) tuple->t_data, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:48 1.54 : 49e8a7: 41 89 c5 mov %eax,%r13d : tuple->t_len, InvalidOffsetNumber, false, true); : : if (offnum == InvalidOffsetNumber) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:51 1.54 : 49e8aa: 74 7a je 49e926 : elog(PANIC, "failed to add tuple to page"); : : /* Update tuple->t_self to the actual position where it was stored */ : ItemPointerSet(&(tuple->t_self), BufferGetBlockNumber(buffer), offnum); 0.00 : 49e8ac: 44 89 f7 mov %r14d,%edi /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:55 2.31 : 49e8af: e8 7c 57 1d 00 callq 674030 3.08 : 49e8b4: c1 e8 10 shr $0x10,%eax 0.00 : 49e8b7: 44 89 f7 mov %r14d,%edi 0.00 : 49e8ba: 66 41 89 44 24 04 mov %ax,0x4(%r12) 2.31 : 49e8c0: e8 6b 57 1d 00 callq 674030 0.77 : 49e8c5: 66 41 89 44 24 06 mov %ax,0x6(%r12) : : /* Insert the correct position into CTID of the stored tuple, too */ : itemId = PageGetItemId(pageHeader, offnum); : item = PageGetItem(pageHeader, itemId); : ((HeapTupleHeader) item)->t_ctid = tuple->t_self; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:60 0.77 : 49e8cb: 41 0f b7 c5 movzwl %r13w,%eax : : if (offnum == InvalidOffsetNumber) : elog(PANIC, "failed to add tuple to page"); : : /* Update tuple->t_self to the actual position where it was stored */ : ItemPointerSet(&(tuple->t_self), BufferGetBlockNumber(buffer), offnum); 0.00 : 49e8cf: 66 45 89 6c 24 08 mov %r13w,0x8(%r12) : : /* Insert the correct position into CTID of the stored tuple, too */ : itemId = PageGetItemId(pageHeader, offnum); : item = PageGetItem(pageHeader, itemId); : ((HeapTupleHeader) item)->t_ctid = tuple->t_self; 0.00 : 49e8d5: 0f b7 44 83 14 movzwl 0x14(%rbx,%rax,4),%eax 3.08 : 49e8da: 41 8b 54 24 04 mov 0x4(%r12),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:60 32.31 : 49e8df: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 49e8e4: 89 54 03 0c mov %edx,0xc(%rbx,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:60 4.62 : 49e8e8: 41 0f b7 54 24 08 movzwl 0x8(%r12),%edx 3.08 : 49e8ee: 66 89 54 03 10 mov %dx,0x10(%rbx,%rax,1) : } /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:61 3.85 : 49e8f3: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 49e8f7: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 49e8fc: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:61 9.23 : 49e901: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 49e906: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:61 0.77 : 49e907: c3 retq 0.00 : 49e908: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49e90f: 00 : OffsetNumber offnum; : ItemId itemId; : Item item; : : /* Add the tuple to the page */ : pageHeader = BufferGetPage(buffer); 0.00 : 49e910: 89 f0 mov %esi,%eax 0.00 : 49e912: 48 8b 15 ff e7 6d 00 mov 0x6de7ff(%rip),%rdx # b7d118 0.00 : 49e919: f7 d0 not %eax 0.00 : 49e91b: 48 98 cltq 0.00 : 49e91d: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 49e921: e9 62 ff ff ff jmpq 49e888 : : offnum = PageAddItem(pageHeader, (Item) tuple->t_data, : tuple->t_len, InvalidOffsetNumber, false, true); : : if (offnum == InvalidOffsetNumber) : elog(PANIC, "failed to add tuple to page"); 0.00 : 49e926: ba 40 30 7b 00 mov $0x7b3040,%edx 0.00 : 49e92b: be 34 00 00 00 mov $0x34,%esi 0.00 : 49e930: bf 70 2f 7b 00 mov $0x7b2f70,%edi 0.00 : 49e935: e8 e6 ca 2d 00 callq 77b420 0.00 : 49e93a: be 91 2f 7b 00 mov $0x7b2f91,%esi 0.00 : 49e93f: bf 16 00 00 00 mov $0x16,%edi 0.00 : 49e944: 31 c0 xor %eax,%eax 0.00 : 49e946: e8 e5 c8 2d 00 callq 77b230 0.00 : 49e94b: e8 80 ab fc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:158 15.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:151 14.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 14.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 13.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:158 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:147 5.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:151 3.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 2.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 0.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007989b0 : : * The type-specific reset routine handles the context itself, but we : * have to do the recursion for the children. : */ : void : MemoryContextReset(MemoryContext context) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 3.08 : 7989b0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 14.62 : 7989b1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 0.77 : 7989b4: 53 push %rbx 2.31 : 7989b5: 48 89 fb mov %rdi,%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:143 14.62 : 7989b8: 48 83 ec 08 sub $0x8,%rsp : AssertArg(MemoryContextIsValid(context)); : : /* save a function call in common case where there are no children */ : if (context->firstchild != NULL) 0.00 : 7989bc: 48 83 7f 18 00 cmpq $0x0,0x18(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:147 10.00 : 7989c1: 74 05 je 7989c8 : MemoryContextResetChildren(context); 0.00 : 7989c3: e8 b8 ff ff ff callq 798980 : : /* Nothing to do if no pallocs since startup or last reset */ : if (!context->isReset) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:151 15.38 : 7989c8: 80 7b 30 00 cmpb $0x0,0x30(%rbx) 5.38 : 7989cc: 75 0e jne 7989dc : { : (*context->methods->reset) (context); 0.00 : 7989ce: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7989d2: 48 89 df mov %rbx,%rdi 0.00 : 7989d5: ff 50 20 callq *0x20(%rax) : context->isReset = true; 0.00 : 7989d8: c6 43 30 01 movb $0x1,0x30(%rbx) : VALGRIND_DESTROY_MEMPOOL(context); : VALGRIND_CREATE_MEMPOOL(context, 0, false); : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:158 13.08 : 7989dc: 48 83 c4 08 add $0x8,%rsp 0.00 : 7989e0: 5b pop %rbx 20.77 : 7989e1: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.24 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:826 5.51 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:826 3.94 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:762 3.94 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:905 3.15 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:792 3.15 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:798 3.15 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:828 3.15 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:844 2.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:610 2.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:775 2.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:775 2.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:792 2.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:798 2.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:905 2.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:905 2.36 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:862 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:759 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:775 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:792 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:793 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:798 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:905 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:905 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:854 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:862 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:862 1.57 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:862 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:507 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:561 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:606 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:646 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:527 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:541 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:735 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:735 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:735 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:967 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:1031 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:762 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:769 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:775 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:783 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:916 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:798 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:798 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:794 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:793 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:794 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:794 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:905 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:905 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:905 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:986 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:987 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:855 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:855 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:855 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:855 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:862 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:862 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:862 0.79 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:862 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005a4760 : : * and locked the relation. : */ : void : lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt, : BufferAccessStrategy bstrategy) : { 0.00 : 5a4760: 55 push %rbp 0.00 : 5a4761: 48 89 e5 mov %rsp,%rbp 0.00 : 5a4764: 41 57 push %r15 0.00 : 5a4766: 41 56 push %r14 0.00 : 5a4768: 41 55 push %r13 0.00 : 5a476a: 41 54 push %r12 0.00 : 5a476c: 49 89 d4 mov %rdx,%r12 0.00 : 5a476f: 53 push %rbx 0.00 : 5a4770: 48 89 f3 mov %rsi,%rbx 0.00 : 5a4773: 48 81 ec c8 03 00 00 sub $0x3c8,%rsp 0.00 : 5a477a: 48 89 bd 60 fc ff ff mov %rdi,-0x3a0(%rbp) : double new_live_tuples; : TransactionId new_frozen_xid; : MultiXactId new_min_multi; : : /* measure elapsed time iff autovacuum logging requires it */ : if (IsAutoVacuumWorkerProcess() && Log_autovacuum_min_duration >= 0) 0.00 : 5a4781: e8 5a 4f 09 00 callq 6396e0 0.00 : 5a4786: 84 c0 test %al,%al 0.00 : 5a4788: 74 26 je 5a47b0 0.00 : 5a478a: 44 8b 05 43 3e 5c 00 mov 0x5c3e43(%rip),%r8d # b685d4 0.00 : 5a4791: 45 85 c0 test %r8d,%r8d 0.00 : 5a4794: 78 1a js 5a47b0 : { : pg_rusage_init(&ru0); 0.00 : 5a4796: 48 8d bd d0 fe ff ff lea -0x130(%rbp),%rdi 0.00 : 5a479d: e8 be 12 1f 00 callq 795a60 : starttime = GetCurrentTimestamp(); 0.00 : 5a47a2: e8 c9 1b 1a 00 callq 746370 0.00 : 5a47a7: 48 89 85 a0 fc ff ff mov %rax,-0x360(%rbp) 0.00 : 5a47ae: eb 0b jmp 5a47bb 0.00 : 5a47b0: 48 c7 85 a0 fc ff ff movq $0x0,-0x360(%rbp) 0.00 : 5a47b7: 00 00 00 00 : } : : if (vacstmt->options & VACOPT_VERBOSE) 0.00 : 5a47bb: 8b 43 04 mov 0x4(%rbx),%eax : else : elevel = DEBUG2; : : vac_strategy = bstrategy; : : vacuum_set_xid_limits(onerel, 0.00 : 5a47be: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a47c5: 41 b9 a8 98 b7 00 mov $0xb798a8,%r9d : if (vacstmt->options & VACOPT_VERBOSE) : elevel = INFO; : else : elevel = DEBUG2; : : vac_strategy = bstrategy; 0.00 : 5a47cb: 4c 89 25 e6 50 5d 00 mov %r12,0x5d50e6(%rip) # b798b8 : { : pg_rusage_init(&ru0); : starttime = GetCurrentTimestamp(); : } : : if (vacstmt->options & VACOPT_VERBOSE) 0.00 : 5a47d2: 83 e0 04 and $0x4,%eax : elevel = INFO; 0.00 : 5a47d5: 83 f8 01 cmp $0x1,%eax 0.00 : 5a47d8: 19 c0 sbb %eax,%eax 0.00 : 5a47da: 83 e0 fc and $0xfffffffc,%eax 0.00 : 5a47dd: 83 c0 11 add $0x11,%eax 0.00 : 5a47e0: 89 05 8a 3c 5c 00 mov %eax,0x5c3c8a(%rip) # b68470 : else : elevel = DEBUG2; : : vac_strategy = bstrategy; : : vacuum_set_xid_limits(onerel, 0.00 : 5a47e6: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 5a47ea: 44 8b 43 14 mov 0x14(%rbx),%r8d 0.00 : 5a47ee: 8b 4b 10 mov 0x10(%rbx),%ecx 0.00 : 5a47f1: 8b 53 0c mov 0xc(%rbx),%edx 0.00 : 5a47f4: 8b 73 08 mov 0x8(%rbx),%esi 0.00 : 5a47f7: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 5a47fc: 48 8d 45 c4 lea -0x3c(%rbp),%rax 0.00 : 5a4800: 48 c7 44 24 10 b0 98 movq $0xb798b0,0x10(%rsp) 0.00 : 5a4807: b7 00 0.00 : 5a4809: 48 c7 04 24 ac 98 b7 movq $0xb798ac,(%rsp) 0.00 : 5a4810: 00 0.00 : 5a4811: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 5a4816: e8 15 ec ff ff callq 5a3430 : * We request a full scan if either the table's frozen Xid is now older : * than or equal to the requested Xid full-table scan limit; or if the : * table's minimum MultiXactId is older than or equal to the requested : * mxid full-table scan limit. : */ : scan_all = TransactionIdPrecedesOrEquals(onerel->rd_rel->relfrozenxid, 0.00 : 5a481b: 48 8b 95 60 fc ff ff mov -0x3a0(%rbp),%rdx 0.00 : 5a4822: 8b 75 c4 mov -0x3c(%rbp),%esi 0.00 : 5a4825: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 5a4829: 8b 78 7c mov 0x7c(%rax),%edi 0.00 : 5a482c: e8 df b7 f1 ff callq 4c0010 : xidFullScanLimit); : scan_all |= MultiXactIdPrecedesOrEquals(onerel->rd_rel->relminmxid, 0.00 : 5a4831: 48 8b 8d 60 fc ff ff mov -0x3a0(%rbp),%rcx : * We request a full scan if either the table's frozen Xid is now older : * than or equal to the requested Xid full-table scan limit; or if the : * table's minimum MultiXactId is older than or equal to the requested : * mxid full-table scan limit. : */ : scan_all = TransactionIdPrecedesOrEquals(onerel->rd_rel->relfrozenxid, 0.00 : 5a4838: 89 c3 mov %eax,%ebx : xidFullScanLimit); : scan_all |= MultiXactIdPrecedesOrEquals(onerel->rd_rel->relminmxid, 0.00 : 5a483a: 8b 75 c0 mov -0x40(%rbp),%esi 0.00 : 5a483d: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 5a4841: 8b b8 80 00 00 00 mov 0x80(%rax),%edi 0.00 : 5a4847: e8 c4 22 f2 ff callq 4c6b10 : mxactFullScanLimit); : : vacrelstats = (LVRelStats *) palloc0(sizeof(LVRelStats)); 0.00 : 5a484c: bf 68 00 00 00 mov $0x68,%edi : * table's minimum MultiXactId is older than or equal to the requested : * mxid full-table scan limit. : */ : scan_all = TransactionIdPrecedesOrEquals(onerel->rd_rel->relfrozenxid, : xidFullScanLimit); : scan_all |= MultiXactIdPrecedesOrEquals(onerel->rd_rel->relminmxid, 0.00 : 5a4851: 88 85 73 fd ff ff mov %al,-0x28d(%rbp) 0.00 : 5a4857: 08 9d 73 fd ff ff or %bl,-0x28d(%rbp) : mxactFullScanLimit); : : vacrelstats = (LVRelStats *) palloc0(sizeof(LVRelStats)); 0.00 : 5a485d: e8 0e 47 1f 00 callq 798f70 : : vacrelstats->old_rel_pages = onerel->rd_rel->relpages; 0.00 : 5a4862: 48 8b 9d 60 fc ff ff mov -0x3a0(%rbp),%rbx : scan_all = TransactionIdPrecedesOrEquals(onerel->rd_rel->relfrozenxid, : xidFullScanLimit); : scan_all |= MultiXactIdPrecedesOrEquals(onerel->rd_rel->relminmxid, : mxactFullScanLimit); : : vacrelstats = (LVRelStats *) palloc0(sizeof(LVRelStats)); 0.00 : 5a4869: 48 89 85 98 fc ff ff mov %rax,-0x368(%rbp) : vacrelstats->num_index_scans = 0; : vacrelstats->pages_removed = 0; : vacrelstats->lock_waiter_detected = false; : : /* Open all indexes of the relation */ : vac_open_indexes(onerel, RowExclusiveLock, &nindexes, &Irel); 0.00 : 5a4870: 48 8d 4d b0 lea -0x50(%rbp),%rcx : scan_all |= MultiXactIdPrecedesOrEquals(onerel->rd_rel->relminmxid, : mxactFullScanLimit); : : vacrelstats = (LVRelStats *) palloc0(sizeof(LVRelStats)); : : vacrelstats->old_rel_pages = onerel->rd_rel->relpages; 0.00 : 5a4874: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx : vacrelstats->num_index_scans = 0; : vacrelstats->pages_removed = 0; : vacrelstats->lock_waiter_detected = false; : : /* Open all indexes of the relation */ : vac_open_indexes(onerel, RowExclusiveLock, &nindexes, &Irel); 0.00 : 5a487b: be 03 00 00 00 mov $0x3,%esi : scan_all |= MultiXactIdPrecedesOrEquals(onerel->rd_rel->relminmxid, : mxactFullScanLimit); : : vacrelstats = (LVRelStats *) palloc0(sizeof(LVRelStats)); : : vacrelstats->old_rel_pages = onerel->rd_rel->relpages; 0.00 : 5a4880: 48 8b 43 30 mov 0x30(%rbx),%rax : vacrelstats->num_index_scans = 0; : vacrelstats->pages_removed = 0; : vacrelstats->lock_waiter_detected = false; : : /* Open all indexes of the relation */ : vac_open_indexes(onerel, RowExclusiveLock, &nindexes, &Irel); 0.00 : 5a4884: 48 89 df mov %rbx,%rdi : scan_all |= MultiXactIdPrecedesOrEquals(onerel->rd_rel->relminmxid, : mxactFullScanLimit); : : vacrelstats = (LVRelStats *) palloc0(sizeof(LVRelStats)); : : vacrelstats->old_rel_pages = onerel->rd_rel->relpages; 0.00 : 5a4887: 8b 40 5c mov 0x5c(%rax),%eax 0.00 : 5a488a: 89 42 04 mov %eax,0x4(%rdx) : vacrelstats->old_rel_tuples = onerel->rd_rel->reltuples; 0.00 : 5a488d: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 5a4891: f3 0f 10 40 60 movss 0x60(%rax),%xmm0 : vacrelstats->num_index_scans = 0; 0.00 : 5a4896: c7 42 58 00 00 00 00 movl $0x0,0x58(%rdx) : vacrelstats->pages_removed = 0; 0.00 : 5a489d: c7 42 30 00 00 00 00 movl $0x0,0x30(%rdx) : vacrelstats->lock_waiter_detected = false; 0.00 : 5a48a4: c6 42 60 00 movb $0x0,0x60(%rdx) : mxactFullScanLimit); : : vacrelstats = (LVRelStats *) palloc0(sizeof(LVRelStats)); : : vacrelstats->old_rel_pages = onerel->rd_rel->relpages; : vacrelstats->old_rel_tuples = onerel->rd_rel->reltuples; 0.00 : 5a48a8: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 5a48ab: f2 0f 11 42 18 movsd %xmm0,0x18(%rdx) : vacrelstats->num_index_scans = 0; : vacrelstats->pages_removed = 0; : vacrelstats->lock_waiter_detected = false; : : /* Open all indexes of the relation */ : vac_open_indexes(onerel, RowExclusiveLock, &nindexes, &Irel); 0.00 : 5a48b0: 48 8d 55 cc lea -0x34(%rbp),%rdx 0.00 : 5a48b4: e8 a7 e2 ff ff callq 5a2b60 : vacrelstats->hasindex = (nindexes > 0); 0.00 : 5a48b9: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 5a48bc: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 5a48c3: 85 ff test %edi,%edi : Buffer vmbuffer = InvalidBuffer; : BlockNumber next_not_all_visible_block; : bool skipping_all_visible_blocks; : xl_heap_freeze_tuple *frozen; : : pg_rusage_init(&ru0); 0.00 : 5a48c5: 48 8d bd 30 fe ff ff lea -0x1d0(%rbp),%rdi : vacrelstats->pages_removed = 0; : vacrelstats->lock_waiter_detected = false; : : /* Open all indexes of the relation */ : vac_open_indexes(onerel, RowExclusiveLock, &nindexes, &Irel); : vacrelstats->hasindex = (nindexes > 0); 0.00 : 5a48cc: 0f 9f 00 setg (%rax) : : /* Do the vacuuming */ : lazy_scan_heap(onerel, vacrelstats, Irel, nindexes, scan_all); 0.00 : 5a48cf: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 5a48d2: 48 8b 4d b0 mov -0x50(%rbp),%rcx : nkeep, : nunused; : IndexBulkDeleteResult **indstats; : int i; : PGRUsage ru0; : Buffer vmbuffer = InvalidBuffer; 0.00 : 5a48d6: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%rbp) : /* Open all indexes of the relation */ : vac_open_indexes(onerel, RowExclusiveLock, &nindexes, &Irel); : vacrelstats->hasindex = (nindexes > 0); : : /* Do the vacuuming */ : lazy_scan_heap(onerel, vacrelstats, Irel, nindexes, scan_all); 0.00 : 5a48dd: 89 95 74 fd ff ff mov %edx,-0x28c(%rbp) 0.00 : 5a48e3: 48 89 8d 68 fc ff ff mov %rcx,-0x398(%rbp) : Buffer vmbuffer = InvalidBuffer; : BlockNumber next_not_all_visible_block; : bool skipping_all_visible_blocks; : xl_heap_freeze_tuple *frozen; : : pg_rusage_init(&ru0); 0.00 : 5a48ea: e8 71 11 1f 00 callq 795a60 : : relname = RelationGetRelationName(onerel); 0.00 : 5a48ef: 48 8b 5b 30 mov 0x30(%rbx),%rbx : ereport(elevel, 0.00 : 5a48f3: 8b 3d 77 3b 5c 00 mov 0x5c3b77(%rip),%edi # b68470 0.00 : 5a48f9: 45 31 c0 xor %r8d,%r8d 0.00 : 5a48fc: b9 b0 86 88 00 mov $0x8886b0,%ecx 0.00 : 5a4901: ba be 01 00 00 mov $0x1be,%edx 0.00 : 5a4906: be b0 81 88 00 mov $0x8881b0,%esi : bool skipping_all_visible_blocks; : xl_heap_freeze_tuple *frozen; : : pg_rusage_init(&ru0); : : relname = RelationGetRelationName(onerel); 0.00 : 5a490b: 48 89 9d 30 fd ff ff mov %rbx,-0x2d0(%rbp) : ereport(elevel, 0.00 : 5a4912: e8 a9 61 1d 00 callq 77aac0 0.00 : 5a4917: 84 c0 test %al,%al 0.00 : 5a4919: 0f 85 20 13 00 00 jne 5a5c3f : relname))); : : empty_pages = vacuumed_pages = 0; : num_tuples = tups_vacuumed = nkeep = nunused = 0; : : indstats = (IndexBulkDeleteResult **) 0.00 : 5a491f: 48 63 bd 74 fd ff ff movslq -0x28c(%rbp),%rdi 0.00 : 5a4926: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 5a492a: e8 41 46 1f 00 callq 798f70 : palloc0(nindexes * sizeof(IndexBulkDeleteResult *)); : : nblocks = RelationGetNumberOfBlocks(onerel); 0.00 : 5a492f: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4936: 31 f6 xor %esi,%esi : relname))); : : empty_pages = vacuumed_pages = 0; : num_tuples = tups_vacuumed = nkeep = nunused = 0; : : indstats = (IndexBulkDeleteResult **) 0.00 : 5a4938: 48 89 85 60 fd ff ff mov %rax,-0x2a0(%rbp) : palloc0(nindexes * sizeof(IndexBulkDeleteResult *)); : : nblocks = RelationGetNumberOfBlocks(onerel); 0.00 : 5a493f: e8 4c 0d 0d 00 callq 675690 : vacrelstats->rel_pages = nblocks; 0.00 : 5a4944: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx : num_tuples = tups_vacuumed = nkeep = nunused = 0; : : indstats = (IndexBulkDeleteResult **) : palloc0(nindexes * sizeof(IndexBulkDeleteResult *)); : : nblocks = RelationGetNumberOfBlocks(onerel); 0.00 : 5a494b: 89 85 3c fd ff ff mov %eax,-0x2c4(%rbp) : vacrelstats->rel_pages = nblocks; 0.00 : 5a4951: 89 41 08 mov %eax,0x8(%rcx) : vacrelstats->scanned_pages = 0; 0.00 : 5a4954: c7 41 0c 00 00 00 00 movl $0x0,0xc(%rcx) : vacrelstats->nonempty_pages = 0; 0.00 : 5a495b: c7 41 40 00 00 00 00 movl $0x0,0x40(%rcx) : vacrelstats->latestRemovedXid = InvalidTransactionId; 0.00 : 5a4962: c7 41 5c 00 00 00 00 movl $0x0,0x5c(%rcx) : lazy_space_alloc(LVRelStats *vacrelstats, BlockNumber relblocks) : { : long maxtuples; : int vac_work_mem = IsAutoVacuumWorkerProcess() && : autovacuum_work_mem != -1 ? : autovacuum_work_mem : maintenance_work_mem; 0.00 : 5a4969: e8 72 4d 09 00 callq 6396e0 0.00 : 5a496e: 84 c0 test %al,%al 0.00 : 5a4970: 0f 84 ea 02 00 00 je 5a4c60 0.00 : 5a4976: 8b 05 54 3c 5c 00 mov 0x5c3c54(%rip),%eax # b685d0 0.00 : 5a497c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a497f: 0f 84 db 02 00 00 je 5a4c60 : : if (vacrelstats->hasindex) 0.00 : 5a4985: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx 0.00 : 5a498c: ba 23 01 00 00 mov $0x123,%edx 0.00 : 5a4991: bf d2 06 00 00 mov $0x6d2,%edi 0.00 : 5a4996: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 5a4999: 74 71 je 5a4a0c : { : maxtuples = (vac_work_mem * 1024L) / sizeof(ItemPointerData); 0.00 : 5a499b: 48 63 d0 movslq %eax,%rdx 0.00 : 5a499e: 48 b8 ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rax 0.00 : 5a49a5: aa aa aa : maxtuples = Min(maxtuples, INT_MAX); : maxtuples = Min(maxtuples, MaxAllocSize / sizeof(ItemPointerData)); 0.00 : 5a49a8: b9 aa aa aa 0a mov $0xaaaaaaa,%ecx : autovacuum_work_mem != -1 ? : autovacuum_work_mem : maintenance_work_mem; : : if (vacrelstats->hasindex) : { : maxtuples = (vac_work_mem * 1024L) / sizeof(ItemPointerData); 0.00 : 5a49ad: 48 c1 e2 0a shl $0xa,%rdx 0.00 : 5a49b1: 48 f7 e2 mul %rdx : maxtuples = Min(maxtuples, INT_MAX); : maxtuples = Min(maxtuples, MaxAllocSize / sizeof(ItemPointerData)); 0.00 : 5a49b4: b8 ff ff ff 7f mov $0x7fffffff,%eax : autovacuum_work_mem != -1 ? : autovacuum_work_mem : maintenance_work_mem; : : if (vacrelstats->hasindex) : { : maxtuples = (vac_work_mem * 1024L) / sizeof(ItemPointerData); 0.00 : 5a49b9: 48 c1 ea 02 shr $0x2,%rdx : maxtuples = Min(maxtuples, INT_MAX); : maxtuples = Min(maxtuples, MaxAllocSize / sizeof(ItemPointerData)); 0.00 : 5a49bd: 48 81 fa ff ff ff 7f cmp $0x7fffffff,%rdx 0.00 : 5a49c4: 48 0f 4e c2 cmovle %rdx,%rax : : /* curious coding here to ensure the multiplication can't overflow */ : if ((BlockNumber) (maxtuples / LAZY_ALLOC_TUPLES) > relblocks) 0.00 : 5a49c8: 48 ba 9b 70 80 ba e4 movabs $0x709ad4e4ba80709b,%rdx 0.00 : 5a49cf: d4 9a 70 : : if (vacrelstats->hasindex) : { : maxtuples = (vac_work_mem * 1024L) / sizeof(ItemPointerData); : maxtuples = Min(maxtuples, INT_MAX); : maxtuples = Min(maxtuples, MaxAllocSize / sizeof(ItemPointerData)); 0.00 : 5a49d2: 48 3d aa aa aa 0a cmp $0xaaaaaaa,%rax 0.00 : 5a49d8: 48 0f 46 c8 cmovbe %rax,%rcx : : /* curious coding here to ensure the multiplication can't overflow */ : if ((BlockNumber) (maxtuples / LAZY_ALLOC_TUPLES) > relblocks) 0.00 : 5a49dc: 48 89 c8 mov %rcx,%rax 0.00 : 5a49df: 48 f7 ea imul %rdx 0.00 : 5a49e2: 48 c1 fa 07 sar $0x7,%rdx 0.00 : 5a49e6: 39 95 3c fd ff ff cmp %edx,-0x2c4(%rbp) 0.00 : 5a49ec: 0f 82 79 02 00 00 jb 5a4c6b : maxtuples = relblocks * LAZY_ALLOC_TUPLES; : : /* stay sane if small maintenance_work_mem */ : maxtuples = Max(maxtuples, MaxHeapTuplesPerPage); 0.00 : 5a49f2: b8 23 01 00 00 mov $0x123,%eax 0.00 : 5a49f7: 48 81 f9 23 01 00 00 cmp $0x123,%rcx 0.00 : 5a49fe: 48 0f 4d c1 cmovge %rcx,%rax 0.00 : 5a4a02: 89 c2 mov %eax,%edx 0.00 : 5a4a04: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 5a4a08: 48 8d 3c 00 lea (%rax,%rax,1),%rdi : else : { : maxtuples = MaxHeapTuplesPerPage; : } : : vacrelstats->num_dead_tuples = 0; 0.00 : 5a4a0c: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx 0.00 : 5a4a13: c7 41 44 00 00 00 00 movl $0x0,0x44(%rcx) : vacrelstats->max_dead_tuples = (int) maxtuples; 0.00 : 5a4a1a: 89 51 48 mov %edx,0x48(%rcx) : vacrelstats->dead_tuples = (ItemPointer) 0.00 : 5a4a1d: e8 2e 43 1f 00 callq 798d50 0.00 : 5a4a22: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx : vacrelstats->scanned_pages = 0; : vacrelstats->nonempty_pages = 0; : vacrelstats->latestRemovedXid = InvalidTransactionId; : : lazy_space_alloc(vacrelstats, nblocks); : frozen = palloc(sizeof(xl_heap_freeze_tuple) * MaxHeapTuplesPerPage); 0.00 : 5a4a29: bf a4 0d 00 00 mov $0xda4,%edi : maxtuples = MaxHeapTuplesPerPage; : } : : vacrelstats->num_dead_tuples = 0; : vacrelstats->max_dead_tuples = (int) maxtuples; : vacrelstats->dead_tuples = (ItemPointer) 0.00 : 5a4a2e: 48 89 43 50 mov %rax,0x50(%rbx) : vacrelstats->scanned_pages = 0; : vacrelstats->nonempty_pages = 0; : vacrelstats->latestRemovedXid = InvalidTransactionId; : : lazy_space_alloc(vacrelstats, nblocks); : frozen = palloc(sizeof(xl_heap_freeze_tuple) * MaxHeapTuplesPerPage); 0.00 : 5a4a32: e8 19 43 1f 00 callq 798d50 : * scan_all is not set, so no great harm done; the next vacuum will find : * them. If we make the reverse mistake and vacuum a page unnecessarily, : * it'll just be a no-op. : */ : for (next_not_all_visible_block = 0; : next_not_all_visible_block < nblocks; 0.00 : 5a4a37: 8b 8d 3c fd ff ff mov -0x2c4(%rbp),%ecx : vacrelstats->scanned_pages = 0; : vacrelstats->nonempty_pages = 0; : vacrelstats->latestRemovedXid = InvalidTransactionId; : : lazy_space_alloc(vacrelstats, nblocks); : frozen = palloc(sizeof(xl_heap_freeze_tuple) * MaxHeapTuplesPerPage); 0.00 : 5a4a3d: 48 89 85 e8 fc ff ff mov %rax,-0x318(%rbp) : * scan_all is not set, so no great harm done; the next vacuum will find : * them. If we make the reverse mistake and vacuum a page unnecessarily, : * it'll just be a no-op. : */ : for (next_not_all_visible_block = 0; : next_not_all_visible_block < nblocks; 0.00 : 5a4a44: 85 c9 test %ecx,%ecx 0.00 : 5a4a46: 0f 84 be 0a 00 00 je 5a550a 0.00 : 5a4a4c: 31 db xor %ebx,%ebx 0.00 : 5a4a4e: eb 10 jmp 5a4a60 : next_not_all_visible_block++) : { : if (!visibilitymap_test(onerel, next_not_all_visible_block, &vmbuffer)) : break; : vacuum_delay_point(); 0.00 : 5a4a50: e8 0b e0 ff ff callq 5a2a60 : * them. If we make the reverse mistake and vacuum a page unnecessarily, : * it'll just be a no-op. : */ : for (next_not_all_visible_block = 0; : next_not_all_visible_block < nblocks; : next_not_all_visible_block++) 0.00 : 5a4a55: 83 c3 01 add $0x1,%ebx : * scan_all is not set, so no great harm done; the next vacuum will find : * them. If we make the reverse mistake and vacuum a page unnecessarily, : * it'll just be a no-op. : */ : for (next_not_all_visible_block = 0; : next_not_all_visible_block < nblocks; 0.00 : 5a4a58: 39 9d 3c fd ff ff cmp %ebx,-0x2c4(%rbp) 0.00 : 5a4a5e: 76 16 jbe 5a4a76 : next_not_all_visible_block++) : { : if (!visibilitymap_test(onerel, next_not_all_visible_block, &vmbuffer)) 0.00 : 5a4a60: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4a67: 48 8d 55 bc lea -0x44(%rbp),%rdx 0.00 : 5a4a6b: 89 de mov %ebx,%esi 0.00 : 5a4a6d: e8 de f8 ef ff callq 4a4350 0.00 : 5a4a72: 84 c0 test %al,%al 0.00 : 5a4a74: 75 da jne 5a4a50 : /* : * Prune all HOT-update chains in this page. : * : * We count tuples removed by the pruning step as removed by VACUUM. : */ : tups_vacuumed += heap_page_prune(onerel, buf, OldestXmin, false, 0.00 : 5a4a76: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 5a4a7d: 66 0f 57 c0 xorpd %xmm0,%xmm0 : * scan_all is not set, so no great harm done; the next vacuum will find : * them. If we make the reverse mistake and vacuum a page unnecessarily, : * it'll just be a no-op. : */ : for (next_not_all_visible_block = 0; : next_not_all_visible_block < nblocks; 0.00 : 5a4a81: 83 fb 1f cmp $0x1f,%ebx 0.00 : 5a4a84: 41 89 df mov %ebx,%r15d : /* : * Prune all HOT-update chains in this page. : * : * We count tuples removed by the pruning step as removed by VACUUM. : */ : tups_vacuumed += heap_page_prune(onerel, buf, OldestXmin, false, 0.00 : 5a4a87: c7 85 2c fd ff ff 00 movl $0x0,-0x2d4(%rbp) 0.00 : 5a4a8e: 00 00 00 : * scan_all is not set, so no great harm done; the next vacuum will find : * them. If we make the reverse mistake and vacuum a page unnecessarily, : * it'll just be a no-op. : */ : for (next_not_all_visible_block = 0; : next_not_all_visible_block < nblocks; 0.00 : 5a4a91: 0f 97 85 f0 fc ff ff seta -0x310(%rbp) : /* : * Prune all HOT-update chains in this page. : * : * We count tuples removed by the pruning step as removed by VACUUM. : */ : tups_vacuumed += heap_page_prune(onerel, buf, OldestXmin, false, 0.00 : 5a4a98: c7 85 28 fd ff ff 00 movl $0x0,-0x2d8(%rbp) 0.00 : 5a4a9f: 00 00 00 0.00 : 5a4aa2: 48 83 c0 5c add $0x5c,%rax 0.00 : 5a4aa6: f2 0f 11 85 50 fc ff movsd %xmm0,-0x3b0(%rbp) 0.00 : 5a4aad: ff 0.00 : 5a4aae: c7 85 8c fd ff ff 01 movl $0x1,-0x274(%rbp) 0.00 : 5a4ab5: 00 00 00 0.00 : 5a4ab8: 48 89 85 58 fd ff ff mov %rax,-0x2a8(%rbp) 0.00 : 5a4abf: f2 0f 11 85 18 fd ff movsd %xmm0,-0x2e8(%rbp) 0.00 : 5a4ac6: ff 0.00 : 5a4ac7: f2 0f 11 85 20 fd ff movsd %xmm0,-0x2e0(%rbp) 0.00 : 5a4ace: ff 0.00 : 5a4acf: f2 0f 11 85 10 fd ff movsd %xmm0,-0x2f0(%rbp) 0.00 : 5a4ad6: ff 0.00 : 5a4ad7: f2 0f 11 85 08 fd ff movsd %xmm0,-0x2f8(%rbp) 0.00 : 5a4ade: ff 0.00 : 5a4adf: eb 38 jmp 5a4b19 0.00 : 5a4ae1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : all_visible_according_to_vm = false; : } : else : { : /* Current block is all-visible */ : if (skipping_all_visible_blocks && !scan_all) 0.00 : 5a4ae8: 80 bd 73 fd ff ff 00 cmpb $0x0,-0x28d(%rbp) 0.00 : 5a4aef: 75 49 jne 5a4b3a 0.00 : 5a4af1: c6 85 f0 fc ff ff 01 movb $0x1,-0x310(%rbp) : * its post-compaction free space. If not, then we're done with this : * page, so remember its free space as-is. (This path will always be : * taken if there are no indexes.) : */ : if (vacrelstats->num_dead_tuples == prev_dead_count) : RecordPageWithFreeSpace(onerel, blkno, freespace); 0.00 : 5a4af8: 8b 85 8c fd ff ff mov -0x274(%rbp),%eax : if (next_not_all_visible_block >= SKIP_PAGES_THRESHOLD) : skipping_all_visible_blocks = true; : else : skipping_all_visible_blocks = false; : : for (blkno = 0; blkno < nblocks; blkno++) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:507 0.79 : 5a4afe: 8b 95 8c fd ff ff mov -0x274(%rbp),%edx : * its post-compaction free space. If not, then we're done with this : * page, so remember its free space as-is. (This path will always be : * taken if there are no indexes.) : */ : if (vacrelstats->num_dead_tuples == prev_dead_count) : RecordPageWithFreeSpace(onerel, blkno, freespace); 0.00 : 5a4b04: 83 c0 01 add $0x1,%eax : if (next_not_all_visible_block >= SKIP_PAGES_THRESHOLD) : skipping_all_visible_blocks = true; : else : skipping_all_visible_blocks = false; : : for (blkno = 0; blkno < nblocks; blkno++) 0.00 : 5a4b07: 39 95 3c fd ff ff cmp %edx,-0x2c4(%rbp) 0.00 : 5a4b0d: 0f 86 3d 0a 00 00 jbe 5a5550 0.00 : 5a4b13: 89 85 8c fd ff ff mov %eax,-0x274(%rbp) : /* : * Prune all HOT-update chains in this page. : * : * We count tuples removed by the pruning step as removed by VACUUM. : */ : tups_vacuumed += heap_page_prune(onerel, buf, OldestXmin, false, 0.00 : 5a4b19: 8b 85 8c fd ff ff mov -0x274(%rbp),%eax 0.00 : 5a4b1f: 83 e8 01 sub $0x1,%eax : bool all_visible_according_to_vm; : bool all_visible; : bool has_dead_tuples; : TransactionId visibility_cutoff_xid = InvalidTransactionId; : : if (blkno == next_not_all_visible_block) 0.00 : 5a4b22: 44 39 f8 cmp %r15d,%eax : /* : * Prune all HOT-update chains in this page. : * : * We count tuples removed by the pruning step as removed by VACUUM. : */ : tups_vacuumed += heap_page_prune(onerel, buf, OldestXmin, false, 0.00 : 5a4b25: 89 85 38 fd ff ff mov %eax,-0x2c8(%rbp) : bool all_visible_according_to_vm; : bool all_visible; : bool has_dead_tuples; : TransactionId visibility_cutoff_xid = InvalidTransactionId; : : if (blkno == next_not_all_visible_block) 0.00 : 5a4b2b: 0f 84 bf 02 00 00 je 5a4df0 : all_visible_according_to_vm = false; : } : else : { : /* Current block is all-visible */ : if (skipping_all_visible_blocks && !scan_all) 0.00 : 5a4b31: 80 bd f0 fc ff ff 00 cmpb $0x0,-0x310(%rbp) 0.00 : 5a4b38: 75 ae jne 5a4ae8 0.00 : 5a4b3a: c6 85 c3 fc ff ff 01 movb $0x1,-0x33d(%rbp) : continue; : all_visible_according_to_vm = true; : } : : vacuum_delay_point(); 0.00 : 5a4b41: e8 1a df ff ff callq 5a2a60 : : /* : * If we are close to overrunning the available space for dead-tuple : * TIDs, pause and do a cycle of vacuuming before we tackle this page. : */ : if ((vacrelstats->max_dead_tuples - vacrelstats->num_dead_tuples) < MaxHeapTuplesPerPage && 0.00 : 5a4b46: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:561 0.79 : 5a4b4d: 8b 51 44 mov 0x44(%rcx),%edx 0.00 : 5a4b50: 8b 41 48 mov 0x48(%rcx),%eax 0.00 : 5a4b53: 29 d0 sub %edx,%eax 0.00 : 5a4b55: 3d 22 01 00 00 cmp $0x122,%eax 0.00 : 5a4b5a: 0f 8f 97 00 00 00 jg 5a4bf7 0.00 : 5a4b60: 85 d2 test %edx,%edx 0.00 : 5a4b62: 0f 8e 8f 00 00 00 jle 5a4bf7 : * Before beginning index vacuuming, we release any pin we may : * hold on the visibility map page. This isn't necessary for : * correctness, but we do it anyway to avoid holding the pin : * across a lengthy, unrelated operation. : */ : if (BufferIsValid(vmbuffer)) 0.00 : 5a4b68: 8b 7d bc mov -0x44(%rbp),%edi 0.00 : 5a4b6b: 85 ff test %edi,%edi 0.00 : 5a4b6d: 0f 85 0d 05 00 00 jne 5a5080 : { : /* : * Skip this for relations for which no WAL is to be written, or if we're : * not trying to support archive recovery. : */ : if (!RelationNeedsWAL(rel) || !XLogIsNeeded()) 0.00 : 5a4b73: 48 8b 9d 60 fc ff ff mov -0x3a0(%rbp),%rbx 0.00 : 5a4b7a: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 5a4b7e: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 5a4b82: 0f 84 c8 04 00 00 je 5a5050 : : /* Log cleanup info before we touch indexes */ : vacuum_log_cleanup_info(onerel, vacrelstats); : : /* Remove index entries */ : for (i = 0; i < nindexes; i++) 0.00 : 5a4b88: 8b 85 74 fd ff ff mov -0x28c(%rbp),%eax 0.00 : 5a4b8e: 85 c0 test %eax,%eax 0.00 : 5a4b90: 7e 40 jle 5a4bd2 0.00 : 5a4b92: 45 31 e4 xor %r12d,%r12d 0.00 : 5a4b95: 31 db xor %ebx,%ebx 0.00 : 5a4b97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5a4b9e: 00 00 : lazy_vacuum_index(Irel[i], 0.00 : 5a4ba0: 48 8b 95 68 fc ff ff mov -0x398(%rbp),%rdx 0.00 : 5a4ba7: 48 8b b5 60 fd ff ff mov -0x2a0(%rbp),%rsi : : /* Log cleanup info before we touch indexes */ : vacuum_log_cleanup_info(onerel, vacrelstats); : : /* Remove index entries */ : for (i = 0; i < nindexes; i++) 0.00 : 5a4bae: 41 83 c4 01 add $0x1,%r12d : lazy_vacuum_index(Irel[i], 0.00 : 5a4bb2: 48 8b 3c 1a mov (%rdx,%rbx,1),%rdi 0.00 : 5a4bb6: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a4bbd: 48 01 de add %rbx,%rsi : : /* Log cleanup info before we touch indexes */ : vacuum_log_cleanup_info(onerel, vacrelstats); : : /* Remove index entries */ : for (i = 0; i < nindexes; i++) 0.00 : 5a4bc0: 48 83 c3 08 add $0x8,%rbx : lazy_vacuum_index(Irel[i], 0.00 : 5a4bc4: e8 77 fa ff ff callq 5a4640 : : /* Log cleanup info before we touch indexes */ : vacuum_log_cleanup_info(onerel, vacrelstats); : : /* Remove index entries */ : for (i = 0; i < nindexes; i++) 0.00 : 5a4bc9: 44 39 a5 74 fd ff ff cmp %r12d,-0x28c(%rbp) 0.00 : 5a4bd0: 7f ce jg 5a4ba0 : lazy_vacuum_index(Irel[i], : &indstats[i], : vacrelstats); : /* Remove tuples from heap */ : lazy_vacuum_heap(onerel, vacrelstats); 0.00 : 5a4bd2: 48 8b b5 98 fc ff ff mov -0x368(%rbp),%rsi 0.00 : 5a4bd9: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4be0: e8 8b f8 ff ff callq 5a4470 : /* : * Forget the now-vacuumed tuples, and press on, but be careful : * not to reset latestRemovedXid since we want that value to be : * valid. : */ : vacrelstats->num_dead_tuples = 0; 0.00 : 5a4be5: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx : vacrelstats->num_index_scans++; 0.00 : 5a4bec: 83 41 58 01 addl $0x1,0x58(%rcx) : /* : * Forget the now-vacuumed tuples, and press on, but be careful : * not to reset latestRemovedXid since we want that value to be : * valid. : */ : vacrelstats->num_dead_tuples = 0; 0.00 : 5a4bf0: c7 41 44 00 00 00 00 movl $0x0,0x44(%rcx) : * already have the correct page pinned anyway. However, it's : * possible that (a) next_not_all_visible_block is covered by a : * different VM page than the current block or (b) we released our pin : * and did a cycle of index vacuuming. : */ : visibilitymap_pin(onerel, blkno, &vmbuffer); 0.00 : 5a4bf7: 8b b5 38 fd ff ff mov -0x2c8(%rbp),%esi 0.00 : 5a4bfd: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4c04: 48 8d 55 bc lea -0x44(%rbp),%rdx 0.00 : 5a4c08: e8 b3 f8 ef ff callq 4a44c0 : : buf = ReadBufferExtended(onerel, MAIN_FORKNUM, blkno, 0.00 : 5a4c0d: 4c 8b 05 a4 4c 5d 00 mov 0x5d4ca4(%rip),%r8 # b798b8 0.00 : 5a4c14: 8b 95 38 fd ff ff mov -0x2c8(%rbp),%edx 0.00 : 5a4c1a: 31 c9 xor %ecx,%ecx 0.00 : 5a4c1c: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4c23: 31 f6 xor %esi,%esi 0.00 : 5a4c25: e8 46 19 0d 00 callq 676570 : RBM_NORMAL, vac_strategy); : : /* We need buffer cleanup lock so that we can prune HOT chains. */ : if (!ConditionalLockBufferForCleanup(buf)) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:610 2.36 : 5a4c2a: 89 c7 mov %eax,%edi : * different VM page than the current block or (b) we released our pin : * and did a cycle of index vacuuming. : */ : visibilitymap_pin(onerel, blkno, &vmbuffer); : : buf = ReadBufferExtended(onerel, MAIN_FORKNUM, blkno, /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:606 0.79 : 5a4c2c: 89 85 e4 fc ff ff mov %eax,-0x31c(%rbp) : RBM_NORMAL, vac_strategy); : : /* We need buffer cleanup lock so that we can prune HOT chains. */ : if (!ConditionalLockBufferForCleanup(buf)) 0.00 : 5a4c32: e8 29 23 0d 00 callq 676f60 0.00 : 5a4c37: 84 c0 test %al,%al 0.00 : 5a4c39: 0f 85 21 01 00 00 jne 5a4d60 : /* : * If we're not scanning the whole relation to guard against XID : * wraparound, it's OK to skip vacuuming a page. The next vacuum : * will clean it up. : */ : if (!scan_all) 0.00 : 5a4c3f: 80 bd 73 fd ff ff 00 cmpb $0x0,-0x28d(%rbp) 0.00 : 5a4c46: 75 38 jne 5a4c80 : { : ReleaseBuffer(buf); 0.00 : 5a4c48: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a4c4e: e8 0d 02 0d 00 callq 674e60 0.00 : 5a4c53: e9 a0 fe ff ff jmpq 5a4af8 0.00 : 5a4c58: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5a4c5f: 00 : lazy_space_alloc(LVRelStats *vacrelstats, BlockNumber relblocks) : { : long maxtuples; : int vac_work_mem = IsAutoVacuumWorkerProcess() && : autovacuum_work_mem != -1 ? : autovacuum_work_mem : maintenance_work_mem; 0.00 : 5a4c60: 8b 05 b6 3e 5c 00 mov 0x5c3eb6(%rip),%eax # b68b1c 0.00 : 5a4c66: e9 1a fd ff ff jmpq 5a4985 : maxtuples = Min(maxtuples, INT_MAX); : maxtuples = Min(maxtuples, MaxAllocSize / sizeof(ItemPointerData)); : : /* curious coding here to ensure the multiplication can't overflow */ : if ((BlockNumber) (maxtuples / LAZY_ALLOC_TUPLES) > relblocks) : maxtuples = relblocks * LAZY_ALLOC_TUPLES; 0.00 : 5a4c6b: 8b b5 3c fd ff ff mov -0x2c4(%rbp),%esi 0.00 : 5a4c71: 69 ce 23 01 00 00 imul $0x123,%esi,%ecx 0.00 : 5a4c77: e9 76 fd ff ff jmpq 5a49f2 0.00 : 5a4c7c: 0f 1f 40 00 nopl 0x0(%rax) : * We could defer the lock request further by remembering the page : * and coming back to it later, or we could even register : * ourselves for multiple buffers and then service whichever one : * is received first. For now, this seems good enough. : */ : LockBuffer(buf, BUFFER_LOCK_SHARE); 0.00 : 5a4c80: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a4c86: be 01 00 00 00 mov $0x1,%esi 0.00 : 5a4c8b: e8 80 fa 0c 00 callq 674710 : Page page; : OffsetNumber offnum, : maxoff; : HeapTupleHeader tupleheader; : : page = BufferGetPage(buf); 0.00 : 5a4c90: 8b 85 e4 fc ff ff mov -0x31c(%rbp),%eax 0.00 : 5a4c96: 85 c0 test %eax,%eax 0.00 : 5a4c98: 0f 88 52 08 00 00 js 5a54f0 0.00 : 5a4c9e: 8b 85 e4 fc ff ff mov -0x31c(%rbp),%eax 0.00 : 5a4ca4: 83 e8 01 sub $0x1,%eax 0.00 : 5a4ca7: 4c 63 e0 movslq %eax,%r12 0.00 : 5a4caa: 49 c1 e4 0d shl $0xd,%r12 0.00 : 5a4cae: 4c 03 25 43 ae 61 00 add 0x61ae43(%rip),%r12 # bbfaf8 : : if (PageIsNew(page) || PageIsEmpty(page)) 0.00 : 5a4cb5: 66 41 83 7c 24 0e 00 cmpw $0x0,0xe(%r12) 0.00 : 5a4cbc: 0f 84 6e 03 00 00 je 5a5030 0.00 : 5a4cc2: 41 0f b7 44 24 0c movzwl 0xc(%r12),%eax 0.00 : 5a4cc8: 66 83 f8 18 cmp $0x18,%ax 0.00 : 5a4ccc: 0f 86 5e 03 00 00 jbe 5a5030 : { : /* PageIsNew probably shouldn't happen... */ : return false; : } : : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 5a4cd2: 0f b7 c0 movzwl %ax,%eax 0.00 : 5a4cd5: 48 83 e8 18 sub $0x18,%rax 0.00 : 5a4cd9: 49 89 c5 mov %rax,%r13 0.00 : 5a4cdc: 49 c1 ed 02 shr $0x2,%r13 : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 5a4ce0: 66 45 85 ed test %r13w,%r13w 0.00 : 5a4ce4: 0f 84 46 03 00 00 je 5a5030 0.00 : 5a4cea: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 5a4cef: eb 14 jmp 5a4d05 0.00 : 5a4cf1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (!ItemIdIsNormal(itemid)) : continue; : : tupleheader = (HeapTupleHeader) PageGetItem(page, itemid); : : if (heap_tuple_needs_freeze(tupleheader, FreezeLimit, 0.00 : 5a4cf8: 83 c3 01 add $0x1,%ebx : return false; : } : : maxoff = PageGetMaxOffsetNumber(page); : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 5a4cfb: 66 41 39 dd cmp %bx,%r13w 0.00 : 5a4cff: 0f 82 2b 03 00 00 jb 5a5030 : offnum = OffsetNumberNext(offnum)) : { : ItemId itemid; : : itemid = PageGetItemId(page, offnum); 0.00 : 5a4d05: 0f b7 c3 movzwl %bx,%eax : : if (!ItemIdIsNormal(itemid)) 0.00 : 5a4d08: 48 8d 50 03 lea 0x3(%rax),%rdx 0.00 : 5a4d0c: 41 8b 44 94 08 mov 0x8(%r12,%rdx,4),%eax 0.00 : 5a4d11: 25 00 80 01 00 and $0x18000,%eax 0.00 : 5a4d16: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 5a4d1b: 75 db jne 5a4cf8 : continue; : : tupleheader = (HeapTupleHeader) PageGetItem(page, itemid); : : if (heap_tuple_needs_freeze(tupleheader, FreezeLimit, 0.00 : 5a4d1d: 41 0f b7 7c 94 08 movzwl 0x8(%r12,%rdx,4),%edi 0.00 : 5a4d23: 8b 8d e4 fc ff ff mov -0x31c(%rbp),%ecx 0.00 : 5a4d29: 8b 15 81 4b 5d 00 mov 0x5d4b81(%rip),%edx # b798b0 0.00 : 5a4d2f: 8b 35 77 4b 5d 00 mov 0x5d4b77(%rip),%esi # b798ac 0.00 : 5a4d35: 81 e7 ff 7f 00 00 and $0x7fff,%edi 0.00 : 5a4d3b: 49 8d 3c 3c lea (%r12,%rdi,1),%rdi 0.00 : 5a4d3f: e8 ac 21 ef ff callq 496ef0 0.00 : 5a4d44: 84 c0 test %al,%al 0.00 : 5a4d46: 74 b0 je 5a4cf8 : { : UnlockReleaseBuffer(buf); : vacrelstats->scanned_pages++; : continue; : } : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 5a4d48: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a4d4e: 31 f6 xor %esi,%esi 0.00 : 5a4d50: e8 bb f9 0c 00 callq 674710 : LockBufferForCleanup(buf); 0.00 : 5a4d55: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a4d5b: e8 d0 22 0d 00 callq 677030 : /* drop through to normal processing */ : } : : vacrelstats->scanned_pages++; 0.00 : 5a4d60: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:646 0.79 : 5a4d67: 83 40 0c 01 addl $0x1,0xc(%rax) : : page = BufferGetPage(buf); 0.00 : 5a4d6b: 8b 85 e4 fc ff ff mov -0x31c(%rbp),%eax 0.00 : 5a4d71: 85 c0 test %eax,%eax 0.00 : 5a4d73: 0f 88 97 02 00 00 js 5a5010 0.00 : 5a4d79: 8b 85 e4 fc ff ff mov -0x31c(%rbp),%eax 0.00 : 5a4d7f: 83 e8 01 sub $0x1,%eax 0.00 : 5a4d82: 4c 63 f0 movslq %eax,%r14 0.00 : 5a4d85: 49 c1 e6 0d shl $0xd,%r14 0.00 : 5a4d89: 4c 03 35 68 ad 61 00 add 0x61ad68(%rip),%r14 # bbfaf8 : : if (PageIsNew(page)) 0.00 : 5a4d90: 66 41 83 7e 0e 00 cmpw $0x0,0xe(%r14) 0.00 : 5a4d96: 0f 84 0c 02 00 00 je 5a4fa8 : : RecordPageWithFreeSpace(onerel, blkno, freespace); : continue; : } : : if (PageIsEmpty(page)) 0.00 : 5a4d9c: 66 41 83 7e 0c 18 cmpw $0x18,0xc(%r14) 0.00 : 5a4da2: 0f 87 b0 00 00 00 ja 5a4e58 : { : empty_pages++; : freespace = PageGetHeapFreeSpace(page); 0.00 : 5a4da8: 4c 89 f7 mov %r14,%rdi 0.00 : 5a4dab: e8 b0 ff 0e 00 callq 694d60 : : /* empty pages are always all-visible */ : if (!PageIsAllVisible(page)) 0.00 : 5a4db0: 41 f6 46 0a 04 testb $0x4,0xa(%r14) : } : : if (PageIsEmpty(page)) : { : empty_pages++; : freespace = PageGetHeapFreeSpace(page); 0.00 : 5a4db5: 48 89 c3 mov %rax,%rbx : : /* empty pages are always all-visible */ : if (!PageIsAllVisible(page)) 0.00 : 5a4db8: 0f 84 2a 0b 00 00 je 5a58e8 : continue; : } : : if (PageIsEmpty(page)) : { : empty_pages++; 0.00 : 5a4dbe: 83 85 2c fd ff ff 01 addl $0x1,-0x2d4(%rbp) : visibilitymap_set(onerel, blkno, buf, InvalidXLogRecPtr, : vmbuffer, InvalidTransactionId); : END_CRIT_SECTION(); : } : : UnlockReleaseBuffer(buf); 0.00 : 5a4dc5: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a4dcb: e8 60 01 0d 00 callq 674f30 : RecordPageWithFreeSpace(onerel, blkno, freespace); 0.00 : 5a4dd0: 8b b5 38 fd ff ff mov -0x2c8(%rbp),%esi 0.00 : 5a4dd6: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4ddd: 48 89 da mov %rbx,%rdx 0.00 : 5a4de0: e8 8b 78 0d 00 callq 67c670 0.00 : 5a4de5: e9 0e fd ff ff jmpq 5a4af8 0.00 : 5a4dea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : if (blkno == next_not_all_visible_block) : { : /* Time to advance next_not_all_visible_block */ : for (next_not_all_visible_block++; : next_not_all_visible_block < nblocks; /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:527 0.79 : 5a4df0: 44 8b bd 8c fd ff ff mov -0x274(%rbp),%r15d 0.00 : 5a4df7: 44 39 bd 3c fd ff ff cmp %r15d,-0x2c4(%rbp) 0.00 : 5a4dfe: 77 1a ja 5a4e1a 0.00 : 5a4e00: eb 2f jmp 5a4e31 0.00 : 5a4e02: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : next_not_all_visible_block++) : { : if (!visibilitymap_test(onerel, next_not_all_visible_block, : &vmbuffer)) : break; : vacuum_delay_point(); 0.00 : 5a4e08: e8 53 dc ff ff callq 5a2a60 : if (blkno == next_not_all_visible_block) : { : /* Time to advance next_not_all_visible_block */ : for (next_not_all_visible_block++; : next_not_all_visible_block < nblocks; : next_not_all_visible_block++) 0.00 : 5a4e0d: 41 83 c7 01 add $0x1,%r15d : : if (blkno == next_not_all_visible_block) : { : /* Time to advance next_not_all_visible_block */ : for (next_not_all_visible_block++; : next_not_all_visible_block < nblocks; 0.00 : 5a4e11: 44 39 bd 3c fd ff ff cmp %r15d,-0x2c4(%rbp) 0.00 : 5a4e18: 76 17 jbe 5a4e31 : next_not_all_visible_block++) : { : if (!visibilitymap_test(onerel, next_not_all_visible_block, 0.00 : 5a4e1a: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4e21: 48 8d 55 bc lea -0x44(%rbp),%rdx 0.00 : 5a4e25: 44 89 fe mov %r15d,%esi 0.00 : 5a4e28: e8 23 f5 ef ff callq 4a4350 0.00 : 5a4e2d: 84 c0 test %al,%al 0.00 : 5a4e2f: 75 d7 jne 5a4e08 : : if (blkno == next_not_all_visible_block) : { : /* Time to advance next_not_all_visible_block */ : for (next_not_all_visible_block++; : next_not_all_visible_block < nblocks; 0.00 : 5a4e31: 44 89 f8 mov %r15d,%eax : /* : * We know we can't skip the current block. But set up : * skipping_all_visible_blocks to do the right thing at the : * following blocks. : */ : if (next_not_all_visible_block - blkno > SKIP_PAGES_THRESHOLD) 0.00 : 5a4e34: 2b 85 38 fd ff ff sub -0x2c8(%rbp),%eax 0.00 : 5a4e3a: c6 85 c3 fc ff ff 00 movb $0x0,-0x33d(%rbp) 0.00 : 5a4e41: 83 f8 21 cmp $0x21,%eax 0.00 : 5a4e44: 19 d2 sbb %edx,%edx 0.00 : 5a4e46: 83 c2 01 add $0x1,%edx /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:541 0.79 : 5a4e49: 88 95 f0 fc ff ff mov %dl,-0x310(%rbp) 0.00 : 5a4e4f: e9 ed fc ff ff jmpq 5a4b41 0.00 : 5a4e54: 0f 1f 40 00 nopl 0x0(%rax) : /* : * Prune all HOT-update chains in this page. : * : * We count tuples removed by the pruning step as removed by VACUUM. : */ : tups_vacuumed += heap_page_prune(onerel, buf, OldestXmin, false, /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:735 0.79 : 5a4e58: 4c 8b 85 58 fd ff ff mov -0x2a8(%rbp),%r8 0.00 : 5a4e5f: 8b 15 43 4a 5d 00 mov 0x5d4a43(%rip),%edx # b798a8 0.00 : 5a4e65: 31 c9 xor %ecx,%ecx 0.00 : 5a4e67: 8b b5 e4 fc ff ff mov -0x31c(%rbp),%esi 0.00 : 5a4e6d: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4e74: e8 47 9d ef ff callq 49ebc0 0.00 : 5a4e79: f2 0f 2a c0 cvtsi2sd %eax,%xmm0 : */ : all_visible = true; : has_dead_tuples = false; : nfrozen = 0; : hastup = false; : prev_dead_count = vacrelstats->num_dead_tuples; 0.00 : 5a4e7d: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx : /* : * Prune all HOT-update chains in this page. : * : * We count tuples removed by the pruning step as removed by VACUUM. : */ : tups_vacuumed += heap_page_prune(onerel, buf, OldestXmin, false, 0.79 : 5a4e84: f2 0f 58 85 18 fd ff addsd -0x2e8(%rbp),%xmm0 0.00 : 5a4e8b: ff 0.79 : 5a4e8c: f2 0f 11 85 18 fd ff movsd %xmm0,-0x2e8(%rbp) 0.00 : 5a4e93: ff : */ : all_visible = true; : has_dead_tuples = false; : nfrozen = 0; : hastup = false; : prev_dead_count = vacrelstats->num_dead_tuples; 0.00 : 5a4e94: 8b 49 44 mov 0x44(%rcx),%ecx 0.00 : 5a4e97: 89 8d c8 fc ff ff mov %ecx,-0x338(%rbp) : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 5a4e9d: 41 0f b7 46 0c movzwl 0xc(%r14),%eax 0.00 : 5a4ea2: 66 83 f8 18 cmp $0x18,%ax 0.00 : 5a4ea6: 0f 87 ec 01 00 00 ja 5a5098 : recptr = log_heap_freeze(onerel, buf, FreezeLimit, : frozen, nfrozen); : PageSetLSN(page, recptr); : } : : END_CRIT_SECTION(); 0.00 : 5a4eac: c6 85 cf fc ff ff 00 movb $0x0,-0x331(%rbp) 0.00 : 5a4eb3: c6 85 c1 fc ff ff 00 movb $0x0,-0x33f(%rbp) 0.00 : 5a4eba: 45 31 ed xor %r13d,%r13d 0.00 : 5a4ebd: bb 01 00 00 00 mov $0x1,%ebx : : /* : * If there are no indexes then we can vacuum the page right now : * instead of doing a second scan. : */ : if (nindexes == 0 && 0.00 : 5a4ec2: 8b 85 74 fd ff ff mov -0x28c(%rbp),%eax 0.00 : 5a4ec8: 85 c0 test %eax,%eax 0.00 : 5a4eca: 75 4d jne 5a4f19 0.00 : 5a4ecc: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx 0.00 : 5a4ed3: 44 8b 61 44 mov 0x44(%rcx),%r12d 0.00 : 5a4ed7: 45 85 e4 test %r12d,%r12d 0.00 : 5a4eda: 7e 3d jle 5a4f19 : vacrelstats->num_dead_tuples > 0) : { : /* Remove tuples from heap */ : lazy_vacuum_page(onerel, blkno, buf, 0, vacrelstats, &vmbuffer); 0.00 : 5a4edc: 8b 95 e4 fc ff ff mov -0x31c(%rbp),%edx 0.00 : 5a4ee2: 8b b5 38 fd ff ff mov -0x2c8(%rbp),%esi 0.00 : 5a4ee8: 4c 8d 4d bc lea -0x44(%rbp),%r9 0.00 : 5a4eec: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4ef3: 49 89 c8 mov %rcx,%r8 0.00 : 5a4ef6: 31 c9 xor %ecx,%ecx 0.00 : 5a4ef8: e8 73 f1 ff ff callq 5a4070 : /* : * Forget the now-vacuumed tuples, and press on, but be careful : * not to reset latestRemovedXid since we want that value to be : * valid. : */ : vacrelstats->num_dead_tuples = 0; 0.00 : 5a4efd: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 5a4f04: c7 40 44 00 00 00 00 movl $0x0,0x44(%rax) : vacuumed_pages++; 0.00 : 5a4f0b: 83 85 28 fd ff ff 01 addl $0x1,-0x2d8(%rbp) 0.00 : 5a4f12: c6 85 c1 fc ff ff 00 movb $0x0,-0x33f(%rbp) : } : : freespace = PageGetHeapFreeSpace(page); /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:967 0.79 : 5a4f19: 4c 89 f7 mov %r14,%rdi 0.00 : 5a4f1c: e8 3f fe 0e 00 callq 694d60 : : /* mark page all-visible, if appropriate */ : if (all_visible && !all_visible_according_to_vm) 0.00 : 5a4f21: 80 bd c3 fc ff ff 00 cmpb $0x0,-0x33d(%rbp) : */ : vacrelstats->num_dead_tuples = 0; : vacuumed_pages++; : } : : freespace = PageGetHeapFreeSpace(page); 0.00 : 5a4f28: 49 89 c4 mov %rax,%r12 : : /* mark page all-visible, if appropriate */ : if (all_visible && !all_visible_according_to_vm) 0.00 : 5a4f2b: 0f 84 5f 0c 00 00 je 5a5b90 : * the page-level bit is clear. However, it's possible that the bit : * got cleared after we checked it and before we took the buffer : * content lock, so we must recheck before jumping to the conclusion : * that something bad has happened. : */ : else if (all_visible_according_to_vm && !PageIsAllVisible(page) 0.00 : 5a4f31: 41 f6 46 0a 04 testb $0x4,0xa(%r14) 0.00 : 5a4f36: 0f 84 8f 0c 00 00 je 5a5bcb : * actually are, and the PD_ALL_VISIBLE flag is correct. : * : * There should never be dead tuples on a page with PD_ALL_VISIBLE : * set, however. : */ : else if (PageIsAllVisible(page) && has_dead_tuples) 0.00 : 5a4f3c: 80 bd c1 fc ff ff 00 cmpb $0x0,-0x33f(%rbp) 0.00 : 5a4f43: 0f 85 cf 0d 00 00 jne 5a5d18 0.00 : 5a4f49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : PageClearAllVisible(page); : MarkBufferDirty(buf); : visibilitymap_clear(onerel, blkno, vmbuffer); : } : : UnlockReleaseBuffer(buf); 0.00 : 5a4f50: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a4f56: e8 d5 ff 0c 00 callq 674f30 : : /* Remember the location of the last page with nonremovable tuples */ : if (hastup) 0.00 : 5a4f5b: 80 bd cf fc ff ff 00 cmpb $0x0,-0x331(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:1031 0.79 : 5a4f62: 74 10 je 5a4f74 : vacrelstats->nonempty_pages = blkno + 1; 0.00 : 5a4f64: 8b 8d 8c fd ff ff mov -0x274(%rbp),%ecx 0.00 : 5a4f6a: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a4f71: 89 4a 40 mov %ecx,0x40(%rdx) : * visited again by lazy_vacuum_heap, which will compute and record : * its post-compaction free space. If not, then we're done with this : * page, so remember its free space as-is. (This path will always be : * taken if there are no indexes.) : */ : if (vacrelstats->num_dead_tuples == prev_dead_count) 0.00 : 5a4f74: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx 0.00 : 5a4f7b: 8b 85 c8 fc ff ff mov -0x338(%rbp),%eax 0.00 : 5a4f81: 3b 43 44 cmp 0x44(%rbx),%eax 0.00 : 5a4f84: 0f 85 6e fb ff ff jne 5a4af8 : RecordPageWithFreeSpace(onerel, blkno, freespace); 0.00 : 5a4f8a: 8b b5 38 fd ff ff mov -0x2c8(%rbp),%esi 0.00 : 5a4f90: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4f97: 4c 89 e2 mov %r12,%rdx 0.00 : 5a4f9a: e8 d1 76 0d 00 callq 67c670 0.00 : 5a4f9f: e9 54 fb ff ff jmpq 5a4af8 0.00 : 5a4fa4: 0f 1f 40 00 nopl 0x0(%rax) : * check that, since this surely isn't a critical path. : * : * Note: the comparable code in vacuum.c need not worry because : * it's got exclusive lock on the whole relation. : */ : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 5a4fa8: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a4fae: 31 f6 xor %esi,%esi 0.00 : 5a4fb0: e8 5b f7 0c 00 callq 674710 : LockRelationForExtension(onerel, ExclusiveLock); 0.00 : 5a4fb5: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4fbc: be 07 00 00 00 mov $0x7,%esi 0.00 : 5a4fc1: e8 7a 2e 0e 00 callq 687e40 : UnlockRelationForExtension(onerel, ExclusiveLock); 0.00 : 5a4fc6: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a4fcd: be 07 00 00 00 mov $0x7,%esi 0.00 : 5a4fd2: e8 b9 2b 0e 00 callq 687b90 : LockBufferForCleanup(buf); 0.00 : 5a4fd7: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a4fdd: e8 4e 20 0d 00 callq 677030 : if (PageIsNew(page)) 0.00 : 5a4fe2: 66 41 83 7e 0e 00 cmpw $0x0,0xe(%r14) 0.00 : 5a4fe8: 0f 84 12 0c 00 00 je 5a5c00 : (errmsg("relation \"%s\" page %u is uninitialized --- fixing", : relname, blkno))); : PageInit(page, BufferGetPageSize(buf), 0); : empty_pages++; : } : freespace = PageGetHeapFreeSpace(page); 0.00 : 5a4fee: 4c 89 f7 mov %r14,%rdi 0.00 : 5a4ff1: e8 6a fd 0e 00 callq 694d60 : MarkBufferDirty(buf); 0.00 : 5a4ff6: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi : (errmsg("relation \"%s\" page %u is uninitialized --- fixing", : relname, blkno))); : PageInit(page, BufferGetPageSize(buf), 0); : empty_pages++; : } : freespace = PageGetHeapFreeSpace(page); 0.00 : 5a4ffc: 48 89 c3 mov %rax,%rbx : MarkBufferDirty(buf); 0.00 : 5a4fff: e8 ec f7 0c 00 callq 6747f0 0.00 : 5a5004: e9 bc fd ff ff jmpq 5a4dc5 0.00 : 5a5009: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* drop through to normal processing */ : } : : vacrelstats->scanned_pages++; : : page = BufferGetPage(buf); 0.00 : 5a5010: 8b 85 e4 fc ff ff mov -0x31c(%rbp),%eax 0.00 : 5a5016: 48 8b 15 fb 80 5d 00 mov 0x5d80fb(%rip),%rdx # b7d118 0.00 : 5a501d: f7 d0 not %eax 0.00 : 5a501f: 48 98 cltq 0.00 : 5a5021: 4c 8b 34 c2 mov (%rdx,%rax,8),%r14 0.00 : 5a5025: e9 66 fd ff ff jmpq 5a4d90 0.00 : 5a502a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * is received first. For now, this seems good enough. : */ : LockBuffer(buf, BUFFER_LOCK_SHARE); : if (!lazy_check_needs_freeze(buf)) : { : UnlockReleaseBuffer(buf); 0.00 : 5a5030: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a5036: e8 f5 fe 0c 00 callq 674f30 : vacrelstats->scanned_pages++; 0.00 : 5a503b: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx 0.00 : 5a5042: 83 43 0c 01 addl $0x1,0xc(%rbx) 0.00 : 5a5046: e9 ad fa ff ff jmpq 5a4af8 0.00 : 5a504b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* : * Skip this for relations for which no WAL is to be written, or if we're : * not trying to support archive recovery. : */ : if (!RelationNeedsWAL(rel) || !XLogIsNeeded()) 0.00 : 5a5050: 8b 15 06 41 5d 00 mov 0x5d4106(%rip),%edx # b7915c 0.00 : 5a5056: 85 d2 test %edx,%edx 0.00 : 5a5058: 0f 8e 2a fb ff ff jle 5a4b88 : return; : : /* : * No need to write the record at all unless it contains a valid value : */ : if (TransactionIdIsValid(vacrelstats->latestRemovedXid)) 0.00 : 5a505e: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 5a5065: 8b 50 5c mov 0x5c(%rax),%edx 0.00 : 5a5068: 85 d2 test %edx,%edx 0.00 : 5a506a: 0f 84 18 fb ff ff je 5a4b88 : (void) log_heap_cleanup_info(rel->rd_node, vacrelstats->latestRemovedXid); 0.00 : 5a5070: 48 8b 3b mov (%rbx),%rdi 0.00 : 5a5073: 8b 73 08 mov 0x8(%rbx),%esi 0.00 : 5a5076: e8 85 0d ef ff callq 495e00 0.00 : 5a507b: e9 08 fb ff ff jmpq 5a4b88 : * correctness, but we do it anyway to avoid holding the pin : * across a lengthy, unrelated operation. : */ : if (BufferIsValid(vmbuffer)) : { : ReleaseBuffer(vmbuffer); 0.00 : 5a5080: e8 db fd 0c 00 callq 674e60 : vmbuffer = InvalidBuffer; 0.00 : 5a5085: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%rbp) 0.00 : 5a508c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5a5090: e9 de fa ff ff jmpq 5a4b73 0.00 : 5a5095: 0f 1f 00 nopl (%rax) : all_visible = true; : has_dead_tuples = false; : nfrozen = 0; : hastup = false; : prev_dead_count = vacrelstats->num_dead_tuples; : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 5a5098: 0f b7 c0 movzwl %ax,%eax 0.00 : 5a509b: 48 83 e8 18 sub $0x18,%rax 0.00 : 5a509f: 48 c1 e8 02 shr $0x2,%rax : /* : * Note: If you change anything in the loop below, also look at : * heap_page_is_all_visible to see if that needs to be changed. : */ : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 5a50a3: 66 85 c0 test %ax,%ax : all_visible = true; : has_dead_tuples = false; : nfrozen = 0; : hastup = false; : prev_dead_count = vacrelstats->num_dead_tuples; : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 5a50a6: 66 89 85 d0 fc ff ff mov %ax,-0x330(%rbp) : /* : * Note: If you change anything in the loop below, also look at : * heap_page_is_all_visible to see if that needs to be changed. : */ : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 5a50ad: 0f 84 f9 fd ff ff je 5a4eac : { : hastup = true; /* this page won't be truncatable */ : continue; : } : : ItemPointerSet(&(tuple.t_self), blkno, offnum); 0.00 : 5a50b3: 0f b7 85 8c fd ff ff movzwl -0x274(%rbp),%eax 0.00 : 5a50ba: 8b 9d 38 fd ff ff mov -0x2c8(%rbp),%ebx 0.00 : 5a50c0: 45 31 e4 xor %r12d,%r12d 0.00 : 5a50c3: c6 85 c2 fc ff ff 01 movb $0x1,-0x33e(%rbp) 0.00 : 5a50ca: c7 85 c4 fc ff ff 00 movl $0x0,-0x33c(%rbp) 0.00 : 5a50d1: 00 00 00 0.00 : 5a50d4: c6 85 cf fc ff ff 00 movb $0x0,-0x331(%rbp) 0.00 : 5a50db: c6 85 c1 fc ff ff 00 movb $0x0,-0x33f(%rbp) 0.00 : 5a50e2: c1 eb 10 shr $0x10,%ebx 0.00 : 5a50e5: 83 e8 01 sub $0x1,%eax 0.00 : 5a50e8: 66 89 9d 40 fd ff ff mov %bx,-0x2c0(%rbp) 0.00 : 5a50ef: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 5a50f4: 66 89 85 4e fc ff ff mov %ax,-0x3b2(%rbp) 0.00 : 5a50fb: eb 31 jmp 5a512e 0.00 : 5a50fd: 0f 1f 00 nopl (%rax) : itemid = PageGetItemId(page, offnum); : : /* Unused items require no processing, but we count 'em */ : if (!ItemIdIsUsed(itemid)) : { : nunused += 1; 0.00 : 5a5100: f2 0f 10 85 08 fd ff movsd -0x2f8(%rbp),%xmm0 0.00 : 5a5107: ff 0.00 : 5a5108: 45 89 e5 mov %r12d,%r13d 0.00 : 5a510b: f2 0f 58 05 45 a0 20 addsd 0x20a045(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5a5112: 00 0.00 : 5a5113: f2 0f 11 85 08 fd ff movsd %xmm0,-0x2f8(%rbp) 0.00 : 5a511a: ff : * Each non-removable tuple must be checked to see if it needs : * freezing. Note we already have exclusive buffer lock. : */ : if (heap_prepare_freeze_tuple(tuple.t_data, FreezeLimit, : MultiXactCutoff, &frozen[nfrozen])) : frozen[nfrozen++].offset = offnum; 0.00 : 5a511b: 83 c3 01 add $0x1,%ebx : /* : * Note: If you change anything in the loop below, also look at : * heap_page_is_all_visible to see if that needs to be changed. : */ : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 5a511e: 66 39 9d d0 fc ff ff cmp %bx,-0x330(%rbp) 0.00 : 5a5125: 0f 82 b5 00 00 00 jb 5a51e0 0.00 : 5a512b: 45 89 ec mov %r13d,%r12d : offnum = OffsetNumberNext(offnum)) : { : ItemId itemid; : : itemid = PageGetItemId(page, offnum); /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:759 1.57 : 5a512e: 0f b7 c3 movzwl %bx,%eax : : /* Unused items require no processing, but we count 'em */ : if (!ItemIdIsUsed(itemid)) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:762 0.79 : 5a5131: 48 8d 50 03 lea 0x3(%rax),%rdx 0.00 : 5a5135: 41 8b 44 96 08 mov 0x8(%r14,%rdx,4),%eax 3.94 : 5a513a: 25 00 80 01 00 and $0x18000,%eax 0.00 : 5a513f: 74 bf je 5a5100 : nunused += 1; : continue; : } : : /* Redirect items mustn't be touched */ : if (ItemIdIsRedirected(itemid)) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:769 0.79 : 5a5141: 3d 00 00 01 00 cmp $0x10000,%eax 0.00 : 5a5146: 0f 84 ac 01 00 00 je 5a52f8 : { : hastup = true; /* this page won't be truncatable */ : continue; : } : : ItemPointerSet(&(tuple.t_self), blkno, offnum); /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:775 2.36 : 5a514c: 0f b7 85 40 fd ff ff movzwl -0x2c0(%rbp),%eax 0.00 : 5a5153: 0f b7 8d 4e fc ff ff movzwl -0x3b2(%rbp),%ecx 0.79 : 5a515a: 66 89 5d 98 mov %bx,-0x68(%rbp) 1.57 : 5a515e: 66 89 45 94 mov %ax,-0x6c(%rbp) 2.36 : 5a5162: 66 89 4d 96 mov %cx,-0x6a(%rbp) : * DEAD item pointers are to be vacuumed normally; but we don't : * count them in tups_vacuumed, else we'd be double-counting (at : * least in the common case where heap_page_prune() just freed up : * a non-HOT tuple). : */ : if (ItemIdIsDead(itemid)) 0.00 : 5a5166: 41 8b 44 96 08 mov 0x8(%r14,%rdx,4),%eax /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:783 0.79 : 5a516b: 25 00 80 01 00 and $0x18000,%eax 0.00 : 5a5170: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 5a5175: 0f 85 05 01 00 00 jne 5a5280 : /* : * The array shouldn't overflow under normal behavior, but perhaps it : * could if we are given a really small maintenance_work_mem. In that : * case, just forget the last few tuples (we'll get 'em next time). : */ : if (vacrelstats->num_dead_tuples < vacrelstats->max_dead_tuples) 0.00 : 5a517b: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a5182: 45 89 e5 mov %r12d,%r13d 0.00 : 5a5185: 8b 42 44 mov 0x44(%rdx),%eax 0.00 : 5a5188: c6 85 c2 fc ff ff 00 movb $0x0,-0x33e(%rbp) 0.00 : 5a518f: 3b 42 48 cmp 0x48(%rdx),%eax 0.00 : 5a5192: 7d 87 jge 5a511b : { : vacrelstats->dead_tuples[vacrelstats->num_dead_tuples] = *itemptr; 0.00 : 5a5194: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a519b: 48 98 cltq : * Each non-removable tuple must be checked to see if it needs : * freezing. Note we already have exclusive buffer lock. : */ : if (heap_prepare_freeze_tuple(tuple.t_data, FreezeLimit, : MultiXactCutoff, &frozen[nfrozen])) : frozen[nfrozen++].offset = offnum; 0.00 : 5a519d: 83 c3 01 add $0x1,%ebx : * could if we are given a really small maintenance_work_mem. In that : * case, just forget the last few tuples (we'll get 'em next time). : */ : if (vacrelstats->num_dead_tuples < vacrelstats->max_dead_tuples) : { : vacrelstats->dead_tuples[vacrelstats->num_dead_tuples] = *itemptr; 0.00 : 5a51a0: 48 8d 04 40 lea (%rax,%rax,2),%rax : vacrelstats->num_dead_tuples++; 0.00 : 5a51a4: 45 89 e5 mov %r12d,%r13d : * could if we are given a really small maintenance_work_mem. In that : * case, just forget the last few tuples (we'll get 'em next time). : */ : if (vacrelstats->num_dead_tuples < vacrelstats->max_dead_tuples) : { : vacrelstats->dead_tuples[vacrelstats->num_dead_tuples] = *itemptr; 0.00 : 5a51a7: 48 8b 4a 50 mov 0x50(%rdx),%rcx 0.00 : 5a51ab: 8b 55 94 mov -0x6c(%rbp),%edx 0.00 : 5a51ae: 89 14 41 mov %edx,(%rcx,%rax,2) 0.00 : 5a51b1: 0f b7 55 98 movzwl -0x68(%rbp),%edx 0.00 : 5a51b5: 66 89 54 41 04 mov %dx,0x4(%rcx,%rax,2) : vacrelstats->num_dead_tuples++; 0.00 : 5a51ba: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx 0.00 : 5a51c1: 83 41 44 01 addl $0x1,0x44(%rcx) 0.00 : 5a51c5: c6 85 c2 fc ff ff 00 movb $0x0,-0x33e(%rbp) : /* : * Note: If you change anything in the loop below, also look at : * heap_page_is_all_visible to see if that needs to be changed. : */ : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 5a51cc: 66 39 9d d0 fc ff ff cmp %bx,-0x330(%rbp) 0.00 : 5a51d3: 0f 83 52 ff ff ff jae 5a512b 0.00 : 5a51d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * If we froze any tuples, mark the buffer dirty, and write a WAL : * record recording the changes. We must log the changes to be : * crash-safe against future truncation of CLOG. : */ : if (nfrozen > 0) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:916 0.79 : 5a51e0: 8b 85 c4 fc ff ff mov -0x33c(%rbp),%eax 0.00 : 5a51e6: 0f b6 9d c2 fc ff ff movzbl -0x33e(%rbp),%ebx 0.00 : 5a51ed: 85 c0 test %eax,%eax 0.00 : 5a51ef: 0f 8e cd fc ff ff jle 5a4ec2 : { : START_CRIT_SECTION(); 0.00 : 5a51f5: 8b 05 a1 4e 61 00 mov 0x614ea1(%rip),%eax # bba09c : : MarkBufferDirty(buf); 0.00 : 5a51fb: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a5201: 45 31 e4 xor %r12d,%r12d : * record recording the changes. We must log the changes to be : * crash-safe against future truncation of CLOG. : */ : if (nfrozen > 0) : { : START_CRIT_SECTION(); 0.00 : 5a5204: 83 c0 01 add $0x1,%eax 0.00 : 5a5207: 89 05 8f 4e 61 00 mov %eax,0x614e8f(%rip) # bba09c : : MarkBufferDirty(buf); 0.00 : 5a520d: e8 de f5 0c 00 callq 6747f0 0.00 : 5a5212: 48 8b 9d e8 fc ff ff mov -0x318(%rbp),%rbx 0.00 : 5a5219: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : HeapTupleHeader htup; : : itemid = PageGetItemId(page, frozen[i].offset); : htup = (HeapTupleHeader) PageGetItem(page, itemid); : : heap_execute_freeze_tuple(htup, &frozen[i]); 0.00 : 5a5220: 0f b7 43 04 movzwl 0x4(%rbx),%eax 0.00 : 5a5224: 48 89 de mov %rbx,%rsi : START_CRIT_SECTION(); : : MarkBufferDirty(buf); : : /* execute collected freezes */ : for (i = 0; i < nfrozen; i++) 0.00 : 5a5227: 41 83 c4 01 add $0x1,%r12d 0.00 : 5a522b: 48 83 c3 0c add $0xc,%rbx : HeapTupleHeader htup; : : itemid = PageGetItemId(page, frozen[i].offset); : htup = (HeapTupleHeader) PageGetItem(page, itemid); : : heap_execute_freeze_tuple(htup, &frozen[i]); 0.00 : 5a522f: 41 0f b7 7c 86 14 movzwl 0x14(%r14,%rax,4),%edi 0.00 : 5a5235: 81 e7 ff 7f 00 00 and $0x7fff,%edi 0.00 : 5a523b: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 5a523f: e8 bc e9 ee ff callq 493c00 : START_CRIT_SECTION(); : : MarkBufferDirty(buf); : : /* execute collected freezes */ : for (i = 0; i < nfrozen; i++) 0.00 : 5a5244: 44 39 a5 c4 fc ff ff cmp %r12d,-0x33c(%rbp) 0.00 : 5a524b: 7f d3 jg 5a5220 : : heap_execute_freeze_tuple(htup, &frozen[i]); : } : : /* Now WAL-log freezing if neccessary */ : if (RelationNeedsWAL(onerel)) 0.00 : 5a524d: 48 8b 95 60 fc ff ff mov -0x3a0(%rbp),%rdx 0.00 : 5a5254: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 5a5258: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 5a525c: 0f 84 1f 0f 00 00 je 5a6181 : recptr = log_heap_freeze(onerel, buf, FreezeLimit, : frozen, nfrozen); : PageSetLSN(page, recptr); : } : : END_CRIT_SECTION(); 0.00 : 5a5262: 8b 05 34 4e 61 00 mov 0x614e34(%rip),%eax # bba09c 0.00 : 5a5268: 0f b6 9d c2 fc ff ff movzbl -0x33e(%rbp),%ebx 0.00 : 5a526f: 83 e8 01 sub $0x1,%eax 0.00 : 5a5272: 89 05 24 4e 61 00 mov %eax,0x614e24(%rip) # bba09c 0.00 : 5a5278: e9 45 fc ff ff jmpq 5a4ec2 0.00 : 5a527d: 0f 1f 00 nopl (%rax) : continue; : } : : Assert(ItemIdIsNormal(itemid)); : : tuple.t_data = (HeapTupleHeader) PageGetItem(page, itemid); /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:792 3.15 : 5a5280: 41 0f b7 44 96 08 movzwl 0x8(%r14,%rdx,4),%eax : tuple.t_len = ItemIdGetLength(itemid); : tuple.t_tableOid = RelationGetRelid(onerel); : : tupgone = false; : : switch (HeapTupleSatisfiesVacuum(&tuple, OldestXmin, buf)) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:798 0.79 : 5a5286: 8b 35 1c 46 5d 00 mov 0x5d461c(%rip),%esi # b798a8 0.79 : 5a528c: 48 8d 7d 90 lea -0x70(%rbp),%rdi : continue; : } : : Assert(ItemIdIsNormal(itemid)); : : tuple.t_data = (HeapTupleHeader) PageGetItem(page, itemid); 0.00 : 5a5290: 25 ff 7f 00 00 and $0x7fff,%eax /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:792 1.57 : 5a5295: 49 8d 04 06 lea (%r14,%rax,1),%rax 2.36 : 5a5299: 48 89 45 a0 mov %rax,-0x60(%rbp) : tuple.t_len = ItemIdGetLength(itemid); 0.00 : 5a529d: 41 0f b7 44 96 0a movzwl 0xa(%r14,%rdx,4),%eax : tuple.t_tableOid = RelationGetRelid(onerel); /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:794 0.79 : 5a52a3: 48 8b 95 60 fc ff ff mov -0x3a0(%rbp),%rdx : } : : Assert(ItemIdIsNormal(itemid)); : : tuple.t_data = (HeapTupleHeader) PageGetItem(page, itemid); : tuple.t_len = ItemIdGetLength(itemid); /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:793 1.57 : 5a52aa: 66 d1 e8 shr %ax 0.79 : 5a52ad: 0f b7 c0 movzwl %ax,%eax 0.00 : 5a52b0: 89 45 90 mov %eax,-0x70(%rbp) : tuple.t_tableOid = RelationGetRelid(onerel); /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:794 0.79 : 5a52b3: 8b 42 40 mov 0x40(%rdx),%eax : : tupgone = false; : : switch (HeapTupleSatisfiesVacuum(&tuple, OldestXmin, buf)) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:798 3.15 : 5a52b6: 8b 95 e4 fc ff ff mov -0x31c(%rbp),%edx : : Assert(ItemIdIsNormal(itemid)); : : tuple.t_data = (HeapTupleHeader) PageGetItem(page, itemid); : tuple.t_len = ItemIdGetLength(itemid); : tuple.t_tableOid = RelationGetRelid(onerel); /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:794 0.79 : 5a52bc: 89 45 9c mov %eax,-0x64(%rbp) : : tupgone = false; : : switch (HeapTupleSatisfiesVacuum(&tuple, OldestXmin, buf)) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:798 2.36 : 5a52bf: e8 5c f8 1f 00 callq 7a4b20 0.00 : 5a52c4: 83 f8 04 cmp $0x4,%eax 0.00 : 5a52c7: 76 47 jbe 5a5310 : case HEAPTUPLE_DELETE_IN_PROGRESS: : /* This is an expected case during concurrent vacuum */ : all_visible = false; : break; : default: : elog(ERROR, "unexpected HeapTupleSatisfiesVacuum result"); 0.00 : 5a52c9: ba b0 86 88 00 mov $0x8886b0,%edx 0.00 : 5a52ce: be 74 03 00 00 mov $0x374,%esi 0.00 : 5a52d3: bf b0 81 88 00 mov $0x8881b0,%edi 0.00 : 5a52d8: e8 43 61 1d 00 callq 77b420 0.00 : 5a52dd: be 68 30 7b 00 mov $0x7b3068,%esi 0.00 : 5a52e2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5a52e7: 31 c0 xor %eax,%eax 0.00 : 5a52e9: e8 42 5f 1d 00 callq 77b230 0.00 : 5a52ee: e8 dd 41 ec ff callq 4694d0 0.00 : 5a52f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : nunused += 1; : continue; : } : : /* Redirect items mustn't be touched */ : if (ItemIdIsRedirected(itemid)) 0.00 : 5a52f8: 45 89 e5 mov %r12d,%r13d 0.00 : 5a52fb: c6 85 cf fc ff ff 01 movb $0x1,-0x331(%rbp) 0.00 : 5a5302: e9 14 fe ff ff jmpq 5a511b 0.00 : 5a5307: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5a530e: 00 00 : tuple.t_len = ItemIdGetLength(itemid); : tuple.t_tableOid = RelationGetRelid(onerel); : : tupgone = false; : : switch (HeapTupleSatisfiesVacuum(&tuple, OldestXmin, buf)) 1.57 : 5a5310: 89 c0 mov %eax,%eax 0.00 : 5a5312: ff 24 c5 70 86 88 00 jmpq *0x888670(,%rax,8) 0.00 : 5a5319: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case HEAPTUPLE_DELETE_IN_PROGRESS: : /* This is an expected case during concurrent vacuum */ : all_visible = false; : break; : default: : elog(ERROR, "unexpected HeapTupleSatisfiesVacuum result"); 0.00 : 5a5320: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 5a5324: f2 0f 10 05 2c 9e 20 movsd 0x209e2c(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5a532b: 00 0.00 : 5a532c: 45 89 e5 mov %r12d,%r13d 0.00 : 5a532f: c6 85 c2 fc ff ff 00 movb $0x0,-0x33e(%rbp) : : /* : * Each non-removable tuple must be checked to see if it needs : * freezing. Note we already have exclusive buffer lock. : */ : if (heap_prepare_freeze_tuple(tuple.t_data, FreezeLimit, 0.00 : 5a5336: 48 63 85 c4 fc ff ff movslq -0x33c(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:905 0.79 : 5a533d: 48 8b 95 e8 fc ff ff mov -0x318(%rbp),%rdx 1.57 : 5a5344: 4c 89 c7 mov %r8,%rdi : tups_vacuumed += 1; : has_dead_tuples = true; : } : else : { : num_tuples += 1; 0.00 : 5a5347: f2 0f 58 85 20 fd ff addsd -0x2e0(%rbp),%xmm0 0.00 : 5a534e: ff : : /* : * Each non-removable tuple must be checked to see if it needs : * freezing. Note we already have exclusive buffer lock. : */ : if (heap_prepare_freeze_tuple(tuple.t_data, FreezeLimit, 2.36 : 5a534f: 8b 35 57 45 5d 00 mov 0x5d4557(%rip),%esi # b798ac 0.79 : 5a5355: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 5a5359: 4c 8d 24 82 lea (%rdx,%rax,4),%r12 0.00 : 5a535d: 8b 15 4d 45 5d 00 mov 0x5d454d(%rip),%edx # b798b0 : tups_vacuumed += 1; : has_dead_tuples = true; : } : else : { : num_tuples += 1; 0.00 : 5a5363: f2 0f 11 85 20 fd ff movsd %xmm0,-0x2e0(%rbp) 0.00 : 5a536a: ff : : /* : * Each non-removable tuple must be checked to see if it needs : * freezing. Note we already have exclusive buffer lock. : */ : if (heap_prepare_freeze_tuple(tuple.t_data, FreezeLimit, 2.36 : 5a536b: 4c 89 e1 mov %r12,%rcx 0.79 : 5a536e: e8 9d 1f ef ff callq 497310 0.00 : 5a5373: 84 c0 test %al,%al 1.57 : 5a5375: c6 85 cf fc ff ff 01 movb $0x1,-0x331(%rbp) 3.94 : 5a537c: 0f 84 99 fd ff ff je 5a511b : MultiXactCutoff, &frozen[nfrozen])) : frozen[nfrozen++].offset = offnum; 0.00 : 5a5382: 66 41 89 5c 24 04 mov %bx,0x4(%r12) 0.00 : 5a5388: c6 85 cf fc ff ff 01 movb $0x1,-0x331(%rbp) 0.00 : 5a538f: 83 85 c4 fc ff ff 01 addl $0x1,-0x33c(%rbp) 0.00 : 5a5396: e9 80 fd ff ff jmpq 5a511b 0.00 : 5a539b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* : * If tuple is recently deleted then we must not remove it : * from relation. : */ : nkeep += 1; 0.00 : 5a53a0: f2 0f 10 05 b0 9d 20 movsd 0x209db0(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5a53a7: 00 0.00 : 5a53a8: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 5a53ac: 45 89 e5 mov %r12d,%r13d 0.00 : 5a53af: c6 85 c2 fc ff ff 00 movb $0x0,-0x33e(%rbp) 0.00 : 5a53b6: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 5a53ba: f2 0f 58 8d 10 fd ff addsd -0x2f0(%rbp),%xmm1 0.00 : 5a53c1: ff 0.00 : 5a53c2: f2 0f 11 8d 10 fd ff movsd %xmm1,-0x2f0(%rbp) 0.00 : 5a53c9: ff 0.00 : 5a53ca: e9 67 ff ff ff jmpq 5a5336 0.00 : 5a53cf: 90 nop : tupgone = true; /* we can delete the tuple */ : all_visible = false; : break; : case HEAPTUPLE_LIVE: : /* Tuple is good --- but let's do some validity checks */ : if (onerel->rd_rel->relhasoids && /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:826 10.24 : 5a53d0: 48 8b 95 60 fc ff ff mov -0x3a0(%rbp),%rdx 0.00 : 5a53d7: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 5a53db: 80 78 74 00 cmpb $0x0,0x74(%rax) 5.51 : 5a53df: 74 44 je 5a5425 0.00 : 5a53e1: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 5a53e5: f6 47 14 08 testb $0x8,0x14(%rdi) 0.00 : 5a53e9: 0f 85 14 09 00 00 jne 5a5d03 : !OidIsValid(HeapTupleGetOid(&tuple))) : elog(WARNING, "relation \"%s\" TID %u/%u: OID is invalid", 0.00 : 5a53ef: ba b0 86 88 00 mov $0x8886b0,%edx 0.00 : 5a53f4: be 3d 03 00 00 mov $0x33d,%esi 0.00 : 5a53f9: bf b0 81 88 00 mov $0x8881b0,%edi 0.00 : 5a53fe: e8 1d 60 1d 00 callq 77b420 0.00 : 5a5403: 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%ecx 0.00 : 5a5409: 48 8b 95 30 fd ff ff mov -0x2d0(%rbp),%rdx 0.00 : 5a5410: 44 0f b7 c3 movzwl %bx,%r8d 0.00 : 5a5414: be 48 86 88 00 mov $0x888648,%esi 0.00 : 5a5419: bf 13 00 00 00 mov $0x13,%edi 0.00 : 5a541e: 31 c0 xor %eax,%eax 0.00 : 5a5420: e8 0b 5e 1d 00 callq 77b230 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:828 3.15 : 5a5425: 48 8b 7d a0 mov -0x60(%rbp),%rdi : * PD_ALL_VISIBLE flag if the inserter committed : * asynchronously. See SetHintBits for more info. Check : * that the tuple is hinted xmin-committed because of : * that. : */ : if (all_visible) 0.00 : 5a5429: 80 bd c2 fc ff ff 00 cmpb $0x0,-0x33e(%rbp) 0.00 : 5a5430: 0f 85 3c 08 00 00 jne 5a5c72 0.00 : 5a5436: 49 89 f8 mov %rdi,%r8 0.00 : 5a5439: 45 89 e5 mov %r12d,%r13d 0.00 : 5a543c: f2 0f 10 05 14 9d 20 movsd 0x209d14(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5a5443: 00 0.00 : 5a5444: e9 ed fe ff ff jmpq 5a5336 0.00 : 5a5449: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * it were RECENTLY_DEAD. Also, if it's a heap-only : * tuple, we choose to keep it, because it'll be a lot : * cheaper to get rid of it in the next pruning pass than : * to treat it like an indexed tuple. : */ : if (HeapTupleIsHotUpdated(&tuple) || 0.00 : 5a5450: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 5a5454: 0f b7 57 12 movzwl 0x12(%rdi),%edx 0.00 : 5a5458: 49 89 f8 mov %rdi,%r8 0.00 : 5a545b: f6 c6 40 test $0x40,%dh 0.00 : 5a545e: 74 0d je 5a546d 0.00 : 5a5460: 0f b7 47 14 movzwl 0x14(%rdi),%eax 0.00 : 5a5464: f6 c4 08 test $0x8,%ah 0.00 : 5a5467: 0f 84 5b 08 00 00 je 5a5cc8 0.00 : 5a546d: 66 85 d2 test %dx,%dx 0.00 : 5a5470: 0f 88 62 08 00 00 js 5a5cd8 : /* : * The array shouldn't overflow under normal behavior, but perhaps it : * could if we are given a really small maintenance_work_mem. In that : * case, just forget the last few tuples (we'll get 'em next time). : */ : if (vacrelstats->num_dead_tuples < vacrelstats->max_dead_tuples) 0.00 : 5a5476: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a547d: 8b 42 44 mov 0x44(%rdx),%eax 0.00 : 5a5480: 3b 42 48 cmp 0x48(%rdx),%eax 0.00 : 5a5483: 7d 2f jge 5a54b4 : { : vacrelstats->dead_tuples[vacrelstats->num_dead_tuples] = *itemptr; 0.00 : 5a5485: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a548c: 48 98 cltq 0.00 : 5a548e: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 5a5492: 48 8b 4a 50 mov 0x50(%rdx),%rcx 0.00 : 5a5496: 8b 55 94 mov -0x6c(%rbp),%edx 0.00 : 5a5499: 89 14 41 mov %edx,(%rcx,%rax,2) 0.00 : 5a549c: 0f b7 55 98 movzwl -0x68(%rbp),%edx 0.00 : 5a54a0: 66 89 54 41 04 mov %dx,0x4(%rcx,%rax,2) : vacrelstats->num_dead_tuples++; 0.00 : 5a54a5: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx 0.00 : 5a54ac: 83 41 44 01 addl $0x1,0x44(%rcx) 0.00 : 5a54b0: 48 8b 7d a0 mov -0x60(%rbp),%rdi : } : : if (tupgone) : { : lazy_record_dead_tuple(vacrelstats, &(tuple.t_self)); : HeapTupleHeaderAdvanceLatestRemovedXid(tuple.t_data, 0.00 : 5a54b4: 48 8b b5 58 fd ff ff mov -0x2a8(%rbp),%rsi : &vacrelstats->latestRemovedXid); : tups_vacuumed += 1; 0.00 : 5a54bb: 45 89 e5 mov %r12d,%r13d : } : : if (tupgone) : { : lazy_record_dead_tuple(vacrelstats, &(tuple.t_self)); : HeapTupleHeaderAdvanceLatestRemovedXid(tuple.t_data, 0.00 : 5a54be: e8 6d 1c ef ff callq 497130 : &vacrelstats->latestRemovedXid); : tups_vacuumed += 1; 0.00 : 5a54c3: f2 0f 10 85 18 fd ff movsd -0x2e8(%rbp),%xmm0 0.00 : 5a54ca: ff 0.00 : 5a54cb: c6 85 c1 fc ff ff 01 movb $0x1,-0x33f(%rbp) 0.00 : 5a54d2: c6 85 c2 fc ff ff 00 movb $0x0,-0x33e(%rbp) 0.00 : 5a54d9: f2 0f 58 05 77 9c 20 addsd 0x209c77(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5a54e0: 00 0.00 : 5a54e1: f2 0f 11 85 18 fd ff movsd %xmm0,-0x2e8(%rbp) 0.00 : 5a54e8: ff 0.00 : 5a54e9: e9 2d fc ff ff jmpq 5a511b 0.00 : 5a54ee: 66 90 xchg %ax,%ax : Page page; : OffsetNumber offnum, : maxoff; : HeapTupleHeader tupleheader; : : page = BufferGetPage(buf); 0.00 : 5a54f0: 8b 85 e4 fc ff ff mov -0x31c(%rbp),%eax 0.00 : 5a54f6: 48 8b 15 1b 7c 5d 00 mov 0x5d7c1b(%rip),%rdx # b7d118 0.00 : 5a54fd: f7 d0 not %eax 0.00 : 5a54ff: 48 98 cltq 0.00 : 5a5501: 4c 8b 24 c2 mov (%rdx,%rax,8),%r12 0.00 : 5a5505: e9 ab f7 ff ff jmpq 5a4cb5 : if (next_not_all_visible_block >= SKIP_PAGES_THRESHOLD) : skipping_all_visible_blocks = true; : else : skipping_all_visible_blocks = false; : : for (blkno = 0; blkno < nblocks; blkno++) 0.00 : 5a550a: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 5a550e: c7 85 2c fd ff ff 00 movl $0x0,-0x2d4(%rbp) 0.00 : 5a5515: 00 00 00 0.00 : 5a5518: c7 85 28 fd ff ff 00 movl $0x0,-0x2d8(%rbp) 0.00 : 5a551f: 00 00 00 0.00 : 5a5522: f2 0f 11 85 50 fc ff movsd %xmm0,-0x3b0(%rbp) 0.00 : 5a5529: ff 0.00 : 5a552a: f2 0f 11 85 18 fd ff movsd %xmm0,-0x2e8(%rbp) 0.00 : 5a5531: ff 0.00 : 5a5532: f2 0f 11 85 20 fd ff movsd %xmm0,-0x2e0(%rbp) 0.00 : 5a5539: ff 0.00 : 5a553a: f2 0f 11 85 10 fd ff movsd %xmm0,-0x2f0(%rbp) 0.00 : 5a5541: ff 0.00 : 5a5542: f2 0f 11 85 08 fd ff movsd %xmm0,-0x2f8(%rbp) 0.00 : 5a5549: ff 0.00 : 5a554a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : if (vacrelstats->num_dead_tuples == prev_dead_count) : RecordPageWithFreeSpace(onerel, blkno, freespace); : } : : pfree(frozen); 0.00 : 5a5550: 48 8b bd e8 fc ff ff mov -0x318(%rbp),%rdi 0.00 : 5a5557: e8 24 36 1f 00 callq 798b80 : : /* save stats for use later */ : vacrelstats->scanned_tuples = num_tuples; 0.00 : 5a555c: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 5a5563: f2 0f 10 85 20 fd ff movsd -0x2e0(%rbp),%xmm0 0.00 : 5a556a: ff : vacrelstats->tuples_deleted = tups_vacuumed; : vacrelstats->new_dead_tuples = nkeep; : : /* now we can compute the new value for pg_class.reltuples */ : vacrelstats->new_rel_tuples = vac_estimate_reltuples(onerel, false, 0.00 : 5a556b: 31 f6 xor %esi,%esi : } : : pfree(frozen); : : /* save stats for use later */ : vacrelstats->scanned_tuples = num_tuples; 0.00 : 5a556d: f2 0f 11 40 10 movsd %xmm0,0x10(%rax) : vacrelstats->tuples_deleted = tups_vacuumed; : vacrelstats->new_dead_tuples = nkeep; : : /* now we can compute the new value for pg_class.reltuples */ : vacrelstats->new_rel_tuples = vac_estimate_reltuples(onerel, false, 0.00 : 5a5572: 8b 48 0c mov 0xc(%rax),%ecx : : pfree(frozen); : : /* save stats for use later */ : vacrelstats->scanned_tuples = num_tuples; : vacrelstats->tuples_deleted = tups_vacuumed; 0.00 : 5a5575: f2 0f 10 8d 18 fd ff movsd -0x2e8(%rbp),%xmm1 0.00 : 5a557c: ff 0.00 : 5a557d: f2 0f 11 48 38 movsd %xmm1,0x38(%rax) : vacrelstats->new_dead_tuples = nkeep; 0.00 : 5a5582: f2 0f 10 95 10 fd ff movsd -0x2f0(%rbp),%xmm2 0.00 : 5a5589: ff 0.00 : 5a558a: f2 0f 11 50 28 movsd %xmm2,0x28(%rax) : : /* now we can compute the new value for pg_class.reltuples */ : vacrelstats->new_rel_tuples = vac_estimate_reltuples(onerel, false, 0.00 : 5a558f: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5596: 8b 95 3c fd ff ff mov -0x2c4(%rbp),%edx 0.00 : 5a559c: f2 0f 10 85 20 fd ff movsd -0x2e0(%rbp),%xmm0 0.00 : 5a55a3: ff 0.00 : 5a55a4: e8 d7 dd ff ff callq 5a3380 0.00 : 5a55a9: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 5a55b0: f2 0f 11 40 20 movsd %xmm0,0x20(%rax) : num_tuples); : : /* : * Release any remaining pin on visibility map page. : */ : if (BufferIsValid(vmbuffer)) 0.00 : 5a55b5: 8b 7d bc mov -0x44(%rbp),%edi 0.00 : 5a55b8: 85 ff test %edi,%edi 0.00 : 5a55ba: 0f 85 67 0a 00 00 jne 5a6027 : vmbuffer = InvalidBuffer; : } : : /* If any tuples need to be deleted, perform final vacuum cycle */ : /* XXX put a threshold on min number of tuples here? */ : if (vacrelstats->num_dead_tuples > 0) 0.00 : 5a55c0: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a55c7: 44 8b 5a 44 mov 0x44(%rdx),%r11d 0.00 : 5a55cb: 45 85 db test %r11d,%r11d 0.00 : 5a55ce: 0f 8e 7c 00 00 00 jle 5a5650 : { : /* : * Skip this for relations for which no WAL is to be written, or if we're : * not trying to support archive recovery. : */ : if (!RelationNeedsWAL(rel) || !XLogIsNeeded()) 0.00 : 5a55d4: 48 8b 8d 60 fc ff ff mov -0x3a0(%rbp),%rcx 0.00 : 5a55db: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 5a55df: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 5a55e3: 0f 84 6d 0b 00 00 je 5a6156 : { : /* Log cleanup info before we touch indexes */ : vacuum_log_cleanup_info(onerel, vacrelstats); : : /* Remove index entries */ : for (i = 0; i < nindexes; i++) 0.00 : 5a55e9: 44 8b 8d 74 fd ff ff mov -0x28c(%rbp),%r9d 0.00 : 5a55f0: 45 85 c9 test %r9d,%r9d 0.00 : 5a55f3: 7e 3d jle 5a5632 0.00 : 5a55f5: 45 31 e4 xor %r12d,%r12d 0.00 : 5a55f8: 31 db xor %ebx,%ebx 0.00 : 5a55fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : lazy_vacuum_index(Irel[i], 0.00 : 5a5600: 48 8b 85 68 fc ff ff mov -0x398(%rbp),%rax 0.00 : 5a5607: 48 8b b5 60 fd ff ff mov -0x2a0(%rbp),%rsi : { : /* Log cleanup info before we touch indexes */ : vacuum_log_cleanup_info(onerel, vacrelstats); : : /* Remove index entries */ : for (i = 0; i < nindexes; i++) 0.00 : 5a560e: 41 83 c4 01 add $0x1,%r12d : lazy_vacuum_index(Irel[i], 0.00 : 5a5612: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a5619: 48 8b 3c 18 mov (%rax,%rbx,1),%rdi 0.00 : 5a561d: 48 01 de add %rbx,%rsi : { : /* Log cleanup info before we touch indexes */ : vacuum_log_cleanup_info(onerel, vacrelstats); : : /* Remove index entries */ : for (i = 0; i < nindexes; i++) 0.00 : 5a5620: 48 83 c3 08 add $0x8,%rbx : lazy_vacuum_index(Irel[i], 0.00 : 5a5624: e8 17 f0 ff ff callq 5a4640 : { : /* Log cleanup info before we touch indexes */ : vacuum_log_cleanup_info(onerel, vacrelstats); : : /* Remove index entries */ : for (i = 0; i < nindexes; i++) 0.00 : 5a5629: 44 39 a5 74 fd ff ff cmp %r12d,-0x28c(%rbp) 0.00 : 5a5630: 7f ce jg 5a5600 : lazy_vacuum_index(Irel[i], : &indstats[i], : vacrelstats); : /* Remove tuples from heap */ : lazy_vacuum_heap(onerel, vacrelstats); 0.00 : 5a5632: 48 8b b5 98 fc ff ff mov -0x368(%rbp),%rsi 0.00 : 5a5639: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5640: e8 2b ee ff ff callq 5a4470 : vacrelstats->num_index_scans++; 0.00 : 5a5645: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a564c: 83 42 58 01 addl $0x1,0x58(%rdx) : } : : /* Do post-vacuum cleanup and statistics update for each index */ : for (i = 0; i < nindexes; i++) 0.00 : 5a5650: 44 8b 85 74 fd ff ff mov -0x28c(%rbp),%r8d 0.00 : 5a5657: 45 85 c0 test %r8d,%r8d 0.00 : 5a565a: 0f 8e 70 01 00 00 jle 5a57d0 0.00 : 5a5660: 48 8d 8d 90 fd ff ff lea -0x270(%rbp),%rcx 0.00 : 5a5667: 45 31 ff xor %r15d,%r15d 0.00 : 5a566a: 45 31 ed xor %r13d,%r13d 0.00 : 5a566d: 48 89 8d 58 fc ff ff mov %rcx,-0x3a8(%rbp) 0.00 : 5a5674: eb 4c jmp 5a56c2 0.00 : 5a5676: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5a567d: 00 00 00 : 0, : false, : InvalidTransactionId, : InvalidMultiXactId); : : ereport(elevel, 0.00 : 5a5680: 8b 3d ea 2d 5c 00 mov 0x5c2dea(%rip),%edi # b68470 0.00 : 5a5686: 45 31 c0 xor %r8d,%r8d 0.00 : 5a5689: b9 20 87 88 00 mov $0x888720,%ecx 0.00 : 5a568e: ba 70 05 00 00 mov $0x570,%edx 0.00 : 5a5693: be b0 81 88 00 mov $0x8881b0,%esi 0.00 : 5a5698: e8 23 54 1d 00 callq 77aac0 0.00 : 5a569d: 84 c0 test %al,%al 0.00 : 5a569f: 0f 85 cb 00 00 00 jne 5a5770 : "%s.", : stats->tuples_removed, : stats->pages_deleted, stats->pages_free, : pg_rusage_show(&ru0)))); : : pfree(stats); 0.00 : 5a56a5: 4c 89 e7 mov %r12,%rdi 0.00 : 5a56a8: e8 d3 34 1f 00 callq 798b80 : lazy_vacuum_heap(onerel, vacrelstats); : vacrelstats->num_index_scans++; : } : : /* Do post-vacuum cleanup and statistics update for each index */ : for (i = 0; i < nindexes; i++) 0.00 : 5a56ad: 41 83 c7 01 add $0x1,%r15d 0.00 : 5a56b1: 49 83 c5 08 add $0x8,%r13 0.00 : 5a56b5: 44 39 bd 74 fd ff ff cmp %r15d,-0x28c(%rbp) 0.00 : 5a56bc: 0f 8e 0e 01 00 00 jle 5a57d0 : lazy_cleanup_index(Irel[i], indstats[i], vacrelstats); 0.00 : 5a56c2: 48 8b 85 60 fd ff ff mov -0x2a0(%rbp),%rax 0.00 : 5a56c9: 48 8b 95 68 fc ff ff mov -0x398(%rbp),%rdx : LVRelStats *vacrelstats) : { : IndexVacuumInfo ivinfo; : PGRUsage ru0; : : pg_rusage_init(&ru0); 0.00 : 5a56d0: 48 8b bd 58 fc ff ff mov -0x3a8(%rbp),%rdi : vacrelstats->num_index_scans++; : } : : /* Do post-vacuum cleanup and statistics update for each index */ : for (i = 0; i < nindexes; i++) : lazy_cleanup_index(Irel[i], indstats[i], vacrelstats); 0.00 : 5a56d7: 4a 8b 1c 28 mov (%rax,%r13,1),%rbx 0.00 : 5a56db: 4e 8b 34 2a mov (%rdx,%r13,1),%r14 : LVRelStats *vacrelstats) : { : IndexVacuumInfo ivinfo; : PGRUsage ru0; : : pg_rusage_init(&ru0); 0.00 : 5a56df: e8 7c 03 1f 00 callq 795a60 : : ivinfo.index = indrel; : ivinfo.analyze_only = false; : ivinfo.estimated_count = (vacrelstats->scanned_pages < vacrelstats->rel_pages); 0.00 : 5a56e4: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx : PGRUsage ru0; : : pg_rusage_init(&ru0); : : ivinfo.index = indrel; : ivinfo.analyze_only = false; 0.00 : 5a56eb: c6 85 78 ff ff ff 00 movb $0x0,-0x88(%rbp) : ivinfo.estimated_count = (vacrelstats->scanned_pages < vacrelstats->rel_pages); : ivinfo.message_level = elevel; : ivinfo.num_heap_tuples = vacrelstats->new_rel_tuples; : ivinfo.strategy = vac_strategy; : : stats = index_vacuum_cleanup(&ivinfo, stats); 0.00 : 5a56f2: 48 8d bd 70 ff ff ff lea -0x90(%rbp),%rdi : IndexVacuumInfo ivinfo; : PGRUsage ru0; : : pg_rusage_init(&ru0); : : ivinfo.index = indrel; 0.00 : 5a56f9: 4c 89 b5 70 ff ff ff mov %r14,-0x90(%rbp) : ivinfo.estimated_count = (vacrelstats->scanned_pages < vacrelstats->rel_pages); : ivinfo.message_level = elevel; : ivinfo.num_heap_tuples = vacrelstats->new_rel_tuples; : ivinfo.strategy = vac_strategy; : : stats = index_vacuum_cleanup(&ivinfo, stats); 0.00 : 5a5700: 48 89 de mov %rbx,%rsi : : pg_rusage_init(&ru0); : : ivinfo.index = indrel; : ivinfo.analyze_only = false; : ivinfo.estimated_count = (vacrelstats->scanned_pages < vacrelstats->rel_pages); 0.00 : 5a5703: 8b 41 0c mov 0xc(%rcx),%eax 0.00 : 5a5706: 3b 41 08 cmp 0x8(%rcx),%eax : ivinfo.message_level = elevel; 0.00 : 5a5709: 8b 05 61 2d 5c 00 mov 0x5c2d61(%rip),%eax # b68470 : : pg_rusage_init(&ru0); : : ivinfo.index = indrel; : ivinfo.analyze_only = false; : ivinfo.estimated_count = (vacrelstats->scanned_pages < vacrelstats->rel_pages); 0.00 : 5a570f: 0f 92 85 79 ff ff ff setb -0x87(%rbp) : ivinfo.message_level = elevel; 0.00 : 5a5716: 89 85 7c ff ff ff mov %eax,-0x84(%rbp) : ivinfo.num_heap_tuples = vacrelstats->new_rel_tuples; 0.00 : 5a571c: 48 8b 41 20 mov 0x20(%rcx),%rax 0.00 : 5a5720: 48 89 45 80 mov %rax,-0x80(%rbp) : ivinfo.strategy = vac_strategy; 0.00 : 5a5724: 48 8b 05 8d 41 5d 00 mov 0x5d418d(%rip),%rax # b798b8 0.00 : 5a572b: 48 89 45 88 mov %rax,-0x78(%rbp) : : stats = index_vacuum_cleanup(&ivinfo, stats); 0.00 : 5a572f: e8 fc fb ef ff callq 4a5330 : : if (!stats) 0.00 : 5a5734: 48 85 c0 test %rax,%rax : ivinfo.estimated_count = (vacrelstats->scanned_pages < vacrelstats->rel_pages); : ivinfo.message_level = elevel; : ivinfo.num_heap_tuples = vacrelstats->new_rel_tuples; : ivinfo.strategy = vac_strategy; : : stats = index_vacuum_cleanup(&ivinfo, stats); 0.00 : 5a5737: 49 89 c4 mov %rax,%r12 : : if (!stats) 0.00 : 5a573a: 0f 84 6d ff ff ff je 5a56ad : : /* : * Now update statistics in pg_class, but only if the index says the count : * is accurate. : */ : if (!stats->estimated_count) 0.00 : 5a5740: 80 78 08 00 cmpb $0x0,0x8(%rax) 0.00 : 5a5744: 0f 85 36 ff ff ff jne 5a5680 : vac_update_relstats(indrel, 0.00 : 5a574a: 8b 30 mov (%rax),%esi 0.00 : 5a574c: f2 0f 10 40 10 movsd 0x10(%rax),%xmm0 0.00 : 5a5751: 45 31 c9 xor %r9d,%r9d 0.00 : 5a5754: 45 31 c0 xor %r8d,%r8d 0.00 : 5a5757: 31 c9 xor %ecx,%ecx 0.00 : 5a5759: 31 d2 xor %edx,%edx 0.00 : 5a575b: 4c 89 f7 mov %r14,%rdi 0.00 : 5a575e: e8 dd d4 ff ff callq 5a2c40 0.00 : 5a5763: e9 18 ff ff ff jmpq 5a5680 0.00 : 5a5768: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5a576f: 00 : 0, : false, : InvalidTransactionId, : InvalidMultiXactId); : : ereport(elevel, 0.00 : 5a5770: 48 8b bd 58 fc ff ff mov -0x3a8(%rbp),%rdi 0.00 : 5a5777: e8 14 03 1f 00 callq 795a90 0.00 : 5a577c: 41 8b 54 24 24 mov 0x24(%r12),%edx 0.00 : 5a5781: 41 8b 74 24 20 mov 0x20(%r12),%esi 0.00 : 5a5786: 48 89 c1 mov %rax,%rcx 0.00 : 5a5789: f2 41 0f 10 44 24 18 movsd 0x18(%r12),%xmm0 0.00 : 5a5790: bf 00 83 88 00 mov $0x888300,%edi 0.00 : 5a5795: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5a579a: e8 91 6d 1d 00 callq 77c530 0.00 : 5a579f: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 5a57a3: 41 8b 14 24 mov (%r12),%edx 0.00 : 5a57a7: 89 c3 mov %eax,%ebx 0.00 : 5a57a9: f2 41 0f 10 44 24 10 movsd 0x10(%r12),%xmm0 0.00 : 5a57b0: bf 68 83 88 00 mov $0x888368,%edi 0.00 : 5a57b5: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5a57ba: e8 e1 70 1d 00 callq 77c8a0 0.00 : 5a57bf: 89 de mov %ebx,%esi 0.00 : 5a57c1: 89 c7 mov %eax,%edi 0.00 : 5a57c3: 31 c0 xor %eax,%eax 0.00 : 5a57c5: e8 16 4e 1d 00 callq 77a5e0 0.00 : 5a57ca: e9 d6 fe ff ff jmpq 5a56a5 0.00 : 5a57cf: 90 nop : /* Do post-vacuum cleanup and statistics update for each index */ : for (i = 0; i < nindexes; i++) : lazy_cleanup_index(Irel[i], indstats[i], vacrelstats); : : /* If no indexes, make log report that lazy_vacuum_heap would've made */ : if (vacuumed_pages) 0.00 : 5a57d0: 8b bd 28 fd ff ff mov -0x2d8(%rbp),%edi 0.00 : 5a57d6: 85 ff test %edi,%edi 0.00 : 5a57d8: 74 25 je 5a57ff : ereport(elevel, 0.00 : 5a57da: 8b 3d 90 2c 5c 00 mov 0x5c2c90(%rip),%edi # b68470 0.00 : 5a57e0: 45 31 c0 xor %r8d,%r8d 0.00 : 5a57e3: b9 b0 86 88 00 mov $0x8886b0,%ecx 0.00 : 5a57e8: ba 45 04 00 00 mov $0x445,%edx 0.00 : 5a57ed: be b0 81 88 00 mov $0x8881b0,%esi 0.00 : 5a57f2: e8 c9 52 1d 00 callq 77aac0 0.00 : 5a57f7: 84 c0 test %al,%al 0.00 : 5a57f9: 0f 85 76 05 00 00 jne 5a5d75 : (errmsg("\"%s\": removed %.0f row versions in %u pages", : RelationGetRelationName(onerel), : tups_vacuumed, vacuumed_pages))); : : ereport(elevel, 0.00 : 5a57ff: 8b 3d 6b 2c 5c 00 mov 0x5c2c6b(%rip),%edi # b68470 0.00 : 5a5805: 45 31 c0 xor %r8d,%r8d 0.00 : 5a5808: b9 b0 86 88 00 mov $0x8886b0,%ecx 0.00 : 5a580d: ba 53 04 00 00 mov $0x453,%edx 0.00 : 5a5812: be b0 81 88 00 mov $0x8881b0,%esi 0.00 : 5a5817: e8 a4 52 1d 00 callq 77aac0 0.00 : 5a581c: 84 c0 test %al,%al 0.00 : 5a581e: 0f 85 3e 08 00 00 jne 5a6062 : : /* Do the vacuuming */ : lazy_scan_heap(onerel, vacrelstats, Irel, nindexes, scan_all); : : /* Done with indexes */ : vac_close_indexes(nindexes, Irel, NoLock); 0.00 : 5a5824: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 5a5828: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 5a582b: 31 d2 xor %edx,%edx 0.00 : 5a582d: e8 ce d2 ff ff callq 5a2b00 : * can adjust relfrozenxid and relminmxid. : * : * NB: We need to check this before truncating the relation, because that : * will change ->rel_pages. : */ : if (vacrelstats->scanned_pages < vacrelstats->rel_pages) 0.00 : 5a5832: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx 0.00 : 5a5839: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 5a5840: 8b 5b 0c mov 0xc(%rbx),%ebx 0.00 : 5a5843: 89 9d 74 fc ff ff mov %ebx,-0x38c(%rbp) 0.00 : 5a5849: 44 8b 78 08 mov 0x8(%rax),%r15d : * : * Don't even think about it unless we have a shot at releasing a goodly : * number of pages. Otherwise, the time taken isn't worth it. : */ : possibly_freeable = vacrelstats->rel_pages - vacrelstats->nonempty_pages; : if (possibly_freeable > 0 && 0.00 : 5a584d: 44 89 fa mov %r15d,%edx 0.00 : 5a5850: 2b 50 40 sub 0x40(%rax),%edx 0.00 : 5a5853: 0f 84 47 01 00 00 je 5a59a0 0.00 : 5a5859: 81 fa e7 03 00 00 cmp $0x3e7,%edx 0.00 : 5a585f: 77 0e ja 5a586f 0.00 : 5a5861: 44 89 f8 mov %r15d,%eax 0.00 : 5a5864: c1 e8 04 shr $0x4,%eax 0.00 : 5a5867: 39 c2 cmp %eax,%edx 0.00 : 5a5869: 0f 82 31 01 00 00 jb 5a59a0 : BlockNumber old_rel_pages = vacrelstats->rel_pages; : BlockNumber new_rel_pages; : PGRUsage ru0; : int lock_retry; : : pg_rusage_init(&ru0); 0.00 : 5a586f: 48 8d 95 90 fd ff ff lea -0x270(%rbp),%rdx 0.00 : 5a5876: 45 89 fe mov %r15d,%r14d 0.00 : 5a5879: 48 89 d7 mov %rdx,%rdi 0.00 : 5a587c: 48 89 95 58 fc ff ff mov %rdx,-0x3a8(%rbp) 0.00 : 5a5883: e8 d8 01 1f 00 callq 795a60 : * truncation. If we can't get it, give up rather than waiting --- we : * don't want to block other backends, and we don't want to deadlock : * (which is quite possible considering we already hold a lower-grade : * lock). : */ : vacrelstats->lock_waiter_detected = false; 0.00 : 5a5888: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx 0.00 : 5a588f: 31 db xor %ebx,%ebx 0.00 : 5a5891: c6 41 60 00 movb $0x0,0x60(%rcx) 0.00 : 5a5895: eb 1f jmp 5a58b6 0.00 : 5a5897: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5a589e: 00 00 : * Check for interrupts while trying to (re-)acquire the exclusive : * lock. : */ : CHECK_FOR_INTERRUPTS(); : : if (++lock_retry > (VACUUM_TRUNCATE_LOCK_TIMEOUT / 0.00 : 5a58a0: 83 c3 01 add $0x1,%ebx 0.00 : 5a58a3: 83 fb 65 cmp $0x65,%ebx 0.00 : 5a58a6: 0f 84 a6 00 00 00 je 5a5952 : (errmsg("\"%s\": stopping truncate due to conflicting lock request", : RelationGetRelationName(onerel)))); : return; : } : : pg_usleep(VACUUM_TRUNCATE_LOCK_WAIT_INTERVAL); 0.00 : 5a58ac: bf 32 00 00 00 mov $0x32,%edi 0.00 : 5a58b1: e8 9a 6e 20 00 callq 7ac750 : */ : vacrelstats->lock_waiter_detected = false; : lock_retry = 0; : while (true) : { : if (ConditionalLockRelation(onerel, AccessExclusiveLock)) 0.00 : 5a58b6: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a58bd: be 08 00 00 00 mov $0x8,%esi 0.00 : 5a58c2: e8 79 26 0e 00 callq 687f40 0.00 : 5a58c7: 84 c0 test %al,%al 0.00 : 5a58c9: 0f 85 e1 04 00 00 jne 5a5db0 : : /* : * Check for interrupts while trying to (re-)acquire the exclusive : * lock. : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a58cf: 0f b6 05 ba 47 61 00 movzbl 0x6147ba(%rip),%eax # bba090 0.00 : 5a58d6: 84 c0 test %al,%al 0.00 : 5a58d8: 74 c6 je 5a58a0 0.00 : 5a58da: e8 c1 69 0f 00 callq 69c2a0 0.00 : 5a58df: eb bf jmp 5a58a0 0.00 : 5a58e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : freespace = PageGetHeapFreeSpace(page); : : /* empty pages are always all-visible */ : if (!PageIsAllVisible(page)) : { : START_CRIT_SECTION(); 0.00 : 5a58e8: 8b 05 ae 47 61 00 mov 0x6147ae(%rip),%eax # bba09c : : /* mark buffer dirty before writing a WAL record */ : MarkBufferDirty(buf); 0.00 : 5a58ee: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi : freespace = PageGetHeapFreeSpace(page); : : /* empty pages are always all-visible */ : if (!PageIsAllVisible(page)) : { : START_CRIT_SECTION(); 0.00 : 5a58f4: 83 c0 01 add $0x1,%eax 0.00 : 5a58f7: 89 05 9f 47 61 00 mov %eax,0x61479f(%rip) # bba09c : : /* mark buffer dirty before writing a WAL record */ : MarkBufferDirty(buf); 0.00 : 5a58fd: e8 ee ee 0c 00 callq 6747f0 : * all-visible and find that the page isn't initialized, which : * will cause a PANIC. To prevent that, check whether the : * page has been previously WAL-logged, and if not, do that : * now. : */ : if (RelationNeedsWAL(onerel) && 0.00 : 5a5902: 48 8b 95 60 fc ff ff mov -0x3a0(%rbp),%rdx 0.00 : 5a5909: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 5a590d: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 5a5911: 0f 84 22 07 00 00 je 5a6039 : PageGetLSN(page) == InvalidXLogRecPtr) : log_newpage_buffer(buf, true); : : PageSetAllVisible(page); 0.00 : 5a5917: 66 41 83 4e 0a 04 orw $0x4,0xa(%r14) : visibilitymap_set(onerel, blkno, buf, InvalidXLogRecPtr, 0.00 : 5a591d: 45 31 c9 xor %r9d,%r9d 0.00 : 5a5920: 31 c9 xor %ecx,%ecx 0.00 : 5a5922: 44 8b 45 bc mov -0x44(%rbp),%r8d 0.00 : 5a5926: 8b 95 e4 fc ff ff mov -0x31c(%rbp),%edx 0.00 : 5a592c: 8b b5 38 fd ff ff mov -0x2c8(%rbp),%esi 0.00 : 5a5932: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5939: e8 f2 ec ef ff callq 4a4630 : vmbuffer, InvalidTransactionId); : END_CRIT_SECTION(); 0.00 : 5a593e: 8b 05 58 47 61 00 mov 0x614758(%rip),%eax # bba09c 0.00 : 5a5944: 83 e8 01 sub $0x1,%eax 0.00 : 5a5947: 89 05 4f 47 61 00 mov %eax,0x61474f(%rip) # bba09c 0.00 : 5a594d: e9 6c f4 ff ff jmpq 5a4dbe : { : /* : * We failed to establish the lock in the specified number of : * retries. This means we give up truncating. : */ : vacrelstats->lock_waiter_detected = true; 0.00 : 5a5952: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx : ereport(elevel, 0.00 : 5a5959: 45 31 c0 xor %r8d,%r8d 0.00 : 5a595c: b9 40 87 88 00 mov $0x888740,%ecx 0.00 : 5a5961: ba a5 05 00 00 mov $0x5a5,%edx 0.00 : 5a5966: be b0 81 88 00 mov $0x8881b0,%esi : { : /* : * We failed to establish the lock in the specified number of : * retries. This means we give up truncating. : */ : vacrelstats->lock_waiter_detected = true; 0.00 : 5a596b: c6 43 60 01 movb $0x1,0x60(%rbx) : ereport(elevel, 0.00 : 5a596f: 8b 3d fb 2a 5c 00 mov 0x5c2afb(%rip),%edi # b68470 0.00 : 5a5975: e8 46 51 1d 00 callq 77aac0 0.00 : 5a597a: 84 c0 test %al,%al 0.00 : 5a597c: 74 22 je 5a59a0 0.00 : 5a597e: 48 8b 85 60 fc ff ff mov -0x3a0(%rbp),%rax 0.00 : 5a5985: bf a0 84 88 00 mov $0x8884a0,%edi 0.00 : 5a598a: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 5a598e: 31 c0 xor %eax,%eax 0.00 : 5a5990: e8 0b 6f 1d 00 callq 77c8a0 0.00 : 5a5995: 89 c7 mov %eax,%edi 0.00 : 5a5997: 31 c0 xor %eax,%eax 0.00 : 5a5999: e8 42 4c 1d 00 callq 77a5e0 0.00 : 5a599e: 66 90 xchg %ax,%ax : (possibly_freeable >= REL_TRUNCATE_MINIMUM || : possibly_freeable >= vacrelstats->rel_pages / REL_TRUNCATE_FRACTION)) : lazy_truncate_heap(onerel, vacrelstats); : : /* Vacuum the Free Space Map */ : FreeSpaceMapVacuum(onerel); 0.00 : 5a59a0: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a59a7: e8 d4 68 0d 00 callq 67c280 : * to be not more than what we're setting relpages to. : * : * Also, don't change relfrozenxid/relminmxid if we skipped any pages, : * since then we don't know for certain that all tuples have a newer xmin. : */ : new_rel_pages = vacrelstats->rel_pages; 0.00 : 5a59ac: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx : new_rel_tuples = vacrelstats->new_rel_tuples; 0.00 : 5a59b3: f2 0f 10 41 20 movsd 0x20(%rcx),%xmm0 : * to be not more than what we're setting relpages to. : * : * Also, don't change relfrozenxid/relminmxid if we skipped any pages, : * since then we don't know for certain that all tuples have a newer xmin. : */ : new_rel_pages = vacrelstats->rel_pages; 0.00 : 5a59b8: 8b 59 08 mov 0x8(%rcx),%ebx : new_rel_tuples = vacrelstats->new_rel_tuples; 0.00 : 5a59bb: f2 0f 11 85 b8 fc ff movsd %xmm0,-0x348(%rbp) 0.00 : 5a59c2: ff : if (vacrelstats->scanned_pages == 0 && new_rel_pages > 0) 0.00 : 5a59c3: 8b 71 0c mov 0xc(%rcx),%esi 0.00 : 5a59c6: 85 f6 test %esi,%esi 0.00 : 5a59c8: 75 08 jne 5a59d2 0.00 : 5a59ca: 85 db test %ebx,%ebx 0.00 : 5a59cc: 0f 85 a8 01 00 00 jne 5a5b7a : { : new_rel_pages = vacrelstats->old_rel_pages; : new_rel_tuples = vacrelstats->old_rel_tuples; : } : : new_rel_allvisible = visibilitymap_count(onerel); 0.00 : 5a59d2: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a59d9: e8 d2 e8 ef ff callq 4a42b0 : if (new_rel_allvisible > new_rel_pages) : new_rel_allvisible = new_rel_pages; : : new_frozen_xid = scanned_all ? FreezeLimit : InvalidTransactionId; 0.00 : 5a59de: 45 31 c9 xor %r9d,%r9d 0.00 : 5a59e1: 45 31 c0 xor %r8d,%r8d 0.00 : 5a59e4: 44 39 bd 74 fc ff ff cmp %r15d,-0x38c(%rbp) 0.00 : 5a59eb: 72 0e jb 5a59fb 0.00 : 5a59ed: 44 8b 05 b8 3e 5d 00 mov 0x5d3eb8(%rip),%r8d # b798ac : new_min_multi = scanned_all ? MultiXactCutoff : InvalidMultiXactId; 0.00 : 5a59f4: 44 8b 0d b5 3e 5d 00 mov 0x5d3eb5(%rip),%r9d # b798b0 : : vac_update_relstats(onerel, 0.00 : 5a59fb: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a5a02: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5a09: 39 d8 cmp %ebx,%eax 0.00 : 5a5a0b: f2 0f 10 85 b8 fc ff movsd -0x348(%rbp),%xmm0 0.00 : 5a5a12: ff 0.00 : 5a5a13: 89 de mov %ebx,%esi 0.00 : 5a5a15: 0f be 0a movsbl (%rdx),%ecx 0.00 : 5a5a18: 89 da mov %ebx,%edx 0.00 : 5a5a1a: 0f 46 d0 cmovbe %eax,%edx 0.00 : 5a5a1d: e8 1e d2 ff ff callq 5a2c40 : vacrelstats->hasindex, : new_frozen_xid, : new_min_multi); : : /* report results to the stats collector, too */ : new_live_tuples = new_rel_tuples - vacrelstats->new_dead_tuples; 0.00 : 5a5a22: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx 0.00 : 5a5a29: f2 0f 10 85 b8 fc ff movsd -0x348(%rbp),%xmm0 0.00 : 5a5a30: ff : if (new_live_tuples < 0) 0.00 : 5a5a31: f2 0f 10 95 50 fc ff movsd -0x3b0(%rbp),%xmm2 0.00 : 5a5a38: ff 0.00 : 5a5a39: 31 d2 xor %edx,%edx : vacrelstats->hasindex, : new_frozen_xid, : new_min_multi); : : /* report results to the stats collector, too */ : new_live_tuples = new_rel_tuples - vacrelstats->new_dead_tuples; 0.00 : 5a5a3b: f2 0f 10 49 28 movsd 0x28(%rcx),%xmm1 0.00 : 5a5a40: f2 0f 5c c1 subsd %xmm1,%xmm0 : if (new_live_tuples < 0) 0.00 : 5a5a44: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 5a5a48: 77 05 ja 5a5a4f 0.00 : 5a5a4a: f2 48 0f 2c d0 cvttsd2si %xmm0,%rdx : new_live_tuples = 0; /* just in case */ : : pgstat_report_vacuum(RelationGetRelid(onerel), 0.00 : 5a5a4f: f2 48 0f 2c c9 cvttsd2si %xmm1,%rcx 0.00 : 5a5a54: 48 8b 9d 60 fc ff ff mov -0x3a0(%rbp),%rbx 0.00 : 5a5a5b: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 5a5a5f: 8b 7b 40 mov 0x40(%rbx),%edi 0.00 : 5a5a62: 0f be 70 6d movsbl 0x6d(%rax),%esi 0.00 : 5a5a66: e8 a5 af 09 00 callq 640a10 : onerel->rd_rel->relisshared, : new_live_tuples, : vacrelstats->new_dead_tuples); : : /* and log the action if appropriate */ : if (IsAutoVacuumWorkerProcess() && Log_autovacuum_min_duration >= 0) 0.00 : 5a5a6b: e8 70 3c 09 00 callq 6396e0 0.00 : 5a5a70: 84 c0 test %al,%al 0.00 : 5a5a72: 0f 84 f0 00 00 00 je 5a5b68 0.00 : 5a5a78: 8b 0d 56 2b 5c 00 mov 0x5c2b56(%rip),%ecx # b685d4 0.00 : 5a5a7e: 85 c9 test %ecx,%ecx 0.00 : 5a5a80: 0f 88 e2 00 00 00 js 5a5b68 : { : TimestampTz endtime = GetCurrentTimestamp(); 0.00 : 5a5a86: e8 e5 08 1a 00 callq 746370 : : if (Log_autovacuum_min_duration == 0 || 0.00 : 5a5a8b: 8b 15 43 2b 5c 00 mov 0x5c2b43(%rip),%edx # b685d4 : vacrelstats->new_dead_tuples); : : /* and log the action if appropriate */ : if (IsAutoVacuumWorkerProcess() && Log_autovacuum_min_duration >= 0) : { : TimestampTz endtime = GetCurrentTimestamp(); 0.00 : 5a5a91: 48 89 c3 mov %rax,%rbx : : if (Log_autovacuum_min_duration == 0 || 0.00 : 5a5a94: 85 d2 test %edx,%edx 0.00 : 5a5a96: 74 17 je 5a5aaf 0.00 : 5a5a98: 48 8b bd a0 fc ff ff mov -0x360(%rbp),%rdi 0.00 : 5a5a9f: 48 89 c6 mov %rax,%rsi 0.00 : 5a5aa2: e8 d9 ab 19 00 callq 740680 0.00 : 5a5aa7: 84 c0 test %al,%al 0.00 : 5a5aa9: 0f 84 b9 00 00 00 je 5a5b68 : TimestampDifferenceExceeds(starttime, endtime, : Log_autovacuum_min_duration)) : { : TimestampDifference(starttime, endtime, &secs, &usecs); 0.00 : 5a5aaf: 48 8b bd a0 fc ff ff mov -0x360(%rbp),%rdi 0.00 : 5a5ab6: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 5a5aba: 48 8d 55 a8 lea -0x58(%rbp),%rdx 0.00 : 5a5abe: 48 89 de mov %rbx,%rsi 0.00 : 5a5ac1: e8 6a ab 19 00 callq 740630 : : read_rate = 0; : write_rate = 0; : if ((secs > 0) || (usecs > 0)) 0.00 : 5a5ac6: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 5a5aca: 48 85 c0 test %rax,%rax 0.00 : 5a5acd: 0f 8e 74 08 00 00 jle 5a6347 : { : read_rate = (double) BLCKSZ *VacuumPageMiss / (1024 * 1024) / 0.00 : 5a5ad3: f2 0f 2a 45 c8 cvtsi2sdl -0x38(%rbp),%xmm0 0.00 : 5a5ad8: f2 0f 5e 05 00 6b 2d divsd 0x2d6b00(%rip),%xmm0 # 87c5e0 <__func__.18742+0x1b> 0.00 : 5a5adf: 00 0.00 : 5a5ae0: f2 48 0f 2a c8 cvtsi2sd %rax,%xmm1 0.00 : 5a5ae5: f2 0f 2a 15 eb 45 61 cvtsi2sdl 0x6145eb(%rip),%xmm2 # bba0d8 0.00 : 5a5aec: 00 0.00 : 5a5aed: f2 0f 11 95 a8 fc ff movsd %xmm2,-0x358(%rbp) 0.00 : 5a5af4: ff 0.00 : 5a5af5: f2 0f 10 15 83 2c 2e movsd 0x2e2c83(%rip),%xmm2 # 888780 <__func__.17040+0x20> 0.00 : 5a5afc: 00 0.00 : 5a5afd: f2 0f 10 9d a8 fc ff movsd -0x358(%rbp),%xmm3 0.00 : 5a5b04: ff 0.00 : 5a5b05: f2 0f 59 da mulsd %xmm2,%xmm3 0.00 : 5a5b09: f2 0f 58 c8 addsd %xmm0,%xmm1 0.00 : 5a5b0d: f2 0f 10 05 ab 24 2d movsd 0x2d24ab(%rip),%xmm0 # 877fc0 <__func__.20035+0x12> 0.00 : 5a5b14: 00 0.00 : 5a5b15: f2 0f 59 d8 mulsd %xmm0,%xmm3 0.00 : 5a5b19: f2 0f 5e d9 divsd %xmm1,%xmm3 0.00 : 5a5b1d: f2 0f 11 9d a8 fc ff movsd %xmm3,-0x358(%rbp) 0.00 : 5a5b24: ff : (secs + usecs / 1000000.0); : write_rate = (double) BLCKSZ *VacuumPageDirty / (1024 * 1024) / 0.00 : 5a5b25: f2 0f 2a 1d af 45 61 cvtsi2sdl 0x6145af(%rip),%xmm3 # bba0dc 0.00 : 5a5b2c: 00 0.00 : 5a5b2d: f2 0f 59 d3 mulsd %xmm3,%xmm2 0.00 : 5a5b31: f2 0f 59 c2 mulsd %xmm2,%xmm0 0.00 : 5a5b35: f2 0f 5e c1 divsd %xmm1,%xmm0 0.00 : 5a5b39: f2 0f 11 85 b0 fc ff movsd %xmm0,-0x350(%rbp) 0.00 : 5a5b40: ff : (secs + usecs / 1000000.0); : } : ereport(LOG, 0.00 : 5a5b41: 45 31 c0 xor %r8d,%r8d 0.00 : 5a5b44: b9 a0 86 88 00 mov $0x8886a0,%ecx 0.00 : 5a5b49: ba 6c 01 00 00 mov $0x16c,%edx 0.00 : 5a5b4e: be b0 81 88 00 mov $0x8881b0,%esi 0.00 : 5a5b53: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 5a5b58: e8 63 4f 1d 00 callq 77aac0 0.00 : 5a5b5d: 84 c0 test %al,%al 0.00 : 5a5b5f: 0f 85 55 06 00 00 jne 5a61ba 0.00 : 5a5b65: 0f 1f 00 nopl (%rax) : VacuumPageDirty, : read_rate, write_rate, : pg_rusage_show(&ru0)))); : } : } : } 0.00 : 5a5b68: 48 81 c4 c8 03 00 00 add $0x3c8,%rsp 0.00 : 5a5b6f: 5b pop %rbx 0.00 : 5a5b70: 41 5c pop %r12 0.00 : 5a5b72: 41 5d pop %r13 0.00 : 5a5b74: 41 5e pop %r14 0.00 : 5a5b76: 41 5f pop %r15 0.00 : 5a5b78: c9 leaveq 0.00 : 5a5b79: c3 retq : new_rel_pages = vacrelstats->rel_pages; : new_rel_tuples = vacrelstats->new_rel_tuples; : if (vacrelstats->scanned_pages == 0 && new_rel_pages > 0) : { : new_rel_pages = vacrelstats->old_rel_pages; : new_rel_tuples = vacrelstats->old_rel_tuples; 0.00 : 5a5b7a: f2 0f 10 49 18 movsd 0x18(%rcx),%xmm1 : */ : new_rel_pages = vacrelstats->rel_pages; : new_rel_tuples = vacrelstats->new_rel_tuples; : if (vacrelstats->scanned_pages == 0 && new_rel_pages > 0) : { : new_rel_pages = vacrelstats->old_rel_pages; 0.00 : 5a5b7f: 8b 59 04 mov 0x4(%rcx),%ebx : new_rel_tuples = vacrelstats->old_rel_tuples; 0.00 : 5a5b82: f2 0f 11 8d b8 fc ff movsd %xmm1,-0x348(%rbp) 0.00 : 5a5b89: ff 0.00 : 5a5b8a: e9 43 fe ff ff jmpq 5a59d2 0.00 : 5a5b8f: 90 nop : } : : freespace = PageGetHeapFreeSpace(page); : : /* mark page all-visible, if appropriate */ : if (all_visible && !all_visible_according_to_vm) 0.00 : 5a5b90: 84 db test %bl,%bl 0.00 : 5a5b92: 74 55 je 5a5be9 : * are enabled, we do need to make sure that the heap page is : * dirtied before passing it to visibilitymap_set(), because it : * may be logged. Given that this situation should only happen in : * rare cases after a crash, it is not worth optimizing. : */ : PageSetAllVisible(page); 0.00 : 5a5b94: 66 41 83 4e 0a 04 orw $0x4,0xa(%r14) : MarkBufferDirty(buf); /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:986 0.79 : 5a5b9a: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a5ba0: e8 4b ec 0c 00 callq 6747f0 : visibilitymap_set(onerel, blkno, buf, InvalidXLogRecPtr, 0.00 : 5a5ba5: 44 8b 45 bc mov -0x44(%rbp),%r8d /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:987 0.79 : 5a5ba9: 8b 95 e4 fc ff ff mov -0x31c(%rbp),%edx 0.00 : 5a5baf: 45 89 e9 mov %r13d,%r9d 0.00 : 5a5bb2: 8b b5 38 fd ff ff mov -0x2c8(%rbp),%esi 0.00 : 5a5bb8: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5bbf: 31 c9 xor %ecx,%ecx 0.00 : 5a5bc1: e8 6a ea ef ff callq 4a4630 0.00 : 5a5bc6: e9 85 f3 ff ff jmpq 5a4f50 : * the page-level bit is clear. However, it's possible that the bit : * got cleared after we checked it and before we took the buffer : * content lock, so we must recheck before jumping to the conclusion : * that something bad has happened. : */ : else if (all_visible_according_to_vm && !PageIsAllVisible(page) 0.00 : 5a5bcb: 8b b5 38 fd ff ff mov -0x2c8(%rbp),%esi 0.00 : 5a5bd1: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5bd8: 48 8d 55 bc lea -0x44(%rbp),%rdx 0.00 : 5a5bdc: e8 6f e7 ef ff callq 4a4350 0.00 : 5a5be1: 84 c0 test %al,%al 0.00 : 5a5be3: 0f 85 e8 06 00 00 jne 5a62d1 0.00 : 5a5be9: 41 0f b7 46 0a movzwl 0xa(%r14),%eax 0.00 : 5a5bee: 83 e0 04 and $0x4,%eax : * actually are, and the PD_ALL_VISIBLE flag is correct. : * : * There should never be dead tuples on a page with PD_ALL_VISIBLE : * set, however. : */ : else if (PageIsAllVisible(page) && has_dead_tuples) 0.00 : 5a5bf1: 85 c0 test %eax,%eax 0.00 : 5a5bf3: 0f 84 57 f3 ff ff je 5a4f50 0.00 : 5a5bf9: e9 3e f3 ff ff jmpq 5a4f3c 0.00 : 5a5bfe: 66 90 xchg %ax,%ax : LockRelationForExtension(onerel, ExclusiveLock); : UnlockRelationForExtension(onerel, ExclusiveLock); : LockBufferForCleanup(buf); : if (PageIsNew(page)) : { : ereport(WARNING, 0.00 : 5a5c00: 45 31 c0 xor %r8d,%r8d 0.00 : 5a5c03: b9 b0 86 88 00 mov $0x8886b0,%ecx 0.00 : 5a5c08: ba a8 02 00 00 mov $0x2a8,%edx 0.00 : 5a5c0d: be b0 81 88 00 mov $0x8881b0,%esi 0.00 : 5a5c12: bf 13 00 00 00 mov $0x13,%edi 0.00 : 5a5c17: e8 a4 4e 1d 00 callq 77aac0 0.00 : 5a5c1c: 84 c0 test %al,%al 0.00 : 5a5c1e: 0f 85 be 04 00 00 jne 5a60e2 : (errmsg("relation \"%s\" page %u is uninitialized --- fixing", : relname, blkno))); : PageInit(page, BufferGetPageSize(buf), 0); 0.00 : 5a5c24: 31 d2 xor %edx,%edx 0.00 : 5a5c26: be 00 20 00 00 mov $0x2000,%esi 0.00 : 5a5c2b: 4c 89 f7 mov %r14,%rdi 0.00 : 5a5c2e: e8 0d 06 0f 00 callq 696240 : empty_pages++; 0.00 : 5a5c33: 83 85 2c fd ff ff 01 addl $0x1,-0x2d4(%rbp) 0.00 : 5a5c3a: e9 af f3 ff ff jmpq 5a4fee : xl_heap_freeze_tuple *frozen; : : pg_rusage_init(&ru0); : : relname = RelationGetRelationName(onerel); : ereport(elevel, 0.00 : 5a5c3f: 48 8b 95 60 fc ff ff mov -0x3a0(%rbp),%rdx 0.00 : 5a5c46: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 5a5c4a: 8b 78 40 mov 0x40(%rax),%edi 0.00 : 5a5c4d: e8 9e cd 1c 00 callq 7729f0 0.00 : 5a5c52: 48 89 da mov %rbx,%rdx 0.00 : 5a5c55: 48 89 c6 mov %rax,%rsi 0.00 : 5a5c58: bf dd 7f 87 00 mov $0x877fdd,%edi 0.00 : 5a5c5d: 31 c0 xor %eax,%eax 0.00 : 5a5c5f: e8 3c 6c 1d 00 callq 77c8a0 0.00 : 5a5c64: 89 c7 mov %eax,%edi 0.00 : 5a5c66: 31 c0 xor %eax,%eax 0.00 : 5a5c68: e8 73 49 1d 00 callq 77a5e0 0.00 : 5a5c6d: e9 ad ec ff ff jmpq 5a491f : */ : if (all_visible) : { : TransactionId xmin; : : if (!HeapTupleHeaderXminCommitted(tuple.t_data)) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:844 3.15 : 5a5c72: 0f b7 47 14 movzwl 0x14(%rdi),%eax 0.00 : 5a5c76: 49 89 f8 mov %rdi,%r8 0.00 : 5a5c79: f6 c4 01 test $0x1,%ah 0.00 : 5a5c7c: 0f 84 a2 f6 ff ff je 5a5324 : : /* : * The inserter definitely committed. But is it old : * enough that everyone sees it as committed? : */ : xmin = HeapTupleHeaderGetXmin(tuple.t_data); 0.00 : 5a5c82: 25 00 03 00 00 and $0x300,%eax /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:854 1.57 : 5a5c87: 41 bd 02 00 00 00 mov $0x2,%r13d 0.00 : 5a5c8d: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 5a5c92: 74 03 je 5a5c97 0.00 : 5a5c94: 44 8b 2f mov (%rdi),%r13d : if (!TransactionIdPrecedes(xmin, OldestXmin)) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:855 0.79 : 5a5c97: 8b 35 0b 3c 5d 00 mov 0x5d3c0b(%rip),%esi # b798a8 0.79 : 5a5c9d: 44 89 ef mov %r13d,%edi 0.79 : 5a5ca0: e8 3b a3 f1 ff callq 4bffe0 0.79 : 5a5ca5: 84 c0 test %al,%al 0.00 : 5a5ca7: 0f 85 70 06 00 00 jne 5a631d 0.00 : 5a5cad: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.00 : 5a5cb1: 45 89 e5 mov %r12d,%r13d 0.00 : 5a5cb4: c6 85 c2 fc ff ff 00 movb $0x0,-0x33e(%rbp) 0.00 : 5a5cbb: f2 0f 10 05 95 94 20 movsd 0x209495(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5a5cc2: 00 0.00 : 5a5cc3: e9 6e f6 ff ff jmpq 5a5336 : * it were RECENTLY_DEAD. Also, if it's a heap-only : * tuple, we choose to keep it, because it'll be a lot : * cheaper to get rid of it in the next pruning pass than : * to treat it like an indexed tuple. : */ : if (HeapTupleIsHotUpdated(&tuple) || 0.00 : 5a5cc8: 25 00 03 00 00 and $0x300,%eax 0.00 : 5a5ccd: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 5a5cd2: 0f 84 95 f7 ff ff je 5a546d : HeapTupleIsHeapOnly(&tuple)) : nkeep += 1; 0.00 : 5a5cd8: f2 0f 10 05 78 94 20 movsd 0x209478(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5a5cdf: 00 0.00 : 5a5ce0: 45 89 e5 mov %r12d,%r13d 0.00 : 5a5ce3: c6 85 c2 fc ff ff 00 movb $0x0,-0x33e(%rbp) 0.00 : 5a5cea: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 5a5cee: f2 0f 58 8d 10 fd ff addsd -0x2f0(%rbp),%xmm1 0.00 : 5a5cf5: ff 0.00 : 5a5cf6: f2 0f 11 8d 10 fd ff movsd %xmm1,-0x2f0(%rbp) 0.00 : 5a5cfd: ff 0.00 : 5a5cfe: e9 33 f6 ff ff jmpq 5a5336 : tupgone = true; /* we can delete the tuple */ : all_visible = false; : break; : case HEAPTUPLE_LIVE: : /* Tuple is good --- but let's do some validity checks */ : if (onerel->rd_rel->relhasoids && 0.00 : 5a5d03: 0f b6 47 16 movzbl 0x16(%rdi),%eax 0.00 : 5a5d07: 8b 44 07 fc mov -0x4(%rdi,%rax,1),%eax 0.00 : 5a5d0b: 85 c0 test %eax,%eax 0.00 : 5a5d0d: 0f 84 dc f6 ff ff je 5a53ef 0.00 : 5a5d13: e9 11 f7 ff ff jmpq 5a5429 : * There should never be dead tuples on a page with PD_ALL_VISIBLE : * set, however. : */ : else if (PageIsAllVisible(page) && has_dead_tuples) : { : elog(WARNING, "page containing dead tuples is marked as all-visible in relation \"%s\" page %u", 0.00 : 5a5d18: ba b0 86 88 00 mov $0x8886b0,%edx 0.00 : 5a5d1d: be fe 03 00 00 mov $0x3fe,%esi 0.00 : 5a5d22: bf b0 81 88 00 mov $0x8881b0,%edi 0.00 : 5a5d27: e8 f4 56 1d 00 callq 77b420 0.00 : 5a5d2c: 48 8b 95 30 fd ff ff mov -0x2d0(%rbp),%rdx 0.00 : 5a5d33: 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%ecx 0.00 : 5a5d39: be b0 82 88 00 mov $0x8882b0,%esi 0.00 : 5a5d3e: 31 c0 xor %eax,%eax 0.00 : 5a5d40: bf 13 00 00 00 mov $0x13,%edi 0.00 : 5a5d45: e8 e6 54 1d 00 callq 77b230 : relname, blkno); : PageClearAllVisible(page); 0.00 : 5a5d4a: 66 41 83 66 0a fb andw $0xfffb,0xa(%r14) : MarkBufferDirty(buf); 0.00 : 5a5d50: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a5d56: e8 95 ea 0c 00 callq 6747f0 : visibilitymap_clear(onerel, blkno, vmbuffer); 0.00 : 5a5d5b: 8b 55 bc mov -0x44(%rbp),%edx 0.00 : 5a5d5e: 8b b5 38 fd ff ff mov -0x2c8(%rbp),%esi 0.00 : 5a5d64: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5d6b: e8 c0 e7 ef ff callq 4a4530 0.00 : 5a5d70: e9 db f1 ff ff jmpq 5a4f50 : for (i = 0; i < nindexes; i++) : lazy_cleanup_index(Irel[i], indstats[i], vacrelstats); : : /* If no indexes, make log report that lazy_vacuum_heap would've made */ : if (vacuumed_pages) : ereport(elevel, 0.00 : 5a5d75: 48 8b 9d 60 fc ff ff mov -0x3a0(%rbp),%rbx 0.00 : 5a5d7c: 8b 95 28 fd ff ff mov -0x2d8(%rbp),%edx 0.00 : 5a5d82: bf a0 83 88 00 mov $0x8883a0,%edi 0.00 : 5a5d87: f2 0f 10 85 18 fd ff movsd -0x2e8(%rbp),%xmm0 0.00 : 5a5d8e: ff 0.00 : 5a5d8f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5a5d94: 48 8b 73 30 mov 0x30(%rbx),%rsi 0.00 : 5a5d98: e8 03 6b 1d 00 callq 77c8a0 0.00 : 5a5d9d: 89 c7 mov %eax,%edi 0.00 : 5a5d9f: 31 c0 xor %eax,%eax 0.00 : 5a5da1: e8 3a 48 1d 00 callq 77a5e0 0.00 : 5a5da6: e9 54 fa ff ff jmpq 5a57ff 0.00 : 5a5dab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * Now that we have exclusive lock, look to see if the rel has grown : * whilst we were vacuuming with non-exclusive lock. If so, give up; : * the newly added pages presumably contain non-deletable tuples. : */ : new_rel_pages = RelationGetNumberOfBlocks(onerel); 0.00 : 5a5db0: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5db7: 31 f6 xor %esi,%esi 0.00 : 5a5db9: e8 d2 f8 0c 00 callq 675690 : if (new_rel_pages != old_rel_pages) 0.00 : 5a5dbe: 44 39 f0 cmp %r14d,%eax : /* : * Now that we have exclusive lock, look to see if the rel has grown : * whilst we were vacuuming with non-exclusive lock. If so, give up; : * the newly added pages presumably contain non-deletable tuples. : */ : new_rel_pages = RelationGetNumberOfBlocks(onerel); 0.00 : 5a5dc1: 89 85 6c fd ff ff mov %eax,-0x294(%rbp) : if (new_rel_pages != old_rel_pages) 0.00 : 5a5dc7: 0f 85 0b 06 00 00 jne 5a63d8 : { : BlockNumber blkno; : instr_time starttime; : : /* Initialize the starttime if we check for conflicting lock requests */ : INSTR_TIME_SET_CURRENT(starttime); 0.00 : 5a5dcd: 48 8d bd 70 ff ff ff lea -0x90(%rbp),%rdi 0.00 : 5a5dd4: 31 f6 xor %esi,%esi 0.00 : 5a5dd6: e8 e5 37 ec ff callq 4695c0 : : /* Strange coding of loop control is needed because blkno is unsigned */ : blkno = vacrelstats->rel_pages; 0.00 : 5a5ddb: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a5de2: 44 8b 62 08 mov 0x8(%rdx),%r12d 0.00 : 5a5de6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5a5ded: 00 00 00 : while (blkno > vacrelstats->nonempty_pages) 0.00 : 5a5df0: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a5df7: 8b 42 40 mov 0x40(%rdx),%eax 0.00 : 5a5dfa: 41 39 c4 cmp %eax,%r12d 0.00 : 5a5dfd: 0f 86 1c 02 00 00 jbe 5a601f : * only do this once per VACUUM_TRUNCATE_LOCK_CHECK_INTERVAL, and we : * only check if that interval has elapsed once every 32 blocks to : * keep the number of system calls and actual shared lock table : * lookups to a minimum. : */ : if ((blkno % 32) == 0) 0.00 : 5a5e03: 41 f6 c4 1f test $0x1f,%r12b 0.00 : 5a5e07: 0f 84 c3 00 00 00 je 5a5ed0 : /* : * We don't insert a vacuum delay point here, because we have an : * exclusive lock on the table which we want to hold for as short a : * time as possible. We still need to check for interrupts however. : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a5e0d: 0f b6 05 7c 42 61 00 movzbl 0x61427c(%rip),%eax # bba090 0.00 : 5a5e14: 84 c0 test %al,%al 0.00 : 5a5e16: 0f 85 4c 01 00 00 jne 5a5f68 : : blkno--; : : buf = ReadBufferExtended(onerel, MAIN_FORKNUM, blkno, 0.00 : 5a5e1c: 4c 8b 05 95 3a 5d 00 mov 0x5d3a95(%rip),%r8 # b798b8 0.00 : 5a5e23: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi : * exclusive lock on the table which we want to hold for as short a : * time as possible. We still need to check for interrupts however. : */ : CHECK_FOR_INTERRUPTS(); : : blkno--; 0.00 : 5a5e2a: 45 8d 6c 24 ff lea -0x1(%r12),%r13d : : buf = ReadBufferExtended(onerel, MAIN_FORKNUM, blkno, 0.00 : 5a5e2f: 31 c9 xor %ecx,%ecx 0.00 : 5a5e31: 31 f6 xor %esi,%esi 0.00 : 5a5e33: 44 89 ea mov %r13d,%edx 0.00 : 5a5e36: e8 35 07 0d 00 callq 676570 : RBM_NORMAL, vac_strategy); : : /* In this phase we only need shared access to the buffer */ : LockBuffer(buf, BUFFER_LOCK_SHARE); 0.00 : 5a5e3b: be 01 00 00 00 mov $0x1,%esi : */ : CHECK_FOR_INTERRUPTS(); : : blkno--; : : buf = ReadBufferExtended(onerel, MAIN_FORKNUM, blkno, 0.00 : 5a5e40: 89 c3 mov %eax,%ebx : RBM_NORMAL, vac_strategy); : : /* In this phase we only need shared access to the buffer */ : LockBuffer(buf, BUFFER_LOCK_SHARE); 0.00 : 5a5e42: 89 c7 mov %eax,%edi 0.00 : 5a5e44: e8 c7 e8 0c 00 callq 674710 : : page = BufferGetPage(buf); 0.00 : 5a5e49: 85 db test %ebx,%ebx 0.00 : 5a5e4b: 0f 88 27 01 00 00 js 5a5f78 0.00 : 5a5e51: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 5a5e54: 48 63 c8 movslq %eax,%rcx 0.00 : 5a5e57: 48 c1 e1 0d shl $0xd,%rcx 0.00 : 5a5e5b: 48 03 0d 96 9c 61 00 add 0x619c96(%rip),%rcx # bbfaf8 : : if (PageIsNew(page) || PageIsEmpty(page)) 0.00 : 5a5e62: 66 83 79 0e 00 cmpw $0x0,0xe(%rcx) 0.00 : 5a5e67: 74 57 je 5a5ec0 0.00 : 5a5e69: 0f b7 41 0c movzwl 0xc(%rcx),%eax 0.00 : 5a5e6d: 66 83 f8 18 cmp $0x18,%ax 0.00 : 5a5e71: 76 4d jbe 5a5ec0 : UnlockReleaseBuffer(buf); : continue; : } : : hastup = false; : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 5a5e73: 0f b7 c0 movzwl %ax,%eax 0.00 : 5a5e76: 48 83 e8 18 sub $0x18,%rax 0.00 : 5a5e7a: 48 89 c6 mov %rax,%rsi 0.00 : 5a5e7d: 48 c1 ee 02 shr $0x2,%rsi : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 5a5e81: 66 85 f6 test %si,%si 0.00 : 5a5e84: 74 3a je 5a5ec0 : * Note: any non-unused item should be taken as a reason to keep : * this page. We formerly thought that DEAD tuples could be : * thrown away, but that's not so, because we'd not have cleaned : * out their index entries. : */ : if (ItemIdIsUsed(itemid)) 0.00 : 5a5e86: f7 41 18 00 80 01 00 testl $0x18000,0x18(%rcx) 0.00 : 5a5e8d: 0f 85 fd 00 00 00 jne 5a5f90 0.00 : 5a5e93: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5a5e98: eb 17 jmp 5a5eb1 0.00 : 5a5e9a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5a5ea0: 0f b7 c2 movzwl %dx,%eax 0.00 : 5a5ea3: f7 44 81 14 00 80 01 testl $0x18000,0x14(%rcx,%rax,4) 0.00 : 5a5eaa: 00 0.00 : 5a5eab: 0f 85 df 00 00 00 jne 5a5f90 0.00 : 5a5eb1: 83 c2 01 add $0x1,%edx : } : : hastup = false; : maxoff = PageGetMaxOffsetNumber(page); : for (offnum = FirstOffsetNumber; : offnum <= maxoff; 0.00 : 5a5eb4: 66 39 f2 cmp %si,%dx 0.00 : 5a5eb7: 76 e7 jbe 5a5ea0 0.00 : 5a5eb9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : hastup = true; : break; /* can stop scanning */ : } : } /* scan along page */ : : UnlockReleaseBuffer(buf); 0.00 : 5a5ec0: 89 df mov %ebx,%edi 0.00 : 5a5ec2: 45 89 ec mov %r13d,%r12d 0.00 : 5a5ec5: e8 66 f0 0c 00 callq 674f30 0.00 : 5a5eca: e9 21 ff ff ff jmpq 5a5df0 0.00 : 5a5ecf: 90 nop : if ((blkno % 32) == 0) : { : instr_time currenttime; : instr_time elapsed; : : INSTR_TIME_SET_CURRENT(currenttime); 0.00 : 5a5ed0: 48 8d 7d 90 lea -0x70(%rbp),%rdi 0.00 : 5a5ed4: 31 f6 xor %esi,%esi 0.00 : 5a5ed6: e8 e5 36 ec ff callq 4695c0 : elapsed = currenttime; 0.00 : 5a5edb: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5a5edf: 48 8b 4d 90 mov -0x70(%rbp),%rcx : INSTR_TIME_SUBTRACT(elapsed, starttime); 0.00 : 5a5ee3: 48 2b 8d 70 ff ff ff sub -0x90(%rbp),%rcx 0.00 : 5a5eea: 48 89 c2 mov %rax,%rdx 0.00 : 5a5eed: 48 2b 95 78 ff ff ff sub -0x88(%rbp),%rdx 0.00 : 5a5ef4: 79 17 jns 5a5f0d 0.00 : 5a5ef6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5a5efd: 00 00 00 0.00 : 5a5f00: 48 83 e9 01 sub $0x1,%rcx 0.00 : 5a5f04: 48 81 c2 40 42 0f 00 add $0xf4240,%rdx 0.00 : 5a5f0b: 78 f3 js 5a5f00 : if ((INSTR_TIME_GET_MICROSEC(elapsed) / 1000) 0.00 : 5a5f0d: 48 69 c1 40 42 0f 00 imul $0xf4240,%rcx,%rax 0.00 : 5a5f14: 48 01 d0 add %rdx,%rax 0.00 : 5a5f17: 48 3d 1f 4e 00 00 cmp $0x4e1f,%rax 0.00 : 5a5f1d: 0f 86 ea fe ff ff jbe 5a5e0d : >= VACUUM_TRUNCATE_LOCK_CHECK_INTERVAL) : { : if (LockHasWaitersRelation(onerel, AccessExclusiveLock)) 0.00 : 5a5f23: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5f2a: be 08 00 00 00 mov $0x8,%esi 0.00 : 5a5f2f: e8 4c 24 0e 00 callq 688380 0.00 : 5a5f34: 84 c0 test %al,%al 0.00 : 5a5f36: 0f 85 4b 04 00 00 jne 5a6387 : RelationGetRelationName(onerel)))); : : vacrelstats->lock_waiter_detected = true; : return blkno; : } : starttime = currenttime; 0.00 : 5a5f3c: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 5a5f40: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 5a5f47: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 5a5f4b: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : /* : * We don't insert a vacuum delay point here, because we have an : * exclusive lock on the table which we want to hold for as short a : * time as possible. We still need to check for interrupts however. : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a5f52: 0f b6 05 37 41 61 00 movzbl 0x614137(%rip),%eax # bba090 0.00 : 5a5f59: 84 c0 test %al,%al 0.00 : 5a5f5b: 0f 84 bb fe ff ff je 5a5e1c 0.00 : 5a5f61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5a5f68: e8 33 63 0f 00 callq 69c2a0 0.00 : 5a5f6d: e9 aa fe ff ff jmpq 5a5e1c 0.00 : 5a5f72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : RBM_NORMAL, vac_strategy); : : /* In this phase we only need shared access to the buffer */ : LockBuffer(buf, BUFFER_LOCK_SHARE); : : page = BufferGetPage(buf); 0.00 : 5a5f78: 89 d8 mov %ebx,%eax 0.00 : 5a5f7a: 48 8b 15 97 71 5d 00 mov 0x5d7197(%rip),%rdx # b7d118 0.00 : 5a5f81: f7 d0 not %eax 0.00 : 5a5f83: 48 98 cltq 0.00 : 5a5f85: 48 8b 0c c2 mov (%rdx,%rax,8),%rcx 0.00 : 5a5f89: e9 d4 fe ff ff jmpq 5a5e62 0.00 : 5a5f8e: 66 90 xchg %ax,%ax : hastup = true; : break; /* can stop scanning */ : } : } /* scan along page */ : : UnlockReleaseBuffer(buf); 0.00 : 5a5f90: 89 df mov %ebx,%edi 0.00 : 5a5f92: e8 99 ef 0c 00 callq 674f30 : * other backends could have added tuples to these pages whilst we : * were vacuuming. : */ : new_rel_pages = count_nondeletable_pages(onerel, vacrelstats); : : if (new_rel_pages >= old_rel_pages) 0.00 : 5a5f97: 45 39 e6 cmp %r12d,%r14d 0.00 : 5a5f9a: 0f 86 38 04 00 00 jbe 5a63d8 : } : : /* : * Okay to truncate. : */ : RelationTruncate(onerel, new_rel_pages); 0.00 : 5a5fa0: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5fa7: 44 89 e6 mov %r12d,%esi 0.00 : 5a5faa: e8 a1 2f f6 ff callq 508f50 : * Other backends can't safely access the relation until they have : * processed the smgr invalidation that smgrtruncate sent out ... but : * that should happen as part of standard invalidation processing once : * they acquire lock on the relation. : */ : UnlockRelation(onerel, AccessExclusiveLock); 0.00 : 5a5faf: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a5fb6: be 08 00 00 00 mov $0x8,%esi 0.00 : 5a5fbb: e8 50 1c 0e 00 callq 687c10 : /* : * Update statistics. Here, it *is* correct to adjust rel_pages : * without also touching reltuples, since the tuple count wasn't : * changed by the truncation. : */ : vacrelstats->pages_removed += old_rel_pages - new_rel_pages; 0.00 : 5a5fc0: 8b 85 6c fd ff ff mov -0x294(%rbp),%eax 0.00 : 5a5fc6: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx : vacrelstats->rel_pages = new_rel_pages; : : ereport(elevel, 0.00 : 5a5fcd: 45 31 c0 xor %r8d,%r8d 0.00 : 5a5fd0: ba e9 05 00 00 mov $0x5e9,%edx 0.00 : 5a5fd5: be b0 81 88 00 mov $0x8881b0,%esi : /* : * Update statistics. Here, it *is* correct to adjust rel_pages : * without also touching reltuples, since the tuple count wasn't : * changed by the truncation. : */ : vacrelstats->pages_removed += old_rel_pages - new_rel_pages; 0.00 : 5a5fda: 44 29 e0 sub %r12d,%eax 0.00 : 5a5fdd: 01 41 30 add %eax,0x30(%rcx) : vacrelstats->rel_pages = new_rel_pages; 0.00 : 5a5fe0: 44 89 61 08 mov %r12d,0x8(%rcx) : : ereport(elevel, 0.00 : 5a5fe4: 8b 3d 86 24 5c 00 mov 0x5c2486(%rip),%edi # b68470 0.00 : 5a5fea: b9 40 87 88 00 mov $0x888740,%ecx 0.00 : 5a5fef: e8 cc 4a 1d 00 callq 77aac0 0.00 : 5a5ff4: 84 c0 test %al,%al 0.00 : 5a5ff6: 0f 85 0d 01 00 00 jne 5a6109 : old_rel_pages, new_rel_pages), : errdetail("%s.", : pg_rusage_show(&ru0)))); : old_rel_pages = new_rel_pages; : } while (new_rel_pages > vacrelstats->nonempty_pages && : vacrelstats->lock_waiter_detected); 0.00 : 5a5ffc: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a6003: 44 39 62 40 cmp %r12d,0x40(%rdx) 0.00 : 5a6007: 0f 83 93 f9 ff ff jae 5a59a0 0.00 : 5a600d: 80 7a 60 00 cmpb $0x0,0x60(%rdx) 0.00 : 5a6011: 0f 84 89 f9 ff ff je 5a59a0 0.00 : 5a6017: 45 89 e6 mov %r12d,%r14d 0.00 : 5a601a: e9 69 f8 ff ff jmpq 5a5888 : /* Initialize the starttime if we check for conflicting lock requests */ : INSTR_TIME_SET_CURRENT(starttime); : : /* Strange coding of loop control is needed because blkno is unsigned */ : blkno = vacrelstats->rel_pages; : while (blkno > vacrelstats->nonempty_pages) 0.00 : 5a601f: 41 89 c4 mov %eax,%r12d 0.00 : 5a6022: e9 70 ff ff ff jmpq 5a5f97 0.00 : 5a6027: 90 nop : /* : * Release any remaining pin on visibility map page. : */ : if (BufferIsValid(vmbuffer)) : { : ReleaseBuffer(vmbuffer); 0.00 : 5a6028: e8 33 ee 0c 00 callq 674e60 : vmbuffer = InvalidBuffer; 0.00 : 5a602d: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%rbp) 0.00 : 5a6034: e9 87 f5 ff ff jmpq 5a55c0 : * all-visible and find that the page isn't initialized, which : * will cause a PANIC. To prevent that, check whether the : * page has been previously WAL-logged, and if not, do that : * now. : */ : if (RelationNeedsWAL(onerel) && 0.00 : 5a6039: 41 8b 06 mov (%r14),%eax 0.00 : 5a603c: 41 8b 56 04 mov 0x4(%r14),%edx 0.00 : 5a6040: 48 c1 e0 20 shl $0x20,%rax 0.00 : 5a6044: 48 09 d0 or %rdx,%rax 0.00 : 5a6047: 0f 85 ca f8 ff ff jne 5a5917 : PageGetLSN(page) == InvalidXLogRecPtr) : log_newpage_buffer(buf, true); 0.00 : 5a604d: 8b bd e4 fc ff ff mov -0x31c(%rbp),%edi 0.00 : 5a6053: be 01 00 00 00 mov $0x1,%esi 0.00 : 5a6058: e8 23 fc f2 ff callq 4d5c80 0.00 : 5a605d: e9 b5 f8 ff ff jmpq 5a5917 : ereport(elevel, : (errmsg("\"%s\": removed %.0f row versions in %u pages", : RelationGetRelationName(onerel), : tups_vacuumed, vacuumed_pages))); : : ereport(elevel, 0.00 : 5a6062: 48 8d bd 30 fe ff ff lea -0x1d0(%rbp),%rdi 0.00 : 5a6069: e8 22 fa 1e 00 callq 795a90 0.00 : 5a606e: 8b b5 2c fd ff ff mov -0x2d4(%rbp),%esi 0.00 : 5a6074: f2 0f 10 8d 08 fd ff movsd -0x2f8(%rbp),%xmm1 0.00 : 5a607b: ff 0.00 : 5a607c: f2 0f 10 85 10 fd ff movsd -0x2f0(%rbp),%xmm0 0.00 : 5a6083: ff 0.00 : 5a6084: 48 89 c2 mov %rax,%rdx 0.00 : 5a6087: bf d0 83 88 00 mov $0x8883d0,%edi 0.00 : 5a608c: b8 02 00 00 00 mov $0x2,%eax 0.00 : 5a6091: e8 9a 64 1d 00 callq 77c530 0.00 : 5a6096: 48 8b 8d 60 fc ff ff mov -0x3a0(%rbp),%rcx 0.00 : 5a609d: 89 c3 mov %eax,%ebx 0.00 : 5a609f: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 5a60a6: f2 0f 10 8d 20 fd ff movsd -0x2e0(%rbp),%xmm1 0.00 : 5a60ad: ff 0.00 : 5a60ae: bf 48 84 88 00 mov $0x888448,%edi 0.00 : 5a60b3: f2 0f 10 85 18 fd ff movsd -0x2e8(%rbp),%xmm0 0.00 : 5a60ba: ff 0.00 : 5a60bb: 8b 50 0c mov 0xc(%rax),%edx 0.00 : 5a60be: 48 8b 71 30 mov 0x30(%rcx),%rsi 0.00 : 5a60c2: b8 02 00 00 00 mov $0x2,%eax 0.00 : 5a60c7: 8b 8d 3c fd ff ff mov -0x2c4(%rbp),%ecx 0.00 : 5a60cd: e8 ce 67 1d 00 callq 77c8a0 0.00 : 5a60d2: 89 de mov %ebx,%esi 0.00 : 5a60d4: 89 c7 mov %eax,%edi 0.00 : 5a60d6: 31 c0 xor %eax,%eax 0.00 : 5a60d8: e8 03 45 1d 00 callq 77a5e0 0.00 : 5a60dd: e9 42 f7 ff ff jmpq 5a5824 : LockRelationForExtension(onerel, ExclusiveLock); : UnlockRelationForExtension(onerel, ExclusiveLock); : LockBufferForCleanup(buf); : if (PageIsNew(page)) : { : ereport(WARNING, 0.00 : 5a60e2: 8b 95 38 fd ff ff mov -0x2c8(%rbp),%edx 0.00 : 5a60e8: 48 8b b5 30 fd ff ff mov -0x2d0(%rbp),%rsi 0.00 : 5a60ef: bf 20 82 88 00 mov $0x888220,%edi 0.00 : 5a60f4: 31 c0 xor %eax,%eax 0.00 : 5a60f6: e8 a5 67 1d 00 callq 77c8a0 0.00 : 5a60fb: 89 c7 mov %eax,%edi 0.00 : 5a60fd: 31 c0 xor %eax,%eax 0.00 : 5a60ff: e8 dc 44 1d 00 callq 77a5e0 0.00 : 5a6104: e9 1b fb ff ff jmpq 5a5c24 : * changed by the truncation. : */ : vacrelstats->pages_removed += old_rel_pages - new_rel_pages; : vacrelstats->rel_pages = new_rel_pages; : : ereport(elevel, 0.00 : 5a6109: 48 8b bd 58 fc ff ff mov -0x3a8(%rbp),%rdi 0.00 : 5a6110: e8 7b f9 1e 00 callq 795a90 0.00 : 5a6115: bf 87 b2 88 00 mov $0x88b287,%edi 0.00 : 5a611a: 48 89 c6 mov %rax,%rsi 0.00 : 5a611d: 31 c0 xor %eax,%eax 0.00 : 5a611f: e8 0c 64 1d 00 callq 77c530 0.00 : 5a6124: 89 c3 mov %eax,%ebx 0.00 : 5a6126: 48 8b 85 60 fc ff ff mov -0x3a0(%rbp),%rax 0.00 : 5a612d: 8b 95 6c fd ff ff mov -0x294(%rbp),%edx 0.00 : 5a6133: 44 89 e1 mov %r12d,%ecx 0.00 : 5a6136: bf 18 85 88 00 mov $0x888518,%edi 0.00 : 5a613b: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 5a613f: 31 c0 xor %eax,%eax 0.00 : 5a6141: e8 5a 67 1d 00 callq 77c8a0 0.00 : 5a6146: 89 de mov %ebx,%esi 0.00 : 5a6148: 89 c7 mov %eax,%edi 0.00 : 5a614a: 31 c0 xor %eax,%eax 0.00 : 5a614c: e8 8f 44 1d 00 callq 77a5e0 0.00 : 5a6151: e9 a6 fe ff ff jmpq 5a5ffc : { : /* : * Skip this for relations for which no WAL is to be written, or if we're : * not trying to support archive recovery. : */ : if (!RelationNeedsWAL(rel) || !XLogIsNeeded()) 0.00 : 5a6156: 44 8b 15 ff 2f 5d 00 mov 0x5d2fff(%rip),%r10d # b7915c 0.00 : 5a615d: 45 85 d2 test %r10d,%r10d 0.00 : 5a6160: 0f 8e 83 f4 ff ff jle 5a55e9 : return; : : /* : * No need to write the record at all unless it contains a valid value : */ : if (TransactionIdIsValid(vacrelstats->latestRemovedXid)) 0.00 : 5a6166: 8b 52 5c mov 0x5c(%rdx),%edx 0.00 : 5a6169: 85 d2 test %edx,%edx 0.00 : 5a616b: 0f 84 78 f4 ff ff je 5a55e9 : (void) log_heap_cleanup_info(rel->rd_node, vacrelstats->latestRemovedXid); 0.00 : 5a6171: 48 8b 39 mov (%rcx),%rdi 0.00 : 5a6174: 8b 71 08 mov 0x8(%rcx),%esi 0.00 : 5a6177: e8 84 fc ee ff callq 495e00 0.00 : 5a617c: e9 68 f4 ff ff jmpq 5a55e9 : /* Now WAL-log freezing if neccessary */ : if (RelationNeedsWAL(onerel)) : { : XLogRecPtr recptr; : : recptr = log_heap_freeze(onerel, buf, FreezeLimit, 0.00 : 5a6181: 8b 15 25 37 5d 00 mov 0x5d3725(%rip),%edx # b798ac 0.00 : 5a6187: 44 8b 85 c4 fc ff ff mov -0x33c(%rbp),%r8d 0.00 : 5a618e: 48 8b 8d e8 fc ff ff mov -0x318(%rbp),%rcx 0.00 : 5a6195: 8b b5 e4 fc ff ff mov -0x31c(%rbp),%esi 0.00 : 5a619b: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a61a2: e8 09 fa ee ff callq 495bb0 : frozen, nfrozen); : PageSetLSN(page, recptr); 0.00 : 5a61a7: 48 89 c2 mov %rax,%rdx 0.00 : 5a61aa: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 5a61ae: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 5a61b2: 41 89 16 mov %edx,(%r14) 0.00 : 5a61b5: e9 a8 f0 ff ff jmpq 5a5262 : read_rate = (double) BLCKSZ *VacuumPageMiss / (1024 * 1024) / : (secs + usecs / 1000000.0); : write_rate = (double) BLCKSZ *VacuumPageDirty / (1024 * 1024) / : (secs + usecs / 1000000.0); : } : ereport(LOG, 0.00 : 5a61ba: 48 8d bd d0 fe ff ff lea -0x130(%rbp),%rdi 0.00 : 5a61c1: e8 ca f8 1e 00 callq 795a90 0.00 : 5a61c6: 48 89 c3 mov %rax,%rbx 0.00 : 5a61c9: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 5a61d0: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 5a61d7: 48 8b 8d 60 fc ff ff mov -0x3a0(%rbp),%rcx 0.00 : 5a61de: 44 8b 25 f7 3e 61 00 mov 0x613ef7(%rip),%r12d # bba0dc 0.00 : 5a61e5: 44 8b 2d ec 3e 61 00 mov 0x613eec(%rip),%r13d # bba0d8 0.00 : 5a61ec: 44 8b 35 e1 3e 61 00 mov 0x613ee1(%rip),%r14d # bba0d4 0.00 : 5a61f3: f2 0f 10 40 28 movsd 0x28(%rax),%xmm0 0.00 : 5a61f8: f2 0f 11 85 78 fd ff movsd %xmm0,-0x288(%rbp) 0.00 : 5a61ff: ff 0.00 : 5a6200: f2 0f 10 48 20 movsd 0x20(%rax),%xmm1 0.00 : 5a6205: f2 0f 11 8d 78 fc ff movsd %xmm1,-0x388(%rbp) 0.00 : 5a620c: ff 0.00 : 5a620d: f2 0f 10 50 38 movsd 0x38(%rax),%xmm2 0.00 : 5a6212: f2 0f 11 95 80 fc ff movsd %xmm2,-0x380(%rbp) 0.00 : 5a6219: ff 0.00 : 5a621a: 44 8b 78 08 mov 0x8(%rax),%r15d 0.00 : 5a621e: 8b 40 30 mov 0x30(%rax),%eax 0.00 : 5a6221: 89 85 88 fc ff ff mov %eax,-0x378(%rbp) 0.00 : 5a6227: 8b 52 58 mov 0x58(%rdx),%edx 0.00 : 5a622a: 89 95 8c fc ff ff mov %edx,-0x374(%rbp) 0.00 : 5a6230: 48 8b 49 30 mov 0x30(%rcx),%rcx 0.00 : 5a6234: 48 89 8d 80 fd ff ff mov %rcx,-0x280(%rbp) 0.00 : 5a623b: 8b 79 40 mov 0x40(%rcx),%edi 0.00 : 5a623e: e8 ad c7 1c 00 callq 7729f0 0.00 : 5a6243: 8b 3d 5f 3e 61 00 mov 0x613e5f(%rip),%edi # bba0a8 0.00 : 5a6249: 48 89 85 90 fc ff ff mov %rax,-0x370(%rbp) 0.00 : 5a6250: e8 3b 4a fb ff callq 55ac90 0.00 : 5a6255: 44 8b 8d 88 fc ff ff mov -0x378(%rbp),%r9d 0.00 : 5a625c: 44 8b 85 8c fc ff ff mov -0x374(%rbp),%r8d 0.00 : 5a6263: 48 89 c6 mov %rax,%rsi 0.00 : 5a6266: 48 8b 8d 80 fd ff ff mov -0x280(%rbp),%rcx 0.00 : 5a626d: 48 8b 95 90 fc ff ff mov -0x370(%rbp),%rdx 0.00 : 5a6274: bf 38 85 88 00 mov $0x888538,%edi 0.00 : 5a6279: f2 0f 10 a5 b0 fc ff movsd -0x350(%rbp),%xmm4 0.00 : 5a6280: ff 0.00 : 5a6281: b8 05 00 00 00 mov $0x5,%eax 0.00 : 5a6286: f2 0f 10 9d a8 fc ff movsd -0x358(%rbp),%xmm3 0.00 : 5a628d: ff 0.00 : 5a628e: 48 89 5c 24 20 mov %rbx,0x20(%rsp) 0.00 : 5a6293: f2 0f 10 95 78 fd ff movsd -0x288(%rbp),%xmm2 0.00 : 5a629a: ff 0.00 : 5a629b: 44 89 64 24 18 mov %r12d,0x18(%rsp) 0.00 : 5a62a0: f2 0f 10 8d 78 fc ff movsd -0x388(%rbp),%xmm1 0.00 : 5a62a7: ff 0.00 : 5a62a8: 44 89 6c 24 10 mov %r13d,0x10(%rsp) 0.00 : 5a62ad: f2 0f 10 85 80 fc ff movsd -0x380(%rbp),%xmm0 0.00 : 5a62b4: ff 0.00 : 5a62b5: 44 89 74 24 08 mov %r14d,0x8(%rsp) 0.00 : 5a62ba: 44 89 3c 24 mov %r15d,(%rsp) 0.00 : 5a62be: e8 dd 65 1d 00 callq 77c8a0 0.00 : 5a62c3: 89 c7 mov %eax,%edi 0.00 : 5a62c5: 31 c0 xor %eax,%eax 0.00 : 5a62c7: e8 14 43 1d 00 callq 77a5e0 0.00 : 5a62cc: e9 97 f8 ff ff jmpq 5a5b68 : * that something bad has happened. : */ : else if (all_visible_according_to_vm && !PageIsAllVisible(page) : && visibilitymap_test(onerel, blkno, &vmbuffer)) : { : elog(WARNING, "page is not marked all-visible but visibility map bit is set in relation \"%s\" page %u", 0.00 : 5a62d1: ba b0 86 88 00 mov $0x8886b0,%edx 0.00 : 5a62d6: be ea 03 00 00 mov $0x3ea,%esi 0.00 : 5a62db: bf b0 81 88 00 mov $0x8881b0,%edi 0.00 : 5a62e0: e8 3b 51 1d 00 callq 77b420 0.00 : 5a62e5: 48 8b 95 30 fd ff ff mov -0x2d0(%rbp),%rdx 0.00 : 5a62ec: 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%ecx 0.00 : 5a62f2: be 58 82 88 00 mov $0x888258,%esi 0.00 : 5a62f7: bf 13 00 00 00 mov $0x13,%edi 0.00 : 5a62fc: 31 c0 xor %eax,%eax 0.00 : 5a62fe: e8 2d 4f 1d 00 callq 77b230 : relname, blkno); : visibilitymap_clear(onerel, blkno, vmbuffer); 0.00 : 5a6303: 8b 55 bc mov -0x44(%rbp),%edx 0.00 : 5a6306: 8b b5 38 fd ff ff mov -0x2c8(%rbp),%esi 0.00 : 5a630c: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a6313: e8 18 e2 ef ff callq 4a4530 0.00 : 5a6318: e9 33 ec ff ff jmpq 5a4f50 : all_visible = false; : break; : } : : /* Track newest xmin on page. */ : if (TransactionIdFollows(xmin, visibility_cutoff_xid)) /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuumlazy.c:862 2.36 : 5a631d: 44 89 e6 mov %r12d,%esi 0.00 : 5a6320: 44 89 ef mov %r13d,%edi 0.00 : 5a6323: e8 18 9d f1 ff callq 4c0040 0.79 : 5a6328: 84 c0 test %al,%al 0.00 : 5a632a: 75 43 jne 5a636f 0.00 : 5a632c: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.79 : 5a6330: 45 89 e5 mov %r12d,%r13d 1.57 : 5a6333: c6 85 c2 fc ff ff 01 movb $0x1,-0x33e(%rbp) 1.57 : 5a633a: f2 0f 10 05 16 8e 20 movsd 0x208e16(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5a6341: 00 0.00 : 5a6342: e9 ef ef ff ff jmpq 5a5336 : { : TimestampDifference(starttime, endtime, &secs, &usecs); : : read_rate = 0; : write_rate = 0; : if ((secs > 0) || (usecs > 0)) 0.00 : 5a6347: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 5a634a: f2 0f 10 85 50 fc ff movsd -0x3b0(%rbp),%xmm0 0.00 : 5a6351: ff 0.00 : 5a6352: f2 0f 11 85 a8 fc ff movsd %xmm0,-0x358(%rbp) 0.00 : 5a6359: ff 0.00 : 5a635a: 85 d2 test %edx,%edx 0.00 : 5a635c: f2 0f 11 85 b0 fc ff movsd %xmm0,-0x350(%rbp) 0.00 : 5a6363: ff 0.00 : 5a6364: 0f 8f 69 f7 ff ff jg 5a5ad3 0.00 : 5a636a: e9 d2 f7 ff ff jmpq 5a5b41 : all_visible = false; : break; : } : : /* Track newest xmin on page. */ : if (TransactionIdFollows(xmin, visibility_cutoff_xid)) 0.79 : 5a636f: 4c 8b 45 a0 mov -0x60(%rbp),%r8 0.79 : 5a6373: c6 85 c2 fc ff ff 01 movb $0x1,-0x33e(%rbp) 0.00 : 5a637a: f2 0f 10 05 d6 8d 20 movsd 0x208dd6(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5a6381: 00 1.57 : 5a6382: e9 af ef ff ff jmpq 5a5336 : if ((INSTR_TIME_GET_MICROSEC(elapsed) / 1000) : >= VACUUM_TRUNCATE_LOCK_CHECK_INTERVAL) : { : if (LockHasWaitersRelation(onerel, AccessExclusiveLock)) : { : ereport(elevel, 0.00 : 5a6387: 8b 3d e3 20 5c 00 mov 0x5c20e3(%rip),%edi # b68470 0.00 : 5a638d: 45 31 c0 xor %r8d,%r8d 0.00 : 5a6390: b9 60 87 88 00 mov $0x888760,%ecx 0.00 : 5a6395: ba 1e 06 00 00 mov $0x61e,%edx 0.00 : 5a639a: be b0 81 88 00 mov $0x8881b0,%esi 0.00 : 5a639f: e8 1c 47 1d 00 callq 77aac0 0.00 : 5a63a4: 84 c0 test %al,%al 0.00 : 5a63a6: 74 20 je 5a63c8 0.00 : 5a63a8: 48 8b 8d 60 fc ff ff mov -0x3a0(%rbp),%rcx 0.00 : 5a63af: bf d8 84 88 00 mov $0x8884d8,%edi 0.00 : 5a63b4: 31 c0 xor %eax,%eax 0.00 : 5a63b6: 48 8b 71 30 mov 0x30(%rcx),%rsi 0.00 : 5a63ba: e8 e1 64 1d 00 callq 77c8a0 0.00 : 5a63bf: 89 c7 mov %eax,%edi 0.00 : 5a63c1: 31 c0 xor %eax,%eax 0.00 : 5a63c3: e8 18 42 1d 00 callq 77a5e0 : (errmsg("\"%s\": suspending truncate due to conflicting lock request", : RelationGetRelationName(onerel)))); : : vacrelstats->lock_waiter_detected = true; 0.00 : 5a63c8: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx 0.00 : 5a63cf: c6 43 60 01 movb $0x1,0x60(%rbx) 0.00 : 5a63d3: e9 bf fb ff ff jmpq 5a5f97 : new_rel_pages = count_nondeletable_pages(onerel, vacrelstats); : : if (new_rel_pages >= old_rel_pages) : { : /* can't do anything after all */ : UnlockRelation(onerel, AccessExclusiveLock); 0.00 : 5a63d8: 48 8b bd 60 fc ff ff mov -0x3a0(%rbp),%rdi 0.00 : 5a63df: be 08 00 00 00 mov $0x8,%esi 0.00 : 5a63e4: e8 27 18 0e 00 callq 687c10 0.00 : 5a63e9: e9 b2 f5 ff ff jmpq 5a59a0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:855 13.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 7.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:859 5.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 5.51 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:856 4.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:850 4.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:856 4.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:859 3.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 3.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 3.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 3.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:844 3.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:844 3.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 3.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 2.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 2.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:850 2.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 1.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 1.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:844 1.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:849 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007584b0 : : PG_RETURN_BOOL(cmp >= 0); : } : : Datum : bpcharcmp(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 5.51 : 7584b0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:842 2.36 : 7584b1: 48 89 e5 mov %rsp,%rbp 0.79 : 7584b4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 3.15 : 7584b8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 3.94 : 7584bc: 4c 89 6d f0 mov %r13,-0x10(%rbp) 1.57 : 7584c0: 4c 89 75 f8 mov %r14,-0x8(%rbp) 3.94 : 7584c4: 48 83 ec 20 sub $0x20,%rsp 0.00 : 7584c8: 49 89 fe mov %rdi,%r14 : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); 0.00 : 7584cb: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 7584cf: e8 0c 68 02 00 callq 77ece0 : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:844 1.57 : 7584d4: 49 8b 7e 28 mov 0x28(%r14),%rdi : } : : Datum : bpcharcmp(PG_FUNCTION_ARGS) : { : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); 0.00 : 7584d8: 49 89 c5 mov %rax,%r13 : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); 3.15 : 7584db: e8 00 68 02 00 callq 77ece0 : int len1, : len2; : int cmp; : : len1 = bcTruelen(arg1); 0.00 : 7584e0: 4c 89 ef mov %r13,%rdi : : Datum : bpcharcmp(PG_FUNCTION_ARGS) : { : BpChar *arg1 = PG_GETARG_BPCHAR_PP(0); : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); 3.15 : 7584e3: 49 89 c4 mov %rax,%r12 : int len1, : len2; : int cmp; : : len1 = bcTruelen(arg1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:849 0.79 : 7584e6: e8 a5 f8 ff ff callq 757d90 : len2 = bcTruelen(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:850 4.72 : 7584eb: 4c 89 e7 mov %r12,%rdi : BpChar *arg2 = PG_GETARG_BPCHAR_PP(1); : int len1, : len2; : int cmp; : : len1 = bcTruelen(arg1); 0.00 : 7584ee: 89 c3 mov %eax,%ebx : len2 = bcTruelen(arg2); 0.00 : 7584f0: e8 9b f8 ff ff callq 757d90 : : cmp = varstr_cmp(VARDATA_ANY(arg1), len1, VARDATA_ANY(arg2), len2, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 3.15 : 7584f5: 41 f6 04 24 01 testb $0x1,(%r12) : int len1, : len2; : int cmp; : : len1 = bcTruelen(arg1); : len2 = bcTruelen(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:850 2.36 : 7584fa: 89 c1 mov %eax,%ecx : : cmp = varstr_cmp(VARDATA_ANY(arg1), len1, VARDATA_ANY(arg2), len2, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 0.79 : 7584fc: 49 8d 54 24 01 lea 0x1(%r12),%rdx 0.79 : 758501: 49 8d 44 24 04 lea 0x4(%r12),%rax 0.79 : 758506: 49 8d 7d 01 lea 0x1(%r13),%rdi 0.00 : 75850a: 45 8b 46 18 mov 0x18(%r14),%r8d 3.15 : 75850e: 89 de mov %ebx,%esi 0.00 : 758510: 48 0f 44 d0 cmove %rax,%rdx 2.36 : 758514: 41 f6 45 00 01 testb $0x1,0x0(%r13) 0.00 : 758519: 49 8d 45 04 lea 0x4(%r13),%rax 0.79 : 75851d: 48 0f 44 f8 cmove %rax,%rdi 1.57 : 758521: e8 8a 71 00 00 callq 75f6b0 : PG_GET_COLLATION()); : : PG_FREE_IF_COPY(arg1, 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:855 14.17 : 758526: 4d 3b 6e 20 cmp 0x20(%r14),%r13 : int cmp; : : len1 = bcTruelen(arg1); : len2 = bcTruelen(arg2); : : cmp = varstr_cmp(VARDATA_ANY(arg1), len1, VARDATA_ANY(arg2), len2, /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:852 13.39 : 75852a: 89 c3 mov %eax,%ebx : PG_GET_COLLATION()); : : PG_FREE_IF_COPY(arg1, 0); 0.00 : 75852c: 74 08 je 758536 0.00 : 75852e: 4c 89 ef mov %r13,%rdi 0.00 : 758531: e8 4a 06 04 00 callq 798b80 : PG_FREE_IF_COPY(arg2, 1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:856 5.51 : 758536: 4d 3b 66 28 cmp 0x28(%r14),%r12 0.00 : 75853a: 74 08 je 758544 0.00 : 75853c: 4c 89 e7 mov %r12,%rdi 0.00 : 75853f: e8 3c 06 04 00 callq 798b80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:856 4.72 : 758544: 89 d8 mov %ebx,%eax : : PG_RETURN_INT32(cmp); : } 0.00 : 758546: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 75854b: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:859 7.09 : 75854f: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 758554: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:859 4.72 : 758559: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.66 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:163 6.30 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:186 5.51 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:176 4.72 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:176 4.72 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:158 3.94 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:191 3.94 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:156 3.94 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:156 3.94 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:156 3.94 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:163 3.15 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:156 3.15 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:172 3.15 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:165 2.36 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:156 2.36 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:181 2.36 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:165 2.36 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:176 1.57 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:156 1.57 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:172 1.57 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:165 1.57 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:165 1.57 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:167 1.57 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:177 1.57 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:120 1.57 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:121 1.57 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:123 1.57 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:121 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:117 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:129 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:137 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:182 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:183 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:183 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:184 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:187 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:156 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:165 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:149 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:149 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:145 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:121 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:123 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:123 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:123 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:121 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:120 0.79 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:195 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007ad230 : : : (cmp(b, c, arg) > 0 ? b : (cmp(a, c, arg) < 0 ? a : c)); : } : : void : qsort_arg(void *a, size_t n, size_t es, qsort_arg_comparator cmp, void *arg) : { 0.00 : 7ad230: 55 push %rbp 0.00 : 7ad231: 48 89 e5 mov %rsp,%rbp 0.00 : 7ad234: 41 57 push %r15 0.00 : 7ad236: 41 56 push %r14 0.00 : 7ad238: 49 89 f6 mov %rsi,%r14 0.00 : 7ad23b: 41 55 push %r13 0.00 : 7ad23d: 41 54 push %r12 0.00 : 7ad23f: 53 push %rbx 0.00 : 7ad240: 48 83 ec 68 sub $0x68,%rsp 0.00 : 7ad244: 48 89 55 a0 mov %rdx,-0x60(%rbp) : pl -= es) : swap(pl, pl - es); : return; : } : presorted = 1; : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7ad248: 48 f7 da neg %rdx 0.00 : 7ad24b: 48 89 55 88 mov %rdx,-0x78(%rbp) : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7ad24f: 48 8b 55 a0 mov -0x60(%rbp),%rdx : : (cmp(b, c, arg) > 0 ? b : (cmp(a, c, arg) < 0 ? a : c)); : } : : void : qsort_arg(void *a, size_t n, size_t es, qsort_arg_comparator cmp, void *arg) : { 0.00 : 7ad253: 48 89 7d a8 mov %rdi,-0x58(%rbp) 0.00 : 7ad257: 48 89 4d 98 mov %rcx,-0x68(%rbp) 0.00 : 7ad25b: 4c 89 45 90 mov %r8,-0x70(%rbp) : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7ad25f: 48 8d 04 52 lea (%rdx,%rdx,2),%rax 0.00 : 7ad263: 48 01 c0 add %rax,%rax 0.00 : 7ad266: 48 89 45 80 mov %rax,-0x80(%rbp) : int d, : r, : swaptype, : presorted; : : loop:SWAPINIT(a, es); 0.00 : 7ad26a: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 7ad26e: 48 0b 45 a0 or -0x60(%rbp),%rax 0.00 : 7ad272: c7 45 c4 02 00 00 00 movl $0x2,-0x3c(%rbp) 0.00 : 7ad279: a8 07 test $0x7,%al 0.00 : 7ad27b: 75 0d jne 7ad28a 0.00 : 7ad27d: 31 c0 xor %eax,%eax 0.00 : 7ad27f: 48 83 7d a0 08 cmpq $0x8,-0x60(%rbp) 0.00 : 7ad284: 0f 95 c0 setne %al /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:117 0.79 : 7ad287: 89 45 c4 mov %eax,-0x3c(%rbp) : if (n < 7) 0.00 : 7ad28a: 49 83 fe 06 cmp $0x6,%r14 0.00 : 7ad28e: 0f 86 a7 03 00 00 jbe 7ad63b : pl -= es) : swap(pl, pl - es); : return; : } : presorted = 1; : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7ad294: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7ad298: 4c 8b 7d a8 mov -0x58(%rbp),%r15 0.00 : 7ad29c: 4c 03 7d a0 add -0x60(%rbp),%r15 0.00 : 7ad2a0: 49 0f af c6 imul %r14,%rax 0.00 : 7ad2a4: 48 03 45 a8 add -0x58(%rbp),%rax 0.00 : 7ad2a8: 49 39 c7 cmp %rax,%r15 0.00 : 7ad2ab: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 7ad2af: 0f 83 d9 02 00 00 jae 7ad58e 0.00 : 7ad2b5: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7ad2b9: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 7ad2bd: 4c 89 fb mov %r15,%rbx 0.00 : 7ad2c0: 4d 8d 2c 07 lea (%r15,%rax,1),%r13 0.00 : 7ad2c4: 4d 8d 24 17 lea (%r15,%rdx,1),%r12 0.00 : 7ad2c8: eb 23 jmp 7ad2ed 0.00 : 7ad2ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7ad2d0: 4c 03 6d a0 add -0x60(%rbp),%r13 0.00 : 7ad2d4: 48 03 5d a0 add -0x60(%rbp),%rbx 0.00 : 7ad2d8: 4c 03 65 a0 add -0x60(%rbp),%r12 0.00 : 7ad2dc: 4c 89 e8 mov %r13,%rax 0.00 : 7ad2df: 48 2b 45 a0 sub -0x60(%rbp),%rax 0.00 : 7ad2e3: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 7ad2e7: 0f 86 a1 02 00 00 jbe 7ad58e : { : if (cmp(pm - es, pm, arg) > 0) 0.00 : 7ad2ed: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 7ad2f1: 48 89 de mov %rbx,%rsi 0.00 : 7ad2f4: 4c 89 e7 mov %r12,%rdi 0.00 : 7ad2f7: ff 55 98 callq *-0x68(%rbp) /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:129 0.79 : 7ad2fa: 85 c0 test %eax,%eax 0.00 : 7ad2fc: 7e d2 jle 7ad2d0 : break; : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; 0.00 : 7ad2fe: 4c 89 f0 mov %r14,%rax 0.00 : 7ad301: 4c 8b 65 a8 mov -0x58(%rbp),%r12 0.00 : 7ad305: 48 d1 e8 shr %rax 0.00 : 7ad308: 48 0f af 45 a0 imul -0x60(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:137 0.79 : 7ad30d: 49 01 c4 add %rax,%r12 : if (n > 7) 0.00 : 7ad310: 49 83 fe 07 cmp $0x7,%r14 0.00 : 7ad314: 0f 85 e9 01 00 00 jne 7ad503 0.00 : 7ad31a: 48 8b 4d a8 mov -0x58(%rbp),%rcx : pm = med3(pm - d, pm, pm + d, cmp, arg); : pn = med3(pn - 2 * d, pn - d, pn, cmp, arg); : } : pm = med3(pl, pm, pn, cmp, arg); : } : swap(a, pm); 0.00 : 7ad31e: 8b 75 c4 mov -0x3c(%rbp),%esi : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7ad321: 48 03 4d 80 add -0x80(%rbp),%rcx : pm = med3(pm - d, pm, pm + d, cmp, arg); : pn = med3(pn - 2 * d, pn - d, pn, cmp, arg); : } : pm = med3(pl, pm, pn, cmp, arg); : } : swap(a, pm); 0.00 : 7ad325: 85 f6 test %esi,%esi : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7ad327: 48 89 4d d0 mov %rcx,-0x30(%rbp) : pm = med3(pm - d, pm, pm + d, cmp, arg); : pn = med3(pn - 2 * d, pn - d, pn, cmp, arg); : } : pm = med3(pl, pm, pn, cmp, arg); : } : swap(a, pm); 0.00 : 7ad32b: 0f 85 15 02 00 00 jne 7ad546 0.00 : 7ad331: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 7ad335: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 7ad339: 48 8b 10 mov (%rax),%rdx 0.00 : 7ad33c: 49 8b 04 24 mov (%r12),%rax 0.00 : 7ad340: 48 89 01 mov %rax,(%rcx) 0.00 : 7ad343: 49 89 14 24 mov %rdx,(%r12) 0.00 : 7ad347: 4c 8b 6d d0 mov -0x30(%rbp),%r13 0.00 : 7ad34b: 4c 89 7d b8 mov %r15,-0x48(%rbp) 0.00 : 7ad34f: 4d 89 fe mov %r15,%r14 0.00 : 7ad352: 4d 89 ef mov %r13,%r15 0.00 : 7ad355: 0f 1f 00 nopl (%rax) : pa = pb = (char *) a + es; : pc = pd = (char *) a + (n - 1) * es; : for (;;) : { : while (pb <= pc && (r = cmp(pb, a, arg)) <= 0) /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:156 2.36 : 7ad358: 4d 39 ee cmp %r13,%r14 0.00 : 7ad35b: 0f 86 9f 00 00 00 jbe 7ad400 : swap(pb, pc); : pb += es; : pc -= es; : } : pn = (char *) a + n * es; : r = Min(pa - (char *) a, pb - pa); 0.00 : 7ad361: 48 8b 55 b8 mov -0x48(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:181 2.36 : 7ad365: 4c 89 f0 mov %r14,%rax 0.00 : 7ad368: 48 2b 55 a8 sub -0x58(%rbp),%rdx 0.00 : 7ad36c: 48 2b 45 b8 sub -0x48(%rbp),%rax 0.00 : 7ad370: 48 39 c2 cmp %rax,%rdx 0.00 : 7ad373: 48 0f 4e c2 cmovle %rdx,%rax : vecswap(a, pb - r, r); 0.00 : 7ad377: 85 c0 test %eax,%eax 0.00 : 7ad379: 7e 15 jle 7ad390 0.00 : 7ad37b: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7ad37e: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7ad382: 48 63 d0 movslq %eax,%rdx 0.00 : 7ad385: 4c 89 f6 mov %r14,%rsi /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:182 0.79 : 7ad388: 48 29 d6 sub %rdx,%rsi 0.00 : 7ad38b: e8 a0 fd ff ff callq 7ad130 : r = Min(pd - pc, pn - pd - es); 0.00 : 7ad390: 48 8b 45 c8 mov -0x38(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:183 0.79 : 7ad394: 4c 89 fa mov %r15,%rdx 0.00 : 7ad397: 4c 29 ea sub %r13,%rdx 0.00 : 7ad39a: 4c 29 f8 sub %r15,%rax 0.00 : 7ad39d: 48 2b 45 a0 sub -0x60(%rbp),%rax 0.00 : 7ad3a1: 48 39 d0 cmp %rdx,%rax 0.79 : 7ad3a4: 48 0f 47 c2 cmova %rdx,%rax : vecswap(pb, pn - r, r); /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:184 0.79 : 7ad3a8: 85 c0 test %eax,%eax 0.00 : 7ad3aa: 7e 15 jle 7ad3c1 0.00 : 7ad3ac: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 7ad3b0: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7ad3b3: 48 63 d0 movslq %eax,%rdx 0.00 : 7ad3b6: 4c 89 f7 mov %r14,%rdi 0.00 : 7ad3b9: 48 29 d6 sub %rdx,%rsi 0.00 : 7ad3bc: e8 6f fd ff ff callq 7ad130 : if ((r = pb - pa) > es) 0.00 : 7ad3c1: 44 89 f0 mov %r14d,%eax 0.00 : 7ad3c4: 2b 45 b8 sub -0x48(%rbp),%eax 0.00 : 7ad3c7: 48 98 cltq 0.00 : 7ad3c9: 48 39 45 a0 cmp %rax,-0x60(%rbp) 0.00 : 7ad3cd: 0f 82 8b 01 00 00 jb 7ad55e : qsort_arg(a, r / es, es, cmp, arg); : if ((r = pd - pc) > es) 0.00 : 7ad3d3: 44 89 f8 mov %r15d,%eax /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:187 0.79 : 7ad3d6: 44 29 e8 sub %r13d,%eax 0.00 : 7ad3d9: 48 98 cltq 0.00 : 7ad3db: 48 39 45 a0 cmp %rax,-0x60(%rbp) 0.00 : 7ad3df: 0f 83 a9 01 00 00 jae 7ad58e : { : /* Iterate rather than recurse to save stack space */ : a = pn - r; 0.00 : 7ad3e5: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 7ad3e9: 48 29 c2 sub %rax,%rdx 0.00 : 7ad3ec: 48 89 55 a8 mov %rdx,-0x58(%rbp) : n = r / es; 0.00 : 7ad3f0: 31 d2 xor %edx,%edx 0.00 : 7ad3f2: 48 f7 75 a0 divq -0x60(%rbp) /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:191 3.94 : 7ad3f6: 49 89 c6 mov %rax,%r14 : goto loop; 0.00 : 7ad3f9: e9 6c fe ff ff jmpq 7ad26a 0.00 : 7ad3fe: 66 90 xchg %ax,%ax : swap(a, pm); : pa = pb = (char *) a + es; : pc = pd = (char *) a + (n - 1) * es; : for (;;) : { : while (pb <= pc && (r = cmp(pb, a, arg)) <= 0) /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:156 3.94 : 7ad400: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 7ad404: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 7ad408: 4c 89 f7 mov %r14,%rdi 0.00 : 7ad40b: ff 55 98 callq *-0x68(%rbp) 3.15 : 7ad40e: 83 f8 00 cmp $0x0,%eax 0.00 : 7ad411: 0f 8e b5 00 00 00 jle 7ad4cc 1.57 : 7ad417: 48 8b 55 88 mov -0x78(%rbp),%rdx 3.94 : 7ad41b: 4d 8d 64 15 00 lea 0x0(%r13,%rdx,1),%r12 3.94 : 7ad420: 4c 89 e3 mov %r12,%rbx 0.79 : 7ad423: eb 33 jmp 7ad458 0.00 : 7ad425: 0f 1f 00 nopl (%rax) : } : while (pb <= pc && (r = cmp(pc, a, arg)) >= 0) : { : if (r == 0) : { : swap(pc, pd); 0.00 : 7ad428: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 7ad42c: 49 8b 07 mov (%r15),%rax 0.00 : 7ad42f: 49 89 45 00 mov %rax,0x0(%r13) 0.00 : 7ad433: 49 89 17 mov %rdx,(%r15) : pd -= es; 0.00 : 7ad436: 4c 03 7d 88 add -0x78(%rbp),%r15 : } : pc -= es; /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:172 1.57 : 7ad43a: 48 03 5d 88 add -0x78(%rbp),%rbx 3.15 : 7ad43e: 4d 89 e5 mov %r12,%r13 : swap(pa, pb); : pa += es; : } : pb += es; : } : while (pb <= pc && (r = cmp(pc, a, arg)) >= 0) 0.00 : 7ad441: 48 89 d8 mov %rbx,%rax /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:165 0.79 : 7ad444: 48 2b 45 88 sub -0x78(%rbp),%rax 2.36 : 7ad448: 49 39 c6 cmp %rax,%r14 0.00 : 7ad44b: 0f 87 10 ff ff ff ja 7ad361 3.15 : 7ad451: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.00 : 7ad455: 49 01 cc add %rcx,%r12 0.00 : 7ad458: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 7ad45c: 48 8b 75 a8 mov -0x58(%rbp),%rsi 1.57 : 7ad460: 4c 89 ef mov %r13,%rdi 1.57 : 7ad463: ff 55 98 callq *-0x68(%rbp) 0.00 : 7ad466: 83 f8 00 cmp $0x0,%eax 0.00 : 7ad469: 7c 25 jl 7ad490 : { : if (r == 0) /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:167 1.57 : 7ad46b: 75 cd jne 7ad43a : { : swap(pc, pd); 0.00 : 7ad46d: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 7ad470: 85 d2 test %edx,%edx 0.00 : 7ad472: 74 b4 je 7ad428 0.00 : 7ad474: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7ad477: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7ad47b: 4c 89 fe mov %r15,%rsi 0.00 : 7ad47e: 4c 89 ef mov %r13,%rdi 0.00 : 7ad481: e8 aa fc ff ff callq 7ad130 0.00 : 7ad486: eb ae jmp 7ad436 0.00 : 7ad488: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7ad48f: 00 : } : pc -= es; : } : if (pb > pc) : break; : swap(pb, pc); /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:176 5.51 : 7ad490: 8b 45 c4 mov -0x3c(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:176 4.72 : 7ad493: 85 c0 test %eax,%eax 0.00 : 7ad495: 75 21 jne 7ad4b8 0.00 : 7ad497: 49 8b 16 mov (%r14),%rdx 0.00 : 7ad49a: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 7ad49e: 49 89 06 mov %rax,(%r14) 0.00 : 7ad4a1: 49 89 55 00 mov %rdx,0x0(%r13) : pb += es; /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:177 1.57 : 7ad4a5: 4c 03 75 a0 add -0x60(%rbp),%r14 : pc -= es; 0.00 : 7ad4a9: 4d 89 e5 mov %r12,%r13 0.00 : 7ad4ac: e9 a7 fe ff ff jmpq 7ad358 0.00 : 7ad4b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : pc -= es; : } : if (pb > pc) : break; : swap(pb, pc); /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:176 2.36 : 7ad4b8: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7ad4bb: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7ad4bf: 4c 89 ee mov %r13,%rsi 0.00 : 7ad4c2: 4c 89 f7 mov %r14,%rdi 0.00 : 7ad4c5: e8 66 fc ff ff callq 7ad130 0.00 : 7ad4ca: eb d9 jmp 7ad4a5 : pc = pd = (char *) a + (n - 1) * es; : for (;;) : { : while (pb <= pc && (r = cmp(pb, a, arg)) <= 0) : { : if (r == 0) /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:158 4.72 : 7ad4cc: 75 2c jne 7ad4fa : { : swap(pa, pb); 0.00 : 7ad4ce: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7ad4d1: 85 c9 test %ecx,%ecx 0.00 : 7ad4d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7ad4d8: 0f 85 bf 00 00 00 jne 7ad59d 0.00 : 7ad4de: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 7ad4e2: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 7ad4e6: 48 8b 10 mov (%rax),%rdx 0.00 : 7ad4e9: 49 8b 06 mov (%r14),%rax 0.00 : 7ad4ec: 48 89 01 mov %rax,(%rcx) 0.00 : 7ad4ef: 49 89 16 mov %rdx,(%r14) : pa += es; 0.00 : 7ad4f2: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7ad4f6: 48 01 45 b8 add %rax,-0x48(%rbp) : } : pb += es; /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:163 3.94 : 7ad4fa: 4c 03 75 a0 add -0x60(%rbp),%r14 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:163 8.66 : 7ad4fe: e9 55 fe ff ff jmpq 7ad358 : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; 0.00 : 7ad503: 49 8d 46 ff lea -0x1(%r14),%rax : if (n > 40) 0.00 : 7ad507: 4c 8b 4d a8 mov -0x58(%rbp),%r9 : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; 0.00 : 7ad50b: 48 0f af 45 a0 imul -0x60(%rbp),%rax 0.00 : 7ad510: 48 03 45 a8 add -0x58(%rbp),%rax : if (n > 40) 0.00 : 7ad514: 49 83 fe 28 cmp $0x28,%r14 : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; 0.00 : 7ad518: 48 89 45 d0 mov %rax,-0x30(%rbp) : if (n > 40) 0.00 : 7ad51c: 48 89 c2 mov %rax,%rdx 0.00 : 7ad51f: 0f 87 90 00 00 00 ja 7ad5b5 : d = (n / 8) * es; : pl = med3(pl, pl + d, pl + 2 * d, cmp, arg); : pm = med3(pm - d, pm, pm + d, cmp, arg); : pn = med3(pn - 2 * d, pn - d, pn, cmp, arg); : } : pm = med3(pl, pm, pn, cmp, arg); 0.00 : 7ad525: 4c 8b 45 90 mov -0x70(%rbp),%r8 0.00 : 7ad529: 48 8b 4d 98 mov -0x68(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:149 0.79 : 7ad52d: 4c 89 e6 mov %r12,%rsi 0.00 : 7ad530: 4c 89 cf mov %r9,%rdi 0.00 : 7ad533: e8 58 fc ff ff callq 7ad190 : } : swap(a, pm); 0.00 : 7ad538: 8b 75 c4 mov -0x3c(%rbp),%esi : d = (n / 8) * es; : pl = med3(pl, pl + d, pl + 2 * d, cmp, arg); : pm = med3(pm - d, pm, pm + d, cmp, arg); : pn = med3(pn - 2 * d, pn - d, pn, cmp, arg); : } : pm = med3(pl, pm, pn, cmp, arg); 0.79 : 7ad53b: 49 89 c4 mov %rax,%r12 : } : swap(a, pm); 0.00 : 7ad53e: 85 f6 test %esi,%esi 0.00 : 7ad540: 0f 84 eb fd ff ff je 7ad331 0.00 : 7ad546: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7ad549: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7ad54d: 4c 89 e6 mov %r12,%rsi 0.00 : 7ad550: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7ad554: e8 d7 fb ff ff callq 7ad130 0.00 : 7ad559: e9 e9 fd ff ff jmpq 7ad347 : r = Min(pa - (char *) a, pb - pa); : vecswap(a, pb - r, r); : r = Min(pd - pc, pn - pd - es); : vecswap(pb, pn - r, r); : if ((r = pb - pa) > es) : qsort_arg(a, r / es, es, cmp, arg); 0.00 : 7ad55e: 31 d2 xor %edx,%edx 0.00 : 7ad560: 4c 8b 45 90 mov -0x70(%rbp),%r8 0.00 : 7ad564: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7ad568: 48 f7 75 a0 divq -0x60(%rbp) /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:186 6.30 : 7ad56c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7ad570: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7ad574: 48 89 c6 mov %rax,%rsi 0.00 : 7ad577: e8 b4 fc ff ff callq 7ad230 : if ((r = pd - pc) > es) 0.00 : 7ad57c: 44 89 f8 mov %r15d,%eax 0.00 : 7ad57f: 44 29 e8 sub %r13d,%eax 0.00 : 7ad582: 48 98 cltq 0.00 : 7ad584: 48 39 45 a0 cmp %rax,-0x60(%rbp) 0.00 : 7ad588: 0f 82 57 fe ff ff jb 7ad3e5 : a = pn - r; : n = r / es; : goto loop; : } : /* qsort_arg(pn - r, r / es, es, cmp, arg);*/ : } 0.00 : 7ad58e: 48 83 c4 68 add $0x68,%rsp 0.00 : 7ad592: 5b pop %rbx 0.00 : 7ad593: 41 5c pop %r12 0.00 : 7ad595: 41 5d pop %r13 0.00 : 7ad597: 41 5e pop %r14 0.00 : 7ad599: 41 5f pop %r15 0.00 : 7ad59b: c9 leaveq 0.00 : 7ad59c: c3 retq : { : while (pb <= pc && (r = cmp(pb, a, arg)) <= 0) : { : if (r == 0) : { : swap(pa, pb); 0.00 : 7ad59d: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7ad5a0: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7ad5a4: 4c 89 f6 mov %r14,%rsi 0.00 : 7ad5a7: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 7ad5ab: e8 80 fb ff ff callq 7ad130 0.00 : 7ad5b0: e9 3d ff ff ff jmpq 7ad4f2 : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; : if (n > 40) : { : d = (n / 8) * es; 0.00 : 7ad5b5: 8b 45 a0 mov -0x60(%rbp),%eax 0.00 : 7ad5b8: 49 c1 ee 03 shr $0x3,%r14 : pl = med3(pl, pl + d, pl + 2 * d, cmp, arg); 0.00 : 7ad5bc: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 7ad5c0: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 7ad5c4: 4c 8b 45 90 mov -0x70(%rbp),%r8 0.00 : 7ad5c8: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7ad5cc: 48 8b 7d a8 mov -0x58(%rbp),%rdi : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; : if (n > 40) : { : d = (n / 8) * es; 0.00 : 7ad5d0: 41 0f af c6 imul %r14d,%eax : pl = med3(pl, pl + d, pl + 2 * d, cmp, arg); 0.00 : 7ad5d4: 8d 1c 00 lea (%rax,%rax,1),%ebx 0.00 : 7ad5d7: 4c 63 e8 movslq %eax,%r13 0.00 : 7ad5da: 4c 01 ee add %r13,%rsi /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:145 0.79 : 7ad5dd: 48 63 db movslq %ebx,%rbx 0.00 : 7ad5e0: 48 01 da add %rbx,%rdx 0.00 : 7ad5e3: e8 a8 fb ff ff callq 7ad190 : pm = med3(pm - d, pm, pm + d, cmp, arg); 0.00 : 7ad5e8: 4b 8d 14 2c lea (%r12,%r13,1),%rdx 0.00 : 7ad5ec: 4c 8b 45 90 mov -0x70(%rbp),%r8 0.00 : 7ad5f0: 49 f7 dd neg %r13 0.00 : 7ad5f3: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7ad5f7: 4b 8d 3c 2c lea (%r12,%r13,1),%rdi 0.00 : 7ad5fb: 4c 89 e6 mov %r12,%rsi 0.00 : 7ad5fe: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 7ad605: e8 86 fb ff ff callq 7ad190 : pn = med3(pn - 2 * d, pn - d, pn, cmp, arg); 0.00 : 7ad60a: 48 8b 75 d0 mov -0x30(%rbp),%rsi 0.00 : 7ad60e: 48 8b 7d d0 mov -0x30(%rbp),%rdi : pn = (char *) a + (n - 1) * es; : if (n > 40) : { : d = (n / 8) * es; : pl = med3(pl, pl + d, pl + 2 * d, cmp, arg); : pm = med3(pm - d, pm, pm + d, cmp, arg); 0.00 : 7ad612: 49 89 c4 mov %rax,%r12 : pn = med3(pn - 2 * d, pn - d, pn, cmp, arg); 0.00 : 7ad615: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 7ad619: 4c 8b 45 90 mov -0x70(%rbp),%r8 0.00 : 7ad61d: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7ad621: 4c 01 ee add %r13,%rsi 0.00 : 7ad624: 48 29 df sub %rbx,%rdi 0.00 : 7ad627: e8 64 fb ff ff callq 7ad190 0.00 : 7ad62c: 4c 8b 8d 78 ff ff ff mov -0x88(%rbp),%r9 0.00 : 7ad633: 48 89 c2 mov %rax,%rdx 0.00 : 7ad636: e9 ea fe ff ff jmpq 7ad525 : presorted; : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7ad63b: 4c 0f af 75 a0 imul -0x60(%rbp),%r14 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:120 1.57 : 7ad640: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7ad644: 48 03 7d a0 add -0x60(%rbp),%rdi 0.00 : 7ad648: 4c 03 75 a8 add -0x58(%rbp),%r14 0.00 : 7ad64c: 4c 39 f7 cmp %r14,%rdi 0.00 : 7ad64f: 4c 89 75 b0 mov %r14,-0x50(%rbp) 0.00 : 7ad653: 0f 83 35 ff ff ff jae 7ad58e 0.00 : 7ad659: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 7ad65d: 49 89 fd mov %rdi,%r13 : for (pl = pm; pl > (char *) a && cmp(pl - es, pl, arg) > 0; 0.00 : 7ad660: 49 89 ce mov %rcx,%r14 : presorted; : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7ad663: 4c 8d 3c 0f lea (%rdi,%rcx,1),%r15 : for (pl = pm; pl > (char *) a && cmp(pl - es, pl, arg) > 0; 0.00 : 7ad667: 49 f7 de neg %r14 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:121 1.57 : 7ad66a: 4c 39 6d a8 cmp %r13,-0x58(%rbp) 0.00 : 7ad66e: 4b 8d 5c 35 00 lea 0x0(%r13,%r14,1),%rbx 0.00 : 7ad673: 49 89 dc mov %rbx,%r12 0.00 : 7ad676: 72 35 jb 7ad6ad 0.00 : 7ad678: eb 5f jmp 7ad6d9 0.00 : 7ad67a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : pl -= es) : swap(pl, pl - es); 0.00 : 7ad680: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7ad684: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 7ad688: 48 8b 14 03 mov (%rbx,%rax,1),%rdx 0.00 : 7ad68c: 49 8b 04 24 mov (%r12),%rax 0.00 : 7ad690: 48 89 04 0b mov %rax,(%rbx,%rcx,1) 0.00 : 7ad694: 49 89 14 24 mov %rdx,(%r12) 0.00 : 7ad698: 4d 01 f4 add %r14,%r12 : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) : for (pl = pm; pl > (char *) a && cmp(pl - es, pl, arg) > 0; 0.00 : 7ad69b: 4c 89 e0 mov %r12,%rax 0.00 : 7ad69e: 4c 29 f0 sub %r14,%rax 0.00 : 7ad6a1: 48 39 45 a8 cmp %rax,-0x58(%rbp) 0.00 : 7ad6a5: 73 32 jae 7ad6d9 0.00 : 7ad6a7: 49 89 dd mov %rbx,%r13 0.00 : 7ad6aa: 4c 01 f3 add %r14,%rbx 0.00 : 7ad6ad: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 7ad6b1: 4c 89 ee mov %r13,%rsi 0.00 : 7ad6b4: 48 89 df mov %rbx,%rdi 0.00 : 7ad6b7: ff 55 98 callq *-0x68(%rbp) 0.79 : 7ad6ba: 85 c0 test %eax,%eax 0.00 : 7ad6bc: 7e 1b jle 7ad6d9 : pl -= es) : swap(pl, pl - es); 0.00 : 7ad6be: 8b 7d c4 mov -0x3c(%rbp),%edi /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:123 1.57 : 7ad6c1: 85 ff test %edi,%edi 0.00 : 7ad6c3: 74 bb je 7ad680 0.00 : 7ad6c5: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.79 : 7ad6c8: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7ad6cc: 48 89 de mov %rbx,%rsi 0.79 : 7ad6cf: 4c 89 ef mov %r13,%rdi 0.00 : 7ad6d2: e8 59 fa ff ff callq 7ad130 0.79 : 7ad6d7: eb bf jmp 7ad698 : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) : for (pl = pm; pl > (char *) a && cmp(pl - es, pl, arg) > 0; /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:121 0.79 : 7ad6d9: 4c 89 ff mov %r15,%rdi 1.57 : 7ad6dc: 4c 03 7d a0 add -0x60(%rbp),%r15 0.00 : 7ad6e0: 49 89 fd mov %rdi,%r13 : presorted; : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7ad6e3: 4c 89 f8 mov %r15,%rax 0.00 : 7ad6e6: 48 2b 45 a0 sub -0x60(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:120 0.79 : 7ad6ea: 48 39 45 b0 cmp %rax,-0x50(%rbp) 0.00 : 7ad6ee: 0f 87 76 ff ff ff ja 7ad66a : a = pn - r; : n = r / es; : goto loop; : } : /* qsort_arg(pn - r, r / es, es, cmp, arg);*/ : } /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:195 0.79 : 7ad6f4: 48 83 c4 68 add $0x68,%rsp 0.00 : 7ad6f8: 5b pop %rbx 0.00 : 7ad6f9: 41 5c pop %r12 0.00 : 7ad6fb: 41 5d pop %r13 0.00 : 7ad6fd: 41 5e pop %r14 0.00 : 7ad6ff: 41 5f pop %r15 0.00 : 7ad701: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.87 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:209 12.70 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:225 11.90 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:216 11.90 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:217 11.11 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:217 4.76 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:209 4.76 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:224 3.97 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:209 3.97 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:217 3.17 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:209 3.17 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:213 3.17 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:213 3.17 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:216 3.17 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:225 1.59 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:216 0.79 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:209 0.79 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:225 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005d1cf0 : : * Append arbitrary binary data to a StringInfo, allocating more space : * if necessary. : */ : void : appendBinaryStringInfo(StringInfo str, const char *data, int datalen) : { /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:209 3.17 : 5d1cf0: 55 push %rbp 4.76 : 5d1cf1: 48 89 e5 mov %rsp,%rbp 0.00 : 5d1cf4: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:209 15.87 : 5d1cf8: 4c 89 65 f0 mov %r12,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:209 3.97 : 5d1cfc: 48 89 fb mov %rdi,%rbx 0.00 : 5d1cff: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.79 : 5d1d03: 49 89 f4 mov %rsi,%r12 0.00 : 5d1d06: 48 83 ec 20 sub $0x20,%rsp : Assert(str != NULL); : : /* Make more room if needed */ : enlargeStringInfo(str, datalen); /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:213 3.17 : 5d1d0a: 89 d6 mov %edx,%esi : * Append arbitrary binary data to a StringInfo, allocating more space : * if necessary. : */ : void : appendBinaryStringInfo(StringInfo str, const char *data, int datalen) : { 0.00 : 5d1d0c: 41 89 d5 mov %edx,%r13d : Assert(str != NULL); : : /* Make more room if needed */ : enlargeStringInfo(str, datalen); 3.17 : 5d1d0f: e8 2c fe ff ff callq 5d1b40 : : /* OK, append the data */ : memcpy(str->data + str->len, data, datalen); /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:216 3.17 : 5d1d14: 48 63 7b 08 movslq 0x8(%rbx),%rdi 0.00 : 5d1d18: 49 63 d5 movslq %r13d,%rdx 1.59 : 5d1d1b: 4c 89 e6 mov %r12,%rsi 0.00 : 5d1d1e: 48 03 3b add (%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:216 11.90 : 5d1d21: e8 ca 7e e9 ff callq 469bf0 : str->len += datalen; /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:217 11.90 : 5d1d26: 44 89 e8 mov %r13d,%eax /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:217 3.97 : 5d1d29: 03 43 08 add 0x8(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:217 11.11 : 5d1d2c: 89 43 08 mov %eax,0x8(%rbx) : /* : * Keep a trailing null in place, even though it's probably useless for : * binary data. (Some callers are dealing with text but call this because : * their input isn't null-terminated.) : */ : str->data[str->len] = '\0'; /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:224 4.76 : 5d1d2f: 48 63 d0 movslq %eax,%rdx 0.00 : 5d1d32: 48 8b 03 mov (%rbx),%rax 0.00 : 5d1d35: c6 04 10 00 movb $0x0,(%rax,%rdx,1) : } /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:225 12.70 : 5d1d39: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 5d1d3d: 4c 8b 65 f0 mov -0x10(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:225 0.79 : 5d1d41: 4c 8b 6d f8 mov -0x8(%rbp),%r13 3.17 : 5d1d45: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:961 13.49 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:956 12.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:961 11.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:961 8.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:957 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:960 6.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:956 3.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:957 3.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:960 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:956 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:956 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:958 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:960 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:961 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d7f60 : : PG_RETURN_BOOL(float4_cmp_internal(arg1, arg2) >= 0); : } : : Datum : btfloat4cmp(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:956 13.49 : 6d7f60: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:956 2.38 : 6d7f61: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:956 6.35 : 6d7f64: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:956 2.38 : 6d7f65: 48 89 fb mov %rdi,%rbx 0.00 : 6d7f68: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:957 8.73 : 6d7f6c: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:957 3.97 : 6d7f70: e8 3b 5a 0a 00 callq 77d9b0 : float4 arg2 = PG_GETARG_FLOAT4(1); 0.00 : 6d7f75: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : btfloat4cmp(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d7f79: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float4 arg2 = PG_GETARG_FLOAT4(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:958 2.38 : 6d7f7e: e8 2d 5a 0a 00 callq 77d9b0 : : PG_RETURN_INT32(float4_cmp_internal(arg1, arg2)); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:960 1.59 : 6d7f83: 0f 28 c8 movaps %xmm0,%xmm1 0.00 : 6d7f86: f3 0f 10 45 f4 movss -0xc(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:960 7.14 : 6d7f8b: e8 20 ff ff ff callq 6d7eb0 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:961 12.70 : 6d7f90: 48 83 c4 08 add $0x8,%rsp : btfloat4cmp(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float4 arg2 = PG_GETARG_FLOAT4(1); : : PG_RETURN_INT32(float4_cmp_internal(arg1, arg2)); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:960 3.97 : 6d7f94: 89 c0 mov %eax,%eax : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:961 0.79 : 6d7f96: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:961 34.13 : 6d7f97: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 7.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 5.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 5.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 5.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1248 5.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 4.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 4.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 3.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1231 3.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 3.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 3.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 3.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 2.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1201 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1248 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1248 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1201 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1248 0.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079e830 : : /* : * Shared code for tuple and datum cases. : */ : static void : puttuple_common(Tuplesortstate *state, SortTuple *tuple) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 0.79 : 79e830: 55 push %rbp 0.00 : 79e831: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 5.56 : 79e834: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 0.79 : 79e836: 41 56 push %r14 0.00 : 79e838: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 5.56 : 79e83a: 49 89 f5 mov %rsi,%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1200 0.79 : 79e83d: 41 54 push %r12 0.00 : 79e83f: 49 89 fc mov %rdi,%r12 0.00 : 79e842: 53 push %rbx 1.59 : 79e843: 48 83 ec 28 sub $0x28,%rsp : switch (state->status) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1201 1.59 : 79e847: 8b 07 mov (%rdi),%eax 0.00 : 79e849: 83 f8 01 cmp $0x1,%eax 0.00 : 79e84c: 0f 84 fe 02 00 00 je 79eb50 0.79 : 79e852: 72 3c jb 79e890 0.00 : 79e854: 83 f8 02 cmp $0x2,%eax 0.00 : 79e857: 0f 84 43 03 00 00 je 79eba0 : */ : dumptuples(state, false); : break; : : default: : elog(ERROR, "invalid tuplesort state"); 0.00 : 79e85d: ba d0 2e 8e 00 mov $0x8e2ed0,%edx 0.00 : 79e862: be 23 05 00 00 mov $0x523,%esi 0.00 : 79e867: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79e86c: e8 af cb fd ff callq 77b420 0.00 : 79e871: be f0 29 8e 00 mov $0x8e29f0,%esi 0.00 : 79e876: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79e87b: 31 c0 xor %eax,%eax 0.00 : 79e87d: e8 ae c9 fd ff callq 77b230 0.00 : 79e882: e8 49 ac cc ff callq 4694d0 0.00 : 79e887: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79e88e: 00 00 : * as needed. Note that we try to grow the array when there is : * still one free slot remaining --- if we fail, there'll still be : * room to store the incoming tuple, and then we'll switch to : * tape-based operation. : */ : if (state->memtupcount >= state->memtupsize - 1) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1212 3.17 : 79e890: 41 8b 4c 24 6c mov 0x6c(%r12),%ecx 3.17 : 79e895: 8b 57 68 mov 0x68(%rdi),%edx 0.00 : 79e898: 8d 41 ff lea -0x1(%rcx),%eax 3.17 : 79e89b: 89 d7 mov %edx,%edi 2.38 : 79e89d: 39 c2 cmp %eax,%edx 0.00 : 79e89f: 0f 8d 63 03 00 00 jge 79ec08 : { : (void) grow_memtuples(state); : Assert(state->memtupcount < state->memtupsize); : } : state->memtuples[state->memtupcount++] = *tuple; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 1.59 : 79e8a5: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 79e8a9: 49 8b 4c 24 60 mov 0x60(%r12),%rcx 4.76 : 79e8ae: 48 63 c7 movslq %edi,%rax 0.79 : 79e8b1: 48 8d 04 40 lea (%rax,%rax,2),%rax 1.59 : 79e8b5: 48 89 14 c1 mov %rdx,(%rcx,%rax,8) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 14.29 : 79e8b9: 48 8d 34 c5 00 00 00 lea 0x0(,%rax,8),%rsi 0.00 : 79e8c0: 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 0.79 : 79e8c1: 49 8b 45 08 mov 0x8(%r13),%rax 0.00 : 79e8c5: 8d 57 01 lea 0x1(%rdi),%edx 0.79 : 79e8c8: 48 89 44 0e 08 mov %rax,0x8(%rsi,%rcx,1) 4.76 : 79e8cd: 49 8b 45 10 mov 0x10(%r13),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 7.94 : 79e8d1: 48 89 44 0e 10 mov %rax,0x10(%rsi,%rcx,1) : * Note that once we enter TSS_BOUNDED state we will always try to : * complete the sort that way. In the worst case, if later input : * tuples are larger than earlier ones, this might cause us to : * exceed workMem significantly. : */ : if (state->bounded && /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1231 3.97 : 79e8d6: 41 80 7c 24 09 00 cmpb $0x0,0x9(%r12) : if (state->memtupcount >= state->memtupsize - 1) : { : (void) grow_memtuples(state); : Assert(state->memtupcount < state->memtupsize); : } : state->memtuples[state->memtupcount++] = *tuple; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1217 3.97 : 79e8dc: 41 89 54 24 68 mov %edx,0x68(%r12) : * Note that once we enter TSS_BOUNDED state we will always try to : * complete the sort that way. In the worst case, if later input : * tuples are larger than earlier ones, this might cause us to : * exceed workMem significantly. : */ : if (state->bounded && 0.00 : 79e8e1: 74 1d je 79e900 0.00 : 79e8e3: 41 8b 4c 24 0c mov 0xc(%r12),%ecx 0.00 : 79e8e8: 8d 04 09 lea (%rcx,%rcx,1),%eax 0.00 : 79e8eb: 39 c2 cmp %eax,%edx 0.00 : 79e8ed: 0f 8f ad 03 00 00 jg 79eca0 0.00 : 79e8f3: 39 ca cmp %ecx,%edx 0.00 : 79e8f5: 0f 8f 95 03 00 00 jg 79ec90 0.00 : 79e8fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* : * Done if we still fit in available memory and have array slots. : */ : if (state->memtupcount < state->memtupsize && !LACKMEM(state)) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1248 0.79 : 79e900: 41 8b 74 24 6c mov 0x6c(%r12),%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1248 5.56 : 79e905: 39 f2 cmp %esi,%edx 0.00 : 79e907: 7d 0d jge 79e916 0.00 : 79e909: 49 83 7c 24 10 00 cmpq $0x0,0x10(%r12) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1248 1.59 : 79e90f: 90 nop 1.59 : 79e910: 0f 89 c0 02 00 00 jns 79ebd6 : * : * Note: you might be thinking we need to account for the memtuples[] : * array in this calculation, but we effectively treat that as part of the : * MERGE_BUFFER_SIZE workspace. : */ : mOrder = (allowedMem - TAPE_BUFFER_OVERHEAD) / 0.00 : 79e916: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 79e91b: 48 ba a1 0e ea a0 0e movabs $0xea0ea0ea0ea0ea1,%rdx 0.00 : 79e922: ea a0 0e 0.00 : 79e925: 48 8d 88 00 a0 ff ff lea -0x6000(%rax),%rcx 0.00 : 79e92c: 48 89 c8 mov %rcx,%rax 0.00 : 79e92f: 48 c1 f9 3f sar $0x3f,%rcx 0.00 : 79e933: 48 f7 ea imul %rdx : /* : * We must have at least 2*maxTapes slots in the memtuples[] array, else : * we'd not have room for merge heap plus preread. It seems unlikely that : * this case would ever occur, but be safe. : */ : maxTapes = Min(maxTapes, state->memtupsize / 2); 0.00 : 79e936: 89 f0 mov %esi,%eax : * : * Note: you might be thinking we need to account for the memtuples[] : * array in this calculation, but we effectively treat that as part of the : * MERGE_BUFFER_SIZE workspace. : */ : mOrder = (allowedMem - TAPE_BUFFER_OVERHEAD) / 0.00 : 79e938: 48 c1 fa 0e sar $0xe,%rdx 0.00 : 79e93c: 29 ca sub %ecx,%edx : ntuples, : j; : int64 tapeSpace; : : /* Compute number of tapes to use: merge order plus 1 */ : maxTapes = tuplesort_merge_order(state->allowedMem) + 1; 0.00 : 79e93e: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 79e943: 83 fa 06 cmp $0x6,%edx 0.00 : 79e946: 0f 4d ca cmovge %edx,%ecx : /* : * We must have at least 2*maxTapes slots in the memtuples[] array, else : * we'd not have room for merge heap plus preread. It seems unlikely that : * this case would ever occur, but be safe. : */ : maxTapes = Min(maxTapes, state->memtupsize / 2); 0.00 : 79e949: c1 e8 1f shr $0x1f,%eax 0.00 : 79e94c: 01 f0 add %esi,%eax : ntuples, : j; : int64 tapeSpace; : : /* Compute number of tapes to use: merge order plus 1 */ : maxTapes = tuplesort_merge_order(state->allowedMem) + 1; 0.00 : 79e94e: 83 c1 01 add $0x1,%ecx : /* : * We must have at least 2*maxTapes slots in the memtuples[] array, else : * we'd not have room for merge heap plus preread. It seems unlikely that : * this case would ever occur, but be safe. : */ : maxTapes = Min(maxTapes, state->memtupsize / 2); 0.00 : 79e951: d1 f8 sar %eax 0.00 : 79e953: 39 c1 cmp %eax,%ecx 0.00 : 79e955: 41 89 c7 mov %eax,%r15d 0.00 : 79e958: 44 0f 4e f9 cmovle %ecx,%r15d : : state->maxTapes = maxTapes; : state->tapeRange = maxTapes - 1; 0.00 : 79e95c: 41 8d 47 ff lea -0x1(%r15),%eax : * we'd not have room for merge heap plus preread. It seems unlikely that : * this case would ever occur, but be safe. : */ : maxTapes = Min(maxTapes, state->memtupsize / 2); : : state->maxTapes = maxTapes; 0.00 : 79e960: 45 89 7c 24 20 mov %r15d,0x20(%r12) : state->tapeRange = maxTapes - 1; 0.00 : 79e965: 41 89 44 24 24 mov %eax,0x24(%r12) : : #ifdef TRACE_SORT : if (trace_sort) 0.00 : 79e96a: 80 3d 6f bf 41 00 00 cmpb $0x0,0x41bf6f(%rip) # bba8e0 0.00 : 79e971: 0f 85 89 04 00 00 jne 79ee00 : * other scenarios the memtuples[] array is unlikely to occupy more than : * half of allowedMem. In the pass-by-value case it's not important to : * account for tuple space, so we don't care if LACKMEM becomes : * inaccurate.) : */ : tapeSpace = (int64) maxTapes *TAPE_BUFFER_OVERHEAD; 0.00 : 79e977: 4d 63 ef movslq %r15d,%r13 : : if (tapeSpace + GetMemoryChunkSpace(state->memtuples) < state->allowedMem) 0.00 : 79e97a: 49 8b 7c 24 60 mov 0x60(%r12),%rdi : * other scenarios the memtuples[] array is unlikely to occupy more than : * half of allowedMem. In the pass-by-value case it's not important to : * account for tuple space, so we don't care if LACKMEM becomes : * inaccurate.) : */ : tapeSpace = (int64) maxTapes *TAPE_BUFFER_OVERHEAD; 0.00 : 79e97f: 4b 8d 5c 6d 00 lea 0x0(%r13,%r13,2),%rbx 0.00 : 79e984: 48 c1 e3 0d shl $0xd,%rbx : : if (tapeSpace + GetMemoryChunkSpace(state->memtuples) < state->allowedMem) 0.00 : 79e988: e8 03 a1 ff ff callq 798a90 0.00 : 79e98d: 48 01 d8 add %rbx,%rax 0.00 : 79e990: 49 3b 44 24 18 cmp 0x18(%r12),%rax 0.00 : 79e995: 0f 82 0d 04 00 00 jb 79eda8 : * Create the tape set and allocate the per-tape data arrays. : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e99b: 4a 8d 1c ad 00 00 00 lea 0x0(,%r13,4),%rbx 0.00 : 79e9a2: 00 : : /* : * Make sure that the temp file(s) underlying the tape set are created in : * suitable temp tablespaces. : */ : PrepareTempTablespaces(); 0.00 : 79e9a3: e8 c8 05 df ff callq 58ef70 : : /* : * Create the tape set and allocate the per-tape data arrays. : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); 0.00 : 79e9a8: 44 89 ff mov %r15d,%edi 0.00 : 79e9ab: e8 b0 dd ff ff callq 79c760 : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); 0.00 : 79e9b0: 4c 89 ef mov %r13,%rdi : PrepareTempTablespaces(); : : /* : * Create the tape set and allocate the per-tape data arrays. : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); 0.00 : 79e9b3: 49 89 44 24 30 mov %rax,0x30(%r12) : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); 0.00 : 79e9b8: e8 b3 a5 ff ff callq 798f70 : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9bd: 48 89 df mov %rbx,%rdi : /* : * Create the tape set and allocate the per-tape data arrays. : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); 0.00 : 79e9c0: 49 89 44 24 78 mov %rax,0x78(%r12) : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9c5: e8 a6 a5 ff ff callq 798f70 : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9ca: 48 89 df mov %rbx,%rdi : * Create the tape set and allocate the per-tape data arrays. : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9cd: 49 89 84 24 80 00 00 mov %rax,0x80(%r12) 0.00 : 79e9d4: 00 : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9d5: e8 96 a5 ff ff callq 798f70 : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9da: 48 89 df mov %rbx,%rdi : */ : state->tapeset = LogicalTapeSetCreate(maxTapes); : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9dd: 49 89 84 24 88 00 00 mov %rax,0x88(%r12) 0.00 : 79e9e4: 00 : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9e5: e8 86 a5 ff ff callq 798f70 : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); 0.00 : 79e9ea: 4a 8d 3c ed 00 00 00 lea 0x0(,%r13,8),%rdi 0.00 : 79e9f1: 00 : state->tapeset = LogicalTapeSetCreate(maxTapes); : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9f2: 49 89 84 24 90 00 00 mov %rax,0x90(%r12) 0.00 : 79e9f9: 00 : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); 0.00 : 79e9fa: e8 71 a5 ff ff callq 798f70 : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79e9ff: 48 89 df mov %rbx,%rdi : : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); 0.00 : 79ea02: 49 89 84 24 98 00 00 mov %rax,0x98(%r12) 0.00 : 79ea09: 00 : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea0a: e8 61 a5 ff ff callq 798f70 : state->tp_runs = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea0f: 48 89 df mov %rbx,%rdi : state->mergeactive = (bool *) palloc0(maxTapes * sizeof(bool)); : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea12: 49 89 84 24 b0 00 00 mov %rax,0xb0(%r12) 0.00 : 79ea19: 00 : state->tp_runs = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea1a: e8 51 a5 ff ff callq 798f70 : state->tp_dummy = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea1f: 48 89 df mov %rbx,%rdi : state->mergenext = (int *) palloc0(maxTapes * sizeof(int)); : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_runs = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea22: 49 89 84 24 b8 00 00 mov %rax,0xb8(%r12) 0.00 : 79ea29: 00 : state->tp_dummy = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea2a: e8 41 a5 ff ff callq 798f70 : state->tp_tapenum = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea2f: 48 89 df mov %rbx,%rdi : state->mergelast = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_runs = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_dummy = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea32: 49 89 84 24 c0 00 00 mov %rax,0xc0(%r12) 0.00 : 79ea39: 00 : state->tp_tapenum = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea3a: e8 31 a5 ff ff callq 798f70 : * : * NOTE: we pass false for checkIndex since there's no point in comparing : * indexes in this step, even though we do intend the indexes to be part : * of the sort key... : */ : ntuples = state->memtupcount; 0.00 : 79ea3f: 45 8b 74 24 68 mov 0x68(%r12),%r14d : state->mergeavailslots = (int *) palloc0(maxTapes * sizeof(int)); : state->mergeavailmem = (int64 *) palloc0(maxTapes * sizeof(int64)); : state->tp_fib = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_runs = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_dummy = (int *) palloc0(maxTapes * sizeof(int)); : state->tp_tapenum = (int *) palloc0(maxTapes * sizeof(int)); 0.00 : 79ea44: 49 89 84 24 c8 00 00 mov %rax,0xc8(%r12) 0.00 : 79ea4b: 00 : * NOTE: we pass false for checkIndex since there's no point in comparing : * indexes in this step, even though we do intend the indexes to be part : * of the sort key... : */ : ntuples = state->memtupcount; : state->memtupcount = 0; /* make the heap empty */ 0.00 : 79ea4c: 41 c7 44 24 68 00 00 movl $0x0,0x68(%r12) 0.00 : 79ea53: 00 00 : for (j = 0; j < ntuples; j++) 0.00 : 79ea55: 45 85 f6 test %r14d,%r14d 0.00 : 79ea58: 7e 42 jle 79ea9c 0.00 : 79ea5a: 45 31 ed xor %r13d,%r13d 0.00 : 79ea5d: 31 db xor %ebx,%ebx 0.00 : 79ea5f: 90 nop : { : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[j]; 0.00 : 79ea60: 49 8b 54 24 60 mov 0x60(%r12),%rdx : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ea65: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 79ea69: 31 c9 xor %ecx,%ecx 0.00 : 79ea6b: 4c 89 e7 mov %r12,%rdi : * indexes in this step, even though we do intend the indexes to be part : * of the sort key... : */ : ntuples = state->memtupcount; : state->memtupcount = 0; /* make the heap empty */ : for (j = 0; j < ntuples; j++) 0.00 : 79ea6e: 41 83 c5 01 add $0x1,%r13d : { : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[j]; 0.00 : 79ea72: 48 8b 04 1a mov (%rdx,%rbx,1),%rax 0.00 : 79ea76: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 79ea7a: 48 8b 44 1a 08 mov 0x8(%rdx,%rbx,1),%rax 0.00 : 79ea7f: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 79ea83: 48 8b 44 1a 10 mov 0x10(%rdx,%rbx,1),%rax : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ea88: 31 d2 xor %edx,%edx : * indexes in this step, even though we do intend the indexes to be part : * of the sort key... : */ : ntuples = state->memtupcount; : state->memtupcount = 0; /* make the heap empty */ : for (j = 0; j < ntuples; j++) 0.00 : 79ea8a: 48 83 c3 18 add $0x18,%rbx : { : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[j]; 0.00 : 79ea8e: 48 89 45 c0 mov %rax,-0x40(%rbp) : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ea92: e8 39 e7 ff ff callq 79d1d0 : * indexes in this step, even though we do intend the indexes to be part : * of the sort key... : */ : ntuples = state->memtupcount; : state->memtupcount = 0; /* make the heap empty */ : for (j = 0; j < ntuples; j++) 0.00 : 79ea97: 45 39 ee cmp %r13d,%r14d 0.00 : 79ea9a: 7f c4 jg 79ea60 : state->currentRun = 0; : : /* : * Initialize variables of Algorithm D (step D1). : */ : for (j = 0; j < maxTapes; j++) 0.00 : 79ea9c: 45 85 ff test %r15d,%r15d : : tuplesort_heap_insert(state, &stup, 0, false); : } : Assert(state->memtupcount == ntuples); : : state->currentRun = 0; 0.00 : 79ea9f: 41 c7 44 24 74 00 00 movl $0x0,0x74(%r12) 0.00 : 79eaa6: 00 00 : : /* : * Initialize variables of Algorithm D (step D1). : */ : for (j = 0; j < maxTapes; j++) 0.00 : 79eaa8: 7e 4a jle 79eaf4 0.00 : 79eaaa: 31 c9 xor %ecx,%ecx 0.00 : 79eaac: 31 d2 xor %edx,%edx 0.00 : 79eaae: 66 90 xchg %ax,%ax : { : state->tp_fib[j] = 1; 0.00 : 79eab0: 49 8b 84 24 b0 00 00 mov 0xb0(%r12),%rax 0.00 : 79eab7: 00 0.00 : 79eab8: c7 04 10 01 00 00 00 movl $0x1,(%rax,%rdx,1) : state->tp_runs[j] = 0; 0.00 : 79eabf: 49 8b 84 24 b8 00 00 mov 0xb8(%r12),%rax 0.00 : 79eac6: 00 0.00 : 79eac7: c7 04 10 00 00 00 00 movl $0x0,(%rax,%rdx,1) : state->tp_dummy[j] = 1; 0.00 : 79eace: 49 8b 84 24 c0 00 00 mov 0xc0(%r12),%rax 0.00 : 79ead5: 00 0.00 : 79ead6: c7 04 10 01 00 00 00 movl $0x1,(%rax,%rdx,1) : state->tp_tapenum[j] = j; 0.00 : 79eadd: 49 8b 84 24 c8 00 00 mov 0xc8(%r12),%rax 0.00 : 79eae4: 00 0.00 : 79eae5: 89 0c 10 mov %ecx,(%rax,%rdx,1) : state->currentRun = 0; : : /* : * Initialize variables of Algorithm D (step D1). : */ : for (j = 0; j < maxTapes; j++) 0.00 : 79eae8: 83 c1 01 add $0x1,%ecx 0.00 : 79eaeb: 48 83 c2 04 add $0x4,%rdx 0.00 : 79eaef: 41 39 cf cmp %ecx,%r15d 0.00 : 79eaf2: 7f bc jg 79eab0 : state->tp_fib[j] = 1; : state->tp_runs[j] = 0; : state->tp_dummy[j] = 1; : state->tp_tapenum[j] = j; : } : state->tp_fib[state->tapeRange] = 0; 0.00 : 79eaf4: 49 63 54 24 24 movslq 0x24(%r12),%rdx 0.00 : 79eaf9: 49 8b 84 24 b0 00 00 mov 0xb0(%r12),%rax 0.00 : 79eb00: 00 : inittapes(state); : : /* : * Dump tuples until we are back under the limit. : */ : dumptuples(state, false); 0.00 : 79eb01: 31 f6 xor %esi,%esi 0.00 : 79eb03: 4c 89 e7 mov %r12,%rdi : state->tp_fib[j] = 1; : state->tp_runs[j] = 0; : state->tp_dummy[j] = 1; : state->tp_tapenum[j] = j; : } : state->tp_fib[state->tapeRange] = 0; 0.00 : 79eb06: c7 04 90 00 00 00 00 movl $0x0,(%rax,%rdx,4) : state->tp_dummy[state->tapeRange] = 0; 0.00 : 79eb0d: 49 63 54 24 24 movslq 0x24(%r12),%rdx 0.00 : 79eb12: 49 8b 84 24 c0 00 00 mov 0xc0(%r12),%rax 0.00 : 79eb19: 00 0.00 : 79eb1a: c7 04 90 00 00 00 00 movl $0x0,(%rax,%rdx,4) : : state->Level = 1; 0.00 : 79eb21: 41 c7 84 24 a8 00 00 movl $0x1,0xa8(%r12) 0.00 : 79eb28: 00 01 00 00 00 : state->destTape = 0; 0.00 : 79eb2d: 41 c7 84 24 ac 00 00 movl $0x0,0xac(%r12) 0.00 : 79eb34: 00 00 00 00 00 : : state->status = TSS_BUILDRUNS; 0.00 : 79eb39: 41 c7 04 24 02 00 00 movl $0x2,(%r12) 0.00 : 79eb40: 00 : inittapes(state); : : /* : * Dump tuples until we are back under the limit. : */ : dumptuples(state, false); 0.00 : 79eb41: e8 da f7 ff ff callq 79e320 : break; 0.00 : 79eb46: e9 8b 00 00 00 jmpq 79ebd6 0.00 : 79eb4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * good speed optimization, too, since when there are many more : * input tuples than the bound, most input tuples can be discarded : * with just this one comparison. Note that because we currently : * have the sort direction reversed, we must check for <= not >=. : */ : if (COMPARETUP(state, tuple, &state->memtuples[0]) <= 0) 0.00 : 79eb50: 48 8b 77 60 mov 0x60(%rdi),%rsi 0.00 : 79eb54: 48 89 fa mov %rdi,%rdx 0.00 : 79eb57: 4c 89 ef mov %r13,%rdi 0.00 : 79eb5a: 41 ff 54 24 38 callq *0x38(%r12) 0.00 : 79eb5f: 85 c0 test %eax,%eax 0.00 : 79eb61: 0f 8e 81 00 00 00 jle 79ebe8 : CHECK_FOR_INTERRUPTS(); : } : else : { : /* discard top of heap, sift up, insert new tuple */ : free_sort_tuple(state, &state->memtuples[0]); 0.00 : 79eb67: 49 8b 74 24 60 mov 0x60(%r12),%rsi 0.00 : 79eb6c: 4c 89 e7 mov %r12,%rdi 0.00 : 79eb6f: e8 1c ed ff ff callq 79d890 : tuplesort_heap_siftup(state, false); 0.00 : 79eb74: 4c 89 e7 mov %r12,%rdi 0.00 : 79eb77: 31 f6 xor %esi,%esi 0.00 : 79eb79: e8 62 e4 ff ff callq 79cfe0 : tuplesort_heap_insert(state, tuple, 0, false); 0.00 : 79eb7e: 4c 89 ee mov %r13,%rsi 0.00 : 79eb81: 4c 89 e7 mov %r12,%rdi 0.00 : 79eb84: 31 c9 xor %ecx,%ecx 0.00 : 79eb86: 31 d2 xor %edx,%edx 0.00 : 79eb88: e8 43 e6 ff ff callq 79d1d0 : : default: : elog(ERROR, "invalid tuplesort state"); : break; : } : } 0.00 : 79eb8d: 48 83 c4 28 add $0x28,%rsp 0.00 : 79eb91: 5b pop %rbx 0.00 : 79eb92: 41 5c pop %r12 0.00 : 79eb94: 41 5d pop %r13 0.00 : 79eb96: 41 5e pop %r14 0.00 : 79eb98: 41 5f pop %r15 0.00 : 79eb9a: c9 leaveq 0.00 : 79eb9b: c3 retq 0.00 : 79eb9c: 0f 1f 40 00 nopl 0x0(%rax) : * : * Note there will always be at least one tuple in the heap at : * this point; see dumptuples. : */ : Assert(state->memtupcount > 0); : if (COMPARETUP(state, tuple, &state->memtuples[0]) >= 0) 0.00 : 79eba0: 48 8b 77 60 mov 0x60(%rdi),%rsi 0.00 : 79eba4: 48 89 fa mov %rdi,%rdx 0.00 : 79eba7: 4c 89 ef mov %r13,%rdi 0.00 : 79ebaa: 41 ff 54 24 38 callq *0x38(%r12) 0.00 : 79ebaf: 85 c0 test %eax,%eax 0.00 : 79ebb1: 0f 88 b9 00 00 00 js 79ec70 : tuplesort_heap_insert(state, tuple, state->currentRun, true); 0.00 : 79ebb7: 41 8b 54 24 74 mov 0x74(%r12),%edx 0.00 : 79ebbc: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 79ebc1: 4c 89 ee mov %r13,%rsi 0.00 : 79ebc4: 4c 89 e7 mov %r12,%rdi 0.00 : 79ebc7: e8 04 e6 ff ff callq 79d1d0 : tuplesort_heap_insert(state, tuple, state->currentRun + 1, true); : : /* : * If we are over the memory limit, dump tuples till we're under. : */ : dumptuples(state, false); 0.00 : 79ebcc: 31 f6 xor %esi,%esi 0.00 : 79ebce: 4c 89 e7 mov %r12,%rdi 0.00 : 79ebd1: e8 4a f7 ff ff callq 79e320 : : default: : elog(ERROR, "invalid tuplesort state"); : break; : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 1.59 : 79ebd6: 48 83 c4 28 add $0x28,%rsp 1.59 : 79ebda: 5b pop %rbx 0.00 : 79ebdb: 41 5c pop %r12 0.79 : 79ebdd: 41 5d pop %r13 2.38 : 79ebdf: 41 5e pop %r14 1.59 : 79ebe1: 41 5f pop %r15 2.38 : 79ebe3: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1318 5.56 : 79ebe4: c3 retq 0.00 : 79ebe5: 0f 1f 00 nopl (%rax) : * have the sort direction reversed, we must check for <= not >=. : */ : if (COMPARETUP(state, tuple, &state->memtuples[0]) <= 0) : { : /* new tuple <= top of the heap, so we can discard it */ : free_sort_tuple(state, tuple); 0.00 : 79ebe8: 4c 89 ee mov %r13,%rsi 0.00 : 79ebeb: 4c 89 e7 mov %r12,%rdi 0.00 : 79ebee: e8 9d ec ff ff callq 79d890 : CHECK_FOR_INTERRUPTS(); 0.00 : 79ebf3: 0f b6 05 96 b4 41 00 movzbl 0x41b496(%rip),%eax # bba090 0.00 : 79ebfa: 84 c0 test %al,%al 0.00 : 79ebfc: 74 d8 je 79ebd6 0.00 : 79ebfe: e8 9d d6 ef ff callq 69c2a0 0.00 : 79ec03: eb d1 jmp 79ebd6 0.00 : 79ec05: 0f 1f 00 nopl (%rax) : int newmemtupsize; : int memtupsize = state->memtupsize; : int64 memNowUsed = state->allowedMem - state->availMem; : : /* Forget it if we've already maxed out memtuples, per comment above */ : if (!state->growmemtuples) 0.00 : 79ec08: 41 80 7c 24 70 00 cmpb $0x0,0x70(%r12) : static bool : grow_memtuples(Tuplesortstate *state) : { : int newmemtupsize; : int memtupsize = state->memtupsize; : int64 memNowUsed = state->allowedMem - state->availMem; 0.00 : 79ec0e: 49 8b 74 24 18 mov 0x18(%r12),%rsi 0.00 : 79ec13: 4d 8b 74 24 10 mov 0x10(%r12),%r14 : : /* Forget it if we've already maxed out memtuples, per comment above */ : if (!state->growmemtuples) 0.00 : 79ec18: 0f 84 87 fc ff ff je 79e8a5 : static bool : grow_memtuples(Tuplesortstate *state) : { : int newmemtupsize; : int memtupsize = state->memtupsize; : int64 memNowUsed = state->allowedMem - state->availMem; 0.00 : 79ec1e: 48 89 f0 mov %rsi,%rax 0.00 : 79ec21: 4c 29 f0 sub %r14,%rax : /* Forget it if we've already maxed out memtuples, per comment above */ : if (!state->growmemtuples) : return false; : : /* Select new value of memtupsize */ : if (memNowUsed <= state->availMem) 0.00 : 79ec24: 49 39 c6 cmp %rax,%r14 0.00 : 79ec27: 0f 8c 13 02 00 00 jl 79ee40 : { : /* : * We've used no more than half of allowedMem; double our usage, : * clamping at INT_MAX tuples. : */ : if (memtupsize < INT_MAX / 2) 0.00 : 79ec2d: 81 f9 fe ff ff 3f cmp $0x3ffffffe,%ecx 0.00 : 79ec33: 0f 8f 47 02 00 00 jg 79ee80 : newmemtupsize = memtupsize * 2; 0.00 : 79ec39: 8d 1c 09 lea (%rcx,%rcx,1),%ebx : /* We won't make any further enlargement attempts */ : state->growmemtuples = false; : } : : /* Must enlarge array by at least one element, else report failure */ : if (newmemtupsize <= memtupsize) 0.00 : 79ec3c: 39 d9 cmp %ebx,%ecx 0.00 : 79ec3e: 7d 1f jge 79ec5f : * to ensure our request won't be rejected. Note that we can easily : * exhaust address space before facing this outcome. (This is presently : * impossible due to guc.c's MAX_KILOBYTES limitation on work_mem, but : * don't rely on that at this distance.) : */ : if ((Size) newmemtupsize >= MaxAllocHugeSize / sizeof(SortTuple)) 0.00 : 79ec40: 85 db test %ebx,%ebx 0.00 : 79ec42: 0f 88 9d 02 00 00 js 79eee5 : * array were to increase. That shouldn't happen with any sane value of : * allowedMem, because at any array size large enough to risk LACKMEM, : * palloc would be treating both old and new arrays as separate chunks. : * But we'll check LACKMEM explicitly below just in case.) : */ : if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple))) 0.00 : 79ec48: 89 d8 mov %ebx,%eax 0.00 : 79ec4a: 29 c8 sub %ecx,%eax 0.00 : 79ec4c: 48 98 cltq 0.00 : 79ec4e: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 79ec52: 48 c1 e0 03 shl $0x3,%rax 0.00 : 79ec56: 49 39 c6 cmp %rax,%r14 0.00 : 79ec59: 0f 8d 31 02 00 00 jge 79ee90 : elog(ERROR, "unexpected out-of-memory situation during sort"); : return true; : : noalloc: : /* If for any reason we didn't realloc, shut off future attempts */ : state->growmemtuples = false; 0.00 : 79ec5f: 41 c6 44 24 70 00 movb $0x0,0x70(%r12) 0.00 : 79ec65: 89 d7 mov %edx,%edi 0.00 : 79ec67: e9 39 fc ff ff jmpq 79e8a5 0.00 : 79ec6c: 0f 1f 40 00 nopl 0x0(%rax) : */ : Assert(state->memtupcount > 0); : if (COMPARETUP(state, tuple, &state->memtuples[0]) >= 0) : tuplesort_heap_insert(state, tuple, state->currentRun, true); : else : tuplesort_heap_insert(state, tuple, state->currentRun + 1, true); 0.00 : 79ec70: 41 8b 54 24 74 mov 0x74(%r12),%edx 0.00 : 79ec75: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 79ec7a: 4c 89 ee mov %r13,%rsi 0.00 : 79ec7d: 4c 89 e7 mov %r12,%rdi 0.00 : 79ec80: 83 c2 01 add $0x1,%edx 0.00 : 79ec83: e8 48 e5 ff ff callq 79d1d0 0.00 : 79ec88: e9 3f ff ff ff jmpq 79ebcc 0.00 : 79ec8d: 0f 1f 00 nopl (%rax) : * Note that once we enter TSS_BOUNDED state we will always try to : * complete the sort that way. In the worst case, if later input : * tuples are larger than earlier ones, this might cause us to : * exceed workMem significantly. : */ : if (state->bounded && 0.00 : 79ec90: 49 83 7c 24 10 00 cmpq $0x0,0x10(%r12) 0.00 : 79ec96: 0f 89 64 fc ff ff jns 79e900 0.00 : 79ec9c: 0f 1f 40 00 nopl 0x0(%rax) : (state->memtupcount > state->bound * 2 || : (state->memtupcount > state->bound && LACKMEM(state)))) : { : #ifdef TRACE_SORT : if (trace_sort) 0.00 : 79eca0: 80 3d 39 bc 41 00 00 cmpb $0x0,0x41bc39(%rip) # bba8e0 0.00 : 79eca7: 0f 85 0b 01 00 00 jne 79edb8 : * the direction of comparison for tupindexes. : */ : static void : make_bounded_heap(Tuplesortstate *state) : { : int tupcount = state->memtupcount; 0.00 : 79ecad: 45 8b 6c 24 68 mov 0x68(%r12),%r13d : Assert(state->status == TSS_INITIAL); : Assert(state->bounded); : Assert(tupcount >= state->bound); : : /* Reverse sort direction so largest entry will be at root */ : REVERSEDIRECTION(state); 0.00 : 79ecb2: 4c 89 e7 mov %r12,%rdi 0.00 : 79ecb5: 41 ff 54 24 58 callq *0x58(%r12) : : state->memtupcount = 0; /* make the heap empty */ 0.00 : 79ecba: 41 c7 44 24 68 00 00 movl $0x0,0x68(%r12) 0.00 : 79ecc1: 00 00 : for (i = 0; i < tupcount; i++) 0.00 : 79ecc3: 45 85 ed test %r13d,%r13d 0.00 : 79ecc6: 0f 8e 9c 00 00 00 jle 79ed68 0.00 : 79eccc: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 79ecd0: 31 db xor %ebx,%ebx : { : /* Insert next tuple into heap */ : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[i]; : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ecd2: 4c 8d 75 b0 lea -0x50(%rbp),%r14 : : /* Reverse sort direction so largest entry will be at root */ : REVERSEDIRECTION(state); : : state->memtupcount = 0; /* make the heap empty */ : for (i = 0; i < tupcount; i++) 0.00 : 79ecd6: 48 8d 44 40 03 lea 0x3(%rax,%rax,2),%rax 0.00 : 79ecdb: 4c 8d 2c c5 00 00 00 lea 0x0(,%rax,8),%r13 0.00 : 79ece2: 00 0.00 : 79ece3: eb 0c jmp 79ecf1 0.00 : 79ece5: 0f 1f 00 nopl (%rax) : : /* If heap too full, discard largest entry */ : if (state->memtupcount > state->bound) : { : free_sort_tuple(state, &state->memtuples[0]); : tuplesort_heap_siftup(state, false); 0.00 : 79ece8: 48 83 c3 18 add $0x18,%rbx : : /* Reverse sort direction so largest entry will be at root */ : REVERSEDIRECTION(state); : : state->memtupcount = 0; /* make the heap empty */ : for (i = 0; i < tupcount; i++) 0.00 : 79ecec: 4c 39 eb cmp %r13,%rbx 0.00 : 79ecef: 74 77 je 79ed68 : { : if (state->memtupcount >= state->bound && 0.00 : 79ecf1: 41 8b 44 24 68 mov 0x68(%r12),%eax 0.00 : 79ecf6: 41 3b 44 24 0c cmp 0xc(%r12),%eax 0.00 : 79ecfb: 7c 15 jl 79ed12 0.00 : 79ecfd: 49 8b 74 24 60 mov 0x60(%r12),%rsi 0.00 : 79ed02: 4c 89 e2 mov %r12,%rdx 0.00 : 79ed05: 48 8d 3c 1e lea (%rsi,%rbx,1),%rdi 0.00 : 79ed09: 41 ff 54 24 38 callq *0x38(%r12) 0.00 : 79ed0e: 85 c0 test %eax,%eax 0.00 : 79ed10: 7e 66 jle 79ed78 : } : else : { : /* Insert next tuple into heap */ : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[i]; 0.00 : 79ed12: 49 8b 54 24 60 mov 0x60(%r12),%rdx : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ed17: 31 c9 xor %ecx,%ecx 0.00 : 79ed19: 4c 89 f6 mov %r14,%rsi 0.00 : 79ed1c: 4c 89 e7 mov %r12,%rdi : } : else : { : /* Insert next tuple into heap */ : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[i]; 0.00 : 79ed1f: 48 8b 04 1a mov (%rdx,%rbx,1),%rax 0.00 : 79ed23: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 79ed27: 48 8b 44 1a 08 mov 0x8(%rdx,%rbx,1),%rax 0.00 : 79ed2c: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 79ed30: 48 8b 44 1a 10 mov 0x10(%rdx,%rbx,1),%rax : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ed35: 31 d2 xor %edx,%edx : } : else : { : /* Insert next tuple into heap */ : /* Must copy source tuple to avoid possible overwrite */ : SortTuple stup = state->memtuples[i]; 0.00 : 79ed37: 48 89 45 c0 mov %rax,-0x40(%rbp) : : tuplesort_heap_insert(state, &stup, 0, false); 0.00 : 79ed3b: e8 90 e4 ff ff callq 79d1d0 : : /* If heap too full, discard largest entry */ : if (state->memtupcount > state->bound) 0.00 : 79ed40: 41 8b 44 24 68 mov 0x68(%r12),%eax 0.00 : 79ed45: 41 3b 44 24 0c cmp 0xc(%r12),%eax 0.00 : 79ed4a: 7e 9c jle 79ece8 : { : free_sort_tuple(state, &state->memtuples[0]); 0.00 : 79ed4c: 49 8b 74 24 60 mov 0x60(%r12),%rsi 0.00 : 79ed51: 4c 89 e7 mov %r12,%rdi 0.00 : 79ed54: e8 37 eb ff ff callq 79d890 : tuplesort_heap_siftup(state, false); 0.00 : 79ed59: 31 f6 xor %esi,%esi 0.00 : 79ed5b: 4c 89 e7 mov %r12,%rdi 0.00 : 79ed5e: e8 7d e2 ff ff callq 79cfe0 0.00 : 79ed63: eb 83 jmp 79ece8 0.00 : 79ed65: 0f 1f 00 nopl (%rax) : } : } : } : : Assert(state->memtupcount == state->bound); : state->status = TSS_BOUNDED; 0.00 : 79ed68: 41 c7 04 24 01 00 00 movl $0x1,(%r12) 0.00 : 79ed6f: 00 : : default: : elog(ERROR, "invalid tuplesort state"); : break; : } : } 0.00 : 79ed70: e9 61 fe ff ff jmpq 79ebd6 0.00 : 79ed75: 0f 1f 00 nopl (%rax) : { : if (state->memtupcount >= state->bound && : COMPARETUP(state, &state->memtuples[i], &state->memtuples[0]) <= 0) : { : /* New tuple would just get thrown out, so skip it */ : free_sort_tuple(state, &state->memtuples[i]); 0.00 : 79ed78: 48 89 de mov %rbx,%rsi 0.00 : 79ed7b: 49 03 74 24 60 add 0x60(%r12),%rsi 0.00 : 79ed80: 4c 89 e7 mov %r12,%rdi 0.00 : 79ed83: e8 08 eb ff ff callq 79d890 : CHECK_FOR_INTERRUPTS(); 0.00 : 79ed88: 0f b6 05 01 b3 41 00 movzbl 0x41b301(%rip),%eax # bba090 0.00 : 79ed8f: 84 c0 test %al,%al 0.00 : 79ed91: 0f 84 51 ff ff ff je 79ece8 0.00 : 79ed97: e8 04 d5 ef ff callq 69c2a0 0.00 : 79ed9c: e9 47 ff ff ff jmpq 79ece8 0.00 : 79eda1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * inaccurate.) : */ : tapeSpace = (int64) maxTapes *TAPE_BUFFER_OVERHEAD; : : if (tapeSpace + GetMemoryChunkSpace(state->memtuples) < state->allowedMem) : USEMEM(state, tapeSpace); 0.00 : 79eda8: 49 29 5c 24 10 sub %rbx,0x10(%r12) 0.00 : 79edad: 0f 1f 00 nopl (%rax) 0.00 : 79edb0: e9 e6 fb ff ff jmpq 79e99b 0.00 : 79edb5: 0f 1f 00 nopl (%rax) : (state->memtupcount > state->bound * 2 || : (state->memtupcount > state->bound && LACKMEM(state)))) : { : #ifdef TRACE_SORT : if (trace_sort) : elog(LOG, "switching to bounded heapsort at %d tuples: %s", 0.00 : 79edb8: ba d0 2e 8e 00 mov $0x8e2ed0,%edx 0.00 : 79edbd: be d7 04 00 00 mov $0x4d7,%esi 0.00 : 79edc2: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79edc7: e8 54 c6 fd ff callq 77b420 0.00 : 79edcc: 49 8d bc 24 48 01 00 lea 0x148(%r12),%rdi 0.00 : 79edd3: 00 0.00 : 79edd4: e8 b7 6c ff ff callq 795a90 0.00 : 79edd9: 41 8b 54 24 68 mov 0x68(%r12),%edx 0.00 : 79edde: 48 89 c1 mov %rax,%rcx 0.00 : 79ede1: be 88 2b 8e 00 mov $0x8e2b88,%esi 0.00 : 79ede6: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 79edeb: 31 c0 xor %eax,%eax 0.00 : 79eded: e8 3e c4 fd ff callq 77b230 0.00 : 79edf2: e9 b6 fe ff ff jmpq 79ecad 0.00 : 79edf7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79edfe: 00 00 : state->maxTapes = maxTapes; : state->tapeRange = maxTapes - 1; : : #ifdef TRACE_SORT : if (trace_sort) : elog(LOG, "switching to external sort with %d tapes: %s", 0.00 : 79ee00: ba ef 2e 8e 00 mov $0x8e2eef,%edx 0.00 : 79ee05: be 3c 07 00 00 mov $0x73c,%esi 0.00 : 79ee0a: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79ee0f: e8 0c c6 fd ff callq 77b420 0.00 : 79ee14: 49 8d bc 24 48 01 00 lea 0x148(%r12),%rdi 0.00 : 79ee1b: 00 0.00 : 79ee1c: e8 6f 6c ff ff callq 795a90 0.00 : 79ee21: 44 89 fa mov %r15d,%edx 0.00 : 79ee24: 48 89 c1 mov %rax,%rcx 0.00 : 79ee27: be b8 2b 8e 00 mov $0x8e2bb8,%esi 0.00 : 79ee2c: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 79ee31: 31 c0 xor %eax,%eax 0.00 : 79ee33: e8 f8 c3 fd ff callq 77b230 0.00 : 79ee38: e9 3a fb ff ff jmpq 79e977 0.00 : 79ee3d: 0f 1f 00 nopl (%rax) : * really bad from happening. : */ : double grow_ratio; : : grow_ratio = (double) state->allowedMem / (double) memNowUsed; : if (memtupsize * grow_ratio < INT_MAX) 0.00 : 79ee40: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 79ee45: bb ff ff ff 7f mov $0x7fffffff,%ebx 0.00 : 79ee4a: f2 48 0f 2a ce cvtsi2sd %rsi,%xmm1 0.00 : 79ee4f: f2 0f 5e c8 divsd %xmm0,%xmm1 0.00 : 79ee53: f2 0f 2a c1 cvtsi2sd %ecx,%xmm0 0.00 : 79ee57: f2 0f 59 c8 mulsd %xmm0,%xmm1 0.00 : 79ee5b: 66 0f 2e 0d b5 24 01 ucomisd 0x124b5(%rip),%xmm1 # 7b1318 <__func__.11700+0x18> 0.00 : 79ee62: 00 0.00 : 79ee63: 73 06 jae 79ee6b 0.00 : 79ee65: 7a 04 jp 79ee6b : newmemtupsize = (int) (memtupsize * grow_ratio); 0.00 : 79ee67: f2 0f 2c d9 cvttsd2si %xmm1,%ebx : else : newmemtupsize = INT_MAX; : : /* We won't make any further enlargement attempts */ : state->growmemtuples = false; 0.00 : 79ee6b: 41 c6 44 24 70 00 movb $0x0,0x70(%r12) 0.00 : 79ee71: e9 c6 fd ff ff jmpq 79ec3c 0.00 : 79ee76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 79ee7d: 00 00 00 : if (memtupsize < INT_MAX / 2) : newmemtupsize = memtupsize * 2; : else : { : newmemtupsize = INT_MAX; : state->growmemtuples = false; 0.00 : 79ee80: 41 c6 44 24 70 00 movb $0x0,0x70(%r12) 0.00 : 79ee86: bb ff ff ff 7f mov $0x7fffffff,%ebx 0.00 : 79ee8b: e9 ac fd ff ff jmpq 79ec3c : */ : if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple))) : goto noalloc; : : /* OK, do it */ : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79ee90: 49 8b 7c 24 60 mov 0x60(%r12),%rdi 0.00 : 79ee95: e8 f6 9b ff ff callq 798a90 : state->memtupsize = newmemtupsize; : state->memtuples = (SortTuple *) 0.00 : 79ee9a: 48 63 f3 movslq %ebx,%rsi 0.00 : 79ee9d: 49 8b 7c 24 60 mov 0x60(%r12),%rdi : */ : if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple))) : goto noalloc; : : /* OK, do it */ : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79eea2: 4c 01 f0 add %r14,%rax : state->memtupsize = newmemtupsize; : state->memtuples = (SortTuple *) 0.00 : 79eea5: 48 8d 34 76 lea (%rsi,%rsi,2),%rsi : if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple))) : goto noalloc; : : /* OK, do it */ : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); : state->memtupsize = newmemtupsize; 0.00 : 79eea9: 41 89 5c 24 6c mov %ebx,0x6c(%r12) : */ : if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple))) : goto noalloc; : : /* OK, do it */ : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79eeae: 49 89 44 24 10 mov %rax,0x10(%r12) : state->memtupsize = newmemtupsize; : state->memtuples = (SortTuple *) 0.00 : 79eeb3: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 79eeb7: e8 74 9d ff ff callq 798c30 : repalloc_huge(state->memtuples, : state->memtupsize * sizeof(SortTuple)); : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79eebc: 49 8b 5c 24 10 mov 0x10(%r12),%rbx : goto noalloc; : : /* OK, do it */ : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); : state->memtupsize = newmemtupsize; : state->memtuples = (SortTuple *) 0.00 : 79eec1: 48 89 c7 mov %rax,%rdi 0.00 : 79eec4: 49 89 44 24 60 mov %rax,0x60(%r12) : repalloc_huge(state->memtuples, : state->memtupsize * sizeof(SortTuple)); : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79eec9: e8 c2 9b ff ff callq 798a90 0.00 : 79eece: 48 29 c3 sub %rax,%rbx : if (LACKMEM(state)) 0.00 : 79eed1: 48 85 db test %rbx,%rbx : FREEMEM(state, GetMemoryChunkSpace(state->memtuples)); : state->memtupsize = newmemtupsize; : state->memtuples = (SortTuple *) : repalloc_huge(state->memtuples, : state->memtupsize * sizeof(SortTuple)); : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); 0.00 : 79eed4: 49 89 5c 24 10 mov %rbx,0x10(%r12) : if (LACKMEM(state)) 0.00 : 79eed9: 78 1a js 79eef5 0.00 : 79eedb: 41 8b 7c 24 68 mov 0x68(%r12),%edi 0.00 : 79eee0: e9 c0 f9 ff ff jmpq 79e8a5 : * don't rely on that at this distance.) : */ : if ((Size) newmemtupsize >= MaxAllocHugeSize / sizeof(SortTuple)) : { : newmemtupsize = (int) (MaxAllocHugeSize / sizeof(SortTuple)); : state->growmemtuples = false; /* can't grow any more */ 0.00 : 79eee5: 41 c6 44 24 70 00 movb $0x0,0x70(%r12) 0.00 : 79eeeb: bb 55 55 55 55 mov $0x55555555,%ebx 0.00 : 79eef0: e9 53 fd ff ff jmpq 79ec48 : state->memtuples = (SortTuple *) : repalloc_huge(state->memtuples, : state->memtupsize * sizeof(SortTuple)); : USEMEM(state, GetMemoryChunkSpace(state->memtuples)); : if (LACKMEM(state)) : elog(ERROR, "unexpected out-of-memory situation during sort"); 0.00 : 79eef5: ba e0 2e 8e 00 mov $0x8e2ee0,%edx 0.00 : 79eefa: be 3b 04 00 00 mov $0x43b,%esi 0.00 : 79eeff: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79ef04: e8 17 c5 fd ff callq 77b420 0.00 : 79ef09: be 58 2b 8e 00 mov $0x8e2b58,%esi 0.00 : 79ef0e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79ef13: 31 c0 xor %eax,%eax 0.00 : 79ef15: e8 16 c3 fd ff callq 77b230 0.00 : 79ef1a: e8 b1 a5 cc ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.82 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 11.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5169 8.13 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 5.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 5.69 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5179 4.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 4.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 4.07 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5167 3.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 3.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 3.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 3.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 3.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5167 3.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5169 3.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 3.25 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 2.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 2.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 2.44 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 1.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 1.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 1.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5167 1.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 1.63 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 0.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5167 0.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005acf10 : : * : * ---------------------------------------------------------------- : */ : bool : ExecQual(List *qual, ExprContext *econtext, bool resultForNull) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 5.69 : 5acf10: 55 push %rbp 0.00 : 5acf11: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5130 2.44 : 5acf14: 41 57 push %r15 0.00 : 5acf16: 41 56 push %r14 0.00 : 5acf18: 41 89 d6 mov %edx,%r14d 0.00 : 5acf1b: 41 55 push %r13 3.25 : 5acf1d: 41 54 push %r12 3.25 : 5acf1f: 49 89 f4 mov %rsi,%r12 0.00 : 5acf22: 53 push %rbx 1.63 : 5acf23: 48 83 ec 18 sub $0x18,%rsp : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 3.25 : 5acf27: 48 8b 46 28 mov 0x28(%rsi),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5acf2b: 48 85 ff test %rdi,%rdi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5acf2e: 4c 8b 3d 2b d9 60 00 mov 0x60d92b(%rip),%r15 # bba860 : : CurrentMemoryContext = context; 1.63 : 5acf35: 48 89 05 24 d9 60 00 mov %rax,0x60d924(%rip) # bba860 0.00 : 5acf3c: 74 4a je 5acf88 0.00 : 5acf3e: 48 8b 5f 08 mov 0x8(%rdi),%rbx : * or more NULL subresult, with all the rest TRUE) and the caller has : * specified resultForNull = TRUE. : */ : result = true; : : foreach(l, qual) 0.00 : 5acf42: 48 85 db test %rbx,%rbx 0.00 : 5acf45: 74 41 je 5acf88 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 4.07 : 5acf47: 4c 8d 6d d7 lea -0x29(%rbp),%r13 0.00 : 5acf4b: eb 11 jmp 5acf5e 0.00 : 5acf4d: 0f 1f 00 nopl (%rax) : : expr_value = ExecEvalExpr(clause, econtext, &isNull, NULL); : : if (isNull) : { : if (resultForNull == false) 0.00 : 5acf50: 45 84 f6 test %r14b,%r14b 0.00 : 5acf53: 74 24 je 5acf79 : * or more NULL subresult, with all the rest TRUE) and the caller has : * specified resultForNull = TRUE. : */ : result = true; : : foreach(l, qual) 4.07 : 5acf55: 48 8b 5b 08 mov 0x8(%rbx),%rbx 3.25 : 5acf59: 48 85 db test %rbx,%rbx 0.00 : 5acf5c: 74 2a je 5acf88 : { : ExprState *clause = (ExprState *) lfirst(l); 0.00 : 5acf5e: 48 8b 03 mov (%rbx),%rax : Datum expr_value; : bool isNull; : : expr_value = ExecEvalExpr(clause, econtext, &isNull, NULL); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5167 1.63 : 5acf61: 31 c9 xor %ecx,%ecx 4.07 : 5acf63: 4c 89 ea mov %r13,%rdx 0.81 : 5acf66: 4c 89 e6 mov %r12,%rsi 0.00 : 5acf69: 48 89 c7 mov %rax,%rdi 3.25 : 5acf6c: ff 50 10 callq *0x10(%rax) : : if (isNull) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5169 3.25 : 5acf6f: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5169 11.38 : 5acf73: 75 db jne 5acf50 : break; : } : } : else : { : if (!DatumGetBool(expr_value)) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5179 5.69 : 5acf75: 84 c0 test %al,%al 0.00 : 5acf77: 75 dc jne 5acf55 : * or more NULL subresult, with all the rest TRUE) and the caller has : * specified resultForNull = TRUE. : */ : result = true; : : foreach(l, qual) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5161 0.81 : 5acf79: 31 c0 xor %eax,%eax 0.00 : 5acf7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 2.44 : 5acf80: eb 0b jmp 5acf8d 0.00 : 5acf82: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5acf88: b8 01 00 00 00 mov $0x1,%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/../../../src/include/utils/palloc.h:95 8.13 : 5acf8d: 4c 89 3d cc d8 60 00 mov %r15,0x60d8cc(%rip) # bba860 : } : : MemoryContextSwitchTo(oldContext); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 13.82 : 5acf94: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 1.63 : 5acf98: 5b pop %rbx 3.25 : 5acf99: 41 5c pop %r12 0.00 : 5acf9b: 41 5d pop %r13 1.63 : 5acf9d: 41 5e pop %r14 0.00 : 5acf9f: 41 5f pop %r15 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:5190 5.69 : 5acfa1: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:924 9.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1012 5.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 5.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 4.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1035 4.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:968 4.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1010 3.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 3.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:924 3.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 3.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 3.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:926 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1013 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:968 2.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1013 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:930 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1099 1.68 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:968 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:949 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1012 0.84 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1012 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a5750 : : * can't see it.) : */ : bool : HeapTupleSatisfiesMVCC(HeapTuple htup, Snapshot snapshot, : Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:918 3.36 : 7a5750: 55 push %rbp 2.52 : 7a5751: 48 89 e5 mov %rsp,%rbp 0.84 : 7a5754: 4c 89 6d f0 mov %r13,-0x10(%rbp) 1.68 : 7a5758: 4c 89 75 f8 mov %r14,-0x8(%rbp) 1.68 : 7a575c: 41 89 d6 mov %edx,%r14d 0.00 : 7a575f: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 7a5763: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 7a5767: 48 83 ec 20 sub $0x20,%rsp : HeapTupleHeader tuple = htup->t_data; 0.00 : 7a576b: 48 8b 5f 10 mov 0x10(%rdi),%rbx : * can't see it.) : */ : bool : HeapTupleSatisfiesMVCC(HeapTuple htup, Snapshot snapshot, : Buffer buffer) : { 0.00 : 7a576f: 49 89 f5 mov %rsi,%r13 : HeapTupleHeader tuple = htup->t_data; : : Assert(ItemPointerIsValid(&htup->t_self)); : Assert(htup->t_tableOid != InvalidOid); : : if (!HeapTupleHeaderXminCommitted(tuple)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:924 3.36 : 7a5772: 0f b7 4b 14 movzwl 0x14(%rbx),%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:924 19.33 : 7a5776: 0f b7 d1 movzwl %cx,%edx 0.00 : 7a5779: f6 c6 01 test $0x1,%dh 0.00 : 7a577c: 75 72 jne 7a57f0 : { : if (HeapTupleHeaderXminInvalid(tuple)) 0.00 : 7a577e: 89 d0 mov %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:926 2.52 : 7a5780: 25 00 03 00 00 and $0x300,%eax 0.00 : 7a5785: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 7a578a: 0f 84 06 01 00 00 je 7a5896 : return false; : : /* Used by pre-9.0 binary upgrades */ : if (tuple->t_infomask & HEAP_MOVED_OFF) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:930 1.68 : 7a5790: f6 c6 40 test $0x40,%dh 0.00 : 7a5793: 0f 84 27 01 00 00 je 7a58c0 : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); 0.00 : 7a5799: 45 31 e4 xor %r12d,%r12d 0.00 : 7a579c: 66 f7 c2 00 c0 test $0xc000,%dx 0.00 : 7a57a1: 74 04 je 7a57a7 0.00 : 7a57a3: 44 8b 63 08 mov 0x8(%rbx),%r12d : : if (TransactionIdIsCurrentTransactionId(xvac)) 0.00 : 7a57a7: 44 89 e7 mov %r12d,%edi 0.00 : 7a57aa: e8 f1 ec d1 ff callq 4c44a0 0.00 : 7a57af: 84 c0 test %al,%al 0.00 : 7a57b1: 0f 85 df 00 00 00 jne 7a5896 : return false; : if (!TransactionIdIsInProgress(xvac)) 0.00 : 7a57b7: 44 89 e7 mov %r12d,%edi 0.00 : 7a57ba: e8 f1 c4 ed ff callq 681cb0 0.00 : 7a57bf: 84 c0 test %al,%al 0.00 : 7a57c1: 0f 85 1f 01 00 00 jne 7a58e6 : { : if (TransactionIdDidCommit(xvac)) 0.00 : 7a57c7: 44 89 e7 mov %r12d,%edi 0.00 : 7a57ca: e8 11 ab d1 ff callq 4c02e0 0.00 : 7a57cf: 84 c0 test %al,%al 0.00 : 7a57d1: 0f 85 79 02 00 00 jne 7a5a50 : if (!TransactionIdIsCurrentTransactionId(xvac)) : { : if (TransactionIdIsInProgress(xvac)) : return false; : if (TransactionIdDidCommit(xvac)) : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, 0.00 : 7a57d7: ba 00 01 00 00 mov $0x100,%edx 0.00 : 7a57dc: 31 c9 xor %ecx,%ecx 0.00 : 7a57de: 44 89 f6 mov %r14d,%esi 0.00 : 7a57e1: 48 89 df mov %rbx,%rdi 0.00 : 7a57e4: e8 b7 f2 ff ff callq 7a4aa0 0.00 : 7a57e9: 0f b7 53 14 movzwl 0x14(%rbx),%edx 0.00 : 7a57ed: 0f 1f 00 nopl (%rax) : : /* : * By here, the inserting transaction has committed - have to check : * when... : */ : if (!HeapTupleHeaderXminFrozen(tuple) 0.00 : 7a57f0: 89 d0 mov %edx,%eax 0.00 : 7a57f2: 25 00 03 00 00 and $0x300,%eax 0.00 : 7a57f7: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 7a57fc: 0f 85 86 00 00 00 jne 7a5888 : return false; /* treat as still in progress */ : : if (tuple->t_infomask & HEAP_XMAX_INVALID) /* xid invalid or aborted */ : return true; : : if (HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1035 4.20 : 7a5802: f7 c2 80 08 00 00 test $0x880,%edx 0.00 : 7a5808: 0f 85 a2 00 00 00 jne 7a58b0 0.00 : 7a580e: 89 d0 mov %edx,%eax 0.00 : 7a5810: 25 50 10 00 00 and $0x1050,%eax 0.00 : 7a5815: 83 f8 40 cmp $0x40,%eax 0.00 : 7a5818: 0f 84 92 00 00 00 je 7a58b0 : return true; : : if (tuple->t_infomask & HEAP_XMAX_IS_MULTI) 0.00 : 7a581e: f6 c6 10 test $0x10,%dh 0.00 : 7a5821: 0f 85 b9 01 00 00 jne 7a59e0 : } : /* it must have aborted or crashed */ : return true; : } : : if (!(tuple->t_infomask & HEAP_XMAX_COMMITTED)) 0.00 : 7a5827: 80 e6 04 and $0x4,%dh 0.00 : 7a582a: 75 44 jne 7a5870 : { : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a582c: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 7a582f: 90 nop 0.00 : 7a5830: e8 6b ec d1 ff callq 4c44a0 0.00 : 7a5835: 84 c0 test %al,%al 0.00 : 7a5837: 0f 85 43 01 00 00 jne 7a5980 : return true; /* deleted after scan started */ : else : return false; /* deleted before scan started */ : } : : if (TransactionIdIsInProgress(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a583d: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 7a5840: e8 6b c4 ed ff callq 681cb0 0.00 : 7a5845: 84 c0 test %al,%al 0.00 : 7a5847: 75 67 jne 7a58b0 : return true; : : if (!TransactionIdDidCommit(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a5849: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 7a584c: e8 8f aa d1 ff callq 4c02e0 0.00 : 7a5851: 84 c0 test %al,%al 0.00 : 7a5853: 0f 84 20 02 00 00 je 7a5a79 : InvalidTransactionId); : return true; : } : : /* xmax transaction committed */ : SetHintBits(tuple, buffer, HEAP_XMAX_COMMITTED, 0.00 : 7a5859: 8b 4b 04 mov 0x4(%rbx),%ecx 0.00 : 7a585c: ba 00 04 00 00 mov $0x400,%edx 0.00 : 7a5861: 44 89 f6 mov %r14d,%esi 0.00 : 7a5864: 48 89 df mov %rbx,%rdi 0.00 : 7a5867: e8 34 f2 ff ff callq 7a4aa0 0.00 : 7a586c: 0f 1f 40 00 nopl 0x0(%rax) : } : : /* : * OK, the deleting transaction committed too ... but when? : */ : if (XidInMVCCSnapshot(HeapTupleHeaderGetRawXmax(tuple), snapshot)) 0.00 : 7a5870: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 7a5873: 4c 89 ee mov %r13,%rsi 0.00 : 7a5876: e8 85 fd ff ff callq 7a5600 0.00 : 7a587b: 84 c0 test %al,%al 0.00 : 7a587d: 0f 95 c0 setne %al 0.00 : 7a5880: eb 16 jmp 7a5898 0.00 : 7a5882: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * By here, the inserting transaction has committed - have to check : * when... : */ : if (!HeapTupleHeaderXminFrozen(tuple) 0.00 : 7a5888: 8b 3b mov (%rbx),%edi 0.00 : 7a588a: 4c 89 ee mov %r13,%rsi 0.00 : 7a588d: e8 6e fd ff ff callq 7a5600 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 3.36 : 7a5892: 84 c0 test %al,%al 0.00 : 7a5894: 74 6a je 7a5900 : } : : /* : * OK, the deleting transaction committed too ... but when? : */ : if (XidInMVCCSnapshot(HeapTupleHeaderGetRawXmax(tuple), snapshot)) 0.00 : 7a5896: 31 c0 xor %eax,%eax : return true; /* treat as still in progress */ : : return false; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 2.52 : 7a5898: 48 8b 1c 24 mov (%rsp),%rbx 1.68 : 7a589c: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 7a58a1: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 5.04 : 7a58a6: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 7a58ab: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1103 3.36 : 7a58ac: c3 retq 0.00 : 7a58ad: 0f 1f 00 nopl (%rax) : } : : /* : * OK, the deleting transaction committed too ... but when? : */ : if (XidInMVCCSnapshot(HeapTupleHeaderGetRawXmax(tuple), snapshot)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1099 1.68 : 7a58b0: b8 01 00 00 00 mov $0x1,%eax 0.00 : 7a58b5: eb e1 jmp 7a5898 0.00 : 7a58b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a58be: 00 00 : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, : InvalidTransactionId); : } : } : /* Used by pre-9.0 binary upgrades */ : else if (tuple->t_infomask & HEAP_MOVED_IN) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:949 0.84 : 7a58c0: 66 85 c9 test %cx,%cx 0.00 : 7a58c3: 79 4b jns 7a5910 : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); 0.00 : 7a58c5: 45 31 e4 xor %r12d,%r12d 0.00 : 7a58c8: 66 f7 c2 00 c0 test $0xc000,%dx 0.00 : 7a58cd: 0f 1f 00 nopl (%rax) 0.00 : 7a58d0: 0f 85 fa 00 00 00 jne 7a59d0 : : if (!TransactionIdIsCurrentTransactionId(xvac)) 0.00 : 7a58d6: 44 89 e7 mov %r12d,%edi 0.00 : 7a58d9: e8 c2 eb d1 ff callq 4c44a0 0.00 : 7a58de: 84 c0 test %al,%al 0.00 : 7a58e0: 0f 84 4a 01 00 00 je 7a5a30 : return false; /* deleted before scan started */ : } : else if (TransactionIdIsInProgress(HeapTupleHeaderGetRawXmin(tuple))) : return false; : else if (TransactionIdDidCommit(HeapTupleHeaderGetRawXmin(tuple))) : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1013 2.52 : 7a58e6: 0f b7 53 14 movzwl 0x14(%rbx),%edx : : /* : * By here, the inserting transaction has committed - have to check : * when... : */ : if (!HeapTupleHeaderXminFrozen(tuple) 0.00 : 7a58ea: 89 d0 mov %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 2.52 : 7a58ec: 25 00 03 00 00 and $0x300,%eax 0.84 : 7a58f1: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 7a58f6: 0f 84 06 ff ff ff je 7a5802 3.36 : 7a58fc: eb 8a jmp 7a5888 0.00 : 7a58fe: 66 90 xchg %ax,%ax /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1028 5.04 : 7a5900: 0f b7 53 14 movzwl 0x14(%rbx),%edx 0.00 : 7a5904: e9 f9 fe ff ff jmpq 7a5802 0.00 : 7a5909: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : InvalidTransactionId); : return false; : } : } : } : else if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetRawXmin(tuple))) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:968 4.20 : 7a5910: 8b 3b mov (%rbx),%edi 2.52 : 7a5912: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a5918: e8 83 eb d1 ff callq 4c44a0 0.00 : 7a591d: 84 c0 test %al,%al 0.00 : 7a591f: 90 nop 1.68 : 7a5920: 74 76 je 7a5998 : { : if (HeapTupleHeaderGetCmin(tuple) >= snapshot->curcid) 0.00 : 7a5922: 48 89 df mov %rbx,%rdi 0.00 : 7a5925: e8 96 eb ff ff callq 7a44c0 0.00 : 7a592a: 41 3b 45 2c cmp 0x2c(%r13),%eax 0.00 : 7a592e: 66 90 xchg %ax,%ax 0.00 : 7a5930: 0f 83 60 ff ff ff jae 7a5896 : return false; /* inserted after scan started */ : : if (tuple->t_infomask & HEAP_XMAX_INVALID) /* xid invalid */ 0.00 : 7a5936: 0f b7 53 14 movzwl 0x14(%rbx),%edx : return true; : : if (HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)) /* not deleter */ 0.00 : 7a593a: f7 c2 80 08 00 00 test $0x880,%edx 0.00 : 7a5940: 0f 85 6a ff ff ff jne 7a58b0 0.00 : 7a5946: 89 d0 mov %edx,%eax 0.00 : 7a5948: 25 50 10 00 00 and $0x1050,%eax 0.00 : 7a594d: 83 f8 40 cmp $0x40,%eax 0.00 : 7a5950: 0f 84 5a ff ff ff je 7a58b0 : return true; : : if (tuple->t_infomask & HEAP_XMAX_IS_MULTI) 0.00 : 7a5956: 80 e6 10 and $0x10,%dh 0.00 : 7a5959: 0f 84 0a 01 00 00 je 7a5a69 : { : TransactionId xmax; : : xmax = HeapTupleGetUpdateXid(tuple); 0.00 : 7a595f: 48 89 df mov %rbx,%rdi 0.00 : 7a5962: e8 b9 17 cf ff callq 497120 0.00 : 7a5967: 89 c7 mov %eax,%edi : : /* not LOCKED_ONLY, so it has to have an xmax */ : Assert(TransactionIdIsValid(xmax)); : : /* updating subtransaction must have aborted */ : if (!TransactionIdIsCurrentTransactionId(xmax)) 0.00 : 7a5969: e8 32 eb d1 ff callq 4c44a0 0.00 : 7a596e: 84 c0 test %al,%al 0.00 : 7a5970: 0f 84 3a ff ff ff je 7a58b0 0.00 : 7a5976: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7a597d: 00 00 00 : : if (!(tuple->t_infomask & HEAP_XMAX_COMMITTED)) : { : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetRawXmax(tuple))) : { : if (HeapTupleHeaderGetCmax(tuple) >= snapshot->curcid) 0.00 : 7a5980: 48 89 df mov %rbx,%rdi 0.00 : 7a5983: e8 58 eb ff ff callq 7a44e0 0.00 : 7a5988: 41 3b 45 2c cmp 0x2c(%r13),%eax 0.00 : 7a598c: 0f 93 c0 setae %al 0.00 : 7a598f: e9 04 ff ff ff jmpq 7a5898 0.00 : 7a5994: 0f 1f 40 00 nopl 0x0(%rax) : if (HeapTupleHeaderGetCmax(tuple) >= snapshot->curcid) : return true; /* deleted after scan started */ : else : return false; /* deleted before scan started */ : } : else if (TransactionIdIsInProgress(HeapTupleHeaderGetRawXmin(tuple))) 0.00 : 7a5998: 8b 3b mov (%rbx),%edi 0.00 : 7a599a: e8 11 c3 ed ff callq 681cb0 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1010 4.20 : 7a599f: 84 c0 test %al,%al 0.00 : 7a59a1: 0f 85 ef fe ff ff jne 7a5896 : return false; : else if (TransactionIdDidCommit(HeapTupleHeaderGetRawXmin(tuple))) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1012 0.84 : 7a59a7: 8b 3b mov (%rbx),%edi 0.84 : 7a59a9: e8 32 a9 d1 ff callq 4c02e0 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1012 9.24 : 7a59ae: 84 c0 test %al,%al 0.00 : 7a59b0: 0f 84 9a 00 00 00 je 7a5a50 : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, 0.00 : 7a59b6: 8b 0b mov (%rbx),%ecx 0.00 : 7a59b8: ba 00 01 00 00 mov $0x100,%edx 0.00 : 7a59bd: 44 89 f6 mov %r14d,%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1013 2.52 : 7a59c0: 48 89 df mov %rbx,%rdi 0.00 : 7a59c3: e8 d8 f0 ff ff callq 7a4aa0 0.00 : 7a59c8: e9 19 ff ff ff jmpq 7a58e6 0.00 : 7a59cd: 0f 1f 00 nopl (%rax) : } : } : /* Used by pre-9.0 binary upgrades */ : else if (tuple->t_infomask & HEAP_MOVED_IN) : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); 0.00 : 7a59d0: 44 8b 63 08 mov 0x8(%rbx),%r12d 0.00 : 7a59d4: e9 fd fe ff ff jmpq 7a58d6 0.00 : 7a59d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : TransactionId xmax; : : /* already checked above */ : Assert(!HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)); : : xmax = HeapTupleGetUpdateXid(tuple); 0.00 : 7a59e0: 48 89 df mov %rbx,%rdi 0.00 : 7a59e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a59e8: e8 33 17 cf ff callq 497120 : : /* not LOCKED_ONLY, so it has to have an xmax */ : Assert(TransactionIdIsValid(xmax)); : : if (TransactionIdIsCurrentTransactionId(xmax)) 0.00 : 7a59ed: 89 c7 mov %eax,%edi : TransactionId xmax; : : /* already checked above */ : Assert(!HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask)); : : xmax = HeapTupleGetUpdateXid(tuple); 0.00 : 7a59ef: 41 89 c4 mov %eax,%r12d : : /* not LOCKED_ONLY, so it has to have an xmax */ : Assert(TransactionIdIsValid(xmax)); : : if (TransactionIdIsCurrentTransactionId(xmax)) 0.00 : 7a59f2: e8 a9 ea d1 ff callq 4c44a0 0.00 : 7a59f7: 84 c0 test %al,%al 0.00 : 7a59f9: 75 85 jne 7a5980 : if (HeapTupleHeaderGetCmax(tuple) >= snapshot->curcid) : return true; /* deleted after scan started */ : else : return false; /* deleted before scan started */ : } : if (TransactionIdIsInProgress(xmax)) 0.00 : 7a59fb: 44 89 e7 mov %r12d,%edi 0.00 : 7a59fe: e8 ad c2 ed ff callq 681cb0 0.00 : 7a5a03: 84 c0 test %al,%al 0.00 : 7a5a05: 0f 85 a5 fe ff ff jne 7a58b0 : return true; : if (TransactionIdDidCommit(xmax)) 0.00 : 7a5a0b: 44 89 e7 mov %r12d,%edi 0.00 : 7a5a0e: e8 cd a8 d1 ff callq 4c02e0 0.00 : 7a5a13: 84 c0 test %al,%al 0.00 : 7a5a15: 0f 84 95 fe ff ff je 7a58b0 : { : /* updating transaction committed, but when? */ : if (XidInMVCCSnapshot(xmax, snapshot)) 0.00 : 7a5a1b: 4c 89 ee mov %r13,%rsi 0.00 : 7a5a1e: 44 89 e7 mov %r12d,%edi 0.00 : 7a5a21: e8 da fb ff ff callq 7a5600 0.00 : 7a5a26: 84 c0 test %al,%al 0.00 : 7a5a28: 0f 95 c0 setne %al 0.00 : 7a5a2b: e9 68 fe ff ff jmpq 7a5898 : { : TransactionId xvac = HeapTupleHeaderGetXvac(tuple); : : if (!TransactionIdIsCurrentTransactionId(xvac)) : { : if (TransactionIdIsInProgress(xvac)) 0.00 : 7a5a30: 44 89 e7 mov %r12d,%edi 0.00 : 7a5a33: e8 78 c2 ed ff callq 681cb0 0.00 : 7a5a38: 84 c0 test %al,%al 0.00 : 7a5a3a: 0f 85 56 fe ff ff jne 7a5896 : return false; : if (TransactionIdDidCommit(xvac)) 0.00 : 7a5a40: 44 89 e7 mov %r12d,%edi 0.00 : 7a5a43: e8 98 a8 d1 ff callq 4c02e0 0.00 : 7a5a48: 84 c0 test %al,%al 0.00 : 7a5a4a: 0f 85 87 fd ff ff jne 7a57d7 : SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED, : HeapTupleHeaderGetRawXmin(tuple)); : else : { : /* it must have aborted or crashed */ : SetHintBits(tuple, buffer, HEAP_XMIN_INVALID, 0.00 : 7a5a50: 31 c9 xor %ecx,%ecx 0.00 : 7a5a52: ba 00 02 00 00 mov $0x200,%edx 0.00 : 7a5a57: 44 89 f6 mov %r14d,%esi 0.00 : 7a5a5a: 48 89 df mov %rbx,%rdi 0.00 : 7a5a5d: e8 3e f0 ff ff callq 7a4aa0 0.00 : 7a5a62: 31 c0 xor %eax,%eax : */ : if (XidInMVCCSnapshot(HeapTupleHeaderGetRawXmax(tuple), snapshot)) : return true; /* treat as still in progress */ : : return false; : } 0.00 : 7a5a64: e9 2f fe ff ff jmpq 7a5898 : return true; /* updated after scan started */ : else : return false; /* updated before scan started */ : } : : if (!TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetRawXmax(tuple))) 0.00 : 7a5a69: 8b 7b 04 mov 0x4(%rbx),%edi 0.00 : 7a5a6c: e8 2f ea d1 ff callq 4c44a0 0.00 : 7a5a71: 84 c0 test %al,%al 0.00 : 7a5a73: 0f 85 07 ff ff ff jne 7a5980 : return true; : : if (!TransactionIdDidCommit(HeapTupleHeaderGetRawXmax(tuple))) : { : /* it must have aborted or crashed */ : SetHintBits(tuple, buffer, HEAP_XMAX_INVALID, 0.00 : 7a5a79: 31 c9 xor %ecx,%ecx 0.00 : 7a5a7b: ba 00 08 00 00 mov $0x800,%edx 0.00 : 7a5a80: 44 89 f6 mov %r14d,%esi 0.00 : 7a5a83: 48 89 df mov %rbx,%rdi 0.00 : 7a5a86: e8 15 f0 ff ff callq 7a4aa0 0.00 : 7a5a8b: b8 01 00 00 00 mov $0x1,%eax : */ : if (XidInMVCCSnapshot(HeapTupleHeaderGetRawXmax(tuple), snapshot)) : return true; /* treat as still in progress */ : : return false; : } 0.00 : 7a5a90: e9 03 fe ff ff jmpq 7a5898 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 13.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 12.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 6.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 6.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 5.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 5.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:699 5.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 4.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 4.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:696 4.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 3.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 2.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 0.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:699 0.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798d50 : : return ret; : } : : void * : palloc(Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 2.54 : 798d50: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 6.78 : 798d51: 48 89 e5 mov %rsp,%rbp 5.93 : 798d54: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:689 4.24 : 798d55: 48 89 fb mov %rdi,%rbx 0.00 : 798d58: 48 83 ec 08 sub $0x8,%rsp : void *ret; : : AssertArg(MemoryContextIsValid(CurrentMemoryContext)); : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:696 4.24 : 798d5c: 48 81 ff ff ff ff 3f cmp $0x3fffffff,%rdi 0.00 : 798d63: 77 25 ja 798d8a : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:699 5.93 : 798d65: 48 8b 05 f4 1a 42 00 mov 0x421af4(%rip),%rax # bba860 : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 5.08 : 798d6c: 48 89 de mov %rbx,%rsi : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:699 0.85 : 798d6f: c6 40 30 00 movb $0x0,0x30(%rax) : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 13.56 : 798d73: 48 8b 3d e6 1a 42 00 mov 0x421ae6(%rip),%rdi # bba860 6.78 : 798d7a: 48 8b 47 08 mov 0x8(%rdi),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 4.24 : 798d7e: 4c 8b 18 mov (%rax),%r11 : VALGRIND_MEMPOOL_ALLOC(CurrentMemoryContext, ret, size); : : return ret; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 22.88 : 798d81: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:705 3.39 : 798d85: 5b pop %rbx 0.85 : 798d86: c9 leaveq : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : CurrentMemoryContext->isReset = false; : : ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:701 12.71 : 798d87: 41 ff e3 jmpq *%r11 : : AssertArg(MemoryContextIsValid(CurrentMemoryContext)); : AssertNotInCriticalSection(CurrentMemoryContext); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); 0.00 : 798d8a: ba 18 20 8e 00 mov $0x8e2018,%edx 0.00 : 798d8f: be b9 02 00 00 mov $0x2b9,%esi 0.00 : 798d94: bf 8e 1f 8e 00 mov $0x8e1f8e,%edi 0.00 : 798d99: e8 82 26 fe ff callq 77b420 0.00 : 798d9e: 48 89 da mov %rbx,%rdx 0.00 : 798da1: be b8 1f 8e 00 mov $0x8e1fb8,%esi 0.00 : 798da6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 798dab: 31 c0 xor %eax,%eax 0.00 : 798dad: e8 7e 24 fe ff callq 77b230 0.00 : 798db2: e8 19 07 cd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.66 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:810 17.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:822 11.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:822 10.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:822 10.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:822 7.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:806 5.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:810 4.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:806 4.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:806 4.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:806 3.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:806 1.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:822 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000788a80 : : /* returns the length (counted in wchars) of a multibyte string : * (not necessarily NULL terminated) : */ : int : pg_mbstrlen_with_len(const char *mbstr, int limit) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:806 4.27 : 788a80: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:806 7.69 : 788a81: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:806 3.42 : 788a84: 41 55 push %r13 0.00 : 788a86: 41 54 push %r12 4.27 : 788a88: 49 89 fc mov %rdi,%r12 0.00 : 788a8b: 53 push %rbx 4.27 : 788a8c: 89 f3 mov %esi,%ebx 0.00 : 788a8e: 48 83 ec 08 sub $0x8,%rsp : int len = 0; : : /* optimization for single byte encoding */ : if (pg_database_encoding_max_length() == 1) /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:810 5.13 : 788a92: e8 f9 2d 00 00 callq 78b890 19.66 : 788a97: 83 e8 01 sub $0x1,%eax 0.00 : 788a9a: 74 49 je 788ae5 : return limit; : : while (limit > 0 && *mbstr) 0.00 : 788a9c: 85 db test %ebx,%ebx 0.00 : 788a9e: 7e 52 jle 788af2 0.00 : 788aa0: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 788aa5: 74 4b je 788af2 0.00 : 788aa7: 45 31 ed xor %r13d,%r13d 0.00 : 788aaa: eb 10 jmp 788abc 0.00 : 788aac: 0f 1f 40 00 nopl 0x0(%rax) : { : int l = pg_mblen(mbstr); : : limit -= l; : mbstr += l; 0.00 : 788ab0: 48 98 cltq 0.00 : 788ab2: 49 01 c4 add %rax,%r12 : : /* optimization for single byte encoding */ : if (pg_database_encoding_max_length() == 1) : return limit; : : while (limit > 0 && *mbstr) 0.00 : 788ab5: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 788aba: 74 26 je 788ae2 : : /* returns the byte length of a multibyte character */ : int : pg_mblen(const char *mbstr) : { : return ((*pg_wchar_table[DatabaseEncoding->encoding].mblen) ((const unsigned char *) mbstr)); 0.00 : 788abc: 48 8b 05 8d 00 3e 00 mov 0x3e008d(%rip),%rax # b68b50 0.00 : 788ac3: 4c 89 e7 mov %r12,%rdi : { : int l = pg_mblen(mbstr); : : limit -= l; : mbstr += l; : len++; 0.00 : 788ac6: 41 83 c5 01 add $0x1,%r13d : : /* returns the byte length of a multibyte character */ : int : pg_mblen(const char *mbstr) : { : return ((*pg_wchar_table[DatabaseEncoding->encoding].mblen) ((const unsigned char *) mbstr)); 0.00 : 788aca: 8b 40 08 mov 0x8(%rax),%eax 0.00 : 788acd: 48 8d 44 40 01 lea 0x1(%rax,%rax,2),%rax 0.00 : 788ad2: 48 c1 e0 04 shl $0x4,%rax 0.00 : 788ad6: ff 90 60 7d 8d 00 callq *0x8d7d60(%rax) : : while (limit > 0 && *mbstr) : { : int l = pg_mblen(mbstr); : : limit -= l; 0.00 : 788adc: 29 c3 sub %eax,%ebx : : /* optimization for single byte encoding */ : if (pg_database_encoding_max_length() == 1) : return limit; : : while (limit > 0 && *mbstr) 0.00 : 788ade: 85 db test %ebx,%ebx 0.00 : 788ae0: 7f ce jg 788ab0 0.00 : 788ae2: 44 89 eb mov %r13d,%ebx : limit -= l; : mbstr += l; : len++; : } : return len; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:822 11.97 : 788ae5: 48 83 c4 08 add $0x8,%rsp 0.00 : 788ae9: 89 d8 mov %ebx,%eax 0.00 : 788aeb: 5b pop %rbx 10.26 : 788aec: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:822 1.71 : 788aee: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:822 10.26 : 788af0: c9 leaveq 17.09 : 788af1: c3 retq : : /* optimization for single byte encoding */ : if (pg_database_encoding_max_length() == 1) : return limit; : : while (limit > 0 && *mbstr) 0.00 : 788af2: 31 db xor %ebx,%ebx 0.00 : 788af4: eb ef jmp 788ae5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 8.62 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:864 5.17 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:881 5.17 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:871 5.17 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:766 5.17 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 4.31 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 4.31 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:866 4.31 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:871 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:881 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:909 3.45 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:774 2.59 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 2.59 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:745 2.59 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 2.59 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 2.59 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:872 2.59 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 1.72 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:732 1.72 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:745 1.72 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:877 1.72 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:957 1.72 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:770 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:731 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:872 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:960 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:747 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:770 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:770 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:770 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:774 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 0.86 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004960f0 : : static void : heapgettup_pagemode(HeapScanDesc scan, : ScanDirection dir, : int nkeys, : ScanKey key) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 3.45 : 4960f0: 55 push %rbp : HeapTuple tuple = &(scan->rs_ctup); 0.00 : 4960f1: 48 8d 47 48 lea 0x48(%rdi),%rax : static void : heapgettup_pagemode(HeapScanDesc scan, : ScanDirection dir, : int nkeys, : ScanKey key) : { 0.00 : 4960f5: 48 89 e5 mov %rsp,%rbp 3.45 : 4960f8: 41 57 push %r15 0.86 : 4960fa: 41 56 push %r14 0.00 : 4960fc: 41 55 push %r13 4.31 : 4960fe: 49 89 fd mov %rdi,%r13 0.86 : 496101: 41 54 push %r12 0.00 : 496103: 53 push %rbx 2.59 : 496104: 48 83 ec 48 sub $0x48,%rsp : HeapTuple tuple = &(scan->rs_ctup); : bool backward = ScanDirectionIsBackward(dir); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:732 1.72 : 496108: 83 fe ff cmp $0xffffffff,%esi : static void : heapgettup_pagemode(HeapScanDesc scan, : ScanDirection dir, : int nkeys, : ScanKey key) : { 0.00 : 49610b: 89 55 ac mov %edx,-0x54(%rbp) : HeapTuple tuple = &(scan->rs_ctup); : bool backward = ScanDirectionIsBackward(dir); 0.00 : 49610e: 0f 94 45 bf sete -0x41(%rbp) : ItemId lpp; : : /* : * calculate next starting lineindex, given scan direction : */ : if (ScanDirectionIsForward(dir)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:745 1.72 : 496112: 83 ee 01 sub $0x1,%esi : static void : heapgettup_pagemode(HeapScanDesc scan, : ScanDirection dir, : int nkeys, : ScanKey key) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:730 0.86 : 496115: 48 89 4d a0 mov %rcx,-0x60(%rbp) : HeapTuple tuple = &(scan->rs_ctup); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:731 0.86 : 496119: 48 89 45 b0 mov %rax,-0x50(%rbp) : ItemId lpp; : : /* : * calculate next starting lineindex, given scan direction : */ : if (ScanDirectionIsForward(dir)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:745 2.59 : 49611d: 0f 84 fd 02 00 00 je 496420 : lines = scan->rs_ntuples; : /* page and lineindex now reference the next visible tid */ : : linesleft = lines - lineindex; : } : else if (backward) 0.00 : 496123: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 0.00 : 496127: 0f 84 67 02 00 00 je 496394 : { : if (!scan->rs_inited) 0.00 : 49612d: 80 7f 41 00 cmpb $0x0,0x41(%rdi) 0.00 : 496131: 0f 84 2a 03 00 00 je 496461 : heapgetpage(scan, page); : } : else : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ 0.00 : 496137: 44 8b 7f 60 mov 0x60(%rdi),%r15d : } : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 49613b: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 49613f: 85 c0 test %eax,%eax 0.00 : 496141: 0f 88 24 05 00 00 js 49666b 0.00 : 496147: 83 e8 01 sub $0x1,%eax 0.00 : 49614a: 4c 63 f0 movslq %eax,%r14 0.00 : 49614d: 49 c1 e6 0d shl $0xd,%r14 0.00 : 496151: 4c 03 35 a0 99 72 00 add 0x7299a0(%rip),%r14 # bbfaf8 : lines = scan->rs_ntuples; : : if (!scan->rs_inited) 0.00 : 496158: 41 80 7d 41 00 cmpb $0x0,0x41(%r13) : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ : } : : dp = (Page) BufferGetPage(scan->rs_cbuf); : lines = scan->rs_ntuples; 0.00 : 49615d: 41 8b 45 78 mov 0x78(%r13),%eax : : if (!scan->rs_inited) 0.00 : 496161: 0f 85 c6 04 00 00 jne 49662d : { : lineindex = lines - 1; 0.00 : 496167: 83 e8 01 sub $0x1,%eax 0.00 : 49616a: 89 45 c0 mov %eax,-0x40(%rbp) : scan->rs_inited = true; 0.00 : 49616d: 41 c6 45 41 01 movb $0x1,0x41(%r13) : { : lineindex = scan->rs_cindex - 1; : } : /* page and lineindex now reference the previous visible tid */ : : linesleft = lineindex + 1; 0.00 : 496172: 8b 55 c0 mov -0x40(%rbp),%edx 0.00 : 496175: 83 c2 01 add $0x1,%edx 0.00 : 496178: 89 55 c4 mov %edx,-0x3c(%rbp) : */ : if (key != NULL) : { : bool valid; : : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 49617b: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 49617e: 83 ea 01 sub $0x1,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:881 5.17 : 496181: 89 55 9c mov %edx,-0x64(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:881 3.45 : 496184: 0f 1f 40 00 nopl 0x0(%rax) : * advance the scan until we find a qualifying tuple or run out of stuff : * to scan : */ : for (;;) : { : while (linesleft > 0) 0.00 : 496188: 44 8b 45 c4 mov -0x3c(%rbp),%r8d /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:864 8.62 : 49618c: 45 85 c0 test %r8d,%r8d 0.00 : 49618f: 0f 8e 6b 01 00 00 jle 496300 : { : lineoff = scan->rs_vistuples[lineindex]; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:866 4.31 : 496195: 48 63 45 c0 movslq -0x40(%rbp),%rax 0.00 : 496199: 41 0f b7 4c 45 7c movzwl 0x7c(%r13,%rax,2),%ecx : lpp = PageGetItemId(dp, lineoff); 0.00 : 49619f: 0f b7 d1 movzwl %cx,%edx : Assert(ItemIdIsNormal(lpp)); : : tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:870 0.86 : 4961a2: 48 83 c2 03 add $0x3,%rdx 2.59 : 4961a6: 41 0f b7 44 96 08 movzwl 0x8(%r14,%rdx,4),%eax 2.59 : 4961ac: 25 ff 7f 00 00 and $0x7fff,%eax 3.45 : 4961b1: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.86 : 4961b5: 49 89 45 58 mov %rax,0x58(%r13) : tuple->t_len = ItemIdGetLength(lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:871 4.31 : 4961b9: 41 0f b7 44 96 0a movzwl 0xa(%r14,%rdx,4),%eax : ItemPointerSet(&(tuple->t_self), page, lineoff); 0.00 : 4961bf: 66 45 89 7d 4e mov %r15w,0x4e(%r13) 0.00 : 4961c4: 66 41 89 4d 50 mov %cx,0x50(%r13) : lineoff = scan->rs_vistuples[lineindex]; : lpp = PageGetItemId(dp, lineoff); : Assert(ItemIdIsNormal(lpp)); : : tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : tuple->t_len = ItemIdGetLength(lpp); 0.00 : 4961c9: 66 d1 e8 shr %ax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:871 5.17 : 4961cc: 0f b7 c0 movzwl %ax,%eax 0.00 : 4961cf: 41 89 45 48 mov %eax,0x48(%r13) : ItemPointerSet(&(tuple->t_self), page, lineoff); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:872 0.86 : 4961d3: 44 89 f8 mov %r15d,%eax 0.00 : 4961d6: c1 e8 10 shr $0x10,%eax 2.59 : 4961d9: 66 41 89 45 4c mov %ax,0x4c(%r13) : : /* : * if current tuple qualifies, return it. : */ : if (key != NULL) 0.00 : 4961de: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:877 1.72 : 4961e3: 0f 84 87 03 00 00 je 496570 : { : bool valid; : : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 4961e9: 44 8b 4d ac mov -0x54(%rbp),%r9d 0.00 : 4961ed: 45 85 c9 test %r9d,%r9d 0.00 : 4961f0: 0f 84 7a 03 00 00 je 496570 0.00 : 4961f6: 48 8b 5d a0 mov -0x60(%rbp),%rbx 0.00 : 4961fa: 44 8b 65 9c mov -0x64(%rbp),%r12d 0.00 : 4961fe: f6 03 01 testb $0x1,(%rbx) 0.00 : 496201: 0f 84 a3 00 00 00 je 4962aa 0.00 : 496207: e9 c7 00 00 00 jmpq 4962d3 0.00 : 49620c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 496210: c6 45 d7 00 movb $0x0,-0x29(%rbp) 0.00 : 496214: f6 47 14 01 testb $0x1,0x14(%rdi) 0.00 : 496218: 0f 85 9a 02 00 00 jne 4964b8 0.00 : 49621e: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 496222: 48 0f bf d1 movswq %cx,%rdx 0.00 : 496226: 4c 8b 40 38 mov 0x38(%rax),%r8 0.00 : 49622a: 49 8b 40 08 mov 0x8(%r8),%rax 0.00 : 49622e: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 496233: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 496236: 85 c0 test %eax,%eax 0.00 : 496238: 0f 88 02 03 00 00 js 496540 0.00 : 49623e: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 496242: 0f 84 d8 02 00 00 je 496520 0.00 : 496248: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 49624c: 66 83 fa 08 cmp $0x8,%dx 0.00 : 496250: 0f 84 02 03 00 00 je 496558 0.00 : 496256: 66 83 fa 04 cmp $0x4,%dx 0.00 : 49625a: 0f 84 88 03 00 00 je 4965e8 0.00 : 496260: 66 83 fa 02 cmp $0x2,%dx 0.00 : 496264: 0f 84 96 03 00 00 je 496600 0.00 : 49626a: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 49626e: 48 98 cltq 0.00 : 496270: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 496274: 0f b6 14 10 movzbl (%rax,%rdx,1),%edx 0.00 : 496278: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49627f: 00 0.00 : 496280: 48 8b 4b 40 mov 0x40(%rbx),%rcx 0.00 : 496284: 8b 73 0c mov 0xc(%rbx),%esi 0.00 : 496287: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 49628b: e8 a0 7d 2e 00 callq 77e030 0.00 : 496290: 84 c0 test %al,%al 0.00 : 496292: 74 3f je 4962d3 0.00 : 496294: 45 85 e4 test %r12d,%r12d 0.00 : 496297: 0f 84 d3 02 00 00 je 496570 0.00 : 49629d: 48 83 c3 48 add $0x48,%rbx 0.00 : 4962a1: f6 03 01 testb $0x1,(%rbx) 0.00 : 4962a4: 75 2d jne 4962d3 0.00 : 4962a6: 41 83 ec 01 sub $0x1,%r12d 0.00 : 4962aa: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx 0.00 : 4962ae: 66 85 c9 test %cx,%cx 0.00 : 4962b1: 0f 8e 49 02 00 00 jle 496500 0.00 : 4962b7: 49 8b 7d 58 mov 0x58(%r13),%rdi 0.00 : 4962bb: 0f bf f1 movswl %cx,%esi 0.00 : 4962be: 0f b7 47 12 movzwl 0x12(%rdi),%eax 0.00 : 4962c2: 25 ff 07 00 00 and $0x7ff,%eax 0.00 : 4962c7: 39 c6 cmp %eax,%esi 0.00 : 4962c9: 0f 8e 41 ff ff ff jle 496210 0.00 : 4962cf: c6 45 d7 01 movb $0x1,-0x29(%rbp) : */ : --linesleft; : if (backward) : --lineindex; : else : ++lineindex; 0.00 : 4962d3: 8b 55 c0 mov -0x40(%rbp),%edx 0.00 : 4962d6: 8b 45 c0 mov -0x40(%rbp),%eax : } : : /* : * otherwise move to the next item on the page : */ : --linesleft; 0.00 : 4962d9: 83 6d c4 01 subl $0x1,-0x3c(%rbp) : * advance the scan until we find a qualifying tuple or run out of stuff : * to scan : */ : for (;;) : { : while (linesleft > 0) 0.00 : 4962dd: 44 8b 45 c4 mov -0x3c(%rbp),%r8d : */ : --linesleft; : if (backward) : --lineindex; : else : ++lineindex; 0.00 : 4962e1: 83 c2 01 add $0x1,%edx 0.00 : 4962e4: 83 e8 01 sub $0x1,%eax 0.00 : 4962e7: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 0.00 : 4962eb: 0f 45 d0 cmovne %eax,%edx : * advance the scan until we find a qualifying tuple or run out of stuff : * to scan : */ : for (;;) : { : while (linesleft > 0) 0.00 : 4962ee: 45 85 c0 test %r8d,%r8d : */ : --linesleft; : if (backward) : --lineindex; : else : ++lineindex; 0.00 : 4962f1: 89 55 c0 mov %edx,-0x40(%rbp) : * advance the scan until we find a qualifying tuple or run out of stuff : * to scan : */ : for (;;) : { : while (linesleft > 0) 0.00 : 4962f4: 0f 8f 9b fe ff ff jg 496195 0.00 : 4962fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * if we get here, it means we've exhausted the items on this page and : * it's time to move to the next. : */ : if (backward) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:909 3.45 : 496300: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) 0.00 : 496304: 0f 84 86 02 00 00 je 496590 : { : finished = (page == scan->rs_startblock) || 0.00 : 49630a: 45 39 7d 2c cmp %r15d,0x2c(%r13) 0.00 : 49630e: 74 1c je 49632c 0.00 : 496310: 41 8b 45 34 mov 0x34(%r13),%eax 0.00 : 496314: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 496317: 0f 84 15 02 00 00 je 496532 0.00 : 49631d: 83 e8 01 sub $0x1,%eax 0.00 : 496320: 85 c0 test %eax,%eax 0.00 : 496322: 41 89 45 34 mov %eax,0x34(%r13) 0.00 : 496326: 0f 85 06 02 00 00 jne 496532 0.00 : 49632c: bb 01 00 00 00 mov $0x1,%ebx : (scan->rs_numblocks != InvalidBlockNumber ? --scan->rs_numblocks <= 0 : false); : if (page == 0) 0.00 : 496331: 45 85 ff test %r15d,%r15d 0.00 : 496334: 75 04 jne 49633a : page = scan->rs_nblocks; 0.00 : 496336: 45 8b 7d 28 mov 0x28(%r13),%r15d : page--; 0.00 : 49633a: 41 83 ef 01 sub $0x1,%r15d : } : : /* : * return NULL if we've exhausted all the pages : */ : if (finished) 0.00 : 49633e: 84 db test %bl,%bl 0.00 : 496340: 0f 85 f6 02 00 00 jne 49663c : tuple->t_data = NULL; : scan->rs_inited = false; : return; : } : : heapgetpage(scan, page); 0.00 : 496346: 44 89 fe mov %r15d,%esi 0.00 : 496349: 4c 89 ef mov %r13,%rdi 0.00 : 49634c: e8 0f fb ff ff callq 495e60 : : dp = (Page) BufferGetPage(scan->rs_cbuf); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:957 1.72 : 496351: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 496355: 85 c0 test %eax,%eax 0.00 : 496357: 0f 88 bb 02 00 00 js 496618 0.00 : 49635d: 83 e8 01 sub $0x1,%eax 0.00 : 496360: 4c 63 f0 movslq %eax,%r14 0.00 : 496363: 49 c1 e6 0d shl $0xd,%r14 0.00 : 496367: 4c 03 35 8a 97 72 00 add 0x72978a(%rip),%r14 # bbfaf8 : lines = scan->rs_ntuples; : linesleft = lines; : if (backward) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:960 0.86 : 49636e: 80 7d bf 00 cmpb $0x0,-0x41(%rbp) : } : : heapgetpage(scan, page); : : dp = (Page) BufferGetPage(scan->rs_cbuf); : lines = scan->rs_ntuples; 0.00 : 496372: 41 8b 45 78 mov 0x78(%r13),%eax : linesleft = lines; : if (backward) 0.00 : 496376: c7 45 c0 00 00 00 00 movl $0x0,-0x40(%rbp) 0.00 : 49637d: 89 45 c4 mov %eax,-0x3c(%rbp) 0.00 : 496380: 0f 84 02 fe ff ff je 496188 : lineindex = lines - 1; 0.00 : 496386: 8d 50 ff lea -0x1(%rax),%edx 0.00 : 496389: 89 45 c4 mov %eax,-0x3c(%rbp) 0.00 : 49638c: 89 55 c0 mov %edx,-0x40(%rbp) 0.00 : 49638f: e9 f4 fd ff ff jmpq 496188 : else : { : /* : * ``no movement'' scan direction: refetch prior tuple : */ : if (!scan->rs_inited) 0.00 : 496394: 80 7f 41 00 cmpb $0x0,0x41(%rdi) 0.00 : 496398: 74 6e je 496408 : Assert(!BufferIsValid(scan->rs_cbuf)); : tuple->t_data = NULL; : return; : } : : page = ItemPointerGetBlockNumber(&(tuple->t_self)); 0.00 : 49639a: 0f b7 77 4c movzwl 0x4c(%rdi),%esi 0.00 : 49639e: 0f b7 47 4e movzwl 0x4e(%rdi),%eax 0.00 : 4963a2: c1 e6 10 shl $0x10,%esi 0.00 : 4963a5: 09 c6 or %eax,%esi : if (page != scan->rs_cblock) 0.00 : 4963a7: 39 77 60 cmp %esi,0x60(%rdi) 0.00 : 4963aa: 74 05 je 4963b1 : heapgetpage(scan, page); 0.00 : 4963ac: e8 af fa ff ff callq 495e60 : : /* Since the tuple was previously fetched, needn't lock page here */ : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 4963b1: 41 8b 45 64 mov 0x64(%r13),%eax 0.00 : 4963b5: 85 c0 test %eax,%eax 0.00 : 4963b7: 0f 88 d8 02 00 00 js 496695 0.00 : 4963bd: 83 e8 01 sub $0x1,%eax 0.00 : 4963c0: 48 63 c8 movslq %eax,%rcx 0.00 : 4963c3: 48 c1 e1 0d shl $0xd,%rcx 0.00 : 4963c7: 48 03 0d 2a 97 72 00 add 0x72972a(%rip),%rcx # bbfaf8 : lineoff = ItemPointerGetOffsetNumber(&(tuple->t_self)); : lpp = PageGetItemId(dp, lineoff); 0.00 : 4963ce: 41 0f b7 45 50 movzwl 0x50(%r13),%eax : Assert(ItemIdIsNormal(lpp)); : : tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); 0.00 : 4963d3: 48 83 c0 03 add $0x3,%rax 0.00 : 4963d7: 0f b7 54 81 08 movzwl 0x8(%rcx,%rax,4),%edx 0.00 : 4963dc: 81 e2 ff 7f 00 00 and $0x7fff,%edx 0.00 : 4963e2: 48 8d 14 11 lea (%rcx,%rdx,1),%rdx 0.00 : 4963e6: 49 89 55 58 mov %rdx,0x58(%r13) : tuple->t_len = ItemIdGetLength(lpp); 0.00 : 4963ea: 0f b7 44 81 0a movzwl 0xa(%rcx,%rax,4),%eax 0.00 : 4963ef: 66 d1 e8 shr %ax 0.00 : 4963f2: 0f b7 c0 movzwl %ax,%eax 0.00 : 4963f5: 41 89 45 48 mov %eax,0x48(%r13) : if (backward) : lineindex = lines - 1; : else : lineindex = 0; : } : } 0.00 : 4963f9: 48 83 c4 48 add $0x48,%rsp 0.00 : 4963fd: 5b pop %rbx 0.00 : 4963fe: 41 5c pop %r12 0.00 : 496400: 41 5d pop %r13 0.00 : 496402: 41 5e pop %r14 0.00 : 496404: 41 5f pop %r15 0.00 : 496406: c9 leaveq 0.00 : 496407: c3 retq : * ``no movement'' scan direction: refetch prior tuple : */ : if (!scan->rs_inited) : { : Assert(!BufferIsValid(scan->rs_cbuf)); : tuple->t_data = NULL; 0.00 : 496408: 49 c7 45 58 00 00 00 movq $0x0,0x58(%r13) 0.00 : 49640f: 00 : if (backward) : lineindex = lines - 1; : else : lineindex = 0; : } : } 0.00 : 496410: 48 83 c4 48 add $0x48,%rsp 0.00 : 496414: 5b pop %rbx 0.00 : 496415: 41 5c pop %r12 0.00 : 496417: 41 5d pop %r13 0.00 : 496419: 41 5e pop %r14 0.00 : 49641b: 41 5f pop %r15 0.00 : 49641d: c9 leaveq 0.00 : 49641e: c3 retq 0.00 : 49641f: 90 nop : /* : * calculate next starting lineindex, given scan direction : */ : if (ScanDirectionIsForward(dir)) : { : if (!scan->rs_inited) 0.00 : 496420: 80 7f 41 00 cmpb $0x0,0x41(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:747 0.86 : 496424: 74 66 je 49648c : } : else : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ : lineindex = scan->rs_cindex + 1; 0.00 : 496426: 8b 47 70 mov 0x70(%rdi),%eax : scan->rs_inited = true; : } : else : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:766 5.17 : 496429: 44 8b 7f 60 mov 0x60(%rdi),%r15d : lineindex = scan->rs_cindex + 1; 0.00 : 49642d: 83 c0 01 add $0x1,%eax 0.00 : 496430: 89 45 c0 mov %eax,-0x40(%rbp) : } : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496433: 41 8b 45 64 mov 0x64(%r13),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:770 0.86 : 496437: 85 c0 test %eax,%eax 0.00 : 496439: 0f 88 41 02 00 00 js 496680 0.00 : 49643f: 83 e8 01 sub $0x1,%eax 0.86 : 496442: 4c 63 f0 movslq %eax,%r14 0.86 : 496445: 49 c1 e6 0d shl $0xd,%r14 1.72 : 496449: 4c 03 35 a8 96 72 00 add 0x7296a8(%rip),%r14 # bbfaf8 : lines = scan->rs_ntuples; : /* page and lineindex now reference the next visible tid */ : : linesleft = lines - lineindex; 0.00 : 496450: 41 8b 55 78 mov 0x78(%r13),%edx 0.00 : 496454: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 496457: 29 c2 sub %eax,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:774 3.45 : 496459: 89 55 c4 mov %edx,-0x3c(%rbp) 0.86 : 49645c: e9 1a fd ff ff jmpq 49617b : if (!scan->rs_inited) : { : /* : * return null immediately if relation is empty : */ : if (scan->rs_nblocks == 0) 0.00 : 496461: 44 8b 57 28 mov 0x28(%rdi),%r10d 0.00 : 496465: 45 85 d2 test %r10d,%r10d 0.00 : 496468: 74 9e je 496408 : * time, and much more likely that we'll just bollix things for : * forward scanners. : */ : scan->rs_syncscan = false; : /* start from last page of the scan */ : if (scan->rs_startblock > 0) 0.00 : 49646a: 8b 47 2c mov 0x2c(%rdi),%eax : * Disable reporting to syncscan logic in a backwards scan; it's : * not very likely anyone else is doing the same thing at the same : * time, and much more likely that we'll just bollix things for : * forward scanners. : */ : scan->rs_syncscan = false; 0.00 : 49646d: c6 47 40 00 movb $0x0,0x40(%rdi) : /* start from last page of the scan */ : if (scan->rs_startblock > 0) 0.00 : 496471: 85 c0 test %eax,%eax 0.00 : 496473: 75 03 jne 496478 : page = scan->rs_startblock - 1; : else : page = scan->rs_nblocks - 1; 0.00 : 496475: 8b 47 28 mov 0x28(%rdi),%eax 0.00 : 496478: 44 8d 78 ff lea -0x1(%rax),%r15d : heapgetpage(scan, page); 0.00 : 49647c: 4c 89 ef mov %r13,%rdi 0.00 : 49647f: 44 89 fe mov %r15d,%esi 0.00 : 496482: e8 d9 f9 ff ff callq 495e60 0.00 : 496487: e9 af fc ff ff jmpq 49613b : if (!scan->rs_inited) : { : /* : * return null immediately if relation is empty : */ : if (scan->rs_nblocks == 0) 0.00 : 49648c: 44 8b 5f 28 mov 0x28(%rdi),%r11d 0.00 : 496490: 45 85 db test %r11d,%r11d 0.00 : 496493: 0f 84 6f ff ff ff je 496408 : { : Assert(!BufferIsValid(scan->rs_cbuf)); : tuple->t_data = NULL; : return; : } : page = scan->rs_startblock; /* first page */ 0.00 : 496499: 44 8b 7f 2c mov 0x2c(%rdi),%r15d : heapgetpage(scan, page); 0.00 : 49649d: 44 89 fe mov %r15d,%esi 0.00 : 4964a0: e8 bb f9 ff ff callq 495e60 : lineindex = 0; : scan->rs_inited = true; 0.00 : 4964a5: 41 c6 45 41 01 movb $0x1,0x41(%r13) 0.00 : 4964aa: c7 45 c0 00 00 00 00 movl $0x0,-0x40(%rbp) 0.00 : 4964b1: eb 80 jmp 496433 0.00 : 4964b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : */ : if (key != NULL) : { : bool valid; : : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 4964b8: 0f bf 73 04 movswl 0x4(%rbx),%esi 0.00 : 4964bc: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 4964bf: 89 c8 mov %ecx,%eax 0.00 : 4964c1: 83 e1 07 and $0x7,%ecx 0.00 : 4964c4: c1 f8 03 sar $0x3,%eax 0.00 : 4964c7: 48 98 cltq 0.00 : 4964c9: 0f b6 44 07 17 movzbl 0x17(%rdi,%rax,1),%eax 0.00 : 4964ce: d3 f8 sar %cl,%eax 0.00 : 4964d0: a8 01 test $0x1,%al 0.00 : 4964d2: 0f 84 f7 fd ff ff je 4962cf 0.00 : 4964d8: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 4964dc: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4964e0: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 4964e4: e8 a7 94 fd ff callq 46f990 0.00 : 4964e9: 48 89 c2 mov %rax,%rdx 0.00 : 4964ec: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) 0.00 : 4964f0: 0f 84 8a fd ff ff je 496280 0.00 : 4964f6: e9 d8 fd ff ff jmpq 4962d3 0.00 : 4964fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 496500: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 496504: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 496508: 0f bf f1 movswl %cx,%esi 0.00 : 49650b: 48 8d 4d d7 lea -0x29(%rbp),%rcx 0.00 : 49650f: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 496513: e8 b8 87 fd ff callq 46ecd0 0.00 : 496518: 48 89 c2 mov %rax,%rdx 0.00 : 49651b: eb cf jmp 4964ec 0.00 : 49651d: 0f 1f 00 nopl (%rax) 0.00 : 496520: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 496524: 48 98 cltq 0.00 : 496526: 48 01 d0 add %rdx,%rax 0.00 : 496529: 48 8d 14 07 lea (%rdi,%rax,1),%rdx 0.00 : 49652d: e9 4e fd ff ff jmpq 496280 : * if we get here, it means we've exhausted the items on this page and : * it's time to move to the next. : */ : if (backward) : { : finished = (page == scan->rs_startblock) || 0.00 : 496532: 31 db xor %ebx,%ebx 0.00 : 496534: e9 f8 fd ff ff jmpq 496331 0.00 : 496539: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : if (key != NULL) : { : bool valid; : : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 496540: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 496544: 4c 89 c2 mov %r8,%rdx 0.00 : 496547: e8 44 94 fd ff callq 46f990 0.00 : 49654c: 48 89 c2 mov %rax,%rdx 0.00 : 49654f: eb 9b jmp 4964ec 0.00 : 496551: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 496558: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 49655c: 48 98 cltq 0.00 : 49655e: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 496562: 48 8b 14 10 mov (%rax,%rdx,1),%rdx 0.00 : 496566: e9 15 fd ff ff jmpq 496280 0.00 : 49656b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : nkeys, key, valid); : if (valid) : { : scan->rs_cindex = lineindex; 0.00 : 496570: 8b 45 c0 mov -0x40(%rbp),%eax 0.00 : 496573: 41 89 45 70 mov %eax,0x70(%r13) : if (backward) : lineindex = lines - 1; : else : lineindex = 0; : } : } 0.00 : 496577: 48 83 c4 48 add $0x48,%rsp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 0.86 : 49657b: 5b pop %rbx 0.86 : 49657c: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 5.17 : 49657e: 41 5d pop %r13 0.00 : 496580: 41 5e pop %r14 0.00 : 496582: 41 5f pop %r15 0.00 : 496584: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:965 2.59 : 496585: c3 retq 0.00 : 496586: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 49658d: 00 00 00 : page = scan->rs_nblocks; : page--; : } : else : { : page++; 0.00 : 496590: 41 83 c7 01 add $0x1,%r15d : if (page >= scan->rs_nblocks) 0.00 : 496594: 45 3b 7d 28 cmp 0x28(%r13),%r15d 0.00 : 496598: b8 00 00 00 00 mov $0x0,%eax 0.00 : 49659d: 44 0f 43 f8 cmovae %eax,%r15d : page = 0; : finished = (page == scan->rs_startblock) || 0.00 : 4965a1: 45 39 7d 2c cmp %r15d,0x2c(%r13) 0.00 : 4965a5: 74 14 je 4965bb 0.00 : 4965a7: 41 8b 45 34 mov 0x34(%r13),%eax 0.00 : 4965ab: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 4965ae: 74 2c je 4965dc 0.00 : 4965b0: 83 e8 01 sub $0x1,%eax 0.00 : 4965b3: 85 c0 test %eax,%eax 0.00 : 4965b5: 41 89 45 34 mov %eax,0x34(%r13) 0.00 : 4965b9: 75 21 jne 4965dc 0.00 : 4965bb: bb 01 00 00 00 mov $0x1,%ebx : * rel. That's not strictly necessary, but otherwise when you run : * the same query multiple times the starting position would shift : * a little bit backwards on every invocation, which is confusing. : * We don't guarantee any specific ordering in general, though. : */ : if (scan->rs_syncscan) 0.00 : 4965c0: 41 80 7d 40 00 cmpb $0x0,0x40(%r13) 0.00 : 4965c5: 0f 84 73 fd ff ff je 49633e : ss_report_location(scan->rs_rd, page); 0.00 : 4965cb: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 4965cf: 44 89 fe mov %r15d,%esi 0.00 : 4965d2: e8 49 a8 00 00 callq 4a0e20 0.00 : 4965d7: e9 62 fd ff ff jmpq 49633e : else : { : page++; : if (page >= scan->rs_nblocks) : page = 0; : finished = (page == scan->rs_startblock) || 0.00 : 4965dc: 31 db xor %ebx,%ebx 0.00 : 4965de: 66 90 xchg %ax,%ax 0.00 : 4965e0: eb de jmp 4965c0 0.00 : 4965e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : if (key != NULL) : { : bool valid; : : HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), 0.00 : 4965e8: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 4965ec: 48 98 cltq 0.00 : 4965ee: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 4965f2: 8b 14 10 mov (%rax,%rdx,1),%edx 0.00 : 4965f5: e9 86 fc ff ff jmpq 496280 0.00 : 4965fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 496600: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 496604: 48 98 cltq 0.00 : 496606: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 49660a: 0f b7 14 10 movzwl (%rax,%rdx,1),%edx 0.00 : 49660e: e9 6d fc ff ff jmpq 496280 0.00 : 496613: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return; : } : : heapgetpage(scan, page); : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496618: f7 d0 not %eax 0.00 : 49661a: 48 63 d0 movslq %eax,%rdx 0.00 : 49661d: 48 8b 05 f4 6a 6e 00 mov 0x6e6af4(%rip),%rax # b7d118 0.00 : 496624: 4c 8b 34 d0 mov (%rax,%rdx,8),%r14 0.00 : 496628: e9 41 fd ff ff jmpq 49636e : lineindex = lines - 1; : scan->rs_inited = true; : } : else : { : lineindex = scan->rs_cindex - 1; 0.00 : 49662d: 41 8b 45 70 mov 0x70(%r13),%eax 0.00 : 496631: 83 e8 01 sub $0x1,%eax 0.00 : 496634: 89 45 c0 mov %eax,-0x40(%rbp) 0.00 : 496637: e9 36 fb ff ff jmpq 496172 : /* : * return NULL if we've exhausted all the pages : */ : if (finished) : { : if (BufferIsValid(scan->rs_cbuf)) 0.00 : 49663c: 41 8b 7d 64 mov 0x64(%r13),%edi 0.00 : 496640: 85 ff test %edi,%edi 0.00 : 496642: 74 05 je 496649 : ReleaseBuffer(scan->rs_cbuf); 0.00 : 496644: e8 17 e8 1d 00 callq 674e60 : scan->rs_cbuf = InvalidBuffer; 0.00 : 496649: 41 c7 45 64 00 00 00 movl $0x0,0x64(%r13) 0.00 : 496650: 00 : scan->rs_cblock = InvalidBlockNumber; 0.00 : 496651: 41 c7 45 60 ff ff ff movl $0xffffffff,0x60(%r13) 0.00 : 496658: ff : tuple->t_data = NULL; 0.00 : 496659: 49 c7 45 58 00 00 00 movq $0x0,0x58(%r13) 0.00 : 496660: 00 : scan->rs_inited = false; 0.00 : 496661: 41 c6 45 41 00 movb $0x0,0x41(%r13) : if (backward) : lineindex = lines - 1; : else : lineindex = 0; : } : } 0.00 : 496666: e9 a5 fd ff ff jmpq 496410 : { : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ : } : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 49666b: f7 d0 not %eax 0.00 : 49666d: 48 63 d0 movslq %eax,%rdx 0.00 : 496670: 48 8b 05 a1 6a 6e 00 mov 0x6e6aa1(%rip),%rax # b7d118 0.00 : 496677: 4c 8b 34 d0 mov (%rax,%rdx,8),%r14 0.00 : 49667b: e9 d8 fa ff ff jmpq 496158 : /* continue from previously returned page/tuple */ : page = scan->rs_cblock; /* current page */ : lineindex = scan->rs_cindex + 1; : } : : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496680: f7 d0 not %eax 0.00 : 496682: 48 63 d0 movslq %eax,%rdx 0.00 : 496685: 48 8b 05 8c 6a 6e 00 mov 0x6e6a8c(%rip),%rax # b7d118 0.00 : 49668c: 4c 8b 34 d0 mov (%rax,%rdx,8),%r14 0.00 : 496690: e9 bb fd ff ff jmpq 496450 : page = ItemPointerGetBlockNumber(&(tuple->t_self)); : if (page != scan->rs_cblock) : heapgetpage(scan, page); : : /* Since the tuple was previously fetched, needn't lock page here */ : dp = (Page) BufferGetPage(scan->rs_cbuf); 0.00 : 496695: f7 d0 not %eax 0.00 : 496697: 48 63 d0 movslq %eax,%rdx 0.00 : 49669a: 48 8b 05 77 6a 6e 00 mov 0x6e6a77(%rip),%rax # b7d118 0.00 : 4966a1: 48 8b 0c d0 mov (%rax,%rdx,8),%rcx 0.00 : 4966a5: e9 24 fd ff ff jmpq 4963ce Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 87.72 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1379 2.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1383 1.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 1.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:335 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1364 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1367 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1372 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1383 0.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1401 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674d30 : : * Most but not all callers want CurrentResourceOwner to be adjusted. : * Those that don't should pass fixOwner = FALSE. : */ : static void : UnpinBuffer(volatile BufferDesc *buf, bool fixOwner) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1360 0.88 : 674d30: 55 push %rbp : PrivateRefCountEntry *ref; : int b = buf->buf_id; : : ref = GetPrivateRefCountEntry(b + 1, false, false); 0.00 : 674d31: 31 d2 xor %edx,%edx : * Most but not all callers want CurrentResourceOwner to be adjusted. : * Those that don't should pass fixOwner = FALSE. : */ : static void : UnpinBuffer(volatile BufferDesc *buf, bool fixOwner) : { 0.00 : 674d33: 48 89 e5 mov %rsp,%rbp 0.00 : 674d36: 48 89 5d e8 mov %rbx,-0x18(%rbp) 1.75 : 674d3a: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 674d3e: 48 89 fb mov %rdi,%rbx 0.00 : 674d41: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 674d45: 48 83 ec 30 sub $0x30,%rsp : PrivateRefCountEntry *ref; : int b = buf->buf_id; 0.00 : 674d49: 8b 7f 24 mov 0x24(%rdi),%edi : * Most but not all callers want CurrentResourceOwner to be adjusted. : * Those that don't should pass fixOwner = FALSE. : */ : static void : UnpinBuffer(volatile BufferDesc *buf, bool fixOwner) : { 0.88 : 674d4c: 41 89 f4 mov %esi,%r12d : PrivateRefCountEntry *ref; : int b = buf->buf_id; : : ref = GetPrivateRefCountEntry(b + 1, false, false); 0.00 : 674d4f: 31 f6 xor %esi,%esi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1364 0.88 : 674d51: 83 c7 01 add $0x1,%edi 0.00 : 674d54: e8 c7 f7 ff ff callq 674520 : Assert(ref != NULL); : : if (fixOwner) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1367 0.88 : 674d59: 45 84 e4 test %r12b,%r12b : UnpinBuffer(volatile BufferDesc *buf, bool fixOwner) : { : PrivateRefCountEntry *ref; : int b = buf->buf_id; : : ref = GetPrivateRefCountEntry(b + 1, false, false); 0.00 : 674d5c: 49 89 c5 mov %rax,%r13 : Assert(ref != NULL); : : if (fixOwner) 0.00 : 674d5f: 0f 85 b3 00 00 00 jne 674e18 : ResourceOwnerForgetBuffer(CurrentResourceOwner, : BufferDescriptorGetBuffer(buf)); : : Assert(ref->refcount > 0); : ref->refcount--; 0.00 : 674d65: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 674d69: 83 e8 01 sub $0x1,%eax : if (ref->refcount == 0) 0.00 : 674d6c: 85 c0 test %eax,%eax : if (fixOwner) : ResourceOwnerForgetBuffer(CurrentResourceOwner, : BufferDescriptorGetBuffer(buf)); : : Assert(ref->refcount > 0); : ref->refcount--; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1372 0.88 : 674d6e: 41 89 45 04 mov %eax,0x4(%r13) : if (ref->refcount == 0) 0.00 : 674d72: 75 66 jne 674dda : { : /* I'd better not still hold any locks on the buffer */ : Assert(!LWLockHeldByMe(buf->content_lock)); : Assert(!LWLockHeldByMe(buf->io_in_progress_lock)); : : LockBufHdr(buf); 0.00 : 674d74: 48 8d 7b 20 lea 0x20(%rbx),%rdi : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 674d78: b8 01 00 00 00 mov $0x1,%eax 0.00 : 674d7d: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1379 87.72 : 674d80: 84 c0 test %al,%al 0.00 : 674d82: 0f 85 a8 00 00 00 jne 674e30 : : /* Decrement the shared reference count */ : Assert(buf->refcount > 0); : buf->refcount--; 0.00 : 674d88: 8b 43 18 mov 0x18(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1383 0.88 : 674d8b: 83 e8 01 sub $0x1,%eax 2.63 : 674d8e: 89 43 18 mov %eax,0x18(%rbx) : : /* Support LockBufferForCleanup() */ : if ((buf->flags & BM_PIN_COUNT_WAITER) && 0.00 : 674d91: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674d95: a8 40 test $0x40,%al 0.00 : 674d97: 75 57 jne 674df0 : buf->flags &= ~BM_PIN_COUNT_WAITER; : UnlockBufHdr(buf); : ProcSendSignal(wait_backend_pid); : } : else : UnlockBufHdr(buf); 0.00 : 674d99: c6 43 20 00 movb $0x0,0x20(%rbx) : static void : ForgetPrivateRefCountEntry(PrivateRefCountEntry *ref) : { : Assert(ref->refcount == 0); : : if (ref >= &PrivateRefCountArray[0] && /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:335 1.75 : 674d9d: 49 81 fd c0 d0 b7 00 cmp $0xb7d0c0,%r13 0.00 : 674da4: 72 0d jb 674db3 0.00 : 674da6: 49 81 fd 00 d1 b7 00 cmp $0xb7d100,%r13 0.00 : 674dad: 0f 82 95 00 00 00 jb 674e48 : ref->buffer = InvalidBuffer; : } : else : { : bool found; : Buffer buffer = ref->buffer; 0.00 : 674db3: 41 8b 45 00 mov 0x0(%r13),%eax : hash_search(PrivateRefCountHash, 0.00 : 674db7: 48 8b 3d ba 82 50 00 mov 0x5082ba(%rip),%rdi # b7d078 0.00 : 674dbe: 48 8d 4d e7 lea -0x19(%rbp),%rcx 0.00 : 674dc2: 48 8d 75 e0 lea -0x20(%rbp),%rsi 0.00 : 674dc6: ba 02 00 00 00 mov $0x2,%edx : ref->buffer = InvalidBuffer; : } : else : { : bool found; : Buffer buffer = ref->buffer; 0.00 : 674dcb: 89 45 e0 mov %eax,-0x20(%rbp) : hash_search(PrivateRefCountHash, 0.00 : 674dce: e8 cd f8 10 00 callq 7846a0 : (void *) &buffer, : HASH_REMOVE, : &found); : Assert(found); : Assert(PrivateRefCountOverflowed > 0); : PrivateRefCountOverflowed--; 0.00 : 674dd3: 83 2d 96 82 50 00 01 subl $0x1,0x508296(%rip) # b7d070 : else : UnlockBufHdr(buf); : : ForgetPrivateRefCountEntry(ref); : } : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1401 0.88 : 674dda: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 674dde: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 674de2: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 674de6: c9 leaveq 0.00 : 674de7: c3 retq 0.00 : 674de8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 674def: 00 : /* Decrement the shared reference count */ : Assert(buf->refcount > 0); : buf->refcount--; : : /* Support LockBufferForCleanup() */ : if ((buf->flags & BM_PIN_COUNT_WAITER) && 0.00 : 674df0: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 674df3: 83 e8 01 sub $0x1,%eax 0.00 : 674df6: 75 a1 jne 674d99 : buf->refcount == 1) : { : /* we just released the last pin other than the waiter's */ : int wait_backend_pid = buf->wait_backend_pid; 0.00 : 674df8: 8b 7b 1c mov 0x1c(%rbx),%edi : : buf->flags &= ~BM_PIN_COUNT_WAITER; 0.00 : 674dfb: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674dff: 83 e0 bf and $0xffffffbf,%eax 0.00 : 674e02: 66 89 43 14 mov %ax,0x14(%rbx) : UnlockBufHdr(buf); 0.00 : 674e06: c6 43 20 00 movb $0x0,0x20(%rbx) : ProcSendSignal(wait_backend_pid); 0.00 : 674e0a: e8 b1 76 01 00 callq 68c4c0 : /* Decrement the shared reference count */ : Assert(buf->refcount > 0); : buf->refcount--; : : /* Support LockBufferForCleanup() */ : if ((buf->flags & BM_PIN_COUNT_WAITER) && 0.00 : 674e0f: eb 8c jmp 674d9d 0.00 : 674e11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : ref = GetPrivateRefCountEntry(b + 1, false, false); : Assert(ref != NULL); : : if (fixOwner) : ResourceOwnerForgetBuffer(CurrentResourceOwner, 0.00 : 674e18: 8b 73 24 mov 0x24(%rbx),%esi 0.00 : 674e1b: 48 8b 3d 9e 5a 54 00 mov 0x545a9e(%rip),%rdi # bba8c0 0.00 : 674e22: 83 c6 01 add $0x1,%esi 0.00 : 674e25: e8 d6 5a 12 00 callq 79a900 0.00 : 674e2a: e9 36 ff ff ff jmpq 674d65 0.00 : 674e2f: 90 nop : { : /* I'd better not still hold any locks on the buffer */ : Assert(!LWLockHeldByMe(buf->content_lock)); : Assert(!LWLockHeldByMe(buf->io_in_progress_lock)); : : LockBufHdr(buf); 0.00 : 674e30: ba 63 05 00 00 mov $0x563,%edx 0.00 : 674e35: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 674e3a: e8 01 b2 01 00 callq 690040 0.00 : 674e3f: e9 44 ff ff ff jmpq 674d88 0.00 : 674e44: 0f 1f 40 00 nopl 0x0(%rax) : Assert(ref->refcount == 0); : : if (ref >= &PrivateRefCountArray[0] && : ref < &PrivateRefCountArray[REFCOUNT_ARRAY_ENTRIES]) : { : ref->buffer = InvalidBuffer; 0.00 : 674e48: 41 c7 45 00 00 00 00 movl $0x0,0x0(%r13) 0.00 : 674e4f: 00 0.00 : 674e50: eb 88 jmp 674dda Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 46.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:456 19.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:465 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:453 2.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 2.73 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 1.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:445 1.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 1.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 1.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 1.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:468 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:445 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:445 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:456 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:457 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:464 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:471 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:458 0.91 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:458 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007832f0 : : * from the data in the hash table and return true. If not, it will return : * false. : */ : bool : CHashSearch(CHashTable table, void *entry) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:444 0.91 : 7832f0: 55 push %rbp 2.73 : 7832f1: 48 89 e5 mov %rsp,%rbp 0.91 : 7832f4: 41 54 push %r12 0.91 : 7832f6: 49 89 f4 mov %rsi,%r12 0.00 : 7832f9: 53 push %rbx 0.00 : 7832fa: 48 89 fb mov %rdi,%rbx 2.73 : 7832fd: 48 83 ec 20 sub $0x20,%rsp : uint32 hashcode = hash_any(entry, table->desc.key_size); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:445 1.82 : 783301: 0f b7 77 0e movzwl 0xe(%rdi),%esi 0.91 : 783305: 4c 89 e7 mov %r12,%rdi 0.91 : 783308: e8 43 d0 d0 ff callq 490350 : CHashPtr *b = &table->bucket[bucket]; : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 78330d: 0f b6 4b 14 movzbl 0x14(%rbx),%ecx : */ : bool : CHashSearch(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; 0.00 : 783311: 8b 7b 10 mov 0x10(%rbx),%edi 0.00 : 783314: 21 c7 and %eax,%edi : CHashPtr *b = &table->bucket[bucket]; 0.00 : 783316: 89 fe mov %edi,%esi : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 783318: d3 ef shr %cl,%edi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:452 4.55 : 78331a: 0f b6 4b 15 movzbl 0x15(%rbx),%ecx 0.00 : 78331e: 89 fa mov %edi,%edx : bool : CHashSearch(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; : CHashPtr *b = &table->bucket[bucket]; 0.00 : 783320: 48 c1 e6 02 shl $0x2,%rsi 0.00 : 783324: 48 03 73 20 add 0x20(%rbx),%rsi : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 1.82 : 783328: d3 ea shr %cl,%edx 1.82 : 78332a: 48 8b 0d 17 a6 3f 00 mov 0x3fa617(%rip),%rcx # b7d948 0.00 : 783331: 01 fa add %edi,%edx 0.00 : 783333: 48 c1 e2 02 shl $0x2,%rdx 0.91 : 783337: 48 03 53 28 add 0x28(%rbx),%rdx 1.82 : 78333b: 48 89 91 e8 02 00 00 mov %rdx,0x2e8(%rcx) : pg_memory_barrier(); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:453 4.55 : 783342: f0 83 04 24 00 lock addl $0x0,(%rsp) : : /* Scan bucket and return data from any matching entry. */ : CHashBucketScan(table, b, hashcode, entry, &scan); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:456 46.36 : 783347: 4c 8d 45 d0 lea -0x30(%rbp),%r8 0.00 : 78334b: 4c 89 e1 mov %r12,%rcx 0.00 : 78334e: 89 c2 mov %eax,%edx 0.00 : 783350: 48 89 df mov %rbx,%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:456 0.91 : 783353: e8 48 f9 ff ff callq 782ca0 : if (scan.found) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:457 0.91 : 783358: 80 7d e8 00 cmpb $0x0,-0x18(%rbp) 0.00 : 78335c: 75 32 jne 783390 : CHashNodeGetItem(scan.target_node) + table->desc.key_size, : table->desc.element_size - table->desc.key_size); : : /* Allow garbage collection for this bucket. */ : Assert(MyProc->hazard[0] != NULL); : pg_memory_barrier(); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:464 0.91 : 78335e: f0 83 04 24 00 lock addl $0x0,(%rsp) : MyProc->hazard[0] = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:465 19.09 : 783363: 48 8b 05 de a5 3f 00 mov 0x3fa5de(%rip),%rax # b7d948 0.00 : 78336a: 48 c7 80 e8 02 00 00 movq $0x0,0x2e8(%rax) 0.00 : 783371: 00 00 00 00 : : CHashTableIncrementStatistic(table, CHS_Search); : if (!scan.found) 0.00 : 783375: 0f b6 45 e8 movzbl -0x18(%rbp),%eax : /* Allow garbage collection for this bucket. */ : Assert(MyProc->hazard[0] != NULL); : pg_memory_barrier(); : MyProc->hazard[0] = NULL; : : CHashTableIncrementStatistic(table, CHS_Search); 0.00 : 783379: 48 83 43 40 01 addq $0x1,0x40(%rbx) : if (!scan.found) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:468 1.82 : 78337e: 84 c0 test %al,%al 0.00 : 783380: 75 05 jne 783387 : CHashTableIncrementStatistic(table, CHS_Search_Failed); 0.00 : 783382: 48 83 43 48 01 addq $0x1,0x48(%rbx) : return scan.found; : } 0.00 : 783387: 48 83 c4 20 add $0x20,%rsp 0.00 : 78338b: 5b pop %rbx 0.00 : 78338c: 41 5c pop %r12 0.00 : 78338e: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:471 0.91 : 78338f: c3 retq : pg_memory_barrier(); : : /* Scan bucket and return data from any matching entry. */ : CHashBucketScan(table, b, hashcode, entry, &scan); : if (scan.found) : memcpy(((char *) entry) + table->desc.key_size, 0.00 : 783390: 0f b7 43 0e movzwl 0xe(%rbx),%eax 0.00 : 783394: 0f b7 53 0c movzwl 0xc(%rbx),%edx 0.00 : 783398: 0f b7 f0 movzwl %ax,%esi 0.00 : 78339b: 29 c2 sub %eax,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:458 0.91 : 78339d: 49 8d 3c 34 lea (%r12,%rsi,1),%rdi 0.00 : 7833a1: 48 83 c6 08 add $0x8,%rsi 0.00 : 7833a5: 48 03 75 e0 add -0x20(%rbp),%rsi 0.00 : 7833a9: 48 63 d2 movslq %edx,%rdx 0.00 : 7833ac: e8 3f 68 ce ff callq 469bf0 0.91 : 7833b1: eb ab jmp 78335e Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 32.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2112 12.04 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2100 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2111 10.19 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2100 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2105 7.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2112 4.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2105 4.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 2.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674030 : : * Assumes that the buffer is valid and pinned, else the : * value may be obsolete immediately... : */ : BlockNumber : BufferGetBlockNumber(Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2100 12.04 : 674030: 55 push %rbp : volatile BufferDesc *bufHdr; : : Assert(BufferIsPinned(buffer)); : : if (BufferIsLocal(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2105 4.63 : 674031: 85 ff test %edi,%edi : * Assumes that the buffer is valid and pinned, else the : * value may be obsolete immediately... : */ : BlockNumber : BufferGetBlockNumber(Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2100 10.19 : 674033: 48 89 e5 mov %rsp,%rbp : volatile BufferDesc *bufHdr; : : Assert(BufferIsPinned(buffer)); : : if (BufferIsLocal(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2105 8.33 : 674036: 78 18 js 674050 : bufHdr = &(LocalBufferDescriptors[-buffer - 1]); : else : bufHdr = &BufferDescriptors[buffer - 1]; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 0.93 : 674038: 48 63 c7 movslq %edi,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 7.41 : 67403b: 48 83 e8 01 sub $0x1,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2108 2.78 : 67403f: 48 c1 e0 06 shl $0x6,%rax 4.63 : 674043: 48 03 05 b6 ba 54 00 add 0x54bab6(%rip),%rax # bbfb00 : : /* pinned, so OK to read tag without spinlock */ : return bufHdr->tag.blockNum; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2111 11.11 : 67404a: 8b 40 10 mov 0x10(%rax),%eax : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2112 32.41 : 67404d: c9 leaveq 5.56 : 67404e: c3 retq 0.00 : 67404f: 90 nop : volatile BufferDesc *bufHdr; : : Assert(BufferIsPinned(buffer)); : : if (BufferIsLocal(buffer)) : bufHdr = &(LocalBufferDescriptors[-buffer - 1]); 0.00 : 674050: f7 d7 not %edi 0.00 : 674052: 48 63 c7 movslq %edi,%rax 0.00 : 674055: 48 c1 e0 06 shl $0x6,%rax 0.00 : 674059: 48 03 05 b0 90 50 00 add 0x5090b0(%rip),%rax # b7d110 : else : bufHdr = &BufferDescriptors[buffer - 1]; : : /* pinned, so OK to read tag without spinlock */ : return bufHdr->tag.blockNum; 0.00 : 674060: 8b 40 10 mov 0x10(%rax),%eax : } 0.00 : 674063: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 18.69 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:394 8.41 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 8.41 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 5.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:344 5.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:401 5.61 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 4.67 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:396 4.67 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:393 4.67 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:414 2.80 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:404 2.80 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:317 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:357 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:402 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:406 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:393 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:419 1.87 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:414 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:317 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:317 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:317 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:317 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:344 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:346 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:423 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:423 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:423 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:423 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:402 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:403 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:422 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 0.93 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:414 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000495e60 : : * In page-at-a-time mode it performs additional work, namely determining : * which tuples on the page are visible. : */ : static void : heapgetpage(HeapScanDesc scan, BlockNumber page) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:317 0.93 : 495e60: 55 push %rbp 0.00 : 495e61: 48 89 e5 mov %rsp,%rbp 0.00 : 495e64: 41 57 push %r15 0.93 : 495e66: 41 56 push %r14 0.93 : 495e68: 49 89 fe mov %rdi,%r14 0.00 : 495e6b: 41 55 push %r13 1.87 : 495e6d: 41 54 push %r12 0.00 : 495e6f: 53 push %rbx 0.00 : 495e70: 48 83 ec 78 sub $0x78,%rsp 0.93 : 495e74: 89 b5 6c ff ff ff mov %esi,-0x94(%rbp) : bool all_visible; : : Assert(page < scan->rs_nblocks); : : /* release previous scan buffer, if any */ : if (BufferIsValid(scan->rs_cbuf)) 0.00 : 495e7a: 8b 7f 64 mov 0x64(%rdi),%edi 0.00 : 495e7d: 85 ff test %edi,%edi 0.00 : 495e7f: 0f 85 fb 01 00 00 jne 496080 : /* : * Be sure to check for interrupts at least once per page. Checks at : * higher code levels won't be able to stop a seqscan that encounters many : * pages' worth of consecutive dead tuples. : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 495e85: 0f b6 05 04 42 72 00 movzbl 0x724204(%rip),%eax # bba090 0.00 : 495e8c: 84 c0 test %al,%al 0.00 : 495e8e: 0f 85 d4 01 00 00 jne 496068 : : /* read page using selected strategy */ : scan->rs_cbuf = ReadBufferExtended(scan->rs_rd, MAIN_FORKNUM, page, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:344 0.93 : 495e94: 4d 8b 46 38 mov 0x38(%r14),%r8 0.00 : 495e98: 8b 95 6c ff ff ff mov -0x94(%rbp),%edx 0.00 : 495e9e: 31 c9 xor %ecx,%ecx 0.00 : 495ea0: 49 8b 3e mov (%r14),%rdi 0.00 : 495ea3: 31 f6 xor %esi,%esi 0.00 : 495ea5: e8 c6 06 1e 00 callq 676570 : RBM_NORMAL, scan->rs_strategy); : scan->rs_cblock = page; : : if (!scan->rs_pageatatime) 0.00 : 495eaa: 41 80 7e 21 00 cmpb $0x0,0x21(%r14) : * pages' worth of consecutive dead tuples. : */ : CHECK_FOR_INTERRUPTS(); : : /* read page using selected strategy */ : scan->rs_cbuf = ReadBufferExtended(scan->rs_rd, MAIN_FORKNUM, page, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:344 5.61 : 495eaf: 41 89 c7 mov %eax,%r15d 0.00 : 495eb2: 41 89 46 64 mov %eax,0x64(%r14) : RBM_NORMAL, scan->rs_strategy); : scan->rs_cblock = page; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:346 0.93 : 495eb6: 8b 85 6c ff ff ff mov -0x94(%rbp),%eax 0.00 : 495ebc: 41 89 46 60 mov %eax,0x60(%r14) : : if (!scan->rs_pageatatime) 0.00 : 495ec0: 75 16 jne 495ed8 : : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : : Assert(ntup <= MaxHeapTuplesPerPage); : scan->rs_ntuples = ntup; : } /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:423 0.93 : 495ec2: 48 83 c4 78 add $0x78,%rsp 0.00 : 495ec6: 5b pop %rbx 0.93 : 495ec7: 41 5c pop %r12 0.93 : 495ec9: 41 5d pop %r13 0.00 : 495ecb: 41 5e pop %r14 0.00 : 495ecd: 41 5f pop %r15 0.93 : 495ecf: c9 leaveq 0.00 : 495ed0: c3 retq 0.00 : 495ed1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (!scan->rs_pageatatime) : return; : : buffer = scan->rs_cbuf; : snapshot = scan->rs_snapshot; 0.00 : 495ed8: 49 8b 4e 08 mov 0x8(%r14),%rcx : : /* : * Prune and repair fragmentation for the whole page, if possible. : */ : heap_page_prune_opt(scan->rs_rd, buffer); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:357 1.87 : 495edc: 44 89 fe mov %r15d,%esi : : if (!scan->rs_pageatatime) : return; : : buffer = scan->rs_cbuf; : snapshot = scan->rs_snapshot; 0.00 : 495edf: 48 89 4d 88 mov %rcx,-0x78(%rbp) : : /* : * Prune and repair fragmentation for the whole page, if possible. : */ : heap_page_prune_opt(scan->rs_rd, buffer); 0.00 : 495ee3: 49 8b 3e mov (%r14),%rdi 0.00 : 495ee6: e8 65 97 00 00 callq 49f650 : /* : * We must hold share lock on the buffer content while examining tuple : * visibility. Afterwards, however, the tuples we have found to be : * visible are guaranteed good as long as we hold the buffer pin. : */ : LockBuffer(buffer, BUFFER_LOCK_SHARE); 0.00 : 495eeb: be 01 00 00 00 mov $0x1,%esi 0.00 : 495ef0: 44 89 ff mov %r15d,%edi 0.00 : 495ef3: e8 18 e8 1d 00 callq 674710 : : dp = (Page) BufferGetPage(buffer); 0.00 : 495ef8: 45 85 ff test %r15d,%r15d 0.00 : 495efb: 0f 88 cf 01 00 00 js 4960d0 0.00 : 495f01: 41 8d 47 ff lea -0x1(%r15),%eax 0.00 : 495f05: 48 63 d8 movslq %eax,%rbx 0.00 : 495f08: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 495f0c: 48 03 1d e5 9b 72 00 add 0x729be5(%rip),%rbx # bbfaf8 : lines = PageGetMaxOffsetNumber(dp); 0.00 : 495f13: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 495f17: c7 45 90 00 00 00 00 movl $0x0,-0x70(%rbp) 0.00 : 495f1e: 66 83 f8 18 cmp $0x18,%ax 0.00 : 495f22: 0f 87 88 01 00 00 ja 4960b0 : * the page-level flag can be trusted in the same way, because it might : * get propagated somehow without being explicitly WAL-logged, e.g. via a : * full page write. Until we can prove that beyond doubt, let's check each : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; 0.00 : 495f28: c6 45 af 00 movb $0x0,-0x51(%rbp) 0.00 : 495f2c: f6 43 0a 04 testb $0x4,0xa(%rbx) 0.00 : 495f30: 0f 85 62 01 00 00 jne 496098 : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; 0.00 : 495f36: 8b 7d 90 mov -0x70(%rbp),%edi : lineoff++, lpp++) 0.00 : 495f39: c7 45 a8 00 00 00 00 movl $0x0,-0x58(%rbp) : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; 0.00 : 495f40: 85 ff test %edi,%edi 0.00 : 495f42: 0f 8e c8 00 00 00 jle 496010 : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : loctup.t_len = ItemIdGetLength(lpp); : ItemPointerSet(&(loctup.t_self), page, lineoff); 0.00 : 495f48: 8b 8d 6c ff ff ff mov -0x94(%rbp),%ecx : * full page write. Until we can prove that beyond doubt, let's check each : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); 0.00 : 495f4e: 4c 8d 6b 18 lea 0x18(%rbx),%r13 : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : loctup.t_len = ItemIdGetLength(lpp); : ItemPointerSet(&(loctup.t_self), page, lineoff); 0.00 : 495f52: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 495f58: c1 e9 10 shr $0x10,%ecx 0.00 : 495f5b: 66 89 8d 70 ff ff ff mov %cx,-0x90(%rbp) 0.00 : 495f62: eb 19 jmp 495f7d 0.00 : 495f64: 0f 1f 40 00 nopl 0x0(%rax) : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; : lineoff++, lpp++) 0.00 : 495f68: 41 83 c4 01 add $0x1,%r12d : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; 0.00 : 495f6c: 41 0f b7 c4 movzwl %r12w,%eax 0.00 : 495f70: 39 45 90 cmp %eax,-0x70(%rbp) 0.00 : 495f73: 0f 8c 97 00 00 00 jl 496010 : lineoff++, lpp++) 0.00 : 495f79: 49 83 c5 04 add $0x4,%r13 : { : if (ItemIdIsNormal(lpp)) 0.00 : 495f7d: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 495f81: 25 00 80 01 00 and $0x18000,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:396 4.67 : 495f86: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 495f8b: 75 db jne 495f68 : { : HeapTupleData loctup; : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); 0.00 : 495f8d: 49 8b 36 mov (%r14),%rsi : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : loctup.t_len = ItemIdGetLength(lpp); : ItemPointerSet(&(loctup.t_self), page, lineoff); 0.00 : 495f90: 0f b7 8d 6c ff ff ff movzwl -0x94(%rbp),%ecx : if (ItemIdIsNormal(lpp)) : { : HeapTupleData loctup; : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); 0.00 : 495f97: 8b 46 40 mov 0x40(%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:401 5.61 : 495f9a: 89 45 bc mov %eax,-0x44(%rbp) : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:402 0.93 : 495f9d: 41 0f b7 45 00 movzwl 0x0(%r13),%eax 0.00 : 495fa2: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 495fa7: 48 8d 04 03 lea (%rbx,%rax,1),%rax 1.87 : 495fab: 48 89 45 c0 mov %rax,-0x40(%rbp) : loctup.t_len = ItemIdGetLength(lpp); 0.00 : 495faf: 41 0f b7 45 02 movzwl 0x2(%r13),%eax : ItemPointerSet(&(loctup.t_self), page, lineoff); 0.00 : 495fb4: 66 89 4d b6 mov %cx,-0x4a(%rbp) 0.00 : 495fb8: 66 44 89 65 b8 mov %r12w,-0x48(%rbp) : HeapTupleData loctup; : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : loctup.t_len = ItemIdGetLength(lpp); 0.00 : 495fbd: 66 d1 e8 shr %ax : ItemPointerSet(&(loctup.t_self), page, lineoff); : : if (all_visible) 0.00 : 495fc0: 80 7d af 00 cmpb $0x0,-0x51(%rbp) : HeapTupleData loctup; : bool valid; : : loctup.t_tableOid = RelationGetRelid(scan->rs_rd); : loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp); : loctup.t_len = ItemIdGetLength(lpp); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:403 0.93 : 495fc4: 0f b7 c0 movzwl %ax,%eax 0.00 : 495fc7: 89 45 b0 mov %eax,-0x50(%rbp) : ItemPointerSet(&(loctup.t_self), page, lineoff); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:404 2.80 : 495fca: 0f b7 85 70 ff ff ff movzwl -0x90(%rbp),%eax 0.00 : 495fd1: 66 89 45 b4 mov %ax,-0x4c(%rbp) : : if (all_visible) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:406 1.87 : 495fd5: 74 59 je 496030 : valid = true; : else : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); : : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, 0.00 : 495fd7: 4c 8b 45 88 mov -0x78(%rbp),%r8 0.00 : 495fdb: 48 8d 55 b0 lea -0x50(%rbp),%rdx 0.00 : 495fdf: 44 89 f9 mov %r15d,%ecx 0.00 : 495fe2: bf 01 00 00 00 mov $0x1,%edi 0.00 : 495fe7: e8 74 e6 1f 00 callq 694660 : buffer, snapshot); : : if (valid) : scan->rs_vistuples[ntup++] = lineoff; 0.00 : 495fec: 48 63 45 a8 movslq -0x58(%rbp),%rax 0.00 : 495ff0: 66 45 89 64 46 7c mov %r12w,0x7c(%r14,%rax,2) : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; : lineoff++, lpp++) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:394 18.69 : 495ff6: 41 83 c4 01 add $0x1,%r12d : : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, : buffer, snapshot); : : if (valid) : scan->rs_vistuples[ntup++] = lineoff; 0.00 : 495ffa: 83 45 a8 01 addl $0x1,-0x58(%rbp) : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; : : for (lineoff = FirstOffsetNumber, lpp = PageGetItemId(dp, lineoff); : lineoff <= lines; 0.00 : 495ffe: 41 0f b7 c4 movzwl %r12w,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:393 4.67 : 496002: 39 45 90 cmp %eax,-0x70(%rbp) 0.00 : 496005: 0f 8d 6e ff ff ff jge 495f79 1.87 : 49600b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (valid) : scan->rs_vistuples[ntup++] = lineoff; : } : } : : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 496010: 44 89 ff mov %r15d,%edi /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:419 1.87 : 496013: 31 f6 xor %esi,%esi 0.00 : 496015: e8 f6 e6 1d 00 callq 674710 : : Assert(ntup <= MaxHeapTuplesPerPage); : scan->rs_ntuples = ntup; 0.00 : 49601a: 8b 45 a8 mov -0x58(%rbp),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:422 0.93 : 49601d: 41 89 46 78 mov %eax,0x78(%r14) : } 0.00 : 496021: 48 83 c4 78 add $0x78,%rsp 0.00 : 496025: 5b pop %rbx 0.00 : 496026: 41 5c pop %r12 0.00 : 496028: 41 5d pop %r13 0.00 : 49602a: 41 5e pop %r14 0.00 : 49602c: 41 5f pop %r15 0.00 : 49602e: c9 leaveq 0.00 : 49602f: c3 retq : ItemPointerSet(&(loctup.t_self), page, lineoff); : : if (all_visible) : valid = true; : else : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); 0.00 : 496030: 48 8b 75 88 mov -0x78(%rbp),%rsi /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 5.61 : 496034: 44 89 fa mov %r15d,%edx 0.00 : 496037: 48 8d 7d b0 lea -0x50(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 0.93 : 49603b: ff 16 callq *(%rsi) : : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 0.93 : 49603d: 4c 8b 45 88 mov -0x78(%rbp),%r8 : ItemPointerSet(&(loctup.t_self), page, lineoff); : : if (all_visible) : valid = true; : else : valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:409 8.41 : 496041: 88 45 ae mov %al,-0x52(%rbp) : : CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 8.41 : 496044: 48 8d 55 b0 lea -0x50(%rbp),%rdx 0.00 : 496048: 49 8b 36 mov (%r14),%rsi 0.00 : 49604b: 0f be f8 movsbl %al,%edi 0.00 : 49604e: 44 89 f9 mov %r15d,%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:411 2.80 : 496051: e8 0a e6 1f 00 callq 694660 : buffer, snapshot); : : if (valid) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:414 4.67 : 496056: 80 7d ae 00 cmpb $0x0,-0x52(%rbp) 0.93 : 49605a: 0f 84 08 ff ff ff je 495f68 1.87 : 496060: eb 8a jmp 495fec 0.00 : 496062: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 496068: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49606f: 00 : /* : * Be sure to check for interrupts at least once per page. Checks at : * higher code levels won't be able to stop a seqscan that encounters many : * pages' worth of consecutive dead tuples. : */ : CHECK_FOR_INTERRUPTS(); 0.00 : 496070: e8 2b 62 20 00 callq 69c2a0 0.00 : 496075: 0f 1f 00 nopl (%rax) 0.00 : 496078: e9 17 fe ff ff jmpq 495e94 0.00 : 49607d: 0f 1f 00 nopl (%rax) : Assert(page < scan->rs_nblocks); : : /* release previous scan buffer, if any */ : if (BufferIsValid(scan->rs_cbuf)) : { : ReleaseBuffer(scan->rs_cbuf); 0.00 : 496080: e8 db ed 1d 00 callq 674e60 : scan->rs_cbuf = InvalidBuffer; 0.00 : 496085: 41 c7 46 64 00 00 00 movl $0x0,0x64(%r14) 0.00 : 49608c: 00 0.00 : 49608d: 0f 1f 00 nopl (%rax) 0.00 : 496090: e9 f0 fd ff ff jmpq 495e85 0.00 : 496095: 0f 1f 00 nopl (%rax) : * the page-level flag can be trusted in the same way, because it might : * get propagated somehow without being explicitly WAL-logged, e.g. via a : * full page write. Until we can prove that beyond doubt, let's check each : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; 0.00 : 496098: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 49609c: 80 78 29 00 cmpb $0x0,0x29(%rax) 0.00 : 4960a0: 0f 94 45 af sete -0x51(%rbp) 0.00 : 4960a4: e9 8d fe ff ff jmpq 495f36 0.00 : 4960a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * visible are guaranteed good as long as we hold the buffer pin. : */ : LockBuffer(buffer, BUFFER_LOCK_SHARE); : : dp = (Page) BufferGetPage(buffer); : lines = PageGetMaxOffsetNumber(dp); 0.00 : 4960b0: 0f b7 c0 movzwl %ax,%eax : * the page-level flag can be trusted in the same way, because it might : * get propagated somehow without being explicitly WAL-logged, e.g. via a : * full page write. Until we can prove that beyond doubt, let's check each : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; 0.00 : 4960b3: c6 45 af 00 movb $0x0,-0x51(%rbp) : * visible are guaranteed good as long as we hold the buffer pin. : */ : LockBuffer(buffer, BUFFER_LOCK_SHARE); : : dp = (Page) BufferGetPage(buffer); : lines = PageGetMaxOffsetNumber(dp); 0.00 : 4960b7: 48 83 e8 18 sub $0x18,%rax 0.00 : 4960bb: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4960bf: 89 45 90 mov %eax,-0x70(%rbp) : * the page-level flag can be trusted in the same way, because it might : * get propagated somehow without being explicitly WAL-logged, e.g. via a : * full page write. Until we can prove that beyond doubt, let's check each : * tuple for visibility the hard way. : */ : all_visible = PageIsAllVisible(dp) && !snapshot->takenDuringRecovery; 0.00 : 4960c2: f6 43 0a 04 testb $0x4,0xa(%rbx) 0.00 : 4960c6: 0f 84 6a fe ff ff je 495f36 0.00 : 4960cc: eb ca jmp 496098 0.00 : 4960ce: 66 90 xchg %ax,%ax : * visibility. Afterwards, however, the tuples we have found to be : * visible are guaranteed good as long as we hold the buffer pin. : */ : LockBuffer(buffer, BUFFER_LOCK_SHARE); : : dp = (Page) BufferGetPage(buffer); 0.00 : 4960d0: 44 89 f8 mov %r15d,%eax 0.00 : 4960d3: 48 8b 15 3e 70 6e 00 mov 0x6e703e(%rip),%rdx # b7d118 0.00 : 4960da: f7 d0 not %eax 0.00 : 4960dc: 48 98 cltq 0.00 : 4960de: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 4960e2: e9 2c fe ff ff jmpq 495f13 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 59.81 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1292 30.84 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1283 1.87 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1293 1.87 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1296 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1283 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1283 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1288 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1290 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 0.93 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1318 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674c30 : : * Returns TRUE if buffer is BM_VALID, else FALSE. This provision allows : * some callers to avoid an extra spinlock cycle. : */ : static bool : PinBuffer(volatile BufferDesc *buf, BufferAccessStrategy strategy) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1283 0.93 : 674c30: 55 push %rbp : int b = buf->buf_id; : bool result; : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); 0.00 : 674c31: ba 01 00 00 00 mov $0x1,%edx : * Returns TRUE if buffer is BM_VALID, else FALSE. This provision allows : * some callers to avoid an extra spinlock cycle. : */ : static bool : PinBuffer(volatile BufferDesc *buf, BufferAccessStrategy strategy) : { 0.00 : 674c36: 48 89 e5 mov %rsp,%rbp 0.00 : 674c39: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 674c3d: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 674c41: 48 89 fb mov %rdi,%rbx 0.00 : 674c44: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 674c48: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.93 : 674c4c: 48 83 ec 20 sub $0x20,%rsp : int b = buf->buf_id; 0.00 : 674c50: 8b 7f 24 mov 0x24(%rdi),%edi : * Returns TRUE if buffer is BM_VALID, else FALSE. This provision allows : * some callers to avoid an extra spinlock cycle. : */ : static bool : PinBuffer(volatile BufferDesc *buf, BufferAccessStrategy strategy) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1283 30.84 : 674c53: 49 89 f6 mov %rsi,%r14 : int b = buf->buf_id; : bool result; : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); 0.00 : 674c56: be 01 00 00 00 mov $0x1,%esi : : if (ref->refcount == 0) 0.00 : 674c5b: 41 bd 01 00 00 00 mov $0x1,%r13d : { : int b = buf->buf_id; : bool result; : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); 0.00 : 674c61: 83 c7 01 add $0x1,%edi 0.00 : 674c64: e8 b7 f8 ff ff callq 674520 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1288 0.93 : 674c69: 49 89 c4 mov %rax,%r12 : : if (ref->refcount == 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1290 0.93 : 674c6c: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 674c6f: 85 c0 test %eax,%eax 0.00 : 674c71: 75 43 jne 674cb6 : { : LockBufHdr(buf); 0.00 : 674c73: 48 8d 7b 20 lea 0x20(%rbx),%rdi : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 674c77: b8 01 00 00 00 mov $0x1,%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 0.93 : 674c7c: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1292 59.81 : 674c7f: 84 c0 test %al,%al 0.00 : 674c81: 75 6d jne 674cf0 : buf->refcount++; 0.00 : 674c83: 8b 43 18 mov 0x18(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1293 1.87 : 674c86: 83 c0 01 add $0x1,%eax : if (strategy == NULL) 0.00 : 674c89: 4d 85 f6 test %r14,%r14 : ref = GetPrivateRefCountEntry(b + 1, true, true); : : if (ref->refcount == 0) : { : LockBufHdr(buf); : buf->refcount++; 0.00 : 674c8c: 89 43 18 mov %eax,0x18(%rbx) : if (strategy == NULL) 0.00 : 674c8f: 74 7c je 674d0d : if (buf->usage_count < BM_MAX_USAGE_COUNT) : buf->usage_count++; : } : else : { : if (buf->usage_count == 0) 0.00 : 674c91: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.00 : 674c95: 66 85 c0 test %ax,%ax 0.00 : 674c98: 75 06 jne 674ca0 : buf->usage_count = 1; 0.00 : 674c9a: 66 c7 43 16 01 00 movw $0x1,0x16(%rbx) : } : result = (buf->flags & BM_VALID) != 0; 0.00 : 674ca0: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674ca4: d1 e8 shr %eax 0.00 : 674ca6: 41 89 c5 mov %eax,%r13d 0.00 : 674ca9: 41 83 e5 01 and $0x1,%r13d : UnlockBufHdr(buf); 0.00 : 674cad: c6 43 20 00 movb $0x0,0x20(%rbx) 0.00 : 674cb1: 41 8b 44 24 04 mov 0x4(%r12),%eax : { : /* If we previously pinned the buffer, it must surely be valid */ : result = true; : } : : ref->refcount++; 0.00 : 674cb6: 83 c0 01 add $0x1,%eax 0.00 : 674cb9: 41 89 44 24 04 mov %eax,0x4(%r12) : Assert(ref->refcount > 0); : ResourceOwnerRememberBuffer(CurrentResourceOwner, 0.00 : 674cbe: 8b 73 24 mov 0x24(%rbx),%esi 0.00 : 674cc1: 48 8b 3d f8 5b 54 00 mov 0x545bf8(%rip),%rdi # bba8c0 0.00 : 674cc8: 83 c6 01 add $0x1,%esi 0.00 : 674ccb: e8 d0 54 12 00 callq 79a1a0 : BufferDescriptorGetBuffer(buf)); : return result; : } 0.00 : 674cd0: 44 89 e8 mov %r13d,%eax 0.00 : 674cd3: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 674cd7: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 674cdc: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1318 0.93 : 674ce1: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 674ce6: c9 leaveq 0.00 : 674ce7: c3 retq 0.00 : 674ce8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 674cef: 00 : : ref = GetPrivateRefCountEntry(b + 1, true, true); : : if (ref->refcount == 0) : { : LockBufHdr(buf); 0.00 : 674cf0: ba 0c 05 00 00 mov $0x50c,%edx 0.00 : 674cf5: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 674cfa: e8 41 b3 01 00 callq 690040 : buf->refcount++; 0.00 : 674cff: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 674d02: 83 c0 01 add $0x1,%eax : if (strategy == NULL) 0.00 : 674d05: 4d 85 f6 test %r14,%r14 : ref = GetPrivateRefCountEntry(b + 1, true, true); : : if (ref->refcount == 0) : { : LockBufHdr(buf); : buf->refcount++; 0.00 : 674d08: 89 43 18 mov %eax,0x18(%rbx) : if (strategy == NULL) 0.00 : 674d0b: 75 84 jne 674c91 : { : if (buf->usage_count < BM_MAX_USAGE_COUNT) 0.00 : 674d0d: 0f b7 43 16 movzwl 0x16(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1296 1.87 : 674d11: 66 83 f8 04 cmp $0x4,%ax 0.00 : 674d15: 77 89 ja 674ca0 : buf->usage_count++; 0.00 : 674d17: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.00 : 674d1b: 83 c0 01 add $0x1,%eax 0.00 : 674d1e: 66 89 43 16 mov %ax,0x16(%rbx) 0.00 : 674d22: e9 79 ff ff ff jmpq 674ca0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 32.38 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:664 9.52 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:694 8.57 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:664 3.81 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 2.86 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:687 1.90 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 0.95 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:665 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b16a0 : : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalScalarVarFast(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:664 32.38 : 5b16a0: 55 push %rbp : Var *variable = (Var *) exprstate->expr; : TupleTableSlot *slot; : AttrNumber attnum; : : if (isDone) 0.00 : 5b16a1: 48 85 c9 test %rcx,%rcx : */ : static Datum : ExecEvalScalarVarFast(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { : Var *variable = (Var *) exprstate->expr; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:665 0.95 : 5b16a4: 4c 8b 47 08 mov 0x8(%rdi),%r8 : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalScalarVarFast(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:664 8.57 : 5b16a8: 48 89 e5 mov %rsp,%rbp : Var *variable = (Var *) exprstate->expr; : TupleTableSlot *slot; : AttrNumber attnum; : : if (isDone) 0.00 : 5b16ab: 74 06 je 5b16b3 : *isDone = ExprSingleResult; 0.00 : 5b16ad: c7 01 00 00 00 00 movl $0x0,(%rcx) : : /* Get the input slot and attribute number we want */ : switch (variable->varno) /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 1.90 : 5b16b3: 41 8b 40 04 mov 0x4(%r8),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 40.00 : 5b16b7: 3d e8 fd 00 00 cmp $0xfde8,%eax 0.00 : 5b16bc: 74 1a je 5b16d8 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:673 3.81 : 5b16be: 3d e9 fd 00 00 cmp $0xfde9,%eax 0.00 : 5b16c3: 74 2b je 5b16f0 : : /* INDEX_VAR is handled by default case */ : : default: /* get the tuple from the relation being : * scanned */ : slot = econtext->ecxt_scantuple; /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:687 2.86 : 5b16c5: 48 8b 7e 08 mov 0x8(%rsi),%rdi : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); 0.00 : 5b16c9: 41 0f bf 70 08 movswl 0x8(%r8),%esi : } 0.00 : 5b16ce: c9 leaveq : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:694 9.52 : 5b16cf: e9 2c dd eb ff jmpq 46f400 0.00 : 5b16d4: 0f 1f 40 00 nopl 0x0(%rax) : : /* Get the input slot and attribute number we want */ : switch (variable->varno) : { : case INNER_VAR: /* get the tuple from the inner node */ : slot = econtext->ecxt_innertuple; 0.00 : 5b16d8: 48 8b 7e 10 mov 0x10(%rsi),%rdi : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); 0.00 : 5b16dc: 41 0f bf 70 08 movswl 0x8(%r8),%esi : } 0.00 : 5b16e1: c9 leaveq : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); 0.00 : 5b16e2: e9 19 dd eb ff jmpq 46f400 0.00 : 5b16e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b16ee: 00 00 : case INNER_VAR: /* get the tuple from the inner node */ : slot = econtext->ecxt_innertuple; : break; : : case OUTER_VAR: /* get the tuple from the outer node */ : slot = econtext->ecxt_outertuple; 0.00 : 5b16f0: 48 8b 7e 18 mov 0x18(%rsi),%rdi : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); 0.00 : 5b16f4: 41 0f bf 70 08 movswl 0x8(%r8),%esi : } 0.00 : 5b16f9: c9 leaveq : } : : attnum = variable->varattno; : : /* Fetch the value from the slot */ : return slot_getattr(slot, attnum, isNull); 0.00 : 5b16fa: e9 01 dd eb ff jmpq 46f400 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 29.13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:485 28.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:485 16.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:485 7.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:494 5.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:496 4.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:494 3.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:494 1.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:494 0.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:485 0.97 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:496 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000758dc0 : : * Convert a C string to VARCHAR internal representation. atttypmod : * is the declared length of the type plus VARHDRSZ. : */ : Datum : varcharin(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:485 16.50 : 758dc0: 55 push %rbp 29.13 : 758dc1: 48 89 e5 mov %rsp,%rbp 0.00 : 758dc4: 48 89 5d f0 mov %rbx,-0x10(%rbp) 28.16 : 758dc8: 4c 89 65 f8 mov %r12,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:485 0.97 : 758dcc: 48 83 ec 10 sub $0x10,%rsp : char *s = PG_GETARG_CSTRING(0); 0.00 : 758dd0: 4c 8b 67 20 mov 0x20(%rdi),%r12 : * Convert a C string to VARCHAR internal representation. atttypmod : * is the declared length of the type plus VARHDRSZ. : */ : Datum : varcharin(PG_FUNCTION_ARGS) : { 0.00 : 758dd4: 48 89 fb mov %rdi,%rbx : Oid typelem = PG_GETARG_OID(1); : #endif : int32 atttypmod = PG_GETARG_INT32(2); : VarChar *result; : : result = varchar_input(s, strlen(s), atttypmod); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:494 1.94 : 758dd7: 4c 89 e7 mov %r12,%rdi 0.00 : 758dda: e8 71 0a d1 ff callq 469850 3.88 : 758ddf: 48 8b 53 30 mov 0x30(%rbx),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:494 7.77 : 758de3: 4c 89 e7 mov %r12,%rdi : PG_RETURN_VARCHAR_P(result); : } 0.00 : 758de6: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:496 5.83 : 758dea: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:496 0.97 : 758def: c9 leaveq : Oid typelem = PG_GETARG_OID(1); : #endif : int32 atttypmod = PG_GETARG_INT32(2); : VarChar *result; : : result = varchar_input(s, strlen(s), atttypmod); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:494 4.85 : 758df0: 48 89 c6 mov %rax,%rsi 0.00 : 758df3: e9 d8 fd ff ff jmpq 758bd0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 45.36 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:354 36.08 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:356 6.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:354 6.19 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:356 4.12 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:351 2.06 /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:351 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005cd310 : : } : : /* Conditional pop: pop only if SPI_push_conditional pushed */ : void : SPI_pop_conditional(bool pushed) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:351 4.12 : 5cd310: 55 push %rbp : /* We should be in a state where SPI_connect would succeed */ : Assert(_SPI_curid == _SPI_connected); : if (pushed) /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:354 45.36 : 5cd311: 40 84 ff test %dil,%dil : } : : /* Conditional pop: pop only if SPI_push_conditional pushed */ : void : SPI_pop_conditional(bool pushed) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:351 2.06 : 5cd314: 48 89 e5 mov %rsp,%rbp : /* We should be in a state where SPI_connect would succeed */ : Assert(_SPI_curid == _SPI_connected); : if (pushed) /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:354 6.19 : 5cd317: 74 07 je 5cd320 : _SPI_curid--; 0.00 : 5cd319: 83 2d 54 b1 59 00 01 subl $0x1,0x59b154(%rip) # b68474 <_SPI_curid> : } /home/Computational/mark/src/postgres-andres/src/backend/executor/spi.c:356 42.27 : 5cd320: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1712 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1713 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1716 7.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1705 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1705 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1705 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1707 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1710 5.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1705 5.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1705 5.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1713 4.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1705 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1707 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1710 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1710 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1716 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1707 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1716 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075faf0 : : PG_RETURN_BOOL(result); : } : : Datum : bttextcmp(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1705 6.25 : 75faf0: 55 push %rbp 7.29 : 75faf1: 48 89 e5 mov %rsp,%rbp 0.00 : 75faf4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 6.25 : 75faf8: 4c 89 65 e8 mov %r12,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1705 4.17 : 75fafc: 48 89 fb mov %rdi,%rbx 0.00 : 75faff: 4c 89 6d f0 mov %r13,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1705 5.21 : 75fb03: 4c 89 75 f8 mov %r14,-0x8(%rbp) 5.21 : 75fb07: 48 83 ec 20 sub $0x20,%rsp : text *arg1 = PG_GETARG_TEXT_PP(0); 0.00 : 75fb0b: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 75fb0f: e8 cc f1 01 00 callq 77ece0 : text *arg2 = PG_GETARG_TEXT_PP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1707 6.25 : 75fb14: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : bttextcmp(PG_FUNCTION_ARGS) : { : text *arg1 = PG_GETARG_TEXT_PP(0); 0.00 : 75fb18: 49 89 c5 mov %rax,%r13 : text *arg2 = PG_GETARG_TEXT_PP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1707 3.12 : 75fb1b: e8 c0 f1 01 00 callq 77ece0 : int32 result; : : result = text_cmp(arg1, arg2, PG_GET_COLLATION()); 0.00 : 75fb20: 8b 53 18 mov 0x18(%rbx),%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1710 3.12 : 75fb23: 48 89 c6 mov %rax,%rsi 3.12 : 75fb26: 4c 89 ef mov %r13,%rdi : : Datum : bttextcmp(PG_FUNCTION_ARGS) : { : text *arg1 = PG_GETARG_TEXT_PP(0); : text *arg2 = PG_GETARG_TEXT_PP(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1707 1.04 : 75fb29: 49 89 c4 mov %rax,%r12 : int32 result; : : result = text_cmp(arg1, arg2, PG_GET_COLLATION()); 0.00 : 75fb2c: e8 1f fe ff ff callq 75f950 : : PG_FREE_IF_COPY(arg1, 0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1712 16.67 : 75fb31: 4c 3b 6b 20 cmp 0x20(%rbx),%r13 : { : text *arg1 = PG_GETARG_TEXT_PP(0); : text *arg2 = PG_GETARG_TEXT_PP(1); : int32 result; : : result = text_cmp(arg1, arg2, PG_GET_COLLATION()); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1710 6.25 : 75fb35: 41 89 c6 mov %eax,%r14d : : PG_FREE_IF_COPY(arg1, 0); 0.00 : 75fb38: 74 08 je 75fb42 0.00 : 75fb3a: 4c 89 ef mov %r13,%rdi 0.00 : 75fb3d: e8 3e 90 03 00 callq 798b80 : PG_FREE_IF_COPY(arg2, 1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1713 8.33 : 75fb42: 4c 3b 63 28 cmp 0x28(%rbx),%r12 0.00 : 75fb46: 74 08 je 75fb50 0.00 : 75fb48: 4c 89 e7 mov %r12,%rdi 0.00 : 75fb4b: e8 30 90 03 00 callq 798b80 5.21 : 75fb50: 44 89 f0 mov %r14d,%eax : : PG_RETURN_INT32(result); : } 0.00 : 75fb53: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1716 1.04 : 75fb57: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 3.12 : 75fb5c: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 75fb61: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1716 8.33 : 75fb66: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.46 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 7.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 6.25 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 5.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 5.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1424 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1424 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1431 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 3.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 2.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1429 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1431 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 1.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079db40 : : * If *should_free is set, the caller must pfree stup.tuple when done with it. : */ : static bool : tuplesort_gettuple_common(Tuplesortstate *state, bool forward, : SortTuple *stup, bool *should_free) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 3.12 : 79db40: 55 push %rbp 0.00 : 79db41: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 7.29 : 79db44: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 79db48: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 79db4c: 48 89 fb mov %rdi,%rbx 5.21 : 79db4f: 4c 89 6d e8 mov %r13,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 1.04 : 79db53: 4c 89 75 f0 mov %r14,-0x10(%rbp) 1.04 : 79db57: 49 89 d4 mov %rdx,%r12 0.00 : 79db5a: 4c 89 7d f8 mov %r15,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1421 6.25 : 79db5e: 48 83 ec 30 sub $0x30,%rsp : unsigned int tuplen; : : switch (state->status) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1424 3.12 : 79db62: 8b 07 mov (%rdi),%eax 0.00 : 79db64: 83 f8 04 cmp $0x4,%eax 0.00 : 79db67: 0f 84 93 01 00 00 je 79dd00 0.00 : 79db6d: 83 f8 05 cmp $0x5,%eax 0.00 : 79db70: 0f 84 9a 00 00 00 je 79dc10 3.12 : 79db76: 83 f8 03 cmp $0x3,%eax 0.00 : 79db79: 74 2d je 79dba8 : return true; : } : return false; : : default: : elog(ERROR, "invalid tuplesort state"); 0.00 : 79db7b: ba 70 2e 8e 00 mov $0x8e2e70,%edx 0.00 : 79db80: be 49 06 00 00 mov $0x649,%esi 0.00 : 79db85: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79db8a: e8 91 d8 fd ff callq 77b420 0.00 : 79db8f: be f0 29 8e 00 mov $0x8e29f0,%esi 0.00 : 79db94: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79db99: 31 c0 xor %eax,%eax 0.00 : 79db9b: e8 90 d6 fd ff callq 77b230 0.00 : 79dba0: e8 2b b9 cc ff callq 4694d0 0.00 : 79dba5: 0f 1f 00 nopl (%rax) : switch (state->status) : { : case TSS_SORTEDINMEM: : Assert(forward || state->randomAccess); : *should_free = false; : if (forward) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1429 1.04 : 79dba8: 40 84 f6 test %sil,%sil : : switch (state->status) : { : case TSS_SORTEDINMEM: : Assert(forward || state->randomAccess); : *should_free = false; 0.00 : 79dbab: c6 01 00 movb $0x0,(%rcx) : if (forward) 0.00 : 79dbae: 0f 84 84 01 00 00 je 79dd38 : { : if (state->current < state->memtupcount) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1431 3.12 : 79dbb4: 8b b7 d8 00 00 00 mov 0xd8(%rdi),%esi 1.04 : 79dbba: 3b 77 68 cmp 0x68(%rdi),%esi 0.00 : 79dbbd: 0f 8c dd 02 00 00 jl 79dea0 : /* : * Complain if caller tries to retrieve more tuples than : * originally asked for in a bounded sort. This is because : * returning EOF here might be the wrong thing. : */ : if (state->bounded && state->current >= state->bound) 0.00 : 79dbc3: 80 7f 09 00 cmpb $0x0,0x9(%rdi) : if (state->current < state->memtupcount) : { : *stup = state->memtuples[state->current++]; : return true; : } : state->eof_reached = true; 0.00 : 79dbc7: c6 87 dc 00 00 00 01 movb $0x1,0xdc(%rdi) : /* : * Complain if caller tries to retrieve more tuples than : * originally asked for in a bounded sort. This is because : * returning EOF here might be the wrong thing. : */ : if (state->bounded && state->current >= state->bound) 0.00 : 79dbce: 0f 84 45 01 00 00 je 79dd19 0.00 : 79dbd4: 3b 77 0c cmp 0xc(%rdi),%esi 0.00 : 79dbd7: 0f 8c 3c 01 00 00 jl 79dd19 : elog(ERROR, "retrieved too many tuples in a bounded sort"); 0.00 : 79dbdd: ba 70 2e 8e 00 mov $0x8e2e70,%edx 0.00 : 79dbe2: be a4 05 00 00 mov $0x5a4,%esi 0.00 : 79dbe7: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79dbec: e8 2f d8 fd ff callq 77b420 0.00 : 79dbf1: be d0 2a 8e 00 mov $0x8e2ad0,%esi 0.00 : 79dbf6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79dbfb: 31 c0 xor %eax,%eax 0.00 : 79dbfd: e8 2e d6 fd ff callq 77b230 0.00 : 79dc02: e8 c9 b8 cc ff callq 4694d0 0.00 : 79dc07: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79dc0e: 00 00 : READTUP(state, stup, state->result_tape, tuplen); : return true; : : case TSS_FINALMERGE: : Assert(forward); : *should_free = true; 0.00 : 79dc10: c6 01 01 movb $0x1,(%rcx) : : /* : * This code should match the inner loop of mergeonerun(). : */ : if (state->memtupcount > 0) 0.00 : 79dc13: 44 8b 4f 68 mov 0x68(%rdi),%r9d 0.00 : 79dc17: 45 85 c9 test %r9d,%r9d 0.00 : 79dc1a: 0f 8e f9 00 00 00 jle 79dd19 : { : int srcTape = state->memtuples[0].tupindex; 0.00 : 79dc20: 48 8b 47 60 mov 0x60(%rdi),%rax : Size tuplen; : int tupIndex; : SortTuple *newtup; : : *stup = state->memtuples[0]; 0.00 : 79dc24: 48 8b 38 mov (%rax),%rdi : /* : * This code should match the inner loop of mergeonerun(). : */ : if (state->memtupcount > 0) : { : int srcTape = state->memtuples[0].tupindex; 0.00 : 79dc27: 44 8b 78 14 mov 0x14(%rax),%r15d : Size tuplen; : int tupIndex; : SortTuple *newtup; : : *stup = state->memtuples[0]; 0.00 : 79dc2b: 49 89 3c 24 mov %rdi,(%r12) 0.00 : 79dc2f: 48 8b 50 08 mov 0x8(%rax),%rdx : /* returned tuple is no longer counted in our memory space */ : if (stup->tuple) 0.00 : 79dc33: 48 85 ff test %rdi,%rdi : int srcTape = state->memtuples[0].tupindex; : Size tuplen; : int tupIndex; : SortTuple *newtup; : : *stup = state->memtuples[0]; 0.00 : 79dc36: 49 89 54 24 08 mov %rdx,0x8(%r12) 0.00 : 79dc3b: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 79dc3f: 49 89 44 24 10 mov %rax,0x10(%r12) : /* returned tuple is no longer counted in our memory space */ : if (stup->tuple) 0.00 : 79dc44: 4d 63 e7 movslq %r15d,%r12 0.00 : 79dc47: 74 1e je 79dc67 : { : tuplen = GetMemoryChunkSpace(stup->tuple); : state->availMem += tuplen; : state->mergeavailmem[srcTape] += tuplen; 0.00 : 79dc49: 4d 63 e7 movslq %r15d,%r12 : : *stup = state->memtuples[0]; : /* returned tuple is no longer counted in our memory space */ : if (stup->tuple) : { : tuplen = GetMemoryChunkSpace(stup->tuple); 0.00 : 79dc4c: e8 3f ae ff ff callq 798a90 : state->availMem += tuplen; : state->mergeavailmem[srcTape] += tuplen; 0.00 : 79dc51: 4a 8d 14 e5 00 00 00 lea 0x0(,%r12,8),%rdx 0.00 : 79dc58: 00 0.00 : 79dc59: 48 03 93 98 00 00 00 add 0x98(%rbx),%rdx : *stup = state->memtuples[0]; : /* returned tuple is no longer counted in our memory space */ : if (stup->tuple) : { : tuplen = GetMemoryChunkSpace(stup->tuple); : state->availMem += tuplen; 0.00 : 79dc60: 48 01 43 10 add %rax,0x10(%rbx) : state->mergeavailmem[srcTape] += tuplen; 0.00 : 79dc64: 48 01 02 add %rax,(%rdx) : } : tuplesort_heap_siftup(state, false); : if ((tupIndex = state->mergenext[srcTape]) == 0) 0.00 : 79dc67: 4e 8d 2c a5 00 00 00 lea 0x0(,%r12,4),%r13 0.00 : 79dc6e: 00 : { : tuplen = GetMemoryChunkSpace(stup->tuple); : state->availMem += tuplen; : state->mergeavailmem[srcTape] += tuplen; : } : tuplesort_heap_siftup(state, false); 0.00 : 79dc6f: 31 f6 xor %esi,%esi 0.00 : 79dc71: 48 89 df mov %rbx,%rdi 0.00 : 79dc74: e8 67 f3 ff ff callq 79cfe0 : if ((tupIndex = state->mergenext[srcTape]) == 0) 0.00 : 79dc79: 4c 89 ea mov %r13,%rdx 0.00 : 79dc7c: 48 03 93 80 00 00 00 add 0x80(%rbx),%rdx 0.00 : 79dc83: 44 8b 32 mov (%rdx),%r14d 0.00 : 79dc86: 45 85 f6 test %r14d,%r14d 0.00 : 79dc89: 0f 84 59 02 00 00 je 79dee8 : */ : if ((tupIndex = state->mergenext[srcTape]) == 0) : return true; : } : /* pull next preread tuple from list, insert in heap */ : newtup = &state->memtuples[tupIndex]; 0.00 : 79dc8f: 49 63 c6 movslq %r14d,%rax 0.00 : 79dc92: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 79dc96: 4c 8d 24 c5 00 00 00 lea 0x0(,%rax,8),%r12 0.00 : 79dc9d: 00 0.00 : 79dc9e: 4c 03 63 60 add 0x60(%rbx),%r12 : state->mergenext[srcTape] = newtup->tupindex; 0.00 : 79dca2: 41 8b 44 24 14 mov 0x14(%r12),%eax 0.00 : 79dca7: 89 02 mov %eax,(%rdx) : if (state->mergenext[srcTape] == 0) 0.00 : 79dca9: 48 8b 83 80 00 00 00 mov 0x80(%rbx),%rax 0.00 : 79dcb0: 46 8b 04 28 mov (%rax,%r13,1),%r8d 0.00 : 79dcb4: 45 85 c0 test %r8d,%r8d 0.00 : 79dcb7: 75 0f jne 79dcc8 : state->mergelast[srcTape] = 0; 0.00 : 79dcb9: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 79dcc0: 42 c7 04 28 00 00 00 movl $0x0,(%rax,%r13,1) 0.00 : 79dcc7: 00 : tuplesort_heap_insert(state, newtup, srcTape, false); 0.00 : 79dcc8: 31 c9 xor %ecx,%ecx 0.00 : 79dcca: 44 89 fa mov %r15d,%edx 0.00 : 79dccd: 4c 89 e6 mov %r12,%rsi 0.00 : 79dcd0: 48 89 df mov %rbx,%rdi 0.00 : 79dcd3: e8 f8 f4 ff ff callq 79d1d0 : /* put the now-unused memtuples entry on the freelist */ : newtup->tupindex = state->mergefreelist; 0.00 : 79dcd8: 8b 83 a0 00 00 00 mov 0xa0(%rbx),%eax 0.00 : 79dcde: 41 89 44 24 14 mov %eax,0x14(%r12) : state->mergefreelist = tupIndex; : state->mergeavailslots[srcTape]++; 0.00 : 79dce3: 4c 03 ab 90 00 00 00 add 0x90(%rbx),%r13 0.00 : 79dcea: b8 01 00 00 00 mov $0x1,%eax : if (state->mergenext[srcTape] == 0) : state->mergelast[srcTape] = 0; : tuplesort_heap_insert(state, newtup, srcTape, false); : /* put the now-unused memtuples entry on the freelist */ : newtup->tupindex = state->mergefreelist; : state->mergefreelist = tupIndex; 0.00 : 79dcef: 44 89 b3 a0 00 00 00 mov %r14d,0xa0(%rbx) : state->mergeavailslots[srcTape]++; 0.00 : 79dcf6: 41 83 45 00 01 addl $0x1,0x0(%r13) : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79dcfb: eb 1e jmp 79dd1b 0.00 : 79dcfd: 0f 1f 00 nopl (%rax) : break; : : case TSS_SORTEDONTAPE: : Assert(forward || state->randomAccess); : *should_free = true; : if (forward) 0.00 : 79dd00: 40 84 f6 test %sil,%sil : } : break; : : case TSS_SORTEDONTAPE: : Assert(forward || state->randomAccess); : *should_free = true; 0.00 : 79dd03: c6 01 01 movb $0x1,(%rcx) : if (forward) 0.00 : 79dd06: 0f 84 8c 00 00 00 je 79dd98 : { : if (state->eof_reached) 0.00 : 79dd0c: 80 bf dc 00 00 00 00 cmpb $0x0,0xdc(%rdi) 0.00 : 79dd13: 0f 84 0f 02 00 00 je 79df28 : return true; : } : return false; : : default: : elog(ERROR, "invalid tuplesort state"); 0.00 : 79dd19: 31 c0 xor %eax,%eax : return false; /* keep compiler quiet */ : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 2.08 : 79dd1b: 48 8b 5d d8 mov -0x28(%rbp),%rbx 3.12 : 79dd1f: 4c 8b 65 e0 mov -0x20(%rbp),%r12 2.08 : 79dd23: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 79dd27: 4c 8b 75 f0 mov -0x10(%rbp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 6.25 : 79dd2b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 2.08 : 79dd2f: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1612 8.33 : 79dd30: c3 retq 0.00 : 79dd31: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : return false; : } : else : { : if (state->current <= 0) 0.00 : 79dd38: 8b 87 d8 00 00 00 mov 0xd8(%rdi),%eax 0.00 : 79dd3e: 85 c0 test %eax,%eax 0.00 : 79dd40: 7e d7 jle 79dd19 : : /* : * if all tuples are fetched already then we return last : * tuple, else - tuple before last returned. : */ : if (state->eof_reached) 0.00 : 79dd42: 80 bf dc 00 00 00 00 cmpb $0x0,0xdc(%rdi) 0.00 : 79dd49: 0f 85 c9 01 00 00 jne 79df18 : state->eof_reached = false; : else : { : state->current--; /* last returned tuple */ 0.00 : 79dd4f: 83 e8 01 sub $0x1,%eax : if (state->current <= 0) 0.00 : 79dd52: 85 c0 test %eax,%eax : */ : if (state->eof_reached) : state->eof_reached = false; : else : { : state->current--; /* last returned tuple */ 0.00 : 79dd54: 89 87 d8 00 00 00 mov %eax,0xd8(%rdi) : if (state->current <= 0) 0.00 : 79dd5a: 7e bd jle 79dd19 : return false; : } : *stup = state->memtuples[state->current - 1]; 0.00 : 79dd5c: 48 8b 53 60 mov 0x60(%rbx),%rdx 0.00 : 79dd60: 48 98 cltq 0.00 : 79dd62: 48 8d 44 40 fd lea -0x3(%rax,%rax,2),%rax 0.00 : 79dd67: 48 8d 0c c5 00 00 00 lea 0x0(,%rax,8),%rcx 0.00 : 79dd6e: 00 0.00 : 79dd6f: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 79dd73: 49 89 04 24 mov %rax,(%r12) 0.00 : 79dd77: 48 8b 44 11 08 mov 0x8(%rcx,%rdx,1),%rax 0.00 : 79dd7c: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 79dd81: 48 8b 44 11 10 mov 0x10(%rcx,%rdx,1),%rax 0.00 : 79dd86: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 79dd8b: b8 01 00 00 00 mov $0x1,%eax : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79dd90: eb 89 jmp 79dd1b 0.00 : 79dd92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Backward. : * : * if all tuples are fetched already then we return last tuple, : * else - tuple before last returned. : */ : if (state->eof_reached) 0.00 : 79dd98: 80 bf dc 00 00 00 00 cmpb $0x0,0xdc(%rdi) 0.00 : 79dd9f: 74 6f je 79de10 : /* : * Seek position is pointing just past the zero tuplen at the : * end of file; back up to fetch last tuple's ending length : * word. If seek fails we must have a completely empty file. : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79dda1: 8b b7 d4 00 00 00 mov 0xd4(%rdi),%esi 0.00 : 79dda7: 48 8b 7f 30 mov 0x30(%rdi),%rdi 0.00 : 79ddab: ba 08 00 00 00 mov $0x8,%edx 0.00 : 79ddb0: e8 8b dd ff ff callq 79bb40 0.00 : 79ddb5: 84 c0 test %al,%al 0.00 : 79ddb7: 0f 84 5c ff ff ff je 79dd19 : state->result_tape, : 2 * sizeof(unsigned int))) : return false; : state->eof_reached = false; 0.00 : 79ddbd: c6 83 dc 00 00 00 00 movb $0x0,0xdc(%rbx) : elog(ERROR, "bogus tuple length in backward scan"); : return false; : } : } : : tuplen = getlen(state, state->result_tape, false); 0.00 : 79ddc4: 8b b3 d4 00 00 00 mov 0xd4(%rbx),%esi 0.00 : 79ddca: 31 d2 xor %edx,%edx 0.00 : 79ddcc: 48 89 df mov %rbx,%rdi 0.00 : 79ddcf: e8 0c fb ff ff callq 79d8e0 : /* : * Now we have the length of the prior tuple, back up and read it. : * Note: READTUP expects we are positioned after the initial : * length word of the tuple, so back up to that point. : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79ddd4: 8b b3 d4 00 00 00 mov 0xd4(%rbx),%esi 0.00 : 79ddda: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 79ddde: 89 c2 mov %eax,%edx : elog(ERROR, "bogus tuple length in backward scan"); : return false; : } : } : : tuplen = getlen(state, state->result_tape, false); 0.00 : 79dde0: 41 89 c5 mov %eax,%r13d : /* : * Now we have the length of the prior tuple, back up and read it. : * Note: READTUP expects we are positioned after the initial : * length word of the tuple, so back up to that point. : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79dde3: e8 58 dd ff ff callq 79bb40 0.00 : 79dde8: 84 c0 test %al,%al 0.00 : 79ddea: 0f 84 7b 01 00 00 je 79df6b : state->result_tape, : tuplen)) : elog(ERROR, "bogus tuple length in backward scan"); : READTUP(state, stup, state->result_tape, tuplen); 0.00 : 79ddf0: 8b 93 d4 00 00 00 mov 0xd4(%rbx),%edx 0.00 : 79ddf6: 44 89 e9 mov %r13d,%ecx 0.00 : 79ddf9: 4c 89 e6 mov %r12,%rsi 0.00 : 79ddfc: 48 89 df mov %rbx,%rdi 0.00 : 79ddff: ff 53 50 callq *0x50(%rbx) 0.00 : 79de02: b8 01 00 00 00 mov $0x1,%eax : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79de07: e9 0f ff ff ff jmpq 79dd1b 0.00 : 79de0c: 0f 1f 40 00 nopl 0x0(%rax) : { : /* : * Back up and fetch previously-returned tuple's ending length : * word. If seek fails, assume we are at start of file. : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79de10: 8b b7 d4 00 00 00 mov 0xd4(%rdi),%esi 0.00 : 79de16: 48 8b 7f 30 mov 0x30(%rdi),%rdi 0.00 : 79de1a: ba 04 00 00 00 mov $0x4,%edx 0.00 : 79de1f: e8 1c dd ff ff callq 79bb40 0.00 : 79de24: 84 c0 test %al,%al 0.00 : 79de26: 0f 84 ed fe ff ff je 79dd19 : state->result_tape, : sizeof(unsigned int))) : return false; : tuplen = getlen(state, state->result_tape, false); 0.00 : 79de2c: 8b b3 d4 00 00 00 mov 0xd4(%rbx),%esi 0.00 : 79de32: 31 d2 xor %edx,%edx 0.00 : 79de34: 48 89 df mov %rbx,%rdi 0.00 : 79de37: e8 a4 fa ff ff callq 79d8e0 : : /* : * Back up to get ending length word of tuple before it. : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79de3c: 8b b3 d4 00 00 00 mov 0xd4(%rbx),%esi 0.00 : 79de42: 41 89 c5 mov %eax,%r13d 0.00 : 79de45: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 79de49: 49 8d 55 08 lea 0x8(%r13),%rdx 0.00 : 79de4d: e8 ee dc ff ff callq 79bb40 0.00 : 79de52: 84 c0 test %al,%al 0.00 : 79de54: 0f 85 6a ff ff ff jne 79ddc4 : * If that fails, presumably the prev tuple is the first : * in the file. Back up so that it becomes next to read : * in forward direction (not obviously right, but that is : * what in-memory case does). : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79de5a: 8b b3 d4 00 00 00 mov 0xd4(%rbx),%esi 0.00 : 79de60: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 79de64: 49 8d 55 04 lea 0x4(%r13),%rdx 0.00 : 79de68: e8 d3 dc ff ff callq 79bb40 0.00 : 79de6d: 84 c0 test %al,%al : state->result_tape, : tuplen + sizeof(unsigned int))) : elog(ERROR, "bogus tuple length in backward scan"); 0.00 : 79de6f: ba 70 2e 8e 00 mov $0x8e2e70,%edx 0.00 : 79de74: be 00 06 00 00 mov $0x600,%esi : * If that fails, presumably the prev tuple is the first : * in the file. Back up so that it becomes next to read : * in forward direction (not obviously right, but that is : * what in-memory case does). : */ : if (!LogicalTapeBackspace(state->tapeset, 0.00 : 79de79: 0f 85 9a fe ff ff jne 79dd19 : * length word of the tuple, so back up to that point. : */ : if (!LogicalTapeBackspace(state->tapeset, : state->result_tape, : tuplen)) : elog(ERROR, "bogus tuple length in backward scan"); 0.00 : 79de7f: bf c8 29 8e 00 mov $0x8e29c8,%edi 0.00 : 79de84: e8 97 d5 fd ff callq 77b420 0.00 : 79de89: be 00 2b 8e 00 mov $0x8e2b00,%esi 0.00 : 79de8e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79de93: 31 c0 xor %eax,%eax 0.00 : 79de95: e8 96 d3 fd ff callq 77b230 0.00 : 79de9a: e8 31 b6 cc ff callq 4694d0 0.00 : 79de9f: 90 nop : *should_free = false; : if (forward) : { : if (state->current < state->memtupcount) : { : *stup = state->memtuples[state->current++]; 0.00 : 79dea0: 48 8b 57 60 mov 0x60(%rdi),%rdx 0.00 : 79dea4: 48 63 c6 movslq %esi,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 2.08 : 79dea7: 48 8d 04 40 lea (%rax,%rax,2),%rax 2.08 : 79deab: 48 8d 0c c5 00 00 00 lea 0x0(,%rax,8),%rcx 0.00 : 79deb2: 00 1.04 : 79deb3: 48 8b 04 c2 mov (%rdx,%rax,8),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 8.33 : 79deb7: 49 89 04 24 mov %rax,(%r12) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 1.04 : 79debb: 48 8b 44 11 08 mov 0x8(%rcx,%rdx,1),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 11.46 : 79dec0: 49 89 44 24 08 mov %rax,0x8(%r12) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 3.12 : 79dec5: 48 8b 44 11 10 mov 0x10(%rcx,%rdx,1),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 5.21 : 79deca: 49 89 44 24 10 mov %rax,0x10(%r12) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1433 3.12 : 79decf: 8d 46 01 lea 0x1(%rsi),%eax 1.04 : 79ded2: 89 87 d8 00 00 00 mov %eax,0xd8(%rdi) 2.08 : 79ded8: b8 01 00 00 00 mov $0x1,%eax : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79dedd: e9 39 fe ff ff jmpq 79dd1b 0.00 : 79dee2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * out of preloaded data on this tape, try to read more : * : * Unlike mergeonerun(), we only preload from the single : * tape that's run dry. See mergepreread() comments. : */ : mergeprereadone(state, srcTape); 0.00 : 79dee8: 44 89 fe mov %r15d,%esi 0.00 : 79deeb: 48 89 df mov %rbx,%rdi 0.00 : 79deee: e8 8d fa ff ff callq 79d980 : : /* : * if still no data, we've reached end of run on this tape : */ : if ((tupIndex = state->mergenext[srcTape]) == 0) 0.00 : 79def3: 4c 89 ea mov %r13,%rdx 0.00 : 79def6: 48 03 93 80 00 00 00 add 0x80(%rbx),%rdx 0.00 : 79defd: b8 01 00 00 00 mov $0x1,%eax 0.00 : 79df02: 44 8b 32 mov (%rdx),%r14d 0.00 : 79df05: 45 85 f6 test %r14d,%r14d 0.00 : 79df08: 0f 85 81 fd ff ff jne 79dc8f 0.00 : 79df0e: e9 08 fe ff ff jmpq 79dd1b 0.00 : 79df13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * if all tuples are fetched already then we return last : * tuple, else - tuple before last returned. : */ : if (state->eof_reached) : state->eof_reached = false; 0.00 : 79df18: c6 87 dc 00 00 00 00 movb $0x0,0xdc(%rdi) 0.00 : 79df1f: e9 38 fe ff ff jmpq 79dd5c 0.00 : 79df24: 0f 1f 40 00 nopl 0x0(%rax) : *should_free = true; : if (forward) : { : if (state->eof_reached) : return false; : if ((tuplen = getlen(state, state->result_tape, true)) != 0) 0.00 : 79df28: 8b b7 d4 00 00 00 mov 0xd4(%rdi),%esi 0.00 : 79df2e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 79df33: e8 a8 f9 ff ff callq 79d8e0 0.00 : 79df38: 85 c0 test %eax,%eax 0.00 : 79df3a: 75 14 jne 79df50 : READTUP(state, stup, state->result_tape, tuplen); : return true; : } : else : { : state->eof_reached = true; 0.00 : 79df3c: c6 83 dc 00 00 00 01 movb $0x1,0xdc(%rbx) 0.00 : 79df43: 31 c0 xor %eax,%eax : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79df45: e9 d1 fd ff ff jmpq 79dd1b 0.00 : 79df4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (state->eof_reached) : return false; : if ((tuplen = getlen(state, state->result_tape, true)) != 0) : { : READTUP(state, stup, state->result_tape, tuplen); 0.00 : 79df50: 89 c1 mov %eax,%ecx 0.00 : 79df52: 8b 93 d4 00 00 00 mov 0xd4(%rbx),%edx 0.00 : 79df58: 4c 89 e6 mov %r12,%rsi 0.00 : 79df5b: 48 89 df mov %rbx,%rdi 0.00 : 79df5e: ff 53 50 callq *0x50(%rbx) 0.00 : 79df61: b8 01 00 00 00 mov $0x1,%eax : : default: : elog(ERROR, "invalid tuplesort state"); : return false; /* keep compiler quiet */ : } : } 0.00 : 79df66: e9 b0 fd ff ff jmpq 79dd1b : * length word of the tuple, so back up to that point. : */ : if (!LogicalTapeBackspace(state->tapeset, : state->result_tape, : tuplen)) : elog(ERROR, "bogus tuple length in backward scan"); 0.00 : 79df6b: ba 70 2e 8e 00 mov $0x8e2e70,%edx 0.00 : 79df70: be 0f 06 00 00 mov $0x60f,%esi 0.00 : 79df75: e9 05 ff ff ff jmpq 79de7f Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/ip_tables.ko ---------------------------------------------- 12.80 ??:0 6.71 ??:0 5.49 ??:0 4.88 ??:0 3.66 ??:0 3.66 ??:0 2.44 ??:0 2.44 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.83 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 1.22 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 0.61 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/ip_tables.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000025c0 : ??:0 9.76 : 25c0: 41 57 push %r15 0.00 : 25f2: 48 c7 c0 00 00 00 00 mov 0xd8(%rdi),%r13 ??:0 1.22 : 25f9: 41 56 41 55 41 mov 0x70(%rsp),%rcx 0.00 : 25fe: 54 49 89 fc 55 mov 0x70(%rsp),%rsi 0.00 : 2603: 53 4c 89 add %rdx,%r13 0.00 : 2606: c3 48 81 ec 08 01 cmpq $0x0,0x70(%rsp) 0.61 : 260c: 00 00 48 89 cmove %rax,%rcx 0.61 : 2610: 4c 24 68 48 89 54 cmpq $0x0,0x68(%rsp) 0.00 : 2616: 24 70 89 74 24 78 cmovne 0x68(%rsp),%rax 0.00 : 261c: 8b 97 c4 00 00 00 4c mov %rcx,0x80(%rsp) 0.00 : 2623: 8b 0.00 : 2624: af d8 00 00 00 48 8b mov %rax,0x88(%rsp) 0.00 : 262b: 4c 0.00 : 262c: 24 70 48 8b 74 movzwl 0x6(%r13),%eax 2.44 : 2631: 24 70 49 01 rol $0x8,%ax 0.00 : 2635: d5 48 83 7c 24 and $0x1fff,%eax 0.61 : 263a: 70 00 48 0f 44 c8 48 mov %eax,0xf0(%rsp) 0.61 : 2641: 83 7c 24 68 00 48 0f mov 0xd8(%rdi),%rax 0.00 : 2648: 45 44 24 68 48 mov 0x68(%rsp),%rdi 0.61 : 264d: 89 8c 24 80 movzbl (%rax,%rdx,1),%eax 1.83 : 2651: 00 00 00 48 89 84 24 movb $0x0,0xfd(%rsp) 0.00 : 2658: 88 0.00 : 2659: 00 00 00 41 0f b7 45 mov %rsi,0xe0(%rsp) 0.00 : 2660: 06 0.00 : 2661: 66 c1 c0 08 25 ff 1f mov %rdi,0xe8(%rsp) 0.00 : 2668: 00 0.00 : 2669: 00 89 84 24 f0 00 00 movb $0x2,0xfc(%rsp) 0.00 : 2670: 00 0.00 : 2671: 48 8b 87 and $0xf,%eax 0.00 : 2674: d8 00 00 shl $0x2,%eax 0.61 : 2677: 00 48 8b 7c 24 68 0f mov %eax,0xf4(%rsp) 0.00 : 267e: b6 04 10 c6 mov 0x78(%rsp),%eax 0.00 : 2682: 84 24 fd 00 00 00 00 mov %eax,0xf8(%rsp) 0.61 : 2689: 48 89 b4 24 e0 callq 268e 0.00 : 268e: 00 00 00 48 89 bc 24 mov %gs:0x0,%eax 0.00 : 2695: e8 1.22 : 2696: 00 00 00 add $0x1,%eax 0.00 : 2699: c6 84 24 and $0x1,%eax 0.61 : 269c: fc 00 00 00 02 83 e0 mov %eax,0xb4(%rsp) 0.00 : 26a3: 0f c1 e0 02 89 84 24 add %eax,%gs:0x0 0.00 : 26aa: f4 0.00 : 26ab: 00 00 00 8b mov 0x18(%rbx),%rdx 3.66 : 26af: 44 24 78 89 add $0x30,%rbx 0.00 : 26b3: 84 24 f8 00 00 00 e8 mov %rdx,0xa8(%rsp) 0.00 : 26ba: 00 0.00 : 26bb: 00 00 00 65 8b 04 25 mov 0xa8(%rsp),%rcx 0.00 : 26c2: 00 1.22 : 26c3: 00 00 00 83 c0 01 83 mov %gs:0x0,%edx 0.00 : 26ca: e0 1.22 : 26cb: 01 89 mov %edx,%edx 0.61 : 26cd: 84 24 b4 00 00 00 65 mov 0xa8(%rsp),%rsi 0.00 : 26d4: 01 0.00 : 26d5: 04 25 00 00 00 mov 0x48(%rcx,%rdx,8),%rcx 4.88 : 26da: 00 48 8b 53 18 48 83 mov %rcx,0x90(%rsp) 0.00 : 26e1: c3 0.61 : 26e2: 30 48 89 94 mov 0x40(%rsi),%rax 0.61 : 26e6: 24 a8 00 00 mov (%rax,%rdx,8),%rax ??:0 12.80 : 26ea: 00 48 8b 8c 24 a8 00 mov %rax,0x98(%rsp) 0.00 : 26f1: 00 ??:0 0.61 : 26f2: 00 65 8b 14 mov 0x38(%rsi),%r15 0.00 : 26f6: 25 00 00 00 00 89 d2 add 0x0(,%rdx,8),%r15 0.00 : 26fd: 48 0.00 : 26fe: 8b b4 24 a8 mov 0x78(%rsp),%eax 0.00 : 2702: 00 00 00 48 8b 4c d1 cmpb $0x0,0x0(%rip) # 2709 0.00 : 2709: 48 48 89 mov (%r15),%edi 0.61 : 270c: 8c 24 90 00 00 mov %rax,0x50(%rsp) 0.61 : 2711: 00 48 8b 46 40 48 8b mov %edi,0xa4(%rsp) 0.00 : 2718: 04 d0 48 89 mov 0xc(%rsi,%rax,4),%ebp 0.00 : 271c: 84 24 98 00 00 mov %rbx,0x58(%rsp) 0.00 : 2721: 00 4c 8b 7e 38 4c jne 2bd3 0.00 : 2727: 03 3c d5 00 00 mov 0x50(%rsp),%rdx 0.00 : 272c: 00 00 mov %ebp,%eax 0.00 : 272e: 8b 44 24 78 80 3d 00 mov 0x90(%rsp),%rbp 0.00 : 2735: 00 0.00 : 2736: 00 00 00 41 8b 3f 48 lea 0xd0(%rsp),%r14 0.00 : 273d: 89 0.00 : 273e: 44 24 50 89 bc 24 a4 movl $0x0,0x7c(%rsp) 0.00 : 2745: 00 0.00 : 2746: 00 00 8b 6c add $0x8,%rdx 0.00 : 274a: 86 0c 48 add %rax,%rbp 0.00 : 274d: 89 5c 24 58 0f mov %rdx,0x48(%rsp) 1.22 : 2752: 85 ac 04 00 00 48 nopw 0x0(%rax,%rax,1) 0.00 : 2758: 8b 54 24 50 movzbl 0x53(%rbp),%ecx ??:0 6.71 : 275c: 89 e8 48 mov 0x8(%rbp),%eax ??:0 3.66 : 275f: 8b ac 24 90 and 0xc(%r13),%eax 1.83 : 2763: 00 00 00 4c 8d b4 24 mov 0xf0(%rsp),%esi 0.61 : 276a: d0 00 00 cmp 0x0(%rbp),%eax 1.22 : 276d: 00 c7 mov %ecx,%eax 0.00 : 276f: 44 24 7c setne %dl 0.00 : 2772: 00 00 00 shr $0x3,%eax 0.00 : 2775: 00 48 83 and $0x1,%eax 0.00 : 2778: c2 08 cmp %al,%dl 0.00 : 277a: 48 01 jne 27f8 1.22 : 277c: c5 48 89 mov 0xc(%rbp),%eax 0.00 : 277f: 54 24 48 66 and 0x10(%r13),%eax 0.00 : 2783: 0f 1f 44 cmp 0x4(%rbp),%eax 0.00 : 2786: 00 00 mov %ecx,%eax 1.83 : 2788: 0f b6 4d setne %dl 0.61 : 278b: 53 8b 45 shr $0x4,%eax 0.00 : 278e: 08 41 23 and $0x1,%eax 0.00 : 2791: 45 0c cmp %al,%dl 0.00 : 2793: 8b b4 jne 27f8 1.22 : 2795: 24 f0 00 00 00 3b 45 mov 0x80(%rsp),%rbx 0.00 : 279c: 00 0.00 : 279d: 89 c8 0f 95 mov 0x8(%rbx),%rdx 0.00 : 27a1: c2 c1 e8 mov (%rbx),%rax 0.61 : 27a4: 03 83 e0 01 xor 0x18(%rbp),%rdx 0.61 : 27a8: 38 c2 75 7c xor 0x10(%rbp),%rax 0.61 : 27ac: 8b 45 0c 41 and 0x38(%rbp),%rdx 0.00 : 27b0: 23 45 10 3b and 0x30(%rbp),%rax 0.00 : 27b4: 45 04 89 or %rax,%rdx 0.00 : 27b7: c8 0f mov %ecx,%eax 0.00 : 27b9: 95 c2 c1 setne %dl 0.00 : 27bc: e8 04 83 and $0x1,%eax 0.00 : 27bf: e0 01 cmp %al,%dl 0.00 : 27c1: 38 c2 jne 27f8 0.61 : 27c3: 75 63 48 8b 9c 24 80 mov 0x88(%rsp),%rdi 0.00 : 27ca: 00 0.00 : 27cb: 00 00 48 8b mov 0x8(%rdi),%rdx 0.00 : 27cf: 53 08 48 mov (%rdi),%rax 0.00 : 27d2: 8b 03 48 33 xor 0x28(%rbp),%rdx 1.83 : 27d6: 55 18 48 33 xor 0x20(%rbp),%rax 0.00 : 27da: 45 10 48 23 and 0x48(%rbp),%rdx 0.00 : 27de: 55 38 48 23 and 0x40(%rbp),%rax 0.00 : 27e2: 45 30 48 or %rax,%rdx 1.83 : 27e5: 09 c2 mov %ecx,%eax 0.00 : 27e7: 89 c8 0f setne %dl 0.61 : 27ea: 95 c2 shr %eax 0.00 : 27ec: 83 e0 01 and $0x1,%eax 0.00 : 27ef: 38 c2 cmp %al,%dl 0.00 : 27f1: 75 35 je 2860 0.00 : 27f3: 48 8b bc 24 88 nopl 0x0(%rax,%rax,1) 0.00 : 27f8: 00 00 00 48 movzwl 0x5a(%rbp),%eax 0.00 : 27fc: 8b 57 08 add %rax,%rbp 0.00 : 27ff: 48 8b 07 48 33 55 28 cmpb $0x0,0xfd(%rsp) 0.00 : 2806: 48 1.22 : 2807: 33 45 20 48 23 55 je 2758 0.00 : 280d: 48 48 23 45 40 48 09 cmpb $0x0,0x0(%rip) # 2814 1.22 : 2814: c2 89 c8 0f 95 c2 jne 2bff 0.00 : 281a: d1 e8 83 e0 01 38 c2 mov 0xa4(%rsp),%eax 1.22 : 2821: 74 6d 0f mov %eax,(%r15) 0.00 : 2824: 1f 44 00 00 0f b7 45 mov 0xb4(%rsp),%edx 0.00 : 282b: 5a 48 01 c5 80 bc 24 add %edx,%gs:0x0 0.00 : 2832: fd 1.83 : 2833: 00 00 00 00 0f callq 2838 0.00 : 2838: 84 4b ff ff ff 80 3d cmpb $0x0,0xfd(%rsp) 0.00 : 283f: 00 0.00 : 2840: 00 00 00 00 0f mov $0x0,%eax 0.00 : 2845: 85 e5 03 00 00 cmove 0x7c(%rsp),%eax 1.22 : 284a: 8b 84 24 a4 mov %eax,0x7c(%rsp) 0.00 : 284e: 00 00 00 41 89 07 8b add $0x108,%rsp 0.00 : 2855: 94 pop %rbx 0.00 : 2856: 24 pop %rbp 0.00 : 2857: b4 00 pop %r12 0.00 : 2859: 00 00 pop %r13 0.00 : 285b: 65 01 pop %r14 0.00 : 285d: 14 25 pop %r15 0.00 : 285f: 00 retq 0.00 : 2860: 00 00 00 e8 movzwl 0x50(%rbp),%edx 0.00 : 2864: 00 00 00 test %dx,%dx 0.00 : 2867: 00 80 je 2884 0.00 : 2869: bc 24 fd 00 00 movzbl 0x9(%r13),%eax 0.00 : 286e: 00 00 b8 cmp %ax,%dx 0.00 : 2871: 00 00 mov %ecx,%eax 0.00 : 2873: 00 00 0f setne %dl 0.00 : 2876: 44 44 24 shr $0x6,%eax 0.61 : 2879: 7c 89 44 and $0x1,%eax 0.00 : 287c: 24 7c cmp %al,%dl 0.00 : 287e: 48 81 c4 08 01 00 jne 27f8 0.00 : 2884: 00 5b test %esi,%esi 0.00 : 2886: 5d 41 5c sete %al 0.00 : 2889: 41 5d 41 and 0x52(%rbp),%al 0.00 : 288c: 5e 41 5f shr $0x5,%ecx 1.22 : 288f: c3 0f mov %ecx,%edx 0.00 : 2891: b7 55 50 and $0x1,%edx 0.00 : 2894: 66 85 cmp %dl,%al 0.00 : 2896: d2 74 1b 41 0f b6 jne 27f8 0.00 : 289c: 45 09 66 39 movzwl 0x58(%rbp),%eax 0.61 : 28a0: c2 89 c8 0f lea 0x70(%rbp),%rbx 0.00 : 28a4: 95 c2 c1 e8 06 lea 0x0(%rbp,%rax,1),%rax 0.00 : 28a9: 83 e0 01 cmp %rax,%rbx 0.00 : 28ac: 38 c2 jb 28c4 1.22 : 28ae: 0f 85 jmp 28f0 1.22 : 28b0: 74 ff ff movzwl (%rbx),%eax 0.00 : 28b3: ff 85 f6 add %rax,%rbx 0.00 : 28b6: 0f 94 c0 22 movzwl 0x58(%rbp),%eax 0.00 : 28ba: 45 52 c1 e9 05 lea 0x0(%rbp,%rax,1),%rax 0.00 : 28bf: 89 ca 83 cmp %rax,%rbx 0.00 : 28c2: e2 01 jae 28f0 0.00 : 28c4: 38 d0 0f 85 mov 0x8(%rbx),%rax 0.00 : 28c8: 5c ff ff ff lea 0x20(%rbx),%rdx 0.00 : 28cc: 0f b7 45 mov %r14,%rsi 0.00 : 28cf: 58 48 8d mov %r12,%rdi 0.00 : 28d2: 5d 70 48 8d 44 05 00 mov %rdx,0xd8(%rsp) 0.00 : 28d9: 48 0.00 : 28da: 39 c3 72 16 eb 40 0f mov %rax,0xd0(%rsp) 0.00 : 28e1: b7 0.00 : 28e2: 03 48 01 callq *0x30(%rax) 0.00 : 28e5: c3 0f test %al,%al 0.00 : 28e7: b7 45 jne 28b0 0.00 : 28e9: 58 48 8d 44 05 jmpq 27f8 0.00 : 28ee: 00 48 xchg %ax,%ax 0.00 : 28f0: 39 c3 73 2c 48 mov 0x68(%r12),%eax 1.83 : 28f5: 8b 43 08 48 8d addq $0x1,0x60(%rbp) 0.00 : 28fa: 53 20 4c 89 add %rax,0x68(%rbp) 0.61 : 28fe: f6 4c 89 e7 movzwl 0x58(%rbp),%eax 0.61 : 2902: 48 89 94 24 d8 00 cmpb $0x0,0x7d(%r12) 1.83 : 2908: 00 00 48 89 84 mov %ax,0x36(%rsp) 0.00 : 290d: 24 d0 00 movzwl %ax,%eax 0.00 : 2910: 00 00 ff 50 30 lea 0x0(%rbp,%rax,1),%rbx 0.00 : 2915: 84 c0 75 c7 e9 0a js 2a90 0.00 : 291b: ff ff ff 66 mov 0x8(%rbx),%rax 1.22 : 291f: 90 41 8b 44 24 cmpq $0x0,0x30(%rax) 1.83 : 2924: 68 48 je 2980 0.00 : 2926: 83 45 60 01 48 01 45 mov %rax,0xd0(%rsp) 0.00 : 292d: 68 0.00 : 292e: 0f b7 45 58 lea 0x20(%rbx),%rax 0.00 : 2932: 41 80 7c mov %r14,%rsi 0.00 : 2935: 24 7d 00 mov %r12,%rdi 0.00 : 2938: 66 89 44 24 36 0f b7 mov %rax,0xd8(%rsp) 0.00 : 293f: c0 0.00 : 2940: 48 8d 5c 05 mov 0x8(%rbx),%rax 0.00 : 2944: 00 0f 88 callq *0x30(%rax) 0.00 : 2947: 75 01 00 00 mov %eax,0x7c(%rsp) 0.00 : 294b: 48 8b 43 08 48 cmpl $0xffffffff,0x7c(%rsp) 0.00 : 2950: 83 78 30 00 74 5a 48 mov 0xd8(%r12),%rcx 0.00 : 2957: 89 0.00 : 2958: 84 24 d0 00 00 00 48 mov 0xc4(%r12),%eax 0.00 : 295f: 8d 0.00 : 2960: 43 20 4c 89 f6 4c jne 280d 0.00 : 2966: 89 e7 mov %eax,%edx 0.00 : 2968: 48 89 84 24 movzwl 0x5a(%rbp),%eax 0.00 : 296c: d8 00 00 00 lea (%rcx,%rdx,1),%r13 0.00 : 2970: 48 8b 43 add %rax,%rbp 0.00 : 2973: 08 ff 50 30 89 jmpq 27ff 0.00 : 2978: 44 24 7c 83 7c 24 7c nopl 0x0(%rax,%rax,1) 0.00 : 297f: ff 0.00 : 2980: 49 8b 8c mov 0x20(%rbx),%ebx 0.00 : 2983: 24 d8 test %ebx,%ebx 0.00 : 2985: 00 00 js 29ed 0.00 : 2987: 00 41 8b 84 movzwl 0x5a(%rbp),%eax 0.00 : 298b: 24 c4 00 movslq %ebx,%rdx 0.00 : 298e: 00 00 0f 85 a7 fe ff add 0x90(%rsp),%rdx 0.00 : 2995: ff 0.00 : 2996: 89 c2 0f b7 45 lea 0x0(%rbp,%rax,1),%rax 0.00 : 299b: 5a 4c 8d cmp %rax,%rdx 0.00 : 299e: 2c 11 je 29db 0.00 : 29a0: 48 01 c5 e9 testb $0x2,0x52(%rbp) 0.00 : 29a4: 87 fe jne 29db 0.00 : 29a6: ff ff 0f 1f 84 00 00 mov 0xa8(%rsp),%rsi 0.00 : 29ad: 00 0.00 : 29ae: 00 00 8b mov (%r15),%ecx 0.00 : 29b1: 5b 20 85 cmp 0x34(%rsi),%ecx 0.00 : 29b4: db 78 66 0f b7 45 jae 2c93 1.83 : 29ba: 5a 48 63 d3 48 03 94 mov 0x98(%rsp),%rdi 0.00 : 29c1: 24 0.00 : 29c2: 90 00 mov %ecx,%eax 0.00 : 29c4: 00 00 48 8d mov %rbp,(%rdi,%rax,8) 0.61 : 29c8: 44 05 00 lea 0x1(%rcx),%eax 0.00 : 29cb: 48 39 c2 mov %eax,(%r15) 0.00 : 29ce: 74 3b f6 45 52 02 75 cmpb $0x0,0x0(%rip) # 29d5 0.00 : 29d5: 35 48 8b b4 24 a8 jne 2ca0 0.00 : 29db: 00 00 00 41 8b 0f 3b mov 0x90(%rsp),%rbp 0.00 : 29e2: 4e 0.00 : 29e3: 34 0f mov %ebx,%eax 0.00 : 29e5: 83 d9 02 add %rax,%rbp 0.61 : 29e8: 00 00 48 8b bc jmpq 27ff 1.22 : 29ed: 24 98 00 cmp $0xfffffffb,%ebx 0.00 : 29f0: 00 00 89 c8 48 89 jne 2c88 0.00 : 29f6: 2c c7 8d mov (%r15),%eax 0.00 : 29f9: 41 01 41 89 07 80 3d cmp %eax,0xa4(%rsp) 0.00 : 2a00: 00 00 jb 2a50 0.00 : 2a02: 00 00 00 0f 85 mov 0x48(%rsp),%rdx 0.00 : 2a07: c5 02 00 00 48 8b ac mov 0xa8(%rsp),%rcx 0.00 : 2a0e: 24 0.00 : 2a0f: 90 00 00 00 89 d8 48 mov 0x90(%rsp),%rbp 0.00 : 2a16: 01 0.00 : 2a17: c5 e9 12 mov (%rcx,%rdx,4),%eax 0.00 : 2a1a: fe ff ff add %rax,%rbp 0.00 : 2a1d: 83 fb fb 0f 85 92 02 cmpb $0x0,0x0(%rip) # 2a24 0.00 : 2a24: 00 00 41 8b 07 39 je 27ff 0.00 : 2a2a: 84 24 a4 mov %rbp,%rdx 0.00 : 2a2d: 00 00 00 72 4e 48 8b mov $0x0,%rsi 0.00 : 2a34: 54 24 48 48 8b 8c 24 mov $0x0,%rdi 0.00 : 2a3b: a8 00 xor %eax,%eax 0.00 : 2a3d: 00 00 48 8b ac callq 2a42 0.00 : 2a42: 24 90 00 00 00 jmpq 27ff 0.00 : 2a47: 8b 04 91 48 01 c5 80 nopw 0x0(%rax,%rax,1) 0.00 : 2a4e: 3d 00 0.61 : 2a50: 00 00 00 lea -0x1(%rax),%ecx 0.00 : 2a53: 00 0f 84 mov %ecx,(%r15) 0.00 : 2a56: d5 fd ff ff 48 89 ea cmpb $0x0,0x0(%rip) # 2a5d 0.00 : 2a5d: 48 c7 mov %ecx,%eax 0.00 : 2a5f: c6 00 00 00 00 48 c7 mov 0x98(%rsp),%rbx 0.00 : 2a66: c7 0.00 : 2a67: 00 00 00 00 mov (%rbx,%rax,8),%rbp 0.00 : 2a6b: 31 c0 e8 00 00 00 je 27f8 0.00 : 2a71: 00 e9 b8 mov %rbp,%rdx 0.00 : 2a74: fd ff ff 66 0f 1f 84 mov $0x0,%rsi 0.00 : 2a7b: 00 00 00 00 00 8d 48 mov $0x0,%rdi 0.00 : 2a82: ff 41 xor %eax,%eax 0.00 : 2a84: 89 0f 80 3d 00 callq 2a89 0.00 : 2a89: 00 00 00 00 89 jmpq 27f8 0.00 : 2a8e: c8 48 xchg %ax,%ax 0.00 : 2a90: 8b 9c 24 98 00 00 00 mov 0xa8(%rsp),%rsi 0.00 : 2a97: 48 0.00 : 2a98: 8b 2c c3 0f 84 mov 0x50(%rsp),%rcx 0.00 : 2a9d: 87 fd ff xor %r9d,%r9d 0.00 : 2aa0: ff 48 89 ea 48 mov 0x50(%rsp),%rdi 0.00 : 2aa5: c7 c6 00 00 00 00 48 mov %gs:0x0,%eax 0.00 : 2aac: c7 0.00 : 2aad: c7 00 00 00 mov 0xc(%rsi,%rcx,4),%edx 0.00 : 2ab1: 00 31 cltq 0.00 : 2ab3: c0 e8 00 00 00 00 e9 mov 0x0(,%rdi,8),%rdi 0.00 : 2aba: 6a 0.00 : 2abb: fd ff mov %edx,%ecx 0.00 : 2abd: ff 66 90 48 8b add 0x48(%rsi,%rax,8),%rcx 0.00 : 2ac2: b4 24 a8 00 00 00 48 movq $0x0,0xb8(%rsp) 0.00 : 2ac9: 8b 4c 24 50 45 0.00 : 2ace: 31 c9 48 8b 7c 24 50 mov %rdi,0xc0(%rsp) 0.00 : 2ad5: 65 0.00 : 2ad6: 8b 04 mov (%rsi),%eax 0.00 : 2ad8: 25 00 sub %edx,%eax 0.00 : 2ada: 00 00 00 8b lea (%rcx,%rax,1),%rax 0.00 : 2ade: 54 8e 0c cmp %rax,%rcx 0.00 : 2ae1: 48 98 48 8b 3c fd 00 mov %rax,0xc8(%rsp) 0.00 : 2ae8: 00 0.00 : 2ae9: 00 00 jae 2b53 0.00 : 2aeb: 89 d1 48 03 4c c6 48 mov 0xc0(%rsp),%r11 0.00 : 2af2: 48 0.00 : 2af3: c7 84 24 b8 00 mov %rcx,0x38(%rsp) 0.00 : 2af8: 00 00 00 xor %r9d,%r9d 0.00 : 2afb: 00 00 00 48 89 mov 0x38(%rsp),%rdx 0.00 : 2b00: bc 24 c0 00 00 00 8b mov $0x0,%rdi 0.00 : 2b07: 06 29 d0 48 8d mov $0x6,%ecx 0.00 : 2b0c: 04 01 48 39 movzwl 0x58(%rdx),%eax 0.00 : 2b10: c1 48 89 mov %rdx,%r8 0.00 : 2b13: 84 24 c8 add %rax,%r8 0.00 : 2b16: 00 00 00 73 mov 0x8(%r8),%r10 0.00 : 2b1a: 68 4c 8b 9c lea 0x10(%r10),%rsi 0.00 : 2b1e: 24 c0 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 2b20: 00 00 00 48 89 4c jne 2bad 0.00 : 2b26: 24 38 45 31 lea 0x20(%r8),%r11 0.00 : 2b2a: c9 48 8b xor %r9d,%r9d 0.00 : 2b2d: 54 24 38 48 c7 mov 0x38(%rsp),%rdx 0.00 : 2b32: c7 00 00 00 00 b9 06 mov 0xc8(%rsp),%rcx 0.00 : 2b39: 00 0.00 : 2b3a: 00 00 0f b7 movzwl 0x5a(%rdx),%eax 0.00 : 2b3e: 42 58 49 add %rax,%rdx 0.00 : 2b41: 89 d0 49 cmp %rcx,%rdx 0.00 : 2b44: 01 c0 4d 8b 50 mov %rdx,0x38(%rsp) 0.00 : 2b49: 08 49 jb 2afb 0.00 : 2b4b: 8d 72 10 f3 a6 0f 85 mov %r11,0xc0(%rsp) 0.00 : 2b52: 87 0.00 : 2b53: 00 00 00 4d 8d 58 20 mov 0xb8(%rsp),%rsi 0.00 : 2b5a: 45 0.00 : 2b5b: 31 c9 48 8b 54 24 38 mov 0xc0(%rsp),%rdi 0.00 : 2b62: 48 0.00 : 2b63: 8b 8c 24 mov %r12,%rdx 0.00 : 2b66: c8 00 00 00 0f mov 0x58(%rsp),%rax 0.00 : 2b6b: b7 42 5a 48 01 mov 0x68(%rsp),%r8 0.00 : 2b70: c2 48 39 ca 48 mov 0x70(%rsp),%rcx 0.00 : 2b75: 89 54 24 38 72 mov %r9d,0x20(%rsp) 0.00 : 2b7a: b0 4c 89 9c 24 c0 00 mov $0x0,%r9 0.00 : 2b81: 00 00 48 8b b4 mov %rsi,0x18(%rsp) 0.00 : 2b86: 24 b8 00 00 mov 0x78(%rsp),%esi 0.00 : 2b8a: 00 48 8b bc 24 mov %rdi,0x10(%rsp) 0.00 : 2b8f: c0 00 00 00 4c mov %rax,0x8(%rsp) 0.00 : 2b94: 89 e2 48 8b 44 mov $0x2,%edi 0.00 : 2b99: 24 58 xor %eax,%eax 0.00 : 2b9b: 4c 8b 44 24 68 48 8b movq $0x0,(%rsp) 0.00 : 2ba2: 4c 0.00 : 2ba3: 24 70 44 89 4c callq 2ba8 0.00 : 2ba8: 24 20 49 c7 c1 jmpq 291b 0.00 : 2bad: 00 00 00 00 48 cmp 0x38(%rsp),%rbp 0.00 : 2bb2: 89 74 je 2bbd 0.00 : 2bb4: 24 18 8b 74 add $0x1,%r9d 0.00 : 2bb8: 24 78 48 89 7c jmpq 2b2d 0.00 : 2bbd: 24 10 48 89 44 24 cmpw $0x70,0x36(%rsp) 0.00 : 2bc3: 08 bf je 2c2b 0.00 : 2bc5: 02 00 00 00 31 c0 48 mov %r11,0xc0(%rsp) 0.00 : 2bcc: c7 0.00 : 2bcd: 04 24 00 00 add $0x1,%r9d 0.00 : 2bd1: 00 00 jmp 2b53 0.00 : 2bd3: e8 00 00 00 00 mov 0x20(%rsi,%rax,4),%r9d 0.00 : 2bd8: e9 6e fd mov %edi,%r8d 0.00 : 2bdb: ff ff 48 mov %rbx,%rdx 0.00 : 2bde: 3b 6c 24 38 74 09 41 mov $0x0,%rsi 0.00 : 2be5: 83 c1 01 e9 70 ff ff mov $0x0,%rdi 0.00 : 2bec: ff 66 xor %eax,%eax 0.00 : 2bee: 83 7c 24 add %rcx,%r9 0.00 : 2bf1: 36 70 74 66 mov 0x78(%rsp),%ecx 0.00 : 2bf5: 4c 89 9c 24 c0 callq 2bfa 0.00 : 2bfa: 00 00 00 41 83 jmpq 2727 0.00 : 2bff: c1 01 eb 80 44 8b 4c mov 0xa4(%rsp),%r8d 0.00 : 2c06: 86 0.00 : 2c07: 20 41 89 mov (%r15),%ecx 0.00 : 2c0a: f8 48 89 da 48 c7 c6 mov $0x0,%rdx 0.00 : 2c11: 00 00 00 00 48 c7 c7 mov $0x0,%rsi 0.00 : 2c18: 00 00 00 00 31 c0 49 mov $0x0,%rdi 0.00 : 2c1f: 01 c9 xor %eax,%eax 0.00 : 2c21: 8b 4c 24 78 e8 callq 2c26 0.00 : 2c26: 00 00 00 00 e9 jmpq 281a 0.00 : 2c2b: 28 fb ff ff 44 cmpb $0x0,0x10(%r10) 0.00 : 2c30: 8b 84 jne 2bc5 0.00 : 2c32: 24 a4 00 00 mov 0x20(%r8),%r8d 0.00 : 2c36: 00 41 8b test %r8d,%r8d 0.00 : 2c39: 0f 48 jns 2bc5 0.00 : 2c3b: c7 c2 00 00 00 mov $0x54,%ecx 0.00 : 2c40: 00 48 c7 mov %rbp,%rsi 0.00 : 2c43: c6 00 00 00 00 48 c7 mov $0x0,%rdi 0.00 : 2c4a: c7 00 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 2c4c: 00 00 00 31 c0 e8 jne 2bc5 0.00 : 2c52: 00 00 00 00 e9 ef fb cmp %r11,0xc0(%rsp) 0.00 : 2c59: ff 0.00 : 2c5a: ff 41 80 7a 10 00 75 movq $0x0,0xb8(%rsp) 0.00 : 2c61: 93 45 8b 40 20 0.00 : 2c66: 45 85 c0 79 8a b9 je 2bcd 0.00 : 2c6c: 54 00 00 00 48 89 ee movq $0x0,0xb8(%rsp) 0.00 : 2c73: 48 c7 c7 00 00 0.00 : 2c78: 00 00 f3 a6 0f 85 73 mov %r11,0xc0(%rsp) 0.00 : 2c7f: ff 0.00 : 2c80: ff ff 4c 39 9c jmpq 2bcd 0.00 : 2c85: 24 c0 00 nopl (%rax) 0.00 : 2c88: 00 00 not %ebx 0.00 : 2c8a: 48 c7 84 24 mov %ebx,0x7c(%rsp) 0.00 : 2c8e: b8 00 00 00 00 jmpq 280d 0.00 : 2c93: 00 00 00 0f 84 61 ff movl $0x0,0x7c(%rsp) 0.00 : 2c9a: ff 0.00 : 2c9b: ff 48 c7 84 24 jmpq 280d 0.00 : 2ca0: b8 00 00 mov %rbp,%rdx 0.00 : 2ca3: 00 00 00 00 00 4c 89 mov $0x0,%rsi 0.00 : 2caa: 9c 24 c0 00 00 00 e9 mov $0x0,%rdi 0.00 : 2cb1: 48 ff xor %eax,%eax 0.00 : 2cb3: ff ff 0f 1f 00 callq 2cb8 0.00 : 2cb8: f7 d3 89 5c 24 jmpq 29db : 2cbd: 7c e9 7a nopl (%rax) : 2cc0: fb ff push %r15 : 2cc2: ff c7 44 24 7c mov $0x80d0,%esi : 2cc7: 00 00 push %r14 : 2cc9: 00 00 e9 mov %rdi,%r14 : 2ccc: 6d fb push %r13 : 2cce: ff ff push %r12 : 2cd0: 48 89 ea xor %r12d,%r12d : 2cd3: 48 push %rbp : 2cd4: c7 push %rbx : 2cd5: c6 00 00 00 sub $0x8,%rsp : 2cd9: 00 48 c7 mov 0x10(%rdi),%ebp : 2cdc: c7 00 mov %ebp,%edi : 2cde: 00 00 00 31 c0 callq 2ce3 : 2ce3: e8 00 00 mov %eax,%r15d : 2ce6: 00 00 mov %eax,%eax : 2ce8: e9 1e fd ff lea (%rax,%rax,8),%rdx Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 36.56 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1250 6.45 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1116 4.30 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1241 4.30 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1247 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1142 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1254 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1016 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1238 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1238 2.15 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1143 2.15 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1237 2.15 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1254 2.15 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1257 2.15 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1152 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1125 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1133 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1133 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1140 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1140 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1148 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1140 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1140 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1144 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1144 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1148 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1257 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1152 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1017 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:974 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1238 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1241 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1247 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1250 1.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1250 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000054ceb0 : : */ : static int : acquire_sample_rows(Relation onerel, int elevel, : HeapTuple *rows, int targrows, : double *totalrows, double *totaldeadrows) : { 0.00 : 54ceb0: 55 push %rbp 0.00 : 54ceb1: 48 89 e5 mov %rsp,%rbp 0.00 : 54ceb4: 41 57 push %r15 0.00 : 54ceb6: 41 56 push %r14 0.00 : 54ceb8: 41 55 push %r13 0.00 : 54ceba: 41 54 push %r12 0.00 : 54cebc: 53 push %rbx 0.00 : 54cebd: 48 81 ec c8 00 00 00 sub $0xc8,%rsp 0.00 : 54cec4: 89 b5 44 ff ff ff mov %esi,-0xbc(%rbp) : BlockSamplerData bs; : double rstate; : : Assert(targrows > 0); : : totalblocks = RelationGetNumberOfBlocks(onerel); 0.00 : 54ceca: 31 f6 xor %esi,%esi : */ : static int : acquire_sample_rows(Relation onerel, int elevel, : HeapTuple *rows, int targrows, : double *totalrows, double *totaldeadrows) : { 0.00 : 54cecc: 89 8d 34 ff ff ff mov %ecx,-0xcc(%rbp) 0.00 : 54ced2: 48 89 95 38 ff ff ff mov %rdx,-0xc8(%rbp) 0.00 : 54ced9: 4c 89 85 28 ff ff ff mov %r8,-0xd8(%rbp) 0.00 : 54cee0: 4c 89 8d 20 ff ff ff mov %r9,-0xe0(%rbp) 0.00 : 54cee7: 48 89 bd 48 ff ff ff mov %rdi,-0xb8(%rbp) : BlockSamplerData bs; : double rstate; : : Assert(targrows > 0); : : totalblocks = RelationGetNumberOfBlocks(onerel); 0.00 : 54ceee: e8 9d 87 12 00 callq 675690 : : /* Need a cutoff xmin for HeapTupleSatisfiesVacuum */ : OldestXmin = GetOldestXmin(onerel, true); 0.00 : 54cef3: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 54cefa: be 01 00 00 00 mov $0x1,%esi : BlockSamplerData bs; : double rstate; : : Assert(targrows > 0); : : totalblocks = RelationGetNumberOfBlocks(onerel); 0.00 : 54ceff: 89 45 94 mov %eax,-0x6c(%rbp) : : /* Need a cutoff xmin for HeapTupleSatisfiesVacuum */ : OldestXmin = GetOldestXmin(onerel, true); 0.00 : 54cf02: e8 99 4a 13 00 callq 6819a0 : : /* Prepare for sampling block numbers */ : BlockSampler_Init(&bs, totalblocks, targrows); : /* Prepare for sampling rows */ : rstate = anl_init_selection_state(targrows); 0.00 : 54cf07: 8b bd 34 ff ff ff mov -0xcc(%rbp),%edi : Assert(targrows > 0); : : totalblocks = RelationGetNumberOfBlocks(onerel); : : /* Need a cutoff xmin for HeapTupleSatisfiesVacuum */ : OldestXmin = GetOldestXmin(onerel, true); 0.00 : 54cf0d: 89 45 98 mov %eax,-0x68(%rbp) : : /* Prepare for sampling block numbers */ : BlockSampler_Init(&bs, totalblocks, targrows); : /* Prepare for sampling rows */ : rstate = anl_init_selection_state(targrows); 0.00 : 54cf10: e8 9b f8 ff ff callq 54c7b0 : } : : static bool : BlockSampler_HasMore(BlockSampler bs) : { : return (bs->t < bs->N) && (bs->m < bs->n); 0.00 : 54cf15: 8b 4d 94 mov -0x6c(%rbp),%ecx : OldestXmin = GetOldestXmin(onerel, true); : : /* Prepare for sampling block numbers */ : BlockSampler_Init(&bs, totalblocks, targrows); : /* Prepare for sampling rows */ : rstate = anl_init_selection_state(targrows); 0.00 : 54cf18: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) : } : : static bool : BlockSampler_HasMore(BlockSampler bs) : { : return (bs->t < bs->N) && (bs->m < bs->n); 0.00 : 54cf1d: 85 c9 test %ecx,%ecx 0.00 : 54cf1f: 75 2f jne 54cf50 : double p; /* probability to skip block */ : double V; /* random */ : : Assert(BlockSampler_HasMore(bs)); /* hence K > 0 and k > 0 */ : : if ((BlockNumber) k >= K) 0.00 : 54cf21: 66 0f 57 c9 xorpd %xmm1,%xmm1 0.00 : 54cf25: c7 85 6c ff ff ff 00 movl $0x0,-0x94(%rbp) 0.00 : 54cf2c: 00 00 00 0.00 : 54cf2f: c7 45 a4 00 00 00 00 movl $0x0,-0x5c(%rbp) 0.00 : 54cf36: 31 db xor %ebx,%ebx 0.00 : 54cf38: f2 0f 11 8d 78 ff ff movsd %xmm1,-0x88(%rbp) 0.00 : 54cf3f: ff 0.00 : 54cf40: f2 0f 11 4d 80 movsd %xmm1,-0x80(%rbp) 0.00 : 54cf45: e9 6b 01 00 00 jmpq 54d0b5 0.00 : 54cf4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : static bool : BlockSampler_HasMore(BlockSampler bs) : { : return (bs->t < bs->N) && (bs->m < bs->n); 0.00 : 54cf50: 8b 95 34 ff ff ff mov -0xcc(%rbp),%edx 0.00 : 54cf56: 85 d2 test %edx,%edx 0.00 : 54cf58: 7e c7 jle 54cf21 0.00 : 54cf5a: f2 0f 10 05 f6 55 27 movsd 0x2755f6(%rip),%xmm0 # 7c2558 <__func__.23237+0x18> 0.00 : 54cf61: 00 0.00 : 54cf62: c7 85 6c ff ff ff 00 movl $0x0,-0x94(%rbp) 0.00 : 54cf69: 00 00 00 0.00 : 54cf6c: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) 0.00 : 54cf73: 00 00 00 00 0.00 : 54cf77: 48 c7 85 78 ff ff ff movq $0x0,-0x88(%rbp) 0.00 : 54cf7e: 00 00 00 00 0.00 : 54cf82: 45 31 f6 xor %r14d,%r14d 0.00 : 54cf85: f2 0f 11 45 88 movsd %xmm0,-0x78(%rbp) 0.00 : 54cf8a: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 54cf91: 00 0.00 : 54cf92: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 54cf99: 00 : } : : static BlockNumber : BlockSampler_Next(BlockSampler bs) : { : BlockNumber K = bs->N - bs->t; /* remaining blocks */ 0.00 : 54cf9a: 8b 5d 94 mov -0x6c(%rbp),%ebx : */ : static int : acquire_sample_rows(Relation onerel, int elevel, : HeapTuple *rows, int targrows, : double *totalrows, double *totaldeadrows) : { 0.00 : 54cf9d: 44 8b 6d a8 mov -0x58(%rbp),%r13d 0.00 : 54cfa1: 44 8b a5 34 ff ff ff mov -0xcc(%rbp),%r12d : } : : static BlockNumber : BlockSampler_Next(BlockSampler bs) : { : BlockNumber K = bs->N - bs->t; /* remaining blocks */ 0.00 : 54cfa8: 44 29 f3 sub %r14d,%ebx : */ : static int : acquire_sample_rows(Relation onerel, int elevel, : HeapTuple *rows, int targrows, : double *totalrows, double *totaldeadrows) : { 0.00 : 54cfab: 45 29 ec sub %r13d,%r12d : double p; /* probability to skip block */ : double V; /* random */ : : Assert(BlockSampler_HasMore(bs)); /* hence K > 0 and k > 0 */ : : if ((BlockNumber) k >= K) 0.00 : 54cfae: 44 39 e3 cmp %r12d,%ebx 0.00 : 54cfb1: 0f 87 c0 03 00 00 ja 54d377 : } : : static bool : BlockSampler_HasMore(BlockSampler bs) : { : return (bs->t < bs->N) && (bs->m < bs->n); 0.00 : 54cfb7: 41 83 c5 01 add $0x1,%r13d : : if ((BlockNumber) k >= K) : { : /* need all the rest */ : bs->m++; : return bs->t++; 0.00 : 54cfbb: 44 89 75 9c mov %r14d,-0x64(%rbp) 0.00 : 54cfbf: 41 83 c6 01 add $0x1,%r14d : } : : static bool : BlockSampler_HasMore(BlockSampler bs) : { : return (bs->t < bs->N) && (bs->m < bs->n); 0.00 : 54cfc3: 44 89 6d a4 mov %r13d,-0x5c(%rbp) : Buffer targbuffer; : Page targpage; : OffsetNumber targoffset, : maxoffset; : : vacuum_delay_point(); 0.00 : 54cfc7: e8 94 5a 05 00 callq 5a2a60 : * looking at it. We also choose to hold sharelock on the buffer : * throughout --- we could release and re-acquire sharelock for each : * tuple, but since we aren't doing much work per tuple, the extra : * lock traffic is probably better avoided. : */ : targbuffer = ReadBufferExtended(onerel, MAIN_FORKNUM, targblock, 0.00 : 54cfcc: 4c 8b 05 4d c7 62 00 mov 0x62c74d(%rip),%r8 # b79720 0.00 : 54cfd3: 8b 55 9c mov -0x64(%rbp),%edx 0.00 : 54cfd6: 31 c9 xor %ecx,%ecx 0.00 : 54cfd8: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 54cfdf: 31 f6 xor %esi,%esi 0.00 : 54cfe1: e8 8a 95 12 00 callq 676570 : RBM_NORMAL, vac_strategy); : LockBuffer(targbuffer, BUFFER_LOCK_SHARE); 0.00 : 54cfe6: be 01 00 00 00 mov $0x1,%esi 0.00 : 54cfeb: 89 c7 mov %eax,%edi : * looking at it. We also choose to hold sharelock on the buffer : * throughout --- we could release and re-acquire sharelock for each : * tuple, but since we aren't doing much work per tuple, the extra : * lock traffic is probably better avoided. : */ : targbuffer = ReadBufferExtended(onerel, MAIN_FORKNUM, targblock, 0.00 : 54cfed: 89 45 a0 mov %eax,-0x60(%rbp) : RBM_NORMAL, vac_strategy); : LockBuffer(targbuffer, BUFFER_LOCK_SHARE); 0.00 : 54cff0: e8 1b 77 12 00 callq 674710 : targpage = BufferGetPage(targbuffer); 0.00 : 54cff5: 8b 45 a0 mov -0x60(%rbp),%eax 0.00 : 54cff8: 85 c0 test %eax,%eax 0.00 : 54cffa: 0f 88 f8 03 00 00 js 54d3f8 0.00 : 54d000: 8b 45 a0 mov -0x60(%rbp),%eax 0.00 : 54d003: 83 e8 01 sub $0x1,%eax 0.00 : 54d006: 4c 63 e8 movslq %eax,%r13 0.00 : 54d009: 49 c1 e5 0d shl $0xd,%r13 0.00 : 54d00d: 4c 03 2d e4 2a 67 00 add 0x672ae4(%rip),%r13 # bbfaf8 : maxoffset = PageGetMaxOffsetNumber(targpage); 0.00 : 54d014: 41 0f b7 45 0c movzwl 0xc(%r13),%eax /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1116 6.45 : 54d019: 66 83 f8 18 cmp $0x18,%ax 0.00 : 54d01d: 0f 86 7d 00 00 00 jbe 54d0a0 0.00 : 54d023: 0f b7 c0 movzwl %ax,%eax 0.00 : 54d026: 48 83 e8 18 sub $0x18,%rax 0.00 : 54d02a: 49 89 c7 mov %rax,%r15 0.00 : 54d02d: 49 c1 ef 02 shr $0x2,%r15 : : /* Inner loop over all tuples on the selected page */ : for (targoffset = FirstOffsetNumber; targoffset <= maxoffset; targoffset++) 0.00 : 54d031: 66 45 85 ff test %r15w,%r15w 0.00 : 54d035: 74 69 je 54d0a0 : if (ItemIdIsDead(itemid)) : deadrows += 1; : continue; : } : : ItemPointerSet(&targtuple.t_self, targblock, targoffset); 0.00 : 54d037: 8b 45 9c mov -0x64(%rbp),%eax 0.00 : 54d03a: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 54d040: c1 e8 10 shr $0x10,%eax 0.00 : 54d043: 66 89 85 50 ff ff ff mov %ax,-0xb0(%rbp) 0.00 : 54d04a: eb 0e jmp 54d05a 0.00 : 54d04c: 0f 1f 40 00 nopl 0x0(%rax) : LockBuffer(targbuffer, BUFFER_LOCK_SHARE); : targpage = BufferGetPage(targbuffer); : maxoffset = PageGetMaxOffsetNumber(targpage); : : /* Inner loop over all tuples on the selected page */ : for (targoffset = FirstOffsetNumber; targoffset <= maxoffset; targoffset++) 0.00 : 54d050: 41 83 c4 01 add $0x1,%r12d 0.00 : 54d054: 66 45 39 e7 cmp %r12w,%r15w 0.00 : 54d058: 72 46 jb 54d0a0 : { : ItemId itemid; : HeapTupleData targtuple; : bool sample_it = false; : : itemid = PageGetItemId(targpage, targoffset); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1125 1.08 : 54d05a: 41 0f b7 c4 movzwl %r12w,%eax : * We ignore unused and redirect line pointers. DEAD line : * pointers should be counted as dead, because we need vacuum to : * run to get rid of them. Note that this rule agrees with the : * way that heap_page_prune() counts things. : */ : if (!ItemIdIsNormal(itemid)) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1133 1.08 : 54d05e: 48 8d 50 03 lea 0x3(%rax),%rdx 0.00 : 54d062: 41 8b 44 95 08 mov 0x8(%r13,%rdx,4),%eax 1.08 : 54d067: 25 00 80 01 00 and $0x18000,%eax 0.00 : 54d06c: 3d 00 80 00 00 cmp $0x8000,%eax 0.00 : 54d071: 0f 84 f9 00 00 00 je 54d170 : { : if (ItemIdIsDead(itemid)) 0.00 : 54d077: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 54d07c: 75 d2 jne 54d050 : * pgstat_report_analyze's stats adjustments come out : * right. (Note: this works out properly when the row was : * both inserted and deleted in our xact.) : */ : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetUpdateXid(targtuple.t_data))) : deadrows += 1; 0.00 : 54d07e: f2 0f 10 05 d2 20 26 movsd 0x2620d2(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 54d085: 00 : LockBuffer(targbuffer, BUFFER_LOCK_SHARE); : targpage = BufferGetPage(targbuffer); : maxoffset = PageGetMaxOffsetNumber(targpage); : : /* Inner loop over all tuples on the selected page */ : for (targoffset = FirstOffsetNumber; targoffset <= maxoffset; targoffset++) 0.00 : 54d086: 41 83 c4 01 add $0x1,%r12d 0.00 : 54d08a: 66 45 39 e7 cmp %r12w,%r15w : * pgstat_report_analyze's stats adjustments come out : * right. (Note: this works out properly when the row was : * both inserted and deleted in our xact.) : */ : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetUpdateXid(targtuple.t_data))) : deadrows += 1; 0.00 : 54d08e: f2 0f 58 45 80 addsd -0x80(%rbp),%xmm0 0.00 : 54d093: f2 0f 11 45 80 movsd %xmm0,-0x80(%rbp) : LockBuffer(targbuffer, BUFFER_LOCK_SHARE); : targpage = BufferGetPage(targbuffer); : maxoffset = PageGetMaxOffsetNumber(targpage); : : /* Inner loop over all tuples on the selected page */ : for (targoffset = FirstOffsetNumber; targoffset <= maxoffset; targoffset++) 0.00 : 54d098: 73 c0 jae 54d05a 0.00 : 54d09a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : samplerows += 1; : } : } : : /* Now release the lock and pin on the page */ : UnlockReleaseBuffer(targbuffer); 0.00 : 54d0a0: 8b 7d a0 mov -0x60(%rbp),%edi 0.00 : 54d0a3: e8 88 7e 12 00 callq 674f30 : } : : static bool : BlockSampler_HasMore(BlockSampler bs) : { : return (bs->t < bs->N) && (bs->m < bs->n); 0.00 : 54d0a8: 44 39 75 94 cmp %r14d,-0x6c(%rbp) 0.00 : 54d0ac: 0f 87 5e 03 00 00 ja 54d410 0.00 : 54d0b2: 8b 5d a4 mov -0x5c(%rbp),%ebx : * : * Otherwise we need to sort the collected tuples by position : * (itempointer). It's not worth worrying about corner cases where the : * tuples are already sorted. : */ : if (numrows == targrows) 0.00 : 54d0b5: 8b 85 34 ff ff ff mov -0xcc(%rbp),%eax 0.00 : 54d0bb: 39 85 6c ff ff ff cmp %eax,-0x94(%rbp) 0.00 : 54d0c1: 0f 84 18 04 00 00 je 54d4df : * Estimate total numbers of rows in relation. For live rows, use : * vac_estimate_reltuples; for dead rows, we have no source of old : * information, so we have to assume the density is the same in unseen : * pages as in the pages we scanned. : */ : *totalrows = vac_estimate_reltuples(onerel, true, 0.00 : 54d0c7: 8b 55 94 mov -0x6c(%rbp),%edx 0.00 : 54d0ca: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 54d0d1: 89 d9 mov %ebx,%ecx 0.00 : 54d0d3: f2 0f 10 85 78 ff ff movsd -0x88(%rbp),%xmm0 0.00 : 54d0da: ff 0.00 : 54d0db: be 01 00 00 00 mov $0x1,%esi 0.00 : 54d0e0: e8 9b 62 05 00 callq 5a3380 0.00 : 54d0e5: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 54d0ec: f2 0f 11 01 movsd %xmm0,(%rcx) : totalblocks, : bs.m, : liverows); : if (bs.m > 0) 0.00 : 54d0f0: 8b 45 a4 mov -0x5c(%rbp),%eax 0.00 : 54d0f3: 85 c0 test %eax,%eax 0.00 : 54d0f5: 0f 8e d1 03 00 00 jle 54d4cc : *totaldeadrows = floor((deadrows / bs.m) * totalblocks + 0.5); 0.00 : 54d0fb: f2 0f 10 4d 80 movsd -0x80(%rbp),%xmm1 0.00 : 54d100: f2 0f 2a 45 a4 cvtsi2sdl -0x5c(%rbp),%xmm0 0.00 : 54d105: 8b 45 94 mov -0x6c(%rbp),%eax 0.00 : 54d108: f2 0f 5e c8 divsd %xmm0,%xmm1 0.00 : 54d10c: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 54d110: f2 48 0f 2a c8 cvtsi2sd %rax,%xmm1 0.00 : 54d115: f2 0f 59 c1 mulsd %xmm1,%xmm0 0.00 : 54d119: f2 0f 58 05 c7 a8 32 addsd 0x32a8c7(%rip),%xmm0 # 8779e8 <__func__.20024+0x28> 0.00 : 54d120: 00 0.00 : 54d121: e8 ea ce f1 ff callq 46a010 0.00 : 54d126: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : 54d12d: f2 0f 11 00 movsd %xmm0,(%rax) : *totaldeadrows = 0.0; : : /* : * Emit some interesting relation info : */ : ereport(elevel, 0.00 : 54d131: 8b bd 44 ff ff ff mov -0xbc(%rbp),%edi 0.00 : 54d137: 45 31 c0 xor %r8d,%r8d 0.00 : 54d13a: b9 c0 79 87 00 mov $0x8779c0,%ecx 0.00 : 54d13f: ba 15 05 00 00 mov $0x515,%edx 0.00 : 54d144: be 5d 6d 8b 00 mov $0x8b6d5d,%esi 0.00 : 54d149: e8 72 d9 22 00 callq 77aac0 0.00 : 54d14e: 84 c0 test %al,%al 0.00 : 54d150: 0f 85 ab 03 00 00 jne 54d501 : bs.m, totalblocks, : liverows, deadrows, : numrows, *totalrows))); : : return numrows; : } 0.00 : 54d156: 8b 85 6c ff ff ff mov -0x94(%rbp),%eax 0.00 : 54d15c: 48 81 c4 c8 00 00 00 add $0xc8,%rsp 0.00 : 54d163: 5b pop %rbx 0.00 : 54d164: 41 5c pop %r12 0.00 : 54d166: 41 5d pop %r13 0.00 : 54d168: 41 5e pop %r14 0.00 : 54d16a: 41 5f pop %r15 0.00 : 54d16c: c9 leaveq 0.00 : 54d16d: c3 retq 0.00 : 54d16e: 66 90 xchg %ax,%ax : if (ItemIdIsDead(itemid)) : deadrows += 1; : continue; : } : : ItemPointerSet(&targtuple.t_self, targblock, targoffset); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1140 1.08 : 54d170: 0f b7 4d 9c movzwl -0x64(%rbp),%ecx 0.00 : 54d174: 0f b7 85 50 ff ff ff movzwl -0xb0(%rbp),%eax : targtuple.t_data = (HeapTupleHeader) PageGetItem(targpage, itemid); : targtuple.t_len = ItemIdGetLength(itemid); : : switch (HeapTupleSatisfiesVacuum(&targtuple, : OldestXmin, : targbuffer)) 0.00 : 54d17b: 48 8d 7d b0 lea -0x50(%rbp),%rdi : if (ItemIdIsDead(itemid)) : deadrows += 1; : continue; : } : : ItemPointerSet(&targtuple.t_self, targblock, targoffset); 1.08 : 54d17f: 66 44 89 65 b8 mov %r12w,-0x48(%rbp) : targtuple.t_data = (HeapTupleHeader) PageGetItem(targpage, itemid); : targtuple.t_len = ItemIdGetLength(itemid); : : switch (HeapTupleSatisfiesVacuum(&targtuple, : OldestXmin, : targbuffer)) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1148 1.08 : 54d184: 8b 75 98 mov -0x68(%rbp),%esi : if (ItemIdIsDead(itemid)) : deadrows += 1; : continue; : } : : ItemPointerSet(&targtuple.t_self, targblock, targoffset); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1140 1.08 : 54d187: 66 89 4d b6 mov %cx,-0x4a(%rbp) : : targtuple.t_tableOid = RelationGetRelid(onerel); 0.00 : 54d18b: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx : if (ItemIdIsDead(itemid)) : deadrows += 1; : continue; : } : : ItemPointerSet(&targtuple.t_self, targblock, targoffset); 1.08 : 54d192: 66 89 45 b4 mov %ax,-0x4c(%rbp) : : targtuple.t_tableOid = RelationGetRelid(onerel); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1142 3.23 : 54d196: 8b 41 40 mov 0x40(%rcx),%eax 0.00 : 54d199: 89 45 bc mov %eax,-0x44(%rbp) : targtuple.t_data = (HeapTupleHeader) PageGetItem(targpage, itemid); 0.00 : 54d19c: 41 0f b7 44 95 08 movzwl 0x8(%r13,%rdx,4),%eax 0.00 : 54d1a2: 25 ff 7f 00 00 and $0x7fff,%eax /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1143 2.15 : 54d1a7: 49 8d 44 05 00 lea 0x0(%r13,%rax,1),%rax 0.00 : 54d1ac: 48 89 45 c0 mov %rax,-0x40(%rbp) : targtuple.t_len = ItemIdGetLength(itemid); 0.00 : 54d1b0: 41 0f b7 44 95 0a movzwl 0xa(%r13,%rdx,4),%eax : : switch (HeapTupleSatisfiesVacuum(&targtuple, : OldestXmin, : targbuffer)) 0.00 : 54d1b6: 8b 55 a0 mov -0x60(%rbp),%edx : : ItemPointerSet(&targtuple.t_self, targblock, targoffset); : : targtuple.t_tableOid = RelationGetRelid(onerel); : targtuple.t_data = (HeapTupleHeader) PageGetItem(targpage, itemid); : targtuple.t_len = ItemIdGetLength(itemid); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1144 1.08 : 54d1b9: 66 d1 e8 shr %ax 0.00 : 54d1bc: 0f b7 c0 movzwl %ax,%eax 1.08 : 54d1bf: 89 45 b0 mov %eax,-0x50(%rbp) : : switch (HeapTupleSatisfiesVacuum(&targtuple, : OldestXmin, : targbuffer)) 0.00 : 54d1c2: e8 59 79 25 00 callq 7a4b20 0.00 : 54d1c7: 83 f8 04 cmp $0x4,%eax 0.00 : 54d1ca: 76 34 jbe 54d200 : else : liverows += 1; : break; : : default: : elog(ERROR, "unexpected HeapTupleSatisfiesVacuum result"); 0.00 : 54d1cc: ba c0 79 87 00 mov $0x8779c0,%edx 0.00 : 54d1d1: be b9 04 00 00 mov $0x4b9,%esi 0.00 : 54d1d6: bf 5d 6d 8b 00 mov $0x8b6d5d,%edi 0.00 : 54d1db: e8 40 e2 22 00 callq 77b420 0.00 : 54d1e0: be 68 30 7b 00 mov $0x7b3068,%esi 0.00 : 54d1e5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 54d1ea: 31 c0 xor %eax,%eax 0.00 : 54d1ec: e8 3f e0 22 00 callq 77b230 0.00 : 54d1f1: e8 da c2 f1 ff callq 4694d0 0.00 : 54d1f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 54d1fd: 00 00 00 : targtuple.t_data = (HeapTupleHeader) PageGetItem(targpage, itemid); : targtuple.t_len = ItemIdGetLength(itemid); : : switch (HeapTupleSatisfiesVacuum(&targtuple, : OldestXmin, : targbuffer)) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1148 1.08 : 54d200: 89 c0 mov %eax,%eax 0.00 : 54d202: ff 24 c5 50 79 87 00 jmpq *0x877950(,%rax,8) 0.00 : 54d209: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * we must count the row as dead to make : * pgstat_report_analyze's stats adjustments come out : * right. (Note: this works out properly when the row was : * both inserted and deleted in our xact.) : */ : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetUpdateXid(targtuple.t_data))) 0.00 : 54d210: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 54d214: 0f b7 57 14 movzwl 0x14(%rdi),%edx 0.00 : 54d218: 89 d0 mov %edx,%eax 0.00 : 54d21a: 25 00 18 00 00 and $0x1800,%eax 0.00 : 54d21f: 3d 00 10 00 00 cmp $0x1000,%eax 0.00 : 54d224: 0f 84 06 02 00 00 je 54d430 0.00 : 54d22a: 8b 7f 04 mov 0x4(%rdi),%edi 0.00 : 54d22d: e8 6e 72 f7 ff callq 4c44a0 0.00 : 54d232: 84 c0 test %al,%al 0.00 : 54d234: 0f 85 44 fe ff ff jne 54d07e : deadrows += 1; : else : liverows += 1; 0.00 : 54d23a: f2 0f 10 0d 16 1f 26 movsd 0x261f16(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 54d241: 00 0.00 : 54d242: f2 0f 58 8d 78 ff ff addsd -0x88(%rbp),%xmm1 0.00 : 54d249: ff 0.00 : 54d24a: f2 0f 11 8d 78 ff ff movsd %xmm1,-0x88(%rbp) 0.00 : 54d251: ff 0.00 : 54d252: e9 f9 fd ff ff jmpq 54d050 0.00 : 54d257: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54d25e: 00 00 : * the row, to accommodate users who load a table and : * analyze it in one transaction. (pgstat_report_analyze : * has to adjust the numbers we send to the stats : * collector to make this come out right.) : */ : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmin(targtuple.t_data))) 0.00 : 54d260: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 54d264: bf 02 00 00 00 mov $0x2,%edi 0.00 : 54d269: 0f b7 42 14 movzwl 0x14(%rdx),%eax 0.00 : 54d26d: 25 00 03 00 00 and $0x300,%eax 0.00 : 54d272: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 54d277: 74 02 je 54d27b 0.00 : 54d279: 8b 3a mov (%rdx),%edi 0.00 : 54d27b: e8 20 72 f7 ff callq 4c44a0 0.00 : 54d280: 84 c0 test %al,%al 0.00 : 54d282: 0f 84 c8 fd ff ff je 54d050 : { : sample_it = true; : liverows += 1; 0.00 : 54d288: f2 0f 10 15 c8 1e 26 movsd 0x261ec8(%rip),%xmm2 # 7af158 <__func__.15777+0x10> 0.00 : 54d28f: 00 : * element of the reservoir (current set of tuples). At all : * times the reservoir is a true random sample of the tuples : * we've passed over so far, so when we fall off the end of : * the relation we're done. : */ : if (numrows < targrows) 0.00 : 54d290: 8b 85 6c ff ff ff mov -0x94(%rbp),%eax 0.00 : 54d296: 39 85 34 ff ff ff cmp %eax,-0xcc(%rbp) : * collector to make this come out right.) : */ : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmin(targtuple.t_data))) : { : sample_it = true; : liverows += 1; 0.00 : 54d29c: 66 0f 28 ea movapd %xmm2,%xmm5 0.00 : 54d2a0: f2 0f 58 ad 78 ff ff addsd -0x88(%rbp),%xmm5 0.00 : 54d2a7: ff 0.00 : 54d2a8: f2 0f 11 ad 78 ff ff movsd %xmm5,-0x88(%rbp) 0.00 : 54d2af: ff : * element of the reservoir (current set of tuples). At all : * times the reservoir is a true random sample of the tuples : * we've passed over so far, so when we fall off the end of : * the relation we're done. : */ : if (numrows < targrows) 0.00 : 54d2b0: 7f 70 jg 54d322 : * t in Vitter's paper is the number of records already : * processed. If we need to compute a new S value, we : * must use the not-yet-incremented value of samplerows as : * t. : */ : if (rowstoskip < 0) 0.00 : 54d2b2: 66 0f 57 c0 xorpd %xmm0,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1237 2.15 : 54d2b6: 66 0f 2e 45 88 ucomisd -0x78(%rbp),%xmm0 0.00 : 54d2bb: 0f 87 84 01 00 00 ja 54d445 : rowstoskip = anl_get_next_S(samplerows, targrows, : &rstate); : : if (rowstoskip <= 0) 0.00 : 54d2c1: 66 0f 57 c9 xorpd %xmm1,%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1241 4.30 : 54d2c5: 66 0f 2e 4d 88 ucomisd -0x78(%rbp),%xmm1 0.00 : 54d2ca: 0f 83 b0 01 00 00 jae 54d480 : Assert(k >= 0 && k < targrows); : heap_freetuple(rows[k]); : rows[k] = heap_copytuple(&targtuple); : } : : rowstoskip -= 1; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1254 2.15 : 54d2d0: f2 0f 10 45 88 movsd -0x78(%rbp),%xmm0 0.00 : 54d2d5: f2 0f 5c c2 subsd %xmm2,%xmm0 3.23 : 54d2d9: f2 0f 11 45 88 movsd %xmm0,-0x78(%rbp) : } : : samplerows += 1; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1257 2.15 : 54d2de: f2 0f 58 95 70 ff ff addsd -0x90(%rbp),%xmm2 0.00 : 54d2e5: ff 0.00 : 54d2e6: f2 0f 11 95 70 ff ff movsd %xmm2,-0x90(%rbp) 0.00 : 54d2ed: ff 1.08 : 54d2ee: e9 5d fd ff ff jmpq 54d050 0.00 : 54d2f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : OldestXmin, : targbuffer)) : { : case HEAPTUPLE_LIVE: : sample_it = true; : liverows += 1; 0.00 : 54d2f8: f2 0f 10 15 58 1e 26 movsd 0x261e58(%rip),%xmm2 # 7af158 <__func__.15777+0x10> 0.00 : 54d2ff: 00 : * element of the reservoir (current set of tuples). At all : * times the reservoir is a true random sample of the tuples : * we've passed over so far, so when we fall off the end of : * the relation we're done. : */ : if (numrows < targrows) 0.00 : 54d300: 8b 85 6c ff ff ff mov -0x94(%rbp),%eax 0.00 : 54d306: 39 85 34 ff ff ff cmp %eax,-0xcc(%rbp) : OldestXmin, : targbuffer)) : { : case HEAPTUPLE_LIVE: : sample_it = true; : liverows += 1; 0.00 : 54d30c: 66 0f 28 c2 movapd %xmm2,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1152 2.15 : 54d310: f2 0f 58 85 78 ff ff addsd -0x88(%rbp),%xmm0 0.00 : 54d317: ff 1.08 : 54d318: f2 0f 11 85 78 ff ff movsd %xmm0,-0x88(%rbp) 0.00 : 54d31f: ff : * element of the reservoir (current set of tuples). At all : * times the reservoir is a true random sample of the tuples : * we've passed over so far, so when we fall off the end of : * the relation we're done. : */ : if (numrows < targrows) 0.00 : 54d320: 7e 90 jle 54d2b2 : rows[numrows++] = heap_copytuple(&targtuple); 0.00 : 54d322: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 54d326: f2 0f 11 95 10 ff ff movsd %xmm2,-0xf0(%rbp) 0.00 : 54d32d: ff 0.00 : 54d32e: e8 6d 18 f2 ff callq 46eba0 0.00 : 54d333: 48 63 95 6c ff ff ff movslq -0x94(%rbp),%rdx 0.00 : 54d33a: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 54d341: 48 89 04 d1 mov %rax,(%rcx,%rdx,8) 0.00 : 54d345: 83 85 6c ff ff ff 01 addl $0x1,-0x94(%rbp) 0.00 : 54d34c: f2 0f 10 95 10 ff ff movsd -0xf0(%rbp),%xmm2 0.00 : 54d353: ff 0.00 : 54d354: eb 88 jmp 54d2de 0.00 : 54d356: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 54d35d: 00 00 00 : break; : : case HEAPTUPLE_DEAD: : case HEAPTUPLE_RECENTLY_DEAD: : /* Count dead and recently-dead rows */ : deadrows += 1; 0.00 : 54d360: f2 0f 10 0d f0 1d 26 movsd 0x261df0(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 54d367: 00 0.00 : 54d368: f2 0f 58 4d 80 addsd -0x80(%rbp),%xmm1 0.00 : 54d36d: f2 0f 11 4d 80 movsd %xmm1,-0x80(%rbp) : break; 0.00 : 54d372: e9 d9 fc ff ff jmpq 54d050 : * (Note: Knuth suggests a "<=" loop condition, but we use "<" just : * to be doubly sure about roundoff error.) Therefore K cannot become : * less than k, which means that we cannot fail to select enough blocks. : *---------- : */ : V = anl_random_fract(); 0.00 : 54d377: e8 74 f1 ff ff callq 54c4f0 : p = 1.0 - (double) k / (double) K; 0.00 : 54d37c: f2 41 0f 2a dc cvtsi2sd %r12d,%xmm3 0.00 : 54d381: 89 d8 mov %ebx,%eax : * (Note: Knuth suggests a "<=" loop condition, but we use "<" just : * to be doubly sure about roundoff error.) Therefore K cannot become : * less than k, which means that we cannot fail to select enough blocks. : *---------- : */ : V = anl_random_fract(); 0.00 : 54d383: 66 0f 28 e0 movapd %xmm0,%xmm4 : p = 1.0 - (double) k / (double) K; 0.00 : 54d387: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 54d38c: f2 0f 10 15 c4 1d 26 movsd 0x261dc4(%rip),%xmm2 # 7af158 <__func__.15777+0x10> 0.00 : 54d393: 00 0.00 : 54d394: 66 0f 28 cb movapd %xmm3,%xmm1 0.00 : 54d398: f2 0f 5e c8 divsd %xmm0,%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1016 3.23 : 54d39c: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 54d3a0: 66 0f 28 ca movapd %xmm2,%xmm1 0.00 : 54d3a4: f2 0f 5c c8 subsd %xmm0,%xmm1 : while (V < p) 0.00 : 54d3a8: 66 0f 2e cc ucomisd %xmm4,%xmm1 0.00 : 54d3ac: 76 2e jbe 54d3dc 0.00 : 54d3ae: 66 90 xchg %ax,%ax : { : /* skip */ : bs->t++; : K--; /* keep K == N - t */ 0.00 : 54d3b0: 83 eb 01 sub $0x1,%ebx : : /* adjust p to be new cutoff point in reduced range */ : p *= 1.0 - (double) k / (double) K; 0.00 : 54d3b3: 66 0f 28 eb movapd %xmm3,%xmm5 0.00 : 54d3b7: 89 d8 mov %ebx,%eax : V = anl_random_fract(); : p = 1.0 - (double) k / (double) K; : while (V < p) : { : /* skip */ : bs->t++; 0.00 : 54d3b9: 41 83 c6 01 add $0x1,%r14d : K--; /* keep K == N - t */ : : /* adjust p to be new cutoff point in reduced range */ : p *= 1.0 - (double) k / (double) K; 0.00 : 54d3bd: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 54d3c2: f2 0f 5e e8 divsd %xmm0,%xmm5 0.00 : 54d3c6: 66 0f 28 c5 movapd %xmm5,%xmm0 0.00 : 54d3ca: 66 0f 28 ea movapd %xmm2,%xmm5 0.00 : 54d3ce: f2 0f 5c e8 subsd %xmm0,%xmm5 0.00 : 54d3d2: f2 0f 59 cd mulsd %xmm5,%xmm1 : * less than k, which means that we cannot fail to select enough blocks. : *---------- : */ : V = anl_random_fract(); : p = 1.0 - (double) k / (double) K; : while (V < p) 0.00 : 54d3d6: 66 0f 2e cc ucomisd %xmm4,%xmm1 0.00 : 54d3da: 77 d4 ja 54d3b0 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1017 1.08 : 54d3dc: 44 89 f0 mov %r14d,%eax 0.00 : 54d3df: 41 83 c5 01 add $0x1,%r13d : p *= 1.0 - (double) k / (double) K; : } : : /* select */ : bs->m++; : return bs->t++; 0.00 : 54d3e3: 41 83 c6 01 add $0x1,%r14d : * less than k, which means that we cannot fail to select enough blocks. : *---------- : */ : V = anl_random_fract(); : p = 1.0 - (double) k / (double) K; : while (V < p) 0.00 : 54d3e7: 44 89 6d a4 mov %r13d,-0x5c(%rbp) : p *= 1.0 - (double) k / (double) K; : } : : /* select */ : bs->m++; : return bs->t++; 0.00 : 54d3eb: 89 45 9c mov %eax,-0x64(%rbp) 0.00 : 54d3ee: e9 d4 fb ff ff jmpq 54cfc7 0.00 : 54d3f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * lock traffic is probably better avoided. : */ : targbuffer = ReadBufferExtended(onerel, MAIN_FORKNUM, targblock, : RBM_NORMAL, vac_strategy); : LockBuffer(targbuffer, BUFFER_LOCK_SHARE); : targpage = BufferGetPage(targbuffer); 0.00 : 54d3f8: 8b 45 a0 mov -0x60(%rbp),%eax 0.00 : 54d3fb: 48 8b 15 16 fd 62 00 mov 0x62fd16(%rip),%rdx # b7d118 0.00 : 54d402: f7 d0 not %eax 0.00 : 54d404: 48 98 cltq 0.00 : 54d406: 4c 8b 2c c2 mov (%rdx,%rax,8),%r13 0.00 : 54d40a: e9 05 fc ff ff jmpq 54d014 0.00 : 54d40f: 90 nop : } : : static bool : BlockSampler_HasMore(BlockSampler bs) : { : return (bs->t < bs->N) && (bs->m < bs->n); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:974 1.08 : 54d410: 48 83 45 a8 01 addq $0x1,-0x58(%rbp) 0.00 : 54d415: 8b 45 a4 mov -0x5c(%rbp),%eax 0.00 : 54d418: 39 85 34 ff ff ff cmp %eax,-0xcc(%rbp) 0.00 : 54d41e: 0f 8f 76 fb ff ff jg 54cf9a 0.00 : 54d424: 89 c3 mov %eax,%ebx 0.00 : 54d426: e9 8a fc ff ff jmpq 54d0b5 0.00 : 54d42b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * we must count the row as dead to make : * pgstat_report_analyze's stats adjustments come out : * right. (Note: this works out properly when the row was : * both inserted and deleted in our xact.) : */ : if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetUpdateXid(targtuple.t_data))) 0.00 : 54d430: 84 d2 test %dl,%dl 0.00 : 54d432: 0f 88 f2 fd ff ff js 54d22a 0.00 : 54d438: e8 e3 9c f4 ff callq 497120 0.00 : 54d43d: 89 c7 mov %eax,%edi 0.00 : 54d43f: 90 nop 0.00 : 54d440: e9 e8 fd ff ff jmpq 54d22d : * processed. If we need to compute a new S value, we : * must use the not-yet-incremented value of samplerows as : * t. : */ : if (rowstoskip < 0) : rowstoskip = anl_get_next_S(samplerows, targrows, 0.00 : 54d445: 8b bd 34 ff ff ff mov -0xcc(%rbp),%edi /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1238 3.23 : 54d44b: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.00 : 54d44f: f2 0f 11 95 10 ff ff movsd %xmm2,-0xf0(%rbp) 0.00 : 54d456: ff 0.00 : 54d457: f2 0f 10 85 70 ff ff movsd -0x90(%rbp),%xmm0 0.00 : 54d45e: ff 0.00 : 54d45f: e8 ac f0 ff ff callq 54c510 : &rstate); : : if (rowstoskip <= 0) 0.00 : 54d464: 66 0f 57 c9 xorpd %xmm1,%xmm1 : * processed. If we need to compute a new S value, we : * must use the not-yet-incremented value of samplerows as : * t. : */ : if (rowstoskip < 0) : rowstoskip = anl_get_next_S(samplerows, targrows, 1.08 : 54d468: f2 0f 11 45 88 movsd %xmm0,-0x78(%rbp) 3.23 : 54d46d: f2 0f 10 95 10 ff ff movsd -0xf0(%rbp),%xmm2 0.00 : 54d474: ff : &rstate); : : if (rowstoskip <= 0) 0.00 : 54d475: 66 0f 2e 4d 88 ucomisd -0x78(%rbp),%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1241 1.08 : 54d47a: 0f 82 50 fe ff ff jb 54d2d0 : { : /* : * Found a suitable tuple, so save it, replacing one : * old tuple at random : */ : int k = (int) (targrows * anl_random_fract()); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1247 4.30 : 54d480: f2 0f 11 95 10 ff ff movsd %xmm2,-0xf0(%rbp) 0.00 : 54d487: ff 1.08 : 54d488: e8 63 f0 ff ff callq 54c4f0 : : Assert(k >= 0 && k < targrows); : heap_freetuple(rows[k]); 0.00 : 54d48d: f2 0f 2a 8d 34 ff ff cvtsi2sdl -0xcc(%rbp),%xmm1 0.00 : 54d494: ff 0.00 : 54d495: f2 0f 59 c8 mulsd %xmm0,%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1250 1.08 : 54d499: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 54d4a0: f2 0f 2c d9 cvttsd2si %xmm1,%ebx 1.08 : 54d4a4: 48 63 db movslq %ebx,%rbx 0.00 : 54d4a7: 48 8d 1c d8 lea (%rax,%rbx,8),%rbx 0.00 : 54d4ab: 48 8b 3b mov (%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1250 36.56 : 54d4ae: e8 0d 18 f2 ff callq 46ecc0 : rows[k] = heap_copytuple(&targtuple); 0.00 : 54d4b3: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 54d4b7: e8 e4 16 f2 ff callq 46eba0 0.00 : 54d4bc: 48 89 03 mov %rax,(%rbx) 0.00 : 54d4bf: f2 0f 10 95 10 ff ff movsd -0xf0(%rbp),%xmm2 0.00 : 54d4c6: ff 0.00 : 54d4c7: e9 04 fe ff ff jmpq 54d2d0 : bs.m, : liverows); : if (bs.m > 0) : *totaldeadrows = floor((deadrows / bs.m) * totalblocks + 0.5); : else : *totaldeadrows = 0.0; 0.00 : 54d4cc: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx 0.00 : 54d4d3: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : 54d4da: e9 52 fc ff ff jmpq 54d131 : * Otherwise we need to sort the collected tuples by position : * (itempointer). It's not worth worrying about corner cases where the : * tuples are already sorted. : */ : if (numrows == targrows) : qsort((void *) rows, numrows, sizeof(HeapTuple), compare_rows); 0.00 : 54d4df: 48 63 b5 6c ff ff ff movslq -0x94(%rbp),%rsi 0.00 : 54d4e6: 48 8b bd 38 ff ff ff mov -0xc8(%rbp),%rdi 0.00 : 54d4ed: b9 30 ae 54 00 mov $0x54ae30,%ecx 0.00 : 54d4f2: ba 08 00 00 00 mov $0x8,%edx 0.00 : 54d4f7: e8 74 f7 25 00 callq 7acc70 0.00 : 54d4fc: e9 c6 fb ff ff jmpq 54d0c7 : *totaldeadrows = 0.0; : : /* : * Emit some interesting relation info : */ : ereport(elevel, 0.00 : 54d501: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : 54d508: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 54d50f: bf 08 77 87 00 mov $0x877708,%edi 0.00 : 54d514: 44 8b 85 6c ff ff ff mov -0x94(%rbp),%r8d 0.00 : 54d51b: 8b 55 a4 mov -0x5c(%rbp),%edx 0.00 : 54d51e: f2 0f 10 4d 80 movsd -0x80(%rbp),%xmm1 0.00 : 54d523: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 54d527: f2 0f 10 11 movsd (%rcx),%xmm2 0.00 : 54d52b: 8b 4d 94 mov -0x6c(%rbp),%ecx 0.00 : 54d52e: f2 0f 10 85 78 ff ff movsd -0x88(%rbp),%xmm0 0.00 : 54d535: ff 0.00 : 54d536: b8 03 00 00 00 mov $0x3,%eax 0.00 : 54d53b: e8 60 f3 22 00 callq 77c8a0 0.00 : 54d540: 89 c7 mov %eax,%edi 0.00 : 54d542: 31 c0 xor %eax,%eax 0.00 : 54d544: e8 97 d0 22 00 callq 77a5e0 0.00 : 54d549: e9 08 fc ff ff jmpq 54d156 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 49.44 ??:0 38.20 ??:0 12.36 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000036aa0 : ??:0 38.20 : 36aa0: 48 8b 0d e1 b2 33 00 mov 0x33b2e1(%rip),%rcx # 371d88 <_DYNAMIC+0x228> 0.00 : 36aa7: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 36aae: 00 00 0.00 : 36ab0: 4c 8b 04 08 mov (%rax,%rcx,1),%r8 49.44 : 36ab4: 31 c9 xor %ecx,%ecx 12.36 : 36ab6: e9 65 00 00 00 jmpq 36b20 <__GI_____strtol_l_internal> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 35.63 ??:0 18.39 ??:0 10.34 ??:0 6.90 ??:0 5.75 ??:0 4.60 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 2.30 ??:0 2.30 ??:0 2.30 ??:0 1.15 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000043750 <__mpn_construct_double>: ??:0 2.30 : 43750: 48 8b 0f mov (%rdi),%rcx ??:0 10.34 : 43753: 66 81 c6 ff 03 add $0x3ff,%si ??:0 2.30 : 43758: 48 c1 e2 3f shl $0x3f,%rdx 0.00 : 4375c: 81 e6 ff 07 00 00 and $0x7ff,%esi 2.30 : 43762: 48 b8 00 00 00 00 ff movabs $0xfffff00000000,%rax 0.00 : 43769: ff 0f 00 3.45 : 4376c: 48 c1 e6 34 shl $0x34,%rsi 3.45 : 43770: 89 cf mov %ecx,%edi ??:0 5.75 : 43772: 48 09 f2 or %rsi,%rdx ??:0 4.60 : 43775: 48 21 c1 and %rax,%rcx 1.15 : 43778: 48 09 fa or %rdi,%rdx ??:0 6.90 : 4377b: 48 09 ca or %rcx,%rdx ??:0 3.45 : 4377e: 48 89 54 24 f8 mov %rdx,-0x8(%rsp) ??:0 54.02 : 43783: f2 0f 10 44 24 f8 movsd -0x8(%rsp),%xmm0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 71.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1070 22.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1071 1.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1059 1.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1065 1.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1064 1.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1065 1.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1069 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000782c50 : : CHashPtr g; : CHashNode *n; : CHashPtr *garbage; : : n = CHashTableGetNode(table, c); : garbage = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782c50: 0f b6 4f 14 movzbl 0x14(%rdi),%ecx : { : CHashPtr g; : CHashNode *n; : CHashPtr *garbage; : : n = CHashTableGetNode(table, c); 0.00 : 782c54: 89 d0 mov %edx,%eax : * failure to match an already-deleted item shouldn't cause any problems; : * this is why gcnext can share space with the hash value. : */ : static void : CHashAddToGarbage(CHashTable table, uint32 bucket, CHashPtr c) : { 0.00 : 782c56: 55 push %rbp : CHashPtr g; : CHashNode *n; : CHashPtr *garbage; : : n = CHashTableGetNode(table, c); 0.00 : 782c57: d1 e8 shr %eax 0.00 : 782c59: 41 89 c0 mov %eax,%r8d : * failure to match an already-deleted item shouldn't cause any problems; : * this is why gcnext can share space with the hash value. : */ : static void : CHashAddToGarbage(CHashTable table, uint32 bucket, CHashPtr c) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1059 1.20 : 782c5c: 48 89 e5 mov %rsp,%rbp : CHashPtr g; : CHashNode *n; : CHashPtr *garbage; : : n = CHashTableGetNode(table, c); 0.00 : 782c5f: 44 0f af 47 1c imul 0x1c(%rdi),%r8d : garbage = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782c64: d3 ee shr %cl,%esi /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1065 1.20 : 782c66: 0f b6 4f 15 movzbl 0x15(%rdi),%ecx 0.00 : 782c6a: 89 f0 mov %esi,%eax : { : CHashPtr g; : CHashNode *n; : CHashPtr *garbage; : : n = CHashTableGetNode(table, c); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1064 1.20 : 782c6c: 4c 03 47 30 add 0x30(%rdi),%r8 : garbage = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782c70: d3 e8 shr %cl,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1065 1.20 : 782c72: 01 f0 add %esi,%eax 0.00 : 782c74: 48 8d 0c 85 00 00 00 lea 0x0(,%rax,4),%rcx 0.00 : 782c7b: 00 0.00 : 782c7c: 48 03 4f 28 add 0x28(%rdi),%rcx 0.00 : 782c80: eb 0e jmp 782c90 0.00 : 782c82: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : g = *garbage; : n->un.gcnext = g; : if (__sync_bool_compare_and_swap(garbage, g, c)) : break; : CHashTableIncrementStatistic(table, CHS_Garbage_Enqueue_Retry); 0.00 : 782c88: 48 83 87 a8 00 00 00 addq $0x1,0xa8(%rdi) 0.00 : 782c8f: 01 : n = CHashTableGetNode(table, c); : garbage = CHashTableGetGarbageByBucket(table, bucket); : : while (1) : { : g = *garbage; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1069 1.20 : 782c90: 8b 01 mov (%rcx),%eax : n->un.gcnext = g; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1070 71.08 : 782c92: 41 89 40 04 mov %eax,0x4(%r8) : if (__sync_bool_compare_and_swap(garbage, g, c)) 0.00 : 782c96: f0 0f b1 11 lock cmpxchg %edx,(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:1071 22.89 : 782c9a: 75 ec jne 782c88 : break; : CHashTableIncrementStatistic(table, CHS_Garbage_Enqueue_Retry); : } : } 0.00 : 782c9c: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 53.75 ??:0 25.00 ??:0 11.25 ??:0 10.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000032200 <__isnanf>: ??:0 53.75 : 32200: 66 0f 7e c2 movd %xmm0,%edx 0.00 : 32204: b8 00 00 80 7f mov $0x7f800000,%eax 0.00 : 32209: 81 e2 ff ff ff 7f and $0x7fffffff,%edx 10.00 : 3220f: 29 d0 sub %edx,%eax 36.25 : 32211: c1 e8 1f shr $0x1f,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:920 22.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:920 11.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:925 8.86 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:924 5.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:922 5.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:924 3.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:921 3.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:922 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:920 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:924 2.53 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:925 1.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:925 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d8060 : : PG_RETURN_BOOL(float4_cmp_internal(arg1, arg2) != 0); : } : : Datum : float4lt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:920 22.78 : 6d8060: 55 push %rbp 30.38 : 6d8061: 48 89 e5 mov %rsp,%rbp 0.00 : 6d8064: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:920 2.53 : 6d8065: 48 89 fb mov %rdi,%rbx 0.00 : 6d8068: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d806c: 48 8b 7f 20 mov 0x20(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:921 3.80 : 6d8070: e8 3b 59 0a 00 callq 77d9b0 : float4 arg2 = PG_GETARG_FLOAT4(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:922 5.06 : 6d8075: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : float4lt(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d8079: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float4 arg2 = PG_GETARG_FLOAT4(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:922 3.80 : 6d807e: e8 2d 59 0a 00 callq 77d9b0 : : PG_RETURN_BOOL(float4_cmp_internal(arg1, arg2) < 0); 0.00 : 6d8083: 0f 28 c8 movaps %xmm0,%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:924 5.06 : 6d8086: f3 0f 10 45 f4 movss -0xc(%rbp),%xmm0 8.86 : 6d808b: e8 20 fe ff ff callq 6d7eb0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:924 2.53 : 6d8090: 48 98 cltq : } 0.00 : 6d8092: 48 83 c4 08 add $0x8,%rsp : float4lt(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float4 arg2 = PG_GETARG_FLOAT4(1); : : PG_RETURN_BOOL(float4_cmp_internal(arg1, arg2) < 0); 0.00 : 6d8096: 48 c1 e8 3f shr $0x3f,%rax : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:925 2.53 : 6d809a: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:925 12.66 : 6d809b: c9 leaveq Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 13.98 ??:0 12.90 ??:0 4.30 ??:0 3.23 ??:0 3.23 ??:0 3.23 ??:0 3.23 ??:0 2.15 ??:0 2.15 ??:0 2.15 ??:0 2.15 ??:0 2.15 ??:0 2.15 ??:0 2.15 ??:0 2.15 ??:0 2.15 ??:0 2.15 ??:0 2.15 ??:0 2.15 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 1.08 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004630 : : IXGBE_TXD_CMD_RS) : : static void ixgbe_tx_map(struct ixgbe_ring *tx_ring, : struct ixgbe_tx_buffer *first, : const u8 hdr_len) : { 0.00 : 4630: 41 57 push %r15 : } : : static void ixgbe_tx_olinfo_status(union ixgbe_adv_tx_desc *tx_desc, : u32 tx_flags, unsigned int paylen) : { : __le32 olinfo_status = cpu_to_le32(paylen << IXGBE_ADVTXD_PAYLEN_SHIFT); 0.00 : 4632: 0f b6 d2 movzbl %dl,%edx : IXGBE_TXD_CMD_RS) : : static void ixgbe_tx_map(struct ixgbe_ring *tx_ring, : struct ixgbe_tx_buffer *first, : const u8 hdr_len) : { 0.00 : 4635: 41 56 push %r14 0.00 : 4637: 41 55 push %r13 0.00 : 4639: 49 89 fd mov %rdi,%r13 0.00 : 463c: 41 54 push %r12 0.00 : 463e: 55 push %rbp 0.00 : 463f: 53 push %rbx 0.00 : 4640: 48 83 ec 38 sub $0x38,%rsp 0.00 : 4644: 48 89 74 24 08 mov %rsi,0x8(%rsp) : dma_addr_t dma; : struct sk_buff *skb = first->skb; 0.00 : 4649: 48 8b 76 10 mov 0x10(%rsi),%rsi : } : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) : { : return skb->head + skb->end; ??:0 1.08 : 464d: 48 8b 8e d8 00 00 00 mov 0xd8(%rsi),%rcx 0.00 : 4654: 48 89 4c 24 28 mov %rcx,0x28(%rsp) 0.00 : 4659: 8b 9e d0 00 00 00 mov 0xd0(%rsi),%ebx 0.00 : 465f: 89 5c 24 24 mov %ebx,0x24(%rsp) : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : #ifdef MAX_SKB_FRAGS : struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; : unsigned int data_len = skb->data_len; 0.00 : 4663: 8b 46 6c mov 0x6c(%rsi),%eax : #endif : unsigned int size = skb_headlen(skb); : unsigned int paylen = skb->len - hdr_len; : u32 tx_flags = first->tx_flags; 0.00 : 4666: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx : struct sk_buff *skb = first->skb; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : #ifdef MAX_SKB_FRAGS : struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; : unsigned int data_len = skb->data_len; 0.00 : 466b: 89 44 24 1c mov %eax,0x1c(%rsp) : return skb->data_len; : } : : static inline unsigned int skb_headlen(const struct sk_buff *skb) : { : return skb->len - skb->data_len; 0.00 : 466f: 8b 46 68 mov 0x68(%rsi),%eax 0.00 : 4672: 89 c1 mov %eax,%ecx 0.00 : 4674: 2b 4c 24 1c sub 0x1c(%rsp),%ecx : } : : static void ixgbe_tx_olinfo_status(union ixgbe_adv_tx_desc *tx_desc, : u32 tx_flags, unsigned int paylen) : { : __le32 olinfo_status = cpu_to_le32(paylen << IXGBE_ADVTXD_PAYLEN_SHIFT); 0.00 : 4678: 29 d0 sub %edx,%eax 0.00 : 467a: c1 e0 0e shl $0xe,%eax : : /* enable L4 checksum for TSO and TX checksum offload */ : if (tx_flags & IXGBE_TX_FLAGS_CSUM) : olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_TXSM); 0.00 : 467d: 89 c2 mov %eax,%edx 0.00 : 467f: 80 ce 02 or $0x2,%dh 0.00 : 4682: 89 4c 24 20 mov %ecx,0x20(%rsp) : #endif : unsigned int size = skb_headlen(skb); : unsigned int paylen = skb->len - hdr_len; : u32 tx_flags = first->tx_flags; : __le32 cmd_type; : u16 i = tx_ring->next_to_use; 0.00 : 4686: 0f b7 6f 50 movzwl 0x50(%rdi),%ebp : struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; : unsigned int data_len = skb->data_len; : #endif : unsigned int size = skb_headlen(skb); : unsigned int paylen = skb->len - hdr_len; : u32 tx_flags = first->tx_flags; 0.00 : 468a: 8b 4b 2c mov 0x2c(%rbx),%ecx : __le32 cmd_type; : u16 i = tx_ring->next_to_use; : : tx_desc = IXGBE_TX_DESC(tx_ring, i); 0.00 : 468d: 44 0f b7 fd movzwl %bp,%r15d 0.00 : 4691: 4c 89 fb mov %r15,%rbx 0.00 : 4694: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 4698: 48 89 5c 24 10 mov %rbx,0x10(%rsp) 0.00 : 469d: 48 8b 5f 20 mov 0x20(%rdi),%rbx 0.00 : 46a1: 48 01 5c 24 10 add %rbx,0x10(%rsp) : { : __le32 olinfo_status = cpu_to_le32(paylen << IXGBE_ADVTXD_PAYLEN_SHIFT); : : /* enable L4 checksum for TSO and TX checksum offload */ : if (tx_flags & IXGBE_TX_FLAGS_CSUM) : olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_TXSM); 0.00 : 46a6: f6 c1 01 test $0x1,%cl 0.00 : 46a9: 0f 45 c2 cmovne %edx,%eax : : /* enble IPv4 checksum for TSO */ : if (tx_flags & IXGBE_TX_FLAGS_IPV4) : olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_IXSM); 0.00 : 46ac: 89 c2 mov %eax,%edx 0.00 : 46ae: 80 ce 01 or $0x1,%dh 1.08 : 46b1: f6 c1 10 test $0x10,%cl 0.00 : 46b4: 0f 45 c2 cmovne %edx,%eax : #ifdef IXGBE_FCOE : if (tx_flags & (IXGBE_TX_FLAGS_TSO | IXGBE_TX_FLAGS_FCOE)) : #else : if (tx_flags & IXGBE_TX_FLAGS_TSO) : #endif : olinfo_status |= cpu_to_le32(1 << IXGBE_ADVTXD_IDX_SHIFT); 0.00 : 46b7: 89 c2 mov %eax,%edx 0.00 : 46b9: 83 ca 10 or $0x10,%edx 0.00 : 46bc: f6 c1 28 test $0x28,%cl 0.00 : 46bf: 0f 45 c2 cmovne %edx,%eax : #ifdef IXGBE_FCOE : if (tx_flags & (IXGBE_TX_FLAGS_TXSW | IXGBE_TX_FLAGS_FCOE)) : #else : if (tx_flags & IXGBE_TX_FLAGS_TXSW) : #endif : olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_CC); 1.08 : 46c2: 89 c2 mov %eax,%edx 0.00 : 46c4: 80 ca 80 or $0x80,%dl 0.00 : 46c7: f6 c1 a0 test $0xa0,%cl 0.00 : 46ca: 0f 45 c2 cmovne %edx,%eax : : tx_desc->read.olinfo_status = olinfo_status; 1.08 : 46cd: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 46d2: 89 42 0c mov %eax,0xc(%rdx) : __le32 cmd_type = cpu_to_le32(IXGBE_ADVTXD_DTYP_DATA | : IXGBE_ADVTXD_DCMD_IFCS | : IXGBE_ADVTXD_DCMD_DEXT); : : /* set HW vlan bit if vlan is present */ : if (tx_flags & IXGBE_TX_FLAGS_HW_VLAN) 1.08 : 46d5: 89 c8 mov %ecx,%eax 0.00 : 46d7: 83 e0 02 and $0x2,%eax 0.00 : 46da: 83 f8 01 cmp $0x1,%eax 0.00 : 46dd: 19 db sbb %ebx,%ebx 0.00 : 46df: 81 e3 00 00 00 c0 and $0xc0000000,%ebx 0.00 : 46e5: 81 c3 00 00 30 62 add $0x62300000,%ebx : #ifdef IXGBE_FCOE : if (tx_flags & (IXGBE_TX_FLAGS_TSO | IXGBE_TX_FLAGS_FSO)) : #else : if (tx_flags & IXGBE_TX_FLAGS_TSO) : #endif : cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_TSE); 0.00 : 46eb: 89 d8 mov %ebx,%eax 0.00 : 46ed: 0d 00 00 00 80 or $0x80000000,%eax 0.00 : 46f2: f6 c1 48 test $0x48,%cl 0.00 : 46f5: 0f 44 c3 cmove %ebx,%eax : : ixgbe_tx_olinfo_status(tx_desc, tx_flags, paylen); : cmd_type = ixgbe_tx_cmd_type(tx_flags); : : #ifdef IXGBE_FCOE : if (tx_flags & IXGBE_TX_FLAGS_FCOE) { 0.00 : 46f8: 83 e1 20 and $0x20,%ecx : #ifdef IXGBE_FCOE : if (tx_flags & (IXGBE_TX_FLAGS_TSO | IXGBE_TX_FLAGS_FSO)) : #else : if (tx_flags & IXGBE_TX_FLAGS_TSO) : #endif : cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_TSE); 0.00 : 46fb: 89 44 24 34 mov %eax,0x34(%rsp) : : ixgbe_tx_olinfo_status(tx_desc, tx_flags, paylen); : cmd_type = ixgbe_tx_cmd_type(tx_flags); : : #ifdef IXGBE_FCOE : if (tx_flags & IXGBE_TX_FLAGS_FCOE) { 0.00 : 46ff: 74 23 je 4724 : if (data_len < sizeof(struct fcoe_crc_eof)) { 0.00 : 4701: 83 7c 24 1c 07 cmpl $0x7,0x1c(%rsp) 0.00 : 4706: 0f 87 84 01 00 00 ja 4890 : size -= sizeof(struct fcoe_crc_eof) - data_len; 0.00 : 470c: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : 4710: 8b 54 24 1c mov 0x1c(%rsp),%edx 0.00 : 4714: c7 44 24 1c 00 00 00 movl $0x0,0x1c(%rsp) 0.00 : 471b: 00 0.00 : 471c: 8d 44 10 f8 lea -0x8(%rax,%rdx,1),%eax 0.00 : 4720: 89 44 24 20 mov %eax,0x20(%rsp) : data_len -= sizeof(struct fcoe_crc_eof); : } : } : : #endif : dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE); 0.00 : 4724: 4d 8b 65 18 mov 0x18(%r13),%r12 0.00 : 4728: 4c 8b b6 e0 00 00 00 mov 0xe0(%rsi),%r14 : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 472f: 4d 85 e4 test %r12,%r12 0.00 : 4732: 0f 84 e8 01 00 00 je 4920 1.08 : 4738: 49 8b 84 24 00 02 00 mov 0x200(%r12),%rax 0.00 : 473f: 00 2.15 : 4740: 48 85 c0 test %rax,%rax 0.00 : 4743: 0f 84 d7 01 00 00 je 4920 : struct dma_map_ops *ops = get_dma_ops(dev); : dma_addr_t addr; : : kmemcheck_mark_initialized(ptr, size); : BUG_ON(!valid_dma_direction(dir)); : addr = ops->map_page(dev, virt_to_page(ptr), 0.00 : 4749: 4c 89 f7 mov %r14,%rdi 0.00 : 474c: 48 8b 58 10 mov 0x10(%rax),%rbx 1.08 : 4750: e8 00 00 00 00 callq 4755 0.00 : 4755: 48 c1 e8 0c shr $0xc,%rax 0.00 : 4759: 8b 4c 24 20 mov 0x20(%rsp),%ecx 0.00 : 475d: 4c 89 f2 mov %r14,%rdx 0.00 : 4760: 48 8d 34 c5 00 00 00 lea 0x0(,%rax,8),%rsi 0.00 : 4767: 00 0.00 : 4768: 48 c1 e0 06 shl $0x6,%rax 0.00 : 476c: 81 e2 ff 0f 00 00 and $0xfff,%edx 0.00 : 4772: 45 31 c9 xor %r9d,%r9d 0.00 : 4775: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 477b: 4c 89 e7 mov %r12,%rdi 0.00 : 477e: 48 29 f0 sub %rsi,%rax 0.00 : 4781: 48 be 00 00 00 00 00 movabs $0xffffea0000000000,%rsi 0.00 : 4788: ea ff ff 0.00 : 478b: 48 8d 34 30 lea (%rax,%rsi,1),%rsi 0.00 : 478f: ff d3 callq *%rbx : (unsigned long)ptr & ~PAGE_MASK, size, : dir, attrs); : debug_dma_map_page(dev, virt_to_page(ptr), 0.00 : 4791: 4c 89 f7 mov %r14,%rdi : struct dma_map_ops *ops = get_dma_ops(dev); : dma_addr_t addr; : : kmemcheck_mark_initialized(ptr, size); : BUG_ON(!valid_dma_direction(dir)); : addr = ops->map_page(dev, virt_to_page(ptr), 0.00 : 4794: 48 89 c3 mov %rax,%rbx : (unsigned long)ptr & ~PAGE_MASK, size, : dir, attrs); : debug_dma_map_page(dev, virt_to_page(ptr), 0.00 : 4797: e8 00 00 00 00 callq 479c : if (dma_mapping_error(tx_ring->dev, dma)) 0.00 : 479c: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 47a0: 48 85 ff test %rdi,%rdi 0.00 : 47a3: 0f 84 67 01 00 00 je 4910 0.00 : 47a9: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 47b0: 48 85 c0 test %rax,%rax 0.00 : 47b3: 0f 84 57 01 00 00 je 4910 : : /* Make sure we keep the same behaviour */ : static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) : { : struct dma_map_ops *ops = get_dma_ops(dev); : if (ops->mapping_error) 0.00 : 47b9: 48 8b 40 50 mov 0x50(%rax),%rax 1.08 : 47bd: 48 85 c0 test %rax,%rax 0.00 : 47c0: 0f 84 3a 01 00 00 je 4900 : return ops->mapping_error(dev, dma_addr); 0.00 : 47c6: 48 89 de mov %rbx,%rsi 0.00 : 47c9: ff d0 callq *%rax 0.00 : 47cb: 85 c0 test %eax,%eax 0.00 : 47cd: 0f 1f 00 nopl (%rax) 0.00 : 47d0: 0f 85 ca 00 00 00 jne 48a0 : dma_addr_t dma; : struct sk_buff *skb = first->skb; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : #ifdef MAX_SKB_FRAGS : struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; 0.00 : 47d6: 8b 44 24 24 mov 0x24(%rsp),%eax 0.00 : 47da: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx : dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) : goto dma_error; : : /* record length, and DMA address */ : dma_unmap_len_set(first, len, size); 0.00 : 47df: 48 8b 54 24 08 mov 0x8(%rsp),%rdx : dma_addr_t dma; : struct sk_buff *skb = first->skb; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : #ifdef MAX_SKB_FRAGS : struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; 0.00 : 47e4: 4c 8d 64 01 38 lea 0x38(%rcx,%rax,1),%r12 : dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) : goto dma_error; : : /* record length, and DMA address */ : dma_unmap_len_set(first, len, size); 0.00 : 47e9: 8b 44 24 20 mov 0x20(%rsp),%eax : dma_unmap_addr_set(first, dma, dma); 0.00 : 47ed: 48 89 5a 20 mov %rbx,0x20(%rdx) : dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) : goto dma_error; : : /* record length, and DMA address */ : dma_unmap_len_set(first, len, size); 0.00 : 47f1: 89 42 28 mov %eax,0x28(%rdx) : dma_unmap_addr_set(first, dma, dma); : : tx_desc->read.buffer_addr = cpu_to_le64(dma); 0.00 : 47f4: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx 0.00 : 47f9: 48 89 19 mov %rbx,(%rcx) : : #ifdef MAX_SKB_FRAGS : for (;;) { : #endif : while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) { : tx_desc->read.cmd_type_len = 1.08 : 47fc: 44 8b 74 24 34 mov 0x34(%rsp),%r14d 0.00 : 4801: 41 81 ce 00 40 00 00 or $0x4000,%r14d : tx_desc->read.buffer_addr = cpu_to_le64(dma); : : #ifdef MAX_SKB_FRAGS : for (;;) { : #endif : while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) { 0.00 : 4808: 81 7c 24 20 00 40 00 cmpl $0x4000,0x20(%rsp) 0.00 : 480f: 00 0.00 : 4810: 0f 87 00 02 00 00 ja 4a16 : tx_desc->read.buffer_addr = cpu_to_le64(dma); : tx_desc->read.olinfo_status = 0; : } : : #ifdef MAX_SKB_FRAGS : if (likely(!data_len)) 0.00 : 4816: 8b 74 24 1c mov 0x1c(%rsp),%esi 2.15 : 481a: 85 f6 test %esi,%esi 0.00 : 481c: 0f 85 0a 01 00 00 jne 492c : frag++; : } : : #endif /* MAX_SKB_FRAGS */ : /* write last descriptor with RS and EOP bits */ : cmd_type |= cpu_to_le32(size) | cpu_to_le32(IXGBE_TXD_CMD); 2.15 : 4822: 81 4c 24 34 00 00 00 orl $0x9000000,0x34(%rsp) 0.00 : 4829: 09 : tx_desc->read.cmd_type_len = cmd_type; 1.08 : 482a: 8b 5c 24 20 mov 0x20(%rsp),%ebx 0.00 : 482e: 09 5c 24 34 or %ebx,0x34(%rsp) 3.23 : 4832: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 4837: 8b 54 24 34 mov 0x34(%rsp),%edx 2.15 : 483b: 89 50 08 mov %edx,0x8(%rax) : : /* set the timestamp */ : first->time_stamp = jiffies; 2.15 : 483e: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4845 0.00 : 4845: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 484a: 48 89 41 08 mov %rax,0x8(%rcx) : * memory model archs, such as IA-64). : * : * We also need this memory barrier to make certain all of the : * status bits have been updated before next_to_watch is written. : */ : wmb(); 0.00 : 484e: 0f ae f8 sfence : : /* set next_to_watch value indicating a packet is present */ : first->next_to_watch = tx_desc; 0.00 : 4851: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx : : i++; 0.00 : 4856: 8d 45 01 lea 0x1(%rbp),%eax : if (i == tx_ring->count) 0.00 : 4859: ba 00 00 00 00 mov $0x0,%edx : * status bits have been updated before next_to_watch is written. : */ : wmb(); : : /* set next_to_watch value indicating a packet is present */ : first->next_to_watch = tx_desc; 0.00 : 485e: 48 89 19 mov %rbx,(%rcx) : : i++; : if (i == tx_ring->count) 0.00 : 4861: 66 41 39 45 4c cmp %ax,0x4c(%r13) 0.00 : 4866: 0f 44 c2 cmove %edx,%eax : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 4869: 49 8b 55 38 mov 0x38(%r13),%rdx : i = 0; : : tx_ring->next_to_use = i; 0.00 : 486d: 66 41 89 45 50 mov %ax,0x50(%r13) : : /* notify HW of packet */ : writel(i, tx_ring->tail); 0.00 : 4872: 0f b7 c0 movzwl %ax,%eax 0.00 : 4875: 89 02 mov %eax,(%rdx) : i = tx_ring->count; : i--; : } : : tx_ring->next_to_use = i; : } 1.08 : 4877: 48 83 c4 38 add $0x38,%rsp 0.00 : 487b: 5b pop %rbx 0.00 : 487c: 5d pop %rbp 0.00 : 487d: 41 5c pop %r12 0.00 : 487f: 41 5d pop %r13 0.00 : 4881: 41 5e pop %r14 0.00 : 4883: 41 5f pop %r15 0.00 : 4885: c3 retq 0.00 : 4886: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 488d: 00 00 00 : if (tx_flags & IXGBE_TX_FLAGS_FCOE) { : if (data_len < sizeof(struct fcoe_crc_eof)) { : size -= sizeof(struct fcoe_crc_eof) - data_len; : data_len = 0; : } else { : data_len -= sizeof(struct fcoe_crc_eof); 0.00 : 4890: 83 6c 24 1c 08 subl $0x8,0x1c(%rsp) 0.00 : 4895: e9 8a fe ff ff jmpq 4724 0.00 : 489a: 44 0f b7 fd movzwl %bp,%r15d 0.00 : 489e: 66 90 xchg %ax,%ax : */ : mmiowb(); : : return; : dma_error: : dev_err(tx_ring->dev, "TX DMA map failed\n"); 0.00 : 48a0: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 48a4: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 48ab: 31 c0 xor %eax,%eax 0.00 : 48ad: e8 00 00 00 00 callq 48b2 0.00 : 48b2: eb 15 jmp 48c9 0.00 : 48b4: 0f 1f 40 00 nopl 0x0(%rax) : for (;;) { : tx_buffer = &tx_ring->tx_buffer_info[i]; : ixgbe_unmap_and_free_tx_resource(tx_ring, tx_buffer); : if (tx_buffer == first) : break; : if (i == 0) 0.00 : 48b8: 66 85 ed test %bp,%bp 0.00 : 48bb: 75 05 jne 48c2 : i = tx_ring->count; 0.00 : 48bd: 41 0f b7 6d 4c movzwl 0x4c(%r13),%ebp : i--; 0.00 : 48c2: 83 ed 01 sub $0x1,%ebp 0.00 : 48c5: 44 0f b7 fd movzwl %bp,%r15d : dma_error: : dev_err(tx_ring->dev, "TX DMA map failed\n"); : : /* clear dma mappings for failed tx_buffer_info map */ : for (;;) { : tx_buffer = &tx_ring->tx_buffer_info[i]; 0.00 : 48c9: 4b 8d 1c 7f lea (%r15,%r15,2),%rbx : ixgbe_unmap_and_free_tx_resource(tx_ring, tx_buffer); 0.00 : 48cd: 4c 89 ef mov %r13,%rdi : dma_error: : dev_err(tx_ring->dev, "TX DMA map failed\n"); : : /* clear dma mappings for failed tx_buffer_info map */ : for (;;) { : tx_buffer = &tx_ring->tx_buffer_info[i]; 0.00 : 48d0: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 48d4: 49 03 5d 28 add 0x28(%r13),%rbx : ixgbe_unmap_and_free_tx_resource(tx_ring, tx_buffer); 0.00 : 48d8: 48 89 de mov %rbx,%rsi 0.00 : 48db: e8 00 00 00 00 callq 48e0 : if (tx_buffer == first) 0.00 : 48e0: 48 3b 5c 24 08 cmp 0x8(%rsp),%rbx 0.00 : 48e5: 75 d1 jne 48b8 : if (i == 0) : i = tx_ring->count; : i--; : } : : tx_ring->next_to_use = i; 0.00 : 48e7: 66 41 89 6d 50 mov %bp,0x50(%r13) : } 0.00 : 48ec: 48 83 c4 38 add $0x38,%rsp 0.00 : 48f0: 5b pop %rbx 0.00 : 48f1: 5d pop %rbp 0.00 : 48f2: 41 5c pop %r12 0.00 : 48f4: 41 5d pop %r13 0.00 : 48f6: 41 5e pop %r14 0.00 : 48f8: 41 5f pop %r15 0.00 : 48fa: c3 retq 0.00 : 48fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : return (dma_addr == DMA_ERROR_CODE); 0.00 : 4900: 31 c0 xor %eax,%eax 0.00 : 4902: 48 85 db test %rbx,%rbx 0.00 : 4905: 0f 94 c0 sete %al 0.00 : 4908: e9 be fe ff ff jmpq 47cb 0.00 : 490d: 0f 1f 00 nopl (%rax) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) : return dma_ops; 0.00 : 4910: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4917 0.00 : 4917: e9 9d fe ff ff jmpq 47b9 0.00 : 491c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4920: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4927 1.08 : 4927: e9 1d fe ff ff jmpq 4749 : : #ifdef MAX_SKB_FRAGS : if (likely(!data_len)) : break; : : tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size); ??:0 12.90 : 492c: 8b 5c 24 34 mov 0x34(%rsp),%ebx 0.00 : 4930: 09 5c 24 20 or %ebx,0x20(%rsp) : : i++; ??:0 2.15 : 4934: 83 c5 01 add $0x1,%ebp : : #ifdef MAX_SKB_FRAGS : if (likely(!data_len)) : break; : : tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size); 1.08 : 4937: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : 493b: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 4940: 89 42 08 mov %eax,0x8(%rdx) : : i++; : tx_desc++; : if (i == tx_ring->count) { 1.08 : 4943: 66 41 39 6d 4c cmp %bp,0x4c(%r13) 0.00 : 4948: 0f 84 20 01 00 00 je 4a6e : break; : : tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size); : : i++; : tx_desc++; ??:0 13.98 : 494e: 48 83 c2 10 add $0x10,%rdx 0.00 : 4952: 44 0f b7 fd movzwl %bp,%r15d 0.00 : 4956: 48 89 54 24 10 mov %rdx,0x10(%rsp) : tx_desc = IXGBE_TX_DESC(tx_ring, 0); : i = 0; : } : : #ifdef IXGBE_FCOE : size = min_t(unsigned int, data_len, skb_frag_size(frag)); ??:0 1.08 : 495b: 41 8b 44 24 0c mov 0xc(%r12),%eax 2.15 : 4960: 39 44 24 1c cmp %eax,0x1c(%rsp) 0.00 : 4964: 0f 46 44 24 1c cmovbe 0x1c(%rsp),%eax 2.15 : 4969: 89 44 24 20 mov %eax,0x20(%rsp) : #else : size = skb_frag_size(frag); : #endif : data_len -= size; : : dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size, 1.08 : 496d: 49 8b 7d 18 mov 0x18(%r13),%rdi : static inline dma_addr_t _kc_skb_frag_dma_map(struct device *dev, : const skb_frag_t *frag, : size_t offset, size_t size, : enum dma_data_direction dir) : { : return dma_map_page(dev, skb_frag_page(frag), 1.08 : 4971: 41 8b 54 24 08 mov 0x8(%r12),%edx : : #ifndef skb_frag_page : #define skb_frag_page(frag) _kc_skb_frag_page(frag) : static inline struct page *_kc_skb_frag_page(const skb_frag_t *frag) : { : return frag->page; 2.15 : 4976: 49 8b 34 24 mov (%r12),%rsi : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 1.08 : 497a: 48 85 ff test %rdi,%rdi 0.00 : 497d: 0f 84 df 00 00 00 je 4a62 0.00 : 4983: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 498a: 48 85 c0 test %rax,%rax 0.00 : 498d: 0f 84 cf 00 00 00 je 4a62 : struct dma_map_ops *ops = get_dma_ops(dev); : dma_addr_t addr; : : kmemcheck_mark_initialized(page_address(page) + offset, size); : BUG_ON(!valid_dma_direction(dir)); : addr = ops->map_page(dev, page, offset, size, dir, NULL); 1.08 : 4993: 8b 4c 24 20 mov 0x20(%rsp),%ecx 1.08 : 4997: 45 31 c9 xor %r9d,%r9d 0.00 : 499a: 89 d2 mov %edx,%edx 0.00 : 499c: 41 b8 01 00 00 00 mov $0x1,%r8d 1.08 : 49a2: ff 50 10 callq *0x10(%rax) : DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) 3.23 : 49a5: 49 8b 7d 18 mov 0x18(%r13),%rdi 0.00 : 49a9: 48 89 c3 mov %rax,%rbx 0.00 : 49ac: 48 85 ff test %rdi,%rdi 0.00 : 49af: 0f 84 cc 00 00 00 je 4a81 0.00 : 49b5: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 1.08 : 49bc: 48 85 c0 test %rax,%rax 0.00 : 49bf: 0f 84 bc 00 00 00 je 4a81 : : /* Make sure we keep the same behaviour */ : static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) : { : struct dma_map_ops *ops = get_dma_ops(dev); : if (ops->mapping_error) 2.15 : 49c5: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 49c9: 48 85 c0 test %rax,%rax 0.00 : 49cc: 0f 84 83 00 00 00 je 4a55 : return ops->mapping_error(dev, dma_addr); 0.00 : 49d2: 48 89 de mov %rbx,%rsi 0.00 : 49d5: ff d0 callq *%rax 1.08 : 49d7: 85 c0 test %eax,%eax 0.00 : 49d9: 0f 85 bb fe ff ff jne 489a : #ifdef IXGBE_FCOE : size = min_t(unsigned int, data_len, skb_frag_size(frag)); : #else : size = skb_frag_size(frag); : #endif : data_len -= size; 0.00 : 49df: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : 49e3: 29 44 24 1c sub %eax,0x1c(%rsp) : dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size, : DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) : goto dma_error; : : tx_buffer = &tx_ring->tx_buffer_info[i]; 3.23 : 49e7: 4b 8d 04 7f lea (%r15,%r15,2),%rax : dma_unmap_len_set(tx_buffer, len, size); 0.00 : 49eb: 8b 54 24 20 mov 0x20(%rsp),%edx : dma_unmap_addr_set(tx_buffer, dma, dma); : : tx_desc->read.buffer_addr = cpu_to_le64(dma); : tx_desc->read.olinfo_status = 0; : : frag++; 0.00 : 49ef: 49 83 c4 10 add $0x10,%r12 : dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size, : DMA_TO_DEVICE); : if (dma_mapping_error(tx_ring->dev, dma)) : goto dma_error; : : tx_buffer = &tx_ring->tx_buffer_info[i]; 2.15 : 49f3: 48 c1 e0 04 shl $0x4,%rax 0.00 : 49f7: 49 03 45 28 add 0x28(%r13),%rax : dma_unmap_len_set(tx_buffer, len, size); 0.00 : 49fb: 89 50 28 mov %edx,0x28(%rax) : dma_unmap_addr_set(tx_buffer, dma, dma); 3.23 : 49fe: 48 89 58 20 mov %rbx,0x20(%rax) : : tx_desc->read.buffer_addr = cpu_to_le64(dma); 4.30 : 4a02: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx 1.08 : 4a07: 48 89 19 mov %rbx,(%rcx) : tx_desc->read.olinfo_status = 0; 1.08 : 4a0a: c7 41 0c 00 00 00 00 movl $0x0,0xc(%rcx) 2.15 : 4a11: e9 f2 fd ff ff jmpq 4808 : : #ifdef MAX_SKB_FRAGS : for (;;) { : #endif : while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) { : tx_desc->read.cmd_type_len = 0.00 : 4a16: 48 8b 44 24 10 mov 0x10(%rsp),%rax : cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD); : : i++; 0.00 : 4a1b: 83 c5 01 add $0x1,%ebp : : #ifdef MAX_SKB_FRAGS : for (;;) { : #endif : while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) { : tx_desc->read.cmd_type_len = 0.00 : 4a1e: 44 89 70 08 mov %r14d,0x8(%rax) : cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD); : : i++; : tx_desc++; : if (i == tx_ring->count) { 0.00 : 4a22: 66 41 39 6d 4c cmp %bp,0x4c(%r13) 0.00 : 4a27: 74 64 je 4a8d : while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) { : tx_desc->read.cmd_type_len = : cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD); : : i++; : tx_desc++; 0.00 : 4a29: 48 83 c0 10 add $0x10,%rax 0.00 : 4a2d: 48 89 44 24 10 mov %rax,0x10(%rsp) : } : : dma += IXGBE_MAX_DATA_PER_TXD; : size -= IXGBE_MAX_DATA_PER_TXD; : : tx_desc->read.buffer_addr = cpu_to_le64(dma); 0.00 : 4a32: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx : if (i == tx_ring->count) { : tx_desc = IXGBE_TX_DESC(tx_ring, 0); : i = 0; : } : : dma += IXGBE_MAX_DATA_PER_TXD; 0.00 : 4a37: 48 81 c3 00 40 00 00 add $0x4000,%rbx : size -= IXGBE_MAX_DATA_PER_TXD; 0.00 : 4a3e: 81 6c 24 20 00 40 00 subl $0x4000,0x20(%rsp) 0.00 : 4a45: 00 : : tx_desc->read.buffer_addr = cpu_to_le64(dma); 0.00 : 4a46: 48 89 19 mov %rbx,(%rcx) : tx_desc->read.olinfo_status = 0; 0.00 : 4a49: c7 41 0c 00 00 00 00 movl $0x0,0xc(%rcx) 0.00 : 4a50: e9 b3 fd ff ff jmpq 4808 : : return (dma_addr == DMA_ERROR_CODE); 0.00 : 4a55: 31 c0 xor %eax,%eax 0.00 : 4a57: 48 85 db test %rbx,%rbx 0.00 : 4a5a: 0f 94 c0 sete %al 0.00 : 4a5d: e9 75 ff ff ff jmpq 49d7 : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) : return dma_ops; 1.08 : 4a62: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4a69 1.08 : 4a69: e9 25 ff ff ff jmpq 4993 : tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size); : : i++; : tx_desc++; : if (i == tx_ring->count) { : tx_desc = IXGBE_TX_DESC(tx_ring, 0); 0.00 : 4a6e: 49 8b 4d 20 mov 0x20(%r13),%rcx 0.00 : 4a72: 31 ed xor %ebp,%ebp 0.00 : 4a74: 45 31 ff xor %r15d,%r15d 0.00 : 4a77: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 4a7c: e9 da fe ff ff jmpq 495b 1.08 : 4a81: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4a88 0.00 : 4a88: e9 38 ff ff ff jmpq 49c5 : cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD); : : i++; : tx_desc++; : if (i == tx_ring->count) { : tx_desc = IXGBE_TX_DESC(tx_ring, 0); 0.00 : 4a8d: 49 8b 55 20 mov 0x20(%r13),%rdx 0.00 : 4a91: 31 ed xor %ebp,%ebp 0.00 : 4a93: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 4a98: eb 98 jmp 4a32 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 18.42 ??:0 15.79 ??:0 11.84 ??:0 11.84 ??:0 10.53 ??:0 10.53 ??:0 9.21 ??:0 6.58 ??:0 3.95 ??:0 1.32 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000321d0 <__isinff>: ??:0 15.79 : 321d0: 66 0f 7e c1 movd %xmm0,%ecx ??:0 1.32 : 321d4: 89 ca mov %ecx,%edx 0.00 : 321d6: c1 f9 1e sar $0x1e,%ecx ??:0 18.42 : 321d9: 81 e2 ff ff ff 7f and $0x7fffffff,%edx 0.00 : 321df: 81 f2 00 00 80 7f xor $0x7f800000,%edx ??:0 3.95 : 321e5: 89 d0 mov %edx,%eax ??:0 9.21 : 321e7: f7 d8 neg %eax 11.84 : 321e9: 09 d0 or %edx,%eax 6.58 : 321eb: c1 f8 1f sar $0x1f,%eax 10.53 : 321ee: f7 d0 not %eax 22.37 : 321f0: 21 c8 and %ecx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4062 13.70 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4068 9.59 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/nodes/pg_list.h:87 8.22 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4013 6.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4068 6.85 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4064 5.48 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4061 5.48 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4064 4.11 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4013 4.11 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4103 2.74 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4061 2.74 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/nodes/pg_list.h:87 2.74 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4064 2.74 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/nodes/pg_list.h:87 1.37 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4011 1.37 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4011 1.37 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4011 1.37 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4062 1.37 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4066 1.37 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4068 1.37 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4068 1.37 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4068 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000585d10 : : * : * OIDNewHeap is InvalidOid if we don't need to rewrite : */ : static void : ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap, LOCKMODE lockmode) : { 0.00 : 585d10: 55 push %rbp 0.00 : 585d11: 48 89 e5 mov %rsp,%rbp 0.00 : 585d14: 41 57 push %r15 0.00 : 585d16: 41 56 push %r14 0.00 : 585d18: 41 55 push %r13 0.00 : 585d1a: 41 54 push %r12 0.00 : 585d1c: 41 89 d4 mov %edx,%r12d 0.00 : 585d1f: 53 push %rbx 0.00 : 585d20: 89 f3 mov %esi,%ebx : : /* : * Open the relation(s). We have surely already locked the existing : * table. : */ : oldrel = heap_open(tab->relid, NoLock); 0.00 : 585d22: 31 f6 xor %esi,%esi : * : * OIDNewHeap is InvalidOid if we don't need to rewrite : */ : static void : ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap, LOCKMODE lockmode) : { 0.00 : 585d24: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : 585d2b: 48 89 bd 48 ff ff ff mov %rdi,-0xb8(%rbp) : : /* : * Open the relation(s). We have surely already locked the existing : * table. : */ : oldrel = heap_open(tab->relid, NoLock); 0.00 : 585d32: 8b 3f mov (%rdi),%edi 0.00 : 585d34: e8 27 7e f1 ff callq 49db60 : oldTupDesc = tab->oldDesc; 0.00 : 585d39: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx : : /* : * Open the relation(s). We have surely already locked the existing : * table. : */ : oldrel = heap_open(tab->relid, NoLock); 0.00 : 585d40: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) : oldTupDesc = tab->oldDesc; : newTupDesc = RelationGetDescr(oldrel); /* includes all mods */ : : if (OidIsValid(OIDNewHeap)) 0.00 : 585d47: 85 db test %ebx,%ebx : /* : * Open the relation(s). We have surely already locked the existing : * table. : */ : oldrel = heap_open(tab->relid, NoLock); : oldTupDesc = tab->oldDesc; 0.00 : 585d49: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 585d4d: 48 89 95 60 ff ff ff mov %rdx,-0xa0(%rbp) : newTupDesc = RelationGetDescr(oldrel); /* includes all mods */ 0.00 : 585d54: 4c 8b 78 38 mov 0x38(%rax),%r15 : : if (OidIsValid(OIDNewHeap)) 0.00 : 585d58: 0f 85 7a 02 00 00 jne 585fd8 0.00 : 585d5e: c7 85 7c ff ff ff 00 movl $0x0,-0x84(%rbp) 0.00 : 585d65: 00 00 00 0.00 : 585d68: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 585d6f: 00 0.00 : 585d70: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : 585d77: 48 c7 85 58 ff ff ff movq $0x0,-0xa8(%rbp) 0.00 : 585d7e: 00 00 00 00 : : /* : * Generate the constraint and default execution states : */ : : estate = CreateExecutorState(); 0.00 : 585d82: e8 99 f5 02 00 callq 5b5320 : : /* Build the needed expression execution states */ : foreach(l, tab->constraints) 0.00 : 585d87: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx : : /* : * Generate the constraint and default execution states : */ : : estate = CreateExecutorState(); 0.00 : 585d8e: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : : /* Build the needed expression execution states */ : foreach(l, tab->constraints) 0.00 : 585d95: 48 8b 41 58 mov 0x58(%rcx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 585d99: 48 85 c0 test %rax,%rax 0.00 : 585d9c: 0f 84 86 04 00 00 je 586228 0.00 : 585da2: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 585da6: 4d 85 e4 test %r12,%r12 0.00 : 585da9: 0f 84 79 04 00 00 je 586228 0.00 : 585daf: 45 31 ed xor %r13d,%r13d : { : NewConstraint *con = lfirst(l); 0.00 : 585db2: 49 8b 1c 24 mov (%r12),%rbx : : switch (con->contype) 0.00 : 585db6: 8b 43 08 mov 0x8(%rbx),%eax 0.00 : 585db9: 83 f8 03 cmp $0x3,%eax 0.00 : 585dbc: 74 32 je 585df0 0.00 : 585dbe: 83 f8 07 cmp $0x7,%eax 0.00 : 585dc1: 74 47 je 585e0a : break; : case CONSTR_FOREIGN: : /* Nothing to do here */ : break; : default: : elog(ERROR, "unrecognized constraint type: %d", 0.00 : 585dc3: ba db 4b 88 00 mov $0x884bdb,%edx 0.00 : 585dc8: be 42 0f 00 00 mov $0xf42,%esi 0.00 : 585dcd: bf 02 13 88 00 mov $0x881302,%edi 0.00 : 585dd2: e8 49 56 1f 00 callq 77b420 0.00 : 585dd7: 8b 53 08 mov 0x8(%rbx),%edx : break; : case CONSTR_FOREIGN: : /* Nothing to do here */ : break; : default: : elog(ERROR, "unrecognized constraint type: %d", 0.00 : 585dda: be 58 1b 7c 00 mov $0x7c1b58,%esi 0.00 : 585ddf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 585de4: 31 c0 xor %eax,%eax 0.00 : 585de6: e8 45 54 1f 00 callq 77b230 0.00 : 585deb: e8 e0 36 ee ff callq 4694d0 : : switch (con->contype) : { : case CONSTR_CHECK: : needscan = true; : con->qualstate = (List *) 0.00 : 585df0: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 585df4: 48 8b b5 70 ff ff ff mov -0x90(%rbp),%rsi 0.00 : 585dfb: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 585e01: e8 4a 91 02 00 callq 5aef50 0.00 : 585e06: 48 89 43 20 mov %rax,0x20(%rbx) : */ : : estate = CreateExecutorState(); : : /* Build the needed expression execution states */ : foreach(l, tab->constraints) 0.00 : 585e0a: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 585e0f: 4d 85 e4 test %r12,%r12 0.00 : 585e12: 75 9e jne 585db2 : elog(ERROR, "unrecognized constraint type: %d", : (int) con->contype); : } : } : : foreach(l, tab->newvals) 0.00 : 585e14: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx 0.00 : 585e1b: 48 8b 42 60 mov 0x60(%rdx),%rax 0.00 : 585e1f: 48 85 c0 test %rax,%rax 0.00 : 585e22: 74 29 je 585e4d 0.00 : 585e24: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 585e28: 4d 85 e4 test %r12,%r12 0.00 : 585e2b: 74 20 je 585e4d 0.00 : 585e2d: 0f 1f 00 nopl (%rax) : { : NewColumnValue *ex = lfirst(l); 0.00 : 585e30: 49 8b 1c 24 mov (%r12),%rbx : : /* expr already planned */ : ex->exprstate = ExecInitExpr((Expr *) ex->expr, NULL); 0.00 : 585e34: 31 f6 xor %esi,%esi 0.00 : 585e36: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 585e3a: e8 81 7c 02 00 callq 5adac0 0.00 : 585e3f: 48 89 43 10 mov %rax,0x10(%rbx) : elog(ERROR, "unrecognized constraint type: %d", : (int) con->contype); : } : } : : foreach(l, tab->newvals) 0.00 : 585e43: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 585e48: 4d 85 e4 test %r12,%r12 0.00 : 585e4b: 75 e3 jne 585e30 : /* expr already planned */ : ex->exprstate = ExecInitExpr((Expr *) ex->expr, NULL); : } : : notnull_attrs = NIL; : if (newrel || tab->new_notnull) 0.00 : 585e4d: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 585e54: 00 0.00 : 585e55: 0f 84 3a 05 00 00 je 586395 : * If we are rebuilding the tuples OR if we added any new NOT NULL : * constraints, check all not-null constraints. This is a bit of : * overkill but it minimizes risk of bugs, and heap_attisnull is a : * pretty cheap test anyway. : */ : for (i = 0; i < newTupDesc->natts; i++) 0.00 : 585e5b: 41 8b 37 mov (%r15),%esi 0.00 : 585e5e: 85 f6 test %esi,%esi 0.00 : 585e60: 0f 8e e1 04 00 00 jle 586347 0.00 : 585e66: 48 c7 85 68 ff ff ff movq $0x0,-0x98(%rbp) 0.00 : 585e6d: 00 00 00 00 0.00 : 585e71: 31 db xor %ebx,%ebx 0.00 : 585e73: eb 0b jmp 585e80 0.00 : 585e75: 0f 1f 00 nopl (%rax) 0.00 : 585e78: 83 c3 01 add $0x1,%ebx 0.00 : 585e7b: 41 39 1f cmp %ebx,(%r15) 0.00 : 585e7e: 7e 38 jle 585eb8 : { : if (newTupDesc->attrs[i]->attnotnull && 0.00 : 585e80: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 585e84: 48 63 d3 movslq %ebx,%rdx 0.00 : 585e87: 48 8b 04 d0 mov (%rax,%rdx,8),%rax 0.00 : 585e8b: 80 78 5f 00 cmpb $0x0,0x5f(%rax) 0.00 : 585e8f: 74 e7 je 585e78 0.00 : 585e91: 80 78 61 00 cmpb $0x0,0x61(%rax) 0.00 : 585e95: 75 e1 jne 585e78 : !newTupDesc->attrs[i]->attisdropped) : notnull_attrs = lappend_int(notnull_attrs, i); 0.00 : 585e97: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 585e9e: 89 de mov %ebx,%esi : * If we are rebuilding the tuples OR if we added any new NOT NULL : * constraints, check all not-null constraints. This is a bit of : * overkill but it minimizes risk of bugs, and heap_attisnull is a : * pretty cheap test anyway. : */ : for (i = 0; i < newTupDesc->natts; i++) 0.00 : 585ea0: 83 c3 01 add $0x1,%ebx : { : if (newTupDesc->attrs[i]->attnotnull && : !newTupDesc->attrs[i]->attisdropped) : notnull_attrs = lappend_int(notnull_attrs, i); 0.00 : 585ea3: e8 98 bd 05 00 callq 5e1c40 0.00 : 585ea8: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : * If we are rebuilding the tuples OR if we added any new NOT NULL : * constraints, check all not-null constraints. This is a bit of : * overkill but it minimizes risk of bugs, and heap_attisnull is a : * pretty cheap test anyway. : */ : for (i = 0; i < newTupDesc->natts; i++) 0.00 : 585eaf: 41 39 1f cmp %ebx,(%r15) 0.00 : 585eb2: 7f cc jg 585e80 0.00 : 585eb4: 0f 1f 40 00 nopl 0x0(%rax) : { : if (newTupDesc->attrs[i]->attnotnull && : !newTupDesc->attrs[i]->attisdropped) : notnull_attrs = lappend_int(notnull_attrs, i); : } : if (notnull_attrs) 0.00 : 585eb8: 48 83 bd 68 ff ff ff cmpq $0x0,-0x98(%rbp) 0.00 : 585ebf: 00 0.00 : 585ec0: 0f 84 81 04 00 00 je 586347 : MemoryContext oldCxt; : List *dropped_attrs = NIL; : ListCell *lc; : Snapshot snapshot; : : if (newrel) 0.00 : 585ec6: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 585ecd: 00 0.00 : 585ece: 0f 84 8e 05 00 00 je 586462 : ereport(DEBUG1, 0.00 : 585ed4: 45 31 c0 xor %r8d,%r8d 0.00 : 585ed7: b9 db 4b 88 00 mov $0x884bdb,%ecx 0.00 : 585edc: ba 72 0f 00 00 mov $0xf72,%edx 0.00 : 585ee1: be 02 13 88 00 mov $0x881302,%esi 0.00 : 585ee6: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 585eeb: e8 d0 4b 1f 00 callq 77aac0 0.00 : 585ef0: 84 c0 test %al,%al 0.00 : 585ef2: 0f 85 70 04 00 00 jne 586368 : /* : * All predicate locks on the tuples or pages are about to be made : * invalid, because we move tuples around. Promote them to : * relation locks. : */ : TransferPredicateLocksToHeapRelation(oldrel); 0.00 : 585ef8: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : 585eff: e8 3c b2 10 00 callq 691140 : } : : econtext = GetPerTupleExprContext(estate); 0.00 : 585f04: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 585f0b: 48 8b 89 c8 00 00 00 mov 0xc8(%rcx),%rcx 0.00 : 585f12: 48 85 c9 test %rcx,%rcx 0.00 : 585f15: 48 89 4d 90 mov %rcx,-0x70(%rbp) 0.00 : 585f19: 0f 84 bc 05 00 00 je 5864db : /* : * Make tuple slots for old and new tuples. Note that even when the : * tuples are the same, the tupDescs might not be (consider ADD COLUMN : * without a default). : */ : oldslot = MakeSingleTupleTableSlot(oldTupDesc); 0.00 : 585f1f: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 585f26: e8 25 e8 02 00 callq 5b4750 : newslot = MakeSingleTupleTableSlot(newTupDesc); 0.00 : 585f2b: 4c 89 ff mov %r15,%rdi : /* : * Make tuple slots for old and new tuples. Note that even when the : * tuples are the same, the tupDescs might not be (consider ADD COLUMN : * without a default). : */ : oldslot = MakeSingleTupleTableSlot(oldTupDesc); 0.00 : 585f2e: 48 89 45 a8 mov %rax,-0x58(%rbp) : newslot = MakeSingleTupleTableSlot(newTupDesc); 0.00 : 585f32: e8 19 e8 02 00 callq 5b4750 : : /* Preallocate values/isnull arrays */ : i = Max(newTupDesc->natts, oldTupDesc->natts); : values = (Datum *) palloc(i * sizeof(Datum)); 0.00 : 585f37: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx : * Make tuple slots for old and new tuples. Note that even when the : * tuples are the same, the tupDescs might not be (consider ADD COLUMN : * without a default). : */ : oldslot = MakeSingleTupleTableSlot(oldTupDesc); : newslot = MakeSingleTupleTableSlot(newTupDesc); 0.00 : 585f3e: 48 89 45 b0 mov %rax,-0x50(%rbp) : : /* Preallocate values/isnull arrays */ : i = Max(newTupDesc->natts, oldTupDesc->natts); : values = (Datum *) palloc(i * sizeof(Datum)); 0.00 : 585f42: 8b 02 mov (%rdx),%eax 0.00 : 585f44: 41 39 07 cmp %eax,(%r15) 0.00 : 585f47: 41 0f 4d 07 cmovge (%r15),%eax 0.00 : 585f4b: 4c 63 e0 movslq %eax,%r12 0.00 : 585f4e: 4a 8d 1c e5 00 00 00 lea 0x0(,%r12,8),%rbx 0.00 : 585f55: 00 0.00 : 585f56: 48 89 df mov %rbx,%rdi 0.00 : 585f59: e8 f2 2d 21 00 callq 798d50 : isnull = (bool *) palloc(i * sizeof(bool)); 0.00 : 585f5e: 4c 89 e7 mov %r12,%rdi : oldslot = MakeSingleTupleTableSlot(oldTupDesc); : newslot = MakeSingleTupleTableSlot(newTupDesc); : : /* Preallocate values/isnull arrays */ : i = Max(newTupDesc->natts, oldTupDesc->natts); : values = (Datum *) palloc(i * sizeof(Datum)); 0.00 : 585f61: 48 89 45 98 mov %rax,-0x68(%rbp) : isnull = (bool *) palloc(i * sizeof(bool)); 0.00 : 585f65: e8 e6 2d 21 00 callq 798d50 : memset(values, 0, i * sizeof(Datum)); 0.00 : 585f6a: 48 8b 7d 98 mov -0x68(%rbp),%rdi 0.00 : 585f6e: 48 89 da mov %rbx,%rdx 0.00 : 585f71: 31 f6 xor %esi,%esi : newslot = MakeSingleTupleTableSlot(newTupDesc); : : /* Preallocate values/isnull arrays */ : i = Max(newTupDesc->natts, oldTupDesc->natts); : values = (Datum *) palloc(i * sizeof(Datum)); : isnull = (bool *) palloc(i * sizeof(bool)); 0.00 : 585f73: 48 89 45 a0 mov %rax,-0x60(%rbp) : /* : * Any attributes that are dropped according to the new tuple : * descriptor can be set to NULL. We precompute the list of dropped : * attributes to avoid needing to do so in the per-tuple loop. : */ : for (i = 0; i < newTupDesc->natts; i++) 0.00 : 585f77: 31 db xor %ebx,%ebx : : /* Preallocate values/isnull arrays */ : i = Max(newTupDesc->natts, oldTupDesc->natts); : values = (Datum *) palloc(i * sizeof(Datum)); : isnull = (bool *) palloc(i * sizeof(bool)); : memset(values, 0, i * sizeof(Datum)); 0.00 : 585f79: e8 a2 34 ee ff callq 469420 : memset(isnull, true, i * sizeof(bool)); 0.00 : 585f7e: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 585f82: 4c 89 e2 mov %r12,%rdx 0.00 : 585f85: be 01 00 00 00 mov $0x1,%esi 0.00 : 585f8a: e8 91 34 ee ff callq 469420 : /* : * Any attributes that are dropped according to the new tuple : * descriptor can be set to NULL. We precompute the list of dropped : * attributes to avoid needing to do so in the per-tuple loop. : */ : for (i = 0; i < newTupDesc->natts; i++) 0.00 : 585f8f: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 585f96: 00 0.00 : 585f97: 41 8b 0f mov (%r15),%ecx 0.00 : 585f9a: 85 c9 test %ecx,%ecx 0.00 : 585f9c: 7f 12 jg 585fb0 0.00 : 585f9e: e9 85 00 00 00 jmpq 586028 0.00 : 585fa3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 585fa8: 83 c3 01 add $0x1,%ebx 0.00 : 585fab: 41 39 1f cmp %ebx,(%r15) 0.00 : 585fae: 7e 78 jle 586028 : { : if (newTupDesc->attrs[i]->attisdropped) 0.00 : 585fb0: 49 8b 57 08 mov 0x8(%r15),%rdx 0.00 : 585fb4: 48 63 c3 movslq %ebx,%rax 0.00 : 585fb7: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 585fbb: 80 78 61 00 cmpb $0x0,0x61(%rax) 0.00 : 585fbf: 74 e7 je 585fa8 : dropped_attrs = lappend_int(dropped_attrs, i); 0.00 : 585fc1: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 585fc5: 89 de mov %ebx,%esi 0.00 : 585fc7: e8 74 bc 05 00 callq 5e1c40 0.00 : 585fcc: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 585fd0: eb d6 jmp 585fa8 0.00 : 585fd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : oldrel = heap_open(tab->relid, NoLock); : oldTupDesc = tab->oldDesc; : newTupDesc = RelationGetDescr(oldrel); /* includes all mods */ : : if (OidIsValid(OIDNewHeap)) : newrel = heap_open(OIDNewHeap, lockmode); 0.00 : 585fd8: 44 89 e6 mov %r12d,%esi 0.00 : 585fdb: 89 df mov %ebx,%edi 0.00 : 585fdd: e8 7e 7b f1 ff callq 49db60 : * Prepare a BulkInsertState and options for heap_insert. Because we're : * building a new heap, we can skip WAL-logging and fsync it to disk at : * the end instead (unless WAL-logging is required for archiving or : * streaming replication). The FSM is empty too, so don't bother using it. : */ : if (newrel) 0.00 : 585fe2: 48 85 c0 test %rax,%rax : oldrel = heap_open(tab->relid, NoLock); : oldTupDesc = tab->oldDesc; : newTupDesc = RelationGetDescr(oldrel); /* includes all mods */ : : if (OidIsValid(OIDNewHeap)) : newrel = heap_open(OIDNewHeap, lockmode); 0.00 : 585fe5: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) : * Prepare a BulkInsertState and options for heap_insert. Because we're : * building a new heap, we can skip WAL-logging and fsync it to disk at : * the end instead (unless WAL-logging is required for archiving or : * streaming replication). The FSM is empty too, so don't bother using it. : */ : if (newrel) 0.00 : 585fec: 0f 84 32 05 00 00 je 586524 : { : mycid = GetCurrentCommandId(true); 0.00 : 585ff2: bf 01 00 00 00 mov $0x1,%edi 0.00 : 585ff7: e8 14 ac f3 ff callq 4c0c10 0.00 : 585ffc: 89 85 7c ff ff ff mov %eax,-0x84(%rbp) : bistate = GetBulkInsertState(); 0.00 : 586002: e8 19 5a f1 ff callq 49ba20 0.00 : 586007: 48 89 45 80 mov %rax,-0x80(%rbp) : : hi_options = HEAP_INSERT_SKIP_FSM; : if (!XLogIsNeeded()) 0.00 : 58600b: 31 c0 xor %eax,%eax 0.00 : 58600d: 83 3d 48 31 5f 00 00 cmpl $0x0,0x5f3148(%rip) # b7915c 0.00 : 586014: 0f 9e c0 setle %al 0.00 : 586017: 83 c0 02 add $0x2,%eax 0.00 : 58601a: 89 45 8c mov %eax,-0x74(%rbp) 0.00 : 58601d: e9 60 fd ff ff jmpq 585d82 0.00 : 586022: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Scan through the rows, generating a new row if needed and then : * checking all the constraints. : */ : snapshot = RegisterSnapshot(GetLatestSnapshot()); 0.00 : 586028: e8 d3 16 22 00 callq 7a7700 0.00 : 58602d: 48 89 c7 mov %rax,%rdi 0.00 : 586030: e8 4b 14 22 00 callq 7a7480 : scan = heap_beginscan(oldrel, snapshot, 0, NULL); 0.00 : 586035: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : 58603c: 31 c9 xor %ecx,%ecx 0.00 : 58603e: 31 d2 xor %edx,%edx : : /* : * Scan through the rows, generating a new row if needed and then : * checking all the constraints. : */ : snapshot = RegisterSnapshot(GetLatestSnapshot()); 0.00 : 586040: 48 89 45 d0 mov %rax,-0x30(%rbp) : scan = heap_beginscan(oldrel, snapshot, 0, NULL); 0.00 : 586044: 48 89 c6 mov %rax,%rsi 0.00 : 586047: e8 d4 78 f1 ff callq 49d920 : : /* : * Switch to per-tuple memory context and reset it for each tuple : * produced, so we don't leak memory. : */ : oldCxt = MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); 0.00 : 58604c: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx : /* : * Scan through the rows, generating a new row if needed and then : * checking all the constraints. : */ : snapshot = RegisterSnapshot(GetLatestSnapshot()); : scan = heap_beginscan(oldrel, snapshot, 0, NULL); 0.00 : 586053: 48 89 45 b8 mov %rax,-0x48(%rbp) : : /* : * Switch to per-tuple memory context and reset it for each tuple : * produced, so we don't leak memory. : */ : oldCxt = MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); 0.00 : 586057: 48 8b 81 c8 00 00 00 mov 0xc8(%rcx),%rax 0.00 : 58605e: 48 85 c0 test %rax,%rax 0.00 : 586061: 0f 84 67 04 00 00 je 5864ce : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 586067: 48 8b 15 f2 47 63 00 mov 0x6347f2(%rip),%rdx # bba860 0.00 : 58606e: 48 89 55 c0 mov %rdx,-0x40(%rbp) : : CurrentMemoryContext = context; 0.00 : 586072: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 586076: 48 89 05 e3 47 63 00 mov %rax,0x6347e3(%rip) # bba860 : : while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL) /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4011 1.37 : 58607d: 48 8b 7d b8 mov -0x48(%rbp),%rdi 1.37 : 586081: be 01 00 00 00 mov $0x1,%esi 0.00 : 586086: e8 05 0e f1 ff callq 496e90 0.00 : 58608b: 48 85 c0 test %rax,%rax 1.37 : 58608e: 49 89 c6 mov %rax,%r14 0.00 : 586091: 0f 84 59 04 00 00 je 5864f0 : { : if (tab->rewrite) 0.00 : 586097: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4013 4.11 : 58609e: 80 79 69 00 cmpb $0x0,0x69(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4013 8.22 : 5860a2: 0f 85 88 01 00 00 jne 586230 : */ : tuple->t_tableOid = RelationGetRelid(oldrel); : } : : /* Now check any constraints on the possibly-changed tuple */ : ExecStoreTuple(tuple, newslot, InvalidBuffer, false); /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4061 5.48 : 5860a8: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 5860ac: 31 d2 xor %edx,%edx /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4061 2.74 : 5860ae: 31 c9 xor %ecx,%ecx 0.00 : 5860b0: 4c 89 f7 mov %r14,%rdi 0.00 : 5860b3: e8 c8 e3 02 00 callq 5b4480 : econtext->ecxt_scantuple = newslot; /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4062 13.70 : 5860b8: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 5860bc: 48 8b 45 90 mov -0x70(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4062 1.37 : 5860c0: 48 89 50 08 mov %rdx,0x8(%rax) /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/nodes/pg_list.h:87 9.59 : 5860c4: 48 83 bd 68 ff ff ff cmpq $0x0,-0x98(%rbp) 0.00 : 5860cb: 00 /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/nodes/pg_list.h:87 2.74 : 5860cc: 74 35 je 586103 0.00 : 5860ce: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 5860d5: 48 8b 59 08 mov 0x8(%rcx),%rbx : : foreach(l, notnull_attrs) /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4064 5.48 : 5860d9: 48 85 db test %rbx,%rbx 0.00 : 5860dc: 74 25 je 586103 /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4064 2.74 : 5860de: 66 90 xchg %ax,%ax : { : int attn = lfirst_int(l); /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4066 1.37 : 5860e0: 44 8b 2b mov (%rbx),%r13d : : if (heap_attisnull(tuple, attn + 1)) /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4068 13.70 : 5860e3: 4c 89 f7 mov %r14,%rdi /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4068 1.37 : 5860e6: 45 8d 65 01 lea 0x1(%r13),%r12d /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4068 6.85 : 5860ea: 44 89 e6 mov %r12d,%esi /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4068 1.37 : 5860ed: e8 ae 8c ee ff callq 46eda0 1.37 : 5860f2: 84 c0 test %al,%al 0.00 : 5860f4: 0f 85 0b 03 00 00 jne 586405 : : /* Now check any constraints on the possibly-changed tuple */ : ExecStoreTuple(tuple, newslot, InvalidBuffer, false); : econtext->ecxt_scantuple = newslot; : : foreach(l, notnull_attrs) /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4064 6.85 : 5860fa: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 5860fe: 48 85 db test %rbx,%rbx 0.00 : 586101: 75 dd jne 5860e0 : errmsg("column \"%s\" contains null values", : NameStr(newTupDesc->attrs[attn]->attname)), : errtablecol(oldrel, attn + 1))); : } : : foreach(l, tab->constraints) 0.00 : 586103: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx 0.00 : 58610a: 48 8b 42 58 mov 0x58(%rdx),%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/../../../src/include/nodes/pg_list.h:87 2.74 : 58610e: 48 85 c0 test %rax,%rax 0.00 : 586111: 74 5c je 58616f 0.00 : 586113: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 586117: 48 85 db test %rbx,%rbx 0.00 : 58611a: 74 53 je 58616f : { : NewConstraint *con = lfirst(l); 0.00 : 58611c: 4c 8b 2b mov (%rbx),%r13 : : switch (con->contype) 0.00 : 58611f: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 586123: 83 f8 03 cmp $0x3,%eax 0.00 : 586126: 74 28 je 586150 0.00 : 586128: 83 f8 07 cmp $0x7,%eax 0.00 : 58612b: 74 39 je 586166 : break; : case CONSTR_FOREIGN: : /* Nothing to do here */ : break; : default: : elog(ERROR, "unrecognized constraint type: %d", 0.00 : 58612d: ba db 4b 88 00 mov $0x884bdb,%edx 0.00 : 586132: be ff 0f 00 00 mov $0xfff,%esi 0.00 : 586137: bf 02 13 88 00 mov $0x881302,%edi 0.00 : 58613c: e8 df 52 1f 00 callq 77b420 0.00 : 586141: 41 8b 55 08 mov 0x8(%r13),%edx 0.00 : 586145: e9 90 fc ff ff jmpq 585dda 0.00 : 58614a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : NewConstraint *con = lfirst(l); : : switch (con->contype) : { : case CONSTR_CHECK: : if (!ExecQual(con->qualstate, econtext, true)) 0.00 : 586150: 49 8b 7d 20 mov 0x20(%r13),%rdi 0.00 : 586154: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 586158: ba 01 00 00 00 mov $0x1,%edx 0.00 : 58615d: e8 ae 6d 02 00 callq 5acf10 0.00 : 586162: 84 c0 test %al,%al 0.00 : 586164: 74 55 je 5861bb : errmsg("column \"%s\" contains null values", : NameStr(newTupDesc->attrs[attn]->attname)), : errtablecol(oldrel, attn + 1))); : } : : foreach(l, tab->constraints) 0.00 : 586166: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 58616a: 48 85 db test %rbx,%rbx 0.00 : 58616d: 75 ad jne 58611c : (int) con->contype); : } : } : : /* Write the tuple out to the new relation */ : if (newrel) 0.00 : 58616f: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 586176: 00 0.00 : 586177: 74 1c je 586195 : heap_insert(newrel, tuple, mycid, hi_options, bistate); 0.00 : 586179: 4c 8b 45 80 mov -0x80(%rbp),%r8 0.00 : 58617d: 8b 4d 8c mov -0x74(%rbp),%ecx 0.00 : 586180: 4c 89 f6 mov %r14,%rsi 0.00 : 586183: 8b 95 7c ff ff ff mov -0x84(%rbp),%edx 0.00 : 586189: 48 8b bd 58 ff ff ff mov -0xa8(%rbp),%rdi 0.00 : 586190: e8 ab 53 f1 ff callq 49b540 : : ResetExprContext(econtext); /home/Computational/mark/src/postgres-andres/src/backend/commands/tablecmds.c:4103 4.11 : 586195: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 586199: 48 8b 79 28 mov 0x28(%rcx),%rdi 0.00 : 58619d: e8 0e 28 21 00 callq 7989b0 : : CHECK_FOR_INTERRUPTS(); 0.00 : 5861a2: 0f b6 05 e7 3e 63 00 movzbl 0x633ee7(%rip),%eax # bba090 0.00 : 5861a9: 84 c0 test %al,%al 0.00 : 5861ab: 0f 84 cc fe ff ff je 58607d 0.00 : 5861b1: e8 ea 60 11 00 callq 69c2a0 0.00 : 5861b6: e9 c2 fe ff ff jmpq 58607d : : switch (con->contype) : { : case CONSTR_CHECK: : if (!ExecQual(con->qualstate, econtext, true)) : ereport(ERROR, 0.00 : 5861bb: 45 31 c0 xor %r8d,%r8d 0.00 : 5861be: b9 db 4b 88 00 mov $0x884bdb,%ecx 0.00 : 5861c3: ba f8 0f 00 00 mov $0xff8,%edx 0.00 : 5861c8: be 02 13 88 00 mov $0x881302,%esi 0.00 : 5861cd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5861d2: e8 e9 48 1f 00 callq 77aac0 0.00 : 5861d7: 84 c0 test %al,%al 0.00 : 5861d9: 0f 84 0c fc ff ff je 585deb 0.00 : 5861df: 49 8b 75 00 mov 0x0(%r13),%rsi 0.00 : 5861e3: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : 5861ea: e8 31 39 1e 00 callq 769b20 0.00 : 5861ef: 49 8b 75 00 mov 0x0(%r13),%rsi 0.00 : 5861f3: bf 80 22 88 00 mov $0x882280,%edi 0.00 : 5861f8: 41 89 c4 mov %eax,%r12d 0.00 : 5861fb: 31 c0 xor %eax,%eax 0.00 : 5861fd: e8 9e 66 1f 00 callq 77c8a0 0.00 : 586202: bf c2 50 04 04 mov $0x40450c2,%edi 0.00 : 586207: 89 c3 mov %eax,%ebx 0.00 : 586209: e8 42 6b 1f 00 callq 77cd50 0.00 : 58620e: 44 89 e2 mov %r12d,%edx 0.00 : 586211: 89 c7 mov %eax,%edi 0.00 : 586213: 89 de mov %ebx,%esi 0.00 : 586215: 31 c0 xor %eax,%eax 0.00 : 586217: e8 c4 43 1f 00 callq 77a5e0 0.00 : 58621c: e9 ca fb ff ff jmpq 585deb 0.00 : 586221: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : : estate = CreateExecutorState(); : : /* Build the needed expression execution states */ : foreach(l, tab->constraints) 0.00 : 586228: 45 31 ed xor %r13d,%r13d 0.00 : 58622b: e9 e4 fb ff ff jmpq 585e14 : if (tab->rewrite) : { : Oid tupOid = InvalidOid; : : /* Extract data from old tuple */ : heap_deform_tuple(tuple, oldTupDesc, values, isnull); 0.00 : 586230: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 586234: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 586238: 4c 89 f7 mov %r14,%rdi 0.00 : 58623b: 48 8b b5 60 ff ff ff mov -0xa0(%rbp),%rsi 0.00 : 586242: e8 59 93 ee ff callq 46f5a0 : if (oldTupDesc->tdhasoid) 0.00 : 586247: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax 0.00 : 58624e: 80 78 20 00 cmpb $0x0,0x20(%rax) 0.00 : 586252: 0f 84 35 01 00 00 je 58638d : tupOid = HeapTupleGetOid(tuple); 0.00 : 586258: 49 8b 56 10 mov 0x10(%r14),%rdx 0.00 : 58625c: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 586260: 0f 84 27 01 00 00 je 58638d 0.00 : 586266: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 58626a: 44 8b 6c 02 fc mov -0x4(%rdx,%rax,1),%r13d 0.00 : 58626f: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : 586274: 74 26 je 58629c 0.00 : 586276: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : 58627a: 48 8b 51 08 mov 0x8(%rcx),%rdx : : /* Set dropped attributes to null in new tuple */ : foreach(lc, dropped_attrs) 0.00 : 58627e: 48 85 d2 test %rdx,%rdx 0.00 : 586281: 74 19 je 58629c 0.00 : 586283: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : isnull[lfirst_int(lc)] = true; 0.00 : 586288: 48 63 02 movslq (%rdx),%rax 0.00 : 58628b: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 58628f: c6 04 01 01 movb $0x1,(%rcx,%rax,1) : heap_deform_tuple(tuple, oldTupDesc, values, isnull); : if (oldTupDesc->tdhasoid) : tupOid = HeapTupleGetOid(tuple); : : /* Set dropped attributes to null in new tuple */ : foreach(lc, dropped_attrs) 0.00 : 586293: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 586297: 48 85 d2 test %rdx,%rdx 0.00 : 58629a: 75 ec jne 586288 : : /* : * Process supplied expressions to replace selected columns. : * Expression inputs come from the old tuple. : */ : ExecStoreTuple(tuple, oldslot, InvalidBuffer, false); 0.00 : 58629c: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 5862a0: 31 c9 xor %ecx,%ecx 0.00 : 5862a2: 31 d2 xor %edx,%edx 0.00 : 5862a4: 4c 89 f7 mov %r14,%rdi 0.00 : 5862a7: e8 d4 e1 02 00 callq 5b4480 : econtext->ecxt_scantuple = oldslot; 0.00 : 5862ac: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 5862b0: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 5862b4: 48 89 50 08 mov %rdx,0x8(%rax) : : foreach(l, tab->newvals) 0.00 : 5862b8: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 5862bf: 48 8b 41 60 mov 0x60(%rcx),%rax 0.00 : 5862c3: 48 85 c0 test %rax,%rax 0.00 : 5862c6: 74 45 je 58630d 0.00 : 5862c8: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 5862cc: 4d 85 e4 test %r12,%r12 0.00 : 5862cf: 74 3c je 58630d 0.00 : 5862d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : NewColumnValue *ex = lfirst(l); 0.00 : 5862d8: 49 8b 04 24 mov (%r12),%rax : : values[ex->attnum - 1] = ExecEvalExpr(ex->exprstate, 0.00 : 5862dc: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 5862e0: 31 c9 xor %ecx,%ecx 0.00 : 5862e2: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 5862e6: 48 0f bf 18 movswq (%rax),%rbx 0.00 : 5862ea: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 5862ee: 48 89 c7 mov %rax,%rdi 0.00 : 5862f1: 48 83 eb 01 sub $0x1,%rbx 0.00 : 5862f5: 48 01 da add %rbx,%rdx 0.00 : 5862f8: ff 50 10 callq *0x10(%rax) 0.00 : 5862fb: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 5862ff: 48 89 04 da mov %rax,(%rdx,%rbx,8) : * Expression inputs come from the old tuple. : */ : ExecStoreTuple(tuple, oldslot, InvalidBuffer, false); : econtext->ecxt_scantuple = oldslot; : : foreach(l, tab->newvals) 0.00 : 586303: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 586308: 4d 85 e4 test %r12,%r12 0.00 : 58630b: 75 cb jne 5862d8 : : /* : * Form the new tuple. Note that we don't explicitly pfree it, : * since the per-tuple memory context will be reset shortly. : */ : tuple = heap_form_tuple(newTupDesc, values, isnull); 0.00 : 58630d: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 586311: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 586315: 4c 89 ff mov %r15,%rdi 0.00 : 586318: e8 43 a3 ee ff callq 470660 : : /* Preserve OID, if any */ : if (newTupDesc->tdhasoid) 0.00 : 58631d: 41 80 7f 20 00 cmpb $0x0,0x20(%r15) : : /* : * Form the new tuple. Note that we don't explicitly pfree it, : * since the per-tuple memory context will be reset shortly. : */ : tuple = heap_form_tuple(newTupDesc, values, isnull); 0.00 : 586322: 49 89 c6 mov %rax,%r14 : : /* Preserve OID, if any */ : if (newTupDesc->tdhasoid) 0.00 : 586325: 74 0d je 586334 : HeapTupleSetOid(tuple, tupOid); 0.00 : 586327: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 58632b: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 58632f: 44 89 6c 02 fc mov %r13d,-0x4(%rdx,%rax,1) : : /* : * Constraints might reference the tableoid column, so : * initialize t_tableOid before evaluating them. : */ : tuple->t_tableOid = RelationGetRelid(oldrel); 0.00 : 586334: 48 8b 8d 50 ff ff ff mov -0xb0(%rbp),%rcx 0.00 : 58633b: 8b 41 40 mov 0x40(%rcx),%eax 0.00 : 58633e: 41 89 46 0c mov %eax,0xc(%r14) 0.00 : 586342: e9 61 fd ff ff jmpq 5860a8 : } : if (notnull_attrs) : needscan = true; : } : : if (newrel || needscan) 0.00 : 586347: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 58634e: 00 0.00 : 58634f: 74 55 je 5863a6 0.00 : 586351: 48 c7 85 68 ff ff ff movq $0x0,-0x98(%rbp) 0.00 : 586358: 00 00 00 00 0.00 : 58635c: e9 65 fb ff ff jmpq 585ec6 0.00 : 586361: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : List *dropped_attrs = NIL; : ListCell *lc; : Snapshot snapshot; : : if (newrel) : ereport(DEBUG1, 0.00 : 586368: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax 0.00 : 58636f: bf 95 15 88 00 mov $0x881595,%edi 0.00 : 586374: 48 8b 70 30 mov 0x30(%rax),%rsi 0.00 : 586378: 31 c0 xor %eax,%eax 0.00 : 58637a: e8 21 65 1f 00 callq 77c8a0 0.00 : 58637f: 89 c7 mov %eax,%edi 0.00 : 586381: 31 c0 xor %eax,%eax 0.00 : 586383: e8 58 42 1f 00 callq 77a5e0 0.00 : 586388: e9 6b fb ff ff jmpq 585ef8 : Oid tupOid = InvalidOid; : : /* Extract data from old tuple */ : heap_deform_tuple(tuple, oldTupDesc, values, isnull); : if (oldTupDesc->tdhasoid) : tupOid = HeapTupleGetOid(tuple); 0.00 : 58638d: 45 31 ed xor %r13d,%r13d 0.00 : 586390: e9 da fe ff ff jmpq 58626f : /* expr already planned */ : ex->exprstate = ExecInitExpr((Expr *) ex->expr, NULL); : } : : notnull_attrs = NIL; : if (newrel || tab->new_notnull) 0.00 : 586395: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 58639c: 80 79 68 00 cmpb $0x0,0x68(%rcx) 0.00 : 5863a0: 0f 85 b5 fa ff ff jne 585e5b : } : if (notnull_attrs) : needscan = true; : } : : if (newrel || needscan) 0.00 : 5863a6: 45 84 ed test %r13b,%r13b 0.00 : 5863a9: 75 a6 jne 586351 : : ExecDropSingleTupleTableSlot(oldslot); : ExecDropSingleTupleTableSlot(newslot); : } : : FreeExecutorState(estate); 0.00 : 5863ab: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 5863b2: e8 59 ee 02 00 callq 5b5210 : : heap_close(oldrel, NoLock); 0.00 : 5863b7: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : 5863be: 31 f6 xor %esi,%esi 0.00 : 5863c0: e8 fb 75 f1 ff callq 49d9c0 : if (newrel) 0.00 : 5863c5: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 5863cc: 00 0.00 : 5863cd: 0f 84 d8 00 00 00 je 5864ab : { : FreeBulkInsertState(bistate); 0.00 : 5863d3: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 5863d7: e8 14 56 f1 ff callq 49b9f0 : : /* If we skipped writing WAL, then we need to sync the heap. */ : if (hi_options & HEAP_INSERT_SKIP_WAL) 0.00 : 5863dc: f6 45 8c 01 testb $0x1,-0x74(%rbp) 0.00 : 5863e0: 0f 85 d7 00 00 00 jne 5864bd : heap_sync(newrel); : : heap_close(newrel, NoLock); 0.00 : 5863e6: 48 8b bd 58 ff ff ff mov -0xa8(%rbp),%rdi : } : } 0.00 : 5863ed: 48 81 c4 98 00 00 00 add $0x98,%rsp : : /* If we skipped writing WAL, then we need to sync the heap. */ : if (hi_options & HEAP_INSERT_SKIP_WAL) : heap_sync(newrel); : : heap_close(newrel, NoLock); 0.00 : 5863f4: 31 f6 xor %esi,%esi : } : } 0.00 : 5863f6: 5b pop %rbx 0.00 : 5863f7: 41 5c pop %r12 0.00 : 5863f9: 41 5d pop %r13 0.00 : 5863fb: 41 5e pop %r14 0.00 : 5863fd: 41 5f pop %r15 0.00 : 5863ff: c9 leaveq : : /* If we skipped writing WAL, then we need to sync the heap. */ : if (hi_options & HEAP_INSERT_SKIP_WAL) : heap_sync(newrel); : : heap_close(newrel, NoLock); 0.00 : 586400: e9 bb 75 f1 ff jmpq 49d9c0 : foreach(l, notnull_attrs) : { : int attn = lfirst_int(l); : : if (heap_attisnull(tuple, attn + 1)) : ereport(ERROR, 0.00 : 586405: 45 31 c0 xor %r8d,%r8d 0.00 : 586408: b9 db 4b 88 00 mov $0x884bdb,%ecx 0.00 : 58640d: ba e9 0f 00 00 mov $0xfe9,%edx 0.00 : 586412: be 02 13 88 00 mov $0x881302,%esi 0.00 : 586417: bf 14 00 00 00 mov $0x14,%edi 0.00 : 58641c: e8 9f 46 1f 00 callq 77aac0 0.00 : 586421: 84 c0 test %al,%al 0.00 : 586423: 0f 84 c2 f9 ff ff je 585deb 0.00 : 586429: 48 8b bd 50 ff ff ff mov -0xb0(%rbp),%rdi 0.00 : 586430: 44 89 e6 mov %r12d,%esi 0.00 : 586433: e8 48 37 1e 00 callq 769b80 0.00 : 586438: 41 89 c4 mov %eax,%r12d 0.00 : 58643b: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 58643f: 49 63 d5 movslq %r13d,%rdx 0.00 : 586442: bf 20 28 88 00 mov $0x882820,%edi 0.00 : 586447: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi 0.00 : 58644b: 31 c0 xor %eax,%eax 0.00 : 58644d: 48 83 c6 04 add $0x4,%rsi 0.00 : 586451: e8 4a 64 1f 00 callq 77c8a0 0.00 : 586456: bf c2 50 00 02 mov $0x20050c2,%edi 0.00 : 58645b: 89 c3 mov %eax,%ebx 0.00 : 58645d: e9 a7 fd ff ff jmpq 586209 : if (newrel) : ereport(DEBUG1, : (errmsg("rewriting table \"%s\"", : RelationGetRelationName(oldrel)))); : else : ereport(DEBUG1, 0.00 : 586462: 45 31 c0 xor %r8d,%r8d 0.00 : 586465: b9 db 4b 88 00 mov $0x884bdb,%ecx 0.00 : 58646a: ba 76 0f 00 00 mov $0xf76,%edx 0.00 : 58646f: be 02 13 88 00 mov $0x881302,%esi 0.00 : 586474: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 586479: e8 42 46 1f 00 callq 77aac0 0.00 : 58647e: 84 c0 test %al,%al 0.00 : 586480: 0f 84 7e fa ff ff je 585f04 0.00 : 586486: 48 8b 95 50 ff ff ff mov -0xb0(%rbp),%rdx 0.00 : 58648d: bf aa 15 88 00 mov $0x8815aa,%edi 0.00 : 586492: 31 c0 xor %eax,%eax 0.00 : 586494: 48 8b 72 30 mov 0x30(%rdx),%rsi 0.00 : 586498: e8 03 64 1f 00 callq 77c8a0 0.00 : 58649d: 89 c7 mov %eax,%edi 0.00 : 58649f: 31 c0 xor %eax,%eax 0.00 : 5864a1: e8 3a 41 1f 00 callq 77a5e0 0.00 : 5864a6: e9 59 fa ff ff jmpq 585f04 : if (hi_options & HEAP_INSERT_SKIP_WAL) : heap_sync(newrel); : : heap_close(newrel, NoLock); : } : } 0.00 : 5864ab: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 5864b2: 5b pop %rbx 0.00 : 5864b3: 41 5c pop %r12 0.00 : 5864b5: 41 5d pop %r13 0.00 : 5864b7: 41 5e pop %r14 0.00 : 5864b9: 41 5f pop %r15 0.00 : 5864bb: c9 leaveq 0.00 : 5864bc: c3 retq : { : FreeBulkInsertState(bistate); : : /* If we skipped writing WAL, then we need to sync the heap. */ : if (hi_options & HEAP_INSERT_SKIP_WAL) : heap_sync(newrel); 0.00 : 5864bd: 48 8b bd 58 ff ff ff mov -0xa8(%rbp),%rdi 0.00 : 5864c4: e8 47 77 f1 ff callq 49dc10 0.00 : 5864c9: e9 18 ff ff ff jmpq 5863e6 : : /* : * Switch to per-tuple memory context and reset it for each tuple : * produced, so we don't leak memory. : */ : oldCxt = MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); 0.00 : 5864ce: 48 89 cf mov %rcx,%rdi 0.00 : 5864d1: e8 da f0 02 00 callq 5b55b0 0.00 : 5864d6: e9 8c fb ff ff jmpq 586067 : * relation locks. : */ : TransferPredicateLocksToHeapRelation(oldrel); : } : : econtext = GetPerTupleExprContext(estate); 0.00 : 5864db: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 5864e2: e8 c9 f0 02 00 callq 5b55b0 0.00 : 5864e7: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 5864eb: e9 2f fa ff ff jmpq 585f1f 0.00 : 5864f0: 48 8b 45 c0 mov -0x40(%rbp),%rax : : CHECK_FOR_INTERRUPTS(); : } : : MemoryContextSwitchTo(oldCxt); : heap_endscan(scan); 0.00 : 5864f4: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 5864f8: 48 89 05 61 43 63 00 mov %rax,0x634361(%rip) # bba860 0.00 : 5864ff: e8 6c 70 f1 ff callq 49d570 : UnregisterSnapshot(snapshot); 0.00 : 586504: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 586508: e8 e3 0e 22 00 callq 7a73f0 : : ExecDropSingleTupleTableSlot(oldslot); 0.00 : 58650d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 586511: e8 4a de 02 00 callq 5b4360 : ExecDropSingleTupleTableSlot(newslot); 0.00 : 586516: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 58651a: e8 41 de 02 00 callq 5b4360 0.00 : 58651f: e9 87 fe ff ff jmpq 5863ab : * Prepare a BulkInsertState and options for heap_insert. Because we're : * building a new heap, we can skip WAL-logging and fsync it to disk at : * the end instead (unless WAL-logging is required for archiving or : * streaming replication). The FSM is empty too, so don't bother using it. : */ : if (newrel) 0.00 : 586524: c7 85 7c ff ff ff 00 movl $0x0,-0x84(%rbp) 0.00 : 58652b: 00 00 00 0.00 : 58652e: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 586535: 00 0.00 : 586536: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : 58653d: e9 40 f8 ff ff jmpq 585d82 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.21 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:357 33.80 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:355 28.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:355 2.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:336 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798a90 : : * This is useful for measuring the total space occupied by a set of : * allocated chunks. : */ : Size : GetMemoryChunkSpace(void *pointer) : { 0.00 : 798a90: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:336 2.82 : 798a91: 48 89 f8 mov %rdi,%rax : header = (StandardChunkHeader *) : ((char *) pointer - STANDARDCHUNKHEADERSIZE); : : AssertArg(MemoryContextIsValid(header->context)); : : return (*header->context->methods->get_chunk_space) (header->context, 0.00 : 798a94: 48 8b 7f f0 mov -0x10(%rdi),%rdi /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:355 28.17 : 798a98: 48 89 c6 mov %rax,%rsi : * This is useful for measuring the total space occupied by a set of : * allocated chunks. : */ : Size : GetMemoryChunkSpace(void *pointer) : { 0.00 : 798a9b: 48 89 e5 mov %rsp,%rbp : header = (StandardChunkHeader *) : ((char *) pointer - STANDARDCHUNKHEADERSIZE); : : AssertArg(MemoryContextIsValid(header->context)); : : return (*header->context->methods->get_chunk_space) (header->context, 0.00 : 798a9e: 48 8b 57 08 mov 0x8(%rdi),%rdx 33.80 : 798aa2: 4c 8b 5a 30 mov 0x30(%rdx),%r11 : pointer); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:357 35.21 : 798aa6: c9 leaveq : header = (StandardChunkHeader *) : ((char *) pointer - STANDARDCHUNKHEADERSIZE); : : AssertArg(MemoryContextIsValid(header->context)); : : return (*header->context->methods->get_chunk_space) (header->context, 0.00 : 798aa7: 41 ff e3 jmpq *%r11 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1568 8.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1565 8.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1566 8.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1568 8.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1565 7.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1556 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1562 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1556 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1563 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1563 4.41 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1563 2.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1563 2.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1562 2.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1569 2.94 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1566 1.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1556 1.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1565 1.47 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1565 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075f950 : : * Internal comparison function for text strings. : * Returns -1, 0 or 1 : */ : static int : text_cmp(text *arg1, text *arg2, Oid collid) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1556 7.35 : 75f950: 55 push %rbp : char *a1p, : *a2p; : int len1, : len2; : : a1p = VARDATA_ANY(arg1); 0.00 : 75f951: 48 8d 47 04 lea 0x4(%rdi),%rax 0.00 : 75f955: 4c 8d 57 01 lea 0x1(%rdi),%r10 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1562 5.88 : 75f959: 41 b9 01 00 00 00 mov $0x1,%r9d : a2p = VARDATA_ANY(arg2); 0.00 : 75f95f: 41 bb 01 00 00 00 mov $0x1,%r11d : * Internal comparison function for text strings. : * Returns -1, 0 or 1 : */ : static int : text_cmp(text *arg1, text *arg2, Oid collid) : { 0.00 : 75f965: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1556 5.88 : 75f968: 53 push %rbx : char *a1p, : *a2p; : int len1, : len2; : : a1p = VARDATA_ANY(arg1); 0.00 : 75f969: 0f b6 0f movzbl (%rdi),%ecx : a2p = VARDATA_ANY(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1563 2.94 : 75f96c: 44 0f b6 06 movzbl (%rsi),%r8d : * Internal comparison function for text strings. : * Returns -1, 0 or 1 : */ : static int : text_cmp(text *arg1, text *arg2, Oid collid) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1556 1.47 : 75f970: 89 d3 mov %edx,%ebx : *a2p; : int len1, : len2; : : a1p = VARDATA_ANY(arg1); : a2p = VARDATA_ANY(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1563 5.88 : 75f972: 48 8d 56 01 lea 0x1(%rsi),%rdx : char *a1p, : *a2p; : int len1, : len2; : : a1p = VARDATA_ANY(arg1); 0.00 : 75f976: 41 21 c9 and %ecx,%r9d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1562 2.94 : 75f979: 4c 0f 44 d0 cmove %rax,%r10 : a2p = VARDATA_ANY(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1563 4.41 : 75f97d: 48 8d 46 04 lea 0x4(%rsi),%rax 0.00 : 75f981: 45 21 c3 and %r8d,%r11d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1563 5.88 : 75f984: 48 0f 44 d0 cmove %rax,%rdx : : len1 = VARSIZE_ANY_EXHDR(arg1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1565 8.82 : 75f988: 80 f9 01 cmp $0x1,%cl 0.00 : 75f98b: 74 73 je 75fa00 0.00 : 75f98d: 45 85 c9 test %r9d,%r9d 0.00 : 75f990: 75 2e jne 75f9c0 0.00 : 75f992: 8b 07 mov (%rdi),%eax 0.00 : 75f994: c1 e8 02 shr $0x2,%eax 0.00 : 75f997: 44 8d 48 fc lea -0x4(%rax),%r9d : len2 = VARSIZE_ANY_EXHDR(arg2); 0.00 : 75f99b: 41 80 f8 01 cmp $0x1,%r8b 0.00 : 75f99f: 74 2e je 75f9cf 0.00 : 75f9a1: 45 85 db test %r11d,%r11d 0.00 : 75f9a4: 74 4a je 75f9f0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1566 8.82 : 75f9a6: 41 d0 e8 shr %r8b 0.00 : 75f9a9: 41 0f b6 c0 movzbl %r8b,%eax 0.00 : 75f9ad: 8d 48 ff lea -0x1(%rax),%ecx : : return varstr_cmp(a1p, len1, a2p, len2, collid); 0.00 : 75f9b0: 41 89 d8 mov %ebx,%r8d /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1568 8.82 : 75f9b3: 44 89 ce mov %r9d,%esi 0.00 : 75f9b6: 4c 89 d7 mov %r10,%rdi : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1569 2.94 : 75f9b9: 5b pop %rbx 0.00 : 75f9ba: c9 leaveq : a2p = VARDATA_ANY(arg2); : : len1 = VARSIZE_ANY_EXHDR(arg1); : len2 = VARSIZE_ANY_EXHDR(arg2); : : return varstr_cmp(a1p, len1, a2p, len2, collid); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1568 13.24 : 75f9bb: e9 f0 fc ff ff jmpq 75f6b0 : len2; : : a1p = VARDATA_ANY(arg1); : a2p = VARDATA_ANY(arg2); : : len1 = VARSIZE_ANY_EXHDR(arg1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1565 1.47 : 75f9c0: d0 e9 shr %cl : len2 = VARSIZE_ANY_EXHDR(arg2); 0.00 : 75f9c2: 41 80 f8 01 cmp $0x1,%r8b : len2; : : a1p = VARDATA_ANY(arg1); : a2p = VARDATA_ANY(arg2); : : len1 = VARSIZE_ANY_EXHDR(arg1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1565 8.82 : 75f9c6: 0f b6 c1 movzbl %cl,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1565 1.47 : 75f9c9: 44 8d 48 ff lea -0x1(%rax),%r9d : len2 = VARSIZE_ANY_EXHDR(arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:1566 2.94 : 75f9cd: 75 d2 jne 75f9a1 0.00 : 75f9cf: 0f b6 46 01 movzbl 0x1(%rsi),%eax 0.00 : 75f9d3: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 75f9d8: 3c 01 cmp $0x1,%al 0.00 : 75f9da: 74 d4 je 75f9b0 0.00 : 75f9dc: 3c 12 cmp $0x12,%al 0.00 : 75f9de: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 75f9e3: b8 10 00 00 00 mov $0x10,%eax 0.00 : 75f9e8: 0f 44 c8 cmove %eax,%ecx 0.00 : 75f9eb: eb c3 jmp 75f9b0 0.00 : 75f9ed: 0f 1f 00 nopl (%rax) 0.00 : 75f9f0: 8b 06 mov (%rsi),%eax 0.00 : 75f9f2: c1 e8 02 shr $0x2,%eax 0.00 : 75f9f5: 8d 48 fc lea -0x4(%rax),%ecx 0.00 : 75f9f8: eb b6 jmp 75f9b0 0.00 : 75f9fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : len2; : : a1p = VARDATA_ANY(arg1); : a2p = VARDATA_ANY(arg2); : : len1 = VARSIZE_ANY_EXHDR(arg1); 0.00 : 75fa00: 0f b6 47 01 movzbl 0x1(%rdi),%eax 0.00 : 75fa04: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 75fa0a: 3c 01 cmp $0x1,%al 0.00 : 75fa0c: 74 8d je 75f99b 0.00 : 75fa0e: 3c 12 cmp $0x12,%al 0.00 : 75fa10: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 75fa16: b8 10 00 00 00 mov $0x10,%eax 0.00 : 75fa1b: 44 0f 44 c8 cmove %eax,%r9d 0.00 : 75fa1f: e9 77 ff ff ff jmpq 75f99b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 34.85 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:797 13.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:789 13.64 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:797 12.12 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:793 10.61 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:789 7.58 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:796 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:793 1.52 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:789 1.52 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:796 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004b0170 <_bt_leafbuild>: : * given a spool loaded by successive calls to _bt_spool, : * create an entire btree. : */ : void : _bt_leafbuild(BTSpool *btspool, BTSpool *btspool2) : { 0.00 : 4b0170: 55 push %rbp 0.00 : 4b0171: 48 89 e5 mov %rsp,%rbp 0.00 : 4b0174: 41 57 push %r15 0.00 : 4b0176: 41 56 push %r14 0.00 : 4b0178: 41 55 push %r13 0.00 : 4b017a: 41 54 push %r12 0.00 : 4b017c: 53 push %rbx 0.00 : 4b017d: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : 4b0184: 48 89 bd 60 ff ff ff mov %rdi,-0xa0(%rbp) 0.00 : 4b018b: 48 89 b5 58 ff ff ff mov %rsi,-0xa8(%rbp) : ShowUsage("BTREE BUILD (Spool) STATISTICS"); : ResetUsage(); : } : #endif /* BTREE_BUILD_STATS */ : : tuplesort_performsort(btspool->sortstate); 0.00 : 4b0192: 48 8b 3f mov (%rdi),%rdi 0.00 : 4b0195: e8 56 1e 2f 00 callq 7a1ff0 : if (btspool2) 0.00 : 4b019a: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 4b01a1: 00 0.00 : 4b01a2: 74 0f je 4b01b3 <_bt_leafbuild+0x43> : tuplesort_performsort(btspool2->sortstate); 0.00 : 4b01a4: 48 8b 95 58 ff ff ff mov -0xa8(%rbp),%rdx 0.00 : 4b01ab: 48 8b 3a mov (%rdx),%rdi 0.00 : 4b01ae: e8 3d 1e 2f 00 callq 7a1ff0 : : wstate.heap = btspool->heap; 0.00 : 4b01b3: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 4b01ba: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 4b01be: 48 89 45 a0 mov %rax,-0x60(%rbp) : wstate.index = btspool->index; 0.00 : 4b01c2: 48 8b 51 10 mov 0x10(%rcx),%rdx : : /* : * We need to log index creation in WAL iff WAL archiving/streaming is : * enabled UNLESS the index isn't WAL-logged anyway. : */ : wstate.btws_use_wal = XLogIsNeeded() && RelationNeedsWAL(wstate.index); 0.00 : 4b01c6: 31 c0 xor %eax,%eax 0.00 : 4b01c8: 8b 0d 8e 8f 6c 00 mov 0x6c8f8e(%rip),%ecx # b7915c : tuplesort_performsort(btspool->sortstate); : if (btspool2) : tuplesort_performsort(btspool2->sortstate); : : wstate.heap = btspool->heap; : wstate.index = btspool->index; 0.00 : 4b01ce: 48 89 55 a8 mov %rdx,-0x58(%rbp) : : /* : * We need to log index creation in WAL iff WAL archiving/streaming is : * enabled UNLESS the index isn't WAL-logged anyway. : */ : wstate.btws_use_wal = XLogIsNeeded() && RelationNeedsWAL(wstate.index); 0.00 : 4b01d2: 85 c9 test %ecx,%ecx 0.00 : 4b01d4: 7e 0b jle 4b01e1 <_bt_leafbuild+0x71> 0.00 : 4b01d6: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 4b01da: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 4b01de: 0f 94 c0 sete %al 0.00 : 4b01e1: 88 45 b0 mov %al,-0x50(%rbp) : IndexTuple itup, : itup2 = NULL; : bool should_free, : should_free2, : load1; : TupleDesc tupdes = RelationGetDescr(wstate->index); 0.00 : 4b01e4: 48 8b 45 a8 mov -0x58(%rbp),%rax : * enabled UNLESS the index isn't WAL-logged anyway. : */ : wstate.btws_use_wal = XLogIsNeeded() && RelationNeedsWAL(wstate.index); : : /* reserve the metapage */ : wstate.btws_pages_alloced = BTREE_METAPAGE + 1; 0.00 : 4b01e8: c7 45 b4 01 00 00 00 movl $0x1,-0x4c(%rbp) : wstate.btws_pages_written = 0; 0.00 : 4b01ef: c7 45 b8 00 00 00 00 movl $0x0,-0x48(%rbp) : wstate.btws_zeropage = NULL; /* until needed */ 0.00 : 4b01f6: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 4b01fd: 00 : TupleDesc tupdes = RelationGetDescr(wstate->index); : int i, : keysz = RelationGetNumberOfAttributes(wstate->index); : ScanKey indexScanKey = NULL; : : if (merge) 0.00 : 4b01fe: 48 83 bd 58 ff ff ff cmpq $0x0,-0xa8(%rbp) 0.00 : 4b0205: 00 : IndexTuple itup, : itup2 = NULL; : bool should_free, : should_free2, : load1; : TupleDesc tupdes = RelationGetDescr(wstate->index); 0.00 : 4b0206: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 4b020a: 48 89 55 80 mov %rdx,-0x80(%rbp) : int i, : keysz = RelationGetNumberOfAttributes(wstate->index); 0.00 : 4b020e: 48 8b 40 30 mov 0x30(%rax),%rax 0.00 : 4b0212: 0f bf 40 70 movswl 0x70(%rax),%eax 0.00 : 4b0216: 89 85 7c ff ff ff mov %eax,-0x84(%rbp) : ScanKey indexScanKey = NULL; : : if (merge) 0.00 : 4b021c: 0f 84 ea 05 00 00 je 4b080c <_bt_leafbuild+0x69c> : * Another BTSpool for dead tuples exists. Now we have to merge : * btspool and btspool2. : */ : : /* the preparation of merge */ : itup = tuplesort_getindextuple(btspool->sortstate, 0.00 : 4b0222: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 4b0229: 48 8d 55 cf lea -0x31(%rbp),%rdx 0.00 : 4b022d: be 01 00 00 00 mov $0x1,%esi 0.00 : 4b0232: 48 89 95 50 ff ff ff mov %rdx,-0xb0(%rbp) 0.00 : 4b0239: 48 8b 39 mov (%rcx),%rdi 0.00 : 4b023c: e8 df de 2e 00 callq 79e120 0.00 : 4b0241: 48 89 45 90 mov %rax,-0x70(%rbp) : true, &should_free); : itup2 = tuplesort_getindextuple(btspool2->sortstate, 0.00 : 4b0245: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 4b024c: 48 8d 55 ce lea -0x32(%rbp),%rdx 0.00 : 4b0250: be 01 00 00 00 mov $0x1,%esi 0.00 : 4b0255: 48 8b 38 mov (%rax),%rdi 0.00 : 4b0258: e8 c3 de 2e 00 callq 79e120 : true, &should_free2); : indexScanKey = _bt_mkscankey_nodata(wstate->index); 0.00 : 4b025d: 48 8b 7d a8 mov -0x58(%rbp),%rdi : */ : : /* the preparation of merge */ : itup = tuplesort_getindextuple(btspool->sortstate, : true, &should_free); : itup2 = tuplesort_getindextuple(btspool2->sortstate, 0.00 : 4b0261: 48 89 45 88 mov %rax,-0x78(%rbp) : true, &should_free2); : indexScanKey = _bt_mkscankey_nodata(wstate->index); 0.00 : 4b0265: e8 46 f6 ff ff callq 4af8b0 <_bt_mkscankey_nodata> 0.00 : 4b026a: 48 8d 55 a0 lea -0x60(%rbp),%rdx 0.00 : 4b026e: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 4b0275: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 4b027c: 00 0.00 : 4b027d: 48 89 95 48 ff ff ff mov %rdx,-0xb8(%rbp) 0.00 : 4b0284: 0f 1f 40 00 nopl 0x0(%rax) : : for (;;) : { : load1 = true; /* load BTSpool next ? */ : if (itup2 == NULL) 0.00 : 4b0288: 48 83 7d 88 00 cmpq $0x0,-0x78(%rbp) 0.00 : 4b028d: 0f 84 ee 01 00 00 je 4b0481 <_bt_leafbuild+0x311> : { : if (itup == NULL) : break; : } : else if (itup != NULL) 0.00 : 4b0293: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 4b0298: 0f 84 86 01 00 00 je 4b0424 <_bt_leafbuild+0x2b4> : { : for (i = 1; i <= keysz; i++) 0.00 : 4b029e: 8b 85 7c ff ff ff mov -0x84(%rbp),%eax 0.00 : 4b02a4: 85 c0 test %eax,%eax 0.00 : 4b02a6: 0f 8e 0d 01 00 00 jle 4b03b9 <_bt_leafbuild+0x249> 0.00 : 4b02ac: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 4b02b2: 45 31 f6 xor %r14d,%r14d 0.00 : 4b02b5: 0f 1f 00 nopl (%rax) : attrDatum2; : bool isNull1, : isNull2; : int32 compare; : : entry = indexScanKey + i - 1; 0.00 : 4b02b8: 49 63 c4 movslq %r12d,%rax 0.00 : 4b02bb: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 4b02c2: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 4b02c6: 48 8d 04 db lea (%rbx,%rbx,8),%rax 0.00 : 4b02ca: 48 8d 04 c1 lea (%rcx,%rax,8),%rax 0.00 : 4b02ce: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : attrDatum1 = index_getattr(itup, i, tupdes, &isNull1); 0.00 : 4b02d5: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 4b02d9: 66 83 78 06 00 cmpw $0x0,0x6(%rax) 0.00 : 4b02de: 0f 88 e4 02 00 00 js 4b05c8 <_bt_leafbuild+0x458> 0.00 : 4b02e4: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 4b02e8: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4b02ec: 48 8b 14 d8 mov (%rax,%rbx,8),%rdx 0.00 : 4b02f0: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 4b02f3: 85 c0 test %eax,%eax 0.00 : 4b02f5: 0f 88 f7 02 00 00 js 4b05f2 <_bt_leafbuild+0x482> 0.00 : 4b02fb: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 4b02ff: 0f 84 5b 03 00 00 je 4b0660 <_bt_leafbuild+0x4f0> 0.00 : 4b0305: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 4b0309: 66 83 fa 08 cmp $0x8,%dx 0.00 : 4b030d: 0f 84 7d 03 00 00 je 4b0690 <_bt_leafbuild+0x520> 0.00 : 4b0313: 66 83 fa 04 cmp $0x4,%dx 0.00 : 4b0317: 0f 84 a3 03 00 00 je 4b06c0 <_bt_leafbuild+0x550> 0.00 : 4b031d: 66 83 fa 02 cmp $0x2,%dx 0.00 : 4b0321: 0f 84 09 04 00 00 je 4b0730 <_bt_leafbuild+0x5c0> 0.00 : 4b0327: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 4b032b: 48 98 cltq 0.00 : 4b032d: 45 31 ed xor %r13d,%r13d 0.00 : 4b0330: 44 0f b6 7c 02 08 movzbl 0x8(%rdx,%rax,1),%r15d 0.00 : 4b0336: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4b033d: 00 00 00 : attrDatum2 = index_getattr(itup2, i, tupdes, &isNull2); 0.00 : 4b0340: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.00 : 4b0344: 66 83 79 06 00 cmpw $0x0,0x6(%rcx) 0.00 : 4b0349: 0f 88 c8 02 00 00 js 4b0617 <_bt_leafbuild+0x4a7> 0.00 : 4b034f: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 4b0353: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 4b0357: 48 8b 04 d8 mov (%rax,%rbx,8),%rax 0.00 : 4b035b: 8b 50 54 mov 0x54(%rax),%edx 0.00 : 4b035e: 85 d2 test %edx,%edx 0.00 : 4b0360: 0f 88 d9 02 00 00 js 4b063f <_bt_leafbuild+0x4cf> 0.00 : 4b0366: 80 78 5c 00 cmpb $0x0,0x5c(%rax) 0.00 : 4b036a: 0f 84 08 03 00 00 je 4b0678 <_bt_leafbuild+0x508> 0.00 : 4b0370: 0f b7 40 4c movzwl 0x4c(%rax),%eax 0.00 : 4b0374: 66 83 f8 08 cmp $0x8,%ax 0.00 : 4b0378: 0f 84 2a 03 00 00 je 4b06a8 <_bt_leafbuild+0x538> 0.00 : 4b037e: 66 83 f8 04 cmp $0x4,%ax 0.00 : 4b0382: 0f 84 50 03 00 00 je 4b06d8 <_bt_leafbuild+0x568> 0.00 : 4b0388: 66 83 f8 02 cmp $0x2,%ax 0.00 : 4b038c: 0f 84 b6 03 00 00 je 4b0748 <_bt_leafbuild+0x5d8> 0.00 : 4b0392: 48 63 c2 movslq %edx,%rax 0.00 : 4b0395: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4b0399: 0f b6 4c 02 08 movzbl 0x8(%rdx,%rax,1),%ecx 0.00 : 4b039e: 31 d2 xor %edx,%edx : if (isNull1) 0.00 : 4b03a0: 45 84 ed test %r13b,%r13b 0.00 : 4b03a3: 74 6b je 4b0410 <_bt_leafbuild+0x2a0> : { : if (isNull2) 0.00 : 4b03a5: 84 d2 test %dl,%dl 0.00 : 4b03a7: 75 4d jne 4b03f6 <_bt_leafbuild+0x286> : compare = 0; /* NULL "=" NULL */ : else if (entry->sk_flags & SK_BT_NULLS_FIRST) 0.00 : 4b03a9: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 4b03b0: 8b 02 mov (%rdx),%eax 0.00 : 4b03b2: a9 00 00 00 02 test $0x2000000,%eax 0.00 : 4b03b7: 74 6b je 4b0424 <_bt_leafbuild+0x2b4> : if (itup == NULL) : break; : } : else if (itup != NULL) : { : for (i = 1; i <= keysz; i++) 0.00 : 4b03b9: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 4b03be: eb 66 jmp 4b0426 <_bt_leafbuild+0x2b6> : else : compare = -1; /* NOT_NULL "<" NULL */ : } : else : { : compare = 0.00 : 4b03c0: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : 4b03c7: 4c 89 fa mov %r15,%rdx 0.00 : 4b03ca: 8b 70 0c mov 0xc(%rax),%esi 0.00 : 4b03cd: 48 89 c7 mov %rax,%rdi 0.00 : 4b03d0: 48 83 c7 10 add $0x10,%rdi 0.00 : 4b03d4: e8 57 dc 2c 00 callq 77e030 : DatumGetInt32(FunctionCall2Coll(&entry->sk_func, : entry->sk_collation, : attrDatum1, : attrDatum2)); : : if (entry->sk_flags & SK_BT_DESC) 0.00 : 4b03d9: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 4b03e0: 8b 11 mov (%rcx),%edx : compare = -compare; 0.00 : 4b03e2: 89 c1 mov %eax,%ecx 0.00 : 4b03e4: f7 d9 neg %ecx 0.00 : 4b03e6: 81 e2 00 00 00 01 and $0x1000000,%edx 0.00 : 4b03ec: 0f 45 c1 cmovne %ecx,%eax : } : if (compare > 0) 0.00 : 4b03ef: 83 f8 00 cmp $0x0,%eax 0.00 : 4b03f2: 7f 30 jg 4b0424 <_bt_leafbuild+0x2b4> : { : load1 = false; : break; : } : else if (compare < 0) 0.00 : 4b03f4: 75 c3 jne 4b03b9 <_bt_leafbuild+0x249> : if (itup == NULL) : break; : } : else if (itup != NULL) : { : for (i = 1; i <= keysz; i++) 0.00 : 4b03f6: 41 83 c4 01 add $0x1,%r12d 0.00 : 4b03fa: 41 83 c6 01 add $0x1,%r14d 0.00 : 4b03fe: 44 39 a5 7c ff ff ff cmp %r12d,-0x84(%rbp) 0.00 : 4b0405: 0f 8d ad fe ff ff jge 4b02b8 <_bt_leafbuild+0x148> 0.00 : 4b040b: eb ac jmp 4b03b9 <_bt_leafbuild+0x249> 0.00 : 4b040d: 0f 1f 00 nopl (%rax) : else if (entry->sk_flags & SK_BT_NULLS_FIRST) : compare = -1; /* NULL "<" NOT_NULL */ : else : compare = 1; /* NULL ">" NOT_NULL */ : } : else if (isNull2) 0.00 : 4b0410: 84 d2 test %dl,%dl 0.00 : 4b0412: 74 ac je 4b03c0 <_bt_leafbuild+0x250> : { : if (entry->sk_flags & SK_BT_NULLS_FIRST) 0.00 : 4b0414: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 4b041b: 8b 01 mov (%rcx),%eax 0.00 : 4b041d: a9 00 00 00 02 test $0x2000000,%eax 0.00 : 4b0422: 74 95 je 4b03b9 <_bt_leafbuild+0x249> : if (itup == NULL) : break; : } : else if (itup != NULL) : { : for (i = 1; i <= keysz; i++) 0.00 : 4b0424: 31 db xor %ebx,%ebx : } : else : load1 = false; : : /* When we see first tuple, create first index page */ : if (state == NULL) 0.00 : 4b0426: 48 83 7d 98 00 cmpq $0x0,-0x68(%rbp) 0.00 : 4b042b: 0f 84 4d 03 00 00 je 4b077e <_bt_leafbuild+0x60e> : state = _bt_pagestate(wstate, 0); : : if (load1) 0.00 : 4b0431: 84 db test %bl,%bl 0.00 : 4b0433: 0f 84 b7 02 00 00 je 4b06f0 <_bt_leafbuild+0x580> : { : _bt_buildadd(wstate, state, itup); 0.00 : 4b0439: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 4b043d: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 4b0441: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 4b0448: e8 23 fa ff ff callq 4afe70 <_bt_buildadd> : if (should_free) 0.00 : 4b044d: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 4b0451: 0f 85 19 03 00 00 jne 4b0770 <_bt_leafbuild+0x600> : pfree(itup); : itup = tuplesort_getindextuple(btspool->sortstate, 0.00 : 4b0457: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax 0.00 : 4b045e: 48 8b 95 50 ff ff ff mov -0xb0(%rbp),%rdx 0.00 : 4b0465: be 01 00 00 00 mov $0x1,%esi 0.00 : 4b046a: 48 8b 38 mov (%rax),%rdi 0.00 : 4b046d: e8 ae dc 2e 00 callq 79e120 : indexScanKey = _bt_mkscankey_nodata(wstate->index); : : for (;;) : { : load1 = true; /* load BTSpool next ? */ : if (itup2 == NULL) 0.00 : 4b0472: 48 83 7d 88 00 cmpq $0x0,-0x78(%rbp) : if (load1) : { : _bt_buildadd(wstate, state, itup); : if (should_free) : pfree(itup); : itup = tuplesort_getindextuple(btspool->sortstate, 0.00 : 4b0477: 48 89 45 90 mov %rax,-0x70(%rbp) : indexScanKey = _bt_mkscankey_nodata(wstate->index); : : for (;;) : { : load1 = true; /* load BTSpool next ? */ : if (itup2 == NULL) 0.00 : 4b047b: 0f 85 12 fe ff ff jne 4b0293 <_bt_leafbuild+0x123> : { : if (itup == NULL) 0.00 : 4b0481: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 4b0486: 0f 85 2d ff ff ff jne 4b03b9 <_bt_leafbuild+0x249> : pfree(itup2); : itup2 = tuplesort_getindextuple(btspool2->sortstate, : true, &should_free2); : } : } : _bt_freeskey(indexScanKey); 0.00 : 4b048c: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 4b0493: e8 08 f4 ff ff callq 4af8a0 <_bt_freeskey> : } : else : { : /* merge is unnecessary */ : while ((itup = tuplesort_getindextuple(btspool->sortstate, 0.00 : 4b0498: 31 db xor %ebx,%ebx 0.00 : 4b049a: 45 31 ed xor %r13d,%r13d : Page metapage; : : /* : * Each iteration of this loop completes one more level of the tree. : */ : for (s = state; s != NULL; s = s->btps_next) 0.00 : 4b049d: 48 83 7d 98 00 cmpq $0x0,-0x68(%rbp) 0.00 : 4b04a2: 0f 84 ff 02 00 00 je 4b07a7 <_bt_leafbuild+0x637> 0.00 : 4b04a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4b04af: 00 : { : BlockNumber blkno; : BTPageOpaque opaque; : : blkno = s->btps_blkno; 0.00 : 4b04b0: 48 8b 55 98 mov -0x68(%rbp),%rdx : opaque = (BTPageOpaque) PageGetSpecialPointer(s->btps_page); 0.00 : 4b04b4: 48 89 d1 mov %rdx,%rcx : for (s = state; s != NULL; s = s->btps_next) : { : BlockNumber blkno; : BTPageOpaque opaque; : : blkno = s->btps_blkno; 0.00 : 4b04b7: 44 8b 62 08 mov 0x8(%rdx),%r12d : opaque = (BTPageOpaque) PageGetSpecialPointer(s->btps_page); 0.00 : 4b04bb: 48 8b 12 mov (%rdx),%rdx : * If we're at the top, it's the root, so attach it to the metapage. : * Otherwise, add an entry for it to its parent using its minimum key. : * This may cause the last page of the parent level to split, but : * that's not a problem -- we haven't gotten to it yet. : */ : if (s->btps_next == NULL) 0.00 : 4b04be: 48 83 79 28 00 cmpq $0x0,0x28(%rcx) : { : BlockNumber blkno; : BTPageOpaque opaque; : : blkno = s->btps_blkno; : opaque = (BTPageOpaque) PageGetSpecialPointer(s->btps_page); 0.00 : 4b04c3: 0f b7 42 10 movzwl 0x10(%rdx),%eax : * If we're at the top, it's the root, so attach it to the metapage. : * Otherwise, add an entry for it to its parent using its minimum key. : * This may cause the last page of the parent level to split, but : * that's not a problem -- we haven't gotten to it yet. : */ : if (s->btps_next == NULL) 0.00 : 4b04c7: 0f 84 c8 02 00 00 je 4b0795 <_bt_leafbuild+0x625> : rootlevel = s->btps_level; : } : else : { : Assert(s->btps_minkey != NULL); : ItemPointerSet(&(s->btps_minkey->t_tid), blkno, P_HIKEY); 0.00 : 4b04cd: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 4b04d1: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 4b04d5: 44 89 e0 mov %r12d,%eax 0.00 : 4b04d8: c1 e8 10 shr $0x10,%eax 0.00 : 4b04db: 66 89 02 mov %ax,(%rdx) 0.00 : 4b04de: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 4b04e2: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 4b04e6: 66 44 89 60 02 mov %r12w,0x2(%rax) 0.00 : 4b04eb: 48 8b 42 10 mov 0x10(%rdx),%rax : _bt_buildadd(wstate, s->btps_next, s->btps_minkey); : pfree(s->btps_minkey); : s->btps_minkey = NULL; 0.00 : 4b04ef: 41 89 dc mov %ebx,%r12d : rootlevel = s->btps_level; : } : else : { : Assert(s->btps_minkey != NULL); : ItemPointerSet(&(s->btps_minkey->t_tid), blkno, P_HIKEY); 0.00 : 4b04f2: 66 c7 40 04 01 00 movw $0x1,0x4(%rax) : _bt_buildadd(wstate, s->btps_next, s->btps_minkey); 0.00 : 4b04f8: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 4b04fc: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 4b0503: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 4b0507: 48 8b 71 28 mov 0x28(%rcx),%rsi 0.00 : 4b050b: e8 60 f9 ff ff callq 4afe70 <_bt_buildadd> : pfree(s->btps_minkey); 0.00 : 4b0510: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 4b0514: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 4b0518: e8 63 86 2e 00 callq 798b80 : s->btps_minkey = NULL; 0.00 : 4b051d: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 4b0521: 48 c7 42 10 00 00 00 movq $0x0,0x10(%rdx) 0.00 : 4b0528: 00 : : /* : * This is the rightmost page, so the ItemId array needs to be slid : * back one slot. Then we can dump out the page. : */ : _bt_slideleft(s->btps_page); 0.00 : 4b0529: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 4b052d: 48 8b 39 mov (%rcx),%rdi : OffsetNumber off; : OffsetNumber maxoff; : ItemId previi; : ItemId thisii; : : if (!PageIsEmpty(page)) 0.00 : 4b0530: 0f b7 57 0c movzwl 0xc(%rdi),%edx 0.00 : 4b0534: 48 89 fe mov %rdi,%rsi 0.00 : 4b0537: 66 83 fa 18 cmp $0x18,%dx 0.00 : 4b053b: 76 50 jbe 4b058d <_bt_leafbuild+0x41d> : { : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 4b053d: 0f b7 c2 movzwl %dx,%eax 0.00 : 4b0540: 48 83 e8 18 sub $0x18,%rax 0.00 : 4b0544: 49 89 c0 mov %rax,%r8 0.00 : 4b0547: 49 c1 e8 02 shr $0x2,%r8 : previi = PageGetItemId(page, P_HIKEY); : for (off = P_FIRSTKEY; off <= maxoff; off = OffsetNumberNext(off)) 0.00 : 4b054b: 66 41 83 f8 01 cmp $0x1,%r8w 0.00 : 4b0550: 76 2d jbe 4b057f <_bt_leafbuild+0x40f> : ItemId thisii; : : if (!PageIsEmpty(page)) : { : maxoff = PageGetMaxOffsetNumber(page); : previi = PageGetItemId(page, P_HIKEY); 0.00 : 4b0552: 48 8d 77 18 lea 0x18(%rdi),%rsi 0.00 : 4b0556: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 4b055b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : for (off = P_FIRSTKEY; off <= maxoff; off = OffsetNumberNext(off)) : { : thisii = PageGetItemId(page, off); 0.00 : 4b0560: 0f b7 c1 movzwl %cx,%eax : *previi = *thisii; 0.00 : 4b0563: 83 c1 01 add $0x1,%ecx : { : maxoff = PageGetMaxOffsetNumber(page); : previi = PageGetItemId(page, P_HIKEY); : for (off = P_FIRSTKEY; off <= maxoff; off = OffsetNumberNext(off)) : { : thisii = PageGetItemId(page, off); 0.00 : 4b0566: 48 83 c0 03 add $0x3,%rax : : if (!PageIsEmpty(page)) : { : maxoff = PageGetMaxOffsetNumber(page); : previi = PageGetItemId(page, P_HIKEY); : for (off = P_FIRSTKEY; off <= maxoff; off = OffsetNumberNext(off)) 0.00 : 4b056a: 66 44 39 c1 cmp %r8w,%cx : { : thisii = PageGetItemId(page, off); : *previi = *thisii; 0.00 : 4b056e: 8b 54 87 08 mov 0x8(%rdi,%rax,4),%edx 0.00 : 4b0572: 89 16 mov %edx,(%rsi) 0.00 : 4b0574: 48 8d 74 87 08 lea 0x8(%rdi,%rax,4),%rsi : : if (!PageIsEmpty(page)) : { : maxoff = PageGetMaxOffsetNumber(page); : previi = PageGetItemId(page, P_HIKEY); : for (off = P_FIRSTKEY; off <= maxoff; off = OffsetNumberNext(off)) 0.00 : 4b0579: 76 e5 jbe 4b0560 <_bt_leafbuild+0x3f0> 0.00 : 4b057b: 0f b7 57 0c movzwl 0xc(%rdi),%edx : { : thisii = PageGetItemId(page, off); : *previi = *thisii; : previi = thisii; : } : ((PageHeader) page)->pd_lower -= sizeof(ItemIdData); 0.00 : 4b057f: 8d 42 fc lea -0x4(%rdx),%eax 0.00 : 4b0582: 66 89 47 0c mov %ax,0xc(%rdi) 0.00 : 4b0586: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 4b058a: 48 8b 30 mov (%rax),%rsi : /* : * This is the rightmost page, so the ItemId array needs to be slid : * back one slot. Then we can dump out the page. : */ : _bt_slideleft(s->btps_page); : _bt_blwritepage(wstate, s->btps_page, s->btps_blkno); 0.00 : 4b058d: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 4b0591: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 4b0598: 8b 51 08 mov 0x8(%rcx),%edx 0.00 : 4b059b: e8 10 f7 ff ff callq 4afcb0 <_bt_blwritepage> : s->btps_page = NULL; /* writepage freed the workspace */ 0.00 : 4b05a0: 48 8b 45 98 mov -0x68(%rbp),%rax : Page metapage; : : /* : * Each iteration of this loop completes one more level of the tree. : */ : for (s = state; s != NULL; s = s->btps_next) 0.00 : 4b05a4: 48 8b 50 28 mov 0x28(%rax),%rdx : * This is the rightmost page, so the ItemId array needs to be slid : * back one slot. Then we can dump out the page. : */ : _bt_slideleft(s->btps_page); : _bt_blwritepage(wstate, s->btps_page, s->btps_blkno); : s->btps_page = NULL; /* writepage freed the workspace */ 0.00 : 4b05a8: 48 c7 00 00 00 00 00 movq $0x0,(%rax) : Page metapage; : : /* : * Each iteration of this loop completes one more level of the tree. : */ : for (s = state; s != NULL; s = s->btps_next) 0.00 : 4b05af: 48 85 d2 test %rdx,%rdx 0.00 : 4b05b2: 48 89 55 98 mov %rdx,-0x68(%rbp) 0.00 : 4b05b6: 0f 84 ee 01 00 00 je 4b07aa <_bt_leafbuild+0x63a> 0.00 : 4b05bc: 44 89 e3 mov %r12d,%ebx 0.00 : 4b05bf: e9 ec fe ff ff jmpq 4b04b0 <_bt_leafbuild+0x340> 0.00 : 4b05c4: 0f 1f 40 00 nopl 0x0(%rax) : bool isNull1, : isNull2; : int32 compare; : : entry = indexScanKey + i - 1; : attrDatum1 = index_getattr(itup, i, tupdes, &isNull1); 0.00 : 4b05c8: 44 89 f0 mov %r14d,%eax 0.00 : 4b05cb: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 4b05cf: 44 89 f1 mov %r14d,%ecx 0.00 : 4b05d2: c1 f8 03 sar $0x3,%eax 0.00 : 4b05d5: 83 e1 07 and $0x7,%ecx 0.00 : 4b05d8: 45 31 ff xor %r15d,%r15d 0.00 : 4b05db: 48 98 cltq 0.00 : 4b05dd: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4b05e3: 0f be 44 02 08 movsbl 0x8(%rdx,%rax,1),%eax 0.00 : 4b05e8: d3 f8 sar %cl,%eax 0.00 : 4b05ea: a8 01 test $0x1,%al 0.00 : 4b05ec: 0f 84 4e fd ff ff je 4b0340 <_bt_leafbuild+0x1d0> 0.00 : 4b05f2: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 4b05f6: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 4b05fa: 44 89 e6 mov %r12d,%esi 0.00 : 4b05fd: 45 31 ed xor %r13d,%r13d 0.00 : 4b0600: e8 5b 05 fc ff callq 470b60 : attrDatum2 = index_getattr(itup2, i, tupdes, &isNull2); 0.00 : 4b0605: 48 8b 4d 88 mov -0x78(%rbp),%rcx : bool isNull1, : isNull2; : int32 compare; : : entry = indexScanKey + i - 1; : attrDatum1 = index_getattr(itup, i, tupdes, &isNull1); 0.00 : 4b0609: 49 89 c7 mov %rax,%r15 : attrDatum2 = index_getattr(itup2, i, tupdes, &isNull2); 0.00 : 4b060c: 66 83 79 06 00 cmpw $0x0,0x6(%rcx) 0.00 : 4b0611: 0f 89 38 fd ff ff jns 4b034f <_bt_leafbuild+0x1df> 0.00 : 4b0617: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.00 : 4b061b: 44 89 f0 mov %r14d,%eax 0.00 : 4b061e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4b0623: c1 f8 03 sar $0x3,%eax 0.00 : 4b0626: 48 98 cltq 0.00 : 4b0628: 0f be 44 01 08 movsbl 0x8(%rcx,%rax,1),%eax 0.00 : 4b062d: 44 89 f1 mov %r14d,%ecx 0.00 : 4b0630: 83 e1 07 and $0x7,%ecx 0.00 : 4b0633: d3 f8 sar %cl,%eax 0.00 : 4b0635: 31 c9 xor %ecx,%ecx 0.00 : 4b0637: a8 01 test $0x1,%al 0.00 : 4b0639: 0f 84 61 fd ff ff je 4b03a0 <_bt_leafbuild+0x230> 0.00 : 4b063f: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : 4b0643: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4b0647: 44 89 e6 mov %r12d,%esi 0.00 : 4b064a: e8 11 05 fc ff callq 470b60 0.00 : 4b064f: 31 d2 xor %edx,%edx 0.00 : 4b0651: 48 89 c1 mov %rax,%rcx 0.00 : 4b0654: e9 47 fd ff ff jmpq 4b03a0 <_bt_leafbuild+0x230> 0.00 : 4b0659: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : bool isNull1, : isNull2; : int32 compare; : : entry = indexScanKey + i - 1; : attrDatum1 = index_getattr(itup, i, tupdes, &isNull1); 0.00 : 4b0660: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 4b0664: 48 98 cltq 0.00 : 4b0666: 45 31 ed xor %r13d,%r13d 0.00 : 4b0669: 4c 8d 7c 01 08 lea 0x8(%rcx,%rax,1),%r15 0.00 : 4b066e: e9 cd fc ff ff jmpq 4b0340 <_bt_leafbuild+0x1d0> 0.00 : 4b0673: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : attrDatum2 = index_getattr(itup2, i, tupdes, &isNull2); 0.00 : 4b0678: 48 63 c2 movslq %edx,%rax 0.00 : 4b067b: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4b067f: 48 8d 4c 02 08 lea 0x8(%rdx,%rax,1),%rcx 0.00 : 4b0684: 31 d2 xor %edx,%edx 0.00 : 4b0686: e9 15 fd ff ff jmpq 4b03a0 <_bt_leafbuild+0x230> 0.00 : 4b068b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : bool isNull1, : isNull2; : int32 compare; : : entry = indexScanKey + i - 1; : attrDatum1 = index_getattr(itup, i, tupdes, &isNull1); 0.00 : 4b0690: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 4b0694: 48 98 cltq 0.00 : 4b0696: 45 31 ed xor %r13d,%r13d 0.00 : 4b0699: 4c 8b 7c 01 08 mov 0x8(%rcx,%rax,1),%r15 0.00 : 4b069e: e9 9d fc ff ff jmpq 4b0340 <_bt_leafbuild+0x1d0> 0.00 : 4b06a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : attrDatum2 = index_getattr(itup2, i, tupdes, &isNull2); 0.00 : 4b06a8: 48 63 c2 movslq %edx,%rax 0.00 : 4b06ab: 31 d2 xor %edx,%edx 0.00 : 4b06ad: 48 8b 4c 01 08 mov 0x8(%rcx,%rax,1),%rcx 0.00 : 4b06b2: e9 e9 fc ff ff jmpq 4b03a0 <_bt_leafbuild+0x230> 0.00 : 4b06b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4b06be: 00 00 : bool isNull1, : isNull2; : int32 compare; : : entry = indexScanKey + i - 1; : attrDatum1 = index_getattr(itup, i, tupdes, &isNull1); 0.00 : 4b06c0: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 4b06c4: 48 98 cltq 0.00 : 4b06c6: 45 31 ed xor %r13d,%r13d 0.00 : 4b06c9: 44 8b 7c 02 08 mov 0x8(%rdx,%rax,1),%r15d 0.00 : 4b06ce: e9 6d fc ff ff jmpq 4b0340 <_bt_leafbuild+0x1d0> 0.00 : 4b06d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : attrDatum2 = index_getattr(itup2, i, tupdes, &isNull2); 0.00 : 4b06d8: 48 63 c2 movslq %edx,%rax 0.00 : 4b06db: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4b06df: 8b 4c 02 08 mov 0x8(%rdx,%rax,1),%ecx 0.00 : 4b06e3: 31 d2 xor %edx,%edx 0.00 : 4b06e5: e9 b6 fc ff ff jmpq 4b03a0 <_bt_leafbuild+0x230> 0.00 : 4b06ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : itup = tuplesort_getindextuple(btspool->sortstate, : true, &should_free); : } : else : { : _bt_buildadd(wstate, state, itup2); 0.00 : 4b06f0: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4b06f4: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 4b06f8: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 4b06ff: e8 6c f7 ff ff callq 4afe70 <_bt_buildadd> : if (should_free2) 0.00 : 4b0704: 80 7d ce 00 cmpb $0x0,-0x32(%rbp) 0.00 : 4b0708: 75 56 jne 4b0760 <_bt_leafbuild+0x5f0> : pfree(itup2); : itup2 = tuplesort_getindextuple(btspool2->sortstate, 0.00 : 4b070a: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 4b0711: 48 8d 55 ce lea -0x32(%rbp),%rdx 0.00 : 4b0715: be 01 00 00 00 mov $0x1,%esi 0.00 : 4b071a: 48 8b 39 mov (%rcx),%rdi 0.00 : 4b071d: e8 fe d9 2e 00 callq 79e120 0.00 : 4b0722: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 4b0726: e9 5d fb ff ff jmpq 4b0288 <_bt_leafbuild+0x118> 0.00 : 4b072b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : bool isNull1, : isNull2; : int32 compare; : : entry = indexScanKey + i - 1; : attrDatum1 = index_getattr(itup, i, tupdes, &isNull1); 0.00 : 4b0730: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 4b0734: 48 98 cltq 0.00 : 4b0736: 45 31 ed xor %r13d,%r13d 0.00 : 4b0739: 44 0f b7 7c 01 08 movzwl 0x8(%rcx,%rax,1),%r15d 0.00 : 4b073f: e9 fc fb ff ff jmpq 4b0340 <_bt_leafbuild+0x1d0> 0.00 : 4b0744: 0f 1f 40 00 nopl 0x0(%rax) : attrDatum2 = index_getattr(itup2, i, tupdes, &isNull2); 0.00 : 4b0748: 48 63 c2 movslq %edx,%rax 0.00 : 4b074b: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 4b074f: 0f b7 4c 02 08 movzwl 0x8(%rdx,%rax,1),%ecx 0.00 : 4b0754: 31 d2 xor %edx,%edx 0.00 : 4b0756: e9 45 fc ff ff jmpq 4b03a0 <_bt_leafbuild+0x230> 0.00 : 4b075b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : else : { : _bt_buildadd(wstate, state, itup2); : if (should_free2) : pfree(itup2); 0.00 : 4b0760: 48 8b 7d 88 mov -0x78(%rbp),%rdi 0.00 : 4b0764: e8 17 84 2e 00 callq 798b80 0.00 : 4b0769: eb 9f jmp 4b070a <_bt_leafbuild+0x59a> 0.00 : 4b076b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : if (load1) : { : _bt_buildadd(wstate, state, itup); : if (should_free) : pfree(itup); 0.00 : 4b0770: 48 8b 7d 90 mov -0x70(%rbp),%rdi 0.00 : 4b0774: e8 07 84 2e 00 callq 798b80 0.00 : 4b0779: e9 d9 fc ff ff jmpq 4b0457 <_bt_leafbuild+0x2e7> : else : load1 = false; : : /* When we see first tuple, create first index page */ : if (state == NULL) : state = _bt_pagestate(wstate, 0); 0.00 : 4b077e: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 4b0785: 31 f6 xor %esi,%esi 0.00 : 4b0787: e8 64 f4 ff ff callq 4afbf0 <_bt_pagestate> 0.00 : 4b078c: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 4b0790: e9 9c fc ff ff jmpq 4b0431 <_bt_leafbuild+0x2c1> : { : BlockNumber blkno; : BTPageOpaque opaque; : : blkno = s->btps_blkno; : opaque = (BTPageOpaque) PageGetSpecialPointer(s->btps_page); 0.00 : 4b0795: 0f b7 c0 movzwl %ax,%eax : * This may cause the last page of the parent level to split, but : * that's not a problem -- we haven't gotten to it yet. : */ : if (s->btps_next == NULL) : { : opaque->btpo_flags |= BTP_ROOT; 0.00 : 4b0798: 66 83 4c 02 0c 02 orw $0x2,0xc(%rdx,%rax,1) : rootblkno = blkno; : rootlevel = s->btps_level; 0.00 : 4b079e: 44 8b 69 1c mov 0x1c(%rcx),%r13d 0.00 : 4b07a2: e9 82 fd ff ff jmpq 4b0529 <_bt_leafbuild+0x3b9> : Page metapage; : : /* : * Each iteration of this loop completes one more level of the tree. : */ : for (s = state; s != NULL; s = s->btps_next) 0.00 : 4b07a7: 45 31 e4 xor %r12d,%r12d : * As the last step in the process, construct the metapage and make it : * point to the new root (unless we had no data at all, in which case it's : * set to point to "P_NONE"). This changes the index to the "valid" state : * by filling in a valid magic number in the metapage. : */ : metapage = (Page) palloc(BLCKSZ); 0.00 : 4b07aa: bf 00 20 00 00 mov $0x2000,%edi 0.00 : 4b07af: e8 9c 85 2e 00 callq 798d50 : _bt_initmetapage(metapage, rootblkno, rootlevel); 0.00 : 4b07b4: 44 89 ea mov %r13d,%edx 0.00 : 4b07b7: 48 89 c7 mov %rax,%rdi 0.00 : 4b07ba: 44 89 e6 mov %r12d,%esi : * As the last step in the process, construct the metapage and make it : * point to the new root (unless we had no data at all, in which case it's : * set to point to "P_NONE"). This changes the index to the "valid" state : * by filling in a valid magic number in the metapage. : */ : metapage = (Page) palloc(BLCKSZ); 0.00 : 4b07bd: 48 89 c3 mov %rax,%rbx : _bt_initmetapage(metapage, rootblkno, rootlevel); 0.00 : 4b07c0: e8 9b 87 ff ff callq 4a8f60 <_bt_initmetapage> : _bt_blwritepage(wstate, metapage, BTREE_METAPAGE); 0.00 : 4b07c5: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 4b07cc: 31 d2 xor %edx,%edx 0.00 : 4b07ce: 48 89 de mov %rbx,%rsi 0.00 : 4b07d1: e8 da f4 ff ff callq 4afcb0 <_bt_blwritepage> : * exists). A crash later on would replay WAL from the checkpoint, : * therefore it wouldn't replay our earlier WAL entries. If we do not : * fsync those pages here, they might still not be on disk when the crash : * occurs. : */ : if (RelationNeedsWAL(wstate->index)) 0.00 : 4b07d6: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 4b07da: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 4b07de: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 4b07e2: 74 12 je 4b07f6 <_bt_leafbuild+0x686> : wstate.btws_pages_alloced = BTREE_METAPAGE + 1; : wstate.btws_pages_written = 0; : wstate.btws_zeropage = NULL; /* until needed */ : : _bt_load(&wstate, btspool, btspool2); : } 0.00 : 4b07e4: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 4b07eb: 5b pop %rbx 0.00 : 4b07ec: 41 5c pop %r12 0.00 : 4b07ee: 41 5d pop %r13 0.00 : 4b07f0: 41 5e pop %r14 0.00 : 4b07f2: 41 5f pop %r15 0.00 : 4b07f4: c9 leaveq 0.00 : 4b07f5: c3 retq : * fsync those pages here, they might still not be on disk when the crash : * occurs. : */ : if (RelationNeedsWAL(wstate->index)) : { : RelationOpenSmgr(wstate->index); 0.00 : 4b07f6: 48 8b 79 10 mov 0x10(%rcx),%rdi 0.00 : 4b07fa: 48 85 ff test %rdi,%rdi 0.00 : 4b07fd: 0f 84 8c 00 00 00 je 4b088f <_bt_leafbuild+0x71f> : smgrimmedsync(wstate->index->rd_smgr, MAIN_FORKNUM); 0.00 : 4b0803: 31 f6 xor %esi,%esi 0.00 : 4b0805: e8 66 8c 1e 00 callq 699470 0.00 : 4b080a: eb d8 jmp 4b07e4 <_bt_leafbuild+0x674> 0.00 : 4b080c: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 4b0810: 48 8d 45 a0 lea -0x60(%rbp),%rax : TupleDesc tupdes = RelationGetDescr(wstate->index); : int i, : keysz = RelationGetNumberOfAttributes(wstate->index); : ScanKey indexScanKey = NULL; : : if (merge) 0.00 : 4b0814: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 4b081b: 00 0.00 : 4b081c: 48 89 8d 50 ff ff ff mov %rcx,-0xb0(%rbp) 0.00 : 4b0823: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp) : _bt_freeskey(indexScanKey); : } : else : { : /* merge is unnecessary */ : while ((itup = tuplesort_getindextuple(btspool->sortstate, /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:789 10.61 : 4b082a: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax 0.00 : 4b0831: 48 8b 95 50 ff ff ff mov -0xb0(%rbp),%rdx 0.00 : 4b0838: be 01 00 00 00 mov $0x1,%esi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:789 1.52 : 4b083d: 48 8b 38 mov (%rax),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:789 13.64 : 4b0840: e8 db d8 2e 00 callq 79e120 0.00 : 4b0845: 48 85 c0 test %rax,%rax 0.00 : 4b0848: 48 89 c3 mov %rax,%rbx 0.00 : 4b084b: 0f 84 47 fc ff ff je 4b0498 <_bt_leafbuild+0x328> : true, &should_free)) != NULL) : { : /* When we see first tuple, create first index page */ : if (state == NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:793 12.12 : 4b0851: 48 83 7d 98 00 cmpq $0x0,-0x68(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:793 4.55 : 4b0856: 74 23 je 4b087b <_bt_leafbuild+0x70b> : state = _bt_pagestate(wstate, 0); : : _bt_buildadd(wstate, state, itup); 0.00 : 4b0858: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 4b085c: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:796 7.58 : 4b0863: 48 89 da mov %rbx,%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:796 1.52 : 4b0866: e8 05 f6 ff ff callq 4afe70 <_bt_buildadd> : if (should_free) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:797 13.64 : 4b086b: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 34.85 : 4b086f: 74 b9 je 4b082a <_bt_leafbuild+0x6ba> : pfree(itup); 0.00 : 4b0871: 48 89 df mov %rbx,%rdi 0.00 : 4b0874: e8 07 83 2e 00 callq 798b80 0.00 : 4b0879: eb af jmp 4b082a <_bt_leafbuild+0x6ba> : while ((itup = tuplesort_getindextuple(btspool->sortstate, : true, &should_free)) != NULL) : { : /* When we see first tuple, create first index page */ : if (state == NULL) : state = _bt_pagestate(wstate, 0); 0.00 : 4b087b: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi 0.00 : 4b0882: 31 f6 xor %esi,%esi 0.00 : 4b0884: e8 67 f3 ff ff callq 4afbf0 <_bt_pagestate> 0.00 : 4b0889: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 4b088d: eb c9 jmp 4b0858 <_bt_leafbuild+0x6e8> : * fsync those pages here, they might still not be on disk when the crash : * occurs. : */ : if (RelationNeedsWAL(wstate->index)) : { : RelationOpenSmgr(wstate->index); 0.00 : 4b088f: 48 8b 39 mov (%rcx),%rdi 0.00 : 4b0892: 8b 71 08 mov 0x8(%rcx),%esi 0.00 : 4b0895: 8b 51 1c mov 0x1c(%rcx),%edx 0.00 : 4b0898: e8 93 91 1e 00 callq 699a30 0.00 : 4b089d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 4b08a1: 48 89 c6 mov %rax,%rsi 0.00 : 4b08a4: 48 83 c7 10 add $0x10,%rdi 0.00 : 4b08a8: e8 53 8a 1e 00 callq 699300 0.00 : 4b08ad: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 4b08b1: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 4b08b5: e9 49 ff ff ff jmpq 4b0803 <_bt_leafbuild+0x693> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 24.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 19.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:143 12.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:146 12.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 6.06 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:147 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:143 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:143 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:144 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:146 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:144 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:144 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:147 1.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075a2a0 : : * Same as cstring_to_text except the caller specifies the string length; : * the string need not be null_terminated. : */ : text * : cstring_to_text_with_len(const char *s, int len) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:143 3.03 : 75a2a0: 55 push %rbp 1.52 : 75a2a1: 48 89 e5 mov %rsp,%rbp 0.00 : 75a2a4: 4c 89 6d f0 mov %r13,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:143 19.70 : 75a2a8: 41 89 f5 mov %esi,%r13d 0.00 : 75a2ab: 48 89 5d e0 mov %rbx,-0x20(%rbp) : text *result = (text *) palloc(len + VARHDRSZ); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:144 1.52 : 75a2af: 41 8d 5d 04 lea 0x4(%r13),%ebx : * Same as cstring_to_text except the caller specifies the string length; : * the string need not be null_terminated. : */ : text * : cstring_to_text_with_len(const char *s, int len) : { 0.00 : 75a2b3: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 75a2b7: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 75a2bb: 48 83 ec 20 sub $0x20,%rsp 0.00 : 75a2bf: 49 89 fe mov %rdi,%r14 : text *result = (text *) palloc(len + VARHDRSZ); 0.00 : 75a2c2: 48 63 fb movslq %ebx,%rdi : : SET_VARSIZE(result, len + VARHDRSZ); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:146 1.52 : 75a2c5: c1 e3 02 shl $0x2,%ebx : * the string need not be null_terminated. : */ : text * : cstring_to_text_with_len(const char *s, int len) : { : text *result = (text *) palloc(len + VARHDRSZ); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:144 1.52 : 75a2c8: e8 83 ea 03 00 callq 798d50 : : SET_VARSIZE(result, len + VARHDRSZ); : memcpy(VARDATA(result), s, len); 0.00 : 75a2cd: 48 8d 78 04 lea 0x4(%rax),%rdi : * the string need not be null_terminated. : */ : text * : cstring_to_text_with_len(const char *s, int len) : { : text *result = (text *) palloc(len + VARHDRSZ); 1.52 : 75a2d1: 49 89 c4 mov %rax,%r12 : : SET_VARSIZE(result, len + VARHDRSZ); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:146 12.12 : 75a2d4: 89 18 mov %ebx,(%rax) : memcpy(VARDATA(result), s, len); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:147 1.52 : 75a2d6: 49 63 d5 movslq %r13d,%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:147 6.06 : 75a2d9: 4c 89 f6 mov %r14,%rsi 0.00 : 75a2dc: e8 0f f9 d0 ff callq 469bf0 : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 24.24 : 75a2e1: 4c 89 e0 mov %r12,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 4.55 : 75a2e4: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 12.12 : 75a2e8: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 75a2ed: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 1.52 : 75a2f2: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:150 7.58 : 75a2f7: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.15 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1865 15.38 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1865 6.15 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1841 6.15 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1844 3.08 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1873 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1879 1.54 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1879 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4de0 : : * that point anymore, and must not call GetXLogBuffer() with an older 'ptr' : * later, because older buffers might be recycled already) : */ : static char * : GetXLogBuffer(XLogRecPtr ptr) : { 0.00 : 4d4de0: 55 push %rbp 0.00 : 4d4de1: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4de4: 4c 89 6d e8 mov %r13,-0x18(%rbp) : : /* : * Fast path for the common case that we need to access again the same : * page as last time. : */ : if (ptr / XLOG_BLCKSZ == cachedPage) 0.00 : 4d4de8: 49 89 fd mov %rdi,%r13 : * that point anymore, and must not call GetXLogBuffer() with an older 'ptr' : * later, because older buffers might be recycled already) : */ : static char * : GetXLogBuffer(XLogRecPtr ptr) : { 0.00 : 4d4deb: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 4d4def: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 4d4df3: 4c 89 75 f0 mov %r14,-0x10(%rbp) : : /* : * Fast path for the common case that we need to access again the same : * page as last time. : */ : if (ptr / XLOG_BLCKSZ == cachedPage) 0.00 : 4d4df7: 49 c1 ed 0d shr $0xd,%r13 : * that point anymore, and must not call GetXLogBuffer() with an older 'ptr' : * later, because older buffers might be recycled already) : */ : static char * : GetXLogBuffer(XLogRecPtr ptr) : { 0.00 : 4d4dfb: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 4d4dff: 48 83 ec 30 sub $0x30,%rsp : : /* : * Fast path for the common case that we need to access again the same : * page as last time. : */ : if (ptr / XLOG_BLCKSZ == cachedPage) 0.00 : 4d4e03: 4c 3b 2d 2e 45 6a 00 cmp 0x6a452e(%rip),%r13 # b79338 : * that point anymore, and must not call GetXLogBuffer() with an older 'ptr' : * later, because older buffers might be recycled already) : */ : static char * : GetXLogBuffer(XLogRecPtr ptr) : { 0.00 : 4d4e0a: 48 89 fb mov %rdi,%rbx : : /* : * Fast path for the common case that we need to access again the same : * page as last time. : */ : if (ptr / XLOG_BLCKSZ == cachedPage) 0.00 : 4d4e0d: 0f 84 ed 00 00 00 je 4d4f00 : /* : * The XLog buffer cache is organized so that a page is always loaded to a : * particular buffer. That way we can easily calculate the buffer a given : * page must be loaded into, from the XLogRecPtr alone. : */ : idx = XLogRecPtrToBufIdx(ptr); 0.00 : 4d4e13: 48 8b 0d 7e 43 6a 00 mov 0x6a437e(%rip),%rcx # b79198 : * holding the lock. : */ : expectedEndPtr = ptr; : expectedEndPtr += XLOG_BLCKSZ - ptr % XLOG_BLCKSZ; : : endptr = XLogCtl->xlblocks[idx]; 0.00 : 4d4e1a: 31 d2 xor %edx,%edx : * read, we might see a value that appears to be ahead of the page we're : * looking for. Don't PANIC on that, until we've verified the value while : * holding the lock. : */ : expectedEndPtr = ptr; : expectedEndPtr += XLOG_BLCKSZ - ptr % XLOG_BLCKSZ; 0.00 : 4d4e1c: 49 89 ff mov %rdi,%r15 0.00 : 4d4e1f: 4c 8d a7 00 20 00 00 lea 0x2000(%rdi),%r12 0.00 : 4d4e26: 41 81 e7 ff 1f 00 00 and $0x1fff,%r15d : : endptr = XLogCtl->xlblocks[idx]; 0.00 : 4d4e2d: 8b 81 50 01 00 00 mov 0x150(%rcx),%eax : * read, we might see a value that appears to be ahead of the page we're : * looking for. Don't PANIC on that, until we've verified the value while : * holding the lock. : */ : expectedEndPtr = ptr; : expectedEndPtr += XLOG_BLCKSZ - ptr % XLOG_BLCKSZ; /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1841 6.15 : 4d4e33: 4d 29 fc sub %r15,%r12 : : endptr = XLogCtl->xlblocks[idx]; 0.00 : 4d4e36: 83 c0 01 add $0x1,%eax 0.00 : 4d4e39: 48 63 f0 movslq %eax,%rsi 0.00 : 4d4e3c: 4c 89 e8 mov %r13,%rax 0.00 : 4d4e3f: 48 f7 f6 div %rsi : if (expectedEndPtr != endptr) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1844 6.15 : 4d4e42: 48 8b 81 48 01 00 00 mov 0x148(%rcx),%rax : * holding the lock. : */ : expectedEndPtr = ptr; : expectedEndPtr += XLOG_BLCKSZ - ptr % XLOG_BLCKSZ; : : endptr = XLogCtl->xlblocks[idx]; 0.00 : 4d4e49: 4c 63 f2 movslq %edx,%r14 : if (expectedEndPtr != endptr) 0.00 : 4d4e4c: 4e 3b 24 f0 cmp (%rax,%r14,8),%r12 0.00 : 4d4e50: 75 46 jne 4d4e98 : { : /* : * Make sure the initialization of the page is visible to us, and : * won't arrive later to overwrite the WAL data we write on the page. : */ : pg_memory_barrier(); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1865 15.38 : 4d4e52: f0 83 04 24 00 lock addl $0x0,(%rsp) 66.15 : 4d4e57: 48 8b 15 3a 43 6a 00 mov 0x6a433a(%rip),%rdx # b79198 : /* : * Found the buffer holding this page. Return a pointer to the right : * offset within the page. : */ : cachedPage = ptr / XLOG_BLCKSZ; : cachedPos = XLogCtl->pages + idx * (Size) XLOG_BLCKSZ; /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1873 3.08 : 4d4e5e: 4c 89 f0 mov %r14,%rax : : /* : * Found the buffer holding this page. Return a pointer to the right : * offset within the page. : */ : cachedPage = ptr / XLOG_BLCKSZ; 0.00 : 4d4e61: 4c 89 2d d0 44 6a 00 mov %r13,0x6a44d0(%rip) # b79338 : cachedPos = XLogCtl->pages + idx * (Size) XLOG_BLCKSZ; 0.00 : 4d4e68: 48 c1 e0 0d shl $0xd,%rax 0.00 : 4d4e6c: 48 03 82 40 01 00 00 add 0x140(%rdx),%rax 0.00 : 4d4e73: 48 89 05 b6 44 6a 00 mov %rax,0x6a44b6(%rip) # b79330 : : Assert(((XLogPageHeader) cachedPos)->xlp_magic == XLOG_PAGE_MAGIC); : Assert(((XLogPageHeader) cachedPos)->xlp_pageaddr == ptr - (ptr % XLOG_BLCKSZ)); : : return cachedPos + ptr % XLOG_BLCKSZ; 0.00 : 4d4e7a: 4c 01 f8 add %r15,%rax : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1879 1.54 : 4d4e7d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 4d4e81: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4d4e85: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4d4e89: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 4d4e8d: 4c 8b 7d f8 mov -0x8(%rbp),%r15 1.54 : 4d4e91: c9 leaveq 0.00 : 4d4e92: c3 retq 0.00 : 4d4e93: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* : * Let others know that we're finished inserting the record up to the : * page boundary. : */ : WALInsertLockUpdateInsertingAt(expectedEndPtr - XLOG_BLCKSZ); 0.00 : 4d4e98: 49 8d bc 24 00 e0 ff lea -0x2000(%r12),%rdi 0.00 : 4d4e9f: ff 0.00 : 4d4ea0: e8 eb fe ff ff callq 4d4d90 : : AdvanceXLInsertBuffer(ptr, false); 0.00 : 4d4ea5: 31 f6 xor %esi,%esi 0.00 : 4d4ea7: 48 89 df mov %rbx,%rdi 0.00 : 4d4eaa: e8 c1 f7 ff ff callq 4d4670 : endptr = XLogCtl->xlblocks[idx]; : : if (expectedEndPtr != endptr) 0.00 : 4d4eaf: 48 8b 15 e2 42 6a 00 mov 0x6a42e2(%rip),%rdx # b79198 0.00 : 4d4eb6: 48 8b 82 48 01 00 00 mov 0x148(%rdx),%rax 0.00 : 4d4ebd: 4e 3b 24 f0 cmp (%rax,%r14,8),%r12 0.00 : 4d4ec1: 74 9b je 4d4e5e : elog(PANIC, "could not find WAL buffer for %X/%X", 0.00 : 4d4ec3: ba 74 d6 7b 00 mov $0x7bd674,%edx 0.00 : 4d4ec8: be 41 07 00 00 mov $0x741,%esi 0.00 : 4d4ecd: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d4ed2: e8 49 65 2a 00 callq 77b420 0.00 : 4d4ed7: 48 89 da mov %rbx,%rdx 0.00 : 4d4eda: 89 d9 mov %ebx,%ecx 0.00 : 4d4edc: be e8 b7 7b 00 mov $0x7bb7e8,%esi 0.00 : 4d4ee1: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4d4ee5: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d4eea: 31 c0 xor %eax,%eax 0.00 : 4d4eec: e8 3f 63 2a 00 callq 77b230 0.00 : 4d4ef1: e8 da 45 f9 ff callq 4694d0 0.00 : 4d4ef6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d4efd: 00 00 00 : */ : if (ptr / XLOG_BLCKSZ == cachedPage) : { : Assert(((XLogPageHeader) cachedPos)->xlp_magic == XLOG_PAGE_MAGIC); : Assert(((XLogPageHeader) cachedPos)->xlp_pageaddr == ptr - (ptr % XLOG_BLCKSZ)); : return cachedPos + ptr % XLOG_BLCKSZ; 0.00 : 4d4f00: 48 89 f8 mov %rdi,%rax 0.00 : 4d4f03: 25 ff 1f 00 00 and $0x1fff,%eax 0.00 : 4d4f08: 48 03 05 21 44 6a 00 add 0x6a4421(%rip),%rax # b79330 : : Assert(((XLogPageHeader) cachedPos)->xlp_magic == XLOG_PAGE_MAGIC); : Assert(((XLogPageHeader) cachedPos)->xlp_pageaddr == ptr - (ptr % XLOG_BLCKSZ)); : : return cachedPos + ptr % XLOG_BLCKSZ; : } 0.00 : 4d4f0f: e9 69 ff ff ff jmpq 4d4e7d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 46.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1830 13.85 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1828 12.31 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1830 10.77 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1828 6.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 6.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 1.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000078b890 : : /* : * fetch maximum length of the encoding for the current database : */ : int : pg_database_encoding_max_length(void) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1828 10.77 : 78b890: 55 push %rbp 13.85 : 78b891: 48 89 e5 mov %rsp,%rbp : return pg_wchar_table[GetDatabaseEncoding()].maxmblen; /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 1.54 : 78b894: e8 47 d0 ff ff callq 7888e0 1.54 : 78b899: 48 98 cltq 1.54 : 78b89b: 48 8d 04 40 lea (%rax,%rax,2),%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1829 6.15 : 78b89f: 48 c1 e0 04 shl $0x4,%rax 6.15 : 78b8a3: 8b 80 88 7d 8d 00 mov 0x8d7d88(%rax),%eax : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/wchar.c:1830 58.46 : 78b8a9: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 52.38 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:605 19.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:614 14.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:593 3.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:638 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:584 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:586 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:587 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:592 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:592 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:597 1.59 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:645 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000782de0 : : * Delete from a concurrent hash table. entry need only contain the key field. : * Returns true if we find and delete a matching key and false otherwise. : */ : bool : CHashDelete(CHashTable table, void *entry) : { 0.00 : 782de0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:584 1.59 : 782de1: 48 89 e5 mov %rsp,%rbp 0.00 : 782de4: 41 57 push %r15 0.00 : 782de6: 41 56 push %r14 0.00 : 782de8: 49 89 f6 mov %rsi,%r14 0.00 : 782deb: 41 55 push %r13 0.00 : 782ded: 41 54 push %r12 0.00 : 782def: 53 push %rbx 0.00 : 782df0: 48 89 fb mov %rdi,%rbx 0.00 : 782df3: 48 83 ec 58 sub $0x58,%rsp : uint32 hashcode = hash_any(entry, table->desc.key_size); 0.00 : 782df7: 0f b7 77 0e movzwl 0xe(%rdi),%esi 0.00 : 782dfb: 4c 89 f7 mov %r14,%rdi 0.00 : 782dfe: e8 4d d5 d0 ff callq 490350 0.00 : 782e03: 41 89 c5 mov %eax,%r13d : uint32 bucket = hashcode & table->bucket_mask; 0.00 : 782e06: 8b 43 10 mov 0x10(%rbx),%eax : CHashPtr *b = &table->bucket[bucket]; : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782e09: 0f b6 4b 14 movzbl 0x14(%rbx),%ecx : */ : bool : CHashDelete(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:586 1.59 : 782e0d: 44 21 e8 and %r13d,%eax 0.00 : 782e10: 89 45 8c mov %eax,-0x74(%rbp) : CHashPtr *b = &table->bucket[bucket]; : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782e13: 8b 55 8c mov -0x74(%rbp),%edx : bool : CHashDelete(CHashTable table, void *entry) : { : uint32 hashcode = hash_any(entry, table->desc.key_size); : uint32 bucket = hashcode & table->bucket_mask; : CHashPtr *b = &table->bucket[bucket]; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:587 1.59 : 782e16: 89 c0 mov %eax,%eax 0.00 : 782e18: 4c 8d 24 85 00 00 00 lea 0x0(,%rax,4),%r12 0.00 : 782e1f: 00 0.00 : 782e20: 4c 03 63 20 add 0x20(%rbx),%r12 : CHashScanResult scan; : : /* Prevent garbage collection for this bucket. */ : Assert(MyProc->hazard[0] == NULL); : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); 0.00 : 782e24: d3 ea shr %cl,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:592 1.59 : 782e26: 0f b6 4b 15 movzbl 0x15(%rbx),%ecx 0.00 : 782e2a: 89 d0 mov %edx,%eax 0.00 : 782e2c: d3 e8 shr %cl,%eax 1.59 : 782e2e: 01 d0 add %edx,%eax 0.00 : 782e30: 48 8b 15 11 ab 3f 00 mov 0x3fab11(%rip),%rdx # b7d948 0.00 : 782e37: 48 c1 e0 02 shl $0x2,%rax 0.00 : 782e3b: 48 03 43 28 add 0x28(%rbx),%rax 0.00 : 782e3f: 48 89 82 e8 02 00 00 mov %rax,0x2e8(%rdx) : pg_memory_barrier(); 0.00 : 782e46: f0 83 04 24 00 lock addl $0x0,(%rsp) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:593 14.29 : 782e4b: 4c 8d 7d b0 lea -0x50(%rbp),%r15 0.00 : 782e4f: eb 1e jmp 782e6f 0.00 : 782e51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (scan.found) : { : Assert(!CHashPtrIsMarked(scan.next)); : : /* Attempt to apply delete-mark. */ : if (!__sync_bool_compare_and_swap(&scan.target_node->next, 0.00 : 782e58: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 782e5b: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 782e5f: 89 c1 mov %eax,%ecx 0.00 : 782e61: 83 c9 01 or $0x1,%ecx 0.00 : 782e64: f0 0f b1 0a lock cmpxchg %ecx,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:605 52.38 : 782e68: 74 5e je 782ec8 : scan.next, : CHashPtrMark(scan.next))) : { : CHashTableIncrementStatistic(table, CHS_Delete_Retry); 0.00 : 782e6a: 48 83 43 78 01 addq $0x1,0x78(%rbx) : MyProc->hazard[0] = CHashTableGetGarbageByBucket(table, bucket); : pg_memory_barrier(); : : /* Scan bucket. */ : retry: : CHashBucketScan(table, b, hashcode, entry, &scan); 0.00 : 782e6f: 4d 89 f8 mov %r15,%r8 0.00 : 782e72: 4c 89 f1 mov %r14,%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:597 1.59 : 782e75: 44 89 ea mov %r13d,%edx 0.00 : 782e78: 4c 89 e6 mov %r12,%rsi 0.00 : 782e7b: 48 89 df mov %rbx,%rdi 0.00 : 782e7e: e8 1d fe ff ff callq 782ca0 : : /* If we found it, try to delete it. */ : if (scan.found) 0.00 : 782e83: 80 7d c8 00 cmpb $0x0,-0x38(%rbp) 0.00 : 782e87: 75 cf jne 782e58 : } : } : : /* Allow garbage collection for this bucket. */ : Assert(MyProc->hazard[0] != NULL); : pg_memory_barrier(); 0.00 : 782e89: f0 83 04 24 00 lock addl $0x0,(%rsp) : MyProc->hazard[0] = NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:638 3.17 : 782e8e: 48 8b 05 b3 aa 3f 00 mov 0x3faab3(%rip),%rax # b7d948 0.00 : 782e95: 48 c7 80 e8 02 00 00 movq $0x0,0x2e8(%rax) 0.00 : 782e9c: 00 00 00 00 : : /* We're done. */ : CHashTableIncrementStatistic(table, CHS_Delete); : if (!scan.found) 0.00 : 782ea0: 0f b6 45 c8 movzbl -0x38(%rbp),%eax : Assert(MyProc->hazard[0] != NULL); : pg_memory_barrier(); : MyProc->hazard[0] = NULL; : : /* We're done. */ : CHashTableIncrementStatistic(table, CHS_Delete); 0.00 : 782ea4: 48 83 43 68 01 addq $0x1,0x68(%rbx) : if (!scan.found) 0.00 : 782ea9: 84 c0 test %al,%al 0.00 : 782eab: 75 05 jne 782eb2 : CHashTableIncrementStatistic(table, CHS_Delete_Failed); 0.00 : 782ead: 48 83 43 70 01 addq $0x1,0x70(%rbx) : return scan.found; : } 0.00 : 782eb2: 48 83 c4 58 add $0x58,%rsp 0.00 : 782eb6: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:645 1.59 : 782eb7: 41 5c pop %r12 0.00 : 782eb9: 41 5d pop %r13 0.00 : 782ebb: 41 5e pop %r14 0.00 : 782ebd: 41 5f pop %r15 0.00 : 782ebf: c9 leaveq 0.00 : 782ec0: c3 retq 0.00 : 782ec1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : CHashTableIncrementStatistic(table, CHS_Delete_Retry); : goto retry; : } : : /* Deletion is done; attempt to remove node from list. */ : if (__sync_bool_compare_and_swap(scan.pointer_to_target, 0.00 : 782ec8: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 782ecb: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 782ecf: 8b 4d b4 mov -0x4c(%rbp),%ecx 0.00 : 782ed2: 89 d0 mov %edx,%eax 0.00 : 782ed4: f0 0f b1 0e lock cmpxchg %ecx,(%rsi) /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/chash.c:614 19.05 : 782ed8: 75 16 jne 782ef0 : scan.target, : scan.next)) : CHashAddToGarbage(table, bucket, scan.target); 0.00 : 782eda: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 782edd: 8b 75 8c mov -0x74(%rbp),%esi 0.00 : 782ee0: 48 89 df mov %rbx,%rdi 0.00 : 782ee3: e8 68 fd ff ff callq 782c50 0.00 : 782ee8: eb 9f jmp 782e89 0.00 : 782eea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * like a regular bucket scan, except that we don't care : * about the results. We're just doing it to achieve the : * side-effect of removing delete-marked nodes from the : * bucket chain. : */ : CHashTableIncrementStatistic(table, CHS_Cleanup_Scan); 0.00 : 782ef0: 48 83 83 98 00 00 00 addq $0x1,0x98(%rbx) 0.00 : 782ef7: 01 : CHashBucketScan(table, b, hashcode, entry, &cleanup_scan); 0.00 : 782ef8: 4c 8d 45 90 lea -0x70(%rbp),%r8 0.00 : 782efc: 4c 89 f1 mov %r14,%rcx 0.00 : 782eff: 44 89 ea mov %r13d,%edx 0.00 : 782f02: 4c 89 e6 mov %r12,%rsi 0.00 : 782f05: 48 89 df mov %rbx,%rdi 0.00 : 782f08: e8 93 fd ff ff callq 782ca0 0.00 : 782f0d: e9 77 ff ff ff jmpq 782e89 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 54.10 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:544 9.84 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:121 6.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:545 4.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:528 4.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:208 3.28 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:544 1.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:519 1.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:519 1.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:520 1.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:527 1.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 1.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:545 1.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 1.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:272 1.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:272 1.64 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:547 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000677560 : : * To ensure that no one else can pin the buffer before we do, we must : * return the buffer with the buffer header spinlock still held. : */ : volatile BufferDesc * : StrategyGetBuffer(BufferAccessStrategy strategy) : { 0.00 : 677560: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:121 9.84 : 677561: 48 89 e5 mov %rsp,%rbp 0.00 : 677564: 41 57 push %r15 0.00 : 677566: 41 56 push %r14 0.00 : 677568: 41 55 push %r13 0.00 : 67756a: 49 89 fd mov %rdi,%r13 0.00 : 67756d: 41 54 push %r12 0.00 : 67756f: 53 push %rbx 0.00 : 677570: 48 83 ec 08 sub $0x8,%rsp : : /* : * If given a strategy object, see whether it can select a buffer. We : * assume strategy objects don't need buffer_strategy_lock. : */ : if (strategy != NULL) 0.00 : 677574: 48 85 ff test %rdi,%rdi 0.00 : 677577: 74 65 je 6775de : { : volatile BufferDesc *buf; : Buffer bufnum; : : /* Advance to next ring slot */ : if (++strategy->current >= strategy->ring_size) 0.00 : 677579: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 67757c: 83 c0 01 add $0x1,%eax 0.00 : 67757f: 3b 47 04 cmp 0x4(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:519 1.64 : 677582: 89 47 08 mov %eax,0x8(%rdi) 1.64 : 677585: 7c 09 jl 677590 : strategy->current = 0; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:520 1.64 : 677587: c7 47 08 00 00 00 00 movl $0x0,0x8(%rdi) 0.00 : 67758e: 31 c0 xor %eax,%eax : /* : * If the slot hasn't been filled yet, tell the caller to allocate a new : * buffer with the normal allocation strategy. He will then fill this : * slot by calling AddBufferToRing with the new buffer. : */ : bufnum = strategy->buffers[strategy->current]; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:527 1.64 : 677590: 48 98 cltq 0.00 : 677592: 41 8b 44 85 10 mov 0x10(%r13,%rax,4),%eax : if (bufnum == InvalidBuffer) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:528 4.92 : 677597: 85 c0 test %eax,%eax 0.00 : 677599: 74 3e je 6775d9 : * since our own previous usage of the ring element would have left it : * there, but it might've been decremented by clock sweep since then). A : * higher usage_count indicates someone else has touched the buffer, so we : * shouldn't re-use it. : */ : buf = &BufferDescriptors[bufnum - 1]; 0.00 : 67759b: 48 98 cltq 0.00 : 67759d: 48 8d 58 ff lea -0x1(%rax),%rbx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 6775a1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6775a6: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 6775aa: 48 03 1d 4f 85 54 00 add 0x54854f(%rip),%rbx # bbfb00 : LockBufHdr(buf); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:544 3.28 : 6775b1: 48 8d 7b 20 lea 0x20(%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 1.64 : 6775b5: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:544 54.10 : 6775b8: 84 c0 test %al,%al 0.00 : 6775ba: 0f 85 b8 02 00 00 jne 677878 : if (buf->refcount == 0 && buf->usage_count <= 1) 0.00 : 6775c0: 8b 43 18 mov 0x18(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:545 6.56 : 6775c3: 85 c0 test %eax,%eax 0.00 : 6775c5: 75 0e jne 6775d5 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:545 1.64 : 6775c7: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.00 : 6775cb: 66 83 f8 01 cmp $0x1,%ax 0.00 : 6775cf: 0f 86 92 02 00 00 jbe 677867 : { : strategy->current_was_in_ring = true; : return buf; : } : UnlockBufHdr(buf); 0.00 : 6775d5: c6 43 20 00 movb $0x0,0x20(%rbx) : : /* : * Tell caller to allocate a new buffer with the normal allocation : * strategy. He'll then replace this ring element via AddBufferToRing. : */ : strategy->current_was_in_ring = false; 0.00 : 6775d9: 41 c6 45 0c 00 movb $0x0,0xc(%r13) : /* : * We count buffer allocation requests so that the bgwriter can estimate : * the rate of buffer consumption. Note that buffers recycled by a : * strategy object are intentionally not counted here. : */ : pg_atomic_fetch_add_u32(&StrategyControl->numBufferAllocs, 1); 0.00 : 6775de: 48 8b 05 1b 5b 50 00 mov 0x505b1b(%rip),%rax # b7d100 : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.00 : 6775e5: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6775ea: 48 83 c0 14 add $0x14,%rax 0.00 : 6775ee: f0 0f c1 10 lock xadd %edx,(%rax) : * Since we're not guaranteed atomic 8 byte reads we need to acquire the : * spinlock if not null to be sure we get a correct pointer. Because we : * don't want to set the latch while holding the buffer_strategy_lock we : * just grab the lock to read and reset the pointer. : */ : bgwriterLatch = LATCHPTR_ACCESS_ONCE(StrategyControl->bgwriterLatch); 0.00 : 6775f2: 48 8b 15 07 5b 50 00 mov 0x505b07(%rip),%rdx # b7d100 : if (bgwriterLatch) 0.00 : 6775f9: 48 83 7a 18 00 cmpq $0x0,0x18(%rdx) 0.00 : 6775fe: 74 3e je 67763e 0.00 : 677600: b8 01 00 00 00 mov $0x1,%eax 0.00 : 677605: f0 86 02 lock xchg %al,(%rdx) : { : /* we don't have guaranteed atomic 64bit reads */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 677608: 84 c0 test %al,%al 0.00 : 67760a: 0f 85 21 02 00 00 jne 677831 : bgwriterLatch = LATCHPTR_ACCESS_ONCE(StrategyControl->bgwriterLatch); 0.00 : 677610: 48 8b 05 e9 5a 50 00 mov 0x505ae9(%rip),%rax # b7d100 0.00 : 677617: 48 8b 78 18 mov 0x18(%rax),%rdi : StrategyControl->bgwriterLatch = NULL; 0.00 : 67761b: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 677622: 00 : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 677623: 48 8b 05 d6 5a 50 00 mov 0x505ad6(%rip),%rax # b7d100 : : /* recheck */ : if (bgwriterLatch) 0.00 : 67762a: 48 85 ff test %rdi,%rdi : { : /* we don't have guaranteed atomic 64bit reads */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); : bgwriterLatch = LATCHPTR_ACCESS_ONCE(StrategyControl->bgwriterLatch); : StrategyControl->bgwriterLatch = NULL; : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 67762d: c6 00 00 movb $0x0,(%rax) : : /* recheck */ : if (bgwriterLatch) 0.00 : 677630: 74 05 je 677637 : SetLatch(bgwriterLatch); 0.00 : 677632: e8 89 1a fc ff callq 6390c0 0.00 : 677637: 48 8b 15 c2 5a 50 00 mov 0x505ac2(%rip),%rdx # b7d100 : * : * Note that the freeNext fields are considered to be protected by : * the buffer_strategy_lock not the individual buffer spinlocks, so it's : * OK to manipulate them without holding the spinlock. : */ : if (INT_ACCESS_ONCE(StrategyControl->firstFreeBuffer) >= 0) 0.00 : 67763e: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 677641: 85 c0 test %eax,%eax 0.00 : 677643: 0f 88 08 01 00 00 js 677751 0.00 : 677649: b8 01 00 00 00 mov $0x1,%eax 0.00 : 67764e: f0 86 02 lock xchg %al,(%rdx) : { : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 677651: 84 c0 test %al,%al 0.00 : 677653: 0f 85 f3 01 00 00 jne 67784c 0.00 : 677659: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 67765f: eb 30 jmp 677691 0.00 : 677661: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * valid buffer in the freelist and then someone else used it before : * we got to it. It's probably impossible altogether as of 8.3, but : * we'd better check anyway.) : */ : LockBufHdr(buf); : if (buf->refcount == 0 && buf->usage_count == 0) 0.00 : 677668: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 67766b: 85 c0 test %eax,%eax 0.00 : 67766d: 75 0d jne 67767c 0.00 : 67766f: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.00 : 677673: 66 85 c0 test %ax,%ax 0.00 : 677676: 0f 84 94 00 00 00 je 677710 : { : if (strategy != NULL) : AddBufferToRing(strategy, buf); : return buf; : } : UnlockBufHdr(buf); 0.00 : 67767c: c6 43 20 00 movb $0x0,0x20(%rbx) 0.00 : 677680: 44 89 e0 mov %r12d,%eax : : /* Reacquire the lock and go around for another pass. */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 677683: 48 8b 15 76 5a 50 00 mov 0x505a76(%rip),%rdx # b7d100 0.00 : 67768a: f0 86 02 lock xchg %al,(%rdx) 0.00 : 67768d: 84 c0 test %al,%al 0.00 : 67768f: 75 5f jne 6776f0 : */ : if (INT_ACCESS_ONCE(StrategyControl->firstFreeBuffer) >= 0) : { : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); : : while (StrategyControl->firstFreeBuffer >= 0) 0.00 : 677691: 48 8b 15 68 5a 50 00 mov 0x505a68(%rip),%rdx # b7d100 0.00 : 677698: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 67769b: 85 c0 test %eax,%eax 0.00 : 67769d: 0f 88 9d 00 00 00 js 677740 : { : buf = &BufferDescriptors[StrategyControl->firstFreeBuffer]; 0.00 : 6776a3: 48 63 d8 movslq %eax,%rbx 0.00 : 6776a6: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 6776aa: 48 03 1d 4f 84 54 00 add 0x54844f(%rip),%rbx # bbfb00 : Assert(buf->freeNext != FREENEXT_NOT_IN_LIST); : : /* Unconditionally remove buffer from freelist */ : StrategyControl->firstFreeBuffer = buf->freeNext; 0.00 : 6776b1: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 6776b4: 89 42 08 mov %eax,0x8(%rdx) : buf->freeNext = FREENEXT_NOT_IN_LIST; 0.00 : 6776b7: c7 43 28 fe ff ff ff movl $0xfffffffe,0x28(%rbx) : : /* : * Release the lock so someone else can access the freelist (or run : * the clocksweep) while we check out this buffer. : */ : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 6776be: 48 8b 05 3b 5a 50 00 mov 0x505a3b(%rip),%rax # b7d100 : * it; discard it and retry. (This can only happen if VACUUM put a : * valid buffer in the freelist and then someone else used it before : * we got to it. It's probably impossible altogether as of 8.3, but : * we'd better check anyway.) : */ : LockBufHdr(buf); 0.00 : 6776c5: 48 8d 7b 20 lea 0x20(%rbx),%rdi : : /* : * Release the lock so someone else can access the freelist (or run : * the clocksweep) while we check out this buffer. : */ : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 6776c9: c6 00 00 movb $0x0,(%rax) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 1.64 : 6776cc: 44 89 e0 mov %r12d,%eax 0.00 : 6776cf: f0 86 07 lock xchg %al,(%rdi) : * it; discard it and retry. (This can only happen if VACUUM put a : * valid buffer in the freelist and then someone else used it before : * we got to it. It's probably impossible altogether as of 8.3, but : * we'd better check anyway.) : */ : LockBufHdr(buf); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:208 4.92 : 6776d2: 84 c0 test %al,%al 0.00 : 6776d4: 74 92 je 677668 0.00 : 6776d6: ba d0 00 00 00 mov $0xd0,%edx 0.00 : 6776db: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 6776e0: e8 5b 89 01 00 callq 690040 0.00 : 6776e5: eb 81 jmp 677668 0.00 : 6776e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6776ee: 00 00 : return buf; : } : UnlockBufHdr(buf); : : /* Reacquire the lock and go around for another pass. */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 6776f0: 48 8b 3d 09 5a 50 00 mov 0x505a09(%rip),%rdi # b7d100 0.00 : 6776f7: ba da 00 00 00 mov $0xda,%edx 0.00 : 6776fc: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 677701: e8 3a 89 01 00 callq 690040 0.00 : 677706: eb 89 jmp 677691 0.00 : 677708: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 67770f: 00 : trycounter = NBuffers; : } : else : { : /* Found a usable buffer */ : if (strategy != NULL) 0.00 : 677710: 4d 85 ed test %r13,%r13 0.00 : 677713: 74 0f je 677724 : * is called with the spinlock held, it had better be quite cheap. : */ : static void : AddBufferToRing(BufferAccessStrategy strategy, volatile BufferDesc *buf) : { : strategy->buffers[strategy->current] = BufferDescriptorGetBuffer(buf); 0.00 : 677715: 8b 43 24 mov 0x24(%rbx),%eax 0.00 : 677718: 49 63 55 08 movslq 0x8(%r13),%rdx 0.00 : 67771c: 83 c0 01 add $0x1,%eax 0.00 : 67771f: 41 89 44 95 10 mov %eax,0x10(%r13,%rdx,4) : UnlockBufHdr(buf); : elog(ERROR, "no unpinned buffers available"); : } : UnlockBufHdr(buf); : } : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:272 1.64 : 677724: 48 83 c4 08 add $0x8,%rsp 0.00 : 677728: 48 89 d8 mov %rbx,%rax 0.00 : 67772b: 5b pop %rbx 0.00 : 67772c: 41 5c pop %r12 1.64 : 67772e: 41 5d pop %r13 0.00 : 677730: 41 5e pop %r14 0.00 : 677732: 41 5f pop %r15 0.00 : 677734: c9 leaveq 0.00 : 677735: c3 retq 0.00 : 677736: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 67773d: 00 00 00 : UnlockBufHdr(buf); : : /* Reacquire the lock and go around for another pass. */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); : } : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 677740: 48 8b 05 b9 59 50 00 mov 0x5059b9(%rip),%rax # b7d100 0.00 : 677747: c6 00 00 movb $0x0,(%rax) 0.00 : 67774a: 48 8b 15 af 59 50 00 mov 0x5059af(%rip),%rdx # b7d100 : } : : /* Nothing on the freelist, so run the "clock sweep" algorithm */ : trycounter = NBuffers; 0.00 : 677751: 44 8b 25 c8 13 4f 00 mov 0x4f13c8(%rip),%r12d # b68b20 0.00 : 677758: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 67775e: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 677764: eb 30 jmp 677796 0.00 : 677766: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 67776d: 00 00 00 : * it; decrement the usage_count (unless pinned) and keep scanning. : */ : LockBufHdr(buf); : if (buf->refcount == 0) : { : if (buf->usage_count > 0) 0.00 : 677770: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.00 : 677774: 66 85 c0 test %ax,%ax 0.00 : 677777: 74 97 je 677710 : { : buf->usage_count--; 0.00 : 677779: 0f b7 43 16 movzwl 0x16(%rbx),%eax 0.00 : 67777d: 83 e8 01 sub $0x1,%eax 0.00 : 677780: 66 89 43 16 mov %ax,0x16(%rbx) : trycounter = NBuffers; 0.00 : 677784: 44 8b 25 95 13 4f 00 mov 0x4f1395(%rip),%r12d # b68b20 : * infinite loop. : */ : UnlockBufHdr(buf); : elog(ERROR, "no unpinned buffers available"); : } : UnlockBufHdr(buf); 0.00 : 67778b: c6 43 20 00 movb $0x0,0x20(%rbx) 0.00 : 67778f: 48 8b 15 6a 59 50 00 mov 0x50596a(%rip),%rdx # b7d100 : trycounter = NBuffers; : for (;;) : { : int victim; : : victim = pg_atomic_fetch_add_u32(&StrategyControl->nextVictimBuffer, 1); 0.00 : 677796: 48 8d 42 04 lea 0x4(%rdx),%rax 0.00 : 67779a: 44 89 f2 mov %r14d,%edx 0.00 : 67779d: f0 0f c1 10 lock xadd %edx,(%rax) : : buf = &BufferDescriptors[victim % NBuffers]; 0.00 : 6777a1: 89 d0 mov %edx,%eax 0.00 : 6777a3: c1 fa 1f sar $0x1f,%edx 0.00 : 6777a6: f7 3d 74 13 4f 00 idivl 0x4f1374(%rip) # b68b20 0.00 : 6777ac: 48 63 da movslq %edx,%rbx 0.00 : 6777af: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 6777b3: 48 03 1d 46 83 54 00 add 0x548346(%rip),%rbx # bbfb00 : : if (victim % NBuffers == 0) 0.00 : 6777ba: 85 d2 test %edx,%edx 0.00 : 6777bc: 75 12 jne 6777d0 : { : pg_atomic_add_fetch_u32(&StrategyControl->completePasses, 1); 0.00 : 6777be: 48 8b 05 3b 59 50 00 mov 0x50593b(%rip),%rax # b7d100 0.00 : 6777c5: 44 89 f2 mov %r14d,%edx 0.00 : 6777c8: 48 83 c0 10 add $0x10,%rax 0.00 : 6777cc: f0 0f c1 10 lock xadd %edx,(%rax) : : /* : * If the buffer is pinned or has a nonzero usage_count, we cannot use : * it; decrement the usage_count (unless pinned) and keep scanning. : */ : LockBufHdr(buf); 0.00 : 6777d0: 48 8d 7b 20 lea 0x20(%rbx),%rdi 0.00 : 6777d4: 44 89 f8 mov %r15d,%eax 0.00 : 6777d7: f0 86 07 lock xchg %al,(%rdi) 0.00 : 6777da: 84 c0 test %al,%al 0.00 : 6777dc: 75 42 jne 677820 : if (buf->refcount == 0) 0.00 : 6777de: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 6777e1: 85 c0 test %eax,%eax 0.00 : 6777e3: 74 8b je 677770 : if (strategy != NULL) : AddBufferToRing(strategy, buf); : return buf; : } : } : else if (--trycounter == 0) 0.00 : 6777e5: 41 83 ec 01 sub $0x1,%r12d 0.00 : 6777e9: 75 a0 jne 67778b : * We could hope that someone will free one eventually, but it's : * probably better to fail than to risk getting stuck in an : * infinite loop. : */ : UnlockBufHdr(buf); : elog(ERROR, "no unpinned buffers available"); 0.00 : 6777eb: ba 80 a1 8a 00 mov $0x8aa180,%edx 0.00 : 6777f0: be 0c 01 00 00 mov $0x10c,%esi 0.00 : 6777f5: bf ec a0 8a 00 mov $0x8aa0ec,%edi : * so all the buffers are pinned (or were when we looked at them). : * We could hope that someone will free one eventually, but it's : * probably better to fail than to risk getting stuck in an : * infinite loop. : */ : UnlockBufHdr(buf); 0.00 : 6777fa: c6 43 20 00 movb $0x0,0x20(%rbx) : elog(ERROR, "no unpinned buffers available"); 0.00 : 6777fe: e8 1d 3c 10 00 callq 77b420 0.00 : 677803: be 0e a1 8a 00 mov $0x8aa10e,%esi 0.00 : 677808: bf 14 00 00 00 mov $0x14,%edi 0.00 : 67780d: 31 c0 xor %eax,%eax 0.00 : 67780f: e8 1c 3a 10 00 callq 77b230 0.00 : 677814: e8 b7 1c df ff callq 4694d0 0.00 : 677819: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * If the buffer is pinned or has a nonzero usage_count, we cannot use : * it; decrement the usage_count (unless pinned) and keep scanning. : */ : LockBufHdr(buf); 0.00 : 677820: ba f2 00 00 00 mov $0xf2,%edx 0.00 : 677825: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 67782a: e8 11 88 01 00 callq 690040 0.00 : 67782f: eb ad jmp 6777de : */ : bgwriterLatch = LATCHPTR_ACCESS_ONCE(StrategyControl->bgwriterLatch); : if (bgwriterLatch) : { : /* we don't have guaranteed atomic 64bit reads */ : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 677831: 48 8b 3d c8 58 50 00 mov 0x5058c8(%rip),%rdi # b7d100 0.00 : 677838: ba 9f 00 00 00 mov $0x9f,%edx 0.00 : 67783d: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 677842: e8 f9 87 01 00 callq 690040 0.00 : 677847: e9 c4 fd ff ff jmpq 677610 : * the buffer_strategy_lock not the individual buffer spinlocks, so it's : * OK to manipulate them without holding the spinlock. : */ : if (INT_ACCESS_ONCE(StrategyControl->firstFreeBuffer) >= 0) : { : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 67784c: 48 8b 3d ad 58 50 00 mov 0x5058ad(%rip),%rdi # b7d100 0.00 : 677853: ba b8 00 00 00 mov $0xb8,%edx 0.00 : 677858: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 67785d: e8 de 87 01 00 callq 690040 0.00 : 677862: e9 f2 fd ff ff jmpq 677659 : */ : buf = &BufferDescriptors[bufnum - 1]; : LockBufHdr(buf); : if (buf->refcount == 0 && buf->usage_count <= 1) : { : strategy->current_was_in_ring = true; 0.00 : 677867: 41 c6 45 0c 01 movb $0x1,0xc(%r13) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:547 1.64 : 67786c: e9 b3 fe ff ff jmpq 677724 0.00 : 677871: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * there, but it might've been decremented by clock sweep since then). A : * higher usage_count indicates someone else has touched the buffer, so we : * shouldn't re-use it. : */ : buf = &BufferDescriptors[bufnum - 1]; : LockBufHdr(buf); 0.00 : 677878: ba 20 02 00 00 mov $0x220,%edx 0.00 : 67787d: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 677882: e8 b9 87 01 00 callq 690040 0.00 : 677887: e9 34 fd ff ff jmpq 6775c0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 38.98 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:336 33.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:338 25.42 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:338 1.69 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:338 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a46f0 : : * HeapTupleSatisfiesAny : * Dummy "satisfies" routine: any tuple satisfies SnapshotAny. : */ : bool : HeapTupleSatisfiesAny(HeapTuple htup, Snapshot snapshot, Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:336 38.98 : 7a46f0: 55 push %rbp : return true; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:338 1.69 : 7a46f1: b8 01 00 00 00 mov $0x1,%eax : * HeapTupleSatisfiesAny : * Dummy "satisfies" routine: any tuple satisfies SnapshotAny. : */ : bool : HeapTupleSatisfiesAny(HeapTuple htup, Snapshot snapshot, Buffer buffer) : { 0.00 : 7a46f6: 48 89 e5 mov %rsp,%rbp : return true; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:338 59.32 : 7a46f9: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 15.52 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:972 10.34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:929 8.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:941 8.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:972 8.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:946 8.62 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:947 6.90 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:929 5.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 5.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:972 3.45 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:946 1.72 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000712bd0 : : /* : * Detect whether collation's LC_COLLATE property is C : */ : bool : lc_collate_is_c(Oid collation) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:929 10.34 : 712bd0: 55 push %rbp : /* : * If we're asked about "collation 0", return false, so that the code will : * go into the non-C path and report that the collation is bogus. : */ : if (!OidIsValid(collation)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 5.17 : 712bd1: 31 d2 xor %edx,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 1.72 : 712bd3: 85 ff test %edi,%edi : /* : * Detect whether collation's LC_COLLATE property is C : */ : bool : lc_collate_is_c(Oid collation) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:929 6.90 : 712bd5: 48 89 e5 mov %rsp,%rbp : /* : * If we're asked about "collation 0", return false, so that the code will : * go into the non-C path and report that the collation is bogus. : */ : if (!OidIsValid(collation)) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:934 17.24 : 712bd8: 74 23 je 712bfd : : /* : * If we're asked about the default collation, we have to inquire of the C : * library. Cache the result so we only have to compute it once. : */ : if (collation == DEFAULT_COLLATION_OID) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:941 8.62 : 712bda: 83 ff 64 cmp $0x64,%edi 0.00 : 712bdd: 74 29 je 712c08 : } : : /* : * If we're asked about the built-in C/POSIX collations, we know that. : */ : if (collation == C_COLLATION_OID || 0.00 : 712bdf: 8d 87 4a fc ff ff lea -0x3b6(%rdi),%eax 0.00 : 712be5: ba 01 00 00 00 mov $0x1,%edx 0.00 : 712bea: 83 f8 01 cmp $0x1,%eax 0.00 : 712bed: 76 0e jbe 712bfd : return true; : : /* : * Otherwise, we have to consult pg_collation, but we cache that. : */ : return (lookup_collation_cache(collation, true))->collate_is_c; 0.00 : 712bef: be 01 00 00 00 mov $0x1,%esi 0.00 : 712bf4: e8 87 fb ff ff callq 712780 0.00 : 712bf9: 0f b6 50 04 movzbl 0x4(%rax),%edx : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:972 8.62 : 712bfd: 89 d0 mov %edx,%eax 5.17 : 712bff: c9 leaveq 15.52 : 712c00: c3 retq 0.00 : 712c01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (collation == DEFAULT_COLLATION_OID) : { : static int result = -1; : char *localeptr; : : if (result >= 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:946 3.45 : 712c08: 8b 05 26 5e 45 00 mov 0x455e26(%rip),%eax # b68a34 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:946 8.62 : 712c0e: 85 c0 test %eax,%eax : return (bool) result; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_locale.c:947 8.62 : 712c10: 89 c2 mov %eax,%edx : if (collation == DEFAULT_COLLATION_OID) : { : static int result = -1; : char *localeptr; : : if (result >= 0) 0.00 : 712c12: 79 e9 jns 712bfd : return (bool) result; : localeptr = setlocale(LC_COLLATE, NULL); 0.00 : 712c14: 31 f6 xor %esi,%esi 0.00 : 712c16: bf 03 00 00 00 mov $0x3,%edi 0.00 : 712c1b: e8 e0 73 d5 ff callq 46a000 : if (!localeptr) 0.00 : 712c20: 48 85 c0 test %rax,%rax 0.00 : 712c23: 74 3d je 712c62 : elog(ERROR, "invalid LC_COLLATE setting"); : : if (strcmp(localeptr, "C") == 0) 0.00 : 712c25: 80 38 43 cmpb $0x43,(%rax) 0.00 : 712c28: 74 26 je 712c50 : result = true; : else if (strcmp(localeptr, "POSIX") == 0) 0.00 : 712c2a: 48 89 c6 mov %rax,%rsi 0.00 : 712c2d: bf c8 48 8c 00 mov $0x8c48c8,%edi 0.00 : 712c32: b9 06 00 00 00 mov $0x6,%ecx : result = true; 0.00 : 712c37: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 712c39: 0f 94 c0 sete %al 0.00 : 712c3c: 0f b6 c0 movzbl %al,%eax 0.00 : 712c3f: 89 05 ef 5d 45 00 mov %eax,0x455def(%rip) # b68a34 : else : result = false; : return (bool) result; 0.00 : 712c45: 0f b6 15 e8 5d 45 00 movzbl 0x455de8(%rip),%edx # b68a34 : : /* : * Otherwise, we have to consult pg_collation, but we cache that. : */ : return (lookup_collation_cache(collation, true))->collate_is_c; : } 0.00 : 712c4c: eb af jmp 712bfd 0.00 : 712c4e: 66 90 xchg %ax,%ax : return (bool) result; : localeptr = setlocale(LC_COLLATE, NULL); : if (!localeptr) : elog(ERROR, "invalid LC_COLLATE setting"); : : if (strcmp(localeptr, "C") == 0) 0.00 : 712c50: 80 78 01 00 cmpb $0x0,0x1(%rax) 0.00 : 712c54: 75 d4 jne 712c2a : result = true; 0.00 : 712c56: c7 05 d4 5d 45 00 01 movl $0x1,0x455dd4(%rip) # b68a34 0.00 : 712c5d: 00 00 00 0.00 : 712c60: eb e3 jmp 712c45 : : if (result >= 0) : return (bool) result; : localeptr = setlocale(LC_COLLATE, NULL); : if (!localeptr) : elog(ERROR, "invalid LC_COLLATE setting"); 0.00 : 712c62: ba 90 4b 8c 00 mov $0x8c4b90,%edx 0.00 : 712c67: be b6 03 00 00 mov $0x3b6,%esi 0.00 : 712c6c: bf 75 2f 8a 00 mov $0x8a2f75,%edi 0.00 : 712c71: e8 aa 87 06 00 callq 77b420 0.00 : 712c76: be e7 48 8c 00 mov $0x8c48e7,%esi 0.00 : 712c7b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 712c80: 31 c0 xor %eax,%eax 0.00 : 712c82: e8 a9 85 06 00 callq 77b230 0.00 : 712c87: e8 44 68 d5 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:427 26.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:427 22.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:427 17.54 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:432 7.02 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:427 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006ea820 : : PG_RETURN_BOOL(arg1 <= arg2); : } : : Datum : int4gt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:427 26.32 : 6ea820: 48 8b 47 28 mov 0x28(%rdi),%rax 7.02 : 6ea824: 39 47 20 cmp %eax,0x20(%rdi) 22.81 : 6ea827: 55 push %rbp 0.00 : 6ea828: 48 89 e5 mov %rsp,%rbp : int32 arg1 = PG_GETARG_INT32(0); : int32 arg2 = PG_GETARG_INT32(1); : : PG_RETURN_BOOL(arg1 > arg2); : } 0.00 : 6ea82b: c9 leaveq : PG_RETURN_BOOL(arg1 <= arg2); : } : : Datum : int4gt(PG_FUNCTION_ARGS) : { 26.32 : 6ea82c: 0f 9f c0 setg %al /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/int.c:432 17.54 : 6ea82f: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:118 10.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 10.71 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:124 8.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 8.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 8.93 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:124 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:123 5.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 5.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 5.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:123 3.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:113 3.57 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:116 1.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 1.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 1.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:116 1.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:118 1.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:124 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a4aa0 : : * InvalidTransactionId if no check is needed. : */ : static inline void : SetHintBits(HeapTupleHeader tuple, Buffer buffer, : uint16 infomask, TransactionId xid) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 5.36 : 7a4aa0: 55 push %rbp 8.93 : 7a4aa1: 48 89 e5 mov %rsp,%rbp 8.93 : 7a4aa4: 48 89 5d e8 mov %rbx,-0x18(%rbp) 5.36 : 7a4aa8: 4c 89 65 f0 mov %r12,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 1.79 : 7a4aac: 48 89 fb mov %rdi,%rbx 0.00 : 7a4aaf: 4c 89 6d f8 mov %r13,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 10.71 : 7a4ab3: 48 83 ec 20 sub $0x20,%rsp : if (TransactionIdIsValid(xid)) 0.00 : 7a4ab7: 85 c9 test %ecx,%ecx : * InvalidTransactionId if no check is needed. : */ : static inline void : SetHintBits(HeapTupleHeader tuple, Buffer buffer, : uint16 infomask, TransactionId xid) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:112 1.79 : 7a4ab9: 41 89 f5 mov %esi,%r13d 0.00 : 7a4abc: 41 89 d4 mov %edx,%r12d : if (TransactionIdIsValid(xid)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:113 3.57 : 7a4abf: 74 13 je 7a4ad4 : { : /* NB: xid must be known committed here! */ : XLogRecPtr commitLSN = TransactionIdGetCommitLSN(xid); /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:116 1.79 : 7a4ac1: 89 cf mov %ecx,%edi 3.57 : 7a4ac3: e8 28 b6 d1 ff callq 4c00f0 0.00 : 7a4ac8: 48 89 c7 mov %rax,%rdi : : if (XLogNeedsFlush(commitLSN) && BufferIsPermanent(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:118 1.79 : 7a4acb: e8 e0 f2 d2 ff callq 4d3db0 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:118 12.50 : 7a4ad0: 84 c0 test %al,%al 0.00 : 7a4ad2: 75 24 jne 7a4af8 : return; /* not flushed yet, so don't set hint */ : } : : tuple->t_infomask |= infomask; 0.00 : 7a4ad4: 66 44 09 63 14 or %r12w,0x14(%rbx) : MarkBufferDirtyHint(buffer, true); /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:123 5.36 : 7a4ad9: 44 89 ef mov %r13d,%edi 0.00 : 7a4adc: be 01 00 00 00 mov $0x1,%esi : } 0.00 : 7a4ae1: 48 8b 5d e8 mov -0x18(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:124 8.93 : 7a4ae5: 4c 8b 65 f0 mov -0x10(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:124 1.79 : 7a4ae9: 4c 8b 6d f8 mov -0x8(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:124 10.71 : 7a4aed: c9 leaveq : if (XLogNeedsFlush(commitLSN) && BufferIsPermanent(buffer)) : return; /* not flushed yet, so don't set hint */ : } : : tuple->t_infomask |= infomask; : MarkBufferDirtyHint(buffer, true); /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:123 7.14 : 7a4aee: e9 9d fe ec ff jmpq 674990 0.00 : 7a4af3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (TransactionIdIsValid(xid)) : { : /* NB: xid must be known committed here! */ : XLogRecPtr commitLSN = TransactionIdGetCommitLSN(xid); : : if (XLogNeedsFlush(commitLSN) && BufferIsPermanent(buffer)) 0.00 : 7a4af8: 44 89 ef mov %r13d,%edi 0.00 : 7a4afb: e8 c0 f5 ec ff callq 6740c0 0.00 : 7a4b00: 84 c0 test %al,%al 0.00 : 7a4b02: 74 d0 je 7a4ad4 : return; /* not flushed yet, so don't set hint */ : } : : tuple->t_infomask |= infomask; : MarkBufferDirtyHint(buffer, true); : } 0.00 : 7a4b04: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 7a4b08: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 7a4b0c: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 7a4b10: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 41.07 ??:0 28.57 ??:0 16.07 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000374c0 : ??:0 41.07 : 374c0: 48 8b 15 c1 a8 33 00 mov 0x33a8c1(%rip),%rdx # 371d88 <_DYNAMIC+0x228> 0.00 : 374c7: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 374ce: 00 00 14.29 : 374d0: 48 8b 0c 10 mov (%rax,%rdx,1),%rcx 28.57 : 374d4: 31 d2 xor %edx,%edx 16.07 : 374d6: e9 35 2d 00 00 jmpq 3a210 <__GI_____strtod_l_internal> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2843 11.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2843 11.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2843 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2843 5.77 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2843 5.77 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2843 5.77 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2964 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2845 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2856 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2873 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2873 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2964 1.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2845 1.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2856 1.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2928 1.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2964 1.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2964 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674990 : : * 3. This function does not guarantee that the buffer is always marked dirty : * (due to a race condition), so it cannot be used for important changes. : */ : void : MarkBufferDirtyHint(Buffer buffer, bool buffer_std) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2843 5.77 : 674990: 55 push %rbp 7.69 : 674991: 48 89 e5 mov %rsp,%rbp 0.00 : 674994: 4c 89 65 e0 mov %r12,-0x20(%rbp) 23.08 : 674998: 4c 89 6d e8 mov %r13,-0x18(%rbp) 11.54 : 67499c: 41 89 fc mov %edi,%r12d 0.00 : 67499f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 11.54 : 6749a3: 4c 89 75 f0 mov %r14,-0x10(%rbp) 5.77 : 6749a7: 41 89 f5 mov %esi,%r13d 0.00 : 6749aa: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 6749ae: 48 83 ec 30 sub $0x30,%rsp : volatile BufferDesc *bufHdr; : Page page = BufferGetPage(buffer); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2845 3.85 : 6749b2: 83 ff 00 cmp $0x0,%edi 0.00 : 6749b5: 0f 8c 35 01 00 00 jl 674af0 1.92 : 6749bb: 4c 8b 3d 36 b1 54 00 mov 0x54b136(%rip),%r15 # bbfaf8 : : if (!BufferIsValid(buffer)) 0.00 : 6749c2: 0f 84 6c 01 00 00 je 674b34 : { : MarkLocalBufferDirty(buffer); : return; : } : : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 6749c8: 48 63 c7 movslq %edi,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2856 3.85 : 6749cb: 48 8d 58 ff lea -0x1(%rax),%rbx 1.92 : 6749cf: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 6749d3: 48 03 1d 26 b1 54 00 add 0x54b126(%rip),%rbx # bbfb00 : * might fail to notice that the flags have just been cleared, and failed : * to reset them, due to memory-ordering issues. But since this function : * is only intended to be used in cases where failing to write out the : * data would be harmless anyway, it doesn't really matter. : */ : if ((bufHdr->flags & (BM_DIRTY | BM_JUST_DIRTIED)) != 0.00 : 6749da: 0f b7 43 14 movzwl 0x14(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2873 3.85 : 6749de: 83 e0 21 and $0x21,%eax 3.85 : 6749e1: 83 f8 21 cmp $0x21,%eax 0.00 : 6749e4: 0f 84 ae 00 00 00 je 674a98 : * last checkpoint. : * : * We don't check full_page_writes here because that logic is included : * when we call XLogInsert() since the value changes dynamically. : */ : if (XLogHintBitIsNeeded() && (bufHdr->flags & BM_PERMANENT)) 0.00 : 6749ea: e8 d1 85 e5 ff callq 4ccfc0 0.00 : 6749ef: 84 c0 test %al,%al 0.00 : 6749f1: 0f 85 b9 00 00 00 jne 674ab0 0.00 : 6749f7: 80 3d 5b 47 50 00 00 cmpb $0x0,0x50475b(%rip) # b79159 0.00 : 6749fe: 0f 85 ac 00 00 00 jne 674ab0 : * It's possible we may enter here without an xid, so it is : * essential that CreateCheckpoint waits for virtual transactions : * rather than full transactionids. : */ : MyPgXact->delayChkpt = delayChkpt = true; : lsn = XLogSaveBufferForHint(buffer, buffer_std); 0.00 : 674a04: 45 31 ed xor %r13d,%r13d 0.00 : 674a07: 45 31 f6 xor %r14d,%r14d : } : : LockBufHdr(bufHdr); 0.00 : 674a0a: 48 8d 7b 20 lea 0x20(%rbx),%rdi : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 674a0e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 674a13: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2928 1.92 : 674a16: 84 c0 test %al,%al 0.00 : 674a18: 0f 85 02 01 00 00 jne 674b20 : Assert(bufHdr->refcount > 0); : if (!(bufHdr->flags & BM_DIRTY)) 0.00 : 674a1e: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674a22: 31 d2 xor %edx,%edx 0.00 : 674a24: a8 01 test $0x1,%al 0.00 : 674a26: 75 2b jne 674a53 : * : * If checksums are enabled, you might think we should reset the : * checksum here. That will happen when the page is written : * sometime later in this checkpoint cycle. : */ : if (!XLogRecPtrIsInvalid(lsn)) 0.00 : 674a28: 4d 85 ed test %r13,%r13 0.00 : 674a2b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 674a30: 74 21 je 674a53 : PageSetLSN(page, lsn); 0.00 : 674a32: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 674a37: 4c 89 ea mov %r13,%rdx 0.00 : 674a3a: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 674a3e: 48 98 cltq 0.00 : 674a40: 48 c1 e0 0d shl $0xd,%rax 0.00 : 674a44: 49 8d 04 07 lea (%r15,%rax,1),%rax 0.00 : 674a48: 89 10 mov %edx,(%rax) 0.00 : 674a4a: 44 89 68 04 mov %r13d,0x4(%rax) 0.00 : 674a4e: ba 01 00 00 00 mov $0x1,%edx : } : bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); 0.00 : 674a53: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674a57: 83 c8 21 or $0x21,%eax 0.00 : 674a5a: 66 89 43 14 mov %ax,0x14(%rbx) : UnlockBufHdr(bufHdr); : : if (delayChkpt) 0.00 : 674a5e: 45 84 f6 test %r14b,%r14b : */ : if (!XLogRecPtrIsInvalid(lsn)) : PageSetLSN(page, lsn); : } : bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); : UnlockBufHdr(bufHdr); 0.00 : 674a61: c6 43 20 00 movb $0x0,0x20(%rbx) : : if (delayChkpt) 0.00 : 674a65: 0f 85 a5 00 00 00 jne 674b10 : MyPgXact->delayChkpt = false; : : if (dirtied) 0.00 : 674a6b: 84 d2 test %dl,%dl 0.00 : 674a6d: 74 29 je 674a98 : { : VacuumPageDirty++; 0.00 : 674a6f: 83 05 66 56 54 00 01 addl $0x1,0x545666(%rip) # bba0dc : pgBufferUsage.shared_blks_dirtied++; 0.00 : 674a76: 48 83 05 f2 ac 54 00 addq $0x1,0x54acf2(%rip) # bbf770 0.00 : 674a7d: 01 : if (VacuumCostActive) 0.00 : 674a7e: 80 3d 5f 56 54 00 00 cmpb $0x0,0x54565f(%rip) # bba0e4 0.00 : 674a85: 74 11 je 674a98 : VacuumCostBalance += VacuumCostPageDirty; 0.00 : 674a87: 8b 05 a7 40 4f 00 mov 0x4f40a7(%rip),%eax # b68b34 0.00 : 674a8d: 01 05 4d 56 54 00 add %eax,0x54564d(%rip) # bba0e0 0.00 : 674a93: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : } : } 0.00 : 674a98: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 674a9c: 4c 8b 65 e0 mov -0x20(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2964 1.92 : 674aa0: 4c 8b 6d e8 mov -0x18(%rbp),%r13 3.85 : 674aa4: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 674aa8: 4c 8b 7d f8 mov -0x8(%rbp),%r15 1.92 : 674aac: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2964 5.77 : 674aad: c3 retq 0.00 : 674aae: 66 90 xchg %ax,%ax : * last checkpoint. : * : * We don't check full_page_writes here because that logic is included : * when we call XLogInsert() since the value changes dynamically. : */ : if (XLogHintBitIsNeeded() && (bufHdr->flags & BM_PERMANENT)) 0.00 : 674ab0: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674ab4: f6 c4 01 test $0x1,%ah 0.00 : 674ab7: 0f 84 47 ff ff ff je 674a04 : * We can set the hint, just not dirty the page as a result so the : * hint is lost when we evict the page or shutdown. : * : * See src/backend/storage/page/README for longer discussion. : */ : if (RecoveryInProgress()) 0.00 : 674abd: e8 fe 89 e5 ff callq 4cd4c0 0.00 : 674ac2: 84 c0 test %al,%al 0.00 : 674ac4: 75 d2 jne 674a98 : * : * It's possible we may enter here without an xid, so it is : * essential that CreateCheckpoint waits for virtual transactions : * rather than full transactionids. : */ : MyPgXact->delayChkpt = delayChkpt = true; 0.00 : 674ac6: 48 8b 05 83 8e 50 00 mov 0x508e83(%rip),%rax # b7d950 : lsn = XLogSaveBufferForHint(buffer, buffer_std); 0.00 : 674acd: 41 0f be f5 movsbl %r13b,%esi 0.00 : 674ad1: 44 89 e7 mov %r12d,%edi 0.00 : 674ad4: 41 be 01 00 00 00 mov $0x1,%r14d : * : * It's possible we may enter here without an xid, so it is : * essential that CreateCheckpoint waits for virtual transactions : * rather than full transactionids. : */ : MyPgXact->delayChkpt = delayChkpt = true; 0.00 : 674ada: c6 40 0a 01 movb $0x1,0xa(%rax) : lsn = XLogSaveBufferForHint(buffer, buffer_std); 0.00 : 674ade: e8 1d 12 e6 ff callq 4d5d00 0.00 : 674ae3: 49 89 c5 mov %rax,%r13 0.00 : 674ae6: e9 1f ff ff ff jmpq 674a0a 0.00 : 674aeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : pgBufferUsage.shared_blks_dirtied++; : if (VacuumCostActive) : VacuumCostBalance += VacuumCostPageDirty; : } : } : } 0.00 : 674af0: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 674af4: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 674af8: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 674afc: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 674b00: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 674b04: c9 leaveq : if (!BufferIsValid(buffer)) : elog(ERROR, "bad buffer ID: %d", buffer); : : if (BufferIsLocal(buffer)) : { : MarkLocalBufferDirty(buffer); 0.00 : 674b05: e9 86 2d 00 00 jmpq 677890 0.00 : 674b0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); : UnlockBufHdr(bufHdr); : : if (delayChkpt) : MyPgXact->delayChkpt = false; 0.00 : 674b10: 48 8b 05 39 8e 50 00 mov 0x508e39(%rip),%rax # b7d950 0.00 : 674b17: c6 40 0a 00 movb $0x0,0xa(%rax) 0.00 : 674b1b: e9 4b ff ff ff jmpq 674a6b : */ : MyPgXact->delayChkpt = delayChkpt = true; : lsn = XLogSaveBufferForHint(buffer, buffer_std); : } : : LockBufHdr(bufHdr); 0.00 : 674b20: ba 70 0b 00 00 mov $0xb70,%edx 0.00 : 674b25: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 674b2a: e8 11 b5 01 00 callq 690040 0.00 : 674b2f: e9 ea fe ff ff jmpq 674a1e : { : volatile BufferDesc *bufHdr; : Page page = BufferGetPage(buffer); : : if (!BufferIsValid(buffer)) : elog(ERROR, "bad buffer ID: %d", buffer); 0.00 : 674b34: ba 20 a0 8a 00 mov $0x8aa020,%edx 0.00 : 674b39: be 20 0b 00 00 mov $0xb20,%esi 0.00 : 674b3e: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 674b43: e8 d8 68 10 00 callq 77b420 0.00 : 674b48: 31 d2 xor %edx,%edx 0.00 : 674b4a: be 5c 9d 8a 00 mov $0x8a9d5c,%esi 0.00 : 674b4f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 674b54: 31 c0 xor %eax,%eax 0.00 : 674b56: e8 d5 66 10 00 callq 77b230 0.00 : 674b5b: e8 70 49 df ff callq 4694d0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.45 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:312 21.57 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 13.73 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 11.76 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:313 9.80 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:301 7.84 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 3.92 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:313 1.96 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:301 1.96 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:312 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004bffe0 : : /* : * TransactionIdPrecedes --- is id1 logically < id2? : */ : bool : TransactionIdPrecedes(TransactionId id1, TransactionId id2) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:301 9.80 : 4bffe0: 55 push %rbp : * If either ID is a permanent XID then we can just do unsigned : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 7.84 : 4bffe1: 83 ff 02 cmp $0x2,%edi : /* : * TransactionIdPrecedes --- is id1 logically < id2? : */ : bool : TransactionIdPrecedes(TransactionId id1, TransactionId id2) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:301 1.96 : 4bffe4: 48 89 e5 mov %rsp,%rbp : * If either ID is a permanent XID then we can just do unsigned : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:308 13.73 : 4bffe7: 76 17 jbe 4c0000 21.57 : 4bffe9: 83 fe 02 cmp $0x2,%esi 0.00 : 4bffec: 76 12 jbe 4c0000 : return (id1 < id2); : : diff = (int32) (id1 - id2); : return (diff < 0); 0.00 : 4bffee: 29 f7 sub %esi,%edi : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:313 3.92 : 4bfff0: c9 leaveq : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 < id2); : : diff = (int32) (id1 - id2); : return (diff < 0); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:312 27.45 : 4bfff1: 89 f8 mov %edi,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:312 1.96 : 4bfff3: c1 e8 1f shr $0x1f,%eax : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:313 11.76 : 4bfff6: c3 retq 0.00 : 4bfff7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4bfffe: 00 00 : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 < id2); 0.00 : 4c0000: 39 f7 cmp %esi,%edi : : diff = (int32) (id1 - id2); : return (diff < 0); : } 0.00 : 4c0002: c9 leaveq : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 < id2); 0.00 : 4c0003: 0f 92 c0 setb %al Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 47.06 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3329 31.37 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3326 3.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3326 3.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3342 3.92 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3341 1.96 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3332 1.96 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3341 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006741d0 : : * be 0, or BM_VALID if we just finished reading in the page. : */ : static void : TerminateBufferIO(volatile BufferDesc *buf, bool clear_dirty, : int set_flag_bits) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3326 5.88 : 6741d0: 55 push %rbp : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/../../../../src/include/storage/s_lock.h:224 31.37 : 6741d1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6741d6: 48 89 e5 mov %rsp,%rbp 0.00 : 6741d9: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3326 3.92 : 6741dd: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 6741e1: 48 89 fb mov %rdi,%rbx 0.00 : 6741e4: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 6741e8: 41 89 f4 mov %esi,%r12d 0.00 : 6741eb: 48 83 ec 20 sub $0x20,%rsp 0.00 : 6741ef: 41 89 d5 mov %edx,%r13d : Assert(buf == InProgressBuf); : : LockBufHdr(buf); 0.00 : 6741f2: 48 8d 7f 20 lea 0x20(%rdi),%rdi 0.00 : 6741f6: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3329 47.06 : 6741f9: 84 c0 test %al,%al 0.00 : 6741fb: 75 53 jne 674250 : : Assert(buf->flags & BM_IO_IN_PROGRESS); : buf->flags &= ~(BM_IO_IN_PROGRESS | BM_IO_ERROR); 0.00 : 6741fd: 0f b7 43 14 movzwl 0x14(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3332 1.96 : 674201: 83 e0 e7 and $0xffffffe7,%eax : if (clear_dirty && !(buf->flags & BM_JUST_DIRTIED)) 0.00 : 674204: 45 84 e4 test %r12b,%r12b : Assert(buf == InProgressBuf); : : LockBufHdr(buf); : : Assert(buf->flags & BM_IO_IN_PROGRESS); : buf->flags &= ~(BM_IO_IN_PROGRESS | BM_IO_ERROR); 0.00 : 674207: 66 89 43 14 mov %ax,0x14(%rbx) : if (clear_dirty && !(buf->flags & BM_JUST_DIRTIED)) 0.00 : 67420b: 74 12 je 67421f 0.00 : 67420d: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674211: a8 20 test $0x20,%al 0.00 : 674213: 75 0a jne 67421f : buf->flags &= ~(BM_DIRTY | BM_CHECKPOINT_NEEDED); 0.00 : 674215: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674219: 24 7e and $0x7e,%al 0.00 : 67421b: 66 89 43 14 mov %ax,0x14(%rbx) : buf->flags |= set_flag_bits; 0.00 : 67421f: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674223: 44 09 e8 or %r13d,%eax 0.00 : 674226: 66 89 43 14 mov %ax,0x14(%rbx) : : UnlockBufHdr(buf); 0.00 : 67422a: c6 43 20 00 movb $0x0,0x20(%rbx) : : InProgressBuf = NULL; 0.00 : 67422e: 48 c7 05 2f 8e 50 00 movq $0x0,0x508e2f(%rip) # b7d068 0.00 : 674235: 00 00 00 00 : : LWLockRelease(buf->io_in_progress_lock); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3341 1.96 : 674239: 48 8b 7b 30 mov 0x30(%rbx),%rdi : } 0.00 : 67423d: 4c 8b 65 f0 mov -0x10(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3342 3.92 : 674241: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 674245: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 674249: c9 leaveq : : UnlockBufHdr(buf); : : InProgressBuf = NULL; : : LWLockRelease(buf->io_in_progress_lock); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3341 3.92 : 67424a: e9 51 b1 01 00 jmpq 68f3a0 0.00 : 67424f: 90 nop : TerminateBufferIO(volatile BufferDesc *buf, bool clear_dirty, : int set_flag_bits) : { : Assert(buf == InProgressBuf); : : LockBufHdr(buf); 0.00 : 674250: ba 01 0d 00 00 mov $0xd01,%edx 0.00 : 674255: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 67425a: e8 e1 bd 01 00 callq 690040 0.00 : 67425f: eb 9c jmp 6741fd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 12.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5827 12.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5835 8.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5838 8.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5934 6.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5834 6.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5838 6.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5838 6.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5839 4.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5832 4.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5839 4.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5961 4.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5961 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5827 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5827 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5833 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5834 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5835 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5838 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5838 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5857 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5908 2.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5961 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000497310 : : bool : heap_prepare_freeze_tuple(HeapTupleHeader tuple, TransactionId cutoff_xid, : TransactionId cutoff_multi, : xl_heap_freeze_tuple *frz) : : { 0.00 : 497310: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5827 12.00 : 497311: 48 89 e5 mov %rsp,%rbp 0.00 : 497314: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 497318: 4c 89 75 f0 mov %r14,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5827 2.00 : 49731c: 49 89 cd mov %rcx,%r13 0.00 : 49731f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 497323: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 497327: 49 89 fe mov %rdi,%r14 2.00 : 49732a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 49732e: 48 83 c4 80 add $0xffffffffffffff80,%rsp 0.00 : 497332: 89 75 8c mov %esi,-0x74(%rbp) 0.00 : 497335: 89 55 88 mov %edx,-0x78(%rbp) : bool changed = false; : bool freeze_xmax = false; : TransactionId xid; : : frz->frzflags = 0; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5832 4.00 : 497338: c6 41 0a 00 movb $0x0,0xa(%rcx) : frz->t_infomask2 = tuple->t_infomask2; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5833 2.00 : 49733c: 0f b7 47 12 movzwl 0x12(%rdi),%eax 0.00 : 497340: 66 89 41 06 mov %ax,0x6(%rcx) : frz->t_infomask = tuple->t_infomask; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5834 2.00 : 497344: 0f b7 47 14 movzwl 0x14(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5834 6.00 : 497348: 66 89 41 08 mov %ax,0x8(%rcx) : frz->xmax = HeapTupleHeaderGetRawXmax(tuple); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5835 2.00 : 49734c: 8b 47 04 mov 0x4(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5835 12.00 : 49734f: 89 01 mov %eax,(%rcx) : : /* Process xmin */ : xid = HeapTupleHeaderGetXmin(tuple); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5838 6.00 : 497351: 0f b7 5f 14 movzwl 0x14(%rdi),%ebx 8.00 : 497355: 89 d8 mov %ebx,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5838 2.00 : 497357: 25 00 03 00 00 and $0x300,%eax 2.00 : 49735c: 3d 00 03 00 00 cmp $0x300,%eax 0.00 : 497361: 74 07 je 49736a /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5838 6.00 : 497363: 8b 3f mov (%rdi),%edi : if (TransactionIdIsNormal(xid) && /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5839 4.00 : 497365: 83 ff 02 cmp $0x2,%edi 0.00 : 497368: 77 76 ja 4973e0 : TransactionIdPrecedes(xid, cutoff_xid)) : { : frz->t_infomask |= HEAP_XMIN_FROZEN; 0.00 : 49736a: 45 31 ff xor %r15d,%r15d : * : * Make sure to keep heap_tuple_needs_freeze in sync with this. : */ : xid = HeapTupleHeaderGetRawXmax(tuple); : : if (tuple->t_infomask & HEAP_XMAX_IS_MULTI) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5857 2.00 : 49736d: f6 c7 10 test $0x10,%bh : * freezing, too. Also, if a multi needs freezing, we cannot simply take : * it out --- if there's a live updater Xid, it needs to be kept. : * : * Make sure to keep heap_tuple_needs_freeze in sync with this. : */ : xid = HeapTupleHeaderGetRawXmax(tuple); 0.00 : 497370: 45 8b 66 04 mov 0x4(%r14),%r12d : : if (tuple->t_infomask & HEAP_XMAX_IS_MULTI) 0.00 : 497374: 0f 85 96 00 00 00 jne 497410 : else : { : Assert(flags & FRM_NOOP); : } : } : else if (TransactionIdIsNormal(xid) && 0.00 : 49737a: 41 83 fc 02 cmp $0x2,%r12d /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5908 2.00 : 49737e: 0f 87 c4 00 00 00 ja 497448 : : /* : * Old-style VACUUM FULL is gone, but we have to keep this code as long as : * we support having MOVED_OFF/MOVED_IN tuples in the database. : */ : if (tuple->t_infomask & HEAP_MOVED) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5934 8.00 : 497384: 66 f7 c3 00 c0 test $0xc000,%bx 0.00 : 497389: 74 35 je 4973c0 : { : xid = HeapTupleHeaderGetXvac(tuple); 0.00 : 49738b: 41 8b 7e 08 mov 0x8(%r14),%edi : if (TransactionIdIsNormal(xid) && 0.00 : 49738f: 83 ff 02 cmp $0x2,%edi 0.00 : 497392: 76 2c jbe 4973c0 0.00 : 497394: 8b 75 8c mov -0x74(%rbp),%esi 0.00 : 497397: e8 44 8c 02 00 callq 4bffe0 0.00 : 49739c: 84 c0 test %al,%al 0.00 : 49739e: 74 20 je 4973c0 : /* : * If a MOVED_OFF tuple is not dead, the xvac transaction must : * have failed; whereas a non-dead MOVED_IN tuple must mean the : * xvac transaction succeeded. : */ : if (tuple->t_infomask & HEAP_MOVED_OFF) 0.00 : 4973a0: 41 f6 46 15 40 testb $0x40,0x15(%r14) 0.00 : 4973a5: 0f 84 15 02 00 00 je 4975c0 : frz->frzflags |= XLH_INVALID_XVAC; 0.00 : 4973ab: 41 80 4d 0a 04 orb $0x4,0xa(%r13) : /* : * Might as well fix the hint bits too; usually XMIN_COMMITTED : * will already be set here, but there's a small chance not. : */ : Assert(!(tuple->t_infomask & HEAP_XMIN_INVALID)); : frz->t_infomask |= HEAP_XMIN_COMMITTED; 0.00 : 4973b0: 66 41 81 4d 08 00 01 orw $0x100,0x8(%r13) 0.00 : 4973b7: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4973bd: 0f 1f 00 nopl (%rax) : changed = true; : } : } : : return changed; : } 0.00 : 4973c0: 44 89 f8 mov %r15d,%eax 0.00 : 4973c3: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 4973c7: 4c 8b 65 e0 mov -0x20(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5961 4.00 : 4973cb: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4973cf: 4c 8b 75 f0 mov -0x10(%rbp),%r14 2.00 : 4973d3: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 4973d7: c9 leaveq 4.00 : 4973d8: c3 retq 0.00 : 4973d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : frz->t_infomask = tuple->t_infomask; : frz->xmax = HeapTupleHeaderGetRawXmax(tuple); : : /* Process xmin */ : xid = HeapTupleHeaderGetXmin(tuple); : if (TransactionIdIsNormal(xid) && 0.00 : 4973e0: e8 fb 8b 02 00 callq 4bffe0 0.00 : 4973e5: 84 c0 test %al,%al 0.00 : 4973e7: 74 7f je 497468 : TransactionIdPrecedes(xid, cutoff_xid)) : { : frz->t_infomask |= HEAP_XMIN_FROZEN; 0.00 : 4973e9: 66 41 81 4d 08 00 03 orw $0x300,0x8(%r13) 0.00 : 4973f0: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4973f6: 41 0f b7 5e 14 movzwl 0x14(%r14),%ebx : * freezing, too. Also, if a multi needs freezing, we cannot simply take : * it out --- if there's a live updater Xid, it needs to be kept. : * : * Make sure to keep heap_tuple_needs_freeze in sync with this. : */ : xid = HeapTupleHeaderGetRawXmax(tuple); 0.00 : 4973fb: 45 8b 66 04 mov 0x4(%r14),%r12d : : if (tuple->t_infomask & HEAP_XMAX_IS_MULTI) 0.00 : 4973ff: f6 c7 10 test $0x10,%bh 0.00 : 497402: 0f 84 72 ff ff ff je 49737a 0.00 : 497408: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49740f: 00 : *flags = 0; : : /* We should only be called in Multis */ : Assert(t_infomask & HEAP_XMAX_IS_MULTI); : : if (!MultiXactIdIsValid(multi)) 0.00 : 497410: 45 85 e4 test %r12d,%r12d 0.00 : 497413: 75 63 jne 497478 : * The tuple might be marked either XMAX_INVALID or XMAX_COMMITTED + : * LOCKED. Normalize to INVALID just to be sure no one gets confused. : * Also get rid of the HEAP_KEYS_UPDATED bit. : */ : frz->t_infomask &= ~HEAP_XMAX_BITS; : frz->t_infomask |= HEAP_XMAX_INVALID; 0.00 : 497415: 41 0f b7 45 08 movzwl 0x8(%r13),%eax : frz->t_infomask2 &= ~HEAP_HOT_UPDATED; : frz->t_infomask2 &= ~HEAP_KEYS_UPDATED; 0.00 : 49741a: 66 41 81 65 06 ff 9f andw $0x9fff,0x6(%r13) 0.00 : 497421: 41 bf 01 00 00 00 mov $0x1,%r15d : freeze_xmax = true; : } : : if (freeze_xmax) : { : frz->xmax = InvalidTransactionId; 0.00 : 497427: 41 c7 45 00 00 00 00 movl $0x0,0x0(%r13) 0.00 : 49742e: 00 : * The tuple might be marked either XMAX_INVALID or XMAX_COMMITTED + : * LOCKED. Normalize to INVALID just to be sure no one gets confused. : * Also get rid of the HEAP_KEYS_UPDATED bit. : */ : frz->t_infomask &= ~HEAP_XMAX_BITS; : frz->t_infomask |= HEAP_XMAX_INVALID; 0.00 : 49742f: 66 25 2f e3 and $0xe32f,%ax 0.00 : 497433: 80 cc 08 or $0x8,%ah 0.00 : 497436: 66 41 89 45 08 mov %ax,0x8(%r13) : frz->t_infomask2 &= ~HEAP_HOT_UPDATED; : frz->t_infomask2 &= ~HEAP_KEYS_UPDATED; 0.00 : 49743b: 41 0f b7 5e 14 movzwl 0x14(%r14),%ebx 0.00 : 497440: e9 3f ff ff ff jmpq 497384 0.00 : 497445: 0f 1f 00 nopl (%rax) : else : { : Assert(flags & FRM_NOOP); : } : } : else if (TransactionIdIsNormal(xid) && 0.00 : 497448: 8b 75 8c mov -0x74(%rbp),%esi 0.00 : 49744b: 44 89 e7 mov %r12d,%edi 0.00 : 49744e: e8 8d 8b 02 00 callq 4bffe0 0.00 : 497453: 84 c0 test %al,%al 0.00 : 497455: 75 be jne 497415 0.00 : 497457: 41 0f b7 5e 14 movzwl 0x14(%r14),%ebx 0.00 : 49745c: e9 23 ff ff ff jmpq 497384 0.00 : 497461: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : frz->t_infomask = tuple->t_infomask; : frz->xmax = HeapTupleHeaderGetRawXmax(tuple); : : /* Process xmin */ : xid = HeapTupleHeaderGetXmin(tuple); : if (TransactionIdIsNormal(xid) && /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:5839 6.00 : 497468: 41 0f b7 5e 14 movzwl 0x14(%r14),%ebx 0.00 : 49746d: 45 31 ff xor %r15d,%r15d 0.00 : 497470: e9 f8 fe ff ff jmpq 49736d 0.00 : 497475: 0f 1f 00 nopl (%rax) : { : /* Ensure infomask bits are appropriately set/reset */ : *flags |= FRM_INVALIDATE_XMAX; : return InvalidTransactionId; : } : else if (MultiXactIdPrecedes(multi, cutoff_multi)) 0.00 : 497478: 8b 75 88 mov -0x78(%rbp),%esi 0.00 : 49747b: 44 89 e7 mov %r12d,%edi 0.00 : 49747e: e8 7d f6 02 00 callq 4c6b00 0.00 : 497483: 84 c0 test %al,%al 0.00 : 497485: 74 69 je 4974f0 : */ : Assert((!(t_infomask & HEAP_LOCK_MASK) && : HEAP_XMAX_IS_LOCKED_ONLY(t_infomask)) || : !MultiXactIdIsRunning(multi, : HEAP_XMAX_IS_LOCKED_ONLY(t_infomask))); : if (HEAP_XMAX_IS_LOCKED_ONLY(t_infomask)) 0.00 : 497487: 84 db test %bl,%bl 0.00 : 497489: 78 8a js 497415 0.00 : 49748b: 89 d8 mov %ebx,%eax 0.00 : 49748d: 25 50 10 00 00 and $0x1050,%eax 0.00 : 497492: 83 f8 40 cmp $0x40,%eax 0.00 : 497495: 0f 84 7a ff ff ff je 497415 : xid = InvalidTransactionId; /* not strictly necessary */ : } : else : { : /* replace multi by update xid */ : xid = MultiXactIdGetUpdateXid(multi, t_infomask); 0.00 : 49749b: 89 de mov %ebx,%esi 0.00 : 49749d: 44 89 e7 mov %r12d,%edi 0.00 : 4974a0: e8 1b fc ff ff callq 4970c0 : : /* : * If the xid is older than the cutoff, it has to have aborted, : * otherwise the tuple would have gotten pruned away. : */ : if (TransactionIdPrecedes(xid, cutoff_xid)) 0.00 : 4974a5: 8b 75 8c mov -0x74(%rbp),%esi 0.00 : 4974a8: 89 c7 mov %eax,%edi : xid = InvalidTransactionId; /* not strictly necessary */ : } : else : { : /* replace multi by update xid */ : xid = MultiXactIdGetUpdateXid(multi, t_infomask); 0.00 : 4974aa: 89 45 bc mov %eax,-0x44(%rbp) : : /* : * If the xid is older than the cutoff, it has to have aborted, : * otherwise the tuple would have gotten pruned away. : */ : if (TransactionIdPrecedes(xid, cutoff_xid)) 0.00 : 4974ad: e8 2e 8b 02 00 callq 4bffe0 0.00 : 4974b2: 84 c0 test %al,%al 0.00 : 4974b4: 0f 85 5b ff ff ff jne 497415 : * keep the existing MultiXactId as is. : */ : if (!need_replace) : { : *flags |= FRM_NOOP; : pfree(members); 0.00 : 4974ba: bb 04 00 00 00 mov $0x4,%ebx : * locker.) Also note that the only reason we don't explicitely : * worry about HEAP_KEYS_UPDATED is because it lives in : * t_infomask2 rather than t_infomask. : */ : frz->t_infomask &= ~HEAP_XMAX_BITS; : frz->xmax = newxmax; 0.00 : 4974bf: 8b 45 bc mov -0x44(%rbp),%eax : * know the return Xid is a tuple updater (i.e. not merely a : * locker.) Also note that the only reason we don't explicitely : * worry about HEAP_KEYS_UPDATED is because it lives in : * t_infomask2 rather than t_infomask. : */ : frz->t_infomask &= ~HEAP_XMAX_BITS; 0.00 : 4974c2: 66 41 81 65 08 2f e3 andw $0xe32f,0x8(%r13) : frz->xmax = newxmax; : if (flags & FRM_MARK_COMMITTED) 0.00 : 4974c9: 83 e3 10 and $0x10,%ebx : * locker.) Also note that the only reason we don't explicitely : * worry about HEAP_KEYS_UPDATED is because it lives in : * t_infomask2 rather than t_infomask. : */ : frz->t_infomask &= ~HEAP_XMAX_BITS; : frz->xmax = newxmax; 0.00 : 4974cc: 41 89 45 00 mov %eax,0x0(%r13) : if (flags & FRM_MARK_COMMITTED) 0.00 : 4974d0: 0f 84 d4 00 00 00 je 4975aa : frz->t_infomask &= HEAP_XMAX_COMMITTED; 0.00 : 4974d6: 66 41 81 65 08 00 04 andw $0x400,0x8(%r13) 0.00 : 4974dd: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4974e3: 41 0f b7 5e 14 movzwl 0x14(%r14),%ebx 0.00 : 4974e8: e9 97 fe ff ff jmpq 497384 0.00 : 4974ed: 0f 1f 00 nopl (%rax) : * However, some member(s) of it may be below the cutoff for Xids, so we : * need to walk the whole members array to figure out what to do, if : * anything. : */ : : allow_old = !(t_infomask & HEAP_LOCK_MASK) && 0.00 : 4974f0: f6 c3 50 test $0x50,%bl 0.00 : 4974f3: 0f 85 d7 00 00 00 jne 4975d0 0.00 : 4974f9: 84 db test %bl,%bl 0.00 : 4974fb: 0f 88 4f 02 00 00 js 497750 0.00 : 497501: 81 e3 50 10 00 00 and $0x1050,%ebx 0.00 : 497507: 83 fb 40 cmp $0x40,%ebx 0.00 : 49750a: 0f 84 40 02 00 00 je 497750 : HEAP_XMAX_IS_LOCKED_ONLY(t_infomask); : nmembers = 0.00 : 497510: 31 c9 xor %ecx,%ecx 0.00 : 497512: 31 d2 xor %edx,%edx 0.00 : 497514: 48 8d 75 c0 lea -0x40(%rbp),%rsi 0.00 : 497518: 44 89 e7 mov %r12d,%edi 0.00 : 49751b: e8 b0 0c 03 00 callq 4c81d0 : GetMultiXactIdMembers(multi, &members, allow_old, : HEAP_XMAX_IS_LOCKED_ONLY(t_infomask)); : if (nmembers <= 0) 0.00 : 497520: 85 c0 test %eax,%eax : * anything. : */ : : allow_old = !(t_infomask & HEAP_LOCK_MASK) && : HEAP_XMAX_IS_LOCKED_ONLY(t_infomask); : nmembers = 0.00 : 497522: 89 45 b8 mov %eax,-0x48(%rbp) : GetMultiXactIdMembers(multi, &members, allow_old, : HEAP_XMAX_IS_LOCKED_ONLY(t_infomask)); : if (nmembers <= 0) 0.00 : 497525: 0f 8e ea fe ff ff jle 497415 0.00 : 49752b: 45 31 e4 xor %r12d,%r12d 0.00 : 49752e: 31 db xor %ebx,%ebx : : /* is there anything older than the cutoff? */ : need_replace = false; : for (i = 0; i < nmembers; i++) : { : if (TransactionIdPrecedes(members[i].xid, cutoff_xid)) 0.00 : 497530: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 497534: 8b 75 8c mov -0x74(%rbp),%esi 0.00 : 497537: 8b 3c 18 mov (%rax,%rbx,1),%edi 0.00 : 49753a: e8 a1 8a 02 00 callq 4bffe0 0.00 : 49753f: 84 c0 test %al,%al 0.00 : 497541: 0f 85 b1 00 00 00 jne 4975f8 : return InvalidTransactionId; : } : : /* is there anything older than the cutoff? */ : need_replace = false; : for (i = 0; i < nmembers; i++) 0.00 : 497547: 41 83 c4 01 add $0x1,%r12d 0.00 : 49754b: 48 83 c3 08 add $0x8,%rbx 0.00 : 49754f: 44 39 65 b8 cmp %r12d,-0x48(%rbp) 0.00 : 497553: 7f db jg 497530 : * keep the existing MultiXactId as is. : */ : if (!need_replace) : { : *flags |= FRM_NOOP; : pfree(members); 0.00 : 497555: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 497559: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 49755e: e8 1d 16 30 00 callq 798b80 0.00 : 497563: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%rbp) : frz->xmax = newxmax; : if (flags & FRM_MARK_COMMITTED) : frz->t_infomask &= HEAP_XMAX_COMMITTED; : changed = true; : } : else if (flags & FRM_RETURN_IS_MULTI) 0.00 : 49756a: 83 e3 08 and $0x8,%ebx 0.00 : 49756d: 0f 84 e4 fe ff ff je 497457 : * We can't use GetMultiXactIdHintBits directly on the new multi : * here; that routine initializes the masks to all zeroes, which : * would lose other bits we need. Doing it this way ensures all : * unrelated bits remain untouched. : */ : frz->t_infomask &= ~HEAP_XMAX_BITS; 0.00 : 497573: 66 41 81 65 08 2f e3 andw $0xe32f,0x8(%r13) : frz->t_infomask2 &= ~HEAP_KEYS_UPDATED; 0.00 : 49757a: 66 41 81 65 06 ff df andw $0xdfff,0x6(%r13) : GetMultiXactIdHintBits(newxmax, &newbits, &newbits2); 0.00 : 497581: 48 8d 55 c0 lea -0x40(%rbp),%rdx 0.00 : 497585: 48 8d 75 ce lea -0x32(%rbp),%rsi 0.00 : 497589: 8b 7d bc mov -0x44(%rbp),%edi 0.00 : 49758c: e8 8f fc ff ff callq 497220 : frz->t_infomask |= newbits; 0.00 : 497591: 0f b7 45 ce movzwl -0x32(%rbp),%eax : frz->t_infomask2 |= newbits2; : : frz->xmax = newxmax; 0.00 : 497595: 8b 55 bc mov -0x44(%rbp),%edx : * unrelated bits remain untouched. : */ : frz->t_infomask &= ~HEAP_XMAX_BITS; : frz->t_infomask2 &= ~HEAP_KEYS_UPDATED; : GetMultiXactIdHintBits(newxmax, &newbits, &newbits2); : frz->t_infomask |= newbits; 0.00 : 497598: 66 41 09 45 08 or %ax,0x8(%r13) : frz->t_infomask2 |= newbits2; 0.00 : 49759d: 0f b7 45 c0 movzwl -0x40(%rbp),%eax 0.00 : 4975a1: 66 41 09 45 06 or %ax,0x6(%r13) : : frz->xmax = newxmax; 0.00 : 4975a6: 41 89 55 00 mov %edx,0x0(%r13) 0.00 : 4975aa: 41 0f b7 5e 14 movzwl 0x14(%r14),%ebx 0.00 : 4975af: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 4975b5: e9 ca fd ff ff jmpq 497384 0.00 : 4975ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * xvac transaction succeeded. : */ : if (tuple->t_infomask & HEAP_MOVED_OFF) : frz->frzflags |= XLH_INVALID_XVAC; : else : frz->frzflags |= XLH_FREEZE_XVAC; 0.00 : 4975c0: 41 80 4d 0a 02 orb $0x2,0xa(%r13) 0.00 : 4975c5: e9 e6 fd ff ff jmpq 4973b0 0.00 : 4975ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * anything. : */ : : allow_old = !(t_infomask & HEAP_LOCK_MASK) && : HEAP_XMAX_IS_LOCKED_ONLY(t_infomask); : nmembers = 0.00 : 4975d0: 84 db test %bl,%bl 0.00 : 4975d2: 78 12 js 4975e6 0.00 : 4975d4: 81 e3 50 10 00 00 and $0x1050,%ebx 0.00 : 4975da: 83 fb 40 cmp $0x40,%ebx 0.00 : 4975dd: 0f 1f 00 nopl (%rax) 0.00 : 4975e0: 0f 85 2a ff ff ff jne 497510 0.00 : 4975e6: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4975eb: 31 d2 xor %edx,%edx 0.00 : 4975ed: e9 22 ff ff ff jmpq 497514 0.00 : 4975f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * If the multi needs to be updated, figure out which members do we need : * to keep. : */ : nnewmembers = 0; : newmembers = palloc(sizeof(MultiXactMember) * nmembers); 0.00 : 4975f8: 48 63 7d b8 movslq -0x48(%rbp),%rdi 0.00 : 4975fc: 31 db xor %ebx,%ebx 0.00 : 4975fe: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 497602: e8 49 17 30 00 callq 798d50 0.00 : 497607: 48 89 45 a8 mov %rax,-0x58(%rbp) : has_lockers = false; : update_xid = InvalidTransactionId; : update_committed = false; : : for (i = 0; i < nmembers; i++) 0.00 : 49760b: 8b 45 b8 mov -0x48(%rbp),%eax : /* : * If the multi needs to be updated, figure out which members do we need : * to keep. : */ : nnewmembers = 0; : newmembers = palloc(sizeof(MultiXactMember) * nmembers); 0.00 : 49760e: c7 45 b4 00 00 00 00 movl $0x0,-0x4c(%rbp) 0.00 : 497615: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%rbp) 0.00 : 49761c: c6 45 a7 00 movb $0x0,-0x59(%rbp) 0.00 : 497620: c6 45 90 00 movb $0x0,-0x70(%rbp) : has_lockers = false; : update_xid = InvalidTransactionId; : update_committed = false; : : for (i = 0; i < nmembers; i++) 0.00 : 497624: 83 e8 01 sub $0x1,%eax 0.00 : 497627: 48 8d 04 c5 08 00 00 lea 0x8(,%rax,8),%rax 0.00 : 49762e: 00 0.00 : 49762f: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 497633: eb 43 jmp 497678 0.00 : 497635: 0f 1f 00 nopl (%rax) : /* : * Determine whether to keep this member or ignore it. : */ : if (ISUPDATE_from_mxstatus(members[i].status)) : { : TransactionId xid = members[i].xid; 0.00 : 497638: 44 8b 20 mov (%rax),%r12d : * : * As with all tuple visibility routines, it's critical to test : * TransactionIdIsInProgress before TransactionIdDidCommit, : * because of race conditions explained in detail in tqual.c. : */ : if (TransactionIdIsCurrentTransactionId(xid) || 0.00 : 49763b: 44 89 e7 mov %r12d,%edi 0.00 : 49763e: e8 5d ce 02 00 callq 4c44a0 0.00 : 497643: 84 c0 test %al,%al 0.00 : 497645: 74 69 je 4976b0 : TransactionIdIsInProgress(xid)) : { : Assert(!TransactionIdIsValid(update_xid)); : update_xid = xid; : } : else if (TransactionIdDidCommit(xid)) 0.00 : 497647: 44 89 65 bc mov %r12d,-0x44(%rbp) : * members of the new Multi, in case we end up using that. (We : * might still decide to use only an update Xid and not a multi, : * but it's easier to maintain the list as we walk the old members : * list.) : */ : if (TransactionIdIsValid(update_xid)) 0.00 : 49764b: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 49764e: 85 c0 test %eax,%eax 0.00 : 497650: 74 18 je 49766a : newmembers[nnewmembers++] = members[i]; 0.00 : 497652: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 497656: 48 63 45 b4 movslq -0x4c(%rbp),%rax 0.00 : 49765a: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 49765e: 48 8b 14 1a mov (%rdx,%rbx,1),%rdx 0.00 : 497662: 48 89 14 c1 mov %rdx,(%rcx,%rax,8) 0.00 : 497666: 83 45 b4 01 addl $0x1,-0x4c(%rbp) : if (TransactionIdIsCurrentTransactionId(members[i].xid) || : TransactionIdIsInProgress(members[i].xid)) : { : /* running locker cannot possibly be older than the cutoff */ : Assert(!TransactionIdPrecedes(members[i].xid, cutoff_xid)); : newmembers[nnewmembers++] = members[i]; 0.00 : 49766a: 48 83 c3 08 add $0x8,%rbx : newmembers = palloc(sizeof(MultiXactMember) * nmembers); : has_lockers = false; : update_xid = InvalidTransactionId; : update_committed = false; : : for (i = 0; i < nmembers; i++) 0.00 : 49766e: 48 3b 5d 80 cmp -0x80(%rbp),%rbx 0.00 : 497672: 0f 84 88 00 00 00 je 497700 : { : /* : * Determine whether to keep this member or ignore it. : */ : if (ISUPDATE_from_mxstatus(members[i].status)) 0.00 : 497678: 48 89 d8 mov %rbx,%rax 0.00 : 49767b: 48 03 45 c0 add -0x40(%rbp),%rax 0.00 : 49767f: 83 78 04 03 cmpl $0x3,0x4(%rax) 0.00 : 497683: 77 b3 ja 497638 : newmembers[nnewmembers++] = members[i]; : } : else : { : /* We only keep lockers if they are still running */ : if (TransactionIdIsCurrentTransactionId(members[i].xid) || 0.00 : 497685: 8b 38 mov (%rax),%edi 0.00 : 497687: e8 14 ce 02 00 callq 4c44a0 0.00 : 49768c: 84 c0 test %al,%al 0.00 : 49768e: 74 58 je 4976e8 : TransactionIdIsInProgress(members[i].xid)) : { : /* running locker cannot possibly be older than the cutoff */ : Assert(!TransactionIdPrecedes(members[i].xid, cutoff_xid)); : newmembers[nnewmembers++] = members[i]; 0.00 : 497690: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 497694: 48 63 45 b4 movslq -0x4c(%rbp),%rax 0.00 : 497698: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 49769c: 48 8b 14 1a mov (%rdx,%rbx,1),%rdx 0.00 : 4976a0: 48 89 14 c1 mov %rdx,(%rcx,%rax,8) 0.00 : 4976a4: c6 45 a7 01 movb $0x1,-0x59(%rbp) 0.00 : 4976a8: 83 45 b4 01 addl $0x1,-0x4c(%rbp) 0.00 : 4976ac: eb bc jmp 49766a 0.00 : 4976ae: 66 90 xchg %ax,%ax : * : * As with all tuple visibility routines, it's critical to test : * TransactionIdIsInProgress before TransactionIdDidCommit, : * because of race conditions explained in detail in tqual.c. : */ : if (TransactionIdIsCurrentTransactionId(xid) || 0.00 : 4976b0: 44 89 e7 mov %r12d,%edi 0.00 : 4976b3: e8 f8 a5 1e 00 callq 681cb0 0.00 : 4976b8: 84 c0 test %al,%al 0.00 : 4976ba: 75 8b jne 497647 : TransactionIdIsInProgress(xid)) : { : Assert(!TransactionIdIsValid(update_xid)); : update_xid = xid; : } : else if (TransactionIdDidCommit(xid)) 0.00 : 4976bc: 44 89 e7 mov %r12d,%edi 0.00 : 4976bf: e8 1c 8c 02 00 callq 4c02e0 0.00 : 4976c4: 84 c0 test %al,%al 0.00 : 4976c6: 0f b6 45 90 movzbl -0x70(%rbp),%eax 0.00 : 4976ca: 44 0f 44 65 bc cmove -0x44(%rbp),%r12d 0.00 : 4976cf: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4976d4: 0f 44 d0 cmove %eax,%edx 0.00 : 4976d7: 44 89 65 bc mov %r12d,-0x44(%rbp) 0.00 : 4976db: 88 55 90 mov %dl,-0x70(%rbp) 0.00 : 4976de: e9 68 ff ff ff jmpq 49764b 0.00 : 4976e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : newmembers[nnewmembers++] = members[i]; : } : else : { : /* We only keep lockers if they are still running */ : if (TransactionIdIsCurrentTransactionId(members[i].xid) || 0.00 : 4976e8: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 4976ec: 8b 3c 18 mov (%rax,%rbx,1),%edi 0.00 : 4976ef: e8 bc a5 1e 00 callq 681cb0 0.00 : 4976f4: 84 c0 test %al,%al 0.00 : 4976f6: 0f 84 6e ff ff ff je 49766a 0.00 : 4976fc: eb 92 jmp 497690 0.00 : 4976fe: 66 90 xchg %ax,%ax : has_lockers = true; : } : } : } : : pfree(members); 0.00 : 497700: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 497704: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 497708: e8 73 14 30 00 callq 798b80 : : if (nnewmembers == 0) 0.00 : 49770d: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 497710: 85 c0 test %eax,%eax 0.00 : 497712: 74 4c je 497760 : { : /* nothing worth keeping!? Tell caller to remove the whole thing */ : *flags |= FRM_INVALIDATE_XMAX; : xid = InvalidTransactionId; : } : else if (TransactionIdIsValid(update_xid) && !has_lockers) 0.00 : 497714: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 497717: 85 c0 test %eax,%eax 0.00 : 497719: 75 53 jne 49776e : { : /* : * Create a new multixact with the surviving members of the previous : * one, to set as new Xmax in the tuple. : */ : xid = MultiXactIdCreateFromMembers(nnewmembers, newmembers); 0.00 : 49771b: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 49771f: 8b 7d b4 mov -0x4c(%rbp),%edi 0.00 : 497722: bb 08 00 00 00 mov $0x8,%ebx 0.00 : 497727: e8 94 13 03 00 callq 4c8ac0 0.00 : 49772c: 89 45 bc mov %eax,-0x44(%rbp) : *flags |= FRM_RETURN_IS_MULTI; : } : : pfree(newmembers); 0.00 : 49772f: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 497733: e8 48 14 30 00 callq 798b80 : newxmax = FreezeMultiXactId(xid, tuple->t_infomask, : cutoff_xid, cutoff_multi, &flags); : : if (flags & FRM_INVALIDATE_XMAX) : freeze_xmax = true; : else if (flags & FRM_RETURN_IS_XID) 0.00 : 497738: f6 c3 04 test $0x4,%bl 0.00 : 49773b: 0f 84 29 fe ff ff je 49756a 0.00 : 497741: e9 79 fd ff ff jmpq 4974bf 0.00 : 497746: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 49774d: 00 00 00 : * anything. : */ : : allow_old = !(t_infomask & HEAP_LOCK_MASK) && : HEAP_XMAX_IS_LOCKED_ONLY(t_infomask); : nmembers = 0.00 : 497750: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 497755: ba 01 00 00 00 mov $0x1,%edx 0.00 : 49775a: e9 b5 fd ff ff jmpq 497514 0.00 : 49775f: 90 nop : */ : xid = MultiXactIdCreateFromMembers(nnewmembers, newmembers); : *flags |= FRM_RETURN_IS_MULTI; : } : : pfree(newmembers); 0.00 : 497760: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 497764: e8 17 14 30 00 callq 798b80 0.00 : 497769: e9 a7 fc ff ff jmpq 497415 : { : /* nothing worth keeping!? Tell caller to remove the whole thing */ : *flags |= FRM_INVALIDATE_XMAX; : xid = InvalidTransactionId; : } : else if (TransactionIdIsValid(update_xid) && !has_lockers) 0.00 : 49776e: 80 7d a7 00 cmpb $0x0,-0x59(%rbp) 0.00 : 497772: 75 a7 jne 49771b : * much; moreover, the case with the single updater is more : * interesting, because those are longer-lived.) : */ : Assert(nnewmembers == 1); : *flags |= FRM_RETURN_IS_XID; : if (update_committed) 0.00 : 497774: 80 7d 90 01 cmpb $0x1,-0x70(%rbp) 0.00 : 497778: 19 db sbb %ebx,%ebx 0.00 : 49777a: 83 e3 f0 and $0xfffffff0,%ebx 0.00 : 49777d: 83 c3 14 add $0x14,%ebx 0.00 : 497780: eb ad jmp 49772f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 14.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:57 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:52 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:57 10.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 8.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:48 6.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 2.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 2.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 2.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 2.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 2.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 2.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079c830 : : * we assume that the FunctionCallInfoData was already mostly set up by : * PrepareSortSupportComparisonShim. : */ : static int : comparison_shim(Datum x, Datum y, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 6.00 : 79c830: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:44 2.00 : 79c831: 48 89 e5 mov %rsp,%rbp 0.00 : 79c834: 53 push %rbx 2.00 : 79c835: 48 83 ec 08 sub $0x8,%rsp : SortShimExtra *extra = (SortShimExtra *) ssup->ssup_extra; 0.00 : 79c839: 48 8b 5a 10 mov 0x10(%rdx),%rbx : extra->fcinfo.arg[1] = y; : : /* just for paranoia's sake, we reset isnull each time */ : extra->fcinfo.isnull = false; : : result = FunctionCallInvoke(&extra->fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 2.00 : 79c83d: 48 8b 03 mov (%rbx),%rax : comparison_shim(Datum x, Datum y, SortSupport ssup) : { : SortShimExtra *extra = (SortShimExtra *) ssup->ssup_extra; : Datum result; : : extra->fcinfo.arg[0] = x; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:48 8.00 : 79c840: 48 89 7b 20 mov %rdi,0x20(%rbx) : extra->fcinfo.arg[1] = y; : : /* just for paranoia's sake, we reset isnull each time */ : extra->fcinfo.isnull = false; : : result = FunctionCallInvoke(&extra->fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 30.00 : 79c844: 48 89 df mov %rbx,%rdi : { : SortShimExtra *extra = (SortShimExtra *) ssup->ssup_extra; : Datum result; : : extra->fcinfo.arg[0] = x; : extra->fcinfo.arg[1] = y; 0.00 : 79c847: 48 89 73 28 mov %rsi,0x28(%rbx) : : /* just for paranoia's sake, we reset isnull each time */ : extra->fcinfo.isnull = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:52 10.00 : 79c84b: c6 43 1c 00 movb $0x0,0x1c(%rbx) : : result = FunctionCallInvoke(&extra->fcinfo); /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:54 2.00 : 79c84f: ff 10 callq *(%rax) : : /* Check for null result, since caller is clearly not expecting one */ : if (extra->fcinfo.isnull) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:57 14.00 : 79c851: 80 7b 1c 00 cmpb $0x0,0x1c(%rbx) 10.00 : 79c855: 75 07 jne 79c85e : elog(ERROR, "function %u returned NULL", extra->flinfo.fn_oid); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 2.00 : 79c857: 48 83 c4 08 add $0x8,%rsp 0.00 : 79c85b: 5b pop %rbx 2.00 : 79c85c: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/sortsupport.c:61 10.00 : 79c85d: c3 retq : : result = FunctionCallInvoke(&extra->fcinfo); : : /* Check for null result, since caller is clearly not expecting one */ : if (extra->fcinfo.isnull) : elog(ERROR, "function %u returned NULL", extra->flinfo.fn_oid); 0.00 : 79c85e: ba 70 29 8e 00 mov $0x8e2970,%edx 0.00 : 79c863: be 3a 00 00 00 mov $0x3a,%esi 0.00 : 79c868: bf 21 29 8e 00 mov $0x8e2921,%edi 0.00 : 79c86d: e8 ae eb fd ff callq 77b420 0.00 : 79c872: 8b 93 b0 03 00 00 mov 0x3b0(%rbx),%edx 0.00 : 79c878: be 97 4c 8d 00 mov $0x8d4c97,%esi 0.00 : 79c87d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79c882: 31 c0 xor %eax,%eax 0.00 : 79c884: e8 a7 e9 fd ff callq 77b230 0.00 : 79c889: e8 42 cc cc ff callq 4694d0 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 24.00 ??:0 16.00 ??:0 12.00 ??:0 12.00 ??:0 6.00 ??:0 6.00 ??:0 6.00 ??:0 4.00 ??:0 4.00 ??:0 4.00 ??:0 2.00 ??:0 2.00 ??:0 2.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000114d50 <__strncmp_sse42>: ??:0 4.00 : 114d50: 48 85 d2 test %rdx,%rdx 0.00 : 114d53: 0f 84 9b 11 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 2.00 : 114d59: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 114d5d: 0f 84 9d 11 00 00 je 115f00 <__strncmp_sse42+0x11b0> 0.00 : 114d63: 49 89 d3 mov %rdx,%r11 0.00 : 114d66: 89 f1 mov %esi,%ecx ??:0 6.00 : 114d68: 89 f8 mov %edi,%eax 0.00 : 114d6a: 48 83 e1 3f and $0x3f,%rcx 0.00 : 114d6e: 48 83 e0 3f and $0x3f,%rax 0.00 : 114d72: 83 f9 30 cmp $0x30,%ecx 0.00 : 114d75: 77 49 ja 114dc0 <__strncmp_sse42+0x70> ??:0 4.00 : 114d77: 83 f8 30 cmp $0x30,%eax 0.00 : 114d7a: 77 44 ja 114dc0 <__strncmp_sse42+0x70> 0.00 : 114d7c: f3 0f 6f 0f movdqu (%rdi),%xmm1 0.00 : 114d80: f3 0f 6f 16 movdqu (%rsi),%xmm2 0.00 : 114d84: 66 0f ef c0 pxor %xmm0,%xmm0 4.00 : 114d88: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114d8c: 66 0f 74 ca pcmpeqb %xmm2,%xmm1 0.00 : 114d90: 66 0f f8 c8 psubb %xmm0,%xmm1 ??:0 12.00 : 114d94: 66 0f d7 d1 pmovmskb %xmm1,%edx 6.00 : 114d98: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 114d9e: 0f 85 3c 11 00 00 jne 115ee0 <__strncmp_sse42+0x1190> 0.00 : 114da4: 49 83 eb 10 sub $0x10,%r11 0.00 : 114da8: 0f 86 46 11 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114dae: 48 83 c6 10 add $0x10,%rsi 0.00 : 114db2: 48 83 c7 10 add $0x10,%rdi 0.00 : 114db6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114dbd: 00 00 00 0.00 : 114dc0: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 114dc4: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 114dc8: ba ff ff 00 00 mov $0xffff,%edx 0.00 : 114dcd: 45 31 c0 xor %r8d,%r8d 0.00 : 114dd0: 83 e1 0f and $0xf,%ecx 0.00 : 114dd3: 83 e0 0f and $0xf,%eax 0.00 : 114dd6: 39 c1 cmp %eax,%ecx 0.00 : 114dd8: 74 26 je 114e00 <__strncmp_sse42+0xb0> 0.00 : 114dda: 77 07 ja 114de3 <__strncmp_sse42+0x93> 0.00 : 114ddc: 41 89 d0 mov %edx,%r8d 0.00 : 114ddf: 91 xchg %eax,%ecx 0.00 : 114de0: 48 87 f7 xchg %rsi,%rdi 0.00 : 114de3: 4c 8d 48 0f lea 0xf(%rax),%r9 0.00 : 114de7: 49 29 c9 sub %rcx,%r9 0.00 : 114dea: 4c 8d 15 af ed 02 00 lea 0x2edaf(%rip),%r10 # 143ba0 0.00 : 114df1: 4f 63 0c 8a movslq (%r10,%r9,4),%r9 0.00 : 114df5: 4f 8d 14 0a lea (%r10,%r9,1),%r10 0.00 : 114df9: 41 ff e2 jmpq *%r10 0.00 : 114dfc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 114e00: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 114e04: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114e08: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114e0c: 66 0f 74 0f pcmpeqb (%rdi),%xmm1 0.00 : 114e10: 66 0f f8 c8 psubb %xmm0,%xmm1 0.00 : 114e14: 66 44 0f d7 c9 pmovmskb %xmm1,%r9d 0.00 : 114e19: d3 ea shr %cl,%edx 0.00 : 114e1b: 41 d3 e9 shr %cl,%r9d 0.00 : 114e1e: 44 29 ca sub %r9d,%edx 0.00 : 114e21: 0f 85 a9 10 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 114e27: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 114e2c: 4d 39 cb cmp %r9,%r11 0.00 : 114e2f: 0f 82 bf 10 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114e35: 4d 85 c9 test %r9,%r9 0.00 : 114e38: 0f 84 b6 10 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114e3e: 4d 89 cb mov %r9,%r11 0.00 : 114e41: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 114e48: 49 c7 c1 10 00 00 00 mov $0x10,%r9 0.00 : 114e4f: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114e53: 48 89 ca mov %rcx,%rdx 0.00 : 114e56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114e5d: 00 00 00 0.00 : 114e60: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114e65: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114e6c: 48 8d 52 10 lea 0x10(%rdx),%rdx 0.00 : 114e70: 76 2e jbe 114ea0 <__strncmp_sse42+0x150> 0.00 : 114e72: 49 83 eb 10 sub $0x10,%r11 0.00 : 114e76: 0f 86 78 10 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114e7c: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114e81: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114e88: 48 8d 52 10 lea 0x10(%rdx),%rdx 0.00 : 114e8c: 76 12 jbe 114ea0 <__strncmp_sse42+0x150> 0.00 : 114e8e: 49 83 eb 10 sub $0x10,%r11 0.00 : 114e92: 0f 86 5c 10 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114e98: eb c6 jmp 114e60 <__strncmp_sse42+0x110> 0.00 : 114e9a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 114ea0: 0f 83 4e 10 00 00 jae 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114ea6: 49 29 cb sub %rcx,%r11 0.00 : 114ea9: 0f 86 45 10 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114eaf: 48 8d 4c 0a f0 lea -0x10(%rdx,%rcx,1),%rcx 0.00 : 114eb4: 0f b6 04 0f movzbl (%rdi,%rcx,1),%eax 0.00 : 114eb8: 0f b6 14 0e movzbl (%rsi,%rcx,1),%edx 0.00 : 114ebc: 29 d0 sub %edx,%eax 0.00 : 114ebe: c3 retq 0.00 : 114ebf: 90 nop 0.00 : 114ec0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114ec4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114ec8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 114ecc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114ed0: 66 0f 73 fa 0f pslldq $0xf,%xmm2 0.00 : 114ed5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114ed9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 114edd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114ee2: d3 ea shr %cl,%edx 0.00 : 114ee4: 41 d3 e9 shr %cl,%r9d 0.00 : 114ee7: 44 29 ca sub %r9d,%edx 0.00 : 114eea: 0f 85 e0 0f 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 114ef0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 114ef4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 114ef9: 4d 39 cb cmp %r9,%r11 0.00 : 114efc: 0f 82 f2 0f 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114f02: 4d 85 c9 test %r9,%r9 0.00 : 114f05: 0f 84 e9 0f 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114f0b: 4d 89 cb mov %r9,%r11 0.00 : 114f0e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114f12: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 114f19: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 114f1f: 4c 8d 57 01 lea 0x1(%rdi),%r10 0.00 : 114f23: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 114f2a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114f31: 48 89 ca mov %rcx,%rdx 0.00 : 114f34: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 114f3b: 00 00 00 00 00 0.00 : 114f40: 49 83 c2 10 add $0x10,%r10 0.00 : 114f44: 7f 5a jg 114fa0 <__strncmp_sse42+0x250> 0.00 : 114f46: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114f4b: 66 0f 3a 0f 44 17 f0 palignr $0x1,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114f52: 01 0.00 : 114f53: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114f5a: 0f 86 50 0f 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 114f60: 49 83 eb 10 sub $0x10,%r11 0.00 : 114f64: 0f 86 8a 0f 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114f6a: 48 83 c2 10 add $0x10,%rdx 0.00 : 114f6e: 49 83 c2 10 add $0x10,%r10 0.00 : 114f72: 7f 2c jg 114fa0 <__strncmp_sse42+0x250> 0.00 : 114f74: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 114f79: 66 0f 3a 0f 44 17 f0 palignr $0x1,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 114f80: 01 0.00 : 114f81: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 114f88: 0f 86 22 0f 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 114f8e: 49 83 eb 10 sub $0x10,%r11 0.00 : 114f92: 0f 86 5c 0f 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 114f98: 48 83 c2 10 add $0x10,%rdx 0.00 : 114f9c: eb a2 jmp 114f40 <__strncmp_sse42+0x1f0> 0.00 : 114f9e: 66 90 xchg %ax,%ax 0.00 : 114fa0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 114fa7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 114fad: 66 0f 73 d8 01 psrldq $0x1,%xmm0 0.00 : 114fb2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 114fb8: 4c 39 d9 cmp %r11,%rcx 0.00 : 114fbb: 0f 83 e1 0e 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 114fc1: 83 f9 0e cmp $0xe,%ecx 0.00 : 114fc4: 77 ae ja 114f74 <__strncmp_sse42+0x224> 0.00 : 114fc6: e9 d7 0e 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 114fcb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 114fd0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 114fd4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 114fd8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 114fdc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 114fe0: 66 0f 73 fa 0e pslldq $0xe,%xmm2 0.00 : 114fe5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 114fe9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 114fed: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 114ff2: d3 ea shr %cl,%edx 0.00 : 114ff4: 41 d3 e9 shr %cl,%r9d 0.00 : 114ff7: 44 29 ca sub %r9d,%edx 0.00 : 114ffa: 0f 85 d0 0e 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115000: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115004: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115009: 4d 39 cb cmp %r9,%r11 0.00 : 11500c: 0f 82 e2 0e 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115012: 4d 85 c9 test %r9,%r9 0.00 : 115015: 0f 84 d9 0e 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11501b: 4d 89 cb mov %r9,%r11 0.00 : 11501e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115022: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115029: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 11502f: 4c 8d 57 02 lea 0x2(%rdi),%r10 0.00 : 115033: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11503a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115041: 48 89 ca mov %rcx,%rdx 0.00 : 115044: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11504b: 00 00 00 00 00 0.00 : 115050: 49 83 c2 10 add $0x10,%r10 0.00 : 115054: 7f 5a jg 1150b0 <__strncmp_sse42+0x360> 0.00 : 115056: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11505b: 66 0f 3a 0f 44 17 f0 palignr $0x2,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115062: 02 0.00 : 115063: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11506a: 0f 86 40 0e 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115070: 49 83 eb 10 sub $0x10,%r11 0.00 : 115074: 0f 86 7a 0e 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11507a: 48 83 c2 10 add $0x10,%rdx 0.00 : 11507e: 49 83 c2 10 add $0x10,%r10 0.00 : 115082: 7f 2c jg 1150b0 <__strncmp_sse42+0x360> 0.00 : 115084: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115089: 66 0f 3a 0f 44 17 f0 palignr $0x2,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115090: 02 0.00 : 115091: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115098: 0f 86 12 0e 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 11509e: 49 83 eb 10 sub $0x10,%r11 0.00 : 1150a2: 0f 86 4c 0e 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1150a8: 48 83 c2 10 add $0x10,%rdx 0.00 : 1150ac: eb a2 jmp 115050 <__strncmp_sse42+0x300> 0.00 : 1150ae: 66 90 xchg %ax,%ax 0.00 : 1150b0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1150b7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1150bd: 66 0f 73 d8 02 psrldq $0x2,%xmm0 0.00 : 1150c2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1150c8: 4c 39 d9 cmp %r11,%rcx 0.00 : 1150cb: 0f 83 d1 0d 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1150d1: 83 f9 0d cmp $0xd,%ecx 0.00 : 1150d4: 77 80 ja 115056 <__strncmp_sse42+0x306> 0.00 : 1150d6: e9 c7 0d 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1150db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1150e0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1150e4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 1150e8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 1150ec: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 1150f0: 66 0f 73 fa 0d pslldq $0xd,%xmm2 0.00 : 1150f5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 1150f9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 1150fd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115102: d3 ea shr %cl,%edx 0.00 : 115104: 41 d3 e9 shr %cl,%r9d 0.00 : 115107: 44 29 ca sub %r9d,%edx 0.00 : 11510a: 0f 85 c0 0d 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115110: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115114: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115119: 4d 39 cb cmp %r9,%r11 0.00 : 11511c: 0f 82 d2 0d 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115122: 4d 85 c9 test %r9,%r9 0.00 : 115125: 0f 84 c9 0d 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11512b: 4d 89 cb mov %r9,%r11 0.00 : 11512e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115132: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115139: 41 b9 03 00 00 00 mov $0x3,%r9d 0.00 : 11513f: 4c 8d 57 03 lea 0x3(%rdi),%r10 0.00 : 115143: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11514a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115151: 48 89 ca mov %rcx,%rdx 0.00 : 115154: 49 83 c2 10 add $0x10,%r10 0.00 : 115158: 7f 66 jg 1151c0 <__strncmp_sse42+0x470> 0.00 : 11515a: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11515f: 66 0f 3a 0f 44 17 f0 palignr $0x3,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115166: 03 0.00 : 115167: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11516e: 0f 86 3c 0d 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115174: 49 83 eb 10 sub $0x10,%r11 0.00 : 115178: 0f 86 76 0d 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11517e: 48 83 c2 10 add $0x10,%rdx 0.00 : 115182: 49 83 c2 10 add $0x10,%r10 0.00 : 115186: 7f 38 jg 1151c0 <__strncmp_sse42+0x470> 0.00 : 115188: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11518d: 66 0f 3a 0f 44 17 f0 palignr $0x3,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115194: 03 0.00 : 115195: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11519c: 0f 86 0e 0d 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1151a2: 49 83 eb 10 sub $0x10,%r11 0.00 : 1151a6: 0f 86 48 0d 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1151ac: 48 83 c2 10 add $0x10,%rdx 0.00 : 1151b0: eb a2 jmp 115154 <__strncmp_sse42+0x404> 0.00 : 1151b2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1151b9: 1f 84 00 00 00 00 00 0.00 : 1151c0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1151c7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1151cd: 66 0f 73 d8 03 psrldq $0x3,%xmm0 0.00 : 1151d2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1151d8: 4c 39 d9 cmp %r11,%rcx 0.00 : 1151db: 0f 83 c1 0c 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1151e1: 83 f9 0c cmp $0xc,%ecx 0.00 : 1151e4: 0f 87 70 ff ff ff ja 11515a <__strncmp_sse42+0x40a> 0.00 : 1151ea: e9 b3 0c 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1151ef: 90 nop 0.00 : 1151f0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1151f4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 1151f8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 1151fc: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115200: 66 0f 73 fa 0c pslldq $0xc,%xmm2 0.00 : 115205: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115209: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11520d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115212: d3 ea shr %cl,%edx 0.00 : 115214: 41 d3 e9 shr %cl,%r9d 0.00 : 115217: 44 29 ca sub %r9d,%edx 0.00 : 11521a: 0f 85 b0 0c 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115220: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115224: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115229: 4d 39 cb cmp %r9,%r11 0.00 : 11522c: 0f 82 c2 0c 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115232: 4d 85 c9 test %r9,%r9 0.00 : 115235: 0f 84 b9 0c 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11523b: 4d 89 cb mov %r9,%r11 0.00 : 11523e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115242: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115249: 41 b9 04 00 00 00 mov $0x4,%r9d 0.00 : 11524f: 4c 8d 57 04 lea 0x4(%rdi),%r10 0.00 : 115253: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11525a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115261: 48 89 ca mov %rcx,%rdx 0.00 : 115264: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11526b: 00 00 00 00 00 0.00 : 115270: 49 83 c2 10 add $0x10,%r10 0.00 : 115274: 7f 5a jg 1152d0 <__strncmp_sse42+0x580> 0.00 : 115276: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11527b: 66 0f 3a 0f 44 17 f0 palignr $0x4,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115282: 04 0.00 : 115283: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11528a: 0f 86 20 0c 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115290: 49 83 eb 10 sub $0x10,%r11 0.00 : 115294: 0f 86 5a 0c 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11529a: 48 83 c2 10 add $0x10,%rdx 0.00 : 11529e: 49 83 c2 10 add $0x10,%r10 0.00 : 1152a2: 7f 2c jg 1152d0 <__strncmp_sse42+0x580> 0.00 : 1152a4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1152a9: 66 0f 3a 0f 44 17 f0 palignr $0x4,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1152b0: 04 0.00 : 1152b1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1152b8: 0f 86 f2 0b 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1152be: 49 83 eb 10 sub $0x10,%r11 0.00 : 1152c2: 0f 86 2c 0c 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1152c8: 48 83 c2 10 add $0x10,%rdx 0.00 : 1152cc: eb a2 jmp 115270 <__strncmp_sse42+0x520> 0.00 : 1152ce: 66 90 xchg %ax,%ax 0.00 : 1152d0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1152d7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1152dd: 66 0f 73 d8 04 psrldq $0x4,%xmm0 0.00 : 1152e2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1152e8: 4c 39 d9 cmp %r11,%rcx 0.00 : 1152eb: 0f 83 b1 0b 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1152f1: 83 f9 0b cmp $0xb,%ecx 0.00 : 1152f4: 77 80 ja 115276 <__strncmp_sse42+0x526> 0.00 : 1152f6: e9 a7 0b 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 1152fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115300: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115304: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115308: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11530c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115310: 66 0f 73 fa 0b pslldq $0xb,%xmm2 0.00 : 115315: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115319: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11531d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115322: d3 ea shr %cl,%edx 0.00 : 115324: 41 d3 e9 shr %cl,%r9d 0.00 : 115327: 44 29 ca sub %r9d,%edx 0.00 : 11532a: 0f 85 a0 0b 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115330: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115334: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115339: 4d 39 cb cmp %r9,%r11 0.00 : 11533c: 0f 82 b2 0b 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115342: 4d 85 c9 test %r9,%r9 0.00 : 115345: 0f 84 a9 0b 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11534b: 4d 89 cb mov %r9,%r11 0.00 : 11534e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115352: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115359: 41 b9 05 00 00 00 mov $0x5,%r9d 0.00 : 11535f: 4c 8d 57 05 lea 0x5(%rdi),%r10 0.00 : 115363: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11536a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115371: 48 89 ca mov %rcx,%rdx 0.00 : 115374: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11537b: 00 00 00 00 00 0.00 : 115380: 49 83 c2 10 add $0x10,%r10 0.00 : 115384: 7f 5a jg 1153e0 <__strncmp_sse42+0x690> 0.00 : 115386: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11538b: 66 0f 3a 0f 44 17 f0 palignr $0x5,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115392: 05 0.00 : 115393: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 11539a: 0f 86 10 0b 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1153a0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1153a4: 0f 86 4a 0b 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1153aa: 48 83 c2 10 add $0x10,%rdx 0.00 : 1153ae: 49 83 c2 10 add $0x10,%r10 0.00 : 1153b2: 7f 2c jg 1153e0 <__strncmp_sse42+0x690> 0.00 : 1153b4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1153b9: 66 0f 3a 0f 44 17 f0 palignr $0x5,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1153c0: 05 0.00 : 1153c1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1153c8: 0f 86 e2 0a 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1153ce: 49 83 eb 10 sub $0x10,%r11 0.00 : 1153d2: 0f 86 1c 0b 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1153d8: 48 83 c2 10 add $0x10,%rdx 0.00 : 1153dc: eb a2 jmp 115380 <__strncmp_sse42+0x630> 0.00 : 1153de: 66 90 xchg %ax,%ax 0.00 : 1153e0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1153e7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1153ed: 66 0f 73 d8 05 psrldq $0x5,%xmm0 0.00 : 1153f2: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 1153f8: 4c 39 d9 cmp %r11,%rcx 0.00 : 1153fb: 0f 83 a1 0a 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115401: 83 f9 0a cmp $0xa,%ecx 0.00 : 115404: 77 80 ja 115386 <__strncmp_sse42+0x636> 0.00 : 115406: e9 97 0a 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11540b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115410: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115414: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115418: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11541c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115420: 66 0f 73 fa 0a pslldq $0xa,%xmm2 0.00 : 115425: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115429: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11542d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115432: d3 ea shr %cl,%edx 0.00 : 115434: 41 d3 e9 shr %cl,%r9d 0.00 : 115437: 44 29 ca sub %r9d,%edx 0.00 : 11543a: 0f 85 90 0a 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115440: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115444: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115449: 4d 39 cb cmp %r9,%r11 0.00 : 11544c: 0f 82 a2 0a 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115452: 4d 85 c9 test %r9,%r9 0.00 : 115455: 0f 84 99 0a 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11545b: 4d 89 cb mov %r9,%r11 0.00 : 11545e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115462: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115469: 41 b9 06 00 00 00 mov $0x6,%r9d 0.00 : 11546f: 4c 8d 57 06 lea 0x6(%rdi),%r10 0.00 : 115473: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11547a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115481: 48 89 ca mov %rcx,%rdx 0.00 : 115484: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11548b: 00 00 00 00 00 0.00 : 115490: 49 83 c2 10 add $0x10,%r10 0.00 : 115494: 7f 5a jg 1154f0 <__strncmp_sse42+0x7a0> 0.00 : 115496: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 11549b: 66 0f 3a 0f 44 17 f0 palignr $0x6,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1154a2: 06 0.00 : 1154a3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1154aa: 0f 86 00 0a 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1154b0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1154b4: 0f 86 3a 0a 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1154ba: 48 83 c2 10 add $0x10,%rdx 0.00 : 1154be: 49 83 c2 10 add $0x10,%r10 0.00 : 1154c2: 7f 2c jg 1154f0 <__strncmp_sse42+0x7a0> 0.00 : 1154c4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1154c9: 66 0f 3a 0f 44 17 f0 palignr $0x6,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1154d0: 06 0.00 : 1154d1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1154d8: 0f 86 d2 09 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1154de: 49 83 eb 10 sub $0x10,%r11 0.00 : 1154e2: 0f 86 0c 0a 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1154e8: 48 83 c2 10 add $0x10,%rdx 0.00 : 1154ec: eb a2 jmp 115490 <__strncmp_sse42+0x740> 0.00 : 1154ee: 66 90 xchg %ax,%ax 0.00 : 1154f0: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1154f7: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 1154fd: 66 0f 73 d8 06 psrldq $0x6,%xmm0 0.00 : 115502: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115508: 4c 39 d9 cmp %r11,%rcx 0.00 : 11550b: 0f 83 91 09 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115511: 83 f9 09 cmp $0x9,%ecx 0.00 : 115514: 77 80 ja 115496 <__strncmp_sse42+0x746> 0.00 : 115516: e9 87 09 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11551b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115520: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115524: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115528: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11552c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115530: 66 0f 73 fa 09 pslldq $0x9,%xmm2 0.00 : 115535: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115539: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11553d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115542: d3 ea shr %cl,%edx 0.00 : 115544: 41 d3 e9 shr %cl,%r9d 0.00 : 115547: 44 29 ca sub %r9d,%edx 0.00 : 11554a: 0f 85 80 09 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115550: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115554: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115559: 4d 39 cb cmp %r9,%r11 0.00 : 11555c: 0f 82 92 09 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115562: 4d 85 c9 test %r9,%r9 0.00 : 115565: 0f 84 89 09 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11556b: 4d 89 cb mov %r9,%r11 0.00 : 11556e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115572: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115579: 41 b9 07 00 00 00 mov $0x7,%r9d 0.00 : 11557f: 4c 8d 57 07 lea 0x7(%rdi),%r10 0.00 : 115583: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11558a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115591: 48 89 ca mov %rcx,%rdx 0.00 : 115594: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11559b: 00 00 00 00 00 0.00 : 1155a0: 49 83 c2 10 add $0x10,%r10 0.00 : 1155a4: 7f 5a jg 115600 <__strncmp_sse42+0x8b0> 0.00 : 1155a6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1155ab: 66 0f 3a 0f 44 17 f0 palignr $0x7,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1155b2: 07 0.00 : 1155b3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1155ba: 0f 86 f0 08 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1155c0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1155c4: 0f 86 2a 09 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1155ca: 48 83 c2 10 add $0x10,%rdx 0.00 : 1155ce: 49 83 c2 10 add $0x10,%r10 0.00 : 1155d2: 7f 2c jg 115600 <__strncmp_sse42+0x8b0> 0.00 : 1155d4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1155d9: 66 0f 3a 0f 44 17 f0 palignr $0x7,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1155e0: 07 0.00 : 1155e1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1155e8: 0f 86 c2 08 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1155ee: 49 83 eb 10 sub $0x10,%r11 0.00 : 1155f2: 0f 86 fc 08 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1155f8: 48 83 c2 10 add $0x10,%rdx 0.00 : 1155fc: eb a2 jmp 1155a0 <__strncmp_sse42+0x850> 0.00 : 1155fe: 66 90 xchg %ax,%ax 0.00 : 115600: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115607: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11560d: 66 0f 73 d8 07 psrldq $0x7,%xmm0 0.00 : 115612: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115618: 4c 39 d9 cmp %r11,%rcx 0.00 : 11561b: 0f 83 81 08 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115621: 83 f9 08 cmp $0x8,%ecx 0.00 : 115624: 77 80 ja 1155a6 <__strncmp_sse42+0x856> 0.00 : 115626: e9 77 08 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11562b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115630: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115634: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115638: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11563c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115640: 66 0f 73 fa 08 pslldq $0x8,%xmm2 0.00 : 115645: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115649: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11564d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115652: d3 ea shr %cl,%edx 0.00 : 115654: 41 d3 e9 shr %cl,%r9d 0.00 : 115657: 44 29 ca sub %r9d,%edx 0.00 : 11565a: 0f 85 70 08 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115660: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115664: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115669: 4d 39 cb cmp %r9,%r11 0.00 : 11566c: 0f 82 82 08 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115672: 4d 85 c9 test %r9,%r9 0.00 : 115675: 0f 84 79 08 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11567b: 4d 89 cb mov %r9,%r11 0.00 : 11567e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115682: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115689: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 11568f: 4c 8d 57 08 lea 0x8(%rdi),%r10 0.00 : 115693: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 11569a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1156a1: 48 89 ca mov %rcx,%rdx 0.00 : 1156a4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1156ab: 00 00 00 00 00 0.00 : 1156b0: 49 83 c2 10 add $0x10,%r10 0.00 : 1156b4: 7f 5a jg 115710 <__strncmp_sse42+0x9c0> 0.00 : 1156b6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1156bb: 66 0f 3a 0f 44 17 f0 palignr $0x8,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1156c2: 08 0.00 : 1156c3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1156ca: 0f 86 e0 07 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1156d0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1156d4: 0f 86 1a 08 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1156da: 48 83 c2 10 add $0x10,%rdx 0.00 : 1156de: 49 83 c2 10 add $0x10,%r10 0.00 : 1156e2: 7f 2c jg 115710 <__strncmp_sse42+0x9c0> 0.00 : 1156e4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1156e9: 66 0f 3a 0f 44 17 f0 palignr $0x8,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1156f0: 08 0.00 : 1156f1: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1156f8: 0f 86 b2 07 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1156fe: 49 83 eb 10 sub $0x10,%r11 0.00 : 115702: 0f 86 ec 07 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115708: 48 83 c2 10 add $0x10,%rdx 0.00 : 11570c: eb a2 jmp 1156b0 <__strncmp_sse42+0x960> 0.00 : 11570e: 66 90 xchg %ax,%ax 0.00 : 115710: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115717: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11571d: 66 0f 73 d8 08 psrldq $0x8,%xmm0 0.00 : 115722: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115728: 4c 39 d9 cmp %r11,%rcx 0.00 : 11572b: 0f 83 71 07 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115731: 83 f9 07 cmp $0x7,%ecx 0.00 : 115734: 77 80 ja 1156b6 <__strncmp_sse42+0x966> 0.00 : 115736: e9 67 07 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11573b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115740: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115744: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115748: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11574c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115750: 66 0f 73 fa 07 pslldq $0x7,%xmm2 0.00 : 115755: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115759: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11575d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115762: d3 ea shr %cl,%edx 0.00 : 115764: 41 d3 e9 shr %cl,%r9d 0.00 : 115767: 44 29 ca sub %r9d,%edx 0.00 : 11576a: 0f 85 60 07 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115770: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115774: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115779: 4d 39 cb cmp %r9,%r11 0.00 : 11577c: 0f 82 72 07 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115782: 4d 85 c9 test %r9,%r9 0.00 : 115785: 0f 84 69 07 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11578b: 4d 89 cb mov %r9,%r11 0.00 : 11578e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115792: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115799: 41 b9 09 00 00 00 mov $0x9,%r9d 0.00 : 11579f: 4c 8d 57 09 lea 0x9(%rdi),%r10 0.00 : 1157a3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 1157aa: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1157b1: 48 89 ca mov %rcx,%rdx 0.00 : 1157b4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1157bb: 00 00 00 00 00 0.00 : 1157c0: 49 83 c2 10 add $0x10,%r10 0.00 : 1157c4: 7f 5a jg 115820 <__strncmp_sse42+0xad0> 0.00 : 1157c6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1157cb: 66 0f 3a 0f 44 17 f0 palignr $0x9,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1157d2: 09 0.00 : 1157d3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1157da: 0f 86 d0 06 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1157e0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1157e4: 0f 86 0a 07 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1157ea: 48 83 c2 10 add $0x10,%rdx 0.00 : 1157ee: 49 83 c2 10 add $0x10,%r10 0.00 : 1157f2: 7f 2c jg 115820 <__strncmp_sse42+0xad0> 0.00 : 1157f4: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1157f9: 66 0f 3a 0f 44 17 f0 palignr $0x9,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115800: 09 0.00 : 115801: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115808: 0f 86 a2 06 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 11580e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115812: 0f 86 dc 06 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115818: 48 83 c2 10 add $0x10,%rdx 0.00 : 11581c: eb a2 jmp 1157c0 <__strncmp_sse42+0xa70> 0.00 : 11581e: 66 90 xchg %ax,%ax 0.00 : 115820: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115827: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11582d: 66 0f 73 d8 09 psrldq $0x9,%xmm0 0.00 : 115832: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115838: 4c 39 d9 cmp %r11,%rcx 0.00 : 11583b: 0f 83 61 06 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115841: 83 f9 06 cmp $0x6,%ecx 0.00 : 115844: 77 80 ja 1157c6 <__strncmp_sse42+0xa76> 0.00 : 115846: e9 57 06 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11584b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115850: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115854: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115858: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11585c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115860: 66 0f 73 fa 06 pslldq $0x6,%xmm2 0.00 : 115865: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115869: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11586d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115872: d3 ea shr %cl,%edx 0.00 : 115874: 41 d3 e9 shr %cl,%r9d 0.00 : 115877: 44 29 ca sub %r9d,%edx 0.00 : 11587a: 0f 85 50 06 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115880: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115884: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115889: 4d 39 cb cmp %r9,%r11 0.00 : 11588c: 0f 82 62 06 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115892: 4d 85 c9 test %r9,%r9 0.00 : 115895: 0f 84 59 06 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 11589b: 4d 89 cb mov %r9,%r11 0.00 : 11589e: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1158a2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 1158a9: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 1158af: 4c 8d 57 0a lea 0xa(%rdi),%r10 0.00 : 1158b3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 1158ba: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1158c1: 48 89 ca mov %rcx,%rdx 0.00 : 1158c4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1158cb: 00 00 00 00 00 0.00 : 1158d0: 49 83 c2 10 add $0x10,%r10 0.00 : 1158d4: 7f 5a jg 115930 <__strncmp_sse42+0xbe0> 0.00 : 1158d6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1158db: 66 0f 3a 0f 44 17 f0 palignr $0xa,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1158e2: 0a 0.00 : 1158e3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1158ea: 0f 86 c0 05 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 1158f0: 49 83 eb 10 sub $0x10,%r11 0.00 : 1158f4: 0f 86 fa 05 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1158fa: 48 83 c2 10 add $0x10,%rdx 0.00 : 1158fe: 49 83 c2 10 add $0x10,%r10 0.00 : 115902: 7f 2c jg 115930 <__strncmp_sse42+0xbe0> 0.00 : 115904: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115909: 66 0f 3a 0f 44 17 f0 palignr $0xa,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115910: 0a 0.00 : 115911: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115918: 0f 86 92 05 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 11591e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115922: 0f 86 cc 05 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115928: 48 83 c2 10 add $0x10,%rdx 0.00 : 11592c: eb a2 jmp 1158d0 <__strncmp_sse42+0xb80> 0.00 : 11592e: 66 90 xchg %ax,%ax 0.00 : 115930: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115937: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 11593d: 66 0f 73 d8 0a psrldq $0xa,%xmm0 0.00 : 115942: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115948: 4c 39 d9 cmp %r11,%rcx 0.00 : 11594b: 0f 83 51 05 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115951: 83 f9 05 cmp $0x5,%ecx 0.00 : 115954: 77 80 ja 1158d6 <__strncmp_sse42+0xb86> 0.00 : 115956: e9 47 05 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 11595b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115960: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115964: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115968: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 11596c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115970: 66 0f 73 fa 05 pslldq $0x5,%xmm2 0.00 : 115975: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115979: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 11597d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115982: d3 ea shr %cl,%edx 0.00 : 115984: 41 d3 e9 shr %cl,%r9d 0.00 : 115987: 44 29 ca sub %r9d,%edx 0.00 : 11598a: 0f 85 40 05 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115990: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115994: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115999: 4d 39 cb cmp %r9,%r11 0.00 : 11599c: 0f 82 52 05 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1159a2: 4d 85 c9 test %r9,%r9 0.00 : 1159a5: 0f 84 49 05 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 1159ab: 4d 89 cb mov %r9,%r11 0.00 : 1159ae: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1159b2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 1159b9: 41 b9 0b 00 00 00 mov $0xb,%r9d 0.00 : 1159bf: 4c 8d 57 0b lea 0xb(%rdi),%r10 0.00 : 1159c3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 1159ca: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 1159d1: 48 89 ca mov %rcx,%rdx 0.00 : 1159d4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1159db: 00 00 00 00 00 0.00 : 1159e0: 49 83 c2 10 add $0x10,%r10 0.00 : 1159e4: 7f 5a jg 115a40 <__strncmp_sse42+0xcf0> 0.00 : 1159e6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 1159eb: 66 0f 3a 0f 44 17 f0 palignr $0xb,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 1159f2: 0b 0.00 : 1159f3: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 1159fa: 0f 86 b0 04 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115a00: 49 83 eb 10 sub $0x10,%r11 0.00 : 115a04: 0f 86 ea 04 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115a0a: 48 83 c2 10 add $0x10,%rdx 0.00 : 115a0e: 49 83 c2 10 add $0x10,%r10 0.00 : 115a12: 7f 2c jg 115a40 <__strncmp_sse42+0xcf0> 0.00 : 115a14: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115a19: 66 0f 3a 0f 44 17 f0 palignr $0xb,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115a20: 0b 0.00 : 115a21: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115a28: 0f 86 82 04 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115a2e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115a32: 0f 86 bc 04 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115a38: 48 83 c2 10 add $0x10,%rdx 0.00 : 115a3c: eb a2 jmp 1159e0 <__strncmp_sse42+0xc90> 0.00 : 115a3e: 66 90 xchg %ax,%ax 0.00 : 115a40: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115a47: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 115a4d: 66 0f 73 d8 0b psrldq $0xb,%xmm0 0.00 : 115a52: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115a58: 4c 39 d9 cmp %r11,%rcx 0.00 : 115a5b: 0f 83 41 04 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115a61: 83 f9 04 cmp $0x4,%ecx 0.00 : 115a64: 77 80 ja 1159e6 <__strncmp_sse42+0xc96> 0.00 : 115a66: e9 37 04 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115a6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115a70: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115a74: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115a78: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 115a7c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115a80: 66 0f 73 fa 04 pslldq $0x4,%xmm2 0.00 : 115a85: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115a89: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 115a8d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115a92: d3 ea shr %cl,%edx 0.00 : 115a94: 41 d3 e9 shr %cl,%r9d 0.00 : 115a97: 44 29 ca sub %r9d,%edx 0.00 : 115a9a: 0f 85 30 04 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115aa0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115aa4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115aa9: 4d 39 cb cmp %r9,%r11 0.00 : 115aac: 0f 82 42 04 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115ab2: 4d 85 c9 test %r9,%r9 0.00 : 115ab5: 0f 84 39 04 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115abb: 4d 89 cb mov %r9,%r11 0.00 : 115abe: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115ac2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115ac9: 41 b9 0c 00 00 00 mov $0xc,%r9d 0.00 : 115acf: 4c 8d 57 0c lea 0xc(%rdi),%r10 0.00 : 115ad3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 115ada: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115ae1: 48 89 ca mov %rcx,%rdx 0.00 : 115ae4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115aeb: 00 00 00 00 00 0.00 : 115af0: 49 83 c2 10 add $0x10,%r10 0.00 : 115af4: 7f 5a jg 115b50 <__strncmp_sse42+0xe00> 0.00 : 115af6: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115afb: 66 0f 3a 0f 44 17 f0 palignr $0xc,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115b02: 0c 0.00 : 115b03: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115b0a: 0f 86 a0 03 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115b10: 49 83 eb 10 sub $0x10,%r11 0.00 : 115b14: 0f 86 da 03 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115b1a: 48 83 c2 10 add $0x10,%rdx 0.00 : 115b1e: 49 83 c2 10 add $0x10,%r10 0.00 : 115b22: 7f 2c jg 115b50 <__strncmp_sse42+0xe00> 0.00 : 115b24: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115b29: 66 0f 3a 0f 44 17 f0 palignr $0xc,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115b30: 0c 0.00 : 115b31: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115b38: 0f 86 72 03 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115b3e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115b42: 0f 86 ac 03 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115b48: 48 83 c2 10 add $0x10,%rdx 0.00 : 115b4c: eb a2 jmp 115af0 <__strncmp_sse42+0xda0> 0.00 : 115b4e: 66 90 xchg %ax,%ax 0.00 : 115b50: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115b57: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 115b5d: 66 0f 73 d8 0c psrldq $0xc,%xmm0 0.00 : 115b62: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115b68: 4c 39 d9 cmp %r11,%rcx 0.00 : 115b6b: 0f 83 31 03 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115b71: 83 f9 03 cmp $0x3,%ecx 0.00 : 115b74: 77 80 ja 115af6 <__strncmp_sse42+0xda6> 0.00 : 115b76: e9 27 03 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115b7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115b80: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115b84: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115b88: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 115b8c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115b90: 66 0f 73 fa 03 pslldq $0x3,%xmm2 0.00 : 115b95: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115b99: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 115b9d: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115ba2: d3 ea shr %cl,%edx 0.00 : 115ba4: 41 d3 e9 shr %cl,%r9d 0.00 : 115ba7: 44 29 ca sub %r9d,%edx 0.00 : 115baa: 0f 85 20 03 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115bb0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115bb4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115bb9: 4d 39 cb cmp %r9,%r11 0.00 : 115bbc: 0f 82 32 03 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115bc2: 4d 85 c9 test %r9,%r9 0.00 : 115bc5: 0f 84 29 03 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115bcb: 4d 89 cb mov %r9,%r11 0.00 : 115bce: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115bd2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115bd9: 41 b9 0d 00 00 00 mov $0xd,%r9d 0.00 : 115bdf: 4c 8d 57 0d lea 0xd(%rdi),%r10 0.00 : 115be3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 115bea: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115bf1: 48 89 ca mov %rcx,%rdx 0.00 : 115bf4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115bfb: 00 00 00 00 00 0.00 : 115c00: 49 83 c2 10 add $0x10,%r10 0.00 : 115c04: 7f 5a jg 115c60 <__strncmp_sse42+0xf10> 0.00 : 115c06: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115c0b: 66 0f 3a 0f 44 17 f0 palignr $0xd,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115c12: 0d 0.00 : 115c13: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115c1a: 0f 86 90 02 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115c20: 49 83 eb 10 sub $0x10,%r11 0.00 : 115c24: 0f 86 ca 02 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115c2a: 48 83 c2 10 add $0x10,%rdx 0.00 : 115c2e: 49 83 c2 10 add $0x10,%r10 0.00 : 115c32: 7f 2c jg 115c60 <__strncmp_sse42+0xf10> 0.00 : 115c34: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115c39: 66 0f 3a 0f 44 17 f0 palignr $0xd,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115c40: 0d 0.00 : 115c41: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115c48: 0f 86 62 02 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115c4e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115c52: 0f 86 9c 02 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115c58: 48 83 c2 10 add $0x10,%rdx 0.00 : 115c5c: eb a2 jmp 115c00 <__strncmp_sse42+0xeb0> 0.00 : 115c5e: 66 90 xchg %ax,%ax 0.00 : 115c60: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115c67: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 115c6d: 66 0f 73 d8 0d psrldq $0xd,%xmm0 0.00 : 115c72: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115c78: 4c 39 d9 cmp %r11,%rcx 0.00 : 115c7b: 0f 83 21 02 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115c81: 83 f9 02 cmp $0x2,%ecx 0.00 : 115c84: 77 80 ja 115c06 <__strncmp_sse42+0xeb6> 0.00 : 115c86: e9 17 02 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115c8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115c90: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115c94: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115c98: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 115c9c: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115ca0: 66 0f 73 fa 02 pslldq $0x2,%xmm2 0.00 : 115ca5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115ca9: 66 0f f8 d0 psubb %xmm0,%xmm2 0.00 : 115cad: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115cb2: d3 ea shr %cl,%edx 0.00 : 115cb4: 41 d3 e9 shr %cl,%r9d 0.00 : 115cb7: 44 29 ca sub %r9d,%edx 0.00 : 115cba: 0f 85 10 02 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115cc0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115cc4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115cc9: 4d 39 cb cmp %r9,%r11 0.00 : 115ccc: 0f 82 22 02 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115cd2: 4d 85 c9 test %r9,%r9 0.00 : 115cd5: 0f 84 19 02 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115cdb: 4d 89 cb mov %r9,%r11 0.00 : 115cde: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115ce2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115ce9: 41 b9 0e 00 00 00 mov $0xe,%r9d 0.00 : 115cef: 4c 8d 57 0e lea 0xe(%rdi),%r10 0.00 : 115cf3: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 115cfa: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115d01: 48 89 ca mov %rcx,%rdx 0.00 : 115d04: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115d0b: 00 00 00 00 00 0.00 : 115d10: 49 83 c2 10 add $0x10,%r10 0.00 : 115d14: 7f 5a jg 115d70 <__strncmp_sse42+0x1020> 0.00 : 115d16: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115d1b: 66 0f 3a 0f 44 17 f0 palignr $0xe,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115d22: 0e 0.00 : 115d23: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115d2a: 0f 86 80 01 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115d30: 49 83 eb 10 sub $0x10,%r11 0.00 : 115d34: 0f 86 ba 01 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115d3a: 48 83 c2 10 add $0x10,%rdx 0.00 : 115d3e: 49 83 c2 10 add $0x10,%r10 0.00 : 115d42: 7f 2c jg 115d70 <__strncmp_sse42+0x1020> 0.00 : 115d44: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115d49: 66 0f 3a 0f 44 17 f0 palignr $0xe,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115d50: 0e 0.00 : 115d51: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115d58: 0f 86 52 01 00 00 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115d5e: 49 83 eb 10 sub $0x10,%r11 0.00 : 115d62: 0f 86 8c 01 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115d68: 48 83 c2 10 add $0x10,%rdx 0.00 : 115d6c: eb a2 jmp 115d10 <__strncmp_sse42+0xfc0> 0.00 : 115d6e: 66 90 xchg %ax,%ax 0.00 : 115d70: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115d77: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 115d7d: 66 0f 73 d8 0e psrldq $0xe,%xmm0 0.00 : 115d82: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115d88: 4c 39 d9 cmp %r11,%rcx 0.00 : 115d8b: 0f 83 11 01 00 00 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115d91: 83 f9 01 cmp $0x1,%ecx 0.00 : 115d94: 77 80 ja 115d16 <__strncmp_sse42+0xfc6> 0.00 : 115d96: e9 07 01 00 00 jmpq 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115d9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 115da0: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115da4: 66 0f 6f 17 movdqa (%rdi),%xmm2 0.00 : 115da8: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 115dac: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 115db0: 66 0f 73 fa 01 pslldq $0x1,%xmm2 0.00 : 115db5: 66 0f 74 d1 pcmpeqb %xmm1,%xmm2 0.00 : 115db9: 66 0f f8 d0 psubb %xmm0,%xmm2 ??:0 2.00 : 115dbd: 66 44 0f d7 ca pmovmskb %xmm2,%r9d 0.00 : 115dc2: d3 ea shr %cl,%edx 0.00 : 115dc4: 41 d3 e9 shr %cl,%r9d 0.00 : 115dc7: 44 29 ca sub %r9d,%edx 0.00 : 115dca: 0f 85 00 01 00 00 jne 115ed0 <__strncmp_sse42+0x1180> 0.00 : 115dd0: 66 0f 6f 1f movdqa (%rdi),%xmm3 0.00 : 115dd4: 4e 8d 4c 19 f0 lea -0x10(%rcx,%r11,1),%r9 0.00 : 115dd9: 4d 39 cb cmp %r9,%r11 0.00 : 115ddc: 0f 82 12 01 00 00 jb 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115de2: 4d 85 c9 test %r9,%r9 0.00 : 115de5: 0f 84 09 01 00 00 je 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115deb: 4d 89 cb mov %r9,%r11 0.00 : 115dee: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 115df2: 48 c7 c1 10 00 00 00 mov $0x10,%rcx 0.00 : 115df9: 41 b9 0f 00 00 00 mov $0xf,%r9d 0.00 : 115dff: 4c 8d 57 0f lea 0xf(%rdi),%r10 0.00 : 115e03: 49 81 e2 ff 0f 00 00 and $0xfff,%r10 0.00 : 115e0a: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115e11: 48 89 ca mov %rcx,%rdx 0.00 : 115e14: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115e1b: 00 00 00 00 00 0.00 : 115e20: 49 83 c2 10 add $0x10,%r10 0.00 : 115e24: 7f 5a jg 115e80 <__strncmp_sse42+0x1130> 0.00 : 115e26: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115e2b: 66 0f 3a 0f 44 17 f0 palignr $0xf,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115e32: 0f 0.00 : 115e33: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115e3a: 76 74 jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115e3c: 49 83 eb 10 sub $0x10,%r11 0.00 : 115e40: 0f 86 ae 00 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115e46: 48 83 c2 10 add $0x10,%rdx 0.00 : 115e4a: 49 83 c2 10 add $0x10,%r10 0.00 : 115e4e: 7f 30 jg 115e80 <__strncmp_sse42+0x1130> 0.00 : 115e50: 66 0f 6f 04 17 movdqa (%rdi,%rdx,1),%xmm0 0.00 : 115e55: 66 0f 3a 0f 44 17 f0 palignr $0xf,-0x10(%rdi,%rdx,1),%xmm0 0.00 : 115e5c: 0f 0.00 : 115e5d: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115e64: 76 4a jbe 115eb0 <__strncmp_sse42+0x1160> 0.00 : 115e66: 49 83 eb 10 sub $0x10,%r11 0.00 : 115e6a: 0f 86 84 00 00 00 jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115e70: 48 83 c2 10 add $0x10,%rdx 0.00 : 115e74: eb aa jmp 115e20 <__strncmp_sse42+0x10d0> 0.00 : 115e76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 115e7d: 00 00 00 0.00 : 115e80: 49 81 ea 00 10 00 00 sub $0x1000,%r10 0.00 : 115e87: 66 0f 6f 44 17 f0 movdqa -0x10(%rdi,%rdx,1),%xmm0 0.00 : 115e8d: 66 0f 73 d8 0f psrldq $0xf,%xmm0 0.00 : 115e92: 66 0f 3a 63 c0 3a pcmpistri $0x3a,%xmm0,%xmm0 0.00 : 115e98: 4c 39 d9 cmp %r11,%rcx 0.00 : 115e9b: 73 05 jae 115ea2 <__strncmp_sse42+0x1152> 0.00 : 115e9d: 83 f9 00 cmp $0x0,%ecx 0.00 : 115ea0: 77 84 ja 115e26 <__strncmp_sse42+0x10d6> 0.00 : 115ea2: 66 0f 3a 63 04 16 1a pcmpistri $0x1a,(%rsi,%rdx,1),%xmm0 0.00 : 115ea9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 115eb0: 73 42 jae 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115eb2: 49 29 cb sub %rcx,%r11 0.00 : 115eb5: 76 3d jbe 115ef4 <__strncmp_sse42+0x11a4> 0.00 : 115eb7: 48 01 ca add %rcx,%rdx 0.00 : 115eba: 4a 8d 7c 0f f0 lea -0x10(%rdi,%r9,1),%rdi 0.00 : 115ebf: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax 0.00 : 115ec3: 0f b6 14 16 movzbl (%rsi,%rdx,1),%edx 0.00 : 115ec7: 45 85 c0 test %r8d,%r8d 0.00 : 115eca: 74 01 je 115ecd <__strncmp_sse42+0x117d> 0.00 : 115ecc: 92 xchg %eax,%edx 0.00 : 115ecd: 29 d0 sub %edx,%eax 0.00 : 115ecf: c3 retq 0.00 : 115ed0: 48 8d 3c 07 lea (%rdi,%rax,1),%rdi 0.00 : 115ed4: 48 8d 34 0e lea (%rsi,%rcx,1),%rsi 0.00 : 115ed8: 45 85 c0 test %r8d,%r8d 0.00 : 115edb: 74 03 je 115ee0 <__strncmp_sse42+0x1190> 0.00 : 115edd: 48 87 f7 xchg %rsi,%rdi 0.00 : 115ee0: 48 0f bc d2 bsf %rdx,%rdx ??:0 24.00 : 115ee4: 49 29 d3 sub %rdx,%r11 0.00 : 115ee7: 76 0b jbe 115ef4 <__strncmp_sse42+0x11a4> 6.00 : 115ee9: 0f b6 0c 16 movzbl (%rsi,%rdx,1),%ecx 16.00 : 115eed: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax ??:0 2.00 : 115ef1: 29 c8 sub %ecx,%eax ??:0 12.00 : 115ef3: c3 retq 0.00 : 115ef4: 31 c0 xor %eax,%eax 0.00 : 115ef6: c3 retq 0.00 : 115ef7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 115efe: 00 00 0.00 : 115f00: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 115f03: 0f b6 07 movzbl (%rdi),%eax 0.00 : 115f06: 29 c8 sub %ecx,%eax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:93 16.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1681 10.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1675 10.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1675 10.20 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1681 8.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1671 8.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1671 8.16 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 6.12 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 4.08 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1675 2.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1675 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079e120 : : * caller must pfree the returned tuple when done with it. : */ : IndexTuple : tuplesort_getindextuple(Tuplesortstate *state, bool forward, : bool *should_free) : { 0.00 : 79e120: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1671 8.16 : 79e121: 48 89 d1 mov %rdx,%rcx : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : : if (!tuplesort_gettuple_common(state, forward, &stup, should_free)) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1675 2.04 : 79e124: 40 0f be f6 movsbl %sil,%esi : * caller must pfree the returned tuple when done with it. : */ : IndexTuple : tuplesort_getindextuple(Tuplesortstate *state, bool forward, : bool *should_free) : { 0.00 : 79e128: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1671 8.16 : 79e12b: 53 push %rbx : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : : if (!tuplesort_gettuple_common(state, forward, &stup, should_free)) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1675 10.20 : 79e12c: 48 8d 55 d0 lea -0x30(%rbp),%rdx : * caller must pfree the returned tuple when done with it. : */ : IndexTuple : tuplesort_getindextuple(Tuplesortstate *state, bool forward, : bool *should_free) : { 0.00 : 79e130: 48 83 ec 28 sub $0x28,%rsp : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 6.12 : 79e134: 48 8b 47 28 mov 0x28(%rdi),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:93 16.33 : 79e138: 48 8b 1d 21 c7 41 00 mov 0x41c721(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 79e13f: 48 89 05 1a c7 41 00 mov %rax,0x41c71a(%rip) # bba860 : MemoryContext oldcontext = MemoryContextSwitchTo(state->sortcontext); : SortTuple stup; : : if (!tuplesort_gettuple_common(state, forward, &stup, should_free)) /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1675 4.08 : 79e146: e8 f5 f9 ff ff callq 79db40 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1675 10.20 : 79e14b: 84 c0 test %al,%al 0.00 : 79e14d: 75 08 jne 79e157 : stup.tuple = NULL; 0.00 : 79e14f: 48 c7 45 d0 00 00 00 movq $0x0,-0x30(%rbp) 0.00 : 79e156: 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/../../../../src/include/utils/palloc.h:95 8.16 : 79e157: 48 89 1d 02 c7 41 00 mov %rbx,0x41c702(%rip) # bba860 0.00 : 79e15e: 48 8b 45 d0 mov -0x30(%rbp),%rax : : MemoryContextSwitchTo(oldcontext); : : return (IndexTuple) stup.tuple; : } 0.00 : 79e162: 48 83 c4 28 add $0x28,%rsp /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/tuplesort.c:1681 10.20 : 79e166: 5b pop %rbx 16.33 : 79e167: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 16.67 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 14.58 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 12.50 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3073 8.33 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 8.33 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 8.33 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 6.25 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3073 6.25 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3073 4.17 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 4.17 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 2.08 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 2.08 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 2.08 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 2.08 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 2.08 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000069b9e0 : : * overflow as an unrecoverable SIGSEGV, so we want to error out ourselves : * before hitting the hardware limit. : */ : void : check_stack_depth(void) : { /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 4.17 : 69b9e0: 55 push %rbp 0.00 : 69b9e1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3066 16.67 : 69b9e4: 48 89 5d f0 mov %rbx,-0x10(%rbp) 8.33 : 69b9e8: 4c 89 65 f8 mov %r12,-0x8(%rbp) 14.58 : 69b9ec: 48 83 ec 20 sub $0x20,%rsp : long stack_depth; : : /* : * Compute distance from reference point to my local variables : */ : stack_depth = (long) (stack_base_ptr - &stack_top_loc); /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3073 12.50 : 69b9f0: 48 8b 0d f9 2d 4e 00 mov 0x4e2df9(%rip),%rcx # b7e7f0 0.00 : 69b9f7: 48 8d 45 ef lea -0x11(%rbp),%rax 0.00 : 69b9fb: 48 89 ca mov %rcx,%rdx 6.25 : 69b9fe: 48 29 c2 sub %rax,%rdx 6.25 : 69ba01: 48 89 d0 mov %rdx,%rax : * The test on stack_base_ptr prevents us from erroring out if called : * during process setup or in a non-backend process. Logically it should : * be done first, but putting it here avoids wasting cycles during normal : * cases. : */ : if (stack_depth > max_stack_depth_bytes && /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 2.08 : 69ba04: 48 c1 fa 3f sar $0x3f,%rdx 2.08 : 69ba08: 48 31 d0 xor %rdx,%rax 2.08 : 69ba0b: 48 29 d0 sub %rdx,%rax /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3089 8.33 : 69ba0e: 48 39 05 a3 cd 4c 00 cmp %rax,0x4ccda3(%rip) # b687b8 0.00 : 69ba15: 7d 05 jge 69ba1c 0.00 : 69ba17: 48 85 c9 test %rcx,%rcx 0.00 : 69ba1a: 75 0a jne 69ba26 : errhint("Increase the configuration parameter \"max_stack_depth\" (currently %dkB), " : "after ensuring the platform's stack depth limit is adequate.", : max_stack_depth))); : } : #endif /* IA64 */ : } /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 2.08 : 69ba1c: 48 8b 5d f0 mov -0x10(%rbp),%rbx 2.08 : 69ba20: 4c 8b 65 f8 mov -0x8(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 8.33 : 69ba24: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/tcop/postgres.c:3122 4.17 : 69ba25: c3 retq : * cases. : */ : if (stack_depth > max_stack_depth_bytes && : stack_base_ptr != NULL) : { : ereport(ERROR, 0.00 : 69ba26: 45 31 c0 xor %r8d,%r8d 0.00 : 69ba29: b9 e0 00 8b 00 mov $0x8b00e0,%ecx 0.00 : 69ba2e: ba 19 0c 00 00 mov $0xc19,%edx 0.00 : 69ba33: be d0 e8 8a 00 mov $0x8ae8d0,%esi 0.00 : 69ba38: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69ba3d: e8 7e f0 0d 00 callq 77aac0 0.00 : 69ba42: 84 c0 test %al,%al 0.00 : 69ba44: 75 05 jne 69ba4b 0.00 : 69ba46: e8 85 da dc ff callq 4694d0 0.00 : 69ba4b: 8b 35 5b cd 4c 00 mov 0x4ccd5b(%rip),%esi # b687ac 0.00 : 69ba51: bf 60 f0 8a 00 mov $0x8af060,%edi 0.00 : 69ba56: 31 c0 xor %eax,%eax 0.00 : 69ba58: e8 43 02 0e 00 callq 77bca0 0.00 : 69ba5d: bf 00 ea 8a 00 mov $0x8aea00,%edi 0.00 : 69ba62: 41 89 c4 mov %eax,%r12d 0.00 : 69ba65: 31 c0 xor %eax,%eax 0.00 : 69ba67: e8 34 0e 0e 00 callq 77c8a0 0.00 : 69ba6c: bf 05 01 00 01 mov $0x1000105,%edi 0.00 : 69ba71: 89 c3 mov %eax,%ebx 0.00 : 69ba73: e8 d8 12 0e 00 callq 77cd50 0.00 : 69ba78: 44 89 e2 mov %r12d,%edx 0.00 : 69ba7b: 89 c7 mov %eax,%edi 0.00 : 69ba7d: 89 de mov %ebx,%esi 0.00 : 69ba7f: 31 c0 xor %eax,%eax 0.00 : 69ba81: e8 5a eb 0d 00 callq 77a5e0 0.00 : 69ba86: eb be jmp 69ba46 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 5.33 ??:0 4.00 ??:0 4.00 ??:0 4.00 ??:0 4.00 ??:0 2.67 ??:0 2.67 ??:0 2.67 ??:0 2.67 ??:0 2.67 ??:0 2.67 ??:0 2.67 ??:0 2.67 ??:0 2.67 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 1.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000006a40 : ??:0 9.33 : 6a40: 41 57 push %r15 0.00 : 6a72: 49 89 fa 41 mov %ecx,0x2c(%rsp) 0.00 : 6a76: 56 41 55 41 54 55 48 mov 0xe0(%rsp),%rcx 0.00 : 6a7d: 89 0.00 : 6a7e: f5 53 48 81 mov %al,0x2b(%rsp) 0.00 : 6a82: ec a8 00 00 00 89 54 mov 0xe8(%rdi),%rdx 0.00 : 6a89: 24 40 0f sbb %rax,%rax 0.00 : 6a8c: b6 84 24 and $0x14,%eax 0.00 : 6a8f: e8 00 00 00 lea (%rsi,%rax,1),%r13 ??:0 1.33 : 6a93: 83 7c 24 40 01 89 4c mov 0xe0(%rsp),%rax 0.00 : 6a9a: 24 0.00 : 6a9b: 3c 4c 89 44 24 mov %rdx,0x48(%rsp) 0.00 : 6aa0: 30 44 89 mov 0x4(%rcx),%ecx 0.00 : 6aa3: 4c 24 bswap %ecx 0.00 : 6aa5: 2c 48 8b mov %rax,%rdx 0.00 : 6aa8: 8c 24 e0 00 mov %ecx,0x50(%rsp) 0.00 : 6aac: 00 00 88 44 mov 0x8(%rax),%r12d 0.00 : 6ab0: 24 2b 48 8b movzwl 0xe(%rax),%eax 0.00 : 6ab4: 97 e8 00 bswap %r12d 0.00 : 6ab7: 00 00 48 19 rol $0x8,%ax 1.33 : 6abb: c0 83 e0 movzwl %ax,%eax 0.00 : 6abe: 14 4c 8d 2c mov %eax,0x58(%rsp) 1.33 : 6ac2: 06 48 8b 84 mov 0x68(%r8),%ecx 0.00 : 6ac6: 24 e0 00 00 mov %ecx,0x44(%rsp) 0.00 : 6aca: 00 48 89 54 24 movzbl 0xc(%rdx),%r14d 1.33 : 6acf: 48 8b 49 04 movzbl 0xd(%rdx),%eax 0.00 : 6ad3: 0f c9 48 89 shr $0x4,%r14b 0.00 : 6ad7: c2 89 4c 24 mov %al,0x60(%rsp) 0.00 : 6adb: 50 44 8b 60 08 testb $0x2,0x11(%r13) 0.00 : 6ae0: 0f b7 je 6af5 0.00 : 6ae2: 40 0e 41 0f movzbl %r14b,%eax 0.00 : 6ae6: cc 66 c1 c0 08 0f b7 lea -0x14(,%rax,4),%ebx 0.00 : 6aed: c0 89 test %ebx,%ebx 0.00 : 6aef: 44 24 58 41 8b 48 jne 6d60 1.33 : 6af5: 68 89 4c mov %r12d,%ebx 0.00 : 6af8: 24 44 44 0f b6 cmpb $0x2,0x2b(%rsp) 1.33 : 6afd: 72 0c 0f b6 42 0d je 6e80 0.00 : 6b03: 41 c0 ee 04 88 44 24 movw $0x0,0x5e(%rsp) 0.00 : 6b0a: 60 41 xor %eax,%eax 0.00 : 6b0c: f6 45 11 mov %ebx,%r15d 0.00 : 6b0f: 02 74 13 sub %eax,%r12d 0.00 : 6b12: 41 0f b6 sub %eax,%r15d 0.00 : 6b15: c6 8d 1c 85 ec ff ff cmpb $0x0,0x0(%rip) # 6b1c 1.33 : 6b1c: ff 85 db 0f 85 mov %r12d,0x54(%rsp) 0.00 : 6b21: 6b 02 00 00 44 89 jne 73ce 0.00 : 6b27: e3 80 7c 24 2b 02 0f cmpb $0x0,0x0(%rip) # 6b2e 4.00 : 6b2e: 84 7d 03 00 00 66 jne 72a0 0.00 : 6b34: c7 44 24 5e 00 movzbl 0x60(%rsp),%eax 0.00 : 6b39: 00 31 c0 41 89 movzbl 0x60(%rsp),%edx 0.00 : 6b3e: df 41 shr %al 0.00 : 6b40: 29 c4 41 and $0x1,%edx 0.00 : 6b43: 29 c7 80 and $0x1,%eax 0.00 : 6b46: 3d 00 add %edx,%eax 0.00 : 6b48: 00 00 00 00 add 0x44(%rsp),%eax 0.00 : 6b4c: 44 89 64 24 movzbl %r14b,%edx 0.00 : 6b50: 54 0f 85 shl $0x2,%edx 0.00 : 6b53: a7 08 00 00 80 mov 0x50(%rsp),%r14d 0.00 : 6b58: 3d 00 sub %edx,%eax 0.00 : 6b5a: 00 00 00 00 sub 0x2c(%rsp),%eax 0.00 : 6b5e: 0f 85 6c add %eax,%r14d 0.00 : 6b61: 07 00 00 0f b6 44 24 cmpb $0x0,0x0(%rip) # 6b68 0.00 : 6b68: 60 0f b6 54 24 60 jne 7264 0.00 : 6b6e: d0 e8 83 e2 01 83 e0 cmpb $0x0,0x0(%rip) # 6b75 1.33 : 6b75: 01 01 d0 03 44 mov 0x40(%rsp),%r12d 0.00 : 6b7a: 24 44 41 0f b6 d6 jne 72ba 0.00 : 6b80: c1 e2 02 44 lea (%r12,%r12,4),%rax 0.00 : 6b84: 8b 74 24 50 29 lea 0x0(%rbp,%rax,4),%rbx 0.00 : 6b89: d0 2b 44 mov 0x8(%rbx),%esi 1.33 : 6b8c: 24 2c test %esi,%esi 0.00 : 6b8e: 41 01 c6 80 3d 00 jne 6cf0 0.00 : 6b94: 00 00 00 00 0f 85 f6 mov 0xe0(%rsp),%rcx 0.00 : 6b9b: 06 0.00 : 6b9c: 00 00 80 3d testb $0x2,0xd(%rcx) 0.00 : 6ba0: 00 00 00 00 00 44 je 6de0 0.00 : 6ba6: 8b 64 24 40 mov %r14d,0x4(%rbx) 0.00 : 6baa: 0f 85 3a 07 00 mov %r14d,0x0(%rbp,%rax,4) 0.00 : 6baf: 00 4b 8d 04 a4 mov $0x1,%eax 0.00 : 6bb4: 48 8d 5c 85 mov 0x58(%rsp),%ecx 0.00 : 6bb8: 00 8b test %ecx,%ecx 0.00 : 6bba: 73 08 85 f6 0f cmovne 0x58(%rsp),%eax 0.00 : 6bbf: 85 5c 01 mov %rbx,%rcx 0.00 : 6bc2: 00 00 48 mov %eax,0x8(%rbx) 0.00 : 6bc5: 8b 8c 24 e0 00 00 00 mov 0xe0(%rsp),%rdx 0.00 : 6bcc: f6 0.00 : 6bcd: 41 0d 02 0f mov 0x2c(%rsp),%esi 0.00 : 6bd1: 84 3a 02 00 00 mov 0x30(%rsp),%rdi 0.00 : 6bd6: 44 89 73 04 44 callq 68c0 0.00 : 6bdb: 89 74 85 00 testb $0x1,0x11(%rbx) 0.00 : 6bdf: b8 01 00 00 00 8b jne 7080 0.00 : 6be5: 4c 24 58 85 lea (%r12,%r12,4),%rax 0.00 : 6be9: c9 0f 45 44 24 movb $0x0,0x10(%r13) 0.00 : 6bee: 58 48 89 d9 89 movb $0x0,0x10(%rbp,%rax,4) 0.00 : 6bf3: 43 08 48 8b 94 24 e0 mov 0xe0(%rsp),%rax 0.00 : 6bfa: 00 0.00 : 6bfb: 00 00 8b 74 24 mov $0x1,%ebx 0.00 : 6c00: 2c 48 8b 7c movzbl 0xd(%rax),%edx 0.00 : 6c04: 24 30 e8 test $0x10,%dl 0.00 : 6c07: e5 fc ff ff f6 43 je 6cda 0.00 : 6c0d: 11 01 0f 85 9b 04 00 mov 0xe0(%rsp),%rcx 0.00 : 6c14: 00 1.33 : 6c15: 4b 8d 04 mov 0xc(%rcx),%eax 0.00 : 6c18: a4 41 c6 45 10 and $0x1400,%eax 0.00 : 6c1d: 00 c6 44 85 10 cmp $0x1400,%eax 0.00 : 6c22: 00 48 8b 84 24 e0 jne 6d26 0.00 : 6c28: 00 00 00 bb 01 mov 0x54(%rsp),%r8d 0.00 : 6c2d: 00 00 00 test %r8d,%r8d 0.00 : 6c30: 0f b6 50 0d f6 c2 je 6d1d 0.00 : 6c36: 10 0f 84 and $0x4,%edx 0.00 : 6c39: cd 00 00 00 48 8b jne 6d2f 0.00 : 6c3f: 8c nop 1.33 : 6c40: 24 e0 00 00 00 8b 41 cmpb $0x0,0x0(%rip) # 6c47 0.00 : 6c47: 0c 25 00 14 00 00 jne 7325 0.00 : 6c4d: 3d 00 14 00 00 0f 85 cmpb $0x0,0x0(%rip) # 6c54 0.00 : 6c54: fe 00 00 00 44 8b jne 733f 0.00 : 6c5a: 44 24 54 45 85 c0 0f cmpb $0x0,0x0(%rip) # 6c61 ??:0 5.33 : 6c61: 84 e7 00 00 00 83 jne 737b 0.00 : 6c67: e2 04 0f 85 f0 00 00 cmpb $0x0,0x0(%rip) # 6c6e 0.00 : 6c6e: 00 90 80 3d 00 00 jne 73e8 0.00 : 6c74: 00 00 00 0f lea (%r12,%r12,4),%rdx 0.00 : 6c78: 85 d8 06 00 00 mov $0xffffffff,%eax 0.00 : 6c7d: 80 3d 00 00 00 lea 0x0(%rbp,%rdx,4),%rcx 0.00 : 6c82: 00 00 0f sub 0x4(%rcx),%eax ??:0 2.67 : 6c85: 85 e5 06 00 add 0x50(%rsp),%eax 0.00 : 6c89: 00 80 3d 00 00 00 js 6eb0 0.00 : 6c8f: 00 00 0f 85 lea (%r12,%r12,4),%rax 0.00 : 6c93: 14 07 00 00 80 testb $0x8,0x11(%rbp,%rax,4) 0.00 : 6c98: 3d 00 00 00 00 00 jne 6e20 0.00 : 6c9e: 0f 85 74 07 00 00 mov 0x0(%rip),%ecx # 6ca4 0.00 : 6ca4: 4b 8d test %ecx,%ecx 0.00 : 6ca6: 14 a4 b8 ff ff ff jne 6e20 0.00 : 6cac: ff 48 8d 4c 95 mov 0x48(%rsp),%rcx 0.00 : 6cb1: 00 2b 41 04 03 44 mov 0x75c(%rcx),%eax 0.00 : 6cb7: 24 50 0f cmp $0x6,%eax 0.00 : 6cba: 88 21 02 00 00 4b je 7098 0.00 : 6cc0: 8d 04 a4 f6 44 cmp $0xff,%eax 0.00 : 6cc5: 85 11 08 0f 85 82 je 7098 0.00 : 6ccb: 01 00 xor %ebx,%ebx 0.00 : 6ccd: 00 8b 0d 00 00 00 00 cmpb $0x0,0x0(%rip) # 6cd4 0.00 : 6cd4: 85 c9 0f 85 74 01 jne 6e32 1.33 : 6cda: 00 00 48 8b 4c 24 48 add $0xa8,%rsp 0.00 : 6ce1: 8b 81 mov %ebx,%eax 0.00 : 6ce3: 5c pop %rbx 0.00 : 6ce4: 07 pop %rbp 1.33 : 6ce5: 00 00 pop %r12 0.00 : 6ce7: 83 f8 pop %r13 0.00 : 6ce9: 06 0f pop %r14 0.00 : 6ceb: 84 d8 pop %r15 0.00 : 6ced: 03 retq 0.00 : 6cee: 00 00 xchg %ax,%ax 1.33 : 6cf0: 3d ff 00 00 movzbl 0x28(%rbp),%eax 1.33 : 6cf4: 00 0f cmp $0x1,%al 0.00 : 6cf6: 84 cd 03 00 00 31 je 7010 1.33 : 6cfc: db 80 cmp $0x2,%al 0.00 : 6cfe: 3d 00 00 00 00 00 je 7118 0.00 : 6d04: 0f 85 58 01 nopl 0x0(%rax) 0.00 : 6d08: 00 00 48 81 c4 a8 00 mov 0xe0(%rsp),%rcx 0.00 : 6d0f: 00 0.00 : 6d10: 00 89 d8 5b movzbl 0xd(%rcx),%edx 0.00 : 6d14: 5d 41 5c test $0x10,%dl 0.00 : 6d17: 41 5d 41 5e 41 5f jne 6c0d 0.00 : 6d1d: c3 66 90 0f mov 0x0(%r13),%r15d 0.00 : 6d21: b6 45 28 3c 01 mov %r15d,0x54(%rsp) 1.33 : 6d26: 0f 84 14 and $0x4,%edx 0.00 : 6d29: 03 00 00 3c 02 0f je 6c40 0.00 : 6d2f: 84 14 04 00 mov 0x50(%rsp),%edi 0.00 : 6d33: 00 0f test %edi,%edi 0.00 : 6d35: 1f 40 00 48 8b 8c jne 6c40 0.00 : 6d3b: 24 e0 00 00 cmpb $0x1,0x28(%rbp) 0.00 : 6d3f: 00 0f b6 51 0d f6 jne 6c40 0.00 : 6d45: c2 10 0f 85 lea (%r12,%r12,4),%rax 0.00 : 6d49: f0 fe ff ff 45 mov 0x0(%rbp,%rax,4),%r14d 0.00 : 6d4e: 8b 7d 00 44 89 mov %r14d,0x50(%rsp) 0.00 : 6d53: 7c 24 54 83 e2 jmpq 6c40 0.00 : 6d58: 04 0f 84 11 ff ff ff nopl 0x0(%rax,%rax,1) 0.00 : 6d5f: 8b 0.00 : 6d60: 7c 24 mov %ecx,%eax 0.00 : 6d62: 50 85 ff 0f sub 0x6c(%r8),%eax 1.33 : 6d66: 85 05 ff mov %r9d,%esi 0.00 : 6d69: ff ff 80 add $0x14,%esi 0.00 : 6d6c: 7d 28 sub %esi,%eax 0.00 : 6d6e: 01 0f cmp %eax,%ebx 0.00 : 6d70: 85 fb fe ff ff 4b jg 7130 0.00 : 6d76: 8d 04 a4 movslq %esi,%rax 1.33 : 6d79: 44 8b 74 85 00 44 89 add 0xe0(%r8),%rax 0.00 : 6d80: 74 24 50 test %rax,%rax 1.33 : 6d83: e9 e8 fe mov %rax,%rdx 0.00 : 6d86: ff ff 0f 1f 84 00 je 7160 1.33 : 6d8c: 00 00 00 cmp $0x30,%ebx 0.00 : 6d8f: 00 89 c8 41 2b 40 je 7100 4.00 : 6d95: 6c 44 test %ebx,%ebx 0.00 : 6d97: 89 ce 83 c6 14 29 jle 6af5 0.00 : 6d9d: f0 39 c3 movzbl (%rdx),%eax 0.00 : 6da0: 0f 8f ba 03 add $0x1,%rdx 0.00 : 6da4: 00 00 test %al,%al 0.00 : 6da6: 48 63 c6 49 03 80 je 6af5 2.67 : 6dac: e0 00 cmp $0x1,%al 0.00 : 6dae: 00 00 48 85 c0 48 je 7000 0.00 : 6db4: 89 c2 0f movzbl (%rdx),%ecx 0.00 : 6db7: 84 d4 03 cmp $0x1,%ecx 0.00 : 6dba: 00 00 83 fb 30 0f jle 6af5 0.00 : 6dc0: 84 6b 03 00 add $0x1,%rdx 0.00 : 6dc4: 00 85 cmp %ecx,%ebx 0.00 : 6dc6: db 0f jl 6d95 0.00 : 6dc8: 8e 58 cmp $0x5,%al 0.00 : 6dca: fd ff ff 0f b6 02 je 71d0 0.00 : 6dd0: 48 83 c2 movslq %ecx,%rax 0.00 : 6dd3: 01 84 sub %ecx,%ebx 0.00 : 6dd5: c0 0f 84 49 fd lea -0x2(%rdx,%rax,1),%rdx 0.00 : 6dda: ff ff jmp 6d95 0.00 : 6ddc: 3c 01 0f 84 nopl 0x0(%rax) 0.00 : 6de0: 4c 02 00 00 0f mov %r14d,0x0(%rbp,%rax,4) 0.00 : 6de5: b6 0a 83 f9 movzbl 0x10(%rbx),%ecx 0.00 : 6de9: 01 0f 8e 35 fd mov $0x1,%eax 0.00 : 6dee: ff ff 48 83 shll %cl,0x58(%rsp) 0.00 : 6df2: c2 01 39 cb mov 0x58(%rsp),%edx 0.00 : 6df6: 7c cd test %edx,%edx 0.00 : 6df8: 3c 05 0f 84 00 cmovne 0x58(%rsp),%eax 0.00 : 6dfd: 04 00 00 mov %eax,0x8(%rbx) 0.00 : 6e00: 48 63 c1 add %r14d,%eax 0.00 : 6e03: 29 cb 48 mov %eax,0x4(%rbx) 0.00 : 6e06: 8d 54 02 fe mov 0x8(%r13),%r11d 0.00 : 6e0a: eb b9 0f test %r11d,%r11d 0.00 : 6e0d: 1f 40 00 44 89 74 jne 6d08 0.00 : 6e13: 85 00 0f b6 mov %r15d,0x4(%r13) 0.00 : 6e17: 4b 10 b8 01 mov %r15d,0x0(%r13) 0.00 : 6e1b: 00 00 00 d3 64 jmpq 6d08 0.00 : 6e20: 24 58 8b 54 24 mov $0x1,%ebx 1.33 : 6e25: 58 85 d2 0f 45 44 24 cmpb $0x0,0x0(%rip) # 6e2c 2.67 : 6e2c: 58 89 43 08 44 01 je 6cda 0.00 : 6e32: f0 89 43 04 lea (%r12,%r12,4),%rax 0.00 : 6e36: 45 8b 5d movzbl %bl,%edx 0.00 : 6e39: 08 45 85 db 0f 85 f5 mov $0x0,%rdi 0.00 : 6e40: fe ff ff 45 89 lea 0x0(%rbp,%rax,4),%rsi 0.00 : 6e45: 7d 04 45 89 mov 0x0(%rbp,%rax,4),%ecx 0.00 : 6e49: 7d 00 e9 e8 mov 0x8(%r13),%eax 0.00 : 6e4d: fe ff ff bb mov %eax,0x10(%rsp) 0.00 : 6e51: 01 00 00 00 mov 0x4(%r13),%eax 0.00 : 6e55: 80 3d 00 00 mov %eax,0x8(%rsp) 0.00 : 6e59: 00 00 00 0f mov 0x0(%r13),%eax 0.00 : 6e5d: 84 a8 fe mov %eax,(%rsp) 0.00 : 6e60: ff ff 4b 8d mov 0x8(%rsi),%r9d 0.00 : 6e64: 04 a4 xor %eax,%eax 0.00 : 6e66: 0f b6 d3 48 mov 0x4(%rsi),%r8d 0.00 : 6e6a: c7 c7 00 00 00 00 48 mov $0x0,%rsi 0.00 : 6e71: 8d 74 85 00 8b callq 6e76 0.00 : 6e76: 4c 85 00 41 8b jmpq 6cda 0.00 : 6e7b: 45 08 89 44 24 nopl 0x0(%rax,%rax,1) 4.00 : 6e80: 10 41 8b 45 04 89 44 mov 0x0(%rip),%rax # 6e87 2.67 : 6e87: 24 08 41 test %rax,%rax 0.00 : 6e8a: 8b 45 00 89 04 24 je 6b03 1.33 : 6e90: 44 8b xor %esi,%esi 0.00 : 6e92: 4e 08 31 c0 44 cmpl $0x0,0x40(%rsp) 0.00 : 6e97: 8b 46 04 48 c7 lea -0x1(%r12),%edx 0.00 : 6e9c: c6 00 00 mov %r10,%rdi 0.00 : 6e9f: 00 00 e8 00 sete %sil 0.00 : 6ea3: 00 00 callq *%rax 0.00 : 6ea5: 00 e9 5f fe ff mov %ax,0x5e(%rsp) 0.00 : 6eaa: ff cwtl 0.00 : 6eab: 0f 1f 44 00 00 jmpq 6b0c 0.00 : 6eb0: 48 8b 05 00 mov 0x0(%rbp,%rdx,4),%edi 0.00 : 6eb4: 00 00 00 lea -0x1(%rdi),%eax 0.00 : 6eb7: 48 85 c0 0f sub 0x8(%r13),%eax 0.00 : 6ebb: 84 73 fc cmp %r14d,%eax 0.00 : 6ebe: ff ff 31 f6 83 7c jns 6c8f 1.33 : 6ec4: 24 40 00 41 mov 0x0(%r13),%edx 0.00 : 6ec8: 8d 54 mov %edx,%eax 0.00 : 6eca: 24 ff not %eax 0.00 : 6ecc: 4c 89 d7 add %r15d,%eax 1.33 : 6ecf: 40 0f 94 c6 ff d0 jns 6c8f 0.00 : 6ed5: 66 89 44 mov 0x8(%rcx),%esi 0.00 : 6ed8: 24 5e 98 sub $0x1,%edx 0.00 : 6edb: e9 5c fc ff ff mov $0x101d0,%eax 0.00 : 6ee0: 8b 7c 95 00 8d 47 cmp $0x101d0,%esi 0.00 : 6ee6: ff 41 2b cmovae %esi,%eax 0.00 : 6ee9: 45 08 sub %eax,%edx 0.00 : 6eeb: 44 39 f0 cmp %r15d,%edx 0.00 : 6eee: 0f 89 cb fd ff ff jns 6c8f 0.00 : 6ef4: 41 8b 55 00 89 d0 f7 mov 0xe0(%rsp),%rdx 0.00 : 6efb: d0 0.00 : 6efc: 44 01 f8 0f testb $0x2,0xd(%rdx) 0.00 : 6f00: 89 ba jne 6f0a 1.33 : 6f02: fd ff ff 8b movzbl 0x10(%rcx),%ecx 0.00 : 6f06: 71 08 83 ea shll %cl,0x58(%rsp) 1.33 : 6f0a: 01 b8 d0 mov %r15d,%eax 0.00 : 6f0d: 01 01 00 81 sub 0x54(%rsp),%eax 0.00 : 6f11: fe d0 01 01 mov 0x58(%rsp),%ecx 0.00 : 6f15: 00 0f 43 lea (%rax,%rcx,1),%edx 0.00 : 6f18: c6 29 cmp %edx,%esi 0.00 : 6f1a: c2 44 jae 6f28 0.00 : 6f1c: 39 fa 0f 89 lea (%r12,%r12,4),%rax 0.00 : 6f20: 9b fd ff ff mov 0x0(%rbp,%rax,4),%edi 0.00 : 6f24: 48 8b 94 24 mov %edx,0x8(%rbp,%rax,4) 0.00 : 6f28: e0 00 00 cmp %r14d,%edi 1.33 : 6f2b: 00 f6 jns 6f3b 0.00 : 6f2d: 42 0d 02 75 lea (%r12,%r12,4),%rax 0.00 : 6f31: 08 0f b6 49 10 orb $0x10,0x11(%rbp,%rax,4) 0.00 : 6f36: d3 64 24 58 44 mov %r14d,0x0(%rbp,%rax,4) 1.33 : 6f3b: 89 f8 2b 44 24 54 8b mov 0xe0(%rsp),%rax 0.00 : 6f42: 4c 0.00 : 6f43: 24 58 8d 14 testb $0x10,0xd(%rax) 1.33 : 6f47: 08 39 je 6f6b 0.00 : 6f49: d6 73 0c 4b lea (%r12,%r12,4),%rax 0.00 : 6f4d: 8d 04 a4 8b 7c lea 0x0(%rbp,%rax,4),%rdx 0.00 : 6f52: 85 00 89 54 lea 0x10(%rdx),%rax 0.00 : 6f56: 85 08 44 39 testb $0x20,0x1(%rax) 1.33 : 6f5a: f7 79 0e 4b 8d 04 jne 730d 0.00 : 6f60: a4 80 4c 85 mov 0x54(%rsp),%ecx 0.00 : 6f64: 11 10 44 mov %ecx,0xc(%rdx) 0.00 : 6f67: 89 74 85 00 orb $0x20,0x1(%rax) 0.00 : 6f6b: 48 8b 84 24 mov 0x8(%r13),%edx 1.33 : 6f6f: e0 00 test %edx,%edx 0.00 : 6f71: 00 00 je 6f8a 1.33 : 6f73: f6 40 0d 10 lea (%r12,%r12,4),%rax 0.00 : 6f77: 74 22 4b 8d mov 0x4(%rbp,%rax,4),%eax 0.00 : 6f7b: 04 a4 48 cmp %r14d,%eax 0.00 : 6f7e: 8d 54 jns 6f8a 0.00 : 6f80: 85 00 sub %eax,%edx 0.00 : 6f82: 48 8d 42 10 lea (%rdx,%r14,1),%eax 0.00 : 6f86: f6 40 01 20 mov %eax,0x8(%r13) 0.00 : 6f8a: 0f 85 ad 03 mov 0x58(%rsp),%edx 2.67 : 6f8e: 00 00 8b add %r15d,%edx 0.00 : 6f91: 4c 24 mov %edx,%eax 0.00 : 6f93: 54 89 not %eax 0.00 : 6f95: 4a 0c 80 48 add 0x4(%r13),%eax 0.00 : 6f99: 01 20 41 8b 55 08 js 7208 0.00 : 6f9f: 85 d2 74 17 mov 0x54(%rsp),%edx 0.00 : 6fa3: 4b 8d 04 a4 cmp %edx,0x0(%r13) 0.00 : 6fa7: 8b 44 jne 6fae 2.67 : 6fa9: 85 04 44 39 f0 andb $0xef,0x11(%r13) 0.00 : 6fae: 79 0a 29 c2 42 cmpl $0x3,0x3c(%rsp) 0.00 : 6fb3: 8d 04 32 41 89 45 jne 6e20 0.00 : 6fb9: 08 8b 54 24 movzbl 0x29(%rbp),%eax 0.00 : 6fbd: 58 44 01 fa cmp 0x40(%rsp),%eax 0.00 : 6fc1: 89 d0 f7 d0 41 03 je 7224 0.00 : 6fc7: 45 04 0f 88 69 movzbl 0x40(%rsp),%edx 0.00 : 6fcc: 02 00 00 8b 54 mov $0x1,%ebx 0.00 : 6fd1: 24 54 41 mov %dl,0x29(%rbp) 0.00 : 6fd4: 39 55 00 75 mov 0x50(%rsp),%ecx 1.33 : 6fd8: 05 41 80 mov %ecx,0x2c(%rbp) 0.00 : 6fdb: 65 11 ef 83 mov 0x54(%rsp),%eax 0.00 : 6fdf: 7c 24 3c 03 mov %r14d,0x34(%rbp) 0.00 : 6fe3: 0f 85 67 mov %eax,0x30(%rbp) 0.00 : 6fe6: fe ff ff 0f b6 movzwl 0x58(%rsp),%edx 1.33 : 6feb: 45 29 3b 44 movb $0x0,0x2a(%rbp) 0.00 : 6fef: 24 40 0f 84 mov %dx,0x38(%rbp) 0.00 : 6ff3: 5d 02 00 00 0f jmpq 6e25 0.00 : 6ff8: b6 54 24 40 bb 01 00 nopl 0x0(%rax,%rax,1) 0.00 : 6fff: 00 1.33 : 7000: 00 88 55 sub $0x1,%ebx 0.00 : 7003: 29 8b 4c 24 50 jmpq 6d95 0.00 : 7008: 89 4d 2c 8b 44 24 54 nopl 0x0(%rax,%rax,1) 0.00 : 700f: 44 0.00 : 7010: 89 75 34 89 45 mov 0x40(%rsp),%r10d 0.00 : 7015: 30 0f b7 test %r10d,%r10d 0.00 : 7018: 54 24 58 c6 45 2a jne 6d08 0.00 : 701e: 00 66 89 55 lea (%r12,%r12,4),%rax 0.00 : 7022: 38 e9 2d fe ff cmp %r14d,0x0(%rbp,%rax,4) 0.00 : 7027: ff 0f 1f 84 00 00 00 lea 0x0(,%rax,4),%rdx 0.00 : 702e: 00 0.00 : 702f: 00 83 eb 01 e9 8d jns 6d08 0.00 : 7035: fd ff ff 0f 1f lea 0x0(%rbp,%rdx,1),%rdx 0.00 : 703a: 84 00 00 mov %rbx,%rcx 0.00 : 703d: 00 00 00 44 mov %r14d,0x4(%rdx) 0.00 : 7041: 8b 54 24 40 45 mov %r14d,0x0(%rbp,%rax,4) 0.00 : 7046: 85 d2 0f 85 ea mov $0x1,%eax 0.00 : 704b: fc ff ff 4b 8d mov 0x58(%rsp),%r9d 0.00 : 7050: 04 a4 44 test %r9d,%r9d 0.00 : 7053: 39 74 85 00 48 cmovne 0x58(%rsp),%eax 0.00 : 7058: 8d 14 85 mov %eax,0x8(%rdx) 0.00 : 705b: 00 00 00 00 0f 89 d3 mov 0xe0(%rsp),%rdx 0.00 : 7062: fc 0.00 : 7063: ff ff 48 8d mov 0x2c(%rsp),%esi 0.00 : 7067: 54 15 00 48 89 mov 0x30(%rsp),%rdi 0.00 : 706c: d9 44 89 72 04 callq 68c0 0.00 : 7071: 44 89 74 85 00 jmpq 6d08 0.00 : 7076: b8 01 00 00 00 44 8b nopw %cs:0x0(%rax,%rax,1) 0.00 : 707d: 4c 24 58 0.00 : 7080: 45 85 c9 0f 45 testb $0x1,0x11(%r13) 0.00 : 7085: 44 24 58 89 42 08 jne 6bf3 0.00 : 708b: 48 8b 94 24 e0 nopl 0x0(%rax,%rax,1) 0.00 : 7090: 00 00 00 8b 74 jmpq 6be5 0.00 : 7095: 24 2c 48 nopl (%rax) 0.00 : 7098: 8b 7c 24 30 e8 4f f8 nopl 0x0(%rax,%rax,1) 0.00 : 709f: ff 0.00 : 70a0: ff e9 92 fc ff callq 70a5 0.00 : 70a5: ff 66 test %eax,%eax 0.00 : 70a7: 2e 0f 1f 84 00 00 je 6ccb 0.00 : 70ad: 00 00 00 41 lea (%r12,%r12,4),%rcx 0.00 : 70b1: f6 45 11 01 0f mov $0xffffffff,%eax 0.00 : 70b6: 85 68 fb ff ff 0f 1f mov $0x0,%rdx 0.00 : 70bd: 44 00 00 e9 50 lea 0x0(%rbp,%rcx,4),%rsi 0.00 : 70c2: fb ff ff sub 0x4(%rsi),%eax 0.00 : 70c5: 0f 1f 00 0f add 0x50(%rsp),%eax 0.00 : 70c9: 1f 84 00 00 00 00 js 7168 0.00 : 70cf: 00 e8 00 00 00 movzbl 0x2b(%rsp),%edi 0.00 : 70d4: 00 85 c0 0f 84 mov %rdx,0x8(%rsp) 0.00 : 70d9: 1e fc ff xor %r9d,%r9d 0.00 : 70dc: ff 4b 8d 0c a4 mov 0x30(%rsp),%rdx 0.00 : 70e1: b8 ff ff xor %r8d,%r8d 0.00 : 70e4: ff ff xor %ecx,%ecx 0.00 : 70e6: 48 c7 xor %esi,%esi 0.00 : 70e8: c2 00 xor %eax,%eax 0.00 : 70ea: 00 00 00 48 8d 74 8d movq $0x0,(%rsp) 0.00 : 70f1: 00 0.00 : 70f2: 2b 46 xor %ebx,%ebx 0.00 : 70f4: 04 03 44 24 50 callq 70f9 0.00 : 70f9: 0f 88 99 00 00 jmpq 6e25 0.00 : 70fe: 00 0f xchg %ax,%ax 0.00 : 7100: b6 7c 24 2b 48 89 cmpl $0xa080101,(%rax) 0.00 : 7106: 54 24 08 45 31 c9 jne 6d9d 0.00 : 710c: 48 8b 54 24 nopl 0x0(%rax) 0.00 : 7110: 30 45 31 c0 31 jmpq 6af5 0.00 : 7115: c9 31 f6 nopl (%rax) 0.00 : 7118: 31 c0 48 c7 04 cmpl $0x1,0x40(%rsp) 0.00 : 711d: 24 00 00 nopl (%rax) 0.00 : 7120: 00 00 31 db e8 00 jne 6d08 0.00 : 7126: 00 00 xchg %ax,%ax 0.00 : 7128: 00 e9 27 fd ff jmpq 701e 0.00 : 712d: ff 66 90 nopl (%rax) 0.00 : 7130: 81 38 01 01 08 lea 0x70(%rsp),%r15 0.00 : 7135: 0a 0f 85 91 fc mov 0x30(%rsp),%rdi 0.00 : 713a: ff ff mov %ebx,%ecx 0.00 : 713c: 0f 1f 40 00 e9 mov %r10,0x20(%rsp) 0.00 : 7141: e0 f9 ff mov %r15,%rdx 0.00 : 7144: ff 0f 1f 00 83 callq 7149 0.00 : 7149: 7c 24 test %eax,%eax 0.00 : 714b: 40 01 0f 1f 00 mov 0x20(%rsp),%r10 0.00 : 7150: 0f 85 js 7160 0.00 : 7152: e2 fb ff mov %r15,%rax 0.00 : 7155: ff 66 90 e9 f1 jmpq 6d80 0.00 : 715a: fe ff ff 0f 1f 00 nopw 0x0(%rax,%rax,1) 0.00 : 7160: 4c 8d ud2 0.00 : 7162: 7c 24 jmp 7162 0.00 : 7164: 70 48 8b 7c nopl 0x0(%rax) 0.00 : 7168: 24 30 89 d9 mov 0x0(%rbp,%rcx,4),%eax 0.00 : 716c: 4c 89 54 24 20 4c 89 mov $0x0,%rdx 0.00 : 7173: fa e8 00 sub $0x1,%eax 0.00 : 7176: 00 00 00 85 sub 0x8(%r13),%eax 0.00 : 717a: c0 4c 8b cmp %r14d,%eax 0.00 : 717d: 54 24 20 78 0e 4c jns 70cf 0.00 : 7183: 89 f8 e9 26 mov 0x0(%r13),%ecx 0.00 : 7187: fc ff ff 66 0f 1f 44 mov $0x0,%rdx 0.00 : 718e: 00 00 mov %ecx,%eax 0.00 : 7190: 0f 0b not %eax 0.00 : 7192: eb fe 0f add %r15d,%eax 0.00 : 7195: 1f 40 00 8b 44 8d jns 70cf 0.00 : 719b: 00 48 c7 c2 00 00 00 cmpl $0x101d0,0x8(%rsi) 0.00 : 71a2: 00 83 e8 01 41 mov $0x101d0,%edx 0.00 : 71a7: 2b 45 08 lea -0x1(%rcx),%eax 0.00 : 71aa: 44 39 f0 0f cmovae 0x8(%rsi),%edx 0.00 : 71ae: 89 4c sub %edx,%eax 0.00 : 71b0: ff ff ff 41 8b 4d 00 mov $0x0,%rdx 0.00 : 71b7: 48 c7 c2 cmp %r15d,%eax 0.00 : 71ba: 00 00 00 00 89 c8 f7 mov $0x0,%rax 0.00 : 71c1: d0 44 01 f8 cmovs %rax,%rdx 0.00 : 71c5: 0f 89 34 ff ff jmpq 70cf 0.00 : 71ca: ff 81 7e 08 d0 01 nopw 0x0(%rax,%rax,1) 0.00 : 71d0: 01 00 ba cmp $0x9,%ecx 0.00 : 71d3: d0 01 01 00 8d 41 jle 6dd0 0.00 : 71d9: ff 0f 43 lea -0x2(%rcx),%esi 0.00 : 71dc: 56 08 29 d0 test $0x7,%sil 0.00 : 71e0: 48 c7 c2 00 00 00 jne 6dd0 0.00 : 71e6: 00 44 39 mov %r12d,%ecx 0.00 : 71e9: f8 48 xor %edi,%edi 0.00 : 71eb: c7 c0 00 movslq %edi,%rax 0.00 : 71ee: 00 00 00 48 mov 0x4(%rdx,%rax,1),%ebx 0.00 : 71f2: 0f 48 bswap %ebx 0.00 : 71f4: d0 e9 cmp %ebx,%ecx 0.00 : 71f6: 05 ff ff cmovns %ecx,%ebx 0.00 : 71f9: ff 66 0f add $0x8,%edi 0.00 : 71fc: 1f 44 cmp %edi,%esi 0.00 : 71fe: 00 00 83 f9 09 0f jle 6af8 0.00 : 7204: 8e f7 mov %ebx,%ecx 0.00 : 7206: fb ff jmp 71eb 4.00 : 7208: ff 8d 71 fe mov %edx,0x4(%r13) 0.00 : 720c: 40 f6 c6 07 mov 0x58(%rsp),%esi 0.00 : 7210: 0f 85 test %esi,%esi 0.00 : 7212: ea fb ff ff 44 89 jne 6f9f 0.00 : 7218: e1 31 ff lea 0x1(%rdx),%eax 0.00 : 721b: 48 63 c7 8b mov %eax,0x4(%r13) 0.00 : 721f: 5c 02 04 0f cb jmpq 6f9f 1.33 : 7224: 39 d9 0f 49 mov 0x50(%rsp),%ecx 1.33 : 7228: d9 83 c7 cmp %ecx,0x2c(%rbp) 0.00 : 722b: 08 39 fe 0f 8e f4 jne 6fc7 0.00 : 7231: f8 ff ff 89 mov 0x54(%rsp),%eax 0.00 : 7235: d9 eb e3 cmp %eax,0x30(%rbp) 0.00 : 7238: 41 89 55 04 8b 74 jne 6fc7 0.00 : 723e: 24 58 85 f6 cmp %r14d,0x34(%rbp) 0.00 : 7242: 0f 85 87 fd ff ff jne 6fc7 0.00 : 7248: 8d 42 01 41 movzwl 0x38(%rbp),%eax 0.00 : 724c: 89 45 04 e9 cmp 0x58(%rsp),%eax 0.00 : 7250: 7b fd ff ff 8b 4c jne 6fc7 0.00 : 7256: 24 50 39 4d addb $0x1,0x2a(%rbp) 0.00 : 725a: 2c 0f 85 96 fd mov $0x1,%ebx 0.00 : 725f: ff ff 8b 44 24 jmpq 6e25 0.00 : 7264: 54 39 45 30 mov 0x58(%rsp),%edx 0.00 : 7268: 0f 85 89 fd ff ff movswl 0x5e(%rsp),%r8d 0.00 : 726e: 44 39 75 mov %r15d,%r9d 0.00 : 7271: 34 0f 85 7f mov 0x54(%rsp),%ecx 0.00 : 7275: fd ff ff 0f b7 45 38 mov $0x0,%rsi 0.00 : 727c: 3b 44 24 58 0f 85 71 mov $0x0,%rdi 0.00 : 7283: fd ff xor %eax,%eax 0.00 : 7285: ff 80 45 2a 01 mov %r14d,0x10(%rsp) 0.00 : 728a: bb 01 00 00 mov %edx,0x8(%rsp) 0.00 : 728e: 00 e9 c1 fb mov 0x50(%rsp),%edx 0.00 : 7292: ff ff 8b 54 mov %r8d,(%rsp) 0.00 : 7296: 24 58 44 0f bf callq 729b 0.00 : 729b: 44 24 5e 45 89 jmpq 6b6e 0.00 : 72a0: f9 8b 4c 24 54 48 c7 mov $0x0,%rsi 0.00 : 72a7: c6 00 00 00 00 48 c7 mov $0x0,%rdi 0.00 : 72ae: c7 00 xor %eax,%eax 0.00 : 72b0: 00 00 00 31 c0 callq 72b5 0.00 : 72b5: 44 89 74 24 10 jmpq 6b34 0.00 : 72ba: 89 54 24 08 lea (%r12,%r12,4),%rax 0.00 : 72be: 8b 54 24 50 44 89 04 mov $0x0,%rsi 0.00 : 72c5: 24 e8 00 00 00 00 e9 mov $0x0,%rdi 0.00 : 72cc: ce f8 ff ff mov 0x0(%rbp,%rax,4),%edx 0.00 : 72d0: 48 c7 c6 00 00 lea 0x0(%rbp,%rax,4),%rcx 0.00 : 72d5: 00 00 48 c7 c7 movzbl 0x10(%r13),%eax 0.00 : 72da: 00 00 00 00 31 movzbl 0x10(%rcx),%r9d 0.00 : 72df: c0 e8 00 00 mov %eax,0x18(%rsp) 0.00 : 72e3: 00 00 e9 7a mov 0x8(%r13),%eax 0.00 : 72e7: f8 ff ff 4b mov %eax,0x10(%rsp) 0.00 : 72eb: 8d 04 a4 48 mov 0x4(%r13),%eax 0.00 : 72ef: c7 c6 00 00 mov %eax,0x8(%rsp) 0.00 : 72f3: 00 00 48 c7 mov 0x0(%r13),%eax 0.00 : 72f7: c7 00 00 mov %eax,(%rsp) 0.00 : 72fa: 00 00 8b 54 mov 0x8(%rcx),%r8d 0.00 : 72fe: 85 00 xor %eax,%eax 0.00 : 7300: 48 8d 4c mov 0x4(%rcx),%ecx 0.00 : 7303: 85 00 41 0f b6 callq 7308 0.00 : 7308: 45 10 44 0f b6 jmpq 6b80 0.00 : 730d: 49 10 89 44 mov 0x54(%rsp),%eax 0.00 : 7311: 24 18 41 cmp %eax,0xc(%rdx) 1.33 : 7314: 8b 45 08 89 44 24 jns 6f6b 1.33 : 731a: 10 41 8b mov %eax,0xc(%rdx) 0.00 : 731d: 45 04 89 nopl (%rax) 0.00 : 7320: 44 24 08 41 8b jmpq 6f6b 0.00 : 7325: 45 00 89 04 24 44 8b mov $0x0,%rsi 0.00 : 732c: 41 08 31 c0 8b 49 04 mov $0x0,%rdi 0.00 : 7333: e8 00 xor %eax,%eax 0.00 : 7335: 00 00 00 e9 73 callq 733a 0.00 : 733a: f8 ff ff 8b 44 jmpq 6c4d 0.00 : 733f: 24 54 39 42 mov 0x58(%rsp),%eax 0.00 : 7343: 0c 0f 89 51 fc ff movswl 0x5e(%rsp),%r8d 0.00 : 7349: ff 89 42 mov %r15d,%r9d 0.00 : 734c: 0c 0f 1f 00 mov 0x54(%rsp),%ecx 0.00 : 7350: e9 46 fc ff mov 0x50(%rsp),%edx 0.00 : 7354: ff 48 c7 c6 00 00 00 mov $0x0,%rsi 0.00 : 735b: 00 48 c7 c7 00 00 00 mov $0x0,%rdi 0.00 : 7362: 00 31 c0 e8 00 mov %r14d,0x10(%rsp) 0.00 : 7367: 00 00 00 e9 mov %eax,0x8(%rsp) 0.00 : 736b: 0e f9 xor %eax,%eax 0.00 : 736d: ff ff 8b 44 mov %r8d,(%rsp) 0.00 : 7371: 24 58 44 0f bf callq 7376 0.00 : 7376: 44 24 5e 45 89 jmpq 6c5a 0.00 : 737b: f9 8b 4c 24 lea (%r12,%r12,4),%rax 0.00 : 737f: 54 8b 54 24 50 48 c7 mov $0x0,%rsi 0.00 : 7386: c6 00 00 00 00 48 c7 mov $0x0,%rdi 0.00 : 738d: c7 00 00 00 mov 0x0(%rbp,%rax,4),%edx 0.00 : 7391: 00 44 89 74 24 lea 0x0(%rbp,%rax,4),%rcx 0.00 : 7396: 10 89 44 24 08 movzbl 0x10(%r13),%eax 0.00 : 739b: 31 c0 44 89 04 movzbl 0x10(%rcx),%r9d 0.00 : 73a0: 24 e8 00 00 mov %eax,0x18(%rsp) 0.00 : 73a4: 00 00 e9 df mov 0x8(%r13),%eax 0.00 : 73a8: f8 ff ff 4b mov %eax,0x10(%rsp) 0.00 : 73ac: 8d 04 a4 48 mov 0x4(%r13),%eax 0.00 : 73b0: c7 c6 00 00 mov %eax,0x8(%rsp) 0.00 : 73b4: 00 00 48 c7 mov 0x0(%r13),%eax 0.00 : 73b8: c7 00 00 mov %eax,(%rsp) 0.00 : 73bb: 00 00 8b 54 mov 0x8(%rcx),%r8d 0.00 : 73bf: 85 00 xor %eax,%eax 0.00 : 73c1: 48 8d 4c mov 0x4(%rcx),%ecx 0.00 : 73c4: 85 00 41 0f b6 callq 73c9 0.00 : 73c9: 45 10 44 0f b6 jmpq 6c67 0.00 : 73ce: 49 10 89 44 24 18 41 mov $0x0,%rsi 0.00 : 73d5: 8b 45 08 89 44 24 10 mov $0x0,%rdi 0.00 : 73dc: 41 8b xor %eax,%eax 0.00 : 73de: 45 04 89 44 24 callq 73e3 0.00 : 73e3: 08 41 8b 45 00 jmpq 6b27 0.00 : 73e8: 89 04 24 44 lea (%r12,%r12,4),%rcx 0.00 : 73ec: 8b 41 08 31 mov 0x0(%r13),%r8d 0.00 : 73f0: c0 8b 49 04 e8 mov $0xffffffff,%edx 0.00 : 73f5: 00 00 00 00 e9 mov $0x101d0,%eax 0.00 : 73fa: 99 f8 ff ff 48 c7 c6 mov $0x0,%rdi 0.00 : 7401: 00 00 00 00 48 lea 0x0(%rbp,%rcx,4),%rsi 0.00 : 7406: c7 c7 00 00 mov 0x0(%rbp,%rcx,4),%ecx 0.00 : 740a: 00 00 31 c0 lea -0x1(%r8),%r9d 0.00 : 740e: e8 00 00 not %r8d 0.00 : 7411: 00 00 e9 3f f7 ff ff cmpl $0x101d0,0x8(%rsi) 0.00 : 7418: 4b 8d 0c a4 cmovae 0x8(%rsi),%eax 0.00 : 741c: 45 8b add %edx,%ecx 0.00 : 741e: 45 00 ba sub 0x4(%rsi),%edx 0.00 : 7421: ff ff ff ff sub 0x8(%r13),%ecx 0.00 : 7425: b8 d0 01 01 add 0x50(%rsp),%edx 0.00 : 7429: 00 48 c7 add %r15d,%r8d 0.00 : 742c: c7 00 00 00 shr $0x1f,%r8d 0.00 : 7430: 00 48 8d 74 8d 00 8b mov $0x0,%rsi 0.00 : 7437: 4c 8d 00 sub %eax,%r9d 0.00 : 743a: 45 8d xor %eax,%eax 0.00 : 743c: 48 ff 41 sub %r15d,%r9d 0.00 : 743f: f7 d0 81 sub %r14d,%ecx 0.00 : 7442: 7e 08 d0 shr $0x1f,%edx 0.00 : 7445: 01 01 00 shr $0x1f,%ecx 0.00 : 7448: 0f 43 46 08 shr $0x1f,%r9d 0.00 : 744c: 01 d1 2b 56 04 callq 7451 0.00 : 7451: 41 2b 4d 08 03 jmpq 6c74 : 7456: 54 24 50 45 01 f8 41 nopw %cs:0x0(%rax,%rax,1) : 745d: c1 e8 1f : 7460: 48 c7 push %r13 : 7462: c6 00 push %r12 : 7464: 00 00 00 mov %edx,%r12d : 7467: 41 push %rbp : 7468: 29 c1 31 mov %rdi,%rbp : 746b: c0 push %rbx : 746c: 45 29 f9 mov %rsi,%rbx : 746f: 44 29 f1 c1 sub $0x48,%rsp : 7473: ea 1f c1 mov 0x68(%rsi),%eax : 7476: e9 1f 41 sub 0x6c(%rsi),%eax : 7479: c1 e9 sub %edx,%eax : 747b: 1f e8 00 cmp $0x13,%eax : 747e: 00 00 00 e9 1e f8 jle 7610 : 7484: ff ff 66 movslq %edx,%r8 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.22 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:748 13.04 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:753 10.87 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:761 8.70 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:722 8.70 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:748 8.70 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:779 6.52 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:722 6.52 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:722 6.52 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:779 2.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:722 2.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:722 2.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:722 2.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:755 2.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:748 2.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:748 2.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:779 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c44a0 : : /* : * TransactionIdIsCurrentTransactionId : */ : bool : TransactionIdIsCurrentTransactionId(TransactionId xid) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:722 2.17 : 4c44a0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:722 8.70 : 4c44a1: 48 89 e5 mov %rsp,%rbp 0.00 : 4c44a4: 41 57 push %r15 6.52 : 4c44a6: 41 89 ff mov %edi,%r15d 0.00 : 4c44a9: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:722 2.17 : 4c44ab: 41 55 push %r13 2.17 : 4c44ad: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:722 6.52 : 4c44af: 53 push %rbx 0.00 : 4c44b0: 48 83 ec 08 sub $0x8,%rsp : * : * Likewise, InvalidTransactionId and FrozenTransactionId are certainly : * not my transaction ID, so we can just return "false" immediately for : * any non-normal XID. : */ : if (!TransactionIdIsNormal(xid)) 0.00 : 4c44b4: 83 ff 02 cmp $0x2,%edi 0.00 : 4c44b7: 0f 86 b3 00 00 00 jbe 4c4570 : * its subcommitted children, any of its parents, or any of their : * previously subcommitted children. However, a transaction being aborted : * is no longer "current", even though it may still have an entry on the : * state stack. : */ : for (s = CurrentTransactionState; s != NULL; s = s->parent) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:748 15.22 : 4c44bd: 4c 8b 35 64 39 6a 00 mov 0x6a3964(%rip),%r14 # b67e28 0.00 : 4c44c4: 4d 85 f6 test %r14,%r14 0.00 : 4c44c7: 0f 84 a3 00 00 00 je 4c4570 0.00 : 4c44cd: 0f 1f 00 nopl (%rax) : { : int low, : high; : : if (s->state == TRANS_ABORT) 0.00 : 4c44d0: 41 83 7e 14 04 cmpl $0x4,0x14(%r14) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:753 13.04 : 4c44d5: 0f 84 85 00 00 00 je 4c4560 : continue; : if (!TransactionIdIsValid(s->transactionId)) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:755 2.17 : 4c44db: 41 8b 06 mov (%r14),%eax 0.00 : 4c44de: 85 c0 test %eax,%eax 0.00 : 4c44e0: 74 7e je 4c4560 : continue; /* it can't have any child XIDs either */ : if (TransactionIdEquals(xid, s->transactionId)) 0.00 : 4c44e2: 41 39 c7 cmp %eax,%r15d 0.00 : 4c44e5: 0f 84 9d 00 00 00 je 4c4588 : return true; : /* As the childXids array is ordered, we can use binary search */ : low = 0; : high = s->nChildXids - 1; /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:761 10.87 : 4c44eb: 41 8b 46 40 mov 0x40(%r14),%eax : while (low <= high) 0.00 : 4c44ef: 41 89 c5 mov %eax,%r13d 0.00 : 4c44f2: 41 83 ed 01 sub $0x1,%r13d 0.00 : 4c44f6: 78 68 js 4c4560 : { : int middle; : TransactionId probe; : : middle = low + (high - low) / 2; 0.00 : 4c44f8: 45 89 ec mov %r13d,%r12d : probe = s->childXids[middle]; 0.00 : 4c44fb: 49 8b 46 38 mov 0x38(%r14),%rax : while (low <= high) : { : int middle; : TransactionId probe; : : middle = low + (high - low) / 2; 0.00 : 4c44ff: 41 d1 fc sar %r12d : probe = s->childXids[middle]; 0.00 : 4c4502: 49 63 d4 movslq %r12d,%rdx 0.00 : 4c4505: 8b 3c 90 mov (%rax,%rdx,4),%edi : if (TransactionIdEquals(probe, xid)) 0.00 : 4c4508: 44 39 ff cmp %r15d,%edi 0.00 : 4c450b: 74 7b je 4c4588 0.00 : 4c450d: 31 db xor %ebx,%ebx 0.00 : 4c450f: eb 32 jmp 4c4543 0.00 : 4c4511: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return true; : else if (TransactionIdPrecedes(probe, xid)) : low = middle + 1; 0.00 : 4c4518: 41 8d 5c 24 01 lea 0x1(%r12),%ebx : if (TransactionIdEquals(xid, s->transactionId)) : return true; : /* As the childXids array is ordered, we can use binary search */ : low = 0; : high = s->nChildXids - 1; : while (low <= high) 0.00 : 4c451d: 41 39 dd cmp %ebx,%r13d 0.00 : 4c4520: 7c 3e jl 4c4560 : { : int middle; : TransactionId probe; : : middle = low + (high - low) / 2; 0.00 : 4c4522: 44 89 ea mov %r13d,%edx 0.00 : 4c4525: 29 da sub %ebx,%edx 0.00 : 4c4527: 89 d0 mov %edx,%eax 0.00 : 4c4529: c1 e8 1f shr $0x1f,%eax 0.00 : 4c452c: 01 d0 add %edx,%eax 0.00 : 4c452e: d1 f8 sar %eax 0.00 : 4c4530: 44 8d 24 18 lea (%rax,%rbx,1),%r12d : probe = s->childXids[middle]; 0.00 : 4c4534: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 4c4538: 49 63 d4 movslq %r12d,%rdx 0.00 : 4c453b: 8b 3c 90 mov (%rax,%rdx,4),%edi : if (TransactionIdEquals(probe, xid)) 0.00 : 4c453e: 44 39 ff cmp %r15d,%edi 0.00 : 4c4541: 74 45 je 4c4588 : return true; : else if (TransactionIdPrecedes(probe, xid)) 0.00 : 4c4543: 44 89 fe mov %r15d,%esi 0.00 : 4c4546: e8 95 ba ff ff callq 4bffe0 0.00 : 4c454b: 84 c0 test %al,%al 0.00 : 4c454d: 75 c9 jne 4c4518 : low = middle + 1; : else : high = middle - 1; 0.00 : 4c454f: 45 8d 6c 24 ff lea -0x1(%r12),%r13d : if (TransactionIdEquals(xid, s->transactionId)) : return true; : /* As the childXids array is ordered, we can use binary search */ : low = 0; : high = s->nChildXids - 1; : while (low <= high) 0.00 : 4c4554: 41 39 dd cmp %ebx,%r13d 0.00 : 4c4557: 7d c9 jge 4c4522 0.00 : 4c4559: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * its subcommitted children, any of its parents, or any of their : * previously subcommitted children. However, a transaction being aborted : * is no longer "current", even though it may still have an entry on the : * state stack. : */ : for (s = CurrentTransactionState; s != NULL; s = s->parent) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:748 2.17 : 4c4560: 4d 8b 76 58 mov 0x58(%r14),%r14 2.17 : 4c4564: 4d 85 f6 test %r14,%r14 0.00 : 4c4567: 0f 85 63 ff ff ff jne 4c44d0 0.00 : 4c456d: 0f 1f 00 nopl (%rax) : high = middle - 1; : } : } : : return false; : } 0.00 : 4c4570: 48 83 c4 08 add $0x8,%rsp : * its subcommitted children, any of its parents, or any of their : * previously subcommitted children. However, a transaction being aborted : * is no longer "current", even though it may still have an entry on the : * state stack. : */ : for (s = CurrentTransactionState; s != NULL; s = s->parent) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:748 8.70 : 4c4574: 31 c0 xor %eax,%eax : high = middle - 1; : } : } : : return false; : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:779 2.17 : 4c4576: 5b pop %rbx 0.00 : 4c4577: 41 5c pop %r12 0.00 : 4c4579: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:779 8.70 : 4c457b: 41 5e pop %r14 0.00 : 4c457d: 41 5f pop %r15 0.00 : 4c457f: c9 leaveq 6.52 : 4c4580: c3 retq 0.00 : 4c4581: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4c4588: 48 83 c4 08 add $0x8,%rsp : * its subcommitted children, any of its parents, or any of their : * previously subcommitted children. However, a transaction being aborted : * is no longer "current", even though it may still have an entry on the : * state stack. : */ : for (s = CurrentTransactionState; s != NULL; s = s->parent) 0.00 : 4c458c: b8 01 00 00 00 mov $0x1,%eax : high = middle - 1; : } : } : : return false; : } 0.00 : 4c4591: 5b pop %rbx 0.00 : 4c4592: 41 5c pop %r12 0.00 : 4c4594: 41 5d pop %r13 0.00 : 4c4596: 41 5e pop %r14 0.00 : 4c4598: 41 5f pop %r15 0.00 : 4c459a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 10.87 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 10.87 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 10.87 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 10.87 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1511 8.70 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 8.70 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 8.70 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 8.70 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1546 8.70 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1546 4.35 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 4.35 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1546 2.17 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 2.17 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000642780 : : * Called by the executor before invoking a function. : */ : void : pgstat_init_function_usage(FunctionCallInfoData *fcinfo, : PgStat_FunctionCallUsage *fcu) : { 0.00 : 642780: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 2.17 : 642781: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 8.70 : 642784: 41 54 push %r12 8.70 : 642786: 49 89 fc mov %rdi,%r12 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 2.17 : 642789: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1504 10.87 : 64278a: 48 89 f3 mov %rsi,%rbx 0.00 : 64278d: 48 83 ec 70 sub $0x70,%rsp : PgStat_BackendFunctionEntry *htabent; : bool found; : : if (pgstat_track_functions <= fcinfo->flinfo->fn_stats) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 4.35 : 642791: 48 8b 17 mov (%rdi),%rdx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1508 10.87 : 642794: 0f b6 42 10 movzbl 0x10(%rdx),%eax 10.87 : 642798: 3b 05 06 94 53 00 cmp 0x539406(%rip),%eax # b7bba4 8.70 : 64279e: 0f 8d ac 00 00 00 jge 642850 : /* stats not wanted */ : fcu->fs = NULL; : return; : } : : if (!pgStatFunctions) 0.00 : 6427a4: 48 83 3d 04 95 53 00 cmpq $0x0,0x539504(%rip) # b7bcb0 0.00 : 6427ab: 00 0.00 : 6427ac: 0f 84 de 00 00 00 je 642890 : &hash_ctl, : HASH_ELEM | HASH_FUNCTION); : } : : /* Get the stats entry for this function, create if necessary */ : htabent = hash_search(pgStatFunctions, &fcinfo->flinfo->fn_oid, 0.00 : 6427b2: 48 8b 3d f7 94 53 00 mov 0x5394f7(%rip),%rdi # b7bcb0 0.00 : 6427b9: 48 8d 72 08 lea 0x8(%rdx),%rsi 0.00 : 6427bd: 48 8d 4d ef lea -0x11(%rbp),%rcx 0.00 : 6427c1: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6427c6: e8 d5 1e 14 00 callq 7846a0 : HASH_ENTER, &found); : if (!found) 0.00 : 6427cb: 80 7d ef 00 cmpb $0x0,-0x11(%rbp) : &hash_ctl, : HASH_ELEM | HASH_FUNCTION); : } : : /* Get the stats entry for this function, create if necessary */ : htabent = hash_search(pgStatFunctions, &fcinfo->flinfo->fn_oid, 0.00 : 6427cf: 48 89 c2 mov %rax,%rdx 0.00 : 6427d2: 48 8d 40 08 lea 0x8(%rax),%rax : HASH_ENTER, &found); : if (!found) 0.00 : 6427d6: 74 40 je 642818 : MemSet(&htabent->f_counts, 0, sizeof(PgStat_FunctionCounts)); : : fcu->fs = &htabent->f_counts; 0.00 : 6427d8: 48 89 03 mov %rax,(%rbx) : : /* save stats for this function, later used to compensate for recursion */ : fcu->save_f_total_time = htabent->f_counts.f_total_time; 0.00 : 6427db: 48 8b 42 10 mov 0x10(%rdx),%rax : : /* save current backend-wide total time */ : fcu->save_total = total_func_time; : : /* get clock time as of function start */ : INSTR_TIME_SET_CURRENT(fcu->f_start); 0.00 : 6427df: 48 8d 7b 28 lea 0x28(%rbx),%rdi 0.00 : 6427e3: 31 f6 xor %esi,%esi : MemSet(&htabent->f_counts, 0, sizeof(PgStat_FunctionCounts)); : : fcu->fs = &htabent->f_counts; : : /* save stats for this function, later used to compensate for recursion */ : fcu->save_f_total_time = htabent->f_counts.f_total_time; 0.00 : 6427e5: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 6427e9: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 6427ed: 48 89 43 10 mov %rax,0x10(%rbx) : : /* save current backend-wide total time */ : fcu->save_total = total_func_time; 0.00 : 6427f1: 48 8b 05 28 97 53 00 mov 0x539728(%rip),%rax # b7bf20 0.00 : 6427f8: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 6427fc: 48 8b 05 25 97 53 00 mov 0x539725(%rip),%rax # b7bf28 0.00 : 642803: 48 89 43 20 mov %rax,0x20(%rbx) : : /* get clock time as of function start */ : INSTR_TIME_SET_CURRENT(fcu->f_start); 0.00 : 642807: e8 b4 6d e2 ff callq 4695c0 : } 0.00 : 64280c: 48 83 c4 70 add $0x70,%rsp 0.00 : 642810: 5b pop %rbx 0.00 : 642811: 41 5c pop %r12 0.00 : 642813: c9 leaveq 0.00 : 642814: c3 retq 0.00 : 642815: 0f 1f 00 nopl (%rax) : : /* Get the stats entry for this function, create if necessary */ : htabent = hash_search(pgStatFunctions, &fcinfo->flinfo->fn_oid, : HASH_ENTER, &found); : if (!found) : MemSet(&htabent->f_counts, 0, sizeof(PgStat_FunctionCounts)); 0.00 : 642818: a8 07 test $0x7,%al 0.00 : 64281a: 75 44 jne 642860 0.00 : 64281c: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 642823: 00 0.00 : 642824: 48 c7 42 10 00 00 00 movq $0x0,0x10(%rdx) 0.00 : 64282b: 00 0.00 : 64282c: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 642833: 00 0.00 : 642834: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 64283b: 00 0.00 : 64283c: 48 c7 42 28 00 00 00 movq $0x0,0x28(%rdx) 0.00 : 642843: 00 0.00 : 642844: eb 92 jmp 6427d8 0.00 : 642846: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 64284d: 00 00 00 : bool found; : : if (pgstat_track_functions <= fcinfo->flinfo->fn_stats) : { : /* stats not wanted */ : fcu->fs = NULL; /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1511 10.87 : 642850: 48 c7 06 00 00 00 00 movq $0x0,(%rsi) : /* save current backend-wide total time */ : fcu->save_total = total_func_time; : : /* get clock time as of function start */ : INSTR_TIME_SET_CURRENT(fcu->f_start); : } /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1546 8.70 : 642857: 48 83 c4 70 add $0x70,%rsp 0.00 : 64285b: 5b pop %rbx 0.00 : 64285c: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1546 4.35 : 64285e: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1546 8.70 : 64285f: c3 retq : : /* Get the stats entry for this function, create if necessary */ : htabent = hash_search(pgStatFunctions, &fcinfo->flinfo->fn_oid, : HASH_ENTER, &found); : if (!found) : MemSet(&htabent->f_counts, 0, sizeof(PgStat_FunctionCounts)); 0.00 : 642860: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 642867: 00 0.00 : 642868: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 64286f: 00 0.00 : 642870: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 642877: 00 0.00 : 642878: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 64287f: 00 0.00 : 642880: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 642887: 00 0.00 : 642888: e9 4b ff ff ff jmpq 6427d8 0.00 : 64288d: 0f 1f 00 nopl (%rax) : if (!pgStatFunctions) : { : /* First time through - initialize function stat table */ : HASHCTL hash_ctl; : : memset(&hash_ctl, 0, sizeof(hash_ctl)); 0.00 : 642890: 48 8d 55 80 lea -0x80(%rbp),%rdx 0.00 : 642894: 31 c0 xor %eax,%eax 0.00 : 642896: b9 0d 00 00 00 mov $0xd,%ecx : hash_ctl.keysize = sizeof(Oid); : hash_ctl.entrysize = sizeof(PgStat_BackendFunctionEntry); : hash_ctl.hash = oid_hash; : pgStatFunctions = hash_create("Function stat entries", 0.00 : 64289b: be 00 02 00 00 mov $0x200,%esi : if (!pgStatFunctions) : { : /* First time through - initialize function stat table */ : HASHCTL hash_ctl; : : memset(&hash_ctl, 0, sizeof(hash_ctl)); 0.00 : 6428a0: 48 89 d7 mov %rdx,%rdi 0.00 : 6428a3: f3 48 ab rep stos %rax,%es:(%rdi) : hash_ctl.keysize = sizeof(Oid); 0.00 : 6428a6: 48 c7 45 a8 04 00 00 movq $0x4,-0x58(%rbp) 0.00 : 6428ad: 00 : hash_ctl.entrysize = sizeof(PgStat_BackendFunctionEntry); 0.00 : 6428ae: 48 c7 45 b0 30 00 00 movq $0x30,-0x50(%rbp) 0.00 : 6428b5: 00 : hash_ctl.hash = oid_hash; : pgStatFunctions = hash_create("Function stat entries", 0.00 : 6428b6: bf 1c f0 89 00 mov $0x89f01c,%edi : HASHCTL hash_ctl; : : memset(&hash_ctl, 0, sizeof(hash_ctl)); : hash_ctl.keysize = sizeof(Oid); : hash_ctl.entrysize = sizeof(PgStat_BackendFunctionEntry); : hash_ctl.hash = oid_hash; 0.00 : 6428bb: 48 c7 45 b8 50 4f 78 movq $0x784f50,-0x48(%rbp) 0.00 : 6428c2: 00 : pgStatFunctions = hash_create("Function stat entries", 0.00 : 6428c3: b1 30 mov $0x30,%cl 0.00 : 6428c5: e8 e6 1f 14 00 callq 7848b0 0.00 : 6428ca: 48 89 05 df 93 53 00 mov %rax,0x5393df(%rip) # b7bcb0 0.00 : 6428d1: 49 8b 14 24 mov (%r12),%rdx 0.00 : 6428d5: e9 d8 fe ff ff jmpq 6427b2 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 37.78 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:486 6.67 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:399 4.44 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 4.44 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:473 4.44 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:505 4.44 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 4.44 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:399 4.44 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:326 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:462 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:464 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:507 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:505 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:497 2.22 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046f990 : : */ : Datum : nocachegetattr(HeapTuple tuple, : int attnum, : TupleDesc tupleDesc) : { 0.00 : 46f990: 55 push %rbp : * 2: Has a null or a var-width AFTER att. : * 3: Has nulls or var-widths BEFORE att. : * ---------------- : */ : : attnum--; 0.00 : 46f991: 44 8d 56 ff lea -0x1(%rsi),%r10d : */ : Datum : nocachegetattr(HeapTuple tuple, : int attnum, : TupleDesc tupleDesc) : { 0.00 : 46f995: 48 89 e5 mov %rsp,%rbp 0.00 : 46f998: 41 57 push %r15 0.00 : 46f99a: 41 56 push %r14 0.00 : 46f99c: 41 55 push %r13 0.00 : 46f99e: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:326 2.22 : 46f9a0: 53 push %rbx 0.00 : 46f9a1: 48 83 ec 28 sub $0x28,%rsp 0.00 : 46f9a5: 48 89 7d c8 mov %rdi,-0x38(%rbp) : HeapTupleHeader tup = tuple->t_data; 0.00 : 46f9a9: 48 8b 45 c8 mov -0x38(%rbp),%rax : */ : Datum : nocachegetattr(HeapTuple tuple, : int attnum, : TupleDesc tupleDesc) : { 0.00 : 46f9ad: 48 89 d7 mov %rdx,%rdi : HeapTupleHeader tup = tuple->t_data; 0.00 : 46f9b0: 4c 8b 40 10 mov 0x10(%rax),%r8 0.00 : 46f9b4: 4c 89 45 d0 mov %r8,-0x30(%rbp) : * ---------------- : */ : : attnum--; : : if (!HeapTupleNoNulls(tuple)) 0.00 : 46f9b8: 45 0f b7 48 14 movzwl 0x14(%r8),%r9d : nocachegetattr(HeapTuple tuple, : int attnum, : TupleDesc tupleDesc) : { : HeapTupleHeader tup = tuple->t_data; : Form_pg_attribute *att = tupleDesc->attrs; 0.00 : 46f9bd: 4c 8b 7a 08 mov 0x8(%rdx),%r15 : * ---------------- : */ : : attnum--; : : if (!HeapTupleNoNulls(tuple)) 0.00 : 46f9c1: 41 f6 c1 01 test $0x1,%r9b 0.00 : 46f9c5: 0f 84 25 01 00 00 je 46faf0 : /* : * there's a null somewhere in the tuple : * : * check to see if any preceding bits are null... : */ : int byte = attnum >> 3; 0.00 : 46f9cb: 44 89 d6 mov %r10d,%esi : int finalbit = attnum & 0x07; : : /* check for nulls "before" final bit of last byte */ : if ((~bp[byte]) & ((1 << finalbit) - 1)) 0.00 : 46f9ce: 44 89 d1 mov %r10d,%ecx : /* : * there's a null somewhere in the tuple : * : * check to see if any preceding bits are null... : */ : int byte = attnum >> 3; 0.00 : 46f9d1: c1 fe 03 sar $0x3,%esi : int finalbit = attnum & 0x07; : : /* check for nulls "before" final bit of last byte */ : if ((~bp[byte]) & ((1 << finalbit) - 1)) 0.00 : 46f9d4: 83 e1 07 and $0x7,%ecx 0.00 : 46f9d7: 48 63 c6 movslq %esi,%rax 0.00 : 46f9da: 41 0f b6 54 00 17 movzbl 0x17(%r8,%rax,1),%edx 0.00 : 46f9e0: b8 01 00 00 00 mov $0x1,%eax 0.00 : 46f9e5: d3 e0 shl %cl,%eax 0.00 : 46f9e7: 83 e8 01 sub $0x1,%eax 0.00 : 46f9ea: f7 d2 not %edx 0.00 : 46f9ec: 85 c2 test %eax,%edx 0.00 : 46f9ee: 0f 84 cc 00 00 00 je 46fac0 : } : } : } : } : : tp = (char *) tup + tup->t_hoff; 0.00 : 46f9f4: 41 0f b6 40 16 movzbl 0x16(%r8),%eax 0.00 : 46f9f9: 4d 8d 1c 00 lea (%r8,%rax,1),%r11 : */ : if (HeapTupleHasVarWidth(tuple)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 46f9fd: 31 f6 xor %esi,%esi 0.00 : 46f9ff: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 46fa05: 45 31 ed xor %r13d,%r13d 0.00 : 46fa08: eb 2f jmp 46fa39 0.00 : 46fa0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * attcacheoff until we reach either a null or a var-width attribute. : */ : off = 0; : for (i = 0;; i++) /* loop exit is at "break" */ : { : if (HeapTupleHasNulls(tuple) && att_isnull(i, bp)) 0.00 : 46fa10: 44 89 e8 mov %r13d,%eax 0.00 : 46fa13: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 46fa17: 44 89 e9 mov %r13d,%ecx 0.00 : 46fa1a: c1 f8 03 sar $0x3,%eax 0.00 : 46fa1d: 83 e1 07 and $0x7,%ecx 0.00 : 46fa20: 48 98 cltq 0.00 : 46fa22: 0f b6 44 02 17 movzbl 0x17(%rdx,%rax,1),%eax 0.00 : 46fa27: d3 f8 sar %cl,%eax 0.00 : 46fa29: a8 01 test $0x1,%al 0.00 : 46fa2b: 75 12 jne 46fa3f : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); : : if (usecache && att[i]->attlen <= 0) 0.00 : 46fa2d: 45 31 f6 xor %r14d,%r14d 0.00 : 46fa30: 45 0f b7 48 14 movzwl 0x14(%r8),%r9d : * then advance over the attr based on its length. Nulls have no : * storage and no alignment padding either. We can use/set : * attcacheoff until we reach either a null or a var-width attribute. : */ : off = 0; : for (i = 0;; i++) /* loop exit is at "break" */ /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:462 2.22 : 46fa35: 41 83 c5 01 add $0x1,%r13d : { : if (HeapTupleHasNulls(tuple) && att_isnull(i, bp)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:464 2.22 : 46fa39: 41 83 e1 01 and $0x1,%r9d 0.00 : 46fa3d: 75 d1 jne 46fa10 : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 4.44 : 46fa3f: 45 84 f6 test %r14b,%r14b 0.00 : 46fa42: 0f 85 08 01 00 00 jne 46fb50 0.00 : 46fa48: 49 63 fd movslq %r13d,%rdi 0.00 : 46fa4b: 49 8b 14 ff mov (%r15,%rdi,8),%rdx : off = att[i]->attcacheoff; : else if (att[i]->attlen == -1) 0.00 : 46fa4f: 66 83 7a 4c ff cmpw $0xffff,0x4c(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:473 4.44 : 46fa54: 0f 84 b6 01 00 00 je 46fc10 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.00 : 46fa5a: 0f b6 42 5e movzbl 0x5e(%rdx),%eax 0.00 : 46fa5e: 3c 69 cmp $0x69,%al 0.00 : 46fa60: 0f 84 2a 02 00 00 je 46fc90 0.00 : 46fa66: 3c 63 cmp $0x63,%al 0.00 : 46fa68: 74 0e je 46fa78 0.00 : 46fa6a: 3c 64 cmp $0x64,%al 0.00 : 46fa6c: 0f 84 7e 02 00 00 je 46fcf0 0.00 : 46fa72: 83 c6 01 add $0x1,%esi 0.00 : 46fa75: 83 e6 fe and $0xfffffffe,%esi : : if (usecache) 0.00 : 46fa78: 45 84 f6 test %r14b,%r14b 0.00 : 46fa7b: 74 03 je 46fa80 : att[i]->attcacheoff = off; 0.00 : 46fa7d: 89 72 54 mov %esi,0x54(%rdx) : } : : if (i == attnum) 0.00 : 46fa80: 45 39 d5 cmp %r10d,%r13d 0.00 : 46fa83: 0f 84 ea 00 00 00 je 46fb73 : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 46fa89: 49 8b 04 ff mov (%r15,%rdi,8),%rax 0.00 : 46fa8d: 44 0f b7 60 4c movzwl 0x4c(%rax),%r12d 0.00 : 46fa92: 66 45 85 e4 test %r12w,%r12w 0.00 : 46fa96: 0f 8e 44 01 00 00 jle 46fbe0 0.00 : 46fa9c: 41 0f bf c4 movswl %r12w,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 2.22 : 46faa0: 01 c6 add %eax,%esi : : if (usecache && att[i]->attlen <= 0) 0.00 : 46faa2: 45 84 f6 test %r14b,%r14b 0.00 : 46faa5: 0f 85 15 01 00 00 jne 46fbc0 0.00 : 46faab: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 46faaf: 4c 8b 40 10 mov 0x10(%rax),%r8 0.00 : 46fab3: e9 78 ff ff ff jmpq 46fa30 0.00 : 46fab8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46fabf: 00 : else : { : /* check for nulls in any "earlier" bytes */ : int i; : : for (i = 0; i < byte; i++) 0.00 : 46fac0: 85 f6 test %esi,%esi 0.00 : 46fac2: 7e 2c jle 46faf0 : { : if (bp[i] != 0xFF) 0.00 : 46fac4: 31 d2 xor %edx,%edx 0.00 : 46fac6: 41 80 78 17 ff cmpb $0xff,0x17(%r8) 0.00 : 46facb: 74 1a je 46fae7 0.00 : 46facd: 0f 1f 00 nopl (%rax) 0.00 : 46fad0: e9 1f ff ff ff jmpq 46f9f4 0.00 : 46fad5: 0f 1f 00 nopl (%rax) 0.00 : 46fad8: 48 63 c2 movslq %edx,%rax 0.00 : 46fadb: 41 80 7c 00 17 ff cmpb $0xff,0x17(%r8,%rax,1) 0.00 : 46fae1: 0f 85 0d ff ff ff jne 46f9f4 : else : { : /* check for nulls in any "earlier" bytes */ : int i; : : for (i = 0; i < byte; i++) 0.00 : 46fae7: 83 c2 01 add $0x1,%edx 0.00 : 46faea: 39 d6 cmp %edx,%esi 0.00 : 46faec: 7f ea jg 46fad8 0.00 : 46faee: 66 90 xchg %ax,%ax : } : } : } : } : : tp = (char *) tup + tup->t_hoff; 0.00 : 46faf0: 41 0f b6 40 16 movzbl 0x16(%r8),%eax 0.00 : 46faf5: 4d 8d 1c 00 lea (%r8,%rax,1),%r11 : { : /* : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) 0.00 : 46faf9: 49 63 c2 movslq %r10d,%rax 0.00 : 46fafc: 49 8d 1c c7 lea (%r15,%rax,8),%rbx 0.00 : 46fb00: 48 8b 13 mov (%rbx),%rdx 0.00 : 46fb03: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 46fb06: 85 c0 test %eax,%eax 0.00 : 46fb08: 0f 88 22 02 00 00 js 46fd30 : { : return fetchatt(att[attnum], 0.00 : 46fb0e: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 46fb12: 0f 84 e8 01 00 00 je 46fd00 0.00 : 46fb18: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 46fb1c: 66 83 fa 08 cmp $0x8,%dx 0.00 : 46fb20: 0f 84 da 03 00 00 je 46ff00 0.00 : 46fb26: 66 83 fa 04 cmp $0x4,%dx 0.00 : 46fb2a: 0f 84 08 04 00 00 je 46ff38 0.00 : 46fb30: 66 83 fa 02 cmp $0x2,%dx 0.00 : 46fb34: 0f 84 09 04 00 00 je 46ff43 0.00 : 46fb3a: 48 98 cltq 0.00 : 46fb3c: 41 0f b6 04 03 movzbl (%r11,%rax,1),%eax 0.00 : 46fb41: e9 99 01 00 00 jmpq 46fcdf 0.00 : 46fb46: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46fb4d: 00 00 00 : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:471 2.22 : 46fb50: 49 63 fd movslq %r13d,%rdi 0.00 : 46fb53: 49 8b 14 ff mov (%r15,%rdi,8),%rdx 2.22 : 46fb57: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 46fb5a: 85 c0 test %eax,%eax 0.00 : 46fb5c: 0f 88 ed fe ff ff js 46fa4f : : if (usecache) : att[i]->attcacheoff = off; : } : : if (i == attnum) 0.00 : 46fb62: 45 39 d5 cmp %r10d,%r13d : usecache = false; : continue; /* this cannot be the target att */ : } : : /* If we know the next offset, we can skip the rest */ : if (usecache && att[i]->attcacheoff >= 0) 0.00 : 46fb65: 89 c6 mov %eax,%esi 2.22 : 46fb67: 41 be 01 00 00 00 mov $0x1,%r14d : : if (usecache) : att[i]->attcacheoff = off; : } : : if (i == attnum) 0.00 : 46fb6d: 0f 85 16 ff ff ff jne 46fa89 : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); : : if (usecache && att[i]->attlen <= 0) : usecache = false; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:507 2.22 : 46fb73: 49 8b 04 ff mov (%r15,%rdi,8),%rax : } : : return fetchatt(att[attnum], tp + off); 0.00 : 46fb77: 80 78 5c 00 cmpb $0x0,0x5c(%rax) 0.00 : 46fb7b: 0f 84 57 01 00 00 je 46fcd8 0.00 : 46fb81: 0f b7 40 4c movzwl 0x4c(%rax),%eax 0.00 : 46fb85: 66 83 f8 08 cmp $0x8,%ax 0.00 : 46fb89: 0f 84 31 03 00 00 je 46fec0 0.00 : 46fb8f: 66 83 f8 04 cmp $0x4,%ax 0.00 : 46fb93: 0f 84 47 02 00 00 je 46fde0 0.00 : 46fb99: 66 83 f8 02 cmp $0x2,%ax 0.00 : 46fb9d: 0f 1f 00 nopl (%rax) 0.00 : 46fba0: 0f 84 77 03 00 00 je 46ff1d 0.00 : 46fba6: 48 63 c6 movslq %esi,%rax 0.00 : 46fba9: 41 0f b6 04 03 movzbl (%r11,%rax,1),%eax : } 0.00 : 46fbae: 48 83 c4 28 add $0x28,%rsp 0.00 : 46fbb2: 5b pop %rbx 0.00 : 46fbb3: 41 5c pop %r12 0.00 : 46fbb5: 41 5d pop %r13 0.00 : 46fbb7: 41 5e pop %r14 0.00 : 46fbb9: 41 5f pop %r15 0.00 : 46fbbb: c9 leaveq 0.00 : 46fbbc: c3 retq 0.00 : 46fbbd: 0f 1f 00 nopl (%rax) : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); : : if (usecache && att[i]->attlen <= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:505 2.22 : 46fbc0: 66 45 85 e4 test %r12w,%r12w 0.00 : 46fbc4: 0f 8e fe 00 00 00 jle 46fcc8 0.00 : 46fbca: 48 8b 55 c8 mov -0x38(%rbp),%rdx 4.44 : 46fbce: 4c 8b 42 10 mov 0x10(%rdx),%r8 0.00 : 46fbd2: e9 59 fe ff ff jmpq 46fa30 0.00 : 46fbd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46fbde: 00 00 : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 46fbe0: 66 41 83 fc ff cmp $0xffff,%r12w 0.00 : 46fbe5: 0f 85 b5 00 00 00 jne 46fca0 0.00 : 46fbeb: 48 63 d6 movslq %esi,%rdx 0.00 : 46fbee: 41 0f b6 04 13 movzbl (%r11,%rdx,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:503 4.44 : 46fbf3: 3c 01 cmp $0x1,%al 0.00 : 46fbf5: 0f 84 f5 01 00 00 je 46fdf0 2.22 : 46fbfb: a8 01 test $0x1,%al 0.00 : 46fbfd: 0f 84 15 01 00 00 je 46fd18 0.00 : 46fc03: d0 e8 shr %al 0.00 : 46fc05: 0f b6 c0 movzbl %al,%eax 0.00 : 46fc08: 8d 34 30 lea (%rax,%rsi,1),%esi 2.22 : 46fc0b: e9 92 fe ff ff jmpq 46faa2 : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 46fc10: 45 84 f6 test %r14b,%r14b 0.00 : 46fc13: 48 63 c6 movslq %esi,%rax 0.00 : 46fc16: 74 30 je 46fc48 0.00 : 46fc18: 0f b6 4a 5e movzbl 0x5e(%rdx),%ecx 0.00 : 46fc1c: 80 f9 69 cmp $0x69,%cl 0.00 : 46fc1f: 0f 84 8b 02 00 00 je 46feb0 0.00 : 46fc25: 80 f9 63 cmp $0x63,%cl 0.00 : 46fc28: 0f 84 9a 01 00 00 je 46fdc8 0.00 : 46fc2e: 80 f9 64 cmp $0x64,%cl 0.00 : 46fc31: 0f 84 d9 02 00 00 je 46ff10 0.00 : 46fc37: 48 8d 48 01 lea 0x1(%rax),%rcx 0.00 : 46fc3b: 48 83 e1 fe and $0xfffffffffffffffe,%rcx 0.00 : 46fc3f: 48 39 c1 cmp %rax,%rcx 0.00 : 46fc42: 0f 84 80 01 00 00 je 46fdc8 : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, 0.00 : 46fc48: 41 80 3c 03 00 cmpb $0x0,(%r11,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:486 37.78 : 46fc4d: 75 31 jne 46fc80 0.00 : 46fc4f: 0f b6 52 5e movzbl 0x5e(%rdx),%edx 0.00 : 46fc53: 80 fa 69 cmp $0x69,%dl 0.00 : 46fc56: 0f 84 84 02 00 00 je 46fee0 0.00 : 46fc5c: 80 fa 63 cmp $0x63,%dl 0.00 : 46fc5f: 90 nop 0.00 : 46fc60: 74 1e je 46fc80 0.00 : 46fc62: 80 fa 64 cmp $0x64,%dl 0.00 : 46fc65: 0f 84 bf 02 00 00 je 46ff2a 0.00 : 46fc6b: 48 83 c0 01 add $0x1,%rax 0.00 : 46fc6f: 45 31 f6 xor %r14d,%r14d 0.00 : 46fc72: 89 c6 mov %eax,%esi 0.00 : 46fc74: 83 e6 fe and $0xfffffffe,%esi 0.00 : 46fc77: e9 04 fe ff ff jmpq 46fa80 0.00 : 46fc7c: 0f 1f 40 00 nopl 0x0(%rax) : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); : : if (usecache) : att[i]->attcacheoff = off; /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:497 2.22 : 46fc80: 45 31 f6 xor %r14d,%r14d 0.00 : 46fc83: e9 f8 fd ff ff jmpq 46fa80 0.00 : 46fc88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46fc8f: 00 : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.00 : 46fc90: 83 c6 03 add $0x3,%esi 0.00 : 46fc93: 83 e6 fc and $0xfffffffc,%esi 0.00 : 46fc96: e9 dd fd ff ff jmpq 46fa78 0.00 : 46fc9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 46fca0: 48 63 de movslq %esi,%rbx 0.00 : 46fca3: 44 89 55 c0 mov %r10d,-0x40(%rbp) 0.00 : 46fca7: 4c 89 5d b8 mov %r11,-0x48(%rbp) 0.00 : 46fcab: 49 8d 3c 1b lea (%r11,%rbx,1),%rdi 0.00 : 46fcaf: e8 9c 9b ff ff callq 469850 0.00 : 46fcb4: 4c 8b 5d b8 mov -0x48(%rbp),%r11 0.00 : 46fcb8: 8d 74 03 01 lea 0x1(%rbx,%rax,1),%esi 0.00 : 46fcbc: 44 8b 55 c0 mov -0x40(%rbp),%r10d 0.00 : 46fcc0: e9 dd fd ff ff jmpq 46faa2 0.00 : 46fcc5: 0f 1f 00 nopl (%rax) 0.00 : 46fcc8: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 46fccc: 4c 8b 40 10 mov 0x10(%rax),%r8 0.00 : 46fcd0: e9 58 fd ff ff jmpq 46fa2d 0.00 : 46fcd5: 0f 1f 00 nopl (%rax) : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 2.22 : 46fcd8: 48 63 c6 movslq %esi,%rax 0.00 : 46fcdb: 49 8d 04 03 lea (%r11,%rax,1),%rax : } 0.00 : 46fcdf: 48 83 c4 28 add $0x28,%rsp 0.00 : 46fce3: 5b pop %rbx 0.00 : 46fce4: 41 5c pop %r12 0.00 : 46fce6: 41 5d pop %r13 0.00 : 46fce8: 41 5e pop %r14 0.00 : 46fcea: 41 5f pop %r15 0.00 : 46fcec: c9 leaveq 0.00 : 46fced: c3 retq 0.00 : 46fcee: 66 90 xchg %ax,%ax : } : } : else : { : /* not varlena, so safe to use att_align_nominal */ : off = att_align_nominal(off, att[i]->attalign); 0.00 : 46fcf0: 83 c6 07 add $0x7,%esi 0.00 : 46fcf3: 83 e6 f8 and $0xfffffff8,%esi 0.00 : 46fcf6: e9 7d fd ff ff jmpq 46fa78 0.00 : 46fcfb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 46fd00: 48 83 c4 28 add $0x28,%rsp : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 46fd04: 48 98 cltq : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 46fd06: 5b pop %rbx 0.00 : 46fd07: 41 5c pop %r12 0.00 : 46fd09: 41 5d pop %r13 0.00 : 46fd0b: 41 5e pop %r14 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 46fd0d: 49 8d 04 03 lea (%r11,%rax,1),%rax : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); : } 0.00 : 46fd11: 41 5f pop %r15 0.00 : 46fd13: c9 leaveq 0.00 : 46fd14: c3 retq 0.00 : 46fd15: 0f 1f 00 nopl (%rax) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 46fd18: 41 8b 04 13 mov (%r11,%rdx,1),%eax 0.00 : 46fd1c: c1 e8 02 shr $0x2,%eax 0.00 : 46fd1f: 8d 34 30 lea (%rax,%rsi,1),%esi 0.00 : 46fd22: e9 7b fd ff ff jmpq 46faa2 0.00 : 46fd27: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46fd2e: 00 00 : /* : * Otherwise, check for non-fixed-length attrs up to and including : * target. If there aren't any, it's safe to cheaply initialize the : * cached offsets for these attrs. : */ : if (HeapTupleHasVarWidth(tuple)) 0.00 : 46fd30: 41 f6 c1 02 test $0x2,%r9b 0.00 : 46fd34: 0f 84 b6 01 00 00 je 46fef0 : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 46fd3a: 45 85 d2 test %r10d,%r10d 0.00 : 46fd3d: 0f 88 ad 01 00 00 js 46fef0 : { : if (att[j]->attlen <= 0) 0.00 : 46fd43: 49 8b 0f mov (%r15),%rcx 0.00 : 46fd46: 31 d2 xor %edx,%edx 0.00 : 46fd48: 66 83 79 4c 00 cmpw $0x0,0x4c(%rcx) 0.00 : 46fd4d: 7f 1b jg 46fd6a 0.00 : 46fd4f: 90 nop 0.00 : 46fd50: e9 a8 fc ff ff jmpq 46f9fd 0.00 : 46fd55: 0f 1f 00 nopl (%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:399 6.67 : 46fd58: 48 63 c2 movslq %edx,%rax 0.00 : 46fd5b: 49 8b 04 c7 mov (%r15,%rax,8),%rax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:399 4.44 : 46fd5f: 66 83 78 4c 00 cmpw $0x0,0x4c(%rax) 0.00 : 46fd64: 0f 8e 93 fc ff ff jle 46f9fd : */ : if (HeapTupleHasVarWidth(tuple)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 46fd6a: 83 c2 01 add $0x1,%edx 0.00 : 46fd6d: 41 39 d2 cmp %edx,%r10d 0.00 : 46fd70: 7d e6 jge 46fd58 : } : } : : if (!slow) : { : int natts = tupleDesc->natts; 0.00 : 46fd72: 44 8b 0f mov (%rdi),%r9d : * it's cheap to compute offsets for fixed-width columns, we take the : * opportunity to initialize the cached offsets for *all* the leading : * fixed-width columns, in hope of avoiding future visits to this : * routine. : */ : att[0]->attcacheoff = 0; 0.00 : 46fd75: c7 41 54 00 00 00 00 movl $0x0,0x54(%rcx) : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 46fd7c: 41 83 f9 01 cmp $0x1,%r9d 0.00 : 46fd80: 7e 35 jle 46fdb7 0.00 : 46fd82: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 46fd86: 8b 50 54 mov 0x54(%rax),%edx 0.00 : 46fd89: 85 d2 test %edx,%edx 0.00 : 46fd8b: 0f 8e be 01 00 00 jle 46ff4f 0.00 : 46fd91: 4c 89 fa mov %r15,%rdx 0.00 : 46fd94: be 01 00 00 00 mov $0x1,%esi 0.00 : 46fd99: eb 14 jmp 46fdaf 0.00 : 46fd9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46fda0: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 46fda4: 48 83 c2 08 add $0x8,%rdx 0.00 : 46fda8: 8b 40 54 mov 0x54(%rax),%eax 0.00 : 46fdab: 85 c0 test %eax,%eax 0.00 : 46fdad: 7e 71 jle 46fe20 : j++; 0.00 : 46fdaf: 83 c6 01 add $0x1,%esi : * routine. : */ : att[0]->attcacheoff = 0; : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 46fdb2: 41 39 f1 cmp %esi,%r9d 0.00 : 46fdb5: 7f e9 jg 46fda0 : off += att[j]->attlen; : } : : Assert(j > attnum); : : off = att[attnum]->attcacheoff; 0.00 : 46fdb7: 48 8b 03 mov (%rbx),%rax 0.00 : 46fdba: 8b 70 54 mov 0x54(%rax),%esi 0.00 : 46fdbd: e9 b5 fd ff ff jmpq 46fb77 0.00 : 46fdc2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; 0.00 : 46fdc8: 89 72 54 mov %esi,0x54(%rdx) 0.00 : 46fdcb: 41 be 01 00 00 00 mov $0x1,%r14d : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 46fdd1: e9 aa fc ff ff jmpq 46fa80 0.00 : 46fdd6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46fddd: 00 00 00 : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 46fde0: 48 63 c6 movslq %esi,%rax 0.00 : 46fde3: 41 8b 04 03 mov (%r11,%rax,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:510 4.44 : 46fde7: e9 f3 fe ff ff jmpq 46fcdf 0.00 : 46fdec: 0f 1f 40 00 nopl 0x0(%rax) : } : : if (i == attnum) : break; : : off = att_addlength_pointer(off, att[i]->attlen, tp + off); 0.00 : 46fdf0: 41 0f b6 54 13 01 movzbl 0x1(%r11,%rdx,1),%edx 0.00 : 46fdf6: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 46fdfb: 80 fa 01 cmp $0x1,%dl 0.00 : 46fdfe: 0f 84 04 fe ff ff je 46fc08 0.00 : 46fe04: 80 fa 12 cmp $0x12,%dl 0.00 : 46fe07: b8 03 00 00 00 mov $0x3,%eax 0.00 : 46fe0c: ba 12 00 00 00 mov $0x12,%edx 0.00 : 46fe11: 0f 44 c2 cmove %edx,%eax 0.00 : 46fe14: 8d 34 30 lea (%rax,%rsi,1),%esi 0.00 : 46fe17: e9 86 fc ff ff jmpq 46faa2 0.00 : 46fe1c: 0f 1f 40 00 nopl 0x0(%rax) : * routine. : */ : att[0]->attcacheoff = 0; : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) 0.00 : 46fe20: 89 f0 mov %esi,%eax : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 46fe22: 48 63 d0 movslq %eax,%rdx 0.00 : 46fe25: 49 8b 44 d7 f8 mov -0x8(%r15,%rdx,8),%rax : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 46fe2a: 49 8d 14 d7 lea (%r15,%rdx,8),%rdx 0.00 : 46fe2e: 48 8b 3a mov (%rdx),%rdi : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 46fe31: 8b 48 54 mov 0x54(%rax),%ecx 0.00 : 46fe34: 0f b7 40 4c movzwl 0x4c(%rax),%eax : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 46fe38: 66 83 7f 4c 00 cmpw $0x0,0x4c(%rdi) : : /* we might have set some offsets in the slow path previously */ : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; 0.00 : 46fe3d: 98 cwtl 0.00 : 46fe3e: 8d 0c 08 lea (%rax,%rcx,1),%ecx : : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) 0.00 : 46fe41: 7f 4f jg 46fe92 0.00 : 46fe43: e9 6f ff ff ff jmpq 46fdb7 0.00 : 46fe48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46fe4f: 00 : break; : : off = att_align_nominal(off, att[j]->attalign); 0.00 : 46fe50: 3c 63 cmp $0x63,%al 0.00 : 46fe52: 74 0c je 46fe60 0.00 : 46fe54: 3c 64 cmp $0x64,%al 0.00 : 46fe56: 66 90 xchg %ax,%ax 0.00 : 46fe58: 74 4e je 46fea8 0.00 : 46fe5a: 83 c1 01 add $0x1,%ecx 0.00 : 46fe5d: 83 e1 fe and $0xfffffffe,%ecx : : att[j]->attcacheoff = off; 0.00 : 46fe60: 89 4f 54 mov %ecx,0x54(%rdi) : : off += att[j]->attlen; 0.00 : 46fe63: 48 8b 02 mov (%rdx),%rax : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; : : for (; j < natts; j++) 0.00 : 46fe66: 83 c6 01 add $0x1,%esi 0.00 : 46fe69: 41 39 f1 cmp %esi,%r9d : : off = att_align_nominal(off, att[j]->attalign); : : att[j]->attcacheoff = off; : : off += att[j]->attlen; 0.00 : 46fe6c: 44 0f b7 40 4c movzwl 0x4c(%rax),%r8d : while (j < natts && att[j]->attcacheoff > 0) : j++; : : off = att[j - 1]->attcacheoff + att[j - 1]->attlen; : : for (; j < natts; j++) 0.00 : 46fe71: 0f 8e 40 ff ff ff jle 46fdb7 : { : if (att[j]->attlen <= 0) 0.00 : 46fe77: 48 63 c6 movslq %esi,%rax 0.00 : 46fe7a: 49 8d 14 c7 lea (%r15,%rax,8),%rdx 0.00 : 46fe7e: 48 8b 3a mov (%rdx),%rdi 0.00 : 46fe81: 66 83 7f 4c 00 cmpw $0x0,0x4c(%rdi) 0.00 : 46fe86: 0f 8e 2b ff ff ff jle 46fdb7 : : off = att_align_nominal(off, att[j]->attalign); : : att[j]->attcacheoff = off; : : off += att[j]->attlen; 0.00 : 46fe8c: 41 0f bf c0 movswl %r8w,%eax 0.00 : 46fe90: 01 c1 add %eax,%ecx : for (; j < natts; j++) : { : if (att[j]->attlen <= 0) : break; : : off = att_align_nominal(off, att[j]->attalign); 0.00 : 46fe92: 0f b6 47 5e movzbl 0x5e(%rdi),%eax 0.00 : 46fe96: 3c 69 cmp $0x69,%al 0.00 : 46fe98: 75 b6 jne 46fe50 0.00 : 46fe9a: 83 c1 03 add $0x3,%ecx 0.00 : 46fe9d: 83 e1 fc and $0xfffffffc,%ecx 0.00 : 46fea0: eb be jmp 46fe60 0.00 : 46fea2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 46fea8: 83 c1 07 add $0x7,%ecx 0.00 : 46feab: 83 e1 f8 and $0xfffffff8,%ecx 0.00 : 46feae: eb b0 jmp 46fe60 : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 46feb0: 48 8d 48 03 lea 0x3(%rax),%rcx 0.00 : 46feb4: 48 83 e1 fc and $0xfffffffffffffffc,%rcx 0.00 : 46feb8: e9 82 fd ff ff jmpq 46fc3f 0.00 : 46febd: 0f 1f 00 nopl (%rax) : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 46fec0: 48 63 c6 movslq %esi,%rax 0.00 : 46fec3: 49 8b 04 03 mov (%r11,%rax,1),%rax : } 0.00 : 46fec7: 48 83 c4 28 add $0x28,%rsp 0.00 : 46fecb: 5b pop %rbx 0.00 : 46fecc: 41 5c pop %r12 0.00 : 46fece: 41 5d pop %r13 0.00 : 46fed0: 41 5e pop %r14 0.00 : 46fed2: 41 5f pop %r15 0.00 : 46fed4: c9 leaveq 0.00 : 46fed5: c3 retq 0.00 : 46fed6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 46fedd: 00 00 00 : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, 0.00 : 46fee0: 83 c6 03 add $0x3,%esi 0.00 : 46fee3: 45 31 f6 xor %r14d,%r14d 0.00 : 46fee6: 83 e6 fc and $0xfffffffc,%esi 0.00 : 46fee9: e9 92 fb ff ff jmpq 46fa80 0.00 : 46feee: 66 90 xchg %ax,%ax : */ : if (HeapTupleHasVarWidth(tuple)) : { : int j; : : for (j = 0; j <= attnum; j++) 0.00 : 46fef0: 49 8b 0f mov (%r15),%rcx 0.00 : 46fef3: e9 7a fe ff ff jmpq 46fd72 0.00 : 46fef8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46feff: 00 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 46ff00: 48 98 cltq 0.00 : 46ff02: 49 8b 04 03 mov (%r11,%rax,1),%rax 0.00 : 46ff06: e9 d4 fd ff ff jmpq 46fcdf 0.00 : 46ff0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * We can only cache the offset for a varlena attribute if the : * offset is already suitably aligned, so that there would be : * no pad bytes in any case: then the offset will be valid for : * either an aligned or unaligned value. : */ : if (usecache && 0.00 : 46ff10: 48 8d 48 07 lea 0x7(%rax),%rcx 0.00 : 46ff14: 48 83 e1 f8 and $0xfffffffffffffff8,%rcx 0.00 : 46ff18: e9 22 fd ff ff jmpq 46fc3f : if (usecache && att[i]->attlen <= 0) : usecache = false; : } : } : : return fetchatt(att[attnum], tp + off); 0.00 : 46ff1d: 48 63 c6 movslq %esi,%rax 0.00 : 46ff20: 41 0f b7 04 03 movzwl (%r11,%rax,1),%eax 0.00 : 46ff25: e9 b5 fd ff ff jmpq 46fcdf : if (usecache && : off == att_align_nominal(off, att[i]->attalign)) : att[i]->attcacheoff = off; : else : { : off = att_align_pointer(off, att[i]->attalign, -1, 0.00 : 46ff2a: 83 c6 07 add $0x7,%esi 0.00 : 46ff2d: 45 31 f6 xor %r14d,%r14d 0.00 : 46ff30: 83 e6 f8 and $0xfffffff8,%esi 0.00 : 46ff33: e9 48 fb ff ff jmpq 46fa80 : * If we get here, there are no nulls up to and including the target : * attribute. If we have a cached offset, we can use it. : */ : if (att[attnum]->attcacheoff >= 0) : { : return fetchatt(att[attnum], 0.00 : 46ff38: 48 98 cltq 0.00 : 46ff3a: 41 8b 04 03 mov (%r11,%rax,1),%eax 0.00 : 46ff3e: e9 9c fd ff ff jmpq 46fcdf 0.00 : 46ff43: 48 98 cltq 0.00 : 46ff45: 41 0f b7 04 03 movzwl (%r11,%rax,1),%eax 0.00 : 46ff4a: e9 90 fd ff ff jmpq 46fcdf : } : } : } : } : : tp = (char *) tup + tup->t_hoff; 0.00 : 46ff4f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 46ff54: be 01 00 00 00 mov $0x1,%esi 0.00 : 46ff59: e9 c4 fe ff ff jmpq 46fe22 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 28.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:83 6.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:87 6.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 4.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 4.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 2.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:83 2.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 2.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 2.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:91 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000673de0 : : * BufTableLookup : * Lookup the given BufferTag; return buffer ID, or -1 if not found : */ : int : BufTableLookup(BufferTag *tagPtr) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:83 2.22 : 673de0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:83 28.89 : 673de1: 48 89 e5 mov %rsp,%rbp 0.00 : 673de4: 48 83 ec 20 sub $0x20,%rsp : BufferLookupEnt ent; : : ent.key = *tagPtr; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 2.22 : 673de8: 48 8b 07 mov (%rdi),%rax : if (!CHashSearch(SharedBufHash, &ent)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:87 6.67 : 673deb: 48 8d 75 e0 lea -0x20(%rbp),%rsi : int : BufTableLookup(BufferTag *tagPtr) : { : BufferLookupEnt ent; : : ent.key = *tagPtr; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 4.44 : 673def: 48 89 45 e0 mov %rax,-0x20(%rbp) 4.44 : 673df3: 48 8b 47 08 mov 0x8(%rdi),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 40.00 : 673df7: 48 89 45 e8 mov %rax,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 2.22 : 673dfb: 8b 47 10 mov 0x10(%rdi),%eax : if (!CHashSearch(SharedBufHash, &ent)) 0.00 : 673dfe: 48 8b 3d 53 92 50 00 mov 0x509253(%rip),%rdi # b7d058 : int : BufTableLookup(BufferTag *tagPtr) : { : BufferLookupEnt ent; : : ent.key = *tagPtr; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:86 6.67 : 673e05: 89 45 f0 mov %eax,-0x10(%rbp) : if (!CHashSearch(SharedBufHash, &ent)) 0.00 : 673e08: e8 e3 f4 10 00 callq 7832f0 0.00 : 673e0d: 89 c2 mov %eax,%edx 0.00 : 673e0f: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 673e14: 84 d2 test %dl,%dl 0.00 : 673e16: 0f 45 45 f4 cmovne -0xc(%rbp),%eax : return -1; : : return ent.id; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:91 2.22 : 673e1a: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 88.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:754 6.82 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:754 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:756 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798b80 : : * pfree : * Release an allocated chunk. : */ : void : pfree(void *pointer) : { 0.00 : 798b80: 55 push %rbp 0.00 : 798b81: 48 89 f8 mov %rdi,%rax : Assert(pointer == (void *) MAXALIGN(pointer)); : : /* : * OK, it's probably safe to look at the chunk header. : */ : context = ((StandardChunkHeader *) 0.00 : 798b84: 48 8b 7f f0 mov -0x10(%rdi),%rdi : ((char *) pointer - STANDARDCHUNKHEADERSIZE))->context; : : AssertArg(MemoryContextIsValid(context)); : : (*context->methods->free_p) (context, pointer); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:754 88.64 : 798b88: 48 89 c6 mov %rax,%rsi : * pfree : * Release an allocated chunk. : */ : void : pfree(void *pointer) : { 0.00 : 798b8b: 48 89 e5 mov %rsp,%rbp : context = ((StandardChunkHeader *) : ((char *) pointer - STANDARDCHUNKHEADERSIZE))->context; : : AssertArg(MemoryContextIsValid(context)); : : (*context->methods->free_p) (context, pointer); 0.00 : 798b8e: 48 8b 57 08 mov 0x8(%rdi),%rdx 6.82 : 798b92: 4c 8b 5a 08 mov 0x8(%rdx),%r11 : VALGRIND_MEMPOOL_FREE(context, pointer); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:756 4.55 : 798b96: c9 leaveq : context = ((StandardChunkHeader *) : ((char *) pointer - STANDARDCHUNKHEADERSIZE))->context; : : AssertArg(MemoryContextIsValid(context)); : : (*context->methods->free_p) (context, pointer); 0.00 : 798b97: 41 ff e3 jmpq *%r11 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.95 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 9.30 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 9.30 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 9.30 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 4.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 4.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 4.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 4.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 4.65 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:149 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:160 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:177 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:183 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:185 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:185 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 2.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:198 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674520 : : * : * Only works for shared buffers. : */ : static PrivateRefCountEntry* : GetPrivateRefCountEntry(Buffer buffer, bool create, bool do_move) : { 0.00 : 674520: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 2.33 : 674521: 48 89 e5 mov %rsp,%rbp 4.65 : 674524: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 13.95 : 674526: 41 89 f7 mov %esi,%r15d : */ : for (i = 0; i < REFCOUNT_ARRAY_ENTRIES; i++) : { : res = &PrivateRefCountArray[i]; : : if (res->buffer == buffer) 0.00 : 674529: 89 fe mov %edi,%esi : * : * Only works for shared buffers. : */ : static PrivateRefCountEntry* : GetPrivateRefCountEntry(Buffer buffer, bool create, bool do_move) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:146 2.33 : 67452b: 41 56 push %r14 4.65 : 67452d: 41 55 push %r13 0.00 : 67452f: 41 54 push %r12 0.00 : 674531: 41 89 d4 mov %edx,%r12d : */ : for (i = 0; i < REFCOUNT_ARRAY_ENTRIES; i++) : { : res = &PrivateRefCountArray[i]; : : if (res->buffer == buffer) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 4.65 : 674534: ba c0 d0 b7 00 mov $0xb7d0c0,%edx : * : * Only works for shared buffers. : */ : static PrivateRefCountEntry* : GetPrivateRefCountEntry(Buffer buffer, bool create, bool do_move) : { 0.00 : 674539: 53 push %rbx : */ : for (i = 0; i < REFCOUNT_ARRAY_ENTRIES; i++) : { : res = &PrivateRefCountArray[i]; : : if (res->buffer == buffer) 0.00 : 67453a: 31 db xor %ebx,%ebx : * : * Only works for shared buffers. : */ : static PrivateRefCountEntry* : GetPrivateRefCountEntry(Buffer buffer, bool create, bool do_move) : { 0.00 : 67453c: 48 83 ec 18 sub $0x18,%rsp 0.00 : 674540: 89 7d c4 mov %edi,-0x3c(%rbp) : PrivateRefCountEntry *res; : PrivateRefCountEntry *free = NULL; : bool found = false; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:149 2.33 : 674543: c6 45 d7 00 movb $0x0,-0x29(%rbp) 0.00 : 674547: eb 14 jmp 67455d 0.00 : 674549: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (res->buffer == buffer) : return res; : : /* Remember where to put a new refcount, should it become necessary. */ : if (free == NULL && res->buffer == InvalidBuffer) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 2.33 : 674550: 48 83 c2 08 add $0x8,%rdx : : /* : * First search for references in the array, that'll be sufficient in the : * majority of cases. : */ : for (i = 0; i < REFCOUNT_ARRAY_ENTRIES; i++) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:160 2.33 : 674554: 48 81 fa 00 d1 b7 00 cmp $0xb7d100,%rdx 0.00 : 67455b: 74 2b je 674588 : { : res = &PrivateRefCountArray[i]; : : if (res->buffer == buffer) 0.00 : 67455d: 8b 0a mov (%rdx),%ecx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 9.30 : 67455f: 48 89 d0 mov %rdx,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:164 2.33 : 674562: 39 f1 cmp %esi,%ecx 0.00 : 674564: 0f 84 c8 00 00 00 je 674632 : return res; : : /* Remember where to put a new refcount, should it become necessary. */ : if (free == NULL && res->buffer == InvalidBuffer) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:168 9.30 : 67456a: 48 85 db test %rbx,%rbx 0.00 : 67456d: 75 e1 jne 674550 9.30 : 67456f: 85 c9 test %ecx,%ecx 0.00 : 674571: 48 0f 44 da cmove %rdx,%rbx 0.00 : 674575: 48 83 c2 08 add $0x8,%rdx : : /* : * First search for references in the array, that'll be sufficient in the : * majority of cases. : */ : for (i = 0; i < REFCOUNT_ARRAY_ENTRIES; i++) 0.00 : 674579: 48 81 fa 00 d1 b7 00 cmp $0xb7d100,%rdx 0.00 : 674580: 75 db jne 67455d 0.00 : 674582: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Look up the buffer in the hashtable if we've previously overflowed into : * it. : */ : if (PrivateRefCountOverflowed > 0) 0.00 : 674588: 8b 05 e2 8a 50 00 mov 0x508ae2(%rip),%eax # b7d070 : /* : * By here we know that the buffer, if already pinned, isn't residing in : * the array. : */ : res = NULL; : found = false; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:177 2.33 : 67458e: c6 45 d7 00 movb $0x0,-0x29(%rbp) : : /* : * Look up the buffer in the hashtable if we've previously overflowed into : * it. : */ : if (PrivateRefCountOverflowed > 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:183 2.33 : 674592: 85 c0 test %eax,%eax 0.00 : 674594: 0f 8e ee 00 00 00 jle 674688 : { : res = hash_search(PrivateRefCountHash, /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:185 2.33 : 67459a: 4c 8d 75 d7 lea -0x29(%rbp),%r14 0.00 : 67459e: 48 8b 3d d3 8a 50 00 mov 0x508ad3(%rip),%rdi # b7d078 0.00 : 6745a5: 48 8d 75 c4 lea -0x3c(%rbp),%rsi 0.00 : 6745a9: 31 d2 xor %edx,%edx 0.00 : 6745ab: 4c 89 f1 mov %r14,%rcx 2.33 : 6745ae: e8 ed 00 11 00 callq 7846a0 : (void *) &buffer, : HASH_FIND, : &found); : } : : if (!found) 0.00 : 6745b3: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) : * Look up the buffer in the hashtable if we've previously overflowed into : * it. : */ : if (PrivateRefCountOverflowed > 0) : { : res = hash_search(PrivateRefCountHash, 0.00 : 6745b7: 49 89 c5 mov %rax,%r13 : (void *) &buffer, : HASH_FIND, : &found); : } : : if (!found) 0.00 : 6745ba: 0f 84 c8 00 00 00 je 674688 : : } : } : else : { : if (!do_move) 0.00 : 6745c0: 45 84 e4 test %r12b,%r12b 0.00 : 6745c3: 74 6d je 674632 : { : return res; : } : else if (found && free != NULL) 0.00 : 6745c5: 48 85 db test %rbx,%rbx 0.00 : 6745c8: 75 7e jne 674648 : */ : PrivateRefCountEntry *arrayent; : PrivateRefCountEntry *hashent; : : /* select victim slot */ : arrayent = &PrivateRefCountArray[ 0.00 : 6745ca: 8b 05 b0 8a 50 00 mov 0x508ab0(%rip),%eax # b7d080 : PrivateRefCountClock++ % REFCOUNT_ARRAY_ENTRIES]; : Assert(arrayent->buffer != InvalidBuffer); : : /* enter victim entry into the hashtable */ : hashent = hash_search(PrivateRefCountHash, 0.00 : 6745d0: 48 8b 3d a1 8a 50 00 mov 0x508aa1(%rip),%rdi # b7d078 0.00 : 6745d7: 4c 89 f1 mov %r14,%rcx 0.00 : 6745da: ba 01 00 00 00 mov $0x1,%edx : */ : PrivateRefCountEntry *arrayent; : PrivateRefCountEntry *hashent; : : /* select victim slot */ : arrayent = &PrivateRefCountArray[ 0.00 : 6745df: 49 89 c4 mov %rax,%r12 0.00 : 6745e2: 83 c0 01 add $0x1,%eax 0.00 : 6745e5: 41 83 e4 07 and $0x7,%r12d 0.00 : 6745e9: 89 05 91 8a 50 00 mov %eax,0x508a91(%rip) # b7d080 0.00 : 6745ef: 4a 8d 1c e5 c0 d0 b7 lea 0xb7d0c0(,%r12,8),%rbx 0.00 : 6745f6: 00 : PrivateRefCountClock++ % REFCOUNT_ARRAY_ENTRIES]; : Assert(arrayent->buffer != InvalidBuffer); : : /* enter victim entry into the hashtable */ : hashent = hash_search(PrivateRefCountHash, 0.00 : 6745f7: 48 89 de mov %rbx,%rsi 0.00 : 6745fa: e8 a1 00 11 00 callq 7846a0 : (void *) &arrayent->buffer, : HASH_ENTER, : &found); : Assert(!found); : hashent->refcount = arrayent->refcount; 0.00 : 6745ff: 8b 53 04 mov 0x4(%rbx),%edx : /* fill now free array entry with previously searched entry */ : arrayent->buffer = res->buffer; : arrayent->refcount = res->refcount; : : /* and remove the old entry */ : hash_search(PrivateRefCountHash, 0.00 : 674602: 4c 89 f1 mov %r14,%rcx 0.00 : 674605: 48 89 de mov %rbx,%rsi : hashent = hash_search(PrivateRefCountHash, : (void *) &arrayent->buffer, : HASH_ENTER, : &found); : Assert(!found); : hashent->refcount = arrayent->refcount; 0.00 : 674608: 89 50 04 mov %edx,0x4(%rax) : : /* fill now free array entry with previously searched entry */ : arrayent->buffer = res->buffer; 0.00 : 67460b: 41 8b 45 00 mov 0x0(%r13),%eax : arrayent->refcount = res->refcount; : : /* and remove the old entry */ : hash_search(PrivateRefCountHash, 0.00 : 67460f: ba 02 00 00 00 mov $0x2,%edx : &found); : Assert(!found); : hashent->refcount = arrayent->refcount; : : /* fill now free array entry with previously searched entry */ : arrayent->buffer = res->buffer; 0.00 : 674614: 42 89 04 e5 c0 d0 b7 mov %eax,0xb7d0c0(,%r12,8) 0.00 : 67461b: 00 : arrayent->refcount = res->refcount; 0.00 : 67461c: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 674620: 89 43 04 mov %eax,0x4(%rbx) : : /* and remove the old entry */ : hash_search(PrivateRefCountHash, 0.00 : 674623: 48 8b 3d 4e 8a 50 00 mov 0x508a4e(%rip),%rdi # b7d078 0.00 : 67462a: e8 71 00 11 00 callq 7846a0 0.00 : 67462f: 48 89 d8 mov %rbx,%rax : } : } : : Assert(false); /* unreachable */ : return NULL; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:304 2.33 : 674632: 48 83 c4 18 add $0x18,%rsp 2.33 : 674636: 5b pop %rbx 4.65 : 674637: 41 5c pop %r12 0.00 : 674639: 41 5d pop %r13 2.33 : 67463b: 41 5e pop %r14 0.00 : 67463d: 41 5f pop %r15 4.65 : 67463f: c9 leaveq 2.33 : 674640: c3 retq 0.00 : 674641: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : else if (found && free != NULL) : { : /* move buffer from hashtable into the free array slot */ : : /* fill array slot */ : free->buffer = buffer; 0.00 : 674648: 8b 45 c4 mov -0x3c(%rbp),%eax : free->refcount = res->refcount; : : /* delete from hashtable */ : hash_search(PrivateRefCountHash, 0.00 : 67464b: 48 8d 75 c4 lea -0x3c(%rbp),%rsi 0.00 : 67464f: 4c 89 f1 mov %r14,%rcx 0.00 : 674652: ba 02 00 00 00 mov $0x2,%edx : else if (found && free != NULL) : { : /* move buffer from hashtable into the free array slot */ : : /* fill array slot */ : free->buffer = buffer; 0.00 : 674657: 89 03 mov %eax,(%rbx) : free->refcount = res->refcount; 0.00 : 674659: 41 8b 45 04 mov 0x4(%r13),%eax 0.00 : 67465d: 89 43 04 mov %eax,0x4(%rbx) : : /* delete from hashtable */ : hash_search(PrivateRefCountHash, 0.00 : 674660: 48 8b 3d 11 8a 50 00 mov 0x508a11(%rip),%rdi # b7d078 0.00 : 674667: e8 34 00 11 00 callq 7846a0 : (void *) &buffer, : HASH_REMOVE, : &found); : Assert(found); : Assert(PrivateRefCountOverflowed > 0); : PrivateRefCountOverflowed--; 0.00 : 67466c: 83 2d fd 89 50 00 01 subl $0x1,0x5089fd(%rip) # b7d070 0.00 : 674673: 48 89 d8 mov %rbx,%rax : } : } : : Assert(false); /* unreachable */ : return NULL; : } 0.00 : 674676: 48 83 c4 18 add $0x18,%rsp 0.00 : 67467a: 5b pop %rbx 0.00 : 67467b: 41 5c pop %r12 0.00 : 67467d: 41 5d pop %r13 0.00 : 67467f: 41 5e pop %r14 0.00 : 674681: 41 5f pop %r15 0.00 : 674683: c9 leaveq 0.00 : 674684: c3 retq 0.00 : 674685: 0f 1f 00 nopl (%rax) : &found); : } : : if (!found) : { : if (!create) 0.00 : 674688: 31 c0 xor %eax,%eax 0.00 : 67468a: 45 84 ff test %r15b,%r15b 0.00 : 67468d: 74 a3 je 674632 : { : /* Neither array nor hash have an entry and no new entry is needed */ : return NULL; : } : else if (free != NULL) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:198 2.33 : 67468f: 48 85 db test %rbx,%rbx 0.00 : 674692: 74 11 je 6746a5 : { : /* add entry into the free array slot */ : free->buffer = buffer; 0.00 : 674694: 8b 45 c4 mov -0x3c(%rbp),%eax : free->refcount = 0; 0.00 : 674697: c7 43 04 00 00 00 00 movl $0x0,0x4(%rbx) : return NULL; : } : else if (free != NULL) : { : /* add entry into the free array slot */ : free->buffer = buffer; 0.00 : 67469e: 89 03 mov %eax,(%rbx) : free->refcount = 0; 0.00 : 6746a0: 48 89 d8 mov %rbx,%rax : } : } : : Assert(false); /* unreachable */ : return NULL; : } 0.00 : 6746a3: eb 8d jmp 674632 : */ : PrivateRefCountEntry *arrayent; : PrivateRefCountEntry *hashent; : : /* select victim slot */ : arrayent = &PrivateRefCountArray[ 0.00 : 6746a5: 8b 05 d5 89 50 00 mov 0x5089d5(%rip),%eax # b7d080 : PrivateRefCountClock++ % REFCOUNT_ARRAY_ENTRIES]; : Assert(arrayent->buffer != InvalidBuffer); : : /* enter victim array entry into hashtable */ : hashent = hash_search(PrivateRefCountHash, 0.00 : 6746ab: 48 8b 3d c6 89 50 00 mov 0x5089c6(%rip),%rdi # b7d078 0.00 : 6746b2: 48 8d 4d d7 lea -0x29(%rbp),%rcx 0.00 : 6746b6: ba 01 00 00 00 mov $0x1,%edx : */ : PrivateRefCountEntry *arrayent; : PrivateRefCountEntry *hashent; : : /* select victim slot */ : arrayent = &PrivateRefCountArray[ 0.00 : 6746bb: 49 89 c4 mov %rax,%r12 0.00 : 6746be: 83 c0 01 add $0x1,%eax 0.00 : 6746c1: 41 83 e4 07 and $0x7,%r12d 0.00 : 6746c5: 89 05 b5 89 50 00 mov %eax,0x5089b5(%rip) # b7d080 0.00 : 6746cb: 4a 8d 1c e5 c0 d0 b7 lea 0xb7d0c0(,%r12,8),%rbx 0.00 : 6746d2: 00 : PrivateRefCountClock++ % REFCOUNT_ARRAY_ENTRIES]; : Assert(arrayent->buffer != InvalidBuffer); : : /* enter victim array entry into hashtable */ : hashent = hash_search(PrivateRefCountHash, 0.00 : 6746d3: 48 89 de mov %rbx,%rsi 0.00 : 6746d6: e8 c5 ff 10 00 callq 7846a0 : (void *) &arrayent->buffer, : HASH_ENTER, : &found); : Assert(!found); : hashent->refcount = arrayent->refcount; 0.00 : 6746db: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : 6746de: 89 50 04 mov %edx,0x4(%rax) : : /* fill the now free array slot */ : arrayent->buffer = buffer; 0.00 : 6746e1: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 6746e4: 42 89 04 e5 c0 d0 b7 mov %eax,0xb7d0c0(,%r12,8) 0.00 : 6746eb: 00 : arrayent->refcount = 0; 0.00 : 6746ec: c7 43 04 00 00 00 00 movl $0x0,0x4(%rbx) : : PrivateRefCountOverflowed++; 0.00 : 6746f3: 48 89 d8 mov %rbx,%rax 0.00 : 6746f6: 83 05 73 89 50 00 01 addl $0x1,0x508973(%rip) # b7d070 : } : } : : Assert(false); /* unreachable */ : return NULL; : } 0.00 : 6746fd: e9 30 ff ff ff jmpq 674632 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 42.86 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1424 9.52 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1438 7.14 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1431 7.14 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1433 4.76 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1421 4.76 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1426 4.76 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1429 4.76 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1431 2.38 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1421 2.38 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1422 2.38 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1423 2.38 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1424 2.38 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1426 2.38 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1424 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000054ae30 : : /* : * qsort comparator for sorting rows[] array : */ : static int : compare_rows(const void *a, const void *b) : { /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1421 2.38 : 54ae30: 55 push %rbp : HeapTuple ha = *(const HeapTuple *) a; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1422 2.38 : 54ae31: 48 8b 17 mov (%rdi),%rdx : HeapTuple hb = *(const HeapTuple *) b; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1423 2.38 : 54ae34: 48 8b 36 mov (%rsi),%rsi : /* : * qsort comparator for sorting rows[] array : */ : static int : compare_rows(const void *a, const void *b) : { /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1421 4.76 : 54ae37: 48 89 e5 mov %rsp,%rbp : HeapTuple ha = *(const HeapTuple *) a; : HeapTuple hb = *(const HeapTuple *) b; : BlockNumber ba = ItemPointerGetBlockNumber(&ha->t_self); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1424 2.38 : 54ae3a: 0f b7 4a 04 movzwl 0x4(%rdx),%ecx /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1424 42.86 : 54ae3e: 0f b7 42 06 movzwl 0x6(%rdx),%eax : OffsetNumber oa = ItemPointerGetOffsetNumber(&ha->t_self); 0.00 : 54ae42: 0f b7 7a 08 movzwl 0x8(%rdx),%edi : BlockNumber bb = ItemPointerGetBlockNumber(&hb->t_self); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1426 2.38 : 54ae46: 0f b7 56 06 movzwl 0x6(%rsi),%edx : static int : compare_rows(const void *a, const void *b) : { : HeapTuple ha = *(const HeapTuple *) a; : HeapTuple hb = *(const HeapTuple *) b; : BlockNumber ba = ItemPointerGetBlockNumber(&ha->t_self); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1424 2.38 : 54ae4a: c1 e1 10 shl $0x10,%ecx 0.00 : 54ae4d: 09 c1 or %eax,%ecx : OffsetNumber oa = ItemPointerGetOffsetNumber(&ha->t_self); : BlockNumber bb = ItemPointerGetBlockNumber(&hb->t_self); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1426 4.76 : 54ae4f: 0f b7 46 04 movzwl 0x4(%rsi),%eax 0.00 : 54ae53: c1 e0 10 shl $0x10,%eax 0.00 : 54ae56: 09 d0 or %edx,%eax : OffsetNumber ob = ItemPointerGetOffsetNumber(&hb->t_self); 0.00 : 54ae58: 0f b7 56 08 movzwl 0x8(%rsi),%edx : : if (ba < bb) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1429 4.76 : 54ae5c: 39 c1 cmp %eax,%ecx 0.00 : 54ae5e: 72 10 jb 54ae70 : return -1; : if (ba > bb) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1431 7.14 : 54ae60: 76 1e jbe 54ae80 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1431 4.76 : 54ae62: b8 01 00 00 00 mov $0x1,%eax : if (oa < ob) : return -1; : if (oa > ob) : return 1; : return 0; : } 0.00 : 54ae67: c9 leaveq 0.00 : 54ae68: c3 retq 0.00 : 54ae69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (ba < bb) : return -1; : if (ba > bb) : return 1; : if (oa < ob) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1433 7.14 : 54ae70: b8 ff ff ff ff mov $0xffffffff,%eax : return -1; : if (oa > ob) : return 1; : return 0; : } 0.00 : 54ae75: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1438 9.52 : 54ae76: c3 retq 0.00 : 54ae77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54ae7e: 00 00 : : if (ba < bb) : return -1; : if (ba > bb) : return 1; : if (oa < ob) 0.00 : 54ae80: 66 39 d7 cmp %dx,%di 0.00 : 54ae83: 72 eb jb 54ae70 0.00 : 54ae85: 0f 97 c0 seta %al : return -1; : if (oa > ob) : return 1; : return 0; : } 0.00 : 54ae88: c9 leaveq : : if (ba < bb) : return -1; : if (ba > bb) : return 1; : if (oa < ob) 0.00 : 54ae89: 0f b6 c0 movzbl %al,%eax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469cc0 <__errno_location@plt>: ??:0 100.00 : 469cc0: ff 25 02 d8 6f 00 jmpq *0x6fd802(%rip) # b674c8 <_GLOBAL_OFFSET_TABLE_+0x4c8> 0.00 : 469cc6: 68 96 00 00 00 pushq $0x96 0.00 : 469ccb: e9 80 f6 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.50 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 17.50 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 10.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 10.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 7.50 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 7.50 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 7.50 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 5.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 5.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 2.50 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 2.50 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 2.50 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1583 2.50 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 2.50 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006425d0 : : * calls for what the user considers a single call of the function. The : * finalize flag should be TRUE on the last call. : */ : void : pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize) : { /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 10.00 : 6425d0: 55 push %rbp 7.50 : 6425d1: 48 89 e5 mov %rsp,%rbp 7.50 : 6425d4: 41 55 push %r13 17.50 : 6425d6: 41 89 f5 mov %esi,%r13d /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 2.50 : 6425d9: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 7.50 : 6425db: 49 89 fc mov %rdi,%r12 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 2.50 : 6425de: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1576 5.00 : 6425df: 48 83 ec 18 sub $0x18,%rsp : PgStat_FunctionCounts *fs = fcu->fs; 0.00 : 6425e3: 48 8b 1f mov (%rdi),%rbx : instr_time f_total; : instr_time f_others; : instr_time f_self; : : /* stats not wanted? */ : if (fs == NULL) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1583 2.50 : 6425e6: 48 85 db test %rbx,%rbx 0.00 : 6425e9: 0f 84 6f 01 00 00 je 64275e : return; : : /* total elapsed time in this function call */ : INSTR_TIME_SET_CURRENT(f_total); 0.00 : 6425ef: 48 8d 7d d0 lea -0x30(%rbp),%rdi 0.00 : 6425f3: 31 f6 xor %esi,%esi 0.00 : 6425f5: e8 c6 6f e2 ff callq 4695c0 : INSTR_TIME_SUBTRACT(f_total, fcu->f_start); 0.00 : 6425fa: 48 8b 4d d8 mov -0x28(%rbp),%rcx 0.00 : 6425fe: 49 2b 4c 24 30 sub 0x30(%r12),%rcx 0.00 : 642603: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 642607: 49 2b 44 24 28 sub 0x28(%r12),%rax 0.00 : 64260c: 48 85 c9 test %rcx,%rcx 0.00 : 64260f: 48 89 4d d8 mov %rcx,-0x28(%rbp) 0.00 : 642613: 49 89 c1 mov %rax,%r9 0.00 : 642616: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 64261a: 79 1c jns 642638 0.00 : 64261c: 0f 1f 40 00 nopl 0x0(%rax) : * calls for what the user considers a single call of the function. The : * finalize flag should be TRUE on the last call. : */ : void : pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize) : { 0.00 : 642620: 48 83 e8 01 sub $0x1,%rax : if (fs == NULL) : return; : : /* total elapsed time in this function call */ : INSTR_TIME_SET_CURRENT(f_total); : INSTR_TIME_SUBTRACT(f_total, fcu->f_start); 0.00 : 642624: 48 81 c1 40 42 0f 00 add $0xf4240,%rcx 0.00 : 64262b: 78 f3 js 642620 0.00 : 64262d: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 642631: 48 89 4d d8 mov %rcx,-0x28(%rbp) 0.00 : 642635: 49 89 c1 mov %rax,%r9 : : /* self usage: elapsed minus anything already charged to other calls */ : f_others = total_func_time; 0.00 : 642638: 4c 8b 05 e9 98 53 00 mov 0x5398e9(%rip),%r8 # b7bf28 0.00 : 64263f: 4c 8b 15 da 98 53 00 mov 0x5398da(%rip),%r10 # b7bf20 : INSTR_TIME_SUBTRACT(f_others, fcu->save_total); 0.00 : 642646: 4c 89 c0 mov %r8,%rax 0.00 : 642649: 4c 89 d2 mov %r10,%rdx 0.00 : 64264c: 49 2b 54 24 18 sub 0x18(%r12),%rdx 0.00 : 642651: 49 2b 44 24 20 sub 0x20(%r12),%rax 0.00 : 642656: 79 14 jns 64266c 0.00 : 642658: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 64265f: 00 0.00 : 642660: 48 83 ea 01 sub $0x1,%rdx 0.00 : 642664: 48 05 40 42 0f 00 add $0xf4240,%rax 0.00 : 64266a: 78 f4 js 642660 : f_self = f_total; : INSTR_TIME_SUBTRACT(f_self, f_others); 0.00 : 64266c: 4c 89 cf mov %r9,%rdi 0.00 : 64266f: 48 89 ce mov %rcx,%rsi 0.00 : 642672: 48 29 d7 sub %rdx,%rdi 0.00 : 642675: 48 29 c6 sub %rax,%rsi 0.00 : 642678: 79 13 jns 64268d 0.00 : 64267a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 642680: 48 83 ef 01 sub $0x1,%rdi 0.00 : 642684: 48 81 c6 40 42 0f 00 add $0xf4240,%rsi 0.00 : 64268b: 78 f3 js 642680 : : /* update backend-wide total time */ : INSTR_TIME_ADD(total_func_time, f_self); 0.00 : 64268d: 4a 8d 04 06 lea (%rsi,%r8,1),%rax 0.00 : 642691: 4a 8d 14 17 lea (%rdi,%r10,1),%rdx 0.00 : 642695: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 64269b: 48 89 15 7e 98 53 00 mov %rdx,0x53987e(%rip) # b7bf20 0.00 : 6426a2: 48 89 05 7f 98 53 00 mov %rax,0x53987f(%rip) # b7bf28 0.00 : 6426a9: 7e 25 jle 6426d0 0.00 : 6426ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6426b0: 48 2d 40 42 0f 00 sub $0xf4240,%rax : * calls for what the user considers a single call of the function. The : * finalize flag should be TRUE on the last call. : */ : void : pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize) : { 0.00 : 6426b6: 48 83 c2 01 add $0x1,%rdx : INSTR_TIME_SUBTRACT(f_others, fcu->save_total); : f_self = f_total; : INSTR_TIME_SUBTRACT(f_self, f_others); : : /* update backend-wide total time */ : INSTR_TIME_ADD(total_func_time, f_self); 0.00 : 6426ba: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6426c0: 7f ee jg 6426b0 0.00 : 6426c2: 48 89 15 57 98 53 00 mov %rdx,0x539857(%rip) # b7bf20 0.00 : 6426c9: 48 89 05 58 98 53 00 mov %rax,0x539858(%rip) # b7bf28 : * pre-call value of f_total_time. This is necessary to avoid : * double-counting any time taken by recursive calls of myself. (We do : * not need any similar kluge for self time, since that already excludes : * any recursive calls.) : */ : INSTR_TIME_ADD(f_total, fcu->save_f_total_time); 0.00 : 6426d0: 48 89 c8 mov %rcx,%rax 0.00 : 6426d3: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : 6426d8: 4c 89 ca mov %r9,%rdx 0.00 : 6426db: 49 03 54 24 08 add 0x8(%r12),%rdx 0.00 : 6426e0: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6426e6: 48 89 45 d8 mov %rax,-0x28(%rbp) 0.00 : 6426ea: 48 89 55 d0 mov %rdx,-0x30(%rbp) 0.00 : 6426ee: 7e 1a jle 64270a 0.00 : 6426f0: 48 2d 40 42 0f 00 sub $0xf4240,%rax : * calls for what the user considers a single call of the function. The : * finalize flag should be TRUE on the last call. : */ : void : pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize) : { 0.00 : 6426f6: 48 83 c2 01 add $0x1,%rdx : * pre-call value of f_total_time. This is necessary to avoid : * double-counting any time taken by recursive calls of myself. (We do : * not need any similar kluge for self time, since that already excludes : * any recursive calls.) : */ : INSTR_TIME_ADD(f_total, fcu->save_f_total_time); 0.00 : 6426fa: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 642700: 7f ee jg 6426f0 0.00 : 642702: 48 89 55 d0 mov %rdx,-0x30(%rbp) 0.00 : 642706: 48 89 45 d8 mov %rax,-0x28(%rbp) : : /* update counters in function stats table */ : if (finalize) 0.00 : 64270a: 45 84 ed test %r13b,%r13b 0.00 : 64270d: 75 61 jne 642770 : fs->f_numcalls++; : fs->f_total_time = f_total; 0.00 : 64270f: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 642713: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 642717: 48 8b 45 d8 mov -0x28(%rbp),%rax : INSTR_TIME_ADD(fs->f_self_time, f_self); 0.00 : 64271b: 48 01 7b 18 add %rdi,0x18(%rbx) : INSTR_TIME_ADD(f_total, fcu->save_f_total_time); : : /* update counters in function stats table */ : if (finalize) : fs->f_numcalls++; : fs->f_total_time = f_total; 0.00 : 64271f: 48 89 43 10 mov %rax,0x10(%rbx) : INSTR_TIME_ADD(fs->f_self_time, f_self); 0.00 : 642723: 48 89 f0 mov %rsi,%rax 0.00 : 642726: 48 03 43 20 add 0x20(%rbx),%rax 0.00 : 64272a: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 642730: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 642734: 7e 21 jle 642757 0.00 : 642736: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 64273d: 00 00 00 0.00 : 642740: 48 2d 40 42 0f 00 sub $0xf4240,%rax 0.00 : 642746: 48 83 43 18 01 addq $0x1,0x18(%rbx) 0.00 : 64274b: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 642751: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 642755: 7f e9 jg 642740 : : /* indicate that we have something to send */ : have_function_stats = true; 0.00 : 642757: c6 05 4a 95 53 00 01 movb $0x1,0x53954a(%rip) # b7bca8 : } /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 2.50 : 64275e: 48 83 c4 18 add $0x18,%rsp 2.50 : 642762: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1616 5.00 : 642763: 41 5c pop %r12 0.00 : 642765: 41 5d pop %r13 17.50 : 642767: c9 leaveq 10.00 : 642768: c3 retq 0.00 : 642769: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : INSTR_TIME_ADD(f_total, fcu->save_f_total_time); : : /* update counters in function stats table */ : if (finalize) : fs->f_numcalls++; 0.00 : 642770: 48 83 03 01 addq $0x1,(%rbx) 0.00 : 642774: eb 99 jmp 64270f Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.08 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1355 17.95 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1356 10.26 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1352 7.69 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1336 7.69 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1352 5.13 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1340 5.13 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1354 2.56 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1336 2.56 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1336 2.56 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1363 2.56 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1385 2.56 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1405 2.56 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1352 2.56 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1354 2.56 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1356 2.56 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1387 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000054c510 : : return exp(-log(anl_random_fract()) / n); : } : : double : anl_get_next_S(double t, int n, double *stateptr) : { /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1336 2.56 : 54c510: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1336 7.69 : 54c511: 48 89 e5 mov %rsp,%rbp 0.00 : 54c514: 53 push %rbx 0.00 : 54c515: 48 89 f3 mov %rsi,%rbx /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1336 2.56 : 54c518: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : 54c51f: f2 0f 11 45 a0 movsd %xmm0,-0x60(%rbp) : double S; : : /* The magic constant here is T from Vitter's paper */ : if (t <= (22.0 * n)) 0.00 : 54c524: f2 0f 2a c7 cvtsi2sd %edi,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1340 5.13 : 54c528: f2 0f 11 45 a8 movsd %xmm0,-0x58(%rbp) 0.00 : 54c52d: f2 0f 59 05 db b4 32 mulsd 0x32b4db(%rip),%xmm0 # 877a10 <__func__.20024+0x50> 0.00 : 54c534: 00 0.00 : 54c535: 66 0f 2e 45 a0 ucomisd -0x60(%rbp),%xmm0 0.00 : 54c53a: 0f 83 cc 01 00 00 jae 54c70c : } : else : { : /* Now apply Algorithm Z */ : double W = *stateptr; : double term = t - (double) n + 1; 0.00 : 54c540: f2 0f 10 45 a0 movsd -0x60(%rbp),%xmm0 : } : } : else : { : /* Now apply Algorithm Z */ : double W = *stateptr; 0.00 : 54c545: f2 0f 10 0e movsd (%rsi),%xmm1 : double term = t - (double) n + 1; 0.00 : 54c549: f2 0f 5c 45 a8 subsd -0x58(%rbp),%xmm0 : } : } : else : { : /* Now apply Algorithm Z */ : double W = *stateptr; 0.00 : 54c54e: f2 0f 11 4d c0 movsd %xmm1,-0x40(%rbp) : double term = t - (double) n + 1; 0.00 : 54c553: f2 0f 10 0d fd 2b 26 movsd 0x262bfd(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 54c55a: 00 0.00 : 54c55b: f2 0f 11 4d 98 movsd %xmm1,-0x68(%rbp) 0.00 : 54c560: f2 0f 11 45 e8 movsd %xmm0,-0x18(%rbp) 0.00 : 54c565: f2 0f 58 c1 addsd %xmm1,%xmm0 0.00 : 54c569: f2 0f 11 45 c8 movsd %xmm0,-0x38(%rbp) 0.00 : 54c56e: f2 0f 10 45 a0 movsd -0x60(%rbp),%xmm0 0.00 : 54c573: f2 0f 58 c1 addsd %xmm1,%xmm0 0.00 : 54c577: f2 0f 11 45 e0 movsd %xmm0,-0x20(%rbp) 0.00 : 54c57c: f2 0f 5e 45 c8 divsd -0x38(%rbp),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1363 2.56 : 54c581: f2 0f 11 45 d8 movsd %xmm0,-0x28(%rbp) 0.00 : 54c586: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 54c58d: 00 00 00 : rhs, : y, : tmp; : : /* Generate U and X */ : U = anl_random_fract(); 0.00 : 54c590: e8 5b ff ff ff callq 54c4f0 : X = t * (W - 1.0); 0.00 : 54c595: f2 0f 10 4d c0 movsd -0x40(%rbp),%xmm1 : rhs, : y, : tmp; : : /* Generate U and X */ : U = anl_random_fract(); 0.00 : 54c59a: f2 0f 11 45 d0 movsd %xmm0,-0x30(%rbp) : X = t * (W - 1.0); 0.00 : 54c59f: f2 0f 5c 4d 98 subsd -0x68(%rbp),%xmm1 0.00 : 54c5a4: f2 0f 59 4d a0 mulsd -0x60(%rbp),%xmm1 : S = floor(X); /* S is tentatively set to floor(X) */ 0.00 : 54c5a9: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 54c5ad: f2 0f 11 4d 80 movsd %xmm1,-0x80(%rbp) 0.00 : 54c5b2: e8 59 da f1 ff callq 46a010 : /* Test if U <= h(S)/cg(X) in the manner of (6.3) */ : tmp = (t + 1) / term; : lhs = exp(log(((U * tmp * tmp) * (term + S)) / (t + X)) / n); 0.00 : 54c5b7: f2 0f 10 65 c8 movsd -0x38(%rbp),%xmm4 : tmp; : : /* Generate U and X */ : U = anl_random_fract(); : X = t * (W - 1.0); : S = floor(X); /* S is tentatively set to floor(X) */ 0.00 : 54c5bc: f2 0f 11 45 b8 movsd %xmm0,-0x48(%rbp) : /* Test if U <= h(S)/cg(X) in the manner of (6.3) */ : tmp = (t + 1) / term; : lhs = exp(log(((U * tmp * tmp) * (term + S)) / (t + X)) / n); 0.00 : 54c5c1: f2 0f 58 e0 addsd %xmm0,%xmm4 0.00 : 54c5c5: f2 0f 10 45 d8 movsd -0x28(%rbp),%xmm0 0.00 : 54c5ca: f2 0f 10 4d 80 movsd -0x80(%rbp),%xmm1 0.00 : 54c5cf: f2 0f 59 45 d0 mulsd -0x30(%rbp),%xmm0 0.00 : 54c5d4: f2 0f 58 4d a0 addsd -0x60(%rbp),%xmm1 0.00 : 54c5d9: f2 0f 11 a5 60 ff ff movsd %xmm4,-0xa0(%rbp) 0.00 : 54c5e0: ff 0.00 : 54c5e1: f2 0f 59 45 d8 mulsd -0x28(%rbp),%xmm0 0.00 : 54c5e6: f2 0f 11 4d b0 movsd %xmm1,-0x50(%rbp) 0.00 : 54c5eb: f2 0f 59 c4 mulsd %xmm4,%xmm0 0.00 : 54c5ef: f2 0f 5e c1 divsd %xmm1,%xmm0 0.00 : 54c5f3: e8 58 db f1 ff callq 46a150 0.00 : 54c5f8: f2 0f 5e 45 a8 divsd -0x58(%rbp),%xmm0 0.00 : 54c5fd: e8 9e cd f1 ff callq 4693a0 : rhs = (((t + X) / (term + S)) * term) / t; 0.00 : 54c602: f2 0f 10 a5 60 ff ff movsd -0xa0(%rbp),%xmm4 0.00 : 54c609: ff : U = anl_random_fract(); : X = t * (W - 1.0); : S = floor(X); /* S is tentatively set to floor(X) */ : /* Test if U <= h(S)/cg(X) in the manner of (6.3) */ : tmp = (t + 1) / term; : lhs = exp(log(((U * tmp * tmp) * (term + S)) / (t + X)) / n); 0.00 : 54c60a: 66 0f 28 c8 movapd %xmm0,%xmm1 : rhs = (((t + X) / (term + S)) * term) / t; 0.00 : 54c60e: f2 0f 10 45 b0 movsd -0x50(%rbp),%xmm0 0.00 : 54c613: f2 0f 5e c4 divsd %xmm4,%xmm0 0.00 : 54c617: f2 0f 59 45 c8 mulsd -0x38(%rbp),%xmm0 0.00 : 54c61c: f2 0f 5e 45 a0 divsd -0x60(%rbp),%xmm0 : if (lhs <= rhs) 0.00 : 54c621: 66 0f 2e c1 ucomisd %xmm1,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1385 2.56 : 54c625: 0f 83 5f 01 00 00 jae 54c78a : { : W = rhs / lhs; : break; : } : /* Test if U <= f(S)/cg(X) */ : y = (((U * (t + 1)) / term) * (t + S + 1)) / (t + X); 0.00 : 54c62b: f2 0f 10 5d e0 movsd -0x20(%rbp),%xmm3 0.00 : 54c630: f2 0f 10 55 a0 movsd -0x60(%rbp),%xmm2 0.00 : 54c635: f2 0f 59 5d d0 mulsd -0x30(%rbp),%xmm3 0.00 : 54c63a: f2 0f 58 55 b8 addsd -0x48(%rbp),%xmm2 0.00 : 54c63f: f2 0f 10 05 11 2b 26 movsd 0x262b11(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 54c646: 00 : if ((double) n < S) 0.00 : 54c647: f2 0f 10 4d a0 movsd -0x60(%rbp),%xmm1 : { : W = rhs / lhs; : break; : } : /* Test if U <= f(S)/cg(X) */ : y = (((U * (t + 1)) / term) * (t + S + 1)) / (t + X); 0.00 : 54c64c: f2 0f 5e 5d c8 divsd -0x38(%rbp),%xmm3 0.00 : 54c651: f2 0f 58 c2 addsd %xmm2,%xmm0 0.00 : 54c655: f2 0f 59 d8 mulsd %xmm0,%xmm3 : if ((double) n < S) 0.00 : 54c659: f2 0f 10 45 b8 movsd -0x48(%rbp),%xmm0 0.00 : 54c65e: 66 0f 2e 45 a8 ucomisd -0x58(%rbp),%xmm0 : { : W = rhs / lhs; : break; : } : /* Test if U <= f(S)/cg(X) */ : y = (((U * (t + 1)) / term) * (t + S + 1)) / (t + X); 0.00 : 54c663: f2 0f 5e 5d b0 divsd -0x50(%rbp),%xmm3 : if ((double) n < S) 0.00 : 54c668: 77 2c ja 54c696 : denom = t; : numer_lim = term + S; : } : else : { : denom = t - (double) n + S; 0.00 : 54c66a: f2 0f 10 4d e8 movsd -0x18(%rbp),%xmm1 0.00 : 54c66f: f2 0f 10 65 e0 movsd -0x20(%rbp),%xmm4 0.00 : 54c674: f2 0f 58 c8 addsd %xmm0,%xmm1 0.00 : 54c678: eb 1c jmp 54c696 0.00 : 54c67a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : numer_lim = t + 1; : } : for (numer = t + S; numer >= numer_lim; numer -= 1) : { : y *= numer / denom; 0.00 : 54c680: 66 0f 28 c2 movapd %xmm2,%xmm0 : else : { : denom = t - (double) n + S; : numer_lim = t + 1; : } : for (numer = t + S; numer >= numer_lim; numer -= 1) 0.00 : 54c684: f2 0f 5c 55 98 subsd -0x68(%rbp),%xmm2 : { : y *= numer / denom; 0.00 : 54c689: f2 0f 5e c1 divsd %xmm1,%xmm0 : denom -= 1; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1405 2.56 : 54c68d: f2 0f 5c 4d 98 subsd -0x68(%rbp),%xmm1 : denom = t - (double) n + S; : numer_lim = t + 1; : } : for (numer = t + S; numer >= numer_lim; numer -= 1) : { : y *= numer / denom; 0.00 : 54c692: f2 0f 59 d8 mulsd %xmm0,%xmm3 : else : { : denom = t - (double) n + S; : numer_lim = t + 1; : } : for (numer = t + S; numer >= numer_lim; numer -= 1) 0.00 : 54c696: 66 0f 2e d4 ucomisd %xmm4,%xmm2 0.00 : 54c69a: 73 e4 jae 54c680 : { : y *= numer / denom; : denom -= 1; : } : W = exp(-log(anl_random_fract()) / n); /* Generate W in advance */ 0.00 : 54c69c: f2 0f 11 9d 70 ff ff movsd %xmm3,-0x90(%rbp) 0.00 : 54c6a3: ff 0.00 : 54c6a4: e8 47 fe ff ff callq 54c4f0 0.00 : 54c6a9: e8 a2 da f1 ff callq 46a150 0.00 : 54c6ae: 66 0f 57 05 ba 52 26 xorpd 0x2652ba(%rip),%xmm0 # 7b1970 <__func__.17675+0xe> 0.00 : 54c6b5: 00 0.00 : 54c6b6: f2 0f 5e 45 a8 divsd -0x58(%rbp),%xmm0 0.00 : 54c6bb: e8 e0 cc f1 ff callq 4693a0 : if (exp(log(y) / n) <= (t + X) / t) 0.00 : 54c6c0: f2 0f 10 9d 70 ff ff movsd -0x90(%rbp),%xmm3 0.00 : 54c6c7: ff : for (numer = t + S; numer >= numer_lim; numer -= 1) : { : y *= numer / denom; : denom -= 1; : } : W = exp(-log(anl_random_fract()) / n); /* Generate W in advance */ 0.00 : 54c6c8: f2 0f 11 45 c0 movsd %xmm0,-0x40(%rbp) : if (exp(log(y) / n) <= (t + X) / t) 0.00 : 54c6cd: 66 0f 28 c3 movapd %xmm3,%xmm0 0.00 : 54c6d1: e8 7a da f1 ff callq 46a150 0.00 : 54c6d6: f2 0f 5e 45 a8 divsd -0x58(%rbp),%xmm0 0.00 : 54c6db: e8 c0 cc f1 ff callq 4693a0 0.00 : 54c6e0: f2 0f 10 4d b0 movsd -0x50(%rbp),%xmm1 0.00 : 54c6e5: f2 0f 5e 4d a0 divsd -0x60(%rbp),%xmm1 0.00 : 54c6ea: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 54c6ee: 0f 82 9c fe ff ff jb 54c590 : break; : } : *stateptr = W; 0.00 : 54c6f4: f2 0f 10 45 c0 movsd -0x40(%rbp),%xmm0 0.00 : 54c6f9: f2 0f 11 03 movsd %xmm0,(%rbx) : } : return S; : } 0.00 : 54c6fd: f2 0f 10 45 b8 movsd -0x48(%rbp),%xmm0 0.00 : 54c702: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 54c709: 5b pop %rbx 0.00 : 54c70a: c9 leaveq 0.00 : 54c70b: c3 retq : { : /* Process records using Algorithm X until t is large enough */ : double V, : quot; : : V = anl_random_fract(); /* Generate V */ 0.00 : 54c70c: e8 df fd ff ff callq 54c4f0 : S = 0; : t += 1; 0.00 : 54c711: f2 0f 10 0d 3f 2a 26 movsd 0x262a3f(%rip),%xmm1 # 7af158 <__func__.15777+0x10> 0.00 : 54c718: 00 : { : /* Process records using Algorithm X until t is large enough */ : double V, : quot; : : V = anl_random_fract(); /* Generate V */ 0.00 : 54c719: 66 0f 28 d8 movapd %xmm0,%xmm3 : S = 0; : t += 1; 0.00 : 54c71d: f2 0f 11 4d 98 movsd %xmm1,-0x68(%rbp) 0.00 : 54c722: f2 0f 10 4d a0 movsd -0x60(%rbp),%xmm1 0.00 : 54c727: f2 0f 58 4d 98 addsd -0x68(%rbp),%xmm1 : /* Note: "num" in Vitter's code is always equal to t - n */ : quot = (t - (double) n) / t; 0.00 : 54c72c: 66 0f 28 d1 movapd %xmm1,%xmm2 0.00 : 54c730: f2 0f 5c 55 a8 subsd -0x58(%rbp),%xmm2 0.00 : 54c735: f2 0f 5e d1 divsd %xmm1,%xmm2 : /* Find min S satisfying (4.1) */ : while (quot > V) 0.00 : 54c739: 66 0f 2e d0 ucomisd %xmm0,%xmm2 0.00 : 54c73d: 76 59 jbe 54c798 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1352 2.56 : 54c73f: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 54c743: f2 0f 11 45 b8 movsd %xmm0,-0x48(%rbp) 0.00 : 54c748: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54c74f: 00 : { : S += 1; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1354 5.13 : 54c750: f2 0f 10 45 b8 movsd -0x48(%rbp),%xmm0 : t += 1; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1355 23.08 : 54c755: f2 0f 58 4d 98 addsd -0x68(%rbp),%xmm1 : /* Note: "num" in Vitter's code is always equal to t - n */ : quot = (t - (double) n) / t; : /* Find min S satisfying (4.1) */ : while (quot > V) : { : S += 1; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1354 2.56 : 54c75a: f2 0f 58 45 98 addsd -0x68(%rbp),%xmm0 0.00 : 54c75f: f2 0f 11 45 b8 movsd %xmm0,-0x48(%rbp) : t += 1; : quot *= (t - (double) n) / t; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1356 2.56 : 54c764: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 54c768: f2 0f 5c 45 a8 subsd -0x58(%rbp),%xmm0 0.00 : 54c76d: f2 0f 5e c1 divsd %xmm1,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1356 17.95 : 54c771: f2 0f 59 d0 mulsd %xmm0,%xmm2 : S = 0; : t += 1; : /* Note: "num" in Vitter's code is always equal to t - n */ : quot = (t - (double) n) / t; : /* Find min S satisfying (4.1) */ : while (quot > V) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1352 10.26 : 54c775: 66 0f 2e d3 ucomisd %xmm3,%xmm2 7.69 : 54c779: 77 d5 ja 54c750 : break; : } : *stateptr = W; : } : return S; : } 0.00 : 54c77b: f2 0f 10 45 b8 movsd -0x48(%rbp),%xmm0 0.00 : 54c780: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 54c787: 5b pop %rbx 0.00 : 54c788: c9 leaveq 0.00 : 54c789: c3 retq : tmp = (t + 1) / term; : lhs = exp(log(((U * tmp * tmp) * (term + S)) / (t + X)) / n); : rhs = (((t + X) / (term + S)) * term) / t; : if (lhs <= rhs) : { : W = rhs / lhs; 0.00 : 54c78a: f2 0f 5e c1 divsd %xmm1,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1387 2.56 : 54c78e: f2 0f 11 45 c0 movsd %xmm0,-0x40(%rbp) : break; 0.00 : 54c793: e9 5c ff ff ff jmpq 54c6f4 : S = 0; : t += 1; : /* Note: "num" in Vitter's code is always equal to t - n */ : quot = (t - (double) n) / t; : /* Find min S satisfying (4.1) */ : while (quot > V) 0.00 : 54c798: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 54c79c: f2 0f 11 45 b8 movsd %xmm0,-0x48(%rbp) 0.00 : 54c7a1: e9 57 ff ff ff jmpq 54c6fd Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.32 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 23.68 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:616 13.16 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:612 7.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:624 7.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:661 5.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 5.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:661 5.26 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:661 2.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 2.63 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:569 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694d60 : : : /* : * Use signed arithmetic here so that we behave sensibly if pd_lower > : * pd_upper. : */ : space = (int) ((PageHeader) page)->pd_upper - 0.00 : 694d60: 0f b7 4f 0c movzwl 0xc(%rdi),%ecx /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 26.32 : 694d64: 0f b7 57 0e movzwl 0xe(%rdi),%edx : * To avoid breaking code that assumes MaxHeapTuplesPerPage is a hard limit : * on the number of line pointers, we make this extra check.) : */ : Size : PageGetHeapFreeSpace(Page page) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:612 13.16 : 694d68: 55 push %rbp 0.00 : 694d69: 48 89 e5 mov %rsp,%rbp : : /* : * Use signed arithmetic here so that we behave sensibly if pd_lower > : * pd_upper. : */ : space = (int) ((PageHeader) page)->pd_upper - /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 2.63 : 694d6c: 0f b7 c1 movzwl %cx,%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 5.26 : 694d6f: 29 c2 sub %eax,%edx : (int) ((PageHeader) page)->pd_lower; : : if (space < (int) sizeof(ItemIdData)) 0.00 : 694d71: 83 fa 03 cmp $0x3,%edx 0.00 : 694d74: 7e 52 jle 694dc8 : return 0; : space -= sizeof(ItemIdData); 0.00 : 694d76: 8d 42 fc lea -0x4(%rdx),%eax : : return (Size) space; /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:569 2.63 : 694d79: 48 63 f0 movslq %eax,%rsi : PageGetHeapFreeSpace(Page page) : { : Size space; : : space = PageGetFreeSpace(page); : if (space > 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:616 23.68 : 694d7c: 48 85 f6 test %rsi,%rsi 0.00 : 694d7f: 74 49 je 694dca : nline; : : /* : * Are there already MaxHeapTuplesPerPage line pointers in the page? : */ : nline = PageGetMaxOffsetNumber(page); 0.00 : 694d81: 66 83 f9 18 cmp $0x18,%cx 0.00 : 694d85: 76 43 jbe 694dca 0.00 : 694d87: 0f b7 c1 movzwl %cx,%eax 0.00 : 694d8a: 48 83 e8 18 sub $0x18,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:624 7.89 : 694d8e: 48 89 c1 mov %rax,%rcx 0.00 : 694d91: 48 c1 e9 02 shr $0x2,%rcx : if (nline >= MaxHeapTuplesPerPage) 0.00 : 694d95: 66 81 f9 22 01 cmp $0x122,%cx 0.00 : 694d9a: 76 2e jbe 694dca : { : if (PageHasFreeLinePointers((PageHeader) page)) 0.00 : 694d9c: f6 47 0a 01 testb $0x1,0xa(%rdi) 0.00 : 694da0: 74 26 je 694dc8 0.00 : 694da2: ba 01 00 00 00 mov $0x1,%edx 0.00 : 694da7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 694dae: 00 00 : */ : for (offnum = FirstOffsetNumber; offnum <= nline; offnum = OffsetNumberNext(offnum)) : { : ItemId lp = PageGetItemId(page, offnum); : : if (!ItemIdIsUsed(lp)) 0.00 : 694db0: 0f b7 c2 movzwl %dx,%eax 0.00 : 694db3: f7 44 87 14 00 80 01 testl $0x18000,0x14(%rdi,%rax,4) 0.00 : 694dba: 00 0.00 : 694dbb: 74 13 je 694dd0 : break; 0.00 : 694dbd: 83 c2 01 add $0x1,%edx : { : /* : * Since this is just a hint, we must confirm that there is : * indeed a free line pointer : */ : for (offnum = FirstOffsetNumber; offnum <= nline; offnum = OffsetNumberNext(offnum)) 0.00 : 694dc0: 66 39 ca cmp %cx,%dx 0.00 : 694dc3: 76 eb jbe 694db0 0.00 : 694dc5: 0f 1f 00 nopl (%rax) : : if (!ItemIdIsUsed(lp)) : break; : } : : if (offnum > nline) 0.00 : 694dc8: 31 f6 xor %esi,%esi : space = 0; : } : } : } : return space; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:661 7.89 : 694dca: 48 89 f0 mov %rsi,%rax 5.26 : 694dcd: c9 leaveq 5.26 : 694dce: c3 retq 0.00 : 694dcf: 90 nop : : if (!ItemIdIsUsed(lp)) : break; : } : : if (offnum > nline) 0.00 : 694dd0: 66 39 ca cmp %cx,%dx 0.00 : 694dd3: 76 f5 jbe 694dca 0.00 : 694dd5: eb f1 jmp 694dc8 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 27.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 18.92 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2175 10.81 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 8.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2175 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077d9a0 : : } : #endif /* USE_FLOAT8_BYVAL */ : : Datum : Float4GetDatum(float4 X) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2159 27.03 : 77d9a0: 55 push %rbp 10.81 : 77d9a1: 48 89 e5 mov %rsp,%rbp 0.00 : 77d9a4: f3 0f 11 45 fc movss %xmm0,-0x4(%rbp) 35.14 : 77d9a9: 8b 45 fc mov -0x4(%rbp),%eax : float4 *retval = (float4 *) palloc(sizeof(float4)); : : *retval = X; : return PointerGetDatum(retval); : #endif : } /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2175 27.03 : 77d9ac: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 35.90 ??:0 5.13 ??:0 5.13 ??:0 5.13 ??:0 5.13 ??:0 5.13 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 2.56 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000078e20 <_int_malloc>: 0.00 : 78e20: 41 57 push %r15 0.00 : 78e22: 41 56 push %r14 0.00 : 78e24: 41 55 push %r13 0.00 : 78e26: 41 54 push %r12 0.00 : 78e28: 55 push %rbp 0.00 : 78e29: 53 push %rbx 0.00 : 78e2a: 48 83 ec 78 sub $0x78,%rsp 0.00 : 78e2e: 48 83 fe bf cmp $0xffffffffffffffbf,%rsi 0.00 : 78e32: 48 89 7c 24 20 mov %rdi,0x20(%rsp) ??:0 5.13 : 78e37: 48 89 74 24 18 mov %rsi,0x18(%rsp) 0.00 : 78e3c: 0f 87 bd 09 00 00 ja 797ff <_int_malloc+0x9df> 0.00 : 78e42: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : 78e47: 48 c7 44 24 28 20 00 movq $0x20,0x28(%rsp) 0.00 : 78e4e: 00 00 0.00 : 78e50: 48 83 c0 17 add $0x17,%rax 0.00 : 78e54: 48 89 c2 mov %rax,%rdx 0.00 : 78e57: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : 78e5b: 48 83 f8 1f cmp $0x1f,%rax 0.00 : 78e5f: 48 0f 46 54 24 28 cmovbe 0x28(%rsp),%rdx 0.00 : 78e65: 48 3b 15 0c b9 2f 00 cmp 0x2fb90c(%rip),%rdx # 374778 0.00 : 78e6c: 48 89 54 24 28 mov %rdx,0x28(%rsp) 0.00 : 78e71: 77 6d ja 78ee0 <_int_malloc+0xc0> 0.00 : 78e73: 8b 44 24 28 mov 0x28(%rsp),%eax 0.00 : 78e77: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 78e7c: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 78e81: c1 e8 04 shr $0x4,%eax 0.00 : 78e84: 8d 50 fe lea -0x2(%rax),%edx 0.00 : 78e87: 89 d0 mov %edx,%eax 0.00 : 78e89: 48 8d 4c c1 08 lea 0x8(%rcx,%rax,8),%rcx 0.00 : 78e8e: 48 89 4c 24 38 mov %rcx,0x38(%rsp) 0.00 : 78e93: 4c 8b 7c c3 08 mov 0x8(%rbx,%rax,8),%r15 0.00 : 78e98: 4d 85 ff test %r15,%r15 0.00 : 78e9b: 74 43 je 78ee0 <_int_malloc+0xc0> 0.00 : 78e9d: 49 8b 47 08 mov 0x8(%r15),%rax ??:0 2.56 : 78ea1: 49 8d 5f 10 lea 0x10(%r15),%rbx 0.00 : 78ea5: c1 e8 04 shr $0x4,%eax 0.00 : 78ea8: 83 e8 02 sub $0x2,%eax 0.00 : 78eab: 39 d0 cmp %edx,%eax 0.00 : 78ead: 0f 85 91 0d 00 00 jne 79c44 <_int_malloc+0xe24> 0.00 : 78eb3: 49 8b 47 10 mov 0x10(%r15),%rax 0.00 : 78eb7: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 78ebc: 48 89 02 mov %rax,(%rdx) 0.00 : 78ebf: 8b 05 bb b8 2f 00 mov 0x2fb8bb(%rip),%eax # 374780 0.00 : 78ec5: 85 c0 test %eax,%eax 0.00 : 78ec7: 0f 85 60 0d 00 00 jne 79c2d <_int_malloc+0xe0d> 0.00 : 78ecd: 48 83 c4 78 add $0x78,%rsp 0.00 : 78ed1: 48 89 d8 mov %rbx,%rax 0.00 : 78ed4: 5b pop %rbx 0.00 : 78ed5: 5d pop %rbp 0.00 : 78ed6: 41 5c pop %r12 0.00 : 78ed8: 41 5d pop %r13 0.00 : 78eda: 41 5e pop %r14 0.00 : 78edc: 41 5f pop %r15 0.00 : 78ede: c3 retq 0.00 : 78edf: 90 nop 0.00 : 78ee0: 48 81 7c 24 28 ff 03 cmpq $0x3ff,0x28(%rsp) 0.00 : 78ee7: 00 00 ??:0 5.13 : 78ee9: 0f 87 b1 00 00 00 ja 78fa0 <_int_malloc+0x180> 0.00 : 78eef: 8b 4c 24 28 mov 0x28(%rsp),%ecx 0.00 : 78ef3: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 78ef8: c1 e9 04 shr $0x4,%ecx 0.00 : 78efb: 48 83 c3 68 add $0x68,%rbx 0.00 : 78eff: 8d 44 09 fe lea -0x2(%rcx,%rcx,1),%eax 0.00 : 78f03: 89 4c 24 34 mov %ecx,0x34(%rsp) 0.00 : 78f07: 48 89 5c 24 10 mov %rbx,0x10(%rsp) 0.00 : 78f0c: 89 c0 mov %eax,%eax 0.00 : 78f0e: 48 8d 4c c3 f0 lea -0x10(%rbx,%rax,8),%rcx 0.00 : 78f13: 4c 8b 79 18 mov 0x18(%rcx),%r15 0.00 : 78f17: 49 39 cf cmp %rcx,%r15 0.00 : 78f1a: 0f 84 ce 00 00 00 je 78fee <_int_malloc+0x1ce> 0.00 : 78f20: 4d 85 ff test %r15,%r15 0.00 : 78f23: 0f 84 c7 08 00 00 je 797f0 <_int_malloc+0x9d0> 0.00 : 78f29: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 78f2d: 48 8d 35 5c 65 0c 00 lea 0xc655c(%rip),%rsi # 13f490 <__PRETTY_FUNCTION__.11129+0x1ab7> 0.00 : 78f34: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 78f38: 4c 39 fa cmp %r15,%rdx 0.00 : 78f3b: 0f 85 0a 0d 00 00 jne 79c4b <_int_malloc+0xe2b> 0.00 : 78f41: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 78f46: 48 83 4c 1a 08 01 orq $0x1,0x8(%rdx,%rbx,1) 0.00 : 78f4c: 48 89 41 18 mov %rax,0x18(%rcx) 0.00 : 78f50: 48 89 48 10 mov %rcx,0x10(%rax) 0.00 : 78f54: 48 8d 05 45 af 2f 00 lea 0x2faf45(%rip),%rax # 373ea0 0.00 : 78f5b: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 78f60: 74 05 je 78f67 <_int_malloc+0x147> 0.00 : 78f62: 48 83 4a 08 04 orq $0x4,0x8(%rdx) 0.00 : 78f67: 8b 05 13 b8 2f 00 mov 0x2fb813(%rip),%eax # 374780 0.00 : 78f6d: 48 8d 6a 10 lea 0x10(%rdx),%rbp 0.00 : 78f71: 48 89 eb mov %rbp,%rbx 0.00 : 78f74: 85 c0 test %eax,%eax 0.00 : 78f76: 0f 84 51 ff ff ff je 78ecd <_int_malloc+0xad> 0.00 : 78f7c: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 78f81: f7 d0 not %eax 0.00 : 78f83: 48 89 ef mov %rbp,%rdi 0.00 : 78f86: 0f b6 f0 movzbl %al,%esi 0.00 : 78f89: 48 89 eb mov %rbp,%rbx 0.00 : 78f8c: e8 df a4 00 00 callq 83470 <__GI_memset> 0.00 : 78f91: e9 37 ff ff ff jmpq 78ecd <_int_malloc+0xad> 0.00 : 78f96: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 78f9d: 00 00 00 0.00 : 78fa0: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 78fa5: 48 c1 e8 06 shr $0x6,%rax 0.00 : 78fa9: 48 83 f8 30 cmp $0x30,%rax 0.00 : 78fad: 0f 86 26 06 00 00 jbe 795d9 <_int_malloc+0x7b9> 0.00 : 78fb3: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 78fb8: 48 c1 e8 09 shr $0x9,%rax 0.00 : 78fbc: 48 83 f8 14 cmp $0x14,%rax 0.00 : 78fc0: 0f 87 d6 06 00 00 ja 7969c <_int_malloc+0x87c> 0.00 : 78fc6: 83 c0 5b add $0x5b,%eax 0.00 : 78fc9: 89 44 24 34 mov %eax,0x34(%rsp) 0.00 : 78fcd: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 78fd2: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 78fd7: 48 83 c0 68 add $0x68,%rax 0.00 : 78fdb: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 78fe0: f6 42 04 01 testb $0x1,0x4(%rdx) ??:0 2.56 : 78fe4: 75 08 jne 78fee <_int_malloc+0x1ce> 0.00 : 78fe6: 48 89 d7 mov %rdx,%rdi 0.00 : 78fe9: e8 52 d8 ff ff callq 76840 0.00 : 78fee: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 78ff3: 8b 5c 24 28 mov 0x28(%rsp),%ebx 0.00 : 78ff7: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 78ffc: 48 83 c1 58 add $0x58,%rcx 0.00 : 79000: c1 eb 04 shr $0x4,%ebx 2.56 : 79003: 48 83 c0 20 add $0x20,%rax 0.00 : 79007: 48 89 4c 24 60 mov %rcx,0x60(%rsp) 0.00 : 7900c: 89 5c 24 6c mov %ebx,0x6c(%rsp) 0.00 : 79010: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 79015: 45 31 ff xor %r15d,%r15d 0.00 : 79018: eb 67 jmp 79081 <_int_malloc+0x261> 0.00 : 7901a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79020: 41 89 d5 mov %edx,%r13d 0.00 : 79023: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 79028: 41 c1 ed 04 shr $0x4,%r13d 0.00 : 7902c: 43 8d 44 2d fe lea -0x2(%r13,%r13,1),%eax 0.00 : 79031: 48 98 cltq 0.00 : 79033: 48 8d 74 c2 f0 lea -0x10(%rdx,%rax,8),%rsi 0.00 : 79038: 48 8b 5e 10 mov 0x10(%rsi),%rbx 0.00 : 7903c: 44 89 e8 mov %r13d,%eax 0.00 : 7903f: 41 83 e5 1f and $0x1f,%r13d 0.00 : 79043: ba 01 00 00 00 mov $0x1,%edx 0.00 : 79048: 44 89 e9 mov %r13d,%ecx 0.00 : 7904b: c1 f8 05 sar $0x5,%eax 0.00 : 7904e: 41 83 c7 01 add $0x1,%r15d 0.00 : 79052: d3 e2 shl %cl,%edx 0.00 : 79054: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 79059: 48 98 cltq 0.00 : 7905b: 09 94 81 58 08 00 00 or %edx,0x858(%rcx,%rax,4) 0.00 : 79062: 41 81 ff 10 27 00 00 cmp $0x2710,%r15d 0.00 : 79069: 49 89 74 24 18 mov %rsi,0x18(%r12) 0.00 : 7906e: 49 89 5c 24 10 mov %rbx,0x10(%r12) 0.00 : 79073: 4c 89 63 18 mov %r12,0x18(%rbx) 0.00 : 79077: 4c 89 66 10 mov %r12,0x10(%rsi) 0.00 : 7907b: 0f 84 3f 03 00 00 je 793c0 <_int_malloc+0x5a0> 0.00 : 79081: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : 79086: 4c 8b 63 18 mov 0x18(%rbx),%r12 2.56 : 7908a: 4c 39 e3 cmp %r12,%rbx 0.00 : 7908d: 0f 84 2d 03 00 00 je 793c0 <_int_malloc+0x5a0> 0.00 : 79093: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 79098: 49 8b 5c 24 18 mov 0x18(%r12),%rbx 0.00 : 7909d: 48 83 f8 10 cmp $0x10,%rax 0.00 : 790a1: 0f 86 11 05 00 00 jbe 795b8 <_int_malloc+0x798> 0.00 : 790a7: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 790ac: 48 3b 82 70 08 00 00 cmp 0x870(%rdx),%rax 0.00 : 790b3: 0f 87 ff 04 00 00 ja 795b8 <_int_malloc+0x798> 0.00 : 790b9: 48 89 c2 mov %rax,%rdx 0.00 : 790bc: 48 83 e2 f8 and $0xfffffffffffffff8,%rdx 0.00 : 790c0: 48 81 7c 24 28 ff 03 cmpq $0x3ff,0x28(%rsp) 0.00 : 790c7: 00 00 0.00 : 790c9: 77 0b ja 790d6 <_int_malloc+0x2b6> 0.00 : 790cb: 48 39 5c 24 60 cmp %rbx,0x60(%rsp) 0.00 : 790d0: 0f 84 aa 01 00 00 je 79280 <_int_malloc+0x460> 0.00 : 790d6: 48 8b 4c 24 60 mov 0x60(%rsp),%rcx 0.00 : 790db: 48 89 59 18 mov %rbx,0x18(%rcx) 0.00 : 790df: 48 89 4b 10 mov %rcx,0x10(%rbx) 0.00 : 790e3: 48 39 54 24 28 cmp %rdx,0x28(%rsp) 0.00 : 790e8: 0f 84 8a 04 00 00 je 79578 <_int_malloc+0x758> 0.00 : 790ee: 48 81 fa ff 03 00 00 cmp $0x3ff,%rdx 0.00 : 790f5: 0f 86 25 ff ff ff jbe 79020 <_int_malloc+0x200> 0.00 : 790fb: 48 89 d0 mov %rdx,%rax 0.00 : 790fe: 48 c1 e8 06 shr $0x6,%rax 0.00 : 79102: 48 83 f8 30 cmp $0x30,%rax 0.00 : 79106: 77 70 ja 79178 <_int_malloc+0x358> 0.00 : 79108: 44 8d 68 30 lea 0x30(%rax),%r13d 0.00 : 7910c: 8d 44 00 5e lea 0x5e(%rax,%rax,1),%eax 0.00 : 79110: 48 98 cltq 0.00 : 79112: 48 8d 04 c5 f0 ff ff lea -0x10(,%rax,8),%rax 0.00 : 79119: ff 0.00 : 7911a: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7911f: 48 01 c5 add %rax,%rbp 0.00 : 79122: 48 8b 5d 10 mov 0x10(%rbp),%rbx 0.00 : 79126: 48 39 eb cmp %rbp,%rbx 0.00 : 79129: 0f 84 11 02 00 00 je 79340 <_int_malloc+0x520> 0.00 : 7912f: 48 8b 75 18 mov 0x18(%rbp),%rsi 0.00 : 79133: 49 89 d6 mov %rdx,%r14 0.00 : 79136: 49 83 ce 01 or $0x1,%r14 0.00 : 7913a: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 7913e: a8 04 test $0x4,%al 0.00 : 79140: 0f 85 da 00 00 00 jne 79220 <_int_malloc+0x400> 0.00 : 79146: 49 39 c6 cmp %rax,%r14 0.00 : 79149: 73 5d jae 791a8 <_int_malloc+0x388> 0.00 : 7914b: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 7914f: 48 89 eb mov %rbp,%rbx 0.00 : 79152: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 79157: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 7915b: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 7915f: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 79164: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 79168: 4c 89 60 20 mov %r12,0x20(%rax) 0.00 : 7916c: 4c 89 62 28 mov %r12,0x28(%rdx) 0.00 : 79170: e9 c7 fe ff ff jmpq 7903c <_int_malloc+0x21c> 0.00 : 79175: 0f 1f 00 nopl (%rax) 0.00 : 79178: 48 89 d0 mov %rdx,%rax 0.00 : 7917b: 48 c1 e8 09 shr $0x9,%rax 0.00 : 7917f: 48 83 f8 14 cmp $0x14,%rax 0.00 : 79183: 0f 87 c7 00 00 00 ja 79250 <_int_malloc+0x430> 0.00 : 79189: 44 8d 68 5b lea 0x5b(%rax),%r13d 0.00 : 7918d: 8d 84 00 b4 00 00 00 lea 0xb4(%rax,%rax,1),%eax 0.00 : 79194: 48 98 cltq 0.00 : 79196: 48 8d 04 c5 f0 ff ff lea -0x10(,%rax,8),%rax 0.00 : 7919d: ff 0.00 : 7919e: e9 77 ff ff ff jmpq 7911a <_int_malloc+0x2fa> 0.00 : 791a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 791a8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 791ac: a8 04 test $0x4,%al 0.00 : 791ae: 0f 85 b4 01 00 00 jne 79368 <_int_malloc+0x548> 0.00 : 791b4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 791b8: 49 39 c6 cmp %rax,%r14 0.00 : 791bb: 73 34 jae 791f1 <_int_malloc+0x3d1> 0.00 : 791bd: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 791c1: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 791c5: a8 04 test $0x4,%al 0.00 : 791c7: 74 ef je 791b8 <_int_malloc+0x398> 0.00 : 791c9: 48 8d 0d 57 2c 0c 00 lea 0xc2c57(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 791d0: 48 8d 35 6b 29 0c 00 lea 0xc296b(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 791d7: 48 8d 3d 82 2a 0c 00 lea 0xc2a82(%rip),%rdi # 13bc60 <__PRETTY_FUNCTION__.14063+0x1f9> 0.00 : 791de: ba 94 11 00 00 mov $0x1194,%edx 0.00 : 791e3: e8 d8 d5 ff ff callq 767c0 <__malloc_assert> 0.00 : 791e8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 791ec: 49 39 c6 cmp %rax,%r14 0.00 : 791ef: 72 cc jb 791bd <_int_malloc+0x39d> 0.00 : 791f1: 0f 84 61 01 00 00 je 79358 <_int_malloc+0x538> 0.00 : 791f7: 49 89 5c 24 20 mov %rbx,0x20(%r12) 0.00 : 791fc: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 79200: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 79205: 4c 89 63 28 mov %r12,0x28(%rbx) 0.00 : 79209: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 7920e: 4c 89 60 20 mov %r12,0x20(%rax) 0.00 : 79212: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 79216: e9 21 fe ff ff jmpq 7903c <_int_malloc+0x21c> 0.00 : 7921b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79220: 48 8d 35 1b 29 0c 00 lea 0xc291b(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79227: 48 8d 0d f9 2b 0c 00 lea 0xc2bf9(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7922e: 48 8d 3d 10 2a 0c 00 lea 0xc2a10(%rip),%rdi # 13bc45 <__PRETTY_FUNCTION__.14063+0x1de> 0.00 : 79235: ba 86 11 00 00 mov $0x1186,%edx 0.00 : 7923a: e8 81 d5 ff ff callq 767c0 <__malloc_assert> 0.00 : 7923f: 48 8b 75 18 mov 0x18(%rbp),%rsi 0.00 : 79243: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 79247: e9 fa fe ff ff jmpq 79146 <_int_malloc+0x326> 0.00 : 7924c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 79250: 48 89 d0 mov %rdx,%rax 0.00 : 79253: 48 c1 e8 0c shr $0xc,%rax 0.00 : 79257: 48 83 f8 0a cmp $0xa,%rax 0.00 : 7925b: 0f 87 2f 01 00 00 ja 79390 <_int_malloc+0x570> 0.00 : 79261: 44 8d 68 6e lea 0x6e(%rax),%r13d 0.00 : 79265: 8d 84 00 da 00 00 00 lea 0xda(%rax,%rax,1),%eax 0.00 : 7926c: 48 98 cltq 0.00 : 7926e: 48 8d 04 c5 f0 ff ff lea -0x10(,%rax,8),%rax 0.00 : 79275: ff 0.00 : 79276: e9 9f fe ff ff jmpq 7911a <_int_malloc+0x2fa> 0.00 : 7927b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79280: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79285: 48 8b 48 60 mov 0x60(%rax),%rcx 0.00 : 79289: 4c 39 e1 cmp %r12,%rcx 0.00 : 7928c: 0f 85 44 fe ff ff jne 790d6 <_int_malloc+0x2b6> 0.00 : 79292: 48 3b 54 24 08 cmp 0x8(%rsp),%rdx 0.00 : 79297: 0f 86 39 fe ff ff jbe 790d6 <_int_malloc+0x2b6> 0.00 : 7929d: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 792a2: 48 8b 44 24 60 mov 0x60(%rsp),%rax 0.00 : 792a7: 48 89 d6 mov %rdx,%rsi 0.00 : 792aa: 48 2b 74 24 28 sub 0x28(%rsp),%rsi 0.00 : 792af: 49 8d 14 1c lea (%r12,%rbx,1),%rdx 0.00 : 792b3: 48 89 50 10 mov %rdx,0x10(%rax) 0.00 : 792b7: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 792bb: 48 81 fe ff 03 00 00 cmp $0x3ff,%rsi 0.00 : 792c2: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 792c7: 48 89 53 60 mov %rdx,0x60(%rbx) 0.00 : 792cb: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 792cf: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 792d3: 76 10 jbe 792e5 <_int_malloc+0x4c5> 0.00 : 792d5: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 792dc: 00 0.00 : 792dd: 48 c7 42 28 00 00 00 movq $0x0,0x28(%rdx) 0.00 : 792e4: 00 0.00 : 792e5: 48 8d 05 b4 ab 2f 00 lea 0x2fabb4(%rip),%rax # 373ea0 0.00 : 792ec: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 792f1: 48 8d 69 10 lea 0x10(%rcx),%rbp 0.00 : 792f5: 48 89 eb mov %rbp,%rbx 0.00 : 792f8: 0f 95 c0 setne %al 0.00 : 792fb: 48 83 4c 24 28 01 orq $0x1,0x28(%rsp) 0.00 : 79301: 0f b6 c0 movzbl %al,%eax 0.00 : 79304: 48 c1 e0 02 shl $0x2,%rax 0.00 : 79308: 48 09 44 24 28 or %rax,0x28(%rsp) 0.00 : 7930d: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 79312: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 79316: 48 89 f0 mov %rsi,%rax 0.00 : 79319: 48 83 c8 01 or $0x1,%rax 0.00 : 7931d: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 79321: 48 89 34 32 mov %rsi,(%rdx,%rsi,1) 0.00 : 79325: 8b 05 55 b4 2f 00 mov 0x2fb455(%rip),%eax # 374780 0.00 : 7932b: 85 c0 test %eax,%eax 0.00 : 7932d: 0f 84 9a fb ff ff je 78ecd <_int_malloc+0xad> 0.00 : 79333: e9 44 fc ff ff jmpq 78f7c <_int_malloc+0x15c> 0.00 : 79338: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7933f: 00 0.00 : 79340: 4d 89 64 24 28 mov %r12,0x28(%r12) 2.56 : 79345: 4d 89 64 24 20 mov %r12,0x20(%r12) 0.00 : 7934a: 48 89 de mov %rbx,%rsi 0.00 : 7934d: e9 ea fc ff ff jmpq 7903c <_int_malloc+0x21c> 0.00 : 79352: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79358: 48 8b 5b 10 mov 0x10(%rbx),%rbx 0.00 : 7935c: e9 b1 fe ff ff jmpq 79212 <_int_malloc+0x3f2> 0.00 : 79361: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 79368: 48 8d 0d b8 2a 0c 00 lea 0xc2ab8(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7936f: 48 8d 35 cc 27 0c 00 lea 0xc27cc(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79376: 48 8d 3d e3 28 0c 00 lea 0xc28e3(%rip),%rdi # 13bc60 <__PRETTY_FUNCTION__.14063+0x1f9> 0.00 : 7937d: ba 90 11 00 00 mov $0x1190,%edx 0.00 : 79382: e8 39 d4 ff ff callq 767c0 <__malloc_assert> 0.00 : 79387: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7938b: e9 28 fe ff ff jmpq 791b8 <_int_malloc+0x398> 0.00 : 79390: 48 89 d0 mov %rdx,%rax 0.00 : 79393: 48 c1 e8 0f shr $0xf,%rax 0.00 : 79397: 48 83 f8 04 cmp $0x4,%rax 0.00 : 7939b: 0f 87 47 01 00 00 ja 794e8 <_int_malloc+0x6c8> 0.00 : 793a1: 44 8d 68 77 lea 0x77(%rax),%r13d 0.00 : 793a5: 8d 84 00 ec 00 00 00 lea 0xec(%rax,%rax,1),%eax 0.00 : 793ac: 48 98 cltq 0.00 : 793ae: 48 8d 04 c5 f0 ff ff lea -0x10(,%rax,8),%rax 0.00 : 793b5: ff 0.00 : 793b6: e9 5f fd ff ff jmpq 7911a <_int_malloc+0x2fa> 0.00 : 793bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 2.56 : 793c0: 48 81 7c 24 28 ff 03 cmpq $0x3ff,0x28(%rsp) 0.00 : 793c7: 00 00 2.56 : 793c9: 76 2c jbe 793f7 <_int_malloc+0x5d7> 0.00 : 793cb: 8b 54 24 34 mov 0x34(%rsp),%edx 0.00 : 793cf: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx 0.00 : 793d4: 8d 44 12 fe lea -0x2(%rdx,%rdx,1),%eax 0.00 : 793d8: 89 c0 mov %eax,%eax 0.00 : 793da: 48 8d 54 c1 f0 lea -0x10(%rcx,%rax,8),%rdx 0.00 : 793df: 48 8b 42 10 mov 0x10(%rdx),%rax ??:0 5.13 : 793e3: 48 39 d0 cmp %rdx,%rax 0.00 : 793e6: 74 0f je 793f7 <_int_malloc+0x5d7> 0.00 : 793e8: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 793ed: 48 3b 58 08 cmp 0x8(%rax),%rbx 0.00 : 793f1: 0f 86 df 02 00 00 jbe 796d6 <_int_malloc+0x8b6> 0.00 : 793f7: 8b 4c 24 34 mov 0x34(%rsp),%ecx 0.00 : 793fb: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 79400: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 79405: 83 c1 01 add $0x1,%ecx 0.00 : 79408: 8d 44 09 fe lea -0x2(%rcx,%rcx,1),%eax 0.00 : 7940c: 41 89 cd mov %ecx,%r13d 0.00 : 7940f: 83 e1 1f and $0x1f,%ecx 0.00 : 79412: 41 c1 ed 05 shr $0x5,%r13d 0.00 : 79416: 89 c0 mov %eax,%eax 0.00 : 79418: 45 89 ee mov %r13d,%r14d 0.00 : 7941b: 46 8b a4 b3 58 08 00 mov 0x858(%rbx,%r14,4),%r12d 0.00 : 79422: 00 0.00 : 79423: 48 8d 6c c2 f0 lea -0x10(%rdx,%rax,8),%rbp 0.00 : 79428: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 7942d: d3 e3 shl %cl,%ebx 0.00 : 7942f: 90 nop 0.00 : 79430: 44 39 e3 cmp %r12d,%ebx 0.00 : 79433: 77 0b ja 79440 <_int_malloc+0x620> 0.00 : 79435: 85 db test %ebx,%ebx 0.00 : 79437: 0f 85 9a 00 00 00 jne 794d7 <_int_malloc+0x6b7> 0.00 : 7943d: 0f 1f 00 nopl (%rax) 0.00 : 79440: 41 83 c5 01 add $0x1,%r13d 0.00 : 79444: 41 83 fd 03 cmp $0x3,%r13d 0.00 : 79448: 0f 87 d2 00 00 00 ja 79520 <_int_malloc+0x700> 0.00 : 7944e: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79453: 45 89 ee mov %r13d,%r14d 0.00 : 79456: 46 8b a4 b0 58 08 00 mov 0x858(%rax,%r14,4),%r12d 0.00 : 7945d: 00 0.00 : 7945e: 45 85 e4 test %r12d,%r12d 0.00 : 79461: 74 dd je 79440 <_int_malloc+0x620> 0.00 : 79463: 44 89 e8 mov %r13d,%eax 0.00 : 79466: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 7946b: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 79470: c1 e0 06 shl $0x6,%eax 0.00 : 79473: 83 e8 02 sub $0x2,%eax 0.00 : 79476: 44 85 e3 test %r12d,%ebx 0.00 : 79479: 89 c0 mov %eax,%eax 0.00 : 7947b: 48 8d 6c c2 f0 lea -0x10(%rdx,%rax,8),%rbp 0.00 : 79480: 74 5a je 794dc <_int_malloc+0x6bc> 0.00 : 79482: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) ??:0 2.56 : 79488: 4c 8b 7d 18 mov 0x18(%rbp),%r15 0.00 : 7948c: 49 39 ef cmp %rbp,%r15 0.00 : 7948f: 0f 85 50 01 00 00 jne 795e5 <_int_malloc+0x7c5> 0.00 : 79495: 89 d8 mov %ebx,%eax 0.00 : 79497: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 7949c: 48 83 c5 10 add $0x10,%rbp 0.00 : 794a0: f7 d0 not %eax 0.00 : 794a2: 01 db add %ebx,%ebx 0.00 : 794a4: 41 21 c4 and %eax,%r12d 0.00 : 794a7: 46 89 a4 b1 58 08 00 mov %r12d,0x858(%rcx,%r14,4) 0.00 : 794ae: 00 0.00 : 794af: e9 7c ff ff ff jmpq 79430 <_int_malloc+0x610> 0.00 : 794b4: 48 8d 0d 6c 29 0c 00 lea 0xc296c(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 794bb: 48 8d 35 80 26 0c 00 lea 0xc2680(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 794c2: 48 8d 3d ae 27 0c 00 lea 0xc27ae(%rip),%rdi # 13bc77 <__PRETTY_FUNCTION__.14063+0x210> 0.00 : 794c9: ba 15 12 00 00 mov $0x1215,%edx 0.00 : 794ce: e8 ed d2 ff ff callq 767c0 <__malloc_assert> 0.00 : 794d3: 48 83 c5 10 add $0x10,%rbp 0.00 : 794d7: 44 85 e3 test %r12d,%ebx 0.00 : 794da: 75 ac jne 79488 <_int_malloc+0x668> 0.00 : 794dc: 01 db add %ebx,%ebx 0.00 : 794de: 75 f3 jne 794d3 <_int_malloc+0x6b3> 0.00 : 794e0: eb d2 jmp 794b4 <_int_malloc+0x694> 0.00 : 794e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 794e8: 48 89 d1 mov %rdx,%rcx 0.00 : 794eb: 41 bd 7e 00 00 00 mov $0x7e,%r13d 0.00 : 794f1: b8 c0 07 00 00 mov $0x7c0,%eax 0.00 : 794f6: 48 c1 e9 12 shr $0x12,%rcx 0.00 : 794fa: 48 83 f9 02 cmp $0x2,%rcx 0.00 : 794fe: 0f 87 16 fc ff ff ja 7911a <_int_malloc+0x2fa> 0.00 : 79504: 8d 84 09 f6 00 00 00 lea 0xf6(%rcx,%rcx,1),%eax 0.00 : 7950b: 44 8d 69 7c lea 0x7c(%rcx),%r13d 0.00 : 7950f: 48 98 cltq 0.00 : 79511: 48 8d 04 c5 f0 ff ff lea -0x10(,%rax,8),%rax 0.00 : 79518: ff 0.00 : 79519: e9 fc fb ff ff jmpq 7911a <_int_malloc+0x2fa> 0.00 : 7951e: 66 90 xchg %ax,%ax 0.00 : 79520: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 79525: 4c 8b 6b 58 mov 0x58(%rbx),%r13 0.00 : 79529: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 7952d: 49 89 d6 mov %rdx,%r14 0.00 : 79530: 49 83 e6 f8 and $0xfffffffffffffff8,%r14 0.00 : 79534: 4c 3b 74 24 08 cmp 0x8(%rsp),%r14 0.00 : 79539: 0f 83 53 04 00 00 jae 79992 <_int_malloc+0xb72> 0.00 : 7953f: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 79544: f6 41 04 01 testb $0x1,0x4(%rcx) 0.00 : 79548: 0f 85 a2 04 00 00 jne 799f0 <_int_malloc+0xbd0> 0.00 : 7954e: 48 81 7c 24 28 ff 03 cmpq $0x3ff,0x28(%rsp) 0.00 : 79555: 00 00 0.00 : 79557: 0f 87 1b 01 00 00 ja 79678 <_int_malloc+0x858> 0.00 : 7955d: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 79562: e8 d9 d2 ff ff callq 76840 0.00 : 79567: 8b 5c 24 6c mov 0x6c(%rsp),%ebx 0.00 : 7956b: 89 5c 24 34 mov %ebx,0x34(%rsp) 0.00 : 7956f: e9 a1 fa ff ff jmpq 79015 <_int_malloc+0x1f5> 0.00 : 79574: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 79578: 48 8b 5c 24 28 mov 0x28(%rsp),%rbx 0.00 : 7957d: 48 8d 05 1c a9 2f 00 lea 0x2fa91c(%rip),%rax # 373ea0 2.56 : 79584: 49 83 4c 1c 08 01 orq $0x1,0x8(%r12,%rbx,1) 0.00 : 7958a: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 7958f: 74 06 je 79597 <_int_malloc+0x777> 0.00 : 79591: 49 83 4c 24 08 04 orq $0x4,0x8(%r12) 0.00 : 79597: 8b 05 e3 b1 2f 00 mov 0x2fb1e3(%rip),%eax # 374780 0.00 : 7959d: 49 8d 6c 24 10 lea 0x10(%r12),%rbp 0.00 : 795a2: 48 89 eb mov %rbp,%rbx 0.00 : 795a5: 85 c0 test %eax,%eax 0.00 : 795a7: 0f 84 20 f9 ff ff je 78ecd <_int_malloc+0xad> 0.00 : 795ad: e9 ca f9 ff ff jmpq 78f7c <_int_malloc+0x15c> 0.00 : 795b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 795b8: 8b 3d 4a 8b 2f 00 mov 0x2f8b4a(%rip),%edi # 372108 0.00 : 795be: 49 8d 54 24 10 lea 0x10(%r12),%rdx 0.00 : 795c3: 48 8d 35 5f 26 0c 00 lea 0xc265f(%rip),%rsi # 13bc29 <__PRETTY_FUNCTION__.14063+0x1c2> 0.00 : 795ca: e8 91 cf ff ff callq 76560 0.00 : 795cf: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 795d4: e9 e0 fa ff ff jmpq 790b9 <_int_malloc+0x299> 0.00 : 795d9: 83 c0 30 add $0x30,%eax 0.00 : 795dc: 89 44 24 34 mov %eax,0x34(%rsp) 0.00 : 795e0: e9 e8 f9 ff ff jmpq 78fcd <_int_malloc+0x1ad> 0.00 : 795e5: 4d 8b 67 08 mov 0x8(%r15),%r12 0.00 : 795e9: 49 83 e4 f8 and $0xfffffffffffffff8,%r12 0.00 : 795ed: 4c 39 64 24 28 cmp %r12,0x28(%rsp) 0.00 : 795f2: 0f 87 50 03 00 00 ja 79948 <_int_malloc+0xb28> 0.00 : 795f8: 49 8b 5f 10 mov 0x10(%r15),%rbx 0.00 : 795fc: 4d 89 e5 mov %r12,%r13 0.00 : 795ff: 4c 2b 6c 24 28 sub 0x28(%rsp),%r13 0.00 : 79604: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 79608: 48 8b 6b 18 mov 0x18(%rbx),%rbp 0.00 : 7960c: 4c 39 fd cmp %r15,%rbp 0.00 : 7960f: 0f 85 de 06 00 00 jne 79cf3 <_int_malloc+0xed3> 0.00 : 79615: 4c 3b 78 10 cmp 0x10(%rax),%r15 0.00 : 79619: 0f 85 d4 06 00 00 jne 79cf3 <_int_malloc+0xed3> 0.00 : 7961f: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 79623: 48 89 58 10 mov %rbx,0x10(%rax) 0.00 : 79627: 49 81 7f 08 ff 03 00 cmpq $0x3ff,0x8(%r15) 0.00 : 7962e: 00 0.00 : 7962f: 0f 87 89 02 00 00 ja 798be <_int_malloc+0xa9e> 0.00 : 79635: 49 83 fd 1f cmp $0x1f,%r13 0.00 : 79639: 0f 87 de 01 00 00 ja 7981d <_int_malloc+0x9fd> 0.00 : 7963f: 4b 83 4c 27 08 01 orq $0x1,0x8(%r15,%r12,1) 0.00 : 79645: 48 8d 05 54 a8 2f 00 lea 0x2fa854(%rip),%rax # 373ea0 0.00 : 7964c: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 79651: 74 05 je 79658 <_int_malloc+0x838> 0.00 : 79653: 49 83 4f 08 04 orq $0x4,0x8(%r15) 0.00 : 79658: 8b 05 22 b1 2f 00 mov 0x2fb122(%rip),%eax # 374780 0.00 : 7965e: 49 8d 6f 10 lea 0x10(%r15),%rbp 0.00 : 79662: 48 89 eb mov %rbp,%rbx 0.00 : 79665: 85 c0 test %eax,%eax 0.00 : 79667: 0f 84 60 f8 ff ff je 78ecd <_int_malloc+0xad> 0.00 : 7966d: e9 0a f9 ff ff jmpq 78f7c <_int_malloc+0x15c> 0.00 : 79672: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79678: 48 8d 0d a8 27 0c 00 lea 0xc27a8(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7967f: 48 8d 35 bc 24 0c 00 lea 0xc24bc(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79686: 48 8d 3d 13 5f 0c 00 lea 0xc5f13(%rip),%rdi # 13f5a0 <__PRETTY_FUNCTION__.11129+0x1bc7> 0.00 : 7968d: ba 90 12 00 00 mov $0x1290,%edx 0.00 : 79692: e8 29 d1 ff ff callq 767c0 <__malloc_assert> 0.00 : 79697: e9 c1 fe ff ff jmpq 7955d <_int_malloc+0x73d> 0.00 : 7969c: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 796a1: 48 c1 e8 0c shr $0xc,%rax 0.00 : 796a5: 48 83 f8 0a cmp $0xa,%rax 0.00 : 796a9: 76 1f jbe 796ca <_int_malloc+0x8aa> 0.00 : 796ab: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 796b0: 48 c1 e8 0f shr $0xf,%rax 0.00 : 796b4: 48 83 f8 04 cmp $0x4,%rax 0.00 : 796b8: 0f 87 ae 02 00 00 ja 7996c <_int_malloc+0xb4c> ??:0 5.13 : 796be: 83 c0 77 add $0x77,%eax 0.00 : 796c1: 89 44 24 34 mov %eax,0x34(%rsp) 0.00 : 796c5: e9 03 f9 ff ff jmpq 78fcd <_int_malloc+0x1ad> 0.00 : 796ca: 83 c0 6e add $0x6e,%eax 0.00 : 796cd: 89 44 24 34 mov %eax,0x34(%rsp) 0.00 : 796d1: e9 f7 f8 ff ff jmpq 78fcd <_int_malloc+0x1ad> 0.00 : 796d6: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 796da: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 796de: 49 89 cc mov %rcx,%r12 0.00 : 796e1: 49 83 e4 f8 and $0xfffffffffffffff8,%r12 0.00 : 796e5: 4c 39 e3 cmp %r12,%rbx 0.00 : 796e8: 76 16 jbe 79700 <_int_malloc+0x8e0> 0.00 : 796ea: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 796ee: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 796f2: 49 89 cc mov %rcx,%r12 0.00 : 796f5: 49 83 e4 f8 and $0xfffffffffffffff8,%r12 0.00 : 796f9: 4c 39 64 24 28 cmp %r12,0x28(%rsp) 0.00 : 796fe: 77 ea ja 796ea <_int_malloc+0x8ca> 0.00 : 79700: 48 39 42 18 cmp %rax,0x18(%rdx) 0.00 : 79704: 0f 84 9a 0a 00 00 je 7a1a4 <_int_malloc+0x1384> 0.00 : 7970a: 4c 8b 78 10 mov 0x10(%rax),%r15 0.00 : 7970e: 49 39 4f 08 cmp %rcx,0x8(%r15) 0.00 : 79712: 0f 84 83 0a 00 00 je 7a19b <_int_malloc+0x137b> 0.00 : 79718: 4c 89 fb mov %r15,%rbx 0.00 : 7971b: 49 89 c7 mov %rax,%r15 0.00 : 7971e: 48 8b 6b 18 mov 0x18(%rbx),%rbp 0.00 : 79722: 4d 89 e5 mov %r12,%r13 0.00 : 79725: 4c 2b 6c 24 28 sub 0x28(%rsp),%r13 0.00 : 7972a: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 7972e: 4c 39 fd cmp %r15,%rbp 0.00 : 79731: 0f 85 20 0a 00 00 jne 7a157 <_int_malloc+0x1337> 0.00 : 79737: 4c 3b 78 10 cmp 0x10(%rax),%r15 0.00 : 7973b: 0f 85 16 0a 00 00 jne 7a157 <_int_malloc+0x1337> 0.00 : 79741: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 79745: 48 89 58 10 mov %rbx,0x10(%rax) 0.00 : 79749: 49 81 7f 08 ff 03 00 cmpq $0x3ff,0x8(%r15) 0.00 : 79750: 00 0.00 : 79751: 0f 87 81 09 00 00 ja 7a0d8 <_int_malloc+0x12b8> 0.00 : 79757: 49 83 fd 1f cmp $0x1f,%r13 0.00 : 7975b: 0f 86 de fe ff ff jbe 7963f <_int_malloc+0x81f> 0.00 : 79761: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : 79766: 48 8d 35 b3 5d 0c 00 lea 0xc5db3(%rip),%rsi # 13f520 <__PRETTY_FUNCTION__.11129+0x1b47> 0.00 : 7976d: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 79771: 48 3b 50 18 cmp 0x18(%rax),%rdx 0.00 : 79775: 0f 85 d0 04 00 00 jne 79c4b <_int_malloc+0xe2b> 0.00 : 7977b: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 79780: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : 79785: 49 81 fd ff 03 00 00 cmp $0x3ff,%r13 0.00 : 7978c: 49 8d 14 0f lea (%r15,%rcx,1),%rdx 0.00 : 79790: 48 89 5a 18 mov %rbx,0x18(%rdx) 0.00 : 79794: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 79798: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 7979c: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 797a0: 76 10 jbe 797b2 <_int_malloc+0x992> 0.00 : 797a2: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 797a9: 00 0.00 : 797aa: 48 c7 42 28 00 00 00 movq $0x0,0x28(%rdx) 0.00 : 797b1: 00 0.00 : 797b2: 48 8d 05 e7 a6 2f 00 lea 0x2fa6e7(%rip),%rax # 373ea0 0.00 : 797b9: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 797be: 0f 95 c0 setne %al 0.00 : 797c1: 48 83 4c 24 28 01 orq $0x1,0x28(%rsp) 0.00 : 797c7: 0f b6 c0 movzbl %al,%eax 0.00 : 797ca: 48 c1 e0 02 shl $0x2,%rax 0.00 : 797ce: 48 09 44 24 28 or %rax,0x28(%rsp) 0.00 : 797d3: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 797d8: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : 797dc: 4c 89 e8 mov %r13,%rax 0.00 : 797df: 48 83 c8 01 or $0x1,%rax 0.00 : 797e3: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 797e7: 4e 89 2c 2a mov %r13,(%rdx,%r13,1) 0.00 : 797eb: e9 68 fe ff ff jmpq 79658 <_int_malloc+0x838> 0.00 : 797f0: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 797f5: e8 46 d0 ff ff callq 76840 0.00 : 797fa: e9 ef f7 ff ff jmpq 78fee <_int_malloc+0x1ce> 0.00 : 797ff: 48 8b 15 32 86 2f 00 mov 0x2f8632(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 79806: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 7980d: 00 00 0.00 : 7980f: 31 db xor %ebx,%ebx 0.00 : 79811: c7 04 10 0c 00 00 00 movl $0xc,(%rax,%rdx,1) 0.00 : 79818: e9 b0 f6 ff ff jmpq 78ecd <_int_malloc+0xad> 0.00 : 7981d: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : 79822: 48 8d 35 4f 5d 0c 00 lea 0xc5d4f(%rip),%rsi # 13f578 <__PRETTY_FUNCTION__.11129+0x1b9f> 0.00 : 79829: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 7982d: 48 3b 58 18 cmp 0x18(%rax),%rbx 0.00 : 79831: 0f 85 14 04 00 00 jne 79c4b <_int_malloc+0xe2b> 0.00 : 79837: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 7983c: 48 8b 5c 24 60 mov 0x60(%rsp),%rbx 0.00 : 79841: 49 8d 14 0f lea (%r15,%rcx,1),%rdx 0.00 : 79845: 48 81 f9 ff 03 00 00 cmp $0x3ff,%rcx 0.00 : 7984c: 48 89 5a 18 mov %rbx,0x18(%rdx) 0.00 : 79850: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 79854: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 79858: 48 89 50 18 mov %rdx,0x18(%rax) ??:0 2.56 : 7985c: 77 09 ja 79867 <_int_malloc+0xa47> 0.00 : 7985e: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79863: 48 89 50 60 mov %rdx,0x60(%rax) 0.00 : 79867: 49 81 fd ff 03 00 00 cmp $0x3ff,%r13 0.00 : 7986e: 76 10 jbe 79880 <_int_malloc+0xa60> 2.56 : 79870: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 79877: 00 0.00 : 79878: 48 c7 42 28 00 00 00 movq $0x0,0x28(%rdx) 0.00 : 7987f: 00 0.00 : 79880: 48 8d 05 19 a6 2f 00 lea 0x2fa619(%rip),%rax # 373ea0 0.00 : 79887: 48 39 44 24 20 cmp %rax,0x20(%rsp) 0.00 : 7988c: 0f 95 c0 setne %al 0.00 : 7988f: 48 83 4c 24 28 01 orq $0x1,0x28(%rsp) 0.00 : 79895: 0f b6 c0 movzbl %al,%eax 0.00 : 79898: 48 c1 e0 02 shl $0x2,%rax 0.00 : 7989c: 48 09 44 24 28 or %rax,0x28(%rsp) 0.00 : 798a1: 4c 89 e8 mov %r13,%rax 0.00 : 798a4: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 798a9: 48 83 c8 01 or $0x1,%rax 0.00 : 798ad: 49 89 4f 08 mov %rcx,0x8(%r15) 0.00 : 798b1: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 798b5: 4e 89 2c 2a mov %r13,(%rdx,%r13,1) 0.00 : 798b9: e9 9a fd ff ff jmpq 79658 <_int_malloc+0x838> 0.00 : 798be: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 798c2: 48 85 c0 test %rax,%rax 0.00 : 798c5: 0f 84 6a fd ff ff je 79635 <_int_malloc+0x815> 0.00 : 798cb: 4c 3b 78 28 cmp 0x28(%rax),%r15 0.00 : 798cf: 74 1f je 798f0 <_int_malloc+0xad0> 0.00 : 798d1: 48 8d 0d 4f 25 0c 00 lea 0xc254f(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 798d8: 48 8d 35 63 22 0c 00 lea 0xc2263(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 798df: 48 8d 3d da 5b 0c 00 lea 0xc5bda(%rip),%rdi # 13f4c0 <__PRETTY_FUNCTION__.11129+0x1ae7> 0.00 : 798e6: ba 2b 12 00 00 mov $0x122b,%edx 0.00 : 798eb: e8 d0 ce ff ff callq 767c0 <__malloc_assert> 0.00 : 798f0: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 798f4: 48 3b 68 20 cmp 0x20(%rax),%rbp 0.00 : 798f8: 74 1f je 79919 <_int_malloc+0xaf9> 0.00 : 798fa: 48 8d 0d 26 25 0c 00 lea 0xc2526(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 79901: 48 8d 35 3a 22 0c 00 lea 0xc223a(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79908: 48 8d 3d e1 5b 0c 00 lea 0xc5be1(%rip),%rdi # 13f4f0 <__PRETTY_FUNCTION__.11129+0x1b17> 0.00 : 7990f: ba 2b 12 00 00 mov $0x122b,%edx 0.00 : 79914: e8 a7 ce ff ff callq 767c0 <__malloc_assert> 0.00 : 79919: 48 83 7b 20 00 cmpq $0x0,0x20(%rbx) 0.00 : 7991e: 0f 84 e9 03 00 00 je 79d0d <_int_malloc+0xeed> 0.00 : 79924: 48 8b 55 20 mov 0x20(%rbp),%rdx 0.00 : 79928: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 7992c: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 79930: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 79934: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 79938: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 7993c: e9 f4 fc ff ff jmpq 79635 <_int_malloc+0x815> 0.00 : 79941: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 79948: 48 8d 0d d8 24 0c 00 lea 0xc24d8(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7994f: 48 8d 35 ec 21 0c 00 lea 0xc21ec(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79956: 48 8d 3d eb 5b 0c 00 lea 0xc5beb(%rip),%rdi # 13f548 <__PRETTY_FUNCTION__.11129+0x1b6f> 0.00 : 7995d: ba 26 12 00 00 mov $0x1226,%edx 0.00 : 79962: e8 59 ce ff ff callq 767c0 <__malloc_assert> 0.00 : 79967: e9 8c fc ff ff jmpq 795f8 <_int_malloc+0x7d8> 0.00 : 7996c: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 79971: c7 44 24 34 7e 00 00 movl $0x7e,0x34(%rsp) 0.00 : 79978: 00 0.00 : 79979: 48 c1 e8 12 shr $0x12,%rax 0.00 : 7997d: 8d 50 7c lea 0x7c(%rax),%edx 0.00 : 79980: 48 83 f8 03 cmp $0x3,%rax 0.00 : 79984: 0f 43 54 24 34 cmovae 0x34(%rsp),%edx 0.00 : 79989: 89 54 24 34 mov %edx,0x34(%rsp) 0.00 : 7998d: e9 3b f6 ff ff jmpq 78fcd <_int_malloc+0x1ad> 0.00 : 79992: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 79997: 31 d2 xor %edx,%edx 0.00 : 79999: 49 8d 6d 10 lea 0x10(%r13),%rbp 0.00 : 7999d: 49 8d 4c 05 00 lea 0x0(%r13,%rax,1),%rcx 0.00 : 799a2: 48 8d 05 f7 a4 2f 00 lea 0x2fa4f7(%rip),%rax # 373ea0 0.00 : 799a9: 48 89 4b 58 mov %rcx,0x58(%rbx) 0.00 : 799ad: 48 39 c3 cmp %rax,%rbx 0.00 : 799b0: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 799b5: 0f 95 c2 setne %dl 0.00 : 799b8: 48 89 eb mov %rbp,%rbx 0.00 : 799bb: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 799bf: 48 83 c8 01 or $0x1,%rax 0.00 : 799c3: 48 09 d0 or %rdx,%rax 0.00 : 799c6: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 799ca: 4c 2b 74 24 28 sub 0x28(%rsp),%r14 0.00 : 799cf: 49 83 ce 01 or $0x1,%r14 ??:0 5.13 : 799d3: 4c 89 71 08 mov %r14,0x8(%rcx) 0.00 : 799d7: 8b 05 a3 ad 2f 00 mov 0x2fada3(%rip),%eax # 374780 0.00 : 799dd: 85 c0 test %eax,%eax 0.00 : 799df: 0f 84 e8 f4 ff ff je 78ecd <_int_malloc+0xad> 0.00 : 799e5: e9 92 f5 ff ff jmpq 78f7c <_int_malloc+0x15c> 0.00 : 799ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 799f0: 8b 05 5a ad 2f 00 mov 0x2fad5a(%rip),%eax # 374750 0.00 : 799f6: 83 e8 01 sub $0x1,%eax 0.00 : 799f9: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : 799fe: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 79a03: 48 3b 05 26 ad 2f 00 cmp 0x2fad26(%rip),%rax # 374730 0.00 : 79a0a: 0f 82 db 02 00 00 jb 79ceb <_int_malloc+0xecb> 0.00 : 79a10: 8b 05 2a ad 2f 00 mov 0x2fad2a(%rip),%eax # 374740 0.00 : 79a16: 3b 05 28 ad 2f 00 cmp 0x2fad28(%rip),%eax # 374744 0.00 : 79a1c: 0f 8d c9 02 00 00 jge 79ceb <_int_malloc+0xecb> 0.00 : 79a22: 48 8b 4c 24 40 mov 0x40(%rsp),%rcx 0.00 : 79a27: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 79a2c: 48 89 c8 mov %rcx,%rax 0.00 : 79a2f: 48 8d 6c 11 08 lea 0x8(%rcx,%rdx,1),%rbp 0.00 : 79a34: 48 f7 d0 not %rax 0.00 : 79a37: 48 21 c5 and %rax,%rbp 0.00 : 79a3a: 48 39 ea cmp %rbp,%rdx 0.00 : 79a3d: 0f 82 68 03 00 00 jb 79dab <_int_malloc+0xf8b> 0.00 : 79a43: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 79a48: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 79a4e: 4c 8b 6b 58 mov 0x58(%rbx),%r13 0.00 : 79a52: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 79a56: 49 89 d6 mov %rdx,%r14 0.00 : 79a59: 49 83 e6 f8 and $0xfffffffffffffff8,%r14 0.00 : 79a5d: 4d 85 f6 test %r14,%r14 0.00 : 79a60: 4b 8d 4c 35 00 lea 0x0(%r13,%r14,1),%rcx 0.00 : 79a65: 0f 95 44 24 5f setne 0x5f(%rsp) 0.00 : 79a6a: 4c 39 6c 24 60 cmp %r13,0x60(%rsp) 0.00 : 79a6f: 48 89 4c 24 50 mov %rcx,0x50(%rsp) 0.00 : 79a74: 0f 84 c6 07 00 00 je 7a240 <_int_malloc+0x1420> 0.00 : 79a7a: 49 83 fe 1f cmp $0x1f,%r14 0.00 : 79a7e: 76 11 jbe 79a91 <_int_malloc+0xc71> 0.00 : 79a80: 83 e2 01 and $0x1,%edx 0.00 : 79a83: 74 0c je 79a91 <_int_malloc+0xc71> 0.00 : 79a85: 48 8b 5c 24 40 mov 0x40(%rsp),%rbx 0.00 : 79a8a: 48 85 5c 24 50 test %rbx,0x50(%rsp) 0.00 : 79a8f: 74 1f je 79ab0 <_int_malloc+0xc90> 0.00 : 79a91: 48 8d 0d 9b 23 0c 00 lea 0xc239b(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 79a98: 48 8d 35 a3 20 0c 00 lea 0xc20a3(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79a9f: 48 8d 3d a2 5b 0c 00 lea 0xc5ba2(%rip),%rdi # 13f648 <__PRETTY_FUNCTION__.11129+0x1c6f> 0.00 : 79aa6: ba 13 0c 00 00 mov $0xc13,%edx 0.00 : 79aab: e8 10 cd ff ff callq 767c0 <__malloc_assert> 0.00 : 79ab0: 4c 39 74 24 08 cmp %r14,0x8(%rsp) 0.00 : 79ab5: 77 1f ja 79ad6 <_int_malloc+0xcb6> 0.00 : 79ab7: 48 8d 0d 75 23 0c 00 lea 0xc2375(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 79abe: 48 8d 35 7d 20 0c 00 lea 0xc207d(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79ac5: 48 8d 3d fc 5c 0c 00 lea 0xc5cfc(%rip),%rdi # 13f7c8 <__PRETTY_FUNCTION__.11129+0x1def> 0.00 : 79acc: ba 16 0c 00 00 mov $0xc16,%edx 0.00 : 79ad1: e8 ea cc ff ff callq 767c0 <__malloc_assert> 0.00 : 79ad6: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79adb: f6 40 04 01 testb $0x1,0x4(%rax) 0.00 : 79adf: 75 1f jne 79b00 <_int_malloc+0xce0> 0.00 : 79ae1: 48 8d 0d 4b 23 0c 00 lea 0xc234b(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 79ae8: 48 8d 35 53 20 0c 00 lea 0xc2053(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79aef: 48 8d 3d 8a 21 0c 00 lea 0xc218a(%rip),%rdi # 13bc80 <__PRETTY_FUNCTION__.14063+0x219> 0.00 : 79af6: ba 1a 0c 00 00 mov $0xc1a,%edx 0.00 : 79afb: e8 c0 cc ff ff callq 767c0 <__malloc_assert> 0.00 : 79b00: 48 8d 15 99 a3 2f 00 lea 0x2fa399(%rip),%rdx # 373ea0 ??:0 2.56 : 79b07: 48 39 54 24 20 cmp %rdx,0x20(%rsp) 0.00 : 79b0c: 0f 84 58 03 00 00 je 79e6a <_int_malloc+0x104a> 0.00 : 79b12: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 79b17: 4c 89 ed mov %r13,%rbp 0.00 : 79b1a: 48 81 e5 00 00 00 fc and $0xfffffffffc000000,%rbp 0.00 : 79b21: 4c 8b 65 10 mov 0x10(%rbp),%r12 0.00 : 79b25: 4c 29 f3 sub %r14,%rbx 0.00 : 79b28: 48 85 db test %rbx,%rbx 0.00 : 79b2b: 0f 8e 31 01 00 00 jle 79c62 <_int_malloc+0xe42> 0.00 : 79b31: e8 4a a6 05 00 callq d4180 <__getpagesize> 0.00 : 79b36: 83 e8 01 sub $0x1,%eax 0.00 : 79b39: 48 98 cltq 0.00 : 79b3b: 48 8d 14 03 lea (%rbx,%rax,1),%rdx 0.00 : 79b3f: 48 f7 d0 not %rax 0.00 : 79b42: 48 21 c2 and %rax,%rdx 0.00 : 79b45: 4a 8d 1c 22 lea (%rdx,%r12,1),%rbx 0.00 : 79b49: 48 81 fb 00 00 00 04 cmp $0x4000000,%rbx 0.00 : 79b50: 0f 87 0c 01 00 00 ja 79c62 <_int_malloc+0xe42> 0.00 : 79b56: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 79b5a: 48 39 c3 cmp %rax,%rbx 0.00 : 79b5d: 0f 87 22 02 00 00 ja 79d85 <_int_malloc+0xf65> 0.00 : 79b63: 48 89 5d 10 mov %rbx,0x10(%rbp) 0.00 : 79b67: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx 0.00 : 79b6c: 4c 29 e3 sub %r12,%rbx 0.00 : 79b6f: 48 01 99 70 08 00 00 add %rbx,0x870(%rcx) 0.00 : 79b76: 48 8b 05 13 ac 2f 00 mov 0x2fac13(%rip),%rax # 374790 0.00 : 79b7d: 48 03 45 10 add 0x10(%rbp),%rax 0.00 : 79b81: 4c 29 e0 sub %r12,%rax 0.00 : 79b84: 48 89 05 05 ac 2f 00 mov %rax,0x2fac05(%rip) # 374790 0.00 : 79b8b: 48 03 6d 10 add 0x10(%rbp),%rbp 0.00 : 79b8f: 4c 29 ed sub %r13,%rbp 0.00 : 79b92: 48 83 cd 01 or $0x1,%rbp 0.00 : 79b96: 49 89 6d 08 mov %rbp,0x8(%r13) 0.00 : 79b9a: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 79b9f: 48 8b 83 70 08 00 00 mov 0x870(%rbx),%rax 0.00 : 79ba6: 48 3b 83 78 08 00 00 cmp 0x878(%rbx),%rax 0.00 : 79bad: 76 07 jbe 79bb6 <_int_malloc+0xd96> 0.00 : 79baf: 48 89 83 78 08 00 00 mov %rax,0x878(%rbx) 0.00 : 79bb6: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79bbb: 48 8b 78 58 mov 0x58(%rax),%rdi 0.00 : 79bbf: 48 8b 77 08 mov 0x8(%rdi),%rsi 0.00 : 79bc3: 48 83 e6 f8 and $0xfffffffffffffff8,%rsi 0.00 : 79bc7: 48 39 74 24 08 cmp %rsi,0x8(%rsp) 0.00 : 79bcc: 0f 87 2d fc ff ff ja 797ff <_int_malloc+0x9df> 0.00 : 79bd2: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 79bd7: 48 8d 1d c2 a2 2f 00 lea 0x2fa2c2(%rip),%rbx # 373ea0 0.00 : 79bde: 48 8d 0c 17 lea (%rdi,%rdx,1),%rcx 0.00 : 79be2: 31 d2 xor %edx,%edx 0.00 : 79be4: 48 39 d8 cmp %rbx,%rax 0.00 : 79be7: 0f 95 c2 setne %dl 0.00 : 79bea: 48 8d 5f 10 lea 0x10(%rdi),%rbx 0.00 : 79bee: 48 89 48 58 mov %rcx,0x58(%rax) 0.00 : 79bf2: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 79bf7: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 79bfb: 48 83 c8 01 or $0x1,%rax 0.00 : 79bff: 48 09 d0 or %rdx,%rax 0.00 : 79c02: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 79c06: 48 89 f0 mov %rsi,%rax 0.00 : 79c09: 48 2b 44 24 28 sub 0x28(%rsp),%rax 0.00 : 79c0e: 48 83 c8 01 or $0x1,%rax ??:0 35.90 : 79c12: 48 89 41 08 mov %rax,0x8(%rcx) ??:0 2.56 : 79c16: 48 85 db test %rbx,%rbx 0.00 : 79c19: 0f 84 ae f2 ff ff je 78ecd <_int_malloc+0xad> 0.00 : 79c1f: 8b 05 5b ab 2f 00 mov 0x2fab5b(%rip),%eax # 374780 0.00 : 79c25: 85 c0 test %eax,%eax 0.00 : 79c27: 0f 84 a0 f2 ff ff je 78ecd <_int_malloc+0xad> 0.00 : 79c2d: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 79c32: f7 d0 not %eax 0.00 : 79c34: 48 89 df mov %rbx,%rdi 0.00 : 79c37: 0f b6 f0 movzbl %al,%esi 0.00 : 79c3a: e8 31 98 00 00 callq 83470 <__GI_memset> 0.00 : 79c3f: e9 89 f2 ff ff jmpq 78ecd <_int_malloc+0xad> 0.00 : 79c44: 48 8d 35 1d 58 0c 00 lea 0xc581d(%rip),%rsi # 13f468 <__PRETTY_FUNCTION__.11129+0x1a8f> 0.00 : 79c4b: 49 8d 5f 10 lea 0x10(%r15),%rbx 0.00 : 79c4f: 8b 3d b3 84 2f 00 mov 0x2f84b3(%rip),%edi # 372108 0.00 : 79c55: 48 89 da mov %rbx,%rdx 0.00 : 79c58: e8 03 c9 ff ff callq 76560 0.00 : 79c5d: e9 51 f2 ff ff jmpq 78eb3 <_int_malloc+0x93> 0.00 : 79c62: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 79c67: 48 8b 35 ba aa 2f 00 mov 0x2faaba(%rip),%rsi # 374728 0.00 : 79c6e: 48 83 c7 40 add $0x40,%rdi 0.00 : 79c72: e8 69 ec ff ff callq 788e0 0.00 : 79c77: 48 85 c0 test %rax,%rax 0.00 : 79c7a: 48 89 c1 mov %rax,%rcx 0.00 : 79c7d: 0f 84 dc 00 00 00 je 79d5f <_int_malloc+0xf3f> 0.00 : 79c83: 48 8b 5c 24 20 mov 0x20(%rsp),%rbx 0.00 : 79c88: 48 8d 51 20 lea 0x20(%rcx),%rdx 0.00 : 79c8c: 48 89 68 08 mov %rbp,0x8(%rax) 0.00 : 79c90: 48 89 18 mov %rbx,(%rax) 0.00 : 79c93: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 79c97: 48 01 83 70 08 00 00 add %rax,0x870(%rbx) 0.00 : 79c9e: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 79ca2: 48 01 05 e7 aa 2f 00 add %rax,0x2faae7(%rip) # 374790 0.00 : 79ca9: 48 89 53 58 mov %rdx,0x58(%rbx) 0.00 : 79cad: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 79cb1: 48 83 e8 20 sub $0x20,%rax 0.00 : 79cb5: 48 83 c8 01 or $0x1,%rax 0.00 : 79cb9: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 79cbd: 49 8d 46 e0 lea -0x20(%r14),%rax 0.00 : 79cc1: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 79cc5: 48 83 f8 1f cmp $0x1f,%rax 0.00 : 79cc9: 49 8d 4c 15 00 lea 0x0(%r13,%rdx,1),%rcx 0.00 : 79cce: 48 c7 41 08 01 00 00 movq $0x1,0x8(%rcx) 0.00 : 79cd5: 00 0.00 : 79cd6: 77 5f ja 79d37 <_int_malloc+0xf17> 0.00 : 79cd8: 48 89 d0 mov %rdx,%rax 0.00 : 79cdb: 48 83 c8 01 or $0x1,%rax 0.00 : 79cdf: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 79ce3: 48 89 11 mov %rdx,(%rcx) 0.00 : 79ce6: e9 af fe ff ff jmpq 79b9a <_int_malloc+0xd7a> 0.00 : 79ceb: 45 31 ff xor %r15d,%r15d 0.00 : 79cee: e9 6a fd ff ff jmpq 79a5d <_int_malloc+0xc3d> 0.00 : 79cf3: 8b 3d 0f 84 2f 00 mov 0x2f840f(%rip),%edi # 372108 0.00 : 79cf9: 48 8d 35 25 1e 0c 00 lea 0xc1e25(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 79d00: 4c 89 fa mov %r15,%rdx 0.00 : 79d03: e8 58 c8 ff ff callq 76560 0.00 : 79d08: e9 28 f9 ff ff jmpq 79635 <_int_malloc+0x815> 0.00 : 79d0d: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 79d11: 48 39 c5 cmp %rax,%rbp 0.00 : 79d14: 74 5f je 79d75 <_int_malloc+0xf55> 0.00 : 79d16: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 79d1a: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 79d1e: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 79d22: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 79d26: 48 89 58 28 mov %rbx,0x28(%rax) 0.00 : 79d2a: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 79d2e: 48 89 58 20 mov %rbx,0x20(%rax) 0.00 : 79d32: e9 fe f8 ff ff jmpq 79635 <_int_malloc+0x815> 0.00 : 79d37: 48 83 c8 05 or $0x5,%rax 0.00 : 79d3b: 4b c7 44 35 e8 11 00 movq $0x11,-0x18(%r13,%r14,1) 0.00 : 79d42: 00 00 0.00 : 79d44: 4c 89 ee mov %r13,%rsi 0.00 : 79d47: 48 c7 01 10 00 00 00 movq $0x10,(%rcx) 0.00 : 79d4e: 48 89 df mov %rbx,%rdi 0.00 : 79d51: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 79d55: e8 46 dd ff ff callq 77aa0 <_int_free> 0.00 : 79d5a: e9 3b fe ff ff jmpq 79b9a <_int_malloc+0xd7a> 0.00 : 79d5f: 45 84 ff test %r15b,%r15b 0.00 : 79d62: 0f 84 ba fc ff ff je 79a22 <_int_malloc+0xc02> 0.00 : 79d68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 79d6f: 00 0.00 : 79d70: e9 25 fe ff ff jmpq 79b9a <_int_malloc+0xd7a> 0.00 : 79d75: 48 89 5b 28 mov %rbx,0x28(%rbx) 0.00 : 79d79: 48 89 5b 20 mov %rbx,0x20(%rbx) 0.00 : 79d7d: 0f 1f 00 nopl (%rax) 0.00 : 79d80: e9 b0 f8 ff ff jmpq 79635 <_int_malloc+0x815> 0.00 : 79d85: 48 89 de mov %rbx,%rsi 0.00 : 79d88: 48 8d 7c 05 00 lea 0x0(%rbp,%rax,1),%rdi 0.00 : 79d8d: ba 03 00 00 00 mov $0x3,%edx 0.00 : 79d92: 48 29 c6 sub %rax,%rsi 0.00 : 79d95: e8 16 df 05 00 callq d7cb0 0.00 : 79d9a: 85 c0 test %eax,%eax 0.00 : 79d9c: 0f 85 c0 fe ff ff jne 79c62 <_int_malloc+0xe42> 0.00 : 79da2: 48 89 5d 18 mov %rbx,0x18(%rbp) 0.00 : 79da6: e9 b8 fd ff ff jmpq 79b63 <_int_malloc+0xd43> 0.00 : 79dab: 45 31 c9 xor %r9d,%r9d 0.00 : 79dae: 31 ff xor %edi,%edi 0.00 : 79db0: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 79db6: b9 22 00 00 00 mov $0x22,%ecx 0.00 : 79dbb: ba 03 00 00 00 mov $0x3,%edx 0.00 : 79dc0: 48 89 ee mov %rbp,%rsi 0.00 : 79dc3: e8 88 de 05 00 callq d7c50 0.00 : 79dc8: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 79dcc: 48 89 c3 mov %rax,%rbx 0.00 : 79dcf: 74 7a je 79e4b <_int_malloc+0x102b> 0.00 : 79dd1: 4c 8d 60 10 lea 0x10(%rax),%r12 0.00 : 79dd5: 41 f6 c4 0f test $0xf,%r12b 0.00 : 79dd9: 74 1f je 79dfa <_int_malloc+0xfda> 0.00 : 79ddb: 48 8d 0d 51 20 0c 00 lea 0xc2051(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 79de2: 48 8d 35 59 1d 0c 00 lea 0xc1d59(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79de9: 48 8d 3d f8 57 0c 00 lea 0xc57f8(%rip),%rdi # 13f5e8 <__PRETTY_FUNCTION__.11129+0x1c0f> 0.00 : 79df0: ba dd 0b 00 00 mov $0xbdd,%edx 0.00 : 79df5: e8 c6 c9 ff ff callq 767c0 <__malloc_assert> 0.00 : 79dfa: 48 89 e8 mov %rbp,%rax 0.00 : 79dfd: 48 83 c8 02 or $0x2,%rax 0.00 : 79e01: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 79e05: 8b 05 35 a9 2f 00 mov 0x2fa935(%rip),%eax # 374740 0.00 : 79e0b: 83 c0 01 add $0x1,%eax 0.00 : 79e0e: 3b 05 34 a9 2f 00 cmp 0x2fa934(%rip),%eax # 374748 0.00 : 79e14: 89 05 26 a9 2f 00 mov %eax,0x2fa926(%rip) # 374740 0.00 : 79e1a: 7e 06 jle 79e22 <_int_malloc+0x1002> 0.00 : 79e1c: 89 05 26 a9 2f 00 mov %eax,0x2fa926(%rip) # 374748 0.00 : 79e22: 48 89 e8 mov %rbp,%rax 0.00 : 79e25: 48 03 05 2c a9 2f 00 add 0x2fa92c(%rip),%rax # 374758 0.00 : 79e2c: 48 3b 05 2d a9 2f 00 cmp 0x2fa92d(%rip),%rax # 374760 0.00 : 79e33: 48 89 05 1e a9 2f 00 mov %rax,0x2fa91e(%rip) # 374758 0.00 : 79e3a: 76 07 jbe 79e43 <_int_malloc+0x1023> 0.00 : 79e3c: 48 89 05 1d a9 2f 00 mov %rax,0x2fa91d(%rip) # 374760 0.00 : 79e43: 4c 89 e3 mov %r12,%rbx 0.00 : 79e46: e9 cb fd ff ff jmpq 79c16 <_int_malloc+0xdf6> 0.00 : 79e4b: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 79e50: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 79e56: 4c 8b 68 58 mov 0x58(%rax),%r13 0.00 : 79e5a: 49 8b 55 08 mov 0x8(%r13),%rdx 0.00 : 79e5e: 49 89 d6 mov %rdx,%r14 0.00 : 79e61: 49 83 e6 f8 and $0xfffffffffffffff8,%r14 0.00 : 79e65: e9 f3 fb ff ff jmpq 79a5d <_int_malloc+0xc3d> 2.56 : 79e6a: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 79e6f: 48 8b 05 b2 a8 2f 00 mov 0x2fa8b2(%rip),%rax # 374728 0.00 : 79e76: 48 8b 5c 24 40 mov 0x40(%rsp),%rbx 0.00 : 79e7b: 48 8d 44 02 20 lea 0x20(%rdx,%rax,1),%rax 0.00 : 79e80: 8b 15 1e a0 2f 00 mov 0x2fa01e(%rip),%edx # 373ea4 0.00 : 79e86: 48 89 c1 mov %rax,%rcx 0.00 : 79e89: 4c 29 f1 sub %r14,%rcx 0.00 : 79e8c: 83 e2 02 and $0x2,%edx 0.00 : 79e8f: 48 0f 44 c1 cmove %rcx,%rax 0.00 : 79e93: 48 8b 4c 24 40 mov 0x40(%rsp),%rcx 0.00 : 79e98: 48 8d 2c 18 lea (%rax,%rbx,1),%rbp 0.00 : 79e9c: 48 f7 d1 not %rcx 0.00 : 79e9f: 48 21 cd and %rcx,%rbp 0.00 : 79ea2: 48 89 4c 24 70 mov %rcx,0x70(%rsp) 0.00 : 79ea7: 48 85 ed test %rbp,%rbp 0.00 : 79eaa: 49 89 ec mov %rbp,%r12 0.00 : 79ead: 0f 8e 13 03 00 00 jle 7a1c6 <_int_malloc+0x13a6> 0.00 : 79eb3: 48 8b 05 c6 7e 2f 00 mov 0x2f7ec6(%rip),%rax # 371d80 <_DYNAMIC+0x220> 0.00 : 79eba: 48 89 ef mov %rbp,%rdi 0.00 : 79ebd: ff 10 callq *(%rax) 0.00 : 79ebf: 48 85 c0 test %rax,%rax 0.00 : 79ec2: 48 89 c3 mov %rax,%rbx 0.00 : 79ec5: 0f 84 f2 02 00 00 je 7a1bd <_int_malloc+0x139d> 0.00 : 79ecb: 48 8b 05 9e 7f 2f 00 mov 0x2f7f9e(%rip),%rax # 371e70 <_DYNAMIC+0x310> 0.00 : 79ed2: 48 8b 00 mov (%rax),%rax 0.00 : 79ed5: 48 85 c0 test %rax,%rax 0.00 : 79ed8: 74 02 je 79edc <_int_malloc+0x10bc> 0.00 : 79eda: ff d0 callq *%rax 0.00 : 79edc: 45 31 e4 xor %r12d,%r12d 0.00 : 79edf: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 79ee5: 48 83 3d 83 a8 2f 00 cmpq $0x0,0x2fa883(%rip) # 374770 0.00 : 79eec: 00 0.00 : 79eed: 75 07 jne 79ef6 <_int_malloc+0x10d6> 0.00 : 79eef: 48 89 1d 7a a8 2f 00 mov %rbx,0x2fa87a(%rip) # 374770 0.00 : 79ef6: 48 89 ea mov %rbp,%rdx 0.00 : 79ef9: 48 03 15 10 a8 2f 00 add 0x2fa810(%rip),%rdx # 374710 0.00 : 79f00: 45 84 ff test %r15b,%r15b 0.00 : 79f03: 48 89 15 06 a8 2f 00 mov %rdx,0x2fa806(%rip) # 374710 0.00 : 79f0a: 74 0b je 79f17 <_int_malloc+0x10f7> 0.00 : 79f0c: 48 39 5c 24 50 cmp %rbx,0x50(%rsp) 0.00 : 79f11: 0f 84 39 03 00 00 je 7a250 <_int_malloc+0x1430> 0.00 : 79f17: 8b 05 87 9f 2f 00 mov 0x2f9f87(%rip),%eax # 373ea4 0.00 : 79f1d: d1 e8 shr %eax 0.00 : 79f1f: 83 f0 01 xor $0x1,%eax 0.00 : 79f22: 83 e0 01 and $0x1,%eax 0.00 : 79f25: 80 7c 24 5f 00 cmpb $0x0,0x5f(%rsp) 0.00 : 79f2a: 0f 84 5c 01 00 00 je 7a08c <_int_malloc+0x126c> 0.00 : 79f30: 84 c0 test %al,%al 0.00 : 79f32: 0f 84 5c 01 00 00 je 7a094 <_int_malloc+0x1274> 0.00 : 79f38: 48 39 5c 24 50 cmp %rbx,0x50(%rsp) 0.00 : 79f3d: 0f 87 30 01 00 00 ja 7a073 <_int_malloc+0x1253> 0.00 : 79f43: 48 89 d8 mov %rbx,%rax 0.00 : 79f46: 48 2b 44 24 50 sub 0x50(%rsp),%rax 0.00 : 79f4b: 48 01 d0 add %rdx,%rax 0.00 : 79f4e: 48 89 05 bb a7 2f 00 mov %rax,0x2fa7bb(%rip) # 374710 0.00 : 79f55: 48 89 da mov %rbx,%rdx 0.00 : 79f58: 31 c0 xor %eax,%eax 0.00 : 79f5a: 48 89 5c 24 48 mov %rbx,0x48(%rsp) 0.00 : 79f5f: 83 e2 0f and $0xf,%edx 0.00 : 79f62: 74 11 je 79f75 <_int_malloc+0x1155> 0.00 : 79f64: b8 10 00 00 00 mov $0x10,%eax 0.00 : 79f69: 48 29 d0 sub %rdx,%rax 0.00 : 79f6c: 48 8d 0c 03 lea (%rbx,%rax,1),%rcx 0.00 : 79f70: 48 89 4c 24 48 mov %rcx,0x48(%rsp) 0.00 : 79f75: 4a 8d 14 30 lea (%rax,%r14,1),%rdx 0.00 : 79f79: 48 8d 04 2a lea (%rdx,%rbp,1),%rax 0.00 : 79f7d: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : 79f81: 48 29 c2 sub %rax,%rdx 0.00 : 79f84: 48 03 44 24 40 add 0x40(%rsp),%rax 0.00 : 79f89: 48 23 44 24 70 and 0x70(%rsp),%rax 0.00 : 79f8e: 48 89 d3 mov %rdx,%rbx 0.00 : 79f91: 48 01 c3 add %rax,%rbx 0.00 : 79f94: 79 1f jns 79fb5 <_int_malloc+0x1195> 0.00 : 79f96: 48 8d 0d 96 1e 0c 00 lea 0xc1e96(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 79f9d: 48 8d 35 9e 1b 0c 00 lea 0xc1b9e(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 79fa4: 48 8d 3d f2 1c 0c 00 lea 0xc1cf2(%rip),%rdi # 13bc9d <__PRETTY_FUNCTION__.14063+0x236> 0.00 : 79fab: ba f6 0c 00 00 mov $0xcf6,%edx 0.00 : 79fb0: e8 0b c8 ff ff callq 767c0 <__malloc_assert> 0.00 : 79fb5: 48 8b 2d c4 7d 2f 00 mov 0x2f7dc4(%rip),%rbp # 371d80 <_DYNAMIC+0x220> 0.00 : 79fbc: 48 89 df mov %rbx,%rdi 0.00 : 79fbf: ff 55 00 callq *0x0(%rbp) 0.00 : 79fc2: 48 85 c0 test %rax,%rax 0.00 : 79fc5: 49 89 c4 mov %rax,%r12 0.00 : 79fc8: 0f 84 8b 00 00 00 je 7a059 <_int_malloc+0x1239> 0.00 : 79fce: 48 8b 05 9b 7e 2f 00 mov 0x2f7e9b(%rip),%rax # 371e70 <_DYNAMIC+0x310> 0.00 : 79fd5: 48 8b 00 mov (%rax),%rax 0.00 : 79fd8: 48 85 c0 test %rax,%rax 0.00 : 79fdb: 74 02 je 79fdf <_int_malloc+0x11bf> 0.00 : 79fdd: ff d0 callq *%rax 0.00 : 79fdf: 48 89 da mov %rbx,%rdx 0.00 : 79fe2: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 79fe7: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 79fec: 48 89 05 05 9f 2f 00 mov %rax,0x2f9f05(%rip) # 373ef8 0.00 : 79ff3: 49 8d 04 1c lea (%r12,%rbx,1),%rax 0.00 : 79ff7: 48 2b 44 24 48 sub 0x48(%rsp),%rax 0.00 : 79ffc: 48 83 c8 01 or $0x1,%rax 0.00 : 7a000: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 7a004: 48 01 15 05 a7 2f 00 add %rdx,0x2fa705(%rip) # 374710 0.00 : 7a00b: 80 7c 24 5f 00 cmpb $0x0,0x5f(%rsp) 0.00 : 7a010: 0f 84 84 fb ff ff je 79b9a <_int_malloc+0xd7a> 0.00 : 7a016: 49 8d 46 e0 lea -0x20(%r14),%rax 0.00 : 7a01a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 7a01e: 48 89 c2 mov %rax,%rdx 0.00 : 7a021: 48 83 ca 01 or $0x1,%rdx 0.00 : 7a025: 48 83 f8 1f cmp $0x1f,%rax 0.00 : 7a029: 49 89 55 08 mov %rdx,0x8(%r13) 0.00 : 7a02d: 49 c7 44 05 08 11 00 movq $0x11,0x8(%r13,%rax,1) 0.00 : 7a034: 00 00 0.00 : 7a036: 49 c7 44 05 18 11 00 movq $0x11,0x18(%r13,%rax,1) 0.00 : 7a03d: 00 00 0.00 : 7a03f: 0f 86 55 fb ff ff jbe 79b9a <_int_malloc+0xd7a> 0.00 : 7a045: 48 8d 3d 54 9e 2f 00 lea 0x2f9e54(%rip),%rdi # 373ea0 0.00 : 7a04c: 4c 89 ee mov %r13,%rsi 0.00 : 7a04f: e8 4c da ff ff callq 77aa0 <_int_free> 0.00 : 7a054: e9 41 fb ff ff jmpq 79b9a <_int_malloc+0xd7a> 0.00 : 7a059: 31 ff xor %edi,%edi 0.00 : 7a05b: ff 55 00 callq *0x0(%rbp) 0.00 : 7a05e: 49 89 c4 mov %rax,%r12 0.00 : 7a061: 4d 85 e4 test %r12,%r12 0.00 : 7a064: 0f 84 30 fb ff ff je 79b9a <_int_malloc+0xd7a> 0.00 : 7a06a: 31 db xor %ebx,%ebx 0.00 : 7a06c: 31 d2 xor %edx,%edx 0.00 : 7a06e: e9 6f ff ff ff jmpq 79fe2 <_int_malloc+0x11c2> 0.00 : 7a073: 48 8d 35 0e 58 0c 00 lea 0xc580e(%rip),%rsi # 13f888 <__PRETTY_FUNCTION__.11129+0x1eaf> 0.00 : 7a07a: 48 89 da mov %rbx,%rdx 0.00 : 7a07d: bf 03 00 00 00 mov $0x3,%edi 0.00 : 7a082: e8 d9 c4 ff ff callq 76560 0.00 : 7a087: e9 0e fb ff ff jmpq 79b9a <_int_malloc+0xd7a> 0.00 : 7a08c: 84 c0 test %al,%al 0.00 : 7a08e: 0f 85 c1 fe ff ff jne 79f55 <_int_malloc+0x1135> 0.00 : 7a094: f6 c3 0f test $0xf,%bl 0.00 : 7a097: 90 nop 0.00 : 7a098: 74 1f je 7a0b9 <_int_malloc+0x1299> 0.00 : 7a09a: 48 8d 0d 92 1d 0c 00 lea 0xc1d92(%rip),%rcx # 13be33 <__func__.13350> 0.00 : 7a0a1: 48 8d 35 9a 1a 0c 00 lea 0xc1a9a(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7a0a8: 48 8d 3d 01 58 0c 00 lea 0xc5801(%rip),%rdi # 13f8b0 <__PRETTY_FUNCTION__.11129+0x1ed7> 0.00 : 7a0af: ba 11 0d 00 00 mov $0xd11,%edx 0.00 : 7a0b4: e8 07 c7 ff ff callq 767c0 <__malloc_assert> 0.00 : 7a0b9: 45 84 ff test %r15b,%r15b 0.00 : 7a0bc: 48 89 5c 24 48 mov %rbx,0x48(%rsp) 0.00 : 7a0c1: 74 9e je 7a061 <_int_malloc+0x1241> 0.00 : 7a0c3: 48 8b 05 b6 7c 2f 00 mov 0x2f7cb6(%rip),%rax # 371d80 <_DYNAMIC+0x220> 0.00 : 7a0ca: 31 ff xor %edi,%edi 0.00 : 7a0cc: ff 10 callq *(%rax) 0.00 : 7a0ce: 48 89 5c 24 48 mov %rbx,0x48(%rsp) 0.00 : 7a0d3: 49 89 c4 mov %rax,%r12 0.00 : 7a0d6: eb 89 jmp 7a061 <_int_malloc+0x1241> 0.00 : 7a0d8: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 7a0dc: 48 85 c0 test %rax,%rax 0.00 : 7a0df: 0f 84 72 f6 ff ff je 79757 <_int_malloc+0x937> 0.00 : 7a0e5: 4c 3b 78 28 cmp 0x28(%rax),%r15 0.00 : 7a0e9: 74 1f je 7a10a <_int_malloc+0x12ea> 0.00 : 7a0eb: 48 8d 0d 35 1d 0c 00 lea 0xc1d35(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7a0f2: 48 8d 35 49 1a 0c 00 lea 0xc1a49(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7a0f9: 48 8d 3d c0 53 0c 00 lea 0xc53c0(%rip),%rdi # 13f4c0 <__PRETTY_FUNCTION__.11129+0x1ae7> 0.00 : 7a100: ba c9 11 00 00 mov $0x11c9,%edx 0.00 : 7a105: e8 b6 c6 ff ff callq 767c0 <__malloc_assert> 0.00 : 7a10a: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 7a10e: 48 3b 68 20 cmp 0x20(%rax),%rbp 0.00 : 7a112: 74 1f je 7a133 <_int_malloc+0x1313> 0.00 : 7a114: 48 8d 0d 0c 1d 0c 00 lea 0xc1d0c(%rip),%rcx # 13be27 <__func__.14106> 0.00 : 7a11b: 48 8d 35 20 1a 0c 00 lea 0xc1a20(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7a122: 48 8d 3d c7 53 0c 00 lea 0xc53c7(%rip),%rdi # 13f4f0 <__PRETTY_FUNCTION__.11129+0x1b17> 0.00 : 7a129: ba c9 11 00 00 mov $0x11c9,%edx 0.00 : 7a12e: e8 8d c6 ff ff callq 767c0 <__malloc_assert> 0.00 : 7a133: 48 83 7b 20 00 cmpq $0x0,0x20(%rbx) 0.00 : 7a138: 74 37 je 7a171 <_int_malloc+0x1351> 0.00 : 7a13a: 48 8b 55 20 mov 0x20(%rbp),%rdx 0.00 : 7a13e: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 7a142: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 7a146: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 7a14a: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 7a14e: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 7a152: e9 00 f6 ff ff jmpq 79757 <_int_malloc+0x937> 0.00 : 7a157: 8b 3d ab 7f 2f 00 mov 0x2f7fab(%rip),%edi # 372108 0.00 : 7a15d: 48 8d 35 c1 19 0c 00 lea 0xc19c1(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 7a164: 4c 89 fa mov %r15,%rdx 0.00 : 7a167: e8 f4 c3 ff ff callq 76560 0.00 : 7a16c: e9 e6 f5 ff ff jmpq 79757 <_int_malloc+0x937> 0.00 : 7a171: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 7a175: 48 39 c5 cmp %rax,%rbp 0.00 : 7a178: 74 36 je 7a1b0 <_int_malloc+0x1390> 0.00 : 7a17a: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 7a17e: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 7a182: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 7a186: 48 8b 45 20 mov 0x20(%rbp),%rax 0.00 : 7a18a: 48 89 58 28 mov %rbx,0x28(%rax) 0.00 : 7a18e: 48 8b 45 28 mov 0x28(%rbp),%rax 0.00 : 7a192: 48 89 58 20 mov %rbx,0x20(%rax) 0.00 : 7a196: e9 bc f5 ff ff jmpq 79757 <_int_malloc+0x937> 0.00 : 7a19b: 49 8b 5f 10 mov 0x10(%r15),%rbx 0.00 : 7a19f: e9 7a f5 ff ff jmpq 7971e <_int_malloc+0x8fe> 0.00 : 7a1a4: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 7a1a8: 49 89 c7 mov %rax,%r15 0.00 : 7a1ab: e9 6e f5 ff ff jmpq 7971e <_int_malloc+0x8fe> 0.00 : 7a1b0: 48 89 5b 28 mov %rbx,0x28(%rbx) 0.00 : 7a1b4: 48 89 5b 20 mov %rbx,0x20(%rbx) 0.00 : 7a1b8: e9 9a f5 ff ff jmpq 79757 <_int_malloc+0x937> 0.00 : 7a1bd: 8b 15 e1 9c 2f 00 mov 0x2f9ce1(%rip),%edx # 373ea4 0.00 : 7a1c3: 83 e2 02 and $0x2,%edx 0.00 : 7a1c6: 85 d2 test %edx,%edx 0.00 : 7a1c8: 75 12 jne 7a1dc <_int_malloc+0x13bc> 0.00 : 7a1ca: 48 8b 54 24 40 mov 0x40(%rsp),%rdx 0.00 : 7a1cf: 49 8d 04 16 lea (%r14,%rdx,1),%rax 0.00 : 7a1d3: 4c 8d 24 28 lea (%rax,%rbp,1),%r12 0.00 : 7a1d7: 4c 23 64 24 70 and 0x70(%rsp),%r12 0.00 : 7a1dc: 49 81 fc ff ff 0f 00 cmp $0xfffff,%r12 0.00 : 7a1e3: bd 00 00 10 00 mov $0x100000,%ebp 0.00 : 7a1e8: 49 0f 47 ec cmova %r12,%rbp 0.00 : 7a1ec: 48 39 6c 24 28 cmp %rbp,0x28(%rsp) 0.00 : 7a1f1: 0f 83 a3 f9 ff ff jae 79b9a <_int_malloc+0xd7a> 0.00 : 7a1f7: 45 31 c9 xor %r9d,%r9d 0.00 : 7a1fa: 31 ff xor %edi,%edi 0.00 : 7a1fc: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 7a202: b9 22 00 00 00 mov $0x22,%ecx 0.00 : 7a207: ba 03 00 00 00 mov $0x3,%edx 0.00 : 7a20c: 48 89 ee mov %rbp,%rsi 0.00 : 7a20f: e8 3c da 05 00 callq d7c50 0.00 : 7a214: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 7a218: 48 89 c3 mov %rax,%rbx 0.00 : 7a21b: 0f 84 79 f9 ff ff je 79b9a <_int_malloc+0xd7a> 0.00 : 7a221: 83 0d 7c 9c 2f 00 02 orl $0x2,0x2f9c7c(%rip) # 373ea4 0.00 : 7a228: 48 85 c0 test %rax,%rax 0.00 : 7a22b: 0f 84 69 f9 ff ff je 79b9a <_int_malloc+0xd7a> 0.00 : 7a231: 49 89 c4 mov %rax,%r12 0.00 : 7a234: 49 01 ec add %rbp,%r12 0.00 : 7a237: 41 0f 94 c7 sete %r15b 0.00 : 7a23b: e9 a5 fc ff ff jmpq 79ee5 <_int_malloc+0x10c5> 0.00 : 7a240: 80 7c 24 5f 00 cmpb $0x0,0x5f(%rsp) 0.00 : 7a245: 0f 84 8b f8 ff ff je 79ad6 <_int_malloc+0xcb6> 0.00 : 7a24b: e9 2a f8 ff ff jmpq 79a7a <_int_malloc+0xc5a> 0.00 : 7a250: 4a 8d 44 35 00 lea 0x0(%rbp,%r14,1),%rax 2.56 : 7a255: 48 83 c8 01 or $0x1,%rax 0.00 : 7a259: 49 89 45 08 mov %rax,0x8(%r13) 0.00 : 7a25d: e9 38 f9 ff ff jmpq 79b9a <_int_malloc+0xd7a> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1378 22.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1370 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1326 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1358 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1348 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1326 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1417 2.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1326 2.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1366 2.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1375 2.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1375 2.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1378 2.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1417 2.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1417 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679c50 : : return returnCode; : } : : int : FileWrite(File file, char *buffer, int amount) : { 0.00 : 679c50: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1326 8.33 : 679c51: 48 89 e5 mov %rsp,%rbp 0.00 : 679c54: 41 57 push %r15 0.00 : 679c56: 49 89 f7 mov %rsi,%r15 0.00 : 679c59: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1326 2.78 : 679c5b: 41 89 d6 mov %edx,%r14d 0.00 : 679c5e: 41 55 push %r13 0.00 : 679c60: 41 54 push %r12 0.00 : 679c62: 53 push %rbx 0.00 : 679c63: 89 fb mov %edi,%ebx 0.00 : 679c65: 48 83 ec 08 sub $0x8,%rsp : DO_DB(elog(LOG, "FileWrite: %d (%s) " INT64_FORMAT " %d %p", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : amount, buffer)); : : returnCode = FileAccess(file); 0.00 : 679c69: e8 b2 fc ff ff callq 679920 : if (returnCode < 0) 0.00 : 679c6e: 85 c0 test %eax,%eax : DO_DB(elog(LOG, "FileWrite: %d (%s) " INT64_FORMAT " %d %p", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : amount, buffer)); : : returnCode = FileAccess(file); 0.00 : 679c70: 89 c2 mov %eax,%edx : if (returnCode < 0) 0.00 : 679c72: 0f 88 b0 00 00 00 js 679d28 : * really a modularity violation to throw error here; we should set errno : * and return -1. However, there's no way to report a suitable error : * message if we do that. All current callers would just throw error : * immediately anyway, so this is safe at present. : */ : if (temp_file_limit >= 0 && (VfdCache[file].fdstate & FD_TEMPORARY)) 0.00 : 679c78: 8b 05 fe ee 4e 00 mov 0x4eeefe(%rip),%eax # b68b7c /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1348 5.56 : 679c7e: 85 c0 test %eax,%eax 0.00 : 679c80: 0f 88 52 01 00 00 js 679dd8 0.00 : 679c86: 4c 63 e3 movslq %ebx,%r12 0.00 : 679c89: 49 c1 e4 06 shl $0x6,%r12 0.00 : 679c8d: 4c 89 e2 mov %r12,%rdx 0.00 : 679c90: 48 03 15 01 35 50 00 add 0x503501(%rip),%rdx # b7d198 0.00 : 679c97: f6 42 04 01 testb $0x1,0x4(%rdx) 0.00 : 679c9b: 0f 85 9f 00 00 00 jne 679d40 0.00 : 679ca1: 4d 63 ee movslq %r14d,%r13 : return returnCode; : } : : int : FileWrite(File file, char *buffer, int amount) : { 0.00 : 679ca4: e8 17 00 df ff callq 469cc0 <__errno_location@plt> 0.00 : 679ca9: 48 89 c3 mov %rax,%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1326 5.56 : 679cac: eb 0f jmp 679cbd 0.00 : 679cae: 66 90 xchg %ax,%ax : : /* if write didn't set errno, assume problem is no disk space */ : if (returnCode != amount && errno == 0) : errno = ENOSPC; : : if (returnCode >= 0) 0.00 : 679cb0: 85 d2 test %edx,%edx 0.00 : 679cb2: 79 3c jns 679cf0 : _dosmaperr(error); : break; : } : #endif : /* OK to retry if interrupted */ : if (errno == EINTR) 0.00 : 679cb4: 83 3b 04 cmpl $0x4,(%rbx) 0.00 : 679cb7: 0f 85 03 01 00 00 jne 679dc0 : temp_file_limit))); : } : } : : retry: : errno = 0; /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1366 2.78 : 679cbd: c7 03 00 00 00 00 movl $0x0,(%rbx) : returnCode = write(VfdCache[file].fd, buffer, amount); 0.00 : 679cc3: 48 8b 05 ce 34 50 00 mov 0x5034ce(%rip),%rax # b7d198 0.00 : 679cca: 4c 89 ea mov %r13,%rdx 0.00 : 679ccd: 4c 89 fe mov %r15,%rsi 0.00 : 679cd0: 42 8b 3c 20 mov (%rax,%r12,1),%edi 0.00 : 679cd4: e8 b7 03 df ff callq 46a090 : : /* if write didn't set errno, assume problem is no disk space */ : if (returnCode != amount && errno == 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1370 22.22 : 679cd9: 44 39 f0 cmp %r14d,%eax : } : } : : retry: : errno = 0; : returnCode = write(VfdCache[file].fd, buffer, amount); 0.00 : 679cdc: 89 c2 mov %eax,%edx : : /* if write didn't set errno, assume problem is no disk space */ : if (returnCode != amount && errno == 0) 0.00 : 679cde: 74 d0 je 679cb0 0.00 : 679ce0: 8b 03 mov (%rbx),%eax 0.00 : 679ce2: 85 c0 test %eax,%eax 0.00 : 679ce4: 75 ca jne 679cb0 : errno = ENOSPC; : : if (returnCode >= 0) 0.00 : 679ce6: 85 d2 test %edx,%edx : errno = 0; : returnCode = write(VfdCache[file].fd, buffer, amount); : : /* if write didn't set errno, assume problem is no disk space */ : if (returnCode != amount && errno == 0) : errno = ENOSPC; 0.00 : 679ce8: c7 03 1c 00 00 00 movl $0x1c,(%rbx) : : if (returnCode >= 0) 0.00 : 679cee: 78 c4 js 679cb4 : { : VfdCache[file].seekPos += returnCode; 0.00 : 679cf0: 4c 89 e6 mov %r12,%rsi 0.00 : 679cf3: 48 03 35 9e 34 50 00 add 0x50349e(%rip),%rsi # b7d198 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1375 2.78 : 679cfa: 48 63 ca movslq %edx,%rcx 0.00 : 679cfd: 48 03 4e 20 add 0x20(%rsi),%rcx : : /* maintain fileSize and temporary_files_size if it's a temp file */ : if (VfdCache[file].fdstate & FD_TEMPORARY) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1378 25.00 : 679d01: f6 46 04 01 testb $0x1,0x4(%rsi) : if (returnCode != amount && errno == 0) : errno = ENOSPC; : : if (returnCode >= 0) : { : VfdCache[file].seekPos += returnCode; /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1375 2.78 : 679d05: 48 89 4e 20 mov %rcx,0x20(%rsi) : : /* maintain fileSize and temporary_files_size if it's a temp file */ : if (VfdCache[file].fdstate & FD_TEMPORARY) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1378 2.78 : 679d09: 74 1d je 679d28 : { : off_t newPos = VfdCache[file].seekPos; : : if (newPos > VfdCache[file].fileSize) 0.00 : 679d0b: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 679d0f: 48 39 c1 cmp %rax,%rcx 0.00 : 679d12: 7e 14 jle 679d28 : { : temporary_files_size += newPos - VfdCache[file].fileSize; 0.00 : 679d14: 48 89 cb mov %rcx,%rbx 0.00 : 679d17: 48 29 c3 sub %rax,%rbx 0.00 : 679d1a: 48 01 1d 67 34 50 00 add %rbx,0x503467(%rip) # b7d188 : VfdCache[file].fileSize = newPos; 0.00 : 679d21: 48 89 4e 28 mov %rcx,0x28(%rsi) 0.00 : 679d25: 0f 1f 00 nopl (%rax) : /* Trouble, so assume we don't know the file position anymore */ : VfdCache[file].seekPos = FileUnknownPos; : } : : return returnCode; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1417 2.78 : 679d28: 48 83 c4 08 add $0x8,%rsp 0.00 : 679d2c: 89 d0 mov %edx,%eax 0.00 : 679d2e: 5b pop %rbx 2.78 : 679d2f: 41 5c pop %r12 0.00 : 679d31: 41 5d pop %r13 0.00 : 679d33: 41 5e pop %r14 0.00 : 679d35: 41 5f pop %r15 0.00 : 679d37: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1417 5.56 : 679d38: c3 retq 0.00 : 679d39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * message if we do that. All current callers would just throw error : * immediately anyway, so this is safe at present. : */ : if (temp_file_limit >= 0 && (VfdCache[file].fdstate & FD_TEMPORARY)) : { : off_t newPos = VfdCache[file].seekPos + amount; 0.00 : 679d40: 4d 63 ee movslq %r14d,%r13 0.00 : 679d43: 4c 89 e9 mov %r13,%rcx 0.00 : 679d46: 48 03 4a 20 add 0x20(%rdx),%rcx : : if (newPos > VfdCache[file].fileSize) 0.00 : 679d4a: 48 8b 52 28 mov 0x28(%rdx),%rdx 0.00 : 679d4e: 48 39 d1 cmp %rdx,%rcx 0.00 : 679d51: 0f 8e 4d ff ff ff jle 679ca4 : { : uint64 newTotal = temporary_files_size; : : newTotal += newPos - VfdCache[file].fileSize; : if (newTotal > (uint64) temp_file_limit * (uint64) 1024) 0.00 : 679d57: 48 29 d1 sub %rdx,%rcx 0.00 : 679d5a: 48 03 0d 27 34 50 00 add 0x503427(%rip),%rcx # b7d188 0.00 : 679d61: 48 98 cltq 0.00 : 679d63: 48 c1 e0 0a shl $0xa,%rax 0.00 : 679d67: 48 39 c1 cmp %rax,%rcx 0.00 : 679d6a: 0f 86 34 ff ff ff jbe 679ca4 : ereport(ERROR, 0.00 : 679d70: 45 31 c0 xor %r8d,%r8d 0.00 : 679d73: b9 c8 a9 8a 00 mov $0x8aa9c8,%ecx 0.00 : 679d78: ba 51 05 00 00 mov $0x551,%edx 0.00 : 679d7d: be f1 a2 8a 00 mov $0x8aa2f1,%esi 0.00 : 679d82: bf 14 00 00 00 mov $0x14,%edi 0.00 : 679d87: e8 34 0d 10 00 callq 77aac0 0.00 : 679d8c: 84 c0 test %al,%al 0.00 : 679d8e: 74 29 je 679db9 0.00 : 679d90: 8b 35 e6 ed 4e 00 mov 0x4eede6(%rip),%esi # b68b7c 0.00 : 679d96: bf 38 a7 8a 00 mov $0x8aa738,%edi 0.00 : 679d9b: 31 c0 xor %eax,%eax 0.00 : 679d9d: e8 fe 2a 10 00 callq 77c8a0 0.00 : 679da2: bf c5 40 00 00 mov $0x40c5,%edi 0.00 : 679da7: 89 c3 mov %eax,%ebx 0.00 : 679da9: e8 a2 2f 10 00 callq 77cd50 0.00 : 679dae: 89 de mov %ebx,%esi 0.00 : 679db0: 89 c7 mov %eax,%edi 0.00 : 679db2: 31 c0 xor %eax,%eax 0.00 : 679db4: e8 27 08 10 00 callq 77a5e0 0.00 : 679db9: e8 12 f7 de ff callq 4694d0 0.00 : 679dbe: 66 90 xchg %ax,%ax : /* OK to retry if interrupted */ : if (errno == EINTR) : goto retry; : : /* Trouble, so assume we don't know the file position anymore */ : VfdCache[file].seekPos = FileUnknownPos; 0.00 : 679dc0: 48 8b 05 d1 33 50 00 mov 0x5033d1(%rip),%rax # b7d198 0.00 : 679dc7: 4a c7 44 20 20 ff ff movq $0xffffffffffffffff,0x20(%rax,%r12,1) 0.00 : 679dce: ff ff 0.00 : 679dd0: e9 53 ff ff ff jmpq 679d28 0.00 : 679dd5: 0f 1f 00 nopl (%rax) : { : uint64 newTotal = temporary_files_size; : : newTotal += newPos - VfdCache[file].fileSize; : if (newTotal > (uint64) temp_file_limit * (uint64) 1024) : ereport(ERROR, /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1358 8.33 : 679dd8: 4c 63 e3 movslq %ebx,%r12 0.00 : 679ddb: 4d 63 ee movslq %r14d,%r13 0.00 : 679dde: 49 c1 e4 06 shl $0x6,%r12 0.00 : 679de2: e9 bd fe ff ff jmpq 679ca4 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 27.78 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:567 13.89 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:565 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:570 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694d20 : : : /* : * Use signed arithmetic here so that we behave sensibly if pd_lower > : * pd_upper. : */ : space = (int) ((PageHeader) page)->pd_upper - /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:562 8.33 : 694d20: 0f b7 47 0c movzwl 0xc(%rdi),%eax 27.78 : 694d24: 0f b7 57 0e movzwl 0xe(%rdi),%edx : * Note: this should usually only be used on index pages. Use : * PageGetHeapFreeSpace on heap pages. : */ : Size : PageGetFreeSpace(Page page) : { 0.00 : 694d28: 55 push %rbp 0.00 : 694d29: 48 89 e5 mov %rsp,%rbp : : /* : * Use signed arithmetic here so that we behave sensibly if pd_lower > : * pd_upper. : */ : space = (int) ((PageHeader) page)->pd_upper - 11.11 : 694d2c: 29 c2 sub %eax,%edx : (int) ((PageHeader) page)->pd_lower; : : if (space < (int) sizeof(ItemIdData)) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:565 13.89 : 694d2e: 31 c0 xor %eax,%eax 0.00 : 694d30: 83 fa 03 cmp $0x3,%edx 0.00 : 694d33: 7e 05 jle 694d3a : return 0; : space -= sizeof(ItemIdData); /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:567 27.78 : 694d35: 8d 42 fc lea -0x4(%rdx),%eax : : return (Size) space; 0.00 : 694d38: 48 98 cltq : } /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:570 11.11 : 694d3a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.78 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 22.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 19.44 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1018 13.89 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1018 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007888e0 : : * encoding of data stored in text-like data types. Affected types include : * cstring, text, varchar, name, xml, and json. : */ : int : GetDatabaseEncoding(void) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1016 22.22 : 7888e0: 48 8b 05 69 02 3e 00 mov 0x3e0269(%rip),%rax # b68b50 8.33 : 7888e7: 55 push %rbp 13.89 : 7888e8: 48 89 e5 mov %rsp,%rbp 27.78 : 7888eb: 8b 40 08 mov 0x8(%rax),%eax : return DatabaseEncoding->encoding; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mb/mbutils.c:1018 27.78 : 7888ee: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.14 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:171 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:188 11.43 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:178 11.43 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:187 11.43 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:188 8.57 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:171 5.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:187 5.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:179 5.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:178 2.86 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:171 2.86 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:187 2.86 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:188 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ac1e0 : : HeapTuple htup, : Datum *values, : bool *isnull, : bool tupleIsAlive, : void *state) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:171 17.14 : 4ac1e0: 55 push %rbp 0.00 : 4ac1e1: 48 89 e5 mov %rsp,%rbp 8.57 : 4ac1e4: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:171 2.86 : 4ac1e5: 4c 89 cb mov %r9,%rbx 0.00 : 4ac1e8: 48 83 ec 08 sub $0x8,%rsp : : /* : * insert the index tuple into the appropriate spool file for subsequent : * processing : */ : if (tupleIsAlive || buildstate->spool2 == NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:178 11.43 : 4ac1ec: 45 84 c0 test %r8b,%r8b 0.00 : 4ac1ef: 75 37 jne 4ac228 0.00 : 4ac1f1: 49 83 79 18 00 cmpq $0x0,0x18(%r9) 0.00 : 4ac1f6: 74 30 je 4ac228 : _bt_spool(buildstate->spool, &htup->t_self, values, isnull); : else : { : /* dead tuples are put into spool2 */ : buildstate->haveDead = true; : _bt_spool(buildstate->spool2, &htup->t_self, values, isnull); 0.00 : 4ac1f8: 49 8b 79 18 mov 0x18(%r9),%rdi : if (tupleIsAlive || buildstate->spool2 == NULL) : _bt_spool(buildstate->spool, &htup->t_self, values, isnull); : else : { : /* dead tuples are put into spool2 */ : buildstate->haveDead = true; 0.00 : 4ac1fc: 41 c6 41 01 01 movb $0x1,0x1(%r9) : _bt_spool(buildstate->spool2, &htup->t_self, values, isnull); 0.00 : 4ac201: 48 83 c6 04 add $0x4,%rsi 0.00 : 4ac205: e8 b6 46 00 00 callq 4b08c0 <_bt_spool> : } : : buildstate->indtuples += 1; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:187 5.71 : 4ac20a: f2 0f 10 05 46 2f 30 movsd 0x302f46(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 4ac211: 00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:187 2.86 : 4ac212: f2 0f 58 43 20 addsd 0x20(%rbx),%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:187 11.43 : 4ac217: f2 0f 11 43 20 movsd %xmm0,0x20(%rbx) : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:188 2.86 : 4ac21c: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:188 11.43 : 4ac220: 5b pop %rbx 0.00 : 4ac221: c9 leaveq 14.29 : 4ac222: c3 retq 0.00 : 4ac223: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * insert the index tuple into the appropriate spool file for subsequent : * processing : */ : if (tupleIsAlive || buildstate->spool2 == NULL) : _bt_spool(buildstate->spool, &htup->t_self, values, isnull); 0.00 : 4ac228: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 4ac22c: 48 83 c6 04 add $0x4,%rsi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:179 5.71 : 4ac230: e8 8b 46 00 00 callq 4b08c0 <_bt_spool> : : /* : * insert the index tuple into the appropriate spool file for subsequent : * processing : */ : if (tupleIsAlive || buildstate->spool2 == NULL) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:178 5.71 : 4ac235: eb d3 jmp 4ac20a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.65 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:398 17.65 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:413 14.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:398 14.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:402 14.71 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:410 8.82 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:410 5.88 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:410 2.94 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:402 2.94 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:402 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004afde0 <_bt_sortaddtup>: : static void : _bt_sortaddtup(Page page, : Size itemsize, : IndexTuple itup, : OffsetNumber itup_off) : { 17.65 : 4afde0: 55 push %rbp 0.00 : 4afde1: 49 89 f2 mov %rsi,%r10 0.00 : 4afde4: 48 89 d6 mov %rdx,%rsi 14.71 : 4afde7: 89 ca mov %ecx,%edx 0.00 : 4afde9: 48 89 e5 mov %rsp,%rbp 0.00 : 4afdec: 48 83 ec 10 sub $0x10,%rsp : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : IndexTupleData trunctuple; : : if (!P_ISLEAF(opaque) && itup_off == P_FIRSTKEY) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:402 14.71 : 4afdf0: 0f b7 47 10 movzwl 0x10(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:402 2.94 : 4afdf4: f6 44 07 0c 01 testb $0x1,0xc(%rdi,%rax,1) 2.94 : 4afdf9: 75 06 jne 4afe01 <_bt_sortaddtup+0x21> 0.00 : 4afdfb: 66 83 f9 02 cmp $0x2,%cx 0.00 : 4afdff: 74 1f je 4afe20 <_bt_sortaddtup+0x40> : trunctuple.t_info = sizeof(IndexTupleData); : itup = &trunctuple; : itemsize = sizeof(IndexTupleData); : } : : if (PageAddItem(page, (Item) itup, itemsize, itup_off, /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:410 14.71 : 4afe01: 0f b7 ca movzwl %dx,%ecx 0.00 : 4afe04: 45 31 c9 xor %r9d,%r9d 0.00 : 4afe07: 45 31 c0 xor %r8d,%r8d 0.00 : 4afe0a: 4c 89 d2 mov %r10,%rdx 5.88 : 4afe0d: e8 6e 60 1e 00 callq 695e80 8.82 : 4afe12: 66 85 c0 test %ax,%ax 0.00 : 4afe15: 74 22 je 4afe39 <_bt_sortaddtup+0x59> : false, false) == InvalidOffsetNumber) : elog(ERROR, "failed to add item to the index page"); : } 0.00 : 4afe17: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:413 17.65 : 4afe18: c3 retq 0.00 : 4afe19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : IndexTupleData trunctuple; : : if (!P_ISLEAF(opaque) && itup_off == P_FIRSTKEY) : { : trunctuple = *itup; 0.00 : 4afe20: 48 8b 06 mov (%rsi),%rax : trunctuple.t_info = sizeof(IndexTupleData); 0.00 : 4afe23: 41 ba 08 00 00 00 mov $0x8,%r10d 0.00 : 4afe29: 48 8d 75 f0 lea -0x10(%rbp),%rsi : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : IndexTupleData trunctuple; : : if (!P_ISLEAF(opaque) && itup_off == P_FIRSTKEY) : { : trunctuple = *itup; 0.00 : 4afe2d: 48 89 45 f0 mov %rax,-0x10(%rbp) : trunctuple.t_info = sizeof(IndexTupleData); 0.00 : 4afe31: 66 c7 45 f6 08 00 movw $0x8,-0xa(%rbp) 0.00 : 4afe37: eb c8 jmp 4afe01 <_bt_sortaddtup+0x21> : itemsize = sizeof(IndexTupleData); : } : : if (PageAddItem(page, (Item) itup, itemsize, itup_off, : false, false) == InvalidOffsetNumber) : elog(ERROR, "failed to add item to the index page"); 0.00 : 4afe39: ba 3a 4c 7b 00 mov $0x7b4c3a,%edx 0.00 : 4afe3e: be 9c 01 00 00 mov $0x19c,%esi 0.00 : 4afe43: bf f8 4b 7b 00 mov $0x7b4bf8,%edi 0.00 : 4afe48: e8 d3 b5 2c 00 callq 77b420 0.00 : 4afe4d: be 08 4c 7b 00 mov $0x7b4c08,%esi 0.00 : 4afe52: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4afe57: 31 c0 xor %eax,%eax 0.00 : 4afe59: e8 d2 b3 2c 00 callq 77b230 0.00 : 4afe5e: e8 6d 96 fb ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 29.41 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:65 23.53 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:63 14.71 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:64 11.76 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:67 8.82 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:63 5.88 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:67 2.94 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:64 2.94 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:66 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005d1b20 : : * previous content, if any, is cleared. : */ : void : resetStringInfo(StringInfo str) : { : str->data[0] = '\0'; /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:64 14.71 : 5d1b20: 48 8b 07 mov (%rdi),%rax : * Reset the StringInfo: the data buffer remains valid, but its : * previous content, if any, is cleared. : */ : void : resetStringInfo(StringInfo str) : { /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:63 23.53 : 5d1b23: 55 push %rbp 8.82 : 5d1b24: 48 89 e5 mov %rsp,%rbp : str->data[0] = '\0'; /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:64 2.94 : 5d1b27: c6 00 00 movb $0x0,(%rax) : str->len = 0; /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:65 29.41 : 5d1b2a: c7 47 08 00 00 00 00 movl $0x0,0x8(%rdi) : str->cursor = 0; /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:66 2.94 : 5d1b31: c7 47 10 00 00 00 00 movl $0x0,0x10(%rdi) : } /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:67 17.65 : 5d1b38: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.71 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 14.71 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:521 14.71 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:530 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:533 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:514 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:521 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:534 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:534 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 2.94 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000676570 : : * See buffer/README for details. : */ : Buffer : ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, : ReadBufferMode mode, BufferAccessStrategy strategy) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 2.94 : 676570: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 5.88 : 676571: 48 89 e5 mov %rsp,%rbp 0.00 : 676574: 48 89 5d d8 mov %rbx,-0x28(%rbp) 14.71 : 676578: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 67657c: 48 89 fb mov %rdi,%rbx 0.00 : 67657f: 4c 89 6d e8 mov %r13,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:509 2.94 : 676583: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 676587: 41 89 cd mov %ecx,%r13d 0.00 : 67658a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 67658e: 48 83 ec 40 sub $0x40,%rsp : bool hit; : Buffer buf; : : /* Open it at the smgr level if not already done */ : RelationOpenSmgr(reln); 0.00 : 676592: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) : * See buffer/README for details. : */ : Buffer : ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, : ReadBufferMode mode, BufferAccessStrategy strategy) : { 2.94 : 676597: 41 89 f7 mov %esi,%r15d 0.00 : 67659a: 41 89 d6 mov %edx,%r14d 0.00 : 67659d: 4d 89 c4 mov %r8,%r12 : bool hit; : Buffer buf; : : /* Open it at the smgr level if not already done */ : RelationOpenSmgr(reln); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:514 2.94 : 6765a0: 0f 84 aa 00 00 00 je 676650 : /* : * Reject attempts to read non-local temporary relations; we would be : * likely to get wrong data since we have no visibility into the owning : * session's local buffers. : */ : if (RELATION_IS_OTHER_TEMP(reln)) 0.00 : 6765a6: 48 8b 43 30 mov 0x30(%rbx),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:521 2.94 : 6765aa: 0f b6 50 6e movzbl 0x6e(%rax),%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:521 14.71 : 6765ae: 80 fa 74 cmp $0x74,%dl 0.00 : 6765b1: 74 6d je 676620 : : /* : * Read the buffer, and update pgstat counters to reflect a cache hit or : * miss. : */ : pgstat_count_buffer_read(reln); 0.00 : 6765b3: 48 8b 83 38 01 00 00 mov 0x138(%rbx),%rax 0.00 : 6765ba: 48 85 c0 test %rax,%rax 0.00 : 6765bd: 74 0d je 6765cc 0.00 : 6765bf: 48 83 40 60 01 addq $0x1,0x60(%rax) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:530 14.71 : 6765c4: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 6765c8: 0f b6 50 6e movzbl 0x6e(%rax),%edx : buf = ReadBuffer_common(reln->rd_smgr, reln->rd_rel->relpersistence, 0.00 : 6765cc: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 6765d0: 48 8d 45 d7 lea -0x29(%rbp),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 5.88 : 6765d4: 0f be f2 movsbl %dl,%esi 0.00 : 6765d7: 4d 89 e1 mov %r12,%r9 0.00 : 6765da: 45 89 e8 mov %r13d,%r8d 0.00 : 6765dd: 44 89 f1 mov %r14d,%ecx /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:531 2.94 : 6765e0: 44 89 fa mov %r15d,%edx 0.00 : 6765e3: 48 89 04 24 mov %rax,(%rsp) 0.00 : 6765e7: e8 b4 f6 ff ff callq 675ca0 : forkNum, blockNum, mode, strategy, &hit); : if (hit) 0.00 : 6765ec: 80 7d d7 00 cmpb $0x0,-0x29(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:533 5.88 : 6765f0: 74 11 je 676603 : pgstat_count_buffer_hit(reln); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:534 2.94 : 6765f2: 48 8b 93 38 01 00 00 mov 0x138(%rbx),%rdx 0.00 : 6765f9: 48 85 d2 test %rdx,%rdx 0.00 : 6765fc: 74 05 je 676603 2.94 : 6765fe: 48 83 42 68 01 addq $0x1,0x68(%rdx) : return buf; : } 0.00 : 676603: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 676607: 4c 8b 65 e0 mov -0x20(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 2.94 : 67660b: 4c 8b 6d e8 mov -0x18(%rbp),%r13 2.94 : 67660f: 4c 8b 75 f0 mov -0x10(%rbp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 5.88 : 676613: 4c 8b 7d f8 mov -0x8(%rbp),%r15 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:536 2.94 : 676617: c9 leaveq 0.00 : 676618: c3 retq 0.00 : 676619: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Reject attempts to read non-local temporary relations; we would be : * likely to get wrong data since we have no visibility into the owning : * session's local buffers. : */ : if (RELATION_IS_OTHER_TEMP(reln)) 0.00 : 676620: 80 7b 20 00 cmpb $0x0,0x20(%rbx) 0.00 : 676624: 75 8d jne 6765b3 : ereport(ERROR, 0.00 : 676626: 45 31 c0 xor %r8d,%r8d 0.00 : 676629: b9 c0 a0 8a 00 mov $0x8aa0c0,%ecx 0.00 : 67662e: ba 0c 02 00 00 mov $0x20c,%edx 0.00 : 676633: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 676638: bf 14 00 00 00 mov $0x14,%edi 0.00 : 67663d: e8 7e 44 10 00 callq 77aac0 0.00 : 676642: 84 c0 test %al,%al 0.00 : 676644: 75 29 jne 67666f 0.00 : 676646: e8 85 2e df ff callq 4694d0 0.00 : 67664b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : bool hit; : Buffer buf; : : /* Open it at the smgr level if not already done */ : RelationOpenSmgr(reln); 0.00 : 676650: 8b 57 1c mov 0x1c(%rdi),%edx 0.00 : 676653: 8b 73 08 mov 0x8(%rbx),%esi 0.00 : 676656: 48 8b 3f mov (%rdi),%rdi 0.00 : 676659: e8 d2 33 02 00 callq 699a30 0.00 : 67665e: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 676662: 48 89 c6 mov %rax,%rsi 0.00 : 676665: e8 96 2c 02 00 callq 699300 0.00 : 67666a: e9 37 ff ff ff jmpq 6765a6 : * Reject attempts to read non-local temporary relations; we would be : * likely to get wrong data since we have no visibility into the owning : * session's local buffers. : */ : if (RELATION_IS_OTHER_TEMP(reln)) : ereport(ERROR, 0.00 : 67666f: bf 08 9f 8a 00 mov $0x8a9f08,%edi 0.00 : 676674: 31 c0 xor %eax,%eax 0.00 : 676676: e8 25 62 10 00 callq 77c8a0 0.00 : 67667b: bf 40 04 00 00 mov $0x440,%edi 0.00 : 676680: 89 c3 mov %eax,%ebx 0.00 : 676682: e8 c9 66 10 00 callq 77cd50 0.00 : 676687: 89 de mov %ebx,%esi 0.00 : 676689: 89 c7 mov %eax,%edi 0.00 : 67668b: 31 c0 xor %eax,%eax 0.00 : 67668d: e8 4e 3f 10 00 callq 77a5e0 0.00 : 676692: eb b2 jmp 676646 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 39.39 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1217 24.24 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1217 18.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 15.15 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 3.03 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000797f70 : : * Given a currently-allocated chunk, determine the total space : * it occupies (including all memory-allocation overhead). : */ : static Size : AllocSetGetChunkSpace(MemoryContext context, void *pointer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 18.18 : 797f70: 48 8b 46 f8 mov -0x8(%rsi),%rax 15.15 : 797f74: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1213 3.03 : 797f75: 48 89 e5 mov %rsp,%rbp : AllocChunk chunk = AllocPointerGetChunk(pointer); : : return chunk->size + ALLOC_CHUNKHDRSZ; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:1217 24.24 : 797f78: c9 leaveq : * Given a currently-allocated chunk, determine the total space : * it occupies (including all memory-allocation overhead). : */ : static Size : AllocSetGetChunkSpace(MemoryContext context, void *pointer) : { 39.39 : 797f79: 48 83 c0 10 add $0x10,%rax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 62.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3270 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3268 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3272 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3268 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3296 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3304 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3288 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674440 : : * Returns TRUE if we successfully marked the buffer as I/O busy, : * FALSE if someone else already did the work. : */ : static bool : StartBufferIO(volatile BufferDesc *buf, bool forInput) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 3.12 : 674440: 55 push %rbp 0.00 : 674441: 48 89 e5 mov %rsp,%rbp 0.00 : 674444: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 6.25 : 674446: 41 89 f6 mov %esi,%r14d 0.00 : 674449: 41 55 push %r13 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 67444b: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 674451: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3259 3.12 : 674453: 4c 8d 67 20 lea 0x20(%rdi),%r12 0.00 : 674457: 53 push %rbx 3.12 : 674458: 48 89 fb mov %rdi,%rbx 0.00 : 67445b: eb 20 jmp 67447d 0.00 : 67445d: 0f 1f 00 nopl (%rax) : */ : LWLockAcquire(buf->io_in_progress_lock, LW_EXCLUSIVE); : : LockBufHdr(buf); : : if (!(buf->flags & BM_IO_IN_PROGRESS)) 0.00 : 674460: 0f b7 43 14 movzwl 0x14(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3272 3.12 : 674464: a8 08 test $0x8,%al 0.00 : 674466: 74 46 je 6744ae : * The only way BM_IO_IN_PROGRESS could be set when the io_in_progress : * lock isn't held is if the process doing the I/O is recovering from : * an error (see AbortBufferIO). If that's the case, we must wait for : * him to get unwedged. : */ : UnlockBufHdr(buf); 0.00 : 674468: c6 43 20 00 movb $0x0,0x20(%rbx) : LWLockRelease(buf->io_in_progress_lock); 0.00 : 67446c: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 674470: e8 2b af 01 00 callq 68f3a0 : WaitIO(buf); 0.00 : 674475: 48 89 df mov %rbx,%rdi 0.00 : 674478: e8 43 ff ff ff callq 6743c0 : { : /* : * Grab the io_in_progress lock so that other processes can wait for : * me to finish the I/O. : */ : LWLockAcquire(buf->io_in_progress_lock, LW_EXCLUSIVE); 0.00 : 67447d: 48 8b 7b 30 mov 0x30(%rbx),%rdi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3268 6.25 : 674481: 31 f6 xor %esi,%esi /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3268 3.12 : 674483: e8 68 b6 01 00 callq 68faf0 0.00 : 674488: 44 89 e8 mov %r13d,%eax 0.00 : 67448b: f0 41 86 04 24 lock xchg %al,(%r12) : : LockBufHdr(buf); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3270 62.50 : 674490: 84 c0 test %al,%al 0.00 : 674492: 74 cc je 674460 0.00 : 674494: ba c6 0c 00 00 mov $0xcc6,%edx 0.00 : 674499: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 67449e: 4c 89 e7 mov %r12,%rdi 0.00 : 6744a1: e8 9a bb 01 00 callq 690040 : : if (!(buf->flags & BM_IO_IN_PROGRESS)) 0.00 : 6744a6: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6744aa: a8 08 test $0x8,%al 0.00 : 6744ac: 75 ba jne 674468 : WaitIO(buf); : } : : /* Once we get here, there is definitely no I/O active on this buffer */ : : if (forInput ? (buf->flags & BM_VALID) : !(buf->flags & BM_DIRTY)) 0.00 : 6744ae: 45 84 f6 test %r14b,%r14b 0.00 : 6744b1: 74 3d je 6744f0 0.00 : 6744b3: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6744b7: d1 e8 shr %eax 0.00 : 6744b9: 83 e0 01 and $0x1,%eax 0.00 : 6744bc: 84 c0 test %al,%al 0.00 : 6744be: 75 3d jne 6744fd : UnlockBufHdr(buf); : LWLockRelease(buf->io_in_progress_lock); : return false; : } : : buf->flags |= BM_IO_IN_PROGRESS; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3296 3.12 : 6744c0: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6744c4: 83 c8 08 or $0x8,%eax 0.00 : 6744c7: 66 89 43 14 mov %ax,0x14(%rbx) : : UnlockBufHdr(buf); 0.00 : 6744cb: c6 43 20 00 movb $0x0,0x20(%rbx) : : InProgressBuf = buf; 0.00 : 6744cf: 48 89 1d 92 8b 50 00 mov %rbx,0x508b92(%rip) # b7d068 : IsForInput = forInput; 0.00 : 6744d6: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6744db: 44 88 35 c3 8b 50 00 mov %r14b,0x508bc3(%rip) # b7d0a5 : : return true; : } 0.00 : 6744e2: 5b pop %rbx 0.00 : 6744e3: 41 5c pop %r12 0.00 : 6744e5: 41 5d pop %r13 0.00 : 6744e7: 41 5e pop %r14 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3304 3.12 : 6744e9: c9 leaveq 0.00 : 6744ea: c3 retq 0.00 : 6744eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : WaitIO(buf); : } : : /* Once we get here, there is definitely no I/O active on this buffer */ : : if (forInput ? (buf->flags & BM_VALID) : !(buf->flags & BM_DIRTY)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3288 3.12 : 6744f0: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6744f4: f7 d0 not %eax 0.00 : 6744f6: 83 e0 01 and $0x1,%eax 0.00 : 6744f9: 84 c0 test %al,%al 0.00 : 6744fb: 74 c3 je 6744c0 : { : /* someone else already did the I/O */ : UnlockBufHdr(buf); 0.00 : 6744fd: c6 43 20 00 movb $0x0,0x20(%rbx) : LWLockRelease(buf->io_in_progress_lock); 0.00 : 674501: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 674505: e8 96 ae 01 00 callq 68f3a0 : : InProgressBuf = buf; : IsForInput = forInput; : : return true; : } 0.00 : 67450a: 5b pop %rbx 0.00 : 67450b: 41 5c pop %r12 0.00 : 67450d: 41 5d pop %r13 : : if (forInput ? (buf->flags & BM_VALID) : !(buf->flags & BM_DIRTY)) : { : /* someone else already did the I/O */ : UnlockBufHdr(buf); : LWLockRelease(buf->io_in_progress_lock); 0.00 : 67450f: 31 c0 xor %eax,%eax : : InProgressBuf = buf; : IsForInput = forInput; : : return true; : } 0.00 : 674511: 41 5e pop %r14 0.00 : 674513: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 15.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:851 15.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:851 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:854 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1056 9.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:851 9.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1056 9.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1056 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1056 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:851 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:865 3.12 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1056 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000681cb0 : : * This buys back some concurrency (and we can't retrieve the main Xids from : * PGXACT again anyway; see GetNewTransactionId). : */ : bool : TransactionIdIsInProgress(TransactionId xid) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:851 9.38 : 681cb0: 55 push %rbp 0.00 : 681cb1: 48 89 e5 mov %rsp,%rbp 0.00 : 681cb4: 4c 89 65 e0 mov %r12,-0x20(%rbp) 15.62 : 681cb8: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 681cbc: 41 89 fc mov %edi,%r12d 0.00 : 681cbf: 4c 89 6d e8 mov %r13,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:851 3.12 : 681cc3: 4c 89 75 f0 mov %r14,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:851 15.62 : 681cc7: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 681ccb: 48 83 ec 50 sub $0x50,%rsp : static TransactionId *xids = NULL; : int nxids = 0; : ProcArrayStruct *arrayP = procArray; 0.00 : 681ccf: 48 8b 05 52 b9 4f 00 mov 0x4fb952(%rip),%rax # b7d628 : * Don't bother checking a transaction older than RecentXmin; it could not : * possibly still be running. (Note: in particular, this guarantees that : * we reject InvalidTransactionId, FrozenTransactionId, etc as not : * running.) : */ : if (TransactionIdPrecedes(xid, RecentXmin)) 0.00 : 681cd6: 8b 35 80 0a 4f 00 mov 0x4f0a80(%rip),%esi # b7275c : bool : TransactionIdIsInProgress(TransactionId xid) : { : static TransactionId *xids = NULL; : int nxids = 0; : ProcArrayStruct *arrayP = procArray; /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:854 12.50 : 681cdc: 48 89 45 c0 mov %rax,-0x40(%rbp) : * Don't bother checking a transaction older than RecentXmin; it could not : * possibly still be running. (Note: in particular, this guarantees that : * we reject InvalidTransactionId, FrozenTransactionId, etc as not : * running.) : */ : if (TransactionIdPrecedes(xid, RecentXmin)) /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:865 3.12 : 681ce0: e8 fb e2 e3 ff callq 4bffe0 0.00 : 681ce5: 84 c0 test %al,%al 0.00 : 681ce7: 74 1f je 681d08 : */ : topxid = SubTransGetTopmostTransaction(xid); : Assert(TransactionIdIsValid(topxid)); : if (!TransactionIdEquals(topxid, xid)) : { : for (i = 0; i < nxids; i++) 0.00 : 681ce9: 31 c0 xor %eax,%eax : return true; : } : } : : return false; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1056 6.25 : 681ceb: 48 8b 5d d8 mov -0x28(%rbp),%rbx 9.38 : 681cef: 4c 8b 65 e0 mov -0x20(%rbp),%r12 12.50 : 681cf3: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 681cf7: 4c 8b 75 f0 mov -0x10(%rbp),%r14 9.38 : 681cfb: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 681cff: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/procarray.c:1056 3.12 : 681d00: c3 retq 0.00 : 681d01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * We may have just checked the status of this transaction, so if it is : * already known to be completed, we can fall out without any access to : * shared memory. : */ : if (TransactionIdIsKnownCompleted(xid)) 0.00 : 681d08: 44 89 e7 mov %r12d,%edi 0.00 : 681d0b: e8 c0 e2 e3 ff callq 4bffd0 0.00 : 681d10: 84 c0 test %al,%al 0.00 : 681d12: 75 d5 jne 681ce9 : : /* : * Also, we can handle our own transaction (and subtransactions) without : * any access to shared memory. : */ : if (TransactionIdIsCurrentTransactionId(xid)) 0.00 : 681d14: 44 89 e7 mov %r12d,%edi 0.00 : 681d17: e8 84 27 e4 ff callq 4c44a0 0.00 : 681d1c: 84 c0 test %al,%al 0.00 : 681d1e: 66 90 xchg %ax,%ax 0.00 : 681d20: 0f 85 0a 02 00 00 jne 681f30 : : /* : * If first time through, get workspace to remember main XIDs in. We : * malloc it permanently to avoid repeated palloc/pfree overhead. : */ : if (xids == NULL) 0.00 : 681d26: 48 83 3d f2 b8 4f 00 cmpq $0x0,0x4fb8f2(%rip) # b7d620 0.00 : 681d2d: 00 0.00 : 681d2e: 0f 84 06 02 00 00 je 681f3a : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : } : : LWLockAcquire(ProcArrayLock, LW_SHARED); 0.00 : 681d34: 48 8b 3d c5 bc 4f 00 mov 0x4fbcc5(%rip),%rdi # b7da00 0.00 : 681d3b: be 01 00 00 00 mov $0x1,%esi 0.00 : 681d40: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 681d44: e8 a7 dd 00 00 callq 68faf0 : : /* : * Now that we have the lock, we can check latestCompletedXid; if the : * target Xid is after that, it's surely still running. : */ : if (TransactionIdPrecedes(ShmemVariableCache->latestCompletedXid, xid)) 0.00 : 681d49: 48 8b 05 38 70 4f 00 mov 0x4f7038(%rip),%rax # b78d88 0.00 : 681d50: 44 89 e6 mov %r12d,%esi 0.00 : 681d53: 8b 78 24 mov 0x24(%rax),%edi 0.00 : 681d56: e8 85 e2 e3 ff callq 4bffe0 0.00 : 681d5b: 84 c0 test %al,%al 0.00 : 681d5d: 0f 85 ad 01 00 00 jne 681f10 : xc_by_latest_xid_inc(); : return true; : } : : /* No shortcuts, gotta grovel through the array */ : for (i = 0; i < arrayP->numProcs; i++) 0.00 : 681d63: 48 8b 45 c0 mov -0x40(%rbp),%rax : * Now that we have the lock, we can check latestCompletedXid; if the : * target Xid is after that, it's surely still running. : */ : if (TransactionIdPrecedes(ShmemVariableCache->latestCompletedXid, xid)) : { : LWLockRelease(ProcArrayLock); 0.00 : 681d67: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%rbp) 0.00 : 681d6e: 45 31 f6 xor %r14d,%r14d : xc_by_latest_xid_inc(); : return true; : } : : /* No shortcuts, gotta grovel through the array */ : for (i = 0; i < arrayP->numProcs; i++) 0.00 : 681d71: 8b 00 mov (%rax),%eax 0.00 : 681d73: 85 c0 test %eax,%eax 0.00 : 681d75: 0f 8e de 00 00 00 jle 681e59 0.00 : 681d7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : int pgprocno = arrayP->pgprocnos[i]; : volatile PGPROC *proc = &allProcs[pgprocno]; 0.00 : 681d80: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 681d84: 49 63 c6 movslq %r14d,%rax 0.00 : 681d87: 48 63 44 82 28 movslq 0x28(%rdx,%rax,4),%rax : volatile PGXACT *pgxact = &allPgXact[pgprocno]; 0.00 : 681d8c: 48 8b 15 a5 b8 4f 00 mov 0x4fb8a5(%rip),%rdx # b7d638 : : /* No shortcuts, gotta grovel through the array */ : for (i = 0; i < arrayP->numProcs; i++) : { : int pgprocno = arrayP->pgprocnos[i]; : volatile PGPROC *proc = &allProcs[pgprocno]; 0.00 : 681d93: 48 69 d8 f0 02 00 00 imul $0x2f0,%rax,%rbx 0.00 : 681d9a: 48 03 1d 8f b8 4f 00 add 0x4fb88f(%rip),%rbx # b7d630 : volatile PGXACT *pgxact = &allPgXact[pgprocno]; : TransactionId pxid; : : /* Ignore my own proc --- dealt with it above */ : if (proc == MyProc) 0.00 : 681da1: 48 3b 1d a0 bb 4f 00 cmp 0x4fbba0(%rip),%rbx # b7d948 0.00 : 681da8: 0f 84 9a 00 00 00 je 681e48 : /* No shortcuts, gotta grovel through the array */ : for (i = 0; i < arrayP->numProcs; i++) : { : int pgprocno = arrayP->pgprocnos[i]; : volatile PGPROC *proc = &allProcs[pgprocno]; : volatile PGXACT *pgxact = &allPgXact[pgprocno]; 0.00 : 681dae: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 681db2: 4c 8d 3c 82 lea (%rdx,%rax,4),%r15 : /* Ignore my own proc --- dealt with it above */ : if (proc == MyProc) : continue; : : /* Fetch xid just once - see GetNewTransactionId */ : pxid = pgxact->xid; 0.00 : 681db6: 45 8b 2f mov (%r15),%r13d : : if (!TransactionIdIsValid(pxid)) 0.00 : 681db9: 45 85 ed test %r13d,%r13d 0.00 : 681dbc: 0f 84 86 00 00 00 je 681e48 : continue; : : /* : * Step 1: check the main Xid : */ : if (TransactionIdEquals(pxid, xid)) 0.00 : 681dc2: 45 39 e5 cmp %r12d,%r13d 0.00 : 681dc5: 0f 84 45 01 00 00 je 681f10 : : /* : * We can ignore main Xids that are younger than the target Xid, since : * the target could not possibly be their child. : */ : if (TransactionIdPrecedes(xid, pxid)) 0.00 : 681dcb: 44 89 ee mov %r13d,%esi 0.00 : 681dce: 44 89 e7 mov %r12d,%edi 0.00 : 681dd1: e8 0a e2 e3 ff callq 4bffe0 0.00 : 681dd6: 84 c0 test %al,%al 0.00 : 681dd8: 75 6e jne 681e48 : continue; : : /* : * Step 2: check the cached child-Xids arrays : */ : for (j = pgxact->nxids - 1; j >= 0; j--) 0.00 : 681dda: 41 0f b6 47 0b movzbl 0xb(%r15),%eax 0.00 : 681ddf: 0f b6 f0 movzbl %al,%esi 0.00 : 681de2: 89 f1 mov %esi,%ecx 0.00 : 681de4: 83 e9 01 sub $0x1,%ecx 0.00 : 681de7: 78 3d js 681e26 : { : /* Fetch xid just once - see GetNewTransactionId */ : TransactionId cxid = proc->subxids.xids[j]; 0.00 : 681de9: 48 63 c1 movslq %ecx,%rax 0.00 : 681dec: 48 83 c0 64 add $0x64,%rax 0.00 : 681df0: 8b 04 83 mov (%rbx,%rax,4),%eax : : if (TransactionIdEquals(cxid, xid)) 0.00 : 681df3: 44 39 e0 cmp %r12d,%eax 0.00 : 681df6: 0f 84 14 01 00 00 je 681f10 : { : LWLockRelease(ProcArrayLock); 0.00 : 681dfc: 31 d2 xor %edx,%edx : continue; : : /* : * Step 2: check the cached child-Xids arrays : */ : for (j = pgxact->nxids - 1; j >= 0; j--) 0.00 : 681dfe: 83 ee 02 sub $0x2,%esi 0.00 : 681e01: eb 1c jmp 681e1f 0.00 : 681e03: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* Fetch xid just once - see GetNewTransactionId */ : TransactionId cxid = proc->subxids.xids[j]; 0.00 : 681e08: 48 63 c1 movslq %ecx,%rax 0.00 : 681e0b: 48 83 c2 01 add $0x1,%rdx 0.00 : 681e0f: 48 83 c0 64 add $0x64,%rax 0.00 : 681e13: 8b 04 83 mov (%rbx,%rax,4),%eax : : if (TransactionIdEquals(cxid, xid)) 0.00 : 681e16: 44 39 e0 cmp %r12d,%eax 0.00 : 681e19: 0f 84 f1 00 00 00 je 681f10 : continue; : : /* : * Step 2: check the cached child-Xids arrays : */ : for (j = pgxact->nxids - 1; j >= 0; j--) 0.00 : 681e1f: 83 e9 01 sub $0x1,%ecx 0.00 : 681e22: 39 d6 cmp %edx,%esi 0.00 : 681e24: 79 e2 jns 681e08 : * that have uncached children. (Note: there is no race condition : * here because the overflowed flag cannot be cleared, only set, while : * we hold ProcArrayLock. So we can't miss an Xid that we need to : * worry about.) : */ : if (pgxact->overflowed) 0.00 : 681e26: 41 0f b6 47 09 movzbl 0x9(%r15),%eax 0.00 : 681e2b: 84 c0 test %al,%al 0.00 : 681e2d: 74 19 je 681e48 : xids[nxids++] = pxid; 0.00 : 681e2f: 48 63 55 bc movslq -0x44(%rbp),%rdx 0.00 : 681e33: 48 8b 05 e6 b7 4f 00 mov 0x4fb7e6(%rip),%rax # b7d620 0.00 : 681e3a: 44 89 2c 90 mov %r13d,(%rax,%rdx,4) 0.00 : 681e3e: 83 45 bc 01 addl $0x1,-0x44(%rbp) 0.00 : 681e42: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : xc_by_latest_xid_inc(); : return true; : } : : /* No shortcuts, gotta grovel through the array */ : for (i = 0; i < arrayP->numProcs; i++) 0.00 : 681e48: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 681e4c: 41 83 c6 01 add $0x1,%r14d 0.00 : 681e50: 44 39 30 cmp %r14d,(%rax) 0.00 : 681e53: 0f 8f 27 ff ff ff jg 681d80 : : /* : * Step 3: in hot standby mode, check the known-assigned-xids list. XIDs : * in the list must be treated as running. : */ : if (RecoveryInProgress()) 0.00 : 681e59: e8 62 b6 e4 ff callq 4cd4c0 0.00 : 681e5e: 84 c0 test %al,%al 0.00 : 681e60: 74 2c je 681e8e : static bool : KnownAssignedXidExists(TransactionId xid) : { : Assert(TransactionIdIsValid(xid)); : : return KnownAssignedXidsSearch(xid, false); 0.00 : 681e62: 31 f6 xor %esi,%esi 0.00 : 681e64: 44 89 e7 mov %r12d,%edi 0.00 : 681e67: e8 a4 e3 ff ff callq 680210 : if (RecoveryInProgress()) : { : /* none of the PGXACT entries should have XIDs in hot standby mode */ : Assert(nxids == 0); : : if (KnownAssignedXidExists(xid)) 0.00 : 681e6c: 84 c0 test %al,%al 0.00 : 681e6e: 0f 85 9c 00 00 00 jne 681f10 : * too. Fetch all xids from KnownAssignedXids that are lower than : * xid, since if xid is a subtransaction its parent will always have a : * lower value. Note we will collect both main and subXIDs here, but : * there's no help for it. : */ : if (TransactionIdPrecedesOrEquals(xid, procArray->lastOverflowedXid)) 0.00 : 681e74: 48 8b 05 ad b7 4f 00 mov 0x4fb7ad(%rip),%rax # b7d628 0.00 : 681e7b: 44 89 e7 mov %r12d,%edi 0.00 : 681e7e: 8b 70 1c mov 0x1c(%rax),%esi 0.00 : 681e81: e8 8a e1 e3 ff callq 4c0010 0.00 : 681e86: 84 c0 test %al,%al 0.00 : 681e88: 0f 85 1b 01 00 00 jne 681fa9 : nxids = KnownAssignedXidsGet(xids, xid); : } : : LWLockRelease(ProcArrayLock); 0.00 : 681e8e: 48 8b 3d 6b bb 4f 00 mov 0x4fbb6b(%rip),%rdi # b7da00 0.00 : 681e95: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 681e99: e8 02 d5 00 00 callq 68f3a0 : : /* : * If none of the relevant caches overflowed, we know the Xid is not : * running without even looking at pg_subtrans. : */ : if (nxids == 0) 0.00 : 681e9e: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 681ea1: 85 c0 test %eax,%eax 0.00 : 681ea3: 0f 84 40 fe ff ff je 681ce9 : * subtransaction, we want to say "not running" even though its parent may : * still be running. So first, check pg_clog to see if it's been aborted. : */ : xc_slow_answer_inc(); : : if (TransactionIdDidAbort(xid)) 0.00 : 681ea9: 44 89 e7 mov %r12d,%edi 0.00 : 681eac: e8 7f e3 e3 ff callq 4c0230 0.00 : 681eb1: 84 c0 test %al,%al 0.00 : 681eb3: 0f 85 30 fe ff ff jne 681ce9 : /* : * It isn't aborted, so check whether the transaction tree it belongs to : * is still running (or, more precisely, whether it was running when we : * held ProcArrayLock). : */ : topxid = SubTransGetTopmostTransaction(xid); 0.00 : 681eb9: 44 89 e7 mov %r12d,%edi 0.00 : 681ebc: e8 2f 4a e4 ff callq 4c68f0 : Assert(TransactionIdIsValid(topxid)); : if (!TransactionIdEquals(topxid, xid)) 0.00 : 681ec1: 41 39 c4 cmp %eax,%r12d : /* : * It isn't aborted, so check whether the transaction tree it belongs to : * is still running (or, more precisely, whether it was running when we : * held ProcArrayLock). : */ : topxid = SubTransGetTopmostTransaction(xid); 0.00 : 681ec4: 89 c6 mov %eax,%esi : Assert(TransactionIdIsValid(topxid)); : if (!TransactionIdEquals(topxid, xid)) 0.00 : 681ec6: 0f 84 1d fe ff ff je 681ce9 : { : for (i = 0; i < nxids; i++) 0.00 : 681ecc: 8b 45 bc mov -0x44(%rbp),%eax 0.00 : 681ecf: 85 c0 test %eax,%eax 0.00 : 681ed1: 0f 8e 12 fe ff ff jle 681ce9 : { : if (TransactionIdEquals(xids[i], topxid)) 0.00 : 681ed7: 48 8b 0d 42 b7 4f 00 mov 0x4fb742(%rip),%rcx # b7d620 0.00 : 681ede: 31 d2 xor %edx,%edx 0.00 : 681ee0: 3b 31 cmp (%rcx),%esi 0.00 : 681ee2: 75 17 jne 681efb 0.00 : 681ee4: eb 4a jmp 681f30 0.00 : 681ee6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 681eed: 00 00 00 0.00 : 681ef0: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 681ef3: 48 83 c1 04 add $0x4,%rcx 0.00 : 681ef7: 39 c6 cmp %eax,%esi 0.00 : 681ef9: 74 35 je 681f30 : */ : topxid = SubTransGetTopmostTransaction(xid); : Assert(TransactionIdIsValid(topxid)); : if (!TransactionIdEquals(topxid, xid)) : { : for (i = 0; i < nxids; i++) 0.00 : 681efb: 83 c2 01 add $0x1,%edx 0.00 : 681efe: 39 55 bc cmp %edx,-0x44(%rbp) 0.00 : 681f01: 7f ed jg 681ef0 0.00 : 681f03: e9 e1 fd ff ff jmpq 681ce9 0.00 : 681f08: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 681f0f: 00 : /* none of the PGXACT entries should have XIDs in hot standby mode */ : Assert(nxids == 0); : : if (KnownAssignedXidExists(xid)) : { : LWLockRelease(ProcArrayLock); 0.00 : 681f10: 48 8b 3d e9 ba 4f 00 mov 0x4fbae9(%rip),%rdi # b7da00 0.00 : 681f17: 48 83 ef 80 sub $0xffffffffffffff80,%rdi 0.00 : 681f1b: e8 80 d4 00 00 callq 68f3a0 0.00 : 681f20: b8 01 00 00 00 mov $0x1,%eax : return true; : } : } : : return false; : } 0.00 : 681f25: e9 c1 fd ff ff jmpq 681ceb 0.00 : 681f2a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : topxid = SubTransGetTopmostTransaction(xid); : Assert(TransactionIdIsValid(topxid)); : if (!TransactionIdEquals(topxid, xid)) : { : for (i = 0; i < nxids; i++) 0.00 : 681f30: b8 01 00 00 00 mov $0x1,%eax 0.00 : 681f35: e9 b1 fd ff ff jmpq 681ceb 0.00 : 681f3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * In hot standby mode, reserve enough space to hold all xids in the : * known-assigned list. If we later finish recovery, we no longer need : * the bigger array, but we don't bother to shrink it. : */ : int maxxids = RecoveryInProgress() ? TOTAL_MAX_CACHED_SUBXIDS : arrayP->maxProcs; 0.00 : 681f40: e8 7b b5 e4 ff callq 4cd4c0 0.00 : 681f45: 84 c0 test %al,%al 0.00 : 681f47: 74 57 je 681fa0 0.00 : 681f49: 8b 05 a1 71 4f 00 mov 0x4f71a1(%rip),%eax # b790f0 0.00 : 681f4f: 03 05 77 81 53 00 add 0x538177(%rip),%eax # bba0cc 0.00 : 681f55: 89 c2 mov %eax,%edx 0.00 : 681f57: c1 e2 06 shl $0x6,%edx 0.00 : 681f5a: 8d 04 02 lea (%rdx,%rax,1),%eax : : xids = (TransactionId *) malloc(maxxids * sizeof(TransactionId)); 0.00 : 681f5d: 48 63 f8 movslq %eax,%rdi 0.00 : 681f60: 48 c1 e7 02 shl $0x2,%rdi 0.00 : 681f64: e8 c7 76 de ff callq 469630 : if (xids == NULL) 0.00 : 681f69: 48 85 c0 test %rax,%rax : * known-assigned list. If we later finish recovery, we no longer need : * the bigger array, but we don't bother to shrink it. : */ : int maxxids = RecoveryInProgress() ? TOTAL_MAX_CACHED_SUBXIDS : arrayP->maxProcs; : : xids = (TransactionId *) malloc(maxxids * sizeof(TransactionId)); 0.00 : 681f6c: 48 89 05 ad b6 4f 00 mov %rax,0x4fb6ad(%rip) # b7d620 : if (xids == NULL) 0.00 : 681f73: 0f 85 bb fd ff ff jne 681d34 : ereport(ERROR, 0.00 : 681f79: 45 31 c0 xor %r8d,%r8d 0.00 : 681f7c: b9 20 b9 8a 00 mov $0x8ab920,%ecx 0.00 : 681f81: ba 8d 03 00 00 mov $0x38d,%edx 0.00 : 681f86: be 7a b5 8a 00 mov $0x8ab57a,%esi 0.00 : 681f8b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 681f90: e8 2b 8b 0f 00 callq 77aac0 0.00 : 681f95: 84 c0 test %al,%al 0.00 : 681f97: 75 32 jne 681fcb 0.00 : 681f99: e8 32 75 de ff callq 4694d0 0.00 : 681f9e: 66 90 xchg %ax,%ax : /* : * In hot standby mode, reserve enough space to hold all xids in the : * known-assigned list. If we later finish recovery, we no longer need : * the bigger array, but we don't bother to shrink it. : */ : int maxxids = RecoveryInProgress() ? TOTAL_MAX_CACHED_SUBXIDS : arrayP->maxProcs; 0.00 : 681fa0: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 681fa4: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 681fa7: eb b4 jmp 681f5d : * xid, since if xid is a subtransaction its parent will always have a : * lower value. Note we will collect both main and subXIDs here, but : * there's no help for it. : */ : if (TransactionIdPrecedesOrEquals(xid, procArray->lastOverflowedXid)) : nxids = KnownAssignedXidsGet(xids, xid); 0.00 : 681fa9: 48 8b 3d 70 b6 4f 00 mov 0x4fb670(%rip),%rdi # b7d620 : static int : KnownAssignedXidsGet(TransactionId *xarray, TransactionId xmax) : { : TransactionId xtmp = InvalidTransactionId; : : return KnownAssignedXidsGetAndSetXmin(xarray, &xtmp, xmax); 0.00 : 681fb0: 48 8d 75 d4 lea -0x2c(%rbp),%rsi 0.00 : 681fb4: 44 89 e2 mov %r12d,%edx : * Caller must hold ProcArrayLock in (at least) shared mode. : */ : static int : KnownAssignedXidsGet(TransactionId *xarray, TransactionId xmax) : { : TransactionId xtmp = InvalidTransactionId; 0.00 : 681fb7: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%rbp) : : return KnownAssignedXidsGetAndSetXmin(xarray, &xtmp, xmax); 0.00 : 681fbe: e8 3d e5 ff ff callq 680500 0.00 : 681fc3: 89 45 bc mov %eax,-0x44(%rbp) 0.00 : 681fc6: e9 c3 fe ff ff jmpq 681e8e : */ : int maxxids = RecoveryInProgress() ? TOTAL_MAX_CACHED_SUBXIDS : arrayP->maxProcs; : : xids = (TransactionId *) malloc(maxxids * sizeof(TransactionId)); : if (xids == NULL) : ereport(ERROR, 0.00 : 681fcb: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 681fd0: 31 c0 xor %eax,%eax 0.00 : 681fd2: e8 c9 a8 0f 00 callq 77c8a0 0.00 : 681fd7: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 681fdc: 89 c3 mov %eax,%ebx 0.00 : 681fde: e8 6d ad 0f 00 callq 77cd50 0.00 : 681fe3: 89 de mov %ebx,%esi 0.00 : 681fe5: 89 c7 mov %eax,%edi 0.00 : 681fe7: 31 c0 xor %eax,%eax 0.00 : 681fe9: e8 f2 85 0f 00 callq 77a5e0 0.00 : 681fee: eb a9 jmp 681f99 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 20.00 ??:0 12.50 ??:0 10.00 ??:0 10.00 ??:0 7.50 ??:0 5.00 ??:0 5.00 ??:0 5.00 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001fb0 <____nf_conntrack_find>: ??:0 27.50 : 1fb0: 41 55 push %r13 0.00 : 1fe2: 41 89 add %al,(%rax) 0.00 : 1fe4: f5 41 add %al,(%rax) 0.00 : 1fe6: 54 55 48 mov %rdi,%rax 0.00 : 1fe9: 89 fd 53 48 89 d3 89 add 0x710(%rbp),%rax 0.00 : 1ff0: ca 48 83 mov (%rax),%rax 10.00 : 1ff3: ec 08 8b mov %rax,%rcx ??:0 2.50 : 1ff6: 87 00 07 test $0x1,%cl 0.00 : 1ff9: 00 00 je 2016 0.00 : 1ffb: 48 0f af d0 49 jmpq 20e3 0.00 : 2000: 89 d4 49 c1 ec 20 e8 mov 0x730(%rbp),%rax 0.00 : 2007: 00 00 00 incl %gs:(%rax) 0.00 : 200a: 00 44 89 mov (%rcx),%rcx 0.00 : 200d: e6 48 8d test $0x1,%cl 0.00 : 2010: 3c f5 00 00 00 00 jne 20e0 0.00 : 2016: 48 89 mov (%rbx),%eax 0.00 : 2018: f8 48 03 cmp 0x10(%rcx),%eax ??:0 12.50 : 201b: 85 10 07 mov %rcx,%r12 0.00 : 201e: 00 00 jne 2000 ??:0 2.50 : 2020: 48 8b 00 mov 0x4(%rbx),%eax 0.00 : 2023: 48 89 c1 cmp 0x14(%rcx),%eax 0.00 : 2026: f6 c1 jne 2000 0.00 : 2028: 01 74 1b mov 0x8(%rbx),%eax 0.00 : 202b: e9 e3 00 cmp 0x18(%rcx),%eax 0.00 : 202e: 00 00 jne 2000 2.50 : 2030: 48 8b 85 mov 0xc(%rbx),%eax 0.00 : 2033: 30 07 00 cmp 0x1c(%rcx),%eax 0.00 : 2036: 00 65 jne 2000 2.50 : 2038: ff 00 48 mov 0x10(%rbx),%eax 0.00 : 203b: 8b 09 f6 cmp 0x20(%rcx),%eax 0.00 : 203e: c1 01 jne 2000 2.50 : 2040: 0f 85 ca mov 0x14(%rbx),%eax 0.00 : 2043: 00 00 00 cmp 0x24(%rcx),%eax 0.00 : 2046: 8b 03 jne 2000 2.50 : 2048: 3b 41 10 mov 0x18(%rbx),%eax 0.00 : 204b: 49 89 cc cmp 0x28(%rcx),%eax 0.00 : 204e: 75 e0 jne 2000 2.50 : 2050: 8b 43 04 mov 0x1c(%rbx),%eax 0.00 : 2053: 3b 41 14 cmp 0x2c(%rcx),%eax 0.00 : 2056: 75 d8 jne 2000 0.00 : 2058: 8b 43 08 mov 0x20(%rbx),%eax 0.00 : 205b: 3b 41 18 cmp 0x30(%rcx),%eax 0.00 : 205e: 75 d0 jne 2000 0.00 : 2060: 8b 43 0c mov 0x24(%rbx),%edx 0.00 : 2063: 3b 41 1c mov 0x34(%rcx),%eax 0.00 : 2066: 75 c8 8b 43 10 3b and $0xffffff,%edx 0.00 : 206c: 41 20 75 c0 8b and $0xffffff,%eax 2.50 : 2071: 43 14 cmp %eax,%edx 0.00 : 2073: 3b 41 jne 2000 0.00 : 2075: 24 75 b8 8b movzbl 0x37(%rcx),%edx 0.00 : 2079: 43 18 3b 41 28 75 b0 lea 0x0(,%rdx,8),%rax 0.00 : 2080: 8b 0.00 : 2081: 43 1c 3b sub %rdx,%rax 0.00 : 2084: 41 2c 75 a8 8b 43 20 lea 0x8(,%rax,8),%rax 0.00 : 208b: 3b 0.00 : 208c: 41 30 75 neg %rax 0.00 : 208f: a0 8b 53 24 8b 41 34 mov 0xe0(%rcx,%rax,1),%rdx 0.00 : 2096: 81 ??:0 7.50 : 2097: e2 ff ff test %rdx,%rdx 0.00 : 209a: ff 00 je 2100 0.00 : 209c: 25 ff ff ff movzbl 0x14(%rdx),%eax 20.00 : 20a0: 00 39 test %al,%al 0.00 : 20a2: c2 75 je 2100 0.00 : 20a4: 8b 0f b6 movzbl %al,%eax 0.00 : 20a7: 51 37 48 add %rdx,%rax 0.00 : 20aa: 8d 04 je 2100 0.00 : 20ac: d5 00 00 movzwl (%rax),%eax 0.00 : 20af: 00 00 48 29 cmp %ax,%r13w 0.00 : 20b3: d0 48 8d 04 c5 08 jne 2000 0.00 : 20b9: 00 00 00 48 f7 d8 48 mov 0x730(%rbp),%rax 0.00 : 20c0: 8b 94 01 e0 incl %gs:0x4(%rax) ??:0 2.50 : 20c4: 00 00 00 48 85 callq 20c9 0.00 : 20c9: d2 74 64 0f add $0x8,%rsp 0.00 : 20cd: b6 42 14 mov %r12,%rax 0.00 : 20d0: 84 pop %rbx 0.00 : 20d1: c0 pop %rbp 0.00 : 20d2: 74 5c pop %r12 0.00 : 20d4: 0f b6 pop %r13 0.00 : 20d6: c0 retq 0.00 : 20d7: 48 01 d0 74 54 0f b7 nopw 0x0(%rax,%rax,1) 0.00 : 20de: 00 66 0.00 : 20e0: 41 39 c5 mov %rcx,%rax 0.00 : 20e3: 0f 85 47 shr %rax 0.00 : 20e6: ff ff ff cmp %rax,%rsi 0.00 : 20e9: 48 8b je 2104 0.00 : 20eb: 85 30 07 00 00 65 ff mov 0x730(%rbp),%rax 0.00 : 20f2: 40 04 e8 00 incl %gs:0x3c(%rax) 0.00 : 20f6: 00 00 00 48 83 jmpq 1fe6 0.00 : 20fb: c4 08 4c 89 e0 nopl 0x0(%rax,%rax,1) 0.00 : 2100: 5b 5d xor %eax,%eax 0.00 : 2102: 41 5c jmp 20af 0.00 : 2104: 41 5d c3 66 0f callq 2109 0.00 : 2109: 1f 84 00 xor %r12d,%r12d 0.00 : 210c: 00 00 00 00 nopl 0x0(%rax) 0.00 : 2110: 48 89 jmp 20c9 : 2112: c8 48 d1 e8 48 39 c6 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 2119: 74 19 48 8b 85 30 07 : 2120: 00 00 push %r14 : 2122: 65 ff 40 mov %rdi,%r14 : 2125: 3c e9 push %r13 : 2127: eb fe ff mov %ecx,%r13d : 212a: ff 0f push %r12 : 212c: 1f push %rbp : 212d: 44 00 mov %esi,%ebp : 212f: 00 push %rbx : 2130: 31 c0 eb mov %rdx,%rbx : 2133: ab e8 00 00 movzwl %si,%r12d : 2137: 00 00 45 mov %r12d,%esi : 213a: 31 e4 0f mov %r13d,%ecx : 213d: 1f 40 00 mov %rbx,%rdx : 2140: eb b7 66 mov %r14,%rdi Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.35 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2990 16.13 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2990 16.13 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3042 12.90 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3029 9.68 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3035 6.45 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2990 6.45 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3042 6.45 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3029 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2990 3.23 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2996 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d3db0 : : * Returns true if a flush is still needed. (It may be that someone else : * is already in process of flushing that far, however.) : */ : bool : XLogNeedsFlush(XLogRecPtr record) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2990 3.23 : 4d3db0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2990 19.35 : 4d3db1: 48 89 e5 mov %rsp,%rbp 16.13 : 4d3db4: 53 push %rbx 6.45 : 4d3db5: 48 89 fb mov %rdi,%rbx 0.00 : 4d3db8: 48 83 ec 08 sub $0x8,%rsp : /* : * During recovery, we don't flush WAL but update minRecoveryPoint : * instead. So "needs flush" is taken to mean whether minRecoveryPoint : * would need to be updated. : */ : if (RecoveryInProgress()) 0.00 : 4d3dbc: e8 ff 96 ff ff callq 4cd4c0 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2996 3.23 : 4d3dc1: 84 c0 test %al,%al 0.00 : 4d3dc3: 74 2b je 4d3df0 : { : /* Quick exit if already known updated */ : if (record <= minRecoveryPoint || !updateMinRecoveryPoint) 0.00 : 4d3dc5: 48 39 1d 24 56 6a 00 cmp %rbx,0x6a5624(%rip) # b793f0 0.00 : 4d3dcc: 73 0d jae 4d3ddb 0.00 : 4d3dce: 80 3d 83 40 69 00 00 cmpb $0x0,0x694083(%rip) # b67e58 0.00 : 4d3dd5: 0f 85 85 00 00 00 jne 4d3e60 : return false; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); : LogwrtResult = XLogCtl->LogwrtResult; : SpinLockRelease(&XLogCtl->info_lck); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3035 9.68 : 4d3ddb: 31 d2 xor %edx,%edx : /* check again */ : if (record <= LogwrtResult.Flush) : return false; : : return true; : } 0.00 : 4d3ddd: 48 83 c4 08 add $0x8,%rsp 0.00 : 4d3de1: 89 d0 mov %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3042 6.45 : 4d3de3: 5b pop %rbx 0.00 : 4d3de4: c9 leaveq 16.13 : 4d3de5: c3 retq 0.00 : 4d3de6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d3ded: 00 00 00 : else : return true; : } : : /* Quick exit if already known flushed */ : if (record <= LogwrtResult.Flush) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3029 12.90 : 4d3df0: 48 3b 1d c1 53 6a 00 cmp 0x6a53c1(%rip),%rbx # b791b8 6.45 : 4d3df7: 76 e2 jbe 4d3ddb : return false; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d3df9: 48 8b 15 98 53 6a 00 mov 0x6a5398(%rip),%rdx # b79198 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d3e00: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d3e05: 48 81 c2 08 06 00 00 add $0x608,%rdx 0.00 : 4d3e0c: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d3e0f: 84 c0 test %al,%al 0.00 : 4d3e11: 0f 85 d1 00 00 00 jne 4d3ee8 : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d3e17: 48 8b 15 7a 53 6a 00 mov 0x6a537a(%rip),%rdx # b79198 0.00 : 4d3e1e: 48 8b 82 28 01 00 00 mov 0x128(%rdx),%rax 0.00 : 4d3e25: 48 89 05 84 53 6a 00 mov %rax,0x6a5384(%rip) # b791b0 0.00 : 4d3e2c: 48 8b 82 30 01 00 00 mov 0x130(%rdx),%rax 0.00 : 4d3e33: 48 89 05 7e 53 6a 00 mov %rax,0x6a537e(%rip) # b791b8 : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d3e3a: 48 8b 05 57 53 6a 00 mov 0x6a5357(%rip),%rax # b79198 0.00 : 4d3e41: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) 0.00 : 4d3e48: 48 3b 1d 69 53 6a 00 cmp 0x6a5369(%rip),%rbx # b791b8 0.00 : 4d3e4f: 0f 97 c2 seta %dl : /* check again */ : if (record <= LogwrtResult.Flush) : return false; : : return true; : } 0.00 : 4d3e52: 48 83 c4 08 add $0x8,%rsp 0.00 : 4d3e56: 89 d0 mov %edx,%eax 0.00 : 4d3e58: 5b pop %rbx 0.00 : 4d3e59: c9 leaveq 0.00 : 4d3e5a: c3 retq 0.00 : 4d3e5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* : * Update local copy of minRecoveryPoint. But if the lock is busy, : * just return a conservative guess. : */ : if (!LWLockConditionalAcquire(ControlFileLock, LW_SHARED)) 0.00 : 4d3e60: 48 8b 3d 99 9b 6a 00 mov 0x6a9b99(%rip),%rdi # b7da00 0.00 : 4d3e67: be 01 00 00 00 mov $0x1,%esi 0.00 : 4d3e6c: 48 81 c7 20 01 00 00 add $0x120,%rdi 0.00 : 4d3e73: e8 28 b1 1b 00 callq 68efa0 0.00 : 4d3e78: 84 c0 test %al,%al 0.00 : 4d3e7a: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4d3e7f: 0f 84 58 ff ff ff je 4d3ddd : return true; : minRecoveryPoint = ControlFile->minRecoveryPoint; 0.00 : 4d3e85: 48 8b 15 14 53 6a 00 mov 0x6a5314(%rip),%rdx # b791a0 : minRecoveryPointTLI = ControlFile->minRecoveryPointTLI; : LWLockRelease(ControlFileLock); 0.00 : 4d3e8c: 48 8b 3d 6d 9b 6a 00 mov 0x6a9b6d(%rip),%rdi # b7da00 : * Update local copy of minRecoveryPoint. But if the lock is busy, : * just return a conservative guess. : */ : if (!LWLockConditionalAcquire(ControlFileLock, LW_SHARED)) : return true; : minRecoveryPoint = ControlFile->minRecoveryPoint; 0.00 : 4d3e93: 48 8b 82 80 00 00 00 mov 0x80(%rdx),%rax : minRecoveryPointTLI = ControlFile->minRecoveryPointTLI; : LWLockRelease(ControlFileLock); 0.00 : 4d3e9a: 48 81 c7 20 01 00 00 add $0x120,%rdi : * Update local copy of minRecoveryPoint. But if the lock is busy, : * just return a conservative guess. : */ : if (!LWLockConditionalAcquire(ControlFileLock, LW_SHARED)) : return true; : minRecoveryPoint = ControlFile->minRecoveryPoint; 0.00 : 4d3ea1: 48 89 05 48 55 6a 00 mov %rax,0x6a5548(%rip) # b793f0 : minRecoveryPointTLI = ControlFile->minRecoveryPointTLI; 0.00 : 4d3ea8: 8b 82 88 00 00 00 mov 0x88(%rdx),%eax 0.00 : 4d3eae: 89 05 44 55 6a 00 mov %eax,0x6a5544(%rip) # b793f8 : LWLockRelease(ControlFileLock); 0.00 : 4d3eb4: e8 e7 b4 1b 00 callq 68f3a0 : * An invalid minRecoveryPoint means that we need to recover all the : * WAL, i.e., we're doing crash recovery. We never modify the control : * file's value in that case, so we can short-circuit future checks : * here too. : */ : if (minRecoveryPoint == 0) 0.00 : 4d3eb9: 48 8b 05 30 55 6a 00 mov 0x6a5530(%rip),%rax # b793f0 0.00 : 4d3ec0: 48 85 c0 test %rax,%rax 0.00 : 4d3ec3: 75 07 jne 4d3ecc : updateMinRecoveryPoint = false; 0.00 : 4d3ec5: c6 05 8c 3f 69 00 00 movb $0x0,0x693f8c(%rip) # b67e58 : : /* check again */ : if (record <= minRecoveryPoint || !updateMinRecoveryPoint) 0.00 : 4d3ecc: 48 39 c3 cmp %rax,%rbx 0.00 : 4d3ecf: 0f 86 06 ff ff ff jbe 4d3ddb 0.00 : 4d3ed5: 80 3d 7c 3f 69 00 00 cmpb $0x0,0x693f7c(%rip) # b67e58 0.00 : 4d3edc: 0f 95 c2 setne %dl 0.00 : 4d3edf: e9 f9 fe ff ff jmpq 4d3ddd 0.00 : 4d3ee4: 0f 1f 40 00 nopl 0x0(%rax) : /* Quick exit if already known flushed */ : if (record <= LogwrtResult.Flush) : return false; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d3ee8: 48 8b 3d a9 52 6a 00 mov 0x6a52a9(%rip),%rdi # b79198 0.00 : 4d3eef: ba d9 0b 00 00 mov $0xbd9,%edx 0.00 : 4d3ef4: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d3ef9: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d3f00: e8 3b c1 1b 00 callq 690040 0.00 : 4d3f05: e9 0d ff ff ff jmpq 4d3e17 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.81 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2324 12.90 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2322 6.45 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2347 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2304 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2309 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2347 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2347 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2350 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2397 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2398 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2396 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2396 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2398 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2401 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2402 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2420 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2324 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2333 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2405 3.23 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2338 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000054b8e0 : : static void : compute_scalar_stats(VacAttrStatsP stats, : AnalyzeAttrFetchFunc fetchfunc, : int samplerows, : double totalrows) : { 0.00 : 54b8e0: 55 push %rbp 0.00 : 54b8e1: 48 89 e5 mov %rsp,%rbp 0.00 : 54b8e4: 41 57 push %r15 0.00 : 54b8e6: 41 56 push %r14 0.00 : 54b8e8: 41 55 push %r13 0.00 : 54b8ea: 41 89 d5 mov %edx,%r13d 0.00 : 54b8ed: 41 54 push %r12 0.00 : 54b8ef: 53 push %rbx 0.00 : 54b8f0: 48 81 ec 08 01 00 00 sub $0x108,%rsp 0.00 : 54b8f7: 48 89 bd f0 fe ff ff mov %rdi,-0x110(%rbp) 0.00 : 54b8fe: 48 89 b5 e8 fe ff ff mov %rsi,-0x118(%rbp) 0.00 : 54b905: f2 0f 11 85 e0 fe ff movsd %xmm0,-0x120(%rbp) 0.00 : 54b90c: ff : int null_cnt = 0; : int nonnull_cnt = 0; : int toowide_cnt = 0; : double total_width = 0; : bool is_varlena = (!stats->attrtype->typbyval && : stats->attrtype->typlen == -1); 0.00 : 54b90d: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : 54b911: 8b 50 48 mov 0x48(%rax),%edx : bool is_varwidth = (!stats->attrtype->typbyval && : stats->attrtype->typlen < 0); 0.00 : 54b914: c6 45 8b 00 movb $0x0,-0x75(%rbp) : int null_cnt = 0; : int nonnull_cnt = 0; : int toowide_cnt = 0; : double total_width = 0; : bool is_varlena = (!stats->attrtype->typbyval && : stats->attrtype->typlen == -1); 0.00 : 54b918: 81 e2 ff ff ff 00 and $0xffffff,%edx 0.00 : 54b91e: 89 95 fc fe ff ff mov %edx,-0x104(%rbp) : bool is_varwidth = (!stats->attrtype->typbyval && : stats->attrtype->typlen < 0); 0.00 : 54b924: 80 78 4a 00 cmpb $0x0,0x4a(%rax) 0.00 : 54b928: 75 10 jne 54b93a 0.00 : 54b92a: 0f b7 40 48 movzwl 0x48(%rax),%eax 0.00 : 54b92e: f7 d0 not %eax 0.00 : 54b930: 66 c1 e8 0f shr $0xf,%ax 0.00 : 54b934: 83 f0 01 xor $0x1,%eax 0.00 : 54b937: 88 45 8b mov %al,-0x75(%rbp) : ScalarItem *values; : int values_cnt = 0; : int *tupnoLink; : ScalarMCVItem *track; : int track_cnt = 0; : int num_mcv = stats->attr->attstattarget; 0.00 : 54b93a: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 54b941: 48 8b 01 mov (%rcx),%rax 0.00 : 54b944: 8b 40 48 mov 0x48(%rax),%eax 0.00 : 54b947: 89 45 8c mov %eax,-0x74(%rbp) : int num_bins = stats->attr->attstattarget; : StdAnalyzeData *mystats = (StdAnalyzeData *) stats->extra_data; 0.00 : 54b94a: 48 8b 59 30 mov 0x30(%rcx),%rbx 0.00 : 54b94e: 48 89 9d 48 ff ff ff mov %rbx,-0xb8(%rbp) : : values = (ScalarItem *) palloc(samplerows * sizeof(ScalarItem)); 0.00 : 54b955: 49 63 dd movslq %r13d,%rbx 0.00 : 54b958: 48 89 df mov %rbx,%rdi 0.00 : 54b95b: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 54b95f: e8 ec d3 24 00 callq 798d50 : tupnoLink = (int *) palloc(samplerows * sizeof(int)); 0.00 : 54b964: 48 8d 3c 9d 00 00 00 lea 0x0(,%rbx,4),%rdi 0.00 : 54b96b: 00 : int track_cnt = 0; : int num_mcv = stats->attr->attstattarget; : int num_bins = stats->attr->attstattarget; : StdAnalyzeData *mystats = (StdAnalyzeData *) stats->extra_data; : : values = (ScalarItem *) palloc(samplerows * sizeof(ScalarItem)); 0.00 : 54b96c: 48 89 85 00 ff ff ff mov %rax,-0x100(%rbp) : tupnoLink = (int *) palloc(samplerows * sizeof(int)); 0.00 : 54b973: e8 d8 d3 24 00 callq 798d50 : track = (ScalarMCVItem *) palloc(num_mcv * sizeof(ScalarMCVItem)); 0.00 : 54b978: 48 63 7d 8c movslq -0x74(%rbp),%rdi : int num_mcv = stats->attr->attstattarget; : int num_bins = stats->attr->attstattarget; : StdAnalyzeData *mystats = (StdAnalyzeData *) stats->extra_data; : : values = (ScalarItem *) palloc(samplerows * sizeof(ScalarItem)); : tupnoLink = (int *) palloc(samplerows * sizeof(int)); 0.00 : 54b97c: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) : track = (ScalarMCVItem *) palloc(num_mcv * sizeof(ScalarMCVItem)); 0.00 : 54b983: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 54b987: e8 c4 d3 24 00 callq 798d50 : ssup.ssup_cxt = CurrentMemoryContext; : /* We always use the default collation for statistics */ : ssup.ssup_collation = DEFAULT_COLLATION_OID; : ssup.ssup_nulls_first = false; : : PrepareSortSupportFromOrderingOp(mystats->ltopr, &ssup); 0.00 : 54b98c: 48 8b b5 48 ff ff ff mov -0xb8(%rbp),%rsi : int num_bins = stats->attr->attstattarget; : StdAnalyzeData *mystats = (StdAnalyzeData *) stats->extra_data; : : values = (ScalarItem *) palloc(samplerows * sizeof(ScalarItem)); : tupnoLink = (int *) palloc(samplerows * sizeof(int)); : track = (ScalarMCVItem *) palloc(num_mcv * sizeof(ScalarMCVItem)); 0.00 : 54b993: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) : : memset(&ssup, 0, sizeof(ssup)); : ssup.ssup_cxt = CurrentMemoryContext; 0.00 : 54b99a: 48 8b 05 bf ee 66 00 mov 0x66eebf(%rip),%rax # bba860 : : values = (ScalarItem *) palloc(samplerows * sizeof(ScalarItem)); : tupnoLink = (int *) palloc(samplerows * sizeof(int)); : track = (ScalarMCVItem *) palloc(num_mcv * sizeof(ScalarMCVItem)); : : memset(&ssup, 0, sizeof(ssup)); 0.00 : 54b9a1: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 54b9a8: 00 0.00 : 54b9a9: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 54b9b0: 00 0.00 : 54b9b1: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 54b9b8: 00 : ssup.ssup_cxt = CurrentMemoryContext; : /* We always use the default collation for statistics */ : ssup.ssup_collation = DEFAULT_COLLATION_OID; 0.00 : 54b9b9: c7 45 98 64 00 00 00 movl $0x64,-0x68(%rbp) : ssup.ssup_nulls_first = false; 0.00 : 54b9c0: c6 45 9d 00 movb $0x0,-0x63(%rbp) : values = (ScalarItem *) palloc(samplerows * sizeof(ScalarItem)); : tupnoLink = (int *) palloc(samplerows * sizeof(int)); : track = (ScalarMCVItem *) palloc(num_mcv * sizeof(ScalarMCVItem)); : : memset(&ssup, 0, sizeof(ssup)); : ssup.ssup_cxt = CurrentMemoryContext; 0.00 : 54b9c4: 48 89 45 90 mov %rax,-0x70(%rbp) : /* We always use the default collation for statistics */ : ssup.ssup_collation = DEFAULT_COLLATION_OID; : ssup.ssup_nulls_first = false; : : PrepareSortSupportFromOrderingOp(mystats->ltopr, &ssup); 0.00 : 54b9c8: 8b 7e 08 mov 0x8(%rsi),%edi 0.00 : 54b9cb: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : 54b9cf: e8 5c 0f 25 00 callq 79c930 : : /* Initial scan to find sortable values */ : for (i = 0; i < samplerows; i++) 0.00 : 54b9d4: 45 85 ed test %r13d,%r13d 0.00 : 54b9d7: 0f 8e 79 07 00 00 jle 54c156 0.00 : 54b9dd: 45 31 e4 xor %r12d,%r12d 0.00 : 54b9e0: 45 31 f6 xor %r14d,%r14d 0.00 : 54b9e3: c7 85 28 ff ff ff 00 movl $0x0,-0xd8(%rbp) 0.00 : 54b9ea: 00 00 00 0.00 : 54b9ed: c7 85 2c ff ff ff 00 movl $0x0,-0xd4(%rbp) 0.00 : 54b9f4: 00 00 00 0.00 : 54b9f7: 48 c7 85 30 ff ff ff movq $0x0,-0xd0(%rbp) 0.00 : 54b9fe: 00 00 00 00 0.00 : 54ba02: 45 31 ff xor %r15d,%r15d 0.00 : 54ba05: eb 16 jmp 54ba1d 0.00 : 54ba07: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54ba0e: 00 00 : value = fetchfunc(stats, i, &isnull); : : /* Check for null/nonnull */ : if (isnull) : { : null_cnt++; 0.00 : 54ba10: 41 83 c6 01 add $0x1,%r14d : ssup.ssup_nulls_first = false; : : PrepareSortSupportFromOrderingOp(mystats->ltopr, &ssup); : : /* Initial scan to find sortable values */ : for (i = 0; i < samplerows; i++) 0.00 : 54ba14: 41 83 c4 01 add $0x1,%r12d 0.00 : 54ba18: 45 39 e5 cmp %r12d,%r13d 0.00 : 54ba1b: 7e 73 jle 54ba90 : { : Datum value; : bool isnull; : : vacuum_delay_point(); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2304 3.23 : 54ba1d: e8 3e 70 05 00 callq 5a2a60 : : value = fetchfunc(stats, i, &isnull); 0.00 : 54ba22: 48 8d 55 cf lea -0x31(%rbp),%rdx 0.00 : 54ba26: 44 89 e6 mov %r12d,%esi 0.00 : 54ba29: 48 8b bd f0 fe ff ff mov -0x110(%rbp),%rdi 0.00 : 54ba30: ff 95 e8 fe ff ff callq *-0x118(%rbp) : : /* Check for null/nonnull */ : if (isnull) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2309 3.23 : 54ba36: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : Datum value; : bool isnull; : : vacuum_delay_point(); : : value = fetchfunc(stats, i, &isnull); 0.00 : 54ba3a: 48 89 c3 mov %rax,%rbx : : /* Check for null/nonnull */ : if (isnull) 0.00 : 54ba3d: 75 d1 jne 54ba10 : { : null_cnt++; : continue; : } : nonnull_cnt++; 0.00 : 54ba3f: 83 85 28 ff ff ff 01 addl $0x1,-0xd8(%rbp) : * If it's a variable-width field, add up widths for average width : * calculation. Note that if the value is toasted, we use the toasted : * width. We don't bother with this calculation if it's a fixed-width : * type. : */ : if (is_varlena) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2322 12.90 : 54ba46: 81 bd fc fe ff ff ff cmpl $0xffff,-0x104(%rbp) 0.00 : 54ba4d: ff 00 00 0.00 : 54ba50: 0f 84 1a 07 00 00 je 54c170 : toowide_cnt++; : continue; : } : value = PointerGetDatum(PG_DETOAST_DATUM(value)); : } : else if (is_varwidth) 0.00 : 54ba56: 80 7d 8b 00 cmpb $0x0,-0x75(%rbp) 0.00 : 54ba5a: 0f 85 60 07 00 00 jne 54c1c0 : /* must be cstring */ : total_width += strlen(DatumGetCString(value)) + 1; : } : : /* Add it to the list to be sorted */ : values[values_cnt].value = value; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2347 6.45 : 54ba60: 49 63 d7 movslq %r15d,%rdx : ssup.ssup_nulls_first = false; : : PrepareSortSupportFromOrderingOp(mystats->ltopr, &ssup); : : /* Initial scan to find sortable values */ : for (i = 0; i < samplerows; i++) 0.00 : 54ba63: 41 83 c4 01 add $0x1,%r12d : /* must be cstring */ : total_width += strlen(DatumGetCString(value)) + 1; : } : : /* Add it to the list to be sorted */ : values[values_cnt].value = value; 0.00 : 54ba67: 48 89 d0 mov %rdx,%rax /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2347 3.23 : 54ba6a: 48 c1 e0 04 shl $0x4,%rax 0.00 : 54ba6e: 48 03 85 00 ff ff ff add -0x100(%rbp),%rax : values[values_cnt].tupno = values_cnt; 0.00 : 54ba75: 44 89 78 08 mov %r15d,0x8(%rax) : /* must be cstring */ : total_width += strlen(DatumGetCString(value)) + 1; : } : : /* Add it to the list to be sorted */ : values[values_cnt].value = value; 3.23 : 54ba79: 48 89 18 mov %rbx,(%rax) : values[values_cnt].tupno = values_cnt; : tupnoLink[values_cnt] = values_cnt; 0.00 : 54ba7c: 4c 8b 9d 40 ff ff ff mov -0xc0(%rbp),%r11 0.00 : 54ba83: 45 89 3c 93 mov %r15d,(%r11,%rdx,4) : values_cnt++; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2350 3.23 : 54ba87: 41 83 c7 01 add $0x1,%r15d : ssup.ssup_nulls_first = false; : : PrepareSortSupportFromOrderingOp(mystats->ltopr, &ssup); : : /* Initial scan to find sortable values */ : for (i = 0; i < samplerows; i++) 0.00 : 54ba8b: 45 39 e5 cmp %r12d,%r13d 0.00 : 54ba8e: 7f 8d jg 54ba1d : tupnoLink[values_cnt] = values_cnt; : values_cnt++; : } : : /* We can only compute real stats if we found some sortable values. */ : if (values_cnt > 0) 0.00 : 54ba90: 45 85 ff test %r15d,%r15d 0.00 : 54ba93: 0f 8e 9f 08 00 00 jle 54c338 : int slot_idx = 0; : CompareScalarsContext cxt; : : /* Sort the collected values */ : cxt.ssup = &ssup; : cxt.tupnoLink = tupnoLink; 0.00 : 54ba99: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx : qsort_arg((void *) values, values_cnt, sizeof(ScalarItem), 0.00 : 54baa0: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi : dups_cnt; : int slot_idx = 0; : CompareScalarsContext cxt; : : /* Sort the collected values */ : cxt.ssup = &ssup; 0.00 : 54baa7: 48 8d 45 90 lea -0x70(%rbp),%rax : cxt.tupnoLink = tupnoLink; : qsort_arg((void *) values, values_cnt, sizeof(ScalarItem), 0.00 : 54baab: 4c 8d 45 b0 lea -0x50(%rbp),%r8 0.00 : 54baaf: 49 63 f7 movslq %r15d,%rsi 0.00 : 54bab2: b9 c0 ae 54 00 mov $0x54aec0,%ecx : dups_cnt; : int slot_idx = 0; : CompareScalarsContext cxt; : : /* Sort the collected values */ : cxt.ssup = &ssup; 0.00 : 54bab7: 48 89 45 b0 mov %rax,-0x50(%rbp) : cxt.tupnoLink = tupnoLink; : qsort_arg((void *) values, values_cnt, sizeof(ScalarItem), 0.00 : 54babb: 31 db xor %ebx,%ebx : int slot_idx = 0; : CompareScalarsContext cxt; : : /* Sort the collected values */ : cxt.ssup = &ssup; : cxt.tupnoLink = tupnoLink; 0.00 : 54babd: 48 89 55 b8 mov %rdx,-0x48(%rbp) : qsort_arg((void *) values, values_cnt, sizeof(ScalarItem), 0.00 : 54bac1: ba 10 00 00 00 mov $0x10,%edx 0.00 : 54bac6: e8 65 17 26 00 callq 7ad230 0.00 : 54bacb: 48 c7 85 38 ff ff ff movq $0x0,-0xc8(%rbp) 0.00 : 54bad2: 00 00 00 00 0.00 : 54bad6: c7 85 54 ff ff ff 00 movl $0x0,-0xac(%rbp) 0.00 : 54badd: 00 00 00 0.00 : 54bae0: 45 31 d2 xor %r10d,%r10d 0.00 : 54bae3: 31 ff xor %edi,%edi 0.00 : 54bae5: 45 31 c9 xor %r9d,%r9d 0.00 : 54bae8: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 54baee: eb 11 jmp 54bb01 : break; : track[j].count = track[j - 1].count; : track[j].first = track[j - 1].first; : } : track[j].count = dups_cnt; : track[j].first = i + 1 - dups_cnt; 0.00 : 54baf0: 49 83 c1 01 add $0x1,%r9 0.00 : 54baf4: 41 83 c0 01 add $0x1,%r8d : */ : corr_xysum = 0; : ndistinct = 0; : nmultiple = 0; : dups_cnt = 0; : for (i = 0; i < values_cnt; i++) 0.00 : 54baf8: 41 39 cf cmp %ecx,%r15d 0.00 : 54bafb: 0f 8e ef 00 00 00 jle 54bbf0 : { : int tupno = values[i].tupno; 0.00 : 54bb01: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 54bb08: 4c 89 c8 mov %r9,%rax : : corr_xysum += ((double) i) * ((double) tupno); : dups_cnt++; : if (tupnoLink[tupno] == tupno) 0.00 : 54bb0b: 48 8b b5 40 ff ff ff mov -0xc0(%rbp),%rsi : ndistinct = 0; : nmultiple = 0; : dups_cnt = 0; : for (i = 0; i < values_cnt; i++) : { : int tupno = values[i].tupno; 0.00 : 54bb12: 48 c1 e0 04 shl $0x4,%rax : : corr_xysum += ((double) i) * ((double) tupno); 0.00 : 54bb16: f2 41 0f 2a c1 cvtsi2sd %r9d,%xmm0 : dups_cnt++; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2397 3.23 : 54bb1b: 83 c7 01 add $0x1,%edi : ndistinct = 0; : nmultiple = 0; : dups_cnt = 0; : for (i = 0; i < values_cnt; i++) : { : int tupno = values[i].tupno; 0.00 : 54bb1e: 8b 44 01 08 mov 0x8(%rcx,%rax,1),%eax : : corr_xysum += ((double) i) * ((double) tupno); : dups_cnt++; : if (tupnoLink[tupno] == tupno) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2398 3.23 : 54bb22: 44 89 c1 mov %r8d,%ecx : dups_cnt = 0; : for (i = 0; i < values_cnt; i++) : { : int tupno = values[i].tupno; : : corr_xysum += ((double) i) * ((double) tupno); 0.00 : 54bb25: f2 0f 2a c8 cvtsi2sd %eax,%xmm1 : dups_cnt++; : if (tupnoLink[tupno] == tupno) 0.00 : 54bb29: 48 63 d0 movslq %eax,%rdx : dups_cnt = 0; : for (i = 0; i < values_cnt; i++) : { : int tupno = values[i].tupno; : : corr_xysum += ((double) i) * ((double) tupno); 0.00 : 54bb2c: f2 0f 59 c1 mulsd %xmm1,%xmm0 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2396 3.23 : 54bb30: f2 0f 58 85 38 ff ff addsd -0xc8(%rbp),%xmm0 0.00 : 54bb37: ff 3.23 : 54bb38: f2 0f 11 85 38 ff ff movsd %xmm0,-0xc8(%rbp) 0.00 : 54bb3f: ff : dups_cnt++; : if (tupnoLink[tupno] == tupno) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2398 3.23 : 54bb40: 39 04 96 cmp %eax,(%rsi,%rdx,4) 0.00 : 54bb43: 75 ab jne 54baf0 : { : /* Reached end of duplicates of this value */ : ndistinct++; /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2401 3.23 : 54bb45: 83 85 54 ff ff ff 01 addl $0x1,-0xac(%rbp) : if (dups_cnt > 1) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2402 3.23 : 54bb4c: 83 ff 01 cmp $0x1,%edi 0.00 : 54bb4f: 0f 8e b0 06 00 00 jle 54c205 : { : nmultiple++; 0.00 : 54bb55: 41 83 c2 01 add $0x1,%r10d : if (track_cnt < num_mcv || 0.00 : 54bb59: 39 5d 8c cmp %ebx,-0x74(%rbp) 0.00 : 54bb5c: 0f 8e 8e 06 00 00 jle 54c1f0 : * slot. : */ : int j; : : if (track_cnt < num_mcv) : track_cnt++; 0.00 : 54bb62: 83 c3 01 add $0x1,%ebx : for (j = track_cnt - 1; j > 0; j--) 0.00 : 54bb65: 8d 4b ff lea -0x1(%rbx),%ecx 0.00 : 54bb68: 85 c9 test %ecx,%ecx 0.00 : 54bb6a: 48 63 d1 movslq %ecx,%rdx 0.00 : 54bb6d: 7e 53 jle 54bbc2 : { : if (dups_cnt <= track[j - 1].count) 0.00 : 54bb6f: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : 54bb76: 48 63 d1 movslq %ecx,%rdx 0.00 : 54bb79: 48 8d 74 d0 f8 lea -0x8(%rax,%rdx,8),%rsi 0.00 : 54bb7e: 8b 06 mov (%rsi),%eax 0.00 : 54bb80: 39 c7 cmp %eax,%edi 0.00 : 54bb82: 7f 21 jg 54bba5 0.00 : 54bb84: eb 3c jmp 54bbc2 0.00 : 54bb86: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 54bb8d: 00 00 00 0.00 : 54bb90: 4c 8b 9d 08 ff ff ff mov -0xf8(%rbp),%r11 0.00 : 54bb97: 48 63 d1 movslq %ecx,%rdx 0.00 : 54bb9a: 49 8d 74 d3 f8 lea -0x8(%r11,%rdx,8),%rsi /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2420 3.23 : 54bb9f: 8b 06 mov (%rsi),%eax 0.00 : 54bba1: 39 c7 cmp %eax,%edi 0.00 : 54bba3: 7e 1d jle 54bbc2 : break; : track[j].count = track[j - 1].count; 0.00 : 54bba5: 4c 8b 9d 08 ff ff ff mov -0xf8(%rbp),%r11 : */ : int j; : : if (track_cnt < num_mcv) : track_cnt++; : for (j = track_cnt - 1; j > 0; j--) 0.00 : 54bbac: 83 e9 01 sub $0x1,%ecx 0.00 : 54bbaf: 85 c9 test %ecx,%ecx : { : if (dups_cnt <= track[j - 1].count) : break; : track[j].count = track[j - 1].count; 0.00 : 54bbb1: 49 8d 14 d3 lea (%r11,%rdx,8),%rdx 0.00 : 54bbb5: 89 02 mov %eax,(%rdx) : track[j].first = track[j - 1].first; 0.00 : 54bbb7: 8b 46 04 mov 0x4(%rsi),%eax 0.00 : 54bbba: 89 42 04 mov %eax,0x4(%rdx) : */ : int j; : : if (track_cnt < num_mcv) : track_cnt++; : for (j = track_cnt - 1; j > 0; j--) 0.00 : 54bbbd: 7f d1 jg 54bb90 0.00 : 54bbbf: 48 63 d1 movslq %ecx,%rdx : if (dups_cnt <= track[j - 1].count) : break; : track[j].count = track[j - 1].count; : track[j].first = track[j - 1].first; : } : track[j].count = dups_cnt; 0.00 : 54bbc2: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : 54bbc9: 44 89 c1 mov %r8d,%ecx : track[j].first = i + 1 - dups_cnt; 0.00 : 54bbcc: 49 83 c1 01 add $0x1,%r9 : if (dups_cnt <= track[j - 1].count) : break; : track[j].count = track[j - 1].count; : track[j].first = track[j - 1].first; : } : track[j].count = dups_cnt; 0.00 : 54bbd0: 48 8d 14 d0 lea (%rax,%rdx,8),%rdx : track[j].first = i + 1 - dups_cnt; 0.00 : 54bbd4: 44 89 c0 mov %r8d,%eax 0.00 : 54bbd7: 41 83 c0 01 add $0x1,%r8d 0.00 : 54bbdb: 29 f8 sub %edi,%eax : if (dups_cnt <= track[j - 1].count) : break; : track[j].count = track[j - 1].count; : track[j].first = track[j - 1].first; : } : track[j].count = dups_cnt; 0.00 : 54bbdd: 89 3a mov %edi,(%rdx) : track[j].first = i + 1 - dups_cnt; 0.00 : 54bbdf: 31 ff xor %edi,%edi : */ : corr_xysum = 0; : ndistinct = 0; : nmultiple = 0; : dups_cnt = 0; : for (i = 0; i < values_cnt; i++) 0.00 : 54bbe1: 41 39 cf cmp %ecx,%r15d : break; : track[j].count = track[j - 1].count; : track[j].first = track[j - 1].first; : } : track[j].count = dups_cnt; : track[j].first = i + 1 - dups_cnt; 0.00 : 54bbe4: 89 42 04 mov %eax,0x4(%rdx) : */ : corr_xysum = 0; : ndistinct = 0; : nmultiple = 0; : dups_cnt = 0; : for (i = 0; i < values_cnt; i++) 0.00 : 54bbe7: 0f 8f 14 ff ff ff jg 54bb01 0.00 : 54bbed: 0f 1f 00 nopl (%rax) : } : } : : stats->stats_valid = true; : /* Do the simple null-frac and width stats */ : stats->stanullfrac = (double) null_cnt / (double) samplerows; 0.00 : 54bbf0: f2 41 0f 2a c5 cvtsi2sd %r13d,%xmm0 : } : dups_cnt = 0; : } : } : : stats->stats_valid = true; 0.00 : 54bbf5: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 54bbfc: c6 42 38 01 movb $0x1,0x38(%rdx) : /* Do the simple null-frac and width stats */ : stats->stanullfrac = (double) null_cnt / (double) samplerows; 0.00 : 54bc00: f2 0f 11 85 10 ff ff movsd %xmm0,-0xf0(%rbp) 0.00 : 54bc07: ff 0.00 : 54bc08: f2 41 0f 2a c6 cvtsi2sd %r14d,%xmm0 0.00 : 54bc0d: f2 0f 5e 85 10 ff ff divsd -0xf0(%rbp),%xmm0 0.00 : 54bc14: ff 0.00 : 54bc15: 66 0f 14 c0 unpcklpd %xmm0,%xmm0 0.00 : 54bc19: 66 0f 5a c8 cvtpd2ps %xmm0,%xmm1 0.00 : 54bc1d: f3 0f 11 4a 3c movss %xmm1,0x3c(%rdx) : if (is_varwidth) 0.00 : 54bc22: 80 7d 8b 00 cmpb $0x0,-0x75(%rbp) 0.00 : 54bc26: 0f 85 fc 05 00 00 jne 54c228 : stats->stawidth = total_width / (double) nonnull_cnt; : else : stats->stawidth = stats->attrtype->typlen; 0.00 : 54bc2c: 4c 8b 9d f0 fe ff ff mov -0x110(%rbp),%r11 : : if (nmultiple == 0) 0.00 : 54bc33: 45 85 d2 test %r10d,%r10d : /* Do the simple null-frac and width stats */ : stats->stanullfrac = (double) null_cnt / (double) samplerows; : if (is_varwidth) : stats->stawidth = total_width / (double) nonnull_cnt; : else : stats->stawidth = stats->attrtype->typlen; 0.00 : 54bc36: 49 8b 43 10 mov 0x10(%r11),%rax 0.00 : 54bc3a: 0f bf 40 48 movswl 0x48(%rax),%eax 0.00 : 54bc3e: 41 89 43 40 mov %eax,0x40(%r11) : : if (nmultiple == 0) 0.00 : 54bc42: 0f 85 0c 06 00 00 jne 54c254 : { : /* If we found no repeated values, assume it's a unique column */ : stats->stadistinct = -1.0; 0.00 : 54bc48: 48 8b 85 f0 fe ff ff mov -0x110(%rbp),%rax 0.00 : 54bc4f: c7 40 44 00 00 80 bf movl $0xbf800000,0x44(%rax) : * If we estimated the number of distinct values at more than 10% of : * the total row count (a very arbitrary limit), then assume that : * stadistinct should scale with the row count rather than be a fixed : * value. : */ : if (stats->stadistinct > 0.1 * totalrows) 0.00 : 54bc56: f2 0f 10 85 e0 fe ff movsd -0x120(%rbp),%xmm0 0.00 : 54bc5d: ff 0.00 : 54bc5e: 4c 8b 9d f0 fe ff ff mov -0x110(%rbp),%r11 0.00 : 54bc65: f2 0f 59 05 83 bd 32 mulsd 0x32bd83(%rip),%xmm0 # 8779f0 <__func__.20024+0x30> 0.00 : 54bc6c: 00 0.00 : 54bc6d: f3 41 0f 10 53 44 movss 0x44(%r11),%xmm2 0.00 : 54bc73: 0f 14 d2 unpcklps %xmm2,%xmm2 0.00 : 54bc76: 0f 5a ca cvtps2pd %xmm2,%xmm1 0.00 : 54bc79: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 54bc7d: 76 27 jbe 54bca6 : stats->stadistinct = -(stats->stadistinct / totalrows); 0.00 : 54bc7f: f2 0f 5e 8d e0 fe ff divsd -0x120(%rbp),%xmm1 0.00 : 54bc86: ff 0.00 : 54bc87: f3 0f 10 05 91 bd 32 movss 0x32bd91(%rip),%xmm0 # 877a20 <__func__.20024+0x60> 0.00 : 54bc8e: 00 0.00 : 54bc8f: 48 8b 85 f0 fe ff ff mov -0x110(%rbp),%rax 0.00 : 54bc96: 66 0f 14 c9 unpcklpd %xmm1,%xmm1 0.00 : 54bc9a: 66 0f 5a d1 cvtpd2ps %xmm1,%xmm2 0.00 : 54bc9e: 0f 57 d0 xorps %xmm0,%xmm2 0.00 : 54bca1: f3 0f 11 50 44 movss %xmm2,0x44(%rax) : * number of histogram bins; such values might otherwise cause us to : * emit duplicate histogram bin boundaries. (We might end up with : * duplicate histogram entries anyway, if the distribution is skewed; : * but we prefer to treat such values as MCVs if at all possible.) : */ : if (track_cnt == ndistinct && toowide_cnt == 0 && 0.00 : 54bca6: 3b 9d 54 ff ff ff cmp -0xac(%rbp),%ebx 0.00 : 54bcac: 0f 84 4e 07 00 00 je 54c400 : /* Track list includes all values seen, and all will fit */ : num_mcv = track_cnt; : } : else : { : double ndistinct = stats->stadistinct; 0.00 : 54bcb2: 0f 14 d2 unpcklps %xmm2,%xmm2 : double avgcount, : mincount, : maxmincount; : : if (ndistinct < 0) 0.00 : 54bcb5: 66 0f 57 c0 xorpd %xmm0,%xmm0 : /* Track list includes all values seen, and all will fit */ : num_mcv = track_cnt; : } : else : { : double ndistinct = stats->stadistinct; 0.00 : 54bcb9: 0f 5a ca cvtps2pd %xmm2,%xmm1 : double avgcount, : mincount, : maxmincount; : : if (ndistinct < 0) 0.00 : 54bcbc: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 54bcc0: 0f 87 aa 07 00 00 ja 54c470 : ndistinct = -ndistinct * totalrows; : /* estimate # of occurrences in sample of a typical value */ : avgcount = (double) samplerows / ndistinct; : /* set minimum threshold count to store a value */ : mincount = avgcount * 1.25; 0.00 : 54bcc6: f2 0f 10 95 10 ff ff movsd -0xf0(%rbp),%xmm2 0.00 : 54bccd: ff : mincount = 2; : /* don't let threshold exceed 1/K, however */ : maxmincount = (double) samplerows / (double) num_bins; : if (mincount > maxmincount) : mincount = maxmincount; : if (num_mcv > track_cnt) 0.00 : 54bcce: 39 5d 8c cmp %ebx,-0x74(%rbp) : ndistinct = -ndistinct * totalrows; : /* estimate # of occurrences in sample of a typical value */ : avgcount = (double) samplerows / ndistinct; : /* set minimum threshold count to store a value */ : mincount = avgcount * 1.25; : if (mincount < 2) 0.00 : 54bcd1: f2 0f 10 05 7f 69 26 movsd 0x26697f(%rip),%xmm0 # 7b2658 <__func__.14520+0x17> 0.00 : 54bcd8: 00 : mincount = 2; : /* don't let threshold exceed 1/K, however */ : maxmincount = (double) samplerows / (double) num_bins; : if (mincount > maxmincount) : mincount = maxmincount; : if (num_mcv > track_cnt) 0.00 : 54bcd9: 44 8b 75 8c mov -0x74(%rbp),%r14d : if (ndistinct < 0) : ndistinct = -ndistinct * totalrows; : /* estimate # of occurrences in sample of a typical value */ : avgcount = (double) samplerows / ndistinct; : /* set minimum threshold count to store a value */ : mincount = avgcount * 1.25; 0.00 : 54bcdd: f2 0f 5e d1 divsd %xmm1,%xmm2 : mincount = 2; : /* don't let threshold exceed 1/K, however */ : maxmincount = (double) samplerows / (double) num_bins; : if (mincount > maxmincount) : mincount = maxmincount; : if (num_mcv > track_cnt) 0.00 : 54bce1: 44 0f 4f f3 cmovg %ebx,%r14d : num_mcv = track_cnt; : for (i = 0; i < num_mcv; i++) 0.00 : 54bce5: 45 85 f6 test %r14d,%r14d : if (ndistinct < 0) : ndistinct = -ndistinct * totalrows; : /* estimate # of occurrences in sample of a typical value */ : avgcount = (double) samplerows / ndistinct; : /* set minimum threshold count to store a value */ : mincount = avgcount * 1.25; 0.00 : 54bce8: 66 0f 28 ca movapd %xmm2,%xmm1 : if (mincount < 2) : mincount = 2; : /* don't let threshold exceed 1/K, however */ : maxmincount = (double) samplerows / (double) num_bins; 0.00 : 54bcec: f2 0f 10 95 10 ff ff movsd -0xf0(%rbp),%xmm2 0.00 : 54bcf3: ff : if (ndistinct < 0) : ndistinct = -ndistinct * totalrows; : /* estimate # of occurrences in sample of a typical value */ : avgcount = (double) samplerows / ndistinct; : /* set minimum threshold count to store a value */ : mincount = avgcount * 1.25; 0.00 : 54bcf4: f2 0f 59 0d fc bc 32 mulsd 0x32bcfc(%rip),%xmm1 # 8779f8 <__func__.20024+0x38> 0.00 : 54bcfb: 00 : if (mincount < 2) 0.00 : 54bcfc: f2 0f 5f c1 maxsd %xmm1,%xmm0 0.00 : 54bd00: 66 0f 28 c8 movapd %xmm0,%xmm1 : mincount = 2; : /* don't let threshold exceed 1/K, however */ : maxmincount = (double) samplerows / (double) num_bins; 0.00 : 54bd04: f2 0f 2a 45 8c cvtsi2sdl -0x74(%rbp),%xmm0 0.00 : 54bd09: f2 0f 5e d0 divsd %xmm0,%xmm2 0.00 : 54bd0d: 66 0f 28 c2 movapd %xmm2,%xmm0 : if (mincount > maxmincount) 0.00 : 54bd11: f2 0f 5d c1 minsd %xmm1,%xmm0 0.00 : 54bd15: 66 0f 28 c8 movapd %xmm0,%xmm1 : mincount = maxmincount; : if (num_mcv > track_cnt) : num_mcv = track_cnt; : for (i = 0; i < num_mcv; i++) 0.00 : 54bd19: 0f 8e bc 07 00 00 jle 54c4db : { : if (track[i].count < mincount) 0.00 : 54bd1f: 4c 8b 9d 08 ff ff ff mov -0xf8(%rbp),%r11 0.00 : 54bd26: 31 c0 xor %eax,%eax 0.00 : 54bd28: f2 41 0f 2a 03 cvtsi2sdl (%r11),%xmm0 0.00 : 54bd2d: 4c 89 da mov %r11,%rdx 0.00 : 54bd30: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 54bd34: 76 1d jbe 54bd53 0.00 : 54bd36: e9 9d 07 00 00 jmpq 54c4d8 0.00 : 54bd3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54bd40: f2 0f 2a 42 08 cvtsi2sdl 0x8(%rdx),%xmm0 0.00 : 54bd45: 48 83 c2 08 add $0x8,%rdx 0.00 : 54bd49: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 54bd4d: 0f 87 a5 06 00 00 ja 54c3f8 : maxmincount = (double) samplerows / (double) num_bins; : if (mincount > maxmincount) : mincount = maxmincount; : if (num_mcv > track_cnt) : num_mcv = track_cnt; : for (i = 0; i < num_mcv; i++) 0.00 : 54bd53: 83 c0 01 add $0x1,%eax 0.00 : 54bd56: 41 39 c6 cmp %eax,%r14d 0.00 : 54bd59: 7f e5 jg 54bd40 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 54bd5b: 48 8b 05 fe ea 66 00 mov 0x66eafe(%rip),%rax # bba860 : : CurrentMemoryContext = context; 0.00 : 54bd62: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx : Datum *mcv_values; : float4 *mcv_freqs; : : /* Must copy the target values into anl_context */ : old_context = MemoryContextSwitchTo(stats->anl_context); : mcv_values = (Datum *) palloc(num_mcv * sizeof(Datum)); 0.00 : 54bd69: 49 63 de movslq %r14d,%rbx 0.00 : 54bd6c: 48 8d 3c dd 00 00 00 lea 0x0(,%rbx,8),%rdi 0.00 : 54bd73: 00 : mcv_freqs = (float4 *) palloc(num_mcv * sizeof(float4)); 0.00 : 54bd74: 48 c1 e3 02 shl $0x2,%rbx 0.00 : 54bd78: 45 31 e4 xor %r12d,%r12d : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 54bd7b: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) : : CurrentMemoryContext = context; 0.00 : 54bd82: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 54bd86: 48 89 05 d3 ea 66 00 mov %rax,0x66ead3(%rip) # bba860 : Datum *mcv_values; : float4 *mcv_freqs; : : /* Must copy the target values into anl_context */ : old_context = MemoryContextSwitchTo(stats->anl_context); : mcv_values = (Datum *) palloc(num_mcv * sizeof(Datum)); 0.00 : 54bd8d: e8 be cf 24 00 callq 798d50 : mcv_freqs = (float4 *) palloc(num_mcv * sizeof(float4)); 0.00 : 54bd92: 48 89 df mov %rbx,%rdi : Datum *mcv_values; : float4 *mcv_freqs; : : /* Must copy the target values into anl_context */ : old_context = MemoryContextSwitchTo(stats->anl_context); : mcv_values = (Datum *) palloc(num_mcv * sizeof(Datum)); 0.00 : 54bd95: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp) : mcv_freqs = (float4 *) palloc(num_mcv * sizeof(float4)); 0.00 : 54bd9c: 31 db xor %ebx,%ebx 0.00 : 54bd9e: e8 ad cf 24 00 callq 798d50 0.00 : 54bda3: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 54bdaa: 49 89 c5 mov %rax,%r13 0.00 : 54bdad: 0f 1f 00 nopl (%rax) : for (i = 0; i < num_mcv; i++) : { : mcv_values[i] = datumCopy(values[track[i].first].value, 0.00 : 54bdb0: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 54bdb7: 4c 8b 9d 08 ff ff ff mov -0xf8(%rbp),%r11 : : /* Must copy the target values into anl_context */ : old_context = MemoryContextSwitchTo(stats->anl_context); : mcv_values = (Datum *) palloc(num_mcv * sizeof(Datum)); : mcv_freqs = (float4 *) palloc(num_mcv * sizeof(float4)); : for (i = 0; i < num_mcv; i++) 0.00 : 54bdbe: 41 83 c4 01 add $0x1,%r12d : { : mcv_values[i] = datumCopy(values[track[i].first].value, 0.00 : 54bdc2: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 54bdc6: 48 8b 8d 00 ff ff ff mov -0x100(%rbp),%rcx 0.00 : 54bdcd: 0f be 70 4a movsbl 0x4a(%rax),%esi 0.00 : 54bdd1: 0f bf 50 48 movswl 0x48(%rax),%edx 0.00 : 54bdd5: 49 63 44 1b 04 movslq 0x4(%r11,%rbx,1),%rax 0.00 : 54bdda: 48 c1 e0 04 shl $0x4,%rax 0.00 : 54bdde: 48 8b 3c 01 mov (%rcx,%rax,1),%rdi 0.00 : 54bde2: e8 89 41 18 00 callq 6cff70 0.00 : 54bde7: 48 8b b5 18 ff ff ff mov -0xe8(%rbp),%rsi 0.00 : 54bdee: 48 89 04 1e mov %rax,(%rsi,%rbx,1) : stats->attrtype->typbyval, : stats->attrtype->typlen); : mcv_freqs[i] = (double) track[i].count / (double) samplerows; 0.00 : 54bdf2: 4c 8b 9d 08 ff ff ff mov -0xf8(%rbp),%r11 0.00 : 54bdf9: f2 41 0f 2a 04 1b cvtsi2sdl (%r11,%rbx,1),%xmm0 0.00 : 54bdff: f2 0f 5e 85 10 ff ff divsd -0xf0(%rbp),%xmm0 0.00 : 54be06: ff : : /* Must copy the target values into anl_context */ : old_context = MemoryContextSwitchTo(stats->anl_context); : mcv_values = (Datum *) palloc(num_mcv * sizeof(Datum)); : mcv_freqs = (float4 *) palloc(num_mcv * sizeof(float4)); : for (i = 0; i < num_mcv; i++) 0.00 : 54be07: 48 83 c3 08 add $0x8,%rbx : { : mcv_values[i] = datumCopy(values[track[i].first].value, : stats->attrtype->typbyval, : stats->attrtype->typlen); : mcv_freqs[i] = (double) track[i].count / (double) samplerows; 0.00 : 54be0b: 66 0f 14 c0 unpcklpd %xmm0,%xmm0 0.00 : 54be0f: 66 0f 5a c0 cvtpd2ps %xmm0,%xmm0 0.00 : 54be13: f3 41 0f 11 45 00 movss %xmm0,0x0(%r13) : : /* Must copy the target values into anl_context */ : old_context = MemoryContextSwitchTo(stats->anl_context); : mcv_values = (Datum *) palloc(num_mcv * sizeof(Datum)); : mcv_freqs = (float4 *) palloc(num_mcv * sizeof(float4)); : for (i = 0; i < num_mcv; i++) 0.00 : 54be19: 49 83 c5 04 add $0x4,%r13 0.00 : 54be1d: 45 39 e6 cmp %r12d,%r14d 0.00 : 54be20: 7f 8e jg 54bdb0 0.00 : 54be22: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax : stats->attrtype->typlen); : mcv_freqs[i] = (double) track[i].count / (double) samplerows; : } : MemoryContextSwitchTo(old_context); : : stats->stakind[slot_idx] = STATISTIC_KIND_MCV; 0.00 : 54be29: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 54be30: 48 89 05 29 ea 66 00 mov %rax,0x66ea29(%rip) # bba860 0.00 : 54be37: 66 c7 42 48 01 00 movw $0x1,0x48(%rdx) : stats->staop[slot_idx] = mystats->eqopr; 0.00 : 54be3d: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 54be44: 8b 01 mov (%rcx),%eax 0.00 : 54be46: 89 42 54 mov %eax,0x54(%rdx) : stats->stanumbers[slot_idx] = mcv_freqs; 0.00 : 54be49: 48 8b 9d 68 ff ff ff mov -0x98(%rbp),%rbx : stats->numnumbers[slot_idx] = num_mcv; 0.00 : 54be50: 44 89 72 68 mov %r14d,0x68(%rdx) : stats->stavalues[slot_idx] = mcv_values; 0.00 : 54be54: 48 89 b2 c0 00 00 00 mov %rsi,0xc0(%rdx) : stats->numvalues[slot_idx] = num_mcv; 0.00 : 54be5b: 44 89 b2 a8 00 00 00 mov %r14d,0xa8(%rdx) : } : MemoryContextSwitchTo(old_context); : : stats->stakind[slot_idx] = STATISTIC_KIND_MCV; : stats->staop[slot_idx] = mystats->eqopr; : stats->stanumbers[slot_idx] = mcv_freqs; 0.00 : 54be62: 48 89 9a 80 00 00 00 mov %rbx,0x80(%rdx) : stats->numnumbers[slot_idx] = num_mcv; : stats->stavalues[slot_idx] = mcv_values; : stats->numvalues[slot_idx] = num_mcv; 0.00 : 54be69: c7 85 5c ff ff ff 01 movl $0x1,-0xa4(%rbp) 0.00 : 54be70: 00 00 00 : /* : * Generate a histogram slot entry if there are at least two distinct : * values not accounted for in the MCV list. (This ensures the : * histogram won't collapse to empty or a singleton.) : */ : num_hist = ndistinct - num_mcv; 0.00 : 54be73: 8b b5 54 ff ff ff mov -0xac(%rbp),%esi : if (num_hist > num_bins) : num_hist = num_bins + 1; 0.00 : 54be79: 8b 45 8c mov -0x74(%rbp),%eax : /* : * Generate a histogram slot entry if there are at least two distinct : * values not accounted for in the MCV list. (This ensures the : * histogram won't collapse to empty or a singleton.) : */ : num_hist = ndistinct - num_mcv; 0.00 : 54be7c: 44 29 f6 sub %r14d,%esi : if (num_hist > num_bins) : num_hist = num_bins + 1; 0.00 : 54be7f: 83 c0 01 add $0x1,%eax 0.00 : 54be82: 39 75 8c cmp %esi,-0x74(%rbp) 0.00 : 54be85: 0f 4d c6 cmovge %esi,%eax 0.00 : 54be88: 89 85 58 ff ff ff mov %eax,-0xa8(%rbp) : if (num_hist >= 2) 0.00 : 54be8e: 83 e8 01 sub $0x1,%eax 0.00 : 54be91: 0f 8e e3 01 00 00 jle 54c07a : posfrac, : delta, : deltafrac; : : /* Sort the MCV items into position order to speed next loop */ : qsort((void *) track, num_mcv, 0.00 : 54be97: 48 8b bd 08 ff ff ff mov -0xf8(%rbp),%rdi 0.00 : 54be9e: 49 63 f6 movslq %r14d,%rsi 0.00 : 54bea1: b9 50 af 54 00 mov $0x54af50,%ecx 0.00 : 54bea6: ba 08 00 00 00 mov $0x8,%edx : * : * Note we destroy the values[] array here... but we don't need it : * for anything more. We do, however, still need values_cnt. : * nvals will be the number of remaining entries in values[]. : */ : if (num_mcv > 0) 0.00 : 54beab: 44 89 fb mov %r15d,%ebx : posfrac, : delta, : deltafrac; : : /* Sort the MCV items into position order to speed next loop */ : qsort((void *) track, num_mcv, 0.00 : 54beae: e8 bd 0d 26 00 callq 7acc70 : * : * Note we destroy the values[] array here... but we don't need it : * for anything more. We do, however, still need values_cnt. : * nvals will be the number of remaining entries in values[]. : */ : if (num_mcv > 0) 0.00 : 54beb3: 45 85 f6 test %r14d,%r14d 0.00 : 54beb6: 0f 8e 7d 00 00 00 jle 54bf39 0.00 : 54bebc: 31 db xor %ebx,%ebx 0.00 : 54bebe: 45 31 ed xor %r13d,%r13d 0.00 : 54bec1: c7 45 84 00 00 00 00 movl $0x0,-0x7c(%rbp) 0.00 : 54bec8: eb 2d jmp 54bef7 0.00 : 54beca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : int ncopy; : : if (j < num_mcv) : { : int first = track[j].first; 0.00 : 54bed0: 48 63 45 84 movslq -0x7c(%rbp),%rax 0.00 : 54bed4: 4c 8b 9d 08 ff ff ff mov -0xf8(%rbp),%r11 0.00 : 54bedb: 49 8d 14 c3 lea (%r11,%rax,8),%rdx 0.00 : 54bedf: 8b 42 04 mov 0x4(%rdx),%eax : : if (src >= first) 0.00 : 54bee2: 39 d8 cmp %ebx,%eax 0.00 : 54bee4: 0f 8f fe 04 00 00 jg 54c3e8 : { : /* advance past this MCV item */ : src = first + track[j].count; 0.00 : 54beea: 89 c3 mov %eax,%ebx 0.00 : 54beec: 03 1a add (%rdx),%ebx : j++; 0.00 : 54beee: 83 45 84 01 addl $0x1,-0x7c(%rbp) : dest; : int j; : : src = dest = 0; : j = 0; /* index of next interesting MCV item */ : while (src < values_cnt) 0.00 : 54bef2: 41 39 df cmp %ebx,%r15d 0.00 : 54bef5: 7e 3f jle 54bf36 : { : int ncopy; : : if (j < num_mcv) 0.00 : 54bef7: 44 3b 75 84 cmp -0x7c(%rbp),%r14d 0.00 : 54befb: 7f d3 jg 54bed0 : continue; : } : ncopy = first - src; : } : else : ncopy = values_cnt - src; 0.00 : 54befd: 45 89 fc mov %r15d,%r12d 0.00 : 54bf00: 41 29 dc sub %ebx,%r12d : memmove(&values[dest], &values[src], 0.00 : 54bf03: 48 63 f3 movslq %ebx,%rsi 0.00 : 54bf06: 49 63 fd movslq %r13d,%rdi 0.00 : 54bf09: 49 63 d4 movslq %r12d,%rdx 0.00 : 54bf0c: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 54bf10: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 54bf14: 48 03 b5 00 ff ff ff add -0x100(%rbp),%rsi 0.00 : 54bf1b: 48 03 bd 00 ff ff ff add -0x100(%rbp),%rdi 0.00 : 54bf22: 48 c1 e2 04 shl $0x4,%rdx : ncopy * sizeof(ScalarItem)); : src += ncopy; 0.00 : 54bf26: 44 01 e3 add %r12d,%ebx : dest += ncopy; 0.00 : 54bf29: 45 01 e5 add %r12d,%r13d : } : ncopy = first - src; : } : else : ncopy = values_cnt - src; : memmove(&values[dest], &values[src], 0.00 : 54bf2c: e8 ff dc f1 ff callq 469c30 : dest; : int j; : : src = dest = 0; : j = 0; /* index of next interesting MCV item */ : while (src < values_cnt) 0.00 : 54bf31: 41 39 df cmp %ebx,%r15d 0.00 : 54bf34: 7f c1 jg 54bef7 0.00 : 54bf36: 44 89 eb mov %r13d,%ebx : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 54bf39: 48 8b 05 20 e9 66 00 mov 0x66e920(%rip),%rax # bba860 : : CurrentMemoryContext = context; 0.00 : 54bf40: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx : * the stats target is more than a couple thousand. Instead we : * add (nvals - 1) / (num_hist - 1) to pos at each step, tracking : * the integral and fractional parts of the sum separately. : */ : delta = (nvals - 1) / (num_hist - 1); : deltafrac = (nvals - 1) % (num_hist - 1); 0.00 : 54bf47: 45 31 ed xor %r13d,%r13d : nvals = values_cnt; : Assert(nvals >= num_hist); : : /* Must copy the target values into anl_context */ : old_context = MemoryContextSwitchTo(stats->anl_context); : hist_values = (Datum *) palloc(num_hist * sizeof(Datum)); 0.00 : 54bf4a: 48 63 bd 58 ff ff ff movslq -0xa8(%rbp),%rdi : * the stats target is more than a couple thousand. Instead we : * add (nvals - 1) / (num_hist - 1) to pos at each step, tracking : * the integral and fractional parts of the sum separately. : */ : delta = (nvals - 1) / (num_hist - 1); : deltafrac = (nvals - 1) % (num_hist - 1); 0.00 : 54bf51: 45 31 e4 xor %r12d,%r12d : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 54bf54: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : : CurrentMemoryContext = context; 0.00 : 54bf5b: 48 8b 42 18 mov 0x18(%rdx),%rax : nvals = values_cnt; : Assert(nvals >= num_hist); : : /* Must copy the target values into anl_context */ : old_context = MemoryContextSwitchTo(stats->anl_context); : hist_values = (Datum *) palloc(num_hist * sizeof(Datum)); 0.00 : 54bf5f: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 54bf63: 48 89 05 f6 e8 66 00 mov %rax,0x66e8f6(%rip) # bba860 0.00 : 54bf6a: e8 e1 cd 24 00 callq 798d50 : * computing that subscript directly risks integer overflow when : * the stats target is more than a couple thousand. Instead we : * add (nvals - 1) / (num_hist - 1) to pos at each step, tracking : * the integral and fractional parts of the sum separately. : */ : delta = (nvals - 1) / (num_hist - 1); 0.00 : 54bf6f: 8d 4b ff lea -0x1(%rbx),%ecx 0.00 : 54bf72: 8b 9d 58 ff ff ff mov -0xa8(%rbp),%ebx : nvals = values_cnt; : Assert(nvals >= num_hist); : : /* Must copy the target values into anl_context */ : old_context = MemoryContextSwitchTo(stats->anl_context); : hist_values = (Datum *) palloc(num_hist * sizeof(Datum)); 0.00 : 54bf78: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : posfrac += deltafrac; : if (posfrac >= (num_hist - 1)) : { : /* fractional part exceeds 1, carry to integer part */ : pos++; : posfrac -= (num_hist - 1); 0.00 : 54bf7f: c7 85 d4 fe ff ff 01 movl $0x1,-0x12c(%rbp) 0.00 : 54bf86: 00 00 00 : * the stats target is more than a couple thousand. Instead we : * add (nvals - 1) / (num_hist - 1) to pos at each step, tracking : * the integral and fractional parts of the sum separately. : */ : delta = (nvals - 1) / (num_hist - 1); : deltafrac = (nvals - 1) % (num_hist - 1); 0.00 : 54bf89: 4c 8b b5 78 ff ff ff mov -0x88(%rbp),%r14 : * computing that subscript directly risks integer overflow when : * the stats target is more than a couple thousand. Instead we : * add (nvals - 1) / (num_hist - 1) to pos at each step, tracking : * the integral and fractional parts of the sum separately. : */ : delta = (nvals - 1) / (num_hist - 1); 0.00 : 54bf90: 89 ca mov %ecx,%edx 0.00 : 54bf92: 89 c8 mov %ecx,%eax : posfrac += deltafrac; : if (posfrac >= (num_hist - 1)) : { : /* fractional part exceeds 1, carry to integer part */ : pos++; : posfrac -= (num_hist - 1); 0.00 : 54bf94: 8b 8d 58 ff ff ff mov -0xa8(%rbp),%ecx : * computing that subscript directly risks integer overflow when : * the stats target is more than a couple thousand. Instead we : * add (nvals - 1) / (num_hist - 1) to pos at each step, tracking : * the integral and fractional parts of the sum separately. : */ : delta = (nvals - 1) / (num_hist - 1); 0.00 : 54bf9a: 83 eb 01 sub $0x1,%ebx 0.00 : 54bf9d: c1 fa 1f sar $0x1f,%edx : posfrac += deltafrac; : if (posfrac >= (num_hist - 1)) : { : /* fractional part exceeds 1, carry to integer part */ : pos++; : posfrac -= (num_hist - 1); 0.00 : 54bfa0: 29 8d d4 fe ff ff sub %ecx,-0x12c(%rbp) : * computing that subscript directly risks integer overflow when : * the stats target is more than a couple thousand. Instead we : * add (nvals - 1) / (num_hist - 1) to pos at each step, tracking : * the integral and fractional parts of the sum separately. : */ : delta = (nvals - 1) / (num_hist - 1); 0.00 : 54bfa6: f7 fb idiv %ebx 0.00 : 54bfa8: 89 9d 24 ff ff ff mov %ebx,-0xdc(%rbp) : deltafrac = (nvals - 1) % (num_hist - 1); 0.00 : 54bfae: 31 db xor %ebx,%ebx : * computing that subscript directly risks integer overflow when : * the stats target is more than a couple thousand. Instead we : * add (nvals - 1) / (num_hist - 1) to pos at each step, tracking : * the integral and fractional parts of the sum separately. : */ : delta = (nvals - 1) / (num_hist - 1); 0.00 : 54bfb0: 89 95 d8 fe ff ff mov %edx,-0x128(%rbp) 0.00 : 54bfb6: 89 85 dc fe ff ff mov %eax,-0x124(%rbp) 0.00 : 54bfbc: 0f 1f 40 00 nopl 0x0(%rax) : deltafrac = (nvals - 1) % (num_hist - 1); : pos = posfrac = 0; : : for (i = 0; i < num_hist; i++) : { : hist_values[i] = datumCopy(values[pos].value, 0.00 : 54bfc0: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi 0.00 : 54bfc7: 4c 8b 9d 00 ff ff ff mov -0x100(%rbp),%r11 0.00 : 54bfce: 48 8b 46 10 mov 0x10(%rsi),%rax 0.00 : 54bfd2: 0f bf 50 48 movswl 0x48(%rax),%edx 0.00 : 54bfd6: 0f be 70 4a movsbl 0x4a(%rax),%esi 0.00 : 54bfda: 49 63 c4 movslq %r12d,%rax 0.00 : 54bfdd: 48 c1 e0 04 shl $0x4,%rax 0.00 : 54bfe1: 49 8b 3c 03 mov (%r11,%rax,1),%rdi 0.00 : 54bfe5: e8 86 3f 18 00 callq 6cff70 0.00 : 54bfea: 49 89 06 mov %rax,(%r14) : stats->attrtype->typbyval, : stats->attrtype->typlen); : pos += delta; : posfrac += deltafrac; 0.00 : 54bfed: 03 9d d8 fe ff ff add -0x128(%rbp),%ebx : for (i = 0; i < num_hist; i++) : { : hist_values[i] = datumCopy(values[pos].value, : stats->attrtype->typbyval, : stats->attrtype->typlen); : pos += delta; 0.00 : 54bff3: 44 03 a5 dc fe ff ff add -0x124(%rbp),%r12d : posfrac += deltafrac; : if (posfrac >= (num_hist - 1)) 0.00 : 54bffa: 39 9d 24 ff ff ff cmp %ebx,-0xdc(%rbp) 0.00 : 54c000: 7f 0a jg 54c00c : { : /* fractional part exceeds 1, carry to integer part */ : pos++; : posfrac -= (num_hist - 1); 0.00 : 54c002: 03 9d d4 fe ff ff add -0x12c(%rbp),%ebx : pos += delta; : posfrac += deltafrac; : if (posfrac >= (num_hist - 1)) : { : /* fractional part exceeds 1, carry to integer part */ : pos++; 0.00 : 54c008: 41 83 c4 01 add $0x1,%r12d : */ : delta = (nvals - 1) / (num_hist - 1); : deltafrac = (nvals - 1) % (num_hist - 1); : pos = posfrac = 0; : : for (i = 0; i < num_hist; i++) 0.00 : 54c00c: 41 83 c5 01 add $0x1,%r13d 0.00 : 54c010: 49 83 c6 08 add $0x8,%r14 0.00 : 54c014: 44 39 ad 58 ff ff ff cmp %r13d,-0xa8(%rbp) 0.00 : 54c01b: 7f a3 jg 54bfc0 0.00 : 54c01d: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax : } : } : : MemoryContextSwitchTo(old_context); : : stats->stakind[slot_idx] = STATISTIC_KIND_HISTOGRAM; 0.00 : 54c024: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 54c02b: 48 89 05 2e e8 66 00 mov %rax,0x66e82e(%rip) # bba860 0.00 : 54c032: 48 63 85 5c ff ff ff movslq -0xa4(%rbp),%rax 0.00 : 54c039: 66 c7 44 42 48 02 00 movw $0x2,0x48(%rdx,%rax,2) : stats->staop[slot_idx] = mystats->ltopr; 0.00 : 54c040: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 54c047: 48 8b 9d f0 fe ff ff mov -0x110(%rbp),%rbx 0.00 : 54c04e: 8b 51 08 mov 0x8(%rcx),%edx 0.00 : 54c051: 89 54 83 54 mov %edx,0x54(%rbx,%rax,4) : stats->stavalues[slot_idx] = hist_values; 0.00 : 54c055: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 54c05c: 48 89 b4 c3 c0 00 00 mov %rsi,0xc0(%rbx,%rax,8) 0.00 : 54c063: 00 : stats->numvalues[slot_idx] = num_hist; 0.00 : 54c064: 44 8b 9d 58 ff ff ff mov -0xa8(%rbp),%r11d 0.00 : 54c06b: 44 89 9c 83 a8 00 00 mov %r11d,0xa8(%rbx,%rax,4) 0.00 : 54c072: 00 : : /* : * Accept the defaults for stats->statypid and others. They have : * been set before we were called (see vacuum.h) : */ : slot_idx++; 0.00 : 54c073: 83 85 5c ff ff ff 01 addl $0x1,-0xa4(%rbp) : } : : /* Generate a correlation entry if there are multiple values */ : if (values_cnt > 1) 0.00 : 54c07a: 41 83 ff 01 cmp $0x1,%r15d 0.00 : 54c07e: 0f 84 d2 00 00 00 je 54c156 0.00 : 54c084: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx : double corr_xsum, : corr_x2sum; : : /* Must copy the target values into anl_context */ : old_context = MemoryContextSwitchTo(stats->anl_context); : corrs = (float4 *) palloc(sizeof(float4)); 0.00 : 54c08b: bf 04 00 00 00 mov $0x4,%edi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 54c090: 48 8b 1d c9 e7 66 00 mov 0x66e7c9(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 54c097: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 54c09b: 48 89 05 be e7 66 00 mov %rax,0x66e7be(%rip) # bba860 0.00 : 54c0a2: e8 a9 cc 24 00 callq 798d50 : * (values_cnt-1)*values_cnt / 2 : * and sum(x^2) = sum(y^2) = : * (values_cnt-1)*values_cnt*(2*values_cnt-1) / 6. : *---------- : */ : corr_xsum = ((double) (values_cnt - 1)) * 0.00 : 54c0a7: 41 8d 57 ff lea -0x1(%r15),%edx 0.00 : 54c0ab: f2 41 0f 2a d7 cvtsi2sd %r15d,%xmm2 : ((double) values_cnt) / 2.0; : corr_x2sum = ((double) (values_cnt - 1)) * : ((double) values_cnt) * (double) (2 * values_cnt - 1) / 6.0; : : /* And the correlation coefficient reduces to */ : corrs[0] = (values_cnt * corr_xysum - corr_xsum * corr_xsum) / 0.00 : 54c0b0: f2 0f 10 8d 38 ff ff movsd -0xc8(%rbp),%xmm1 0.00 : 54c0b7: ff 0.00 : 54c0b8: 48 89 1d a1 e7 66 00 mov %rbx,0x66e7a1(%rip) # bba860 : * (values_cnt-1)*values_cnt / 2 : * and sum(x^2) = sum(y^2) = : * (values_cnt-1)*values_cnt*(2*values_cnt-1) / 6. : *---------- : */ : corr_xsum = ((double) (values_cnt - 1)) * 0.00 : 54c0bf: f2 0f 2a c2 cvtsi2sd %edx,%xmm0 : ((double) values_cnt) / 2.0; : corr_x2sum = ((double) (values_cnt - 1)) * : ((double) values_cnt) * (double) (2 * values_cnt - 1) / 6.0; : : /* And the correlation coefficient reduces to */ : corrs[0] = (values_cnt * corr_xysum - corr_xsum * corr_xsum) / 0.00 : 54c0c3: 43 8d 54 3f ff lea -0x1(%r15,%r15,1),%edx 0.00 : 54c0c8: f2 0f 59 ca mulsd %xmm2,%xmm1 : * (values_cnt-1)*values_cnt / 2 : * and sum(x^2) = sum(y^2) = : * (values_cnt-1)*values_cnt*(2*values_cnt-1) / 6. : *---------- : */ : corr_xsum = ((double) (values_cnt - 1)) * 0.00 : 54c0cc: f2 0f 59 c2 mulsd %xmm2,%xmm0 0.00 : 54c0d0: 66 0f 28 d8 movapd %xmm0,%xmm3 0.00 : 54c0d4: f2 0f 59 1d 0c b9 32 mulsd 0x32b90c(%rip),%xmm3 # 8779e8 <__func__.20024+0x28> 0.00 : 54c0db: 00 : ((double) values_cnt) / 2.0; : corr_x2sum = ((double) (values_cnt - 1)) * : ((double) values_cnt) * (double) (2 * values_cnt - 1) / 6.0; : : /* And the correlation coefficient reduces to */ : corrs[0] = (values_cnt * corr_xysum - corr_xsum * corr_xsum) / 0.00 : 54c0dc: f2 0f 59 db mulsd %xmm3,%xmm3 0.00 : 54c0e0: f2 0f 5c cb subsd %xmm3,%xmm1 0.00 : 54c0e4: f2 0f 11 8d 38 ff ff movsd %xmm1,-0xc8(%rbp) 0.00 : 54c0eb: ff 0.00 : 54c0ec: f2 0f 2a ca cvtsi2sd %edx,%xmm1 0.00 : 54c0f0: f2 0f 59 c1 mulsd %xmm1,%xmm0 0.00 : 54c0f4: f2 0f 5e 05 04 b9 32 divsd 0x32b904(%rip),%xmm0 # 877a00 <__func__.20024+0x40> 0.00 : 54c0fb: 00 0.00 : 54c0fc: f2 0f 59 d0 mulsd %xmm0,%xmm2 0.00 : 54c100: f2 0f 10 85 38 ff ff movsd -0xc8(%rbp),%xmm0 0.00 : 54c107: ff 0.00 : 54c108: f2 0f 5c d3 subsd %xmm3,%xmm2 0.00 : 54c10c: f2 0f 5e c2 divsd %xmm2,%xmm0 0.00 : 54c110: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 54c114: 66 0f 14 c9 unpcklpd %xmm1,%xmm1 0.00 : 54c118: 66 0f 5a c9 cvtpd2ps %xmm1,%xmm1 0.00 : 54c11c: f3 0f 11 08 movss %xmm1,(%rax) : (values_cnt * corr_x2sum - corr_xsum * corr_xsum); : : stats->stakind[slot_idx] = STATISTIC_KIND_CORRELATION; 0.00 : 54c120: 48 63 95 5c ff ff ff movslq -0xa4(%rbp),%rdx 0.00 : 54c127: 4c 8b 9d f0 fe ff ff mov -0x110(%rbp),%r11 0.00 : 54c12e: 66 41 c7 44 53 48 03 movw $0x3,0x48(%r11,%rdx,2) 0.00 : 54c135: 00 : stats->staop[slot_idx] = mystats->ltopr; 0.00 : 54c136: 48 8b 9d 48 ff ff ff mov -0xb8(%rbp),%rbx 0.00 : 54c13d: 8b 4b 08 mov 0x8(%rbx),%ecx 0.00 : 54c140: 41 89 4c 93 54 mov %ecx,0x54(%r11,%rdx,4) : stats->stanumbers[slot_idx] = corrs; 0.00 : 54c145: 49 89 84 d3 80 00 00 mov %rax,0x80(%r11,%rdx,8) 0.00 : 54c14c: 00 : stats->numnumbers[slot_idx] = 1; 0.00 : 54c14d: 41 c7 44 93 68 01 00 movl $0x1,0x68(%r11,%rdx,4) 0.00 : 54c154: 00 00 : stats->stawidth = stats->attrtype->typlen; : stats->stadistinct = 0.0; /* "unknown" */ : } : : /* We don't need to bother cleaning up any of our temporary palloc's */ : } 0.00 : 54c156: 48 81 c4 08 01 00 00 add $0x108,%rsp 0.00 : 54c15d: 5b pop %rbx 0.00 : 54c15e: 41 5c pop %r12 0.00 : 54c160: 41 5d pop %r13 0.00 : 54c162: 41 5e pop %r14 0.00 : 54c164: 41 5f pop %r15 0.00 : 54c166: c9 leaveq 0.00 : 54c167: c3 retq 0.00 : 54c168: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54c16f: 00 : * width. We don't bother with this calculation if it's a fixed-width : * type. : */ : if (is_varlena) : { : total_width += VARSIZE_ANY(DatumGetPointer(value)); 0.00 : 54c170: 0f b6 00 movzbl (%rax),%eax /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2324 25.81 : 54c173: 3c 01 cmp $0x1,%al 0.00 : 54c175: 0f 84 85 01 00 00 je 54c300 0.00 : 54c17b: a8 01 test $0x1,%al 0.00 : 54c17d: 0f 84 8d 00 00 00 je 54c210 0.00 : 54c183: d0 e8 shr %al 0.00 : 54c185: 83 e0 7f and $0x7f,%eax 0.00 : 54c188: f2 0f 2a c0 cvtsi2sd %eax,%xmm0 0.00 : 54c18c: f2 0f 58 85 30 ff ff addsd -0xd0(%rbp),%xmm0 0.00 : 54c193: ff : * avoid repeated detoastings and resultant excess memory usage : * during the comparisons. Also, check to see if the value is : * excessively wide, and if so don't detoast at all --- just : * ignore the value. : */ : if (toast_raw_datum_size(value) > WIDTH_THRESHOLD) 0.00 : 54c194: 48 89 df mov %rbx,%rdi : * width. We don't bother with this calculation if it's a fixed-width : * type. : */ : if (is_varlena) : { : total_width += VARSIZE_ANY(DatumGetPointer(value)); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2324 3.23 : 54c197: f2 0f 11 85 30 ff ff movsd %xmm0,-0xd0(%rbp) 0.00 : 54c19e: ff : * avoid repeated detoastings and resultant excess memory usage : * during the comparisons. Also, check to see if the value is : * excessively wide, and if so don't detoast at all --- just : * ignore the value. : */ : if (toast_raw_datum_size(value) > WIDTH_THRESHOLD) /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2333 3.23 : 54c19f: e8 fc 52 f5 ff callq 4a14a0 0.00 : 54c1a4: 48 3d 00 04 00 00 cmp $0x400,%rax 0.00 : 54c1aa: 0f 86 40 01 00 00 jbe 54c2f0 : { : toowide_cnt++; 0.00 : 54c1b0: 83 85 2c ff ff ff 01 addl $0x1,-0xd4(%rbp) : continue; 0.00 : 54c1b7: e9 58 f8 ff ff jmpq 54ba14 0.00 : 54c1bc: 0f 1f 40 00 nopl 0x0(%rax) : value = PointerGetDatum(PG_DETOAST_DATUM(value)); : } : else if (is_varwidth) : { : /* must be cstring */ : total_width += strlen(DatumGetCString(value)) + 1; 0.00 : 54c1c0: 48 89 c7 mov %rax,%rdi 0.00 : 54c1c3: e8 88 d6 f1 ff callq 469850 0.00 : 54c1c8: 48 89 c2 mov %rax,%rdx 0.00 : 54c1cb: 48 83 c2 01 add $0x1,%rdx 0.00 : 54c1cf: 0f 88 cb 01 00 00 js 54c3a0 0.00 : 54c1d5: f2 48 0f 2a c2 cvtsi2sd %rdx,%xmm0 0.00 : 54c1da: f2 0f 58 85 30 ff ff addsd -0xd0(%rbp),%xmm0 0.00 : 54c1e1: ff 0.00 : 54c1e2: f2 0f 11 85 30 ff ff movsd %xmm0,-0xd0(%rbp) 0.00 : 54c1e9: ff 0.00 : 54c1ea: e9 71 f8 ff ff jmpq 54ba60 0.00 : 54c1ef: 90 nop : /* Reached end of duplicates of this value */ : ndistinct++; : if (dups_cnt > 1) : { : nmultiple++; : if (track_cnt < num_mcv || 0.00 : 54c1f0: 4c 8b 9d 08 ff ff ff mov -0xf8(%rbp),%r11 0.00 : 54c1f7: 48 63 c3 movslq %ebx,%rax 0.00 : 54c1fa: 41 3b 7c c3 f8 cmp -0x8(%r11,%rax,8),%edi 0.00 : 54c1ff: 0f 8f 60 f9 ff ff jg 54bb65 0.00 : 54c205: 44 89 c1 mov %r8d,%ecx /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2405 3.23 : 54c208: 31 ff xor %edi,%edi 0.00 : 54c20a: e9 e1 f8 ff ff jmpq 54baf0 0.00 : 54c20f: 90 nop : * width. We don't bother with this calculation if it's a fixed-width : * type. : */ : if (is_varlena) : { : total_width += VARSIZE_ANY(DatumGetPointer(value)); 0.00 : 54c210: 8b 03 mov (%rbx),%eax 0.00 : 54c212: c1 e8 02 shr $0x2,%eax 0.00 : 54c215: 89 c0 mov %eax,%eax 0.00 : 54c217: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 54c21c: e9 6b ff ff ff jmpq 54c18c 0.00 : 54c221: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : stats->stats_valid = true; : /* Do the simple null-frac and width stats */ : stats->stanullfrac = (double) null_cnt / (double) samplerows; : if (is_varwidth) : stats->stawidth = total_width / (double) nonnull_cnt; 0.00 : 54c228: f2 0f 10 95 30 ff ff movsd -0xd0(%rbp),%xmm2 0.00 : 54c22f: ff 0.00 : 54c230: f2 0f 2a 85 28 ff ff cvtsi2sdl -0xd8(%rbp),%xmm0 0.00 : 54c237: ff : else : stats->stawidth = stats->attrtype->typlen; : : if (nmultiple == 0) 0.00 : 54c238: 45 85 d2 test %r10d,%r10d : : stats->stats_valid = true; : /* Do the simple null-frac and width stats */ : stats->stanullfrac = (double) null_cnt / (double) samplerows; : if (is_varwidth) : stats->stawidth = total_width / (double) nonnull_cnt; 0.00 : 54c23b: f2 0f 5e d0 divsd %xmm0,%xmm2 0.00 : 54c23f: f2 0f 2c c2 cvttsd2si %xmm2,%eax 0.00 : 54c243: f2 0f 11 95 30 ff ff movsd %xmm2,-0xd0(%rbp) 0.00 : 54c24a: ff 0.00 : 54c24b: 89 42 40 mov %eax,0x40(%rdx) : else : stats->stawidth = stats->attrtype->typlen; : : if (nmultiple == 0) 0.00 : 54c24e: 0f 84 f4 f9 ff ff je 54bc48 : { : /* If we found no repeated values, assume it's a unique column */ : stats->stadistinct = -1.0; : } : else if (toowide_cnt == 0 && nmultiple == ndistinct) 0.00 : 54c254: 8b 85 2c ff ff ff mov -0xd4(%rbp),%eax 0.00 : 54c25a: 85 c0 test %eax,%eax 0.00 : 54c25c: 75 0d jne 54c26b 0.00 : 54c25e: 44 3b 95 54 ff ff ff cmp -0xac(%rbp),%r10d 0.00 : 54c265: 0f 84 e5 01 00 00 je 54c450 : * very unstable when n is much smaller than N. : * : * Overwidth values are assumed to have been distinct. : *---------- : */ : int f1 = ndistinct - nmultiple + toowide_cnt; 0.00 : 54c26b: 8b 85 54 ff ff ff mov -0xac(%rbp),%eax 0.00 : 54c271: 03 85 2c ff ff ff add -0xd4(%rbp),%eax : int d = f1 + nmultiple; : double numer, : denom, : stadistinct; : : numer = (double) samplerows *(double) d; 0.00 : 54c277: f2 0f 10 85 10 ff ff movsd -0xf0(%rbp),%xmm0 0.00 : 54c27e: ff 0.00 : 54c27f: 89 c2 mov %eax,%edx 0.00 : 54c281: f2 0f 2a d8 cvtsi2sd %eax,%xmm3 0.00 : 54c285: 44 29 d2 sub %r10d,%edx : : denom = (double) (samplerows - f1) + : (double) f1 *(double) samplerows / totalrows; : : stadistinct = numer / denom; 0.00 : 54c288: f2 0f 2a ca cvtsi2sd %edx,%xmm1 0.00 : 54c28c: 41 29 d5 sub %edx,%r13d 0.00 : 54c28f: f2 41 0f 2a d5 cvtsi2sd %r13d,%xmm2 : int d = f1 + nmultiple; : double numer, : denom, : stadistinct; : : numer = (double) samplerows *(double) d; 0.00 : 54c294: f2 0f 59 c3 mulsd %xmm3,%xmm0 : : denom = (double) (samplerows - f1) + : (double) f1 *(double) samplerows / totalrows; : : stadistinct = numer / denom; 0.00 : 54c298: f2 0f 59 8d 10 ff ff mulsd -0xf0(%rbp),%xmm1 0.00 : 54c29f: ff 0.00 : 54c2a0: f2 0f 5e 8d e0 fe ff divsd -0x120(%rbp),%xmm1 0.00 : 54c2a7: ff 0.00 : 54c2a8: f2 0f 58 d1 addsd %xmm1,%xmm2 : /* Clamp to sane range in case of roundoff error */ : if (stadistinct < (double) d) : stadistinct = (double) d; : if (stadistinct > totalrows) 0.00 : 54c2ac: f2 0f 10 8d e0 fe ff movsd -0x120(%rbp),%xmm1 0.00 : 54c2b3: ff : numer = (double) samplerows *(double) d; : : denom = (double) (samplerows - f1) + : (double) f1 *(double) samplerows / totalrows; : : stadistinct = numer / denom; 0.00 : 54c2b4: f2 0f 5e c2 divsd %xmm2,%xmm0 : /* Clamp to sane range in case of roundoff error */ : if (stadistinct < (double) d) 0.00 : 54c2b8: f2 0f 5f d8 maxsd %xmm0,%xmm3 : stadistinct = (double) d; : if (stadistinct > totalrows) 0.00 : 54c2bc: f2 0f 5d cb minsd %xmm3,%xmm1 0.00 : 54c2c0: 66 0f 28 c1 movapd %xmm1,%xmm0 : stadistinct = totalrows; : stats->stadistinct = floor(stadistinct + 0.5); 0.00 : 54c2c4: f2 0f 58 05 1c b7 32 addsd 0x32b71c(%rip),%xmm0 # 8779e8 <__func__.20024+0x28> 0.00 : 54c2cb: 00 0.00 : 54c2cc: e8 3f dd f1 ff callq 46a010 0.00 : 54c2d1: 4c 8b 9d f0 fe ff ff mov -0x110(%rbp),%r11 0.00 : 54c2d8: 66 0f 14 c0 unpcklpd %xmm0,%xmm0 0.00 : 54c2dc: 66 0f 5a c8 cvtpd2ps %xmm0,%xmm1 0.00 : 54c2e0: f3 41 0f 11 4b 44 movss %xmm1,0x44(%r11) 0.00 : 54c2e6: e9 6b f9 ff ff jmpq 54bc56 0.00 : 54c2eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (toast_raw_datum_size(value) > WIDTH_THRESHOLD) : { : toowide_cnt++; : continue; : } : value = PointerGetDatum(PG_DETOAST_DATUM(value)); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:2338 3.23 : 54c2f0: 48 89 df mov %rbx,%rdi 0.00 : 54c2f3: e8 18 2a 23 00 callq 77ed10 0.00 : 54c2f8: 48 89 c3 mov %rax,%rbx 0.00 : 54c2fb: e9 60 f7 ff ff jmpq 54ba60 : * width. We don't bother with this calculation if it's a fixed-width : * type. : */ : if (is_varlena) : { : total_width += VARSIZE_ANY(DatumGetPointer(value)); 0.00 : 54c300: 0f b6 43 01 movzbl 0x1(%rbx),%eax 0.00 : 54c304: f2 0f 10 05 44 63 26 movsd 0x266344(%rip),%xmm0 # 7b2650 <__func__.14520+0xf> 0.00 : 54c30b: 00 0.00 : 54c30c: 3c 01 cmp $0x1,%al 0.00 : 54c30e: 0f 84 78 fe ff ff je 54c18c 0.00 : 54c314: 3c 12 cmp $0x12,%al 0.00 : 54c316: f2 0f 10 05 ba b6 32 movsd 0x32b6ba(%rip),%xmm0 # 8779d8 <__func__.20024+0x18> 0.00 : 54c31d: 00 0.00 : 54c31e: 0f 85 68 fe ff ff jne 54c18c 0.00 : 54c324: f2 0f 10 05 b4 b6 32 movsd 0x32b6b4(%rip),%xmm0 # 8779e0 <__func__.20024+0x20> 0.00 : 54c32b: 00 0.00 : 54c32c: e9 5b fe ff ff jmpq 54c18c 0.00 : 54c331: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : stats->stanumbers[slot_idx] = corrs; : stats->numnumbers[slot_idx] = 1; : slot_idx++; : } : } : else if (nonnull_cnt > 0) 0.00 : 54c338: 44 8b bd 28 ff ff ff mov -0xd8(%rbp),%r15d 0.00 : 54c33f: 45 85 ff test %r15d,%r15d 0.00 : 54c342: 0f 8e 41 01 00 00 jle 54c489 : { : /* We found some non-null values, but they were all too wide */ : Assert(nonnull_cnt == toowide_cnt); : stats->stats_valid = true; : /* Do the simple null-frac and width stats */ : stats->stanullfrac = (double) null_cnt / (double) samplerows; 0.00 : 54c348: f2 41 0f 2a cd cvtsi2sd %r13d,%xmm1 : } : else if (nonnull_cnt > 0) : { : /* We found some non-null values, but they were all too wide */ : Assert(nonnull_cnt == toowide_cnt); : stats->stats_valid = true; 0.00 : 54c34d: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi : /* Do the simple null-frac and width stats */ : stats->stanullfrac = (double) null_cnt / (double) samplerows; 0.00 : 54c354: f2 41 0f 2a c6 cvtsi2sd %r14d,%xmm0 : } : else if (nonnull_cnt > 0) : { : /* We found some non-null values, but they were all too wide */ : Assert(nonnull_cnt == toowide_cnt); : stats->stats_valid = true; 0.00 : 54c359: c6 46 38 01 movb $0x1,0x38(%rsi) : /* Do the simple null-frac and width stats */ : stats->stanullfrac = (double) null_cnt / (double) samplerows; 0.00 : 54c35d: f2 0f 5e c1 divsd %xmm1,%xmm0 0.00 : 54c361: 66 0f 14 c0 unpcklpd %xmm0,%xmm0 0.00 : 54c365: 66 0f 5a c8 cvtpd2ps %xmm0,%xmm1 0.00 : 54c369: f3 0f 11 4e 3c movss %xmm1,0x3c(%rsi) : if (is_varwidth) 0.00 : 54c36e: 80 7d 8b 00 cmpb $0x0,-0x75(%rbp) 0.00 : 54c372: 75 4c jne 54c3c0 : stats->stawidth = total_width / (double) nonnull_cnt; : else : stats->stawidth = stats->attrtype->typlen; 0.00 : 54c374: 4c 8b 9d f0 fe ff ff mov -0x110(%rbp),%r11 0.00 : 54c37b: 49 8b 43 10 mov 0x10(%r11),%rax 0.00 : 54c37f: 0f bf 40 48 movswl 0x48(%rax),%eax 0.00 : 54c383: 41 89 43 40 mov %eax,0x40(%r11) : /* Assume all too-wide values are distinct, so it's a unique column */ : stats->stadistinct = -1.0; 0.00 : 54c387: 48 8b 85 f0 fe ff ff mov -0x110(%rbp),%rax 0.00 : 54c38e: c7 40 44 00 00 80 bf movl $0xbf800000,0x44(%rax) 0.00 : 54c395: e9 bc fd ff ff jmpq 54c156 0.00 : 54c39a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : value = PointerGetDatum(PG_DETOAST_DATUM(value)); : } : else if (is_varwidth) : { : /* must be cstring */ : total_width += strlen(DatumGetCString(value)) + 1; 0.00 : 54c3a0: 48 89 d0 mov %rdx,%rax 0.00 : 54c3a3: 83 e2 01 and $0x1,%edx 0.00 : 54c3a6: 48 d1 e8 shr %rax 0.00 : 54c3a9: 48 09 d0 or %rdx,%rax 0.00 : 54c3ac: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 54c3b1: f2 0f 58 c0 addsd %xmm0,%xmm0 0.00 : 54c3b5: e9 20 fe ff ff jmpq 54c1da 0.00 : 54c3ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Assert(nonnull_cnt == toowide_cnt); : stats->stats_valid = true; : /* Do the simple null-frac and width stats */ : stats->stanullfrac = (double) null_cnt / (double) samplerows; : if (is_varwidth) : stats->stawidth = total_width / (double) nonnull_cnt; 0.00 : 54c3c0: f2 0f 10 95 30 ff ff movsd -0xd0(%rbp),%xmm2 0.00 : 54c3c7: ff 0.00 : 54c3c8: f2 0f 2a 85 28 ff ff cvtsi2sdl -0xd8(%rbp),%xmm0 0.00 : 54c3cf: ff 0.00 : 54c3d0: f2 0f 5e d0 divsd %xmm0,%xmm2 0.00 : 54c3d4: f2 0f 2c c2 cvttsd2si %xmm2,%eax 0.00 : 54c3d8: f2 0f 11 95 30 ff ff movsd %xmm2,-0xd0(%rbp) 0.00 : 54c3df: ff 0.00 : 54c3e0: 89 46 40 mov %eax,0x40(%rsi) 0.00 : 54c3e3: eb a2 jmp 54c387 0.00 : 54c3e5: 0f 1f 00 nopl (%rax) : /* advance past this MCV item */ : src = first + track[j].count; : j++; : continue; : } : ncopy = first - src; 0.00 : 54c3e8: 41 89 c4 mov %eax,%r12d 0.00 : 54c3eb: 41 29 dc sub %ebx,%r12d 0.00 : 54c3ee: e9 10 fb ff ff jmpq 54bf03 0.00 : 54c3f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : mincount = maxmincount; : if (num_mcv > track_cnt) : num_mcv = track_cnt; : for (i = 0; i < num_mcv; i++) : { : if (track[i].count < mincount) 0.00 : 54c3f8: 41 89 c6 mov %eax,%r14d 0.00 : 54c3fb: e9 5b f9 ff ff jmpq 54bd5b : * number of histogram bins; such values might otherwise cause us to : * emit duplicate histogram bin boundaries. (We might end up with : * duplicate histogram entries anyway, if the distribution is skewed; : * but we prefer to treat such values as MCVs if at all possible.) : */ : if (track_cnt == ndistinct && toowide_cnt == 0 && 0.00 : 54c400: 8b 85 2c ff ff ff mov -0xd4(%rbp),%eax 0.00 : 54c406: 85 c0 test %eax,%eax 0.00 : 54c408: 0f 85 a4 f8 ff ff jne 54bcb2 0.00 : 54c40e: 0f 2e 15 cb 5e 26 00 ucomiss 0x265ecb(%rip),%xmm2 # 7b22e0 <__func__.14992+0xd7> 0.00 : 54c415: 0f 86 97 f8 ff ff jbe 54bcb2 0.00 : 54c41b: 8b 95 54 ff ff ff mov -0xac(%rbp),%edx 0.00 : 54c421: 39 55 8c cmp %edx,-0x74(%rbp) 0.00 : 54c424: 0f 8c 88 f8 ff ff jl 54bcb2 : } : } : } : : /* Generate MCV slot entry */ : if (num_mcv > 0) 0.00 : 54c42a: 44 8b b5 54 ff ff ff mov -0xac(%rbp),%r14d 0.00 : 54c431: c7 85 5c ff ff ff 00 movl $0x0,-0xa4(%rbp) 0.00 : 54c438: 00 00 00 0.00 : 54c43b: 45 85 f6 test %r14d,%r14d 0.00 : 54c43e: 0f 8e 2f fa ff ff jle 54be73 0.00 : 54c444: 44 8b b5 54 ff ff ff mov -0xac(%rbp),%r14d 0.00 : 54c44b: e9 0b f9 ff ff jmpq 54bd5b : { : /* : * Every value in the sample appeared more than once. Assume the : * column has just these values. : */ : stats->stadistinct = ndistinct; 0.00 : 54c450: f3 0f 2a 85 54 ff ff cvtsi2ssl -0xac(%rbp),%xmm0 0.00 : 54c457: ff 0.00 : 54c458: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 54c45f: f3 0f 11 42 44 movss %xmm0,0x44(%rdx) 0.00 : 54c464: e9 ed f7 ff ff jmpq 54bc56 0.00 : 54c469: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : double avgcount, : mincount, : maxmincount; : : if (ndistinct < 0) : ndistinct = -ndistinct * totalrows; 0.00 : 54c470: f2 0f 10 05 f8 54 26 movsd 0x2654f8(%rip),%xmm0 # 7b1970 <__func__.17675+0xe> 0.00 : 54c477: 00 0.00 : 54c478: 66 0f 57 c8 xorpd %xmm0,%xmm1 0.00 : 54c47c: f2 0f 59 8d e0 fe ff mulsd -0x120(%rbp),%xmm1 0.00 : 54c483: ff 0.00 : 54c484: e9 3d f8 ff ff jmpq 54bcc6 : else : stats->stawidth = stats->attrtype->typlen; : /* Assume all too-wide values are distinct, so it's a unique column */ : stats->stadistinct = -1.0; : } : else if (null_cnt > 0) 0.00 : 54c489: 45 85 f6 test %r14d,%r14d 0.00 : 54c48c: 0f 8e c4 fc ff ff jle 54c156 : { : /* We found only nulls; assume the column is entirely null */ : stats->stats_valid = true; 0.00 : 54c492: 48 8b 95 f0 fe ff ff mov -0x110(%rbp),%rdx 0.00 : 54c499: c6 42 38 01 movb $0x1,0x38(%rdx) : stats->stanullfrac = 1.0; 0.00 : 54c49d: c7 42 3c 00 00 80 3f movl $0x3f800000,0x3c(%rdx) : if (is_varwidth) 0.00 : 54c4a4: 80 7d 8b 00 cmpb $0x0,-0x75(%rbp) 0.00 : 54c4a8: 74 1a je 54c4c4 : stats->stawidth = 0; /* "unknown" */ 0.00 : 54c4aa: c7 42 40 00 00 00 00 movl $0x0,0x40(%rdx) : else : stats->stawidth = stats->attrtype->typlen; : stats->stadistinct = 0.0; /* "unknown" */ 0.00 : 54c4b1: 48 8b 9d f0 fe ff ff mov -0x110(%rbp),%rbx 0.00 : 54c4b8: c7 43 44 00 00 00 00 movl $0x0,0x44(%rbx) 0.00 : 54c4bf: e9 92 fc ff ff jmpq 54c156 : stats->stats_valid = true; : stats->stanullfrac = 1.0; : if (is_varwidth) : stats->stawidth = 0; /* "unknown" */ : else : stats->stawidth = stats->attrtype->typlen; 0.00 : 54c4c4: 48 8b 8d f0 fe ff ff mov -0x110(%rbp),%rcx 0.00 : 54c4cb: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 54c4cf: 0f bf 40 48 movswl 0x48(%rax),%eax 0.00 : 54c4d3: 89 41 40 mov %eax,0x40(%rcx) 0.00 : 54c4d6: eb d9 jmp 54c4b1 : stats->stadistinct = 0.0; /* "unknown" */ : } : : /* We don't need to bother cleaning up any of our temporary palloc's */ : } 0.00 : 54c4d8: 45 31 f6 xor %r14d,%r14d 0.00 : 54c4db: c7 85 5c ff ff ff 00 movl $0x0,-0xa4(%rbp) 0.00 : 54c4e2: 00 00 00 0.00 : 54c4e5: e9 89 f9 ff ff jmpq 54be73 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 10.42 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000022b0 : ??:0 16.67 : 22b0: 48 81 ec b8 00 00 00 sub $0xb8,%rsp 0.00 : 22e7: 4c 89 add %al,(%rax) ??:0 2.08 : 22e9: a4 24 mov %esi,%edx 0.00 : 22eb: 98 00 00 00 4c 89 ac mov %r15,0xb0(%rsp) 0.00 : 22f2: 24 0.00 : 22f3: a0 00 00 00 45 mov %rdi,0x20(%rsp) 0.00 : 22f8: 31 ed 89 54 24 1c 48 mov 0x88(%rcx),%rdi 0.00 : 22ff: 89 9c 24 test %rdi,%rdi 0.00 : 2302: 88 00 je 231f 0.00 : 2304: 00 00 49 89 mov 0x78(%rdi),%rax 0.00 : 2308: cc 48 89 mov %rdi,%r13 0.00 : 230b: ac 24 90 test $0x8,%ah 0.00 : 230e: 00 00 00 4c 89 b4 je 2440 0.00 : 2314: 24 a8 00 00 00 89 f2 movq $0x0,0x88(%rcx) 0.00 : 231b: 4c 89 bc 24 0.00 : 231f: b0 00 00 00 movzbl %dl,%r15d 0.00 : 2323: 48 89 7c 24 20 48 8b mov $0x0,%r14 0.00 : 232a: b9 88 00 00 00 cmp $0x26,%r15w 0.00 : 232f: 48 85 ff 74 1b 48 jbe 2410 0.00 : 2335: 8b 47 78 49 89 fd f6 mov 0xc4(%r12),%esi 0.00 : 233c: c4 2.08 : 233d: 08 0f 84 2c 01 lea 0x7f(%rsp),%rcx 0.00 : 2342: 00 00 48 c7 81 lea 0x74(%rsp),%rdx 0.00 : 2347: 88 00 00 00 00 00 00 add 0xd8(%r12),%rsi 0.00 : 234e: 00 0.00 : 234f: 44 0f b6 mov %r12,%rdi 0.00 : 2352: fa 49 c7 c6 00 00 00 sub 0xe0(%r12),%esi 0.00 : 2359: 00 0.00 : 235a: 66 41 83 ff callq *0x28(%r14) 2.08 : 235e: 26 0f test %eax,%eax 2.08 : 2360: 86 db mov %eax,%ebx 0.00 : 2362: 00 00 00 41 8b b4 jle 2468 0.00 : 2368: 24 c4 00 00 00 movzbl 0x7f(%rsp),%esi 2.08 : 236d: 48 8d 4c mov %r15d,%edi 0.00 : 2370: 24 7f 48 8d 54 callq 2375 0.00 : 2375: 24 74 49 03 b4 mov %rax,0x28(%rsp) 0.00 : 237a: 24 d8 00 00 mov 0x30(%rax),%rax ??:0 8.33 : 237e: 00 4c 89 test %rax,%rax 0.00 : 2381: e7 41 2b b4 24 e0 je 24b8 0.00 : 2387: 00 00 00 41 mov 0x1c(%rsp),%edx 0.00 : 238b: ff 56 28 85 mov 0x74(%rsp),%ecx 0.00 : 238f: c0 89 c3 mov %r15d,%r9d 0.00 : 2392: 0f 8e 00 01 00 lea 0x78(%rsp),%r8 0.00 : 2397: 00 0f b6 mov %r13,%rsi 0.00 : 239a: 74 24 7f 44 89 mov 0x20(%rsp),%rdi 0.00 : 239f: ff e8 00 mov %edx,(%rsp) 0.00 : 23a2: 00 00 00 mov %r12,%rdx 0.00 : 23a5: 48 89 callq *%rax ??:0 2.08 : 23a7: 44 24 test %eax,%eax 0.00 : 23a9: 28 48 mov %eax,%ebp 0.00 : 23ab: 8b 40 30 48 85 c0 jle 2590 0.00 : 23b1: 0f 84 31 01 00 00 8b cmpq $0x0,0x88(%r12) 0.00 : 23b8: 54 24 0.00 : 23ba: 1c 8b mov %eax,%ebx 0.00 : 23bc: 4c 24 74 45 89 f9 je 24b8 0.00 : 23c2: 4c 8d 44 test %r13,%r13 0.00 : 23c5: 24 78 je 23d4 0.00 : 23c7: 4c 89 ee cmp $0x4,%ebp 0.00 : 23ca: 48 8b jne 2428 0.00 : 23cc: 7c 24 20 89 14 24 4c mov %r13,0x88(%r12) 0.00 : 23d3: 89 0.00 : 23d4: e2 ff mov %ebx,%eax 0.00 : 23d6: d0 85 c0 89 c5 0f 8e mov 0x90(%rsp),%rbp 0.00 : 23dd: df 0.00 : 23de: 01 00 00 49 83 bc 24 mov 0x88(%rsp),%rbx 0.00 : 23e5: 88 0.00 : 23e6: 00 00 00 00 89 c3 0f mov 0x98(%rsp),%r12 0.00 : 23ed: 84 0.00 : 23ee: f6 00 00 00 4d 85 ed mov 0xa0(%rsp),%r13 0.00 : 23f5: 74 0.00 : 23f6: 0d 83 fd 04 75 5c 4d mov 0xa8(%rsp),%r14 0.00 : 23fd: 89 0.00 : 23fe: ac 24 88 00 00 00 89 mov 0xb0(%rsp),%r15 0.00 : 2405: d8 0.00 : 2406: 48 8b ac 24 90 00 00 add $0xb8,%rsp 0.00 : 240d: 00 retq 0.00 : 240e: 48 8b xchg %ax,%ax 2.08 : 2410: 9c 24 88 00 movzwl %r15w,%eax 0.00 : 2414: 00 00 4c 8b a4 24 98 mov 0x0(,%rax,8),%r14 0.00 : 241b: 00 4.17 : 241c: 00 00 4c 8b ac jmpq 2335 0.00 : 2421: 24 a0 00 00 00 4c 8b nopl 0x0(%rax) 0.00 : 2428: b4 24 a8 00 00 lock decl 0x0(%r13) 0.00 : 242d: 00 4c 8b sete %al 0.00 : 2430: bc 24 test %al,%al 0.00 : 2432: b0 00 je 23d4 0.00 : 2434: 00 00 48 mov %r13,%rdi 0.00 : 2437: 81 c4 b8 00 00 callq 243c 0.00 : 243c: 00 c3 jmp 23d4 0.00 : 243e: 66 90 xchg %ax,%ax 0.00 : 2440: 41 0f b7 c7 4c callq 2445 0.00 : 2445: 8b 34 c5 00 00 mov 0x20(%rsp),%rdx 0.00 : 244a: 00 00 e9 14 ff mov $0x1,%ebx 0.00 : 244f: ff ff 0f 1f 80 00 00 mov 0x730(%rdx),%rax 0.00 : 2456: 00 00 f0 41 incl %gs:0x10(%rax) 0.00 : 245a: ff 4d 00 0f 94 callq 245f 0.00 : 245f: c0 84 c0 74 a0 jmpq 23d4 0.00 : 2464: 4c 89 ef e8 nopl 0x0(%rax) 0.00 : 2468: 00 00 00 00 eb 96 66 cmpb $0x0,0x0(%rip) # 246f 0.00 : 246f: 90 e8 00 00 00 00 jne 28f7 0.00 : 2475: 48 8b 54 24 20 callq 247a 0.00 : 247a: bb 01 00 00 00 mov 0x20(%rsp),%rdx 0.00 : 247f: 48 8b mov %ebx,%ebp 0.00 : 2481: 82 30 neg %ebp 0.00 : 2483: 07 00 mov %ebp,%ebx 0.00 : 2485: 00 65 ff 40 10 e8 00 mov 0x730(%rdx),%rax 0.00 : 248c: 00 00 00 e9 incl %gs:0x2c(%rax) 0.00 : 2490: 70 ff ff ff 0f callq 2495 0.00 : 2495: 1f 40 00 80 3d callq 249a 0.00 : 249a: 00 00 00 00 00 mov 0x20(%rsp),%rdx 0.00 : 249f: 0f 85 82 04 00 00 e8 mov 0x730(%rdx),%rax 0.00 : 24a6: 00 00 00 00 incl %gs:0xc(%rax) 0.00 : 24aa: 48 8b 54 24 20 callq 24af 0.00 : 24af: 89 dd f7 dd 89 jmpq 23c2 0.00 : 24b4: eb 48 8b 82 nopl 0x0(%rax) 4.17 : 24b8: 30 07 00 00 mov 0x74(%rsp),%eax 0.00 : 24bc: 65 ff 40 test %r13,%r13 0.00 : 24bf: 2c e8 00 00 00 movzbl 0x7f(%rsp),%ecx 0.00 : 24c4: 00 e8 00 00 mov %eax,0x3c(%rsp) 2.08 : 24c8: 00 00 48 8b 54 24 je 2580 0.00 : 24ce: 20 48 8b 82 30 07 00 mov 0xe0(%r13),%rdx 0.00 : 24d5: 00 65 ff test %rdx,%rdx 0.00 : 24d8: 40 0c e8 00 00 00 je 2580 0.00 : 24de: 00 e9 0e ff movzbl 0x14(%rdx),%eax 0.00 : 24e2: ff ff test %al,%al 0.00 : 24e4: 0f 1f 40 00 8b 44 je 2580 0.00 : 24ea: 24 74 4d movzbl %al,%eax 0.00 : 24ed: 85 ed 0f add %rdx,%rax 0.00 : 24f0: b6 4c 24 7f 89 44 je 2580 0.00 : 24f6: 24 3c 0f movzwl (%rax),%ebx 2.08 : 24f9: 84 b2 00 00 00 mov 0x28(%rsp),%rdx 2.08 : 24fe: 49 8b 95 e0 00 00 00 mov 0xc4(%r12),%esi 0.00 : 2505: 48 2.08 : 2506: 85 d2 0f 84 a2 lea 0x40(%rsp),%rbp 0.00 : 250b: 00 00 00 0f b6 42 14 add 0xd8(%r12),%rsi 0.00 : 2512: 84 4.17 : 2513: c0 0f 84 96 movzbl %cl,%r8d 0.00 : 2517: 00 00 00 mov %r12,%rdi 0.00 : 251a: 0f b6 c0 48 01 d0 0f sub 0xe0(%r12),%esi 0.00 : 2521: 84 0.00 : 2522: 8a 00 00 mov %rbp,%r9 0.00 : 2525: 00 0f b7 mov %r15d,%ecx 0.00 : 2528: 18 48 8b 54 24 mov %rdx,0x8(%rsp) 0.00 : 252d: 28 41 8b b4 mov 0x3c(%rsp),%edx 0.00 : 2531: 24 c4 00 00 mov %r14,(%rsp) 2.08 : 2535: 00 48 8d 6c 24 callq 253a 0.00 : 253a: 40 49 test %al,%al 2.08 : 253c: 03 b4 24 d8 00 00 jne 25d0 0.00 : 2542: 00 44 0f b6 c1 4c 89 cmpb $0x0,0x0(%rip) # 2549 0.00 : 2549: e7 41 2b b4 24 e0 jne 2758 0.00 : 254f: 00 00 00 49 89 callq 2554 0.00 : 2554: e9 44 89 f9 48 mov 0x20(%rsp),%rdx 0.00 : 2559: 89 54 24 08 8b mov $0x1,%ebp 0.00 : 255e: 54 24 3c 4c 89 mov $0x1,%ebx 0.00 : 2563: 34 24 e8 00 00 00 00 mov 0x730(%rdx),%rax 0.00 : 256a: 84 c0 0f 85 incl %gs:0xc(%rax) 0.00 : 256e: 8e 00 00 00 80 callq 2573 0.00 : 2573: 3d 00 00 00 00 jmpq 23c2 0.00 : 2578: 00 0f 85 09 02 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 257f: e8 2.08 : 2580: 00 00 xor %ebx,%ebx 0.00 : 2582: 00 00 48 8b 54 jmpq 24f9 0.00 : 2587: 24 20 bd 01 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 258e: bb 01 0.00 : 2590: 00 00 00 48 8b callq 2595 0.00 : 2595: 82 30 07 00 00 mov 0x20(%rsp),%rbx 0.00 : 259a: 65 ff neg %ebp 0.00 : 259c: 40 0c e8 00 00 00 00 mov 0x730(%rbx),%rax 0.00 : 25a3: e9 4a fe ff incl %gs:0x2c(%rax) 0.00 : 25a7: ff 0f 1f 84 00 callq 25ac 0.00 : 25ac: 00 00 00 00 31 callq 25b1 0.00 : 25b1: db e9 72 ff ff ff 66 mov 0x730(%rbx),%rax 0.00 : 25b8: 0f 1f mov %ebp,%ebx 0.00 : 25ba: 84 00 00 00 incl %gs:0xc(%rax) 0.00 : 25be: 00 00 e8 00 00 callq 25c3 0.00 : 25c3: 00 00 48 8b 5c jmpq 23c2 0.00 : 25c8: 24 20 f7 dd 48 8b 83 nopl 0x0(%rax,%rax,1) 0.00 : 25cf: 30 ??:0 8.33 : 25d0: 07 00 00 movzwl %bx,%ebx 0.00 : 25d3: 65 ff 40 mov %rbp,%rdi 0.00 : 25d6: 2c e8 mov %ebx,%esi 0.00 : 25d8: 00 00 00 00 e8 callq 0 0.00 : 25dd: 00 00 00 00 48 mov 0x20(%rsp),%rdi ??:0 2.08 : 25e2: 8b 83 mov %ebx,%esi 0.00 : 25e4: 30 07 mov %eax,%ecx 0.00 : 25e6: 00 00 89 mov %rbp,%rdx 0.00 : 25e9: eb 65 ff 40 mov %eax,0x38(%rsp) 2.08 : 25ed: 0c e8 00 00 00 callq 2120 0.00 : 25f2: 00 e9 fa test %rax,%rax 0.00 : 25f5: fd ff ff mov %rax,%rsi 0.00 : 25f8: 0f 1f 84 00 00 00 je 285b 0.00 : 25fe: 00 00 0f b7 movzbl 0x37(%rsi),%ecx 0.00 : 2602: db 48 89 mov %rsi,%r14 0.00 : 2605: ef 89 de movzbl %cl,%edx 0.00 : 2608: e8 23 da ff ff 48 8b lea 0x0(,%rdx,8),%rax 0.00 : 260f: 7c 0.00 : 2610: 24 20 89 sub %rdx,%rax 0.00 : 2613: de 89 c1 48 89 ea 89 lea 0x8(,%rax,8),%rax 0.00 : 261a: 44 0.00 : 261b: 24 38 e8 sub %rax,%r14 0.00 : 261e: 2e fb ff sub $0x1,%cl 0.00 : 2621: ff 48 je 26a0 0.00 : 2623: 85 c0 48 89 mov 0x78(%r14),%rax 0.00 : 2627: c6 0f test $0x2,%al 0.00 : 2629: 84 5d 02 00 00 0f je 2770 0.00 : 262f: b6 4e 37 49 89 f6 0f cmpb $0x0,0x0(%rip) # 2636 2.08 : 2636: b6 d1 48 8d 04 d5 jne 2822 0.00 : 263c: 00 00 00 00 48 29 d0 movl $0x0,0x78(%rsp) 0.00 : 2643: 48 0.00 : 2644: 8d 04 c5 08 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 264b: 49 0.00 : 264c: 29 c6 80 e9 01 74 movzbl 0x7c(%r12),%eax 2.08 : 2652: 7d 49 8b 46 mov 0x78(%rsp),%edx 0.00 : 2656: 78 a8 02 0f 84 41 01 mov %r14,0x88(%r12) 0.00 : 265d: 00 2.08 : 265e: 00 80 3d shl $0x5,%edx 2.08 : 2661: 00 00 00 and $0x1f,%eax 0.00 : 2664: 00 00 or %edx,%eax 0.00 : 2666: 0f 85 e6 01 00 mov %al,0x7c(%r12) 2.08 : 266b: 00 c7 44 test %r14,%r14 0.00 : 266e: 24 78 00 00 00 00 je 254f 0.00 : 2674: c7 44 24 34 00 00 00 cmp $0xfffffffffffff000,%r14 0.00 : 267b: 00 41 jbe 26b8 0.00 : 267d: 0f b6 44 24 7c callq 2682 0.00 : 2682: 8b 54 24 78 4d mov 0x20(%rsp),%rbx 0.00 : 2687: 89 b4 xor %ebp,%ebp 0.00 : 2689: 24 88 00 00 00 c1 e2 mov 0x730(%rbx),%rax 0.00 : 2690: 05 83 xor %ebx,%ebx 0.00 : 2692: e0 1f 09 d0 incl %gs:0x24(%rax) 0.00 : 2696: 41 88 44 24 7c callq 269b 0.00 : 269b: 4d 85 f6 0f 84 jmpq 23c2 0.00 : 26a0: db fe ff ff 49 81 fe movl $0x3,0x78(%rsp) 0.00 : 26a7: 00 0.00 : 26a8: f0 ff ff 76 3b e8 00 movl $0x1,0x34(%rsp) 0.00 : 26af: 00 0.00 : 26b0: 00 00 jmp 264c 0.00 : 26b2: 48 8b 5c 24 20 31 nopw 0x0(%rax,%rax,1) 0.00 : 26b8: ed 48 8b 83 30 mov 0x28(%rsp),%rbx 0.00 : 26bd: 07 00 00 31 mov 0x78(%rsp),%ecx 0.00 : 26c1: db 65 ff mov %r15d,%r8d 0.00 : 26c4: 40 24 e8 00 mov 0x74(%rsp),%edx 0.00 : 26c8: 00 00 00 e9 22 mov 0x1c(%rsp),%r9d 0.00 : 26cd: fd ff ff mov %r12,%rsi 0.00 : 26d0: c7 44 24 mov %r14,%rdi 0.00 : 26d3: 78 03 00 callq *0x18(%rbx) 0.00 : 26d6: 00 00 test %eax,%eax 0.00 : 26d8: c7 44 mov %eax,%ebp 0.00 : 26da: 24 34 01 00 00 00 jle 27a0 0.00 : 26e0: eb 9a mov %eax,%ebx 0.00 : 26e2: 66 0f 1f 44 mov 0x34(%rsp),%eax 0.00 : 26e6: 00 00 test %eax,%eax 0.00 : 26e8: 48 8b 5c 24 28 8b je 23c2 2.08 : 26ee: 4c 24 78 45 lea 0x78(%r14),%rax 0.00 : 26f2: 89 f8 8b 54 24 lock btsl $0x1,(%rax) ??:0 8.33 : 26f7: 74 44 sbb %edx,%edx 0.00 : 26f9: 8b 4c test %edx,%edx 0.00 : 26fb: 24 1c mov %ebp,%ebx 0.00 : 26fd: 4c 89 e6 4c 89 f7 jne 23c2 0.00 : 2703: ff 53 18 85 c0 89 c5 mov 0xe8(%r14),%rax 0.00 : 270a: 0f 8e mov %ebp,%ebx 0.00 : 270c: c0 00 00 00 89 c3 8b cmpq $0x0,0x738(%rax) 0.00 : 2713: 44 0.00 : 2714: 24 34 85 c0 0f 84 je 23c2 0.00 : 271a: d4 fc ff ff 49 8d 46 mov 0xe0(%r14),%rdx 0.00 : 2721: 78 f0 mov %ebp,%ebx 0.00 : 2723: 0f ba 28 test %rdx,%rdx 0.00 : 2726: 01 19 d2 85 d2 89 je 23c2 0.00 : 272c: eb 0f 85 bf movzbl 0x13(%rdx),%eax 0.00 : 2730: fc ff mov %ebp,%ebx 0.00 : 2732: ff 49 test %al,%al 0.00 : 2734: 8b 86 e8 00 00 00 je 23c2 0.00 : 273a: 89 eb 48 movzbl %al,%eax 0.00 : 273d: 83 b8 mov %ebp,%ebx 0.00 : 273f: 38 07 00 add %rdx,%rax 0.00 : 2742: 00 00 0f 84 a8 fc je 23c2 0.00 : 2748: ff ff 49 8b lock orb $0x8,(%rax) 0.00 : 274c: 96 e0 mov %ebp,%ebx 0.00 : 274e: 00 00 00 89 eb jmpq 23c2 0.00 : 2753: 48 85 d2 0f 84 nopl 0x0(%rax,%rax,1) 0.00 : 2758: 96 fc ff ff 0f b6 42 mov $0x0,%rsi 0.00 : 275f: 13 89 eb 84 c0 0f 84 mov $0x0,%rdi 0.00 : 2766: 88 fc ff ff 0f callq 276b 0.00 : 276b: b6 c0 89 eb 48 jmpq 254f 0.00 : 2770: 01 d0 0f 84 mov 0x78(%r14),%rax 0.00 : 2774: 7a fc test $0x1,%al 0.00 : 2776: ff ff f0 80 08 08 je 2800 0.00 : 277c: 89 eb e9 6f fc ff ff cmpb $0x0,0x0(%rip) # 2783 0.00 : 2783: 0f 1f 44 00 00 48 jne 28da 0.00 : 2789: c7 c6 00 00 00 00 48 movl $0x1,0x78(%rsp) 0.00 : 2790: c7 0.00 : 2791: c7 00 00 00 00 e8 00 movl $0x0,0x34(%rsp) 0.00 : 2798: 00 0.00 : 2799: 00 00 e9 df fd jmpq 264c 0.00 : 279e: ff ff xchg %ax,%ax 0.00 : 27a0: 49 8b 46 78 a8 01 0f cmpb $0x0,0x0(%rip) # 27a7 0.00 : 27a7: 84 84 00 00 00 80 jne 2911 0.00 : 27ad: 3d 00 00 00 00 00 0f mov 0x88(%r12),%rdi 0.00 : 27b4: 85 0.00 : 27b5: 51 01 00 test %rdi,%rdi 0.00 : 27b8: 00 c7 je 27c8 0.00 : 27ba: 44 24 78 lock decl (%rdi) 0.00 : 27bd: 01 00 00 sete %al 0.00 : 27c0: 00 c7 test %al,%al 0.00 : 27c2: 44 24 34 00 00 00 jne 28ad 0.00 : 27c8: 00 e9 ae fe ff ff 66 movq $0x0,0x88(%r12) 0.00 : 27cf: 90 80 3d 00 00 0.00 : 27d4: 00 00 00 0f 85 callq 27d9 0.00 : 27d9: 64 01 00 00 49 mov 0x20(%rsp),%rdx 0.00 : 27de: 8b bc 24 88 00 00 00 mov 0x730(%rdx),%rax 0.00 : 27e5: 48 85 ff 74 incl %gs:0xc(%rax) 0.00 : 27e9: 0e f0 ff 0f 0f callq 27ee 0.00 : 27ee: 94 c0 test %ebp,%ebp 0.00 : 27f0: 84 c0 je 283f 0.00 : 27f2: 0f 85 neg %ebp 0.00 : 27f4: e5 00 mov %ebp,%ebx 0.00 : 27f6: 00 00 49 c7 84 jmpq 23c2 0.00 : 27fb: 24 88 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2800: 00 00 00 00 e8 00 00 cmpb $0x0,0x0(%rip) # 2807 0.00 : 2807: 00 00 48 8b 54 24 jne 28bd 0.00 : 280d: 20 48 8b 82 30 07 00 movl $0x2,0x78(%rsp) 0.00 : 2814: 00 0.00 : 2815: 65 ff 40 0c e8 00 00 movl $0x0,0x34(%rsp) 0.00 : 281c: 00 0.00 : 281d: 00 85 ed 74 4d jmpq 264c 0.00 : 2822: f7 dd 89 mov %r14,%rdx 0.00 : 2825: eb e9 c7 fb ff ff 0f mov $0x0,%rsi 0.00 : 282c: 1f 44 00 00 80 3d 00 mov $0x0,%rdi 0.00 : 2833: 00 00 xor %eax,%eax 0.00 : 2835: 00 00 0f 85 b0 callq 283a 0.00 : 283a: 00 00 00 c7 44 jmpq 263c 0.00 : 283f: 24 78 02 00 00 callq 2844 0.00 : 2844: 00 c7 44 24 34 mov 0x20(%rsp),%rbx 0.00 : 2849: 00 00 00 00 e9 2a fe mov 0x730(%rbx),%rax 0.00 : 2850: ff ff 4c 89 incl %gs:0x24(%rax) 0.00 : 2854: f2 48 c7 c6 00 callq 2859 0.00 : 2859: 00 00 jmp 27f2 0.00 : 285b: 00 48 c7 c7 mov 0x38(%rsp),%ebx 0.00 : 285f: 00 00 00 00 mov 0x3c(%rsp),%eax 0.00 : 2863: 31 c0 e8 mov %r13,%rsi 0.00 : 2866: 00 00 00 00 e9 mov 0x28(%rsp),%r8 0.00 : 286b: fd fd ff ff e8 mov 0x20(%rsp),%rdi 0.00 : 2870: 00 00 00 mov %r12,%r9 0.00 : 2873: 00 48 8b mov %r14,%rcx 0.00 : 2876: 5c 24 20 mov %rbp,%rdx 0.00 : 2879: 48 8b 83 30 mov %ebx,0x8(%rsp) 0.00 : 287d: 07 00 00 mov %eax,(%rsp) 0.00 : 2880: 65 ff 40 24 e8 callq 1a90 0.00 : 2885: 00 00 00 test %rax,%rax 0.00 : 2888: 00 eb 97 mov %rax,%rsi 0.00 : 288b: 8b 5c 24 38 8b 44 je 254f 0.00 : 2891: 24 3c 4c 89 ee 4c cmp $0xfffffffffffff000,%rax 0.00 : 2897: 8b 44 24 mov %rax,%r14 0.00 : 289a: 28 48 8b 7c 24 20 4d movl $0x0,0x34(%rsp) 0.00 : 28a1: 89 0.00 : 28a2: e1 4c 89 f1 48 89 ja 266b 0.00 : 28a8: ea 89 5c 24 08 jmpq 25fe 0.00 : 28ad: 89 04 24 e8 0b callq 28b2 0.00 : 28b2: f2 ff ff 48 85 c0 nopw 0x0(%rax,%rax,1) 0.00 : 28b8: 48 89 c6 0f 84 jmpq 27c8 0.00 : 28bd: be fc ff mov %r14,%rdx 0.00 : 28c0: ff 48 3d 00 f0 ff ff mov $0x0,%rsi 0.00 : 28c7: 49 89 c6 c7 44 24 34 mov $0x0,%rdi 0.00 : 28ce: 00 00 xor %eax,%eax 0.00 : 28d0: 00 00 0f 87 c3 callq 28d5 0.00 : 28d5: fd ff ff e9 51 jmpq 280d 0.00 : 28da: fd ff ff mov %r14,%rdx 0.00 : 28dd: e8 00 00 00 00 66 0f mov $0x0,%rsi 0.00 : 28e4: 1f 44 00 00 e9 0b ff mov $0x0,%rdi 0.00 : 28eb: ff ff xor %eax,%eax 0.00 : 28ed: 4c 89 f2 48 c7 callq 28f2 0.00 : 28f2: c6 00 00 00 00 jmpq 2789 0.00 : 28f7: 48 c7 c7 00 00 00 00 mov $0x0,%rsi 0.00 : 28fe: 31 c0 e8 00 00 00 00 mov $0x0,%rdi 0.00 : 2905: e9 33 xor %eax,%eax 0.00 : 2907: ff ff ff 4c 89 callq 290c 0.00 : 290c: f2 48 c7 c6 00 jmpq 2475 0.00 : 2911: 00 00 00 48 c7 c7 00 mov $0x0,%rsi 0.00 : 2918: 00 00 00 31 c0 e8 00 mov $0x0,%rdi 0.00 : 291f: 00 00 xor %eax,%eax 0.00 : 2921: 00 e9 92 fe ff callq 2926 0.00 : 2926: ff 48 c7 c6 00 jmpq 27ad : 292b: 00 00 00 48 c7 nopl 0x0(%rax,%rax,1) : 2930: c7 00 00 00 sub $0x18,%rsp : 2934: 00 31 c0 e8 mov %rbx,(%rsp) : 2938: 00 00 00 movzwl %si,%ebx : 293b: 00 e9 64 fb ff mov %r12,0x8(%rsp) : 2940: ff 48 c7 c6 00 mov %r13,0x10(%rsp) : 2945: 00 00 00 mov %rdx,%r12 : 2948: 48 c7 c7 mov %rdi,%r13 : 294b: 00 00 mov %ebx,%esi : 294d: 00 00 31 mov %rdx,%rdi : 2950: c0 e8 00 00 00 callq 0 : 2955: 00 e9 82 mov %r12,%rdx : 2958: fe ff mov %ebx,%esi Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469420 : ??:0 100.00 : 469420: ff 25 52 dc 6f 00 jmpq *0x6fdc52(%rip) # b67078 <_GLOBAL_OFFSET_TABLE_+0x78> 0.00 : 469426: 68 0c 00 00 00 pushq $0xc 0.00 : 46942b: e9 20 ff ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 000000000046a180 : ??:0 100.00 : 46a180: ff 25 a2 d5 6f 00 jmpq *0x6fd5a2(%rip) # b67728 <_GLOBAL_OFFSET_TABLE_+0x728> 0.00 : 46a186: 68 e2 00 00 00 pushq $0xe2 0.00 : 46a18b: e9 c0 f1 ff ff jmpq 469350 <_init+0x20> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469bf0 : ??:0 100.00 : 469bf0: ff 25 6a d8 6f 00 jmpq *0x6fd86a(%rip) # b67460 <_GLOBAL_OFFSET_TABLE_+0x460> 0.00 : 469bf6: 68 89 00 00 00 pushq $0x89 0.00 : 469bfb: e9 50 f7 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 29.63 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:255 11.11 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:289 11.11 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:289 7.41 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:246 7.41 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:246 7.41 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:253 7.41 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:255 7.41 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:262 3.70 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:246 3.70 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:255 3.70 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:289 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005d1b40 : : * initStringInfo was called, even if another context is now current. : * This is the desired and indeed critical behavior! : */ : void : enlargeStringInfo(StringInfo str, int needed) : { /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:246 7.41 : 5d1b40: 55 push %rbp : : /* : * Guard against out-of-range "needed" values. Without this, we can get : * an overflow or infinite loop in the following. : */ : if (needed < 0) /* should not happen */ 0.00 : 5d1b41: 85 f6 test %esi,%esi : * initStringInfo was called, even if another context is now current. : * This is the desired and indeed critical behavior! : */ : void : enlargeStringInfo(StringInfo str, int needed) : { 7.41 : 5d1b43: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:246 3.70 : 5d1b46: 41 54 push %r12 0.00 : 5d1b48: 49 89 fc mov %rdi,%r12 0.00 : 5d1b4b: 53 push %rbx 0.00 : 5d1b4c: 89 f3 mov %esi,%ebx : : /* : * Guard against out-of-range "needed" values. Without this, we can get : * an overflow or infinite loop in the following. : */ : if (needed < 0) /* should not happen */ /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:253 7.41 : 5d1b4e: 78 5e js 5d1bae : elog(ERROR, "invalid string enlargement request size: %d", needed); : if (((Size) needed) >= (MaxAllocSize - (Size) str->len)) 0.00 : 5d1b50: 8b 77 08 mov 0x8(%rdi),%esi /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:255 7.41 : 5d1b53: b8 ff ff ff 3f mov $0x3fffffff,%eax 0.00 : 5d1b58: 48 63 cb movslq %ebx,%rcx 29.63 : 5d1b5b: 48 63 d6 movslq %esi,%rdx 0.00 : 5d1b5e: 48 29 d0 sub %rdx,%rax /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:255 3.70 : 5d1b61: 48 39 c1 cmp %rax,%rcx 0.00 : 5d1b64: 73 74 jae 5d1bda : : needed += str->len + 1; /* total space required now */ : : /* Because of the above test, we now have needed <= MaxAllocSize */ : : if (needed <= str->maxlen) 0.00 : 5d1b66: 8b 47 0c mov 0xc(%rdi),%eax : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("out of memory"), : errdetail("Cannot enlarge string buffer containing %d bytes by %d more bytes.", : str->len, needed))); : : needed += str->len + 1; /* total space required now */ /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:262 7.41 : 5d1b69: 8d 54 1e 01 lea 0x1(%rsi,%rbx,1),%edx : : /* Because of the above test, we now have needed <= MaxAllocSize */ : : if (needed <= str->maxlen) 0.00 : 5d1b6d: 39 c2 cmp %eax,%edx 0.00 : 5d1b6f: 7e 38 jle 5d1ba9 0.00 : 5d1b71: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * We don't want to allocate just a little more space with each append; : * for efficiency, double the buffer size each time it overflows. : * Actually, we might need to more than double it if 'needed' is big... : */ : newlen = 2 * str->maxlen; 0.00 : 5d1b78: 01 c0 add %eax,%eax : while (needed > newlen) 0.00 : 5d1b7a: 39 c2 cmp %eax,%edx 0.00 : 5d1b7c: 7f fa jg 5d1b78 : /* : * Clamp to MaxAllocSize in case we went past it. Note we are assuming : * here that MaxAllocSize <= INT_MAX/2, else the above loop could : * overflow. We will still have newlen >= needed. : */ : if (newlen > (int) MaxAllocSize) 0.00 : 5d1b7e: 3d 00 00 00 40 cmp $0x40000000,%eax 0.00 : 5d1b83: bb ff ff ff 3f mov $0x3fffffff,%ebx : newlen = (int) MaxAllocSize; : : str->data = (char *) repalloc(str->data, newlen); 0.00 : 5d1b88: 49 8b 3c 24 mov (%r12),%rdi : /* : * Clamp to MaxAllocSize in case we went past it. Note we are assuming : * here that MaxAllocSize <= INT_MAX/2, else the above loop could : * overflow. We will still have newlen >= needed. : */ : if (newlen > (int) MaxAllocSize) 0.00 : 5d1b8c: 0f 4c d8 cmovl %eax,%ebx 0.00 : 5d1b8f: 48 63 f0 movslq %eax,%rsi 0.00 : 5d1b92: b8 ff ff ff 3f mov $0x3fffffff,%eax 0.00 : 5d1b97: 48 0f 4d f0 cmovge %rax,%rsi : newlen = (int) MaxAllocSize; : : str->data = (char *) repalloc(str->data, newlen); 0.00 : 5d1b9b: e8 50 71 1c 00 callq 798cf0 : : str->maxlen = newlen; 0.00 : 5d1ba0: 41 89 5c 24 0c mov %ebx,0xc(%r12) : * overflow. We will still have newlen >= needed. : */ : if (newlen > (int) MaxAllocSize) : newlen = (int) MaxAllocSize; : : str->data = (char *) repalloc(str->data, newlen); 0.00 : 5d1ba5: 49 89 04 24 mov %rax,(%r12) : : str->maxlen = newlen; : } 0.00 : 5d1ba9: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:289 11.11 : 5d1baa: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:289 3.70 : 5d1bac: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/lib/stringinfo.c:289 11.11 : 5d1bad: c3 retq : /* : * Guard against out-of-range "needed" values. Without this, we can get : * an overflow or infinite loop in the following. : */ : if (needed < 0) /* should not happen */ : elog(ERROR, "invalid string enlargement request size: %d", needed); 0.00 : 5d1bae: ba 10 d6 88 00 mov $0x88d610,%edx 0.00 : 5d1bb3: be fe 00 00 00 mov $0xfe,%esi 0.00 : 5d1bb8: bf 89 d5 88 00 mov $0x88d589,%edi 0.00 : 5d1bbd: e8 5e 98 1a 00 callq 77b420 0.00 : 5d1bc2: 89 da mov %ebx,%edx 0.00 : 5d1bc4: be 98 d5 88 00 mov $0x88d598,%esi 0.00 : 5d1bc9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5d1bce: 31 c0 xor %eax,%eax 0.00 : 5d1bd0: e8 5b 96 1a 00 callq 77b230 0.00 : 5d1bd5: e8 f6 78 e9 ff callq 4694d0 : if (((Size) needed) >= (MaxAllocSize - (Size) str->len)) : ereport(ERROR, 0.00 : 5d1bda: 45 31 c0 xor %r8d,%r8d 0.00 : 5d1bdd: b9 10 d6 88 00 mov $0x88d610,%ecx 0.00 : 5d1be2: ba 04 01 00 00 mov $0x104,%edx 0.00 : 5d1be7: be 89 d5 88 00 mov $0x88d589,%esi 0.00 : 5d1bec: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5d1bf1: e8 ca 8e 1a 00 callq 77aac0 0.00 : 5d1bf6: 84 c0 test %al,%al 0.00 : 5d1bf8: 75 05 jne 5d1bff 0.00 : 5d1bfa: e8 d1 78 e9 ff callq 4694d0 0.00 : 5d1bff: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 5d1c04: 89 da mov %ebx,%edx 0.00 : 5d1c06: bf c8 d5 88 00 mov $0x88d5c8,%edi 0.00 : 5d1c0b: 31 c0 xor %eax,%eax 0.00 : 5d1c0d: e8 1e a9 1a 00 callq 77c530 0.00 : 5d1c12: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 5d1c17: 41 89 c4 mov %eax,%r12d 0.00 : 5d1c1a: 31 c0 xor %eax,%eax 0.00 : 5d1c1c: e8 7f ac 1a 00 callq 77c8a0 0.00 : 5d1c21: bf 05 01 00 00 mov $0x105,%edi 0.00 : 5d1c26: 89 c3 mov %eax,%ebx 0.00 : 5d1c28: e8 23 b1 1a 00 callq 77cd50 0.00 : 5d1c2d: 44 89 e2 mov %r12d,%edx 0.00 : 5d1c30: 89 c7 mov %eax,%edi 0.00 : 5d1c32: 89 de mov %ebx,%esi 0.00 : 5d1c34: 31 c0 xor %eax,%eax 0.00 : 5d1c36: e8 a5 89 1a 00 callq 77a5e0 0.00 : 5d1c3b: eb bd jmp 5d1bfa Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 74.07 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:82 7.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:82 7.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:96 7.41 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:110 3.70 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:152 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694ed0 : : * treat such a page as empty and without free space. Eventually, VACUUM : * will clean up such a page and make it usable. : */ : bool : PageIsVerified(Page page, BlockNumber blkno) : { 0.00 : 694ed0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:82 74.07 : 694ed1: 48 89 e5 mov %rsp,%rbp 0.00 : 694ed4: 41 55 push %r13 7.41 : 694ed6: 41 54 push %r12 0.00 : 694ed8: 41 89 f4 mov %esi,%r12d 0.00 : 694edb: 53 push %rbx 0.00 : 694edc: 48 89 fb mov %rdi,%rbx 0.00 : 694edf: 48 83 ec 08 sub $0x8,%rsp : uint16 checksum = 0; : : /* : * Don't verify page data unless the page passes basic non-zero test : */ : if (!PageIsNew(page)) 0.00 : 694ee3: 66 83 7f 0e 00 cmpw $0x0,0xe(%rdi) 0.00 : 694ee8: 75 56 jne 694f40 0.00 : 694eea: 45 31 e4 xor %r12d,%r12d 0.00 : 694eed: 45 31 ed xor %r13d,%r13d 0.00 : 694ef0: 31 c9 xor %ecx,%ecx : p->pd_upper <= p->pd_special && : p->pd_special <= BLCKSZ && : p->pd_special == MAXALIGN(p->pd_special)) : header_sane = true; : : if (header_sane && !checksum_failure) 0.00 : 694ef2: 31 c0 xor %eax,%eax 0.00 : 694ef4: eb 16 jmp 694f0c 0.00 : 694ef6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 694efd: 00 00 00 : /* Check all-zeroes case */ : all_zeroes = true; : pagebytes = (char *) page; : for (i = 0; i < BLCKSZ; i++) : { : if (pagebytes[i] != 0) 0.00 : 694f00: 48 83 c0 01 add $0x1,%rax : } : : /* Check all-zeroes case */ : all_zeroes = true; : pagebytes = (char *) page; : for (i = 0; i < BLCKSZ; i++) 0.00 : 694f04: 48 3d 00 20 00 00 cmp $0x2000,%rax 0.00 : 694f0a: 74 24 je 694f30 : { : if (pagebytes[i] != 0) 0.00 : 694f0c: 80 3c 03 00 cmpb $0x0,(%rbx,%rax,1) 0.00 : 694f10: 74 ee je 694f00 : : /* : * Throw a WARNING if the checksum fails, but only after we've checked for : * the all-zeroes case. : */ : if (checksum_failure) 0.00 : 694f12: 84 c9 test %cl,%cl 0.00 : 694f14: 0f 85 86 00 00 00 jne 694fa0 : ereport(WARNING, : (ERRCODE_DATA_CORRUPTED, : errmsg("page verification failed, calculated checksum %u but expected %u", : checksum, p->pd_checksum))); : : if (header_sane && ignore_checksum_failure) 0.00 : 694f1a: 31 c0 xor %eax,%eax : return true; : } : : return false; : } 0.00 : 694f1c: 48 83 c4 08 add $0x8,%rsp 0.00 : 694f20: 5b pop %rbx 0.00 : 694f21: 41 5c pop %r12 0.00 : 694f23: 41 5d pop %r13 0.00 : 694f25: c9 leaveq 0.00 : 694f26: c3 retq 0.00 : 694f27: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 694f2e: 00 00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:152 3.70 : 694f30: 48 83 c4 08 add $0x8,%rsp : ereport(WARNING, : (ERRCODE_DATA_CORRUPTED, : errmsg("page verification failed, calculated checksum %u but expected %u", : checksum, p->pd_checksum))); : : if (header_sane && ignore_checksum_failure) 0.00 : 694f34: b8 01 00 00 00 mov $0x1,%eax : return true; : } : : return false; : } 0.00 : 694f39: 5b pop %rbx 0.00 : 694f3a: 41 5c pop %r12 0.00 : 694f3c: 41 5d pop %r13 0.00 : 694f3e: c9 leaveq 0.00 : 694f3f: c3 retq : /* : * Don't verify page data unless the page passes basic non-zero test : */ : if (!PageIsNew(page)) : { : if (DataChecksumsEnabled()) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:96 7.41 : 694f40: e8 7b 80 e3 ff callq 4ccfc0 0.00 : 694f45: 45 31 ed xor %r13d,%r13d 0.00 : 694f48: 31 c9 xor %ecx,%ecx 0.00 : 694f4a: 84 c0 test %al,%al 0.00 : 694f4c: 0f 85 96 00 00 00 jne 694fe8 : * The following checks don't prove the header is correct, only that : * it looks sane enough to allow into the buffer pool. Later usage of : * the block can still reveal problems, which is why we offer the : * checksum option. : */ : if ((p->pd_flags & ~PD_VALID_FLAG_BITS) == 0 && /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:110 7.41 : 694f52: 0f b7 43 0a movzwl 0xa(%rbx),%eax 0.00 : 694f56: a9 f8 ff 00 00 test $0xfff8,%eax 0.00 : 694f5b: 0f 85 7f 00 00 00 jne 694fe0 0.00 : 694f61: 0f b7 43 0e movzwl 0xe(%rbx),%eax 0.00 : 694f65: 66 39 43 0c cmp %ax,0xc(%rbx) 0.00 : 694f69: 77 75 ja 694fe0 0.00 : 694f6b: 0f b7 53 10 movzwl 0x10(%rbx),%edx 0.00 : 694f6f: 66 39 d0 cmp %dx,%ax 0.00 : 694f72: 77 6c ja 694fe0 0.00 : 694f74: 66 81 fa 00 20 cmp $0x2000,%dx 0.00 : 694f79: 77 65 ja 694fe0 0.00 : 694f7b: 0f b7 d2 movzwl %dx,%edx 0.00 : 694f7e: 48 8d 42 07 lea 0x7(%rdx),%rax 0.00 : 694f82: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 694f86: 48 39 c2 cmp %rax,%rdx 0.00 : 694f89: 75 55 jne 694fe0 : p->pd_upper <= p->pd_special && : p->pd_special <= BLCKSZ && : p->pd_special == MAXALIGN(p->pd_special)) : header_sane = true; : : if (header_sane && !checksum_failure) 0.00 : 694f8b: 84 c9 test %cl,%cl 0.00 : 694f8d: 74 a1 je 694f30 0.00 : 694f8f: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 694f95: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 694f9a: e9 53 ff ff ff jmpq 694ef2 0.00 : 694f9f: 90 nop : * Throw a WARNING if the checksum fails, but only after we've checked for : * the all-zeroes case. : */ : if (checksum_failure) : { : ereport(WARNING, 0.00 : 694fa0: 45 31 c0 xor %r8d,%r8d 0.00 : 694fa3: b9 e4 de 8a 00 mov $0x8adee4,%ecx 0.00 : 694fa8: ba 91 00 00 00 mov $0x91,%edx 0.00 : 694fad: be 33 dc 8a 00 mov $0x8adc33,%esi 0.00 : 694fb2: bf 13 00 00 00 mov $0x13,%edi 0.00 : 694fb7: e8 04 5b 0e 00 callq 77aac0 0.00 : 694fbc: 84 c0 test %al,%al 0.00 : 694fbe: 75 42 jne 695002 : (ERRCODE_DATA_CORRUPTED, : errmsg("page verification failed, calculated checksum %u but expected %u", : checksum, p->pd_checksum))); : : if (header_sane && ignore_checksum_failure) 0.00 : 694fc0: 45 84 e4 test %r12b,%r12b 0.00 : 694fc3: 0f 84 51 ff ff ff je 694f1a 0.00 : 694fc9: 80 3d b8 97 4e 00 00 cmpb $0x0,0x4e97b8(%rip) # b7e788 0.00 : 694fd0: 0f 95 c0 setne %al 0.00 : 694fd3: e9 44 ff ff ff jmpq 694f1c 0.00 : 694fd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 694fdf: 00 : p->pd_upper <= p->pd_special && : p->pd_special <= BLCKSZ && : p->pd_special == MAXALIGN(p->pd_special)) : header_sane = true; : : if (header_sane && !checksum_failure) 0.00 : 694fe0: 45 31 e4 xor %r12d,%r12d 0.00 : 694fe3: e9 0a ff ff ff jmpq 694ef2 : */ : if (!PageIsNew(page)) : { : if (DataChecksumsEnabled()) : { : checksum = pg_checksum_page((char *) page, blkno); 0.00 : 694fe8: 44 89 e6 mov %r12d,%esi 0.00 : 694feb: 48 89 df mov %rbx,%rdi 0.00 : 694fee: e8 7d 13 00 00 callq 696370 : : if (checksum != p->pd_checksum) 0.00 : 694ff3: 66 3b 43 08 cmp 0x8(%rbx),%ax : */ : if (!PageIsNew(page)) : { : if (DataChecksumsEnabled()) : { : checksum = pg_checksum_page((char *) page, blkno); 0.00 : 694ff7: 41 89 c5 mov %eax,%r13d : : if (checksum != p->pd_checksum) 0.00 : 694ffa: 0f 95 c1 setne %cl 0.00 : 694ffd: e9 50 ff ff ff jmpq 694f52 : * Throw a WARNING if the checksum fails, but only after we've checked for : * the all-zeroes case. : */ : if (checksum_failure) : { : ereport(WARNING, 0.00 : 695002: 0f b7 53 08 movzwl 0x8(%rbx),%edx 0.00 : 695006: 41 0f b7 f5 movzwl %r13w,%esi 0.00 : 69500a: bf 78 dc 8a 00 mov $0x8adc78,%edi 0.00 : 69500f: 31 c0 xor %eax,%eax 0.00 : 695011: e8 8a 78 0e 00 callq 77c8a0 0.00 : 695016: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 69501b: 89 c6 mov %eax,%esi 0.00 : 69501d: 31 c0 xor %eax,%eax 0.00 : 69501f: e8 bc 55 0e 00 callq 77a5e0 0.00 : 695024: eb 9a jmp 694fc0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 22.50 ??:0 12.50 ??:0 5.00 ??:0 5.00 ??:0 5.00 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 2.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007f90 : : * Returns true if all work is completed without reaching budget : **/ : static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector, : struct ixgbe_ring *rx_ring, : int budget) : { 0.00 : 7f90: 41 57 push %r15 : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; : u16 ntu = ring->next_to_use; : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; ??:0 2.50 : 7f92: 31 c9 xor %ecx,%ecx 0.00 : 7f94: 41 56 push %r14 0.00 : 7f96: 41 55 push %r13 0.00 : 7f98: 41 54 push %r12 0.00 : 7f9a: 55 push %rbp 0.00 : 7f9b: 48 89 f5 mov %rsi,%rbp 0.00 : 7f9e: 53 push %rbx 0.00 : 7f9f: 48 83 ec 28 sub $0x28,%rsp 0.00 : 7fa3: 48 89 7c 24 08 mov %rdi,0x8(%rsp) 0.00 : 7fa8: 89 54 24 04 mov %edx,0x4(%rsp) : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 2.50 : 7fac: 0f b7 46 52 movzwl 0x52(%rsi),%eax : u16 ntu = ring->next_to_use; 2.50 : 7fb0: 0f b7 56 50 movzwl 0x50(%rsi),%edx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 7fb4: 66 39 d0 cmp %dx,%ax 0.00 : 7fb7: 77 04 ja 7fbd 0.00 : 7fb9: 0f b7 4e 4c movzwl 0x4c(%rsi),%ecx 0.00 : 7fbd: 83 e8 01 sub $0x1,%eax : rx_ring->next_to_clean = ntc; : : prefetch(IXGBE_RX_DESC(rx_ring, ntc)); : : /* update RSC append count if present */ : if (ring_is_rsc_enabled(rx_ring)) { 0.00 : 7fc0: 4c 8d 7d 30 lea 0x30(%rbp),%r15 : else : #endif : #ifdef HAVE_VLAN_RX_REGISTER : ixgbe_receive_skb(q_vector, skb); : #else : napi_gro_receive(&q_vector->napi, skb); 0.00 : 7fc4: c7 44 24 14 00 00 00 movl $0x0,0x14(%rsp) 0.00 : 7fcb: 00 0.00 : 7fcc: 66 29 d0 sub %dx,%ax 0.00 : 7fcf: c7 44 24 18 00 00 00 movl $0x0,0x18(%rsp) 0.00 : 7fd6: 00 0.00 : 7fd7: c7 44 24 1c 00 00 00 movl $0x0,0x1c(%rsp) 0.00 : 7fde: 00 0.00 : 7fdf: 44 8d 2c 08 lea (%rax,%rcx,1),%r13d 0.00 : 7fe3: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : 7fe8: 48 83 c0 40 add $0x40,%rax 0.00 : 7fec: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 7ff1: eb 7e jmp 8071 0.00 : 7ff3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : struct sk_buff *next_skb; : #endif : u32 ntc = rx_ring->next_to_clean + 1; : : /* fetch, update, and store next to clean */ : ntc = (ntc < rx_ring->count) ? ntc : 0; 0.00 : 7ff8: 31 d2 xor %edx,%edx 0.00 : 7ffa: 31 c9 xor %ecx,%ecx 0.00 : 7ffc: 31 c0 xor %eax,%eax : rx_ring->next_to_clean = ntc; 2.50 : 7ffe: 66 89 4d 52 mov %cx,0x52(%rbp) : * It's not worth to care about 3dnow prefetches for the K6 : * because they are microcoded there and very slow. : */ : static inline void prefetch(const void *x) : { : alternative_input(BASE_PREFETCH, 0.00 : 8002: 48 03 45 20 add 0x20(%rbp),%rax 0.00 : 8006: 0f 18 08 prefetcht0 (%rax) : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 2.50 : 8009: 49 8b 07 mov (%r15),%rax : : prefetch(IXGBE_RX_DESC(rx_ring, ntc)); : : /* update RSC append count if present */ : if (ring_is_rsc_enabled(rx_ring)) { 0.00 : 800c: a8 08 test $0x8,%al 0.00 : 800e: 0f 84 bc 00 00 00 je 80d0 : __le32 rsc_enabled = rx_desc->wb.lower.lo_dword.data & : cpu_to_le32(IXGBE_RXDADV_RSCCNT_MASK); 0.00 : 8014: 8b 03 mov (%rbx),%eax : : if (unlikely(rsc_enabled)) { 0.00 : 8016: 89 c1 mov %eax,%ecx 0.00 : 8018: 81 e1 00 00 1e 00 and $0x1e0000,%ecx 0.00 : 801e: 0f 84 ac 00 00 00 je 80d0 : u32 rsc_cnt = le32_to_cpu(rsc_enabled); : : rsc_cnt >>= IXGBE_RXDADV_RSCCNT_SHIFT; : IXGBE_CB(skb)->append_cnt += rsc_cnt - 1; 0.00 : 8024: 49 8d 54 24 28 lea 0x28(%r12),%rdx 0.00 : 8029: c1 e9 11 shr $0x11,%ecx 0.00 : 802c: 0f b7 42 18 movzwl 0x18(%rdx),%eax 0.00 : 8030: 8d 44 08 ff lea -0x1(%rax,%rcx,1),%eax 0.00 : 8034: 66 89 42 18 mov %ax,0x18(%rdx) : : /* update ntc based on RSC value */ : ntc = le32_to_cpu(rx_desc->wb.upper.status_error); 0.00 : 8038: 8b 43 08 mov 0x8(%rbx),%eax : ntc &= IXGBE_RXDADV_NEXTP_MASK; 0.00 : 803b: 89 c2 mov %eax,%edx 0.00 : 803d: 81 e2 f0 ff 0f 00 and $0xffff0,%edx : ntc >>= IXGBE_RXDADV_NEXTP_SHIFT; 0.00 : 8043: c1 ea 04 shr $0x4,%edx : } : } : : /* if we are the last buffer then there is nothing else to do */ : if (likely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))) 0.00 : 8046: a8 02 test $0x2,%al 0.00 : 8048: 0f 85 8d 00 00 00 jne 80db : next_skb = rx_ring->rx_buffer_info[ntc].skb; : : ixgbe_add_active_tail(skb, next_skb); : IXGBE_CB(next_skb)->head = skb; : #else : rx_ring->rx_buffer_info[ntc].skb = skb; 0.00 : 804e: 89 d0 mov %edx,%eax 0.00 : 8050: 48 8b 55 28 mov 0x28(%rbp),%rdx 0.00 : 8054: 48 c1 e0 05 shl $0x5,%rax 0.00 : 8058: 4c 89 24 02 mov %r12,(%rdx,%rax,1) : #endif : rx_ring->rx_stats.non_eop_descs++; 0.00 : 805c: 48 83 45 78 01 addq $0x1,0x78(%rbp) : #endif /* IXGBE_FCOE */ : ixgbe_rx_skb(q_vector, rx_ring, rx_desc, skb); : : /* update budget accounting */ : budget--; : } while (likely(budget)); 0.00 : 8061: 8b 44 24 04 mov 0x4(%rsp),%eax : : /* exit if we failed to retrieve a buffer */ : if (!skb) : break; : : cleaned_count++; 0.00 : 8065: 41 83 c5 01 add $0x1,%r13d : #endif /* IXGBE_FCOE */ : ixgbe_rx_skb(q_vector, rx_ring, rx_desc, skb); : : /* update budget accounting */ : budget--; : } while (likely(budget)); 0.00 : 8069: 85 c0 test %eax,%eax 0.00 : 806b: 0f 84 f7 01 00 00 je 8268 : do { : union ixgbe_adv_rx_desc *rx_desc; : struct sk_buff *skb; : : /* return some buffers to hardware, one at a time is too slow */ : if (cleaned_count >= IXGBE_RX_BUFFER_WRITE) { 0.00 : 8071: 66 41 83 fd 0f cmp $0xf,%r13w 0.00 : 8076: 0f 87 ac 02 00 00 ja 8328 : ixgbe_alloc_rx_buffers(rx_ring, cleaned_count); : cleaned_count = 0; : } : : rx_desc = IXGBE_RX_DESC(rx_ring, rx_ring->next_to_clean); 0.00 : 807c: 0f b7 5d 52 movzwl 0x52(%rbp),%ebx 0.00 : 8080: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 8084: 48 03 5d 20 add 0x20(%rbp),%rbx : : if (!ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_DD)) ??:0 12.50 : 8088: f6 43 08 01 testb $0x1,0x8(%rbx) 22.50 : 808c: 0f 84 d6 01 00 00 je 8268 : /* : * This memory barrier is needed to keep us from reading : * any other fields out of the rx_desc until we know the : * RXD_STAT_DD bit is set : */ : rmb(); 0.00 : 8092: 0f ae e8 lfence : : /* retrieve a buffer from the ring */ : skb = ixgbe_fetch_rx_buffer(rx_ring, rx_desc); ??:0 2.50 : 8095: 48 89 de mov %rbx,%rsi 2.50 : 8098: 48 89 ef mov %rbp,%rdi 0.00 : 809b: e8 60 fb ff ff callq 7c00 : : /* exit if we failed to retrieve a buffer */ : if (!skb) 0.00 : 80a0: 48 85 c0 test %rax,%rax : * RXD_STAT_DD bit is set : */ : rmb(); : : /* retrieve a buffer from the ring */ : skb = ixgbe_fetch_rx_buffer(rx_ring, rx_desc); 0.00 : 80a3: 49 89 c4 mov %rax,%r12 : : /* exit if we failed to retrieve a buffer */ : if (!skb) 0.00 : 80a6: 0f 84 bc 01 00 00 je 8268 : struct sk_buff *skb) : { : #ifdef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : struct sk_buff *next_skb; : #endif : u32 ntc = rx_ring->next_to_clean + 1; 0.00 : 80ac: 0f b7 45 52 movzwl 0x52(%rbp),%eax 0.00 : 80b0: 8d 50 01 lea 0x1(%rax),%edx : : /* fetch, update, and store next to clean */ : ntc = (ntc < rx_ring->count) ? ntc : 0; 0.00 : 80b3: 0f b7 45 4c movzwl 0x4c(%rbp),%eax 0.00 : 80b7: 39 c2 cmp %eax,%edx 0.00 : 80b9: 0f 83 39 ff ff ff jae 7ff8 0.00 : 80bf: 89 d0 mov %edx,%eax 0.00 : 80c1: 89 d1 mov %edx,%ecx 0.00 : 80c3: 48 c1 e0 04 shl $0x4,%rax 0.00 : 80c7: e9 32 ff ff ff jmpq 7ffe 0.00 : 80cc: 0f 1f 40 00 nopl 0x0(%rax) : /* update RSC append count if present */ : if (ring_is_rsc_enabled(rx_ring)) { : __le32 rsc_enabled = rx_desc->wb.lower.lo_dword.data & : cpu_to_le32(IXGBE_RXDADV_RSCCNT_MASK); : : if (unlikely(rsc_enabled)) { 0.00 : 80d0: 8b 43 08 mov 0x8(%rbx),%eax : ntc >>= IXGBE_RXDADV_NEXTP_SHIFT; : } : } : : /* if we are the last buffer then there is nothing else to do */ : if (likely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))) 0.00 : 80d3: a8 02 test $0x2,%al 0.00 : 80d5: 0f 84 73 ff ff ff je 804e : static bool ixgbe_cleanup_headers(struct ixgbe_ring *rx_ring, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : /* verify that the packet does not have any known errors */ : if (unlikely(ixgbe_test_staterr(rx_desc, 0.00 : 80db: a9 00 00 00 3b test $0x3b000000,%eax 0.00 : 80e0: 0f 85 5a 02 00 00 jne 8340 : dev_kfree_skb_any(skb); : return true; : } : : /* place header in linear portion of buffer */ : if (skb_is_nonlinear(skb)) 0.00 : 80e6: 41 8b 4c 24 6c mov 0x6c(%r12),%ecx 2.50 : 80eb: 85 c9 test %ecx,%ecx 0.00 : 80ed: 0f 85 5d 02 00 00 jne 8350 0.00 : 80f3: 49 8b 07 mov (%r15),%rax : * Returns : true if it is FCoE pkt : */ : static inline bool ixgbe_rx_is_fcoe(struct ixgbe_ring *ring, : union ixgbe_adv_rx_desc *rx_desc) : { : __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info; 0.00 : 80f6: 0f b7 13 movzwl (%rbx),%edx : : return test_bit(__IXGBE_RX_FCOE, &ring->state) && 0.00 : 80f9: a8 20 test $0x20,%al 0.00 : 80fb: 74 0e je 810b 0.00 : 80fd: 89 d0 mov %edx,%eax 0.00 : 80ff: 83 e0 70 and $0x70,%eax 0.00 : 8102: 83 f8 20 cmp $0x20,%eax 0.00 : 8105: 0f 84 15 03 00 00 je 8420 : if (ixgbe_rx_is_fcoe(rx_ring, rx_desc)) : return false; : : #endif : /* if skb_pad returns an error the skb was freed */ : if (unlikely(skb->len < 60)) { 0.00 : 810b: 41 8b 44 24 68 mov 0x68(%r12),%eax 0.00 : 8110: 83 f8 3b cmp $0x3b,%eax 0.00 : 8113: 0f 86 17 03 00 00 jbe 8430 : #endif /* NETIF_F_GSO */ : static void ixgbe_update_rsc_stats(struct ixgbe_ring *rx_ring, : struct sk_buff *skb) : { : /* if append_cnt is 0 then frame is not RSC */ : if (!IXGBE_CB(skb)->append_cnt) 0.00 : 8119: 4d 8d 44 24 28 lea 0x28(%r12),%r8 : /* verify the packet layout is correct */ : if (ixgbe_cleanup_headers(rx_ring, rx_desc, skb)) : continue; : : /* probably a little skewed due to removing CRC */ : total_rx_bytes += skb->len; 0.00 : 811e: 01 44 24 14 add %eax,0x14(%rsp) : total_rx_packets++; 2.50 : 8122: 83 44 24 18 01 addl $0x1,0x18(%rsp) : #endif /* NETIF_F_GSO */ : static void ixgbe_update_rsc_stats(struct ixgbe_ring *rx_ring, : struct sk_buff *skb) : { : /* if append_cnt is 0 then frame is not RSC */ : if (!IXGBE_CB(skb)->append_cnt) 0.00 : 8127: 41 0f b7 40 18 movzwl 0x18(%r8),%eax 0.00 : 812c: 66 85 c0 test %ax,%ax 0.00 : 812f: 74 44 je 8175 : return; : : rx_ring->rx_stats.rsc_count += IXGBE_CB(skb)->append_cnt; : rx_ring->rx_stats.rsc_flush++; 0.00 : 8131: 48 83 45 70 01 addq $0x1,0x70(%rbp) : { : /* if append_cnt is 0 then frame is not RSC */ : if (!IXGBE_CB(skb)->append_cnt) : return; : : rx_ring->rx_stats.rsc_count += IXGBE_CB(skb)->append_cnt; 0.00 : 8136: 0f b7 c0 movzwl %ax,%eax 0.00 : 8139: 48 01 45 68 add %rax,0x68(%rbp) : #else : u16 hdr_len = ixgbe_get_headlen(skb->data, skb_headlen(skb)); : #endif : : /* set gso_size to avoid messing up TCP MSS */ : skb_shinfo(skb)->gso_size = DIV_ROUND_UP((skb->len - hdr_len), 0.00 : 813d: 41 0f b7 48 18 movzwl 0x18(%r8),%ecx : return skb->data_len; : } : : static inline unsigned int skb_headlen(const struct sk_buff *skb) : { : return skb->len - skb->data_len; 0.00 : 8142: 41 8b 54 24 68 mov 0x68(%r12),%edx 0.00 : 8147: 41 8b bc 24 d0 00 00 mov 0xd0(%r12),%edi 0.00 : 814e: 00 0.00 : 814f: 49 8b b4 24 d8 00 00 mov 0xd8(%r12),%rsi 0.00 : 8156: 00 0.00 : 8157: 8d 44 0a ff lea -0x1(%rdx,%rcx,1),%eax 0.00 : 815b: 41 2b 54 24 6c sub 0x6c(%r12),%edx 0.00 : 8160: 0f b7 d2 movzwl %dx,%edx 0.00 : 8163: 29 d0 sub %edx,%eax 0.00 : 8165: 31 d2 xor %edx,%edx 0.00 : 8167: f7 f1 div %ecx 0.00 : 8169: 66 89 44 3e 02 mov %ax,0x2(%rsi,%rdi,1) : #ifdef NETIF_F_GSO : ixgbe_set_rsc_gso_size(rx_ring, skb); : : #endif : /* gso_size is computed using append_cnt so always clear it last */ : IXGBE_CB(skb)->append_cnt = 0; 0.00 : 816e: 66 41 c7 40 18 00 00 movw $0x0,0x18(%r8) : #ifdef NETIF_F_RXHASH : static inline void ixgbe_rx_hash(struct ixgbe_ring *ring, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : if (netdev_ring(ring)->features & NETIF_F_RXHASH) 0.00 : 8175: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 8179: 8b 96 b0 00 00 00 mov 0xb0(%rsi),%edx 0.00 : 817f: f7 c2 00 00 00 10 test $0x10000000,%edx 0.00 : 8185: 74 15 je 819c : skb->rxhash = le32_to_cpu(rx_desc->wb.lower.hi_dword.rss); 2.50 : 8187: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 818a: 41 89 84 24 a8 00 00 mov %eax,0xa8(%r12) 0.00 : 8191: 00 0.00 : 8192: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 8196: 8b 96 b0 00 00 00 mov 0xb0(%rsi),%edx : { : skb_checksum_none_assert(skb); : : /* Rx csum disabled */ : #ifdef HAVE_NDO_SET_FEATURES : if (!(netdev_ring(ring)->features & NETIF_F_RXCSUM)) 2.50 : 819c: f7 c2 00 00 00 20 test $0x20000000,%edx 0.00 : 81a2: 74 2c je 81d0 : : /* ixgbe_test_staterr - tests bits in Rx descriptor status and error fields */ : static inline __le32 ixgbe_test_staterr(union ixgbe_adv_rx_desc *rx_desc, : const u32 stat_err_bits) : { : return rx_desc->wb.upper.status_error & cpu_to_le32(stat_err_bits); 0.00 : 81a4: 8b 4b 08 mov 0x8(%rbx),%ecx : if (!test_bit(__IXGBE_RX_CSUM_ENABLED, &ring->state)) : #endif : return; : : /* if IP and error */ : if (ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_IPCS) && 0.00 : 81a7: 89 c8 mov %ecx,%eax 0.00 : 81a9: 25 40 00 00 80 and $0x80000040,%eax 0.00 : 81ae: 3d 40 00 00 80 cmp $0x80000040,%eax 0.00 : 81b3: 0f 85 a7 01 00 00 jne 8360 : */ : if ((pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_UDP)) && : test_bit(__IXGBE_RX_CSUM_UDP_ZERO_ERR, &ring->state)) : return; : : ring->rx_stats.csum_err++; 0.00 : 81b9: 48 83 85 90 00 00 00 addq $0x1,0x90(%rbp) 0.00 : 81c0: 01 0.00 : 81c1: 8b 96 b0 00 00 00 mov 0xb0(%rsi),%edx 0.00 : 81c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 81ce: 00 00 : : static void ixgbe_rx_vlan(struct ixgbe_ring *ring, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : if ((netdev_ring(ring)->features & NETIF_F_HW_VLAN_RX) && 2.50 : 81d0: 80 e6 01 and $0x1,%dh 0.00 : 81d3: 74 16 je 81eb 0.00 : 81d5: f6 43 08 08 testb $0x8,0x8(%rbx) 2.50 : 81d9: 74 10 je 81eb : * Puts the VLAN TCI in @skb->vlan_tci and lets the device do the rest : */ : static inline struct sk_buff *__vlan_hwaccel_put_tag(struct sk_buff *skb, : u16 vlan_tci) : { : skb->vlan_tci = VLAN_TAG_PRESENT | vlan_tci; 0.00 : 81db: 0f b7 43 0e movzwl 0xe(%rbx),%eax 0.00 : 81df: 80 cc 10 or $0x10,%ah 0.00 : 81e2: 66 41 89 84 24 bc 00 mov %ax,0xbc(%r12) 0.00 : 81e9: 00 00 : to->queue_mapping = from->queue_mapping; : } : : static inline void skb_record_rx_queue(struct sk_buff *skb, u16 rx_queue) : { : skb->queue_mapping = rx_queue + 1; 2.50 : 81eb: 0f b6 45 4e movzbl 0x4e(%rbp),%eax : #endif : ixgbe_rx_vlan(rx_ring, rx_desc, skb); : : skb_record_rx_queue(skb, ring_queue_index(rx_ring)); : : skb->protocol = eth_type_trans(skb, netdev_ring(rx_ring)); 0.00 : 81ef: 4c 89 e7 mov %r12,%rdi 0.00 : 81f2: 83 c0 01 add $0x1,%eax 0.00 : 81f5: 66 41 89 84 24 ac 00 mov %ax,0xac(%r12) 0.00 : 81fc: 00 00 0.00 : 81fe: 48 8b 75 10 mov 0x10(%rbp),%rsi 0.00 : 8202: e8 00 00 00 00 callq 8207 0.00 : 8207: 66 41 89 44 24 7e mov %ax,0x7e(%r12) 0.00 : 820d: 49 8b 07 mov (%r15),%rax 0.00 : 8210: 0f b7 13 movzwl (%rbx),%edx : static inline bool ixgbe_rx_is_fcoe(struct ixgbe_ring *ring, : union ixgbe_adv_rx_desc *rx_desc) : { : __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info; : : return test_bit(__IXGBE_RX_FCOE, &ring->state) && 2.50 : 8213: a8 20 test $0x20,%al 0.00 : 8215: 74 0e je 8225 0.00 : 8217: 89 d0 mov %edx,%eax 0.00 : 8219: 83 e0 70 and $0x70,%eax 0.00 : 821c: 83 f8 20 cmp $0x20,%eax 0.00 : 821f: 0f 84 53 02 00 00 je 8478 : { : struct iphdr *iph = (struct iphdr *)skb->data; : __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info; : : /* verify hardware indicates this is IPv4/TCP */ : if (!(pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPV4)) || 0.00 : 8225: 81 e2 10 01 00 00 and $0x110,%edx : **/ : static inline bool ixgbe_can_lro(struct ixgbe_ring *rx_ring, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : struct iphdr *iph = (struct iphdr *)skb->data; 0.00 : 822b: 49 8b 9c 24 e0 00 00 mov 0xe0(%r12),%rbx 0.00 : 8232: 00 : __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info; : : /* verify hardware indicates this is IPv4/TCP */ : if (!(pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPV4)) || 0.00 : 8233: 81 fa 10 01 00 00 cmp $0x110,%edx 0.00 : 8239: 0f 84 59 01 00 00 je 8398 : else : #endif : #ifdef HAVE_VLAN_RX_REGISTER : ixgbe_receive_skb(q_vector, skb); : #else : napi_gro_receive(&q_vector->napi, skb); 0.00 : 823f: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : 8244: 4c 89 e6 mov %r12,%rsi 0.00 : 8247: e8 00 00 00 00 callq 824c : : #endif /* IXGBE_FCOE */ : ixgbe_rx_skb(q_vector, rx_ring, rx_desc, skb); : : /* update budget accounting */ : budget--; 0.00 : 824c: 83 6c 24 04 01 subl $0x1,0x4(%rsp) : : /* exit if we failed to retrieve a buffer */ : if (!skb) : break; : : cleaned_count++; 2.50 : 8251: 41 83 c5 01 add $0x1,%r13d : #endif /* IXGBE_FCOE */ : ixgbe_rx_skb(q_vector, rx_ring, rx_desc, skb); : : /* update budget accounting */ : budget--; : } while (likely(budget)); 0.00 : 8255: 8b 44 24 04 mov 0x4(%rsp),%eax 0.00 : 8259: 85 c0 test %eax,%eax 0.00 : 825b: 0f 85 10 fe ff ff jne 8071 0.00 : 8261: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : #ifdef IXGBE_FCOE : /* include DDPed FCoE data */ : if (ddp_bytes > 0) { 2.50 : 8268: 8b 44 24 1c mov 0x1c(%rsp),%eax 2.50 : 826c: 85 c0 test %eax,%eax 0.00 : 826e: 7e 31 jle 82a1 : unsigned int mss; : : mss = netdev_ring(rx_ring)->mtu - sizeof(struct fcoe_hdr) - 0.00 : 8270: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 8274: 8b 90 c0 01 00 00 mov 0x1c0(%rax),%edx 0.00 : 827a: 8d 72 d2 lea -0x2e(%rdx),%esi : sizeof(struct fc_frame_header) - : sizeof(struct fcoe_crc_eof); : if (mss > 512) : mss &= ~511; 0.00 : 827d: 89 f0 mov %esi,%eax 0.00 : 827f: 25 00 fe ff ff and $0xfffffe00,%eax 0.00 : 8284: 81 fe 01 02 00 00 cmp $0x201,%esi 0.00 : 828a: 0f 43 f0 cmovae %eax,%esi : total_rx_bytes += ddp_bytes; 0.00 : 828d: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 8291: 01 44 24 14 add %eax,0x14(%rsp) : total_rx_packets += DIV_ROUND_UP(ddp_bytes, mss); 0.00 : 8295: 31 d2 xor %edx,%edx 0.00 : 8297: 8d 44 06 ff lea -0x1(%rsi,%rax,1),%eax 0.00 : 829b: f7 f6 div %esi 0.00 : 829d: 01 44 24 18 add %eax,0x18(%rsp) : } : : #endif /* IXGBE_FCOE */ : rx_ring->stats.packets += total_rx_packets; 0.00 : 82a1: 8b 44 24 18 mov 0x18(%rsp),%eax 0.00 : 82a5: 48 01 45 58 add %rax,0x58(%rbp) : rx_ring->stats.bytes += total_rx_bytes; 0.00 : 82a9: 8b 44 24 14 mov 0x14(%rsp),%eax 0.00 : 82ad: 48 01 45 60 add %rax,0x60(%rbp) : q_vector->rx.total_packets += total_rx_packets; 0.00 : 82b1: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 82b6: 8b 44 24 18 mov 0x18(%rsp),%eax 0.00 : 82ba: 01 41 1c add %eax,0x1c(%rcx) : q_vector->rx.total_bytes += total_rx_bytes; ??:0 5.00 : 82bd: 8b 54 24 14 mov 0x14(%rsp),%edx 0.00 : 82c1: 01 51 18 add %edx,0x18(%rcx) : : if (cleaned_count) 0.00 : 82c4: 66 45 85 ed test %r13w,%r13w 0.00 : 82c8: 0f 85 f2 01 00 00 jne 84c0 : static void ixgbe_lro_flush_all(struct ixgbe_q_vector *q_vector) : { : struct ixgbe_lro_list *lrolist = &q_vector->lrolist; : struct sk_buff *skb, *tmp; : : skb_queue_reverse_walk_safe(&lrolist->active, skb, tmp) 0.00 : 82ce: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 82d3: 48 8b b1 a8 02 00 00 mov 0x2a8(%rcx),%rsi 0.00 : 82da: 48 89 cd mov %rcx,%rbp 0.00 : 82dd: 48 81 c5 a0 02 00 00 add $0x2a0,%rbp 0.00 : 82e4: 48 39 ee cmp %rbp,%rsi 0.00 : 82e7: 48 8b 5e 08 mov 0x8(%rsi),%rbx ??:0 2.50 : 82eb: 75 09 jne 82f6 0.00 : 82ed: eb 1a jmp 8309 0.00 : 82ef: 90 nop 0.00 : 82f0: 48 89 de mov %rbx,%rsi 0.00 : 82f3: 48 89 c3 mov %rax,%rbx : ixgbe_lro_flush(q_vector, skb); 0.00 : 82f6: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 82fb: e8 00 d3 ff ff callq 5600 : static void ixgbe_lro_flush_all(struct ixgbe_q_vector *q_vector) : { : struct ixgbe_lro_list *lrolist = &q_vector->lrolist; : struct sk_buff *skb, *tmp; : : skb_queue_reverse_walk_safe(&lrolist->active, skb, tmp) 0.00 : 8300: 48 39 eb cmp %rbp,%rbx 0.00 : 8303: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 8307: 75 e7 jne 82f0 0.00 : 8309: 8b 44 24 04 mov 0x4(%rsp),%eax 0.00 : 830d: 85 c0 test %eax,%eax 0.00 : 830f: 0f 95 c0 setne %al : #ifndef IXGBE_NO_LRO : ixgbe_lro_flush_all(q_vector); : : #endif /* IXGBE_NO_LRO */ : return !!budget; : } 0.00 : 8312: 48 83 c4 28 add $0x28,%rsp 0.00 : 8316: 5b pop %rbx 0.00 : 8317: 5d pop %rbp 0.00 : 8318: 41 5c pop %r12 0.00 : 831a: 41 5d pop %r13 0.00 : 831c: 41 5e pop %r14 0.00 : 831e: 41 5f pop %r15 0.00 : 8320: c3 retq 0.00 : 8321: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : union ixgbe_adv_rx_desc *rx_desc; : struct sk_buff *skb; : : /* return some buffers to hardware, one at a time is too slow */ : if (cleaned_count >= IXGBE_RX_BUFFER_WRITE) { : ixgbe_alloc_rx_buffers(rx_ring, cleaned_count); 0.00 : 8328: 41 0f b7 f5 movzwl %r13w,%esi 0.00 : 832c: 48 89 ef mov %rbp,%rdi 0.00 : 832f: 45 31 ed xor %r13d,%r13d 0.00 : 8332: e8 00 00 00 00 callq 8337 0.00 : 8337: e9 40 fd ff ff jmpq 807c 0.00 : 833c: 0f 1f 40 00 nopl 0x0(%rax) : /* if ddp, not passing to ULD unless for FCP_RSP or error */ : if (ixgbe_rx_is_fcoe(rx_ring, rx_desc)) { : ddp_bytes = ixgbe_fcoe_ddp(q_vector->adapter, : rx_desc, skb); : if (!ddp_bytes) { : dev_kfree_skb_any(skb); 0.00 : 8340: 4c 89 e7 mov %r12,%rdi 0.00 : 8343: e8 00 00 00 00 callq 8348 : #ifndef NETIF_F_GRO : netdev_ring(rx_ring)->last_rx = jiffies; : #endif : continue; 0.00 : 8348: e9 14 fd ff ff jmpq 8061 0.00 : 834d: 0f 1f 00 nopl (%rax) : return true; : } : : /* place header in linear portion of buffer */ : if (skb_is_nonlinear(skb)) : ixgbe_pull_tail(rx_ring, skb); 0.00 : 8350: 4c 89 e6 mov %r12,%rsi 0.00 : 8353: 48 89 ef mov %rbp,%rdi 0.00 : 8356: e8 05 b1 ff ff callq 3460 0.00 : 835b: e9 93 fd ff ff jmpq 80f3 : ixgbe_test_staterr(rx_desc, IXGBE_RXDADV_ERR_IPE)) { : ring->rx_stats.csum_err++; : return; : } : : if (!ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_L4CS)) 0.00 : 8360: f6 c1 20 test $0x20,%cl 0.00 : 8363: 0f 84 67 fe ff ff je 81d0 : return; : : if (ixgbe_test_staterr(rx_desc, IXGBE_RXDADV_ERR_TCPE)) { ??:0 5.00 : 8369: 81 e1 00 00 00 40 and $0x40000000,%ecx 0.00 : 836f: 90 nop 0.00 : 8370: 0f 84 2a 01 00 00 je 84a0 : : /* : * 82599 errata, UDP frames with a 0 checksum can be marked as : * checksum errors. : */ : if ((pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_UDP)) && 0.00 : 8376: f6 43 01 02 testb $0x2,0x1(%rbx) 0.00 : 837a: 0f 84 39 fe ff ff je 81b9 0.00 : 8380: 49 8b 07 mov (%r15),%rax 0.00 : 8383: a8 10 test $0x10,%al 0.00 : 8385: 0f 85 45 fe ff ff jne 81d0 0.00 : 838b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 8390: e9 24 fe ff ff jmpq 81b9 0.00 : 8395: 0f 1f 00 nopl (%rax) 0.00 : 8398: 49 8b 07 mov (%r15),%rax : if (!(pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPV4)) || : !(pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_TCP))) : return false; : : /* .. and RSC is not already enabled */ : if (ring_is_rsc_enabled(rx_ring)) 0.00 : 839b: a8 08 test $0x8,%al 0.00 : 839d: 0f 1f 00 nopl (%rax) 0.00 : 83a0: 0f 85 99 fe ff ff jne 823f : return false; : : /* .. and LRO is enabled */ : if (!(netdev_ring(rx_ring)->features & NETIF_F_LRO)) 0.00 : 83a6: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 83aa: 66 83 b8 b0 00 00 00 cmpw $0x0,0xb0(%rax) 0.00 : 83b1: 00 0.00 : 83b2: 0f 89 87 fe ff ff jns 823f : return false; : : /* .. and we are not in promiscuous mode */ : if (netdev_ring(rx_ring)->flags & IFF_PROMISC) 0.00 : 83b8: f6 80 b1 01 00 00 01 testb $0x1,0x1b1(%rax) 0.00 : 83bf: 0f 85 7a fe ff ff jne 823f : return skb->data_len; : } : : static inline unsigned int skb_headlen(const struct sk_buff *skb) : { : return skb->len - skb->data_len; 0.00 : 83c5: 41 8b 44 24 68 mov 0x68(%r12),%eax 0.00 : 83ca: 89 c2 mov %eax,%edx 0.00 : 83cc: 41 2b 54 24 6c sub 0x6c(%r12),%edx : return unlikely(len > skb->len) ? NULL : __pskb_pull(skb, len); : } : : static inline int pskb_may_pull(struct sk_buff *skb, unsigned int len) : { : if (likely(len <= skb_headlen(skb))) 0.00 : 83d1: 83 fa 27 cmp $0x27,%edx 0.00 : 83d4: 0f 86 f7 00 00 00 jbe 84d1 : /* .. and the header is large enough for us to read IP/TCP fields */ : if (!pskb_may_pull(skb, sizeof(struct ixgbe_lrohdr))) : return false; : : /* .. and there are no VLANs on packet */ : if (skb->protocol != __constant_htons(ETH_P_IP)) 0.00 : 83da: 66 41 83 7c 24 7e 08 cmpw $0x8,0x7e(%r12) 0.00 : 83e1: 0f 85 58 fe ff ff jne 823f : return false; : : /* .. and we are version 4 with no options */ : if (*(u8 *)iph != 0x45) 0.00 : 83e7: 80 3b 45 cmpb $0x45,(%rbx) 0.00 : 83ea: 0f 85 4f fe ff ff jne 823f : return false; : : /* .. and the packet is not fragmented */ : if (iph->frag_off & htons(IP_MF | IP_OFFSET)) 0.00 : 83f0: 66 f7 43 06 3f ff testw $0xff3f,0x6(%rbx) 0.00 : 83f6: 0f 85 43 fe ff ff jne 823f : return false; : : /* .. and that next header is TCP */ : if (iph->protocol != IPPROTO_TCP) 0.00 : 83fc: 80 7b 09 06 cmpb $0x6,0x9(%rbx) 0.00 : 8400: 0f 85 39 fe ff ff jne 823f : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : #ifndef IXGBE_NO_LRO : if (ixgbe_can_lro(rx_ring, rx_desc, skb)) : ixgbe_lro_receive(q_vector, skb); 0.00 : 8406: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi 0.00 : 840b: 4c 89 e6 mov %r12,%rsi 0.00 : 840e: e8 3d d4 ff ff callq 5850 0.00 : 8413: e9 34 fe ff ff jmpq 824c 0.00 : 8418: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 841f: 00 : static inline bool ixgbe_rx_is_fcoe(struct ixgbe_ring *ring, : union ixgbe_adv_rx_desc *rx_desc) : { : __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info; : : return test_bit(__IXGBE_RX_FCOE, &ring->state) && 0.00 : 8420: 41 8b 44 24 68 mov 0x68(%r12),%eax 0.00 : 8425: e9 ef fc ff ff jmpq 8119 0.00 : 842a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return false; : : #endif : /* if skb_pad returns an error the skb was freed */ : if (unlikely(skb->len < 60)) { : int pad_len = 60 - skb->len; 0.00 : 8430: 41 be 3c 00 00 00 mov $0x3c,%r14d : : if (skb_pad(skb, pad_len)) 0.00 : 8436: 4c 89 e7 mov %r12,%rdi : return false; : : #endif : /* if skb_pad returns an error the skb was freed */ : if (unlikely(skb->len < 60)) { : int pad_len = 60 - skb->len; 0.00 : 8439: 41 29 c6 sub %eax,%r14d : : if (skb_pad(skb, pad_len)) 0.00 : 843c: 44 89 f6 mov %r14d,%esi 0.00 : 843f: e8 00 00 00 00 callq 8444 0.00 : 8444: 85 c0 test %eax,%eax 0.00 : 8446: 0f 85 15 fc ff ff jne 8061 : */ : extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); : static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) : { : unsigned char *tmp = skb_tail_pointer(skb); : SKB_LINEAR_ASSERT(skb); 0.00 : 844c: 41 8b 54 24 6c mov 0x6c(%r12),%edx 0.00 : 8451: 85 d2 test %edx,%edx 0.00 : 8453: 0f 85 a7 00 00 00 jne 8500 : skb->tail += len; : skb->len += len; 0.00 : 8459: 44 89 f0 mov %r14d,%eax 0.00 : 845c: 41 03 44 24 68 add 0x68(%r12),%eax : extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); : static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) : { : unsigned char *tmp = skb_tail_pointer(skb); : SKB_LINEAR_ASSERT(skb); : skb->tail += len; 0.00 : 8461: 45 01 b4 24 cc 00 00 add %r14d,0xcc(%r12) 0.00 : 8468: 00 : skb->len += len; 0.00 : 8469: 41 89 44 24 68 mov %eax,0x68(%r12) 0.00 : 846e: e9 a6 fc ff ff jmpq 8119 0.00 : 8473: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : ixgbe_process_skb_fields(rx_ring, rx_desc, skb); : : #ifdef IXGBE_FCOE : /* if ddp, not passing to ULD unless for FCP_RSP or error */ : if (ixgbe_rx_is_fcoe(rx_ring, rx_desc)) { : ddp_bytes = ixgbe_fcoe_ddp(q_vector->adapter, 0.00 : 8478: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx 0.00 : 847d: 4c 89 e2 mov %r12,%rdx 0.00 : 8480: 48 89 de mov %rbx,%rsi 0.00 : 8483: 48 8b 39 mov (%rcx),%rdi 0.00 : 8486: e8 00 00 00 00 callq 848b : rx_desc, skb); : if (!ddp_bytes) { 0.00 : 848b: 85 c0 test %eax,%eax : ixgbe_process_skb_fields(rx_ring, rx_desc, skb); : : #ifdef IXGBE_FCOE : /* if ddp, not passing to ULD unless for FCP_RSP or error */ : if (ixgbe_rx_is_fcoe(rx_ring, rx_desc)) { : ddp_bytes = ixgbe_fcoe_ddp(q_vector->adapter, 0.00 : 848d: 89 44 24 1c mov %eax,0x1c(%rsp) : rx_desc, skb); : if (!ddp_bytes) { 0.00 : 8491: 0f 84 a9 fe ff ff je 8340 0.00 : 8497: 0f b7 13 movzwl (%rbx),%edx 0.00 : 849a: e9 86 fd ff ff jmpq 8225 0.00 : 849f: 90 nop : ring->rx_stats.csum_err++; : return; : } : : /* It must be a TCP or UDP packet with a valid checksum */ : skb->ip_summed = CHECKSUM_UNNECESSARY; 5.00 : 84a0: 41 0f b6 44 24 7c movzbl 0x7c(%r12),%eax ??:0 2.50 : 84a6: 83 e0 f3 and $0xfffffff3,%eax 0.00 : 84a9: 83 c8 04 or $0x4,%eax 0.00 : 84ac: 41 88 44 24 7c mov %al,0x7c(%r12) 0.00 : 84b1: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 84b5: 8b 90 b0 00 00 00 mov 0xb0(%rax),%edx 0.00 : 84bb: e9 10 fd ff ff jmpq 81d0 : rx_ring->stats.bytes += total_rx_bytes; : q_vector->rx.total_packets += total_rx_packets; : q_vector->rx.total_bytes += total_rx_bytes; : : if (cleaned_count) : ixgbe_alloc_rx_buffers(rx_ring, cleaned_count); 0.00 : 84c0: 41 0f b7 f5 movzwl %r13w,%esi 0.00 : 84c4: 48 89 ef mov %rbp,%rdi 0.00 : 84c7: e8 00 00 00 00 callq 84cc 0.00 : 84cc: e9 fd fd ff ff jmpq 82ce : : static inline int pskb_may_pull(struct sk_buff *skb, unsigned int len) : { : if (likely(len <= skb_headlen(skb))) : return 1; : if (unlikely(len > skb->len)) 0.00 : 84d1: 83 f8 27 cmp $0x27,%eax 0.00 : 84d4: 0f 86 65 fd ff ff jbe 823f : return 0; : return __pskb_pull_tail(skb, len - skb_headlen(skb)) != NULL; 0.00 : 84da: be 28 00 00 00 mov $0x28,%esi 0.00 : 84df: 4c 89 e7 mov %r12,%rdi 0.00 : 84e2: 29 d6 sub %edx,%esi 0.00 : 84e4: e8 00 00 00 00 callq 84e9 : /* .. and we are not in promiscuous mode */ : if (netdev_ring(rx_ring)->flags & IFF_PROMISC) : return false; : : /* .. and the header is large enough for us to read IP/TCP fields */ : if (!pskb_may_pull(skb, sizeof(struct ixgbe_lrohdr))) 0.00 : 84e9: 48 85 c0 test %rax,%rax 0.00 : 84ec: 0f 84 4d fd ff ff je 823f 0.00 : 84f2: e9 e3 fe ff ff jmpq 83da 0.00 : 84f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 84fe: 00 00 : */ : extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); : static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) : { : unsigned char *tmp = skb_tail_pointer(skb); : SKB_LINEAR_ASSERT(skb); 0.00 : 8500: 0f 0b ud2 0.00 : 8502: eb fe jmp 8502 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469360 <__isnanf@plt>: ??:0 100.00 : 469360: ff 25 b2 dc 6f 00 jmpq *0x6fdcb2(%rip) # b67018 <_GLOBAL_OFFSET_TABLE_+0x18> 0.00 : 469366: 68 00 00 00 00 pushq $0x0 0.00 : 46936b: e9 e0 ff ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.23 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 15.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 11.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 11.54 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1475 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1482 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1482 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1491 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679a90 : : return pg_fsync(VfdCache[file].fd); : } : : off_t : FileSeek(File file, off_t offset, int whence) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 11.54 : 679a90: 55 push %rbp 15.38 : 679a91: 89 f8 mov %edi,%eax 0.00 : 679a93: 48 89 e5 mov %rsp,%rbp 0.00 : 679a96: 4c 89 6d f0 mov %r13,-0x10(%rbp) : DO_DB(elog(LOG, "FileSeek: %d (%s) " INT64_FORMAT " " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 7.69 : 679a9a: 4c 63 ef movslq %edi,%r13 : return pg_fsync(VfdCache[file].fd); : } : : off_t : FileSeek(File file, off_t offset, int whence) : { 0.00 : 679a9d: 48 89 5d e0 mov %rbx,-0x20(%rbp) : DO_DB(elog(LOG, "FileSeek: %d (%s) " INT64_FORMAT " " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 3.85 : 679aa1: 49 c1 e5 06 shl $0x6,%r13 : return pg_fsync(VfdCache[file].fd); : } : : off_t : FileSeek(File file, off_t offset, int whence) : { 0.00 : 679aa5: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 679aa9: 4c 89 75 f8 mov %r14,-0x8(%rbp) : DO_DB(elog(LOG, "FileSeek: %d (%s) " INT64_FORMAT " " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) 0.00 : 679aad: 4d 89 ec mov %r13,%r12 : return pg_fsync(VfdCache[file].fd); : } : : off_t : FileSeek(File file, off_t offset, int whence) : { 0.00 : 679ab0: 48 83 ec 20 sub $0x20,%rsp : DO_DB(elog(LOG, "FileSeek: %d (%s) " INT64_FORMAT " " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) 0.00 : 679ab4: 4c 03 25 dd 36 50 00 add 0x5036dd(%rip),%r12 # b7d198 : return pg_fsync(VfdCache[file].fd); : } : : off_t : FileSeek(File file, off_t offset, int whence) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1438 11.54 : 679abb: 49 89 f6 mov %rsi,%r14 0.00 : 679abe: 89 d3 mov %edx,%ebx : DO_DB(elog(LOG, "FileSeek: %d (%s) " INT64_FORMAT " " INT64_FORMAT " %d", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) 0.00 : 679ac0: 41 8b 3c 24 mov (%r12),%edi /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1448 19.23 : 679ac4: 83 ff ff cmp $0xffffffff,%edi 0.00 : 679ac7: 74 6f je 679b38 : break; : } : } : else : { : switch (whence) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1475 3.85 : 679ac9: 83 fa 01 cmp $0x1,%edx 0.00 : 679acc: 0f 84 9e 00 00 00 je 679b70 0.00 : 679ad2: 83 fa 02 cmp $0x2,%edx 0.00 : 679ad5: 0f 84 05 01 00 00 je 679be0 0.00 : 679adb: 85 db test %ebx,%ebx : case SEEK_END: : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : default: : elog(ERROR, "invalid whence: %d", whence); 0.00 : 679add: ba bf a9 8a 00 mov $0x8aa9bf,%edx 0.00 : 679ae2: be d7 05 00 00 mov $0x5d7,%esi : break; : } : } : else : { : switch (whence) 0.00 : 679ae7: 75 27 jne 679b10 : { : case SEEK_SET: : if (offset < 0) 0.00 : 679ae9: 4d 85 f6 test %r14,%r14 0.00 : 679aec: 0f 88 28 01 00 00 js 679c1a : elog(ERROR, "invalid seek offset: " INT64_FORMAT, : (int64) offset); : if (VfdCache[file].seekPos != offset) 0.00 : 679af2: 4d 39 74 24 20 cmp %r14,0x20(%r12) 0.00 : 679af7: 0f 84 8b 00 00 00 je 679b88 : VfdCache[file].seekPos = lseek(VfdCache[file].fd, 0.00 : 679afd: 31 d2 xor %edx,%edx 0.00 : 679aff: 4c 89 f6 mov %r14,%rsi 0.00 : 679b02: e8 69 00 df ff callq 469b70 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1482 3.85 : 679b07: 49 89 44 24 20 mov %rax,0x20(%r12) 3.85 : 679b0c: eb 7a jmp 679b88 0.00 : 679b0e: 66 90 xchg %ax,%ax : case SEEK_END: : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : default: : elog(ERROR, "invalid whence: %d", whence); 0.00 : 679b10: bf f1 a2 8a 00 mov $0x8aa2f1,%edi 0.00 : 679b15: e8 06 19 10 00 callq 77b420 0.00 : 679b1a: 89 da mov %ebx,%edx 0.00 : 679b1c: be 3a a3 8a 00 mov $0x8aa33a,%esi 0.00 : 679b21: bf 14 00 00 00 mov $0x14,%edi 0.00 : 679b26: 31 c0 xor %eax,%eax 0.00 : 679b28: e8 03 17 10 00 callq 77b230 0.00 : 679b2d: e8 9e f9 de ff callq 4694d0 0.00 : 679b32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) : { : switch (whence) 0.00 : 679b38: 83 fa 01 cmp $0x1,%edx 0.00 : 679b3b: 0f 84 cf 00 00 00 je 679c10 0.00 : 679b41: 83 fa 02 cmp $0x2,%edx 0.00 : 679b44: 74 6a je 679bb0 0.00 : 679b46: 85 db test %ebx,%ebx : return returnCode; : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : default: : elog(ERROR, "invalid whence: %d", whence); 0.00 : 679b48: ba bf a9 8a 00 mov $0x8aa9bf,%edx 0.00 : 679b4d: be bd 05 00 00 mov $0x5bd,%esi : (int64) VfdCache[file].seekPos, : (int64) offset, whence)); : : if (FileIsNotOpen(file)) : { : switch (whence) 0.00 : 679b52: 75 bc jne 679b10 : { : case SEEK_SET: : if (offset < 0) 0.00 : 679b54: 4d 85 f6 test %r14,%r14 : elog(ERROR, "invalid seek offset: " INT64_FORMAT, 0.00 : 679b57: ba bf a9 8a 00 mov $0x8aa9bf,%edx 0.00 : 679b5c: be af 05 00 00 mov $0x5af,%esi : if (FileIsNotOpen(file)) : { : switch (whence) : { : case SEEK_SET: : if (offset < 0) 0.00 : 679b61: 0f 88 bd 00 00 00 js 679c24 : elog(ERROR, "invalid seek offset: " INT64_FORMAT, : (int64) offset); : VfdCache[file].seekPos = offset; 0.00 : 679b67: 4d 89 74 24 20 mov %r14,0x20(%r12) : break; 0.00 : 679b6c: eb 1a jmp 679b88 0.00 : 679b6e: 66 90 xchg %ax,%ax : if (VfdCache[file].seekPos != offset) : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : case SEEK_CUR: : if (offset != 0 || VfdCache[file].seekPos == FileUnknownPos) 0.00 : 679b70: 48 85 f6 test %rsi,%rsi 0.00 : 679b73: 0f 85 7f 00 00 00 jne 679bf8 0.00 : 679b79: 49 83 7c 24 20 ff cmpq $0xffffffffffffffff,0x20(%r12) 0.00 : 679b7f: 90 nop 0.00 : 679b80: 74 76 je 679bf8 0.00 : 679b82: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : default: : elog(ERROR, "invalid whence: %d", whence); : break; : } : } : return VfdCache[file].seekPos; 0.00 : 679b88: 48 8b 05 09 36 50 00 mov 0x503609(%rip),%rax # b7d198 0.00 : 679b8f: 4a 8b 54 28 20 mov 0x20(%rax,%r13,1),%rdx : } /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 3.85 : 679b94: 48 89 d0 mov %rdx,%rax 3.85 : 679b97: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 679b9b: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 679ba0: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 679ba5: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 679baa: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1500 7.69 : 679bab: c3 retq 0.00 : 679bac: 0f 1f 40 00 nopl 0x0(%rax) : break; : case SEEK_CUR: : VfdCache[file].seekPos += offset; : break; : case SEEK_END: : returnCode = FileAccess(file); 0.00 : 679bb0: 89 c7 mov %eax,%edi 0.00 : 679bb2: e8 69 fd ff ff callq 679920 : if (returnCode < 0) 0.00 : 679bb7: 85 c0 test %eax,%eax : return returnCode; 0.00 : 679bb9: 48 63 d0 movslq %eax,%rdx : case SEEK_CUR: : VfdCache[file].seekPos += offset; : break; : case SEEK_END: : returnCode = FileAccess(file); : if (returnCode < 0) 0.00 : 679bbc: 78 d6 js 679b94 : return returnCode; : VfdCache[file].seekPos = lseek(VfdCache[file].fd, 0.00 : 679bbe: 4c 89 eb mov %r13,%rbx 0.00 : 679bc1: 48 03 1d d0 35 50 00 add 0x5035d0(%rip),%rbx # b7d198 0.00 : 679bc8: ba 02 00 00 00 mov $0x2,%edx 0.00 : 679bcd: 4c 89 f6 mov %r14,%rsi 0.00 : 679bd0: 8b 3b mov (%rbx),%edi 0.00 : 679bd2: e8 99 ff de ff callq 469b70 0.00 : 679bd7: 48 89 43 20 mov %rax,0x20(%rbx) : offset, whence); : break; 0.00 : 679bdb: eb ab jmp 679b88 0.00 : 679bdd: 0f 1f 00 nopl (%rax) : if (offset != 0 || VfdCache[file].seekPos == FileUnknownPos) : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : case SEEK_END: : VfdCache[file].seekPos = lseek(VfdCache[file].fd, 0.00 : 679be0: ba 02 00 00 00 mov $0x2,%edx 0.00 : 679be5: e8 86 ff de ff callq 469b70 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1491 3.85 : 679bea: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 679bef: 90 nop : offset, whence); : break; 0.00 : 679bf0: eb 96 jmp 679b88 0.00 : 679bf2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : VfdCache[file].seekPos = lseek(VfdCache[file].fd, : offset, whence); : break; : case SEEK_CUR: : if (offset != 0 || VfdCache[file].seekPos == FileUnknownPos) : VfdCache[file].seekPos = lseek(VfdCache[file].fd, 0.00 : 679bf8: ba 01 00 00 00 mov $0x1,%edx 0.00 : 679bfd: 4c 89 f6 mov %r14,%rsi 0.00 : 679c00: e8 6b ff de ff callq 469b70 0.00 : 679c05: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 679c0a: e9 79 ff ff ff jmpq 679b88 0.00 : 679c0f: 90 nop : elog(ERROR, "invalid seek offset: " INT64_FORMAT, : (int64) offset); : VfdCache[file].seekPos = offset; : break; : case SEEK_CUR: : VfdCache[file].seekPos += offset; 0.00 : 679c10: 49 01 74 24 20 add %rsi,0x20(%r12) : break; 0.00 : 679c15: e9 6e ff ff ff jmpq 679b88 : { : switch (whence) : { : case SEEK_SET: : if (offset < 0) : elog(ERROR, "invalid seek offset: " INT64_FORMAT, 0.00 : 679c1a: ba bf a9 8a 00 mov $0x8aa9bf,%edx 0.00 : 679c1f: be c8 05 00 00 mov $0x5c8,%esi 0.00 : 679c24: bf f1 a2 8a 00 mov $0x8aa2f1,%edi 0.00 : 679c29: e8 f2 17 10 00 callq 77b420 0.00 : 679c2e: 4c 89 f2 mov %r14,%rdx 0.00 : 679c31: be 21 a3 8a 00 mov $0x8aa321,%esi 0.00 : 679c36: bf 14 00 00 00 mov $0x14,%edi 0.00 : 679c3b: 31 c0 xor %eax,%eax 0.00 : 679c3d: e8 ee 15 10 00 callq 77b230 0.00 : 679c42: e8 89 f8 de ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 46.15 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1736 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1736 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1785 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1724 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1731 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1731 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1775 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1732 3.85 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1785 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006983d0 <_mdfd_getseg>: : * EXTENSION_CREATE case. : */ : static MdfdVec * : _mdfd_getseg(SMgrRelation reln, ForkNumber forknum, BlockNumber blkno, : bool skipFsync, ExtensionBehavior behavior) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1723 3.85 : 6983d0: 55 push %rbp 3.85 : 6983d1: 48 89 e5 mov %rsp,%rbp 0.00 : 6983d4: 41 57 push %r15 3.85 : 6983d6: 41 56 push %r14 0.00 : 6983d8: 41 55 push %r13 0.00 : 6983da: 41 54 push %r12 0.00 : 6983dc: 53 push %rbx 0.00 : 6983dd: 89 cb mov %ecx,%ebx 0.00 : 6983df: 48 83 ec 18 sub $0x18,%rsp 3.85 : 6983e3: 89 55 c8 mov %edx,-0x38(%rbp) : MdfdVec *v = mdopen(reln, forknum, behavior); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1724 3.85 : 6983e6: 44 89 c2 mov %r8d,%edx : * EXTENSION_CREATE case. : */ : static MdfdVec * : _mdfd_getseg(SMgrRelation reln, ForkNumber forknum, BlockNumber blkno, : bool skipFsync, ExtensionBehavior behavior) : { 0.00 : 6983e9: 48 89 7d d0 mov %rdi,-0x30(%rbp) 0.00 : 6983ed: 89 75 cc mov %esi,-0x34(%rbp) 0.00 : 6983f0: 44 89 45 c4 mov %r8d,-0x3c(%rbp) : MdfdVec *v = mdopen(reln, forknum, behavior); 0.00 : 6983f4: e8 47 f5 ff ff callq 697940 : BlockNumber targetseg; : BlockNumber nextsegno; : : if (!v) 0.00 : 6983f9: 48 85 c0 test %rax,%rax : */ : static MdfdVec * : _mdfd_getseg(SMgrRelation reln, ForkNumber forknum, BlockNumber blkno, : bool skipFsync, ExtensionBehavior behavior) : { : MdfdVec *v = mdopen(reln, forknum, behavior); 0.00 : 6983fc: 49 89 c4 mov %rax,%r12 : BlockNumber targetseg; : BlockNumber nextsegno; : : if (!v) 0.00 : 6983ff: 0f 84 d3 00 00 00 je 6984d8 <_mdfd_getseg+0x108> : return NULL; /* only possible if EXTENSION_RETURN_NULL */ : : targetseg = blkno / ((BlockNumber) RELSEG_SIZE); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1731 3.85 : 698405: 44 8b 7d c8 mov -0x38(%rbp),%r15d 3.85 : 698409: 41 c1 ef 11 shr $0x11,%r15d : for (nextsegno = 1; nextsegno <= targetseg; nextsegno++) 0.00 : 69840d: 45 85 ff test %r15d,%r15d 0.00 : 698410: 0f 84 c2 00 00 00 je 6984d8 <_mdfd_getseg+0x108> : { : if (_mdnblocks(reln, forknum, v) < RELSEG_SIZE) : { : char *zerobuf = palloc0(BLCKSZ); : : mdextend(reln, forknum, 0.00 : 698416: 0f be db movsbl %bl,%ebx : : if (!v) : return NULL; /* only possible if EXTENSION_RETURN_NULL */ : : targetseg = blkno / ((BlockNumber) RELSEG_SIZE); : for (nextsegno = 1; nextsegno <= targetseg; nextsegno++) 0.00 : 698419: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 69841f: 41 be ff ff 01 00 mov $0x1ffff,%r14d : { : if (_mdnblocks(reln, forknum, v) < RELSEG_SIZE) : { : char *zerobuf = palloc0(BLCKSZ); : : mdextend(reln, forknum, 0.00 : 698425: 89 5d c0 mov %ebx,-0x40(%rbp) 0.00 : 698428: eb 1d jmp 698447 <_mdfd_getseg+0x77> 0.00 : 69842a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (v->mdfd_chain == NULL) : { : if (behavior == EXTENSION_RETURN_NULL && : FILE_POSSIBLY_DELETED(errno)) : return NULL; : ereport(ERROR, /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1775 3.85 : 698430: 49 89 c4 mov %rax,%r12 : : if (!v) : return NULL; /* only possible if EXTENSION_RETURN_NULL */ : : targetseg = blkno / ((BlockNumber) RELSEG_SIZE); : for (nextsegno = 1; nextsegno <= targetseg; nextsegno++) 0.00 : 698433: 41 83 c5 01 add $0x1,%r13d 0.00 : 698437: 41 81 c6 00 00 02 00 add $0x20000,%r14d /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1732 3.85 : 69843e: 45 39 ef cmp %r13d,%r15d 0.00 : 698441: 0f 82 91 00 00 00 jb 6984d8 <_mdfd_getseg+0x108> : { : Assert(nextsegno == v->mdfd_segno + 1); : : if (v->mdfd_chain == NULL) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1736 7.69 : 698447: 49 8b 44 24 08 mov 0x8(%r12),%rax 46.15 : 69844c: 48 85 c0 test %rax,%rax 0.00 : 69844f: 75 df jne 698430 <_mdfd_getseg+0x60> : * active segment are of size RELSEG_SIZE; therefore, pad them out : * with zeroes if needed. (This only matters if caller is : * extending the relation discontiguously, but that can happen in : * hash indexes.) : */ : if (behavior == EXTENSION_CREATE || InRecovery) 0.00 : 698451: 83 7d c4 02 cmpl $0x2,-0x3c(%rbp) 0.00 : 698455: 74 0d je 698464 <_mdfd_getseg+0x94> 0.00 : 698457: 80 3d 0a 0d 4e 00 00 cmpb $0x0,0x4e0d0a(%rip) # b79168 0.00 : 69845e: 0f 84 8c 00 00 00 je 6984f0 <_mdfd_getseg+0x120> : { : if (_mdnblocks(reln, forknum, v) < RELSEG_SIZE) 0.00 : 698464: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 698467: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 69846b: 4c 89 e2 mov %r12,%rdx 0.00 : 69846e: e8 9d f7 ff ff callq 697c10 <_mdnblocks> 0.00 : 698473: 3d ff ff 01 00 cmp $0x1ffff,%eax 0.00 : 698478: 76 7e jbe 6984f8 <_mdfd_getseg+0x128> : mdextend(reln, forknum, : nextsegno * ((BlockNumber) RELSEG_SIZE) - 1, : zerobuf, skipFsync); : pfree(zerobuf); : } : v->mdfd_chain = _mdfd_openseg(reln, forknum, +nextsegno, O_CREAT); 0.00 : 69847a: b9 40 00 00 00 mov $0x40,%ecx : } : else : { : /* We won't create segment if not existent */ : v->mdfd_chain = _mdfd_openseg(reln, forknum, nextsegno, 0); 0.00 : 69847f: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 698482: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 698486: 44 89 ea mov %r13d,%edx 0.00 : 698489: e8 72 f8 ff ff callq 697d00 <_mdfd_openseg> 0.00 : 69848e: 49 89 44 24 08 mov %rax,0x8(%r12) : } : if (v->mdfd_chain == NULL) 0.00 : 698493: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 698498: 4d 85 e4 test %r12,%r12 0.00 : 69849b: 75 96 jne 698433 <_mdfd_getseg+0x63> : { : if (behavior == EXTENSION_RETURN_NULL && 0.00 : 69849d: 83 7d c4 01 cmpl $0x1,-0x3c(%rbp) 0.00 : 6984a1: 75 0a jne 6984ad <_mdfd_getseg+0xdd> 0.00 : 6984a3: e8 18 18 dd ff callq 469cc0 <__errno_location@plt> 0.00 : 6984a8: 83 38 02 cmpl $0x2,(%rax) 0.00 : 6984ab: 74 2b je 6984d8 <_mdfd_getseg+0x108> : FILE_POSSIBLY_DELETED(errno)) : return NULL; : ereport(ERROR, 0.00 : 6984ad: 45 31 c0 xor %r8d,%r8d 0.00 : 6984b0: b9 72 e3 8a 00 mov $0x8ae372,%ecx 0.00 : 6984b5: ba f3 06 00 00 mov $0x6f3,%edx 0.00 : 6984ba: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 6984bf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6984c4: e8 f7 25 0e 00 callq 77aac0 0.00 : 6984c9: 84 c0 test %al,%al 0.00 : 6984cb: 75 5b jne 698528 <_mdfd_getseg+0x158> 0.00 : 6984cd: e8 fe 0f dd ff callq 4694d0 0.00 : 6984d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : } : v = v->mdfd_chain; : } : return v; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1785 7.69 : 6984d8: 48 83 c4 18 add $0x18,%rsp /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1785 3.85 : 6984dc: 4c 89 e0 mov %r12,%rax 0.00 : 6984df: 5b pop %rbx 0.00 : 6984e0: 41 5c pop %r12 0.00 : 6984e2: 41 5d pop %r13 0.00 : 6984e4: 41 5e pop %r14 0.00 : 6984e6: 41 5f pop %r15 0.00 : 6984e8: c9 leaveq 0.00 : 6984e9: c3 retq 0.00 : 6984ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : v->mdfd_chain = _mdfd_openseg(reln, forknum, +nextsegno, O_CREAT); : } : else : { : /* We won't create segment if not existent */ : v->mdfd_chain = _mdfd_openseg(reln, forknum, nextsegno, 0); 0.00 : 6984f0: 31 c9 xor %ecx,%ecx 0.00 : 6984f2: eb 8b jmp 69847f <_mdfd_getseg+0xaf> 0.00 : 6984f4: 0f 1f 40 00 nopl 0x0(%rax) : */ : if (behavior == EXTENSION_CREATE || InRecovery) : { : if (_mdnblocks(reln, forknum, v) < RELSEG_SIZE) : { : char *zerobuf = palloc0(BLCKSZ); 0.00 : 6984f8: bf 00 20 00 00 mov $0x2000,%edi 0.00 : 6984fd: e8 6e 0a 10 00 callq 798f70 : : mdextend(reln, forknum, 0.00 : 698502: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 698506: 44 8b 45 c0 mov -0x40(%rbp),%r8d : */ : if (behavior == EXTENSION_CREATE || InRecovery) : { : if (_mdnblocks(reln, forknum, v) < RELSEG_SIZE) : { : char *zerobuf = palloc0(BLCKSZ); 0.00 : 69850a: 48 89 c3 mov %rax,%rbx : : mdextend(reln, forknum, 0.00 : 69850d: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 698510: 48 89 c1 mov %rax,%rcx 0.00 : 698513: 44 89 f2 mov %r14d,%edx 0.00 : 698516: e8 35 fc ff ff callq 698150 : nextsegno * ((BlockNumber) RELSEG_SIZE) - 1, : zerobuf, skipFsync); : pfree(zerobuf); 0.00 : 69851b: 48 89 df mov %rbx,%rdi 0.00 : 69851e: e8 5d 06 10 00 callq 798b80 0.00 : 698523: e9 52 ff ff ff jmpq 69847a <_mdfd_getseg+0xaa> : if (v->mdfd_chain == NULL) : { : if (behavior == EXTENSION_RETURN_NULL && : FILE_POSSIBLY_DELETED(errno)) : return NULL; : ereport(ERROR, 0.00 : 698528: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 69852b: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 69852f: 44 89 ea mov %r13d,%edx 0.00 : 698532: e8 59 f7 ff ff callq 697c90 <_mdfd_segpath> 0.00 : 698537: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 69853a: 48 89 c6 mov %rax,%rsi 0.00 : 69853d: bf b0 e1 8a 00 mov $0x8ae1b0,%edi 0.00 : 698542: 31 c0 xor %eax,%eax 0.00 : 698544: e8 57 43 0e 00 callq 77c8a0 0.00 : 698549: 89 c3 mov %eax,%ebx 0.00 : 69854b: e8 a0 45 0e 00 callq 77caf0 0.00 : 698550: 89 de mov %ebx,%esi 0.00 : 698552: 89 c7 mov %eax,%edi 0.00 : 698554: 31 c0 xor %eax,%eax 0.00 : 698556: e8 85 20 0e 00 callq 77a5e0 0.00 : 69855b: e9 6d ff ff ff jmpq 6984cd <_mdfd_getseg+0xfd> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:188 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:189 16.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:191 12.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:188 12.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:189 12.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:189 8.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:188 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004b08c0 <_bt_spool>: : /* : * spool an index entry into the sort file. : */ : void : _bt_spool(BTSpool *btspool, ItemPointer self, Datum *values, bool *isnull) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:188 20.00 : 4b08c0: 55 push %rbp 12.00 : 4b08c1: 49 89 f1 mov %rsi,%r9 : tuplesort_putindextuplevalues(btspool->sortstate, btspool->index, 0.00 : 4b08c4: 48 8b 77 10 mov 0x10(%rdi),%rsi /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:189 20.00 : 4b08c8: 48 8b 3f mov (%rdi),%rdi 12.00 : 4b08cb: 49 89 c8 mov %rcx,%r8 0.00 : 4b08ce: 48 89 d1 mov %rdx,%rcx : /* : * spool an index entry into the sort file. : */ : void : _bt_spool(BTSpool *btspool, ItemPointer self, Datum *values, bool *isnull) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:188 8.00 : 4b08d1: 48 89 e5 mov %rsp,%rbp : tuplesort_putindextuplevalues(btspool->sortstate, btspool->index, : self, values, isnull); : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:191 16.00 : 4b08d4: c9 leaveq : * spool an index entry into the sort file. : */ : void : _bt_spool(BTSpool *btspool, ItemPointer self, Datum *values, bool *isnull) : { : tuplesort_putindextuplevalues(btspool->sortstate, btspool->index, /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsort.c:189 12.00 : 4b08d5: 4c 89 ca mov %r9,%rdx 0.00 : 4b08d8: e9 b3 e7 2e 00 jmpq 79f090 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 18.75 ??:0 8.33 ??:0 6.25 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 4.17 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 2.08 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000088b0 : : * @q_vector: structure containing interrupt and ring information : * @tx_ring: tx ring to clean : **/ : static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector, : struct ixgbe_ring *tx_ring) : { 0.00 : 88b0: 41 57 push %r15 ??:0 2.08 : 88b2: 41 56 push %r14 2.08 : 88b4: 49 89 f6 mov %rsi,%r14 0.00 : 88b7: 41 55 push %r13 0.00 : 88b9: 41 54 push %r12 0.00 : 88bb: 55 push %rbp 0.00 : 88bc: 53 push %rbx 0.00 : 88bd: 48 83 ec 28 sub $0x28,%rsp 2.08 : 88c1: 48 89 7c 24 10 mov %rdi,0x10(%rsp) : struct ixgbe_adapter *adapter = q_vector->adapter; 2.08 : 88c6: 4c 8b 3f mov (%rdi),%r15 : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : unsigned int total_bytes = 0, total_packets = 0; : unsigned int budget = q_vector->tx.work_limit; 0.00 : 88c9: 0f b7 4f 38 movzwl 0x38(%rdi),%ecx : unsigned int i = tx_ring->next_to_clean; 0.00 : 88cd: 0f b7 56 52 movzwl 0x52(%rsi),%edx : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 88d1: 49 8b 87 10 02 00 00 mov 0x210(%r15),%rax : : if (test_bit(__IXGBE_DOWN, &adapter->state)) 2.08 : 88d8: a8 04 test $0x4,%al 0.00 : 88da: 0f 85 88 02 00 00 jne 8b68 : struct ixgbe_adapter *adapter = q_vector->adapter; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : unsigned int total_bytes = 0, total_packets = 0; : unsigned int budget = q_vector->tx.work_limit; : unsigned int i = tx_ring->next_to_clean; 0.00 : 88e0: 0f b7 c2 movzwl %dx,%eax : { : struct ixgbe_adapter *adapter = q_vector->adapter; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : unsigned int total_bytes = 0, total_packets = 0; : unsigned int budget = q_vector->tx.work_limit; 0.00 : 88e3: 0f b7 c9 movzwl %cx,%ecx : unsigned int i = tx_ring->next_to_clean; : : if (test_bit(__IXGBE_DOWN, &adapter->state)) : return true; : : tx_buffer = &tx_ring->tx_buffer_info[i]; 0.00 : 88e6: 89 c2 mov %eax,%edx : { : struct ixgbe_adapter *adapter = q_vector->adapter; : struct ixgbe_tx_buffer *tx_buffer; : union ixgbe_adv_tx_desc *tx_desc; : unsigned int total_bytes = 0, total_packets = 0; : unsigned int budget = q_vector->tx.work_limit; 0.00 : 88e8: 89 4c 24 24 mov %ecx,0x24(%rsp) : if (test_bit(__IXGBE_DOWN, &adapter->state)) : return true; : : tx_buffer = &tx_ring->tx_buffer_info[i]; : tx_desc = IXGBE_TX_DESC(tx_ring, i); : i -= tx_ring->count; 0.00 : 88ec: 41 89 c4 mov %eax,%r12d : unsigned int i = tx_ring->next_to_clean; : : if (test_bit(__IXGBE_DOWN, &adapter->state)) : return true; : : tx_buffer = &tx_ring->tx_buffer_info[i]; 0.00 : 88ef: 48 8d 1c 52 lea (%rdx,%rdx,2),%rbx : tx_desc = IXGBE_TX_DESC(tx_ring, i); 0.00 : 88f3: 48 89 d5 mov %rdx,%rbp : i -= tx_ring->count; 0.00 : 88f6: 0f b7 56 4c movzwl 0x4c(%rsi),%edx : : if (test_bit(__IXGBE_DOWN, &adapter->state)) : return true; : : tx_buffer = &tx_ring->tx_buffer_info[i]; : tx_desc = IXGBE_TX_DESC(tx_ring, i); 0.00 : 88fa: 48 c1 e5 04 shl $0x4,%rbp 0.00 : 88fe: 48 03 6e 20 add 0x20(%rsi),%rbp : unsigned int i = tx_ring->next_to_clean; : : if (test_bit(__IXGBE_DOWN, &adapter->state)) : return true; : : tx_buffer = &tx_ring->tx_buffer_info[i]; 0.00 : 8902: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 8906: 48 03 5e 28 add 0x28(%rsi),%rbx : tx_desc = IXGBE_TX_DESC(tx_ring, i); : i -= tx_ring->count; 0.00 : 890a: c7 44 24 1c 00 00 00 movl $0x0,0x1c(%rsp) 0.00 : 8911: 00 0.00 : 8912: c7 44 24 20 00 00 00 movl $0x0,0x20(%rsp) 0.00 : 8919: 00 0.00 : 891a: 41 29 d4 sub %edx,%r12d 0.00 : 891d: 0f 1f 00 nopl (%rax) : : do { : union ixgbe_adv_tx_desc *eop_desc = tx_buffer->next_to_watch; 0.00 : 8920: 4c 8b 2b mov (%rbx),%r13 : : /* if next_to_watch is not set then there is no work pending */ : if (!eop_desc) ??:0 8.33 : 8923: 4d 85 ed test %r13,%r13 0.00 : 8926: 0f 84 f5 00 00 00 je 8a21 : break; : : /* prevent any other reads prior to eop_desc */ : rmb(); ??:0 2.08 : 892c: 0f ae e8 lfence : : /* if DD is not set pending work has not been completed */ : if (!(eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD))) 0.00 : 892f: 41 f6 45 0c 01 testb $0x1,0xc(%r13) ??:0 18.75 : 8934: 0f 84 e7 00 00 00 je 8a21 : : /* clear next_to_watch to prevent false hangs */ : tx_buffer->next_to_watch = NULL; : : /* update the statistics for this packet */ : total_bytes += tx_buffer->bytecount; 6.25 : 893a: 8b 43 18 mov 0x18(%rbx),%eax : /* if DD is not set pending work has not been completed */ : if (!(eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD))) : break; : : /* clear next_to_watch to prevent false hangs */ : tx_buffer->next_to_watch = NULL; ??:0 2.08 : 893d: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) : : /* update the statistics for this packet */ : total_bytes += tx_buffer->bytecount; 0.00 : 8944: 01 44 24 1c add %eax,0x1c(%rsp) : total_packets += tx_buffer->gso_segs; 2.08 : 8948: 0f b7 43 1c movzwl 0x1c(%rbx),%eax 0.00 : 894c: 01 44 24 20 add %eax,0x20(%rsp) : tx_buffer->skb); : : : #endif : /* free the skb */ : dev_kfree_skb_any(tx_buffer->skb); 0.00 : 8950: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 8954: e8 00 00 00 00 callq 8959 : : /* unmap skb header data */ : dma_unmap_single(tx_ring->dev, 2.08 : 8959: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 895d: 8b 53 28 mov 0x28(%rbx),%edx 0.00 : 8960: 48 8b 73 20 mov 0x20(%rbx),%rsi : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 8964: 48 85 ff test %rdi,%rdi 0.00 : 8967: 0f 84 83 01 00 00 je 8af0 4.17 : 896d: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 4.17 : 8974: 48 85 c0 test %rax,%rax 0.00 : 8977: 0f 84 73 01 00 00 je 8af0 : struct dma_attrs *attrs) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->unmap_page) 0.00 : 897d: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 8981: 48 85 c0 test %rax,%rax 0.00 : 8984: 74 0c je 8992 : ops->unmap_page(dev, addr, size, dir, attrs); 0.00 : 8986: 89 d2 mov %edx,%edx 0.00 : 8988: 45 31 c0 xor %r8d,%r8d 0.00 : 898b: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 8990: ff d0 callq *%rax : dma_unmap_addr(tx_buffer, dma), : dma_unmap_len(tx_buffer, len), : DMA_TO_DEVICE); : : /* clear tx_buffer data */ : tx_buffer->skb = NULL; 0.00 : 8992: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 8999: 00 : dma_unmap_len_set(tx_buffer, len, 0); 0.00 : 899a: c7 43 28 00 00 00 00 movl $0x0,0x28(%rbx) : : /* unmap remaining buffers */ : while (tx_desc != eop_desc) { 2.08 : 89a1: 4c 39 ed cmp %r13,%rbp 0.00 : 89a4: 74 5a je 8a00 : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { 0.00 : 89a6: 41 83 c4 01 add $0x1,%r12d 0.00 : 89aa: 0f 84 4c 01 00 00 je 8afc : tx_buffer->skb = NULL; : dma_unmap_len_set(tx_buffer, len, 0); : : /* unmap remaining buffers */ : while (tx_desc != eop_desc) { : tx_buffer++; 0.00 : 89b0: 48 83 c3 30 add $0x30,%rbx : tx_desc++; 0.00 : 89b4: 48 83 c5 10 add $0x10,%rbp : tx_buffer = tx_ring->tx_buffer_info; : tx_desc = IXGBE_TX_DESC(tx_ring, 0); : } : : /* unmap any remaining paged data */ : if (dma_unmap_len(tx_buffer, len)) { 2.08 : 89b8: 8b 53 28 mov 0x28(%rbx),%edx 2.08 : 89bb: 85 d2 test %edx,%edx 0.00 : 89bd: 74 e2 je 89a1 : dma_unmap_page(tx_ring->dev, 0.00 : 89bf: 49 8b 7e 18 mov 0x18(%r14),%rdi 0.00 : 89c3: 48 8b 73 20 mov 0x20(%rbx),%rsi 0.00 : 89c7: 48 85 ff test %rdi,%rdi 0.00 : 89ca: 0f 84 10 01 00 00 je 8ae0 0.00 : 89d0: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 2.08 : 89d7: 48 85 c0 test %rax,%rax 0.00 : 89da: 0f 84 00 01 00 00 je 8ae0 : size_t size, enum dma_data_direction dir) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->unmap_page) 4.17 : 89e0: 48 8b 40 18 mov 0x18(%rax),%rax 2.08 : 89e4: 48 85 c0 test %rax,%rax 0.00 : 89e7: 74 b1 je 899a : ops->unmap_page(dev, addr, size, dir, NULL); 0.00 : 89e9: 89 d2 mov %edx,%edx 2.08 : 89eb: 45 31 c0 xor %r8d,%r8d 0.00 : 89ee: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 89f3: ff d0 callq *%rax 2.08 : 89f5: eb a3 jmp 899a 0.00 : 89f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 89fe: 00 00 : : /* move us one more past the eop_desc for start of next pkt */ : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { 4.17 : 8a00: 41 83 c4 01 add $0x1,%r12d 0.00 : 8a04: 0f 84 10 02 00 00 je 8c1a : dma_unmap_len_set(tx_buffer, len, 0); : } : } : : /* move us one more past the eop_desc for start of next pkt */ : tx_buffer++; 0.00 : 8a0a: 48 83 c3 30 add $0x30,%rbx : tx_desc++; 0.00 : 8a0e: 48 83 c5 10 add $0x10,%rbp : * It's not worth to care about 3dnow prefetches for the K6 : * because they are microcoded there and very slow. : */ : static inline void prefetch(const void *x) : { : alternative_input(BASE_PREFETCH, 0.00 : 8a12: 0f 18 4d 00 prefetcht0 0x0(%rbp) : /* issue prefetch for next Tx descriptor */ : prefetch(tx_desc); : : /* update budget accounting */ : budget--; : } while (likely(budget)); 0.00 : 8a16: 83 6c 24 24 01 subl $0x1,0x24(%rsp) 0.00 : 8a1b: 0f 85 ff fe ff ff jne 8920 : : i += tx_ring->count; 0.00 : 8a21: 41 0f b7 46 4c movzwl 0x4c(%r14),%eax : tx_ring->next_to_clean = i; : tx_ring->stats.bytes += total_bytes; : tx_ring->stats.packets += total_packets; : q_vector->tx.total_bytes += total_bytes; 0.00 : 8a26: 48 8b 54 24 10 mov 0x10(%rsp),%rdx : q_vector->tx.total_packets += total_packets; : : if (check_for_tx_hang(tx_ring) && ixgbe_check_tx_hang(tx_ring)) { 0.00 : 8a2b: 49 8d 4e 30 lea 0x30(%r14),%rcx : : /* update budget accounting */ : budget--; : } while (likely(budget)); : : i += tx_ring->count; 0.00 : 8a2f: 41 8d 1c 04 lea (%r12,%rax,1),%ebx : tx_ring->next_to_clean = i; : tx_ring->stats.bytes += total_bytes; 0.00 : 8a33: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 8a37: 49 01 46 60 add %rax,0x60(%r14) : tx_ring->stats.packets += total_packets; 2.08 : 8a3b: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : 8a3f: 49 01 46 58 add %rax,0x58(%r14) : /* update budget accounting */ : budget--; : } while (likely(budget)); : : i += tx_ring->count; : tx_ring->next_to_clean = i; 0.00 : 8a43: 66 41 89 5e 52 mov %bx,0x52(%r14) : tx_ring->stats.bytes += total_bytes; : tx_ring->stats.packets += total_packets; : q_vector->tx.total_bytes += total_bytes; 0.00 : 8a48: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 8a4c: 01 42 30 add %eax,0x30(%rdx) : q_vector->tx.total_packets += total_packets; 0.00 : 8a4f: 8b 44 24 20 mov 0x20(%rsp),%eax 0.00 : 8a53: 01 42 34 add %eax,0x34(%rdx) 0.00 : 8a56: 49 8b 46 30 mov 0x30(%r14),%rax : : if (check_for_tx_hang(tx_ring) && ixgbe_check_tx_hang(tx_ring)) { 0.00 : 8a5a: a8 02 test $0x2,%al 0.00 : 8a5c: 74 63 je 8ac1 : return ring->stats.packets; : } : : static u64 ixgbe_get_tx_pending(struct ixgbe_ring *ring) : { : struct ixgbe_adapter *adapter = ring->q_vector->adapter; 0.00 : 8a5e: 49 8b 46 08 mov 0x8(%r14),%rax : return ((head <= tail) ? tail : tail + ring->count) - head; : } : : static bool ixgbe_check_tx_hang(struct ixgbe_ring *tx_ring) : { : u32 tx_done = ixgbe_get_tx_completed(tx_ring); 0.00 : 8a62: 41 8b 7e 58 mov 0x58(%r14),%edi : u32 tx_done_old = tx_ring->tx_stats.tx_done_old; 0.00 : 8a66: 4d 8b 46 78 mov 0x78(%r14),%r8 : return ring->stats.packets; : } : : static u64 ixgbe_get_tx_pending(struct ixgbe_ring *ring) : { : struct ixgbe_adapter *adapter = ring->q_vector->adapter; 0.00 : 8a6a: 48 8b 10 mov (%rax),%rdx : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 8a6d: 41 0f b6 46 4f movzbl 0x4f(%r14),%eax 0.00 : 8a72: c1 e0 06 shl $0x6,%eax 0.00 : 8a75: 48 98 cltq 0.00 : 8a77: 48 05 10 60 00 00 add $0x6010,%rax 0.00 : 8a7d: 48 03 82 80 0e 00 00 add 0xe80(%rdx),%rax 0.00 : 8a84: 8b 30 mov (%rax),%esi 4.17 : 8a86: 41 0f b6 46 4f movzbl 0x4f(%r14),%eax 0.00 : 8a8b: c1 e0 06 shl $0x6,%eax 0.00 : 8a8e: 48 98 cltq 0.00 : 8a90: 48 05 18 60 00 00 add $0x6018,%rax 0.00 : 8a96: 48 03 82 80 0e 00 00 add 0xe80(%rdx),%rax 0.00 : 8a9d: 8b 10 mov (%rax),%edx : struct ixgbe_hw *hw = &adapter->hw; : : u32 head = IXGBE_READ_REG(hw, IXGBE_TDH(ring->reg_idx)); : u32 tail = IXGBE_READ_REG(hw, IXGBE_TDT(ring->reg_idx)); : : return ((head <= tail) ? tail : tail + ring->count) - head; 2.08 : 8a9f: 39 d6 cmp %edx,%esi 0.00 : 8aa1: 76 07 jbe 8aaa 0.00 : 8aa3: 41 0f b7 46 4c movzwl 0x4c(%r14),%eax 0.00 : 8aa8: 01 c2 add %eax,%edx : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 8aaa: f0 41 80 66 30 fd lock andb $0xfd,0x30(%r14) : * requiring this to fail twice we avoid races with : * PFC clearing the ARMED bit and conditions where we : * run the check_tx_hang logic with a transmit completion : * pending but without time to complete it yet. : */ : if ((tx_done_old == tx_done) && tx_pending) { 0.00 : 8ab0: 44 39 c7 cmp %r8d,%edi 0.00 : 8ab3: 74 5c je 8b11 : /* make sure it is true for two checks in a row */ : ret = test_and_set_bit(__IXGBE_HANG_CHECK_ARMED, : &tx_ring->state); : } else { : /* update completed stats and continue */ : tx_ring->tx_stats.tx_done_old = tx_done; 0.00 : 8ab5: 89 ff mov %edi,%edi 0.00 : 8ab7: 49 89 7e 78 mov %rdi,0x78(%r14) 0.00 : 8abb: f0 41 80 66 30 fb lock andb $0xfb,0x30(%r14) : /* the adapter is about to reset, no point in enabling stuff */ : return true; : } : : #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2) : if (unlikely(total_packets && netif_carrier_ok(netdev_ring(tx_ring)) && 0.00 : 8ac1: 8b 7c 24 20 mov 0x20(%rsp),%edi 0.00 : 8ac5: 85 ff test %edi,%edi 0.00 : 8ac7: 0f 85 af 00 00 00 jne 8b7c : ++tx_ring->tx_stats.restart_queue; : } : #endif : } : : return !!budget; 0.00 : 8acd: 8b 74 24 24 mov 0x24(%rsp),%esi 0.00 : 8ad1: 85 f6 test %esi,%esi 0.00 : 8ad3: 0f 95 c0 setne %al : } 0.00 : 8ad6: e9 92 00 00 00 jmpq 8b6d 0.00 : 8adb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return dma_ops; 2.08 : 8ae0: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 8ae7 0.00 : 8ae7: e9 f4 fe ff ff jmpq 89e0 0.00 : 8aec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8af0: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 8af7 0.00 : 8af7: e9 81 fe ff ff jmpq 897d : while (tx_desc != eop_desc) { : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { : i -= tx_ring->count; 0.00 : 8afc: 45 0f b7 66 4c movzwl 0x4c(%r14),%r12d : tx_buffer = tx_ring->tx_buffer_info; 0.00 : 8b01: 49 8b 5e 28 mov 0x28(%r14),%rbx : tx_desc = IXGBE_TX_DESC(tx_ring, 0); 0.00 : 8b05: 49 8b 6e 20 mov 0x20(%r14),%rbp : while (tx_desc != eop_desc) { : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { : i -= tx_ring->count; 0.00 : 8b09: 41 f7 dc neg %r12d 0.00 : 8b0c: e9 a7 fe ff ff jmpq 89b8 : * requiring this to fail twice we avoid races with : * PFC clearing the ARMED bit and conditions where we : * run the check_tx_hang logic with a transmit completion : * pending but without time to complete it yet. : */ : if ((tx_done_old == tx_done) && tx_pending) { 0.00 : 8b11: 39 f2 cmp %esi,%edx 0.00 : 8b13: 74 a0 je 8ab5 : */ : static inline int test_and_set_bit(int nr, volatile unsigned long *addr) : { : int oldbit; : : asm volatile(LOCK_PREFIX "bts %2,%1\n\t" 0.00 : 8b15: f0 0f ba 29 02 lock btsl $0x2,(%rcx) 0.00 : 8b1a: 19 c0 sbb %eax,%eax : tx_ring->stats.bytes += total_bytes; : tx_ring->stats.packets += total_packets; : q_vector->tx.total_bytes += total_bytes; : q_vector->tx.total_packets += total_packets; : : if (check_for_tx_hang(tx_ring) && ixgbe_check_tx_hang(tx_ring)) { 0.00 : 8b1c: 85 c0 test %eax,%eax 0.00 : 8b1e: 74 a1 je 8ac1 : " next_to_use <%x>\n" : " next_to_clean <%x>\n", : tx_ring->queue_index, : IXGBE_READ_REG(hw, IXGBE_TDH(tx_ring->reg_idx)), : IXGBE_READ_REG(hw, IXGBE_TDT(tx_ring->reg_idx)), : tx_ring->next_to_use, i); 0.00 : 8b20: 41 f6 87 a8 14 00 00 testb $0x1,0x14a8(%r15) 0.00 : 8b27: 01 0.00 : 8b28: 0f 85 34 01 00 00 jne 8c62 : : static inline : struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, : unsigned int index) : { : return &dev->_tx[index]; 0.00 : 8b2e: 49 8b 46 10 mov 0x10(%r14),%rax : e_err(drv, "tx_buffer_info[next_to_clean]\n" : " time_stamp <%lx>\n" : " jiffies <%lx>\n", : tx_ring->tx_buffer_info[i].time_stamp, jiffies); : : netif_stop_subqueue(netdev_ring(tx_ring), 0.00 : 8b32: 41 0f b6 5e 4e movzbl 0x4e(%r14),%ebx 0.00 : 8b37: 48 8b a8 80 03 00 00 mov 0x380(%rax),%rbp : */ : static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index) : { : struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); : #ifdef CONFIG_NETPOLL_TRAP : if (netpoll_trap()) 0.00 : 8b3e: e8 00 00 00 00 callq 8b43 0.00 : 8b43: 85 c0 test %eax,%eax 0.00 : 8b45: 0f 84 01 01 00 00 je 8c4c : ring_queue_index(tx_ring)); : : e_info(probe, 0.00 : 8b4b: 41 f6 87 a8 14 00 00 testb $0x2,0x14a8(%r15) 0.00 : 8b52: 02 0.00 : 8b53: 0f 85 a0 01 00 00 jne 8cf9 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 8b59: 49 8b 87 10 02 00 00 mov 0x210(%r15),%rax : **/ : static void ixgbe_tx_timeout_reset(struct ixgbe_adapter *adapter) : { : : /* Do the reset outside of interrupt context */ : if (!test_bit(__IXGBE_DOWN, &adapter->state)) { 0.00 : 8b60: a8 04 test $0x4,%al 0.00 : 8b62: 0f 84 c7 00 00 00 je 8c2f : ++tx_ring->tx_stats.restart_queue; : } : #endif : } : : return !!budget; 0.00 : 8b68: b8 01 00 00 00 mov $0x1,%eax : } 0.00 : 8b6d: 48 83 c4 28 add $0x28,%rsp 0.00 : 8b71: 5b pop %rbx 0.00 : 8b72: 5d pop %rbp 0.00 : 8b73: 41 5c pop %r12 0.00 : 8b75: 41 5d pop %r13 0.00 : 8b77: 41 5e pop %r14 0.00 : 8b79: 41 5f pop %r15 0.00 : 8b7b: c3 retq : * : * Check if carrier is present on device : */ : static inline int netif_carrier_ok(const struct net_device *dev) : { : return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); 0.00 : 8b7c: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 8b80: 48 8b 40 78 mov 0x78(%rax),%rax : /* the adapter is about to reset, no point in enabling stuff */ : return true; : } : : #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2) : if (unlikely(total_packets && netif_carrier_ok(netdev_ring(tx_ring)) && 2.08 : 8b84: a8 04 test $0x4,%al 0.00 : 8b86: 0f 85 41 ff ff ff jne 8acd : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 0.00 : 8b8c: 41 0f b7 46 52 movzwl 0x52(%r14),%eax : u16 ntu = ring->next_to_use; 0.00 : 8b91: 41 0f b7 4e 50 movzwl 0x50(%r14),%ecx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 8b96: 31 d2 xor %edx,%edx 0.00 : 8b98: 66 39 c8 cmp %cx,%ax 0.00 : 8b9b: 77 05 ja 8ba2 0.00 : 8b9d: 41 0f b7 56 4c movzwl 0x4c(%r14),%edx 0.00 : 8ba2: 83 e8 01 sub $0x1,%eax 0.00 : 8ba5: 66 29 c8 sub %cx,%ax 0.00 : 8ba8: 01 d0 add %edx,%eax 0.00 : 8baa: 66 83 f8 2b cmp $0x2b,%ax 0.00 : 8bae: 0f 86 19 ff ff ff jbe 8acd : (ixgbe_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD))) { : /* Make sure that anybody stopping the queue after this : * sees the new next_to_clean. : */ : smp_mb(); 0.00 : 8bb4: 0f ae f0 mfence : : static inline : struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, : unsigned int index) : { : return &dev->_tx[index]; 2.08 : 8bb7: 41 0f b6 5e 4e movzbl 0x4e(%r14),%ebx 0.00 : 8bbc: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 8bc0: 48 c1 e3 08 shl $0x8,%rbx 0.00 : 8bc4: 48 03 98 80 03 00 00 add 0x380(%rax),%rbx 0.00 : 8bcb: 48 8b 43 10 mov 0x10(%rbx),%rax : } : } : : static inline int netif_tx_queue_stopped(const struct netdev_queue *dev_queue) : { : return test_bit(__QUEUE_STATE_XOFF, &dev_queue->state); 2.08 : 8bcf: 48 8d 6b 10 lea 0x10(%rbx),%rbp : #ifdef HAVE_TX_MQ : if (__netif_subqueue_stopped(netdev_ring(tx_ring), 0.00 : 8bd3: a8 01 test $0x1,%al 0.00 : 8bd5: 0f 84 f2 fe ff ff je 8acd 0.00 : 8bdb: 48 8b 54 24 10 mov 0x10(%rsp),%rdx 0.00 : 8be0: 48 8b 02 mov (%rdx),%rax 0.00 : 8be3: 48 8b 80 10 02 00 00 mov 0x210(%rax),%rax 0.00 : 8bea: a8 04 test $0x4,%al 0.00 : 8bec: 0f 85 db fe ff ff jne 8acd : */ : static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index) : { : struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); : #ifdef CONFIG_NETPOLL_TRAP : if (netpoll_trap()) 0.00 : 8bf2: e8 00 00 00 00 callq 8bf7 0.00 : 8bf7: 85 c0 test %eax,%eax 0.00 : 8bf9: 75 15 jne 8c10 : */ : static inline int test_and_clear_bit(int nr, volatile unsigned long *addr) : { : int oldbit; : : asm volatile(LOCK_PREFIX "btr %2,%1\n\t" 0.00 : 8bfb: f0 0f ba 75 00 00 lock btrl $0x0,0x0(%rbp) 0.00 : 8c01: 19 c0 sbb %eax,%eax : return; : #endif : if (test_and_clear_bit(__QUEUE_STATE_XOFF, &txq->state)) 0.00 : 8c03: 85 c0 test %eax,%eax 0.00 : 8c05: 74 09 je 8c10 : __netif_schedule(txq->qdisc); 0.00 : 8c07: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 8c0b: e8 00 00 00 00 callq 8c10 : ring_queue_index(tx_ring)) : && !test_bit(__IXGBE_DOWN, &q_vector->adapter->state)) { : netif_wake_subqueue(netdev_ring(tx_ring), : ring_queue_index(tx_ring)); : ++tx_ring->tx_stats.restart_queue; 0.00 : 8c10: 49 83 46 68 01 addq $0x1,0x68(%r14) 0.00 : 8c15: e9 b3 fe ff ff jmpq 8acd : /* move us one more past the eop_desc for start of next pkt */ : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { : i -= tx_ring->count; 0.00 : 8c1a: 45 0f b7 66 4c movzwl 0x4c(%r14),%r12d : tx_buffer = tx_ring->tx_buffer_info; 0.00 : 8c1f: 49 8b 5e 28 mov 0x28(%r14),%rbx : tx_desc = IXGBE_TX_DESC(tx_ring, 0); 0.00 : 8c23: 49 8b 6e 20 mov 0x20(%r14),%rbp : /* move us one more past the eop_desc for start of next pkt */ : tx_buffer++; : tx_desc++; : i++; : if (unlikely(!i)) { : i -= tx_ring->count; 0.00 : 8c27: 41 f7 dc neg %r12d 0.00 : 8c2a: e9 e3 fd ff ff jmpq 8a12 : static void ixgbe_tx_timeout_reset(struct ixgbe_adapter *adapter) : { : : /* Do the reset outside of interrupt context */ : if (!test_bit(__IXGBE_DOWN, &adapter->state)) { : adapter->flags2 |= IXGBE_FLAG2_RESET_REQUESTED; 0.00 : 8c2f: 41 81 8f 1c 02 00 00 orl $0x80,0x21c(%r15) 0.00 : 8c36: 80 00 00 00 : ixgbe_service_event_schedule(adapter); 0.00 : 8c3a: 4c 89 ff mov %r15,%rdi 0.00 : 8c3d: e8 9e 85 ff ff callq 11e0 0.00 : 8c42: b8 01 00 00 00 mov $0x1,%eax 0.00 : 8c47: e9 21 ff ff ff jmpq 8b6d : struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); : #ifdef CONFIG_NETPOLL_TRAP : if (netpoll_trap()) : return; : #endif : netif_tx_stop_queue(txq); 0.00 : 8c4c: 0f b6 fb movzbl %bl,%edi 0.00 : 8c4f: 48 c1 e7 08 shl $0x8,%rdi 0.00 : 8c53: 48 8d 7c 3d 00 lea 0x0(%rbp,%rdi,1),%rdi 0.00 : 8c58: e8 e3 a9 ff ff callq 3640 0.00 : 8c5d: e9 e9 fe ff ff jmpq 8b4b 0.00 : 8c62: 41 0f b6 46 4f movzbl 0x4f(%r14),%eax : " next_to_use <%x>\n" : " next_to_clean <%x>\n", : tx_ring->queue_index, : IXGBE_READ_REG(hw, IXGBE_TDH(tx_ring->reg_idx)), : IXGBE_READ_REG(hw, IXGBE_TDT(tx_ring->reg_idx)), : tx_ring->next_to_use, i); 0.00 : 8c67: 45 0f b7 4e 50 movzwl 0x50(%r14),%r9d 0.00 : 8c6c: c1 e0 06 shl $0x6,%eax 0.00 : 8c6f: 48 98 cltq 0.00 : 8c71: 48 05 18 60 00 00 add $0x6018,%rax 0.00 : 8c77: 49 03 87 80 0e 00 00 add 0xe80(%r15),%rax 0.00 : 8c7e: 44 8b 00 mov (%rax),%r8d 0.00 : 8c81: 41 0f b6 46 4f movzbl 0x4f(%r14),%eax 0.00 : 8c86: c1 e0 06 shl $0x6,%eax 0.00 : 8c89: 48 98 cltq 0.00 : 8c8b: 48 05 10 60 00 00 add $0x6010,%rax 0.00 : 8c91: 49 03 87 80 0e 00 00 add 0xe80(%r15),%rax 0.00 : 8c98: 8b 08 mov (%rax),%ecx 0.00 : 8c9a: 41 0f b6 56 4e movzbl 0x4e(%r14),%edx 0.00 : 8c9f: 49 8b bf 00 02 00 00 mov 0x200(%r15),%rdi 0.00 : 8ca6: 31 c0 xor %eax,%eax 0.00 : 8ca8: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 8caf: 89 1c 24 mov %ebx,(%rsp) 0.00 : 8cb2: e8 00 00 00 00 callq 8cb7 : e_err(drv, "tx_buffer_info[next_to_clean]\n" : " time_stamp <%lx>\n" : " jiffies <%lx>\n", : tx_ring->tx_buffer_info[i].time_stamp, jiffies); 0.00 : 8cb7: 41 f6 87 a8 14 00 00 testb $0x1,0x14a8(%r15) 0.00 : 8cbe: 01 0.00 : 8cbf: 0f 84 69 fe ff ff je 8b2e 0.00 : 8cc5: 89 d8 mov %ebx,%eax 0.00 : 8cc7: 49 8b 56 28 mov 0x28(%r14),%rdx 0.00 : 8ccb: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 8cd2 0.00 : 8cd2: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 8cd6: 49 8b bf 00 02 00 00 mov 0x200(%r15),%rdi 0.00 : 8cdd: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 8ce4: 48 c1 e0 04 shl $0x4,%rax 0.00 : 8ce8: 48 8b 54 02 08 mov 0x8(%rdx,%rax,1),%rdx 0.00 : 8ced: 31 c0 xor %eax,%eax 0.00 : 8cef: e8 00 00 00 00 callq 8cf4 0.00 : 8cf4: e9 35 fe ff ff jmpq 8b2e : netif_stop_subqueue(netdev_ring(tx_ring), : ring_queue_index(tx_ring)); : : e_info(probe, : "tx hang %d detected on queue %d, resetting adapter\n", : adapter->tx_timeout_count + 1, tx_ring->queue_index); 0.00 : 8cf9: 41 8b 97 d0 04 00 00 mov 0x4d0(%r15),%edx 0.00 : 8d00: 41 0f b6 4e 4e movzbl 0x4e(%r14),%ecx 0.00 : 8d05: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 8d0c: 49 8b bf 00 02 00 00 mov 0x200(%r15),%rdi 0.00 : 8d13: 31 c0 xor %eax,%eax 0.00 : 8d15: 83 c2 01 add $0x1,%edx 0.00 : 8d18: e8 00 00 00 00 callq 8d1d 0.00 : 8d1d: e9 37 fe ff ff jmpq 8b59 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 00000000004698c0 <__ctype_b_loc@plt>: ??:0 100.00 : 4698c0: ff 25 02 da 6f 00 jmpq *0x6fda02(%rip) # b672c8 <_GLOBAL_OFFSET_TABLE_+0x2c8> 0.00 : 4698c6: 68 56 00 00 00 pushq $0x56 0.00 : 4698cb: e9 80 fa ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 37.50 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:126 20.83 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:171 12.50 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:171 8.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:129 8.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:129 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:126 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:126 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:134 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c02e0 : : * Note: : * Assumes transaction identifier is valid. : */ : bool /* true if given transaction committed */ : TransactionIdDidCommit(TransactionId transactionId) : { 0.00 : 4c02e0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:126 37.50 : 4c02e1: 48 89 e5 mov %rsp,%rbp 0.00 : 4c02e4: 53 push %rbx 0.00 : 4c02e5: 89 fb mov %edi,%ebx /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:126 4.17 : 4c02e7: 48 83 ec 08 sub $0x8,%rsp 4.17 : 4c02eb: eb 19 jmp 4c0306 0.00 : 4c02ed: 0f 1f 00 nopl (%rax) : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 < id2); 0.00 : 4c02f0: 39 c3 cmp %eax,%ebx 0.00 : 4c02f2: 0f 92 c0 setb %al : */ : if (xidstatus == TRANSACTION_STATUS_SUB_COMMITTED) : { : TransactionId parentXid; : : if (TransactionIdPrecedes(transactionId, TransactionXmin)) 0.00 : 4c02f5: 84 c0 test %al,%al 0.00 : 4c02f7: 75 3b jne 4c0334 : return false; : parentXid = SubTransGetParent(transactionId); 0.00 : 4c02f9: 89 df mov %ebx,%edi 0.00 : 4c02fb: e8 80 65 00 00 callq 4c6880 : if (!TransactionIdIsValid(parentXid)) 0.00 : 4c0300: 85 c0 test %eax,%eax 0.00 : 4c0302: 74 3c je 4c0340 0.00 : 4c0304: 89 c3 mov %eax,%ebx : bool /* true if given transaction committed */ : TransactionIdDidCommit(TransactionId transactionId) : { : XidStatus xidstatus; : : xidstatus = TransactionLogFetch(transactionId); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:129 8.33 : 4c0306: 89 df mov %ebx,%edi 8.33 : 4c0308: e8 33 fe ff ff callq 4c0140 : : /* : * If it's marked committed, it's committed. : */ : if (xidstatus == TRANSACTION_STATUS_COMMITTED) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:134 4.17 : 4c030d: 83 f8 01 cmp $0x1,%eax 0.00 : 4c0310: 74 24 je 4c0336 : * knowledge in pg_subtrans of the transactions after TransactionXmin. : * StartupSUBTRANS() has ensured that any missing information will be : * zeroed. Since this case should not happen under normal conditions, it : * seems reasonable to emit a WARNING for it. : */ : if (xidstatus == TRANSACTION_STATUS_SUB_COMMITTED) 0.00 : 4c0312: 83 f8 03 cmp $0x3,%eax 0.00 : 4c0315: 75 1d jne 4c0334 : * If either ID is a permanent XID then we can just do unsigned : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) 0.00 : 4c0317: 83 fb 02 cmp $0x2,%ebx : */ : if (xidstatus == TRANSACTION_STATUS_SUB_COMMITTED) : { : TransactionId parentXid; : : if (TransactionIdPrecedes(transactionId, TransactionXmin)) 0.00 : 4c031a: 8b 05 38 24 6b 00 mov 0x6b2438(%rip),%eax # b72758 : * If either ID is a permanent XID then we can just do unsigned : * comparison. If both are normal, do a modulo-2^32 comparison. : */ : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) 0.00 : 4c0320: 76 ce jbe 4c02f0 0.00 : 4c0322: 83 f8 02 cmp $0x2,%eax 0.00 : 4c0325: 76 c9 jbe 4c02f0 : return (id1 < id2); : : diff = (int32) (id1 - id2); : return (diff < 0); 0.00 : 4c0327: 89 da mov %ebx,%edx 0.00 : 4c0329: 29 c2 sub %eax,%edx 0.00 : 4c032b: 89 d0 mov %edx,%eax 0.00 : 4c032d: c1 e8 1f shr $0x1f,%eax : */ : if (xidstatus == TRANSACTION_STATUS_SUB_COMMITTED) : { : TransactionId parentXid; : : if (TransactionIdPrecedes(transactionId, TransactionXmin)) 0.00 : 4c0330: 84 c0 test %al,%al 0.00 : 4c0332: 74 c5 je 4c02f9 : return false; : parentXid = SubTransGetParent(transactionId); : if (!TransactionIdIsValid(parentXid)) : { : elog(WARNING, "no pg_subtrans entry for subcommitted XID %u", 0.00 : 4c0334: 31 c0 xor %eax,%eax : : /* : * It's not committed. : */ : return false; : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:171 12.50 : 4c0336: 48 83 c4 08 add $0x8,%rsp 0.00 : 4c033a: 5b pop %rbx 0.00 : 4c033b: c9 leaveq 20.83 : 4c033c: c3 retq 0.00 : 4c033d: 0f 1f 00 nopl (%rax) : if (TransactionIdPrecedes(transactionId, TransactionXmin)) : return false; : parentXid = SubTransGetParent(transactionId); : if (!TransactionIdIsValid(parentXid)) : { : elog(WARNING, "no pg_subtrans entry for subcommitted XID %u", 0.00 : 4c0340: ba 70 66 7b 00 mov $0x7b6670,%edx 0.00 : 4c0345: be a1 00 00 00 mov $0xa1,%esi 0.00 : 4c034a: bf 16 66 7b 00 mov $0x7b6616,%edi 0.00 : 4c034f: e8 cc b0 2b 00 callq 77b420 0.00 : 4c0354: 89 da mov %ebx,%edx 0.00 : 4c0356: 31 c0 xor %eax,%eax 0.00 : 4c0358: be 20 66 7b 00 mov $0x7b6620,%esi 0.00 : 4c035d: bf 13 00 00 00 mov $0x13,%edi 0.00 : 4c0362: e8 c9 ae 2b 00 callq 77b230 : : /* : * It's not committed. : */ : return false; : } 0.00 : 4c0367: 48 83 c4 08 add $0x8,%rsp : if (TransactionIdPrecedes(transactionId, TransactionXmin)) : return false; : parentXid = SubTransGetParent(transactionId); : if (!TransactionIdIsValid(parentXid)) : { : elog(WARNING, "no pg_subtrans entry for subcommitted XID %u", 0.00 : 4c036b: 31 c0 xor %eax,%eax : : /* : * It's not committed. : */ : return false; : } 0.00 : 4c036d: 5b pop %rbx 0.00 : 4c036e: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 58.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4651 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 8.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 4.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ccfc0 : : /* : * Are checksums enabled for data pages? : */ : bool : DataChecksumsEnabled(void) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 4.17 : 4ccfc0: 48 8b 05 d9 c1 6a 00 mov 0x6ac1d9(%rip),%rax # b791a0 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 25.00 : 4ccfc7: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 4.17 : 4ccfc8: 48 89 e5 mov %rsp,%rbp 0.00 : 4ccfcb: 8b 80 ec 00 00 00 mov 0xec(%rax),%eax : Assert(ControlFile != NULL); : return (ControlFile->data_checksum_version > 0); : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4651 58.33 : 4ccfd1: c9 leaveq : /* : * Are checksums enabled for data pages? : */ : bool : DataChecksumsEnabled(void) : { 0.00 : 4ccfd2: 85 c0 test %eax,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:4648 8.33 : 4ccfd4: 0f 95 c0 setne %al Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 29.17 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7345 20.83 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7339 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7339 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7382 16.67 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7382 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004cd4c0 : : /* : * We check shared state each time only until we leave recovery mode. We : * can't re-enter recovery, so there's no need to keep checking after the : * shared variable has once been seen false. : */ : if (!LocalRecoveryInProgress) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7345 29.17 : 4cd4c0: 31 c0 xor %eax,%eax 0.00 : 4cd4c2: 80 3d 97 a9 69 00 00 cmpb $0x0,0x69a997(%rip) # b67e60 : * As a side-effect, we initialize the local TimeLineID and RedoRecPtr : * variables the first time we see that recovery is finished. : */ : bool : RecoveryInProgress(void) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7339 20.83 : 4cd4c9: 55 push %rbp 16.67 : 4cd4ca: 48 89 e5 mov %rsp,%rbp : /* : * We check shared state each time only until we leave recovery mode. We : * can't re-enter recovery, so there's no need to keep checking after the : * shared variable has once been seen false. : */ : if (!LocalRecoveryInProgress) 0.00 : 4cd4cd: 74 1f je 4cd4ee : { : /* : * use volatile pointer to make sure we make a fresh read of the : * shared variable. : */ : volatile XLogCtlData *xlogctl = XLogCtl; 0.00 : 4cd4cf: 48 8b 05 c2 bc 6a 00 mov 0x6abcc2(%rip),%rax # b79198 : : LocalRecoveryInProgress = xlogctl->SharedRecoveryInProgress; 0.00 : 4cd4d6: 0f b6 80 5c 05 00 00 movzbl 0x55c(%rax),%eax : * Initialize TimeLineID and RedoRecPtr when we discover that recovery : * is finished. InitPostgres() relies upon this behaviour to ensure : * that InitXLOGAccess() is called at backend startup. (If you change : * this, see also LocalSetXLogInsertAllowed.) : */ : if (!LocalRecoveryInProgress) 0.00 : 4cd4dd: 84 c0 test %al,%al : * use volatile pointer to make sure we make a fresh read of the : * shared variable. : */ : volatile XLogCtlData *xlogctl = XLogCtl; : : LocalRecoveryInProgress = xlogctl->SharedRecoveryInProgress; 0.00 : 4cd4df: 88 05 7b a9 69 00 mov %al,0x69a97b(%rip) # b67e60 : * Initialize TimeLineID and RedoRecPtr when we discover that recovery : * is finished. InitPostgres() relies upon this behaviour to ensure : * that InitXLOGAccess() is called at backend startup. (If you change : * this, see also LocalSetXLogInsertAllowed.) : */ : if (!LocalRecoveryInProgress) 0.00 : 4cd4e5: 74 09 je 4cd4f0 : * Note: We don't need a memory barrier when we're still in recovery. : * We might exit recovery immediately after return, so the caller : * can't rely on 'true' meaning that we're still in recovery anyway. : */ : : return LocalRecoveryInProgress; 0.00 : 4cd4e7: 0f b6 05 72 a9 69 00 movzbl 0x69a972(%rip),%eax # b67e60 : } : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7382 16.67 : 4cd4ee: c9 leaveq 16.67 : 4cd4ef: c3 retq : /* : * If we just exited recovery, make sure we read TimeLineID and : * RedoRecPtr after SharedRecoveryInProgress (for machines with : * weak memory ordering). : */ : pg_memory_barrier(); 0.00 : 4cd4f0: f0 83 04 24 00 lock addl $0x0,(%rsp) : InitXLOGAccess(); 0.00 : 4cd4f5: e8 a6 ff ff ff callq 4cd4a0 : * Note: We don't need a memory barrier when we're still in recovery. : * We might exit recovery immediately after return, so the caller : * can't rely on 'true' meaning that we're still in recovery anyway. : */ : : return LocalRecoveryInProgress; 0.00 : 4cd4fa: 0f b6 05 5f a9 69 00 movzbl 0x69a95f(%rip),%eax # b67e60 0.00 : 4cd501: eb eb jmp 4cd4ee Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:580 20.83 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 12.50 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 8.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:598 4.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 4.17 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:598 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079ae70 : : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerEnlargeBuffers(ResourceOwner owner) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 12.50 : 79ae70: 55 push %rbp 16.67 : 79ae71: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 4.17 : 79ae74: 4c 89 65 f8 mov %r12,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:577 20.83 : 79ae78: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 79ae7c: 48 83 ec 10 sub $0x10,%rsp : int newmax; : : if (owner == NULL || 0.00 : 79ae80: 48 85 ff test %rdi,%rdi : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerEnlargeBuffers(ResourceOwner owner) : { 0.00 : 79ae83: 49 89 fc mov %rdi,%r12 : int newmax; : : if (owner == NULL || 0.00 : 79ae86: 74 2a je 79aeb2 0.00 : 79ae88: 8b 47 30 mov 0x30(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:580 33.33 : 79ae8b: 39 47 20 cmp %eax,0x20(%rdi) 0.00 : 79ae8e: 7c 22 jl 79aeb2 : owner->nbuffers < owner->maxbuffers) : return; /* nothing to do */ : : if (owner->buffers == NULL) 0.00 : 79ae90: 48 8b 7f 28 mov 0x28(%rdi),%rdi 0.00 : 79ae94: 48 85 ff test %rdi,%rdi 0.00 : 79ae97: 74 27 je 79aec0 : MemoryContextAlloc(TopMemoryContext, newmax * sizeof(Buffer)); : owner->maxbuffers = newmax; : } : else : { : newmax = owner->maxbuffers * 2; 0.00 : 79ae99: 8d 1c 00 lea (%rax,%rax,1),%ebx : owner->buffers = (Buffer *) 0.00 : 79ae9c: 48 63 f3 movslq %ebx,%rsi 0.00 : 79ae9f: 48 c1 e6 02 shl $0x2,%rsi 0.00 : 79aea3: e8 48 de ff ff callq 798cf0 : repalloc(owner->buffers, newmax * sizeof(Buffer)); : owner->maxbuffers = newmax; 0.00 : 79aea8: 41 89 5c 24 30 mov %ebx,0x30(%r12) : owner->maxbuffers = newmax; : } : else : { : newmax = owner->maxbuffers * 2; : owner->buffers = (Buffer *) 0.00 : 79aead: 49 89 44 24 28 mov %rax,0x28(%r12) : repalloc(owner->buffers, newmax * sizeof(Buffer)); : owner->maxbuffers = newmax; : } : } /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:598 4.17 : 79aeb2: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:598 8.33 : 79aeb6: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 79aebb: c9 leaveq 0.00 : 79aebc: c3 retq 0.00 : 79aebd: 0f 1f 00 nopl (%rax) : return; /* nothing to do */ : : if (owner->buffers == NULL) : { : newmax = 16; : owner->buffers = (Buffer *) 0.00 : 79aec0: 48 8b 3d a1 f9 41 00 mov 0x41f9a1(%rip),%rdi # bba868 0.00 : 79aec7: be 40 00 00 00 mov $0x40,%esi 0.00 : 79aecc: e8 bf df ff ff callq 798e90 : MemoryContextAlloc(TopMemoryContext, newmax * sizeof(Buffer)); : owner->maxbuffers = newmax; 0.00 : 79aed1: 41 c7 44 24 30 10 00 movl $0x10,0x30(%r12) 0.00 : 79aed8: 00 00 : return; /* nothing to do */ : : if (owner->buffers == NULL) : { : newmax = 16; : owner->buffers = (Buffer *) 0.00 : 79aeda: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 79aedf: eb d1 jmp 79aeb2 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469b90 : ??:0 100.00 : 469b90: ff 25 9a d8 6f 00 jmpq *0x6fd89a(%rip) # b67430 <_GLOBAL_OFFSET_TABLE_+0x430> 0.00 : 469b96: 68 83 00 00 00 pushq $0x83 0.00 : 469b9b: e9 b0 f7 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 17.39 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1140 13.04 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1123 13.04 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1156 8.70 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1119 8.70 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1133 8.70 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1140 8.70 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1156 4.35 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1119 4.35 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1129 4.35 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1171 4.35 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1155 4.35 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1168 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000063dd10 : : * the queue is full and contains no duplicate entries. In that case, we : * let the backend know by returning false. : */ : bool : ForwardFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) : { 0.00 : 63dd10: 55 push %rbp : CheckpointerRequest *request; : bool too_full; : : if (!IsUnderPostmaster) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1123 13.04 : 63dd11: 31 c0 xor %eax,%eax : * the queue is full and contains no duplicate entries. In that case, we : * let the backend know by returning false. : */ : bool : ForwardFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) : { 0.00 : 63dd13: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1119 4.35 : 63dd16: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 63dd1a: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 63dd1e: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 63dd22: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 63dd26: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 63dd2a: 48 81 ec d0 00 00 00 sub $0xd0,%rsp 0.00 : 63dd31: 48 89 bd 50 ff ff ff mov %rdi,-0xb0(%rbp) 0.00 : 63dd38: 89 bd 3c ff ff ff mov %edi,-0xc4(%rbp) 0.00 : 63dd3e: 48 c1 ef 20 shr $0x20,%rdi : CheckpointerRequest *request; : bool too_full; : : if (!IsUnderPostmaster) 0.00 : 63dd42: 80 3d 74 c3 57 00 00 cmpb $0x0,0x57c374(%rip) # bba0bd : * the queue is full and contains no duplicate entries. In that case, we : * let the backend know by returning false. : */ : bool : ForwardFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) : { /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1119 8.70 : 63dd49: 89 b5 38 ff ff ff mov %esi,-0xc8(%rbp) 0.00 : 63dd4f: 89 95 34 ff ff ff mov %edx,-0xcc(%rbp) 0.00 : 63dd55: 89 8d 30 ff ff ff mov %ecx,-0xd0(%rbp) 0.00 : 63dd5b: 89 b5 58 ff ff ff mov %esi,-0xa8(%rbp) 0.00 : 63dd61: 89 bd 40 ff ff ff mov %edi,-0xc0(%rbp) : CheckpointerRequest *request; : bool too_full; : : if (!IsUnderPostmaster) 0.00 : 63dd67: 74 6c je 63ddd5 : return false; /* probably shouldn't even get here */ : : if (AmCheckpointerProcess()) 0.00 : 63dd69: 83 3d 08 a1 52 00 04 cmpl $0x4,0x52a108(%rip) # b67e78 0.00 : 63dd70: 0f 84 f0 02 00 00 je 63e066 : elog(ERROR, "ForwardFsyncRequest must not be called in checkpointer"); : : LWLockAcquire(CheckpointerCommLock, LW_EXCLUSIVE); 0.00 : 63dd76: 48 8b 3d 83 fc 53 00 mov 0x53fc83(%rip),%rdi # b7da00 0.00 : 63dd7d: 31 f6 xor %esi,%esi /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1129 4.35 : 63dd7f: 48 81 c7 20 02 00 00 add $0x220,%rdi 0.00 : 63dd86: e8 65 1d 05 00 callq 68faf0 : : /* Count all backend writes regardless of if they fit in the queue */ : if (!AmBackgroundWriterProcess()) 0.00 : 63dd8b: 83 3d e6 a0 52 00 03 cmpl $0x3,0x52a0e6(%rip) # b67e78 0.00 : 63dd92: 74 0b je 63dd9f : CheckpointerShmem->num_backend_writes++; 0.00 : 63dd94: 48 8b 05 8d dd 53 00 mov 0x53dd8d(%rip),%rax # b7bb28 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1133 8.70 : 63dd9b: 83 40 18 01 addl $0x1,0x18(%rax) : /* : * If the checkpointer isn't running or the request queue is full, the : * backend will have to perform its own fsync request. But before forcing : * that to happen, we can try to compact the request queue. : */ : if (CheckpointerShmem->checkpointer_pid == 0 || /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1140 17.39 : 63dd9f: 48 8b 0d 82 dd 53 00 mov 0x53dd82(%rip),%rcx # b7bb28 0.00 : 63dda6: 8b 31 mov (%rcx),%esi 0.00 : 63dda8: 85 f6 test %esi,%esi 0.00 : 63ddaa: 75 44 jne 63ddf0 : { : /* : * Count the subset of writes where backends have to do their own : * fsync : */ : if (!AmBackgroundWriterProcess()) 0.00 : 63ddac: 83 3d c5 a0 52 00 03 cmpl $0x3,0x52a0c5(%rip) # b67e78 0.00 : 63ddb3: 74 0b je 63ddc0 : CheckpointerShmem->num_backend_fsync++; 0.00 : 63ddb5: 48 8b 05 6c dd 53 00 mov 0x53dd6c(%rip),%rax # b7bb28 0.00 : 63ddbc: 83 40 1c 01 addl $0x1,0x1c(%rax) : LWLockRelease(CheckpointerCommLock); 0.00 : 63ddc0: 48 8b 3d 39 fc 53 00 mov 0x53fc39(%rip),%rdi # b7da00 0.00 : 63ddc7: 48 81 c7 20 02 00 00 add $0x220,%rdi 0.00 : 63ddce: e8 cd 15 05 00 callq 68f3a0 0.00 : 63ddd3: 31 c0 xor %eax,%eax : /* ... but not till after we release the lock */ : if (too_full && ProcGlobal->checkpointerLatch) : SetLatch(ProcGlobal->checkpointerLatch); : : return true; : } 0.00 : 63ddd5: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 63ddd9: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 63dddd: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 63dde1: 4c 8b 75 f0 mov -0x10(%rbp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1171 4.35 : 63dde5: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 63dde9: c9 leaveq 0.00 : 63ddea: c3 retq 0.00 : 63ddeb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* : * If the checkpointer isn't running or the request queue is full, the : * backend will have to perform its own fsync request. But before forcing : * that to happen, we can try to compact the request queue. : */ : if (CheckpointerShmem->checkpointer_pid == 0 || /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1140 8.70 : 63ddf0: 8b 41 20 mov 0x20(%rcx),%eax 0.00 : 63ddf3: 3b 41 24 cmp 0x24(%rcx),%eax 0.00 : 63ddf6: 0f 8c 88 01 00 00 jl 63df84 : : /* must hold CheckpointerCommLock in exclusive mode */ : Assert(LWLockHeldByMe(CheckpointerCommLock)); : : /* Initialize skip_slot array */ : skip_slot = palloc0(sizeof(bool) * CheckpointerShmem->num_requests); 0.00 : 63ddfc: 48 63 f8 movslq %eax,%rdi 0.00 : 63ddff: e8 6c b1 15 00 callq 798f70 : : /* Initialize temporary hash table */ : MemSet(&ctl, 0, sizeof(ctl)); 0.00 : 63de04: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx : : /* must hold CheckpointerCommLock in exclusive mode */ : Assert(LWLockHeldByMe(CheckpointerCommLock)); : : /* Initialize skip_slot array */ : skip_slot = palloc0(sizeof(bool) * CheckpointerShmem->num_requests); 0.00 : 63de0b: 49 89 c6 mov %rax,%r14 : : /* Initialize temporary hash table */ : MemSet(&ctl, 0, sizeof(ctl)); 0.00 : 63de0e: 48 8d 4a 68 lea 0x68(%rdx),%rcx 0.00 : 63de12: 48 39 d1 cmp %rdx,%rcx 0.00 : 63de15: 76 19 jbe 63de30 0.00 : 63de17: 48 89 d0 mov %rdx,%rax 0.00 : 63de1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 63de20: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 63de27: 48 83 c0 08 add $0x8,%rax 0.00 : 63de2b: 48 39 c1 cmp %rax,%rcx 0.00 : 63de2e: 75 f0 jne 63de20 : ctl.keysize = sizeof(CheckpointerRequest); : ctl.entrysize = sizeof(struct CheckpointerSlotMapping); : ctl.hash = tag_hash; : ctl.hcxt = CurrentMemoryContext; 0.00 : 63de30: 48 8b 05 29 ca 57 00 mov 0x57ca29(%rip),%rax # bba860 : /* Initialize skip_slot array */ : skip_slot = palloc0(sizeof(bool) * CheckpointerShmem->num_requests); : : /* Initialize temporary hash table */ : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(CheckpointerRequest); 0.00 : 63de37: 48 c7 45 88 14 00 00 movq $0x14,-0x78(%rbp) 0.00 : 63de3e: 00 : ctl.entrysize = sizeof(struct CheckpointerSlotMapping); : ctl.hash = tag_hash; : ctl.hcxt = CurrentMemoryContext; : : htab = hash_create("CompactCheckpointerRequestQueue", 0.00 : 63de3f: b9 30 02 00 00 mov $0x230,%ecx : skip_slot = palloc0(sizeof(bool) * CheckpointerShmem->num_requests); : : /* Initialize temporary hash table */ : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(CheckpointerRequest); : ctl.entrysize = sizeof(struct CheckpointerSlotMapping); 0.00 : 63de44: 48 c7 45 90 18 00 00 movq $0x18,-0x70(%rbp) 0.00 : 63de4b: 00 : ctl.hash = tag_hash; 0.00 : 63de4c: 48 c7 45 98 60 4f 78 movq $0x784f60,-0x68(%rbp) 0.00 : 63de53: 00 : ctl.hcxt = CurrentMemoryContext; : : htab = hash_create("CompactCheckpointerRequestQueue", 0.00 : 63de54: bf f8 e8 89 00 mov $0x89e8f8,%edi : /* Initialize temporary hash table */ : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(CheckpointerRequest); : ctl.entrysize = sizeof(struct CheckpointerSlotMapping); : ctl.hash = tag_hash; : ctl.hcxt = CurrentMemoryContext; 0.00 : 63de59: 48 89 45 b8 mov %rax,-0x48(%rbp) : : htab = hash_create("CompactCheckpointerRequestQueue", 0.00 : 63de5d: 48 8b 05 c4 dc 53 00 mov 0x53dcc4(%rip),%rax # b7bb28 0.00 : 63de64: 48 63 70 20 movslq 0x20(%rax),%rsi 0.00 : 63de68: e8 43 6a 14 00 callq 7848b0 0.00 : 63de6d: 49 89 c5 mov %rax,%r13 : * the code below understand the specific semantics of such requests (it : * could blow away preceding entries that would end up being canceled : * anyhow), but it's not clear that the extra complexity would buy us : * anything. : */ : for (n = 0; n < CheckpointerShmem->num_requests; n++) 0.00 : 63de70: 48 8b 05 b1 dc 53 00 mov 0x53dcb1(%rip),%rax # b7bb28 0.00 : 63de77: 8b 50 20 mov 0x20(%rax),%edx 0.00 : 63de7a: 85 d2 test %edx,%edx 0.00 : 63de7c: 0f 8e a3 01 00 00 jle 63e025 0.00 : 63de82: 4c 8d 7d cf lea -0x31(%rbp),%r15 0.00 : 63de86: 31 db xor %ebx,%ebx 0.00 : 63de88: 45 31 e4 xor %r12d,%r12d 0.00 : 63de8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * same, which should be okay because we zeroed them in : * CheckpointerShmemInit. Note also that RelFileNode had better : * contain no pad bytes. : */ : request = &CheckpointerShmem->requests[n]; : slotmap = hash_search(htab, request, HASH_ENTER, &found); 0.00 : 63de90: 48 63 f3 movslq %ebx,%rsi 0.00 : 63de93: ba 01 00 00 00 mov $0x1,%edx 0.00 : 63de98: 4c 89 f9 mov %r15,%rcx 0.00 : 63de9b: 48 8d 34 b6 lea (%rsi,%rsi,4),%rsi 0.00 : 63de9f: 4c 89 ef mov %r13,%rdi 0.00 : 63dea2: 48 8d 74 b0 28 lea 0x28(%rax,%rsi,4),%rsi 0.00 : 63dea7: e8 f4 67 14 00 callq 7846a0 : if (found) 0.00 : 63deac: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : * same, which should be okay because we zeroed them in : * CheckpointerShmemInit. Note also that RelFileNode had better : * contain no pad bytes. : */ : request = &CheckpointerShmem->requests[n]; : slotmap = hash_search(htab, request, HASH_ENTER, &found); 0.00 : 63deb0: 48 89 c2 mov %rax,%rdx : if (found) 0.00 : 63deb3: 74 0d je 63dec2 : { : /* Duplicate, so mark the previous occurrence as skippable */ : skip_slot[slotmap->slot] = true; 0.00 : 63deb5: 48 63 40 14 movslq 0x14(%rax),%rax : num_skipped++; 0.00 : 63deb9: 41 83 c4 01 add $0x1,%r12d : request = &CheckpointerShmem->requests[n]; : slotmap = hash_search(htab, request, HASH_ENTER, &found); : if (found) : { : /* Duplicate, so mark the previous occurrence as skippable */ : skip_slot[slotmap->slot] = true; 0.00 : 63debd: 41 c6 04 06 01 movb $0x1,(%r14,%rax,1) : num_skipped++; : } : /* Remember slot containing latest occurrence of this request value */ : slotmap->slot = n; 0.00 : 63dec2: 89 5a 14 mov %ebx,0x14(%rdx) : * the code below understand the specific semantics of such requests (it : * could blow away preceding entries that would end up being canceled : * anyhow), but it's not clear that the extra complexity would buy us : * anything. : */ : for (n = 0; n < CheckpointerShmem->num_requests; n++) 0.00 : 63dec5: 48 8b 05 5c dc 53 00 mov 0x53dc5c(%rip),%rax # b7bb28 0.00 : 63decc: 83 c3 01 add $0x1,%ebx 0.00 : 63decf: 3b 58 20 cmp 0x20(%rax),%ebx 0.00 : 63ded2: 7c bc jl 63de90 : /* Remember slot containing latest occurrence of this request value */ : slotmap->slot = n; : } : : /* Done with the hash table. */ : hash_destroy(htab); 0.00 : 63ded4: 4c 89 ef mov %r13,%rdi 0.00 : 63ded7: e8 24 68 14 00 callq 784700 : : /* If no duplicates, we're out of luck. */ : if (!num_skipped) 0.00 : 63dedc: 45 85 e4 test %r12d,%r12d 0.00 : 63dedf: 0f 84 48 01 00 00 je 63e02d : return false; : } : : /* We found some duplicates; remove them. */ : preserve_count = 0; : for (n = 0; n < CheckpointerShmem->num_requests; n++) 0.00 : 63dee5: 48 8b 0d 3c dc 53 00 mov 0x53dc3c(%rip),%rcx # b7bb28 : /* : * If the checkpointer isn't running or the request queue is full, the : * backend will have to perform its own fsync request. But before forcing : * that to happen, we can try to compact the request queue. : */ : if (CheckpointerShmem->checkpointer_pid == 0 || 0.00 : 63deec: 31 f6 xor %esi,%esi 0.00 : 63deee: 31 db xor %ebx,%ebx : return false; : } : : /* We found some duplicates; remove them. */ : preserve_count = 0; : for (n = 0; n < CheckpointerShmem->num_requests; n++) 0.00 : 63def0: 8b 41 20 mov 0x20(%rcx),%eax 0.00 : 63def3: 85 c0 test %eax,%eax 0.00 : 63def5: 7e 50 jle 63df47 0.00 : 63def7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 63defe: 00 00 : { : if (skip_slot[n]) 0.00 : 63df00: 48 63 d6 movslq %esi,%rdx 0.00 : 63df03: 41 80 3c 16 00 cmpb $0x0,(%r14,%rdx,1) 0.00 : 63df08: 75 35 jne 63df3f : continue; : CheckpointerShmem->requests[preserve_count++] = CheckpointerShmem->requests[n]; 0.00 : 63df0a: 48 8d 14 92 lea (%rdx,%rdx,4),%rdx 0.00 : 63df0e: 48 63 c3 movslq %ebx,%rax 0.00 : 63df11: 83 c3 01 add $0x1,%ebx 0.00 : 63df14: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 63df18: 48 8d 54 91 20 lea 0x20(%rcx,%rdx,4),%rdx 0.00 : 63df1d: 48 8d 44 81 20 lea 0x20(%rcx,%rax,4),%rax 0.00 : 63df22: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 63df26: 48 89 48 08 mov %rcx,0x8(%rax) 0.00 : 63df2a: 48 8b 4a 10 mov 0x10(%rdx),%rcx 0.00 : 63df2e: 48 89 48 10 mov %rcx,0x10(%rax) 0.00 : 63df32: 8b 52 18 mov 0x18(%rdx),%edx 0.00 : 63df35: 89 50 18 mov %edx,0x18(%rax) 0.00 : 63df38: 48 8b 0d e9 db 53 00 mov 0x53dbe9(%rip),%rcx # b7bb28 : return false; : } : : /* We found some duplicates; remove them. */ : preserve_count = 0; : for (n = 0; n < CheckpointerShmem->num_requests; n++) 0.00 : 63df3f: 83 c6 01 add $0x1,%esi 0.00 : 63df42: 3b 71 20 cmp 0x20(%rcx),%esi 0.00 : 63df45: 7c b9 jl 63df00 : { : if (skip_slot[n]) : continue; : CheckpointerShmem->requests[preserve_count++] = CheckpointerShmem->requests[n]; : } : ereport(DEBUG1, 0.00 : 63df47: 45 31 c0 xor %r8d,%r8d 0.00 : 63df4a: b9 60 eb 89 00 mov $0x89eb60,%ecx 0.00 : 63df4f: ba 01 05 00 00 mov $0x501,%edx 0.00 : 63df54: be 75 e8 89 00 mov $0x89e875,%esi 0.00 : 63df59: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 63df5e: e8 5d cb 13 00 callq 77aac0 0.00 : 63df63: 84 c0 test %al,%al 0.00 : 63df65: 0f 85 d5 00 00 00 jne 63e040 : (errmsg("compacted fsync request queue from %d entries to %d entries", : CheckpointerShmem->num_requests, preserve_count))); : CheckpointerShmem->num_requests = preserve_count; 0.00 : 63df6b: 48 8b 05 b6 db 53 00 mov 0x53dbb6(%rip),%rax # b7bb28 : : /* Cleanup. */ : pfree(skip_slot); 0.00 : 63df72: 4c 89 f7 mov %r14,%rdi : CheckpointerShmem->requests[preserve_count++] = CheckpointerShmem->requests[n]; : } : ereport(DEBUG1, : (errmsg("compacted fsync request queue from %d entries to %d entries", : CheckpointerShmem->num_requests, preserve_count))); : CheckpointerShmem->num_requests = preserve_count; 0.00 : 63df75: 89 58 20 mov %ebx,0x20(%rax) : : /* Cleanup. */ : pfree(skip_slot); 0.00 : 63df78: e8 03 ac 15 00 callq 798b80 0.00 : 63df7d: 48 8b 0d a4 db 53 00 mov 0x53dba4(%rip),%rcx # b7bb28 : LWLockRelease(CheckpointerCommLock); : return false; : } : : /* OK, insert request */ : request = &CheckpointerShmem->requests[CheckpointerShmem->num_requests++]; /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1155 4.35 : 63df84: 8b 51 20 mov 0x20(%rcx),%edx 0.00 : 63df87: 48 63 c2 movslq %edx,%rax 0.00 : 63df8a: 83 c2 01 add $0x1,%edx : request->rnode = rnode; 0.00 : 63df8d: 48 8d 04 80 lea (%rax,%rax,4),%rax : LWLockRelease(CheckpointerCommLock); : return false; : } : : /* OK, insert request */ : request = &CheckpointerShmem->requests[CheckpointerShmem->num_requests++]; 0.00 : 63df91: 89 51 20 mov %edx,0x20(%rcx) : request->rnode = rnode; 0.00 : 63df94: 8b 95 38 ff ff ff mov -0xc8(%rbp),%edx 0.00 : 63df9a: 48 8d 04 81 lea (%rcx,%rax,4),%rax 0.00 : 63df9e: 89 50 30 mov %edx,0x30(%rax) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1156 13.04 : 63dfa1: 8b 95 40 ff ff ff mov -0xc0(%rbp),%edx 0.00 : 63dfa7: 89 50 2c mov %edx,0x2c(%rax) 8.70 : 63dfaa: 8b 95 3c ff ff ff mov -0xc4(%rbp),%edx 0.00 : 63dfb0: 89 50 28 mov %edx,0x28(%rax) : request->forknum = forknum; 0.00 : 63dfb3: 8b 95 34 ff ff ff mov -0xcc(%rbp),%edx 0.00 : 63dfb9: 89 50 34 mov %edx,0x34(%rax) : request->segno = segno; 0.00 : 63dfbc: 8b 95 30 ff ff ff mov -0xd0(%rbp),%edx 0.00 : 63dfc2: 89 50 38 mov %edx,0x38(%rax) : : /* If queue is more than half full, nudge the checkpointer to empty it */ : too_full = (CheckpointerShmem->num_requests >= 0.00 : 63dfc5: 48 8b 05 5c db 53 00 mov 0x53db5c(%rip),%rax # b7bb28 : CheckpointerShmem->max_requests / 2); : : LWLockRelease(CheckpointerCommLock); 0.00 : 63dfcc: 48 8b 3d 2d fa 53 00 mov 0x53fa2d(%rip),%rdi # b7da00 : request->rnode = rnode; : request->forknum = forknum; : request->segno = segno; : : /* If queue is more than half full, nudge the checkpointer to empty it */ : too_full = (CheckpointerShmem->num_requests >= 0.00 : 63dfd3: 44 8b 60 20 mov 0x20(%rax),%r12d 0.00 : 63dfd7: 8b 40 24 mov 0x24(%rax),%eax : CheckpointerShmem->max_requests / 2); : : LWLockRelease(CheckpointerCommLock); 0.00 : 63dfda: 48 81 c7 20 02 00 00 add $0x220,%rdi : request->rnode = rnode; : request->forknum = forknum; : request->segno = segno; : : /* If queue is more than half full, nudge the checkpointer to empty it */ : too_full = (CheckpointerShmem->num_requests >= 0.00 : 63dfe1: 89 c3 mov %eax,%ebx 0.00 : 63dfe3: c1 eb 1f shr $0x1f,%ebx 0.00 : 63dfe6: 01 c3 add %eax,%ebx 0.00 : 63dfe8: d1 fb sar %ebx : CheckpointerShmem->max_requests / 2); : : LWLockRelease(CheckpointerCommLock); 0.00 : 63dfea: e8 b1 13 05 00 callq 68f3a0 : : /* ... but not till after we release the lock */ : if (too_full && ProcGlobal->checkpointerLatch) 0.00 : 63dfef: 41 39 dc cmp %ebx,%r12d 0.00 : 63dff2: 7c 24 jl 63e018 0.00 : 63dff4: 48 8b 05 5d f9 53 00 mov 0x53f95d(%rip),%rax # b7d958 0.00 : 63dffb: 48 8b 78 38 mov 0x38(%rax),%rdi 0.00 : 63dfff: 48 85 ff test %rdi,%rdi 0.00 : 63e002: 74 14 je 63e018 : SetLatch(ProcGlobal->checkpointerLatch); 0.00 : 63e004: e8 b7 b0 ff ff callq 6390c0 0.00 : 63e009: b8 01 00 00 00 mov $0x1,%eax 0.00 : 63e00e: e9 c2 fd ff ff jmpq 63ddd5 0.00 : 63e013: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 63e018: b8 01 00 00 00 mov $0x1,%eax /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1168 4.35 : 63e01d: 0f 1f 00 nopl (%rax) 0.00 : 63e020: e9 b0 fd ff ff jmpq 63ddd5 : /* Remember slot containing latest occurrence of this request value */ : slotmap->slot = n; : } : : /* Done with the hash table. */ : hash_destroy(htab); 0.00 : 63e025: 4c 89 ef mov %r13,%rdi 0.00 : 63e028: e8 d3 66 14 00 callq 784700 : : /* If no duplicates, we're out of luck. */ : if (!num_skipped) : { : pfree(skip_slot); 0.00 : 63e02d: 4c 89 f7 mov %r14,%rdi 0.00 : 63e030: e8 4b ab 15 00 callq 798b80 : /* : * If the checkpointer isn't running or the request queue is full, the : * backend will have to perform its own fsync request. But before forcing : * that to happen, we can try to compact the request queue. : */ : if (CheckpointerShmem->checkpointer_pid == 0 || 0.00 : 63e035: e9 72 fd ff ff jmpq 63ddac 0.00 : 63e03a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (skip_slot[n]) : continue; : CheckpointerShmem->requests[preserve_count++] = CheckpointerShmem->requests[n]; : } : ereport(DEBUG1, 0.00 : 63e040: 48 8b 05 e1 da 53 00 mov 0x53dae1(%rip),%rax # b7bb28 0.00 : 63e047: 89 da mov %ebx,%edx 0.00 : 63e049: bf 18 e9 89 00 mov $0x89e918,%edi 0.00 : 63e04e: 8b 70 20 mov 0x20(%rax),%esi 0.00 : 63e051: 31 c0 xor %eax,%eax 0.00 : 63e053: e8 48 e8 13 00 callq 77c8a0 0.00 : 63e058: 89 c7 mov %eax,%edi 0.00 : 63e05a: 31 c0 xor %eax,%eax 0.00 : 63e05c: e8 7f c5 13 00 callq 77a5e0 0.00 : 63e061: e9 05 ff ff ff jmpq 63df6b : : if (!IsUnderPostmaster) : return false; /* probably shouldn't even get here */ : : if (AmCheckpointerProcess()) : elog(ERROR, "ForwardFsyncRequest must not be called in checkpointer"); 0.00 : 63e066: ba 40 eb 89 00 mov $0x89eb40,%edx 0.00 : 63e06b: be 67 04 00 00 mov $0x467,%esi 0.00 : 63e070: bf 75 e8 89 00 mov $0x89e875,%edi 0.00 : 63e075: e8 a6 d3 13 00 callq 77b420 0.00 : 63e07a: be c0 e8 89 00 mov $0x89e8c0,%esi 0.00 : 63e07f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 63e084: 31 c0 xor %eax,%eax 0.00 : 63e086: e8 a5 d1 13 00 callq 77b230 0.00 : 63e08b: e8 40 b4 e2 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:119 21.74 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 13.04 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 8.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 8.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 8.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:136 8.70 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:136 4.35 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006cff70 : : * If the datatype is pass-by-reference, memory is obtained with palloc(). : *------------------------------------------------------------------------- : */ : Datum : datumCopy(Datum value, bool typByVal, int typLen) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 13.04 : 6cff70: 55 push %rbp : Datum res; : : if (typByVal) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:119 26.09 : 6cff71: 48 89 f8 mov %rdi,%rax : * If the datatype is pass-by-reference, memory is obtained with palloc(). : *------------------------------------------------------------------------- : */ : Datum : datumCopy(Datum value, bool typByVal, int typLen) : { 0.00 : 6cff74: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 4.35 : 6cff77: 4c 89 6d f8 mov %r13,-0x8(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:116 21.74 : 6cff7b: 48 89 5d e8 mov %rbx,-0x18(%rbp) 8.70 : 6cff7f: 49 89 fd mov %rdi,%r13 0.00 : 6cff82: 4c 89 65 f0 mov %r12,-0x10(%rbp) 8.70 : 6cff86: 48 83 ec 20 sub $0x20,%rsp : Datum res; : : if (typByVal) 0.00 : 6cff8a: 40 84 f6 test %sil,%sil 0.00 : 6cff8d: 75 2d jne 6cffbc : else : { : Size realSize; : char *s; : : if (DatumGetPointer(value) == NULL) 0.00 : 6cff8f: 31 c0 xor %eax,%eax 0.00 : 6cff91: 48 85 ff test %rdi,%rdi 0.00 : 6cff94: 74 26 je 6cffbc : return PointerGetDatum(NULL); : : realSize = datumGetSize(value, typByVal, typLen); 0.00 : 6cff96: 31 f6 xor %esi,%esi 0.00 : 6cff98: e8 23 fe ff ff callq 6cfdc0 0.00 : 6cff9d: 48 89 c3 mov %rax,%rbx : : s = (char *) palloc(realSize); 0.00 : 6cffa0: 48 89 c7 mov %rax,%rdi 0.00 : 6cffa3: e8 a8 8d 0c 00 callq 798d50 : memcpy(s, DatumGetPointer(value), realSize); 0.00 : 6cffa8: 48 89 da mov %rbx,%rdx : if (DatumGetPointer(value) == NULL) : return PointerGetDatum(NULL); : : realSize = datumGetSize(value, typByVal, typLen); : : s = (char *) palloc(realSize); 0.00 : 6cffab: 49 89 c4 mov %rax,%r12 : memcpy(s, DatumGetPointer(value), realSize); 0.00 : 6cffae: 4c 89 ee mov %r13,%rsi 0.00 : 6cffb1: 48 89 c7 mov %rax,%rdi 0.00 : 6cffb4: e8 37 9c d9 ff callq 469bf0 : res = PointerGetDatum(s); 0.00 : 6cffb9: 4c 89 e0 mov %r12,%rax : } : return res; : } 0.00 : 6cffbc: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 6cffc0: 4c 8b 65 f0 mov -0x10(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/datum.c:136 8.70 : 6cffc4: 4c 8b 6d f8 mov -0x8(%rbp),%r13 8.70 : 6cffc8: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.43 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:79 21.74 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:79 17.39 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:82 8.70 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:78 8.70 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:78 8.70 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:79 4.35 /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:77 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007ad130 : : #define SWAPINIT(a, es) swaptype = ((char *)(a) - (char *)0) % sizeof(long) || \ : (es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1; : : static void : swapfunc(char *a, char *b, size_t n, int swaptype) : { /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:77 4.35 : 7ad130: 55 push %rbp : if (swaptype <= 1) : swapcode(long, a, b, n); 0.00 : 7ad131: 45 31 c0 xor %r8d,%r8d : (es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1; : : static void : swapfunc(char *a, char *b, size_t n, int swaptype) : { : if (swaptype <= 1) /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:78 8.70 : 7ad134: 83 e9 01 sub $0x1,%ecx : #define SWAPINIT(a, es) swaptype = ((char *)(a) - (char *)0) % sizeof(long) || \ : (es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1; : : static void : swapfunc(char *a, char *b, size_t n, int swaptype) : { 0.00 : 7ad137: 49 89 d1 mov %rdx,%r9 0.00 : 7ad13a: 48 89 e5 mov %rsp,%rbp : if (swaptype <= 1) 8.70 : 7ad13d: 7e 21 jle 7ad160 0.00 : 7ad13f: 90 nop : swapcode(long, a, b, n); : else : swapcode(char, a, b, n); 0.00 : 7ad140: 42 0f b6 14 07 movzbl (%rdi,%r8,1),%edx 0.00 : 7ad145: 42 0f b6 04 06 movzbl (%rsi,%r8,1),%eax 0.00 : 7ad14a: 42 88 04 07 mov %al,(%rdi,%r8,1) 0.00 : 7ad14e: 42 88 14 06 mov %dl,(%rsi,%r8,1) 0.00 : 7ad152: 49 83 c0 01 add $0x1,%r8 0.00 : 7ad156: 4d 39 c1 cmp %r8,%r9 0.00 : 7ad159: 75 e5 jne 7ad140 : } 0.00 : 7ad15b: c9 leaveq 0.00 : 7ad15c: c3 retq 0.00 : 7ad15d: 0f 1f 00 nopl (%rax) : : static void : swapfunc(char *a, char *b, size_t n, int swaptype) : { : if (swaptype <= 1) : swapcode(long, a, b, n); 0.00 : 7ad160: 49 89 d0 mov %rdx,%r8 0.00 : 7ad163: 31 c9 xor %ecx,%ecx 0.00 : 7ad165: 49 c1 e8 03 shr $0x3,%r8 0.00 : 7ad169: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7ad170: 48 8b 14 0f mov (%rdi,%rcx,1),%rdx 0.00 : 7ad174: 48 8b 04 0e mov (%rsi,%rcx,1),%rax 0.00 : 7ad178: 48 89 04 0f mov %rax,(%rdi,%rcx,1) /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:79 30.43 : 7ad17c: 48 89 14 0e mov %rdx,(%rsi,%rcx,1) 8.70 : 7ad180: 48 83 c1 08 add $0x8,%rcx 21.74 : 7ad184: 49 83 e8 01 sub $0x1,%r8 0.00 : 7ad188: 75 e6 jne 7ad170 : else : swapcode(char, a, b, n); : } /home/Computational/mark/src/postgres-andres/src/port/qsort_arg.c:82 17.39 : 7ad18a: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 52.17 ??:0 30.43 ??:0 13.04 ??:0 4.35 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cd620 <__write>: 30.43 : cd620: 83 3d 8d a0 2a 00 00 cmpl $0x0,0x2aa08d(%rip) # 3776b4 <__libc_multiple_threads> 13.04 : cd627: 75 10 jne cd639 <__write_nocancel+0x10> : : 00000000000cd629 <__write_nocancel>: 0.00 : cd629: b8 01 00 00 00 mov $0x1,%eax 0.00 : cd62e: 0f 05 syscall 52.17 : cd630: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd636: 73 31 jae cd669 <__write_nocancel+0x40> ??:0 4.35 : cd638: c3 retq 0.00 : cd639: 48 83 ec 08 sub $0x8,%rsp 0.00 : cd63d: e8 ee ab 01 00 callq e8230 <__libc_enable_asynccancel> 0.00 : cd642: 48 89 04 24 mov %rax,(%rsp) 0.00 : cd646: b8 01 00 00 00 mov $0x1,%eax 0.00 : cd64b: 0f 05 syscall 0.00 : cd64d: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : cd651: 48 89 c2 mov %rax,%rdx 0.00 : cd654: e8 37 ac 01 00 callq e8290 <__libc_disable_asynccancel> 0.00 : cd659: 48 89 d0 mov %rdx,%rax 0.00 : cd65c: 48 83 c4 08 add $0x8,%rsp 0.00 : cd660: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd666: 73 01 jae cd669 <__write_nocancel+0x40> 0.00 : cd668: c3 retq 0.00 : cd669: 48 8b 0d c8 47 2a 00 mov 0x2a47c8(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cd670: 31 d2 xor %edx,%edx 0.00 : cd672: 48 29 c2 sub %rax,%rdx 0.00 : cd675: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : cd678: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : cd67c: eb ea jmp cd668 <__write_nocancel+0x3f> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 13.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:317 13.64 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:491 9.09 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:237 9.09 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:271 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:219 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:247 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:265 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:220 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:382 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:383 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:414 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:317 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:439 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:476 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:467 4.55 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:387 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049e170 : : Buffer : RelationGetBufferForTuple(Relation relation, Size len, : Buffer otherBuffer, int options, : BulkInsertState bistate, : Buffer *vmbuffer, Buffer *vmbuffer_other) : { 0.00 : 49e170: 55 push %rbp : saveFreeSpace; : BlockNumber targetBlock, : otherBlock; : bool needLock; : : len = MAXALIGN(len); /* be conservative */ 0.00 : 49e171: 48 83 c6 07 add $0x7,%rsi : Buffer : RelationGetBufferForTuple(Relation relation, Size len, : Buffer otherBuffer, int options, : BulkInsertState bistate, : Buffer *vmbuffer, Buffer *vmbuffer_other) : { 0.00 : 49e175: 48 89 e5 mov %rsp,%rbp 0.00 : 49e178: 41 57 push %r15 0.00 : 49e17a: 41 89 d7 mov %edx,%r15d 0.00 : 49e17d: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:219 4.55 : 49e17f: 41 55 push %r13 0.00 : 49e181: 41 54 push %r12 0.00 : 49e183: 41 89 cc mov %ecx,%r12d 0.00 : 49e186: 53 push %rbx 0.00 : 49e187: 48 83 ec 48 sub $0x48,%rsp : saveFreeSpace; : BlockNumber targetBlock, : otherBlock; : bool needLock; : : len = MAXALIGN(len); /* be conservative */ 0.00 : 49e18b: 48 89 75 c0 mov %rsi,-0x40(%rbp) 0.00 : 49e18f: 48 83 65 c0 f8 andq $0xfffffffffffffff8,-0x40(%rbp) : Assert(otherBuffer == InvalidBuffer || !bistate); : : /* : * If we're gonna fail for oversize tuple, do it right away : */ : if (len > MaxHeapTupleSize) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:237 9.09 : 49e194: 48 81 7d c0 e0 1f 00 cmpq $0x1fe0,-0x40(%rbp) 0.00 : 49e19b: 00 : Buffer : RelationGetBufferForTuple(Relation relation, Size len, : Buffer otherBuffer, int options, : BulkInsertState bistate, : Buffer *vmbuffer, Buffer *vmbuffer_other) : { 0.00 : 49e19c: 48 89 7d a8 mov %rdi,-0x58(%rbp) 0.00 : 49e1a0: 4c 89 45 a0 mov %r8,-0x60(%rbp) 0.00 : 49e1a4: 4c 89 4d 98 mov %r9,-0x68(%rbp) : Assert(otherBuffer == InvalidBuffer || !bistate); : : /* : * If we're gonna fail for oversize tuple, do it right away : */ : if (len > MaxHeapTupleSize) 0.00 : 49e1a8: 0f 87 da 05 00 00 ja 49e788 : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("row is too big: size %zu, maximum size %zu", : len, MaxHeapTupleSize))); : : /* Compute desired extra freespace due to fillfactor option */ : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, 0.00 : 49e1ae: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 49e1b2: 31 db xor %ebx,%ebx 0.00 : 49e1b4: 48 8b 90 98 00 00 00 mov 0x98(%rax),%rdx 0.00 : 49e1bb: 48 85 d2 test %rdx,%rdx 0.00 : 49e1be: 74 1f je 49e1df 0.00 : 49e1c0: b9 64 00 00 00 mov $0x64,%ecx 0.00 : 49e1c5: 2b 4a 04 sub 0x4(%rdx),%ecx 0.00 : 49e1c8: ba 1f 85 eb 51 mov $0x51eb851f,%edx 0.00 : 49e1cd: c1 e1 0d shl $0xd,%ecx 0.00 : 49e1d0: 89 c8 mov %ecx,%eax 0.00 : 49e1d2: c1 f9 1f sar $0x1f,%ecx 0.00 : 49e1d5: f7 ea imul %edx 0.00 : 49e1d7: c1 fa 05 sar $0x5,%edx 0.00 : 49e1da: 29 ca sub %ecx,%edx 0.00 : 49e1dc: 48 63 da movslq %edx,%rbx : HEAP_DEFAULT_FILLFACTOR); : : if (otherBuffer != InvalidBuffer) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:247 4.55 : 49e1df: 45 85 ff test %r15d,%r15d 0.00 : 49e1e2: c7 45 bc ff ff ff ff movl $0xffffffff,-0x44(%rbp) 0.00 : 49e1e9: 0f 85 f1 04 00 00 jne 49e6e0 : * a page with enough free space, we give up and extend the relation. : * : * When use_fsm is false, we either put the tuple onto the existing target : * page or extend the relation. : */ : if (len + saveFreeSpace > MaxHeapTupleSize) 0.00 : 49e1ef: 48 03 5d c0 add -0x40(%rbp),%rbx 0.00 : 49e1f3: 48 81 fb e0 1f 00 00 cmp $0x1fe0,%rbx 0.00 : 49e1fa: 48 89 5d b0 mov %rbx,-0x50(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:265 4.55 : 49e1fe: 0f 87 54 02 00 00 ja 49e458 : { : /* can't fit, don't bother asking FSM */ : targetBlock = InvalidBlockNumber; : use_fsm = false; : } : else if (bistate && bistate->current_buf != InvalidBuffer) 0.00 : 49e204: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) 0.00 : 49e209: 74 0f je 49e21a 0.00 : 49e20b: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 49e20f: 8b 7a 08 mov 0x8(%rdx),%edi /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:271 9.09 : 49e212: 85 ff test %edi,%edi 0.00 : 49e214: 0f 85 f6 04 00 00 jne 49e710 : targetBlock = BufferGetBlockNumber(bistate->current_buf); : else : targetBlock = RelationGetTargetBlock(relation); 0.00 : 49e21a: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 49e21e: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 49e224: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 49e228: b8 01 00 00 00 mov $0x1,%eax 0.00 : 49e22d: 48 85 d2 test %rdx,%rdx 0.00 : 49e230: 74 0b je 49e23d 0.00 : 49e232: 44 8b 6a 18 mov 0x18(%rdx),%r13d 0.00 : 49e236: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 49e23a: 0f 94 c0 sete %al : RelationGetBufferForTuple(Relation relation, Size len, : Buffer otherBuffer, int options, : BulkInsertState bistate, : Buffer *vmbuffer, Buffer *vmbuffer_other) : { : bool use_fsm = !(options & HEAP_INSERT_SKIP_FSM); 0.00 : 49e23d: 41 d1 ec shr %r12d /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:220 4.55 : 49e240: 41 83 f4 01 xor $0x1,%r12d : else if (bistate && bistate->current_buf != InvalidBuffer) : targetBlock = BufferGetBlockNumber(bistate->current_buf); : else : targetBlock = RelationGetTargetBlock(relation); : : if (targetBlock == InvalidBlockNumber && use_fsm) 0.00 : 49e244: 44 89 e2 mov %r12d,%edx 0.00 : 49e247: 83 e2 01 and $0x1,%edx 0.00 : 49e24a: 88 55 bb mov %dl,-0x45(%rbp) 0.00 : 49e24d: 0f 85 cd 01 00 00 jne 49e420 : if (nblocks > 0) : targetBlock = nblocks - 1; : } : } : : while (targetBlock != InvalidBlockNumber) 0.00 : 49e253: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 49e257: 0f 84 fb 01 00 00 je 49e458 : } : else if (otherBlock == targetBlock) : { : /* also easy case */ : buffer = otherBuffer; : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e25d: 44 89 f8 mov %r15d,%eax 0.00 : 49e260: f7 d0 not %eax 0.00 : 49e262: 48 98 cltq 0.00 : 49e264: 48 c1 e0 03 shl $0x3,%rax 0.00 : 49e268: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 49e26c: 41 8d 47 ff lea -0x1(%r15),%eax 0.00 : 49e270: 48 98 cltq 0.00 : 49e272: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49e276: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 49e27a: e9 09 01 00 00 jmpq 49e388 0.00 : 49e27f: 90 nop : buffer = ReadBufferBI(relation, targetBlock, bistate); : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : else if (otherBlock == targetBlock) 0.00 : 49e280: 44 39 6d bc cmp %r13d,-0x44(%rbp) 0.00 : 49e284: 0f 84 3e 03 00 00 je 49e5c8 : buffer = otherBuffer; : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : else if (otherBlock < targetBlock) 0.00 : 49e28a: 0f 83 e0 02 00 00 jae 49e570 : { : /* lock other buffer first */ : buffer = ReadBuffer(relation, targetBlock); 0.00 : 49e290: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e294: 44 89 ee mov %r13d,%esi 0.00 : 49e297: e8 04 84 1d 00 callq 6766a0 : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e29c: 85 c0 test %eax,%eax : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : else if (otherBlock < targetBlock) : { : /* lock other buffer first */ : buffer = ReadBuffer(relation, targetBlock); 0.00 : 49e29e: 41 89 c4 mov %eax,%r12d : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e2a1: 0f 88 d1 03 00 00 js 49e678 0.00 : 49e2a7: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49e2ac: 48 98 cltq 0.00 : 49e2ae: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49e2b2: 48 03 05 3f 18 72 00 add 0x72183f(%rip),%rax # bbfaf8 0.00 : 49e2b9: f6 40 0a 04 testb $0x4,0xa(%rax) 0.00 : 49e2bd: 0f 85 85 03 00 00 jne 49e648 : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e2c3: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e2c8: 44 89 ff mov %r15d,%edi 0.00 : 49e2cb: e8 40 64 1d 00 callq 674710 : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e2d0: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e2d5: 44 89 e7 mov %r12d,%edi 0.00 : 49e2d8: e8 33 64 1d 00 callq 674710 : * retake the buffer locks, the visibility map bit will have been : * cleared by some other backend anyway. In that case, we'll have : * done a bit of extra work for no gain, but there's no real harm : * done. : */ : if (otherBuffer == InvalidBuffer || buffer <= otherBuffer) 0.00 : 49e2dd: 45 39 fc cmp %r15d,%r12d 0.00 : 49e2e0: 0f 8e 5d 05 00 00 jle 49e843 : GetVisibilityMapPins(relation, buffer, otherBuffer, : targetBlock, otherBlock, vmbuffer, : vmbuffer_other); : else : GetVisibilityMapPins(relation, otherBuffer, buffer, 0.00 : 49e2e6: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 49e2ea: 4c 8b 4d 10 mov 0x10(%rbp),%r9 0.00 : 49e2ee: 45 89 e8 mov %r13d,%r8d 0.00 : 49e2f1: 8b 4d bc mov -0x44(%rbp),%ecx 0.00 : 49e2f4: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e2f8: 44 89 fe mov %r15d,%esi 0.00 : 49e2fb: 45 31 f6 xor %r14d,%r14d 0.00 : 49e2fe: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 49e302: 44 89 e2 mov %r12d,%edx 0.00 : 49e305: e8 a6 fb ff ff callq 49deb0 : : /* : * Now we can check to see if there's enough free space here. If so, : * we're done. : */ : page = BufferGetPage(buffer); 0.00 : 49e30a: 45 85 e4 test %r12d,%r12d 0.00 : 49e30d: 0f 88 f4 00 00 00 js 49e407 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:382 4.55 : 49e313: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49e318: 48 63 f8 movslq %eax,%rdi 0.00 : 49e31b: 48 c1 e7 0d shl $0xd,%rdi 0.00 : 49e31f: 48 03 3d d2 17 72 00 add 0x7217d2(%rip),%rdi # bbfaf8 : pageFreeSpace = PageGetHeapFreeSpace(page); 0.00 : 49e326: e8 35 6a 1f 00 callq 694d60 : if (len + saveFreeSpace <= pageFreeSpace) 0.00 : 49e32b: 48 39 45 b0 cmp %rax,-0x50(%rbp) : /* : * Now we can check to see if there's enough free space here. If so, : * we're done. : */ : page = BufferGetPage(buffer); : pageFreeSpace = PageGetHeapFreeSpace(page); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:383 4.55 : 49e32f: 48 89 c3 mov %rax,%rbx : if (len + saveFreeSpace <= pageFreeSpace) 0.00 : 49e332: 0f 86 88 03 00 00 jbe 49e6c0 : * Not enough space, so we must give up our page locks and pin (if : * any) and prepare to look elsewhere. We don't care which order we : * unlock the two buffers in, so this can be slightly simpler than the : * code above. : */ : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 49e338: 31 f6 xor %esi,%esi 0.00 : 49e33a: 44 89 e7 mov %r12d,%edi 0.00 : 49e33d: e8 ce 63 1d 00 callq 674710 : if (otherBuffer == InvalidBuffer) 0.00 : 49e342: 45 84 f6 test %r14b,%r14b 0.00 : 49e345: 75 10 jne 49e357 : ReleaseBuffer(buffer); : else if (otherBlock != targetBlock) 0.00 : 49e347: 44 39 6d bc cmp %r13d,-0x44(%rbp) 0.00 : 49e34b: 74 12 je 49e35f : { : LockBuffer(otherBuffer, BUFFER_LOCK_UNLOCK); 0.00 : 49e34d: 31 f6 xor %esi,%esi 0.00 : 49e34f: 44 89 ff mov %r15d,%edi 0.00 : 49e352: e8 b9 63 1d 00 callq 674710 : ReleaseBuffer(buffer); 0.00 : 49e357: 44 89 e7 mov %r12d,%edi 0.00 : 49e35a: e8 01 6b 1d 00 callq 674e60 : } : : /* Without FSM, always fall out of the loop and extend */ : if (!use_fsm) 0.00 : 49e35f: 80 7d bb 00 cmpb $0x0,-0x45(%rbp) 0.00 : 49e363: 0f 84 ef 00 00 00 je 49e458 : : /* : * Update FSM as to condition of this page, and ask for another page : * to try. : */ : targetBlock = RecordAndGetPageWithFreeSpace(relation, /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:414 4.55 : 49e369: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 49e36d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e371: 44 89 ee mov %r13d,%esi 0.00 : 49e374: 48 89 da mov %rbx,%rdx 0.00 : 49e377: e8 c4 e5 1d 00 callq 67c940 : if (nblocks > 0) : targetBlock = nblocks - 1; : } : } : : while (targetBlock != InvalidBlockNumber) 0.00 : 49e37c: 83 f8 ff cmp $0xffffffff,%eax : : /* : * Update FSM as to condition of this page, and ask for another page : * to try. : */ : targetBlock = RecordAndGetPageWithFreeSpace(relation, 0.00 : 49e37f: 41 89 c5 mov %eax,%r13d : if (nblocks > 0) : targetBlock = nblocks - 1; : } : } : : while (targetBlock != InvalidBlockNumber) 0.00 : 49e382: 0f 84 d0 00 00 00 je 49e458 : * want to do any I/O while in that state. So we check the bit here : * before taking the lock, and pin the page if it appears necessary. : * Checking without the lock creates a risk of getting the wrong : * answer, so we'll have to recheck after acquiring the lock. : */ : if (otherBuffer == InvalidBuffer) 0.00 : 49e388: 45 85 ff test %r15d,%r15d 0.00 : 49e38b: 0f 85 ef fe ff ff jne 49e280 : { : /* easy case */ : buffer = ReadBufferBI(relation, targetBlock, bistate); 0.00 : 49e391: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 49e395: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e399: 44 89 ee mov %r13d,%esi 0.00 : 49e39c: e8 1f fd ff ff callq 49e0c0 : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e3a1: 85 c0 test %eax,%eax : * answer, so we'll have to recheck after acquiring the lock. : */ : if (otherBuffer == InvalidBuffer) : { : /* easy case */ : buffer = ReadBufferBI(relation, targetBlock, bistate); 0.00 : 49e3a3: 41 89 c4 mov %eax,%r12d : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e3a6: 0f 88 6c 02 00 00 js 49e618 0.00 : 49e3ac: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49e3b1: 48 98 cltq 0.00 : 49e3b3: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49e3b7: 48 03 05 3a 17 72 00 add 0x72173a(%rip),%rax # bbfaf8 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:317 4.55 : 49e3be: f6 40 0a 04 testb $0x4,0xa(%rax) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:317 13.64 : 49e3c2: 0f 85 38 02 00 00 jne 49e600 : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e3c8: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e3cd: 44 89 e7 mov %r12d,%edi 0.00 : 49e3d0: e8 3b 63 1d 00 callq 674710 : * retake the buffer locks, the visibility map bit will have been : * cleared by some other backend anyway. In that case, we'll have : * done a bit of extra work for no gain, but there's no real harm : * done. : */ : if (otherBuffer == InvalidBuffer || buffer <= otherBuffer) 0.00 : 49e3d5: 45 85 ff test %r15d,%r15d 0.00 : 49e3d8: 41 0f 94 c6 sete %r14b : GetVisibilityMapPins(relation, buffer, otherBuffer, 0.00 : 49e3dc: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 49e3e0: 4c 8b 4d 98 mov -0x68(%rbp),%r9 0.00 : 49e3e4: 44 89 e9 mov %r13d,%ecx 0.00 : 49e3e7: 44 8b 45 bc mov -0x44(%rbp),%r8d 0.00 : 49e3eb: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e3ef: 44 89 fa mov %r15d,%edx 0.00 : 49e3f2: 44 89 e6 mov %r12d,%esi 0.00 : 49e3f5: 48 89 04 24 mov %rax,(%rsp) 0.00 : 49e3f9: e8 b2 fa ff ff callq 49deb0 : : /* : * Now we can check to see if there's enough free space here. If so, : * we're done. : */ : page = BufferGetPage(buffer); 0.00 : 49e3fe: 45 85 e4 test %r12d,%r12d 0.00 : 49e401: 0f 89 0c ff ff ff jns 49e313 0.00 : 49e407: 44 89 e0 mov %r12d,%eax 0.00 : 49e40a: 48 8b 15 07 ed 6d 00 mov 0x6ded07(%rip),%rdx # b7d118 0.00 : 49e411: f7 d0 not %eax 0.00 : 49e413: 48 98 cltq 0.00 : 49e415: 48 8b 3c c2 mov (%rdx,%rax,8),%rdi 0.00 : 49e419: e9 08 ff ff ff jmpq 49e326 0.00 : 49e41e: 66 90 xchg %ax,%ax : else if (bistate && bistate->current_buf != InvalidBuffer) : targetBlock = BufferGetBlockNumber(bistate->current_buf); : else : targetBlock = RelationGetTargetBlock(relation); : : if (targetBlock == InvalidBlockNumber && use_fsm) 0.00 : 49e420: 84 c0 test %al,%al 0.00 : 49e422: 0f 84 2b fe ff ff je 49e253 : { : /* : * We have no cached target page, so ask the FSM for an initial : * target. : */ : targetBlock = GetPageWithFreeSpace(relation, len + saveFreeSpace); 0.00 : 49e428: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 49e42c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e430: e8 ab e5 1d 00 callq 67c9e0 : /* : * If the FSM knows nothing of the rel, try the last page before we : * give up and extend. This avoids one-tuple-per-page syndrome during : * bootstrapping or in a recently-started system. : */ : if (targetBlock == InvalidBlockNumber) 0.00 : 49e435: 83 f8 ff cmp $0xffffffff,%eax : { : /* : * We have no cached target page, so ask the FSM for an initial : * target. : */ : targetBlock = GetPageWithFreeSpace(relation, len + saveFreeSpace); 0.00 : 49e438: 41 89 c5 mov %eax,%r13d : /* : * If the FSM knows nothing of the rel, try the last page before we : * give up and extend. This avoids one-tuple-per-page syndrome during : * bootstrapping or in a recently-started system. : */ : if (targetBlock == InvalidBlockNumber) 0.00 : 49e43b: 0f 85 1c fe ff ff jne 49e25d : { : BlockNumber nblocks = RelationGetNumberOfBlocks(relation); 0.00 : 49e441: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e445: 31 f6 xor %esi,%esi 0.00 : 49e447: e8 44 72 1d 00 callq 675690 : : if (nblocks > 0) 0.00 : 49e44c: 85 c0 test %eax,%eax 0.00 : 49e44e: 0f 85 cf 02 00 00 jne 49e723 0.00 : 49e454: 0f 1f 40 00 nopl 0x0(%rax) : * We have to use a lock to ensure no one else is extending the rel at the : * same time, else we will both try to initialize the same new page. We : * can skip locking for new or temp relations, however, since no one else : * could be accessing them. : */ : needLock = !RELATION_IS_LOCAL(relation); 0.00 : 49e458: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 49e45c: 48 b8 ff 00 00 00 ff movabs $0xffffffff000000ff,%rax 0.00 : 49e463: ff ff ff 0.00 : 49e466: 48 85 42 20 test %rax,0x20(%rdx) : : if (needLock) 0.00 : 49e46a: 0f 94 c3 sete %bl 0.00 : 49e46d: 0f 84 e5 00 00 00 je 49e558 : * XXX This does an lseek - rather expensive - but at the moment it is the : * only way to accurately determine how many blocks are in a relation. Is : * it worth keeping an accurate file length in shared memory someplace, : * rather than relying on the kernel to do it for us? : */ : buffer = ReadBufferBI(relation, P_NEW, bistate); 0.00 : 49e473: 48 8b 55 a0 mov -0x60(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:439 4.55 : 49e477: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e47b: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 49e480: e8 3b fc ff ff callq 49e0c0 : : /* : * We can be certain that locking the otherBuffer first is OK, since it : * must have a lower page number. : */ : if (otherBuffer != InvalidBuffer) 0.00 : 49e485: 45 85 ff test %r15d,%r15d : * XXX This does an lseek - rather expensive - but at the moment it is the : * only way to accurately determine how many blocks are in a relation. Is : * it worth keeping an accurate file length in shared memory someplace, : * rather than relying on the kernel to do it for us? : */ : buffer = ReadBufferBI(relation, P_NEW, bistate); 0.00 : 49e488: 41 89 c4 mov %eax,%r12d : : /* : * We can be certain that locking the otherBuffer first is OK, since it : * must have a lower page number. : */ : if (otherBuffer != InvalidBuffer) 0.00 : 49e48b: 0f 85 af 00 00 00 jne 49e540 : LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE); : : /* : * Now acquire lock on the new page. : */ : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e491: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e496: 44 89 e7 mov %r12d,%edi 0.00 : 49e499: e8 72 62 1d 00 callq 674710 : * Release the file-extension lock; it's now OK for someone else to extend : * the relation some more. Note that we cannot release this lock before : * we have buffer lock on the new page, or we risk a race condition : * against vacuumlazy.c --- see comments therein. : */ : if (needLock) 0.00 : 49e49e: 84 db test %bl,%bl 0.00 : 49e4a0: 75 7e jne 49e520 : /* : * We need to initialize the empty new page. Double-check that it really : * is empty (this should never happen, but if it does we don't want to : * risk wiping out valid data). : */ : page = BufferGetPage(buffer); 0.00 : 49e4a2: 45 85 e4 test %r12d,%r12d 0.00 : 49e4a5: 0f 88 45 02 00 00 js 49e6f0 0.00 : 49e4ab: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49e4b0: 48 63 d8 movslq %eax,%rbx 0.00 : 49e4b3: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 49e4b7: 48 03 1d 3a 16 72 00 add 0x72163a(%rip),%rbx # bbfaf8 : : if (!PageIsNew(page)) 0.00 : 49e4be: 66 83 7b 0e 00 cmpw $0x0,0xe(%rbx) 0.00 : 49e4c3: 0f 85 3e 03 00 00 jne 49e807 : elog(ERROR, "page %u of relation \"%s\" should be empty but is not", : BufferGetBlockNumber(buffer), : RelationGetRelationName(relation)); : : PageInit(page, BufferGetPageSize(buffer), 0); 0.00 : 49e4c9: 31 d2 xor %edx,%edx 0.00 : 49e4cb: be 00 20 00 00 mov $0x2000,%esi 0.00 : 49e4d0: 48 89 df mov %rbx,%rdi 0.00 : 49e4d3: e8 68 7d 1f 00 callq 696240 : : if (len > PageGetHeapFreeSpace(page)) 0.00 : 49e4d8: 48 89 df mov %rbx,%rdi 0.00 : 49e4db: e8 80 68 1f 00 callq 694d60 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:476 4.55 : 49e4e0: 48 39 45 c0 cmp %rax,-0x40(%rbp) 0.00 : 49e4e4: 0f 87 ef 02 00 00 ja 49e7d9 : * or just keep it for this backend's exclusive use in the short run : * (until VACUUM sees it)? Seems to depend on whether you expect the : * current backend to make more insertions or not, which is probably a : * good bet most of the time. So for now, don't add it to FSM yet. : */ : RelationSetTargetBlock(relation, BufferGetBlockNumber(buffer)); 0.00 : 49e4ea: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 49e4ee: 48 8b 5a 10 mov 0x10(%rdx),%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:491 13.64 : 49e4f2: 48 85 db test %rbx,%rbx 0.00 : 49e4f5: 0f 84 31 02 00 00 je 49e72c 0.00 : 49e4fb: 44 89 e7 mov %r12d,%edi 0.00 : 49e4fe: e8 2d 5b 1d 00 callq 674030 0.00 : 49e503: 89 43 18 mov %eax,0x18(%rbx) : : return buffer; : } 0.00 : 49e506: 48 83 c4 48 add $0x48,%rsp 0.00 : 49e50a: 44 89 e0 mov %r12d,%eax 0.00 : 49e50d: 5b pop %rbx 0.00 : 49e50e: 41 5c pop %r12 0.00 : 49e510: 41 5d pop %r13 0.00 : 49e512: 41 5e pop %r14 0.00 : 49e514: 41 5f pop %r15 0.00 : 49e516: c9 leaveq 0.00 : 49e517: c3 retq 0.00 : 49e518: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49e51f: 00 : * the relation some more. Note that we cannot release this lock before : * we have buffer lock on the new page, or we risk a race condition : * against vacuumlazy.c --- see comments therein. : */ : if (needLock) : UnlockRelationForExtension(relation, ExclusiveLock); 0.00 : 49e520: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e524: be 07 00 00 00 mov $0x7,%esi 0.00 : 49e529: e8 62 96 1e 00 callq 687b90 : /* : * We need to initialize the empty new page. Double-check that it really : * is empty (this should never happen, but if it does we don't want to : * risk wiping out valid data). : */ : page = BufferGetPage(buffer); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:467 4.55 : 49e52e: 45 85 e4 test %r12d,%r12d 0.00 : 49e531: 0f 89 74 ff ff ff jns 49e4ab 0.00 : 49e537: e9 b4 01 00 00 jmpq 49e6f0 0.00 : 49e53c: 0f 1f 40 00 nopl 0x0(%rax) : /* : * We can be certain that locking the otherBuffer first is OK, since it : * must have a lower page number. : */ : if (otherBuffer != InvalidBuffer) : LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e540: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e545: 44 89 ff mov %r15d,%edi 0.00 : 49e548: e8 c3 61 1d 00 callq 674710 0.00 : 49e54d: 0f 1f 00 nopl (%rax) 0.00 : 49e550: e9 3c ff ff ff jmpq 49e491 0.00 : 49e555: 0f 1f 00 nopl (%rax) : * could be accessing them. : */ : needLock = !RELATION_IS_LOCAL(relation); : : if (needLock) : LockRelationForExtension(relation, ExclusiveLock); 0.00 : 49e558: be 07 00 00 00 mov $0x7,%esi 0.00 : 49e55d: 48 89 d7 mov %rdx,%rdi 0.00 : 49e560: e8 db 98 1e 00 callq 687e40 0.00 : 49e565: e9 09 ff ff ff jmpq 49e473 0.00 : 49e56a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : else : { : /* lock target buffer first */ : buffer = ReadBuffer(relation, targetBlock); 0.00 : 49e570: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e574: 44 89 ee mov %r13d,%esi 0.00 : 49e577: e8 24 81 1d 00 callq 6766a0 : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e57c: 85 c0 test %eax,%eax : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : } : else : { : /* lock target buffer first */ : buffer = ReadBuffer(relation, targetBlock); 0.00 : 49e57e: 41 89 c4 mov %eax,%r12d : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e581: 0f 88 d9 00 00 00 js 49e660 0.00 : 49e587: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49e58c: 48 98 cltq 0.00 : 49e58e: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49e592: 48 03 05 5f 15 72 00 add 0x72155f(%rip),%rax # bbfaf8 0.00 : 49e599: f6 40 0a 04 testb $0x4,0xa(%rax) 0.00 : 49e59d: 0f 85 8d 00 00 00 jne 49e630 : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e5a3: 44 89 e7 mov %r12d,%edi 0.00 : 49e5a6: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e5ab: e8 60 61 1d 00 callq 674710 : LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e5b0: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e5b5: 44 89 ff mov %r15d,%edi 0.00 : 49e5b8: e8 53 61 1d 00 callq 674710 0.00 : 49e5bd: e9 1b fd ff ff jmpq 49e2dd 0.00 : 49e5c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else if (otherBlock == targetBlock) : { : /* also easy case */ : buffer = otherBuffer; : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e5c8: 45 85 ff test %r15d,%r15d 0.00 : 49e5cb: 0f 88 d7 00 00 00 js 49e6a8 0.00 : 49e5d1: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 49e5d5: 48 03 05 1c 15 72 00 add 0x72151c(%rip),%rax # bbfaf8 0.00 : 49e5dc: f6 40 0a 04 testb $0x4,0xa(%rax) 0.00 : 49e5e0: 0f 85 aa 00 00 00 jne 49e690 : visibilitymap_pin(relation, targetBlock, vmbuffer); : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e5e6: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e5eb: 44 89 ff mov %r15d,%edi 0.00 : 49e5ee: 45 89 fc mov %r15d,%r12d 0.00 : 49e5f1: e8 1a 61 1d 00 callq 674710 0.00 : 49e5f6: e9 da fd ff ff jmpq 49e3d5 0.00 : 49e5fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (otherBuffer == InvalidBuffer) : { : /* easy case */ : buffer = ReadBufferBI(relation, targetBlock, bistate); : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); 0.00 : 49e600: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 49e604: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e608: 44 89 ee mov %r13d,%esi 0.00 : 49e60b: e8 b0 5e 00 00 callq 4a44c0 0.00 : 49e610: e9 b3 fd ff ff jmpq 49e3c8 0.00 : 49e615: 0f 1f 00 nopl (%rax) : */ : if (otherBuffer == InvalidBuffer) : { : /* easy case */ : buffer = ReadBufferBI(relation, targetBlock, bistate); : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e618: 48 8b 15 f9 ea 6d 00 mov 0x6deaf9(%rip),%rdx # b7d118 0.00 : 49e61f: f7 d0 not %eax 0.00 : 49e621: 48 98 cltq 0.00 : 49e623: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 49e627: e9 92 fd ff ff jmpq 49e3be 0.00 : 49e62c: 0f 1f 40 00 nopl 0x0(%rax) : else : { : /* lock target buffer first */ : buffer = ReadBuffer(relation, targetBlock); : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); 0.00 : 49e630: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 49e634: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e638: 44 89 ee mov %r13d,%esi 0.00 : 49e63b: e8 80 5e 00 00 callq 4a44c0 0.00 : 49e640: e9 5e ff ff ff jmpq 49e5a3 0.00 : 49e645: 0f 1f 00 nopl (%rax) : else if (otherBlock < targetBlock) : { : /* lock other buffer first */ : buffer = ReadBuffer(relation, targetBlock); : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); 0.00 : 49e648: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 49e64c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e650: 44 89 ee mov %r13d,%esi 0.00 : 49e653: e8 68 5e 00 00 callq 4a44c0 0.00 : 49e658: e9 66 fc ff ff jmpq 49e2c3 0.00 : 49e65d: 0f 1f 00 nopl (%rax) : } : else : { : /* lock target buffer first */ : buffer = ReadBuffer(relation, targetBlock); : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e660: 48 8b 15 b1 ea 6d 00 mov 0x6deab1(%rip),%rdx # b7d118 0.00 : 49e667: f7 d0 not %eax 0.00 : 49e669: 48 98 cltq 0.00 : 49e66b: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 49e66f: e9 25 ff ff ff jmpq 49e599 0.00 : 49e674: 0f 1f 40 00 nopl 0x0(%rax) : } : else if (otherBlock < targetBlock) : { : /* lock other buffer first */ : buffer = ReadBuffer(relation, targetBlock); : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e678: 48 8b 15 99 ea 6d 00 mov 0x6dea99(%rip),%rdx # b7d118 0.00 : 49e67f: f7 d0 not %eax 0.00 : 49e681: 48 98 cltq 0.00 : 49e683: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 49e687: e9 2d fc ff ff jmpq 49e2b9 0.00 : 49e68c: 0f 1f 40 00 nopl 0x0(%rax) : else if (otherBlock == targetBlock) : { : /* also easy case */ : buffer = otherBuffer; : if (PageIsAllVisible(BufferGetPage(buffer))) : visibilitymap_pin(relation, targetBlock, vmbuffer); 0.00 : 49e690: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 49e694: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e698: 44 89 ee mov %r13d,%esi 0.00 : 49e69b: e8 20 5e 00 00 callq 4a44c0 0.00 : 49e6a0: e9 41 ff ff ff jmpq 49e5e6 0.00 : 49e6a5: 0f 1f 00 nopl (%rax) : } : else if (otherBlock == targetBlock) : { : /* also easy case */ : buffer = otherBuffer; : if (PageIsAllVisible(BufferGetPage(buffer))) 0.00 : 49e6a8: 48 8b 05 69 ea 6d 00 mov 0x6dea69(%rip),%rax # b7d118 0.00 : 49e6af: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 49e6b3: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 49e6b7: e9 20 ff ff ff jmpq 49e5dc 0.00 : 49e6bc: 0f 1f 40 00 nopl 0x0(%rax) : page = BufferGetPage(buffer); : pageFreeSpace = PageGetHeapFreeSpace(page); : if (len + saveFreeSpace <= pageFreeSpace) : { : /* use this page as future insert target, too */ : RelationSetTargetBlock(relation, targetBlock); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:387 4.55 : 49e6c0: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 49e6c4: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 49e6c8: 48 85 c0 test %rax,%rax 0.00 : 49e6cb: 0f 84 89 00 00 00 je 49e75a 0.00 : 49e6d1: 44 89 68 18 mov %r13d,0x18(%rax) : * good bet most of the time. So for now, don't add it to FSM yet. : */ : RelationSetTargetBlock(relation, BufferGetBlockNumber(buffer)); : : return buffer; : } 0.00 : 49e6d5: e9 2c fe ff ff jmpq 49e506 0.00 : 49e6da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* Compute desired extra freespace due to fillfactor option */ : saveFreeSpace = RelationGetTargetPageFreeSpace(relation, : HEAP_DEFAULT_FILLFACTOR); : : if (otherBuffer != InvalidBuffer) : otherBlock = BufferGetBlockNumber(otherBuffer); 0.00 : 49e6e0: 44 89 ff mov %r15d,%edi 0.00 : 49e6e3: e8 48 59 1d 00 callq 674030 0.00 : 49e6e8: 89 45 bc mov %eax,-0x44(%rbp) 0.00 : 49e6eb: e9 ff fa ff ff jmpq 49e1ef : /* : * We need to initialize the empty new page. Double-check that it really : * is empty (this should never happen, but if it does we don't want to : * risk wiping out valid data). : */ : page = BufferGetPage(buffer); 0.00 : 49e6f0: 44 89 e0 mov %r12d,%eax 0.00 : 49e6f3: 48 8b 15 1e ea 6d 00 mov 0x6dea1e(%rip),%rdx # b7d118 0.00 : 49e6fa: f7 d0 not %eax 0.00 : 49e6fc: 48 98 cltq 0.00 : 49e6fe: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 49e702: e9 b7 fd ff ff jmpq 49e4be 0.00 : 49e707: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49e70e: 00 00 : /* can't fit, don't bother asking FSM */ : targetBlock = InvalidBlockNumber; : use_fsm = false; : } : else if (bistate && bistate->current_buf != InvalidBuffer) : targetBlock = BufferGetBlockNumber(bistate->current_buf); 0.00 : 49e710: e8 1b 59 1d 00 callq 674030 0.00 : 49e715: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 49e718: 41 89 c5 mov %eax,%r13d 0.00 : 49e71b: 0f 94 c0 sete %al : { : /* can't fit, don't bother asking FSM */ : targetBlock = InvalidBlockNumber; : use_fsm = false; : } : else if (bistate && bistate->current_buf != InvalidBuffer) 0.00 : 49e71e: e9 1a fb ff ff jmpq 49e23d : if (targetBlock == InvalidBlockNumber) : { : BlockNumber nblocks = RelationGetNumberOfBlocks(relation); : : if (nblocks > 0) : targetBlock = nblocks - 1; 0.00 : 49e723: 44 8d 68 ff lea -0x1(%rax),%r13d 0.00 : 49e727: e9 27 fb ff ff jmpq 49e253 : * or just keep it for this backend's exclusive use in the short run : * (until VACUUM sees it)? Seems to depend on whether you expect the : * current backend to make more insertions or not, which is probably a : * good bet most of the time. So for now, don't add it to FSM yet. : */ : RelationSetTargetBlock(relation, BufferGetBlockNumber(buffer)); 0.00 : 49e72c: 48 89 d0 mov %rdx,%rax 0.00 : 49e72f: 8b 52 1c mov 0x1c(%rdx),%edx 0.00 : 49e732: 48 8b 38 mov (%rax),%rdi 0.00 : 49e735: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 49e738: e8 f3 b2 1f 00 callq 699a30 0.00 : 49e73d: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e741: 48 89 c6 mov %rax,%rsi 0.00 : 49e744: 48 83 c7 10 add $0x10,%rdi 0.00 : 49e748: e8 b3 ab 1f 00 callq 699300 0.00 : 49e74d: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 49e751: 48 8b 5a 10 mov 0x10(%rdx),%rbx 0.00 : 49e755: e9 a1 fd ff ff jmpq 49e4fb : page = BufferGetPage(buffer); : pageFreeSpace = PageGetHeapFreeSpace(page); : if (len + saveFreeSpace <= pageFreeSpace) : { : /* use this page as future insert target, too */ : RelationSetTargetBlock(relation, targetBlock); 0.00 : 49e75a: 48 89 d0 mov %rdx,%rax 0.00 : 49e75d: 8b 52 1c mov 0x1c(%rdx),%edx 0.00 : 49e760: 48 8b 38 mov (%rax),%rdi 0.00 : 49e763: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 49e766: e8 c5 b2 1f 00 callq 699a30 0.00 : 49e76b: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 49e76f: 48 89 c6 mov %rax,%rsi 0.00 : 49e772: 48 83 c7 10 add $0x10,%rdi 0.00 : 49e776: e8 85 ab 1f 00 callq 699300 0.00 : 49e77b: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 49e77f: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 49e783: e9 49 ff ff ff jmpq 49e6d1 : : /* : * If we're gonna fail for oversize tuple, do it right away : */ : if (len > MaxHeapTupleSize) : ereport(ERROR, 0.00 : 49e788: 45 31 c0 xor %r8d,%r8d 0.00 : 49e78b: b9 20 30 7b 00 mov $0x7b3020,%ecx 0.00 : 49e790: ba f1 00 00 00 mov $0xf1,%edx 0.00 : 49e795: be 70 2f 7b 00 mov $0x7b2f70,%esi 0.00 : 49e79a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 49e79f: e8 1c c3 2d 00 callq 77aac0 0.00 : 49e7a4: 84 c0 test %al,%al 0.00 : 49e7a6: 74 2c je 49e7d4 0.00 : 49e7a8: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 49e7ac: ba e0 1f 00 00 mov $0x1fe0,%edx 0.00 : 49e7b1: bf b0 2f 7b 00 mov $0x7b2fb0,%edi 0.00 : 49e7b6: 31 c0 xor %eax,%eax 0.00 : 49e7b8: e8 e3 e0 2d 00 callq 77c8a0 0.00 : 49e7bd: bf 05 01 00 00 mov $0x105,%edi 0.00 : 49e7c2: 89 c3 mov %eax,%ebx 0.00 : 49e7c4: e8 87 e5 2d 00 callq 77cd50 0.00 : 49e7c9: 89 de mov %ebx,%esi 0.00 : 49e7cb: 89 c7 mov %eax,%edi 0.00 : 49e7cd: 31 c0 xor %eax,%eax 0.00 : 49e7cf: e8 0c be 2d 00 callq 77a5e0 : * risk wiping out valid data). : */ : page = BufferGetPage(buffer); : : if (!PageIsNew(page)) : elog(ERROR, "page %u of relation \"%s\" should be empty but is not", 0.00 : 49e7d4: e8 f7 ac fc ff callq 4694d0 : PageInit(page, BufferGetPageSize(buffer), 0); : : if (len > PageGetHeapFreeSpace(page)) : { : /* We should not get here given the test at the top */ : elog(PANIC, "tuple is too big: size %zu", len); 0.00 : 49e7d9: ba 20 30 7b 00 mov $0x7b3020,%edx 0.00 : 49e7de: be df 01 00 00 mov $0x1df,%esi 0.00 : 49e7e3: bf 70 2f 7b 00 mov $0x7b2f70,%edi 0.00 : 49e7e8: e8 33 cc 2d 00 callq 77b420 0.00 : 49e7ed: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 49e7f1: be 76 2f 7b 00 mov $0x7b2f76,%esi 0.00 : 49e7f6: bf 16 00 00 00 mov $0x16,%edi 0.00 : 49e7fb: 31 c0 xor %eax,%eax 0.00 : 49e7fd: e8 2e ca 2d 00 callq 77b230 0.00 : 49e802: e8 c9 ac fc ff callq 4694d0 : * risk wiping out valid data). : */ : page = BufferGetPage(buffer); : : if (!PageIsNew(page)) : elog(ERROR, "page %u of relation \"%s\" should be empty but is not", 0.00 : 49e807: ba 20 30 7b 00 mov $0x7b3020,%edx 0.00 : 49e80c: be d8 01 00 00 mov $0x1d8,%esi 0.00 : 49e811: bf 70 2f 7b 00 mov $0x7b2f70,%edi 0.00 : 49e816: e8 05 cc 2d 00 callq 77b420 0.00 : 49e81b: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 49e81f: 44 89 e7 mov %r12d,%edi 0.00 : 49e822: 48 8b 58 30 mov 0x30(%rax),%rbx 0.00 : 49e826: e8 05 58 1d 00 callq 674030 0.00 : 49e82b: be e0 2f 7b 00 mov $0x7b2fe0,%esi 0.00 : 49e830: 89 c2 mov %eax,%edx 0.00 : 49e832: bf 14 00 00 00 mov $0x14,%edi 0.00 : 49e837: 48 89 d9 mov %rbx,%rcx 0.00 : 49e83a: 31 c0 xor %eax,%eax 0.00 : 49e83c: e8 ef c9 2d 00 callq 77b230 0.00 : 49e841: eb 91 jmp 49e7d4 : * retake the buffer locks, the visibility map bit will have been : * cleared by some other backend anyway. In that case, we'll have : * done a bit of extra work for no gain, but there's no real harm : * done. : */ : if (otherBuffer == InvalidBuffer || buffer <= otherBuffer) 0.00 : 49e843: 45 31 f6 xor %r14d,%r14d 0.00 : 49e846: e9 91 fb ff ff jmpq 49e3dc Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 18.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:455 18.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:475 13.64 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:451 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:451 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:457 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:477 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:451 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:451 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:457 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:477 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:477 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000758bd0 : : * Uses the C string to text conversion function, which is only appropriate : * if VarChar and text are equivalent types. : */ : static VarChar * : varchar_input(const char *s, size_t len, int32 atttypmod) : { 0.00 : 758bd0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:451 13.64 : 758bd1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:451 4.55 : 758bd4: 41 55 push %r13 : VarChar *result; : size_t maxlen; : : maxlen = atttypmod - VARHDRSZ; /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:455 18.18 : 758bd6: 44 8d 6a fc lea -0x4(%rdx),%r13d : * Uses the C string to text conversion function, which is only appropriate : * if VarChar and text are equivalent types. : */ : static VarChar * : varchar_input(const char *s, size_t len, int32 atttypmod) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:451 9.09 : 758bda: 41 54 push %r12 0.00 : 758bdc: 49 89 fc mov %rdi,%r12 0.00 : 758bdf: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:451 4.55 : 758be0: 48 89 f3 mov %rsi,%rbx 0.00 : 758be3: 48 83 ec 08 sub $0x8,%rsp : VarChar *result; : size_t maxlen; : : maxlen = atttypmod - VARHDRSZ; : : if (atttypmod >= (int32) VARHDRSZ && len > maxlen) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:457 9.09 : 758be7: 83 fa 03 cmp $0x3,%edx 0.00 : 758bea: 7e 43 jle 758c2f /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:457 4.55 : 758bec: 49 63 c5 movslq %r13d,%rax 0.00 : 758bef: 48 39 c6 cmp %rax,%rsi 0.00 : 758bf2: 76 3b jbe 758c2f : { : /* Verify that extra characters are spaces, and clip them off */ : size_t mbmaxlen = pg_mbcharcliplen(s, len, maxlen); 0.00 : 758bf4: 44 89 ea mov %r13d,%edx 0.00 : 758bf7: e8 b4 fd 02 00 callq 7889b0 0.00 : 758bfc: 48 63 f0 movslq %eax,%rsi : size_t j; : : for (j = mbmaxlen; j < len; j++) 0.00 : 758bff: 48 39 f3 cmp %rsi,%rbx 0.00 : 758c02: 76 28 jbe 758c2c : { : if (s[j] != ' ') 0.00 : 758c04: 41 80 3c 34 20 cmpb $0x20,(%r12,%rsi,1) : ereport(ERROR, 0.00 : 758c09: 49 8d 4c 34 01 lea 0x1(%r12,%rsi,1),%rcx 0.00 : 758c0e: 48 89 f2 mov %rsi,%rdx : size_t mbmaxlen = pg_mbcharcliplen(s, len, maxlen); : size_t j; : : for (j = mbmaxlen; j < len; j++) : { : if (s[j] != ' ') 0.00 : 758c11: 74 10 je 758c23 0.00 : 758c13: eb 33 jmp 758c48 0.00 : 758c15: 0f 1f 00 nopl (%rax) 0.00 : 758c18: 0f b6 01 movzbl (%rcx),%eax 0.00 : 758c1b: 48 83 c1 01 add $0x1,%rcx 0.00 : 758c1f: 3c 20 cmp $0x20,%al 0.00 : 758c21: 75 25 jne 758c48 : { : /* Verify that extra characters are spaces, and clip them off */ : size_t mbmaxlen = pg_mbcharcliplen(s, len, maxlen); : size_t j; : : for (j = mbmaxlen; j < len; j++) 0.00 : 758c23: 48 83 c2 01 add $0x1,%rdx 0.00 : 758c27: 48 39 d3 cmp %rdx,%rbx 0.00 : 758c2a: 77 ec ja 758c18 0.00 : 758c2c: 48 89 f3 mov %rsi,%rbx : len = mbmaxlen; : } : : result = (VarChar *) cstring_to_text_with_len(s, len); : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:477 4.55 : 758c2f: 48 83 c4 08 add $0x8,%rsp : } : : len = mbmaxlen; : } : : result = (VarChar *) cstring_to_text_with_len(s, len); 0.00 : 758c33: 89 de mov %ebx,%esi 0.00 : 758c35: 4c 89 e7 mov %r12,%rdi : return result; : } 0.00 : 758c38: 5b pop %rbx 4.55 : 758c39: 41 5c pop %r12 0.00 : 758c3b: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:477 9.09 : 758c3d: c9 leaveq : } : : len = mbmaxlen; : } : : result = (VarChar *) cstring_to_text_with_len(s, len); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varchar.c:475 18.18 : 758c3e: e9 5d 16 00 00 jmpq 75a2a0 0.00 : 758c43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : size_t j; : : for (j = mbmaxlen; j < len; j++) : { : if (s[j] != ' ') : ereport(ERROR, 0.00 : 758c48: 45 31 c0 xor %r8d,%r8d 0.00 : 758c4b: b9 69 bb 8c 00 mov $0x8cbb69,%ecx 0.00 : 758c50: ba d5 01 00 00 mov $0x1d5,%edx 0.00 : 758c55: be e1 ba 8c 00 mov $0x8cbae1,%esi 0.00 : 758c5a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 758c5f: e8 5c 1e 02 00 callq 77aac0 0.00 : 758c64: 84 c0 test %al,%al 0.00 : 758c66: 75 05 jne 758c6d 0.00 : 758c68: e8 63 08 d1 ff callq 4694d0 0.00 : 758c6d: 44 89 ee mov %r13d,%esi 0.00 : 758c70: bf f0 ba 8c 00 mov $0x8cbaf0,%edi 0.00 : 758c75: 31 c0 xor %eax,%eax 0.00 : 758c77: e8 24 3c 02 00 callq 77c8a0 0.00 : 758c7c: bf 82 00 00 01 mov $0x1000082,%edi 0.00 : 758c81: 89 c3 mov %eax,%ebx 0.00 : 758c83: e8 c8 40 02 00 callq 77cd50 0.00 : 758c88: 89 de mov %ebx,%esi 0.00 : 758c8a: 89 c7 mov %eax,%edi 0.00 : 758c8c: 31 c0 xor %eax,%eax 0.00 : 758c8e: e8 4d 19 02 00 callq 77a5e0 0.00 : 758c93: eb d3 jmp 758c68 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 36.36 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:648 18.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:628 18.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:655 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:630 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 4.55 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:639 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079a900 : : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerForgetBuffer(ResourceOwner owner, Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 4.55 : 79a900: 55 push %rbp : if (owner != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:628 18.18 : 79a901: 48 85 ff test %rdi,%rdi : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerForgetBuffer(ResourceOwner owner, Buffer buffer) : { 0.00 : 79a904: 48 89 e5 mov %rsp,%rbp 0.00 : 79a907: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:627 9.09 : 79a909: 49 89 fc mov %rdi,%r12 0.00 : 79a90c: 53 push %rbx 0.00 : 79a90d: 89 f3 mov %esi,%ebx : if (owner != NULL) 0.00 : 79a90f: 74 4d je 79a95e : { : Buffer *buffers = owner->buffers; : int nb1 = owner->nbuffers - 1; 0.00 : 79a911: 8b 47 20 mov 0x20(%rdi),%eax : void : ResourceOwnerForgetBuffer(ResourceOwner owner, Buffer buffer) : { : if (owner != NULL) : { : Buffer *buffers = owner->buffers; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:630 9.09 : 79a914: 48 8b 77 28 mov 0x28(%rdi),%rsi : /* : * Scan back-to-front because it's more likely we are releasing a : * recently pinned buffer. This isn't always the case of course, but : * it's the way to bet. : */ : for (i = nb1; i >= 0; i--) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:639 4.55 : 79a918: 89 c7 mov %eax,%edi 0.00 : 79a91a: 83 ef 01 sub $0x1,%edi 0.00 : 79a91d: 78 49 js 79a968 : { : if (buffers[i] == buffer) 0.00 : 79a91f: 48 63 c7 movslq %edi,%rax : while (i < nb1) : { : buffers[i] = buffers[i + 1]; : i++; : } : owner->nbuffers = nb1; 0.00 : 79a922: 89 fa mov %edi,%edx : * recently pinned buffer. This isn't always the case of course, but : * it's the way to bet. : */ : for (i = nb1; i >= 0; i--) : { : if (buffers[i] == buffer) 0.00 : 79a924: 39 1c 86 cmp %ebx,(%rsi,%rax,4) 0.00 : 79a927: 74 30 je 79a959 0.00 : 79a929: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Scan back-to-front because it's more likely we are releasing a : * recently pinned buffer. This isn't always the case of course, but : * it's the way to bet. : */ : for (i = nb1; i >= 0; i--) 0.00 : 79a930: 83 ea 01 sub $0x1,%edx 0.00 : 79a933: 78 33 js 79a968 : { : if (buffers[i] == buffer) 0.00 : 79a935: 48 63 ca movslq %edx,%rcx 0.00 : 79a938: 39 1c 8e cmp %ebx,(%rsi,%rcx,4) 0.00 : 79a93b: 75 f3 jne 79a930 : { : while (i < nb1) 0.00 : 79a93d: 39 d7 cmp %edx,%edi 0.00 : 79a93f: 90 nop 0.00 : 79a940: 7f 09 jg 79a94b 0.00 : 79a942: eb 15 jmp 79a959 0.00 : 79a944: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 79a948: 48 63 ca movslq %edx,%rcx : { : buffers[i] = buffers[i + 1]; 0.00 : 79a94b: 8b 44 8e 04 mov 0x4(%rsi,%rcx,4),%eax : i++; 0.00 : 79a94f: 83 c2 01 add $0x1,%edx : */ : for (i = nb1; i >= 0; i--) : { : if (buffers[i] == buffer) : { : while (i < nb1) 0.00 : 79a952: 39 d7 cmp %edx,%edi : { : buffers[i] = buffers[i + 1]; 0.00 : 79a954: 89 04 8e mov %eax,(%rsi,%rcx,4) : */ : for (i = nb1; i >= 0; i--) : { : if (buffers[i] == buffer) : { : while (i < nb1) 0.00 : 79a957: 7f ef jg 79a948 : { : buffers[i] = buffers[i + 1]; : i++; : } : owner->nbuffers = nb1; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:648 36.36 : 79a959: 41 89 7c 24 20 mov %edi,0x20(%r12) : } : } : elog(ERROR, "buffer %d is not owned by resource owner %s", : buffer, owner->name); : } : } 0.00 : 79a95e: 5b pop %rbx 0.00 : 79a95f: 41 5c pop %r12 0.00 : 79a961: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:655 18.18 : 79a962: c3 retq 0.00 : 79a963: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : owner->nbuffers = nb1; : return; : } : } : elog(ERROR, "buffer %d is not owned by resource owner %s", 0.00 : 79a968: ba 70 27 8e 00 mov $0x8e2770,%edx 0.00 : 79a96d: be 8d 02 00 00 mov $0x28d,%esi 0.00 : 79a972: bf 90 22 8e 00 mov $0x8e2290,%edi 0.00 : 79a977: e8 a4 0a fe ff callq 77b420 0.00 : 79a97c: 49 8b 4c 24 18 mov 0x18(%r12),%rcx 0.00 : 79a981: 89 da mov %ebx,%edx 0.00 : 79a983: be b8 24 8e 00 mov $0x8e24b8,%esi 0.00 : 79a988: bf 14 00 00 00 mov $0x14,%edi 0.00 : 79a98d: 31 c0 xor %eax,%eax 0.00 : 79a98f: e8 9c 08 fe ff callq 77b230 0.00 : 79a994: e8 37 eb cc ff callq 4694d0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 19.05 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:269 19.05 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:297 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:270 9.52 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:269 9.52 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:270 9.52 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:270 4.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:270 4.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:297 4.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:293 4.76 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:297 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046eda0 : : * heap_attisnull - returns TRUE iff tuple attribute is not present : * ---------------- : */ : bool : heap_attisnull(HeapTuple tup, int attnum) : { 0.00 : 46eda0: 55 push %rbp 0.00 : 46eda1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:269 19.05 : 46eda4: 53 push %rbx 9.52 : 46eda5: 89 f3 mov %esi,%ebx 0.00 : 46eda7: 48 83 ec 08 sub $0x8,%rsp : if (attnum > (int) HeapTupleHeaderGetNatts(tup->t_data)) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:270 14.29 : 46edab: 48 8b 57 10 mov 0x10(%rdi),%rdx 9.52 : 46edaf: 0f b7 42 12 movzwl 0x12(%rdx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:270 4.76 : 46edb3: 25 ff 07 00 00 and $0x7ff,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:270 9.52 : 46edb8: 39 f0 cmp %esi,%eax 0.00 : 46edba: 7c 14 jl 46edd0 : return true; : : if (attnum > 0) 0.00 : 46edbc: 85 f6 test %esi,%esi 0.00 : 46edbe: 7e 48 jle 46ee08 : { : if (HeapTupleNoNulls(tup)) 0.00 : 46edc0: f6 42 14 01 testb $0x1,0x14(%rdx) 0.00 : 46edc4: 75 1a jne 46ede0 : default: : elog(ERROR, "invalid attnum: %d", attnum); : } : : return false; : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:297 4.76 : 46edc6: 48 83 c4 08 add $0x8,%rsp : case MaxCommandIdAttributeNumber: : /* these are never null */ : break; : : default: : elog(ERROR, "invalid attnum: %d", attnum); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:293 4.76 : 46edca: 31 c0 xor %eax,%eax : } : : return false; : } 0.00 : 46edcc: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:297 4.76 : 46edcd: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:297 19.05 : 46edce: c3 retq 0.00 : 46edcf: 90 nop 0.00 : 46edd0: 48 83 c4 08 add $0x8,%rsp : case MaxCommandIdAttributeNumber: : /* these are never null */ : break; : : default: : elog(ERROR, "invalid attnum: %d", attnum); 0.00 : 46edd4: b8 01 00 00 00 mov $0x1,%eax : } : : return false; : } 0.00 : 46edd9: 5b pop %rbx 0.00 : 46edda: c9 leaveq 0.00 : 46eddb: c3 retq 0.00 : 46eddc: 0f 1f 40 00 nopl 0x0(%rax) : : if (attnum > 0) : { : if (HeapTupleNoNulls(tup)) : return false; : return att_isnull(attnum - 1, tup->t_data->t_bits); 0.00 : 46ede0: 8d 4b ff lea -0x1(%rbx),%ecx 0.00 : 46ede3: 89 c8 mov %ecx,%eax 0.00 : 46ede5: 83 e1 07 and $0x7,%ecx 0.00 : 46ede8: c1 f8 03 sar $0x3,%eax 0.00 : 46edeb: 48 98 cltq 0.00 : 46eded: 0f b6 44 02 17 movzbl 0x17(%rdx,%rax,1),%eax : default: : elog(ERROR, "invalid attnum: %d", attnum); : } : : return false; : } 0.00 : 46edf2: 48 83 c4 08 add $0x8,%rsp 0.00 : 46edf6: 5b pop %rbx 0.00 : 46edf7: c9 leaveq : : if (attnum > 0) : { : if (HeapTupleNoNulls(tup)) : return false; : return att_isnull(attnum - 1, tup->t_data->t_bits); 0.00 : 46edf8: d3 f8 sar %cl,%eax 0.00 : 46edfa: 83 f0 01 xor $0x1,%eax 0.00 : 46edfd: 83 e0 01 and $0x1,%eax : default: : elog(ERROR, "invalid attnum: %d", attnum); : } : : return false; : } 0.00 : 46ee00: c3 retq 0.00 : 46ee01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (HeapTupleNoNulls(tup)) : return false; : return att_isnull(attnum - 1, tup->t_data->t_bits); : } : : switch (attnum) 0.00 : 46ee08: 8d 43 07 lea 0x7(%rbx),%eax 0.00 : 46ee0b: 83 f8 06 cmp $0x6,%eax 0.00 : 46ee0e: 76 b6 jbe 46edc6 : case MaxCommandIdAttributeNumber: : /* these are never null */ : break; : : default: : elog(ERROR, "invalid attnum: %d", attnum); 0.00 : 46ee10: ba 20 f7 7a 00 mov $0x7af720,%edx 0.00 : 46ee15: be 25 01 00 00 mov $0x125,%esi 0.00 : 46ee1a: bf f4 f5 7a 00 mov $0x7af5f4,%edi 0.00 : 46ee1f: e8 fc c5 30 00 callq 77b420 0.00 : 46ee24: 89 da mov %ebx,%edx 0.00 : 46ee26: be 00 f6 7a 00 mov $0x7af600,%esi 0.00 : 46ee2b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 46ee30: 31 c0 xor %eax,%eax 0.00 : 46ee32: e8 f9 c3 30 00 callq 77b230 0.00 : 46ee37: e8 94 a6 ff ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1288 28.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1322 9.52 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1289 4.76 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1271 4.76 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1271 4.76 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 4.76 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 4.76 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 4.76 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1289 4.76 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1322 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679df0 : : #endif : } : : int : FileRead(File file, char *buffer, int amount) : { 0.00 : 679df0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1271 4.76 : 679df1: 48 89 e5 mov %rsp,%rbp 4.76 : 679df4: 41 56 push %r14 0.00 : 679df6: 49 89 f6 mov %rsi,%r14 0.00 : 679df9: 41 55 push %r13 0.00 : 679dfb: 41 89 d5 mov %edx,%r13d 0.00 : 679dfe: 41 54 push %r12 0.00 : 679e00: 41 89 fc mov %edi,%r12d 0.00 : 679e03: 53 push %rbx : DO_DB(elog(LOG, "FileRead: %d (%s) " INT64_FORMAT " %d %p", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : amount, buffer)); : : returnCode = FileAccess(file); 0.00 : 679e04: e8 17 fb ff ff callq 679920 : if (returnCode < 0) 0.00 : 679e09: 85 c0 test %eax,%eax : DO_DB(elog(LOG, "FileRead: %d (%s) " INT64_FORMAT " %d %p", : file, VfdCache[file].fileName, : (int64) VfdCache[file].seekPos, : amount, buffer)); : : returnCode = FileAccess(file); 0.00 : 679e0b: 89 c3 mov %eax,%ebx : if (returnCode < 0) 0.00 : 679e0d: 78 47 js 679e56 0.00 : 679e0f: 4d 63 e4 movslq %r12d,%r12 0.00 : 679e12: 4d 63 ed movslq %r13d,%r13 0.00 : 679e15: 49 c1 e4 06 shl $0x6,%r12 0.00 : 679e19: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return returnCode; : : retry: : returnCode = read(VfdCache[file].fd, buffer, amount); 0.00 : 679e20: 48 8b 05 71 33 50 00 mov 0x503371(%rip),%rax # b7d198 0.00 : 679e27: 4c 89 ea mov %r13,%rdx 0.00 : 679e2a: 4c 89 f6 mov %r14,%rsi /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 4.76 : 679e2d: 42 8b 3c 20 mov (%rax,%r12,1),%edi 4.76 : 679e31: e8 da f7 de ff callq 469610 : : if (returnCode >= 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1288 28.57 : 679e36: 85 c0 test %eax,%eax : returnCode = FileAccess(file); : if (returnCode < 0) : return returnCode; : : retry: : returnCode = read(VfdCache[file].fd, buffer, amount); /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1286 4.76 : 679e38: 89 c3 mov %eax,%ebx : : if (returnCode >= 0) 0.00 : 679e3a: 79 2c jns 679e68 : _dosmaperr(error); : break; : } : #endif : /* OK to retry if interrupted */ : if (errno == EINTR) 0.00 : 679e3c: e8 7f fe de ff callq 469cc0 <__errno_location@plt> 0.00 : 679e41: 83 38 04 cmpl $0x4,(%rax) 0.00 : 679e44: 74 da je 679e20 : goto retry; : : /* Trouble, so assume we don't know the file position anymore */ : VfdCache[file].seekPos = FileUnknownPos; 0.00 : 679e46: 48 8b 05 4b 33 50 00 mov 0x50334b(%rip),%rax # b7d198 0.00 : 679e4d: 4a c7 44 20 20 ff ff movq $0xffffffffffffffff,0x20(%rax,%r12,1) 0.00 : 679e54: ff ff : } : : return returnCode; : } 0.00 : 679e56: 89 d8 mov %ebx,%eax 0.00 : 679e58: 5b pop %rbx 0.00 : 679e59: 41 5c pop %r12 0.00 : 679e5b: 41 5d pop %r13 0.00 : 679e5d: 41 5e pop %r14 0.00 : 679e5f: c9 leaveq 0.00 : 679e60: c3 retq 0.00 : 679e61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : retry: : returnCode = read(VfdCache[file].fd, buffer, amount); : : if (returnCode >= 0) : VfdCache[file].seekPos += returnCode; /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1289 4.76 : 679e68: 4c 03 25 29 33 50 00 add 0x503329(%rip),%r12 # b7d198 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1289 9.52 : 679e6f: 48 98 cltq 0.00 : 679e71: 49 01 44 24 20 add %rax,0x20(%r12) : /* Trouble, so assume we don't know the file position anymore */ : VfdCache[file].seekPos = FileUnknownPos; : } : : return returnCode; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1322 28.57 : 679e76: 89 d8 mov %ebx,%eax 0.00 : 679e78: 5b pop %rbx 0.00 : 679e79: 41 5c pop %r12 0.00 : 679e7b: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:1322 4.76 : 679e7d: 41 5e pop %r14 0.00 : 679e7f: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:117 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:117 15.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:107 10.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:113 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:107 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:111 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:113 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:113 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5c70 : : PG_RETURN_INT32(-1); : } : : static int : btint4fastcmp(Datum x, Datum y, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:107 15.00 : 4a5c70: 55 push %rbp : int32 a = DatumGetInt32(x); : int32 b = DatumGetInt32(y); : : if (a > b) 0.00 : 4a5c71: 39 f7 cmp %esi,%edi 0.00 : 4a5c73: b8 01 00 00 00 mov $0x1,%eax : PG_RETURN_INT32(-1); : } : : static int : btint4fastcmp(Datum x, Datum y, SortSupport ssup) : { 5.00 : 4a5c78: 48 89 e5 mov %rsp,%rbp : int32 a = DatumGetInt32(x); : int32 b = DatumGetInt32(y); : : if (a > b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:111 5.00 : 4a5c7b: 7f 09 jg 4a5c86 : return 1; : else if (a == b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:113 10.00 : 4a5c7d: 0f 94 c0 sete %al 5.00 : 4a5c80: 0f b6 c0 movzbl %al,%eax 5.00 : 4a5c83: 83 e8 01 sub $0x1,%eax : return 0; : else : return -1; : } /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:117 55.00 : 4a5c86: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1896 10.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1912 10.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1912 10.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1912 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1912 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1912 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1912 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1912 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1912 5.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1918 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ccd80 : : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4ccd80: 48 89 f8 mov %rdi,%rax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1896 40.00 : 4ccd83: 48 ba 47 25 ad 36 42 movabs $0x8060504236ad2547,%rdx 0.00 : 4ccd8a: 50 60 80 : * is the position starting from the beginning of WAL, excluding all WAL : * page headers. : */ : static XLogRecPtr : XLogBytePosToRecPtr(uint64 bytepos) : { 0.00 : 4ccd8d: 55 push %rbp : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4ccd8e: 48 f7 e2 mul %rdx 0.00 : 4ccd91: 48 89 f8 mov %rdi,%rax : * is the position starting from the beginning of WAL, excluding all WAL : * page headers. : */ : static XLogRecPtr : XLogBytePosToRecPtr(uint64 bytepos) : { 0.00 : 4ccd94: 48 89 e5 mov %rsp,%rbp : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4ccd97: 48 c1 ea 17 shr $0x17,%rdx 0.00 : 4ccd9b: 48 69 d2 f0 3f ff 00 imul $0xff3ff0,%rdx,%rdx 0.00 : 4ccda2: 48 29 d0 sub %rdx,%rax : : if (bytesleft < XLOG_BLCKSZ - SizeOfXLogLongPHD) 0.00 : 4ccda5: 48 3d d7 1f 00 00 cmp $0x1fd7,%rax 0.00 : 4ccdab: 76 5b jbe 4cce08 : } : else : { : /* account for the first page on segment with long header */ : seg_offset = XLOG_BLCKSZ; : bytesleft -= XLOG_BLCKSZ - SizeOfXLogLongPHD; 0.00 : 4ccdad: 48 8d 88 28 e0 ff ff lea -0x1fd8(%rax),%rcx : : fullpages = bytesleft / UsableBytesInPage; : bytesleft = bytesleft % UsableBytesInPage; : : seg_offset += fullpages * XLOG_BLCKSZ + bytesleft + SizeOfXLogShortPHD; 0.00 : 4ccdb4: 48 b8 b7 9d 27 8a 0d movabs $0x2018120d8a279db7,%rax 0.00 : 4ccdbb: 12 18 20 0.00 : 4ccdbe: 48 89 ca mov %rcx,%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1912 10.00 : 4ccdc1: 48 c1 ea 03 shr $0x3,%rdx 5.00 : 4ccdc5: 48 f7 e2 mul %rdx 10.00 : 4ccdc8: 48 c1 ea 07 shr $0x7,%rdx 0.00 : 4ccdcc: 48 69 c2 e8 1f 00 00 imul $0x1fe8,%rdx,%rax 5.00 : 4ccdd3: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4ccdd7: 48 29 c1 sub %rax,%rcx 5.00 : 4ccdda: 8d 84 11 18 20 00 00 lea 0x2018(%rcx,%rdx,1),%eax 5.00 : 4ccde1: 89 c1 mov %eax,%ecx 5.00 : 4ccde3: 48 ba 47 25 ad 36 42 movabs $0x8060504236ad2547,%rdx 0.00 : 4ccdea: 50 60 80 0.00 : 4ccded: 48 89 f8 mov %rdi,%rax 10.00 : 4ccdf0: 48 f7 e2 mul %rdx : } : : XLogSegNoOffsetToRecPtr(fullsegs, seg_offset, result); : : return result; : } 0.00 : 4ccdf3: c9 leaveq : bytesleft -= XLOG_BLCKSZ - SizeOfXLogLongPHD; : : fullpages = bytesleft / UsableBytesInPage; : bytesleft = bytesleft % UsableBytesInPage; : : seg_offset += fullpages * XLOG_BLCKSZ + bytesleft + SizeOfXLogShortPHD; 0.00 : 4ccdf4: 48 c1 ea 17 shr $0x17,%rdx 0.00 : 4ccdf8: 48 c1 e2 18 shl $0x18,%rdx 0.00 : 4ccdfc: 48 8d 04 11 lea (%rcx,%rdx,1),%rax : } : : XLogSegNoOffsetToRecPtr(fullsegs, seg_offset, result); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1918 5.00 : 4cce00: c3 retq 0.00 : 4cce01: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : bytesleft = bytepos % UsableBytesInSegment; : : if (bytesleft < XLOG_BLCKSZ - SizeOfXLogLongPHD) : { : /* fits on first page of segment */ : seg_offset = bytesleft + SizeOfXLogLongPHD; 0.00 : 4cce08: 83 c0 28 add $0x28,%eax 0.00 : 4cce0b: eb d4 jmp 4ccde1 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 35.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 35.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 5.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007846a0 : : void * : hash_search(HTAB *hashp, : const void *keyPtr, : HASHACTION action, : bool *foundPtr) : { 0.00 : 7846a0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:810 35.00 : 7846a1: 48 89 e5 mov %rsp,%rbp 0.00 : 7846a4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 5.00 : 7846a8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 5.00 : 7846ac: 48 89 fb mov %rdi,%rbx 0.00 : 7846af: 4c 89 6d f0 mov %r13,-0x10(%rbp) 5.00 : 7846b3: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 7846b7: 49 89 f5 mov %rsi,%r13 0.00 : 7846ba: 48 83 ec 20 sub $0x20,%rsp 0.00 : 7846be: 41 89 d6 mov %edx,%r14d 5.00 : 7846c1: 49 89 cc mov %rcx,%r12 : return hash_search_with_hash_value(hashp, /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:811 5.00 : 7846c4: 48 8b 77 48 mov 0x48(%rdi),%rsi 35.00 : 7846c8: 4c 89 ef mov %r13,%rdi 0.00 : 7846cb: ff 53 10 callq *0x10(%rbx) 5.00 : 7846ce: 4d 89 e0 mov %r12,%r8 0.00 : 7846d1: 44 89 f1 mov %r14d,%ecx 0.00 : 7846d4: 4c 89 ee mov %r13,%rsi 0.00 : 7846d7: 48 89 df mov %rbx,%rdi : keyPtr, : hashp->hash(keyPtr, hashp->keysize), : action, : foundPtr); : } 0.00 : 7846da: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 7846df: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 7846e3: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 7846e8: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 : hash_search(HTAB *hashp, : const void *keyPtr, : HASHACTION action, : bool *foundPtr) : { : return hash_search_with_hash_value(hashp, 0.00 : 7846ed: 89 c2 mov %eax,%edx : keyPtr, : hashp->hash(keyPtr, hashp->keysize), : action, : foundPtr); : } 0.00 : 7846ef: c9 leaveq : hash_search(HTAB *hashp, : const void *keyPtr, : HASHACTION action, : bool *foundPtr) : { : return hash_search_with_hash_value(hashp, 0.00 : 7846f0: e9 5b f9 ff ff jmpq 784050 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 31.58 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 26.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:335 21.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 15.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 5.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c6b30 : : PG_RETURN_BOOL(dateVal1 <= dateVal2); : } : : Datum : date_gt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:330 21.05 : 6c6b30: 48 8b 47 28 mov 0x28(%rdi),%rax 5.26 : 6c6b34: 39 47 20 cmp %eax,0x20(%rdi) 15.79 : 6c6b37: 55 push %rbp 0.00 : 6c6b38: 48 89 e5 mov %rsp,%rbp : DateADT dateVal1 = PG_GETARG_DATEADT(0); : DateADT dateVal2 = PG_GETARG_DATEADT(1); : : PG_RETURN_BOOL(dateVal1 > dateVal2); : } 0.00 : 6c6b3b: c9 leaveq : PG_RETURN_BOOL(dateVal1 <= dateVal2); : } : : Datum : date_gt(PG_FUNCTION_ARGS) : { 31.58 : 6c6b3c: 0f 9f c0 setg %al /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:335 26.32 : 6c6b3f: 0f b6 c0 movzbl %al,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.32 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:939 21.05 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:943 15.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:938 15.79 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:942 5.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:938 5.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:940 5.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:942 5.26 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:943 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d7fe0 : : PG_RETURN_BOOL(float4_cmp_internal(arg1, arg2) <= 0); : } : : Datum : float4gt(PG_FUNCTION_ARGS) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:938 15.79 : 6d7fe0: 55 push %rbp 0.00 : 6d7fe1: 48 89 e5 mov %rsp,%rbp 5.26 : 6d7fe4: 53 push %rbx 0.00 : 6d7fe5: 48 89 fb mov %rdi,%rbx 0.00 : 6d7fe8: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:939 26.32 : 6d7fec: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6d7ff0: e8 bb 59 0a 00 callq 77d9b0 : float4 arg2 = PG_GETARG_FLOAT4(1); 0.00 : 6d7ff5: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : float4gt(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d7ff9: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float4 arg2 = PG_GETARG_FLOAT4(1); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:940 5.26 : 6d7ffe: e8 ad 59 0a 00 callq 77d9b0 : : PG_RETURN_BOOL(float4_cmp_internal(arg1, arg2) > 0); 0.00 : 6d8003: 0f 28 c8 movaps %xmm0,%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:942 5.26 : 6d8006: f3 0f 10 45 f4 movss -0xc(%rbp),%xmm0 15.79 : 6d800b: e8 a0 fe ff ff callq 6d7eb0 0.00 : 6d8010: 85 c0 test %eax,%eax 0.00 : 6d8012: 0f 9f c0 setg %al : } 0.00 : 6d8015: 48 83 c4 08 add $0x8,%rsp : float4gt(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float4 arg2 = PG_GETARG_FLOAT4(1); : : PG_RETURN_BOOL(float4_cmp_internal(arg1, arg2) > 0); 0.00 : 6d8019: 0f b6 c0 movzbl %al,%eax : } 0.00 : 6d801c: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:943 26.32 : 6d801d: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 42.11 ??:0 26.32 ??:0 26.32 ??:0 5.26 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000db0c0 <__lseek>: 26.32 : db0c0: 83 3d ed c5 29 00 00 cmpl $0x0,0x29c5ed(%rip) # 3776b4 <__libc_multiple_threads> 26.32 : db0c7: 75 10 jne db0d9 <__lseek_nocancel+0x10> : : 00000000000db0c9 <__lseek_nocancel>: 0.00 : db0c9: b8 08 00 00 00 mov $0x8,%eax 0.00 : db0ce: 0f 05 syscall 42.11 : db0d0: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : db0d6: 73 31 jae db109 <__lseek_nocancel+0x40> 5.26 : db0d8: c3 retq 0.00 : db0d9: 48 83 ec 08 sub $0x8,%rsp 0.00 : db0dd: e8 4e d1 00 00 callq e8230 <__libc_enable_asynccancel> 0.00 : db0e2: 48 89 04 24 mov %rax,(%rsp) 0.00 : db0e6: b8 08 00 00 00 mov $0x8,%eax 0.00 : db0eb: 0f 05 syscall 0.00 : db0ed: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : db0f1: 48 89 c2 mov %rax,%rdx 0.00 : db0f4: e8 97 d1 00 00 callq e8290 <__libc_disable_asynccancel> 0.00 : db0f9: 48 89 d0 mov %rdx,%rax 0.00 : db0fc: 48 83 c4 08 add $0x8,%rsp 0.00 : db100: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : db106: 73 01 jae db109 <__lseek_nocancel+0x40> 0.00 : db108: c3 retq 0.00 : db109: 48 8b 0d 28 6d 29 00 mov 0x296d28(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : db110: 31 d2 xor %edx,%edx 0.00 : db112: 48 29 c2 sub %rax,%rdx 0.00 : db115: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : db118: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : db11c: eb ea jmp db108 <__lseek_nocancel+0x3f> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ---------------------------------------------- 24.14 ??:0 17.24 ??:0 10.34 ??:0 6.90 ??:0 6.90 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 3.45 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000320 : ??:0 27.59 : 320: 48 83 ec 38 sub $0x38,%rsp 0.00 : 354: 4c 89 add %al,(%rax) 0.00 : 356: 64 24 18 mov %rcx,%r14 0.00 : 359: 4c 89 6c shr $0x5,%bl 0.00 : 35c: 24 20 49 test %rbp,%rbp 0.00 : 35f: 89 f4 je 3e0 0.00 : 361: 4c 89 74 24 mov 0x78(%rbp),%rax 24.14 : 365: 28 4c 89 test $0x10,%ah 0.00 : 368: 7c 24 jne 3e0 0.00 : 36a: 30 41 89 fd 48 89 5c mov 0xe0(%rbp),%rdx ??:0 3.45 : 371: 24 08 48 test %rdx,%rdx 0.00 : 374: 89 6c je 3d0 0.00 : 376: 24 10 49 89 movzbl 0x11(%rdx),%eax ??:0 17.24 : 37a: d7 0f test %al,%al 0.00 : 37c: b6 5e je 3d0 ??:0 3.45 : 37e: 7c 48 8b movzbl %al,%eax 0.00 : 381: ae 88 00 add %rax,%rdx 0.00 : 384: 00 00 je 3d0 0.00 : 386: 49 89 ce cmp $0x2,%bl 3.45 : 389: c0 eb 05 48 movzbl %bl,%r9d 0.00 : 38d: 85 ed 74 7f 48 8b je 42b 0.00 : 393: 45 78 f6 cmp $0x4,%bl 0.00 : 396: c4 10 je 410 0.00 : 398: 75 76 48 sub $0x1,%bl 0.00 : 39b: 8b 95 je 410 0.00 : 39d: e0 00 00 mov %r12,%rcx 0.00 : 3a0: 00 48 85 mov %r13d,%edx 0.00 : 3a3: d2 74 5a mov %rbp,%rdi ??:0 6.90 : 3a6: 0f b6 42 11 84 mov 0x8(%rsp),%rbx 0.00 : 3ab: c0 74 52 0f b6 mov 0x10(%rsp),%rbp 0.00 : 3b0: c0 48 01 mov %r9d,%esi 0.00 : 3b3: c2 74 4a 80 fb mov 0x18(%rsp),%r12 0.00 : 3b8: 02 44 0f b6 cb mov 0x20(%rsp),%r13 0.00 : 3bd: 0f 84 98 00 00 mov 0x28(%rsp),%r14 0.00 : 3c2: 00 80 fb 04 74 mov 0x30(%rsp),%r15 0.00 : 3c7: 78 80 eb 01 add $0x38,%rsp ??:0 3.45 : 3cb: 74 73 4c 89 e1 jmpq 3d0 0.00 : 3d0: 44 89 ea 48 mov 0x78(%rbp),%rax 3.45 : 3d4: 89 ef test $0x8,%al 0.00 : 3d6: 48 8b 5c 24 08 48 je 4e0 0.00 : 3dc: 8b 6c 24 10 nopl 0x0(%rax) 0.00 : 3e0: 44 89 ce 4c 8b mov $0x1,%eax 3.45 : 3e5: 64 24 18 4c 8b mov 0x8(%rsp),%rbx 0.00 : 3ea: 6c 24 20 4c 8b mov 0x10(%rsp),%rbp 0.00 : 3ef: 74 24 28 4c 8b mov 0x18(%rsp),%r12 0.00 : 3f4: 7c 24 30 48 83 mov 0x20(%rsp),%r13 3.45 : 3f9: c4 38 e9 00 00 mov 0x28(%rsp),%r14 0.00 : 3fe: 00 00 48 8b 45 mov 0x30(%rsp),%r15 0.00 : 403: 78 a8 08 0f add $0x38,%rsp 0.00 : 407: 84 retq 0.00 : 408: 04 01 00 00 0f 1f 40 nopl 0x0(%rax,%rax,1) 0.00 : 40f: 00 0.00 : 410: b8 01 00 00 00 48 8b mov 0xc4(%r12),%edx 0.00 : 417: 5c 0.00 : 418: 24 08 48 8b 6c 24 10 mov 0xd8(%r12),%rax 0.00 : 41f: 4c 0.00 : 420: 8b 64 24 18 4c cmpb $0x1,0x9(%rax,%rdx,1) 0.00 : 425: 8b 6c 24 20 4c 8b je 528 0.00 : 42b: 74 24 28 4c cmp $0x4,%r13d 0.00 : 42f: 8b 7c 24 setne %dl 0.00 : 432: 30 48 xor %eax,%eax 0.00 : 434: 83 c4 38 c3 cmp $0x1,%r13d 0.00 : 438: 0f 1f 84 setne %al 0.00 : 43b: 00 00 mov %eax,%ecx 0.00 : 43d: 00 00 and %edx,%ecx 0.00 : 43f: 00 41 8b 94 24 c4 jne 4d0 0.00 : 445: 00 00 00 49 mov 0x78(%rbp),%rax 0.00 : 449: 8b 84 24 d8 00 and $0x80,%eax 0.00 : 44e: 00 00 test %eax,%eax 0.00 : 450: 80 7c jne 480 0.00 : 452: 10 09 01 mov %rbp,%r8 0.00 : 455: 0f 84 fd mov %r14,%rcx 0.00 : 458: 00 00 00 mov %r15,%rdx 0.00 : 45b: 41 83 fd mov %r13d,%esi 0.00 : 45e: 04 0f 95 mov %r12,%rdi 0.00 : 461: c2 31 c0 41 mov %r9d,(%rsp) 0.00 : 465: 83 fd 01 0f 95 callq 46a 0.00 : 46a: c0 89 c1 cmp $0x1,%eax 0.00 : 46d: 21 d1 0f 85 mov (%rsp),%r9d 0.00 : 471: 8b 00 00 00 48 8b jne 3e5 0.00 : 477: 45 78 25 80 00 jmpq 39d 0.00 : 47c: 00 00 85 c0 nopl 0x0(%rax) 0.00 : 480: 75 2e 49 89 e8 4c 89 cmpb $0x0,0x0(%rip) # 487 0.00 : 487: f1 4c 89 fa 44 89 je 39d 0.00 : 48d: ee 4c test %ecx,%ecx 0.00 : 48f: 89 e7 44 89 0c 24 e8 mov $0x0,%rax 0.00 : 496: 00 00 00 00 83 f8 01 mov $0x0,%rdx 0.00 : 49d: 44 8b 0c 24 cmove %rax,%rdx 0.00 : 4a1: 0f 85 6e mov %rbp,%rcx 0.00 : 4a4: ff ff ff e9 21 ff ff mov $0x0,%rsi 0.00 : 4ab: ff 0f 1f 40 00 80 3d mov $0x0,%rdi 0.00 : 4b2: 00 00 xor %eax,%eax 0.00 : 4b4: 00 00 00 0f mov %r9d,(%rsp) 0.00 : 4b8: 84 10 ff ff ff callq 4bd 0.00 : 4bd: 85 c9 48 c7 mov (%rsp),%r9d 0.00 : 4c1: c0 00 00 00 00 jmpq 39d 0.00 : 4c6: 48 c7 c2 00 00 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4cd: 48 0f 44 0.00 : 4d0: d0 48 89 e9 mov 0x78(%rbp),%rax 0.00 : 4d4: 48 c7 c6 00 00 and $0x100,%eax 0.00 : 4d9: 00 00 48 c7 c7 jmpq 44e 0.00 : 4de: 00 00 xchg %ax,%ax 0.00 : 4e0: 00 00 31 c0 44 mov $0x20,%edx 0.00 : 4e5: 89 0c 24 e8 00 mov $0x1,%esi 0.00 : 4ea: 00 00 00 mov %rbp,%rdi 0.00 : 4ed: 44 8b 0c 24 e9 callq 4f2 0.00 : 4f2: d7 fe ff test %rax,%rax 0.00 : 4f5: ff 66 2e 0f 1f 84 jne 386 0.00 : 4fb: 00 00 00 00 00 48 8b cmpb $0x0,0x0(%rip) # 502 0.00 : 502: 45 78 25 00 01 00 je 3e0 0.00 : 508: 00 e9 70 ff ff ff 66 mov $0x0,%rsi 0.00 : 50f: 90 ba 20 00 00 00 be mov $0x0,%rdi 0.00 : 516: 01 00 00 00 48 callq 51b 0.00 : 51b: 89 ef e8 00 00 mov $0x1,%eax 0.00 : 520: 00 00 48 85 c0 jmpq 3e5 0.00 : 525: 0f 85 8b nopl (%rax) 0.00 : 528: fe ff ff mov %r12,%rcx 0.00 : 52b: 80 3d 00 mov %r13d,%edx 0.00 : 52e: 00 00 00 mov %r9d,%esi 0.00 : 531: 00 0f 84 mov %rbp,%rdi 0.00 : 534: d8 fe ff ff 48 callq 539 0.00 : 539: c7 c6 test %eax,%eax 0.00 : 53b: 00 00 00 setne %al 0.00 : 53e: 00 48 c7 movzbl %al,%eax 0.00 : 541: c7 00 00 00 00 jmpq 3e5 : 546: e8 00 00 00 00 b8 01 nopw %cs:0x0(%rax,%rax,1) : 54d: 00 00 00 : 550: e9 c0 fe ff sub $0x18,%rsp : 554: ff 0f 1f 00 4c mov %rbx,0x8(%rsp) : 559: 89 e1 44 mov %rsi,%rbx : 55c: 89 ea 44 89 ce mov %rbp,0x10(%rsp) : 561: 48 89 ef e8 cmpl $0x13,0x68(%rbx) : 565: 00 00 00 mov %rdx,%rsi : 568: 00 85 jbe 586 : 56a: c0 0f 95 c0 0f b6 mov 0xc4(%rbx),%edx : 570: c0 e9 9f fe ff ff 66 mov 0xd8(%rbx),%rax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1025 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:695 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:711 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:762 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1525 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:695 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:695 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:742 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:821 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:912 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:929 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068b670 : : LockAcquireExtended(const LOCKTAG *locktag, : LOCKMODE lockmode, : bool sessionLock, : bool dontWait, : bool reportMemoryError) : { 0.00 : 68b670: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:695 11.11 : 68b671: 48 89 e5 mov %rsp,%rbp 0.00 : 68b674: 4c 89 65 e0 mov %r12,-0x20(%rbp) 5.56 : 68b678: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 68b67c: 41 89 d4 mov %edx,%r12d 0.00 : 68b67f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 5.56 : 68b683: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 68b687: 41 89 f6 mov %esi,%r14d 0.00 : 68b68a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 68b68e: 48 81 ec b0 00 00 00 sub $0xb0,%rsp 0.00 : 68b695: 48 89 bd 60 ff ff ff mov %rdi,-0xa0(%rbp) 0.00 : 68b69c: 88 8d 5f ff ff ff mov %cl,-0xa1(%rbp) 0.00 : 68b6a2: 44 88 85 5e ff ff ff mov %r8b,-0xa2(%rbp) : LOCKMETHODID lockmethodid = locktag->locktag_lockmethodid; 0.00 : 68b6a9: 0f b6 5f 0f movzbl 0xf(%rdi),%ebx : uint32 hashcode; : LWLock *partitionLock; : int status; : bool log_lock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) 0.00 : 68b6ad: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 68b6b0: 66 83 f8 01 cmp $0x1,%ax 0.00 : 68b6b4: 0f 87 0a 06 00 00 ja 68bcc4 : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; 0.00 : 68b6ba: 0f b7 c3 movzwl %bx,%eax : if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) 0.00 : 68b6bd: 85 f6 test %esi,%esi : int status; : bool log_lock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; 0.00 : 68b6bf: 48 8b 04 c5 e0 c9 8a mov 0x8ac9e0(,%rax,8),%rax 0.00 : 68b6c6: 00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:711 11.11 : 68b6c7: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) 0.00 : 68b6ce: 7e 04 jle 68b6d4 0.00 : 68b6d0: 3b 30 cmp (%rax),%esi 0.00 : 68b6d2: 7e 34 jle 68b708 : elog(ERROR, "unrecognized lock mode: %d", lockmode); 0.00 : 68b6d4: ba c0 cb 8a 00 mov $0x8acbc0,%edx 0.00 : 68b6d9: be c9 02 00 00 mov $0x2c9,%esi 0.00 : 68b6de: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68b6e3: e8 38 fd 0e 00 callq 77b420 0.00 : 68b6e8: 44 89 f2 mov %r14d,%edx 0.00 : 68b6eb: be 60 c6 8a 00 mov $0x8ac660,%esi 0.00 : 68b6f0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68b6f5: 31 c0 xor %eax,%eax 0.00 : 68b6f7: e8 34 fb 0e 00 callq 77b230 0.00 : 68b6fc: e8 cf dd dd ff callq 4694d0 0.00 : 68b701: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (RecoveryInProgress() && !InRecovery && 0.00 : 68b708: e8 b3 1d e4 ff callq 4cd4c0 0.00 : 68b70d: 84 c0 test %al,%al 0.00 : 68b70f: 90 nop 0.00 : 68b710: 74 4e je 68b760 0.00 : 68b712: 80 3d 4f da 4e 00 00 cmpb $0x0,0x4eda4f(%rip) # b79168 0.00 : 68b719: 75 45 jne 68b760 0.00 : 68b71b: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 68b722: 0f b6 42 0e movzbl 0xe(%rdx),%eax 0.00 : 68b726: 3c 06 cmp $0x6,%al 0.00 : 68b728: 74 04 je 68b72e 0.00 : 68b72a: 84 c0 test %al,%al 0.00 : 68b72c: 75 32 jne 68b760 0.00 : 68b72e: 41 83 fe 03 cmp $0x3,%r14d 0.00 : 68b732: 7e 2c jle 68b760 : (locktag->locktag_type == LOCKTAG_OBJECT || : locktag->locktag_type == LOCKTAG_RELATION) && : lockmode > RowExclusiveLock) : ereport(ERROR, 0.00 : 68b734: 45 31 c0 xor %r8d,%r8d 0.00 : 68b737: b9 c0 cb 8a 00 mov $0x8acbc0,%ecx 0.00 : 68b73c: ba d3 02 00 00 mov $0x2d3,%edx 0.00 : 68b741: be 93 d1 8a 00 mov $0x8ad193,%esi 0.00 : 68b746: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68b74b: e8 70 f3 0e 00 callq 77aac0 0.00 : 68b750: 84 c0 test %al,%al 0.00 : 68b752: 0f 85 56 08 00 00 jne 68bfae : AbortStrongLockAcquire(); : PROCLOCK_PRINT("LockAcquire: INCONSISTENT", proclock); : LOCK_PRINT("LockAcquire: INCONSISTENT", lock, lockmode); : /* Should we retry ? */ : LWLockRelease(partitionLock); : elog(ERROR, "LockAcquire failed"); 0.00 : 68b758: e8 73 dd dd ff callq 4694d0 0.00 : 68b75d: 0f 1f 00 nopl (%rax) : locktag->locktag_field1, locktag->locktag_field2, : lockMethodTable->lockModeNames[lockmode]); : #endif : : /* Identify owner for lock */ : if (sessionLock) 0.00 : 68b760: 45 84 e4 test %r12b,%r12b 0.00 : 68b763: b8 00 00 00 00 mov $0x0,%eax 0.00 : 68b768: 48 0f 44 05 50 f1 52 cmove 0x52f150(%rip),%rax # bba8c0 0.00 : 68b76f: 00 : : /* : * Find or create a LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:742 5.56 : 68b770: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx : owner = CurrentResourceOwner; : : /* : * Find or create a LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ 0.00 : 68b777: 48 8d 5d b0 lea -0x50(%rbp),%rbx : localtag.lock = *locktag; : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68b77b: 48 8b 3d 8e 21 4f 00 mov 0x4f218e(%rip),%rdi # b7d910 0.00 : 68b782: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 68b786: 48 89 de mov %rbx,%rsi : locktag->locktag_field1, locktag->locktag_field2, : lockMethodTable->lockModeNames[lockmode]); : #endif : : /* Identify owner for lock */ : if (sessionLock) 0.00 : 68b789: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : : /* : * Find or create a LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 68b790: 48 8b 02 mov (%rdx),%rax 0.00 : 68b793: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 68b797: 48 8b 42 08 mov 0x8(%rdx),%rax : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68b79b: ba 01 00 00 00 mov $0x1,%edx : /* : * Find or create a LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; : localtag.mode = lockmode; 0.00 : 68b7a0: 44 89 75 c0 mov %r14d,-0x40(%rbp) : : /* : * Find or create a LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 68b7a4: 48 89 45 b8 mov %rax,-0x48(%rbp) : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68b7a8: e8 f3 8e 0f 00 callq 7846a0 : HASH_ENTER, &found); : : /* : * if it's a new locallock object, initialize it : */ : if (!found) 0.00 : 68b7ad: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68b7b1: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : HASH_ENTER, &found); : : /* : * if it's a new locallock object, initialize it : */ : if (!found) 0.00 : 68b7b8: 0f 84 b2 01 00 00 je 68b970 : locallock->maxLockOwners * sizeof(LOCALLOCKOWNER)); : } : else : { : /* Make sure there will be room to remember the lock */ : if (locallock->numLockOwners >= locallock->maxLockOwners) 0.00 : 68b7be: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 68b7c5: 8b 41 3c mov 0x3c(%rcx),%eax 0.00 : 68b7c8: 39 41 38 cmp %eax,0x38(%rcx) 0.00 : 68b7cb: 7d 4b jge 68b818 : repalloc(locallock->lockOwners, : newsize * sizeof(LOCALLOCKOWNER)); : locallock->maxLockOwners = newsize; : } : } : hashcode = locallock->hashcode; 0.00 : 68b7cd: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx : : /* : * If we already hold the lock, we can just increase the count locally. : */ : if (locallock->nLocks > 0) 0.00 : 68b7d4: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax : repalloc(locallock->lockOwners, : newsize * sizeof(LOCALLOCKOWNER)); : locallock->maxLockOwners = newsize; : } : } : hashcode = locallock->hashcode; 0.00 : 68b7db: 8b 49 28 mov 0x28(%rcx),%ecx 0.00 : 68b7de: 89 4d 80 mov %ecx,-0x80(%rbp) : : /* : * If we already hold the lock, we can just increase the count locally. : */ : if (locallock->nLocks > 0) 0.00 : 68b7e1: 48 83 78 30 00 cmpq $0x0,0x30(%rax) 0.00 : 68b7e6: 7e 58 jle 68b840 : { : GrantLockLocal(locallock, owner); 0.00 : 68b7e8: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 68b7ef: 48 89 c7 mov %rax,%rdi 0.00 : 68b7f2: e8 f9 ea ff ff callq 68a2f0 0.00 : 68b7f7: b8 02 00 00 00 mov $0x2,%eax : LogAccessExclusiveLock(locktag->locktag_field1, : locktag->locktag_field2); : } : : return LOCKACQUIRE_OK; : } 0.00 : 68b7fc: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 68b800: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 68b804: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 68b808: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 68b80c: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 68b810: c9 leaveq 0.00 : 68b811: c3 retq 0.00 : 68b812: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else : { : /* Make sure there will be room to remember the lock */ : if (locallock->numLockOwners >= locallock->maxLockOwners) : { : int newsize = locallock->maxLockOwners * 2; 0.00 : 68b818: 8d 1c 00 lea (%rax,%rax,1),%ebx : : locallock->lockOwners = (LOCALLOCKOWNER *) 0.00 : 68b81b: 48 8b 79 48 mov 0x48(%rcx),%rdi 0.00 : 68b81f: 48 63 f3 movslq %ebx,%rsi 0.00 : 68b822: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 68b826: e8 c5 d4 10 00 callq 798cf0 0.00 : 68b82b: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 68b832: 48 89 42 48 mov %rax,0x48(%rdx) : repalloc(locallock->lockOwners, : newsize * sizeof(LOCALLOCKOWNER)); : locallock->maxLockOwners = newsize; 0.00 : 68b836: 89 5a 3c mov %ebx,0x3c(%rdx) 0.00 : 68b839: eb 92 jmp 68b7cd 0.00 : 68b83b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * : * Only AccessExclusiveLocks can conflict with lock types that read-only : * transactions can acquire in a standby server. Make sure this definition : * matches the one in GetRunningTransactionLocks(). : */ : if (lockmode >= AccessExclusiveLock && 0.00 : 68b840: 41 83 fe 07 cmp $0x7,%r14d 0.00 : 68b844: 0f 8f 96 01 00 00 jg 68b9e0 : locktag->locktag_type == LOCKTAG_RELATION && : !RecoveryInProgress() && : XLogStandbyInfoActive()) : { : LogAccessExclusiveLockPrepare(); 0.00 : 68b84a: c6 45 9f 00 movb $0x0,-0x61(%rbp) : * table, leaving space free, but it's not worth acquiring the LWLock just : * to check. It's also possible that we're acquiring a second or third : * lock type on a relation we have already locked using the fast-path, but : * for now we don't worry about that case either. : */ : if (EligibleForRelationFastPath(locktag, lockmode) && 0.00 : 68b84e: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:821 5.56 : 68b855: 66 81 79 0e 00 01 cmpw $0x100,0xe(%rcx) 0.00 : 68b85b: 0f 84 34 02 00 00 je 68ba95 : if (!FastPathTransferRelationLocks(lockMethodTable, locktag, : hashcode)) : { : AbortStrongLockAcquire(); : if (reportMemoryError) : ereport(ERROR, 0.00 : 68b861: 8b 45 80 mov -0x80(%rbp),%eax 0.00 : 68b864: 83 e0 0f and $0xf,%eax 0.00 : 68b867: 48 83 c0 26 add $0x26,%rax 0.00 : 68b86b: 48 c1 e0 05 shl $0x5,%rax 0.00 : 68b86f: 48 89 45 a8 mov %rax,-0x58(%rbp) : /* : * We didn't find the lock in our LOCALLOCK table, and we didn't manage to : * take it via the fast-path, either, so we've got to mess with the shared : * lock table. : */ : partitionLock = LockHashPartitionLock(hashcode); 0.00 : 68b873: 4c 8b 7d a8 mov -0x58(%rbp),%r15 0.00 : 68b877: 4c 03 3d 82 21 4f 00 add 0x4f2182(%rip),%r15 # b7da00 : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); 0.00 : 68b87e: 31 f6 xor %esi,%esi 0.00 : 68b880: 4c 89 ff mov %r15,%rdi 0.00 : 68b883: e8 68 42 00 00 callq 68faf0 : * to the lock already ... but we should not assume that that pointer is : * valid, since a lock object with zero hold and request counts can go : * away anytime. So we have to use SetupLockInTable() to recompute the : * lock and proclock pointers, even if they're already set. : */ : proclock = SetupLockInTable(lockMethodTable, MyProc, locktag, 0.00 : 68b888: 8b 4d 80 mov -0x80(%rbp),%ecx 0.00 : 68b88b: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 68b892: 45 89 f0 mov %r14d,%r8d 0.00 : 68b895: 48 8b 35 ac 20 4f 00 mov 0x4f20ac(%rip),%rsi # b7d948 0.00 : 68b89c: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 68b8a3: e8 c8 cd ff ff callq 688670 : hashcode, lockmode); : if (!proclock) 0.00 : 68b8a8: 48 85 c0 test %rax,%rax : * to the lock already ... but we should not assume that that pointer is : * valid, since a lock object with zero hold and request counts can go : * away anytime. So we have to use SetupLockInTable() to recompute the : * lock and proclock pointers, even if they're already set. : */ : proclock = SetupLockInTable(lockMethodTable, MyProc, locktag, 0.00 : 68b8ab: 48 89 c3 mov %rax,%rbx : hashcode, lockmode); : if (!proclock) 0.00 : 68b8ae: 0f 84 f7 04 00 00 je 68bdab : errmsg("out of shared memory"), : errhint("You might need to increase max_locks_per_transaction."))); : else : return LOCKACQUIRE_NOT_AVAIL; : } : locallock->proclock = proclock; 0.00 : 68b8b4: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax : /* : * If lock requested conflicts with locks requested by waiters, must join : * wait queue. Otherwise, check for conflict with already-held locks. : * (That's last because most complex check.) : */ : if (lockMethodTable->conflictTab[lockmode] & lock->waitMask) 0.00 : 68b8bb: 4d 63 ee movslq %r14d,%r13 : errmsg("out of shared memory"), : errhint("You might need to increase max_locks_per_transaction."))); : else : return LOCKACQUIRE_NOT_AVAIL; : } : locallock->proclock = proclock; 0.00 : 68b8be: 48 89 58 20 mov %rbx,0x20(%rax) : lock = proclock->tag.myLock; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:912 5.56 : 68b8c2: 4c 8b 23 mov (%rbx),%r12 : locallock->lock = lock; 0.00 : 68b8c5: 4c 89 60 18 mov %r12,0x18(%rax) : /* : * If lock requested conflicts with locks requested by waiters, must join : * wait queue. Otherwise, check for conflict with already-held locks. : * (That's last because most complex check.) : */ : if (lockMethodTable->conflictTab[lockmode] & lock->waitMask) 0.00 : 68b8c9: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 68b8d0: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 68b8d4: 42 8b 04 a8 mov (%rax,%r13,4),%eax 0.00 : 68b8d8: 41 85 44 24 14 test %eax,0x14(%r12) 0.00 : 68b8dd: 0f 84 9e 03 00 00 je 68bc81 : /* : * We can't acquire the lock immediately. If caller specified no : * blocking, remove useless table entries and return NOT_AVAIL without : * waiting. : */ : if (dontWait) 0.00 : 68b8e3: 80 bd 5f ff ff ff 00 cmpb $0x0,-0xa1(%rbp) 0.00 : 68b8ea: 0f 84 29 01 00 00 je 68ba19 : { : AbortStrongLockAcquire(); 0.00 : 68b8f0: e8 3b d0 ff ff callq 688930 : if (proclock->holdMask == 0) 0.00 : 68b8f5: 8b 7b 10 mov 0x10(%rbx),%edi 0.00 : 68b8f8: 85 ff test %edi,%edi 0.00 : 68b8fa: 75 3f jne 68b93b : : /* : * This must match proclock_hash()! : */ : procptr = PointerGetDatum(proclocktag->myProc); : lockhash ^= ((uint32) procptr) << LOG2_NUM_LOCK_PARTITIONS; 0.00 : 68b8fc: 48 8b 43 08 mov 0x8(%rbx),%rax : if (proclock->holdMask == 0) : { : uint32 proclock_hashcode; : : proclock_hashcode = ProcLockHashCode(&proclock->tag, hashcode); : SHMQueueDelete(&proclock->lockLink); 0.00 : 68b900: 48 8d 7b 18 lea 0x18(%rbx),%rdi : : /* : * This must match proclock_hash()! : */ : procptr = PointerGetDatum(proclocktag->myProc); : lockhash ^= ((uint32) procptr) << LOG2_NUM_LOCK_PARTITIONS; 0.00 : 68b904: c1 e0 04 shl $0x4,%eax 0.00 : 68b907: 31 45 80 xor %eax,-0x80(%rbp) : if (proclock->holdMask == 0) : { : uint32 proclock_hashcode; : : proclock_hashcode = ProcLockHashCode(&proclock->tag, hashcode); : SHMQueueDelete(&proclock->lockLink); 0.00 : 68b90a: e8 51 7b ff ff callq 683460 : SHMQueueDelete(&proclock->procLink); 0.00 : 68b90f: 48 8d 7b 28 lea 0x28(%rbx),%rdi 0.00 : 68b913: e8 48 7b ff ff callq 683460 : if (!hash_search_with_hash_value(LockMethodProcLockHash, 0.00 : 68b918: 8b 55 80 mov -0x80(%rbp),%edx 0.00 : 68b91b: 48 8b 3d e6 1f 4f 00 mov 0x4f1fe6(%rip),%rdi # b7d908 0.00 : 68b922: 45 31 c0 xor %r8d,%r8d 0.00 : 68b925: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 68b92a: 48 89 de mov %rbx,%rsi 0.00 : 68b92d: e8 1e 87 0f 00 callq 784050 0.00 : 68b932: 48 85 c0 test %rax,%rax 0.00 : 68b935: 0f 84 49 06 00 00 je 68bf84 : NULL)) : elog(PANIC, "proclock table corrupted"); : } : else : PROCLOCK_PRINT("LockAcquire: NOWAIT", proclock); : lock->nRequested--; 0.00 : 68b93b: 41 83 6c 24 68 01 subl $0x1,0x68(%r12) : lock->requested[lockmode]--; : LOCK_PRINT("LockAcquire: conditional lock failed", lock, lockmode); : Assert((lock->nRequested > 0) && (lock->requested[lockmode] >= 0)); : Assert(lock->nGranted <= lock->nRequested); : LWLockRelease(partitionLock); 0.00 : 68b941: 4c 89 ff mov %r15,%rdi : elog(PANIC, "proclock table corrupted"); : } : else : PROCLOCK_PRINT("LockAcquire: NOWAIT", proclock); : lock->nRequested--; : lock->requested[lockmode]--; 0.00 : 68b944: 43 83 6c ac 40 01 subl $0x1,0x40(%r12,%r13,4) : LOCK_PRINT("LockAcquire: conditional lock failed", lock, lockmode); : Assert((lock->nRequested > 0) && (lock->requested[lockmode] >= 0)); : Assert(lock->nGranted <= lock->nRequested); : LWLockRelease(partitionLock); 0.00 : 68b94a: e8 51 3a 00 00 callq 68f3a0 : if (locallock->nLocks == 0) 0.00 : 68b94f: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx 0.00 : 68b956: 48 83 79 30 00 cmpq $0x0,0x30(%rcx) 0.00 : 68b95b: 0f 84 25 01 00 00 je 68ba86 : /* : * Decode the locktag back to the original values, to avoid sending : * lots of empty bytes with every message. See lock.h to check how a : * locktag is defined for LOCKTAG_RELATION : */ : LogAccessExclusiveLock(locktag->locktag_field1, 0.00 : 68b961: 31 c0 xor %eax,%eax 0.00 : 68b963: e9 94 fe ff ff jmpq 68b7fc 0.00 : 68b968: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68b96f: 00 : /* : * if it's a new locallock object, initialize it : */ : if (!found) : { : locallock->lock = NULL; 0.00 : 68b970: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 68b977: 00 : locallock->proclock = NULL; 0.00 : 68b978: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 68b97f: 00 : * the lock partition number from the hashcode. : */ : uint32 : LockTagHashCode(const LOCKTAG *locktag) : { : return get_hash_value(LockMethodLockHash, (const void *) locktag); 0.00 : 68b980: 48 89 de mov %rbx,%rsi 0.00 : 68b983: 48 8b 3d 76 1f 4f 00 mov 0x4f1f76(%rip),%rdi # b7d900 0.00 : 68b98a: e8 41 7e 0f 00 callq 7837d0 : */ : if (!found) : { : locallock->lock = NULL; : locallock->proclock = NULL; : locallock->hashcode = LockTagHashCode(&(localtag.lock)); 0.00 : 68b98f: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx : locallock->nLocks = 0; : locallock->numLockOwners = 0; : locallock->maxLockOwners = 8; : locallock->holdsStrongLockCount = FALSE; : locallock->lockOwners = NULL; : locallock->lockOwners = (LOCALLOCKOWNER *) 0.00 : 68b996: be 80 00 00 00 mov $0x80,%esi : */ : if (!found) : { : locallock->lock = NULL; : locallock->proclock = NULL; : locallock->hashcode = LockTagHashCode(&(localtag.lock)); 0.00 : 68b99b: 89 41 28 mov %eax,0x28(%rcx) : locallock->nLocks = 0; 0.00 : 68b99e: 48 c7 41 30 00 00 00 movq $0x0,0x30(%rcx) 0.00 : 68b9a5: 00 : locallock->numLockOwners = 0; 0.00 : 68b9a6: c7 41 38 00 00 00 00 movl $0x0,0x38(%rcx) : locallock->maxLockOwners = 8; 0.00 : 68b9ad: c7 41 3c 08 00 00 00 movl $0x8,0x3c(%rcx) : locallock->holdsStrongLockCount = FALSE; 0.00 : 68b9b4: c6 41 40 00 movb $0x0,0x40(%rcx) : locallock->lockOwners = NULL; 0.00 : 68b9b8: 48 c7 41 48 00 00 00 movq $0x0,0x48(%rcx) 0.00 : 68b9bf: 00 : locallock->lockOwners = (LOCALLOCKOWNER *) 0.00 : 68b9c0: 48 8b 3d a1 ee 52 00 mov 0x52eea1(%rip),%rdi # bba868 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:762 11.11 : 68b9c7: e8 c4 d4 10 00 callq 798e90 0.00 : 68b9cc: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 68b9d3: 48 89 42 48 mov %rax,0x48(%rdx) 0.00 : 68b9d7: e9 f1 fd ff ff jmpq 68b7cd 0.00 : 68b9dc: 0f 1f 40 00 nopl 0x0(%rax) : * : * Only AccessExclusiveLocks can conflict with lock types that read-only : * transactions can acquire in a standby server. Make sure this definition : * matches the one in GetRunningTransactionLocks(). : */ : if (lockmode >= AccessExclusiveLock && 0.00 : 68b9e0: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 68b9e7: 80 7a 0e 00 cmpb $0x0,0xe(%rdx) 0.00 : 68b9eb: 0f 85 59 fe ff ff jne 68b84a 0.00 : 68b9f1: e8 ca 1a e4 ff callq 4cd4c0 0.00 : 68b9f6: 84 c0 test %al,%al 0.00 : 68b9f8: 0f 85 4c fe ff ff jne 68b84a 0.00 : 68b9fe: 83 3d 57 d7 4e 00 01 cmpl $0x1,0x4ed757(%rip) # b7915c 0.00 : 68ba05: 0f 8e 3f fe ff ff jle 68b84a : locktag->locktag_type == LOCKTAG_RELATION && : !RecoveryInProgress() && : XLogStandbyInfoActive()) : { : LogAccessExclusiveLockPrepare(); 0.00 : 68ba0b: e8 c0 9b ff ff callq 6855d0 0.00 : 68ba10: c6 45 9f 01 movb $0x1,-0x61(%rbp) 0.00 : 68ba14: e9 35 fe ff ff jmpq 68b84e : } : : /* : * Set bitmask of locks this process already holds on this object. : */ : MyProc->heldLocks = proclock->holdMask; 0.00 : 68ba19: 48 8b 05 28 1f 4f 00 mov 0x4f1f28(%rip),%rax # b7d948 0.00 : 68ba20: 8b 53 10 mov 0x10(%rbx),%edx 0.00 : 68ba23: 89 50 6c mov %edx,0x6c(%rax) : locktag->locktag_field3, : locktag->locktag_field4, : locktag->locktag_type, : lockmode); : : WaitOnLock(locallock, owner); 0.00 : 68ba26: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 68ba2d: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 68ba34: e8 67 e9 ff ff callq 68a3a0 : : /* : * Check the proclock entry status, in case something in the ipc : * communication doesn't work correctly. : */ : if (!(proclock->holdMask & LOCKBIT_ON(lockmode))) 0.00 : 68ba39: 8b 43 10 mov 0x10(%rbx),%eax 0.00 : 68ba3c: 44 89 f1 mov %r14d,%ecx 0.00 : 68ba3f: d3 f8 sar %cl,%eax 0.00 : 68ba41: a8 01 test $0x1,%al 0.00 : 68ba43: 0f 84 04 05 00 00 je 68bf4d : * Lock state is fully up-to-date now; if we error out after this, no : * special error cleanup is required. : */ : FinishStrongLockAcquire(); : : LWLockRelease(partitionLock); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1025 22.22 : 68ba49: 4c 89 ff mov %r15,%rdi : * acquisition once it's no longer needed : */ : static void : FinishStrongLockAcquire(void) : { : StrongLockInProgress = NULL; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1525 11.11 : 68ba4c: 48 c7 05 c1 1e 4f 00 movq $0x0,0x4f1ec1(%rip) # b7d918 0.00 : 68ba53: 00 00 00 00 : * Lock state is fully up-to-date now; if we error out after this, no : * special error cleanup is required. : */ : FinishStrongLockAcquire(); : : LWLockRelease(partitionLock); 0.00 : 68ba57: e8 44 39 00 00 callq 68f3a0 : : /* : * Emit a WAL record if acquisition of this lock needs to be replayed in a : * standby server. : */ : if (log_lock) 0.00 : 68ba5c: 80 7d 9f 00 cmpb $0x0,-0x61(%rbp) 0.00 : 68ba60: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68ba65: 0f 84 91 fd ff ff je 68b7fc : /* : * Decode the locktag back to the original values, to avoid sending : * lots of empty bytes with every message. See lock.h to check how a : * locktag is defined for LOCKTAG_RELATION : */ : LogAccessExclusiveLock(locktag->locktag_field1, 0.00 : 68ba6b: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax 0.00 : 68ba72: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 68ba75: 8b 38 mov (%rax),%edi 0.00 : 68ba77: e8 64 9b ff ff callq 6855e0 0.00 : 68ba7c: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68ba81: e9 76 fd ff ff jmpq 68b7fc : LOCK_PRINT("LockAcquire: conditional lock failed", lock, lockmode); : Assert((lock->nRequested > 0) && (lock->requested[lockmode] >= 0)); : Assert(lock->nGranted <= lock->nRequested); : LWLockRelease(partitionLock); : if (locallock->nLocks == 0) : RemoveLocalLock(locallock); 0.00 : 68ba86: 48 89 cf mov %rcx,%rdi 0.00 : 68ba89: e8 b2 d6 ff ff callq 689140 0.00 : 68ba8e: 31 c0 xor %eax,%eax 0.00 : 68ba90: e9 67 fd ff ff jmpq 68b7fc : * table, leaving space free, but it's not worth acquiring the LWLock just : * to check. It's also possible that we're acquiring a second or third : * lock type on a relation we have already locked using the fast-path, but : * for now we don't worry about that case either. : */ : if (EligibleForRelationFastPath(locktag, lockmode) && 0.00 : 68ba95: 8b 01 mov (%rcx),%eax 0.00 : 68ba97: 3b 05 0b e6 52 00 cmp 0x52e60b(%rip),%eax # bba0a8 0.00 : 68ba9d: 0f 84 4e 02 00 00 je 68bcf1 0.00 : 68baa3: 85 c0 test %eax,%eax 0.00 : 68baa5: 0f 95 c0 setne %al : * If this lock could potentially have been taken via the fast-path by : * some other backend, we must (temporarily) disable further use of the : * fast-path for this lock tag, and migrate any locks already taken via : * this method to the main lock table. : */ : if (ConflictsWithRelationFastPath(locktag, lockmode)) 0.00 : 68baa8: 41 83 fe 04 cmp $0x4,%r14d 0.00 : 68baac: 0f 8e af fd ff ff jle 68b861 0.00 : 68bab2: 84 c0 test %al,%al 0.00 : 68bab4: 0f 84 a7 fd ff ff je 68b861 : { : uint32 fasthashcode = FastPathStrongLockHashPartition(hashcode); 0.00 : 68baba: 8b 5d 80 mov -0x80(%rbp),%ebx : * : * XXX: It might be worth considering using an atomic fetch-and-add : * instruction here, on architectures where that is supported. : */ : : SpinLockAcquire(&FastPathStrongRelationLocks->mutex); 0.00 : 68babd: 48 8b 15 34 1e 4f 00 mov 0x4f1e34(%rip),%rdx # b7d8f8 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 68bac4: b8 01 00 00 00 mov $0x1,%eax : * fast-path for this lock tag, and migrate any locks already taken via : * this method to the main lock table. : */ : if (ConflictsWithRelationFastPath(locktag, lockmode)) : { : uint32 fasthashcode = FastPathStrongLockHashPartition(hashcode); 0.00 : 68bac9: 81 e3 ff 03 00 00 and $0x3ff,%ebx 0.00 : 68bacf: f0 86 02 lock xchg %al,(%rdx) : * : * XXX: It might be worth considering using an atomic fetch-and-add : * instruction here, on architectures where that is supported. : */ : : SpinLockAcquire(&FastPathStrongRelationLocks->mutex); 0.00 : 68bad2: 84 c0 test %al,%al 0.00 : 68bad4: 0f 85 b6 02 00 00 jne 68bd90 : FastPathStrongRelationLocks->count[fasthashcode]++; 0.00 : 68bada: 48 8b 0d 17 1e 4f 00 mov 0x4f1e17(%rip),%rcx # b7d8f8 0.00 : 68bae1: 89 da mov %ebx,%edx 0.00 : 68bae3: 8b 44 91 04 mov 0x4(%rcx,%rdx,4),%eax 0.00 : 68bae7: 83 c0 01 add $0x1,%eax 0.00 : 68baea: 89 44 91 04 mov %eax,0x4(%rcx,%rdx,4) : locallock->holdsStrongLockCount = TRUE; 0.00 : 68baee: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : 68baf5: c6 40 40 01 movb $0x1,0x40(%rax) : StrongLockInProgress = locallock; 0.00 : 68baf9: 48 89 05 18 1e 4f 00 mov %rax,0x4f1e18(%rip) # b7d918 : SpinLockRelease(&FastPathStrongRelationLocks->mutex); 0.00 : 68bb00: 48 8b 05 f1 1d 4f 00 mov 0x4f1df1(%rip),%rax # b7d8f8 0.00 : 68bb07: c6 00 00 movb $0x0,(%rax) : */ : static bool : FastPathTransferRelationLocks(LockMethod lockMethodTable, const LOCKTAG *locktag, : uint32 hashcode) : { : LWLock *partitionLock = LockHashPartitionLock(hashcode); 0.00 : 68bb0a: 8b 45 80 mov -0x80(%rbp),%eax : Oid relid = locktag->locktag_field2; 0.00 : 68bb0d: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx : */ : static bool : FastPathTransferRelationLocks(LockMethod lockMethodTable, const LOCKTAG *locktag, : uint32 hashcode) : { : LWLock *partitionLock = LockHashPartitionLock(hashcode); 0.00 : 68bb14: 83 e0 0f and $0xf,%eax 0.00 : 68bb17: 48 83 c0 26 add $0x26,%rax 0.00 : 68bb1b: 48 c1 e0 05 shl $0x5,%rax 0.00 : 68bb1f: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 68bb23: 48 03 05 d6 1e 4f 00 add 0x4f1ed6(%rip),%rax # b7da00 0.00 : 68bb2a: 48 89 45 a0 mov %rax,-0x60(%rbp) : Oid relid = locktag->locktag_field2; 0.00 : 68bb2e: 44 8b 7a 04 mov 0x4(%rdx),%r15d : * Every PGPROC that can potentially hold a fast-path lock is present in : * ProcGlobal->allProcs. Prepared transactions are not, but any : * outstanding fast-path locks held by prepared transactions are : * transferred to the main lock table. : */ : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.00 : 68bb32: 48 8b 15 1f 1e 4f 00 mov 0x4f1e1f(%rip),%rdx # b7d958 0.00 : 68bb39: 44 8b 42 10 mov 0x10(%rdx),%r8d 0.00 : 68bb3d: 45 85 c0 test %r8d,%r8d 0.00 : 68bb40: 0f 84 2d fd ff ff je 68b873 0.00 : 68bb46: 45 31 ed xor %r13d,%r13d 0.00 : 68bb49: eb 27 jmp 68bb72 0.00 : 68bb4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : LWLockRelease(partitionLock); : : /* No need to examine remaining slots. */ : break; : } : LWLockRelease(proc->backendLock); 0.00 : 68bb50: 49 8b bc 24 90 02 00 mov 0x290(%r12),%rdi 0.00 : 68bb57: 00 : * Every PGPROC that can potentially hold a fast-path lock is present in : * ProcGlobal->allProcs. Prepared transactions are not, but any : * outstanding fast-path locks held by prepared transactions are : * transferred to the main lock table. : */ : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.00 : 68bb58: 41 83 c5 01 add $0x1,%r13d : LWLockRelease(partitionLock); : : /* No need to examine remaining slots. */ : break; : } : LWLockRelease(proc->backendLock); 0.00 : 68bb5c: e8 3f 38 00 00 callq 68f3a0 : * Every PGPROC that can potentially hold a fast-path lock is present in : * ProcGlobal->allProcs. Prepared transactions are not, but any : * outstanding fast-path locks held by prepared transactions are : * transferred to the main lock table. : */ : for (i = 0; i < ProcGlobal->allProcCount; i++) 0.00 : 68bb61: 48 8b 15 f0 1d 4f 00 mov 0x4f1df0(%rip),%rdx # b7d958 0.00 : 68bb68: 44 3b 6a 10 cmp 0x10(%rdx),%r13d 0.00 : 68bb6c: 0f 83 01 fd ff ff jae 68b873 : { : PGPROC *proc = &ProcGlobal->allProcs[i]; 0.00 : 68bb72: 44 89 e8 mov %r13d,%eax : uint32 f; : : LWLockAcquire(proc->backendLock, LW_EXCLUSIVE); 0.00 : 68bb75: 31 f6 xor %esi,%esi : * fencing operation since the other backend set proc->databaseId. So : * for now, we test it after acquiring the LWLock just to be safe. : */ : if (proc->databaseId != locktag->locktag_field1) : { : LWLockRelease(proc->backendLock); 0.00 : 68bb77: 31 db xor %ebx,%ebx : * outstanding fast-path locks held by prepared transactions are : * transferred to the main lock table. : */ : for (i = 0; i < ProcGlobal->allProcCount; i++) : { : PGPROC *proc = &ProcGlobal->allProcs[i]; 0.00 : 68bb79: 4c 69 e0 f0 02 00 00 imul $0x2f0,%rax,%r12 0.00 : 68bb80: 4c 03 22 add (%rdx),%r12 : uint32 f; : : LWLockAcquire(proc->backendLock, LW_EXCLUSIVE); 0.00 : 68bb83: 49 8b bc 24 90 02 00 mov 0x290(%r12),%rdi 0.00 : 68bb8a: 00 0.00 : 68bb8b: e8 60 3f 00 00 callq 68faf0 : * LWLock acquisition) since setting proc->databaseId. However, it's : * less clear that our backend is certain to have performed a memory : * fencing operation since the other backend set proc->databaseId. So : * for now, we test it after acquiring the LWLock just to be safe. : */ : if (proc->databaseId != locktag->locktag_field1) 0.00 : 68bb90: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 68bb97: 41 8b 44 24 38 mov 0x38(%r12),%eax : { : LWLockRelease(proc->backendLock); 0.00 : 68bb9c: 4c 89 e2 mov %r12,%rdx : * LWLock acquisition) since setting proc->databaseId. However, it's : * less clear that our backend is certain to have performed a memory : * fencing operation since the other backend set proc->databaseId. So : * for now, we test it after acquiring the LWLock just to be safe. : */ : if (proc->databaseId != locktag->locktag_field1) 0.00 : 68bb9f: 3b 01 cmp (%rcx),%eax 0.00 : 68bba1: 75 ad jne 68bb50 : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) : { : uint32 lockmode; : : /* Look for an allocated slot matching the given relid. */ : if (relid != proc->fpRelId[f] || FAST_PATH_GET_BITS(proc, f) == 0) 0.00 : 68bba3: 44 3b ba a0 02 00 00 cmp 0x2a0(%rdx),%r15d 0.00 : 68bbaa: 74 19 je 68bbc5 0.00 : 68bbac: 0f 1f 40 00 nopl 0x0(%rax) : return false; : } : GrantLock(proclock->tag.myLock, proclock, lockmode); : FAST_PATH_CLEAR_LOCKMODE(proc, f, lockmode); : } : LWLockRelease(partitionLock); 0.00 : 68bbb0: 83 c3 03 add $0x3,%ebx 0.00 : 68bbb3: 48 83 c2 04 add $0x4,%rdx : { : LWLockRelease(proc->backendLock); : continue; : } : : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) 0.00 : 68bbb7: 83 fb 30 cmp $0x30,%ebx 0.00 : 68bbba: 74 94 je 68bb50 : { : uint32 lockmode; : : /* Look for an allocated slot matching the given relid. */ : if (relid != proc->fpRelId[f] || FAST_PATH_GET_BITS(proc, f) == 0) 0.00 : 68bbbc: 44 3b ba a0 02 00 00 cmp 0x2a0(%rdx),%r15d 0.00 : 68bbc3: 75 eb jne 68bbb0 0.00 : 68bbc5: 49 8b 84 24 98 02 00 mov 0x298(%r12),%rax 0.00 : 68bbcc: 00 0.00 : 68bbcd: 89 d9 mov %ebx,%ecx 0.00 : 68bbcf: 48 d3 e8 shr %cl,%rax 0.00 : 68bbd2: a8 07 test $0x7,%al 0.00 : 68bbd4: 74 da je 68bbb0 : continue; : : /* Find or create lock object. */ : LWLockAcquire(partitionLock, LW_EXCLUSIVE); 0.00 : 68bbd6: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 68bbda: 31 f6 xor %esi,%esi 0.00 : 68bbdc: e8 0f 3f 00 00 callq 68faf0 0.00 : 68bbe1: 41 b9 01 00 00 00 mov $0x1,%r9d : lockmode < FAST_PATH_LOCKNUMBER_OFFSET + FAST_PATH_BITS_PER_SLOT; : ++lockmode) : { : PROCLOCK *proclock; : : if (!FAST_PATH_CHECK_LOCKMODE(proc, f, lockmode)) 0.00 : 68bbe7: 49 8b 84 24 98 02 00 mov 0x298(%r12),%rax 0.00 : 68bbee: 00 0.00 : 68bbef: 89 d9 mov %ebx,%ecx 0.00 : 68bbf1: 48 d3 e8 shr %cl,%rax 0.00 : 68bbf4: a8 01 test $0x1,%al 0.00 : 68bbf6: 75 20 jne 68bc18 : : /* Find or create lock object. */ : LWLockAcquire(partitionLock, LW_EXCLUSIVE); : for (lockmode = FAST_PATH_LOCKNUMBER_OFFSET; : lockmode < FAST_PATH_LOCKNUMBER_OFFSET + FAST_PATH_BITS_PER_SLOT; : ++lockmode) 0.00 : 68bbf8: 41 83 c1 01 add $0x1,%r9d 0.00 : 68bbfc: 83 c3 01 add $0x1,%ebx : continue; : : /* Find or create lock object. */ : LWLockAcquire(partitionLock, LW_EXCLUSIVE); : for (lockmode = FAST_PATH_LOCKNUMBER_OFFSET; : lockmode < FAST_PATH_LOCKNUMBER_OFFSET + FAST_PATH_BITS_PER_SLOT; 0.00 : 68bbff: 41 83 f9 04 cmp $0x4,%r9d 0.00 : 68bc03: 75 e2 jne 68bbe7 : return false; : } : GrantLock(proclock->tag.myLock, proclock, lockmode); : FAST_PATH_CLEAR_LOCKMODE(proc, f, lockmode); : } : LWLockRelease(partitionLock); 0.00 : 68bc05: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 68bc09: e8 92 37 00 00 callq 68f3a0 0.00 : 68bc0e: e9 3d ff ff ff jmpq 68bb50 0.00 : 68bc13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : PROCLOCK *proclock; : : if (!FAST_PATH_CHECK_LOCKMODE(proc, f, lockmode)) : continue; : proclock = SetupLockInTable(lockMethodTable, proc, locktag, 0.00 : 68bc18: 8b 4d 80 mov -0x80(%rbp),%ecx 0.00 : 68bc1b: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 68bc22: 45 89 c8 mov %r9d,%r8d 0.00 : 68bc25: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 68bc2c: 4c 89 e6 mov %r12,%rsi 0.00 : 68bc2f: 44 89 8d 50 ff ff ff mov %r9d,-0xb0(%rbp) 0.00 : 68bc36: e8 35 ca ff ff callq 688670 : hashcode, lockmode); : if (!proclock) 0.00 : 68bc3b: 48 85 c0 test %rax,%rax 0.00 : 68bc3e: 44 8b 8d 50 ff ff ff mov -0xb0(%rbp),%r9d 0.00 : 68bc45: 0f 84 dd 01 00 00 je 68be28 : { : LWLockRelease(partitionLock); : LWLockRelease(proc->backendLock); : return false; : } : GrantLock(proclock->tag.myLock, proclock, lockmode); 0.00 : 68bc4b: 48 8b 38 mov (%rax),%rdi 0.00 : 68bc4e: 44 89 ca mov %r9d,%edx 0.00 : 68bc51: 48 89 c6 mov %rax,%rsi 0.00 : 68bc54: 44 89 8d 50 ff ff ff mov %r9d,-0xb0(%rbp) 0.00 : 68bc5b: e8 50 c9 ff ff callq 6885b0 : FAST_PATH_CLEAR_LOCKMODE(proc, f, lockmode); 0.00 : 68bc60: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68bc65: 89 d9 mov %ebx,%ecx 0.00 : 68bc67: 48 d3 e0 shl %cl,%rax 0.00 : 68bc6a: 48 f7 d0 not %rax 0.00 : 68bc6d: 49 21 84 24 98 02 00 and %rax,0x298(%r12) 0.00 : 68bc74: 00 0.00 : 68bc75: 44 8b 8d 50 ff ff ff mov -0xb0(%rbp),%r9d 0.00 : 68bc7c: e9 77 ff ff ff jmpq 68bbf8 : * (That's last because most complex check.) : */ : if (lockMethodTable->conflictTab[lockmode] & lock->waitMask) : status = STATUS_FOUND; : else : status = LockCheckConflicts(lockMethodTable, lockmode, 0.00 : 68bc81: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 68bc88: 48 89 d9 mov %rbx,%rcx 0.00 : 68bc8b: 4c 89 e2 mov %r12,%rdx 0.00 : 68bc8e: 44 89 f6 mov %r14d,%esi 0.00 : 68bc91: e8 aa c8 ff ff callq 688540 : lock, proclock); : : if (status == STATUS_OK) 0.00 : 68bc96: 85 c0 test %eax,%eax 0.00 : 68bc98: 0f 85 45 fc ff ff jne 68b8e3 : { : /* No conflict with held or previously requested locks */ : GrantLock(lock, proclock, lockmode); 0.00 : 68bc9e: 48 89 de mov %rbx,%rsi 0.00 : 68bca1: 4c 89 e7 mov %r12,%rdi 0.00 : 68bca4: 44 89 f2 mov %r14d,%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:929 5.56 : 68bca7: e8 04 c9 ff ff callq 6885b0 : GrantLockLocal(locallock, owner); 0.00 : 68bcac: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 68bcb3: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 68bcba: e8 31 e6 ff ff callq 68a2f0 0.00 : 68bcbf: e9 85 fd ff ff jmpq 68ba49 : LWLock *partitionLock; : int status; : bool log_lock = false; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); 0.00 : 68bcc4: ba c0 cb 8a 00 mov $0x8acbc0,%edx 0.00 : 68bcc9: be c6 02 00 00 mov $0x2c6,%esi 0.00 : 68bcce: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68bcd3: e8 48 f7 0e 00 callq 77b420 0.00 : 68bcd8: 0f b7 d3 movzwl %bx,%edx 0.00 : 68bcdb: be 29 c6 8a 00 mov $0x8ac629,%esi 0.00 : 68bce0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68bce5: 31 c0 xor %eax,%eax 0.00 : 68bce7: e8 44 f5 0e 00 callq 77b230 0.00 : 68bcec: e8 df d7 dd ff callq 4694d0 : * table, leaving space free, but it's not worth acquiring the LWLock just : * to check. It's also possible that we're acquiring a second or third : * lock type on a relation we have already locked using the fast-path, but : * for now we don't worry about that case either. : */ : if (EligibleForRelationFastPath(locktag, lockmode) && 0.00 : 68bcf1: 85 c0 test %eax,%eax 0.00 : 68bcf3: 0f 95 c0 setne %al 0.00 : 68bcf6: 0f 84 ac fd ff ff je 68baa8 0.00 : 68bcfc: 41 83 fe 03 cmp $0x3,%r14d 0.00 : 68bd00: 0f 8f a2 fd ff ff jg 68baa8 0.00 : 68bd06: 83 3d e3 1b 4f 00 0f cmpl $0xf,0x4f1be3(%rip) # b7d8f0 0.00 : 68bd0d: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68bd12: 0f 8f 90 fd ff ff jg 68baa8 : * LWLockAcquire acts as a memory sequencing point, so it's safe to : * assume that any strong locker whose increment to : * FastPathStrongRelationLocks->counts becomes visible after we test : * it has yet to begin to transfer fast-path locks. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 68bd18: 48 8b 05 29 1c 4f 00 mov 0x4f1c29(%rip),%rax # b7d948 : * for now we don't worry about that case either. : */ : if (EligibleForRelationFastPath(locktag, lockmode) && : FastPathLocalUseCount < FP_LOCK_SLOTS_PER_BACKEND) : { : uint32 fasthashcode = FastPathStrongLockHashPartition(hashcode); 0.00 : 68bd1f: 8b 5d 80 mov -0x80(%rbp),%ebx : * LWLockAcquire acts as a memory sequencing point, so it's safe to : * assume that any strong locker whose increment to : * FastPathStrongRelationLocks->counts becomes visible after we test : * it has yet to begin to transfer fast-path locks. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 68bd22: 31 f6 xor %esi,%esi 0.00 : 68bd24: 48 8b b8 90 02 00 00 mov 0x290(%rax),%rdi : * for now we don't worry about that case either. : */ : if (EligibleForRelationFastPath(locktag, lockmode) && : FastPathLocalUseCount < FP_LOCK_SLOTS_PER_BACKEND) : { : uint32 fasthashcode = FastPathStrongLockHashPartition(hashcode); 0.00 : 68bd2b: 81 e3 ff 03 00 00 and $0x3ff,%ebx : * assume that any strong locker whose increment to : * FastPathStrongRelationLocks->counts becomes visible after we test : * it has yet to begin to transfer fast-path locks. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : if (FastPathStrongRelationLocks->count[fasthashcode] != 0) 0.00 : 68bd31: 89 db mov %ebx,%ebx : * LWLockAcquire acts as a memory sequencing point, so it's safe to : * assume that any strong locker whose increment to : * FastPathStrongRelationLocks->counts becomes visible after we test : * it has yet to begin to transfer fast-path locks. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 68bd33: e8 b8 3d 00 00 callq 68faf0 : if (FastPathStrongRelationLocks->count[fasthashcode] != 0) 0.00 : 68bd38: 48 8b 05 b9 1b 4f 00 mov 0x4f1bb9(%rip),%rax # b7d8f8 0.00 : 68bd3f: 8b 44 98 04 mov 0x4(%rax,%rbx,4),%eax 0.00 : 68bd43: 85 c0 test %eax,%eax 0.00 : 68bd45: 0f 84 1d 01 00 00 je 68be68 0.00 : 68bd4b: 4c 8b 0d f6 1b 4f 00 mov 0x4f1bf6(%rip),%r9 # b7d948 : acquired = false; : else : acquired = FastPathGrantRelationLock(locktag->locktag_field2, : lockmode); : LWLockRelease(MyProc->backendLock); 0.00 : 68bd52: 49 8b b9 90 02 00 00 mov 0x290(%r9),%rdi 0.00 : 68bd59: e8 42 36 00 00 callq 68f3a0 : * If this lock could potentially have been taken via the fast-path by : * some other backend, we must (temporarily) disable further use of the : * fast-path for this lock tag, and migrate any locks already taken via : * this method to the main lock table. : */ : if (ConflictsWithRelationFastPath(locktag, lockmode)) 0.00 : 68bd5e: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : 68bd65: 66 81 7a 0e 00 01 cmpw $0x100,0xe(%rdx) 0.00 : 68bd6b: 0f 85 f0 fa ff ff jne 68b861 0.00 : 68bd71: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 68bd78: 44 8b 09 mov (%rcx),%r9d 0.00 : 68bd7b: 45 85 c9 test %r9d,%r9d 0.00 : 68bd7e: 0f 95 c0 setne %al 0.00 : 68bd81: e9 22 fd ff ff jmpq 68baa8 0.00 : 68bd86: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 68bd8d: 00 00 00 : * : * XXX: It might be worth considering using an atomic fetch-and-add : * instruction here, on architectures where that is supported. : */ : : SpinLockAcquire(&FastPathStrongRelationLocks->mutex); 0.00 : 68bd90: 48 8b 3d 61 1b 4f 00 mov 0x4f1b61(%rip),%rdi # b7d8f8 0.00 : 68bd97: ba e7 05 00 00 mov $0x5e7,%edx 0.00 : 68bd9c: be 93 d1 8a 00 mov $0x8ad193,%esi 0.00 : 68bda1: e8 9a 42 00 00 callq 690040 0.00 : 68bda6: e9 2f fd ff ff jmpq 68bada : */ : proclock = SetupLockInTable(lockMethodTable, MyProc, locktag, : hashcode, lockmode); : if (!proclock) : { : AbortStrongLockAcquire(); 0.00 : 68bdab: e8 80 cb ff ff callq 688930 : LWLockRelease(partitionLock); 0.00 : 68bdb0: 4c 89 ff mov %r15,%rdi 0.00 : 68bdb3: e8 e8 35 00 00 callq 68f3a0 : if (reportMemoryError) 0.00 : 68bdb8: 80 bd 5e ff ff ff 00 cmpb $0x0,-0xa2(%rbp) 0.00 : 68bdbf: 0f 84 9c fb ff ff je 68b961 : ereport(ERROR, 0.00 : 68bdc5: 45 31 c0 xor %r8d,%r8d 0.00 : 68bdc8: b9 c0 cb 8a 00 mov $0x8acbc0,%ecx 0.00 : 68bdcd: ba 8b 03 00 00 mov $0x38b,%edx 0.00 : 68bdd2: be 93 d1 8a 00 mov $0x8ad193,%esi 0.00 : 68bdd7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68bddc: e8 df ec 0e 00 callq 77aac0 0.00 : 68bde1: 84 c0 test %al,%al 0.00 : 68bde3: 0f 84 6f f9 ff ff je 68b758 0.00 : 68bde9: bf a8 c8 8a 00 mov $0x8ac8a8,%edi 0.00 : 68bdee: 31 c0 xor %eax,%eax 0.00 : 68bdf0: e8 ab fe 0e 00 callq 77bca0 0.00 : 68bdf5: bf 47 ba 8a 00 mov $0x8aba47,%edi 0.00 : 68bdfa: 41 89 c4 mov %eax,%r12d 0.00 : 68bdfd: 31 c0 xor %eax,%eax 0.00 : 68bdff: e8 9c 0a 0f 00 callq 77c8a0 0.00 : 68be04: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 68be09: 89 c3 mov %eax,%ebx 0.00 : 68be0b: e8 40 0f 0f 00 callq 77cd50 0.00 : 68be10: 44 89 e2 mov %r12d,%edx 0.00 : 68be13: 89 c7 mov %eax,%edi 0.00 : 68be15: 89 de mov %ebx,%esi 0.00 : 68be17: 31 c0 xor %eax,%eax 0.00 : 68be19: e8 c2 e7 0e 00 callq 77a5e0 0.00 : 68be1e: e9 35 f9 ff ff jmpq 68b758 0.00 : 68be23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : continue; : proclock = SetupLockInTable(lockMethodTable, proc, locktag, : hashcode, lockmode); : if (!proclock) : { : LWLockRelease(partitionLock); 0.00 : 68be28: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 68be2c: e8 6f 35 00 00 callq 68f3a0 : LWLockRelease(proc->backendLock); 0.00 : 68be31: 49 8b bc 24 90 02 00 mov 0x290(%r12),%rdi 0.00 : 68be38: 00 0.00 : 68be39: e8 62 35 00 00 callq 68f3a0 : : BeginStrongLockAcquire(locallock, fasthashcode); : if (!FastPathTransferRelationLocks(lockMethodTable, locktag, : hashcode)) : { : AbortStrongLockAcquire(); 0.00 : 68be3e: e8 ed ca ff ff callq 688930 : if (reportMemoryError) 0.00 : 68be43: 80 bd 5e ff ff ff 00 cmpb $0x0,-0xa2(%rbp) 0.00 : 68be4a: 0f 84 11 fb ff ff je 68b961 : ereport(ERROR, 0.00 : 68be50: 45 31 c0 xor %r8d,%r8d 0.00 : 68be53: b9 c0 cb 8a 00 mov $0x8acbc0,%ecx 0.00 : 68be58: ba 69 03 00 00 mov $0x369,%edx 0.00 : 68be5d: e9 70 ff ff ff jmpq 68bdd2 0.00 : 68be62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : uint32 unused_slot = FP_LOCK_SLOTS_PER_BACKEND; : : /* Scan for existing entry for this relid, remembering empty slot. */ : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) : { : if (FAST_PATH_GET_BITS(MyProc, f) == 0) 0.00 : 68be68: 4c 8b 0d d9 1a 4f 00 mov 0x4f1ad9(%rip),%r9 # b7d948 : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : if (FastPathStrongRelationLocks->count[fasthashcode] != 0) : acquired = false; : else : acquired = FastPathGrantRelationLock(locktag->locktag_field2, 0.00 : 68be6f: 48 8b 85 60 ff ff ff mov -0xa0(%rbp),%rax : uint32 unused_slot = FP_LOCK_SLOTS_PER_BACKEND; : : /* Scan for existing entry for this relid, remembering empty slot. */ : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) : { : if (FAST_PATH_GET_BITS(MyProc, f) == 0) 0.00 : 68be76: 31 d2 xor %edx,%edx 0.00 : 68be78: bf 10 00 00 00 mov $0x10,%edi 0.00 : 68be7d: 31 c9 xor %ecx,%ecx : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : if (FastPathStrongRelationLocks->count[fasthashcode] != 0) : acquired = false; : else : acquired = FastPathGrantRelationLock(locktag->locktag_field2, 0.00 : 68be7f: 44 8b 50 04 mov 0x4(%rax),%r10d : uint32 unused_slot = FP_LOCK_SLOTS_PER_BACKEND; : : /* Scan for existing entry for this relid, remembering empty slot. */ : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) : { : if (FAST_PATH_GET_BITS(MyProc, f) == 0) 0.00 : 68be83: 4d 8b 81 98 02 00 00 mov 0x298(%r9),%r8 0.00 : 68be8a: 4c 89 ce mov %r9,%rsi 0.00 : 68be8d: eb 1c jmp 68beab : unused_slot = f; : else if (MyProc->fpRelId[f] == relid) 0.00 : 68be8f: 44 3b 96 a0 02 00 00 cmp 0x2a0(%rsi),%r10d 0.00 : 68be96: 0f 84 98 00 00 00 je 68bf34 : { : uint32 f; : uint32 unused_slot = FP_LOCK_SLOTS_PER_BACKEND; : : /* Scan for existing entry for this relid, remembering empty slot. */ : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) 0.00 : 68be9c: 83 c2 01 add $0x1,%edx 0.00 : 68be9f: 83 c1 03 add $0x3,%ecx 0.00 : 68bea2: 48 83 c6 04 add $0x4,%rsi 0.00 : 68bea6: 83 fa 10 cmp $0x10,%edx 0.00 : 68bea9: 74 0e je 68beb9 : { : if (FAST_PATH_GET_BITS(MyProc, f) == 0) 0.00 : 68beab: 4c 89 c0 mov %r8,%rax 0.00 : 68beae: 48 d3 e8 shr %cl,%rax 0.00 : 68beb1: a8 07 test $0x7,%al 0.00 : 68beb3: 75 da jne 68be8f : unused_slot = f; : else if (MyProc->fpRelId[f] == relid) : { : Assert(!FAST_PATH_CHECK_LOCKMODE(MyProc, f, lockmode)); : FAST_PATH_SET_LOCKMODE(MyProc, f, lockmode); 0.00 : 68beb5: 89 d7 mov %edx,%edi 0.00 : 68beb7: eb e3 jmp 68be9c : return true; : } : } : : /* If no existing entry, use any empty slot. */ : if (unused_slot < FP_LOCK_SLOTS_PER_BACKEND) 0.00 : 68beb9: 83 ff 10 cmp $0x10,%edi 0.00 : 68bebc: 0f 84 90 fe ff ff je 68bd52 : { : MyProc->fpRelId[unused_slot] = relid; 0.00 : 68bec2: 89 f8 mov %edi,%eax : FAST_PATH_SET_LOCKMODE(MyProc, unused_slot, lockmode); 0.00 : 68bec4: 8d 0c 7f lea (%rdi,%rdi,2),%ecx : } : : /* If no existing entry, use any empty slot. */ : if (unused_slot < FP_LOCK_SLOTS_PER_BACKEND) : { : MyProc->fpRelId[unused_slot] = relid; 0.00 : 68bec7: 45 89 94 81 a0 02 00 mov %r10d,0x2a0(%r9,%rax,4) 0.00 : 68bece: 00 : FAST_PATH_SET_LOCKMODE(MyProc, unused_slot, lockmode); 0.00 : 68becf: 48 8b 15 72 1a 4f 00 mov 0x4f1a72(%rip),%rdx # b7d948 0.00 : 68bed6: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68bedb: 41 8d 4c 0e ff lea -0x1(%r14,%rcx,1),%ecx 0.00 : 68bee0: 48 d3 e0 shl %cl,%rax 0.00 : 68bee3: 48 09 82 98 02 00 00 or %rax,0x298(%rdx) : ++FastPathLocalUseCount; 0.00 : 68beea: 83 05 ff 19 4f 00 01 addl $0x1,0x4f19ff(%rip) # b7d8f0 : if (FastPathStrongRelationLocks->count[fasthashcode] != 0) : acquired = false; : else : acquired = FastPathGrantRelationLock(locktag->locktag_field2, : lockmode); : LWLockRelease(MyProc->backendLock); 0.00 : 68bef1: 48 8b 05 50 1a 4f 00 mov 0x4f1a50(%rip),%rax # b7d948 0.00 : 68bef8: 48 8b b8 90 02 00 00 mov 0x290(%rax),%rdi 0.00 : 68beff: e8 9c 34 00 00 callq 68f3a0 : /* : * The locallock might contain stale pointers to some old shared : * objects; we MUST reset these to null before considering the : * lock to be acquired via fast-path. : */ : locallock->lock = NULL; 0.00 : 68bf04: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 68bf0b: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 68bf12: 00 : locallock->proclock = NULL; 0.00 : 68bf13: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 68bf1a: 00 : GrantLockLocal(locallock, owner); 0.00 : 68bf1b: 48 89 d7 mov %rdx,%rdi 0.00 : 68bf1e: 48 8b b5 78 ff ff ff mov -0x88(%rbp),%rsi 0.00 : 68bf25: e8 c6 e3 ff ff callq 68a2f0 0.00 : 68bf2a: b8 01 00 00 00 mov $0x1,%eax : LogAccessExclusiveLock(locktag->locktag_field1, : locktag->locktag_field2); : } : : return LOCKACQUIRE_OK; : } 0.00 : 68bf2f: e9 c8 f8 ff ff jmpq 68b7fc : if (FAST_PATH_GET_BITS(MyProc, f) == 0) : unused_slot = f; : else if (MyProc->fpRelId[f] == relid) : { : Assert(!FAST_PATH_CHECK_LOCKMODE(MyProc, f, lockmode)); : FAST_PATH_SET_LOCKMODE(MyProc, f, lockmode); 0.00 : 68bf34: 42 8d 4c 31 ff lea -0x1(%rcx,%r14,1),%ecx 0.00 : 68bf39: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68bf3e: 48 d3 e0 shl %cl,%rax 0.00 : 68bf41: 49 09 c0 or %rax,%r8 0.00 : 68bf44: 4d 89 81 98 02 00 00 mov %r8,0x298(%r9) 0.00 : 68bf4b: eb a4 jmp 68bef1 : * Check the proclock entry status, in case something in the ipc : * communication doesn't work correctly. : */ : if (!(proclock->holdMask & LOCKBIT_ON(lockmode))) : { : AbortStrongLockAcquire(); 0.00 : 68bf4d: e8 de c9 ff ff callq 688930 : PROCLOCK_PRINT("LockAcquire: INCONSISTENT", proclock); : LOCK_PRINT("LockAcquire: INCONSISTENT", lock, lockmode); : /* Should we retry ? */ : LWLockRelease(partitionLock); 0.00 : 68bf52: 4c 89 ff mov %r15,%rdi 0.00 : 68bf55: e8 46 34 00 00 callq 68f3a0 : elog(ERROR, "LockAcquire failed"); 0.00 : 68bf5a: ba c0 cb 8a 00 mov $0x8acbc0,%edx 0.00 : 68bf5f: be f5 03 00 00 mov $0x3f5,%esi 0.00 : 68bf64: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68bf69: e8 b2 f4 0e 00 callq 77b420 0.00 : 68bf6e: be 97 c6 8a 00 mov $0x8ac697,%esi 0.00 : 68bf73: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68bf78: 31 c0 xor %eax,%eax 0.00 : 68bf7a: e8 b1 f2 0e 00 callq 77b230 0.00 : 68bf7f: e9 d4 f7 ff ff jmpq 68b758 : if (!hash_search_with_hash_value(LockMethodProcLockHash, : (void *) &(proclock->tag), : proclock_hashcode, : HASH_REMOVE, : NULL)) : elog(PANIC, "proclock table corrupted"); 0.00 : 68bf84: ba c0 cb 8a 00 mov $0x8acbc0,%edx 0.00 : 68bf89: be bc 03 00 00 mov $0x3bc,%esi 0.00 : 68bf8e: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68bf93: e8 88 f4 0e 00 callq 77b420 0.00 : 68bf98: be 10 c6 8a 00 mov $0x8ac610,%esi 0.00 : 68bf9d: bf 16 00 00 00 mov $0x16,%edi 0.00 : 68bfa2: 31 c0 xor %eax,%eax 0.00 : 68bfa4: e8 87 f2 0e 00 callq 77b230 0.00 : 68bfa9: e8 22 d5 dd ff callq 4694d0 : : if (RecoveryInProgress() && !InRecovery && : (locktag->locktag_type == LOCKTAG_OBJECT || : locktag->locktag_type == LOCKTAG_RELATION) && : lockmode > RowExclusiveLock) : ereport(ERROR, 0.00 : 68bfae: bf 08 c9 8a 00 mov $0x8ac908,%edi 0.00 : 68bfb3: 31 c0 xor %eax,%eax 0.00 : 68bfb5: e8 e6 fc 0e 00 callq 77bca0 0.00 : 68bfba: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : 68bfc1: 41 89 c4 mov %eax,%r12d 0.00 : 68bfc4: 49 63 d6 movslq %r14d,%rdx 0.00 : 68bfc7: bf 60 c9 8a 00 mov $0x8ac960,%edi 0.00 : 68bfcc: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 68bfd0: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi 0.00 : 68bfd4: 31 c0 xor %eax,%eax 0.00 : 68bfd6: e8 c5 08 0f 00 callq 77c8a0 0.00 : 68bfdb: bf 45 01 00 00 mov $0x145,%edi 0.00 : 68bfe0: 89 c3 mov %eax,%ebx 0.00 : 68bfe2: e9 24 fe ff ff jmpq 68be0b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:576 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:617 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:576 5.56 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:617 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000697940 : : * EXTENSION_CREATE means it's OK to extend an existing relation, not to : * invent one out of whole cloth. : */ : static MdfdVec * : mdopen(SMgrRelation reln, ForkNumber forknum, ExtensionBehavior behavior) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 11.11 : 697940: 55 push %rbp 44.44 : 697941: 48 89 e5 mov %rsp,%rbp 0.00 : 697944: 4c 89 6d e8 mov %r13,-0x18(%rbp) : MdfdVec *mdfd; : char *path; : File fd; : : /* No work if already open */ : if (reln->md_fd[forknum]) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:576 11.11 : 697948: 4c 63 ee movslq %esi,%r13 : * EXTENSION_CREATE means it's OK to extend an existing relation, not to : * invent one out of whole cloth. : */ : static MdfdVec * : mdopen(SMgrRelation reln, ForkNumber forknum, ExtensionBehavior behavior) : { 0.00 : 69794b: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 69794f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 697953: 48 89 5d d8 mov %rbx,-0x28(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:570 5.56 : 697957: 49 89 fc mov %rdi,%r12 0.00 : 69795a: 4c 89 75 f0 mov %r14,-0x10(%rbp) 5.56 : 69795e: 48 83 ec 30 sub $0x30,%rsp : MdfdVec *mdfd; : char *path; : File fd; : : /* No work if already open */ : if (reln->md_fd[forknum]) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:576 5.56 : 697962: 4a 8b 5c ef 28 mov 0x28(%rdi,%r13,8),%rbx : * EXTENSION_CREATE means it's OK to extend an existing relation, not to : * invent one out of whole cloth. : */ : static MdfdVec * : mdopen(SMgrRelation reln, ForkNumber forknum, ExtensionBehavior behavior) : { 0.00 : 697967: 41 89 d7 mov %edx,%r15d : MdfdVec *mdfd; : char *path; : File fd; : : /* No work if already open */ : if (reln->md_fd[forknum]) 0.00 : 69796a: 48 85 db test %rbx,%rbx 0.00 : 69796d: 74 21 je 697990 : mdfd->mdfd_segno = 0; : mdfd->mdfd_chain = NULL; : Assert(_mdnblocks(reln, forknum, mdfd) <= ((BlockNumber) RELSEG_SIZE)); : : return mdfd; : } 0.00 : 69796f: 48 89 d8 mov %rbx,%rax 0.00 : 697972: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 697976: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 69797a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 69797e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:617 11.11 : 697982: 4c 8b 7d f8 mov -0x8(%rbp),%r15 5.56 : 697986: c9 leaveq 0.00 : 697987: c3 retq 0.00 : 697988: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 69798f: 00 : : /* No work if already open */ : if (reln->md_fd[forknum]) : return reln->md_fd[forknum]; : : path = relpath(reln->smgr_rnode, forknum); 0.00 : 697990: 8b 4f 0c mov 0xc(%rdi),%ecx 0.00 : 697993: 8b 57 08 mov 0x8(%rdi),%edx 0.00 : 697996: 41 89 f0 mov %esi,%r8d 0.00 : 697999: 8b 7f 04 mov 0x4(%rdi),%edi 0.00 : 69799c: 41 8b 34 24 mov (%r12),%esi 0.00 : 6979a0: e8 2b 6c 11 00 callq 7ae5d0 : : fd = PathNameOpenFile(path, O_RDWR | PG_BINARY, 0600); 0.00 : 6979a5: ba 80 01 00 00 mov $0x180,%edx 0.00 : 6979aa: be 02 00 00 00 mov $0x2,%esi 0.00 : 6979af: 48 89 c7 mov %rax,%rdi : : /* No work if already open */ : if (reln->md_fd[forknum]) : return reln->md_fd[forknum]; : : path = relpath(reln->smgr_rnode, forknum); 0.00 : 6979b2: 48 89 45 d0 mov %rax,-0x30(%rbp) : : fd = PathNameOpenFile(path, O_RDWR | PG_BINARY, 0600); 0.00 : 6979b6: e8 45 25 fe ff callq 679f00 : : if (fd < 0) 0.00 : 6979bb: 85 c0 test %eax,%eax : if (reln->md_fd[forknum]) : return reln->md_fd[forknum]; : : path = relpath(reln->smgr_rnode, forknum); : : fd = PathNameOpenFile(path, O_RDWR | PG_BINARY, 0600); 0.00 : 6979bd: 41 89 c6 mov %eax,%r14d : : if (fd < 0) 0.00 : 6979c0: 78 3e js 697a00 : (errcode_for_file_access(), : errmsg("could not open file \"%s\": %m", path))); : } : } : : pfree(path); 0.00 : 6979c2: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 6979c6: e8 b5 11 10 00 callq 798b80 : * _fdvec_alloc() -- Make a MdfdVec object. : */ : static MdfdVec * : _fdvec_alloc(void) : { : return (MdfdVec *) MemoryContextAlloc(MdCxt, sizeof(MdfdVec)); 0.00 : 6979cb: 48 8b 3d de 6d 4e 00 mov 0x4e6dde(%rip),%rdi # b7e7b0 0.00 : 6979d2: be 10 00 00 00 mov $0x10,%esi 0.00 : 6979d7: e8 b4 14 10 00 callq 798e90 : } : } : : pfree(path); : : reln->md_fd[forknum] = mdfd = _fdvec_alloc(); 0.00 : 6979dc: 4b 89 44 ec 28 mov %rax,0x28(%r12,%r13,8) : * _fdvec_alloc() -- Make a MdfdVec object. : */ : static MdfdVec * : _fdvec_alloc(void) : { : return (MdfdVec *) MemoryContextAlloc(MdCxt, sizeof(MdfdVec)); 0.00 : 6979e1: 48 89 c3 mov %rax,%rbx : : pfree(path); : : reln->md_fd[forknum] = mdfd = _fdvec_alloc(); : : mdfd->mdfd_vfd = fd; 0.00 : 6979e4: 44 89 30 mov %r14d,(%rax) : mdfd->mdfd_segno = 0; 0.00 : 6979e7: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : mdfd->mdfd_chain = NULL; 0.00 : 6979ee: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6979f5: 00 : Assert(_mdnblocks(reln, forknum, mdfd) <= ((BlockNumber) RELSEG_SIZE)); : : return mdfd; : } 0.00 : 6979f6: e9 74 ff ff ff jmpq 69796f 0.00 : 6979fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * During bootstrap, there are cases where a system relation will be : * accessed (by internal backend processes) before the bootstrap : * script nominally creates it. Therefore, accept mdopen() as a : * substitute for mdcreate() in bootstrap mode only. (See mdcreate) : */ : if (IsBootstrapProcessingMode()) 0.00 : 697a00: 8b 05 36 11 4d 00 mov 0x4d1136(%rip),%eax # b68b3c 0.00 : 697a06: 85 c0 test %eax,%eax 0.00 : 697a08: 74 36 je 697a40 : fd = PathNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, 0600); : if (fd < 0) : { : if (behavior == EXTENSION_RETURN_NULL && 0.00 : 697a0a: 41 83 ef 01 sub $0x1,%r15d 0.00 : 697a0e: 75 0a jne 697a1a 0.00 : 697a10: e8 ab 22 dd ff callq 469cc0 <__errno_location@plt> 0.00 : 697a15: 83 38 02 cmpl $0x2,(%rax) 0.00 : 697a18: 74 6a je 697a84 : FILE_POSSIBLY_DELETED(errno)) : { : pfree(path); : return NULL; : } : ereport(ERROR, 0.00 : 697a1a: 45 31 c0 xor %r8d,%r8d 0.00 : 697a1d: b9 7f e3 8a 00 mov $0x8ae37f,%ecx 0.00 : 697a22: ba 5b 02 00 00 mov $0x25b,%edx 0.00 : 697a27: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 697a2c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 697a31: e8 8a 30 0e 00 callq 77aac0 0.00 : 697a36: 84 c0 test %al,%al 0.00 : 697a38: 75 26 jne 697a60 0.00 : 697a3a: e8 91 1a dd ff callq 4694d0 0.00 : 697a3f: 90 nop : * accessed (by internal backend processes) before the bootstrap : * script nominally creates it. Therefore, accept mdopen() as a : * substitute for mdcreate() in bootstrap mode only. (See mdcreate) : */ : if (IsBootstrapProcessingMode()) : fd = PathNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, 0600); 0.00 : 697a40: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 697a44: ba 80 01 00 00 mov $0x180,%edx 0.00 : 697a49: be c2 00 00 00 mov $0xc2,%esi 0.00 : 697a4e: e8 ad 24 fe ff callq 679f00 : if (fd < 0) 0.00 : 697a53: 85 c0 test %eax,%eax : * accessed (by internal backend processes) before the bootstrap : * script nominally creates it. Therefore, accept mdopen() as a : * substitute for mdcreate() in bootstrap mode only. (See mdcreate) : */ : if (IsBootstrapProcessingMode()) : fd = PathNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, 0600); 0.00 : 697a55: 41 89 c6 mov %eax,%r14d : if (fd < 0) 0.00 : 697a58: 0f 89 64 ff ff ff jns 6979c2 0.00 : 697a5e: eb aa jmp 697a0a : FILE_POSSIBLY_DELETED(errno)) : { : pfree(path); : return NULL; : } : ereport(ERROR, 0.00 : 697a60: 48 8b 75 d0 mov -0x30(%rbp),%rsi 0.00 : 697a64: bf 53 31 7b 00 mov $0x7b3153,%edi 0.00 : 697a69: 31 c0 xor %eax,%eax 0.00 : 697a6b: e8 30 4e 0e 00 callq 77c8a0 0.00 : 697a70: 89 c3 mov %eax,%ebx 0.00 : 697a72: e8 79 50 0e 00 callq 77caf0 0.00 : 697a77: 89 de mov %ebx,%esi 0.00 : 697a79: 89 c7 mov %eax,%edi 0.00 : 697a7b: 31 c0 xor %eax,%eax 0.00 : 697a7d: e8 5e 2b 0e 00 callq 77a5e0 0.00 : 697a82: eb b6 jmp 697a3a : if (fd < 0) : { : if (behavior == EXTENSION_RETURN_NULL && : FILE_POSSIBLY_DELETED(errno)) : { : pfree(path); 0.00 : 697a84: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 697a88: e8 f3 10 10 00 callq 798b80 0.00 : 697a8d: 0f 1f 00 nopl (%rax) : mdfd->mdfd_segno = 0; : mdfd->mdfd_chain = NULL; : Assert(_mdnblocks(reln, forknum, mdfd) <= ((BlockNumber) RELSEG_SIZE)); : : return mdfd; : } 0.00 : 697a90: e9 da fe ff ff jmpq 69796f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:967 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:965 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:966 5.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:965 5.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:969 5.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:970 5.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:970 5.56 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:969 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d7f20 : : PG_RETURN_INT32(float4_cmp_internal(arg1, arg2)); : } : : static int : btfloat4fastcmp(Datum x, Datum y, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:965 11.11 : 6d7f20: 55 push %rbp 5.56 : 6d7f21: 48 89 e5 mov %rsp,%rbp 0.00 : 6d7f24: 53 push %rbx 0.00 : 6d7f25: 48 89 f3 mov %rsi,%rbx 0.00 : 6d7f28: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = DatumGetFloat4(x); 0.00 : 6d7f2c: e8 7f 5a 0a 00 callq 77d9b0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:966 11.11 : 6d7f31: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float4 arg2 = DatumGetFloat4(y); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:967 50.00 : 6d7f36: 48 89 df mov %rbx,%rdi 0.00 : 6d7f39: e8 72 5a 0a 00 callq 77d9b0 : : return float4_cmp_internal(arg1, arg2); 0.00 : 6d7f3e: 0f 28 c8 movaps %xmm0,%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:969 5.56 : 6d7f41: f3 0f 10 45 f4 movss -0xc(%rbp),%xmm0 : } 0.00 : 6d7f46: 48 83 c4 08 add $0x8,%rsp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:970 5.56 : 6d7f4a: 5b pop %rbx 5.56 : 6d7f4b: c9 leaveq : btfloat4fastcmp(Datum x, Datum y, SortSupport ssup) : { : float4 arg1 = DatumGetFloat4(x); : float4 arg2 = DatumGetFloat4(y); : : return float4_cmp_internal(arg1, arg2); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:969 5.56 : 6d7f4c: e9 5f ff ff ff jmpq 6d7eb0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 41.18 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:425 11.76 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:403 11.76 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:403 11.76 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:412 11.76 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:425 5.88 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:403 5.88 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:412 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c00f0 : : * storage, we might return the LSN of a later transaction that falls into : * the same group. : */ : XLogRecPtr : TransactionIdGetCommitLSN(TransactionId xid) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:403 11.76 : 4c00f0: 55 push %rbp 5.88 : 4c00f1: 48 89 e5 mov %rsp,%rbp 11.76 : 4c00f4: 48 83 ec 10 sub $0x10,%rsp : * Currently, all uses of this function are for xids that were just : * reported to be committed by TransactionLogFetch, so we expect that : * checking TransactionLogFetch's cache will usually succeed and avoid an : * extra trip to shared memory. : */ : if (TransactionIdEquals(xid, cachedFetchXid)) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:412 5.88 : 4c00f8: 3b 3d 7a 8c 6b 00 cmp 0x6b8c7a(%rip),%edi # b78d78 11.76 : 4c00fe: 74 28 je 4c0128 : return cachedCommitLSN; : : /* Special XIDs are always known committed */ : if (!TransactionIdIsNormal(xid)) 0.00 : 4c0100: 31 c0 xor %eax,%eax 0.00 : 4c0102: 83 ff 02 cmp $0x2,%edi 0.00 : 4c0105: 77 09 ja 4c0110 : * Get the transaction status. : */ : (void) TransactionIdGetStatus(xid, &result); : : return result; : } 0.00 : 4c0107: c9 leaveq 0.00 : 4c0108: c3 retq 0.00 : 4c0109: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return InvalidXLogRecPtr; : : /* : * Get the transaction status. : */ : (void) TransactionIdGetStatus(xid, &result); 0.00 : 4c0110: 48 8d 75 f8 lea -0x8(%rbp),%rsi 0.00 : 4c0114: e8 07 fe ff ff callq 4bff20 : : return result; 0.00 : 4c0119: 48 8b 45 f8 mov -0x8(%rbp),%rax : } 0.00 : 4c011d: c9 leaveq 0.00 : 4c011e: 66 90 xchg %ax,%ax 0.00 : 4c0120: c3 retq 0.00 : 4c0121: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * reported to be committed by TransactionLogFetch, so we expect that : * checking TransactionLogFetch's cache will usually succeed and avoid an : * extra trip to shared memory. : */ : if (TransactionIdEquals(xid, cachedFetchXid)) : return cachedCommitLSN; 0.00 : 4c0128: 48 8b 05 51 8c 6b 00 mov 0x6b8c51(%rip),%rax # b78d80 : * Get the transaction status. : */ : (void) TransactionIdGetStatus(xid, &result); : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:425 52.94 : 4c012f: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 64.71 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2717 11.76 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2717 11.76 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2878 5.88 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2735 5.88 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2878 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4b50 : : * NOTE: this differs from XLogWrite mainly in that the WALWriteLock is not : * already held, and we try to avoid acquiring it if possible. : */ : void : XLogFlush(XLogRecPtr record) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2717 11.76 : 4d4b50: 55 push %rbp 64.71 : 4d4b51: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4b54: 41 56 push %r14 0.00 : 4d4b56: 41 55 push %r13 0.00 : 4d4b58: 49 89 fd mov %rdi,%r13 0.00 : 4d4b5b: 41 54 push %r12 0.00 : 4d4b5d: 53 push %rbx 0.00 : 4d4b5e: 48 83 ec 10 sub $0x10,%rsp : * trying to flush the WAL, we should update minRecoveryPoint instead. We : * test XLogInsertAllowed(), not InRecovery, because we need checkpointer : * to act this way too, and because when it tries to write the : * end-of-recovery checkpoint, it should indeed flush. : */ : if (!XLogInsertAllowed()) 0.00 : 4d4b62: e8 a9 89 ff ff callq 4cd510 0.00 : 4d4b67: 84 c0 test %al,%al 0.00 : 4d4b69: 0f 84 c1 01 00 00 je 4d4d30 : UpdateMinRecoveryPoint(record, false); : return; : } : : /* Quick exit if already known flushed */ : if (record <= LogwrtResult.Flush) 0.00 : 4d4b6f: 4c 3b 2d 42 46 6a 00 cmp 0x6a4642(%rip),%r13 # b791b8 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2735 5.88 : 4d4b76: 0f 86 9d 01 00 00 jbe 4d4d19 : (uint32) (record >> 32), (uint32) record, : (uint32) (LogwrtResult.Write >> 32), (uint32) LogwrtResult.Write, : (uint32) (LogwrtResult.Flush >> 32), (uint32) LogwrtResult.Flush); : #endif : : START_CRIT_SECTION(); 0.00 : 4d4b7c: 8b 05 1a 55 6e 00 mov 0x6e551a(%rip),%eax # bba09c 0.00 : 4d4b82: 4c 89 eb mov %r13,%rbx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d4b85: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 4d4b8b: 83 c0 01 add $0x1,%eax 0.00 : 4d4b8e: 89 05 08 55 6e 00 mov %eax,0x6e5508(%rip) # bba09c 0.00 : 4d4b94: eb 7a jmp 4d4c10 0.00 : 4d4b96: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d4b9d: 00 00 00 : { : XLogRecPtr insertpos; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); : if (WriteRqstPtr < XLogCtl->LogwrtRqst.Write) 0.00 : 4d4ba0: 48 8b 05 f1 45 6a 00 mov 0x6a45f1(%rip),%rax # b79198 : WriteRqstPtr = XLogCtl->LogwrtRqst.Write; : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d4ba7: 48 8b 90 28 01 00 00 mov 0x128(%rax),%rdx : { : XLogRecPtr insertpos; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); : if (WriteRqstPtr < XLogCtl->LogwrtRqst.Write) 0.00 : 4d4bae: 48 8b 88 d8 00 00 00 mov 0xd8(%rax),%rcx : WriteRqstPtr = XLogCtl->LogwrtRqst.Write; : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d4bb5: 48 89 15 f4 45 6a 00 mov %rdx,0x6a45f4(%rip) # b791b0 0.00 : 4d4bbc: 48 8b 80 30 01 00 00 mov 0x130(%rax),%rax 0.00 : 4d4bc3: 48 89 05 ee 45 6a 00 mov %rax,0x6a45ee(%rip) # b791b8 : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d4bca: 48 8b 05 c7 45 6a 00 mov 0x6a45c7(%rip),%rax # b79198 0.00 : 4d4bd1: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : : /* done already? */ : if (record <= LogwrtResult.Flush) 0.00 : 4d4bd8: 4c 3b 2d d9 45 6a 00 cmp 0x6a45d9(%rip),%r13 # b791b8 0.00 : 4d4bdf: 0f 86 fb 00 00 00 jbe 4d4ce0 : break; 0.00 : 4d4be5: 48 39 cb cmp %rcx,%rbx 0.00 : 4d4be8: 48 0f 42 d9 cmovb %rcx,%rbx : : /* : * Before actually performing the write, wait for all in-flight : * insertions to the pages we're about to write to finish. : */ : insertpos = WaitXLogInsertionsToFinish(WriteRqstPtr); 0.00 : 4d4bec: 48 89 df mov %rbx,%rdi 0.00 : 4d4bef: e8 1c f3 ff ff callq 4d3f10 : * until it's released, and recheck if we still need to do the flush : * or if the backend that held the lock did it for us already. This : * helps to maintain a good rate of group committing when the system : * is bottlenecked by the speed of fsyncing. : */ : if (!LWLockAcquireOrWait(WALWriteLock, LW_EXCLUSIVE)) 0.00 : 4d4bf4: 48 8b 3d 05 8e 6a 00 mov 0x6a8e05(%rip),%rdi # b7da00 0.00 : 4d4bfb: 31 f6 xor %esi,%esi : : /* : * Before actually performing the write, wait for all in-flight : * insertions to the pages we're about to write to finish. : */ : insertpos = WaitXLogInsertionsToFinish(WriteRqstPtr); 0.00 : 4d4bfd: 49 89 c4 mov %rax,%r12 : * until it's released, and recheck if we still need to do the flush : * or if the backend that held the lock did it for us already. This : * helps to maintain a good rate of group committing when the system : * is bottlenecked by the speed of fsyncing. : */ : if (!LWLockAcquireOrWait(WALWriteLock, LW_EXCLUSIVE)) 0.00 : 4d4c00: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d4c07: e8 64 ad 1b 00 callq 68f970 0.00 : 4d4c0c: 84 c0 test %al,%al 0.00 : 4d4c0e: 75 40 jne 4d4c50 : for (;;) : { : XLogRecPtr insertpos; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4c10: 48 8b 15 81 45 6a 00 mov 0x6a4581(%rip),%rdx # b79198 0.00 : 4d4c17: 44 89 f0 mov %r14d,%eax 0.00 : 4d4c1a: 48 81 c2 08 06 00 00 add $0x608,%rdx 0.00 : 4d4c21: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d4c24: 84 c0 test %al,%al 0.00 : 4d4c26: 0f 84 74 ff ff ff je 4d4ba0 0.00 : 4d4c2c: 48 8b 3d 65 45 6a 00 mov 0x6a4565(%rip),%rdi # b79198 0.00 : 4d4c33: ba d0 0a 00 00 mov $0xad0,%edx 0.00 : 4d4c38: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d4c3d: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d4c44: e8 f7 b3 1b 00 callq 690040 0.00 : 4d4c49: e9 52 ff ff ff jmpq 4d4ba0 0.00 : 4d4c4e: 66 90 xchg %ax,%ax : */ : continue; : } : : /* Got the lock; recheck whether request is satisfied */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d4c50: 48 8b 05 41 45 6a 00 mov 0x6a4541(%rip),%rax # b79198 0.00 : 4d4c57: 48 8b 90 28 01 00 00 mov 0x128(%rax),%rdx 0.00 : 4d4c5e: 48 89 15 4b 45 6a 00 mov %rdx,0x6a454b(%rip) # b791b0 0.00 : 4d4c65: 48 8b 80 30 01 00 00 mov 0x130(%rax),%rax : if (record <= LogwrtResult.Flush) 0.00 : 4d4c6c: 49 39 c5 cmp %rax,%r13 : */ : continue; : } : : /* Got the lock; recheck whether request is satisfied */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d4c6f: 48 89 05 42 45 6a 00 mov %rax,0x6a4542(%rip) # b791b8 : if (record <= LogwrtResult.Flush) 0.00 : 4d4c76: 76 55 jbe 4d4ccd : * at the risk of increasing transaction latency. : * : * We do not sleep if enableFsync is not turned on, nor if there are : * fewer than CommitSiblings other backends with active transactions. : */ : if (CommitDelay > 0 && enableFsync && 0.00 : 4d4c78: 8b 05 e2 44 6a 00 mov 0x6a44e2(%rip),%eax # b79160 0.00 : 4d4c7e: 85 c0 test %eax,%eax 0.00 : 4d4c80: 7e 36 jle 4d4cb8 0.00 : 4d4c82: 80 3d 8b 3e 69 00 00 cmpb $0x0,0x693e8b(%rip) # b68b14 0.00 : 4d4c89: 74 2d je 4d4cb8 0.00 : 4d4c8b: 8b 3d bf 31 69 00 mov 0x6931bf(%rip),%edi # b67e50 0.00 : 4d4c91: e8 ea a8 1a 00 callq 67f580 0.00 : 4d4c96: 84 c0 test %al,%al 0.00 : 4d4c98: 74 1e je 4d4cb8 : MinimumActiveBackends(CommitSiblings)) : { : pg_usleep(CommitDelay); 0.00 : 4d4c9a: 48 63 3d bf 44 6a 00 movslq 0x6a44bf(%rip),%rdi # b79160 0.00 : 4d4ca1: e8 aa 7a 2d 00 callq 7ac750 : * the insertions up to insertpos have already finished, because : * that's what the earlier WaitXLogInsertionsToFinish() returned. : * We're only calling it again to allow insertpos to be moved : * further forward, not to actually wait for anyone. : */ : insertpos = WaitXLogInsertionsToFinish(insertpos); 0.00 : 4d4ca6: 4c 89 e7 mov %r12,%rdi 0.00 : 4d4ca9: e8 62 f2 ff ff callq 4d3f10 0.00 : 4d4cae: 49 89 c4 mov %rax,%r12 0.00 : 4d4cb1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : : /* try to write/flush later additions to XLOG as well */ : WriteRqst.Write = insertpos; 0.00 : 4d4cb8: 4c 89 65 d0 mov %r12,-0x30(%rbp) : WriteRqst.Flush = insertpos; 0.00 : 4d4cbc: 4c 89 65 d8 mov %r12,-0x28(%rbp) : : XLogWrite(WriteRqst, false); 0.00 : 4d4cc0: 31 d2 xor %edx,%edx 0.00 : 4d4cc2: 4c 89 e7 mov %r12,%rdi 0.00 : 4d4cc5: 4c 89 e6 mov %r12,%rsi 0.00 : 4d4cc8: e8 93 f3 ff ff callq 4d4060 : : LWLockRelease(WALWriteLock); 0.00 : 4d4ccd: 48 8b 3d 2c 8d 6a 00 mov 0x6a8d2c(%rip),%rdi # b7da00 0.00 : 4d4cd4: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d4cdb: e8 c0 a6 1b 00 callq 68f3a0 : /* done */ : break; : } : : END_CRIT_SECTION(); 0.00 : 4d4ce0: 8b 05 b6 53 6e 00 mov 0x6e53b6(%rip),%eax # bba09c 0.00 : 4d4ce6: 83 e8 01 sub $0x1,%eax : : /* wake up walsenders now that we've released heavily contended locks */ : WalSndWakeupProcessRequests(); 0.00 : 4d4ce9: 80 3d d9 80 6a 00 00 cmpb $0x0,0x6a80d9(%rip) # b7cdc9 : LWLockRelease(WALWriteLock); : /* done */ : break; : } : : END_CRIT_SECTION(); 0.00 : 4d4cf0: 89 05 a6 53 6e 00 mov %eax,0x6e53a6(%rip) # bba09c : : /* wake up walsenders now that we've released heavily contended locks */ : WalSndWakeupProcessRequests(); 0.00 : 4d4cf6: 74 18 je 4d4d10 0.00 : 4d4cf8: 44 8b 35 c5 80 6a 00 mov 0x6a80c5(%rip),%r14d # b7cdc4 0.00 : 4d4cff: c6 05 c3 80 6a 00 00 movb $0x0,0x6a80c3(%rip) # b7cdc9 0.00 : 4d4d06: 45 85 f6 test %r14d,%r14d 0.00 : 4d4d09: 7e 05 jle 4d4d10 0.00 : 4d4d0b: e8 d0 bd 18 00 callq 660ae0 : * Note that for calls from xact.c, the ERROR will be promoted to PANIC : * since xact.c calls this routine inside a critical section. However, : * calls from bufmgr.c are not within critical sections and so we will not : * force a restart for a bad LSN on a data page. : */ : if (LogwrtResult.Flush < record) 0.00 : 4d4d10: 4c 3b 2d a1 44 6a 00 cmp 0x6a44a1(%rip),%r13 # b791b8 0.00 : 4d4d17: 77 2d ja 4d4d46 : elog(ERROR, : "xlog flush request %X/%X is not satisfied --- flushed only to %X/%X", : (uint32) (record >> 32), (uint32) record, : (uint32) (LogwrtResult.Flush >> 32), (uint32) LogwrtResult.Flush); : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2878 5.88 : 4d4d19: 48 83 c4 10 add $0x10,%rsp 0.00 : 4d4d1d: 5b pop %rbx 11.76 : 4d4d1e: 41 5c pop %r12 0.00 : 4d4d20: 41 5d pop %r13 0.00 : 4d4d22: 41 5e pop %r14 0.00 : 4d4d24: c9 leaveq 0.00 : 4d4d25: c3 retq 0.00 : 4d4d26: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d4d2d: 00 00 00 0.00 : 4d4d30: 48 83 c4 10 add $0x10,%rsp : * to act this way too, and because when it tries to write the : * end-of-recovery checkpoint, it should indeed flush. : */ : if (!XLogInsertAllowed()) : { : UpdateMinRecoveryPoint(record, false); 0.00 : 4d4d34: 4c 89 ef mov %r13,%rdi 0.00 : 4d4d37: 31 f6 xor %esi,%esi : if (LogwrtResult.Flush < record) : elog(ERROR, : "xlog flush request %X/%X is not satisfied --- flushed only to %X/%X", : (uint32) (record >> 32), (uint32) record, : (uint32) (LogwrtResult.Flush >> 32), (uint32) LogwrtResult.Flush); : } 0.00 : 4d4d39: 5b pop %rbx 0.00 : 4d4d3a: 41 5c pop %r12 0.00 : 4d4d3c: 41 5d pop %r13 0.00 : 4d4d3e: 41 5e pop %r14 0.00 : 4d4d40: c9 leaveq : * to act this way too, and because when it tries to write the : * end-of-recovery checkpoint, it should indeed flush. : */ : if (!XLogInsertAllowed()) : { : UpdateMinRecoveryPoint(record, false); 0.00 : 4d4d41: e9 8a be ff ff jmpq 4d0bd0 : * since xact.c calls this routine inside a critical section. However, : * calls from bufmgr.c are not within critical sections and so we will not : * force a restart for a bad LSN on a data page. : */ : if (LogwrtResult.Flush < record) : elog(ERROR, 0.00 : 4d4d46: ba 45 d6 7b 00 mov $0x7bd645,%edx 0.00 : 4d4d4b: be 3d 0b 00 00 mov $0xb3d,%esi 0.00 : 4d4d50: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d4d55: e8 c6 66 2a 00 callq 77b420 0.00 : 4d4d5a: 4c 8b 05 57 44 6a 00 mov 0x6a4457(%rip),%r8 # b791b8 0.00 : 4d4d61: 4c 89 ea mov %r13,%rdx 0.00 : 4d4d64: 44 89 e9 mov %r13d,%ecx 0.00 : 4d4d67: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4d4d6b: be a0 b7 7b 00 mov $0x7bb7a0,%esi 0.00 : 4d4d70: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4d4d75: 31 c0 xor %eax,%eax 0.00 : 4d4d77: 45 89 c1 mov %r8d,%r9d 0.00 : 4d4d7a: 49 c1 e8 20 shr $0x20,%r8 0.00 : 4d4d7e: e8 ad 64 2a 00 callq 77b230 0.00 : 4d4d83: e8 48 47 f9 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1753 23.53 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1902 11.76 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1799 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1925 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1804 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1807 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1835 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1370 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1372 5.88 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1372 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006894f0 : : * the waking process and any new process to : * come along and request the lock.) : */ : bool : LockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock) : { 0.00 : 6894f0: 55 push %rbp 0.00 : 6894f1: 49 89 f9 mov %rdi,%r9 0.00 : 6894f4: 48 89 e5 mov %rsp,%rbp 0.00 : 6894f7: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 6894fb: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 6894ff: 41 89 d4 mov %edx,%r12d 0.00 : 689502: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 689506: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 68950a: 41 89 f6 mov %esi,%r14d 0.00 : 68950d: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 689511: 48 83 ec 70 sub $0x70,%rsp : LOCKMETHODID lockmethodid = locktag->locktag_lockmethodid; 0.00 : 689515: 0f b6 5f 0f movzbl 0xf(%rdi),%ebx : LOCK *lock; : PROCLOCK *proclock; : LWLock *partitionLock; : bool wakeupNeeded; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) 0.00 : 689519: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 68951c: 66 83 f8 01 cmp $0x1,%ax 0.00 : 689520: 0f 87 d7 03 00 00 ja 6898fd : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; 0.00 : 689526: 0f b7 c3 movzwl %bx,%eax : if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) 0.00 : 689529: 85 f6 test %esi,%esi : LWLock *partitionLock; : bool wakeupNeeded; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; 0.00 : 68952b: 48 8b 04 c5 e0 c9 8a mov 0x8ac9e0(,%rax,8),%rax 0.00 : 689532: 00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1753 23.53 : 689533: 48 89 45 98 mov %rax,-0x68(%rbp) : if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) 0.00 : 689537: 0f 8e db 00 00 00 jle 689618 0.00 : 68953d: 3b 30 cmp (%rax),%esi 0.00 : 68953f: 0f 8f d3 00 00 00 jg 689618 : : /* : * Find the LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 689545: 48 8b 07 mov (%rdi),%rax : #endif : : /* : * Find the LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ 0.00 : 689548: 48 8d 75 a0 lea -0x60(%rbp),%rsi : localtag.lock = *locktag; : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68954c: 31 c9 xor %ecx,%ecx 0.00 : 68954e: 31 d2 xor %edx,%edx : : /* : * Find the LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 689550: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 689554: 48 8b 47 08 mov 0x8(%rdi),%rax : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 689558: 48 8b 3d b1 43 4f 00 mov 0x4f43b1(%rip),%rdi # b7d910 0.00 : 68955f: 4c 89 4d 90 mov %r9,-0x70(%rbp) : /* : * Find the LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; : localtag.mode = lockmode; 0.00 : 689563: 44 89 75 b0 mov %r14d,-0x50(%rbp) : : /* : * Find the LOCALLOCK entry for this lock and lockmode : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; 0.00 : 689567: 48 89 45 a8 mov %rax,-0x58(%rbp) : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 68956b: e8 30 b1 0f 00 callq 7846a0 : HASH_FIND, NULL); : : /* : * let the caller print its own error message, too. Do not ereport(ERROR). : */ : if (!locallock || locallock->nLocks <= 0) 0.00 : 689570: 48 85 c0 test %rax,%rax : */ : MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ : localtag.lock = *locktag; : localtag.mode = lockmode; : : locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, 0.00 : 689573: 49 89 c7 mov %rax,%r15 : HASH_FIND, NULL); : : /* : * let the caller print its own error message, too. Do not ereport(ERROR). : */ : if (!locallock || locallock->nLocks <= 0) 0.00 : 689576: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 68957a: 0f 84 f0 02 00 00 je 689870 0.00 : 689580: 48 83 78 30 00 cmpq $0x0,0x30(%rax) 0.00 : 689585: 0f 8e e5 02 00 00 jle 689870 : : /* : * Decrease the count for the resource owner. : */ : { : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; 0.00 : 68958b: 4c 8b 68 48 mov 0x48(%rax),%r13 : if (sessionLock) : owner = NULL; : else : owner = CurrentResourceOwner; : : for (i = locallock->numLockOwners - 1; i >= 0; i--) 0.00 : 68958f: 8b 40 38 mov 0x38(%rax),%eax : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; : ResourceOwner owner; : int i; : : /* Identify owner for lock */ : if (sessionLock) 0.00 : 689592: 31 ff xor %edi,%edi 0.00 : 689594: 45 84 e4 test %r12b,%r12b 0.00 : 689597: 48 0f 44 3d 21 13 53 cmove 0x531321(%rip),%rdi # bba8c0 0.00 : 68959e: 00 : owner = NULL; : else : owner = CurrentResourceOwner; : : for (i = locallock->numLockOwners - 1; i >= 0; i--) 0.00 : 68959f: 89 c3 mov %eax,%ebx 0.00 : 6895a1: eb 1b jmp 6895be 0.00 : 6895a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : if (lockOwners[i].owner == owner) 0.00 : 6895a8: 48 63 c3 movslq %ebx,%rax 0.00 : 6895ab: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6895af: 4d 8d 64 05 00 lea 0x0(%r13,%rax,1),%r12 0.00 : 6895b4: 49 39 3c 24 cmp %rdi,(%r12) 0.00 : 6895b8: 0f 84 8a 00 00 00 je 689648 : if (sessionLock) : owner = NULL; : else : owner = CurrentResourceOwner; : : for (i = locallock->numLockOwners - 1; i >= 0; i--) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1799 11.76 : 6895be: 83 eb 01 sub $0x1,%ebx 0.00 : 6895c1: 79 e5 jns 6895a8 : } : } : if (i < 0) : { : /* don't release a lock belonging to another owner */ : elog(WARNING, "you don't own a lock of type %s", 0.00 : 6895c3: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 6895c8: be 1c 07 00 00 mov $0x71c,%esi 0.00 : 6895cd: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 6895d2: e8 49 1e 0f 00 callq 77b420 0.00 : 6895d7: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 6895db: 49 63 c6 movslq %r14d,%rax 0.00 : 6895de: be 30 c8 8a 00 mov $0x8ac830,%esi 0.00 : 6895e3: bf 13 00 00 00 mov $0x13,%edi 0.00 : 6895e8: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 6895ec: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 6895f0: 31 c0 xor %eax,%eax 0.00 : 6895f2: e8 39 1c 0f 00 callq 77b230 0.00 : 6895f7: 31 d2 xor %edx,%edx : : LWLockRelease(partitionLock); : : RemoveLocalLock(locallock); : return TRUE; : } 0.00 : 6895f9: 89 d0 mov %edx,%eax 0.00 : 6895fb: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 6895ff: 4c 8b 65 e0 mov -0x20(%rbp),%r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1925 5.88 : 689603: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 689607: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 68960b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 68960f: c9 leaveq 0.00 : 689610: c3 retq 0.00 : 689611: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); : lockMethodTable = LockMethods[lockmethodid]; : if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) : elog(ERROR, "unrecognized lock mode: %d", lockmode); 0.00 : 689618: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 68961d: be db 06 00 00 mov $0x6db,%esi 0.00 : 689622: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 689627: e8 f4 1d 0f 00 callq 77b420 0.00 : 68962c: 44 89 f2 mov %r14d,%edx 0.00 : 68962f: be 60 c6 8a 00 mov $0x8ac660,%esi 0.00 : 689634: bf 14 00 00 00 mov $0x14,%edi 0.00 : 689639: 31 c0 xor %eax,%eax 0.00 : 68963b: e8 f0 1b 0f 00 callq 77b230 0.00 : 689640: e8 8b fe dd ff callq 4694d0 0.00 : 689645: 0f 1f 00 nopl (%rax) : for (i = locallock->numLockOwners - 1; i >= 0; i--) : { : if (lockOwners[i].owner == owner) : { : Assert(lockOwners[i].nLocks > 0); : if (--lockOwners[i].nLocks == 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1804 5.88 : 689648: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 68964d: 48 83 e8 01 sub $0x1,%rax 0.00 : 689651: 48 85 c0 test %rax,%rax 0.00 : 689654: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 689659: 75 28 jne 689683 : { : if (owner != NULL) 0.00 : 68965b: 48 85 ff test %rdi,%rdi 0.00 : 68965e: 74 10 je 689670 : ResourceOwnerForgetLock(owner, locallock); 0.00 : 689660: 4c 89 fe mov %r15,%rsi 0.00 : 689663: 4c 89 4d 90 mov %r9,-0x70(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1807 5.88 : 689667: e8 04 12 11 00 callq 79a870 0.00 : 68966c: 4c 8b 4d 90 mov -0x70(%rbp),%r9 : /* compact out unused slot */ : locallock->numLockOwners--; 0.00 : 689670: 41 8b 47 38 mov 0x38(%r15),%eax 0.00 : 689674: 83 e8 01 sub $0x1,%eax : if (i < locallock->numLockOwners) 0.00 : 689677: 39 d8 cmp %ebx,%eax : if (--lockOwners[i].nLocks == 0) : { : if (owner != NULL) : ResourceOwnerForgetLock(owner, locallock); : /* compact out unused slot */ : locallock->numLockOwners--; 0.00 : 689679: 41 89 47 38 mov %eax,0x38(%r15) : if (i < locallock->numLockOwners) 0.00 : 68967d: 0f 8f fd 01 00 00 jg 689880 : : /* : * Decrease the total local count. If we're still holding the lock, we're : * done. : */ : locallock->nLocks--; 0.00 : 689683: 49 8b 47 30 mov 0x30(%r15),%rax : : if (locallock->nLocks > 0) 0.00 : 689687: ba 01 00 00 00 mov $0x1,%edx : : /* : * Decrease the total local count. If we're still holding the lock, we're : * done. : */ : locallock->nLocks--; 0.00 : 68968c: 48 83 e8 01 sub $0x1,%rax : : if (locallock->nLocks > 0) 0.00 : 689690: 48 85 c0 test %rax,%rax : : /* : * Decrease the total local count. If we're still holding the lock, we're : * done. : */ : locallock->nLocks--; 0.00 : 689693: 49 89 47 30 mov %rax,0x30(%r15) : : if (locallock->nLocks > 0) 0.00 : 689697: 0f 8f 5c ff ff ff jg 6895f9 : return TRUE; : : /* Attempt fast release of any lock eligible for the fast path. */ : if (EligibleForRelationFastPath(locktag, lockmode) && 0.00 : 68969d: 66 41 81 79 0e 00 01 cmpw $0x100,0xe(%r9) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1835 5.88 : 6896a4: 0f 85 fe 00 00 00 jne 6897a8 0.00 : 6896aa: 41 8b 01 mov (%r9),%eax 0.00 : 6896ad: 3b 05 f5 09 53 00 cmp 0x5309f5(%rip),%eax # bba0a8 0.00 : 6896b3: 0f 85 ef 00 00 00 jne 6897a8 0.00 : 6896b9: 85 c0 test %eax,%eax 0.00 : 6896bb: 0f 84 e7 00 00 00 je 6897a8 0.00 : 6896c1: 41 83 fe 03 cmp $0x3,%r14d 0.00 : 6896c5: 0f 8f dd 00 00 00 jg 6897a8 0.00 : 6896cb: 8b 3d 1f 42 4f 00 mov 0x4f421f(%rip),%edi # b7d8f0 0.00 : 6896d1: 85 ff test %edi,%edi 0.00 : 6896d3: 0f 8e cf 00 00 00 jle 6897a8 : : /* : * We might not find the lock here, even if we originally entered it : * here. Another backend may have moved it to the main table. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 6896d9: 48 8b 05 68 42 4f 00 mov 0x4f4268(%rip),%rax # b7d948 0.00 : 6896e0: 31 f6 xor %esi,%esi : FastPathUnGrantRelationLock(Oid relid, LOCKMODE lockmode) : { : uint32 f; : bool result = false; : : FastPathLocalUseCount = 0; 0.00 : 6896e2: 31 db xor %ebx,%ebx 0.00 : 6896e4: 45 31 e4 xor %r12d,%r12d : : /* : * We might not find the lock here, even if we originally entered it : * here. Another backend may have moved it to the main table. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); 0.00 : 6896e7: 48 8b b8 90 02 00 00 mov 0x290(%rax),%rdi 0.00 : 6896ee: 4c 89 4d 90 mov %r9,-0x70(%rbp) 0.00 : 6896f2: e8 f9 63 00 00 callq 68faf0 : released = FastPathUnGrantRelationLock(locktag->locktag_field2, 0.00 : 6896f7: 4c 8b 4d 90 mov -0x70(%rbp),%r9 : FastPathUnGrantRelationLock(Oid relid, LOCKMODE lockmode) : { : uint32 f; : bool result = false; : : FastPathLocalUseCount = 0; 0.00 : 6896fb: 41 8d 7e ff lea -0x1(%r14),%edi 0.00 : 6896ff: 31 d2 xor %edx,%edx 0.00 : 689701: 48 8b 35 40 42 4f 00 mov 0x4f4240(%rip),%rsi # b7d948 : { : if (MyProc->fpRelId[f] == relid : && FAST_PATH_CHECK_LOCKMODE(MyProc, f, lockmode)) : { : Assert(!result); : FAST_PATH_CLEAR_LOCKMODE(MyProc, f, lockmode); 0.00 : 689708: 41 bb 01 00 00 00 mov $0x1,%r11d : /* : * We might not find the lock here, even if we originally entered it : * here. Another backend may have moved it to the main table. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : released = FastPathUnGrantRelationLock(locktag->locktag_field2, 0.00 : 68970e: 45 8b 51 04 mov 0x4(%r9),%r10d : FastPathUnGrantRelationLock(Oid relid, LOCKMODE lockmode) : { : uint32 f; : bool result = false; : : FastPathLocalUseCount = 0; 0.00 : 689712: c7 05 d4 41 4f 00 00 movl $0x0,0x4f41d4(%rip) # b7d8f0 0.00 : 689719: 00 00 00 0.00 : 68971c: eb 29 jmp 689747 0.00 : 68971e: 66 90 xchg %ax,%ax : Assert(!result); : FAST_PATH_CLEAR_LOCKMODE(MyProc, f, lockmode); : result = true; : /* we continue iterating so as to update FastPathLocalUseCount */ : } : if (FAST_PATH_GET_BITS(MyProc, f) != 0) 0.00 : 689720: 48 8b 86 98 02 00 00 mov 0x298(%rsi),%rax 0.00 : 689727: 44 89 e1 mov %r12d,%ecx 0.00 : 68972a: 48 d3 e8 shr %cl,%rax 0.00 : 68972d: a8 07 test $0x7,%al 0.00 : 68972f: 74 07 je 689738 : ++FastPathLocalUseCount; 0.00 : 689731: 83 05 b8 41 4f 00 01 addl $0x1,0x4f41b8(%rip) # b7d8f0 : { : uint32 f; : bool result = false; : : FastPathLocalUseCount = 0; : for (f = 0; f < FP_LOCK_SLOTS_PER_BACKEND; f++) 0.00 : 689738: 83 c2 01 add $0x1,%edx 0.00 : 68973b: 41 83 c4 03 add $0x3,%r12d 0.00 : 68973f: 83 c7 03 add $0x3,%edi 0.00 : 689742: 83 fa 10 cmp $0x10,%edx 0.00 : 689745: 74 40 je 689787 : { : if (MyProc->fpRelId[f] == relid 0.00 : 689747: 89 d0 mov %edx,%eax 0.00 : 689749: 44 3b 94 86 a0 02 00 cmp 0x2a0(%rsi,%rax,4),%r10d 0.00 : 689750: 00 0.00 : 689751: 75 cd jne 689720 0.00 : 689753: 4c 8b 86 98 02 00 00 mov 0x298(%rsi),%r8 0.00 : 68975a: 89 f9 mov %edi,%ecx 0.00 : 68975c: 4c 89 c0 mov %r8,%rax 0.00 : 68975f: 48 d3 e8 shr %cl,%rax 0.00 : 689762: a8 01 test $0x1,%al 0.00 : 689764: 74 ba je 689720 : && FAST_PATH_CHECK_LOCKMODE(MyProc, f, lockmode)) : { : Assert(!result); : FAST_PATH_CLEAR_LOCKMODE(MyProc, f, lockmode); 0.00 : 689766: 4c 89 d8 mov %r11,%rax 0.00 : 689769: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 68976e: 48 d3 e0 shl %cl,%rax 0.00 : 689771: 48 f7 d0 not %rax 0.00 : 689774: 4c 21 c0 and %r8,%rax 0.00 : 689777: 48 89 86 98 02 00 00 mov %rax,0x298(%rsi) 0.00 : 68977e: 48 8b 35 c3 41 4f 00 mov 0x4f41c3(%rip),%rsi # b7d948 0.00 : 689785: eb 99 jmp 689720 : * here. Another backend may have moved it to the main table. : */ : LWLockAcquire(MyProc->backendLock, LW_EXCLUSIVE); : released = FastPathUnGrantRelationLock(locktag->locktag_field2, : lockmode); : LWLockRelease(MyProc->backendLock); 0.00 : 689787: 48 8b be 90 02 00 00 mov 0x290(%rsi),%rdi 0.00 : 68978e: 4c 89 4d 90 mov %r9,-0x70(%rbp) 0.00 : 689792: e8 09 5c 00 00 callq 68f3a0 : if (released) 0.00 : 689797: 84 db test %bl,%bl 0.00 : 689799: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 68979d: 0f 85 b8 00 00 00 jne 68985b 0.00 : 6897a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : /* : * Otherwise we've got to mess with the shared lock table. : */ : partitionLock = LockHashPartitionLock(locallock->hashcode); 0.00 : 6897a8: 41 8b 47 28 mov 0x28(%r15),%eax : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); 0.00 : 6897ac: 31 f6 xor %esi,%esi 0.00 : 6897ae: 4c 89 4d 90 mov %r9,-0x70(%rbp) : } : : /* : * Otherwise we've got to mess with the shared lock table. : */ : partitionLock = LockHashPartitionLock(locallock->hashcode); 0.00 : 6897b2: 83 e0 0f and $0xf,%eax 0.00 : 6897b5: 4c 8d 60 26 lea 0x26(%rax),%r12 0.00 : 6897b9: 49 c1 e4 05 shl $0x5,%r12 0.00 : 6897bd: 4c 03 25 3c 42 4f 00 add 0x4f423c(%rip),%r12 # b7da00 : : LWLockAcquire(partitionLock, LW_EXCLUSIVE); 0.00 : 6897c4: 4c 89 e7 mov %r12,%rdi 0.00 : 6897c7: e8 24 63 00 00 callq 68faf0 : * removed while we were holding a lock on them. But it's possible that : * the lock was taken fast-path and has since been moved to the main hash : * table by another backend, in which case we will need to look up the : * objects here. We assume the lock field is NULL if so. : */ : lock = locallock->lock; 0.00 : 6897cc: 49 8b 5f 18 mov 0x18(%r15),%rbx : if (!lock) 0.00 : 6897d0: 4c 8b 4d 90 mov -0x70(%rbp),%r9 0.00 : 6897d4: 48 85 db test %rbx,%rbx 0.00 : 6897d7: 0f 84 4d 01 00 00 je 68992a : NULL); : if (!locallock->proclock) : elog(ERROR, "failed to re-find shared proclock object"); : } : LOCK_PRINT("LockRelease: found", lock, lockmode); : proclock = locallock->proclock; 0.00 : 6897dd: 49 8b 77 20 mov 0x20(%r15),%rsi : : /* : * Double-check that we are actually holding a lock of the type we want to : * release. : */ : if (!(proclock->holdMask & LOCKBIT_ON(lockmode))) 0.00 : 6897e1: 44 89 f1 mov %r14d,%ecx 0.00 : 6897e4: 8b 46 10 mov 0x10(%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1902 23.53 : 6897e7: d3 f8 sar %cl,%eax 0.00 : 6897e9: a8 01 test $0x1,%al 0.00 : 6897eb: 0f 84 c1 00 00 00 je 6898b2 : Assert(lock->nGranted <= lock->nRequested); : : /* : * fix the general lock stats : */ : lock->nRequested--; 0.00 : 6897f1: 83 6b 68 01 subl $0x1,0x68(%rbx) : lock->requested[lockmode]--; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1370 5.88 : 6897f5: 49 63 fe movslq %r14d,%rdi 0.00 : 6897f8: 83 6c bb 40 01 subl $0x1,0x40(%rbx,%rdi,4) : lock->nGranted--; : lock->granted[lockmode]--; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1372 5.88 : 6897fd: 48 8d 57 18 lea 0x18(%rdi),%rdx : /* : * fix the general lock stats : */ : lock->nRequested--; : lock->requested[lockmode]--; : lock->nGranted--; 0.00 : 689801: 83 ab 94 00 00 00 01 subl $0x1,0x94(%rbx) : lock->granted[lockmode]--; 5.88 : 689808: 8b 44 93 0c mov 0xc(%rbx,%rdx,4),%eax 0.00 : 68980c: 83 e8 01 sub $0x1,%eax : : if (lock->granted[lockmode] == 0) 0.00 : 68980f: 85 c0 test %eax,%eax : * fix the general lock stats : */ : lock->nRequested--; : lock->requested[lockmode]--; : lock->nGranted--; : lock->granted[lockmode]--; 0.00 : 689811: 89 44 93 0c mov %eax,0xc(%rbx,%rdx,4) : : if (lock->granted[lockmode] == 0) 0.00 : 689815: 0f 84 82 00 00 00 je 68989d 0.00 : 68981b: 41 b8 fe ff ff ff mov $0xfffffffe,%r8d 0.00 : 689821: 44 89 f1 mov %r14d,%ecx 0.00 : 689824: 41 d3 c0 rol %cl,%r8d : * skip wakeup if lock->granted[lockmode] was still positive. But that's : * not true anymore, because the remaining granted locks might belong to : * some waiter, who could now be awakened because he doesn't conflict with : * his own locks. : */ : if (lockMethodTable->conflictTab[lockmode] & lock->waitMask) 0.00 : 689827: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 68982b: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 68982f: 8b 04 b8 mov (%rax,%rdi,4),%eax 0.00 : 689832: 23 43 14 and 0x14(%rbx),%eax : /* : * Do the releasing. CleanUpLock will waken any now-wakable waiters. : */ : wakeupNeeded = UnGrantLock(lock, lockmode, proclock, lockMethodTable); : : CleanUpLock(lock, proclock, 0.00 : 689835: 48 89 df mov %rbx,%rdi : wakeupNeeded = true; : : /* : * Now fix the per-proclock state. : */ : proclock->holdMask &= LOCKBIT_OFF(lockmode); 0.00 : 689838: 44 21 46 10 and %r8d,0x10(%rsi) : /* : * Do the releasing. CleanUpLock will waken any now-wakable waiters. : */ : wakeupNeeded = UnGrantLock(lock, lockmode, proclock, lockMethodTable); : : CleanUpLock(lock, proclock, 0.00 : 68983c: 41 8b 4f 28 mov 0x28(%r15),%ecx 0.00 : 689840: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : 689844: 85 c0 test %eax,%eax 0.00 : 689846: 41 0f 95 c0 setne %r8b 0.00 : 68984a: 41 83 e0 01 and $0x1,%r8d 0.00 : 68984e: e8 6d f1 ff ff callq 6889c0 : lockMethodTable, locallock->hashcode, : wakeupNeeded); : : LWLockRelease(partitionLock); 0.00 : 689853: 4c 89 e7 mov %r12,%rdi 0.00 : 689856: e8 45 5b 00 00 callq 68f3a0 : : RemoveLocalLock(locallock); 0.00 : 68985b: 4c 89 ff mov %r15,%rdi 0.00 : 68985e: e8 dd f8 ff ff callq 689140 0.00 : 689863: ba 01 00 00 00 mov $0x1,%edx : return TRUE; : } 0.00 : 689868: e9 8c fd ff ff jmpq 6895f9 0.00 : 68986d: 0f 1f 00 nopl (%rax) : /* : * let the caller print its own error message, too. Do not ereport(ERROR). : */ : if (!locallock || locallock->nLocks <= 0) : { : elog(WARNING, "you don't own a lock of type %s", 0.00 : 689870: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 689875: be f5 06 00 00 mov $0x6f5,%esi 0.00 : 68987a: e9 4e fd ff ff jmpq 6895cd 0.00 : 68987f: 90 nop : if (owner != NULL) : ResourceOwnerForgetLock(owner, locallock); : /* compact out unused slot */ : locallock->numLockOwners--; : if (i < locallock->numLockOwners) : lockOwners[i] = lockOwners[locallock->numLockOwners]; 0.00 : 689880: 48 98 cltq 0.00 : 689882: 48 c1 e0 04 shl $0x4,%rax 0.00 : 689886: 4a 8b 14 28 mov (%rax,%r13,1),%rdx 0.00 : 68988a: 49 89 14 24 mov %rdx,(%r12) 0.00 : 68988e: 4a 8b 44 28 08 mov 0x8(%rax,%r13,1),%rax 0.00 : 689893: 49 89 44 24 08 mov %rax,0x8(%r12) 0.00 : 689898: e9 e6 fd ff ff jmpq 689683 : lock->granted[lockmode]--; : : if (lock->granted[lockmode] == 0) : { : /* change the conflict mask. No more of this lock type. */ : lock->grantMask &= LOCKBIT_OFF(lockmode); 0.00 : 68989d: 41 b8 fe ff ff ff mov $0xfffffffe,%r8d 0.00 : 6898a3: 44 89 f1 mov %r14d,%ecx 0.00 : 6898a6: 41 d3 c0 rol %cl,%r8d 0.00 : 6898a9: 44 21 43 10 and %r8d,0x10(%rbx) 0.00 : 6898ad: e9 75 ff ff ff jmpq 689827 : * release. : */ : if (!(proclock->holdMask & LOCKBIT_ON(lockmode))) : { : PROCLOCK_PRINT("LockRelease: WRONGTYPE", proclock); : LWLockRelease(partitionLock); 0.00 : 6898b2: 4c 89 e7 mov %r12,%rdi 0.00 : 6898b5: e8 e6 5a 00 00 callq 68f3a0 : elog(WARNING, "you don't own a lock of type %s", 0.00 : 6898ba: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 6898bf: be 73 07 00 00 mov $0x773,%esi 0.00 : 6898c4: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 6898c9: e8 52 1b 0f 00 callq 77b420 0.00 : 6898ce: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 6898d2: 49 63 c6 movslq %r14d,%rax 0.00 : 6898d5: be 30 c8 8a 00 mov $0x8ac830,%esi 0.00 : 6898da: bf 13 00 00 00 mov $0x13,%edi 0.00 : 6898df: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 6898e3: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 6898e7: 31 c0 xor %eax,%eax 0.00 : 6898e9: e8 42 19 0f 00 callq 77b230 : lockMethodTable->lockModeNames[lockmode]); : RemoveLocalLock(locallock); 0.00 : 6898ee: 4c 89 ff mov %r15,%rdi 0.00 : 6898f1: e8 4a f8 ff ff callq 689140 0.00 : 6898f6: 31 d2 xor %edx,%edx : : LWLockRelease(partitionLock); : : RemoveLocalLock(locallock); : return TRUE; : } 0.00 : 6898f8: e9 fc fc ff ff jmpq 6895f9 : PROCLOCK *proclock; : LWLock *partitionLock; : bool wakeupNeeded; : : if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) : elog(ERROR, "unrecognized lock method: %d", lockmethodid); 0.00 : 6898fd: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 689902: be d8 06 00 00 mov $0x6d8,%esi 0.00 : 689907: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68990c: e8 0f 1b 0f 00 callq 77b420 0.00 : 689911: 0f b7 d3 movzwl %bx,%edx 0.00 : 689914: be 29 c6 8a 00 mov $0x8ac629,%esi 0.00 : 689919: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68991e: 31 c0 xor %eax,%eax 0.00 : 689920: e8 0b 19 0f 00 callq 77b230 0.00 : 689925: e8 a6 fb dd ff callq 4694d0 : if (!lock) : { : PROCLOCKTAG proclocktag; : : Assert(EligibleForRelationFastPath(locktag, lockmode)); : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 68992a: 41 8b 57 28 mov 0x28(%r15),%edx 0.00 : 68992e: 48 8b 3d cb 3f 4f 00 mov 0x4f3fcb(%rip),%rdi # b7d900 0.00 : 689935: 45 31 c0 xor %r8d,%r8d 0.00 : 689938: 31 c9 xor %ecx,%ecx 0.00 : 68993a: 4c 89 ce mov %r9,%rsi 0.00 : 68993d: e8 0e a7 0f 00 callq 784050 : (const void *) locktag, : locallock->hashcode, : HASH_FIND, : NULL); : if (!lock) 0.00 : 689942: 48 85 c0 test %rax,%rax : if (!lock) : { : PROCLOCKTAG proclocktag; : : Assert(EligibleForRelationFastPath(locktag, lockmode)); : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 689945: 48 89 c3 mov %rax,%rbx : (const void *) locktag, : locallock->hashcode, : HASH_FIND, : NULL); : if (!lock) 0.00 : 689948: 74 5e je 6899a8 : elog(ERROR, "failed to re-find shared lock object"); : locallock->lock = lock; 0.00 : 68994a: 49 89 47 18 mov %rax,0x18(%r15) : : proclocktag.myLock = lock; 0.00 : 68994e: 48 89 45 c0 mov %rax,-0x40(%rbp) : proclocktag.myProc = MyProc; : locallock->proclock = (PROCLOCK *) hash_search(LockMethodProcLockHash, 0.00 : 689952: 48 8d 75 c0 lea -0x40(%rbp),%rsi : if (!lock) : elog(ERROR, "failed to re-find shared lock object"); : locallock->lock = lock; : : proclocktag.myLock = lock; : proclocktag.myProc = MyProc; 0.00 : 689956: 48 8b 05 eb 3f 4f 00 mov 0x4f3feb(%rip),%rax # b7d948 : locallock->proclock = (PROCLOCK *) hash_search(LockMethodProcLockHash, 0.00 : 68995d: 48 8b 3d a4 3f 4f 00 mov 0x4f3fa4(%rip),%rdi # b7d908 0.00 : 689964: 31 c9 xor %ecx,%ecx 0.00 : 689966: 31 d2 xor %edx,%edx : if (!lock) : elog(ERROR, "failed to re-find shared lock object"); : locallock->lock = lock; : : proclocktag.myLock = lock; : proclocktag.myProc = MyProc; 0.00 : 689968: 48 89 45 c8 mov %rax,-0x38(%rbp) : locallock->proclock = (PROCLOCK *) hash_search(LockMethodProcLockHash, 0.00 : 68996c: e8 2f ad 0f 00 callq 7846a0 : (void *) &proclocktag, : HASH_FIND, : NULL); : if (!locallock->proclock) 0.00 : 689971: 48 85 c0 test %rax,%rax : elog(ERROR, "failed to re-find shared lock object"); : locallock->lock = lock; : : proclocktag.myLock = lock; : proclocktag.myProc = MyProc; : locallock->proclock = (PROCLOCK *) hash_search(LockMethodProcLockHash, 0.00 : 689974: 49 89 47 20 mov %rax,0x20(%r15) : (void *) &proclocktag, : HASH_FIND, : NULL); : if (!locallock->proclock) 0.00 : 689978: 0f 85 5f fe ff ff jne 6897dd : elog(ERROR, "failed to re-find shared proclock object"); 0.00 : 68997e: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 689983: be 64 07 00 00 mov $0x764,%esi 0.00 : 689988: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68998d: e8 8e 1a 0f 00 callq 77b420 0.00 : 689992: be 78 c8 8a 00 mov $0x8ac878,%esi 0.00 : 689997: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68999c: 31 c0 xor %eax,%eax 0.00 : 68999e: e8 8d 18 0f 00 callq 77b230 0.00 : 6899a3: e8 28 fb dd ff callq 4694d0 : (const void *) locktag, : locallock->hashcode, : HASH_FIND, : NULL); : if (!lock) : elog(ERROR, "failed to re-find shared lock object"); 0.00 : 6899a8: ba b2 cb 8a 00 mov $0x8acbb2,%edx 0.00 : 6899ad: be 5a 07 00 00 mov $0x75a,%esi 0.00 : 6899b2: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 6899b7: e8 64 1a 0f 00 callq 77b420 0.00 : 6899bc: be 50 c8 8a 00 mov $0x8ac850,%esi 0.00 : 6899c1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6899c6: 31 c0 xor %eax,%eax 0.00 : 6899c8: e8 63 18 0f 00 callq 77b230 0.00 : 6899cd: e8 fe fa dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:66 11.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:66 11.76 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:72 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:66 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:66 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:66 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:66 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:66 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:67 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:72 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:72 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:67 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:67 5.88 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:67 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079ca30 : : } while (0); : : #define vecswap(a, b, n) if ((n) > 0) swapfunc((a), (b), (size_t)(n)) : static SortTuple * : med3_tuple(SortTuple *a, SortTuple *b, SortTuple *c, SortTupleComparator cmp_tuple, Tuplesortstate *state) : { 11.76 : 79ca30: 55 push %rbp 0.00 : 79ca31: 48 89 e5 mov %rsp,%rbp 0.00 : 79ca34: 48 89 5d d8 mov %rbx,-0x28(%rbp) 5.88 : 79ca38: 4c 89 65 e0 mov %r12,-0x20(%rbp) 5.88 : 79ca3c: 48 89 d3 mov %rdx,%rbx 5.88 : 79ca3f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 5.88 : 79ca43: 4c 89 75 f0 mov %r14,-0x10(%rbp) 5.88 : 79ca47: 49 89 f4 mov %rsi,%r12 0.00 : 79ca4a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 11.76 : 79ca4e: 49 89 ce mov %rcx,%r14 0.00 : 79ca51: 48 83 ec 30 sub $0x30,%rsp 0.00 : 79ca55: 49 89 ff mov %rdi,%r15 0.00 : 79ca58: 4d 89 c5 mov %r8,%r13 : return cmp_tuple(a, b, state) < 0 ? 0.00 : 79ca5b: 4c 89 c2 mov %r8,%rdx 0.00 : 79ca5e: ff d1 callq *%rcx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:67 5.88 : 79ca60: 85 c0 test %eax,%eax 0.00 : 79ca62: 78 2c js 79ca90 0.00 : 79ca64: 4c 89 ea mov %r13,%rdx 0.00 : 79ca67: 48 89 de mov %rbx,%rsi 0.00 : 79ca6a: 4c 89 e7 mov %r12,%rdi 0.00 : 79ca6d: 41 ff d6 callq *%r14 0.00 : 79ca70: 85 c0 test %eax,%eax 0.00 : 79ca72: 7e 44 jle 79cab8 0.00 : 79ca74: 4c 89 e3 mov %r12,%rbx : (cmp_tuple(b, c, state) < 0 ? b : : (cmp_tuple(a, c, state) < 0 ? c : a)) : : (cmp_tuple(b, c, state) > 0 ? b : : (cmp_tuple(a, c, state) < 0 ? a : c)); : } 0.00 : 79ca77: 48 89 d8 mov %rbx,%rax 0.00 : 79ca7a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 79ca7e: 48 8b 5d d8 mov -0x28(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:72 5.88 : 79ca82: 4c 8b 6d e8 mov -0x18(%rbp),%r13 5.88 : 79ca86: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 79ca8a: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 79ca8e: c9 leaveq 11.76 : 79ca8f: c3 retq : : #define vecswap(a, b, n) if ((n) > 0) swapfunc((a), (b), (size_t)(n)) : static SortTuple * : med3_tuple(SortTuple *a, SortTuple *b, SortTuple *c, SortTupleComparator cmp_tuple, Tuplesortstate *state) : { : return cmp_tuple(a, b, state) < 0 ? 0.00 : 79ca90: 4c 89 ea mov %r13,%rdx 0.00 : 79ca93: 48 89 de mov %rbx,%rsi 0.00 : 79ca96: 4c 89 e7 mov %r12,%rdi 0.00 : 79ca99: 41 ff d6 callq *%r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/sort/qsort_tuple.c:67 5.88 : 79ca9c: 85 c0 test %eax,%eax 0.00 : 79ca9e: 78 d4 js 79ca74 0.00 : 79caa0: 4c 89 ea mov %r13,%rdx 0.00 : 79caa3: 48 89 de mov %rbx,%rsi 0.00 : 79caa6: 4c 89 ff mov %r15,%rdi 0.00 : 79caa9: 41 ff d6 callq *%r14 0.00 : 79caac: 85 c0 test %eax,%eax 0.00 : 79caae: 78 c7 js 79ca77 5.88 : 79cab0: 4c 89 fb mov %r15,%rbx 0.00 : 79cab3: eb c2 jmp 79ca77 0.00 : 79cab5: 0f 1f 00 nopl (%rax) 5.88 : 79cab8: 4c 89 ea mov %r13,%rdx 0.00 : 79cabb: 48 89 de mov %rbx,%rsi 0.00 : 79cabe: 4c 89 ff mov %r15,%rdi 0.00 : 79cac1: 41 ff d6 callq *%r14 0.00 : 79cac4: 85 c0 test %eax,%eax 0.00 : 79cac6: 79 af jns 79ca77 0.00 : 79cac8: eb e6 jmp 79cab0 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 14.29 ??:0 14.29 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000008f50 : : : #endif /* HAVE_NETDEV_SELECT_QUEUE */ : netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb, : struct ixgbe_adapter *adapter, : struct ixgbe_ring *tx_ring) : { 0.00 : 8f50: 48 83 ec 48 sub $0x48,%rsp ??:0 4.76 : 8f54: 48 89 5c 24 18 mov %rbx,0x18(%rsp) 0.00 : 8f59: 48 89 6c 24 20 mov %rbp,0x20(%rsp) 0.00 : 8f5e: 48 89 fb mov %rdi,%rbx 0.00 : 8f61: 4c 89 6c 24 30 mov %r13,0x30(%rsp) 0.00 : 8f66: 4c 89 7c 24 40 mov %r15,0x40(%rsp) 0.00 : 8f6b: 49 89 d5 mov %rdx,%r13 0.00 : 8f6e: 4c 89 64 24 28 mov %r12,0x28(%rsp) 0.00 : 8f73: 4c 89 74 24 38 mov %r14,0x38(%rsp) 0.00 : 8f78: 49 89 f7 mov %rsi,%r15 : #ifdef MAX_SKB_FRAGS : #if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD : unsigned short f; : #endif : #endif : u16 count = TXD_USE_COUNT(skb_headlen(skb)); 0.00 : 8f7b: 8b 47 68 mov 0x68(%rdi),%eax : __be16 protocol = skb->protocol; 0.00 : 8f7e: 44 0f b7 77 7e movzwl 0x7e(%rdi),%r14d : #ifdef MAX_SKB_FRAGS : #if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD : unsigned short f; : #endif : #endif : u16 count = TXD_USE_COUNT(skb_headlen(skb)); 0.00 : 8f83: 05 ff 3f 00 00 add $0x3fff,%eax 0.00 : 8f88: 2b 47 6c sub 0x6c(%rdi),%eax : __be16 protocol = skb->protocol; : u8 hdr_len = 0; 0.00 : 8f8b: c6 44 24 0f 00 movb $0x0,0xf(%rsp) : count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size); : #else : count += skb_shinfo(skb)->nr_frags; : #endif : #endif : if (ixgbe_maybe_stop_tx(tx_ring, count + 3)) { 0.00 : 8f90: 8b 8f d0 00 00 00 mov 0xd0(%rdi),%ecx 0.00 : 8f96: 48 8b 97 d8 00 00 00 mov 0xd8(%rdi),%rdx : #ifdef MAX_SKB_FRAGS : #if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD : unsigned short f; : #endif : #endif : u16 count = TXD_USE_COUNT(skb_headlen(skb)); 0.00 : 8f9d: c1 e8 0e shr $0xe,%eax : count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size); : #else : count += skb_shinfo(skb)->nr_frags; : #endif : #endif : if (ixgbe_maybe_stop_tx(tx_ring, count + 3)) { 0.00 : 8fa0: 0f b7 14 0a movzwl (%rdx,%rcx,1),%edx : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; : u16 ntu = ring->next_to_use; : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 8fa4: 31 c9 xor %ecx,%ecx 0.00 : 8fa6: 8d 6c 10 03 lea 0x3(%rax,%rdx,1),%ebp : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 4.76 : 8faa: 41 0f b7 45 52 movzwl 0x52(%r13),%eax : u16 ntu = ring->next_to_use; 4.76 : 8faf: 41 0f b7 55 50 movzwl 0x50(%r13),%edx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 8fb4: 66 39 d0 cmp %dx,%ax 0.00 : 8fb7: 77 05 ja 8fbe 0.00 : 8fb9: 41 0f b7 4d 4c movzwl 0x4c(%r13),%ecx : return 0; : } : : static inline int ixgbe_maybe_stop_tx(struct ixgbe_ring *tx_ring, u16 size) : { : if (likely(ixgbe_desc_unused(tx_ring) >= size)) 0.00 : 8fbe: 83 e8 01 sub $0x1,%eax 0.00 : 8fc1: 66 29 d0 sub %dx,%ax 0.00 : 8fc4: 01 c8 add %ecx,%eax 0.00 : 8fc6: 66 39 c5 cmp %ax,%bp 0.00 : 8fc9: 0f 87 16 04 00 00 ja 93e5 : tx_ring->tx_stats.tx_busy++; : return NETDEV_TX_BUSY; : } : : /* record the location of the first descriptor for this packet */ : first = &tx_ring->tx_buffer_info[tx_ring->next_to_use]; 0.00 : 8fcf: 0f b7 c2 movzwl %dx,%eax 0.00 : 8fd2: 4c 8d 24 40 lea (%rax,%rax,2),%r12 0.00 : 8fd6: 49 c1 e4 04 shl $0x4,%r12 0.00 : 8fda: 4d 03 65 28 add 0x28(%r13),%r12 : first->skb = skb; 4.76 : 8fde: 49 89 5c 24 10 mov %rbx,0x10(%r12) : first->bytecount = skb->len; ??:0 14.29 : 8fe3: 8b 43 68 mov 0x68(%rbx),%eax : first->gso_segs = 1; 0.00 : 8fe6: 66 41 c7 44 24 1c 01 movw $0x1,0x1c(%r12) 0.00 : 8fed: 00 : } : : /* record the location of the first descriptor for this packet */ : first = &tx_ring->tx_buffer_info[tx_ring->next_to_use]; : first->skb = skb; : first->bytecount = skb->len; 0.00 : 8fee: 41 89 44 24 18 mov %eax,0x18(%r12) : first->gso_segs = 1; : : /* if we have a HW VLAN tag being added default to the HW one */ : if (vlan_tx_tag_present(skb)) { 0.00 : 8ff3: 0f b7 83 bc 00 00 00 movzwl 0xbc(%rbx),%eax 0.00 : 8ffa: f6 c4 10 test $0x10,%ah 0.00 : 8ffd: 75 71 jne 9070 : tx_flags |= vlan_tx_tag_get(skb) << IXGBE_TX_FLAGS_VLAN_SHIFT; : tx_flags |= IXGBE_TX_FLAGS_HW_VLAN; : /* else if it is a SW VLAN check the next protocol and store the tag */ : } else if (protocol == __constant_htons(ETH_P_8021Q)) { 0.00 : 8fff: 31 ed xor %ebp,%ebp 0.00 : 9001: 66 41 81 fe 81 00 cmp $0x81,%r14w 0.00 : 9007: 0f 84 e3 02 00 00 je 92f0 : #ifdef CONFIG_PCI_IOV : /* : * Use the l2switch_enable flag - would be false if the DMA : * Tx switch had been disabled. : */ : if (adapter->flags & IXGBE_FLAG_SRIOV_L2SWITCH_ENABLE) ??:0 4.76 : 900d: 41 8b 97 18 02 00 00 mov 0x218(%r15),%edx : tx_flags |= IXGBE_TX_FLAGS_TXSW; 0.00 : 9014: 89 e8 mov %ebp,%eax 0.00 : 9016: 0c 80 or $0x80,%al 0.00 : 9018: f7 c2 00 00 40 00 test $0x400000,%edx 0.00 : 901e: 0f 45 e8 cmovne %eax,%ebp : : #endif : #ifdef HAVE_TX_MQ : if ((adapter->flags & IXGBE_FLAG_DCB_ENABLED) && 0.00 : 9021: f6 c6 04 test $0x4,%dh 0.00 : 9024: 74 5d je 9083 0.00 : 9026: 40 f6 c5 06 test $0x6,%bpl 0.00 : 902a: 75 06 jne 9032 0.00 : 902c: 83 7b 78 07 cmpl $0x7,0x78(%rbx) 0.00 : 9030: 74 51 je 9083 : ((tx_flags & (IXGBE_TX_FLAGS_HW_VLAN | IXGBE_TX_FLAGS_SW_VLAN)) || : (skb->priority != TC_PRIO_CONTROL))) { : tx_flags &= ~IXGBE_TX_FLAGS_VLAN_PRIO_MASK; 0.00 : 9032: 89 e8 mov %ebp,%eax 0.00 : 9034: 25 ff ff ff 1f and $0x1fffffff,%eax : #ifdef IXGBE_FCOE : /* for FCoE with DCB, we force the priority to what : * was specified by the switch */ : if ((adapter->flags & IXGBE_FLAG_FCOE_ENABLED) && 0.00 : 9039: 81 e2 00 00 04 00 and $0x40000,%edx 0.00 : 903f: 0f 84 0b 02 00 00 je 9250 0.00 : 9045: 66 41 81 fe 89 06 cmp $0x689,%r14w 0.00 : 904b: 74 0c je 9059 0.00 : 904d: 66 41 81 fe 89 14 cmp $0x1489,%r14w 0.00 : 9053: 0f 85 f7 01 00 00 jne 9250 : ((protocol == __constant_htons(ETH_P_FCOE)) || : (protocol == __constant_htons(ETH_P_FIP)))) : tx_flags |= adapter->fcoe.up << 0.00 : 9059: 41 0f b6 af 10 7c 00 movzbl 0x7c10(%r15),%ebp 0.00 : 9060: 00 0.00 : 9061: c1 e5 1d shl $0x1d,%ebp 0.00 : 9064: 09 c5 or %eax,%ebp : (skb->priority != TC_PRIO_CONTROL))) { : tx_flags &= ~IXGBE_TX_FLAGS_VLAN_PRIO_MASK; : #ifdef IXGBE_FCOE : /* for FCoE with DCB, we force the priority to what : * was specified by the switch */ : if ((adapter->flags & IXGBE_FLAG_FCOE_ENABLED) && 0.00 : 9066: e9 ed 01 00 00 jmpq 9258 0.00 : 906b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : first->gso_segs = 1; : : /* if we have a HW VLAN tag being added default to the HW one */ : if (vlan_tx_tag_present(skb)) { : tx_flags |= vlan_tx_tag_get(skb) << IXGBE_TX_FLAGS_VLAN_SHIFT; : tx_flags |= IXGBE_TX_FLAGS_HW_VLAN; 0.00 : 9070: 89 c5 mov %eax,%ebp 0.00 : 9072: 81 e5 ff ef ff ff and $0xffffefff,%ebp 0.00 : 9078: c1 e5 10 shl $0x10,%ebp 0.00 : 907b: 83 cd 02 or $0x2,%ebp 0.00 : 907e: eb 8d jmp 900d : goto out_drop; : vhdr = (struct vlan_ethhdr *)skb->data; : vhdr->h_vlan_TCI = htons(tx_flags >> : IXGBE_TX_FLAGS_VLAN_SHIFT); : } else { : tx_flags |= IXGBE_TX_FLAGS_HW_VLAN; 0.00 : 9080: 83 cd 02 or $0x2,%ebp : first->tx_flags = tx_flags; : first->protocol = protocol; : : #ifdef IXGBE_FCOE : /* setup tx offload for FCoE */ : if ((protocol == __constant_htons(ETH_P_FCOE)) && 4.76 : 9083: 66 41 81 fe 89 06 cmp $0x689,%r14w : } : } : : #endif /* HAVE_TX_MQ */ : /* record initial flags and protocol */ : first->tx_flags = tx_flags; ??:0 14.29 : 9089: 41 89 6c 24 2c mov %ebp,0x2c(%r12) : first->protocol = protocol; 0.00 : 908e: 66 45 89 74 24 1e mov %r14w,0x1e(%r12) : : #ifdef IXGBE_FCOE : /* setup tx offload for FCoE */ : if ((protocol == __constant_htons(ETH_P_FCOE)) && 0.00 : 9094: 75 14 jne 90aa 0.00 : 9096: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 909a: f7 80 b0 00 00 00 00 testl $0x1200000,0xb0(%rax) 0.00 : 90a1: 00 20 01 0.00 : 90a4: 0f 85 06 03 00 00 jne 93b0 : : goto xmit_fcoe; : } : : #endif /* IXGBE_FCOE */ : tso = ixgbe_tso(tx_ring, first, &hdr_len); 0.00 : 90aa: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : 90af: 4c 89 e6 mov %r12,%rsi 0.00 : 90b2: 4c 89 ef mov %r13,%rdi 0.00 : 90b5: e8 56 b1 ff ff callq 4210 : if (tso < 0) ??:0 4.76 : 90ba: 83 f8 00 cmp $0x0,%eax 0.00 : 90bd: 0f 8c dd 01 00 00 jl 92a0 : goto out_drop; : else if (!tso) 0.00 : 90c3: 0f 84 17 02 00 00 je 92e0 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 4.76 : 90c9: 49 8b 45 30 mov 0x30(%r13),%rax : ixgbe_tx_csum(tx_ring, first); : : /* add the ATR filter if ATR is on */ : if (test_bit(__IXGBE_TX_FDIR_INIT_DONE, &tx_ring->state)) 0.00 : 90cd: a8 01 test $0x1,%al 0.00 : 90cf: 90 nop 0.00 : 90d0: 0f 84 1a 01 00 00 je 91f0 : } : : static void ixgbe_atr(struct ixgbe_ring *ring, : struct ixgbe_tx_buffer *first) : { : struct ixgbe_q_vector *q_vector = ring->q_vector; 4.76 : 90d6: 49 8b 7d 08 mov 0x8(%r13),%rdi : } hdr; : struct tcphdr *th; : __be16 vlan_id; : : /* if ring doesn't have a interrupt vector, cannot perform ATR */ : if (!q_vector) 0.00 : 90da: 48 85 ff test %rdi,%rdi 0.00 : 90dd: 0f 1f 00 nopl (%rax) 0.00 : 90e0: 0f 84 0a 01 00 00 je 91f0 : return; : : /* do nothing if sampling is disabled */ : if (!ring->atr_sample_rate) 0.00 : 90e6: 41 80 7d 54 00 cmpb $0x0,0x54(%r13) 0.00 : 90eb: 0f 84 ff 00 00 00 je 91f0 : return; : : ring->atr_count++; 0.00 : 90f1: 41 0f b6 45 55 movzbl 0x55(%r13),%eax 0.00 : 90f6: 8d 70 01 lea 0x1(%rax),%esi 0.00 : 90f9: 41 88 75 55 mov %sil,0x55(%r13) : : /* snag network header to get L4 type and address */ : hdr.network = skb_network_header(first->skb); 0.00 : 90fd: 49 8b 54 24 10 mov 0x10(%r12),%rdx : skb->transport_header += offset; : } : : static inline unsigned char *skb_network_header(const struct sk_buff *skb) : { : return skb->head + skb->network_header; 0.00 : 9102: 8b 82 c4 00 00 00 mov 0xc4(%rdx),%eax 4.76 : 9108: 48 8b 8a d8 00 00 00 mov 0xd8(%rdx),%rcx 0.00 : 910f: 4c 8d 0c 01 lea (%rcx,%rax,1),%r9 : : /* Currently only IPv4/IPv6 with TCP is supported */ : if ((first->protocol != __constant_htons(ETH_P_IPV6) || 0.00 : 9113: 41 0f b7 44 24 1e movzwl 0x1e(%r12),%eax 0.00 : 9119: 66 3d 86 dd cmp $0xdd86,%ax 0.00 : 911d: 0f 84 ad 02 00 00 je 93d0 0.00 : 9123: 66 83 f8 08 cmp $0x8,%ax 0.00 : 9127: 0f 85 c3 00 00 00 jne 91f0 4.76 : 912d: 41 80 79 09 06 cmpb $0x6,0x9(%r9) 4.76 : 9132: 0f 85 b8 00 00 00 jne 91f0 : #include : #include : : static inline struct tcphdr *tcp_hdr(const struct sk_buff *skb) : { : return (struct tcphdr *)skb_transport_header(skb); 0.00 : 9138: 8b 82 c0 00 00 00 mov 0xc0(%rdx),%eax : return; : : th = tcp_hdr(first->skb); : : /* skip this packet since it is invalid or the socket is closing */ : if (!th || th->fin) 0.00 : 913e: 48 01 c1 add %rax,%rcx 0.00 : 9141: 0f 84 a9 00 00 00 je 91f0 0.00 : 9147: 0f b6 41 0d movzbl 0xd(%rcx),%eax 0.00 : 914b: a8 01 test $0x1,%al 0.00 : 914d: 0f 85 9d 00 00 00 jne 91f0 : return; : : /* sample on all syn packets or once every atr sample count */ : if (!th->syn && (ring->atr_count < ring->atr_sample_rate)) 0.00 : 9153: a8 02 test $0x2,%al 0.00 : 9155: 75 0a jne 9161 0.00 : 9157: 41 3a 75 54 cmp 0x54(%r13),%sil 0.00 : 915b: 0f 82 8f 00 00 00 jb 91f0 : return; : : /* reset sample count */ : ring->atr_count = 0; 0.00 : 9161: 41 c6 45 55 00 movb $0x0,0x55(%r13) : : vlan_id = htons(first->tx_flags >> IXGBE_TX_FLAGS_VLAN_SHIFT); 0.00 : 9166: 41 8b 54 24 2c mov 0x2c(%r12),%edx : static void ixgbe_atr(struct ixgbe_ring *ring, : struct ixgbe_tx_buffer *first) : { : struct ixgbe_q_vector *q_vector = ring->q_vector; : union ixgbe_atr_hash_dword input = { .dword = 0 }; : union ixgbe_atr_hash_dword common = { .dword = 0 }; 0.00 : 916b: 45 31 c0 xor %r8d,%r8d : return; : : /* reset sample count */ : ring->atr_count = 0; : : vlan_id = htons(first->tx_flags >> IXGBE_TX_FLAGS_VLAN_SHIFT); 0.00 : 916e: 89 d0 mov %edx,%eax 0.00 : 9170: c1 e8 10 shr $0x10,%eax : * : * The input is broken into two sections, a non-compressed section : * containing vm_pool, vlan_id, and flow_type. The rest of the data : * is XORed together and stored in the compressed dword. : */ : input.formatted.vlan_id = vlan_id; 0.00 : 9173: 66 c1 c0 08 rol $0x8,%ax 0.00 : 9177: 89 c3 mov %eax,%ebx 0.00 : 9179: c1 e3 10 shl $0x10,%ebx : : /* : * since src port and flex bytes occupy the same word XOR them together : * and write the value to source port portion of compressed dword : */ : if (first->tx_flags & (IXGBE_TX_FLAGS_SW_VLAN | IXGBE_TX_FLAGS_HW_VLAN)) 0.00 : 917c: 83 e2 06 and $0x6,%edx 0.00 : 917f: 0f 84 d1 02 00 00 je 9456 : common.port.src ^= th->dest ^ __constant_htons(ETH_P_8021Q); 0.00 : 9185: 0f b7 41 02 movzwl 0x2(%rcx),%eax 0.00 : 9189: 41 0f b7 74 24 1e movzwl 0x1e(%r12),%esi 0.00 : 918f: 34 81 xor $0x81,%al 0.00 : 9191: 66 41 89 c0 mov %ax,%r8w : else : common.port.src ^= th->dest ^ first->protocol; : common.port.dst ^= th->source; 0.00 : 9195: 44 89 c0 mov %r8d,%eax 0.00 : 9198: 41 0f b7 d0 movzwl %r8w,%edx 0.00 : 919c: c1 e8 10 shr $0x10,%eax 0.00 : 919f: 66 33 01 xor (%rcx),%ax 0.00 : 91a2: c1 e0 10 shl $0x10,%eax 0.00 : 91a5: 09 c2 or %eax,%edx : : if (first->protocol == __constant_htons(ETH_P_IP)) { 0.00 : 91a7: 66 83 fe 08 cmp $0x8,%si 0.00 : 91ab: 0f 84 ba 02 00 00 je 946b : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV4; : common.ip ^= hdr.ipv4->saddr ^ hdr.ipv4->daddr; : } else { : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV6; : common.ip ^= hdr.ipv6->saddr.s6_addr32[0] ^ 0.00 : 91b1: 41 89 d0 mov %edx,%r8d 0.00 : 91b4: 45 33 41 08 xor 0x8(%r9),%r8d : : if (first->protocol == __constant_htons(ETH_P_IP)) { : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV4; : common.ip ^= hdr.ipv4->saddr ^ hdr.ipv4->daddr; : } else { : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV6; 0.00 : 91b8: b7 06 mov $0x6,%bh : common.ip ^= hdr.ipv6->saddr.s6_addr32[0] ^ 0.00 : 91ba: 45 33 41 0c xor 0xc(%r9),%r8d 0.00 : 91be: 45 33 41 10 xor 0x10(%r9),%r8d 0.00 : 91c2: 45 33 41 14 xor 0x14(%r9),%r8d 0.00 : 91c6: 45 33 41 18 xor 0x18(%r9),%r8d 0.00 : 91ca: 45 33 41 1c xor 0x1c(%r9),%r8d 0.00 : 91ce: 45 33 41 20 xor 0x20(%r9),%r8d 0.00 : 91d2: 45 33 41 24 xor 0x24(%r9),%r8d : hdr.ipv6->daddr.s6_addr32[2] ^ : hdr.ipv6->daddr.s6_addr32[3]; : } : : /* This assumes the Rx queue and Tx queue are bound to the same CPU */ : ixgbe_fdir_add_signature_filter_82599(&q_vector->adapter->hw, 0.00 : 91d6: 48 8b 3f mov (%rdi),%rdi 0.00 : 91d9: 41 0f b6 4d 4e movzbl 0x4e(%r13),%ecx 0.00 : 91de: 44 89 c2 mov %r8d,%edx 0.00 : 91e1: 89 de mov %ebx,%esi 0.00 : 91e3: 48 81 c7 80 0e 00 00 add $0xe80,%rdi 0.00 : 91ea: e8 00 00 00 00 callq 91ef 0.00 : 91ef: 90 nop : ixgbe_atr(tx_ring, first); : : #ifdef IXGBE_FCOE : xmit_fcoe: : #endif /* IXGBE_FCOE */ : ixgbe_tx_map(tx_ring, first, hdr_len); 4.76 : 91f0: 0f b6 54 24 0f movzbl 0xf(%rsp),%edx 0.00 : 91f5: 4c 89 e6 mov %r12,%rsi 0.00 : 91f8: 4c 89 ef mov %r13,%rdi 0.00 : 91fb: e8 30 b4 ff ff callq 4630 : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 0.00 : 9200: 41 0f b7 45 52 movzwl 0x52(%r13),%eax : u16 ntu = ring->next_to_use; 0.00 : 9205: 41 0f b7 55 50 movzwl 0x50(%r13),%edx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 920a: 31 c9 xor %ecx,%ecx 0.00 : 920c: 66 39 d0 cmp %dx,%ax 0.00 : 920f: 77 05 ja 9216 0.00 : 9211: 41 0f b7 4d 4c movzwl 0x4c(%r13),%ecx : return 0; : } : : static inline int ixgbe_maybe_stop_tx(struct ixgbe_ring *tx_ring, u16 size) : { : if (likely(ixgbe_desc_unused(tx_ring) >= size)) 4.76 : 9216: 83 e8 01 sub $0x1,%eax 0.00 : 9219: 66 29 d0 sub %dx,%ax 0.00 : 921c: 01 c8 add %ecx,%eax 0.00 : 921e: 66 83 f8 15 cmp $0x15,%ax 0.00 : 9222: 0f 86 22 01 00 00 jbe 934a : : return NETDEV_TX_OK; : : out_drop: : dev_kfree_skb_any(first->skb); : first->skb = NULL; 0.00 : 9228: 31 c0 xor %eax,%eax : : return NETDEV_TX_OK; : } 0.00 : 922a: 48 8b 5c 24 18 mov 0x18(%rsp),%rbx 4.76 : 922f: 48 8b 6c 24 20 mov 0x20(%rsp),%rbp 0.00 : 9234: 4c 8b 64 24 28 mov 0x28(%rsp),%r12 0.00 : 9239: 4c 8b 6c 24 30 mov 0x30(%rsp),%r13 0.00 : 923e: 4c 8b 74 24 38 mov 0x38(%rsp),%r14 0.00 : 9243: 4c 8b 7c 24 40 mov 0x40(%rsp),%r15 0.00 : 9248: 48 83 c4 48 add $0x48,%rsp 0.00 : 924c: c3 retq 0.00 : 924d: 0f 1f 00 nopl (%rax) : (protocol == __constant_htons(ETH_P_FIP)))) : tx_flags |= adapter->fcoe.up << : IXGBE_TX_FLAGS_VLAN_PRIO_SHIFT; : else : #endif /* IXGBE_FCOE */ : tx_flags |= skb->priority << 0.00 : 9250: 8b 6b 78 mov 0x78(%rbx),%ebp 0.00 : 9253: c1 e5 1d shl $0x1d,%ebp 0.00 : 9256: 09 c5 or %eax,%ebp : IXGBE_TX_FLAGS_VLAN_PRIO_SHIFT; : if (tx_flags & IXGBE_TX_FLAGS_SW_VLAN) { 0.00 : 9258: 40 f6 c5 04 test $0x4,%bpl 0.00 : 925c: 0f 84 1e fe ff ff je 9080 : */ : static inline int skb_header_cloned(const struct sk_buff *skb) : { : int dataref; : : if (!skb->cloned) 0.00 : 9262: f6 43 7c 02 testb $0x2,0x7c(%rbx) 0.00 : 9266: 74 58 je 92c0 : * : * Atomically reads the value of @v. : */ : static inline int atomic_read(const atomic_t *v) : { : return (*(volatile int *)&(v)->counter); 0.00 : 9268: 8b 83 d0 00 00 00 mov 0xd0(%rbx),%eax 0.00 : 926e: 48 03 83 d8 00 00 00 add 0xd8(%rbx),%rax 0.00 : 9275: 8b 40 28 mov 0x28(%rax),%eax : return 0; : : dataref = atomic_read(&skb_shinfo(skb)->dataref); : dataref = (dataref & SKB_DATAREF_MASK) - (dataref >> SKB_DATAREF_SHIFT); 0.00 : 9278: 0f b7 d0 movzwl %ax,%edx 0.00 : 927b: c1 f8 10 sar $0x10,%eax : struct vlan_ethhdr *vhdr; : if (skb_header_cloned(skb) && 0.00 : 927e: 29 c2 sub %eax,%edx 0.00 : 9280: 83 ea 01 sub $0x1,%edx 0.00 : 9283: 74 3b je 92c0 0.00 : 9285: 31 d2 xor %edx,%edx 0.00 : 9287: 31 f6 xor %esi,%esi 0.00 : 9289: b9 20 00 00 00 mov $0x20,%ecx 0.00 : 928e: 48 89 df mov %rbx,%rdi 0.00 : 9291: e8 00 00 00 00 callq 9296 0.00 : 9296: 85 c0 test %eax,%eax 0.00 : 9298: 74 26 je 92c0 0.00 : 929a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : ixgbe_maybe_stop_tx(tx_ring, DESC_NEEDED); : : return NETDEV_TX_OK; : : out_drop: : dev_kfree_skb_any(first->skb); 0.00 : 92a0: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 92a5: e8 00 00 00 00 callq 92aa : first->skb = NULL; 0.00 : 92aa: 49 c7 44 24 10 00 00 movq $0x0,0x10(%r12) 0.00 : 92b1: 00 00 0.00 : 92b3: 31 c0 xor %eax,%eax : : return NETDEV_TX_OK; : } 0.00 : 92b5: e9 70 ff ff ff jmpq 922a 0.00 : 92ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : struct vlan_ethhdr *vhdr; : if (skb_header_cloned(skb) && : pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) : goto out_drop; : vhdr = (struct vlan_ethhdr *)skb->data; : vhdr->h_vlan_TCI = htons(tx_flags >> 0.00 : 92c0: 89 e8 mov %ebp,%eax 0.00 : 92c2: 48 8b 93 e0 00 00 00 mov 0xe0(%rbx),%rdx 0.00 : 92c9: c1 e8 10 shr $0x10,%eax 0.00 : 92cc: 66 c1 c0 08 rol $0x8,%ax 0.00 : 92d0: 66 89 42 0e mov %ax,0xe(%rdx) 0.00 : 92d4: e9 aa fd ff ff jmpq 9083 0.00 : 92d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : #endif /* IXGBE_FCOE */ : tso = ixgbe_tso(tx_ring, first, &hdr_len); : if (tso < 0) : goto out_drop; : else if (!tso) : ixgbe_tx_csum(tx_ring, first); 0.00 : 92e0: 4c 89 e6 mov %r12,%rsi 0.00 : 92e3: 4c 89 ef mov %r13,%rdi 0.00 : 92e6: e8 65 b1 ff ff callq 4450 0.00 : 92eb: e9 d9 fd ff ff jmpq 90c9 : static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, : int len, void *buffer) : { : int hlen = skb_headlen(skb); : : if (hlen - offset >= len) 0.00 : 92f0: 8b 43 68 mov 0x68(%rbx),%eax 0.00 : 92f3: 2b 43 6c sub 0x6c(%rbx),%eax 0.00 : 92f6: 83 e8 0e sub $0xe,%eax 0.00 : 92f9: 83 f8 03 cmp $0x3,%eax 0.00 : 92fc: 7e 2a jle 9328 : tx_flags |= vlan_tx_tag_get(skb) << IXGBE_TX_FLAGS_VLAN_SHIFT; : tx_flags |= IXGBE_TX_FLAGS_HW_VLAN; : /* else if it is a SW VLAN check the next protocol and store the tag */ : } else if (protocol == __constant_htons(ETH_P_8021Q)) { : struct vlan_hdr *vhdr, _vhdr; : vhdr = skb_header_pointer(skb, ETH_HLEN, sizeof(_vhdr), &_vhdr); 0.00 : 92fe: 48 8b 83 e0 00 00 00 mov 0xe0(%rbx),%rax : if (!vhdr) 0.00 : 9305: 48 83 c0 0e add $0xe,%rax 0.00 : 9309: 74 95 je 92a0 : goto out_drop; : : protocol = vhdr->h_vlan_encapsulated_proto; 0.00 : 930b: 44 0f b7 70 02 movzwl 0x2(%rax),%r14d : tx_flags |= ntohs(vhdr->h_vlan_TCI) << 0.00 : 9310: 0f b7 00 movzwl (%rax),%eax : IXGBE_TX_FLAGS_VLAN_SHIFT; : tx_flags |= IXGBE_TX_FLAGS_SW_VLAN; 0.00 : 9313: 66 c1 c0 08 rol $0x8,%ax 0.00 : 9317: 89 c5 mov %eax,%ebp 0.00 : 9319: c1 e5 10 shl $0x10,%ebp 0.00 : 931c: 83 cd 04 or $0x4,%ebp 0.00 : 931f: e9 e9 fc ff ff jmpq 900d 0.00 : 9324: 0f 1f 40 00 nopl 0x0(%rax) : return skb->data + offset; : : if (skb_copy_bits(skb, offset, buffer, len) < 0) 0.00 : 9328: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 932d: 48 89 e2 mov %rsp,%rdx 0.00 : 9330: be 0e 00 00 00 mov $0xe,%esi 0.00 : 9335: 48 89 df mov %rbx,%rdi 0.00 : 9338: e8 00 00 00 00 callq 933d 0.00 : 933d: 85 c0 test %eax,%eax 0.00 : 933f: 0f 88 5b ff ff ff js 92a0 0.00 : 9345: 48 89 e0 mov %rsp,%rax 0.00 : 9348: eb c1 jmp 930b : input, common, ring->queue_index); : } : : static int __ixgbe_maybe_stop_tx(struct ixgbe_ring *tx_ring, u16 size) : { : netif_stop_subqueue(netdev_ring(tx_ring), ring_queue_index(tx_ring)); 0.00 : 934a: 41 0f b6 75 4e movzbl 0x4e(%r13),%esi 0.00 : 934f: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 9353: e8 78 fb ff ff callq 8ed0 : /* Herbert's original patch had: : * smp_mb__after_netif_stop_queue(); : * but since that doesn't exist yet, just open code it. */ : smp_mb(); 0.00 : 9358: 0f ae f0 mfence : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 0.00 : 935b: 41 0f b7 45 52 movzwl 0x52(%r13),%eax : u16 ntu = ring->next_to_use; 0.00 : 9360: 41 0f b7 55 50 movzwl 0x50(%r13),%edx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 9365: 31 c9 xor %ecx,%ecx 0.00 : 9367: 66 39 d0 cmp %dx,%ax 0.00 : 936a: 77 05 ja 9371 0.00 : 936c: 41 0f b7 4d 4c movzwl 0x4c(%r13),%ecx : : /* We need to check again in a case another CPU has just : * made room available. */ : if (likely(ixgbe_desc_unused(tx_ring) < size)) 0.00 : 9371: 83 e8 01 sub $0x1,%eax 0.00 : 9374: 66 29 d0 sub %dx,%ax 0.00 : 9377: 01 c8 add %ecx,%eax 0.00 : 9379: 66 83 f8 15 cmp $0x15,%ax 0.00 : 937d: 0f 86 a5 fe ff ff jbe 9228 : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 9383: 41 0f b6 55 4e movzbl 0x4e(%r13),%edx 0.00 : 9388: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 938c: 48 c1 e2 08 shl $0x8,%rdx 0.00 : 9390: 48 03 90 80 03 00 00 add 0x380(%rax),%rdx 0.00 : 9397: 48 8d 42 10 lea 0x10(%rdx),%rax 0.00 : 939b: f0 80 62 10 fe lock andb $0xfe,0x10(%rdx) : return -EBUSY; : : /* A reprieve! - use start_queue because it doesn't call schedule */ : netif_start_subqueue(netdev_ring(tx_ring), ring_queue_index(tx_ring)); : ++tx_ring->tx_stats.restart_queue; 0.00 : 93a0: 31 c0 xor %eax,%eax 0.00 : 93a2: 49 83 45 68 01 addq $0x1,0x68(%r13) 0.00 : 93a7: e9 7e fe ff ff jmpq 922a 0.00 : 93ac: 0f 1f 40 00 nopl 0x0(%rax) : : #ifdef IXGBE_FCOE : /* setup tx offload for FCoE */ : if ((protocol == __constant_htons(ETH_P_FCOE)) && : (tx_ring->netdev->features & (NETIF_F_FSO | NETIF_F_FCOE_CRC))) { : tso = ixgbe_fso(tx_ring, first, &hdr_len); 0.00 : 93b0: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : 93b5: 4c 89 e6 mov %r12,%rsi 0.00 : 93b8: 4c 89 ef mov %r13,%rdi 0.00 : 93bb: e8 00 00 00 00 callq 93c0 : if (tso < 0) 0.00 : 93c0: 85 c0 test %eax,%eax 0.00 : 93c2: 0f 89 28 fe ff ff jns 91f0 0.00 : 93c8: e9 d3 fe ff ff jmpq 92a0 0.00 : 93cd: 0f 1f 00 nopl (%rax) : : /* snag network header to get L4 type and address */ : hdr.network = skb_network_header(first->skb); : : /* Currently only IPv4/IPv6 with TCP is supported */ : if ((first->protocol != __constant_htons(ETH_P_IPV6) || 0.00 : 93d0: 41 80 79 06 06 cmpb $0x6,0x6(%r9) 0.00 : 93d5: 0f 1f 00 nopl (%rax) 0.00 : 93d8: 0f 85 12 fe ff ff jne 91f0 0.00 : 93de: 66 90 xchg %ax,%ax 0.00 : 93e0: e9 53 fd ff ff jmpq 9138 : input, common, ring->queue_index); : } : : static int __ixgbe_maybe_stop_tx(struct ixgbe_ring *tx_ring, u16 size) : { : netif_stop_subqueue(netdev_ring(tx_ring), ring_queue_index(tx_ring)); 0.00 : 93e5: 41 0f b6 75 4e movzbl 0x4e(%r13),%esi 0.00 : 93ea: 49 8b 7d 10 mov 0x10(%r13),%rdi 0.00 : 93ee: 66 90 xchg %ax,%ax 0.00 : 93f0: e8 db fa ff ff callq 8ed0 : /* Herbert's original patch had: : * smp_mb__after_netif_stop_queue(); : * but since that doesn't exist yet, just open code it. */ : smp_mb(); 0.00 : 93f5: 0f ae f0 mfence : } : : /* ixgbe_desc_unused - calculate if we have unused descriptors */ : static inline u16 ixgbe_desc_unused(struct ixgbe_ring *ring) : { : u16 ntc = ring->next_to_clean; 0.00 : 93f8: 41 0f b7 45 52 movzwl 0x52(%r13),%eax : u16 ntu = ring->next_to_use; 0.00 : 93fd: 41 0f b7 55 50 movzwl 0x50(%r13),%edx : : return ((ntc > ntu) ? 0 : ring->count) + ntc - ntu - 1; 0.00 : 9402: 31 c9 xor %ecx,%ecx 0.00 : 9404: 66 39 d0 cmp %dx,%ax 0.00 : 9407: 77 05 ja 940e 0.00 : 9409: 41 0f b7 4d 4c movzwl 0x4c(%r13),%ecx : : /* We need to check again in a case another CPU has just : * made room available. */ : if (likely(ixgbe_desc_unused(tx_ring) < size)) 0.00 : 940e: 83 e8 01 sub $0x1,%eax 0.00 : 9411: 66 29 d0 sub %dx,%ax 0.00 : 9414: 01 c8 add %ecx,%eax 0.00 : 9416: 66 39 c5 cmp %ax,%bp 0.00 : 9419: 77 2c ja 9447 0.00 : 941b: 41 0f b6 55 4e movzbl 0x4e(%r13),%edx 0.00 : 9420: 49 8b 45 10 mov 0x10(%r13),%rax 0.00 : 9424: 48 c1 e2 08 shl $0x8,%rdx 0.00 : 9428: 48 03 90 80 03 00 00 add 0x380(%rax),%rdx 0.00 : 942f: 48 8d 42 10 lea 0x10(%rdx),%rax 0.00 : 9433: f0 80 62 10 fe lock andb $0xfe,0x10(%rdx) : return -EBUSY; : : /* A reprieve! - use start_queue because it doesn't call schedule */ : netif_start_subqueue(netdev_ring(tx_ring), ring_queue_index(tx_ring)); : ++tx_ring->tx_stats.restart_queue; 0.00 : 9438: 49 83 45 68 01 addq $0x1,0x68(%r13) 0.00 : 943d: 41 0f b7 55 50 movzwl 0x50(%r13),%edx 0.00 : 9442: e9 88 fb ff ff jmpq 8fcf : #else : count += skb_shinfo(skb)->nr_frags; : #endif : #endif : if (ixgbe_maybe_stop_tx(tx_ring, count + 3)) { : tx_ring->tx_stats.tx_busy++; 0.00 : 9447: 49 83 45 70 01 addq $0x1,0x70(%r13) 0.00 : 944c: b8 10 00 00 00 mov $0x10,%eax : out_drop: : dev_kfree_skb_any(first->skb); : first->skb = NULL; : : return NETDEV_TX_OK; : } 0.00 : 9451: e9 d4 fd ff ff jmpq 922a : * and write the value to source port portion of compressed dword : */ : if (first->tx_flags & (IXGBE_TX_FLAGS_SW_VLAN | IXGBE_TX_FLAGS_HW_VLAN)) : common.port.src ^= th->dest ^ __constant_htons(ETH_P_8021Q); : else : common.port.src ^= th->dest ^ first->protocol; 0.00 : 9456: 41 0f b7 74 24 1e movzwl 0x1e(%r12),%esi 0.00 : 945c: 0f b7 41 02 movzwl 0x2(%rcx),%eax 0.00 : 9460: 31 f0 xor %esi,%eax 0.00 : 9462: 66 41 89 c0 mov %ax,%r8w 0.00 : 9466: e9 2a fd ff ff jmpq 9195 : common.port.dst ^= th->source; : : if (first->protocol == __constant_htons(ETH_P_IP)) { : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV4; : common.ip ^= hdr.ipv4->saddr ^ hdr.ipv4->daddr; 0.00 : 946b: 41 89 d0 mov %edx,%r8d 0.00 : 946e: 45 33 41 0c xor 0xc(%r9),%r8d : else : common.port.src ^= th->dest ^ first->protocol; : common.port.dst ^= th->source; : : if (first->protocol == __constant_htons(ETH_P_IP)) { : input.formatted.flow_type = IXGBE_ATR_FLOW_TYPE_TCPV4; 0.00 : 9472: b7 02 mov $0x2,%bh : common.ip ^= hdr.ipv4->saddr ^ hdr.ipv4->daddr; 0.00 : 9474: 45 33 41 10 xor 0x10(%r9),%r8d 0.00 : 9478: e9 59 fd ff ff jmpq 91d6 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 11.11 ??:0 7.41 ??:0 7.41 ??:0 7.41 ??:0 7.41 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 3.70 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007700 : ??:0 14.81 : 7700: 41 57 push %r15 0.00 : 7732: 41 56 41 mov 0x68(%rsi),%eax 0.00 : 7735: 55 41 54 sub 0x6c(%rsi),%eax ??:0 3.70 : 7738: 55 53 sub %edx,%eax 0.00 : 773a: 48 89 fb cmp $0x13,%eax 3.70 : 773d: 48 81 ec 98 00 00 jle 7b60 0.00 : 7743: 00 48 89 movslq %edx,%r12 0.00 : 7746: 74 24 30 89 54 24 2c add 0xe0(%rsi),%r12 3.70 : 774d: 89 4c 24 test %r12,%r12 0.00 : 7750: 28 44 88 44 24 27 je 7f18 3.70 : 7756: 48 8b 87 e8 lea 0x4(%rbx),%rdx 0.00 : 775a: 00 00 00 xor %r14d,%r14d 0.00 : 775d: 48 89 44 mov %rdx,%rdi 0.00 : 7760: 24 38 8b 46 68 mov %rdx,0x48(%rsp) 0.00 : 7765: 2b 46 6c 29 d0 callq 776a 0.00 : 776a: 83 f8 13 0f 8e 1d 04 movzbl 0x118(%rbx),%eax ??:0 7.41 : 7771: 00 00 4c 63 e2 cmpl $0x2,0x28(%rsp) 0.00 : 7776: 4c 03 a6 e0 00 00 mov $0x4,%r8d 0.00 : 777c: 00 4d 85 e4 mov %eax,0x44(%rsp) 0.00 : 7780: 0f 84 c2 07 00 00 movzbl 0xd(%r12),%esi 0.00 : 7786: 48 8d 53 04 seta %r14b 0.00 : 778a: 45 31 f6 and %sil,%r8b 0.00 : 778d: 48 89 d7 48 89 54 je 7910 0.00 : 7793: 24 48 e8 00 00 mov $0x4,%ebp 0.00 : 7798: 00 00 0f mov %r14d,%r13d 0.00 : 779b: b6 83 mov %ebp,%edx 0.00 : 779d: 18 01 00 00 mov 0x44(%rsp),%ecx 0.00 : 77a1: 83 7c 24 28 02 41 b8 lea 0x0(,%r13,4),%rdi 0.00 : 77a8: 04 0.00 : 77a9: 00 00 00 mov %r13,%rax ??:0 3.70 : 77ac: 89 44 24 44 lea (%rdx,%rdx,4),%rdx 0.00 : 77b0: 41 0f b6 74 shl $0x6,%rax 0.00 : 77b4: 24 0d 41 sub %rdi,%rax 0.00 : 77b7: 0f 97 c6 41 lea (%rax,%rdx,2),%rdx 0.00 : 77bb: 20 f0 0f 84 7d 01 00 movzbl 0x0(%rcx,%rdx,1),%eax 0.00 : 77c2: 00 ??:0 7.41 : 77c3: bd 04 cmp $0x8,%al 0.00 : 77c5: 00 00 00 45 movzbl %al,%r15d 0.00 : 77c9: 89 f5 89 ea 8b 4c je 7c08 ??:0 3.70 : 77cf: 24 44 4a 8d 3c ad ja 7930 3.70 : 77d5: 00 00 sub $0x1,%al 0.00 : 77d7: 00 00 4c 89 e8 48 je 7c70 0.00 : 77dd: 8d 14 92 48 c1 movzbl 0x27(%rsp),%eax 0.00 : 77e2: e0 06 48 29 f8 mov 0x2c(%rsp),%r9d 3.70 : 77e7: 48 8d 14 50 0f b6 84 lea 0xf0(%rbx),%rsi 0.00 : 77ee: 11 00 00 00 00 mov 0x30(%rsp),%r8 0.00 : 77f3: 3c 08 44 mov %r14d,%edx 0.00 : 77f6: 0f b6 mov %ebp,%ecx 0.00 : 77f8: f8 0f 84 mov %rbx,%rdi 0.00 : 77fb: 39 04 00 00 mov %r12,(%rsp) 3.70 : 77ff: 0f 87 5b 01 mov %eax,0x8(%rsp) 0.00 : 7803: 00 00 2c 01 0f callq 6a40 0.00 : 7808: 84 93 04 00 lea 0x78(%rbx),%rdx 0.00 : 780c: 00 0f test %al,%al 0.00 : 780e: b6 44 24 27 44 mov %rdx,0x18(%rsp) 0.00 : 7813: 8b 4c 24 2c 48 8d je 7f00 0.00 : 7819: b3 f0 00 00 00 4c 8b mov %bpl,0x11b(%rbx) 0.00 : 7820: 44 24 30 44 89 f2 89 mov %r14b,0x119(%rbx) 0.00 : 7827: e9 48 89 df 4c 89 24 cmpb $0x0,0x0(%rip) # 782e 0.00 : 782e: 24 89 44 24 08 e8 jne 7fa5 0.00 : 7834: 38 f2 ff ff 48 8d 53 cmpb $0x0,0x0(%rip) # 783b 3.70 : 783b: 78 84 c0 48 89 54 jne 7f1c 0.00 : 7841: 24 18 0f 84 e7 cmp %r15d,0x44(%rsp) 0.00 : 7846: 06 00 00 40 88 ab 1b mov %r15b,0x118(%rbx) 0.00 : 784d: 01 00 00 44 setne %r14b 0.00 : 7851: 88 b3 je 785d 0.00 : 7853: 19 01 00 00 cmp $0x4,%r15d 0.00 : 7857: 80 3d 00 00 00 00 je 7b40 0.00 : 785d: 00 0f 85 71 07 00 00 movzbl 0x11a(%rbx),%eax 0.00 : 7864: 80 3d 00 00 00 00 cmp 0x0(%rip),%eax # 786a ??:0 7.41 : 786a: 00 0f 85 db 06 00 jl 7a60 0.00 : 7870: 00 44 39 mov %r15d,%eax 0.00 : 7873: 7c 24 44 44 88 bb 18 mov 0x0(,%rax,4),%edx 0.00 : 787a: 01 00 00 41 0f 95 mov 0x0(%rip),%eax # 7880 0.00 : 7880: c6 74 cmp %eax,%edx 0.00 : 7882: 0a 41 mov %eax,%ebp 0.00 : 7884: 83 ff 04 0f 84 e3 jbe 7a6a 0.00 : 788a: 02 00 00 0f b6 mov 0x48(%rsp),%rdi 0.00 : 788f: 83 1a 01 00 00 callq 7894 0.00 : 7894: 3b 05 00 test %r14b,%r14b 0.00 : 7897: 00 00 je 78c2 0.00 : 7899: 00 0f 8c f0 01 00 00 mov 0xe8(%rbx),%rax 0.00 : 78a0: 44 89 f8 8b 14 85 00 cmpq $0x0,0x738(%rax) 0.00 : 78a7: 00 0.00 : 78a8: 00 00 je 78c2 0.00 : 78aa: 8b 05 00 00 00 00 39 mov 0xe0(%rbx),%rdx 0.00 : 78b1: c2 89 c5 test %rdx,%rdx 0.00 : 78b4: 0f 86 je 78c2 0.00 : 78b6: e0 01 00 00 movzbl 0x13(%rdx),%eax 0.00 : 78ba: 48 8b test %al,%al 0.00 : 78bc: 7c 24 48 e8 00 00 jne 7d30 0.00 : 78c2: 00 00 45 84 f6 mov 0x18(%rsp),%rdx 0.00 : 78c7: 74 29 48 mov (%rdx),%rax 0.00 : 78ca: 8b 83 test $0x2,%al 0.00 : 78cc: e8 00 00 00 48 83 jne 7b90 0.00 : 78d2: b8 38 07 00 00 00 testb $0x4,0xd(%r12) 0.00 : 78d8: 74 18 48 8b 93 e0 jne 7dc0 0.00 : 78de: 00 00 00 48 85 mov 0x30(%rsp),%rdx 0.00 : 78e3: d2 74 0c 0f mov 0x28(%rsp),%esi 0.00 : 78e7: b6 42 13 84 c0 0f mov $0x1,%r8d 0.00 : 78ed: 85 6e 04 mov %rbp,%rcx 0.00 : 78f0: 00 00 48 mov %rbx,%rdi 0.00 : 78f3: 8b 54 24 18 48 callq 78f8 0.00 : 78f8: 8b 02 a8 02 0f mov $0x1,%eax 0.00 : 78fd: 85 be 02 00 00 41 f6 add $0x98,%rsp 0.00 : 7904: 44 pop %rbx 0.00 : 7905: 24 pop %rbp 0.00 : 7906: 0d 04 pop %r12 0.00 : 7908: 0f 85 pop %r13 0.00 : 790a: e2 04 pop %r14 0.00 : 790c: 00 00 pop %r15 0.00 : 790e: 48 retq 0.00 : 790f: 8b nop 0.00 : 7910: 54 24 30 8b test $0x2,%sil 0.00 : 7914: 74 24 28 41 b8 01 je 7a38 0.00 : 791a: 00 00 mov %esi,%eax 0.00 : 791c: 00 48 89 e9 48 mov $0x1,%ebp 0.00 : 7921: 89 df e8 shr $0x4,%al 0.00 : 7924: 00 00 and %eax,%ebp 0.00 : 7926: 00 00 b8 01 00 jmpq 7798 0.00 : 792b: 00 00 48 81 c4 nopl 0x0(%rax,%rax,1) 0.00 : 7930: 98 00 cmp $0xa,%al 0.00 : 7932: 00 00 5b 5d 41 5c je 7cd0 0.00 : 7938: 41 5d cmp $0xb,%al 0.00 : 793a: 41 5e 41 5f c3 90 jne 77dd 0.00 : 7940: 40 f6 c6 cmp $0x1,%ebp 0.00 : 7943: 02 0f 84 1e 01 00 jne 7a90 0.00 : 7949: 00 89 f0 bd 01 00 00 cmpb $0x0,0x11b(%rbx) 0.00 : 7950: 00 c0 e8 04 21 c5 jne 7a90 0.00 : 7956: e9 6d fe ff ff 0f 1f movzbl 0x119(%rbx),%ecx 0.00 : 795d: 44 00 00 movzbl %cl,%eax 0.00 : 7960: 3c 0a 0f cmp %r14d,%eax 0.00 : 7963: 84 98 03 00 00 3c je 7a90 0.00 : 7969: 0b 0f 85 9d fe ff mov 0x124(%rbx),%edx 0.00 : 796f: ff 83 fd 01 0f mov 0x8(%r12),%eax 0.00 : 7974: 85 47 bswap %eax 0.00 : 7976: 01 00 cmp %eax,%edx 0.00 : 7978: 00 80 bb 1b 01 00 jne 7a90 0.00 : 797e: 00 00 0f movzbl %cl,%eax 0.00 : 7981: 85 3a 01 00 00 0f mov $0x2,%r15d 0.00 : 7987: b6 8b 19 01 lea (%rax,%rax,4),%rax 0.00 : 798b: 00 00 0f b6 c1 44 39 mov %edx,0xf0(%rbx,%rax,4) 0.00 : 7992: f0 0f 84 27 01 00 00 movzbl 0x119(%rbx),%eax 0.00 : 7999: 8b 93 24 01 00 00 mov 0x124(%rbx),%edx 0.00 : 799f: 41 8b 44 24 lea (%rax,%rax,4),%rax 0.00 : 79a3: 08 0f c8 39 c2 0f 85 mov %edx,0xf4(%rbx,%rax,4) 0.00 : 79aa: 12 01 00 00 0f b6 c1 movzwl 0x128(%rbx),%eax 0.00 : 79b1: 41 bf 02 test %ax,%ax 0.00 : 79b4: 00 00 00 movzwl %ax,%edx 0.00 : 79b7: 48 8d 04 80 89 94 83 movzbl 0x119(%rbx),%eax 0.00 : 79be: f0 00 00 cmove %ebp,%edx 0.00 : 79c1: 00 0f b6 83 lea (%rax,%rax,4),%rax 0.00 : 79c5: 19 01 00 00 8b 93 24 mov %edx,0xf8(%rbx,%rax,4) 0.00 : 79cc: 01 00 00 48 8d 04 80 movzbl 0x119(%rbx),%eax 0.00 : 79d3: 89 94 83 f4 00 00 00 movzbl 0x12a(%rbx),%edx 0.00 : 79da: 0f b7 83 28 lea (%rax,%rax,4),%rax 0.00 : 79de: 01 00 00 66 85 c0 0f mov %dl,0x100(%rbx,%rax,4) 0.00 : 79e5: b7 d0 0f b6 83 19 01 movzbl 0x119(%rbx),%eax 0.00 : 79ec: 00 00 0f 44 d5 48 8d movzbl 0x12b(%rbx),%edx 0.00 : 79f3: 04 80 89 94 lea (%rax,%rax,4),%rax 0.00 : 79f7: 83 f8 00 00 00 0f b6 mov %dl,0x101(%rbx,%rax,4) 0.00 : 79fe: 83 19 01 00 00 0f b6 lea 0x0(,%r13,4),%rax 0.00 : 7a05: 93 0.00 : 7a06: 2a 01 00 add %r13,%rax 0.00 : 7a09: 00 48 8d 04 80 88 94 lea 0xf0(%rbx,%rax,4),%rax 0.00 : 7a10: 83 0.00 : 7a11: 00 01 00 00 0f b6 83 movq $0x0,(%rax) 0.00 : 7a18: 19 01 00 00 0f b6 93 movq $0x0,0x8(%rax) 0.00 : 7a1f: 2b 0.00 : 7a20: 01 00 00 48 8d 04 80 movl $0x0,0x10(%rax) 0.00 : 7a27: 88 94 83 01 01 00 00 movl $0x1,0x44(%rsp) 0.00 : 7a2e: 4a 0.00 : 7a2f: 8d 04 ad 00 00 jmpq 77dd 0.00 : 7a34: 00 00 4c 01 nopl 0x0(%rax) 0.00 : 7a38: e8 48 8d 84 test $0x1,%sil ??:0 3.70 : 7a3c: 83 f0 00 00 00 mov $0x2,%ebp 0.00 : 7a41: 48 c7 00 00 00 00 jne 7798 0.00 : 7a47: 00 48 mov %esi,%eax 0.00 : 7a49: c7 40 08 and $0x10,%eax 0.00 : 7a4c: 00 00 cmp $0x1,%al 0.00 : 7a4e: 00 00 sbb %ebp,%ebp 0.00 : 7a50: c7 40 10 and $0x2,%ebp 3.70 : 7a53: 00 00 00 add $0x3,%ebp 0.00 : 7a56: 00 c7 44 24 44 jmpq 7798 0.00 : 7a5b: 01 00 00 00 e9 nopl 0x0(%rax,%rax,1) 0.00 : 7a60: a9 fd ff mov %r15d,%eax 0.00 : 7a63: ff 0f 1f 40 00 40 f6 mov 0x0(,%rax,4),%edx 0.00 : 7a6a: c6 01 bd 02 00 00 00 movzbl 0x115(%rbx),%eax 0.00 : 7a71: 0f 85 51 fd ff ff or 0x101(%rbx),%al 3.70 : 7a77: 89 f0 test $0x10,%al 0.00 : 7a79: 83 e0 10 3c 01 19 jne 7d10 0.00 : 7a7f: ed 83 mov %edx,%ebp 0.00 : 7a81: e5 02 83 c5 03 jmpq 788a 0.00 : 7a86: e9 3d fd ff ff 0f 1f nopw %cs:0x0(%rax,%rax,1) 0.00 : 7a8d: 44 00 00 0.00 : 7a90: 44 89 f8 8b 14 85 00 mov %bpl,0x11b(%rbx) 0.00 : 7a97: 00 00 00 0f b6 83 15 mov %r14b,0x119(%rbx) 0.00 : 7a9e: 01 00 00 0a 83 mov 0x4(%r12),%eax 0.00 : 7aa3: 01 01 bswap %eax 0.00 : 7aa5: 00 00 a8 10 0f 85 mov %eax,0x11c(%rbx) 0.00 : 7aab: 91 02 00 00 89 d5 movzbl 0xd(%r12),%eax 0.00 : 7ab1: e9 04 fe ff ff mov 0x4(%r12),%ecx 0.00 : 7ab6: 66 2e bswap %ecx 0.00 : 7ab8: 0f 1f mov %eax,%edx 0.00 : 7aba: 84 00 00 and $0x1,%eax 0.00 : 7abd: 00 00 shr %dl 0.00 : 7abf: 00 40 88 and $0x1,%edx 0.00 : 7ac2: ab 1b add %eax,%edx 0.00 : 7ac4: 01 00 00 44 88 mov 0x30(%rsp),%rax 0.00 : 7ac9: b3 19 01 add 0x68(%rax),%edx 0.00 : 7acc: 00 00 41 8b 44 24 movzbl 0xc(%r12),%eax 0.00 : 7ad2: 04 0f c8 shr $0x4,%al 0.00 : 7ad5: 89 83 1c movzbl %al,%eax 0.00 : 7ad8: 01 00 00 shl $0x2,%eax 0.00 : 7adb: 41 0f sub %eax,%edx 0.00 : 7add: b6 44 24 0d sub 0x2c(%rsp),%edx 0.00 : 7ae1: 41 8b add %edx,%ecx 0.00 : 7ae3: 4c 24 04 0f c9 89 mov %ecx,0x124(%rbx) 0.00 : 7ae9: c2 83 e0 01 d0 ea movzwl 0xe(%r12),%eax 0.00 : 7aef: 83 e2 01 01 rol $0x8,%ax 0.00 : 7af3: c2 48 8b or %r14d,%ebp 0.00 : 7af6: 44 24 30 03 50 68 41 mov %ax,0x128(%rbx) 0.00 : 7afd: 0f b6 44 24 0c c0 je 7d48 0.00 : 7b03: e8 04 0f b6 c0 mov 0x48(%rsp),%rdi 0.00 : 7b08: c1 e0 02 29 c2 callq 7b0d 0.00 : 7b0d: 2b 54 24 2c 01 mov 0x38(%rsp),%rdx 0.00 : 7b12: d1 89 8b 24 01 00 mov 0x75c(%rdx),%eax 0.00 : 7b18: 00 41 0f cmp $0x6,%eax 0.00 : 7b1b: b7 44 24 0e 66 c1 je 7de0 0.00 : 7b21: c0 08 44 09 f5 cmp $0xff,%eax 0.00 : 7b26: 66 89 83 28 01 00 je 7de0 0.00 : 7b2c: 00 0f 84 45 02 mov $0x1,%eax 0.00 : 7b31: 00 00 48 8b 7c jmpq 78fd 0.00 : 7b36: 24 48 e8 00 00 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7b3d: 48 8b 54 0.00 : 7b40: 24 38 8b 82 5c 07 00 lea 0x0(,%r13,4),%rax 0.00 : 7b47: 00 0.00 : 7b48: 83 f8 06 add %r13,%rax 0.00 : 7b4b: 0f 84 bf 02 00 00 3d orb $0x4,0x101(%rbx,%rax,4) 0.00 : 7b52: ff 0.00 : 7b53: 00 00 00 0f 84 jmpq 785d 0.00 : 7b58: b4 02 00 00 b8 01 00 nopl 0x0(%rax,%rax,1) 0.00 : 7b5f: 00 0.00 : 7b60: 00 e9 c7 fd ff lea 0x70(%rsp),%rbp 0.00 : 7b65: ff 66 2e 0f mov 0x2c(%rsp),%esi 0.00 : 7b69: 1f 84 00 00 00 mov 0x30(%rsp),%rdi 0.00 : 7b6e: 00 00 4a 8d 04 mov $0x14,%ecx 0.00 : 7b73: ad 00 00 mov %rbp,%rdx 0.00 : 7b76: 00 00 4c 01 e8 callq 7b7b 0.00 : 7b7b: 80 8c test %eax,%eax 0.00 : 7b7d: 83 01 01 00 00 04 js 7f18 0.00 : 7b83: e9 05 fd mov %rbp,%r12 0.00 : 7b86: ff ff 0f 1f 84 jmpq 774d 0.00 : 7b8b: 00 00 00 00 00 nopl 0x0(%rax,%rax,1) 3.70 : 7b90: 48 8d 6c 24 70 mov 0x18(%rsp),%rdx 3.70 : 7b95: 8b 74 24 mov (%rdx),%rax 0.00 : 7b98: 2c 48 test $0x4,%al 0.00 : 7b9a: 8b 7c 24 30 b9 14 jne 78de 0.00 : 7ba0: 00 00 00 48 mov 0x44(%rsp),%eax 0.00 : 7ba4: 89 ea e8 sub $0x2,%eax 0.00 : 7ba7: 00 00 00 cmp $0x1,%eax 0.00 : 7baa: 00 85 c0 0f 88 95 ja 78de 0.00 : 7bb0: 03 00 00 49 cmp $0x3,%r15d 0.00 : 7bb4: 89 ec e9 c2 fb ff jne 78de 0.00 : 7bba: ff 0f 1f 44 lock orb $0x4,(%rdx) 0.00 : 7bbe: 00 00 48 8b 54 24 18 mov 0xe8(%rbx),%rax 0.00 : 7bc5: 48 8b 02 a8 04 0f 85 cmpq $0x0,0x738(%rax) 0.00 : 7bcc: 3e 0.00 : 7bcd: fd ff ff 8b 44 24 je 78de 0.00 : 7bd3: 44 83 e8 02 83 f8 01 mov 0xe0(%rbx),%rdx 0.00 : 7bda: 0f 87 2e test %rdx,%rdx 0.00 : 7bdd: fd ff ff 41 83 ff je 78de 0.00 : 7be3: 03 0f 85 24 movzbl 0x13(%rdx),%eax 0.00 : 7be7: fd ff test %al,%al 0.00 : 7be9: ff f0 80 0a 04 48 je 78de 0.00 : 7bef: 8b 83 e8 movzbl %al,%eax 0.00 : 7bf2: 00 00 00 add %rdx,%rax 0.00 : 7bf5: 48 83 b8 38 07 00 je 78de 0.00 : 7bfb: 00 00 0f 84 lock orb $0x10,(%rax) 0.00 : 7bff: 0b fd ff ff 48 jmpq 78de 0.00 : 7c04: 8b 93 e0 00 nopl 0x0(%rax) 0.00 : 7c08: 00 00 48 cmp $0x4,%ebp 0.00 : 7c0b: 85 d2 0f 84 fb fc jne 77dd 0.00 : 7c11: ff ff 0f test %r14d,%r14d 0.00 : 7c14: b6 42 13 sete %dl 0.00 : 7c17: 84 c0 0f and $0x1,%edx 0.00 : 7c1a: 84 ef fc ff ff 0f b6 lea 0x0(,%rdx,4),%rax 0.00 : 7c21: c0 0.00 : 7c22: 48 01 d0 add %rdx,%rax 0.00 : 7c25: 0f 84 e3 fc lea (%rbx,%rax,4),%rdx 0.00 : 7c29: ff ff f0 80 08 10 e9 testb $0x20,0x101(%rdx) 0.00 : 7c30: da fc ff ff 0f 1f jne 7ea8 0.00 : 7c36: 40 00 83 fd lea 0x78(%rbx),%rax 0.00 : 7c3a: 04 0f 85 cc fb mov %rax,0x18(%rsp) 0.00 : 7c3f: ff ff 45 85 mov 0x78(%rbx),%rax 0.00 : 7c43: f6 0f test $0x2,%al 0.00 : 7c45: 94 c2 83 e2 01 48 je 7e20 0.00 : 7c4b: 8d 04 95 00 00 00 00 cmpb $0x0,0x11b(%rbx) 0.00 : 7c52: 48 01 d0 48 8d 14 jne 7e20 0.00 : 7c58: 83 f6 82 01 01 mov 0x8(%r12),%eax 0.00 : 7c5d: 00 00 bswap %eax 0.00 : 7c5f: 20 0f 85 72 02 00 cmp %eax,0x124(%rbx) 0.00 : 7c65: 00 48 8d 43 78 48 jne 77dd 0.00 : 7c6b: 89 44 24 18 48 jmpq 7819 0.00 : 7c70: 8b 43 78 a8 02 cmpl $0x6,0x44(%rsp) 0.00 : 7c75: 0f 84 d5 01 00 00 jbe 77dd 0.00 : 7c7b: 80 bb 1b 01 cmp $0x1,%r14d 0.00 : 7c7f: 00 00 00 0f lea (%rdi,%r13,1),%rdx 0.00 : 7c83: 85 c8 01 sbb %rax,%rax 0.00 : 7c86: 00 00 41 and $0x14,%eax 0.00 : 7c89: 8b 44 24 08 0f c8 39 movzbl 0x101(%rbx,%rax,1),%eax 0.00 : 7c90: 83 0.00 : 7c91: 24 01 00 00 0f 85 72 or 0x101(%rbx,%rdx,4),%al 0.00 : 7c98: fb ff test $0x4,%al 0.00 : 7c9a: ff e9 a9 fb ff ff je 7e40 0.00 : 7ca0: 83 7c 24 44 06 mov 0x48(%rsp),%rdi 0.00 : 7ca5: 0f 86 62 fb ff callq 7caa 0.00 : 7caa: ff 41 xor %ecx,%ecx 0.00 : 7cac: 83 fe xor %edx,%edx 0.00 : 7cae: 01 4a xor %esi,%esi 0.00 : 7cb0: 8d 14 2f mov %rbx,%rdi 0.00 : 7cb3: 48 19 c0 83 e0 callq 7cb8 0.00 : 7cb8: 14 0f cmp $0x1,%al 0.00 : 7cba: b6 84 sbb %eax,%eax 0.00 : 7cbc: 03 01 not %eax 0.00 : 7cbe: 01 00 00 and $0xfffffffc,%eax 0.00 : 7cc1: 0a 84 93 01 01 jmpq 78fd 0.00 : 7cc6: 00 00 a8 04 0f 84 a0 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7ccd: 01 00 00 0.00 : 7cd0: 48 8b 7c 24 48 e8 00 cmpb $0x0,0x0(%rip) # 7cd7 0.00 : 7cd7: 00 00 00 31 c9 31 jne 7f6a 0.00 : 7cdd: d2 31 f6 48 89 mov 0x48(%rsp),%rdi 0.00 : 7ce2: df e8 00 00 00 callq 7ce7 0.00 : 7ce7: 00 3c 01 19 c0 mov 0x38(%rsp),%rdx 0.00 : 7cec: f7 d0 83 e0 fc e9 mov 0x75c(%rdx),%eax 0.00 : 7cf2: 37 fc ff cmp $0x6,%eax 0.00 : 7cf5: ff 66 2e 0f 1f 84 je 7e68 0.00 : 7cfb: 00 00 00 00 00 cmp $0xff,%eax 0.00 : 7d00: 80 3d 00 00 00 00 je 7e68 0.00 : 7d06: 00 0f 85 8d 02 mov $0xffffffff,%eax 0.00 : 7d0b: 00 00 48 8b 7c jmpq 78fd 0.00 : 7d10: 24 48 e8 00 00 00 mov 0x0(%rip),%eax # 7d16 0.00 : 7d16: 00 48 cmp %edx,%eax ??:0 7.41 : 7d18: 8b 54 mov %eax,%ebp 0.00 : 7d1a: 24 38 8b 82 5c 07 jb 788a 0.00 : 7d20: 00 00 mov %edx,%ebp 0.00 : 7d22: 83 f8 06 0f 84 jmpq 788a 0.00 : 7d27: 6d 01 00 00 3d ff 00 nopw 0x0(%rax,%rax,1) 0.00 : 7d2e: 00 00 0.00 : 7d30: 0f 84 62 movzbl %al,%eax 0.00 : 7d33: 01 00 00 add %rdx,%rax 0.00 : 7d36: b8 ff ff ff ff e9 je 78c2 0.00 : 7d3c: ed fb ff ff lock orb $0x20,(%rax) 0.00 : 7d40: 8b 05 00 00 00 jmpq 78c2 0.00 : 7d45: 00 39 d0 nopl (%rax) 0.00 : 7d48: 89 c5 0f 82 mov 0x2c(%rsp),%esi 0.00 : 7d4c: 6a fb ff ff 89 mov 0x30(%rsp),%rdi 0.00 : 7d51: d5 e9 63 fb ff lea 0x50(%rsp),%rcx 0.00 : 7d56: ff 66 0f mov %r12,%rdx 0.00 : 7d59: 1f 84 00 00 00 00 00 movb $0x0,0x12a(%rbx) 0.00 : 7d60: 0f b6 c0 48 01 d0 0f movb $0x0,0x12b(%rbx) 0.00 : 7d67: 84 86 fb ff ff f0 80 movq $0x0,0x50(%rsp) 0.00 : 7d6e: 08 20 0.00 : 7d70: e9 7d fb ff ff 0f 1f movq $0x0,0x58(%rsp) 0.00 : 7d77: 00 8b 0.00 : 7d79: 74 24 2c 48 8b 7c 24 movl $0x0,0x60(%rsp) 0.00 : 7d80: 30 0.00 : 7d81: 48 8d 4c 24 50 callq 68c0 0.00 : 7d86: 4c 89 e2 c6 83 movzbl 0x61(%rsp),%edx 0.00 : 7d8b: 2a 01 00 test $0x1,%dl 0.00 : 7d8e: 00 00 je 7da2 0.00 : 7d90: c6 83 2b 01 00 movzbl 0x60(%rsp),%eax 0.00 : 7d95: 00 00 48 c7 44 24 50 orb $0x1,0x12b(%rbx) 0.00 : 7d9c: 00 00 00 00 48 c7 mov %al,0x12a(%rbx) 0.00 : 7da2: 44 24 58 and $0x2,%edx 0.00 : 7da5: 00 00 00 00 c7 44 je 7b03 0.00 : 7dab: 24 60 00 00 00 00 e8 orb $0x2,0x12b(%rbx) 0.00 : 7db2: 3a eb ff ff 0f jmpq 7b03 0.00 : 7db7: b6 54 24 61 f6 c2 01 nopw 0x0(%rax,%rax,1) 0.00 : 7dbe: 74 12 0.00 : 7dc0: 0f b6 44 24 60 mov 0x30(%rsp),%rdx 0.00 : 7dc5: 80 8b 2b 01 mov 0x28(%rsp),%esi 0.00 : 7dc9: 00 00 01 88 83 mov $0x1,%ecx 0.00 : 7dce: 2a 01 00 mov %rbx,%rdi 0.00 : 7dd1: 00 83 e2 02 0f callq 7dd6 0.00 : 7dd6: 84 58 fd ff ff mov $0x1,%eax 0.00 : 7ddb: 80 8b 2b 01 00 jmpq 78fd 0.00 : 7de0: 00 02 e9 4c fd callq 7de5 0.00 : 7de5: ff ff test %eax,%eax 0.00 : 7de7: 66 0f 1f 84 00 00 je 7b2c 0.00 : 7ded: 00 00 00 48 8b movzbl 0x27(%rsp),%edi 0.00 : 7df2: 54 24 30 8b 74 mov 0x30(%rsp),%rdx 0.00 : 7df7: 24 28 xor %eax,%eax 0.00 : 7df9: b9 01 00 xor %r9d,%r9d 0.00 : 7dfc: 00 00 48 xor %r8d,%r8d 0.00 : 7dff: 89 df xor %ecx,%ecx 0.00 : 7e01: e8 00 xor %esi,%esi 0.00 : 7e03: 00 00 00 b8 01 00 00 movq $0x0,(%rsp) 0.00 : 7e0a: 00 0.00 : 7e0b: e9 1d fb ff ff callq 7e10 0.00 : 7e10: e8 00 00 00 00 mov $0x1,%eax 0.00 : 7e15: 85 c0 0f 84 3f jmpq 78fd 0.00 : 7e1a: fd ff ff 0f b6 7c nopw 0x0(%rax,%rax,1) 0.00 : 7e20: 24 27 48 8b mov 0x78(%rbx),%rax 0.00 : 7e24: 54 24 test $0x4,%al 0.00 : 7e26: 30 31 c0 45 31 c9 jne 77dd 0.00 : 7e2c: 45 31 c0 31 c9 31 f6 cmpb $0x3,0x11b(%rbx) 0.00 : 7e33: 48 c7 04 24 00 00 jne 77dd 0.00 : 7e39: 00 00 e8 00 00 jmpq 7c58 0.00 : 7e3e: 00 00 xchg %ax,%ax 0.00 : 7e40: b8 01 00 00 00 e9 e3 movzbl 0x119(%rbx),%eax 0.00 : 7e47: fa ff ff cmp %r14d,%eax 0.00 : 7e4a: 66 0f 1f 44 00 00 jne 7940 0.00 : 7e50: 48 8b 43 78 a8 04 0f cmpb $0x4,0x11b(%rbx) 0.00 : 7e57: 85 b1 f9 ff ff 80 jne 7940 0.00 : 7e5d: bb 1b 01 00 00 jmpq 7ca0 0.00 : 7e62: 03 0f 85 a4 f9 ff nopw 0x0(%rax,%rax,1) 0.00 : 7e68: ff e9 1a fe ff callq 7e6d 0.00 : 7e6d: ff 66 test %eax,%eax 0.00 : 7e6f: 90 nop 0.00 : 7e70: 0f b6 83 19 01 00 je 7d06 0.00 : 7e76: 00 44 39 f0 0f movzbl 0x27(%rsp),%edi 0.00 : 7e7b: 85 f0 fa ff ff 80 bb movq $0x0,(%rsp) 0.00 : 7e82: 1b 0.00 : 7e83: 01 00 00 04 0f mov 0x30(%rsp),%rdx 0.00 : 7e88: 85 e3 xor %eax,%eax 0.00 : 7e8a: fa ff ff xor %r9d,%r9d 0.00 : 7e8d: e9 3e fe xor %r8d,%r8d 0.00 : 7e90: ff ff xor %ecx,%ecx 0.00 : 7e92: 66 0f xor %esi,%esi 0.00 : 7e94: 1f 44 00 00 e8 callq 7e99 0.00 : 7e99: 00 00 00 00 85 mov $0xffffffff,%eax 0.00 : 7e9e: c0 90 0f 84 90 jmpq 78fd 0.00 : 7ea3: fe ff ff 0f b6 nopl 0x0(%rax,%rax,1) 0.00 : 7ea8: 7c 24 27 48 c7 mov 0x4(%r12),%eax 0.00 : 7ead: 04 24 bswap %eax 0.00 : 7eaf: 00 00 00 00 48 8b cmp 0xfc(%rdx),%eax 0.00 : 7eb5: 54 24 30 31 c0 45 jns 7c36 0.00 : 7ebb: 31 c9 45 31 c0 mov 0x48(%rsp),%rdi 0.00 : 7ec0: 31 c9 31 f6 e8 callq 7ec5 0.00 : 7ec5: 00 00 00 00 b8 mov 0x38(%rsp),%rdx 0.00 : 7eca: ff ff ff ff e9 5a mov 0x75c(%rdx),%eax 0.00 : 7ed0: fa ff ff cmp $0x6,%eax 0.00 : 7ed3: 0f 1f je 7ee0 0.00 : 7ed5: 44 00 00 41 8b cmp $0xff,%eax 0.00 : 7eda: 44 24 04 0f c8 3b jne 7d06 0.00 : 7ee0: 82 fc 00 00 00 callq 7ee5 0.00 : 7ee5: 0f 89 test %eax,%eax 0.00 : 7ee7: 7b fd ff ff 48 8b je 7d06 0.00 : 7eed: 7c 24 48 e8 00 movzbl 0x27(%rsp),%edi 0.00 : 7ef2: 00 00 00 48 8b 54 24 movq $0x0,(%rsp) 0.00 : 7ef9: 38 0.00 : 7efa: 8b 82 jmp 7e83 0.00 : 7efc: 5c 07 00 00 nopl 0x0(%rax) 0.00 : 7f00: 83 f8 06 74 0b mov 0x48(%rsp),%rdi 0.00 : 7f05: 3d ff 00 00 00 callq 7f0a 0.00 : 7f0a: 0f 85 26 fe ff mov $0xffffffff,%eax 0.00 : 7f0f: ff e8 00 00 00 jmpq 78fd 0.00 : 7f14: 00 85 c0 0f nopl 0x0(%rax) 0.00 : 7f18: 84 19 ud2 0.00 : 7f1a: fe ff jmp 7f1a 0.00 : 7f1c: ff 0f b6 7c 24 27 movzbl 0xd(%r12),%r8d 0.00 : 7f22: 48 c7 04 24 00 00 00 mov $0x0,%rsi 0.00 : 7f29: 00 eb 87 0f 1f 40 00 mov $0x0,%rdi 0.00 : 7f30: 48 8b 7c 24 48 mov %r15d,0x8(%rsp) 0.00 : 7f35: e8 00 00 mov %r8d,%eax 0.00 : 7f38: 00 00 b8 mov %r8d,%ecx 0.00 : 7f3b: ff ff ff mov %r8d,%edx 0.00 : 7f3e: ff e9 e9 shr $0x2,%al 0.00 : 7f41: f9 ff ff shr $0x4,%cl 0.00 : 7f44: 0f 1f shr %dl 0.00 : 7f46: 40 00 0f mov %eax,%r9d 0.00 : 7f49: 0b eb fe 45 mov 0x44(%rsp),%eax 0.00 : 7f4d: 0f b6 44 and $0x1,%ecx 0.00 : 7f50: 24 0d 48 and $0x1,%edx 0.00 : 7f53: c7 c6 00 00 and $0x1,%r9d 0.00 : 7f57: 00 00 48 c7 and $0x1,%r8d 0.00 : 7f5b: c7 00 00 mov %eax,(%rsp) 0.00 : 7f5e: 00 00 xor %eax,%eax 0.00 : 7f60: 44 89 7c 24 08 callq 7f65 0.00 : 7f65: 44 89 c0 44 89 jmpq 7841 0.00 : 7f6a: c1 44 89 test %r8b,%r8b 0.00 : 7f6d: c2 c0 e8 02 c0 mov $0x4,%ecx 0.00 : 7f72: e9 04 jne 7f83 0.00 : 7f74: d0 ea 41 89 test $0x2,%sil 0.00 : 7f78: c1 8b je 7fbf 0.00 : 7f7a: 44 24 44 83 shr $0x4,%sil 0.00 : 7f7e: e1 01 mov %esi,%ecx 0.00 : 7f80: 83 e2 01 and $0x1,%ecx 0.00 : 7f83: 41 83 e1 01 41 mov 0x44(%rsp),%r8d 0.00 : 7f88: 83 e0 01 mov %r14d,%edx 0.00 : 7f8b: 89 04 24 31 c0 e8 00 mov $0x0,%rsi 0.00 : 7f92: 00 00 00 e9 d7 f8 ff mov $0x0,%rdi 0.00 : 7f99: ff 45 xor %eax,%eax 0.00 : 7f9b: 84 c0 b9 04 00 callq 7fa0 0.00 : 7fa0: 00 00 75 0f 40 jmpq 7cdd 0.00 : 7fa5: f6 c6 02 74 45 40 c0 mov $0x0,%rsi 0.00 : 7fac: ee 04 89 f1 83 e1 01 mov $0x0,%rdi 0.00 : 7fb3: 44 8b xor %eax,%eax 0.00 : 7fb5: 44 24 44 44 89 callq 7fba 0.00 : 7fba: f2 48 c7 c6 00 jmpq 7834 0.00 : 7fbf: 00 00 00 48 test $0x1,%sil 0.00 : 7fc3: c7 c7 00 00 00 mov $0x2,%ecx 0.00 : 7fc8: 00 31 jne 7f83 0.00 : 7fca: c0 e8 00 and $0x10,%esi 0.00 : 7fcd: 00 00 00 e9 cmp $0x1,%sil 0.00 : 7fd1: 38 fd sbb %ecx,%ecx 0.00 : 7fd3: ff ff 48 and $0x2,%ecx 0.00 : 7fd6: c7 c6 00 add $0x3,%ecx 0.00 : 7fd9: 00 00 jmp 7f83 : 7fdb: 00 48 c7 c7 00 nopl 0x0(%rax,%rax,1) : 7fe0: 00 00 00 31 movzwl 0x24(%rsi),%eax : 7fe4: c0 e8 00 00 mov %ax,0x10(%rdi) : 7fe8: 00 00 e9 75 movzwl 0x10(%rsi),%eax : 7fec: f8 ff ff 40 mov %ax,0x24(%rdi) : 7ff0: f6 c6 01 b9 02 mov $0x1,%eax : 7ff5: 00 retq : 7ff6: 00 00 75 b9 83 e6 10 nopw %cs:0x0(%rax,%rax,1) : 7ffd: 40 80 fe : 8000: 01 19 c9 83 e1 mov $0x1,%eax : 8005: 02 retq : 8006: 83 c1 03 eb a8 0f 1f nopw %cs:0x0(%rax,%rax,1) : 800d: 44 00 00 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 26.92 ??:0 11.54 ??:0 11.54 ??:0 11.54 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 3.85 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007c00 : : return true; : } : : static struct sk_buff *ixgbe_fetch_rx_buffer(struct ixgbe_ring *rx_ring, : union ixgbe_adv_rx_desc *rx_desc) : { ??:0 11.54 : 7c00: 48 83 ec 38 sub $0x38,%rsp 0.00 : 7c04: 48 89 6c 24 10 mov %rbp,0x10(%rsp) ??:0 3.85 : 7c09: 4c 89 6c 24 20 mov %r13,0x20(%rsp) 0.00 : 7c0e: 48 89 fd mov %rdi,%rbp 0.00 : 7c11: 48 89 5c 24 08 mov %rbx,0x8(%rsp) 0.00 : 7c16: 4c 89 64 24 18 mov %r12,0x18(%rsp) 3.85 : 7c1b: 49 89 f5 mov %rsi,%r13 0.00 : 7c1e: 4c 89 74 24 28 mov %r14,0x28(%rsp) 0.00 : 7c23: 4c 89 7c 24 30 mov %r15,0x30(%rsp) : struct ixgbe_rx_buffer *rx_buffer; : struct sk_buff *skb; : struct page *page; : : rx_buffer = &rx_ring->rx_buffer_info[rx_ring->next_to_clean]; 0.00 : 7c28: 0f b7 5f 52 movzwl 0x52(%rdi),%ebx 0.00 : 7c2c: 48 c1 e3 05 shl $0x5,%rbx 0.00 : 7c30: 48 03 5f 28 add 0x28(%rdi),%rbx : page = rx_buffer->page; 0.00 : 7c34: 48 8b 53 10 mov 0x10(%rbx),%rdx : * Useful for spinlocks to avoid one state transition in the : * cache coherency protocol: : */ : static inline void prefetchw(const void *x) : { : alternative_input(BASE_PREFETCH, ??:0 11.54 : 7c38: 0f 18 0a prefetcht0 (%rdx) : prefetchw(page); : : skb = rx_buffer->skb; 26.92 : 7c3b: 4c 8b 23 mov (%rbx),%r12 : : if (likely(!skb)) { 0.00 : 7c3e: 4d 85 e4 test %r12,%r12 0.00 : 7c41: 0f 85 49 02 00 00 jne 7e90 : * It's not worth to care about 3dnow prefetches for the K6 : * because they are microcoded there and very slow. : */ : static inline void prefetch(const void *x) : { : alternative_input(BASE_PREFETCH, 0.00 : 7c47: 48 b8 00 00 00 00 00 movabs $0x160000000000,%rax 0.00 : 7c4e: 16 00 00 0.00 : 7c51: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 7c55: 48 ba b7 6d db b6 6d movabs $0x6db6db6db6db6db7,%rdx 0.00 : 7c5c: db b6 6d 0.00 : 7c5f: 48 c1 f8 03 sar $0x3,%rax 0.00 : 7c63: 48 0f af c2 imul %rdx,%rax 0.00 : 7c67: 48 ba 00 00 00 00 00 movabs $0xffff880000000000,%rdx 0.00 : 7c6e: 88 ff ff 0.00 : 7c71: 48 c1 e0 0c shl $0xc,%rax 0.00 : 7c75: 48 01 d0 add %rdx,%rax 0.00 : 7c78: 8b 53 18 mov 0x18(%rbx),%edx 0.00 : 7c7b: 48 01 d0 add %rdx,%rax 0.00 : 7c7e: 0f 18 08 prefetcht0 (%rax) : } : : static inline struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev, : unsigned int length, gfp_t gfp) : { : struct sk_buff *skb = __netdev_alloc_skb(dev, length + NET_IP_ALIGN, gfp); 11.54 : 7c81: 48 8b 7f 10 mov 0x10(%rdi),%rdi 0.00 : 7c85: ba 20 00 00 00 mov $0x20,%edx 0.00 : 7c8a: be 00 01 00 00 mov $0x100,%esi 0.00 : 7c8f: e8 00 00 00 00 callq 7c94 : #endif : : /* allocate a skb to store the frags */ : skb = netdev_alloc_skb_ip_align(netdev_ring(rx_ring), : IXGBE_RX_HDR_SIZE); : if (unlikely(!skb)) { 0.00 : 7c94: 48 85 c0 test %rax,%rax 0.00 : 7c97: 49 89 c4 mov %rax,%r12 0.00 : 7c9a: 0f 84 60 02 00 00 je 7f00 : * Useful for spinlocks to avoid one state transition in the : * cache coherency protocol: : */ : static inline void prefetchw(const void *x) : { : alternative_input(BASE_PREFETCH, 0.00 : 7ca0: 48 8b 80 e0 00 00 00 mov 0xe0(%rax),%rax 0.00 : 7ca7: 0f 18 08 prefetcht0 (%rax) : * Delay unmapping of the first packet. It carries the : * header information, HW may still access the header : * after the writeback. Only unmap it when EOP is : * reached : */ : if (likely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))) 0.00 : 7caa: 41 f6 45 08 02 testb $0x2,0x8(%r13) 0.00 : 7caf: 4c 8d 75 30 lea 0x30(%rbp),%r14 0.00 : 7cb3: 0f 84 2f 02 00 00 je 7ee8 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 7cb9: 49 8b 06 mov (%r14),%rax : if (ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP)) : ixgbe_dma_sync_frag(rx_ring, skb); : : dma_sync: : /* we are reusing so sync this buffer for CPU use */ : dma_sync_single_range_for_cpu(rx_ring->dev, 0.00 : 7cbc: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 7cc0: 8b 73 18 mov 0x18(%rbx),%esi 0.00 : 7cc3: 48 8b 4b 08 mov 0x8(%rbx),%rcx : { : #if MAX_SKB_FRAGS < 8 : return ALIGN(IXGBE_MAX_RXBUFFER / MAX_SKB_FRAGS, 1024); : #else : #ifdef IXGBE_FCOE : if (test_bit(__IXGBE_RX_FCOE, &ring->state)) 0.00 : 7cc7: 83 e0 20 and $0x20,%eax 0.00 : 7cca: 48 83 f8 01 cmp $0x1,%rax 0.00 : 7cce: 48 19 d2 sbb %rdx,%rdx ??:0 3.85 : 7cd1: 48 81 e2 00 f8 ff ff and $0xfffffffffffff800,%rdx 0.00 : 7cd8: 48 81 c2 00 10 00 00 add $0x1000,%rdx : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 7cdf: 48 85 ff test %rdi,%rdi 0.00 : 7ce2: 0f 84 68 01 00 00 je 7e50 3.85 : 7ce8: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 3.85 : 7cef: 48 85 c0 test %rax,%rax 0.00 : 7cf2: 0f 84 58 01 00 00 je 7e50 : enum dma_data_direction dir) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->sync_single_for_cpu) 0.00 : 7cf8: 48 8b 40 30 mov 0x30(%rax),%rax 0.00 : 7cfc: 48 85 c0 test %rax,%rax 3.85 : 7cff: 74 0c je 7d0d : ops->sync_single_for_cpu(dev, addr, size, dir); 0.00 : 7d01: 89 f6 mov %esi,%esi 0.00 : 7d03: 48 01 ce add %rcx,%rsi 0.00 : 7d06: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7d0b: ff d0 callq *%rax : ixgbe_rx_bufsz(rx_ring), : DMA_FROM_DEVICE); : } : : /* pull page into skb */ : if (ixgbe_add_rx_frag(rx_ring, rx_buffer, rx_desc, skb)) { 0.00 : 7d0d: 4c 89 e1 mov %r12,%rcx 0.00 : 7d10: 4c 89 ea mov %r13,%rdx 0.00 : 7d13: 48 89 de mov %rbx,%rsi 0.00 : 7d16: 48 89 ef mov %rbp,%rdi 0.00 : 7d19: e8 72 d7 ff ff callq 5490 0.00 : 7d1e: 84 c0 test %al,%al 0.00 : 7d20: 0f 85 9a 00 00 00 jne 7dc0 : /* hand second half of page back to the ring */ : ixgbe_reuse_rx_page(rx_ring, rx_buffer); : } else if (IXGBE_CB(skb)->dma == rx_buffer->dma) { 0.00 : 7d26: 48 8b 73 08 mov 0x8(%rbx),%rsi 0.00 : 7d2a: 49 39 74 24 28 cmp %rsi,0x28(%r12) 0.00 : 7d2f: 49 8d 44 24 28 lea 0x28(%r12),%rax 0.00 : 7d34: 0f 84 26 01 00 00 je 7e60 : /* the page has been released from the ring */ : IXGBE_CB(skb)->page_released = true; : } else { : /* we are not reusing the buffer so unmap it */ : dma_unmap_page(rx_ring->dev, rx_buffer->dma, 0.00 : 7d3a: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 7d3e: 48 8b 55 30 mov 0x30(%rbp),%rdx 0.00 : 7d42: 48 85 ff test %rdi,%rdi 0.00 : 7d45: 0f 84 35 01 00 00 je 7e80 0.00 : 7d4b: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 7d52: 48 85 c0 test %rax,%rax 0.00 : 7d55: 0f 84 25 01 00 00 je 7e80 : size_t size, enum dma_data_direction dir) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->unmap_page) 0.00 : 7d5b: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : 7d5f: 48 85 c0 test %rax,%rax 0.00 : 7d62: 74 1b je 7d7f : ops->unmap_page(dev, addr, size, dir, NULL); 0.00 : 7d64: 48 c1 ea 05 shr $0x5,%rdx 0.00 : 7d68: 45 31 c0 xor %r8d,%r8d 0.00 : 7d6b: 89 d1 mov %edx,%ecx 0.00 : 7d6d: ba 00 10 00 00 mov $0x1000,%edx 0.00 : 7d72: 83 e1 01 and $0x1,%ecx 0.00 : 7d75: 48 d3 e2 shl %cl,%rdx 0.00 : 7d78: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7d7d: ff d0 callq *%rax : ixgbe_rx_pg_size(rx_ring), : DMA_FROM_DEVICE); : } : : /* clear contents of buffer_info */ : rx_buffer->skb = NULL; 0.00 : 7d7f: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) : rx_buffer->dma = 0; 0.00 : 7d86: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 7d8d: 00 : rx_buffer->page = NULL; 3.85 : 7d8e: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 7d95: 00 : : return skb; : } 0.00 : 7d96: 4c 89 e0 mov %r12,%rax 0.00 : 7d99: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 7d9e: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7da3: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 7da8: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7dad: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 7db2: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : 7db7: 48 83 c4 38 add $0x38,%rsp 0.00 : 7dbb: c3 retq 0.00 : 7dbc: 0f 1f 40 00 nopl 0x0(%rax) : **/ : static void ixgbe_reuse_rx_page(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *old_buff) : { : struct ixgbe_rx_buffer *new_buff; : u16 nta = rx_ring->next_to_alloc; 0.00 : 7dc0: 0f b7 45 54 movzwl 0x54(%rbp),%eax : : new_buff = &rx_ring->rx_buffer_info[nta]; : : /* update, and store next to alloc */ : nta++; : rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0; 0.00 : 7dc4: ba 00 00 00 00 mov $0x0,%edx : struct ixgbe_rx_buffer *old_buff) : { : struct ixgbe_rx_buffer *new_buff; : u16 nta = rx_ring->next_to_alloc; : : new_buff = &rx_ring->rx_buffer_info[nta]; 0.00 : 7dc9: 0f b7 c8 movzwl %ax,%ecx : : /* update, and store next to alloc */ : nta++; 0.00 : 7dcc: 83 c0 01 add $0x1,%eax : struct ixgbe_rx_buffer *old_buff) : { : struct ixgbe_rx_buffer *new_buff; : u16 nta = rx_ring->next_to_alloc; : : new_buff = &rx_ring->rx_buffer_info[nta]; 3.85 : 7dcf: 48 c1 e1 05 shl $0x5,%rcx 0.00 : 7dd3: 48 03 4d 28 add 0x28(%rbp),%rcx : : /* update, and store next to alloc */ : nta++; : rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0; 0.00 : 7dd7: 66 3b 45 4c cmp 0x4c(%rbp),%ax 0.00 : 7ddb: 0f 43 c2 cmovae %edx,%eax 0.00 : 7dde: 66 89 45 54 mov %ax,0x54(%rbp) : : /* transfer page from old buffer to new buffer */ : new_buff->page = old_buff->page; 0.00 : 7de2: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 7de6: 48 89 41 10 mov %rax,0x10(%rcx) : new_buff->dma = old_buff->dma; 3.85 : 7dea: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 7dee: 48 89 51 08 mov %rdx,0x8(%rcx) : new_buff->page_offset = old_buff->page_offset; 0.00 : 7df2: 8b 73 18 mov 0x18(%rbx),%esi 0.00 : 7df5: 89 71 18 mov %esi,0x18(%rcx) 0.00 : 7df8: 48 8b 45 30 mov 0x30(%rbp),%rax : : /* sync the buffer for use by the device */ : dma_sync_single_range_for_device(rx_ring->dev, new_buff->dma, 0.00 : 7dfc: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 7e00: 83 e0 20 and $0x20,%eax 0.00 : 7e03: 48 83 f8 01 cmp $0x1,%rax 0.00 : 7e07: 4d 19 c0 sbb %r8,%r8 0.00 : 7e0a: 49 81 e0 00 f8 ff ff and $0xfffffffffffff800,%r8 0.00 : 7e11: 49 81 c0 00 10 00 00 add $0x1000,%r8 0.00 : 7e18: 48 85 ff test %rdi,%rdi 0.00 : 7e1b: 74 53 je 7e70 0.00 : 7e1d: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 7e24: 48 85 c0 test %rax,%rax 0.00 : 7e27: 74 47 je 7e70 : enum dma_data_direction dir) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->sync_single_for_device) 0.00 : 7e29: 48 8b 40 38 mov 0x38(%rax),%rax 0.00 : 7e2d: 48 85 c0 test %rax,%rax 0.00 : 7e30: 0f 84 49 ff ff ff je 7d7f : ops->sync_single_for_device(dev, addr, size, dir); 3.85 : 7e36: 89 f6 mov %esi,%esi 0.00 : 7e38: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7e3d: 48 01 d6 add %rdx,%rsi 0.00 : 7e40: 4c 89 c2 mov %r8,%rdx 0.00 : 7e43: ff d0 callq *%rax 0.00 : 7e45: e9 35 ff ff ff jmpq 7d7f 0.00 : 7e4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return dma_ops; 0.00 : 7e50: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 7e57 0.00 : 7e57: e9 9c fe ff ff jmpq 7cf8 0.00 : 7e5c: 0f 1f 40 00 nopl 0x0(%rax) : if (ixgbe_add_rx_frag(rx_ring, rx_buffer, rx_desc, skb)) { : /* hand second half of page back to the ring */ : ixgbe_reuse_rx_page(rx_ring, rx_buffer); : } else if (IXGBE_CB(skb)->dma == rx_buffer->dma) { : /* the page has been released from the ring */ : IXGBE_CB(skb)->page_released = true; 0.00 : 7e60: c6 40 1a 01 movb $0x1,0x1a(%rax) 0.00 : 7e64: e9 16 ff ff ff jmpq 7d7f 0.00 : 7e69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7e70: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 7e77 0.00 : 7e77: eb b0 jmp 7e29 0.00 : 7e79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7e80: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 7e87 0.00 : 7e87: e9 cf fe ff ff jmpq 7d5b 0.00 : 7e8c: 0f 1f 40 00 nopl 0x0(%rax) : if (likely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))) : goto dma_sync; : : IXGBE_CB(skb)->dma = rx_buffer->dma; : } else { : if (ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP)) 0.00 : 7e90: f6 46 08 02 testb $0x2,0x8(%rsi) 0.00 : 7e94: 4c 8d 77 30 lea 0x30(%rdi),%r14 0.00 : 7e98: 0f 84 1b fe ff ff je 7cb9 : */ : static void ixgbe_dma_sync_frag(struct ixgbe_ring *rx_ring, : struct sk_buff *skb) : { : /* if the page was released unmap it, else just sync our portion */ : if (unlikely(IXGBE_CB(skb)->page_released)) { 0.00 : 7e9e: 4d 8d 7c 24 28 lea 0x28(%r12),%r15 0.00 : 7ea3: 41 80 7f 1a 00 cmpb $0x0,0x1a(%r15) 0.00 : 7ea8: 74 63 je 7f0d 0.00 : 7eaa: 48 8b 4f 30 mov 0x30(%rdi),%rcx : dma_unmap_page(rx_ring->dev, IXGBE_CB(skb)->dma, 0.00 : 7eae: 49 8b 74 24 28 mov 0x28(%r12),%rsi 0.00 : 7eb3: ba 00 10 00 00 mov $0x1000,%edx 0.00 : 7eb8: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 7ebc: 48 c1 e9 05 shr $0x5,%rcx 0.00 : 7ec0: 83 e1 01 and $0x1,%ecx 0.00 : 7ec3: 48 d3 e2 shl %cl,%rdx 0.00 : 7ec6: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7ecb: e8 30 81 ff ff callq 0 : ixgbe_rx_pg_size(rx_ring), DMA_FROM_DEVICE); : IXGBE_CB(skb)->page_released = false; 0.00 : 7ed0: 41 c6 47 1a 00 movb $0x0,0x1a(%r15) : IXGBE_CB(skb)->dma, : skb_shinfo(skb)->frags[0].page_offset, : ixgbe_rx_bufsz(rx_ring), : DMA_FROM_DEVICE); : } : IXGBE_CB(skb)->dma = 0; 0.00 : 7ed5: 49 c7 07 00 00 00 00 movq $0x0,(%r15) 0.00 : 7edc: e9 d8 fd ff ff jmpq 7cb9 0.00 : 7ee1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * reached : */ : if (likely(ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))) : goto dma_sync; : : IXGBE_CB(skb)->dma = rx_buffer->dma; 0.00 : 7ee8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7eec: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 7ef1: e9 17 fe ff ff jmpq 7d0d 0.00 : 7ef6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7efd: 00 00 00 : : /* allocate a skb to store the frags */ : skb = netdev_alloc_skb_ip_align(netdev_ring(rx_ring), : IXGBE_RX_HDR_SIZE); : if (unlikely(!skb)) { : rx_ring->rx_stats.alloc_rx_buff_failed++; 0.00 : 7f00: 48 83 85 88 00 00 00 addq $0x1,0x88(%rbp) 0.00 : 7f07: 01 : rx_buffer->skb = NULL; : rx_buffer->dma = 0; : rx_buffer->page = NULL; : : return skb; : } 0.00 : 7f08: e9 89 fe ff ff jmpq 7d96 0.00 : 7f0d: 48 8b 47 30 mov 0x30(%rdi),%rax : if (unlikely(IXGBE_CB(skb)->page_released)) { : dma_unmap_page(rx_ring->dev, IXGBE_CB(skb)->dma, : ixgbe_rx_pg_size(rx_ring), DMA_FROM_DEVICE); : IXGBE_CB(skb)->page_released = false; : } else { : dma_sync_single_range_for_cpu(rx_ring->dev, 0.00 : 7f11: 41 8b 94 24 d0 00 00 mov 0xd0(%r12),%edx 0.00 : 7f18: 00 0.00 : 7f19: 48 8b 7f 18 mov 0x18(%rdi),%rdi 0.00 : 7f1d: 83 e0 20 and $0x20,%eax 0.00 : 7f20: 48 83 f8 01 cmp $0x1,%rax 0.00 : 7f24: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 7f2b: 00 0.00 : 7f2c: 4d 19 c0 sbb %r8,%r8 0.00 : 7f2f: 49 81 e0 00 f8 ff ff and $0xfffffffffffff800,%r8 0.00 : 7f36: 49 81 c0 00 10 00 00 add $0x1000,%r8 : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 7f3d: 48 85 ff test %rdi,%rdi 0.00 : 7f40: 8b 4c 10 40 mov 0x40(%rax,%rdx,1),%ecx 0.00 : 7f44: 49 8b 54 24 28 mov 0x28(%r12),%rdx 0.00 : 7f49: 74 2d je 7f78 0.00 : 7f4b: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 7f52: 48 85 c0 test %rax,%rax 0.00 : 7f55: 74 21 je 7f78 : enum dma_data_direction dir) : { : struct dma_map_ops *ops = get_dma_ops(dev); : : BUG_ON(!valid_dma_direction(dir)); : if (ops->sync_single_for_cpu) 0.00 : 7f57: 48 8b 40 30 mov 0x30(%rax),%rax 0.00 : 7f5b: 48 85 c0 test %rax,%rax 0.00 : 7f5e: 0f 84 71 ff ff ff je 7ed5 : ops->sync_single_for_cpu(dev, addr, size, dir); 0.00 : 7f64: 89 ce mov %ecx,%esi 0.00 : 7f66: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 7f6b: 48 01 d6 add %rdx,%rsi 0.00 : 7f6e: 4c 89 c2 mov %r8,%rdx 0.00 : 7f71: ff d0 callq *%rax 0.00 : 7f73: e9 5d ff ff ff jmpq 7ed5 : return dma_ops; 0.00 : 7f78: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 7f7f 0.00 : 7f7f: eb d6 jmp 7f57 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2192 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2264 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2222 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2183 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2198 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2236 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2250 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2250 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2222 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2222 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2184 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674f50 : : * If the caller has an smgr reference for the buffer's relation, pass it : * as the second parameter. If not, pass NULL. : */ : static void : FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln) : { 0.00 : 674f50: 55 push %rbp 0.00 : 674f51: 48 89 e5 mov %rsp,%rbp 0.00 : 674f54: 41 55 push %r13 0.00 : 674f56: 49 89 f5 mov %rsi,%r13 : /* : * Acquire the buffer's io_in_progress lock. If StartBufferIO returns : * false, then someone else flushed the buffer before we could, so we need : * not do anything. : */ : if (!StartBufferIO(buf, false)) 0.00 : 674f59: 31 f6 xor %esi,%esi : * If the caller has an smgr reference for the buffer's relation, pass it : * as the second parameter. If not, pass NULL. : */ : static void : FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln) : { 0.00 : 674f5b: 41 54 push %r12 0.00 : 674f5d: 53 push %rbx 0.00 : 674f5e: 48 89 fb mov %rdi,%rbx 0.00 : 674f61: 48 83 ec 48 sub $0x48,%rsp : /* : * Acquire the buffer's io_in_progress lock. If StartBufferIO returns : * false, then someone else flushed the buffer before we could, so we need : * not do anything. : */ : if (!StartBufferIO(buf, false)) 0.00 : 674f65: e8 d6 f4 ff ff callq 674440 0.00 : 674f6a: 84 c0 test %al,%al 0.00 : 674f6c: 0f 84 e3 00 00 00 je 675055 : return; : : /* Setup error traceback support for ereport() */ : errcallback.callback = shared_buffer_write_error_callback; : errcallback.arg = (void *) buf; : errcallback.previous = error_context_stack; 0.00 : 674f72: 48 8b 05 c7 46 54 00 mov 0x5446c7(%rip),%rax # bb9640 : error_context_stack = &errcallback; : : /* Find smgr relation for buffer */ : if (reln == NULL) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2183 6.25 : 674f79: 4d 85 ed test %r13,%r13 : */ : if (!StartBufferIO(buf, false)) : return; : : /* Setup error traceback support for ereport() */ : errcallback.callback = shared_buffer_write_error_callback; 0.00 : 674f7c: 48 c7 45 a8 50 53 67 movq $0x675350,-0x58(%rbp) 0.00 : 674f83: 00 : errcallback.arg = (void *) buf; 0.00 : 674f84: 48 89 5d b0 mov %rbx,-0x50(%rbp) : errcallback.previous = error_context_stack; 0.00 : 674f88: 48 89 45 a0 mov %rax,-0x60(%rbp) : error_context_stack = &errcallback; 0.00 : 674f8c: 48 8d 45 a0 lea -0x60(%rbp),%rax 0.00 : 674f90: 48 89 05 a9 46 54 00 mov %rax,0x5446a9(%rip) # bb9640 : : /* Find smgr relation for buffer */ : if (reln == NULL) 0.00 : 674f97: 0f 84 b3 01 00 00 je 675150 : buf->tag.blockNum, : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode); : : LockBufHdr(buf); 0.00 : 674f9d: 48 8d 7b 20 lea 0x20(%rbx),%rdi : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 674fa1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 674fa6: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2192 25.00 : 674fa9: 84 c0 test %al,%al 0.00 : 674fab: 0f 85 5f 01 00 00 jne 675110 : : /* : * Run PageGetLSN while holding header lock, since we don't have the : * buffer locked exclusively in all cases. : */ : recptr = BufferGetLSN(buf); 0.00 : 674fb1: 8b 43 24 mov 0x24(%rbx),%eax 0.00 : 674fb4: 48 8b 15 3d ab 54 00 mov 0x54ab3d(%rip),%rdx # bbfaf8 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2198 6.25 : 674fbb: 48 98 cltq 0.00 : 674fbd: 48 c1 e0 0d shl $0xd,%rax 0.00 : 674fc1: 8b 0c 02 mov (%rdx,%rax,1),%ecx 0.00 : 674fc4: 8b 43 24 mov 0x24(%rbx),%eax 0.00 : 674fc7: 48 98 cltq 0.00 : 674fc9: 48 c1 e0 0d shl $0xd,%rax 0.00 : 674fcd: 8b 54 02 04 mov 0x4(%rdx,%rax,1),%edx : : /* To check if block content changes while flushing. - vadim 01/17/97 */ : buf->flags &= ~BM_JUST_DIRTIED; 0.00 : 674fd1: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674fd5: 83 e0 df and $0xffffffdf,%eax 0.00 : 674fd8: 66 89 43 14 mov %ax,0x14(%rbx) : UnlockBufHdr(buf); 0.00 : 674fdc: c6 43 20 00 movb $0x0,0x20(%rbx) : * LSN counter could advance past the WAL insertion point; and if it did : * happen, attempting to flush WAL through that location would fail, with : * disastrous system-wide consequences. To make sure that can't happen, : * skip the flush if the buffer isn't permanent. : */ : if (buf->flags & BM_PERMANENT) 0.00 : 674fe0: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 674fe4: f6 c4 01 test $0x1,%ah 0.00 : 674fe7: 0f 85 3b 01 00 00 jne 675128 : /* : * Now it's safe to write buffer to disk. Note that no one else should : * have been able to write it while we were busy with log flushing because : * we have the io_in_progress lock. : */ : bufBlock = BufHdrGetBlock(buf); 0.00 : 674fed: 8b 7b 24 mov 0x24(%rbx),%edi : /* : * Update page checksum if desired. Since we have only shared lock on the : * buffer, other processes might be updating hint bits in it, so we must : * copy the page to private storage if we do checksumming. : */ : bufToWrite = PageSetChecksumCopy((Page) bufBlock, buf->tag.blockNum); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2236 6.25 : 674ff0: 8b 73 10 mov 0x10(%rbx),%esi 0.00 : 674ff3: 48 63 ff movslq %edi,%rdi 0.00 : 674ff6: 48 c1 e7 0d shl $0xd,%rdi 0.00 : 674ffa: 48 03 3d f7 aa 54 00 add 0x54aaf7(%rip),%rdi # bbfaf8 0.00 : 675001: e8 2a fe 01 00 callq 694e30 : : if (track_io_timing) 0.00 : 675006: 80 3d 54 80 50 00 00 cmpb $0x0,0x508054(%rip) # b7d061 : /* : * Update page checksum if desired. Since we have only shared lock on the : * buffer, other processes might be updating hint bits in it, so we must : * copy the page to private storage if we do checksumming. : */ : bufToWrite = PageSetChecksumCopy((Page) bufBlock, buf->tag.blockNum); 0.00 : 67500d: 49 89 c4 mov %rax,%r12 : : if (track_io_timing) 0.00 : 675010: 0f 85 2a 01 00 00 jne 675140 : INSTR_TIME_SET_CURRENT(io_start); : : /* : * bufToWrite is either the shared buffer or a copy, as appropriate. : */ : smgrwrite(reln, 0.00 : 675016: 8b 53 10 mov 0x10(%rbx),%edx 0.00 : 675019: 8b 73 0c mov 0xc(%rbx),%esi 0.00 : 67501c: 45 31 c0 xor %r8d,%r8d 0.00 : 67501f: 4c 89 e1 mov %r12,%rcx 0.00 : 675022: 4c 89 ef mov %r13,%rdi 0.00 : 675025: e8 06 44 02 00 callq 699430 : buf->tag.forkNum, : buf->tag.blockNum, : bufToWrite, : false); : : if (track_io_timing) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2250 6.25 : 67502a: 80 3d 30 80 50 00 00 cmpb $0x0,0x508030(%rip) # b7d061 6.25 : 675031: 75 2d jne 675060 : : /* : * Mark the buffer as clean (unless BM_JUST_DIRTIED has become set) and : * end the io_in_progress state. : */ : TerminateBufferIO(buf, true, 0); 0.00 : 675033: 31 d2 xor %edx,%edx 0.00 : 675035: be 01 00 00 00 mov $0x1,%esi 0.00 : 67503a: 48 89 df mov %rbx,%rdi : INSTR_TIME_SUBTRACT(io_time, io_start); : pgstat_count_buffer_write_time(INSTR_TIME_GET_MICROSEC(io_time)); : INSTR_TIME_ADD(pgBufferUsage.blk_write_time, io_time); : } : : pgBufferUsage.shared_blks_written++; 0.00 : 67503d: 48 83 05 33 a7 54 00 addq $0x1,0x54a733(%rip) # bbf778 0.00 : 675044: 01 : : /* : * Mark the buffer as clean (unless BM_JUST_DIRTIED has become set) and : * end the io_in_progress state. : */ : TerminateBufferIO(buf, true, 0); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2264 12.50 : 675045: e8 86 f1 ff ff callq 6741d0 : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode); : : /* Pop the error context stack */ : error_context_stack = errcallback.previous; 0.00 : 67504a: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 67504e: 48 89 05 eb 45 54 00 mov %rax,0x5445eb(%rip) # bb9640 : } 0.00 : 675055: 48 83 c4 48 add $0x48,%rsp 0.00 : 675059: 5b pop %rbx 0.00 : 67505a: 41 5c pop %r12 0.00 : 67505c: 41 5d pop %r13 0.00 : 67505e: c9 leaveq 0.00 : 67505f: c3 retq : bufToWrite, : false); : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); 0.00 : 675060: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 675064: 31 f6 xor %esi,%esi 0.00 : 675066: e8 55 45 df ff callq 4695c0 : INSTR_TIME_SUBTRACT(io_time, io_start); 0.00 : 67506b: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 67506f: 48 2b 55 d8 sub -0x28(%rbp),%rdx 0.00 : 675073: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 675077: 48 2b 45 d0 sub -0x30(%rbp),%rax 0.00 : 67507b: 48 85 d2 test %rdx,%rdx 0.00 : 67507e: 48 89 55 c8 mov %rdx,-0x38(%rbp) 0.00 : 675082: 48 89 c1 mov %rax,%rcx 0.00 : 675085: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 675089: 79 1d jns 6750a8 0.00 : 67508b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * If the caller has an smgr reference for the buffer's relation, pass it : * as the second parameter. If not, pass NULL. : */ : static void : FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln) : { 0.00 : 675090: 48 83 e8 01 sub $0x1,%rax : false); : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); : INSTR_TIME_SUBTRACT(io_time, io_start); 0.00 : 675094: 48 81 c2 40 42 0f 00 add $0xf4240,%rdx 0.00 : 67509b: 78 f3 js 675090 0.00 : 67509d: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 6750a1: 48 89 55 c8 mov %rdx,-0x38(%rbp) 0.00 : 6750a5: 48 89 c1 mov %rax,%rcx : pgstat_count_buffer_write_time(INSTR_TIME_GET_MICROSEC(io_time)); 0.00 : 6750a8: 48 69 c1 40 42 0f 00 imul $0xf4240,%rcx,%rax : INSTR_TIME_ADD(pgBufferUsage.blk_write_time, io_time); 0.00 : 6750af: 48 03 0d 0a a7 54 00 add 0x54a70a(%rip),%rcx # bbf7c0 : : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); : INSTR_TIME_SUBTRACT(io_time, io_start); : pgstat_count_buffer_write_time(INSTR_TIME_GET_MICROSEC(io_time)); 0.00 : 6750b6: 48 8d 04 02 lea (%rdx,%rax,1),%rax 0.00 : 6750ba: 48 01 05 07 6b 50 00 add %rax,0x506b07(%rip) # b7bbc8 : INSTR_TIME_ADD(pgBufferUsage.blk_write_time, io_time); 0.00 : 6750c1: 48 89 d0 mov %rdx,%rax 0.00 : 6750c4: 48 03 05 fd a6 54 00 add 0x54a6fd(%rip),%rax # bbf7c8 0.00 : 6750cb: 48 89 0d ee a6 54 00 mov %rcx,0x54a6ee(%rip) # bbf7c0 0.00 : 6750d2: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6750d8: 48 89 05 e9 a6 54 00 mov %rax,0x54a6e9(%rip) # bbf7c8 0.00 : 6750df: 0f 8e 4e ff ff ff jle 675033 0.00 : 6750e5: 0f 1f 00 nopl (%rax) 0.00 : 6750e8: 48 2d 40 42 0f 00 sub $0xf4240,%rax : * If the caller has an smgr reference for the buffer's relation, pass it : * as the second parameter. If not, pass NULL. : */ : static void : FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln) : { 0.00 : 6750ee: 48 83 c1 01 add $0x1,%rcx : if (track_io_timing) : { : INSTR_TIME_SET_CURRENT(io_time); : INSTR_TIME_SUBTRACT(io_time, io_start); : pgstat_count_buffer_write_time(INSTR_TIME_GET_MICROSEC(io_time)); : INSTR_TIME_ADD(pgBufferUsage.blk_write_time, io_time); 0.00 : 6750f2: 48 3d 3f 42 0f 00 cmp $0xf423f,%rax 0.00 : 6750f8: 7f ee jg 6750e8 0.00 : 6750fa: 48 89 0d bf a6 54 00 mov %rcx,0x54a6bf(%rip) # bbf7c0 0.00 : 675101: 48 89 05 c0 a6 54 00 mov %rax,0x54a6c0(%rip) # bbf7c8 0.00 : 675108: e9 26 ff ff ff jmpq 675033 0.00 : 67510d: 0f 1f 00 nopl (%rax) : buf->tag.blockNum, : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode); : : LockBufHdr(buf); 0.00 : 675110: ba 90 08 00 00 mov $0x890,%edx 0.00 : 675115: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 67511a: e8 21 af 01 00 callq 690040 0.00 : 67511f: e9 8d fe ff ff jmpq 674fb1 0.00 : 675124: 0f 1f 40 00 nopl 0x0(%rax) : * happen, attempting to flush WAL through that location would fail, with : * disastrous system-wide consequences. To make sure that can't happen, : * skip the flush if the buffer isn't permanent. : */ : if (buf->flags & BM_PERMANENT) : XLogFlush(recptr); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2222 12.50 : 675128: 48 89 cf mov %rcx,%rdi 6.25 : 67512b: 89 d0 mov %edx,%eax 0.00 : 67512d: 48 c1 e7 20 shl $0x20,%rdi 0.00 : 675131: 48 09 c7 or %rax,%rdi 0.00 : 675134: e8 17 fa e5 ff callq 4d4b50 6.25 : 675139: e9 af fe ff ff jmpq 674fed 0.00 : 67513e: 66 90 xchg %ax,%ax : * copy the page to private storage if we do checksumming. : */ : bufToWrite = PageSetChecksumCopy((Page) bufBlock, buf->tag.blockNum); : : if (track_io_timing) : INSTR_TIME_SET_CURRENT(io_start); 0.00 : 675140: 48 8d 7d d0 lea -0x30(%rbp),%rdi 0.00 : 675144: 31 f6 xor %esi,%esi 0.00 : 675146: e8 75 44 df ff callq 4695c0 0.00 : 67514b: e9 c6 fe ff ff jmpq 675016 : errcallback.previous = error_context_stack; : error_context_stack = &errcallback; : : /* Find smgr relation for buffer */ : if (reln == NULL) : reln = smgropen(buf->tag.rnode, InvalidBackendId); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2184 6.25 : 675150: 48 8b 3b mov (%rbx),%rdi 0.00 : 675153: 8b 73 08 mov 0x8(%rbx),%esi 0.00 : 675156: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 67515b: e8 d0 48 02 00 callq 699a30 0.00 : 675160: 49 89 c5 mov %rax,%r13 0.00 : 675163: e9 35 fe ff ff jmpq 674f9d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 31.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:538 18.75 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:537 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:538 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:503 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:511 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:511 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:537 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:537 6.25 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:537 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067be00 : : * If the page doesn't exist, InvalidBuffer is returned, or if 'extend' is : * true, the FSM file is extended. : */ : static Buffer : fsm_readbuf(Relation rel, FSMAddress addr, bool extend) : { 0.00 : 67be00: 55 push %rbp 0.00 : 67be01: 48 89 e5 mov %rsp,%rbp 0.00 : 67be04: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 67be08: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 67be0c: 49 89 fc mov %rdi,%r12 0.00 : 67be0f: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 67be13: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 67be17: 48 89 f7 mov %rsi,%rdi 0.00 : 67be1a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 67be1e: 48 83 ec 30 sub $0x30,%rsp 0.00 : 67be22: 41 89 d5 mov %edx,%r13d : BlockNumber blkno = fsm_logical_to_physical(addr); 0.00 : 67be25: e8 46 ff ff ff callq 67bd70 : Buffer buf; : : RelationOpenSmgr(rel); 0.00 : 67be2a: 49 8b 7c 24 10 mov 0x10(%r12),%rdi : * true, the FSM file is extended. : */ : static Buffer : fsm_readbuf(Relation rel, FSMAddress addr, bool extend) : { : BlockNumber blkno = fsm_logical_to_physical(addr); 0.00 : 67be2f: 41 89 c6 mov %eax,%r14d : Buffer buf; : : RelationOpenSmgr(rel); /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:503 6.25 : 67be32: 48 85 ff test %rdi,%rdi 0.00 : 67be35: 0f 84 d5 01 00 00 je 67c010 : * If we haven't cached the size of the FSM yet, check it first. Also : * recheck if the requested block seems to be past end, since our cached : * value might be stale. (We send smgr inval messages on truncation, but : * not on extension.) : */ : if (rel->rd_smgr->smgr_fsm_nblocks == InvalidBlockNumber || 0.00 : 67be3b: 8b 47 1c mov 0x1c(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:511 6.25 : 67be3e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 67be41: 74 09 je 67be4c 6.25 : 67be43: 41 39 c6 cmp %eax,%r14d 0.00 : 67be46: 0f 82 0e 01 00 00 jb 67bf5a : blkno >= rel->rd_smgr->smgr_fsm_nblocks) : { : if (smgrexists(rel->rd_smgr, FSM_FORKNUM)) 0.00 : 67be4c: be 01 00 00 00 mov $0x1,%esi 0.00 : 67be51: e8 5a d5 01 00 callq 6993b0 0.00 : 67be56: 84 c0 test %al,%al 0.00 : 67be58: 0f 85 62 01 00 00 jne 67bfc0 : rel->rd_smgr->smgr_fsm_nblocks = smgrnblocks(rel->rd_smgr, : FSM_FORKNUM); : else : rel->rd_smgr->smgr_fsm_nblocks = 0; 0.00 : 67be5e: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 67be63: c7 40 1c 00 00 00 00 movl $0x0,0x1c(%rax) : } : : /* Handle requests beyond EOF */ : if (blkno >= rel->rd_smgr->smgr_fsm_nblocks) 0.00 : 67be6a: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 67be6f: 44 3b 70 1c cmp 0x1c(%rax),%r14d 0.00 : 67be73: 0f 82 e1 00 00 00 jb 67bf5a : { : if (extend) 0.00 : 67be79: 31 db xor %ebx,%ebx 0.00 : 67be7b: 45 84 ed test %r13b,%r13b 0.00 : 67be7e: 75 20 jne 67bea0 : */ : buf = ReadBufferExtended(rel, FSM_FORKNUM, blkno, RBM_ZERO_ON_ERROR, NULL); : if (PageIsNew(BufferGetPage(buf))) : PageInit(BufferGetPage(buf), BLCKSZ, 0); : return buf; : } 0.00 : 67be80: 89 d8 mov %ebx,%eax 0.00 : 67be82: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 67be86: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 67be8a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 67be8e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 67be92: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 67be96: c9 leaveq 0.00 : 67be97: c3 retq 0.00 : 67be98: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 67be9f: 00 : fsm_extend(Relation rel, BlockNumber fsm_nblocks) : { : BlockNumber fsm_nblocks_now; : Page pg; : : pg = (Page) palloc(BLCKSZ); 0.00 : 67bea0: bf 00 20 00 00 mov $0x2000,%edi : : /* Handle requests beyond EOF */ : if (blkno >= rel->rd_smgr->smgr_fsm_nblocks) : { : if (extend) : fsm_extend(rel, blkno + 1); 0.00 : 67bea5: 45 8d 7e 01 lea 0x1(%r14),%r15d : fsm_extend(Relation rel, BlockNumber fsm_nblocks) : { : BlockNumber fsm_nblocks_now; : Page pg; : : pg = (Page) palloc(BLCKSZ); 0.00 : 67bea9: e8 a2 ce 11 00 callq 798d50 : PageInit(pg, BLCKSZ, 0); 0.00 : 67beae: 31 d2 xor %edx,%edx 0.00 : 67beb0: 48 89 c7 mov %rax,%rdi 0.00 : 67beb3: be 00 20 00 00 mov $0x2000,%esi : fsm_extend(Relation rel, BlockNumber fsm_nblocks) : { : BlockNumber fsm_nblocks_now; : Page pg; : : pg = (Page) palloc(BLCKSZ); 0.00 : 67beb8: 49 89 c5 mov %rax,%r13 : PageInit(pg, BLCKSZ, 0); 0.00 : 67bebb: e8 80 a3 01 00 callq 696240 : * it. : * : * Note that another backend might have extended or created the relation : * by the time we get the lock. : */ : LockRelationForExtension(rel, ExclusiveLock); 0.00 : 67bec0: 4c 89 e7 mov %r12,%rdi 0.00 : 67bec3: be 07 00 00 00 mov $0x7,%esi 0.00 : 67bec8: e8 73 bf 00 00 callq 687e40 : : /* Might have to re-open if a cache flush happened */ : RelationOpenSmgr(rel); 0.00 : 67becd: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 67bed2: 48 85 ff test %rdi,%rdi 0.00 : 67bed5: 0f 84 75 01 00 00 je 67c050 : : /* : * Create the FSM file first if it doesn't exist. If smgr_fsm_nblocks is : * positive then it must exist, no need for an smgrexists call. : */ : if ((rel->rd_smgr->smgr_fsm_nblocks == 0 || 0.00 : 67bedb: 8b 47 1c mov 0x1c(%rdi),%eax 0.00 : 67bede: 83 e8 01 sub $0x1,%eax 0.00 : 67bee1: 83 f8 fd cmp $0xfffffffd,%eax 0.00 : 67bee4: 76 17 jbe 67befd 0.00 : 67bee6: be 01 00 00 00 mov $0x1,%esi 0.00 : 67beeb: e8 c0 d4 01 00 callq 6993b0 0.00 : 67bef0: 84 c0 test %al,%al 0.00 : 67bef2: 0f 84 42 01 00 00 je 67c03a : rel->rd_smgr->smgr_fsm_nblocks == InvalidBlockNumber) && : !smgrexists(rel->rd_smgr, FSM_FORKNUM)) : smgrcreate(rel->rd_smgr, FSM_FORKNUM, false); 0.00 : 67bef8: 49 8b 7c 24 10 mov 0x10(%r12),%rdi : : fsm_nblocks_now = smgrnblocks(rel->rd_smgr, FSM_FORKNUM); 0.00 : 67befd: be 01 00 00 00 mov $0x1,%esi 0.00 : 67bf02: e8 49 d5 01 00 callq 699450 : : while (fsm_nblocks_now < fsm_nblocks) 0.00 : 67bf07: 41 39 c7 cmp %eax,%r15d : if ((rel->rd_smgr->smgr_fsm_nblocks == 0 || : rel->rd_smgr->smgr_fsm_nblocks == InvalidBlockNumber) && : !smgrexists(rel->rd_smgr, FSM_FORKNUM)) : smgrcreate(rel->rd_smgr, FSM_FORKNUM, false); : : fsm_nblocks_now = smgrnblocks(rel->rd_smgr, FSM_FORKNUM); 0.00 : 67bf0a: 89 c2 mov %eax,%edx : : while (fsm_nblocks_now < fsm_nblocks) 0.00 : 67bf0c: 76 2f jbe 67bf3d 0.00 : 67bf0e: 89 c3 mov %eax,%ebx : { : PageSetChecksumInplace(pg, fsm_nblocks_now); 0.00 : 67bf10: 89 de mov %ebx,%esi 0.00 : 67bf12: 4c 89 ef mov %r13,%rdi 0.00 : 67bf15: e8 c6 8e 01 00 callq 694de0 : : smgrextend(rel->rd_smgr, FSM_FORKNUM, fsm_nblocks_now, 0.00 : 67bf1a: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 67bf1f: 45 31 c0 xor %r8d,%r8d 0.00 : 67bf22: 89 da mov %ebx,%edx 0.00 : 67bf24: 4c 89 e9 mov %r13,%rcx 0.00 : 67bf27: be 01 00 00 00 mov $0x1,%esi : (char *) pg, false); : fsm_nblocks_now++; 0.00 : 67bf2c: 83 c3 01 add $0x1,%ebx : : while (fsm_nblocks_now < fsm_nblocks) : { : PageSetChecksumInplace(pg, fsm_nblocks_now); : : smgrextend(rel->rd_smgr, FSM_FORKNUM, fsm_nblocks_now, 0.00 : 67bf2f: e8 9c d4 01 00 callq 6993d0 : !smgrexists(rel->rd_smgr, FSM_FORKNUM)) : smgrcreate(rel->rd_smgr, FSM_FORKNUM, false); : : fsm_nblocks_now = smgrnblocks(rel->rd_smgr, FSM_FORKNUM); : : while (fsm_nblocks_now < fsm_nblocks) 0.00 : 67bf34: 41 39 df cmp %ebx,%r15d 0.00 : 67bf37: 77 d7 ja 67bf10 : * If the page doesn't exist, InvalidBuffer is returned, or if 'extend' is : * true, the FSM file is extended. : */ : static Buffer : fsm_readbuf(Relation rel, FSMAddress addr, bool extend) : { 0.00 : 67bf39: 41 8d 56 01 lea 0x1(%r14),%edx : (char *) pg, false); : fsm_nblocks_now++; : } : : /* Update local cache with the up-to-date size */ : rel->rd_smgr->smgr_fsm_nblocks = fsm_nblocks_now; 0.00 : 67bf3d: 49 8b 44 24 10 mov 0x10(%r12),%rax : : UnlockRelationForExtension(rel, ExclusiveLock); 0.00 : 67bf42: 4c 89 e7 mov %r12,%rdi 0.00 : 67bf45: be 07 00 00 00 mov $0x7,%esi : (char *) pg, false); : fsm_nblocks_now++; : } : : /* Update local cache with the up-to-date size */ : rel->rd_smgr->smgr_fsm_nblocks = fsm_nblocks_now; 0.00 : 67bf4a: 89 50 1c mov %edx,0x1c(%rax) : : UnlockRelationForExtension(rel, ExclusiveLock); 0.00 : 67bf4d: e8 3e bc 00 00 callq 687b90 : : pfree(pg); 0.00 : 67bf52: 4c 89 ef mov %r13,%rdi 0.00 : 67bf55: e8 26 cc 11 00 callq 798b80 : * information is not accurate anyway, so it's better to clear corrupt : * pages than error out. Since the FSM changes are not WAL-logged, the : * so-called torn page problem on crash can lead to pages with corrupt : * headers, for example. : */ : buf = ReadBufferExtended(rel, FSM_FORKNUM, blkno, RBM_ZERO_ON_ERROR, NULL); /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:537 18.75 : 67bf5a: 45 31 c0 xor %r8d,%r8d 6.25 : 67bf5d: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 67bf62: 44 89 f2 mov %r14d,%edx 0.00 : 67bf65: be 01 00 00 00 mov $0x1,%esi 6.25 : 67bf6a: 4c 89 e7 mov %r12,%rdi 0.00 : 67bf6d: e8 fe a5 ff ff callq 676570 : if (PageIsNew(BufferGetPage(buf))) 0.00 : 67bf72: 85 c0 test %eax,%eax : * information is not accurate anyway, so it's better to clear corrupt : * pages than error out. Since the FSM changes are not WAL-logged, the : * so-called torn page problem on crash can lead to pages with corrupt : * headers, for example. : */ : buf = ReadBufferExtended(rel, FSM_FORKNUM, blkno, RBM_ZERO_ON_ERROR, NULL); 6.25 : 67bf74: 89 c3 mov %eax,%ebx : if (PageIsNew(BufferGetPage(buf))) 0.00 : 67bf76: 78 68 js 67bfe0 0.00 : 67bf78: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 67bf7b: 48 98 cltq 0.00 : 67bf7d: 48 c1 e0 0d shl $0xd,%rax 0.00 : 67bf81: 48 03 05 70 3b 54 00 add 0x543b70(%rip),%rax # bbfaf8 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:538 12.50 : 67bf88: 66 83 78 0e 00 cmpw $0x0,0xe(%rax) 31.25 : 67bf8d: 0f 85 ed fe ff ff jne 67be80 : PageInit(BufferGetPage(buf), BLCKSZ, 0); 0.00 : 67bf93: 85 db test %ebx,%ebx 0.00 : 67bf95: 78 61 js 67bff8 0.00 : 67bf97: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 67bf9a: 48 63 f8 movslq %eax,%rdi 0.00 : 67bf9d: 48 c1 e7 0d shl $0xd,%rdi 0.00 : 67bfa1: 48 03 3d 50 3b 54 00 add 0x543b50(%rip),%rdi # bbfaf8 0.00 : 67bfa8: 31 d2 xor %edx,%edx 0.00 : 67bfaa: be 00 20 00 00 mov $0x2000,%esi 0.00 : 67bfaf: e8 8c a2 01 00 callq 696240 0.00 : 67bfb4: e9 c7 fe ff ff jmpq 67be80 0.00 : 67bfb9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : */ : if (rel->rd_smgr->smgr_fsm_nblocks == InvalidBlockNumber || : blkno >= rel->rd_smgr->smgr_fsm_nblocks) : { : if (smgrexists(rel->rd_smgr, FSM_FORKNUM)) : rel->rd_smgr->smgr_fsm_nblocks = smgrnblocks(rel->rd_smgr, 0.00 : 67bfc0: 49 8b 5c 24 10 mov 0x10(%r12),%rbx 0.00 : 67bfc5: be 01 00 00 00 mov $0x1,%esi 0.00 : 67bfca: 48 89 df mov %rbx,%rdi 0.00 : 67bfcd: e8 7e d4 01 00 callq 699450 0.00 : 67bfd2: 89 43 1c mov %eax,0x1c(%rbx) 0.00 : 67bfd5: e9 90 fe ff ff jmpq 67be6a 0.00 : 67bfda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * pages than error out. Since the FSM changes are not WAL-logged, the : * so-called torn page problem on crash can lead to pages with corrupt : * headers, for example. : */ : buf = ReadBufferExtended(rel, FSM_FORKNUM, blkno, RBM_ZERO_ON_ERROR, NULL); : if (PageIsNew(BufferGetPage(buf))) 0.00 : 67bfe0: 48 8b 15 31 11 50 00 mov 0x501131(%rip),%rdx # b7d118 0.00 : 67bfe7: f7 d0 not %eax 0.00 : 67bfe9: 48 98 cltq 0.00 : 67bfeb: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 67bfef: eb 97 jmp 67bf88 0.00 : 67bff1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : PageInit(BufferGetPage(buf), BLCKSZ, 0); 0.00 : 67bff8: 89 d8 mov %ebx,%eax 0.00 : 67bffa: 48 8b 15 17 11 50 00 mov 0x501117(%rip),%rdx # b7d118 0.00 : 67c001: f7 d0 not %eax 0.00 : 67c003: 48 98 cltq 0.00 : 67c005: 48 8b 3c c2 mov (%rdx,%rax,8),%rdi 0.00 : 67c009: eb 9d jmp 67bfa8 0.00 : 67c00b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : fsm_readbuf(Relation rel, FSMAddress addr, bool extend) : { : BlockNumber blkno = fsm_logical_to_physical(addr); : Buffer buf; : : RelationOpenSmgr(rel); 0.00 : 67c010: 41 8b 54 24 1c mov 0x1c(%r12),%edx 0.00 : 67c015: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 67c019: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 67c01e: e8 0d da 01 00 callq 699a30 0.00 : 67c023: 49 8d 7c 24 10 lea 0x10(%r12),%rdi 0.00 : 67c028: 48 89 c6 mov %rax,%rsi 0.00 : 67c02b: e8 d0 d2 01 00 callq 699300 0.00 : 67c030: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 67c035: e9 01 fe ff ff jmpq 67be3b : * positive then it must exist, no need for an smgrexists call. : */ : if ((rel->rd_smgr->smgr_fsm_nblocks == 0 || : rel->rd_smgr->smgr_fsm_nblocks == InvalidBlockNumber) && : !smgrexists(rel->rd_smgr, FSM_FORKNUM)) : smgrcreate(rel->rd_smgr, FSM_FORKNUM, false); 0.00 : 67c03a: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 67c03f: 31 d2 xor %edx,%edx 0.00 : 67c041: be 01 00 00 00 mov $0x1,%esi 0.00 : 67c046: e8 a5 d7 01 00 callq 6997f0 0.00 : 67c04b: e9 a8 fe ff ff jmpq 67bef8 : * by the time we get the lock. : */ : LockRelationForExtension(rel, ExclusiveLock); : : /* Might have to re-open if a cache flush happened */ : RelationOpenSmgr(rel); 0.00 : 67c050: 41 8b 54 24 1c mov 0x1c(%r12),%edx 0.00 : 67c055: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 67c059: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 67c05e: e8 cd d9 01 00 callq 699a30 0.00 : 67c063: 49 8d 7c 24 10 lea 0x10(%r12),%rdi 0.00 : 67c068: 48 89 c6 mov %rax,%rsi 0.00 : 67c06b: e8 90 d2 01 00 callq 699300 0.00 : 67c070: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 67c075: e9 61 fe ff ff jmpq 67bedb Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:338 26.67 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:342 13.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:335 13.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:338 13.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:343 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c0040 : : /* : * TransactionIdFollows --- is id1 logically > id2? : */ : bool : TransactionIdFollows(TransactionId id1, TransactionId id2) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:335 13.33 : 4c0040: 55 push %rbp : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:338 13.33 : 4c0041: 83 ff 02 cmp $0x2,%edi : /* : * TransactionIdFollows --- is id1 logically > id2? : */ : bool : TransactionIdFollows(TransactionId id1, TransactionId id2) : { 0.00 : 4c0044: 48 89 e5 mov %rsp,%rbp : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) 33.33 : 4c0047: 76 17 jbe 4c0060 0.00 : 4c0049: 83 fe 02 cmp $0x2,%esi 0.00 : 4c004c: 76 12 jbe 4c0060 : return (id1 > id2); : : diff = (int32) (id1 - id2); : return (diff > 0); 0.00 : 4c004e: 29 f7 sub %esi,%edi : } 0.00 : 4c0050: c9 leaveq : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 > id2); : : diff = (int32) (id1 - id2); : return (diff > 0); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:342 26.67 : 4c0051: 85 ff test %edi,%edi 0.00 : 4c0053: 0f 9f c0 setg %al : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:343 13.33 : 4c0056: c3 retq 0.00 : 4c0057: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4c005e: 00 00 : TransactionIdFollows(TransactionId id1, TransactionId id2) : { : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 > id2); 0.00 : 4c0060: 39 f7 cmp %esi,%edi : : diff = (int32) (id1 - id2); : return (diff > 0); : } 0.00 : 4c0062: c9 leaveq : TransactionIdFollows(TransactionId id1, TransactionId id2) : { : int32 diff; : : if (!TransactionIdIsNormal(id1) || !TransactionIdIsNormal(id2)) : return (id1 > id2); 0.00 : 4c0063: 0f 97 c0 seta %al Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 26.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:109 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:94 13.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:74 13.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:103 6.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:71 6.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:95 6.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:99 6.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:103 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067cb00 : : * The caller must hold an exclusive lock on the page. : */ : bool : fsm_set_avail(Page page, int slot, uint8 value) : { : int nodeno = NonLeafNodesPerPage + slot; 0.00 : 67cb00: 44 8d 8e ff 0f 00 00 lea 0xfff(%rsi),%r9d : FSMPage fsmpage = (FSMPage) PageGetContents(page); 0.00 : 67cb07: 4c 8d 47 18 lea 0x18(%rdi),%r8 : * : * The caller must hold an exclusive lock on the page. : */ : bool : fsm_set_avail(Page page, int slot, uint8 value) : { 0.00 : 67cb0b: 55 push %rbp 0.00 : 67cb0c: 41 89 d2 mov %edx,%r10d : FSMPage fsmpage = (FSMPage) PageGetContents(page); : uint8 oldvalue; : : Assert(slot < LeafNodesPerPage); : : oldvalue = fsmpage->fp_nodes[nodeno]; 0.00 : 67cb0f: 49 63 c9 movslq %r9d,%rcx : * : * The caller must hold an exclusive lock on the page. : */ : bool : fsm_set_avail(Page page, int slot, uint8 value) : { 0.00 : 67cb12: 48 89 e5 mov %rsp,%rbp : FSMPage fsmpage = (FSMPage) PageGetContents(page); : uint8 oldvalue; : : Assert(slot < LeafNodesPerPage); : : oldvalue = fsmpage->fp_nodes[nodeno]; /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:71 6.67 : 67cb15: 41 0f b6 54 08 04 movzbl 0x4(%r8,%rcx,1),%edx : : /* If the value hasn't changed, we don't need to do anything */ : if (oldvalue == value && value <= fsmpage->fp_nodes[0]) /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:74 13.33 : 67cb1b: 44 38 d2 cmp %r10b,%dl 0.00 : 67cb1e: 74 78 je 67cb98 : return false; : : fsmpage->fp_nodes[nodeno] = value; 0.00 : 67cb20: 45 88 54 08 04 mov %r10b,0x4(%r8,%rcx,1) 0.00 : 67cb25: 0f 1f 00 nopl (%rax) : { : uint8 newvalue = 0; : int lchild; : int rchild; : : nodeno = parentof(nodeno); 0.00 : 67cb28: 41 8d 51 ff lea -0x1(%r9),%edx 0.00 : 67cb2c: 89 d0 mov %edx,%eax 0.00 : 67cb2e: c1 e8 1f shr $0x1f,%eax 0.00 : 67cb31: 8d 34 10 lea (%rax,%rdx,1),%esi 0.00 : 67cb34: d1 fe sar %esi 0.00 : 67cb36: 41 89 f1 mov %esi,%r9d : lchild = leftchild(nodeno); 0.00 : 67cb39: 43 8d 14 09 lea (%r9,%r9,1),%edx 0.00 : 67cb3d: 8d 42 01 lea 0x1(%rdx),%eax : rchild = lchild + 1; 0.00 : 67cb40: 83 c2 02 add $0x2,%edx : : newvalue = fsmpage->fp_nodes[lchild]; : if (rchild < NodesPerPage) 0.00 : 67cb43: 81 fa e3 1f 00 00 cmp $0x1fe3,%edx : : nodeno = parentof(nodeno); : lchild = leftchild(nodeno); : rchild = lchild + 1; : : newvalue = fsmpage->fp_nodes[lchild]; 0.00 : 67cb49: 48 98 cltq 0.00 : 67cb4b: 41 0f b6 4c 00 04 movzbl 0x4(%r8,%rax,1),%ecx : if (rchild < NodesPerPage) /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:94 20.00 : 67cb51: 77 0e ja 67cb61 : newvalue = Max(newvalue, 0.00 : 67cb53: 48 63 c2 movslq %edx,%rax 0.00 : 67cb56: 41 0f b6 44 00 04 movzbl 0x4(%r8,%rax,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:95 6.67 : 67cb5c: 38 c1 cmp %al,%cl 0.00 : 67cb5e: 0f 42 c8 cmovb %eax,%ecx : fsmpage->fp_nodes[rchild]); : : oldvalue = fsmpage->fp_nodes[nodeno]; : if (oldvalue == newvalue) /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:99 6.67 : 67cb61: 48 63 c6 movslq %esi,%rax 0.00 : 67cb64: 41 38 4c 00 04 cmp %cl,0x4(%r8,%rax,1) 0.00 : 67cb69: 74 09 je 67cb74 : break; : : fsmpage->fp_nodes[nodeno] = newvalue; : } while (nodeno > 0); /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:103 13.33 : 67cb6b: 85 f6 test %esi,%esi : : oldvalue = fsmpage->fp_nodes[nodeno]; : if (oldvalue == newvalue) : break; : : fsmpage->fp_nodes[nodeno] = newvalue; 0.00 : 67cb6d: 41 88 4c 00 04 mov %cl,0x4(%r8,%rax,1) : } while (nodeno > 0); 6.67 : 67cb72: 7f b4 jg 67cb28 : : /* : * sanity check: if the new value is (still) higher than the value at the : * top, the tree is corrupt. If so, rebuild. : */ : if (value > fsmpage->fp_nodes[0]) /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:109 26.67 : 67cb74: 45 3a 50 04 cmp 0x4(%r8),%r10b 0.00 : 67cb78: b8 01 00 00 00 mov $0x1,%eax 0.00 : 67cb7d: 77 09 ja 67cb88 : fsm_rebuild_page(page); : : return true; : } 0.00 : 67cb7f: c9 leaveq 0.00 : 67cb80: c3 retq 0.00 : 67cb81: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * sanity check: if the new value is (still) higher than the value at the : * top, the tree is corrupt. If so, rebuild. : */ : if (value > fsmpage->fp_nodes[0]) : fsm_rebuild_page(page); 0.00 : 67cb88: e8 b3 fe ff ff callq 67ca40 0.00 : 67cb8d: b8 01 00 00 00 mov $0x1,%eax : : return true; : } 0.00 : 67cb92: c9 leaveq 0.00 : 67cb93: c3 retq 0.00 : 67cb94: 0f 1f 40 00 nopl 0x0(%rax) : Assert(slot < LeafNodesPerPage); : : oldvalue = fsmpage->fp_nodes[nodeno]; : : /* If the value hasn't changed, we don't need to do anything */ : if (oldvalue == value && value <= fsmpage->fp_nodes[0]) 0.00 : 67cb98: 31 c0 xor %eax,%eax 0.00 : 67cb9a: 41 3a 50 04 cmp 0x4(%r8),%dl 0.00 : 67cb9e: 66 90 xchg %ax,%ax 0.00 : 67cba0: 0f 87 7a ff ff ff ja 67cb20 : */ : if (value > fsmpage->fp_nodes[0]) : fsm_rebuild_page(page); : : return true; : } 0.00 : 67cba6: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 46.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1525 6.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 6.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1435 6.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1525 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a5600 : : * by this function. This is OK for current uses, because we actually only : * apply this for known-committed XIDs. : */ : static bool : XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1423 6.67 : 7a5600: 55 push %rbp 0.00 : 7a5601: 48 89 e5 mov %rsp,%rbp 0.00 : 7a5604: 41 54 push %r12 0.00 : 7a5606: 49 89 f4 mov %rsi,%r12 0.00 : 7a5609: 53 push %rbx : * a parent with XID < xmin, while one with XID >= xmax must belong to a : * parent that was not yet committed at the time of this snapshot. : */ : : /* Any xid < xmin is not in-progress */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) 0.00 : 7a560a: 8b 76 08 mov 0x8(%rsi),%esi : * by this function. This is OK for current uses, because we actually only : * apply this for known-committed XIDs. : */ : static bool : XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot) : { 46.67 : 7a560d: 89 fb mov %edi,%ebx : * a parent with XID < xmin, while one with XID >= xmax must belong to a : * parent that was not yet committed at the time of this snapshot. : */ : : /* Any xid < xmin is not in-progress */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) 0.00 : 7a560f: e8 cc a9 d1 ff callq 4bffe0 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1435 6.67 : 7a5614: 84 c0 test %al,%al 0.00 : 7a5616: 74 08 je 7a5620 : return true; : } : } : : return false; : } 0.00 : 7a5618: 5b pop %rbx : /* : * We now have either a top-level xid higher than xmin or an : * indeterminate xid. We don't know whether it's top level or subxact : * but it doesn't matter. If it's present, the xid is visible. : */ : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a5619: 31 c0 xor %eax,%eax : return true; : } : } : : return false; : } 0.00 : 7a561b: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/tqual.c:1525 33.33 : 7a561d: c9 leaveq 6.67 : 7a561e: c3 retq 0.00 : 7a561f: 90 nop : : /* Any xid < xmin is not in-progress */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) : return false; : /* Any xid >= xmax is in-progress */ : if (TransactionIdFollowsOrEquals(xid, snapshot->xmax)) 0.00 : 7a5620: 41 8b 74 24 0c mov 0xc(%r12),%esi 0.00 : 7a5625: 89 df mov %ebx,%edi 0.00 : 7a5627: e8 44 aa d1 ff callq 4c0070 0.00 : 7a562c: 84 c0 test %al,%al 0.00 : 7a562e: 0f 85 7c 00 00 00 jne 7a56b0 : : /* : * Snapshot information is stored slightly differently in snapshots taken : * during recovery. : */ : if (!snapshot->takenDuringRecovery) 0.00 : 7a5634: 41 80 7c 24 29 00 cmpb $0x0,0x29(%r12) 0.00 : 7a563a: 0f 85 80 00 00 00 jne 7a56c0 : * check things is just to compare the given XID against both subxact : * XIDs and top-level XIDs. If the snapshot overflowed, we have to : * use pg_subtrans to convert a subxact XID to its parent XID, but : * then we need only look at top-level XIDs not subxacts. : */ : if (!snapshot->suboverflowed) 0.00 : 7a5640: 41 80 7c 24 28 00 cmpb $0x0,0x28(%r12) 0.00 : 7a5646: 0f 85 b4 00 00 00 jne 7a5700 : { : /* full data, so search subxip */ : int32 j; : : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a564c: 41 8b 74 24 1c mov 0x1c(%r12),%esi 0.00 : 7a5651: 85 f6 test %esi,%esi 0.00 : 7a5653: 7e 25 jle 7a567a : { : if (TransactionIdEquals(xid, snapshot->subxip[j])) 0.00 : 7a5655: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 7a565a: 31 d2 xor %edx,%edx 0.00 : 7a565c: 39 18 cmp %ebx,(%rax) 0.00 : 7a565e: 48 89 c1 mov %rax,%rcx 0.00 : 7a5661: 75 10 jne 7a5673 0.00 : 7a5663: eb 4b jmp 7a56b0 0.00 : 7a5665: 0f 1f 00 nopl (%rax) 0.00 : 7a5668: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 7a566b: 48 83 c1 04 add $0x4,%rcx 0.00 : 7a566f: 39 d8 cmp %ebx,%eax 0.00 : 7a5671: 74 3d je 7a56b0 : if (!snapshot->suboverflowed) : { : /* full data, so search subxip */ : int32 j; : : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a5673: 83 c2 01 add $0x1,%edx 0.00 : 7a5676: 39 f2 cmp %esi,%edx 0.00 : 7a5678: 7c ee jl 7a5668 : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) : return false; : } : : for (i = 0; i < snapshot->xcnt; i++) 0.00 : 7a567a: 41 8b 74 24 18 mov 0x18(%r12),%esi 0.00 : 7a567f: 85 f6 test %esi,%esi 0.00 : 7a5681: 74 95 je 7a5618 : { : if (TransactionIdEquals(xid, snapshot->xip[i])) 0.00 : 7a5683: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 7a5688: 31 d2 xor %edx,%edx 0.00 : 7a568a: 39 18 cmp %ebx,(%rax) 0.00 : 7a568c: 48 89 c1 mov %rax,%rcx 0.00 : 7a568f: 75 12 jne 7a56a3 0.00 : 7a5691: eb 1d jmp 7a56b0 0.00 : 7a5693: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7a5698: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 7a569b: 48 83 c1 04 add $0x4,%rcx 0.00 : 7a569f: 39 d8 cmp %ebx,%eax 0.00 : 7a56a1: 74 0d je 7a56b0 : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) : return false; : } : : for (i = 0; i < snapshot->xcnt; i++) 0.00 : 7a56a3: 83 c2 01 add $0x1,%edx 0.00 : 7a56a6: 39 f2 cmp %esi,%edx 0.00 : 7a56a8: 72 ee jb 7a5698 0.00 : 7a56aa: e9 69 ff ff ff jmpq 7a5618 0.00 : 7a56af: 90 nop : return true; : } : } : : return false; : } 0.00 : 7a56b0: 5b pop %rbx : /* : * We now have either a top-level xid higher than xmin or an : * indeterminate xid. We don't know whether it's top level or subxact : * but it doesn't matter. If it's present, the xid is visible. : */ : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a56b1: b8 01 00 00 00 mov $0x1,%eax : return true; : } : } : : return false; : } 0.00 : 7a56b6: 41 5c pop %r12 0.00 : 7a56b8: c9 leaveq 0.00 : 7a56b9: c3 retq 0.00 : 7a56ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * far the bigger array, and we mostly don't know which xids are : * top-level and which are subxacts. The xip array is empty. : * : * We start by searching subtrans, if we overflowed. : */ : if (snapshot->suboverflowed) 0.00 : 7a56c0: 41 80 7c 24 28 00 cmpb $0x0,0x28(%r12) 0.00 : 7a56c6: 75 60 jne 7a5728 : /* : * We now have either a top-level xid higher than xmin or an : * indeterminate xid. We don't know whether it's top level or subxact : * but it doesn't matter. If it's present, the xid is visible. : */ : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a56c8: 41 8b 74 24 1c mov 0x1c(%r12),%esi 0.00 : 7a56cd: 85 f6 test %esi,%esi 0.00 : 7a56cf: 0f 8e 43 ff ff ff jle 7a5618 : { : if (TransactionIdEquals(xid, snapshot->subxip[j])) 0.00 : 7a56d5: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 7a56da: 31 d2 xor %edx,%edx 0.00 : 7a56dc: 39 18 cmp %ebx,(%rax) 0.00 : 7a56de: 48 89 c1 mov %rax,%rcx 0.00 : 7a56e1: 75 10 jne 7a56f3 0.00 : 7a56e3: eb cb jmp 7a56b0 0.00 : 7a56e5: 0f 1f 00 nopl (%rax) 0.00 : 7a56e8: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 7a56eb: 48 83 c1 04 add $0x4,%rcx 0.00 : 7a56ef: 39 d8 cmp %ebx,%eax 0.00 : 7a56f1: 74 bd je 7a56b0 : /* : * We now have either a top-level xid higher than xmin or an : * indeterminate xid. We don't know whether it's top level or subxact : * but it doesn't matter. If it's present, the xid is visible. : */ : for (j = 0; j < snapshot->subxcnt; j++) 0.00 : 7a56f3: 83 c2 01 add $0x1,%edx 0.00 : 7a56f6: 39 f2 cmp %esi,%edx 0.00 : 7a56f8: 7c ee jl 7a56e8 0.00 : 7a56fa: e9 19 ff ff ff jmpq 7a5618 0.00 : 7a56ff: 90 nop : /* not there, fall through to search xip[] */ : } : else : { : /* overflowed, so convert xid to top-level */ : xid = SubTransGetTopmostTransaction(xid); 0.00 : 7a5700: 89 df mov %ebx,%edi 0.00 : 7a5702: e8 e9 11 d2 ff callq 4c68f0 : /* : * If xid was indeed a subxact, we might now have an xid < xmin, : * so recheck to avoid an array scan. No point in rechecking : * xmax. : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) 0.00 : 7a5707: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 7a570c: 89 c7 mov %eax,%edi : /* not there, fall through to search xip[] */ : } : else : { : /* overflowed, so convert xid to top-level */ : xid = SubTransGetTopmostTransaction(xid); 0.00 : 7a570e: 89 c3 mov %eax,%ebx : /* : * If xid was indeed a subxact, we might now have an xid < xmin, : * so recheck to avoid an array scan. No point in rechecking : * xmax. : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) 0.00 : 7a5710: e8 cb a8 d1 ff callq 4bffe0 0.00 : 7a5715: 84 c0 test %al,%al 0.00 : 7a5717: 0f 84 5d ff ff ff je 7a567a 0.00 : 7a571d: e9 f6 fe ff ff jmpq 7a5618 0.00 : 7a5722: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * We start by searching subtrans, if we overflowed. : */ : if (snapshot->suboverflowed) : { : /* overflowed, so convert xid to top-level */ : xid = SubTransGetTopmostTransaction(xid); 0.00 : 7a5728: 89 df mov %ebx,%edi 0.00 : 7a572a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a5730: e8 bb 11 d2 ff callq 4c68f0 : /* : * If xid was indeed a subxact, we might now have an xid < xmin, : * so recheck to avoid an array scan. No point in rechecking : * xmax. : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) 0.00 : 7a5735: 41 8b 74 24 08 mov 0x8(%r12),%esi 0.00 : 7a573a: 89 c7 mov %eax,%edi : * We start by searching subtrans, if we overflowed. : */ : if (snapshot->suboverflowed) : { : /* overflowed, so convert xid to top-level */ : xid = SubTransGetTopmostTransaction(xid); 0.00 : 7a573c: 89 c3 mov %eax,%ebx : /* : * If xid was indeed a subxact, we might now have an xid < xmin, : * so recheck to avoid an array scan. No point in rechecking : * xmax. : */ : if (TransactionIdPrecedes(xid, snapshot->xmin)) 0.00 : 7a573e: e8 9d a8 d1 ff callq 4bffe0 0.00 : 7a5743: 84 c0 test %al,%al 0.00 : 7a5745: 74 81 je 7a56c8 0.00 : 7a5747: e9 cc fe ff ff jmpq 7a5618 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:158 13.33 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:172 6.67 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:129 6.67 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:156 6.67 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:165 6.67 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:176 6.67 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:178 6.67 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:186 6.67 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:123 6.67 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:121 6.67 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:121 6.67 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:121 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007acc70 : : : (cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c)); : } : : void : pg_qsort(void *a, size_t n, size_t es, int (*cmp) (const void *, const void *)) : { 0.00 : 7acc70: 55 push %rbp 0.00 : 7acc71: 48 89 e5 mov %rsp,%rbp 0.00 : 7acc74: 41 57 push %r15 0.00 : 7acc76: 41 56 push %r14 0.00 : 7acc78: 49 89 f6 mov %rsi,%r14 0.00 : 7acc7b: 41 55 push %r13 0.00 : 7acc7d: 41 54 push %r12 0.00 : 7acc7f: 53 push %rbx 0.00 : 7acc80: 48 83 ec 58 sub $0x58,%rsp 0.00 : 7acc84: 48 89 55 a0 mov %rdx,-0x60(%rbp) : pl -= es) : swap(pl, pl - es); : return; : } : presorted = 1; : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7acc88: 48 f7 da neg %rdx 0.00 : 7acc8b: 48 89 55 90 mov %rdx,-0x70(%rbp) : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7acc8f: 48 8b 55 a0 mov -0x60(%rbp),%rdx : : (cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c)); : } : : void : pg_qsort(void *a, size_t n, size_t es, int (*cmp) (const void *, const void *)) : { 0.00 : 7acc93: 48 89 7d a8 mov %rdi,-0x58(%rbp) 0.00 : 7acc97: 48 89 4d 98 mov %rcx,-0x68(%rbp) : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7acc9b: 48 8d 04 52 lea (%rdx,%rdx,2),%rax 0.00 : 7acc9f: 48 01 c0 add %rax,%rax 0.00 : 7acca2: 48 89 45 88 mov %rax,-0x78(%rbp) : int d, : r, : swaptype, : presorted; : : loop:SWAPINIT(a, es); 0.00 : 7acca6: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 7accaa: 48 0b 45 a0 or -0x60(%rbp),%rax 0.00 : 7accae: c7 45 c4 02 00 00 00 movl $0x2,-0x3c(%rbp) 0.00 : 7accb5: a8 07 test $0x7,%al 0.00 : 7accb7: 75 0d jne 7accc6 0.00 : 7accb9: 31 c0 xor %eax,%eax 0.00 : 7accbb: 48 83 7d a0 08 cmpq $0x8,-0x60(%rbp) 0.00 : 7accc0: 0f 95 c0 setne %al 0.00 : 7accc3: 89 45 c4 mov %eax,-0x3c(%rbp) : if (n < 7) 0.00 : 7accc6: 49 83 fe 06 cmp $0x6,%r14 0.00 : 7accca: 0f 86 91 03 00 00 jbe 7ad061 : pl -= es) : swap(pl, pl - es); : return; : } : presorted = 1; : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7accd0: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7accd4: 4c 8b 7d a8 mov -0x58(%rbp),%r15 0.00 : 7accd8: 4c 03 7d a0 add -0x60(%rbp),%r15 0.00 : 7accdc: 49 0f af c6 imul %r14,%rax 0.00 : 7acce0: 48 03 45 a8 add -0x58(%rbp),%rax 0.00 : 7acce4: 49 39 c7 cmp %rax,%r15 0.00 : 7acce7: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 7acceb: 0f 83 d5 02 00 00 jae 7acfc6 0.00 : 7accf1: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7accf5: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 7accf9: 4c 89 fb mov %r15,%rbx 0.00 : 7accfc: 4d 8d 2c 07 lea (%r15,%rax,1),%r13 0.00 : 7acd00: 4d 8d 24 17 lea (%r15,%rdx,1),%r12 0.00 : 7acd04: eb 27 jmp 7acd2d 0.00 : 7acd06: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7acd0d: 00 00 00 0.00 : 7acd10: 4c 03 6d a0 add -0x60(%rbp),%r13 0.00 : 7acd14: 48 03 5d a0 add -0x60(%rbp),%rbx 0.00 : 7acd18: 4c 03 65 a0 add -0x60(%rbp),%r12 0.00 : 7acd1c: 4c 89 e8 mov %r13,%rax 0.00 : 7acd1f: 48 2b 45 a0 sub -0x60(%rbp),%rax 0.00 : 7acd23: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 7acd27: 0f 86 99 02 00 00 jbe 7acfc6 : { : if (cmp(pm - es, pm) > 0) 0.00 : 7acd2d: 48 89 de mov %rbx,%rsi 0.00 : 7acd30: 4c 89 e7 mov %r12,%rdi /home/Computational/mark/src/postgres-andres/src/port/qsort.c:129 6.67 : 7acd33: ff 55 98 callq *-0x68(%rbp) 0.00 : 7acd36: 85 c0 test %eax,%eax 0.00 : 7acd38: 7e d6 jle 7acd10 : break; : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; 0.00 : 7acd3a: 4c 89 f0 mov %r14,%rax 0.00 : 7acd3d: 4c 8b 65 a8 mov -0x58(%rbp),%r12 0.00 : 7acd41: 48 d1 e8 shr %rax 0.00 : 7acd44: 48 0f af 45 a0 imul -0x60(%rbp),%rax 0.00 : 7acd49: 49 01 c4 add %rax,%r12 : if (n > 7) 0.00 : 7acd4c: 49 83 fe 07 cmp $0x7,%r14 0.00 : 7acd50: 0f 85 ed 01 00 00 jne 7acf43 0.00 : 7acd56: 48 8b 4d a8 mov -0x58(%rbp),%rcx : pm = med3(pm - d, pm, pm + d, cmp); : pn = med3(pn - 2 * d, pn - d, pn, cmp); : } : pm = med3(pl, pm, pn, cmp); : } : swap(a, pm); 0.00 : 7acd5a: 8b 75 c4 mov -0x3c(%rbp),%esi : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7acd5d: 48 03 4d 88 add -0x78(%rbp),%rcx : pm = med3(pm - d, pm, pm + d, cmp); : pn = med3(pn - 2 * d, pn - d, pn, cmp); : } : pm = med3(pl, pm, pn, cmp); : } : swap(a, pm); 0.00 : 7acd61: 85 f6 test %esi,%esi : } : } : if (presorted) : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) 0.00 : 7acd63: 48 89 4d d0 mov %rcx,-0x30(%rbp) : pm = med3(pm - d, pm, pm + d, cmp); : pn = med3(pn - 2 * d, pn - d, pn, cmp); : } : pm = med3(pl, pm, pn, cmp); : } : swap(a, pm); 0.00 : 7acd67: 0f 85 15 02 00 00 jne 7acf82 0.00 : 7acd6d: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 7acd71: 48 8b 4d a8 mov -0x58(%rbp),%rcx 0.00 : 7acd75: 48 8b 10 mov (%rax),%rdx 0.00 : 7acd78: 49 8b 04 24 mov (%r12),%rax 0.00 : 7acd7c: 48 89 01 mov %rax,(%rcx) 0.00 : 7acd7f: 49 89 14 24 mov %rdx,(%r12) 0.00 : 7acd83: 4c 8b 6d d0 mov -0x30(%rbp),%r13 0.00 : 7acd87: 4c 89 7d b8 mov %r15,-0x48(%rbp) 0.00 : 7acd8b: 4d 89 fe mov %r15,%r14 0.00 : 7acd8e: 4d 89 ef mov %r13,%r15 0.00 : 7acd91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : pa = pb = (char *) a + es; : pc = pd = (char *) a + (n - 1) * es; : for (;;) : { : while (pb <= pc && (r = cmp(pb, a)) <= 0) 0.00 : 7acd98: 4d 39 ee cmp %r13,%r14 0.00 : 7acd9b: 0f 86 9f 00 00 00 jbe 7ace40 : swap(pb, pc); : pb += es; : pc -= es; : } : pn = (char *) a + n * es; : r = Min(pa - (char *) a, pb - pa); 0.00 : 7acda1: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 7acda5: 4c 89 f0 mov %r14,%rax 0.00 : 7acda8: 48 2b 55 a8 sub -0x58(%rbp),%rdx 0.00 : 7acdac: 48 2b 45 b8 sub -0x48(%rbp),%rax 0.00 : 7acdb0: 48 39 c2 cmp %rax,%rdx 0.00 : 7acdb3: 48 0f 4e c2 cmovle %rdx,%rax : vecswap(a, pb - r, r); 0.00 : 7acdb7: 85 c0 test %eax,%eax 0.00 : 7acdb9: 7e 15 jle 7acdd0 0.00 : 7acdbb: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acdbe: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7acdc2: 48 63 d0 movslq %eax,%rdx 0.00 : 7acdc5: 4c 89 f6 mov %r14,%rsi 0.00 : 7acdc8: 48 29 d6 sub %rdx,%rsi 0.00 : 7acdcb: e8 a0 fd ff ff callq 7acb70 : r = Min(pd - pc, pn - pd - es); 0.00 : 7acdd0: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 7acdd4: 4c 89 fa mov %r15,%rdx 0.00 : 7acdd7: 4c 29 ea sub %r13,%rdx 0.00 : 7acdda: 4c 29 f8 sub %r15,%rax 0.00 : 7acddd: 48 2b 45 a0 sub -0x60(%rbp),%rax 0.00 : 7acde1: 48 39 d0 cmp %rdx,%rax 0.00 : 7acde4: 48 0f 47 c2 cmova %rdx,%rax : vecswap(pb, pn - r, r); 0.00 : 7acde8: 85 c0 test %eax,%eax 0.00 : 7acdea: 7e 15 jle 7ace01 0.00 : 7acdec: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 7acdf0: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acdf3: 48 63 d0 movslq %eax,%rdx 0.00 : 7acdf6: 4c 89 f7 mov %r14,%rdi 0.00 : 7acdf9: 48 29 d6 sub %rdx,%rsi 0.00 : 7acdfc: e8 6f fd ff ff callq 7acb70 : if ((r = pb - pa) > es) 0.00 : 7ace01: 44 89 f0 mov %r14d,%eax 0.00 : 7ace04: 2b 45 b8 sub -0x48(%rbp),%eax 0.00 : 7ace07: 48 98 cltq 0.00 : 7ace09: 48 39 45 a0 cmp %rax,-0x60(%rbp) 0.00 : 7ace0d: 0f 82 87 01 00 00 jb 7acf9a : qsort(a, r / es, es, cmp); : if ((r = pd - pc) > es) 0.00 : 7ace13: 44 89 f8 mov %r15d,%eax 0.00 : 7ace16: 44 29 e8 sub %r13d,%eax 0.00 : 7ace19: 48 98 cltq 0.00 : 7ace1b: 48 39 45 a0 cmp %rax,-0x60(%rbp) 0.00 : 7ace1f: 0f 83 a1 01 00 00 jae 7acfc6 : { : /* Iterate rather than recurse to save stack space */ : a = pn - r; 0.00 : 7ace25: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 7ace29: 48 29 c2 sub %rax,%rdx 0.00 : 7ace2c: 48 89 55 a8 mov %rdx,-0x58(%rbp) : n = r / es; 0.00 : 7ace30: 31 d2 xor %edx,%edx 0.00 : 7ace32: 48 f7 75 a0 divq -0x60(%rbp) 0.00 : 7ace36: 49 89 c6 mov %rax,%r14 : goto loop; 0.00 : 7ace39: e9 68 fe ff ff jmpq 7acca6 0.00 : 7ace3e: 66 90 xchg %ax,%ax : swap(a, pm); : pa = pb = (char *) a + es; : pc = pd = (char *) a + (n - 1) * es; : for (;;) : { : while (pb <= pc && (r = cmp(pb, a)) <= 0) 0.00 : 7ace40: 48 8b 75 a8 mov -0x58(%rbp),%rsi /home/Computational/mark/src/postgres-andres/src/port/qsort.c:156 6.67 : 7ace44: 4c 89 f7 mov %r14,%rdi 0.00 : 7ace47: ff 55 98 callq *-0x68(%rbp) 0.00 : 7ace4a: 83 f8 00 cmp $0x0,%eax 0.00 : 7ace4d: 0f 8e b9 00 00 00 jle 7acf0c 0.00 : 7ace53: 48 8b 55 90 mov -0x70(%rbp),%rdx 0.00 : 7ace57: 4d 8d 64 15 00 lea 0x0(%r13,%rdx,1),%r12 0.00 : 7ace5c: 4c 89 e3 mov %r12,%rbx 0.00 : 7ace5f: eb 37 jmp 7ace98 0.00 : 7ace61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : while (pb <= pc && (r = cmp(pc, a)) >= 0) : { : if (r == 0) : { : swap(pc, pd); 0.00 : 7ace68: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 7ace6c: 49 8b 07 mov (%r15),%rax 0.00 : 7ace6f: 49 89 45 00 mov %rax,0x0(%r13) 0.00 : 7ace73: 49 89 17 mov %rdx,(%r15) : pd -= es; 0.00 : 7ace76: 4c 03 7d 90 add -0x70(%rbp),%r15 : } : pc -= es; 0.00 : 7ace7a: 48 03 5d 90 add -0x70(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/port/qsort.c:172 13.33 : 7ace7e: 4d 89 e5 mov %r12,%r13 : swap(pa, pb); : pa += es; : } : pb += es; : } : while (pb <= pc && (r = cmp(pc, a)) >= 0) 0.00 : 7ace81: 48 89 d8 mov %rbx,%rax 0.00 : 7ace84: 48 2b 45 90 sub -0x70(%rbp),%rax 0.00 : 7ace88: 49 39 c6 cmp %rax,%r14 0.00 : 7ace8b: 0f 87 10 ff ff ff ja 7acda1 0.00 : 7ace91: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 7ace95: 49 01 cc add %rcx,%r12 0.00 : 7ace98: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 7ace9c: 4c 89 ef mov %r13,%rdi /home/Computational/mark/src/postgres-andres/src/port/qsort.c:165 6.67 : 7ace9f: ff 55 98 callq *-0x68(%rbp) 0.00 : 7acea2: 83 f8 00 cmp $0x0,%eax 0.00 : 7acea5: 7c 29 jl 7aced0 : { : if (r == 0) 0.00 : 7acea7: 75 d1 jne 7ace7a : { : swap(pc, pd); 0.00 : 7acea9: 8b 55 c4 mov -0x3c(%rbp),%edx 0.00 : 7aceac: 85 d2 test %edx,%edx 0.00 : 7aceae: 66 90 xchg %ax,%ax 0.00 : 7aceb0: 74 b6 je 7ace68 0.00 : 7aceb2: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7aceb5: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7aceb9: 4c 89 fe mov %r15,%rsi 0.00 : 7acebc: 4c 89 ef mov %r13,%rdi 0.00 : 7acebf: e8 ac fc ff ff callq 7acb70 0.00 : 7acec4: eb b0 jmp 7ace76 0.00 : 7acec6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7acecd: 00 00 00 : } : pc -= es; : } : if (pb > pc) : break; : swap(pb, pc); 0.00 : 7aced0: 8b 45 c4 mov -0x3c(%rbp),%eax 0.00 : 7aced3: 85 c0 test %eax,%eax 0.00 : 7aced5: 75 21 jne 7acef8 0.00 : 7aced7: 49 8b 16 mov (%r14),%rdx 0.00 : 7aceda: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 7acede: 49 89 06 mov %rax,(%r14) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:176 6.67 : 7acee1: 49 89 55 00 mov %rdx,0x0(%r13) : pb += es; 0.00 : 7acee5: 4c 03 75 a0 add -0x60(%rbp),%r14 : pc -= es; /home/Computational/mark/src/postgres-andres/src/port/qsort.c:178 6.67 : 7acee9: 4d 89 e5 mov %r12,%r13 0.00 : 7aceec: e9 a7 fe ff ff jmpq 7acd98 0.00 : 7acef1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : pc -= es; : } : if (pb > pc) : break; : swap(pb, pc); 0.00 : 7acef8: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acefb: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7aceff: 4c 89 ee mov %r13,%rsi 0.00 : 7acf02: 4c 89 f7 mov %r14,%rdi 0.00 : 7acf05: e8 66 fc ff ff callq 7acb70 0.00 : 7acf0a: eb d9 jmp 7acee5 : pc = pd = (char *) a + (n - 1) * es; : for (;;) : { : while (pb <= pc && (r = cmp(pb, a)) <= 0) : { : if (r == 0) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:158 20.00 : 7acf0c: 75 2c jne 7acf3a : { : swap(pa, pb); 0.00 : 7acf0e: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acf11: 85 c9 test %ecx,%ecx 0.00 : 7acf13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7acf18: 0f 85 b7 00 00 00 jne 7acfd5 0.00 : 7acf1e: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 7acf22: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 7acf26: 48 8b 10 mov (%rax),%rdx 0.00 : 7acf29: 49 8b 06 mov (%r14),%rax 0.00 : 7acf2c: 48 89 01 mov %rax,(%rcx) 0.00 : 7acf2f: 49 89 16 mov %rdx,(%r14) : pa += es; 0.00 : 7acf32: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7acf36: 48 01 45 b8 add %rax,-0x48(%rbp) : } : pb += es; 0.00 : 7acf3a: 4c 03 75 a0 add -0x60(%rbp),%r14 0.00 : 7acf3e: e9 55 fe ff ff jmpq 7acd98 : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; 0.00 : 7acf43: 49 8d 46 ff lea -0x1(%r14),%rax : if (n > 40) 0.00 : 7acf47: 4c 8b 45 a8 mov -0x58(%rbp),%r8 : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; 0.00 : 7acf4b: 48 0f af 45 a0 imul -0x60(%rbp),%rax 0.00 : 7acf50: 48 03 45 a8 add -0x58(%rbp),%rax : if (n > 40) 0.00 : 7acf54: 49 83 fe 28 cmp $0x28,%r14 : return; : pm = (char *) a + (n / 2) * es; : if (n > 7) : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; 0.00 : 7acf58: 48 89 45 d0 mov %rax,-0x30(%rbp) : if (n > 40) 0.00 : 7acf5c: 48 89 c2 mov %rax,%rdx 0.00 : 7acf5f: 0f 87 88 00 00 00 ja 7acfed : d = (n / 8) * es; : pl = med3(pl, pl + d, pl + 2 * d, cmp); : pm = med3(pm - d, pm, pm + d, cmp); : pn = med3(pn - 2 * d, pn - d, pn, cmp); : } : pm = med3(pl, pm, pn, cmp); 0.00 : 7acf65: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7acf69: 4c 89 e6 mov %r12,%rsi 0.00 : 7acf6c: 4c 89 c7 mov %r8,%rdi 0.00 : 7acf6f: e8 5c fc ff ff callq 7acbd0 : } : swap(a, pm); 0.00 : 7acf74: 8b 75 c4 mov -0x3c(%rbp),%esi : d = (n / 8) * es; : pl = med3(pl, pl + d, pl + 2 * d, cmp); : pm = med3(pm - d, pm, pm + d, cmp); : pn = med3(pn - 2 * d, pn - d, pn, cmp); : } : pm = med3(pl, pm, pn, cmp); 0.00 : 7acf77: 49 89 c4 mov %rax,%r12 : } : swap(a, pm); 0.00 : 7acf7a: 85 f6 test %esi,%esi 0.00 : 7acf7c: 0f 84 eb fd ff ff je 7acd6d 0.00 : 7acf82: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acf85: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7acf89: 4c 89 e6 mov %r12,%rsi 0.00 : 7acf8c: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7acf90: e8 db fb ff ff callq 7acb70 0.00 : 7acf95: e9 e9 fd ff ff jmpq 7acd83 : r = Min(pa - (char *) a, pb - pa); : vecswap(a, pb - r, r); : r = Min(pd - pc, pn - pd - es); : vecswap(pb, pn - r, r); : if ((r = pb - pa) > es) : qsort(a, r / es, es, cmp); 0.00 : 7acf9a: 31 d2 xor %edx,%edx 0.00 : 7acf9c: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7acfa0: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7acfa4: 48 f7 75 a0 divq -0x60(%rbp) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:186 6.67 : 7acfa8: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7acfac: 48 89 c6 mov %rax,%rsi 0.00 : 7acfaf: e8 bc fc ff ff callq 7acc70 : if ((r = pd - pc) > es) 0.00 : 7acfb4: 44 89 f8 mov %r15d,%eax 0.00 : 7acfb7: 44 29 e8 sub %r13d,%eax 0.00 : 7acfba: 48 98 cltq 0.00 : 7acfbc: 48 39 45 a0 cmp %rax,-0x60(%rbp) 0.00 : 7acfc0: 0f 82 5f fe ff ff jb 7ace25 : a = pn - r; : n = r / es; : goto loop; : } : /* qsort(pn - r, r / es, es, cmp);*/ : } 0.00 : 7acfc6: 48 83 c4 58 add $0x58,%rsp 0.00 : 7acfca: 5b pop %rbx 0.00 : 7acfcb: 41 5c pop %r12 0.00 : 7acfcd: 41 5d pop %r13 0.00 : 7acfcf: 41 5e pop %r14 0.00 : 7acfd1: 41 5f pop %r15 0.00 : 7acfd3: c9 leaveq 0.00 : 7acfd4: c3 retq : { : while (pb <= pc && (r = cmp(pb, a)) <= 0) : { : if (r == 0) : { : swap(pa, pb); 0.00 : 7acfd5: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7acfd8: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7acfdc: 4c 89 f6 mov %r14,%rsi 0.00 : 7acfdf: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 7acfe3: e8 88 fb ff ff callq 7acb70 0.00 : 7acfe8: e9 45 ff ff ff jmpq 7acf32 : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; : if (n > 40) : { : d = (n / 8) * es; 0.00 : 7acfed: 8b 45 a0 mov -0x60(%rbp),%eax 0.00 : 7acff0: 49 c1 ee 03 shr $0x3,%r14 : pl = med3(pl, pl + d, pl + 2 * d, cmp); 0.00 : 7acff4: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 7acff8: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 7acffc: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7ad000: 48 8b 7d a8 mov -0x58(%rbp),%rdi : { : pl = (char *) a; : pn = (char *) a + (n - 1) * es; : if (n > 40) : { : d = (n / 8) * es; 0.00 : 7ad004: 41 0f af c6 imul %r14d,%eax : pl = med3(pl, pl + d, pl + 2 * d, cmp); 0.00 : 7ad008: 8d 1c 00 lea (%rax,%rax,1),%ebx 0.00 : 7ad00b: 4c 63 e8 movslq %eax,%r13 0.00 : 7ad00e: 4c 01 ee add %r13,%rsi 0.00 : 7ad011: 48 63 db movslq %ebx,%rbx 0.00 : 7ad014: 48 01 da add %rbx,%rdx 0.00 : 7ad017: e8 b4 fb ff ff callq 7acbd0 : pm = med3(pm - d, pm, pm + d, cmp); 0.00 : 7ad01c: 4b 8d 14 2c lea (%r12,%r13,1),%rdx 0.00 : 7ad020: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7ad024: 49 f7 dd neg %r13 0.00 : 7ad027: 4b 8d 3c 2c lea (%r12,%r13,1),%rdi 0.00 : 7ad02b: 4c 89 e6 mov %r12,%rsi 0.00 : 7ad02e: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 7ad032: e8 99 fb ff ff callq 7acbd0 : pn = med3(pn - 2 * d, pn - d, pn, cmp); 0.00 : 7ad037: 48 8b 75 d0 mov -0x30(%rbp),%rsi 0.00 : 7ad03b: 48 8b 7d d0 mov -0x30(%rbp),%rdi : pn = (char *) a + (n - 1) * es; : if (n > 40) : { : d = (n / 8) * es; : pl = med3(pl, pl + d, pl + 2 * d, cmp); : pm = med3(pm - d, pm, pm + d, cmp); 0.00 : 7ad03f: 49 89 c4 mov %rax,%r12 : pn = med3(pn - 2 * d, pn - d, pn, cmp); 0.00 : 7ad042: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 7ad046: 48 8b 4d 98 mov -0x68(%rbp),%rcx 0.00 : 7ad04a: 4c 01 ee add %r13,%rsi 0.00 : 7ad04d: 48 29 df sub %rbx,%rdi 0.00 : 7ad050: e8 7b fb ff ff callq 7acbd0 0.00 : 7ad055: 4c 8b 45 80 mov -0x80(%rbp),%r8 0.00 : 7ad059: 48 89 c2 mov %rax,%rdx 0.00 : 7ad05c: e9 04 ff ff ff jmpq 7acf65 : presorted; : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7ad061: 4c 0f af 75 a0 imul -0x60(%rbp),%r14 0.00 : 7ad066: 48 8b 7d a8 mov -0x58(%rbp),%rdi 0.00 : 7ad06a: 48 03 7d a0 add -0x60(%rbp),%rdi 0.00 : 7ad06e: 4c 03 75 a8 add -0x58(%rbp),%r14 0.00 : 7ad072: 4c 39 f7 cmp %r14,%rdi 0.00 : 7ad075: 4c 89 75 b0 mov %r14,-0x50(%rbp) 0.00 : 7ad079: 0f 83 47 ff ff ff jae 7acfc6 0.00 : 7ad07f: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 7ad083: 49 89 fd mov %rdi,%r13 : for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0; 0.00 : 7ad086: 49 89 ce mov %rcx,%r14 : presorted; : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7ad089: 4c 8d 3c 0f lea (%rdi,%rcx,1),%r15 : for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0; 0.00 : 7ad08d: 49 f7 de neg %r14 0.00 : 7ad090: 4c 39 6d a8 cmp %r13,-0x58(%rbp) 0.00 : 7ad094: 4b 8d 5c 35 00 lea 0x0(%r13,%r14,1),%rbx 0.00 : 7ad099: 49 89 dc mov %rbx,%r12 0.00 : 7ad09c: 72 2f jb 7ad0cd 0.00 : 7ad09e: eb 55 jmp 7ad0f5 : pl -= es) : swap(pl, pl - es); 0.00 : 7ad0a0: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 7ad0a4: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 7ad0a8: 48 8b 14 03 mov (%rbx,%rax,1),%rdx 0.00 : 7ad0ac: 49 8b 04 24 mov (%r12),%rax 0.00 : 7ad0b0: 48 89 04 0b mov %rax,(%rbx,%rcx,1) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:123 6.67 : 7ad0b4: 49 89 14 24 mov %rdx,(%r12) 0.00 : 7ad0b8: 4d 01 f4 add %r14,%r12 : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) : for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0; 0.00 : 7ad0bb: 4c 89 e0 mov %r12,%rax 0.00 : 7ad0be: 4c 29 f0 sub %r14,%rax /home/Computational/mark/src/postgres-andres/src/port/qsort.c:121 6.67 : 7ad0c1: 48 39 45 a8 cmp %rax,-0x58(%rbp) 0.00 : 7ad0c5: 73 2e jae 7ad0f5 0.00 : 7ad0c7: 49 89 dd mov %rbx,%r13 0.00 : 7ad0ca: 4c 01 f3 add %r14,%rbx 0.00 : 7ad0cd: 4c 89 ee mov %r13,%rsi 0.00 : 7ad0d0: 48 89 df mov %rbx,%rdi 0.00 : 7ad0d3: ff 55 98 callq *-0x68(%rbp) 6.67 : 7ad0d6: 85 c0 test %eax,%eax 0.00 : 7ad0d8: 7e 1b jle 7ad0f5 : pl -= es) : swap(pl, pl - es); 0.00 : 7ad0da: 8b 7d c4 mov -0x3c(%rbp),%edi 0.00 : 7ad0dd: 85 ff test %edi,%edi 0.00 : 7ad0df: 74 bf je 7ad0a0 0.00 : 7ad0e1: 8b 4d c4 mov -0x3c(%rbp),%ecx 0.00 : 7ad0e4: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 7ad0e8: 48 89 de mov %rbx,%rsi 0.00 : 7ad0eb: 4c 89 ef mov %r13,%rdi 0.00 : 7ad0ee: e8 7d fa ff ff callq 7acb70 0.00 : 7ad0f3: eb c3 jmp 7ad0b8 : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) : for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0; 0.00 : 7ad0f5: 4c 89 ff mov %r15,%rdi 0.00 : 7ad0f8: 4c 03 7d a0 add -0x60(%rbp),%r15 6.67 : 7ad0fc: 49 89 fd mov %rdi,%r13 : presorted; : : loop:SWAPINIT(a, es); : if (n < 7) : { : for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) 0.00 : 7ad0ff: 4c 89 f8 mov %r15,%rax 0.00 : 7ad102: 48 2b 45 a0 sub -0x60(%rbp),%rax 0.00 : 7ad106: 48 39 45 b0 cmp %rax,-0x50(%rbp) 0.00 : 7ad10a: 77 84 ja 7ad090 : a = pn - r; : n = r / es; : goto loop; : } : /* qsort(pn - r, r / es, es, cmp);*/ : } 0.00 : 7ad10c: 48 83 c4 58 add $0x58,%rsp 0.00 : 7ad110: 5b pop %rbx 0.00 : 7ad111: 41 5c pop %r12 0.00 : 7ad113: 41 5d pop %r13 0.00 : 7ad115: 41 5e pop %r14 0.00 : 7ad117: 41 5f pop %r15 0.00 : 7ad119: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 19.05 ??:0 9.52 ??:0 9.52 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 4.76 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000066a0 : ??:0 38.10 : 66a0: 48 83 ec 68 sub $0x68,%rsp 0.00 : 66d4: 4c 89 rex.X insb (%dx),%es:(%rdi) 0.00 : 66d6: 64 24 sub %ecx,%eax 0.00 : 66d8: 48 4c 89 cmp $0x13,%eax 0.00 : 66db: 6c 24 50 41 89 cc jle 67e8 ??:0 4.76 : 66e1: 4c 89 74 movslq %ecx,%rbp 4.76 : 66e4: 24 58 4c 89 7c 24 60 add 0xe0(%rdx),%rbp 0.00 : 66eb: 49 89 fe test %rbp,%rbp 0.00 : 66ee: 48 89 5c 24 38 48 je 6808 0.00 : 66f4: 89 6c 24 40 movzbl 0xc(%rbp),%eax 4.76 : 66f8: 49 89 d5 shr $0x4,%al 0.00 : 66fb: 8b 5a 68 movzbl %al,%eax 0.00 : 66fe: 45 89 cf shl $0x2,%eax 4.76 : 6701: 89 d8 2b cmp $0x13,%eax 0.00 : 6704: 42 6c 29 c8 83 f8 jbe 67a0 0.00 : 670a: 13 0f 8e sub %r12d,%ebx 0.00 : 670d: 07 01 cmp %eax,%ebx 0.00 : 670f: 00 00 48 63 e9 48 jb 67a0 4.76 : 6715: 03 aa e0 00 00 00 48 mov 0x758(%r14),%edx 4.76 : 671c: 85 ed test %edx,%edx 0.00 : 671e: 0f 84 je 6758 4.76 : 6720: 14 01 00 00 mov 0x70(%rsp),%eax 0.00 : 6724: 0f b6 test %eax,%eax 0.00 : 6726: 45 0c jne 6758 0.00 : 6728: c0 e8 04 0f movzbl %r15b,%ebx 0.00 : 672c: b6 c0 c1 movzwl %bx,%eax 0.00 : 672f: e0 02 83 f8 13 0f 86 mov 0x0(,%rax,8),%r8 0.00 : 6736: 96 4.76 : 6737: 00 00 xor %eax,%eax 0.00 : 6739: 00 44 29 test %r8,%r8 0.00 : 673c: e3 39 je 674f 0.00 : 673e: c3 0f 82 8b 00 mov $0x6,%ecx 0.00 : 6743: 00 00 41 mov %r12d,%edx 0.00 : 6746: 8b 96 xor %esi,%esi 0.00 : 6748: 58 07 00 mov %r13,%rdi 0.00 : 674b: 00 85 d2 74 callq *0x8(%r8) 4.76 : 674f: 38 8b 44 test %ax,%ax 0.00 : 6752: 24 70 85 c0 75 30 jne 6870 0.00 : 6758: 41 0f b6 df movzbl 0xd(%rbp),%eax ??:0 9.52 : 675c: 0f b7 c3 4c 8b mov $0x1,%edx 0.00 : 6761: 04 c5 00 and $0x37,%eax 0.00 : 6764: 00 00 00 31 c0 4d 85 cmpb $0x0,0x0(%rax) ??:0 4.76 : 676b: c0 74 jne 67c0 0.00 : 676d: 11 b9 06 00 00 00 44 mov 0x75c(%r14),%eax 0.00 : 6774: 89 e2 31 cmp $0x6,%eax 0.00 : 6777: f6 4c je 6780 0.00 : 6779: 89 ef 41 ff 50 cmp $0xff,%eax 0.00 : 677e: 08 66 jne 67bb 0.00 : 6780: 85 c0 0f 85 18 callq 6785 0.00 : 6785: 01 00 test %eax,%eax 0.00 : 6787: 00 0f je 67bb 0.00 : 6789: b6 45 0d ba movzbl %r15b,%edi 0.00 : 678d: 01 00 00 00 83 e0 37 movq $0x0,(%rsp) 0.00 : 6794: 80 0.00 : 6795: b8 00 00 00 00 jmpq 6851 0.00 : 679a: 00 75 53 41 8b 86 nopw 0x0(%rax,%rax,1) 0.00 : 67a0: 5c 07 00 00 83 f8 06 mov 0x75c(%r14),%eax 0.00 : 67a7: 74 07 3d cmp $0x6,%eax 0.00 : 67aa: ff 00 00 00 75 3b je 6838 0.00 : 67b0: e8 00 00 00 00 cmp $0xff,%eax 0.00 : 67b5: 85 c0 74 32 41 0f je 6838 0.00 : 67bb: b6 ff 48 c7 04 mov $0xffffffff,%edx 0.00 : 67c0: 24 00 mov %edx,%eax 0.00 : 67c2: 00 00 00 e9 b7 mov 0x38(%rsp),%rbx 0.00 : 67c7: 00 00 00 66 0f mov 0x40(%rsp),%rbp 0.00 : 67cc: 1f 44 00 00 41 mov 0x48(%rsp),%r12 0.00 : 67d1: 8b 86 5c 07 00 mov 0x50(%rsp),%r13 0.00 : 67d6: 00 83 f8 06 0f mov 0x58(%rsp),%r14 4.76 : 67db: 84 88 00 00 00 mov 0x60(%rsp),%r15 0.00 : 67e0: 3d ff 00 00 add $0x68,%rsp 0.00 : 67e4: 00 retq 0.00 : 67e5: 0f 84 7d nopl (%rax) 0.00 : 67e8: 00 00 00 ba ff lea 0x10(%rsp),%rbp 0.00 : 67ed: ff ff ff 89 d0 mov $0x14,%ecx 0.00 : 67f2: 48 8b 5c mov %r12d,%esi 0.00 : 67f5: 24 38 48 mov %r13,%rdi 0.00 : 67f8: 8b 6c 24 mov %rbp,%rdx 0.00 : 67fb: 40 4c 8b 64 24 callq 6800 0.00 : 6800: 48 4c test %eax,%eax 0.00 : 6802: 8b 6c 24 50 4c 8b jns 66eb 0.00 : 6808: 74 24 58 4c 8b 7c 24 mov 0x75c(%r14),%eax 0.00 : 680f: 60 48 83 cmp $0x6,%eax 0.00 : 6812: c4 68 je 681b 0.00 : 6814: c3 0f 1f 00 48 cmp $0xff,%eax 0.00 : 6819: 8d 6c jne 67bb 0.00 : 681b: 24 10 b9 14 00 callq 6820 0.00 : 6820: 00 00 test %eax,%eax 0.00 : 6822: 44 89 je 67bb 0.00 : 6824: e6 4c 89 ef movzbl %r15b,%edi 0.00 : 6828: 48 89 ea e8 00 00 00 movq $0x0,(%rsp) 0.00 : 682f: 00 0.00 : 6830: 85 c0 jmp 6851 0.00 : 6832: 0f 89 e3 fe ff ff nopw 0x0(%rax,%rax,1) 0.00 : 6838: 41 8b 86 5c 07 callq 683d 0.00 : 683d: 00 00 test %eax,%eax 0.00 : 683f: 83 f8 06 74 07 3d je 67bb 0.00 : 6845: ff 00 00 00 movzbl %r15b,%edi 0.00 : 6849: 75 a0 e8 00 00 00 00 movq $0x0,(%rsp) 0.00 : 6850: 85 0.00 : 6851: c0 74 97 mov %r13,%rdx 0.00 : 6854: 41 0f b6 xor %r9d,%r9d 0.00 : 6857: ff 48 c7 xor %r8d,%r8d 0.00 : 685a: 04 24 xor %ecx,%ecx 0.00 : 685c: 00 00 xor %esi,%esi 0.00 : 685e: 00 00 xor %eax,%eax 0.00 : 6860: eb 1f 66 0f 1f callq 6865 0.00 : 6865: 44 00 00 e8 00 mov $0xffffffff,%edx 0.00 : 686a: 00 00 00 85 c0 jmpq 67c0 0.00 : 686f: 0f nop 0.00 : 6870: 84 76 ff ff ff 41 0f mov 0x75c(%r14),%eax 0.00 : 6877: b6 ff 48 cmp $0x6,%eax 0.00 : 687a: c7 04 je 6887 0.00 : 687c: 24 00 00 00 00 cmp $0xff,%eax 0.00 : 6881: 4c 89 ea 45 31 c9 jne 67bb 0.00 : 6887: 45 31 c0 31 c9 callq 688c 0.00 : 688c: 31 f6 test %eax,%eax 0.00 : 688e: 31 c0 xchg %ax,%ax 0.00 : 6890: e8 00 00 00 00 ba je 67bb 0.00 : 6896: ff ff ff mov %r13,%rdx 0.00 : 6899: ff e9 51 xor %r9d,%r9d 0.00 : 689c: ff ff ff xor %r8d,%r8d 0.00 : 689f: 90 41 xor %ecx,%ecx 0.00 : 68a1: 8b 86 xor %esi,%esi 0.00 : 68a3: 5c 07 mov %ebx,%edi 0.00 : 68a5: 00 00 xor %eax,%eax 0.00 : 68a7: 83 f8 06 74 0b 3d ff movq $0x0,(%rsp) 0.00 : 68ae: 00 0.00 : 68af: 00 00 0f 85 34 callq 68b4 0.00 : 68b4: ff ff ff e8 00 mov $0xffffffff,%edx 0.00 : 68b9: 00 00 00 85 c0 jmpq 67c0 : 68be: 66 90 xchg %ax,%ax : 68c0: 0f 84 push %r12 : 68c2: 25 push %rbp : 68c3: ff ff ff mov %rcx,%rbp : 68c6: 4c push %rbx : 68c7: 89 ea 45 31 sub $0x30,%rsp : 68cb: c9 45 31 c0 movzbl 0xc(%rdx),%eax : 68cf: 31 c9 31 shr $0x4,%al : 68d2: f6 89 df movzbl %al,%eax : 68d5: 31 c0 48 c7 04 24 00 lea -0x14(,%rax,4),%ebx : 68dc: 00 00 test %ebx,%ebx : 68de: 00 e8 je 6958 : 68e0: 00 00 00 mov 0x68(%rdi),%eax : 68e3: 00 ba ff sub 0x6c(%rdi),%eax : 68e6: ff ff ff add $0x14,%esi : 68e9: e9 02 sub %esi,%eax : 68eb: ff ff cmp %eax,%ebx Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:53 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:61 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:94 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:94 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:94 7.14 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:53 7.14 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:61 7.14 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:62 7.14 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:94 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c0140 : : /* : * TransactionLogFetch --- fetch commit status of specified transaction id : */ : static XidStatus : TransactionLogFetch(TransactionId transactionId) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:53 14.29 : 4c0140: 55 push %rbp 0.00 : 4c0141: 48 89 e5 mov %rsp,%rbp 7.14 : 4c0144: 53 push %rbx 0.00 : 4c0145: 89 fb mov %edi,%ebx 0.00 : 4c0147: 48 83 ec 18 sub $0x18,%rsp : : /* : * Before going to the commit log manager, check our single item cache to : * see if we didn't just check the transaction status a moment ago. : */ : if (TransactionIdEquals(transactionId, cachedFetchXid)) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:61 7.14 : 4c014b: 3b 3d 27 8c 6b 00 cmp 0x6b8c27(%rip),%edi # b78d78 14.29 : 4c0151: 74 55 je 4c01a8 : return cachedFetchXidStatus; : : /* : * Also, check to see if the transaction ID is a permanent one. : */ : if (!TransactionIdIsNormal(transactionId)) 0.00 : 4c0153: 83 ff 02 cmp $0x2,%edi 0.00 : 4c0156: 77 18 ja 4c0170 : { : if (TransactionIdEquals(transactionId, BootstrapTransactionId)) 0.00 : 4c0158: 83 ff 01 cmp $0x1,%edi 0.00 : 4c015b: 74 63 je 4c01c0 : return TRANSACTION_STATUS_COMMITTED; : if (TransactionIdEquals(transactionId, FrozenTransactionId)) 0.00 : 4c015d: 83 ff 02 cmp $0x2,%edi 0.00 : 4c0160: ba 02 00 00 00 mov $0x2,%edx 0.00 : 4c0165: 74 59 je 4c01c0 : cachedFetchXidStatus = xidstatus; : cachedCommitLSN = xidlsn; : } : : return xidstatus; : } 0.00 : 4c0167: 48 83 c4 18 add $0x18,%rsp 0.00 : 4c016b: 89 d0 mov %edx,%eax 0.00 : 4c016d: 5b pop %rbx 0.00 : 4c016e: c9 leaveq 0.00 : 4c016f: c3 retq : } : : /* : * Get the transaction status. : */ : xidstatus = TransactionIdGetStatus(transactionId, &xidlsn); 0.00 : 4c0170: 48 8d 75 f0 lea -0x10(%rbp),%rsi 0.00 : 4c0174: e8 a7 fd ff ff callq 4bff20 : : /* : * Cache it, but DO NOT cache status for unfinished or sub-committed : * transactions! We only cache status that is guaranteed not to change. : */ : if (xidstatus != TRANSACTION_STATUS_IN_PROGRESS && 0.00 : 4c0179: 85 c0 test %eax,%eax : } : : /* : * Get the transaction status. : */ : xidstatus = TransactionIdGetStatus(transactionId, &xidlsn); 0.00 : 4c017b: 89 c2 mov %eax,%edx : : /* : * Cache it, but DO NOT cache status for unfinished or sub-committed : * transactions! We only cache status that is guaranteed not to change. : */ : if (xidstatus != TRANSACTION_STATUS_IN_PROGRESS && 0.00 : 4c017d: 74 e8 je 4c0167 0.00 : 4c017f: 83 f8 03 cmp $0x3,%eax 0.00 : 4c0182: 74 e3 je 4c0167 : xidstatus != TRANSACTION_STATUS_SUB_COMMITTED) : { : cachedFetchXid = transactionId; : cachedFetchXidStatus = xidstatus; 0.00 : 4c0184: 89 05 f2 8b 6b 00 mov %eax,0x6b8bf2(%rip) # b78d7c : cachedCommitLSN = xidlsn; 0.00 : 4c018a: 48 8b 45 f0 mov -0x10(%rbp),%rax : * transactions! We only cache status that is guaranteed not to change. : */ : if (xidstatus != TRANSACTION_STATUS_IN_PROGRESS && : xidstatus != TRANSACTION_STATUS_SUB_COMMITTED) : { : cachedFetchXid = transactionId; 0.00 : 4c018e: 89 1d e4 8b 6b 00 mov %ebx,0x6b8be4(%rip) # b78d78 : cachedFetchXidStatus = xidstatus; : cachedCommitLSN = xidlsn; 0.00 : 4c0194: 48 89 05 e5 8b 6b 00 mov %rax,0x6b8be5(%rip) # b78d80 : } : : return xidstatus; : } 0.00 : 4c019b: 48 83 c4 18 add $0x18,%rsp 0.00 : 4c019f: 89 d0 mov %edx,%eax 0.00 : 4c01a1: 5b pop %rbx 0.00 : 4c01a2: c9 leaveq 0.00 : 4c01a3: c3 retq 0.00 : 4c01a4: 0f 1f 40 00 nopl 0x0(%rax) : /* : * Before going to the commit log manager, check our single item cache to : * see if we didn't just check the transaction status a moment ago. : */ : if (TransactionIdEquals(transactionId, cachedFetchXid)) : return cachedFetchXidStatus; /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:62 7.14 : 4c01a8: 8b 15 ce 8b 6b 00 mov 0x6b8bce(%rip),%edx # b78d7c : cachedFetchXidStatus = xidstatus; : cachedCommitLSN = xidlsn; : } : : return xidstatus; : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:94 7.14 : 4c01ae: 48 83 c4 18 add $0x18,%rsp 0.00 : 4c01b2: 5b pop %rbx 14.29 : 4c01b3: c9 leaveq 14.29 : 4c01b4: 89 d0 mov %edx,%eax 14.29 : 4c01b6: c3 retq 0.00 : 4c01b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4c01be: 00 00 : if (xidstatus != TRANSACTION_STATUS_IN_PROGRESS && : xidstatus != TRANSACTION_STATUS_SUB_COMMITTED) : { : cachedFetchXid = transactionId; : cachedFetchXidStatus = xidstatus; : cachedCommitLSN = xidlsn; 0.00 : 4c01c0: ba 01 00 00 00 mov $0x1,%edx : } : : return xidstatus; : } 0.00 : 4c01c5: 48 83 c4 18 add $0x18,%rsp 0.00 : 4c01c9: 89 d0 mov %edx,%eax 0.00 : 4c01cb: 5b pop %rbx 0.00 : 4c01cc: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 64.29 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:615 21.43 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:611 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:611 7.14 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:614 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079a1a0 : : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerRememberBuffer(ResourceOwner owner, Buffer buffer) : { 0.00 : 79a1a0: 55 push %rbp : if (owner != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:611 21.43 : 79a1a1: 48 85 ff test %rdi,%rdi : * We allow the case owner == NULL because the bufmgr is sometimes invoked : * outside any transaction (for example, during WAL recovery). : */ : void : ResourceOwnerRememberBuffer(ResourceOwner owner, Buffer buffer) : { 0.00 : 79a1a4: 48 89 e5 mov %rsp,%rbp : if (owner != NULL) 7.14 : 79a1a7: 74 0f je 79a1b8 : { : Assert(owner->nbuffers < owner->maxbuffers); : owner->buffers[owner->nbuffers] = buffer; 0.00 : 79a1a9: 48 63 57 20 movslq 0x20(%rdi),%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:614 7.14 : 79a1ad: 48 8b 47 28 mov 0x28(%rdi),%rax 0.00 : 79a1b1: 89 34 90 mov %esi,(%rax,%rdx,4) : owner->nbuffers++; /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:615 64.29 : 79a1b4: 83 47 20 01 addl $0x1,0x20(%rdi) : } : } 0.00 : 79a1b8: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 14.29 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000082e60 : 0.00 : 82e60: 48 85 d2 test %rdx,%rdx 0.00 : 82e63: 0f 84 f7 00 00 00 je 82f60 ??:0 14.29 : 82e69: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 82e6d: 0f 8e bd 00 00 00 jle 82f30 0.00 : 82e73: 48 29 fe sub %rdi,%rsi 0.00 : 82e76: 49 89 d2 mov %rdx,%r10 7.14 : 82e79: 49 83 fa 20 cmp $0x20,%r10 0.00 : 82e7d: 0f 8d e0 00 00 00 jge 82f63 7.14 : 82e83: 49 f7 c2 01 00 00 00 test $0x1,%r10 0.00 : 82e8a: 74 1d je 82ea9 0.00 : 82e8c: 0f b6 07 movzbl (%rdi),%eax 0.00 : 82e8f: 0f b6 14 37 movzbl (%rdi,%rsi,1),%edx 0.00 : 82e93: 49 83 ea 01 sub $0x1,%r10 0.00 : 82e97: 0f 84 99 00 00 00 je 82f36 0.00 : 82e9d: 48 83 c7 01 add $0x1,%rdi 0.00 : 82ea1: 29 d0 sub %edx,%eax 0.00 : 82ea3: 0f 85 8f 00 00 00 jne 82f38 0.00 : 82ea9: 49 f7 c2 02 00 00 00 test $0x2,%r10 0.00 : 82eb0: 74 15 je 82ec7 0.00 : 82eb2: 0f b7 07 movzwl (%rdi),%eax 0.00 : 82eb5: 0f b7 14 37 movzwl (%rdi,%rsi,1),%edx 0.00 : 82eb9: 49 83 ea 02 sub $0x2,%r10 0.00 : 82ebd: 74 7a je 82f39 0.00 : 82ebf: 48 83 c7 02 add $0x2,%rdi 0.00 : 82ec3: 39 d0 cmp %edx,%eax 0.00 : 82ec5: 75 72 jne 82f39 7.14 : 82ec7: 49 f7 c2 04 00 00 00 test $0x4,%r10 0.00 : 82ece: 74 13 je 82ee3 0.00 : 82ed0: 8b 07 mov (%rdi),%eax 7.14 : 82ed2: 8b 14 37 mov (%rdi,%rsi,1),%edx 0.00 : 82ed5: 49 83 ea 04 sub $0x4,%r10 0.00 : 82ed9: 74 5e je 82f39 0.00 : 82edb: 48 83 c7 04 add $0x4,%rdi 0.00 : 82edf: 39 d0 cmp %edx,%eax 0.00 : 82ee1: 75 56 jne 82f39 0.00 : 82ee3: 49 f7 c2 08 00 00 00 test $0x8,%r10 0.00 : 82eea: 74 16 je 82f02 0.00 : 82eec: 48 8b 07 mov (%rdi),%rax 0.00 : 82eef: 48 8b 14 37 mov (%rdi,%rsi,1),%rdx 0.00 : 82ef3: 49 83 ea 08 sub $0x8,%r10 0.00 : 82ef7: 74 40 je 82f39 0.00 : 82ef9: 48 83 c7 08 add $0x8,%rdi 0.00 : 82efd: 48 39 d0 cmp %rdx,%rax 0.00 : 82f00: 75 37 jne 82f39 14.29 : 82f02: f3 0f 6f 0f movdqu (%rdi),%xmm1 14.29 : 82f06: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 82f0b: 66 0f 74 c8 pcmpeqb %xmm0,%xmm1 7.14 : 82f0f: 66 0f d7 d1 pmovmskb %xmm1,%edx 7.14 : 82f13: 31 c0 xor %eax,%eax 0.00 : 82f15: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 82f1b: 74 43 je 82f60 0.00 : 82f1d: 0f bc ca bsf %edx,%ecx 0.00 : 82f20: 48 8d 0c 0f lea (%rdi,%rcx,1),%rcx 0.00 : 82f24: 0f b6 01 movzbl (%rcx),%eax 0.00 : 82f27: 0f b6 14 0e movzbl (%rsi,%rcx,1),%edx 0.00 : 82f2b: eb 09 jmp 82f36 0.00 : 82f2d: 0f 1f 00 nopl (%rax) 0.00 : 82f30: 0f b6 07 movzbl (%rdi),%eax 0.00 : 82f33: 0f b6 16 movzbl (%rsi),%edx 0.00 : 82f36: 29 d0 sub %edx,%eax 0.00 : 82f38: c3 retq 0.00 : 82f39: 48 39 d0 cmp %rdx,%rax 0.00 : 82f3c: 74 22 je 82f60 0.00 : 82f3e: 49 89 c3 mov %rax,%r11 0.00 : 82f41: 49 29 d3 sub %rdx,%r11 0.00 : 82f44: 49 0f bc cb bsf %r11,%rcx 0.00 : 82f48: 48 c1 f9 03 sar $0x3,%rcx 0.00 : 82f4c: 48 c1 e1 03 shl $0x3,%rcx 0.00 : 82f50: 48 d3 f8 sar %cl,%rax 0.00 : 82f53: 0f b6 c0 movzbl %al,%eax 0.00 : 82f56: 48 d3 fa sar %cl,%rdx 0.00 : 82f59: 0f b6 d2 movzbl %dl,%edx 0.00 : 82f5c: 29 d0 sub %edx,%eax 0.00 : 82f5e: c3 retq 0.00 : 82f5f: 90 nop 14.29 : 82f60: 31 c0 xor %eax,%eax 0.00 : 82f62: c3 retq 0.00 : 82f63: 49 89 d3 mov %rdx,%r11 0.00 : 82f66: 49 01 fb add %rdi,%r11 0.00 : 82f69: 49 89 f8 mov %rdi,%r8 0.00 : 82f6c: 49 83 e0 0f and $0xf,%r8 0.00 : 82f70: 74 25 je 82f97 0.00 : 82f72: f3 0f 6f 0f movdqu (%rdi),%xmm1 0.00 : 82f76: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 82f7b: 66 0f 74 c8 pcmpeqb %xmm0,%xmm1 0.00 : 82f7f: 66 0f d7 d1 pmovmskb %xmm1,%edx 0.00 : 82f83: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 82f89: 0f 85 61 01 00 00 jne 830f0 0.00 : 82f8f: 49 f7 d8 neg %r8 0.00 : 82f92: 4a 8d 7c 07 10 lea 0x10(%rdi,%r8,1),%rdi 0.00 : 82f97: 48 f7 c6 0f 00 00 00 test $0xf,%rsi 0.00 : 82f9e: 0f 84 5f 01 00 00 je 83103 0.00 : 82fa4: 48 f7 c7 10 00 00 00 test $0x10,%rdi 0.00 : 82fab: 74 1d je 82fca 0.00 : 82fad: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 82fb2: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 82fb6: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 82fba: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 82fc0: 0f 85 2a 01 00 00 jne 830f0 0.00 : 82fc6: 48 83 c7 10 add $0x10,%rdi 0.00 : 82fca: 4d 89 da mov %r11,%r10 0.00 : 82fcd: 49 83 e2 e0 and $0xffffffffffffffe0,%r10 0.00 : 82fd1: 4c 39 d7 cmp %r10,%rdi 0.00 : 82fd4: 0f 8d 03 01 00 00 jge 830dd 0.00 : 82fda: 48 f7 c7 20 00 00 00 test $0x20,%rdi 0.00 : 82fe1: 74 3a je 8301d 0.00 : 82fe3: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 82fe8: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 82fec: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 82ff0: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 82ff6: 0f 85 f4 00 00 00 jne 830f0 0.00 : 82ffc: 48 83 c7 10 add $0x10,%rdi 0.00 : 83000: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 83005: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83009: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 8300d: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83013: 0f 85 d7 00 00 00 jne 830f0 0.00 : 83019: 48 83 c7 10 add $0x10,%rdi 0.00 : 8301d: 4d 89 da mov %r11,%r10 0.00 : 83020: 49 83 e2 c0 and $0xffffffffffffffc0,%r10 0.00 : 83024: 4c 39 d7 cmp %r10,%rdi 0.00 : 83027: 7d 71 jge 8309a 0.00 : 83029: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 8302e: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83032: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83036: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8303c: 0f 85 ae 00 00 00 jne 830f0 0.00 : 83042: 48 83 c7 10 add $0x10,%rdi 0.00 : 83046: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 8304b: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 8304f: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83053: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83059: 0f 85 91 00 00 00 jne 830f0 0.00 : 8305f: 48 83 c7 10 add $0x10,%rdi 0.00 : 83063: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 83068: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 8306c: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83070: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83076: 75 78 jne 830f0 0.00 : 83078: 48 83 c7 10 add $0x10,%rdi 0.00 : 8307c: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 83081: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83085: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83089: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8308f: 75 5f jne 830f0 0.00 : 83091: 48 83 c7 10 add $0x10,%rdi 0.00 : 83095: 49 39 fa cmp %rdi,%r10 0.00 : 83098: 75 8f jne 83029 0.00 : 8309a: 4d 89 da mov %r11,%r10 0.00 : 8309d: 49 83 e2 e0 and $0xffffffffffffffe0,%r10 0.00 : 830a1: 4c 39 d7 cmp %r10,%rdi 0.00 : 830a4: 7d 37 jge 830dd 0.00 : 830a6: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 830ab: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 830af: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 830b3: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 830b9: 75 35 jne 830f0 0.00 : 830bb: 48 83 c7 10 add $0x10,%rdi 0.00 : 830bf: f3 0f 6f 04 37 movdqu (%rdi,%rsi,1),%xmm0 0.00 : 830c4: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 830c8: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 830cc: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 830d2: 75 1c jne 830f0 0.00 : 830d4: 48 83 c7 10 add $0x10,%rdi 0.00 : 830d8: 49 39 fa cmp %rdi,%r10 0.00 : 830db: 75 c9 jne 830a6 0.00 : 830dd: 49 29 fb sub %rdi,%r11 0.00 : 830e0: 0f 84 7a fe ff ff je 82f60 0.00 : 830e6: 4d 89 da mov %r11,%r10 0.00 : 830e9: e9 95 fd ff ff jmpq 82e83 0.00 : 830ee: 66 90 xchg %ax,%ax 0.00 : 830f0: 0f bc ca bsf %edx,%ecx 0.00 : 830f3: 0f b6 04 0f movzbl (%rdi,%rcx,1),%eax 0.00 : 830f7: 48 01 fe add %rdi,%rsi 0.00 : 830fa: 0f b6 14 0e movzbl (%rsi,%rcx,1),%edx 0.00 : 830fe: e9 33 fe ff ff jmpq 82f36 0.00 : 83103: 4d 89 da mov %r11,%r10 0.00 : 83106: 49 83 e2 e0 and $0xffffffffffffffe0,%r10 0.00 : 8310a: 4c 39 d7 cmp %r10,%rdi 0.00 : 8310d: 7d ce jge 830dd 0.00 : 8310f: 48 f7 c7 10 00 00 00 test $0x10,%rdi 0.00 : 83116: 74 1e je 83136 0.00 : 83118: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 8311d: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83121: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83125: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8312b: 75 c3 jne 830f0 0.00 : 8312d: 48 83 c7 10 add $0x10,%rdi 0.00 : 83131: 49 39 fa cmp %rdi,%r10 0.00 : 83134: 74 a7 je 830dd 0.00 : 83136: 4d 89 da mov %r11,%r10 0.00 : 83139: 49 83 e2 c0 and $0xffffffffffffffc0,%r10 0.00 : 8313d: 48 f7 c7 20 00 00 00 test $0x20,%rdi 0.00 : 83144: 74 36 je 8317c 0.00 : 83146: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 8314b: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 8314f: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83153: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83159: 75 95 jne 830f0 0.00 : 8315b: 48 83 c7 10 add $0x10,%rdi 0.00 : 8315f: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 83164: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83168: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 8316c: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83172: 0f 85 78 ff ff ff jne 830f0 0.00 : 83178: 48 83 c7 10 add $0x10,%rdi 0.00 : 8317c: 49 39 fa cmp %rdi,%r10 0.00 : 8317f: 0f 84 15 ff ff ff je 8309a 0.00 : 83185: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 8318a: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 8318e: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83192: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83198: 0f 85 52 ff ff ff jne 830f0 0.00 : 8319e: 48 83 c7 10 add $0x10,%rdi 0.00 : 831a2: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 831a7: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 831ab: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 831af: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 831b5: 0f 85 35 ff ff ff jne 830f0 0.00 : 831bb: 48 83 c7 10 add $0x10,%rdi 0.00 : 831bf: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 831c4: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 831c8: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 831cc: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 831d2: 0f 85 18 ff ff ff jne 830f0 0.00 : 831d8: 48 83 c7 10 add $0x10,%rdi 0.00 : 831dc: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 831e1: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 831e5: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 831e9: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 831ef: 0f 85 fb fe ff ff jne 830f0 0.00 : 831f5: 48 83 c7 10 add $0x10,%rdi 0.00 : 831f9: 49 39 fa cmp %rdi,%r10 0.00 : 831fc: 75 87 jne 83185 0.00 : 831fe: 4d 89 da mov %r11,%r10 0.00 : 83201: 49 83 e2 e0 and $0xffffffffffffffe0,%r10 0.00 : 83205: 4c 39 d7 cmp %r10,%rdi 0.00 : 83208: 0f 8d cf fe ff ff jge 830dd 0.00 : 8320e: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 83213: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83217: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 8321b: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 83221: 0f 85 c9 fe ff ff jne 830f0 0.00 : 83227: 48 83 c7 10 add $0x10,%rdi 0.00 : 8322b: 66 0f 6f 04 37 movdqa (%rdi,%rsi,1),%xmm0 0.00 : 83230: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 0.00 : 83234: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 83238: 81 ea ff ff 00 00 sub $0xffff,%edx 0.00 : 8323e: 0f 85 ac fe ff ff jne 830f0 0.00 : 83244: 48 83 c7 10 add $0x10,%rdi 0.00 : 83248: 4c 39 d7 cmp %r10,%rdi 0.00 : 8324b: 75 c1 jne 8320e 0.00 : 8324d: 49 29 fb sub %rdi,%r11 0.00 : 83250: 0f 84 0a fd ff ff je 82f60 0.00 : 83256: 4d 89 da mov %r11,%r10 0.00 : 83259: e9 25 fc ff ff jmpq 82e83 0.00 : 8325e: 66 90 xchg %ax,%ax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 84.62 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:395 15.38 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:397 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c0b90 : : * It will return InvalidTransactionId if we are not currently inside a : * transaction, or inside a transaction that hasn't been assigned an XID yet. : */ : TransactionId : GetCurrentTransactionIdIfAny(void) : { 0.00 : 4c0b90: 48 8b 05 91 72 6a 00 mov 0x6a7291(%rip),%rax # b67e28 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:395 84.62 : 4c0b97: 55 push %rbp 0.00 : 4c0b98: 48 89 e5 mov %rsp,%rbp 0.00 : 4c0b9b: 8b 00 mov (%rax),%eax : return CurrentTransactionState->transactionId; : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:397 15.38 : 4c0b9d: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 23.08 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2780 15.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 15.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 7.69 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2780 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674e60 : : /* : * ReleaseBuffer -- release the pin on a buffer : */ : void : ReleaseBuffer(Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2762 7.69 : 674e60: 55 push %rbp 7.69 : 674e61: 48 89 e5 mov %rsp,%rbp 0.00 : 674e64: 48 89 5d f0 mov %rbx,-0x10(%rbp) 7.69 : 674e68: 4c 89 65 f8 mov %r12,-0x8(%rbp) 7.69 : 674e6c: 48 83 ec 10 sub $0x10,%rsp : volatile BufferDesc *bufHdr; : PrivateRefCountEntry *ref; : : if (!BufferIsValid(buffer)) 0.00 : 674e70: 85 ff test %edi,%edi : /* : * ReleaseBuffer -- release the pin on a buffer : */ : void : ReleaseBuffer(Buffer buffer) : { 7.69 : 674e72: 89 fb mov %edi,%ebx : volatile BufferDesc *bufHdr; : PrivateRefCountEntry *ref; : : if (!BufferIsValid(buffer)) 0.00 : 674e74: 74 7f je 674ef5 : elog(ERROR, "bad buffer ID: %d", buffer); : : ResourceOwnerForgetBuffer(CurrentResourceOwner, buffer); 0.00 : 674e76: 89 fe mov %edi,%esi 0.00 : 674e78: 48 8b 3d 41 5a 54 00 mov 0x545a41(%rip),%rdi # bba8c0 0.00 : 674e7f: e8 7c 5a 12 00 callq 79a900 : : if (BufferIsLocal(buffer)) 0.00 : 674e84: 85 db test %ebx,%ebx 0.00 : 674e86: 78 38 js 674ec0 : return; : } : : bufHdr = &BufferDescriptors[buffer - 1]; : : ref = GetPrivateRefCountEntry(buffer, false, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2780 23.08 : 674e88: 31 d2 xor %edx,%edx 7.69 : 674e8a: 31 f6 xor %esi,%esi 0.00 : 674e8c: 89 df mov %ebx,%edi : Assert(LocalRefCount[-buffer - 1] > 0); : LocalRefCount[-buffer - 1]--; : return; : } : : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 674e8e: 4c 8b 25 6b ac 54 00 mov 0x54ac6b(%rip),%r12 # bbfb00 : : ref = GetPrivateRefCountEntry(buffer, false, false); 0.00 : 674e95: e8 86 f6 ff ff callq 674520 0.00 : 674e9a: 48 89 c2 mov %rax,%rdx : Assert(ref != NULL); : Assert(ref->refcount > 0); : : if (ref->refcount > 1) 0.00 : 674e9d: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 674ea0: 83 f8 01 cmp $0x1,%eax 0.00 : 674ea3: 7e 33 jle 674ed8 : ref->refcount--; 0.00 : 674ea5: 83 e8 01 sub $0x1,%eax 0.00 : 674ea8: 89 42 04 mov %eax,0x4(%rdx) : else : UnpinBuffer(bufHdr, false); : } 0.00 : 674eab: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 674eaf: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 674eb4: c9 leaveq 0.00 : 674eb5: c3 retq 0.00 : 674eb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 674ebd: 00 00 00 : ResourceOwnerForgetBuffer(CurrentResourceOwner, buffer); : : if (BufferIsLocal(buffer)) : { : Assert(LocalRefCount[-buffer - 1] > 0); : LocalRefCount[-buffer - 1]--; 0.00 : 674ec0: f7 d3 not %ebx 0.00 : 674ec2: 48 63 c3 movslq %ebx,%rax 0.00 : 674ec5: 48 c1 e0 02 shl $0x2,%rax 0.00 : 674ec9: 48 03 05 50 82 50 00 add 0x508250(%rip),%rax # b7d120 0.00 : 674ed0: 83 28 01 subl $0x1,(%rax) : : if (ref->refcount > 1) : ref->refcount--; : else : UnpinBuffer(bufHdr, false); : } 0.00 : 674ed3: eb d6 jmp 674eab 0.00 : 674ed5: 0f 1f 00 nopl (%rax) : Assert(ref->refcount > 0); : : if (ref->refcount > 1) : ref->refcount--; : else : UnpinBuffer(bufHdr, false); 0.00 : 674ed8: 48 63 c3 movslq %ebx,%rax : } /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2788 15.38 : 674edb: 48 8b 1c 24 mov (%rsp),%rbx : Assert(ref->refcount > 0); : : if (ref->refcount > 1) : ref->refcount--; : else : UnpinBuffer(bufHdr, false); 0.00 : 674edf: 31 f6 xor %esi,%esi 0.00 : 674ee1: 48 c1 e0 06 shl $0x6,%rax 0.00 : 674ee5: 49 8d 7c 04 c0 lea -0x40(%r12,%rax,1),%rdi : } 0.00 : 674eea: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 15.38 : 674eef: c9 leaveq : Assert(ref->refcount > 0); : : if (ref->refcount > 1) : ref->refcount--; : else : UnpinBuffer(bufHdr, false); 0.00 : 674ef0: e9 3b fe ff ff jmpq 674d30 : { : volatile BufferDesc *bufHdr; : PrivateRefCountEntry *ref; : : if (!BufferIsValid(buffer)) : elog(ERROR, "bad buffer ID: %d", buffer); 0.00 : 674ef5: ba 34 a0 8a 00 mov $0x8aa034,%edx 0.00 : 674efa: be cf 0a 00 00 mov $0xacf,%esi 0.00 : 674eff: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 674f04: e8 17 65 10 00 callq 77b420 0.00 : 674f09: 31 d2 xor %edx,%edx 0.00 : 674f0b: be 5c 9d 8a 00 mov $0x8a9d5c,%esi 0.00 : 674f10: bf 14 00 00 00 mov $0x14,%edi 0.00 : 674f15: 31 c0 xor %eax,%eax 0.00 : 674f17: e8 14 63 10 00 callq 77b230 0.00 : 674f1c: e8 af 45 df ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 84.62 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:677 15.38 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:677 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068bff0 : : LockAcquireResult : LockAcquire(const LOCKTAG *locktag, : LOCKMODE lockmode, : bool sessionLock, : bool dontWait) : { 0.00 : 68bff0: 55 push %rbp : return LockAcquireExtended(locktag, lockmode, sessionLock, dontWait, true); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:677 15.38 : 68bff1: 0f be c9 movsbl %cl,%ecx 0.00 : 68bff4: 0f be d2 movsbl %dl,%edx 0.00 : 68bff7: 41 b8 01 00 00 00 mov $0x1,%r8d : LockAcquireResult : LockAcquire(const LOCKTAG *locktag, : LOCKMODE lockmode, : bool sessionLock, : bool dontWait) : { 0.00 : 68bffd: 48 89 e5 mov %rsp,%rbp : return LockAcquireExtended(locktag, lockmode, sessionLock, dontWait, true); : } 0.00 : 68c000: c9 leaveq : LockAcquire(const LOCKTAG *locktag, : LOCKMODE lockmode, : bool sessionLock, : bool dontWait) : { : return LockAcquireExtended(locktag, lockmode, sessionLock, dontWait, true); 84.62 : 68c001: e9 6a f6 ff ff jmpq 68b670 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 61.54 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000363a0 : 0.00 : 363a0: 48 85 ff test %rdi,%rdi 0.00 : 363a3: 0f 84 7f 00 00 00 je 36428 0.00 : 363a9: 48 85 f6 test %rsi,%rsi 0.00 : 363ac: 74 7a je 36428 7.69 : 363ae: 8b 57 18 mov 0x18(%rdi),%edx 0.00 : 363b1: 4c 8b 47 10 mov 0x10(%rdi),%r8 0.00 : 363b5: 85 d2 test %edx,%edx 0.00 : 363b7: 74 4f je 36408 0.00 : 363b9: 48 8b 17 mov (%rdi),%rdx 7.69 : 363bc: 48 8b 4f 08 mov 0x8(%rdi),%rcx 0.00 : 363c0: 4c 8b 4f 28 mov 0x28(%rdi),%r9 0.00 : 363c4: 8b 01 mov (%rcx),%eax 7.69 : 363c6: 03 02 add (%rdx),%eax 0.00 : 363c8: 89 02 mov %eax,(%rdx) 0.00 : 363ca: 48 83 c2 04 add $0x4,%rdx 0.00 : 363ce: d1 e8 shr %eax 0.00 : 363d0: 49 39 d1 cmp %rdx,%r9 0.00 : 363d3: 89 06 mov %eax,(%rsi) 0.00 : 363d5: 76 19 jbe 363f0 0.00 : 363d7: 48 8d 41 04 lea 0x4(%rcx),%rax 0.00 : 363db: 48 89 17 mov %rdx,(%rdi) 0.00 : 363de: 49 39 c1 cmp %rax,%r9 0.00 : 363e1: 49 0f 46 c0 cmovbe %r8,%rax 61.54 : 363e5: 48 89 47 08 mov %rax,0x8(%rdi) 7.69 : 363e9: 31 c0 xor %eax,%eax 0.00 : 363eb: c3 retq 0.00 : 363ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 363f0: 48 8d 41 04 lea 0x4(%rcx),%rax 7.69 : 363f4: 4c 89 c2 mov %r8,%rdx 0.00 : 363f7: 48 89 17 mov %rdx,(%rdi) 0.00 : 363fa: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 363fe: 31 c0 xor %eax,%eax 0.00 : 36400: c3 retq 0.00 : 36401: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 36408: 41 8b 00 mov (%r8),%eax 0.00 : 3640b: 69 c0 6d 4e c6 41 imul $0x41c64e6d,%eax,%eax 0.00 : 36411: 05 39 30 00 00 add $0x3039,%eax 0.00 : 36416: 25 ff ff ff 7f and $0x7fffffff,%eax 0.00 : 3641b: 41 89 00 mov %eax,(%r8) 0.00 : 3641e: 89 06 mov %eax,(%rsi) 0.00 : 36420: 31 c0 xor %eax,%eax 0.00 : 36422: c3 retq 0.00 : 36423: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 36428: 48 8b 15 09 ba 33 00 mov 0x33ba09(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 3642f: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 36436: 00 00 0.00 : 36438: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 3643f: b8 ff ff ff ff mov $0xffffffff,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 61.54 ??:0 23.08 ??:0 15.38 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000cd5c0 <__read>: 15.38 : cd5c0: 83 3d ed a0 2a 00 00 cmpl $0x0,0x2aa0ed(%rip) # 3776b4 <__libc_multiple_threads> 23.08 : cd5c7: 75 10 jne cd5d9 <__read_nocancel+0x10> : : 00000000000cd5c9 <__read_nocancel>: 0.00 : cd5c9: b8 00 00 00 00 mov $0x0,%eax 0.00 : cd5ce: 0f 05 syscall 61.54 : cd5d0: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd5d6: 73 31 jae cd609 <__read_nocancel+0x40> 0.00 : cd5d8: c3 retq 0.00 : cd5d9: 48 83 ec 08 sub $0x8,%rsp 0.00 : cd5dd: e8 4e ac 01 00 callq e8230 <__libc_enable_asynccancel> 0.00 : cd5e2: 48 89 04 24 mov %rax,(%rsp) 0.00 : cd5e6: b8 00 00 00 00 mov $0x0,%eax 0.00 : cd5eb: 0f 05 syscall 0.00 : cd5ed: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : cd5f1: 48 89 c2 mov %rax,%rdx 0.00 : cd5f4: e8 97 ac 01 00 callq e8290 <__libc_disable_asynccancel> 0.00 : cd5f9: 48 89 d0 mov %rdx,%rax 0.00 : cd5fc: 48 83 c4 08 add $0x8,%rsp 0.00 : cd600: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : cd606: 73 01 jae cd609 <__read_nocancel+0x40> 0.00 : cd608: c3 retq 0.00 : cd609: 48 8b 0d 28 48 2a 00 mov 0x2a4828(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : cd610: 31 d2 xor %edx,%edx 0.00 : cd612: 48 29 c2 sub %rax,%rdx 0.00 : cd615: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : cd618: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : cd61c: eb ea jmp cd608 <__read_nocancel+0x3f> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 21.74 ??:0 13.04 ??:0 8.70 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 4.35 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000002120 <__nf_conntrack_find_get>: 13.04 : 2120: 41 56 push %r14 0.00 : 2152: 49 89 rex (bad) 0.00 : 2154: fe 41 55 mov %rsi,%rdi 0.00 : 2157: 41 89 cd 41 54 55 89 lea 0x0(,%rax,8),%rdx 0.00 : 215e: f5 0.00 : 215f: 53 48 89 sub %rax,%rdx 0.00 : 2162: d3 44 0f b7 e6 44 89 lea 0x8(,%rdx,8),%rdx 0.00 : 2169: e6 0.00 : 216a: 44 89 e9 sub %rdx,%rdi 0.00 : 216d: 48 89 da 4c mov 0x78(%rdi),%rax 0.00 : 2171: 89 f7 e8 test $0x2,%ah 0.00 : 2174: 68 fe jne 21b8 ??:0 4.35 : 2176: ff ff mov (%rdi),%edx 4.35 : 2178: 48 85 test %edx,%edx 0.00 : 217a: c0 48 je 21b8 0.00 : 217c: 89 c6 74 70 lea 0x1(%rdx),%r8d 0.00 : 2180: 0f b6 mov %edx,%eax ??:0 8.70 : 2182: 40 37 48 89 f7 lock cmpxchg %r8d,(%rdi) 21.74 : 2187: 48 8d cmp %edx,%eax 0.00 : 2189: 14 c5 mov %eax,%ecx 0.00 : 218b: 00 00 jne 2192 0.00 : 218d: 00 00 jmp 21a5 0.00 : 218f: 48 nop 0.00 : 2190: 29 c2 mov %eax,%ecx 0.00 : 2192: 48 8d test %ecx,%ecx 0.00 : 2194: 14 d5 je 21b8 0.00 : 2196: 08 00 00 00 lea 0x1(%rcx),%r8d 0.00 : 219a: 48 29 mov %ecx,%eax 0.00 : 219c: d7 48 8b 47 78 lock cmpxchg %r8d,(%rdi) 0.00 : 21a1: f6 c4 cmp %ecx,%eax 0.00 : 21a3: 02 75 jne 2190 0.00 : 21a5: 42 8b mov (%rbx),%eax ??:0 4.35 : 21a7: 17 85 d2 cmp 0x10(%rsi),%eax 0.00 : 21aa: 74 3c je 21d0 0.00 : 21ac: 44 8d 42 01 89 callq 5d0 0.00 : 21b1: d0 f0 jmp 2137 0.00 : 21b3: 44 0f b1 07 39 nopl 0x0(%rax,%rax,1) 0.00 : 21b8: d0 89 xor %esi,%esi 0.00 : 21ba: c1 75 05 eb 16 90 nopw 0x0(%rax,%rax,1) 0.00 : 21c0: 89 pop %rbx 0.00 : 21c1: c1 pop %rbp 0.00 : 21c2: 85 c9 pop %r12 0.00 : 21c4: 74 22 pop %r13 0.00 : 21c6: 44 8d 41 mov %rsi,%rax 0.00 : 21c9: 01 89 pop %r14 0.00 : 21cb: c8 retq 0.00 : 21cc: f0 44 0f b1 nopl 0x0(%rax) 0.00 : 21d0: 07 39 c8 mov 0x4(%rbx),%eax 0.00 : 21d3: 75 eb 8b cmp 0x14(%rsi),%eax 0.00 : 21d6: 03 3b jne 21ac 4.35 : 21d8: 46 10 74 mov 0x8(%rbx),%eax 0.00 : 21db: 24 e8 1f cmp 0x18(%rsi),%eax 0.00 : 21de: e4 ff jne 21ac 4.35 : 21e0: ff eb 84 mov 0xc(%rbx),%eax 0.00 : 21e3: 0f 1f 44 cmp 0x1c(%rsi),%eax 0.00 : 21e6: 00 00 jne 21ac 0.00 : 21e8: 31 f6 66 mov 0x10(%rbx),%eax 0.00 : 21eb: 0f 1f 44 cmp 0x20(%rsi),%eax 0.00 : 21ee: 00 00 jne 21ac 0.00 : 21f0: 5b 5d 41 mov 0x14(%rbx),%eax 0.00 : 21f3: 5c 41 5d cmp 0x24(%rsi),%eax 0.00 : 21f6: 48 89 jne 21ac 0.00 : 21f8: f0 41 5e mov 0x18(%rbx),%eax 0.00 : 21fb: c3 0f 1f cmp 0x28(%rsi),%eax 0.00 : 21fe: 40 00 jne 21ac 4.35 : 2200: 8b 43 04 mov 0x1c(%rbx),%eax 0.00 : 2203: 3b 46 14 cmp 0x2c(%rsi),%eax 0.00 : 2206: 75 d4 jne 21ac 0.00 : 2208: 8b 43 08 mov 0x20(%rbx),%eax 0.00 : 220b: 3b 46 18 cmp 0x30(%rsi),%eax 0.00 : 220e: 75 cc jne 21ac 4.35 : 2210: 8b 43 0c mov 0x24(%rbx),%edx 0.00 : 2213: 3b 46 1c mov 0x34(%rsi),%eax 0.00 : 2216: 75 c4 8b 43 10 3b and $0xffffff,%edx 0.00 : 221c: 46 20 75 bc 8b and $0xffffff,%eax 0.00 : 2221: 43 14 cmp %eax,%edx 0.00 : 2223: 3b 46 jne 21ac 4.35 : 2225: 24 75 b4 8b 43 18 3b mov 0xe0(%rdi),%rdx 0.00 : 222c: 46 28 75 test %rdx,%rdx 0.00 : 222f: ac 8b je 2258 0.00 : 2231: 43 1c 3b 46 movzbl 0x14(%rdx),%eax ??:0 13.04 : 2235: 2c 75 test %al,%al 0.00 : 2237: a4 8b je 2258 0.00 : 2239: 43 20 3b movzbl %al,%eax 0.00 : 223c: 46 30 75 add %rdx,%rax 0.00 : 223f: 9c 8b je 2258 0.00 : 2241: 53 24 8b movzwl (%rax),%eax ??:0 4.35 : 2244: 46 34 81 cmp %ax,%bp 0.00 : 2247: e2 ff ff ff 00 25 je 21c0 0.00 : 224d: ff ff ff nopl (%rax) 0.00 : 2250: 00 39 c2 75 87 jmpq 21ac 0.00 : 2255: 48 8b 97 nopl (%rax) 4.35 : 2258: e0 00 xor %eax,%eax 0.00 : 225a: 00 00 jmp 2244 : 225c: 48 85 d2 74 nopl 0x0(%rax) : 2260: 27 0f b6 42 sub $0x18,%rsp : 2264: 14 84 c0 74 mov %rbx,(%rsp) : 2268: 1f 0f b6 movzwl %si,%ebx : 226b: c0 48 01 d0 74 mov %r12,0x8(%rsp) : 2270: 17 0f b7 00 66 mov %r13,0x10(%rsp) : 2275: 39 c5 0f mov %rdx,%r12 : 2278: 84 73 ff mov %rdi,%r13 : 227b: ff ff mov %ebx,%esi : 227d: 0f 1f 00 mov %rdx,%rdi : 2280: e9 57 ff ff ff callq 0 : 2285: 0f 1f 00 mov %r12,%rdx : 2288: 31 c0 mov %ebx,%esi : 228a: eb e8 0f mov %r13,%rdi Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1093 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1093 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1093 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1093 8.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1112 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694e30 : : * statically-allocated memory, so the caller must immediately write the : * returned page and not refer to it again. : */ : char * : PageSetChecksumCopy(Page page, BlockNumber blkno) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1093 8.33 : 694e30: 55 push %rbp 66.67 : 694e31: 48 89 e5 mov %rsp,%rbp 0.00 : 694e34: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 694e38: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 694e3c: 48 83 ec 10 sub $0x10,%rsp : static char *pageCopy = NULL; : : /* If we don't need a checksum, just return the passed-in data */ : if (PageIsNew(page) || !DataChecksumsEnabled()) 0.00 : 694e40: 66 83 7f 0e 00 cmpw $0x0,0xe(%rdi) : * statically-allocated memory, so the caller must immediately write the : * returned page and not refer to it again. : */ : char * : PageSetChecksumCopy(Page page, BlockNumber blkno) : { 8.33 : 694e45: 48 89 fb mov %rdi,%rbx 8.33 : 694e48: 41 89 f4 mov %esi,%r12d : static char *pageCopy = NULL; : : /* If we don't need a checksum, just return the passed-in data */ : if (PageIsNew(page) || !DataChecksumsEnabled()) 0.00 : 694e4b: 75 13 jne 694e60 : pageCopy = MemoryContextAlloc(TopMemoryContext, BLCKSZ); : : memcpy(pageCopy, (char *) page, BLCKSZ); : ((PageHeader) pageCopy)->pd_checksum = pg_checksum_page(pageCopy, blkno); : return pageCopy; : } 0.00 : 694e4d: 48 89 d8 mov %rbx,%rax 0.00 : 694e50: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 694e55: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 694e59: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1112 8.33 : 694e5a: c3 retq 0.00 : 694e5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : PageSetChecksumCopy(Page page, BlockNumber blkno) : { : static char *pageCopy = NULL; : : /* If we don't need a checksum, just return the passed-in data */ : if (PageIsNew(page) || !DataChecksumsEnabled()) 0.00 : 694e60: e8 5b 81 e3 ff callq 4ccfc0 0.00 : 694e65: 84 c0 test %al,%al 0.00 : 694e67: 74 e4 je 694e4d : * We allocate the copy space once and use it over on each subsequent : * call. The point of palloc'ing here, rather than having a static char : * array, is first to ensure adequate alignment for the checksumming code : * and second to avoid wasting space in processes that never call this. : */ : if (pageCopy == NULL) 0.00 : 694e69: 48 83 3d 1f 99 4e 00 cmpq $0x0,0x4e991f(%rip) # b7e790 0.00 : 694e70: 00 0.00 : 694e71: 74 35 je 694ea8 : pageCopy = MemoryContextAlloc(TopMemoryContext, BLCKSZ); : : memcpy(pageCopy, (char *) page, BLCKSZ); 0.00 : 694e73: 48 8b 3d 16 99 4e 00 mov 0x4e9916(%rip),%rdi # b7e790 0.00 : 694e7a: 48 89 de mov %rbx,%rsi 0.00 : 694e7d: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 694e82: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) : ((PageHeader) pageCopy)->pd_checksum = pg_checksum_page(pageCopy, blkno); 0.00 : 694e85: 44 89 e6 mov %r12d,%esi 0.00 : 694e88: 48 8b 1d 01 99 4e 00 mov 0x4e9901(%rip),%rbx # b7e790 0.00 : 694e8f: 48 89 df mov %rbx,%rdi 0.00 : 694e92: e8 d9 14 00 00 callq 696370 0.00 : 694e97: 66 89 43 08 mov %ax,0x8(%rbx) : return pageCopy; 0.00 : 694e9b: 48 8b 1d ee 98 4e 00 mov 0x4e98ee(%rip),%rbx # b7e790 : } 0.00 : 694ea2: eb a9 jmp 694e4d 0.00 : 694ea4: 0f 1f 40 00 nopl 0x0(%rax) : * call. The point of palloc'ing here, rather than having a static char : * array, is first to ensure adequate alignment for the checksumming code : * and second to avoid wasting space in processes that never call this. : */ : if (pageCopy == NULL) : pageCopy = MemoryContextAlloc(TopMemoryContext, BLCKSZ); 0.00 : 694ea8: 48 8b 3d b9 59 52 00 mov 0x5259b9(%rip),%rdi # bba868 0.00 : 694eaf: be 00 20 00 00 mov $0x2000,%esi 0.00 : 694eb4: e8 d7 3f 10 00 callq 798e90 0.00 : 694eb9: 48 89 05 d0 98 4e 00 mov %rax,0x4e98d0(%rip) # b7e790 0.00 : 694ec0: eb b1 jmp 694e73 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ---------------------------------------------- 15.79 ??:0 15.79 ??:0 10.53 ??:0 10.53 ??:0 10.53 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 5.26 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000004a0 : ??:0 36.84 : 4a0: 48 83 ec 58 sub $0x58,%rsp 0.00 : 4d4: 48 89 jl 51e 0.00 : 4d6: 5c 24 28 4c 89 7c mov 0x88(%rsi),%ebp 0.00 : 4dc: 24 50 48 shr $0x5,%al 0.00 : 4df: 89 f3 48 test %rbp,%rbp 0.00 : 4e2: 89 6c 24 30 4c 89 je 590 5.26 : 4e8: 64 24 38 49 movzbl %al,%r14d 0.00 : 4ec: 89 cf 4c 89 cmp $0x4,%r14d 0.00 : 4f0: 6c 24 je 568 0.00 : 4f2: 40 4c 89 74 24 48 89 mov 0xe0(%rbp),%rdx 5.26 : 4f9: 7c 24 24 test %rdx,%rdx 0.00 : 4fc: 48 89 je 568 0.00 : 4fe: 54 24 18 0f movzbl 0x10(%rdx),%eax 0.00 : 502: b6 46 test %al,%al 0.00 : 504: 7c 48 je 568 0.00 : 506: 8b ae 88 movzbl %al,%eax 0.00 : 509: 00 00 00 add %rdx,%rax 0.00 : 50c: c0 e8 je 568 0.00 : 50e: 05 48 85 mov (%rax),%r13 0.00 : 511: ed 0f 84 test %r13,%r13 0.00 : 514: a8 00 je 568 0.00 : 516: 00 00 44 0f b6 f0 mov 0xc4(%rsi),%eax 0.00 : 51c: 41 83 fe mov %r14d,%ecx 0.00 : 51f: 04 74 76 mov %rbp,%rdx 0.00 : 522: 48 8b 95 e0 00 00 00 add 0xd8(%rsi),%rax 0.00 : 529: 48 85 d2 mov %rbx,%rdi 0.00 : 52c: 74 6a 0f movzbl (%rax),%esi 0.00 : 52f: b6 42 10 and $0xf,%esi 0.00 : 532: 84 c0 74 shl $0x2,%esi 0.00 : 535: 62 0f b6 c0 48 01 sub 0xe0(%rbx),%esi 0.00 : 53b: d0 74 add %eax,%esi 0.00 : 53d: 5a 4c 8b 28 callq *0x50(%r13) 0.00 : 541: 4d 85 ed cmp $0x1,%eax 0.00 : 544: 74 52 8b mov %eax,%r12d 0.00 : 547: 86 c4 jne 5c0 0.00 : 549: 00 00 00 44 mov 0x78(%rbp),%rax 0.00 : 54d: 89 f1 test $0x40,%al 0.00 : 54f: 48 89 ea 48 03 86 jne 610 0.00 : 555: d8 00 00 00 48 89 df mov 0x88(%rbx),%rbp 0.00 : 55c: 0f b6 30 test %rbp,%rbp 0.00 : 55f: 83 e6 je 596 0.00 : 561: 0f c1 e6 02 2b b3 e0 nopl 0x0(%rax) 0.00 : 568: 00 00 00 01 mov 0x78(%rbp),%rax 5.26 : 56c: c6 41 ff test $0x10,%ah 0.00 : 56f: 55 50 jne 590 5.26 : 571: 83 f8 01 41 mov 0x78(%rbp),%rax 0.00 : 575: 89 c4 test $0x8,%al 0.00 : 577: 75 77 je 5f8 10.53 : 579: 48 8b 45 mov %rbp,%rdi 10.53 : 57c: 78 a8 40 0f 85 bb mov $0x1,%r12d 5.26 : 582: 00 00 00 48 8b callq 587 0.00 : 587: ab 88 jmp 596 0.00 : 589: 00 00 00 48 85 ed 74 nopl 0x0(%rax) 0.00 : 590: 35 0f 1f 80 00 00 mov $0x1,%r12d 0.00 : 596: 00 00 48 mov %r12d,%eax 0.00 : 599: 8b 45 78 f6 c4 mov 0x28(%rsp),%rbx 10.53 : 59e: 10 75 1f 48 8b mov 0x30(%rsp),%rbp 0.00 : 5a3: 45 78 a8 08 74 mov 0x38(%rsp),%r12 0.00 : 5a8: 7f 48 89 ef 41 mov 0x40(%rsp),%r13 0.00 : 5ad: bc 01 00 00 00 mov 0x48(%rsp),%r14 0.00 : 5b2: e8 00 00 00 00 mov 0x50(%rsp),%r15 5.26 : 5b7: eb 0d 0f 1f add $0x58,%rsp 0.00 : 5bb: 80 retq 0.00 : 5bc: 00 00 00 00 nopl 0x0(%rax) 0.00 : 5c0: 41 bc 01 00 mov 0x10(%r13),%rax 0.00 : 5c4: 00 00 44 89 e0 mov 0x18(%rsp),%rcx 0.00 : 5c9: 48 8b 5c xor %r9d,%r9d 0.00 : 5cc: 24 28 48 8b mov 0x24(%rsp),%esi 0.00 : 5d0: 6c 24 30 mov %r15,%r8 0.00 : 5d3: 4c 8b 64 mov %rbx,%rdx 0.00 : 5d6: 24 38 4c 8b 6c mov $0x2,%edi 0.00 : 5db: 24 40 4c 8b 74 24 48 movq $0x0,(%rsp) 0.00 : 5e2: 4c 0.00 : 5e3: 8b 7c 24 50 48 mov %rax,0x8(%rsp) 0.00 : 5e8: 83 c4 xor %eax,%eax 0.00 : 5ea: 58 c3 0f 1f 40 callq 5ef 0.00 : 5ef: 00 49 jmp 596 0.00 : 5f1: 8b 45 10 48 8b 4c 24 nopl 0x0(%rax) 0.00 : 5f8: 18 45 31 mov %rbx,%rdi 0.00 : 5fb: c9 8b 74 24 24 callq 600 0.00 : 600: 4d 89 f8 cmp $0x1,%eax 0.00 : 603: 48 89 da mov %eax,%r12d 0.00 : 606: bf 02 jne 596 0.00 : 608: 00 00 00 48 c7 jmpq 579 0.00 : 60d: 04 24 00 nopl (%rax) 0.00 : 610: 00 00 00 48 mov 0x20(%rbx),%rax 0.00 : 614: 89 44 24 test %rax,%rax 0.00 : 617: 08 31 je 623 0.00 : 619: c0 e8 00 00 00 00 mov 0xa0(%rbx),%edx 0.00 : 61f: eb a5 test %edx,%edx 0.00 : 621: 0f 1f jne 670 0.00 : 623: 80 00 00 00 00 48 89 mov 0x0(%rip),%rax # 62a 0.00 : 62a: df e8 00 test %rax,%rax 0.00 : 62d: 00 00 je 642 0.00 : 62f: 00 83 f8 mov %r14d,%edx 0.00 : 632: 01 41 89 mov %rbp,%rsi 0.00 : 635: c4 75 8e mov %rbx,%rdi 0.00 : 638: e9 6c callq *%rax 0.00 : 63a: ff ff test %eax,%eax 0.00 : 63c: ff 0f 1f 00 48 8b jne 555 0.00 : 642: 43 20 48 85 c0 callq 647 0.00 : 647: 74 0a 8b 93 a0 00 00 mov 0xe8(%rbp),%rax 0.00 : 64e: 00 85 d2 xor %r12d,%r12d 0.00 : 651: 75 4d 48 8b 05 00 00 mov 0x730(%rax),%rax 0.00 : 658: 00 00 48 85 incl %gs:0x24(%rax) 0.00 : 65c: c0 74 13 44 89 callq 661 0.00 : 661: f2 48 89 ee 48 jmpq 596 0.00 : 666: 89 df ff d0 85 c0 0f nopw %cs:0x0(%rax,%rax,1) 0.00 : 66d: 85 13 ff 0.00 : 670: ff ff e8 00 00 00 00 testb $0x8,0x1b0(%rax) 0.00 : 677: 48 8b je 623 0.00 : 679: 85 e8 00 00 00 jmpq 555 : 67e: 45 31 xchg %ax,%ax : 680: e4 48 8b 80 cmpl $0x13,0x68(%rsi) : 684: 30 07 00 mov %edi,%r8d : 687: 00 65 jbe 6a5 : 689: ff 40 24 e8 00 00 mov 0xc4(%rsi),%edx : 68f: 00 00 e9 30 ff ff ff mov 0xd8(%rsi),%rax : 696: 66 2e 0f 1f movzbl (%rax,%rdx,1),%eax : 69a: 84 00 00 and $0xf,%eax : 69d: 00 00 00 shl $0x2,%eax : 6a0: f6 80 b0 cmp $0x13,%eax : 6a3: 01 00 ja 6b0 : 6a5: 00 08 74 aa e9 mov $0x1,%eax : 6aa: d7 retq : 6ab: fe ff ff 66 90 nopl 0x0(%rax,%rax,1) Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 25.00 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000008d30 : : * @budget: amount of work driver is allowed to do this pass, in packets : * : * This function will clean all queues associated with a q_vector. : **/ : int ixgbe_poll(struct napi_struct *napi, int budget) : { 0.00 : 8d30: 41 57 push %r15 ??:0 25.00 : 8d32: 41 89 f7 mov %esi,%r15d 0.00 : 8d35: 41 56 push %r14 0.00 : 8d37: 49 89 fe mov %rdi,%r14 0.00 : 8d3a: 41 55 push %r13 : struct ixgbe_q_vector *q_vector = : container_of(napi, struct ixgbe_q_vector, napi); 0.00 : 8d3c: 4c 8d 6f c0 lea -0x40(%rdi),%r13 : * @budget: amount of work driver is allowed to do this pass, in packets : * : * This function will clean all queues associated with a q_vector. : **/ : int ixgbe_poll(struct napi_struct *napi, int budget) : { 0.00 : 8d40: 41 54 push %r12 0.00 : 8d42: 55 push %rbp 8.33 : 8d43: 53 push %rbx 8.33 : 8d44: 48 83 ec 08 sub $0x8,%rsp : struct ixgbe_q_vector *q_vector = : container_of(napi, struct ixgbe_q_vector, napi); : struct ixgbe_adapter *adapter = q_vector->adapter; 0.00 : 8d48: 48 8b 47 c0 mov -0x40(%rdi),%rax 0.00 : 8d4c: 48 89 04 24 mov %rax,(%rsp) : struct ixgbe_ring *ring; : int per_ring_budget; : bool clean_complete = true; : : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) 0.00 : 8d50: f6 80 18 02 00 00 40 testb $0x40,0x218(%rax) 0.00 : 8d57: 0f 85 db 00 00 00 jne 8e38 : ixgbe_update_dca(q_vector); : : #endif : ixgbe_for_each_ring(ring, q_vector->tx) 0.00 : 8d5d: 49 8b 5e e8 mov -0x18(%r14),%rbx 0.00 : 8d61: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 8d66: 48 85 db test %rbx,%rbx 0.00 : 8d69: 74 1a je 8d85 0.00 : 8d6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : clean_complete &= ixgbe_clean_tx_irq(q_vector, ring); 0.00 : 8d70: 48 89 de mov %rbx,%rsi 0.00 : 8d73: 4c 89 ef mov %r13,%rdi 0.00 : 8d76: e8 35 fb ff ff callq 88b0 : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) : ixgbe_update_dca(q_vector); : : #endif : ixgbe_for_each_ring(ring, q_vector->tx) 0.00 : 8d7b: 48 8b 1b mov (%rbx),%rbx : clean_complete &= ixgbe_clean_tx_irq(q_vector, ring); 0.00 : 8d7e: 21 c5 and %eax,%ebp : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) : ixgbe_update_dca(q_vector); : : #endif : ixgbe_for_each_ring(ring, q_vector->tx) 0.00 : 8d80: 48 85 db test %rbx,%rbx 0.00 : 8d83: 75 eb jne 8d70 : clean_complete &= ixgbe_clean_tx_irq(q_vector, ring); : : /* attempt to distribute budget to each queue fairly, but don't allow : * the budget to go below 1 because we'll exit polling */ : if (q_vector->rx.count > 1) 0.00 : 8d85: 41 0f b6 46 e2 movzbl -0x1e(%r14),%eax 0.00 : 8d8a: 45 89 fc mov %r15d,%r12d 0.00 : 8d8d: 3c 01 cmp $0x1,%al 0.00 : 8d8f: 76 1c jbe 8dad : per_ring_budget = max(budget/q_vector->rx.count, 1); 0.00 : 8d91: 0f b6 c0 movzbl %al,%eax 0.00 : 8d94: 44 89 fa mov %r15d,%edx 0.00 : 8d97: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 8d9d: 89 c1 mov %eax,%ecx 0.00 : 8d9f: c1 fa 1f sar $0x1f,%edx 0.00 : 8da2: 44 89 f8 mov %r15d,%eax 0.00 : 8da5: f7 f9 idiv %ecx 0.00 : 8da7: 85 c0 test %eax,%eax 0.00 : 8da9: 44 0f 4f e0 cmovg %eax,%r12d : else : per_ring_budget = budget; : : ixgbe_for_each_ring(ring, q_vector->rx) 0.00 : 8dad: 49 8b 5e d0 mov -0x30(%r14),%rbx 0.00 : 8db1: 48 85 db test %rbx,%rbx 0.00 : 8db4: 74 22 je 8dd8 0.00 : 8db6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8dbd: 00 00 00 : clean_complete &= ixgbe_clean_rx_irq(q_vector, ring, 0.00 : 8dc0: 48 89 de mov %rbx,%rsi 0.00 : 8dc3: 44 89 e2 mov %r12d,%edx 0.00 : 8dc6: 4c 89 ef mov %r13,%rdi 0.00 : 8dc9: e8 c2 f1 ff ff callq 7f90 : if (q_vector->rx.count > 1) : per_ring_budget = max(budget/q_vector->rx.count, 1); : else : per_ring_budget = budget; : : ixgbe_for_each_ring(ring, q_vector->rx) 8.33 : 8dce: 48 8b 1b mov (%rbx),%rbx : clean_complete &= ixgbe_clean_rx_irq(q_vector, ring, 0.00 : 8dd1: 21 c5 and %eax,%ebp : if (q_vector->rx.count > 1) : per_ring_budget = max(budget/q_vector->rx.count, 1); : else : per_ring_budget = budget; : : ixgbe_for_each_ring(ring, q_vector->rx) 0.00 : 8dd3: 48 85 db test %rbx,%rbx 0.00 : 8dd6: 75 e8 jne 8dc0 : if (!netif_running(adapter->netdev)) : clean_complete = true; : : #endif : /* If all work not completed, return budget and keep polling */ : if (!clean_complete) 0.00 : 8dd8: 40 84 ed test %bpl,%bpl 0.00 : 8ddb: 75 13 jne 8df0 : ixgbe_set_itr(q_vector); : if (!test_bit(__IXGBE_DOWN, &adapter->state)) : ixgbe_irq_enable_queues(adapter, ((u64)1 << q_vector->v_idx)); : : return 0; : } 0.00 : 8ddd: 48 83 c4 08 add $0x8,%rsp 0.00 : 8de1: 44 89 f8 mov %r15d,%eax 0.00 : 8de4: 5b pop %rbx 0.00 : 8de5: 5d pop %rbp 0.00 : 8de6: 41 5c pop %r12 0.00 : 8de8: 41 5d pop %r13 0.00 : 8dea: 41 5e pop %r14 8.33 : 8dec: 41 5f pop %r15 0.00 : 8dee: c3 retq 0.00 : 8def: 90 nop : /* If all work not completed, return budget and keep polling */ : if (!clean_complete) : return budget; : : /* all work done, exit the polling mode */ : napi_complete(napi); 0.00 : 8df0: 4c 89 f7 mov %r14,%rdi 0.00 : 8df3: e8 00 00 00 00 callq 8df8 : if (adapter->rx_itr_setting == 1) 8.33 : 8df8: 48 8b 04 24 mov (%rsp),%rax 0.00 : 8dfc: 66 83 b8 2c 02 00 00 cmpw $0x1,0x22c(%rax) 0.00 : 8e03: 01 8.33 : 8e04: 74 3f je 8e45 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 8e06: 48 8b 14 24 mov (%rsp),%rdx : ixgbe_set_itr(q_vector); : if (!test_bit(__IXGBE_DOWN, &adapter->state)) 0.00 : 8e0a: 45 31 ff xor %r15d,%r15d 0.00 : 8e0d: 48 8b 82 10 02 00 00 mov 0x210(%rdx),%rax 0.00 : 8e14: a8 04 test $0x4,%al 0.00 : 8e16: 75 c5 jne 8ddd : ixgbe_irq_enable_queues(adapter, ((u64)1 << q_vector->v_idx)); 0.00 : 8e18: 41 0f b7 4e cc movzwl -0x34(%r14),%ecx 0.00 : 8e1d: 48 8b 3c 24 mov (%rsp),%rdi 0.00 : 8e21: be 01 00 00 00 mov $0x1,%esi 0.00 : 8e26: 45 31 ff xor %r15d,%r15d 0.00 : 8e29: 48 d3 e6 shl %cl,%rsi 0.00 : 8e2c: e8 00 00 00 00 callq 8e31 0.00 : 8e31: eb aa jmp 8ddd 0.00 : 8e33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : int per_ring_budget; : bool clean_complete = true; : : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) : ixgbe_update_dca(q_vector); 0.00 : 8e38: 4c 89 ef mov %r13,%rdi 0.00 : 8e3b: e8 40 a8 ff ff callq 3680 0.00 : 8e40: e9 18 ff ff ff jmpq 8d5d : static void ixgbe_set_itr(struct ixgbe_q_vector *q_vector) : { : u32 new_itr = q_vector->itr; : u8 current_itr; : : ixgbe_update_itr(q_vector, &q_vector->tx); 0.00 : 8e45: 49 8d 75 28 lea 0x28(%r13),%rsi 0.00 : 8e49: 4c 89 ef mov %r13,%rdi : IXGBE_WRITE_REG(hw, IXGBE_EITR(v_idx), itr_reg); : } : : static void ixgbe_set_itr(struct ixgbe_q_vector *q_vector) : { : u32 new_itr = q_vector->itr; 0.00 : 8e4c: 41 0f b7 5e ce movzwl -0x32(%r14),%ebx : u8 current_itr; : : ixgbe_update_itr(q_vector, &q_vector->tx); 0.00 : 8e51: e8 ca 73 ff ff callq 220 : ixgbe_update_itr(q_vector, &q_vector->rx); 0.00 : 8e56: 49 8d 75 10 lea 0x10(%r13),%rsi 0.00 : 8e5a: 4c 89 ef mov %r13,%rdi 0.00 : 8e5d: e8 be 73 ff ff callq 220 : : current_itr = max(q_vector->rx.itr, q_vector->tx.itr); : : switch (current_itr) { 0.00 : 8e62: 41 0f b6 56 fb movzbl -0x5(%r14),%edx 0.00 : 8e67: 41 0f b6 46 e3 movzbl -0x1d(%r14),%eax 0.00 : 8e6c: 38 c2 cmp %al,%dl 0.00 : 8e6e: 89 c1 mov %eax,%ecx 0.00 : 8e70: 0f 43 ca cmovae %edx,%ecx : IXGBE_WRITE_REG(hw, IXGBE_EITR(v_idx), itr_reg); : } : : static void ixgbe_set_itr(struct ixgbe_q_vector *q_vector) : { : u32 new_itr = q_vector->itr; 0.00 : 8e73: ba c8 00 00 00 mov $0xc8,%edx : ixgbe_update_itr(q_vector, &q_vector->tx); : ixgbe_update_itr(q_vector, &q_vector->rx); : : current_itr = max(q_vector->rx.itr, q_vector->tx.itr); : : switch (current_itr) { 0.00 : 8e78: 80 f9 01 cmp $0x1,%cl 0.00 : 8e7b: 74 11 je 8e8e 0.00 : 8e7d: b2 28 mov $0x28,%dl 0.00 : 8e7f: 72 0d jb 8e8e : IXGBE_WRITE_REG(hw, IXGBE_EITR(v_idx), itr_reg); : } : : static void ixgbe_set_itr(struct ixgbe_q_vector *q_vector) : { : u32 new_itr = q_vector->itr; 0.00 : 8e81: 0f b7 c3 movzwl %bx,%eax 0.00 : 8e84: 66 ba f4 01 mov $0x1f4,%dx 0.00 : 8e88: 80 f9 02 cmp $0x2,%cl 0.00 : 8e8b: 0f 45 d0 cmovne %eax,%edx : break; : default: : break; : } : : if (new_itr != q_vector->itr) { 0.00 : 8e8e: 41 0f b7 4e ce movzwl -0x32(%r14),%ecx 0.00 : 8e93: 39 d1 cmp %edx,%ecx 0.00 : 8e95: 0f 84 6b ff ff ff je 8e06 : /* do an exponential smoothing */ : new_itr = (10 * new_itr * q_vector->itr) / 0.00 : 8e9b: 8d 04 89 lea (%rcx,%rcx,4),%eax : ((9 * new_itr) + q_vector->itr); : : /* save the algorithm value here */ : q_vector->itr = new_itr; : : ixgbe_write_eitr(q_vector); 0.00 : 8e9e: 4c 89 ef mov %r13,%rdi : break; : } : : if (new_itr != q_vector->itr) { : /* do an exponential smoothing */ : new_itr = (10 * new_itr * q_vector->itr) / 0.00 : 8ea1: 8d 34 00 lea (%rax,%rax,1),%esi 0.00 : 8ea4: 8d 04 d2 lea (%rdx,%rdx,8),%eax 0.00 : 8ea7: 0f af f2 imul %edx,%esi 8.33 : 8eaa: 8d 0c 08 lea (%rax,%rcx,1),%ecx : ((9 * new_itr) + q_vector->itr); : : /* save the algorithm value here */ : q_vector->itr = new_itr; 0.00 : 8ead: 31 d2 xor %edx,%edx 0.00 : 8eaf: 89 f0 mov %esi,%eax 8.33 : 8eb1: f7 f1 div %ecx 8.33 : 8eb3: 66 41 89 46 ce mov %ax,-0x32(%r14) : : ixgbe_write_eitr(q_vector); 0.00 : 8eb8: e8 00 00 00 00 callq 8ebd 0.00 : 8ebd: e9 44 ff ff ff jmpq 8e06 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 27.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:934 18.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 18.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:905 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:922 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000679920 : : } : : /* returns 0 on success, -1 on re-open failure (with errno set) */ : static int : FileAccess(File file) : { 27.27 : 679920: 55 push %rbp 18.18 : 679921: 48 89 e5 mov %rsp,%rbp 0.00 : 679924: 48 89 5d e8 mov %rbx,-0x18(%rbp) 18.18 : 679928: 4c 89 65 f0 mov %r12,-0x10(%rbp) : /* : * Is the file open? If not, open it and put it at the head of the LRU : * ring (possibly closing the least recently used file to get an FD). : */ : : if (FileIsNotOpen(file)) 0.00 : 67992c: 4c 63 e7 movslq %edi,%r12 : } : : /* returns 0 on success, -1 on re-open failure (with errno set) */ : static int : FileAccess(File file) : { 0.00 : 67992f: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 679933: 48 83 ec 20 sub $0x20,%rsp : /* : * Is the file open? If not, open it and put it at the head of the LRU : * ring (possibly closing the least recently used file to get an FD). : */ : : if (FileIsNotOpen(file)) 0.00 : 679937: 48 8b 0d 5a 38 50 00 mov 0x50385a(%rip),%rcx # b7d198 0.00 : 67993e: 49 c1 e4 06 shl $0x6,%r12 : } : : /* returns 0 on success, -1 on re-open failure (with errno set) */ : static int : FileAccess(File file) : { 0.00 : 679942: 41 89 fd mov %edi,%r13d : /* : * Is the file open? If not, open it and put it at the head of the LRU : * ring (possibly closing the least recently used file to get an FD). : */ : : if (FileIsNotOpen(file)) 0.00 : 679945: 4a 8d 1c 21 lea (%rcx,%r12,1),%rbx 0.00 : 679949: 83 3b ff cmpl $0xffffffff,(%rbx) 0.00 : 67994c: 74 52 je 6799a0 : { : returnValue = LruInsert(file); : if (returnValue != 0) : return returnValue; : } : else if (VfdCache[0].lruLessRecently != file) /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:922 9.09 : 67994e: 31 c0 xor %eax,%eax 0.00 : 679950: 39 79 18 cmp %edi,0x18(%rcx) 0.00 : 679953: 74 3c je 679991 : file, VfdCache[file].fileName)); : DO_DB(_dump_lru()); : : vfdP = &VfdCache[file]; : : VfdCache[vfdP->lruLessRecently].lruMoreRecently = vfdP->lruMoreRecently; 0.00 : 679955: 48 63 43 18 movslq 0x18(%rbx),%rax 0.00 : 679959: 8b 53 14 mov 0x14(%rbx),%edx 0.00 : 67995c: 48 c1 e0 06 shl $0x6,%rax 0.00 : 679960: 89 54 01 14 mov %edx,0x14(%rcx,%rax,1) : VfdCache[vfdP->lruMoreRecently].lruLessRecently = vfdP->lruLessRecently; 0.00 : 679964: 48 63 43 14 movslq 0x14(%rbx),%rax 0.00 : 679968: 8b 53 18 mov 0x18(%rbx),%edx 0.00 : 67996b: 48 c1 e0 06 shl $0x6,%rax 0.00 : 67996f: 89 54 01 18 mov %edx,0x18(%rcx,%rax,1) : file, VfdCache[file].fileName)); : DO_DB(_dump_lru()); : : vfdP = &VfdCache[file]; : : vfdP->lruMoreRecently = 0; 0.00 : 679973: c7 43 14 00 00 00 00 movl $0x0,0x14(%rbx) : vfdP->lruLessRecently = VfdCache[0].lruLessRecently; 0.00 : 67997a: 8b 41 18 mov 0x18(%rcx),%eax 0.00 : 67997d: 89 43 18 mov %eax,0x18(%rbx) : VfdCache[0].lruLessRecently = file; 0.00 : 679980: 89 79 18 mov %edi,0x18(%rcx) : VfdCache[vfdP->lruLessRecently].lruMoreRecently = file; 0.00 : 679983: 48 63 43 18 movslq 0x18(%rbx),%rax 0.00 : 679987: 48 c1 e0 06 shl $0x6,%rax 0.00 : 67998b: 89 7c 01 14 mov %edi,0x14(%rcx,%rax,1) 0.00 : 67998f: 31 c0 xor %eax,%eax : Delete(file); : Insert(file); : } : : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/file/fd.c:934 27.27 : 679991: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 679995: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 679999: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 67999d: c9 leaveq 0.00 : 67999e: c3 retq 0.00 : 67999f: 90 nop : vfdP = &VfdCache[file]; : : if (FileIsNotOpen(file)) : { : /* Close excess kernel FDs. */ : ReleaseLruFiles(); 0.00 : 6799a0: e8 8b ee ff ff callq 678830 : /* : * The open could still fail for lack of file descriptors, eg due to : * overall system file table being full. So, be prepared to release : * another FD if necessary... : */ : vfdP->fd = BasicOpenFile(vfdP->fileName, vfdP->fileFlags, 0.00 : 6799a5: 8b 53 3c mov 0x3c(%rbx),%edx 0.00 : 6799a8: 8b 73 38 mov 0x38(%rbx),%esi 0.00 : 6799ab: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 6799af: e8 ac fd ff ff callq 679760 0.00 : 6799b4: 89 c1 mov %eax,%ecx 0.00 : 6799b6: 89 03 mov %eax,(%rbx) : vfdP->fileMode); : if (vfdP->fd < 0) 0.00 : 6799b8: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 6799bd: 85 c9 test %ecx,%ecx 0.00 : 6799bf: 78 d0 js 679991 : return -1; : } : else : { : DO_DB(elog(LOG, "RE_OPEN SUCCESS")); : ++nfile; 0.00 : 6799c1: 83 05 b8 37 50 00 01 addl $0x1,0x5037b8(%rip) # b7d180 : } : : /* seek to the right position */ : if (vfdP->seekPos != (off_t) 0) 0.00 : 6799c8: 48 8b 73 20 mov 0x20(%rbx),%rsi 0.00 : 6799cc: 48 85 f6 test %rsi,%rsi 0.00 : 6799cf: 75 2f jne 679a00 : : DO_DB(elog(LOG, "Insert %d (%s)", : file, VfdCache[file].fileName)); : DO_DB(_dump_lru()); : : vfdP = &VfdCache[file]; 0.00 : 6799d1: 48 8b 0d c0 37 50 00 mov 0x5037c0(%rip),%rcx # b7d198 0.00 : 6799d8: 4a 8d 14 21 lea (%rcx,%r12,1),%rdx : : vfdP->lruMoreRecently = 0; 0.00 : 6799dc: c7 42 14 00 00 00 00 movl $0x0,0x14(%rdx) : vfdP->lruLessRecently = VfdCache[0].lruLessRecently; 0.00 : 6799e3: 8b 41 18 mov 0x18(%rcx),%eax 0.00 : 6799e6: 89 42 18 mov %eax,0x18(%rdx) : VfdCache[0].lruLessRecently = file; 0.00 : 6799e9: 44 89 69 18 mov %r13d,0x18(%rcx) : VfdCache[vfdP->lruLessRecently].lruMoreRecently = file; 0.00 : 6799ed: 48 63 42 18 movslq 0x18(%rdx),%rax 0.00 : 6799f1: 48 c1 e0 06 shl $0x6,%rax 0.00 : 6799f5: 44 89 6c 01 14 mov %r13d,0x14(%rcx,%rax,1) 0.00 : 6799fa: 31 c0 xor %eax,%eax 0.00 : 6799fc: eb 93 jmp 679991 0.00 : 6799fe: 66 90 xchg %ax,%ax : /* seek to the right position */ : if (vfdP->seekPos != (off_t) 0) : { : off_t returnValue PG_USED_FOR_ASSERTS_ONLY; : : returnValue = lseek(vfdP->fd, vfdP->seekPos, SEEK_SET); 0.00 : 679a00: 31 d2 xor %edx,%edx 0.00 : 679a02: 89 cf mov %ecx,%edi 0.00 : 679a04: e8 67 01 df ff callq 469b70 0.00 : 679a09: eb c6 jmp 6799d1 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:306 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:160 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:160 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:161 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:43 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:245 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:255 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:303 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:306 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067cbb0 : : * slot, and if it's true, to the slot after the returned slot. : */ : int : fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext, : bool exclusive_lock_held) : { 0.00 : 67cbb0: 55 push %rbp 0.00 : 67cbb1: 48 89 e5 mov %rsp,%rbp 0.00 : 67cbb4: 41 57 push %r15 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:160 9.09 : 67cbb6: 41 89 cf mov %ecx,%r15d 0.00 : 67cbb9: 41 56 push %r14 9.09 : 67cbbb: 41 89 fe mov %edi,%r14d 0.00 : 67cbbe: 41 55 push %r13 0.00 : 67cbc0: 41 54 push %r12 0.00 : 67cbc2: 41 89 f4 mov %esi,%r12d 0.00 : 67cbc5: 53 push %rbx 0.00 : 67cbc6: 48 83 ec 38 sub $0x38,%rsp : Page page = BufferGetPage(buf); /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:161 9.09 : 67cbca: 85 ff test %edi,%edi : * slot, and if it's true, to the slot after the returned slot. : */ : int : fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext, : bool exclusive_lock_held) : { 0.00 : 67cbcc: 88 55 af mov %dl,-0x51(%rbp) : Page page = BufferGetPage(buf); 0.00 : 67cbcf: 0f 88 7b 01 00 00 js 67cd50 0.00 : 67cbd5: 41 8d 46 ff lea -0x1(%r14),%eax 0.00 : 67cbd9: 4c 63 e8 movslq %eax,%r13 0.00 : 67cbdc: 49 c1 e5 0d shl $0xd,%r13 0.00 : 67cbe0: 4c 03 2d 11 2f 54 00 add 0x542f11(%rip),%r13 # bbfaf8 : FSMPage fsmpage = (FSMPage) PageGetContents(page); 0.00 : 67cbe7: 49 8d 5d 18 lea 0x18(%r13),%rbx : : /* : * Check the root first, and exit quickly if there's no leaf with enough : * free space : */ : if (fsmpage->fp_nodes[0] < minvalue) 0.00 : 67cbeb: 44 3a 63 04 cmp 0x4(%rbx),%r12b 0.00 : 67cbef: 0f 87 fe 00 00 00 ja 67ccf3 : /* : * Start search using fp_next_slot. It's just a hint, so check that it's : * sane. (This also handles wrapping around when the prior call returned : * the last slot on the page.) : */ : target = fsmpage->fp_next_slot; 0.00 : 67cbf5: 8b 03 mov (%rbx),%eax : if (target < 0 || target >= LeafNodesPerPage) 0.00 : 67cbf7: ba ff 0f 00 00 mov $0xfff,%edx 0.00 : 67cbfc: 3d e4 0f 00 00 cmp $0xfe4,%eax 0.00 : 67cc01: 77 0a ja 67cc0d : target = 0; : target += NonLeafNodesPerPage; 0.00 : 67cc03: 8d 90 ff 0f 00 00 lea 0xfff(%rax),%edx : * following the path of sevens. This is in fact the first suitable page : * to the right of (allowing for wraparound) our start point. : *---------- : */ : nodeno = target; : while (nodeno > 0) 0.00 : 67cc09: 85 d2 test %edx,%edx 0.00 : 67cc0b: 7e 43 jle 67cc50 : { : if (fsmpage->fp_nodes[nodeno] >= minvalue) 0.00 : 67cc0d: 48 63 c2 movslq %edx,%rax 0.00 : 67cc10: 89 d1 mov %edx,%ecx 0.00 : 67cc12: 44 3a 64 03 04 cmp 0x4(%rbx,%rax,1),%r12b 0.00 : 67cc17: 77 11 ja 67cc2a 0.00 : 67cc19: eb 35 jmp 67cc50 0.00 : 67cc1b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 67cc20: 48 63 c1 movslq %ecx,%rax 0.00 : 67cc23: 44 3a 64 03 04 cmp 0x4(%rbx,%rax,1),%r12b 0.00 : 67cc28: 76 28 jbe 67cc52 : { : /* : * Move right. This might wrap around, stepping to the leftmost node at : * the next level. : */ : x++; /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:43 9.09 : 67cc2a: 8d 41 01 lea 0x1(%rcx),%eax : * Check if we stepped to the leftmost node at next level, and correct if : * so. The leftmost nodes at each level are numbered x = 2^level - 1, so : * check if (x + 1) is a power of two, using a standard : * twos-complement-arithmetic trick. : */ : if (((x + 1) & x) == 0) 0.00 : 67cc2d: 8d 51 02 lea 0x2(%rcx),%edx : x = parentof(x); 0.00 : 67cc30: d1 f9 sar %ecx 0.00 : 67cc32: 85 c2 test %eax,%edx 0.00 : 67cc34: 0f 44 c1 cmove %ecx,%eax : : /* : * Move to the right, wrapping around on same level if necessary, then : * climb up. : */ : nodeno = parentof(rightneighbor(nodeno)); 0.00 : 67cc37: 83 e8 01 sub $0x1,%eax 0.00 : 67cc3a: 89 c2 mov %eax,%edx 0.00 : 67cc3c: c1 ea 1f shr $0x1f,%edx 0.00 : 67cc3f: 8d 0c 02 lea (%rdx,%rax,1),%ecx 0.00 : 67cc42: d1 f9 sar %ecx : * following the path of sevens. This is in fact the first suitable page : * to the right of (allowing for wraparound) our start point. : *---------- : */ : nodeno = target; : while (nodeno > 0) 0.00 : 67cc44: 85 c9 test %ecx,%ecx 0.00 : 67cc46: 7f d8 jg 67cc20 0.00 : 67cc48: eb 14 jmp 67cc5e 0.00 : 67cc4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 67cc50: 89 d1 mov %edx,%ecx : /* : * We're now at a node with enough free space, somewhere in the middle of : * the tree. Descend to the bottom, following a path with enough free : * space, preferring to move left if there's a choice. : */ : while (nodeno < NonLeafNodesPerPage) /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:245 9.09 : 67cc52: 81 f9 fe 0f 00 00 cmp $0xffe,%ecx 0.00 : 67cc58: 0f 8f a2 00 00 00 jg 67cd00 : { : int childnodeno = leftchild(nodeno); 0.00 : 67cc5e: 8d 54 09 01 lea 0x1(%rcx,%rcx,1),%edx : : if (childnodeno < NodesPerPage && 0.00 : 67cc62: 81 fa e3 1f 00 00 cmp $0x1fe3,%edx 0.00 : 67cc68: 77 0c ja 67cc76 0.00 : 67cc6a: 48 63 c2 movslq %edx,%rax 0.00 : 67cc6d: 89 d1 mov %edx,%ecx 0.00 : 67cc6f: 44 3a 64 03 04 cmp 0x4(%rbx,%rax,1),%r12b 0.00 : 67cc74: 76 dc jbe 67cc52 : fsmpage->fp_nodes[childnodeno] >= minvalue) : { : nodeno = childnodeno; : continue; : } : childnodeno++; /* point to right child */ /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:255 9.09 : 67cc76: 83 c2 01 add $0x1,%edx : if (childnodeno < NodesPerPage && 0.00 : 67cc79: 81 fa e3 1f 00 00 cmp $0x1fe3,%edx 0.00 : 67cc7f: 77 0a ja 67cc8b 0.00 : 67cc81: 48 63 c2 movslq %edx,%rax 0.00 : 67cc84: 44 3a 64 03 04 cmp 0x4(%rbx,%rax,1),%r12b 0.00 : 67cc89: 76 c5 jbe 67cc50 : */ : RelFileNode rnode; : ForkNumber forknum; : BlockNumber blknum; : : BufferGetTag(buf, &rnode, &forknum, &blknum); 0.00 : 67cc8b: 48 8d 4d c8 lea -0x38(%rbp),%rcx 0.00 : 67cc8f: 48 8d 55 cc lea -0x34(%rbp),%rdx 0.00 : 67cc93: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 67cc97: 44 89 f7 mov %r14d,%edi 0.00 : 67cc9a: e8 d1 73 ff ff callq 674070 : elog(DEBUG1, "fixing corrupt FSM block %u, relation %u/%u/%u", 0.00 : 67cc9f: ba 60 ac 8a 00 mov $0x8aac60,%edx 0.00 : 67cca4: be 15 01 00 00 mov $0x115,%esi 0.00 : 67cca9: bf 18 ac 8a 00 mov $0x8aac18,%edi 0.00 : 67ccae: e8 6d e7 0f 00 callq 77b420 0.00 : 67ccb3: 8b 4d b0 mov -0x50(%rbp),%ecx 0.00 : 67ccb6: 8b 55 c8 mov -0x38(%rbp),%edx 0.00 : 67ccb9: 31 c0 xor %eax,%eax 0.00 : 67ccbb: 44 8b 4d b8 mov -0x48(%rbp),%r9d 0.00 : 67ccbf: 44 8b 45 b4 mov -0x4c(%rbp),%r8d 0.00 : 67ccc3: be 28 ac 8a 00 mov $0x8aac28,%esi 0.00 : 67ccc8: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 67cccd: e8 5e e5 0f 00 callq 77b230 : blknum, rnode.spcNode, rnode.dbNode, rnode.relNode); : : /* make sure we hold an exclusive lock */ : if (!exclusive_lock_held) 0.00 : 67ccd2: 45 84 ff test %r15b,%r15b 0.00 : 67ccd5: 74 59 je 67cd30 : { : LockBuffer(buf, BUFFER_LOCK_UNLOCK); : LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); : exclusive_lock_held = true; : } : fsm_rebuild_page(page); 0.00 : 67ccd7: 4c 89 ef mov %r13,%rdi 0.00 : 67ccda: e8 61 fd ff ff callq 67ca40 : MarkBufferDirtyHint(buf, false); 0.00 : 67ccdf: 31 f6 xor %esi,%esi 0.00 : 67cce1: 44 89 f7 mov %r14d,%edi 0.00 : 67cce4: e8 a7 7c ff ff callq 674990 : FSMPage fsmpage = (FSMPage) PageGetContents(page); : int nodeno; : int target; : uint16 slot; : : restart: 0.00 : 67cce9: 44 38 63 04 cmp %r12b,0x4(%rbx) 0.00 : 67cced: 0f 83 02 ff ff ff jae 67cbf5 : * lock and get a garbled next pointer every now and then, than take the : * concurrency hit of an exclusive lock. : * : * Wrap-around is handled at the beginning of this function. : */ : fsmpage->fp_next_slot = slot + (advancenext ? 1 : 0); 0.00 : 67ccf3: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 67ccf8: eb 1d jmp 67cd17 0.00 : 67ccfa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 67cd00: 8d 81 01 f0 ff ff lea -0xfff(%rcx),%eax 0.00 : 67cd06: 0f b7 d0 movzwl %ax,%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:303 9.09 : 67cd09: 31 c0 xor %eax,%eax 0.00 : 67cd0b: 80 7d af 00 cmpb $0x0,-0x51(%rbp) 0.00 : 67cd0f: 0f 95 c0 setne %al 0.00 : 67cd12: 8d 04 02 lea (%rdx,%rax,1),%eax 0.00 : 67cd15: 89 03 mov %eax,(%rbx) : : return slot; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:306 27.27 : 67cd17: 48 83 c4 38 add $0x38,%rsp 0.00 : 67cd1b: 89 d0 mov %edx,%eax 0.00 : 67cd1d: 5b pop %rbx 0.00 : 67cd1e: 41 5c pop %r12 9.09 : 67cd20: 41 5d pop %r13 0.00 : 67cd22: 41 5e pop %r14 0.00 : 67cd24: 41 5f pop %r15 0.00 : 67cd26: c9 leaveq 0.00 : 67cd27: c3 retq 0.00 : 67cd28: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 67cd2f: 00 : blknum, rnode.spcNode, rnode.dbNode, rnode.relNode); : : /* make sure we hold an exclusive lock */ : if (!exclusive_lock_held) : { : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 67cd30: 31 f6 xor %esi,%esi 0.00 : 67cd32: 44 89 f7 mov %r14d,%edi : LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); 0.00 : 67cd35: 41 bf 01 00 00 00 mov $0x1,%r15d : blknum, rnode.spcNode, rnode.dbNode, rnode.relNode); : : /* make sure we hold an exclusive lock */ : if (!exclusive_lock_held) : { : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 67cd3b: e8 d0 79 ff ff callq 674710 : LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); 0.00 : 67cd40: be 02 00 00 00 mov $0x2,%esi 0.00 : 67cd45: 44 89 f7 mov %r14d,%edi 0.00 : 67cd48: e8 c3 79 ff ff callq 674710 0.00 : 67cd4d: eb 88 jmp 67ccd7 0.00 : 67cd4f: 90 nop : */ : int : fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext, : bool exclusive_lock_held) : { : Page page = BufferGetPage(buf); 0.00 : 67cd50: 89 f8 mov %edi,%eax 0.00 : 67cd52: 48 8b 15 bf 03 50 00 mov 0x5003bf(%rip),%rdx # b7d118 0.00 : 67cd59: f7 d0 not %eax 0.00 : 67cd5b: 48 98 cltq 0.00 : 67cd5d: 4c 8b 2c c2 mov (%rdx,%rax,8),%r13 0.00 : 67cd61: e9 81 fe ff ff jmpq 67cbe7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.27 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:183 18.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:136 18.18 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:136 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:136 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:163 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:183 9.09 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:183 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000699a30 : : * : * This does not attempt to actually open the underlying file. : */ : SMgrRelation : smgropen(RelFileNode rnode, BackendId backend) : { 0.00 : 699a30: 55 push %rbp 0.00 : 699a31: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:136 18.18 : 699a34: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 699a38: 49 89 fc mov %rdi,%r12 0.00 : 699a3b: 48 89 5d e0 mov %rbx,-0x20(%rbp) 9.09 : 699a3f: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 699a43: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 699a47: 49 c1 ec 20 shr $0x20,%r12 0.00 : 699a4b: 48 81 ec c0 00 00 00 sub $0xc0,%rsp : RelFileNodeBackend brnode; : SMgrRelation reln; : bool found; : : if (SMgrRelationHash == NULL) 0.00 : 699a52: 48 83 3d 6e 4d 4e 00 cmpq $0x0,0x4e4d6e(%rip) # b7e7c8 0.00 : 699a59: 00 : * : * This does not attempt to actually open the underlying file. : */ : SMgrRelation : smgropen(RelFileNode rnode, BackendId backend) : { 18.18 : 699a5a: 89 f3 mov %esi,%ebx 0.00 : 699a5c: 41 89 d6 mov %edx,%r14d 0.00 : 699a5f: 48 89 bd 40 ff ff ff mov %rdi,-0xc0(%rbp) 0.00 : 699a66: 89 b5 48 ff ff ff mov %esi,-0xb8(%rbp) 0.00 : 699a6c: 41 89 fd mov %edi,%r13d : RelFileNodeBackend brnode; : SMgrRelation reln; : bool found; : : if (SMgrRelationHash == NULL) 0.00 : 699a6f: 0f 84 a3 00 00 00 je 699b18 : } : : /* Look up or create an entry */ : brnode.node = rnode; : brnode.backend = backend; : reln = (SMgrRelation) hash_search(SMgrRelationHash, 0.00 : 699a75: 48 8b 3d 4c 4d 4e 00 mov 0x4e4d4c(%rip),%rdi # b7e7c8 0.00 : 699a7c: 48 8d 4d df lea -0x21(%rbp),%rcx 0.00 : 699a80: 48 8d 75 c0 lea -0x40(%rbp),%rsi 0.00 : 699a84: ba 01 00 00 00 mov $0x1,%edx : &ctl, HASH_ELEM | HASH_FUNCTION); : first_unowned_reln = NULL; : } : : /* Look up or create an entry */ : brnode.node = rnode; 0.00 : 699a89: 89 5d c8 mov %ebx,-0x38(%rbp) 0.00 : 699a8c: 44 89 65 c4 mov %r12d,-0x3c(%rbp) 0.00 : 699a90: 44 89 6d c0 mov %r13d,-0x40(%rbp) : brnode.backend = backend; 0.00 : 699a94: 44 89 75 cc mov %r14d,-0x34(%rbp) : reln = (SMgrRelation) hash_search(SMgrRelationHash, 0.00 : 699a98: e8 03 ac 0e 00 callq 7846a0 : (void *) &brnode, : HASH_ENTER, &found); : : /* Initialize it if not present before */ : if (!found) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:163 9.09 : 699a9d: 80 7d df 00 cmpb $0x0,-0x21(%rbp) : } : : /* Look up or create an entry */ : brnode.node = rnode; : brnode.backend = backend; : reln = (SMgrRelation) hash_search(SMgrRelationHash, 0.00 : 699aa1: 48 89 c2 mov %rax,%rdx : (void *) &brnode, : HASH_ENTER, &found); : : /* Initialize it if not present before */ : if (!found) 0.00 : 699aa4: 75 56 jne 699afc : { : int forknum; : : /* hash_search already filled in the lookup key */ : reln->smgr_owner = NULL; 0.00 : 699aa6: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 699aad: 00 : reln->smgr_targblock = InvalidBlockNumber; 0.00 : 699aae: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : reln->smgr_fsm_nblocks = InvalidBlockNumber; 0.00 : 699ab5: c7 40 1c ff ff ff ff movl $0xffffffff,0x1c(%rax) : reln->smgr_vm_nblocks = InvalidBlockNumber; 0.00 : 699abc: c7 40 20 ff ff ff ff movl $0xffffffff,0x20(%rax) : reln->smgr_which = 0; /* we only have md.c at present */ 0.00 : 699ac3: c7 40 24 00 00 00 00 movl $0x0,0x24(%rax) : : /* mark it not open */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : reln->md_fd[forknum] = NULL; 0.00 : 699aca: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 699ad1: 00 0.00 : 699ad2: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 699ad9: 00 0.00 : 699ada: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 699ae1: 00 0.00 : 699ae2: 48 c7 40 40 00 00 00 movq $0x0,0x40(%rax) 0.00 : 699ae9: 00 : */ : static void : add_to_unowned_list(SMgrRelation reln) : { : /* place it at head of the list (to make smgrsetowner cheap) */ : reln->next_unowned_reln = first_unowned_reln; 0.00 : 699aea: 48 8b 05 cf 4c 4e 00 mov 0x4e4ccf(%rip),%rax # b7e7c0 0.00 : 699af1: 48 89 42 48 mov %rax,0x48(%rdx) : first_unowned_reln = reln; 0.00 : 699af5: 48 89 15 c4 4c 4e 00 mov %rdx,0x4e4cc4(%rip) # b7e7c0 : /* it has no owner yet */ : add_to_unowned_list(reln); : } : : return reln; : } 0.00 : 699afc: 48 89 d0 mov %rdx,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:183 27.27 : 699aff: 48 8b 5d e0 mov -0x20(%rbp),%rbx 9.09 : 699b03: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 699b07: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 699b0b: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 699b0f: c9 leaveq 9.09 : 699b10: c3 retq 0.00 : 699b11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (SMgrRelationHash == NULL) : { : /* First time through: initialize the hash table */ : HASHCTL ctl; : : MemSet(&ctl, 0, sizeof(ctl)); 0.00 : 699b18: 48 8d 95 50 ff ff ff lea -0xb0(%rbp),%rdx 0.00 : 699b1f: 48 8d 4a 68 lea 0x68(%rdx),%rcx 0.00 : 699b23: 48 39 d1 cmp %rdx,%rcx 0.00 : 699b26: 76 18 jbe 699b40 0.00 : 699b28: 48 89 d0 mov %rdx,%rax 0.00 : 699b2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 699b30: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 699b37: 48 83 c0 08 add $0x8,%rax 0.00 : 699b3b: 48 39 c1 cmp %rax,%rcx 0.00 : 699b3e: 75 f0 jne 699b30 : ctl.keysize = sizeof(RelFileNodeBackend); : ctl.entrysize = sizeof(SMgrRelationData); : ctl.hash = tag_hash; : SMgrRelationHash = hash_create("smgr relation table", 400, 0.00 : 699b40: b9 30 00 00 00 mov $0x30,%ecx 0.00 : 699b45: be 90 01 00 00 mov $0x190,%esi 0.00 : 699b4a: bf 06 e4 8a 00 mov $0x8ae406,%edi : { : /* First time through: initialize the hash table */ : HASHCTL ctl; : : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(RelFileNodeBackend); 0.00 : 699b4f: 48 c7 85 78 ff ff ff movq $0x10,-0x88(%rbp) 0.00 : 699b56: 10 00 00 00 : ctl.entrysize = sizeof(SMgrRelationData); 0.00 : 699b5a: 48 c7 45 80 50 00 00 movq $0x50,-0x80(%rbp) 0.00 : 699b61: 00 : ctl.hash = tag_hash; 0.00 : 699b62: 48 c7 45 88 60 4f 78 movq $0x784f60,-0x78(%rbp) 0.00 : 699b69: 00 : SMgrRelationHash = hash_create("smgr relation table", 400, 0.00 : 699b6a: e8 41 ad 0e 00 callq 7848b0 : &ctl, HASH_ELEM | HASH_FUNCTION); : first_unowned_reln = NULL; 0.00 : 699b6f: 48 c7 05 46 4c 4e 00 movq $0x0,0x4e4c46(%rip) # b7e7c0 0.00 : 699b76: 00 00 00 00 : : MemSet(&ctl, 0, sizeof(ctl)); : ctl.keysize = sizeof(RelFileNodeBackend); : ctl.entrysize = sizeof(SMgrRelationData); : ctl.hash = tag_hash; : SMgrRelationHash = hash_create("smgr relation table", 400, 0.00 : 699b7a: 48 89 05 47 4c 4e 00 mov %rax,0x4e4c47(%rip) # b7e7c8 0.00 : 699b81: e9 ef fe ff ff jmpq 699a75 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 27.27 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:989 18.18 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:936 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:961 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:989 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:982 9.09 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007986d0 : : * AllocSetFree : * Frees allocated memory; memory is removed from the set. : */ : static void : AllocSetFree(MemoryContext context, void *pointer) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:936 9.09 : 7986d0: 55 push %rbp 0.00 : 7986d1: 48 89 f9 mov %rdi,%rcx 0.00 : 7986d4: 48 89 e5 mov %rsp,%rbp 0.00 : 7986d7: 53 push %rbx : AllocSet set = (AllocSet) context; : AllocChunk chunk = AllocPointerGetChunk(pointer); 0.00 : 7986d8: 48 8d 5e f0 lea -0x10(%rsi),%rbx : * AllocSetFree : * Frees allocated memory; memory is removed from the set. : */ : static void : AllocSetFree(MemoryContext context, void *pointer) : { 0.00 : 7986dc: 48 83 ec 08 sub $0x8,%rsp : if (!sentinel_ok(pointer, chunk->requested_size)) : elog(WARNING, "detected write past chunk end in %s %p", : set->header.name, chunk); : #endif : : if (chunk->size > set->allocChunkLimit) 0.00 : 7986e0: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 7986e4: 48 3b 87 b0 00 00 00 cmp 0xb0(%rdi),%rax 0.00 : 7986eb: 76 63 jbe 798750 : { : /* : * Big chunks are certain to have been allocated as single-chunk : * blocks. Find the containing block and return it to malloc(). : */ : AllocBlock block = set->blocks; 0.00 : 7986ed: 48 8b 7f 38 mov 0x38(%rdi),%rdi : AllocBlock prevblock = NULL; : : while (block != NULL) 0.00 : 7986f1: 48 85 ff test %rdi,%rdi 0.00 : 7986f4: 74 2c je 798722 : { : if (chunk == (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ)) 0.00 : 7986f6: 48 8d 47 20 lea 0x20(%rdi),%rax 0.00 : 7986fa: 48 39 c3 cmp %rax,%rbx 0.00 : 7986fd: 75 17 jne 798716 0.00 : 7986ff: 90 nop 0.00 : 798700: e9 be 00 00 00 jmpq 7987c3 0.00 : 798705: 0f 1f 00 nopl (%rax) 0.00 : 798708: 48 8d 47 20 lea 0x20(%rdi),%rax 0.00 : 79870c: 48 39 c3 cmp %rax,%rbx 0.00 : 79870f: 90 nop 0.00 : 798710: 0f 84 8a 00 00 00 je 7987a0 : break; 0.00 : 798716: 48 89 fa mov %rdi,%rdx : prevblock = block; : block = block->next; 0.00 : 798719: 48 8b 7f 08 mov 0x8(%rdi),%rdi : * blocks. Find the containing block and return it to malloc(). : */ : AllocBlock block = set->blocks; : AllocBlock prevblock = NULL; : : while (block != NULL) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:961 9.09 : 79871d: 48 85 ff test %rdi,%rdi 0.00 : 798720: 75 e6 jne 798708 : break; : prevblock = block; : block = block->next; : } : if (block == NULL) : elog(ERROR, "could not find block containing chunk %p", chunk); 0.00 : 798722: ba 70 1e 8e 00 mov $0x8e1e70,%edx 0.00 : 798727: be c9 03 00 00 mov $0x3c9,%esi 0.00 : 79872c: bf 6d 1d 8e 00 mov $0x8e1d6d,%edi 0.00 : 798731: e8 ea 2c fe ff callq 77b420 0.00 : 798736: 48 89 da mov %rbx,%rdx 0.00 : 798739: be 08 1e 8e 00 mov $0x8e1e08,%esi 0.00 : 79873e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 798743: 31 c0 xor %eax,%eax 0.00 : 798745: e8 e6 2a fe ff callq 77b230 0.00 : 79874a: e8 81 0d cd ff callq 4694d0 0.00 : 79874f: 90 nop : { : int idx; : unsigned int t, : tsize; : : if (size > (1 << ALLOC_MINBITS)) 0.00 : 798750: 31 d2 xor %edx,%edx 0.00 : 798752: 48 83 f8 08 cmp $0x8,%rax 0.00 : 798756: 77 20 ja 798778 : else : { : /* Normal case, put the chunk into appropriate freelist */ : int fidx = AllocSetFreeIndex(chunk->size); : : chunk->aset = (void *) set->freelist[fidx]; 0.00 : 798758: 48 63 c2 movslq %edx,%rax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:989 9.09 : 79875b: 48 83 c0 08 add $0x8,%rax 0.00 : 79875f: 48 8b 14 c1 mov (%rcx,%rax,8),%rdx 27.27 : 798763: 48 89 56 f0 mov %rdx,-0x10(%rsi) : : #ifdef MEMORY_CONTEXT_CHECKING : /* Reset requested_size to 0 in chunks that are on freelist */ : chunk->requested_size = 0; : #endif : set->freelist[fidx] = chunk; 0.00 : 798767: 48 89 1c c1 mov %rbx,(%rcx,%rax,8) : } : } 0.00 : 79876b: 48 83 c4 08 add $0x8,%rsp 0.00 : 79876f: 5b pop %rbx 0.00 : 798770: c9 leaveq 0.00 : 798771: c3 retq 0.00 : 798772: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : unsigned int t, : tsize; : : if (size > (1 << ALLOC_MINBITS)) : { : tsize = (size - 1) >> ALLOC_MINBITS; 0.00 : 798778: 48 83 e8 01 sub $0x1,%rax 0.00 : 79877c: 48 89 c2 mov %rax,%rdx /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:325 9.09 : 79877f: 48 c1 ea 03 shr $0x3,%rdx : * justify micro-optimization effort. The best approach seems to be : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; 0.00 : 798783: 89 d0 mov %edx,%eax 0.00 : 798785: c1 e8 08 shr $0x8,%eax : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 0.00 : 798788: 85 c0 test %eax,%eax 0.00 : 79878a: 74 2c je 7987b8 0.00 : 79878c: 89 c0 mov %eax,%eax 0.00 : 79878e: 0f b6 80 80 1e 8e 00 movzbl 0x8e1e80(%rax),%eax 0.00 : 798795: 8d 50 08 lea 0x8(%rax),%edx 0.00 : 798798: eb be jmp 798758 0.00 : 79879a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* OK, remove block from aset's list and free it */ : if (prevblock == NULL) : set->blocks = block->next; : else : prevblock->next = block->next; 0.00 : 7987a0: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 7987a4: 48 89 42 08 mov %rax,0x8(%rdx) : /* Reset requested_size to 0 in chunks that are on freelist */ : chunk->requested_size = 0; : #endif : set->freelist[fidx] = chunk; : } : } 0.00 : 7987a8: 48 83 c4 08 add $0x8,%rsp 0.00 : 7987ac: 5b pop %rbx 0.00 : 7987ad: c9 leaveq : else : prevblock->next = block->next; : #ifdef CLOBBER_FREED_MEMORY : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:982 9.09 : 7987ae: e9 6d 10 cd ff jmpq 469820 0.00 : 7987b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * to use a lookup table. Note that this code assumes that : * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of : * the tsize value. : */ : t = tsize >> 8; : idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; 0.00 : 7987b8: 89 d0 mov %edx,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:337 9.09 : 7987ba: 0f b6 90 80 1e 8e 00 movzbl 0x8e1e80(%rax),%edx 18.18 : 7987c1: eb 95 jmp 798758 : Assert(block->freeptr == ((char *) block) + : (chunk->size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)); : : /* OK, remove block from aset's list and free it */ : if (prevblock == NULL) : set->blocks = block->next; 0.00 : 7987c3: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 7987c7: 48 89 41 38 mov %rax,0x38(%rcx) 0.00 : 7987cb: eb db jmp 7987a8 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 25.00 ??:0 25.00 ??:0 16.67 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 8.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000009480 : : return NETDEV_TX_OK; : } : : static netdev_tx_t ixgbe_xmit_frame(struct sk_buff *skb, : struct net_device *netdev) : { ??:0 25.00 : 9480: 48 83 ec 18 sub $0x18,%rsp 16.67 : 9484: 48 89 1c 24 mov %rbx,(%rsp) 8.33 : 9488: 4c 89 64 24 10 mov %r12,0x10(%rsp) 8.33 : 948d: 48 89 fb mov %rdi,%rbx 0.00 : 9490: 48 89 6c 24 08 mov %rbp,0x8(%rsp) : : /* : * The minimum packet size for olinfo paylen is 17 so pad the skb : * in order to meet this minimum size requirement. : */ : if (unlikely(skb->len < 17)) { 0.00 : 9495: 8b 47 68 mov 0x68(%rdi),%eax : return NETDEV_TX_OK; : } : : static netdev_tx_t ixgbe_xmit_frame(struct sk_buff *skb, : struct net_device *netdev) : { 0.00 : 9498: 49 89 f4 mov %rsi,%r12 : struct ixgbe_adapter *adapter = netdev_priv(netdev); : struct ixgbe_ring *tx_ring; : #ifdef HAVE_TX_MQ : unsigned int r_idx = skb->queue_mapping; 25.00 : 949b: 0f b7 af ac 00 00 00 movzwl 0xac(%rdi),%ebp : : /* : * The minimum packet size for olinfo paylen is 17 so pad the skb : * in order to meet this minimum size requirement. : */ : if (unlikely(skb->len < 17)) { 0.00 : 94a2: 83 f8 10 cmp $0x10,%eax 0.00 : 94a5: 76 41 jbe 94e8 : } : : static netdev_tx_t ixgbe_xmit_frame(struct sk_buff *skb, : struct net_device *netdev) : { : struct ixgbe_adapter *adapter = netdev_priv(netdev); 0.00 : 94a7: 49 8d b4 24 00 08 00 lea 0x800(%r12),%rsi 0.00 : 94ae: 00 : struct ixgbe_ring *tx_ring; : #ifdef HAVE_TX_MQ : unsigned int r_idx = skb->queue_mapping; 0.00 : 94af: 0f b7 cd movzwl %bp,%ecx : return NETDEV_TX_OK; : skb->len = 17; : } : : #ifdef HAVE_TX_MQ : if (r_idx >= adapter->num_tx_queues) 0.00 : 94b2: 8b be 20 02 00 00 mov 0x220(%rsi),%edi 0.00 : 94b8: 39 f9 cmp %edi,%ecx 0.00 : 94ba: 72 08 jb 94c4 : r_idx = r_idx % adapter->num_tx_queues; 0.00 : 94bc: 89 c8 mov %ecx,%eax 0.00 : 94be: 31 d2 xor %edx,%edx 0.00 : 94c0: f7 f7 div %edi 0.00 : 94c2: 89 d1 mov %edx,%ecx : tx_ring = adapter->tx_ring[r_idx]; : #else : tx_ring = adapter->tx_ring[0]; : #endif : return ixgbe_xmit_frame_ring(skb, adapter, tx_ring); 0.00 : 94c4: 89 c8 mov %ecx,%eax 0.00 : 94c6: 48 89 df mov %rbx,%rdi : } 8.33 : 94c9: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp : r_idx = r_idx % adapter->num_tx_queues; : tx_ring = adapter->tx_ring[r_idx]; : #else : tx_ring = adapter->tx_ring[0]; : #endif : return ixgbe_xmit_frame_ring(skb, adapter, tx_ring); 0.00 : 94ce: 48 8b 94 c6 80 02 00 mov 0x280(%rsi,%rax,8),%rdx 0.00 : 94d5: 00 : } 8.33 : 94d6: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 94da: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 94df: 48 83 c4 18 add $0x18,%rsp : r_idx = r_idx % adapter->num_tx_queues; : tx_ring = adapter->tx_ring[r_idx]; : #else : tx_ring = adapter->tx_ring[0]; : #endif : return ixgbe_xmit_frame_ring(skb, adapter, tx_ring); 0.00 : 94e3: e9 00 00 00 00 jmpq 94e8 : /* : * The minimum packet size for olinfo paylen is 17 so pad the skb : * in order to meet this minimum size requirement. : */ : if (unlikely(skb->len < 17)) { : if (skb_pad(skb, 17 - skb->len)) 0.00 : 94e8: be 11 00 00 00 mov $0x11,%esi 0.00 : 94ed: 29 c6 sub %eax,%esi 0.00 : 94ef: e8 00 00 00 00 callq 94f4 0.00 : 94f4: 85 c0 test %eax,%eax 0.00 : 94f6: 75 09 jne 9501 : return NETDEV_TX_OK; : skb->len = 17; 0.00 : 94f8: c7 43 68 11 00 00 00 movl $0x11,0x68(%rbx) 0.00 : 94ff: eb a6 jmp 94a7 : tx_ring = adapter->tx_ring[r_idx]; : #else : tx_ring = adapter->tx_ring[0]; : #endif : return ixgbe_xmit_frame_ring(skb, adapter, tx_ring); : } 0.00 : 9501: 31 c0 xor %eax,%eax 0.00 : 9503: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 9507: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 950c: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 9511: 48 83 c4 18 add $0x18,%rsp Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 46.15 ??:0 30.77 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000002d10 : : : return IRQ_HANDLED; : } : : static irqreturn_t ixgbe_msix_clean_rings(int irq, void *data) : { ??:0 7.69 : 2d10: 48 83 ec 08 sub $0x8,%rsp : struct ixgbe_q_vector *q_vector = data; : : /* EIAM disabled interrupts (on this vector) for us */ : : if (q_vector->rx.ring || q_vector->tx.ring) 30.77 : 2d14: 48 83 7e 10 00 cmpq $0x0,0x10(%rsi) 46.15 : 2d19: 74 2d je 2d48 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 2d1b: 48 8b 46 50 mov 0x50(%rsi),%rax : : extern void __napi_schedule(struct napi_struct *n); : : static inline int napi_disable_pending(struct napi_struct *n) : { : return test_bit(NAPI_STATE_DISABLE, &n->state); 7.69 : 2d1f: 48 8d 56 50 lea 0x50(%rsi),%rdx : * insure only one NAPI poll instance runs. We also make : * sure there is no pending NAPI disable. : */ : static inline int napi_schedule_prep(struct napi_struct *n) : { : return !napi_disable_pending(n) && 0.00 : 2d23: a8 02 test $0x2,%al 0.00 : 2d25: 75 14 jne 2d3b : */ : static inline int test_and_set_bit(int nr, volatile unsigned long *addr) : { : int oldbit; : : asm volatile(LOCK_PREFIX "bts %2,%1\n\t" 0.00 : 2d27: f0 0f ba 2a 00 lock btsl $0x0,(%rdx) 7.69 : 2d2c: 19 c0 sbb %eax,%eax 0.00 : 2d2e: 85 c0 test %eax,%eax 0.00 : 2d30: 75 09 jne 2d3b : * running. : */ : static inline void napi_schedule(struct napi_struct *n) : { : if (napi_schedule_prep(n)) : __napi_schedule(n); 0.00 : 2d32: 48 8d 7e 40 lea 0x40(%rsi),%rdi 0.00 : 2d36: e8 00 00 00 00 callq 2d3b : napi_schedule(&q_vector->napi); : : return IRQ_HANDLED; : } 0.00 : 2d3b: b8 01 00 00 00 mov $0x1,%eax 0.00 : 2d40: 48 83 c4 08 add $0x8,%rsp 0.00 : 2d44: c3 retq 0.00 : 2d45: 0f 1f 00 nopl (%rax) : { : struct ixgbe_q_vector *q_vector = data; : : /* EIAM disabled interrupts (on this vector) for us */ : : if (q_vector->rx.ring || q_vector->tx.ring) 0.00 : 2d48: 48 83 7e 28 00 cmpq $0x0,0x28(%rsi) 0.00 : 2d4d: 75 cc jne 2d1b 0.00 : 2d4f: 90 nop 0.00 : 2d50: eb e9 jmp 2d3b Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 30.77 ??:0 15.38 ??:0 15.38 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005490 : : **/ : static bool ixgbe_add_rx_frag(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *rx_buffer, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { 0.00 : 5490: 41 54 push %r12 ??:0 15.38 : 5492: 49 89 ca mov %rcx,%r10 0.00 : 5495: 49 89 f4 mov %rsi,%r12 0.00 : 5498: 55 push %rbp 0.00 : 5499: 53 push %rbx : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 549a: 48 8b 47 30 mov 0x30(%rdi),%rax : struct page *page = rx_buffer->page; : unsigned int size = le16_to_cpu(rx_desc->wb.upper.length); 0.00 : 549e: 44 0f b7 42 0c movzwl 0xc(%rdx),%r8d : static bool ixgbe_add_rx_frag(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *rx_buffer, : union ixgbe_adv_rx_desc *rx_desc, : struct sk_buff *skb) : { : struct page *page = rx_buffer->page; 0.00 : 54a3: 48 8b 5e 10 mov 0x10(%rsi),%rbx : { : #if MAX_SKB_FRAGS < 8 : return ALIGN(IXGBE_MAX_RXBUFFER / MAX_SKB_FRAGS, 1024); : #else : #ifdef IXGBE_FCOE : if (test_bit(__IXGBE_RX_FCOE, &ring->state)) 0.00 : 54a7: 83 e0 20 and $0x20,%eax 0.00 : 54aa: 48 83 f8 01 cmp $0x1,%rax 0.00 : 54ae: 19 ed sbb %ebp,%ebp 0.00 : 54b0: 81 e5 00 f8 ff ff and $0xfffff800,%ebp 0.00 : 54b6: 81 c5 00 10 00 00 add $0x1000,%ebp : unsigned int truesize = ALIGN(size, L1_CACHE_BYTES); : unsigned int last_offset = ixgbe_rx_pg_size(rx_ring) - : ixgbe_rx_bufsz(rx_ring); : #endif : : if ((size <= IXGBE_RX_HDR_SIZE) && !skb_is_nonlinear(skb)) { 0.00 : 54bc: 41 81 f8 00 01 00 00 cmp $0x100,%r8d 0.00 : 54c3: 0f 87 97 00 00 00 ja 5560 0.00 : 54c9: 8b 79 6c mov 0x6c(%rcx),%edi 7.69 : 54cc: 85 ff test %edi,%edi 0.00 : 54ce: 0f 85 8c 00 00 00 jne 5560 : unsigned char *va = page_address(page) + rx_buffer->page_offset; 0.00 : 54d4: 48 be 00 00 00 00 00 movabs $0x160000000000,%rsi 0.00 : 54db: 16 00 00 0.00 : 54de: 48 b8 b7 6d db b6 6d movabs $0x6db6db6db6db6db7,%rax 0.00 : 54e5: db b6 6d : : memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long))); 0.00 : 54e8: 41 8d 50 07 lea 0x7(%r8),%edx : unsigned int last_offset = ixgbe_rx_pg_size(rx_ring) - : ixgbe_rx_bufsz(rx_ring); : #endif : : if ((size <= IXGBE_RX_HDR_SIZE) && !skb_is_nonlinear(skb)) { : unsigned char *va = page_address(page) + rx_buffer->page_offset; 0.00 : 54ec: 48 8d 34 33 lea (%rbx,%rsi,1),%rsi : : memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long))); 0.00 : 54f0: 81 e2 f8 ff 01 00 and $0x1fff8,%edx : unsigned int last_offset = ixgbe_rx_pg_size(rx_ring) - : ixgbe_rx_bufsz(rx_ring); : #endif : : if ((size <= IXGBE_RX_HDR_SIZE) && !skb_is_nonlinear(skb)) { : unsigned char *va = page_address(page) + rx_buffer->page_offset; 0.00 : 54f6: 48 c1 fe 03 sar $0x3,%rsi 0.00 : 54fa: 48 0f af f0 imul %rax,%rsi 0.00 : 54fe: 48 b8 00 00 00 00 00 movabs $0xffff880000000000,%rax 0.00 : 5505: 88 ff ff 15.38 : 5508: 48 c1 e6 0c shl $0xc,%rsi 0.00 : 550c: 48 01 c6 add %rax,%rsi 0.00 : 550f: 41 8b 44 24 18 mov 0x18(%r12),%eax : static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) : { : unsigned char *tmp = skb_tail_pointer(skb); : SKB_LINEAR_ASSERT(skb); : skb->tail += len; : skb->len += len; 7.69 : 5514: 44 01 41 68 add %r8d,0x68(%rcx) 7.69 : 5518: 48 01 c6 add %rax,%rsi : #define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb)) : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_tail_pointer(const struct sk_buff *skb) : { : return skb->head + skb->tail; 0.00 : 551b: 8b 81 cc 00 00 00 mov 0xcc(%rcx),%eax 0.00 : 5521: 89 c7 mov %eax,%edi 0.00 : 5523: 48 03 b9 d8 00 00 00 add 0xd8(%rcx),%rdi : extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); : static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) : { : unsigned char *tmp = skb_tail_pointer(skb); : SKB_LINEAR_ASSERT(skb); : skb->tail += len; 0.00 : 552a: 41 8d 04 00 lea (%r8,%rax,1),%eax 0.00 : 552e: 89 81 cc 00 00 00 mov %eax,0xcc(%rcx) : : memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long))); 0.00 : 5534: e8 00 00 00 00 callq 5539 : : /* we can reuse buffer as-is, just make sure it is local */ : if (likely(page_to_nid(page) == numa_node_id())) 0.00 : 5539: 48 8b 03 mov (%rbx),%rax : : #ifndef numa_node_id : /* Returns the number of the current Node. */ : static inline int numa_node_id(void) : { : return __this_cpu_read(numa_node); 30.77 : 553c: 65 8b 14 25 00 00 00 mov %gs:0x0,%edx 0.00 : 5543: 00 7.69 : 5544: 48 c1 e8 36 shr $0x36,%rax 0.00 : 5548: 39 c2 cmp %eax,%edx 0.00 : 554a: 0f 85 9a 00 00 00 jne 55ea : * : * Atomically increments @v by 1. : */ : static inline void atomic_inc(atomic_t *v) : { : asm volatile(LOCK_PREFIX "incl %0" 0.00 : 5550: b8 01 00 00 00 mov $0x1,%eax 7.69 : 5555: eb 72 jmp 55c9 0.00 : 5557: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 555e: 00 00 : /* this page cannot be reused so discard it */ : put_page(page); : return false; : } : : skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, 0.00 : 5560: 41 8b 92 d0 00 00 00 mov 0xd0(%r10),%edx 0.00 : 5567: 49 8b 82 d8 00 00 00 mov 0xd8(%r10),%rax 0.00 : 556e: 41 89 e9 mov %ebp,%r9d 0.00 : 5571: 41 8b 4c 24 18 mov 0x18(%r12),%ecx 0.00 : 5576: 4c 89 d7 mov %r10,%rdi 0.00 : 5579: 0f b7 34 10 movzwl (%rax,%rdx,1),%esi 0.00 : 557d: 48 89 da mov %rbx,%rdx 0.00 : 5580: e8 00 00 00 00 callq 5585 : rx_buffer->page_offset, size, truesize); : : /* avoid re-using remote pages */ : if (unlikely(page_to_nid(page) != numa_node_id())) 0.00 : 5585: 48 8b 03 mov (%rbx),%rax 0.00 : 5588: 65 8b 14 25 00 00 00 mov %gs:0x0,%edx 0.00 : 558f: 00 0.00 : 5590: 48 c1 e8 36 shr $0x36,%rax 0.00 : 5594: 39 c2 cmp %eax,%edx 0.00 : 5596: 75 4d jne 55e5 0.00 : 5598: 48 8b 03 mov (%rbx),%rax : #endif : } : : static inline struct page *compound_head(struct page *page) : { : if (unlikely(PageTail(page))) 0.00 : 559b: 48 89 da mov %rbx,%rdx 0.00 : 559e: a9 00 00 02 00 test $0x20000,%eax 0.00 : 55a3: 74 04 je 55a9 : return page->first_page; 0.00 : 55a5: 48 8b 53 10 mov 0x10(%rbx),%rdx : * : * Atomically reads the value of @v. : */ : static inline int atomic_read(const atomic_t *v) : { : return (*(volatile int *)&(v)->counter); 0.00 : 55a9: 8b 42 08 mov 0x8(%rdx),%eax : return false; : : #if (PAGE_SIZE < 8192) : /* if we are only owner of page we can reuse it */ : if (unlikely(page_count(page) != 1)) 0.00 : 55ac: 83 e8 01 sub $0x1,%eax 0.00 : 55af: 75 34 jne 55e5 : return false; : : /* flip page offset to other buffer */ : rx_buffer->page_offset ^= truesize; 0.00 : 55b1: 41 31 6c 24 18 xor %ebp,0x18(%r12) 0.00 : 55b6: 48 8b 03 mov (%rbx),%rax : : extern bool __get_page_tail(struct page *page); : : static inline void get_page(struct page *page) : { : if (unlikely(PageTail(page))) 0.00 : 55b9: a9 00 00 02 00 test $0x20000,%eax 0.00 : 55be: 75 10 jne 55d0 : * : * Atomically increments @v by 1. : */ : static inline void atomic_inc(atomic_t *v) : { : asm volatile(LOCK_PREFIX "incl %0" 0.00 : 55c0: f0 ff 43 08 lock incl 0x8(%rbx) 0.00 : 55c4: b8 01 00 00 00 mov $0x1,%eax : : /* bump ref count on page before it is given to the stack */ : get_page(page); : : return true; : } 0.00 : 55c9: 5b pop %rbx 0.00 : 55ca: 5d pop %rbp 0.00 : 55cb: 41 5c pop %r12 0.00 : 55cd: c3 retq 0.00 : 55ce: 66 90 xchg %ax,%ax : if (likely(__get_page_tail(page))) 0.00 : 55d0: 48 89 df mov %rbx,%rdi 0.00 : 55d3: e8 00 00 00 00 callq 55d8 0.00 : 55d8: 84 c0 test %al,%al 0.00 : 55da: 74 e4 je 55c0 0.00 : 55dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 55e0: e9 6b ff ff ff jmpq 5550 0.00 : 55e5: 31 c0 xor %eax,%eax 0.00 : 55e7: 90 nop 0.00 : 55e8: eb df jmp 55c9 : /* we can reuse buffer as-is, just make sure it is local */ : if (likely(page_to_nid(page) == numa_node_id())) : return true; : : /* this page cannot be reused so discard it */ : put_page(page); 0.00 : 55ea: 48 89 df mov %rbx,%rdi 0.00 : 55ed: 0f 1f 00 nopl (%rax) 0.00 : 55f0: e8 00 00 00 00 callq 55f5 0.00 : 55f5: 31 c0 xor %eax,%eax : : /* bump ref count on page before it is given to the stack */ : get_page(page); : : return true; : } 0.00 : 55f7: eb d0 jmp 55c9 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1644 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1644 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1656 10.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1656 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004cdba0 : : /* : * Release our insertion lock (or locks, if we're holding them all). : */ : static void : WALInsertLockRelease(void) : { 50.00 : 4cdba0: 55 push %rbp 20.00 : 4cdba1: 48 89 e5 mov %rsp,%rbp 0.00 : 4cdba4: 53 push %rbx 0.00 : 4cdba5: 48 83 ec 08 sub $0x8,%rsp : if (holdingAllLocks) 0.00 : 4cdba9: 80 3d 18 b6 6a 00 00 cmpb $0x0,0x6ab618(%rip) # b791c8 0.00 : 4cdbb0: 74 36 je 4cdbe8 0.00 : 4cdbb2: 31 db xor %ebx,%ebx 0.00 : 4cdbb4: 0f 1f 40 00 nopl 0x0(%rax) : { : int i; : : for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++) : LWLockRelease(&WALInsertLocks[i].l.lock); 0.00 : 4cdbb8: 48 89 df mov %rbx,%rdi 0.00 : 4cdbbb: 48 03 3d fe b5 6a 00 add 0x6ab5fe(%rip),%rdi # b791c0 0.00 : 4cdbc2: 48 83 eb 80 sub $0xffffffffffffff80,%rbx 0.00 : 4cdbc6: e8 d5 17 1c 00 callq 68f3a0 : { : if (holdingAllLocks) : { : int i; : : for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++) 0.00 : 4cdbcb: 48 81 fb 00 04 00 00 cmp $0x400,%rbx 0.00 : 4cdbd2: 75 e4 jne 4cdbb8 : LWLockRelease(&WALInsertLocks[i].l.lock); : : holdingAllLocks = false; 0.00 : 4cdbd4: c6 05 ed b5 6a 00 00 movb $0x0,0x6ab5ed(%rip) # b791c8 : } : else : { : LWLockRelease(&WALInsertLocks[MyLockNo].l.lock); : } : } 0.00 : 4cdbdb: 48 83 c4 08 add $0x8,%rsp 0.00 : 4cdbdf: 5b pop %rbx 0.00 : 4cdbe0: c9 leaveq 0.00 : 4cdbe1: c3 retq 0.00 : 4cdbe2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : holdingAllLocks = false; : } : else : { : LWLockRelease(&WALInsertLocks[MyLockNo].l.lock); /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1656 10.00 : 4cdbe8: 48 63 3d dd b5 6a 00 movslq 0x6ab5dd(%rip),%rdi # b791cc 0.00 : 4cdbef: 48 c1 e7 07 shl $0x7,%rdi 0.00 : 4cdbf3: 48 03 3d c6 b5 6a 00 add 0x6ab5c6(%rip),%rdi # b791c0 : } : } 0.00 : 4cdbfa: 48 83 c4 08 add $0x8,%rsp 0.00 : 4cdbfe: 5b pop %rbx 0.00 : 4cdbff: c9 leaveq : : holdingAllLocks = false; : } : else : { : LWLockRelease(&WALInsertLocks[MyLockNo].l.lock); 20.00 : 4cdc00: e9 9b 17 1c 00 jmpq 68f3a0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 70.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1311 20.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1309 10.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1309 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000054c4f0 : : } : : /* Select a random value R uniformly distributed in (0 - 1) */ : double : anl_random_fract(void) : { /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1309 20.00 : 54c4f0: 55 push %rbp 10.00 : 54c4f1: 48 89 e5 mov %rsp,%rbp : return ((double) random() + 1) / ((double) MAX_RANDOM_VALUE + 2); 0.00 : 54c4f4: e8 a7 d9 f1 ff callq 469ea0 0.00 : 54c4f9: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 54c4fe: f2 0f 58 05 52 2c 26 addsd 0x262c52(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 54c505: 00 0.00 : 54c506: f2 0f 5e 05 fa b4 32 divsd 0x32b4fa(%rip),%xmm0 # 877a08 <__func__.20024+0x48> 0.00 : 54c50d: 00 : } /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:1311 70.00 : 54c50e: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 30.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1194 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1176 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1179 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1194 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1201 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1205 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1209 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1212 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006747f0 : : * exclusive lock, then somebody could be in process of writing the buffer, : * leading to risk of bad data written to disk.) : */ : void : MarkBufferDirty(Buffer buffer) : { 0.00 : 6747f0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1176 10.00 : 6747f1: 48 89 e5 mov %rsp,%rbp 0.00 : 6747f4: 53 push %rbx 0.00 : 6747f5: 48 83 ec 08 sub $0x8,%rsp : volatile BufferDesc *bufHdr; : : if (!BufferIsValid(buffer)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1179 10.00 : 6747f9: 83 ff 00 cmp $0x0,%edi 0.00 : 6747fc: 0f 84 91 00 00 00 je 674893 : elog(ERROR, "bad buffer ID: %d", buffer); : : if (BufferIsLocal(buffer)) 0.00 : 674802: 0f 8c 80 00 00 00 jl 674888 : { : MarkLocalBufferDirty(buffer); : return; : } : : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 674808: 48 63 c7 movslq %edi,%rax 0.00 : 67480b: 48 8d 58 ff lea -0x1(%rax),%rbx : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 67480f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 674814: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 674818: 48 03 1d e1 b2 54 00 add 0x54b2e1(%rip),%rbx # bbfb00 : : Assert(BufferIsPinned(buffer)); : /* unfortunately we can't check if the lock is held exclusively */ : Assert(LWLockHeldByMe(bufHdr->content_lock)); : : LockBufHdr(bufHdr); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1194 10.00 : 67481f: 48 8d 7b 20 lea 0x20(%rbx),%rdi 0.00 : 674823: f0 86 07 lock xchg %al,(%rdi) 30.00 : 674826: 84 c0 test %al,%al 0.00 : 674828: 75 46 jne 674870 : Assert(bufHdr->refcount > 0); : : /* : * If the buffer was not dirty already, do vacuum accounting. : */ : if (!(bufHdr->flags & BM_DIRTY)) 0.00 : 67482a: 0f b7 43 14 movzwl 0x14(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1201 10.00 : 67482e: a8 01 test $0x1,%al 0.00 : 674830: 75 24 jne 674856 : { : VacuumPageDirty++; 0.00 : 674832: 83 05 a3 58 54 00 01 addl $0x1,0x5458a3(%rip) # bba0dc : pgBufferUsage.shared_blks_dirtied++; 0.00 : 674839: 48 83 05 2f af 54 00 addq $0x1,0x54af2f(%rip) # bbf770 0.00 : 674840: 01 : if (VacuumCostActive) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1205 10.00 : 674841: 80 3d 9c 58 54 00 00 cmpb $0x0,0x54589c(%rip) # bba0e4 0.00 : 674848: 74 0c je 674856 : VacuumCostBalance += VacuumCostPageDirty; 0.00 : 67484a: 8b 05 e4 42 4f 00 mov 0x4f42e4(%rip),%eax # b68b34 0.00 : 674850: 01 05 8a 58 54 00 add %eax,0x54588a(%rip) # bba0e0 : } : : bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); 0.00 : 674856: 0f b7 43 14 movzwl 0x14(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1209 10.00 : 67485a: 83 c8 21 or $0x21,%eax 0.00 : 67485d: 66 89 43 14 mov %ax,0x14(%rbx) : : UnlockBufHdr(bufHdr); 0.00 : 674861: c6 43 20 00 movb $0x0,0x20(%rbx) : } 0.00 : 674865: 48 83 c4 08 add $0x8,%rsp 0.00 : 674869: 5b pop %rbx 0.00 : 67486a: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1212 10.00 : 67486b: c3 retq 0.00 : 67486c: 0f 1f 40 00 nopl 0x0(%rax) : : Assert(BufferIsPinned(buffer)); : /* unfortunately we can't check if the lock is held exclusively */ : Assert(LWLockHeldByMe(bufHdr->content_lock)); : : LockBufHdr(bufHdr); 0.00 : 674870: ba aa 04 00 00 mov $0x4aa,%edx 0.00 : 674875: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 67487a: e8 c1 b7 01 00 callq 690040 0.00 : 67487f: eb a9 jmp 67482a 0.00 : 674881: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : : bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); : : UnlockBufHdr(bufHdr); : } 0.00 : 674888: 48 83 c4 08 add $0x8,%rsp 0.00 : 67488c: 5b pop %rbx 0.00 : 67488d: c9 leaveq : if (!BufferIsValid(buffer)) : elog(ERROR, "bad buffer ID: %d", buffer); : : if (BufferIsLocal(buffer)) : { : MarkLocalBufferDirty(buffer); 0.00 : 67488e: e9 fd 2f 00 00 jmpq 677890 : MarkBufferDirty(Buffer buffer) : { : volatile BufferDesc *bufHdr; : : if (!BufferIsValid(buffer)) : elog(ERROR, "bad buffer ID: %d", buffer); 0.00 : 674893: ba 90 a0 8a 00 mov $0x8aa090,%edx 0.00 : 674898: be 9c 04 00 00 mov $0x49c,%esi 0.00 : 67489d: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 6748a2: e8 79 6b 10 00 callq 77b420 0.00 : 6748a7: 31 d2 xor %edx,%edx 0.00 : 6748a9: be 5c 9d 8a 00 mov $0x8a9d5c,%esi 0.00 : 6748ae: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6748b3: 31 c0 xor %eax,%eax 0.00 : 6748b5: e8 76 69 10 00 callq 77b230 0.00 : 6748ba: e8 11 4c df ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1457 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1529 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1500 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1500 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1506 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1519 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000675a30 : : * Note: temporary relations do not participate in checkpoints, so they don't : * need to be flushed. : */ : void : CheckPointBuffers(int flags) : { 0.00 : 675a30: 55 push %rbp 0.00 : 675a31: 48 89 e5 mov %rsp,%rbp 0.00 : 675a34: 41 57 push %r15 0.00 : 675a36: 41 56 push %r14 0.00 : 675a38: 41 55 push %r13 0.00 : 675a3a: 41 54 push %r12 0.00 : 675a3c: 53 push %rbx 0.00 : 675a3d: 48 83 ec 08 sub $0x8,%rsp 0.00 : 675a41: 89 7d d4 mov %edi,-0x2c(%rbp) : TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START(flags); : CheckpointStats.ckpt_write_t = GetCurrentTimestamp(); 0.00 : 675a44: e8 27 09 0d 00 callq 746370 : int num_to_write; : int num_written; : int mask = BM_DIRTY; : : /* Make sure we can handle the pin inside SyncOneBuffer */ : ResourceOwnerEnlargeBuffers(CurrentResourceOwner); 0.00 : 675a49: 48 8b 3d 70 4e 54 00 mov 0x544e70(%rip),%rdi # bba8c0 : */ : void : CheckPointBuffers(int flags) : { : TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START(flags); : CheckpointStats.ckpt_write_t = GetCurrentTimestamp(); 0.00 : 675a50: 48 89 05 31 9b 54 00 mov %rax,0x549b31(%rip) # bbf588 : int num_to_write; : int num_written; : int mask = BM_DIRTY; : : /* Make sure we can handle the pin inside SyncOneBuffer */ : ResourceOwnerEnlargeBuffers(CurrentResourceOwner); 0.00 : 675a57: e8 14 54 12 00 callq 79ae70 : /* : * Unless this is a shutdown checkpoint, we write only permanent, dirty : * buffers. But at shutdown or end of recovery, we write all dirty : * buffers. : */ : if (!((flags & CHECKPOINT_IS_SHUTDOWN) || (flags & CHECKPOINT_END_OF_RECOVERY))) 0.00 : 675a5c: 8b 45 d4 mov -0x2c(%rbp),%eax : * Note that if we fail to write some buffer, we may leave buffers with : * BM_CHECKPOINT_NEEDED still set. This is OK since any such buffer would : * certainly need to be written for the next checkpoint attempt, too. : */ : num_to_write = 0; : for (buf_id = 0; buf_id < NBuffers; buf_id++) 0.00 : 675a5f: 8b 1d bb 30 4f 00 mov 0x4f30bb(%rip),%ebx # b68b20 : /* : * Unless this is a shutdown checkpoint, we write only permanent, dirty : * buffers. But at shutdown or end of recovery, we write all dirty : * buffers. : */ : if (!((flags & CHECKPOINT_IS_SHUTDOWN) || (flags & CHECKPOINT_END_OF_RECOVERY))) 0.00 : 675a65: 83 e0 03 and $0x3,%eax 0.00 : 675a68: 83 f8 01 cmp $0x1,%eax 0.00 : 675a6b: 45 19 ed sbb %r13d,%r13d 0.00 : 675a6e: 41 81 e5 00 01 00 00 and $0x100,%r13d 0.00 : 675a75: 41 83 c5 01 add $0x1,%r13d : * Note that if we fail to write some buffer, we may leave buffers with : * BM_CHECKPOINT_NEEDED still set. This is OK since any such buffer would : * certainly need to be written for the next checkpoint attempt, too. : */ : num_to_write = 0; : for (buf_id = 0; buf_id < NBuffers; buf_id++) 0.00 : 675a79: 85 db test %ebx,%ebx 0.00 : 675a7b: 0f 8e 86 00 00 00 jle 675b07 0.00 : 675a81: 45 31 e4 xor %r12d,%r12d 0.00 : 675a84: 45 31 f6 xor %r14d,%r14d : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 675a87: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 675a8d: eb 25 jmp 675ab4 0.00 : 675a8f: 90 nop : * Header spinlock is enough to examine BM_DIRTY, see comment in : * SyncOneBuffer. : */ : LockBufHdr(bufHdr); : : if ((bufHdr->flags & mask) == mask) 0.00 : 675a90: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 675a94: 0f b7 c0 movzwl %ax,%eax 0.00 : 675a97: 44 21 e8 and %r13d,%eax 0.00 : 675a9a: 44 39 e8 cmp %r13d,%eax 0.00 : 675a9d: 74 4f je 675aee : { : bufHdr->flags |= BM_CHECKPOINT_NEEDED; : num_to_write++; : } : : UnlockBufHdr(bufHdr); 0.00 : 675a9f: c6 43 20 00 movb $0x0,0x20(%rbx) : * Note that if we fail to write some buffer, we may leave buffers with : * BM_CHECKPOINT_NEEDED still set. This is OK since any such buffer would : * certainly need to be written for the next checkpoint attempt, too. : */ : num_to_write = 0; : for (buf_id = 0; buf_id < NBuffers; buf_id++) 0.00 : 675aa3: 41 83 c4 01 add $0x1,%r12d 0.00 : 675aa7: 44 3b 25 72 30 4f 00 cmp 0x4f3072(%rip),%r12d # b68b20 0.00 : 675aae: 0f 8d 84 00 00 00 jge 675b38 : { : volatile BufferDesc *bufHdr = &BufferDescriptors[buf_id]; 0.00 : 675ab4: 49 63 dc movslq %r12d,%rbx 0.00 : 675ab7: 44 89 f8 mov %r15d,%eax 0.00 : 675aba: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 675abe: 48 03 1d 3b a0 54 00 add 0x54a03b(%rip),%rbx # bbfb00 : : /* : * Header spinlock is enough to examine BM_DIRTY, see comment in : * SyncOneBuffer. : */ : LockBufHdr(bufHdr); 0.00 : 675ac5: 48 8d 7b 20 lea 0x20(%rbx),%rdi 0.00 : 675ac9: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1457 50.00 : 675acc: 84 c0 test %al,%al 0.00 : 675ace: 74 c0 je 675a90 0.00 : 675ad0: ba b1 05 00 00 mov $0x5b1,%edx 0.00 : 675ad5: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 675ada: e8 61 a5 01 00 callq 690040 : : if ((bufHdr->flags & mask) == mask) 0.00 : 675adf: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 675ae3: 0f b7 c0 movzwl %ax,%eax 0.00 : 675ae6: 44 21 e8 and %r13d,%eax 0.00 : 675ae9: 44 39 e8 cmp %r13d,%eax 0.00 : 675aec: 75 b1 jne 675a9f : { : bufHdr->flags |= BM_CHECKPOINT_NEEDED; 0.00 : 675aee: 0f b7 43 14 movzwl 0x14(%rbx),%eax : num_to_write++; 0.00 : 675af2: 41 83 c6 01 add $0x1,%r14d : */ : LockBufHdr(bufHdr); : : if ((bufHdr->flags & mask) == mask) : { : bufHdr->flags |= BM_CHECKPOINT_NEEDED; 0.00 : 675af6: 0c 80 or $0x80,%al 0.00 : 675af8: 66 89 43 14 mov %ax,0x14(%rbx) 0.00 : 675afc: eb a1 jmp 675a9f 0.00 : 675afe: 66 90 xchg %ax,%ax : : /* : * Update checkpoint statistics. As noted above, this doesn't include : * buffers written by other backends or bgwriter scan. : */ : CheckpointStats.ckpt_bufs_written += num_written; 0.00 : 675b00: 44 01 2d a1 9a 54 00 add %r13d,0x549aa1(%rip) # bbf5a8 : CheckPointBuffers(int flags) : { : TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START(flags); : CheckpointStats.ckpt_write_t = GetCurrentTimestamp(); : BufferSync(flags); : CheckpointStats.ckpt_sync_t = GetCurrentTimestamp(); 0.00 : 675b07: e8 64 08 0d 00 callq 746370 0.00 : 675b0c: 48 89 05 7d 9a 54 00 mov %rax,0x549a7d(%rip) # bbf590 : TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START(); : smgrsync(); 0.00 : 675b13: e8 88 39 02 00 callq 6994a0 : CheckpointStats.ckpt_sync_end_t = GetCurrentTimestamp(); 0.00 : 675b18: e8 53 08 0d 00 callq 746370 0.00 : 675b1d: 48 89 05 74 9a 54 00 mov %rax,0x549a74(%rip) # bbf598 : TRACE_POSTGRESQL_BUFFER_CHECKPOINT_DONE(); : } 0.00 : 675b24: 48 83 c4 08 add $0x8,%rsp 0.00 : 675b28: 5b pop %rbx 0.00 : 675b29: 41 5c pop %r12 0.00 : 675b2b: 41 5d pop %r13 0.00 : 675b2d: 41 5e pop %r14 0.00 : 675b2f: 41 5f pop %r15 0.00 : 675b31: c9 leaveq 0.00 : 675b32: c3 retq 0.00 : 675b33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : : UnlockBufHdr(bufHdr); : } : : if (num_to_write == 0) 0.00 : 675b38: 45 85 f6 test %r14d,%r14d 0.00 : 675b3b: 74 ca je 675b07 : * since we might as well dump soon-to-be-recycled buffers first. : * : * Note that we don't read the buffer alloc count here --- that should be : * left untouched till the next BgBufferSync() call. : */ : buf_id = StrategySyncStart(NULL, NULL); 0.00 : 675b3d: 31 f6 xor %esi,%esi 0.00 : 675b3f: 31 ff xor %edi,%edi 0.00 : 675b41: 45 31 ed xor %r13d,%r13d 0.00 : 675b44: e8 e7 18 00 00 callq 677430 0.00 : 675b49: 44 8b 25 d0 2f 4f 00 mov 0x4f2fd0(%rip),%r12d # b68b20 0.00 : 675b50: 89 c3 mov %eax,%ebx 0.00 : 675b52: eb 19 jmp 675b6d 0.00 : 675b54: 0f 1f 40 00 nopl 0x0(%rax) : */ : CheckpointWriteDelay(flags, (double) num_written / num_to_write); : } : } : : if (++buf_id >= NBuffers) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1529 10.00 : 675b58: 83 c3 01 add $0x1,%ebx 0.00 : 675b5b: 3b 1d bf 2f 4f 00 cmp 0x4f2fbf(%rip),%ebx # b68b20 0.00 : 675b61: b8 00 00 00 00 mov $0x0,%eax 0.00 : 675b66: 0f 4d d8 cmovge %eax,%ebx 0.00 : 675b69: 41 83 ec 01 sub $0x1,%r12d : * left untouched till the next BgBufferSync() call. : */ : buf_id = StrategySyncStart(NULL, NULL); : num_to_scan = NBuffers; : num_written = 0; : while (num_to_scan-- > 0) 0.00 : 675b6d: 45 85 e4 test %r12d,%r12d 0.00 : 675b70: 7e 8e jle 675b00 : { : volatile BufferDesc *bufHdr = &BufferDescriptors[buf_id]; 0.00 : 675b72: 48 63 c3 movslq %ebx,%rax 0.00 : 675b75: 48 c1 e0 06 shl $0x6,%rax 0.00 : 675b79: 48 03 05 80 9f 54 00 add 0x549f80(%rip),%rax # bbfb00 : * someone else not only wrote the buffer but replaced it with another : * page and dirtied it. In that improbable case, SyncOneBuffer will : * write the buffer though we didn't need to. It doesn't seem worth : * guarding against this, though. : */ : if (bufHdr->flags & BM_CHECKPOINT_NEEDED) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1500 10.00 : 675b80: 0f b7 40 14 movzwl 0x14(%rax),%eax 10.00 : 675b84: 84 c0 test %al,%al 0.00 : 675b86: 79 d0 jns 675b58 : { : if (SyncOneBuffer(buf_id, false) & BUF_WRITTEN) 0.00 : 675b88: 31 f6 xor %esi,%esi 0.00 : 675b8a: 89 df mov %ebx,%edi 0.00 : 675b8c: e8 cf f6 ff ff callq 675260 0.00 : 675b91: a8 01 test $0x1,%al 0.00 : 675b93: 74 c3 je 675b58 : { : TRACE_POSTGRESQL_BUFFER_SYNC_WRITTEN(buf_id); : BgWriterStats.m_buf_written_checkpoints++; : num_written++; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1506 10.00 : 675b95: 41 83 c5 01 add $0x1,%r13d : if (bufHdr->flags & BM_CHECKPOINT_NEEDED) : { : if (SyncOneBuffer(buf_id, false) & BUF_WRITTEN) : { : TRACE_POSTGRESQL_BUFFER_SYNC_WRITTEN(buf_id); : BgWriterStats.m_buf_written_checkpoints++; 0.00 : 675b99: 48 83 05 b7 9e 54 00 addq $0x1,0x549eb7(%rip) # bbfa58 0.00 : 675ba0: 01 : * other backends, or by the bgwriter cleaning scan. That : * means that the estimate of how much progress we've made is : * conservative, and also that this test will often fail to : * trigger. But it seems worth making anyway. : */ : if (num_written >= num_to_write) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1519 10.00 : 675ba1: 45 39 f5 cmp %r14d,%r13d 0.00 : 675ba4: 0f 8d 56 ff ff ff jge 675b00 : break; : : /* : * Sleep to throttle our I/O rate. : */ : CheckpointWriteDelay(flags, (double) num_written / num_to_write); 0.00 : 675baa: f2 41 0f 2a c5 cvtsi2sd %r13d,%xmm0 0.00 : 675baf: 8b 7d d4 mov -0x2c(%rbp),%edi 0.00 : 675bb2: f2 41 0f 2a ce cvtsi2sd %r14d,%xmm1 0.00 : 675bb7: f2 0f 5e c1 divsd %xmm1,%xmm0 0.00 : 675bbb: e8 70 89 fc ff callq 63e530 0.00 : 675bc0: eb 96 jmp 675b58 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 80.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:70 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:77 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:78 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000683460 : : : Assert(ShmemAddrIsValid(queue)); : Assert(ShmemAddrIsValid(nextElem)); : Assert(ShmemAddrIsValid(prevElem)); : : prevElem->next = queue->next; /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:77 10.00 : 683460: 48 8b 07 mov (%rdi),%rax : * close the links : */ : void : SHMQueueDelete(SHM_QUEUE *queue) : { : SHM_QUEUE *nextElem = queue->next; /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:70 80.00 : 683463: 48 8b 57 08 mov 0x8(%rdi),%rdx : * SHMQueueDelete -- remove an element from the queue and : * close the links : */ : void : SHMQueueDelete(SHM_QUEUE *queue) : { 0.00 : 683467: 55 push %rbp : : Assert(ShmemAddrIsValid(queue)); : Assert(ShmemAddrIsValid(nextElem)); : Assert(ShmemAddrIsValid(prevElem)); : : prevElem->next = queue->next; 0.00 : 683468: 48 89 50 08 mov %rdx,0x8(%rax) : nextElem->prev = queue->prev; /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:78 10.00 : 68346c: 48 8b 07 mov (%rdi),%rax : * SHMQueueDelete -- remove an element from the queue and : * close the links : */ : void : SHMQueueDelete(SHM_QUEUE *queue) : { 0.00 : 68346f: 48 89 e5 mov %rsp,%rbp : Assert(ShmemAddrIsValid(queue)); : Assert(ShmemAddrIsValid(nextElem)); : Assert(ShmemAddrIsValid(prevElem)); : : prevElem->next = queue->next; : nextElem->prev = queue->prev; 0.00 : 683472: 48 89 02 mov %rax,(%rdx) : : queue->prev = queue->next = NULL; 0.00 : 683475: 48 c7 47 08 00 00 00 movq $0x0,0x8(%rdi) 0.00 : 68347c: 00 0.00 : 68347d: 48 c7 07 00 00 00 00 movq $0x0,(%rdi) : } 0.00 : 683484: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:743 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:743 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:743 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:798 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:798 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:799 10.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:799 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000698a20 : : * use mdextend(). : */ : void : mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:743 20.00 : 698a20: 55 push %rbp 20.00 : 698a21: 48 89 e5 mov %rsp,%rbp 0.00 : 698a24: 48 89 5d d8 mov %rbx,-0x28(%rbp) 20.00 : 698a28: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 698a2c: 49 89 fc mov %rdi,%r12 0.00 : 698a2f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 698a33: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 698a37: 49 89 ce mov %rcx,%r14 0.00 : 698a3a: 4c 89 7d f8 mov %r15,-0x8(%rbp) : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_FAIL); 0.00 : 698a3e: 41 0f be c8 movsbl %r8b,%ecx : * use mdextend(). : */ : void : mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 698a42: 48 83 ec 50 sub $0x50,%rsp 0.00 : 698a46: 45 89 c7 mov %r8d,%r15d 0.00 : 698a49: 89 75 cc mov %esi,-0x34(%rbp) : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_FAIL); 0.00 : 698a4c: 45 31 c0 xor %r8d,%r8d : * use mdextend(). : */ : void : mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 698a4f: 89 55 b0 mov %edx,-0x50(%rbp) : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_FAIL); 0.00 : 698a52: e8 79 f9 ff ff callq 6983d0 <_mdfd_getseg> : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698a57: 8b 5d b0 mov -0x50(%rbp),%ebx : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) 0.00 : 698a5a: 8b 38 mov (%rax),%edi 0.00 : 698a5c: 31 d2 xor %edx,%edx : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_FAIL); 0.00 : 698a5e: 49 89 c5 mov %rax,%r13 : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698a61: 81 e3 ff ff 01 00 and $0x1ffff,%ebx 0.00 : 698a67: 48 c1 e3 0d shl $0xd,%rbx : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) 0.00 : 698a6b: 48 89 de mov %rbx,%rsi 0.00 : 698a6e: e8 1d 10 fe ff callq 679a90 0.00 : 698a73: 48 39 d8 cmp %rbx,%rax 0.00 : 698a76: 0f 85 cf 00 00 00 jne 698b4b : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not seek to block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : : nbytes = FileWrite(v->mdfd_vfd, buffer, BLCKSZ); 0.00 : 698a7c: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698a80: ba 00 20 00 00 mov $0x2000,%edx 0.00 : 698a85: 4c 89 f6 mov %r14,%rsi 0.00 : 698a88: e8 c3 11 fe ff callq 679c50 : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend, : nbytes, : BLCKSZ); : : if (nbytes != BLCKSZ) 0.00 : 698a8d: 3d 00 20 00 00 cmp $0x2000,%eax : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not seek to block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : : nbytes = FileWrite(v->mdfd_vfd, buffer, BLCKSZ); 0.00 : 698a92: 89 c3 mov %eax,%ebx : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend, : nbytes, : BLCKSZ); : : if (nbytes != BLCKSZ) 0.00 : 698a94: 74 6a je 698b00 : { : if (nbytes < 0) 0.00 : 698a96: 85 c0 test %eax,%eax 0.00 : 698a98: 0f 89 ea 00 00 00 jns 698b88 : ereport(ERROR, 0.00 : 698a9e: 45 31 c0 xor %r8d,%r8d 0.00 : 698aa1: b9 d1 e3 8a 00 mov $0x8ae3d1,%ecx 0.00 : 698aa6: ba 13 03 00 00 mov $0x313,%edx 0.00 : 698aab: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698ab0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698ab5: e8 06 20 0e 00 callq 77aac0 0.00 : 698aba: 84 c0 test %al,%al 0.00 : 698abc: 75 0a jne 698ac8 : (errcode_for_file_access(), : errmsg("could not write block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 698abe: e8 0d 0a dd ff callq 4694d0 0.00 : 698ac3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : BLCKSZ); : : if (nbytes != BLCKSZ) : { : if (nbytes < 0) : ereport(ERROR, 0.00 : 698ac8: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698acc: e8 df f7 fd ff callq 6782b0 0.00 : 698ad1: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 698ad4: 48 89 c2 mov %rax,%rdx 0.00 : 698ad7: bf 70 e2 8a 00 mov $0x8ae270,%edi 0.00 : 698adc: 31 c0 xor %eax,%eax 0.00 : 698ade: e8 bd 3d 0e 00 callq 77c8a0 0.00 : 698ae3: 89 c3 mov %eax,%ebx 0.00 : 698ae5: e8 06 40 0e 00 callq 77caf0 0.00 : 698aea: 89 de mov %ebx,%esi 0.00 : 698aec: 89 c7 mov %eax,%edi 0.00 : 698aee: 31 c0 xor %eax,%eax 0.00 : 698af0: e8 eb 1a 0e 00 callq 77a5e0 : (errcode_for_file_access(), : errmsg("could not write block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 698af5: e8 d6 09 dd ff callq 4694d0 0.00 : 698afa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : FilePathName(v->mdfd_vfd), : nbytes, BLCKSZ), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:798 10.00 : 698b00: 45 84 ff test %r15b,%r15b 0.00 : 698b03: 75 08 jne 698b0d 0.00 : 698b05: 41 83 7c 24 0c ff cmpl $0xffffffff,0xc(%r12) 10.00 : 698b0b: 74 1b je 698b28 : register_dirty_segment(reln, forknum, v); : } 0.00 : 698b0d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 698b11: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 698b15: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 698b19: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 698b1d: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 698b21: c9 leaveq 0.00 : 698b22: c3 retq 0.00 : 698b23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : nbytes, BLCKSZ), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) : register_dirty_segment(reln, forknum, v); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:799 10.00 : 698b28: 4c 89 ea mov %r13,%rdx 0.00 : 698b2b: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 698b2e: 4c 89 e7 mov %r12,%rdi : } 0.00 : 698b31: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 698b35: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 698b39: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 698b3d: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 698b41: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 698b45: c9 leaveq : nbytes, BLCKSZ), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) : register_dirty_segment(reln, forknum, v); 10.00 : 698b46: e9 05 ed ff ff jmpq 697850 : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) : ereport(ERROR, 0.00 : 698b4b: 45 31 c0 xor %r8d,%r8d 0.00 : 698b4e: b9 d1 e3 8a 00 mov $0x8ae3d1,%ecx 0.00 : 698b53: ba 01 03 00 00 mov $0x301,%edx 0.00 : 698b58: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698b5d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698b62: e8 59 1f 0e 00 callq 77aac0 0.00 : 698b67: 84 c0 test %al,%al 0.00 : 698b69: 0f 84 4f ff ff ff je 698abe 0.00 : 698b6f: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698b73: e8 38 f7 fd ff callq 6782b0 0.00 : 698b78: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 698b7b: 48 89 c2 mov %rax,%rdx 0.00 : 698b7e: bf 18 e1 8a 00 mov $0x8ae118,%edi 0.00 : 698b83: e9 54 ff ff ff jmpq 698adc : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not write block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 698b88: 45 31 c0 xor %r8d,%r8d 0.00 : 698b8b: b9 d1 e3 8a 00 mov $0x8ae3d1,%ecx 0.00 : 698b90: ba 1b 03 00 00 mov $0x31b,%edx 0.00 : 698b95: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698b9a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698b9f: e8 1c 1f 0e 00 callq 77aac0 0.00 : 698ba4: 84 c0 test %al,%al 0.00 : 698ba6: 0f 84 12 ff ff ff je 698abe 0.00 : 698bac: bf a6 df 8a 00 mov $0x8adfa6,%edi 0.00 : 698bb1: 31 c0 xor %eax,%eax 0.00 : 698bb3: e8 e8 30 0e 00 callq 77bca0 0.00 : 698bb8: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698bbc: 41 89 c4 mov %eax,%r12d 0.00 : 698bbf: e8 ec f6 fd ff callq 6782b0 0.00 : 698bc4: 8b 75 b0 mov -0x50(%rbp),%esi 0.00 : 698bc7: 89 d9 mov %ebx,%ecx 0.00 : 698bc9: 48 89 c2 mov %rax,%rdx 0.00 : 698bcc: 41 b8 00 20 00 00 mov $0x2000,%r8d 0.00 : 698bd2: bf a0 e2 8a 00 mov $0x8ae2a0,%edi 0.00 : 698bd7: 31 c0 xor %eax,%eax 0.00 : 698bd9: e8 c2 3c 0e 00 callq 77c8a0 0.00 : 698bde: bf c5 10 00 00 mov $0x10c5,%edi 0.00 : 698be3: 89 c3 mov %eax,%ebx 0.00 : 698be5: e8 66 41 0e 00 callq 77cd50 0.00 : 698bea: 44 89 e2 mov %r12d,%edx 0.00 : 698bed: 89 c7 mov %eax,%edi 0.00 : 698bef: 89 de mov %ebx,%esi 0.00 : 698bf1: 31 c0 xor %eax,%eax 0.00 : 698bf3: e8 e8 19 0e 00 callq 77a5e0 0.00 : 698bf8: e9 c1 fe ff ff jmpq 698abe Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ---------------------------------------------- 13.33 ??:0 13.33 ??:0 13.33 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 6.67 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000000f0 : ??:0 46.67 : f0: 48 83 ec 48 sub $0x48,%rsp 0.00 : 124: 48 89 5c 24 20 48 mov 0x48000000(%rdi),%ss 0.00 : 12a: 89 6c movslq %esi,%edx 0.00 : 12c: 24 28 48 89 fb 4c 89 add 0xe0(%rdi),%rdx 6.67 : 133: 64 24 30 test %rdx,%rdx 0.00 : 136: 4c 89 je 1a0 6.67 : 138: 6c 24 38 89 f5 4c testw $0xff1f,0x6(%rdx) 13.33 : 13e: 89 74 jne 1a0 6.67 : 140: 24 40 8b movzbl (%rdx),%eax 0.00 : 143: 47 68 49 and $0xf,%eax 0.00 : 146: 89 d4 2b 47 lea 0x0(%rbp,%rax,4),%eax 0.00 : 14a: 6c 49 89 cd mov %eax,(%r12) 0.00 : 14e: 29 f0 83 f8 movzbl 0x9(%rdx),%eax 0.00 : 152: 13 0f 8e 97 mov %al,0x0(%r13) 0.00 : 156: 00 00 00 48 mov 0x68(%rbx),%r8d 0.00 : 15a: 63 d6 48 03 97 mov $0x1,%eax 0.00 : 15f: e0 00 00 00 cmp %r8d,(%r12) 0.00 : 163: 48 85 jbe 1a2 0.00 : 165: d2 74 68 66 f7 42 06 cmpb $0x0,0x0(%rip) # 16c 0.00 : 16c: 1f ff 75 60 0f mov $0xffffffff,%eax 0.00 : 171: b6 02 je 1a2 0.00 : 173: 83 e0 0f movzbl (%rdx),%ecx 0.00 : 176: 8d 44 85 00 41 89 04 mov $0x0,%rsi 0.00 : 17d: 24 0f mov %ebp,%edx 0.00 : 17f: b6 42 09 41 88 45 00 mov $0x0,%rdi 0.00 : 186: 44 8b xor %eax,%eax 0.00 : 188: 43 68 b8 and $0xf,%ecx 0.00 : 18b: 01 00 00 shl $0x2,%ecx 0.00 : 18e: 00 45 39 04 24 callq 193 0.00 : 193: 76 3d 80 3d 00 mov $0xffffffff,%eax 0.00 : 198: 00 00 jmp 1a2 0.00 : 19a: 00 00 b8 ff ff ff nopw 0x0(%rax,%rax,1) 0.00 : 1a0: ff 74 xor %eax,%eax 6.67 : 1a2: 2f 0f b6 0a 48 mov 0x20(%rsp),%rbx 6.67 : 1a7: c7 c6 00 00 00 mov 0x28(%rsp),%rbp 0.00 : 1ac: 00 89 ea 48 c7 mov 0x30(%rsp),%r12 0.00 : 1b1: c7 00 00 00 00 mov 0x38(%rsp),%r13 6.67 : 1b6: 31 c0 83 e1 0f mov 0x40(%rsp),%r14 0.00 : 1bb: c1 e1 02 e8 add $0x48,%rsp 0.00 : 1bf: 00 retq 0.00 : 1c0: 00 00 00 b8 ff mov $0x14,%ecx 0.00 : 1c5: ff ff ff mov %rsp,%rdx 0.00 : 1c8: eb 08 66 0f 1f callq 1cd 0.00 : 1cd: 44 00 test %eax,%eax 0.00 : 1cf: 00 31 js 1a0 0.00 : 1d1: c0 48 8b mov %rsp,%rdx 0.00 : 1d4: 5c 24 20 48 8b jmpq 133 : 1d9: 6c 24 28 4c 8b 64 24 nopl 0x0(%rax) : 1e0: 30 push %rbp : 1e1: 4c 8b 6c add $0xc,%esi : 1e4: 24 push %rbx : 1e5: 38 4c 8b mov %rdx,%rbx : 1e8: 74 24 40 48 sub $0x18,%rsp : 1ec: 83 c4 48 mov 0x68(%rdi),%eax : 1ef: c3 b9 14 sub 0x6c(%rdi),%eax : 1f2: 00 00 sub %esi,%eax : 1f4: 00 48 89 cmp $0x7,%eax : 1f7: e2 e8 jle 220 : 1f9: 00 00 00 movslq %esi,%rdx : 1fc: 00 85 c0 78 cf 48 89 add 0xe0(%rdi),%rdx : 203: e2 e9 5a test %rdx,%rdx : 206: ff ff je 240 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_mangle.ko ---------------------------------------------- 15.38 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 7.69 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_mangle.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000080 : ??:0 46.15 : 80: 48 83 ec 38 sub $0x38,%rsp 0.00 : b4: 83 ff 03 48 89 5c mov 0x460(%rdx),%eax 0.00 : ba: 24 08 mov %edi,%esi 0.00 : bc: 48 89 6c 24 10 48 89 mov 0x250(%rax),%r8 7.69 : c3: f3 4c 89 mov %rbx,%rdi 0.00 : c6: 64 24 18 4c 89 mov 0x10(%rsp),%rbp 0.00 : cb: 6c 24 20 4c 89 mov 0x8(%rsp),%rbx 0.00 : d0: 74 24 28 4c 89 mov 0x18(%rsp),%r12 0.00 : d5: 7c 24 30 74 46 mov 0x20(%rsp),%r13 0.00 : da: 83 ff 04 0f 84 mov 0x28(%rsp),%r14 0.00 : df: fd 00 00 00 48 mov 0x30(%rsp),%r15 0.00 : e4: 8b 82 60 04 add $0x38,%rsp 0.00 : e8: 00 00 89 fe 4c jmpq ed 0.00 : ed: 8b 80 50 nopl (%rax) 0.00 : f0: 02 00 00 48 cmpl $0x13,0x68(%rsi) 0.00 : f4: 89 df 48 8b 6c 24 jbe 180 0.00 : fa: 10 48 8b 5c 24 08 mov 0xc4(%rsi),%edx 7.69 : 100: 4c 8b 64 24 18 4c 8b add 0xd8(%rsi),%rdx 0.00 : 107: 6c 24 20 movzbl (%rdx),%eax 7.69 : 10a: 4c 8b 74 and $0xf,%eax 0.00 : 10d: 24 28 4c shl $0x2,%eax 7.69 : 110: 8b 7c 24 cmp $0x13,%eax 0.00 : 113: 30 48 jbe 180 0.00 : 115: 83 c4 38 e9 00 00 00 mov 0x460(%rcx),%rax 0.00 : 11c: 00 0f 1f 00 83 7e 68 mov 0xb8(%rsi),%r15d 0.00 : 123: 13 0f 86 mov %rbx,%rdi 0.00 : 126: 86 00 00 00 mov 0xc(%rdx),%r12d 0.00 : 12a: 8b 96 c4 00 mov 0x10(%rdx),%r13d 0.00 : 12e: 00 00 48 03 96 mov $0x3,%esi 0.00 : 133: d8 00 00 00 0f movzbl 0x1(%rdx),%r14d 0.00 : 138: b6 02 xor %edx,%edx 0.00 : 13a: 83 e0 0f c1 e0 02 83 mov 0x250(%rax),%r8 0.00 : 141: f8 13 76 6b 48 callq 146 0.00 : 146: 8b 81 test %eax,%eax 0.00 : 148: 60 04 mov %eax,%ebp 0.00 : 14a: 00 00 je 185 0.00 : 14c: 44 8b be cmp $0x2,%eax 0.00 : 14f: b8 00 je 185 0.00 : 151: 00 00 48 89 df 44 mov 0xc4(%rbx),%eax 7.69 : 157: 8b 62 0c 44 8b 6a 10 add 0xd8(%rbx),%rax 0.00 : 15e: be 03 00 00 cmp 0xc(%rax),%r12d 0.00 : 162: 00 44 jne 16a 0.00 : 164: 0f b6 72 01 cmp 0x10(%rax),%r13d 0.00 : 168: 31 d2 je 1c8 0.00 : 16a: 4c 8b xor %esi,%esi 0.00 : 16c: 80 50 02 mov %rbx,%rdi 0.00 : 16f: 00 00 e8 00 00 callq 174 0.00 : 174: 00 00 test %eax,%eax 0.00 : 176: 85 c0 89 c5 74 mov $0x0,%eax 0.00 : 17b: 39 83 f8 cmovne %eax,%ebp 0.00 : 17e: 02 74 jmp 185 0.00 : 180: 34 8b 83 c4 00 mov $0x1,%ebp 0.00 : 185: 00 00 mov %ebp,%eax 0.00 : 187: 48 03 83 d8 00 mov 0x8(%rsp),%rbx 7.69 : 18c: 00 00 44 3b 60 mov 0x10(%rsp),%rbp 0.00 : 191: 0c 75 06 44 3b mov 0x18(%rsp),%r12 0.00 : 196: 68 10 74 5e 31 mov 0x20(%rsp),%r13 0.00 : 19b: f6 48 89 df e8 mov 0x28(%rsp),%r14 0.00 : 1a0: 00 00 00 00 85 mov 0x30(%rsp),%r15 0.00 : 1a5: c0 b8 00 00 add $0x38,%rsp 0.00 : 1a9: 00 retq 0.00 : 1aa: 00 0f 45 e8 eb 05 nopw 0x0(%rax,%rax,1) 7.69 : 1b0: bd 01 00 00 00 89 e8 mov 0x460(%rcx),%rax 0.00 : 1b7: 48 8b 5c 24 08 mov $0x4,%esi 0.00 : 1bc: 48 8b 6c 24 10 4c 8b mov 0x250(%rax),%r8 0.00 : 1c3: 64 24 18 4c 8b jmpq c3 0.00 : 1c8: 6c 24 20 4c 8b 74 24 cmp 0xb8(%rbx),%r15d 0.00 : 1cf: 28 4c jne 16a 0.00 : 1d1: 8b 7c 24 30 cmp 0x1(%rax),%r14b 0.00 : 1d5: 48 83 jne 16a 0.00 : 1d7: c4 38 jmp 185 : 1d9: c3 66 0f nopl (%rax) : 1dc: Address 0x00000000000001dc is out of bounds. : Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469850 : ??:0 100.00 : 469850: ff 25 3a da 6f 00 jmpq *0x6fda3a(%rip) # b67290 <_GLOBAL_OFFSET_TABLE_+0x290> 0.00 : 469856: 68 4f 00 00 00 pushq $0x4f 0.00 : 46985b: e9 f0 fa ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.22 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:124 22.22 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:124 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:122 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:112 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:112 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:124 11.11 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:127 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049deb0 : : */ : static void : GetVisibilityMapPins(Relation relation, Buffer buffer1, Buffer buffer2, : BlockNumber block1, BlockNumber block2, : Buffer *vmbuffer1, Buffer *vmbuffer2) : { 0.00 : 49deb0: 55 push %rbp : Assert(buffer2 == InvalidBuffer || buffer1 <= buffer2); : : while (1) : { : /* Figure out which pins we need but don't have. */ : need_to_pin_buffer1 = PageIsAllVisible(BufferGetPage(buffer1)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:122 11.11 : 49deb1: 89 f0 mov %esi,%eax 0.00 : 49deb3: f7 d0 not %eax : */ : static void : GetVisibilityMapPins(Relation relation, Buffer buffer1, Buffer buffer2, : BlockNumber block1, BlockNumber block2, : Buffer *vmbuffer1, Buffer *vmbuffer2) : { 0.00 : 49deb5: 48 89 e5 mov %rsp,%rbp 0.00 : 49deb8: 41 57 push %r15 : Assert(buffer2 == InvalidBuffer || buffer1 <= buffer2); : : while (1) : { : /* Figure out which pins we need but don't have. */ : need_to_pin_buffer1 = PageIsAllVisible(BufferGetPage(buffer1)) 0.00 : 49deba: 48 98 cltq 0.00 : 49debc: 48 c1 e0 03 shl $0x3,%rax : */ : static void : GetVisibilityMapPins(Relation relation, Buffer buffer1, Buffer buffer2, : BlockNumber block1, BlockNumber block2, : Buffer *vmbuffer1, Buffer *vmbuffer2) : { 0.00 : 49dec0: 41 56 push %r14 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:112 11.11 : 49dec2: 41 55 push %r13 0.00 : 49dec4: 41 54 push %r12 0.00 : 49dec6: 41 89 f4 mov %esi,%r12d 0.00 : 49dec9: 53 push %rbx 0.00 : 49deca: 89 d3 mov %edx,%ebx 0.00 : 49decc: 48 83 ec 38 sub $0x38,%rsp : Assert(buffer2 == InvalidBuffer || buffer1 <= buffer2); : : while (1) : { : /* Figure out which pins we need but don't have. */ : need_to_pin_buffer1 = PageIsAllVisible(BufferGetPage(buffer1)) 0.00 : 49ded0: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 49ded4: 41 8d 44 24 ff lea -0x1(%r12),%eax : */ : static void : GetVisibilityMapPins(Relation relation, Buffer buffer1, Buffer buffer2, : BlockNumber block1, BlockNumber block2, : Buffer *vmbuffer1, Buffer *vmbuffer2) : { 0.00 : 49ded9: 48 89 7d b0 mov %rdi,-0x50(%rbp) 0.00 : 49dedd: 89 4d ac mov %ecx,-0x54(%rbp) : Assert(buffer2 == InvalidBuffer || buffer1 <= buffer2); : : while (1) : { : /* Figure out which pins we need but don't have. */ : need_to_pin_buffer1 = PageIsAllVisible(BufferGetPage(buffer1)) 0.00 : 49dee0: 48 98 cltq : */ : static void : GetVisibilityMapPins(Relation relation, Buffer buffer1, Buffer buffer2, : BlockNumber block1, BlockNumber block2, : Buffer *vmbuffer1, Buffer *vmbuffer2) : { 0.00 : 49dee2: 44 89 45 a8 mov %r8d,-0x58(%rbp) 11.11 : 49dee6: 4c 89 4d a0 mov %r9,-0x60(%rbp) : Assert(buffer2 == InvalidBuffer || buffer1 <= buffer2); : : while (1) : { : /* Figure out which pins we need but don't have. */ : need_to_pin_buffer1 = PageIsAllVisible(BufferGetPage(buffer1)) 0.00 : 49deea: 48 c1 e0 0d shl $0xd,%rax 0.00 : 49deee: 48 89 45 c0 mov %rax,-0x40(%rbp) : && !visibilitymap_pin_ok(block1, *vmbuffer1); : need_to_pin_buffer2 = buffer2 != InvalidBuffer 0.00 : 49def2: 89 d0 mov %edx,%eax 0.00 : 49def4: f7 d0 not %eax 0.00 : 49def6: 48 98 cltq 0.00 : 49def8: 48 c1 e0 03 shl $0x3,%rax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:124 22.22 : 49defc: 48 89 45 c8 mov %rax,-0x38(%rbp) 22.22 : 49df00: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 49df03: 48 98 cltq 0.00 : 49df05: 48 c1 e0 0d shl $0xd,%rax 11.11 : 49df09: 48 89 45 d0 mov %rax,-0x30(%rbp) : Assert(buffer2 == InvalidBuffer || buffer1 <= buffer2); : : while (1) : { : /* Figure out which pins we need but don't have. */ : need_to_pin_buffer1 = PageIsAllVisible(BufferGetPage(buffer1)) 0.00 : 49df0d: 45 85 e4 test %r12d,%r12d 0.00 : 49df10: 0f 88 4a 01 00 00 js 49e060 0.00 : 49df16: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 49df1a: 48 03 05 d7 1b 72 00 add 0x721bd7(%rip),%rax # bbfaf8 0.00 : 49df21: f6 40 0a 04 testb $0x4,0xa(%rax) 0.00 : 49df25: 0f 85 b5 00 00 00 jne 49dfe0 0.00 : 49df2b: 45 31 f6 xor %r14d,%r14d : && !visibilitymap_pin_ok(block1, *vmbuffer1); : need_to_pin_buffer2 = buffer2 != InvalidBuffer 0.00 : 49df2e: 83 fb 00 cmp $0x0,%ebx 0.00 : 49df31: 74 1b je 49df4e 0.00 : 49df33: 0f 8c 67 01 00 00 jl 49e0a0 0.00 : 49df39: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 49df3d: 48 03 05 b4 1b 72 00 add 0x721bb4(%rip),%rax # bbfaf8 0.00 : 49df44: f6 40 0a 04 testb $0x4,0xa(%rax) 0.00 : 49df48: 0f 85 2a 01 00 00 jne 49e078 0.00 : 49df4e: 45 31 ed xor %r13d,%r13d : && PageIsAllVisible(BufferGetPage(buffer2)) : && !visibilitymap_pin_ok(block2, *vmbuffer2); : if (!need_to_pin_buffer1 && !need_to_pin_buffer2) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:127 11.11 : 49df51: 44 89 ea mov %r13d,%edx 0.00 : 49df54: 44 08 f2 or %r14b,%dl 0.00 : 49df57: 74 48 je 49dfa1 : return; : : /* We must unlock both buffers before doing any I/O. */ : LockBuffer(buffer1, BUFFER_LOCK_UNLOCK); 0.00 : 49df59: 31 f6 xor %esi,%esi 0.00 : 49df5b: 44 89 e7 mov %r12d,%edi 0.00 : 49df5e: e8 ad 67 1d 00 callq 674710 : if (buffer2 != InvalidBuffer && buffer2 != buffer1) 0.00 : 49df63: 85 db test %ebx,%ebx 0.00 : 49df65: 0f 95 c2 setne %dl 0.00 : 49df68: 44 39 e3 cmp %r12d,%ebx 0.00 : 49df6b: 0f 95 c0 setne %al 0.00 : 49df6e: 20 c2 and %al,%dl 0.00 : 49df70: 41 89 d7 mov %edx,%r15d 0.00 : 49df73: 0f 85 d7 00 00 00 jne 49e050 : LockBuffer(buffer2, BUFFER_LOCK_UNLOCK); : : /* Get pins. */ : if (need_to_pin_buffer1) 0.00 : 49df79: 45 84 f6 test %r14b,%r14b 0.00 : 49df7c: 0f 85 b6 00 00 00 jne 49e038 : visibilitymap_pin(relation, block1, vmbuffer1); : if (need_to_pin_buffer2) 0.00 : 49df82: 45 84 ed test %r13b,%r13b 0.00 : 49df85: 0f 85 95 00 00 00 jne 49e020 : visibilitymap_pin(relation, block2, vmbuffer2); : : /* Relock buffers. */ : LockBuffer(buffer1, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49df8b: be 02 00 00 00 mov $0x2,%esi 0.00 : 49df90: 44 89 e7 mov %r12d,%edi 0.00 : 49df93: e8 78 67 1d 00 callq 674710 : if (buffer2 != InvalidBuffer && buffer2 != buffer1) 0.00 : 49df98: 45 84 ff test %r15b,%r15b 0.00 : 49df9b: 75 6b jne 49e008 : * If there are two buffers involved and we pinned just one of them, : * it's possible that the second one became all-visible while we were : * busy pinning the first one. If it looks like that's a possible : * scenario, we'll need to make a second pass through this loop. : */ : if (buffer2 == InvalidBuffer || buffer1 == buffer2 0.00 : 49df9d: 85 db test %ebx,%ebx 0.00 : 49df9f: 75 0f jne 49dfb0 : || (need_to_pin_buffer1 && need_to_pin_buffer2)) : break; : } : } 0.00 : 49dfa1: 48 83 c4 38 add $0x38,%rsp 0.00 : 49dfa5: 5b pop %rbx 0.00 : 49dfa6: 41 5c pop %r12 0.00 : 49dfa8: 41 5d pop %r13 0.00 : 49dfaa: 41 5e pop %r14 0.00 : 49dfac: 41 5f pop %r15 0.00 : 49dfae: c9 leaveq 0.00 : 49dfaf: c3 retq : * If there are two buffers involved and we pinned just one of them, : * it's possible that the second one became all-visible while we were : * busy pinning the first one. If it looks like that's a possible : * scenario, we'll need to make a second pass through this loop. : */ : if (buffer2 == InvalidBuffer || buffer1 == buffer2 0.00 : 49dfb0: 41 39 dc cmp %ebx,%r12d 0.00 : 49dfb3: 74 ec je 49dfa1 0.00 : 49dfb5: 45 84 f6 test %r14b,%r14b 0.00 : 49dfb8: 0f 84 4f ff ff ff je 49df0d 0.00 : 49dfbe: 45 84 ed test %r13b,%r13b 0.00 : 49dfc1: 0f 84 46 ff ff ff je 49df0d : || (need_to_pin_buffer1 && need_to_pin_buffer2)) : break; : } : } 0.00 : 49dfc7: 48 83 c4 38 add $0x38,%rsp 0.00 : 49dfcb: 5b pop %rbx 0.00 : 49dfcc: 41 5c pop %r12 0.00 : 49dfce: 41 5d pop %r13 0.00 : 49dfd0: 41 5e pop %r14 0.00 : 49dfd2: 41 5f pop %r15 0.00 : 49dfd4: c9 leaveq 0.00 : 49dfd5: c3 retq 0.00 : 49dfd6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 49dfdd: 00 00 00 : Assert(buffer2 == InvalidBuffer || buffer1 <= buffer2); : : while (1) : { : /* Figure out which pins we need but don't have. */ : need_to_pin_buffer1 = PageIsAllVisible(BufferGetPage(buffer1)) 0.00 : 49dfe0: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 49dfe4: 8b 7d ac mov -0x54(%rbp),%edi 0.00 : 49dfe7: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 49dfed: 8b 30 mov (%rax),%esi 0.00 : 49dfef: e8 7c 64 00 00 callq 4a4470 0.00 : 49dff4: 84 c0 test %al,%al 0.00 : 49dff6: 0f 84 32 ff ff ff je 49df2e 0.00 : 49dffc: e9 2a ff ff ff jmpq 49df2b 0.00 : 49e001: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : visibilitymap_pin(relation, block2, vmbuffer2); : : /* Relock buffers. */ : LockBuffer(buffer1, BUFFER_LOCK_EXCLUSIVE); : if (buffer2 != InvalidBuffer && buffer2 != buffer1) : LockBuffer(buffer2, BUFFER_LOCK_EXCLUSIVE); 0.00 : 49e008: be 02 00 00 00 mov $0x2,%esi 0.00 : 49e00d: 89 df mov %ebx,%edi 0.00 : 49e00f: 90 nop 0.00 : 49e010: e8 fb 66 1d 00 callq 674710 0.00 : 49e015: eb 86 jmp 49df9d 0.00 : 49e017: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 49e01e: 00 00 : : /* Get pins. */ : if (need_to_pin_buffer1) : visibilitymap_pin(relation, block1, vmbuffer1); : if (need_to_pin_buffer2) : visibilitymap_pin(relation, block2, vmbuffer2); 0.00 : 49e020: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 49e024: 8b 75 a8 mov -0x58(%rbp),%esi 0.00 : 49e027: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 49e02b: e8 90 64 00 00 callq 4a44c0 0.00 : 49e030: e9 56 ff ff ff jmpq 49df8b 0.00 : 49e035: 0f 1f 00 nopl (%rax) : if (buffer2 != InvalidBuffer && buffer2 != buffer1) : LockBuffer(buffer2, BUFFER_LOCK_UNLOCK); : : /* Get pins. */ : if (need_to_pin_buffer1) : visibilitymap_pin(relation, block1, vmbuffer1); 0.00 : 49e038: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 49e03c: 8b 75 ac mov -0x54(%rbp),%esi 0.00 : 49e03f: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 49e043: e8 78 64 00 00 callq 4a44c0 0.00 : 49e048: e9 35 ff ff ff jmpq 49df82 0.00 : 49e04d: 0f 1f 00 nopl (%rax) : return; : : /* We must unlock both buffers before doing any I/O. */ : LockBuffer(buffer1, BUFFER_LOCK_UNLOCK); : if (buffer2 != InvalidBuffer && buffer2 != buffer1) : LockBuffer(buffer2, BUFFER_LOCK_UNLOCK); 0.00 : 49e050: 31 f6 xor %esi,%esi 0.00 : 49e052: 89 df mov %ebx,%edi 0.00 : 49e054: e8 b7 66 1d 00 callq 674710 0.00 : 49e059: e9 1b ff ff ff jmpq 49df79 0.00 : 49e05e: 66 90 xchg %ax,%ax : Assert(buffer2 == InvalidBuffer || buffer1 <= buffer2); : : while (1) : { : /* Figure out which pins we need but don't have. */ : need_to_pin_buffer1 = PageIsAllVisible(BufferGetPage(buffer1)) 0.00 : 49e060: 48 8b 05 b1 f0 6d 00 mov 0x6df0b1(%rip),%rax # b7d118 0.00 : 49e067: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 49e06b: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 49e06f: e9 ad fe ff ff jmpq 49df21 0.00 : 49e074: 0f 1f 40 00 nopl 0x0(%rax) : && !visibilitymap_pin_ok(block1, *vmbuffer1); : need_to_pin_buffer2 = buffer2 != InvalidBuffer 0.00 : 49e078: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 49e07c: 8b 7d a8 mov -0x58(%rbp),%edi 0.00 : 49e07f: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 49e085: 8b 30 mov (%rax),%esi 0.00 : 49e087: e8 e4 63 00 00 callq 4a4470 0.00 : 49e08c: 84 c0 test %al,%al 0.00 : 49e08e: 0f 84 bd fe ff ff je 49df51 0.00 : 49e094: e9 b5 fe ff ff jmpq 49df4e 0.00 : 49e099: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 49e0a0: 48 8b 05 71 f0 6d 00 mov 0x6df071(%rip),%rax # b7d118 0.00 : 49e0a7: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 49e0ab: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 49e0af: e9 90 fe ff ff jmpq 49df44 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 44.44 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:418 22.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:418 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:400 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:410 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:417 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067bd70 : : /* : * Returns the physical block number an FSM page : */ : static BlockNumber : fsm_logical_to_physical(FSMAddress addr) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:400 11.11 : 67bd70: 55 push %rbp : /* : * Calculate the logical page number of the first leaf page below the : * given page. : */ : leafno = addr.logpageno; : for (l = 0; l < addr.level; l++) /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:410 11.11 : 67bd71: 48 89 f9 mov %rdi,%rcx 0.00 : 67bd74: 31 c0 xor %eax,%eax 0.00 : 67bd76: 48 c1 e9 20 shr $0x20,%rcx 0.00 : 67bd7a: 85 ff test %edi,%edi : /* : * Returns the physical block number an FSM page : */ : static BlockNumber : fsm_logical_to_physical(FSMAddress addr) : { 0.00 : 67bd7c: 89 fe mov %edi,%esi 0.00 : 67bd7e: 48 89 e5 mov %rsp,%rbp : /* : * Calculate the logical page number of the first leaf page below the : * given page. : */ : leafno = addr.logpageno; : for (l = 0; l < addr.level; l++) 0.00 : 67bd81: 7e 12 jle 67bd95 0.00 : 67bd83: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 67bd88: 83 c0 01 add $0x1,%eax : leafno *= SlotsPerFSMPage; 0.00 : 67bd8b: 69 c9 e5 0f 00 00 imul $0xfe5,%ecx,%ecx : /* : * Calculate the logical page number of the first leaf page below the : * given page. : */ : leafno = addr.logpageno; : for (l = 0; l < addr.level; l++) 0.00 : 67bd91: 39 c6 cmp %eax,%esi 0.00 : 67bd93: 7f f3 jg 67bd88 : /* Count upper level nodes required to address the leaf page */ : pages = 0; : for (l = 0; l < FSM_TREE_DEPTH; l++) : { : pages += leafno + 1; : leafno /= SlotsPerFSMPage; 0.00 : 67bd95: 49 b9 5f d9 6d 96 75 movabs $0x406cb775966dd95f,%r9 0.00 : 67bd9c: b7 6c 40 0.00 : 67bd9f: 48 63 d1 movslq %ecx,%rdx : : /* Count upper level nodes required to address the leaf page */ : pages = 0; : for (l = 0; l < FSM_TREE_DEPTH; l++) : { : pages += leafno + 1; 0.00 : 67bda2: f7 d6 not %esi : leafno /= SlotsPerFSMPage; 0.00 : 67bda4: 4c 89 c8 mov %r9,%rax : */ : pages -= addr.level; : : /* Turn the page count into 0-based block number */ : return pages - 1; : } 0.00 : 67bda7: c9 leaveq : /* Count upper level nodes required to address the leaf page */ : pages = 0; : for (l = 0; l < FSM_TREE_DEPTH; l++) : { : pages += leafno + 1; : leafno /= SlotsPerFSMPage; /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:418 22.22 : 67bda8: 48 f7 e2 mul %rdx 0.00 : 67bdab: 4c 89 c8 mov %r9,%rax 0.00 : 67bdae: 48 89 d7 mov %rdx,%rdi 0.00 : 67bdb1: 48 c1 ef 0a shr $0xa,%rdi 0.00 : 67bdb5: 4c 63 c7 movslq %edi,%r8 0.00 : 67bdb8: 49 f7 e0 mul %r8 44.44 : 67bdbb: 49 89 d0 mov %rdx,%r8 : : /* Count upper level nodes required to address the leaf page */ : pages = 0; : for (l = 0; l < FSM_TREE_DEPTH; l++) : { : pages += leafno + 1; 0.00 : 67bdbe: 8d 54 0f 03 lea 0x3(%rdi,%rcx,1),%edx : leafno /= SlotsPerFSMPage; 0.00 : 67bdc2: 49 c1 e8 0a shr $0xa,%r8 : : /* Count upper level nodes required to address the leaf page */ : pages = 0; : for (l = 0; l < FSM_TREE_DEPTH; l++) : { : pages += leafno + 1; 0.00 : 67bdc6: 44 01 c2 add %r8d,%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:417 11.11 : 67bdc9: 8d 04 32 lea (%rdx,%rsi,1),%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:610 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:615 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:610 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:610 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:620 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:631 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:631 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:634 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:621 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067c580 : : * returned, -1 otherwise. : */ : static int : fsm_set_and_search(Relation rel, FSMAddress addr, uint16 slot, : uint8 newValue, uint8 minValue) : { 0.00 : 67c580: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:610 11.11 : 67c581: 49 89 f1 mov %rsi,%r9 : Buffer buf; : Page page; : int newslot = -1; : : buf = fsm_readbuf(rel, addr, true); /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:615 11.11 : 67c584: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 67c58b: ff ff ff 0.00 : 67c58e: 49 21 c1 and %rax,%r9 : * returned, -1 otherwise. : */ : static int : fsm_set_and_search(Relation rel, FSMAddress addr, uint16 slot, : uint8 newValue, uint8 minValue) : { 0.00 : 67c591: 48 89 e5 mov %rsp,%rbp 0.00 : 67c594: 4c 89 75 f0 mov %r14,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:610 11.11 : 67c598: 41 89 f6 mov %esi,%r14d : Buffer buf; : Page page; : int newslot = -1; : : buf = fsm_readbuf(rel, addr, true); 0.00 : 67c59b: 89 f6 mov %esi,%esi 0.00 : 67c59d: 4c 09 ce or %r9,%rsi : * returned, -1 otherwise. : */ : static int : fsm_set_and_search(Relation rel, FSMAddress addr, uint16 slot, : uint8 newValue, uint8 minValue) : { 0.00 : 67c5a0: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 67c5a4: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 67c5a8: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 67c5ac: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 67c5b0: 41 89 d5 mov %edx,%r13d 0.00 : 67c5b3: 48 83 ec 30 sub $0x30,%rsp : Buffer buf; : Page page; : int newslot = -1; : : buf = fsm_readbuf(rel, addr, true); 0.00 : 67c5b7: ba 01 00 00 00 mov $0x1,%edx : * returned, -1 otherwise. : */ : static int : fsm_set_and_search(Relation rel, FSMAddress addr, uint16 slot, : uint8 newValue, uint8 minValue) : { 11.11 : 67c5bc: 41 89 cc mov %ecx,%r12d 0.00 : 67c5bf: 45 89 c7 mov %r8d,%r15d : Buffer buf; : Page page; : int newslot = -1; : : buf = fsm_readbuf(rel, addr, true); 0.00 : 67c5c2: e8 39 f8 ff ff callq 67be00 : LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); 0.00 : 67c5c7: be 02 00 00 00 mov $0x2,%esi : { : Buffer buf; : Page page; : int newslot = -1; : : buf = fsm_readbuf(rel, addr, true); 0.00 : 67c5cc: 89 c3 mov %eax,%ebx : LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); 0.00 : 67c5ce: 89 c7 mov %eax,%edi 0.00 : 67c5d0: e8 3b 81 ff ff callq 674710 : : page = BufferGetPage(buf); 0.00 : 67c5d5: 85 db test %ebx,%ebx 0.00 : 67c5d7: 78 7f js 67c658 0.00 : 67c5d9: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 67c5dc: 48 63 f8 movslq %eax,%rdi 0.00 : 67c5df: 48 c1 e7 0d shl $0xd,%rdi 0.00 : 67c5e3: 48 03 3d 0e 35 54 00 add 0x54350e(%rip),%rdi # bbfaf8 : : if (fsm_set_avail(page, slot, newValue)) 0.00 : 67c5ea: 41 0f b6 d4 movzbl %r12b,%edx 0.00 : 67c5ee: 41 0f b7 f5 movzwl %r13w,%esi 0.00 : 67c5f2: e8 09 05 00 00 callq 67cb00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:620 11.11 : 67c5f7: 84 c0 test %al,%al 0.00 : 67c5f9: 75 4d jne 67c648 : MarkBufferDirtyHint(buf, false); : : if (minValue != 0) 0.00 : 67c5fb: 45 84 ff test %r15b,%r15b 0.00 : 67c5fe: 41 bc ff ff ff ff mov $0xffffffff,%r12d 0.00 : 67c604: 74 1b je 67c621 : { : /* Search while we still hold the lock */ : newslot = fsm_search_avail(buf, minValue, 0.00 : 67c606: 31 d2 xor %edx,%edx 0.00 : 67c608: 45 85 f6 test %r14d,%r14d 0.00 : 67c60b: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 67c60f: 0f 94 c2 sete %dl 0.00 : 67c612: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 67c617: 89 df mov %ebx,%edi 0.00 : 67c619: e8 92 05 00 00 callq 67cbb0 0.00 : 67c61e: 41 89 c4 mov %eax,%r12d : addr.level == FSM_BOTTOM_LEVEL, : true); : } : : UnlockReleaseBuffer(buf); /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:631 11.11 : 67c621: 89 df mov %ebx,%edi 11.11 : 67c623: e8 08 89 ff ff callq 674f30 : : return newslot; : } 0.00 : 67c628: 44 89 e0 mov %r12d,%eax 0.00 : 67c62b: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 67c62f: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 67c633: 4c 8b 6d e8 mov -0x18(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:634 11.11 : 67c637: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 67c63b: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 67c63f: c9 leaveq 0.00 : 67c640: c3 retq 0.00 : 67c641: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); : : page = BufferGetPage(buf); : : if (fsm_set_avail(page, slot, newValue)) : MarkBufferDirtyHint(buf, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:621 11.11 : 67c648: 31 f6 xor %esi,%esi 0.00 : 67c64a: 89 df mov %ebx,%edi 0.00 : 67c64c: e8 3f 83 ff ff callq 674990 0.00 : 67c651: eb a8 jmp 67c5fb 0.00 : 67c653: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : int newslot = -1; : : buf = fsm_readbuf(rel, addr, true); : LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); : : page = BufferGetPage(buf); 0.00 : 67c658: 89 d8 mov %ebx,%eax 0.00 : 67c65a: 48 8b 15 b7 0a 50 00 mov 0x500ab7(%rip),%rdx # b7d118 0.00 : 67c661: f7 d0 not %eax 0.00 : 67c663: 48 98 cltq 0.00 : 67c665: 48 8b 3c c2 mov (%rdx,%rax,8),%rdi 0.00 : 67c669: e9 7c ff ff ff jmpq 67c5ea Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1058 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1058 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1079 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1208 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1208 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1215 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1147 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1088 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000688670 : : * held at exit. : */ : static PROCLOCK * : SetupLockInTable(LockMethod lockMethodTable, PGPROC *proc, : const LOCKTAG *locktag, uint32 hashcode, LOCKMODE lockmode) : { 0.00 : 688670: 55 push %rbp 0.00 : 688671: 48 89 e5 mov %rsp,%rbp 0.00 : 688674: 48 89 5d d8 mov %rbx,-0x28(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1058 22.22 : 688678: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 68867c: 41 89 cc mov %ecx,%r12d 0.00 : 68867f: 4c 89 6d e8 mov %r13,-0x18(%rbp) 11.11 : 688683: 4c 89 75 f0 mov %r14,-0x10(%rbp) : bool found; : : /* : * Find or create a lock with this tag. : */ : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 688687: 4c 8d 6d cf lea -0x31(%rbp),%r13 : * held at exit. : */ : static PROCLOCK * : SetupLockInTable(LockMethod lockMethodTable, PGPROC *proc, : const LOCKTAG *locktag, uint32 hashcode, LOCKMODE lockmode) : { 0.00 : 68868b: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 68868f: 48 83 ec 60 sub $0x60,%rsp 0.00 : 688693: 48 89 7d a8 mov %rdi,-0x58(%rbp) : bool found; : : /* : * Find or create a lock with this tag. : */ : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 688697: 48 8b 3d 62 52 4f 00 mov 0x4f5262(%rip),%rdi # b7d900 : * held at exit. : */ : static PROCLOCK * : SetupLockInTable(LockMethod lockMethodTable, PGPROC *proc, : const LOCKTAG *locktag, uint32 hashcode, LOCKMODE lockmode) : { 0.00 : 68869e: 49 89 f6 mov %rsi,%r14 0.00 : 6886a1: 45 89 c7 mov %r8d,%r15d 0.00 : 6886a4: 48 89 d6 mov %rdx,%rsi : bool found; : : /* : * Find or create a lock with this tag. : */ : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 6886a7: 4d 89 e8 mov %r13,%r8 0.00 : 6886aa: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 6886af: 44 89 e2 mov %r12d,%edx 0.00 : 6886b2: e8 99 b9 0f 00 callq 784050 : (const void *) locktag, : hashcode, : HASH_ENTER_NULL, : &found); : if (!lock) 0.00 : 6886b7: 48 85 c0 test %rax,%rax : bool found; : : /* : * Find or create a lock with this tag. : */ : lock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash, 0.00 : 6886ba: 48 89 c3 mov %rax,%rbx : (const void *) locktag, : hashcode, : HASH_ENTER_NULL, : &found); : if (!lock) 0.00 : 6886bd: 0f 84 c5 01 00 00 je 688888 : return NULL; : : /* : * if it's a new lock object, initialize it : */ : if (!found) 0.00 : 6886c3: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1079 11.11 : 6886c7: 74 77 je 688740 : proclock_hashcode = ProcLockHashCode(&proclocktag, hashcode); : : /* : * Find or create a proclock entry with this tag : */ : proclock = (PROCLOCK *) hash_search_with_hash_value(LockMethodProcLockHash, 0.00 : 6886c9: 44 89 f2 mov %r14d,%edx 0.00 : 6886cc: 48 8b 3d 35 52 4f 00 mov 0x4f5235(%rip),%rdi # b7d908 0.00 : 6886d3: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 6886d7: c1 e2 04 shl $0x4,%edx 0.00 : 6886da: 4d 89 e8 mov %r13,%r8 0.00 : 6886dd: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 6886e2: 44 31 e2 xor %r12d,%edx : } : : /* : * Create the hash key for the proclock table. : */ : proclocktag.myLock = lock; 0.00 : 6886e5: 48 89 5d b0 mov %rbx,-0x50(%rbp) : proclocktag.myProc = proc; 0.00 : 6886e9: 4c 89 75 b8 mov %r14,-0x48(%rbp) : proclock_hashcode = ProcLockHashCode(&proclocktag, hashcode); : : /* : * Find or create a proclock entry with this tag : */ : proclock = (PROCLOCK *) hash_search_with_hash_value(LockMethodProcLockHash, 0.00 : 6886ed: e8 5e b9 0f 00 callq 784050 : (void *) &proclocktag, : proclock_hashcode, : HASH_ENTER_NULL, : &found); : if (!proclock) 0.00 : 6886f2: 48 85 c0 test %rax,%rax : proclock_hashcode = ProcLockHashCode(&proclocktag, hashcode); : : /* : * Find or create a proclock entry with this tag : */ : proclock = (PROCLOCK *) hash_search_with_hash_value(LockMethodProcLockHash, 0.00 : 6886f5: 49 89 c5 mov %rax,%r13 : (void *) &proclocktag, : proclock_hashcode, : HASH_ENTER_NULL, : &found); : if (!proclock) 0.00 : 6886f8: 0f 84 d2 01 00 00 je 6888d0 : } : : /* : * If new, initialize the new entry : */ : if (!found) 0.00 : 6886fe: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 688702: 0f 84 e0 00 00 00 je 6887e8 : /* : * lock->nRequested and lock->requested[] count the total number of : * requests, whether granted or waiting, so increment those immediately. : * The other counts don't increment till we get the lock. : */ : lock->nRequested++; 0.00 : 688708: 83 43 68 01 addl $0x1,0x68(%rbx) : lock->requested[lockmode]++; 0.00 : 68870c: 4d 63 e7 movslq %r15d,%r12 : : /* : * We shouldn't already hold the desired lock; else locallock table is : * broken. : */ : if (proclock->holdMask & LOCKBIT_ON(lockmode)) 0.00 : 68870f: 44 89 f9 mov %r15d,%ecx : * lock->nRequested and lock->requested[] count the total number of : * requests, whether granted or waiting, so increment those immediately. : * The other counts don't increment till we get the lock. : */ : lock->nRequested++; : lock->requested[lockmode]++; 0.00 : 688712: 42 83 44 a3 40 01 addl $0x1,0x40(%rbx,%r12,4) : : /* : * We shouldn't already hold the desired lock; else locallock table is : * broken. : */ : if (proclock->holdMask & LOCKBIT_ON(lockmode)) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1208 11.11 : 688718: 41 8b 45 10 mov 0x10(%r13),%eax 11.11 : 68871c: d3 f8 sar %cl,%eax 0.00 : 68871e: a8 01 test $0x1,%al 0.00 : 688720: 0f 85 6a 01 00 00 jne 688890 : lockMethodTable->lockModeNames[lockmode], : lock->tag.locktag_field1, lock->tag.locktag_field2, : lock->tag.locktag_field3); : : return proclock; : } 0.00 : 688726: 4c 89 e8 mov %r13,%rax 0.00 : 688729: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 68872d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 688731: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 688735: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 688739: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 68873d: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1215 11.11 : 68873e: c3 retq 0.00 : 68873f: 90 nop : */ : if (!found) : { : lock->grantMask = 0; : lock->waitMask = 0; : SHMQueueInit(&(lock->procLocks)); 0.00 : 688740: 48 8d 78 18 lea 0x18(%rax),%rdi : /* : * if it's a new lock object, initialize it : */ : if (!found) : { : lock->grantMask = 0; 0.00 : 688744: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : lock->waitMask = 0; 0.00 : 68874b: c7 40 14 00 00 00 00 movl $0x0,0x14(%rax) : SHMQueueInit(&(lock->procLocks)); 0.00 : 688752: e8 c9 ac ff ff callq 683420 : ProcQueueInit(&(lock->waitProcs)); 0.00 : 688757: 48 8d 7b 28 lea 0x28(%rbx),%rdi 0.00 : 68875b: e8 00 4a 00 00 callq 68d160 : lock->nRequested = 0; : lock->nGranted = 0; : MemSet(lock->requested, 0, sizeof(int) * MAX_LOCKMODES); 0.00 : 688760: 48 8d 43 40 lea 0x40(%rbx),%rax : { : lock->grantMask = 0; : lock->waitMask = 0; : SHMQueueInit(&(lock->procLocks)); : ProcQueueInit(&(lock->waitProcs)); : lock->nRequested = 0; 0.00 : 688764: c7 43 68 00 00 00 00 movl $0x0,0x68(%rbx) : lock->nGranted = 0; 0.00 : 68876b: c7 83 94 00 00 00 00 movl $0x0,0x94(%rbx) 0.00 : 688772: 00 00 00 : MemSet(lock->requested, 0, sizeof(int) * MAX_LOCKMODES); 0.00 : 688775: a8 07 test $0x7,%al 0.00 : 688777: 0f 85 ab 00 00 00 jne 688828 0.00 : 68877d: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 688784: 00 0.00 : 688785: 48 c7 43 48 00 00 00 movq $0x0,0x48(%rbx) 0.00 : 68878c: 00 0.00 : 68878d: 48 c7 43 50 00 00 00 movq $0x0,0x50(%rbx) 0.00 : 688794: 00 0.00 : 688795: 48 c7 43 58 00 00 00 movq $0x0,0x58(%rbx) 0.00 : 68879c: 00 0.00 : 68879d: 48 c7 43 60 00 00 00 movq $0x0,0x60(%rbx) 0.00 : 6887a4: 00 : MemSet(lock->granted, 0, sizeof(int) * MAX_LOCKMODES); 0.00 : 6887a5: 48 8d 43 6c lea 0x6c(%rbx),%rax 0.00 : 6887a9: a8 07 test $0x7,%al 0.00 : 6887ab: 0f 85 a7 00 00 00 jne 688858 0.00 : 6887b1: 48 c7 43 6c 00 00 00 movq $0x0,0x6c(%rbx) 0.00 : 6887b8: 00 0.00 : 6887b9: 48 c7 43 74 00 00 00 movq $0x0,0x74(%rbx) 0.00 : 6887c0: 00 0.00 : 6887c1: 48 c7 43 7c 00 00 00 movq $0x0,0x7c(%rbx) 0.00 : 6887c8: 00 0.00 : 6887c9: 48 c7 83 84 00 00 00 movq $0x0,0x84(%rbx) 0.00 : 6887d0: 00 00 00 00 0.00 : 6887d4: 48 c7 83 8c 00 00 00 movq $0x0,0x8c(%rbx) 0.00 : 6887db: 00 00 00 00 0.00 : 6887df: e9 e5 fe ff ff jmpq 6886c9 0.00 : 6887e4: 0f 1f 40 00 nopl 0x0(%rax) : uint32 partition = LockHashPartition(hashcode); : : proclock->holdMask = 0; : proclock->releaseMask = 0; : /* Add proclock to appropriate lists */ : SHMQueueInsertBefore(&lock->procLocks, &proclock->lockLink); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1147 11.11 : 6887e8: 48 8d 70 18 lea 0x18(%rax),%rsi 0.00 : 6887ec: 48 8d 7b 18 lea 0x18(%rbx),%rdi : */ : if (!found) : { : uint32 partition = LockHashPartition(hashcode); : : proclock->holdMask = 0; 0.00 : 6887f0: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : proclock->releaseMask = 0; 0.00 : 6887f7: c7 40 14 00 00 00 00 movl $0x0,0x14(%rax) : /* Add proclock to appropriate lists */ : SHMQueueInsertBefore(&lock->procLocks, &proclock->lockLink); 0.00 : 6887fe: e8 8d ac ff ff callq 683490 : SHMQueueInsertBefore(&(proc->myProcLocks[partition]), 0.00 : 688803: 4c 89 e0 mov %r12,%rax 0.00 : 688806: 49 8d 75 28 lea 0x28(%r13),%rsi 0.00 : 68880a: 83 e0 0f and $0xf,%eax 0.00 : 68880d: 48 c1 e0 04 shl $0x4,%rax 0.00 : 688811: 49 8d bc 06 90 00 00 lea 0x90(%r14,%rax,1),%rdi 0.00 : 688818: 00 0.00 : 688819: e8 72 ac ff ff callq 683490 0.00 : 68881e: e9 e5 fe ff ff jmpq 688708 0.00 : 688823: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : lock->waitMask = 0; : SHMQueueInit(&(lock->procLocks)); : ProcQueueInit(&(lock->waitProcs)); : lock->nRequested = 0; : lock->nGranted = 0; : MemSet(lock->requested, 0, sizeof(int) * MAX_LOCKMODES); 0.00 : 688828: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 68882f: 00 0.00 : 688830: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 688837: 00 0.00 : 688838: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 68883f: 00 0.00 : 688840: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 688847: 00 0.00 : 688848: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 68884f: 00 0.00 : 688850: e9 50 ff ff ff jmpq 6887a5 0.00 : 688855: 0f 1f 00 nopl (%rax) : MemSet(lock->granted, 0, sizeof(int) * MAX_LOCKMODES); 0.00 : 688858: 48 c7 43 6c 00 00 00 movq $0x0,0x6c(%rbx) 0.00 : 68885f: 00 0.00 : 688860: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 688867: 00 0.00 : 688868: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 68886f: 00 0.00 : 688870: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 688877: 00 0.00 : 688878: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 68887f: 00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1088 11.11 : 688880: e9 44 fe ff ff jmpq 6886c9 0.00 : 688885: 0f 1f 00 nopl (%rax) : /* : * We shouldn't already hold the desired lock; else locallock table is : * broken. : */ : if (proclock->holdMask & LOCKBIT_ON(lockmode)) : elog(ERROR, "lock %s on object %u/%u/%u is already held", 0.00 : 688888: 45 31 ed xor %r13d,%r13d 0.00 : 68888b: e9 96 fe ff ff jmpq 688726 0.00 : 688890: ba 40 ca 8a 00 mov $0x8aca40,%edx 0.00 : 688895: be bc 04 00 00 mov $0x4bc,%esi 0.00 : 68889a: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68889f: e8 7c 2b 0f 00 callq 77b420 0.00 : 6888a4: 48 8b 55 a8 mov -0x58(%rbp),%rdx 0.00 : 6888a8: 44 8b 4b 08 mov 0x8(%rbx),%r9d 0.00 : 6888ac: be 30 c7 8a 00 mov $0x8ac730,%esi 0.00 : 6888b1: 44 8b 43 04 mov 0x4(%rbx),%r8d 0.00 : 6888b5: 8b 0b mov (%rbx),%ecx 0.00 : 6888b7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6888bc: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 6888c0: 4a 8b 14 e0 mov (%rax,%r12,8),%rdx 0.00 : 6888c4: 31 c0 xor %eax,%eax 0.00 : 6888c6: e8 65 29 0f 00 callq 77b230 0.00 : 6888cb: e8 00 0c de ff callq 4694d0 : HASH_ENTER_NULL, : &found); : if (!proclock) : { : /* Ooops, not enough shmem for the proclock */ : if (lock->nRequested == 0) 0.00 : 6888d0: 8b 43 68 mov 0x68(%rbx),%eax 0.00 : 6888d3: 85 c0 test %eax,%eax 0.00 : 6888d5: 0f 85 4b fe ff ff jne 688726 : * the lock object. We *must* do this to avoid a permanent leak : * of shared memory, because there won't be anything to cause : * anyone to release the lock object later. : */ : Assert(SHMQueueEmpty(&(lock->procLocks))); : if (!hash_search_with_hash_value(LockMethodLockHash, 0.00 : 6888db: 48 8b 3d 1e 50 4f 00 mov 0x4f501e(%rip),%rdi # b7d900 0.00 : 6888e2: 45 31 c0 xor %r8d,%r8d 0.00 : 6888e5: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 6888ea: 44 89 e2 mov %r12d,%edx 0.00 : 6888ed: 48 89 de mov %rbx,%rsi 0.00 : 6888f0: e8 5b b7 0f 00 callq 784050 0.00 : 6888f5: 48 85 c0 test %rax,%rax 0.00 : 6888f8: 0f 85 28 fe ff ff jne 688726 : (void *) &(lock->tag), : hashcode, : HASH_REMOVE, : NULL)) : elog(PANIC, "lock table corrupted"); 0.00 : 6888fe: ba 40 ca 8a 00 mov $0x8aca40,%edx 0.00 : 688903: be 6c 04 00 00 mov $0x46c,%esi 0.00 : 688908: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68890d: e8 0e 2b 0f 00 callq 77b420 0.00 : 688912: be 14 c6 8a 00 mov $0x8ac614,%esi 0.00 : 688917: bf 16 00 00 00 mov $0x16,%edi 0.00 : 68891c: 31 c0 xor %eax,%eax 0.00 : 68891e: e8 0d 29 0f 00 callq 77b230 0.00 : 688923: e8 a8 0b de ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:813 22.22 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:832 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:830 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:841 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:867 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:867 11.11 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:867 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000697d70 : : * called, then only segments up to the last one actually touched : * are present in the chain. : */ : BlockNumber : mdnblocks(SMgrRelation reln, ForkNumber forknum) : { 0.00 : 697d70: 55 push %rbp : MdfdVec *v = mdopen(reln, forknum, EXTENSION_FAIL); /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:813 22.22 : 697d71: 31 d2 xor %edx,%edx : * called, then only segments up to the last one actually touched : * are present in the chain. : */ : BlockNumber : mdnblocks(SMgrRelation reln, ForkNumber forknum) : { 0.00 : 697d73: 48 89 e5 mov %rsp,%rbp 0.00 : 697d76: 41 56 push %r14 0.00 : 697d78: 49 89 fe mov %rdi,%r14 0.00 : 697d7b: 41 55 push %r13 0.00 : 697d7d: 41 89 f5 mov %esi,%r13d 0.00 : 697d80: 41 54 push %r12 : * relcache flush. (Since the checkpointer doesn't participate in : * relcache flush, it could have segment chain entries for inactive : * segments; that's OK because the checkpointer never needs to compute : * relation size.) : */ : while (v->mdfd_chain != NULL) 0.00 : 697d82: 45 31 e4 xor %r12d,%r12d : * called, then only segments up to the last one actually touched : * are present in the chain. : */ : BlockNumber : mdnblocks(SMgrRelation reln, ForkNumber forknum) : { 0.00 : 697d85: 53 push %rbx : MdfdVec *v = mdopen(reln, forknum, EXTENSION_FAIL); 0.00 : 697d86: e8 b5 fb ff ff callq 697940 0.00 : 697d8b: 48 89 c3 mov %rax,%rbx : * relcache flush. (Since the checkpointer doesn't participate in : * relcache flush, it could have segment chain entries for inactive : * segments; that's OK because the checkpointer never needs to compute : * relation size.) : */ : while (v->mdfd_chain != NULL) 0.00 : 697d8e: 48 8b 40 08 mov 0x8(%rax),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:830 11.11 : 697d92: 48 85 c0 test %rax,%rax 0.00 : 697d95: 74 3c je 697dd3 0.00 : 697d97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 697d9e: 00 00 0.00 : 697da0: 48 89 c3 mov %rax,%rbx 0.00 : 697da3: 48 8b 40 08 mov 0x8(%rax),%rax : { : segno++; /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:832 22.22 : 697da7: 41 83 c4 01 add $0x1,%r12d : * relcache flush. (Since the checkpointer doesn't participate in : * relcache flush, it could have segment chain entries for inactive : * segments; that's OK because the checkpointer never needs to compute : * relation size.) : */ : while (v->mdfd_chain != NULL) 0.00 : 697dab: 48 85 c0 test %rax,%rax 0.00 : 697dae: 75 f0 jne 697da0 0.00 : 697db0: eb 21 jmp 697dd3 : * Because we pass O_CREAT, we will create the next segment (with : * zero length) immediately, if the last segment is of length : * RELSEG_SIZE. While perhaps not strictly necessary, this keeps : * the logic simple. : */ : v->mdfd_chain = _mdfd_openseg(reln, forknum, segno, O_CREAT); 0.00 : 697db2: b9 40 00 00 00 mov $0x40,%ecx 0.00 : 697db7: 44 89 e2 mov %r12d,%edx 0.00 : 697dba: 44 89 ee mov %r13d,%esi 0.00 : 697dbd: 4c 89 f7 mov %r14,%rdi 0.00 : 697dc0: e8 3b ff ff ff callq 697d00 <_mdfd_openseg> : if (v->mdfd_chain == NULL) 0.00 : 697dc5: 48 85 c0 test %rax,%rax : * Because we pass O_CREAT, we will create the next segment (with : * zero length) immediately, if the last segment is of length : * RELSEG_SIZE. While perhaps not strictly necessary, this keeps : * the logic simple. : */ : v->mdfd_chain = _mdfd_openseg(reln, forknum, segno, O_CREAT); 0.00 : 697dc8: 48 89 43 08 mov %rax,0x8(%rbx) : if (v->mdfd_chain == NULL) 0.00 : 697dcc: 74 6d je 697e3b 0.00 : 697dce: 66 90 xchg %ax,%ax : ereport(ERROR, 0.00 : 697dd0: 48 89 c3 mov %rax,%rbx : v = v->mdfd_chain; : } : : for (;;) : { : nblocks = _mdnblocks(reln, forknum, v); 0.00 : 697dd3: 48 89 da mov %rbx,%rdx 0.00 : 697dd6: 44 89 ee mov %r13d,%esi 0.00 : 697dd9: 4c 89 f7 mov %r14,%rdi 0.00 : 697ddc: e8 2f fe ff ff callq 697c10 <_mdnblocks> : if (nblocks > ((BlockNumber) RELSEG_SIZE)) 0.00 : 697de1: 3d 00 00 02 00 cmp $0x20000,%eax 0.00 : 697de6: 77 29 ja 697e11 : elog(FATAL, "segment too big"); : if (nblocks < ((BlockNumber) RELSEG_SIZE)) 0.00 : 697de8: 75 16 jne 697e00 : /* : * If segment is exactly RELSEG_SIZE, advance to next one. : */ : segno++; : : if (v->mdfd_chain == NULL) 0.00 : 697dea: 48 8b 43 08 mov 0x8(%rbx),%rax : return (segno * ((BlockNumber) RELSEG_SIZE)) + nblocks; : : /* : * If segment is exactly RELSEG_SIZE, advance to next one. : */ : segno++; 0.00 : 697dee: 41 83 c4 01 add $0x1,%r12d : : if (v->mdfd_chain == NULL) 0.00 : 697df2: 48 85 c0 test %rax,%rax 0.00 : 697df5: 75 d9 jne 697dd0 0.00 : 697df7: eb b9 jmp 697db2 0.00 : 697df9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : for (;;) : { : nblocks = _mdnblocks(reln, forknum, v); : if (nblocks > ((BlockNumber) RELSEG_SIZE)) : elog(FATAL, "segment too big"); : if (nblocks < ((BlockNumber) RELSEG_SIZE)) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:841 11.11 : 697e00: 41 c1 e4 11 shl $0x11,%r12d : _mdfd_segpath(reln, forknum, segno)))); : } : : v = v->mdfd_chain; : } : } /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:867 11.11 : 697e04: 5b pop %rbx : for (;;) : { : nblocks = _mdnblocks(reln, forknum, v); : if (nblocks > ((BlockNumber) RELSEG_SIZE)) : elog(FATAL, "segment too big"); : if (nblocks < ((BlockNumber) RELSEG_SIZE)) 0.00 : 697e05: 41 8d 04 04 lea (%r12,%rax,1),%eax : _mdfd_segpath(reln, forknum, segno)))); : } : : v = v->mdfd_chain; : } : } 0.00 : 697e09: 41 5c pop %r12 0.00 : 697e0b: 41 5d pop %r13 11.11 : 697e0d: 41 5e pop %r14 0.00 : 697e0f: c9 leaveq 11.11 : 697e10: c3 retq : : for (;;) : { : nblocks = _mdnblocks(reln, forknum, v); : if (nblocks > ((BlockNumber) RELSEG_SIZE)) : elog(FATAL, "segment too big"); 0.00 : 697e11: ba c7 e3 8a 00 mov $0x8ae3c7,%edx 0.00 : 697e16: be 48 03 00 00 mov $0x348,%esi 0.00 : 697e1b: bf db 5b 87 00 mov $0x875bdb,%edi 0.00 : 697e20: e8 fb 35 0e 00 callq 77b420 0.00 : 697e25: be 96 df 8a 00 mov $0x8adf96,%esi 0.00 : 697e2a: bf 15 00 00 00 mov $0x15,%edi 0.00 : 697e2f: 31 c0 xor %eax,%eax 0.00 : 697e31: e8 fa 33 0e 00 callq 77b230 0.00 : 697e36: e8 95 16 dd ff callq 4694d0 : * RELSEG_SIZE. While perhaps not strictly necessary, this keeps : * the logic simple. : */ : v->mdfd_chain = _mdfd_openseg(reln, forknum, segno, O_CREAT); : if (v->mdfd_chain == NULL) : ereport(ERROR, 0.00 : 697e3b: 45 31 c0 xor %r8d,%r8d 0.00 : 697e3e: b9 c7 e3 8a 00 mov $0x8ae3c7,%ecx 0.00 : 697e43: ba 5e 03 00 00 mov $0x35e,%edx 0.00 : 697e48: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 697e4d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 697e52: e8 69 2c 0e 00 callq 77aac0 0.00 : 697e57: 84 c0 test %al,%al 0.00 : 697e59: 75 05 jne 697e60 0.00 : 697e5b: e8 70 16 dd ff callq 4694d0 0.00 : 697e60: 44 89 e2 mov %r12d,%edx 0.00 : 697e63: 44 89 ee mov %r13d,%esi 0.00 : 697e66: 4c 89 f7 mov %r14,%rdi 0.00 : 697e69: e8 22 fe ff ff callq 697c90 <_mdfd_segpath> 0.00 : 697e6e: bf 53 31 7b 00 mov $0x7b3153,%edi 0.00 : 697e73: 48 89 c6 mov %rax,%rsi 0.00 : 697e76: 31 c0 xor %eax,%eax 0.00 : 697e78: e8 23 4a 0e 00 callq 77c8a0 0.00 : 697e7d: 89 c3 mov %eax,%ebx 0.00 : 697e7f: e8 6c 4c 0e 00 callq 77caf0 0.00 : 697e84: 89 de mov %ebx,%esi 0.00 : 697e86: 89 c7 mov %eax,%edi 0.00 : 697e88: 31 c0 xor %eax,%eax 0.00 : 697e8a: e8 51 27 0e 00 callq 77a5e0 0.00 : 697e8f: eb ca jmp 697e5b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 22.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:565 22.22 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:576 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:565 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:603 11.11 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:603 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798630 : : * we don't thrash malloc() when a context is repeatedly reset after small : * allocations, which is typical behavior for per-tuple contexts. : */ : static void : AllocSetReset(MemoryContext context) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:553 11.11 : 798630: 55 push %rbp : /* Check for corruption and leaks before freeing */ : AllocSetCheck(context); : #endif : : /* Clear chunk freelists */ : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); 0.00 : 798631: 48 8d 47 40 lea 0x40(%rdi),%rax 0.00 : 798635: 48 8d 97 98 00 00 00 lea 0x98(%rdi),%rdx : * we don't thrash malloc() when a context is repeatedly reset after small : * allocations, which is typical behavior for per-tuple contexts. : */ : static void : AllocSetReset(MemoryContext context) : { 0.00 : 79863c: 48 89 e5 mov %rsp,%rbp 11.11 : 79863f: 41 54 push %r12 0.00 : 798641: 49 89 fc mov %rdi,%r12 0.00 : 798644: 53 push %rbx 0.00 : 798645: 0f 1f 00 nopl (%rax) : /* Check for corruption and leaks before freeing */ : AllocSetCheck(context); : #endif : : /* Clear chunk freelists */ : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:565 22.22 : 798648: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 11.11 : 79864f: 48 83 c0 08 add $0x8,%rax 0.00 : 798653: 48 39 d0 cmp %rdx,%rax 0.00 : 798656: 75 f0 jne 798648 : : block = set->blocks; 0.00 : 798658: 49 8b 7c 24 38 mov 0x38(%r12),%rdi : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; 0.00 : 79865d: 49 8b 94 24 b8 00 00 mov 0xb8(%r12),%rdx 0.00 : 798664: 00 : : while (block != NULL) 0.00 : 798665: 48 85 ff test %rdi,%rdi : MemSetAligned(set->freelist, 0, sizeof(set->freelist)); : : block = set->blocks; : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; 0.00 : 798668: 49 89 54 24 38 mov %rdx,0x38(%r12) : : while (block != NULL) 0.00 : 79866d: 75 1e jne 79868d 0.00 : 79866f: eb 3d jmp 7986ae 0.00 : 798671: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* Normal case, release the block */ : #ifdef CLOBBER_FREED_MEMORY : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); 0.00 : 798678: e8 a3 11 cd ff callq 469820 : block = set->blocks; : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; : : while (block != NULL) 0.00 : 79867d: 48 85 db test %rbx,%rbx : { : /* Normal case, release the block */ : #ifdef CLOBBER_FREED_MEMORY : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); 0.00 : 798680: 48 89 df mov %rbx,%rdi : block = set->blocks; : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; : : while (block != NULL) 0.00 : 798683: 74 29 je 7986ae 0.00 : 798685: 49 8b 94 24 b8 00 00 mov 0xb8(%r12),%rdx 0.00 : 79868c: 00 : { : AllocBlock next = block->next; : : if (block == set->keeper) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:576 22.22 : 79868d: 48 39 fa cmp %rdi,%rdx : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; : : while (block != NULL) : { : AllocBlock next = block->next; 0.00 : 798690: 48 8b 5f 08 mov 0x8(%rdi),%rbx : : if (block == set->keeper) 0.00 : 798694: 75 e2 jne 798678 : wipe_mem(datastart, block->freeptr - datastart); : #else : /* wipe_mem() would have done this */ : VALGRIND_MAKE_MEM_NOACCESS(datastart, block->freeptr - datastart); : #endif : block->freeptr = datastart; 0.00 : 798696: 48 8d 42 20 lea 0x20(%rdx),%rax : block = set->blocks; : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; : : while (block != NULL) 0.00 : 79869a: 48 85 db test %rbx,%rbx : #else : /* wipe_mem() would have done this */ : VALGRIND_MAKE_MEM_NOACCESS(datastart, block->freeptr - datastart); : #endif : block->freeptr = datastart; : block->next = NULL; 0.00 : 79869d: 48 c7 42 08 00 00 00 movq $0x0,0x8(%rdx) 0.00 : 7986a4: 00 : { : /* Normal case, release the block */ : #ifdef CLOBBER_FREED_MEMORY : wipe_mem(block, block->freeptr - ((char *) block)); : #endif : free(block); 0.00 : 7986a5: 48 89 df mov %rbx,%rdi : wipe_mem(datastart, block->freeptr - datastart); : #else : /* wipe_mem() would have done this */ : VALGRIND_MAKE_MEM_NOACCESS(datastart, block->freeptr - datastart); : #endif : block->freeptr = datastart; 0.00 : 7986a8: 48 89 42 10 mov %rax,0x10(%rdx) : block = set->blocks; : : /* New blocks list is either empty or just the keeper block */ : set->blocks = set->keeper; : : while (block != NULL) 0.00 : 7986ac: 75 d7 jne 798685 : } : block = next; : } : : /* Reset block size allocation sequence, too */ : set->nextBlockSize = set->initBlockSize; 0.00 : 7986ae: 49 8b 84 24 98 00 00 mov 0x98(%r12),%rax 0.00 : 7986b5: 00 : } 0.00 : 7986b6: 5b pop %rbx : } : block = next; : } : : /* Reset block size allocation sequence, too */ : set->nextBlockSize = set->initBlockSize; 0.00 : 7986b7: 49 89 84 24 a8 00 00 mov %rax,0xa8(%r12) 0.00 : 7986be: 00 : } /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/aset.c:603 11.11 : 7986bf: 41 5c pop %r12 11.11 : 7986c1: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 22.22 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 11.11 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001800 : : /** : * ixgbe_update_stats - Update the board statistics counters. : * @adapter: board private structure : **/ : void ixgbe_update_stats(struct ixgbe_adapter *adapter) : { 0.00 : 1800: 41 57 push %r15 0.00 : 1802: 41 56 push %r14 0.00 : 1804: 41 55 push %r13 0.00 : 1806: 41 54 push %r12 0.00 : 1808: 55 push %rbp 0.00 : 1809: 53 push %rbx 0.00 : 180a: 48 89 fb mov %rdi,%rbx 0.00 : 180d: 48 83 ec 28 sub $0x28,%rsp : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 1811: 48 8b 87 10 02 00 00 mov 0x210(%rdi),%rax : #ifdef HAVE_NETDEV_STATS_IN_NETDEV : struct net_device_stats *net_stats = &adapter->netdev->stats; 0.00 : 1818: 4c 8b bf 00 02 00 00 mov 0x200(%rdi),%r15 : u64 bytes = 0, packets = 0, hw_csum_rx_error = 0; : #ifndef IXGBE_NO_LRO : u32 flushed = 0, coal = 0; : #endif : : if (test_bit(__IXGBE_DOWN, &adapter->state) || 0.00 : 181f: a8 04 test $0x4,%al 0.00 : 1821: 0f 85 b9 09 00 00 jne 21e0 0.00 : 1827: 48 8b 87 10 02 00 00 mov 0x210(%rdi),%rax 0.00 : 182e: a8 02 test $0x2,%al 0.00 : 1830: 0f 85 aa 09 00 00 jne 21e0 : test_bit(__IXGBE_RESETTING, &adapter->state)) : return; : : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { 0.00 : 1836: f6 87 1c 02 00 00 02 testb $0x2,0x21c(%rdi) 0.00 : 183d: 0f 85 ac 09 00 00 jne 21ef 0.00 : 1843: 44 8b 9f 28 02 00 00 mov 0x228(%rdi),%r11d : adapter->rsc_total_count = rsc_count; : adapter->rsc_total_flush = rsc_flush; : } : : #ifndef IXGBE_NO_LRO : for (i = 0; i < adapter->num_q_vectors; i++) { 0.00 : 184a: 8b 83 c0 0b 00 00 mov 0xbc0(%rbx),%eax 0.00 : 1850: 31 f6 xor %esi,%esi 0.00 : 1852: 31 c9 xor %ecx,%ecx 0.00 : 1854: 85 c0 test %eax,%eax 0.00 : 1856: 74 3a je 1892 0.00 : 1858: 83 e8 01 sub $0x1,%eax 0.00 : 185b: 31 f6 xor %esi,%esi 0.00 : 185d: 31 c9 xor %ecx,%ecx 0.00 : 185f: 48 8d 3c c5 08 00 00 lea 0x8(,%rax,8),%rdi 0.00 : 1866: 00 0.00 : 1867: 31 d2 xor %edx,%edx 0.00 : 1869: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : struct ixgbe_q_vector *q_vector = adapter->q_vector[i]; 0.00 : 1870: 48 8b 84 13 50 07 00 mov 0x750(%rbx,%rdx,1),%rax 0.00 : 1877: 00 : if (!q_vector) 0.00 : 1878: 48 85 c0 test %rax,%rax 0.00 : 187b: 74 0c je 1889 : continue; : flushed += q_vector->lrolist.stats.flushed; 0.00 : 187d: 03 b0 b8 02 00 00 add 0x2b8(%rax),%esi : coal += q_vector->lrolist.stats.coal; 0.00 : 1883: 03 88 bc 02 00 00 add 0x2bc(%rax),%ecx 0.00 : 1889: 48 83 c2 08 add $0x8,%rdx : adapter->rsc_total_count = rsc_count; : adapter->rsc_total_flush = rsc_flush; : } : : #ifndef IXGBE_NO_LRO : for (i = 0; i < adapter->num_q_vectors; i++) { 0.00 : 188d: 48 39 fa cmp %rdi,%rdx 0.00 : 1890: 75 de jne 1870 : } : adapter->lro_stats.flushed = flushed; : adapter->lro_stats.coal = coal; : : #endif : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 1892: 45 85 db test %r11d,%r11d : if (!q_vector) : continue; : flushed += q_vector->lrolist.stats.flushed; : coal += q_vector->lrolist.stats.coal; : } : adapter->lro_stats.flushed = flushed; 0.00 : 1895: 89 b3 f8 0b 00 00 mov %esi,0xbf8(%rbx) : adapter->lro_stats.coal = coal; 0.00 : 189b: 89 8b fc 0b 00 00 mov %ecx,0xbfc(%rbx) : : #endif : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 18a1: 0f 84 6b 0f 00 00 je 2812 0.00 : 18a7: 41 8d 43 ff lea -0x1(%r11),%eax 0.00 : 18ab: 45 31 d2 xor %r10d,%r10d 0.00 : 18ae: 31 f6 xor %esi,%esi 0.00 : 18b0: 31 c9 xor %ecx,%ecx 0.00 : 18b2: 45 31 c9 xor %r9d,%r9d 0.00 : 18b5: 45 31 c0 xor %r8d,%r8d 0.00 : 18b8: 4c 8d 1c c5 08 00 00 lea 0x8(,%rax,8),%r11 0.00 : 18bf: 00 0.00 : 18c0: 31 ff xor %edi,%edi 0.00 : 18c2: 31 d2 xor %edx,%edx 0.00 : 18c4: 0f 1f 40 00 nopl 0x0(%rax) : struct ixgbe_ring *rx_ring = adapter->rx_ring[i]; 0.00 : 18c8: 48 8b 84 13 d8 04 00 mov 0x4d8(%rbx,%rdx,1),%rax 0.00 : 18cf: 00 : non_eop_descs += rx_ring->rx_stats.non_eop_descs; : alloc_rx_page_failed += rx_ring->rx_stats.alloc_rx_page_failed; : alloc_rx_buff_failed += rx_ring->rx_stats.alloc_rx_buff_failed; : hw_csum_rx_error += rx_ring->rx_stats.csum_err; : bytes += rx_ring->stats.bytes; : packets += rx_ring->stats.packets; 0.00 : 18d0: 48 83 c2 08 add $0x8,%rdx : adapter->lro_stats.coal = coal; : : #endif : for (i = 0; i < adapter->num_rx_queues; i++) { : struct ixgbe_ring *rx_ring = adapter->rx_ring[i]; : non_eop_descs += rx_ring->rx_stats.non_eop_descs; 0.00 : 18d4: 4c 03 50 78 add 0x78(%rax),%r10 : alloc_rx_page_failed += rx_ring->rx_stats.alloc_rx_page_failed; 0.00 : 18d8: 48 03 b0 80 00 00 00 add 0x80(%rax),%rsi : alloc_rx_buff_failed += rx_ring->rx_stats.alloc_rx_buff_failed; 0.00 : 18df: 48 03 88 88 00 00 00 add 0x88(%rax),%rcx : hw_csum_rx_error += rx_ring->rx_stats.csum_err; 0.00 : 18e6: 48 03 b8 90 00 00 00 add 0x90(%rax),%rdi : bytes += rx_ring->stats.bytes; 0.00 : 18ed: 4c 03 48 60 add 0x60(%rax),%r9 : packets += rx_ring->stats.packets; 0.00 : 18f1: 4c 03 40 58 add 0x58(%rax),%r8 : } : adapter->lro_stats.flushed = flushed; : adapter->lro_stats.coal = coal; : : #endif : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 18f5: 4c 39 da cmp %r11,%rdx 0.00 : 18f8: 75 ce jne 18c8 0.00 : 18fa: 89 f2 mov %esi,%edx 0.00 : 18fc: 89 c8 mov %ecx,%eax : packets += rx_ring->stats.packets; : : } : adapter->non_eop_descs = non_eop_descs; : adapter->alloc_rx_page_failed = alloc_rx_page_failed; : adapter->alloc_rx_buff_failed = alloc_rx_buff_failed; 0.00 : 18fe: 89 83 4c 07 00 00 mov %eax,0x74c(%rbx) : hw_csum_rx_error += rx_ring->rx_stats.csum_err; : bytes += rx_ring->stats.bytes; : packets += rx_ring->stats.packets; : : } : adapter->non_eop_descs = non_eop_descs; 0.00 : 1904: 4c 89 93 40 07 00 00 mov %r10,0x740(%rbx) : adapter->alloc_rx_page_failed = alloc_rx_page_failed; 0.00 : 190b: 89 93 48 07 00 00 mov %edx,0x748(%rbx) : adapter->alloc_rx_buff_failed = alloc_rx_buff_failed; : adapter->hw_csum_rx_error = hw_csum_rx_error; 0.00 : 1911: 48 89 bb 20 07 00 00 mov %rdi,0x720(%rbx) : net_stats->rx_bytes = bytes; 0.00 : 1918: 4d 89 8f d8 00 00 00 mov %r9,0xd8(%r15) : net_stats->rx_packets = packets; 0.00 : 191f: 4d 89 87 c8 00 00 00 mov %r8,0xc8(%r15) : : bytes = 0; : packets = 0; : /* gather some stats to the adapter struct that are per queue */ : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 1926: 8b 83 20 02 00 00 mov 0x220(%rbx),%eax 0.00 : 192c: 85 c0 test %eax,%eax 0.00 : 192e: 0f 84 f2 0e 00 00 je 2826 0.00 : 1934: 83 e8 01 sub $0x1,%eax 0.00 : 1937: 45 31 c0 xor %r8d,%r8d 0.00 : 193a: 31 ff xor %edi,%edi 0.00 : 193c: 4c 8d 0c c5 08 00 00 lea 0x8(,%rax,8),%r9 0.00 : 1943: 00 0.00 : 1944: 31 f6 xor %esi,%esi 0.00 : 1946: 31 c9 xor %ecx,%ecx 0.00 : 1948: 31 d2 xor %edx,%edx 0.00 : 194a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : struct ixgbe_ring *tx_ring = adapter->tx_ring[i]; 0.00 : 1950: 48 8b 84 13 80 02 00 mov 0x280(%rbx,%rdx,1),%rax 0.00 : 1957: 00 : restart_queue += tx_ring->tx_stats.restart_queue; : tx_busy += tx_ring->tx_stats.tx_busy; : bytes += tx_ring->stats.bytes; : packets += tx_ring->stats.packets; 0.00 : 1958: 48 83 c2 08 add $0x8,%rdx : bytes = 0; : packets = 0; : /* gather some stats to the adapter struct that are per queue */ : for (i = 0; i < adapter->num_tx_queues; i++) { : struct ixgbe_ring *tx_ring = adapter->tx_ring[i]; : restart_queue += tx_ring->tx_stats.restart_queue; 0.00 : 195c: 4c 03 40 68 add 0x68(%rax),%r8 : tx_busy += tx_ring->tx_stats.tx_busy; 0.00 : 1960: 48 03 78 70 add 0x70(%rax),%rdi : bytes += tx_ring->stats.bytes; 0.00 : 1964: 48 03 70 60 add 0x60(%rax),%rsi : packets += tx_ring->stats.packets; 0.00 : 1968: 48 03 48 58 add 0x58(%rax),%rcx : net_stats->rx_packets = packets; : : bytes = 0; : packets = 0; : /* gather some stats to the adapter struct that are per queue */ : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 196c: 4c 39 ca cmp %r9,%rdx 0.00 : 196f: 75 df jne 1950 : restart_queue += tx_ring->tx_stats.restart_queue; : tx_busy += tx_ring->tx_stats.tx_busy; : bytes += tx_ring->stats.bytes; : packets += tx_ring->stats.packets; : } : adapter->restart_queue = restart_queue; 0.00 : 1971: 4c 89 83 c0 04 00 00 mov %r8,0x4c0(%rbx) : adapter->tx_busy = tx_busy; 0.00 : 1978: 48 89 bb 08 1b 00 00 mov %rdi,0x1b08(%rbx) : net_stats->tx_bytes = bytes; 0.00 : 197f: 49 89 b7 e0 00 00 00 mov %rsi,0xe0(%r15) : net_stats->tx_packets = packets; 0.00 : 1986: 49 89 8f d0 00 00 00 mov %rcx,0xd0(%r15) : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 198d: 48 8b 93 80 0e 00 00 mov 0xe80(%rbx),%rdx : : hwstats->crcerrs += IXGBE_READ_REG(hw, IXGBE_CRCERRS); 0.00 : 1994: 48 8b 83 b0 14 00 00 mov 0x14b0(%rbx),%rax 0.00 : 199b: 48 81 c2 00 40 00 00 add $0x4000,%rdx 0.00 : 19a2: 8b 12 mov (%rdx),%edx 0.00 : 19a4: 89 d2 mov %edx,%edx 0.00 : 19a6: 48 89 df mov %rbx,%rdi 0.00 : 19a9: 48 89 d9 mov %rbx,%rcx 0.00 : 19ac: 48 01 c2 add %rax,%rdx 0.00 : 19af: 45 31 f6 xor %r14d,%r14d 0.00 : 19b2: 45 31 c9 xor %r9d,%r9d 0.00 : 19b5: 48 89 93 b0 14 00 00 mov %rdx,0x14b0(%rbx) 0.00 : 19bc: be a0 3f 00 00 mov $0x3fa0,%esi 0.00 : 19c1: 41 b8 34 60 00 00 mov $0x6034,%r8d 0.00 : 19c7: eb 4a jmp 1a13 0.00 : 19c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : missed_rx += mpc; : hwstats->mpc[i] += mpc; : total_mpc += hwstats->mpc[i]; : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); : switch (hw->mac.type) { 0.00 : 19d0: 72 28 jb 19fa 0.00 : 19d2: 83 f8 03 cmp $0x3,%eax 0.00 : 19d5: 77 23 ja 19fa 0.00 : 19d7: 48 8d 96 a0 01 00 00 lea 0x1a0(%rsi),%rdx : hwstats->pxonrxc[i] += : IXGBE_READ_REG(hw, IXGBE_PXONRXC(i)); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : hwstats->pxonrxc[i] += 0.00 : 19de: 48 8b 81 90 15 00 00 mov 0x1590(%rcx),%rax 0.00 : 19e5: 48 03 93 80 0e 00 00 add 0xe80(%rbx),%rdx 0.00 : 19ec: 8b 12 mov (%rdx),%edx 0.00 : 19ee: 89 d2 mov %edx,%edx 0.00 : 19f0: 48 01 c2 add %rax,%rdx 0.00 : 19f3: 48 89 91 90 15 00 00 mov %rdx,0x1590(%rcx) 0.00 : 19fa: 48 83 c6 04 add $0x4,%rsi 0.00 : 19fe: 48 83 c1 08 add $0x8,%rcx 0.00 : 1a02: 49 83 c0 40 add $0x40,%r8 : net_stats->tx_packets = packets; : : hwstats->crcerrs += IXGBE_READ_REG(hw, IXGBE_CRCERRS); : : /* 8 register reads */ : for (i = 0; i < 8; i++) { 0.00 : 1a06: 48 81 fe c0 3f 00 00 cmp $0x3fc0,%rsi 0.00 : 1a0d: 0f 84 35 08 00 00 je 2248 0.00 : 1a13: 48 89 f0 mov %rsi,%rax 0.00 : 1a16: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1a1d: 8b 00 mov (%rax),%eax : /* for packet buffers not used, the register should read 0 */ : mpc = IXGBE_READ_REG(hw, IXGBE_MPC(i)); : missed_rx += mpc; 0.00 : 1a1f: 41 01 c1 add %eax,%r9d : hwstats->mpc[i] += mpc; 0.00 : 1a22: 89 c0 mov %eax,%eax 0.00 : 1a24: 48 03 81 d8 14 00 00 add 0x14d8(%rcx),%rax : total_mpc += hwstats->mpc[i]; : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); 0.00 : 1a2b: 48 8b 91 50 15 00 00 mov 0x1550(%rcx),%rdx : /* 8 register reads */ : for (i = 0; i < 8; i++) { : /* for packet buffers not used, the register should read 0 */ : mpc = IXGBE_READ_REG(hw, IXGBE_MPC(i)); : missed_rx += mpc; : hwstats->mpc[i] += mpc; 0.00 : 1a32: 48 89 81 d8 14 00 00 mov %rax,0x14d8(%rcx) : total_mpc += hwstats->mpc[i]; 0.00 : 1a39: 49 01 c6 add %rax,%r14 0.00 : 1a3c: 48 8d 86 60 ff ff ff lea -0xa0(%rsi),%rax 0.00 : 1a43: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1a4a: 8b 00 mov (%rax),%eax : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); ??:0 11.11 : 1a4c: 89 c0 mov %eax,%eax 0.00 : 1a4e: 48 01 d0 add %rdx,%rax : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); 0.00 : 1a51: 48 8b 91 d0 15 00 00 mov 0x15d0(%rcx),%rdx : /* for packet buffers not used, the register should read 0 */ : mpc = IXGBE_READ_REG(hw, IXGBE_MPC(i)); : missed_rx += mpc; : hwstats->mpc[i] += mpc; : total_mpc += hwstats->mpc[i]; : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); 0.00 : 1a58: 48 89 81 50 15 00 00 mov %rax,0x1550(%rcx) 0.00 : 1a5f: 48 8d 46 80 lea -0x80(%rsi),%rax 0.00 : 1a63: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1a6a: 8b 00 mov (%rax),%eax : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); 0.00 : 1a6c: 89 c0 mov %eax,%eax 0.00 : 1a6e: 48 01 d0 add %rdx,%rax 0.00 : 1a71: 48 89 81 d0 15 00 00 mov %rax,0x15d0(%rcx) : switch (hw->mac.type) { 0.00 : 1a78: 8b 83 50 10 00 00 mov 0x1050(%rbx),%eax 0.00 : 1a7e: 83 f8 01 cmp $0x1,%eax 0.00 : 1a81: 0f 85 49 ff ff ff jne 19d0 0.00 : 1a87: 48 8d 46 20 lea 0x20(%rsi),%rax : case ixgbe_mac_82598EB: : hwstats->rnbc[i] += IXGBE_READ_REG(hw, IXGBE_RNBC(i)); 0.00 : 1a8b: 48 8b 91 b0 16 00 00 mov 0x16b0(%rcx),%rdx 0.00 : 1a92: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1a99: 8b 00 mov (%rax),%eax 0.00 : 1a9b: 89 c0 mov %eax,%eax 0.00 : 1a9d: 48 01 d0 add %rdx,%rax : hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC(i)); 0.00 : 1aa0: 48 8b 91 08 19 00 00 mov 0x1908(%rcx),%rdx : total_mpc += hwstats->mpc[i]; : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->rnbc[i] += IXGBE_READ_REG(hw, IXGBE_RNBC(i)); 0.00 : 1aa7: 48 89 81 b0 16 00 00 mov %rax,0x16b0(%rcx) 0.00 : 1aae: 4c 89 c0 mov %r8,%rax 0.00 : 1ab1: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1ab8: 8b 00 mov (%rax),%eax : hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC(i)); 0.00 : 1aba: 89 c0 mov %eax,%eax 0.00 : 1abc: 48 01 d0 add %rdx,%rax : hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC(i)); 0.00 : 1abf: 48 8b 91 88 18 00 00 mov 0x1888(%rcx),%rdx : hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->rnbc[i] += IXGBE_READ_REG(hw, IXGBE_RNBC(i)); : hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC(i)); 0.00 : 1ac6: 48 89 81 08 19 00 00 mov %rax,0x1908(%rcx) 0.00 : 1acd: 49 8d 80 00 b0 ff ff lea -0x5000(%r8),%rax 0.00 : 1ad4: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1adb: 8b 00 mov (%rax),%eax : hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC(i)); 0.00 : 1add: 89 c0 mov %eax,%eax 0.00 : 1adf: 48 01 d0 add %rdx,%rax : hwstats->pxonrxc[i] += 0.00 : 1ae2: 48 8b 91 90 15 00 00 mov 0x1590(%rcx),%rdx : hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->rnbc[i] += IXGBE_READ_REG(hw, IXGBE_RNBC(i)); : hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC(i)); : hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC(i)); 0.00 : 1ae9: 48 89 81 88 18 00 00 mov %rax,0x1888(%rcx) 0.00 : 1af0: 48 8d 86 60 8f 00 00 lea 0x8f60(%rsi),%rax 0.00 : 1af7: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1afe: 8b 00 mov (%rax),%eax : hwstats->pxonrxc[i] += 0.00 : 1b00: 89 c0 mov %eax,%eax 0.00 : 1b02: 48 01 d0 add %rdx,%rax 0.00 : 1b05: 48 89 81 90 15 00 00 mov %rax,0x1590(%rcx) : IXGBE_READ_REG(hw, IXGBE_PXONRXC(i)); : break; 0.00 : 1b0c: e9 e9 fe ff ff jmpq 19fa 0.00 : 1b11: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : struct ixgbe_hw *hw = &adapter->hw; : struct ixgbe_hw_stats *hwstats = &adapter->stats; : int i; : u32 data; : : if ((hw->fc.current_mode != ixgbe_fc_full) && 0.00 : 1b18: 8b 83 0c 13 00 00 mov 0x130c(%rbx),%eax 0.00 : 1b1e: 83 f8 03 cmp $0x3,%eax 0.00 : 1b21: 0f 84 1c 0c 00 00 je 2743 0.00 : 1b27: 83 e8 01 sub $0x1,%eax 0.00 : 1b2a: 0f 84 13 0c 00 00 je 2743 : hwstats->gprc -= missed_rx; : : ixgbe_update_xoff_received(adapter); : : /* 82598 hardware only has a 32 bit counter in the high register */ : switch (hw->mac.type) { 0.00 : 1b30: 8b 83 50 10 00 00 mov 0x1050(%rbx),%eax 0.00 : 1b36: 83 f8 02 cmp $0x2,%eax 0.00 : 1b39: 0f 84 7a 09 00 00 je 24b9 0.00 : 1b3f: 83 f8 03 cmp $0x3,%eax 0.00 : 1b42: 0f 84 e9 08 00 00 je 2431 0.00 : 1b48: 83 e8 01 sub $0x1,%eax 0.00 : 1b4b: 0f 85 88 00 00 00 jne 1bd9 0.00 : 1b51: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : case ixgbe_mac_82598EB: : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXC); 0.00 : 1b58: 48 8b 93 38 15 00 00 mov 0x1538(%rbx),%rdx 0.00 : 1b5f: 48 05 60 cf 00 00 add $0xcf60,%rax 0.00 : 1b65: 8b 00 mov (%rax),%eax 0.00 : 1b67: 89 c0 mov %eax,%eax 0.00 : 1b69: 48 01 d0 add %rdx,%rax : hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCH); 0.00 : 1b6c: 48 8b 93 a0 16 00 00 mov 0x16a0(%rbx),%rdx : ixgbe_update_xoff_received(adapter); : : /* 82598 hardware only has a 32 bit counter in the high register */ : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXC); 0.00 : 1b73: 48 89 83 38 15 00 00 mov %rax,0x1538(%rbx) 0.00 : 1b7a: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1b81: 48 05 8c 40 00 00 add $0x408c,%rax 0.00 : 1b87: 8b 00 mov (%rax),%eax : hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCH); 0.00 : 1b89: 89 c0 mov %eax,%eax 0.00 : 1b8b: 48 01 d0 add %rdx,%rax : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); 0.00 : 1b8e: 48 8b 93 a8 16 00 00 mov 0x16a8(%rbx),%rdx : : /* 82598 hardware only has a 32 bit counter in the high register */ : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXC); : hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCH); 0.00 : 1b95: 48 89 83 a0 16 00 00 mov %rax,0x16a0(%rbx) 0.00 : 1b9c: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1ba3: 48 05 94 40 00 00 add $0x4094,%rax 0.00 : 1ba9: 8b 00 mov (%rax),%eax : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); 0.00 : 1bab: 89 c0 mov %eax,%eax 0.00 : 1bad: 48 01 d0 add %rdx,%rax : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); 0.00 : 1bb0: 48 8b 93 28 17 00 00 mov 0x1728(%rbx),%rdx : /* 82598 hardware only has a 32 bit counter in the high register */ : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXC); : hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCH); : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); 0.00 : 1bb7: 48 89 83 a8 16 00 00 mov %rax,0x16a8(%rbx) 0.00 : 1bbe: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1bc5: 48 05 c4 40 00 00 add $0x40c4,%rax 0.00 : 1bcb: 8b 00 mov (%rax),%eax : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); 0.00 : 1bcd: 89 c0 mov %eax,%eax 0.00 : 1bcf: 48 01 d0 add %rdx,%rax 0.00 : 1bd2: 48 89 83 28 17 00 00 mov %rax,0x1728(%rbx) 0.00 : 1bd9: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1be0: 48 05 78 40 00 00 add $0x4078,%rax 0.00 : 1be6: 8b 00 mov (%rax),%eax : break; : default: : break; : } : bprc = IXGBE_READ_REG(hw, IXGBE_BPRC); : hwstats->bprc += bprc; 0.00 : 1be8: 89 c1 mov %eax,%ecx 0.00 : 1bea: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1bf1: 48 01 8b 88 16 00 00 add %rcx,0x1688(%rbx) : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); 0.00 : 1bf8: 48 8b 93 90 16 00 00 mov 0x1690(%rbx),%rdx 0.00 : 1bff: 48 05 7c 40 00 00 add $0x407c,%rax 0.00 : 1c05: 8b 00 mov (%rax),%eax 0.00 : 1c07: 89 c0 mov %eax,%eax 0.00 : 1c09: 48 01 d0 add %rdx,%rax : if (hw->mac.type == ixgbe_mac_82598EB) 0.00 : 1c0c: 83 bb 50 10 00 00 01 cmpl $0x1,0x1050(%rbx) : default: : break; : } : bprc = IXGBE_READ_REG(hw, IXGBE_BPRC); : hwstats->bprc += bprc; : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); 0.00 : 1c13: 48 89 83 90 16 00 00 mov %rax,0x1690(%rbx) : if (hw->mac.type == ixgbe_mac_82598EB) 0.00 : 1c1a: 0f 84 84 0b 00 00 je 27a4 0.00 : 1c20: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); 0.00 : 1c27: 48 8b 93 00 17 00 00 mov 0x1700(%rbx),%rdx 0.00 : 1c2e: 48 05 ac 40 00 00 add $0x40ac,%rax 0.00 : 1c34: 8b 00 mov (%rax),%eax 0.00 : 1c36: 89 c0 mov %eax,%eax 0.00 : 1c38: 48 01 d0 add %rdx,%rax : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); 0.00 : 1c3b: 48 8b 93 50 16 00 00 mov 0x1650(%rbx),%rdx : bprc = IXGBE_READ_REG(hw, IXGBE_BPRC); : hwstats->bprc += bprc; : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); : if (hw->mac.type == ixgbe_mac_82598EB) : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); 0.00 : 1c42: 48 89 83 00 17 00 00 mov %rax,0x1700(%rbx) 0.00 : 1c49: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1c50: 48 05 5c 40 00 00 add $0x405c,%rax 0.00 : 1c56: 8b 00 mov (%rax),%eax : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); 0.00 : 1c58: 89 c0 mov %eax,%eax 0.00 : 1c5a: 48 01 d0 add %rdx,%rax : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); 0.00 : 1c5d: 48 8b 93 58 16 00 00 mov 0x1658(%rbx),%rdx : hwstats->bprc += bprc; : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); : if (hw->mac.type == ixgbe_mac_82598EB) : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); 0.00 : 1c64: 48 89 83 50 16 00 00 mov %rax,0x1650(%rbx) 0.00 : 1c6b: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1c72: 48 05 60 40 00 00 add $0x4060,%rax 0.00 : 1c78: 8b 00 mov (%rax),%eax : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); 0.00 : 1c7a: 89 c0 mov %eax,%eax 0.00 : 1c7c: 48 01 d0 add %rdx,%rax : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); 0.00 : 1c7f: 48 8b 93 60 16 00 00 mov 0x1660(%rbx),%rdx : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); : if (hw->mac.type == ixgbe_mac_82598EB) : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); 0.00 : 1c86: 48 89 83 58 16 00 00 mov %rax,0x1658(%rbx) 0.00 : 1c8d: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1c94: 48 05 64 40 00 00 add $0x4064,%rax 0.00 : 1c9a: 8b 00 mov (%rax),%eax : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); 0.00 : 1c9c: 89 c0 mov %eax,%eax 0.00 : 1c9e: 48 01 d0 add %rdx,%rax : hwstats->prc511 += IXGBE_READ_REG(hw, IXGBE_PRC511); 0.00 : 1ca1: 48 8b 93 68 16 00 00 mov 0x1668(%rbx),%rdx : if (hw->mac.type == ixgbe_mac_82598EB) : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); 0.00 : 1ca8: 48 89 83 60 16 00 00 mov %rax,0x1660(%rbx) 0.00 : 1caf: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1cb6: 48 05 68 40 00 00 add $0x4068,%rax 0.00 : 1cbc: 8b 00 mov (%rax),%eax : hwstats->prc511 += IXGBE_READ_REG(hw, IXGBE_PRC511); 11.11 : 1cbe: 89 c0 mov %eax,%eax 0.00 : 1cc0: 48 01 d0 add %rdx,%rax : hwstats->prc1023 += IXGBE_READ_REG(hw, IXGBE_PRC1023); 0.00 : 1cc3: 48 8b 93 70 16 00 00 mov 0x1670(%rbx),%rdx : hwstats->mprc -= bprc; : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); : hwstats->prc511 += IXGBE_READ_REG(hw, IXGBE_PRC511); 0.00 : 1cca: 48 89 83 68 16 00 00 mov %rax,0x1668(%rbx) 0.00 : 1cd1: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1cd8: 48 05 6c 40 00 00 add $0x406c,%rax 0.00 : 1cde: 8b 00 mov (%rax),%eax : hwstats->prc1023 += IXGBE_READ_REG(hw, IXGBE_PRC1023); 0.00 : 1ce0: 89 c0 mov %eax,%eax 0.00 : 1ce2: 48 01 d0 add %rdx,%rax : hwstats->prc1522 += IXGBE_READ_REG(hw, IXGBE_PRC1522); 0.00 : 1ce5: 48 8b 93 78 16 00 00 mov 0x1678(%rbx),%rdx : hwstats->roc += IXGBE_READ_REG(hw, IXGBE_ROC); : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); : hwstats->prc511 += IXGBE_READ_REG(hw, IXGBE_PRC511); : hwstats->prc1023 += IXGBE_READ_REG(hw, IXGBE_PRC1023); 0.00 : 1cec: 48 89 83 70 16 00 00 mov %rax,0x1670(%rbx) 0.00 : 1cf3: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1cfa: 48 05 70 40 00 00 add $0x4070,%rax 0.00 : 1d00: 8b 00 mov (%rax),%eax : hwstats->prc1522 += IXGBE_READ_REG(hw, IXGBE_PRC1522); 0.00 : 1d02: 89 c0 mov %eax,%eax 0.00 : 1d04: 48 01 d0 add %rdx,%rax : hwstats->rlec += IXGBE_READ_REG(hw, IXGBE_RLEC); 0.00 : 1d07: 48 8b 93 28 15 00 00 mov 0x1528(%rbx),%rdx : hwstats->prc64 += IXGBE_READ_REG(hw, IXGBE_PRC64); : hwstats->prc127 += IXGBE_READ_REG(hw, IXGBE_PRC127); : hwstats->prc255 += IXGBE_READ_REG(hw, IXGBE_PRC255); : hwstats->prc511 += IXGBE_READ_REG(hw, IXGBE_PRC511); : hwstats->prc1023 += IXGBE_READ_REG(hw, IXGBE_PRC1023); : hwstats->prc1522 += IXGBE_READ_REG(hw, IXGBE_PRC1522); 0.00 : 1d0e: 48 89 83 78 16 00 00 mov %rax,0x1678(%rbx) 0.00 : 1d15: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1d1c: 48 05 40 40 00 00 add $0x4040,%rax 0.00 : 1d22: 8b 00 mov (%rax),%eax : hwstats->rlec += IXGBE_READ_REG(hw, IXGBE_RLEC); 0.00 : 1d24: 89 c0 mov %eax,%eax 0.00 : 1d26: 48 01 d0 add %rdx,%rax 0.00 : 1d29: 48 89 83 28 15 00 00 mov %rax,0x1528(%rbx) 0.00 : 1d30: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1d37: 48 05 60 3f 00 00 add $0x3f60,%rax 0.00 : 1d3d: 8b 30 mov (%rax),%esi : lxon = IXGBE_READ_REG(hw, IXGBE_LXONTXC); : hwstats->lxontxc += lxon; 0.00 : 1d3f: 89 f0 mov %esi,%eax 0.00 : 1d41: 48 01 83 30 15 00 00 add %rax,0x1530(%rbx) 0.00 : 1d48: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1d4f: 48 05 68 3f 00 00 add $0x3f68,%rax 0.00 : 1d55: 8b 10 mov (%rax),%edx : lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); : hwstats->lxofftxc += lxoff; 0.00 : 1d57: 89 d0 mov %edx,%eax 0.00 : 1d59: 48 01 83 40 15 00 00 add %rax,0x1540(%rbx) 0.00 : 1d60: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : hwstats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); 0.00 : 1d67: 48 8b 8b 98 16 00 00 mov 0x1698(%rbx),%rcx 0.00 : 1d6e: 48 05 80 40 00 00 add $0x4080,%rax 0.00 : 1d74: 8b 00 mov (%rax),%eax 0.00 : 1d76: 89 c0 mov %eax,%eax 0.00 : 1d78: 48 01 c8 add %rcx,%rax : hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); 0.00 : 1d7b: 48 8b 8b 70 17 00 00 mov 0x1770(%rbx),%rcx : hwstats->rlec += IXGBE_READ_REG(hw, IXGBE_RLEC); : lxon = IXGBE_READ_REG(hw, IXGBE_LXONTXC); : hwstats->lxontxc += lxon; : lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); : hwstats->lxofftxc += lxoff; : hwstats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); 0.00 : 1d82: 48 89 83 98 16 00 00 mov %rax,0x1698(%rbx) 0.00 : 1d89: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1d90: 48 05 f0 40 00 00 add $0x40f0,%rax 0.00 : 1d96: 8b 00 mov (%rax),%eax : hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); 0.00 : 1d98: 89 c0 mov %eax,%eax : /* : * 82598 errata - tx of flow control packets is included in tx counters : */ : xon_off_tot = lxon + lxoff; 0.00 : 1d9a: 01 f2 add %esi,%edx : lxon = IXGBE_READ_REG(hw, IXGBE_LXONTXC); : hwstats->lxontxc += lxon; : lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); : hwstats->lxofftxc += lxoff; : hwstats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); : hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); 0.00 : 1d9c: 48 01 c8 add %rcx,%rax : /* : * 82598 errata - tx of flow control packets is included in tx counters : */ : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; 0.00 : 1d9f: 89 d1 mov %edx,%ecx : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); 0.00 : 1da1: c1 e2 06 shl $0x6,%edx : lxon = IXGBE_READ_REG(hw, IXGBE_LXONTXC); : hwstats->lxontxc += lxon; : lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); : hwstats->lxofftxc += lxoff; : hwstats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); : hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); 0.00 : 1da4: 48 89 83 70 17 00 00 mov %rax,0x1770(%rbx) 0.00 : 1dab: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : * 82598 errata - tx of flow control packets is included in tx counters : */ : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); 0.00 : 1db2: 89 d2 mov %edx,%edx : hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); : /* : * 82598 errata - tx of flow control packets is included in tx counters : */ : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; 0.00 : 1db4: 48 29 8b 98 16 00 00 sub %rcx,0x1698(%rbx) : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); 0.00 : 1dbb: 48 29 93 a8 16 00 00 sub %rdx,0x16a8(%rbx) : /* : * 82598 errata - tx of flow control packets is included in tx counters : */ : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; : hwstats->mptc -= xon_off_tot; 0.00 : 1dc2: 48 29 8b 70 17 00 00 sub %rcx,0x1770(%rbx) : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); 0.00 : 1dc9: 48 8b 93 f0 16 00 00 mov 0x16f0(%rbx),%rdx 0.00 : 1dd0: 48 05 a4 40 00 00 add $0x40a4,%rax 0.00 : 1dd6: 8b 00 mov (%rax),%eax 0.00 : 1dd8: 89 c0 mov %eax,%eax 0.00 : 1dda: 48 01 d0 add %rdx,%rax : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); 0.00 : 1ddd: 48 8b 93 f8 16 00 00 mov 0x16f8(%rbx),%rdx : */ : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); 0.00 : 1de4: 48 89 83 f0 16 00 00 mov %rax,0x16f0(%rbx) 0.00 : 1deb: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1df2: 48 05 a8 40 00 00 add $0x40a8,%rax 0.00 : 1df8: 8b 00 mov (%rax),%eax : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); 0.00 : 1dfa: 89 c0 mov %eax,%eax 0.00 : 1dfc: 48 01 d0 add %rdx,%rax : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); 0.00 : 1dff: 48 8b 93 08 17 00 00 mov 0x1708(%rbx),%rdx : xon_off_tot = lxon + lxoff; : hwstats->gptc -= xon_off_tot; : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); 0.00 : 1e06: 48 89 83 f8 16 00 00 mov %rax,0x16f8(%rbx) 0.00 : 1e0d: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1e14: 48 05 b0 40 00 00 add $0x40b0,%rax 0.00 : 1e1a: 8b 00 mov (%rax),%eax : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); 0.00 : 1e1c: 89 c0 mov %eax,%eax 0.00 : 1e1e: 48 01 d0 add %rdx,%rax : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); 0.00 : 1e21: 48 8b 93 30 17 00 00 mov 0x1730(%rbx),%rdx : hwstats->gptc -= xon_off_tot; : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); 0.00 : 1e28: 48 89 83 08 17 00 00 mov %rax,0x1708(%rbx) 0.00 : 1e2f: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1e36: 48 05 d0 40 00 00 add $0x40d0,%rax 0.00 : 1e3c: 8b 00 mov (%rax),%eax : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); 0.00 : 1e3e: 89 c0 mov %eax,%eax 0.00 : 1e40: 48 01 d0 add %rdx,%rax : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); 0.00 : 1e43: 48 8b 93 40 17 00 00 mov 0x1740(%rbx),%rdx : hwstats->mptc -= xon_off_tot; : hwstats->gotc -= (xon_off_tot * (ETH_ZLEN + ETH_FCS_LEN)); : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); 0.00 : 1e4a: 48 89 83 30 17 00 00 mov %rax,0x1730(%rbx) 0.00 : 1e51: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1e58: 48 05 d8 40 00 00 add $0x40d8,%rax 0.00 : 1e5e: 8b 00 mov (%rax),%eax : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; 0.00 : 1e60: 89 c0 mov %eax,%eax 0.00 : 1e62: 48 01 d0 add %rdx,%rax : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); 0.00 : 1e65: 48 8b 93 48 17 00 00 mov 0x1748(%rbx),%rdx : hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; 0.00 : 1e6c: 48 29 c8 sub %rcx,%rax 0.00 : 1e6f: 48 89 83 40 17 00 00 mov %rax,0x1740(%rbx) 0.00 : 1e76: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1e7d: 48 05 dc 40 00 00 add $0x40dc,%rax 0.00 : 1e83: 8b 00 mov (%rax),%eax : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); 0.00 : 1e85: 89 c0 mov %eax,%eax 0.00 : 1e87: 48 01 d0 add %rdx,%rax : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); 0.00 : 1e8a: 48 8b 93 50 17 00 00 mov 0x1750(%rbx),%rdx : hwstats->rfc += IXGBE_READ_REG(hw, IXGBE_RFC); : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); 0.00 : 1e91: 48 89 83 48 17 00 00 mov %rax,0x1748(%rbx) 0.00 : 1e98: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1e9f: 48 05 e0 40 00 00 add $0x40e0,%rax 0.00 : 1ea5: 8b 00 mov (%rax),%eax : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); 0.00 : 1ea7: 89 c0 mov %eax,%eax 0.00 : 1ea9: 48 01 d0 add %rdx,%rax : hwstats->ptc511 += IXGBE_READ_REG(hw, IXGBE_PTC511); 0.00 : 1eac: 48 8b 93 58 17 00 00 mov 0x1758(%rbx),%rdx : hwstats->rjc += IXGBE_READ_REG(hw, IXGBE_RJC); : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); 0.00 : 1eb3: 48 89 83 50 17 00 00 mov %rax,0x1750(%rbx) 0.00 : 1eba: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1ec1: 48 05 e4 40 00 00 add $0x40e4,%rax 0.00 : 1ec7: 8b 00 mov (%rax),%eax : hwstats->ptc511 += IXGBE_READ_REG(hw, IXGBE_PTC511); 0.00 : 1ec9: 89 c0 mov %eax,%eax 0.00 : 1ecb: 48 01 d0 add %rdx,%rax : hwstats->ptc1023 += IXGBE_READ_REG(hw, IXGBE_PTC1023); 0.00 : 1ece: 48 8b 93 60 17 00 00 mov 0x1760(%rbx),%rdx : hwstats->tpr += IXGBE_READ_REG(hw, IXGBE_TPR); : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); : hwstats->ptc511 += IXGBE_READ_REG(hw, IXGBE_PTC511); 0.00 : 1ed5: 48 89 83 58 17 00 00 mov %rax,0x1758(%rbx) 0.00 : 1edc: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1ee3: 48 05 e8 40 00 00 add $0x40e8,%rax 0.00 : 1ee9: 8b 00 mov (%rax),%eax : hwstats->ptc1023 += IXGBE_READ_REG(hw, IXGBE_PTC1023); 0.00 : 1eeb: 89 c0 mov %eax,%eax 0.00 : 1eed: 48 01 d0 add %rdx,%rax : hwstats->ptc1522 += IXGBE_READ_REG(hw, IXGBE_PTC1522); 0.00 : 1ef0: 48 8b 93 68 17 00 00 mov 0x1768(%rbx),%rdx : hwstats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); : hwstats->ptc64 -= xon_off_tot; : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); : hwstats->ptc511 += IXGBE_READ_REG(hw, IXGBE_PTC511); : hwstats->ptc1023 += IXGBE_READ_REG(hw, IXGBE_PTC1023); 0.00 : 1ef7: 48 89 83 60 17 00 00 mov %rax,0x1760(%rbx) 0.00 : 1efe: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1f05: 48 05 ec 40 00 00 add $0x40ec,%rax 0.00 : 1f0b: 8b 00 mov (%rax),%eax : hwstats->ptc1522 += IXGBE_READ_REG(hw, IXGBE_PTC1522); 0.00 : 1f0d: 89 c0 mov %eax,%eax 0.00 : 1f0f: 48 01 d0 add %rdx,%rax : hwstats->bptc += IXGBE_READ_REG(hw, IXGBE_BPTC); 0.00 : 1f12: 48 8b 93 78 17 00 00 mov 0x1778(%rbx),%rdx : hwstats->ptc64 -= xon_off_tot; : hwstats->ptc127 += IXGBE_READ_REG(hw, IXGBE_PTC127); : hwstats->ptc255 += IXGBE_READ_REG(hw, IXGBE_PTC255); : hwstats->ptc511 += IXGBE_READ_REG(hw, IXGBE_PTC511); : hwstats->ptc1023 += IXGBE_READ_REG(hw, IXGBE_PTC1023); : hwstats->ptc1522 += IXGBE_READ_REG(hw, IXGBE_PTC1522); 0.00 : 1f19: 48 89 83 68 17 00 00 mov %rax,0x1768(%rbx) 0.00 : 1f20: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 1f27: 48 05 f4 40 00 00 add $0x40f4,%rax 0.00 : 1f2d: 8b 00 mov (%rax),%eax : hwstats->bptc += IXGBE_READ_REG(hw, IXGBE_BPTC); 0.00 : 1f2f: 89 c0 mov %eax,%eax 0.00 : 1f31: 48 01 d0 add %rdx,%rax 0.00 : 1f34: 48 89 83 78 17 00 00 mov %rax,0x1778(%rbx) : /* Fill out the OS statistics structure */ : net_stats->multicast = hwstats->mprc; 0.00 : 1f3b: 48 8b 83 90 16 00 00 mov 0x1690(%rbx),%rax 0.00 : 1f42: 49 89 87 08 01 00 00 mov %rax,0x108(%r15) : : /* Rx Errors */ : net_stats->rx_errors = hwstats->crcerrs + 0.00 : 1f49: 48 8b 83 28 15 00 00 mov 0x1528(%rbx),%rax 0.00 : 1f50: 48 03 83 b0 14 00 00 add 0x14b0(%rbx),%rax : hwstats->rlec; : net_stats->rx_dropped = 0; 0.00 : 1f57: 49 c7 87 f8 00 00 00 movq $0x0,0xf8(%r15) 0.00 : 1f5e: 00 00 00 00 : hwstats->bptc += IXGBE_READ_REG(hw, IXGBE_BPTC); : /* Fill out the OS statistics structure */ : net_stats->multicast = hwstats->mprc; : : /* Rx Errors */ : net_stats->rx_errors = hwstats->crcerrs + 0.00 : 1f62: 49 89 87 e8 00 00 00 mov %rax,0xe8(%r15) : hwstats->rlec; : net_stats->rx_dropped = 0; : net_stats->rx_length_errors = hwstats->rlec; 0.00 : 1f69: 48 8b 83 28 15 00 00 mov 0x1528(%rbx),%rax 0.00 : 1f70: 49 89 87 18 01 00 00 mov %rax,0x118(%r15) : net_stats->rx_crc_errors = hwstats->crcerrs; 0.00 : 1f77: 48 8b 83 b0 14 00 00 mov 0x14b0(%rbx),%rax : net_stats->rx_missed_errors = total_mpc; 0.00 : 1f7e: 4d 89 b7 40 01 00 00 mov %r14,0x140(%r15) : /* Rx Errors */ : net_stats->rx_errors = hwstats->crcerrs + : hwstats->rlec; : net_stats->rx_dropped = 0; : net_stats->rx_length_errors = hwstats->rlec; : net_stats->rx_crc_errors = hwstats->crcerrs; 0.00 : 1f85: 49 89 87 28 01 00 00 mov %rax,0x128(%r15) 0.00 : 1f8c: 48 8b 83 10 02 00 00 mov 0x210(%rbx),%rax : /* : * VF Stats Collection - skip while resetting because these : * are not clear on read and otherwise you'll sometimes get : * crazy values. : */ : if (!test_bit(__IXGBE_RESETTING, &adapter->state)) { 0.00 : 1f93: a8 02 test $0x2,%al 0.00 : 1f95: 0f 85 45 02 00 00 jne 21e0 : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : 1f9b: 8b 83 58 7c 00 00 mov 0x7c58(%rbx),%eax 0.00 : 1fa1: 85 c0 test %eax,%eax 0.00 : 1fa3: 0f 84 37 02 00 00 je 21e0 0.00 : 1fa9: 45 31 c9 xor %r9d,%r9d 0.00 : 1fac: bf 1c 10 00 00 mov $0x101c,%edi 0.00 : 1fb1: 41 b8 00 84 00 00 mov $0x8400,%r8d 0.00 : 1fb7: 41 ba 00 83 00 00 mov $0x8300,%r10d : UPDATE_VF_COUNTER_32bit(IXGBE_PVFGPRC(i), \ 0.00 : 1fbd: 48 bd 00 00 00 00 01 movabs $0x100000000,%rbp 0.00 : 1fc4: 00 00 00 0.00 : 1fc7: 49 bb 00 00 00 00 ff movabs $0xffffffff00000000,%r11 0.00 : 1fce: ff ff ff : adapter->vfinfo[i].last_vfstats.gprc, \ : adapter->vfinfo[i].vfstats.gprc); : UPDATE_VF_COUNTER_32bit(IXGBE_PVFGPTC(i), \ : adapter->vfinfo[i].last_vfstats.gptc, \ : adapter->vfinfo[i].vfstats.gptc); : UPDATE_VF_COUNTER_36bit(IXGBE_PVFGORC_LSB(i), \ 0.00 : 1fd1: 49 bd 00 00 00 00 10 movabs $0x1000000000,%r13 0.00 : 1fd8: 00 00 00 0.00 : 1fdb: 49 bc 00 00 00 00 f0 movabs $0xfffffff000000000,%r12 0.00 : 1fe2: ff ff ff 0.00 : 1fe5: 0f 1f 00 nopl (%rax) 0.00 : 1fe8: 89 f8 mov %edi,%eax 0.00 : 1fea: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 1ff1: 8b 00 mov (%rax),%eax : * are not clear on read and otherwise you'll sometimes get : * crazy values. : */ : if (!test_bit(__IXGBE_RESETTING, &adapter->state)) { : for (i = 0; i < adapter->num_vfs; i++) { : UPDATE_VF_COUNTER_32bit(IXGBE_PVFGPRC(i), \ 0.00 : 1ff3: 89 c2 mov %eax,%edx 0.00 : 1ff5: 44 89 c8 mov %r9d,%eax 0.00 : 1ff8: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 1ffc: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 2000: 48 8d 0c c5 00 00 00 lea 0x0(,%rax,8),%rcx 0.00 : 2007: 00 0.00 : 2008: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 200f: 48 01 c8 add %rcx,%rax 0.00 : 2012: 48 3b 50 78 cmp 0x78(%rax),%rdx 0.00 : 2016: 73 0e jae 2026 0.00 : 2018: 48 01 68 50 add %rbp,0x50(%rax) 0.00 : 201c: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2023: 48 01 c8 add %rcx,%rax 0.00 : 2026: 48 89 50 78 mov %rdx,0x78(%rax) 0.00 : 202a: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2031: 48 01 c8 add %rcx,%rax 0.00 : 2034: 4c 21 58 50 and %r11,0x50(%rax) 0.00 : 2038: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 203f: 48 01 c8 add %rcx,%rax 0.00 : 2042: 48 09 50 50 or %rdx,0x50(%rax) 0.00 : 2046: 44 89 d0 mov %r10d,%eax 0.00 : 2049: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 2050: 8b 00 mov (%rax),%eax : adapter->vfinfo[i].last_vfstats.gprc, \ : adapter->vfinfo[i].vfstats.gprc); : UPDATE_VF_COUNTER_32bit(IXGBE_PVFGPTC(i), \ 0.00 : 2052: 89 c2 mov %eax,%edx 0.00 : 2054: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 205b: 48 01 c8 add %rcx,%rax 0.00 : 205e: 48 3b 90 88 00 00 00 cmp 0x88(%rax),%rdx 0.00 : 2065: 73 0e jae 2075 0.00 : 2067: 48 01 68 60 add %rbp,0x60(%rax) 0.00 : 206b: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2072: 48 01 c8 add %rcx,%rax 0.00 : 2075: 48 89 90 88 00 00 00 mov %rdx,0x88(%rax) 0.00 : 207c: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2083: 48 01 c8 add %rcx,%rax 0.00 : 2086: 4c 21 58 60 and %r11,0x60(%rax) 0.00 : 208a: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2091: 48 01 c8 add %rcx,%rax 0.00 : 2094: 48 09 50 60 or %rdx,0x60(%rax) 0.00 : 2098: 8d 47 04 lea 0x4(%rdi),%eax 0.00 : 209b: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 20a2: 8b 10 mov (%rax),%edx 0.00 : 20a4: 8d 87 04 c0 00 00 lea 0xc004(%rdi),%eax 0.00 : 20aa: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 20b1: 8b 00 mov (%rax),%eax : adapter->vfinfo[i].last_vfstats.gptc, \ : adapter->vfinfo[i].vfstats.gptc); : UPDATE_VF_COUNTER_36bit(IXGBE_PVFGORC_LSB(i), \ 0.00 : 20b3: 48 89 c6 mov %rax,%rsi 0.00 : 20b6: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 20bd: 89 d2 mov %edx,%edx 0.00 : 20bf: 48 c1 e6 20 shl $0x20,%rsi 0.00 : 20c3: 48 09 d6 or %rdx,%rsi 0.00 : 20c6: 48 01 c8 add %rcx,%rax 0.00 : 20c9: 48 3b b0 80 00 00 00 cmp 0x80(%rax),%rsi 0.00 : 20d0: 73 0e jae 20e0 0.00 : 20d2: 4c 01 68 58 add %r13,0x58(%rax) 0.00 : 20d6: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 20dd: 48 01 c8 add %rcx,%rax 0.00 : 20e0: 48 89 b0 80 00 00 00 mov %rsi,0x80(%rax) 0.00 : 20e7: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 20ee: 48 01 c8 add %rcx,%rax 0.00 : 20f1: 4c 21 60 58 and %r12,0x58(%rax) 0.00 : 20f5: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 20fc: 48 01 c8 add %rcx,%rax 0.00 : 20ff: 48 09 70 58 or %rsi,0x58(%rax) 0.00 : 2103: 44 89 c0 mov %r8d,%eax 0.00 : 2106: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 210d: 8b 10 mov (%rax),%edx 0.00 : 210f: 41 8d 40 04 lea 0x4(%r8),%eax 0.00 : 2113: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 211a: 8b 00 mov (%rax),%eax : IXGBE_PVFGORC_MSB(i), \ : adapter->vfinfo[i].last_vfstats.gorc, \ : adapter->vfinfo[i].vfstats.gorc); : UPDATE_VF_COUNTER_36bit(IXGBE_PVFGOTC_LSB(i), \ 0.00 : 211c: 48 89 c6 mov %rax,%rsi 0.00 : 211f: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2126: 89 d2 mov %edx,%edx 0.00 : 2128: 48 c1 e6 20 shl $0x20,%rsi 0.00 : 212c: 48 09 d6 or %rdx,%rsi 0.00 : 212f: 48 01 c8 add %rcx,%rax 0.00 : 2132: 48 3b b0 90 00 00 00 cmp 0x90(%rax),%rsi 0.00 : 2139: 73 0e jae 2149 0.00 : 213b: 4c 01 68 68 add %r13,0x68(%rax) 0.00 : 213f: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2146: 48 01 c8 add %rcx,%rax 0.00 : 2149: 48 89 b0 90 00 00 00 mov %rsi,0x90(%rax) 0.00 : 2150: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2157: 48 01 c8 add %rcx,%rax 0.00 : 215a: 4c 21 60 68 and %r12,0x68(%rax) 0.00 : 215e: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2165: 48 01 c8 add %rcx,%rax 0.00 : 2168: 48 09 70 68 or %rsi,0x68(%rax) 0.00 : 216c: 8d 87 00 c0 00 00 lea 0xc000(%rdi),%eax 0.00 : 2172: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 2179: 8b 00 mov (%rax),%eax : IXGBE_PVFGOTC_MSB(i), \ : adapter->vfinfo[i].last_vfstats.gotc, \ : adapter->vfinfo[i].vfstats.gotc); : UPDATE_VF_COUNTER_32bit(IXGBE_PVFMPRC(i), \ 0.00 : 217b: 89 c2 mov %eax,%edx 0.00 : 217d: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 2184: 48 01 c8 add %rcx,%rax 0.00 : 2187: 48 3b 90 98 00 00 00 cmp 0x98(%rax),%rdx 0.00 : 218e: 73 0e jae 219e 0.00 : 2190: 48 01 68 70 add %rbp,0x70(%rax) 0.00 : 2194: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax 0.00 : 219b: 48 01 c8 add %rcx,%rax 0.00 : 219e: 48 89 90 98 00 00 00 mov %rdx,0x98(%rax) 0.00 : 21a5: 48 8b 83 60 7c 00 00 mov 0x7c60(%rbx),%rax : * VF Stats Collection - skip while resetting because these : * are not clear on read and otherwise you'll sometimes get : * crazy values. : */ : if (!test_bit(__IXGBE_RESETTING, &adapter->state)) { : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : 21ac: 41 83 c1 01 add $0x1,%r9d 0.00 : 21b0: 83 c7 40 add $0x40,%edi 0.00 : 21b3: 41 83 c0 08 add $0x8,%r8d 0.00 : 21b7: 41 83 c2 04 add $0x4,%r10d : adapter->vfinfo[i].vfstats.gorc); : UPDATE_VF_COUNTER_36bit(IXGBE_PVFGOTC_LSB(i), \ : IXGBE_PVFGOTC_MSB(i), \ : adapter->vfinfo[i].last_vfstats.gotc, \ : adapter->vfinfo[i].vfstats.gotc); : UPDATE_VF_COUNTER_32bit(IXGBE_PVFMPRC(i), \ 0.00 : 21bb: 48 01 c8 add %rcx,%rax 0.00 : 21be: 4c 21 58 70 and %r11,0x70(%rax) 0.00 : 21c2: 48 89 c8 mov %rcx,%rax 0.00 : 21c5: 48 03 83 60 7c 00 00 add 0x7c60(%rbx),%rax 0.00 : 21cc: 48 09 50 70 or %rdx,0x70(%rax) : * VF Stats Collection - skip while resetting because these : * are not clear on read and otherwise you'll sometimes get : * crazy values. : */ : if (!test_bit(__IXGBE_RESETTING, &adapter->state)) { : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : 21d0: 44 39 8b 58 7c 00 00 cmp %r9d,0x7c58(%rbx) 0.00 : 21d7: 0f 87 0b fe ff ff ja 1fe8 0.00 : 21dd: 0f 1f 00 nopl (%rax) : UPDATE_VF_COUNTER_32bit(IXGBE_PVFMPRC(i), \ : adapter->vfinfo[i].last_vfstats.mprc, \ : adapter->vfinfo[i].vfstats.mprc); : } : } : } 0.00 : 21e0: 48 83 c4 28 add $0x28,%rsp 0.00 : 21e4: 5b pop %rbx 0.00 : 21e5: 5d pop %rbp 0.00 : 21e6: 41 5c pop %r12 0.00 : 21e8: 41 5d pop %r13 0.00 : 21ea: 41 5e pop %r14 0.00 : 21ec: 41 5f pop %r15 0.00 : 21ee: c3 retq : return; : : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { : u64 rsc_count = 0; : u64 rsc_flush = 0; : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 21ef: 44 8b 9f 28 02 00 00 mov 0x228(%rdi),%r11d 0.00 : 21f6: 31 f6 xor %esi,%esi 0.00 : 21f8: 31 c9 xor %ecx,%ecx 0.00 : 21fa: 45 85 db test %r11d,%r11d 0.00 : 21fd: 74 32 je 2231 0.00 : 21ff: 41 8d 43 ff lea -0x1(%r11),%eax 0.00 : 2203: 31 f6 xor %esi,%esi 0.00 : 2205: 31 c9 xor %ecx,%ecx 0.00 : 2207: 31 d2 xor %edx,%edx 0.00 : 2209: 48 8d 3c c5 08 00 00 lea 0x8(,%rax,8),%rdi 0.00 : 2210: 00 0.00 : 2211: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : rsc_count += adapter->rx_ring[i]->rx_stats.rsc_count; 0.00 : 2218: 48 8b 84 13 d8 04 00 mov 0x4d8(%rbx,%rdx,1),%rax 0.00 : 221f: 00 : rsc_flush += adapter->rx_ring[i]->rx_stats.rsc_flush; 0.00 : 2220: 48 83 c2 08 add $0x8,%rdx : : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { : u64 rsc_count = 0; : u64 rsc_flush = 0; : for (i = 0; i < adapter->num_rx_queues; i++) { : rsc_count += adapter->rx_ring[i]->rx_stats.rsc_count; 0.00 : 2224: 48 03 70 68 add 0x68(%rax),%rsi : rsc_flush += adapter->rx_ring[i]->rx_stats.rsc_flush; 0.00 : 2228: 48 03 48 70 add 0x70(%rax),%rcx : return; : : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { : u64 rsc_count = 0; : u64 rsc_flush = 0; : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 222c: 48 39 fa cmp %rdi,%rdx 0.00 : 222f: 75 e7 jne 2218 : rsc_count += adapter->rx_ring[i]->rx_stats.rsc_count; : rsc_flush += adapter->rx_ring[i]->rx_stats.rsc_flush; : } : adapter->rsc_total_count = rsc_count; 0.00 : 2231: 48 89 b3 30 07 00 00 mov %rsi,0x730(%rbx) : adapter->rsc_total_flush = rsc_flush; 0.00 : 2238: 48 89 8b 38 07 00 00 mov %rcx,0x738(%rbx) 0.00 : 223f: e9 06 f6 ff ff jmpq 184a 0.00 : 2244: 0f 1f 40 00 nopl 0x0(%rax) : net_stats->tx_packets = packets; : : hwstats->crcerrs += IXGBE_READ_REG(hw, IXGBE_CRCERRS); : : /* 8 register reads */ : for (i = 0; i < 8; i++) { 0.00 : 2248: 66 be 30 60 mov $0x6030,%si 0.00 : 224c: b9 00 87 00 00 mov $0x8700,%ecx 0.00 : 2251: eb 1a jmp 226d 0.00 : 2253: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 2258: 48 83 c6 40 add $0x40,%rsi 0.00 : 225c: 48 83 c1 08 add $0x8,%rcx : break; : } : } : : /*16 register reads */ : for (i = 0; i < 16; i++) { 0.00 : 2260: 48 81 fe 30 64 00 00 cmp $0x6430,%rsi 0.00 : 2267: 0f 84 c3 00 00 00 je 2330 0.00 : 226d: 48 89 f0 mov %rsi,%rax : hwstats->qptc[i] += IXGBE_READ_REG(hw, IXGBE_QPTC(i)); 0.00 : 2270: 48 8b 94 0b 08 91 ff mov -0x6ef8(%rbx,%rcx,1),%rdx 0.00 : 2277: ff 0.00 : 2278: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 227f: 8b 00 mov (%rax),%eax 0.00 : 2281: 89 c0 mov %eax,%eax 0.00 : 2283: 48 01 d0 add %rdx,%rax : hwstats->qprc[i] += IXGBE_READ_REG(hw, IXGBE_QPRC(i)); 0.00 : 2286: 48 8b 94 0b 88 90 ff mov -0x6f78(%rbx,%rcx,1),%rdx 0.00 : 228d: ff : } : } : : /*16 register reads */ : for (i = 0; i < 16; i++) { : hwstats->qptc[i] += IXGBE_READ_REG(hw, IXGBE_QPTC(i)); 0.00 : 228e: 48 89 84 0b 08 91 ff mov %rax,-0x6ef8(%rbx,%rcx,1) 0.00 : 2295: ff 0.00 : 2296: 48 8d 86 00 b0 ff ff lea -0x5000(%rsi),%rax 0.00 : 229d: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 22a4: 8b 00 mov (%rax),%eax : hwstats->qprc[i] += IXGBE_READ_REG(hw, IXGBE_QPRC(i)); 0.00 : 22a6: 89 c0 mov %eax,%eax 0.00 : 22a8: 48 01 d0 add %rdx,%rax 0.00 : 22ab: 48 89 84 0b 88 90 ff mov %rax,-0x6f78(%rbx,%rcx,1) 0.00 : 22b2: ff : if ((hw->mac.type == ixgbe_mac_82599EB) || 0.00 : 22b3: 8b 83 50 10 00 00 mov 0x1050(%rbx),%eax 0.00 : 22b9: 83 e8 02 sub $0x2,%eax 0.00 : 22bc: 83 f8 01 cmp $0x1,%eax 0.00 : 22bf: 77 97 ja 2258 0.00 : 22c1: 48 89 c8 mov %rcx,%rax : (hw->mac.type == ixgbe_mac_X540)) { : hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC_L(i)); 0.00 : 22c4: 48 8b 94 0b 08 92 ff mov -0x6df8(%rbx,%rcx,1),%rdx 0.00 : 22cb: ff 0.00 : 22cc: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 22d3: 8b 00 mov (%rax),%eax 11.11 : 22d5: 89 c0 mov %eax,%eax 0.00 : 22d7: 48 01 d0 add %rdx,%rax 0.00 : 22da: 48 89 84 0b 08 92 ff mov %rax,-0x6df8(%rbx,%rcx,1) 0.00 : 22e1: ff 0.00 : 22e2: 48 8d 41 04 lea 0x4(%rcx),%rax 0.00 : 22e6: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 22ed: 8b 00 mov (%rax),%eax 11.11 : 22ef: 48 8d 86 04 b0 ff ff lea -0x4ffc(%rsi),%rax : IXGBE_READ_REG(hw, IXGBE_QBTC_H(i)); /* to clear */ : hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC_L(i)); 0.00 : 22f6: 48 8b 94 0b 88 91 ff mov -0x6e78(%rbx,%rcx,1),%rdx 0.00 : 22fd: ff 0.00 : 22fe: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 2305: 8b 00 mov (%rax),%eax 11.11 : 2307: 89 c0 mov %eax,%eax 0.00 : 2309: 48 01 d0 add %rdx,%rax 0.00 : 230c: 48 89 84 0b 88 91 ff mov %rax,-0x6e78(%rbx,%rcx,1) 0.00 : 2313: ff 0.00 : 2314: 48 8d 86 08 b0 ff ff lea -0x4ff8(%rsi),%rax 0.00 : 231b: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 2322: 8b 00 mov (%rax),%eax 22.22 : 2324: e9 2f ff ff ff jmpq 2258 0.00 : 2329: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 2330: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : IXGBE_READ_REG(hw, IXGBE_QBRC_H(i)); /* to clear */ : } : } : : hwstats->gprc += IXGBE_READ_REG(hw, IXGBE_GPRC); 0.00 : 2337: 48 8b 8b 80 16 00 00 mov 0x1680(%rbx),%rcx 0.00 : 233e: 48 05 74 40 00 00 add $0x4074,%rax 0.00 : 2344: 8b 00 mov (%rax),%eax : /* work around hardware counting issue */ : hwstats->gprc -= missed_rx; 0.00 : 2346: 44 89 ca mov %r9d,%edx 0.00 : 2349: 89 c0 mov %eax,%eax 0.00 : 234b: 48 29 d1 sub %rdx,%rcx : { : struct ixgbe_hw *hw = &adapter->hw; : struct ixgbe_hw_stats *hwstats = &adapter->stats; : u32 xoff[8] = {0}; : int i; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; 0.00 : 234e: 0f b6 93 7a 0a 00 00 movzbl 0xa7a(%rbx),%edx : } : } : : hwstats->gprc += IXGBE_READ_REG(hw, IXGBE_GPRC); : /* work around hardware counting issue */ : hwstats->gprc -= missed_rx; 0.00 : 2355: 48 01 c1 add %rax,%rcx : u32 xoff[8] = {0}; : int i; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; : : #ifdef HAVE_DCBNL_IEEE : if (adapter->ixgbe_ieee_pfc) 0.00 : 2358: 48 8b 83 50 09 00 00 mov 0x950(%rbx),%rax : } : } : : hwstats->gprc += IXGBE_READ_REG(hw, IXGBE_GPRC); : /* work around hardware counting issue */ : hwstats->gprc -= missed_rx; 0.00 : 235f: 48 89 8b 80 16 00 00 mov %rcx,0x1680(%rbx) : u32 xoff[8] = {0}; : int i; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; : : #ifdef HAVE_DCBNL_IEEE : if (adapter->ixgbe_ieee_pfc) 0.00 : 2366: 48 85 c0 test %rax,%rax 0.00 : 2369: 74 12 je 237d : pfc_en |= !!(adapter->ixgbe_ieee_pfc->pfc_en); 0.00 : 236b: 80 78 01 00 cmpb $0x0,0x1(%rax) 0.00 : 236f: 0f b6 d2 movzbl %dl,%edx 0.00 : 2372: 0f 95 c0 setne %al 0.00 : 2375: 0f b6 c0 movzbl %al,%eax 0.00 : 2378: 09 d0 or %edx,%eax 0.00 : 237a: 0f 95 c2 setne %dl : : #endif : if (!(adapter->flags & IXGBE_FLAG_DCB_ENABLED) || !pfc_en) { 0.00 : 237d: f6 83 19 02 00 00 04 testb $0x4,0x219(%rbx) 0.00 : 2384: 0f 84 8e f7 ff ff je 1b18 0.00 : 238a: 84 d2 test %dl,%dl 0.00 : 238c: 0f 84 86 f7 ff ff je 1b18 : : static void ixgbe_update_xoff_received(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : struct ixgbe_hw_stats *hwstats = &adapter->stats; : u32 xoff[8] = {0}; 0.00 : 2392: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 2399: 00 0.00 : 239a: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 23a1: 00 00 0.00 : 23a3: 31 c9 xor %ecx,%ecx 0.00 : 23a5: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 23ac: 00 00 0.00 : 23ae: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : 23b5: 00 00 0.00 : 23b7: ba 20 cf 00 00 mov $0xcf20,%edx 0.00 : 23bc: 48 89 e6 mov %rsp,%rsi 0.00 : 23bf: eb 52 jmp 2413 0.00 : 23c1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 23c8: 48 8d 82 40 72 ff ff lea -0x8dc0(%rdx),%rax 0.00 : 23cf: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 23d6: 8b 00 mov (%rax),%eax : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : xoff[i] = IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i)); : break; : default: : xoff[i] = IXGBE_READ_REG(hw, IXGBE_PXOFFRXCNT(i)); 0.00 : 23d8: 89 84 16 e0 30 ff ff mov %eax,-0xcf20(%rsi,%rdx,1) : } : hwstats->pxoffrxc[i] += xoff[i]; 0.00 : 23df: 8b 84 16 e0 30 ff ff mov -0xcf20(%rsi,%rdx,1),%eax : ixgbe_update_xoff_rx_lfc(adapter); : return; : } : : /* update stats for each tc, only valid with PFC enabled */ : for (i = 0; i < MAX_TX_PACKET_BUFFERS; i++) { 0.00 : 23e6: 83 c1 01 add $0x1,%ecx : xoff[i] = IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i)); : break; : default: : xoff[i] = IXGBE_READ_REG(hw, IXGBE_PXOFFRXCNT(i)); : } : hwstats->pxoffrxc[i] += xoff[i]; 0.00 : 23e9: 48 01 84 53 d0 77 fe add %rax,-0x18830(%rbx,%rdx,2) 0.00 : 23f0: ff : ixgbe_update_xoff_rx_lfc(adapter); : return; : } : : /* update stats for each tc, only valid with PFC enabled */ : for (i = 0; i < MAX_TX_PACKET_BUFFERS; i++) { 0.00 : 23f1: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 23f7: 25 00 04 00 00 and $0x400,%eax 0.00 : 23fc: 83 f8 01 cmp $0x1,%eax 0.00 : 23ff: 19 c0 sbb %eax,%eax 0.00 : 2401: 48 83 c2 04 add $0x4,%rdx 0.00 : 2405: 83 e0 f9 and $0xfffffff9,%eax 0.00 : 2408: 83 c0 08 add $0x8,%eax 0.00 : 240b: 39 c8 cmp %ecx,%eax 0.00 : 240d: 0f 8e a0 03 00 00 jle 27b3 : switch (hw->mac.type) { 0.00 : 2413: 83 bb 50 10 00 00 01 cmpl $0x1,0x1050(%rbx) 0.00 : 241a: 75 ac jne 23c8 0.00 : 241c: 48 89 d0 mov %rdx,%rax 0.00 : 241f: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 2426: 8b 00 mov (%rax),%eax : case ixgbe_mac_82598EB: : xoff[i] = IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i)); 0.00 : 2428: 89 84 16 e0 30 ff ff mov %eax,-0xcf20(%rsi,%rdx,1) 0.00 : 242f: eb ae jmp 23df 0.00 : 2431: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); : break; : case ixgbe_mac_X540: : /* OS2BMC stats are X540 only*/ : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); 0.00 : 2438: 48 8b 93 e0 1a 00 00 mov 0x1ae0(%rbx),%rdx 0.00 : 243f: 48 05 c4 41 00 00 add $0x41c4,%rax 0.00 : 2445: 8b 00 mov (%rax),%eax 0.00 : 2447: 89 c0 mov %eax,%eax 0.00 : 2449: 48 01 d0 add %rdx,%rax : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); 0.00 : 244c: 48 8b 93 e8 1a 00 00 mov 0x1ae8(%rbx),%rdx : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); : break; : case ixgbe_mac_X540: : /* OS2BMC stats are X540 only*/ : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); 0.00 : 2453: 48 89 83 e0 1a 00 00 mov %rax,0x1ae0(%rbx) 0.00 : 245a: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2461: 48 05 b0 87 00 00 add $0x87b0,%rax 0.00 : 2467: 8b 00 mov (%rax),%eax : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); 0.00 : 2469: 89 c0 mov %eax,%eax 0.00 : 246b: 48 01 d0 add %rdx,%rax : hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC); 0.00 : 246e: 48 8b 93 d0 1a 00 00 mov 0x1ad0(%rbx),%rdx : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); : break; : case ixgbe_mac_X540: : /* OS2BMC stats are X540 only*/ : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); 0.00 : 2475: 48 89 83 e8 1a 00 00 mov %rax,0x1ae8(%rbx) 0.00 : 247c: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2483: 48 05 c0 41 00 00 add $0x41c0,%rax 0.00 : 2489: 8b 00 mov (%rax),%eax : hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC); 0.00 : 248b: 89 c0 mov %eax,%eax 0.00 : 248d: 48 01 d0 add %rdx,%rax : hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC); 0.00 : 2490: 48 8b 93 d8 1a 00 00 mov 0x1ad8(%rbx),%rdx : break; : case ixgbe_mac_X540: : /* OS2BMC stats are X540 only*/ : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); : hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC); 0.00 : 2497: 48 89 83 d0 1a 00 00 mov %rax,0x1ad0(%rbx) 0.00 : 249e: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 24a5: 48 05 90 2f 00 00 add $0x2f90,%rax 0.00 : 24ab: 8b 00 mov (%rax),%eax : hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC); 0.00 : 24ad: 89 c0 mov %eax,%eax 0.00 : 24af: 48 01 d0 add %rdx,%rax 0.00 : 24b2: 48 89 83 d8 1a 00 00 mov %rax,0x1ad8(%rbx) 0.00 : 24b9: b9 30 14 00 00 mov $0x1430,%ecx 0.00 : 24be: 66 90 xchg %ax,%ax 0.00 : 24c0: 48 89 c8 mov %rcx,%rax : case ixgbe_mac_82599EB: : for (i = 0; i < 16; i++) : adapter->hw_rx_no_dma_resources += 0.00 : 24c3: 48 8b 93 28 07 00 00 mov 0x728(%rbx),%rdx 0.00 : 24ca: 48 03 83 80 0e 00 00 add 0xe80(%rbx),%rax 0.00 : 24d1: 8b 00 mov (%rax),%eax 0.00 : 24d3: 89 c0 mov %eax,%eax 0.00 : 24d5: 48 83 c1 40 add $0x40,%rcx 0.00 : 24d9: 48 01 d0 add %rdx,%rax : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); : hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC); : hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC); : case ixgbe_mac_82599EB: : for (i = 0; i < 16; i++) 0.00 : 24dc: 48 81 f9 30 18 00 00 cmp $0x1830,%rcx : adapter->hw_rx_no_dma_resources += 0.00 : 24e3: 48 89 83 28 07 00 00 mov %rax,0x728(%rbx) : hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC); : hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC); : hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC); : hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC); : case ixgbe_mac_82599EB: : for (i = 0; i < 16; i++) 0.00 : 24ea: 75 d4 jne 24c0 0.00 : 24ec: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : adapter->hw_rx_no_dma_resources += : IXGBE_READ_REG(hw, IXGBE_QPRDC(i)); : hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCL); 0.00 : 24f3: 48 8b 93 a0 16 00 00 mov 0x16a0(%rbx),%rdx 0.00 : 24fa: 48 05 88 40 00 00 add $0x4088,%rax 0.00 : 2500: 8b 00 mov (%rax),%eax 0.00 : 2502: 89 c0 mov %eax,%eax 0.00 : 2504: 48 01 d0 add %rdx,%rax 0.00 : 2507: 48 89 83 a0 16 00 00 mov %rax,0x16a0(%rbx) 0.00 : 250e: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2515: 48 05 8c 40 00 00 add $0x408c,%rax 0.00 : 251b: 8b 00 mov (%rax),%eax 0.00 : 251d: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : IXGBE_READ_REG(hw, IXGBE_GORCH); /* to clear */ : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCL); 0.00 : 2524: 48 8b 93 a8 16 00 00 mov 0x16a8(%rbx),%rdx 0.00 : 252b: 48 05 90 40 00 00 add $0x4090,%rax 0.00 : 2531: 8b 00 mov (%rax),%eax 0.00 : 2533: 89 c0 mov %eax,%eax 0.00 : 2535: 48 01 d0 add %rdx,%rax 0.00 : 2538: 48 89 83 a8 16 00 00 mov %rax,0x16a8(%rbx) 0.00 : 253f: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2546: 48 05 94 40 00 00 add $0x4094,%rax 0.00 : 254c: 8b 00 mov (%rax),%eax 0.00 : 254e: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : IXGBE_READ_REG(hw, IXGBE_GOTCH); /* to clear */ : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORL); 0.00 : 2555: 48 8b 93 28 17 00 00 mov 0x1728(%rbx),%rdx 0.00 : 255c: 48 05 c0 40 00 00 add $0x40c0,%rax 0.00 : 2562: 8b 00 mov (%rax),%eax 11.11 : 2564: 89 c0 mov %eax,%eax 0.00 : 2566: 48 01 d0 add %rdx,%rax 0.00 : 2569: 48 89 83 28 17 00 00 mov %rax,0x1728(%rbx) 0.00 : 2570: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2577: 48 05 c4 40 00 00 add $0x40c4,%rax 0.00 : 257d: 8b 00 mov (%rax),%eax 0.00 : 257f: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax : IXGBE_READ_REG(hw, IXGBE_TORH); /* to clear */ : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXCNT); 0.00 : 2586: 48 8b 93 38 15 00 00 mov 0x1538(%rbx),%rdx 0.00 : 258d: 48 05 a4 41 00 00 add $0x41a4,%rax 0.00 : 2593: 8b 00 mov (%rax),%eax 0.00 : 2595: 89 c0 mov %eax,%eax 0.00 : 2597: 48 01 d0 add %rdx,%rax : #ifdef HAVE_TX_MQ : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); 0.00 : 259a: 48 8b 93 68 1a 00 00 mov 0x1a68(%rbx),%rdx : IXGBE_READ_REG(hw, IXGBE_GORCH); /* to clear */ : hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCL); : IXGBE_READ_REG(hw, IXGBE_GOTCH); /* to clear */ : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORL); : IXGBE_READ_REG(hw, IXGBE_TORH); /* to clear */ : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXCNT); 0.00 : 25a1: 48 89 83 38 15 00 00 mov %rax,0x1538(%rbx) 0.00 : 25a8: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 25af: 48 05 58 ee 00 00 add $0xee58,%rax 0.00 : 25b5: 8b 00 mov (%rax),%eax : #ifdef HAVE_TX_MQ : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); 0.00 : 25b7: 89 c0 mov %eax,%eax 0.00 : 25b9: 48 01 d0 add %rdx,%rax : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); 0.00 : 25bc: 48 8b 93 70 1a 00 00 mov 0x1a70(%rbx),%rdx : IXGBE_READ_REG(hw, IXGBE_GOTCH); /* to clear */ : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORL); : IXGBE_READ_REG(hw, IXGBE_TORH); /* to clear */ : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXCNT); : #ifdef HAVE_TX_MQ : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); 0.00 : 25c3: 48 89 83 68 1a 00 00 mov %rax,0x1a68(%rbx) 0.00 : 25ca: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 25d1: 48 05 5c ee 00 00 add $0xee5c,%rax 0.00 : 25d7: 8b 00 mov (%rax),%eax : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); 0.00 : 25d9: 89 c0 mov %eax,%eax 0.00 : 25db: 48 01 d0 add %rdx,%rax : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); 0.00 : 25de: 48 8b 93 78 1a 00 00 mov 0x1a78(%rbx),%rdx : hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORL); : IXGBE_READ_REG(hw, IXGBE_TORH); /* to clear */ : hwstats->lxonrxc += IXGBE_READ_REG(hw, IXGBE_LXONRXCNT); : #ifdef HAVE_TX_MQ : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); 0.00 : 25e5: 48 89 83 70 1a 00 00 mov %rax,0x1a70(%rbx) 0.00 : 25ec: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 25f3: 48 05 18 51 00 00 add $0x5118,%rax 0.00 : 25f9: 8b 00 mov (%rax),%eax : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); 0.00 : 25fb: 89 c0 mov %eax,%eax 0.00 : 25fd: 48 01 d0 add %rdx,%rax : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); 0.00 : 2600: 48 8b 93 80 1a 00 00 mov 0x1a80(%rbx),%rdx : #ifdef HAVE_TX_MQ : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); 0.00 : 2607: 48 89 83 78 1a 00 00 mov %rax,0x1a78(%rbx) 0.00 : 260e: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2615: 48 05 24 24 00 00 add $0x2424,%rax 0.00 : 261b: 8b 00 mov (%rax),%eax : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); 0.00 : 261d: 89 c0 mov %eax,%eax 0.00 : 261f: 48 01 d0 add %rdx,%rax : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); 0.00 : 2622: 48 8b 93 88 1a 00 00 mov 0x1a88(%rbx),%rdx : hwstats->fdirmatch += IXGBE_READ_REG(hw, IXGBE_FDIRMATCH); : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); 0.00 : 2629: 48 89 83 80 1a 00 00 mov %rax,0x1a80(%rbx) 0.00 : 2630: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2637: 48 05 1c 24 00 00 add $0x241c,%rax 0.00 : 263d: 8b 00 mov (%rax),%eax : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); 0.00 : 263f: 89 c0 mov %eax,%eax 0.00 : 2641: 48 01 d0 add %rdx,%rax : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); 0.00 : 2644: 48 8b 93 90 1a 00 00 mov 0x1a90(%rbx),%rdx : hwstats->fdirmiss += IXGBE_READ_REG(hw, IXGBE_FDIRMISS); : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); 0.00 : 264b: 48 89 83 88 1a 00 00 mov %rax,0x1a88(%rbx) 0.00 : 2652: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2659: 48 05 28 24 00 00 add $0x2428,%rax 0.00 : 265f: 8b 00 mov (%rax),%eax : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); 0.00 : 2661: 89 c0 mov %eax,%eax 0.00 : 2663: 48 01 d0 add %rdx,%rax : hwstats->fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); 0.00 : 2666: 48 8b 93 98 1a 00 00 mov 0x1a98(%rbx),%rdx : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); 0.00 : 266d: 48 89 83 90 1a 00 00 mov %rax,0x1a90(%rbx) 0.00 : 2674: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 267b: 48 05 84 87 00 00 add $0x8784,%rax 0.00 : 2681: 8b 00 mov (%rax),%eax : hwstats->fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); 0.00 : 2683: 89 c0 mov %eax,%eax 0.00 : 2685: 48 01 d0 add %rdx,%rax : hwstats->fcoedwrc += IXGBE_READ_REG(hw, IXGBE_FCOEDWRC); 0.00 : 2688: 48 8b 93 a0 1a 00 00 mov 0x1aa0(%rbx),%rdx : #ifdef IXGBE_FCOE : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); : hwstats->fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); 0.00 : 268f: 48 89 83 98 1a 00 00 mov %rax,0x1a98(%rbx) 0.00 : 2696: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 269d: 48 05 2c 24 00 00 add $0x242c,%rax 0.00 : 26a3: 8b 00 mov (%rax),%eax : hwstats->fcoedwrc += IXGBE_READ_REG(hw, IXGBE_FCOEDWRC); 11.11 : 26a5: 89 c0 mov %eax,%eax 0.00 : 26a7: 48 01 d0 add %rdx,%rax : hwstats->fcoedwtc += IXGBE_READ_REG(hw, IXGBE_FCOEDWTC); 0.00 : 26aa: 48 8b 93 a8 1a 00 00 mov 0x1aa8(%rbx),%rdx : hwstats->fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); : hwstats->fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); : hwstats->fcoedwrc += IXGBE_READ_REG(hw, IXGBE_FCOEDWRC); 0.00 : 26b1: 48 89 83 a0 1a 00 00 mov %rax,0x1aa0(%rbx) 0.00 : 26b8: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 26bf: 48 05 88 87 00 00 add $0x8788,%rax 0.00 : 26c5: 8b 00 mov (%rax),%eax : hwstats->fcoedwtc += IXGBE_READ_REG(hw, IXGBE_FCOEDWTC); 0.00 : 26c7: 89 c0 mov %eax,%eax 0.00 : 26c9: 48 01 d0 add %rdx,%rax : /* Add up per cpu counters for total ddp alloc fail */ : if (adapter->fcoe.ddp_pool) { 0.00 : 26cc: 48 83 bb e8 1b 00 00 cmpq $0x0,0x1be8(%rbx) 0.00 : 26d3: 00 : hwstats->fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); : hwstats->fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); : hwstats->fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); : hwstats->fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); : hwstats->fcoedwrc += IXGBE_READ_REG(hw, IXGBE_FCOEDWRC); : hwstats->fcoedwtc += IXGBE_READ_REG(hw, IXGBE_FCOEDWTC); 0.00 : 26d4: 48 89 83 a8 1a 00 00 mov %rax,0x1aa8(%rbx) : /* Add up per cpu counters for total ddp alloc fail */ : if (adapter->fcoe.ddp_pool) { 0.00 : 26db: 0f 84 f8 f4 ff ff je 1bd9 : static inline unsigned int cpumask_next(int n, const struct cpumask *srcp) : { : /* -1 is a legal arg here. */ : if (n != -1) : cpumask_check(n); : return find_next_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1); 0.00 : 26e1: 4c 8b 2d 00 00 00 00 mov 0x0(%rip),%r13 # 26e8 0.00 : 26e8: b9 ff ff ff ff mov $0xffffffff,%ecx 0.00 : 26ed: 45 31 e4 xor %r12d,%r12d 0.00 : 26f0: 31 ed xor %ebp,%ebp 0.00 : 26f2: eb 1d jmp 2711 0.00 : 26f4: 0f 1f 40 00 nopl 0x0(%rax) : struct ixgbe_fcoe *fcoe = &adapter->fcoe; : struct ixgbe_fcoe_ddp_pool *ddp_pool; : unsigned int cpu; : u64 noddp = 0, noddp_ext_buff = 0; : for_each_possible_cpu(cpu) { : ddp_pool = per_cpu_ptr(fcoe->ddp_pool, cpu); 0.00 : 26f8: 89 ca mov %ecx,%edx 0.00 : 26fa: 48 8b 83 e8 1b 00 00 mov 0x1be8(%rbx),%rax 0.00 : 2701: 48 03 04 d5 00 00 00 add 0x0(,%rdx,8),%rax 0.00 : 2708: 00 : noddp += ddp_pool->noddp; 0.00 : 2709: 4c 03 60 08 add 0x8(%rax),%r12 : noddp_ext_buff += ddp_pool->noddp_ext_buff; 0.00 : 270d: 48 03 68 10 add 0x10(%rax),%rbp 0.00 : 2711: 48 63 35 00 00 00 00 movslq 0x0(%rip),%rsi # 2718 0.00 : 2718: 8d 51 01 lea 0x1(%rcx),%edx 0.00 : 271b: 4c 89 ef mov %r13,%rdi 0.00 : 271e: 48 63 d2 movslq %edx,%rdx 0.00 : 2721: e8 00 00 00 00 callq 2726 : if (adapter->fcoe.ddp_pool) { : struct ixgbe_fcoe *fcoe = &adapter->fcoe; : struct ixgbe_fcoe_ddp_pool *ddp_pool; : unsigned int cpu; : u64 noddp = 0, noddp_ext_buff = 0; : for_each_possible_cpu(cpu) { 0.00 : 2726: 39 05 00 00 00 00 cmp %eax,0x0(%rip) # 272c 0.00 : 272c: 89 c1 mov %eax,%ecx 0.00 : 272e: 77 c8 ja 26f8 : ddp_pool = per_cpu_ptr(fcoe->ddp_pool, cpu); : noddp += ddp_pool->noddp; : noddp_ext_buff += ddp_pool->noddp_ext_buff; : } : hwstats->fcoe_noddp = noddp; 0.00 : 2730: 4c 89 a3 b0 1a 00 00 mov %r12,0x1ab0(%rbx) : hwstats->fcoe_noddp_ext_buff = noddp_ext_buff; 0.00 : 2737: 48 89 ab b8 1a 00 00 mov %rbp,0x1ab8(%rbx) 0.00 : 273e: e9 96 f4 ff ff jmpq 1bd9 : : if ((hw->fc.current_mode != ixgbe_fc_full) && : (hw->fc.current_mode != ixgbe_fc_rx_pause)) : return; : : switch (hw->mac.type) { 0.00 : 2743: 83 bb 50 10 00 00 01 cmpl $0x1,0x1050(%rbx) 0.00 : 274a: 0f 84 ae 00 00 00 je 27fe 0.00 : 2750: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2757: 48 05 a8 41 00 00 add $0x41a8,%rax 0.00 : 275d: 8b 10 mov (%rax),%edx : data = IXGBE_READ_REG(hw, IXGBE_LXOFFRXC); : break; : default: : data = IXGBE_READ_REG(hw, IXGBE_LXOFFRXCNT); : } : hwstats->lxoffrxc += data; 0.00 : 275f: 89 d0 mov %edx,%eax 0.00 : 2761: 48 01 83 48 15 00 00 add %rax,0x1548(%rbx) : : /* refill credits (no tx hang) if we received xoff */ : if (!data) 0.00 : 2768: 85 d2 test %edx,%edx 0.00 : 276a: 0f 84 c0 f3 ff ff je 1b30 : return; : : for (i = 0; i < adapter->num_tx_queues; i++) 0.00 : 2770: 8b 93 20 02 00 00 mov 0x220(%rbx),%edx 0.00 : 2776: 85 d2 test %edx,%edx 0.00 : 2778: 0f 8e b2 f3 ff ff jle 1b30 0.00 : 277e: 31 c9 xor %ecx,%ecx : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 2780: 48 8b 97 80 02 00 00 mov 0x280(%rdi),%rdx 0.00 : 2787: 48 8d 42 30 lea 0x30(%rdx),%rax 0.00 : 278b: f0 80 62 30 fb lock andb $0xfb,0x30(%rdx) 0.00 : 2790: 83 c1 01 add $0x1,%ecx 0.00 : 2793: 48 83 c7 08 add $0x8,%rdi 0.00 : 2797: 3b 8b 20 02 00 00 cmp 0x220(%rbx),%ecx 0.00 : 279d: 7c e1 jl 2780 0.00 : 279f: e9 8c f3 ff ff jmpq 1b30 : } : bprc = IXGBE_READ_REG(hw, IXGBE_BPRC); : hwstats->bprc += bprc; : hwstats->mprc += IXGBE_READ_REG(hw, IXGBE_MPRC); : if (hw->mac.type == ixgbe_mac_82598EB) : hwstats->mprc -= bprc; 0.00 : 27a4: 48 29 c8 sub %rcx,%rax 0.00 : 27a7: 48 89 83 90 16 00 00 mov %rax,0x1690(%rbx) 0.00 : 27ae: e9 6d f4 ff ff jmpq 1c20 : } : hwstats->pxoffrxc[i] += xoff[i]; : } : : /* disarm tx queues that have received xoff frames */ : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 27b3: 8b 83 20 02 00 00 mov 0x220(%rbx),%eax 0.00 : 27b9: 85 c0 test %eax,%eax 0.00 : 27bb: 0f 8e 6f f3 ff ff jle 1b30 0.00 : 27c1: 31 c9 xor %ecx,%ecx 0.00 : 27c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : struct ixgbe_ring *tx_ring = adapter->tx_ring[i]; 0.00 : 27c8: 48 8b 97 80 02 00 00 mov 0x280(%rdi),%rdx : u8 tc = tx_ring->dcb_tc; 0.00 : 27cf: 0f b6 42 56 movzbl 0x56(%rdx),%eax : : if ((tc <= 7) && (xoff[tc])) 0.00 : 27d3: 3c 07 cmp $0x7,%al 0.00 : 27d5: 77 13 ja 27ea 0.00 : 27d7: 0f b6 c0 movzbl %al,%eax 0.00 : 27da: 8b 04 84 mov (%rsp,%rax,4),%eax 0.00 : 27dd: 85 c0 test %eax,%eax 0.00 : 27df: 74 09 je 27ea 0.00 : 27e1: 48 8d 42 30 lea 0x30(%rdx),%rax 0.00 : 27e5: f0 80 62 30 fb lock andb $0xfb,0x30(%rdx) : } : hwstats->pxoffrxc[i] += xoff[i]; : } : : /* disarm tx queues that have received xoff frames */ : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 27ea: 83 c1 01 add $0x1,%ecx 0.00 : 27ed: 48 83 c7 08 add $0x8,%rdi 0.00 : 27f1: 3b 8b 20 02 00 00 cmp 0x220(%rbx),%ecx 0.00 : 27f7: 7c cf jl 27c8 0.00 : 27f9: e9 32 f3 ff ff jmpq 1b30 0.00 : 27fe: 48 8b 83 80 0e 00 00 mov 0xe80(%rbx),%rax 0.00 : 2805: 48 05 68 cf 00 00 add $0xcf68,%rax 0.00 : 280b: 8b 10 mov (%rax),%edx 0.00 : 280d: e9 4d ff ff ff jmpq 275f : } : adapter->lro_stats.flushed = flushed; : adapter->lro_stats.coal = coal; : : #endif : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : 2812: 45 31 d2 xor %r10d,%r10d 0.00 : 2815: 45 31 c9 xor %r9d,%r9d 0.00 : 2818: 45 31 c0 xor %r8d,%r8d 0.00 : 281b: 31 ff xor %edi,%edi 0.00 : 281d: 31 d2 xor %edx,%edx 0.00 : 281f: 31 c0 xor %eax,%eax 0.00 : 2821: e9 d8 f0 ff ff jmpq 18fe : net_stats->rx_packets = packets; : : bytes = 0; : packets = 0; : /* gather some stats to the adapter struct that are per queue */ : for (i = 0; i < adapter->num_tx_queues; i++) { 0.00 : 2826: 45 31 c0 xor %r8d,%r8d 0.00 : 2829: 31 ff xor %edi,%edi 0.00 : 282b: 31 f6 xor %esi,%esi 0.00 : 282d: 31 c9 xor %ecx,%ecx 0.00 : 282f: e9 3d f1 ff ff jmpq 1971 : : Disassembly of section .devinit.text: : : 0000000000001800 : : struct ixgbe_option opt = { : .type = enable_option, : .name = "Enabled/Disable FCoE offload", : .err = "defaulting to Enabled", : .def = OPTION_ENABLED : }; 0.00 : 1800: 48 c7 44 24 70 00 00 movq $0x0,0x70(%rsp) 0.00 : 1807: 00 00 0.00 : 1809: c7 44 24 78 01 00 00 movl $0x1,0x78(%rsp) 0.00 : 1810: 00 : #ifdef module_param_array : if (num_FCoE > bd) { 0.00 : 1811: 0f 82 f7 05 00 00 jb 1e0e : if (fcoe) : *aflags |= IXGBE_FLAG_FCOE_CAPABLE; : #ifdef module_param_array : } else { : if (opt.def == OPTION_ENABLED) : *aflags |= IXGBE_FLAG_FCOE_CAPABLE; 0.00 : 1817: 81 8b 18 02 00 00 00 orl $0x20000,0x218(%rbx) 0.00 : 181e: 00 02 00 : } : #endif : DPRINTK(PROBE, INFO, "FCoE Offload feature %sabled\n", 0.00 : 1821: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1828: 0f 85 a6 05 00 00 jne 1dd4 : struct ixgbe_option opt = { : .type = enable_option, : .name = "LRO - Large Receive Offload", : .err = "defaulting to Enabled", : .def = OPTION_ENABLED : }; 0.00 : 182e: 48 8d 54 24 30 lea 0x30(%rsp),%rdx 0.00 : 1833: 31 c0 xor %eax,%eax 0.00 : 1835: b9 06 00 00 00 mov $0x6,%ecx : if (!(adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE)) : opt.def = OPTION_DISABLED; : : #endif : #ifdef module_param_array : if (num_LRO > bd) { 0.00 : 183a: 44 3b 25 00 00 00 00 cmp 0x0(%rip),%r12d # 1841 : struct ixgbe_option opt = { : .type = enable_option, : .name = "LRO - Large Receive Offload", : .err = "defaulting to Enabled", : .def = OPTION_ENABLED : }; 0.00 : 1841: 48 89 d7 mov %rdx,%rdi 0.00 : 1844: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 1847: 48 c7 44 24 38 00 00 movq $0x0,0x38(%rsp) 0.00 : 184e: 00 00 0.00 : 1850: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp) 0.00 : 1857: 00 00 0.00 : 1859: c7 44 24 48 01 00 00 movl $0x1,0x48(%rsp) 0.00 : 1860: 00 : struct net_device *netdev = adapter->netdev; 0.00 : 1861: 48 8b ab 00 02 00 00 mov 0x200(%rbx),%rbp : if (!(adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE)) : opt.def = OPTION_DISABLED; : : #endif : #ifdef module_param_array : if (num_LRO > bd) { 0.00 : 1868: 0f 82 e0 00 00 00 jb 194e : netdev->features |= NETIF_F_LRO; : else : netdev->features &= ~NETIF_F_LRO; : #ifdef module_param_array : } else if (opt.def == OPTION_ENABLED) { : netdev->features |= NETIF_F_LRO; 0.00 : 186e: 81 8d b0 00 00 00 00 orl $0x8000,0xb0(%rbp) 0.00 : 1875: 80 00 00 : struct ixgbe_option opt = { : .type = enable_option, : .name = "allow_unsupported_sfp", : .err = "defaulting to Disabled", : .def = OPTION_DISABLED : }; 0.00 : 1878: 31 c0 xor %eax,%eax : #ifdef module_param_array : if (num_allow_unsupported_sfp > bd) { 0.00 : 187a: 44 3b 25 00 00 00 00 cmp 0x0(%rip),%r12d # 1881 : struct ixgbe_option opt = { : .type = enable_option, : .name = "allow_unsupported_sfp", : .err = "defaulting to Disabled", : .def = OPTION_DISABLED : }; 0.00 : 1881: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 1886: 48 89 e7 mov %rsp,%rdi 0.00 : 1889: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 188c: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 1893: 00 00 0.00 : 1895: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 189c: 00 00 : #ifdef module_param_array : if (num_allow_unsupported_sfp > bd) { 0.00 : 189e: 72 7a jb 191a : } else { : adapter->hw.allow_unsupported_sfp = false; : } : #ifdef module_param_array : } else if (opt.def == OPTION_ENABLED) { : adapter->hw.allow_unsupported_sfp = true; 0.00 : 18a0: 83 7c 24 18 01 cmpl $0x1,0x18(%rsp) 0.00 : 18a5: 0f 94 83 a1 14 00 00 sete 0x14a1(%rbx) : } else { : adapter->hw.allow_unsupported_sfp = false; : } : #endif : } : } 0.00 : 18ac: 48 81 c4 a8 00 00 00 add $0xa8,%rsp 0.00 : 18b3: 5b pop %rbx 0.00 : 18b4: 5d pop %rbp 0.00 : 18b5: 41 5c pop %r12 0.00 : 18b7: 41 5d pop %r13 0.00 : 18b9: c3 retq : adapter->atr_sample_rate = IXGBE_ATR_SAMPLE_RATE_OFF; : } else if (num_AtrSampleRate > bd) { : adapter->atr_sample_rate = AtrSampleRate[bd]; : : if (adapter->atr_sample_rate) { : ixgbe_validate_option(&adapter->atr_sample_rate, 0.00 : 18ba: 48 8d bb dc 1b 00 00 lea 0x1bdc(%rbx),%rdi 0.00 : 18c1: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 18c8: e8 23 fa ff ff callq 12f0 : &opt); : DPRINTK(PROBE, INFO, "%s %d\n", atr_string, 0.00 : 18cd: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 18d4: 0f 84 ec fe ff ff je 17c6 0.00 : 18da: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 18e1: 44 8b 83 dc 1b 00 00 mov 0x1bdc(%rbx),%r8d 0.00 : 18e8: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : 18ef: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 18f6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 18fd: 31 c0 xor %eax,%eax 0.00 : 18ff: e8 00 00 00 00 callq 1904 0.00 : 1904: e9 bd fe ff ff jmpq 17c6 : adapter->atr_sample_rate); : } : } else { : adapter->atr_sample_rate = opt.def; 0.00 : 1909: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 190f 0.00 : 190f: 89 83 dc 1b 00 00 mov %eax,0x1bdc(%rbx) 0.00 : 1915: e9 ac fe ff ff jmpq 17c6 : }; : #ifdef module_param_array : if (num_allow_unsupported_sfp > bd) { : #endif : unsigned int enable_unsupported_sfp = : allow_unsupported_sfp[bd]; 0.00 : 191a: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1921: 00 : ixgbe_validate_option(&enable_unsupported_sfp, &opt); 0.00 : 1922: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1929: 00 0.00 : 192a: 48 89 e6 mov %rsp,%rsi : }; : #ifdef module_param_array : if (num_allow_unsupported_sfp > bd) { : #endif : unsigned int enable_unsupported_sfp = : allow_unsupported_sfp[bd]; 0.00 : 192d: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&enable_unsupported_sfp, &opt); 0.00 : 1934: e8 b7 f9 ff ff callq 12f0 : if (enable_unsupported_sfp) { : adapter->hw.allow_unsupported_sfp = true; 0.00 : 1939: 8b 84 24 9c 00 00 00 mov 0x9c(%rsp),%eax 0.00 : 1940: 85 c0 test %eax,%eax 0.00 : 1942: 0f 95 83 a1 14 00 00 setne 0x14a1(%rbx) 0.00 : 1949: e9 5e ff ff ff jmpq 18ac : : #endif : #ifdef module_param_array : if (num_LRO > bd) { : #endif : unsigned int lro = LRO[bd]; 0.00 : 194e: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1955: 00 : ixgbe_validate_option(&lro, &opt); 0.00 : 1956: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 195d: 00 0.00 : 195e: 48 89 d6 mov %rdx,%rsi : : #endif : #ifdef module_param_array : if (num_LRO > bd) { : #endif : unsigned int lro = LRO[bd]; 0.00 : 1961: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&lro, &opt); 0.00 : 1968: e8 83 f9 ff ff callq 12f0 : if (lro) 0.00 : 196d: 8b 94 24 9c 00 00 00 mov 0x9c(%rsp),%edx 0.00 : 1974: 85 d2 test %edx,%edx 0.00 : 1976: 0f 85 f2 fe ff ff jne 186e : netdev->features |= NETIF_F_LRO; : else : netdev->features &= ~NETIF_F_LRO; 0.00 : 197c: 81 a5 b0 00 00 00 ff andl $0xffff7fff,0xb0(%rbp) 0.00 : 1983: 7f ff ff 0.00 : 1986: e9 ed fe ff ff jmpq 1878 : }; : static const char atr_string[] = : "ATR Tx Packet sample rate set to"; : : if (adapter->hw.mac.type == ixgbe_mac_82598EB) { : adapter->atr_sample_rate = IXGBE_ATR_SAMPLE_RATE_OFF; 0.00 : 198b: c7 83 dc 1b 00 00 00 movl $0x0,0x1bdc(%rbx) 0.00 : 1992: 00 00 00 0.00 : 1995: e9 2c fe ff ff jmpq 17c6 : char pstring[10]; : : if (adapter->hw.mac.type == ixgbe_mac_82598EB) { : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_NONE; : } else if (num_FdirPballoc > bd) { : fdir_pballoc_mode = FdirPballoc[bd]; 0.00 : 199a: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 19a1: 00 : ixgbe_validate_option(&fdir_pballoc_mode, &opt); 0.00 : 19a2: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 19a9: 00 0.00 : 19aa: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : char pstring[10]; : : if (adapter->hw.mac.type == ixgbe_mac_82598EB) { : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_NONE; : } else if (num_FdirPballoc > bd) { : fdir_pballoc_mode = FdirPballoc[bd]; 0.00 : 19b1: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&fdir_pballoc_mode, &opt); 0.00 : 19b8: e8 33 f9 ff ff callq 12f0 : switch (fdir_pballoc_mode) { 0.00 : 19bd: 8b 84 24 9c 00 00 00 mov 0x9c(%rsp),%eax 0.00 : 19c4: 83 f8 02 cmp $0x2,%eax 0.00 : 19c7: 0f 84 bf 00 00 00 je 1a8c 0.00 : 19cd: 83 f8 03 cmp $0x3,%eax 0.00 : 19d0: 0f 84 8a 00 00 00 je 1a60 : sprintf(pstring, "128kB"); : break; : case IXGBE_FDIR_PBALLOC_64K: : default: : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_64K; : sprintf(pstring, "64kB"); 0.00 : 19d6: 48 8d 8c 24 90 00 00 lea 0x90(%rsp),%rcx 0.00 : 19dd: 00 : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_128K; : sprintf(pstring, "128kB"); : break; : case IXGBE_FDIR_PBALLOC_64K: : default: : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_64K; 0.00 : 19de: c7 83 d8 1b 00 00 01 movl $0x1,0x1bd8(%rbx) 0.00 : 19e5: 00 00 00 : sprintf(pstring, "64kB"); 0.00 : 19e8: c7 84 24 90 00 00 00 movl $0x426b3436,0x90(%rsp) 0.00 : 19ef: 36 34 6b 42 0.00 : 19f3: c6 84 24 94 00 00 00 movb $0x0,0x94(%rsp) 0.00 : 19fa: 00 : break; : } : DPRINTK(PROBE, INFO, "Flow Director will be allocated " 0.00 : 19fb: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1a02: 0f 84 8e fd ff ff je 1796 0.00 : 1a08: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1a0f: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1a16: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1a1d: 31 c0 xor %eax,%eax 0.00 : 1a1f: e8 00 00 00 00 callq 1a24 0.00 : 1a24: e9 6d fd ff ff jmpq 1796 : .max = IXGBE_FDIR_PBALLOC_256K} } : }; : char pstring[10]; : : if (adapter->hw.mac.type == ixgbe_mac_82598EB) { : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_NONE; 0.00 : 1a29: c7 83 d8 1b 00 00 00 movl $0x0,0x1bd8(%rbx) 0.00 : 1a30: 00 00 00 0.00 : 1a33: e9 5e fd ff ff jmpq 1796 : adapter->lli_vlan_pri = LLIVLANP[bd]; : if (adapter->lli_vlan_pri) { : ixgbe_validate_option(&adapter->lli_vlan_pri, : &opt); : } else { : DPRINTK(PROBE, INFO, "%s turned off\n", 0.00 : 1a38: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1a3f: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 1a46 11.11 : 1a46: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1a4d: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1a54: 31 c0 xor %eax,%eax 0.00 : 1a56: e8 00 00 00 00 callq 1a5b 0.00 : 1a5b: e9 10 fd ff ff jmpq 1770 : } else if (num_FdirPballoc > bd) { : fdir_pballoc_mode = FdirPballoc[bd]; : ixgbe_validate_option(&fdir_pballoc_mode, &opt); : switch (fdir_pballoc_mode) { : case IXGBE_FDIR_PBALLOC_256K: : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_256K; 0.00 : 1a60: c7 83 d8 1b 00 00 03 movl $0x3,0x1bd8(%rbx) 0.00 : 1a67: 00 00 00 : sprintf(pstring, "256kB"); 0.00 : 1a6a: 48 8d 8c 24 90 00 00 lea 0x90(%rsp),%rcx 0.00 : 1a71: 00 0.00 : 1a72: c7 84 24 90 00 00 00 movl $0x6b363532,0x90(%rsp) 0.00 : 1a79: 32 35 36 6b 0.00 : 1a7d: 66 c7 84 24 94 00 00 movw $0x42,0x94(%rsp) 0.00 : 1a84: 00 42 00 : break; 0.00 : 1a87: e9 6f ff ff ff jmpq 19fb : case IXGBE_FDIR_PBALLOC_128K: : adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_128K; 0.00 : 1a8c: c7 83 d8 1b 00 00 02 movl $0x2,0x1bd8(%rbx) 0.00 : 1a93: 00 00 00 : sprintf(pstring, "128kB"); 0.00 : 1a96: 48 8d 8c 24 90 00 00 lea 0x90(%rsp),%rcx 0.00 : 1a9d: 00 0.00 : 1a9e: c7 84 24 90 00 00 00 movl $0x6b383231,0x90(%rsp) 0.00 : 1aa5: 31 32 38 6b 0.00 : 1aa9: 66 c7 84 24 94 00 00 movw $0x42,0x94(%rsp) 0.00 : 1ab0: 00 42 00 : break; 0.00 : 1ab3: e9 43 ff ff ff jmpq 19fb : #ifdef module_param_array : if (num_LLIVLANP > bd) { : #endif : adapter->lli_vlan_pri = LLIVLANP[bd]; : if (adapter->lli_vlan_pri) { : ixgbe_validate_option(&adapter->lli_vlan_pri, 0.00 : 1ab8: 48 8d bb fc 1a 00 00 lea 0x1afc(%rbx),%rdi 0.00 : 1abf: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1ac6: e8 25 f8 ff ff callq 12f0 0.00 : 1acb: e9 a0 fc ff ff jmpq 1770 : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : } : #ifdef module_param_array : } else { : adapter->lli_vlan_pri = opt.def; 0.00 : 1ad0: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1ad6 0.00 : 1ad6: 89 83 fc 1a 00 00 mov %eax,0x1afc(%rbx) 0.00 : 1adc: e9 8f fc ff ff jmpq 1770 : adapter->lli_etype = LLIEType[bd]; : if (adapter->lli_etype) { : ixgbe_validate_option(&adapter->lli_etype, : &opt); : } else { : DPRINTK(PROBE, INFO, "%s turned off\n", 0.00 : 1ae1: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1ae8: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 1aef 0.00 : 1aef: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1af6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1afd: 31 c0 xor %eax,%eax 0.00 : 1aff: e8 00 00 00 00 callq 1b04 0.00 : 1b04: e9 37 fc ff ff jmpq 1740 : #ifdef module_param_array : if (num_LLIEType > bd) { : #endif : adapter->lli_etype = LLIEType[bd]; : if (adapter->lli_etype) { : ixgbe_validate_option(&adapter->lli_etype, 0.00 : 1b09: 48 8d bb f8 1a 00 00 lea 0x1af8(%rbx),%rdi 0.00 : 1b10: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1b17: e8 d4 f7 ff ff callq 12f0 0.00 : 1b1c: e9 1f fc ff ff jmpq 1740 : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : } : #ifdef module_param_array : } else { : adapter->lli_etype = opt.def; 0.00 : 1b21: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1b27 0.00 : 1b27: 89 83 f8 1a 00 00 mov %eax,0x1af8(%rbx) 0.00 : 1b2d: e9 0e fc ff ff jmpq 1740 : }; : : #ifdef module_param_array : if (num_LLIPush > bd) { : #endif : unsigned int lli_push = LLIPush[bd]; 0.00 : 1b32: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1b39: 00 : ixgbe_validate_option(&lli_push, &opt); 0.00 : 1b3a: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1b41: 00 0.00 : 1b42: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : }; : : #ifdef module_param_array : if (num_LLIPush > bd) { : #endif : unsigned int lli_push = LLIPush[bd]; 0.00 : 1b49: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&lli_push, &opt); 0.00 : 1b50: e8 9b f7 ff ff callq 12f0 : if (lli_push) 0.00 : 1b55: 8b b4 24 9c 00 00 00 mov 0x9c(%rsp),%esi 0.00 : 1b5c: 85 f6 test %esi,%esi 0.00 : 1b5e: 0f 84 a5 fb ff ff je 1709 : else : *aflags &= ~IXGBE_FLAG_LLI_PUSH; : #ifdef module_param_array : } else { : if (opt.def == OPTION_ENABLED) : *aflags |= IXGBE_FLAG_LLI_PUSH; 0.00 : 1b64: 83 8b 18 02 00 00 10 orl $0x10,0x218(%rbx) 0.00 : 1b6b: e9 a0 fb ff ff jmpq 1710 : #endif : adapter->lli_size = LLISize[bd]; : if (adapter->lli_size) { : ixgbe_validate_option(&adapter->lli_size, &opt); : } else { : DPRINTK(PROBE, INFO, "%s turned off\n", 0.00 : 1b70: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1b77: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 1b7e 0.00 : 1b7e: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1b85: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1b8c: 31 c0 xor %eax,%eax 0.00 : 1b8e: e8 00 00 00 00 callq 1b93 0.00 : 1b93: e9 57 fb ff ff jmpq 16ef : #ifdef module_param_array : if (num_LLISize > bd) { : #endif : adapter->lli_size = LLISize[bd]; : if (adapter->lli_size) { : ixgbe_validate_option(&adapter->lli_size, &opt); 0.00 : 1b98: 48 8d bb f4 1a 00 00 lea 0x1af4(%rbx),%rdi 0.00 : 1b9f: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1ba6: e8 45 f7 ff ff callq 12f0 0.00 : 1bab: e9 3f fb ff ff jmpq 16ef : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : } : #ifdef module_param_array : } else { : adapter->lli_size = opt.def; 0.00 : 1bb0: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1bb6 0.00 : 1bb6: 89 83 f4 1a 00 00 mov %eax,0x1af4(%rbx) 0.00 : 1bbc: e9 2e fb ff ff jmpq 16ef : #endif : adapter->lli_port = LLIPort[bd]; : if (adapter->lli_port) { : ixgbe_validate_option(&adapter->lli_port, &opt); : } else { : DPRINTK(PROBE, INFO, "%s turned off\n", 0.00 : 1bc1: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1bc8: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 1bcf 0.00 : 1bcf: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1bd6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1bdd: 31 c0 xor %eax,%eax 0.00 : 1bdf: e8 00 00 00 00 callq 1be4 0.00 : 1be4: e9 d6 fa ff ff jmpq 16bf : #ifdef module_param_array : if (num_LLIPort > bd) { : #endif : adapter->lli_port = LLIPort[bd]; : if (adapter->lli_port) { : ixgbe_validate_option(&adapter->lli_port, &opt); 0.00 : 1be9: 48 8d bb f0 1a 00 00 lea 0x1af0(%rbx),%rdi 0.00 : 1bf0: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1bf7: e8 f4 f6 ff ff callq 12f0 0.00 : 1bfc: e9 be fa ff ff jmpq 16bf : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : } : #ifdef module_param_array : } else { : adapter->lli_port = opt.def; 0.00 : 1c01: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1c07 0.00 : 1c07: 89 83 f0 1a 00 00 mov %eax,0x1af0(%rbx) 0.00 : 1c0d: e9 ad fa ff ff jmpq 16bf : if (num_InterruptThrottleRate > bd) { : #endif : u32 itr = InterruptThrottleRate[bd]; : switch (itr) { : case 0: : DPRINTK(PROBE, INFO, "%s turned off\n", 0.00 : 1c12: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1c19: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 1c20 0.00 : 1c20: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1c27: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1c2e: 31 c0 xor %eax,%eax 0.00 : 1c30: e8 00 00 00 00 callq 1c35 0.00 : 1c35: e9 3e fa ff ff jmpq 1678 : : #ifdef module_param_array : if (num_InterruptThrottleRate > bd) { : #endif : u32 itr = InterruptThrottleRate[bd]; : switch (itr) { 0.00 : 1c3a: 83 e8 01 sub $0x1,%eax 0.00 : 1c3d: 74 50 je 1c8f : DPRINTK(PROBE, INFO, "dynamic interrupt " : "throttling enabled\n"); : adapter->rx_itr_setting = 1; : break; : default: : ixgbe_validate_option(&itr, &opt); 0.00 : 1c3f: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1c46: 00 0.00 : 1c47: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1c4e: e8 9d f6 ff ff callq 12f0 : /* the first bit is used as control */ : adapter->rx_itr_setting = (1000000/itr) << 2; 0.00 : 1c53: b8 40 42 0f 00 mov $0xf4240,%eax 0.00 : 1c58: 31 d2 xor %edx,%edx 0.00 : 1c5a: f7 b4 24 9c 00 00 00 divl 0x9c(%rsp) 0.00 : 1c61: c1 e0 02 shl $0x2,%eax 0.00 : 1c64: 66 89 83 2c 02 00 00 mov %ax,0x22c(%rbx) 0.00 : 1c6b: e9 11 fa ff ff jmpq 1681 : break; : } : adapter->tx_itr_setting = adapter->rx_itr_setting; : #ifdef module_param_array : } else { : adapter->rx_itr_setting = opt.def; 0.00 : 1c70: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1c76 0.00 : 1c76: 66 89 83 2c 02 00 00 mov %ax,0x22c(%rbx) : adapter->tx_itr_setting = opt.def; 0.00 : 1c7d: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 1c83 0.00 : 1c83: 66 89 83 24 02 00 00 mov %ax,0x224(%rbx) 0.00 : 1c8a: e9 00 fa ff ff jmpq 168f : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : adapter->rx_itr_setting = 0; : break; : case 1: : DPRINTK(PROBE, INFO, "dynamic interrupt " 0.00 : 1c8f: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1c96: 0f 85 a5 01 00 00 jne 1e41 : "throttling enabled\n"); : adapter->rx_itr_setting = 1; 0.00 : 1c9c: 66 c7 83 2c 02 00 00 movw $0x1,0x22c(%rbx) 0.00 : 1ca3: 01 00 : break; 0.00 : 1ca5: e9 d7 f9 ff ff jmpq 1681 : }; : : #ifdef module_param_array : if (num_L2LBen > bd) { : #endif : unsigned int l2LBen = L2LBen[bd]; 0.00 : 1caa: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1cb1: 00 : ixgbe_validate_option(&l2LBen, &opt); 0.00 : 1cb2: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1cb9: 00 11.11 : 1cba: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : }; : : #ifdef module_param_array : if (num_L2LBen > bd) { : #endif : unsigned int l2LBen = L2LBen[bd]; 0.00 : 1cc1: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&l2LBen, &opt); 0.00 : 1cc8: e8 23 f6 ff ff callq 12f0 : if (l2LBen) 0.00 : 1ccd: 8b bc 24 9c 00 00 00 mov 0x9c(%rsp),%edi 0.00 : 1cd4: 85 ff test %edi,%edi 0.00 : 1cd6: 0f 84 6b f9 ff ff je 1647 : adapter->flags |= : IXGBE_FLAG_SRIOV_L2LOOPBACK_ENABLE; : #ifdef module_param_array : } else { : if (opt.def == OPTION_ENABLED) : adapter->flags |= 0.00 : 1cdc: 81 8b 18 02 00 00 00 orl $0x800000,0x218(%rbx) 0.00 : 1ce3: 00 80 00 0.00 : 1ce6: e9 5c f9 ff ff jmpq 1647 : } else { : if (opt.def == OPTION_DISABLED) { : adapter->num_vfs = 0; : *aflags &= ~IXGBE_FLAG_SRIOV_ENABLED; : } else { : adapter->num_vfs = opt.def; 0.00 : 1ceb: 89 83 58 7c 00 00 mov %eax,0x7c58(%rbx) : *aflags |= IXGBE_FLAG_SRIOV_ENABLED; 0.00 : 1cf1: 81 8b 18 02 00 00 00 orl $0x100000,0x218(%rbx) 0.00 : 1cf8: 00 10 00 0.00 : 1cfb: e9 f3 f8 ff ff jmpq 15f3 : }; : : #ifdef module_param_array : if (num_max_vfs > bd) { : #endif : unsigned int vfs = max_vfs[bd]; 0.00 : 1d00: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1d07: 00 : if (ixgbe_validate_option(&vfs, &opt)) { 0.00 : 1d08: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1d0f: 00 0.00 : 1d10: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : }; : : #ifdef module_param_array : if (num_max_vfs > bd) { : #endif : unsigned int vfs = max_vfs[bd]; 0.00 : 1d17: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : if (ixgbe_validate_option(&vfs, &opt)) { 0.00 : 1d1e: e8 cd f5 ff ff callq 12f0 0.00 : 1d23: 85 c0 test %eax,%eax 0.00 : 1d25: 74 14 je 1d3b : vfs = 0; : DPRINTK(PROBE, INFO, 0.00 : 1d27: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) : #ifdef module_param_array : if (num_max_vfs > bd) { : #endif : unsigned int vfs = max_vfs[bd]; : if (ixgbe_validate_option(&vfs, &opt)) { : vfs = 0; 0.00 : 1d2e: c7 84 24 9c 00 00 00 movl $0x0,0x9c(%rsp) 0.00 : 1d35: 00 00 00 00 : DPRINTK(PROBE, INFO, 0.00 : 1d39: 75 17 jne 1d52 : "max_vfs out of range " : "Disabling SR-IOV.\n"); : } : : adapter->num_vfs = vfs; 0.00 : 1d3b: 8b 84 24 9c 00 00 00 mov 0x9c(%rsp),%eax : : if (vfs) 0.00 : 1d42: 85 c0 test %eax,%eax : DPRINTK(PROBE, INFO, : "max_vfs out of range " : "Disabling SR-IOV.\n"); : } : : adapter->num_vfs = vfs; 0.00 : 1d44: 89 83 58 7c 00 00 mov %eax,0x7c58(%rbx) : : if (vfs) 0.00 : 1d4a: 0f 84 99 f8 ff ff je 15e9 0.00 : 1d50: eb 9f jmp 1cf1 : if (num_max_vfs > bd) { : #endif : unsigned int vfs = max_vfs[bd]; : if (ixgbe_validate_option(&vfs, &opt)) { : vfs = 0; : DPRINTK(PROBE, INFO, 0.00 : 1d52: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1d59: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1d60: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1d67: 31 c0 xor %eax,%eax 0.00 : 1d69: e8 00 00 00 00 callq 1d6e 0.00 : 1d6e: eb cb jmp 1d3b : #endif : : /* Check Interoperability */ : if (*aflags & IXGBE_FLAG_SRIOV_ENABLED) { : if (!(*aflags & IXGBE_FLAG_SRIOV_CAPABLE)) { : DPRINTK(PROBE, INFO, 0.00 : 1d70: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1d77: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1d7e: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1d85: 31 c0 xor %eax,%eax 0.00 : 1d87: e8 00 00 00 00 callq 1d8c 0.00 : 1d8c: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 1d92: e9 81 f8 ff ff jmpq 1618 : "IOV is not supported on this " : "hardware. Disabling IOV.\n"); : *aflags &= ~IXGBE_FLAG_SRIOV_ENABLED; : adapter->num_vfs = 0; : } else if (!(*aflags & IXGBE_FLAG_MQ_CAPABLE)) { 0.00 : 1d97: f6 c4 02 test $0x2,%ah 0.00 : 1d9a: 0f 85 8d f8 ff ff jne 162d : DPRINTK(PROBE, INFO, 0.00 : 1da0: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1da7: 0f 84 6b f8 ff ff je 1618 0.00 : 1dad: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1db4: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1dbb: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1dc2: 31 c0 xor %eax,%eax 0.00 : 1dc4: e8 00 00 00 00 callq 1dc9 0.00 : 1dc9: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 1dcf: e9 44 f8 ff ff jmpq 1618 : } else { : if (opt.def == OPTION_ENABLED) : *aflags |= IXGBE_FLAG_FCOE_CAPABLE; : } : #endif : DPRINTK(PROBE, INFO, "FCoE Offload feature %sabled\n", 0.00 : 1dd4: f6 83 1a 02 00 00 02 testb $0x2,0x21a(%rbx) 0.00 : 1ddb: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1de2: 48 c7 c0 00 00 00 00 mov $0x0,%rax 0.00 : 1de9: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : 1df0: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1df7: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1dfe: 48 0f 45 c8 cmovne %rax,%rcx 0.00 : 1e02: 31 c0 xor %eax,%eax 0.00 : 1e04: e8 00 00 00 00 callq 1e09 0.00 : 1e09: e9 20 fa ff ff jmpq 182e : .def = OPTION_ENABLED : }; : #ifdef module_param_array : if (num_FCoE > bd) { : #endif : unsigned int fcoe = FCoE[bd]; 0.00 : 1e0e: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1e15: 00 : : ixgbe_validate_option(&fcoe, &opt); 0.00 : 1e16: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1e1d: 00 0.00 : 1e1e: 48 89 d6 mov %rdx,%rsi : .def = OPTION_ENABLED : }; : #ifdef module_param_array : if (num_FCoE > bd) { : #endif : unsigned int fcoe = FCoE[bd]; 0.00 : 1e21: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : : ixgbe_validate_option(&fcoe, &opt); 0.00 : 1e28: e8 c3 f4 ff ff callq 12f0 : if (fcoe) 0.00 : 1e2d: 8b 8c 24 9c 00 00 00 mov 0x9c(%rsp),%ecx 0.00 : 1e34: 85 c9 test %ecx,%ecx 0.00 : 1e36: 0f 84 e5 f9 ff ff je 1821 0.00 : 1e3c: e9 d6 f9 ff ff jmpq 1817 : DPRINTK(PROBE, INFO, "%s turned off\n", : opt.name); : adapter->rx_itr_setting = 0; : break; : case 1: : DPRINTK(PROBE, INFO, "dynamic interrupt " 0.00 : 1e41: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1e48: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1e4f: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1e56: 31 c0 xor %eax,%eax 0.00 : 1e58: e8 00 00 00 00 callq 1e5d 0.00 : 1e5d: e9 3a fe ff ff jmpq 1c9c : #ifdef module_param_array : } else { : if (opt.def == OPTION_DISABLED) : *aflags &= ~IXGBE_FLAG_VMDQ_ENABLED; : else : *aflags |= IXGBE_FLAG_VMDQ_ENABLED; 0.00 : 1e62: 81 8b 18 02 00 00 00 orl $0x800,0x218(%rbx) 0.00 : 1e69: 08 00 00 0.00 : 1e6c: e9 17 f7 ff ff jmpq 1588 : } : : #ifdef module_param_array : if (num_VMDQ > bd) { : #endif : unsigned int vmdq = VMDQ[bd]; 0.00 : 1e71: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1e78: 00 : : ixgbe_validate_option(&vmdq, &opt); 0.00 : 1e79: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1e80: 00 0.00 : 1e81: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : } : : #ifdef module_param_array : if (num_VMDQ > bd) { : #endif : unsigned int vmdq = VMDQ[bd]; 0.00 : 1e88: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : : ixgbe_validate_option(&vmdq, &opt); 0.00 : 1e8f: e8 5c f4 ff ff callq 12f0 : : /* zero or one both mean disabled from our driver's : * perspective */ : if (vmdq > 1) 0.00 : 1e94: 83 bc 24 9c 00 00 00 cmpl $0x1,0x9c(%rsp) 0.00 : 1e9b: 01 0.00 : 1e9c: 76 6e jbe 1f0c : *aflags |= IXGBE_FLAG_VMDQ_ENABLED; 0.00 : 1e9e: 81 8b 18 02 00 00 00 orl $0x800,0x218(%rbx) 0.00 : 1ea5: 08 00 00 : else : *aflags &= ~IXGBE_FLAG_VMDQ_ENABLED; : : feature[RING_F_VMDQ].limit = vmdq; 0.00 : 1ea8: 8b 84 24 9c 00 00 00 mov 0x9c(%rsp),%eax 0.00 : 1eaf: 66 89 83 d0 0b 00 00 mov %ax,0xbd0(%rbx) 0.00 : 1eb6: e9 da f6 ff ff jmpq 1595 : feature[RING_F_FDIR].limit = rss; : : feature[RING_F_RSS].limit = rss; : #ifdef module_param_array : } else if (opt.def == 0) { : rss = min_t(int, IXGBE_MAX_RSS_INDICES, 0.00 : 1ebb: 48 8b 3d 00 00 00 00 mov 0x0(%rip),%rdi # 1ec2 0.00 : 1ec2: e8 00 00 00 00 callq 1ec7 0.00 : 1ec7: ba 10 00 00 00 mov $0x10,%edx 0.00 : 1ecc: 83 f8 10 cmp $0x10,%eax 0.00 : 1ecf: 0f 4e d0 cmovle %eax,%edx 0.00 : 1ed2: 89 94 24 9c 00 00 00 mov %edx,0x9c(%rsp) : num_online_cpus()); : feature[RING_F_RSS].limit = rss; 0.00 : 1ed9: 66 89 93 d8 0b 00 00 mov %dx,0xbd8(%rbx) 0.00 : 1ee0: e9 3a f6 ff ff jmpq 151f : } : #endif : /* Check Interoperability */ : if (*aflags & IXGBE_FLAG_VMDQ_ENABLED) { : if (!(*aflags & IXGBE_FLAG_MQ_CAPABLE)) { : DPRINTK(PROBE, INFO, 0.00 : 1ee5: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1eec: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 1ef3: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 1efa: 31 c0 xor %eax,%eax 0.00 : 1efc: e8 00 00 00 00 callq 1f01 0.00 : 1f01: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 1f07: e9 a6 f6 ff ff jmpq 15b2 : /* zero or one both mean disabled from our driver's : * perspective */ : if (vmdq > 1) : *aflags |= IXGBE_FLAG_VMDQ_ENABLED; : else : *aflags &= ~IXGBE_FLAG_VMDQ_ENABLED; 0.00 : 1f0c: 81 a3 18 02 00 00 ff andl $0xfffff7ff,0x218(%rbx) 0.00 : 1f13: f7 ff ff 0.00 : 1f16: eb 90 jmp 1ea8 : unsigned int rss = RSS[bd]; : : #ifdef module_param_array : if (num_RSS > bd) { : #endif : ixgbe_validate_option(&rss, &opt); 0.00 : 1f18: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1f1f: 00 0.00 : 1f20: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1f27: e8 c4 f3 ff ff callq 12f0 : /* base it off num_online_cpus() with hardware limit */ : if (!rss) 0.00 : 1f2c: 8b 84 24 9c 00 00 00 mov 0x9c(%rsp),%eax 0.00 : 1f33: 85 c0 test %eax,%eax 0.00 : 1f35: 74 22 je 1f59 : rss = min_t(int, IXGBE_MAX_RSS_INDICES, : num_online_cpus()); : else : feature[RING_F_FDIR].limit = rss; 0.00 : 1f37: 66 89 83 e0 0b 00 00 mov %ax,0xbe0(%rbx) : : feature[RING_F_RSS].limit = rss; 0.00 : 1f3e: 66 89 83 d8 0b 00 00 mov %ax,0xbd8(%rbx) 0.00 : 1f45: e9 d5 f5 ff ff jmpq 151f : if (opt.def == OPTION_DISABLED) : *aflags &= ~IXGBE_FLAG_DCA_CAPABLE; : } : #endif : if (dca == IXGBE_MAX_DCA) : adapter->flags |= IXGBE_FLAG_DCA_ENABLED_DATA; 0.00 : 1f4a: 81 8b 18 02 00 00 00 orl $0x100,0x218(%rbx) 0.00 : 1f51: 01 00 00 0.00 : 1f54: e9 9a f5 ff ff jmpq 14f3 : if (num_RSS > bd) { : #endif : ixgbe_validate_option(&rss, &opt); : /* base it off num_online_cpus() with hardware limit */ : if (!rss) : rss = min_t(int, IXGBE_MAX_RSS_INDICES, 0.00 : 1f59: 48 8b 3d 00 00 00 00 mov 0x0(%rip),%rdi # 1f60 0.00 : 1f60: e8 00 00 00 00 callq 1f65 0.00 : 1f65: ba 10 00 00 00 mov $0x10,%edx 0.00 : 1f6a: 83 f8 10 cmp $0x10,%eax 0.00 : 1f6d: 0f 4e d0 cmovle %eax,%edx 0.00 : 1f70: 89 94 24 9c 00 00 00 mov %edx,0x9c(%rsp) 0.00 : 1f77: 89 d0 mov %edx,%eax 0.00 : 1f79: eb c3 jmp 1f3e : unsigned int dca = opt.def; : : #ifdef module_param_array : if (num_DCA > bd) { : #endif : dca = DCA[bd]; 0.00 : 1f7b: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 1f82: 00 : ixgbe_validate_option(&dca, &opt); 0.00 : 1f83: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 1f8a: 00 0.00 : 1f8b: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : unsigned int dca = opt.def; : : #ifdef module_param_array : if (num_DCA > bd) { : #endif : dca = DCA[bd]; 0.00 : 1f92: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&dca, &opt); 0.00 : 1f99: e8 52 f3 ff ff callq 12f0 : if (!dca) 0.00 : 1f9e: 44 8b 9c 24 9c 00 00 mov 0x9c(%rsp),%r11d 0.00 : 1fa5: 00 0.00 : 1fa6: 45 85 db test %r11d,%r11d 0.00 : 1fa9: 75 0a jne 1fb5 : *aflags &= ~IXGBE_FLAG_DCA_CAPABLE; 0.00 : 1fab: 81 a3 18 02 00 00 7f andl $0xffffff7f,0x218(%rbx) 0.00 : 1fb2: ff ff ff : : /* Check Interoperability */ : if (!(*aflags & IXGBE_FLAG_DCA_CAPABLE)) { 0.00 : 1fb5: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 1fbb: 84 c0 test %al,%al 0.00 : 1fbd: 78 12 js 1fd1 : DPRINTK(PROBE, INFO, "DCA is disabled\n"); 0.00 : 1fbf: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1fc6: 75 50 jne 2018 : *aflags &= ~IXGBE_FLAG_DCA_ENABLED; 0.00 : 1fc8: 83 e0 bf and $0xffffffbf,%eax 0.00 : 1fcb: 89 83 18 02 00 00 mov %eax,0x218(%rbx) : } : : if (dca == IXGBE_MAX_DCA) { 0.00 : 1fd1: 83 bc 24 9c 00 00 00 cmpl $0x2,0x9c(%rsp) 0.00 : 1fd8: 02 0.00 : 1fd9: 0f 85 14 f5 ff ff jne 14f3 : DPRINTK(PROBE, INFO, 0.00 : 1fdf: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 1fe6: 75 54 jne 203c : "DCA enabled for rx data\n"); : adapter->flags |= IXGBE_FLAG_DCA_ENABLED_DATA; 0.00 : 1fe8: 81 8b 18 02 00 00 00 orl $0x100,0x218(%rbx) 0.00 : 1fef: 01 00 00 0.00 : 1ff2: e9 ee f4 ff ff jmpq 14e5 : } : #endif : /* Check Interoperability */ : if (rss > 1) { : if (!(*aflags & IXGBE_FLAG_MQ_CAPABLE)) { : DPRINTK(PROBE, INFO, 0.00 : 1ff7: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 1ffe: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 2005: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 200c: 31 c0 xor %eax,%eax 0.00 : 200e: e8 00 00 00 00 callq 2013 0.00 : 2013: e9 27 f5 ff ff jmpq 153f : if (!dca) : *aflags &= ~IXGBE_FLAG_DCA_CAPABLE; : : /* Check Interoperability */ : if (!(*aflags & IXGBE_FLAG_DCA_CAPABLE)) { : DPRINTK(PROBE, INFO, "DCA is disabled\n"); 0.00 : 2018: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 201f: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 2026: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 202d: 31 c0 xor %eax,%eax 0.00 : 202f: e8 00 00 00 00 callq 2034 0.00 : 2034: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 203a: eb 8c jmp 1fc8 : *aflags &= ~IXGBE_FLAG_DCA_ENABLED; : } : : if (dca == IXGBE_MAX_DCA) { : DPRINTK(PROBE, INFO, 0.00 : 203c: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 2043: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 204a: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 2051: 31 c0 xor %eax,%eax 0.00 : 2053: e8 00 00 00 00 callq 2058 0.00 : 2058: eb 8e jmp 1fe8 : } : #endif : /* Check Interoperability */ : if ((*aflags & IXGBE_FLAG_MQ_CAPABLE) && : !(*aflags & IXGBE_FLAG_MSIX_CAPABLE)) { : DPRINTK(PROBE, INFO, 0.00 : 205a: f6 83 a8 14 00 00 02 testb $0x2,0x14a8(%rbx) 0.00 : 2061: 75 4f jne 20b2 : "Multiple queues are not supported while MSI-X " : "is disabled. Disabling Multiple Queues.\n"); : *aflags &= ~IXGBE_FLAG_MQ_CAPABLE; 0.00 : 2063: 80 e6 fd and $0xfd,%dh 0.00 : 2066: 89 93 18 02 00 00 mov %edx,0x218(%rbx) 0.00 : 206c: e9 44 f4 ff ff jmpq 14b5 : }; : : #ifdef module_param_array : if (num_MQ > bd) { : #endif : unsigned int mq = MQ[bd]; 0.00 : 2071: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 2078: 00 : ixgbe_validate_option(&mq, &opt); 0.00 : 2079: 48 8d bc 24 9c 00 00 lea 0x9c(%rsp),%rdi 0.00 : 2080: 00 0.00 : 2081: 48 c7 c6 00 00 00 00 mov $0x0,%rsi : }; : : #ifdef module_param_array : if (num_MQ > bd) { : #endif : unsigned int mq = MQ[bd]; 0.00 : 2088: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) : ixgbe_validate_option(&mq, &opt); 0.00 : 208f: e8 5c f2 ff ff callq 12f0 : if (mq) 0.00 : 2094: 8b ac 24 9c 00 00 00 mov 0x9c(%rsp),%ebp 0.00 : 209b: 85 ed test %ebp,%ebp 0.00 : 209d: 0f 84 f0 f3 ff ff je 1493 : else : *aflags &= ~IXGBE_FLAG_MQ_CAPABLE; : #ifdef module_param_array : } else { : if (opt.def == OPTION_ENABLED) : *aflags |= IXGBE_FLAG_MQ_CAPABLE; 0.00 : 20a3: 81 8b 18 02 00 00 00 orl $0x200,0x218(%rbx) 0.00 : 20aa: 02 00 00 0.00 : 20ad: e9 eb f3 ff ff jmpq 149d : } : #endif : /* Check Interoperability */ : if ((*aflags & IXGBE_FLAG_MQ_CAPABLE) && : !(*aflags & IXGBE_FLAG_MSIX_CAPABLE)) { : DPRINTK(PROBE, INFO, 0.00 : 20b2: 48 8b b3 00 02 00 00 mov 0x200(%rbx),%rsi 0.00 : 20b9: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 20c0: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 20c7: 31 c0 xor %eax,%eax 0.00 : 20c9: e8 00 00 00 00 callq 20ce 0.00 : 20ce: 8b 93 18 02 00 00 mov 0x218(%rbx),%edx 0.00 : 20d4: eb 8d jmp 2063 : if (int_mode == OPTION_UNSET) : int_mode = InterruptType[bd]; : ixgbe_validate_option(&int_mode, &opt); : switch (int_mode) { : case IXGBE_INT_MSIX: : if (!(*aflags & IXGBE_FLAG_MSIX_CAPABLE)) 0.00 : 20d6: f6 83 18 02 00 00 04 testb $0x4,0x218(%rbx) 0.00 : 20dd: 0f 85 96 f3 ff ff jne 1479 : printk(KERN_INFO 0.00 : 20e3: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 20ea: 31 c0 xor %eax,%eax 0.00 : 20ec: e8 00 00 00 00 callq 20f1 0.00 : 20f1: e9 83 f3 ff ff jmpq 1479 : "Ignoring MSI-X setting; " : "support unavailable\n"); : break; : case IXGBE_INT_MSI: : if (!(*aflags & IXGBE_FLAG_MSI_CAPABLE)) { 0.00 : 20f6: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 20fc: a8 01 test $0x1,%al 0.00 : 20fe: 74 22 je 2122 : printk(KERN_INFO : "Ignoring MSI setting; " : "support unavailable\n"); : } else { : *aflags &= ~IXGBE_FLAG_MSIX_CAPABLE; 0.00 : 2100: 83 e0 fb and $0xfffffffb,%eax 0.00 : 2103: 89 83 18 02 00 00 mov %eax,0x218(%rbx) 0.00 : 2109: e9 6b f3 ff ff jmpq 1479 : #ifdef module_param_array : if (num_IntMode > bd || num_InterruptType > bd) { : #endif : int_mode = IntMode[bd]; : if (int_mode == OPTION_UNSET) : int_mode = InterruptType[bd]; 0.00 : 210e: 42 8b 04 ad 00 00 00 mov 0x0(,%r13,4),%eax 0.00 : 2115: 00 0.00 : 2116: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) 0.00 : 211d: e9 23 f3 ff ff jmpq 1445 : "Ignoring MSI-X setting; " : "support unavailable\n"); : break; : case IXGBE_INT_MSI: : if (!(*aflags & IXGBE_FLAG_MSI_CAPABLE)) { : printk(KERN_INFO 0.00 : 2122: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 2129: 31 c0 xor %eax,%eax 0.00 : 212b: e8 00 00 00 00 callq 2130 0.00 : 2130: e9 44 f3 ff ff jmpq 1479 : int bd = adapter->bd_number; : u32 *aflags = &adapter->flags; : struct ixgbe_ring_feature *feature = adapter->ring_feature; : : if (bd >= IXGBE_MAX_NIC) { : printk(KERN_NOTICE 0.00 : 2135: 44 89 e6 mov %r12d,%esi 0.00 : 2138: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 213f: 31 c0 xor %eax,%eax 0.00 : 2141: e8 00 00 00 00 callq 2146 : "Warning: no configuration for board #%d\n", bd); : printk(KERN_NOTICE "Using defaults for all values\n"); 0.00 : 2146: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 214d: 31 c0 xor %eax,%eax 0.00 : 214f: e8 00 00 00 00 callq 2154 0.00 : 2154: e9 bb f2 ff ff jmpq 1414 : break; : } : #ifdef module_param_array : } else { : /* default settings */ : if (opt.def == IXGBE_INT_MSIX && 0.00 : 2159: 8b 15 00 00 00 00 mov 0x0(%rip),%edx # 215f 0.00 : 215f: 83 fa 02 cmp $0x2,%edx 0.00 : 2162: 74 1c je 2180 : *aflags & IXGBE_FLAG_MSIX_CAPABLE) { : *aflags |= IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; : } else if (opt.def == IXGBE_INT_MSI && 0.00 : 2164: 83 ea 01 sub $0x1,%edx : break; : } : #ifdef module_param_array : } else { : /* default settings */ : if (opt.def == IXGBE_INT_MSIX && 0.00 : 2167: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax : *aflags & IXGBE_FLAG_MSIX_CAPABLE) { : *aflags |= IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; : } else if (opt.def == IXGBE_INT_MSI && 0.00 : 216d: 74 2c je 219b : *aflags & IXGBE_FLAG_MSI_CAPABLE) { : *aflags &= ~IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; : } else { : *aflags &= ~IXGBE_FLAG_MSIX_CAPABLE; : *aflags &= ~IXGBE_FLAG_MSI_CAPABLE; 0.00 : 216f: 83 e0 fa and $0xfffffffa,%eax 0.00 : 2172: 4d 63 ec movslq %r12d,%r13 0.00 : 2175: 89 83 18 02 00 00 mov %eax,0x218(%rbx) 0.00 : 217b: e9 f9 f2 ff ff jmpq 1479 : break; : } : #ifdef module_param_array : } else { : /* default settings */ : if (opt.def == IXGBE_INT_MSIX && 0.00 : 2180: 8b 83 18 02 00 00 mov 0x218(%rbx),%eax 0.00 : 2186: a8 04 test $0x4,%al 0.00 : 2188: 74 e5 je 216f : *aflags & IXGBE_FLAG_MSIX_CAPABLE) { : *aflags |= IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; 0.00 : 218a: 83 c8 05 or $0x5,%eax 0.00 : 218d: 4d 63 ec movslq %r12d,%r13 0.00 : 2190: 89 83 18 02 00 00 mov %eax,0x218(%rbx) : break; : } : #ifdef module_param_array : } else { : /* default settings */ : if (opt.def == IXGBE_INT_MSIX && 0.00 : 2196: e9 de f2 ff ff jmpq 1479 : *aflags & IXGBE_FLAG_MSIX_CAPABLE) { : *aflags |= IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; : } else if (opt.def == IXGBE_INT_MSI && 0.00 : 219b: a8 01 test $0x1,%al 0.00 : 219d: 74 d0 je 216f : *aflags & IXGBE_FLAG_MSI_CAPABLE) { : *aflags &= ~IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; 0.00 : 219f: 83 e0 fb and $0xfffffffb,%eax 0.00 : 21a2: 4d 63 ec movslq %r12d,%r13 0.00 : 21a5: 83 c8 01 or $0x1,%eax 0.00 : 21a8: 89 83 18 02 00 00 mov %eax,0x218(%rbx) : /* default settings */ : if (opt.def == IXGBE_INT_MSIX && : *aflags & IXGBE_FLAG_MSIX_CAPABLE) { : *aflags |= IXGBE_FLAG_MSIX_CAPABLE; : *aflags |= IXGBE_FLAG_MSI_CAPABLE; : } else if (opt.def == IXGBE_INT_MSI && 77.78 : 21ae: e9 c6 f2 ff ff jmpq 1479 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/xt_tcpudp.ko ---------------------------------------------- 18.18 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/xt_tcpudp.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000140 : ??:0 36.36 : 140: 48 81 ec 88 00 00 00 sub $0x88,%rsp 0.00 : 177: 48 89 je 1b0 0.00 : 179: 6c 24 60 sub $0x1,%eax 0.00 : 17c: 4c 89 64 24 68 48 je 320 9.09 : 182: 89 f5 xor %eax,%eax 0.00 : 184: 48 89 5c 24 58 mov 0x58(%rsp),%rbx 9.09 : 189: 4c 89 6c 24 70 mov 0x60(%rsp),%rbp 0.00 : 18e: 49 89 fc 4c 89 mov 0x68(%rsp),%r12 0.00 : 193: 74 24 78 4c 89 mov 0x70(%rsp),%r13 0.00 : 198: bc 24 80 00 00 mov 0x78(%rsp),%r14 9.09 : 19d: 00 8b 46 20 48 8b 5e mov 0x80(%rsp),%r15 0.00 : 1a4: 08 0.00 : 1a5: 85 c0 74 37 83 e8 01 add $0x88,%rsp 0.00 : 1ac: 0f retq 0.00 : 1ad: 84 9e 01 nopl (%rax) 0.00 : 1b0: 00 00 31 mov 0x68(%rdi),%eax 9.09 : 1b3: c0 48 8b sub 0x6c(%rdi),%eax 9.09 : 1b6: 5c 24 58 mov 0x24(%rsi),%esi 0.00 : 1b9: 48 8b sub %esi,%eax 0.00 : 1bb: 6c 24 60 cmp $0x13,%eax 0.00 : 1be: 4c 8b 64 24 68 4c jle 300 0.00 : 1c4: 8b 6c 24 movslq %esi,%rsi 0.00 : 1c7: 70 4c 8b 74 24 78 4c add 0xe0(%rdi),%rsi 0.00 : 1ce: 8b bc 24 test %rsi,%rsi 0.00 : 1d1: 80 00 00 00 48 81 je 338 9.09 : 1d7: c4 88 00 movzwl (%rsi),%eax 0.00 : 1da: 00 00 c3 0f movzbl 0xb(%rbx),%edi 0.00 : 1de: 1f 00 8b 47 rol $0x8,%ax 0.00 : 1e2: 68 2b 47 cmp %ax,(%rbx) 0.00 : 1e5: 6c 8b 76 setbe %dl 0.00 : 1e8: 24 29 f0 83 cmp %ax,0x2(%rbx) 0.00 : 1ec: f8 13 0f setae %al 0.00 : 1ef: 8e 3c 01 movzbl %al,%eax 0.00 : 1f2: 00 00 and %edx,%eax 0.00 : 1f4: 48 63 mov %edi,%edx 0.00 : 1f6: f6 48 03 and $0x1,%edx 0.00 : 1f9: b7 e0 cmp %edx,%eax 0.00 : 1fb: 00 00 je 182 0.00 : 1fd: 00 48 85 f6 movzwl 0x2(%rsi),%eax 0.00 : 201: 0f 84 61 01 rol $0x8,%ax 0.00 : 205: 00 00 0f b7 cmp %ax,0x4(%rbx) 9.09 : 209: 06 0f b6 setbe %cl 0.00 : 20c: 7b 0b xor %edx,%edx 0.00 : 20e: 66 c1 c0 08 cmp %ax,0x6(%rbx) 0.00 : 212: 66 39 mov %edi,%eax 0.00 : 214: 03 0f 96 setae %dl 0.00 : 217: c2 66 shr %eax 0.00 : 219: 39 43 and %ecx,%edx 0.00 : 21b: 02 0f 93 and $0x1,%eax 0.00 : 21e: c0 0f cmp %eax,%edx 0.00 : 220: b6 c0 21 d0 89 fa je 182 0.00 : 226: 83 e2 01 39 movzbl 0xd(%rsi),%eax 0.00 : 22a: d0 74 85 and 0x9(%rbx),%al 0.00 : 22d: 0f b7 46 cmp 0xa(%rbx),%al 0.00 : 230: 02 66 mov %edi,%eax 0.00 : 232: c1 c0 08 setne %dl 0.00 : 235: 66 39 43 shr $0x2,%eax 0.00 : 238: 04 0f 96 and $0x1,%eax 0.00 : 23b: c1 31 cmp %al,%dl 0.00 : 23d: d2 66 39 43 06 89 jne 182 0.00 : 243: f8 0f 93 c2 d1 movzbl 0x8(%rbx),%r13d 0.00 : 248: e8 21 ca 83 e0 mov $0x1,%eax 0.00 : 24d: 01 39 c2 test %r13b,%r13b 0.00 : 250: 0f 84 5c ff ff ff je 184 0.00 : 256: 0f b6 46 0d movzbl 0xc(%rsi),%eax 0.00 : 25a: 22 43 09 shr $0x4,%al 0.00 : 25d: 3a 43 0a movzbl %al,%edx 0.00 : 260: 89 f8 0f 95 c2 c1 e8 lea 0x0(,%rdx,4),%eax 0.00 : 267: 02 83 e0 cmp $0x13,%eax 0.00 : 26a: 01 38 c2 0f 85 3f jbe 329 0.00 : 270: ff ff ff shr $0x3,%edi 0.00 : 273: 44 0f b6 6b 08 b8 01 lea -0x14(,%rdx,4),%ebx 0.00 : 27a: 00 00 00 45 mov 0x24(%rbp),%r14d 0.00 : 27e: 84 ed mov %edi,%eax 0.00 : 280: 0f 84 2e and $0x1,%eax 0.00 : 283: ff ff ff 0f b6 46 0c cmpb $0x0,0x0(%rip) # 28a 0.00 : 28a: c0 e8 04 mov %eax,%r15d 0.00 : 28d: 0f b6 d0 8d 04 95 jne 367 0.00 : 293: 00 00 test %ebx,%ebx 0.00 : 295: 00 00 83 f8 13 0f je 35c 0.00 : 29b: 86 b9 00 00 00 mov 0x68(%r12),%eax 0.00 : 2a0: c1 ef 03 8d 1c sub 0x6c(%r12),%eax 0.00 : 2a5: 95 ec ff ff lea 0x14(%r14),%esi 0.00 : 2a9: ff 44 sub %esi,%eax 0.00 : 2ab: 8b 75 cmp %eax,%ebx 0.00 : 2ad: 24 89 f8 83 e0 01 jg 381 0.00 : 2b3: 80 3d 00 movslq %esi,%rsi 0.00 : 2b6: 00 00 00 00 41 89 c7 add 0xe0(%r12),%rsi 0.00 : 2bd: 0f 0.00 : 2be: 85 d4 xor %ecx,%ecx 0.00 : 2c0: 00 00 00 test %rsi,%rsi 0.00 : 2c3: 85 db 0f 84 c1 mov $0x1,%edi 0.00 : 2c8: 00 00 jne 2e5 0.00 : 2ca: 00 41 jmp 329 0.00 : 2cc: 8b 44 24 68 nopl 0x0(%rax) 0.00 : 2d0: 41 2b 44 lea 0x1(%rcx),%eax 0.00 : 2d3: 24 6c 41 8d movzbl (%rsi,%rax,1),%edx 0.00 : 2d7: 76 14 test %dl,%dl 0.00 : 2d9: 29 f0 39 movzbl %dl,%eax 0.00 : 2dc: c3 0f 8f cmove %edi,%eax 0.00 : 2df: ce 00 add %eax,%ecx 0.00 : 2e1: 00 00 cmp %ecx,%ebx 0.00 : 2e3: 48 63 jbe 35c 0.00 : 2e5: f6 49 mov %ecx,%eax 0.00 : 2e7: 03 b4 24 e0 movzbl (%rsi,%rax,1),%eax 0.00 : 2eb: 00 00 00 cmp %al,%r13b 0.00 : 2ee: 31 c9 je 358 0.00 : 2f0: 48 85 cmp $0x1,%al 0.00 : 2f2: f6 bf ja 2d0 0.00 : 2f4: 01 00 00 add $0x1,%ecx 0.00 : 2f7: 00 75 jmp 2e1 0.00 : 2f9: 1b eb 5d 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 300: 8d 41 01 0f b6 lea 0x30(%rsp),%r13 0.00 : 305: 14 06 84 d2 0f mov $0x14,%ecx 0.00 : 30a: b6 c2 0f mov %r13,%rdx 0.00 : 30d: 44 c7 01 c1 39 callq 312 0.00 : 312: cb 76 test %eax,%eax 0.00 : 314: 77 89 js 338 0.00 : 316: c8 0f b6 mov %r13,%rsi 0.00 : 319: 04 06 41 38 c5 jmpq 1ce 0.00 : 31e: 74 68 xchg %ax,%ax 0.00 : 320: 3c 01 77 dc 83 c1 01 cmpb $0x0,0x0(%rip) # 327 0.00 : 327: eb e8 jne 39a 0.00 : 329: 0f 1f 80 00 movb $0x1,0x2d(%rbp) 0.00 : 32d: 00 00 xor %eax,%eax 0.00 : 32f: 00 4c 8d 6c 24 jmpq 184 0.00 : 334: 30 b9 14 00 nopl 0x0(%rax) 0.00 : 338: 00 00 4c 89 ea e8 00 cmpb $0x0,0x0(%rip) # 33f 0.00 : 33f: 00 00 je 329 0.00 : 341: 00 85 c0 78 22 4c 89 mov $0x0,%rsi 0.00 : 348: ee e9 b0 fe ff ff 66 mov $0x0,%rdi 0.00 : 34f: 90 80 xor %eax,%eax 0.00 : 351: 3d 00 00 00 00 callq 356 0.00 : 356: 00 75 jmp 329 0.00 : 358: 71 c6 45 2d xor $0x1,%r15d 0.00 : 35c: 01 31 c0 test %r15b,%r15b 0.00 : 35f: e9 50 fe setne %al 0.00 : 362: ff ff 0f 1f 40 jmpq 184 0.00 : 367: 00 80 3d 00 00 00 00 mov $0x0,%rsi 0.00 : 36e: 00 74 e8 48 c7 c6 00 mov $0x0,%rdi 0.00 : 375: 00 00 xor %eax,%eax 0.00 : 377: 00 48 c7 c7 00 callq 37c 0.00 : 37c: 00 00 00 31 c0 jmpq 293 0.00 : 381: e8 00 mov %ebx,%ecx 0.00 : 383: 00 00 00 mov %rsp,%rdx 0.00 : 386: eb d1 41 mov %r12,%rdi 0.00 : 389: 83 f7 01 45 84 callq 38e 0.00 : 38e: ff 0f test %eax,%eax 0.00 : 390: 95 c0 js 329 0.00 : 392: e9 1d fe mov %rsp,%rsi 0.00 : 395: ff ff 48 c7 c6 jmpq 2be 0.00 : 39a: 00 00 00 00 48 c7 c7 mov $0x0,%rsi 0.00 : 3a1: 00 00 00 00 31 c0 e8 mov $0x0,%rdi 0.00 : 3a8: 00 00 xor %eax,%eax 0.00 : 3aa: 00 00 e9 12 ff callq 3af 0.00 : 3af: ff ff 89 d9 48 jmpq 329 : 3b4: Address 0x00000000000003b4 is out of bounds. : Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:105 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:114 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000673da0 : : * : * Caller must hold exclusive lock on BufMappingLock for tag's partition : */ : int : BufTableInsert(BufferTag *tagPtr, int buf_id) : { 0.00 : 673da0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:105 12.50 : 673da1: 48 89 e5 mov %rsp,%rbp 0.00 : 673da4: 48 83 ec 20 sub $0x20,%rsp : BufferLookupEnt ent; : : ent.key = *tagPtr; 0.00 : 673da8: 48 8b 07 mov (%rdi),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:108 25.00 : 673dab: 48 89 45 e0 mov %rax,-0x20(%rbp) 12.50 : 673daf: 48 8b 47 08 mov 0x8(%rdi),%rax 12.50 : 673db3: 48 89 45 e8 mov %rax,-0x18(%rbp) 12.50 : 673db7: 8b 47 10 mov 0x10(%rdi),%eax : ent.id = buf_id; : : Assert(buf_id >= 0); /* -1 is reserved for not-in-table */ : Assert(tagPtr->blockNum != P_NEW); /* invalid tag */ : : if (CHashInsert(SharedBufHash, &ent)) 0.00 : 673dba: 48 8b 3d 97 92 50 00 mov 0x509297(%rip),%rdi # b7d058 : BufTableInsert(BufferTag *tagPtr, int buf_id) : { : BufferLookupEnt ent; : : ent.key = *tagPtr; : ent.id = buf_id; 0.00 : 673dc1: 89 75 f4 mov %esi,-0xc(%rbp) : : Assert(buf_id >= 0); /* -1 is reserved for not-in-table */ : Assert(tagPtr->blockNum != P_NEW); /* invalid tag */ : : if (CHashInsert(SharedBufHash, &ent)) 0.00 : 673dc4: 48 8d 75 e0 lea -0x20(%rbp),%rsi : int : BufTableInsert(BufferTag *tagPtr, int buf_id) : { : BufferLookupEnt ent; : : ent.key = *tagPtr; 12.50 : 673dc8: 89 45 f0 mov %eax,-0x10(%rbp) : ent.id = buf_id; : : Assert(buf_id >= 0); /* -1 is reserved for not-in-table */ : Assert(tagPtr->blockNum != P_NEW); /* invalid tag */ : : if (CHashInsert(SharedBufHash, &ent)) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/buf_table.c:114 12.50 : 673dcb: e8 50 f1 10 00 callq 782f20 0.00 : 673dd0: 89 c2 mov %eax,%edx 0.00 : 673dd2: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 673dd7: 84 d2 test %dl,%dl 0.00 : 673dd9: 0f 44 45 f4 cmove -0xc(%rbp),%eax : return -1; : : return ent.id; : } 0.00 : 673ddd: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:706 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:690 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:690 12.50 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:731 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000698c00 : : * mdread() -- Read the specified block from a relation. : */ : void : mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer) : { 0.00 : 698c00: 55 push %rbp : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); 0.00 : 698c01: 45 31 c0 xor %r8d,%r8d : * mdread() -- Read the specified block from a relation. : */ : void : mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer) : { 0.00 : 698c04: 48 89 e5 mov %rsp,%rbp 0.00 : 698c07: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 698c0b: 41 89 d6 mov %edx,%r14d 0.00 : 698c0e: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 698c12: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 698c16: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 698c1a: 49 89 cc mov %rcx,%r12 0.00 : 698c1d: 48 83 ec 20 sub $0x20,%rsp : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); 0.00 : 698c21: 31 c9 xor %ecx,%ecx : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698c23: 4c 89 f3 mov %r14,%rbx : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); 0.00 : 698c26: e8 a5 f7 ff ff callq 6983d0 <_mdfd_getseg> : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698c2b: 81 e3 ff ff 01 00 and $0x1ffff,%ebx : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) 0.00 : 698c31: 8b 38 mov (%rax),%edi /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:690 25.00 : 698c33: 31 d2 xor %edx,%edx : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698c35: 48 c1 e3 0d shl $0xd,%rbx : reln->smgr_rnode.node.spcNode, : reln->smgr_rnode.node.dbNode, : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend); : : v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); 0.00 : 698c39: 49 89 c5 mov %rax,%r13 : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) 0.00 : 698c3c: 48 89 de mov %rbx,%rsi 12.50 : 698c3f: e8 4c 0e fe ff callq 679a90 0.00 : 698c44: 48 39 d8 cmp %rbx,%rax 0.00 : 698c47: 75 56 jne 698c9f : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not seek to block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : : nbytes = FileRead(v->mdfd_vfd, buffer, BLCKSZ); 0.00 : 698c49: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698c4d: ba 00 20 00 00 mov $0x2000,%edx 0.00 : 698c52: 4c 89 e6 mov %r12,%rsi 0.00 : 698c55: e8 96 11 fe ff callq 679df0 : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend, : nbytes, : BLCKSZ); : : if (nbytes != BLCKSZ) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:706 50.00 : 698c5a: 3d 00 20 00 00 cmp $0x2000,%eax : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not seek to block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : : nbytes = FileRead(v->mdfd_vfd, buffer, BLCKSZ); 0.00 : 698c5f: 89 c3 mov %eax,%ebx : reln->smgr_rnode.node.relNode, : reln->smgr_rnode.backend, : nbytes, : BLCKSZ); : : if (nbytes != BLCKSZ) 0.00 : 698c61: 74 27 je 698c8a : { : if (nbytes < 0) 0.00 : 698c63: 85 c0 test %eax,%eax 0.00 : 698c65: 78 61 js 698cc8 : * read a nonexistent block. However, if zero_damaged_pages is ON or : * we are InRecovery, we should instead return zeroes without : * complaining. This allows, for example, the case of trying to : * update a block that was later truncated away. : */ : if (zero_damaged_pages || InRecovery) 0.00 : 698c67: 80 3d f2 43 4e 00 00 cmpb $0x0,0x4e43f2(%rip) # b7d060 0.00 : 698c6e: 75 0d jne 698c7d 0.00 : 698c70: 80 3d f1 04 4e 00 00 cmpb $0x0,0x4e04f1(%rip) # b79168 0.00 : 698c77: 0f 84 9a 00 00 00 je 698d17 : MemSet(buffer, 0, BLCKSZ); 0.00 : 698c7d: b9 00 04 00 00 mov $0x400,%ecx 0.00 : 698c82: 31 c0 xor %eax,%eax 0.00 : 698c84: 4c 89 e7 mov %r12,%rdi 0.00 : 698c87: f3 48 ab rep stos %rax,%es:(%rdi) : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("could not read block %u in file \"%s\": read only %d of %d bytes", : blocknum, FilePathName(v->mdfd_vfd), : nbytes, BLCKSZ))); : } : } 0.00 : 698c8a: 48 8b 1c 24 mov (%rsp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:731 12.50 : 698c8e: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 698c93: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 698c98: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 698c9d: c9 leaveq 0.00 : 698c9e: c3 retq : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) : ereport(ERROR, 0.00 : 698c9f: 45 31 c0 xor %r8d,%r8d 0.00 : 698ca2: b9 d9 e3 8a 00 mov $0x8ae3d9,%ecx 0.00 : 698ca7: ba b6 02 00 00 mov $0x2b6,%edx 0.00 : 698cac: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698cb1: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698cb6: e8 05 1e 0e 00 callq 77aac0 0.00 : 698cbb: 84 c0 test %al,%al 0.00 : 698cbd: 0f 85 b3 00 00 00 jne 698d76 : * update a block that was later truncated away. : */ : if (zero_damaged_pages || InRecovery) : MemSet(buffer, 0, BLCKSZ); : else : ereport(ERROR, 0.00 : 698cc3: e8 08 08 dd ff callq 4694d0 : BLCKSZ); : : if (nbytes != BLCKSZ) : { : if (nbytes < 0) : ereport(ERROR, 0.00 : 698cc8: 45 31 c0 xor %r8d,%r8d 0.00 : 698ccb: b9 d9 e3 8a 00 mov $0x8ae3d9,%ecx 0.00 : 698cd0: ba c8 02 00 00 mov $0x2c8,%edx 0.00 : 698cd5: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698cda: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698cdf: e8 dc 1d 0e 00 callq 77aac0 0.00 : 698ce4: 84 c0 test %al,%al 0.00 : 698ce6: 74 db je 698cc3 0.00 : 698ce8: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698cec: e8 bf f5 fd ff callq 6782b0 0.00 : 698cf1: 44 89 f6 mov %r14d,%esi 0.00 : 698cf4: 48 89 c2 mov %rax,%rdx 0.00 : 698cf7: bf e8 e2 8a 00 mov $0x8ae2e8,%edi 0.00 : 698cfc: 31 c0 xor %eax,%eax 0.00 : 698cfe: e8 9d 3b 0e 00 callq 77c8a0 0.00 : 698d03: 89 c3 mov %eax,%ebx 0.00 : 698d05: e8 e6 3d 0e 00 callq 77caf0 0.00 : 698d0a: 89 de mov %ebx,%esi 0.00 : 698d0c: 89 c7 mov %eax,%edi 0.00 : 698d0e: 31 c0 xor %eax,%eax 0.00 : 698d10: e8 cb 18 0e 00 callq 77a5e0 0.00 : 698d15: eb ac jmp 698cc3 : * update a block that was later truncated away. : */ : if (zero_damaged_pages || InRecovery) : MemSet(buffer, 0, BLCKSZ); : else : ereport(ERROR, 0.00 : 698d17: 45 31 c0 xor %r8d,%r8d 0.00 : 698d1a: b9 d9 e3 8a 00 mov $0x8ae3d9,%ecx 0.00 : 698d1f: ba d9 02 00 00 mov $0x2d9,%edx 0.00 : 698d24: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698d29: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698d2e: e8 8d 1d 0e 00 callq 77aac0 0.00 : 698d33: 84 c0 test %al,%al 0.00 : 698d35: 74 8c je 698cc3 0.00 : 698d37: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698d3b: e8 70 f5 fd ff callq 6782b0 0.00 : 698d40: 89 d9 mov %ebx,%ecx 0.00 : 698d42: 48 89 c2 mov %rax,%rdx 0.00 : 698d45: 44 89 f6 mov %r14d,%esi 0.00 : 698d48: 41 b8 00 20 00 00 mov $0x2000,%r8d 0.00 : 698d4e: bf 18 e3 8a 00 mov $0x8ae318,%edi 0.00 : 698d53: 31 c0 xor %eax,%eax 0.00 : 698d55: e8 46 3b 0e 00 callq 77c8a0 0.00 : 698d5a: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 698d5f: 89 c3 mov %eax,%ebx 0.00 : 698d61: e8 ea 3f 0e 00 callq 77cd50 0.00 : 698d66: 89 de mov %ebx,%esi 0.00 : 698d68: 89 c7 mov %eax,%edi 0.00 : 698d6a: 31 c0 xor %eax,%eax 0.00 : 698d6c: e8 6f 18 0e 00 callq 77a5e0 0.00 : 698d71: e9 4d ff ff ff jmpq 698cc3 : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); : : Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); : : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) : ereport(ERROR, 0.00 : 698d76: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698d7a: e8 31 f5 fd ff callq 6782b0 0.00 : 698d7f: 44 89 f6 mov %r14d,%esi 0.00 : 698d82: 48 89 c2 mov %rax,%rdx 0.00 : 698d85: bf 18 e1 8a 00 mov $0x8ae118,%edi 0.00 : 698d8a: e9 6d ff ff ff jmpq 698cfc Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 37.50 ??:0 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000035fa0 : ??:0 12.50 : 35fa0: 48 83 ec 18 sub $0x18,%rsp 0.00 : 35fa4: be 01 00 00 00 mov $0x1,%esi 0.00 : 35fa9: 31 c0 xor %eax,%eax 0.00 : 35fab: 83 3d 02 17 34 00 00 cmpl $0x0,0x341702(%rip) # 3776b4 <__libc_multiple_threads> 12.50 : 35fb2: 74 10 je 35fc4 0.00 : 35fb4: f0 0f b1 35 c4 db 33 lock cmpxchg %esi,0x33dbc4(%rip) # 373b80 0.00 : 35fbb: 00 0.00 : 35fbc: 0f 85 da 01 00 00 jne 3619c <_L_lock_12> 0.00 : 35fc2: eb 0d jmp 35fd1 0.00 : 35fc4: 0f b1 35 b5 db 33 00 cmpxchg %esi,0x33dbb5(%rip) # 373b80 25.00 : 35fcb: 0f 85 cb 01 00 00 jne 3619c <_L_lock_12> 0.00 : 35fd1: 48 8d 3d 28 c5 33 00 lea 0x33c528(%rip),%rdi # 372500 0.00 : 35fd8: 48 8d 74 24 14 lea 0x14(%rsp),%rsi 0.00 : 35fdd: e8 be 03 00 00 callq 363a0 0.00 : 35fe2: 83 3d cb 16 34 00 00 cmpl $0x0,0x3416cb(%rip) # 3776b4 <__libc_multiple_threads> 12.50 : 35fe9: 74 0f je 35ffa 0.00 : 35feb: f0 ff 0d 8e db 33 00 lock decl 0x33db8e(%rip) # 373b80 0.00 : 35ff2: 0f 85 c3 01 00 00 jne 361bb <_L_unlock_23> 0.00 : 35ff8: eb 0c jmp 36006 0.00 : 35ffa: ff 0d 80 db 33 00 decl 0x33db80(%rip) # 373b80 37.50 : 36000: 0f 85 b5 01 00 00 jne 361bb <_L_unlock_23> 0.00 : 36006: 48 63 44 24 14 movslq 0x14(%rsp),%rax 0.00 : 3600b: 48 83 c4 18 add $0x18,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 25.00 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000077aa0 <_int_free>: 0.00 : 77aa0: 41 57 push %r15 ??:0 25.00 : 77aa2: 41 56 push %r14 0.00 : 77aa4: 41 55 push %r13 0.00 : 77aa6: 49 89 fd mov %rdi,%r13 0.00 : 77aa9: 41 54 push %r12 0.00 : 77aab: 55 push %rbp 0.00 : 77aac: 53 push %rbx 0.00 : 77aad: 48 89 f3 mov %rsi,%rbx 0.00 : 77ab0: 48 83 ec 38 sub $0x38,%rsp 0.00 : 77ab4: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 77ab8: 48 89 d5 mov %rdx,%rbp 0.00 : 77abb: 48 83 e5 f8 and $0xfffffffffffffff8,%rbp 0.00 : 77abf: 48 89 e8 mov %rbp,%rax 0.00 : 77ac2: 48 f7 d8 neg %rax 0.00 : 77ac5: 48 39 c6 cmp %rax,%rsi 0.00 : 77ac8: 0f 87 02 08 00 00 ja 782d0 <_int_free+0x830> 0.00 : 77ace: 40 f6 c6 0f test $0xf,%sil 0.00 : 77ad2: 0f 85 f8 07 00 00 jne 782d0 <_int_free+0x830> 0.00 : 77ad8: 48 83 fd 1f cmp $0x1f,%rbp 0.00 : 77adc: 48 8d 35 03 41 0c 00 lea 0xc4103(%rip),%rsi # 13bbe6 <__PRETTY_FUNCTION__.14063+0x17f> 0.00 : 77ae3: 0f 86 ff 05 00 00 jbe 780e8 <_int_free+0x648> 0.00 : 77ae9: 48 3b 2d 88 cc 2f 00 cmp 0x2fcc88(%rip),%rbp # 374778 0.00 : 77af0: 0f 86 1a 03 00 00 jbe 77e10 <_int_free+0x370> 0.00 : 77af6: f6 c2 02 test $0x2,%dl 0.00 : 77af9: 0f 85 f9 02 00 00 jne 77df8 <_int_free+0x358> 0.00 : 77aff: 48 8b 4f 58 mov 0x58(%rdi),%rcx 0.00 : 77b03: 48 8d 35 de 76 0c 00 lea 0xc76de(%rip),%rsi # 13f1e8 <__PRETTY_FUNCTION__.11129+0x180f> 0.00 : 77b0a: 48 39 d9 cmp %rbx,%rcx 0.00 : 77b0d: 0f 84 d5 05 00 00 je 780e8 <_int_free+0x648> 0.00 : 77b13: f6 47 04 02 testb $0x2,0x4(%rdi) 0.00 : 77b17: 4c 8d 24 2b lea (%rbx,%rbp,1),%r12 0.00 : 77b1b: 0f 84 e1 07 00 00 je 78302 <_int_free+0x862> 0.00 : 77b21: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 77b26: 48 8d 35 fb 76 0c 00 lea 0xc76fb(%rip),%rsi # 13f228 <__PRETTY_FUNCTION__.11129+0x184f> 0.00 : 77b2d: a8 01 test $0x1,%al 0.00 : 77b2f: 0f 84 b3 05 00 00 je 780e8 <_int_free+0x648> 0.00 : 77b35: 48 83 f8 10 cmp $0x10,%rax 0.00 : 77b39: 0f 86 9b 05 00 00 jbe 780da <_int_free+0x63a> 0.00 : 77b3f: 49 89 c0 mov %rax,%r8 0.00 : 77b42: 49 83 e0 f8 and $0xfffffffffffffff8,%r8 0.00 : 77b46: 4d 3b 85 70 08 00 00 cmp 0x870(%r13),%r8 0.00 : 77b4d: 0f 83 87 05 00 00 jae 780da <_int_free+0x63a> 12.50 : 77b53: 8b 05 27 cc 2f 00 mov 0x2fcc27(%rip),%eax # 374780 0.00 : 77b59: 85 c0 test %eax,%eax 0.00 : 77b5b: 0f 85 c7 07 00 00 jne 78328 <_int_free+0x888> 0.00 : 77b61: 83 e2 01 and $0x1,%edx 0.00 : 77b64: 0f 84 2e 05 00 00 je 78098 <_int_free+0x5f8> 0.00 : 77b6a: 4d 39 65 58 cmp %r12,0x58(%r13) 0.00 : 77b6e: 0f 84 a4 05 00 00 je 78118 <_int_free+0x678> 0.00 : 77b74: 43 f6 44 04 08 01 testb $0x1,0x8(%r12,%r8,1) 12.50 : 77b7a: 0f 84 00 03 00 00 je 77e80 <_int_free+0x3e0> 0.00 : 77b80: 49 83 64 24 08 fe andq $0xfffffffffffffffe,0x8(%r12) 0.00 : 77b86: 49 8d 45 58 lea 0x58(%r13),%rax 0.00 : 77b8a: 48 8d 35 bf 76 0c 00 lea 0xc76bf(%rip),%rsi # 13f250 <__PRETTY_FUNCTION__.11129+0x1877> 0.00 : 77b91: 48 8b 48 10 mov 0x10(%rax),%rcx 0.00 : 77b95: 48 8b 51 18 mov 0x18(%rcx),%rdx 0.00 : 77b99: 48 39 c2 cmp %rax,%rdx 0.00 : 77b9c: 0f 85 46 05 00 00 jne 780e8 <_int_free+0x648> 0.00 : 77ba2: 48 81 fd ff 03 00 00 cmp $0x3ff,%rbp 0.00 : 77ba9: 48 89 4b 10 mov %rcx,0x10(%rbx) 0.00 : 77bad: 48 89 53 18 mov %rdx,0x18(%rbx) 0.00 : 77bb1: 76 10 jbe 77bc3 <_int_free+0x123> 0.00 : 77bb3: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 77bba: 00 0.00 : 77bbb: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 77bc2: 00 0.00 : 77bc3: 48 89 e8 mov %rbp,%rax 0.00 : 77bc6: 48 89 5a 10 mov %rbx,0x10(%rdx) 0.00 : 77bca: 48 89 59 18 mov %rbx,0x18(%rcx) 0.00 : 77bce: 48 83 c8 01 or $0x1,%rax 0.00 : 77bd2: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 77bd6: 48 89 2c 2b mov %rbp,(%rbx,%rbp,1) 0.00 : 77bda: 48 81 fd ff ff 00 00 cmp $0xffff,%rbp 0.00 : 77be1: 0f 86 82 02 00 00 jbe 77e69 <_int_free+0x3c9> 0.00 : 77be7: 41 f6 45 04 01 testb $0x1,0x4(%r13) 0.00 : 77bec: 0f 84 16 05 00 00 je 78108 <_int_free+0x668> 0.00 : 77bf2: 48 8d 05 a7 c2 2f 00 lea 0x2fc2a7(%rip),%rax # 373ea0 0.00 : 77bf9: 49 39 c5 cmp %rax,%r13 0.00 : 77bfc: 0f 84 6e 06 00 00 je 78270 <_int_free+0x7d0> 0.00 : 77c02: 4d 8b 65 58 mov 0x58(%r13),%r12 0.00 : 77c06: 49 81 e4 00 00 00 fc and $0xfffffffffc000000,%r12 0.00 : 77c0d: 49 8b 04 24 mov (%r12),%rax 0.00 : 77c11: 4c 39 e8 cmp %r13,%rax 0.00 : 77c14: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 77c19: 74 28 je 77c43 <_int_free+0x1a3> 0.00 : 77c1b: 48 8d 0d f1 41 0c 00 lea 0xc41f1(%rip),%rcx # 13be13 <__func__.14301> 0.00 : 77c22: 48 8d 35 19 3f 0c 00 lea 0xc3f19(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 77c29: 48 8d 3d cb 3f 0c 00 lea 0xc3fcb(%rip),%rdi # 13bbfb <__PRETTY_FUNCTION__.14063+0x194> 0.00 : 77c30: ba b6 13 00 00 mov $0x13b6,%edx 0.00 : 77c35: e8 86 eb ff ff callq 767c0 <__malloc_assert> 0.00 : 77c3a: 49 8b 14 24 mov (%r12),%rdx 0.00 : 77c3e: 48 89 54 24 20 mov %rdx,0x20(%rsp) 0.00 : 77c43: 48 8b 05 de ca 2f 00 mov 0x2fcade(%rip),%rax # 374728 0.00 : 77c4a: 8b 15 00 cb 2f 00 mov 0x2fcb00(%rip),%edx # 374750 0.00 : 77c50: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 77c55: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 77c5a: 48 89 54 24 18 mov %rdx,0x18(%rsp) 0.00 : 77c5f: 4c 8b 78 58 mov 0x58(%rax),%r15 0.00 : 77c63: 49 8d 44 24 20 lea 0x20(%r12),%rax 0.00 : 77c68: 49 39 c7 cmp %rax,%r15 0.00 : 77c6b: 0f 85 72 03 00 00 jne 77fe3 <_int_free+0x543> 0.00 : 77c71: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 77c76: 4d 89 e6 mov %r12,%r14 0.00 : 77c79: 48 8d 44 10 20 lea 0x20(%rax,%rdx,1),%rax 0.00 : 77c7e: 48 83 ea 01 sub $0x1,%rdx 0.00 : 77c82: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 77c87: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 77c8c: e9 e3 00 00 00 jmpq 77d74 <_int_free+0x2d4> 0.00 : 77c91: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 77c98: 83 e2 01 and $0x1,%edx 0.00 : 77c9b: 4c 89 ed mov %r13,%rbp 0.00 : 77c9e: 75 06 jne 77ca6 <_int_free+0x206> 0.00 : 77ca0: 4c 89 ed mov %r13,%rbp 0.00 : 77ca3: 48 03 2b add (%rbx),%rbp 0.00 : 77ca6: 48 8d 45 ff lea -0x1(%rbp),%rax 0.00 : 77caa: 48 3d fe ff ff 03 cmp $0x3fffffe,%rax 0.00 : 77cb0: 0f 87 0a 02 00 00 ja 77ec0 <_int_free+0x420> 0.00 : 77cb6: b8 00 00 00 04 mov $0x4000000,%eax 0.00 : 77cbb: 49 2b 44 24 10 sub 0x10(%r12),%rax 0.00 : 77cc0: 48 01 e8 add %rbp,%rax 0.00 : 77cc3: 48 3b 44 24 30 cmp 0x30(%rsp),%rax 0.00 : 77cc8: 0f 82 12 03 00 00 jb 77fe0 <_int_free+0x540> 0.00 : 77cce: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 77cd3: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 77cd7: 48 29 82 70 08 00 00 sub %rax,0x870(%rdx) 0.00 : 77cde: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 77ce2: 48 29 05 a7 ca 2f 00 sub %rax,0x2fcaa7(%rip) # 374790 0.00 : 77ce9: 49 8d 86 00 00 00 04 lea 0x4000000(%r14),%rax 0.00 : 77cf0: 48 39 05 01 cb 2f 00 cmp %rax,0x2fcb01(%rip) # 3747f8 0.00 : 77cf7: 0f 84 d3 02 00 00 je 77fd0 <_int_free+0x530> 0.00 : 77cfd: be 00 00 00 04 mov $0x4000000,%esi 0.00 : 77d02: 4c 89 f7 mov %r14,%rdi 0.00 : 77d05: 49 89 df mov %rbx,%r15 0.00 : 77d08: e8 73 ff 05 00 callq d7c80 0.00 : 77d0d: f6 43 08 01 testb $0x1,0x8(%rbx) 0.00 : 77d11: 0f 84 f9 01 00 00 je 77f10 <_int_free+0x470> 0.00 : 77d17: 49 8d 1c 2f lea (%r15,%rbp,1),%rbx 0.00 : 77d1b: 48 85 5c 24 10 test %rbx,0x10(%rsp) 0.00 : 77d20: 0f 85 c2 01 00 00 jne 77ee8 <_int_free+0x448> 0.00 : 77d26: 4c 89 e0 mov %r12,%rax 0.00 : 77d29: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : 77d2e: 48 39 c3 cmp %rax,%rbx 0.00 : 77d31: 74 1f je 77d52 <_int_free+0x2b2> 0.00 : 77d33: 48 8d 0d e3 40 0c 00 lea 0xc40e3(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77d3a: 48 8d 35 cd 3e 0c 00 lea 0xc3ecd(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77d41: 48 8d 3d 60 76 0c 00 lea 0xc7660(%rip),%rdi # 13f3a8 <__PRETTY_FUNCTION__.11129+0x19cf> 0.00 : 77d48: ba 6a 03 00 00 mov $0x36a,%edx 0.00 : 77d4d: e8 6e ea ff ff callq 767c0 <__malloc_assert> 0.00 : 77d52: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 77d57: 48 83 cd 01 or $0x1,%rbp 0.00 : 77d5b: 4c 89 78 58 mov %r15,0x58(%rax) 0.00 : 77d5f: 49 8d 44 24 20 lea 0x20(%r12),%rax 0.00 : 77d64: 49 89 6f 08 mov %rbp,0x8(%r15) 0.00 : 77d68: 49 39 c7 cmp %rax,%r15 0.00 : 77d6b: 0f 85 72 02 00 00 jne 77fe3 <_int_free+0x543> 0.00 : 77d71: 4d 89 e6 mov %r12,%r14 0.00 : 77d74: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 77d79: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 77d7e: 49 8d 5c 04 f0 lea -0x10(%r12,%rax,1),%rbx 0.00 : 77d83: 48 83 7b 08 01 cmpq $0x1,0x8(%rbx) 0.00 : 77d88: 74 1f je 77da9 <_int_free+0x309> 0.00 : 77d8a: 48 8d 0d 8c 40 0c 00 lea 0xc408c(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77d91: 48 8d 35 76 3e 0c 00 lea 0xc3e76(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77d98: 48 8d 3d 77 3e 0c 00 lea 0xc3e77(%rip),%rdi # 13bc16 <__PRETTY_FUNCTION__.14063+0x1af> 0.00 : 77d9f: ba 58 03 00 00 mov $0x358,%edx 0.00 : 77da4: e8 17 ea ff ff callq 767c0 <__malloc_assert> 0.00 : 77da9: 48 2b 1b sub (%rbx),%rbx 0.00 : 77dac: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 77db0: 48 89 d0 mov %rdx,%rax 0.00 : 77db3: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 77db7: 4c 8d 68 10 lea 0x10(%rax),%r13 0.00 : 77dbb: 48 83 c0 0f add $0xf,%rax 0.00 : 77dbf: 48 83 f8 3e cmp $0x3e,%rax 0.00 : 77dc3: 0f 86 cf fe ff ff jbe 77c98 <_int_free+0x1f8> 0.00 : 77dc9: 48 8d 0d 4d 40 0c 00 lea 0xc404d(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77dd0: 48 8d 35 37 3e 0c 00 lea 0xc3e37(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77dd7: 48 8d 3d 9a 74 0c 00 lea 0xc749a(%rip),%rdi # 13f278 <__PRETTY_FUNCTION__.11129+0x189f> 0.00 : 77dde: ba 5b 03 00 00 mov $0x35b,%edx 0.00 : 77de3: e8 d8 e9 ff ff callq 767c0 <__malloc_assert> 0.00 : 77de8: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 77dec: e9 a7 fe ff ff jmpq 77c98 <_int_free+0x1f8> 0.00 : 77df1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 77df8: 48 83 c4 38 add $0x38,%rsp 0.00 : 77dfc: 48 89 df mov %rbx,%rdi 0.00 : 77dff: 5b pop %rbx 0.00 : 77e00: 5d pop %rbp 0.00 : 77e01: 41 5c pop %r12 0.00 : 77e03: 41 5d pop %r13 0.00 : 77e05: 41 5e pop %r14 0.00 : 77e07: 41 5f pop %r15 0.00 : 77e09: e9 c2 fb ff ff jmpq 779d0 0.00 : 77e0e: 66 90 xchg %ax,%ax 0.00 : 77e10: 48 8b 44 2b 08 mov 0x8(%rbx,%rbp,1),%rax 0.00 : 77e15: 48 83 f8 10 cmp $0x10,%rax 0.00 : 77e19: 0f 86 d7 04 00 00 jbe 782f6 <_int_free+0x856> 0.00 : 77e1f: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 77e23: 48 3b 87 70 08 00 00 cmp 0x870(%rdi),%rax 0.00 : 77e2a: 0f 83 c6 04 00 00 jae 782f6 <_int_free+0x856> 0.00 : 77e30: 8b 05 4a c9 2f 00 mov 0x2fc94a(%rip),%eax # 374780 0.00 : 77e36: 85 c0 test %eax,%eax 0.00 : 77e38: 0f 85 0d 05 00 00 jne 7834b <_int_free+0x8ab> 0.00 : 77e3e: 89 e8 mov %ebp,%eax 0.00 : 77e40: 41 83 65 04 fe andl $0xfffffffe,0x4(%r13) 0.00 : 77e45: 48 8d 35 74 73 0c 00 lea 0xc7374(%rip),%rsi # 13f1c0 <__PRETTY_FUNCTION__.11129+0x17e7> 0.00 : 77e4c: c1 e8 04 shr $0x4,%eax 0.00 : 77e4f: 83 e8 02 sub $0x2,%eax 0.00 : 77e52: 49 8b 4c c5 08 mov 0x8(%r13,%rax,8),%rcx 0.00 : 77e57: 48 39 d9 cmp %rbx,%rcx 0.00 : 77e5a: 0f 84 88 02 00 00 je 780e8 <_int_free+0x648> 0.00 : 77e60: 48 89 4b 10 mov %rcx,0x10(%rbx) 0.00 : 77e64: 49 89 5c c5 08 mov %rbx,0x8(%r13,%rax,8) 0.00 : 77e69: 48 83 c4 38 add $0x38,%rsp 0.00 : 77e6d: 5b pop %rbx 0.00 : 77e6e: 5d pop %rbp 0.00 : 77e6f: 41 5c pop %r12 0.00 : 77e71: 41 5d pop %r13 0.00 : 77e73: 41 5e pop %r14 0.00 : 77e75: 41 5f pop %r15 0.00 : 77e77: c3 retq 0.00 : 77e78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 77e7f: 00 0.00 : 77e80: 4d 8b 74 24 10 mov 0x10(%r12),%r14 0.00 : 77e85: 49 8b 44 24 18 mov 0x18(%r12),%rax 0.00 : 77e8a: 4d 8b 7e 18 mov 0x18(%r14),%r15 0.00 : 77e8e: 4d 39 e7 cmp %r12,%r15 0.00 : 77e91: 0f 85 ed 04 00 00 jne 78384 <_int_free+0x8e4> 0.00 : 77e97: 4c 3b 60 10 cmp 0x10(%rax),%r12 0.00 : 77e9b: 0f 85 e3 04 00 00 jne 78384 <_int_free+0x8e4> 0.00 : 77ea1: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 77ea5: 4c 89 70 10 mov %r14,0x10(%rax) 0.00 : 77ea9: 49 81 7c 24 08 ff 03 cmpq $0x3ff,0x8(%r12) 0.00 : 77eb0: 00 00 0.00 : 77eb2: 0f 87 18 03 00 00 ja 781d0 <_int_free+0x730> 0.00 : 77eb8: 4c 01 c5 add %r8,%rbp 0.00 : 77ebb: e9 c6 fc ff ff jmpq 77b86 <_int_free+0xe6> 0.00 : 77ec0: 48 8d 0d 56 3f 0c 00 lea 0xc3f56(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77ec7: 48 8d 35 40 3d 0c 00 lea 0xc3d40(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77ece: 48 8d 3d 53 74 0c 00 lea 0xc7453(%rip),%rdi # 13f328 <__PRETTY_FUNCTION__.11129+0x194f> 0.00 : 77ed5: ba 5e 03 00 00 mov $0x35e,%edx 0.00 : 77eda: e8 e1 e8 ff ff callq 767c0 <__malloc_assert> 0.00 : 77edf: e9 d2 fd ff ff jmpq 77cb6 <_int_free+0x216> 0.00 : 77ee4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 77ee8: 48 8d 0d 2e 3f 0c 00 lea 0xc3f2e(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77eef: 48 8d 35 18 3d 0c 00 lea 0xc3d18(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77ef6: 48 8d 3d 6b 74 0c 00 lea 0xc746b(%rip),%rdi # 13f368 <__PRETTY_FUNCTION__.11129+0x198f> 0.00 : 77efd: ba 69 03 00 00 mov $0x369,%edx 0.00 : 77f02: e8 b9 e8 ff ff callq 767c0 <__malloc_assert> 0.00 : 77f07: e9 1a fe ff ff jmpq 77d26 <_int_free+0x286> 0.00 : 77f0c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 77f10: 49 89 df mov %rbx,%r15 0.00 : 77f13: 4c 2b 3b sub (%rbx),%r15 0.00 : 77f16: 49 8b 5f 10 mov 0x10(%r15),%rbx 0.00 : 77f1a: 49 8b 47 18 mov 0x18(%r15),%rax 0.00 : 77f1e: 4c 3b 7b 18 cmp 0x18(%rbx),%r15 0.00 : 77f22: 0f 85 b4 03 00 00 jne 782dc <_int_free+0x83c> 0.00 : 77f28: 4c 3b 78 10 cmp 0x10(%rax),%r15 0.00 : 77f2c: 0f 85 aa 03 00 00 jne 782dc <_int_free+0x83c> 0.00 : 77f32: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 77f36: 48 89 58 10 mov %rbx,0x10(%rax) 0.00 : 77f3a: 49 81 7f 08 ff 03 00 cmpq $0x3ff,0x8(%r15) 0.00 : 77f41: 00 0.00 : 77f42: 0f 86 cf fd ff ff jbe 77d17 <_int_free+0x277> 0.00 : 77f48: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 77f4c: 48 85 c0 test %rax,%rax 0.00 : 77f4f: 0f 84 c2 fd ff ff je 77d17 <_int_free+0x277> 0.00 : 77f55: 4c 3b 78 28 cmp 0x28(%rax),%r15 0.00 : 77f59: 74 1f je 77f7a <_int_free+0x4da> 0.00 : 77f5b: 48 8d 0d bb 3e 0c 00 lea 0xc3ebb(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77f62: 48 8d 35 a5 3c 0c 00 lea 0xc3ca5(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77f69: 48 8d 3d 20 71 0c 00 lea 0xc7120(%rip),%rdi # 13f090 <__PRETTY_FUNCTION__.11129+0x16b7> 0.00 : 77f70: ba 67 03 00 00 mov $0x367,%edx 0.00 : 77f75: e8 46 e8 ff ff callq 767c0 <__malloc_assert> 0.00 : 77f7a: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 77f7e: 4c 3b 78 20 cmp 0x20(%rax),%r15 0.00 : 77f82: 74 1f je 77fa3 <_int_free+0x503> 0.00 : 77f84: 48 8d 0d 92 3e 0c 00 lea 0xc3e92(%rip),%rcx # 13be1d <__func__.12681> 0.00 : 77f8b: 48 8d 35 7c 3c 0c 00 lea 0xc3c7c(%rip),%rsi # 13bc0e <__PRETTY_FUNCTION__.14063+0x1a7> 0.00 : 77f92: 48 8d 3d 1f 71 0c 00 lea 0xc711f(%rip),%rdi # 13f0b8 <__PRETTY_FUNCTION__.11129+0x16df> 0.00 : 77f99: ba 67 03 00 00 mov $0x367,%edx 0.00 : 77f9e: e8 1d e8 ff ff callq 767c0 <__malloc_assert> 0.00 : 77fa3: 48 83 7b 20 00 cmpq $0x0,0x20(%rbx) 0.00 : 77fa8: 0f 84 fa 03 00 00 je 783a8 <_int_free+0x908> 0.00 : 77fae: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : 77fb2: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 77fb6: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 77fba: 49 8b 57 28 mov 0x28(%r15),%rdx 0.00 : 77fbe: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 77fc2: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 77fc6: e9 4c fd ff ff jmpq 77d17 <_int_free+0x277> 0.00 : 77fcb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 77fd0: 48 c7 05 1d c8 2f 00 movq $0x0,0x2fc81d(%rip) # 3747f8 0.00 : 77fd7: 00 00 00 00 0.00 : 77fdb: e9 1d fd ff ff jmpq 77cfd <_int_free+0x25d> 0.00 : 77fe0: 4d 89 f4 mov %r14,%r12 0.00 : 77fe3: 4d 8b 6f 08 mov 0x8(%r15),%r13 0.00 : 77fe7: 48 8b 44 24 18 mov 0x18(%rsp),%rax 0.00 : 77fec: 31 d2 xor %edx,%edx 0.00 : 77fee: 48 2b 44 24 28 sub 0x28(%rsp),%rax 0.00 : 77ff3: 49 83 e5 f8 and $0xfffffffffffffff8,%r13 0.00 : 77ff7: 49 8d 44 05 df lea -0x21(%r13,%rax,1),%rax 0.00 : 77ffc: 48 f7 74 24 18 divq 0x18(%rsp) 0.00 : 78001: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 78005: 48 0f af 5c 24 18 imul 0x18(%rsp),%rbx 0.00 : 7800b: 48 3b 5c 24 18 cmp 0x18(%rsp),%rbx 0.00 : 78010: 0f 8c 53 fe ff ff jl 77e69 <_int_free+0x3c9> 0.00 : 78016: 49 8b 6c 24 10 mov 0x10(%r12),%rbp 0.00 : 7801b: 48 29 dd sub %rbx,%rbp 0.00 : 7801e: 48 83 fd 1f cmp $0x1f,%rbp 0.00 : 78022: 0f 8e 41 fe ff ff jle 77e69 <_int_free+0x3c9> 0.00 : 78028: 48 8b 05 c1 9d 2f 00 mov 0x2f9dc1(%rip),%rax # 371df0 <_DYNAMIC+0x290> 0.00 : 7802f: 44 8b 30 mov (%rax),%r14d 0.00 : 78032: 45 85 f6 test %r14d,%r14d 0.00 : 78035: 0f 84 75 02 00 00 je 782b0 <_int_free+0x810> 0.00 : 7803b: 49 8d 3c 2c lea (%r12,%rbp,1),%rdi 0.00 : 7803f: 45 31 c9 xor %r9d,%r9d 0.00 : 78042: 31 d2 xor %edx,%edx 0.00 : 78044: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : 7804a: b9 32 00 00 00 mov $0x32,%ecx 0.00 : 7804f: 48 89 de mov %rbx,%rsi 0.00 : 78052: e8 f9 fb 05 00 callq d7c50 0.00 : 78057: 48 83 c0 01 add $0x1,%rax 0.00 : 7805b: 0f 84 08 fe ff ff je 77e69 <_int_free+0x3c9> 0.00 : 78061: 49 89 6c 24 18 mov %rbp,0x18(%r12) 0.00 : 78066: 49 89 6c 24 10 mov %rbp,0x10(%r12) 0.00 : 7806b: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 78070: 4c 89 e8 mov %r13,%rax 0.00 : 78073: 48 29 d8 sub %rbx,%rax 0.00 : 78076: 48 83 c8 01 or $0x1,%rax 0.00 : 7807a: 48 29 9a 70 08 00 00 sub %rbx,0x870(%rdx) 0.00 : 78081: 48 29 1d 08 c7 2f 00 sub %rbx,0x2fc708(%rip) # 374790 0.00 : 78088: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : 7808c: e9 d8 fd ff ff jmpq 77e69 <_int_free+0x3c9> 0.00 : 78091: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 78098: 48 8b 03 mov (%rbx),%rax 0.00 : 7809b: 48 29 c3 sub %rax,%rbx 0.00 : 7809e: 48 01 c5 add %rax,%rbp 0.00 : 780a1: 4c 8b 73 10 mov 0x10(%rbx),%r14 0.00 : 780a5: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 780a9: 4d 8b 7e 18 mov 0x18(%r14),%r15 0.00 : 780ad: 49 39 df cmp %rbx,%r15 0.00 : 780b0: 0f 85 aa 02 00 00 jne 78360 <_int_free+0x8c0> 0.00 : 780b6: 48 3b 58 10 cmp 0x10(%rax),%rbx 0.00 : 780ba: 0f 85 a0 02 00 00 jne 78360 <_int_free+0x8c0> 0.00 : 780c0: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 780c4: 4c 89 70 10 mov %r14,0x10(%rax) 0.00 : 780c8: 48 81 7b 08 ff 03 00 cmpq $0x3ff,0x8(%rbx) 0.00 : 780cf: 00 0.00 : 780d0: 77 5e ja 78130 <_int_free+0x690> 0.00 : 780d2: 4c 89 fb mov %r15,%rbx 0.00 : 780d5: e9 90 fa ff ff jmpq 77b6a <_int_free+0xca> 0.00 : 780da: 48 8d 35 b7 70 0c 00 lea 0xc70b7(%rip),%rsi # 13f198 <__PRETTY_FUNCTION__.11129+0x17bf> 0.00 : 780e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 780e8: 48 8d 53 10 lea 0x10(%rbx),%rdx 0.00 : 780ec: 8b 3d 16 a0 2f 00 mov 0x2fa016(%rip),%edi # 372108 0.00 : 780f2: 48 83 c4 38 add $0x38,%rsp 0.00 : 780f6: 5b pop %rbx 0.00 : 780f7: 5d pop %rbp 0.00 : 780f8: 41 5c pop %r12 0.00 : 780fa: 41 5d pop %r13 0.00 : 780fc: 41 5e pop %r14 0.00 : 780fe: 41 5f pop %r15 0.00 : 78100: e9 5b e4 ff ff jmpq 76560 0.00 : 78105: 0f 1f 00 nopl (%rax) 0.00 : 78108: 4c 89 ef mov %r13,%rdi 0.00 : 7810b: e8 30 e7 ff ff callq 76840 0.00 : 78110: e9 dd fa ff ff jmpq 77bf2 <_int_free+0x152> 0.00 : 78115: 0f 1f 00 nopl (%rax) 0.00 : 78118: 4c 01 c5 add %r8,%rbp 0.00 : 7811b: 48 89 e8 mov %rbp,%rax 0.00 : 7811e: 48 83 c8 01 or $0x1,%rax 0.00 : 78122: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 78126: 49 89 5d 58 mov %rbx,0x58(%r13) 0.00 : 7812a: e9 ab fa ff ff jmpq 77bda <_int_free+0x13a> 0.00 : 7812f: 90 nop 0.00 : 78130: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 78134: 48 85 c0 test %rax,%rax 0.00 : 78137: 74 99 je 780d2 <_int_free+0x632> 0.00 : 78139: 48 3b 58 28 cmp 0x28(%rax),%rbx 0.00 : 7813d: 74 29 je 78168 <_int_free+0x6c8> 0.00 : 7813f: 48 8d 0d cd 3c 0c 00 lea 0xc3ccd(%rip),%rcx # 13be13 <__func__.14301> 0.00 : 78146: 48 8d 35 f5 39 0c 00 lea 0xc39f5(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7814d: 48 8d 3d 3c 6f 0c 00 lea 0xc6f3c(%rip),%rdi # 13f090 <__PRETTY_FUNCTION__.11129+0x16b7> 0.00 : 78154: ba 63 13 00 00 mov $0x1363,%edx 0.00 : 78159: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 7815e: e8 5d e6 ff ff callq 767c0 <__malloc_assert> 0.00 : 78163: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 78168: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 7816c: 4c 3b 78 20 cmp 0x20(%rax),%r15 0.00 : 78170: 74 29 je 7819b <_int_free+0x6fb> 0.00 : 78172: 48 8d 0d 9a 3c 0c 00 lea 0xc3c9a(%rip),%rcx # 13be13 <__func__.14301> 0.00 : 78179: 48 8d 35 c2 39 0c 00 lea 0xc39c2(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 78180: 48 8d 3d 31 6f 0c 00 lea 0xc6f31(%rip),%rdi # 13f0b8 <__PRETTY_FUNCTION__.11129+0x16df> 0.00 : 78187: ba 63 13 00 00 mov $0x1363,%edx 0.00 : 7818c: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78191: e8 2a e6 ff ff callq 767c0 <__malloc_assert> 0.00 : 78196: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 7819b: 49 83 7e 20 00 cmpq $0x0,0x20(%r14) 0.00 : 781a0: 0f 84 2c 02 00 00 je 783d2 <_int_free+0x932> 0.00 : 781a6: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : 781aa: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 781ae: 4c 89 fb mov %r15,%rbx 0.00 : 781b1: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 781b5: 49 8b 57 28 mov 0x28(%r15),%rdx 0.00 : 781b9: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 781bd: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 781c1: e9 a4 f9 ff ff jmpq 77b6a <_int_free+0xca> 0.00 : 781c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 781cd: 00 00 00 0.00 : 781d0: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 781d5: 48 85 c0 test %rax,%rax 0.00 : 781d8: 0f 84 da fc ff ff je 77eb8 <_int_free+0x418> 0.00 : 781de: 4c 3b 60 28 cmp 0x28(%rax),%r12 0.00 : 781e2: 74 29 je 7820d <_int_free+0x76d> 0.00 : 781e4: 48 8d 0d 28 3c 0c 00 lea 0xc3c28(%rip),%rcx # 13be13 <__func__.14301> 0.00 : 781eb: 48 8d 35 50 39 0c 00 lea 0xc3950(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 781f2: 48 8d 3d e7 6e 0c 00 lea 0xc6ee7(%rip),%rdi # 13f0e0 <__PRETTY_FUNCTION__.11129+0x1707> 0.00 : 781f9: ba 6c 13 00 00 mov $0x136c,%edx 0.00 : 781fe: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78203: e8 b8 e5 ff ff callq 767c0 <__malloc_assert> 0.00 : 78208: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 7820d: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 78211: 4c 3b 78 20 cmp 0x20(%rax),%r15 0.00 : 78215: 74 29 je 78240 <_int_free+0x7a0> 0.00 : 78217: 48 8d 0d f5 3b 0c 00 lea 0xc3bf5(%rip),%rcx # 13be13 <__func__.14301> 0.00 : 7821e: 48 8d 35 1d 39 0c 00 lea 0xc391d(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 78225: 48 8d 3d ec 6e 0c 00 lea 0xc6eec(%rip),%rdi # 13f118 <__PRETTY_FUNCTION__.11129+0x173f> 0.00 : 7822c: ba 6c 13 00 00 mov $0x136c,%edx 0.00 : 78231: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78236: e8 85 e5 ff ff callq 767c0 <__malloc_assert> 0.00 : 7823b: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 78240: 49 83 7e 20 00 cmpq $0x0,0x20(%r14) 0.00 : 78245: 0f 84 b4 01 00 00 je 783ff <_int_free+0x95f> 0.00 : 7824b: 49 8b 57 20 mov 0x20(%r15),%rdx 0.00 : 7824f: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 78253: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 78257: 49 8b 57 28 mov 0x28(%r15),%rdx 0.00 : 7825b: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 7825f: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 78263: e9 50 fc ff ff jmpq 77eb8 <_int_free+0x418> 0.00 : 78268: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7826f: 00 0.00 : 78270: 48 8b 05 81 bc 2f 00 mov 0x2fbc81(%rip),%rax # 373ef8 0.00 : 78277: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 7827b: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 7827f: 48 3b 05 9a c4 2f 00 cmp 0x2fc49a(%rip),%rax # 374720 0.00 : 78286: 0f 82 dd fb ff ff jb 77e69 <_int_free+0x3c9> 0.00 : 7828c: 48 8b 3d 95 c4 2f 00 mov 0x2fc495(%rip),%rdi # 374728 0.00 : 78293: 48 83 c4 38 add $0x38,%rsp 0.00 : 78297: 4c 89 ee mov %r13,%rsi 0.00 : 7829a: 5b pop %rbx 0.00 : 7829b: 5d pop %rbp 0.00 : 7829c: 41 5c pop %r12 0.00 : 7829e: 41 5d pop %r13 0.00 : 782a0: 41 5e pop %r14 0.00 : 782a2: 41 5f pop %r15 0.00 : 782a4: e9 07 df ff ff jmpq 761b0 0.00 : 782a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 782b0: 49 8d 3c 2c lea (%r12,%rbp,1),%rdi 0.00 : 782b4: ba 04 00 00 00 mov $0x4,%edx 0.00 : 782b9: 48 89 de mov %rbx,%rsi 0.00 : 782bc: e8 7f fa 05 00 callq d7d40 0.00 : 782c1: e9 a0 fd ff ff jmpq 78066 <_int_free+0x5c6> 0.00 : 782c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 782cd: 00 00 00 0.00 : 782d0: 48 8d 35 f7 38 0c 00 lea 0xc38f7(%rip),%rsi # 13bbce <__PRETTY_FUNCTION__.14063+0x167> 0.00 : 782d7: e9 0c fe ff ff jmpq 780e8 <_int_free+0x648> 0.00 : 782dc: 8b 3d 26 9e 2f 00 mov 0x2f9e26(%rip),%edi # 372108 0.00 : 782e2: 48 8d 35 3c 38 0c 00 lea 0xc383c(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 782e9: 4c 89 fa mov %r15,%rdx 0.00 : 782ec: e8 6f e2 ff ff callq 76560 0.00 : 782f1: e9 21 fa ff ff jmpq 77d17 <_int_free+0x277> 0.00 : 782f6: 48 8d 35 73 6e 0c 00 lea 0xc6e73(%rip),%rsi # 13f170 <__PRETTY_FUNCTION__.11129+0x1797> 0.00 : 782fd: e9 e6 fd ff ff jmpq 780e8 <_int_free+0x648> 0.00 : 78302: 48 8b 41 08 mov 0x8(%rcx),%rax 50.00 : 78306: 48 8d 35 fb 6e 0c 00 lea 0xc6efb(%rip),%rsi # 13f208 <__PRETTY_FUNCTION__.11129+0x182f> 0.00 : 7830d: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 78311: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 78315: 49 39 c4 cmp %rax,%r12 0.00 : 78318: 0f 82 03 f8 ff ff jb 77b21 <_int_free+0x81> 0.00 : 7831e: e9 c5 fd ff ff jmpq 780e8 <_int_free+0x648> 0.00 : 78323: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 78328: 48 8d 55 f0 lea -0x10(%rbp),%rdx 0.00 : 7832c: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 78330: 0f b6 f0 movzbl %al,%esi 0.00 : 78333: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78338: e8 33 b1 00 00 callq 83470 <__GI_memset> 0.00 : 7833d: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 78341: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 78346: e9 16 f8 ff ff jmpq 77b61 <_int_free+0xc1> 0.00 : 7834b: 48 8d 55 f0 lea -0x10(%rbp),%rdx 0.00 : 7834f: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 78353: 0f b6 f0 movzbl %al,%esi 0.00 : 78356: e8 15 b1 00 00 callq 83470 <__GI_memset> 0.00 : 7835b: e9 de fa ff ff jmpq 77e3e <_int_free+0x39e> 0.00 : 78360: 8b 3d a2 9d 2f 00 mov 0x2f9da2(%rip),%edi # 372108 0.00 : 78366: 48 8d 35 b8 37 0c 00 lea 0xc37b8(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 7836d: 48 89 da mov %rbx,%rdx 0.00 : 78370: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78375: e8 e6 e1 ff ff callq 76560 0.00 : 7837a: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 7837f: e9 e6 f7 ff ff jmpq 77b6a <_int_free+0xca> 0.00 : 78384: 8b 3d 7e 9d 2f 00 mov 0x2f9d7e(%rip),%edi # 372108 0.00 : 7838a: 48 8d 35 94 37 0c 00 lea 0xc3794(%rip),%rsi # 13bb25 <__PRETTY_FUNCTION__.14063+0xbe> 0.00 : 78391: 4c 89 e2 mov %r12,%rdx 0.00 : 78394: 4c 89 44 24 08 mov %r8,0x8(%rsp) 0.00 : 78399: e8 c2 e1 ff ff callq 76560 0.00 : 7839e: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 0.00 : 783a3: e9 10 fb ff ff jmpq 77eb8 <_int_free+0x418> 0.00 : 783a8: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 783ac: 49 39 c7 cmp %rax,%r15 0.00 : 783af: 74 78 je 78429 <_int_free+0x989> 0.00 : 783b1: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 783b5: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 783b9: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 783bd: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 783c1: 48 89 58 28 mov %rbx,0x28(%rax) 0.00 : 783c5: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 783c9: 48 89 58 20 mov %rbx,0x20(%rax) 0.00 : 783cd: e9 45 f9 ff ff jmpq 77d17 <_int_free+0x277> 0.00 : 783d2: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 783d6: 49 39 c7 cmp %rax,%r15 0.00 : 783d9: 74 5b je 78436 <_int_free+0x996> 0.00 : 783db: 49 89 46 20 mov %rax,0x20(%r14) 0.00 : 783df: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 783e3: 4c 89 fb mov %r15,%rbx 0.00 : 783e6: 49 89 46 28 mov %rax,0x28(%r14) 0.00 : 783ea: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 783ee: 4c 89 70 28 mov %r14,0x28(%rax) 0.00 : 783f2: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 783f6: 4c 89 70 20 mov %r14,0x20(%rax) 0.00 : 783fa: e9 6b f7 ff ff jmpq 77b6a <_int_free+0xca> 0.00 : 783ff: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 78403: 49 39 c7 cmp %rax,%r15 0.00 : 78406: 74 3e je 78446 <_int_free+0x9a6> 0.00 : 78408: 49 89 46 20 mov %rax,0x20(%r14) 0.00 : 7840c: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 78410: 49 89 46 28 mov %rax,0x28(%r14) 0.00 : 78414: 49 8b 47 20 mov 0x20(%r15),%rax 0.00 : 78418: 4c 89 70 28 mov %r14,0x28(%rax) 0.00 : 7841c: 49 8b 47 28 mov 0x28(%r15),%rax 0.00 : 78420: 4c 89 70 20 mov %r14,0x20(%rax) 0.00 : 78424: e9 8f fa ff ff jmpq 77eb8 <_int_free+0x418> 0.00 : 78429: 48 89 5b 28 mov %rbx,0x28(%rbx) 0.00 : 7842d: 48 89 5b 20 mov %rbx,0x20(%rbx) 0.00 : 78431: e9 e1 f8 ff ff jmpq 77d17 <_int_free+0x277> 0.00 : 78436: 4d 89 76 28 mov %r14,0x28(%r14) 0.00 : 7843a: 4d 89 76 20 mov %r14,0x20(%r14) 0.00 : 7843e: 4c 89 fb mov %r15,%rbx 0.00 : 78441: e9 24 f7 ff ff jmpq 77b6a <_int_free+0xca> 0.00 : 78446: 4d 89 76 28 mov %r14,0x28(%r14) 0.00 : 7844a: 4d 89 76 20 mov %r14,0x20(%r14) 0.00 : 7844e: e9 65 fa ff ff jmpq 77eb8 <_int_free+0x418> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 25.00 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007b5f0 <__libc_free>: 25.00 : 7b5f0: 48 8b 05 c1 68 2f 00 mov 0x2f68c1(%rip),%rax # 371eb8 <_DYNAMIC+0x358> 12.50 : 7b5f7: 53 push %rbx 0.00 : 7b5f8: 48 8b 00 mov (%rax),%rax 50.00 : 7b5fb: 48 85 c0 test %rax,%rax 0.00 : 7b5fe: 0f 85 bd 00 00 00 jne 7b6c1 <__libc_free+0xd1> 0.00 : 7b604: 48 85 ff test %rdi,%rdi 0.00 : 7b607: 74 6f je 7b678 <__libc_free+0x88> 0.00 : 7b609: 48 8b 47 f8 mov -0x8(%rdi),%rax 0.00 : 7b60d: 48 8d 57 f0 lea -0x10(%rdi),%rdx 0.00 : 7b611: a8 02 test $0x2,%al 0.00 : 7b613: 75 6b jne 7b680 <__libc_free+0x90> 0.00 : 7b615: a8 04 test $0x4,%al 0.00 : 7b617: 48 8d 1d 82 88 2f 00 lea 0x2f8882(%rip),%rbx # 373ea0 0.00 : 7b61e: 74 0c je 7b62c <__libc_free+0x3c> 0.00 : 7b620: 48 89 d0 mov %rdx,%rax 0.00 : 7b623: 48 25 00 00 00 fc and $0xfffffffffc000000,%rax 0.00 : 7b629: 48 8b 18 mov (%rax),%rbx 0.00 : 7b62c: be 01 00 00 00 mov $0x1,%esi 0.00 : 7b631: 31 c0 xor %eax,%eax 0.00 : 7b633: 83 3d 7a c0 2f 00 00 cmpl $0x0,0x2fc07a(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b63a: 74 0c je 7b648 <__libc_free+0x58> 0.00 : 7b63c: f0 0f b1 33 lock cmpxchg %esi,(%rbx) 0.00 : 7b640: 0f 85 49 1d 00 00 jne 7d38f <_L_lock_9925> 0.00 : 7b646: eb 09 jmp 7b651 <__libc_free+0x61> 0.00 : 7b648: 0f b1 33 cmpxchg %esi,(%rbx) 0.00 : 7b64b: 0f 85 3e 1d 00 00 jne 7d38f <_L_lock_9925> 0.00 : 7b651: 48 89 d6 mov %rdx,%rsi 0.00 : 7b654: 48 89 df mov %rbx,%rdi 0.00 : 7b657: e8 44 c4 ff ff callq 77aa0 <_int_free> 0.00 : 7b65c: 83 3d 51 c0 2f 00 00 cmpl $0x0,0x2fc051(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b663: 74 0b je 7b670 <__libc_free+0x80> 0.00 : 7b665: f0 ff 0b lock decl (%rbx) 0.00 : 7b668: 0f 85 3c 1d 00 00 jne 7d3aa <_L_unlock_9938> 0.00 : 7b66e: eb 08 jmp 7b678 <__libc_free+0x88> 0.00 : 7b670: ff 0b decl (%rbx) 12.50 : 7b672: 0f 85 32 1d 00 00 jne 7d3aa <_L_unlock_9938> 0.00 : 7b678: 5b pop %rbx 0.00 : 7b679: c3 retq 0.00 : 7b67a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7b680: 44 8b 05 c5 90 2f 00 mov 0x2f90c5(%rip),%r8d # 37474c 0.00 : 7b687: 45 85 c0 test %r8d,%r8d 0.00 : 7b68a: 75 2c jne 7b6b8 <__libc_free+0xc8> 0.00 : 7b68c: 48 3b 05 9d 90 2f 00 cmp 0x2f909d(%rip),%rax # 374730 0.00 : 7b693: 76 23 jbe 7b6b8 <__libc_free+0xc8> 0.00 : 7b695: 48 3d 00 00 00 02 cmp $0x2000000,%rax 0.00 : 7b69b: 77 1b ja 7b6b8 <__libc_free+0xc8> 0.00 : 7b69d: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 7b6a1: 48 89 05 88 90 2f 00 mov %rax,0x2f9088(%rip) # 374730 0.00 : 7b6a8: 48 01 c0 add %rax,%rax 0.00 : 7b6ab: 48 89 05 6e 90 2f 00 mov %rax,0x2f906e(%rip) # 374720 0.00 : 7b6b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7b6b8: 5b pop %rbx 0.00 : 7b6b9: 48 89 d7 mov %rdx,%rdi 0.00 : 7b6bc: e9 0f c3 ff ff jmpq 779d0 0.00 : 7b6c1: 48 8b 74 24 08 mov 0x8(%rsp),%rsi 0.00 : 7b6c6: 49 89 c3 mov %rax,%r11 0.00 : 7b6c9: 5b pop %rbx 0.00 : 7b6ca: 41 ff e3 jmpq *%r11 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 25.00 ??:0 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004210 : : } : : static int ixgbe_tso(struct ixgbe_ring *tx_ring, : struct ixgbe_tx_buffer *first, : u8 *hdr_len) : { 0.00 : 4210: 48 83 ec 28 sub $0x28,%rsp 0.00 : 4214: 4c 89 64 24 10 mov %r12,0x10(%rsp) 0.00 : 4219: 4c 89 6c 24 18 mov %r13,0x18(%rsp) 0.00 : 421e: 49 89 d5 mov %rdx,%r13 0.00 : 4221: 4c 89 74 24 20 mov %r14,0x20(%rsp) 0.00 : 4226: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 422a: 49 89 fe mov %rdi,%r14 0.00 : 422d: 48 89 6c 24 08 mov %rbp,0x8(%rsp) : #ifdef NETIF_F_TSO : struct sk_buff *skb = first->skb; 0.00 : 4232: 48 8b 6e 10 mov 0x10(%rsi),%rbp : } : : static int ixgbe_tso(struct ixgbe_ring *tx_ring, : struct ixgbe_tx_buffer *first, : u8 *hdr_len) : { 0.00 : 4236: 49 89 f4 mov %rsi,%r12 : } : #endif : : static inline int skb_is_gso(const struct sk_buff *skb) : { : return skb_shinfo(skb)->gso_size; 0.00 : 4239: 8b 85 d0 00 00 00 mov 0xd0(%rbp),%eax : } : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) : { : return skb->head + skb->end; 0.00 : 423f: 48 8b 8d d8 00 00 00 mov 0xd8(%rbp),%rcx : } : #endif : : static inline int skb_is_gso(const struct sk_buff *skb) : { : return skb_shinfo(skb)->gso_size; 0.00 : 4246: 48 8d 14 01 lea (%rcx,%rax,1),%rdx : #ifdef NETIF_F_TSO : struct sk_buff *skb = first->skb; : u32 vlan_macip_lens, type_tucmd; : u32 mss_l4len_idx, l4len; : : if (!skb_is_gso(skb)) ??:0 12.50 : 424a: 31 c0 xor %eax,%eax 0.00 : 424c: 66 83 7a 02 00 cmpw $0x0,0x2(%rdx) 12.50 : 4251: 0f 84 cf 00 00 00 je 4326 : */ : static inline int skb_header_cloned(const struct sk_buff *skb) : { : int dataref; : : if (!skb->cloned) 0.00 : 4257: f6 45 7c 02 testb $0x2,0x7c(%rbp) 0.00 : 425b: 0f 85 e7 00 00 00 jne 4348 : } : : /* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */ : type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP; : : if (first->protocol == __constant_htons(ETH_P_IP)) { 0.00 : 4261: 66 41 83 7c 24 1e 08 cmpw $0x8,0x1e(%r12) 0.00 : 4268: 0f 84 12 01 00 00 je 4380 : type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4; : first->tx_flags |= IXGBE_TX_FLAGS_TSO | : IXGBE_TX_FLAGS_CSUM | : IXGBE_TX_FLAGS_IPV4; : #ifdef NETIF_F_TSO6 : } else if (skb_is_gso_v6(skb)) { 0.00 : 426e: 8b 85 d0 00 00 00 mov 0xd0(%rbp),%eax 0.00 : 4274: 41 b9 00 08 00 00 mov $0x800,%r9d 0.00 : 427a: f6 44 01 06 10 testb $0x10,0x6(%rcx,%rax,1) 0.00 : 427f: 0f 85 6b 01 00 00 jne 43f0 : } : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_transport_header(const struct sk_buff *skb) : { : return skb->head + skb->transport_header; 0.00 : 4285: 8b 85 c0 00 00 00 mov 0xc0(%rbp),%eax 0.00 : 428b: 48 8d 04 01 lea (%rcx,%rax,1),%rax : return (struct tcphdr *)skb_transport_header(skb); : } : : static inline unsigned int tcp_hdrlen(const struct sk_buff *skb) : { : return tcp_hdr(skb)->doff * 4; 0.00 : 428f: 0f b6 48 0c movzbl 0xc(%rax),%ecx : #endif : } : : /* compute header lengths */ : l4len = tcp_hdrlen(skb); : *hdr_len = skb_transport_offset(skb) + l4len; 0.00 : 4293: 2b 85 e0 00 00 00 sub 0xe0(%rbp),%eax 0.00 : 4299: c0 e9 04 shr $0x4,%cl 0.00 : 429c: 0f b6 c9 movzbl %cl,%ecx 0.00 : 429f: 8d 04 88 lea (%rax,%rcx,4),%eax : /* update gso size and bytecount with header size */ : first->gso_segs = skb_shinfo(skb)->gso_segs; : first->bytecount += (first->gso_segs - 1) * *hdr_len; : : /* mss_l4len_id: use 1 as index for TSO */ : mss_l4len_idx = l4len << IXGBE_ADVTXD_L4LEN_SHIFT; 0.00 : 42a2: c1 e1 0a shl $0xa,%ecx : #endif : } : : /* compute header lengths */ : l4len = tcp_hdrlen(skb); : *hdr_len = skb_transport_offset(skb) + l4len; 0.00 : 42a5: 41 88 45 00 mov %al,0x0(%r13) : : /* update gso size and bytecount with header size */ : first->gso_segs = skb_shinfo(skb)->gso_segs; 0.00 : 42a9: 8b 95 d0 00 00 00 mov 0xd0(%rbp),%edx 0.00 : 42af: 48 8b 85 d8 00 00 00 mov 0xd8(%rbp),%rax 0.00 : 42b6: 0f b7 44 10 04 movzwl 0x4(%rax,%rdx,1),%eax 0.00 : 42bb: 66 41 89 44 24 1c mov %ax,0x1c(%r12) : first->bytecount += (first->gso_segs - 1) * *hdr_len; 0.00 : 42c1: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 42c6: 83 e8 01 sub $0x1,%eax 0.00 : 42c9: 0f af d0 imul %eax,%edx 0.00 : 42cc: 41 01 54 24 18 add %edx,0x18(%r12) : : /* mss_l4len_id: use 1 as index for TSO */ : mss_l4len_idx = l4len << IXGBE_ADVTXD_L4LEN_SHIFT; : mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT; 0.00 : 42d1: 8b 85 d0 00 00 00 mov 0xd0(%rbp),%eax : } : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) : { : return skb->head + skb->end; 0.00 : 42d7: 48 8b bd d8 00 00 00 mov 0xd8(%rbp),%rdi : return skb_transport_header(skb) - skb->data; : } : : static inline u32 skb_network_header_len(const struct sk_buff *skb) : { : return skb->transport_header - skb->network_header; 0.00 : 42de: 8b 95 c4 00 00 00 mov 0xc4(%rbp),%edx 0.00 : 42e4: 8b b5 c0 00 00 00 mov 0xc0(%rbp),%esi 0.00 : 42ea: 44 0f b7 44 07 02 movzwl 0x2(%rdi,%rax,1),%r8d 0.00 : 42f0: 29 d6 sub %edx,%esi : /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */ : vlan_macip_lens = skb_network_header_len(skb); : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, type_tucmd, 0.00 : 42f2: 2b 95 e0 00 00 00 sub 0xe0(%rbp),%edx : mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT; : mss_l4len_idx |= 1 << IXGBE_ADVTXD_IDX_SHIFT; : : /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */ : vlan_macip_lens = skb_network_header_len(skb); : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 42f8: 41 8b 44 24 2c mov 0x2c(%r12),%eax : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, type_tucmd, 0.00 : 42fd: 01 fa add %edi,%edx : mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT; : mss_l4len_idx |= 1 << IXGBE_ADVTXD_IDX_SHIFT; : : /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */ : vlan_macip_lens = skb_network_header_len(skb); : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 42ff: 66 31 c0 xor %ax,%ax : first->gso_segs = skb_shinfo(skb)->gso_segs; : first->bytecount += (first->gso_segs - 1) * *hdr_len; : : /* mss_l4len_id: use 1 as index for TSO */ : mss_l4len_idx = l4len << IXGBE_ADVTXD_L4LEN_SHIFT; : mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT; 0.00 : 4302: 41 c1 e0 10 shl $0x10,%r8d : mss_l4len_idx |= 1 << IXGBE_ADVTXD_IDX_SHIFT; : : /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */ : vlan_macip_lens = skb_network_header_len(skb); : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 4306: 09 c6 or %eax,%esi : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, type_tucmd, 0.00 : 4308: c1 e2 09 shl $0x9,%edx : first->gso_segs = skb_shinfo(skb)->gso_segs; : first->bytecount += (first->gso_segs - 1) * *hdr_len; : : /* mss_l4len_id: use 1 as index for TSO */ : mss_l4len_idx = l4len << IXGBE_ADVTXD_L4LEN_SHIFT; : mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT; 0.00 : 430b: 41 83 c8 10 or $0x10,%r8d : /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */ : vlan_macip_lens = skb_network_header_len(skb); : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, type_tucmd, 0.00 : 430f: 09 d6 or %edx,%esi 0.00 : 4311: 41 09 c8 or %ecx,%r8d 0.00 : 4314: 31 d2 xor %edx,%edx 0.00 : 4316: 44 89 c9 mov %r9d,%ecx 0.00 : 4319: 4c 89 f7 mov %r14,%rdi 0.00 : 431c: e8 00 00 00 00 callq 4321 0.00 : 4321: b8 01 00 00 00 mov $0x1,%eax : mss_l4len_idx); : : return 1; : #endif : } 25.00 : 4326: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 432a: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 432f: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 4334: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 4339: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 433e: 48 83 c4 28 add $0x28,%rsp 0.00 : 4342: c3 retq 0.00 : 4343: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * : * Atomically reads the value of @v. : */ : static inline int atomic_read(const atomic_t *v) : { : return (*(volatile int *)&(v)->counter); 0.00 : 4348: 8b 42 28 mov 0x28(%rdx),%eax : : if (!skb->cloned) : return 0; : : dataref = atomic_read(&skb_shinfo(skb)->dataref); : dataref = (dataref & SKB_DATAREF_MASK) - (dataref >> SKB_DATAREF_SHIFT); 0.00 : 434b: 0f b7 d0 movzwl %ax,%edx 0.00 : 434e: c1 f8 10 sar $0x10,%eax : if (!skb_is_gso(skb)) : #endif /* NETIF_F_TSO */ : return 0; : #ifdef NETIF_F_TSO : : if (skb_header_cloned(skb)) { 0.00 : 4351: 29 c2 sub %eax,%edx 0.00 : 4353: 83 ea 01 sub $0x1,%edx 0.00 : 4356: 0f 84 05 ff ff ff je 4261 : int err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); 0.00 : 435c: 31 d2 xor %edx,%edx 0.00 : 435e: 31 f6 xor %esi,%esi 0.00 : 4360: b9 20 00 00 00 mov $0x20,%ecx 0.00 : 4365: 48 89 ef mov %rbp,%rdi 0.00 : 4368: e8 00 00 00 00 callq 436d : if (err) 0.00 : 436d: 85 c0 test %eax,%eax 0.00 : 436f: 75 b5 jne 4326 0.00 : 4371: 48 8b 8d d8 00 00 00 mov 0xd8(%rbp),%rcx 0.00 : 4378: e9 e4 fe ff ff jmpq 4261 0.00 : 437d: 0f 1f 00 nopl (%rax) : #ifdef __KERNEL__ : #include : : static inline struct iphdr *ip_hdr(const struct sk_buff *skb) : { : return (struct iphdr *)skb_network_header(skb); 0.00 : 4380: 8b 95 c4 00 00 00 mov 0xc4(%rbp),%edx : */ : static inline __wsum : csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len, : unsigned short proto, __wsum sum) : { : asm(" addl %1, %0\n" 0.00 : 4386: 31 c0 xor %eax,%eax : tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, : iph->daddr, 0, : IPPROTO_TCP, : 0); : type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4; : first->tx_flags |= IXGBE_TX_FLAGS_TSO | 0.00 : 4388: 41 b9 00 0c 00 00 mov $0xc00,%r9d 0.00 : 438e: 48 8d 14 11 lea (%rcx,%rdx,1),%rdx 0.00 : 4392: 03 42 10 add 0x10(%rdx),%eax 25.00 : 4395: 13 42 0c adc 0xc(%rdx),%eax 0.00 : 4398: 15 00 06 00 00 adc $0x600,%eax 0.00 : 439d: 83 d0 00 adc $0x0,%eax : /* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */ : type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP; : : if (first->protocol == __constant_htons(ETH_P_IP)) { : struct iphdr *iph = ip_hdr(skb); : iph->tot_len = 0; 0.00 : 43a0: 66 c7 42 02 00 00 movw $0x0,0x2(%rdx) : iph->check = 0; 0.00 : 43a6: 66 c7 42 0a 00 00 movw $0x0,0xa(%rdx) : * the last step before putting a checksum into a packet. : * Make sure not to mix with 64bit checksums. : */ : static inline __sum16 csum_fold(__wsum sum) : { : asm(" addl %1,%0\n" 0.00 : 43ac: 89 c2 mov %eax,%edx : tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, 0.00 : 43ae: 8b 8d c0 00 00 00 mov 0xc0(%rbp),%ecx 0.00 : 43b4: c1 e2 10 shl $0x10,%edx 0.00 : 43b7: 66 31 c0 xor %ax,%ax 0.00 : 43ba: 01 d0 add %edx,%eax 0.00 : 43bc: 15 ff ff 00 00 adc $0xffff,%eax 0.00 : 43c1: 48 8b 95 d8 00 00 00 mov 0xd8(%rbp),%rdx 0.00 : 43c8: f7 d0 not %eax 0.00 : 43ca: c1 e8 10 shr $0x10,%eax 0.00 : 43cd: f7 d0 not %eax 0.00 : 43cf: 66 89 44 0a 10 mov %ax,0x10(%rdx,%rcx,1) : iph->daddr, 0, : IPPROTO_TCP, : 0); : type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4; : first->tx_flags |= IXGBE_TX_FLAGS_TSO | 12.50 : 43d4: 41 83 4c 24 2c 19 orl $0x19,0x2c(%r12) 12.50 : 43da: 48 8b 8d d8 00 00 00 mov 0xd8(%rbp),%rcx 0.00 : 43e1: e9 9f fe ff ff jmpq 4285 0.00 : 43e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 43ed: 00 00 00 : IXGBE_TX_FLAGS_CSUM | : IXGBE_TX_FLAGS_IPV4; : #ifdef NETIF_F_TSO6 : } else if (skb_is_gso_v6(skb)) { : ipv6_hdr(skb)->payload_len = 0; 0.00 : 43f0: 8b 85 c4 00 00 00 mov 0xc4(%rbp),%eax : tcp_hdr(skb)->check = 0.00 : 43f6: 45 31 c0 xor %r8d,%r8d 0.00 : 43f9: 31 d2 xor %edx,%edx : first->tx_flags |= IXGBE_TX_FLAGS_TSO | : IXGBE_TX_FLAGS_CSUM | : IXGBE_TX_FLAGS_IPV4; : #ifdef NETIF_F_TSO6 : } else if (skb_is_gso_v6(skb)) { : ipv6_hdr(skb)->payload_len = 0; 0.00 : 43fb: 66 c7 44 01 04 00 00 movw $0x0,0x4(%rcx,%rax,1) : #include : #include : : static inline struct tcphdr *tcp_hdr(const struct sk_buff *skb) : { : return (struct tcphdr *)skb_transport_header(skb); 0.00 : 4402: 8b 9d c0 00 00 00 mov 0xc0(%rbp),%ebx : tcp_hdr(skb)->check = 0.00 : 4408: b9 06 00 00 00 mov $0x6,%ecx : : #include : : static inline struct ipv6hdr *ipv6_hdr(const struct sk_buff *skb) : { : return (struct ipv6hdr *)skb_network_header(skb); 0.00 : 440d: 8b 85 c4 00 00 00 mov 0xc4(%rbp),%eax : } : : #ifdef NET_SKBUFF_DATA_USES_OFFSET : static inline unsigned char *skb_transport_header(const struct sk_buff *skb) : { : return skb->head + skb->transport_header; 0.00 : 4413: 48 8b bd d8 00 00 00 mov 0xd8(%rbp),%rdi 0.00 : 441a: 48 8d 1c 1f lea (%rdi,%rbx,1),%rbx 0.00 : 441e: 48 01 c7 add %rax,%rdi 0.00 : 4421: 48 8d 77 18 lea 0x18(%rdi),%rsi 0.00 : 4425: 48 83 c7 08 add $0x8,%rdi 0.00 : 4429: e8 00 00 00 00 callq 442e 0.00 : 442e: f7 d0 not %eax : ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, : &ipv6_hdr(skb)->daddr, : 0, IPPROTO_TCP, 0); : first->tx_flags |= IXGBE_TX_FLAGS_TSO | 0.00 : 4430: 41 b9 00 08 00 00 mov $0x800,%r9d : IXGBE_TX_FLAGS_CSUM | : IXGBE_TX_FLAGS_IPV4; : #ifdef NETIF_F_TSO6 : } else if (skb_is_gso_v6(skb)) { : ipv6_hdr(skb)->payload_len = 0; : tcp_hdr(skb)->check = 0.00 : 4436: 66 89 43 10 mov %ax,0x10(%rbx) : ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, : &ipv6_hdr(skb)->daddr, : 0, IPPROTO_TCP, 0); : first->tx_flags |= IXGBE_TX_FLAGS_TSO | 0.00 : 443a: 41 83 4c 24 2c 09 orl $0x9,0x2c(%r12) 0.00 : 4440: 48 8b 8d d8 00 00 00 mov 0xd8(%rbp),%rcx 0.00 : 4447: e9 39 fe ff ff jmpq 4285 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ---------------------------------------------- 45.45 ??:0 18.18 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000550 : 63.64 : 550: 48 83 ec 18 sub $0x18,%rsp 0.00 : 584: 48 89 ja 5a0 0.00 : 586: 5c 24 08 48 89 mov $0x1,%ebp 0.00 : 58b: f3 48 mov %ebp,%eax 0.00 : 58d: 89 6c 24 10 83 mov 0x8(%rsp),%rbx 0.00 : 592: 7b 68 13 48 89 mov 0x10(%rsp),%rbp 0.00 : 597: d6 76 1c 8b add $0x18,%rsp 0.00 : 59b: 93 retq 0.00 : 59c: c4 00 00 00 nopl 0x0(%rax) 18.18 : 5a0: 48 8b 83 mov %rsi,%rdx 0.00 : 5a3: d8 00 00 mov %rbx,%rsi 0.00 : 5a6: 00 0f b6 04 10 callq 320 0.00 : 5ab: 83 e0 test %eax,%eax 0.00 : 5ad: 0f c1 mov %eax,%ebp 0.00 : 5af: e0 02 je 58b 0.00 : 5b1: 83 f8 13 cmp $0x2,%eax 0.00 : 5b4: 77 1a je 58b 0.00 : 5b6: bd 01 00 00 movzbl 0x7c(%rbx),%eax 0.00 : 5ba: 00 89 e8 48 8b 5c 24 mov 0x88(%rbx),%rsi 9.09 : 5c1: 08 48 8b shr $0x5,%al 0.00 : 5c4: 6c 24 10 test %rsi,%rsi 0.00 : 5c7: 48 83 je 58b 0.00 : 5c9: c4 18 c3 movzbl %al,%eax 0.00 : 5cc: 0f 1f 40 cmp $0x2,%eax 0.00 : 5cf: 00 48 89 seta %al 0.00 : 5d2: f2 48 89 movzbl %al,%eax 0.00 : 5d5: de e8 test %eax,%eax 0.00 : 5d7: 75 fd mov %eax,%eax 0.00 : 5d9: ff ff 85 c0 89 c5 74 lea 0x0(,%rax,8),%rcx 0.00 : 5e0: da 0.00 : 5e1: 83 f8 02 sete %dl 0.00 : 5e4: 74 d5 0f b6 shl $0x6,%rax 0.00 : 5e8: 43 7c 48 and $0x1,%edx 0.00 : 5eb: 8b b3 88 sub %rcx,%rax 0.00 : 5ee: 00 00 00 c0 lea (%rsi,%rax,1),%rcx 0.00 : 5f2: e8 05 48 85 f6 74 c2 lea 0x0(,%rdx,8),%rax 0.00 : 5f9: 0f 0.00 : 5fa: b6 c0 83 f8 shl $0x6,%rdx 0.00 : 5fe: 02 0f 97 sub %rax,%rdx 0.00 : 601: c0 0f b6 mov 0x2c(%rcx),%eax 9.09 : 604: c0 85 c0 89 lea (%rsi,%rdx,1),%rdx 0.00 : 608: c0 48 8d cmp 0x18(%rdx),%eax 0.00 : 60b: 0c c5 jne 640 0.00 : 60d: 00 00 00 00 lea 0x30(%rcx),%rax 0.00 : 611: 0f 94 c2 48 cmpb $0x1,0xe(%rax) 0.00 : 615: c1 e0 06 83 e2 01 je 58b 0.00 : 61b: 48 29 c8 48 movzwl 0xc(%rax),%eax 0.00 : 61f: 8d 0c 06 48 cmp 0x28(%rdx),%ax 0.00 : 623: 8d 04 d5 00 00 00 je 58b 0.00 : 629: 00 48 c1 mov %rbx,%rdi 0.00 : 62c: e2 06 48 29 c2 callq 631 0.00 : 631: 8b 41 test %eax,%eax 0.00 : 633: 2c 48 8d 14 16 3b je 58b 0.00 : 639: 42 18 xor %ebp,%ebp 0.00 : 63b: 75 33 48 8d 41 jmpq 58b 0.00 : 640: 30 80 xor %esi,%esi 0.00 : 642: 78 0e 01 mov %rbx,%rdi 0.00 : 645: 0f 84 70 ff ff callq 64a 0.00 : 64a: ff 0f test %eax,%eax 0.00 : 64c: b7 40 0c 66 3b 42 je 58b 0.00 : 652: 28 0f xor %ebp,%ebp 0.00 : 654: 84 62 ff ff ff jmpq 58b : 659: 48 89 df e8 00 00 00 nopl 0x0(%rax) : 660: 00 85 c0 0f sub $0x18,%rsp : 664: 84 52 ff ff ff mov %rbx,0x8(%rsp) : 669: 31 ed e9 mov %rsi,%rbx : 66c: 4b ff ff ff 31 mov %rbp,0x10(%rsp) : 671: f6 48 89 df cmpl $0x13,0x68(%rbx) : 675: e8 00 00 mov %rdx,%rsi : 678: 00 00 jbe 696 : 67a: 85 c0 0f 84 39 ff mov 0xc4(%rbx),%edx : 680: ff ff 31 ed e9 32 ff mov 0xd8(%rbx),%rax : 687: ff ff 0f 1f movzbl (%rax,%rdx,1),%eax Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ---------------------------------------------- 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000660 : 62.50 : 660: 48 83 ec 18 sub $0x18,%rsp 0.00 : 694: 48 89 ja 6b0 0.00 : 696: 5c 24 08 48 89 mov $0x1,%ebp 12.50 : 69b: f3 48 mov %ebp,%eax 0.00 : 69d: 89 6c 24 10 83 mov 0x8(%rsp),%rbx 0.00 : 6a2: 7b 68 13 48 89 mov 0x10(%rsp),%rbp 0.00 : 6a7: d6 76 1c 8b add $0x18,%rsp 0.00 : 6ab: 93 retq 0.00 : 6ac: c4 00 00 00 nopl 0x0(%rax) 0.00 : 6b0: 48 8b 83 mov %rsi,%rdx 0.00 : 6b3: d8 00 00 mov %rbx,%rsi 0.00 : 6b6: 00 0f b6 04 10 callq 320 0.00 : 6bb: 83 e0 test %eax,%eax 0.00 : 6bd: 0f c1 mov %eax,%ebp 0.00 : 6bf: e0 02 je 69b 12.50 : 6c1: 83 f8 13 cmp $0x2,%eax 0.00 : 6c4: 77 1a je 69b 0.00 : 6c6: bd 01 00 00 movzbl 0x7c(%rbx),%eax 0.00 : 6ca: 00 89 e8 48 8b 5c 24 mov 0x88(%rbx),%rsi 0.00 : 6d1: 08 48 8b shr $0x5,%al 0.00 : 6d4: 6c 24 10 test %rsi,%rsi 0.00 : 6d7: 48 83 je 69b 0.00 : 6d9: c4 18 c3 movzbl %al,%eax 0.00 : 6dc: 0f 1f 40 cmp $0x2,%eax 0.00 : 6df: 00 48 89 seta %al 0.00 : 6e2: f2 48 89 movzbl %al,%eax 0.00 : 6e5: de e8 test %eax,%eax 0.00 : 6e7: 65 fc mov %eax,%eax 0.00 : 6e9: ff ff 85 c0 89 c5 74 lea 0x0(,%rax,8),%rcx 0.00 : 6f0: da 0.00 : 6f1: 83 f8 02 sete %dl 0.00 : 6f4: 74 d5 0f b6 shl $0x6,%rax 0.00 : 6f8: 43 7c 48 and $0x1,%edx 0.00 : 6fb: 8b b3 88 sub %rcx,%rax 0.00 : 6fe: 00 00 00 c0 lea (%rsi,%rax,1),%rcx 0.00 : 702: e8 05 48 85 f6 74 c2 lea 0x0(,%rdx,8),%rax 0.00 : 709: 0f 0.00 : 70a: b6 c0 83 f8 shl $0x6,%rdx 0.00 : 70e: 02 0f 97 sub %rax,%rdx 0.00 : 711: c0 0f b6 mov 0x18(%rcx),%eax 0.00 : 714: c0 85 c0 89 lea (%rsi,%rdx,1),%rdx 0.00 : 718: c0 48 8d cmp 0x2c(%rdx),%eax 0.00 : 71b: 0c c5 jne 735 0.00 : 71d: 00 00 00 00 cmpb $0x1,0x3e(%rcx) 12.50 : 721: 0f 94 c2 48 c1 e0 je 69b 0.00 : 727: 06 83 e2 01 movzwl 0x28(%rcx),%eax 0.00 : 72b: 48 29 c8 48 cmp 0x3c(%rdx),%ax 0.00 : 72f: 8d 0c 06 48 8d 04 je 69b 0.00 : 735: d5 00 00 mov %rbx,%rdi 0.00 : 738: 00 00 48 c1 e2 callq 73d 0.00 : 73d: 06 48 test %eax,%eax 0.00 : 73f: 29 c2 8b 41 18 mov $0x0,%eax 0.00 : 744: 48 8d 14 cmovne %eax,%ebp 0.00 : 747: 16 3b 42 2c 75 jmpq 69b : 74c: 18 80 79 3e nopl 0x0(%rax) : 750: 01 0f 84 74 sub $0x18,%rsp : 754: ff ff ff 0f mov %rbx,(%rsp) : 758: b7 41 28 66 3b mov %rbp,0x8(%rsp) : 75d: 42 3c 0f mov %rsi,%rbx : 760: 84 66 ff ff ff mov %r12,0x10(%rsp) : 765: 48 89 df e8 00 00 mov 0xc4(%rsi),%esi : 76b: 00 00 85 c0 b8 00 00 mov 0xd8(%rbx),%rax : 772: 00 00 0f 45 e8 mov 0x10(%rax,%rsi,1),%r12d : 777: e9 4f ff mov %rbx,%rsi : 77a: ff ff 0f 1f 40 callq 320 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 21.43 ??:0 14.29 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 7.14 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000f70 : 21.43 : f70: 48 83 ec 28 sub $0x28,%rsp 0.00 : fa4: 49 c7 adc %al,(%rax) 0.00 : fa6: 01 00 add %al,(%rax) 0.00 : fa8: 00 00 00 add %cl,-0x39(%rcx) 0.00 : fab: 48 89 1c or %al,(%r8) 0.00 : fae: 24 48 add %al,(%rax) 0.00 : fb0: 89 6c 24 add %al,-0x77(%rbp) 0.00 : fb3: 08 (bad) 7.14 : fb4: 4c 89 cb 4c 89 64 24 movq $0x0,0x18(%r9) 0.00 : fbb: 10 7.14 : fbc: 4c 89 6c 24 18 48 89 movq $0x0,0x20(%r9) 0.00 : fc3: fd 7.14 : fc4: 4c 89 74 mov %r9,%rdx 0.00 : fc7: 24 20 4c 8b 6c mov %cx,0x12(%r9) 7.14 : fcc: 24 38 41 89 d6 mov 0x30(%rsp),%rax 0.00 : fd1: 49 c7 41 callq *0x10(%rax) 0.00 : fd4: 10 00 test %al,%al 0.00 : fd6: 00 00 jne ff8 0.00 : fd8: 00 49 c7 41 mov (%rsp),%rbx 0.00 : fdc: 08 00 00 00 00 mov 0x8(%rsp),%rbp 0.00 : fe1: 45 89 c4 49 c7 mov 0x10(%rsp),%r12 0.00 : fe6: 41 18 00 00 00 mov 0x18(%rsp),%r13 0.00 : feb: 00 49 c7 41 20 mov 0x20(%rsp),%r14 0.00 : ff0: 00 00 00 00 add $0x28,%rsp 0.00 : ff4: 4c retq 0.00 : ff5: 89 ca 66 nopl (%rax) 0.00 : ff8: 41 89 49 12 mov %r12b,0x26(%rbx) 7.14 : ffc: 48 8b 44 24 movb $0x0,0x27(%rbx) 0.00 : 1000: 30 ff 50 mov %rbx,%rdx 14.29 : 1003: 10 84 c0 75 mov 0x8(%r13),%r11 7.14 : 1007: 20 48 8b mov %r14d,%esi 0.00 : 100a: 1c 24 48 mov %rbp,%rdi 0.00 : 100d: 8b 6c 24 08 mov (%rsp),%rbx 21.43 : 1011: 4c 8b 64 24 10 mov 0x8(%rsp),%rbp 0.00 : 1016: 4c 8b 6c 24 18 mov 0x10(%rsp),%r12 0.00 : 101b: 4c 8b 74 24 20 mov 0x18(%rsp),%r13 0.00 : 1020: 48 83 c4 28 c3 mov 0x20(%rsp),%r14 0.00 : 1025: 0f 1f 00 44 add $0x28,%rsp 0.00 : 1029: 88 63 26 jmpq *%r11 : 102c: c6 43 27 00 nopl 0x0(%rax) : 1030: 48 89 da 4d sub $0x48,%rsp : 1034: 8b 5d 08 44 89 mov %rbx,0x20(%rsp) : 1039: f6 48 89 ef 48 mov %r12,0x30(%rsp) : 103e: 8b 1c mov %edx,%ebx : 1040: 24 48 8b 6c 24 mov %r13,0x38(%rsp) : 1045: 08 4c 8b 64 24 mov %r14,0x40(%rsp) : 104a: 10 4c 8b mov %rdi,%r13 : 104d: 6c 24 18 4c 8b mov %rbp,0x28(%rsp) : 1052: 74 24 20 mov %esi,%r12d : 1055: 48 83 c4 mov %rcx,%r14 : 1058: 28 41 ff e3 cmp $0x26,%dx Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ---------------------------------------------- 27.27 ??:0 27.27 ??:0 18.18 ??:0 9.09 ??:0 9.09 ??:0 9.09 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000750 : 100.00 : 750: 48 83 ec 18 sub $0x18,%rsp 0.00 : 784: 48 89 1c 24 48 89 xor 0x2e7402f8(%rbx),%eax 0.00 : 78a: 6c 24 08 48 89 f3 mov 0xc4(%rbx),%edx 0.00 : 790: 4c 89 64 24 10 8b b6 mov 0xd8(%rbx),%rax 0.00 : 797: c4 00 00 00 48 cmp %r12d,0x10(%rax,%rdx,1) 0.00 : 79c: 8b 83 je 7b8 0.00 : 79e: d8 00 00 00 mov 0x58(%rbx),%rdi 0.00 : 7a2: 44 8b 64 test %rdi,%rdi 0.00 : 7a5: 30 10 je 7b8 0.00 : 7a7: 48 89 de e8 test $0x1,%dil 0.00 : 7ab: a1 fb je 7d0 0.00 : 7ad: ff ff 85 c0 89 c5 74 movq $0x0,0x58(%rbx) 0.00 : 7b4: 33 0.00 : 7b5: 83 f8 02 nopl (%rax) 0.00 : 7b8: 74 2e mov %ebp,%eax 0.00 : 7ba: 8b 93 c4 00 mov (%rsp),%rbx 0.00 : 7be: 00 00 48 8b 83 mov 0x8(%rsp),%rbp 0.00 : 7c3: d8 00 00 00 44 mov 0x10(%rsp),%r12 0.00 : 7c8: 39 64 10 10 add $0x18,%rsp 0.00 : 7cc: 74 retq 0.00 : 7cd: 1a 48 8b nopl (%rax) 0.00 : 7d0: 7b 58 48 85 and $0xfffffffffffffffe,%rdi 0.00 : 7d4: ff 74 11 40 f6 callq 7d9 0.00 : 7d9: c7 01 jmp 7ad : 7db: 74 nop : 7dc: Address 0x00000000000007dc is out of bounds. : Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:69 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:69 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:69 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:85 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:90 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:94 14.29 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:98 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049e0c0 : : * Read in a buffer, using bulk-insert strategy if bistate isn't NULL. : */ : static Buffer : ReadBufferBI(Relation relation, BlockNumber targetBlock, : BulkInsertState bistate) : { 0.00 : 49e0c0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:69 14.29 : 49e0c1: 48 89 e5 mov %rsp,%rbp 14.29 : 49e0c4: 48 89 5d e8 mov %rbx,-0x18(%rbp) 14.29 : 49e0c8: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 49e0cc: 89 f3 mov %esi,%ebx 0.00 : 49e0ce: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 49e0d2: 48 83 ec 20 sub $0x20,%rsp : Buffer buffer; : : /* If not bulk-insert, exactly like ReadBuffer */ : if (!bistate) 0.00 : 49e0d6: 48 85 d2 test %rdx,%rdx : * Read in a buffer, using bulk-insert strategy if bistate isn't NULL. : */ : static Buffer : ReadBufferBI(Relation relation, BlockNumber targetBlock, : BulkInsertState bistate) : { 0.00 : 49e0d9: 49 89 fd mov %rdi,%r13 0.00 : 49e0dc: 49 89 d4 mov %rdx,%r12 : Buffer buffer; : : /* If not bulk-insert, exactly like ReadBuffer */ : if (!bistate) 0.00 : 49e0df: 74 6f je 49e150 : return ReadBuffer(relation, targetBlock); : : /* If we have the desired block already pinned, re-pin and return it */ : if (bistate->current_buf != InvalidBuffer) 0.00 : 49e0e1: 8b 7a 08 mov 0x8(%rdx),%edi 0.00 : 49e0e4: 85 ff test %edi,%edi 0.00 : 49e0e6: 74 1d je 49e105 : { : if (BufferGetBlockNumber(bistate->current_buf) == targetBlock) 0.00 : 49e0e8: e8 43 5f 1d 00 callq 674030 0.00 : 49e0ed: 39 d8 cmp %ebx,%eax 0.00 : 49e0ef: 90 nop 0.00 : 49e0f0: 74 46 je 49e138 : { : IncrBufferRefCount(bistate->current_buf); : return bistate->current_buf; : } : /* ... else drop the old buffer */ : ReleaseBuffer(bistate->current_buf); 0.00 : 49e0f2: 41 8b 7c 24 08 mov 0x8(%r12),%edi /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:85 14.29 : 49e0f7: e8 64 6d 1d 00 callq 674e60 : bistate->current_buf = InvalidBuffer; 0.00 : 49e0fc: 41 c7 44 24 08 00 00 movl $0x0,0x8(%r12) 0.00 : 49e103: 00 00 : } : : /* Perform a read using the buffer strategy */ : buffer = ReadBufferExtended(relation, MAIN_FORKNUM, targetBlock, 0.00 : 49e105: 4d 8b 04 24 mov (%r12),%r8 0.00 : 49e109: 89 da mov %ebx,%edx 0.00 : 49e10b: 31 c9 xor %ecx,%ecx 0.00 : 49e10d: 31 f6 xor %esi,%esi 0.00 : 49e10f: 4c 89 ef mov %r13,%rdi 0.00 : 49e112: e8 59 84 1d 00 callq 676570 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:90 14.29 : 49e117: 89 c3 mov %eax,%ebx : RBM_NORMAL, bistate->strategy); : : /* Save the selected block as target for future inserts */ : IncrBufferRefCount(buffer); /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:94 14.29 : 49e119: 89 c7 mov %eax,%edi 0.00 : 49e11b: e8 40 6a 1d 00 callq 674b60 : bistate->current_buf = buffer; 0.00 : 49e120: 41 89 5c 24 08 mov %ebx,0x8(%r12) : : return buffer; : } 0.00 : 49e125: 89 d8 mov %ebx,%eax 0.00 : 49e127: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 49e12b: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 49e12f: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 49e133: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/heap/hio.c:98 14.29 : 49e134: c3 retq 0.00 : 49e135: 0f 1f 00 nopl (%rax) : /* If we have the desired block already pinned, re-pin and return it */ : if (bistate->current_buf != InvalidBuffer) : { : if (BufferGetBlockNumber(bistate->current_buf) == targetBlock) : { : IncrBufferRefCount(bistate->current_buf); 0.00 : 49e138: 41 8b 7c 24 08 mov 0x8(%r12),%edi 0.00 : 49e13d: e8 1e 6a 1d 00 callq 674b60 : return bistate->current_buf; 0.00 : 49e142: 41 8b 5c 24 08 mov 0x8(%r12),%ebx : /* Save the selected block as target for future inserts */ : IncrBufferRefCount(buffer); : bistate->current_buf = buffer; : : return buffer; : } 0.00 : 49e147: eb dc jmp 49e125 0.00 : 49e149: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 49e150: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 49e154: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 49e158: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 49e15c: c9 leaveq : { : Buffer buffer; : : /* If not bulk-insert, exactly like ReadBuffer */ : if (!bistate) : return ReadBuffer(relation, targetBlock); 0.00 : 49e15d: e9 3e 85 1d 00 jmpq 6766a0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1335 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1335 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1336 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1341 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1342 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1342 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1344 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674bd0 : : * to save a spin lock/unlock cycle, because we need to pin a buffer before : * its state can change under us. : */ : static void : PinBuffer_Locked(volatile BufferDesc *buf) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1335 14.29 : 674bd0: 55 push %rbp : int b = buf->buf_id; : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); 0.00 : 674bd1: ba 01 00 00 00 mov $0x1,%edx 0.00 : 674bd6: be 01 00 00 00 mov $0x1,%esi : * to save a spin lock/unlock cycle, because we need to pin a buffer before : * its state can change under us. : */ : static void : PinBuffer_Locked(volatile BufferDesc *buf) : { 0.00 : 674bdb: 48 89 e5 mov %rsp,%rbp 14.29 : 674bde: 53 push %rbx 0.00 : 674bdf: 48 89 fb mov %rdi,%rbx 0.00 : 674be2: 48 83 ec 08 sub $0x8,%rsp : int b = buf->buf_id; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1336 14.29 : 674be6: 8b 7f 24 mov 0x24(%rdi),%edi : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); 0.00 : 674be9: 83 c7 01 add $0x1,%edi 0.00 : 674bec: e8 2f f9 ff ff callq 674520 : : if (ref->refcount == 0) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1341 14.29 : 674bf1: 8b 48 04 mov 0x4(%rax),%ecx : PinBuffer_Locked(volatile BufferDesc *buf) : { : int b = buf->buf_id; : PrivateRefCountEntry *ref; : : ref = GetPrivateRefCountEntry(b + 1, true, true); 0.00 : 674bf4: 48 89 c2 mov %rax,%rdx : : if (ref->refcount == 0) 0.00 : 674bf7: 85 c9 test %ecx,%ecx 0.00 : 674bf9: 75 09 jne 674c04 : buf->refcount++; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1342 14.29 : 674bfb: 8b 43 18 mov 0x18(%rbx),%eax 14.29 : 674bfe: 83 c0 01 add $0x1,%eax 0.00 : 674c01: 89 43 18 mov %eax,0x18(%rbx) : UnlockBufHdr(buf); 0.00 : 674c04: c6 43 20 00 movb $0x0,0x20(%rbx) : ref->refcount++; /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1344 14.29 : 674c08: 83 42 04 01 addl $0x1,0x4(%rdx) : Assert(ref->refcount > 0); : ResourceOwnerRememberBuffer(CurrentResourceOwner, 0.00 : 674c0c: 8b 73 24 mov 0x24(%rbx),%esi 0.00 : 674c0f: 48 8b 3d aa 5c 54 00 mov 0x545caa(%rip),%rdi # bba8c0 : BufferDescriptorGetBuffer(buf)); : } 0.00 : 674c16: 48 83 c4 08 add $0x8,%rsp 0.00 : 674c1a: 5b pop %rbx 0.00 : 674c1b: c9 leaveq : if (ref->refcount == 0) : buf->refcount++; : UnlockBufHdr(buf); : ref->refcount++; : Assert(ref->refcount > 0); : ResourceOwnerRememberBuffer(CurrentResourceOwner, 0.00 : 674c1c: 83 c6 01 add $0x1,%esi 0.00 : 674c1f: e9 7c 55 12 00 jmpq 79a1a0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 71.43 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/storage/s_lock.h:224 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:821 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/lib/ilist.h:333 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068f080 : : /* : * Add ourselves to the end of the queue. Mode can be LW_WAIT_UNTIL_FREE here! : */ : static void : LWLockQueueSelf(LWLock *lock, LWLockMode mode) : { 0.00 : 68f080: 55 push %rbp : /* : * If we don't have a PGPROC structure, there's no way to wait. This : * should never occur, since MyProc should only be null during shared : * memory initialization. : */ : if (MyProc == NULL) 0.00 : 68f081: 48 83 3d bf e8 4e 00 cmpq $0x0,0x4ee8bf(%rip) # b7d948 0.00 : 68f088: 00 : /* : * Add ourselves to the end of the queue. Mode can be LW_WAIT_UNTIL_FREE here! : */ : static void : LWLockQueueSelf(LWLock *lock, LWLockMode mode) : { 0.00 : 68f089: 48 89 e5 mov %rsp,%rbp 0.00 : 68f08c: 41 54 push %r12 0.00 : 68f08e: 41 89 f4 mov %esi,%r12d 0.00 : 68f091: 53 push %rbx 0.00 : 68f092: 48 89 fb mov %rdi,%rbx : /* : * If we don't have a PGPROC structure, there's no way to wait. This : * should never occur, since MyProc should only be null during shared : * memory initialization. : */ : if (MyProc == NULL) 0.00 : 68f095: 0f 84 d7 00 00 00 je 68f172 : elog(PANIC, "cannot wait without a PGPROC structure"); : : pg_atomic_fetch_add_u32(&lock->nwaiters, 1); 0.00 : 68f09b: 48 8d 47 08 lea 0x8(%rdi),%rax : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.00 : 68f09f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 68f0a4: f0 0f c1 10 lock xadd %edx,(%rax) : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/storage/s_lock.h:224 71.43 : 68f0a8: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68f0ad: f0 86 07 lock xchg %al,(%rdi) : : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:821 14.29 : 68f0b0: 84 c0 test %al,%al 0.00 : 68f0b2: 75 5c jne 68f110 : #endif : : if (MyProc->lwWaiting) 0.00 : 68f0b4: 48 8b 05 8d e8 4e 00 mov 0x4ee88d(%rip),%rax # b7d948 0.00 : 68f0bb: 80 78 41 00 cmpb $0x0,0x41(%rax) 0.00 : 68f0bf: 0f 85 d7 00 00 00 jne 68f19c : elog(PANIC, "queueing for lock while waiting on another one"); : : MyProc->lwWaiting = true; 0.00 : 68f0c5: c6 40 41 01 movb $0x1,0x41(%rax) : MyProc->lwWaitMode = mode; 0.00 : 68f0c9: 48 8b 05 78 e8 4e 00 mov 0x4ee878(%rip),%rax # b7d948 : : /* LW_WAIT_UNTIL_FREE waiters are always at the front of the queue */ : if (mode == LW_WAIT_UNTIL_FREE) 0.00 : 68f0d0: 41 83 fc 02 cmp $0x2,%r12d : : if (MyProc->lwWaiting) : elog(PANIC, "queueing for lock while waiting on another one"); : : MyProc->lwWaiting = true; : MyProc->lwWaitMode = mode; 0.00 : 68f0d4: 44 88 60 42 mov %r12b,0x42(%rax) : : /* LW_WAIT_UNTIL_FREE waiters are always at the front of the queue */ : if (mode == LW_WAIT_UNTIL_FREE) 0.00 : 68f0d8: 74 4e je 68f128 : * Insert a node at the end of the list. : */ : STATIC_IF_INLINE void : dlist_push_tail(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.00 : 68f0da: 48 83 7b 18 00 cmpq $0x0,0x18(%rbx) : dlist_push_head(&lock->waiters, &MyProc->lwWaitLink); : else : dlist_push_tail(&lock->waiters, &MyProc->lwWaitLink); 0.00 : 68f0df: 48 8b 15 62 e8 4e 00 mov 0x4ee862(%rip),%rdx # b7d948 0.00 : 68f0e6: 48 8d 4b 10 lea 0x10(%rbx),%rcx 0.00 : 68f0ea: 48 8d 72 48 lea 0x48(%rdx),%rsi 0.00 : 68f0ee: 74 68 je 68f158 : dlist_init(head); : : node->next = &head->head; 0.00 : 68f0f0: 48 89 4a 50 mov %rcx,0x50(%rdx) : node->prev = head->head.prev; 0.00 : 68f0f4: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 68f0f8: 48 89 42 48 mov %rax,0x48(%rdx) : node->prev->next = node; 0.00 : 68f0fc: 48 89 70 08 mov %rsi,0x8(%rax) : head->head.prev = node; 0.00 : 68f100: 48 89 73 10 mov %rsi,0x10(%rbx) : : /* Can release the mutex now */ : SpinLockRelease(&lock->mutex); 0.00 : 68f104: c6 03 00 movb $0x0,(%rbx) : } 0.00 : 68f107: 5b pop %rbx 0.00 : 68f108: 41 5c pop %r12 0.00 : 68f10a: c9 leaveq 0.00 : 68f10b: c3 retq 0.00 : 68f10c: 0f 1f 40 00 nopl 0x0(%rax) : pg_atomic_fetch_add_u32(&lock->nwaiters, 1); : : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.00 : 68f110: ba 35 03 00 00 mov $0x335,%edx 0.00 : 68f115: be 85 d0 8a 00 mov $0x8ad085,%esi 0.00 : 68f11a: e8 21 0f 00 00 callq 690040 0.00 : 68f11f: eb 93 jmp 68f0b4 0.00 : 68f121: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * Insert a node at the beginning of the list. : */ : STATIC_IF_INLINE void : dlist_push_head(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.00 : 68f128: 48 83 7b 18 00 cmpq $0x0,0x18(%rbx) : MyProc->lwWaiting = true; : MyProc->lwWaitMode = mode; : : /* LW_WAIT_UNTIL_FREE waiters are always at the front of the queue */ : if (mode == LW_WAIT_UNTIL_FREE) : dlist_push_head(&lock->waiters, &MyProc->lwWaitLink); 0.00 : 68f12d: 48 8b 15 14 e8 4e 00 mov 0x4ee814(%rip),%rdx # b7d948 0.00 : 68f134: 48 8d 4b 10 lea 0x10(%rbx),%rcx 0.00 : 68f138: 48 8d 72 48 lea 0x48(%rdx),%rsi 0.00 : 68f13c: 74 2a je 68f168 : dlist_init(head); : : node->next = head->head.next; 0.00 : 68f13e: 48 8b 43 18 mov 0x18(%rbx),%rax : node->prev = &head->head; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/../../../../src/include/lib/ilist.h:333 14.29 : 68f142: 48 89 4a 48 mov %rcx,0x48(%rdx) : dlist_push_head(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ : dlist_init(head); : : node->next = head->head.next; 0.00 : 68f146: 48 89 42 50 mov %rax,0x50(%rdx) : node->prev = &head->head; : node->next->prev = node; 0.00 : 68f14a: 48 89 30 mov %rsi,(%rax) : head->head.next = node; 0.00 : 68f14d: 48 89 73 18 mov %rsi,0x18(%rbx) 0.00 : 68f151: eb b1 jmp 68f104 0.00 : 68f153: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 68f158: 48 89 4b 10 mov %rcx,0x10(%rbx) 0.00 : 68f15c: 48 89 4b 18 mov %rcx,0x18(%rbx) 0.00 : 68f160: eb 8e jmp 68f0f0 0.00 : 68f162: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 68f168: 48 89 4b 10 mov %rcx,0x10(%rbx) 0.00 : 68f16c: 48 89 4b 18 mov %rcx,0x18(%rbx) 0.00 : 68f170: eb cc jmp 68f13e : * If we don't have a PGPROC structure, there's no way to wait. This : * should never occur, since MyProc should only be null during shared : * memory initialization. : */ : if (MyProc == NULL) : elog(PANIC, "cannot wait without a PGPROC structure"); 0.00 : 68f172: ba 20 d1 8a 00 mov $0x8ad120,%edx 0.00 : 68f177: be 2e 03 00 00 mov $0x32e,%esi 0.00 : 68f17c: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68f181: e8 9a c2 0e 00 callq 77b420 0.00 : 68f186: be 80 b6 7b 00 mov $0x7bb680,%esi 0.00 : 68f18b: bf 16 00 00 00 mov $0x16,%edi 0.00 : 68f190: 31 c0 xor %eax,%eax 0.00 : 68f192: e8 99 c0 0e 00 callq 77b230 0.00 : 68f197: e8 34 a3 dd ff callq 4694d0 : #else : SpinLockAcquire(&lock->mutex); : #endif : : if (MyProc->lwWaiting) : elog(PANIC, "queueing for lock while waiting on another one"); 0.00 : 68f19c: ba 20 d1 8a 00 mov $0x8ad120,%edx 0.00 : 68f1a1: be 39 03 00 00 mov $0x339,%esi 0.00 : 68f1a6: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68f1ab: e8 70 c2 0e 00 callq 77b420 0.00 : 68f1b0: be d8 d0 8a 00 mov $0x8ad0d8,%esi 0.00 : 68f1b5: bf 16 00 00 00 mov $0x16,%edi 0.00 : 68f1ba: 31 c0 xor %eax,%eax 0.00 : 68f1bc: e8 6f c0 0e 00 callq 77b230 0.00 : 68f1c1: e8 0a a3 dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 28.57 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/../../../../src/include/utils/palloc.h:95 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1452 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/../../../../src/include/utils/palloc.h:95 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1575 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1580 14.29 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1580 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000697310 : : * table has to be searched linearly, but dropping a database is a pretty : * heavyweight operation anyhow, so we'll live with it.) : */ : void : RememberFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) : { 0.00 : 697310: 55 push %rbp 0.00 : 697311: 48 89 e5 mov %rsp,%rbp 0.00 : 697314: 41 56 push %r14 0.00 : 697316: 41 55 push %r13 0.00 : 697318: 41 89 cd mov %ecx,%r13d 0.00 : 69731b: 41 54 push %r12 0.00 : 69731d: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1452 14.29 : 69731e: 89 d3 mov %edx,%ebx 0.00 : 697320: 48 83 ec 30 sub $0x30,%rsp : Assert(pendingOpsTable); : : if (segno == FORGET_RELATION_FSYNC) 0.00 : 697324: 83 f9 ff cmp $0xffffffff,%ecx : * table has to be searched linearly, but dropping a database is a pretty : * heavyweight operation anyhow, so we'll live with it.) : */ : void : RememberFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) : { 0.00 : 697327: 48 89 7d b0 mov %rdi,-0x50(%rbp) 0.00 : 69732b: 89 75 b8 mov %esi,-0x48(%rbp) : Assert(pendingOpsTable); : : if (segno == FORGET_RELATION_FSYNC) 0.00 : 69732e: 0f 84 54 01 00 00 je 697488 : entry->requests[forknum] = NULL; : entry->canceled[forknum] = true; : } : } : } : else if (segno == FORGET_DATABASE_FSYNC) 0.00 : 697334: 83 f9 fe cmp $0xfffffffe,%ecx 0.00 : 697337: 0f 84 d3 01 00 00 je 697510 : } : else : prev = cell; : } : } : else if (segno == UNLINK_RELATION_REQUEST) 0.00 : 69733d: 83 f9 fd cmp $0xfffffffd,%ecx 0.00 : 697340: 0f 84 da 00 00 00 je 697420 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 697346: 48 8b 05 6b 74 4e 00 mov 0x4e746b(%rip),%rax # b7e7b8 : /* Normal case: enter a request to fsync this segment */ : MemoryContext oldcxt = MemoryContextSwitchTo(pendingOpsCxt); : PendingOperationEntry *entry; : bool found; : : entry = (PendingOperationEntry *) hash_search(pendingOpsTable, 0.00 : 69734d: 48 8b 3d 44 74 4e 00 mov 0x4e7444(%rip),%rdi # b7e798 0.00 : 697354: 48 8d 4d df lea -0x21(%rbp),%rcx 0.00 : 697358: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 69735c: ba 01 00 00 00 mov $0x1,%edx : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 697361: 4c 8b 35 f8 34 52 00 mov 0x5234f8(%rip),%r14 # bba860 : : CurrentMemoryContext = context; /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/../../../../src/include/utils/palloc.h:95 14.29 : 697368: 48 89 05 f1 34 52 00 mov %rax,0x5234f1(%rip) # bba860 0.00 : 69736f: e8 2c d3 0e 00 callq 7846a0 : &rnode, : HASH_ENTER, : &found); : /* if new entry, initialize it */ : if (!found) 0.00 : 697374: 80 7d df 00 cmpb $0x0,-0x21(%rbp) : /* Normal case: enter a request to fsync this segment */ : MemoryContext oldcxt = MemoryContextSwitchTo(pendingOpsCxt); : PendingOperationEntry *entry; : bool found; : : entry = (PendingOperationEntry *) hash_search(pendingOpsTable, 0.00 : 697378: 49 89 c4 mov %rax,%r12 : &rnode, : HASH_ENTER, : &found); : /* if new entry, initialize it */ : if (!found) 0.00 : 69737b: 74 33 je 6973b0 : * NB: it's intentional that we don't change cycle_ctr if the entry : * already exists. The cycle_ctr must represent the oldest fsync : * request that could be in the entry. : */ : : entry->requests[forknum] = bms_add_member(entry->requests[forknum], 0.00 : 69737d: 48 63 db movslq %ebx,%rbx 0.00 : 697380: 44 89 ee mov %r13d,%esi 0.00 : 697383: 48 83 c3 02 add $0x2,%rbx 0.00 : 697387: 49 8b 3c dc mov (%r12,%rbx,8),%rdi 0.00 : 69738b: e8 70 bc f4 ff callq 5e3000 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1575 14.29 : 697390: 49 89 04 dc mov %rax,(%r12,%rbx,8) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/../../../../src/include/utils/palloc.h:95 28.57 : 697394: 4c 89 35 c5 34 52 00 mov %r14,0x5234c5(%rip) # bba860 : (int) segno); : : MemoryContextSwitchTo(oldcxt); : } : } 0.00 : 69739b: 48 83 c4 30 add $0x30,%rsp 0.00 : 69739f: 5b pop %rbx 0.00 : 6973a0: 41 5c pop %r12 0.00 : 6973a2: 41 5d pop %r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1580 14.29 : 6973a4: 41 5e pop %r14 0.00 : 6973a6: c9 leaveq 14.29 : 6973a7: c3 retq 0.00 : 6973a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6973af: 00 : HASH_ENTER, : &found); : /* if new entry, initialize it */ : if (!found) : { : entry->cycle_ctr = mdsync_cycle_ctr; 0.00 : 6973b0: 0f b7 05 f3 73 4e 00 movzwl 0x4e73f3(%rip),%eax # b7e7aa 0.00 : 6973b7: 66 41 89 44 24 0c mov %ax,0xc(%r12) : MemSet(entry->requests, 0, sizeof(entry->requests)); 0.00 : 6973bd: 49 8d 44 24 10 lea 0x10(%r12),%rax 0.00 : 6973c2: a8 07 test $0x7,%al 0.00 : 6973c4: 75 32 jne 6973f8 0.00 : 6973c6: 49 c7 44 24 10 00 00 movq $0x0,0x10(%r12) 0.00 : 6973cd: 00 00 0.00 : 6973cf: 49 c7 44 24 18 00 00 movq $0x0,0x18(%r12) 0.00 : 6973d6: 00 00 0.00 : 6973d8: 49 c7 44 24 20 00 00 movq $0x0,0x20(%r12) 0.00 : 6973df: 00 00 0.00 : 6973e1: 49 c7 44 24 28 00 00 movq $0x0,0x28(%r12) 0.00 : 6973e8: 00 00 : MemSet(entry->canceled, 0, sizeof(entry->canceled)); 0.00 : 6973ea: 41 c7 44 24 30 00 00 movl $0x0,0x30(%r12) 0.00 : 6973f1: 00 00 0.00 : 6973f3: eb 88 jmp 69737d 0.00 : 6973f5: 0f 1f 00 nopl (%rax) : &found); : /* if new entry, initialize it */ : if (!found) : { : entry->cycle_ctr = mdsync_cycle_ctr; : MemSet(entry->requests, 0, sizeof(entry->requests)); 0.00 : 6973f8: 49 c7 44 24 10 00 00 movq $0x0,0x10(%r12) 0.00 : 6973ff: 00 00 0.00 : 697401: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 697408: 00 0.00 : 697409: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 697410: 00 0.00 : 697411: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 697418: 00 0.00 : 697419: eb cf jmp 6973ea 0.00 : 69741b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 697420: 48 8b 05 91 73 4e 00 mov 0x4e7391(%rip),%rax # b7e7b8 : PendingUnlinkEntry *entry; : : /* PendingUnlinkEntry doesn't store forknum, since it's always MAIN */ : Assert(forknum == MAIN_FORKNUM); : : entry = palloc(sizeof(PendingUnlinkEntry)); 0.00 : 697427: bf 10 00 00 00 mov $0x10,%edi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 69742c: 48 8b 1d 2d 34 52 00 mov 0x52342d(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 697433: 48 89 05 26 34 52 00 mov %rax,0x523426(%rip) # bba860 0.00 : 69743a: e8 11 19 10 00 callq 798d50 0.00 : 69743f: 48 89 c6 mov %rax,%rsi : entry->rnode = rnode; 0.00 : 697442: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 697446: 48 89 06 mov %rax,(%rsi) 0.00 : 697449: 8b 45 b8 mov -0x48(%rbp),%eax 0.00 : 69744c: 89 46 08 mov %eax,0x8(%rsi) : entry->cycle_ctr = mdckpt_cycle_ctr; 0.00 : 69744f: 0f b7 05 52 73 4e 00 movzwl 0x4e7352(%rip),%eax # b7e7a8 0.00 : 697456: 66 89 46 0c mov %ax,0xc(%rsi) : : pendingUnlinks = lappend(pendingUnlinks, entry); 0.00 : 69745a: 48 8b 3d 3f 73 4e 00 mov 0x4e733f(%rip),%rdi # b7e7a0 0.00 : 697461: e8 1a aa f4 ff callq 5e1e80 0.00 : 697466: 48 89 1d f3 33 52 00 mov %rbx,0x5233f3(%rip) # bba860 0.00 : 69746d: 48 89 05 2c 73 4e 00 mov %rax,0x4e732c(%rip) # b7e7a0 : entry->requests[forknum] = bms_add_member(entry->requests[forknum], : (int) segno); : : MemoryContextSwitchTo(oldcxt); : } : } 0.00 : 697474: 48 83 c4 30 add $0x30,%rsp 0.00 : 697478: 5b pop %rbx 0.00 : 697479: 41 5c pop %r12 0.00 : 69747b: 41 5d pop %r13 0.00 : 69747d: 41 5e pop %r14 0.00 : 69747f: c9 leaveq 0.00 : 697480: c3 retq 0.00 : 697481: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (segno == FORGET_RELATION_FSYNC) : { : /* Remove any pending requests for the relation (one or all forks) */ : PendingOperationEntry *entry; : : entry = (PendingOperationEntry *) hash_search(pendingOpsTable, 0.00 : 697488: 48 8b 3d 09 73 4e 00 mov 0x4e7309(%rip),%rdi # b7e798 0.00 : 69748f: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 697493: 31 c9 xor %ecx,%ecx 0.00 : 697495: 31 d2 xor %edx,%edx 0.00 : 697497: e8 04 d2 0e 00 callq 7846a0 : &rnode, : HASH_FIND, : NULL); : if (entry) 0.00 : 69749c: 48 85 c0 test %rax,%rax : if (segno == FORGET_RELATION_FSYNC) : { : /* Remove any pending requests for the relation (one or all forks) */ : PendingOperationEntry *entry; : : entry = (PendingOperationEntry *) hash_search(pendingOpsTable, 0.00 : 69749f: 49 89 c5 mov %rax,%r13 : &rnode, : HASH_FIND, : NULL); : if (entry) 0.00 : 6974a2: 0f 84 f3 fe ff ff je 69739b : * active hashtable scan. Instead we delete the bitmapsets; this : * is safe because of the way mdsync is coded. We also set the : * "canceled" flags so that mdsync can tell that a cancel arrived : * for the fork(s). : */ : if (forknum == InvalidForkNumber) 0.00 : 6974a8: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 6974ab: 0f 85 5f 01 00 00 jne 697610 : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 6974b1: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 6974b5: e8 f6 b8 f4 ff callq 5e2db0 0.00 : 6974ba: 49 8b 7d 18 mov 0x18(%r13),%rdi : entry->requests[forknum] = NULL; 0.00 : 6974be: 49 c7 45 10 00 00 00 movq $0x0,0x10(%r13) 0.00 : 6974c5: 00 : entry->canceled[forknum] = true; 0.00 : 6974c6: 41 c6 45 30 01 movb $0x1,0x30(%r13) : if (forknum == InvalidForkNumber) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 6974cb: e8 e0 b8 f4 ff callq 5e2db0 0.00 : 6974d0: 49 8b 7d 20 mov 0x20(%r13),%rdi : entry->requests[forknum] = NULL; 0.00 : 6974d4: 49 c7 45 18 00 00 00 movq $0x0,0x18(%r13) 0.00 : 6974db: 00 : entry->canceled[forknum] = true; 0.00 : 6974dc: 41 c6 45 31 01 movb $0x1,0x31(%r13) : if (forknum == InvalidForkNumber) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 6974e1: e8 ca b8 f4 ff callq 5e2db0 0.00 : 6974e6: 49 8b 7d 28 mov 0x28(%r13),%rdi : entry->requests[forknum] = NULL; 0.00 : 6974ea: 49 c7 45 20 00 00 00 movq $0x0,0x20(%r13) 0.00 : 6974f1: 00 : entry->canceled[forknum] = true; 0.00 : 6974f2: 41 c6 45 32 01 movb $0x1,0x32(%r13) : if (forknum == InvalidForkNumber) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 6974f7: e8 b4 b8 f4 ff callq 5e2db0 : entry->requests[forknum] = NULL; 0.00 : 6974fc: 49 c7 45 28 00 00 00 movq $0x0,0x28(%r13) 0.00 : 697503: 00 : entry->canceled[forknum] = true; 0.00 : 697504: 41 c6 45 33 01 movb $0x1,0x33(%r13) : * for the fork(s). : */ : if (forknum == InvalidForkNumber) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) 0.00 : 697509: e9 8d fe ff ff jmpq 69739b 0.00 : 69750e: 66 90 xchg %ax,%ax : ListCell *cell, : *prev, : *next; : : /* Remove fsync requests */ : hash_seq_init(&hstat, pendingOpsTable); 0.00 : 697510: 4c 8d 65 c0 lea -0x40(%rbp),%r12 0.00 : 697514: 48 8b 35 7d 72 4e 00 mov 0x4e727d(%rip),%rsi # b7e798 0.00 : 69751b: 4c 89 e7 mov %r12,%rdi 0.00 : 69751e: e8 0d c9 0e 00 callq 783e30 0.00 : 697523: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : while ((entry = (PendingOperationEntry *) hash_seq_search(&hstat)) != NULL) 0.00 : 697528: 4c 89 e7 mov %r12,%rdi 0.00 : 69752b: e8 90 c5 0e 00 callq 783ac0 0.00 : 697530: 48 85 c0 test %rax,%rax 0.00 : 697533: 48 89 c3 mov %rax,%rbx 0.00 : 697536: 74 68 je 6975a0 : { : if (entry->rnode.dbNode == rnode.dbNode) 0.00 : 697538: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 69753b: 3b 45 b4 cmp -0x4c(%rbp),%eax 0.00 : 69753e: 75 e8 jne 697528 : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 697540: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 697544: e8 67 b8 f4 ff callq 5e2db0 0.00 : 697549: 48 8b 7b 18 mov 0x18(%rbx),%rdi : entry->requests[forknum] = NULL; 0.00 : 69754d: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 697554: 00 : entry->canceled[forknum] = true; 0.00 : 697555: c6 43 30 01 movb $0x1,0x30(%rbx) : if (entry->rnode.dbNode == rnode.dbNode) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 697559: e8 52 b8 f4 ff callq 5e2db0 0.00 : 69755e: 48 8b 7b 20 mov 0x20(%rbx),%rdi : entry->requests[forknum] = NULL; 0.00 : 697562: 48 c7 43 18 00 00 00 movq $0x0,0x18(%rbx) 0.00 : 697569: 00 : entry->canceled[forknum] = true; 0.00 : 69756a: c6 43 31 01 movb $0x1,0x31(%rbx) : if (entry->rnode.dbNode == rnode.dbNode) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 69756e: e8 3d b8 f4 ff callq 5e2db0 0.00 : 697573: 48 8b 7b 28 mov 0x28(%rbx),%rdi : entry->requests[forknum] = NULL; 0.00 : 697577: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 69757e: 00 : entry->canceled[forknum] = true; 0.00 : 69757f: c6 43 32 01 movb $0x1,0x32(%rbx) : if (entry->rnode.dbNode == rnode.dbNode) : { : /* remove requests for all forks */ : for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) : { : bms_free(entry->requests[forknum]); 0.00 : 697583: e8 28 b8 f4 ff callq 5e2db0 : entry->requests[forknum] = NULL; 0.00 : 697588: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 69758f: 00 : entry->canceled[forknum] = true; 0.00 : 697590: c6 43 33 01 movb $0x1,0x33(%rbx) 0.00 : 697594: eb 92 jmp 697528 0.00 : 697596: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 69759d: 00 00 00 : } : } : : /* Remove unlink requests */ : prev = NULL; : for (cell = list_head(pendingUnlinks); cell; cell = next) 0.00 : 6975a0: 48 8b 05 f9 71 4e 00 mov 0x4e71f9(%rip),%rax # b7e7a0 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 6975a7: 48 85 c0 test %rax,%rax 0.00 : 6975aa: 0f 84 eb fd ff ff je 69739b 0.00 : 6975b0: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 6975b4: 48 85 f6 test %rsi,%rsi 0.00 : 6975b7: 0f 84 de fd ff ff je 69739b 0.00 : 6975bd: 45 31 ed xor %r13d,%r13d 0.00 : 6975c0: eb 15 jmp 6975d7 0.00 : 6975c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : PendingUnlinkEntry *entry = (PendingUnlinkEntry *) lfirst(cell); : : next = lnext(cell); : if (entry->rnode.dbNode == rnode.dbNode) 0.00 : 6975c8: 49 89 f5 mov %rsi,%r13 : } : } : : /* Remove unlink requests */ : prev = NULL; : for (cell = list_head(pendingUnlinks); cell; cell = next) 0.00 : 6975cb: 4d 85 e4 test %r12,%r12 : : next = lnext(cell); : if (entry->rnode.dbNode == rnode.dbNode) : { : pendingUnlinks = list_delete_cell(pendingUnlinks, cell, prev); : pfree(entry); 0.00 : 6975ce: 4c 89 e6 mov %r12,%rsi : } : } : : /* Remove unlink requests */ : prev = NULL; : for (cell = list_head(pendingUnlinks); cell; cell = next) 0.00 : 6975d1: 0f 84 c4 fd ff ff je 69739b : { : PendingUnlinkEntry *entry = (PendingUnlinkEntry *) lfirst(cell); 0.00 : 6975d7: 48 8b 1e mov (%rsi),%rbx : : next = lnext(cell); 0.00 : 6975da: 4c 8b 66 08 mov 0x8(%rsi),%r12 : if (entry->rnode.dbNode == rnode.dbNode) 0.00 : 6975de: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6975e1: 3b 45 b4 cmp -0x4c(%rbp),%eax 0.00 : 6975e4: 75 e2 jne 6975c8 : { : pendingUnlinks = list_delete_cell(pendingUnlinks, cell, prev); 0.00 : 6975e6: 48 8b 3d b3 71 4e 00 mov 0x4e71b3(%rip),%rdi # b7e7a0 0.00 : 6975ed: 4c 89 ea mov %r13,%rdx 0.00 : 6975f0: e8 6b ab f4 ff callq 5e2160 : pfree(entry); 0.00 : 6975f5: 48 89 df mov %rbx,%rdi : PendingUnlinkEntry *entry = (PendingUnlinkEntry *) lfirst(cell); : : next = lnext(cell); : if (entry->rnode.dbNode == rnode.dbNode) : { : pendingUnlinks = list_delete_cell(pendingUnlinks, cell, prev); 0.00 : 6975f8: 48 89 05 a1 71 4e 00 mov %rax,0x4e71a1(%rip) # b7e7a0 : pfree(entry); 0.00 : 6975ff: e8 7c 15 10 00 callq 798b80 0.00 : 697604: eb c5 jmp 6975cb 0.00 : 697606: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 69760d: 00 00 00 : } : } : else : { : /* remove requests for single fork */ : bms_free(entry->requests[forknum]); 0.00 : 697610: 4c 63 e3 movslq %ebx,%r12 0.00 : 697613: 49 8d 5c 24 02 lea 0x2(%r12),%rbx 0.00 : 697618: 48 8b 3c d8 mov (%rax,%rbx,8),%rdi 0.00 : 69761c: e8 8f b7 f4 ff callq 5e2db0 : entry->requests[forknum] = NULL; 0.00 : 697621: 49 c7 44 dd 00 00 00 movq $0x0,0x0(%r13,%rbx,8) 0.00 : 697628: 00 00 : entry->canceled[forknum] = true; 0.00 : 69762a: 43 c6 44 25 30 01 movb $0x1,0x30(%r13,%r12,1) 0.00 : 697630: e9 66 fd ff ff jmpq 69739b Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_nat.ko ---------------------------------------------- 30.00 ??:0 20.00 ??:0 20.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001e70 : ??:0 90.00 : 1e70: 48 83 ec 18 sub $0x18,%rsp 0.00 : 1ea4: 4c 89 mov %esi,%ebx 0.00 : 1ea6: 64 24 10 48 89 1c 24 mov $0x0,%rdi 0.00 : 1ead: 41 89 d4 48 89 callq 1eb2 10.00 : 1eb2: 6c 24 08 48 lea 0x2(%rbx),%rax 0.00 : 1eb6: 8b 97 e0 00 00 cmp %r12d,0x0(%rbp,%rax,8) 0.00 : 1ebb: 00 48 js 1ef0 0.00 : 1ebd: 85 d2 74 57 0f movzwl 0x4(%rbp,%rax,8),%ebx 0.00 : 1ec2: b6 42 11 84 c0 74 4f mov $0x0,%rdi 0.00 : 1ec9: 0f b6 c0 48 89 callq 1ece 0.00 : 1ece: d5 48 mov %ebx,%eax 0.00 : 1ed0: 01 c5 74 44 89 mov 0x8(%rsp),%rbp 0.00 : 1ed5: f3 48 c7 c7 mov (%rsp),%rbx 0.00 : 1ed9: 00 00 00 00 e8 mov 0x10(%rsp),%r12 0.00 : 1ede: 00 00 00 00 add $0x18,%rsp 0.00 : 1ee2: 48 retq 0.00 : 1ee3: 8d 43 02 44 39 nopl 0x0(%rax,%rax,1) 0.00 : 1ee8: 64 c5 xor %ebx,%ebx 0.00 : 1eea: 00 78 jmp 1ece 0.00 : 1eec: 33 0f b7 5c nopl 0x0(%rax) 0.00 : 1ef0: c5 04 48 c7 c7 movzwl 0x6(%rbp,%rax,8),%ebx 0.00 : 1ef5: 00 00 jmp 1ec2 : 1ef7: 00 00 e8 00 00 00 00 nopw 0x0(%rax,%rax,1) : 1efe: 89 d8 : 1f00: 48 8b 6c 24 08 mov $0x1,%eax : 1f05: 48 retq : 1f06: 8b 1c 24 4c 8b 64 24 nopw %cs:0x0(%rax,%rax,1) : 1f0d: 10 48 83 : 1f10: c4 18 repz retq : 1f12: c3 0f 1f 44 00 00 31 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 1f19: db eb e2 0f 1f 40 00 : 1f20: 0f b7 5c c5 06 mov $0x1,%eax : 1f25: eb retq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 28.57 ??:0 28.57 ??:0 14.29 ??:0 14.29 ??:0 14.29 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000004450 : : #endif : } : : static void ixgbe_tx_csum(struct ixgbe_ring *tx_ring, : struct ixgbe_tx_buffer *first) : { ??:0 28.57 : 4450: 48 83 ec 38 sub $0x38,%rsp 0.00 : 4454: 48 89 6c 24 10 mov %rbp,0x10(%rsp) 0.00 : 4459: 4c 89 7c 24 30 mov %r15,0x30(%rsp) 0.00 : 445e: 48 89 f5 mov %rsi,%rbp 0.00 : 4461: 48 89 5c 24 08 mov %rbx,0x8(%rsp) 0.00 : 4466: 4c 89 64 24 18 mov %r12,0x18(%rsp) 0.00 : 446b: 49 89 ff mov %rdi,%r15 0.00 : 446e: 4c 89 6c 24 20 mov %r13,0x20(%rsp) 0.00 : 4473: 4c 89 74 24 28 mov %r14,0x28(%rsp) : struct sk_buff *skb = first->skb; 0.00 : 4478: 48 8b 5e 10 mov 0x10(%rsi),%rbx : u32 vlan_macip_lens = 0; : u32 mss_l4len_idx = 0; : u32 type_tucmd = 0; : : if (skb->ip_summed != CHECKSUM_PARTIAL) { 0.00 : 447c: 0f b6 43 7c movzbl 0x7c(%rbx),%eax 0.00 : 4480: 83 e0 0c and $0xc,%eax 0.00 : 4483: 3c 0c cmp $0xc,%al 0.00 : 4485: 0f 84 8d 00 00 00 je 4518 : if (!(first->tx_flags & IXGBE_TX_FLAGS_HW_VLAN) && 0.00 : 448b: f6 46 2c 82 testb $0x82,0x2c(%rsi) 0.00 : 448f: 74 5f je 44f0 : !(first->tx_flags & IXGBE_TX_FLAGS_TXSW)) : return; 0.00 : 4491: 45 31 ed xor %r13d,%r13d 0.00 : 4494: 31 d2 xor %edx,%edx 0.00 : 4496: 45 31 e4 xor %r12d,%r12d : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; : } : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 4499: 8b b3 c4 00 00 00 mov 0xc4(%rbx),%esi 0.00 : 449f: 8b 45 2c mov 0x2c(%rbp),%eax : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 44a2: 41 89 d0 mov %edx,%r8d : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; : } : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 44a5: 48 03 b3 d8 00 00 00 add 0xd8(%rbx),%rsi : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 44ac: 44 89 e1 mov %r12d,%ecx 0.00 : 44af: 4c 89 ff mov %r15,%rdi : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; : } : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 44b2: 2b b3 e0 00 00 00 sub 0xe0(%rbx),%esi : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, : type_tucmd, mss_l4len_idx); : } 0.00 : 44b8: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 44bd: 31 d2 xor %edx,%edx : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; : } : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 44bf: 66 31 c0 xor %ax,%ax : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, : type_tucmd, mss_l4len_idx); : } 0.00 : 44c2: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 44c7: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 44cc: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 44d1: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; : } : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; 0.00 : 44d6: c1 e6 09 shl $0x9,%esi 0.00 : 44d9: 09 c6 or %eax,%esi : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 44db: 44 09 ee or %r13d,%esi : type_tucmd, mss_l4len_idx); : } 0.00 : 44de: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 44e3: 48 83 c4 38 add $0x38,%rsp : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 44e7: e9 00 00 00 00 jmpq 44ec 0.00 : 44ec: 0f 1f 40 00 nopl 0x0(%rax) : type_tucmd, mss_l4len_idx); : } 0.00 : 44f0: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 44f5: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 44fa: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 44ff: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 4504: 4c 8b 74 24 28 mov 0x28(%rsp),%r14 0.00 : 4509: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 0.00 : 450e: 48 83 c4 38 add $0x38,%rsp 0.00 : 4512: c3 retq 0.00 : 4513: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : if (!(first->tx_flags & IXGBE_TX_FLAGS_HW_VLAN) && : !(first->tx_flags & IXGBE_TX_FLAGS_TXSW)) : return; : } else { : u8 l4_hdr = 0; : switch (first->protocol) { 14.29 : 4518: 0f b7 46 1e movzwl 0x1e(%rsi),%eax 0.00 : 451c: 66 83 f8 08 cmp $0x8,%ax 0.00 : 4520: 0f 84 92 00 00 00 je 45b8 0.00 : 4526: 66 3d 86 dd cmp $0xdd86,%ax 0.00 : 452a: 74 34 je 4560 0.00 : 452c: 0f 1f 40 00 nopl 0x0(%rax) : vlan_macip_lens |= skb_network_header_len(skb); : l4_hdr = ipv6_hdr(skb)->nexthdr; : break; : #endif : default: : if (unlikely(net_ratelimit())) { 0.00 : 4530: e8 00 00 00 00 callq 4535 0.00 : 4535: 85 c0 test %eax,%eax 0.00 : 4537: 0f 85 b4 00 00 00 jne 45f1 : : /* vlan_macip_lens: MACLEN, VLAN tag */ : vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT; : vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK; : : ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, 0, 0.00 : 453d: 45 31 ed xor %r13d,%r13d 0.00 : 4540: 45 31 e4 xor %r12d,%r12d 0.00 : 4543: 45 31 f6 xor %r14d,%r14d : case IPPROTO_UDP: : mss_l4len_idx = sizeof(struct udphdr) << : IXGBE_ADVTXD_L4LEN_SHIFT; : break; : default: : if (unlikely(net_ratelimit())) { 0.00 : 4546: e8 00 00 00 00 callq 454b 0.00 : 454b: 31 d2 xor %edx,%edx 0.00 : 454d: 85 c0 test %eax,%eax 0.00 : 454f: 0f 85 b7 00 00 00 jne 460c : } : break; : } : : /* update TX checksum flag */ : first->tx_flags |= IXGBE_TX_FLAGS_CSUM; 0.00 : 4555: 83 4d 2c 01 orl $0x1,0x2c(%rbp) 14.29 : 4559: e9 3b ff ff ff jmpq 4499 0.00 : 455e: 66 90 xchg %ax,%ax : return skb_transport_header(skb) - skb->data; : } : : static inline u32 skb_network_header_len(const struct sk_buff *skb) : { : return skb->transport_header - skb->network_header; 0.00 : 4560: 8b 83 c4 00 00 00 mov 0xc4(%rbx),%eax : l4_hdr = ip_hdr(skb)->protocol; : break; : #ifdef NETIF_F_IPV6_CSUM : case __constant_htons(ETH_P_IPV6): : vlan_macip_lens |= skb_network_header_len(skb); : l4_hdr = ipv6_hdr(skb)->nexthdr; 0.00 : 4566: 48 8b 8b d8 00 00 00 mov 0xd8(%rbx),%rcx 0.00 : 456d: 45 31 e4 xor %r12d,%r12d 0.00 : 4570: 44 8b ab c0 00 00 00 mov 0xc0(%rbx),%r13d 0.00 : 4577: 44 0f b6 74 01 06 movzbl 0x6(%rcx,%rax,1),%r14d 0.00 : 457d: 41 29 c5 sub %eax,%r13d : first->protocol); : } : break; : } : : switch (l4_hdr) { 0.00 : 4580: 41 80 fe 11 cmp $0x11,%r14b 0.00 : 4584: ba 00 08 00 00 mov $0x800,%edx 0.00 : 4589: 74 ca je 4555 0.00 : 458b: 41 80 fe 84 cmp $0x84,%r14b 0.00 : 458f: 74 4f je 45e0 0.00 : 4591: 41 80 fe 06 cmp $0x6,%r14b 0.00 : 4595: 75 af jne 4546 : case IPPROTO_TCP: : type_tucmd |= IXGBE_ADVTXD_TUCMD_L4T_TCP; : mss_l4len_idx = tcp_hdrlen(skb) << 0.00 : 4597: 8b 83 c0 00 00 00 mov 0xc0(%rbx),%eax : break; : } : : switch (l4_hdr) { : case IPPROTO_TCP: : type_tucmd |= IXGBE_ADVTXD_TUCMD_L4T_TCP; 0.00 : 459d: 41 81 cc 00 08 00 00 or $0x800,%r12d : mss_l4len_idx = tcp_hdrlen(skb) << 0.00 : 45a4: 0f b6 44 01 0c movzbl 0xc(%rcx,%rax,1),%eax 0.00 : 45a9: c0 e8 04 shr $0x4,%al 0.00 : 45ac: 0f b6 d0 movzbl %al,%edx 0.00 : 45af: c1 e2 0a shl $0xa,%edx : IXGBE_ADVTXD_L4LEN_SHIFT; : break; 0.00 : 45b2: eb a1 jmp 4555 0.00 : 45b4: 0f 1f 40 00 nopl 0x0(%rax) 28.57 : 45b8: 8b 83 c4 00 00 00 mov 0xc4(%rbx),%eax 0.00 : 45be: 44 8b ab c0 00 00 00 mov 0xc0(%rbx),%r13d : u8 l4_hdr = 0; : switch (first->protocol) { : case __constant_htons(ETH_P_IP): : vlan_macip_lens |= skb_network_header_len(skb); : type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4; : l4_hdr = ip_hdr(skb)->protocol; 0.00 : 45c5: 41 bc 00 04 00 00 mov $0x400,%r12d 0.00 : 45cb: 48 8b 8b d8 00 00 00 mov 0xd8(%rbx),%rcx 0.00 : 45d2: 41 29 c5 sub %eax,%r13d 0.00 : 45d5: 44 0f b6 74 01 09 movzbl 0x9(%rcx,%rax,1),%r14d : break; 14.29 : 45db: eb a3 jmp 4580 0.00 : 45dd: 0f 1f 00 nopl (%rax) : mss_l4len_idx = tcp_hdrlen(skb) << : IXGBE_ADVTXD_L4LEN_SHIFT; : break; : #ifdef HAVE_SCTP : case IPPROTO_SCTP: : type_tucmd |= IXGBE_ADVTXD_TUCMD_L4T_SCTP; 0.00 : 45e0: 41 81 cc 00 10 00 00 or $0x1000,%r12d 0.00 : 45e7: ba 00 0c 00 00 mov $0xc00,%edx : mss_l4len_idx = sizeof(struct sctphdr) << : IXGBE_ADVTXD_L4LEN_SHIFT; : break; 0.00 : 45ec: e9 64 ff ff ff jmpq 4555 : l4_hdr = ipv6_hdr(skb)->nexthdr; : break; : #endif : default: : if (unlikely(net_ratelimit())) { : dev_warn(tx_ring->dev, 0.00 : 45f1: 0f b7 55 1e movzwl 0x1e(%rbp),%edx 0.00 : 45f5: 49 8b 7f 18 mov 0x18(%r15),%rdi 0.00 : 45f9: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 4600: 31 c0 xor %eax,%eax 0.00 : 4602: e8 00 00 00 00 callq 4607 0.00 : 4607: e9 31 ff ff ff jmpq 453d : mss_l4len_idx = sizeof(struct udphdr) << : IXGBE_ADVTXD_L4LEN_SHIFT; : break; : default: : if (unlikely(net_ratelimit())) { : dev_warn(tx_ring->dev, 0.00 : 460c: 49 8b 7f 18 mov 0x18(%r15),%rdi 0.00 : 4610: 41 0f b6 d6 movzbl %r14b,%edx 0.00 : 4614: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 461b: 31 c0 xor %eax,%eax 0.00 : 461d: e8 00 00 00 00 callq 4622 0.00 : 4622: 31 d2 xor %edx,%edx 0.00 : 4624: e9 2c ff ff ff jmpq 4555 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ---------------------------------------------- 25.00 ??:0 25.00 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000001e0 : 100.00 : 1e0: 55 push %rbp 0.00 : 211: 83 c6 adc $0x48,%al 0.00 : 213: 0c 53 48 add $0x18,%esp 0.00 : 216: 89 d3 48 83 ec mov $0x1,%eax 0.00 : 21b: 18 pop %rbx 0.00 : 21c: 8b pop %rbp 0.00 : 21d: 47 retq 0.00 : 21e: 68 2b xchg %ax,%ax 0.00 : 220: 47 6c 29 f0 83 mov $0x8,%ecx 0.00 : 225: f8 07 7e mov %rsp,%rdx 0.00 : 228: 27 48 63 d6 48 callq 22d 0.00 : 22d: 03 97 test %eax,%eax 0.00 : 22f: e0 00 js 240 0.00 : 231: 00 00 48 mov %rsp,%rdx 0.00 : 234: 85 d2 jmp 203 0.00 : 236: 74 38 8b 02 89 03 8b nopw %cs:0x0(%rax,%rax,1) 0.00 : 23d: 42 04 89 0.00 : 240: 43 14 48 83 add $0x18,%rsp 0.00 : 244: c4 18 xor %eax,%eax 0.00 : 246: b8 pop %rbx 0.00 : 247: 01 pop %rbp 0.00 : 248: 00 retq : 249: 00 00 5b 5d c3 66 90 nopl 0x0(%rax) : 250: b9 08 00 00 lea 0x14(%rsi),%rcx : 254: 00 48 89 mov %rsi,%rdx : 257: e2 e8 xor %eax,%eax : 259: 00 00 00 00 85 c0 78 mov $0x0,%rsi : 260: 0f 48 89 e2 eb jmpq 265 : 265: cd 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) : 26c: 00 00 00 00 : 270: 48 83 push %r12 : 272: c4 18 31 mov %rdx,%r12 : 275: c0 push %rbp : 276: 5b push %rbx : 277: 5d c3 0f 1f sub $0x40,%rsp Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_filter.ko ---------------------------------------------- 40.00 ??:0 40.00 ??:0 10.00 ??:0 10.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/iptable_filter.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000080 : 100.00 : 80: 83 ff 03 cmp $0x3,%edi 0.00 : b3: 49 89 f1 48 89 pushq $0x411d7613 0.00 : b8: d6 74 25 48 85 f6 mov 0xc4(%rcx),%edx 0.00 : be: 48 89 c8 48 89 f2 48 mov 0xd8(%r9),%rax 0.00 : c5: 0f 45 c6 89 movzbl (%rax,%rdx,1),%eax 0.00 : c9: fe 4c 89 and $0xf,%eax 0.00 : cc: cf 48 8b shl $0x2,%eax 0.00 : cf: 80 60 04 cmp $0x13,%eax 0.00 : d2: 00 00 ja 8b 0.00 : d4: 4c 8b 80 48 02 mov $0x1,%eax 0.00 : d9: 00 retq : da: 00 e9 xchg %ax,%ax : dc: Address 0x00000000000000dc is out of bounds. : Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1870 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1897 16.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1881 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000675260 : : * : * Note: caller must have done ResourceOwnerEnlargeBuffers. : */ : static int : SyncOneBuffer(int buf_id, bool skip_recently_used) : { 0.00 : 675260: 55 push %rbp : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 675261: b8 01 00 00 00 mov $0x1,%eax 0.00 : 675266: 48 89 e5 mov %rsp,%rbp 0.00 : 675269: 48 89 5d e8 mov %rbx,-0x18(%rbp) : volatile BufferDesc *bufHdr = &BufferDescriptors[buf_id]; 0.00 : 67526d: 48 63 df movslq %edi,%rbx : * : * Note: caller must have done ResourceOwnerEnlargeBuffers. : */ : static int : SyncOneBuffer(int buf_id, bool skip_recently_used) : { 0.00 : 675270: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 675274: 4c 89 65 f0 mov %r12,-0x10(%rbp) : volatile BufferDesc *bufHdr = &BufferDescriptors[buf_id]; 0.00 : 675278: 48 c1 e3 06 shl $0x6,%rbx : * : * Note: caller must have done ResourceOwnerEnlargeBuffers. : */ : static int : SyncOneBuffer(int buf_id, bool skip_recently_used) : { 0.00 : 67527c: 48 83 ec 20 sub $0x20,%rsp : volatile BufferDesc *bufHdr = &BufferDescriptors[buf_id]; 0.00 : 675280: 48 03 1d 79 a8 54 00 add 0x54a879(%rip),%rbx # bbfb00 : * : * Note: caller must have done ResourceOwnerEnlargeBuffers. : */ : static int : SyncOneBuffer(int buf_id, bool skip_recently_used) : { 0.00 : 675287: 41 89 f5 mov %esi,%r13d : * as we mark pages dirty in access methods *before* logging changes with : * XLogInsert(): if someone marks the buffer dirty just after our check we : * don't worry because our checkpoint.redo points before log record for : * upcoming changes and so we are not required to write such dirty buffer. : */ : LockBufHdr(bufHdr); 0.00 : 67528a: 48 8d 7b 20 lea 0x20(%rbx),%rdi 0.00 : 67528e: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1870 50.00 : 675291: 84 c0 test %al,%al 0.00 : 675293: 75 5b jne 6752f0 : : if (bufHdr->refcount == 0 && bufHdr->usage_count == 0) 0.00 : 675295: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 675298: 85 c0 test %eax,%eax 0.00 : 67529a: 75 0f jne 6752ab 0.00 : 67529c: 0f b7 43 16 movzwl 0x16(%rbx),%eax : result |= BUF_REUSABLE; : else if (skip_recently_used) : { : /* Caller told us not to write recently-used buffers */ : UnlockBufHdr(bufHdr); 0.00 : 6752a0: 41 bc 02 00 00 00 mov $0x2,%r12d : * don't worry because our checkpoint.redo points before log record for : * upcoming changes and so we are not required to write such dirty buffer. : */ : LockBufHdr(bufHdr); : : if (bufHdr->refcount == 0 && bufHdr->usage_count == 0) 0.00 : 6752a6: 66 85 c0 test %ax,%ax 0.00 : 6752a9: 74 08 je 6752b3 : result |= BUF_REUSABLE; : else if (skip_recently_used) 0.00 : 6752ab: 45 31 e4 xor %r12d,%r12d 0.00 : 6752ae: 45 84 ed test %r13b,%r13b 0.00 : 6752b1: 75 2d jne 6752e0 : /* Caller told us not to write recently-used buffers */ : UnlockBufHdr(bufHdr); : return result; : } : : if (!(bufHdr->flags & BM_VALID) || !(bufHdr->flags & BM_DIRTY)) 0.00 : 6752b3: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6752b7: a8 02 test $0x2,%al 0.00 : 6752b9: 74 08 je 6752c3 0.00 : 6752bb: 0f b7 43 14 movzwl 0x14(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1881 16.67 : 6752bf: a8 01 test $0x1,%al 0.00 : 6752c1: 75 45 jne 675308 : { : /* It's clean, so nothing to do */ : UnlockBufHdr(bufHdr); 0.00 : 6752c3: c6 43 20 00 movb $0x0,0x20(%rbx) : : LWLockRelease(bufHdr->content_lock); : UnpinBuffer(bufHdr, true); : : return result | BUF_WRITTEN; : } 0.00 : 6752c7: 44 89 e0 mov %r12d,%eax 0.00 : 6752ca: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 6752ce: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 6752d2: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 6752d6: c9 leaveq 0.00 : 6752d7: c3 retq 0.00 : 6752d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6752df: 00 : if (bufHdr->refcount == 0 && bufHdr->usage_count == 0) : result |= BUF_REUSABLE; : else if (skip_recently_used) : { : /* Caller told us not to write recently-used buffers */ : UnlockBufHdr(bufHdr); 0.00 : 6752e0: 45 31 e4 xor %r12d,%r12d 0.00 : 6752e3: c6 43 20 00 movb $0x0,0x20(%rbx) : : LWLockRelease(bufHdr->content_lock); : UnpinBuffer(bufHdr, true); : : return result | BUF_WRITTEN; : } 0.00 : 6752e7: eb de jmp 6752c7 0.00 : 6752e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * as we mark pages dirty in access methods *before* logging changes with : * XLogInsert(): if someone marks the buffer dirty just after our check we : * don't worry because our checkpoint.redo points before log record for : * upcoming changes and so we are not required to write such dirty buffer. : */ : LockBufHdr(bufHdr); 0.00 : 6752f0: ba 4e 07 00 00 mov $0x74e,%edx 0.00 : 6752f5: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 6752fa: e8 41 ad 01 00 callq 690040 0.00 : 6752ff: eb 94 jmp 675295 0.00 : 675301: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * Pin it, share-lock it, write it. (FlushBuffer will do nothing if the : * buffer is clean by the time we've locked it.) : */ : PinBuffer_Locked(bufHdr); 0.00 : 675308: 48 89 df mov %rbx,%rdi : FlushBuffer(bufHdr, NULL); : : LWLockRelease(bufHdr->content_lock); : UnpinBuffer(bufHdr, true); : : return result | BUF_WRITTEN; 0.00 : 67530b: 41 83 cc 01 or $0x1,%r12d : : /* : * Pin it, share-lock it, write it. (FlushBuffer will do nothing if the : * buffer is clean by the time we've locked it.) : */ : PinBuffer_Locked(bufHdr); 0.00 : 67530f: e8 bc f8 ff ff callq 674bd0 : LWLockAcquire(bufHdr->content_lock, LW_SHARED); 0.00 : 675314: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 675318: be 01 00 00 00 mov $0x1,%esi 0.00 : 67531d: e8 ce a7 01 00 callq 68faf0 : : FlushBuffer(bufHdr, NULL); 0.00 : 675322: 31 f6 xor %esi,%esi 0.00 : 675324: 48 89 df mov %rbx,%rdi 0.00 : 675327: e8 24 fc ff ff callq 674f50 : : LWLockRelease(bufHdr->content_lock); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1897 33.33 : 67532c: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 675330: e8 6b a0 01 00 callq 68f3a0 : UnpinBuffer(bufHdr, true); 0.00 : 675335: be 01 00 00 00 mov $0x1,%esi 0.00 : 67533a: 48 89 df mov %rbx,%rdi 0.00 : 67533d: e8 ee f9 ff ff callq 674d30 : : return result | BUF_WRITTEN; : } 0.00 : 675342: eb 83 jmp 6752c7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:333 16.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:337 16.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:337 16.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:333 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000687b90 : : /* : * UnlockRelationForExtension : */ : void : UnlockRelationForExtension(Relation relation, LOCKMODE lockmode) : { 0.00 : 687b90: 55 push %rbp : : SET_LOCKTAG_RELATION_EXTEND(tag, : relation->rd_lockInfo.lockRelId.dbId, : relation->rd_lockInfo.lockRelId.relId); : : LockRelease(&tag, lockmode, false); 16.67 : 687b91: 31 d2 xor %edx,%edx : /* : * UnlockRelationForExtension : */ : void : UnlockRelationForExtension(Relation relation, LOCKMODE lockmode) : { 0.00 : 687b93: 48 89 e5 mov %rsp,%rbp 0.00 : 687b96: 48 83 ec 10 sub $0x10,%rsp : LOCKTAG tag; : : SET_LOCKTAG_RELATION_EXTEND(tag, 0.00 : 687b9a: 8b 47 48 mov 0x48(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:333 50.00 : 687b9d: 89 45 f0 mov %eax,-0x10(%rbp) 0.00 : 687ba0: 8b 47 44 mov 0x44(%rdi),%eax : relation->rd_lockInfo.lockRelId.dbId, : relation->rd_lockInfo.lockRelId.relId); : : LockRelease(&tag, lockmode, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:337 16.67 : 687ba3: 48 8d 7d f0 lea -0x10(%rbp),%rdi : void : UnlockRelationForExtension(Relation relation, LOCKMODE lockmode) : { : LOCKTAG tag; : : SET_LOCKTAG_RELATION_EXTEND(tag, 0.00 : 687ba7: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%rbp) 0.00 : 687bae: 66 c7 45 fc 00 00 movw $0x0,-0x4(%rbp) 0.00 : 687bb4: c6 45 fe 01 movb $0x1,-0x2(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:333 16.67 : 687bb8: c6 45 ff 01 movb $0x1,-0x1(%rbp) 0.00 : 687bbc: 89 45 f4 mov %eax,-0xc(%rbp) : relation->rd_lockInfo.lockRelId.dbId, : relation->rd_lockInfo.lockRelId.relId); : : LockRelease(&tag, lockmode, false); 0.00 : 687bbf: e8 2c 19 00 00 callq 6894f0 : } 0.00 : 687bc4: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oracle_compat.c:521 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oracle_compat.c:374 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oracle_compat.c:378 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oracle_compat.c:504 16.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oracle_compat.c:508 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000070f2e0 : : */ : static text * : dotrim(const char *string, int stringlen, : const char *set, int setlen, : bool doltrim, bool dortrim) : { 0.00 : 70f2e0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oracle_compat.c:374 16.67 : 70f2e1: 48 89 e5 mov %rsp,%rbp 0.00 : 70f2e4: 41 57 push %r15 0.00 : 70f2e6: 41 56 push %r14 0.00 : 70f2e8: 41 89 ce mov %ecx,%r14d 0.00 : 70f2eb: 41 55 push %r13 0.00 : 70f2ed: 41 54 push %r12 0.00 : 70f2ef: 53 push %rbx 0.00 : 70f2f0: 48 83 ec 58 sub $0x58,%rsp : int i; : : /* Nothing to do if either string or set is empty */ : if (stringlen > 0 && setlen > 0) 0.00 : 70f2f4: 85 f6 test %esi,%esi : */ : static text * : dotrim(const char *string, int stringlen, : const char *set, int setlen, : bool doltrim, bool dortrim) : { 0.00 : 70f2f6: 48 89 7d b0 mov %rdi,-0x50(%rbp) 0.00 : 70f2fa: 89 75 ac mov %esi,-0x54(%rbp) 0.00 : 70f2fd: 48 89 55 a0 mov %rdx,-0x60(%rbp) 0.00 : 70f301: 44 88 45 9f mov %r8b,-0x61(%rbp) 0.00 : 70f305: 44 88 4d 9e mov %r9b,-0x62(%rbp) : int i; : : /* Nothing to do if either string or set is empty */ : if (stringlen > 0 && setlen > 0) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oracle_compat.c:378 16.67 : 70f309: 0f 8e 31 02 00 00 jle 70f540 0.00 : 70f30f: 85 c9 test %ecx,%ecx 0.00 : 70f311: 0f 8e 29 02 00 00 jle 70f540 : { : if (pg_database_encoding_max_length() > 1) 0.00 : 70f317: e8 74 c5 07 00 callq 78b890 0.00 : 70f31c: 83 e8 01 sub $0x1,%eax 0.00 : 70f31f: 90 nop 0.00 : 70f320: 0f 8e 34 02 00 00 jle 70f55a : int len; : int mblen; : const char *str_pos; : int str_len; : : stringchars = (const char **) palloc(stringlen * sizeof(char *)); 0.00 : 70f326: 48 63 5d ac movslq -0x54(%rbp),%rbx 0.00 : 70f32a: 48 8d 3c dd 00 00 00 lea 0x0(,%rbx,8),%rdi 0.00 : 70f331: 00 : stringmblen = (int *) palloc(stringlen * sizeof(int)); 0.00 : 70f332: 48 c1 e3 02 shl $0x2,%rbx : int len; : int mblen; : const char *str_pos; : int str_len; : : stringchars = (const char **) palloc(stringlen * sizeof(char *)); 0.00 : 70f336: e8 15 9a 08 00 callq 798d50 : stringmblen = (int *) palloc(stringlen * sizeof(int)); 0.00 : 70f33b: 48 89 df mov %rbx,%rdi : int len; : int mblen; : const char *str_pos; : int str_len; : : stringchars = (const char **) palloc(stringlen * sizeof(char *)); 0.00 : 70f33e: 48 89 45 c0 mov %rax,-0x40(%rbp) : stringmblen = (int *) palloc(stringlen * sizeof(int)); 0.00 : 70f342: e8 09 9a 08 00 callq 798d50 0.00 : 70f347: 4c 8b 65 b0 mov -0x50(%rbp),%r12 0.00 : 70f34b: 44 8b 6d ac mov -0x54(%rbp),%r13d 0.00 : 70f34f: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 70f353: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%rbp) 0.00 : 70f35a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : stringnchars = 0; : p = string; : len = stringlen; : while (len > 0) : { : stringchars[stringnchars] = p; 0.00 : 70f360: 48 63 5d d4 movslq -0x2c(%rbp),%rbx 0.00 : 70f364: 48 8b 45 c0 mov -0x40(%rbp),%rax : stringmblen[stringnchars] = mblen = pg_mblen(p); 0.00 : 70f368: 4c 89 e7 mov %r12,%rdi : stringnchars = 0; : p = string; : len = stringlen; : while (len > 0) : { : stringchars[stringnchars] = p; 0.00 : 70f36b: 4c 89 24 d8 mov %r12,(%rax,%rbx,8) : stringmblen[stringnchars] = mblen = pg_mblen(p); 0.00 : 70f36f: e8 ec 94 07 00 callq 788860 0.00 : 70f374: 48 8b 55 c8 mov -0x38(%rbp),%rdx : stringnchars++; : p += mblen; : len -= mblen; 0.00 : 70f378: 41 29 c5 sub %eax,%r13d : p = string; : len = stringlen; : while (len > 0) : { : stringchars[stringnchars] = p; : stringmblen[stringnchars] = mblen = pg_mblen(p); 0.00 : 70f37b: 89 04 9a mov %eax,(%rdx,%rbx,4) : stringnchars++; : p += mblen; 0.00 : 70f37e: 48 63 d0 movslq %eax,%rdx : len = stringlen; : while (len > 0) : { : stringchars[stringnchars] = p; : stringmblen[stringnchars] = mblen = pg_mblen(p); : stringnchars++; 0.00 : 70f381: 83 45 d4 01 addl $0x1,-0x2c(%rbp) : p += mblen; 0.00 : 70f385: 49 01 d4 add %rdx,%r12 : stringchars = (const char **) palloc(stringlen * sizeof(char *)); : stringmblen = (int *) palloc(stringlen * sizeof(int)); : stringnchars = 0; : p = string; : len = stringlen; : while (len > 0) 0.00 : 70f388: 45 85 ed test %r13d,%r13d 0.00 : 70f38b: 7f d3 jg 70f360 : stringnchars++; : p += mblen; : len -= mblen; : } : : setchars = (const char **) palloc(setlen * sizeof(char *)); 0.00 : 70f38d: 49 63 de movslq %r14d,%rbx : setmblen = (int *) palloc(setlen * sizeof(int)); 0.00 : 70f390: 45 31 e4 xor %r12d,%r12d : stringnchars++; : p += mblen; : len -= mblen; : } : : setchars = (const char **) palloc(setlen * sizeof(char *)); 0.00 : 70f393: 48 8d 3c dd 00 00 00 lea 0x0(,%rbx,8),%rdi 0.00 : 70f39a: 00 : setmblen = (int *) palloc(setlen * sizeof(int)); 0.00 : 70f39b: 48 c1 e3 02 shl $0x2,%rbx : stringnchars++; : p += mblen; : len -= mblen; : } : : setchars = (const char **) palloc(setlen * sizeof(char *)); 0.00 : 70f39f: e8 ac 99 08 00 callq 798d50 : setmblen = (int *) palloc(setlen * sizeof(int)); 0.00 : 70f3a4: 48 89 df mov %rbx,%rdi : stringnchars++; : p += mblen; : len -= mblen; : } : : setchars = (const char **) palloc(setlen * sizeof(char *)); 0.00 : 70f3a7: 48 89 45 b8 mov %rax,-0x48(%rbp) : setmblen = (int *) palloc(setlen * sizeof(int)); 0.00 : 70f3ab: e8 a0 99 08 00 callq 798d50 0.00 : 70f3b0: 4c 8b 6d a0 mov -0x60(%rbp),%r13 0.00 : 70f3b4: 49 89 c7 mov %rax,%r15 0.00 : 70f3b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 70f3be: 00 00 : setnchars = 0; : p = set; : len = setlen; : while (len > 0) : { : setchars[setnchars] = p; 0.00 : 70f3c0: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 70f3c4: 49 63 dc movslq %r12d,%rbx : setmblen[setnchars] = mblen = pg_mblen(p); 0.00 : 70f3c7: 4c 89 ef mov %r13,%rdi : setnchars++; 0.00 : 70f3ca: 41 83 c4 01 add $0x1,%r12d : setnchars = 0; : p = set; : len = setlen; : while (len > 0) : { : setchars[setnchars] = p; 0.00 : 70f3ce: 4c 89 2c d9 mov %r13,(%rcx,%rbx,8) : setmblen[setnchars] = mblen = pg_mblen(p); 0.00 : 70f3d2: e8 89 94 07 00 callq 788860 : setnchars++; : p += mblen; 0.00 : 70f3d7: 48 63 d0 movslq %eax,%rdx : len -= mblen; 0.00 : 70f3da: 41 29 c6 sub %eax,%r14d : p = set; : len = setlen; : while (len > 0) : { : setchars[setnchars] = p; : setmblen[setnchars] = mblen = pg_mblen(p); 0.00 : 70f3dd: 41 89 04 9f mov %eax,(%r15,%rbx,4) : setnchars++; : p += mblen; 0.00 : 70f3e1: 49 01 d5 add %rdx,%r13 : setchars = (const char **) palloc(setlen * sizeof(char *)); : setmblen = (int *) palloc(setlen * sizeof(int)); : setnchars = 0; : p = set; : len = setlen; : while (len > 0) 0.00 : 70f3e4: 45 85 f6 test %r14d,%r14d 0.00 : 70f3e7: 7f d7 jg 70f3c0 : } : : resultndx = 0; /* index in stringchars[] */ : resultnchars = stringnchars; : : if (doltrim) 0.00 : 70f3e9: 80 7d 9f 00 cmpb $0x0,-0x61(%rbp) 0.00 : 70f3ed: 0f 84 fb 01 00 00 je 70f5ee : { : while (resultnchars > 0) 0.00 : 70f3f3: 44 8b 4d d4 mov -0x2c(%rbp),%r9d 0.00 : 70f3f7: 45 85 c9 test %r9d,%r9d 0.00 : 70f3fa: 0f 8e ee 01 00 00 jle 70f5ee 0.00 : 70f400: 44 8b 55 d4 mov -0x2c(%rbp),%r10d 0.00 : 70f404: 31 db xor %ebx,%ebx 0.00 : 70f406: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 70f40d: 00 00 00 : { : str_pos = stringchars[resultndx]; 0.00 : 70f410: 48 8b 75 c0 mov -0x40(%rbp),%rsi : str_len = stringmblen[resultndx]; 0.00 : 70f414: 48 8b 55 c8 mov -0x38(%rbp),%rdx : : if (doltrim) : { : while (resultnchars > 0) : { : str_pos = stringchars[resultndx]; 0.00 : 70f418: 48 63 c3 movslq %ebx,%rax : str_len = stringmblen[resultndx]; : for (i = 0; i < setnchars; i++) 0.00 : 70f41b: 45 85 e4 test %r12d,%r12d : : if (doltrim) : { : while (resultnchars > 0) : { : str_pos = stringchars[resultndx]; 0.00 : 70f41e: 4c 8b 1c c6 mov (%rsi,%rax,8),%r11 : str_len = stringmblen[resultndx]; 0.00 : 70f422: 44 8b 04 82 mov (%rdx,%rax,4),%r8d : for (i = 0; i < setnchars; i++) 0.00 : 70f426: 7e 60 jle 70f488 0.00 : 70f428: c7 45 8c 00 00 00 00 movl $0x0,-0x74(%rbp) 0.00 : 70f42f: 45 31 f6 xor %r14d,%r14d : { : if (str_len == setmblen[i] && 0.00 : 70f432: 4d 63 c8 movslq %r8d,%r9 0.00 : 70f435: eb 17 jmp 70f44e 0.00 : 70f437: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 70f43e: 00 00 : { : while (resultnchars > 0) : { : str_pos = stringchars[resultndx]; : str_len = stringmblen[resultndx]; : for (i = 0; i < setnchars; i++) 0.00 : 70f440: 83 45 8c 01 addl $0x1,-0x74(%rbp) 0.00 : 70f444: 49 83 c6 04 add $0x4,%r14 0.00 : 70f448: 44 39 65 8c cmp %r12d,-0x74(%rbp) 0.00 : 70f44c: 7d 3a jge 70f488 : { : if (str_len == setmblen[i] && 0.00 : 70f44e: 47 39 04 37 cmp %r8d,(%r15,%r14,1) 0.00 : 70f452: 75 ec jne 70f440 0.00 : 70f454: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : 70f458: 4d 39 c9 cmp %r9,%r9 0.00 : 70f45b: 4c 89 de mov %r11,%rsi 0.00 : 70f45e: 4a 8b 3c 71 mov (%rcx,%r14,2),%rdi 0.00 : 70f462: 4c 89 c9 mov %r9,%rcx 0.00 : 70f465: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 70f467: 75 d7 jne 70f440 : memcmp(str_pos, setchars[i], str_len) == 0) : break; : } : if (i >= setnchars) 0.00 : 70f469: 44 39 65 8c cmp %r12d,-0x74(%rbp) 0.00 : 70f46d: 7d 19 jge 70f488 : break; /* no match here */ : string += str_len; : stringlen -= str_len; : resultndx++; : resultnchars--; 0.00 : 70f46f: 41 83 ea 01 sub $0x1,%r10d : memcmp(str_pos, setchars[i], str_len) == 0) : break; : } : if (i >= setnchars) : break; /* no match here */ : string += str_len; 0.00 : 70f473: 4c 01 4d b0 add %r9,-0x50(%rbp) : stringlen -= str_len; 0.00 : 70f477: 44 29 45 ac sub %r8d,-0x54(%rbp) : resultndx++; 0.00 : 70f47b: 83 c3 01 add $0x1,%ebx : resultndx = 0; /* index in stringchars[] */ : resultnchars = stringnchars; : : if (doltrim) : { : while (resultnchars > 0) 0.00 : 70f47e: 45 85 d2 test %r10d,%r10d 0.00 : 70f481: 7f 8d jg 70f410 0.00 : 70f483: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : resultndx++; : resultnchars--; : } : } : : if (dortrim) 0.00 : 70f488: 80 7d 9e 00 cmpb $0x0,-0x62(%rbp) 0.00 : 70f48c: 0f 84 86 00 00 00 je 70f518 : { : while (resultnchars > 0) 0.00 : 70f492: 45 85 d2 test %r10d,%r10d 0.00 : 70f495: 0f 8e 7d 00 00 00 jle 70f518 0.00 : 70f49b: 41 8d 1c 1a lea (%r10,%rbx,1),%ebx 0.00 : 70f49f: 90 nop : { : str_pos = stringchars[resultndx + resultnchars - 1]; 0.00 : 70f4a0: 48 8b 55 c0 mov -0x40(%rbp),%rdx : str_len = stringmblen[resultndx + resultnchars - 1]; 0.00 : 70f4a4: 48 8b 4d c8 mov -0x38(%rbp),%rcx : : if (dortrim) : { : while (resultnchars > 0) : { : str_pos = stringchars[resultndx + resultnchars - 1]; 0.00 : 70f4a8: 48 63 c3 movslq %ebx,%rax 0.00 : 70f4ab: 48 83 e8 01 sub $0x1,%rax : str_len = stringmblen[resultndx + resultnchars - 1]; : for (i = 0; i < setnchars; i++) 0.00 : 70f4af: 45 85 e4 test %r12d,%r12d : : if (dortrim) : { : while (resultnchars > 0) : { : str_pos = stringchars[resultndx + resultnchars - 1]; 0.00 : 70f4b2: 4c 8b 1c c2 mov (%rdx,%rax,8),%r11 : str_len = stringmblen[resultndx + resultnchars - 1]; 0.00 : 70f4b6: 44 8b 04 81 mov (%rcx,%rax,4),%r8d : for (i = 0; i < setnchars; i++) 0.00 : 70f4ba: 7e 5c jle 70f518 0.00 : 70f4bc: 45 31 f6 xor %r14d,%r14d 0.00 : 70f4bf: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : 70f4c6: 00 : { : if (str_len == setmblen[i] && 0.00 : 70f4c7: 4d 63 c8 movslq %r8d,%r9 0.00 : 70f4ca: eb 12 jmp 70f4de 0.00 : 70f4cc: 0f 1f 40 00 nopl 0x0(%rax) : { : while (resultnchars > 0) : { : str_pos = stringchars[resultndx + resultnchars - 1]; : str_len = stringmblen[resultndx + resultnchars - 1]; : for (i = 0; i < setnchars; i++) 0.00 : 70f4d0: 41 83 c6 01 add $0x1,%r14d 0.00 : 70f4d4: 48 83 45 90 04 addq $0x4,-0x70(%rbp) 0.00 : 70f4d9: 45 39 e6 cmp %r12d,%r14d 0.00 : 70f4dc: 7d 3a jge 70f518 : { : if (str_len == setmblen[i] && 0.00 : 70f4de: 48 8b 75 90 mov -0x70(%rbp),%rsi 0.00 : 70f4e2: 45 39 04 37 cmp %r8d,(%r15,%rsi,1) 0.00 : 70f4e6: 75 e8 jne 70f4d0 0.00 : 70f4e8: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 70f4ec: 4d 39 c9 cmp %r9,%r9 0.00 : 70f4ef: 4c 89 c9 mov %r9,%rcx 0.00 : 70f4f2: 48 8b 3c 70 mov (%rax,%rsi,2),%rdi 0.00 : 70f4f6: 4c 89 de mov %r11,%rsi 0.00 : 70f4f9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 70f4fb: 75 d3 jne 70f4d0 : memcmp(str_pos, setchars[i], str_len) == 0) : break; : } : if (i >= setnchars) 0.00 : 70f4fd: 45 39 e6 cmp %r12d,%r14d 0.00 : 70f500: 7d 16 jge 70f518 : break; /* no match here */ : stringlen -= str_len; : resultnchars--; 0.00 : 70f502: 41 83 ea 01 sub $0x1,%r10d : memcmp(str_pos, setchars[i], str_len) == 0) : break; : } : if (i >= setnchars) : break; /* no match here */ : stringlen -= str_len; 0.00 : 70f506: 44 29 45 ac sub %r8d,-0x54(%rbp) : resultnchars--; 0.00 : 70f50a: 83 eb 01 sub $0x1,%ebx : } : } : : if (dortrim) : { : while (resultnchars > 0) 0.00 : 70f50d: 45 85 d2 test %r10d,%r10d 0.00 : 70f510: 7f 8e jg 70f4a0 0.00 : 70f512: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : stringlen -= str_len; : resultnchars--; : } : } : : pfree(stringchars); 0.00 : 70f518: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 70f51c: e8 5f 96 08 00 callq 798b80 : pfree(stringmblen); 0.00 : 70f521: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 70f525: e8 56 96 08 00 callq 798b80 : pfree(setchars); 0.00 : 70f52a: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 70f52e: e8 4d 96 08 00 callq 798b80 : pfree(setmblen); 0.00 : 70f533: 4c 89 ff mov %r15,%rdi 0.00 : 70f536: e8 45 96 08 00 callq 798b80 0.00 : 70f53b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : } : } : : /* Return selected portion of string */ : return cstring_to_text_with_len(string, stringlen); 0.00 : 70f540: 8b 75 ac mov -0x54(%rbp),%esi 0.00 : 70f543: 48 8b 7d b0 mov -0x50(%rbp),%rdi : } 0.00 : 70f547: 48 83 c4 58 add $0x58,%rsp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oracle_compat.c:521 33.33 : 70f54b: 5b pop %rbx 0.00 : 70f54c: 41 5c pop %r12 0.00 : 70f54e: 41 5d pop %r13 0.00 : 70f550: 41 5e pop %r14 0.00 : 70f552: 41 5f pop %r15 0.00 : 70f554: c9 leaveq : } : } : } : : /* Return selected portion of string */ : return cstring_to_text_with_len(string, stringlen); 0.00 : 70f555: e9 46 ad 04 00 jmpq 75a2a0 : else : { : /* : * In the single-byte-encoding case, we don't need such overhead. : */ : if (doltrim) 0.00 : 70f55a: 80 7d 9f 00 cmpb $0x0,-0x61(%rbp) 0.00 : 70f55e: 75 64 jne 70f5c4 : string++; : stringlen--; : } : } : : if (dortrim) 0.00 : 70f560: 80 7d 9e 00 cmpb $0x0,-0x62(%rbp) 0.00 : 70f564: 74 da je 70f540 0.00 : 70f566: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 70f56d: 00 00 00 : { : while (stringlen > 0) 0.00 : 70f570: 8b 7d ac mov -0x54(%rbp),%edi 0.00 : 70f573: 85 ff test %edi,%edi 0.00 : 70f575: 7e c9 jle 70f540 : { : char str_ch = string[stringlen - 1]; 0.00 : 70f577: 48 63 45 ac movslq -0x54(%rbp),%rax 0.00 : 70f57b: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 70f57f: 0f b6 4c 02 ff movzbl -0x1(%rdx,%rax,1),%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oracle_compat.c:504 16.67 : 70f584: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 70f588: 31 c0 xor %eax,%eax : : for (i = 0; i < setlen; i++) : { : if (str_ch == set[i]) 0.00 : 70f58a: 38 0a cmp %cl,(%rdx) 0.00 : 70f58c: 74 12 je 70f5a0 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/oracle_compat.c:508 16.67 : 70f58e: 66 90 xchg %ax,%ax : { : while (stringlen > 0) : { : char str_ch = string[stringlen - 1]; : : for (i = 0; i < setlen; i++) 0.00 : 70f590: 83 c0 01 add $0x1,%eax 0.00 : 70f593: 48 83 c2 01 add $0x1,%rdx 0.00 : 70f597: 41 39 c6 cmp %eax,%r14d 0.00 : 70f59a: 7e a4 jle 70f540 : { : if (str_ch == set[i]) 0.00 : 70f59c: 38 0a cmp %cl,(%rdx) 0.00 : 70f59e: 75 f0 jne 70f590 : break; : } : if (i >= setlen) 0.00 : 70f5a0: 41 39 c6 cmp %eax,%r14d 0.00 : 70f5a3: 7e 9b jle 70f540 : break; /* no match here */ : stringlen--; 0.00 : 70f5a5: 83 6d ac 01 subl $0x1,-0x54(%rbp) 0.00 : 70f5a9: eb c5 jmp 70f570 : for (i = 0; i < setlen; i++) : { : if (str_ch == set[i]) : break; : } : if (i >= setlen) 0.00 : 70f5ab: 41 39 c6 cmp %eax,%r14d 0.00 : 70f5ae: 66 90 xchg %ax,%ax 0.00 : 70f5b0: 7e ae jle 70f560 : break; /* no match here */ : string++; : stringlen--; 0.00 : 70f5b2: 83 6d ac 01 subl $0x1,-0x54(%rbp) : if (str_ch == set[i]) : break; : } : if (i >= setlen) : break; /* no match here */ : string++; 0.00 : 70f5b6: 48 83 45 b0 01 addq $0x1,-0x50(%rbp) : /* : * In the single-byte-encoding case, we don't need such overhead. : */ : if (doltrim) : { : while (stringlen > 0) 0.00 : 70f5bb: 44 8b 45 ac mov -0x54(%rbp),%r8d 0.00 : 70f5bf: 45 85 c0 test %r8d,%r8d 0.00 : 70f5c2: 7e 9c jle 70f560 : { : char str_ch = *string; 0.00 : 70f5c4: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 70f5c8: 48 8b 55 a0 mov -0x60(%rbp),%rdx 0.00 : 70f5cc: 0f b6 08 movzbl (%rax),%ecx 0.00 : 70f5cf: 31 c0 xor %eax,%eax 0.00 : 70f5d1: eb 15 jmp 70f5e8 0.00 : 70f5d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : for (i = 0; i < setlen; i++) 0.00 : 70f5d8: 83 c0 01 add $0x1,%eax 0.00 : 70f5db: 48 83 c2 01 add $0x1,%rdx 0.00 : 70f5df: 41 39 c6 cmp %eax,%r14d 0.00 : 70f5e2: 0f 8e 78 ff ff ff jle 70f560 : { : if (str_ch == set[i]) 0.00 : 70f5e8: 38 0a cmp %cl,(%rdx) 0.00 : 70f5ea: 75 ec jne 70f5d8 0.00 : 70f5ec: eb bd jmp 70f5ab : resultndx = 0; /* index in stringchars[] */ : resultnchars = stringnchars; : : if (doltrim) : { : while (resultnchars > 0) 0.00 : 70f5ee: 44 8b 55 d4 mov -0x2c(%rbp),%r10d 0.00 : 70f5f2: 31 db xor %ebx,%ebx 0.00 : 70f5f4: e9 8f fe ff ff jmpq 70f488 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 33.33 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000dc950 : ??:0 33.33 : dc950: b8 41 00 00 00 mov $0x41,%eax 0.00 : dc955: 0f 05 syscall 50.00 : dc957: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 0.00 : dc95d: 73 01 jae dc960 16.67 : dc95f: c3 retq 0.00 : dc960: 48 8b 0d d1 54 29 00 mov 0x2954d1(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : dc967: 31 d2 xor %edx,%edx 0.00 : dc969: 48 29 c2 sub %rax,%rdx 0.00 : dc96c: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : dc96f: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : dc973: eb ea jmp dc95f Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko ---------------------------------------------- 50.00 ??:0 25.00 ??:0 12.50 ??:0 12.50 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000010 : ??:0 12.50 : 10: 55 push %rbp 50.00 : 41: 48 89 f5 53 48 83 je 105 0.00 : 47: ec 08 48 8b 46 18 48 mov 0x88(%rbp),%rax 0.00 : 4e: 85 c0 74 test %rax,%rax 0.00 : 51: 0b 66 83 78 0c 02 je 118 0.00 : 57: 0f 84 cb 00 00 00 8b mov 0xe0(%rax),%rdx 0.00 : 5e: 95 c4 00 test %rdx,%rdx 0.00 : 61: 00 00 48 8b 85 d8 je 118 0.00 : 67: 00 00 00 66 movzbl 0x14(%rdx),%eax 0.00 : 6b: f7 44 test %al,%al 0.00 : 6d: 10 06 3f ff 0f 84 je 118 0.00 : 73: be 00 00 movzbl %al,%eax 0.00 : 76: 00 48 8b add %rdx,%rax 0.00 : 79: 85 88 00 00 00 48 je 118 0.00 : 7f: 85 c0 0f movzwl (%rax),%eax 0.00 : 82: 84 c1 00 00 00 48 8b mov 0x98(%rbp),%rdx 0.00 : 89: 90 e0 00 test %rdx,%rdx 0.00 : 8c: 00 00 je 9a 0.00 : 8e: 48 85 d2 0f testb $0x8,0x18(%rdx) 0.00 : 92: 84 b1 00 00 00 0f lea 0x20002(%rax),%ebx 0.00 : 98: b6 42 jne a7 0.00 : 9a: 14 84 c0 lea 0x2(%rax),%ebx 0.00 : 9d: 0f 84 a5 00 00 add $0x10002,%eax 0.00 : a2: 00 0f test %edi,%edi 0.00 : a4: b6 c0 48 cmovne %eax,%ebx 0.00 : a7: 01 d0 0f 84 99 00 00 mov 0x80(%rbp),%rax 0.00 : ae: 00 0f b7 test %rax,%rax 0.00 : b1: 00 48 je b8 0.00 : b3: 8b 95 98 mov %rbp,%rdi 0.00 : b6: 00 00 callq *%rax 0.00 : b8: 00 48 85 d2 74 0c f6 movq $0x0,0x80(%rbp) 0.00 : bf: 42 18 08 8d 0.00 : c3: 98 02 00 02 00 75 0d movq $0x0,0x18(%rbp) 0.00 : ca: 8d 0.00 : cb: 58 02 05 02 00 callq d0 0.00 : d0: 01 00 mov %ebx,%esi 0.00 : d2: 85 ff 0f mov %rbp,%rdi 0.00 : d5: 45 d8 48 8b 85 callq da 0.00 : da: 80 00 mov %eax,%ebx 0.00 : dc: 00 00 48 85 c0 callq e1 0.00 : e1: 74 05 test %ebx,%ebx 0.00 : e3: 48 89 ef ff d0 mov $0x2,%eax 0.00 : e8: 48 c7 je 120 0.00 : ea: 85 80 00 00 add $0x8,%rsp 0.00 : ee: 00 pop %rbx 0.00 : ef: 00 pop %rbp 0.00 : f0: 00 retq 0.00 : f1: 00 00 48 c7 45 18 00 nopl 0x0(%rax) 12.50 : f8: 00 00 00 e8 00 00 00 cmpb $0x0,0x29c(%rax) 0.00 : ff: 00 89 de 48 89 ef jns 2d 0.00 : 105: e8 00 00 00 add $0x8,%rsp 0.00 : 109: 00 89 c3 e8 00 mov $0x1,%eax 0.00 : 10e: 00 pop %rbx 25.00 : 10f: 00 pop %rbp 0.00 : 110: 00 retq 0.00 : 111: 85 db b8 02 00 00 00 nopl 0x0(%rax) 0.00 : 118: 74 36 xor %eax,%eax 0.00 : 11a: 48 83 c4 08 5b jmpq 82 0.00 : 11f: 5d nop 0.00 : 120: c3 0f 1f 80 00 00 mov 0xc4(%rbp),%edi 0.00 : 126: 00 00 80 b8 9c 02 00 add 0xd8(%rbp),%rdi 0.00 : 12d: 00 00 0f 89 28 callq 132 0.00 : 132: ff ff ff 48 add $0x8,%rsp 0.00 : 136: 83 c4 08 b8 01 mov $0x1,%eax 0.00 : 13b: 00 pop %rbx 0.00 : 13c: 00 pop %rbp 0.00 : 13d: 00 retq : 13e: 5b 5d xchg %ax,%ax : 140: Address 0x0000000000000140 is out of bounds. : Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 20.00 ??:0 20.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 10.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000ca0 <__nf_ct_refresh_acct>: 50.00 : ca0: 48 83 ec 28 sub $0x28,%rsp 0.00 : cd4: 48 89 5c 24 08 48 test %ecx,0x48000000(%rdi) 0.00 : cda: 89 6c 24 10 44 89 mov %ecx,0x98(%rdi) 0.00 : ce0: c3 4c test %ebx,%ebx 0.00 : ce2: 89 64 je d48 0.00 : ce4: 24 18 4c 89 6c 24 20 mov 0xe0(%rbp),%rdx 10.00 : ceb: 48 89 fd test %rdx,%rdx 0.00 : cee: 48 8b je d48 0.00 : cf0: 47 78 41 89 movzbl 0x12(%rdx),%eax 0.00 : cf4: f4 49 test %al,%al 0.00 : cf6: 89 d5 je d48 0.00 : cf8: f6 c4 04 movzbl %al,%eax 0.00 : cfb: 75 13 48 mov %rdx,%rbx 10.00 : cfe: 8b 47 78 add %rax,%rbx 0.00 : d01: a8 08 je d48 0.00 : d03: 0f 85 8f 00 add $0x4,%rbp 0.00 : d07: 00 00 48 mov %rbp,%rdi 0.00 : d0a: 89 8f 98 00 00 callq d0f 0.00 : d0f: 00 85 db 74 cmp $0x2,%r12d 0.00 : d13: 64 48 8b 95 e0 00 ja da0 0.00 : d19: 00 00 48 85 addq $0x1,(%rbx) 0.00 : d1d: d2 74 58 0f mov 0x68(%r13),%eax 0.00 : d21: b6 42 12 mov %rbp,%rdi 0.00 : d24: 84 c0 74 50 add %rax,0x8(%rbx) 0.00 : d28: 0f b6 c0 48 89 mov 0x8(%rsp),%rbx 0.00 : d2d: d3 48 01 c3 74 mov 0x10(%rsp),%rbp 0.00 : d32: 45 48 83 c5 04 mov 0x18(%rsp),%r12 0.00 : d37: 48 89 ef e8 00 mov 0x20(%rsp),%r13 0.00 : d3c: 00 00 00 41 add $0x28,%rsp 0.00 : d40: 83 fc 02 0f 87 jmpq d45 0.00 : d45: 87 00 00 nopl (%rax) 0.00 : d48: 00 48 83 03 01 mov 0x8(%rsp),%rbx 0.00 : d4d: 41 8b 45 68 48 mov 0x10(%rsp),%rbp 0.00 : d52: 89 ef 48 01 43 mov 0x18(%rsp),%r12 0.00 : d57: 08 48 8b 5c 24 mov 0x20(%rsp),%r13 0.00 : d5c: 08 48 8b 6c add $0x28,%rsp 0.00 : d60: 24 retq 0.00 : d61: 10 4c 8b 64 24 18 4c nopl 0x0(%rax) 0.00 : d68: 8b 6c 24 20 48 83 c4 mov 0x0(%rip),%rax # d6f 20.00 : d6f: 28 e9 00 00 lea (%rcx,%rax,1),%rsi 0.00 : d73: 00 00 0f mov %rsi,%rax 0.00 : d76: 1f 00 48 8b 5c 24 08 sub 0x98(%rdi),%rax 10.00 : d7d: 48 8b 6c 24 10 4c cmp $0xf9,%rax 0.00 : d83: 8b 64 24 18 4c 8b jbe ce0 0.00 : d89: 6c 24 20 48 83 c4 28 lea 0x88(%rdi),%rdi 0.00 : d90: c3 0f 1f 80 00 callq d95 0.00 : d95: 00 00 00 48 8b jmpq ce0 0.00 : d9a: 05 00 00 00 00 48 nopw 0x0(%rax,%rax,1) 0.00 : da0: 8d 34 01 48 add $0x10,%rbx 0.00 : da4: 89 f0 48 2b addq $0x1,(%rbx) 0.00 : da8: 87 98 00 00 00 jmpq d1d : dad: 48 3d f9 nopl (%rax) : db0: 00 00 00 0f sub $0x18,%rsp : db4: 86 57 ff ff mov %rbx,(%rsp) : db8: ff 48 8d bf 88 mov %rbp,0x8(%rsp) : dbd: 00 00 00 mov %rdi,%rbx : dc0: e8 00 00 00 00 mov %r12,0x10(%rsp) : dc5: e9 46 ff ff ff 66 0f mov 0xe0(%rdi),%rdx : dcc: 1f 44 00 mov %rsi,%rbp : dcf: 00 48 83 test %rdx,%rdx : dd2: c3 10 je ddc : dd4: 48 83 03 01 movzbl 0x10(%rdx),%eax : dd8: e9 70 test %al,%al : dda: ff ff jne e30 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 40.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005d00 : : * ixgbe_alloc_rx_buffers - Replace used receive buffers : * @rx_ring: ring to place buffers on : * @cleaned_count: number of buffers to replace : **/ : void ixgbe_alloc_rx_buffers(struct ixgbe_ring *rx_ring, u16 cleaned_count) : { 0.00 : 5d00: 48 83 ec 28 sub $0x28,%rsp : union ixgbe_adv_rx_desc *rx_desc; : struct ixgbe_rx_buffer *bi; : u16 i = rx_ring->next_to_use; : : /* nothing to do */ : if (!cleaned_count) 0.00 : 5d04: 66 85 f6 test %si,%si : * ixgbe_alloc_rx_buffers - Replace used receive buffers : * @rx_ring: ring to place buffers on : * @cleaned_count: number of buffers to replace : **/ : void ixgbe_alloc_rx_buffers(struct ixgbe_ring *rx_ring, u16 cleaned_count) : { 0.00 : 5d07: 4c 89 6c 24 18 mov %r13,0x18(%rsp) 0.00 : 5d0c: 4c 89 74 24 20 mov %r14,0x20(%rsp) 0.00 : 5d11: 41 89 f5 mov %esi,%r13d 0.00 : 5d14: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 5d18: 48 89 6c 24 08 mov %rbp,0x8(%rsp) 0.00 : 5d1d: 49 89 fe mov %rdi,%r14 0.00 : 5d20: 4c 89 64 24 10 mov %r12,0x10(%rsp) : union ixgbe_adv_rx_desc *rx_desc; : struct ixgbe_rx_buffer *bi; : u16 i = rx_ring->next_to_use; 0.00 : 5d25: 0f b7 57 50 movzwl 0x50(%rdi),%edx : : /* nothing to do */ : if (!cleaned_count) 0.00 : 5d29: 0f 84 7d 00 00 00 je 5dac : return; : : rx_desc = IXGBE_RX_DESC(rx_ring, i); ??:0 20.00 : 5d2f: 0f b7 c2 movzwl %dx,%eax 0.00 : 5d32: 4c 8b 67 20 mov 0x20(%rdi),%r12 : bi = &rx_ring->rx_buffer_info[i]; : i -= rx_ring->count; 0.00 : 5d36: 89 d5 mov %edx,%ebp : : /* nothing to do */ : if (!cleaned_count) : return; : : rx_desc = IXGBE_RX_DESC(rx_ring, i); 0.00 : 5d38: 48 c1 e0 04 shl $0x4,%rax : bi = &rx_ring->rx_buffer_info[i]; : i -= rx_ring->count; 0.00 : 5d3c: 66 2b 6f 4c sub 0x4c(%rdi),%bp : /* nothing to do */ : if (!cleaned_count) : return; : : rx_desc = IXGBE_RX_DESC(rx_ring, i); : bi = &rx_ring->rx_buffer_info[i]; 0.00 : 5d40: 48 8d 1c 00 lea (%rax,%rax,1),%rbx 0.00 : 5d44: 48 03 5f 28 add 0x28(%rdi),%rbx : : /* nothing to do */ : if (!cleaned_count) : return; : : rx_desc = IXGBE_RX_DESC(rx_ring, i); 0.00 : 5d48: 49 01 c4 add %rax,%r12 0.00 : 5d4b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : do { : #ifdef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : if (!ixgbe_alloc_mapped_skb(rx_ring, bi)) : #else : if (!ixgbe_alloc_mapped_page(rx_ring, bi)) 0.00 : 5d50: 48 89 de mov %rbx,%rsi 0.00 : 5d53: 4c 89 f7 mov %r14,%rdi 0.00 : 5d56: e8 55 fe ff ff callq 5bb0 0.00 : 5d5b: 84 c0 test %al,%al 0.00 : 5d5d: 74 29 je 5d88 : * because each write-back erases this info. : */ : #ifdef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma); : #else : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset); 20.00 : 5d5f: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 5d62: 48 03 43 08 add 0x8(%rbx),%rax : #endif : : rx_desc++; : bi++; : i++; : if (unlikely(!i)) { 0.00 : 5d66: 66 83 c5 01 add $0x1,%bp : * because each write-back erases this info. : */ : #ifdef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma); : #else : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset); 0.00 : 5d6a: 49 89 04 24 mov %rax,(%r12) : #endif : : rx_desc++; : bi++; : i++; : if (unlikely(!i)) { 0.00 : 5d6e: 74 59 je 5dc9 : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma); : #else : rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset); : #endif : : rx_desc++; 0.00 : 5d70: 49 83 c4 10 add $0x10,%r12 : bi++; 0.00 : 5d74: 48 83 c3 20 add $0x20,%rbx : : /* clear the hdr_addr for the next_to_use descriptor */ : rx_desc->read.hdr_addr = 0; : : cleaned_count--; : } while (cleaned_count); 0.00 : 5d78: 66 41 83 ed 01 sub $0x1,%r13w : bi = rx_ring->rx_buffer_info; : i -= rx_ring->count; : } : : /* clear the hdr_addr for the next_to_use descriptor */ : rx_desc->read.hdr_addr = 0; 0.00 : 5d7d: 49 c7 44 24 08 00 00 movq $0x0,0x8(%r12) 0.00 : 5d84: 00 00 : : cleaned_count--; : } while (cleaned_count); 20.00 : 5d86: 75 c8 jne 5d50 : : i += rx_ring->count; 0.00 : 5d88: 89 e8 mov %ebp,%eax 0.00 : 5d8a: 66 41 03 46 4c add 0x4c(%r14),%ax : : if (rx_ring->next_to_use != i) 0.00 : 5d8f: 66 41 39 46 50 cmp %ax,0x50(%r14) 0.00 : 5d94: 74 16 je 5dac 0.00 : 5d96: 0f b7 d0 movzwl %ax,%edx : skb->ip_summed = CHECKSUM_UNNECESSARY; : } : : static inline void ixgbe_release_rx_desc(struct ixgbe_ring *rx_ring, u32 val) : { : rx_ring->next_to_use = val; 0.00 : 5d99: 66 41 89 56 50 mov %dx,0x50(%r14) : #ifndef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : : /* update next to alloc since we have filled the ring */ : rx_ring->next_to_alloc = val; 0.00 : 5d9e: 66 41 89 56 54 mov %dx,0x54(%r14) : * Force memory writes to complete before letting h/w : * know there are new descriptors to fetch. (Only : * applicable for weak-ordered memory model archs, : * such as IA-64). : */ : wmb(); 0.00 : 5da3: 0f ae f8 sfence : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 5da6: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 5daa: 89 10 mov %edx,(%rax) : : i += rx_ring->count; : : if (rx_ring->next_to_use != i) : ixgbe_release_rx_desc(rx_ring, i); : } 40.00 : 5dac: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5db0: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 5db5: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 5dba: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 5dbf: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 5dc4: 48 83 c4 28 add $0x28,%rsp 0.00 : 5dc8: c3 retq : bi++; : i++; : if (unlikely(!i)) { : rx_desc = IXGBE_RX_DESC(rx_ring, 0); : bi = rx_ring->rx_buffer_info; : i -= rx_ring->count; 0.00 : 5dc9: 41 0f b7 6e 4c movzwl 0x4c(%r14),%ebp : : rx_desc++; : bi++; : i++; : if (unlikely(!i)) { : rx_desc = IXGBE_RX_DESC(rx_ring, 0); 0.00 : 5dce: 4d 8b 66 20 mov 0x20(%r14),%r12 : bi = rx_ring->rx_buffer_info; 0.00 : 5dd2: 49 8b 5e 28 mov 0x28(%r14),%rbx : i -= rx_ring->count; 0.00 : 5dd6: f7 dd neg %ebp 0.00 : 5dd8: eb 9e jmp 5d78 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 60.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:6672 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:6672 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:6689 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000495ac0 : : * protect it from being torn. : */ : XLogRecPtr : log_heap_visible(RelFileNode rnode, Buffer heap_buffer, Buffer vm_buffer, : TransactionId cutoff_xid) : { 0.00 : 495ac0: 55 push %rbp 60.00 : 495ac1: 48 89 f8 mov %rdi,%rax 0.00 : 495ac4: 48 c1 e8 20 shr $0x20,%rax 0.00 : 495ac8: 48 89 e5 mov %rsp,%rbp 0.00 : 495acb: 41 55 push %r13 20.00 : 495acd: 41 89 d5 mov %edx,%r13d 0.00 : 495ad0: 41 54 push %r12 0.00 : 495ad2: 41 89 cc mov %ecx,%r12d 0.00 : 495ad5: 53 push %rbx 0.00 : 495ad6: 44 89 c3 mov %r8d,%ebx 0.00 : 495ad9: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : 495ae0: 48 89 bd 50 ff ff ff mov %rdi,-0xb0(%rbp) : XLogRecData rdata[3]; : : Assert(BufferIsValid(heap_buffer)); : Assert(BufferIsValid(vm_buffer)); : : xlrec.node = rnode; 0.00 : 495ae7: 89 7d c0 mov %edi,-0x40(%rbp) : xlrec.block = BufferGetBlockNumber(heap_buffer); 0.00 : 495aea: 89 d7 mov %edx,%edi : * protect it from being torn. : */ : XLogRecPtr : log_heap_visible(RelFileNode rnode, Buffer heap_buffer, Buffer vm_buffer, : TransactionId cutoff_xid) : { 0.00 : 495aec: 89 b5 58 ff ff ff mov %esi,-0xa8(%rbp) : XLogRecData rdata[3]; : : Assert(BufferIsValid(heap_buffer)); : Assert(BufferIsValid(vm_buffer)); : : xlrec.node = rnode; 0.00 : 495af2: 89 75 c8 mov %esi,-0x38(%rbp) 0.00 : 495af5: 89 45 c4 mov %eax,-0x3c(%rbp) : xlrec.block = BufferGetBlockNumber(heap_buffer); 0.00 : 495af8: e8 33 e5 1d 00 callq 674030 : xlrec.cutoff_xid = cutoff_xid; 0.00 : 495afd: 89 5d d0 mov %ebx,-0x30(%rbp) : : Assert(BufferIsValid(heap_buffer)); : Assert(BufferIsValid(vm_buffer)); : : xlrec.node = rnode; : xlrec.block = BufferGetBlockNumber(heap_buffer); 0.00 : 495b00: 89 45 cc mov %eax,-0x34(%rbp) : xlrec.cutoff_xid = cutoff_xid; : : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfHeapVisible; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); 0.00 : 495b03: 48 8d 9d 60 ff ff ff lea -0xa0(%rbp),%rbx : : xlrec.node = rnode; : xlrec.block = BufferGetBlockNumber(heap_buffer); : xlrec.cutoff_xid = cutoff_xid; : : rdata[0].data = (char *) &xlrec; 0.00 : 495b0a: 48 8d 45 c0 lea -0x40(%rbp),%rax : rdata[0].len = SizeOfHeapVisible; 0.00 : 495b0e: c7 85 68 ff ff ff 14 movl $0x14,-0x98(%rbp) 0.00 : 495b15: 00 00 00 : rdata[0].buffer = InvalidBuffer; 0.00 : 495b18: c7 85 6c ff ff ff 00 movl $0x0,-0x94(%rbp) 0.00 : 495b1f: 00 00 00 : rdata[0].next = &(rdata[1]); : : rdata[1].data = NULL; /home/Computational/mark/src/postgres-andres/src/backend/access/heap/heapam.c:6689 20.00 : 495b22: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 495b29: 00 : rdata[1].len = 0; 0.00 : 495b2a: c7 45 88 00 00 00 00 movl $0x0,-0x78(%rbp) : : xlrec.node = rnode; : xlrec.block = BufferGetBlockNumber(heap_buffer); : xlrec.cutoff_xid = cutoff_xid; : : rdata[0].data = (char *) &xlrec; 0.00 : 495b31: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) : rdata[0].len = SizeOfHeapVisible; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); 0.00 : 495b38: 48 8d 43 20 lea 0x20(%rbx),%rax : : rdata[1].data = NULL; : rdata[1].len = 0; : rdata[1].buffer = vm_buffer; 0.00 : 495b3c: 44 89 65 8c mov %r12d,-0x74(%rbp) : rdata[1].buffer_std = false; 0.00 : 495b40: c6 45 90 00 movb $0x0,-0x70(%rbp) : rdata[1].next = NULL; 0.00 : 495b44: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 495b4b: 00 : xlrec.cutoff_xid = cutoff_xid; : : rdata[0].data = (char *) &xlrec; : rdata[0].len = SizeOfHeapVisible; : rdata[0].buffer = InvalidBuffer; : rdata[0].next = &(rdata[1]); 0.00 : 495b4c: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) : rdata[1].len = 0; : rdata[1].buffer = vm_buffer; : rdata[1].buffer_std = false; : rdata[1].next = NULL; : : if (XLogHintBitIsNeeded()) 0.00 : 495b53: e8 68 74 03 00 callq 4ccfc0 0.00 : 495b58: 84 c0 test %al,%al 0.00 : 495b5a: 75 09 jne 495b65 0.00 : 495b5c: 80 3d f6 35 6e 00 00 cmpb $0x0,0x6e35f6(%rip) # b79159 0.00 : 495b63: 74 27 je 495b8c : { : rdata[1].next = &(rdata[2]); 0.00 : 495b65: 48 8d 43 40 lea 0x40(%rbx),%rax : : rdata[2].data = NULL; 0.00 : 495b69: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 495b70: 00 : rdata[2].len = 0; 0.00 : 495b71: c7 45 a8 00 00 00 00 movl $0x0,-0x58(%rbp) : rdata[2].buffer = heap_buffer; 0.00 : 495b78: 44 89 6d ac mov %r13d,-0x54(%rbp) : rdata[2].buffer_std = true; 0.00 : 495b7c: c6 45 b0 01 movb $0x1,-0x50(%rbp) : rdata[1].buffer_std = false; : rdata[1].next = NULL; : : if (XLogHintBitIsNeeded()) : { : rdata[1].next = &(rdata[2]); 0.00 : 495b80: 48 89 45 98 mov %rax,-0x68(%rbp) : : rdata[2].data = NULL; : rdata[2].len = 0; : rdata[2].buffer = heap_buffer; : rdata[2].buffer_std = true; : rdata[2].next = NULL; 0.00 : 495b84: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 495b8b: 00 : } : : recptr = XLogInsert(RM_HEAP2_ID, XLOG_HEAP2_VISIBLE, rdata); 0.00 : 495b8c: 48 89 da mov %rbx,%rdx 0.00 : 495b8f: be 40 00 00 00 mov $0x40,%esi 0.00 : 495b94: bf 09 00 00 00 mov $0x9,%edi 0.00 : 495b99: e8 82 f3 03 00 callq 4d4f20 : : return recptr; : } 0.00 : 495b9e: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 495ba5: 5b pop %rbx 0.00 : 495ba6: 41 5c pop %r12 0.00 : 495ba8: 41 5d pop %r13 0.00 : 495baa: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:109 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:75 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:152 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:109 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000049f650 : : * OldestXmin is the cutoff XID used to distinguish whether tuples are DEAD : * or RECENTLY_DEAD (see HeapTupleSatisfiesVacuum). : */ : void : heap_page_prune_opt(Relation relation, Buffer buffer) : { 0.00 : 49f650: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:75 20.00 : 49f651: 48 89 e5 mov %rsp,%rbp 0.00 : 49f654: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 49f658: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 49f65c: 41 89 f4 mov %esi,%r12d 0.00 : 49f65f: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 49f663: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 49f667: 49 89 fe mov %rdi,%r14 0.00 : 49f66a: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 49f66e: 48 83 ec 40 sub $0x40,%rsp : Page page = BufferGetPage(buffer); 0.00 : 49f672: 85 f6 test %esi,%esi 0.00 : 49f674: 0f 88 fe 00 00 00 js 49f778 0.00 : 49f67a: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 49f67f: 48 63 d8 movslq %eax,%rbx 0.00 : 49f682: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 49f686: 48 03 1d 6b 04 72 00 add 0x72046b(%rip),%rbx # bbfaf8 : /* : * We can't write WAL in recovery mode, so there's no point trying to : * clean the page. The master will likely issue a cleaning WAL record soon : * anyway, so this is no particular loss. : */ : if (RecoveryInProgress()) 0.00 : 49f68d: e8 2e de 02 00 callq 4cd4c0 0.00 : 49f692: 84 c0 test %al,%al 0.00 : 49f694: 74 1a je 49f6b0 : } : : /* And release buffer lock */ : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : } : } 0.00 : 49f696: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 49f69a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 49f69e: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 49f6a2: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 49f6a6: 4c 8b 7d f8 mov -0x8(%rbp),%r15 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:152 20.00 : 49f6aa: c9 leaveq 0.00 : 49f6ab: c3 retq 0.00 : 49f6ac: 0f 1f 40 00 nopl 0x0(%rax) : * catalog relation or a user defined, additional, catalog relation, we : * need to use the horizon that includes slots, otherwise the data-only : * horizon can be used. Note that the toast relation of user defined : * relations are *not* considered catalog relations. : */ : if (IsCatalogRelation(relation) || 0.00 : 49f6b0: 4c 89 f7 mov %r14,%rdi 0.00 : 49f6b3: e8 28 37 04 00 callq 4e2de0 0.00 : 49f6b8: 84 c0 test %al,%al 0.00 : 49f6ba: 0f 84 d0 00 00 00 je 49f790 : RelationIsAccessibleInLogicalDecoding(relation)) : OldestXmin = RecentGlobalXmin; 0.00 : 49f6c0: 44 8b 3d 39 b2 71 00 mov 0x71b239(%rip),%r15d # bba900 : * Let's see if we really need pruning. : * : * Forget it if page is not hinted to contain something prunable that's : * older than OldestXmin. : */ : if (!PageIsPrunable(page, OldestXmin)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/pruneheap.c:109 40.00 : 49f6c7: 8b 7b 14 mov 0x14(%rbx),%edi 20.00 : 49f6ca: 85 ff test %edi,%edi 0.00 : 49f6cc: 74 c8 je 49f696 0.00 : 49f6ce: 44 89 fe mov %r15d,%esi 0.00 : 49f6d1: e8 0a 09 02 00 callq 4bffe0 0.00 : 49f6d6: 84 c0 test %al,%al 0.00 : 49f6d8: 74 bc je 49f696 : * unlikely to be *seriously* wrong, though, since reading either pd_lower : * or pd_upper is probably atomic. Avoiding taking a lock seems more : * important than sometimes getting a wrong answer in what is after all : * just a heuristic estimate. : */ : minfree = RelationGetTargetPageFreeSpace(relation, 0.00 : 49f6da: 49 8b 96 98 00 00 00 mov 0x98(%r14),%rdx 0.00 : 49f6e1: 41 bd 33 03 00 00 mov $0x333,%r13d 0.00 : 49f6e7: 48 85 d2 test %rdx,%rdx 0.00 : 49f6ea: 74 2f je 49f71b 0.00 : 49f6ec: b9 64 00 00 00 mov $0x64,%ecx 0.00 : 49f6f1: 2b 4a 04 sub 0x4(%rdx),%ecx 0.00 : 49f6f4: ba 1f 85 eb 51 mov $0x51eb851f,%edx 0.00 : 49f6f9: c1 e1 0d shl $0xd,%ecx 0.00 : 49f6fc: 89 c8 mov %ecx,%eax 0.00 : 49f6fe: c1 f9 1f sar $0x1f,%ecx 0.00 : 49f701: f7 ea imul %edx 0.00 : 49f703: b8 33 03 00 00 mov $0x333,%eax 0.00 : 49f708: c1 fa 05 sar $0x5,%edx 0.00 : 49f70b: 29 ca sub %ecx,%edx 0.00 : 49f70d: 4c 63 ea movslq %edx,%r13 0.00 : 49f710: 49 81 fd 33 03 00 00 cmp $0x333,%r13 0.00 : 49f717: 4c 0f 42 e8 cmovb %rax,%r13 : HEAP_DEFAULT_FILLFACTOR); : minfree = Max(minfree, BLCKSZ / 10); : : if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree) 0.00 : 49f71b: f6 43 0a 02 testb $0x2,0xa(%rbx) 0.00 : 49f71f: 75 11 jne 49f732 0.00 : 49f721: 48 89 df mov %rbx,%rdi 0.00 : 49f724: e8 37 56 1f 00 callq 694d60 0.00 : 49f729: 4c 39 e8 cmp %r13,%rax 0.00 : 49f72c: 0f 83 64 ff ff ff jae 49f696 : { : /* OK, try to get exclusive buffer lock */ : if (!ConditionalLockBufferForCleanup(buffer)) 0.00 : 49f732: 44 89 e7 mov %r12d,%edi 0.00 : 49f735: e8 26 78 1d 00 callq 676f60 0.00 : 49f73a: 84 c0 test %al,%al 0.00 : 49f73c: 0f 84 54 ff ff ff je 49f696 : * Now that we have buffer lock, get accurate information about the : * page's free space, and recheck the heuristic about whether to : * prune. (We needn't recheck PageIsPrunable, since no one else could : * have pruned while we hold pin.) : */ : if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree) 0.00 : 49f742: f6 43 0a 02 testb $0x2,0xa(%rbx) 0.00 : 49f746: 74 68 je 49f7b0 : { : TransactionId ignore = InvalidTransactionId; /* return value not : * needed */ : : /* OK to prune */ : (void) heap_page_prune(relation, buffer, OldestXmin, true, &ignore); 0.00 : 49f748: 4c 8d 45 d4 lea -0x2c(%rbp),%r8 0.00 : 49f74c: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 49f751: 44 89 fa mov %r15d,%edx 0.00 : 49f754: 44 89 e6 mov %r12d,%esi 0.00 : 49f757: 4c 89 f7 mov %r14,%rdi : * prune. (We needn't recheck PageIsPrunable, since no one else could : * have pruned while we hold pin.) : */ : if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree) : { : TransactionId ignore = InvalidTransactionId; /* return value not 0.00 : 49f75a: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%rbp) : * needed */ : : /* OK to prune */ : (void) heap_page_prune(relation, buffer, OldestXmin, true, &ignore); 0.00 : 49f761: e8 5a f4 ff ff callq 49ebc0 : } : : /* And release buffer lock */ : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 49f766: 31 f6 xor %esi,%esi 0.00 : 49f768: 44 89 e7 mov %r12d,%edi 0.00 : 49f76b: e8 a0 4f 1d 00 callq 674710 0.00 : 49f770: e9 21 ff ff ff jmpq 49f696 0.00 : 49f775: 0f 1f 00 nopl (%rax) : * or RECENTLY_DEAD (see HeapTupleSatisfiesVacuum). : */ : void : heap_page_prune_opt(Relation relation, Buffer buffer) : { : Page page = BufferGetPage(buffer); 0.00 : 49f778: 89 f0 mov %esi,%eax 0.00 : 49f77a: 48 8b 15 97 d9 6d 00 mov 0x6dd997(%rip),%rdx # b7d118 0.00 : 49f781: f7 d0 not %eax 0.00 : 49f783: 48 98 cltq 0.00 : 49f785: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 49f789: e9 ff fe ff ff jmpq 49f68d 0.00 : 49f78e: 66 90 xchg %ax,%ax : * catalog relation or a user defined, additional, catalog relation, we : * need to use the horizon that includes slots, otherwise the data-only : * horizon can be used. Note that the toast relation of user defined : * relations are *not* considered catalog relations. : */ : if (IsCatalogRelation(relation) || 0.00 : 49f790: 83 3d c5 99 6d 00 02 cmpl $0x2,0x6d99c5(%rip) # b7915c 0.00 : 49f797: 7e 0a jle 49f7a3 0.00 : 49f799: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 49f79d: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 49f7a1: 74 25 je 49f7c8 : RelationIsAccessibleInLogicalDecoding(relation)) : OldestXmin = RecentGlobalXmin; : else : OldestXmin = RecentGlobalDataXmin; 0.00 : 49f7a3: 44 8b 3d 5a b1 71 00 mov 0x71b15a(%rip),%r15d # bba904 0.00 : 49f7aa: e9 18 ff ff ff jmpq 49f6c7 0.00 : 49f7af: 90 nop : * Now that we have buffer lock, get accurate information about the : * page's free space, and recheck the heuristic about whether to : * prune. (We needn't recheck PageIsPrunable, since no one else could : * have pruned while we hold pin.) : */ : if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree) 0.00 : 49f7b0: 48 89 df mov %rbx,%rdi 0.00 : 49f7b3: e8 a8 55 1f 00 callq 694d60 0.00 : 49f7b8: 4c 39 e8 cmp %r13,%rax 0.00 : 49f7bb: 73 a9 jae 49f766 0.00 : 49f7bd: 0f 1f 00 nopl (%rax) 0.00 : 49f7c0: eb 86 jmp 49f748 0.00 : 49f7c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * catalog relation or a user defined, additional, catalog relation, we : * need to use the horizon that includes slots, otherwise the data-only : * horizon can be used. Note that the toast relation of user defined : * relations are *not* considered catalog relations. : */ : if (IsCatalogRelation(relation) || 0.00 : 49f7c8: 4c 89 f7 mov %r14,%rdi 0.00 : 49f7cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 49f7d0: e8 0b 36 04 00 callq 4e2de0 0.00 : 49f7d5: 84 c0 test %al,%al 0.00 : 49f7d7: 0f 85 e3 fe ff ff jne 49f6c0 0.00 : 49f7dd: 49 8b 86 98 00 00 00 mov 0x98(%r14),%rax 0.00 : 49f7e4: 48 85 c0 test %rax,%rax 0.00 : 49f7e7: 74 ba je 49f7a3 0.00 : 49f7e9: 80 78 48 00 cmpb $0x0,0x48(%rax) 0.00 : 49f7ed: 74 b4 je 49f7a3 0.00 : 49f7ef: 90 nop 0.00 : 49f7f0: e9 cb fe ff ff jmpq 49f6c0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 80.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:305 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:286 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a0e20 : : * (relfilenode, blocknumber), overwriting any existing entry for the : * same relfilenode. : */ : void : ss_report_location(Relation rel, BlockNumber location) : { 0.00 : 4a0e20: 55 push %rbp : * Missing a few updates isn't critical, it just means that a new scan : * that wants to join the pack will start a little bit behind the head of : * the scan. Hopefully the pages are still in OS cache and the scan : * catches up quickly. : */ : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:305 80.00 : 4a0e21: 40 f6 c6 0f test $0xf,%sil : * (relfilenode, blocknumber), overwriting any existing entry for the : * same relfilenode. : */ : void : ss_report_location(Relation rel, BlockNumber location) : { 0.00 : 4a0e25: 48 89 e5 mov %rsp,%rbp 0.00 : 4a0e28: 41 54 push %r12 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/syncscan.c:286 20.00 : 4a0e2a: 41 89 f4 mov %esi,%r12d 0.00 : 4a0e2d: 53 push %rbx 0.00 : 4a0e2e: 48 89 fb mov %rdi,%rbx : * Missing a few updates isn't critical, it just means that a new scan : * that wants to join the pack will start a little bit behind the head of : * the scan. Hopefully the pages are still in OS cache and the scan : * catches up quickly. : */ : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) 0.00 : 4a0e31: 74 0d je 4a0e40 : elog(LOG, : "SYNC_SCAN: missed update for \"%s\" at %u", : RelationGetRelationName(rel), location); : #endif : } : } 0.00 : 4a0e33: 5b pop %rbx 0.00 : 4a0e34: 41 5c pop %r12 0.00 : 4a0e36: c9 leaveq 0.00 : 4a0e37: c3 retq 0.00 : 4a0e38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a0e3f: 00 : * the scan. Hopefully the pages are still in OS cache and the scan : * catches up quickly. : */ : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) : { : if (LWLockConditionalAcquire(SyncScanLock, LW_EXCLUSIVE)) 0.00 : 4a0e40: 48 8b 3d b9 cb 6d 00 mov 0x6dcbb9(%rip),%rdi # b7da00 0.00 : 4a0e47: 31 f6 xor %esi,%esi 0.00 : 4a0e49: 48 81 c7 00 03 00 00 add $0x300,%rdi 0.00 : 4a0e50: e8 4b e1 1e 00 callq 68efa0 0.00 : 4a0e55: 84 c0 test %al,%al 0.00 : 4a0e57: 74 da je 4a0e33 : static BlockNumber : ss_search(RelFileNode relfilenode, BlockNumber location, bool set) : { : ss_lru_item_t *item; : : item = scan_locations->head; 0.00 : 4a0e59: 48 8b 35 a0 7e 6d 00 mov 0x6d7ea0(%rip),%rsi # b78d00 : */ : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) : { : if (LWLockConditionalAcquire(SyncScanLock, LW_EXCLUSIVE)) : { : (void) ss_search(rel->rd_node, location, true); 0.00 : 4a0e60: 8b 53 08 mov 0x8(%rbx),%edx 0.00 : 4a0e63: 44 8b 43 04 mov 0x4(%rbx),%r8d 0.00 : 4a0e67: 8b 3b mov (%rbx),%edi : static BlockNumber : ss_search(RelFileNode relfilenode, BlockNumber location, bool set) : { : ss_lru_item_t *item; : : item = scan_locations->head; 0.00 : 4a0e69: 48 8b 0e mov (%rsi),%rcx 0.00 : 4a0e6c: eb 0e jmp 4a0e7c 0.00 : 4a0e6e: 66 90 xchg %ax,%ax : { : bool match; : : match = RelFileNodeEquals(item->location.relfilenode, relfilenode); : : if (match || item->next == NULL) 0.00 : 4a0e70: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 4a0e74: 48 85 c0 test %rax,%rax 0.00 : 4a0e77: 74 6f je 4a0ee8 0.00 : 4a0e79: 48 89 c1 mov %rax,%rcx : item = scan_locations->head; : for (;;) : { : bool match; : : match = RelFileNodeEquals(item->location.relfilenode, relfilenode); 0.00 : 4a0e7c: 39 51 18 cmp %edx,0x18(%rcx) 0.00 : 4a0e7f: 75 ef jne 4a0e70 0.00 : 4a0e81: 44 39 41 14 cmp %r8d,0x14(%rcx) 0.00 : 4a0e85: 75 e9 jne 4a0e70 0.00 : 4a0e87: 39 79 10 cmp %edi,0x10(%rcx) 0.00 : 4a0e8a: 75 e4 jne 4a0e70 : * the last entry : */ : if (!match) : { : item->location.relfilenode = relfilenode; : item->location.location = location; 0.00 : 4a0e8c: 44 89 61 1c mov %r12d,0x1c(%rcx) : } : else if (set) : item->location.location = location; : : /* Move the entry to the front of the LRU list */ : if (item != scan_locations->head) 0.00 : 4a0e90: 48 3b 0e cmp (%rsi),%rcx 0.00 : 4a0e93: 74 37 je 4a0ecc : { : /* unlink */ : if (item == scan_locations->tail) 0.00 : 4a0e95: 48 3b 4e 08 cmp 0x8(%rsi),%rcx 0.00 : 4a0e99: 74 5d je 4a0ef8 : scan_locations->tail = item->prev; : item->prev->next = item->next; 0.00 : 4a0e9b: 48 8b 11 mov (%rcx),%rdx 0.00 : 4a0e9e: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 4a0ea2: 48 89 42 08 mov %rax,0x8(%rdx) : if (item->next) 0.00 : 4a0ea6: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 4a0eaa: 48 85 d2 test %rdx,%rdx 0.00 : 4a0ead: 74 06 je 4a0eb5 : item->next->prev = item->prev; 0.00 : 4a0eaf: 48 8b 01 mov (%rcx),%rax 0.00 : 4a0eb2: 48 89 02 mov %rax,(%rdx) : : /* link */ : item->prev = NULL; 0.00 : 4a0eb5: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) : item->next = scan_locations->head; 0.00 : 4a0ebc: 48 8b 06 mov (%rsi),%rax 0.00 : 4a0ebf: 48 89 41 08 mov %rax,0x8(%rcx) : scan_locations->head->prev = item; 0.00 : 4a0ec3: 48 8b 06 mov (%rsi),%rax 0.00 : 4a0ec6: 48 89 08 mov %rcx,(%rax) : scan_locations->head = item; 0.00 : 4a0ec9: 48 89 0e mov %rcx,(%rsi) : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) : { : if (LWLockConditionalAcquire(SyncScanLock, LW_EXCLUSIVE)) : { : (void) ss_search(rel->rd_node, location, true); : LWLockRelease(SyncScanLock); 0.00 : 4a0ecc: 48 8b 3d 2d cb 6d 00 mov 0x6dcb2d(%rip),%rdi # b7da00 : elog(LOG, : "SYNC_SCAN: missed update for \"%s\" at %u", : RelationGetRelationName(rel), location); : #endif : } : } 0.00 : 4a0ed3: 5b pop %rbx 0.00 : 4a0ed4: 41 5c pop %r12 0.00 : 4a0ed6: c9 leaveq : if ((location % SYNC_SCAN_REPORT_INTERVAL) == 0) : { : if (LWLockConditionalAcquire(SyncScanLock, LW_EXCLUSIVE)) : { : (void) ss_search(rel->rd_node, location, true); : LWLockRelease(SyncScanLock); 0.00 : 4a0ed7: 48 81 c7 00 03 00 00 add $0x300,%rdi 0.00 : 4a0ede: e9 bd e4 1e 00 jmpq 68f3a0 0.00 : 4a0ee3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * If we reached the end of list and no match was found, take over : * the last entry : */ : if (!match) : { : item->location.relfilenode = relfilenode; 0.00 : 4a0ee8: 89 79 10 mov %edi,0x10(%rcx) 0.00 : 4a0eeb: 44 89 41 14 mov %r8d,0x14(%rcx) 0.00 : 4a0eef: 89 51 18 mov %edx,0x18(%rcx) 0.00 : 4a0ef2: eb 98 jmp 4a0e8c 0.00 : 4a0ef4: 0f 1f 40 00 nopl 0x0(%rax) : /* Move the entry to the front of the LRU list */ : if (item != scan_locations->head) : { : /* unlink */ : if (item == scan_locations->tail) : scan_locations->tail = item->prev; 0.00 : 4a0ef8: 48 8b 01 mov (%rcx),%rax 0.00 : 4a0efb: 48 89 46 08 mov %rax,0x8(%rsi) 0.00 : 4a0eff: eb 9a jmp 4a0e9b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:248 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:267 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:274 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:274 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a4630 : : * any I/O. : */ : void : visibilitymap_set(Relation rel, BlockNumber heapBlk, Buffer heapBuf, : XLogRecPtr recptr, Buffer vmBuf, TransactionId cutoff_xid) : { 0.00 : 4a4630: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:248 40.00 : 4a4631: 48 89 e5 mov %rsp,%rbp 0.00 : 4a4634: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 4a4638: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 4a463c: 89 f3 mov %esi,%ebx 0.00 : 4a463e: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 4a4642: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 4a4646: 41 89 d5 mov %edx,%r13d 0.00 : 4a4649: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 4a464d: 48 83 ec 40 sub $0x40,%rsp : : Assert(InRecovery || XLogRecPtrIsInvalid(recptr)); : Assert(InRecovery || BufferIsValid(heapBuf)); : : /* Check that we have the right heap page pinned, if present */ : if (BufferIsValid(heapBuf) && BufferGetBlockNumber(heapBuf) != heapBlk) 0.00 : 4a4651: 85 d2 test %edx,%edx : * any I/O. : */ : void : visibilitymap_set(Relation rel, BlockNumber heapBlk, Buffer heapBuf, : XLogRecPtr recptr, Buffer vmBuf, TransactionId cutoff_xid) : { 0.00 : 4a4653: 48 89 7d d0 mov %rdi,-0x30(%rbp) 0.00 : 4a4657: 49 89 cf mov %rcx,%r15 0.00 : 4a465a: 45 89 c4 mov %r8d,%r12d 0.00 : 4a465d: 44 89 4d cc mov %r9d,-0x34(%rbp) : : Assert(InRecovery || XLogRecPtrIsInvalid(recptr)); : Assert(InRecovery || BufferIsValid(heapBuf)); : : /* Check that we have the right heap page pinned, if present */ : if (BufferIsValid(heapBuf) && BufferGetBlockNumber(heapBuf) != heapBlk) 0.00 : 4a4661: 75 55 jne 4a46b8 : elog(ERROR, "wrong heap buffer passed to visibilitymap_set"); : : /* Check that we have the right VM page pinned */ : if (!BufferIsValid(vmBuf) || BufferGetBlockNumber(vmBuf) != mapBlock) 0.00 : 4a4663: 45 85 e4 test %r12d,%r12d 0.00 : 4a4666: 74 1f je 4a4687 0.00 : 4a4668: 44 89 e7 mov %r12d,%edi 0.00 : 4a466b: e8 c0 f9 1c 00 callq 674030 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:267 20.00 : 4a4670: 89 da mov %ebx,%edx 0.00 : 4a4672: 89 c6 mov %eax,%esi 0.00 : 4a4674: b9 21 81 01 02 mov $0x2018121,%ecx 0.00 : 4a4679: c1 ea 06 shr $0x6,%edx 0.00 : 4a467c: 89 d0 mov %edx,%eax 0.00 : 4a467e: f7 e1 mul %ecx 0.00 : 4a4680: c1 ea 03 shr $0x3,%edx 0.00 : 4a4683: 39 d6 cmp %edx,%esi 0.00 : 4a4685: 74 69 je 4a46f0 : elog(ERROR, "wrong VM buffer passed to visibilitymap_set"); 0.00 : 4a4687: ba a0 39 7b 00 mov $0x7b39a0,%edx 0.00 : 4a468c: be 0c 01 00 00 mov $0x10c,%esi 0.00 : 4a4691: bf e8 37 7b 00 mov $0x7b37e8,%edi 0.00 : 4a4696: e8 85 6d 2d 00 callq 77b420 0.00 : 4a469b: be 58 38 7b 00 mov $0x7b3858,%esi 0.00 : 4a46a0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a46a5: 31 c0 xor %eax,%eax 0.00 : 4a46a7: e8 84 6b 2d 00 callq 77b230 0.00 : 4a46ac: e8 1f 4e fc ff callq 4694d0 0.00 : 4a46b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : Assert(InRecovery || XLogRecPtrIsInvalid(recptr)); : Assert(InRecovery || BufferIsValid(heapBuf)); : : /* Check that we have the right heap page pinned, if present */ : if (BufferIsValid(heapBuf) && BufferGetBlockNumber(heapBuf) != heapBlk) 0.00 : 4a46b8: 89 d7 mov %edx,%edi 0.00 : 4a46ba: e8 71 f9 1c 00 callq 674030 0.00 : 4a46bf: 39 d8 cmp %ebx,%eax 0.00 : 4a46c1: 74 a0 je 4a4663 : elog(ERROR, "wrong heap buffer passed to visibilitymap_set"); 0.00 : 4a46c3: ba a0 39 7b 00 mov $0x7b39a0,%edx 0.00 : 4a46c8: be 08 01 00 00 mov $0x108,%esi 0.00 : 4a46cd: bf e8 37 7b 00 mov $0x7b37e8,%edi 0.00 : 4a46d2: e8 49 6d 2d 00 callq 77b420 0.00 : 4a46d7: be 28 38 7b 00 mov $0x7b3828,%esi 0.00 : 4a46dc: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a46e1: 31 c0 xor %eax,%eax 0.00 : 4a46e3: e8 48 6b 2d 00 callq 77b230 0.00 : 4a46e8: e8 e3 4d fc ff callq 4694d0 0.00 : 4a46ed: 0f 1f 00 nopl (%rax) : : /* Check that we have the right VM page pinned */ : if (!BufferIsValid(vmBuf) || BufferGetBlockNumber(vmBuf) != mapBlock) : elog(ERROR, "wrong VM buffer passed to visibilitymap_set"); : : page = BufferGetPage(vmBuf); 0.00 : 4a46f0: 45 85 e4 test %r12d,%r12d 0.00 : 4a46f3: 0f 88 b7 00 00 00 js 4a47b0 0.00 : 4a46f9: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4a46fe: 4c 63 f0 movslq %eax,%r14 0.00 : 4a4701: 49 c1 e6 0d shl $0xd,%r14 0.00 : 4a4705: 4c 03 35 ec b3 71 00 add 0x71b3ec(%rip),%r14 # bbfaf8 : map = PageGetContents(page); : LockBuffer(vmBuf, BUFFER_LOCK_EXCLUSIVE); 0.00 : 4a470c: be 02 00 00 00 mov $0x2,%esi 0.00 : 4a4711: 44 89 e7 mov %r12d,%edi 0.00 : 4a4714: e8 f7 ff 1c 00 callq 674710 : : if (!(map[mapByte] & (1 << mapBit))) 0.00 : 4a4719: 89 da mov %ebx,%edx 0.00 : 4a471b: b8 21 81 01 02 mov $0x2018121,%eax 0.00 : 4a4720: 89 d9 mov %ebx,%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:274 20.00 : 4a4722: c1 ea 06 shr $0x6,%edx 0.00 : 4a4725: 83 e1 07 and $0x7,%ecx 0.00 : 4a4728: f7 e2 mul %edx 0.00 : 4a472a: 89 d8 mov %ebx,%eax 0.00 : 4a472c: c1 ea 03 shr $0x3,%edx 0.00 : 4a472f: 69 d2 40 ff 00 00 imul $0xff40,%edx,%edx 0.00 : 4a4735: 29 d0 sub %edx,%eax 0.00 : 4a4737: c1 e8 03 shr $0x3,%eax 0.00 : 4a473a: 89 c0 mov %eax,%eax 0.00 : 4a473c: 49 8d 54 06 18 lea 0x18(%r14,%rax,1),%rdx 0.00 : 4a4741: 0f be 02 movsbl (%rdx),%eax 20.00 : 4a4744: d3 f8 sar %cl,%eax 0.00 : 4a4746: a8 01 test $0x1,%al 0.00 : 4a4748: 74 26 je 4a4770 : } : : END_CRIT_SECTION(); : } : : LockBuffer(vmBuf, BUFFER_LOCK_UNLOCK); 0.00 : 4a474a: 44 89 e7 mov %r12d,%edi : } 0.00 : 4a474d: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 4a4751: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4a4755: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4a4759: 4c 8b 75 f0 mov -0x10(%rbp),%r14 : } : : END_CRIT_SECTION(); : } : : LockBuffer(vmBuf, BUFFER_LOCK_UNLOCK); 0.00 : 4a475d: 31 f6 xor %esi,%esi : } 0.00 : 4a475f: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 4a4763: c9 leaveq : } : : END_CRIT_SECTION(); : } : : LockBuffer(vmBuf, BUFFER_LOCK_UNLOCK); 0.00 : 4a4764: e9 a7 ff 1c 00 jmpq 674710 0.00 : 4a4769: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : map = PageGetContents(page); : LockBuffer(vmBuf, BUFFER_LOCK_EXCLUSIVE); : : if (!(map[mapByte] & (1 << mapBit))) : { : START_CRIT_SECTION(); 0.00 : 4a4770: 8b 05 26 59 71 00 mov 0x715926(%rip),%eax # bba09c : : map[mapByte] |= (1 << mapBit); : MarkBufferDirty(vmBuf); 0.00 : 4a4776: 44 89 e7 mov %r12d,%edi : map = PageGetContents(page); : LockBuffer(vmBuf, BUFFER_LOCK_EXCLUSIVE); : : if (!(map[mapByte] & (1 << mapBit))) : { : START_CRIT_SECTION(); 0.00 : 4a4779: 83 c0 01 add $0x1,%eax 0.00 : 4a477c: 89 05 1a 59 71 00 mov %eax,0x71591a(%rip) # bba09c : : map[mapByte] |= (1 << mapBit); 0.00 : 4a4782: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4a4787: d3 e0 shl %cl,%eax 0.00 : 4a4789: 08 02 or %al,(%rdx) : MarkBufferDirty(vmBuf); 0.00 : 4a478b: e8 60 00 1d 00 callq 6747f0 : : if (RelationNeedsWAL(rel)) 0.00 : 4a4790: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 4a4794: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 4a4798: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 4a479c: 74 32 je 4a47d0 : } : } : PageSetLSN(page, recptr); : } : : END_CRIT_SECTION(); 0.00 : 4a479e: 8b 05 f8 58 71 00 mov 0x7158f8(%rip),%eax # bba09c 0.00 : 4a47a4: 83 e8 01 sub $0x1,%eax 0.00 : 4a47a7: 89 05 ef 58 71 00 mov %eax,0x7158ef(%rip) # bba09c 0.00 : 4a47ad: eb 9b jmp 4a474a 0.00 : 4a47af: 90 nop : : /* Check that we have the right VM page pinned */ : if (!BufferIsValid(vmBuf) || BufferGetBlockNumber(vmBuf) != mapBlock) : elog(ERROR, "wrong VM buffer passed to visibilitymap_set"); : : page = BufferGetPage(vmBuf); 0.00 : 4a47b0: 44 89 e0 mov %r12d,%eax 0.00 : 4a47b3: 48 8b 15 5e 89 6d 00 mov 0x6d895e(%rip),%rdx # b7d118 0.00 : 4a47ba: f7 d0 not %eax 0.00 : 4a47bc: 48 98 cltq 0.00 : 4a47be: 4c 8b 34 c2 mov (%rdx,%rax,8),%r14 0.00 : 4a47c2: e9 45 ff ff ff jmpq 4a470c 0.00 : 4a47c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a47ce: 00 00 : map[mapByte] |= (1 << mapBit); : MarkBufferDirty(vmBuf); : : if (RelationNeedsWAL(rel)) : { : if (XLogRecPtrIsInvalid(recptr)) 0.00 : 4a47d0: 4d 85 ff test %r15,%r15 0.00 : 4a47d3: 74 1b je 4a47f0 0.00 : 4a47d5: 4c 89 f9 mov %r15,%rcx 0.00 : 4a47d8: 44 89 f8 mov %r15d,%eax 0.00 : 4a47db: 48 c1 e9 20 shr $0x20,%rcx : /* caller is expected to set PD_ALL_VISIBLE first */ : Assert(PageIsAllVisible(heapPage)); : PageSetLSN(heapPage, recptr); : } : } : PageSetLSN(page, recptr); 0.00 : 4a47df: 41 89 0e mov %ecx,(%r14) 0.00 : 4a47e2: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 4a47e6: eb b6 jmp 4a479e 0.00 : 4a47e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a47ef: 00 : if (RelationNeedsWAL(rel)) : { : if (XLogRecPtrIsInvalid(recptr)) : { : Assert(!InRecovery); : recptr = log_heap_visible(rel->rd_node, heapBuf, vmBuf, 0.00 : 4a47f0: 48 8b 45 d0 mov -0x30(%rbp),%rax 0.00 : 4a47f4: 44 8b 45 cc mov -0x34(%rbp),%r8d 0.00 : 4a47f8: 44 89 e1 mov %r12d,%ecx 0.00 : 4a47fb: 44 89 ea mov %r13d,%edx 0.00 : 4a47fe: 48 8b 38 mov (%rax),%rdi 0.00 : 4a4801: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 4a4804: e8 b7 12 ff ff callq 495ac0 0.00 : 4a4809: 48 89 c3 mov %rax,%rbx : : /* : * If data checksums are enabled (or wal_log_hints=on), we : * need to protect the heap page from being torn. : */ : if (XLogHintBitIsNeeded()) 0.00 : 4a480c: e8 af 87 02 00 callq 4ccfc0 0.00 : 4a4811: 84 c0 test %al,%al 0.00 : 4a4813: 75 14 jne 4a4829 0.00 : 4a4815: 80 3d 3d 49 6d 00 00 cmpb $0x0,0x6d493d(%rip) # b79159 0.00 : 4a481c: 75 0b jne 4a4829 0.00 : 4a481e: 48 89 d9 mov %rbx,%rcx 0.00 : 4a4821: 89 d8 mov %ebx,%eax 0.00 : 4a4823: 48 c1 e9 20 shr $0x20,%rcx 0.00 : 4a4827: eb b6 jmp 4a47df : { : Page heapPage = BufferGetPage(heapBuf); 0.00 : 4a4829: 45 85 ed test %r13d,%r13d 0.00 : 4a482c: 78 24 js 4a4852 0.00 : 4a482e: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 4a4832: 48 63 d0 movslq %eax,%rdx 0.00 : 4a4835: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4a4839: 48 03 15 b8 b2 71 00 add 0x71b2b8(%rip),%rdx # bbfaf8 : : /* caller is expected to set PD_ALL_VISIBLE first */ : Assert(PageIsAllVisible(heapPage)); : PageSetLSN(heapPage, recptr); 0.00 : 4a4840: 48 89 d8 mov %rbx,%rax 0.00 : 4a4843: 89 5a 04 mov %ebx,0x4(%rdx) 0.00 : 4a4846: 48 c1 e8 20 shr $0x20,%rax 0.00 : 4a484a: 89 c1 mov %eax,%ecx 0.00 : 4a484c: 89 02 mov %eax,(%rdx) 0.00 : 4a484e: 89 d8 mov %ebx,%eax 0.00 : 4a4850: eb 8d jmp 4a47df : * If data checksums are enabled (or wal_log_hints=on), we : * need to protect the heap page from being torn. : */ : if (XLogHintBitIsNeeded()) : { : Page heapPage = BufferGetPage(heapBuf); 0.00 : 4a4852: 48 8b 05 bf 88 6d 00 mov 0x6d88bf(%rip),%rax # b7d118 0.00 : 4a4859: 41 f7 d5 not %r13d 0.00 : 4a485c: 49 63 d5 movslq %r13d,%rdx 0.00 : 4a485f: 48 8b 14 d0 mov (%rax,%rdx,8),%rdx 0.00 : 4a4863: eb db jmp 4a4840 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1928 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1950 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1952 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1952 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1955 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004cce10 : : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4cce10: 48 89 f8 mov %rdi,%rax 0.00 : 4cce13: 48 ba 47 25 ad 36 42 movabs $0x8060504236ad2547,%rdx 0.00 : 4cce1a: 50 60 80 : * not to where the first xlog record on that page would go to. This is used : * when converting a pointer to the end of a record. : */ : static XLogRecPtr : XLogBytePosToEndRecPtr(uint64 bytepos) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1928 20.00 : 4cce1d: 55 push %rbp : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4cce1e: 48 f7 e2 mul %rdx 0.00 : 4cce21: 48 89 f8 mov %rdi,%rax : * not to where the first xlog record on that page would go to. This is used : * when converting a pointer to the end of a record. : */ : static XLogRecPtr : XLogBytePosToEndRecPtr(uint64 bytepos) : { 0.00 : 4cce24: 48 89 e5 mov %rsp,%rbp : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4cce27: 48 c1 ea 17 shr $0x17,%rdx 0.00 : 4cce2b: 48 69 d2 f0 3f ff 00 imul $0xff3ff0,%rdx,%rdx 0.00 : 4cce32: 48 29 d0 sub %rdx,%rax : : if (bytesleft < XLOG_BLCKSZ - SizeOfXLogLongPHD) 0.00 : 4cce35: 48 3d d7 1f 00 00 cmp $0x1fd7,%rax : uint64 bytesleft; : uint32 seg_offset; : XLogRecPtr result; : : fullsegs = bytepos / UsableBytesInSegment; : bytesleft = bytepos % UsableBytesInSegment; 0.00 : 4cce3b: 48 89 c2 mov %rax,%rdx : : if (bytesleft < XLOG_BLCKSZ - SizeOfXLogLongPHD) 0.00 : 4cce3e: 77 30 ja 4cce70 : { : /* fits on first page of segment */ : if (bytesleft == 0) 0.00 : 4cce40: 8d 40 28 lea 0x28(%rax),%eax 0.00 : 4cce43: 31 c9 xor %ecx,%ecx 0.00 : 4cce45: 48 85 d2 test %rdx,%rdx 0.00 : 4cce48: 48 0f 45 c8 cmovne %rax,%rcx : bytesleft -= XLOG_BLCKSZ - SizeOfXLogLongPHD; : : fullpages = bytesleft / UsableBytesInPage; : bytesleft = bytesleft % UsableBytesInPage; : : if (bytesleft == 0) 0.00 : 4cce4c: 48 89 f8 mov %rdi,%rax 0.00 : 4cce4f: 48 ba 47 25 ad 36 42 movabs $0x8060504236ad2547,%rdx 0.00 : 4cce56: 50 60 80 0.00 : 4cce59: 48 f7 e2 mul %rdx : } : : XLogSegNoOffsetToRecPtr(fullsegs, seg_offset, result); : : return result; : } 0.00 : 4cce5c: c9 leaveq : bytesleft -= XLOG_BLCKSZ - SizeOfXLogLongPHD; : : fullpages = bytesleft / UsableBytesInPage; : bytesleft = bytesleft % UsableBytesInPage; : : if (bytesleft == 0) 0.00 : 4cce5d: 48 c1 ea 17 shr $0x17,%rdx 0.00 : 4cce61: 48 c1 e2 18 shl $0x18,%rdx 0.00 : 4cce65: 48 8d 04 11 lea (%rcx,%rdx,1),%rax : } : : XLogSegNoOffsetToRecPtr(fullsegs, seg_offset, result); : : return result; : } 0.00 : 4cce69: c3 retq 0.00 : 4cce6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else : { : /* account for the first page on segment with long header */ : seg_offset = XLOG_BLCKSZ; : bytesleft -= XLOG_BLCKSZ - SizeOfXLogLongPHD; /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1950 20.00 : 4cce70: 48 8d b0 28 e0 ff ff lea -0x1fd8(%rax),%rsi : : fullpages = bytesleft / UsableBytesInPage; /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1952 20.00 : 4cce77: 48 b8 b7 9d 27 8a 0d movabs $0x2018120d8a279db7,%rax 0.00 : 4cce7e: 12 18 20 0.00 : 4cce81: 48 89 f1 mov %rsi,%rcx 0.00 : 4cce84: 48 c1 e9 03 shr $0x3,%rcx 0.00 : 4cce88: 48 f7 e1 mul %rcx 0.00 : 4cce8b: 48 89 d1 mov %rdx,%rcx 20.00 : 4cce8e: 48 c1 e9 07 shr $0x7,%rcx : bytesleft = bytesleft % UsableBytesInPage; 0.00 : 4cce92: 48 69 c1 e8 1f 00 00 imul $0x1fe8,%rcx,%rax : : if (bytesleft == 0) 0.00 : 4cce99: 48 29 c6 sub %rax,%rsi 0.00 : 4cce9c: 74 12 je 4cceb0 0.00 : 4cce9e: 48 89 ca mov %rcx,%rdx 0.00 : 4ccea1: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4ccea5: 8d 8c 16 18 20 00 00 lea 0x2018(%rsi,%rdx,1),%ecx /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1955 20.00 : 4cceac: eb 9e jmp 4cce4c 0.00 : 4cceae: 66 90 xchg %ax,%ax 0.00 : 4cceb0: 48 89 ca mov %rcx,%rdx 0.00 : 4cceb3: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4cceb7: 81 c2 00 20 00 00 add $0x2000,%edx 0.00 : 4ccebd: 89 d1 mov %edx,%ecx 0.00 : 4ccebf: eb 8b jmp 4cce4c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2502 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2357 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2399 20.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2431 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4060 : : * must be called before grabbing the lock, to make sure the data is ready to : * write. : */ : static void : XLogWrite(XLogwrtRqst WriteRqst, bool flexible) : { 0.00 : 4d4060: 55 push %rbp 0.00 : 4d4061: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4064: 41 57 push %r15 0.00 : 4d4066: 41 56 push %r14 0.00 : 4d4068: 41 55 push %r13 : /* : * Within the loop, curridx is the cache block index of the page to : * consider writing. Begin at the buffer containing the next unwritten : * page, or last partially written page. : */ : curridx = XLogRecPtrToBufIdx(LogwrtResult.Write); 0.00 : 4d406a: 45 31 ed xor %r13d,%r13d : * must be called before grabbing the lock, to make sure the data is ready to : * write. : */ : static void : XLogWrite(XLogwrtRqst WriteRqst, bool flexible) : { 0.00 : 4d406d: 41 54 push %r12 0.00 : 4d406f: 53 push %rbx 0.00 : 4d4070: 48 83 ec 48 sub $0x48,%rsp 0.00 : 4d4074: 48 89 75 98 mov %rsi,-0x68(%rbp) 0.00 : 4d4078: 48 89 75 c0 mov %rsi,-0x40(%rbp) : Assert(CritSectionCount > 0); : : /* : * Update local LogwrtResult (caller probably did this already, but...) : */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d407c: 48 8b 35 15 51 6a 00 mov 0x6a5115(%rip),%rsi # b79198 : * must be called before grabbing the lock, to make sure the data is ready to : * write. : */ : static void : XLogWrite(XLogwrtRqst WriteRqst, bool flexible) : { 0.00 : 4d4083: 48 89 7d a0 mov %rdi,-0x60(%rbp) 0.00 : 4d4087: 48 89 7d b8 mov %rdi,-0x48(%rbp) 0.00 : 4d408b: 88 55 97 mov %dl,-0x69(%rbp) : Assert(CritSectionCount > 0); : : /* : * Update local LogwrtResult (caller probably did this already, but...) : */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d408e: 48 8b 96 28 01 00 00 mov 0x128(%rsi),%rdx 0.00 : 4d4095: 48 89 15 14 51 6a 00 mov %rdx,0x6a5114(%rip) # b791b0 0.00 : 4d409c: 48 8b 86 30 01 00 00 mov 0x130(%rsi),%rax : /* : * Within the loop, curridx is the cache block index of the page to : * consider writing. Begin at the buffer containing the next unwritten : * page, or last partially written page. : */ : curridx = XLogRecPtrToBufIdx(LogwrtResult.Write); 0.00 : 4d40a3: 48 89 d1 mov %rdx,%rcx 0.00 : 4d40a6: 48 c1 ea 0d shr $0xd,%rdx : Assert(CritSectionCount > 0); : : /* : * Update local LogwrtResult (caller probably did this already, but...) : */ : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d40aa: 48 89 05 07 51 6a 00 mov %rax,0x6a5107(%rip) # b791b8 : /* : * Within the loop, curridx is the cache block index of the page to : * consider writing. Begin at the buffer containing the next unwritten : * page, or last partially written page. : */ : curridx = XLogRecPtrToBufIdx(LogwrtResult.Write); 0.00 : 4d40b1: 8b 86 50 01 00 00 mov 0x150(%rsi),%eax 0.00 : 4d40b7: c7 45 b0 00 00 00 00 movl $0x0,-0x50(%rbp) 0.00 : 4d40be: c7 45 b4 00 00 00 00 movl $0x0,-0x4c(%rbp) 0.00 : 4d40c5: 83 c0 01 add $0x1,%eax 0.00 : 4d40c8: 48 63 f8 movslq %eax,%rdi 0.00 : 4d40cb: 48 89 d0 mov %rdx,%rax 0.00 : 4d40ce: 31 d2 xor %edx,%edx 0.00 : 4d40d0: 48 f7 f7 div %rdi 0.00 : 4d40d3: 89 55 ac mov %edx,-0x54(%rbp) 0.00 : 4d40d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4d40dd: 00 00 00 : : while (LogwrtResult.Write < WriteRqst.Write) 0.00 : 4d40e0: 48 3b 4d a0 cmp -0x60(%rbp),%rcx 0.00 : 4d40e4: 0f 83 ef 01 00 00 jae 4d42d9 : /* : * Make sure we're not ahead of the insert process. This could happen : * if we're passed a bogus WriteRqst.Write that is past the end of the : * last page that's been initialized by AdvanceXLInsertBuffer. : */ : XLogRecPtr EndPtr = XLogCtl->xlblocks[curridx]; 0.00 : 4d40ea: 48 63 55 ac movslq -0x54(%rbp),%rdx 0.00 : 4d40ee: 48 8b 86 48 01 00 00 mov 0x148(%rsi),%rax 0.00 : 4d40f5: 48 8b 1c d0 mov (%rax,%rdx,8),%rbx : : if (LogwrtResult.Write >= EndPtr) 0.00 : 4d40f9: 48 39 cb cmp %rcx,%rbx 0.00 : 4d40fc: 0f 86 90 04 00 00 jbe 4d4592 : (uint32) LogwrtResult.Write, : (uint32) (EndPtr >> 32), (uint32) EndPtr); : : /* Advance LogwrtResult.Write to end of current buffer page */ : LogwrtResult.Write = EndPtr; : ispartialpage = WriteRqst.Write < LogwrtResult.Write; 0.00 : 4d4102: 48 3b 5d a0 cmp -0x60(%rbp),%rbx : : if (!XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) 0.00 : 4d4106: 48 8d 43 ff lea -0x1(%rbx),%rax : (uint32) (LogwrtResult.Write >> 32), : (uint32) LogwrtResult.Write, : (uint32) (EndPtr >> 32), (uint32) EndPtr); : : /* Advance LogwrtResult.Write to end of current buffer page */ : LogwrtResult.Write = EndPtr; 0.00 : 4d410a: 48 89 1d 9f 50 6a 00 mov %rbx,0x6a509f(%rip) # b791b0 : ispartialpage = WriteRqst.Write < LogwrtResult.Write; 0.00 : 4d4111: 0f 97 45 ab seta -0x55(%rbp) : : if (!XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2357 20.00 : 4d4115: 48 c1 e8 18 shr $0x18,%rax 0.00 : 4d4119: 48 3b 05 b0 50 6a 00 cmp 0x6a50b0(%rip),%rax # b791d0 0.00 : 4d4120: 74 49 je 4d416b : /* : * Switch to new logfile segment. We cannot have any pending : * pages here (since we dump what we have at segment end). : */ : Assert(npages == 0); : if (openLogFile >= 0) 0.00 : 4d4122: 44 8b 1d 2b 3d 69 00 mov 0x693d2b(%rip),%r11d # b67e54 0.00 : 4d4129: 45 85 db test %r11d,%r11d 0.00 : 4d412c: 78 05 js 4d4133 : XLogFileClose(); 0.00 : 4d412e: e8 bd a2 ff ff callq 4ce3f0 : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); 0.00 : 4d4133: 48 8b 3d 76 50 6a 00 mov 0x6a5076(%rip),%rdi # b791b0 : : /* create/use new log file */ : use_existent = true; : openLogFile = XLogFileInit(openLogSegNo, &use_existent, true); 0.00 : 4d413a: 48 8d 75 d7 lea -0x29(%rbp),%rsi 0.00 : 4d413e: ba 01 00 00 00 mov $0x1,%edx : if (openLogFile >= 0) : XLogFileClose(); : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); : : /* create/use new log file */ : use_existent = true; 0.00 : 4d4143: c6 45 d7 01 movb $0x1,-0x29(%rbp) : * pages here (since we dump what we have at segment end). : */ : Assert(npages == 0); : if (openLogFile >= 0) : XLogFileClose(); : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); 0.00 : 4d4147: 48 83 ef 01 sub $0x1,%rdi 0.00 : 4d414b: 48 c1 ef 18 shr $0x18,%rdi 0.00 : 4d414f: 48 89 3d 7a 50 6a 00 mov %rdi,0x6a507a(%rip) # b791d0 : : /* create/use new log file */ : use_existent = true; : openLogFile = XLogFileInit(openLogSegNo, &use_existent, true); 0.00 : 4d4156: e8 e5 d5 ff ff callq 4d1740 : openLogOff = 0; 0.00 : 4d415b: c7 05 a7 50 6a 00 00 movl $0x0,0x6a50a7(%rip) # b7920c 0.00 : 4d4162: 00 00 00 : XLogFileClose(); : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); : : /* create/use new log file */ : use_existent = true; : openLogFile = XLogFileInit(openLogSegNo, &use_existent, true); 0.00 : 4d4165: 89 05 e9 3c 69 00 mov %eax,0x693ce9(%rip) # b67e54 : openLogOff = 0; : } : : /* Make sure we have the current logfile open */ : if (openLogFile < 0) 0.00 : 4d416b: 44 8b 15 e2 3c 69 00 mov 0x693ce2(%rip),%r10d # b67e54 0.00 : 4d4172: 45 85 d2 test %r10d,%r10d 0.00 : 4d4175: 0f 88 b5 03 00 00 js 4d4530 : openLogFile = XLogFileOpen(openLogSegNo); : openLogOff = 0; : } : : /* Add current page to the set of pending pages-to-dump */ : if (npages == 0) 0.00 : 4d417b: 45 85 ed test %r13d,%r13d 0.00 : 4d417e: 0f 84 b4 02 00 00 je 4d4438 0.00 : 4d4184: 48 8b 15 25 50 6a 00 mov 0x6a5025(%rip),%rdx # b791b0 : { : /* first of group */ : startidx = curridx; : startoffset = (LogwrtResult.Write - XLOG_BLCKSZ) % XLogSegSize; : } : npages++; 0.00 : 4d418b: 41 83 c5 01 add $0x1,%r13d : * contiguous in memory), or if we are at the end of the logfile : * segment. : */ : last_iteration = WriteRqst.Write <= LogwrtResult.Write; : : finishing_seg = !ispartialpage && 0.00 : 4d418f: 45 31 ff xor %r15d,%r15d 0.00 : 4d4192: 80 7d ab 00 cmpb $0x0,-0x55(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2399 20.00 : 4d4196: 75 12 jne 4d41aa 0.00 : 4d4198: 44 89 e8 mov %r13d,%eax 0.00 : 4d419b: c1 e0 0d shl $0xd,%eax 0.00 : 4d419e: 03 45 b4 add -0x4c(%rbp),%eax 0.00 : 4d41a1: 3d ff ff ff 00 cmp $0xffffff,%eax 0.00 : 4d41a6: 41 0f 97 c7 seta %r15b : (startoffset + npages * XLOG_BLCKSZ) >= XLogSegSize; : : if (last_iteration || 0.00 : 4d41aa: 48 39 55 a0 cmp %rdx,-0x60(%rbp) 0.00 : 4d41ae: 76 1b jbe 4d41cb 0.00 : 4d41b0: 48 8b 05 e1 4f 6a 00 mov 0x6a4fe1(%rip),%rax # b79198 0.00 : 4d41b7: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 4d41ba: 39 90 50 01 00 00 cmp %edx,0x150(%rax) 0.00 : 4d41c0: 74 09 je 4d41cb 0.00 : 4d41c2: 45 84 ff test %r15b,%r15b 0.00 : 4d41c5: 0f 84 d0 00 00 00 je 4d429b : Size nbytes; : Size nleft; : int written; : : /* Need to seek in the file? */ : if (openLogOff != startoffset) 0.00 : 4d41cb: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 4d41ce: 39 05 38 50 6a 00 cmp %eax,0x6a5038(%rip) # b7920c 0.00 : 4d41d4: 74 21 je 4d41f7 : { : if (lseek(openLogFile, (off_t) startoffset, SEEK_SET) < 0) 0.00 : 4d41d6: 8b 3d 78 3c 69 00 mov 0x693c78(%rip),%edi # b67e54 0.00 : 4d41dc: 31 d2 xor %edx,%edx 0.00 : 4d41de: 89 c6 mov %eax,%esi 0.00 : 4d41e0: e8 8b 59 f9 ff callq 469b70 0.00 : 4d41e5: 48 85 c0 test %rax,%rax 0.00 : 4d41e8: 0f 88 e6 03 00 00 js 4d45d4 : ereport(PANIC, : (errcode_for_file_access(), : errmsg("could not seek in log file %s to offset %u: %m", : XLogFileNameP(ThisTimeLineID, openLogSegNo), : startoffset))); : openLogOff = startoffset; 0.00 : 4d41ee: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 4d41f1: 89 15 15 50 6a 00 mov %edx,0x6a5015(%rip) # b7920c : } : : /* OK to write the page(s) */ : from = XLogCtl->pages + startidx * (Size) XLOG_BLCKSZ; 0.00 : 4d41f7: 4c 63 65 b0 movslq -0x50(%rbp),%r12 0.00 : 4d41fb: 48 8b 05 96 4f 6a 00 mov 0x6a4f96(%rip),%rax # b79198 : nbytes = npages * (Size) XLOG_BLCKSZ; 0.00 : 4d4202: 4d 63 f5 movslq %r13d,%r14 0.00 : 4d4205: 49 c1 e6 0d shl $0xd,%r14 : * must be called before grabbing the lock, to make sure the data is ready to : * write. : */ : static void : XLogWrite(XLogwrtRqst WriteRqst, bool flexible) : { 0.00 : 4d4209: 4c 89 f3 mov %r14,%rbx : startoffset))); : openLogOff = startoffset; : } : : /* OK to write the page(s) */ : from = XLogCtl->pages + startidx * (Size) XLOG_BLCKSZ; 0.00 : 4d420c: 49 c1 e4 0d shl $0xd,%r12 0.00 : 4d4210: 4c 03 a0 40 01 00 00 add 0x140(%rax),%r12 : * must be called before grabbing the lock, to make sure the data is ready to : * write. : */ : static void : XLogWrite(XLogwrtRqst WriteRqst, bool flexible) : { 0.00 : 4d4217: e8 a4 5a f9 ff callq 469cc0 <__errno_location@plt> 0.00 : 4d421c: 49 89 c5 mov %rax,%r13 0.00 : 4d421f: eb 14 jmp 4d4235 0.00 : 4d4221: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : errmsg("could not write to log file %s " : "at offset %u, length %zu: %m", : XLogFileNameP(ThisTimeLineID, openLogSegNo), : openLogOff, nbytes))); : } : nleft -= written; 0.00 : 4d4228: 48 98 cltq 0.00 : 4d422a: 48 29 c3 sub %rax,%rbx : from += written; 0.00 : 4d422d: 49 01 c4 add %rax,%r12 : } while (nleft > 0); 0.00 : 4d4230: 48 85 db test %rbx,%rbx 0.00 : 4d4233: 74 53 je 4d4288 : from = XLogCtl->pages + startidx * (Size) XLOG_BLCKSZ; : nbytes = npages * (Size) XLOG_BLCKSZ; : nleft = nbytes; : do : { : errno = 0; 0.00 : 4d4235: 41 c7 45 00 00 00 00 movl $0x0,0x0(%r13) 0.00 : 4d423c: 00 : written = write(openLogFile, from, nleft); 0.00 : 4d423d: 8b 3d 11 3c 69 00 mov 0x693c11(%rip),%edi # b67e54 0.00 : 4d4243: 48 89 da mov %rbx,%rdx 0.00 : 4d4246: 4c 89 e6 mov %r12,%rsi 0.00 : 4d4249: e8 42 5e f9 ff callq 46a090 : if (written <= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2431 20.00 : 4d424e: 85 c0 test %eax,%eax 0.00 : 4d4250: 7f d6 jg 4d4228 : { : if (errno == EINTR) 0.00 : 4d4252: 41 83 7d 00 04 cmpl $0x4,0x0(%r13) 0.00 : 4d4257: 74 d7 je 4d4230 : continue; : ereport(PANIC, 0.00 : 4d4259: 45 31 c0 xor %r8d,%r8d 0.00 : 4d425c: b9 3b d6 7b 00 mov $0x7bd63b,%ecx 0.00 : 4d4261: ba 88 09 00 00 mov $0x988,%edx 0.00 : 4d4266: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d426b: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d4270: e8 4b 68 2a 00 callq 77aac0 0.00 : 4d4275: 84 c0 test %al,%al 0.00 : 4d4277: 0f 85 b6 03 00 00 jne 4d4633 0.00 : 4d427d: e8 4e 52 f9 ff callq 4694d0 0.00 : 4d4282: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : nleft -= written; : from += written; : } while (nleft > 0); : : /* Update state for write */ : openLogOff += nbytes; 0.00 : 4d4288: 44 01 35 7d 4f 6a 00 add %r14d,0x6a4f7d(%rip) # b7920c : * segment is ready to copy to archival storage, and to update the : * timer for archive_timeout, and to signal for a checkpoint if : * too many logfile segments have been used since the last : * checkpoint. : */ : if (finishing_seg) 0.00 : 4d428f: 45 84 ff test %r15b,%r15b 0.00 : 4d4292: 0f 85 c8 01 00 00 jne 4d4460 : */ : if (IsUnderPostmaster && XLogCheckpointNeeded(openLogSegNo)) : { : (void) GetRedoRecPtr(); : if (XLogCheckpointNeeded(openLogSegNo)) : RequestCheckpoint(CHECKPOINT_CAUSE_XLOG); 0.00 : 4d4298: 45 31 ed xor %r13d,%r13d : } : } : } : : if (ispartialpage) 0.00 : 4d429b: 80 7d ab 00 cmpb $0x0,-0x55(%rbp) 0.00 : 4d429f: 0f 85 dd 02 00 00 jne 4d4582 : { : /* Only asked to write a partial page */ : LogwrtResult.Write = WriteRqst.Write; : break; : } : curridx = NextBufIdx(curridx); 0.00 : 4d42a5: 8b 55 ac mov -0x54(%rbp),%edx 0.00 : 4d42a8: 48 8b 35 e9 4e 6a 00 mov 0x6a4ee9(%rip),%rsi # b79198 0.00 : 4d42af: 8b 45 ac mov -0x54(%rbp),%eax 0.00 : 4d42b2: 83 c2 01 add $0x1,%edx 0.00 : 4d42b5: 39 86 50 01 00 00 cmp %eax,0x150(%rsi) 0.00 : 4d42bb: b8 00 00 00 00 mov $0x0,%eax 0.00 : 4d42c0: 0f 45 c2 cmovne %edx,%eax : : /* If flexible, break out of loop as soon as we wrote something */ : if (flexible && npages == 0) 0.00 : 4d42c3: 80 7d 97 00 cmpb $0x0,-0x69(%rbp) : { : /* Only asked to write a partial page */ : LogwrtResult.Write = WriteRqst.Write; : break; : } : curridx = NextBufIdx(curridx); 0.00 : 4d42c7: 89 45 ac mov %eax,-0x54(%rbp) : : /* If flexible, break out of loop as soon as we wrote something */ : if (flexible && npages == 0) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2502 40.00 : 4d42ca: 0f 84 58 01 00 00 je 4d4428 0.00 : 4d42d0: 45 85 ed test %r13d,%r13d 0.00 : 4d42d3: 0f 85 4f 01 00 00 jne 4d4428 : Assert(npages == 0); : : /* : * If asked to flush, do so : */ : if (LogwrtResult.Flush < WriteRqst.Flush && 0.00 : 4d42d9: 48 8b 15 d8 4e 6a 00 mov 0x6a4ed8(%rip),%rdx # b791b8 0.00 : 4d42e0: 48 3b 55 98 cmp -0x68(%rbp),%rdx 0.00 : 4d42e4: 0f 83 9e 00 00 00 jae 4d4388 0.00 : 4d42ea: 48 8b 05 bf 4e 6a 00 mov 0x6a4ebf(%rip),%rax # b791b0 0.00 : 4d42f1: 48 39 c2 cmp %rax,%rdx 0.00 : 4d42f4: 0f 83 8e 00 00 00 jae 4d4388 : /* : * Could get here without iterating above loop, in which case we might : * have no open file or the wrong one. However, we do not need to : * fsync more than one file. : */ : if (sync_method != SYNC_METHOD_OPEN && 0.00 : 4d42fa: 8b 15 4c 3b 69 00 mov 0x693b4c(%rip),%edx # b67e4c 0.00 : 4d4300: 83 fa 02 cmp $0x2,%edx 0.00 : 4d4303: 74 75 je 4d437a 0.00 : 4d4305: 83 fa 04 cmp $0x4,%edx 0.00 : 4d4308: 74 70 je 4d437a : sync_method != SYNC_METHOD_OPEN_DSYNC) : { : if (openLogFile >= 0 && 0.00 : 4d430a: 44 8b 05 43 3b 69 00 mov 0x693b43(%rip),%r8d # b67e54 0.00 : 4d4311: 45 85 c0 test %r8d,%r8d 0.00 : 4d4314: 78 27 js 4d433d 0.00 : 4d4316: 48 83 e8 01 sub $0x1,%rax 0.00 : 4d431a: 48 c1 e8 18 shr $0x18,%rax 0.00 : 4d431e: 48 3b 05 ab 4e 6a 00 cmp 0x6a4eab(%rip),%rax # b791d0 0.00 : 4d4325: 74 3a je 4d4361 : !XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) : XLogFileClose(); 0.00 : 4d4327: e8 c4 a0 ff ff callq 4ce3f0 : if (openLogFile < 0) 0.00 : 4d432c: 8b 3d 22 3b 69 00 mov 0x693b22(%rip),%edi # b67e54 0.00 : 4d4332: 85 ff test %edi,%edi 0.00 : 4d4334: 79 2b jns 4d4361 0.00 : 4d4336: 48 8b 05 73 4e 6a 00 mov 0x6a4e73(%rip),%rax # b791b0 : { : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); 0.00 : 4d433d: 48 8d 78 ff lea -0x1(%rax),%rdi 0.00 : 4d4341: 48 c1 ef 18 shr $0x18,%rdi 0.00 : 4d4345: 48 89 3d 84 4e 6a 00 mov %rdi,0x6a4e84(%rip) # b791d0 : openLogFile = XLogFileOpen(openLogSegNo); 0.00 : 4d434c: e8 8f b1 ff ff callq 4cf4e0 : openLogOff = 0; 0.00 : 4d4351: c7 05 b1 4e 6a 00 00 movl $0x0,0x6a4eb1(%rip) # b7920c 0.00 : 4d4358: 00 00 00 : !XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) : XLogFileClose(); : if (openLogFile < 0) : { : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); : openLogFile = XLogFileOpen(openLogSegNo); 0.00 : 4d435b: 89 05 f3 3a 69 00 mov %eax,0x693af3(%rip) # b67e54 : openLogOff = 0; : } : : issue_xlog_fsync(openLogFile, openLogSegNo); 0.00 : 4d4361: 48 8b 35 68 4e 6a 00 mov 0x6a4e68(%rip),%rsi # b791d0 0.00 : 4d4368: 8b 3d e6 3a 69 00 mov 0x693ae6(%rip),%edi # b67e54 0.00 : 4d436e: e8 0d 9e ff ff callq 4ce180 0.00 : 4d4373: 48 8b 05 36 4e 6a 00 mov 0x6a4e36(%rip),%rax # b791b0 : } : : /* signal that we need to wakeup walsenders later */ : WalSndWakeupRequest(); 0.00 : 4d437a: c6 05 48 8a 6a 00 01 movb $0x1,0x6a8a48(%rip) # b7cdc9 : : LogwrtResult.Flush = LogwrtResult.Write; 0.00 : 4d4381: 48 89 05 30 4e 6a 00 mov %rax,0x6a4e30(%rip) # b791b8 : * We make sure that the shared 'request' values do not fall behind the : * 'result' values. This is not absolutely essential, but it saves some : * code in a couple of places. : */ : { : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4388: 48 8b 15 09 4e 6a 00 mov 0x6a4e09(%rip),%rdx # b79198 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d438f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d4394: 48 81 c2 08 06 00 00 add $0x608,%rdx 0.00 : 4d439b: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d439e: 84 c0 test %al,%al 0.00 : 4d43a0: 0f 85 ba 01 00 00 jne 4d4560 : XLogCtl->LogwrtResult = LogwrtResult; 0.00 : 4d43a6: 48 8b 05 eb 4d 6a 00 mov 0x6a4deb(%rip),%rax # b79198 0.00 : 4d43ad: 48 8b 15 fc 4d 6a 00 mov 0x6a4dfc(%rip),%rdx # b791b0 0.00 : 4d43b4: 48 89 90 28 01 00 00 mov %rdx,0x128(%rax) 0.00 : 4d43bb: 48 8b 15 f6 4d 6a 00 mov 0x6a4df6(%rip),%rdx # b791b8 0.00 : 4d43c2: 48 89 90 30 01 00 00 mov %rdx,0x130(%rax) : if (XLogCtl->LogwrtRqst.Write < LogwrtResult.Write) 0.00 : 4d43c9: 48 8b 35 c8 4d 6a 00 mov 0x6a4dc8(%rip),%rsi # b79198 0.00 : 4d43d0: 48 8b 05 d9 4d 6a 00 mov 0x6a4dd9(%rip),%rax # b791b0 0.00 : 4d43d7: 48 39 86 d8 00 00 00 cmp %rax,0xd8(%rsi) 0.00 : 4d43de: 73 0e jae 4d43ee : XLogCtl->LogwrtRqst.Write = LogwrtResult.Write; 0.00 : 4d43e0: 48 89 86 d8 00 00 00 mov %rax,0xd8(%rsi) 0.00 : 4d43e7: 48 8b 35 aa 4d 6a 00 mov 0x6a4daa(%rip),%rsi # b79198 : if (XLogCtl->LogwrtRqst.Flush < LogwrtResult.Flush) 0.00 : 4d43ee: 48 8b 05 c3 4d 6a 00 mov 0x6a4dc3(%rip),%rax # b791b8 0.00 : 4d43f5: 48 39 86 e0 00 00 00 cmp %rax,0xe0(%rsi) 0.00 : 4d43fc: 73 07 jae 4d4405 : XLogCtl->LogwrtRqst.Flush = LogwrtResult.Flush; 0.00 : 4d43fe: 48 89 86 e0 00 00 00 mov %rax,0xe0(%rsi) : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d4405: 48 8b 05 8c 4d 6a 00 mov 0x6a4d8c(%rip),%rax # b79198 0.00 : 4d440c: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : } : } 0.00 : 4d4413: 48 83 c4 48 add $0x48,%rsp 0.00 : 4d4417: 5b pop %rbx 0.00 : 4d4418: 41 5c pop %r12 0.00 : 4d441a: 41 5d pop %r13 0.00 : 4d441c: 41 5e pop %r14 0.00 : 4d441e: 41 5f pop %r15 0.00 : 4d4420: c9 leaveq 0.00 : 4d4421: c3 retq 0.00 : 4d4422: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : curridx = NextBufIdx(curridx); : : /* If flexible, break out of loop as soon as we wrote something */ : if (flexible && npages == 0) : break; 0.00 : 4d4428: 48 8b 0d 81 4d 6a 00 mov 0x6a4d81(%rip),%rcx # b791b0 0.00 : 4d442f: e9 ac fc ff ff jmpq 4d40e0 0.00 : 4d4434: 0f 1f 40 00 nopl 0x0(%rax) : /* Add current page to the set of pending pages-to-dump */ : if (npages == 0) : { : /* first of group */ : startidx = curridx; : startoffset = (LogwrtResult.Write - XLOG_BLCKSZ) % XLogSegSize; 0.00 : 4d4438: 48 8b 15 71 4d 6a 00 mov 0x6a4d71(%rip),%rdx # b791b0 0.00 : 4d443f: 8d 82 00 e0 ff ff lea -0x2000(%rdx),%eax 0.00 : 4d4445: 25 ff ff ff 00 and $0xffffff,%eax 0.00 : 4d444a: 89 45 b4 mov %eax,-0x4c(%rbp) 0.00 : 4d444d: 8b 45 ac mov -0x54(%rbp),%eax 0.00 : 4d4450: 89 45 b0 mov %eax,-0x50(%rbp) 0.00 : 4d4453: e9 33 fd ff ff jmpq 4d418b 0.00 : 4d4458: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4d445f: 00 : * too many logfile segments have been used since the last : * checkpoint. : */ : if (finishing_seg) : { : issue_xlog_fsync(openLogFile, openLogSegNo); 0.00 : 4d4460: 48 8b 35 69 4d 6a 00 mov 0x6a4d69(%rip),%rsi # b791d0 0.00 : 4d4467: 8b 3d e7 39 69 00 mov 0x6939e7(%rip),%edi # b67e54 0.00 : 4d446d: e8 0e 9d ff ff callq 4ce180 : /* signal that we need to wakeup walsenders later */ : WalSndWakeupRequest(); : : LogwrtResult.Flush = LogwrtResult.Write; /* end of page */ : : if (XLogArchivingActive()) 0.00 : 4d4472: 80 3d cf 4c 6a 00 00 cmpb $0x0,0x6a4ccf(%rip) # b79148 : issue_xlog_fsync(openLogFile, openLogSegNo); : : /* signal that we need to wakeup walsenders later */ : WalSndWakeupRequest(); : : LogwrtResult.Flush = LogwrtResult.Write; /* end of page */ 0.00 : 4d4479: 48 8b 05 30 4d 6a 00 mov 0x6a4d30(%rip),%rax # b791b0 : if (finishing_seg) : { : issue_xlog_fsync(openLogFile, openLogSegNo); : : /* signal that we need to wakeup walsenders later */ : WalSndWakeupRequest(); 0.00 : 4d4480: c6 05 42 89 6a 00 01 movb $0x1,0x6a8942(%rip) # b7cdc9 : : LogwrtResult.Flush = LogwrtResult.Write; /* end of page */ 0.00 : 4d4487: 48 89 05 2a 4d 6a 00 mov %rax,0x6a4d2a(%rip) # b791b8 : : if (XLogArchivingActive()) 0.00 : 4d448e: 74 18 je 4d44a8 0.00 : 4d4490: 44 8b 0d c5 4c 6a 00 mov 0x6a4cc5(%rip),%r9d # b7915c 0.00 : 4d4497: 45 85 c9 test %r9d,%r9d 0.00 : 4d449a: 7e 0c jle 4d44a8 : XLogArchiveNotifySeg(openLogSegNo); 0.00 : 4d449c: 48 8b 3d 2d 4d 6a 00 mov 0x6a4d2d(%rip),%rdi # b791d0 0.00 : 4d44a3: e8 a8 75 00 00 callq 4dba50 : : XLogCtl->lastSegSwitchTime = (pg_time_t) time(NULL); 0.00 : 4d44a8: 48 8b 1d e9 4c 6a 00 mov 0x6a4ce9(%rip),%rbx # b79198 0.00 : 4d44af: 31 ff xor %edi,%edi 0.00 : 4d44b1: e8 ea 5c f9 ff callq 46a1a0 0.00 : 4d44b6: 48 89 83 20 01 00 00 mov %rax,0x120(%rbx) : * the last one. For speed, we first check using the local : * copy of RedoRecPtr, which might be out of date; if it looks : * like a checkpoint is needed, forcibly update RedoRecPtr and : * recheck. : */ : if (IsUnderPostmaster && XLogCheckpointNeeded(openLogSegNo)) 0.00 : 4d44bd: 80 3d f9 5b 6e 00 00 cmpb $0x0,0x6e5bf9(%rip) # bba0bd 0.00 : 4d44c4: 0f 84 ce fd ff ff je 4d4298 : { : XLogSegNo old_segno; : : XLByteToSeg(RedoRecPtr, old_segno); : : if (new_segno >= old_segno + (uint64) (CheckPointSegments - 1)) 0.00 : 4d44ca: 8b 05 70 39 69 00 mov 0x693970(%rip),%eax # b67e40 0.00 : 4d44d0: 48 8b 15 01 4f 6a 00 mov 0x6a4f01(%rip),%rdx # b793d8 0.00 : 4d44d7: 83 e8 01 sub $0x1,%eax 0.00 : 4d44da: 48 c1 ea 18 shr $0x18,%rdx 0.00 : 4d44de: 48 98 cltq 0.00 : 4d44e0: 48 01 d0 add %rdx,%rax 0.00 : 4d44e3: 48 39 05 e6 4c 6a 00 cmp %rax,0x6a4ce6(%rip) # b791d0 0.00 : 4d44ea: 0f 82 a8 fd ff ff jb 4d4298 : * like a checkpoint is needed, forcibly update RedoRecPtr and : * recheck. : */ : if (IsUnderPostmaster && XLogCheckpointNeeded(openLogSegNo)) : { : (void) GetRedoRecPtr(); 0.00 : 4d44f0: e8 2b 8f ff ff callq 4cd420 : { : XLogSegNo old_segno; : : XLByteToSeg(RedoRecPtr, old_segno); : : if (new_segno >= old_segno + (uint64) (CheckPointSegments - 1)) 0.00 : 4d44f5: 8b 05 45 39 69 00 mov 0x693945(%rip),%eax # b67e40 0.00 : 4d44fb: 48 8b 15 d6 4e 6a 00 mov 0x6a4ed6(%rip),%rdx # b793d8 0.00 : 4d4502: 83 e8 01 sub $0x1,%eax 0.00 : 4d4505: 48 c1 ea 18 shr $0x18,%rdx 0.00 : 4d4509: 48 98 cltq 0.00 : 4d450b: 48 01 d0 add %rdx,%rax 0.00 : 4d450e: 48 39 05 bb 4c 6a 00 cmp %rax,0x6a4cbb(%rip) # b791d0 0.00 : 4d4515: 0f 82 7d fd ff ff jb 4d4298 : */ : if (IsUnderPostmaster && XLogCheckpointNeeded(openLogSegNo)) : { : (void) GetRedoRecPtr(); : if (XLogCheckpointNeeded(openLogSegNo)) : RequestCheckpoint(CHECKPOINT_CAUSE_XLOG); 0.00 : 4d451b: bf 20 00 00 00 mov $0x20,%edi 0.00 : 4d4520: 45 31 ed xor %r13d,%r13d 0.00 : 4d4523: e8 68 9b 16 00 callq 63e090 0.00 : 4d4528: e9 6e fd ff ff jmpq 4d429b 0.00 : 4d452d: 0f 1f 00 nopl (%rax) : } : : /* Make sure we have the current logfile open */ : if (openLogFile < 0) : { : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); 0.00 : 4d4530: 48 8b 3d 79 4c 6a 00 mov 0x6a4c79(%rip),%rdi # b791b0 0.00 : 4d4537: 48 83 ef 01 sub $0x1,%rdi 0.00 : 4d453b: 48 c1 ef 18 shr $0x18,%rdi 0.00 : 4d453f: 48 89 3d 8a 4c 6a 00 mov %rdi,0x6a4c8a(%rip) # b791d0 : openLogFile = XLogFileOpen(openLogSegNo); 0.00 : 4d4546: e8 95 af ff ff callq 4cf4e0 : openLogOff = 0; 0.00 : 4d454b: c7 05 b7 4c 6a 00 00 movl $0x0,0x6a4cb7(%rip) # b7920c 0.00 : 4d4552: 00 00 00 : : /* Make sure we have the current logfile open */ : if (openLogFile < 0) : { : XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo); : openLogFile = XLogFileOpen(openLogSegNo); 0.00 : 4d4555: 89 05 f9 38 69 00 mov %eax,0x6938f9(%rip) # b67e54 0.00 : 4d455b: e9 1b fc ff ff jmpq 4d417b : * We make sure that the shared 'request' values do not fall behind the : * 'result' values. This is not absolutely essential, but it saves some : * code in a couple of places. : */ : { : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4560: 48 8b 3d 31 4c 6a 00 mov 0x6a4c31(%rip),%rdi # b79198 0.00 : 4d4567: ba f6 09 00 00 mov $0x9f6,%edx 0.00 : 4d456c: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d4571: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d4578: e8 c3 ba 1b 00 callq 690040 0.00 : 4d457d: e9 24 fe ff ff jmpq 4d43a6 : } : : if (ispartialpage) : { : /* Only asked to write a partial page */ : LogwrtResult.Write = WriteRqst.Write; 0.00 : 4d4582: 48 8b 45 a0 mov -0x60(%rbp),%rax 0.00 : 4d4586: 48 89 05 23 4c 6a 00 mov %rax,0x6a4c23(%rip) # b791b0 : break; 0.00 : 4d458d: e9 47 fd ff ff jmpq 4d42d9 : * last page that's been initialized by AdvanceXLInsertBuffer. : */ : XLogRecPtr EndPtr = XLogCtl->xlblocks[curridx]; : : if (LogwrtResult.Write >= EndPtr) : elog(PANIC, "xlog write request %X/%X is past end of log %X/%X", 0.00 : 4d4592: ba 3b d6 7b 00 mov $0x7bd63b,%edx 0.00 : 4d4597: be 2f 09 00 00 mov $0x92f,%esi 0.00 : 4d459c: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d45a1: e8 7a 6e 2a 00 callq 77b420 0.00 : 4d45a6: 48 8b 0d 03 4c 6a 00 mov 0x6a4c03(%rip),%rcx # b791b0 0.00 : 4d45ad: 49 89 d8 mov %rbx,%r8 0.00 : 4d45b0: 41 89 d9 mov %ebx,%r9d 0.00 : 4d45b3: 49 c1 e8 20 shr $0x20,%r8 0.00 : 4d45b7: be f8 b6 7b 00 mov $0x7bb6f8,%esi 0.00 : 4d45bc: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d45c1: 31 c0 xor %eax,%eax 0.00 : 4d45c3: 48 89 ca mov %rcx,%rdx 0.00 : 4d45c6: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4d45ca: e8 61 6c 2a 00 callq 77b230 0.00 : 4d45cf: e8 fc 4e f9 ff callq 4694d0 : : /* Need to seek in the file? */ : if (openLogOff != startoffset) : { : if (lseek(openLogFile, (off_t) startoffset, SEEK_SET) < 0) : ereport(PANIC, 0.00 : 4d45d4: 45 31 c0 xor %r8d,%r8d 0.00 : 4d45d7: b9 3b d6 7b 00 mov $0x7bd63b,%ecx 0.00 : 4d45dc: ba 73 09 00 00 mov $0x973,%edx 0.00 : 4d45e1: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d45e6: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d45eb: e8 d0 64 2a 00 callq 77aac0 0.00 : 4d45f0: 84 c0 test %al,%al 0.00 : 4d45f2: 0f 84 85 fc ff ff je 4d427d 0.00 : 4d45f8: 48 8b 35 d1 4b 6a 00 mov 0x6a4bd1(%rip),%rsi # b791d0 0.00 : 4d45ff: 8b 3d 5f 4b 6a 00 mov 0x6a4b5f(%rip),%edi # b79164 0.00 : 4d4605: e8 d6 99 ff ff callq 4cdfe0 0.00 : 4d460a: 8b 55 b4 mov -0x4c(%rbp),%edx 0.00 : 4d460d: 48 89 c6 mov %rax,%rsi 0.00 : 4d4610: bf 30 b7 7b 00 mov $0x7bb730,%edi 0.00 : 4d4615: 31 c0 xor %eax,%eax 0.00 : 4d4617: e8 84 82 2a 00 callq 77c8a0 : written = write(openLogFile, from, nleft); : if (written <= 0) : { : if (errno == EINTR) : continue; : ereport(PANIC, 0.00 : 4d461c: 89 c3 mov %eax,%ebx 0.00 : 4d461e: e8 cd 84 2a 00 callq 77caf0 0.00 : 4d4623: 89 de mov %ebx,%esi 0.00 : 4d4625: 89 c7 mov %eax,%edi 0.00 : 4d4627: 31 c0 xor %eax,%eax 0.00 : 4d4629: e8 b2 5f 2a 00 callq 77a5e0 0.00 : 4d462e: e9 4a fc ff ff jmpq 4d427d 0.00 : 4d4633: 8b 1d d3 4b 6a 00 mov 0x6a4bd3(%rip),%ebx # b7920c 0.00 : 4d4639: 48 8b 35 90 4b 6a 00 mov 0x6a4b90(%rip),%rsi # b791d0 0.00 : 4d4640: 8b 3d 1e 4b 6a 00 mov 0x6a4b1e(%rip),%edi # b79164 0.00 : 4d4646: e8 95 99 ff ff callq 4cdfe0 0.00 : 4d464b: 4c 89 f1 mov %r14,%rcx 0.00 : 4d464e: 48 89 c6 mov %rax,%rsi 0.00 : 4d4651: 89 da mov %ebx,%edx 0.00 : 4d4653: bf 60 b7 7b 00 mov $0x7bb760,%edi 0.00 : 4d4658: 31 c0 xor %eax,%eax 0.00 : 4d465a: e8 41 82 2a 00 callq 77c8a0 0.00 : 4d465f: eb bb jmp 4d461c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:906 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1092 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1093 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:908 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068fe70 : : * : * The lock is always acquired in exclusive mode with this function. : */ : bool : LWLockAcquireWithVar(LWLock *l, uint64 *valptr, uint64 val) : { 0.00 : 68fe70: 55 push %rbp 0.00 : 68fe71: 48 89 e5 mov %rsp,%rbp 0.00 : 68fe74: 41 57 push %r15 0.00 : 68fe76: 41 56 push %r14 0.00 : 68fe78: 49 89 fe mov %rdi,%r14 0.00 : 68fe7b: 41 55 push %r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:906 40.00 : 68fe7d: 41 54 push %r12 0.00 : 68fe7f: 53 push %rbx 0.00 : 68fe80: 48 83 ec 28 sub $0x28,%rsp : * to catch unsafe coding practices. : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) 0.00 : 68fe84: 81 3d 7a db 4e 00 c7 cmpl $0xc7,0x4edb7a(%rip) # b7da08 0.00 : 68fe8b: 00 00 00 : * : * The lock is always acquired in exclusive mode with this function. : */ : bool : LWLockAcquireWithVar(LWLock *l, uint64 *valptr, uint64 val) : { 0.00 : 68fe8e: 48 89 75 c0 mov %rsi,-0x40(%rbp) 0.00 : 68fe92: 48 89 55 b8 mov %rdx,-0x48(%rbp) : : /* internal function to implement LWLockAcquire and LWLockAcquireWithVar */ : static inline bool : LWLockAcquireCommon(LWLock *lock, LWLockMode mode, uint64 *valptr, uint64 val) : { : PGPROC *proc = MyProc; 0.00 : 68fe96: 4c 8b 25 ab da 4e 00 mov 0x4edaab(%rip),%r12 # b7d948 : * to catch unsafe coding practices. : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) 0.00 : 68fe9d: 0f 8f 1f 01 00 00 jg 68ffc2 : /* : * Lock out cancel/die interrupts until we exit the code section protected : * by the LWLock. This ensures that interrupts will not interfere with : * manipulations of data structures in shared memory. : */ : HOLD_INTERRUPTS(); 0.00 : 68fea3: 8b 05 ef a1 52 00 mov 0x52a1ef(%rip),%eax # bba098 : TRACE_POSTGRESQL_LWLOCK_WAIT_START(T_NAME(lock), T_ID(lock), mode); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); 0.00 : 68fea9: 4d 8d 6c 24 10 lea 0x10(%r12),%r13 : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; : : /* not waiting anymore */ : pg_atomic_fetch_sub_u32(&lock->nwaiters, 1); 0.00 : 68feae: 4c 8d 7f 08 lea 0x8(%rdi),%r15 0.00 : 68feb2: 31 db xor %ebx,%ebx 0.00 : 68feb4: c6 45 cf 01 movb $0x1,-0x31(%rbp) : /* : * Lock out cancel/die interrupts until we exit the code section protected : * by the LWLock. This ensures that interrupts will not interfere with : * manipulations of data structures in shared memory. : */ : HOLD_INTERRUPTS(); 0.00 : 68feb8: 83 c0 01 add $0x1,%eax 0.00 : 68febb: 89 05 d7 a1 52 00 mov %eax,0x52a1d7(%rip) # bba098 : break; : extraWaits++; : } : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; 0.00 : 68fec1: 48 8d 47 01 lea 0x1(%rdi),%rax 0.00 : 68fec5: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 68fec9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : bool mustwait; : : /* : * try to grab the lock the first time, we're not in the waitqueue yet. : */ : mustwait = LWLockAttemptLock(lock, mode, NULL); 0.00 : 68fed0: 31 d2 xor %edx,%edx 0.00 : 68fed2: 31 f6 xor %esi,%esi 0.00 : 68fed4: 4c 89 f7 mov %r14,%rdi 0.00 : 68fed7: e8 e4 ef ff ff callq 68eec0 : : if (!mustwait) 0.00 : 68fedc: 84 c0 test %al,%al 0.00 : 68fede: 74 7a je 68ff5a : * other lock will see our queue entries when releasing since they : * existed before we checked for the lock. : */ : : /* add to the queue */ : LWLockQueueSelf(lock, mode); 0.00 : 68fee0: 31 f6 xor %esi,%esi 0.00 : 68fee2: 4c 89 f7 mov %r14,%rdi 0.00 : 68fee5: e8 96 f1 ff ff callq 68f080 : : /* we're now guaranteed to be woken up if necessary */ : mustwait = LWLockAttemptLock(lock, mode, NULL); 0.00 : 68feea: 31 d2 xor %edx,%edx 0.00 : 68feec: 31 f6 xor %esi,%esi 0.00 : 68feee: 4c 89 f7 mov %r14,%rdi 0.00 : 68fef1: e8 ca ef ff ff callq 68eec0 : : /* ok, grabbed the lock the second time round, need to undo queueing */ : if (!mustwait) 0.00 : 68fef6: 84 c0 test %al,%al 0.00 : 68fef8: 75 09 jne 68ff03 0.00 : 68fefa: eb 30 jmp 68ff2c 0.00 : 68fefc: 0f 1f 40 00 nopl 0x0(%rax) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68ff00: 83 c3 01 add $0x1,%ebx : TRACE_POSTGRESQL_LWLOCK_WAIT_START(T_NAME(lock), T_ID(lock), mode); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); 0.00 : 68ff03: 31 f6 xor %esi,%esi 0.00 : 68ff05: 4c 89 ef mov %r13,%rdi 0.00 : 68ff08: e8 13 82 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68ff0d: 41 80 7c 24 41 00 cmpb $0x0,0x41(%r12) 0.00 : 68ff13: 75 eb jne 68ff00 : break; : extraWaits++; : } : : /* The atomic subtraction provides the barrier */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; 0.00 : 68ff15: 48 8b 55 d0 mov -0x30(%rbp),%rdx : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.00 : 68ff19: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 68ff1e: c6 02 01 movb $0x1,(%rdx) 0.00 : 68ff21: f0 41 0f c1 07 lock xadd %eax,(%r15) 0.00 : 68ff26: c6 45 cf 00 movb $0x0,-0x31(%rbp) 0.00 : 68ff2a: eb a4 jmp 68fed0 : LOG_LWDEBUG("LWLockAcquire", lock, "acquired, undoing queue"); : : #ifdef LWLOCK_STATS : lwstats->dequeue_self_count++; : #endif : if (!LWLockDequeueSelf(lock)) 0.00 : 68ff2c: 4c 89 f7 mov %r14,%rdi 0.00 : 68ff2f: e8 9c f2 ff ff callq 68f1d0 0.00 : 68ff34: 84 c0 test %al,%al 0.00 : 68ff36: 75 22 jne 68ff5a 0.00 : 68ff38: eb 09 jmp 68ff43 0.00 : 68ff3a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : for (;;) : { : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68ff40: 83 c3 01 add $0x1,%ebx : * reset at some inconvenient point later, and releaseOk : * wouldn't be managed correctly. : */ : for (;;) : { : PGSemaphoreLock(&proc->sem, false); 0.00 : 68ff43: 31 f6 xor %esi,%esi 0.00 : 68ff45: 4c 89 ef mov %r13,%rdi 0.00 : 68ff48: e8 d3 81 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68ff4d: 41 80 7c 24 41 00 cmpb $0x0,0x41(%r12) 0.00 : 68ff53: 75 eb jne 68ff40 : /* : * Reset releaseOk - if somebody woke us they'll have set it : * to false. No need for a barrier here - we got the lock and : * will perform wakeup if necessary. : */ : BOOL_ACCESS_ONCE(lock->releaseOK) = true; 0.00 : 68ff55: 41 c6 46 01 01 movb $0x1,0x1(%r14) : /* Now loop back and try to acquire lock again. */ : result = false; : } : : /* If there's a variable associated with this lock, initialize it */ : if (valptr) 0.00 : 68ff5a: 48 83 7d c0 00 cmpq $0x0,-0x40(%rbp) 0.00 : 68ff5f: 74 0b je 68ff6c : *valptr = val; 0.00 : 68ff61: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 68ff65: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 68ff69: 48 89 10 mov %rdx,(%rax) : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68ff6c: 8b 15 96 da 4e 00 mov 0x4eda96(%rip),%edx # b7da08 0.00 : 68ff72: 48 63 c2 movslq %edx,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68ff75: 83 c2 01 add $0x1,%edx : *valptr = val; : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1092 20.00 : 68ff78: 48 c1 e0 04 shl $0x4,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 0.00 : 68ff7c: 85 db test %ebx,%ebx : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68ff7e: 89 15 84 da 4e 00 mov %edx,0x4eda84(%rip) # b7da08 : *valptr = val; : : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), mode); : : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68ff84: 4c 89 b0 40 da b7 00 mov %r14,0xb7da40(%rax) : held_lwlocks[num_held_lwlocks++].mode = mode; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1093 20.00 : 68ff8b: c7 80 48 da b7 00 00 movl $0x0,0xb7da48(%rax) 0.00 : 68ff92: 00 00 00 : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 0.00 : 68ff95: 7e 18 jle 68ffaf 0.00 : 68ff97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 68ff9e: 00 00 : PGSemaphoreUnlock(&proc->sem); 0.00 : 68ffa0: 4c 89 ef mov %r13,%rdi 0.00 : 68ffa3: 83 eb 01 sub $0x1,%ebx 0.00 : 68ffa6: e8 e5 80 fa ff callq 638090 : held_lwlocks[num_held_lwlocks++].mode = mode; : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 0.00 : 68ffab: 85 db test %ebx,%ebx 0.00 : 68ffad: 7f f1 jg 68ffa0 : */ : bool : LWLockAcquireWithVar(LWLock *l, uint64 *valptr, uint64 val) : { : return LWLockAcquireCommon(l, LW_EXCLUSIVE, valptr, val); : } 0.00 : 68ffaf: 0f b6 45 cf movzbl -0x31(%rbp),%eax 0.00 : 68ffb3: 48 83 c4 28 add $0x28,%rsp 0.00 : 68ffb7: 5b pop %rbx 0.00 : 68ffb8: 41 5c pop %r12 0.00 : 68ffba: 41 5d pop %r13 0.00 : 68ffbc: 41 5e pop %r14 0.00 : 68ffbe: 41 5f pop %r15 0.00 : 68ffc0: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:908 20.00 : 68ffc1: c3 retq : */ : Assert(!(proc == NULL && IsUnderPostmaster)); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) : elog(ERROR, "too many LWLocks taken"); 0.00 : 68ffc2: ba 70 d1 8a 00 mov $0x8ad170,%edx 0.00 : 68ffc7: be b0 03 00 00 mov $0x3b0,%esi 0.00 : 68ffcc: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68ffd1: e8 4a b4 0e 00 callq 77b420 0.00 : 68ffd6: be 8e d0 8a 00 mov $0x8ad08e,%esi 0.00 : 68ffdb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68ffe0: 31 c0 xor %eax,%eax 0.00 : 68ffe2: e8 49 b2 0e 00 callq 77b230 0.00 : 68ffe7: e8 e4 94 dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 60.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1367 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1371 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1378 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000697850 : : * locally before returning (we hope this will not happen often enough : * to be a performance problem). : */ : static void : register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1367 60.00 : 697850: 55 push %rbp 0.00 : 697851: 48 89 f8 mov %rdi,%rax 0.00 : 697854: 41 89 f0 mov %esi,%r8d 0.00 : 697857: 48 89 e5 mov %rsp,%rbp 0.00 : 69785a: 53 push %rbx 0.00 : 69785b: 48 89 d3 mov %rdx,%rbx 0.00 : 69785e: 48 83 ec 08 sub $0x8,%rsp : /* Temp relations should never be fsync'd */ : Assert(!SmgrIsTemp(reln)); : : if (pendingOpsTable) 0.00 : 697862: 48 83 3d 2e 6f 4e 00 cmpq $0x0,0x4e6f2e(%rip) # b7e798 0.00 : 697869: 00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1371 20.00 : 69786a: 74 1c je 697888 : { : /* push it into local pending-ops table */ : RememberFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno); 0.00 : 69786c: 8b 4a 04 mov 0x4(%rdx),%ecx 0.00 : 69786f: 48 8b 3f mov (%rdi),%rdi 0.00 : 697872: 44 89 c2 mov %r8d,%edx 0.00 : 697875: 8b 70 08 mov 0x8(%rax),%esi : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not fsync file \"%s\": %m", : FilePathName(seg->mdfd_vfd)))); : } : } 0.00 : 697878: 48 83 c4 08 add $0x8,%rsp 0.00 : 69787c: 5b pop %rbx 0.00 : 69787d: c9 leaveq : Assert(!SmgrIsTemp(reln)); : : if (pendingOpsTable) : { : /* push it into local pending-ops table */ : RememberFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno); 0.00 : 69787e: e9 8d fa ff ff jmpq 697310 0.00 : 697883: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : else : { : if (ForwardFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno)) 0.00 : 697888: 8b 4a 04 mov 0x4(%rdx),%ecx /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1378 20.00 : 69788b: 48 8b 3f mov (%rdi),%rdi 0.00 : 69788e: 44 89 c2 mov %r8d,%edx 0.00 : 697891: 8b 70 08 mov 0x8(%rax),%esi 0.00 : 697894: e8 77 64 fa ff callq 63dd10 0.00 : 697899: 84 c0 test %al,%al 0.00 : 69789b: 74 0b je 6978a8 : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not fsync file \"%s\": %m", : FilePathName(seg->mdfd_vfd)))); : } : } 0.00 : 69789d: 48 83 c4 08 add $0x8,%rsp 0.00 : 6978a1: 5b pop %rbx 0.00 : 6978a2: c9 leaveq 0.00 : 6978a3: c3 retq 0.00 : 6978a4: 0f 1f 40 00 nopl 0x0(%rax) : else : { : if (ForwardFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno)) : return; /* passed it off successfully */ : : ereport(DEBUG1, 0.00 : 6978a8: 45 31 c0 xor %r8d,%r8d 0.00 : 6978ab: b9 b0 e3 8a 00 mov $0x8ae3b0,%ecx 0.00 : 6978b0: ba 66 05 00 00 mov $0x566,%edx 0.00 : 6978b5: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 6978ba: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 6978bf: e8 fc 31 0e 00 callq 77aac0 0.00 : 6978c4: 84 c0 test %al,%al 0.00 : 6978c6: 75 58 jne 697920 : (errmsg("could not forward fsync request because request queue is full"))); : : if (FileSync(seg->mdfd_vfd) < 0) 0.00 : 6978c8: 8b 3b mov (%rbx),%edi 0.00 : 6978ca: e8 b1 2e fe ff callq 67a780 0.00 : 6978cf: 85 c0 test %eax,%eax 0.00 : 6978d1: 79 ca jns 69789d : ereport(ERROR, 0.00 : 6978d3: 45 31 c0 xor %r8d,%r8d 0.00 : 6978d6: b9 b0 e3 8a 00 mov $0x8ae3b0,%ecx 0.00 : 6978db: ba 6c 05 00 00 mov $0x56c,%edx 0.00 : 6978e0: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 6978e5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6978ea: e8 d1 31 0e 00 callq 77aac0 0.00 : 6978ef: 84 c0 test %al,%al 0.00 : 6978f1: 74 28 je 69791b 0.00 : 6978f3: 8b 3b mov (%rbx),%edi 0.00 : 6978f5: e8 b6 09 fe ff callq 6782b0 0.00 : 6978fa: bf 70 31 7b 00 mov $0x7b3170,%edi 0.00 : 6978ff: 48 89 c6 mov %rax,%rsi 0.00 : 697902: 31 c0 xor %eax,%eax 0.00 : 697904: e8 97 4f 0e 00 callq 77c8a0 0.00 : 697909: 89 c3 mov %eax,%ebx 0.00 : 69790b: e8 e0 51 0e 00 callq 77caf0 0.00 : 697910: 89 de mov %ebx,%esi 0.00 : 697912: 89 c7 mov %eax,%edi 0.00 : 697914: 31 c0 xor %eax,%eax 0.00 : 697916: e8 c5 2c 0e 00 callq 77a5e0 0.00 : 69791b: e8 b0 1b dd ff callq 4694d0 : else : { : if (ForwardFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno)) : return; /* passed it off successfully */ : : ereport(DEBUG1, 0.00 : 697920: bf 08 e0 8a 00 mov $0x8ae008,%edi 0.00 : 697925: 31 c0 xor %eax,%eax 0.00 : 697927: e8 74 4f 0e 00 callq 77c8a0 0.00 : 69792c: 89 c7 mov %eax,%edi 0.00 : 69792e: 31 c0 xor %eax,%eax 0.00 : 697930: e8 ab 2c 0e 00 callq 77a5e0 0.00 : 697935: eb 91 jmp 6978c8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:529 40.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:529 20.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:552 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000698150 : : * causes intervening file space to become filled with zeroes. : */ : void : mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 698150: 55 push %rbp 0.00 : 698151: 48 89 e5 mov %rsp,%rbp 0.00 : 698154: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 698158: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 69815c: 49 89 fc mov %rdi,%r12 0.00 : 69815f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 698163: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 698167: 41 89 d6 mov %edx,%r14d 0.00 : 69816a: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 69816e: 48 83 ec 30 sub $0x30,%rsp : /* : * If a relation manages to grow to 2^32-1 blocks, refuse to extend it any : * more --- we mustn't create a block whose number actually is : * InvalidBlockNumber. : */ : if (blocknum == InvalidBlockNumber) 0.00 : 698172: 83 fa ff cmp $0xffffffff,%edx : * causes intervening file space to become filled with zeroes. : */ : void : mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 698175: 89 75 d4 mov %esi,-0x2c(%rbp) 0.00 : 698178: 49 89 cf mov %rcx,%r15 0.00 : 69817b: 44 88 45 d3 mov %r8b,-0x2d(%rbp) : /* : * If a relation manages to grow to 2^32-1 blocks, refuse to extend it any : * more --- we mustn't create a block whose number actually is : * InvalidBlockNumber. : */ : if (blocknum == InvalidBlockNumber) 0.00 : 69817f: 0f 84 1e 01 00 00 je 6982a3 : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("cannot extend file \"%s\" beyond %u blocks", : relpath(reln->smgr_rnode, forknum), : InvalidBlockNumber))); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_CREATE); 0.00 : 698185: 0f be 4d d3 movsbl -0x2d(%rbp),%ecx 0.00 : 698189: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 69818c: 41 b8 02 00 00 00 mov $0x2,%r8d : : seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); 0.00 : 698192: 4c 89 f3 mov %r14,%rbx 0.00 : 698195: 81 e3 ff ff 01 00 and $0x1ffff,%ebx 0.00 : 69819b: 48 c1 e3 0d shl $0xd,%rbx : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("cannot extend file \"%s\" beyond %u blocks", : relpath(reln->smgr_rnode, forknum), : InvalidBlockNumber))); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_CREATE); 0.00 : 69819f: e8 2c 02 00 00 callq 6983d0 <_mdfd_getseg> : * partial page at the end of the file. In that case we want to try to : * overwrite the partial page with a full page. It's also not redundant : * if bufmgr.c had to dump another buffer of the same file to make room : * for the new page's buffer. : */ : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:529 40.00 : 6981a4: 8b 38 mov (%rax),%edi 40.00 : 6981a6: 31 d2 xor %edx,%edx 0.00 : 6981a8: 48 89 de mov %rbx,%rsi : (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), : errmsg("cannot extend file \"%s\" beyond %u blocks", : relpath(reln->smgr_rnode, forknum), : InvalidBlockNumber))); : : v = _mdfd_getseg(reln, forknum, blocknum, skipFsync, EXTENSION_CREATE); 0.00 : 6981ab: 49 89 c5 mov %rax,%r13 : * partial page at the end of the file. In that case we want to try to : * overwrite the partial page with a full page. It's also not redundant : * if bufmgr.c had to dump another buffer of the same file to make room : * for the new page's buffer. : */ : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) 0.00 : 6981ae: e8 dd 18 fe ff callq 679a90 0.00 : 6981b3: 48 39 d8 cmp %rbx,%rax 0.00 : 6981b6: 0f 85 55 01 00 00 jne 698311 : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not seek to block %u in file \"%s\": %m", : blocknum, FilePathName(v->mdfd_vfd)))); : : if ((nbytes = FileWrite(v->mdfd_vfd, buffer, BLCKSZ)) != BLCKSZ) 0.00 : 6981bc: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 6981c0: ba 00 20 00 00 mov $0x2000,%edx 0.00 : 6981c5: 4c 89 fe mov %r15,%rsi 0.00 : 6981c8: e8 83 1a fe ff callq 679c50 0.00 : 6981cd: 3d 00 20 00 00 cmp $0x2000,%eax 0.00 : 6981d2: 89 c3 mov %eax,%ebx 0.00 : 6981d4: 74 7a je 698250 : { : if (nbytes < 0) 0.00 : 6981d6: 85 c0 test %eax,%eax 0.00 : 6981d8: 0f 89 89 01 00 00 jns 698367 : ereport(ERROR, 0.00 : 6981de: 45 31 c0 xor %r8d,%r8d 0.00 : 6981e1: b9 e0 e3 8a 00 mov $0x8ae3e0,%ecx 0.00 : 6981e6: ba 1e 02 00 00 mov $0x21e,%edx 0.00 : 6981eb: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 6981f0: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6981f5: e8 c6 28 0e 00 callq 77aac0 0.00 : 6981fa: 84 c0 test %al,%al 0.00 : 6981fc: 75 0a jne 698208 : (errcode_for_file_access(), : errmsg("could not extend file \"%s\": %m", : FilePathName(v->mdfd_vfd)), : errhint("Check free disk space."))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 6981fe: e8 cd 12 dd ff callq 4694d0 0.00 : 698203: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : blocknum, FilePathName(v->mdfd_vfd)))); : : if ((nbytes = FileWrite(v->mdfd_vfd, buffer, BLCKSZ)) != BLCKSZ) : { : if (nbytes < 0) : ereport(ERROR, 0.00 : 698208: bf a6 df 8a 00 mov $0x8adfa6,%edi 0.00 : 69820d: 31 c0 xor %eax,%eax 0.00 : 69820f: e8 8c 3a 0e 00 callq 77bca0 0.00 : 698214: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698218: 41 89 c4 mov %eax,%r12d 0.00 : 69821b: e8 90 00 fe ff callq 6782b0 0.00 : 698220: bf 48 e1 8a 00 mov $0x8ae148,%edi 0.00 : 698225: 48 89 c6 mov %rax,%rsi 0.00 : 698228: 31 c0 xor %eax,%eax 0.00 : 69822a: e8 71 46 0e 00 callq 77c8a0 0.00 : 69822f: 89 c3 mov %eax,%ebx 0.00 : 698231: e8 ba 48 0e 00 callq 77caf0 : (errcode_for_file_access(), : errmsg("could not extend file \"%s\": %m", : FilePathName(v->mdfd_vfd)), : errhint("Check free disk space."))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 698236: 89 c7 mov %eax,%edi 0.00 : 698238: 44 89 e2 mov %r12d,%edx 0.00 : 69823b: 89 de mov %ebx,%esi 0.00 : 69823d: 31 c0 xor %eax,%eax 0.00 : 69823f: e8 9c 23 0e 00 callq 77a5e0 0.00 : 698244: e8 87 12 dd ff callq 4694d0 0.00 : 698249: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : FilePathName(v->mdfd_vfd), : nbytes, BLCKSZ, blocknum), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:552 20.00 : 698250: 80 7d d3 00 cmpb $0x0,-0x2d(%rbp) 0.00 : 698254: 75 0c jne 698262 0.00 : 698256: 41 83 7c 24 0c ff cmpl $0xffffffff,0xc(%r12) 0.00 : 69825c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 698260: 74 1e je 698280 : register_dirty_segment(reln, forknum, v); : : Assert(_mdnblocks(reln, forknum, v) <= ((BlockNumber) RELSEG_SIZE)); : } 0.00 : 698262: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 698266: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 69826a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 69826e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 698272: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 698276: c9 leaveq 0.00 : 698277: c3 retq 0.00 : 698278: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 69827f: 00 : nbytes, BLCKSZ, blocknum), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) : register_dirty_segment(reln, forknum, v); 0.00 : 698280: 4c 89 ea mov %r13,%rdx 0.00 : 698283: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 698286: 4c 89 e7 mov %r12,%rdi : : Assert(_mdnblocks(reln, forknum, v) <= ((BlockNumber) RELSEG_SIZE)); : } 0.00 : 698289: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 69828d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 698291: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 698295: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 698299: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 69829d: c9 leaveq : nbytes, BLCKSZ, blocknum), : errhint("Check free disk space."))); : } : : if (!skipFsync && !SmgrIsTemp(reln)) : register_dirty_segment(reln, forknum, v); 0.00 : 69829e: e9 ad f5 ff ff jmpq 697850 : * If a relation manages to grow to 2^32-1 blocks, refuse to extend it any : * more --- we mustn't create a block whose number actually is : * InvalidBlockNumber. : */ : if (blocknum == InvalidBlockNumber) : ereport(ERROR, 0.00 : 6982a3: 45 31 c0 xor %r8d,%r8d 0.00 : 6982a6: b9 e0 e3 8a 00 mov $0x8ae3e0,%ecx 0.00 : 6982ab: ba 00 02 00 00 mov $0x200,%edx 0.00 : 6982b0: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 6982b5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6982ba: e8 01 28 0e 00 callq 77aac0 0.00 : 6982bf: 84 c0 test %al,%al 0.00 : 6982c1: 0f 84 37 ff ff ff je 6981fe 0.00 : 6982c7: 41 8b 4c 24 0c mov 0xc(%r12),%ecx 0.00 : 6982cc: 44 8b 45 d4 mov -0x2c(%rbp),%r8d 0.00 : 6982d0: 41 8b 54 24 08 mov 0x8(%r12),%edx 0.00 : 6982d5: 41 8b 7c 24 04 mov 0x4(%r12),%edi 0.00 : 6982da: 41 8b 34 24 mov (%r12),%esi 0.00 : 6982de: e8 ed 62 11 00 callq 7ae5d0 0.00 : 6982e3: 44 89 f2 mov %r14d,%edx 0.00 : 6982e6: 48 89 c6 mov %rax,%rsi 0.00 : 6982e9: bf e8 e0 8a 00 mov $0x8ae0e8,%edi 0.00 : 6982ee: 31 c0 xor %eax,%eax 0.00 : 6982f0: e8 ab 45 0e 00 callq 77c8a0 0.00 : 6982f5: bf 05 01 00 00 mov $0x105,%edi 0.00 : 6982fa: 89 c3 mov %eax,%ebx 0.00 : 6982fc: e8 4f 4a 0e 00 callq 77cd50 0.00 : 698301: 89 de mov %ebx,%esi 0.00 : 698303: 89 c7 mov %eax,%edi 0.00 : 698305: 31 c0 xor %eax,%eax 0.00 : 698307: e8 d4 22 0e 00 callq 77a5e0 0.00 : 69830c: e9 ed fe ff ff jmpq 6981fe : * overwrite the partial page with a full page. It's also not redundant : * if bufmgr.c had to dump another buffer of the same file to make room : * for the new page's buffer. : */ : if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) : ereport(ERROR, 0.00 : 698311: 45 31 c0 xor %r8d,%r8d 0.00 : 698314: b9 e0 e3 8a 00 mov $0x8ae3e0,%ecx 0.00 : 698319: ba 15 02 00 00 mov $0x215,%edx 0.00 : 69831e: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698323: bf 14 00 00 00 mov $0x14,%edi 0.00 : 698328: e8 93 27 0e 00 callq 77aac0 0.00 : 69832d: 84 c0 test %al,%al 0.00 : 69832f: 0f 84 c9 fe ff ff je 6981fe 0.00 : 698335: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 698339: e8 72 ff fd ff callq 6782b0 0.00 : 69833e: 44 89 f6 mov %r14d,%esi 0.00 : 698341: 48 89 c2 mov %rax,%rdx 0.00 : 698344: bf 18 e1 8a 00 mov $0x8ae118,%edi 0.00 : 698349: 31 c0 xor %eax,%eax 0.00 : 69834b: e8 50 45 0e 00 callq 77c8a0 0.00 : 698350: 89 c3 mov %eax,%ebx 0.00 : 698352: e8 99 47 0e 00 callq 77caf0 0.00 : 698357: 89 de mov %ebx,%esi 0.00 : 698359: 89 c7 mov %eax,%edi 0.00 : 69835b: 31 c0 xor %eax,%eax 0.00 : 69835d: e8 7e 22 0e 00 callq 77a5e0 0.00 : 698362: e9 97 fe ff ff jmpq 6981fe : (errcode_for_file_access(), : errmsg("could not extend file \"%s\": %m", : FilePathName(v->mdfd_vfd)), : errhint("Check free disk space."))); : /* short write: complain appropriately */ : ereport(ERROR, 0.00 : 698367: 45 31 c0 xor %r8d,%r8d 0.00 : 69836a: b9 e0 e3 8a 00 mov $0x8ae3e0,%ecx 0.00 : 69836f: ba 25 02 00 00 mov $0x225,%edx 0.00 : 698374: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 698379: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69837e: e8 3d 27 0e 00 callq 77aac0 0.00 : 698383: 84 c0 test %al,%al 0.00 : 698385: 0f 84 73 fe ff ff je 6981fe 0.00 : 69838b: bf a6 df 8a 00 mov $0x8adfa6,%edi 0.00 : 698390: 31 c0 xor %eax,%eax 0.00 : 698392: e8 09 39 0e 00 callq 77bca0 0.00 : 698397: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 69839b: 41 89 c4 mov %eax,%r12d 0.00 : 69839e: e8 0d ff fd ff callq 6782b0 0.00 : 6983a3: 89 da mov %ebx,%edx 0.00 : 6983a5: 48 89 c6 mov %rax,%rsi 0.00 : 6983a8: 45 89 f0 mov %r14d,%r8d 0.00 : 6983ab: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 6983b0: bf 68 e1 8a 00 mov $0x8ae168,%edi 0.00 : 6983b5: 31 c0 xor %eax,%eax 0.00 : 6983b7: e8 e4 44 0e 00 callq 77c8a0 0.00 : 6983bc: bf c5 10 00 00 mov $0x10c5,%edi 0.00 : 6983c1: 89 c3 mov %eax,%ebx 0.00 : 6983c3: e8 88 49 0e 00 callq 77cd50 0.00 : 6983c8: e9 69 fe ff ff jmpq 698236 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:443 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:473 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:426 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:638 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:652 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000711e20 : : * ---------- : */ : bool : pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, : const PGLZ_Strategy *strategy) : { 0.00 : 711e20: 55 push %rbp : int mask; : : /* : * Our fallback strategy is the default. : */ : if (strategy == NULL) 0.00 : 711e21: b8 70 48 8c 00 mov $0x8c4870,%eax : * ---------- : */ : bool : pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, : const PGLZ_Strategy *strategy) : { 0.00 : 711e26: 48 89 e5 mov %rsp,%rbp 0.00 : 711e29: 41 57 push %r15 0.00 : 711e2b: 41 56 push %r14 0.00 : 711e2d: 41 55 push %r13 0.00 : 711e2f: 41 54 push %r12 0.00 : 711e31: 49 89 fc mov %rdi,%r12 0.00 : 711e34: 53 push %rbx 0.00 : 711e35: 48 81 ec 88 00 00 00 sub $0x88,%rsp : int mask; : : /* : * Our fallback strategy is the default. : */ : if (strategy == NULL) 0.00 : 711e3c: 48 85 c9 test %rcx,%rcx : * ---------- : */ : bool : pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, : const PGLZ_Strategy *strategy) : { 0.00 : 711e3f: 48 89 95 70 ff ff ff mov %rdx,-0x90(%rbp) : int mask; : : /* : * Our fallback strategy is the default. : */ : if (strategy == NULL) 0.00 : 711e46: 48 0f 45 c1 cmovne %rcx,%rax : unsigned char *bstart = bp; : int hist_next = 1; : bool hist_recycle = false; : const char *dp = source; : const char *dend = source + slen; : unsigned char ctrl_dummy = 0; 0.00 : 711e4a: c6 45 d7 00 movb $0x0,-0x29(%rbp) : int mask; : : /* : * Our fallback strategy is the default. : */ : if (strategy == NULL) 0.00 : 711e4e: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) : : /* : * If the strategy forbids compression (at all or if source chunk size out : * of range), fail. : */ : if (strategy->match_size_good <= 0 || 0.00 : 711e55: 8b 48 10 mov 0x10(%rax),%ecx 0.00 : 711e58: 85 c9 test %ecx,%ecx 0.00 : 711e5a: 0f 8e c7 03 00 00 jle 712227 0.00 : 711e60: 3b 30 cmp (%rax),%esi 0.00 : 711e62: 0f 8c bf 03 00 00 jl 712227 0.00 : 711e68: 3b 70 04 cmp 0x4(%rax),%esi 0.00 : 711e6b: 0f 8f b6 03 00 00 jg 712227 : return false; : : /* : * Save the original source size in the header. : */ : dest->rawsize = slen; 0.00 : 711e71: 89 72 04 mov %esi,0x4(%rdx) : : /* : * Limit the match parameters to the supported range. : */ : good_match = strategy->match_size_good; 0.00 : 711e74: 8b 40 10 mov 0x10(%rax),%eax : if (good_match > PGLZ_MAX_MATCH) 0.00 : 711e77: 3d 11 01 00 00 cmp $0x111,%eax : dest->rawsize = slen; : : /* : * Limit the match parameters to the supported range. : */ : good_match = strategy->match_size_good; 0.00 : 711e7c: 89 45 98 mov %eax,-0x68(%rbp) : if (good_match > PGLZ_MAX_MATCH) 0.00 : 711e7f: 0f 8e b6 03 00 00 jle 71223b 0.00 : 711e85: c7 45 98 11 01 00 00 movl $0x111,-0x68(%rbp) : good_match = PGLZ_MAX_MATCH; : else if (good_match < 17) : good_match = 17; : : good_drop = strategy->match_size_drop; 0.00 : 711e8c: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 711e93: bf 64 00 00 00 mov $0x64,%edi 0.00 : 711e98: 8b 42 14 mov 0x14(%rdx),%eax 0.00 : 711e9b: 83 f8 64 cmp $0x64,%eax 0.00 : 711e9e: 0f 4f c7 cmovg %edi,%eax 0.00 : 711ea1: 31 c9 xor %ecx,%ecx 0.00 : 711ea3: 85 c0 test %eax,%eax 0.00 : 711ea5: 0f 48 c1 cmovs %ecx,%eax 0.00 : 711ea8: 89 45 bc mov %eax,-0x44(%rbp) : if (good_drop < 0) : good_drop = 0; : else if (good_drop > 100) : good_drop = 100; : : need_rate = strategy->min_comp_rate; 0.00 : 711eab: 8b 52 08 mov 0x8(%rdx),%edx 0.00 : 711eae: b8 63 00 00 00 mov $0x63,%eax 0.00 : 711eb3: 83 fa 63 cmp $0x63,%edx 0.00 : 711eb6: 0f 4e c2 cmovle %edx,%eax 0.00 : 711eb9: 85 c0 test %eax,%eax 0.00 : 711ebb: 0f 49 c8 cmovns %eax,%ecx : /* : * Compute the maximum result size allowed by the strategy, namely the : * input size minus the minimum wanted compression rate. This had better : * be <= slen, else we might overrun the provided output buffer. : */ : if (slen > (INT_MAX / 100)) 0.00 : 711ebe: 81 fe 14 ae 47 01 cmp $0x147ae14,%esi 0.00 : 711ec4: 0f 8e e6 05 00 00 jle 7124b0 : { : /* Approximate to avoid overflow */ : result_max = (slen / 100) * (100 - need_rate); 0.00 : 711eca: b8 1f 85 eb 51 mov $0x51eb851f,%eax 0.00 : 711ecf: 29 cf sub %ecx,%edi 0.00 : 711ed1: f7 ee imul %esi 0.00 : 711ed3: 89 f0 mov %esi,%eax 0.00 : 711ed5: c1 f8 1f sar $0x1f,%eax 0.00 : 711ed8: c1 fa 05 sar $0x5,%edx 0.00 : 711edb: 29 c2 sub %eax,%edx 0.00 : 711edd: 0f af fa imul %edx,%edi 0.00 : 711ee0: 89 7d 9c mov %edi,-0x64(%rbp) : */ : if (slen < 128) : hashsz = 512; : else if (slen < 256) : hashsz = 1024; : else if (slen < 512) 0.00 : 711ee3: 81 fe ff 01 00 00 cmp $0x1ff,%esi 0.00 : 711ee9: c7 45 ac ff 07 00 00 movl $0x7ff,-0x54(%rbp) 0.00 : 711ef0: ba 00 10 00 00 mov $0x1000,%edx 0.00 : 711ef5: 0f 8f 60 06 00 00 jg 71255b : */ : bool : pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, : const PGLZ_Strategy *strategy) : { : unsigned char *bp = ((unsigned char *) dest) + sizeof(PGLZ_Header); 0.00 : 711efb: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx : unsigned char *bstart = bp; : int hist_next = 1; : bool hist_recycle = false; : const char *dp = source; : const char *dend = source + slen; 0.00 : 711f02: 48 63 c6 movslq %esi,%rax : : /* : * Initialize the history lists to empty. We do not need to zero the : * hist_entries[] array; its entries are initialized as they are used. : */ : memset(hist_start, 0, hashsz * sizeof(int16)); 0.00 : 711f05: bf c0 31 b9 00 mov $0xb931c0,%edi : unsigned char *bp = ((unsigned char *) dest) + sizeof(PGLZ_Header); : unsigned char *bstart = bp; : int hist_next = 1; : bool hist_recycle = false; : const char *dp = source; : const char *dend = source + slen; 0.00 : 711f0a: 49 8d 1c 04 lea (%r12,%rax,1),%rbx : : /* : * Initialize the history lists to empty. We do not need to zero the : * hist_entries[] array; its entries are initialized as they are used. : */ : memset(hist_start, 0, hashsz * sizeof(int16)); 0.00 : 711f0e: 31 f6 xor %esi,%esi : */ : bool : pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, : const PGLZ_Strategy *strategy) : { : unsigned char *bp = ((unsigned char *) dest) + sizeof(PGLZ_Header); 0.00 : 711f10: 48 83 c1 08 add $0x8,%rcx 0.00 : 711f14: 48 89 4d b0 mov %rcx,-0x50(%rbp) : : /* : * Initialize the history lists to empty. We do not need to zero the : * hist_entries[] array; its entries are initialized as they are used. : */ : memset(hist_start, 0, hashsz * sizeof(int16)); 0.00 : 711f18: e8 03 75 d5 ff callq 469420 : : /* : * Compress the source directly into the output buffer. : */ : while (dp < dend) 0.00 : 711f1d: 49 39 dc cmp %rbx,%r12 0.00 : 711f20: 0f 83 61 06 00 00 jae 712587 : * : * We check once per loop; since the loop body could emit as many as 4 : * bytes (a control byte and 3-byte tag), PGLZ_MAX_OUTPUT() had better : * allow 4 slop bytes. : */ : if (bp - bstart >= result_max) 0.00 : 711f26: 48 63 55 9c movslq -0x64(%rbp),%rdx 0.00 : 711f2a: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 711f2e: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 711f32: 48 85 d2 test %rdx,%rdx 0.00 : 711f35: 48 89 95 78 ff ff ff mov %rdx,-0x88(%rbp) 0.00 : 711f3c: 0f 8e e5 02 00 00 jle 712227 0.00 : 711f42: 48 8d 4d d7 lea -0x29(%rbp),%rcx 0.00 : 711f46: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 711f4c: c6 45 87 00 movb $0x0,-0x79(%rbp) 0.00 : 711f50: c6 45 95 00 movb $0x0,-0x6b(%rbp) 0.00 : 711f54: c6 45 96 00 movb $0x0,-0x6a(%rbp) 0.00 : 711f58: 31 d2 xor %edx,%edx 0.00 : 711f5a: 48 89 4d 88 mov %rcx,-0x78(%rbp) 0.00 : 711f5e: c6 45 97 00 movb $0x0,-0x69(%rbp) 0.00 : 711f62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * If we've emitted more than first_success_by bytes without finding : * anything compressible at all, fail. This lets us fall out : * reasonably quickly when looking at incompressible input (such as : * pre-compressed data). : */ : if (!found_match && bp - bstart >= strategy->first_success_by) 0.00 : 711f68: 80 7d 97 00 cmpb $0x0,-0x69(%rbp) 0.00 : 711f6c: 75 14 jne 711f82 0.00 : 711f6e: 48 8b bd 68 ff ff ff mov -0x98(%rbp),%rdi 0.00 : 711f75: 48 63 47 0c movslq 0xc(%rdi),%rax 0.00 : 711f79: 48 39 d0 cmp %rdx,%rax 0.00 : 711f7c: 0f 8e a5 02 00 00 jle 712227 : int32 off = 0; : : /* : * Traverse the linked history list until a good enough match is found. : */ : hentno = hstart[pglz_hist_idx(input, end, mask)]; 0.00 : 711f82: 48 89 d8 mov %rbx,%rax 0.00 : 711f85: 4c 29 e0 sub %r12,%rax 0.00 : 711f88: 48 83 f8 03 cmp $0x3,%rax 0.00 : 711f8c: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 711f90: 0f 8f d6 03 00 00 jg 71236c 0.00 : 711f96: 41 0f be 14 24 movsbl (%r12),%edx : hent = &hist_entries[hentno]; 0.00 : 711f9b: 23 55 ac and -0x54(%rbp),%edx 0.00 : 711f9e: 48 63 c2 movslq %edx,%rax 0.00 : 711fa1: 48 0f bf 84 00 c0 31 movswq 0xb931c0(%rax,%rax,1),%rax 0.00 : 711fa8: b9 00 0.00 : 711faa: 48 c1 e0 05 shl $0x5,%rax 0.00 : 711fae: 4c 8d 88 c0 71 b9 00 lea 0xb971c0(%rax),%r9 : while (hent != INVALID_ENTRY_PTR) 0.00 : 711fb5: 49 81 f9 c0 71 b9 00 cmp $0xb971c0,%r9 0.00 : 711fbc: 0f 84 b3 02 00 00 je 712275 : { : const char *ip = input; : const char *hp = hent->pos; 0.00 : 711fc2: 49 8b 51 18 mov 0x18(%r9),%rdx : int32 thislen; : : /* : * Stop if the offset does not fit into our tag anymore. : */ : thisoff = ip - hp; 0.00 : 711fc6: 45 89 e3 mov %r12d,%r11d 0.00 : 711fc9: 45 89 e6 mov %r12d,%r14d 0.00 : 711fcc: 41 29 d3 sub %edx,%r11d : hentno = hstart[pglz_hist_idx(input, end, mask)]; : hent = &hist_entries[hentno]; : while (hent != INVALID_ENTRY_PTR) : { : const char *ip = input; : const char *hp = hent->pos; 0.00 : 711fcf: 48 89 95 60 ff ff ff mov %rdx,-0xa0(%rbp) : : /* : * Stop if the offset does not fit into our tag anymore. : */ : thisoff = ip - hp; : if (thisoff >= 0x0fff) 0.00 : 711fd6: 41 81 fb fe 0f 00 00 cmp $0xffe,%r11d 0.00 : 711fdd: 0f 8f 92 02 00 00 jg 712275 0.00 : 711fe3: 45 31 c0 xor %r8d,%r8d 0.00 : 711fe6: 45 31 ff xor %r15d,%r15d : * is equal for the same size. After that we must fallback to : * character by character comparison to know the exact position where : * the diff occurred. : */ : thislen = 0; : if (len >= 16) 0.00 : 711fe9: 31 d2 xor %edx,%edx 0.00 : 711feb: 41 83 f8 0f cmp $0xf,%r8d : : /* : * Stop if the offset does not fit into our tag anymore. : */ : thisoff = ip - hp; : if (thisoff >= 0x0fff) 0.00 : 711fef: 44 8b 55 98 mov -0x68(%rbp),%r10d : * is equal for the same size. After that we must fallback to : * character by character comparison to know the exact position where : * the diff occurred. : */ : thislen = 0; : if (len >= 16) 0.00 : 711ff3: 4c 89 e1 mov %r12,%rcx 0.00 : 711ff6: 0f 8f 83 00 00 00 jg 71207f 0.00 : 711ffc: 0f 1f 40 00 nopl 0x0(%rax) : } : } : } : else : { : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 712000: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 712007: 0f b6 01 movzbl (%rcx),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:443 20.00 : 71200a: 89 d6 mov %edx,%esi 0.00 : 71200c: 3a 04 17 cmp (%rdi,%rdx,1),%al 0.00 : 71200f: 0f 84 3b 02 00 00 je 712250 : } : : /* : * Remember this match as the best (if it is) : */ : if (thislen > len) 0.00 : 712015: 44 39 c6 cmp %r8d,%esi 0.00 : 712018: 0f 8e a2 00 00 00 jle 7120c0 : } : : /* : * Advance to the next history entry : */ : hent = hent->next; 0.00 : 71201e: 4d 8b 09 mov (%r9),%r9 : } : : /* : * Remember this match as the best (if it is) : */ : if (thislen > len) 0.00 : 712021: 45 89 df mov %r11d,%r15d : : /* : * Be happy with lesser good matches the more entries we visited. But : * no point in doing calculation if we're at end of list. : */ : if (hent != INVALID_ENTRY_PTR) 0.00 : 712024: 49 81 f9 c0 71 b9 00 cmp $0xb971c0,%r9 0.00 : 71202b: 0f 84 a2 00 00 00 je 7120d3 : { : if (len >= good_match) 0.00 : 712031: 44 39 d6 cmp %r10d,%esi 0.00 : 712034: 0f 8d 99 00 00 00 jge 7120d3 : hentno = hstart[pglz_hist_idx(input, end, mask)]; : hent = &hist_entries[hentno]; : while (hent != INVALID_ENTRY_PTR) : { : const char *ip = input; : const char *hp = hent->pos; 0.00 : 71203a: 49 8b 41 18 mov 0x18(%r9),%rax : int32 thislen; : : /* : * Stop if the offset does not fit into our tag anymore. : */ : thisoff = ip - hp; 0.00 : 71203e: 45 89 f3 mov %r14d,%r11d 0.00 : 712041: 41 29 c3 sub %eax,%r11d : hentno = hstart[pglz_hist_idx(input, end, mask)]; : hent = &hist_entries[hentno]; : while (hent != INVALID_ENTRY_PTR) : { : const char *ip = input; : const char *hp = hent->pos; 0.00 : 712044: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) : : /* : * Stop if the offset does not fit into our tag anymore. : */ : thisoff = ip - hp; : if (thisoff >= 0x0fff) 0.00 : 71204b: 41 81 fb fe 0f 00 00 cmp $0xffe,%r11d 0.00 : 712052: 7f 7f jg 7120d3 : */ : if (hent != INVALID_ENTRY_PTR) : { : if (len >= good_match) : break; : good_match -= (good_match * good_drop) / 100; 0.00 : 712054: 44 8b 45 bc mov -0x44(%rbp),%r8d 0.00 : 712058: b8 1f 85 eb 51 mov $0x51eb851f,%eax : * is equal for the same size. After that we must fallback to : * character by character comparison to know the exact position where : * the diff occurred. : */ : thislen = 0; : if (len >= 16) 0.00 : 71205d: 4c 89 e1 mov %r12,%rcx : */ : if (hent != INVALID_ENTRY_PTR) : { : if (len >= good_match) : break; : good_match -= (good_match * good_drop) / 100; 0.00 : 712060: 45 0f af c2 imul %r10d,%r8d 0.00 : 712064: 41 f7 e8 imul %r8d 0.00 : 712067: 41 c1 f8 1f sar $0x1f,%r8d 0.00 : 71206b: c1 fa 05 sar $0x5,%edx /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:473 20.00 : 71206e: 44 29 c2 sub %r8d,%edx 0.00 : 712071: 41 89 f0 mov %esi,%r8d 0.00 : 712074: 41 29 d2 sub %edx,%r10d : * is equal for the same size. After that we must fallback to : * character by character comparison to know the exact position where : * the diff occurred. : */ : thislen = 0; : if (len >= 16) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:426 20.00 : 712077: 31 d2 xor %edx,%edx 0.00 : 712079: 41 83 f8 0f cmp $0xf,%r8d 0.00 : 71207d: 7e 81 jle 712000 : { : if (memcmp(ip, hp, len) == 0) 0.00 : 71207f: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi 0.00 : 712086: 49 63 c8 movslq %r8d,%rcx 0.00 : 712089: 4c 89 e6 mov %r12,%rsi 0.00 : 71208c: 48 89 8d 58 ff ff ff mov %rcx,-0xa8(%rbp) 0.00 : 712093: 48 39 c9 cmp %rcx,%rcx 0.00 : 712096: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 712098: 75 26 jne 7120c0 : { : thislen = len; : ip += len; 0.00 : 71209a: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 7120a1: 49 8d 14 04 lea (%r12,%rax,1),%rdx : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 7120a5: 48 39 d3 cmp %rdx,%rbx 0.00 : 7120a8: 76 16 jbe 7120c0 : { : if (memcmp(ip, hp, len) == 0) : { : thislen = len; : ip += len; : hp += len; 0.00 : 7120aa: 48 8b 8d 60 ff ff ff mov -0xa0(%rbp),%rcx 0.00 : 7120b1: 48 01 c1 add %rax,%rcx : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 7120b4: 0f b6 02 movzbl (%rdx),%eax 0.00 : 7120b7: 3a 01 cmp (%rcx),%al 0.00 : 7120b9: 0f 84 d8 02 00 00 je 712397 0.00 : 7120bf: 90 nop : } : : /* : * Advance to the next history entry : */ : hent = hent->next; 0.00 : 7120c0: 4d 8b 09 mov (%r9),%r9 : } : : /* : * Remember this match as the best (if it is) : */ : if (thislen > len) 0.00 : 7120c3: 44 89 c6 mov %r8d,%esi : : /* : * Be happy with lesser good matches the more entries we visited. But : * no point in doing calculation if we're at end of list. : */ : if (hent != INVALID_ENTRY_PTR) 0.00 : 7120c6: 49 81 f9 c0 71 b9 00 cmp $0xb971c0,%r9 0.00 : 7120cd: 0f 85 5e ff ff ff jne 712031 : : /* : * Return match information only if it results at least in one byte : * reduction. : */ : if (len > 2) 0.00 : 7120d3: 83 fe 02 cmp $0x2,%esi 0.00 : 7120d6: 0f 8e 99 01 00 00 jle 712275 : { : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); 0.00 : 7120dc: 80 7d 96 00 cmpb $0x0,-0x6a(%rbp) 0.00 : 7120e0: 0f 84 24 03 00 00 je 71240a 0.00 : 7120e6: 0f b6 45 96 movzbl -0x6a(%rbp),%eax 0.00 : 7120ea: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 7120ee: 08 45 95 or %al,-0x6b(%rbp) 0.00 : 7120f1: 01 c0 add %eax,%eax 0.00 : 7120f3: 83 fe 11 cmp $0x11,%esi 0.00 : 7120f6: 88 45 96 mov %al,-0x6a(%rbp) 0.00 : 7120f9: 0f 8e 36 03 00 00 jle 712435 0.00 : 7120ff: 44 89 f8 mov %r15d,%eax 0.00 : 712102: 44 88 79 01 mov %r15b,0x1(%rcx) 0.00 : 712106: c1 e8 04 shr $0x4,%eax 0.00 : 712109: 83 c8 0f or $0xf,%eax 0.00 : 71210c: 88 01 mov %al,(%rcx) 0.00 : 71210e: 8d 46 ee lea -0x12(%rsi),%eax 0.00 : 712111: 88 41 02 mov %al,0x2(%rcx) 0.00 : 712114: 48 83 c1 03 add $0x3,%rcx 0.00 : 712118: 48 89 4d b0 mov %rcx,-0x50(%rbp) 0.00 : 71211c: 49 89 d9 mov %rbx,%r9 : while (match_len--) 0.00 : 71211f: 8d 46 ff lea -0x1(%rsi),%eax : { : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); 0.00 : 712122: 49 8d 7c 24 01 lea 0x1(%r12),%rdi 0.00 : 712127: 4d 29 e1 sub %r12,%r9 : while (match_len--) 0.00 : 71212a: 4d 8d 71 ff lea -0x1(%r9),%r14 0.00 : 71212e: 49 29 c6 sub %rax,%r14 0.00 : 712131: e9 bd 00 00 00 jmpq 7121f3 0.00 : 712136: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 71213d: 00 00 00 : { : pglz_hist_add(hist_start, hist_entries, 0.00 : 712140: 0f be 57 ff movsbl -0x1(%rdi),%edx 0.00 : 712144: 49 89 ff mov %rdi,%r15 0.00 : 712147: 44 8b 55 ac mov -0x54(%rbp),%r10d 0.00 : 71214b: 49 63 cd movslq %r13d,%rcx 0.00 : 71214e: 48 c1 e1 05 shl $0x5,%rcx 0.00 : 712152: 48 8d b1 c0 71 b9 00 lea 0xb971c0(%rcx),%rsi 0.00 : 712159: 41 21 d2 and %edx,%r10d 0.00 : 71215c: 80 7d 87 00 cmpb $0x0,-0x79(%rbp) 0.00 : 712160: 4d 63 da movslq %r10d,%r11 0.00 : 712163: 74 2b je 712190 0.00 : 712165: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 712169: 48 85 d2 test %rdx,%rdx 0.00 : 71216c: 0f 84 73 02 00 00 je 7123e5 0.00 : 712172: 48 8b 81 c0 71 b9 00 mov 0xb971c0(%rcx),%rax 0.00 : 712179: 48 89 02 mov %rax,(%rdx) 0.00 : 71217c: 4c 8b 81 c0 71 b9 00 mov 0xb971c0(%rcx),%r8 0.00 : 712183: 4d 85 c0 test %r8,%r8 0.00 : 712186: 74 08 je 712190 0.00 : 712188: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 71218c: 49 89 40 08 mov %rax,0x8(%r8) 0.00 : 712190: 4b 0f bf 94 1b c0 31 movswq 0xb931c0(%r11,%r11,1),%rdx 0.00 : 712197: b9 00 0.00 : 712199: 48 c1 e2 05 shl $0x5,%rdx 0.00 : 71219d: 48 8d 82 c0 71 b9 00 lea 0xb971c0(%rdx),%rax 0.00 : 7121a4: 48 89 81 c0 71 b9 00 mov %rax,0xb971c0(%rcx) 0.00 : 7121ab: 48 c7 46 08 00 00 00 movq $0x0,0x8(%rsi) 0.00 : 7121b2: 00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:638 20.00 : 7121b3: 44 89 56 10 mov %r10d,0x10(%rsi) 0.00 : 7121b7: 4c 89 66 18 mov %r12,0x18(%rsi) 0.00 : 7121bb: 66 47 89 ac 1b c0 31 mov %r13w,0xb931c0(%r11,%r11,1) 0.00 : 7121c2: b9 00 0.00 : 7121c4: 41 83 c5 01 add $0x1,%r13d 0.00 : 7121c8: 48 89 b2 c8 71 b9 00 mov %rsi,0xb971c8(%rdx) 0.00 : 7121cf: 41 81 fd 00 10 00 00 cmp $0x1000,%r13d 0.00 : 7121d6: 7e 0a jle 7121e2 0.00 : 7121d8: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 7121de: c6 45 87 01 movb $0x1,-0x79(%rbp) 0.00 : 7121e2: 49 83 e9 01 sub $0x1,%r9 0.00 : 7121e6: 48 83 c7 01 add $0x1,%rdi : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); : while (match_len--) 0.00 : 7121ea: 4d 39 f1 cmp %r14,%r9 0.00 : 7121ed: 0f 84 e2 01 00 00 je 7123d5 : { : pglz_hist_add(hist_start, hist_entries, 0.00 : 7121f3: 49 83 f9 03 cmp $0x3,%r9 : { : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); 0.00 : 7121f7: 4c 8d 67 ff lea -0x1(%rdi),%r12 : while (match_len--) : { : pglz_hist_add(hist_start, hist_entries, 0.00 : 7121fb: 0f 8e 3f ff ff ff jle 712140 0.00 : 712201: 0f be 57 ff movsbl -0x1(%rdi),%edx 0.00 : 712205: 0f be 07 movsbl (%rdi),%eax 0.00 : 712208: 49 89 ff mov %rdi,%r15 0.00 : 71220b: c1 e0 04 shl $0x4,%eax 0.00 : 71220e: c1 e2 06 shl $0x6,%edx 0.00 : 712211: 31 c2 xor %eax,%edx 0.00 : 712213: 0f be 47 02 movsbl 0x2(%rdi),%eax 0.00 : 712217: 31 c2 xor %eax,%edx 0.00 : 712219: 0f be 47 01 movsbl 0x1(%rdi),%eax 0.00 : 71221d: c1 e0 02 shl $0x2,%eax 0.00 : 712220: 31 c2 xor %eax,%edx 0.00 : 712222: e9 20 ff ff ff jmpq 712147 : return false; : : /* : * Success - need only fill in the actual length of the compressed datum. : */ : SET_VARSIZE_COMPRESSED(dest, result_size + sizeof(PGLZ_Header)); 0.00 : 712227: 31 c0 xor %eax,%eax : : return true; : } 0.00 : 712229: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.00 : 712230: 5b pop %rbx 0.00 : 712231: 41 5c pop %r12 0.00 : 712233: 41 5d pop %r13 0.00 : 712235: 41 5e pop %r14 0.00 : 712237: 41 5f pop %r15 0.00 : 712239: c9 leaveq 0.00 : 71223a: c3 retq : * Limit the match parameters to the supported range. : */ : good_match = strategy->match_size_good; : if (good_match > PGLZ_MAX_MATCH) : good_match = PGLZ_MAX_MATCH; : else if (good_match < 17) 0.00 : 71223b: 83 7d 98 10 cmpl $0x10,-0x68(%rbp) 0.00 : 71223f: b8 11 00 00 00 mov $0x11,%eax 0.00 : 712244: 0f 4f 45 98 cmovg -0x68(%rbp),%eax 0.00 : 712248: 89 45 98 mov %eax,-0x68(%rbp) 0.00 : 71224b: e9 3c fc ff ff jmpq 711e8c : } : } : } : else : { : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 712250: 81 fa 10 01 00 00 cmp $0x110,%edx 0.00 : 712256: 0f 8f b9 fd ff ff jg 712015 : { : thislen++; : ip++; 0.00 : 71225c: 48 83 c1 01 add $0x1,%rcx : if (memcmp(ip, hp, len) == 0) : { : thislen = len; : ip += len; : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 712260: 8d 72 01 lea 0x1(%rdx),%esi : else : { : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) : { : thislen++; : ip++; 0.00 : 712263: 48 83 c2 01 add $0x1,%rdx : } : } : } : else : { : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 712267: 48 39 cb cmp %rcx,%rbx 0.00 : 71226a: 0f 87 90 fd ff ff ja 712000 0.00 : 712270: e9 a0 fd ff ff jmpq 712015 : else : { : /* : * No match found. Copy one literal byte. : */ : pglz_out_literal(ctrlp, ctrlb, ctrl, bp, *dp); 0.00 : 712275: 80 7d 96 00 cmpb $0x0,-0x6a(%rbp) 0.00 : 712279: 0f 84 0a 02 00 00 je 712489 0.00 : 71227f: d0 65 96 shlb -0x6a(%rbp) 0.00 : 712282: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 712286: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 71228b: 41 88 01 mov %al,(%r9) : pglz_hist_add(hist_start, hist_entries, 0.00 : 71228e: 48 83 7d a0 03 cmpq $0x3,-0x60(%rbp) 0.00 : 712293: 0f 8f c0 01 00 00 jg 712459 0.00 : 712299: 41 0f be 14 24 movsbl (%r12),%edx 0.00 : 71229e: 4d 8d 7c 24 01 lea 0x1(%r12),%r15 0.00 : 7122a3: 44 8b 45 ac mov -0x54(%rbp),%r8d 0.00 : 7122a7: 49 63 cd movslq %r13d,%rcx 0.00 : 7122aa: 48 c1 e1 05 shl $0x5,%rcx 0.00 : 7122ae: 48 8d b1 c0 71 b9 00 lea 0xb971c0(%rcx),%rsi 0.00 : 7122b5: 41 21 d0 and %edx,%r8d 0.00 : 7122b8: 80 7d 87 00 cmpb $0x0,-0x79(%rbp) 0.00 : 7122bc: 4d 63 d0 movslq %r8d,%r10 0.00 : 7122bf: 74 2b je 7122ec 0.00 : 7122c1: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 7122c5: 48 85 d2 test %rdx,%rdx 0.00 : 7122c8: 0f 84 32 02 00 00 je 712500 0.00 : 7122ce: 48 8b 81 c0 71 b9 00 mov 0xb971c0(%rcx),%rax 0.00 : 7122d5: 48 89 02 mov %rax,(%rdx) 0.00 : 7122d8: 48 8b b9 c0 71 b9 00 mov 0xb971c0(%rcx),%rdi 0.00 : 7122df: 48 85 ff test %rdi,%rdi 0.00 : 7122e2: 74 08 je 7122ec 0.00 : 7122e4: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 7122e8: 48 89 47 08 mov %rax,0x8(%rdi) 0.00 : 7122ec: 4b 0f bf 94 12 c0 31 movswq 0xb931c0(%r10,%r10,1),%rdx 0.00 : 7122f3: b9 00 0.00 : 7122f5: 48 c1 e2 05 shl $0x5,%rdx 0.00 : 7122f9: 48 8d 82 c0 71 b9 00 lea 0xb971c0(%rdx),%rax 0.00 : 712300: 48 89 81 c0 71 b9 00 mov %rax,0xb971c0(%rcx) 0.00 : 712307: 48 c7 46 08 00 00 00 movq $0x0,0x8(%rsi) 0.00 : 71230e: 00 0.00 : 71230f: 44 89 46 10 mov %r8d,0x10(%rsi) 0.00 : 712313: 4c 89 66 18 mov %r12,0x18(%rsi) 0.00 : 712317: 66 47 89 ac 12 c0 31 mov %r13w,0xb931c0(%r10,%r10,1) 0.00 : 71231e: b9 00 0.00 : 712320: 41 83 c5 01 add $0x1,%r13d 0.00 : 712324: 48 89 b2 c8 71 b9 00 mov %rsi,0xb971c8(%rdx) 0.00 : 71232b: 41 81 fd 00 10 00 00 cmp $0x1000,%r13d 0.00 : 712332: 7e 0a jle 71233e 0.00 : 712334: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 71233a: c6 45 87 01 movb $0x1,-0x79(%rbp) : else : { : /* : * No match found. Copy one literal byte. : */ : pglz_out_literal(ctrlp, ctrlb, ctrl, bp, *dp); 0.00 : 71233e: 49 83 c1 01 add $0x1,%r9 0.00 : 712342: 4c 89 4d b0 mov %r9,-0x50(%rbp) : memset(hist_start, 0, hashsz * sizeof(int16)); : : /* : * Compress the source directly into the output buffer. : */ : while (dp < dend) 0.00 : 712346: 4c 39 fb cmp %r15,%rbx 0.00 : 712349: 0f 86 d6 01 00 00 jbe 712525 : * : * We check once per loop; since the loop body could emit as many as 4 : * bytes (a control byte and 3-byte tag), PGLZ_MAX_OUTPUT() had better : * allow 4 slop bytes. : */ : if (bp - bstart >= result_max) 0.00 : 71234f: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 712353: 48 2b 55 c0 sub -0x40(%rbp),%rdx 0.00 : 712357: 48 3b 95 78 ff ff ff cmp -0x88(%rbp),%rdx 0.00 : 71235e: 0f 8d c3 fe ff ff jge 712227 0.00 : 712364: 4d 89 fc mov %r15,%r12 0.00 : 712367: e9 fc fb ff ff jmpq 711f68 : int32 off = 0; : : /* : * Traverse the linked history list until a good enough match is found. : */ : hentno = hstart[pglz_hist_idx(input, end, mask)]; 0.00 : 71236c: 41 0f be 04 24 movsbl (%r12),%eax 0.00 : 712371: 41 0f be 54 24 03 movsbl 0x3(%r12),%edx 0.00 : 712377: c1 e0 06 shl $0x6,%eax 0.00 : 71237a: 31 c2 xor %eax,%edx 0.00 : 71237c: 41 0f be 44 24 01 movsbl 0x1(%r12),%eax 0.00 : 712382: c1 e0 04 shl $0x4,%eax 0.00 : 712385: 31 c2 xor %eax,%edx 0.00 : 712387: 41 0f be 44 24 02 movsbl 0x2(%r12),%eax 0.00 : 71238d: c1 e0 02 shl $0x2,%eax 0.00 : 712390: 31 c2 xor %eax,%edx 0.00 : 712392: e9 04 fc ff ff jmpq 711f9b : if (memcmp(ip, hp, len) == 0) : { : thislen = len; : ip += len; : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 712397: 41 81 f8 10 01 00 00 cmp $0x110,%r8d 0.00 : 71239e: 0f 8f 1c fd ff ff jg 7120c0 0.00 : 7123a4: 44 89 c6 mov %r8d,%esi : { : thislen++; : ip++; 0.00 : 7123a7: 48 83 c2 01 add $0x1,%rdx : thislen = len; : ip += len; : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) : { : thislen++; 0.00 : 7123ab: 83 c6 01 add $0x1,%esi : if (memcmp(ip, hp, len) == 0) : { : thislen = len; : ip += len; : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 7123ae: 48 39 d3 cmp %rdx,%rbx 0.00 : 7123b1: 0f 86 5e fc ff ff jbe 712015 : { : thislen++; : ip++; : hp++; 0.00 : 7123b7: 48 83 c1 01 add $0x1,%rcx : if (memcmp(ip, hp, len) == 0) : { : thislen = len; : ip += len; : hp += len; : while (ip < end && *ip == *hp && thislen < PGLZ_MAX_MATCH) 0.00 : 7123bb: 0f b6 02 movzbl (%rdx),%eax 0.00 : 7123be: 3a 01 cmp (%rcx),%al 0.00 : 7123c0: 0f 85 4f fc ff ff jne 712015 0.00 : 7123c6: 81 fe 10 01 00 00 cmp $0x110,%esi 0.00 : 7123cc: 7e d9 jle 7123a7 0.00 : 7123ce: 66 90 xchg %ax,%ax 0.00 : 7123d0: e9 40 fc ff ff jmpq 712015 : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); : while (match_len--) 0.00 : 7123d5: c6 45 97 01 movb $0x1,-0x69(%rbp) 0.00 : 7123d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7123e0: e9 61 ff ff ff jmpq 712346 : { : pglz_hist_add(hist_start, hist_entries, 0.00 : 7123e5: 4c 8b 81 c0 71 b9 00 mov 0xb971c0(%rcx),%r8 0.00 : 7123ec: 48 63 56 10 movslq 0x10(%rsi),%rdx 0.00 : 7123f0: 4c 89 c0 mov %r8,%rax 0.00 : 7123f3: 48 2d c0 71 b9 00 sub $0xb971c0,%rax 0.00 : 7123f9: 48 c1 f8 05 sar $0x5,%rax 0.00 : 7123fd: 66 89 84 12 c0 31 b9 mov %ax,0xb931c0(%rdx,%rdx,1) 0.00 : 712404: 00 0.00 : 712405: e9 79 fd ff ff jmpq 712183 : { : /* : * Create the tag and add history entries for all matched : * characters. : */ : pglz_out_tag(ctrlp, ctrlb, ctrl, bp, match_len, match_off); 0.00 : 71240a: 0f b6 55 95 movzbl -0x6b(%rbp),%edx 0.00 : 71240e: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.00 : 712412: 88 11 mov %dl,(%rcx) 0.00 : 712414: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 712418: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 71241c: c6 45 95 01 movb $0x1,-0x6b(%rbp) 0.00 : 712420: c6 45 96 02 movb $0x2,-0x6a(%rbp) 0.00 : 712424: 48 83 c1 01 add $0x1,%rcx 0.00 : 712428: 83 fe 11 cmp $0x11,%esi 0.00 : 71242b: 48 89 7d 88 mov %rdi,-0x78(%rbp) 0.00 : 71242f: 0f 8f ca fc ff ff jg 7120ff 0.00 : 712435: 44 89 fa mov %r15d,%edx 0.00 : 712438: 8d 46 fd lea -0x3(%rsi),%eax 0.00 : 71243b: 44 88 79 01 mov %r15b,0x1(%rcx) 0.00 : 71243f: 81 e2 00 0f 00 00 and $0xf00,%edx 0.00 : 712445: c1 fa 04 sar $0x4,%edx 0.00 : 712448: 09 d0 or %edx,%eax 0.00 : 71244a: 88 01 mov %al,(%rcx) 0.00 : 71244c: 48 83 c1 02 add $0x2,%rcx 0.00 : 712450: 48 89 4d b0 mov %rcx,-0x50(%rbp) 0.00 : 712454: e9 c3 fc ff ff jmpq 71211c : { : /* : * No match found. Copy one literal byte. : */ : pglz_out_literal(ctrlp, ctrlb, ctrl, bp, *dp); : pglz_hist_add(hist_start, hist_entries, 0.00 : 712459: 41 0f be 04 24 movsbl (%r12),%eax 0.00 : 71245e: 41 0f be 54 24 03 movsbl 0x3(%r12),%edx 0.00 : 712464: 4d 8d 7c 24 01 lea 0x1(%r12),%r15 0.00 : 712469: c1 e0 06 shl $0x6,%eax 0.00 : 71246c: 31 c2 xor %eax,%edx 0.00 : 71246e: 41 0f be 44 24 01 movsbl 0x1(%r12),%eax 0.00 : 712474: c1 e0 04 shl $0x4,%eax 0.00 : 712477: 31 c2 xor %eax,%edx 0.00 : 712479: 41 0f be 44 24 02 movsbl 0x2(%r12),%eax 0.00 : 71247f: c1 e0 02 shl $0x2,%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/pg_lzcompress.c:652 20.00 : 712482: 31 c2 xor %eax,%edx 0.00 : 712484: e9 1a fe ff ff jmpq 7122a3 : else : { : /* : * No match found. Copy one literal byte. : */ : pglz_out_literal(ctrlp, ctrlb, ctrl, bp, *dp); 0.00 : 712489: 0f b6 45 95 movzbl -0x6b(%rbp),%eax 0.00 : 71248d: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : 712491: 88 02 mov %al,(%rdx) 0.00 : 712493: 4c 8b 4d b0 mov -0x50(%rbp),%r9 0.00 : 712497: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 71249b: c6 45 95 00 movb $0x0,-0x6b(%rbp) 0.00 : 71249f: c6 45 96 02 movb $0x2,-0x6a(%rbp) 0.00 : 7124a3: 49 83 c1 01 add $0x1,%r9 0.00 : 7124a7: 48 89 4d 88 mov %rcx,-0x78(%rbp) 0.00 : 7124ab: e9 d6 fd ff ff jmpq 712286 : { : /* Approximate to avoid overflow */ : result_max = (slen / 100) * (100 - need_rate); : } : else : result_max = (slen * (100 - need_rate)) / 100; 0.00 : 7124b0: 29 cf sub %ecx,%edi : * Experiments suggest that these hash sizes work pretty well. A large : * hash table minimizes collision, but has a higher startup cost. For a : * small input, the startup cost dominates. The table size must be a power : * of two. : */ : if (slen < 128) 0.00 : 7124b2: c7 45 ac ff 01 00 00 movl $0x1ff,-0x54(%rbp) : { : /* Approximate to avoid overflow */ : result_max = (slen / 100) * (100 - need_rate); : } : else : result_max = (slen * (100 - need_rate)) / 100; 0.00 : 7124b9: 89 f9 mov %edi,%ecx 0.00 : 7124bb: bf 1f 85 eb 51 mov $0x51eb851f,%edi 0.00 : 7124c0: 0f af ce imul %esi,%ecx 0.00 : 7124c3: 89 c8 mov %ecx,%eax 0.00 : 7124c5: c1 f9 1f sar $0x1f,%ecx 0.00 : 7124c8: f7 ef imul %edi 0.00 : 7124ca: c1 fa 05 sar $0x5,%edx 0.00 : 7124cd: 29 ca sub %ecx,%edx : * Experiments suggest that these hash sizes work pretty well. A large : * hash table minimizes collision, but has a higher startup cost. For a : * small input, the startup cost dominates. The table size must be a power : * of two. : */ : if (slen < 128) 0.00 : 7124cf: 83 fe 7f cmp $0x7f,%esi : { : /* Approximate to avoid overflow */ : result_max = (slen / 100) * (100 - need_rate); : } : else : result_max = (slen * (100 - need_rate)) / 100; 0.00 : 7124d2: 89 55 9c mov %edx,-0x64(%rbp) : * Experiments suggest that these hash sizes work pretty well. A large : * hash table minimizes collision, but has a higher startup cost. For a : * small input, the startup cost dominates. The table size must be a power : * of two. : */ : if (slen < 128) 0.00 : 7124d5: ba 00 04 00 00 mov $0x400,%edx 0.00 : 7124da: 0f 8e 1b fa ff ff jle 711efb : hashsz = 512; : else if (slen < 256) 0.00 : 7124e0: 81 fe ff 00 00 00 cmp $0xff,%esi 0.00 : 7124e6: c7 45 ac ff 03 00 00 movl $0x3ff,-0x54(%rbp) 0.00 : 7124ed: ba 00 08 00 00 mov $0x800,%edx 0.00 : 7124f2: 0f 8e 03 fa ff ff jle 711efb 0.00 : 7124f8: e9 e6 f9 ff ff jmpq 711ee3 0.00 : 7124fd: 0f 1f 00 nopl (%rax) : { : /* : * No match found. Copy one literal byte. : */ : pglz_out_literal(ctrlp, ctrlb, ctrl, bp, *dp); : pglz_hist_add(hist_start, hist_entries, 0.00 : 712500: 48 8b b9 c0 71 b9 00 mov 0xb971c0(%rcx),%rdi 0.00 : 712507: 48 63 56 10 movslq 0x10(%rsi),%rdx 0.00 : 71250b: 48 89 f8 mov %rdi,%rax 0.00 : 71250e: 48 2d c0 71 b9 00 sub $0xb971c0,%rax 0.00 : 712514: 48 c1 f8 05 sar $0x5,%rax 0.00 : 712518: 66 89 84 12 c0 31 b9 mov %ax,0xb931c0(%rdx,%rdx,1) 0.00 : 71251f: 00 0.00 : 712520: e9 ba fd ff ff jmpq 7122df : memset(hist_start, 0, hashsz * sizeof(int16)); : : /* : * Compress the source directly into the output buffer. : */ : while (dp < dend) 0.00 : 712525: 8b 45 b0 mov -0x50(%rbp),%eax 0.00 : 712528: 2b 45 c0 sub -0x40(%rbp),%eax : : /* : * Write out the last control byte and check that we haven't overrun the : * output size allowed by the strategy. : */ : *ctrlp = ctrlb; 0.00 : 71252b: 0f b6 55 95 movzbl -0x6b(%rbp),%edx 0.00 : 71252f: 48 8b 4d 88 mov -0x78(%rbp),%rcx 0.00 : 712533: 88 11 mov %dl,(%rcx) : result_size = bp - bstart; : if (result_size >= result_max) 0.00 : 712535: 3b 45 9c cmp -0x64(%rbp),%eax 0.00 : 712538: 0f 8d e9 fc ff ff jge 712227 : return false; : : /* : * Success - need only fill in the actual length of the compressed datum. : */ : SET_VARSIZE_COMPRESSED(dest, result_size + sizeof(PGLZ_Header)); 0.00 : 71253e: 8d 04 85 20 00 00 00 lea 0x20(,%rax,4),%eax 0.00 : 712545: 48 8b bd 70 ff ff ff mov -0x90(%rbp),%rdi 0.00 : 71254c: 83 c8 02 or $0x2,%eax 0.00 : 71254f: 89 07 mov %eax,(%rdi) 0.00 : 712551: b8 01 00 00 00 mov $0x1,%eax : : return true; : } 0.00 : 712556: e9 ce fc ff ff jmpq 712229 : hashsz = 512; : else if (slen < 256) : hashsz = 1024; : else if (slen < 512) : hashsz = 2048; : else if (slen < 1024) 0.00 : 71255b: c7 45 ac ff 1f 00 00 movl $0x1fff,-0x54(%rbp) 0.00 : 712562: 81 fe 00 04 00 00 cmp $0x400,%esi 0.00 : 712568: b8 ff 0f 00 00 mov $0xfff,%eax 0.00 : 71256d: 0f 4d 45 ac cmovge -0x54(%rbp),%eax 0.00 : 712571: ba 00 40 00 00 mov $0x4000,%edx 0.00 : 712576: 89 45 ac mov %eax,-0x54(%rbp) 0.00 : 712579: b8 00 20 00 00 mov $0x2000,%eax 0.00 : 71257e: 48 0f 4c d0 cmovl %rax,%rdx 0.00 : 712582: e9 74 f9 ff ff jmpq 711efb : memset(hist_start, 0, hashsz * sizeof(int16)); : : /* : * Compress the source directly into the output buffer. : */ : while (dp < dend) 0.00 : 712587: 48 8d 7d d7 lea -0x29(%rbp),%rdi 0.00 : 71258b: c6 45 95 00 movb $0x0,-0x6b(%rbp) 0.00 : 71258f: 31 c0 xor %eax,%eax 0.00 : 712591: 48 89 7d 88 mov %rdi,-0x78(%rbp) 0.00 : 712595: eb 94 jmp 71252b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 40.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:761 40.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:762 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:761 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007837d0 : : * the partition number (from the low-order bits of the hash value) before : * searching. : */ : uint32 : get_hash_value(HTAB *hashp, const void *keyPtr) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:761 40.00 : 7837d0: 55 push %rbp 0.00 : 7837d1: 48 89 f8 mov %rdi,%rax 0.00 : 7837d4: 48 89 f7 mov %rsi,%rdi : return hashp->hash(keyPtr, hashp->keysize); 0.00 : 7837d7: 4c 8b 58 10 mov 0x10(%rax),%r11 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:762 40.00 : 7837db: 48 8b 70 48 mov 0x48(%rax),%rsi : * the partition number (from the low-order bits of the hash value) before : * searching. : */ : uint32 : get_hash_value(HTAB *hashp, const void *keyPtr) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:761 20.00 : 7837df: 48 89 e5 mov %rsp,%rbp : return hashp->hash(keyPtr, hashp->keysize); : } 0.00 : 7837e2: c9 leaveq : * searching. : */ : uint32 : get_hash_value(HTAB *hashp, const void *keyPtr) : { : return hashp->hash(keyPtr, hashp->keysize); 0.00 : 7837e3: 41 ff e3 jmpq *%r11 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 60.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:52 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:52 20.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:55 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000784f60 : : /* : * tag_hash: hash function for fixed-size tag values : */ : uint32 : tag_hash(const void *key, Size keysize) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:52 60.00 : 784f60: 55 push %rbp 20.00 : 784f61: 48 89 e5 mov %rsp,%rbp : return DatumGetUInt32(hash_any((const unsigned char *) key, 0.00 : 784f64: e8 e7 b3 d0 ff callq 490350 : (int) keysize)); : } /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:55 20.00 : 784f69: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 20.00 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:78 20.00 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:78 20.00 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:82 20.00 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:79 20.00 /home/Computational/mark/src/postgres-andres/src/port/qsort.c:79 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007acb70 : : #define SWAPINIT(a, es) swaptype = ((char *)(a) - (char *)0) % sizeof(long) || \ : (es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1; : : static void : swapfunc(char *a, char *b, size_t n, int swaptype) : { 0.00 : 7acb70: 55 push %rbp : if (swaptype <= 1) : swapcode(long, a, b, n); 0.00 : 7acb71: 45 31 c0 xor %r8d,%r8d : (es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1; : : static void : swapfunc(char *a, char *b, size_t n, int swaptype) : { : if (swaptype <= 1) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:78 20.00 : 7acb74: 83 e9 01 sub $0x1,%ecx : #define SWAPINIT(a, es) swaptype = ((char *)(a) - (char *)0) % sizeof(long) || \ : (es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1; : : static void : swapfunc(char *a, char *b, size_t n, int swaptype) : { 0.00 : 7acb77: 49 89 d1 mov %rdx,%r9 0.00 : 7acb7a: 48 89 e5 mov %rsp,%rbp : if (swaptype <= 1) 20.00 : 7acb7d: 7e 21 jle 7acba0 0.00 : 7acb7f: 90 nop : swapcode(long, a, b, n); : else : swapcode(char, a, b, n); 0.00 : 7acb80: 42 0f b6 14 07 movzbl (%rdi,%r8,1),%edx 0.00 : 7acb85: 42 0f b6 04 06 movzbl (%rsi,%r8,1),%eax 0.00 : 7acb8a: 42 88 04 07 mov %al,(%rdi,%r8,1) 0.00 : 7acb8e: 42 88 14 06 mov %dl,(%rsi,%r8,1) 0.00 : 7acb92: 49 83 c0 01 add $0x1,%r8 0.00 : 7acb96: 4d 39 c1 cmp %r8,%r9 0.00 : 7acb99: 75 e5 jne 7acb80 : } 0.00 : 7acb9b: c9 leaveq /home/Computational/mark/src/postgres-andres/src/port/qsort.c:82 20.00 : 7acb9c: c3 retq 0.00 : 7acb9d: 0f 1f 00 nopl (%rax) : : static void : swapfunc(char *a, char *b, size_t n, int swaptype) : { : if (swaptype <= 1) : swapcode(long, a, b, n); 0.00 : 7acba0: 49 89 d0 mov %rdx,%r8 0.00 : 7acba3: 31 c9 xor %ecx,%ecx 0.00 : 7acba5: 49 c1 e8 03 shr $0x3,%r8 0.00 : 7acba9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) /home/Computational/mark/src/postgres-andres/src/port/qsort.c:79 20.00 : 7acbb0: 48 8b 14 0f mov (%rdi,%rcx,1),%rdx 0.00 : 7acbb4: 48 8b 04 0e mov (%rsi,%rcx,1),%rax 0.00 : 7acbb8: 48 89 04 0f mov %rax,(%rdi,%rcx,1) 20.00 : 7acbbc: 48 89 14 0e mov %rdx,(%rsi,%rcx,1) 0.00 : 7acbc0: 48 83 c1 08 add $0x8,%rcx 0.00 : 7acbc4: 49 83 e8 01 sub $0x1,%r8 0.00 : 7acbc8: 75 e6 jne 7acbb0 : else : swapcode(char, a, b, n); : } 0.00 : 7acbca: c9 leaveq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 16.67 ??:0 16.67 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007b6d0 <__libc_malloc>: ??:0 16.67 : 7b6d0: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 7b6d5: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 7b6da: 49 89 fc mov %rdi,%r12 0.00 : 7b6dd: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 7b6e2: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 7b6e7: 48 83 ec 28 sub $0x28,%rsp 0.00 : 7b6eb: 48 8b 05 be 67 2f 00 mov 0x2f67be(%rip),%rax # 371eb0 <_DYNAMIC+0x350> 0.00 : 7b6f2: 48 8b 00 mov (%rax),%rax 50.00 : 7b6f5: 48 85 c0 test %rax,%rax 0.00 : 7b6f8: 0f 85 18 02 00 00 jne 7b916 <__libc_malloc+0x246> 0.00 : 7b6fe: 48 8b 15 3b 66 2f 00 mov 0x2f663b(%rip),%rdx # 371d40 <_DYNAMIC+0x1e0> 0.00 : 7b705: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 7b70c: 00 00 0.00 : 7b70e: 48 8b 1c 10 mov (%rax,%rdx,1),%rbx 16.67 : 7b712: 48 85 db test %rbx,%rbx 0.00 : 7b715: 0f 84 b5 00 00 00 je 7b7d0 <__libc_malloc+0x100> 0.00 : 7b71b: 31 c0 xor %eax,%eax 0.00 : 7b71d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 7b722: 83 3d 8b bf 2f 00 00 cmpl $0x0,0x2fbf8b(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b729: 74 06 je 7b731 <__libc_malloc+0x61> 0.00 : 7b72b: f0 0f b1 13 lock cmpxchg %edx,(%rbx) 0.00 : 7b72f: eb 03 jmp 7b734 <__libc_malloc+0x64> 0.00 : 7b731: 0f b1 13 cmpxchg %edx,(%rbx) 16.67 : 7b734: 85 c0 test %eax,%eax 0.00 : 7b736: 0f 85 94 00 00 00 jne 7b7d0 <__libc_malloc+0x100> 0.00 : 7b73c: 4c 89 e6 mov %r12,%rsi 0.00 : 7b73f: 48 89 df mov %rbx,%rdi 0.00 : 7b742: e8 d9 d6 ff ff callq 78e20 <_int_malloc> 0.00 : 7b747: 48 85 c0 test %rax,%rax 0.00 : 7b74a: 48 89 c5 mov %rax,%rbp 0.00 : 7b74d: 0f 84 ad 00 00 00 je 7b800 <__libc_malloc+0x130> 0.00 : 7b753: 83 3d 5a bf 2f 00 00 cmpl $0x0,0x2fbf5a(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b75a: 74 0b je 7b767 <__libc_malloc+0x97> 0.00 : 7b75c: f0 ff 0b lock decl (%rbx) 0.00 : 7b75f: 0f 85 60 1c 00 00 jne 7d3c5 <_L_unlock_10041> 0.00 : 7b765: eb 08 jmp 7b76f <__libc_malloc+0x9f> 0.00 : 7b767: ff 0b decl (%rbx) 0.00 : 7b769: 0f 85 56 1c 00 00 jne 7d3c5 <_L_unlock_10041> 0.00 : 7b76f: 48 8b 45 f8 mov -0x8(%rbp),%rax 0.00 : 7b773: 48 8d 55 f0 lea -0x10(%rbp),%rdx 0.00 : 7b777: a8 02 test $0x2,%al 0.00 : 7b779: 75 2f jne 7b7aa <__libc_malloc+0xda> 0.00 : 7b77b: a8 04 test $0x4,%al 0.00 : 7b77d: 48 8d 0d 1c 87 2f 00 lea 0x2f871c(%rip),%rcx # 373ea0 0.00 : 7b784: 75 6a jne 7b7f0 <__libc_malloc+0x120> 0.00 : 7b786: 48 39 d9 cmp %rbx,%rcx 0.00 : 7b789: 74 1f je 7b7aa <__libc_malloc+0xda> 0.00 : 7b78b: 48 8d 0d 13 07 0c 00 lea 0xc0713(%rip),%rcx # 13bea5 <__func__.13639> 0.00 : 7b792: 48 8d 35 a9 03 0c 00 lea 0xc03a9(%rip),%rsi # 13bb42 <__PRETTY_FUNCTION__.14063+0xdb> 0.00 : 7b799: 48 8d 3d 98 46 0c 00 lea 0xc4698(%rip),%rdi # 13fe38 <__PRETTY_FUNCTION__.11129+0x245f> 0.00 : 7b7a0: ba 5e 0e 00 00 mov $0xe5e,%edx 0.00 : 7b7a5: e8 16 b0 ff ff callq 767c0 <__malloc_assert> 0.00 : 7b7aa: 48 89 e8 mov %rbp,%rax 0.00 : 7b7ad: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 7b7b2: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7b7b7: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 7b7bc: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7b7c1: 48 83 c4 28 add $0x28,%rsp 0.00 : 7b7c5: c3 retq 0.00 : 7b7c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7b7cd: 00 00 00 0.00 : 7b7d0: 48 89 df mov %rbx,%rdi 0.00 : 7b7d3: 4c 89 e6 mov %r12,%rsi 0.00 : 7b7d6: 31 ed xor %ebp,%ebp 0.00 : 7b7d8: e8 b3 d2 ff ff callq 78a90 0.00 : 7b7dd: 48 85 c0 test %rax,%rax 0.00 : 7b7e0: 48 89 c3 mov %rax,%rbx 0.00 : 7b7e3: 0f 85 53 ff ff ff jne 7b73c <__libc_malloc+0x6c> 0.00 : 7b7e9: eb bf jmp 7b7aa <__libc_malloc+0xda> 0.00 : 7b7eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7b7f0: 48 81 e2 00 00 00 fc and $0xfffffffffc000000,%rdx 0.00 : 7b7f7: 48 8b 0a mov (%rdx),%rcx 0.00 : 7b7fa: eb 8a jmp 7b786 <__libc_malloc+0xb6> 0.00 : 7b7fc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7b800: 4c 8d 2d 99 86 2f 00 lea 0x2f8699(%rip),%r13 # 373ea0 0.00 : 7b807: 4c 39 eb cmp %r13,%rbx 0.00 : 7b80a: 0f 84 90 00 00 00 je 7b8a0 <__libc_malloc+0x1d0> 0.00 : 7b810: 83 3d 9d be 2f 00 00 cmpl $0x0,0x2fbe9d(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b817: 74 0b je 7b824 <__libc_malloc+0x154> 0.00 : 7b819: f0 ff 0b lock decl (%rbx) 0.00 : 7b81c: 0f 85 be 1b 00 00 jne 7d3e0 <_L_unlock_10131> 0.00 : 7b822: eb 08 jmp 7b82c <__libc_malloc+0x15c> 0.00 : 7b824: ff 0b decl (%rbx) 0.00 : 7b826: 0f 85 b4 1b 00 00 jne 7d3e0 <_L_unlock_10131> 0.00 : 7b82c: be 01 00 00 00 mov $0x1,%esi 0.00 : 7b831: 31 c0 xor %eax,%eax 0.00 : 7b833: 83 3d 7a be 2f 00 00 cmpl $0x0,0x2fbe7a(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b83a: 74 10 je 7b84c <__libc_malloc+0x17c> 0.00 : 7b83c: f0 0f b1 35 5c 86 2f lock cmpxchg %esi,0x2f865c(%rip) # 373ea0 0.00 : 7b843: 00 0.00 : 7b844: 0f 85 b1 1b 00 00 jne 7d3fb <_L_lock_10139> 0.00 : 7b84a: eb 0d jmp 7b859 <__libc_malloc+0x189> 0.00 : 7b84c: 0f b1 35 4d 86 2f 00 cmpxchg %esi,0x2f864d(%rip) # 373ea0 0.00 : 7b853: 0f 85 a2 1b 00 00 jne 7d3fb <_L_lock_10139> 0.00 : 7b859: 4c 89 e6 mov %r12,%rsi 0.00 : 7b85c: 4c 89 ef mov %r13,%rdi 0.00 : 7b85f: e8 bc d5 ff ff callq 78e20 <_int_malloc> 0.00 : 7b864: 48 89 c5 mov %rax,%rbp 0.00 : 7b867: 83 3d 46 be 2f 00 00 cmpl $0x0,0x2fbe46(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b86e: 74 0f je 7b87f <__libc_malloc+0x1af> 0.00 : 7b870: f0 ff 0d 29 86 2f 00 lock decl 0x2f8629(%rip) # 373ea0 0.00 : 7b877: 0f 85 9d 1b 00 00 jne 7d41a <_L_unlock_10152> 0.00 : 7b87d: eb 0c jmp 7b88b <__libc_malloc+0x1bb> 0.00 : 7b87f: ff 0d 1b 86 2f 00 decl 0x2f861b(%rip) # 373ea0 0.00 : 7b885: 0f 85 8f 1b 00 00 jne 7d41a <_L_unlock_10152> 0.00 : 7b88b: 4c 89 eb mov %r13,%rbx 0.00 : 7b88e: 48 85 ed test %rbp,%rbp 0.00 : 7b891: 0f 84 13 ff ff ff je 7b7aa <__libc_malloc+0xda> 0.00 : 7b897: e9 d3 fe ff ff jmpq 7b76f <__libc_malloc+0x9f> 0.00 : 7b89c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 7b8a0: 48 83 3d 60 8e 2f 00 cmpq $0x0,0x2f8e60(%rip) # 374708 0.00 : 7b8a7: 00 0.00 : 7b8a8: 4c 89 e6 mov %r12,%rsi 0.00 : 7b8ab: 48 0f 44 d8 cmove %rax,%rbx 0.00 : 7b8af: 48 89 df mov %rbx,%rdi 0.00 : 7b8b2: e8 d9 d1 ff ff callq 78a90 0.00 : 7b8b7: 48 89 c3 mov %rax,%rbx 0.00 : 7b8ba: 83 3d f3 bd 2f 00 00 cmpl $0x0,0x2fbdf3(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b8c1: 74 0f je 7b8d2 <__libc_malloc+0x202> 0.00 : 7b8c3: f0 ff 0d d6 85 2f 00 lock decl 0x2f85d6(%rip) # 373ea0 0.00 : 7b8ca: 0f 85 69 1b 00 00 jne 7d439 <_L_unlock_10175> 0.00 : 7b8d0: eb 0c jmp 7b8de <__libc_malloc+0x20e> 0.00 : 7b8d2: ff 0d c8 85 2f 00 decl 0x2f85c8(%rip) # 373ea0 0.00 : 7b8d8: 0f 85 5b 1b 00 00 jne 7d439 <_L_unlock_10175> 0.00 : 7b8de: 48 85 db test %rbx,%rbx 0.00 : 7b8e1: 0f 84 c3 fe ff ff je 7b7aa <__libc_malloc+0xda> 0.00 : 7b8e7: 4c 89 e6 mov %r12,%rsi 0.00 : 7b8ea: 48 89 df mov %rbx,%rdi 0.00 : 7b8ed: e8 2e d5 ff ff callq 78e20 <_int_malloc> 0.00 : 7b8f2: 48 89 c5 mov %rax,%rbp 0.00 : 7b8f5: 83 3d b8 bd 2f 00 00 cmpl $0x0,0x2fbdb8(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 7b8fc: 74 0b je 7b909 <__libc_malloc+0x239> 0.00 : 7b8fe: f0 ff 0b lock decl (%rbx) 0.00 : 7b901: 0f 85 51 1b 00 00 jne 7d458 <_L_unlock_10187> 0.00 : 7b907: eb 08 jmp 7b911 <__libc_malloc+0x241> 0.00 : 7b909: ff 0b decl (%rbx) 0.00 : 7b90b: 0f 85 47 1b 00 00 jne 7d458 <_L_unlock_10187> 0.00 : 7b911: e9 78 ff ff ff jmpq 7b88e <__libc_malloc+0x1be> 0.00 : 7b916: 48 8b 74 24 28 mov 0x28(%rsp),%rsi 0.00 : 7b91b: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 7b920: 49 89 c3 mov %rax,%r11 0.00 : 7b923: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 7b928: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 7b92d: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 7b932: 48 83 c4 28 add $0x28,%rsp 0.00 : 7b936: 41 ff e3 jmpq *%r11 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 50.00 ??:0 33.33 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000003bb0 : : return __ixgbe_maybe_stop_tx(tx_ring, size); : } : : #ifdef HAVE_NETDEV_SELECT_QUEUE : static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb) : { 0.00 : 3bb0: 48 83 ec 38 sub $0x38,%rsp ??:0 33.33 : 3bb4: 48 89 5c 24 10 mov %rbx,0x10(%rsp) 0.00 : 3bb9: 4c 89 64 24 20 mov %r12,0x20(%rsp) 0.00 : 3bbe: 48 89 f3 mov %rsi,%rbx 50.00 : 3bc1: 4c 89 6c 24 28 mov %r13,0x28(%rsp) 0.00 : 3bc6: 48 89 6c 24 18 mov %rbp,0x18(%rsp) 0.00 : 3bcb: 49 89 fd mov %rdi,%r13 0.00 : 3bce: 4c 89 74 24 30 mov %r14,0x30(%rsp) : return skb->queue_mapping - 1; : } : : static inline bool skb_rx_queue_recorded(const struct sk_buff *skb) : { : return skb->queue_mapping != 0; 0.00 : 3bd3: 0f b7 86 ac 00 00 00 movzwl 0xac(%rsi),%eax : struct ixgbe_adapter *adapter = netdev_priv(dev); 0.00 : 3bda: 4c 8d a7 00 08 00 00 lea 0x800(%rdi),%r12 : int txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : : smp_processor_id(); 0.00 : 3be1: 66 85 c0 test %ax,%ax 0.00 : 3be4: 0f 84 de 00 00 00 je 3cc8 0.00 : 3bea: 83 e8 01 sub $0x1,%eax 0.00 : 3bed: 0f b7 e8 movzwl %ax,%ebp : */ : static inline __be16 vlan_get_protocol(const struct sk_buff *skb) : { : __be16 protocol = 0; : : if (vlan_tx_tag_present(skb) || 0.00 : 3bf0: f6 83 bd 00 00 00 10 testb $0x10,0xbd(%rbx) 0.00 : 3bf7: 0f 84 93 00 00 00 je 3c90 0.00 : 3bfd: 0f b7 43 7e movzwl 0x7e(%rbx),%eax : #ifdef IXGBE_FCOE : __be16 protocol = vlan_get_protocol(skb); : : if ((protocol == __constant_htons(ETH_P_FCOE)) || 0.00 : 3c01: 66 3d 89 06 cmp $0x689,%ax 0.00 : 3c05: 74 49 je 3c50 0.00 : 3c07: 66 3d 89 14 cmp $0x1489,%ax 0.00 : 3c0b: 74 43 je 3c50 : txq += f->offset; : : return txq; : } else if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { : txq = adapter->fcoe.up; : return txq; 0.00 : 3c0d: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : 3c14: 00 : : return txq; : } : : #endif : if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) { 0.00 : 3c15: 66 85 c0 test %ax,%ax 0.00 : 3c18: 0f 89 d2 00 00 00 jns 3cf0 : while (unlikely(txq >= dev->real_num_tx_queues)) 0.00 : 3c1e: 41 8b 85 8c 03 00 00 mov 0x38c(%r13),%eax 0.00 : 3c25: 39 c5 cmp %eax,%ebp 0.00 : 3c27: 0f 83 dc 00 00 00 jae 3d09 : txq -= dev->real_num_tx_queues; : return txq; 0.00 : 3c2d: 89 e8 mov %ebp,%eax : } : : return __skb_tx_hash(dev, skb, : adapter->ring_feature[RING_F_RSS].indices); : } 0.00 : 3c2f: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx 0.00 : 3c34: 48 8b 6c 24 18 mov 0x18(%rsp),%rbp 0.00 : 3c39: 4c 8b 64 24 20 mov 0x20(%rsp),%r12 0.00 : 3c3e: 4c 8b 6c 24 28 mov 0x28(%rsp),%r13 0.00 : 3c43: 4c 8b 74 24 30 mov 0x30(%rsp),%r14 0.00 : 3c48: 48 83 c4 38 add $0x38,%rsp 0.00 : 3c4c: c3 retq 0.00 : 3c4d: 0f 1f 00 nopl (%rax) : #ifdef IXGBE_FCOE : __be16 protocol = vlan_get_protocol(skb); : : if ((protocol == __constant_htons(ETH_P_FCOE)) || : (protocol == __constant_htons(ETH_P_FIP))) { : if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED) { 0.00 : 3c50: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : 3c57: 00 0.00 : 3c58: a9 00 00 04 00 test $0x40000,%eax 0.00 : 3c5d: 74 79 je 3cd8 : struct ixgbe_ring_feature *f; : : f = &adapter->ring_feature[RING_F_FCOE]; : : while (txq >= f->indices) 0.00 : 3c5f: 41 0f b7 8c 24 ea 0b movzwl 0xbea(%r12),%ecx 0.00 : 3c66: 00 00 0.00 : 3c68: 39 cd cmp %ecx,%ebp 0.00 : 3c6a: 7c 17 jl 3c83 0.00 : 3c6c: 89 ce mov %ecx,%esi 0.00 : 3c6e: 89 ea mov %ebp,%edx 0.00 : 3c70: f7 de neg %esi 0.00 : 3c72: 29 ca sub %ecx,%edx 0.00 : 3c74: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 3c78: 89 d5 mov %edx,%ebp 0.00 : 3c7a: 01 f2 add %esi,%edx 0.00 : 3c7c: 8d 04 0a lea (%rdx,%rcx,1),%eax 0.00 : 3c7f: 39 c1 cmp %eax,%ecx 0.00 : 3c81: 7e f5 jle 3c78 : txq -= f->indices; : txq += f->offset; : : return txq; 0.00 : 3c83: 41 0f b7 84 24 ee 0b movzwl 0xbee(%r12),%eax 0.00 : 3c8a: 00 00 0.00 : 3c8c: 01 e8 add %ebp,%eax : return txq; : } : : return __skb_tx_hash(dev, skb, : adapter->ring_feature[RING_F_RSS].indices); : } 0.00 : 3c8e: eb 9f jmp 3c2f 0.00 : 3c90: 0f b7 43 7e movzwl 0x7e(%rbx),%eax 0.00 : 3c94: 66 3d 81 00 cmp $0x81,%ax 0.00 : 3c98: 0f 85 63 ff ff ff jne 3c01 : static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, : int len, void *buffer) : { : int hlen = skb_headlen(skb); : : if (hlen - offset >= len) 0.00 : 3c9e: 8b 43 68 mov 0x68(%rbx),%eax 0.00 : 3ca1: 2b 43 6c sub 0x6c(%rbx),%eax 0.00 : 3ca4: 83 e8 10 sub $0x10,%eax 0.00 : 3ca7: 83 e8 01 sub $0x1,%eax 0.00 : 3caa: 7e 7c jle 3d28 : skb->protocol != cpu_to_be16(ETH_P_8021Q)) : protocol = skb->protocol; : else { : __be16 proto, *protop; : protop = skb_header_pointer(skb, offsetof(struct vlan_ethhdr, 0.00 : 3cac: 48 8b 83 e0 00 00 00 mov 0xe0(%rbx),%rax : h_vlan_encapsulated_proto), : sizeof(proto), &proto); : if (likely(protop)) 0.00 : 3cb3: 48 83 c0 10 add $0x10,%rax 0.00 : 3cb7: 0f 84 50 ff ff ff je 3c0d : protocol = *protop; 0.00 : 3cbd: 0f b7 00 movzwl (%rax),%eax 0.00 : 3cc0: e9 3c ff ff ff jmpq 3c01 0.00 : 3cc5: 0f 1f 00 nopl (%rax) : #ifdef HAVE_NETDEV_SELECT_QUEUE : static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb) : { : struct ixgbe_adapter *adapter = netdev_priv(dev); : int txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : : smp_processor_id(); 16.67 : 3cc8: 65 8b 2c 25 00 00 00 mov %gs:0x0,%ebp 0.00 : 3ccf: 00 0.00 : 3cd0: e9 1b ff ff ff jmpq 3bf0 0.00 : 3cd5: 0f 1f 00 nopl (%rax) : while (txq >= f->indices) : txq -= f->indices; : txq += f->offset; : : return txq; : } else if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { 0.00 : 3cd8: f6 c4 04 test $0x4,%ah 0.00 : 3cdb: 0f 84 34 ff ff ff je 3c15 : txq = adapter->fcoe.up; : return txq; 0.00 : 3ce1: 41 0f b6 84 24 10 7c movzbl 0x7c10(%r12),%eax 0.00 : 3ce8: 00 00 : return txq; : } : : return __skb_tx_hash(dev, skb, : adapter->ring_feature[RING_F_RSS].indices); : } 0.00 : 3cea: e9 40 ff ff ff jmpq 3c2f 0.00 : 3cef: 90 nop : while (unlikely(txq >= dev->real_num_tx_queues)) : txq -= dev->real_num_tx_queues; : return txq; : } : : return __skb_tx_hash(dev, skb, 0.00 : 3cf0: 41 0f b7 94 24 da 0b movzwl 0xbda(%r12),%edx 0.00 : 3cf7: 00 00 0.00 : 3cf9: 48 89 de mov %rbx,%rsi 0.00 : 3cfc: 4c 89 ef mov %r13,%rdi 0.00 : 3cff: e8 00 00 00 00 callq 3d04 : adapter->ring_feature[RING_F_RSS].indices); : } 0.00 : 3d04: e9 26 ff ff ff jmpq 3c2f : return txq; : } : : #endif : if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) { : while (unlikely(txq >= dev->real_num_tx_queues)) 0.00 : 3d09: 89 c1 mov %eax,%ecx 0.00 : 3d0b: 89 ea mov %ebp,%edx 0.00 : 3d0d: f7 d9 neg %ecx 0.00 : 3d0f: 29 c2 sub %eax,%edx 0.00 : 3d11: 89 d5 mov %edx,%ebp 0.00 : 3d13: 01 ca add %ecx,%edx 0.00 : 3d15: 89 d3 mov %edx,%ebx 0.00 : 3d17: 01 c3 add %eax,%ebx 0.00 : 3d19: 0f 82 0e ff ff ff jb 3c2d 0.00 : 3d1f: eb f0 jmp 3d11 0.00 : 3d21: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return skb->data + offset; : : if (skb_copy_bits(skb, offset, buffer, len) < 0) 0.00 : 3d28: 4c 8d 74 24 0e lea 0xe(%rsp),%r14 0.00 : 3d2d: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 3d32: be 10 00 00 00 mov $0x10,%esi 0.00 : 3d37: 48 89 df mov %rbx,%rdi 0.00 : 3d3a: 4c 89 f2 mov %r14,%rdx 0.00 : 3d3d: e8 00 00 00 00 callq 3d42 0.00 : 3d42: 85 c0 test %eax,%eax 0.00 : 3d44: 0f 88 c3 fe ff ff js 3c0d 0.00 : 3d4a: 4c 89 f0 mov %r14,%rax 0.00 : 3d4d: e9 6b ff ff ff jmpq 3cbd Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ---------------------------------------------- 50.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000006d0 : 100.00 : 6d0: 89 f8 mov %edi,%eax : 702: 48 8b je 730 : 704: ba 60 04 00 movzwl 0x10(%rsi),%eax : 708: 00 48 89 f1 mov %ax,0x10(%rdi) : 70c: 89 c2 be 02 movzbl 0x24(%rsi),%eax : 710: 00 00 00 e9 00 00 00 movzbl 0x0(%rax),%eax Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:583 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:586 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:588 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:591 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046eba0 : : * as a single palloc() block. : * ---------------- : */ : HeapTuple : heap_copytuple(HeapTuple tuple) : { 0.00 : 46eba0: 55 push %rbp 0.00 : 46eba1: 48 89 e5 mov %rsp,%rbp 0.00 : 46eba4: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 46eba8: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 46ebac: 48 83 ec 10 sub $0x10,%rsp : HeapTuple newTuple; : : if (!HeapTupleIsValid(tuple) || tuple->t_data == NULL) 0.00 : 46ebb0: 48 85 ff test %rdi,%rdi : * as a single palloc() block. : * ---------------- : */ : HeapTuple : heap_copytuple(HeapTuple tuple) : { 0.00 : 46ebb3: 48 89 fb mov %rdi,%rbx : HeapTuple newTuple; : : if (!HeapTupleIsValid(tuple) || tuple->t_data == NULL) 0.00 : 46ebb6: 75 18 jne 46ebd0 : newTuple = (HeapTuple) palloc(HEAPTUPLESIZE + tuple->t_len); : newTuple->t_len = tuple->t_len; : newTuple->t_self = tuple->t_self; : newTuple->t_tableOid = tuple->t_tableOid; : newTuple->t_data = (HeapTupleHeader) ((char *) newTuple + HEAPTUPLESIZE); : memcpy((char *) newTuple->t_data, (char *) tuple->t_data, tuple->t_len); 0.00 : 46ebb8: 45 31 e4 xor %r12d,%r12d : return newTuple; : } 0.00 : 46ebbb: 4c 89 e0 mov %r12,%rax 0.00 : 46ebbe: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 46ebc2: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 46ebc7: c9 leaveq 0.00 : 46ebc8: c3 retq 0.00 : 46ebc9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : HeapTuple : heap_copytuple(HeapTuple tuple) : { : HeapTuple newTuple; : : if (!HeapTupleIsValid(tuple) || tuple->t_data == NULL) 0.00 : 46ebd0: 48 83 7f 10 00 cmpq $0x0,0x10(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:583 25.00 : 46ebd5: 74 e1 je 46ebb8 : return NULL; : : newTuple = (HeapTuple) palloc(HEAPTUPLESIZE + tuple->t_len); 0.00 : 46ebd7: 8b 3f mov (%rdi),%edi 0.00 : 46ebd9: 48 83 c7 18 add $0x18,%rdi 0.00 : 46ebdd: e8 6e a1 32 00 callq 798d50 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:586 25.00 : 46ebe2: 49 89 c4 mov %rax,%r12 : newTuple->t_len = tuple->t_len; 0.00 : 46ebe5: 8b 03 mov (%rbx),%eax : newTuple->t_self = tuple->t_self; : newTuple->t_tableOid = tuple->t_tableOid; : newTuple->t_data = (HeapTupleHeader) ((char *) newTuple + HEAPTUPLESIZE); 0.00 : 46ebe7: 49 8d 7c 24 18 lea 0x18(%r12),%rdi : : if (!HeapTupleIsValid(tuple) || tuple->t_data == NULL) : return NULL; : : newTuple = (HeapTuple) palloc(HEAPTUPLESIZE + tuple->t_len); : newTuple->t_len = tuple->t_len; 0.00 : 46ebec: 41 89 04 24 mov %eax,(%r12) : newTuple->t_self = tuple->t_self; 0.00 : 46ebf0: 8b 43 04 mov 0x4(%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:588 25.00 : 46ebf3: 41 89 44 24 04 mov %eax,0x4(%r12) 0.00 : 46ebf8: 0f b7 43 08 movzwl 0x8(%rbx),%eax 0.00 : 46ebfc: 66 41 89 44 24 08 mov %ax,0x8(%r12) : newTuple->t_tableOid = tuple->t_tableOid; 0.00 : 46ec02: 8b 43 0c mov 0xc(%rbx),%eax : newTuple->t_data = (HeapTupleHeader) ((char *) newTuple + HEAPTUPLESIZE); 0.00 : 46ec05: 49 89 7c 24 10 mov %rdi,0x10(%r12) : return NULL; : : newTuple = (HeapTuple) palloc(HEAPTUPLESIZE + tuple->t_len); : newTuple->t_len = tuple->t_len; : newTuple->t_self = tuple->t_self; : newTuple->t_tableOid = tuple->t_tableOid; 0.00 : 46ec0a: 41 89 44 24 0c mov %eax,0xc(%r12) : newTuple->t_data = (HeapTupleHeader) ((char *) newTuple + HEAPTUPLESIZE); : memcpy((char *) newTuple->t_data, (char *) tuple->t_data, tuple->t_len); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:591 25.00 : 46ec0f: 8b 13 mov (%rbx),%edx 0.00 : 46ec11: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 46ec15: e8 d6 af ff ff callq 469bf0 : return newTuple; : } 0.00 : 46ec1a: eb 9f jmp 46ebbb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:201 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:201 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:279 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a2c70 : : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr_slice(struct varlena * attr, : int32 sliceoffset, int32 slicelength) : { /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:201 25.00 : 4a2c70: 55 push %rbp 0.00 : 4a2c71: 48 89 e5 mov %rsp,%rbp 0.00 : 4a2c74: 4c 89 65 e0 mov %r12,-0x20(%rbp) 50.00 : 4a2c78: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 4a2c7c: 41 89 f4 mov %esi,%r12d 0.00 : 4a2c7f: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 4a2c83: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 4a2c87: 49 89 fe mov %rdi,%r14 0.00 : 4a2c8a: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 4a2c8e: 48 83 ec 60 sub $0x60,%rsp : struct varlena *preslice; : struct varlena *result; : char *attrdata; : int32 attrsize; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2c92: 0f b6 0f movzbl (%rdi),%ecx : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr_slice(struct varlena * attr, : int32 sliceoffset, int32 slicelength) : { 0.00 : 4a2c95: 41 89 d7 mov %edx,%r15d : struct varlena *preslice; : struct varlena *result; : char *attrdata; : int32 attrsize; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2c98: 48 89 fe mov %rdi,%rsi 0.00 : 4a2c9b: 80 f9 01 cmp $0x1,%cl 0.00 : 4a2c9e: 0f 84 dc 00 00 00 je 4a2d80 : VARATT_EXTERNAL_GET_POINTER(redirect, attr); : : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(redirect.pointer)); : : return heap_tuple_untoast_attr_slice(redirect.pointer, 0.00 : 4a2ca4: 4d 89 f5 mov %r14,%r13 : sliceoffset, slicelength); : } : else : preslice = attr; : : if (VARATT_IS_COMPRESSED(preslice)) 0.00 : 4a2ca7: 0f b6 d1 movzbl %cl,%edx 0.00 : 4a2caa: 89 d0 mov %edx,%eax 0.00 : 4a2cac: 83 e0 03 and $0x3,%eax 0.00 : 4a2caf: 83 f8 02 cmp $0x2,%eax 0.00 : 4a2cb2: 0f 84 f0 00 00 00 je 4a2da8 : : if (tmp != (PGLZ_Header *) attr) : pfree(tmp); : } : : if (VARATT_IS_SHORT(preslice)) 0.00 : 4a2cb8: 83 e2 01 and $0x1,%edx 0.00 : 4a2cbb: 0f 85 8f 00 00 00 jne 4a2d50 : attrdata = VARDATA_SHORT(preslice); : attrsize = VARSIZE_SHORT(preslice) - VARHDRSZ_SHORT; : } : else : { : attrdata = VARDATA(preslice); 0.00 : 4a2cc1: 49 8d 45 04 lea 0x4(%r13),%rax 0.00 : 4a2cc5: 48 89 45 a8 mov %rax,-0x58(%rbp) : attrsize = VARSIZE(preslice) - VARHDRSZ; 0.00 : 4a2cc9: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 4a2ccd: c1 e8 02 shr $0x2,%eax 0.00 : 4a2cd0: 83 e8 04 sub $0x4,%eax : } : : /* slicing of datum for compressed cases and plain value */ : : if (sliceoffset >= attrsize) 0.00 : 4a2cd3: 44 39 e0 cmp %r12d,%eax 0.00 : 4a2cd6: 0f 8f 8d 00 00 00 jg 4a2d69 0.00 : 4a2cdc: 45 31 e4 xor %r12d,%r12d 0.00 : 4a2cdf: 45 31 ff xor %r15d,%r15d 0.00 : 4a2ce2: 31 d2 xor %edx,%edx 0.00 : 4a2ce4: 31 c9 xor %ecx,%ecx 0.00 : 4a2ce6: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 4a2ced: 00 : { : sliceoffset = 0; : slicelength = 0; : } : : if (((sliceoffset + slicelength) > attrsize) || slicelength < 0) 0.00 : 4a2cee: 39 d0 cmp %edx,%eax 0.00 : 4a2cf0: 7c 04 jl 4a2cf6 0.00 : 4a2cf2: 84 c9 test %cl,%cl 0.00 : 4a2cf4: 74 06 je 4a2cfc : slicelength = attrsize - sliceoffset; 0.00 : 4a2cf6: 41 89 c7 mov %eax,%r15d 0.00 : 4a2cf9: 45 29 e7 sub %r12d,%r15d : : result = (struct varlena *) palloc(slicelength + VARHDRSZ); 0.00 : 4a2cfc: 41 8d 5f 04 lea 0x4(%r15),%ebx 0.00 : 4a2d00: 48 63 fb movslq %ebx,%rdi : SET_VARSIZE(result, slicelength + VARHDRSZ); 0.00 : 4a2d03: c1 e3 02 shl $0x2,%ebx : } : : if (((sliceoffset + slicelength) > attrsize) || slicelength < 0) : slicelength = attrsize - sliceoffset; : : result = (struct varlena *) palloc(slicelength + VARHDRSZ); 0.00 : 4a2d06: e8 45 60 2f 00 callq 798d50 : SET_VARSIZE(result, slicelength + VARHDRSZ); 0.00 : 4a2d0b: 89 18 mov %ebx,(%rax) : : memcpy(VARDATA(result), attrdata + sliceoffset, slicelength); 0.00 : 4a2d0d: 48 8b 75 a8 mov -0x58(%rbp),%rsi 0.00 : 4a2d11: 48 8d 78 04 lea 0x4(%rax),%rdi 0.00 : 4a2d15: 48 03 75 b8 add -0x48(%rbp),%rsi 0.00 : 4a2d19: 49 63 d7 movslq %r15d,%rdx : } : : if (((sliceoffset + slicelength) > attrsize) || slicelength < 0) : slicelength = attrsize - sliceoffset; : : result = (struct varlena *) palloc(slicelength + VARHDRSZ); 0.00 : 4a2d1c: 49 89 c4 mov %rax,%r12 : SET_VARSIZE(result, slicelength + VARHDRSZ); : : memcpy(VARDATA(result), attrdata + sliceoffset, slicelength); 0.00 : 4a2d1f: e8 cc 6e fc ff callq 469bf0 : : if (preslice != attr) 0.00 : 4a2d24: 4d 39 f5 cmp %r14,%r13 0.00 : 4a2d27: 74 08 je 4a2d31 : pfree(preslice); 0.00 : 4a2d29: 4c 89 ef mov %r13,%rdi 0.00 : 4a2d2c: e8 4f 5e 2f 00 callq 798b80 : : return result; : } /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:279 25.00 : 4a2d31: 4c 89 e0 mov %r12,%rax 0.00 : 4a2d34: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 4a2d38: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4a2d3c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4a2d40: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 4a2d44: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 4a2d48: c9 leaveq 0.00 : 4a2d49: c3 retq 0.00 : 4a2d4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : if (VARATT_IS_SHORT(preslice)) : { : attrdata = VARDATA_SHORT(preslice); : attrsize = VARSIZE_SHORT(preslice) - VARHDRSZ_SHORT; 0.00 : 4a2d50: d0 e9 shr %cl : pfree(tmp); : } : : if (VARATT_IS_SHORT(preslice)) : { : attrdata = VARDATA_SHORT(preslice); 0.00 : 4a2d52: 48 83 c6 01 add $0x1,%rsi : attrsize = VARSIZE_SHORT(preslice) - VARHDRSZ_SHORT; 0.00 : 4a2d56: 0f b6 c1 movzbl %cl,%eax : pfree(tmp); : } : : if (VARATT_IS_SHORT(preslice)) : { : attrdata = VARDATA_SHORT(preslice); 0.00 : 4a2d59: 48 89 75 a8 mov %rsi,-0x58(%rbp) : attrsize = VARSIZE_SHORT(preslice) - VARHDRSZ_SHORT; 0.00 : 4a2d5d: 83 e8 01 sub $0x1,%eax : attrsize = VARSIZE(preslice) - VARHDRSZ; : } : : /* slicing of datum for compressed cases and plain value */ : : if (sliceoffset >= attrsize) 0.00 : 4a2d60: 44 39 e0 cmp %r12d,%eax 0.00 : 4a2d63: 0f 8e 73 ff ff ff jle 4a2cdc 0.00 : 4a2d69: 44 89 f9 mov %r15d,%ecx 0.00 : 4a2d6c: 49 63 dc movslq %r12d,%rbx 0.00 : 4a2d6f: 43 8d 14 27 lea (%r15,%r12,1),%edx 0.00 : 4a2d73: c1 e9 1f shr $0x1f,%ecx 0.00 : 4a2d76: 48 89 5d b8 mov %rbx,-0x48(%rbp) 0.00 : 4a2d7a: e9 6f ff ff ff jmpq 4a2cee 0.00 : 4a2d7f: 90 nop : struct varlena *preslice; : struct varlena *result; : char *attrdata; : int32 attrsize; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2d80: 0f b6 47 01 movzbl 0x1(%rdi),%eax 0.00 : 4a2d84: 3c 12 cmp $0x12,%al 0.00 : 4a2d86: 74 70 je 4a2df8 : return toast_fetch_datum_slice(attr, sliceoffset, slicelength); : : /* fetch it back (compressed marker will get set automatically) */ : preslice = toast_fetch_datum(attr); : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) 0.00 : 4a2d88: 2c 01 sub $0x1,%al 0.00 : 4a2d8a: 0f 85 14 ff ff ff jne 4a2ca4 : { : struct varatt_indirect redirect; : : VARATT_EXTERNAL_GET_POINTER(redirect, attr); 0.00 : 4a2d90: 48 8b 7f 02 mov 0x2(%rdi),%rdi : : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(redirect.pointer)); : : return heap_tuple_untoast_attr_slice(redirect.pointer, 0.00 : 4a2d94: 44 89 e6 mov %r12d,%esi : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) : { : struct varatt_indirect redirect; : : VARATT_EXTERNAL_GET_POINTER(redirect, attr); 0.00 : 4a2d97: 48 89 7d c0 mov %rdi,-0x40(%rbp) : : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(redirect.pointer)); : : return heap_tuple_untoast_attr_slice(redirect.pointer, 0.00 : 4a2d9b: e8 d0 fe ff ff callq 4a2c70 0.00 : 4a2da0: 49 89 c4 mov %rax,%r12 : : if (preslice != attr) : pfree(preslice); : : return result; : } 0.00 : 4a2da3: eb 8c jmp 4a2d31 0.00 : 4a2da5: 0f 1f 00 nopl (%rax) : else : preslice = attr; : : if (VARATT_IS_COMPRESSED(preslice)) : { : PGLZ_Header *tmp = (PGLZ_Header *) preslice; 0.00 : 4a2da8: 4c 89 6d b0 mov %r13,-0x50(%rbp) : Size size = PGLZ_RAW_SIZE(tmp) + VARHDRSZ; 0.00 : 4a2dac: 41 8b 5d 04 mov 0x4(%r13),%ebx 0.00 : 4a2db0: 83 c3 04 add $0x4,%ebx 0.00 : 4a2db3: 48 63 db movslq %ebx,%rbx : : preslice = (struct varlena *) palloc(size); 0.00 : 4a2db6: 48 89 df mov %rbx,%rdi : SET_VARSIZE(preslice, size); 0.00 : 4a2db9: c1 e3 02 shl $0x2,%ebx : if (VARATT_IS_COMPRESSED(preslice)) : { : PGLZ_Header *tmp = (PGLZ_Header *) preslice; : Size size = PGLZ_RAW_SIZE(tmp) + VARHDRSZ; : : preslice = (struct varlena *) palloc(size); 0.00 : 4a2dbc: e8 8f 5f 2f 00 callq 798d50 : SET_VARSIZE(preslice, size); 0.00 : 4a2dc1: 89 18 mov %ebx,(%rax) : pglz_decompress(tmp, VARDATA(preslice)); 0.00 : 4a2dc3: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4a2dc7: 48 8d 70 04 lea 0x4(%rax),%rsi : if (VARATT_IS_COMPRESSED(preslice)) : { : PGLZ_Header *tmp = (PGLZ_Header *) preslice; : Size size = PGLZ_RAW_SIZE(tmp) + VARHDRSZ; : : preslice = (struct varlena *) palloc(size); 0.00 : 4a2dcb: 49 89 c5 mov %rax,%r13 : SET_VARSIZE(preslice, size); : pglz_decompress(tmp, VARDATA(preslice)); 0.00 : 4a2dce: e8 dd ee 26 00 callq 711cb0 : : if (tmp != (PGLZ_Header *) attr) 0.00 : 4a2dd3: 4c 39 75 b0 cmp %r14,-0x50(%rbp) 0.00 : 4a2dd7: 74 09 je 4a2de2 : pfree(tmp); 0.00 : 4a2dd9: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4a2ddd: e8 9e 5d 2f 00 callq 798b80 0.00 : 4a2de2: 41 0f b6 4d 00 movzbl 0x0(%r13),%ecx 0.00 : 4a2de7: 4c 89 ee mov %r13,%rsi 0.00 : 4a2dea: 0f b6 d1 movzbl %cl,%edx 0.00 : 4a2ded: e9 c6 fe ff ff jmpq 4a2cb8 0.00 : 4a2df2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) : { : struct varatt_external toast_pointer; : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); 0.00 : 4a2df8: 48 8b 47 02 mov 0x2(%rdi),%rax 0.00 : 4a2dfc: 48 89 c1 mov %rax,%rcx 0.00 : 4a2dff: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 4a2e03: 48 8b 57 0a mov 0xa(%rdi),%rdx 0.00 : 4a2e07: 48 c1 e9 20 shr $0x20,%rcx : : /* fast path for non-compressed external datums */ : if (!VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) 0.00 : 4a2e0b: 83 e8 04 sub $0x4,%eax 0.00 : 4a2e0e: 39 c1 cmp %eax,%ecx : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) : { : struct varatt_external toast_pointer; : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); 0.00 : 4a2e10: 48 89 55 c8 mov %rdx,-0x38(%rbp) : : /* fast path for non-compressed external datums */ : if (!VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) 0.00 : 4a2e14: 7d 1a jge 4a2e30 : return toast_fetch_datum_slice(attr, sliceoffset, slicelength); : : /* fetch it back (compressed marker will get set automatically) */ : preslice = toast_fetch_datum(attr); 0.00 : 4a2e16: e8 05 e7 ff ff callq 4a1520 0.00 : 4a2e1b: 49 89 c5 mov %rax,%r13 0.00 : 4a2e1e: 48 89 c6 mov %rax,%rsi 0.00 : 4a2e21: 0f b6 08 movzbl (%rax),%ecx : struct varlena *preslice; : struct varlena *result; : char *attrdata; : int32 attrsize; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2e24: e9 7e fe ff ff jmpq 4a2ca7 0.00 : 4a2e29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); : : /* fast path for non-compressed external datums */ : if (!VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) : return toast_fetch_datum_slice(attr, sliceoffset, slicelength); 0.00 : 4a2e30: 44 89 e6 mov %r12d,%esi 0.00 : 4a2e33: 44 89 fa mov %r15d,%edx 0.00 : 4a2e36: e8 f5 ef ff ff callq 4a1e30 0.00 : 4a2e3b: 49 89 c4 mov %rax,%r12 : : if (preslice != attr) : pfree(preslice); : : return result; : } 0.00 : 4a2e3e: e9 ee fe ff ff jmpq 4a2d31 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:331 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:366 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:366 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:352 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a4350 : : * we might see the old value. It is the caller's responsibility to deal with : * all concurrency issues! : */ : bool : visibilitymap_test(Relation rel, BlockNumber heapBlk, Buffer *buf) : { 0.00 : 4a4350: 55 push %rbp : BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk); 0.00 : 4a4351: 89 f1 mov %esi,%ecx 0.00 : 4a4353: b8 21 81 01 02 mov $0x2018121,%eax 0.00 : 4a4358: c1 e9 06 shr $0x6,%ecx : * we might see the old value. It is the caller's responsibility to deal with : * all concurrency issues! : */ : bool : visibilitymap_test(Relation rel, BlockNumber heapBlk, Buffer *buf) : { 0.00 : 4a435b: 48 89 e5 mov %rsp,%rbp 0.00 : 4a435e: 4c 89 6d f0 mov %r13,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:331 25.00 : 4a4362: 49 89 d5 mov %rdx,%r13 0.00 : 4a4365: 48 89 5d e0 mov %rbx,-0x20(%rbp) : BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk); 0.00 : 4a4369: f7 e1 mul %ecx : * we might see the old value. It is the caller's responsibility to deal with : * all concurrency issues! : */ : bool : visibilitymap_test(Relation rel, BlockNumber heapBlk, Buffer *buf) : { 0.00 : 4a436b: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 4a436f: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 4a4373: 48 83 ec 20 sub $0x20,%rsp 0.00 : 4a4377: 49 89 fe mov %rdi,%r14 : #ifdef TRACE_VISIBILITYMAP : elog(DEBUG1, "vm_test %s %d", RelationGetRelationName(rel), heapBlk); : #endif : : /* Reuse the old pinned buffer if possible */ : if (BufferIsValid(*buf)) 0.00 : 4a437a: 41 8b 7d 00 mov 0x0(%r13),%edi : * we might see the old value. It is the caller's responsibility to deal with : * all concurrency issues! : */ : bool : visibilitymap_test(Relation rel, BlockNumber heapBlk, Buffer *buf) : { 0.00 : 4a437e: 41 89 f4 mov %esi,%r12d : BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk); 0.00 : 4a4381: 89 d3 mov %edx,%ebx 0.00 : 4a4383: c1 eb 03 shr $0x3,%ebx : #ifdef TRACE_VISIBILITYMAP : elog(DEBUG1, "vm_test %s %d", RelationGetRelationName(rel), heapBlk); : #endif : : /* Reuse the old pinned buffer if possible */ : if (BufferIsValid(*buf)) 0.00 : 4a4386: 85 ff test %edi,%edi 0.00 : 4a4388: 75 7e jne 4a4408 : } : } : : if (!BufferIsValid(*buf)) : { : *buf = vm_readbuf(rel, mapBlock, false); 0.00 : 4a438a: 31 d2 xor %edx,%edx 0.00 : 4a438c: 89 de mov %ebx,%esi 0.00 : 4a438e: 4c 89 f7 mov %r14,%rdi 0.00 : 4a4391: e8 aa fa ff ff callq 4a3e40 : if (!BufferIsValid(*buf)) 0.00 : 4a4396: 31 d2 xor %edx,%edx 0.00 : 4a4398: 85 c0 test %eax,%eax : } : } : : if (!BufferIsValid(*buf)) : { : *buf = vm_readbuf(rel, mapBlock, false); 0.00 : 4a439a: 41 89 45 00 mov %eax,0x0(%r13) : if (!BufferIsValid(*buf)) 0.00 : 4a439e: 74 4e je 4a43ee : return false; : } : : map = PageGetContents(BufferGetPage(*buf)); 0.00 : 4a43a0: 85 c0 test %eax,%eax 0.00 : 4a43a2: 0f 88 88 00 00 00 js 4a4430 0.00 : 4a43a8: 83 e8 01 sub $0x1,%eax 0.00 : 4a43ab: 48 98 cltq 0.00 : 4a43ad: 48 c1 e0 0d shl $0xd,%rax 0.00 : 4a43b1: 48 8d 48 18 lea 0x18(%rax),%rcx 0.00 : 4a43b5: 48 03 0d 3c b7 71 00 add 0x71b73c(%rip),%rcx # bbfaf8 : /* : * A single-bit read is atomic. There could be memory-ordering effects : * here, but for performance reasons we make it the caller's job to worry : * about that. : */ : result = (map[mapByte] & (1 << mapBit)) ? true : false; 0.00 : 4a43bc: 44 89 e2 mov %r12d,%edx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:366 25.00 : 4a43bf: b8 21 81 01 02 mov $0x2018121,%eax 0.00 : 4a43c4: c1 ea 06 shr $0x6,%edx 0.00 : 4a43c7: f7 e2 mul %edx 25.00 : 4a43c9: 44 89 e0 mov %r12d,%eax 0.00 : 4a43cc: 41 83 e4 07 and $0x7,%r12d 0.00 : 4a43d0: c1 ea 03 shr $0x3,%edx 0.00 : 4a43d3: 69 d2 40 ff 00 00 imul $0xff40,%edx,%edx 0.00 : 4a43d9: 29 d0 sub %edx,%eax 0.00 : 4a43db: c1 e8 03 shr $0x3,%eax 0.00 : 4a43de: 89 c0 mov %eax,%eax 0.00 : 4a43e0: 0f be 04 01 movsbl (%rcx,%rax,1),%eax 0.00 : 4a43e4: 44 89 e1 mov %r12d,%ecx 0.00 : 4a43e7: d3 f8 sar %cl,%eax 0.00 : 4a43e9: 89 c2 mov %eax,%edx 0.00 : 4a43eb: 83 e2 01 and $0x1,%edx : : return result; : } 0.00 : 4a43ee: 89 d0 mov %edx,%eax 0.00 : 4a43f0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4a43f4: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 4a43f9: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 4a43fe: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 4a4403: c9 leaveq 0.00 : 4a4404: c3 retq 0.00 : 4a4405: 0f 1f 00 nopl (%rax) : #endif : : /* Reuse the old pinned buffer if possible */ : if (BufferIsValid(*buf)) : { : if (BufferGetBlockNumber(*buf) != mapBlock) 0.00 : 4a4408: e8 23 fc 1c 00 callq 674030 0.00 : 4a440d: 39 d8 cmp %ebx,%eax 0.00 : 4a440f: 74 3f je 4a4450 : { : ReleaseBuffer(*buf); 0.00 : 4a4411: 41 8b 7d 00 mov 0x0(%r13),%edi 0.00 : 4a4415: e8 46 0a 1d 00 callq 674e60 : *buf = InvalidBuffer; 0.00 : 4a441a: 41 c7 45 00 00 00 00 movl $0x0,0x0(%r13) 0.00 : 4a4421: 00 0.00 : 4a4422: e9 63 ff ff ff jmpq 4a438a 0.00 : 4a4427: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a442e: 00 00 : *buf = vm_readbuf(rel, mapBlock, false); : if (!BufferIsValid(*buf)) : return false; : } : : map = PageGetContents(BufferGetPage(*buf)); 0.00 : 4a4430: 48 8b 15 e1 8c 6d 00 mov 0x6d8ce1(%rip),%rdx # b7d118 0.00 : 4a4437: f7 d0 not %eax 0.00 : 4a4439: 48 98 cltq 0.00 : 4a443b: 48 8b 04 c2 mov (%rdx,%rax,8),%rax 0.00 : 4a443f: 48 8d 48 18 lea 0x18(%rax),%rcx 0.00 : 4a4443: e9 74 ff ff ff jmpq 4a43bc 0.00 : 4a4448: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a444f: 00 : ReleaseBuffer(*buf); : *buf = InvalidBuffer; : } : } : : if (!BufferIsValid(*buf)) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:352 25.00 : 4a4450: 41 8b 45 00 mov 0x0(%r13),%eax 0.00 : 4a4454: 85 c0 test %eax,%eax 0.00 : 4a4456: 0f 85 44 ff ff ff jne 4a43a0 0.00 : 4a445c: e9 29 ff ff ff jmpq 4a438a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7455 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7440 25.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7434 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004cd510 : : /* : * If value is "unconditionally true" or "unconditionally false", just : * return it. This provides the normal fast path once recovery is known : * done. : */ : if (LocalXLogInsertAllowed >= 0) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7440 25.00 : 4cd510: 8b 05 46 a9 69 00 mov 0x69a946(%rip),%eax # b67e5c : * But we also have provisions for forcing the result "true" or "false" : * within specific processes regardless of the global state. : */ : bool : XLogInsertAllowed(void) : { /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7434 25.00 : 4cd516: 55 push %rbp 0.00 : 4cd517: 48 89 e5 mov %rsp,%rbp : /* : * If value is "unconditionally true" or "unconditionally false", just : * return it. This provides the normal fast path once recovery is known : * done. : */ : if (LocalXLogInsertAllowed >= 0) 0.00 : 4cd51a: 85 c0 test %eax,%eax : return (bool) LocalXLogInsertAllowed; 0.00 : 4cd51c: 89 c2 mov %eax,%edx : /* : * If value is "unconditionally true" or "unconditionally false", just : * return it. This provides the normal fast path once recovery is known : * done. : */ : if (LocalXLogInsertAllowed >= 0) 0.00 : 4cd51e: 78 08 js 4cd528 : * On exit from recovery, reset to "unconditionally true", since there is : * no need to keep checking. : */ : LocalXLogInsertAllowed = 1; : return true; : } 0.00 : 4cd520: 89 d0 mov %edx,%eax 0.00 : 4cd522: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:7455 50.00 : 4cd523: c3 retq 0.00 : 4cd524: 0f 1f 40 00 nopl 0x0(%rax) : return (bool) LocalXLogInsertAllowed; : : /* : * Else, must check to see if we're still in recovery. : */ : if (RecoveryInProgress()) 0.00 : 4cd528: e8 93 ff ff ff callq 4cd4c0 0.00 : 4cd52d: 31 d2 xor %edx,%edx 0.00 : 4cd52f: 84 c0 test %al,%al 0.00 : 4cd531: 75 ed jne 4cd520 : : /* : * On exit from recovery, reset to "unconditionally true", since there is : * no need to keep checking. : */ : LocalXLogInsertAllowed = 1; 0.00 : 4cd533: c7 05 1f a9 69 00 01 movl $0x1,0x69a91f(%rip) # b67e5c 0.00 : 4cd53a: 00 00 00 0.00 : 4cd53d: ba 01 00 00 00 mov $0x1,%edx : return true; : } 0.00 : 4cd542: eb dc jmp 4cd520 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 75.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:745 25.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:779 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000054d550 : : */ : static void : do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, : AcquireSampleRowsFunc acquirefunc, BlockNumber relpages, : bool inh, int elevel) : { 0.00 : 54d550: 55 push %rbp 0.00 : 54d551: 48 89 e5 mov %rsp,%rbp 0.00 : 54d554: 41 57 push %r15 0.00 : 54d556: 41 56 push %r14 0.00 : 54d558: 41 55 push %r13 0.00 : 54d55a: 41 54 push %r12 0.00 : 54d55c: 53 push %rbx 0.00 : 54d55d: 48 81 ec 78 03 00 00 sub $0x378,%rsp : MemoryContext caller_context; : Oid save_userid; : int save_sec_context; : int save_nestlevel; : : if (inh) 0.00 : 54d564: 45 84 c0 test %r8b,%r8b : */ : static void : do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, : AcquireSampleRowsFunc acquirefunc, BlockNumber relpages, : bool inh, int elevel) : { 0.00 : 54d567: 48 89 bd 98 fc ff ff mov %rdi,-0x368(%rbp) 0.00 : 54d56e: 48 89 b5 90 fc ff ff mov %rsi,-0x370(%rbp) 0.00 : 54d575: 48 89 95 88 fc ff ff mov %rdx,-0x378(%rbp) 0.00 : 54d57c: 89 8d 84 fc ff ff mov %ecx,-0x37c(%rbp) 0.00 : 54d582: 44 89 8d 7c fc ff ff mov %r9d,-0x384(%rbp) 0.00 : 54d589: 44 88 85 83 fc ff ff mov %r8b,-0x37d(%rbp) : MemoryContext caller_context; : Oid save_userid; : int save_sec_context; : int save_nestlevel; : : if (inh) 0.00 : 54d590: 0f 84 95 03 00 00 je 54d92b : ereport(elevel, 0.00 : 54d596: 45 31 c0 xor %r8d,%r8d 0.00 : 54d599: b9 84 79 87 00 mov $0x877984,%ecx 0.00 : 54d59e: ba 4b 01 00 00 mov $0x14b,%edx 0.00 : 54d5a3: be 5d 6d 8b 00 mov $0x8b6d5d,%esi 0.00 : 54d5a8: 44 89 cf mov %r9d,%edi 0.00 : 54d5ab: e8 10 d5 22 00 callq 77aac0 0.00 : 54d5b0: 84 c0 test %al,%al 0.00 : 54d5b2: 0f 85 49 0b 00 00 jne 54e101 : : /* : * Set up a working context so that we can easily free whatever junk gets : * created. : */ : anl_context = AllocSetContextCreate(CurrentMemoryContext, 0.00 : 54d5b8: 48 8b 3d a1 d2 66 00 mov 0x66d2a1(%rip),%rdi # bba860 0.00 : 54d5bf: 31 d2 xor %edx,%edx 0.00 : 54d5c1: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 54d5c7: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 54d5cc: be c7 76 87 00 mov $0x8776c7,%esi 0.00 : 54d5d1: e8 ba a9 24 00 callq 797f90 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 54d5d6: 48 8b 0d 83 d2 66 00 mov 0x66d283(%rip),%rcx # bba860 : /* : * Switch to the table owner's userid, so that any index functions are run : * as that user. Also lock down security-restricted operations and : * arrange to make GUC variable changes local to this command. : */ : GetUserIdAndSecContext(&save_userid, &save_sec_context); 0.00 : 54d5dd: 48 8d 75 c4 lea -0x3c(%rbp),%rsi 0.00 : 54d5e1: 48 8d 7d c8 lea -0x38(%rbp),%rdi : : /* : * Set up a working context so that we can easily free whatever junk gets : * created. : */ : anl_context = AllocSetContextCreate(CurrentMemoryContext, 0.00 : 54d5e5: 48 89 05 2c c1 62 00 mov %rax,0x62c12c(%rip) # b79718 : : CurrentMemoryContext = context; 0.00 : 54d5ec: 48 89 05 6d d2 66 00 mov %rax,0x66d26d(%rip) # bba860 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 54d5f3: 48 89 8d e0 fc ff ff mov %rcx,-0x320(%rbp) : /* : * Switch to the table owner's userid, so that any index functions are run : * as that user. Also lock down security-restricted operations and : * arrange to make GUC variable changes local to this command. : */ : GetUserIdAndSecContext(&save_userid, &save_sec_context); 0.00 : 54d5fa: e8 e1 79 23 00 callq 784fe0 : SetUserIdAndSecContext(onerel->rd_rel->relowner, 0.00 : 54d5ff: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx 0.00 : 54d606: 8b 75 c4 mov -0x3c(%rbp),%esi 0.00 : 54d609: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 54d60d: 83 ce 02 or $0x2,%esi 0.00 : 54d610: 8b 78 4c mov 0x4c(%rax),%edi 0.00 : 54d613: e8 e8 79 23 00 callq 785000 : save_sec_context | SECURITY_RESTRICTED_OPERATION); : save_nestlevel = NewGUCNestLevel(); 0.00 : 54d618: e8 d3 e4 23 00 callq 78baf0 0.00 : 54d61d: 89 85 ec fc ff ff mov %eax,-0x314(%rbp) : : /* measure elapsed time iff autovacuum logging requires it */ : if (IsAutoVacuumWorkerProcess() && Log_autovacuum_min_duration >= 0) 0.00 : 54d623: e8 b8 c0 0e 00 callq 6396e0 0.00 : 54d628: 84 c0 test %al,%al 0.00 : 54d62a: 74 34 je 54d660 0.00 : 54d62c: 8b 1d a2 af 61 00 mov 0x61afa2(%rip),%ebx # b685d4 0.00 : 54d632: 85 db test %ebx,%ebx 0.00 : 54d634: 78 2a js 54d660 : { : pg_rusage_init(&ru0); 0.00 : 54d636: 48 8d bd d0 fe ff ff lea -0x130(%rbp),%rdi 0.00 : 54d63d: e8 1e 84 24 00 callq 795a60 : if (Log_autovacuum_min_duration > 0) 0.00 : 54d642: 44 8b 1d 8b af 61 00 mov 0x61af8b(%rip),%r11d # b685d4 0.00 : 54d649: 45 85 db test %r11d,%r11d 0.00 : 54d64c: 7e 12 jle 54d660 : starttime = GetCurrentTimestamp(); 0.00 : 54d64e: e8 1d 8d 1f 00 callq 746370 0.00 : 54d653: 48 89 85 d8 fc ff ff mov %rax,-0x328(%rbp) 0.00 : 54d65a: eb 0f jmp 54d66b 0.00 : 54d65c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 54d660: 48 c7 85 d8 fc ff ff movq $0x0,-0x328(%rbp) 0.00 : 54d667: 00 00 00 00 : /* : * Determine which columns to analyze : * : * Note that system attributes are never analyzed. : */ : if (vacstmt->va_cols != NIL) 0.00 : 54d66b: 48 8b 95 90 fc ff ff mov -0x370(%rbp),%rdx 0.00 : 54d672: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 54d676: 48 85 c0 test %rax,%rax 0.00 : 54d679: 0f 84 c6 0f 00 00 je 54e645 : { : ListCell *le; : : vacattrstats = (VacAttrStats **) palloc(list_length(vacstmt->va_cols) * 0.00 : 54d67f: 48 63 78 04 movslq 0x4(%rax),%rdi 0.00 : 54d683: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 54d687: e8 c4 b6 24 00 callq 798d50 : sizeof(VacAttrStats *)); : tcnt = 0; : foreach(le, vacstmt->va_cols) 0.00 : 54d68c: 48 8b 8d 90 fc ff ff mov -0x370(%rbp),%rcx : */ : if (vacstmt->va_cols != NIL) : { : ListCell *le; : : vacattrstats = (VacAttrStats **) palloc(list_length(vacstmt->va_cols) * 0.00 : 54d693: 48 89 85 c0 fc ff ff mov %rax,-0x340(%rbp) : sizeof(VacAttrStats *)); : tcnt = 0; : foreach(le, vacstmt->va_cols) 0.00 : 54d69a: 48 8b 41 20 mov 0x20(%rcx),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 54d69e: 48 85 c0 test %rax,%rax 0.00 : 54d6a1: 0f 84 29 10 00 00 je 54e6d0 0.00 : 54d6a7: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 54d6ab: 48 85 db test %rbx,%rbx 0.00 : 54d6ae: 0f 84 1c 10 00 00 je 54e6d0 0.00 : 54d6b4: 45 31 e4 xor %r12d,%r12d 0.00 : 54d6b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54d6be: 00 00 : { : char *col = strVal(lfirst(le)); 0.00 : 54d6c0: 48 8b 03 mov (%rbx),%rax : : i = attnameAttNum(onerel, col, false); 0.00 : 54d6c3: 48 8b bd 98 fc ff ff mov -0x368(%rbp),%rdi 0.00 : 54d6ca: 31 d2 xor %edx,%edx : vacattrstats = (VacAttrStats **) palloc(list_length(vacstmt->va_cols) * : sizeof(VacAttrStats *)); : tcnt = 0; : foreach(le, vacstmt->va_cols) : { : char *col = strVal(lfirst(le)); 0.00 : 54d6cc: 4c 8b 68 08 mov 0x8(%rax),%r13 : : i = attnameAttNum(onerel, col, false); 0.00 : 54d6d0: 4c 89 ee mov %r13,%rsi 0.00 : 54d6d3: e8 d8 f7 fe ff callq 53ceb0 : if (i == InvalidAttrNumber) 0.00 : 54d6d8: 85 c0 test %eax,%eax 0.00 : 54d6da: 0f 84 9c 0a 00 00 je 54e17c : ereport(ERROR, : (errcode(ERRCODE_UNDEFINED_COLUMN), : errmsg("column \"%s\" of relation \"%s\" does not exist", : col, RelationGetRelationName(onerel)))); : vacattrstats[tcnt] = examine_attribute(onerel, i, NULL); 0.00 : 54d6e0: 48 8b bd 98 fc ff ff mov -0x368(%rbp),%rdi 0.00 : 54d6e7: 31 d2 xor %edx,%edx 0.00 : 54d6e9: 89 c6 mov %eax,%esi 0.00 : 54d6eb: e8 00 f1 ff ff callq 54c7f0 0.00 : 54d6f0: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 54d6f7: 49 63 d4 movslq %r12d,%rdx : if (vacattrstats[tcnt] != NULL) : tcnt++; 0.00 : 54d6fa: 48 83 f8 01 cmp $0x1,%rax 0.00 : 54d6fe: 41 83 dc ff sbb $0xffffffff,%r12d : if (i == InvalidAttrNumber) : ereport(ERROR, : (errcode(ERRCODE_UNDEFINED_COLUMN), : errmsg("column \"%s\" of relation \"%s\" does not exist", : col, RelationGetRelationName(onerel)))); : vacattrstats[tcnt] = examine_attribute(onerel, i, NULL); 0.00 : 54d702: 48 89 04 d1 mov %rax,(%rcx,%rdx,8) : ListCell *le; : : vacattrstats = (VacAttrStats **) palloc(list_length(vacstmt->va_cols) * : sizeof(VacAttrStats *)); : tcnt = 0; : foreach(le, vacstmt->va_cols) 0.00 : 54d706: 48 8b 5b 08 mov 0x8(%rbx),%rbx 0.00 : 54d70a: 48 85 db test %rbx,%rbx 0.00 : 54d70d: 75 b1 jne 54d6c0 : { : attr_cnt = onerel->rd_att->natts; : vacattrstats = (VacAttrStats **) : palloc(attr_cnt * sizeof(VacAttrStats *)); : tcnt = 0; : for (i = 1; i <= attr_cnt; i++) 0.00 : 54d70f: 44 89 a5 b4 fc ff ff mov %r12d,-0x34c(%rbp) : * columns in the indexes. We do not analyze index columns if there was : * an explicit column list in the ANALYZE command, however. If we are : * doing a recursive scan, we don't want to touch the parent's indexes at : * all. : */ : if (!inh) 0.00 : 54d716: 80 bd 83 fc ff ff 00 cmpb $0x0,-0x37d(%rbp) 0.00 : 54d71d: 0f 84 d5 07 00 00 je 54def8 : vac_open_indexes(onerel, AccessShareLock, &nindexes, &Irel); : else : { : Irel = NULL; 0.00 : 54d723: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 54d72a: 00 : nindexes = 0; 0.00 : 54d72b: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) 0.00 : 54d732: 31 c9 xor %ecx,%ecx 0.00 : 54d734: 48 c7 85 c8 fc ff ff movq $0x0,-0x338(%rbp) 0.00 : 54d73b: 00 00 00 00 0.00 : 54d73f: c6 85 bf fc ff ff 00 movb $0x0,-0x341(%rbp) : * all analyzable columns. We use a lower bound of 100 rows to avoid : * possible overflow in Vitter's algorithm. (Note: that will also be the : * target in the corner case where there are no analyzable columns.) : */ : targrows = 100; : for (i = 0; i < attr_cnt; i++) 0.00 : 54d746: 8b bd b4 fc ff ff mov -0x34c(%rbp),%edi 0.00 : 54d74c: 31 d2 xor %edx,%edx 0.00 : 54d74e: 41 bd 64 00 00 00 mov $0x64,%r13d 0.00 : 54d754: 85 ff test %edi,%edi 0.00 : 54d756: 7e 29 jle 54d781 0.00 : 54d758: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54d75f: 00 0.00 : 54d760: 48 8b 9d c0 fc ff ff mov -0x340(%rbp),%rbx 0.00 : 54d767: 48 8b 04 d3 mov (%rbx,%rdx,8),%rax 0.00 : 54d76b: 8b 40 28 mov 0x28(%rax),%eax 0.00 : 54d76e: 41 39 c5 cmp %eax,%r13d 0.00 : 54d771: 44 0f 4c e8 cmovl %eax,%r13d 0.00 : 54d775: 48 83 c2 01 add $0x1,%rdx 0.00 : 54d779: 39 95 b4 fc ff ff cmp %edx,-0x34c(%rbp) 0.00 : 54d77f: 7f df jg 54d760 : { : if (targrows < vacattrstats[i]->minrows) : targrows = vacattrstats[i]->minrows; : } : for (ind = 0; ind < nindexes; ind++) 0.00 : 54d781: 85 c9 test %ecx,%ecx 0.00 : 54d783: 7e 4a jle 54d7cf 0.00 : 54d785: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 54d788: 45 31 c0 xor %r8d,%r8d 0.00 : 54d78b: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 54d78f: 48 c1 e7 05 shl $0x5,%rdi 0.00 : 54d793: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : AnlIndexData *thisdata = &indexdata[ind]; : : for (i = 0; i < thisdata->attr_cnt; i++) 0.00 : 54d798: 48 8b 85 c8 fc ff ff mov -0x338(%rbp),%rax 0.00 : 54d79f: 42 8b 74 00 18 mov 0x18(%rax,%r8,1),%esi 0.00 : 54d7a4: 85 f6 test %esi,%esi 0.00 : 54d7a6: 7e 1e jle 54d7c6 0.00 : 54d7a8: 4a 8b 4c 00 10 mov 0x10(%rax,%r8,1),%rcx 0.00 : 54d7ad: 31 d2 xor %edx,%edx 0.00 : 54d7af: 90 nop 0.00 : 54d7b0: 48 8b 04 d1 mov (%rcx,%rdx,8),%rax 0.00 : 54d7b4: 8b 40 28 mov 0x28(%rax),%eax 0.00 : 54d7b7: 41 39 c5 cmp %eax,%r13d 0.00 : 54d7ba: 44 0f 4c e8 cmovl %eax,%r13d 0.00 : 54d7be: 48 83 c2 01 add $0x1,%rdx 0.00 : 54d7c2: 39 d6 cmp %edx,%esi 0.00 : 54d7c4: 7f ea jg 54d7b0 0.00 : 54d7c6: 49 83 c0 20 add $0x20,%r8 : for (i = 0; i < attr_cnt; i++) : { : if (targrows < vacattrstats[i]->minrows) : targrows = vacattrstats[i]->minrows; : } : for (ind = 0; ind < nindexes; ind++) 0.00 : 54d7ca: 49 39 f8 cmp %rdi,%r8 0.00 : 54d7cd: 75 c9 jne 54d798 : } : : /* : * Acquire the sample rows : */ : rows = (HeapTuple *) palloc(targrows * sizeof(HeapTuple)); 0.00 : 54d7cf: 49 63 fd movslq %r13d,%rdi 0.00 : 54d7d2: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 54d7d6: e8 75 b5 24 00 callq 798d50 : if (inh) 0.00 : 54d7db: 80 bd 83 fc ff ff 00 cmpb $0x0,-0x37d(%rbp) : } : : /* : * Acquire the sample rows : */ : rows = (HeapTuple *) palloc(targrows * sizeof(HeapTuple)); 0.00 : 54d7e2: 48 89 85 a8 fc ff ff mov %rax,-0x358(%rbp) : if (inh) 0.00 : 54d7e9: 0f 85 94 01 00 00 jne 54d983 : numrows = acquire_inherited_sample_rows(onerel, elevel, : rows, targrows, : &totalrows, &totaldeadrows); : else : numrows = (*acquirefunc) (onerel, elevel, 0.00 : 54d7ef: 4c 8d 4d a8 lea -0x58(%rbp),%r9 0.00 : 54d7f3: 4c 8d 45 b0 lea -0x50(%rbp),%r8 0.00 : 54d7f7: 44 89 e9 mov %r13d,%ecx 0.00 : 54d7fa: 48 8b 95 a8 fc ff ff mov -0x358(%rbp),%rdx 0.00 : 54d801: 8b b5 7c fc ff ff mov -0x384(%rbp),%esi 0.00 : 54d807: 48 8b bd 98 fc ff ff mov -0x368(%rbp),%rdi 0.00 : 54d80e: ff 95 88 fc ff ff callq *-0x378(%rbp) 0.00 : 54d814: 89 85 d4 fc ff ff mov %eax,-0x32c(%rbp) : * Compute the statistics. Temporary results during the calculations for : * each column are stored in a child context. The calc routines are : * responsible to make sure that whatever they store into the VacAttrStats : * structure is allocated in anl_context. : */ : if (numrows > 0) 0.00 : 54d81a: 8b 8d d4 fc ff ff mov -0x32c(%rbp),%ecx 0.00 : 54d820: 85 c9 test %ecx,%ecx 0.00 : 54d822: 0f 8e 28 04 00 00 jle 54dc50 : { : MemoryContext col_context, : old_context; : : col_context = AllocSetContextCreate(anl_context, 0.00 : 54d828: 48 8b 3d e9 be 62 00 mov 0x62bee9(%rip),%rdi # b79718 0.00 : 54d82f: 31 d2 xor %edx,%edx 0.00 : 54d831: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 54d837: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 54d83c: be ea 76 87 00 mov $0x8776ea,%esi 0.00 : 54d841: e8 4a a7 24 00 callq 797f90 : ALLOCSET_DEFAULT_MINSIZE, : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : old_context = MemoryContextSwitchTo(col_context); : : for (i = 0; i < attr_cnt; i++) 0.00 : 54d846: 8b 95 b4 fc ff ff mov -0x34c(%rbp),%edx 0.00 : 54d84c: 48 8b 1d 0d d0 66 00 mov 0x66d00d(%rip),%rbx # bba860 : if (numrows > 0) : { : MemoryContext col_context, : old_context; : : col_context = AllocSetContextCreate(anl_context, 0.00 : 54d853: 48 89 85 00 fd ff ff mov %rax,-0x300(%rbp) : : CurrentMemoryContext = context; 0.00 : 54d85a: 48 89 05 ff cf 66 00 mov %rax,0x66cfff(%rip) # bba860 : ALLOCSET_DEFAULT_MINSIZE, : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : old_context = MemoryContextSwitchTo(col_context); : : for (i = 0; i < attr_cnt; i++) 0.00 : 54d861: 85 d2 test %edx,%edx : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 54d863: 48 89 9d 08 fd ff ff mov %rbx,-0x2f8(%rbp) 0.00 : 54d86a: 0f 8e 19 05 00 00 jle 54dd89 0.00 : 54d870: 4c 8b ad c0 fc ff ff mov -0x340(%rbp),%r13 0.00 : 54d877: 45 31 e4 xor %r12d,%r12d 0.00 : 54d87a: eb 43 jmp 54d8bf 0.00 : 54d87c: 0f 1f 40 00 nopl 0x0(%rax) : aopt = get_attribute_options(onerel->rd_id, stats->attr->attnum); : if (aopt != NULL) : { : float8 n_distinct; : : n_distinct = inh ? aopt->n_distinct_inherited : aopt->n_distinct; 0.00 : 54d880: f2 0f 10 40 10 movsd 0x10(%rax),%xmm0 : if (n_distinct != 0.0) 0.00 : 54d885: 66 0f 57 c9 xorpd %xmm1,%xmm1 0.00 : 54d889: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 54d88d: 7a 02 jp 54d891 0.00 : 54d88f: 74 0d je 54d89e : stats->stadistinct = n_distinct; 0.00 : 54d891: 66 0f 14 c0 unpcklpd %xmm0,%xmm0 0.00 : 54d895: 66 0f 5a c0 cvtpd2ps %xmm0,%xmm0 0.00 : 54d899: f3 0f 11 43 44 movss %xmm0,0x44(%rbx) : } : : MemoryContextResetAndDeleteChildren(col_context); 0.00 : 54d89e: 48 8b bd 00 fd ff ff mov -0x300(%rbp),%rdi : ALLOCSET_DEFAULT_MINSIZE, : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : old_context = MemoryContextSwitchTo(col_context); : : for (i = 0; i < attr_cnt; i++) 0.00 : 54d8a5: 41 83 c4 01 add $0x1,%r12d 0.00 : 54d8a9: 49 83 c5 08 add $0x8,%r13 : n_distinct = inh ? aopt->n_distinct_inherited : aopt->n_distinct; : if (n_distinct != 0.0) : stats->stadistinct = n_distinct; : } : : MemoryContextResetAndDeleteChildren(col_context); 0.00 : 54d8ad: e8 5e b3 24 00 callq 798c10 : ALLOCSET_DEFAULT_MINSIZE, : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : old_context = MemoryContextSwitchTo(col_context); : : for (i = 0; i < attr_cnt; i++) 0.00 : 54d8b2: 44 39 a5 b4 fc ff ff cmp %r12d,-0x34c(%rbp) 0.00 : 54d8b9: 0f 8e ca 04 00 00 jle 54dd89 : { : VacAttrStats *stats = vacattrstats[i]; 0.00 : 54d8bf: 49 8b 5d 00 mov 0x0(%r13),%rbx : AttributeOpts *aopt; : : stats->rows = rows; 0.00 : 54d8c3: 48 8b 85 a8 fc ff ff mov -0x358(%rbp),%rax : stats->tupDesc = onerel->rd_att; : (*stats->compute_stats) (stats, 0.00 : 54d8ca: be 90 cd 54 00 mov $0x54cd90,%esi : for (i = 0; i < attr_cnt; i++) : { : VacAttrStats *stats = vacattrstats[i]; : AttributeOpts *aopt; : : stats->rows = rows; 0.00 : 54d8cf: 48 89 83 18 01 00 00 mov %rax,0x118(%rbx) : stats->tupDesc = onerel->rd_att; 0.00 : 54d8d6: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx : (*stats->compute_stats) (stats, 0.00 : 54d8dd: 48 89 df mov %rbx,%rdi : { : VacAttrStats *stats = vacattrstats[i]; : AttributeOpts *aopt; : : stats->rows = rows; : stats->tupDesc = onerel->rd_att; 0.00 : 54d8e0: 48 8b 42 38 mov 0x38(%rdx),%rax 0.00 : 54d8e4: 48 89 83 20 01 00 00 mov %rax,0x120(%rbx) : (*stats->compute_stats) (stats, 0.00 : 54d8eb: 8b 95 d4 fc ff ff mov -0x32c(%rbp),%edx 0.00 : 54d8f1: f2 0f 10 45 b0 movsd -0x50(%rbp),%xmm0 0.00 : 54d8f6: ff 53 20 callq *0x20(%rbx) : : /* : * If the appropriate flavor of the n_distinct option is : * specified, override with the corresponding value. : */ : aopt = get_attribute_options(onerel->rd_id, stats->attr->attnum); 0.00 : 54d8f9: 48 8b 03 mov (%rbx),%rax 0.00 : 54d8fc: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx 0.00 : 54d903: 0f bf 70 4e movswl 0x4e(%rax),%esi 0.00 : 54d907: 8b 79 40 mov 0x40(%rcx),%edi 0.00 : 54d90a: e8 b1 69 21 00 callq 7642c0 : if (aopt != NULL) 0.00 : 54d90f: 48 85 c0 test %rax,%rax 0.00 : 54d912: 74 8a je 54d89e : { : float8 n_distinct; : : n_distinct = inh ? aopt->n_distinct_inherited : aopt->n_distinct; 0.00 : 54d914: 80 bd 83 fc ff ff 00 cmpb $0x0,-0x37d(%rbp) 0.00 : 54d91b: 0f 85 5f ff ff ff jne 54d880 0.00 : 54d921: f2 0f 10 40 08 movsd 0x8(%rax),%xmm0 0.00 : 54d926: e9 5a ff ff ff jmpq 54d885 : ereport(elevel, : (errmsg("analyzing \"%s.%s\" inheritance tree", : get_namespace_name(RelationGetNamespace(onerel)), : RelationGetRelationName(onerel)))); : else : ereport(elevel, 0.00 : 54d92b: 8b bd 7c fc ff ff mov -0x384(%rbp),%edi 0.00 : 54d931: 45 31 c0 xor %r8d,%r8d 0.00 : 54d934: b9 84 79 87 00 mov $0x877984,%ecx 0.00 : 54d939: ba 50 01 00 00 mov $0x150,%edx 0.00 : 54d93e: be 5d 6d 8b 00 mov $0x8b6d5d,%esi 0.00 : 54d943: e8 78 d1 22 00 callq 77aac0 0.00 : 54d948: 84 c0 test %al,%al 0.00 : 54d94a: 0f 84 68 fc ff ff je 54d5b8 0.00 : 54d950: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 54d957: 48 8b 5a 30 mov 0x30(%rdx),%rbx 0.00 : 54d95b: 8b 7b 40 mov 0x40(%rbx),%edi 0.00 : 54d95e: e8 8d 50 22 00 callq 7729f0 0.00 : 54d963: 48 89 da mov %rbx,%rdx 0.00 : 54d966: 48 89 c6 mov %rax,%rsi 0.00 : 54d969: bf b5 76 87 00 mov $0x8776b5,%edi 0.00 : 54d96e: 31 c0 xor %eax,%eax 0.00 : 54d970: e8 2b ef 22 00 callq 77c8a0 0.00 : 54d975: 89 c7 mov %eax,%edi 0.00 : 54d977: 31 c0 xor %eax,%eax 0.00 : 54d979: e8 62 cc 22 00 callq 77a5e0 0.00 : 54d97e: e9 35 fc ff ff jmpq 54d5b8 : : /* : * Find all members of inheritance set. We only need AccessShareLock on : * the children. : */ : tableOIDs = 0.00 : 54d983: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 54d98a: be 01 00 00 00 mov $0x1,%esi 0.00 : 54d98f: 8b 7a 40 mov 0x40(%rdx),%edi 0.00 : 54d992: 31 d2 xor %edx,%edx 0.00 : 54d994: e8 07 47 fb ff callq 5020a0 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 54d999: 48 85 c0 test %rax,%rax 0.00 : 54d99c: 48 89 c3 mov %rax,%rbx 0.00 : 54d99f: 0f 84 95 02 00 00 je 54dc3a 0.00 : 54d9a5: 8b 40 04 mov 0x4(%rax),%eax : * happen despite analyze_rel's relhassubclass check, if table once had a : * child but no longer does. In that case, we can clear the : * relhassubclass field so as not to make the same mistake again later. : * (This is safe because we hold ShareUpdateExclusiveLock.) : */ : if (list_length(tableOIDs) < 2) 0.00 : 54d9a8: 83 f8 01 cmp $0x1,%eax 0.00 : 54d9ab: 0f 8e 89 02 00 00 jle 54dc3a : : /* : * Count the blocks in all the relations. The result could overflow : * BlockNumber, so we use double arithmetic. : */ : rels = (Relation *) palloc(list_length(tableOIDs) * sizeof(Relation)); 0.00 : 54d9b1: 48 63 f8 movslq %eax,%rdi 0.00 : 54d9b4: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 54d9b8: e8 93 b3 24 00 callq 798d50 0.00 : 54d9bd: 48 89 85 48 fd ff ff mov %rax,-0x2b8(%rbp) : relblocks = (double *) palloc(list_length(tableOIDs) * sizeof(double)); 0.00 : 54d9c4: 48 63 7b 04 movslq 0x4(%rbx),%rdi 0.00 : 54d9c8: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 54d9cc: e8 7f b3 24 00 callq 798d50 0.00 : 54d9d1: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 54d9d8: 4c 8b 63 08 mov 0x8(%rbx),%r12 : totalblocks = 0; : nrels = 0; : foreach(lc, tableOIDs) 0.00 : 54d9dc: 4d 85 e4 test %r12,%r12 0.00 : 54d9df: 0f 84 fa 0c 00 00 je 54e6df 0.00 : 54d9e5: c7 85 34 fd ff ff 00 movl $0x0,-0x2cc(%rbp) 0.00 : 54d9ec: 00 00 00 0.00 : 54d9ef: 48 c7 85 38 fd ff ff movq $0x0,-0x2c8(%rbp) 0.00 : 54d9f6: 00 00 00 00 0.00 : 54d9fa: eb 51 jmp 54da4d 0.00 : 54d9fc: 0f 1f 40 00 nopl 0x0(%rax) : Assert(childrel != onerel); : heap_close(childrel, AccessShareLock); : continue; : } : : rels[nrels] = childrel; 0.00 : 54da00: 48 63 9d 34 fd ff ff movslq -0x2cc(%rbp),%rbx 0.00 : 54da07: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax : relblocks[nrels] = (double) RelationGetNumberOfBlocks(childrel); 0.00 : 54da0e: 31 f6 xor %esi,%esi : Assert(childrel != onerel); : heap_close(childrel, AccessShareLock); : continue; : } : : rels[nrels] = childrel; 0.00 : 54da10: 48 89 3c d8 mov %rdi,(%rax,%rbx,8) : relblocks[nrels] = (double) RelationGetNumberOfBlocks(childrel); 0.00 : 54da14: e8 77 7c 12 00 callq 675690 0.00 : 54da19: 89 c0 mov %eax,%eax 0.00 : 54da1b: 48 8b 95 40 fd ff ff mov -0x2c0(%rbp),%rdx 0.00 : 54da22: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 54da27: f2 0f 11 04 da movsd %xmm0,(%rdx,%rbx,8) : totalblocks += relblocks[nrels]; : nrels++; 0.00 : 54da2c: 83 85 34 fd ff ff 01 addl $0x1,-0x2cc(%rbp) : continue; : } : : rels[nrels] = childrel; : relblocks[nrels] = (double) RelationGetNumberOfBlocks(childrel); : totalblocks += relblocks[nrels]; 0.00 : 54da33: f2 0f 58 85 38 fd ff addsd -0x2c8(%rbp),%xmm0 0.00 : 54da3a: ff 0.00 : 54da3b: f2 0f 11 85 38 fd ff movsd %xmm0,-0x2c8(%rbp) 0.00 : 54da42: ff : */ : rels = (Relation *) palloc(list_length(tableOIDs) * sizeof(Relation)); : relblocks = (double *) palloc(list_length(tableOIDs) * sizeof(double)); : totalblocks = 0; : nrels = 0; : foreach(lc, tableOIDs) 0.00 : 54da43: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 54da48: 4d 85 e4 test %r12,%r12 0.00 : 54da4b: 74 32 je 54da7f : { : Oid childOID = lfirst_oid(lc); : Relation childrel; : : /* We already got the needed lock */ : childrel = heap_open(childOID, NoLock); 0.00 : 54da4d: 41 8b 3c 24 mov (%r12),%edi 0.00 : 54da51: 31 f6 xor %esi,%esi 0.00 : 54da53: e8 08 01 f5 ff callq 49db60 0.00 : 54da58: 48 89 c7 mov %rax,%rdi : : /* Ignore if temp table of another backend */ : if (RELATION_IS_OTHER_TEMP(childrel)) 0.00 : 54da5b: 48 8b 40 30 mov 0x30(%rax),%rax 0.00 : 54da5f: 80 78 6e 74 cmpb $0x74,0x6e(%rax) 0.00 : 54da63: 75 9b jne 54da00 0.00 : 54da65: 80 7f 20 00 cmpb $0x0,0x20(%rdi) 0.00 : 54da69: 75 95 jne 54da00 : { : /* ... but release the lock on it */ : Assert(childrel != onerel); : heap_close(childrel, AccessShareLock); 0.00 : 54da6b: be 01 00 00 00 mov $0x1,%esi 0.00 : 54da70: e8 4b ff f4 ff callq 49d9c0 : */ : rels = (Relation *) palloc(list_length(tableOIDs) * sizeof(Relation)); : relblocks = (double *) palloc(list_length(tableOIDs) * sizeof(double)); : totalblocks = 0; : nrels = 0; : foreach(lc, tableOIDs) 0.00 : 54da75: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 54da7a: 4d 85 e4 test %r12,%r12 0.00 : 54da7d: 75 ce jne 54da4d : * clear that it's worth working harder.) : */ : numrows = 0; : *totalrows = 0; : *totaldeadrows = 0; : for (i = 0; i < nrels; i++) 0.00 : 54da7f: 8b b5 34 fd ff ff mov -0x2cc(%rbp),%esi 0.00 : 54da85: 45 31 ff xor %r15d,%r15d : * the total block count. (This might be less than desirable if the child : * rels have radically different free-space percentages, but it's not : * clear that it's worth working harder.) : */ : numrows = 0; : *totalrows = 0; 0.00 : 54da88: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 54da8f: 00 : *totaldeadrows = 0; 0.00 : 54da90: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 54da97: 00 : for (i = 0; i < nrels; i++) 0.00 : 54da98: c7 85 d4 fc ff ff 00 movl $0x0,-0x32c(%rbp) 0.00 : 54da9f: 00 00 00 0.00 : 54daa2: 85 f6 test %esi,%esi 0.00 : 54daa4: 7f 53 jg 54daf9 0.00 : 54daa6: e9 a5 01 00 00 jmpq 54dc50 0.00 : 54daab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : } : : /* And add to counts */ : numrows += childrows; : *totalrows += trows; 0.00 : 54dab0: f2 0f 10 45 b0 movsd -0x50(%rbp),%xmm0 : free_conversion_map(map); : } : } : : /* And add to counts */ : numrows += childrows; 0.00 : 54dab5: 8b 8d 24 fd ff ff mov -0x2dc(%rbp),%ecx 0.00 : 54dabb: 01 8d d4 fc ff ff add %ecx,-0x32c(%rbp) : *totalrows += trows; 0.00 : 54dac1: f2 0f 58 45 a0 addsd -0x60(%rbp),%xmm0 0.00 : 54dac6: f2 0f 11 45 b0 movsd %xmm0,-0x50(%rbp) : *totaldeadrows += tdrows; 0.00 : 54dacb: f2 0f 10 45 a8 movsd -0x58(%rbp),%xmm0 0.00 : 54dad0: f2 0f 58 45 98 addsd -0x68(%rbp),%xmm0 0.00 : 54dad5: f2 0f 11 45 a8 movsd %xmm0,-0x58(%rbp) : : /* : * Note: we cannot release the child-table locks, since we may have : * pointers to their TOAST tables in the sampled rows. : */ : heap_close(childrel, NoLock); 0.00 : 54dada: 48 8b bd 28 fd ff ff mov -0x2d8(%rbp),%rdi 0.00 : 54dae1: 31 f6 xor %esi,%esi 0.00 : 54dae3: 49 83 c7 01 add $0x1,%r15 0.00 : 54dae7: e8 d4 fe f4 ff callq 49d9c0 : * clear that it's worth working harder.) : */ : numrows = 0; : *totalrows = 0; : *totaldeadrows = 0; : for (i = 0; i < nrels; i++) 0.00 : 54daec: 44 39 bd 34 fd ff ff cmp %r15d,-0x2cc(%rbp) 0.00 : 54daf3: 0f 8e 21 fd ff ff jle 54d81a : { : Relation childrel = rels[i]; 0.00 : 54daf9: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx : double childblocks = relblocks[i]; 0.00 : 54db00: 48 8b 9d 40 fd ff ff mov -0x2c0(%rbp),%rbx : : if (childblocks > 0) 0.00 : 54db07: 66 0f 57 c0 xorpd %xmm0,%xmm0 : numrows = 0; : *totalrows = 0; : *totaldeadrows = 0; : for (i = 0; i < nrels; i++) : { : Relation childrel = rels[i]; 0.00 : 54db0b: 4a 8b 0c f9 mov (%rcx,%r15,8),%rcx 0.00 : 54db0f: 48 89 8d 28 fd ff ff mov %rcx,-0x2d8(%rbp) : double childblocks = relblocks[i]; 0.00 : 54db16: f2 42 0f 10 0c fb movsd (%rbx,%r15,8),%xmm1 : : if (childblocks > 0) 0.00 : 54db1c: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 54db20: 76 b8 jbe 54dada : { : int childtargrows; : : childtargrows = (int) rint(targrows * childblocks / totalblocks); 0.00 : 54db22: f2 41 0f 2a c5 cvtsi2sd %r13d,%xmm0 0.00 : 54db27: f2 0f 59 c8 mulsd %xmm0,%xmm1 0.00 : 54db2b: f2 0f 5e 8d 38 fd ff divsd -0x2c8(%rbp),%xmm1 0.00 : 54db32: ff 0.00 : 54db33: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 54db37: e8 c4 bd f1 ff callq 469900 0.00 : 54db3c: f2 0f 2c d0 cvttsd2si %xmm0,%edx : /* Make sure we don't overrun due to roundoff error */ : childtargrows = Min(childtargrows, targrows - numrows); 0.00 : 54db40: 44 89 e8 mov %r13d,%eax 0.00 : 54db43: 2b 85 d4 fc ff ff sub -0x32c(%rbp),%eax 0.00 : 54db49: 89 c1 mov %eax,%ecx 0.00 : 54db4b: 39 c2 cmp %eax,%edx 0.00 : 54db4d: 0f 4e ca cmovle %edx,%ecx : if (childtargrows > 0) 0.00 : 54db50: 85 c9 test %ecx,%ecx 0.00 : 54db52: 7e 86 jle 54dada : int childrows; : double trows, : tdrows; : : /* Fetch a random sample of the child's rows */ : childrows = acquire_sample_rows(childrel, 0.00 : 54db54: 48 63 95 d4 fc ff ff movslq -0x32c(%rbp),%rdx 0.00 : 54db5b: 48 8b 85 a8 fc ff ff mov -0x358(%rbp),%rax 0.00 : 54db62: 4c 8d 4d 98 lea -0x68(%rbp),%r9 0.00 : 54db66: 8b b5 7c fc ff ff mov -0x384(%rbp),%esi 0.00 : 54db6c: 48 8b bd 28 fd ff ff mov -0x2d8(%rbp),%rdi 0.00 : 54db73: 4c 8d 45 a0 lea -0x60(%rbp),%r8 0.00 : 54db77: 48 8d 14 d0 lea (%rax,%rdx,8),%rdx 0.00 : 54db7b: e8 30 f3 ff ff callq 54ceb0 : childtargrows, : &trows, : &tdrows); : : /* We may need to convert from child's rowtype to parent's */ : if (childrows > 0 && 0.00 : 54db80: 85 c0 test %eax,%eax : int childrows; : double trows, : tdrows; : : /* Fetch a random sample of the child's rows */ : childrows = acquire_sample_rows(childrel, 0.00 : 54db82: 89 85 24 fd ff ff mov %eax,-0x2dc(%rbp) : childtargrows, : &trows, : &tdrows); : : /* We may need to convert from child's rowtype to parent's */ : if (childrows > 0 && 0.00 : 54db88: 0f 8e 22 ff ff ff jle 54dab0 0.00 : 54db8e: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx 0.00 : 54db95: 48 8b 8d 28 fd ff ff mov -0x2d8(%rbp),%rcx 0.00 : 54db9c: 48 8b 72 38 mov 0x38(%rdx),%rsi 0.00 : 54dba0: 48 8b 79 38 mov 0x38(%rcx),%rdi 0.00 : 54dba4: e8 c7 69 f2 ff callq 474570 0.00 : 54dba9: 84 c0 test %al,%al 0.00 : 54dbab: 0f 85 ff fe ff ff jne 54dab0 : !equalTupleDescs(RelationGetDescr(childrel), : RelationGetDescr(onerel))) : { : TupleConversionMap *map; : : map = convert_tuples_by_name(RelationGetDescr(childrel), 0.00 : 54dbb1: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx 0.00 : 54dbb8: 48 8b 85 28 fd ff ff mov -0x2d8(%rbp),%rax 0.00 : 54dbbf: ba cf 76 87 00 mov $0x8776cf,%edx 0.00 : 54dbc4: 48 8b 73 38 mov 0x38(%rbx),%rsi 0.00 : 54dbc8: 48 8b 78 38 mov 0x38(%rax),%rdi 0.00 : 54dbcc: e8 6f 61 f2 ff callq 473d40 : RelationGetDescr(onerel), : gettext_noop("could not convert row type")); : if (map != NULL) 0.00 : 54dbd1: 48 85 c0 test %rax,%rax : !equalTupleDescs(RelationGetDescr(childrel), : RelationGetDescr(onerel))) : { : TupleConversionMap *map; : : map = convert_tuples_by_name(RelationGetDescr(childrel), 0.00 : 54dbd4: 48 89 85 18 fd ff ff mov %rax,-0x2e8(%rbp) : RelationGetDescr(onerel), : gettext_noop("could not convert row type")); : if (map != NULL) 0.00 : 54dbdb: 0f 84 cf fe ff ff je 54dab0 0.00 : 54dbe1: 45 31 f6 xor %r14d,%r14d 0.00 : 54dbe4: 0f 1f 40 00 nopl 0x0(%rax) : : for (j = 0; j < childrows; j++) : { : HeapTuple newtup; : : newtup = do_convert_tuple(rows[numrows + j], map); 0.00 : 54dbe8: 8b 9d d4 fc ff ff mov -0x32c(%rbp),%ebx 0.00 : 54dbee: 48 8b 95 a8 fc ff ff mov -0x358(%rbp),%rdx 0.00 : 54dbf5: 48 8b b5 18 fd ff ff mov -0x2e8(%rbp),%rsi 0.00 : 54dbfc: 44 01 f3 add %r14d,%ebx : heap_freetuple(rows[numrows + j]); : rows[numrows + j] = newtup; 0.00 : 54dbff: 49 83 c6 01 add $0x1,%r14 : : for (j = 0; j < childrows; j++) : { : HeapTuple newtup; : : newtup = do_convert_tuple(rows[numrows + j], map); 0.00 : 54dc03: 48 63 db movslq %ebx,%rbx 0.00 : 54dc06: 48 8d 1c da lea (%rdx,%rbx,8),%rbx 0.00 : 54dc0a: 48 8b 3b mov (%rbx),%rdi 0.00 : 54dc0d: e8 7e 60 f2 ff callq 473c90 : heap_freetuple(rows[numrows + j]); 0.00 : 54dc12: 48 8b 3b mov (%rbx),%rdi : : for (j = 0; j < childrows; j++) : { : HeapTuple newtup; : : newtup = do_convert_tuple(rows[numrows + j], map); 0.00 : 54dc15: 49 89 c4 mov %rax,%r12 : heap_freetuple(rows[numrows + j]); 0.00 : 54dc18: e8 a3 10 f2 ff callq 46ecc0 : rows[numrows + j] = newtup; 0.00 : 54dc1d: 4c 89 23 mov %r12,(%rbx) : gettext_noop("could not convert row type")); : if (map != NULL) : { : int j; : : for (j = 0; j < childrows; j++) 0.00 : 54dc20: 44 39 b5 24 fd ff ff cmp %r14d,-0x2dc(%rbp) 0.00 : 54dc27: 7f bf jg 54dbe8 : : newtup = do_convert_tuple(rows[numrows + j], map); : heap_freetuple(rows[numrows + j]); : rows[numrows + j] = newtup; : } : free_conversion_map(map); 0.00 : 54dc29: 48 8b bd 18 fd ff ff mov -0x2e8(%rbp),%rdi 0.00 : 54dc30: e8 0b 60 f2 ff callq 473c40 0.00 : 54dc35: e9 76 fe ff ff jmpq 54dab0 : * (This is safe because we hold ShareUpdateExclusiveLock.) : */ : if (list_length(tableOIDs) < 2) : { : /* CCI because we already updated the pg_class row in this command */ : CommandCounterIncrement(); 0.00 : 54dc3a: e8 01 63 f7 ff callq 4c3f40 : SetRelationHasSubclass(RelationGetRelid(onerel), false); 0.00 : 54dc3f: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx 0.00 : 54dc46: 31 f6 xor %esi,%esi 0.00 : 54dc48: 8b 79 40 mov 0x40(%rcx),%edi 0.00 : 54dc4b: e8 e0 be 03 00 callq 589b30 : : /* : * Update pages/tuples stats in pg_class ... but not if we're doing : * inherited stats. : */ : if (!inh) 0.00 : 54dc50: 80 bd 83 fc ff ff 00 cmpb $0x0,-0x37d(%rbp) 0.00 : 54dc57: 0f 84 c2 01 00 00 je 54de1f : */ : if (!inh) : pgstat_report_analyze(onerel, totalrows, totaldeadrows); : : /* If this isn't part of VACUUM ANALYZE, let index AMs do cleanup */ : if (!(vacstmt->options & VACOPT_VACUUM)) 0.00 : 54dc5d: 48 8b 9d 90 fc ff ff mov -0x370(%rbp),%rbx 0.00 : 54dc64: f6 43 04 01 testb $0x1,0x4(%rbx) 0.00 : 54dc68: 0f 85 80 00 00 00 jne 54dcee : { : for (ind = 0; ind < nindexes; ind++) 0.00 : 54dc6e: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 54dc71: 85 c0 test %eax,%eax 0.00 : 54dc73: 7e 79 jle 54dcee 0.00 : 54dc75: 4c 8d a5 70 ff ff ff lea -0x90(%rbp),%r12 0.00 : 54dc7c: 31 db xor %ebx,%ebx 0.00 : 54dc7e: 66 90 xchg %ax,%ax : { : IndexBulkDeleteResult *stats; : IndexVacuumInfo ivinfo; : : ivinfo.index = Irel[ind]; 0.00 : 54dc80: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 54dc84: 48 63 d3 movslq %ebx,%rdx : ivinfo.estimated_count = true; : ivinfo.message_level = elevel; : ivinfo.num_heap_tuples = onerel->rd_rel->reltuples; : ivinfo.strategy = vac_strategy; : : stats = index_vacuum_cleanup(&ivinfo, NULL); 0.00 : 54dc87: 31 f6 xor %esi,%esi 0.00 : 54dc89: 4c 89 e7 mov %r12,%rdi : for (ind = 0; ind < nindexes; ind++) : { : IndexBulkDeleteResult *stats; : IndexVacuumInfo ivinfo; : : ivinfo.index = Irel[ind]; 0.00 : 54dc8c: 48 8b 04 d0 mov (%rax,%rdx,8),%rax : ivinfo.analyze_only = true; : ivinfo.estimated_count = true; : ivinfo.message_level = elevel; : ivinfo.num_heap_tuples = onerel->rd_rel->reltuples; 0.00 : 54dc90: 48 8b 95 98 fc ff ff mov -0x368(%rbp),%rdx : { : IndexBulkDeleteResult *stats; : IndexVacuumInfo ivinfo; : : ivinfo.index = Irel[ind]; : ivinfo.analyze_only = true; 0.00 : 54dc97: c6 85 78 ff ff ff 01 movb $0x1,-0x88(%rbp) : ivinfo.estimated_count = true; 0.00 : 54dc9e: c6 85 79 ff ff ff 01 movb $0x1,-0x87(%rbp) : for (ind = 0; ind < nindexes; ind++) : { : IndexBulkDeleteResult *stats; : IndexVacuumInfo ivinfo; : : ivinfo.index = Irel[ind]; 0.00 : 54dca5: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) : ivinfo.analyze_only = true; : ivinfo.estimated_count = true; : ivinfo.message_level = elevel; 0.00 : 54dcac: 8b 85 7c fc ff ff mov -0x384(%rbp),%eax 0.00 : 54dcb2: 89 85 7c ff ff ff mov %eax,-0x84(%rbp) : ivinfo.num_heap_tuples = onerel->rd_rel->reltuples; 0.00 : 54dcb8: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 54dcbc: f3 0f 10 40 60 movss 0x60(%rax),%xmm0 : ivinfo.strategy = vac_strategy; 0.00 : 54dcc1: 48 8b 05 58 ba 62 00 mov 0x62ba58(%rip),%rax # b79720 : : ivinfo.index = Irel[ind]; : ivinfo.analyze_only = true; : ivinfo.estimated_count = true; : ivinfo.message_level = elevel; : ivinfo.num_heap_tuples = onerel->rd_rel->reltuples; 0.00 : 54dcc8: 0f 5a c0 cvtps2pd %xmm0,%xmm0 0.00 : 54dccb: f2 0f 11 45 80 movsd %xmm0,-0x80(%rbp) : ivinfo.strategy = vac_strategy; 0.00 : 54dcd0: 48 89 45 88 mov %rax,-0x78(%rbp) : : stats = index_vacuum_cleanup(&ivinfo, NULL); 0.00 : 54dcd4: e8 57 76 f5 ff callq 4a5330 : : if (stats) 0.00 : 54dcd9: 48 85 c0 test %rax,%rax 0.00 : 54dcdc: 74 08 je 54dce6 : pfree(stats); 0.00 : 54dcde: 48 89 c7 mov %rax,%rdi 0.00 : 54dce1: e8 9a ae 24 00 callq 798b80 : pgstat_report_analyze(onerel, totalrows, totaldeadrows); : : /* If this isn't part of VACUUM ANALYZE, let index AMs do cleanup */ : if (!(vacstmt->options & VACOPT_VACUUM)) : { : for (ind = 0; ind < nindexes; ind++) 0.00 : 54dce6: 83 c3 01 add $0x1,%ebx 0.00 : 54dce9: 39 5d cc cmp %ebx,-0x34(%rbp) 0.00 : 54dcec: 7f 92 jg 54dc80 : pfree(stats); : } : } : : /* Done with indexes */ : vac_close_indexes(nindexes, Irel, NoLock); 0.00 : 54dcee: 48 8b 75 b8 mov -0x48(%rbp),%rsi 0.00 : 54dcf2: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 54dcf5: 31 d2 xor %edx,%edx 0.00 : 54dcf7: e8 04 4e 05 00 callq 5a2b00 : : /* Log the action if appropriate */ : if (IsAutoVacuumWorkerProcess() && Log_autovacuum_min_duration >= 0) 0.00 : 54dcfc: e8 df b9 0e 00 callq 6396e0 0.00 : 54dd01: 84 c0 test %al,%al 0.00 : 54dd03: 74 35 je 54dd3a 0.00 : 54dd05: 8b 1d c9 a8 61 00 mov 0x61a8c9(%rip),%ebx # b685d4 0.00 : 54dd0b: 83 fb 00 cmp $0x0,%ebx 0.00 : 54dd0e: 7c 2a jl 54dd3a : { : if (Log_autovacuum_min_duration == 0 || 0.00 : 54dd10: 0f 85 c8 03 00 00 jne 54e0de : TimestampDifferenceExceeds(starttime, GetCurrentTimestamp(), : Log_autovacuum_min_duration)) : ereport(LOG, 0.00 : 54dd16: 45 31 c0 xor %r8d,%r8d 0.00 : 54dd19: b9 84 79 87 00 mov $0x877984,%ecx 0.00 : 54dd1e: ba 90 02 00 00 mov $0x290,%edx 0.00 : 54dd23: be 5d 6d 8b 00 mov $0x8b6d5d,%esi 0.00 : 54dd28: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 54dd2d: e8 8e cd 22 00 callq 77aac0 0.00 : 54dd32: 84 c0 test %al,%al 0.00 : 54dd34: 0f 85 ea 03 00 00 jne 54e124 : RelationGetRelationName(onerel), : pg_rusage_show(&ru0)))); : } : : /* Roll back any GUC changes executed by index functions */ : AtEOXact_GUC(false, save_nestlevel); 0.00 : 54dd3a: 8b b5 ec fc ff ff mov -0x314(%rbp),%esi 0.00 : 54dd40: 31 ff xor %edi,%edi 0.00 : 54dd42: e8 09 2f 24 00 callq 790c50 : : /* Restore userid and security context */ : SetUserIdAndSecContext(save_userid, save_sec_context); 0.00 : 54dd47: 8b 75 c4 mov -0x3c(%rbp),%esi 0.00 : 54dd4a: 8b 7d c8 mov -0x38(%rbp),%edi 0.00 : 54dd4d: e8 ae 72 23 00 callq 785000 : : CurrentMemoryContext = context; 0.00 : 54dd52: 48 8b 95 e0 fc ff ff mov -0x320(%rbp),%rdx : : /* Restore current context and release memory */ : MemoryContextSwitchTo(caller_context); : MemoryContextDelete(anl_context); 0.00 : 54dd59: 48 8b 3d b8 b9 62 00 mov 0x62b9b8(%rip),%rdi # b79718 0.00 : 54dd60: 48 89 15 f9 ca 66 00 mov %rdx,0x66caf9(%rip) # bba860 0.00 : 54dd67: e8 34 ae 24 00 callq 798ba0 : anl_context = NULL; 0.00 : 54dd6c: 48 c7 05 a1 b9 62 00 movq $0x0,0x62b9a1(%rip) # b79718 0.00 : 54dd73: 00 00 00 00 : } 0.00 : 54dd77: 48 81 c4 78 03 00 00 add $0x378,%rsp 0.00 : 54dd7e: 5b pop %rbx 0.00 : 54dd7f: 41 5c pop %r12 0.00 : 54dd81: 41 5d pop %r13 0.00 : 54dd83: 41 5e pop %r14 0.00 : 54dd85: 41 5f pop %r15 0.00 : 54dd87: c9 leaveq 0.00 : 54dd88: c3 retq : } : : MemoryContextResetAndDeleteChildren(col_context); : } : : if (hasindex) 0.00 : 54dd89: 80 bd bf fc ff ff 00 cmpb $0x0,-0x341(%rbp) 0.00 : 54dd90: 0f 85 3c 04 00 00 jne 54e1d2 0.00 : 54dd96: 48 8b 9d 08 fd ff ff mov -0x2f8(%rbp),%rbx : indexdata, nindexes, : rows, numrows, : col_context); : : MemoryContextSwitchTo(old_context); : MemoryContextDelete(col_context); 0.00 : 54dd9d: 48 8b bd 00 fd ff ff mov -0x300(%rbp),%rdi 0.00 : 54dda4: 48 89 1d b5 ca 66 00 mov %rbx,0x66cab5(%rip) # bba860 0.00 : 54ddab: e8 f0 ad 24 00 callq 798ba0 : /* : * Emit the completed stats rows into pg_statistic, replacing any : * previous statistics for the target columns. (If there are stats in : * pg_statistic for columns we didn't process, we leave them alone.) : */ : update_attstats(RelationGetRelid(onerel), inh, 0.00 : 54ddb0: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 54ddb7: 0f be b5 83 fc ff ff movsbl -0x37d(%rbp),%esi 0.00 : 54ddbe: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 54ddc5: 8b 95 b4 fc ff ff mov -0x34c(%rbp),%edx 0.00 : 54ddcb: 8b 78 40 mov 0x40(%rax),%edi 0.00 : 54ddce: e8 5d ec ff ff callq 54ca30 : attr_cnt, vacattrstats); : : for (ind = 0; ind < nindexes; ind++) 0.00 : 54ddd3: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 54ddd6: 85 c0 test %eax,%eax 0.00 : 54ddd8: 0f 8e 72 fe ff ff jle 54dc50 0.00 : 54ddde: 31 db xor %ebx,%ebx : { : AnlIndexData *thisdata = &indexdata[ind]; 0.00 : 54dde0: 48 63 f3 movslq %ebx,%rsi : * pg_statistic for columns we didn't process, we leave them alone.) : */ : update_attstats(RelationGetRelid(onerel), inh, : attr_cnt, vacattrstats); : : for (ind = 0; ind < nindexes; ind++) 0.00 : 54dde3: 83 c3 01 add $0x1,%ebx : { : AnlIndexData *thisdata = &indexdata[ind]; 0.00 : 54dde6: 48 89 f0 mov %rsi,%rax 0.00 : 54dde9: 48 c1 e0 05 shl $0x5,%rax 0.00 : 54dded: 48 03 85 c8 fc ff ff add -0x338(%rbp),%rax : : update_attstats(RelationGetRelid(Irel[ind]), false, 0.00 : 54ddf4: 48 8b 48 10 mov 0x10(%rax),%rcx 0.00 : 54ddf8: 8b 50 18 mov 0x18(%rax),%edx 0.00 : 54ddfb: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 54ddff: 48 8b 04 f0 mov (%rax,%rsi,8),%rax 0.00 : 54de03: 31 f6 xor %esi,%esi 0.00 : 54de05: 8b 78 40 mov 0x40(%rax),%edi 0.00 : 54de08: e8 23 ec ff ff callq 54ca30 : * pg_statistic for columns we didn't process, we leave them alone.) : */ : update_attstats(RelationGetRelid(onerel), inh, : attr_cnt, vacattrstats); : : for (ind = 0; ind < nindexes; ind++) 0.00 : 54de0d: 39 5d cc cmp %ebx,-0x34(%rbp) 0.00 : 54de10: 7f ce jg 54dde0 : : /* : * Update pages/tuples stats in pg_class ... but not if we're doing : * inherited stats. : */ : if (!inh) 0.00 : 54de12: 80 bd 83 fc ff ff 00 cmpb $0x0,-0x37d(%rbp) 0.00 : 54de19: 0f 85 3e fe ff ff jne 54dc5d : vac_update_relstats(onerel, 0.00 : 54de1f: 48 8b bd 98 fc ff ff mov -0x368(%rbp),%rdi 0.00 : 54de26: e8 85 64 f5 ff callq 4a42b0 0.00 : 54de2b: 0f be 8d bf fc ff ff movsbl -0x341(%rbp),%ecx 0.00 : 54de32: 8b b5 84 fc ff ff mov -0x37c(%rbp),%esi 0.00 : 54de38: 45 31 c9 xor %r9d,%r9d 0.00 : 54de3b: 48 8b bd 98 fc ff ff mov -0x368(%rbp),%rdi 0.00 : 54de42: f2 0f 10 45 b0 movsd -0x50(%rbp),%xmm0 0.00 : 54de47: 45 31 c0 xor %r8d,%r8d 0.00 : 54de4a: 89 c2 mov %eax,%edx 0.00 : 54de4c: e8 ef 4d 05 00 callq 5a2c40 : /* : * Same for indexes. Vacuum always scans all indexes, so if we're part of : * VACUUM ANALYZE, don't overwrite the accurate count already inserted by : * VACUUM. : */ : if (!inh && !(vacstmt->options & VACOPT_VACUUM)) 0.00 : 54de51: 48 8b 95 90 fc ff ff mov -0x370(%rbp),%rdx 0.00 : 54de58: f6 42 04 01 testb $0x1,0x4(%rdx) 0.00 : 54de5c: 75 75 jne 54ded3 : { : for (ind = 0; ind < nindexes; ind++) 0.00 : 54de5e: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 54de61: 85 c0 test %eax,%eax 0.00 : 54de63: 7e 6e jle 54ded3 0.00 : 54de65: 45 31 e4 xor %r12d,%r12d 0.00 : 54de68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54de6f: 00 : { : AnlIndexData *thisdata = &indexdata[ind]; 0.00 : 54de70: 49 63 dc movslq %r12d,%rbx : double totalindexrows; : : totalindexrows = ceil(thisdata->tupleFract * totalrows); 0.00 : 54de73: 48 8b 8d c8 fc ff ff mov -0x338(%rbp),%rcx : * VACUUM ANALYZE, don't overwrite the accurate count already inserted by : * VACUUM. : */ : if (!inh && !(vacstmt->options & VACOPT_VACUUM)) : { : for (ind = 0; ind < nindexes; ind++) 0.00 : 54de7a: 41 83 c4 01 add $0x1,%r12d : { : AnlIndexData *thisdata = &indexdata[ind]; : double totalindexrows; : : totalindexrows = ceil(thisdata->tupleFract * totalrows); 0.00 : 54de7e: 48 89 d8 mov %rbx,%rax 0.00 : 54de81: 48 c1 e0 05 shl $0x5,%rax 0.00 : 54de85: f2 0f 10 44 08 08 movsd 0x8(%rax,%rcx,1),%xmm0 0.00 : 54de8b: f2 0f 59 45 b0 mulsd -0x50(%rbp),%xmm0 0.00 : 54de90: e8 0b b6 f1 ff callq 4694a0 : vac_update_relstats(Irel[ind], 0.00 : 54de95: 48 8b 45 b8 mov -0x48(%rbp),%rax : for (ind = 0; ind < nindexes; ind++) : { : AnlIndexData *thisdata = &indexdata[ind]; : double totalindexrows; : : totalindexrows = ceil(thisdata->tupleFract * totalrows); 0.00 : 54de99: f2 0f 11 85 10 fd ff movsd %xmm0,-0x2f0(%rbp) 0.00 : 54dea0: ff : vac_update_relstats(Irel[ind], 0.00 : 54dea1: 31 f6 xor %esi,%esi 0.00 : 54dea3: 48 8b 3c d8 mov (%rax,%rbx,8),%rdi 0.00 : 54dea7: e8 e4 77 12 00 callq 675690 0.00 : 54deac: 89 c6 mov %eax,%esi 0.00 : 54deae: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 54deb2: 45 31 c9 xor %r9d,%r9d 0.00 : 54deb5: f2 0f 10 85 10 fd ff movsd -0x2f0(%rbp),%xmm0 0.00 : 54debc: ff 0.00 : 54debd: 45 31 c0 xor %r8d,%r8d 0.00 : 54dec0: 31 c9 xor %ecx,%ecx 0.00 : 54dec2: 31 d2 xor %edx,%edx 0.00 : 54dec4: 48 8b 3c d8 mov (%rax,%rbx,8),%rdi 0.00 : 54dec8: e8 73 4d 05 00 callq 5a2c40 : * VACUUM ANALYZE, don't overwrite the accurate count already inserted by : * VACUUM. : */ : if (!inh && !(vacstmt->options & VACOPT_VACUUM)) : { : for (ind = 0; ind < nindexes; ind++) 0.00 : 54decd: 44 39 65 cc cmp %r12d,-0x34(%rbp) 0.00 : 54ded1: 7f 9d jg 54de70 : * Report ANALYZE to the stats collector, too. However, if doing : * inherited stats we shouldn't report, because the stats collector only : * tracks per-table stats. : */ : if (!inh) : pgstat_report_analyze(onerel, totalrows, totaldeadrows); 0.00 : 54ded3: f2 0f 10 4d a8 movsd -0x58(%rbp),%xmm1 0.00 : 54ded8: 48 8b bd 98 fc ff ff mov -0x368(%rbp),%rdi 0.00 : 54dedf: f2 0f 10 45 b0 movsd -0x50(%rbp),%xmm0 0.00 : 54dee4: f2 48 0f 2c d1 cvttsd2si %xmm1,%rdx 0.00 : 54dee9: f2 48 0f 2c f0 cvttsd2si %xmm0,%rsi 0.00 : 54deee: e8 4d 2a 0f 00 callq 640940 0.00 : 54def3: e9 65 fd ff ff jmpq 54dc5d : * an explicit column list in the ANALYZE command, however. If we are : * doing a recursive scan, we don't want to touch the parent's indexes at : * all. : */ : if (!inh) : vac_open_indexes(onerel, AccessShareLock, &nindexes, &Irel); 0.00 : 54def8: 48 8b bd 98 fc ff ff mov -0x368(%rbp),%rdi 0.00 : 54deff: 48 8d 4d b8 lea -0x48(%rbp),%rcx 0.00 : 54df03: 48 8d 55 cc lea -0x34(%rbp),%rdx 0.00 : 54df07: be 01 00 00 00 mov $0x1,%esi 0.00 : 54df0c: e8 4f 4c 05 00 callq 5a2b60 : else : { : Irel = NULL; : nindexes = 0; : } : hasindex = (nindexes > 0); 0.00 : 54df11: 8b 4d cc mov -0x34(%rbp),%ecx 0.00 : 54df14: 85 c9 test %ecx,%ecx : indexdata = NULL; : if (hasindex) 0.00 : 54df16: 0f 9f 85 bf fc ff ff setg -0x341(%rbp) 0.00 : 54df1d: 0f 8e cb 07 00 00 jle 54e6ee : { : indexdata = (AnlIndexData *) palloc0(nindexes * sizeof(AnlIndexData)); 0.00 : 54df23: 48 63 f9 movslq %ecx,%rdi 0.00 : 54df26: 48 c1 e7 05 shl $0x5,%rdi 0.00 : 54df2a: e8 41 b0 24 00 callq 798f70 : for (ind = 0; ind < nindexes; ind++) 0.00 : 54df2f: 44 8b 55 cc mov -0x34(%rbp),%r10d : } : hasindex = (nindexes > 0); : indexdata = NULL; : if (hasindex) : { : indexdata = (AnlIndexData *) palloc0(nindexes * sizeof(AnlIndexData)); 0.00 : 54df33: 48 89 85 c8 fc ff ff mov %rax,-0x338(%rbp) : for (ind = 0; ind < nindexes; ind++) 0.00 : 54df3a: 45 85 d2 test %r10d,%r10d 0.00 : 54df3d: 0f 8e 8c 01 00 00 jle 54e0cf 0.00 : 54df43: c7 85 b8 fc ff ff 00 movl $0x0,-0x348(%rbp) 0.00 : 54df4a: 00 00 00 0.00 : 54df4d: eb 17 jmp 54df66 0.00 : 54df4f: 90 nop 0.00 : 54df50: 83 85 b8 fc ff ff 01 addl $0x1,-0x348(%rbp) 0.00 : 54df57: 8b 8d b8 fc ff ff mov -0x348(%rbp),%ecx 0.00 : 54df5d: 39 4d cc cmp %ecx,-0x34(%rbp) 0.00 : 54df60: 0f 8e 69 01 00 00 jle 54e0cf : { : AnlIndexData *thisdata = &indexdata[ind]; 0.00 : 54df66: 48 63 95 b8 fc ff ff movslq -0x348(%rbp),%rdx 0.00 : 54df6d: 48 89 d0 mov %rdx,%rax : IndexInfo *indexInfo; : : thisdata->indexInfo = indexInfo = BuildIndexInfo(Irel[ind]); 0.00 : 54df70: 48 8d 1c d5 00 00 00 lea 0x0(,%rdx,8),%rbx 0.00 : 54df77: 00 : if (hasindex) : { : indexdata = (AnlIndexData *) palloc0(nindexes * sizeof(AnlIndexData)); : for (ind = 0; ind < nindexes; ind++) : { : AnlIndexData *thisdata = &indexdata[ind]; 0.00 : 54df78: 48 c1 e0 05 shl $0x5,%rax 0.00 : 54df7c: 48 03 85 c8 fc ff ff add -0x338(%rbp),%rax : IndexInfo *indexInfo; : : thisdata->indexInfo = indexInfo = BuildIndexInfo(Irel[ind]); 0.00 : 54df83: 48 89 9d a0 fc ff ff mov %rbx,-0x360(%rbp) : if (hasindex) : { : indexdata = (AnlIndexData *) palloc0(nindexes * sizeof(AnlIndexData)); : for (ind = 0; ind < nindexes; ind++) : { : AnlIndexData *thisdata = &indexdata[ind]; 0.00 : 54df8a: 48 89 85 f0 fc ff ff mov %rax,-0x310(%rbp) : IndexInfo *indexInfo; : : thisdata->indexInfo = indexInfo = BuildIndexInfo(Irel[ind]); 0.00 : 54df91: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 54df95: 48 8b 3c d0 mov (%rax,%rdx,8),%rdi 0.00 : 54df99: e8 92 c3 f9 ff callq 4ea330 0.00 : 54df9e: 49 89 c7 mov %rax,%r15 0.00 : 54dfa1: 48 8b 85 f0 fc ff ff mov -0x310(%rbp),%rax : thisdata->tupleFract = 1.0; /* fix later if partial */ 0.00 : 54dfa8: 49 b9 00 00 00 00 00 movabs $0x3ff0000000000000,%r9 0.00 : 54dfaf: 00 f0 3f : for (ind = 0; ind < nindexes; ind++) : { : AnlIndexData *thisdata = &indexdata[ind]; : IndexInfo *indexInfo; : : thisdata->indexInfo = indexInfo = BuildIndexInfo(Irel[ind]); 0.00 : 54dfb2: 4c 89 38 mov %r15,(%rax) : thisdata->tupleFract = 1.0; /* fix later if partial */ 0.00 : 54dfb5: 4c 89 48 08 mov %r9,0x8(%rax) : if (indexInfo->ii_Expressions != NIL && vacstmt->va_cols == NIL) 0.00 : 54dfb9: 49 8b 47 48 mov 0x48(%r15),%rax 0.00 : 54dfbd: 48 85 c0 test %rax,%rax 0.00 : 54dfc0: 74 8e je 54df50 0.00 : 54dfc2: 48 8b 95 90 fc ff ff mov -0x370(%rbp),%rdx 0.00 : 54dfc9: 48 83 7a 20 00 cmpq $0x0,0x20(%rdx) 0.00 : 54dfce: 75 80 jne 54df50 0.00 : 54dfd0: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 54dfd4: 48 89 85 f8 fc ff ff mov %rax,-0x308(%rbp) : { : ListCell *indexpr_item = list_head(indexInfo->ii_Expressions); : : thisdata->vacattrstats = (VacAttrStats **) 0.00 : 54dfdb: 49 63 7f 04 movslq 0x4(%r15),%rdi 0.00 : 54dfdf: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 54dfe3: e8 68 ad 24 00 callq 798d50 0.00 : 54dfe8: 48 8b 8d f0 fc ff ff mov -0x310(%rbp),%rcx 0.00 : 54dfef: 48 89 41 10 mov %rax,0x10(%rcx) : palloc(indexInfo->ii_NumIndexAttrs * sizeof(VacAttrStats *)); : tcnt = 0; : for (i = 0; i < indexInfo->ii_NumIndexAttrs; i++) 0.00 : 54dff3: c7 85 bc fd ff ff 00 movl $0x0,-0x244(%rbp) 0.00 : 54dffa: 00 00 00 0.00 : 54dffd: 45 8b 47 04 mov 0x4(%r15),%r8d 0.00 : 54e001: 45 85 c0 test %r8d,%r8d 0.00 : 54e004: 0f 8e b0 00 00 00 jle 54e0ba 0.00 : 54e00a: c7 85 bc fd ff ff 00 movl $0x0,-0x244(%rbp) 0.00 : 54e011: 00 00 00 0.00 : 54e014: 45 31 f6 xor %r14d,%r14d 0.00 : 54e017: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 54e01d: 0f 1f 00 nopl (%rax) : { : int keycol = indexInfo->ii_KeyAttrNumbers[i]; : : if (keycol == 0) 0.00 : 54e020: 66 43 83 7c 37 08 00 cmpw $0x0,0x8(%r15,%r14,1) 0.00 : 54e027: 45 89 e8 mov %r13d,%r8d 0.00 : 54e02a: 75 7c jne 54e0a8 : { : /* Found an index expression */ : Node *indexkey; : : if (indexpr_item == NULL) /* shouldn't happen */ 0.00 : 54e02c: 48 83 bd f8 fc ff ff cmpq $0x0,-0x308(%rbp) 0.00 : 54e033: 00 0.00 : 54e034: 0f 84 6c 06 00 00 je 54e6a6 : elog(ERROR, "too few entries in indexprs list"); : indexkey = (Node *) lfirst(indexpr_item); 0.00 : 54e03a: 48 8b 9d f8 fc ff ff mov -0x308(%rbp),%rbx : indexpr_item = lnext(indexpr_item); : thisdata->vacattrstats[tcnt] = 0.00 : 54e041: 4c 63 a5 bc fd ff ff movslq -0x244(%rbp),%r12 0.00 : 54e048: 44 89 ee mov %r13d,%esi 0.00 : 54e04b: 48 8b 8d f0 fc ff ff mov -0x310(%rbp),%rcx : Node *indexkey; : : if (indexpr_item == NULL) /* shouldn't happen */ : elog(ERROR, "too few entries in indexprs list"); : indexkey = (Node *) lfirst(indexpr_item); : indexpr_item = lnext(indexpr_item); 0.00 : 54e052: 48 8b 43 08 mov 0x8(%rbx),%rax : /* Found an index expression */ : Node *indexkey; : : if (indexpr_item == NULL) /* shouldn't happen */ : elog(ERROR, "too few entries in indexprs list"); : indexkey = (Node *) lfirst(indexpr_item); 0.00 : 54e056: 48 8b 13 mov (%rbx),%rdx : indexpr_item = lnext(indexpr_item); : thisdata->vacattrstats[tcnt] = 0.00 : 54e059: 4a 8d 1c e5 00 00 00 lea 0x0(,%r12,8),%rbx 0.00 : 54e060: 00 : Node *indexkey; : : if (indexpr_item == NULL) /* shouldn't happen */ : elog(ERROR, "too few entries in indexprs list"); : indexkey = (Node *) lfirst(indexpr_item); : indexpr_item = lnext(indexpr_item); 0.00 : 54e061: 48 89 85 f8 fc ff ff mov %rax,-0x308(%rbp) : thisdata->vacattrstats[tcnt] = 0.00 : 54e068: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 54e06c: 48 03 59 10 add 0x10(%rcx),%rbx 0.00 : 54e070: 48 8b 8d a0 fc ff ff mov -0x360(%rbp),%rcx 0.00 : 54e077: 48 8b 3c 08 mov (%rax,%rcx,1),%rdi 0.00 : 54e07b: 44 89 ad 60 fc ff ff mov %r13d,-0x3a0(%rbp) 0.00 : 54e082: e8 69 e7 ff ff callq 54c7f0 0.00 : 54e087: 48 89 03 mov %rax,(%rbx) : examine_attribute(Irel[ind], i + 1, indexkey); : if (thisdata->vacattrstats[tcnt] != NULL) 0.00 : 54e08a: 48 8b 9d f0 fc ff ff mov -0x310(%rbp),%rbx : tcnt++; 0.00 : 54e091: 44 8b 85 60 fc ff ff mov -0x3a0(%rbp),%r8d : elog(ERROR, "too few entries in indexprs list"); : indexkey = (Node *) lfirst(indexpr_item); : indexpr_item = lnext(indexpr_item); : thisdata->vacattrstats[tcnt] = : examine_attribute(Irel[ind], i + 1, indexkey); : if (thisdata->vacattrstats[tcnt] != NULL) 0.00 : 54e098: 48 8b 43 10 mov 0x10(%rbx),%rax : tcnt++; 0.00 : 54e09c: 4a 83 3c e0 01 cmpq $0x1,(%rax,%r12,8) 0.00 : 54e0a1: 83 9d bc fd ff ff ff sbbl $0xffffffff,-0x244(%rbp) 0.00 : 54e0a8: 49 83 c6 02 add $0x2,%r14 0.00 : 54e0ac: 41 83 c5 01 add $0x1,%r13d : ListCell *indexpr_item = list_head(indexInfo->ii_Expressions); : : thisdata->vacattrstats = (VacAttrStats **) : palloc(indexInfo->ii_NumIndexAttrs * sizeof(VacAttrStats *)); : tcnt = 0; : for (i = 0; i < indexInfo->ii_NumIndexAttrs; i++) 0.00 : 54e0b0: 45 39 47 04 cmp %r8d,0x4(%r15) 0.00 : 54e0b4: 0f 8f 66 ff ff ff jg 54e020 : examine_attribute(Irel[ind], i + 1, indexkey); : if (thisdata->vacattrstats[tcnt] != NULL) : tcnt++; : } : } : thisdata->attr_cnt = tcnt; 0.00 : 54e0ba: 8b 95 bc fd ff ff mov -0x244(%rbp),%edx 0.00 : 54e0c0: 48 8b 85 f0 fc ff ff mov -0x310(%rbp),%rax 0.00 : 54e0c7: 89 50 18 mov %edx,0x18(%rax) 0.00 : 54e0ca: e9 81 fe ff ff jmpq 54df50 : hasindex = (nindexes > 0); : indexdata = NULL; : if (hasindex) : { : indexdata = (AnlIndexData *) palloc0(nindexes * sizeof(AnlIndexData)); : for (ind = 0; ind < nindexes; ind++) 0.00 : 54e0cf: c6 85 bf fc ff ff 01 movb $0x1,-0x341(%rbp) 0.00 : 54e0d6: 8b 4d cc mov -0x34(%rbp),%ecx 0.00 : 54e0d9: e9 68 f6 ff ff jmpq 54d746 : vac_close_indexes(nindexes, Irel, NoLock); : : /* Log the action if appropriate */ : if (IsAutoVacuumWorkerProcess() && Log_autovacuum_min_duration >= 0) : { : if (Log_autovacuum_min_duration == 0 || 0.00 : 54e0de: e8 8d 82 1f 00 callq 746370 0.00 : 54e0e3: 48 8b bd d8 fc ff ff mov -0x328(%rbp),%rdi 0.00 : 54e0ea: 48 89 c6 mov %rax,%rsi 0.00 : 54e0ed: 89 da mov %ebx,%edx 0.00 : 54e0ef: e8 8c 25 1f 00 callq 740680 0.00 : 54e0f4: 84 c0 test %al,%al 0.00 : 54e0f6: 0f 85 1a fc ff ff jne 54dd16 0.00 : 54e0fc: e9 39 fc ff ff jmpq 54dd3a : Oid save_userid; : int save_sec_context; : int save_nestlevel; : : if (inh) : ereport(elevel, 0.00 : 54e101: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 54e108: 48 8b 58 30 mov 0x30(%rax),%rbx 0.00 : 54e10c: 8b 7b 40 mov 0x40(%rbx),%edi 0.00 : 54e10f: e8 dc 48 22 00 callq 7729f0 0.00 : 54e114: 48 89 da mov %rbx,%rdx 0.00 : 54e117: 48 89 c6 mov %rax,%rsi 0.00 : 54e11a: bf 88 77 87 00 mov $0x877788,%edi 0.00 : 54e11f: e9 4a f8 ff ff jmpq 54d96e : if (IsAutoVacuumWorkerProcess() && Log_autovacuum_min_duration >= 0) : { : if (Log_autovacuum_min_duration == 0 || : TimestampDifferenceExceeds(starttime, GetCurrentTimestamp(), : Log_autovacuum_min_duration)) : ereport(LOG, 0.00 : 54e124: 48 8d bd d0 fe ff ff lea -0x130(%rbp),%rdi 0.00 : 54e12b: e8 60 79 24 00 callq 795a90 0.00 : 54e130: 48 89 c3 mov %rax,%rbx 0.00 : 54e133: 48 8b 85 98 fc ff ff mov -0x368(%rbp),%rax 0.00 : 54e13a: 4c 8b 60 30 mov 0x30(%rax),%r12 0.00 : 54e13e: 41 8b 7c 24 40 mov 0x40(%r12),%edi 0.00 : 54e143: e8 a8 48 22 00 callq 7729f0 0.00 : 54e148: 8b 3d 5a bf 66 00 mov 0x66bf5a(%rip),%edi # bba0a8 0.00 : 54e14e: 49 89 c5 mov %rax,%r13 0.00 : 54e151: e8 3a cb 00 00 callq 55ac90 0.00 : 54e156: 49 89 d8 mov %rbx,%r8 0.00 : 54e159: 48 89 c6 mov %rax,%rsi 0.00 : 54e15c: 4c 89 e1 mov %r12,%rcx 0.00 : 54e15f: 4c 89 ea mov %r13,%rdx 0.00 : 54e162: bf b0 77 87 00 mov $0x8777b0,%edi 0.00 : 54e167: 31 c0 xor %eax,%eax 0.00 : 54e169: e8 32 e7 22 00 callq 77c8a0 0.00 : 54e16e: 89 c7 mov %eax,%edi 0.00 : 54e170: 31 c0 xor %eax,%eax 0.00 : 54e172: e8 69 c4 22 00 callq 77a5e0 0.00 : 54e177: e9 be fb ff ff jmpq 54dd3a : { : char *col = strVal(lfirst(le)); : : i = attnameAttNum(onerel, col, false); : if (i == InvalidAttrNumber) : ereport(ERROR, 0.00 : 54e17c: 45 31 c0 xor %r8d,%r8d 0.00 : 54e17f: b9 84 79 87 00 mov $0x877984,%ecx 0.00 : 54e184: ba 84 01 00 00 mov $0x184,%edx 0.00 : 54e189: be 5d 6d 8b 00 mov $0x8b6d5d,%esi 0.00 : 54e18e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 54e193: e8 28 c9 22 00 callq 77aac0 0.00 : 54e198: 84 c0 test %al,%al 0.00 : 54e19a: 74 31 je 54e1cd 0.00 : 54e19c: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx 0.00 : 54e1a3: 4c 89 ee mov %r13,%rsi 0.00 : 54e1a6: bf 78 3a 7c 00 mov $0x7c3a78,%edi 0.00 : 54e1ab: 31 c0 xor %eax,%eax 0.00 : 54e1ad: 48 8b 53 30 mov 0x30(%rbx),%rdx 0.00 : 54e1b1: e8 ea e6 22 00 callq 77c8a0 0.00 : 54e1b6: bf 84 70 00 03 mov $0x3007084,%edi 0.00 : 54e1bb: 89 c3 mov %eax,%ebx 0.00 : 54e1bd: e8 8e eb 22 00 callq 77cd50 0.00 : 54e1c2: 89 de mov %ebx,%esi 0.00 : 54e1c4: 89 c7 mov %eax,%edi 0.00 : 54e1c6: 31 c0 xor %eax,%eax 0.00 : 54e1c8: e8 13 c4 22 00 callq 77a5e0 : { : /* Found an index expression */ : Node *indexkey; : : if (indexpr_item == NULL) /* shouldn't happen */ : elog(ERROR, "too few entries in indexprs list"); 0.00 : 54e1cd: e8 fe b2 f1 ff callq 4694d0 : Datum values[INDEX_MAX_KEYS]; : bool isnull[INDEX_MAX_KEYS]; : int ind, : i; : : ind_context = AllocSetContextCreate(anl_context, 0.00 : 54e1d2: 48 8b 3d 3f b5 62 00 mov 0x62b53f(%rip),%rdi # b79718 : : MemoryContextResetAndDeleteChildren(col_context); : } : : if (hasindex) : compute_index_stats(onerel, totalrows, 0.00 : 54e1d9: f2 0f 10 45 b0 movsd -0x50(%rbp),%xmm0 : Datum values[INDEX_MAX_KEYS]; : bool isnull[INDEX_MAX_KEYS]; : int ind, : i; : : ind_context = AllocSetContextCreate(anl_context, 0.00 : 54e1de: 31 d2 xor %edx,%edx : : MemoryContextResetAndDeleteChildren(col_context); : } : : if (hasindex) : compute_index_stats(onerel, totalrows, 0.00 : 54e1e0: 8b 5d cc mov -0x34(%rbp),%ebx : Datum values[INDEX_MAX_KEYS]; : bool isnull[INDEX_MAX_KEYS]; : int ind, : i; : : ind_context = AllocSetContextCreate(anl_context, 0.00 : 54e1e3: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 54e1e9: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 54e1ee: be f9 76 87 00 mov $0x8776f9,%esi : : MemoryContextResetAndDeleteChildren(col_context); : } : : if (hasindex) : compute_index_stats(onerel, totalrows, 0.00 : 54e1f3: f2 0f 11 85 c0 fd ff movsd %xmm0,-0x240(%rbp) 0.00 : 54e1fa: ff : Datum values[INDEX_MAX_KEYS]; : bool isnull[INDEX_MAX_KEYS]; : int ind, : i; : : ind_context = AllocSetContextCreate(anl_context, 0.00 : 54e1fb: e8 90 9d 24 00 callq 797f90 0.00 : 54e200: 48 89 85 a8 fd ff ff mov %rax,-0x258(%rbp) : ALLOCSET_DEFAULT_MINSIZE, : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : old_context = MemoryContextSwitchTo(ind_context); : : for (ind = 0; ind < nindexes; ind++) 0.00 : 54e207: 85 db test %ebx,%ebx : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 54e209: 48 8b 05 50 c6 66 00 mov 0x66c650(%rip),%rax # bba860 : : CurrentMemoryContext = context; 0.00 : 54e210: 48 8b 95 a8 fd ff ff mov -0x258(%rbp),%rdx : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 54e217: 48 89 85 a0 fd ff ff mov %rax,-0x260(%rbp) : : CurrentMemoryContext = context; 0.00 : 54e21e: 48 89 15 3b c6 66 00 mov %rdx,0x66c63b(%rip) # bba860 0.00 : 54e225: 0f 8e e7 03 00 00 jle 54e612 0.00 : 54e22b: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 54e22e: 48 c7 85 b0 fd ff ff movq $0x0,-0x250(%rbp) 0.00 : 54e235: 00 00 00 00 0.00 : 54e239: 48 83 c0 01 add $0x1,%rax 0.00 : 54e23d: 48 c1 e0 05 shl $0x5,%rax 0.00 : 54e241: 48 89 85 68 fc ff ff mov %rax,-0x398(%rbp) 0.00 : 54e248: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54e24f: 00 : { : AnlIndexData *thisdata = &indexdata[ind]; : IndexInfo *indexInfo = thisdata->indexInfo; 0.00 : 54e250: 48 8b 9d c8 fc ff ff mov -0x338(%rbp),%rbx 0.00 : 54e257: 48 8b 8d b0 fd ff ff mov -0x250(%rbp),%rcx : int attr_cnt = thisdata->attr_cnt; 0.00 : 54e25e: 48 8b 85 b0 fd ff ff mov -0x250(%rbp),%rax : old_context = MemoryContextSwitchTo(ind_context); : : for (ind = 0; ind < nindexes; ind++) : { : AnlIndexData *thisdata = &indexdata[ind]; : IndexInfo *indexInfo = thisdata->indexInfo; 0.00 : 54e265: 48 8b 0c 0b mov (%rbx,%rcx,1),%rcx 0.00 : 54e269: 48 89 8d 98 fd ff ff mov %rcx,-0x268(%rbp) : int attr_cnt = thisdata->attr_cnt; 0.00 : 54e270: 8b 44 03 18 mov 0x18(%rbx,%rax,1),%eax : tcnt, : rowno; : double totalindexrows; : : /* Ignore index if no columns to analyze and not partial */ : if (attr_cnt == 0 && indexInfo->ii_Predicate == NIL) 0.00 : 54e274: 85 c0 test %eax,%eax : : for (ind = 0; ind < nindexes; ind++) : { : AnlIndexData *thisdata = &indexdata[ind]; : IndexInfo *indexInfo = thisdata->indexInfo; : int attr_cnt = thisdata->attr_cnt; 0.00 : 54e276: 89 85 94 fd ff ff mov %eax,-0x26c(%rbp) : tcnt, : rowno; : double totalindexrows; : : /* Ignore index if no columns to analyze and not partial */ : if (attr_cnt == 0 && indexInfo->ii_Predicate == NIL) 0.00 : 54e27c: 75 0b jne 54e289 0.00 : 54e27e: 48 83 79 58 00 cmpq $0x0,0x58(%rcx) 0.00 : 54e283: 0f 84 6d 03 00 00 je 54e5f6 : /* : * Need an EState for evaluation of index expressions and : * partial-index predicates. Create it in the per-index context to be : * sure it gets cleaned up at the bottom of the loop. : */ : estate = CreateExecutorState(); 0.00 : 54e289: e8 92 70 06 00 callq 5b5320 0.00 : 54e28e: 48 89 85 80 fd ff ff mov %rax,-0x280(%rbp) : econtext = GetPerTupleExprContext(estate); 0.00 : 54e295: 48 8b 90 c8 00 00 00 mov 0xc8(%rax),%rdx 0.00 : 54e29c: 48 85 d2 test %rdx,%rdx 0.00 : 54e29f: 48 89 95 78 fd ff ff mov %rdx,-0x288(%rbp) 0.00 : 54e2a6: 0f 84 85 03 00 00 je 54e631 : /* Need a slot to hold the current heap tuple, too */ : slot = MakeSingleTupleTableSlot(RelationGetDescr(onerel)); 0.00 : 54e2ac: 48 8b 8d 98 fc ff ff mov -0x368(%rbp),%rcx : ExecPrepareExpr((Expr *) indexInfo->ii_Predicate, : estate); : : /* Compute and save index expression values */ : exprvals = (Datum *) palloc(numrows * attr_cnt * sizeof(Datum)); : exprnulls = (bool *) palloc(numrows * attr_cnt * sizeof(bool)); 0.00 : 54e2b3: 45 31 f6 xor %r14d,%r14d : * sure it gets cleaned up at the bottom of the loop. : */ : estate = CreateExecutorState(); : econtext = GetPerTupleExprContext(estate); : /* Need a slot to hold the current heap tuple, too */ : slot = MakeSingleTupleTableSlot(RelationGetDescr(onerel)); 0.00 : 54e2b6: 48 8b 79 38 mov 0x38(%rcx),%rdi 0.00 : 54e2ba: e8 91 64 06 00 callq 5b4750 : : /* Arrange for econtext's scan tuple to be the tuple under test */ : econtext->ecxt_scantuple = slot; 0.00 : 54e2bf: 48 8b 9d 78 fd ff ff mov -0x288(%rbp),%rbx : * sure it gets cleaned up at the bottom of the loop. : */ : estate = CreateExecutorState(); : econtext = GetPerTupleExprContext(estate); : /* Need a slot to hold the current heap tuple, too */ : slot = MakeSingleTupleTableSlot(RelationGetDescr(onerel)); 0.00 : 54e2c6: 48 89 85 88 fd ff ff mov %rax,-0x278(%rbp) : : /* Arrange for econtext's scan tuple to be the tuple under test */ : econtext->ecxt_scantuple = slot; 0.00 : 54e2cd: 48 89 43 08 mov %rax,0x8(%rbx) : : /* Set up execution state for predicate. */ : predicate = (List *) 0.00 : 54e2d1: 48 8b 85 98 fd ff ff mov -0x268(%rbp),%rax 0.00 : 54e2d8: 48 8b b5 80 fd ff ff mov -0x280(%rbp),%rsi 0.00 : 54e2df: 48 8b 78 58 mov 0x58(%rax),%rdi 0.00 : 54e2e3: e8 68 0c 06 00 callq 5aef50 0.00 : 54e2e8: 48 89 85 70 fd ff ff mov %rax,-0x290(%rbp) : ExecPrepareExpr((Expr *) indexInfo->ii_Predicate, : estate); : : /* Compute and save index expression values */ : exprvals = (Datum *) palloc(numrows * attr_cnt * sizeof(Datum)); 0.00 : 54e2ef: 8b 85 d4 fc ff ff mov -0x32c(%rbp),%eax 0.00 : 54e2f5: 0f af 85 94 fd ff ff imul -0x26c(%rbp),%eax 0.00 : 54e2fc: 48 63 d8 movslq %eax,%rbx 0.00 : 54e2ff: 48 8d 3c dd 00 00 00 lea 0x0(,%rbx,8),%rdi 0.00 : 54e306: 00 0.00 : 54e307: e8 44 aa 24 00 callq 798d50 : exprnulls = (bool *) palloc(numrows * attr_cnt * sizeof(bool)); 0.00 : 54e30c: 48 89 df mov %rbx,%rdi : predicate = (List *) : ExecPrepareExpr((Expr *) indexInfo->ii_Predicate, : estate); : : /* Compute and save index expression values */ : exprvals = (Datum *) palloc(numrows * attr_cnt * sizeof(Datum)); 0.00 : 54e30f: 48 89 85 68 fd ff ff mov %rax,-0x298(%rbp) : exprnulls = (bool *) palloc(numrows * attr_cnt * sizeof(bool)); 0.00 : 54e316: e8 35 aa 24 00 callq 798d50 0.00 : 54e31b: 48 89 85 60 fd ff ff mov %rax,-0x2a0(%rbp) : : /* : * Save just the columns we care about. We copy the values : * into ind_context from the estate's per-tuple context. : */ : for (i = 0; i < attr_cnt; i++) 0.00 : 54e322: 8b 85 94 fd ff ff mov -0x26c(%rbp),%eax : ExecPrepareExpr((Expr *) indexInfo->ii_Predicate, : estate); : : /* Compute and save index expression values */ : exprvals = (Datum *) palloc(numrows * attr_cnt * sizeof(Datum)); : exprnulls = (bool *) palloc(numrows * attr_cnt * sizeof(bool)); 0.00 : 54e328: 4c 8b bd a8 fc ff ff mov -0x358(%rbp),%r15 0.00 : 54e32f: c7 85 5c fd ff ff 00 movl $0x0,-0x2a4(%rbp) 0.00 : 54e336: 00 00 00 0.00 : 54e339: c7 85 cc fd ff ff 00 movl $0x0,-0x234(%rbp) 0.00 : 54e340: 00 00 00 : : /* : * Save just the columns we care about. We copy the values : * into ind_context from the estate's per-tuple context. : */ : for (i = 0; i < attr_cnt; i++) 0.00 : 54e343: 83 e8 01 sub $0x1,%eax 0.00 : 54e346: 48 8d 04 c5 08 00 00 lea 0x8(,%rax,8),%rax 0.00 : 54e34d: 00 0.00 : 54e34e: 48 89 85 70 fc ff ff mov %rax,-0x390(%rbp) 0.00 : 54e355: 0f 1f 00 nopl (%rax) : : /* : * Reset the per-tuple context each time, to reclaim any cruft : * left behind by evaluating the predicate or index expressions. : */ : ResetExprContext(econtext); 0.00 : 54e358: 48 8b 95 78 fd ff ff mov -0x288(%rbp),%rdx : exprnulls = (bool *) palloc(numrows * attr_cnt * sizeof(bool)); : numindexrows = 0; : tcnt = 0; : for (rowno = 0; rowno < numrows; rowno++) : { : HeapTuple heapTuple = rows[rowno]; 0.00 : 54e35f: 49 8b 1f mov (%r15),%rbx : : /* : * Reset the per-tuple context each time, to reclaim any cruft : * left behind by evaluating the predicate or index expressions. : */ : ResetExprContext(econtext); /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:745 75.00 : 54e362: 48 8b 7a 28 mov 0x28(%rdx),%rdi 0.00 : 54e366: e8 45 a6 24 00 callq 7989b0 : : /* Set up for predicate or expression evaluation */ : ExecStoreTuple(heapTuple, slot, InvalidBuffer, false); 0.00 : 54e36b: 48 8b b5 88 fd ff ff mov -0x278(%rbp),%rsi 0.00 : 54e372: 31 c9 xor %ecx,%ecx 0.00 : 54e374: 31 d2 xor %edx,%edx 0.00 : 54e376: 48 89 df mov %rbx,%rdi 0.00 : 54e379: e8 02 61 06 00 callq 5b4480 : : /* If index is partial, check predicate */ : if (predicate != NIL) 0.00 : 54e37e: 48 83 bd 70 fd ff ff cmpq $0x0,-0x290(%rbp) 0.00 : 54e385: 00 0.00 : 54e386: 74 1d je 54e3a5 : { : if (!ExecQual(predicate, econtext, false)) 0.00 : 54e388: 48 8b b5 78 fd ff ff mov -0x288(%rbp),%rsi 0.00 : 54e38f: 48 8b bd 70 fd ff ff mov -0x290(%rbp),%rdi 0.00 : 54e396: 31 d2 xor %edx,%edx 0.00 : 54e398: e8 73 eb 05 00 callq 5acf10 0.00 : 54e39d: 84 c0 test %al,%al 0.00 : 54e39f: 0f 84 e7 00 00 00 je 54e48c : continue; : } : numindexrows++; : : if (attr_cnt > 0) 0.00 : 54e3a5: 8b 85 94 fd ff ff mov -0x26c(%rbp),%eax : if (predicate != NIL) : { : if (!ExecQual(predicate, econtext, false)) : continue; : } : numindexrows++; 0.00 : 54e3ab: 83 85 5c fd ff ff 01 addl $0x1,-0x2a4(%rbp) : : if (attr_cnt > 0) 0.00 : 54e3b2: 85 c0 test %eax,%eax 0.00 : 54e3b4: 0f 8e d2 00 00 00 jle 54e48c : { : /* : * Evaluate the index row to compute expression values. We : * could do this by hand, but FormIndexDatum is convenient. : */ : FormIndexDatum(indexInfo, 0.00 : 54e3ba: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx 0.00 : 54e3c1: 48 8b b5 88 fd ff ff mov -0x278(%rbp),%rsi 0.00 : 54e3c8: 4c 8d 85 70 ff ff ff lea -0x90(%rbp),%r8 0.00 : 54e3cf: 48 8b bd 98 fd ff ff mov -0x268(%rbp),%rdi 0.00 : 54e3d6: 48 8d 8d d0 fd ff ff lea -0x230(%rbp),%rcx 0.00 : 54e3dd: 45 31 e4 xor %r12d,%r12d 0.00 : 54e3e0: e8 9b ae f9 ff callq 4e9280 0.00 : 54e3e5: 44 8b ad cc fd ff ff mov -0x234(%rbp),%r13d 0.00 : 54e3ec: eb 30 jmp 54e41e 0.00 : 54e3ee: 66 90 xchg %ax,%ax : VacAttrStats *stats = thisdata->vacattrstats[i]; : int attnum = stats->attr->attnum; : : if (isnull[attnum - 1]) : { : exprvals[tcnt] = (Datum) 0; 0.00 : 54e3f0: 48 8b 95 68 fd ff ff mov -0x298(%rbp),%rdx 0.00 : 54e3f7: 49 63 c5 movslq %r13d,%rax 0.00 : 54e3fa: 48 c7 04 c2 00 00 00 movq $0x0,(%rdx,%rax,8) 0.00 : 54e401: 00 : exprnulls[tcnt] = true; 0.00 : 54e402: 48 8b 8d 60 fd ff ff mov -0x2a0(%rbp),%rcx 0.00 : 54e409: c6 04 01 01 movb $0x1,(%rcx,%rax,1) : exprvals[tcnt] = datumCopy(values[attnum - 1], : stats->attrtype->typbyval, : stats->attrtype->typlen); : exprnulls[tcnt] = false; : } : tcnt++; 0.00 : 54e40d: 41 83 c5 01 add $0x1,%r13d 0.00 : 54e411: 49 83 c4 08 add $0x8,%r12 : : /* : * Save just the columns we care about. We copy the values : * into ind_context from the estate's per-tuple context. : */ : for (i = 0; i < attr_cnt; i++) 0.00 : 54e415: 4c 3b a5 70 fc ff ff cmp -0x390(%rbp),%r12 0.00 : 54e41c: 74 62 je 54e480 : { : VacAttrStats *stats = thisdata->vacattrstats[i]; 0.00 : 54e41e: 48 8b 8d b0 fd ff ff mov -0x250(%rbp),%rcx 0.00 : 54e425: 48 8b 9d c8 fc ff ff mov -0x338(%rbp),%rbx 0.00 : 54e42c: 48 8b 44 0b 10 mov 0x10(%rbx,%rcx,1),%rax 0.00 : 54e431: 4a 8b 14 20 mov (%rax,%r12,1),%rdx : int attnum = stats->attr->attnum; : : if (isnull[attnum - 1]) 0.00 : 54e435: 48 8b 02 mov (%rdx),%rax 0.00 : 54e438: 0f bf 40 4e movswl 0x4e(%rax),%eax 0.00 : 54e43c: 83 e8 01 sub $0x1,%eax 0.00 : 54e43f: 48 63 c8 movslq %eax,%rcx 0.00 : 54e442: 80 bc 0d 70 ff ff ff cmpb $0x0,-0x90(%rbp,%rcx,1) 0.00 : 54e449: 00 /home/Computational/mark/src/postgres-andres/src/backend/commands/analyze.c:779 25.00 : 54e44a: 75 a4 jne 54e3f0 : exprvals[tcnt] = (Datum) 0; : exprnulls[tcnt] = true; : } : else : { : exprvals[tcnt] = datumCopy(values[attnum - 1], 0.00 : 54e44c: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 54e450: 48 8b bc cd d0 fd ff mov -0x230(%rbp,%rcx,8),%rdi 0.00 : 54e457: ff 0.00 : 54e458: 49 63 dd movslq %r13d,%rbx 0.00 : 54e45b: 0f bf 50 48 movswl 0x48(%rax),%edx 0.00 : 54e45f: 0f be 70 4a movsbl 0x4a(%rax),%esi 0.00 : 54e463: e8 08 1b 18 00 callq 6cff70 0.00 : 54e468: 48 8b 95 68 fd ff ff mov -0x298(%rbp),%rdx 0.00 : 54e46f: 48 89 04 da mov %rax,(%rdx,%rbx,8) : stats->attrtype->typbyval, : stats->attrtype->typlen); : exprnulls[tcnt] = false; 0.00 : 54e473: 48 8b 8d 60 fd ff ff mov -0x2a0(%rbp),%rcx 0.00 : 54e47a: c6 04 19 00 movb $0x0,(%rcx,%rbx,1) 0.00 : 54e47e: eb 8d jmp 54e40d : : /* : * Save just the columns we care about. We copy the values : * into ind_context from the estate's per-tuple context. : */ : for (i = 0; i < attr_cnt; i++) 0.00 : 54e480: 8b 9d 94 fd ff ff mov -0x26c(%rbp),%ebx 0.00 : 54e486: 01 9d cc fd ff ff add %ebx,-0x234(%rbp) : /* Compute and save index expression values */ : exprvals = (Datum *) palloc(numrows * attr_cnt * sizeof(Datum)); : exprnulls = (bool *) palloc(numrows * attr_cnt * sizeof(bool)); : numindexrows = 0; : tcnt = 0; : for (rowno = 0; rowno < numrows; rowno++) 0.00 : 54e48c: 41 83 c6 01 add $0x1,%r14d 0.00 : 54e490: 49 83 c7 08 add $0x8,%r15 0.00 : 54e494: 44 39 b5 d4 fc ff ff cmp %r14d,-0x32c(%rbp) 0.00 : 54e49b: 0f 8f b7 fe ff ff jg 54e358 : : /* : * Having counted the number of rows that pass the predicate in the : * sample, we can estimate the total number of rows in the index. : */ : thisdata->tupleFract = (double) numindexrows / (double) numrows; 0.00 : 54e4a1: f2 0f 2a 8d d4 fc ff cvtsi2sdl -0x32c(%rbp),%xmm1 0.00 : 54e4a8: ff 0.00 : 54e4a9: f2 0f 2a 85 5c fd ff cvtsi2sdl -0x2a4(%rbp),%xmm0 0.00 : 54e4b0: ff 0.00 : 54e4b1: f2 0f 5e c1 divsd %xmm1,%xmm0 0.00 : 54e4b5: 48 8b 85 b0 fd ff ff mov -0x250(%rbp),%rax 0.00 : 54e4bc: 48 8b 95 c8 fc ff ff mov -0x338(%rbp),%rdx 0.00 : 54e4c3: f2 0f 11 44 02 08 movsd %xmm0,0x8(%rdx,%rax,1) : totalindexrows = ceil(thisdata->tupleFract * totalrows); 0.00 : 54e4c9: f2 0f 59 85 c0 fd ff mulsd -0x240(%rbp),%xmm0 0.00 : 54e4d0: ff 0.00 : 54e4d1: e8 ca af f1 ff callq 4694a0 : : /* : * Now we can compute the statistics for the expression columns. : */ : if (numindexrows > 0) 0.00 : 54e4d6: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax : /* : * Having counted the number of rows that pass the predicate in the : * sample, we can estimate the total number of rows in the index. : */ : thisdata->tupleFract = (double) numindexrows / (double) numrows; : totalindexrows = ceil(thisdata->tupleFract * totalrows); 0.00 : 54e4dc: f2 0f 11 85 50 fd ff movsd %xmm0,-0x2b0(%rbp) 0.00 : 54e4e3: ff : : /* : * Now we can compute the statistics for the expression columns. : */ : if (numindexrows > 0) 0.00 : 54e4e4: 85 c0 test %eax,%eax 0.00 : 54e4e6: 0f 8e d8 00 00 00 jle 54e5c4 : { : MemoryContextSwitchTo(col_context); : for (i = 0; i < attr_cnt; i++) 0.00 : 54e4ec: 8b 85 94 fd ff ff mov -0x26c(%rbp),%eax 0.00 : 54e4f2: 48 8b 8d 00 fd ff ff mov -0x300(%rbp),%rcx 0.00 : 54e4f9: 85 c0 test %eax,%eax 0.00 : 54e4fb: 48 89 0d 5e c3 66 00 mov %rcx,0x66c35e(%rip) # bba860 0.00 : 54e502: 0f 8e bc 00 00 00 jle 54e5c4 0.00 : 54e508: 45 31 ed xor %r13d,%r13d 0.00 : 54e50b: 45 31 e4 xor %r12d,%r12d 0.00 : 54e50e: 66 90 xchg %ax,%ax : { : VacAttrStats *stats = thisdata->vacattrstats[i]; 0.00 : 54e510: 48 8b 95 c8 fc ff ff mov -0x338(%rbp),%rdx 0.00 : 54e517: 48 8b 9d b0 fd ff ff mov -0x250(%rbp),%rbx 0.00 : 54e51e: 48 8b 44 1a 10 mov 0x10(%rdx,%rbx,1),%rax 0.00 : 54e523: 4a 8b 1c 20 mov (%rax,%r12,1),%rbx : AttributeOpts *aopt = : get_attribute_options(stats->attr->attrelid, : stats->attr->attnum); 0.00 : 54e527: 48 8b 03 mov (%rbx),%rax 0.00 : 54e52a: 0f bf 70 4e movswl 0x4e(%rax),%esi 0.00 : 54e52e: 8b 38 mov (%rax),%edi 0.00 : 54e530: e8 8b 5d 21 00 callq 7642c0 0.00 : 54e535: 49 89 c6 mov %rax,%r14 : : stats->exprvals = exprvals + i; 0.00 : 54e538: 48 8b 85 68 fd ff ff mov -0x298(%rbp),%rax : stats->exprnulls = exprnulls + i; : stats->rowstride = attr_cnt; : (*stats->compute_stats) (stats, 0.00 : 54e53f: be 90 ae 54 00 mov $0x54ae90,%esi 0.00 : 54e544: 48 89 df mov %rbx,%rdi : VacAttrStats *stats = thisdata->vacattrstats[i]; : AttributeOpts *aopt = : get_attribute_options(stats->attr->attrelid, : stats->attr->attnum); : : stats->exprvals = exprvals + i; 0.00 : 54e547: 4c 01 e0 add %r12,%rax 0.00 : 54e54a: 48 89 83 28 01 00 00 mov %rax,0x128(%rbx) : stats->exprnulls = exprnulls + i; 0.00 : 54e551: 48 8b 85 60 fd ff ff mov -0x2a0(%rbp),%rax 0.00 : 54e558: 4c 01 e8 add %r13,%rax 0.00 : 54e55b: 48 89 83 30 01 00 00 mov %rax,0x130(%rbx) : stats->rowstride = attr_cnt; 0.00 : 54e562: 8b 8d 94 fd ff ff mov -0x26c(%rbp),%ecx 0.00 : 54e568: 89 8b 38 01 00 00 mov %ecx,0x138(%rbx) : (*stats->compute_stats) (stats, 0.00 : 54e56e: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 54e574: f2 0f 10 85 50 fd ff movsd -0x2b0(%rbp),%xmm0 0.00 : 54e57b: ff 0.00 : 54e57c: ff 53 20 callq *0x20(%rbx) : /* : * If the n_distinct option is specified, it overrides the : * above computation. For indices, we always use just : * n_distinct, not n_distinct_inherited. : */ : if (aopt != NULL && aopt->n_distinct != 0.0) 0.00 : 54e57f: 4d 85 f6 test %r14,%r14 0.00 : 54e582: 74 1f je 54e5a3 0.00 : 54e584: 66 0f 57 c9 xorpd %xmm1,%xmm1 0.00 : 54e588: f2 41 0f 10 46 08 movsd 0x8(%r14),%xmm0 0.00 : 54e58e: 66 0f 2e c1 ucomisd %xmm1,%xmm0 0.00 : 54e592: 7a 02 jp 54e596 0.00 : 54e594: 74 0d je 54e5a3 : stats->stadistinct = aopt->n_distinct; 0.00 : 54e596: 66 0f 14 c0 unpcklpd %xmm0,%xmm0 0.00 : 54e59a: 66 0f 5a c0 cvtpd2ps %xmm0,%xmm0 0.00 : 54e59e: f3 0f 11 43 44 movss %xmm0,0x44(%rbx) : : MemoryContextResetAndDeleteChildren(col_context); 0.00 : 54e5a3: 48 8b bd 00 fd ff ff mov -0x300(%rbp),%rdi 0.00 : 54e5aa: 49 83 c5 01 add $0x1,%r13 0.00 : 54e5ae: 49 83 c4 08 add $0x8,%r12 0.00 : 54e5b2: e8 59 a6 24 00 callq 798c10 : * Now we can compute the statistics for the expression columns. : */ : if (numindexrows > 0) : { : MemoryContextSwitchTo(col_context); : for (i = 0; i < attr_cnt; i++) 0.00 : 54e5b7: 44 39 ad 94 fd ff ff cmp %r13d,-0x26c(%rbp) 0.00 : 54e5be: 0f 8f 4c ff ff ff jg 54e510 0.00 : 54e5c4: 48 8b 85 a8 fd ff ff mov -0x258(%rbp),%rax : } : : /* And clean up */ : MemoryContextSwitchTo(ind_context); : : ExecDropSingleTupleTableSlot(slot); 0.00 : 54e5cb: 48 8b bd 88 fd ff ff mov -0x278(%rbp),%rdi 0.00 : 54e5d2: 48 89 05 87 c2 66 00 mov %rax,0x66c287(%rip) # bba860 0.00 : 54e5d9: e8 82 5d 06 00 callq 5b4360 : FreeExecutorState(estate); 0.00 : 54e5de: 48 8b bd 80 fd ff ff mov -0x280(%rbp),%rdi 0.00 : 54e5e5: e8 26 6c 06 00 callq 5b5210 : MemoryContextResetAndDeleteChildren(ind_context); 0.00 : 54e5ea: 48 8b bd a8 fd ff ff mov -0x258(%rbp),%rdi 0.00 : 54e5f1: e8 1a a6 24 00 callq 798c10 0.00 : 54e5f6: 48 83 85 b0 fd ff ff addq $0x20,-0x250(%rbp) 0.00 : 54e5fd: 20 : ALLOCSET_DEFAULT_MINSIZE, : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : old_context = MemoryContextSwitchTo(ind_context); : : for (ind = 0; ind < nindexes; ind++) 0.00 : 54e5fe: 48 8b 95 68 fc ff ff mov -0x398(%rbp),%rdx 0.00 : 54e605: 48 39 95 b0 fd ff ff cmp %rdx,-0x250(%rbp) 0.00 : 54e60c: 0f 85 3e fc ff ff jne 54e250 0.00 : 54e612: 48 8b 8d a0 fd ff ff mov -0x260(%rbp),%rcx : FreeExecutorState(estate); : MemoryContextResetAndDeleteChildren(ind_context); : } : : MemoryContextSwitchTo(old_context); : MemoryContextDelete(ind_context); 0.00 : 54e619: 48 8b bd a8 fd ff ff mov -0x258(%rbp),%rdi 0.00 : 54e620: 48 89 0d 39 c2 66 00 mov %rcx,0x66c239(%rip) # bba860 0.00 : 54e627: e8 74 a5 24 00 callq 798ba0 0.00 : 54e62c: e9 65 f7 ff ff jmpq 54dd96 : * Need an EState for evaluation of index expressions and : * partial-index predicates. Create it in the per-index context to be : * sure it gets cleaned up at the bottom of the loop. : */ : estate = CreateExecutorState(); : econtext = GetPerTupleExprContext(estate); 0.00 : 54e631: 48 89 c7 mov %rax,%rdi 0.00 : 54e634: e8 77 6f 06 00 callq 5b55b0 0.00 : 54e639: 48 89 85 78 fd ff ff mov %rax,-0x288(%rbp) 0.00 : 54e640: e9 67 fc ff ff jmpq 54e2ac : } : attr_cnt = tcnt; : } : else : { : attr_cnt = onerel->rd_att->natts; 0.00 : 54e645: 48 8b 9d 98 fc ff ff mov -0x368(%rbp),%rbx 0.00 : 54e64c: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 54e650: 44 8b 28 mov (%rax),%r13d : vacattrstats = (VacAttrStats **) 0.00 : 54e653: 49 63 fd movslq %r13d,%rdi 0.00 : 54e656: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 54e65a: e8 f1 a6 24 00 callq 798d50 : palloc(attr_cnt * sizeof(VacAttrStats *)); : tcnt = 0; : for (i = 1; i <= attr_cnt; i++) 0.00 : 54e65f: 45 85 ed test %r13d,%r13d : attr_cnt = tcnt; : } : else : { : attr_cnt = onerel->rd_att->natts; : vacattrstats = (VacAttrStats **) 0.00 : 54e662: 48 89 85 c0 fc ff ff mov %rax,-0x340(%rbp) : palloc(attr_cnt * sizeof(VacAttrStats *)); : tcnt = 0; : for (i = 1; i <= attr_cnt; i++) 0.00 : 54e669: 7e 65 jle 54e6d0 0.00 : 54e66b: 45 31 e4 xor %r12d,%r12d 0.00 : 54e66e: bb 01 00 00 00 mov $0x1,%ebx : { : vacattrstats[tcnt] = examine_attribute(onerel, i, NULL); 0.00 : 54e673: 48 8b bd 98 fc ff ff mov -0x368(%rbp),%rdi 0.00 : 54e67a: 31 d2 xor %edx,%edx 0.00 : 54e67c: 89 de mov %ebx,%esi 0.00 : 54e67e: e8 6d e1 ff ff callq 54c7f0 0.00 : 54e683: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx : if (vacattrstats[tcnt] != NULL) : tcnt++; 0.00 : 54e68a: 48 83 f8 01 cmp $0x1,%rax : vacattrstats = (VacAttrStats **) : palloc(attr_cnt * sizeof(VacAttrStats *)); : tcnt = 0; : for (i = 1; i <= attr_cnt; i++) : { : vacattrstats[tcnt] = examine_attribute(onerel, i, NULL); 0.00 : 54e68e: 49 63 d4 movslq %r12d,%rdx : if (vacattrstats[tcnt] != NULL) : tcnt++; 0.00 : 54e691: 41 83 dc ff sbb $0xffffffff,%r12d : { : attr_cnt = onerel->rd_att->natts; : vacattrstats = (VacAttrStats **) : palloc(attr_cnt * sizeof(VacAttrStats *)); : tcnt = 0; : for (i = 1; i <= attr_cnt; i++) 0.00 : 54e695: 83 c3 01 add $0x1,%ebx 0.00 : 54e698: 41 39 dd cmp %ebx,%r13d : { : vacattrstats[tcnt] = examine_attribute(onerel, i, NULL); 0.00 : 54e69b: 48 89 04 d1 mov %rax,(%rcx,%rdx,8) : { : attr_cnt = onerel->rd_att->natts; : vacattrstats = (VacAttrStats **) : palloc(attr_cnt * sizeof(VacAttrStats *)); : tcnt = 0; : for (i = 1; i <= attr_cnt; i++) 0.00 : 54e69f: 7d d2 jge 54e673 0.00 : 54e6a1: e9 69 f0 ff ff jmpq 54d70f : { : /* Found an index expression */ : Node *indexkey; : : if (indexpr_item == NULL) /* shouldn't happen */ : elog(ERROR, "too few entries in indexprs list"); 0.00 : 54e6a6: ba 84 79 87 00 mov $0x877984,%edx 0.00 : 54e6ab: be c5 01 00 00 mov $0x1c5,%esi 0.00 : 54e6b0: bf 5d 6d 8b 00 mov $0x8b6d5d,%edi 0.00 : 54e6b5: e8 66 cd 22 00 callq 77b420 0.00 : 54e6ba: be 30 22 7c 00 mov $0x7c2230,%esi 0.00 : 54e6bf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 54e6c4: 31 c0 xor %eax,%eax 0.00 : 54e6c6: e8 65 cb 22 00 callq 77b230 0.00 : 54e6cb: e9 fd fa ff ff jmpq 54e1cd : { : attr_cnt = onerel->rd_att->natts; : vacattrstats = (VacAttrStats **) : palloc(attr_cnt * sizeof(VacAttrStats *)); : tcnt = 0; : for (i = 1; i <= attr_cnt; i++) 0.00 : 54e6d0: c7 85 b4 fc ff ff 00 movl $0x0,-0x34c(%rbp) 0.00 : 54e6d7: 00 00 00 0.00 : 54e6da: e9 37 f0 ff ff jmpq 54d716 : * the total block count. (This might be less than desirable if the child : * rels have radically different free-space percentages, but it's not : * clear that it's worth working harder.) : */ : numrows = 0; : *totalrows = 0; 0.00 : 54e6df: 31 c0 xor %eax,%eax 0.00 : 54e6e1: 48 89 45 b0 mov %rax,-0x50(%rbp) : *totaldeadrows = 0; 0.00 : 54e6e5: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 54e6e9: e9 62 f5 ff ff jmpq 54dc50 : Irel = NULL; : nindexes = 0; : } : hasindex = (nindexes > 0); : indexdata = NULL; : if (hasindex) 0.00 : 54e6ee: 48 c7 85 c8 fc ff ff movq $0x0,-0x338(%rbp) 0.00 : 54e6f5: 00 00 00 00 0.00 : 54e6f9: e9 48 f0 ff ff jmpq 54d746 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuum.c:1401 25.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuum.c:1403 25.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuum.c:1425 25.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuum.c:1425 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005a2a60 : : * This should be called in each major loop of VACUUM processing, : * typically once per page processed. : */ : void : vacuum_delay_point(void) : { /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuum.c:1401 25.00 : 5a2a60: 55 push %rbp : /* Always check for interrupts */ : CHECK_FOR_INTERRUPTS(); /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuum.c:1403 25.00 : 5a2a61: 0f b6 05 28 76 61 00 movzbl 0x617628(%rip),%eax # bba090 : * This should be called in each major loop of VACUUM processing, : * typically once per page processed. : */ : void : vacuum_delay_point(void) : { 0.00 : 5a2a68: 48 89 e5 mov %rsp,%rbp : /* Always check for interrupts */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a2a6b: 84 c0 test %al,%al 0.00 : 5a2a6d: 75 79 jne 5a2ae8 : : /* Nap if appropriate */ : if (VacuumCostActive && !InterruptPending && 0.00 : 5a2a6f: 80 3d 6e 76 61 00 00 cmpb $0x0,0x61766e(%rip) # bba0e4 0.00 : 5a2a76: 74 68 je 5a2ae0 0.00 : 5a2a78: 0f b6 05 11 76 61 00 movzbl 0x617611(%rip),%eax # bba090 0.00 : 5a2a7f: 84 c0 test %al,%al 0.00 : 5a2a81: 75 5d jne 5a2ae0 0.00 : 5a2a83: 8b 05 57 76 61 00 mov 0x617657(%rip),%eax # bba0e0 0.00 : 5a2a89: 8b 0d a9 60 5c 00 mov 0x5c60a9(%rip),%ecx # b68b38 0.00 : 5a2a8f: 39 c8 cmp %ecx,%eax 0.00 : 5a2a91: 7c 4d jl 5a2ae0 : VacuumCostBalance >= VacuumCostLimit) : { : int msec; : : msec = VacuumCostDelay * VacuumCostBalance / VacuumCostLimit; 0.00 : 5a2a93: 8b 3d 37 76 61 00 mov 0x617637(%rip),%edi # bba0d0 0.00 : 5a2a99: 89 fa mov %edi,%edx : if (msec > VacuumCostDelay * 4) : msec = VacuumCostDelay * 4; : : pg_usleep(msec * 1000L); 0.00 : 5a2a9b: c1 e7 02 shl $0x2,%edi : if (VacuumCostActive && !InterruptPending && : VacuumCostBalance >= VacuumCostLimit) : { : int msec; : : msec = VacuumCostDelay * VacuumCostBalance / VacuumCostLimit; 0.00 : 5a2a9e: 0f af d0 imul %eax,%edx 0.00 : 5a2aa1: 89 d0 mov %edx,%eax 0.00 : 5a2aa3: c1 fa 1f sar $0x1f,%edx 0.00 : 5a2aa6: f7 f9 idiv %ecx : if (msec > VacuumCostDelay * 4) : msec = VacuumCostDelay * 4; : : pg_usleep(msec * 1000L); 0.00 : 5a2aa8: 39 f8 cmp %edi,%eax 0.00 : 5a2aaa: 0f 4e f8 cmovle %eax,%edi 0.00 : 5a2aad: 48 63 ff movslq %edi,%rdi 0.00 : 5a2ab0: 48 69 ff e8 03 00 00 imul $0x3e8,%rdi,%rdi 0.00 : 5a2ab7: e8 94 9c 20 00 callq 7ac750 : : VacuumCostBalance = 0; 0.00 : 5a2abc: c7 05 1a 76 61 00 00 movl $0x0,0x61761a(%rip) # bba0e0 0.00 : 5a2ac3: 00 00 00 : : /* update balance values for workers */ : AutoVacuumUpdateDelay(); 0.00 : 5a2ac6: e8 b5 6b 09 00 callq 639680 : : /* Might have gotten an interrupt while sleeping */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a2acb: 0f b6 05 be 75 61 00 movzbl 0x6175be(%rip),%eax # bba090 0.00 : 5a2ad2: 84 c0 test %al,%al 0.00 : 5a2ad4: 74 0a je 5a2ae0 : } : } 0.00 : 5a2ad6: c9 leaveq : : /* update balance values for workers */ : AutoVacuumUpdateDelay(); : : /* Might have gotten an interrupt while sleeping */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a2ad7: e9 c4 97 0f 00 jmpq 69c2a0 0.00 : 5a2adc: 0f 1f 40 00 nopl 0x0(%rax) : } : } /home/Computational/mark/src/postgres-andres/src/backend/commands/vacuum.c:1425 25.00 : 5a2ae0: c9 leaveq 25.00 : 5a2ae1: c3 retq 0.00 : 5a2ae2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : */ : void : vacuum_delay_point(void) : { : /* Always check for interrupts */ : CHECK_FOR_INTERRUPTS(); 0.00 : 5a2ae8: e8 b3 97 0f 00 callq 69c2a0 0.00 : 5a2aed: 0f 1f 00 nopl (%rax) 0.00 : 5a2af0: e9 7a ff ff ff jmpq 5a2a6f Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:649 25.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 25.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e3000 : : * : * Input set is modified or recycled! : */ : Bitmapset * : bms_add_member(Bitmapset *a, int x) : { 0.00 : 5e3000: 55 push %rbp 0.00 : 5e3001: 48 89 e5 mov %rsp,%rbp 0.00 : 5e3004: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 5e3008: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 5e300c: 41 89 f5 mov %esi,%r13d 0.00 : 5e300f: 4c 89 65 e8 mov %r12,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:625 25.00 : 5e3013: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 5e3017: 48 83 ec 20 sub $0x20,%rsp : int wordnum, : bitnum; : : if (x < 0) 0.00 : 5e301b: 85 f6 test %esi,%esi 0.00 : 5e301d: 0f 88 a8 00 00 00 js 5e30cb : elog(ERROR, "negative bitmapset member not allowed"); : if (a == NULL) 0.00 : 5e3023: 48 85 ff test %rdi,%rdi 0.00 : 5e3026: 0f 84 84 00 00 00 je 5e30b0 : return bms_make_singleton(x); : wordnum = WORDNUM(x); : bitnum = BITNUM(x); : : /* enlarge the set if necessary */ : if (wordnum >= a->nwords) 0.00 : 5e302c: 44 8b 27 mov (%rdi),%r12d : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); : if (a == NULL) : return bms_make_singleton(x); : wordnum = WORDNUM(x); 0.00 : 5e302f: 41 89 f6 mov %esi,%r14d 0.00 : 5e3032: 41 c1 fe 05 sar $0x5,%r14d : bitnum = BITNUM(x); : : /* enlarge the set if necessary */ : if (wordnum >= a->nwords) 0.00 : 5e3036: 45 39 e6 cmp %r12d,%r14d 0.00 : 5e3039: 7d 35 jge 5e3070 : /* zero out the enlarged portion */ : for (i = oldnwords; i < a->nwords; i++) : a->words[i] = 0; : } : : a->words[wordnum] |= ((bitmapword) 1 << bitnum); 0.00 : 5e303b: 41 83 e5 1f and $0x1f,%r13d 0.00 : 5e303f: 49 63 d6 movslq %r14d,%rdx 0.00 : 5e3042: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5e3047: 44 89 e9 mov %r13d,%ecx /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:649 50.00 : 5e304a: d3 e0 shl %cl,%eax 0.00 : 5e304c: 09 44 97 04 or %eax,0x4(%rdi,%rdx,4) : return a; : } 0.00 : 5e3050: 48 89 f8 mov %rdi,%rax 0.00 : 5e3053: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5e3057: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 5e305c: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 5e3061: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:651 25.00 : 5e3066: c9 leaveq 0.00 : 5e3067: c3 retq 0.00 : 5e3068: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e306f: 00 : if (wordnum >= a->nwords) : { : int oldnwords = a->nwords; : int i; : : a = (Bitmapset *) repalloc(a, BITMAPSET_SIZE(wordnum + 1)); 0.00 : 5e3070: 41 8d 5e 01 lea 0x1(%r14),%ebx 0.00 : 5e3074: 48 63 f3 movslq %ebx,%rsi 0.00 : 5e3077: 48 8d 34 b5 04 00 00 lea 0x4(,%rsi,4),%rsi 0.00 : 5e307e: 00 0.00 : 5e307f: e8 6c 5c 1b 00 callq 798cf0 : a->nwords = wordnum + 1; : /* zero out the enlarged portion */ : for (i = oldnwords; i < a->nwords; i++) 0.00 : 5e3084: 41 39 dc cmp %ebx,%r12d : if (wordnum >= a->nwords) : { : int oldnwords = a->nwords; : int i; : : a = (Bitmapset *) repalloc(a, BITMAPSET_SIZE(wordnum + 1)); 0.00 : 5e3087: 48 89 c7 mov %rax,%rdi : a->nwords = wordnum + 1; 0.00 : 5e308a: 89 18 mov %ebx,(%rax) : /* zero out the enlarged portion */ : for (i = oldnwords; i < a->nwords; i++) 0.00 : 5e308c: 7d ad jge 5e303b 0.00 : 5e308e: 66 90 xchg %ax,%ax : a->words[i] = 0; 0.00 : 5e3090: 49 63 c4 movslq %r12d,%rax : int i; : : a = (Bitmapset *) repalloc(a, BITMAPSET_SIZE(wordnum + 1)); : a->nwords = wordnum + 1; : /* zero out the enlarged portion */ : for (i = oldnwords; i < a->nwords; i++) 0.00 : 5e3093: 41 83 c4 01 add $0x1,%r12d : a->words[i] = 0; 0.00 : 5e3097: c7 44 87 04 00 00 00 movl $0x0,0x4(%rdi,%rax,4) 0.00 : 5e309e: 00 : int i; : : a = (Bitmapset *) repalloc(a, BITMAPSET_SIZE(wordnum + 1)); : a->nwords = wordnum + 1; : /* zero out the enlarged portion */ : for (i = oldnwords; i < a->nwords; i++) 0.00 : 5e309f: 44 39 27 cmp %r12d,(%rdi) 0.00 : 5e30a2: 7f ec jg 5e3090 0.00 : 5e30a4: eb 95 jmp 5e303b 0.00 : 5e30a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5e30ad: 00 00 00 : a->words[i] = 0; : } : : a->words[wordnum] |= ((bitmapword) 1 << bitnum); : return a; : } 0.00 : 5e30b0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5e30b4: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 : bitnum; : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); : if (a == NULL) : return bms_make_singleton(x); 0.00 : 5e30b9: 89 f7 mov %esi,%edi : a->words[i] = 0; : } : : a->words[wordnum] |= ((bitmapword) 1 << bitnum); : return a; : } 0.00 : 5e30bb: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 5e30c0: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 5e30c5: c9 leaveq : bitnum; : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); : if (a == NULL) : return bms_make_singleton(x); 0.00 : 5e30c6: e9 a5 fe ff ff jmpq 5e2f70 : { : int wordnum, : bitnum; : : if (x < 0) : elog(ERROR, "negative bitmapset member not allowed"); 0.00 : 5e30cb: ba 6f 23 89 00 mov $0x89236f,%edx 0.00 : 5e30d0: be 76 02 00 00 mov $0x276,%esi 0.00 : 5e30d5: bf e2 21 89 00 mov $0x8921e2,%edi 0.00 : 5e30da: e8 41 83 19 00 callq 77b420 0.00 : 5e30df: be 08 22 89 00 mov $0x892208,%esi 0.00 : 5e30e4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5e30e9: 31 c0 xor %eax,%eax 0.00 : 5e30eb: e8 40 81 19 00 callq 77b230 0.00 : 5e30f0: e8 db 63 e8 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3157 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3157 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3174 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3182 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000676f60 : : * We won't loop, but just check once to see if the pin count is OK. If : * not, return FALSE with no lock held. : */ : bool : ConditionalLockBufferForCleanup(Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3157 25.00 : 676f60: 55 push %rbp 0.00 : 676f61: 48 89 e5 mov %rsp,%rbp 0.00 : 676f64: 48 89 5d f0 mov %rbx,-0x10(%rbp) 25.00 : 676f68: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 676f6c: 48 83 ec 10 sub $0x10,%rsp : volatile BufferDesc *bufHdr; : : Assert(BufferIsValid(buffer)); : : if (BufferIsLocal(buffer)) 0.00 : 676f70: 85 ff test %edi,%edi : * We won't loop, but just check once to see if the pin count is OK. If : * not, return FALSE with no lock held. : */ : bool : ConditionalLockBufferForCleanup(Buffer buffer) : { 0.00 : 676f72: 89 fb mov %edi,%ebx : volatile BufferDesc *bufHdr; : : Assert(BufferIsValid(buffer)); : : if (BufferIsLocal(buffer)) 0.00 : 676f74: 78 2a js 676fa0 : PrivateRefCountEntry *ref; : : Assert(BufferIsValid(buffer)); : Assert(!BufferIsLocal(buffer)); : : ref = GetPrivateRefCountEntry(buffer, false, false); 0.00 : 676f76: 31 d2 xor %edx,%edx 0.00 : 676f78: 31 f6 xor %esi,%esi 0.00 : 676f7a: e8 a1 d5 ff ff callq 674520 : : if (ref == NULL) 0.00 : 676f7f: 48 85 c0 test %rax,%rax 0.00 : 676f82: 74 06 je 676f8a : return true; : } : : /* There should be exactly one local pin */ : Assert(GetPrivateRefCount(buffer) > 0); : if (GetPrivateRefCount(buffer) != 1) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3174 25.00 : 676f84: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 676f88: 74 2e je 676fb8 : return true; : } : : /* Failed, so release the lock */ : UnlockBufHdr(bufHdr); : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 676f8a: 31 c0 xor %eax,%eax : return false; : } 0.00 : 676f8c: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 676f90: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 676f95: c9 leaveq 0.00 : 676f96: c3 retq 0.00 : 676f97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 676f9e: 00 00 : { : volatile BufferDesc *bufHdr; : : Assert(BufferIsValid(buffer)); : : if (BufferIsLocal(buffer)) 0.00 : 676fa0: 48 8b 05 79 61 50 00 mov 0x506179(%rip),%rax # b7d120 0.00 : 676fa7: f7 d3 not %ebx 0.00 : 676fa9: 48 63 d3 movslq %ebx,%rdx 0.00 : 676fac: 83 3c 90 01 cmpl $0x1,(%rax,%rdx,4) 0.00 : 676fb0: 0f 94 c0 sete %al 0.00 : 676fb3: eb d7 jmp 676f8c 0.00 : 676fb5: 0f 1f 00 nopl (%rax) : Assert(GetPrivateRefCount(buffer) > 0); : if (GetPrivateRefCount(buffer) != 1) : return false; : : /* Try to acquire lock */ : if (!ConditionalLockBuffer(buffer)) 0.00 : 676fb8: 89 df mov %ebx,%edi 0.00 : 676fba: e8 f1 d7 ff ff callq 6747b0 0.00 : 676fbf: 84 c0 test %al,%al 0.00 : 676fc1: 74 c7 je 676f8a : return false; : : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 676fc3: 48 63 c3 movslq %ebx,%rax 0.00 : 676fc6: 4c 8d 60 ff lea -0x1(%rax),%r12 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 676fca: b8 01 00 00 00 mov $0x1,%eax 0.00 : 676fcf: 49 c1 e4 06 shl $0x6,%r12 0.00 : 676fd3: 4c 03 25 26 8b 54 00 add 0x548b26(%rip),%r12 # bbfb00 : LockBufHdr(bufHdr); 0.00 : 676fda: 49 8d 7c 24 20 lea 0x20(%r12),%rdi 0.00 : 676fdf: f0 86 07 lock xchg %al,(%rdi) /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3182 25.00 : 676fe2: 84 c0 test %al,%al 0.00 : 676fe4: 75 32 jne 677018 : Assert(bufHdr->refcount > 0); : if (bufHdr->refcount == 1) 0.00 : 676fe6: 41 8b 44 24 18 mov 0x18(%r12),%eax 0.00 : 676feb: 83 f8 01 cmp $0x1,%eax 0.00 : 676fee: 74 18 je 677008 : return true; : } : : /* Failed, so release the lock */ : UnlockBufHdr(bufHdr); : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 676ff0: 31 f6 xor %esi,%esi : UnlockBufHdr(bufHdr); : return true; : } : : /* Failed, so release the lock */ : UnlockBufHdr(bufHdr); 0.00 : 676ff2: 41 c6 44 24 20 00 movb $0x0,0x20(%r12) : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 676ff8: 89 df mov %ebx,%edi 0.00 : 676ffa: e8 11 d7 ff ff callq 674710 0.00 : 676fff: 31 c0 xor %eax,%eax : return false; : } 0.00 : 677001: eb 89 jmp 676f8c 0.00 : 677003: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : LockBufHdr(bufHdr); : Assert(bufHdr->refcount > 0); : if (bufHdr->refcount == 1) : { : /* Successfully acquired exclusive lock with pincount 1 */ : UnlockBufHdr(bufHdr); 0.00 : 677008: 41 c6 44 24 20 00 movb $0x0,0x20(%r12) : : /* Failed, so release the lock */ : UnlockBufHdr(bufHdr); : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : return false; : } 0.00 : 67700e: e9 79 ff ff ff jmpq 676f8c 0.00 : 677013: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : /* Try to acquire lock */ : if (!ConditionalLockBuffer(buffer)) : return false; : : bufHdr = &BufferDescriptors[buffer - 1]; : LockBufHdr(bufHdr); 0.00 : 677018: ba 6e 0c 00 00 mov $0xc6e,%edx 0.00 : 67701d: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 677022: e8 19 90 01 00 callq 690040 0.00 : 677027: eb bd jmp 676fe6 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:441 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:441 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:443 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067bdd0 : : { : FSMAddress addr; : : addr.level = FSM_BOTTOM_LEVEL; : addr.logpageno = heapblk / SlotsPerFSMPage; : *slot = heapblk % SlotsPerFSMPage; /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:441 50.00 : 67bdd0: 89 f8 mov %edi,%eax 0.00 : 67bdd2: ba d7 dd b2 01 mov $0x1b2ddd7,%edx : /* : * Return the FSM location corresponding to given heap block. : */ : static FSMAddress : fsm_get_location(BlockNumber heapblk, uint16 *slot) : { 0.00 : 67bdd7: 55 push %rbp : FSMAddress addr; : : addr.level = FSM_BOTTOM_LEVEL; : addr.logpageno = heapblk / SlotsPerFSMPage; : *slot = heapblk % SlotsPerFSMPage; 0.00 : 67bdd8: f7 e2 mul %edx 0.00 : 67bdda: 89 f8 mov %edi,%eax : /* : * Return the FSM location corresponding to given heap block. : */ : static FSMAddress : fsm_get_location(BlockNumber heapblk, uint16 *slot) : { 0.00 : 67bddc: 48 89 e5 mov %rsp,%rbp : FSMAddress addr; : : addr.level = FSM_BOTTOM_LEVEL; : addr.logpageno = heapblk / SlotsPerFSMPage; : *slot = heapblk % SlotsPerFSMPage; 0.00 : 67bddf: 29 d0 sub %edx,%eax 0.00 : 67bde1: d1 e8 shr %eax 0.00 : 67bde3: 01 c2 add %eax,%edx 0.00 : 67bde5: c1 ea 0b shr $0xb,%edx 0.00 : 67bde8: 69 c2 e5 0f 00 00 imul $0xfe5,%edx,%eax 25.00 : 67bdee: 29 c7 sub %eax,%edi : : return addr; /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:443 25.00 : 67bdf0: 48 89 d0 mov %rdx,%rax : { : FSMAddress addr; : : addr.level = FSM_BOTTOM_LEVEL; : addr.logpageno = heapblk / SlotsPerFSMPage; : *slot = heapblk % SlotsPerFSMPage; 0.00 : 67bdf3: 66 89 3e mov %di,(%rsi) : : return addr; 0.00 : 67bdf6: 48 c1 e0 20 shl $0x20,%rax : } 0.00 : 67bdfa: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:377 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:377 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:392 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:393 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067c8e0 : : * Which category does a page need to have, to accommodate x bytes of data? : * While fsm_size_to_avail_cat() rounds down, this needs to round up. : */ : static uint8 : fsm_space_needed_to_cat(Size needed) : { 0.00 : 67c8e0: 55 push %rbp 25.00 : 67c8e1: 48 89 e5 mov %rsp,%rbp 0.00 : 67c8e4: 53 push %rbx 25.00 : 67c8e5: 48 89 fb mov %rdi,%rbx 0.00 : 67c8e8: 48 83 ec 08 sub $0x8,%rsp : int cat; : : /* Can't ask for more space than the highest category represents */ : if (needed > MaxFSMRequestSize) 0.00 : 67c8ec: 48 81 ff e0 1f 00 00 cmp $0x1fe0,%rdi 0.00 : 67c8f3: 77 19 ja 67c90e : elog(ERROR, "invalid FSM request size %zu", needed); : : if (needed == 0) 0.00 : 67c8f5: 48 85 ff test %rdi,%rdi 0.00 : 67c8f8: b8 01 00 00 00 mov $0x1,%eax 0.00 : 67c8fd: 74 08 je 67c907 : cat = (needed + FSM_CAT_STEP - 1) / FSM_CAT_STEP; : : if (cat > 255) : cat = 255; : : return (uint8) cat; 0.00 : 67c8ff: 48 8d 47 1f lea 0x1f(%rdi),%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:392 25.00 : 67c903: 48 c1 e8 05 shr $0x5,%rax : } 0.00 : 67c907: 48 83 c4 08 add $0x8,%rsp 0.00 : 67c90b: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:393 25.00 : 67c90c: c9 leaveq 0.00 : 67c90d: c3 retq : { : int cat; : : /* Can't ask for more space than the highest category represents */ : if (needed > MaxFSMRequestSize) : elog(ERROR, "invalid FSM request size %zu", needed); 0.00 : 67c90e: ba 00 ac 8a 00 mov $0x8aac00,%edx 0.00 : 67c913: be 7e 01 00 00 mov $0x17e,%esi 0.00 : 67c918: bf c3 ab 8a 00 mov $0x8aabc3,%edi 0.00 : 67c91d: e8 fe ea 0f 00 callq 77b420 0.00 : 67c922: 48 89 da mov %rbx,%rdx 0.00 : 67c925: be cf ab 8a 00 mov $0x8aabcf,%esi 0.00 : 67c92a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 67c92f: 31 c0 xor %eax,%eax 0.00 : 67c931: e8 fa e8 0f 00 callq 77b230 0.00 : 67c936: e8 95 cb de ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1417 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1417 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1458 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1446 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006889c0 : : */ : static void : CleanUpLock(LOCK *lock, PROCLOCK *proclock, : LockMethod lockMethodTable, uint32 hashcode, : bool wakeupNeeded) : { 0.00 : 6889c0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1417 25.00 : 6889c1: 48 89 e5 mov %rsp,%rbp 0.00 : 6889c4: 48 89 5d d8 mov %rbx,-0x28(%rbp) 25.00 : 6889c8: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 6889cc: 48 89 f3 mov %rsi,%rbx 0.00 : 6889cf: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 6889d3: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 6889d7: 41 89 ce mov %ecx,%r14d 0.00 : 6889da: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 6889de: 48 83 ec 30 sub $0x30,%rsp : /* : * If this was my last hold on this lock, delete my entry in the proclock : * table. : */ : if (proclock->holdMask == 0) 0.00 : 6889e2: 8b 4e 10 mov 0x10(%rsi),%ecx : */ : static void : CleanUpLock(LOCK *lock, PROCLOCK *proclock, : LockMethod lockMethodTable, uint32 hashcode, : bool wakeupNeeded) : { 0.00 : 6889e5: 49 89 fc mov %rdi,%r12 0.00 : 6889e8: 49 89 d7 mov %rdx,%r15 0.00 : 6889eb: 45 89 c5 mov %r8d,%r13d : /* : * If this was my last hold on this lock, delete my entry in the proclock : * table. : */ : if (proclock->holdMask == 0) 0.00 : 6889ee: 85 c9 test %ecx,%ecx 0.00 : 6889f0: 74 4e je 688a40 : HASH_REMOVE, : NULL)) : elog(PANIC, "proclock table corrupted"); : } : : if (lock->nRequested == 0) 0.00 : 6889f2: 41 8b 54 24 68 mov 0x68(%r12),%edx 0.00 : 6889f7: 85 d2 test %edx,%edx 0.00 : 6889f9: 0f 84 b1 00 00 00 je 688ab0 : hashcode, : HASH_REMOVE, : NULL)) : elog(PANIC, "lock table corrupted"); : } : else if (wakeupNeeded) 0.00 : 6889ff: 45 84 ed test %r13b,%r13b 0.00 : 688a02: 75 1c jne 688a20 : { : /* There are waiters on this lock, so wake them up. */ : ProcLockWakeup(lockMethodTable, lock); : } : } 0.00 : 688a04: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 688a08: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 688a0c: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 688a10: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 688a14: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 688a18: c9 leaveq /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1458 25.00 : 688a19: c3 retq 0.00 : 688a1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : elog(PANIC, "lock table corrupted"); : } : else if (wakeupNeeded) : { : /* There are waiters on this lock, so wake them up. */ : ProcLockWakeup(lockMethodTable, lock); 0.00 : 688a20: 4c 89 e6 mov %r12,%rsi 0.00 : 688a23: 4c 89 ff mov %r15,%rdi : } : } 0.00 : 688a26: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 688a2a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 688a2e: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 688a32: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 688a36: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 688a3a: c9 leaveq : elog(PANIC, "lock table corrupted"); : } : else if (wakeupNeeded) : { : /* There are waiters on this lock, so wake them up. */ : ProcLockWakeup(lockMethodTable, lock); 0.00 : 688a3b: e9 a0 3c 00 00 jmpq 68c6e0 : if (proclock->holdMask == 0) : { : uint32 proclock_hashcode; : : PROCLOCK_PRINT("CleanUpLock: deleting", proclock); : SHMQueueDelete(&proclock->lockLink); 0.00 : 688a40: 48 8d 7e 18 lea 0x18(%rsi),%rdi 0.00 : 688a44: e8 17 aa ff ff callq 683460 : SHMQueueDelete(&proclock->procLink); 0.00 : 688a49: 48 8d 7b 28 lea 0x28(%rbx),%rdi 0.00 : 688a4d: e8 0e aa ff ff callq 683460 : proclock_hashcode = ProcLockHashCode(&proclock->tag, hashcode); : if (!hash_search_with_hash_value(LockMethodProcLockHash, 0.00 : 688a52: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 688a56: 48 8b 3d ab 4e 4f 00 mov 0x4f4eab(%rip),%rdi # b7d908 0.00 : 688a5d: 45 31 c0 xor %r8d,%r8d 0.00 : 688a60: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 688a65: 48 89 de mov %rbx,%rsi 0.00 : 688a68: c1 e2 04 shl $0x4,%edx 0.00 : 688a6b: 44 31 f2 xor %r14d,%edx 0.00 : 688a6e: e8 dd b5 0f 00 callq 784050 0.00 : 688a73: 48 85 c0 test %rax,%rax 0.00 : 688a76: 0f 85 76 ff ff ff jne 6889f2 : (void *) &(proclock->tag), : proclock_hashcode, : HASH_REMOVE, : NULL)) : elog(PANIC, "proclock table corrupted"); 0.00 : 688a7c: ba 75 ca 8a 00 mov $0x8aca75,%edx 0.00 : 688a81: be 9b 05 00 00 mov $0x59b,%esi 0.00 : 688a86: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 688a8b: e8 90 29 0f 00 callq 77b420 0.00 : 688a90: be 10 c6 8a 00 mov $0x8ac610,%esi 0.00 : 688a95: bf 16 00 00 00 mov $0x16,%edi 0.00 : 688a9a: 31 c0 xor %eax,%eax 0.00 : 688a9c: e8 8f 27 0f 00 callq 77b230 0.00 : 688aa1: e8 2a 0a de ff callq 4694d0 0.00 : 688aa6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 688aad: 00 00 00 : * The caller just released the last lock, so garbage-collect the lock : * object. : */ : LOCK_PRINT("CleanUpLock: deleting", lock, 0); : Assert(SHMQueueEmpty(&(lock->procLocks))); : if (!hash_search_with_hash_value(LockMethodLockHash, 0.00 : 688ab0: 48 8b 3d 49 4e 4f 00 mov 0x4f4e49(%rip),%rdi # b7d900 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1446 25.00 : 688ab7: 45 31 c0 xor %r8d,%r8d 0.00 : 688aba: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 688abf: 44 89 f2 mov %r14d,%edx 0.00 : 688ac2: 4c 89 e6 mov %r12,%rsi 0.00 : 688ac5: e8 86 b5 0f 00 callq 784050 0.00 : 688aca: 48 85 c0 test %rax,%rax 0.00 : 688acd: 0f 85 31 ff ff ff jne 688a04 : (void *) &(lock->tag), : hashcode, : HASH_REMOVE, : NULL)) : elog(PANIC, "lock table corrupted"); 0.00 : 688ad3: ba 75 ca 8a 00 mov $0x8aca75,%edx 0.00 : 688ad8: be ab 05 00 00 mov $0x5ab,%esi 0.00 : 688add: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 688ae2: e8 39 29 0f 00 callq 77b420 0.00 : 688ae7: be 14 c6 8a 00 mov $0x8ac614,%esi 0.00 : 688aec: bf 16 00 00 00 mov $0x16,%edi 0.00 : 688af1: 31 c0 xor %eax,%eax 0.00 : 688af3: e8 38 27 0f 00 callq 77b230 0.00 : 688af8: e8 d3 09 de ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1477 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1485 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1485 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1486 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068a2f0 : : * We expect that LockAcquire made sure there is room to add a new : * ResourceOwner entry. : */ : static void : GrantLockLocal(LOCALLOCK *locallock, ResourceOwner owner) : { 0.00 : 68a2f0: 55 push %rbp : : Assert(locallock->numLockOwners < locallock->maxLockOwners); : /* Count the total */ : locallock->nLocks++; : /* Count the per-owner lock */ : for (i = 0; i < locallock->numLockOwners; i++) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1477 25.00 : 68a2f1: 44 8b 4f 38 mov 0x38(%rdi),%r9d 0.00 : 68a2f5: 31 c0 xor %eax,%eax : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; : int i; : : Assert(locallock->numLockOwners < locallock->maxLockOwners); : /* Count the total */ : locallock->nLocks++; 0.00 : 68a2f7: 48 83 47 30 01 addq $0x1,0x30(%rdi) : * We expect that LockAcquire made sure there is room to add a new : * ResourceOwner entry. : */ : static void : GrantLockLocal(LOCALLOCK *locallock, ResourceOwner owner) : { 0.00 : 68a2fc: 49 89 f0 mov %rsi,%r8 : LOCALLOCKOWNER *lockOwners = locallock->lockOwners; 0.00 : 68a2ff: 4c 8b 57 48 mov 0x48(%rdi),%r10 : * We expect that LockAcquire made sure there is room to add a new : * ResourceOwner entry. : */ : static void : GrantLockLocal(LOCALLOCK *locallock, ResourceOwner owner) : { 0.00 : 68a303: 48 89 e5 mov %rsp,%rbp : : Assert(locallock->numLockOwners < locallock->maxLockOwners); : /* Count the total */ : locallock->nLocks++; : /* Count the per-owner lock */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68a306: 45 85 c9 test %r9d,%r9d 0.00 : 68a309: 7e 33 jle 68a33e : { : if (lockOwners[i].owner == owner) 0.00 : 68a30b: 49 39 32 cmp %rsi,(%r10) 0.00 : 68a30e: 74 5b je 68a36b : { : lockOwners[i].nLocks++; 0.00 : 68a310: 49 8d 52 10 lea 0x10(%r10),%rdx 0.00 : 68a314: 31 c9 xor %ecx,%ecx 0.00 : 68a316: eb 17 jmp 68a32f 0.00 : 68a318: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68a31f: 00 : /* Count the total */ : locallock->nLocks++; : /* Count the per-owner lock */ : for (i = 0; i < locallock->numLockOwners; i++) : { : if (lockOwners[i].owner == owner) 0.00 : 68a320: 48 8b 02 mov (%rdx),%rax 0.00 : 68a323: 48 89 d6 mov %rdx,%rsi 0.00 : 68a326: 48 83 c2 10 add $0x10,%rdx 0.00 : 68a32a: 4c 39 c0 cmp %r8,%rax 0.00 : 68a32d: 74 39 je 68a368 : : Assert(locallock->numLockOwners < locallock->maxLockOwners); : /* Count the total */ : locallock->nLocks++; : /* Count the per-owner lock */ : for (i = 0; i < locallock->numLockOwners; i++) 0.00 : 68a32f: 83 c1 01 add $0x1,%ecx 0.00 : 68a332: 44 39 c9 cmp %r9d,%ecx 0.00 : 68a335: 7c e9 jl 68a320 0.00 : 68a337: 48 63 c1 movslq %ecx,%rax 0.00 : 68a33a: 48 c1 e0 04 shl $0x4,%rax : { : lockOwners[i].nLocks++; : return; : } : } : lockOwners[i].owner = owner; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1485 25.00 : 68a33e: 49 8d 04 02 lea (%r10,%rax,1),%rax 25.00 : 68a342: 4c 89 00 mov %r8,(%rax) : lockOwners[i].nLocks = 1; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1486 25.00 : 68a345: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 68a34c: 00 : locallock->numLockOwners++; 0.00 : 68a34d: 83 47 38 01 addl $0x1,0x38(%rdi) : if (owner != NULL) 0.00 : 68a351: 4d 85 c0 test %r8,%r8 0.00 : 68a354: 74 1a je 68a370 : ResourceOwnerRememberLock(owner, locallock); : } 0.00 : 68a356: c9 leaveq : } : lockOwners[i].owner = owner; : lockOwners[i].nLocks = 1; : locallock->numLockOwners++; : if (owner != NULL) : ResourceOwnerRememberLock(owner, locallock); 0.00 : 68a357: 48 89 fe mov %rdi,%rsi 0.00 : 68a35a: 4c 89 c7 mov %r8,%rdi 0.00 : 68a35d: e9 5e fe 10 00 jmpq 79a1c0 0.00 : 68a362: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* Count the total */ : locallock->nLocks++; : /* Count the per-owner lock */ : for (i = 0; i < locallock->numLockOwners; i++) : { : if (lockOwners[i].owner == owner) 0.00 : 68a368: 49 89 f2 mov %rsi,%r10 : { : lockOwners[i].nLocks++; 0.00 : 68a36b: 49 83 42 08 01 addq $0x1,0x8(%r10) : lockOwners[i].owner = owner; : lockOwners[i].nLocks = 1; : locallock->numLockOwners++; : if (owner != NULL) : ResourceOwnerRememberLock(owner, locallock); : } 0.00 : 68a370: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/proc.c:923 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/proc.c:923 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/proc.c:926 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068d160 : : /* : * ProcQueueInit -- initialize a shared memory process queue : */ : void : ProcQueueInit(PROC_QUEUE *queue) : { 0.00 : 68d160: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/proc.c:923 50.00 : 68d161: 48 89 e5 mov %rsp,%rbp 25.00 : 68d164: 53 push %rbx 0.00 : 68d165: 48 89 fb mov %rdi,%rbx 0.00 : 68d168: 48 83 ec 08 sub $0x8,%rsp : SHMQueueInit(&(queue->links)); 0.00 : 68d16c: e8 af 62 ff ff callq 683420 : queue->size = 0; 0.00 : 68d171: c7 43 10 00 00 00 00 movl $0x0,0x10(%rbx) : } 0.00 : 68d178: 48 83 c4 08 add $0x8,%rsp 0.00 : 68d17c: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/proc.c:926 25.00 : 68d17d: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1113 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1113 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1167 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068efa0 : : * : * If successful, cancel/die interrupts are held off until lock release. : */ : bool : LWLockConditionalAcquire(LWLock *lock, LWLockMode mode) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1113 50.00 : 68efa0: 55 push %rbp 0.00 : 68efa1: 48 89 e5 mov %rsp,%rbp 0.00 : 68efa4: 41 55 push %r13 0.00 : 68efa6: 41 54 push %r12 0.00 : 68efa8: 41 89 f4 mov %esi,%r12d 0.00 : 68efab: 53 push %rbx 0.00 : 68efac: 48 89 fb mov %rdi,%rbx 25.00 : 68efaf: 48 83 ec 18 sub $0x18,%rsp : AssertArg(mode == LW_SHARED || mode == LW_EXCLUSIVE); : : PRINT_LWDEBUG("LWLockConditionalAcquire", lock, mode); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) 0.00 : 68efb3: 81 3d 4b ea 4e 00 c7 cmpl $0xc7,0x4eea4b(%rip) # b7da08 0.00 : 68efba: 00 00 00 0.00 : 68efbd: 0f 8f 89 00 00 00 jg 68f04c : /* : * Lock out cancel/die interrupts until we exit the code section protected : * by the LWLock. This ensures that interrupts will not interfere with : * manipulations of data structures in shared memory. : */ : HOLD_INTERRUPTS(); 0.00 : 68efc3: 8b 05 cf b0 52 00 mov 0x52b0cf(%rip),%eax # bba098 0.00 : 68efc9: 4c 8d 6d e7 lea -0x19(%rbp),%r13 0.00 : 68efcd: 83 c0 01 add $0x1,%eax 0.00 : 68efd0: 89 05 c2 b0 52 00 mov %eax,0x52b0c2(%rip) # bba098 0.00 : 68efd6: eb 10 jmp 68efe8 0.00 : 68efd8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68efdf: 00 : * somebody else certainly has the lock) or till we got it. : * : * We cannot rely on the two-step lock-acquisition protocol as in : * LWLockAcquire because we're not using it. : */ : if (potentially_spurious) 0.00 : 68efe0: 80 7d e7 00 cmpb $0x0,-0x19(%rbp) 0.00 : 68efe4: 74 4a je 68f030 : { : /* : * Adding a PAUSE in the spin delay loop is demonstrably a no-op on : * Opteron, but it may be of some use on EM64T, so we keep it. : */ : __asm__ __volatile__( 0.00 : 68efe6: f3 90 pause : /* : * We need to check whether it's possible that we prevented somebody else : * from acquiring the lock. If so, potentially_spurious will be set, and : * we'll retry. : */ : mustwait = LWLockAttemptLock(lock, mode, &potentially_spurious); 0.00 : 68efe8: 4c 89 ea mov %r13,%rdx 0.00 : 68efeb: 44 89 e6 mov %r12d,%esi 0.00 : 68efee: 48 89 df mov %rbx,%rdi 0.00 : 68eff1: e8 ca fe ff ff callq 68eec0 : : if (mustwait) 0.00 : 68eff6: 84 c0 test %al,%al 0.00 : 68eff8: 75 e6 jne 68efe0 : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_FAIL(T_NAME(lock), T_ID(lock), mode); : } : else : { : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68effa: 8b 15 08 ea 4e 00 mov 0x4eea08(%rip),%edx # b7da08 0.00 : 68f000: 48 63 c2 movslq %edx,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68f003: 83 c2 01 add $0x1,%edx : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_FAIL(T_NAME(lock), T_ID(lock), mode); : } : else : { : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68f006: 48 c1 e0 04 shl $0x4,%rax : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68f00a: 89 15 f8 e9 4e 00 mov %edx,0x4ee9f8(%rip) # b7da08 : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_FAIL(T_NAME(lock), T_ID(lock), mode); : } : else : { : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; 0.00 : 68f010: 48 89 98 40 da b7 00 mov %rbx,0xb7da40(%rax) : held_lwlocks[num_held_lwlocks++].mode = mode; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1167 25.00 : 68f017: 44 89 a0 48 da b7 00 mov %r12d,0xb7da48(%rax) : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE(T_NAME(lock), T_ID(lock), mode); : } : return !mustwait; : } 0.00 : 68f01e: 48 83 c4 18 add $0x18,%rsp 0.00 : 68f022: 5b pop %rbx 0.00 : 68f023: 41 5c pop %r12 : } : else : { : /* Add lock to list of locks held by this backend */ : held_lwlocks[num_held_lwlocks].lock = lock; : held_lwlocks[num_held_lwlocks++].mode = mode; 0.00 : 68f025: b8 01 00 00 00 mov $0x1,%eax : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE(T_NAME(lock), T_ID(lock), mode); : } : return !mustwait; : } 0.00 : 68f02a: 41 5d pop %r13 0.00 : 68f02c: c9 leaveq 0.00 : 68f02d: c3 retq 0.00 : 68f02e: 66 90 xchg %ax,%ax : SPIN_DELAY(); : goto retry; : } : : /* Failed to get lock, so release interrupt holdoff */ : RESUME_INTERRUPTS(); 0.00 : 68f030: 8b 05 62 b0 52 00 mov 0x52b062(%rip),%eax # bba098 0.00 : 68f036: 83 e8 01 sub $0x1,%eax 0.00 : 68f039: 89 05 59 b0 52 00 mov %eax,0x52b059(%rip) # bba098 : held_lwlocks[num_held_lwlocks].lock = lock; : held_lwlocks[num_held_lwlocks++].mode = mode; : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE(T_NAME(lock), T_ID(lock), mode); : } : return !mustwait; : } 0.00 : 68f03f: 48 83 c4 18 add $0x18,%rsp : SPIN_DELAY(); : goto retry; : } : : /* Failed to get lock, so release interrupt holdoff */ : RESUME_INTERRUPTS(); 0.00 : 68f043: 31 c0 xor %eax,%eax : held_lwlocks[num_held_lwlocks].lock = lock; : held_lwlocks[num_held_lwlocks++].mode = mode; : TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE(T_NAME(lock), T_ID(lock), mode); : } : return !mustwait; : } 0.00 : 68f045: 5b pop %rbx 0.00 : 68f046: 41 5c pop %r12 0.00 : 68f048: 41 5d pop %r13 0.00 : 68f04a: c9 leaveq 0.00 : 68f04b: c3 retq : : PRINT_LWDEBUG("LWLockConditionalAcquire", lock, mode); : : /* Ensure we will have room to remember the lock */ : if (num_held_lwlocks >= MAX_SIMUL_LWLOCKS) : elog(ERROR, "too many LWLocks taken"); 0.00 : 68f04c: ba 50 d1 8a 00 mov $0x8ad150,%edx 0.00 : 68f051: be 63 04 00 00 mov $0x463,%esi 0.00 : 68f056: bf 85 d0 8a 00 mov $0x8ad085,%edi 0.00 : 68f05b: e8 c0 c3 0e 00 callq 77b420 0.00 : 68f060: be 8e d0 8a 00 mov $0x8ad08e,%esi 0.00 : 68f065: bf 14 00 00 00 mov $0x14,%edi 0.00 : 68f06a: 31 c0 xor %eax,%eax 0.00 : 68f06c: e8 bf c1 0e 00 callq 77b230 0.00 : 68f071: e8 5a a4 dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1318 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068f800 : : * Note: this function ignores shared lock holders; if the lock is held : * in shared mode, returns 'true'. : */ : bool : LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval) : { 0.00 : 68f800: 55 push %rbp : * : * XXX: the caller uses a spinlock before this, so we don't need a memory : * barrier here as far as the current usage is concerned. But that might : * not be safe in general. : */ : if (pg_atomic_read_u32(&lock->lockcount) == 0) 0.00 : 68f801: 48 8d 47 04 lea 0x4(%rdi),%rax : * Note: this function ignores shared lock holders; if the lock is held : * in shared mode, returns 'true'. : */ : bool : LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval) : { 0.00 : 68f805: 48 89 e5 mov %rsp,%rbp 0.00 : 68f808: 41 57 push %r15 0.00 : 68f80a: 41 56 push %r14 0.00 : 68f80c: 49 89 fe mov %rdi,%r14 0.00 : 68f80f: 41 55 push %r13 0.00 : 68f811: 41 54 push %r12 0.00 : 68f813: 53 push %rbx 0.00 : 68f814: 48 83 ec 28 sub $0x28,%rsp 0.00 : 68f818: 48 89 55 c0 mov %rdx,-0x40(%rbp) 0.00 : 68f81c: 48 89 75 c8 mov %rsi,-0x38(%rbp) 0.00 : 68f820: 48 89 4d b8 mov %rcx,-0x48(%rbp) : * : * XXX: the caller uses a spinlock before this, so we don't need a memory : * barrier here as far as the current usage is concerned. But that might : * not be safe in general. : */ : if (pg_atomic_read_u32(&lock->lockcount) == 0) 0.00 : 68f824: 48 89 45 d0 mov %rax,-0x30(%rbp) 0.00 : 68f828: ba 01 00 00 00 mov $0x1,%edx : #ifndef PG_HAVE_ATOMIC_READ_U32 : #define PG_HAVE_ATOMIC_READ_U32 : static inline uint32 : pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) : { : return *(&ptr->value); 0.00 : 68f82d: 8b 47 04 mov 0x4(%rdi),%eax : * in shared mode, returns 'true'. : */ : bool : LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval) : { : PGPROC *proc = MyProc; /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1318 100.00 : 68f830: 4c 8b 2d 11 e1 4e 00 mov 0x4ee111(%rip),%r13 # b7d948 : * : * XXX: the caller uses a spinlock before this, so we don't need a memory : * barrier here as far as the current usage is concerned. But that might : * not be safe in general. : */ : if (pg_atomic_read_u32(&lock->lockcount) == 0) 0.00 : 68f837: 85 c0 test %eax,%eax 0.00 : 68f839: 0f 84 d1 00 00 00 je 68f910 : /* : * Lock out cancel/die interrupts while we sleep on the lock. There is no : * cleanup mechanism to remove us from the wait queue if we got : * interrupted. : */ : HOLD_INTERRUPTS(); 0.00 : 68f83f: 8b 05 53 a8 52 00 mov 0x52a853(%rip),%eax # bba098 0.00 : 68f845: 83 c0 01 add $0x1,%eax 0.00 : 68f848: 89 05 4a a8 52 00 mov %eax,0x52a84a(%rip) # bba098 0.00 : 68f84e: 8b 47 04 mov 0x4(%rdi),%eax : bool mustwait; : uint64 value; : : mustwait = pg_atomic_read_u32(&lock->lockcount) != 0; : : if (mustwait) 0.00 : 68f851: 85 c0 test %eax,%eax 0.00 : 68f853: 0f 84 a6 00 00 00 je 68f8ff : LW_EXCLUSIVE); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); 0.00 : 68f859: 4d 8d 65 10 lea 0x10(%r13),%r12 : if (!proc->lwWaiting) : break; : extraWaits++; : } : : pg_atomic_fetch_sub_u32(&lock->nwaiters, 1); 0.00 : 68f85d: 4c 8d 7f 08 lea 0x8(%rdi),%r15 0.00 : 68f861: 31 db xor %ebx,%ebx 0.00 : 68f863: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 68f868: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68f86d: f0 41 86 06 lock xchg %al,(%r14) : * bit reads/stores. : */ : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.00 : 68f871: 84 c0 test %al,%al 0.00 : 68f873: 0f 85 af 00 00 00 jne 68f928 : : /* : * XXX: We can significantly optimize this on platforms with 64bit : * atomics. : */ : value = *valptr; 0.00 : 68f879: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 68f87d: 48 8b 02 mov (%rdx),%rax : if (value != oldval) 0.00 : 68f880: 48 3b 45 c0 cmp -0x40(%rbp),%rax 0.00 : 68f884: ba 01 00 00 00 mov $0x1,%edx 0.00 : 68f889: 74 09 je 68f894 : { : result = false; : mustwait = false; : *newval = value; 0.00 : 68f88b: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 68f88f: 48 89 02 mov %rax,(%rdx) 0.00 : 68f892: 31 d2 xor %edx,%edx : SpinLockRelease(&lock->mutex); : } : else : mustwait = false; : : if (!mustwait) 0.00 : 68f894: 84 d2 test %dl,%dl : mustwait = false; : *newval = value; : } : else : mustwait = true; : SpinLockRelease(&lock->mutex); 0.00 : 68f896: 41 c6 06 00 movb $0x0,(%r14) : } : else : mustwait = false; : : if (!mustwait) 0.00 : 68f89a: 74 5f je 68f8fb : * Add myself to wait queue. Note that this is racy, somebody else : * could wakeup before we're finished queuing. : * NB: We're using nearly the same twice-in-a-row lock acquisition : * protocol as LWLockAcquire(). Check its comments for details. : */ : LWLockQueueSelf(lock, LW_WAIT_UNTIL_FREE); 0.00 : 68f89c: be 02 00 00 00 mov $0x2,%esi 0.00 : 68f8a1: 4c 89 f7 mov %r14,%rdi 0.00 : 68f8a4: e8 d7 f7 ff ff callq 68f080 0.00 : 68f8a9: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 68f8ad: 8b 02 mov (%rdx),%eax : * lock's state. : */ : mustwait = pg_atomic_read_u32(&lock->lockcount) != 0; : : /* ok, grabbed the lock the second time round, need to undo queueing */ : if (!mustwait) 0.00 : 68f8af: 85 c0 test %eax,%eax 0.00 : 68f8b1: 75 10 jne 68f8c3 0.00 : 68f8b3: e9 87 00 00 00 jmpq 68f93f 0.00 : 68f8b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 68f8bf: 00 : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68f8c0: 83 c3 01 add $0x1,%ebx : LW_EXCLUSIVE); : : for (;;) : { : /* "false" means cannot accept cancel/die interrupt here. */ : PGSemaphoreLock(&proc->sem, false); 0.00 : 68f8c3: 31 f6 xor %esi,%esi 0.00 : 68f8c5: 4c 89 e7 mov %r12,%rdi 0.00 : 68f8c8: e8 53 88 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68f8cd: 41 80 7d 41 00 cmpb $0x0,0x41(%r13) 0.00 : 68f8d2: 75 ec jne 68f8c0 : #define PG_HAVE_ATOMIC_FETCH_ADD_U32 : static inline uint32 : pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) : { : uint32 res; : __asm__ __volatile__( 0.00 : 68f8d4: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 68f8d9: f0 41 0f c1 07 lock xadd %eax,(%r15) 0.00 : 68f8de: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 68f8e2: 8b 02 mov (%rdx),%eax : bool mustwait; : uint64 value; : : mustwait = pg_atomic_read_u32(&lock->lockcount) != 0; : : if (mustwait) 0.00 : 68f8e4: 85 c0 test %eax,%eax 0.00 : 68f8e6: 75 80 jne 68f868 0.00 : 68f8e8: eb 11 jmp 68f8fb 0.00 : 68f8ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) : PGSemaphoreUnlock(&proc->sem); 0.00 : 68f8f0: 4c 89 e7 mov %r12,%rdi 0.00 : 68f8f3: 83 eb 01 sub $0x1,%ebx 0.00 : 68f8f6: e8 95 87 fa ff callq 638090 : TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(lock), T_ID(lock), LW_EXCLUSIVE); : : /* : * Fix the process wait semaphore's count for any absorbed wakeups. : */ : while (extraWaits-- > 0) 0.00 : 68f8fb: 85 db test %ebx,%ebx 0.00 : 68f8fd: 7f f1 jg 68f8f0 : PGSemaphoreUnlock(&proc->sem); : : /* : * Now okay to allow cancel/die interrupts. : */ : RESUME_INTERRUPTS(); 0.00 : 68f8ff: 8b 05 93 a7 52 00 mov 0x52a793(%rip),%eax # bba098 0.00 : 68f905: 31 d2 xor %edx,%edx 0.00 : 68f907: 83 e8 01 sub $0x1,%eax 0.00 : 68f90a: 89 05 88 a7 52 00 mov %eax,0x52a788(%rip) # bba098 : : return result; : } 0.00 : 68f910: 48 83 c4 28 add $0x28,%rsp 0.00 : 68f914: 89 d0 mov %edx,%eax 0.00 : 68f916: 5b pop %rbx 0.00 : 68f917: 41 5c pop %r12 0.00 : 68f919: 41 5d pop %r13 0.00 : 68f91b: 41 5e pop %r14 0.00 : 68f91d: 41 5f pop %r15 0.00 : 68f91f: c9 leaveq 0.00 : 68f920: c3 retq 0.00 : 68f921: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * bit reads/stores. : */ : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.00 : 68f928: ba 55 05 00 00 mov $0x555,%edx 0.00 : 68f92d: be 85 d0 8a 00 mov $0x8ad085,%esi 0.00 : 68f932: 4c 89 f7 mov %r14,%rdi 0.00 : 68f935: e8 06 07 00 00 callq 690040 0.00 : 68f93a: e9 3a ff ff ff jmpq 68f879 : #ifdef LWLOCK_STATS : lwstats->dequeue_self_count++; : #endif : LOG_LWDEBUG("LWLockWaitForVar", lock, "free, undoing queue"); : : if (!LWLockDequeueSelf(lock)) 0.00 : 68f93f: 4c 89 f7 mov %r14,%rdi 0.00 : 68f942: e8 89 f8 ff ff callq 68f1d0 0.00 : 68f947: 84 c0 test %al,%al 0.00 : 68f949: 74 08 je 68f953 0.00 : 68f94b: eb ae jmp 68f8fb 0.00 : 68f94d: 0f 1f 00 nopl (%rax) : for (;;) : { : PGSemaphoreLock(&proc->sem, false); : if (!proc->lwWaiting) : break; : extraWaits++; 0.00 : 68f950: 83 c3 01 add $0x1,%ebx : * for the correct wakeup, otherwise our ->lwWaiting would get : * reset at some inconvenient point later. : */ : for (;;) : { : PGSemaphoreLock(&proc->sem, false); 0.00 : 68f953: 31 f6 xor %esi,%esi 0.00 : 68f955: 4c 89 e7 mov %r12,%rdi 0.00 : 68f958: e8 c3 87 fa ff callq 638120 : if (!proc->lwWaiting) 0.00 : 68f95d: 41 80 7d 41 00 cmpb $0x0,0x41(%r13) 0.00 : 68f962: 75 ec jne 68f950 0.00 : 68f964: eb 95 jmp 68f8fb Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 75.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:96 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:96 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000690040 : : /* : * s_lock(lock) - platform-independent portion of waiting for a spinlock. : */ : int : s_lock(volatile slock_t *lock, const char *file, int line) : { 0.00 : 690040: 55 push %rbp 0.00 : 690041: 48 89 e5 mov %rsp,%rbp 0.00 : 690044: 41 57 push %r15 : if (++spins >= spins_per_delay) : { : if (++delays > NUM_DELAYS) : s_lock_stuck(lock, file, line); : : if (cur_delay == 0) /* first time to delay? */ 0.00 : 690046: 41 bf e8 03 00 00 mov $0x3e8,%r15d : /* : * s_lock(lock) - platform-independent portion of waiting for a spinlock. : */ : int : s_lock(volatile slock_t *lock, const char *file, int line) : { 0.00 : 69004c: 41 56 push %r14 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 69004e: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 690054: 41 55 push %r13 0.00 : 690056: 45 31 ed xor %r13d,%r13d 0.00 : 690059: 41 54 push %r12 0.00 : 69005b: 45 31 e4 xor %r12d,%r12d 0.00 : 69005e: 53 push %rbx 0.00 : 69005f: 48 89 fb mov %rdi,%rbx 0.00 : 690062: 48 83 ec 18 sub $0x18,%rsp 0.00 : 690066: 48 89 75 c8 mov %rsi,-0x38(%rbp) 0.00 : 69006a: 89 55 c4 mov %edx,-0x3c(%rbp) 0.00 : 69006d: 0f 1f 00 nopl (%rax) : : /* increase delay by a random fraction between 1X and 2X */ : cur_delay += (int) (cur_delay * : ((double) random() / (double) MAX_RANDOM_VALUE) + 0.5); : /* wrap back to minimum delay when max is exceeded */ : if (cur_delay > MAX_DELAY_USEC) 0.00 : 690070: 31 d2 xor %edx,%edx 0.00 : 690072: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : int spins = 0; : int delays = 0; : int cur_delay = 0; : : while (TAS_SPIN(lock)) 0.00 : 690078: 0f b6 03 movzbl (%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/s_lock.c:96 75.00 : 69007b: 84 c0 test %al,%al 0.00 : 69007d: 75 0e jne 69008d 0.00 : 69007f: 44 89 f0 mov %r14d,%eax 0.00 : 690082: f0 86 03 lock xchg %al,(%rbx) 25.00 : 690085: 84 c0 test %al,%al 0.00 : 690087: 0f 84 a3 00 00 00 je 690130 : { : /* : * Adding a PAUSE in the spin delay loop is demonstrably a no-op on : * Opteron, but it may be of some use on EM64T, so we keep it. : */ : __asm__ __volatile__( 0.00 : 69008d: f3 90 pause : { : /* CPU-specific delay each time through the loop */ : SPIN_DELAY(); : : /* Block the process every spins_per_delay tries */ : if (++spins >= spins_per_delay) 0.00 : 69008f: 83 c2 01 add $0x1,%edx 0.00 : 690092: 3b 15 40 86 4d 00 cmp 0x4d8640(%rip),%edx # b686d8 0.00 : 690098: 7c de jl 690078 : { : if (++delays > NUM_DELAYS) 0.00 : 69009a: 41 83 c5 01 add $0x1,%r13d 0.00 : 69009e: 41 81 fd e9 03 00 00 cmp $0x3e9,%r13d 0.00 : 6900a5: 0f 84 eb 00 00 00 je 690196 : s_lock_stuck(lock, file, line); : : if (cur_delay == 0) /* first time to delay? */ 0.00 : 6900ab: 45 85 e4 test %r12d,%r12d 0.00 : 6900ae: 75 68 jne 690118 0.00 : 6900b0: 48 b8 00 00 00 00 00 movabs $0x408f400000000000,%rax 0.00 : 6900b7: 40 8f 40 0.00 : 6900ba: 66 41 bc e8 03 mov $0x3e8,%r12w 0.00 : 6900bf: bf e8 03 00 00 mov $0x3e8,%edi 0.00 : 6900c4: 48 89 45 d0 mov %rax,-0x30(%rbp) : cur_delay = MIN_DELAY_USEC; : : pg_usleep(cur_delay); 0.00 : 6900c8: e8 83 c6 11 00 callq 7ac750 : fprintf(stdout, "*"); : fflush(stdout); : #endif : : /* increase delay by a random fraction between 1X and 2X */ : cur_delay += (int) (cur_delay * 0.00 : 6900cd: e8 ce 9d dd ff callq 469ea0 0.00 : 6900d2: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 6900d7: f2 0f 5e 05 39 12 12 divsd 0x121239(%rip),%xmm0 # 7b1318 <__func__.11700+0x18> 0.00 : 6900de: 00 0.00 : 6900df: f2 0f 59 45 d0 mulsd -0x30(%rbp),%xmm0 0.00 : 6900e4: f2 0f 11 45 d0 movsd %xmm0,-0x30(%rbp) 0.00 : 6900e9: f2 0f 10 05 f7 78 1e movsd 0x1e78f7(%rip),%xmm0 # 8779e8 <__func__.20024+0x28> 0.00 : 6900f0: 00 0.00 : 6900f1: f2 0f 58 45 d0 addsd -0x30(%rbp),%xmm0 0.00 : 6900f6: f2 0f 2c c0 cvttsd2si %xmm0,%eax 0.00 : 6900fa: f2 0f 11 45 d0 movsd %xmm0,-0x30(%rbp) 0.00 : 6900ff: 41 01 c4 add %eax,%r12d : ((double) random() / (double) MAX_RANDOM_VALUE) + 0.5); : /* wrap back to minimum delay when max is exceeded */ : if (cur_delay > MAX_DELAY_USEC) 0.00 : 690102: 41 81 fc 41 42 0f 00 cmp $0xf4241,%r12d 0.00 : 690109: 45 0f 4d e7 cmovge %r15d,%r12d 0.00 : 69010d: e9 5e ff ff ff jmpq 690070 0.00 : 690112: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (++spins >= spins_per_delay) : { : if (++delays > NUM_DELAYS) : s_lock_stuck(lock, file, line); : : if (cur_delay == 0) /* first time to delay? */ 0.00 : 690118: f2 41 0f 2a c4 cvtsi2sd %r12d,%xmm0 0.00 : 69011d: 49 63 fc movslq %r12d,%rdi 0.00 : 690120: f2 0f 11 45 d0 movsd %xmm0,-0x30(%rbp) 0.00 : 690125: eb a1 jmp 6900c8 0.00 : 690127: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 69012e: 00 00 : * average these observations across multiple backends, since it's : * relatively rare for this function to even get entered, and so a single : * backend might not live long enough to converge on a good value. That : * is handled by the two routines below. : */ : if (cur_delay == 0) 0.00 : 690130: 45 85 e4 test %r12d,%r12d 0.00 : 690133: 74 3b je 690170 : if (spins_per_delay < MAX_SPINS_PER_DELAY) : spins_per_delay = Min(spins_per_delay + 100, MAX_SPINS_PER_DELAY); : } : else : { : if (spins_per_delay > MIN_SPINS_PER_DELAY) 0.00 : 690135: 8b 05 9d 85 4d 00 mov 0x4d859d(%rip),%eax # b686d8 0.00 : 69013b: 83 f8 0a cmp $0xa,%eax 0.00 : 69013e: 7e 14 jle 690154 : spins_per_delay = Max(spins_per_delay - 1, MIN_SPINS_PER_DELAY); 0.00 : 690140: 8d 50 ff lea -0x1(%rax),%edx 0.00 : 690143: b8 0a 00 00 00 mov $0xa,%eax 0.00 : 690148: 83 fa 09 cmp $0x9,%edx 0.00 : 69014b: 0f 4f c2 cmovg %edx,%eax 0.00 : 69014e: 89 05 84 85 4d 00 mov %eax,0x4d8584(%rip) # b686d8 : } : return delays; : } 0.00 : 690154: 48 83 c4 18 add $0x18,%rsp 0.00 : 690158: 44 89 e8 mov %r13d,%eax 0.00 : 69015b: 5b pop %rbx 0.00 : 69015c: 41 5c pop %r12 0.00 : 69015e: 41 5d pop %r13 0.00 : 690160: 41 5e pop %r14 0.00 : 690162: 41 5f pop %r15 0.00 : 690164: c9 leaveq 0.00 : 690165: c3 retq 0.00 : 690166: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 69016d: 00 00 00 : * is handled by the two routines below. : */ : if (cur_delay == 0) : { : /* we never had to delay */ : if (spins_per_delay < MAX_SPINS_PER_DELAY) 0.00 : 690170: 8b 05 62 85 4d 00 mov 0x4d8562(%rip),%eax # b686d8 0.00 : 690176: 3d e7 03 00 00 cmp $0x3e7,%eax 0.00 : 69017b: 7f d7 jg 690154 : spins_per_delay = Min(spins_per_delay + 100, MAX_SPINS_PER_DELAY); 0.00 : 69017d: 8d 50 64 lea 0x64(%rax),%edx 0.00 : 690180: b8 e8 03 00 00 mov $0x3e8,%eax 0.00 : 690185: 81 fa e8 03 00 00 cmp $0x3e8,%edx 0.00 : 69018b: 0f 4e c2 cmovle %edx,%eax 0.00 : 69018e: 89 05 44 85 4d 00 mov %eax,0x4d8544(%rip) # b686d8 0.00 : 690194: eb be jmp 690154 : fprintf(stderr, : "\nStuck spinlock (%p) detected at %s:%d.\n", : lock, file, line); : exit(1); : #else : elog(PANIC, "stuck spinlock (%p) detected at %s:%d", 0.00 : 690196: ba c6 d1 8a 00 mov $0x8ad1c6,%edx 0.00 : 69019b: be 2a 00 00 00 mov $0x2a,%esi 0.00 : 6901a0: bf 91 d1 8a 00 mov $0x8ad191,%edi 0.00 : 6901a5: e8 76 b2 0e 00 callq 77b420 0.00 : 6901aa: 44 8b 45 c4 mov -0x3c(%rbp),%r8d 0.00 : 6901ae: 48 8b 4d c8 mov -0x38(%rbp),%rcx 0.00 : 6901b2: 48 89 da mov %rbx,%rdx 0.00 : 6901b5: be a0 d1 8a 00 mov $0x8ad1a0,%esi 0.00 : 6901ba: bf 16 00 00 00 mov $0x16,%edi 0.00 : 6901bf: 31 c0 xor %eax,%eax 0.00 : 6901c1: e8 6a b0 0e 00 callq 77b230 0.00 : 6901c6: e8 05 93 dd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:416 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:416 25.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:420 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000694d10 : : } itemIdSortData; : typedef itemIdSortData *itemIdSort; : : static int : itemoffcompare(const void *itemidp1, const void *itemidp2) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:416 25.00 : 694d10: 55 push %rbp 0.00 : 694d11: 8b 46 04 mov 0x4(%rsi),%eax 0.00 : 694d14: 2b 47 04 sub 0x4(%rdi),%eax 50.00 : 694d17: 48 89 e5 mov %rsp,%rbp : /* Sort in decreasing itemoff order */ : return ((itemIdSort) itemidp2)->itemoff - : ((itemIdSort) itemidp1)->itemoff; : } /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:420 25.00 : 694d1a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:370 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:365 25.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:370 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006c6b90 : : PG_RETURN_INT32(0); : } : : static int : date_fastcmp(Datum x, Datum y, SortSupport ssup) : { 0.00 : 6c6b90: 55 push %rbp : DateADT a = DatumGetDateADT(x); : DateADT b = DatumGetDateADT(y); : : if (a < b) 0.00 : 6c6b91: 39 f7 cmp %esi,%edi /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:365 25.00 : 6c6b93: b8 ff ff ff ff mov $0xffffffff,%eax : PG_RETURN_INT32(0); : } : : static int : date_fastcmp(Datum x, Datum y, SortSupport ssup) : { 0.00 : 6c6b98: 48 89 e5 mov %rsp,%rbp : DateADT a = DatumGetDateADT(x); : DateADT b = DatumGetDateADT(y); : : if (a < b) 0.00 : 6c6b9b: 7c 06 jl 6c6ba3 0.00 : 6c6b9d: 0f 9f c0 setg %al 0.00 : 6c6ba0: 0f b6 c0 movzbl %al,%eax : return -1; : else if (a > b) : return 1; : return 0; : } /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/date.c:370 75.00 : 6c6ba3: c9 leaveq Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 50.00 ??:0 33.33 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005b20 <__nf_ct_l4proto_find>: ??:0 100.00 : 5b20: 66 83 ff 26 cmp $0x26,%di : 5b54: 77 22 0f b7 cmp $0x26,%di : 5b58: c7 48 8b 14 c5 00 00 mov $0x0,%r12 : 5b5f: 00 00 ja 5b6c : 5b61: 48 85 d2 movzwl %di,%eax : 5b64: 74 12 40 0f b6 c6 48 mov 0x0(,%rax,8),%r12 : 5b6b: 8d : 5b6c: 04 c2 48 8b 00 mov 0x70(%r12),%rbp : 5b71: c3 66 0f test %rbp,%rbp : 5b74: 1f 44 je 5bde : 5b76: 00 00 xor %edx,%edx : 5b78: 48 c7 c0 00 cmpl $0x2,0x0(%rbp) : 5b7c: 00 00 je 5bd1 : ... Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 50.00 ??:0 33.33 ??:0 16.67 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000002a0 : : * when it needs to update EITR registers at runtime. Hardware : * specific quirks/differences are taken care of here. : */ : void ixgbe_write_eitr(struct ixgbe_q_vector *q_vector) : { : struct ixgbe_adapter *adapter = q_vector->adapter; 0.00 : 2a0: 4c 8b 07 mov (%rdi),%r8 : struct ixgbe_hw *hw = &adapter->hw; : int v_idx = q_vector->v_idx; : u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR; 0.00 : 2a3: 0f b7 57 0e movzwl 0xe(%rdi),%edx : */ : void ixgbe_write_eitr(struct ixgbe_q_vector *q_vector) : { : struct ixgbe_adapter *adapter = q_vector->adapter; : struct ixgbe_hw *hw = &adapter->hw; : int v_idx = q_vector->v_idx; 0.00 : 2a7: 0f b7 77 0c movzwl 0xc(%rdi),%esi : u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR; : : switch (adapter->hw.mac.type) { 0.00 : 2ab: 41 8b 88 50 10 00 00 mov 0x1050(%r8),%ecx : void ixgbe_write_eitr(struct ixgbe_q_vector *q_vector) : { : struct ixgbe_adapter *adapter = q_vector->adapter; : struct ixgbe_hw *hw = &adapter->hw; : int v_idx = q_vector->v_idx; : u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR; ??:0 33.33 : 2b2: 81 e2 f8 0f 00 00 and $0xff8,%edx : : switch (adapter->hw.mac.type) { 0.00 : 2b8: 83 f9 01 cmp $0x1,%ecx 0.00 : 2bb: 74 43 je 300 0.00 : 2bd: 73 29 jae 2e8 : itr_reg |= IXGBE_EITR_CNT_WDIS; : break; : default: : break; : } : IXGBE_WRITE_REG(hw, IXGBE_EITR(v_idx), itr_reg); 0.00 : 2bf: 8d 04 b5 20 08 00 00 lea 0x820(,%rsi,4),%eax 16.67 : 2c6: 83 fe 17 cmp $0x17,%esi 0.00 : 2c9: 49 8b 88 80 0e 00 00 mov 0xe80(%r8),%rcx 0.00 : 2d0: 48 98 cltq 0.00 : 2d2: 7e 09 jle 2dd 0.00 : 2d4: 8d 04 b5 a0 22 01 00 lea 0x122a0(,%rsi,4),%eax 0.00 : 2db: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 2dd: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 2e1: 89 10 mov %edx,(%rax) : } 50.00 : 2e3: c3 retq 0.00 : 2e4: 0f 1f 40 00 nopl 0x0(%rax) : case ixgbe_mac_X540: : /* : * set the WDIS bit to not clear the timer bits and cause an : * immediate assertion of the interrupt : */ : itr_reg |= IXGBE_EITR_CNT_WDIS; 0.00 : 2e8: 89 d0 mov %edx,%eax 0.00 : 2ea: 0d 00 00 00 80 or $0x80000000,%eax 0.00 : 2ef: 83 f9 03 cmp $0x3,%ecx 0.00 : 2f2: 0f 46 d0 cmovbe %eax,%edx 0.00 : 2f5: eb c8 jmp 2bf 0.00 : 2f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 2fe: 00 00 : u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR; : : switch (adapter->hw.mac.type) { : case ixgbe_mac_82598EB: : /* must write high and low 16 bits to reset counter */ : itr_reg |= (itr_reg << 16); 0.00 : 300: 89 d0 mov %edx,%eax 0.00 : 302: c1 e0 10 shl $0x10,%eax 0.00 : 305: 09 c2 or %eax,%edx : break; 0.00 : 307: eb b6 jmp 2bf : : Disassembly of section .devinit.text: : : 00000000000002a0 : : IXGBE_FLAG_MSIX_CAPABLE | : IXGBE_FLAG_MQ_CAPABLE; : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : adapter->flags |= IXGBE_FLAG_DCA_CAPABLE; : #endif : adapter->flags |= IXGBE_FLAG_SRIOV_CAPABLE; 0.00 : 2a0: 08 00 or %al,(%rax) : adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE; 0.00 : 2a2: 83 8d 1c 02 00 00 01 orl $0x1,0x21c(%rbp) : #ifdef IXGBE_FCOE : adapter->flags |= IXGBE_FLAG_FCOE_CAPABLE; : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; 0.00 : 2a9: 8b 85 18 02 00 00 mov 0x218(%rbp),%eax : #ifdef CONFIG_DCB : /* Default traffic class to use for FCoE */ : adapter->fcoe.up = IXGBE_FCOE_DEFUP; 33.33 : 2af: c6 85 10 7c 00 00 03 movb $0x3,0x7c10(%rbp) : adapter->fcoe.up_set = IXGBE_FCOE_DEFUP; 0.00 : 2b6: c6 85 11 7c 00 00 03 movb $0x3,0x7c11(%rbp) : #endif : adapter->flags |= IXGBE_FLAG_SRIOV_CAPABLE; : adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE; : #ifdef IXGBE_FCOE : adapter->flags |= IXGBE_FLAG_FCOE_CAPABLE; : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; 0.00 : 2bd: 0d 00 00 02 00 or $0x20000,%eax 16.67 : 2c2: 25 ff ff fb ff and $0xfffbffff,%eax : adapter->fcoe.up_set = IXGBE_FCOE_DEFUP; : #endif : #endif : adapter->ring_feature[RING_F_FDIR].limit = : IXGBE_MAX_FDIR_INDICES; : if (hw->device_id == IXGBE_DEV_ID_82599_T3_LOM) 0.00 : 2c7: 66 81 bd 90 14 00 00 cmpw $0x151c,0x1490(%rbp) 0.00 : 2ce: 1c 15 : /* Default traffic class to use for FCoE */ : adapter->fcoe.up = IXGBE_FCOE_DEFUP; : adapter->fcoe.up_set = IXGBE_FCOE_DEFUP; : #endif : #endif : adapter->ring_feature[RING_F_FDIR].limit = 0.00 : 2d0: 66 c7 85 e0 0b 00 00 movw $0x40,0xbe0(%rbp) 0.00 : 2d7: 40 00 : #endif : adapter->flags |= IXGBE_FLAG_SRIOV_CAPABLE; : adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE; : #ifdef IXGBE_FCOE : adapter->flags |= IXGBE_FLAG_FCOE_CAPABLE; : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; 0.00 : 2d9: 89 85 18 02 00 00 mov %eax,0x218(%rbp) : adapter->fcoe.up_set = IXGBE_FCOE_DEFUP; : #endif : #endif : adapter->ring_feature[RING_F_FDIR].limit = : IXGBE_MAX_FDIR_INDICES; : if (hw->device_id == IXGBE_DEV_ID_82599_T3_LOM) 0.00 : 2df: 74 2c je 30d : adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE; : #ifndef IXGBE_NO_SMART_SPEED : hw->phy.smart_speed = ixgbe_smart_speed_on; 50.00 : 2e1: c7 85 bc 13 00 00 01 movl $0x1,0x13bc(%rbp) 0.00 : 2e8: 00 00 00 : #else : hw->phy.smart_speed = ixgbe_smart_speed_off; : #endif : adapter->max_q_vectors = IXGBE_MAX_MSIX_Q_VECTORS_82599; 0.00 : 2eb: c7 85 c4 0b 00 00 40 movl $0x40,0xbc4(%rbp) 0.00 : 2f2: 00 00 00 0.00 : 2f5: e9 c0 fd ff ff jmpq ba : : #ifdef CONFIG_DCB : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : case ixgbe_mac_82599EB: : adapter->dcb_cfg.num_tcs.pg_tcs = 8; 0.00 : 2fa: c6 85 68 0a 00 00 08 movb $0x8,0xa68(%rbp) : adapter->dcb_cfg.num_tcs.pfc_tcs = 8; 0.00 : 301: c6 85 69 0a 00 00 08 movb $0x8,0xa69(%rbp) Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 40.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000220 : : int packets = ring_container->total_packets; : u32 timepassed_us; : u64 bytes_perint; : u8 itr_setting = ring_container->itr; : : if (packets == 0) 0.00 : 220: 8b 46 0c mov 0xc(%rsi),%eax : * parameter (see ixgbe_param.c) : **/ : static void ixgbe_update_itr(struct ixgbe_q_vector *q_vector, : struct ixgbe_ring_container *ring_container) : { : int bytes = ring_container->total_bytes; ??:0 40.00 : 223: 8b 4e 08 mov 0x8(%rsi),%ecx : int packets = ring_container->total_packets; : u32 timepassed_us; : u64 bytes_perint; : u8 itr_setting = ring_container->itr; 0.00 : 226: 44 0f b6 46 13 movzbl 0x13(%rsi),%r8d : : if (packets == 0) 0.00 : 22b: 85 c0 test %eax,%eax 0.00 : 22d: 74 35 je 264 : * 10-20MB/s low (20000 ints/s) : * 20-1249MB/s bulk (8000 ints/s) : */ : /* what was last interrupt timeslice? */ : timepassed_us = q_vector->itr >> 2; : bytes_perint = bytes / timepassed_us; /* bytes/usec */ 0.00 : 22f: 0f b7 47 0e movzwl 0xe(%rdi),%eax 0.00 : 233: 31 d2 xor %edx,%edx 0.00 : 235: 66 c1 e8 02 shr $0x2,%ax 0.00 : 239: 0f b7 f8 movzwl %ax,%edi 0.00 : 23c: 89 c8 mov %ecx,%eax 0.00 : 23e: f7 f7 div %edi : : switch (itr_setting) { 20.00 : 240: 41 80 f8 01 cmp $0x1,%r8b : * 10-20MB/s low (20000 ints/s) : * 20-1249MB/s bulk (8000 ints/s) : */ : /* what was last interrupt timeslice? */ : timepassed_us = q_vector->itr >> 2; : bytes_perint = bytes / timepassed_us; /* bytes/usec */ 0.00 : 244: 89 c0 mov %eax,%eax : : switch (itr_setting) { 20.00 : 246: 74 40 je 288 0.00 : 248: 73 26 jae 270 : if (bytes_perint > 10) { : itr_setting = low_latency; : } : break; : case low_latency: : if (bytes_perint > 20) { 0.00 : 24a: 48 83 f8 0a cmp $0xa,%rax 0.00 : 24e: 41 0f 97 c0 seta %r8b : } : break; : } : : /* clear work counters since we have the values we need */ : ring_container->total_bytes = 0; 0.00 : 252: c7 46 08 00 00 00 00 movl $0x0,0x8(%rsi) : ring_container->total_packets = 0; 0.00 : 259: c7 46 0c 00 00 00 00 movl $0x0,0xc(%rsi) : : /* write updated itr to ring container */ : ring_container->itr = itr_setting; 20.00 : 260: 44 88 46 13 mov %r8b,0x13(%rsi) 0.00 : 264: f3 c3 repz retq 0.00 : 266: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 26d: 00 00 00 : */ : /* what was last interrupt timeslice? */ : timepassed_us = q_vector->itr >> 2; : bytes_perint = bytes / timepassed_us; /* bytes/usec */ : : switch (itr_setting) { 0.00 : 270: 41 80 f8 02 cmp $0x2,%r8b 0.00 : 274: 75 dc jne 252 : } else if (bytes_perint <= 10) { : itr_setting = lowest_latency; : } : break; : case bulk_latency: : if (bytes_perint <= 20) { 0.00 : 276: 48 83 f8 14 cmp $0x14,%rax 0.00 : 27a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 27f: 44 0f 46 c0 cmovbe %eax,%r8d 0.00 : 283: eb cd jmp 252 0.00 : 285: 0f 1f 00 nopl (%rax) : if (bytes_perint > 10) { : itr_setting = low_latency; : } : break; : case low_latency: : if (bytes_perint > 20) { 0.00 : 288: 48 83 f8 14 cmp $0x14,%rax 0.00 : 28c: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 292: 77 be ja 252 0.00 : 294: eb b4 jmp 24a : : Disassembly of section .devinit.text: : : 0000000000000220 : : hw->fc.pause_time = IXGBE_DEFAULT_FCPAUSE; : hw->fc.send_xon = true; : hw->fc.disable_fc_autoneg = false; : : /* set default ring sizes */ : adapter->tx_ring_count = IXGBE_DEFAULT_TXD; 0.00 : 220: 00 c7 add %al,%bh : adapter->rx_ring_count = IXGBE_DEFAULT_RXD; 40.00 : 222: 85 14 1b test %edx,(%rbx,%rbx,1) 0.00 : 225: 00 00 add %al,(%rax) 0.00 : 227: 00 02 add %al,(%rdx) 0.00 : 229: 00 00 add %al,(%rax) : : /* set default work limits */ : adapter->tx_work_limit = IXGBE_DEFAULT_TX_WORK; 0.00 : 22b: 66 c7 85 26 02 00 00 movw $0x100,0x226(%rbp) 0.00 : 232: 00 01 : adapter->rx_work_limit = IXGBE_DEFAULT_RX_WORK; 0.00 : 234: 66 c7 85 2e 02 00 00 movw $0x100,0x22e(%rbp) 0.00 : 23b: 00 01 : */ : static __always_inline void : set_bit(unsigned int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "orb %1,%0" 20.00 : 23d: f0 80 8d 10 02 00 00 lock orb $0x4,0x210(%rbp) 0.00 : 244: 04 20.00 : 245: e9 2a fe ff ff jmpq 74 : hw->subsystem_vendor_id = pdev->subsystem_vendor; : hw->subsystem_device_id = pdev->subsystem_device; : : err = ixgbe_init_shared_code(hw); : if (err) { : e_err(probe, "init_shared_code failed: %d\n", err); 0.00 : 24a: 48 8b bd 00 02 00 00 mov 0x200(%rbp),%rdi 0.00 : 251: 89 c2 mov %eax,%edx 0.00 : 253: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 25a: 31 c0 xor %eax,%eax 20.00 : 25c: e8 00 00 00 00 callq 261 0.00 : 261: e9 0e fe ff ff jmpq 74 : #endif : /* n-tuple support exists, always init our spinlock */ : spin_lock_init(&adapter->fdir_perfect_lock); : : #ifdef CONFIG_DCB : switch (hw->mac.type) { 0.00 : 266: 83 fa 02 cmp $0x2,%edx 0.00 : 269: 0f 86 8b 00 00 00 jbe 2fa 0.00 : 26f: 83 fa 03 cmp $0x3,%edx 0.00 : 272: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 278: 0f 85 59 fe ff ff jne d7 : case ixgbe_mac_82599EB: : adapter->dcb_cfg.num_tcs.pg_tcs = 8; : adapter->dcb_cfg.num_tcs.pfc_tcs = 8; : break; : case ixgbe_mac_X540: : adapter->dcb_cfg.num_tcs.pg_tcs = 4; 0.00 : 27e: c6 85 68 0a 00 00 04 movb $0x4,0xa68(%rbp) : adapter->dcb_cfg.num_tcs.pfc_tcs = 4; 0.00 : 285: c6 85 69 0a 00 00 04 movb $0x4,0xa69(%rbp) : break; 0.00 : 28c: e9 54 fe ff ff jmpq e5 : adapter->flags |= IXGBE_FLAG_FAN_FAIL_CAPABLE; : : adapter->max_q_vectors = IXGBE_MAX_MSIX_Q_VECTORS_82598; : break; : case ixgbe_mac_X540: : adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE; 0.00 : 291: 83 8d 1c 02 00 00 08 orl $0x8,0x21c(%rbp) Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 25.00 ??:0 25.00 ??:0 25.00 ??:0 25.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000009b70 <_dl_lookup_symbol_x>: 0.00 : 9b70: 55 push %rbp 0.00 : 9b71: 48 89 e5 mov %rsp,%rbp 0.00 : 9b74: 41 57 push %r15 0.00 : 9b76: 49 89 f7 mov %rsi,%r15 0.00 : 9b79: 48 89 fe mov %rdi,%rsi 0.00 : 9b7c: 41 56 push %r14 0.00 : 9b7e: 41 55 push %r13 0.00 : 9b80: 41 bd 05 15 00 00 mov $0x1505,%r13d 0.00 : 9b86: 41 54 push %r12 0.00 : 9b88: 53 push %rbx 0.00 : 9b89: 48 81 ec 08 01 00 00 sub $0x108,%rsp 0.00 : 9b90: 48 89 8d 30 ff ff ff mov %rcx,-0xd0(%rbp) 0.00 : 9b97: 48 89 bd 40 ff ff ff mov %rdi,-0xc0(%rbp) 0.00 : 9b9e: 48 89 95 38 ff ff ff mov %rdx,-0xc8(%rbp) 0.00 : 9ba5: 4c 89 85 28 ff ff ff mov %r8,-0xd8(%rbp) 0.00 : 9bac: b9 05 15 00 00 mov $0x1505,%ecx 0.00 : 9bb1: 44 89 8d 24 ff ff ff mov %r9d,-0xdc(%rbp) 0.00 : 9bb8: 0f b6 17 movzbl (%rdi),%edx 0.00 : 9bbb: 84 d2 test %dl,%dl 0.00 : 9bbd: 74 24 je 9be3 <_dl_lookup_symbol_x+0x73> 0.00 : 9bbf: 90 nop 0.00 : 9bc0: 48 89 c8 mov %rcx,%rax ??:0 25.00 : 9bc3: 0f b6 d2 movzbl %dl,%edx 0.00 : 9bc6: 48 83 c6 01 add $0x1,%rsi 0.00 : 9bca: 48 c1 e0 05 shl $0x5,%rax 0.00 : 9bce: 48 01 c8 add %rcx,%rax 25.00 : 9bd1: 48 8d 0c 02 lea (%rdx,%rax,1),%rcx 25.00 : 9bd5: 0f b6 16 movzbl (%rsi),%edx 0.00 : 9bd8: 84 d2 test %dl,%dl 0.00 : 9bda: 75 e4 jne 9bc0 <_dl_lookup_symbol_x+0x50> 0.00 : 9bdc: 49 89 cd mov %rcx,%r13 0.00 : 9bdf: 41 83 e5 ff and $0xffffffff,%r13d 0.00 : 9be3: 48 83 05 c5 5d 21 00 addq $0x1,0x215dc5(%rip) # 21f9b0 <_rtld_global+0x950> 0.00 : 9bea: 01 0.00 : 9beb: 48 83 bd 28 ff ff ff cmpq $0x0,-0xd8(%rbp) 0.00 : 9bf2: 00 0.00 : 9bf3: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 9bf8: 48 89 5d c8 mov %rbx,-0x38(%rbp) 0.00 : 9bfc: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 9c03: 00 0.00 : 9c04: 48 c7 45 b8 00 00 00 movq $0x0,-0x48(%rbp) 0.00 : 9c0b: 00 0.00 : 9c0c: 74 0d je 9c1b <_dl_lookup_symbol_x+0xab> 0.00 : 9c0e: f7 45 10 fa ff ff ff testl $0xfffffffa,0x10(%rbp) 0.00 : 9c15: 0f 85 d8 03 00 00 jne 9ff3 <_dl_lookup_symbol_x+0x483> 0.00 : 9c1b: 48 83 7d 18 00 cmpq $0x0,0x18(%rbp) 0.00 : 9c20: 0f 85 8a 03 00 00 jne 9fb0 <_dl_lookup_symbol_x+0x440> 0.00 : 9c26: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 9c2d: 48 8b 02 mov (%rdx),%rax 0.00 : 9c30: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : 9c37: 00 00 00 00 0.00 : 9c3b: 48 85 c0 test %rax,%rax 0.00 : 9c3e: 0f 84 ec 01 00 00 je 9e30 <_dl_lookup_symbol_x+0x2c0> 0.00 : 9c44: 48 8b 9d 30 ff ff ff mov -0xd0(%rbp),%rbx 0.00 : 9c4b: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx 0.00 : 9c52: 4c 8d 75 b0 lea -0x50(%rbp),%r14 0.00 : 9c56: 4c 8d 65 c8 lea -0x38(%rbp),%r12 0.00 : 9c5a: eb 16 jmp 9c72 <_dl_lookup_symbol_x+0x102> 0.00 : 9c5c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 9c60: 48 83 c3 08 add $0x8,%rbx 0.00 : 9c64: 31 d2 xor %edx,%edx 0.00 : 9c66: 48 8b 03 mov (%rbx),%rax 0.00 : 9c69: 48 85 c0 test %rax,%rax 0.00 : 9c6c: 0f 84 be 01 00 00 je 9e30 <_dl_lookup_symbol_x+0x2c0> 0.00 : 9c72: 4c 89 7c 24 28 mov %r15,0x28(%rsp) 0.00 : 9c77: 8b 8d 24 ff ff ff mov -0xdc(%rbp),%ecx 0.00 : 9c7d: 49 89 c1 mov %rax,%r9 0.00 : 9c80: 4d 89 f0 mov %r14,%r8 0.00 : 9c83: 4c 89 ee mov %r13,%rsi 0.00 : 9c86: 89 4c 24 20 mov %ecx,0x20(%rsp) 0.00 : 9c8a: 48 8b 4d 18 mov 0x18(%rbp),%rcx 0.00 : 9c8e: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 9c93: 8b 4d 10 mov 0x10(%rbp),%ecx 0.00 : 9c96: 89 4c 24 10 mov %ecx,0x10(%rsp) 0.00 : 9c9a: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 9ca1: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 9ca5: 4c 89 e2 mov %r12,%rdx 0.00 : 9ca8: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 9cad: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 9cb4: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 9cbb: 48 8b 08 mov (%rax),%rcx 0.00 : 9cbe: e8 fd f5 ff ff callq 92c0 0.00 : 9cc3: 85 c0 test %eax,%eax 0.00 : 9cc5: 0f 8f 65 01 00 00 jg 9e30 <_dl_lookup_symbol_x+0x2c0> 0.00 : 9ccb: a9 00 00 00 80 test $0x80000000,%eax 0.00 : 9cd0: 74 8e je 9c60 <_dl_lookup_symbol_x+0xf0> 0.00 : 9cd2: 48 83 7d 18 00 cmpq $0x0,0x18(%rbp) 0.00 : 9cd7: 75 87 jne 9c60 <_dl_lookup_symbol_x+0xf0> 0.00 : 9cd9: 48 83 bd 28 ff ff ff cmpq $0x0,-0xd8(%rbp) 0.00 : 9ce0: 00 0.00 : 9ce1: 0f 84 e0 06 00 00 je a3c7 <_dl_lookup_symbol_x+0x857> 0.00 : 9ce7: 4d 85 ff test %r15,%r15 0.00 : 9cea: 48 c7 85 50 ff ff ff movq $0x0,-0xb0(%rbp) 0.00 : 9cf1: 00 00 00 00 0.00 : 9cf5: 74 0b je 9d02 <_dl_lookup_symbol_x+0x192> 0.00 : 9cf7: 4d 8b 7f 08 mov 0x8(%r15),%r15 0.00 : 9cfb: 4c 89 bd 50 ff ff ff mov %r15,-0xb0(%rbp) 0.00 : 9d02: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 0.00 : 9d09: 83 f8 fe cmp $0xfffffffe,%eax 0.00 : 9d0c: 48 8d 05 e4 fe 00 00 lea 0xfee4(%rip),%rax # 19bf7 <__PRETTY_FUNCTION__.12287+0x96> 0.00 : 9d13: 48 8d 1d f3 fe 00 00 lea 0xfef3(%rip),%rbx # 19c0d <__PRETTY_FUNCTION__.12287+0xac> 0.00 : 9d1a: 4c 8d ad 70 ff ff ff lea -0x90(%rbp),%r13 0.00 : 9d21: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 9d27: 48 8b 0a mov (%rdx),%rcx 0.00 : 9d2a: 48 8b 72 10 mov 0x10(%rdx),%rsi 0.00 : 9d2e: 48 8d 15 a8 fa 00 00 lea 0xfaa8(%rip),%rdx # 197dd 0.00 : 9d35: 48 89 9d 70 ff ff ff mov %rbx,-0x90(%rbp) 0.00 : 9d3c: 48 8d 1d d2 fe 00 00 lea 0xfed2(%rip),%rbx # 19c15 <__PRETTY_FUNCTION__.12287+0xb4> 0.00 : 9d43: 4d 8d 75 40 lea 0x40(%r13),%r14 0.00 : 9d47: 48 0f 44 d0 cmove %rax,%rdx 0.00 : 9d4b: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax 0.00 : 9d52: 48 89 4d 88 mov %rcx,-0x78(%rbp) 0.00 : 9d56: 48 8d 0d d9 fe 00 00 lea 0xfed9(%rip),%rcx # 19c36 <__PRETTY_FUNCTION__.12287+0xd5> 0.00 : 9d5d: 48 89 5d 80 mov %rbx,-0x80(%rbp) 0.00 : 9d61: 48 89 75 98 mov %rsi,-0x68(%rbp) 0.00 : 9d65: 48 89 55 a8 mov %rdx,-0x58(%rbp) 0.00 : 9d69: 4c 89 eb mov %r13,%rbx 0.00 : 9d6c: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 9d73: 48 8d 05 a6 fe 00 00 lea 0xfea6(%rip),%rax # 19c20 <__PRETTY_FUNCTION__.12287+0xbf> 0.00 : 9d7a: 48 89 4d a0 mov %rcx,-0x60(%rbp) 0.00 : 9d7e: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 9d82: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 9d88: 48 8b 3b mov (%rbx),%rdi 0.00 : 9d8b: 48 83 c3 08 add $0x8,%rbx 0.00 : 9d8f: e8 dc c9 00 00 callq 16770 <__GI_strlen> 0.00 : 9d94: 49 01 c4 add %rax,%r12 0.00 : 9d97: 4c 39 f3 cmp %r14,%rbx 0.00 : 9d9a: 75 ec jne 9d88 <_dl_lookup_symbol_x+0x218> 0.00 : 9d9c: 49 8d 44 24 1e lea 0x1e(%r12),%rax 0.00 : 9da1: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 9da5: 48 29 c4 sub %rax,%rsp 0.00 : 9da8: 4c 8d 64 24 3f lea 0x3f(%rsp),%r12 0.00 : 9dad: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 9db1: 4c 89 e7 mov %r12,%rdi 0.00 : 9db4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 9db8: 49 8b 75 00 mov 0x0(%r13),%rsi 0.00 : 9dbc: 49 83 c5 08 add $0x8,%r13 0.00 : 9dc0: e8 4b d4 00 00 callq 17210 <__stpcpy> 0.00 : 9dc5: 49 39 dd cmp %rbx,%r13 0.00 : 9dc8: 48 89 c7 mov %rax,%rdi 0.00 : 9dcb: 75 eb jne 9db8 <_dl_lookup_symbol_x+0x248> 0.00 : 9dcd: 48 8b 9d 50 ff ff ff mov -0xb0(%rbp),%rbx 0.00 : 9dd4: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 9dd7: 75 1f jne 9df8 <_dl_lookup_symbol_x+0x288> 0.00 : 9dd9: 48 8b 05 28 4e 21 00 mov 0x214e28(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 9de0: 48 8d 15 ab f7 00 00 lea 0xf7ab(%rip),%rdx # 19592 0.00 : 9de7: 48 8b 00 mov (%rax),%rax 0.00 : 9dea: 48 85 c0 test %rax,%rax 0.00 : 9ded: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 9df1: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 9df8: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi 0.00 : 9dff: 48 8d 15 4a fe 00 00 lea 0xfe4a(%rip),%rdx # 19c50 <__PRETTY_FUNCTION__.12287+0xef> 0.00 : 9e06: 4c 89 e1 mov %r12,%rcx 0.00 : 9e09: 31 ff xor %edi,%edi 0.00 : 9e0b: e8 90 42 00 00 callq e0a0 <_dl_signal_cerror> 0.00 : 9e10: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : 9e17: 31 c0 xor %eax,%eax 0.00 : 9e19: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : 9e20: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 9e24: 5b pop %rbx 0.00 : 9e25: 41 5c pop %r12 0.00 : 9e27: 41 5d pop %r13 0.00 : 9e29: 41 5e pop %r14 0.00 : 9e2b: 41 5f pop %r15 0.00 : 9e2d: c9 leaveq 0.00 : 9e2e: c3 retq 0.00 : 9e2f: 90 nop 0.00 : 9e30: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) 25.00 : 9e35: 0f 84 52 05 00 00 je a38d <_dl_lookup_symbol_x+0x81d> 0.00 : 9e3b: 48 8b 9d 38 ff ff ff mov -0xc8(%rbp),%rbx 0.00 : 9e42: 48 8b 13 mov (%rbx),%rdx 0.00 : 9e45: 48 85 d2 test %rdx,%rdx 0.00 : 9e48: 74 0c je 9e56 <_dl_lookup_symbol_x+0x2e6> 0.00 : 9e4a: 0f b6 42 05 movzbl 0x5(%rdx),%eax 0.00 : 9e4e: 83 e0 03 and $0x3,%eax 0.00 : 9e51: 83 f8 03 cmp $0x3,%eax 0.00 : 9e54: 74 62 je 9eb8 <_dl_lookup_symbol_x+0x348> 0.00 : 9e56: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : 9e5a: 45 31 ed xor %r13d,%r13d 0.00 : 9e5d: 0f b6 83 14 03 00 00 movzbl 0x314(%rbx),%eax 0.00 : 9e64: 83 e0 03 and $0x3,%eax 0.00 : 9e67: 3c 02 cmp $0x2,%al 0.00 : 9e69: 0f 84 a3 01 00 00 je a012 <_dl_lookup_symbol_x+0x4a2> 0.00 : 9e6f: 44 8b 8b d4 03 00 00 mov 0x3d4(%rbx),%r9d 0.00 : 9e76: 45 85 c9 test %r9d,%r9d 0.00 : 9e79: 0f 84 29 03 00 00 je a1a8 <_dl_lookup_symbol_x+0x638> 0.00 : 9e7f: 8b 05 9b 4d 21 00 mov 0x214d9b(%rip),%eax # 21ec20 <_rtld_global_ro> 0.00 : 9e85: a9 04 04 00 00 test $0x404,%eax 0.00 : 9e8a: 0f 85 27 03 00 00 jne a1b7 <_dl_lookup_symbol_x+0x647> 0.00 : 9e90: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 9e94: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 9e9b: 48 89 10 mov %rdx,(%rax) 0.00 : 9e9e: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 9ea2: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 9ea6: 5b pop %rbx 0.00 : 9ea7: 41 5c pop %r12 0.00 : 9ea9: 41 5d pop %r13 0.00 : 9eab: 41 5e pop %r14 0.00 : 9ead: 41 5f pop %r15 0.00 : 9eaf: c9 leaveq 0.00 : 9eb0: c3 retq 0.00 : 9eb1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 9eb8: 83 bd 24 ff ff ff 01 cmpl $0x1,-0xdc(%rbp) 0.00 : 9ebf: 0f 84 af 05 00 00 je a474 <_dl_lookup_symbol_x+0x904> 0.00 : 9ec5: 48 8b 95 30 ff ff ff mov -0xd0(%rbp),%rdx 0.00 : 9ecc: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) 0.00 : 9ed3: 00 00 00 00 0.00 : 9ed7: 48 c7 85 78 ff ff ff movq $0x0,-0x88(%rbp) 0.00 : 9ede: 00 00 00 00 0.00 : 9ee2: 48 8b 02 mov (%rdx),%rax 0.00 : 9ee5: 48 85 c0 test %rax,%rax 0.00 : 9ee8: 0f 84 87 00 00 00 je 9f75 <_dl_lookup_symbol_x+0x405> 0.00 : 9eee: 48 89 d3 mov %rdx,%rbx 0.00 : 9ef1: 4c 8d 65 c8 lea -0x38(%rbp),%r12 0.00 : 9ef5: 4c 8d b5 70 ff ff ff lea -0x90(%rbp),%r14 0.00 : 9efc: eb 19 jmp 9f17 <_dl_lookup_symbol_x+0x3a7> 0.00 : 9efe: 66 90 xchg %ax,%ax 0.00 : 9f00: 48 83 c3 08 add $0x8,%rbx 0.00 : 9f04: 48 8b 03 mov (%rbx),%rax 0.00 : 9f07: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : 9f0e: 00 00 00 00 0.00 : 9f12: 48 85 c0 test %rax,%rax 0.00 : 9f15: 74 5e je 9f75 <_dl_lookup_symbol_x+0x405> 0.00 : 9f17: 48 c7 44 24 28 00 00 movq $0x0,0x28(%rsp) 0.00 : 9f1e: 00 00 0.00 : 9f20: c7 44 24 20 01 00 00 movl $0x1,0x20(%rsp) 0.00 : 9f27: 00 0.00 : 9f28: 49 89 c1 mov %rax,%r9 0.00 : 9f2b: 48 8b 4d 18 mov 0x18(%rbp),%rcx 0.00 : 9f2f: 4d 89 f0 mov %r14,%r8 0.00 : 9f32: 4c 89 ee mov %r13,%rsi 0.00 : 9f35: 48 89 4c 24 18 mov %rcx,0x18(%rsp) 0.00 : 9f3a: 8b 55 10 mov 0x10(%rbp),%edx 0.00 : 9f3d: 89 54 24 10 mov %edx,0x10(%rsp) 0.00 : 9f41: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : 9f48: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 9f4d: 48 8b 95 48 ff ff ff mov -0xb8(%rbp),%rdx 0.00 : 9f54: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 9f58: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 9f5f: 4c 89 e2 mov %r12,%rdx 0.00 : 9f62: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : 9f69: 48 8b 08 mov (%rax),%rcx 0.00 : 9f6c: e8 4f f3 ff ff callq 92c0 0.00 : 9f71: 85 c0 test %eax,%eax 0.00 : 9f73: 74 8b je 9f00 <_dl_lookup_symbol_x+0x390> 0.00 : 9f75: 48 83 bd 70 ff ff ff cmpq $0x0,-0x90(%rbp) 0.00 : 9f7c: 00 0.00 : 9f7d: 0f 84 29 06 00 00 je a5ac <_dl_lookup_symbol_x+0xa3c> 0.00 : 9f83: 4c 39 bd 78 ff ff ff cmp %r15,-0x88(%rbp) 0.00 : 9f8a: 0f 84 1c 06 00 00 je a5ac <_dl_lookup_symbol_x+0xa3c> 0.00 : 9f90: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : 9f97: 4c 89 fb mov %r15,%rbx 0.00 : 9f9a: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 9fa0: 48 8b 02 mov (%rdx),%rax 0.00 : 9fa3: 4c 89 7d b8 mov %r15,-0x48(%rbp) 0.00 : 9fa7: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 9fab: e9 ad fe ff ff jmpq 9e5d <_dl_lookup_symbol_x+0x2ed> 0.00 : 9fb0: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : 9fb7: 48 8b 5d 18 mov 0x18(%rbp),%rbx 0.00 : 9fbb: 48 8b 01 mov (%rcx),%rax 0.00 : 9fbe: 48 8b 10 mov (%rax),%rdx 0.00 : 9fc1: 48 c7 85 48 ff ff ff movq $0x0,-0xb8(%rbp) 0.00 : 9fc8: 00 00 00 00 0.00 : 9fcc: 48 39 1a cmp %rbx,(%rdx) 0.00 : 9fcf: 0f 84 66 fc ff ff je 9c3b <_dl_lookup_symbol_x+0xcb> 0.00 : 9fd5: 48 83 85 48 ff ff ff addq $0x1,-0xb8(%rbp) 0.00 : 9fdc: 01 0.00 : 9fdd: 48 8b 5d 18 mov 0x18(%rbp),%rbx 0.00 : 9fe1: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 9fe8: 48 39 1c ca cmp %rbx,(%rdx,%rcx,8) 0.00 : 9fec: 75 e7 jne 9fd5 <_dl_lookup_symbol_x+0x465> 0.00 : 9fee: e9 48 fc ff ff jmpq 9c3b <_dl_lookup_symbol_x+0xcb> 0.00 : 9ff3: 48 8d 0d 96 27 01 00 lea 0x12796(%rip),%rcx # 1c790 <__PRETTY_FUNCTION__.12641> 0.00 : 9ffa: 48 8d 35 d3 fb 00 00 lea 0xfbd3(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : a001: 48 8d 3d 68 19 01 00 lea 0x11968(%rip),%rdi # 1b970 <__PRETTY_FUNCTION__.3644+0x15ff> 0.00 : a008: ba d8 02 00 00 mov $0x2d8,%edx 0.00 : a00d: e8 5e ad 00 00 callq 14d70 <__GI___assert_fail> 0.00 : a012: f6 45 10 01 testb $0x1,0x10(%rbp) 0.00 : a016: 0f 84 53 fe ff ff je 9e6f <_dl_lookup_symbol_x+0x2ff> 0.00 : a01c: 49 39 df cmp %rbx,%r15 0.00 : a01f: 0f 84 79 06 00 00 je a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a025: f6 83 dc 03 00 00 08 testb $0x8,0x3dc(%rbx) 0.00 : a02c: 0f 85 6c 06 00 00 jne a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a032: 4d 8b 8f c8 03 00 00 mov 0x3c8(%r15),%r9 0.00 : a039: 4d 8b 87 b8 03 00 00 mov 0x3b8(%r15),%r8 0.00 : a040: 4d 85 c0 test %r8,%r8 0.00 : a043: 74 32 je a077 <_dl_lookup_symbol_x+0x507> 0.00 : a045: 49 8b 00 mov (%r8),%rax 0.00 : a048: 48 85 c0 test %rax,%rax 0.00 : a04b: 74 2a je a077 <_dl_lookup_symbol_x+0x507> 0.00 : a04d: 31 d2 xor %edx,%edx 0.00 : a04f: 48 39 c3 cmp %rax,%rbx 0.00 : a052: 75 15 jne a069 <_dl_lookup_symbol_x+0x4f9> 0.00 : a054: e9 45 06 00 00 jmpq a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a059: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : a060: 48 39 c3 cmp %rax,%rbx 0.00 : a063: 0f 84 35 06 00 00 je a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a069: 83 c2 01 add $0x1,%edx 0.00 : a06c: 89 d0 mov %edx,%eax 0.00 : a06e: 49 8b 04 c0 mov (%r8,%rax,8),%rax 0.00 : a072: 48 85 c0 test %rax,%rax 0.00 : a075: 75 e9 jne a060 <_dl_lookup_symbol_x+0x4f0> 0.00 : a077: 45 31 f6 xor %r14d,%r14d 0.00 : a07a: 4d 85 c9 test %r9,%r9 0.00 : a07d: 74 2f je a0ae <_dl_lookup_symbol_x+0x53e> 0.00 : a07f: 45 8b 31 mov (%r9),%r14d 0.00 : a082: 45 85 f6 test %r14d,%r14d 0.00 : a085: 74 27 je a0ae <_dl_lookup_symbol_x+0x53e> 0.00 : a087: 31 d2 xor %edx,%edx 0.00 : a089: 49 3b 59 08 cmp 0x8(%r9),%rbx 0.00 : a08d: 75 17 jne a0a6 <_dl_lookup_symbol_x+0x536> 0.00 : a08f: 90 nop 0.00 : a090: e9 09 06 00 00 jmpq a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a095: 0f 1f 00 nopl (%rax) 0.00 : a098: 89 d0 mov %edx,%eax 0.00 : a09a: 49 3b 5c c1 08 cmp 0x8(%r9,%rax,8),%rbx 0.00 : a09f: 90 nop 0.00 : a0a0: 0f 84 f8 05 00 00 je a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a0a6: 83 c2 01 add $0x1,%edx 0.00 : a0a9: 41 39 d6 cmp %edx,%r14d 0.00 : a0ac: 77 ea ja a098 <_dl_lookup_symbol_x+0x528> 0.00 : a0ae: 8b 45 10 mov 0x10(%rbp),%eax 0.00 : a0b1: 48 8b 8b 68 04 00 00 mov 0x468(%rbx),%rcx 0.00 : a0b8: 83 e0 04 and $0x4,%eax 0.00 : a0bb: 48 89 8d 60 ff ff ff mov %rcx,-0xa0(%rbp) 0.00 : a0c2: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : a0c9: 0f 85 42 06 00 00 jne a711 <_dl_lookup_symbol_x+0xba1> 0.00 : a0cf: 48 8d 3d 92 58 21 00 lea 0x215892(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : a0d6: 49 89 dc mov %rbx,%r12 0.00 : a0d9: ff 15 61 5e 21 00 callq *0x215e61(%rip) # 21ff40 <_rtld_global+0xee0> 0.00 : a0df: 45 89 f0 mov %r14d,%r8d 0.00 : a0e2: 49 8b 47 30 mov 0x30(%r15),%rax 0.00 : a0e6: 48 8d 15 73 4f 21 00 lea 0x214f73(%rip),%rdx # 21f060 <_rtld_global> 0.00 : a0ed: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : a0f1: 48 c1 e0 04 shl $0x4,%rax 0.00 : a0f5: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : a0f9: 48 85 c0 test %rax,%rax 0.00 : a0fc: 75 0b jne a109 <_dl_lookup_symbol_x+0x599> 0.00 : a0fe: eb 2c jmp a12c <_dl_lookup_symbol_x+0x5bc> 0.00 : a100: 48 8b 40 18 mov 0x18(%rax),%rax 0.00 : a104: 48 85 c0 test %rax,%rax 0.00 : a107: 74 23 je a12c <_dl_lookup_symbol_x+0x5bc> 0.00 : a109: 4c 39 e0 cmp %r12,%rax 0.00 : a10c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : a110: 75 ee jne a100 <_dl_lookup_symbol_x+0x590> 0.00 : a112: 48 85 c0 test %rax,%rax 0.00 : a115: 74 15 je a12c <_dl_lookup_symbol_x+0x5bc> 0.00 : a117: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : a11e: 49 3b 94 24 68 04 00 cmp 0x468(%r12),%rdx 0.00 : a125: 00 0.00 : a126: 0f 84 b5 06 00 00 je a7e1 <_dl_lookup_symbol_x+0xc71> 0.00 : a12c: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : a131: 48 8d 3d 30 58 21 00 lea 0x215830(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : a138: ff 15 0a 5e 21 00 callq *0x215e0a(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : a13e: 48 83 bd 68 ff ff ff cmpq $0x0,-0x98(%rbp) 0.00 : a145: 00 0.00 : a146: 0f 85 84 06 00 00 jne a7d0 <_dl_lookup_symbol_x+0xc60> 0.00 : a14c: 83 c3 01 add $0x1,%ebx 0.00 : a14f: 0f 85 49 05 00 00 jne a69e <_dl_lookup_symbol_x+0xb2e> 0.00 : a155: f6 45 10 04 testb $0x4,0x10(%rbp) 0.00 : a159: 74 0e je a169 <_dl_lookup_symbol_x+0x5f9> 0.00 : a15b: 49 8b 8f 80 03 00 00 mov 0x380(%r15),%rcx 0.00 : a162: 48 89 8d 30 ff ff ff mov %rcx,-0xd0(%rbp) 0.00 : a169: 48 8b 5d 18 mov 0x18(%rbp),%rbx 0.00 : a16d: 4c 89 fe mov %r15,%rsi 0.00 : a170: 48 89 5c 24 08 mov %rbx,0x8(%rsp) 0.00 : a175: 8b 45 10 mov 0x10(%rbp),%eax 0.00 : a178: 89 04 24 mov %eax,(%rsp) 0.00 : a17b: 44 8b 8d 24 ff ff ff mov -0xdc(%rbp),%r9d 0.00 : a182: 4c 8b 85 28 ff ff ff mov -0xd8(%rbp),%r8 0.00 : a189: 48 8b 8d 30 ff ff ff mov -0xd0(%rbp),%rcx 0.00 : a190: 48 8b 95 38 ff ff ff mov -0xc8(%rbp),%rdx 0.00 : a197: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : a19e: e8 cd f9 ff ff callq 9b70 <_dl_lookup_symbol_x> 0.00 : a1a3: e9 fa fc ff ff jmpq 9ea2 <_dl_lookup_symbol_x+0x332> 0.00 : a1a8: c7 83 d4 03 00 00 01 movl $0x1,0x3d4(%rbx) 0.00 : a1af: 00 00 00 0.00 : a1b2: e9 c8 fc ff ff jmpq 9e7f <_dl_lookup_symbol_x+0x30f> 0.00 : a1b7: a8 04 test $0x4,%al 0.00 : a1b9: 49 8b 77 08 mov 0x8(%r15),%rsi 0.00 : a1bd: 0f 84 96 00 00 00 je a259 <_dl_lookup_symbol_x+0x6e9> 0.00 : a1c3: 48 8d 05 b2 fa 00 00 lea 0xfab2(%rip),%rax # 19c7c <__PRETTY_FUNCTION__.12287+0x11b> 0.00 : a1ca: 4c 8d 0d a4 fa 00 00 lea 0xfaa4(%rip),%r9 # 19c75 <__PRETTY_FUNCTION__.12287+0x114> 0.00 : a1d1: 45 85 ed test %r13d,%r13d 0.00 : a1d4: 4c 0f 45 c8 cmovne %rax,%r9 0.00 : a1d8: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : a1dc: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : a1e0: 4c 8b 40 30 mov 0x30(%rax),%r8 0.00 : a1e4: 80 39 00 cmpb $0x0,(%rcx) 0.00 : a1e7: 75 0a jne a1f3 <_dl_lookup_symbol_x+0x683> 0.00 : a1e9: 48 8b 05 18 4a 21 00 mov 0x214a18(%rip),%rax # 21ec08 <_dl_argv> 0.00 : a1f0: 48 8b 08 mov (%rax),%rcx 0.00 : a1f3: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : a1f6: 49 8b 57 30 mov 0x30(%r15),%rdx 0.00 : a1fa: 75 18 jne a214 <_dl_lookup_symbol_x+0x6a4> 0.00 : a1fc: 48 8b 05 05 4a 21 00 mov 0x214a05(%rip),%rax # 21ec08 <_dl_argv> 0.00 : a203: 48 8d 35 88 f3 00 00 lea 0xf388(%rip),%rsi # 19592 0.00 : a20a: 48 8b 00 mov (%rax),%rax 0.00 : a20d: 48 85 c0 test %rax,%rax 0.00 : a210: 48 0f 45 f0 cmovne %rax,%rsi 0.00 : a214: 48 8b 9d 40 ff ff ff mov -0xc0(%rbp),%rbx 0.00 : a21b: 48 8d 3d ee 17 01 00 lea 0x117ee(%rip),%rdi # 1ba10 <__PRETTY_FUNCTION__.3644+0x169f> 0.00 : a222: 31 c0 xor %eax,%eax 0.00 : a224: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : a228: e8 23 51 00 00 callq f350 <_dl_debug_printf> 0.00 : a22d: 48 83 bd 28 ff ff ff cmpq $0x0,-0xd8(%rbp) 0.00 : a234: 00 0.00 : a235: 0f 84 a9 04 00 00 je a6e4 <_dl_lookup_symbol_x+0xb74> 0.00 : a23b: 48 8b 85 28 ff ff ff mov -0xd8(%rbp),%rax 0.00 : a242: 48 8d 3d 3d fa 00 00 lea 0xfa3d(%rip),%rdi # 19c86 <__PRETTY_FUNCTION__.12287+0x125> 0.00 : a249: 48 8b 30 mov (%rax),%rsi 0.00 : a24c: 31 c0 xor %eax,%eax 0.00 : a24e: e8 4d 50 00 00 callq f2a0 <_dl_debug_printf_c> 0.00 : a253: 8b 05 c7 49 21 00 mov 0x2149c7(%rip),%eax # 21ec20 <_rtld_global_ro> 0.00 : a259: f6 c4 04 test $0x4,%ah 0.00 : a25c: 0f 84 2e fc ff ff je 9e90 <_dl_lookup_symbol_x+0x320> 0.00 : a262: 48 8b 15 4f 4a 21 00 mov 0x214a4f(%rip),%rdx # 21ecb8 <_rtld_global_ro+0x98> 0.00 : a269: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) 0.00 : a270: 00 00 00 00 0.00 : a274: 48 c7 85 78 ff ff ff movq $0x0,-0x88(%rbp) 0.00 : a27b: 00 00 00 00 0.00 : a27f: 48 85 d2 test %rdx,%rdx 0.00 : a282: 0f 84 33 03 00 00 je a5bb <_dl_lookup_symbol_x+0xa4b> 0.00 : a288: 48 8b 05 d1 4d 21 00 mov 0x214dd1(%rip),%rax # 21f060 <_rtld_global> 0.00 : a28f: 48 39 c2 cmp %rax,%rdx 0.00 : a292: 0f 84 2a 03 00 00 je a5c2 <_dl_lookup_symbol_x+0xa52> 0.00 : a298: 31 f6 xor %esi,%esi 0.00 : a29a: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : a29e: 48 85 d2 test %rdx,%rdx 0.00 : a2a1: 74 29 je a2cc <_dl_lookup_symbol_x+0x75c> 0.00 : a2a3: 0f b6 4a 04 movzbl 0x4(%rdx),%ecx 0.00 : a2a7: 83 e1 0f and $0xf,%ecx 0.00 : a2aa: 83 f9 06 cmp $0x6,%ecx 0.00 : a2ad: 0f 84 f4 03 00 00 je a6a7 <_dl_lookup_symbol_x+0xb37> 0.00 : a2b3: 8b 85 24 ff ff ff mov -0xdc(%rbp),%eax 0.00 : a2b9: 83 c8 08 or $0x8,%eax 0.00 : a2bc: 83 f9 0a cmp $0xa,%ecx 0.00 : a2bf: 0f 45 85 24 ff ff ff cmovne -0xdc(%rbp),%eax 0.00 : a2c6: 89 85 24 ff ff ff mov %eax,-0xdc(%rbp) 0.00 : a2cc: 85 f6 test %esi,%esi 0.00 : a2ce: 75 1e jne a2ee <_dl_lookup_symbol_x+0x77e> 0.00 : a2d0: 48 8b 05 e1 49 21 00 mov 0x2149e1(%rip),%rax # 21ecb8 <_rtld_global_ro+0x98> 0.00 : a2d7: 49 39 c7 cmp %rax,%r15 0.00 : a2da: 74 12 je a2ee <_dl_lookup_symbol_x+0x77e> 0.00 : a2dc: 48 85 c0 test %rax,%rax 0.00 : a2df: 74 0d je a2ee <_dl_lookup_symbol_x+0x77e> 0.00 : a2e1: 83 bd 24 ff ff ff 03 cmpl $0x3,-0xdc(%rbp) 0.00 : a2e8: 0f 8e a6 fb ff ff jle 9e94 <_dl_lookup_symbol_x+0x324> 0.00 : a2ee: 31 ff xor %edi,%edi 0.00 : a2f0: 31 c9 xor %ecx,%ecx 0.00 : a2f2: 48 85 d2 test %rdx,%rdx 0.00 : a2f5: 74 0f je a306 <_dl_lookup_symbol_x+0x796> 0.00 : a2f7: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : a2fb: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : a2ff: 48 8b b8 40 03 00 00 mov 0x340(%rax),%rdi 0.00 : a306: 48 8b 9d 38 ff ff ff mov -0xc8(%rbp),%rbx 0.00 : a30d: 49 8b 97 40 03 00 00 mov 0x340(%r15),%rdx 0.00 : a314: 48 8b 03 mov (%rbx),%rax 0.00 : a317: 48 29 d0 sub %rdx,%rax 0.00 : a31a: 85 f6 test %esi,%esi 0.00 : a31c: 0f 85 c4 00 00 00 jne a3e6 <_dl_lookup_symbol_x+0x876> 0.00 : a322: 49 89 d0 mov %rdx,%r8 0.00 : a325: 48 8d 35 1c 17 01 00 lea 0x1171c(%rip),%rsi # 1ba48 <__PRETTY_FUNCTION__.3644+0x16d7> 0.00 : a32c: 48 8d 15 5a f9 00 00 lea 0xf95a(%rip),%rdx # 19c8d <__PRETTY_FUNCTION__.12287+0x12c> 0.00 : a333: 48 89 4c 24 20 mov %rcx,0x20(%rsp) 0.00 : a338: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : a33d: 41 b9 10 00 00 00 mov $0x10,%r9d 0.00 : a343: 48 89 04 24 mov %rax,(%rsp) 0.00 : a347: c7 44 24 18 10 00 00 movl $0x10,0x18(%rsp) 0.00 : a34e: 00 0.00 : a34f: b9 10 00 00 00 mov $0x10,%ecx 0.00 : a354: c7 44 24 08 10 00 00 movl $0x10,0x8(%rsp) 0.00 : a35b: 00 0.00 : a35c: bf 01 00 00 00 mov $0x1,%edi 0.00 : a361: 31 c0 xor %eax,%eax 0.00 : a363: e8 98 4e 00 00 callq f200 <_dl_dprintf> 0.00 : a368: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : a36f: 8b 95 24 ff ff ff mov -0xdc(%rbp),%edx 0.00 : a375: 48 8d 35 2b f9 00 00 lea 0xf92b(%rip),%rsi # 19ca7 <__PRETTY_FUNCTION__.12287+0x146> 0.00 : a37c: bf 01 00 00 00 mov $0x1,%edi 0.00 : a381: 31 c0 xor %eax,%eax 0.00 : a383: e8 78 4e 00 00 callq f200 <_dl_dprintf> 0.00 : a388: e9 03 fb ff ff jmpq 9e90 <_dl_lookup_symbol_x+0x320> 0.00 : a38d: 48 8b 9d 38 ff ff ff mov -0xc8(%rbp),%rbx 0.00 : a394: 48 8b 03 mov (%rbx),%rax 0.00 : a397: 48 85 c0 test %rax,%rax 0.00 : a39a: 74 0b je a3a7 <_dl_lookup_symbol_x+0x837> 0.00 : a39c: 0f b6 40 04 movzbl 0x4(%rax),%eax 0.00 : a3a0: c0 e8 04 shr $0x4,%al 0.00 : a3a3: 3c 02 cmp $0x2,%al 0.00 : a3a5: 74 0b je a3b2 <_dl_lookup_symbol_x+0x842> 0.00 : a3a7: 48 83 7d 18 00 cmpq $0x0,0x18(%rbp) 0.00 : a3ac: 0f 84 eb 00 00 00 je a49d <_dl_lookup_symbol_x+0x92d> 0.00 : a3b2: 48 8b 8d 38 ff ff ff mov -0xc8(%rbp),%rcx 0.00 : a3b9: 31 c0 xor %eax,%eax 0.00 : a3bb: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : a3c2: e9 db fa ff ff jmpq 9ea2 <_dl_lookup_symbol_x+0x332> 0.00 : a3c7: 48 8d 0d c2 23 01 00 lea 0x123c2(%rip),%rcx # 1c790 <__PRETTY_FUNCTION__.12641> 0.00 : a3ce: 48 8d 35 ff f7 00 00 lea 0xf7ff(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : a3d5: 48 8d 3d 04 f8 00 00 lea 0xf804(%rip),%rdi # 19be0 <__PRETTY_FUNCTION__.12287+0x7f> 0.00 : a3dc: ba ee 02 00 00 mov $0x2ee,%edx 0.00 : a3e1: e8 8a a9 00 00 callq 14d70 <__GI___assert_fail> 0.00 : a3e6: 49 89 d0 mov %rdx,%r8 0.00 : a3e9: 48 8d 35 58 16 01 00 lea 0x11658(%rip),%rsi # 1ba48 <__PRETTY_FUNCTION__.3644+0x16d7> 0.00 : a3f0: 48 8d 15 b8 f8 00 00 lea 0xf8b8(%rip),%rdx # 19caf <__PRETTY_FUNCTION__.12287+0x14e> 0.00 : a3f7: 48 89 4c 24 20 mov %rcx,0x20(%rsp) 0.00 : a3fc: 48 89 7c 24 10 mov %rdi,0x10(%rsp) 0.00 : a401: b9 10 00 00 00 mov $0x10,%ecx 0.00 : a406: 48 89 04 24 mov %rax,(%rsp) 0.00 : a40a: c7 44 24 18 10 00 00 movl $0x10,0x18(%rsp) 0.00 : a411: 00 0.00 : a412: 31 c0 xor %eax,%eax 0.00 : a414: c7 44 24 08 10 00 00 movl $0x10,0x8(%rsp) 0.00 : a41b: 00 0.00 : a41c: 41 b9 10 00 00 00 mov $0x10,%r9d 0.00 : a422: bf 01 00 00 00 mov $0x1,%edi 0.00 : a427: e8 d4 4d 00 00 callq f200 <_dl_dprintf> 0.00 : a42c: 48 8b 85 70 ff ff ff mov -0x90(%rbp),%rax 0.00 : a433: 31 c9 xor %ecx,%ecx 0.00 : a435: 31 d2 xor %edx,%edx 0.00 : a437: 48 85 c0 test %rax,%rax 0.00 : a43a: 74 12 je a44e <_dl_lookup_symbol_x+0x8de> 0.00 : a43c: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : a440: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : a447: 48 8b 88 40 03 00 00 mov 0x340(%rax),%rcx 0.00 : a44e: 48 8d 35 3f f8 00 00 lea 0xf83f(%rip),%rsi # 19c94 <__PRETTY_FUNCTION__.12287+0x133> 0.00 : a455: 49 89 d1 mov %rdx,%r9 0.00 : a458: 41 b8 10 00 00 00 mov $0x10,%r8d 0.00 : a45e: ba 10 00 00 00 mov $0x10,%edx 0.00 : a463: bf 01 00 00 00 mov $0x1,%edi 0.00 : a468: 31 c0 xor %eax,%eax 0.00 : a46a: e8 91 4d 00 00 callq f200 <_dl_dprintf> 0.00 : a46f: e9 f4 fe ff ff jmpq a368 <_dl_lookup_symbol_x+0x7f8> 0.00 : a474: 4c 39 7d b8 cmp %r15,-0x48(%rbp) 0.00 : a478: 4c 89 fb mov %r15,%rbx 0.00 : a47b: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : a481: 0f 84 d6 f9 ff ff je 9e5d <_dl_lookup_symbol_x+0x2ed> 0.00 : a487: 48 89 55 b0 mov %rdx,-0x50(%rbp) 0.00 : a48b: 4c 89 7d b8 mov %r15,-0x48(%rbp) 0.00 : a48f: 4c 89 fb mov %r15,%rbx 0.00 : a492: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : a498: e9 c0 f9 ff ff jmpq 9e5d <_dl_lookup_symbol_x+0x2ed> 0.00 : a49d: 48 8d 05 39 f3 00 00 lea 0xf339(%rip),%rax # 197dd 0.00 : a4a4: 4d 85 ff test %r15,%r15 0.00 : a4a7: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) 0.00 : a4ae: 74 0b je a4bb <_dl_lookup_symbol_x+0x94b> 0.00 : a4b0: 4d 8b 7f 08 mov 0x8(%r15),%r15 0.00 : a4b4: 4c 89 bd 58 ff ff ff mov %r15,-0xa8(%rbp) 0.00 : a4bb: 48 83 bd 28 ff ff ff cmpq $0x0,-0xd8(%rbp) 0.00 : a4c2: 00 0.00 : a4c3: 0f 84 34 02 00 00 je a6fd <_dl_lookup_symbol_x+0xb8d> 0.00 : a4c9: 48 8b 95 28 ff ff ff mov -0xd8(%rbp),%rdx 0.00 : a4d0: 4c 8b 2a mov (%rdx),%r13 0.00 : a4d3: 4d 85 ed test %r13,%r13 0.00 : a4d6: 0f 84 ed 01 00 00 je a6c9 <_dl_lookup_symbol_x+0xb59> 0.00 : a4dc: 4c 89 ef mov %r13,%rdi 0.00 : a4df: 4c 8d 35 2f f7 00 00 lea 0xf72f(%rip),%r14 # 19c15 <__PRETTY_FUNCTION__.12287+0xb4> 0.00 : a4e6: bb 0a 00 00 00 mov $0xa,%ebx 0.00 : a4eb: e8 80 c2 00 00 callq 16770 <__GI_strlen> 0.00 : a4f0: 49 89 c4 mov %rax,%r12 0.00 : a4f3: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : a4fa: e8 71 c2 00 00 callq 16770 <__GI_strlen> 0.00 : a4ff: 48 8d 44 03 13 lea 0x13(%rbx,%rax,1),%rax 0.00 : a504: 49 bb 75 6e 64 65 66 movabs $0x656e696665646e75,%r11 0.00 : a50b: 69 6e 65 0.00 : a50e: 49 ba 64 20 73 79 6d movabs $0x6c6f626d79732064,%r10 0.00 : a515: 62 6f 6c 0.00 : a518: 4a 8d 44 20 1e lea 0x1e(%rax,%r12,1),%rax 0.00 : a51d: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : a521: 48 29 c4 sub %rax,%rsp 0.00 : a524: 48 8d 5c 24 3f lea 0x3f(%rsp),%rbx 0.00 : a529: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : a52d: 4c 89 1b mov %r11,(%rbx) 0.00 : a530: 4c 89 53 08 mov %r10,0x8(%rbx) 0.00 : a534: 48 8d 7b 12 lea 0x12(%rbx),%rdi 0.00 : a538: 66 c7 43 10 3a 20 movw $0x203a,0x10(%rbx) 0.00 : a53e: c6 43 12 00 movb $0x0,0x12(%rbx) 0.00 : a542: 48 8b b5 40 ff ff ff mov -0xc0(%rbp),%rsi 0.00 : a549: e8 c2 cc 00 00 callq 17210 <__stpcpy> 0.00 : a54e: 4c 89 f6 mov %r14,%rsi 0.00 : a551: 48 89 c7 mov %rax,%rdi 0.00 : a554: e8 b7 cc 00 00 callq 17210 <__stpcpy> 0.00 : a559: 4c 89 ee mov %r13,%rsi 0.00 : a55c: 48 89 c7 mov %rax,%rdi 0.00 : a55f: e8 2c c1 00 00 callq 16690 0.00 : a564: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : a56b: 80 39 00 cmpb $0x0,(%rcx) 0.00 : a56e: 75 1f jne a58f <_dl_lookup_symbol_x+0xa1f> 0.00 : a570: 48 8b 05 91 46 21 00 mov 0x214691(%rip),%rax # 21ec08 <_dl_argv> 0.00 : a577: 48 8d 15 14 f0 00 00 lea 0xf014(%rip),%rdx # 19592 0.00 : a57e: 48 8b 00 mov (%rax),%rax 0.00 : a581: 48 85 c0 test %rax,%rax 0.00 : a584: 48 0f 44 c2 cmove %rdx,%rax 0.00 : a588: 48 89 85 58 ff ff ff mov %rax,-0xa8(%rbp) 0.00 : a58f: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : a596: 48 8d 15 c4 f6 00 00 lea 0xf6c4(%rip),%rdx # 19c61 <__PRETTY_FUNCTION__.12287+0x100> 0.00 : a59d: 48 89 d9 mov %rbx,%rcx 0.00 : a5a0: 31 ff xor %edi,%edi 0.00 : a5a2: e8 f9 3a 00 00 callq e0a0 <_dl_signal_cerror> 0.00 : a5a7: e9 06 fe ff ff jmpq a3b2 <_dl_lookup_symbol_x+0x842> 0.00 : a5ac: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : a5b0: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : a5b6: e9 a2 f8 ff ff jmpq 9e5d <_dl_lookup_symbol_x+0x2ed> 0.00 : a5bb: 48 8b 05 9e 4a 21 00 mov 0x214a9e(%rip),%rax # 21f060 <_rtld_global> 0.00 : a5c2: 4c 39 f8 cmp %r15,%rax 0.00 : a5c5: 0f 84 cd fc ff ff je a298 <_dl_lookup_symbol_x+0x728> 0.00 : a5cb: 48 8b 8d 40 ff ff ff mov -0xc0(%rbp),%rcx 0.00 : a5d2: be 05 15 00 00 mov $0x1505,%esi 0.00 : a5d7: 0f b6 11 movzbl (%rcx),%edx 0.00 : a5da: 48 89 cf mov %rcx,%rdi 0.00 : a5dd: b9 05 15 00 00 mov $0x1505,%ecx 0.00 : a5e2: 84 d2 test %dl,%dl 0.00 : a5e4: 74 22 je a608 <_dl_lookup_symbol_x+0xa98> 0.00 : a5e6: 48 89 c8 mov %rcx,%rax 0.00 : a5e9: 0f b6 d2 movzbl %dl,%edx 0.00 : a5ec: 48 83 c7 01 add $0x1,%rdi 0.00 : a5f0: 48 c1 e0 05 shl $0x5,%rax 0.00 : a5f4: 48 01 c8 add %rcx,%rax 0.00 : a5f7: 48 8d 0c 02 lea (%rdx,%rax,1),%rcx 0.00 : a5fb: 0f b6 17 movzbl (%rdi),%edx 0.00 : a5fe: 84 d2 test %dl,%dl 0.00 : a600: 75 e4 jne a5e6 <_dl_lookup_symbol_x+0xa76> 0.00 : a602: 48 89 ce mov %rcx,%rsi 0.00 : a605: 83 e6 ff and $0xffffffff,%esi 0.00 : a608: 41 b8 ff ff ff ff mov $0xffffffff,%r8d 0.00 : a60e: 48 8d 55 c0 lea -0x40(%rbp),%rdx 0.00 : a612: 4c 89 45 c0 mov %r8,-0x40(%rbp) 0.00 : a616: 48 8b 1d 8b 4a 21 00 mov 0x214a8b(%rip),%rbx # 21f0a8 <_rtld_global+0x48> 0.00 : a61d: 4c 8d 85 70 ff ff ff lea -0x90(%rbp),%r8 0.00 : a624: 48 c7 05 79 4a 21 00 movq $0x0,0x214a79(%rip) # 21f0a8 <_rtld_global+0x48> 0.00 : a62b: 00 00 00 00 0.00 : a62f: 4d 8b 8f 88 03 00 00 mov 0x388(%r15),%r9 0.00 : a636: 4c 89 7c 24 28 mov %r15,0x28(%rsp) 0.00 : a63b: 8b 85 24 ff ff ff mov -0xdc(%rbp),%eax 0.00 : a641: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp) 0.00 : a648: 00 00 0.00 : a64a: c7 44 24 10 00 00 00 movl $0x0,0x10(%rsp) 0.00 : a651: 00 0.00 : a652: 89 44 24 20 mov %eax,0x20(%rsp) 0.00 : a656: 48 8b 8d 28 ff ff ff mov -0xd8(%rbp),%rcx 0.00 : a65d: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : a664: 00 0.00 : a665: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : a66a: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : a671: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi 0.00 : a678: 48 8b 08 mov (%rax),%rcx 0.00 : a67b: e8 40 ec ff ff callq 92c0 0.00 : a680: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : a684: 48 39 95 70 ff ff ff cmp %rdx,-0x90(%rbp) 0.00 : a68b: be 01 00 00 00 mov $0x1,%esi 0.00 : a690: 74 24 je a6b6 <_dl_lookup_symbol_x+0xb46> 0.00 : a692: 48 89 1d 0f 4a 21 00 mov %rbx,0x214a0f(%rip) # 21f0a8 <_rtld_global+0x48> 0.00 : a699: e9 fc fb ff ff jmpq a29a <_dl_lookup_symbol_x+0x72a> 0.00 : a69e: 48 8b 5d b8 mov -0x48(%rbp),%rbx 0.00 : a6a2: e9 c8 f7 ff ff jmpq 9e6f <_dl_lookup_symbol_x+0x2ff> 0.00 : a6a7: c7 85 24 ff ff ff 04 movl $0x4,-0xdc(%rbp) 0.00 : a6ae: 00 00 00 0.00 : a6b1: e9 16 fc ff ff jmpq a2cc <_dl_lookup_symbol_x+0x75c> 0.00 : a6b6: 31 f6 xor %esi,%esi 0.00 : a6b8: 48 8b 4d b8 mov -0x48(%rbp),%rcx 0.00 : a6bc: 48 39 8d 78 ff ff ff cmp %rcx,-0x88(%rbp) 0.00 : a6c3: 40 0f 95 c6 setne %sil 0.00 : a6c7: eb c9 jmp a692 <_dl_lookup_symbol_x+0xb22> 0.00 : a6c9: 4c 8d 2d 0d f1 00 00 lea 0xf10d(%rip),%r13 # 197dd 0.00 : a6d0: 4c 8d 35 3e f5 00 00 lea 0xf53e(%rip),%r14 # 19c15 <__PRETTY_FUNCTION__.12287+0xb4> 0.00 : a6d7: bb 0a 00 00 00 mov $0xa,%ebx 0.00 : a6dc: 45 31 e4 xor %r12d,%r12d 0.00 : a6df: e9 0f fe ff ff jmpq a4f3 <_dl_lookup_symbol_x+0x983> 0.00 : a6e4: 48 8d 3d f1 f0 00 00 lea 0xf0f1(%rip),%rdi # 197dc 0.00 : a6eb: 31 c0 xor %eax,%eax 0.00 : a6ed: e8 ae 4b 00 00 callq f2a0 <_dl_debug_printf_c> 0.00 : a6f2: 8b 05 28 45 21 00 mov 0x214528(%rip),%eax # 21ec20 <_rtld_global_ro> 0.00 : a6f8: e9 5c fb ff ff jmpq a259 <_dl_lookup_symbol_x+0x6e9> 0.00 : a6fd: 4c 8d 2d d9 f0 00 00 lea 0xf0d9(%rip),%r13 # 197dd 0.00 : a704: 31 db xor %ebx,%ebx 0.00 : a706: 45 31 e4 xor %r12d,%r12d 0.00 : a709: 4d 89 ee mov %r13,%r14 0.00 : a70c: e9 e2 fd ff ff jmpq a4f3 <_dl_lookup_symbol_x+0x983> 0.00 : a711: 31 c0 xor %eax,%eax 0.00 : a713: 64 87 04 25 1c 00 00 xchg %eax,%fs:0x1c 0.00 : a71a: 00 0.00 : a71b: 83 f8 02 cmp $0x2,%eax 0.00 : a71e: 75 21 jne a741 <_dl_lookup_symbol_x+0xbd1> 0.00 : a720: ba 01 00 00 00 mov $0x1,%edx 0.00 : a725: 64 48 8b 3c 25 10 00 mov %fs:0x10,%rdi 0.00 : a72c: 00 00 0.00 : a72e: 64 8b 34 25 48 00 00 mov %fs:0x48,%esi 0.00 : a735: 00 0.00 : a736: 48 83 c7 1c add $0x1c,%rdi 0.00 : a73a: 83 ce 01 or $0x1,%esi 0.00 : a73d: b0 ca mov $0xca,%al 0.00 : a73f: 0f 05 syscall 0.00 : a741: 4c 89 85 10 ff ff ff mov %r8,-0xf0(%rbp) 0.00 : a748: 4c 89 8d 08 ff ff ff mov %r9,-0xf8(%rbp) 0.00 : a74f: 48 8d 3d 12 52 21 00 lea 0x215212(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : a756: ff 15 e4 57 21 00 callq *0x2157e4(%rip) # 21ff40 <_rtld_global+0xee0> 0.00 : a75c: 49 8b 8f b8 03 00 00 mov 0x3b8(%r15),%rcx 0.00 : a763: 4c 8b 85 10 ff ff ff mov -0xf0(%rbp),%r8 0.00 : a76a: 49 89 dc mov %rbx,%r12 0.00 : a76d: 4c 8b 8d 08 ff ff ff mov -0xf8(%rbp),%r9 0.00 : a774: 49 39 c8 cmp %rcx,%r8 0.00 : a777: 0f 84 96 00 00 00 je a813 <_dl_lookup_symbol_x+0xca3> 0.00 : a77d: 48 85 c9 test %rcx,%rcx 0.00 : a780: 0f 84 8d 00 00 00 je a813 <_dl_lookup_symbol_x+0xca3> 0.00 : a786: 48 8b 01 mov (%rcx),%rax 0.00 : a789: 48 85 c0 test %rax,%rax 0.00 : a78c: 0f 84 81 00 00 00 je a813 <_dl_lookup_symbol_x+0xca3> 0.00 : a792: 31 d2 xor %edx,%edx 0.00 : a794: 49 39 c4 cmp %rax,%r12 0.00 : a797: 74 13 je a7ac <_dl_lookup_symbol_x+0xc3c> 0.00 : a799: 83 c2 01 add $0x1,%edx 0.00 : a79c: 89 d0 mov %edx,%eax 0.00 : a79e: 48 8b 04 c1 mov (%rcx,%rax,8),%rax 0.00 : a7a2: 48 85 c0 test %rax,%rax 0.00 : a7a5: 74 6c je a813 <_dl_lookup_symbol_x+0xca3> 0.00 : a7a7: 49 39 c4 cmp %rax,%r12 0.00 : a7aa: 75 ed jne a799 <_dl_lookup_symbol_x+0xc29> 0.00 : a7ac: 48 8b 95 60 ff ff ff mov -0xa0(%rbp),%rdx 0.00 : a7b3: 49 3b 94 24 68 04 00 cmp 0x468(%r12),%rdx 0.00 : a7ba: 00 0.00 : a7bb: 0f 85 6b f9 ff ff jne a12c <_dl_lookup_symbol_x+0x5bc> 0.00 : a7c1: 31 db xor %ebx,%ebx 0.00 : a7c3: 48 8d 3d 9e 51 21 00 lea 0x21519e(%rip),%rdi # 21f968 <_rtld_global+0x908> 0.00 : a7ca: ff 15 78 57 21 00 callq *0x215778(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : a7d0: 64 c7 04 25 1c 00 00 movl $0x1,%fs:0x1c 0.00 : a7d7: 00 01 00 00 00 0.00 : a7dc: e9 6b f9 ff ff jmpq a14c <_dl_lookup_symbol_x+0x5dc> 0.00 : a7e1: 41 8b 94 24 dc 03 00 mov 0x3dc(%r12),%edx 0.00 : a7e8: 00 0.00 : a7e9: f6 c2 08 test $0x8,%dl 0.00 : a7ec: 0f 85 a7 00 00 00 jne a899 <_dl_lookup_symbol_x+0xd29> 0.00 : a7f2: 41 0f b6 87 14 03 00 movzbl 0x314(%r15),%eax 0.00 : a7f9: 00 0.00 : a7fa: 83 e0 03 and $0x3,%eax 0.00 : a7fd: 3c 02 cmp $0x2,%al 0.00 : a7ff: 74 5d je a85e <_dl_lookup_symbol_x+0xcee> 0.00 : a801: 83 ca 08 or $0x8,%edx 0.00 : a804: 31 db xor %ebx,%ebx 0.00 : a806: 41 89 94 24 dc 03 00 mov %edx,0x3dc(%r12) 0.00 : a80d: 00 0.00 : a80e: e9 1e f9 ff ff jmpq a131 <_dl_lookup_symbol_x+0x5c1> 0.00 : a813: 49 8b 8f c8 03 00 00 mov 0x3c8(%r15),%rcx 0.00 : a81a: 48 85 c9 test %rcx,%rcx 0.00 : a81d: 0f 84 cd 01 00 00 je a9f0 <_dl_lookup_symbol_x+0xe80> 0.00 : a823: 49 39 c9 cmp %rcx,%r9 0.00 : a826: 0f 84 a0 01 00 00 je a9cc <_dl_lookup_symbol_x+0xe5c> 0.00 : a82c: 44 8b 01 mov (%rcx),%r8d 0.00 : a82f: 45 85 c0 test %r8d,%r8d 0.00 : a832: 0f 84 aa f8 ff ff je a0e2 <_dl_lookup_symbol_x+0x572> 0.00 : a838: 31 d2 xor %edx,%edx 0.00 : a83a: 4c 3b 61 08 cmp 0x8(%rcx),%r12 0.00 : a83e: 0f 84 68 ff ff ff je a7ac <_dl_lookup_symbol_x+0xc3c> 0.00 : a844: 83 c2 01 add $0x1,%edx 0.00 : a847: 41 39 d0 cmp %edx,%r8d 0.00 : a84a: 0f 86 92 f8 ff ff jbe a0e2 <_dl_lookup_symbol_x+0x572> 0.00 : a850: 89 d0 mov %edx,%eax 0.00 : a852: 4c 3b 64 c1 08 cmp 0x8(%rcx,%rax,8),%r12 0.00 : a857: 75 eb jne a844 <_dl_lookup_symbol_x+0xcd4> 0.00 : a859: e9 4e ff ff ff jmpq a7ac <_dl_lookup_symbol_x+0xc3c> 0.00 : a85e: 41 f6 87 dc 03 00 00 testb $0x8,0x3dc(%r15) 0.00 : a865: 08 0.00 : a866: 75 99 jne a801 <_dl_lookup_symbol_x+0xc91> 0.00 : a868: 41 8b 87 d0 03 00 00 mov 0x3d0(%r15),%eax 0.00 : a86f: 44 39 c0 cmp %r8d,%eax 0.00 : a872: 76 71 jbe a8e5 <_dl_lookup_symbol_x+0xd75> 0.00 : a874: 49 8b 97 c8 03 00 00 mov 0x3c8(%r15),%rdx 0.00 : a87b: 44 89 c0 mov %r8d,%eax 0.00 : a87e: 4c 89 64 c2 08 mov %r12,0x8(%rdx,%rax,8) 0.00 : a883: 49 8b 97 c8 03 00 00 mov 0x3c8(%r15),%rdx 0.00 : a88a: 41 8d 40 01 lea 0x1(%r8),%eax 0.00 : a88e: 89 02 mov %eax,(%rdx) 0.00 : a890: f6 05 89 43 21 00 40 testb $0x40,0x214389(%rip) # 21ec20 <_rtld_global_ro> 0.00 : a897: 75 07 jne a8a0 <_dl_lookup_symbol_x+0xd30> 0.00 : a899: 31 db xor %ebx,%ebx 0.00 : a89b: e9 91 f8 ff ff jmpq a131 <_dl_lookup_symbol_x+0x5c1> 0.00 : a8a0: 49 8b 4f 08 mov 0x8(%r15),%rcx 0.00 : a8a4: 4d 8b 47 30 mov 0x30(%r15),%r8 0.00 : a8a8: 80 39 00 cmpb $0x0,(%rcx) 0.00 : a8ab: 75 0a jne a8b7 <_dl_lookup_symbol_x+0xd47> 0.00 : a8ad: 48 8b 05 54 43 21 00 mov 0x214354(%rip),%rax # 21ec08 <_dl_argv> 0.00 : a8b4: 48 8b 08 mov (%rax),%rcx 0.00 : a8b7: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : a8bc: 49 8b 54 24 30 mov 0x30(%r12),%rdx 0.00 : a8c1: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : a8c4: 75 0a jne a8d0 <_dl_lookup_symbol_x+0xd60> 0.00 : a8c6: 48 8b 05 3b 43 21 00 mov 0x21433b(%rip),%rax # 21ec08 <_dl_argv> 0.00 : a8cd: 48 8b 30 mov (%rax),%rsi 0.00 : a8d0: 48 8d 3d f9 10 01 00 lea 0x110f9(%rip),%rdi # 1b9d0 <__PRETTY_FUNCTION__.3644+0x165f> 0.00 : a8d7: 31 c0 xor %eax,%eax 0.00 : a8d9: 31 db xor %ebx,%ebx 0.00 : a8db: e8 70 4a 00 00 callq f350 <_dl_debug_printf> 0.00 : a8e0: e9 4c f8 ff ff jmpq a131 <_dl_lookup_symbol_x+0x5c1> 0.00 : a8e5: 85 c0 test %eax,%eax 0.00 : a8e7: 41 be 0a 00 00 00 mov $0xa,%r14d 0.00 : a8ed: bb 58 00 00 00 mov $0x58,%ebx 0.00 : a8f2: 74 0f je a903 <_dl_lookup_symbol_x+0xd93> 0.00 : a8f4: 44 8d 34 00 lea (%rax,%rax,1),%r14d 0.00 : a8f8: 44 89 f0 mov %r14d,%eax 0.00 : a8fb: 48 8d 1c c5 08 00 00 lea 0x8(,%rax,8),%rbx 0.00 : a902: 00 0.00 : a903: 64 8b 04 25 4c 00 00 mov %fs:0x4c,%eax 0.00 : a90a: 00 0.00 : a90b: 85 c0 test %eax,%eax 0.00 : a90d: 74 1f je a92e <_dl_lookup_symbol_x+0xdbe> 0.00 : a90f: 44 89 85 10 ff ff ff mov %r8d,-0xf0(%rbp) 0.00 : a916: e8 75 95 00 00 callq 13e90 <_dl_x86_64_save_sse> 0.00 : a91b: 64 c7 04 25 4c 00 00 movl $0x0,%fs:0x4c 0.00 : a922: 00 00 00 00 00 0.00 : a927: 44 8b 85 10 ff ff ff mov -0xf0(%rbp),%r8d 0.00 : a92e: 48 89 df mov %rbx,%rdi 0.00 : a931: 44 89 85 10 ff ff ff mov %r8d,-0xf0(%rbp) 0.00 : a938: e8 73 61 ff ff callq ab0 0.00 : a93d: 48 85 c0 test %rax,%rax 0.00 : a940: 48 89 c3 mov %rax,%rbx 0.00 : a943: 44 8b 85 10 ff ff ff mov -0xf0(%rbp),%r8d 0.00 : a94a: 74 72 je a9be <_dl_lookup_symbol_x+0xe4e> 0.00 : a94c: 44 89 c1 mov %r8d,%ecx 0.00 : a94f: 45 85 c0 test %r8d,%r8d 0.00 : a952: 48 89 8d 18 ff ff ff mov %rcx,-0xe8(%rbp) 0.00 : a959: 74 29 je a984 <_dl_lookup_symbol_x+0xe14> 0.00 : a95b: 49 8b b7 c8 03 00 00 mov 0x3c8(%r15),%rsi 0.00 : a962: 48 89 ca mov %rcx,%rdx 0.00 : a965: 48 8d 78 08 lea 0x8(%rax),%rdi 0.00 : a969: 44 89 85 10 ff ff ff mov %r8d,-0xf0(%rbp) 0.00 : a970: 48 c1 e2 03 shl $0x3,%rdx 0.00 : a974: 48 83 c6 08 add $0x8,%rsi 0.00 : a978: e8 73 c9 00 00 callq 172f0 0.00 : a97d: 44 8b 85 10 ff ff ff mov -0xf0(%rbp),%r8d 0.00 : a984: 48 8b 85 18 ff ff ff mov -0xe8(%rbp),%rax 0.00 : a98b: 4c 89 64 c3 08 mov %r12,0x8(%rbx,%rax,8) 0.00 : a990: 41 8d 40 01 lea 0x1(%r8),%eax 0.00 : a994: 89 03 mov %eax,(%rbx) 0.00 : a996: 49 8b bf c8 03 00 00 mov 0x3c8(%r15),%rdi 0.00 : a99d: 45 89 b7 d0 03 00 00 mov %r14d,0x3d0(%r15) 0.00 : a9a4: 49 89 9f c8 03 00 00 mov %rbx,0x3c8(%r15) 0.00 : a9ab: 48 85 ff test %rdi,%rdi 0.00 : a9ae: 0f 84 dc fe ff ff je a890 <_dl_lookup_symbol_x+0xd20> 0.00 : a9b4: e8 87 6f 00 00 callq 11940 <_dl_scope_free> 0.00 : a9b9: e9 d2 fe ff ff jmpq a890 <_dl_lookup_symbol_x+0xd20> 0.00 : a9be: 41 83 8c 24 dc 03 00 orl $0x8,0x3dc(%r12) 0.00 : a9c5: 00 08 0.00 : a9c7: e9 65 f7 ff ff jmpq a131 <_dl_lookup_symbol_x+0x5c1> 0.00 : a9cc: 45 8b 01 mov (%r9),%r8d 0.00 : a9cf: 45 39 f0 cmp %r14d,%r8d 0.00 : a9d2: 76 1c jbe a9f0 <_dl_lookup_symbol_x+0xe80> 0.00 : a9d4: 44 89 f0 mov %r14d,%eax 0.00 : a9d7: 4d 3b 64 c1 08 cmp 0x8(%r9,%rax,8),%r12 0.00 : a9dc: 0f 84 ca fd ff ff je a7ac <_dl_lookup_symbol_x+0xc3c> 0.00 : a9e2: 41 83 c6 01 add $0x1,%r14d 0.00 : a9e6: 45 39 f0 cmp %r14d,%r8d 0.00 : a9e9: 77 e9 ja a9d4 <_dl_lookup_symbol_x+0xe64> 0.00 : a9eb: e9 f2 f6 ff ff jmpq a0e2 <_dl_lookup_symbol_x+0x572> 0.00 : a9f0: 45 89 f0 mov %r14d,%r8d 0.00 : a9f3: e9 ea f6 ff ff jmpq a0e2 <_dl_lookup_symbol_x+0x572> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/hash/hashfunc.c:519 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000490660 : : register uint32 a, : b, : c; : : a = b = c = 0x9e3779b9 + (uint32) sizeof(uint32) + 3923095; : a += k; 0.00 : 490660: 81 ef ac a9 8c 61 sub $0x618ca9ac,%edi : * hash_any(&k, sizeof(uint32)) : * but is faster and doesn't force the caller to store k into memory. : */ : Datum : hash_uint32(uint32 k) : { 0.00 : 490666: 55 push %rbp : c; : : a = b = c = 0x9e3779b9 + (uint32) sizeof(uint32) + 3923095; : a += k; : : final(a, b, c); 0.00 : 490667: 81 f7 64 d8 6a 2a xor $0x2a6ad864,%edi 0.00 : 49066d: 81 ef 53 21 c3 56 sub $0x56c32153,%edi : * hash_any(&k, sizeof(uint32)) : * but is faster and doesn't force the caller to store k into memory. : */ : Datum : hash_uint32(uint32 k) : { 0.00 : 490673: 48 89 e5 mov %rsp,%rbp : c; : : a = b = c = 0x9e3779b9 + (uint32) sizeof(uint32) + 3923095; : a += k; : : final(a, b, c); 0.00 : 490676: 89 fe mov %edi,%esi 0.00 : 490678: 89 f8 mov %edi,%eax 0.00 : 49067a: c1 c8 07 ror $0x7,%eax 0.00 : 49067d: 81 f6 54 56 73 9e xor $0x9e735654,%esi 0.00 : 490683: 29 c6 sub %eax,%esi : : /* report the result */ : return UInt32GetDatum(c); : } 0.00 : 490685: c9 leaveq : c; : : a = b = c = 0x9e3779b9 + (uint32) sizeof(uint32) + 3923095; : a += k; : : final(a, b, c); 0.00 : 490686: 89 f0 mov %esi,%eax 0.00 : 490688: 89 f2 mov %esi,%edx 0.00 : 49068a: c1 ca 10 ror $0x10,%edx 0.00 : 49068d: 35 64 d8 6a 2a xor $0x2a6ad864,%eax 0.00 : 490692: 29 d0 sub %edx,%eax 0.00 : 490694: 89 c2 mov %eax,%edx 0.00 : 490696: 89 c1 mov %eax,%ecx 0.00 : 490698: c1 c9 1c ror $0x1c,%ecx 0.00 : 49069b: 31 fa xor %edi,%edx 0.00 : 49069d: 29 ca sub %ecx,%edx 33.33 : 49069f: 89 d1 mov %edx,%ecx 0.00 : 4906a1: c1 ca 12 ror $0x12,%edx 0.00 : 4906a4: 31 f1 xor %esi,%ecx 33.33 : 4906a6: 29 d1 sub %edx,%ecx 0.00 : 4906a8: 31 c8 xor %ecx,%eax 33.33 : 4906aa: c1 c9 08 ror $0x8,%ecx 0.00 : 4906ad: 29 c8 sub %ecx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:593 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:812 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:940 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ad290 <_bt_first>: : * Within this routine, we build a temporary insertion-type scankey to use : * in locating the scan start position. : */ : bool : _bt_first(IndexScanDesc scan, ScanDirection dir) : { 0.00 : 4ad290: 55 push %rbp 0.00 : 4ad291: 48 89 e5 mov %rsp,%rbp 0.00 : 4ad294: 41 57 push %r15 0.00 : 4ad296: 41 56 push %r14 0.00 : 4ad298: 41 55 push %r13 0.00 : 4ad29a: 41 54 push %r12 0.00 : 4ad29c: 53 push %rbx 0.00 : 4ad29d: 48 81 ec 68 13 00 00 sub $0x1368,%rsp 0.00 : 4ad2a4: 48 89 bd a0 ec ff ff mov %rdi,-0x1360(%rbp) 0.00 : 4ad2ab: 89 b5 9c ec ff ff mov %esi,-0x1364(%rbp) : Relation rel = scan->indexRelation; 0.00 : 4ad2b1: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 4ad2b5: 48 89 85 a8 ec ff ff mov %rax,-0x1358(%rbp) : BTScanOpaque so = (BTScanOpaque) scan->opaque; 0.00 : 4ad2bc: 48 8b 57 38 mov 0x38(%rdi),%rdx 0.00 : 4ad2c0: 48 89 95 b0 ec ff ff mov %rdx,-0x1350(%rbp) : int keysCount = 0; : int i; : StrategyNumber strat_total; : BTScanPosItem *currItem; : : pgstat_count_index_scan(rel); 0.00 : 4ad2c7: 48 8b 80 38 01 00 00 mov 0x138(%rax),%rax 0.00 : 4ad2ce: 48 85 c0 test %rax,%rax 0.00 : 4ad2d1: 74 05 je 4ad2d8 <_bt_first+0x48> 0.00 : 4ad2d3: 48 83 40 10 01 addq $0x1,0x10(%rax) : : /* : * Examine the scan keys and eliminate any redundant keys; also mark the : * keys that must be matched to continue the scan. : */ : _bt_preprocess_keys(scan); 0.00 : 4ad2d8: 48 8b bd a0 ec ff ff mov -0x1360(%rbp),%rdi 0.00 : 4ad2df: e8 ec 18 00 00 callq 4aebd0 <_bt_preprocess_keys> : : /* : * Quit now if _bt_preprocess_keys() discovered that the scan keys can : * never be satisfied (eg, x == 1 AND x > 2). : */ : if (!so->qual_ok) 0.00 : 4ad2e4: 48 8b 85 b0 ec ff ff mov -0x1350(%rbp),%rax 0.00 : 4ad2eb: 80 38 00 cmpb $0x0,(%rax) 0.00 : 4ad2ee: 0f 84 cc 00 00 00 je 4ad3c0 <_bt_first+0x130> : * The selected scan keys (at most one per index column) are remembered by : * storing their addresses into the local startKeys[] array. : *---------- : */ : strat_total = BTEqualStrategyNumber; : if (so->numberOfKeys > 0) 0.00 : 4ad2f4: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 4ad2f7: 85 d2 test %edx,%edx 0.00 : 4ad2f9: 0f 8e 31 04 00 00 jle 4ad730 <_bt_first+0x4a0> : /* : * Loop iterates from 0 to numberOfKeys inclusive; we use the last : * pass to handle after-last-key processing. Actual exit from the : * loop is at one of the "break" statements below. : */ : for (cur = so->keyData, i = 0;; cur++, i++) 0.00 : 4ad2ff: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 4ad303: 45 31 ff xor %r15d,%r15d 0.00 : 4ad306: 45 31 ed xor %r13d,%r13d 0.00 : 4ad309: 66 c7 85 be ec ff ff movw $0x3,-0x1342(%rbp) 0.00 : 4ad310: 03 00 0.00 : 4ad312: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 4ad318: 31 db xor %ebx,%ebx 0.00 : 4ad31a: 31 f6 xor %esi,%esi 0.00 : 4ad31c: 0f 1f 40 00 nopl 0x0(%rax) : { : if (i >= so->numberOfKeys || cur->sk_attno != curattr) 0.00 : 4ad320: 41 39 d5 cmp %edx,%r13d 0.00 : 4ad323: 7d 0c jge 4ad331 <_bt_first+0xa1> 0.00 : 4ad325: 41 0f b7 4c 24 04 movzwl 0x4(%r12),%ecx 0.00 : 4ad32b: 66 44 39 f1 cmp %r14w,%cx 0.00 : 4ad32f: 74 74 je 4ad3a5 <_bt_first+0x115> : { : /* : * Done looking at keys for curattr. If we didn't find a : * usable boundary key, see if we can deduce a NOT NULL key. : */ : if (chosen == NULL && impliesNN != NULL && 0.00 : 4ad331: 48 85 db test %rbx,%rbx 0.00 : 4ad334: 0f 84 fe 00 00 00 je 4ad438 <_bt_first+0x1a8> : * If we still didn't find a usable boundary key, quit; else : * save the boundary key pointer in startKeys. : */ : if (chosen == NULL) : break; : startKeys[keysCount++] = chosen; 0.00 : 4ad33a: 49 63 c7 movslq %r15d,%rax 0.00 : 4ad33d: 41 83 c7 01 add $0x1,%r15d 0.00 : 4ad341: 48 89 9c c5 c0 fe ff mov %rbx,-0x140(%rbp,%rax,8) 0.00 : 4ad348: ff : : /* : * Adjust strat_total, and quit if we have stored a > or < : * key. : */ : strat = chosen->sk_strategy; 0.00 : 4ad349: 0f b7 43 06 movzwl 0x6(%rbx),%eax : if (strat != BTEqualStrategyNumber) 0.00 : 4ad34d: 66 83 f8 03 cmp $0x3,%ax 0.00 : 4ad351: 74 1b je 4ad36e <_bt_first+0xde> : { : strat_total = strat; : if (strat == BTGreaterStrategyNumber || 0.00 : 4ad353: 66 83 f8 05 cmp $0x5,%ax 0.00 : 4ad357: 0f 84 33 05 00 00 je 4ad890 <_bt_first+0x600> 0.00 : 4ad35d: 66 83 f8 01 cmp $0x1,%ax 0.00 : 4ad361: 0f 84 29 05 00 00 je 4ad890 <_bt_first+0x600> : strat == BTLessStrategyNumber) : break; 0.00 : 4ad367: 66 89 85 be ec ff ff mov %ax,-0x1342(%rbp) : /* : * Done if that was the last attribute, or if next key is not : * in sequence (implying no boundary key is available for the : * next attribute). : */ : if (i >= so->numberOfKeys || 0.00 : 4ad36e: 48 8b 95 b0 ec ff ff mov -0x1350(%rbp),%rdx 0.00 : 4ad375: 44 3b 6a 04 cmp 0x4(%rdx),%r13d 0.00 : 4ad379: 0f 8d e0 00 00 00 jge 4ad45f <_bt_first+0x1cf> 0.00 : 4ad37f: 41 0f b7 4c 24 04 movzwl 0x4(%r12),%ecx 0.00 : 4ad385: 41 0f bf c6 movswl %r14w,%eax 0.00 : 4ad389: 83 c0 01 add $0x1,%eax 0.00 : 4ad38c: 0f bf d1 movswl %cx,%edx 0.00 : 4ad38f: 39 c2 cmp %eax,%edx 0.00 : 4ad391: 0f 85 c8 00 00 00 jne 4ad45f <_bt_first+0x1cf> 0.00 : 4ad397: 48 8b 85 b0 ec ff ff mov -0x1350(%rbp),%rax 0.00 : 4ad39e: 31 db xor %ebx,%ebx 0.00 : 4ad3a0: 31 f6 xor %esi,%esi 0.00 : 4ad3a2: 8b 50 04 mov 0x4(%rax),%edx : * : * If not, does it imply a NOT NULL constraint? (Because : * SK_SEARCHNULL keys are always assigned BTEqualStrategyNumber, : * *any* inequality key works for that; we need not test.) : */ : switch (cur->sk_strategy) 0.00 : 4ad3a5: 66 41 83 7c 24 06 05 cmpw $0x5,0x6(%r12) 0.00 : 4ad3ac: 77 4a ja 4ad3f8 <_bt_first+0x168> 0.00 : 4ad3ae: 41 0f b7 44 24 06 movzwl 0x6(%r12),%eax 0.00 : 4ad3b4: ff 24 c5 60 48 7b 00 jmpq *0x7b4860(,%rax,8) 0.00 : 4ad3bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4ad3c0: 31 d2 xor %edx,%edx : : return true; : } 0.00 : 4ad3c2: 48 81 c4 68 13 00 00 add $0x1368,%rsp 0.00 : 4ad3c9: 89 d0 mov %edx,%eax 0.00 : 4ad3cb: 5b pop %rbx 0.00 : 4ad3cc: 41 5c pop %r12 0.00 : 4ad3ce: 41 5d pop %r13 0.00 : 4ad3d0: 41 5e pop %r14 0.00 : 4ad3d2: 41 5f pop %r15 0.00 : 4ad3d4: c9 leaveq 0.00 : 4ad3d5: c3 retq 0.00 : 4ad3d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ad3dd: 00 00 00 : /* override any non-equality choice */ : chosen = cur; : break; : case BTGreaterEqualStrategyNumber: : case BTGreaterStrategyNumber: : if (chosen == NULL) 0.00 : 4ad3e0: 48 85 db test %rbx,%rbx 0.00 : 4ad3e3: 75 13 jne 4ad3f8 <_bt_first+0x168> : { : if (ScanDirectionIsForward(dir)) 0.00 : 4ad3e5: 83 bd 9c ec ff ff 01 cmpl $0x1,-0x1364(%rbp) 0.00 : 4ad3ec: 74 32 je 4ad420 <_bt_first+0x190> 0.00 : 4ad3ee: 4c 89 e6 mov %r12,%rsi 0.00 : 4ad3f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Loop iterates from 0 to numberOfKeys inclusive; we use the last : * pass to handle after-last-key processing. Actual exit from the : * loop is at one of the "break" statements below. : */ : for (cur = so->keyData, i = 0;; cur++, i++) 0.00 : 4ad3f8: 49 83 c4 48 add $0x48,%r12 0.00 : 4ad3fc: 41 83 c5 01 add $0x1,%r13d 0.00 : 4ad400: 41 89 ce mov %ecx,%r14d : else : impliesNN = cur; : } : break; : } : } 0.00 : 4ad403: e9 18 ff ff ff jmpq 4ad320 <_bt_first+0x90> 0.00 : 4ad408: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ad40f: 00 : */ : switch (cur->sk_strategy) : { : case BTLessStrategyNumber: : case BTLessEqualStrategyNumber: : if (chosen == NULL) 0.00 : 4ad410: 48 85 db test %rbx,%rbx 0.00 : 4ad413: 75 e3 jne 4ad3f8 <_bt_first+0x168> : { : if (ScanDirectionIsBackward(dir)) 0.00 : 4ad415: 83 bd 9c ec ff ff ff cmpl $0xffffffff,-0x1364(%rbp) 0.00 : 4ad41c: 75 d0 jne 4ad3ee <_bt_first+0x15e> 0.00 : 4ad41e: 66 90 xchg %ax,%ax : break; : case BTGreaterEqualStrategyNumber: : case BTGreaterStrategyNumber: : if (chosen == NULL) : { : if (ScanDirectionIsForward(dir)) 0.00 : 4ad420: 4c 89 e3 mov %r12,%rbx : /* : * Loop iterates from 0 to numberOfKeys inclusive; we use the last : * pass to handle after-last-key processing. Actual exit from the : * loop is at one of the "break" statements below. : */ : for (cur = so->keyData, i = 0;; cur++, i++) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:593 33.33 : 4ad423: 41 83 c5 01 add $0x1,%r13d 0.00 : 4ad427: 49 83 c4 48 add $0x48,%r12 0.00 : 4ad42b: 41 89 ce mov %ecx,%r14d 0.00 : 4ad42e: e9 ed fe ff ff jmpq 4ad320 <_bt_first+0x90> 0.00 : 4ad433: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* : * Done looking at keys for curattr. If we didn't find a : * usable boundary key, see if we can deduce a NOT NULL key. : */ : if (chosen == NULL && impliesNN != NULL && 0.00 : 4ad438: 48 85 f6 test %rsi,%rsi 0.00 : 4ad43b: 74 22 je 4ad45f <_bt_first+0x1cf> 0.00 : 4ad43d: 8b 36 mov (%rsi),%esi 0.00 : 4ad43f: 89 f2 mov %esi,%edx 0.00 : 4ad441: 81 e2 00 00 00 02 and $0x2000000,%edx 0.00 : 4ad447: 0f 84 73 02 00 00 je 4ad6c0 <_bt_first+0x430> 0.00 : 4ad44d: 83 bd 9c ec ff ff 01 cmpl $0x1,-0x1364(%rbp) 0.00 : 4ad454: 0f 94 c0 sete %al 0.00 : 4ad457: 84 c0 test %al,%al 0.00 : 4ad459: 0f 85 09 02 00 00 jne 4ad668 <_bt_first+0x3d8> : /* : * If we found no usable boundary keys, we have to start from one end of : * the tree. Walk down that edge to the first or last key, and scan from : * there. : */ : if (keysCount == 0) 0.00 : 4ad45f: 41 83 ff 00 cmp $0x0,%r15d 0.00 : 4ad463: 0f 84 c7 02 00 00 je 4ad730 <_bt_first+0x4a0> : * insertion scankey we can use to search for the boundary point we : * identified above. The insertion scankey is built in the local : * scankeys[] array, using the keys identified by startKeys[]. : */ : Assert(keysCount <= INDEX_MAX_KEYS); : for (i = 0; i < keysCount; i++) 0.00 : 4ad469: 0f 8e b5 01 00 00 jle 4ad624 <_bt_first+0x394> : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4ad46f: 48 8d 8d c0 f5 ff ff lea -0xa40(%rbp),%rcx : * scheme. But, by the same token, if we aren't able to use all : * the row members, then the part of the row comparison that we : * did use has to be treated as just a ">=" or "<=" condition, and : * so we'd better adjust strat_total accordingly. : */ : if (i == keysCount - 1) 0.00 : 4ad476: 41 8d 47 ff lea -0x1(%r15),%eax : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4ad47a: 45 31 ed xor %r13d,%r13d 0.00 : 4ad47d: 45 31 f6 xor %r14d,%r14d 0.00 : 4ad480: 48 89 8d 90 ec ff ff mov %rcx,-0x1370(%rbp) 0.00 : 4ad487: 48 89 cb mov %rcx,%rbx : * scheme. But, by the same token, if we aren't able to use all : * the row members, then the part of the row comparison that we : * did use has to be treated as just a ">=" or "<=" condition, and : * so we'd better adjust strat_total accordingly. : */ : if (i == keysCount - 1) 0.00 : 4ad48a: 89 85 8c ec ff ff mov %eax,-0x1374(%rbp) 0.00 : 4ad490: eb 7c jmp 4ad50e <_bt_first+0x27e> 0.00 : 4ad492: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * have sk_func = 3-way-comparison function), but we have to watch : * out for nulls, which _bt_preprocess_keys didn't check. A null : * in the first row member makes the condition unmatchable, just : * like qual_ok = false. : */ : ScanKey subkey = (ScanKey) DatumGetPointer(cur->sk_argument); 0.00 : 4ad498: 49 8b 4c 24 40 mov 0x40(%r12),%rcx : : Assert(subkey->sk_flags & SK_ROW_MEMBER); : if (subkey->sk_flags & SK_ISNULL) 0.00 : 4ad49d: f6 01 01 testb $0x1,(%rcx) 0.00 : 4ad4a0: 0f 85 1a ff ff ff jne 4ad3c0 <_bt_first+0x130> : return false; : memcpy(scankeys + i, subkey, sizeof(ScanKeyData)); 0.00 : 4ad4a6: 48 8b 01 mov (%rcx),%rax 0.00 : 4ad4a9: 48 89 03 mov %rax,(%rbx) 0.00 : 4ad4ac: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 4ad4b0: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 4ad4b4: 48 8b 41 10 mov 0x10(%rcx),%rax 0.00 : 4ad4b8: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 4ad4bc: 48 8b 41 18 mov 0x18(%rcx),%rax 0.00 : 4ad4c0: 48 89 43 18 mov %rax,0x18(%rbx) 0.00 : 4ad4c4: 48 8b 41 20 mov 0x20(%rcx),%rax 0.00 : 4ad4c8: 48 89 43 20 mov %rax,0x20(%rbx) 0.00 : 4ad4cc: 48 8b 41 28 mov 0x28(%rcx),%rax 0.00 : 4ad4d0: 48 89 43 28 mov %rax,0x28(%rbx) 0.00 : 4ad4d4: 48 8b 41 30 mov 0x30(%rcx),%rax 0.00 : 4ad4d8: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 4ad4dc: 48 8b 41 38 mov 0x38(%rcx),%rax 0.00 : 4ad4e0: 48 89 43 38 mov %rax,0x38(%rbx) 0.00 : 4ad4e4: 48 8b 41 40 mov 0x40(%rcx),%rax 0.00 : 4ad4e8: 48 89 43 40 mov %rax,0x40(%rbx) : * scheme. But, by the same token, if we aren't able to use all : * the row members, then the part of the row comparison that we : * did use has to be treated as just a ">=" or "<=" condition, and : * so we'd better adjust strat_total accordingly. : */ : if (i == keysCount - 1) 0.00 : 4ad4ec: 44 39 ad 8c ec ff ff cmp %r13d,-0x1374(%rbp) 0.00 : 4ad4f3: 0f 84 9a 00 00 00 je 4ad593 <_bt_first+0x303> : * insertion scankey we can use to search for the boundary point we : * identified above. The insertion scankey is built in the local : * scankeys[] array, using the keys identified by startKeys[]. : */ : Assert(keysCount <= INDEX_MAX_KEYS); : for (i = 0; i < keysCount; i++) 0.00 : 4ad4f9: 41 83 c5 01 add $0x1,%r13d 0.00 : 4ad4fd: 48 83 c3 48 add $0x48,%rbx 0.00 : 4ad501: 49 83 c6 04 add $0x4,%r14 0.00 : 4ad505: 45 39 ef cmp %r13d,%r15d 0.00 : 4ad508: 0f 8e 16 01 00 00 jle 4ad624 <_bt_first+0x394> : { : ScanKey cur = startKeys[i]; 0.00 : 4ad50e: 4e 8b a4 75 c0 fe ff mov -0x140(%rbp,%r14,2),%r12 0.00 : 4ad515: ff : : Assert(cur->sk_attno == i + 1); : : if (cur->sk_flags & SK_ROW_HEADER) 0.00 : 4ad516: 41 f6 04 24 04 testb $0x4,(%r12) 0.00 : 4ad51b: 0f 85 77 ff ff ff jne 4ad498 <_bt_first+0x208> : * : * We support the convention that sk_subtype == InvalidOid means : * the opclass input type; this is a hack to simplify life for : * ScanKeyInit(). : */ : if (cur->sk_subtype == rel->rd_opcintype[i] || 0.00 : 4ad521: 48 8b 8d a8 ec ff ff mov -0x1358(%rbp),%rcx 0.00 : 4ad528: 41 8b 54 24 08 mov 0x8(%r12),%edx 0.00 : 4ad52d: 48 8b 81 d0 00 00 00 mov 0xd0(%rcx),%rax 0.00 : 4ad534: 42 8b 34 30 mov (%rax,%r14,1),%esi 0.00 : 4ad538: 39 f2 cmp %esi,%edx 0.00 : 4ad53a: 74 08 je 4ad544 <_bt_first+0x2b4> 0.00 : 4ad53c: 85 d2 test %edx,%edx 0.00 : 4ad53e: 0f 85 8c 01 00 00 jne 4ad6d0 <_bt_first+0x440> : cur->sk_subtype == InvalidOid) : { : FmgrInfo *procinfo; : : procinfo = index_getprocinfo(rel, cur->sk_attno, BTORDER_PROC); 0.00 : 4ad544: 41 0f bf 74 24 04 movswl 0x4(%r12),%esi 0.00 : 4ad54a: 48 8b bd a8 ec ff ff mov -0x1358(%rbp),%rdi 0.00 : 4ad551: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ad556: e8 65 7b ff ff callq 4a50c0 : ScanKeyEntryInitializeWithInfo(scankeys + i, /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:812 33.33 : 4ad55b: 49 8b 4c 24 40 mov 0x40(%r12),%rcx 0.00 : 4ad560: 41 0f bf 54 24 04 movswl 0x4(%r12),%edx 0.00 : 4ad566: 48 89 df mov %rbx,%rdi 0.00 : 4ad569: 45 8b 4c 24 0c mov 0xc(%r12),%r9d 0.00 : 4ad56e: 45 8b 44 24 08 mov 0x8(%r12),%r8d 0.00 : 4ad573: 48 89 04 24 mov %rax,(%rsp) 0.00 : 4ad577: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 4ad57c: 41 8b 34 24 mov (%r12),%esi 0.00 : 4ad580: 31 c9 xor %ecx,%ecx 0.00 : 4ad582: e8 b9 65 fc ff callq 473b40 : * : * We support the convention that sk_subtype == InvalidOid means : * the opclass input type; this is a hack to simplify life for : * ScanKeyInit(). : */ : if (cur->sk_subtype == rel->rd_opcintype[i] || 0.00 : 4ad587: e9 6d ff ff ff jmpq 4ad4f9 <_bt_first+0x269> 0.00 : 4ad58c: 0f 1f 40 00 nopl 0x0(%rax) : if (subkey->sk_flags & SK_ISNULL) : break; /* can't use null keys */ : Assert(keysCount < INDEX_MAX_KEYS); : memcpy(scankeys + keysCount, subkey, sizeof(ScanKeyData)); : keysCount++; : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4ad590: 41 89 f7 mov %esi,%r15d : bool used_all_subkeys = false; : : Assert(!(subkey->sk_flags & SK_ROW_END)); : for (;;) : { : subkey++; 0.00 : 4ad593: 48 83 c1 48 add $0x48,%rcx : Assert(subkey->sk_flags & SK_ROW_MEMBER); : if (subkey->sk_attno != keysCount + 1) 0.00 : 4ad597: 41 8d 47 01 lea 0x1(%r15),%eax 0.00 : 4ad59b: 0f bf 71 04 movswl 0x4(%rcx),%esi 0.00 : 4ad59f: 39 c6 cmp %eax,%esi 0.00 : 4ad5a1: 0f 85 f1 05 00 00 jne 4adb98 <_bt_first+0x908> : break; /* out-of-sequence, can't use it */ : if (subkey->sk_strategy != cur->sk_strategy) 0.00 : 4ad5a7: 0f b7 41 06 movzwl 0x6(%rcx),%eax 0.00 : 4ad5ab: 66 41 3b 44 24 06 cmp 0x6(%r12),%ax 0.00 : 4ad5b1: 0f 85 e1 05 00 00 jne 4adb98 <_bt_first+0x908> : break; /* wrong direction, can't use it */ : if (subkey->sk_flags & SK_ISNULL) 0.00 : 4ad5b7: f6 01 01 testb $0x1,(%rcx) 0.00 : 4ad5ba: 0f 85 d8 05 00 00 jne 4adb98 <_bt_first+0x908> : break; /* can't use null keys */ : Assert(keysCount < INDEX_MAX_KEYS); : memcpy(scankeys + keysCount, subkey, sizeof(ScanKeyData)); 0.00 : 4ad5c0: 48 8b 95 90 ec ff ff mov -0x1370(%rbp),%rdx 0.00 : 4ad5c7: 49 63 c7 movslq %r15d,%rax 0.00 : 4ad5ca: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 4ad5ce: 48 8d 04 c2 lea (%rdx,%rax,8),%rax 0.00 : 4ad5d2: 48 8b 11 mov (%rcx),%rdx 0.00 : 4ad5d5: 48 89 10 mov %rdx,(%rax) 0.00 : 4ad5d8: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 4ad5dc: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 4ad5e0: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 4ad5e4: 48 89 50 10 mov %rdx,0x10(%rax) 0.00 : 4ad5e8: 48 8b 51 18 mov 0x18(%rcx),%rdx 0.00 : 4ad5ec: 48 89 50 18 mov %rdx,0x18(%rax) 0.00 : 4ad5f0: 48 8b 51 20 mov 0x20(%rcx),%rdx 0.00 : 4ad5f4: 48 89 50 20 mov %rdx,0x20(%rax) 0.00 : 4ad5f8: 48 8b 51 28 mov 0x28(%rcx),%rdx 0.00 : 4ad5fc: 48 89 50 28 mov %rdx,0x28(%rax) 0.00 : 4ad600: 48 8b 51 30 mov 0x30(%rcx),%rdx 0.00 : 4ad604: 48 89 50 30 mov %rdx,0x30(%rax) 0.00 : 4ad608: 48 8b 51 38 mov 0x38(%rcx),%rdx 0.00 : 4ad60c: 48 89 50 38 mov %rdx,0x38(%rax) 0.00 : 4ad610: 48 8b 51 40 mov 0x40(%rcx),%rdx 0.00 : 4ad614: 48 89 50 40 mov %rdx,0x40(%rax) : keysCount++; : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4ad618: f6 01 10 testb $0x10,(%rcx) 0.00 : 4ad61b: 0f 84 6f ff ff ff je 4ad590 <_bt_first+0x300> 0.00 : 4ad621: 41 89 f7 mov %esi,%r15d : * : * If goback = true, we will then step back one item, while if : * goback = false, we will start the scan on the located item. : *---------- : */ : switch (strat_total) 0.00 : 4ad624: 66 83 bd be ec ff ff cmpw $0x5,-0x1342(%rbp) 0.00 : 4ad62b: 05 0.00 : 4ad62c: 0f 86 4e 02 00 00 jbe 4ad880 <_bt_first+0x5f0> : goback = false; : break; : : default: : /* can't get here, but keep compiler quiet */ : elog(ERROR, "unrecognized strat_total: %d", (int) strat_total); 0.00 : 4ad632: ba df 48 7b 00 mov $0x7b48df,%edx 0.00 : 4ad637: be a4 03 00 00 mov $0x3a4,%esi 0.00 : 4ad63c: bf 70 47 7b 00 mov $0x7b4770,%edi 0.00 : 4ad641: e8 da dd 2c 00 callq 77b420 0.00 : 4ad646: 0f b7 95 be ec ff ff movzwl -0x1342(%rbp),%edx 0.00 : 4ad64d: be 97 47 7b 00 mov $0x7b4797,%esi 0.00 : 4ad652: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ad657: 31 c0 xor %eax,%eax 0.00 : 4ad659: e8 d2 db 2c 00 callq 77b230 0.00 : 4ad65e: e8 6d be fb ff callq 4694d0 0.00 : 4ad663: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : ((impliesNN->sk_flags & SK_BT_NULLS_FIRST) ? : ScanDirectionIsForward(dir) : : ScanDirectionIsBackward(dir))) : { : /* Yes, so build the key in notnullkeys[keysCount] */ : chosen = ¬nullkeys[keysCount]; 0.00 : 4ad668: 49 63 c7 movslq %r15d,%rax : ScanKeyEntryInitialize(chosen, 0.00 : 4ad66b: 83 fa 01 cmp $0x1,%edx 0.00 : 4ad66e: 41 0f bf d6 movswl %r14w,%edx : ((impliesNN->sk_flags & SK_BT_NULLS_FIRST) ? : ScanDirectionIsForward(dir) : : ScanDirectionIsBackward(dir))) : { : /* Yes, so build the key in notnullkeys[keysCount] */ : chosen = ¬nullkeys[keysCount]; 0.00 : 4ad672: 48 8d 04 c0 lea (%rax,%rax,8),%rax : ScanKeyEntryInitialize(chosen, 0.00 : 4ad676: 19 c9 sbb %ecx,%ecx 0.00 : 4ad678: 81 e6 00 00 00 03 and $0x3000000,%esi 0.00 : 4ad67e: 83 e1 fc and $0xfffffffc,%ecx 0.00 : 4ad681: 40 80 ce 81 or $0x81,%sil 0.00 : 4ad685: 45 31 c9 xor %r9d,%r9d : ((impliesNN->sk_flags & SK_BT_NULLS_FIRST) ? : ScanDirectionIsForward(dir) : : ScanDirectionIsBackward(dir))) : { : /* Yes, so build the key in notnullkeys[keysCount] */ : chosen = ¬nullkeys[keysCount]; 0.00 : 4ad688: 48 8d 9c c5 c0 ec ff lea -0x1340(%rbp,%rax,8),%rbx 0.00 : 4ad68f: ff : ScanKeyEntryInitialize(chosen, 0.00 : 4ad690: 83 c1 05 add $0x5,%ecx 0.00 : 4ad693: 45 31 c0 xor %r8d,%r8d 0.00 : 4ad696: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : 4ad69d: 00 00 0.00 : 4ad69f: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 4ad6a6: 48 89 df mov %rbx,%rdi 0.00 : 4ad6a9: e8 02 65 fc ff callq 473bb0 : : /* : * If we still didn't find a usable boundary key, quit; else : * save the boundary key pointer in startKeys. : */ : if (chosen == NULL) 0.00 : 4ad6ae: 48 85 db test %rbx,%rbx 0.00 : 4ad6b1: 0f 85 83 fc ff ff jne 4ad33a <_bt_first+0xaa> 0.00 : 4ad6b7: e9 a3 fd ff ff jmpq 4ad45f <_bt_first+0x1cf> 0.00 : 4ad6bc: 0f 1f 40 00 nopl 0x0(%rax) : { : /* : * Done looking at keys for curattr. If we didn't find a : * usable boundary key, see if we can deduce a NOT NULL key. : */ : if (chosen == NULL && impliesNN != NULL && 0.00 : 4ad6c0: 83 bd 9c ec ff ff ff cmpl $0xffffffff,-0x1364(%rbp) 0.00 : 4ad6c7: 0f 94 c0 sete %al 0.00 : 4ad6ca: e9 88 fd ff ff jmpq 4ad457 <_bt_first+0x1c7> 0.00 : 4ad6cf: 90 nop : } : else : { : RegProcedure cmp_proc; : : cmp_proc = get_opfamily_proc(rel->rd_opfamily[i], 0.00 : 4ad6d0: 48 8b 8d a8 ec ff ff mov -0x1358(%rbp),%rcx 0.00 : 4ad6d7: 48 8b 81 c8 00 00 00 mov 0xc8(%rcx),%rax 0.00 : 4ad6de: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4ad6e3: 42 8b 3c 30 mov (%rax,%r14,1),%edi 0.00 : 4ad6e7: e8 c4 51 2c 00 callq 7728b0 : rel->rd_opcintype[i], : cur->sk_subtype, : BTORDER_PROC); : if (!RegProcedureIsValid(cmp_proc)) 0.00 : 4ad6ec: 85 c0 test %eax,%eax : } : else : { : RegProcedure cmp_proc; : : cmp_proc = get_opfamily_proc(rel->rd_opfamily[i], 0.00 : 4ad6ee: 89 c1 mov %eax,%ecx : rel->rd_opcintype[i], : cur->sk_subtype, : BTORDER_PROC); : if (!RegProcedureIsValid(cmp_proc)) 0.00 : 4ad6f0: 0f 84 4e 04 00 00 je 4adb44 <_bt_first+0x8b4> : elog(ERROR, "missing support function %d(%u,%u) for attribute %d of index \"%s\"", : BTORDER_PROC, rel->rd_opcintype[i], cur->sk_subtype, : cur->sk_attno, RelationGetRelationName(rel)); : ScanKeyEntryInitialize(scankeys + i, 0.00 : 4ad6f6: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 4ad6fb: 41 0f bf 54 24 04 movswl 0x4(%r12),%edx 0.00 : 4ad701: 48 89 df mov %rbx,%rdi 0.00 : 4ad704: 45 8b 4c 24 0c mov 0xc(%r12),%r9d 0.00 : 4ad709: 45 8b 44 24 08 mov 0x8(%r12),%r8d 0.00 : 4ad70e: 89 0c 24 mov %ecx,(%rsp) 0.00 : 4ad711: 31 c9 xor %ecx,%ecx 0.00 : 4ad713: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 4ad718: 41 8b 34 24 mov (%r12),%esi 0.00 : 4ad71c: e8 8f 64 fc ff callq 473bb0 0.00 : 4ad721: e9 d3 fd ff ff jmpq 4ad4f9 <_bt_first+0x269> 0.00 : 4ad726: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ad72d: 00 00 00 : * same as for _bt_first(). : */ : static bool : _bt_endpoint(IndexScanDesc scan, ScanDirection dir) : { : Relation rel = scan->indexRelation; 0.00 : 4ad730: 48 8b 95 a0 ec ff ff mov -0x1360(%rbp),%rdx 0.00 : 4ad737: 4c 8b 6a 08 mov 0x8(%rdx),%r13 : BTScanOpaque so = (BTScanOpaque) scan->opaque; 0.00 : 4ad73b: 4c 8b 72 38 mov 0x38(%rdx),%r14 : /* : * Scan down to the leftmost or rightmost leaf page. This is a simplified : * version of _bt_search(). We don't maintain a stack since we know we : * won't need it. : */ : buf = _bt_get_endpoint(rel, 0, ScanDirectionIsBackward(dir)); 0.00 : 4ad73f: 31 d2 xor %edx,%edx 0.00 : 4ad741: 83 bd 9c ec ff ff ff cmpl $0xffffffff,-0x1364(%rbp) 0.00 : 4ad748: 4c 89 ef mov %r13,%rdi 0.00 : 4ad74b: 0f 94 c2 sete %dl 0.00 : 4ad74e: 31 f6 xor %esi,%esi 0.00 : 4ad750: e8 eb ea ff ff callq 4ac240 <_bt_get_endpoint> : : if (!BufferIsValid(buf)) 0.00 : 4ad755: 85 c0 test %eax,%eax : /* : * Scan down to the leftmost or rightmost leaf page. This is a simplified : * version of _bt_search(). We don't maintain a stack since we know we : * won't need it. : */ : buf = _bt_get_endpoint(rel, 0, ScanDirectionIsBackward(dir)); 0.00 : 4ad757: 41 89 c4 mov %eax,%r12d : : if (!BufferIsValid(buf)) 0.00 : 4ad75a: 0f 84 3c 01 00 00 je 4ad89c <_bt_first+0x60c> : PredicateLockRelation(rel, scan->xs_snapshot); : so->currPos.buf = InvalidBuffer; : return false; : } : : PredicateLockPage(rel, BufferGetBlockNumber(buf), scan->xs_snapshot); 0.00 : 4ad760: 48 8b 85 a0 ec ff ff mov -0x1360(%rbp),%rax 0.00 : 4ad767: 44 89 e7 mov %r12d,%edi 0.00 : 4ad76a: 48 8b 58 10 mov 0x10(%rax),%rbx 0.00 : 4ad76e: e8 bd 68 1c 00 callq 674030 0.00 : 4ad773: 4c 89 ef mov %r13,%rdi 0.00 : 4ad776: 89 c6 mov %eax,%esi 0.00 : 4ad778: 48 89 da mov %rbx,%rdx 0.00 : 4ad77b: e8 e0 5a 1e 00 callq 693260 : page = BufferGetPage(buf); 0.00 : 4ad780: 45 85 e4 test %r12d,%r12d 0.00 : 4ad783: 0f 88 91 03 00 00 js 4adb1a <_bt_first+0x88a> 0.00 : 4ad789: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4ad78e: 48 63 d0 movslq %eax,%rdx 0.00 : 4ad791: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4ad795: 48 03 15 5c 23 71 00 add 0x71235c(%rip),%rdx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : Assert(P_ISLEAF(opaque)); : : if (ScanDirectionIsForward(dir)) 0.00 : 4ad79c: 83 bd 9c ec ff ff 01 cmpl $0x1,-0x1364(%rbp) : return false; : } : : PredicateLockPage(rel, BufferGetBlockNumber(buf), scan->xs_snapshot); : page = BufferGetPage(buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ad7a3: 0f b7 42 10 movzwl 0x10(%rdx),%eax : Assert(P_ISLEAF(opaque)); : : if (ScanDirectionIsForward(dir)) 0.00 : 4ad7a7: 0f 84 4d 03 00 00 je 4adafa <_bt_first+0x86a> : /* There could be dead pages to the left, so not this: */ : /* Assert(P_LEFTMOST(opaque)); */ : : start = P_FIRSTDATAKEY(opaque); : } : else if (ScanDirectionIsBackward(dir)) 0.00 : 4ad7ad: 83 bd 9c ec ff ff ff cmpl $0xffffffff,-0x1364(%rbp) 0.00 : 4ad7b4: 0f 85 ff 03 00 00 jne 4adbb9 <_bt_first+0x929> : { : Assert(P_RIGHTMOST(opaque)); : : start = PageGetMaxOffsetNumber(page); 0.00 : 4ad7ba: 0f b7 42 0c movzwl 0xc(%rdx),%eax : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4ad7be: 31 d2 xor %edx,%edx : } : else if (ScanDirectionIsBackward(dir)) : { : Assert(P_RIGHTMOST(opaque)); : : start = PageGetMaxOffsetNumber(page); 0.00 : 4ad7c0: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4ad7c4: 0f 87 f4 00 00 00 ja 4ad8be <_bt_first+0x62e> : elog(ERROR, "invalid scan direction: %d", (int) dir); : start = 0; /* keep compiler quiet */ : } : : /* remember which buffer we have pinned */ : so->currPos.buf = buf; 0.00 : 4ad7ca: 45 89 66 54 mov %r12d,0x54(%r14) : so->currPos.moreLeft = false; : so->currPos.moreRight = true; : } : else : { : so->currPos.moreLeft = true; 0.00 : 4ad7ce: 41 c6 46 5c 01 movb $0x1,0x5c(%r14) : so->currPos.moreRight = false; 0.00 : 4ad7d3: 41 c6 46 5d 00 movb $0x0,0x5d(%r14) : } : so->numKilled = 0; /* just paranoia */ 0.00 : 4ad7d8: 41 c7 46 38 00 00 00 movl $0x0,0x38(%r14) 0.00 : 4ad7df: 00 : so->markItemIndex = -1; /* ditto */ 0.00 : 4ad7e0: 41 c7 46 50 ff ff ff movl $0xffffffff,0x50(%r14) 0.00 : 4ad7e7: ff : : /* : * Now load data from the first page of the scan. : */ : if (!_bt_readpage(scan, dir, start)) 0.00 : 4ad7e8: 8b b5 9c ec ff ff mov -0x1364(%rbp),%esi 0.00 : 4ad7ee: 48 8b bd a0 ec ff ff mov -0x1360(%rbp),%rdi 0.00 : 4ad7f5: e8 e6 eb ff ff callq 4ac3e0 <_bt_readpage> 0.00 : 4ad7fa: 84 c0 test %al,%al 0.00 : 4ad7fc: 75 1c jne 4ad81a <_bt_first+0x58a> : { : /* : * There's no actually-matching data on this page. Try to advance to : * the next page. Return false if there's no matching data at all. : */ : if (!_bt_steppage(scan, dir)) 0.00 : 4ad7fe: 8b b5 9c ec ff ff mov -0x1364(%rbp),%esi 0.00 : 4ad804: 48 8b bd a0 ec ff ff mov -0x1360(%rbp),%rdi 0.00 : 4ad80b: e8 70 ee ff ff callq 4ac680 <_bt_steppage> 0.00 : 4ad810: 31 d2 xor %edx,%edx 0.00 : 4ad812: 84 c0 test %al,%al 0.00 : 4ad814: 0f 84 a8 fb ff ff je 4ad3c2 <_bt_first+0x132> : return false; : } : : /* Drop the lock, but not pin, on the current page */ : LockBuffer(so->currPos.buf, BUFFER_LOCK_UNLOCK); 0.00 : 4ad81a: 41 8b 7e 54 mov 0x54(%r14),%edi 0.00 : 4ad81e: 31 f6 xor %esi,%esi 0.00 : 4ad820: e8 eb 6e 1c 00 callq 674710 : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; 0.00 : 4ad825: 49 63 46 6c movslq 0x6c(%r14),%rax : scan->xs_ctup.t_self = currItem->heapTid; 0.00 : 4ad829: 48 8b 95 a0 ec ff ff mov -0x1360(%rbp),%rdx 0.00 : 4ad830: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 4ad834: 49 8d 4c 46 60 lea 0x60(%r14,%rax,2),%rcx 0.00 : 4ad839: 8b 41 10 mov 0x10(%rcx),%eax 0.00 : 4ad83c: 89 42 54 mov %eax,0x54(%rdx) 0.00 : 4ad83f: 0f b7 41 14 movzwl 0x14(%rcx),%eax 0.00 : 4ad843: 66 89 42 58 mov %ax,0x58(%rdx) : if (scan->xs_want_itup) 0.00 : 4ad847: 48 8b 85 a0 ec ff ff mov -0x1360(%rbp),%rax 0.00 : 4ad84e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ad853: 80 78 30 00 cmpb $0x0,0x30(%rax) 0.00 : 4ad857: 0f 84 65 fb ff ff je 4ad3c2 <_bt_first+0x132> : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4ad85d: 0f b7 41 18 movzwl 0x18(%rcx),%eax 0.00 : 4ad861: 48 8b 95 a0 ec ff ff mov -0x1360(%rbp),%rdx 0.00 : 4ad868: 49 03 46 40 add 0x40(%r14),%rax 0.00 : 4ad86c: 48 89 42 40 mov %rax,0x40(%rdx) 0.00 : 4ad870: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ad875: e9 48 fb ff ff jmpq 4ad3c2 <_bt_first+0x132> 0.00 : 4ad87a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * : * If goback = true, we will then step back one item, while if : * goback = false, we will start the scan on the located item. : *---------- : */ : switch (strat_total) 0.00 : 4ad880: 0f b7 85 be ec ff ff movzwl -0x1342(%rbp),%eax 0.00 : 4ad887: ff 24 c5 90 48 7b 00 jmpq *0x7b4890(,%rax,8) 0.00 : 4ad88e: 66 90 xchg %ax,%ax : else : impliesNN = cur; : } : break; : } : } 0.00 : 4ad890: 66 89 85 be ec ff ff mov %ax,-0x1342(%rbp) 0.00 : 4ad897: e9 c3 fb ff ff jmpq 4ad45f <_bt_first+0x1cf> : { : /* : * Empty index. Lock the whole relation, as nothing finer to lock : * exists. : */ : PredicateLockRelation(rel, scan->xs_snapshot); 0.00 : 4ad89c: 48 8b 8d a0 ec ff ff mov -0x1360(%rbp),%rcx 0.00 : 4ad8a3: 4c 89 ef mov %r13,%rdi 0.00 : 4ad8a6: 48 8b 71 10 mov 0x10(%rcx),%rsi 0.00 : 4ad8aa: e8 21 6d 1e 00 callq 6945d0 : so->currPos.buf = InvalidBuffer; 0.00 : 4ad8af: 41 c7 46 54 00 00 00 movl $0x0,0x54(%r14) 0.00 : 4ad8b6: 00 0.00 : 4ad8b7: 31 d2 xor %edx,%edx 0.00 : 4ad8b9: e9 04 fb ff ff jmpq 4ad3c2 <_bt_first+0x132> : } : else if (ScanDirectionIsBackward(dir)) : { : Assert(P_RIGHTMOST(opaque)); : : start = PageGetMaxOffsetNumber(page); 0.00 : 4ad8be: 0f b7 c0 movzwl %ax,%eax 0.00 : 4ad8c1: 48 83 e8 18 sub $0x18,%rax 0.00 : 4ad8c5: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4ad8c9: 0f b7 d0 movzwl %ax,%edx 0.00 : 4ad8cc: e9 f9 fe ff ff jmpq 4ad7ca <_bt_first+0x53a> 0.00 : 4ad8d1: 48 8d 95 c0 f5 ff ff lea -0xa40(%rbp),%rdx : * : * If goback = true, we will then step back one item, while if : * goback = false, we will start the scan on the located item. : *---------- : */ : switch (strat_total) 0.00 : 4ad8d8: 45 31 ed xor %r13d,%r13d 0.00 : 4ad8db: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 4ad8e1: 48 89 95 90 ec ff ff mov %rdx,-0x1370(%rbp) 0.00 : 4ad8e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ad8ef: 00 : : /* : * Use the manufactured insertion scan key to descend the tree and : * position ourselves on the target leaf page. : */ : stack = _bt_search(rel, keysCount, scankeys, nextkey, &buf, BT_READ); 0.00 : 4ad8f0: 48 8b 95 90 ec ff ff mov -0x1370(%rbp),%rdx /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:940 33.33 : 4ad8f7: 48 8b bd a8 ec ff ff mov -0x1358(%rbp),%rdi 0.00 : 4ad8fe: 4c 8d 45 cc lea -0x34(%rbp),%r8 0.00 : 4ad902: 44 89 e1 mov %r12d,%ecx 0.00 : 4ad905: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 4ad90b: 44 89 fe mov %r15d,%esi 0.00 : 4ad90e: e8 ed f7 ff ff callq 4ad100 <_bt_search> 0.00 : 4ad913: 48 89 c7 mov %rax,%rdi : : /* don't need to keep the stack around... */ : _bt_freestack(stack); 0.00 : 4ad916: e8 55 1f 00 00 callq 4af870 <_bt_freestack> : : /* remember which buffer we have pinned, if any */ : so->currPos.buf = buf; 0.00 : 4ad91b: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 4ad91e: 48 8b 8d b0 ec ff ff mov -0x1350(%rbp),%rcx 0.00 : 4ad925: 89 41 54 mov %eax,0x54(%rcx) : : if (!BufferIsValid(buf)) 0.00 : 4ad928: 8b 7d cc mov -0x34(%rbp),%edi 0.00 : 4ad92b: 85 ff test %edi,%edi 0.00 : 4ad92d: 0f 84 95 01 00 00 je 4adac8 <_bt_first+0x838> : */ : PredicateLockRelation(rel, scan->xs_snapshot); : return false; : } : else : PredicateLockPage(rel, BufferGetBlockNumber(buf), 0.00 : 4ad933: 48 8b 95 a0 ec ff ff mov -0x1360(%rbp),%rdx 0.00 : 4ad93a: 48 8b 5a 10 mov 0x10(%rdx),%rbx 0.00 : 4ad93e: e8 ed 66 1c 00 callq 674030 0.00 : 4ad943: 48 8b bd a8 ec ff ff mov -0x1358(%rbp),%rdi 0.00 : 4ad94a: 89 c6 mov %eax,%esi 0.00 : 4ad94c: 48 89 da mov %rbx,%rdx 0.00 : 4ad94f: e8 0c 59 1e 00 callq 693260 : scan->xs_snapshot); : : /* initialize moreLeft/moreRight appropriately for scan direction */ : if (ScanDirectionIsForward(dir)) 0.00 : 4ad954: 83 bd 9c ec ff ff 01 cmpl $0x1,-0x1364(%rbp) 0.00 : 4ad95b: 0f 84 85 01 00 00 je 4adae6 <_bt_first+0x856> : so->currPos.moreLeft = false; : so->currPos.moreRight = true; : } : else : { : so->currPos.moreLeft = true; 0.00 : 4ad961: 48 8b 85 b0 ec ff ff mov -0x1350(%rbp),%rax 0.00 : 4ad968: c6 40 5c 01 movb $0x1,0x5c(%rax) : so->currPos.moreRight = false; 0.00 : 4ad96c: c6 40 5d 00 movb $0x0,0x5d(%rax) : } : so->numKilled = 0; /* just paranoia */ 0.00 : 4ad970: 48 8b 95 b0 ec ff ff mov -0x1350(%rbp),%rdx : so->markItemIndex = -1; /* ditto */ : : /* position to the precise item on the page */ : offnum = _bt_binsrch(rel, buf, keysCount, scankeys, nextkey); 0.00 : 4ad977: 45 89 e0 mov %r12d,%r8d : else : { : so->currPos.moreLeft = true; : so->currPos.moreRight = false; : } : so->numKilled = 0; /* just paranoia */ 0.00 : 4ad97a: c7 42 38 00 00 00 00 movl $0x0,0x38(%rdx) : so->markItemIndex = -1; /* ditto */ 0.00 : 4ad981: c7 42 50 ff ff ff ff movl $0xffffffff,0x50(%rdx) : : /* position to the precise item on the page */ : offnum = _bt_binsrch(rel, buf, keysCount, scankeys, nextkey); 0.00 : 4ad988: 44 89 fa mov %r15d,%edx 0.00 : 4ad98b: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 4ad98e: 48 8b 8d 90 ec ff ff mov -0x1370(%rbp),%rcx 0.00 : 4ad995: 48 8b bd a8 ec ff ff mov -0x1358(%rbp),%rdi 0.00 : 4ad99c: e8 bf f4 ff ff callq 4ace60 <_bt_binsrch> : * this results in an offset before the first item or after the last one, : * _bt_readpage will report no items found, and then we'll step to the : * next page as needed.) : */ : if (goback) : offnum = OffsetNumberPrev(offnum); 0.00 : 4ad9a1: 41 80 fd 01 cmp $0x1,%r13b : : /* : * Now load data from the first page of the scan. : */ : if (!_bt_readpage(scan, dir, offnum)) 0.00 : 4ad9a5: 8b b5 9c ec ff ff mov -0x1364(%rbp),%esi 0.00 : 4ad9ab: 48 8b bd a0 ec ff ff mov -0x1360(%rbp),%rdi : * this results in an offset before the first item or after the last one, : * _bt_readpage will report no items found, and then we'll step to the : * next page as needed.) : */ : if (goback) : offnum = OffsetNumberPrev(offnum); 0.00 : 4ad9b2: 66 83 d0 ff adc $0xffff,%ax : : /* : * Now load data from the first page of the scan. : */ : if (!_bt_readpage(scan, dir, offnum)) 0.00 : 4ad9b6: 0f b7 d0 movzwl %ax,%edx 0.00 : 4ad9b9: e8 22 ea ff ff callq 4ac3e0 <_bt_readpage> 0.00 : 4ad9be: 84 c0 test %al,%al 0.00 : 4ad9c0: 75 1a jne 4ad9dc <_bt_first+0x74c> : { : /* : * There's no actually-matching data on this page. Try to advance to : * the next page. Return false if there's no matching data at all. : */ : if (!_bt_steppage(scan, dir)) 0.00 : 4ad9c2: 8b b5 9c ec ff ff mov -0x1364(%rbp),%esi 0.00 : 4ad9c8: 48 8b bd a0 ec ff ff mov -0x1360(%rbp),%rdi 0.00 : 4ad9cf: e8 ac ec ff ff callq 4ac680 <_bt_steppage> 0.00 : 4ad9d4: 84 c0 test %al,%al 0.00 : 4ad9d6: 0f 84 e4 f9 ff ff je 4ad3c0 <_bt_first+0x130> : return false; : } : : /* Drop the lock, but not pin, on the current page */ : LockBuffer(so->currPos.buf, BUFFER_LOCK_UNLOCK); 0.00 : 4ad9dc: 48 8b 8d b0 ec ff ff mov -0x1350(%rbp),%rcx 0.00 : 4ad9e3: 31 f6 xor %esi,%esi 0.00 : 4ad9e5: 8b 79 54 mov 0x54(%rcx),%edi 0.00 : 4ad9e8: e8 23 6d 1c 00 callq 674710 : : /* OK, itemIndex says what to return */ : currItem = &so->currPos.items[so->currPos.itemIndex]; 0.00 : 4ad9ed: 48 8b 95 b0 ec ff ff mov -0x1350(%rbp),%rdx 0.00 : 4ad9f4: 48 63 42 6c movslq 0x6c(%rdx),%rax : scan->xs_ctup.t_self = currItem->heapTid; 0.00 : 4ad9f8: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 4ad9fc: 48 8d 4c 42 60 lea 0x60(%rdx,%rax,2),%rcx 0.00 : 4ada01: 48 8b 95 a0 ec ff ff mov -0x1360(%rbp),%rdx 0.00 : 4ada08: 8b 41 10 mov 0x10(%rcx),%eax 0.00 : 4ada0b: 89 42 54 mov %eax,0x54(%rdx) 0.00 : 4ada0e: 0f b7 41 14 movzwl 0x14(%rcx),%eax 0.00 : 4ada12: 66 89 42 58 mov %ax,0x58(%rdx) : if (scan->xs_want_itup) 0.00 : 4ada16: 48 8b 85 a0 ec ff ff mov -0x1360(%rbp),%rax 0.00 : 4ada1d: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ada22: 80 78 30 00 cmpb $0x0,0x30(%rax) 0.00 : 4ada26: 0f 84 96 f9 ff ff je 4ad3c2 <_bt_first+0x132> : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); 0.00 : 4ada2c: 48 8b 95 b0 ec ff ff mov -0x1350(%rbp),%rdx 0.00 : 4ada33: 0f b7 41 18 movzwl 0x18(%rcx),%eax 0.00 : 4ada37: 48 8b 8d a0 ec ff ff mov -0x1360(%rbp),%rcx 0.00 : 4ada3e: 48 03 42 40 add 0x40(%rdx),%rax 0.00 : 4ada42: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4ada47: 48 89 41 40 mov %rax,0x40(%rcx) 0.00 : 4ada4b: e9 72 f9 ff ff jmpq 4ad3c2 <_bt_first+0x132> : : /* : * If a backward scan was specified, need to start with last equal : * item not first one. : */ : if (ScanDirectionIsBackward(dir)) 0.00 : 4ada50: 83 bd 9c ec ff ff ff cmpl $0xffffffff,-0x1364(%rbp) 0.00 : 4ada57: 48 8d 85 c0 f5 ff ff lea -0xa40(%rbp),%rax 0.00 : 4ada5e: 48 89 85 90 ec ff ff mov %rax,-0x1370(%rbp) 0.00 : 4ada65: 0f 84 c6 00 00 00 je 4adb31 <_bt_first+0x8a1> : goback = false; : break; : : default: : /* can't get here, but keep compiler quiet */ : elog(ERROR, "unrecognized strat_total: %d", (int) strat_total); 0.00 : 4ada6b: 45 31 ed xor %r13d,%r13d 0.00 : 4ada6e: 45 31 e4 xor %r12d,%r12d 0.00 : 4ada71: e9 7a fe ff ff jmpq 4ad8f0 <_bt_first+0x660> 0.00 : 4ada76: 48 8d 8d c0 f5 ff ff lea -0xa40(%rbp),%rcx : * : * If goback = true, we will then step back one item, while if : * goback = false, we will start the scan on the located item. : *---------- : */ : switch (strat_total) 0.00 : 4ada7d: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4ada83: 45 31 e4 xor %r12d,%r12d 0.00 : 4ada86: 48 89 8d 90 ec ff ff mov %rcx,-0x1370(%rbp) 0.00 : 4ada8d: e9 5e fe ff ff jmpq 4ad8f0 <_bt_first+0x660> 0.00 : 4ada92: 48 8d 8d c0 f5 ff ff lea -0xa40(%rbp),%rcx 0.00 : 4ada99: 48 89 8d 90 ec ff ff mov %rcx,-0x1370(%rbp) 0.00 : 4adaa0: eb c9 jmp 4ada6b <_bt_first+0x7db> 0.00 : 4adaa2: 48 8d 85 c0 f5 ff ff lea -0xa40(%rbp),%rax 0.00 : 4adaa9: 48 89 85 90 ec ff ff mov %rax,-0x1370(%rbp) : goback = false; : break; : : default: : /* can't get here, but keep compiler quiet */ : elog(ERROR, "unrecognized strat_total: %d", (int) strat_total); 0.00 : 4adab0: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 4adab6: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 4adabc: e9 2f fe ff ff jmpq 4ad8f0 <_bt_first+0x660> 0.00 : 4adac1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : /* : * We only get here if the index is completely empty. Lock relation : * because nothing finer to lock exists. : */ : PredicateLockRelation(rel, scan->xs_snapshot); 0.00 : 4adac8: 48 8b 85 a0 ec ff ff mov -0x1360(%rbp),%rax 0.00 : 4adacf: 48 8b bd a8 ec ff ff mov -0x1358(%rbp),%rdi 0.00 : 4adad6: 48 8b 70 10 mov 0x10(%rax),%rsi 0.00 : 4adada: e8 f1 6a 1e 00 callq 6945d0 0.00 : 4adadf: 31 d2 xor %edx,%edx : scan->xs_ctup.t_self = currItem->heapTid; : if (scan->xs_want_itup) : scan->xs_itup = (IndexTuple) (so->currTuples + currItem->tupleOffset); : : return true; : } 0.00 : 4adae1: e9 dc f8 ff ff jmpq 4ad3c2 <_bt_first+0x132> : scan->xs_snapshot); : : /* initialize moreLeft/moreRight appropriately for scan direction */ : if (ScanDirectionIsForward(dir)) : { : so->currPos.moreLeft = false; 0.00 : 4adae6: 48 8b 8d b0 ec ff ff mov -0x1350(%rbp),%rcx 0.00 : 4adaed: c6 41 5c 00 movb $0x0,0x5c(%rcx) : so->currPos.moreRight = true; 0.00 : 4adaf1: c6 41 5d 01 movb $0x1,0x5d(%rcx) 0.00 : 4adaf5: e9 76 fe ff ff jmpq 4ad970 <_bt_first+0x6e0> : if (ScanDirectionIsForward(dir)) : { : /* There could be dead pages to the left, so not this: */ : /* Assert(P_LEFTMOST(opaque)); */ : : start = P_FIRSTDATAKEY(opaque); 0.00 : 4adafa: 0f b7 c0 movzwl %ax,%eax 0.00 : 4adafd: 83 7c 02 04 01 cmpl $0x1,0x4(%rdx,%rax,1) : elog(ERROR, "invalid scan direction: %d", (int) dir); : start = 0; /* keep compiler quiet */ : } : : /* remember which buffer we have pinned */ : so->currPos.buf = buf; 0.00 : 4adb02: 45 89 66 54 mov %r12d,0x54(%r14) : : /* initialize moreLeft/moreRight appropriately for scan direction */ : if (ScanDirectionIsForward(dir)) : { : so->currPos.moreLeft = false; 0.00 : 4adb06: 41 c6 46 5c 00 movb $0x0,0x5c(%r14) : so->currPos.moreRight = true; 0.00 : 4adb0b: 41 c6 46 5d 01 movb $0x1,0x5d(%r14) : if (ScanDirectionIsForward(dir)) : { : /* There could be dead pages to the left, so not this: */ : /* Assert(P_LEFTMOST(opaque)); */ : : start = P_FIRSTDATAKEY(opaque); 0.00 : 4adb10: 19 d2 sbb %edx,%edx 0.00 : 4adb12: 83 c2 02 add $0x2,%edx 0.00 : 4adb15: e9 be fc ff ff jmpq 4ad7d8 <_bt_first+0x548> : so->currPos.buf = InvalidBuffer; : return false; : } : : PredicateLockPage(rel, BufferGetBlockNumber(buf), scan->xs_snapshot); : page = BufferGetPage(buf); 0.00 : 4adb1a: 44 89 e0 mov %r12d,%eax 0.00 : 4adb1d: 48 8b 15 f4 f5 6c 00 mov 0x6cf5f4(%rip),%rdx # b7d118 0.00 : 4adb24: f7 d0 not %eax 0.00 : 4adb26: 48 98 cltq 0.00 : 4adb28: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4adb2c: e9 6b fc ff ff jmpq 4ad79c <_bt_first+0x50c> 0.00 : 4adb31: 48 8d 95 c0 f5 ff ff lea -0xa40(%rbp),%rdx 0.00 : 4adb38: 48 89 95 90 ec ff ff mov %rdx,-0x1370(%rbp) 0.00 : 4adb3f: e9 6c ff ff ff jmpq 4adab0 <_bt_first+0x820> : cmp_proc = get_opfamily_proc(rel->rd_opfamily[i], : rel->rd_opcintype[i], : cur->sk_subtype, : BTORDER_PROC); : if (!RegProcedureIsValid(cmp_proc)) : elog(ERROR, "missing support function %d(%u,%u) for attribute %d of index \"%s\"", 0.00 : 4adb44: ba df 48 7b 00 mov $0x7b48df,%edx 0.00 : 4adb49: be 40 03 00 00 mov $0x340,%esi 0.00 : 4adb4e: bf 70 47 7b 00 mov $0x7b4770,%edi 0.00 : 4adb53: e8 c8 d8 2c 00 callq 77b420 0.00 : 4adb58: 48 8b 95 a8 ec ff ff mov -0x1358(%rbp),%rdx 0.00 : 4adb5f: 45 0f bf 4c 24 04 movswl 0x4(%r12),%r9d 0.00 : 4adb65: be 18 48 7b 00 mov $0x7b4818,%esi 0.00 : 4adb6a: 45 8b 44 24 08 mov 0x8(%r12),%r8d 0.00 : 4adb6f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4adb74: 48 8b 82 d0 00 00 00 mov 0xd0(%rdx),%rax 0.00 : 4adb7b: 42 8b 0c 30 mov (%rax,%r14,1),%ecx 0.00 : 4adb7f: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 4adb83: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4adb88: 48 89 04 24 mov %rax,(%rsp) 0.00 : 4adb8c: 31 c0 xor %eax,%eax 0.00 : 4adb8e: e8 9d d6 2c 00 callq 77b230 0.00 : 4adb93: e8 38 b9 fb ff callq 4694d0 : break; : } : } : if (!used_all_subkeys) : { : switch (strat_total) 0.00 : 4adb98: 66 83 bd be ec ff ff cmpw $0x1,-0x1342(%rbp) 0.00 : 4adb9f: 01 0.00 : 4adba0: 0f 84 0a ff ff ff je 4adab0 <_bt_first+0x820> 0.00 : 4adba6: 66 83 bd be ec ff ff cmpw $0x5,-0x1342(%rbp) 0.00 : 4adbad: 05 0.00 : 4adbae: 0f 85 70 fa ff ff jne 4ad624 <_bt_first+0x394> 0.00 : 4adbb4: e9 b2 fe ff ff jmpq 4ada6b <_bt_first+0x7db> : : start = PageGetMaxOffsetNumber(page); : } : else : { : elog(ERROR, "invalid scan direction: %d", (int) dir); 0.00 : 4adbb9: ba e9 48 7b 00 mov $0x7b48e9,%edx 0.00 : 4adbbe: be 44 06 00 00 mov $0x644,%esi 0.00 : 4adbc3: bf 70 47 7b 00 mov $0x7b4770,%edi 0.00 : 4adbc8: e8 53 d8 2c 00 callq 77b420 0.00 : 4adbcd: 8b 95 9c ec ff ff mov -0x1364(%rbp),%edx 0.00 : 4adbd3: be 7c 47 7b 00 mov $0x7b477c,%esi 0.00 : 4adbd8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4adbdd: 31 c0 xor %eax,%eax 0.00 : 4adbdf: e8 4c d6 2c 00 callq 77b230 0.00 : 4adbe4: e8 e7 b8 fb ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2037 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2049 33.33 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2049 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ce920 : : * save the buffer's LSN at *lsn. : */ : static bool : XLogCheckBuffer(XLogRecData *rdata, bool holdsExclusiveLock, : XLogRecPtr *lsn, BkpBlock *bkpb) : { 0.00 : 4ce920: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2037 33.33 : 4ce921: 48 89 e5 mov %rsp,%rbp 0.00 : 4ce924: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 4ce928: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 4ce92c: 49 89 fd mov %rdi,%r13 0.00 : 4ce92f: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 4ce933: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 4ce937: 48 83 ec 20 sub $0x20,%rsp : Page page; : : page = BufferGetPage(rdata->buffer); 0.00 : 4ce93b: 8b 7f 0c mov 0xc(%rdi),%edi : * save the buffer's LSN at *lsn. : */ : static bool : XLogCheckBuffer(XLogRecData *rdata, bool holdsExclusiveLock, : XLogRecPtr *lsn, BkpBlock *bkpb) : { 0.00 : 4ce93e: 49 89 cc mov %rcx,%r12 0.00 : 4ce941: 49 89 d6 mov %rdx,%r14 0.00 : 4ce944: 89 f1 mov %esi,%ecx : Page page; : : page = BufferGetPage(rdata->buffer); 0.00 : 4ce946: 85 ff test %edi,%edi 0.00 : 4ce948: 0f 88 b2 00 00 00 js 4cea00 0.00 : 4ce94e: 8d 47 ff lea -0x1(%rdi),%eax 0.00 : 4ce951: 48 63 d8 movslq %eax,%rbx 0.00 : 4ce954: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 4ce958: 48 03 1d 99 11 6f 00 add 0x6f1199(%rip),%rbx # bbfaf8 : * We assume page LSN is first data on *every* page that can be passed to : * XLogInsert, whether it has the standard page layout or not. We don't : * need to take the buffer header lock for PageGetLSN if we hold an : * exclusive lock on the page and/or the relation. : */ : if (holdsExclusiveLock) 0.00 : 4ce95f: 84 c9 test %cl,%cl 0.00 : 4ce961: 0f 84 89 00 00 00 je 4ce9f0 : *lsn = PageGetLSN(page); 0.00 : 4ce967: 8b 13 mov (%rbx),%edx /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2049 33.33 : 4ce969: 8b 43 04 mov 0x4(%rbx),%eax 33.33 : 4ce96c: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 4ce970: 48 09 c2 or %rax,%rdx 0.00 : 4ce973: 49 89 16 mov %rdx,(%r14) : else : *lsn = BufferGetLSNAtomic(rdata->buffer); : : if (*lsn <= RedoRecPtr) 0.00 : 4ce976: 31 c0 xor %eax,%eax 0.00 : 4ce978: 48 3b 15 59 aa 6a 00 cmp 0x6aaa59(%rip),%rdx # b793d8 0.00 : 4ce97f: 76 1f jbe 4ce9a0 : : return true; /* buffer requires backup */ : } : : return false; /* buffer does not need to be backed up */ : } 0.00 : 4ce981: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 4ce985: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 4ce98a: 4c 8b 6c 24 10 mov 0x10(%rsp),%r13 0.00 : 4ce98f: 4c 8b 74 24 18 mov 0x18(%rsp),%r14 0.00 : 4ce994: c9 leaveq 0.00 : 4ce995: c3 retq 0.00 : 4ce996: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ce99d: 00 00 00 : if (*lsn <= RedoRecPtr) : { : /* : * The page needs to be backed up, so set up *bkpb : */ : BufferGetTag(rdata->buffer, &bkpb->node, &bkpb->fork, &bkpb->block); 0.00 : 4ce9a0: 41 8b 7d 0c mov 0xc(%r13),%edi 0.00 : 4ce9a4: 49 8d 4c 24 10 lea 0x10(%r12),%rcx 0.00 : 4ce9a9: 49 8d 54 24 0c lea 0xc(%r12),%rdx 0.00 : 4ce9ae: 4c 89 e6 mov %r12,%rsi 0.00 : 4ce9b1: e8 ba 56 1a 00 callq 674070 : : if (rdata->buffer_std) 0.00 : 4ce9b6: 41 80 7d 10 00 cmpb $0x0,0x10(%r13) 0.00 : 4ce9bb: 74 13 je 4ce9d0 : { : /* Assume we can omit data between pd_lower and pd_upper */ : uint16 lower = ((PageHeader) page)->pd_lower; 0.00 : 4ce9bd: 0f b7 53 0c movzwl 0xc(%rbx),%edx : uint16 upper = ((PageHeader) page)->pd_upper; 0.00 : 4ce9c1: 0f b7 43 0e movzwl 0xe(%rbx),%eax : : if (lower >= SizeOfPageHeaderData && 0.00 : 4ce9c5: 66 83 fa 17 cmp $0x17,%dx 0.00 : 4ce9c9: 76 05 jbe 4ce9d0 0.00 : 4ce9cb: 66 39 d0 cmp %dx,%ax 0.00 : 4ce9ce: 77 50 ja 4cea20 : } : } : else : { : /* Not a standard page header, don't try to eliminate "hole" */ : bkpb->hole_offset = 0; 0.00 : 4ce9d0: 66 41 c7 44 24 14 00 movw $0x0,0x14(%r12) 0.00 : 4ce9d7: 00 : bkpb->hole_length = 0; 0.00 : 4ce9d8: 66 41 c7 44 24 16 00 movw $0x0,0x16(%r12) 0.00 : 4ce9df: 00 0.00 : 4ce9e0: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4ce9e5: eb 9a jmp 4ce981 0.00 : 4ce9e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ce9ee: 00 00 : * exclusive lock on the page and/or the relation. : */ : if (holdsExclusiveLock) : *lsn = PageGetLSN(page); : else : *lsn = BufferGetLSNAtomic(rdata->buffer); 0.00 : 4ce9f0: e8 cb 5e 1a 00 callq 6748c0 0.00 : 4ce9f5: 48 89 c2 mov %rax,%rdx 0.00 : 4ce9f8: 49 89 06 mov %rax,(%r14) 0.00 : 4ce9fb: e9 76 ff ff ff jmpq 4ce976 : XLogCheckBuffer(XLogRecData *rdata, bool holdsExclusiveLock, : XLogRecPtr *lsn, BkpBlock *bkpb) : { : Page page; : : page = BufferGetPage(rdata->buffer); 0.00 : 4cea00: 89 f8 mov %edi,%eax 0.00 : 4cea02: 48 8b 15 0f e7 6a 00 mov 0x6ae70f(%rip),%rdx # b7d118 0.00 : 4cea09: f7 d0 not %eax 0.00 : 4cea0b: 48 98 cltq 0.00 : 4cea0d: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 4cea11: e9 49 ff ff ff jmpq 4ce95f 0.00 : 4cea16: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4cea1d: 00 00 00 : { : /* Assume we can omit data between pd_lower and pd_upper */ : uint16 lower = ((PageHeader) page)->pd_lower; : uint16 upper = ((PageHeader) page)->pd_upper; : : if (lower >= SizeOfPageHeaderData && 0.00 : 4cea20: 66 3d 00 20 cmp $0x2000,%ax 0.00 : 4cea24: 77 aa ja 4ce9d0 : upper > lower && : upper <= BLCKSZ) : { : bkpb->hole_offset = lower; : bkpb->hole_length = upper - lower; 0.00 : 4cea26: 66 29 d0 sub %dx,%ax : : if (lower >= SizeOfPageHeaderData && : upper > lower && : upper <= BLCKSZ) : { : bkpb->hole_offset = lower; 0.00 : 4cea29: 66 41 89 54 24 14 mov %dx,0x14(%r12) : bkpb->hole_length = upper - lower; 0.00 : 4cea2f: 66 41 89 44 24 16 mov %ax,0x16(%r12) 0.00 : 4cea35: b8 01 00 00 00 mov $0x1,%eax : { : /* Assume we can omit data between pd_lower and pd_upper */ : uint16 lower = ((PageHeader) page)->pd_lower; : uint16 upper = ((PageHeader) page)->pd_upper; : : if (lower >= SizeOfPageHeaderData && 0.00 : 4cea3a: e9 42 ff ff ff jmpq 4ce981 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:91 33.33 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:91 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e2de0 : : * but this function returns true only for toast relations of system : * catalogs. : */ : bool : IsCatalogRelation(Relation relation) : { 0.00 : 4e2de0: 55 push %rbp : return IsCatalogClass(RelationGetRelid(relation), relation->rd_rel); /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:91 66.67 : 4e2de1: 48 8b 77 30 mov 0x30(%rdi),%rsi 33.33 : 4e2de5: 8b 7f 40 mov 0x40(%rdi),%edi : * but this function returns true only for toast relations of system : * catalogs. : */ : bool : IsCatalogRelation(Relation relation) : { 0.00 : 4e2de8: 48 89 e5 mov %rsp,%rbp : return IsCatalogClass(RelationGetRelid(relation), relation->rd_rel); : } 0.00 : 4e2deb: c9 leaveq : * catalogs. : */ : bool : IsCatalogRelation(Relation relation) : { : return IsCatalogClass(RelationGetRelid(relation), relation->rd_rel); 0.00 : 4e2dec: e9 bf ff ff ff jmpq 4e2db0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1057 33.33 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1051 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005aca20 : : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalConst(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1051 33.33 : 5aca20: 55 push %rbp : Const *con = (Const *) exprstate->expr; : : if (isDone) 0.00 : 5aca21: 48 85 c9 test %rcx,%rcx : */ : static Datum : ExecEvalConst(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { : Const *con = (Const *) exprstate->expr; 0.00 : 5aca24: 48 8b 77 08 mov 0x8(%rdi),%rsi : * ---------------------------------------------------------------- : */ : static Datum : ExecEvalConst(ExprState *exprstate, ExprContext *econtext, : bool *isNull, ExprDoneCond *isDone) : { 0.00 : 5aca28: 48 89 e5 mov %rsp,%rbp : Const *con = (Const *) exprstate->expr; : : if (isDone) 0.00 : 5aca2b: 74 06 je 5aca33 : *isDone = ExprSingleResult; 0.00 : 5aca2d: c7 01 00 00 00 00 movl $0x0,(%rcx) : : *isNull = con->constisnull; 0.00 : 5aca33: 0f b6 46 20 movzbl 0x20(%rsi),%eax /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1057 66.67 : 5aca37: 88 02 mov %al,(%rdx) 0.00 : 5aca39: 48 8b 46 18 mov 0x18(%rsi),%rax : return con->constvalue; : } 0.00 : 5aca3d: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1341 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000063dba0 : : * we start fsync'ing. Since CreateCheckPoint sometimes runs in : * non-checkpointer processes, do nothing if not checkpointer. : */ : void : AbsorbFsyncRequests(void) : { 0.00 : 63dba0: 55 push %rbp 0.00 : 63dba1: 48 89 e5 mov %rsp,%rbp 0.00 : 63dba4: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 63dba8: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 63dbac: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 63dbb0: 48 83 ec 20 sub $0x20,%rsp : CheckpointerRequest *requests = NULL; : CheckpointerRequest *request; : int n; : : if (!AmCheckpointerProcess()) 0.00 : 63dbb4: 83 3d bd a2 52 00 04 cmpl $0x4,0x52a2bd(%rip) # b67e78 0.00 : 63dbbb: 74 13 je 63dbd0 : : END_CRIT_SECTION(); : : if (requests) : pfree(requests); : } 0.00 : 63dbbd: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 63dbc1: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 63dbc5: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 63dbc9: c9 leaveq 0.00 : 63dbca: c3 retq 0.00 : 63dbcb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : int n; : : if (!AmCheckpointerProcess()) : return; : : LWLockAcquire(CheckpointerCommLock, LW_EXCLUSIVE); 0.00 : 63dbd0: 48 8b 3d 29 fe 53 00 mov 0x53fe29(%rip),%rdi # b7da00 0.00 : 63dbd7: 31 f6 xor %esi,%esi 0.00 : 63dbd9: 48 81 c7 20 02 00 00 add $0x220,%rdi 0.00 : 63dbe0: e8 0b 1f 05 00 callq 68faf0 : : /* Transfer stats counts into pending pgstats message */ : BgWriterStats.m_buf_written_backend += CheckpointerShmem->num_backend_writes; 0.00 : 63dbe5: 48 8b 15 3c df 53 00 mov 0x53df3c(%rip),%rdx # b7bb28 0.00 : 63dbec: 8b 42 18 mov 0x18(%rdx),%eax 0.00 : 63dbef: 48 01 05 7a 1e 58 00 add %rax,0x581e7a(%rip) # bbfa70 : BgWriterStats.m_buf_fsync_backend += CheckpointerShmem->num_backend_fsync; 0.00 : 63dbf6: 8b 42 1c mov 0x1c(%rdx),%eax 0.00 : 63dbf9: 48 01 05 78 1e 58 00 add %rax,0x581e78(%rip) # bbfa78 : : CheckpointerShmem->num_backend_writes = 0; 0.00 : 63dc00: c7 42 18 00 00 00 00 movl $0x0,0x18(%rdx) : * if we then fail to absorb them (eg, because our hashtable runs out of : * memory). This is because the system cannot run safely if we are unable : * to fsync what we have been told to fsync. Fortunately, the hashtable : * is so small that the problem is quite unlikely to arise in practice. : */ : n = CheckpointerShmem->num_requests; 0.00 : 63dc07: 44 8b 62 20 mov 0x20(%rdx),%r12d : /* Transfer stats counts into pending pgstats message */ : BgWriterStats.m_buf_written_backend += CheckpointerShmem->num_backend_writes; : BgWriterStats.m_buf_fsync_backend += CheckpointerShmem->num_backend_fsync; : : CheckpointerShmem->num_backend_writes = 0; : CheckpointerShmem->num_backend_fsync = 0; 0.00 : 63dc0b: c7 42 1c 00 00 00 00 movl $0x0,0x1c(%rdx) : * memory). This is because the system cannot run safely if we are unable : * to fsync what we have been told to fsync. Fortunately, the hashtable : * is so small that the problem is quite unlikely to arise in practice. : */ : n = CheckpointerShmem->num_requests; : if (n > 0) 0.00 : 63dc12: 45 85 e4 test %r12d,%r12d 0.00 : 63dc15: 0f 8e b5 00 00 00 jle 63dcd0 : { : requests = (CheckpointerRequest *) palloc(n * sizeof(CheckpointerRequest)); 0.00 : 63dc1b: 49 63 c4 movslq %r12d,%rax 0.00 : 63dc1e: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : 63dc22: 48 8d 1c 85 00 00 00 lea 0x0(,%rax,4),%rbx 0.00 : 63dc29: 00 0.00 : 63dc2a: 48 89 df mov %rbx,%rdi 0.00 : 63dc2d: e8 1e b1 15 00 callq 798d50 : memcpy(requests, CheckpointerShmem->requests, n * sizeof(CheckpointerRequest)); 0.00 : 63dc32: 48 8b 35 ef de 53 00 mov 0x53deef(%rip),%rsi # b7bb28 0.00 : 63dc39: 48 89 da mov %rbx,%rdx 0.00 : 63dc3c: 48 89 c7 mov %rax,%rdi : * is so small that the problem is quite unlikely to arise in practice. : */ : n = CheckpointerShmem->num_requests; : if (n > 0) : { : requests = (CheckpointerRequest *) palloc(n * sizeof(CheckpointerRequest)); 0.00 : 63dc3f: 49 89 c5 mov %rax,%r13 : : START_CRIT_SECTION(); : : CheckpointerShmem->num_requests = 0; : : LWLockRelease(CheckpointerCommLock); 0.00 : 63dc42: 4c 89 eb mov %r13,%rbx : */ : n = CheckpointerShmem->num_requests; : if (n > 0) : { : requests = (CheckpointerRequest *) palloc(n * sizeof(CheckpointerRequest)); : memcpy(requests, CheckpointerShmem->requests, n * sizeof(CheckpointerRequest)); 0.00 : 63dc45: 48 83 c6 28 add $0x28,%rsi 0.00 : 63dc49: e8 a2 bf e2 ff callq 469bf0 : } : : START_CRIT_SECTION(); 0.00 : 63dc4e: 8b 05 48 c4 57 00 mov 0x57c448(%rip),%eax # bba09c 0.00 : 63dc54: 83 c0 01 add $0x1,%eax 0.00 : 63dc57: 89 05 3f c4 57 00 mov %eax,0x57c43f(%rip) # bba09c : : CheckpointerShmem->num_requests = 0; 0.00 : 63dc5d: 48 8b 05 c4 de 53 00 mov 0x53dec4(%rip),%rax # b7bb28 0.00 : 63dc64: c7 40 20 00 00 00 00 movl $0x0,0x20(%rax) : : LWLockRelease(CheckpointerCommLock); 0.00 : 63dc6b: 48 8b 3d 8e fd 53 00 mov 0x53fd8e(%rip),%rdi # b7da00 0.00 : 63dc72: 48 81 c7 20 02 00 00 add $0x220,%rdi 0.00 : 63dc79: e8 22 17 05 00 callq 68f3a0 0.00 : 63dc7e: 66 90 xchg %ax,%ax : : for (request = requests; n > 0; request++, n--) : RememberFsyncRequest(request->rnode, request->forknum, request->segno); 0.00 : 63dc80: 8b 4b 10 mov 0x10(%rbx),%ecx /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:1341 100.00 : 63dc83: 8b 53 0c mov 0xc(%rbx),%edx : : CheckpointerShmem->num_requests = 0; : : LWLockRelease(CheckpointerCommLock); : : for (request = requests; n > 0; request++, n--) 0.00 : 63dc86: 41 83 ec 01 sub $0x1,%r12d : RememberFsyncRequest(request->rnode, request->forknum, request->segno); 0.00 : 63dc8a: 48 8b 3b mov (%rbx),%rdi 0.00 : 63dc8d: 8b 73 08 mov 0x8(%rbx),%esi : : CheckpointerShmem->num_requests = 0; : : LWLockRelease(CheckpointerCommLock); : : for (request = requests; n > 0; request++, n--) 0.00 : 63dc90: 48 83 c3 14 add $0x14,%rbx : RememberFsyncRequest(request->rnode, request->forknum, request->segno); 0.00 : 63dc94: e8 77 96 05 00 callq 697310 : : CheckpointerShmem->num_requests = 0; : : LWLockRelease(CheckpointerCommLock); : : for (request = requests; n > 0; request++, n--) 0.00 : 63dc99: 45 85 e4 test %r12d,%r12d 0.00 : 63dc9c: 7f e2 jg 63dc80 : RememberFsyncRequest(request->rnode, request->forknum, request->segno); : : END_CRIT_SECTION(); 0.00 : 63dc9e: 8b 05 f8 c3 57 00 mov 0x57c3f8(%rip),%eax # bba09c 0.00 : 63dca4: 83 e8 01 sub $0x1,%eax : : if (requests) 0.00 : 63dca7: 4d 85 ed test %r13,%r13 : LWLockRelease(CheckpointerCommLock); : : for (request = requests; n > 0; request++, n--) : RememberFsyncRequest(request->rnode, request->forknum, request->segno); : : END_CRIT_SECTION(); 0.00 : 63dcaa: 89 05 ec c3 57 00 mov %eax,0x57c3ec(%rip) # bba09c : : if (requests) 0.00 : 63dcb0: 0f 84 07 ff ff ff je 63dbbd : pfree(requests); 0.00 : 63dcb6: 4c 89 ef mov %r13,%rdi : } 0.00 : 63dcb9: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 63dcbd: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 63dcc1: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 63dcc5: c9 leaveq : RememberFsyncRequest(request->rnode, request->forknum, request->segno); : : END_CRIT_SECTION(); : : if (requests) : pfree(requests); 0.00 : 63dcc6: e9 b5 ae 15 00 jmpq 798b80 0.00 : 63dccb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : requests = (CheckpointerRequest *) palloc(n * sizeof(CheckpointerRequest)); : memcpy(requests, CheckpointerShmem->requests, n * sizeof(CheckpointerRequest)); : } : : START_CRIT_SECTION(); 0.00 : 63dcd0: 8b 05 c6 c3 57 00 mov 0x57c3c6(%rip),%eax # bba09c 0.00 : 63dcd6: 83 c0 01 add $0x1,%eax 0.00 : 63dcd9: 89 05 bd c3 57 00 mov %eax,0x57c3bd(%rip) # bba09c : : CheckpointerShmem->num_requests = 0; 0.00 : 63dcdf: c7 42 20 00 00 00 00 movl $0x0,0x20(%rdx) : : LWLockRelease(CheckpointerCommLock); 0.00 : 63dce6: 48 8b 3d 13 fd 53 00 mov 0x53fd13(%rip),%rdi # b7da00 0.00 : 63dced: 48 81 c7 20 02 00 00 add $0x220,%rdi 0.00 : 63dcf4: e8 a7 16 05 00 callq 68f3a0 : : for (request = requests; n > 0; request++, n--) : RememberFsyncRequest(request->rnode, request->forknum, request->segno); : : END_CRIT_SECTION(); 0.00 : 63dcf9: 8b 05 9d c3 57 00 mov 0x57c39d(%rip),%eax # bba09c 0.00 : 63dcff: 83 e8 01 sub $0x1,%eax 0.00 : 63dd02: 89 05 94 c3 57 00 mov %eax,0x57c394(%rip) # bba09c 0.00 : 63dd08: e9 b0 fe ff ff jmpq 63dbbd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1804 33.33 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1816 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000642570 : : /* : * pgstat_count_heap_insert - count a tuple insertion of n tuples : */ : void : pgstat_count_heap_insert(Relation rel, int n) : { 0.00 : 642570: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1804 66.67 : 642571: 48 89 e5 mov %rsp,%rbp 0.00 : 642574: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 642578: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 64257c: 48 83 ec 10 sub $0x10,%rsp : PgStat_TableStatus *pgstat_info = rel->pgstat_info; 0.00 : 642580: 48 8b 9f 38 01 00 00 mov 0x138(%rdi),%rbx : /* : * pgstat_count_heap_insert - count a tuple insertion of n tuples : */ : void : pgstat_count_heap_insert(Relation rel, int n) : { 0.00 : 642587: 41 89 f4 mov %esi,%r12d : PgStat_TableStatus *pgstat_info = rel->pgstat_info; : : if (pgstat_info != NULL) 0.00 : 64258a: 48 85 db test %rbx,%rbx 0.00 : 64258d: 74 27 je 6425b6 : { : /* We have to log the effect at the proper transactional level */ : int nest_level = GetCurrentTransactionNestLevel(); 0.00 : 64258f: e8 bc e6 e7 ff callq 4c0c50 : : if (pgstat_info->trans == NULL || 0.00 : 642594: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 642598: 48 85 d2 test %rdx,%rdx 0.00 : 64259b: 74 05 je 6425a2 0.00 : 64259d: 3b 42 18 cmp 0x18(%rdx),%eax 0.00 : 6425a0: 74 0e je 6425b0 : pgstat_info->trans->nest_level != nest_level) : add_tabstat_xact_level(pgstat_info, nest_level); 0.00 : 6425a2: 89 c6 mov %eax,%esi 0.00 : 6425a4: 48 89 df mov %rbx,%rdi 0.00 : 6425a7: e8 f4 fd ff ff callq 6423a0 0.00 : 6425ac: 48 8b 53 08 mov 0x8(%rbx),%rdx : : pgstat_info->trans->tuples_inserted += n; /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:1816 33.33 : 6425b0: 49 63 c4 movslq %r12d,%rax 0.00 : 6425b3: 48 01 02 add %rax,(%rdx) : } : } 0.00 : 6425b6: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 6425ba: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 6425bf: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2797 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:2797 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000674f30 : : * : * This is just a shorthand for a common combination. : */ : void : UnlockReleaseBuffer(Buffer buffer) : { 66.67 : 674f30: 55 push %rbp : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 674f31: 31 f6 xor %esi,%esi : * : * This is just a shorthand for a common combination. : */ : void : UnlockReleaseBuffer(Buffer buffer) : { 0.00 : 674f33: 48 89 e5 mov %rsp,%rbp 0.00 : 674f36: 53 push %rbx 33.33 : 674f37: 89 fb mov %edi,%ebx 0.00 : 674f39: 48 83 ec 08 sub $0x8,%rsp : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 674f3d: e8 ce f7 ff ff callq 674710 : ReleaseBuffer(buffer); : } 0.00 : 674f42: 48 83 c4 08 add $0x8,%rsp : */ : void : UnlockReleaseBuffer(Buffer buffer) : { : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : ReleaseBuffer(buffer); 0.00 : 674f46: 89 df mov %ebx,%edi : } 0.00 : 674f48: 5b pop %rbx 0.00 : 674f49: c9 leaveq : */ : void : UnlockReleaseBuffer(Buffer buffer) : { : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : ReleaseBuffer(buffer); 0.00 : 674f4a: e9 11 ff ff ff jmpq 674e60 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:37 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:39 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000683420 : : * ShmemQueueInit -- make the head of a new queue point : * to itself : */ : void : SHMQueueInit(SHM_QUEUE *queue) : { 66.67 : 683420: 55 push %rbp : Assert(ShmemAddrIsValid(queue)); : queue->prev = queue->next = queue; /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/shmqueue.c:39 33.33 : 683421: 48 89 7f 08 mov %rdi,0x8(%rdi) 0.00 : 683425: 48 89 3f mov %rdi,(%rdi) : * ShmemQueueInit -- make the head of a new queue point : * to itself : */ : void : SHMQueueInit(SHM_QUEUE *queue) : { 0.00 : 683428: 48 89 e5 mov %rsp,%rbp : Assert(ShmemAddrIsValid(queue)); : queue->prev = queue->next = queue; : } 0.00 : 68342b: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1222 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1225 33.33 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1239 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000689140 : : /* : * Subroutine to free a locallock entry : */ : static void : RemoveLocalLock(LOCALLOCK *locallock) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1222 33.33 : 689140: 55 push %rbp 0.00 : 689141: 48 89 e5 mov %rsp,%rbp 0.00 : 689144: 41 54 push %r12 0.00 : 689146: 49 89 fc mov %rdi,%r12 0.00 : 689149: 53 push %rbx : int i; : : for (i = locallock->numLockOwners - 1; i >= 0; i--) 0.00 : 68914a: 8b 47 38 mov 0x38(%rdi),%eax 0.00 : 68914d: 89 c3 mov %eax,%ebx /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1225 33.33 : 68914f: 83 eb 01 sub $0x1,%ebx 0.00 : 689152: 0f 88 c0 00 00 00 js 689218 0.00 : 689158: 48 8b 57 48 mov 0x48(%rdi),%rdx 0.00 : 68915c: 0f 1f 40 00 nopl 0x0(%rax) : { : if (locallock->lockOwners[i].owner != NULL) 0.00 : 689160: 48 63 c3 movslq %ebx,%rax 0.00 : 689163: 48 c1 e0 04 shl $0x4,%rax 0.00 : 689167: 48 8b 3c 02 mov (%rdx,%rax,1),%rdi 0.00 : 68916b: 48 85 ff test %rdi,%rdi 0.00 : 68916e: 74 0d je 68917d : ResourceOwnerForgetLock(locallock->lockOwners[i].owner, locallock); 0.00 : 689170: 4c 89 e6 mov %r12,%rsi 0.00 : 689173: e8 f8 16 11 00 callq 79a870 0.00 : 689178: 49 8b 54 24 48 mov 0x48(%r12),%rdx : static void : RemoveLocalLock(LOCALLOCK *locallock) : { : int i; : : for (i = locallock->numLockOwners - 1; i >= 0; i--) 0.00 : 68917d: 83 eb 01 sub $0x1,%ebx 0.00 : 689180: 79 de jns 689160 : { : if (locallock->lockOwners[i].owner != NULL) : ResourceOwnerForgetLock(locallock->lockOwners[i].owner, locallock); : } : pfree(locallock->lockOwners); 0.00 : 689182: 48 89 d7 mov %rdx,%rdi 0.00 : 689185: e8 f6 f9 10 00 callq 798b80 : locallock->lockOwners = NULL; : : if (locallock->holdsStrongLockCount) 0.00 : 68918a: 41 80 7c 24 40 00 cmpb $0x0,0x40(%r12) : { : if (locallock->lockOwners[i].owner != NULL) : ResourceOwnerForgetLock(locallock->lockOwners[i].owner, locallock); : } : pfree(locallock->lockOwners); : locallock->lockOwners = NULL; 0.00 : 689190: 49 c7 44 24 48 00 00 movq $0x0,0x48(%r12) 0.00 : 689197: 00 00 : : if (locallock->holdsStrongLockCount) 0.00 : 689199: 74 42 je 6891dd : { : uint32 fasthashcode; : : fasthashcode = FastPathStrongLockHashPartition(locallock->hashcode); 0.00 : 68919b: 41 8b 5c 24 28 mov 0x28(%r12),%ebx : : SpinLockAcquire(&FastPathStrongRelationLocks->mutex); 0.00 : 6891a0: 48 8b 15 51 47 4f 00 mov 0x4f4751(%rip),%rdx # b7d8f8 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 6891a7: b8 01 00 00 00 mov $0x1,%eax : : if (locallock->holdsStrongLockCount) : { : uint32 fasthashcode; : : fasthashcode = FastPathStrongLockHashPartition(locallock->hashcode); 0.00 : 6891ac: 81 e3 ff 03 00 00 and $0x3ff,%ebx 0.00 : 6891b2: f0 86 02 lock xchg %al,(%rdx) : : SpinLockAcquire(&FastPathStrongRelationLocks->mutex); 0.00 : 6891b5: 84 c0 test %al,%al 0.00 : 6891b7: 75 47 jne 689200 : Assert(FastPathStrongRelationLocks->count[fasthashcode] > 0); : FastPathStrongRelationLocks->count[fasthashcode]--; 0.00 : 6891b9: 48 8b 0d 38 47 4f 00 mov 0x4f4738(%rip),%rcx # b7d8f8 0.00 : 6891c0: 89 da mov %ebx,%edx 0.00 : 6891c2: 8b 44 91 04 mov 0x4(%rcx,%rdx,4),%eax 0.00 : 6891c6: 83 e8 01 sub $0x1,%eax 0.00 : 6891c9: 89 44 91 04 mov %eax,0x4(%rcx,%rdx,4) : locallock->holdsStrongLockCount = FALSE; 0.00 : 6891cd: 41 c6 44 24 40 00 movb $0x0,0x40(%r12) : SpinLockRelease(&FastPathStrongRelationLocks->mutex); 0.00 : 6891d3: 48 8b 05 1e 47 4f 00 mov 0x4f471e(%rip),%rax # b7d8f8 0.00 : 6891da: c6 00 00 movb $0x0,(%rax) : } : : if (!hash_search(LockMethodLocalHash, 0.00 : 6891dd: 48 8b 3d 2c 47 4f 00 mov 0x4f472c(%rip),%rdi # b7d910 0.00 : 6891e4: 31 c9 xor %ecx,%ecx 0.00 : 6891e6: ba 02 00 00 00 mov $0x2,%edx 0.00 : 6891eb: 4c 89 e6 mov %r12,%rsi 0.00 : 6891ee: e8 ad b4 0f 00 callq 7846a0 0.00 : 6891f3: 48 85 c0 test %rax,%rax 0.00 : 6891f6: 74 29 je 689221 : (void *) &(locallock->tag), : HASH_REMOVE, NULL)) : elog(WARNING, "locallock table corrupted"); : } 0.00 : 6891f8: 5b pop %rbx 0.00 : 6891f9: 41 5c pop %r12 0.00 : 6891fb: c9 leaveq 0.00 : 6891fc: c3 retq 0.00 : 6891fd: 0f 1f 00 nopl (%rax) : { : uint32 fasthashcode; : : fasthashcode = FastPathStrongLockHashPartition(locallock->hashcode); : : SpinLockAcquire(&FastPathStrongRelationLocks->mutex); 0.00 : 689200: 48 8b 3d f1 46 4f 00 mov 0x4f46f1(%rip),%rdi # b7d8f8 0.00 : 689207: ba d7 04 00 00 mov $0x4d7,%edx 0.00 : 68920c: be 93 d1 8a 00 mov $0x8ad193,%esi 0.00 : 689211: e8 2a 6e 00 00 callq 690040 0.00 : 689216: eb a1 jmp 6891b9 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1239 33.33 : 689218: 48 8b 57 48 mov 0x48(%rdi),%rdx 0.00 : 68921c: e9 61 ff ff ff jmpq 689182 : } : : if (!hash_search(LockMethodLocalHash, : (void *) &(locallock->tag), : HASH_REMOVE, NULL)) : elog(WARNING, "locallock table corrupted"); 0.00 : 689221: be e1 04 00 00 mov $0x4e1,%esi 0.00 : 689226: bf 93 d1 8a 00 mov $0x8ad193,%edi 0.00 : 68922b: ba 10 cb 8a 00 mov $0x8acb10,%edx 0.00 : 689230: e8 eb 21 0f 00 callq 77b420 : } 0.00 : 689235: 5b pop %rbx 0.00 : 689236: 41 5c pop %r12 0.00 : 689238: c9 leaveq : } : : if (!hash_search(LockMethodLocalHash, : (void *) &(locallock->tag), : HASH_REMOVE, NULL)) : elog(WARNING, "locallock table corrupted"); 0.00 : 689239: be 46 c6 8a 00 mov $0x8ac646,%esi 0.00 : 68923e: bf 13 00 00 00 mov $0x13,%edi 0.00 : 689243: 31 c0 xor %eax,%eax 0.00 : 689245: e9 e6 1f 0f 00 jmpq 77b230 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 66.67 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:118 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:121 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077f940 : : * but is set to true when we need to avoid recursion. : */ : static void : fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, : bool ignore_security) : { 0.00 : 77f940: 55 push %rbp 0.00 : 77f941: 48 89 e5 mov %rsp,%rbp 0.00 : 77f944: 41 57 push %r15 0.00 : 77f946: 41 56 push %r14 0.00 : 77f948: 49 89 f6 mov %rsi,%r14 0.00 : 77f94b: 41 55 push %r13 0.00 : 77f94d: 41 89 fd mov %edi,%r13d 0.00 : 77f950: 41 54 push %r12 0.00 : 77f952: 41 89 cc mov %ecx,%r12d 0.00 : 77f955: 53 push %rbx 0.00 : 77f956: 48 81 ec b8 00 00 00 sub $0xb8,%rsp : : static const FmgrBuiltin * : fmgr_isbuiltin(Oid id) : { : int low = 0; : int high = fmgr_nbuiltins - 1; 0.00 : 77f95d: 44 8b 3d 7c fc 17 00 mov 0x17fc7c(%rip),%r15d # 8ff5e0 : /* : * fn_oid *must* be filled in last. Some code assumes that if fn_oid is : * valid, the whole struct is valid. Some FmgrInfo struct's do survive : * elogs. : */ : finfo->fn_oid = InvalidOid; 0.00 : 77f964: c7 46 08 00 00 00 00 movl $0x0,0x8(%rsi) : finfo->fn_extra = NULL; 0.00 : 77f96b: 48 c7 46 18 00 00 00 movq $0x0,0x18(%rsi) 0.00 : 77f972: 00 : finfo->fn_mcxt = mcxt; 0.00 : 77f973: 48 89 56 20 mov %rdx,0x20(%rsi) : finfo->fn_expr = NULL; /* caller may set this later */ 0.00 : 77f977: 48 c7 46 28 00 00 00 movq $0x0,0x28(%rsi) 0.00 : 77f97e: 00 : : /* : * Loop invariant: low is the first index that could contain target entry, : * and high is the last index that could contain it. : */ : while (low <= high) 0.00 : 77f97f: 44 89 fe mov %r15d,%esi 0.00 : 77f982: 83 ee 01 sub $0x1,%esi 0.00 : 77f985: 78 66 js 77f9ed : { : int i = (high + low) / 2; 0.00 : 77f987: 89 f2 mov %esi,%edx : const FmgrBuiltin *ptr = &fmgr_builtins[i]; : : if (id == ptr->foid) 0.00 : 77f989: 31 c9 xor %ecx,%ecx : * Loop invariant: low is the first index that could contain target entry, : * and high is the last index that could contain it. : */ : while (low <= high) : { : int i = (high + low) / 2; 0.00 : 77f98b: d1 fa sar %edx : const FmgrBuiltin *ptr = &fmgr_builtins[i]; 0.00 : 77f98d: 48 63 c2 movslq %edx,%rax 0.00 : 77f990: 48 c1 e0 05 shl $0x5,%rax 0.00 : 77f994: 48 8d b8 c0 b6 8e 00 lea 0x8eb6c0(%rax),%rdi : : if (id == ptr->foid) 0.00 : 77f99b: 8b 80 c0 b6 8e 00 mov 0x8eb6c0(%rax),%eax 0.00 : 77f9a1: 41 39 c5 cmp %eax,%r13d 0.00 : 77f9a4: 75 3b jne 77f9e1 0.00 : 77f9a6: e9 ed 00 00 00 jmpq 77fa98 0.00 : 77f9ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return ptr; : else if (id > ptr->foid) : low = i + 1; /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:121 33.33 : 77f9b0: 8d 4a 01 lea 0x1(%rdx),%ecx : : /* : * Loop invariant: low is the first index that could contain target entry, : * and high is the last index that could contain it. : */ : while (low <= high) 0.00 : 77f9b3: 39 f1 cmp %esi,%ecx 0.00 : 77f9b5: 7f 36 jg 77f9ed : { : int i = (high + low) / 2; 0.00 : 77f9b7: 8d 14 0e lea (%rsi,%rcx,1),%edx 0.00 : 77f9ba: 89 d0 mov %edx,%eax 0.00 : 77f9bc: c1 e8 1f shr $0x1f,%eax 0.00 : 77f9bf: 8d 14 10 lea (%rax,%rdx,1),%edx 0.00 : 77f9c2: d1 fa sar %edx : const FmgrBuiltin *ptr = &fmgr_builtins[i]; 0.00 : 77f9c4: 48 63 c2 movslq %edx,%rax 0.00 : 77f9c7: 48 c1 e0 05 shl $0x5,%rax 0.00 : 77f9cb: 48 8d b8 c0 b6 8e 00 lea 0x8eb6c0(%rax),%rdi : : if (id == ptr->foid) 0.00 : 77f9d2: 8b 80 c0 b6 8e 00 mov 0x8eb6c0(%rax),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:118 66.67 : 77f9d8: 41 39 c5 cmp %eax,%r13d 0.00 : 77f9db: 0f 84 b7 00 00 00 je 77fa98 : return ptr; : else if (id > ptr->foid) 0.00 : 77f9e1: 41 39 c5 cmp %eax,%r13d 0.00 : 77f9e4: 77 ca ja 77f9b0 : low = i + 1; : else : high = i - 1; 0.00 : 77f9e6: 8d 72 ff lea -0x1(%rdx),%esi : : /* : * Loop invariant: low is the first index that could contain target entry, : * and high is the last index that could contain it. : */ : while (low <= high) 0.00 : 77f9e9: 39 f1 cmp %esi,%ecx 0.00 : 77f9eb: 7e ca jle 77f9b7 : finfo->fn_oid = functionId; : return; : } : : /* Otherwise we need the pg_proc entry */ : procedureTuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionId)); 0.00 : 77f9ed: 45 31 c0 xor %r8d,%r8d 0.00 : 77f9f0: 31 c9 xor %ecx,%ecx 0.00 : 77f9f2: 31 d2 xor %edx,%edx 0.00 : 77f9f4: 44 89 ee mov %r13d,%esi 0.00 : 77f9f7: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 77f9fc: e8 bf 22 ff ff callq 771cc0 : if ( !HeapTupleIsValid(procedureTuple)) 0.00 : 77fa01: 48 85 c0 test %rax,%rax : finfo->fn_oid = functionId; : return; : } : : /* Otherwise we need the pg_proc entry */ : procedureTuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionId)); 0.00 : 77fa04: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp) : if ( !HeapTupleIsValid(procedureTuple)) 0.00 : 77fa0b: 0f 84 54 04 00 00 je 77fe65 : elog(ERROR, "cache lookup failed for function %u", functionId); : procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fa11: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax : * inside fmgr_security_definer. This loses the ability to charge the : * overhead of fmgr_security_definer to the function, but gains the : * ability to set the track_functions GUC as a local GUC parameter of an : * interesting function and have the right things happen. : */ : if (!ignore_security && 0.00 : 77fa18: 45 84 e4 test %r12b,%r12b : : /* Otherwise we need the pg_proc entry */ : procedureTuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionId)); : if ( !HeapTupleIsValid(procedureTuple)) : elog(ERROR, "cache lookup failed for function %u", functionId); : procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fa1b: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 77fa1f: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 77fa23: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : : finfo->fn_nargs = procedureStruct->pronargs; 0.00 : 77fa27: 0f b7 43 64 movzwl 0x64(%rbx),%eax 0.00 : 77fa2b: 66 41 89 46 0c mov %ax,0xc(%r14) : finfo->fn_strict = procedureStruct->proisstrict; 0.00 : 77fa30: 0f b6 43 60 movzbl 0x60(%rbx),%eax 0.00 : 77fa34: 41 88 46 0e mov %al,0xe(%r14) : finfo->fn_retset = procedureStruct->proretset; 0.00 : 77fa38: 0f b6 43 61 movzbl 0x61(%rbx),%eax 0.00 : 77fa3c: 41 88 46 0f mov %al,0xf(%r14) : * inside fmgr_security_definer. This loses the ability to charge the : * overhead of fmgr_security_definer to the function, but gains the : * ability to set the track_functions GUC as a local GUC parameter of an : * interesting function and have the right things happen. : */ : if (!ignore_security && 0.00 : 77fa40: 0f 85 8d 00 00 00 jne 77fad3 0.00 : 77fa46: 80 7b 5e 00 cmpb $0x0,0x5e(%rbx) 0.00 : 77fa4a: 75 2a jne 77fa76 0.00 : 77fa4c: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi 0.00 : 77fa53: be 1a 00 00 00 mov $0x1a,%esi 0.00 : 77fa58: e8 43 f3 ce ff callq 46eda0 0.00 : 77fa5d: 84 c0 test %al,%al 0.00 : 77fa5f: 74 15 je 77fa76 0.00 : 77fa61: 48 8b 05 20 a1 43 00 mov 0x43a120(%rip),%rax # bb9b88 0.00 : 77fa68: 48 85 c0 test %rax,%rax 0.00 : 77fa6b: 74 66 je 77fad3 0.00 : 77fa6d: 44 89 ef mov %r13d,%edi 0.00 : 77fa70: ff d0 callq *%rax 0.00 : 77fa72: 84 c0 test %al,%al 0.00 : 77fa74: 74 5d je 77fad3 : FmgrHookIsNeeded(functionId))) : { : finfo->fn_addr = fmgr_security_definer; : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ : finfo->fn_oid = functionId; : ReleaseSysCache(procedureTuple); 0.00 : 77fa76: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi : if (!ignore_security && : (procedureStruct->prosecdef || : !heap_attisnull(procedureTuple, Anum_pg_proc_proconfig) || : FmgrHookIsNeeded(functionId))) : { : finfo->fn_addr = fmgr_security_definer; 0.00 : 77fa7d: 49 c7 06 b0 0d 78 00 movq $0x780db0,(%r14) : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ 0.00 : 77fa84: 41 c6 46 10 02 movb $0x2,0x10(%r14) : finfo->fn_oid = functionId; 0.00 : 77fa89: 45 89 6e 08 mov %r13d,0x8(%r14) : ReleaseSysCache(procedureTuple); 0.00 : 77fa8d: e8 1e 22 ff ff callq 771cb0 : break; : } : : finfo->fn_oid = functionId; : ReleaseSysCache(procedureTuple); : } 0.00 : 77fa92: eb 2d jmp 77fac1 0.00 : 77fa94: 0f 1f 40 00 nopl 0x0(%rax) : if ((fbp = fmgr_isbuiltin(functionId)) != NULL) : { : /* : * Fast path for builtin functions: don't bother consulting pg_proc : */ : finfo->fn_nargs = fbp->nargs; 0.00 : 77fa98: 0f b7 47 10 movzwl 0x10(%rdi),%eax 0.00 : 77fa9c: 66 41 89 46 0c mov %ax,0xc(%r14) : finfo->fn_strict = fbp->strict; 0.00 : 77faa1: 0f b6 47 12 movzbl 0x12(%rdi),%eax 0.00 : 77faa5: 41 88 46 0e mov %al,0xe(%r14) : finfo->fn_retset = fbp->retset; 0.00 : 77faa9: 0f b6 47 13 movzbl 0x13(%rdi),%eax : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ 0.00 : 77faad: 41 c6 46 10 02 movb $0x2,0x10(%r14) : /* : * Fast path for builtin functions: don't bother consulting pg_proc : */ : finfo->fn_nargs = fbp->nargs; : finfo->fn_strict = fbp->strict; : finfo->fn_retset = fbp->retset; 0.00 : 77fab2: 41 88 46 0f mov %al,0xf(%r14) : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ : finfo->fn_addr = fbp->func; 0.00 : 77fab6: 48 8b 47 18 mov 0x18(%rdi),%rax : finfo->fn_oid = functionId; 0.00 : 77faba: 45 89 6e 08 mov %r13d,0x8(%r14) : */ : finfo->fn_nargs = fbp->nargs; : finfo->fn_strict = fbp->strict; : finfo->fn_retset = fbp->retset; : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ : finfo->fn_addr = fbp->func; 0.00 : 77fabe: 49 89 06 mov %rax,(%r14) : break; : } : : finfo->fn_oid = functionId; : ReleaseSysCache(procedureTuple); : } 0.00 : 77fac1: 48 81 c4 b8 00 00 00 add $0xb8,%rsp 0.00 : 77fac8: 5b pop %rbx 0.00 : 77fac9: 41 5c pop %r12 0.00 : 77facb: 41 5d pop %r13 0.00 : 77facd: 41 5e pop %r14 0.00 : 77facf: 41 5f pop %r15 0.00 : 77fad1: c9 leaveq 0.00 : 77fad2: c3 retq : finfo->fn_oid = functionId; : ReleaseSysCache(procedureTuple); : return; : } : : switch (procedureStruct->prolang) 0.00 : 77fad3: 8b 43 48 mov 0x48(%rbx),%eax 0.00 : 77fad6: 83 f8 0d cmp $0xd,%eax 0.00 : 77fad9: 0f 84 a4 00 00 00 je 77fb83 0.00 : 77fadf: 83 f8 0e cmp $0xe,%eax 0.00 : 77fae2: 0f 84 38 03 00 00 je 77fe20 0.00 : 77fae8: 83 f8 0c cmp $0xc,%eax 0.00 : 77faeb: 0f 84 8d 02 00 00 je 77fd7e : * that finfo->fn_oid is not valid yet. : */ : static void : fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) : { : Form_pg_proc procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77faf1: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx : Oid language = procedureStruct->prolang; : HeapTuple languageTuple; : Form_pg_language languageStruct; : FmgrInfo plfinfo; : : languageTuple = SearchSysCache1(LANGOID, ObjectIdGetDatum(language)); 0.00 : 77faf8: 45 31 c0 xor %r8d,%r8d 0.00 : 77fafb: 31 c9 xor %ecx,%ecx 0.00 : 77fafd: bf 22 00 00 00 mov $0x22,%edi : * that finfo->fn_oid is not valid yet. : */ : static void : fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) : { : Form_pg_proc procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fb02: 48 8b 42 10 mov 0x10(%rdx),%rax : Oid language = procedureStruct->prolang; 0.00 : 77fb06: 0f b6 50 16 movzbl 0x16(%rax),%edx 0.00 : 77fb0a: 44 8b 64 10 48 mov 0x48(%rax,%rdx,1),%r12d : HeapTuple languageTuple; : Form_pg_language languageStruct; : FmgrInfo plfinfo; : : languageTuple = SearchSysCache1(LANGOID, ObjectIdGetDatum(language)); 0.00 : 77fb0f: 31 d2 xor %edx,%edx 0.00 : 77fb11: 44 89 e6 mov %r12d,%esi 0.00 : 77fb14: e8 a7 21 ff ff callq 771cc0 : if (!HeapTupleIsValid(languageTuple)) 0.00 : 77fb19: 48 85 c0 test %rax,%rax : Oid language = procedureStruct->prolang; : HeapTuple languageTuple; : Form_pg_language languageStruct; : FmgrInfo plfinfo; : : languageTuple = SearchSysCache1(LANGOID, ObjectIdGetDatum(language)); 0.00 : 77fb1c: 48 89 c3 mov %rax,%rbx : if (!HeapTupleIsValid(languageTuple)) 0.00 : 77fb1f: 0f 84 f1 04 00 00 je 780016 : elog(ERROR, "cache lookup failed for language %u", language); : languageStruct = (Form_pg_language) GETSTRUCT(languageTuple); 0.00 : 77fb25: 48 8b 50 10 mov 0x10(%rax),%rdx : /* : * Look up the language's call handler function, ignoring any attributes : * that would normally cause insertion of fmgr_security_definer. We need : * to get back a bare pointer to the actual C-language function. : */ : fmgr_info_cxt_security(languageStruct->lanplcallfoid, &plfinfo, 0.00 : 77fb29: 48 8d b5 50 ff ff ff lea -0xb0(%rbp),%rsi 0.00 : 77fb30: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 77fb35: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 77fb39: 8b 7c 02 48 mov 0x48(%rdx,%rax,1),%edi 0.00 : 77fb3d: 48 8b 15 1c ad 43 00 mov 0x43ad1c(%rip),%rdx # bba860 0.00 : 77fb44: e8 f7 fd ff ff callq 77f940 : /* : * If lookup of the PL handler function produced nonnull fn_extra, : * complain --- it must be an oldstyle function! We no longer support : * oldstyle PL handlers. : */ : if (plfinfo.fn_extra != NULL) 0.00 : 77fb49: 48 83 bd 68 ff ff ff cmpq $0x0,-0x98(%rbp) 0.00 : 77fb50: 00 : * that would normally cause insertion of fmgr_security_definer. We need : * to get back a bare pointer to the actual C-language function. : */ : fmgr_info_cxt_security(languageStruct->lanplcallfoid, &plfinfo, : CurrentMemoryContext, true); : finfo->fn_addr = plfinfo.fn_addr; 0.00 : 77fb51: 48 8b 85 50 ff ff ff mov -0xb0(%rbp),%rax 0.00 : 77fb58: 49 89 06 mov %rax,(%r14) : /* : * If lookup of the PL handler function produced nonnull fn_extra, : * complain --- it must be an oldstyle function! We no longer support : * oldstyle PL handlers. : */ : if (plfinfo.fn_extra != NULL) 0.00 : 77fb5b: 0f 85 88 04 00 00 jne 77ffe9 : elog(ERROR, "language %u has old-style handler", language); : : ReleaseSysCache(languageTuple); 0.00 : 77fb61: 48 89 df mov %rbx,%rdi 0.00 : 77fb64: e8 47 21 ff ff callq 771cb0 : finfo->fn_stats = TRACK_FUNC_PL; /* ie, track if ALL */ : break; : : default: : fmgr_info_other_lang(functionId, finfo, procedureTuple); : finfo->fn_stats = TRACK_FUNC_OFF; /* ie, track if not OFF */ 0.00 : 77fb69: 41 c6 46 10 00 movb $0x0,0x10(%r14) : break; : } : : finfo->fn_oid = functionId; : ReleaseSysCache(procedureTuple); 0.00 : 77fb6e: 48 8b bd 20 ff ff ff mov -0xe0(%rbp),%rdi : fmgr_info_other_lang(functionId, finfo, procedureTuple); : finfo->fn_stats = TRACK_FUNC_OFF; /* ie, track if not OFF */ : break; : } : : finfo->fn_oid = functionId; 0.00 : 77fb75: 45 89 6e 08 mov %r13d,0x8(%r14) : ReleaseSysCache(procedureTuple); 0.00 : 77fb79: e8 32 21 ff ff callq 771cb0 0.00 : 77fb7e: e9 3e ff ff ff jmpq 77fac1 : * finfo->fn_oid is not valid yet. : */ : static void : fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) : { : Form_pg_proc procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fb83: 48 8b 95 20 ff ff ff mov -0xe0(%rbp),%rdx : * If an entry exists and is up to date, return it; else return NULL : */ : static CFuncHashTabEntry * : lookup_C_func(HeapTuple procedureTuple) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fb8a: 31 c0 xor %eax,%eax : * finfo->fn_oid is not valid yet. : */ : static void : fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) : { : Form_pg_proc procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fb8c: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 77fb90: 48 89 95 48 ff ff ff mov %rdx,-0xb8(%rbp) 0.00 : 77fb97: 0f b6 4a 16 movzbl 0x16(%rdx),%ecx 0.00 : 77fb9b: 48 89 8d 40 ff ff ff mov %rcx,-0xc0(%rbp) : * If an entry exists and is up to date, return it; else return NULL : */ : static CFuncHashTabEntry * : lookup_C_func(HeapTuple procedureTuple) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fba2: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 77fba6: 74 12 je 77fbba 0.00 : 77fba8: 48 8b 8d 48 ff ff ff mov -0xb8(%rbp),%rcx 0.00 : 77fbaf: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : 77fbb6: 8b 44 11 fc mov -0x4(%rcx,%rdx,1),%eax : CFuncHashTabEntry *entry; : : if (CFuncHash == NULL) 0.00 : 77fbba: 48 8b 3d d7 9f 43 00 mov 0x439fd7(%rip),%rdi # bb9b98 : * If an entry exists and is up to date, return it; else return NULL : */ : static CFuncHashTabEntry * : lookup_C_func(HeapTuple procedureTuple) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fbc1: 89 45 c8 mov %eax,-0x38(%rbp) : CFuncHashTabEntry *entry; : : if (CFuncHash == NULL) 0.00 : 77fbc4: 48 85 ff test %rdi,%rdi 0.00 : 77fbc7: 74 2b je 77fbf4 : return NULL; /* no table yet */ : entry = (CFuncHashTabEntry *) 0.00 : 77fbc9: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.00 : 77fbcd: 31 c9 xor %ecx,%ecx 0.00 : 77fbcf: 31 d2 xor %edx,%edx 0.00 : 77fbd1: e8 ca 4a 00 00 callq 7846a0 : hash_search(CFuncHash, : &fn_oid, : HASH_FIND, : NULL); : if (entry == NULL) 0.00 : 77fbd6: 48 85 c0 test %rax,%rax : Oid fn_oid = HeapTupleGetOid(procedureTuple); : CFuncHashTabEntry *entry; : : if (CFuncHash == NULL) : return NULL; /* no table yet */ : entry = (CFuncHashTabEntry *) 0.00 : 77fbd9: 48 89 c3 mov %rax,%rbx : hash_search(CFuncHash, : &fn_oid, : HASH_FIND, : NULL); : if (entry == NULL) 0.00 : 77fbdc: 74 16 je 77fbf4 : return NULL; /* no such entry */ : if (entry->fn_xmin == HeapTupleHeaderGetRawXmin(procedureTuple->t_data) && 0.00 : 77fbde: 48 8b 85 20 ff ff ff mov -0xe0(%rbp),%rax 0.00 : 77fbe5: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 77fbe9: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 77fbec: 3b 02 cmp (%rdx),%eax 0.00 : 77fbee: 0f 84 9e 02 00 00 je 77fe92 : /* : * Get prosrc and probin strings (link symbol and library filename). : * While in general these columns might be null, that's not allowed : * for C-language functions. : */ : prosrcattr = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fbf4: 48 8d 5d ce lea -0x32(%rbp),%rbx 0.00 : 77fbf8: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 77fbff: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 77fc04: ba 18 00 00 00 mov $0x18,%edx 0.00 : 77fc09: 48 89 d9 mov %rbx,%rcx 0.00 : 77fc0c: e8 7f 1e ff ff callq 771a90 : Anum_pg_proc_prosrc, &isnull); : if (isnull) 0.00 : 77fc11: 80 7d ce 00 cmpb $0x0,-0x32(%rbp) : /* : * Get prosrc and probin strings (link symbol and library filename). : * While in general these columns might be null, that's not allowed : * for C-language functions. : */ : prosrcattr = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fc15: 48 89 c7 mov %rax,%rdi : Anum_pg_proc_prosrc, &isnull); : if (isnull) 0.00 : 77fc18: 0f 85 28 03 00 00 jne 77ff46 : elog(ERROR, "null prosrc for C function %u", functionId); : prosrcstring = TextDatumGetCString(prosrcattr); 0.00 : 77fc1e: e8 8d a5 fd ff callq 75a1b0 : : probinattr = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fc23: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 77fc2a: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 77fc2f: 48 89 d9 mov %rbx,%rcx 0.00 : 77fc32: ba 19 00 00 00 mov $0x19,%edx : */ : prosrcattr = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc for C function %u", functionId); : prosrcstring = TextDatumGetCString(prosrcattr); 0.00 : 77fc37: 49 89 c7 mov %rax,%r15 : : probinattr = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fc3a: e8 51 1e ff ff callq 771a90 : Anum_pg_proc_probin, &isnull); : if (isnull) 0.00 : 77fc3f: 80 7d ce 00 cmpb $0x0,-0x32(%rbp) : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc for C function %u", functionId); : prosrcstring = TextDatumGetCString(prosrcattr); : : probinattr = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fc43: 48 89 c7 mov %rax,%rdi : Anum_pg_proc_probin, &isnull); : if (isnull) 0.00 : 77fc46: 0f 85 cd 02 00 00 jne 77ff19 : elog(ERROR, "null probin for C function %u", functionId); : probinstring = TextDatumGetCString(probinattr); 0.00 : 77fc4c: e8 5f a5 fd ff callq 75a1b0 : : /* Look up the function itself */ : user_fn = load_external_function(probinstring, prosrcstring, true, 0.00 : 77fc51: 48 8d 4d c0 lea -0x40(%rbp),%rcx 0.00 : 77fc55: ba 01 00 00 00 mov $0x1,%edx 0.00 : 77fc5a: 4c 89 fe mov %r15,%rsi 0.00 : 77fc5d: 48 89 c7 mov %rax,%rdi : : probinattr = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_probin, &isnull); : if (isnull) : elog(ERROR, "null probin for C function %u", functionId); : probinstring = TextDatumGetCString(probinattr); 0.00 : 77fc60: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp) : : /* Look up the function itself */ : user_fn = load_external_function(probinstring, prosrcstring, true, 0.00 : 77fc67: e8 64 dc ff ff callq 77d8d0 : &libraryhandle); : : /* Get the function information record (real or default) */ : inforec = fetch_finfo_record(libraryhandle, prosrcstring); 0.00 : 77fc6c: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 77fc70: 4c 89 fe mov %r15,%rsi : if (isnull) : elog(ERROR, "null probin for C function %u", functionId); : probinstring = TextDatumGetCString(probinattr); : : /* Look up the function itself */ : user_fn = load_external_function(probinstring, prosrcstring, true, 0.00 : 77fc73: 49 89 c4 mov %rax,%r12 : &libraryhandle); : : /* Get the function information record (real or default) */ : inforec = fetch_finfo_record(libraryhandle, prosrcstring); 0.00 : 77fc76: e8 e5 fb ff ff callq 77f860 : */ : static void : record_C_func(HeapTuple procedureTuple, : PGFunction user_fn, const Pg_finfo_record *inforec) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fc7b: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx : /* Look up the function itself */ : user_fn = load_external_function(probinstring, prosrcstring, true, : &libraryhandle); : : /* Get the function information record (real or default) */ : inforec = fetch_finfo_record(libraryhandle, prosrcstring); 0.00 : 77fc82: 48 89 c3 mov %rax,%rbx : */ : static void : record_C_func(HeapTuple procedureTuple, : PGFunction user_fn, const Pg_finfo_record *inforec) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fc85: 31 c0 xor %eax,%eax 0.00 : 77fc87: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 77fc8b: f6 42 14 08 testb $0x8,0x14(%rdx) 0.00 : 77fc8f: 74 08 je 77fc99 0.00 : 77fc91: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 77fc95: 8b 44 02 fc mov -0x4(%rdx,%rax,1),%eax : CFuncHashTabEntry *entry; : bool found; : : /* Create the hash table if it doesn't exist yet */ : if (CFuncHash == NULL) 0.00 : 77fc99: 48 83 3d f7 9e 43 00 cmpq $0x0,0x439ef7(%rip) # bb9b98 0.00 : 77fca0: 00 : */ : static void : record_C_func(HeapTuple procedureTuple, : PGFunction user_fn, const Pg_finfo_record *inforec) : { : Oid fn_oid = HeapTupleGetOid(procedureTuple); 0.00 : 77fca1: 89 45 c8 mov %eax,-0x38(%rbp) : CFuncHashTabEntry *entry; : bool found; : : /* Create the hash table if it doesn't exist yet */ : if (CFuncHash == NULL) 0.00 : 77fca4: 0f 84 11 02 00 00 je 77febb : 100, : &hash_ctl, : HASH_ELEM | HASH_FUNCTION); : } : : entry = (CFuncHashTabEntry *) 0.00 : 77fcaa: 48 8b 3d e7 9e 43 00 mov 0x439ee7(%rip),%rdi # bb9b98 0.00 : 77fcb1: 48 8d 4d cd lea -0x33(%rbp),%rcx 0.00 : 77fcb5: 48 8d 75 c8 lea -0x38(%rbp),%rsi 0.00 : 77fcb9: ba 01 00 00 00 mov $0x1,%edx 0.00 : 77fcbe: e8 dd 49 00 00 callq 7846a0 : hash_search(CFuncHash, : &fn_oid, : HASH_ENTER, : &found); : /* OID is already filled in */ : entry->fn_xmin = HeapTupleHeaderGetRawXmin(procedureTuple->t_data); 0.00 : 77fcc3: 48 8b 8d 20 ff ff ff mov -0xe0(%rbp),%rcx : inforec = fetch_finfo_record(libraryhandle, prosrcstring); : : /* Cache the addresses for later calls */ : record_C_func(procedureTuple, user_fn, inforec); : : pfree(prosrcstring); 0.00 : 77fcca: 4c 89 ff mov %r15,%rdi : hash_search(CFuncHash, : &fn_oid, : HASH_ENTER, : &found); : /* OID is already filled in */ : entry->fn_xmin = HeapTupleHeaderGetRawXmin(procedureTuple->t_data); 0.00 : 77fccd: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 77fcd1: 8b 12 mov (%rdx),%edx 0.00 : 77fcd3: 89 50 04 mov %edx,0x4(%rax) : entry->fn_tid = procedureTuple->t_self; 0.00 : 77fcd6: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 77fcd9: 89 50 08 mov %edx,0x8(%rax) 0.00 : 77fcdc: 0f b7 51 08 movzwl 0x8(%rcx),%edx : entry->user_fn = user_fn; 0.00 : 77fce0: 4c 89 60 10 mov %r12,0x10(%rax) : entry->inforec = inforec; 0.00 : 77fce4: 48 89 58 18 mov %rbx,0x18(%rax) : &fn_oid, : HASH_ENTER, : &found); : /* OID is already filled in */ : entry->fn_xmin = HeapTupleHeaderGetRawXmin(procedureTuple->t_data); : entry->fn_tid = procedureTuple->t_self; 0.00 : 77fce8: 66 89 50 0c mov %dx,0xc(%rax) : inforec = fetch_finfo_record(libraryhandle, prosrcstring); : : /* Cache the addresses for later calls */ : record_C_func(procedureTuple, user_fn, inforec); : : pfree(prosrcstring); 0.00 : 77fcec: e8 8f 8e 01 00 callq 798b80 : pfree(probinstring); 0.00 : 77fcf1: 48 8b bd 30 ff ff ff mov -0xd0(%rbp),%rdi 0.00 : 77fcf8: e8 83 8e 01 00 callq 798b80 : } : : switch (inforec->api_version) 0.00 : 77fcfd: 8b 03 mov (%rbx),%eax 0.00 : 77fcff: 85 c0 test %eax,%eax 0.00 : 77fd01: 0f 85 25 01 00 00 jne 77fe2c : * finfo->fn_oid is not valid yet. : */ : static void : fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) : { : Form_pg_proc procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); 0.00 : 77fd07: 4c 8b bd 48 ff ff ff mov -0xb8(%rbp),%r15 0.00 : 77fd0e: 4c 03 bd 40 ff ff ff add -0xc0(%rbp),%r15 : switch (inforec->api_version) : { : case 0: : /* Old style: need to use a handler */ : finfo->fn_addr = fmgr_oldstyle; : fnextra = (Oldstyle_fnextra *) 0.00 : 77fd15: be 70 00 00 00 mov $0x70,%esi 0.00 : 77fd1a: 49 8b 7e 20 mov 0x20(%r14),%rdi : : switch (inforec->api_version) : { : case 0: : /* Old style: need to use a handler */ : finfo->fn_addr = fmgr_oldstyle; 0.00 : 77fd1e: 49 c7 06 30 ed 77 00 movq $0x77ed30,(%r14) : fnextra = (Oldstyle_fnextra *) 0.00 : 77fd25: e8 f6 92 01 00 callq 799020 0.00 : 77fd2a: 48 89 85 38 ff ff ff mov %rax,-0xc8(%rbp) : MemoryContextAllocZero(finfo->fn_mcxt, : sizeof(Oldstyle_fnextra)); : finfo->fn_extra = (void *) fnextra; 0.00 : 77fd31: 49 89 46 18 mov %rax,0x18(%r14) : fnextra->func = (func_ptr) user_fn; 0.00 : 77fd35: 4c 89 20 mov %r12,(%rax) : for (i = 0; i < procedureStruct->pronargs; i++) 0.00 : 77fd38: 66 41 83 7f 64 00 cmpw $0x0,0x64(%r15) 0.00 : 77fd3e: 7e 34 jle 77fd74 0.00 : 77fd40: 45 31 e4 xor %r12d,%r12d 0.00 : 77fd43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : fnextra->arg_toastable[i] = 0.00 : 77fd48: 49 63 dc movslq %r12d,%rbx 0.00 : 77fd4b: 41 8b bc 9f 84 00 00 mov 0x84(%r15,%rbx,4),%edi 0.00 : 77fd52: 00 0.00 : 77fd53: e8 58 26 ff ff callq 7723b0 0.00 : 77fd58: 3c 70 cmp $0x70,%al 0.00 : 77fd5a: 48 8b 85 38 ff ff ff mov -0xc8(%rbp),%rax 0.00 : 77fd61: 0f 95 44 18 08 setne 0x8(%rax,%rbx,1) : fnextra = (Oldstyle_fnextra *) : MemoryContextAllocZero(finfo->fn_mcxt, : sizeof(Oldstyle_fnextra)); : finfo->fn_extra = (void *) fnextra; : fnextra->func = (func_ptr) user_fn; : for (i = 0; i < procedureStruct->pronargs; i++) 0.00 : 77fd66: 41 0f bf 47 64 movswl 0x64(%r15),%eax 0.00 : 77fd6b: 41 83 c4 01 add $0x1,%r12d 0.00 : 77fd6f: 41 39 c4 cmp %eax,%r12d 0.00 : 77fd72: 7c d4 jl 77fd48 : finfo->fn_stats = TRACK_FUNC_PL; /* ie, track if ALL */ : break; : : case SQLlanguageId: : finfo->fn_addr = fmgr_sql; : finfo->fn_stats = TRACK_FUNC_PL; /* ie, track if ALL */ 0.00 : 77fd74: 41 c6 46 10 01 movb $0x1,0x10(%r14) : break; 0.00 : 77fd79: e9 f0 fd ff ff jmpq 77fb6e : * alias for a builtin function, we can end up here. In that case : * we have to look up the function by name. The name of the : * internal function is stored in prosrc (it doesn't have to be : * the same as the name of the alias!) : */ : prosrcdatum = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fd7e: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 77fd85: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 77fd89: bf 2a 00 00 00 mov $0x2a,%edi 0.00 : 77fd8e: ba 18 00 00 00 mov $0x18,%edx 0.00 : 77fd93: e8 f8 1c ff ff callq 771a90 : Anum_pg_proc_prosrc, &isnull); : if (isnull) 0.00 : 77fd98: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) : * alias for a builtin function, we can end up here. In that case : * we have to look up the function by name. The name of the : * internal function is stored in prosrc (it doesn't have to be : * the same as the name of the alias!) : */ : prosrcdatum = SysCacheGetAttr(PROCOID, procedureTuple, 0.00 : 77fd9c: 48 89 c7 mov %rax,%rdi : Anum_pg_proc_prosrc, &isnull); : if (isnull) 0.00 : 77fd9f: 0f 85 1a 02 00 00 jne 77ffbf : elog(ERROR, "null prosrc"); : prosrc = TextDatumGetCString(prosrcdatum); 0.00 : 77fda5: e8 06 a4 fd ff callq 75a1b0 : static const FmgrBuiltin * : fmgr_lookupByName(const char *name) : { : int i; : : for (i = 0; i < fmgr_nbuiltins; i++) 0.00 : 77fdaa: 45 85 ff test %r15d,%r15d : */ : prosrcdatum = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc"); : prosrc = TextDatumGetCString(prosrcdatum); 0.00 : 77fdad: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp) : static const FmgrBuiltin * : fmgr_lookupByName(const char *name) : { : int i; : : for (i = 0; i < fmgr_nbuiltins; i++) 0.00 : 77fdb4: 0f 8e b9 01 00 00 jle 77ff73 0.00 : 77fdba: 41 bc c8 b6 8e 00 mov $0x8eb6c8,%r12d 0.00 : 77fdc0: 31 db xor %ebx,%ebx 0.00 : 77fdc2: eb 14 jmp 77fdd8 0.00 : 77fdc4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 77fdc8: 83 c3 01 add $0x1,%ebx 0.00 : 77fdcb: 49 83 c4 20 add $0x20,%r12 0.00 : 77fdcf: 44 39 fb cmp %r15d,%ebx 0.00 : 77fdd2: 0f 8d 9b 01 00 00 jge 77ff73 : { : if (strcmp(name, fmgr_builtins[i].funcName) == 0) 0.00 : 77fdd8: 49 8b 34 24 mov (%r12),%rsi 0.00 : 77fddc: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi 0.00 : 77fde3: e8 48 9f ce ff callq 469d30 0.00 : 77fde8: 85 c0 test %eax,%eax 0.00 : 77fdea: 75 dc jne 77fdc8 : return fmgr_builtins + i; 0.00 : 77fdec: 48 63 c3 movslq %ebx,%rax 0.00 : 77fdef: 48 c1 e0 05 shl $0x5,%rax : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc"); : prosrc = TextDatumGetCString(prosrcdatum); : fbp = fmgr_lookupByName(prosrc); : if (fbp == NULL) 0.00 : 77fdf3: 48 89 c3 mov %rax,%rbx 0.00 : 77fdf6: 48 81 c3 c0 b6 8e 00 add $0x8eb6c0,%rbx 0.00 : 77fdfd: 0f 84 70 01 00 00 je 77ff73 : ereport(ERROR, : (errcode(ERRCODE_UNDEFINED_FUNCTION), : errmsg("internal function \"%s\" is not in internal lookup table", : prosrc))); : pfree(prosrc); 0.00 : 77fe03: 48 8b bd 28 ff ff ff mov -0xd8(%rbp),%rdi 0.00 : 77fe0a: e8 71 8d 01 00 callq 798b80 : /* Should we check that nargs, strict, retset match the table? */ : finfo->fn_addr = fbp->func; 0.00 : 77fe0f: 48 8b 43 18 mov 0x18(%rbx),%rax : /* note this policy is also assumed in fast path above */ : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ 0.00 : 77fe13: 41 c6 46 10 02 movb $0x2,0x10(%r14) : (errcode(ERRCODE_UNDEFINED_FUNCTION), : errmsg("internal function \"%s\" is not in internal lookup table", : prosrc))); : pfree(prosrc); : /* Should we check that nargs, strict, retset match the table? */ : finfo->fn_addr = fbp->func; 0.00 : 77fe18: 49 89 06 mov %rax,(%r14) : /* note this policy is also assumed in fast path above */ : finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ : break; 0.00 : 77fe1b: e9 4e fd ff ff jmpq 77fb6e : fmgr_info_C_lang(functionId, finfo, procedureTuple); : finfo->fn_stats = TRACK_FUNC_PL; /* ie, track if ALL */ : break; : : case SQLlanguageId: : finfo->fn_addr = fmgr_sql; 0.00 : 77fe20: 49 c7 06 50 6d 5b 00 movq $0x5b6d50,(%r14) 0.00 : 77fe27: e9 48 ff ff ff jmpq 77fd74 : : pfree(prosrcstring); : pfree(probinstring); : } : : switch (inforec->api_version) 0.00 : 77fe2c: 83 e8 01 sub $0x1,%eax 0.00 : 77fe2f: 74 2c je 77fe5d : /* New style: call directly */ : finfo->fn_addr = user_fn; : break; : default: : /* Shouldn't get here if fetch_finfo_record did its job */ : elog(ERROR, "unrecognized function API version: %d", 0.00 : 77fe31: ba f0 53 8d 00 mov $0x8d53f0,%edx 0.00 : 77fe36: be 83 01 00 00 mov $0x183,%esi 0.00 : 77fe3b: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77fe40: e8 db b5 ff ff callq 77b420 0.00 : 77fe45: 8b 13 mov (%rbx),%edx 0.00 : 77fe47: be c8 4e 8d 00 mov $0x8d4ec8,%esi 0.00 : 77fe4c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77fe51: 31 c0 xor %eax,%eax 0.00 : 77fe53: e8 d8 b3 ff ff callq 77b230 0.00 : 77fe58: e8 73 96 ce ff callq 4694d0 : TypeIsToastable(procedureStruct->proargtypes.values[i]); : } : break; : case 1: : /* New style: call directly */ : finfo->fn_addr = user_fn; 0.00 : 77fe5d: 4d 89 26 mov %r12,(%r14) 0.00 : 77fe60: e9 0f ff ff ff jmpq 77fd74 : } : : /* Otherwise we need the pg_proc entry */ : procedureTuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionId)); : if ( !HeapTupleIsValid(procedureTuple)) : elog(ERROR, "cache lookup failed for function %u", functionId); 0.00 : 77fe65: ba d0 53 8d 00 mov $0x8d53d0,%edx 0.00 : 77fe6a: be d9 00 00 00 mov $0xd9,%esi 0.00 : 77fe6f: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77fe74: e8 a7 b5 ff ff callq 77b420 0.00 : 77fe79: 44 89 ea mov %r13d,%edx 0.00 : 77fe7c: be b8 2b 7c 00 mov $0x7c2bb8,%esi 0.00 : 77fe81: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77fe86: 31 c0 xor %eax,%eax 0.00 : 77fe88: e8 a3 b3 ff ff callq 77b230 0.00 : 77fe8d: e8 3e 96 ce ff callq 4694d0 : &fn_oid, : HASH_FIND, : NULL); : if (entry == NULL) : return NULL; /* no such entry */ : if (entry->fn_xmin == HeapTupleHeaderGetRawXmin(procedureTuple->t_data) && 0.00 : 77fe92: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi 0.00 : 77fe99: 48 8d 7b 08 lea 0x8(%rbx),%rdi 0.00 : 77fe9d: 48 83 c6 04 add $0x4,%rsi 0.00 : 77fea1: e8 ba 73 f1 ff callq 697260 0.00 : 77fea6: 84 c0 test %al,%al 0.00 : 77fea8: 0f 84 46 fd ff ff je 77fbf4 : * See if we have the function address cached already : */ : hashentry = lookup_C_func(procedureTuple); : if (hashentry) : { : user_fn = hashentry->user_fn; 0.00 : 77feae: 4c 8b 63 10 mov 0x10(%rbx),%r12 : inforec = hashentry->inforec; 0.00 : 77feb2: 48 8b 5b 18 mov 0x18(%rbx),%rbx 0.00 : 77feb6: e9 42 fe ff ff jmpq 77fcfd : /* Create the hash table if it doesn't exist yet */ : if (CFuncHash == NULL) : { : HASHCTL hash_ctl; : : MemSet(&hash_ctl, 0, sizeof(hash_ctl)); 0.00 : 77febb: 48 8d 95 50 ff ff ff lea -0xb0(%rbp),%rdx 0.00 : 77fec2: 48 8d 4a 68 lea 0x68(%rdx),%rcx 0.00 : 77fec6: 48 39 d1 cmp %rdx,%rcx 0.00 : 77fec9: 76 13 jbe 77fede 0.00 : 77fecb: 48 89 d0 mov %rdx,%rax 0.00 : 77fece: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 77fed5: 48 83 c0 08 add $0x8,%rax 0.00 : 77fed9: 48 39 c1 cmp %rax,%rcx 0.00 : 77fedc: 75 f0 jne 77fece : hash_ctl.keysize = sizeof(Oid); : hash_ctl.entrysize = sizeof(CFuncHashTabEntry); : hash_ctl.hash = oid_hash; : CFuncHash = hash_create("CFuncHash", 0.00 : 77fede: b9 30 00 00 00 mov $0x30,%ecx 0.00 : 77fee3: be 64 00 00 00 mov $0x64,%esi 0.00 : 77fee8: bf d7 4c 8d 00 mov $0x8d4cd7,%edi : if (CFuncHash == NULL) : { : HASHCTL hash_ctl; : : MemSet(&hash_ctl, 0, sizeof(hash_ctl)); : hash_ctl.keysize = sizeof(Oid); 0.00 : 77feed: 48 c7 85 78 ff ff ff movq $0x4,-0x88(%rbp) 0.00 : 77fef4: 04 00 00 00 : hash_ctl.entrysize = sizeof(CFuncHashTabEntry); 0.00 : 77fef8: 48 c7 45 80 20 00 00 movq $0x20,-0x80(%rbp) 0.00 : 77feff: 00 : hash_ctl.hash = oid_hash; 0.00 : 77ff00: 48 c7 45 88 50 4f 78 movq $0x784f50,-0x78(%rbp) 0.00 : 77ff07: 00 : CFuncHash = hash_create("CFuncHash", 0.00 : 77ff08: e8 a3 49 00 00 callq 7848b0 0.00 : 77ff0d: 48 89 05 84 9c 43 00 mov %rax,0x439c84(%rip) # bb9b98 0.00 : 77ff14: e9 91 fd ff ff jmpq 77fcaa : prosrcstring = TextDatumGetCString(prosrcattr); : : probinattr = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_probin, &isnull); : if (isnull) : elog(ERROR, "null probin for C function %u", functionId); 0.00 : 77ff19: ba f0 53 8d 00 mov $0x8d53f0,%edx 0.00 : 77ff1e: be 5b 01 00 00 mov $0x15b,%esi 0.00 : 77ff23: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77ff28: e8 f3 b4 ff ff callq 77b420 0.00 : 77ff2d: 44 89 ea mov %r13d,%edx 0.00 : 77ff30: be 58 79 7c 00 mov $0x7c7958,%esi 0.00 : 77ff35: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77ff3a: 31 c0 xor %eax,%eax 0.00 : 77ff3c: e8 ef b2 ff ff callq 77b230 0.00 : 77ff41: e8 8a 95 ce ff callq 4694d0 : * for C-language functions. : */ : prosrcattr = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc for C function %u", functionId); 0.00 : 77ff46: ba f0 53 8d 00 mov $0x8d53f0,%edx 0.00 : 77ff4b: be 55 01 00 00 mov $0x155,%esi 0.00 : 77ff50: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77ff55: e8 c6 b4 ff ff callq 77b420 0.00 : 77ff5a: 44 89 ea mov %r13d,%edx 0.00 : 77ff5d: be 3a 79 7c 00 mov $0x7c793a,%esi 0.00 : 77ff62: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77ff67: 31 c0 xor %eax,%eax 0.00 : 77ff69: e8 c2 b2 ff ff callq 77b230 0.00 : 77ff6e: e8 5d 95 ce ff callq 4694d0 : if (isnull) : elog(ERROR, "null prosrc"); : prosrc = TextDatumGetCString(prosrcdatum); : fbp = fmgr_lookupByName(prosrc); : if (fbp == NULL) : ereport(ERROR, 0.00 : 77ff73: 45 31 c0 xor %r8d,%r8d 0.00 : 77ff76: b9 d0 53 8d 00 mov $0x8d53d0,%ecx 0.00 : 77ff7b: ba 11 01 00 00 mov $0x111,%edx 0.00 : 77ff80: be b3 47 8d 00 mov $0x8d47b3,%esi 0.00 : 77ff85: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77ff8a: e8 31 ab ff ff callq 77aac0 0.00 : 77ff8f: 84 c0 test %al,%al 0.00 : 77ff91: 74 db je 77ff6e 0.00 : 77ff93: 48 8b b5 28 ff ff ff mov -0xd8(%rbp),%rsi 0.00 : 77ff9a: bf 90 4e 8d 00 mov $0x8d4e90,%edi 0.00 : 77ff9f: 31 c0 xor %eax,%eax 0.00 : 77ffa1: e8 fa c8 ff ff callq 77c8a0 0.00 : 77ffa6: bf 84 80 20 03 mov $0x3208084,%edi 0.00 : 77ffab: 89 c3 mov %eax,%ebx 0.00 : 77ffad: e8 9e cd ff ff callq 77cd50 0.00 : 77ffb2: 89 de mov %ebx,%esi 0.00 : 77ffb4: 89 c7 mov %eax,%edi 0.00 : 77ffb6: 31 c0 xor %eax,%eax 0.00 : 77ffb8: e8 23 a6 ff ff callq 77a5e0 0.00 : 77ffbd: eb af jmp 77ff6e : * the same as the name of the alias!) : */ : prosrcdatum = SysCacheGetAttr(PROCOID, procedureTuple, : Anum_pg_proc_prosrc, &isnull); : if (isnull) : elog(ERROR, "null prosrc"); 0.00 : 77ffbf: ba d0 53 8d 00 mov $0x8d53d0,%edx 0.00 : 77ffc4: be 0a 01 00 00 mov $0x10a,%esi 0.00 : 77ffc9: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77ffce: e8 4d b4 ff ff callq 77b420 0.00 : 77ffd3: be 1c 79 7c 00 mov $0x7c791c,%esi 0.00 : 77ffd8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 77ffdd: 31 c0 xor %eax,%eax 0.00 : 77ffdf: e8 4c b2 ff ff callq 77b230 0.00 : 77ffe4: e8 e7 94 ce ff callq 4694d0 : * If lookup of the PL handler function produced nonnull fn_extra, : * complain --- it must be an oldstyle function! We no longer support : * oldstyle PL handlers. : */ : if (plfinfo.fn_extra != NULL) : elog(ERROR, "language %u has old-style handler", language); 0.00 : 77ffe9: ba 10 54 8d 00 mov $0x8d5410,%edx 0.00 : 77ffee: be a9 01 00 00 mov $0x1a9,%esi 0.00 : 77fff3: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 77fff8: e8 23 b4 ff ff callq 77b420 0.00 : 77fffd: 44 89 e2 mov %r12d,%edx 0.00 : 780000: be f0 4e 8d 00 mov $0x8d4ef0,%esi 0.00 : 780005: bf 14 00 00 00 mov $0x14,%edi 0.00 : 78000a: 31 c0 xor %eax,%eax 0.00 : 78000c: e8 1f b2 ff ff callq 77b230 0.00 : 780011: e8 ba 94 ce ff callq 4694d0 : Form_pg_language languageStruct; : FmgrInfo plfinfo; : : languageTuple = SearchSysCache1(LANGOID, ObjectIdGetDatum(language)); : if (!HeapTupleIsValid(languageTuple)) : elog(ERROR, "cache lookup failed for language %u", language); 0.00 : 780016: ba 10 54 8d 00 mov $0x8d5410,%edx 0.00 : 78001b: be 97 01 00 00 mov $0x197,%esi 0.00 : 780020: bf b3 47 8d 00 mov $0x8d47b3,%edi 0.00 : 780025: e8 f6 b3 ff ff callq 77b420 0.00 : 78002a: 44 89 e2 mov %r12d,%edx 0.00 : 78002d: be b0 3b 7c 00 mov $0x7c3bb0,%esi 0.00 : 780032: bf 14 00 00 00 mov $0x14,%edi 0.00 : 780037: 31 c0 xor %eax,%eax 0.00 : 780039: e8 f2 b1 ff ff callq 77b230 0.00 : 78003e: e8 8d 94 ce ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:614 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:623 33.33 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:625 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798e90 : : * This could be turned into a macro, but we'd have to import : * nodes/memnodes.h into postgres.h which seems a bad idea. : */ : void * : MemoryContextAlloc(MemoryContext context, Size size) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:614 33.33 : 798e90: 55 push %rbp 0.00 : 798e91: 48 89 e5 mov %rsp,%rbp 0.00 : 798e94: 53 push %rbx 0.00 : 798e95: 48 89 f3 mov %rsi,%rbx 0.00 : 798e98: 48 83 ec 08 sub $0x8,%rsp : void *ret; : : AssertArg(MemoryContextIsValid(context)); : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) 0.00 : 798e9c: 48 81 fe ff ff ff 3f cmp $0x3fffffff,%rsi 0.00 : 798ea3: 77 14 ja 798eb9 : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; : : ret = (*context->methods->alloc) (context, size); 0.00 : 798ea5: 48 8b 47 08 mov 0x8(%rdi),%rax : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:623 33.33 : 798ea9: c6 47 30 00 movb $0x0,0x30(%rdi) : : ret = (*context->methods->alloc) (context, size); /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:625 33.33 : 798ead: 4c 8b 18 mov (%rax),%r11 : VALGRIND_MEMPOOL_ALLOC(context, ret, size); : : return ret; : } 0.00 : 798eb0: 48 83 c4 08 add $0x8,%rsp 0.00 : 798eb4: 5b pop %rbx 0.00 : 798eb5: c9 leaveq : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; : : ret = (*context->methods->alloc) (context, size); 0.00 : 798eb6: 41 ff e3 jmpq *%r11 : : AssertArg(MemoryContextIsValid(context)); : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); 0.00 : 798eb9: ba 60 20 8e 00 mov $0x8e2060,%edx 0.00 : 798ebe: be 6d 02 00 00 mov $0x26d,%esi 0.00 : 798ec3: bf 8e 1f 8e 00 mov $0x8e1f8e,%edi 0.00 : 798ec8: e8 53 25 fe ff callq 77b420 0.00 : 798ecd: 48 89 da mov %rbx,%rdx 0.00 : 798ed0: be b8 1f 8e 00 mov $0x8e1fb8,%esi 0.00 : 798ed5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 798eda: 31 c0 xor %eax,%eax 0.00 : 798edc: e8 4f 23 fe ff callq 77b230 0.00 : 798ee1: e8 ea 05 cd ff callq 4694d0 Sorted summary for file /lib64/libm-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libm-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000015990 <__amd_bas64_exp>: 0.00 : 15990: 66 0f 2e 05 38 67 24 ucomisd 0x246738(%rip),%xmm0 # 25c0d0 <_LIB_VERSION+0x1048> 0.00 : 15997: 00 0.00 : 15998: 0f 87 32 01 00 00 ja 15ad0 <__amd_bas64_exp+0x140> 0.00 : 1599e: 0f 8a 5c 01 00 00 jp 15b00 <__amd_bas64_exp+0x170> 0.00 : 159a4: 66 0f 2e 05 2c 67 24 ucomisd 0x24672c(%rip),%xmm0 # 25c0d8 <_LIB_VERSION+0x1050> 0.00 : 159ab: 00 0.00 : 159ac: 0f 86 6e 01 00 00 jbe 15b20 <__amd_bas64_exp+0x190> 0.00 : 159b2: 66 0f 6f c8 movdqa %xmm0,%xmm1 0.00 : 159b6: 66 0f db 0d 22 67 24 pand 0x246722(%rip),%xmm1 # 25c0e0 <_LIB_VERSION+0x1058> 0.00 : 159bd: 00 0.00 : 159be: 66 0f 2e 0d 22 67 24 ucomisd 0x246722(%rip),%xmm1 # 25c0e8 <_LIB_VERSION+0x1060> 0.00 : 159c5: 00 0.00 : 159c6: 0f 82 a4 01 00 00 jb 15b70 <__amd_bas64_exp+0x1e0> 0.00 : 159cc: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 159d0: f2 0f 59 0d 20 67 24 mulsd 0x246720(%rip),%xmm1 # 25c0f8 <_LIB_VERSION+0x1070> 0.00 : 159d7: 00 0.00 : 159d8: 66 0f e6 d1 cvttpd2dq %xmm1,%xmm2 0.00 : 159dc: f3 0f e6 ca cvtdq2pd %xmm2,%xmm1 0.00 : 159e0: 66 0f 7e d1 movd %xmm2,%ecx 0.00 : 159e4: 66 0f 28 d1 movapd %xmm1,%xmm2 0.00 : 159e8: f2 0f 59 0d 18 67 24 mulsd 0x246718(%rip),%xmm1 # 25c108 <_LIB_VERSION+0x1080> 0.00 : 159ef: 00 0.00 : 159f0: 48 c7 c0 3f 00 00 00 mov $0x3f,%rax 0.00 : 159f7: 21 c8 and %ecx,%eax 0.00 : 159f9: c1 f9 06 sar $0x6,%ecx 0.00 : 159fc: f2 0f 59 15 14 67 24 mulsd 0x246714(%rip),%xmm2 # 25c118 <_LIB_VERSION+0x1090> 0.00 : 15a03: 00 0.00 : 15a04: f2 0f 58 c1 addsd %xmm1,%xmm0 0.00 : 15a08: f2 0f 58 d0 addsd %xmm0,%xmm2 ??:0 33.33 : 15a0c: 66 0f 28 1d 6c 60 24 movapd 0x24606c(%rip),%xmm3 # 25ba80 <_LIB_VERSION+0x9f8> 0.00 : 15a13: 00 0.00 : 15a14: f2 0f 59 da mulsd %xmm2,%xmm3 0.00 : 15a18: 66 0f 28 05 80 60 24 movapd 0x246080(%rip),%xmm0 # 25baa0 <_LIB_VERSION+0xa18> 0.00 : 15a1f: 00 0.00 : 15a20: 66 0f 28 ca movapd %xmm2,%xmm1 0.00 : 15a24: f2 0f 59 c2 mulsd %xmm2,%xmm0 0.00 : 15a28: f2 0f 58 1d 60 60 24 addsd 0x246060(%rip),%xmm3 # 25ba90 <_LIB_VERSION+0xa08> 0.00 : 15a2f: 00 33.33 : 15a30: f2 0f 59 ca mulsd %xmm2,%xmm1 0.00 : 15a34: f2 0f 58 05 74 60 24 addsd 0x246074(%rip),%xmm0 # 25bab0 <_LIB_VERSION+0xa28> 0.00 : 15a3b: 00 33.33 : 15a3c: 66 0f 28 e1 movapd %xmm1,%xmm4 0.00 : 15a40: f2 0f 59 e1 mulsd %xmm1,%xmm4 0.00 : 15a44: f2 0f 59 da mulsd %xmm2,%xmm3 0.00 : 15a48: f2 0f 59 c1 mulsd %xmm1,%xmm0 0.00 : 15a4c: f2 0f 58 1d 6c 60 24 addsd 0x24606c(%rip),%xmm3 # 25bac0 <_LIB_VERSION+0xa38> 0.00 : 15a53: 00 0.00 : 15a54: f2 0f 58 c2 addsd %xmm2,%xmm0 0.00 : 15a58: f2 0f 59 dc mulsd %xmm4,%xmm3 0.00 : 15a5c: f2 0f 58 c3 addsd %xmm3,%xmm0 0.00 : 15a60: 81 f9 02 fc ff ff cmp $0xfffffc02,%ecx 0.00 : 15a66: 48 8d 15 63 60 24 00 lea 0x246063(%rip),%rdx # 25bad0 <_LIB_VERSION+0xa48> 0.00 : 15a6d: 4c 8d 1d 5c 64 24 00 lea 0x24645c(%rip),%r11 # 25bed0 <_LIB_VERSION+0xe48> 0.00 : 15a74: 4c 8d 15 55 62 24 00 lea 0x246255(%rip),%r10 # 25bcd0 <_LIB_VERSION+0xc48> 0.00 : 15a7b: f2 0f 59 04 c2 mulsd (%rdx,%rax,8),%xmm0 0.00 : 15a80: f2 41 0f 58 04 c3 addsd (%r11,%rax,8),%xmm0 0.00 : 15a86: f2 41 0f 58 04 c2 addsd (%r10,%rax,8),%xmm0 0.00 : 15a8c: 7e 12 jle 15aa0 <__amd_bas64_exp+0x110> 0.00 : 15a8e: 48 c1 e1 34 shl $0x34,%rcx 0.00 : 15a92: 66 48 0f 6e d1 movq %rcx,%xmm2 0.00 : 15a97: 66 0f d4 c2 paddq %xmm2,%xmm0 0.00 : 15a9b: c3 retq 0.00 : 15a9c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 15aa0: 7c 0a jl 15aac <__amd_bas64_exp+0x11c> 0.00 : 15aa2: 66 0f 2e 05 56 66 24 ucomisd 0x246656(%rip),%xmm0 # 25c100 <_LIB_VERSION+0x1078> 0.00 : 15aa9: 00 0.00 : 15aaa: 73 e2 jae 15a8e <__amd_bas64_exp+0xfe> 0.00 : 15aac: 81 c1 32 04 00 00 add $0x432,%ecx 0.00 : 15ab2: 48 c7 c0 01 00 00 00 mov $0x1,%rax 0.00 : 15ab9: 48 d3 e0 shl %cl,%rax 0.00 : 15abc: 66 48 0f 6e d0 movq %rax,%xmm2 0.00 : 15ac1: f2 0f 59 c2 mulsd %xmm2,%xmm0 0.00 : 15ac5: c3 retq 0.00 : 15ac6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 15acd: 00 00 00 0.00 : 15ad0: 66 48 0f 7e c0 movq %xmm0,%rax 0.00 : 15ad5: 48 ba 00 00 00 00 00 movabs $0x7ff0000000000000,%rdx 0.00 : 15adc: 00 f0 7f 0.00 : 15adf: 48 39 d0 cmp %rdx,%rax 0.00 : 15ae2: 74 0f je 15af3 <__amd_bas64_exp+0x163> 0.00 : 15ae4: 66 48 0f 6e ca movq %rdx,%xmm1 0.00 : 15ae9: bf 03 00 00 00 mov $0x3,%edi 0.00 : 15aee: e8 0d 35 02 00 callq 39000 <_exp_special> 0.00 : 15af3: c3 retq 0.00 : 15af4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 15afb: 00 00 00 00 00 0.00 : 15b00: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 15b04: f2 0f 58 c8 addsd %xmm0,%xmm1 0.00 : 15b08: bf 01 00 00 00 mov $0x1,%edi 0.00 : 15b0d: e8 ee 34 02 00 callq 39000 <_exp_special> 0.00 : 15b12: c3 retq 0.00 : 15b13: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 15b1a: 84 00 00 00 00 00 0.00 : 15b20: 66 0f 2e 05 c8 65 24 ucomisd 0x2465c8(%rip),%xmm0 # 25c0f0 <_LIB_VERSION+0x1068> 0.00 : 15b27: 00 0.00 : 15b28: 76 16 jbe 15b40 <__amd_bas64_exp+0x1b0> 0.00 : 15b2a: 66 0f 28 0d de 65 24 movapd 0x2465de(%rip),%xmm1 # 25c110 <_LIB_VERSION+0x1088> 0.00 : 15b31: 00 0.00 : 15b32: eb 24 jmp 15b58 <__amd_bas64_exp+0x1c8> 0.00 : 15b34: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 15b3b: 00 00 00 00 00 0.00 : 15b40: 66 48 0f 7e c0 movq %xmm0,%rax 0.00 : 15b45: 48 ba 00 00 00 00 00 movabs $0xfff0000000000000,%rdx 0.00 : 15b4c: 00 f0 ff 0.00 : 15b4f: 48 39 d0 cmp %rdx,%rax 0.00 : 15b52: 74 0f je 15b63 <__amd_bas64_exp+0x1d3> 0.00 : 15b54: 66 0f ef c9 pxor %xmm1,%xmm1 0.00 : 15b58: bf 02 00 00 00 mov $0x2,%edi 0.00 : 15b5d: e8 9e 34 02 00 callq 39000 <_exp_special> 0.00 : 15b62: c3 retq 0.00 : 15b63: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 15b67: c3 retq 0.00 : 15b68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 15b6f: 00 0.00 : 15b70: f2 0f 10 05 88 65 24 movsd 0x246588(%rip),%xmm0 # 25c100 <_LIB_VERSION+0x1078> 0.00 : 15b77: 00 0.00 : 15b78: c3 retq 0.00 : 15b79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000672f0 <_IO_fread>: 33.33 : 672f0: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 672f5: 49 89 d4 mov %rdx,%r12 0.00 : 672f8: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 672fd: 4c 0f af e6 imul %rsi,%r12 0.00 : 67301: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 67306: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 6730b: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 67310: 48 83 ec 28 sub $0x28,%rsp 0.00 : 67314: 49 89 fe mov %rdi,%r14 0.00 : 67317: 49 89 f5 mov %rsi,%r13 0.00 : 6731a: 48 89 d5 mov %rdx,%rbp 0.00 : 6731d: 48 89 cb mov %rcx,%rbx 0.00 : 67320: 4d 85 e4 test %r12,%r12 0.00 : 67323: 0f 84 f7 00 00 00 je 67420 <_IO_fread+0x130> 0.00 : 67329: 66 83 39 00 cmpw $0x0,(%rcx) 0.00 : 6732d: 78 56 js 67385 <_IO_fread+0x95> 0.00 : 6732f: 4c 8b 91 88 00 00 00 mov 0x88(%rcx),%r10 0.00 : 67336: 64 4c 8b 04 25 10 00 mov %fs:0x10,%r8 0.00 : 6733d: 00 00 0.00 : 6733f: 4d 3b 42 08 cmp 0x8(%r10),%r8 0.00 : 67343: 74 3b je 67380 <_IO_fread+0x90> 0.00 : 67345: 31 d2 xor %edx,%edx 0.00 : 67347: be 01 00 00 00 mov $0x1,%esi 0.00 : 6734c: 89 d0 mov %edx,%eax 0.00 : 6734e: 83 3d 5f 03 31 00 00 cmpl $0x0,0x31035f(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 67355: 74 0d je 67364 <_IO_fread+0x74> 0.00 : 67357: f0 41 0f b1 32 lock cmpxchg %esi,(%r10) 0.00 : 6735c: 0f 85 11 01 00 00 jne 67473 <_L_lock_51> 0.00 : 67362: eb 0a jmp 6736e <_IO_fread+0x7e> 0.00 : 67364: 41 0f b1 32 cmpxchg %esi,(%r10) 0.00 : 67368: 0f 85 05 01 00 00 jne 67473 <_L_lock_51> 0.00 : 6736e: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 67375: 4c 89 40 08 mov %r8,0x8(%rax) 0.00 : 67379: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : 67380: 41 83 42 04 01 addl $0x1,0x4(%r10) 0.00 : 67385: 4c 89 e2 mov %r12,%rdx 0.00 : 67388: 4c 89 f6 mov %r14,%rsi 0.00 : 6738b: 48 89 df mov %rbx,%rdi 0.00 : 6738e: e8 cd ca 00 00 callq 73e60 <_IO_sgetn> 0.00 : 67393: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 67397: 48 89 c6 mov %rax,%rsi 0.00 : 6739a: 78 4c js 673e8 <_IO_fread+0xf8> 0.00 : 6739c: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 673a3: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 673a6: 83 e8 01 sub $0x1,%eax 0.00 : 673a9: 85 c0 test %eax,%eax 0.00 : 673ab: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 673ae: 75 38 jne 673e8 <_IO_fread+0xf8> 0.00 : 673b0: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 673b7: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 673be: 00 0.00 : 673bf: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 673c6: 83 3d e7 02 31 00 00 cmpl $0x0,0x3102e7(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 673cd: 74 0b je 673da <_IO_fread+0xea> 0.00 : 673cf: f0 ff 0a lock decl (%rdx) 0.00 : 673d2: 0f 85 b6 00 00 00 jne 6748e <_L_unlock_103> 0.00 : 673d8: eb 08 jmp 673e2 <_IO_fread+0xf2> 0.00 : 673da: ff 0a decl (%rdx) 0.00 : 673dc: 0f 85 ac 00 00 00 jne 6748e <_L_unlock_103> 0.00 : 673e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 673e8: 49 39 f4 cmp %rsi,%r12 0.00 : 673eb: 74 0b je 673f8 <_IO_fread+0x108> 0.00 : 673ed: 48 89 f0 mov %rsi,%rax 0.00 : 673f0: 31 d2 xor %edx,%edx 0.00 : 673f2: 49 f7 f5 div %r13 0.00 : 673f5: 48 89 c5 mov %rax,%rbp 66.67 : 673f8: 48 89 e8 mov %rbp,%rax 0.00 : 673fb: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 673ff: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 67404: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 67409: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 6740e: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 67413: 48 83 c4 28 add $0x28,%rsp 0.00 : 67417: c3 retq 0.00 : 67418: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6741f: 00 0.00 : 67420: 31 ed xor %ebp,%ebp 0.00 : 67422: eb d4 jmp 673f8 <_IO_fread+0x108> 0.00 : 67424: 66 83 3b 00 cmpw $0x0,(%rbx) 0.00 : 67428: 49 89 c0 mov %rax,%r8 0.00 : 6742b: 78 3e js 6746b <_IO_fread+0x17b> 0.00 : 6742d: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 67434: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 67437: 83 e8 01 sub $0x1,%eax 0.00 : 6743a: 85 c0 test %eax,%eax 0.00 : 6743c: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 6743f: 75 2a jne 6746b <_IO_fread+0x17b> 0.00 : 67441: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 67448: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6744f: 00 0.00 : 67450: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 67457: 83 3d 56 02 31 00 00 cmpl $0x0,0x310256(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6745e: 74 07 je 67467 <_IO_fread+0x177> 0.00 : 67460: f0 ff 0a lock decl (%rdx) 0.00 : 67463: 75 44 jne 674a9 <_L_unlock_178> 0.00 : 67465: eb 04 jmp 6746b <_IO_fread+0x17b> 0.00 : 67467: ff 0a decl (%rdx) 0.00 : 67469: 75 3e jne 674a9 <_L_unlock_178> 0.00 : 6746b: 4c 89 c7 mov %r8,%rdi 0.00 : 6746e: e8 ed 7a fb ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000006eb60 <_IO_ferror>: 0.00 : 6eb60: 53 push %rbx 0.00 : 6eb61: 8b 07 mov (%rdi),%eax 0.00 : 6eb63: 48 89 fb mov %rdi,%rbx 0.00 : 6eb66: 66 85 c0 test %ax,%ax 0.00 : 6eb69: 0f 88 a1 00 00 00 js 6ec10 <_IO_ferror+0xb0> 66.67 : 6eb6f: 4c 8b 97 88 00 00 00 mov 0x88(%rdi),%r10 0.00 : 6eb76: 64 4c 8b 04 25 10 00 mov %fs:0x10,%r8 0.00 : 6eb7d: 00 00 33.33 : 6eb7f: 4d 3b 42 08 cmp 0x8(%r10),%r8 0.00 : 6eb83: 74 33 je 6ebb8 <_IO_ferror+0x58> 0.00 : 6eb85: 31 d2 xor %edx,%edx 0.00 : 6eb87: be 01 00 00 00 mov $0x1,%esi 0.00 : 6eb8c: 89 d0 mov %edx,%eax 0.00 : 6eb8e: 83 3d 1f 8b 30 00 00 cmpl $0x0,0x308b1f(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6eb95: 74 09 je 6eba0 <_IO_ferror+0x40> 0.00 : 6eb97: f0 41 0f b1 32 lock cmpxchg %esi,(%r10) 0.00 : 6eb9c: 75 7e jne 6ec1c <_L_lock_30> 0.00 : 6eb9e: eb 06 jmp 6eba6 <_IO_ferror+0x46> 0.00 : 6eba0: 41 0f b1 32 cmpxchg %esi,(%r10) 0.00 : 6eba4: 75 76 jne 6ec1c <_L_lock_30> 0.00 : 6eba6: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6ebad: 4c 89 40 08 mov %r8,0x8(%rax) 0.00 : 6ebb1: 4c 8b 93 88 00 00 00 mov 0x88(%rbx),%r10 0.00 : 6ebb8: 41 83 42 04 01 addl $0x1,0x4(%r10) 0.00 : 6ebbd: 8b 03 mov (%rbx),%eax 0.00 : 6ebbf: 89 c6 mov %eax,%esi 0.00 : 6ebc1: c1 ee 05 shr $0x5,%esi 0.00 : 6ebc4: 83 e6 01 and $0x1,%esi 0.00 : 6ebc7: 66 85 c0 test %ax,%ax 0.00 : 6ebca: 78 3e js 6ec0a <_IO_ferror+0xaa> 0.00 : 6ebcc: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6ebd3: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 6ebd6: 83 e8 01 sub $0x1,%eax 0.00 : 6ebd9: 85 c0 test %eax,%eax 0.00 : 6ebdb: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 6ebde: 75 2a jne 6ec0a <_IO_ferror+0xaa> 0.00 : 6ebe0: 48 8b 83 88 00 00 00 mov 0x88(%rbx),%rax 0.00 : 6ebe7: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 6ebee: 00 0.00 : 6ebef: 48 8b 93 88 00 00 00 mov 0x88(%rbx),%rdx 0.00 : 6ebf6: 83 3d b7 8a 30 00 00 cmpl $0x0,0x308ab7(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6ebfd: 74 07 je 6ec06 <_IO_ferror+0xa6> 0.00 : 6ebff: f0 ff 0a lock decl (%rdx) 0.00 : 6ec02: 75 33 jne 6ec37 <_L_unlock_63> 0.00 : 6ec04: eb 04 jmp 6ec0a <_IO_ferror+0xaa> 0.00 : 6ec06: ff 0a decl (%rdx) 0.00 : 6ec08: 75 2d jne 6ec37 <_L_unlock_63> 0.00 : 6ec0a: 89 f0 mov %esi,%eax 0.00 : 6ec0c: 5b pop %rbx 0.00 : 6ec0d: c3 retq 0.00 : 6ec0e: 66 90 xchg %ax,%ax 0.00 : 6ec10: 89 c6 mov %eax,%esi 0.00 : 6ec12: c1 ee 05 shr $0x5,%esi 0.00 : 6ec15: 83 e6 01 and $0x1,%esi 0.00 : 6ec18: 89 f0 mov %esi,%eax 0.00 : 6ec1a: 5b pop %rbx Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000761b0 : 0.00 : 761b0: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 100.00 : 761b5: 49 89 f4 mov %rsi,%r12 0.00 : 761b8: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 761bd: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 761c2: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 761c7: 31 d2 xor %edx,%edx 0.00 : 761c9: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 761ce: 48 83 ec 28 sub $0x28,%rsp 0.00 : 761d2: 49 8b 44 24 58 mov 0x58(%r12),%rax 0.00 : 761d7: 8b 35 73 e5 2f 00 mov 0x2fe573(%rip),%esi # 374750 0.00 : 761dd: 48 8b 68 08 mov 0x8(%rax),%rbp 0.00 : 761e1: 48 83 e5 f8 and $0xfffffffffffffff8,%rbp 0.00 : 761e5: 48 8d 44 2e df lea -0x21(%rsi,%rbp,1),%rax 0.00 : 761ea: 48 29 f8 sub %rdi,%rax 0.00 : 761ed: 48 f7 f6 div %rsi 0.00 : 761f0: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 761f4: 48 0f af de imul %rsi,%rbx 0.00 : 761f8: 48 85 db test %rbx,%rbx 0.00 : 761fb: 7e 1c jle 76219 0.00 : 761fd: 4c 8b 35 7c bb 2f 00 mov 0x2fbb7c(%rip),%r14 # 371d80 <_DYNAMIC+0x220> 0.00 : 76204: 31 ff xor %edi,%edi 0.00 : 76206: 41 ff 16 callq *(%r14) 0.00 : 76209: 49 89 c5 mov %rax,%r13 0.00 : 7620c: 48 89 e8 mov %rbp,%rax 0.00 : 7620f: 49 03 44 24 58 add 0x58(%r12),%rax 0.00 : 76214: 49 39 c5 cmp %rax,%r13 0.00 : 76217: 74 27 je 76240 0.00 : 76219: 31 c0 xor %eax,%eax 0.00 : 7621b: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 7621f: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 76224: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 76229: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 7622e: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 76233: 48 83 c4 28 add $0x28,%rsp 0.00 : 76237: c3 retq 0.00 : 76238: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7623f: 00 0.00 : 76240: 48 f7 db neg %rbx 0.00 : 76243: 48 89 df mov %rbx,%rdi 0.00 : 76246: 41 ff 16 callq *(%r14) 0.00 : 76249: 48 8b 05 20 bc 2f 00 mov 0x2fbc20(%rip),%rax # 371e70 <_DYNAMIC+0x310> 0.00 : 76250: 48 8b 00 mov (%rax),%rax 0.00 : 76253: 48 85 c0 test %rax,%rax 0.00 : 76256: 75 34 jne 7628c 0.00 : 76258: 31 ff xor %edi,%edi 0.00 : 7625a: 41 ff 16 callq *(%r14) 0.00 : 7625d: 48 85 c0 test %rax,%rax 0.00 : 76260: 74 b7 je 76219 0.00 : 76262: 4c 89 e9 mov %r13,%rcx 0.00 : 76265: 48 29 c1 sub %rax,%rcx 0.00 : 76268: 74 af je 76219 0.00 : 7626a: 49 8b 54 24 58 mov 0x58(%r12),%rdx 0.00 : 7626f: 48 89 e8 mov %rbp,%rax 0.00 : 76272: 49 29 8c 24 70 08 00 sub %rcx,0x870(%r12) 0.00 : 76279: 00 0.00 : 7627a: 48 29 c8 sub %rcx,%rax 0.00 : 7627d: 48 83 c8 01 or $0x1,%rax 0.00 : 76281: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 76285: b8 01 00 00 00 mov $0x1,%eax 0.00 : 7628a: eb 8f jmp 7621b 0.00 : 7628c: ff d0 callq *%rax 0.00 : 7628e: eb c8 jmp 76258 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000d1b60 <__poll>: 0.00 : d1b60: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 33.33 : d1b65: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : d1b6a: 89 d3 mov %edx,%ebx 0.00 : d1b6c: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : d1b71: 48 83 ec 18 sub $0x18,%rsp 0.00 : d1b75: 8b 05 39 5b 2a 00 mov 0x2a5b39(%rip),%eax # 3776b4 <__libc_multiple_threads> 0.00 : d1b7b: 49 89 fc mov %rdi,%r12 0.00 : d1b7e: 48 89 f5 mov %rsi,%rbp 0.00 : d1b81: 85 c0 test %eax,%eax 0.00 : d1b83: 75 29 jne d1bae <__poll+0x4e> 0.00 : d1b85: 48 63 d2 movslq %edx,%rdx 0.00 : d1b88: b8 07 00 00 00 mov $0x7,%eax 0.00 : d1b8d: 0f 05 syscall 0.00 : d1b8f: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : d1b95: 89 c3 mov %eax,%ebx 0.00 : d1b97: 77 41 ja d1bda <__poll+0x7a> 0.00 : d1b99: 89 d8 mov %ebx,%eax 0.00 : d1b9b: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 66.67 : d1ba0: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : d1ba4: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : d1ba9: 48 83 c4 18 add $0x18,%rsp 0.00 : d1bad: c3 retq 0.00 : d1bae: e8 7d 66 01 00 callq e8230 <__libc_enable_asynccancel> 0.00 : d1bb3: 48 63 d3 movslq %ebx,%rdx 0.00 : d1bb6: 41 89 c0 mov %eax,%r8d 0.00 : d1bb9: 48 89 ee mov %rbp,%rsi 0.00 : d1bbc: 4c 89 e7 mov %r12,%rdi 0.00 : d1bbf: b8 07 00 00 00 mov $0x7,%eax 0.00 : d1bc4: 0f 05 syscall 0.00 : d1bc6: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : d1bcc: 89 c3 mov %eax,%ebx 0.00 : d1bce: 77 28 ja d1bf8 <__poll+0x98> 0.00 : d1bd0: 44 89 c7 mov %r8d,%edi 0.00 : d1bd3: e8 b8 66 01 00 callq e8290 <__libc_disable_asynccancel> 0.00 : d1bd8: eb bf jmp d1b99 <__poll+0x39> 0.00 : d1bda: 89 c1 mov %eax,%ecx 0.00 : d1bdc: 48 8b 15 55 02 2a 00 mov 0x2a0255(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : d1be3: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : d1bea: 00 00 0.00 : d1bec: f7 d9 neg %ecx 0.00 : d1bee: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : d1bf3: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : d1bf6: eb a1 jmp d1b99 <__poll+0x39> 0.00 : d1bf8: 89 c1 mov %eax,%ecx 0.00 : d1bfa: 48 8b 15 37 02 2a 00 mov 0x2a0237(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : d1c01: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : d1c08: 00 00 0.00 : d1c0a: f7 d9 neg %ecx 0.00 : d1c0c: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : d1c11: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : d1c14: eb ba jmp d1bd0 <__poll+0x70> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000d3310 <__sbrk>: 33.33 : d3310: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp) 33.33 : d3315: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp) 0.00 : d331a: 48 83 ec 18 sub $0x18,%rsp 0.00 : d331e: 48 8b 1d 63 eb 29 00 mov 0x29eb63(%rip),%rbx # 371e88 <_DYNAMIC+0x328> 0.00 : d3325: 48 89 fd mov %rdi,%rbp 0.00 : d3328: 48 83 3b 00 cmpq $0x0,(%rbx) 0.00 : d332c: 74 0a je d3338 <__sbrk+0x28> 0.00 : d332e: 8b 05 2c ed 29 00 mov 0x29ed2c(%rip),%eax # 372060 <__libc_multiple_libcs> 0.00 : d3334: 85 c0 test %eax,%eax 0.00 : d3336: 74 0b je d3343 <__sbrk+0x33> 0.00 : d3338: 31 ff xor %edi,%edi 0.00 : d333a: e8 61 ff ff ff callq d32a0 0.00 : d333f: 85 c0 test %eax,%eax 0.00 : d3341: 78 25 js d3368 <__sbrk+0x58> 0.00 : d3343: 48 83 fd 00 cmp $0x0,%rbp 0.00 : d3347: 74 2f je d3378 <__sbrk+0x68> 0.00 : d3349: 48 8b 1b mov (%rbx),%rbx 0.00 : d334c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : d3350: 7e 3e jle d3390 <__sbrk+0x80> 0.00 : d3352: 48 89 df mov %rbx,%rdi 0.00 : d3355: 48 01 ef add %rbp,%rdi 0.00 : d3358: 72 0e jb d3368 <__sbrk+0x58> 0.00 : d335a: e8 41 ff ff ff callq d32a0 0.00 : d335f: 85 c0 test %eax,%eax 0.00 : d3361: 79 18 jns d337b <__sbrk+0x6b> 0.00 : d3363: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : d3368: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 0.00 : d336f: 90 nop 0.00 : d3370: eb 09 jmp d337b <__sbrk+0x6b> 0.00 : d3372: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 33.33 : d3378: 48 8b 1b mov (%rbx),%rbx 0.00 : d337b: 48 89 d8 mov %rbx,%rax 0.00 : d337e: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : d3383: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : d3388: 48 83 c4 18 add $0x18,%rsp 0.00 : d338c: c3 retq 0.00 : d338d: 0f 1f 00 nopl (%rax) 0.00 : d3390: 48 89 e8 mov %rbp,%rax 0.00 : d3393: 48 f7 d8 neg %rax 0.00 : d3396: 48 39 c3 cmp %rax,%rbx 0.00 : d3399: 72 cd jb d3368 <__sbrk+0x58> 0.00 : d339b: 48 8d 3c 2b lea (%rbx,%rbp,1),%rdi 0.00 : d339f: eb b9 jmp d335a <__sbrk+0x4a> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_nat.ko ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_nat.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000007f0 : 66.67 : 7f0: 48 83 ec 48 sub $0x48,%rsp 0.00 : 824: 83 fe sbb %eax,%eax 0.00 : 826: 02 0f 97 c0 and $0xfffffffffffffff0,%rax 0.00 : 82a: 83 fa 04 48 add $0x20,%rax 0.00 : 82e: 89 6c 24 mov %rax,%rdx 0.00 : 831: 38 4c 89 64 xor $0x30,%rdx 0.00 : 835: 24 40 49 cmp $0x1,%esi 0.00 : 838: 89 cc 0f 95 cmove %rdx,%rax 0.00 : 83c: c1 31 ed 83 test %rax,0x78(%rdi) 0.00 : 840: fa 01 0f b6 f0 mov $0x1,%edx 0.00 : 845: 40 0f jne 860 0.00 : 847: 95 c5 mov %edx,%eax 0.00 : 849: 48 89 5c 24 30 mov 0x30(%rsp),%rbx 0.00 : 84e: 21 cd 83 fd 01 mov 0x38(%rsp),%rbp 33.33 : 853: 48 19 c0 48 83 mov 0x40(%rsp),%r12 0.00 : 858: e0 f0 48 83 add $0x48,%rsp 0.00 : 85c: c0 retq 0.00 : 85d: 20 48 89 nopl (%rax) 0.00 : 860: c2 48 83 cmp $0x1,%esi 0.00 : 863: f2 30 83 sbb %rax,%rax 0.00 : 866: fe 01 48 and $0x38,%eax 0.00 : 869: 0f 44 c2 48 85 lea 0x18(%rdi,%rax,1),%rsi 0.00 : 86e: 47 78 ba mov %rsp,%rdi 0.00 : 871: 01 00 00 00 75 callq 876 0.00 : 876: 19 89 d0 48 8b movzbl 0x26(%rsp),%edi 0.00 : 87b: 5c 24 xor %edx,%edx 0.00 : 87d: 30 48 8b mov %ebp,%r8d 0.00 : 880: 6c 24 38 mov %rsp,%rcx 0.00 : 883: 4c 8b 64 mov %r12,%rsi 0.00 : 886: 24 40 48 83 c4 callq 3f0 0.00 : 88b: 48 c3 xor %edx,%edx 0.00 : 88d: 0f 1f test %al,%al 0.00 : 88f: 00 83 fe setne %dl 0.00 : 892: 01 48 jmp 847 : 894: 19 c0 83 e0 38 48 8d data32 data32 nopw %cs:0x0(%rax,%rax,1) : 89b: 74 07 18 48 89 : 8a0: e7 e8 00 00 sub $0x8,%rsp : 8a4: 00 00 0f testb $0x1,(%rsi) : 8a7: b6 7c jne 8d0 : 8a9: 24 26 31 d2 movzbl 0x26(%rdi),%eax : 8ad: 41 89 e8 testb $0x2,(%rsi) : 8b0: 48 89 e1 4c 89 e6 e8 mov 0x0(,%rax,8),%rax : 8b7: 65 : 8b8: fb ff jne 8f0 : 8ba: ff 31 d2 84 c0 mov $0x1,%edx : 8bf: 0f 95 mov %edx,%eax : 8c1: c2 eb b3 66 add $0x8,%rsp Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000000 : 100.00 : 0: 0f b7 47 24 movzwl 0x24(%rdi),%eax : 34: 0f b6 57 26 add 0x4(%rcx,%rax,1),%ecx : 38: 0f b7 f6 49 add $0xc,%r8 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 40.00 ??:0 20.00 ??:0 20.00 ??:0 20.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000008cd0 : 100.00 : 8cd0: 48 83 ec 38 sub $0x38,%rsp 0.00 : 8d04: 48 89 5c 24 10 48 mov 0xe0(%rdi),%edx 0.00 : 8d0a: 89 6c 24 test %rdx,%rdx 0.00 : 8d0d: 18 48 je 8d70 0.00 : 8d0f: 89 fb 4c 89 movzbl 0x13(%rdx),%eax 0.00 : 8d13: 64 24 test %al,%al 0.00 : 8d15: 20 4c je 8d70 0.00 : 8d17: 89 6c 24 movzbl %al,%eax 0.00 : 8d1a: 28 4c 89 mov %rdx,%rbp 0.00 : 8d1d: 74 24 30 add %rax,%rbp 0.00 : 8d20: 48 8b je 8d70 0.00 : 8d22: 87 e8 00 xor %r12d,%r12d 0.00 : 8d25: 00 00 48 8b xchg %r12,0x0(%rbp) 0.00 : 8d29: 88 38 07 00 mov 0x78(%rdi),%rax 0.00 : 8d2d: 00 48 test $0x8,%al 0.00 : 8d2f: 85 c9 je 8d70 0.00 : 8d31: 74 6d 48 8b mov 0x78(%rdi),%rax 0.00 : 8d35: 97 e0 00 test $0x2,%ah 0.00 : 8d38: 00 00 jne 8d70 0.00 : 8d3a: 48 85 d2 test %r12,%r12 0.00 : 8d3d: 74 61 je 8d70 0.00 : 8d3f: 0f b6 42 13 mov %rdi,(%rsp) 0.00 : 8d43: 84 c0 74 59 0f b6 c0 movl $0x0,0x8(%rsp) 0.00 : 8d4a: 48 0.00 : 8d4b: 89 d5 48 mov %r12,%rdx 0.00 : 8d4e: 01 c5 74 4e 45 31 e4 movl $0x0,0xc(%rsp) 0.00 : 8d55: 4c 0.00 : 8d56: 87 65 00 48 mov 0x8(%rbp),%r13 0.00 : 8d5a: 8b 47 78 a8 movzwl 0x10(%rbp),%eax 0.00 : 8d5e: 08 74 3f or %r13,%rdx 0.00 : 8d61: 48 8b 47 test %rax,%rdx 0.00 : 8d64: 78 f6 jne 8d90 0.00 : 8d66: c4 02 75 36 4d 85 e4 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8d6d: 74 31 48 0.00 : 8d70: 89 3c 24 c7 44 mov 0x10(%rsp),%rbx 0.00 : 8d75: 24 08 00 00 00 mov 0x18(%rsp),%rbp 0.00 : 8d7a: 00 4c 89 e2 c7 mov 0x20(%rsp),%r12 0.00 : 8d7f: 44 24 0c 00 00 mov 0x28(%rsp),%r13 0.00 : 8d84: 00 00 4c 8b 6d mov 0x30(%rsp),%r14 0.00 : 8d89: 08 0f b7 45 add $0x38,%rsp 0.00 : 8d8d: 10 retq 0.00 : 8d8e: 4c 09 xchg %ax,%ax 0.00 : 8d90: ea 48 85 mov %r12d,%edi 0.00 : 8d93: c2 75 2a mov %rsp,%rsi 0.00 : 8d96: 66 2e 0f or %r13d,%edi 0.00 : 8d99: 1f 84 callq *(%rcx) 0.00 : 8d9b: 00 00 test %eax,%eax 0.00 : 8d9d: 00 00 00 mov %eax,%r14d 0.00 : 8da0: 48 8b js 8da7 0.00 : 8da2: 5c 24 10 test %r13,%r13 0.00 : 8da5: 48 8b je 8d70 0.00 : 8da7: 6c 24 18 4c add $0x4,%rbx 0.00 : 8dab: 8b 64 24 mov %rbx,%rdi 0.00 : 8dae: 20 4c 8b 6c 24 callq 8db3 0.00 : 8db3: 28 4c 8b test %r14d,%r14d 0.00 : 8db6: 74 24 js 8dc9 0.00 : 8db8: 30 48 83 not %r13 0.00 : 8dbb: c4 38 c3 66 and %r13,0x8(%rbp) 0.00 : 8dbf: 90 44 89 mov %rbx,%rdi 0.00 : 8dc2: e7 48 89 e6 44 callq 8dc7 0.00 : 8dc7: 09 ef jmp 8d70 0.00 : 8dc9: ff 11 85 c0 or %r12,0x8(%rbp) 0.00 : 8dcd: 41 89 jmp 8dbf : 8dcf: c6 nop : 8dd0: Address 0x0000000000008dd0 is out of bounds. : Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 66.67 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000010070 : : : void ixgbe_tx_ctxtdesc(struct ixgbe_ring *tx_ring, u32 vlan_macip_lens, : u32 fcoe_sof_eof, u32 type_tucmd, u32 mss_l4len_idx) : { : struct ixgbe_adv_tx_context_desc *context_desc; : u16 i = tx_ring->next_to_use; 33.33 : 10070: 0f b7 47 50 movzwl 0x50(%rdi),%eax : : context_desc = IXGBE_TX_CTXTDESC(tx_ring, i); : : i++; : tx_ring->next_to_use = (i < tx_ring->count) ? i : 0; 0.00 : 10074: 41 ba 00 00 00 00 mov $0x0,%r10d : u32 fcoe_sof_eof, u32 type_tucmd, u32 mss_l4len_idx) : { : struct ixgbe_adv_tx_context_desc *context_desc; : u16 i = tx_ring->next_to_use; : : context_desc = IXGBE_TX_CTXTDESC(tx_ring, i); 0.00 : 1007a: 44 0f b7 c8 movzwl %ax,%r9d : : i++; 0.00 : 1007e: 83 c0 01 add $0x1,%eax : u32 fcoe_sof_eof, u32 type_tucmd, u32 mss_l4len_idx) : { : struct ixgbe_adv_tx_context_desc *context_desc; : u16 i = tx_ring->next_to_use; : : context_desc = IXGBE_TX_CTXTDESC(tx_ring, i); 66.67 : 10081: 49 c1 e1 04 shl $0x4,%r9 0.00 : 10085: 4c 03 4f 20 add 0x20(%rdi),%r9 : : i++; : tx_ring->next_to_use = (i < tx_ring->count) ? i : 0; 0.00 : 10089: 66 3b 47 4c cmp 0x4c(%rdi),%ax 0.00 : 1008d: 41 0f 43 c2 cmovae %r10d,%eax : /* set bits to identify this as an advanced context descriptor */ : type_tucmd |= IXGBE_TXD_CMD_DEXT | IXGBE_ADVTXD_DTYP_CTXT; : : context_desc->vlan_macip_lens = cpu_to_le32(vlan_macip_lens); : context_desc->seqnum_seed = cpu_to_le32(fcoe_sof_eof); : context_desc->type_tucmd_mlhl = cpu_to_le32(type_tucmd); 0.00 : 10091: 81 c9 00 00 20 20 or $0x20200000,%ecx : u16 i = tx_ring->next_to_use; : : context_desc = IXGBE_TX_CTXTDESC(tx_ring, i); : : i++; : tx_ring->next_to_use = (i < tx_ring->count) ? i : 0; 0.00 : 10097: 66 89 47 50 mov %ax,0x50(%rdi) : : /* set bits to identify this as an advanced context descriptor */ : type_tucmd |= IXGBE_TXD_CMD_DEXT | IXGBE_ADVTXD_DTYP_CTXT; : : context_desc->vlan_macip_lens = cpu_to_le32(vlan_macip_lens); 0.00 : 1009b: 41 89 31 mov %esi,(%r9) : context_desc->seqnum_seed = cpu_to_le32(fcoe_sof_eof); 0.00 : 1009e: 41 89 51 04 mov %edx,0x4(%r9) : context_desc->type_tucmd_mlhl = cpu_to_le32(type_tucmd); 0.00 : 100a2: 41 89 49 08 mov %ecx,0x8(%r9) : context_desc->mss_l4len_idx = cpu_to_le32(mss_l4len_idx); 0.00 : 100a6: 45 89 41 0c mov %r8d,0xc(%r9) Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000700 : 0.00 : 700: 53 push %rbx 0.00 : 731: 48 89 fb 48 83 mov $0x2b8,%edi 0.00 : 736: ec 10 66 xor %r10d,%r10d 0.00 : 739: 83 bf f8 xor %r9d,%r9d 0.00 : 73c: 03 00 test %edi,%edi 0.00 : 73e: 00 00 jle 78c 0.00 : 740: 48 8b 87 mov %rbx,%r8 0.00 : 743: a0 04 xor %edi,%edi 0.00 : 745: 00 00 74 xor %r10d,%r10d 0.00 : 748: 09 83 b8 xor %r9d,%r9d 0.00 : 74b: 88 00 00 00 01 mov $0xc030,%ecx 0.00 : 750: 74 0e 48 mov %rcx,%rax 0.00 : 753: 83 c4 10 5b c3 0f 1f add 0x570(%rbx),%rax 0.00 : 75a: 84 00 mov (%rax),%eax 0.00 : 75c: 00 00 test %eax,%eax 0.00 : 75e: 00 00 8b bf b8 02 00 mov 0x2c0(%r8),%rdx 0.00 : 765: 00 45 je 771 0.00 : 767: 31 d2 mov %eax,%eax 0.00 : 769: 45 31 c9 85 add %rax,0x68(%rdx) 0.00 : 76d: ff 7e 4c 49 add %rax,0x70(%rsi) 0.00 : 771: 89 d8 31 ff add 0x60(%rdx),%r10 0.00 : 775: 45 31 d2 45 add 0x58(%rdx),%r9 0.00 : 779: 31 c9 b9 add $0x1,%edi 0.00 : 77c: 30 c0 00 00 add $0x40,%rcx 0.00 : 780: 48 89 c8 48 add $0x8,%r8 0.00 : 784: 03 83 70 05 00 00 cmp %edi,0x2b8(%rbx) 0.00 : 78a: 8b 00 jg 750 0.00 : 78c: 85 c0 49 8b mov %r10,0x10(%rsi) 0.00 : 790: 90 c0 02 mov %r9,(%rsi) 0.00 : 793: 00 00 xor %edi,%edi 0.00 : 795: 74 0a 89 c0 48 01 42 mov 0x234(%rbx),%r8d 0.00 : 79c: 68 48 xor %ecx,%ecx 0.00 : 79e: 01 46 70 test %r8d,%r8d 0.00 : 7a1: 4c 03 jle 7c9 0.00 : 7a3: 52 60 xor %edi,%edi 0.00 : 7a5: 4c 03 xor %ecx,%ecx 0.00 : 7a7: 4a 58 xor %edx,%edx 0.00 : 7a9: 83 c7 01 48 83 c1 40 nopl 0x0(%rax) 0.00 : 7b0: 49 83 c0 08 39 bb b8 mov 0x238(%rbx,%rdx,8),%rax 0.00 : 7b7: 02 0.00 : 7b8: 00 00 7f c4 add $0x1,%rdx 0.00 : 7bc: 4c 89 56 10 add 0x58(%rax),%rdi 0.00 : 7c0: 4c 89 0e 31 add 0x50(%rax),%rcx 0.00 : 7c4: ff 44 8b cmp %edx,%r8d 0.00 : 7c7: 83 34 jg 7b0 0.00 : 7c9: 02 00 00 31 mov %rdi,0x18(%rsi) 0.00 : 7cd: c9 45 85 c0 mov %rcx,0x8(%rsi) 0.00 : 7d1: 7e 26 31 ff 31 c9 31 mov 0x570(%rbx),%rax 0.00 : 7d8: d2 0f 1f 80 00 00 00 mov 0x9c8(%rbx),%rdx 0.00 : 7df: 00 48 8b 84 d3 38 add $0x4000,%rax 0.00 : 7e5: 02 00 mov (%rax),%eax 0.00 : 7e7: 00 48 mov %eax,%eax 0.00 : 7e9: 83 c2 01 add %rdx,%rax 0.00 : 7ec: 48 03 78 58 48 03 48 mov 0xa98(%rbx),%rdx 0.00 : 7f3: 50 41 39 d0 7f e7 48 mov %rax,0x9c8(%rbx) 0.00 : 7fa: 89 7e 18 48 89 4e 08 mov 0x570(%rbx),%rax 0.00 : 801: 48 8b 83 70 05 00 add $0x4074,%rax 0.00 : 807: 00 48 mov (%rax),%eax 0.00 : 809: 8b 93 mov %eax,%eax 0.00 : 80b: c8 09 00 add %rdx,%rax 0.00 : 80e: 00 48 05 00 40 00 00 mov 0xab8(%rbx),%rdx 0.00 : 815: 8b 00 89 c0 48 01 d0 mov %rax,0xa98(%rbx) 0.00 : 81c: 48 8b 93 98 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 823: 48 89 83 c8 09 00 add $0x4088,%rax 0.00 : 829: 00 48 mov (%rax),%eax 0.00 : 82b: 8b 83 mov %eax,%eax 0.00 : 82d: 70 05 00 add %rdx,%rax 0.00 : 830: 00 48 05 74 40 00 00 mov %rax,0xab8(%rbx) 0.00 : 837: 8b 00 89 c0 48 01 d0 mov 0x570(%rbx),%rax 0.00 : 83e: 48 8b 93 b8 0a 00 add $0x408c,%rax 0.00 : 844: 00 48 mov (%rax),%eax 0.00 : 846: 89 83 98 0a 00 00 48 mov 0x570(%rbx),%rax 0.00 : 84d: 8b 83 70 05 00 00 48 mov 0xaa0(%rbx),%rdx 0.00 : 854: 05 88 40 00 00 8b add $0x4078,%rax 0.00 : 85a: 00 89 mov (%rax),%eax 0.00 : 85c: c0 48 mov %eax,%eax 0.00 : 85e: 01 d0 48 add %rdx,%rax 0.00 : 861: 89 83 b8 0a 00 00 48 mov 0xaa8(%rbx),%rdx 0.00 : 868: 8b 83 70 05 00 00 48 mov %rax,0xaa0(%rbx) 0.00 : 86f: 05 8c 40 00 00 8b 00 mov 0x570(%rbx),%rax 0.00 : 876: 48 8b 83 70 05 00 add $0x407c,%rax 0.00 : 87c: 00 48 mov (%rax),%eax 0.00 : 87e: 8b 93 mov %eax,%eax 0.00 : 880: a0 0a 00 add %rdx,%rax 0.00 : 883: 00 48 05 78 40 00 00 mov 0xae0(%rbx),%rdx 0.00 : 88a: 8b 00 89 c0 48 01 d0 mov %rax,0xaa8(%rbx) 0.00 : 891: 48 8b 93 a8 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 898: 48 89 83 a0 0a 00 add $0x40ac,%rax 0.00 : 89e: 00 48 mov (%rax),%eax 0.00 : 8a0: 8b 83 mov %eax,%eax 0.00 : 8a2: 70 05 00 add %rdx,%rax 0.00 : 8a5: 00 48 05 7c 40 00 00 mov 0xa68(%rbx),%rdx 0.00 : 8ac: 8b 00 89 c0 48 01 d0 mov %rax,0xae0(%rbx) 0.00 : 8b3: 48 8b 93 e0 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 8ba: 48 89 83 a8 0a 00 add $0x405c,%rax 0.00 : 8c0: 00 48 mov (%rax),%eax 0.00 : 8c2: 8b 83 mov %eax,%eax 0.00 : 8c4: 70 05 00 add %rdx,%rax 0.00 : 8c7: 00 48 05 ac 40 00 00 mov 0xa70(%rbx),%rdx 0.00 : 8ce: 8b 00 89 c0 48 01 d0 mov %rax,0xa68(%rbx) 0.00 : 8d5: 48 8b 93 68 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 8dc: 48 89 83 e0 0a 00 add $0x4060,%rax 0.00 : 8e2: 00 48 mov (%rax),%eax 0.00 : 8e4: 8b 83 mov %eax,%eax 0.00 : 8e6: 70 05 00 add %rdx,%rax 0.00 : 8e9: 00 48 05 5c 40 00 00 mov 0xa78(%rbx),%rdx 0.00 : 8f0: 8b 00 89 c0 48 01 d0 mov %rax,0xa70(%rbx) 0.00 : 8f7: 48 8b 93 70 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 8fe: 48 89 83 68 0a 00 add $0x4064,%rax 0.00 : 904: 00 48 mov (%rax),%eax 0.00 : 906: 8b 83 mov %eax,%eax 0.00 : 908: 70 05 00 add %rdx,%rax 0.00 : 90b: 00 48 05 60 40 00 00 mov 0xa80(%rbx),%rdx 0.00 : 912: 8b 00 89 c0 48 01 d0 mov %rax,0xa78(%rbx) 0.00 : 919: 48 8b 93 78 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 920: 48 89 83 70 0a 00 add $0x4068,%rax 0.00 : 926: 00 48 mov (%rax),%eax 0.00 : 928: 8b 83 mov %eax,%eax 0.00 : 92a: 70 05 00 add %rdx,%rax 0.00 : 92d: 00 48 05 64 40 00 00 mov 0xa88(%rbx),%rdx 0.00 : 934: 8b 00 89 c0 48 01 d0 mov %rax,0xa80(%rbx) 0.00 : 93b: 48 8b 93 80 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 942: 48 89 83 78 0a 00 add $0x406c,%rax 0.00 : 948: 00 48 mov (%rax),%eax 0.00 : 94a: 8b 83 mov %eax,%eax 0.00 : 94c: 70 05 00 add %rdx,%rax 0.00 : 94f: 00 48 05 68 40 00 00 mov 0xa90(%rbx),%rdx 0.00 : 956: 8b 00 89 c0 48 01 d0 mov %rax,0xa88(%rbx) 0.00 : 95d: 48 8b 93 88 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 964: 48 89 83 80 0a 00 add $0x4070,%rax 0.00 : 96a: 00 48 mov (%rax),%eax 33.33 : 96c: 8b 83 mov %eax,%eax 0.00 : 96e: 70 05 00 add %rdx,%rax 0.00 : 971: 00 48 05 6c 40 00 00 mov 0x9d8(%rbx),%rdx 0.00 : 978: 8b 00 89 c0 48 01 d0 mov %rax,0xa90(%rbx) 0.00 : 97f: 48 8b 93 90 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 986: 48 89 83 88 0a 00 add $0x4008,%rax 0.00 : 98c: 00 48 mov (%rax),%eax 0.00 : 98e: 8b 83 mov %eax,%eax 0.00 : 990: 70 05 00 add %rdx,%rax 0.00 : 993: 00 48 05 70 40 00 00 mov 0xa28(%rbx),%rdx 0.00 : 99a: 8b 00 89 c0 48 01 d0 mov %rax,0x9d8(%rbx) 0.00 : 9a1: 48 8b 93 d8 09 00 00 mov 0x570(%rbx),%rax 0.00 : 9a8: 48 89 83 90 0a 00 add $0x4038,%rax 0.00 : 9ae: 00 48 mov (%rax),%eax 0.00 : 9b0: 8b 83 mov %eax,%eax 0.00 : 9b2: 70 05 00 add %rdx,%rax 0.00 : 9b5: 00 48 05 08 40 00 00 mov %rax,0xa28(%rbx) 0.00 : 9bc: 8b 00 89 c0 48 01 d0 mov 0x570(%rbx),%rax 0.00 : 9c3: 48 8b 93 28 0a 00 add $0x4010,%rax 0.00 : 9c9: 00 48 mov (%rax),%eax 0.00 : 9cb: 89 83 mov %eax,%eax 0.00 : 9cd: d8 09 00 00 48 8b 83 add %rax,0x9e8(%rbx) 0.00 : 9d4: 70 05 00 00 add %rax,0x70(%rsi) 0.00 : 9d8: 48 05 38 40 00 00 8b mov 0x570(%rbx),%rax 0.00 : 9df: 00 89 c0 48 01 d0 48 mov 0x9f0(%rbx),%rdx 0.00 : 9e6: 89 83 28 0a 00 00 add $0x4014,%rax 0.00 : 9ec: 48 8b mov (%rax),%eax 0.00 : 9ee: 83 70 mov %eax,%eax 0.00 : 9f0: 05 00 00 add %rdx,%rax 0.00 : 9f3: 48 05 10 40 00 00 8b mov 0x9f8(%rbx),%rdx 0.00 : 9fa: 00 89 c0 48 01 83 e8 mov %rax,0x9f0(%rbx) 0.00 : a01: 09 00 00 48 01 46 70 mov 0x570(%rbx),%rax 0.00 : a08: 48 8b 83 70 05 00 add $0x4018,%rax 0.00 : a0e: 00 48 mov (%rax),%eax 0.00 : a10: 8b 93 mov %eax,%eax 0.00 : a12: f0 09 00 add %rdx,%rax 0.00 : a15: 00 48 05 14 40 00 00 mov 0xa00(%rbx),%rdx 0.00 : a1c: 8b 00 89 c0 48 01 d0 mov %rax,0x9f8(%rbx) 0.00 : a23: 48 8b 93 f8 09 00 00 mov 0x570(%rbx),%rax 0.00 : a2a: 48 89 83 f0 09 00 add $0x401c,%rax 0.00 : a30: 00 48 mov (%rax),%eax 0.00 : a32: 8b 83 mov %eax,%eax 0.00 : a34: 70 05 00 add %rdx,%rax 0.00 : a37: 00 48 05 18 40 00 00 mov 0xa08(%rbx),%rdx 0.00 : a3e: 8b 00 89 c0 48 01 d0 mov %rax,0xa00(%rbx) 0.00 : a45: 48 8b 93 00 0a 00 00 mov 0x570(%rbx),%rax 0.00 : a4c: 48 89 83 f8 09 00 add $0x4020,%rax 0.00 : a52: 00 48 mov (%rax),%eax 0.00 : a54: 8b 83 mov %eax,%eax 0.00 : a56: 70 05 00 add %rdx,%rax 0.00 : a59: 00 48 05 1c 40 00 00 mov 0xa18(%rbx),%rdx 0.00 : a60: 8b 00 89 c0 48 01 d0 mov %rax,0xa08(%rbx) 0.00 : a67: 48 8b 93 08 0a 00 00 mov 0x570(%rbx),%rax 0.00 : a6e: 48 89 83 00 0a 00 add $0x4030,%rax 0.00 : a74: 00 48 mov (%rax),%eax 0.00 : a76: 8b 83 mov %eax,%eax 0.00 : a78: 70 05 00 add %rdx,%rax 0.00 : a7b: 00 48 05 20 40 00 00 mov 0xa38(%rbx),%rdx 0.00 : a82: 8b 00 89 c0 48 01 d0 mov %rax,0xa18(%rbx) 0.00 : a89: 48 8b 93 18 0a 00 00 mov 0x570(%rbx),%rax 0.00 : a90: 48 89 83 08 0a 00 add $0x4040,%rax 0.00 : a96: 00 48 mov (%rax),%eax 0.00 : a98: 8b 83 mov %eax,%eax 0.00 : a9a: 70 05 00 add %rdx,%rax 0.00 : a9d: 00 48 05 30 40 00 00 mov 0xa40(%rbx),%rdx 0.00 : aa4: 8b 00 89 c0 48 01 d0 mov %rax,0xa38(%rbx) 0.00 : aab: 48 8b 93 38 0a 00 00 mov 0x570(%rbx),%rax 0.00 : ab2: 48 89 83 18 0a 00 add $0x4048,%rax 0.00 : ab8: 00 48 mov (%rax),%eax 0.00 : aba: 8b 83 mov %eax,%eax 0.00 : abc: 70 05 00 add %rdx,%rax 0.00 : abf: 00 48 05 40 40 00 00 mov 0xa48(%rbx),%rdx 0.00 : ac6: 8b 00 89 c0 48 01 d0 mov %rax,0xa40(%rbx) 0.00 : acd: 48 8b 93 40 0a 00 00 mov 0x570(%rbx),%rax 0.00 : ad4: 48 89 83 38 0a 00 add $0x404c,%rax 0.00 : ada: 00 48 mov (%rax),%eax 0.00 : adc: 8b 83 mov %eax,%eax 0.00 : ade: 70 05 00 add %rdx,%rax 0.00 : ae1: 00 48 05 48 40 00 00 mov 0xa50(%rbx),%rdx 0.00 : ae8: 8b 00 89 c0 48 01 d0 mov %rax,0xa48(%rbx) 0.00 : aef: 48 8b 93 48 0a 00 00 mov 0x570(%rbx),%rax 0.00 : af6: 48 89 83 40 0a 00 add $0x4050,%rax 0.00 : afc: 00 48 mov (%rax),%eax 0.00 : afe: 8b 83 mov %eax,%eax 0.00 : b00: 70 05 00 add %rdx,%rax 0.00 : b03: 00 48 05 4c 40 00 00 mov 0xa58(%rbx),%rdx 0.00 : b0a: 8b 00 89 c0 48 01 d0 mov %rax,0xa50(%rbx) 0.00 : b11: 48 8b 93 50 0a 00 00 mov 0x570(%rbx),%rax 0.00 : b18: 48 89 83 48 0a 00 add $0x4054,%rax 0.00 : b1e: 00 48 mov (%rax),%eax 0.00 : b20: 8b 83 mov %eax,%eax 0.00 : b22: 70 05 00 add %rdx,%rax 0.00 : b25: 00 48 05 50 40 00 00 mov 0xa60(%rbx),%rdx 0.00 : b2c: 8b 00 89 c0 48 01 d0 mov %rax,0xa58(%rbx) 0.00 : b33: 48 8b 93 58 0a 00 00 mov 0x570(%rbx),%rax 0.00 : b3a: 48 89 83 50 0a 00 add $0x4058,%rax 0.00 : b40: 00 48 mov (%rax),%eax 0.00 : b42: 8b 83 mov %eax,%eax 0.00 : b44: 70 05 00 add %rdx,%rax 0.00 : b47: 00 48 05 54 40 00 00 mov 0xab0(%rbx),%rdx 0.00 : b4e: 8b 00 89 c0 48 01 d0 mov %rax,0xa60(%rbx) 0.00 : b55: 48 8b 93 60 0a 00 00 mov 0x570(%rbx),%rax 0.00 : b5c: 48 89 83 58 0a 00 add $0x4080,%rax 0.00 : b62: 00 48 mov (%rax),%eax 0.00 : b64: 8b 83 mov %eax,%eax 0.00 : b66: 70 05 00 add %rdx,%rax 0.00 : b69: 00 48 05 58 40 00 00 mov 0xac0(%rbx),%rdx 0.00 : b70: 8b 00 89 c0 48 01 d0 mov %rax,0xab0(%rbx) 0.00 : b77: 48 8b 93 b0 0a 00 00 mov 0x570(%rbx),%rax 0.00 : b7e: 48 89 83 60 0a 00 add $0x4090,%rax 0.00 : b84: 00 48 mov (%rax),%eax 0.00 : b86: 8b 83 mov %eax,%eax 0.00 : b88: 70 05 00 add %rdx,%rax 0.00 : b8b: 00 48 05 80 40 00 00 mov %rax,0xac0(%rbx) 0.00 : b92: 8b 00 89 c0 48 01 d0 mov 0x570(%rbx),%rax 0.00 : b99: 48 8b 93 c0 0a 00 add $0x4094,%rax 0.00 : b9f: 00 48 mov (%rax),%eax 0.00 : ba1: 89 83 b0 0a 00 00 48 mov 0x570(%rbx),%rax 0.00 : ba8: 8b 83 70 05 00 00 48 mov 0xac8(%rbx),%rdx 0.00 : baf: 05 90 40 00 00 8b add $0x40a0,%rax 0.00 : bb5: 00 89 mov (%rax),%eax 0.00 : bb7: c0 48 mov %eax,%eax 0.00 : bb9: 01 d0 48 add %rdx,%rax 0.00 : bbc: 89 83 c0 0a 00 00 48 mov 0xad0(%rbx),%rdx 0.00 : bc3: 8b 83 70 05 00 00 48 mov %rax,0xac8(%rbx) 0.00 : bca: 05 94 40 00 00 8b 00 mov 0x570(%rbx),%rax 0.00 : bd1: 48 8b 83 70 05 00 add $0x40a4,%rax 0.00 : bd7: 00 48 mov (%rax),%eax 0.00 : bd9: 8b 93 mov %eax,%eax 0.00 : bdb: c8 0a 00 add %rdx,%rax 0.00 : bde: 00 48 05 a0 40 00 00 mov 0xad8(%rbx),%rdx 0.00 : be5: 8b 00 89 c0 48 01 d0 mov %rax,0xad0(%rbx) 0.00 : bec: 48 8b 93 d0 0a 00 00 mov 0x570(%rbx),%rax 0.00 : bf3: 48 89 83 c8 0a 00 add $0x40a8,%rax 0.00 : bf9: 00 48 mov (%rax),%eax 0.00 : bfb: 8b 83 mov %eax,%eax 0.00 : bfd: 70 05 00 add %rdx,%rax 0.00 : c00: 00 48 05 a4 40 00 00 mov 0xae8(%rbx),%rdx 0.00 : c07: 8b 00 89 c0 48 01 d0 mov %rax,0xad8(%rbx) 0.00 : c0e: 48 8b 93 d8 0a 00 00 mov 0x570(%rbx),%rax 0.00 : c15: 48 89 83 d0 0a 00 add $0x40b0,%rax 0.00 : c1b: 00 48 mov (%rax),%eax 0.00 : c1d: 8b 83 mov %eax,%eax 0.00 : c1f: 70 05 00 add %rdx,%rax 0.00 : c22: 00 48 05 a8 40 00 00 mov 0xb08(%rbx),%rdx 0.00 : c29: 8b 00 89 c0 48 01 d0 mov %rax,0xae8(%rbx) 0.00 : c30: 48 8b 93 e8 0a 00 00 mov 0x570(%rbx),%rax 0.00 : c37: 48 89 83 d8 0a 00 add $0x40c4,%rax 0.00 : c3d: 00 48 mov (%rax),%eax 0.00 : c3f: 8b 83 mov %eax,%eax 0.00 : c41: 70 05 00 add %rdx,%rax 0.00 : c44: 00 48 05 b0 40 00 00 mov 0xb10(%rbx),%rdx 0.00 : c4b: 8b 00 89 c0 48 01 d0 mov %rax,0xb08(%rbx) 0.00 : c52: 48 8b 93 08 0b 00 00 mov 0x570(%rbx),%rax 0.00 : c59: 48 89 83 e8 0a 00 add $0x40cc,%rax 0.00 : c5f: 00 48 mov (%rax),%eax 0.00 : c61: 8b 83 mov %eax,%eax 0.00 : c63: 70 05 00 add %rdx,%rax 0.00 : c66: 00 48 05 c4 40 00 00 mov 0xb18(%rbx),%rdx 0.00 : c6d: 8b 00 89 c0 48 01 d0 mov %rax,0xb10(%rbx) 0.00 : c74: 48 8b 93 10 0b 00 00 mov 0x570(%rbx),%rax 0.00 : c7b: 48 89 83 08 0b 00 add $0x40d0,%rax 0.00 : c81: 00 48 mov (%rax),%eax 0.00 : c83: 8b 83 mov %eax,%eax 0.00 : c85: 70 05 00 add %rdx,%rax 0.00 : c88: 00 48 05 cc 40 00 00 mov 0xb28(%rbx),%rdx 0.00 : c8f: 8b 00 89 c0 48 01 d0 mov %rax,0xb18(%rbx) 0.00 : c96: 48 8b 93 18 0b 00 00 mov 0x570(%rbx),%rax 0.00 : c9d: 48 89 83 10 0b 00 add $0x40d8,%rax 0.00 : ca3: 00 48 mov (%rax),%eax 0.00 : ca5: 8b 83 mov %eax,%eax 0.00 : ca7: 70 05 00 add %rdx,%rax 0.00 : caa: 00 48 05 d0 40 00 00 mov 0xb30(%rbx),%rdx 0.00 : cb1: 8b 00 89 c0 48 01 d0 mov %rax,0xb28(%rbx) 0.00 : cb8: 48 8b 93 28 0b 00 00 mov 0x570(%rbx),%rax 0.00 : cbf: 48 89 83 18 0b 00 add $0x40dc,%rax 0.00 : cc5: 00 48 mov (%rax),%eax 0.00 : cc7: 8b 83 mov %eax,%eax 0.00 : cc9: 70 05 00 add %rdx,%rax 0.00 : ccc: 00 48 05 d8 40 00 00 mov 0xb38(%rbx),%rdx 0.00 : cd3: 8b 00 89 c0 48 01 d0 mov %rax,0xb30(%rbx) 0.00 : cda: 48 8b 93 30 0b 00 00 mov 0x570(%rbx),%rax 0.00 : ce1: 48 89 83 28 0b 00 add $0x40e0,%rax 0.00 : ce7: 00 48 mov (%rax),%eax 0.00 : ce9: 8b 83 mov %eax,%eax 0.00 : ceb: 70 05 00 add %rdx,%rax 0.00 : cee: 00 48 05 dc 40 00 00 mov 0xb40(%rbx),%rdx 0.00 : cf5: 8b 00 89 c0 48 01 d0 mov %rax,0xb38(%rbx) 0.00 : cfc: 48 8b 93 38 0b 00 00 mov 0x570(%rbx),%rax 0.00 : d03: 48 89 83 30 0b 00 add $0x40e4,%rax 0.00 : d09: 00 48 mov (%rax),%eax 0.00 : d0b: 8b 83 mov %eax,%eax 0.00 : d0d: 70 05 00 add %rdx,%rax 0.00 : d10: 00 48 05 e0 40 00 00 mov 0xb48(%rbx),%rdx 0.00 : d17: 8b 00 89 c0 48 01 d0 mov %rax,0xb40(%rbx) 0.00 : d1e: 48 8b 93 40 0b 00 00 mov 0x570(%rbx),%rax 0.00 : d25: 48 89 83 38 0b 00 add $0x40e8,%rax 0.00 : d2b: 00 48 mov (%rax),%eax 0.00 : d2d: 8b 83 mov %eax,%eax 0.00 : d2f: 70 05 00 add %rdx,%rax 0.00 : d32: 00 48 05 e4 40 00 00 mov 0xb50(%rbx),%rdx 0.00 : d39: 8b 00 89 c0 48 01 d0 mov %rax,0xb48(%rbx) 0.00 : d40: 48 8b 93 48 0b 00 00 mov 0x570(%rbx),%rax 0.00 : d47: 48 89 83 40 0b 00 add $0x40ec,%rax 0.00 : d4d: 00 48 mov (%rax),%eax 0.00 : d4f: 8b 83 mov %eax,%eax 0.00 : d51: 70 05 00 add %rdx,%rax 0.00 : d54: 00 48 05 e8 40 00 00 mov 0xb58(%rbx),%rdx 0.00 : d5b: 8b 00 89 c0 48 01 d0 mov %rax,0xb50(%rbx) 0.00 : d62: 48 8b 93 50 0b 00 00 mov 0x570(%rbx),%rax 0.00 : d69: 48 89 83 48 0b 00 add $0x40f0,%rax 0.00 : d6f: 00 48 mov (%rax),%eax 0.00 : d71: 8b 83 mov %eax,%eax 0.00 : d73: 70 05 00 add %rdx,%rax 0.00 : d76: 00 48 05 ec 40 00 00 mov 0xb60(%rbx),%rdx 0.00 : d7d: 8b 00 89 c0 48 01 d0 mov %rax,0xb58(%rbx) 0.00 : d84: 48 8b 93 58 0b 00 00 mov 0x570(%rbx),%rax 0.00 : d8b: 48 89 83 50 0b 00 add $0x40f4,%rax 0.00 : d91: 00 48 mov (%rax),%eax 0.00 : d93: 8b 83 mov %eax,%eax 0.00 : d95: 70 05 00 add %rdx,%rax 0.00 : d98: 00 48 05 f0 40 00 00 mov 0xb20(%rbx),%rdx 0.00 : d9f: 8b 00 89 c0 48 01 d0 mov %rax,0xb60(%rbx) 0.00 : da6: 48 8b 93 60 0b 00 00 mov 0x570(%rbx),%rax 0.00 : dad: 48 89 83 58 0b 00 add $0x40d4,%rax 0.00 : db3: 00 48 mov (%rax),%eax 0.00 : db5: 8b 83 mov %eax,%eax 0.00 : db7: 70 05 00 add %rdx,%rax 0.00 : dba: 00 48 05 f4 40 00 00 mov 0xa10(%rbx),%rdx 0.00 : dc1: 8b 00 89 c0 48 01 d0 mov %rax,0xb20(%rbx) 0.00 : dc8: 48 8b 93 20 0b 00 00 mov 0x570(%rbx),%rax 0.00 : dcf: 48 89 83 60 0b 00 add $0x4028,%rax 0.00 : dd5: 00 48 mov (%rax),%eax 0.00 : dd7: 8b 83 mov %eax,%eax 0.00 : dd9: 70 05 00 add %rdx,%rax 0.00 : ddc: 00 48 05 d4 40 00 00 mov 0x9d0(%rbx),%rdx 0.00 : de3: 8b 00 89 c0 48 01 d0 mov %rax,0xa10(%rbx) 0.00 : dea: 48 8b 93 10 0a 00 00 mov 0x570(%rbx),%rax 0.00 : df1: 48 89 83 20 0b 00 add $0x4004,%rax 0.00 : df7: 00 48 mov (%rax),%eax 0.00 : df9: 8b 83 mov %eax,%eax 0.00 : dfb: 70 05 00 add %rdx,%rax 0.00 : dfe: 00 48 05 28 40 00 00 mov %rax,0x9d0(%rbx) 0.00 : e05: 8b 00 89 c0 48 01 d0 mov 0x570(%rbx),%rax 0.00 : e0c: 48 8b 93 d0 add $0x18,%rax 0.00 : e10: 09 00 mov (%rax),%eax 0.00 : e12: 00 48 89 83 10 test $0xc00000,%eax 0.00 : e17: 0a 00 jne e6c 0.00 : e19: 00 48 8b 83 70 05 00 mov 0x570(%rbx),%rax 0.00 : e20: 00 48 05 04 40 00 00 mov 0x9e0(%rbx),%rdx 0.00 : e27: 8b 00 89 c0 48 01 add $0x400c,%rax 0.00 : e2d: d0 48 mov (%rax),%eax 0.00 : e2f: 89 83 mov %eax,%eax 0.00 : e31: d0 09 00 add %rdx,%rax 0.00 : e34: 00 48 8b 83 70 05 00 mov %rax,0x9e0(%rbx) 0.00 : e3b: 00 48 83 c0 18 8b mov 0x5e4(%rbx),%eax 0.00 : e41: 00 a9 00 sub $0x5,%eax 0.00 : e44: 00 c0 00 cmp $0x1,%eax 0.00 : e47: 75 53 jbe e6c 0.00 : e49: 48 8b 83 70 05 00 00 mov 0x570(%rbx),%rdx 0.00 : e50: 48 8b 93 e0 09 00 00 mov 0xa20(%rbx),%rax 0.00 : e57: 48 05 0c 40 00 00 8b add $0x4034,%rdx 0.00 : e5e: 00 89 mov (%rdx),%edx 0.00 : e60: c0 48 mov %edx,%edx 0.00 : e62: 01 d0 48 add %rax,%rdx 0.00 : e65: 89 83 e0 09 00 00 8b mov %rdx,0xa20(%rbx) 0.00 : e6c: 83 e4 05 00 00 83 e8 mov 0x570(%rbx),%rax 0.00 : e73: 05 83 f8 01 76 23 48 mov 0xb68(%rbx),%rdx 0.00 : e7a: 8b 93 70 05 00 00 add $0x40f8,%rax 0.00 : e80: 48 8b mov (%rax),%eax 0.00 : e82: 83 20 mov %eax,%eax 0.00 : e84: 0a 00 00 add %rdx,%rax 0.00 : e87: 48 81 c2 34 40 00 00 mov 0xb70(%rbx),%rdx 0.00 : e8e: 8b 12 89 d2 48 01 c2 mov %rax,0xb68(%rbx) 0.00 : e95: 48 89 93 20 0a 00 00 mov 0x570(%rbx),%rax 0.00 : e9c: 48 8b 83 70 05 00 add $0x40fc,%rax 0.00 : ea2: 00 48 mov (%rax),%eax 0.00 : ea4: 8b 93 mov %eax,%eax 0.00 : ea6: 68 0b 00 add %rdx,%rax 0.00 : ea9: 00 48 05 f8 40 00 00 mov 0xb78(%rbx),%rdx 0.00 : eb0: 8b 00 89 c0 48 01 d0 mov %rax,0xb70(%rbx) 0.00 : eb7: 48 8b 93 70 0b 00 00 mov 0x570(%rbx),%rax 0.00 : ebe: 48 89 83 68 0b 00 add $0x4100,%rax 0.00 : ec4: 00 48 mov (%rax),%eax 0.00 : ec6: 8b 83 mov %eax,%eax 0.00 : ec8: 70 05 00 add %rdx,%rax 0.00 : ecb: 00 48 05 fc 40 00 00 mov 0xbb8(%rbx),%rdx 0.00 : ed2: 8b 00 89 c0 48 01 d0 mov %rax,0xb78(%rbx) 0.00 : ed9: 48 8b 93 78 0b 00 00 mov 0x570(%rbx),%rax 0.00 : ee0: 48 89 83 70 0b 00 add $0x4124,%rax 0.00 : ee6: 00 48 mov (%rax),%eax 0.00 : ee8: 8b 83 mov %eax,%eax 0.00 : eea: 70 05 00 add %rdx,%rax 0.00 : eed: 00 48 05 00 41 00 00 mov 0xb80(%rbx),%rdx 0.00 : ef4: 8b 00 89 c0 48 01 d0 mov %rax,0xbb8(%rbx) 0.00 : efb: 48 8b 93 b8 0b 00 00 mov 0x570(%rbx),%rax 0.00 : f02: 48 89 83 78 0b 00 add $0x4104,%rax 0.00 : f08: 00 48 mov (%rax),%eax 0.00 : f0a: 8b 83 mov %eax,%eax 0.00 : f0c: 70 05 00 add %rdx,%rax 0.00 : f0f: 00 48 05 24 41 00 00 mov 0xb88(%rbx),%rdx 0.00 : f16: 8b 00 89 c0 48 01 d0 mov %rax,0xb80(%rbx) 0.00 : f1d: 48 8b 93 80 0b 00 00 mov 0x570(%rbx),%rax 0.00 : f24: 48 89 83 b8 0b 00 add $0x4108,%rax 0.00 : f2a: 00 48 mov (%rax),%eax 0.00 : f2c: 8b 83 mov %eax,%eax 0.00 : f2e: 70 05 00 add %rdx,%rax 0.00 : f31: 00 48 05 04 41 00 00 mov 0xb90(%rbx),%rdx 0.00 : f38: 8b 00 89 c0 48 01 d0 mov %rax,0xb88(%rbx) 0.00 : f3f: 48 8b 93 88 0b 00 00 mov 0x570(%rbx),%rax 0.00 : f46: 48 89 83 80 0b 00 add $0x410c,%rax 0.00 : f4c: 00 48 mov (%rax),%eax 0.00 : f4e: 8b 83 mov %eax,%eax 0.00 : f50: 70 05 00 add %rdx,%rax 0.00 : f53: 00 48 05 08 41 00 00 mov 0xb98(%rbx),%rdx 0.00 : f5a: 8b 00 89 c0 48 01 d0 mov %rax,0xb90(%rbx) 0.00 : f61: 48 8b 93 90 0b 00 00 mov 0x570(%rbx),%rax 0.00 : f68: 48 89 83 88 0b 00 add $0x4110,%rax 0.00 : f6e: 00 48 mov (%rax),%eax 0.00 : f70: 8b 83 mov %eax,%eax 0.00 : f72: 70 05 00 add %rdx,%rax 0.00 : f75: 00 48 05 0c 41 00 00 mov 0xba0(%rbx),%rdx 0.00 : f7c: 8b 00 89 c0 48 01 d0 mov %rax,0xb98(%rbx) 0.00 : f83: 48 8b 93 98 0b 00 00 mov 0x570(%rbx),%rax 0.00 : f8a: 48 89 83 90 0b 00 add $0x4118,%rax 0.00 : f90: 00 48 mov (%rax),%eax 0.00 : f92: 8b 83 mov %eax,%eax 0.00 : f94: 70 05 00 add %rdx,%rax 0.00 : f97: 00 48 05 10 41 00 00 mov 0xba8(%rbx),%rdx 0.00 : f9e: 8b 00 89 c0 48 01 d0 mov %rax,0xba0(%rbx) 0.00 : fa5: 48 8b 93 a0 0b 00 00 mov 0x570(%rbx),%rax 0.00 : fac: 48 89 83 98 0b 00 add $0x411c,%rax 0.00 : fb2: 00 48 mov (%rax),%eax 0.00 : fb4: 8b 83 mov %eax,%eax 0.00 : fb6: 70 05 00 add %rdx,%rax 0.00 : fb9: 00 48 05 18 41 00 00 mov 0xbb0(%rbx),%rdx 0.00 : fc0: 8b 00 89 c0 48 01 d0 mov %rax,0xba8(%rbx) 0.00 : fc7: 48 8b 93 a8 0b 00 00 mov 0x570(%rbx),%rax 0.00 : fce: 48 89 83 a0 0b 00 add $0x4120,%rax 0.00 : fd4: 00 48 mov (%rax),%eax 33.33 : fd6: 8b 83 mov %eax,%eax 0.00 : fd8: 70 05 00 add %rdx,%rax 0.00 : fdb: 00 48 05 1c 41 00 00 mov %rax,0xbb0(%rbx) 0.00 : fe2: 8b 00 89 c0 48 01 d0 mov 0xaa8(%rbx),%rax 0.00 : fe9: 48 8b 93 b0 mov %rax,0x40(%rsi) 0.00 : fed: 0b 00 00 48 89 83 a8 mov 0xa10(%rbx),%rax 0.00 : ff4: 0b 00 00 48 mov %rax,0x48(%rsi) 0.00 : ff8: 8b 83 70 05 00 00 48 mov 0x9c8(%rbx),%rax 0.00 : fff: 05 20 41 00 00 8b 00 add 0x9e0(%rbx),%rax 0.00 : 1006: 89 c0 48 01 d0 48 89 add 0x9d0(%rbx),%rax 0.00 : 100d: 83 b0 0b 00 00 48 8b add 0xad0(%rbx),%rax 0.00 : 1014: 83 a8 0a 00 00 48 89 add 0xae0(%rbx),%rax 0.00 : 101b: 46 40 48 8b 83 10 0a add 0xa30(%rbx),%rax 0.00 : 1022: 00 00 48 89 mov %rax,0x20(%rsi) 0.00 : 1026: 46 48 48 8b 83 c8 09 mov 0xae0(%rbx),%rax 0.00 : 102d: 00 00 48 03 83 e0 09 add 0xad0(%rbx),%rax 0.00 : 1034: 00 00 48 03 mov %rax,0x50(%rsi) 0.00 : 1038: 83 d0 09 00 00 48 03 mov 0x9c8(%rbx),%rax 0.00 : 103f: 83 d0 0a 00 mov %rax,0x60(%rsi) 0.00 : 1043: 00 48 03 83 e0 0a 00 mov 0x9d0(%rbx),%rax 0.00 : 104a: 00 48 03 83 mov %rax,0x68(%rsi) 0.00 : 104e: 30 0a 00 00 48 89 46 mov 0x9e8(%rbx),%rax 0.00 : 1055: 20 48 8b 83 mov %rax,0x78(%rsi) 0.00 : 1059: e0 0a 00 00 48 03 83 mov 0xa08(%rbx),%rax 0.00 : 1060: d0 0a 00 00 48 89 46 add 0x9f8(%rbx),%rax 0.00 : 1067: 50 48 8b 83 mov %rax,0x28(%rsi) 0.00 : 106b: c8 09 00 00 48 89 46 mov 0x9f8(%rbx),%rax 0.00 : 1072: 60 48 8b 83 d0 09 00 mov %rax,0x80(%rsi) 0.00 : 1079: 00 48 89 46 68 48 8b mov 0xa08(%rbx),%rax 0.00 : 1080: 83 e8 09 00 00 48 89 mov %rax,0xa0(%rsi) 0.00 : 1087: 46 78 48 8b 83 08 0a mov 0xa20(%rbx),%rax 0.00 : 108e: 00 00 48 03 83 f8 09 mov %rax,0x88(%rsi) 0.00 : 1095: 00 00 48 89 46 28 48 cmpl $0x1,0x8bc(%rbx) 0.00 : 109c: 8b 83 f8 09 00 00 je 11b0 0.00 : 10a2: 48 89 86 80 00 00 00 mov 0x570(%rbx),%rax 0.00 : 10a9: 48 8b 83 08 0a 00 00 mov 0xb00(%rbx),%rdx 0.00 : 10b0: 48 89 86 a0 00 00 add $0x40bc,%rax 0.00 : 10b6: 00 48 mov (%rax),%eax 0.00 : 10b8: 8b 83 mov %eax,%eax 0.00 : 10ba: 20 0a 00 add %rdx,%rax 0.00 : 10bd: 00 48 89 86 88 00 00 mov 0xaf0(%rbx),%rdx 0.00 : 10c4: 00 83 bb bc 08 00 00 mov %rax,0xb00(%rbx) 0.00 : 10cb: 01 0f 84 0e 01 00 00 mov 0x570(%rbx),%rax 0.00 : 10d2: 48 8b 83 70 05 00 add $0x40b4,%rax 0.00 : 10d8: 00 48 mov (%rax),%eax 33.33 : 10da: 8b 93 mov %eax,%eax 0.00 : 10dc: 00 0b 00 add %rdx,%rax 0.00 : 10df: 00 48 05 bc 40 00 00 mov 0xaf8(%rbx),%rdx 0.00 : 10e6: 8b 00 89 c0 48 01 d0 mov %rax,0xaf0(%rbx) 0.00 : 10ed: 48 8b 93 f0 0a 00 00 mov 0x570(%rbx),%rax 0.00 : 10f4: 48 89 83 00 0b 00 add $0x40b8,%rax 0.00 : 10fa: 00 48 mov (%rax),%eax 0.00 : 10fc: 8b 83 mov %eax,%eax 0.00 : 10fe: 70 05 00 add %rdx,%rax 0.00 : 1101: 00 48 05 b4 40 00 00 mov %rax,0xaf8(%rbx) 0.00 : 1108: 8b 00 89 c0 48 01 d0 mov 0x570(%rbx),%rax 0.00 : 110f: 48 8b 93 f8 0a 00 add $0x5820,%rax 0.00 : 1115: 00 48 mov (%rax),%eax 0.00 : 1117: 89 83 f0 0a 00 test $0x10000000,%eax 0.00 : 111c: 00 48 8b 83 70 05 je 722 0.00 : 1122: 00 00 48 05 b8 40 00 mov 0x570(%rbx),%rax 0.00 : 1129: 00 8b 00 89 c0 48 01 mov 0xc28(%rbx),%rdx 0.00 : 1130: d0 48 89 83 f8 0a add $0x8fe4,%rax 0.00 : 1136: 00 00 mov (%rax),%eax 0.00 : 1138: 48 8b mov %eax,%eax 0.00 : 113a: 83 70 05 add %rdx,%rax 0.00 : 113d: 00 00 48 05 20 58 00 mov 0xc30(%rbx),%rdx 0.00 : 1144: 00 8b 00 a9 00 00 00 mov %rax,0xc28(%rbx) 0.00 : 114b: 10 0f 84 00 f6 ff ff mov 0x570(%rbx),%rax 0.00 : 1152: 48 8b 83 70 05 00 add $0x415c,%rax 0.00 : 1158: 00 48 mov (%rax),%eax 0.00 : 115a: 8b 93 mov %eax,%eax 0.00 : 115c: 28 0c 00 add %rdx,%rax 0.00 : 115f: 00 48 05 e4 8f 00 00 mov 0xc38(%rbx),%rdx 0.00 : 1166: 8b 00 89 c0 48 01 d0 mov %rax,0xc30(%rbx) 0.00 : 116d: 48 8b 93 30 0c 00 00 mov 0x570(%rbx),%rax 0.00 : 1174: 48 89 83 28 0c 00 add $0x8fe0,%rax 0.00 : 117a: 00 48 mov (%rax),%eax 0.00 : 117c: 8b 83 mov %eax,%eax 0.00 : 117e: 70 05 00 add %rdx,%rax 0.00 : 1181: 00 48 05 5c 41 00 00 mov 0xc40(%rbx),%rdx 0.00 : 1188: 8b 00 89 c0 48 01 d0 mov %rax,0xc38(%rbx) 0.00 : 118f: 48 8b 93 38 0c 00 00 mov 0x570(%rbx),%rax 0.00 : 1196: 48 89 83 30 0c 00 add $0x4158,%rax 0.00 : 119c: 00 48 mov (%rax),%eax 0.00 : 119e: 8b 83 mov %eax,%eax 0.00 : 11a0: 70 05 00 add %rdx,%rax 0.00 : 11a3: 00 48 05 e0 8f 00 00 mov %rax,0xc40(%rbx) 0.00 : 11aa: 8b 00 89 c0 add $0x10,%rsp 0.00 : 11ae: 48 pop %rbx 0.00 : 11af: 01 retq 0.00 : 11b0: d0 48 8b 93 40 0c 00 cmpw $0x3e8,0x3f8(%rbx) 0.00 : 11b7: 00 48 0.00 : 11b9: 89 83 38 0c 00 00 jne 10a2 0.00 : 11bf: 48 8b 83 70 05 00 00 mov 0x860(%rbx),%rax 0.00 : 11c6: 48 05 58 test %rax,%rax 0.00 : 11c9: 41 00 je 11e6 0.00 : 11cb: 00 8b 00 89 c0 lea 0xe(%rsp),%rdx 0.00 : 11d0: 48 01 d0 48 89 83 40 lea 0x568(%rbx),%rdi 0.00 : 11d7: 0c 00 00 48 83 mov $0xa,%esi 0.00 : 11dc: c4 10 callq *%rax 0.00 : 11de: 5b c3 test %eax,%eax 0.00 : 11e0: 66 81 bb f8 03 00 jne 10a2 0.00 : 11e6: 00 e8 03 0f 85 movzbl 0xe(%rsp),%eax 0.00 : 11eb: e3 fe ff ff 48 mov %ax,0xe(%rsp) 0.00 : 11f0: 8b 83 60 movzwl %ax,%eax 0.00 : 11f3: 08 00 00 48 85 c0 add %eax,0xcf8(%rbx) 0.00 : 11f9: 74 1b 48 8d 54 jmpq 10a2 : 11fe: 24 0e xchg %ax,%ax : 1200: 48 8d bb 68 sub $0x18,%rsp : 1204: 05 00 00 be mov %rbx,(%rsp) : 1208: 0a 00 00 00 ff mov %rbp,0x8(%rsp) : 120d: d0 85 c0 mov %rdi,%rbx : 1210: 0f 85 bc fe ff mov %r12,0x10(%rsp) : 1215: ff 0f b6 44 mov 0x20(%rdi),%rsi : 1219: 24 0e 66 mov (%rdi),%rbp : 121c: 89 44 24 test %rsi,%rsi : 121f: 0e 0f b7 c0 01 83 je 13b0 : 1225: f8 0c 00 00 e9 a4 fe testb $0x3,0x220(%rbp) : 122c: ff ff je 127b Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007940 : 50.00 : 7940: 41 57 push %r15 0.00 : 7972: ba rex.WRX 0.00 : 7973: 01 00 00 00 49 89 ff jne 7b3f 0.00 : 797a: 41 56 41 movzwl %cx,%eax 0.00 : 797d: 55 41 54 movzwl %si,%esi 0.00 : 7980: 55 53 mov %eax,%edx 0.00 : 7982: 48 83 ec 48 mov %esi,0x44(%rsp) 0.00 : 7986: 48 8b 07 mov %eax,%r12d 0.00 : 7989: 48 89 44 24 lea (%rdx,%rdx,2),%rbx 0.00 : 798d: 30 48 8b mov %rdx,%rbp 0.00 : 7990: 80 08 02 00 00 movzwl 0x44(%r14),%edx 0.00 : 7995: 4c 8b 77 38 shl $0x4,%rbp 0.00 : 7999: 0f b7 77 48 add 0x20(%r14),%rbp 0.00 : 799d: a8 04 41 0f shl $0x4,%rbx 0.00 : 79a1: b7 4e 48 0f add 0x18(%r14),%rbx 0.00 : 79a5: 85 c5 01 00 00 0f b7 movl $0x0,0x3c(%rsp) 0.00 : 79ac: c1 0.00 : 79ad: 0f b7 f6 89 c2 89 74 movl $0x0,0x40(%rsp) 0.00 : 79b4: 24 0.00 : 79b5: 44 41 89 sub %edx,%r12d 0.00 : 79b8: c4 48 8d 1c 52 48 89 nopl 0x0(%rax,%rax,1) 0.00 : 79bf: d5 0.00 : 79c0: 41 0f b7 mov (%rbx),%r13 50.00 : 79c3: 56 44 48 test %r13,%r13 0.00 : 79c6: c1 e5 04 49 03 6e je 7ac1 0.00 : 79cc: 20 48 c1 lfence 0.00 : 79cf: e3 04 49 03 5e testb $0x1,0xc(%r13) 0.00 : 79d4: 18 c7 44 24 3c 00 je 7ac1 0.00 : 79da: 00 00 00 c7 44 24 40 movq $0x0,(%rbx) 0.00 : 79e1: 00 00 00 mov 0x18(%rbx),%ecx 0.00 : 79e4: 00 41 29 d4 add %ecx,0x3c(%rsp) 0.00 : 79e8: 0f 1f 84 00 movzwl 0x1c(%rbx),%eax 0.00 : 79ec: 00 00 00 00 add %eax,0x40(%rsp) 0.00 : 79f0: 4c 8b 2b 4d mov 0x10(%rbx),%rdi 0.00 : 79f4: 85 ed 0f 84 f5 callq 79f9 0.00 : 79f9: 00 00 00 0f mov 0x10(%r14),%rdi 0.00 : 79fd: ae e8 41 mov 0x28(%rbx),%edx 0.00 : 7a00: f6 45 0c 01 mov 0x20(%rbx),%rsi 0.00 : 7a04: 0f 84 e7 test %rdi,%rdi 0.00 : 7a07: 00 00 00 48 c7 03 je 7b60 0.00 : 7a0d: 00 00 00 00 8b 4b 18 mov 0x200(%rdi),%rax 0.00 : 7a14: 01 4c 24 test %rax,%rax 0.00 : 7a17: 3c 0f b7 43 1c 01 je 7b60 0.00 : 7a1d: 44 24 40 48 mov 0x18(%rax),%rax 0.00 : 7a21: 8b 7b 10 test %rax,%rax 0.00 : 7a24: e8 00 je 7a32 0.00 : 7a26: 00 00 mov %edx,%edx 0.00 : 7a28: 00 49 8b xor %r8d,%r8d 0.00 : 7a2b: 7e 10 8b 53 28 mov $0x1,%ecx 0.00 : 7a30: 48 8b callq *%rax 0.00 : 7a32: 73 20 48 85 ff 0f 84 movq $0x0,0x10(%rbx) 0.00 : 7a39: 53 0.00 : 7a3a: 01 00 00 48 8b 87 00 movl $0x0,0x28(%rbx) 0.00 : 7a41: 02 00 00 cmp %r13,%rbp 0.00 : 7a44: 48 85 je 7aa0 0.00 : 7a46: c0 0f 84 43 add $0x1,%r12d 0.00 : 7a4a: 01 00 00 48 8b 40 je 7b6c 0.00 : 7a50: 18 48 85 c0 add $0x30,%rbx 0.00 : 7a54: 74 0c 89 d2 add $0x10,%rbp 0.00 : 7a58: 45 31 c0 mov 0x28(%rbx),%edx 0.00 : 7a5b: b9 01 test %edx,%edx 0.00 : 7a5d: 00 00 je 7a41 0.00 : 7a5f: 00 ff d0 48 mov 0x10(%r14),%rdi 0.00 : 7a63: c7 43 10 00 mov 0x20(%rbx),%rsi 0.00 : 7a67: 00 00 00 test %rdi,%rdi 0.00 : 7a6a: c7 43 28 00 00 00 je 7b50 0.00 : 7a70: 00 4c 39 ed 74 5a 41 mov 0x200(%rdi),%rax 0.00 : 7a77: 83 c4 01 test %rax,%rax 0.00 : 7a7a: 0f 84 1c 01 00 00 je 7b50 0.00 : 7a80: 48 83 c3 30 mov 0x18(%rax),%rax 0.00 : 7a84: 48 83 c5 test %rax,%rax 0.00 : 7a87: 10 8b je 7a3a 0.00 : 7a89: 53 28 mov %edx,%edx 0.00 : 7a8b: 85 d2 74 xor %r8d,%r8d 0.00 : 7a8e: e2 49 8b 7e 10 mov $0x1,%ecx 0.00 : 7a93: 48 8b callq *%rax 0.00 : 7a95: 73 20 jmp 7a3a 0.00 : 7a97: 48 85 ff 0f 84 e0 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a9e: 00 00 0.00 : 7aa0: 48 8b 87 00 add $0x1,%r12d 0.00 : 7aa4: 02 00 00 48 85 c0 je 7c2a 0.00 : 7aaa: 0f 84 d0 00 add $0x30,%rbx 0.00 : 7aae: 00 00 48 8b add $0x10,%rbp 0.00 : 7ab2: 40 18 48 85 c0 subl $0x1,0x44(%rsp) 0.00 : 7ab7: 74 b1 89 d2 prefetcht0 0x0(%rbp) 0.00 : 7abb: 45 31 c0 b9 01 00 jne 79c0 0.00 : 7ac1: 00 00 ff d0 eb movzwl 0x44(%r14),%eax 0.00 : 7ac6: a3 66 0f 1f lea (%r12,%rax,1),%eax 0.00 : 7aca: 84 00 00 00 00 mov %ax,0x48(%r14) 0.00 : 7acf: 00 41 83 c4 mov 0x3c(%rsp),%eax 0.00 : 7ad3: 01 0f 84 80 add %rax,0x58(%r14) 0.00 : 7ad7: 01 00 00 48 mov 0x40(%rsp),%eax 0.00 : 7adb: 83 c3 30 48 add %rax,0x50(%r14) 0.00 : 7adf: 83 c5 10 83 mov 0x3c(%rsp),%eax 0.00 : 7ae3: 6c 24 44 01 mov 0x40(%rsp),%edx 0.00 : 7ae7: 0f 18 4d 00 add %eax,0x40(%r15) 0.00 : 7aeb: 0f 85 ff fe add %edx,0x44(%r15) 0.00 : 7aef: ff ff 41 0f lea 0x28(%r14),%rdx 0.00 : 7af3: b7 46 44 41 mov 0x28(%r14),%rax 0.00 : 7af7: 8d 04 test $0x8,%al 0.00 : 7af9: 04 66 je 7b2a 0.00 : 7afb: 41 89 46 48 8b 44 lock andb $0xf7,0x28(%r14) 0.00 : 7b01: 24 3c 49 01 cmpq $0x0,(%rbx) 0.00 : 7b05: 46 58 je 7b2a 0.00 : 7b07: 8b 44 24 40 49 mov 0x30(%rsp),%rcx 0.00 : 7b0c: 01 46 50 8b 44 24 3c mov 0x0(%rip),%rdx # 7b13 0.00 : 7b13: 8b 54 24 40 41 01 47 movzbl 0x441(%rcx),%eax 0.00 : 7b1a: 40 41 01 57 44 49 8d imul $0xfa,%rax,%rax 0.00 : 7b21: 56 28 49 8b add 0x8(%rbx),%rax 0.00 : 7b25: 46 28 a8 cmp %rdx,%rax 0.00 : 7b28: 08 74 js 7b81 0.00 : 7b2a: 2f f0 41 80 mov 0x40(%rsp),%eax 0.00 : 7b2e: 66 28 test %eax,%eax 0.00 : 7b30: f7 48 83 3b 00 74 jne 7c3f 0.00 : 7b36: 23 48 8b 4c mov 0x44(%rsp),%eax 0.00 : 7b3a: 24 30 test %eax,%eax 0.00 : 7b3c: 48 8b 15 setne %dl 0.00 : 7b3f: 00 00 00 00 add $0x48,%rsp 0.00 : 7b43: 0f b6 mov %edx,%eax 0.00 : 7b45: 81 pop %rbx 0.00 : 7b46: 41 pop %rbp 0.00 : 7b47: 04 00 pop %r12 0.00 : 7b49: 00 48 pop %r13 0.00 : 7b4b: 69 c0 pop %r14 0.00 : 7b4d: fa 00 pop %r15 0.00 : 7b4f: 00 retq 0.00 : 7b50: 00 48 03 43 08 48 39 mov 0x0(%rip),%rax # 7b57 0.00 : 7b57: d0 78 57 8b 44 jmpq 7a80 0.00 : 7b5c: 24 40 85 c0 nopl 0x0(%rax) 0.00 : 7b60: 0f 85 09 01 00 00 8b mov 0x0(%rip),%rax # 7b67 0.00 : 7b67: 44 24 44 85 c0 jmpq 7a1d 0.00 : 7b6c: 0f 95 c2 48 83 movzwl 0x44(%r14),%r12d 0.00 : 7b71: c4 48 89 d0 mov 0x18(%r14),%rbx 0.00 : 7b75: 5b 5d 41 5c mov 0x20(%r14),%rbp 0.00 : 7b79: 41 5d 41 neg %r12d 0.00 : 7b7c: 5e 41 5f c3 48 jmpq 7a58 0.00 : 7b81: 8b 05 00 00 00 00 e9 mov 0x570(%rcx),%rax 0.00 : 7b88: 24 ff ff ff add $0x8,%rax 0.00 : 7b8c: 0f 1f mov (%rax),%eax 0.00 : 7b8e: 40 00 test $0x10,%al 0.00 : 7b90: 48 8b jne 7b2a 0.00 : 7b92: 05 00 00 mov (%rbx),%rsi 0.00 : 7b95: 00 00 e9 b1 fe ff ff mov 0x0(%rip),%rbp # 7b9c 0.00 : 7b9c: 45 0f b7 66 mov 0x8(%rbx),%r11 0.00 : 7ba0: 44 49 8b 5e 18 movzwl 0x48(%r14),%r10d 0.00 : 7ba5: 49 8b 6e 20 41 movzwl 0x4a(%r14),%r9d 0.00 : 7baa: f7 dc e9 d7 mov 0x30(%r14),%rax 0.00 : 7bae: fe ff ff 48 mov 0xc(%rsi),%r12d 0.00 : 7bb2: 8b 81 70 mov (%rax),%r8d 0.00 : 7bb5: 05 00 00 48 83 movzbl 0x47(%r14),%eax 0.00 : 7bba: c0 08 8b 00 a8 10 75 mov 0x570(%rcx),%rdx 0.00 : 7bc1: 98 48 cmp $0x3,%al 0.00 : 7bc3: 8b 33 48 8b 2d 00 ja 7cbc 0.00 : 7bc9: 00 00 00 movzbl %al,%eax 0.00 : 7bcc: 4c 8b 5b shl $0x8,%eax 0.00 : 7bcf: 08 45 0f b7 56 add $0x3810,%eax 0.00 : 7bd4: 48 45 cltq 0.00 : 7bd6: 0f b7 4e 4a lea (%rdx,%rax,1),%rax 0.00 : 7bda: 49 8b mov (%rax),%ecx 0.00 : 7bdc: 46 30 44 8b 66 movzbl 0x46(%r14),%edx 0.00 : 7be1: 0c 44 8b 00 mov 0x10(%r14),%rdi 0.00 : 7be5: 41 0f b6 46 movzwl %r10w,%eax 0.00 : 7be9: 47 48 8b 91 70 mov %rsi,0x10(%rsp) 0.00 : 7bee: 05 00 00 mov %eax,(%rsp) 0.00 : 7bf1: 3c 03 0f 87 movzwl %r9w,%r9d 0.00 : 7bf5: f3 00 00 00 0f b6 c0 mov $0x0,%rsi 0.00 : 7bfc: c1 e0 xor %eax,%eax 0.00 : 7bfe: 08 05 10 38 00 mov %r11,0x8(%rsp) 0.00 : 7c03: 00 48 98 48 8d mov %r12d,0x20(%rsp) 0.00 : 7c08: 04 02 8b 08 41 mov %rbp,0x18(%rsp) 0.00 : 7c0d: 0f b6 56 46 49 callq 7c12 0.00 : 7c12: 8b 7e 10 41 0f movzbl 0x46(%r14),%esi 0.00 : 7c17: b7 c2 48 89 mov 0x8(%r14),%rdi 0.00 : 7c1b: 74 24 10 89 04 callq 78c0 0.00 : 7c20: 24 45 0f b7 c9 mov $0x1,%edx 0.00 : 7c25: 48 c7 c6 00 00 jmpq 7b3f 0.00 : 7c2a: 00 00 31 c0 4c movzwl 0x44(%r14),%r12d 0.00 : 7c2f: 89 5c 24 08 mov 0x18(%r14),%rbx 0.00 : 7c33: 44 89 64 24 mov 0x20(%r14),%rbp 0.00 : 7c37: 20 48 89 neg %r12d 0.00 : 7c3a: 6c 24 18 e8 00 jmpq 7ab2 0.00 : 7c3f: 00 00 00 41 mov 0x8(%r14),%rax 0.00 : 7c43: 0f b6 76 46 mov 0x78(%rax),%rax 0.00 : 7c47: 49 8b test $0x4,%al 0.00 : 7c49: 7e 08 e8 a0 fc ff jne 7b36 0.00 : 7c4f: ff ba 01 00 00 movzwl 0x48(%r14),%edx 0.00 : 7c54: 00 e9 15 ff ff movzwl 0x4a(%r14),%ecx 0.00 : 7c59: ff 45 0f cmp %cx,%dx 0.00 : 7c5c: b7 66 jbe 7cd0 0.00 : 7c5e: 44 49 8b movzwl %dx,%eax 0.00 : 7c61: 5e 18 49 lea -0x1(%rax),%edx 0.00 : 7c64: 8b 6e 20 movzwl %cx,%eax 0.00 : 7c67: 41 f7 sub %eax,%edx 0.00 : 7c69: dc e9 73 cmp $0xf,%edx 0.00 : 7c6c: fe ff ff 49 8b 46 jle 7b36 0.00 : 7c72: 08 48 8b mfence 0.00 : 7c75: 40 78 a8 04 0f movzbl 0x46(%r14),%esi 0.00 : 7c7a: 85 e7 fe ff mov 0x8(%r14),%rdi 0.00 : 7c7e: ff 41 0f b7 movzbl %sil,%eax 0.00 : 7c82: 56 48 41 0f shl $0x8,%rax 0.00 : 7c86: b7 4e 4a 66 39 ca 76 add 0x380(%rdi),%rax 0.00 : 7c8d: 72 0f b7 c2 mov 0x10(%rax),%rax 0.00 : 7c91: 8d 50 test $0x1,%al 0.00 : 7c93: ff 0f b7 c1 29 c2 je 7b36 0.00 : 7c99: 83 fa 0f 0f 8e mov 0x30(%rsp),%rdx 0.00 : 7c9e: c4 fe ff ff 0f ae f0 mov 0x208(%rdx),%rax 0.00 : 7ca5: 41 0f test $0x4,%al 0.00 : 7ca7: b6 76 46 49 8b 7e jne 7b36 0.00 : 7cad: 08 40 0f b6 c6 callq 1ff0 0.00 : 7cb2: 48 c1 e0 08 48 addq $0x1,0x60(%r14) 0.00 : 7cb7: 03 87 80 03 00 jmpq 7b36 0.00 : 7cbc: 00 48 8b movzbl %al,%eax 0.00 : 7cbf: 40 10 a8 shl $0x6,%eax 0.00 : 7cc2: 01 0f 84 9d fe add $0xe010,%eax 0.00 : 7cc7: ff ff cltq 0.00 : 7cc9: 48 8b 54 24 30 jmpq 7bd6 0.00 : 7cce: 48 8b xchg %ax,%ax 0.00 : 7cd0: 82 08 02 00 00 movzwl 0x44(%r14),%eax 0.00 : 7cd5: a8 04 0f movzwl %dx,%edx 0.00 : 7cd8: 85 89 fe ff lea -0x1(%rax,%rdx,1),%edx 0.00 : 7cdc: ff e8 3e movzwl %cx,%eax 0.00 : 7cdf: a3 ff sub %eax,%edx 0.00 : 7ce1: ff 49 jmp 7c69 : 7ce3: 83 46 60 01 e9 7a fe data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) : 7cea: ff ff 0f b6 c0 c1 : 7cf0: e0 06 05 10 sub $0x28,%rsp : 7cf4: e0 00 00 48 98 mov %rbp,0x10(%rsp) : 7cf9: e9 08 ff ff ff mov %r12,0x18(%rsp) : 7cfe: 66 90 41 mov %rdi,%rbp : 7d01: 0f b7 46 44 0f mov %r13,0x20(%rsp) : 7d06: b7 d2 8d 54 10 mov %rbx,0x8(%rsp) : 7d0b: ff 0f b7 mov %esi,%r13d : 7d0e: c1 29 c2 eb mov -0x50(%rdi),%rax Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/scsi/3w-sas.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/scsi/3w-sas.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000001830 : 0.00 : 1830: 41 56 push %r14 0.00 : 1862: 41 55 add %al,(%rax) 0.00 : 1864: 41 54 55 48 89 f5 53 mov 0x3d40(%rbp),%rax 0.00 : 186b: 48 83 ec 10 48 8b 86 lea 0x3d40(%rbp),%r12 0.00 : 1872: 38 3d test $0x4,%al 0.00 : 1874: 00 00 48 8b 78 58 jne 19e2 0.00 : 187a: e8 00 00 test $0x4,%bl 0.00 : 187d: 00 00 48 8b 45 00 jne 1b1b 0.00 : 1883: 48 83 c0 and $0x8,%ebx 0.00 : 1886: 30 8b 18 31 d2 f6 je 19e2 0.00 : 188c: c3 0c 0f 84 83 01 00 lea 0x4558(%rbp),%r14 0.00 : 1893: 00 48 8b xor %r13d,%r13d 0.00 : 1896: 85 40 3d 00 00 4c 8d nopw %cs:0x0(%rax,%rax,1) 0.00 : 189d: a5 40 3d 0.00 : 18a0: 00 00 a8 04 mov 0x0(%rbp),%rax 0.00 : 18a4: 0f 85 68 01 00 00 add $0xcc,%rax 0.00 : 18aa: f6 c3 mov (%rax),%edx 100.00 : 18ac: 04 0f 85 98 mov 0x0(%rbp),%rax 0.00 : 18b0: 02 00 00 83 e3 08 add $0xc8,%rax 0.00 : 18b6: 0f 84 mov (%rax),%eax 0.00 : 18b8: 56 01 00 00 shl $0x20,%rdx 0.00 : 18bc: 4c 8d mov %eax,%eax 0.00 : 18be: b5 58 45 or %rax,%rdx 0.00 : 18c1: 00 00 mov %edx,%eax 0.00 : 18c3: 45 31 test $0x1,%al 0.00 : 18c5: ed 66 2e 0f 1f 84 jne 1a08 0.00 : 18cb: 00 00 00 mov %rbp,%rax 0.00 : 18ce: 00 00 xor %esi,%esi 0.00 : 18d0: 48 8b jmp 18eb 0.00 : 18d2: 45 00 48 05 cc 00 nopw 0x0(%rax,%rax,1) 0.00 : 18d8: 00 00 8b add $0x1,%esi 0.00 : 18db: 10 48 8b 45 add $0x8,%rax 0.00 : 18df: 00 48 05 c8 00 00 cmp $0x100,%esi 0.00 : 18e5: 00 8b 00 48 c1 e2 je 1b10 0.00 : 18eb: 20 89 c0 48 09 c2 89 cmp %rdx,0x2808(%rax) 0.00 : 18f2: d0 a8 jne 18d8 0.00 : 18f4: 01 0f 85 movslq %esi,%rbx 0.00 : 18f7: 3d 01 00 00 48 89 e8 mov 0x2008(%rbp,%rbx,8),%rcx 0.00 : 18fe: 31 0.00 : 18ff: f6 eb 19 66 0f movzwl 0x7d(%rcx),%r13d 0.00 : 1904: 1f 44 00 mov %r13d,%r12d 0.00 : 1907: 00 83 c6 01 48 83 c0 cmpq $0x0,0x3010(%rbp,%r12,8) 0.00 : 190e: 08 81 0.00 : 1910: fe 00 01 00 00 0f je 1ae8 0.00 : 1916: 84 25 02 00 00 48 mov $0x1,%r8d 0.00 : 191c: 39 90 08 28 00 mov $0x1,%ecx 0.00 : 1921: 00 75 e4 mov %r13d,%edx 0.00 : 1924: 48 63 de mov %rbp,%rdi 0.00 : 1927: 48 8b 8c dd 08 callq 1420 0.00 : 192c: 20 00 mov %eax,%esi 0.00 : 192e: 00 44 0f b7 mov 0x0(%rbp),%rax 0.00 : 1932: 69 7d 45 89 ec 4a 83 lea 0x500(%rbx),%rcx 0.00 : 1939: bc e5 10 30 mov 0xc(%rbp,%rcx,8),%edx 0.00 : 193d: 00 00 00 0f 84 d2 add $0xcc,%rax 0.00 : 1943: 01 00 mov %edx,(%rax) 0.00 : 1945: 00 41 b8 01 mov 0x0(%rbp),%rax 0.00 : 1949: 00 00 00 b9 mov 0x8(%rbp,%rcx,8),%edx 0.00 : 194d: 01 00 00 00 44 89 add $0xc8,%rax 0.00 : 1953: ea 48 mov %edx,(%rax) 0.00 : 1955: 89 ef e8 f4 fa ff ff cmpl $0x4,0x3914(%rbp,%r12,4) 0.00 : 195c: 89 c6 0.00 : 195e: 48 8b 45 00 48 8d 8b mov 0x1008(%rbp,%r12,8),%rax 0.00 : 1965: 00 0.00 : 1966: 05 00 00 8b 54 cd je 1a20 0.00 : 196c: 0c 48 05 cc 00 00 00 cmpq $0x0,0x3010(%rbp,%r12,8) 0.00 : 1973: 89 10 0.00 : 1975: 48 8b 45 00 8b 54 jne 1c55 0.00 : 197b: cd 08 48 05 c8 00 00 cmp %r13d,0x4550(%rbp) 0.00 : 1982: 00 89 10 42 83 bc je 1ba5 0.00 : 1988: a5 14 39 mov %r13d,%esi 0.00 : 198b: 00 00 04 mov %rbp,%rdi 0.00 : 198e: 4a 8b 84 e5 08 callq 1220 0.00 : 1993: 10 00 test %eax,%eax 0.00 : 1995: 00 0f je 19d0 0.00 : 1997: 84 b4 00 00 00 4a 83 mov 0x3d38(%rbp),%rax 0.00 : 199e: bc e5 10 test %rax,%rax 0.00 : 19a1: 30 00 00 00 0f 85 je 1d3f 0.00 : 19a7: da 02 00 00 44 39 mov 0xdc(%rax),%esi 0.00 : 19ad: ad 50 45 00 00 0f 84 mov $0x0,%r8 0.00 : 19b4: 1d 02 00 00 44 mov $0xf,%ecx 0.00 : 19b9: 89 ee 48 89 ef mov $0x6,%edx 0.00 : 19be: e8 8d f8 ff ff 85 c0 mov $0x0,%rdi 0.00 : 19c5: 74 39 xor %eax,%eax 0.00 : 19c7: 48 8b 85 38 3d callq 19cc 0.00 : 19cc: 00 00 48 85 nopl 0x0(%rax) 0.00 : 19d0: c0 0f 84 98 mov 0x0(%rbp),%rax 0.00 : 19d4: 03 00 00 8b add $0x30,%rax 0.00 : 19d8: b0 dc mov (%rax),%eax 0.00 : 19da: 00 00 test $0x8,%al 0.00 : 19dc: 00 49 c7 c0 00 00 jne 18a0 0.00 : 19e2: 00 00 b9 0f 00 mov $0x1,%edx 0.00 : 19e7: 00 00 ba 06 00 00 00 mov 0x3d38(%rbp),%rax 0.00 : 19ee: 48 c7 c7 00 mov 0x58(%rax),%rax 0.00 : 19f2: 00 00 00 incw (%rax) 0.00 : 19f5: 31 c0 e8 00 add $0x10,%rsp 0.00 : 19f9: 00 00 mov %edx,%eax 0.00 : 19fb: 00 pop %rbx 0.00 : 19fc: 0f pop %rbp 0.00 : 19fd: 1f 40 pop %r12 0.00 : 19ff: 00 48 pop %r13 0.00 : 1a01: 8b 45 pop %r14 0.00 : 1a03: 00 retq 0.00 : 1a04: 48 83 c0 30 nopl 0x0(%rax) 0.00 : 1a08: 8b 00 a8 mov %edx,%r13d 0.00 : 1a0b: 08 0f xor %esi,%esi 0.00 : 1a0d: 85 be fe ff shr $0x10,%r13d 0.00 : 1a11: ff ba 01 mov %r13d,%r12d 0.00 : 1a14: 00 00 00 48 8b jmpq 1955 0.00 : 1a19: 85 38 3d 00 00 48 8b nopl 0x0(%rax) 0.00 : 1a20: 40 58 66 ff 00 48 83 mov 0x3010(%rbp,%r12,8),%rdx 0.00 : 1a27: c4 0.00 : 1a28: 10 89 d0 test %rdx,%rdx 0.00 : 1a2b: 5b 5d 41 5c 41 5d je 197b 0.00 : 1a31: 41 5e test %esi,%esi 0.00 : 1a33: c3 0f jne 1a3f 0.00 : 1a35: 1f 40 00 41 89 d5 31 movl $0x0,0xe0(%rdx) 0.00 : 1a3c: f6 41 c1 0.00 : 1a3f: ed 10 45 89 cmpl $0x1,0x60(%rdx) 0.00 : 1a43: ec e9 jbe 1ab0 0.00 : 1a45: 3c ff ff ff 0f 1f 80 movl $0x8,0x3914(%rbp,%r12,4) 0.00 : 1a4c: 00 00 00 00 4a 0.00 : 1a51: 8b 94 e5 10 30 00 00 movzbl 0x3911(%rbp),%eax 0.00 : 1a58: 48 85 d2 movslq %r13d,%rbx 0.00 : 1a5b: 0f 84 4a ff ff ff 85 mov %r13b,0x3810(%rbp,%rax,1) 0.00 : 1a62: f6 0.00 : 1a63: 75 0a c7 82 e0 00 00 movl $0x10,0x3914(%rbp,%rbx,4) 0.00 : 1a6a: 00 00 00 00 0.00 : 1a6e: 00 83 7a 60 01 76 6b addb $0x1,0x3911(%rbp) 0.00 : 1a75: 42 c7 84 a5 14 39 00 subl $0x1,0x3d14(%rbp) 0.00 : 1a7c: 00 08 00 00 00 0f b6 mov 0x3010(%rbp,%r12,8),%rax 0.00 : 1a83: 85 0.00 : 1a84: 11 39 00 mov %rax,%rdi 0.00 : 1a87: 00 49 63 dd 44 88 callq *0x90(%rax) 0.00 : 1a8d: ac 05 10 38 00 00 c7 mov 0x3010(%rbp,%rbx,8),%rdi 0.00 : 1a94: 84 0.00 : 1a95: 9d 14 39 00 00 10 mov 0xd0(%rdi),%eax 0.00 : 1a9b: 00 00 00 cmp $0x2,%eax 0.00 : 1a9e: 80 85 11 39 00 00 jne 19d0 0.00 : 1aa4: 01 83 ad 14 3d callq 1aa9 0.00 : 1aa9: 00 00 01 4a 8b jmpq 19d0 0.00 : 1aae: 84 e5 xchg %ax,%ax 0.00 : 1ab0: 10 30 00 00 48 89 c7 cmpb $0x0,0x84(%rax) 0.00 : 1ab7: ff 90 jne 1a45 0.00 : 1ab9: 90 00 00 00 48 8b bc mov 0xa0(%rax),%rcx 0.00 : 1ac0: dd 10 30 00 00 8b 87 mov 0x3010(%rbp,%r12,8),%rax 0.00 : 1ac7: d0 0.00 : 1ac8: 00 00 00 mov 0x68(%rax),%eax 0.00 : 1acb: 83 f8 02 cmp %rax,%rcx 0.00 : 1ace: 0f 85 2c ff ff ff jae 1a45 0.00 : 1ad4: e8 00 00 mov 0x68(%rdx),%eax 0.00 : 1ad7: 00 00 sub %ecx,%eax 0.00 : 1ad9: e9 22 ff mov %eax,0x6c(%rdx) 0.00 : 1adc: ff ff 66 90 80 jmpq 1a45 0.00 : 1ae1: b8 84 00 00 00 00 75 nopl 0x0(%rax) 0.00 : 1ae8: 8c 48 8b 88 a0 00 00 cmp %r13d,0x4550(%rbp) 0.00 : 1aef: 00 4a 8b 84 e5 10 je 1bc8 0.00 : 1af5: 30 00 00 8b 40 68 mov $0x1,%r8d 0.00 : 1afb: 48 39 xor %ecx,%ecx 0.00 : 1afd: c1 0f 83 mov %r13d,%edx 0.00 : 1b00: 71 ff ff mov %rbp,%rdi 0.00 : 1b03: ff 8b 42 68 29 callq 1420 0.00 : 1b08: c8 89 mov %eax,%esi 0.00 : 1b0a: 42 6c e9 64 ff jmpq 192e 0.00 : 1b0f: ff nop 0.00 : 1b10: ff 0f 1f xor %si,%si 0.00 : 1b13: 80 00 00 mov %r13d,%r12d 0.00 : 1b16: 00 00 44 39 ad jmpq 1955 0.00 : 1b1b: 50 45 00 00 mov 0x0(%rbp),%rax 0.00 : 1b1f: 0f 84 d3 00 00 00 add $0x9c,%rax 0.00 : 1b25: 41 b8 mov (%rax),%eax 0.00 : 1b27: 01 00 00 00 31 test $0x200000,%eax 0.00 : 1b2c: c9 44 89 ea 48 89 je 1ca3 0.00 : 1b32: ef e8 18 f9 ff ff 89 mov 0x3d38(%rbp),%rax 0.00 : 1b39: c6 e9 1f test %rax,%rax 0.00 : 1b3c: fe ff ff 90 66 31 je 1d87 0.00 : 1b42: f6 45 89 ec e9 3a mov 0xdc(%rax),%esi 0.00 : 1b48: fe ff ff 48 8b mov $0xd,%ecx 0.00 : 1b4d: 45 00 48 05 9c 00 00 mov $0x0,%r8 0.00 : 1b54: 00 8b 00 a9 00 mov $0x6,%edx 0.00 : 1b59: 00 20 00 0f 84 71 01 mov $0x0,%rdi 0.00 : 1b60: 00 00 xor %eax,%eax 0.00 : 1b62: 48 8b 85 38 3d callq 1b67 0.00 : 1b67: 00 00 48 85 c0 mov $0x1,%ecx 0.00 : 1b6c: 0f 84 45 02 mov 0x0(%rbp),%rax 0.00 : 1b70: 00 00 8b b0 dc mov $0xffffffff,%edx 0.00 : 1b75: 00 00 00 b9 0d 00 add $0xa0,%rax 0.00 : 1b7b: 00 00 mov %edx,(%rax) 0.00 : 1b7d: 49 c7 c0 00 mov 0x0(%rbp),%rax 0.00 : 1b81: 00 00 00 ba 06 00 add $0xa0,%rax 0.00 : 1b87: 00 00 mov (%rax),%eax 0.00 : 1b89: 48 c7 test %ecx,%ecx 0.00 : 1b8b: c7 00 00 00 00 31 je 1883 0.00 : 1b91: c0 e8 00 00 mov 0x0(%rbp),%rax 0.00 : 1b95: 00 00 b9 01 add $0x34,%rax 0.00 : 1b99: 00 00 mov %edx,(%rax) 0.00 : 1b9b: 00 48 8b 45 00 mov $0x1,%edx 0.00 : 1ba0: ba ff ff ff ff jmpq 19e7 0.00 : 1ba5: 48 05 a0 00 00 00 89 movl $0xffffffff,0x4550(%rbp) 0.00 : 1bac: 10 48 8b 0.00 : 1baf: 45 00 xor %ecx,%ecx 0.00 : 1bb1: 48 05 a0 00 00 mov $0x1,%edx 0.00 : 1bb6: 00 8b 00 85 c9 mov $0x3,%esi 0.00 : 1bbb: 0f 84 f2 mov %r14,%rdi 0.00 : 1bbe: fc ff ff 48 8b callq 1bc3 0.00 : 1bc3: 45 00 48 83 c0 jmpq 19d0 0.00 : 1bc8: 34 89 10 mov (%rcx),%rdx 0.00 : 1bcb: ba 01 00 00 00 e9 42 mov 0x1008(%rbp,%r12,8),%rax 0.00 : 1bd2: fe 0.00 : 1bd3: ff ff xor %esi,%esi 0.00 : 1bd5: c7 85 50 mov %rdx,(%rax) 0.00 : 1bd8: 45 00 00 ff mov 0x8(%rcx),%rdx 0.00 : 1bdc: ff ff ff 31 mov %rdx,0x8(%rax) 0.00 : 1be0: c9 ba 01 00 mov 0x10(%rcx),%rdx 0.00 : 1be4: 00 00 be 03 mov %rdx,0x10(%rax) 0.00 : 1be8: 00 00 00 4c mov 0x18(%rcx),%rdx 0.00 : 1bec: 89 f7 e8 00 mov %rdx,0x18(%rax) 0.00 : 1bf0: 00 00 00 e9 mov 0x20(%rcx),%rdx 0.00 : 1bf4: 08 fe ff ff mov %rdx,0x20(%rax) 0.00 : 1bf8: 48 8b 11 4a mov 0x28(%rcx),%rdx 0.00 : 1bfc: 8b 84 e5 08 mov %rdx,0x28(%rax) 0.00 : 1c00: 10 00 00 31 mov 0x30(%rcx),%rdx 0.00 : 1c04: f6 48 89 10 mov %rdx,0x30(%rax) 0.00 : 1c08: 48 8b 51 08 mov 0x38(%rcx),%rdx 0.00 : 1c0c: 48 89 50 08 mov %rdx,0x38(%rax) 0.00 : 1c10: 48 8b 51 10 mov 0x40(%rcx),%rdx 0.00 : 1c14: 48 89 50 10 mov %rdx,0x40(%rax) 0.00 : 1c18: 48 8b 51 18 mov 0x48(%rcx),%rdx 0.00 : 1c1c: 48 89 50 18 mov %rdx,0x48(%rax) 0.00 : 1c20: 48 8b 51 20 mov 0x50(%rcx),%rdx 0.00 : 1c24: 48 89 50 20 mov %rdx,0x50(%rax) 0.00 : 1c28: 48 8b 51 28 mov 0x58(%rcx),%rdx 0.00 : 1c2c: 48 89 50 28 mov %rdx,0x58(%rax) 0.00 : 1c30: 48 8b 51 30 mov 0x60(%rcx),%rdx 0.00 : 1c34: 48 89 50 30 mov %rdx,0x60(%rax) 0.00 : 1c38: 48 8b 51 38 mov 0x68(%rcx),%rdx 0.00 : 1c3c: 48 89 50 38 mov %rdx,0x68(%rax) 0.00 : 1c40: 48 8b 51 40 mov 0x70(%rcx),%rdx 0.00 : 1c44: 48 89 50 40 mov %rdx,0x70(%rax) 0.00 : 1c48: 48 8b 51 48 mov 0x78(%rcx),%rdx 0.00 : 1c4c: 48 89 50 48 mov %rdx,0x78(%rax) 0.00 : 1c50: 48 8b 51 50 48 jmpq 192e 0.00 : 1c55: 89 50 50 48 8b 51 58 mov 0x3d38(%rbp),%rax 0.00 : 1c5c: 48 89 50 test %rax,%rax 0.00 : 1c5f: 58 48 8b 51 60 48 je 1d63 0.00 : 1c65: 89 50 60 48 8b 51 mov 0xdc(%rax),%esi 0.00 : 1c6b: 68 48 89 50 68 48 8b mov $0x0,%r8 0.00 : 1c72: 51 70 48 89 50 mov $0xe,%ecx 0.00 : 1c77: 70 48 8b 51 78 mov $0x6,%edx 0.00 : 1c7c: 48 89 50 78 e9 d9 fc mov $0x0,%rdi 0.00 : 1c83: ff ff xor %eax,%eax 0.00 : 1c85: 48 8b 85 38 3d callq 1c8a 0.00 : 1c8a: 00 00 48 85 mov 0x0(%rbp),%rax 0.00 : 1c8e: c0 0f 84 fe 00 mov $0xffffffff,%edx 0.00 : 1c93: 00 00 8b b0 add $0x34,%rax 0.00 : 1c97: dc 00 mov %edx,(%rax) 0.00 : 1c99: 00 00 49 c7 c0 mov $0x1,%edx 0.00 : 1c9e: 00 00 00 00 b9 jmpq 19e7 0.00 : 1ca3: 0e 00 00 00 ba test $0x40000,%eax 0.00 : 1ca8: 06 00 00 00 48 c7 je 1d38 0.00 : 1cae: c7 00 00 00 00 31 c0 lock btsl $0x4,(%r12) 0.00 : 1cb5: e8 00 sbb %eax,%eax 0.00 : 1cb7: 00 00 test %eax,%eax 0.00 : 1cb9: 00 48 jne 1d38 0.00 : 1cbb: 8b 45 00 ba ff ff ff movzbl 0x3910(%rbp),%eax 0.00 : 1cc2: ff 48 83 mov %rbp,%rdi 0.00 : 1cc5: c0 34 89 10 ba 01 00 movzbl 0x3810(%rbp,%rax,1),%eax 0.00 : 1ccc: 00 0.00 : 1ccd: 00 e9 44 fd mov %eax,0xc(%rsp) 0.00 : 1cd1: ff ff cltq 0.00 : 1cd3: a9 00 00 04 00 0f 84 addb $0x1,0x3910(%rbp) 0.00 : 1cda: 8a 00 00 00 f0 41 0f movl $0x2,0x3914(%rbp,%rax,4) 0.00 : 1ce1: ba 2c 24 04 0.00 : 1ce5: 19 c0 85 c0 mov 0xc(%rsp),%esi 0.00 : 1ce9: 75 7d 0f b6 85 callq 900 0.00 : 1cee: 10 39 test %eax,%eax 0.00 : 1cf0: 00 00 je 1d38 0.00 : 1cf2: 48 89 ef 0f mov 0xc(%rsp),%eax 0.00 : 1cf6: b6 84 05 10 38 00 00 movl $0x8,0x3914(%rbp,%rax,4) 0.00 : 1cfd: 89 44 24 0c 0.00 : 1d01: 48 98 80 85 10 movslq 0xc(%rsp),%rax 0.00 : 1d06: 39 00 00 01 c7 84 85 movzbl 0x3911(%rbp),%edx 0.00 : 1d0d: 14 39 00 00 02 00 00 mov %al,0x3810(%rbp,%rdx,1) 0.00 : 1d14: 00 8b 74 24 0c e8 12 movl $0x10,0x3914(%rbp,%rax,4) 0.00 : 1d1b: ec ff ff 85 0.00 : 1d1f: c0 74 46 8b 44 24 0c addb $0x1,0x3911(%rbp) 0.00 : 1d26: c7 84 85 14 39 00 00 lock andb $0xef,0x3d40(%rbp) 0.00 : 1d2d: 08 0.00 : 1d2e: 00 00 xor %ecx,%ecx 0.00 : 1d30: 00 48 63 44 24 jmpq 1b6c 0.00 : 1d35: 0c 0f b6 nopl (%rax) 0.00 : 1d38: 95 11 xor %ecx,%ecx 0.00 : 1d3a: 39 00 00 88 84 jmpq 1b6c 0.00 : 1d3f: 15 10 38 00 00 c7 84 mov $0x0,%rcx 0.00 : 1d46: 85 14 39 00 00 mov $0xf,%edx 0.00 : 1d4b: 10 00 00 00 80 mov $0x6,%esi 0.00 : 1d50: 85 11 39 00 00 01 f0 mov $0x0,%rdi 0.00 : 1d57: 80 a5 xor %eax,%eax 0.00 : 1d59: 40 3d 00 00 ef callq 1d5e 0.00 : 1d5e: 31 c9 e9 37 fe jmpq 19d0 0.00 : 1d63: ff ff 0f 1f 00 31 c9 mov $0x0,%rcx 0.00 : 1d6a: e9 2d fe ff ff mov $0xe,%edx 0.00 : 1d6f: 48 c7 c1 00 00 mov $0x6,%esi 0.00 : 1d74: 00 00 ba 0f 00 00 00 mov $0x0,%rdi 0.00 : 1d7b: be 06 xor %eax,%eax 0.00 : 1d7d: 00 00 00 48 c7 callq 1d82 0.00 : 1d82: c7 00 00 00 00 jmpq 1c8a 0.00 : 1d87: 31 c0 e8 00 00 00 00 mov $0x0,%rcx 0.00 : 1d8e: e9 6d fc ff ff mov $0xd,%edx 0.00 : 1d93: 48 c7 c1 00 00 mov $0x6,%esi 0.00 : 1d98: 00 00 ba 0e 00 00 00 mov $0x0,%rdi 0.00 : 1d9f: be 06 xor %eax,%eax 0.00 : 1da1: 00 00 00 48 c7 callq 1da6 0.00 : 1da6: c7 00 00 00 00 mov $0x1,%ecx 0.00 : 1dab: 31 c0 e8 00 00 jmpq 1b6c : 1db0: 00 00 push %r13 : 1db2: e9 03 ff mov %esi,%r13d : 1db5: ff ff push %r12 : 1db7: 48 push %rbp : 1db8: c7 c1 00 mov %rdi,%rbp : 1dbb: 00 00 00 ba 0d 00 00 lea 0x90(%rdi),%rdi : 1dc2: 00 push %rbx : 1dc3: be 06 00 00 sub $0x38,%rsp : 1dc7: 00 48 c7 c7 00 callq 1dcc : 1dcc: 00 00 00 31 c0 e8 00 lea 0x670(%rax),%rbx : 1dd3: 00 00 00 mov %rax,%r12 : 1dd6: b9 01 00 00 00 e9 bc mov $0x0,%rdi : 1ddd: fd ff ff 41 55 41 89 mov 0x3d38(%rbx),%rax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000054990 <_IO_vfscanf>: 0.00 : 54990: 55 push %rbp 0.00 : 54991: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 54998: 00 00 0.00 : 5499a: 49 89 fa mov %rdi,%r10 0.00 : 5499d: 48 89 e5 mov %rsp,%rbp 0.00 : 549a0: 41 57 push %r15 0.00 : 549a2: 41 56 push %r14 0.00 : 549a4: 41 55 push %r13 0.00 : 549a6: 41 54 push %r12 0.00 : 549a8: 53 push %rbx 0.00 : 549a9: 48 89 f3 mov %rsi,%rbx 0.00 : 549ac: 48 81 ec c8 03 00 00 sub $0x3c8,%rsp 0.00 : 549b3: 48 89 95 f8 fc ff ff mov %rdx,-0x308(%rbp) 0.00 : 549ba: 48 8b 15 c7 d3 31 00 mov 0x31d3c7(%rip),%rdx # 371d88 <_DYNAMIC+0x228> 0.00 : 549c1: 48 89 85 c0 fc ff ff mov %rax,-0x340(%rbp) 0.00 : 549c8: 48 89 8d f0 fc ff ff mov %rcx,-0x310(%rbp) 0.00 : 549cf: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 549d6: 48 8b 14 10 mov (%rax,%rdx,1),%rdx 0.00 : 549da: 48 89 95 08 fd ff ff mov %rdx,-0x2f8(%rbp) 0.00 : 549e1: 48 8b 0a mov (%rdx),%rcx 0.00 : 549e4: 48 89 8d 10 fd ff ff mov %rcx,-0x2f0(%rbp) 0.00 : 549eb: 48 8b 06 mov (%rsi),%rax 0.00 : 549ee: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : 549f5: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 549f9: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 54a00: 48 8b 46 10 mov 0x10(%rsi),%rax 0.00 : 54a04: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : 54a0b: 8b 87 c0 00 00 00 mov 0xc0(%rdi),%eax 0.00 : 54a11: 85 c0 test %eax,%eax 0.00 : 54a13: 0f 85 27 02 00 00 jne 54c40 <_IO_vfscanf+0x2b0> 0.00 : 54a19: c7 87 c0 00 00 00 ff movl $0xffffffff,0xc0(%rdi) 0.00 : 54a20: ff ff ff 0.00 : 54a23: 41 8b 12 mov (%r10),%edx 0.00 : 54a26: f6 c2 04 test $0x4,%dl 0.00 : 54a29: 0f 85 59 1e 00 00 jne 56888 <_IO_vfscanf+0x1ef8> 0.00 : 54a2f: 48 85 db test %rbx,%rbx 0.00 : 54a32: 0f 84 c1 44 00 00 je 58ef9 <_IO_vfscanf+0x4569> 0.00 : 54a38: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 54a3f: 8b 3d 6b 2c 32 00 mov 0x322c6b(%rip),%edi # 3776b0 <__libc_pthread_functions_init> 0.00 : 54a45: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 54a49: 48 8b 70 40 mov 0x40(%rax),%rsi 0.00 : 54a4d: 48 89 b5 28 fd ff ff mov %rsi,-0x2d8(%rbp) 0.00 : 54a54: 48 8b 40 48 mov 0x48(%rax),%rax 0.00 : 54a58: 48 89 85 30 fd ff ff mov %rax,-0x2d0(%rbp) 0.00 : 54a5f: 80 38 00 cmpb $0x0,(%rax) 0.00 : 54a62: b8 00 00 00 00 mov $0x0,%eax 0.00 : 54a67: 48 0f 45 85 30 fd ff cmovne -0x2d0(%rbp),%rax 0.00 : 54a6e: ff 0.00 : 54a6f: 85 ff test %edi,%edi 0.00 : 54a71: 89 bd 58 fd ff ff mov %edi,-0x2a8(%rbp) 0.00 : 54a77: 48 89 85 30 fd ff ff mov %rax,-0x2d0(%rbp) 0.00 : 54a7e: 0f 85 08 12 00 00 jne 55c8c <_IO_vfscanf+0x12fc> 0.00 : 54a84: 48 8b 05 bd d4 31 00 mov 0x31d4bd(%rip),%rax # 371f48 <_DYNAMIC+0x3e8> 0.00 : 54a8b: 4c 89 95 48 ff ff ff mov %r10,-0xb8(%rbp) 0.00 : 54a92: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 54a99: 66 85 d2 test %dx,%dx 0.00 : 54a9c: 0f 89 09 06 00 00 jns 550ab <_IO_vfscanf+0x71b> 0.00 : 54aa2: 48 8d 8d 20 fe ff ff lea -0x1e0(%rbp),%rcx 0.00 : 54aa9: 48 8d 45 c0 lea -0x40(%rbp),%rax 0.00 : 54aad: 48 8d 95 f0 fe ff ff lea -0x110(%rbp),%rdx 0.00 : 54ab4: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 54abb: 00 0.00 : 54abc: c7 85 00 fd ff ff 00 movl $0x0,-0x300(%rbp) 0.00 : 54ac3: 00 00 00 0.00 : 54ac6: 45 31 ff xor %r15d,%r15d 0.00 : 54ac9: 48 89 8d 40 fc ff ff mov %rcx,-0x3c0(%rbp) 0.00 : 54ad0: 48 81 c1 bb 00 00 00 add $0xbb,%rcx 0.00 : 54ad7: 48 89 85 c8 fc ff ff mov %rax,-0x338(%rbp) 0.00 : 54ade: 48 c7 85 d0 fd ff ff movq $0x0,-0x230(%rbp) 0.00 : 54ae5: 00 00 00 00 0.00 : 54ae9: c7 85 1c fd ff ff 00 movl $0x0,-0x2e4(%rbp) 0.00 : 54af0: 00 00 00 0.00 : 54af3: 45 31 ed xor %r13d,%r13d 0.00 : 54af6: 48 c7 85 38 fd ff ff movq $0x0,-0x2c8(%rbp) 0.00 : 54afd: 00 00 00 00 0.00 : 54b01: 48 c7 85 40 fd ff ff movq $0x0,-0x2c0(%rbp) 0.00 : 54b08: 00 00 00 00 0.00 : 54b0c: 48 c7 85 e0 fd ff ff movq $0x0,-0x220(%rbp) 0.00 : 54b13: 00 00 00 00 0.00 : 54b17: 48 c7 85 48 fd ff ff movq $0x0,-0x2b8(%rbp) 0.00 : 54b1e: 00 00 00 00 0.00 : 54b22: 48 c7 85 e8 fd ff ff movq $0x0,-0x218(%rbp) 0.00 : 54b29: 00 00 00 00 0.00 : 54b2d: 48 c7 85 f0 fd ff ff movq $0x0,-0x210(%rbp) 0.00 : 54b34: 00 00 00 00 0.00 : 54b38: 48 c7 85 50 fd ff ff movq $0x0,-0x2b0(%rbp) 0.00 : 54b3f: 00 00 00 00 0.00 : 54b43: 48 89 95 48 fc ff ff mov %rdx,-0x3b8(%rbp) 0.00 : 54b4a: 48 89 8d 38 fc ff ff mov %rcx,-0x3c8(%rbp) 0.00 : 54b51: eb 5d jmp 54bb0 <_IO_vfscanf+0x220> 0.00 : 54b53: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54b58: 48 8d 53 01 lea 0x1(%rbx),%rdx 0.00 : 54b5c: 41 80 fc 25 cmp $0x25,%r12b 0.00 : 54b60: 48 89 95 c8 fd ff ff mov %rdx,-0x238(%rbp) 0.00 : 54b67: 0f 84 b3 01 00 00 je 54d20 <_IO_vfscanf+0x390> 0.00 : 54b6d: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 54b74: 41 0f b6 d4 movzbl %r12b,%edx 0.00 : 54b78: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 54b7c: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 54b81: 0f 84 e9 00 00 00 je 54c70 <_IO_vfscanf+0x2e0> 0.00 : 54b87: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 54b8e: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 54b95: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 54b9b: 48 8b 9d c8 fd ff ff mov -0x238(%rbp),%rbx 0.00 : 54ba2: 4c 89 9d d0 fd ff ff mov %r11,-0x230(%rbp) 0.00 : 54ba9: 4c 89 a5 e8 fd ff ff mov %r12,-0x218(%rbp) 0.00 : 54bb0: 0f b6 03 movzbl (%rbx),%eax 0.00 : 54bb3: 84 c0 test %al,%al 0.00 : 54bb5: 0f 84 6a 20 00 00 je 56c25 <_IO_vfscanf+0x2295> 0.00 : 54bbb: a8 80 test $0x80,%al 0.00 : 54bbd: 41 89 c4 mov %eax,%r12d 0.00 : 54bc0: 74 96 je 54b58 <_IO_vfscanf+0x1c8> 0.00 : 54bc2: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 54bc9: 48 89 df mov %rbx,%rdi 0.00 : 54bcc: e8 df bf 02 00 callq 80bb0 <__GI_strlen> 0.00 : 54bd1: 48 8b 95 c8 fc ff ff mov -0x338(%rbp),%rdx 0.00 : 54bd8: 48 89 c6 mov %rax,%rsi 0.00 : 54bdb: 48 89 df mov %rbx,%rdi 0.00 : 54bde: e8 8d 81 03 00 callq 8cd70 <__mbrlen> 0.00 : 54be3: 85 c0 test %eax,%eax 0.00 : 54be5: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 54bec: 0f 8e be 0f 00 00 jle 55bb0 <_IO_vfscanf+0x1220> 0.00 : 54bf2: 41 83 c7 01 add $0x1,%r15d 0.00 : 54bf6: 0f 85 79 67 00 00 jne 5b375 <_IO_vfscanf+0x69e5> 0.00 : 54bfc: 48 8b 05 35 d2 31 00 mov 0x31d235(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 54c03: 8b b5 1c fd ff ff mov -0x2e4(%rbp),%esi 0.00 : 54c09: 48 8b 9d c0 fc ff ff mov -0x340(%rbp),%rbx 0.00 : 54c10: 89 34 03 mov %esi,(%rbx,%rax,1) 0.00 : 54c13: 44 8b 85 00 fd ff ff mov -0x300(%rbp),%r8d 0.00 : 54c1a: 45 85 c0 test %r8d,%r8d 0.00 : 54c1d: 0f 85 f6 04 00 00 jne 55119 <_IO_vfscanf+0x789> 0.00 : 54c23: c7 85 00 fd ff ff ff movl $0xffffffff,-0x300(%rbp) 0.00 : 54c2a: ff ff ff 0.00 : 54c2d: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 54c32: e9 a9 02 00 00 jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 54c37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54c3e: 00 00 0.00 : 54c40: 83 c0 01 add $0x1,%eax 0.00 : 54c43: 0f 84 da fd ff ff je 54a23 <_IO_vfscanf+0x93> 0.00 : 54c49: c7 85 00 fd ff ff ff movl $0xffffffff,-0x300(%rbp) 0.00 : 54c50: ff ff ff 0.00 : 54c53: 8b 85 00 fd ff ff mov -0x300(%rbp),%eax 0.00 : 54c59: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 54c5d: 5b pop %rbx 0.00 : 54c5e: 41 5c pop %r12 0.00 : 54c60: 41 5d pop %r13 0.00 : 54c62: 41 5e pop %r14 0.00 : 54c64: 41 5f pop %r15 0.00 : 54c66: c9 leaveq 0.00 : 54c67: c3 retq 0.00 : 54c68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54c6f: 00 0.00 : 54c70: 41 83 c7 01 add $0x1,%r15d 0.00 : 54c74: 74 86 je 54bfc <_IO_vfscanf+0x26c> 0.00 : 54c76: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 54c7a: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 54c7e: 0f 83 d6 3a 00 00 jae 5875a <_IO_vfscanf+0x3dca> 0.00 : 54c84: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 54c88: 48 83 c0 01 add $0x1,%rax 0.00 : 54c8c: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 54c90: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 54c97: 49 83 c3 01 add $0x1,%r11 0.00 : 54c9b: 45 85 ed test %r13d,%r13d 0.00 : 54c9e: 74 40 je 54ce0 <_IO_vfscanf+0x350> 0.00 : 54ca0: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 54ca7: 49 63 d7 movslq %r15d,%rdx 0.00 : 54caa: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 54cae: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 54cb3: 74 2b je 54ce0 <_IO_vfscanf+0x350> 0.00 : 54cb5: 41 83 c7 01 add $0x1,%r15d 0.00 : 54cb9: 74 45 je 54d00 <_IO_vfscanf+0x370> 0.00 : 54cbb: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 54cbf: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 54cc3: 0f 83 21 22 00 00 jae 56eea <_IO_vfscanf+0x255a> 0.00 : 54cc9: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 54ccd: 48 83 c0 01 add $0x1,%rax 0.00 : 54cd1: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 54cd5: 49 83 c3 01 add $0x1,%r11 0.00 : 54cd9: eb c5 jmp 54ca0 <_IO_vfscanf+0x310> 0.00 : 54cdb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 54ce0: 41 0f b6 c4 movzbl %r12b,%eax 0.00 : 54ce4: 44 39 f8 cmp %r15d,%eax 0.00 : 54ce7: 0f 85 87 10 00 00 jne 55d74 <_IO_vfscanf+0x13e4> 0.00 : 54ced: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 54cf4: 45 31 ed xor %r13d,%r13d 0.00 : 54cf7: e9 9f fe ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 54cfc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 54d00: 48 8b 05 31 d1 31 00 mov 0x31d131(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 54d07: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 54d0d: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 54d14: 89 14 07 mov %edx,(%rdi,%rax,1) 0.00 : 54d17: e9 f7 fe ff ff jmpq 54c13 <_IO_vfscanf+0x283> 0.00 : 54d1c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 54d20: 0f b6 53 01 movzbl 0x1(%rbx),%edx 0.00 : 54d24: c7 85 5c fd ff ff 00 movl $0x0,-0x2a4(%rbp) 0.00 : 54d2b: 00 00 00 0.00 : 54d2e: 0f b6 c2 movzbl %dl,%eax 0.00 : 54d31: 83 e8 30 sub $0x30,%eax 0.00 : 54d34: 83 f8 09 cmp $0x9,%eax 0.00 : 54d37: 0f 87 82 02 00 00 ja 54fbf <_IO_vfscanf+0x62f> 0.00 : 54d3d: 89 85 5c fd ff ff mov %eax,-0x2a4(%rbp) 0.00 : 54d43: 0f b6 73 02 movzbl 0x2(%rbx),%esi 0.00 : 54d47: 48 8d 4b 02 lea 0x2(%rbx),%rcx 0.00 : 54d4b: 40 0f b6 d6 movzbl %sil,%edx 0.00 : 54d4f: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 54d52: 83 f8 09 cmp $0x9,%eax 0.00 : 54d55: 77 2f ja 54d86 <_IO_vfscanf+0x3f6> 0.00 : 54d57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54d5e: 00 00 0.00 : 54d60: 8b 9d 5c fd ff ff mov -0x2a4(%rbp),%ebx 0.00 : 54d66: 48 83 c1 01 add $0x1,%rcx 0.00 : 54d6a: 8d 04 9b lea (%rbx,%rbx,4),%eax 0.00 : 54d6d: 8d 44 42 d0 lea -0x30(%rdx,%rax,2),%eax 0.00 : 54d71: 89 85 5c fd ff ff mov %eax,-0x2a4(%rbp) 0.00 : 54d77: 0f b6 31 movzbl (%rcx),%esi 0.00 : 54d7a: 40 0f b6 d6 movzbl %sil,%edx 0.00 : 54d7e: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 54d81: 83 f8 09 cmp $0x9,%eax 0.00 : 54d84: 76 da jbe 54d60 <_IO_vfscanf+0x3d0> 0.00 : 54d86: 40 80 fe 24 cmp $0x24,%sil 0.00 : 54d8a: 49 89 c8 mov %rcx,%r8 0.00 : 54d8d: 0f 84 1d 02 00 00 je 54fb0 <_IO_vfscanf+0x620> 0.00 : 54d93: 8b bd 5c fd ff ff mov -0x2a4(%rbp),%edi 0.00 : 54d99: 89 f1 mov %esi,%ecx 0.00 : 54d9b: c7 85 5c fd ff ff 00 movl $0x0,-0x2a4(%rbp) 0.00 : 54da2: 00 00 00 0.00 : 54da5: c7 85 04 fd ff ff 00 movl $0x0,-0x2fc(%rbp) 0.00 : 54dac: 00 00 00 0.00 : 54daf: 89 bd dc fd ff ff mov %edi,-0x224(%rbp) 0.00 : 54db5: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 54dbb: 85 c0 test %eax,%eax 0.00 : 54dbd: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 54dc2: 0f 45 85 dc fd ff ff cmovne -0x224(%rbp),%eax 0.00 : 54dc9: 89 85 dc fd ff ff mov %eax,-0x224(%rbp) 0.00 : 54dcf: 8d 41 b4 lea -0x4c(%rcx),%eax 0.00 : 54dd2: 4d 8d 70 01 lea 0x1(%r8),%r14 0.00 : 54dd6: 3c 2e cmp $0x2e,%al 0.00 : 54dd8: 4c 89 b5 c8 fd ff ff mov %r14,-0x238(%rbp) 0.00 : 54ddf: 0f 86 b3 02 00 00 jbe 55098 <_IO_vfscanf+0x708> 0.00 : 54de5: 89 c8 mov %ecx,%eax 0.00 : 54de7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54dee: 00 00 0.00 : 54df0: 84 c0 test %al,%al 0.00 : 54df2: 0f 84 e0 00 00 00 je 54ed8 <_IO_vfscanf+0x548> 0.00 : 54df8: 4d 8d 70 01 lea 0x1(%r8),%r14 0.00 : 54dfc: 89 c1 mov %eax,%ecx 0.00 : 54dfe: 41 89 cc mov %ecx,%r12d 0.00 : 54e01: 4c 89 b5 c8 fd ff ff mov %r14,-0x238(%rbp) 0.00 : 54e08: 45 85 ed test %r13d,%r13d 0.00 : 54e0b: 75 29 jne 54e36 <_IO_vfscanf+0x4a6> 0.00 : 54e0d: 41 80 fc 5b cmp $0x5b,%r12b 0.00 : 54e11: 0f 84 ad 00 00 00 je 54ec4 <_IO_vfscanf+0x534> 0.00 : 54e17: 41 80 fc 63 cmp $0x63,%r12b 0.00 : 54e1b: 0f 84 a3 00 00 00 je 54ec4 <_IO_vfscanf+0x534> 0.00 : 54e21: 41 80 fc 43 cmp $0x43,%r12b 0.00 : 54e25: 0f 84 99 00 00 00 je 54ec4 <_IO_vfscanf+0x534> 0.00 : 54e2b: 41 80 fc 6e cmp $0x6e,%r12b 0.00 : 54e2f: 90 nop 0.00 : 54e30: 0f 84 8e 00 00 00 je 54ec4 <_IO_vfscanf+0x534> 0.00 : 54e36: 48 8b 1d fb cf 31 00 mov 0x31cffb(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 54e3d: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 54e44: 44 8b 2c 1e mov (%rsi,%rbx,1),%r13d 0.00 : 54e48: c7 04 1e 00 00 00 00 movl $0x0,(%rsi,%rbx,1) 0.00 : 54e4f: 90 nop 0.00 : 54e50: 41 83 c7 01 add $0x1,%r15d 0.00 : 54e54: 0f 84 55 24 00 00 je 572af <_IO_vfscanf+0x291f> 0.00 : 54e5a: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 54e5e: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 54e62: 0f 83 15 24 00 00 jae 5727d <_IO_vfscanf+0x28ed> 0.00 : 54e68: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 54e6c: 48 83 c0 01 add $0x1,%rax 0.00 : 54e70: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 54e74: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 54e7b: 01 0.00 : 54e7c: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 54e83: 49 63 d7 movslq %r15d,%rdx 0.00 : 54e86: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 54e8a: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 54e8f: 75 bf jne 54e50 <_IO_vfscanf+0x4c0> 0.00 : 54e91: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 54e98: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 54e9c: 44 89 2c 1e mov %r13d,(%rsi,%rbx,1) 0.00 : 54ea0: 74 22 je 54ec4 <_IO_vfscanf+0x534> 0.00 : 54ea2: 4c 89 d7 mov %r10,%rdi 0.00 : 54ea5: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 54ea9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 54eb0: 48 83 ad d0 fd ff ff subq $0x1,-0x230(%rbp) 0.00 : 54eb7: 01 0.00 : 54eb8: e8 93 f2 01 00 callq 74150 <_IO_sputbackc> 0.00 : 54ebd: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 54ec4: 41 8d 44 24 db lea -0x25(%r12),%eax 0.00 : 54ec9: 3c 53 cmp $0x53,%al 0.00 : 54ecb: 0f 86 07 03 00 00 jbe 551d8 <_IO_vfscanf+0x848> 0.00 : 54ed1: eb 05 jmp 54ed8 <_IO_vfscanf+0x548> 0.00 : 54ed3: dd d8 fstp %st(0) 0.00 : 54ed5: 0f 1f 00 nopl (%rax) 0.00 : 54ed8: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 54edd: 0f 1f 00 nopl (%rax) 0.00 : 54ee0: 66 41 83 3a 00 cmpw $0x0,(%r10) 0.00 : 54ee5: 78 46 js 54f2d <_IO_vfscanf+0x59d> 0.00 : 54ee7: 49 8b 92 88 00 00 00 mov 0x88(%r10),%rdx 0.00 : 54eee: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 54ef1: 83 e8 01 sub $0x1,%eax 0.00 : 54ef4: 85 c0 test %eax,%eax 0.00 : 54ef6: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 54ef9: 75 32 jne 54f2d <_IO_vfscanf+0x59d> 0.00 : 54efb: 49 8b 82 88 00 00 00 mov 0x88(%r10),%rax 0.00 : 54f02: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 54f09: 00 0.00 : 54f0a: 49 8b 92 88 00 00 00 mov 0x88(%r10),%rdx 0.00 : 54f11: 83 3d 9c 27 32 00 00 cmpl $0x0,0x32279c(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 54f18: 74 0b je 54f25 <_IO_vfscanf+0x595> 0.00 : 54f1a: f0 ff 0a lock decl (%rdx) 0.00 : 54f1d: 0f 85 64 76 00 00 jne 5c587 <_L_unlock_915> 0.00 : 54f23: eb 08 jmp 54f2d <_IO_vfscanf+0x59d> 0.00 : 54f25: ff 0a decl (%rdx) 0.00 : 54f27: 0f 85 5a 76 00 00 jne 5c587 <_L_unlock_915> 0.00 : 54f2d: 8b 95 58 fd ff ff mov -0x2a8(%rbp),%edx 0.00 : 54f33: 85 d2 test %edx,%edx 0.00 : 54f35: 0f 85 2d 0d 00 00 jne 55c68 <_IO_vfscanf+0x12d8> 0.00 : 54f3b: 48 83 bd f0 fc ff ff cmpq $0x0,-0x310(%rbp) 0.00 : 54f42: 00 0.00 : 54f43: 74 09 je 54f4e <_IO_vfscanf+0x5be> 0.00 : 54f45: 48 8b b5 f0 fc ff ff mov -0x310(%rbp),%rsi 0.00 : 54f4c: 09 1e or %ebx,(%rsi) 0.00 : 54f4e: 83 bd 00 fd ff ff ff cmpl $0xffffffff,-0x300(%rbp) 0.00 : 54f55: 0f 85 d9 0c 00 00 jne 55c34 <_IO_vfscanf+0x12a4> 0.00 : 54f5b: 4c 8b a5 38 fd ff ff mov -0x2c8(%rbp),%r12 0.00 : 54f62: 4d 85 e4 test %r12,%r12 0.00 : 54f65: 0f 84 de fc ff ff je 54c49 <_IO_vfscanf+0x2b9> 0.00 : 54f6b: 31 db xor %ebx,%ebx 0.00 : 54f6d: 49 83 3c 24 00 cmpq $0x0,(%r12) 0.00 : 54f72: 74 27 je 54f9b <_IO_vfscanf+0x60b> 0.00 : 54f74: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 54f78: 49 8b 44 dc 10 mov 0x10(%r12,%rbx,8),%rax 0.00 : 54f7d: 48 8b 38 mov (%rax),%rdi 0.00 : 54f80: e8 1b 99 fc ff callq 1e8a0 0.00 : 54f85: 49 8b 44 dc 10 mov 0x10(%r12,%rbx,8),%rax 0.00 : 54f8a: 48 83 c3 01 add $0x1,%rbx 0.00 : 54f8e: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 54f95: 49 39 1c 24 cmp %rbx,(%r12) 0.00 : 54f99: 77 dd ja 54f78 <_IO_vfscanf+0x5e8> 0.00 : 54f9b: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 54fa0: 4d 85 e4 test %r12,%r12 0.00 : 54fa3: 75 c6 jne 54f6b <_IO_vfscanf+0x5db> 0.00 : 54fa5: e9 9f fc ff ff jmpq 54c49 <_IO_vfscanf+0x2b9> 0.00 : 54faa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 54fb0: 48 8d 71 01 lea 0x1(%rcx),%rsi 0.00 : 54fb4: 48 89 b5 c8 fd ff ff mov %rsi,-0x238(%rbp) 0.00 : 54fbb: 0f b6 51 01 movzbl 0x1(%rcx),%edx 0.00 : 54fbf: 48 8b 8d c8 fd ff ff mov -0x238(%rbp),%rcx 0.00 : 54fc6: c7 85 04 fd ff ff 00 movl $0x0,-0x2fc(%rbp) 0.00 : 54fcd: 00 00 00 0.00 : 54fd0: 48 83 c1 01 add $0x1,%rcx 0.00 : 54fd4: eb 25 jmp 54ffb <_IO_vfscanf+0x66b> 0.00 : 54fd6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 54fdd: 00 00 00 0.00 : 54fe0: 80 fa 27 cmp $0x27,%dl 0.00 : 54fe3: 74 1f je 55004 <_IO_vfscanf+0x674> 0.00 : 54fe5: 80 fa 49 cmp $0x49,%dl 0.00 : 54fe8: 75 5e jne 55048 <_IO_vfscanf+0x6b8> 0.00 : 54fea: 81 8d 04 fd ff ff 00 orl $0x400,-0x2fc(%rbp) 0.00 : 54ff1: 04 00 00 0.00 : 54ff4: 0f b6 11 movzbl (%rcx),%edx 0.00 : 54ff7: 48 83 c1 01 add $0x1,%rcx 0.00 : 54ffb: 80 fa 2a cmp $0x2a,%dl 0.00 : 54ffe: 4c 8d 41 ff lea -0x1(%rcx),%r8 0.00 : 55002: 75 dc jne 54fe0 <_IO_vfscanf+0x650> 0.00 : 55004: 80 fa 2a cmp $0x2a,%dl 0.00 : 55007: 74 2f je 55038 <_IO_vfscanf+0x6a8> 0.00 : 55009: 80 fa 49 cmp $0x49,%dl 0.00 : 5500c: 74 dc je 54fea <_IO_vfscanf+0x65a> 0.00 : 5500e: 80 fa 27 cmp $0x27,%dl 0.00 : 55011: 75 e1 jne 54ff4 <_IO_vfscanf+0x664> 0.00 : 55013: 8b 85 04 fd ff ff mov -0x2fc(%rbp),%eax 0.00 : 55019: 0c 80 or $0x80,%al 0.00 : 5501b: 48 83 bd 30 fd ff ff cmpq $0x0,-0x2d0(%rbp) 0.00 : 55022: 00 0.00 : 55023: 0f 44 85 04 fd ff ff cmove -0x2fc(%rbp),%eax 0.00 : 5502a: 89 85 04 fd ff ff mov %eax,-0x2fc(%rbp) 0.00 : 55030: eb c2 jmp 54ff4 <_IO_vfscanf+0x664> 0.00 : 55032: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 55038: 83 8d 04 fd ff ff 08 orl $0x8,-0x2fc(%rbp) 0.00 : 5503f: eb b3 jmp 54ff4 <_IO_vfscanf+0x664> 0.00 : 55041: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 55048: 0f b6 d2 movzbl %dl,%edx 0.00 : 5504b: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 5504e: 83 f8 09 cmp $0x9,%eax 0.00 : 55051: 0f 87 39 1f 00 00 ja 56f90 <_IO_vfscanf+0x2600> 0.00 : 55057: c7 85 dc fd ff ff 00 movl $0x0,-0x224(%rbp) 0.00 : 5505e: 00 00 00 0.00 : 55061: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 55068: 8b 8d dc fd ff ff mov -0x224(%rbp),%ecx 0.00 : 5506e: 49 83 c0 01 add $0x1,%r8 0.00 : 55072: 8d 04 89 lea (%rcx,%rcx,4),%eax 0.00 : 55075: 8d 44 42 d0 lea -0x30(%rdx,%rax,2),%eax 0.00 : 55079: 89 85 dc fd ff ff mov %eax,-0x224(%rbp) 0.00 : 5507f: 41 0f b6 08 movzbl (%r8),%ecx 0.00 : 55083: 0f b6 d1 movzbl %cl,%edx 0.00 : 55086: 8d 42 d0 lea -0x30(%rdx),%eax 0.00 : 55089: 83 f8 09 cmp $0x9,%eax 0.00 : 5508c: 76 da jbe 55068 <_IO_vfscanf+0x6d8> 0.00 : 5508e: e9 22 fd ff ff jmpq 54db5 <_IO_vfscanf+0x425> 0.00 : 55093: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 55098: 48 8d 15 7d 02 0e 00 lea 0xe027d(%rip),%rdx # 13531c 0.00 : 5509f: 0f b6 c0 movzbl %al,%eax 0.00 : 550a2: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : 550a6: 48 01 d0 add %rdx,%rax 0.00 : 550a9: ff e0 jmpq *%rax 0.00 : 550ab: 4d 8b 8a 88 00 00 00 mov 0x88(%r10),%r9 0.00 : 550b2: 64 4c 8b 24 25 10 00 mov %fs:0x10,%r12 0.00 : 550b9: 00 00 0.00 : 550bb: 4d 3b 61 08 cmp 0x8(%r9),%r12 0.00 : 550bf: 74 3b je 550fc <_IO_vfscanf+0x76c> 0.00 : 550c1: 31 d2 xor %edx,%edx 0.00 : 550c3: be 01 00 00 00 mov $0x1,%esi 0.00 : 550c8: 89 d0 mov %edx,%eax 0.00 : 550ca: 83 3d e3 25 32 00 00 cmpl $0x0,0x3225e3(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 550d1: 74 0d je 550e0 <_IO_vfscanf+0x750> 0.00 : 550d3: f0 41 0f b1 31 lock cmpxchg %esi,(%r9) 0.00 : 550d8: 0f 85 c4 74 00 00 jne 5c5a2 <_L_lock_1226> 0.00 : 550de: eb 0a jmp 550ea <_IO_vfscanf+0x75a> 0.00 : 550e0: 41 0f b1 31 cmpxchg %esi,(%r9) 0.00 : 550e4: 0f 85 b8 74 00 00 jne 5c5a2 <_L_lock_1226> 0.00 : 550ea: 49 8b 82 88 00 00 00 mov 0x88(%r10),%rax 0.00 : 550f1: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : 550f5: 4d 8b 8a 88 00 00 00 mov 0x88(%r10),%r9 0.00 : 550fc: 41 83 41 04 01 addl $0x1,0x4(%r9) 0.00 : 55101: e9 9c f9 ff ff jmpq 54aa2 <_IO_vfscanf+0x112> 0.00 : 55106: 83 8d 04 fd ff ff 01 orl $0x1,-0x2fc(%rbp) 0.00 : 5510d: 4d 89 f0 mov %r14,%r8 0.00 : 55110: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 55114: e9 d7 fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 55119: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 5511e: e9 bd fd ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 55123: 81 8d 04 fd ff ff 00 orl $0x2000,-0x2fc(%rbp) 0.00 : 5512a: 20 00 00 0.00 : 5512d: 4d 89 f0 mov %r14,%r8 0.00 : 55130: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 55134: 3c 6c cmp $0x6c,%al 0.00 : 55136: 0f 85 b4 fc ff ff jne 54df0 <_IO_vfscanf+0x460> 0.00 : 5513c: 83 8d 04 fd ff ff 01 orl $0x1,-0x2fc(%rbp) 0.00 : 55143: 4d 8d 46 01 lea 0x1(%r14),%r8 0.00 : 55147: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 5514c: e9 9f fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 55151: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 55155: 3c 6c cmp $0x6c,%al 0.00 : 55157: 0f 84 1a 0e 00 00 je 55f77 <_IO_vfscanf+0x15e7> 0.00 : 5515d: 83 8d 04 fd ff ff 01 orl $0x1,-0x2fc(%rbp) 0.00 : 55164: 4d 89 f0 mov %r14,%r8 0.00 : 55167: e9 84 fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 5516c: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 55170: 3c 68 cmp $0x68,%al 0.00 : 55172: 0f 84 e7 0d 00 00 je 55f5f <_IO_vfscanf+0x15cf> 0.00 : 55178: 83 8d 04 fd ff ff 04 orl $0x4,-0x2fc(%rbp) 0.00 : 5517f: 4d 89 f0 mov %r14,%r8 0.00 : 55182: e9 69 fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 55187: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 5518b: 3c 73 cmp $0x73,%al 0.00 : 5518d: 74 12 je 551a1 <_IO_vfscanf+0x811> 0.00 : 5518f: 3c 53 cmp $0x53,%al 0.00 : 55191: 74 0e je 551a1 <_IO_vfscanf+0x811> 0.00 : 55193: 3c 5b cmp $0x5b,%al 0.00 : 55195: 41 bc 61 00 00 00 mov $0x61,%r12d 0.00 : 5519b: 0f 85 67 fc ff ff jne 54e08 <_IO_vfscanf+0x478> 0.00 : 551a1: 41 f6 42 74 10 testb $0x10,0x74(%r10) 0.00 : 551a6: 0f 85 52 fc ff ff jne 54dfe <_IO_vfscanf+0x46e> 0.00 : 551ac: 81 8d 04 fd ff ff 00 orl $0x100,-0x2fc(%rbp) 0.00 : 551b3: 01 00 00 0.00 : 551b6: 4d 89 f0 mov %r14,%r8 0.00 : 551b9: e9 32 fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 551be: 83 8d 04 fd ff ff 03 orl $0x3,-0x2fc(%rbp) 0.00 : 551c5: 4d 89 f0 mov %r14,%r8 0.00 : 551c8: 41 0f b6 06 movzbl (%r14),%eax 0.00 : 551cc: e9 1f fc ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 551d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 551d8: 48 8d 15 f9 01 0e 00 lea 0xe01f9(%rip),%rdx # 1353d8 0.00 : 551df: 0f b6 c0 movzbl %al,%eax 0.00 : 551e2: 48 63 04 82 movslq (%rdx,%rax,4),%rax 0.00 : 551e6: 48 01 d0 add %rdx,%rax 0.00 : 551e9: ff e0 jmpq *%rax 0.00 : 551eb: 83 8d 04 fd ff ff 40 orl $0x40,-0x2fc(%rbp) 0.00 : 551f2: c7 85 24 fd ff ff 0a movl $0xa,-0x2dc(%rbp) 0.00 : 551f9: 00 00 00 0.00 : 551fc: 41 83 c7 01 add $0x1,%r15d 0.00 : 55200: 0f 84 12 0a 00 00 je 55c18 <_IO_vfscanf+0x1288> 0.00 : 55206: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5520a: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5520e: 0f 83 13 49 00 00 jae 59b27 <_IO_vfscanf+0x5197> 0.00 : 55214: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 55218: 48 83 c0 01 add $0x1,%rax 0.00 : 5521c: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55220: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 55227: 49 83 c3 01 add $0x1,%r11 0.00 : 5522b: 41 83 ff 2d cmp $0x2d,%r15d 0.00 : 5522f: 0f 84 d6 0a 00 00 je 55d0b <_IO_vfscanf+0x137b> 0.00 : 55235: 45 31 c9 xor %r9d,%r9d 0.00 : 55238: 41 83 ff 2b cmp $0x2b,%r15d 0.00 : 5523c: 0f 84 c9 0a 00 00 je 55d0b <_IO_vfscanf+0x137b> 0.00 : 55242: 44 8b a5 dc fd ff ff mov -0x224(%rbp),%r12d 0.00 : 55249: 45 85 e4 test %r12d,%r12d 0.00 : 5524c: 74 0a je 55258 <_IO_vfscanf+0x8c8> 0.00 : 5524e: 41 83 ff 30 cmp $0x30,%r15d 0.00 : 55252: 0f 84 b8 01 00 00 je 55410 <_IO_vfscanf+0xa80> 0.00 : 55258: 8b b5 24 fd ff ff mov -0x2dc(%rbp),%esi 0.00 : 5525e: 85 f6 test %esi,%esi 0.00 : 55260: 0f 85 3b 02 00 00 jne 554a1 <_IO_vfscanf+0xb11> 0.00 : 55266: c7 85 24 fd ff ff 0a movl $0xa,-0x2dc(%rbp) 0.00 : 5526d: 00 00 00 0.00 : 55270: f7 85 04 fd ff ff 00 testl $0x400,-0x2fc(%rbp) 0.00 : 55277: 04 00 00 0.00 : 5527a: 0f 85 4c 50 00 00 jne 5a2cc <_IO_vfscanf+0x593c> 0.00 : 55280: 0f b6 95 04 fd ff ff movzbl -0x2fc(%rbp),%edx 0.00 : 55287: 4d 89 d8 mov %r11,%r8 0.00 : 5528a: 45 89 fd mov %r15d,%r13d 0.00 : 5528d: 83 e2 80 and $0xffffff80,%edx 0.00 : 55290: 88 95 8b fc ff ff mov %dl,-0x375(%rbp) 0.00 : 55296: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5529d: 00 00 00 0.00 : 552a0: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 552a4: 74 0e je 552b4 <_IO_vfscanf+0x924> 0.00 : 552a6: 8b bd dc fd ff ff mov -0x224(%rbp),%edi 0.00 : 552ac: 85 ff test %edi,%edi 0.00 : 552ae: 0f 85 b4 04 00 00 jne 55768 <_IO_vfscanf+0xdd8> 0.00 : 552b4: 4d 89 c3 mov %r8,%r11 0.00 : 552b7: 45 89 ef mov %r13d,%r15d 0.00 : 552ba: 4c 89 cb mov %r9,%rbx 0.00 : 552bd: 48 85 db test %rbx,%rbx 0.00 : 552c0: 0f 84 98 0a 00 00 je 55d5e <_IO_vfscanf+0x13ce> 0.00 : 552c6: 48 83 fb 01 cmp $0x1,%rbx 0.00 : 552ca: 0f 84 be 19 00 00 je 56c8e <_IO_vfscanf+0x22fe> 0.00 : 552d0: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 552d4: 74 2c je 55302 <_IO_vfscanf+0x972> 0.00 : 552d6: 49 83 eb 01 sub $0x1,%r11 0.00 : 552da: 4c 89 d7 mov %r10,%rdi 0.00 : 552dd: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 552e1: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 552e8: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 552ef: e8 5c ee 01 00 callq 74150 <_IO_sputbackc> 0.00 : 552f4: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 552fb: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55302: 48 3b 9d 50 fd ff ff cmp -0x2b0(%rbp),%rbx 0.00 : 55309: 4c 8b ad f0 fd ff ff mov -0x210(%rbp),%r13 0.00 : 55310: 0f 84 0a 1c 00 00 je 56f20 <_IO_vfscanf+0x2590> 0.00 : 55316: 41 c6 44 1d 00 00 movb $0x0,0x0(%r13,%rbx,1) 0.00 : 5531c: 8b 9d 04 fd ff ff mov -0x2fc(%rbp),%ebx 0.00 : 55322: 83 e3 40 and $0x40,%ebx 0.00 : 55325: 0f 84 9e 09 00 00 je 55cc9 <_IO_vfscanf+0x1339> 0.00 : 5532b: 8b 8d 04 fd ff ff mov -0x2fc(%rbp),%ecx 0.00 : 55331: 8b 95 24 fd ff ff mov -0x2dc(%rbp),%edx 0.00 : 55337: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 5533b: 4c 89 ef mov %r13,%rdi 0.00 : 5533e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55345: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5534c: 81 e1 80 00 00 00 and $0x80,%ecx 0.00 : 55352: e8 69 17 fe ff callq 36ac0 <__strtol_internal> 0.00 : 55357: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5535e: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 55365: 48 89 c1 mov %rax,%rcx 0.00 : 55368: 4c 3b 6d b8 cmp -0x48(%rbp),%r13 0.00 : 5536c: 0f 84 66 fb ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 55372: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 55379: 0f 85 83 08 00 00 jne 55c02 <_IO_vfscanf+0x1272> 0.00 : 5537f: 85 db test %ebx,%ebx 0.00 : 55381: 0f 84 32 08 00 00 je 55bb9 <_IO_vfscanf+0x1229> 0.00 : 55387: f6 85 04 fd ff ff 01 testb $0x1,-0x2fc(%rbp) 0.00 : 5538e: 0f 84 50 1d 00 00 je 570e4 <_IO_vfscanf+0x2754> 0.00 : 55394: 8b b5 5c fd ff ff mov -0x2a4(%rbp),%esi 0.00 : 5539a: 85 f6 test %esi,%esi 0.00 : 5539c: 0f 84 32 08 00 00 je 55bd4 <_IO_vfscanf+0x1244> 0.00 : 553a2: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 553a9: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 553b0: 48 8b 02 mov (%rdx),%rax 0.00 : 553b3: 48 89 03 mov %rax,(%rbx) 0.00 : 553b6: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 553bd: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 553c1: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 553c5: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 553c9: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 553cd: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 553d3: 83 ea 01 sub $0x1,%edx 0.00 : 553d6: 74 17 je 553ef <_IO_vfscanf+0xa5f> 0.00 : 553d8: 83 f8 30 cmp $0x30,%eax 0.00 : 553db: 0f 83 f0 1a 00 00 jae 56ed1 <_IO_vfscanf+0x2541> 0.00 : 553e1: 83 c0 08 add $0x8,%eax 0.00 : 553e4: 83 ea 01 sub $0x1,%edx 0.00 : 553e7: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 553ed: 75 e9 jne 553d8 <_IO_vfscanf+0xa48> 0.00 : 553ef: 83 f8 30 cmp $0x30,%eax 0.00 : 553f2: 0f 83 f2 2c 00 00 jae 580ea <_IO_vfscanf+0x375a> 0.00 : 553f8: 89 c2 mov %eax,%edx 0.00 : 553fa: 83 c0 08 add $0x8,%eax 0.00 : 553fd: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 55404: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5540a: e9 e6 07 00 00 jmpq 55bf5 <_IO_vfscanf+0x1265> 0.00 : 5540f: 90 nop 0.00 : 55410: 31 c0 xor %eax,%eax 0.00 : 55412: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 55419: 4c 8b a5 f0 fd ff ff mov -0x210(%rbp),%r12 0.00 : 55420: 0f 9f c0 setg %al 0.00 : 55423: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 55429: 4c 3b 8d 50 fd ff ff cmp -0x2b0(%rbp),%r9 0.00 : 55430: 0f 84 b8 20 00 00 je 574ee <_IO_vfscanf+0x2b5e> 0.00 : 55436: 43 c6 04 0c 30 movb $0x30,(%r12,%r9,1) 0.00 : 5543b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5543f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 55443: 0f 83 20 4e 00 00 jae 5a269 <_IO_vfscanf+0x58d9> 0.00 : 55449: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5544d: 48 83 c0 01 add $0x1,%rax 0.00 : 55451: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55455: 49 83 c3 01 add $0x1,%r11 0.00 : 55459: 8b 9d dc fd ff ff mov -0x224(%rbp),%ebx 0.00 : 5545f: 85 db test %ebx,%ebx 0.00 : 55461: 74 19 je 5547c <_IO_vfscanf+0xaec> 0.00 : 55463: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 5546a: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 5546e: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 55472: 83 3c 90 78 cmpl $0x78,(%rax,%rdx,4) 0.00 : 55476: 0f 84 eb 21 00 00 je 57667 <_IO_vfscanf+0x2cd7> 0.00 : 5547c: 8b bd 24 fd ff ff mov -0x2dc(%rbp),%edi 0.00 : 55482: b8 08 00 00 00 mov $0x8,%eax 0.00 : 55487: 85 ff test %edi,%edi 0.00 : 55489: 0f 45 85 24 fd ff ff cmovne -0x2dc(%rbp),%eax 0.00 : 55490: 89 85 24 fd ff ff mov %eax,-0x2dc(%rbp) 0.00 : 55496: 49 83 c1 01 add $0x1,%r9 0.00 : 5549a: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 554a1: 83 bd 24 fd ff ff 0a cmpl $0xa,-0x2dc(%rbp) 0.00 : 554a8: 0f 85 d2 fd ff ff jne 55280 <_IO_vfscanf+0x8f0> 0.00 : 554ae: e9 bd fd ff ff jmpq 55270 <_IO_vfscanf+0x8e0> 0.00 : 554b3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 554b8: 83 a5 04 fd ff ff f9 andl $0xfffffff9,-0x2fc(%rbp) 0.00 : 554bf: 81 8d 04 fd ff ff 01 orl $0x1001,-0x2fc(%rbp) 0.00 : 554c6: 10 00 00 0.00 : 554c9: c7 85 24 fd ff ff 10 movl $0x10,-0x2dc(%rbp) 0.00 : 554d0: 00 00 00 0.00 : 554d3: e9 24 fd ff ff jmpq 551fc <_IO_vfscanf+0x86c> 0.00 : 554d8: 44 8b b5 04 fd ff ff mov -0x2fc(%rbp),%r14d 0.00 : 554df: 41 83 e6 08 and $0x8,%r14d 0.00 : 554e3: 0f 84 a6 09 00 00 je 55e8f <_IO_vfscanf+0x14ff> 0.00 : 554e9: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 554f0: 41 83 c7 01 add $0x1,%r15d 0.00 : 554f4: 0f 84 1e 07 00 00 je 55c18 <_IO_vfscanf+0x1288> 0.00 : 554fa: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 554fe: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 55502: 0f 83 75 5b 00 00 jae 5b07d <_IO_vfscanf+0x66ed> 0.00 : 55508: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5550c: 48 83 c0 01 add $0x1,%rax 0.00 : 55510: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55514: 8b 9d 04 fd ff ff mov -0x2fc(%rbp),%ebx 0.00 : 5551a: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 55521: 4c 8d 6d 80 lea -0x80(%rbp),%r13 0.00 : 55525: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 5552c: 00 0.00 : 5552d: 81 e3 00 21 00 00 and $0x2100,%ebx 0.00 : 55533: 49 83 c3 01 add $0x1,%r11 0.00 : 55537: 89 9d 8c fc ff ff mov %ebx,-0x374(%rbp) 0.00 : 5553d: 48 8b b5 08 fd ff ff mov -0x2f8(%rbp),%rsi 0.00 : 55544: 49 63 d7 movslq %r15d,%rdx 0.00 : 55547: 48 8b 46 68 mov 0x68(%rsi),%rax 0.00 : 5554b: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 55550: 0f 85 c1 36 00 00 jne 58c17 <_IO_vfscanf+0x4287> 0.00 : 55556: 44 88 bd f0 fe ff ff mov %r15b,-0x110(%rbp) 0.00 : 5555d: 44 89 fb mov %r15d,%ebx 0.00 : 55560: 45 85 f6 test %r14d,%r14d 0.00 : 55563: bf 00 00 00 00 mov $0x0,%edi 0.00 : 55568: 48 0f 44 bd e0 fd ff cmove -0x220(%rbp),%rdi 0.00 : 5556f: ff 0.00 : 55570: 48 8b b5 48 fc ff ff mov -0x3b8(%rbp),%rsi 0.00 : 55577: 4c 89 e9 mov %r13,%rcx 0.00 : 5557a: ba 01 00 00 00 mov $0x1,%edx 0.00 : 5557f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55586: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5558d: e8 fe 77 03 00 callq 8cd90 <__mbrtowc> 0.00 : 55592: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 55596: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5559d: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 555a4: 0f 85 c2 13 00 00 jne 5696c <_IO_vfscanf+0x1fdc> 0.00 : 555aa: 83 c3 01 add $0x1,%ebx 0.00 : 555ad: 0f 85 2d 13 00 00 jne 568e0 <_IO_vfscanf+0x1f50> 0.00 : 555b3: 48 8b 1d 7e c8 31 00 mov 0x31c87e(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 555ba: 8b 85 1c fd ff ff mov -0x2e4(%rbp),%eax 0.00 : 555c0: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 555c7: 89 04 1f mov %eax,(%rdi,%rbx,1) 0.00 : 555ca: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 555d1: c7 04 1a 54 00 00 00 movl $0x54,(%rdx,%rbx,1) 0.00 : 555d8: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 555dd: e9 fe f8 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 555e2: 83 bd dc fd ff ff ff cmpl $0xffffffff,-0x224(%rbp) 0.00 : 555e9: b8 01 00 00 00 mov $0x1,%eax 0.00 : 555ee: 44 8b ad 04 fd ff ff mov -0x2fc(%rbp),%r13d 0.00 : 555f5: 0f 45 85 dc fd ff ff cmovne -0x224(%rbp),%eax 0.00 : 555fc: 41 83 e5 08 and $0x8,%r13d 0.00 : 55600: 89 85 dc fd ff ff mov %eax,-0x224(%rbp) 0.00 : 55606: 0f 84 96 07 00 00 je 55da2 <_IO_vfscanf+0x1412> 0.00 : 5560c: 41 83 c7 01 add $0x1,%r15d 0.00 : 55610: 0f 84 02 06 00 00 je 55c18 <_IO_vfscanf+0x1288> 0.00 : 55616: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5561a: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5561e: 0f 83 43 4b 00 00 jae 5a167 <_IO_vfscanf+0x57d7> 0.00 : 55624: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 55628: 48 83 c0 01 add $0x1,%rax 0.00 : 5562c: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55630: 48 8b 9d 40 fc ff ff mov -0x3c0(%rbp),%rbx 0.00 : 55637: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5563e: 45 31 f6 xor %r14d,%r14d 0.00 : 55641: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) 0.00 : 55648: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5564e: 49 83 c3 01 add $0x1,%r11 0.00 : 55652: 8b b5 04 fd ff ff mov -0x2fc(%rbp),%esi 0.00 : 55658: 48 63 bd dc fd ff ff movslq -0x224(%rbp),%rdi 0.00 : 5565f: 48 c7 85 a8 fd ff ff movq $0x0,-0x258(%rbp) 0.00 : 55666: 00 00 00 00 0.00 : 5566a: 83 e8 01 sub $0x1,%eax 0.00 : 5566d: 81 e6 00 21 00 00 and $0x2100,%esi 0.00 : 55673: 48 63 d0 movslq %eax,%rdx 0.00 : 55676: 89 85 9c fc ff ff mov %eax,-0x364(%rbp) 0.00 : 5567c: 89 b5 a8 fc ff ff mov %esi,-0x358(%rbp) 0.00 : 55682: 48 89 bd a0 fc ff ff mov %rdi,-0x360(%rbp) 0.00 : 55689: 48 89 95 90 fc ff ff mov %rdx,-0x370(%rbp) 0.00 : 55690: 45 85 ed test %r13d,%r13d 0.00 : 55693: 44 88 bd f0 fe ff ff mov %r15b,-0x110(%rbp) 0.00 : 5569a: 75 30 jne 556cc <_IO_vfscanf+0xd3c> 0.00 : 5569c: 8b b5 a8 fc ff ff mov -0x358(%rbp),%esi 0.00 : 556a2: 85 f6 test %esi,%esi 0.00 : 556a4: 74 26 je 556cc <_IO_vfscanf+0xd3c> 0.00 : 556a6: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 556ad: 48 8b 9d e8 fd ff ff mov -0x218(%rbp),%rbx 0.00 : 556b4: 48 8b 39 mov (%rcx),%rdi 0.00 : 556b7: 48 c1 e3 02 shl $0x2,%rbx 0.00 : 556bb: 48 8d 04 1f lea (%rdi,%rbx,1),%rax 0.00 : 556bf: 48 39 85 e0 fd ff ff cmp %rax,-0x220(%rbp) 0.00 : 556c6: 0f 84 19 2e 00 00 je 584e5 <_IO_vfscanf+0x3b55> 0.00 : 556cc: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 556d3: 44 89 fb mov %r15d,%ebx 0.00 : 556d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 556dd: 00 00 00 0.00 : 556e0: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 556e7: 48 8b 8d 40 fc ff ff mov -0x3c0(%rbp),%rcx 0.00 : 556ee: 45 85 ed test %r13d,%r13d 0.00 : 556f1: 48 8b b5 48 fc ff ff mov -0x3b8(%rbp),%rsi 0.00 : 556f8: ba 01 00 00 00 mov $0x1,%edx 0.00 : 556fd: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55704: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5570b: 49 0f 45 fe cmovne %r14,%rdi 0.00 : 5570f: e8 7c 76 03 00 callq 8cd90 <__mbrtowc> 0.00 : 55714: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 55718: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5571f: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 55726: 0f 85 dc 11 00 00 jne 56908 <_IO_vfscanf+0x1f78> 0.00 : 5572c: 83 c3 01 add $0x1,%ebx 0.00 : 5572f: 0f 85 7b 11 00 00 jne 568b0 <_IO_vfscanf+0x1f20> 0.00 : 55735: 48 8b 1d fc c6 31 00 mov 0x31c6fc(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5573c: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 55742: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 55749: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 5574c: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 55753: c7 04 18 54 00 00 00 movl $0x54,(%rax,%rbx,1) 0.00 : 5575a: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 5575f: e9 7c f7 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 55764: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 55768: 83 bd 24 fd ff ff 10 cmpl $0x10,-0x2dc(%rbp) 0.00 : 5576f: 0f 84 83 01 00 00 je 558f8 <_IO_vfscanf+0xf68> 0.00 : 55775: 41 8d 45 d0 lea -0x30(%r13),%eax 0.00 : 55779: 83 f8 09 cmp $0x9,%eax 0.00 : 5577c: 77 13 ja 55791 <_IO_vfscanf+0xe01> 0.00 : 5577e: 41 8d 45 d1 lea -0x2f(%r13),%eax 0.00 : 55782: 3b 85 24 fd ff ff cmp -0x2dc(%rbp),%eax 50.00 : 55788: 44 89 eb mov %r13d,%ebx 0.00 : 5578b: 0f 8e 83 01 00 00 jle 55914 <_IO_vfscanf+0xf84> 0.00 : 55791: 83 bd 24 fd ff ff 0a cmpl $0xa,-0x2dc(%rbp) 0.00 : 55798: 0f 85 16 fb ff ff jne 552b4 <_IO_vfscanf+0x924> 0.00 : 5579e: 80 bd 8b fc ff ff 00 cmpb $0x0,-0x375(%rbp) 0.00 : 557a5: 0f 84 09 fb ff ff je 552b4 <_IO_vfscanf+0x924> 0.00 : 557ab: 48 8b 9d 30 fd ff ff mov -0x2d0(%rbp),%rbx 0.00 : 557b2: 44 8b 9d dc fd ff ff mov -0x224(%rbp),%r11d 0.00 : 557b9: 41 bf ff ff ff 7f mov $0x7fffffff,%r15d 0.00 : 557bf: 0f b6 0b movzbl (%rbx),%ecx 0.00 : 557c2: 45 85 db test %r11d,%r11d 0.00 : 557c5: 44 0f 4f bd dc fd ff cmovg -0x224(%rbp),%r15d 0.00 : 557cc: ff 0.00 : 557cd: 0f b6 c1 movzbl %cl,%eax 0.00 : 557d0: 41 39 c5 cmp %eax,%r13d 0.00 : 557d3: 0f 85 05 17 00 00 jne 56ede <_IO_vfscanf+0x254e> 0.00 : 557d9: 49 83 c0 01 add $0x1,%r8 0.00 : 557dd: 4f 8d 34 09 lea (%r9,%r9,1),%r14 0.00 : 557e1: 49 89 dc mov %rbx,%r12 0.00 : 557e4: eb 6e jmp 55854 <_IO_vfscanf+0xec4> 0.00 : 557e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 557ed: 00 00 00 0.00 : 557f0: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 557f7: 49 83 c4 01 add $0x1,%r12 0.00 : 557fb: 44 89 eb mov %r13d,%ebx 0.00 : 557fe: 46 88 2c 0f mov %r13b,(%rdi,%r9,1) 0.00 : 55802: 49 83 c1 01 add $0x1,%r9 0.00 : 55806: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5580b: 0f 84 d7 01 00 00 je 559e8 <_IO_vfscanf+0x1058> 0.00 : 55811: 45 85 ff test %r15d,%r15d 0.00 : 55814: 0f 84 b6 02 00 00 je 55ad0 <_IO_vfscanf+0x1140> 0.00 : 5581a: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5581e: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 55822: 0f 83 47 01 00 00 jae 5596f <_IO_vfscanf+0xfdf> 0.00 : 55828: 44 0f b6 28 movzbl (%rax),%r13d 0.00 : 5582c: 48 83 c0 01 add $0x1,%rax 0.00 : 55830: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55834: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 55839: 41 83 ef 01 sub $0x1,%r15d 0.00 : 5583d: 49 83 c6 02 add $0x2,%r14 0.00 : 55841: 49 8d 50 01 lea 0x1(%r8),%rdx 0.00 : 55845: 0f b6 c1 movzbl %cl,%eax 0.00 : 55848: 44 39 e8 cmp %r13d,%eax 0.00 : 5584b: 0f 85 89 01 00 00 jne 559da <_IO_vfscanf+0x104a> 0.00 : 55851: 49 89 d0 mov %rdx,%r8 0.00 : 55854: 4c 3b 8d 50 fd ff ff cmp -0x2b0(%rbp),%r9 0.00 : 5585b: 4d 8d 58 ff lea -0x1(%r8),%r11 0.00 : 5585f: 75 8f jne 557f0 <_IO_vfscanf+0xe60> 0.00 : 55861: 49 81 fe 00 01 00 00 cmp $0x100,%r14 0.00 : 55868: be 00 01 00 00 mov $0x100,%esi 0.00 : 5586d: 49 0f 43 f6 cmovae %r14,%rsi 0.00 : 55871: 48 89 f0 mov %rsi,%rax 0.00 : 55874: 48 89 b5 50 fd ff ff mov %rsi,-0x2b0(%rbp) 0.00 : 5587b: 48 83 c0 1e add $0x1e,%rax 0.00 : 5587f: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 55883: 48 29 c4 sub %rax,%rsp 0.00 : 55886: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5588b: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5588f: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 55896: 00 0.00 : 55897: 0f 84 9b 01 00 00 je 55a38 <_IO_vfscanf+0x10a8> 0.00 : 5589d: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 558a4: 4c 89 ca mov %r9,%rdx 0.00 : 558a7: 48 89 df mov %rbx,%rdi 0.00 : 558aa: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 558b1: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 558b8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 558bf: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 558c6: e8 85 ee 02 00 callq 84750 0.00 : 558cb: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 558d2: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 558d9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 558e0: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 558e7: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 558ee: e9 fd fe ff ff jmpq 557f0 <_IO_vfscanf+0xe60> 0.00 : 558f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 558f8: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 558ff: 49 63 d5 movslq %r13d,%rdx 0.00 : 55902: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 55906: f6 44 50 01 10 testb $0x10,0x1(%rax,%rdx,2) 0.00 : 5590b: 0f 84 a3 f9 ff ff je 552b4 <_IO_vfscanf+0x924> 0.00 : 55911: 44 89 eb mov %r13d,%ebx 0.00 : 55914: 4c 3b 8d 50 fd ff ff cmp -0x2b0(%rbp),%r9 0.00 : 5591b: 4c 8b a5 f0 fd ff ff mov -0x210(%rbp),%r12 0.00 : 55922: 0f 84 20 01 00 00 je 55a48 <_IO_vfscanf+0x10b8> 0.00 : 55928: 43 88 1c 0c mov %bl,(%r12,%r9,1) 0.00 : 5592c: 31 c0 xor %eax,%eax 0.00 : 5592e: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 55935: 0f 9f c0 setg %al 0.00 : 55938: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5593e: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 55942: 0f 85 c8 00 00 00 jne 55a10 <_IO_vfscanf+0x1080> 0.00 : 55948: 48 8b 1d e9 c4 31 00 mov 0x31c4e9(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5594f: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 55955: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5595c: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 5595f: 49 83 c1 01 add $0x1,%r9 0.00 : 55963: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5596a: e9 31 f9 ff ff jmpq 552a0 <_IO_vfscanf+0x910> 0.00 : 5596f: 4c 89 d7 mov %r10,%rdi 0.00 : 55972: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 55979: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 55980: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55987: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5598e: e8 6d f8 01 00 callq 75200 <__uflow> 0.00 : 55993: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 55996: 41 89 c5 mov %eax,%r13d 0.00 : 55999: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 559a0: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 559a7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 559ae: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 559b5: 0f 85 79 fe ff ff jne 55834 <_IO_vfscanf+0xea4> 0.00 : 559bb: 48 8b 1d 76 c4 31 00 mov 0x31c476(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 559c2: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 559c9: 4d 89 d8 mov %r11,%r8 0.00 : 559cc: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 559cf: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 559d5: 41 0f b6 0c 24 movzbl (%r12),%ecx 0.00 : 559da: 84 c9 test %cl,%cl 0.00 : 559dc: 0f 85 ac 47 00 00 jne 5a18e <_IO_vfscanf+0x57fe> 0.00 : 559e2: 44 89 eb mov %r13d,%ebx 0.00 : 559e5: 4d 89 c3 mov %r8,%r11 0.00 : 559e8: 44 8b 85 dc fd ff ff mov -0x224(%rbp),%r8d 0.00 : 559ef: 45 85 c0 test %r8d,%r8d 0.00 : 559f2: 44 0f 4e bd dc fd ff cmovle -0x224(%rbp),%r15d 0.00 : 559f9: ff 0.00 : 559fa: 4d 89 d8 mov %r11,%r8 0.00 : 559fd: 49 83 e9 01 sub $0x1,%r9 0.00 : 55a01: 44 89 bd dc fd ff ff mov %r15d,-0x224(%rbp) 0.00 : 55a08: e9 07 ff ff ff jmpq 55914 <_IO_vfscanf+0xf84> 0.00 : 55a0d: 0f 1f 00 nopl (%rax) 0.00 : 55a10: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 55a14: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 55a18: 0f 83 24 1f 00 00 jae 57942 <_IO_vfscanf+0x2fb2> 0.00 : 55a1e: 44 0f b6 28 movzbl (%rax),%r13d 0.00 : 55a22: 48 83 c0 01 add $0x1,%rax 0.00 : 55a26: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55a2a: 49 83 c0 01 add $0x1,%r8 0.00 : 55a2e: e9 2c ff ff ff jmpq 5595f <_IO_vfscanf+0xfcf> 0.00 : 55a33: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 55a38: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 55a3f: e9 ac fd ff ff jmpq 557f0 <_IO_vfscanf+0xe60> 0.00 : 55a44: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 55a48: 4b 8d 14 09 lea (%r9,%r9,1),%rdx 0.00 : 55a4c: b9 00 01 00 00 mov $0x100,%ecx 0.00 : 55a51: 48 81 fa 00 01 00 00 cmp $0x100,%rdx 0.00 : 55a58: 48 0f 43 ca cmovae %rdx,%rcx 0.00 : 55a5c: 48 89 c8 mov %rcx,%rax 0.00 : 55a5f: 48 89 8d 50 fd ff ff mov %rcx,-0x2b0(%rbp) 0.00 : 55a66: 48 83 c0 1e add $0x1e,%rax 0.00 : 55a6a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 55a6e: 48 29 c4 sub %rax,%rsp 0.00 : 55a71: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 55a76: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 55a7a: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 55a81: 00 0.00 : 55a82: 0f 84 a0 fe ff ff je 55928 <_IO_vfscanf+0xf98> 0.00 : 55a88: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 55a8f: 4c 89 ca mov %r9,%rdx 0.00 : 55a92: 4c 89 e7 mov %r12,%rdi 0.00 : 55a95: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 55a9c: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 55aa3: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55aaa: e8 a1 ec 02 00 callq 84750 0.00 : 55aaf: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55ab6: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 55abd: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 55ac4: e9 5f fe ff ff jmpq 55928 <_IO_vfscanf+0xf98> 0.00 : 55ac9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 55ad0: 4d 89 d8 mov %r11,%r8 0.00 : 55ad3: 45 89 ef mov %r13d,%r15d 0.00 : 55ad6: 4c 89 cb mov %r9,%rbx 0.00 : 55ad9: 4c 39 a5 30 fd ff ff cmp %r12,-0x2d0(%rbp) 0.00 : 55ae0: 0f 83 d7 f7 ff ff jae 552bd <_IO_vfscanf+0x92d> 0.00 : 55ae6: 41 83 fd ff cmp $0xffffffff,%r13d 0.00 : 55aea: 74 3a je 55b26 <_IO_vfscanf+0x1196> 0.00 : 55aec: 4d 8d 58 ff lea -0x1(%r8),%r11 0.00 : 55af0: 4c 89 d7 mov %r10,%rdi 0.00 : 55af3: 41 0f b6 f5 movzbl %r13b,%esi 0.00 : 55af7: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 55afe: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55b05: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 55b0c: e8 3f e6 01 00 callq 74150 <_IO_sputbackc> 0.00 : 55b11: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 55b18: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55b1f: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 55b26: 4d 8d 6c 24 ff lea -0x1(%r12),%r13 0.00 : 55b2b: 4c 39 ad 30 fd ff ff cmp %r13,-0x2d0(%rbp) 0.00 : 55b32: 73 5e jae 55b92 <_IO_vfscanf+0x1202> 0.00 : 55b34: 4c 89 eb mov %r13,%rbx 0.00 : 55b37: 0f b6 33 movzbl (%rbx),%esi 0.00 : 55b3a: 4c 89 d7 mov %r10,%rdi 0.00 : 55b3d: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 55b44: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55b4b: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 55b52: 48 83 eb 01 sub $0x1,%rbx 0.00 : 55b56: e8 f5 e5 01 00 callq 74150 <_IO_sputbackc> 0.00 : 55b5b: 48 39 9d 30 fd ff ff cmp %rbx,-0x2d0(%rbp) 0.00 : 55b62: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 55b69: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55b70: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 55b77: 72 be jb 55b37 <_IO_vfscanf+0x11a7> 0.00 : 55b79: 48 8b 85 30 fd ff ff mov -0x2d0(%rbp),%rax 0.00 : 55b80: 49 8d 54 24 fe lea -0x2(%r12),%rdx 0.00 : 55b85: 48 83 e8 01 sub $0x1,%rax 0.00 : 55b89: 48 29 d0 sub %rdx,%rax 0.00 : 55b8c: 49 01 c3 add %rax,%r11 0.00 : 55b8f: 49 01 c5 add %rax,%r13 0.00 : 55b92: 48 8b 85 30 fd ff ff mov -0x2d0(%rbp),%rax 0.00 : 55b99: 45 0f b6 7d 00 movzbl 0x0(%r13),%r15d 0.00 : 55b9e: 4c 29 e0 sub %r12,%rax 0.00 : 55ba1: 4a 8d 1c 08 lea (%rax,%r9,1),%rbx 0.00 : 55ba5: e9 13 f7 ff ff jmpq 552bd <_IO_vfscanf+0x92d> 0.00 : 55baa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 55bb0: 44 0f b6 23 movzbl (%rbx),%r12d 0.00 : 55bb4: e9 9f ef ff ff jmpq 54b58 <_IO_vfscanf+0x1c8> 0.00 : 55bb9: f6 85 04 fd ff ff 01 testb $0x1,-0x2fc(%rbp) 0.00 : 55bc0: 0f 84 d7 14 00 00 je 5709d <_IO_vfscanf+0x270d> 0.00 : 55bc6: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 55bcc: 85 c0 test %eax,%eax 0.00 : 55bce: 0f 85 b7 24 00 00 jne 5808b <_IO_vfscanf+0x36fb> 0.00 : 55bd4: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 55bda: 83 f8 30 cmp $0x30,%eax 0.00 : 55bdd: 0f 83 ec 18 00 00 jae 574cf <_IO_vfscanf+0x2b3f> 0.00 : 55be3: 89 c2 mov %eax,%edx 0.00 : 55be5: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 55bec: 83 c0 08 add $0x8,%eax 0.00 : 55bef: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 55bf5: 48 8b 02 mov (%rdx),%rax 0.00 : 55bf8: 48 89 08 mov %rcx,(%rax) 0.00 : 55bfb: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 55c02: 4c 89 ad f0 fd ff ff mov %r13,-0x210(%rbp) 0.00 : 55c09: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 55c10: 45 31 ed xor %r13d,%r13d 0.00 : 55c13: e9 83 ef ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 55c18: 48 8b 05 19 c2 31 00 mov 0x31c219(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 55c1f: 8b 8d 1c fd ff ff mov -0x2e4(%rbp),%ecx 0.00 : 55c25: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 55c2c: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 55c2f: e9 df ef ff ff jmpq 54c13 <_IO_vfscanf+0x283> 0.00 : 55c34: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 55c3b: 00 0.00 : 55c3c: 0f 84 11 f0 ff ff je 54c53 <_IO_vfscanf+0x2c3> 0.00 : 55c42: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 55c49: 48 8b 38 mov (%rax),%rdi 0.00 : 55c4c: e8 4f 8c fc ff callq 1e8a0 0.00 : 55c51: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 55c58: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) 0.00 : 55c5f: e9 ef ef ff ff jmpq 54c53 <_IO_vfscanf+0x2c3> 0.00 : 55c64: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 55c68: 48 8b 05 09 1a 32 00 mov 0x321a09(%rip),%rax # 377678 <__libc_pthread_functions+0x178> 0.00 : 55c6f: 48 8d bd 40 ff ff ff lea -0xc0(%rbp),%rdi 0.00 : 55c76: 31 f6 xor %esi,%esi 0.00 : 55c78: 48 c1 c8 11 ror $0x11,%rax 0.00 : 55c7c: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 55c83: 00 00 0.00 : 55c85: ff d0 callq *%rax 0.00 : 55c87: e9 af f2 ff ff jmpq 54f3b <_IO_vfscanf+0x5ab> 0.00 : 55c8c: 4c 89 d2 mov %r10,%rdx 0.00 : 55c8f: 48 8b 05 da 19 32 00 mov 0x3219da(%rip),%rax # 377670 <__libc_pthread_functions+0x170> 0.00 : 55c96: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55c9d: 48 c1 c8 11 ror $0x11,%rax 0.00 : 55ca1: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 55ca8: 00 00 0.00 : 55caa: 48 8d bd 40 ff ff ff lea -0xc0(%rbp),%rdi 0.00 : 55cb1: 48 8b 35 90 c2 31 00 mov 0x31c290(%rip),%rsi # 371f48 <_DYNAMIC+0x3e8> 0.00 : 55cb8: ff d0 callq *%rax 0.00 : 55cba: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55cc1: 41 8b 12 mov (%r10),%edx 0.00 : 55cc4: e9 d0 ed ff ff jmpq 54a99 <_IO_vfscanf+0x109> 0.00 : 55cc9: 8b 8d 04 fd ff ff mov -0x2fc(%rbp),%ecx 0.00 : 55ccf: 8b 95 24 fd ff ff mov -0x2dc(%rbp),%edx 0.00 : 55cd5: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 55cd9: 4c 89 ef mov %r13,%rdi 0.00 : 55cdc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55ce3: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 55cea: 81 e1 80 00 00 00 and $0x80,%ecx 0.00 : 55cf0: e8 0b 0e fe ff callq 36b00 <__strtoul_internal> 0.00 : 55cf5: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 55cfc: 48 89 c1 mov %rax,%rcx 0.00 : 55cff: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55d06: e9 5d f6 ff ff jmpq 55368 <_IO_vfscanf+0x9d8> 0.00 : 55d0b: 48 83 bd 50 fd ff ff cmpq $0x0,-0x2b0(%rbp) 0.00 : 55d12: 00 0.00 : 55d13: 0f 84 8a 12 00 00 je 56fa3 <_IO_vfscanf+0x2613> 0.00 : 55d19: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 55d20: 31 c0 xor %eax,%eax 0.00 : 55d22: 44 88 3e mov %r15b,(%rsi) 0.00 : 55d25: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 55d2c: 0f 9f c0 setg %al 0.00 : 55d2f: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 55d35: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 55d39: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 55d3d: 0f 83 72 55 00 00 jae 5b2b5 <_IO_vfscanf+0x6925> 0.00 : 55d43: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 55d47: 48 83 c0 01 add $0x1,%rax 0.00 : 55d4b: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 55d4f: 49 83 c3 01 add $0x1,%r11 0.00 : 55d53: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 55d59: e9 e4 f4 ff ff jmpq 55242 <_IO_vfscanf+0x8b2> 0.00 : 55d5e: f7 85 04 fd ff ff 00 testl $0x1000,-0x2fc(%rbp) 0.00 : 55d65: 10 00 00 0.00 : 55d68: 74 0a je 55d74 <_IO_vfscanf+0x13e4> 0.00 : 55d6a: 41 83 ff 28 cmp $0x28,%r15d 0.00 : 55d6e: 0f 84 e2 0c 00 00 je 56a56 <_IO_vfscanf+0x20c6> 0.00 : 55d74: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 55d78: 0f 84 5a f1 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 55d7e: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 55d82: 4c 89 d7 mov %r10,%rdi 0.00 : 55d85: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55d8c: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 55d91: e8 ba e3 01 00 callq 74150 <_IO_sputbackc> 0.00 : 55d96: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55d9d: e9 3e f1 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 55da2: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 55da9: 21 00 00 0.00 : 55dac: 0f 84 c6 1d 00 00 je 57b78 <_IO_vfscanf+0x31e8> 0.00 : 55db2: 44 8b 85 5c fd ff ff mov -0x2a4(%rbp),%r8d 0.00 : 55db9: 45 85 c0 test %r8d,%r8d 0.00 : 55dbc: 0f 85 25 2d 00 00 jne 58ae7 <_IO_vfscanf+0x4157> 0.00 : 55dc2: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 55dc8: 83 f8 30 cmp $0x30,%eax 0.00 : 55dcb: 0f 83 96 30 00 00 jae 58e67 <_IO_vfscanf+0x44d7> 0.00 : 55dd1: 89 c2 mov %eax,%edx 0.00 : 55dd3: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 55dda: 83 c0 08 add $0x8,%eax 0.00 : 55ddd: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 55de3: 48 8b 12 mov (%rdx),%rdx 0.00 : 55de6: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 55ded: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 55df4: 00 0.00 : 55df5: 0f 84 dd f0 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 55dfb: 81 bd dc fd ff ff 00 cmpl $0x400,-0x224(%rbp) 0.00 : 55e02: 04 00 00 0.00 : 55e05: b8 00 04 00 00 mov $0x400,%eax 0.00 : 55e0a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55e11: 0f 4e 85 dc fd ff ff cmovle -0x224(%rbp),%eax 0.00 : 55e18: 48 98 cltq 0.00 : 55e1a: 48 89 c7 mov %rax,%rdi 0.00 : 55e1d: 48 89 85 e8 fd ff ff mov %rax,-0x218(%rbp) 0.00 : 55e24: 48 c1 e7 02 shl $0x2,%rdi 0.00 : 55e28: e8 23 8a fc ff callq 1e850 0.00 : 55e2d: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 55e34: 48 85 c0 test %rax,%rax 0.00 : 55e37: 48 89 06 mov %rax,(%rsi) 0.00 : 55e3a: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 55e41: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55e48: 0f 84 9b 2f 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 55e4e: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 55e55: 00 0.00 : 55e56: 0f 84 42 2e 00 00 je 58c9e <_IO_vfscanf+0x430e> 0.00 : 55e5c: 48 8b bd 38 fd ff ff mov -0x2c8(%rbp),%rdi 0.00 : 55e63: 48 8b 17 mov (%rdi),%rdx 0.00 : 55e66: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 55e6a: 0f 84 2e 2e 00 00 je 58c9e <_IO_vfscanf+0x430e> 0.00 : 55e70: 48 8b 9d 48 fd ff ff mov -0x2b8(%rbp),%rbx 0.00 : 55e77: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 55e7e: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 55e82: 48 89 5c d1 10 mov %rbx,0x10(%rcx,%rdx,8) 0.00 : 55e87: 48 89 01 mov %rax,(%rcx) 0.00 : 55e8a: e9 7d f7 ff ff jmpq 5560c <_IO_vfscanf+0xc7c> 0.00 : 55e8f: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 55e96: 21 00 00 0.00 : 55e99: 0f 84 24 1b 00 00 je 579c3 <_IO_vfscanf+0x3033> 0.00 : 55e9f: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 55ea5: 85 c0 test %eax,%eax 0.00 : 55ea7: 0f 85 31 28 00 00 jne 586de <_IO_vfscanf+0x3d4e> 0.00 : 55ead: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 55eb3: 83 f8 30 cmp $0x30,%eax 0.00 : 55eb6: 0f 83 61 29 00 00 jae 5881d <_IO_vfscanf+0x3e8d> 0.00 : 55ebc: 89 c2 mov %eax,%edx 0.00 : 55ebe: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 55ec5: 83 c0 08 add $0x8,%eax 0.00 : 55ec8: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 55ece: 48 8b 12 mov (%rdx),%rdx 0.00 : 55ed1: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 55ed8: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 55edf: 00 0.00 : 55ee0: 0f 84 f2 ef ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 55ee6: bf 90 01 00 00 mov $0x190,%edi 0.00 : 55eeb: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 55ef2: e8 59 89 fc ff callq 1e850 0.00 : 55ef7: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 55efe: 48 85 c0 test %rax,%rax 0.00 : 55f01: 48 89 06 mov %rax,(%rsi) 0.00 : 55f04: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 55f0b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 55f12: 0f 84 d1 2e 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 55f18: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 55f1f: 00 0.00 : 55f20: 0f 84 c7 28 00 00 je 587ed <_IO_vfscanf+0x3e5d> 0.00 : 55f26: 48 8b bd 38 fd ff ff mov -0x2c8(%rbp),%rdi 0.00 : 55f2d: 48 8b 17 mov (%rdi),%rdx 0.00 : 55f30: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 55f34: 0f 84 b3 28 00 00 je 587ed <_IO_vfscanf+0x3e5d> 0.00 : 55f3a: 48 8b 9d 48 fd ff ff mov -0x2b8(%rbp),%rbx 0.00 : 55f41: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 55f48: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 55f4c: 41 bc 64 00 00 00 mov $0x64,%r12d 0.00 : 55f52: 48 89 5c d1 10 mov %rbx,0x10(%rcx,%rdx,8) 0.00 : 55f57: 48 89 01 mov %rax,(%rcx) 0.00 : 55f5a: e9 91 f5 ff ff jmpq 554f0 <_IO_vfscanf+0xb60> 0.00 : 55f5f: 81 8d 04 fd ff ff 00 orl $0x200,-0x2fc(%rbp) 0.00 : 55f66: 02 00 00 0.00 : 55f69: 4d 8d 46 01 lea 0x1(%r14),%r8 0.00 : 55f6d: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 55f72: e9 79 ee ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 55f77: 83 8d 04 fd ff ff 03 orl $0x3,-0x2fc(%rbp) 0.00 : 55f7e: 4d 8d 46 01 lea 0x1(%r14),%r8 0.00 : 55f82: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 55f87: e9 64 ee ff ff jmpq 54df0 <_IO_vfscanf+0x460> 0.00 : 55f8c: f6 85 04 fd ff ff 01 testb $0x1,-0x2fc(%rbp) 0.00 : 55f93: 0f 85 3f f5 ff ff jne 554d8 <_IO_vfscanf+0xb48> 0.00 : 55f99: 44 8b b5 04 fd ff ff mov -0x2fc(%rbp),%r14d 0.00 : 55fa0: 41 83 e6 08 and $0x8,%r14d 0.00 : 55fa4: 0f 85 d0 00 00 00 jne 5607a <_IO_vfscanf+0x16ea> 0.00 : 55faa: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 55fb1: 21 00 00 0.00 : 55fb4: 0f 84 14 2d 00 00 je 58cce <_IO_vfscanf+0x433e> 0.00 : 55fba: 8b 8d 5c fd ff ff mov -0x2a4(%rbp),%ecx 0.00 : 55fc0: 85 c9 test %ecx,%ecx 0.00 : 55fc2: 0f 85 f8 35 00 00 jne 595c0 <_IO_vfscanf+0x4c30> 0.00 : 55fc8: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 55fce: 83 f8 30 cmp $0x30,%eax 0.00 : 55fd1: 0f 83 39 3b 00 00 jae 59b10 <_IO_vfscanf+0x5180> 0.00 : 55fd7: 89 c2 mov %eax,%edx 0.00 : 55fd9: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 55fe0: 83 c0 08 add $0x8,%eax 0.00 : 55fe3: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 55fe9: 48 8b 12 mov (%rdx),%rdx 0.00 : 55fec: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 55ff3: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 55ffa: 00 0.00 : 55ffb: 0f 84 d7 ee ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 56001: bf 64 00 00 00 mov $0x64,%edi 0.00 : 56006: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5600d: e8 3e 88 fc ff callq 1e850 0.00 : 56012: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 56019: 48 85 c0 test %rax,%rax 0.00 : 5601c: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 56023: 48 89 06 mov %rax,(%rsi) 0.00 : 56026: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5602d: 0f 84 b6 2d 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 56033: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 5603a: 00 0.00 : 5603b: 0f 84 ef 35 00 00 je 59630 <_IO_vfscanf+0x4ca0> 0.00 : 56041: 48 8b bd 38 fd ff ff mov -0x2c8(%rbp),%rdi 0.00 : 56048: 48 8b 17 mov (%rdi),%rdx 0.00 : 5604b: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 5604f: 0f 84 db 35 00 00 je 59630 <_IO_vfscanf+0x4ca0> 0.00 : 56055: 48 8b 9d 48 fd ff ff mov -0x2b8(%rbp),%rbx 0.00 : 5605c: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 56063: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 56067: 48 89 5c d1 10 mov %rbx,0x10(%rcx,%rdx,8) 0.00 : 5606c: 48 89 01 mov %rax,(%rcx) 0.00 : 5606f: 48 c7 85 e8 fd ff ff movq $0x64,-0x218(%rbp) 0.00 : 56076: 64 00 00 00 0.00 : 5607a: 41 83 c7 01 add $0x1,%r15d 0.00 : 5607e: 0f 84 94 fb ff ff je 55c18 <_IO_vfscanf+0x1288> 0.00 : 56084: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56088: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5608c: 0f 83 bc 52 00 00 jae 5b34e <_IO_vfscanf+0x69be> 0.00 : 56092: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56096: 48 83 c0 01 add $0x1,%rax 0.00 : 5609a: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5609e: 48 8b 85 d0 fd ff ff mov -0x230(%rbp),%rax 0.00 : 560a5: 8b b5 04 fd ff ff mov -0x2fc(%rbp),%esi 0.00 : 560ab: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 560b2: 48 83 c0 01 add $0x1,%rax 0.00 : 560b6: 81 e6 00 21 00 00 and $0x2100,%esi 0.00 : 560bc: 48 8d 58 01 lea 0x1(%rax),%rbx 0.00 : 560c0: 89 b5 54 fc ff ff mov %esi,-0x3ac(%rbp) 0.00 : 560c6: 48 8b bd 08 fd ff ff mov -0x2f8(%rbp),%rdi 0.00 : 560cd: 49 63 d7 movslq %r15d,%rdx 0.00 : 560d0: 4c 8d 5b ff lea -0x1(%rbx),%r11 0.00 : 560d4: 48 8b 47 68 mov 0x68(%rdi),%rax 0.00 : 560d8: f6 44 50 01 20 testb $0x20,0x1(%rax,%rdx,2) 0.00 : 560dd: 0f 85 e5 2d 00 00 jne 58ec8 <_IO_vfscanf+0x4538> 0.00 : 560e3: 45 85 f6 test %r14d,%r14d 0.00 : 560e6: 75 3a jne 56122 <_IO_vfscanf+0x1792> 0.00 : 560e8: 48 8b 85 40 fd ff ff mov -0x2c0(%rbp),%rax 0.00 : 560ef: 44 88 38 mov %r15b,(%rax) 0.00 : 560f2: 48 83 c0 01 add $0x1,%rax 0.00 : 560f6: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 560fd: 8b 85 54 fc ff ff mov -0x3ac(%rbp),%eax 0.00 : 56103: 85 c0 test %eax,%eax 0.00 : 56105: 74 1b je 56122 <_IO_vfscanf+0x1792> 0.00 : 56107: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 5610e: 48 8b 3a mov (%rdx),%rdi 0.00 : 56111: 4a 8d 04 27 lea (%rdi,%r12,1),%rax 0.00 : 56115: 48 39 85 40 fd ff ff cmp %rax,-0x2c0(%rbp) 0.00 : 5611c: 0f 84 5c 2d 00 00 je 58e7e <_IO_vfscanf+0x44ee> 0.00 : 56122: 4d 89 e5 mov %r12,%r13 0.00 : 56125: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5612b: 85 c0 test %eax,%eax 0.00 : 5612d: 7e 0d jle 5613c <_IO_vfscanf+0x17ac> 0.00 : 5612f: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 56136: 0f 84 d5 0e 00 00 je 57011 <_IO_vfscanf+0x2681> 0.00 : 5613c: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 56140: 0f 84 0a 3a 00 00 je 59b50 <_IO_vfscanf+0x51c0> 0.00 : 56146: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5614a: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5614e: 0f 83 76 0e 00 00 jae 56fca <_IO_vfscanf+0x263a> 0.00 : 56154: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56158: 48 83 c0 01 add $0x1,%rax 0.00 : 5615c: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56160: 48 83 c3 01 add $0x1,%rbx 0.00 : 56164: 4d 89 ec mov %r13,%r12 0.00 : 56167: e9 5a ff ff ff jmpq 560c6 <_IO_vfscanf+0x1736> 0.00 : 5616c: c7 85 24 fd ff ff 08 movl $0x8,-0x2dc(%rbp) 0.00 : 56173: 00 00 00 0.00 : 56176: e9 81 f0 ff ff jmpq 551fc <_IO_vfscanf+0x86c> 0.00 : 5617b: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 56182: 0f 85 29 13 00 00 jne 574b1 <_IO_vfscanf+0x2b21> 0.00 : 56188: f6 85 04 fd ff ff 01 testb $0x1,-0x2fc(%rbp) 0.00 : 5618f: 0f 84 f4 1d 00 00 je 57f89 <_IO_vfscanf+0x35f9> 0.00 : 56195: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 5619b: 85 c0 test %eax,%eax 0.00 : 5619d: 0f 85 06 2f 00 00 jne 590a9 <_IO_vfscanf+0x4719> 0.00 : 561a3: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 561a9: 83 f8 30 cmp $0x30,%eax 0.00 : 561ac: 0f 83 08 27 00 00 jae 588ba <_IO_vfscanf+0x3f2a> 0.00 : 561b2: 89 c2 mov %eax,%edx 0.00 : 561b4: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 561bb: 83 c0 08 add $0x8,%eax 0.00 : 561be: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 561c4: 48 8b b5 d0 fd ff ff mov -0x230(%rbp),%rsi 0.00 : 561cb: 48 8b 02 mov (%rdx),%rax 0.00 : 561ce: 45 31 ed xor %r13d,%r13d 0.00 : 561d1: 48 89 30 mov %rsi,(%rax) 0.00 : 561d4: 49 89 f3 mov %rsi,%r11 0.00 : 561d7: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 561de: e9 b8 e9 ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 561e3: 83 8d 04 fd ff ff 40 orl $0x40,-0x2fc(%rbp) 0.00 : 561ea: c7 85 24 fd ff ff 00 movl $0x0,-0x2dc(%rbp) 0.00 : 561f1: 00 00 00 0.00 : 561f4: e9 03 f0 ff ff jmpq 551fc <_IO_vfscanf+0x86c> 0.00 : 561f9: f6 85 04 fd ff ff 01 testb $0x1,-0x2fc(%rbp) 0.00 : 56200: 0f 85 dc f3 ff ff jne 555e2 <_IO_vfscanf+0xc52> 0.00 : 56206: 83 bd dc fd ff ff ff cmpl $0xffffffff,-0x224(%rbp) 0.00 : 5620d: b8 01 00 00 00 mov $0x1,%eax 0.00 : 56212: 8b 9d 04 fd ff ff mov -0x2fc(%rbp),%ebx 0.00 : 56218: 0f 45 85 dc fd ff ff cmovne -0x224(%rbp),%eax 0.00 : 5621f: 83 e3 08 and $0x8,%ebx 0.00 : 56222: 89 85 dc fd ff ff mov %eax,-0x224(%rbp) 0.00 : 56228: 0f 85 e4 00 00 00 jne 56312 <_IO_vfscanf+0x1982> 0.00 : 5622e: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 56235: 21 00 00 0.00 : 56238: 0f 84 c2 2b 00 00 je 58e00 <_IO_vfscanf+0x4470> 0.00 : 5623e: 44 8b b5 5c fd ff ff mov -0x2a4(%rbp),%r14d 0.00 : 56245: 45 85 f6 test %r14d,%r14d 0.00 : 56248: 0f 85 d2 32 00 00 jne 59520 <_IO_vfscanf+0x4b90> 0.00 : 5624e: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 56254: 83 f8 30 cmp $0x30,%eax 0.00 : 56257: 0f 83 74 39 00 00 jae 59bd1 <_IO_vfscanf+0x5241> 0.00 : 5625d: 89 c2 mov %eax,%edx 0.00 : 5625f: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 56266: 83 c0 08 add $0x8,%eax 0.00 : 56269: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 5626f: 48 8b 12 mov (%rdx),%rdx 0.00 : 56272: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 56279: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 56280: 00 0.00 : 56281: 0f 84 51 ec ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 56287: 81 bd dc fd ff ff 00 cmpl $0x400,-0x224(%rbp) 0.00 : 5628e: 04 00 00 0.00 : 56291: b8 00 04 00 00 mov $0x400,%eax 0.00 : 56296: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5629d: 0f 4e 85 dc fd ff ff cmovle -0x224(%rbp),%eax 0.00 : 562a4: 48 98 cltq 0.00 : 562a6: 48 89 c7 mov %rax,%rdi 0.00 : 562a9: 48 89 85 e8 fd ff ff mov %rax,-0x218(%rbp) 0.00 : 562b0: e8 9b 85 fc ff callq 1e850 0.00 : 562b5: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 562bc: 48 85 c0 test %rax,%rax 0.00 : 562bf: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 562c6: 48 89 07 mov %rax,(%rdi) 0.00 : 562c9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 562d0: 0f 84 13 2b 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 562d6: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 562dd: 00 0.00 : 562de: 0f 84 ac 32 00 00 je 59590 <_IO_vfscanf+0x4c00> 0.00 : 562e4: 48 8b 85 38 fd ff ff mov -0x2c8(%rbp),%rax 0.00 : 562eb: 48 8b 10 mov (%rax),%rdx 0.00 : 562ee: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 562f2: 0f 84 98 32 00 00 je 59590 <_IO_vfscanf+0x4c00> 0.00 : 562f8: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 562ff: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 56306: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 5630a: 48 89 74 d1 10 mov %rsi,0x10(%rcx,%rdx,8) 0.00 : 5630f: 48 89 01 mov %rax,(%rcx) 0.00 : 56312: 41 83 c7 01 add $0x1,%r15d 0.00 : 56316: 0f 84 e0 e8 ff ff je 54bfc <_IO_vfscanf+0x26c> 0.00 : 5631c: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56320: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56324: 0f 83 22 3b 00 00 jae 59e4c <_IO_vfscanf+0x54bc> 0.00 : 5632a: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5632e: 48 83 c0 01 add $0x1,%rax 0.00 : 56332: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56336: 4c 8b b5 d0 fd ff ff mov -0x230(%rbp),%r14 0.00 : 5633d: 49 83 c6 01 add $0x1,%r14 0.00 : 56341: 85 db test %ebx,%ebx 0.00 : 56343: 0f 85 f7 1b 00 00 jne 57f40 <_IO_vfscanf+0x35b0> 0.00 : 56349: 8b bd 04 fd ff ff mov -0x2fc(%rbp),%edi 0.00 : 5634f: 44 8b ad dc fd ff ff mov -0x224(%rbp),%r13d 0.00 : 56356: 31 db xor %ebx,%ebx 0.00 : 56358: 4e 8d 1c 33 lea (%rbx,%r14,1),%r11 0.00 : 5635c: 81 e7 00 21 00 00 and $0x2100,%edi 0.00 : 56362: 49 63 c5 movslq %r13d,%rax 0.00 : 56365: 89 bd 9c fd ff ff mov %edi,-0x264(%rbp) 0.00 : 5636b: 44 8b a5 9c fd ff ff mov -0x264(%rbp),%r12d 0.00 : 56372: 48 89 85 60 fc ff ff mov %rax,-0x3a0(%rbp) 0.00 : 56379: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 5637d: 45 85 e4 test %r12d,%r12d 0.00 : 56380: 48 98 cltq 0.00 : 56382: 48 89 85 58 fc ff ff mov %rax,-0x3a8(%rbp) 0.00 : 56389: 74 22 je 563ad <_IO_vfscanf+0x1a1d> 0.00 : 5638b: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 56392: 48 8b 8d e8 fd ff ff mov -0x218(%rbp),%rcx 0.00 : 56399: 48 8b 3a mov (%rdx),%rdi 0.00 : 5639c: 48 8d 04 0f lea (%rdi,%rcx,1),%rax 0.00 : 563a0: 48 39 85 40 fd ff ff cmp %rax,-0x2c0(%rbp) 0.00 : 563a7: 0f 84 d3 29 00 00 je 58d80 <_IO_vfscanf+0x43f0> 0.00 : 563ad: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 563b4: 48 8b b5 40 fd ff ff mov -0x2c0(%rbp),%rsi 0.00 : 563bb: 41 83 ed 01 sub $0x1,%r13d 0.00 : 563bf: 44 88 3e mov %r15b,(%rsi) 0.00 : 563c2: 48 83 c6 01 add $0x1,%rsi 0.00 : 563c6: 45 85 ed test %r13d,%r13d 0.00 : 563c9: 48 89 b5 40 fd ff ff mov %rsi,-0x2c0(%rbp) 0.00 : 563d0: 0f 8e 1e 1b 00 00 jle 57ef4 <_IO_vfscanf+0x3564> 0.00 : 563d6: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 563da: 0f 84 96 2c 00 00 je 59076 <_IO_vfscanf+0x46e6> 0.00 : 563e0: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 563e4: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 563e8: 0f 83 bf 1a 00 00 jae 57ead <_IO_vfscanf+0x351d> 0.00 : 563ee: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 563f2: 48 83 c0 01 add $0x1,%rax 0.00 : 563f6: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 563fa: 4c 89 a5 e8 fd ff ff mov %r12,-0x218(%rbp) 0.00 : 56401: 44 8b a5 9c fd ff ff mov -0x264(%rbp),%r12d 0.00 : 56408: 48 83 c3 01 add $0x1,%rbx 0.00 : 5640c: 4e 8d 1c 33 lea (%rbx,%r14,1),%r11 0.00 : 56410: 45 85 e4 test %r12d,%r12d 0.00 : 56413: 74 98 je 563ad <_IO_vfscanf+0x1a1d> 0.00 : 56415: e9 71 ff ff ff jmpq 5638b <_IO_vfscanf+0x19fb> 0.00 : 5641a: 8b 9d 04 fd ff ff mov -0x2fc(%rbp),%ebx 0.00 : 56420: 83 e3 01 and $0x1,%ebx 0.00 : 56423: 0f 84 3a 11 00 00 je 57563 <_IO_vfscanf+0x2bd3> 0.00 : 56429: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 56430: 0f 85 79 0d 00 00 jne 571af <_IO_vfscanf+0x281f> 0.00 : 56436: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 5643d: 21 00 00 0.00 : 56440: 0f 84 6c 27 00 00 je 58bb2 <_IO_vfscanf+0x4222> 0.00 : 56446: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 5644c: 85 c0 test %eax,%eax 0.00 : 5644e: 0f 85 ab 37 00 00 jne 59bff <_IO_vfscanf+0x526f> 0.00 : 56454: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 5645a: 83 f8 30 cmp $0x30,%eax 0.00 : 5645d: 0f 83 85 37 00 00 jae 59be8 <_IO_vfscanf+0x5258> 0.00 : 56463: 89 c2 mov %eax,%edx 0.00 : 56465: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 5646c: 83 c0 08 add $0x8,%eax 0.00 : 5646f: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 56475: 48 8b 12 mov (%rdx),%rdx 0.00 : 56478: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 5647f: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 56486: 00 0.00 : 56487: 0f 84 4b ea ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5648d: bf 90 01 00 00 mov $0x190,%edi 0.00 : 56492: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56499: e8 b2 83 fc ff callq 1e850 0.00 : 5649e: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 564a5: 48 85 c0 test %rax,%rax 0.00 : 564a8: 48 89 07 mov %rax,(%rdi) 0.00 : 564ab: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 564b2: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 564b9: 0f 84 2a 29 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 564bf: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 564c6: 00 0.00 : 564c7: 0f 84 43 34 00 00 je 59910 <_IO_vfscanf+0x4f80> 0.00 : 564cd: 48 8b 85 38 fd ff ff mov -0x2c8(%rbp),%rax 0.00 : 564d4: 48 8b 10 mov (%rax),%rdx 0.00 : 564d7: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 564db: 0f 84 2f 34 00 00 je 59910 <_IO_vfscanf+0x4f80> 0.00 : 564e1: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 564e8: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 564ef: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 564f3: 41 bc 64 00 00 00 mov $0x64,%r12d 0.00 : 564f9: 48 89 74 d1 10 mov %rsi,0x10(%rcx,%rdx,8) 0.00 : 564fe: 48 89 01 mov %rax,(%rcx) 0.00 : 56501: c6 85 23 fd ff ff 00 movb $0x0,-0x2dd(%rbp) 0.00 : 56508: 41 80 3e 5e cmpb $0x5e,(%r14) 0.00 : 5650c: 75 12 jne 56520 <_IO_vfscanf+0x1b90> 0.00 : 5650e: 49 83 c6 01 add $0x1,%r14 0.00 : 56512: c6 85 23 fd ff ff 01 movb $0x1,-0x2dd(%rbp) 0.00 : 56519: 4c 89 b5 c8 fd ff ff mov %r14,-0x238(%rbp) 0.00 : 56520: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 56526: bf ff ff ff 7f mov $0x7fffffff,%edi 0.00 : 5652b: 85 c0 test %eax,%eax 0.00 : 5652d: 0f 49 bd dc fd ff ff cmovns -0x224(%rbp),%edi 0.00 : 56534: 48 81 bd 50 fd ff ff cmpq $0xff,-0x2b0(%rbp) 0.00 : 5653b: ff 00 00 00 0.00 : 5653f: 89 bd dc fd ff ff mov %edi,-0x224(%rbp) 0.00 : 56545: 77 22 ja 56569 <_IO_vfscanf+0x1bd9> 0.00 : 56547: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5654e: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 56555: 00 01 00 00 0.00 : 56559: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5655e: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 56562: 48 89 85 f0 fd ff ff mov %rax,-0x210(%rbp) 0.00 : 56569: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 56570: 31 c0 xor %eax,%eax 0.00 : 56572: b9 20 00 00 00 mov $0x20,%ecx 0.00 : 56577: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 5657a: 48 8b 95 c8 fd ff ff mov -0x238(%rbp),%rdx 0.00 : 56581: 0f b6 02 movzbl (%rdx),%eax 0.00 : 56584: 3c 5d cmp $0x5d,%al 0.00 : 56586: 0f 84 2d 11 00 00 je 576b9 <_IO_vfscanf+0x2d29> 0.00 : 5658c: 3c 2d cmp $0x2d,%al 0.00 : 5658e: 0f 84 25 11 00 00 je 576b9 <_IO_vfscanf+0x2d29> 0.00 : 56594: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 56598: 84 c0 test %al,%al 0.00 : 5659a: 0f 84 38 e9 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 565a0: 48 83 85 c8 fd ff ff addq $0x1,-0x238(%rbp) 0.00 : 565a7: 01 0.00 : 565a8: 3c 5d cmp $0x5d,%al 0.00 : 565aa: 0f 84 69 11 00 00 je 57719 <_IO_vfscanf+0x2d89> 0.00 : 565b0: 3c 2d cmp $0x2d,%al 0.00 : 565b2: 0f 84 4b 04 00 00 je 56a03 <_IO_vfscanf+0x2073> 0.00 : 565b8: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 565bf: 0f b6 c0 movzbl %al,%eax 0.00 : 565c2: c6 04 07 01 movb $0x1,(%rdi,%rax,1) 0.00 : 565c6: 48 8b 85 c8 fd ff ff mov -0x238(%rbp),%rax 0.00 : 565cd: 0f b6 08 movzbl (%rax),%ecx 0.00 : 565d0: 89 c8 mov %ecx,%eax 0.00 : 565d2: eb c4 jmp 56598 <_IO_vfscanf+0x1c08> 0.00 : 565d4: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 565d8: 0f 85 62 10 00 00 jne 57640 <_IO_vfscanf+0x2cb0> 0.00 : 565de: 48 8b 1d 53 b8 31 00 mov 0x31b853(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 565e5: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 565eb: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 565f2: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 565f5: 31 c0 xor %eax,%eax 0.00 : 565f7: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 565fe: 0f 9f c0 setg %al 0.00 : 56601: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 56607: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5660b: 0f 84 02 e6 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 56611: 41 83 ff 2d cmp $0x2d,%r15d 0.00 : 56615: 0f 84 19 16 00 00 je 57c34 <_IO_vfscanf+0x32a4> 0.00 : 5661b: 41 83 ff 2b cmp $0x2b,%r15d 0.00 : 5661f: c6 85 22 fd ff ff 00 movb $0x0,-0x2de(%rbp) 0.00 : 56626: 0f 84 08 16 00 00 je 57c34 <_IO_vfscanf+0x32a4> 0.00 : 5662c: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 56633: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 56637: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 5663b: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 5663e: 83 f8 6e cmp $0x6e,%eax 0.00 : 56641: 0f 84 81 15 00 00 je 57bc8 <_IO_vfscanf+0x3238> 0.00 : 56647: 83 f8 69 cmp $0x69,%eax 0.00 : 5664a: 0f 84 ed 19 00 00 je 5803d <_IO_vfscanf+0x36ad> 0.00 : 56650: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 56656: 85 c0 test %eax,%eax 0.00 : 56658: 74 0a je 56664 <_IO_vfscanf+0x1cd4> 0.00 : 5665a: 41 83 ff 30 cmp $0x30,%r15d 0.00 : 5665e: 0f 84 9d 1a 00 00 je 58101 <_IO_vfscanf+0x3771> 0.00 : 56664: 4c 8b 8d f0 fd ff ff mov -0x210(%rbp),%r9 0.00 : 5666b: c6 85 1f fe ff ff 65 movb $0x65,-0x1e1(%rbp) 0.00 : 56672: 45 31 f6 xor %r14d,%r14d 0.00 : 56675: 0f b6 95 04 fd ff ff movzbl -0x2fc(%rbp),%edx 0.00 : 5667c: 48 8b 8d 28 fd ff ff mov -0x2d8(%rbp),%rcx 0.00 : 56683: 8b 9d 04 fd ff ff mov -0x2fc(%rbp),%ebx 0.00 : 56689: c6 85 20 fd ff ff 00 movb $0x0,-0x2e0(%rbp) 0.00 : 56690: c6 85 21 fd ff ff 00 movb $0x0,-0x2df(%rbp) 0.00 : 56697: 48 83 c1 01 add $0x1,%rcx 0.00 : 5669b: 83 e2 80 and $0xffffff80,%edx 0.00 : 5669e: 81 e3 00 08 00 00 and $0x800,%ebx 0.00 : 566a4: 48 89 8d b0 fc ff ff mov %rcx,-0x350(%rbp) 0.00 : 566ab: 88 95 bf fc ff ff mov %dl,-0x341(%rbp) 0.00 : 566b1: 89 9d ac fc ff ff mov %ebx,-0x354(%rbp) 0.00 : 566b7: eb 73 jmp 5672c <_IO_vfscanf+0x1d9c> 0.00 : 566b9: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 566c0: 4d 89 cc mov %r9,%r12 0.00 : 566c3: 0f 84 7d 0d 00 00 je 57446 <_IO_vfscanf+0x2ab6> 0.00 : 566c9: 47 88 3c 34 mov %r15b,(%r12,%r14,1) 0.00 : 566cd: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 566d4: 49 83 c6 01 add $0x1,%r14 0.00 : 566d8: 44 8b ad dc fd ff ff mov -0x224(%rbp),%r13d 0.00 : 566df: 45 85 ed test %r13d,%r13d 0.00 : 566e2: 0f 84 bc 1d 00 00 je 584a4 <_IO_vfscanf+0x3b14> 0.00 : 566e8: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 566ec: 0f 84 a6 1a 00 00 je 58198 <_IO_vfscanf+0x3808> 0.00 : 566f2: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 566f6: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 566fa: 0f 83 f4 28 00 00 jae 58ff4 <_IO_vfscanf+0x4664> 0.00 : 56700: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56704: 49 83 c3 01 add $0x1,%r11 0.00 : 56708: 48 83 c0 01 add $0x1,%rax 0.00 : 5670c: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56710: 4c 89 9d d0 fd ff ff mov %r11,-0x230(%rbp) 0.00 : 56717: 31 c0 xor %eax,%eax 0.00 : 56719: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 56720: 4d 89 e1 mov %r12,%r9 0.00 : 56723: 0f 9f c0 setg %al 0.00 : 56726: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5672c: 41 8d 47 d0 lea -0x30(%r15),%eax 0.00 : 56730: 83 f8 09 cmp $0x9,%eax 0.00 : 56733: 76 84 jbe 566b9 <_IO_vfscanf+0x1d29> 0.00 : 56735: 80 bd 21 fd ff ff 00 cmpb $0x0,-0x2df(%rbp) 0.00 : 5673c: 0f 84 f3 03 00 00 je 56b35 <_IO_vfscanf+0x21a5> 0.00 : 56742: 0f b6 85 1f fe ff ff movzbl -0x1e1(%rbp),%eax 0.00 : 56749: 43 38 44 31 ff cmp %al,-0x1(%r9,%r14,1) 0.00 : 5674e: 0f 84 8a 0f 00 00 je 576de <_IO_vfscanf+0x2d4e> 0.00 : 56754: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5675a: 41 b8 ff ff ff 7f mov $0x7fffffff,%r8d 0.00 : 56760: 85 c0 test %eax,%eax 0.00 : 56762: 44 0f 4f 85 dc fd ff cmovg -0x224(%rbp),%r8d 0.00 : 56769: ff 0.00 : 5676a: 80 bd 20 fd ff ff 00 cmpb $0x0,-0x2e0(%rbp) 0.00 : 56771: 0f 84 36 05 00 00 je 56cad <_IO_vfscanf+0x231d> 0.00 : 56777: 48 8b 8d 28 fd ff ff mov -0x2d8(%rbp),%rcx 0.00 : 5677e: 0f b6 11 movzbl (%rcx),%edx 0.00 : 56781: 49 89 cc mov %rcx,%r12 0.00 : 56784: 44 89 f9 mov %r15d,%ecx 0.00 : 56787: 84 d2 test %dl,%dl 0.00 : 56789: 0f 85 c4 05 00 00 jne 56d53 <_IO_vfscanf+0x23c3> 0.00 : 5678f: 48 8b 85 28 fd ff ff mov -0x2d8(%rbp),%rax 0.00 : 56796: 41 89 cf mov %ecx,%r15d 0.00 : 56799: 0f b6 10 movzbl (%rax),%edx 0.00 : 5679c: 84 d2 test %dl,%dl 0.00 : 5679e: 0f 84 98 06 00 00 je 56e3c <_IO_vfscanf+0x24ac> 0.00 : 567a4: 4f 8d 24 36 lea (%r14,%r14,1),%r12 0.00 : 567a8: 48 8b 9d 28 fd ff ff mov -0x2d8(%rbp),%rbx 0.00 : 567af: eb 23 jmp 567d4 <_IO_vfscanf+0x1e44> 0.00 : 567b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 567b8: 0f b6 03 movzbl (%rbx),%eax 0.00 : 567bb: 48 83 c3 01 add $0x1,%rbx 0.00 : 567bf: 49 83 c4 02 add $0x2,%r12 0.00 : 567c3: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 567c7: 49 83 c6 01 add $0x1,%r14 0.00 : 567cb: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 567ce: 0f 84 68 06 00 00 je 56e3c <_IO_vfscanf+0x24ac> 0.00 : 567d4: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 567db: 75 db jne 567b8 <_IO_vfscanf+0x1e28> 0.00 : 567dd: 49 81 fc 00 01 00 00 cmp $0x100,%r12 0.00 : 567e4: ba 00 01 00 00 mov $0x100,%edx 0.00 : 567e9: 49 0f 43 d4 cmovae %r12,%rdx 0.00 : 567ed: 48 89 d0 mov %rdx,%rax 0.00 : 567f0: 48 89 95 50 fd ff ff mov %rdx,-0x2b0(%rbp) 0.00 : 567f7: 48 83 c0 1e add $0x1e,%rax 0.00 : 567fb: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 567ff: 48 29 c4 sub %rax,%rsp 0.00 : 56802: 4c 8d 6c 24 0f lea 0xf(%rsp),%r13 0.00 : 56807: 49 83 e5 f0 and $0xfffffffffffffff0,%r13 0.00 : 5680b: 4d 85 c9 test %r9,%r9 0.00 : 5680e: 0f 84 b3 0c 00 00 je 574c7 <_IO_vfscanf+0x2b37> 0.00 : 56814: 4c 89 ce mov %r9,%rsi 0.00 : 56817: 4c 89 f2 mov %r14,%rdx 0.00 : 5681a: 4c 89 ef mov %r13,%rdi 0.00 : 5681d: 44 89 85 30 fc ff ff mov %r8d,-0x3d0(%rbp) 0.00 : 56824: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5682b: e8 20 df 02 00 callq 84750 0.00 : 56830: 4d 89 e9 mov %r13,%r9 0.00 : 56833: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5683a: 44 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8d 0.00 : 56841: e9 72 ff ff ff jmpq 567b8 <_IO_vfscanf+0x1e28> 0.00 : 56846: 41 83 c7 01 add $0x1,%r15d 0.00 : 5684a: 0f 84 b0 e4 ff ff je 54d00 <_IO_vfscanf+0x370> 0.00 : 56850: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56854: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56858: 0f 83 a3 47 00 00 jae 5b001 <_IO_vfscanf+0x6671> 0.00 : 5685e: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56862: 48 83 c0 01 add $0x1,%rax 0.00 : 56866: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5686a: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 56871: 49 83 c3 01 add $0x1,%r11 0.00 : 56875: 41 83 ff 25 cmp $0x25,%r15d 0.00 : 56879: 0f 84 6e e4 ff ff je 54ced <_IO_vfscanf+0x35d> 0.00 : 5687f: e9 fa f4 ff ff jmpq 55d7e <_IO_vfscanf+0x13ee> 0.00 : 56884: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 56888: 48 8b 05 a9 b5 31 00 mov 0x31b5a9(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5688f: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 56896: c7 85 00 fd ff ff ff movl $0xffffffff,-0x300(%rbp) 0.00 : 5689d: ff ff ff 0.00 : 568a0: c7 04 07 09 00 00 00 movl $0x9,(%rdi,%rax,1) 0.00 : 568a7: e9 a7 e3 ff ff jmpq 54c53 <_IO_vfscanf+0x2c3> 0.00 : 568ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 568b0: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 568b4: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 568b8: 0f 83 68 11 00 00 jae 57a26 <_IO_vfscanf+0x3096> 0.00 : 568be: 0f b6 18 movzbl (%rax),%ebx 0.00 : 568c1: 48 83 c0 01 add $0x1,%rax 0.00 : 568c5: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 568c9: 49 83 c3 01 add $0x1,%r11 0.00 : 568cd: 88 9d f0 fe ff ff mov %bl,-0x110(%rbp) 0.00 : 568d3: e9 08 ee ff ff jmpq 556e0 <_IO_vfscanf+0xd50> 0.00 : 568d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 568df: 00 0.00 : 568e0: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 568e4: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 568e8: 0f 83 bc 11 00 00 jae 57aaa <_IO_vfscanf+0x311a> 0.00 : 568ee: 0f b6 18 movzbl (%rax),%ebx 0.00 : 568f1: 48 83 c0 01 add $0x1,%rax 0.00 : 568f5: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 568f9: 49 83 c3 01 add $0x1,%r11 0.00 : 568fd: 88 9d f0 fe ff ff mov %bl,-0x110(%rbp) 0.00 : 56903: e9 58 ec ff ff jmpq 55560 <_IO_vfscanf+0xbd0> 0.00 : 56908: 48 83 e8 01 sub $0x1,%rax 0.00 : 5690c: 41 89 df mov %ebx,%r15d 0.00 : 5690f: 0f 85 b1 2d 00 00 jne 596c6 <_IO_vfscanf+0x4d36> 0.00 : 56915: 8b 85 9c fc ff ff mov -0x364(%rbp),%eax 0.00 : 5691b: 2b 85 a8 fd ff ff sub -0x258(%rbp),%eax 0.00 : 56921: 48 83 85 e0 fd ff ff addq $0x4,-0x220(%rbp) 0.00 : 56928: 04 0.00 : 56929: 85 c0 test %eax,%eax 0.00 : 5692b: 0f 8e d1 08 00 00 jle 57202 <_IO_vfscanf+0x2872> 0.00 : 56931: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 56934: 0f 84 ab 2d 00 00 je 596e5 <_IO_vfscanf+0x4d55> 0.00 : 5693a: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5693e: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56942: 0f 83 73 08 00 00 jae 571bb <_IO_vfscanf+0x282b> 0.00 : 56948: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5694c: 48 83 c0 01 add $0x1,%rax 0.00 : 56950: 49 83 c3 01 add $0x1,%r11 0.00 : 56954: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56958: 48 83 85 a8 fd ff ff addq $0x1,-0x258(%rbp) 0.00 : 5695f: 01 0.00 : 56960: 4c 89 a5 e8 fd ff ff mov %r12,-0x218(%rbp) 0.00 : 56967: e9 24 ed ff ff jmpq 55690 <_IO_vfscanf+0xd00> 0.00 : 5696c: 48 83 e8 01 sub $0x1,%rax 0.00 : 56970: 41 89 df mov %ebx,%r15d 0.00 : 56973: 0f 85 af 27 00 00 jne 59128 <_IO_vfscanf+0x4798> 0.00 : 56979: 48 83 85 e0 fd ff ff addq $0x4,-0x220(%rbp) 0.00 : 56980: 04 0.00 : 56981: 45 85 f6 test %r14d,%r14d 0.00 : 56984: 75 34 jne 569ba <_IO_vfscanf+0x202a> 0.00 : 56986: 8b 85 8c fc ff ff mov -0x374(%rbp),%eax 0.00 : 5698c: 85 c0 test %eax,%eax 0.00 : 5698e: 74 2a je 569ba <_IO_vfscanf+0x202a> 0.00 : 56990: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 56997: 4a 8d 04 a5 00 00 00 lea 0x0(,%r12,4),%rax 0.00 : 5699e: 00 0.00 : 5699f: 48 8b 3e mov (%rsi),%rdi 0.00 : 569a2: 48 89 85 f8 fd ff ff mov %rax,-0x208(%rbp) 0.00 : 569a9: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 569ad: 48 39 85 e0 fd ff ff cmp %rax,-0x220(%rbp) 0.00 : 569b4: 0f 84 f6 2f 00 00 je 599b0 <_IO_vfscanf+0x5020> 0.00 : 569ba: 4d 89 e0 mov %r12,%r8 0.00 : 569bd: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 569c3: 85 c0 test %eax,%eax 0.00 : 569c5: 7e 0d jle 569d4 <_IO_vfscanf+0x2044> 0.00 : 569c7: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 569ce: 0f 84 73 27 00 00 je 59147 <_IO_vfscanf+0x47b7> 0.00 : 569d4: 83 c3 01 add $0x1,%ebx 0.00 : 569d7: 0f 84 80 33 00 00 je 59d5d <_IO_vfscanf+0x53cd> 0.00 : 569dd: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 569e1: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 569e5: 0f 83 15 33 00 00 jae 59d00 <_IO_vfscanf+0x5370> 0.00 : 569eb: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 569ef: 48 83 c0 01 add $0x1,%rax 0.00 : 569f3: 49 83 c3 01 add $0x1,%r11 0.00 : 569f7: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 569fb: 4d 89 c4 mov %r8,%r12 0.00 : 569fe: e9 3a eb ff ff jmpq 5553d <_IO_vfscanf+0xbad> 0.00 : 56a03: 48 8b bd c8 fd ff ff mov -0x238(%rbp),%rdi 0.00 : 56a0a: 0f b6 0f movzbl (%rdi),%ecx 0.00 : 56a0d: 84 c9 test %cl,%cl 0.00 : 56a0f: 0f 84 a3 fb ff ff je 565b8 <_IO_vfscanf+0x1c28> 0.00 : 56a15: 80 f9 5d cmp $0x5d,%cl 0.00 : 56a18: 0f 84 9a fb ff ff je 565b8 <_IO_vfscanf+0x1c28> 0.00 : 56a1e: 0f b6 57 fe movzbl -0x2(%rdi),%edx 0.00 : 56a22: 38 ca cmp %cl,%dl 0.00 : 56a24: 0f 87 8e fb ff ff ja 565b8 <_IO_vfscanf+0x1c28> 0.00 : 56a2a: 0f 83 a0 fb ff ff jae 565d0 <_IO_vfscanf+0x1c40> 0.00 : 56a30: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 56a37: 0f b6 c2 movzbl %dl,%eax 0.00 : 56a3a: 83 c2 01 add $0x1,%edx 0.00 : 56a3d: c6 04 01 01 movb $0x1,(%rcx,%rax,1) 0.00 : 56a41: 48 8b b5 c8 fd ff ff mov -0x238(%rbp),%rsi 0.00 : 56a48: 38 16 cmp %dl,(%rsi) 0.00 : 56a4a: 77 e4 ja 56a30 <_IO_vfscanf+0x20a0> 0.00 : 56a4c: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 56a4f: 89 c8 mov %ecx,%eax 0.00 : 56a51: e9 42 fb ff ff jmpq 56598 <_IO_vfscanf+0x1c08> 0.00 : 56a56: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56a5a: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56a5e: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 56a65: 4c 8b 61 70 mov 0x70(%rcx),%r12 0.00 : 56a69: 0f 83 a7 36 00 00 jae 5a116 <_IO_vfscanf+0x5786> 0.00 : 56a6f: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56a73: 48 83 c0 01 add $0x1,%rax 0.00 : 56a77: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56a7b: 41 0f b6 c7 movzbl %r15b,%eax 0.00 : 56a7f: 49 83 c3 01 add $0x1,%r11 0.00 : 56a83: 48 c1 e0 02 shl $0x2,%rax 0.00 : 56a87: 41 83 3c 04 6e cmpl $0x6e,(%r12,%rax,1) 0.00 : 56a8c: 0f 85 e2 f2 ff ff jne 55d74 <_IO_vfscanf+0x13e4> 0.00 : 56a92: 48 8b bd 08 fd ff ff mov -0x2f8(%rbp),%rdi 0.00 : 56a99: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 56a9d: 4c 8b 67 70 mov 0x70(%rdi),%r12 0.00 : 56aa1: 0f 85 49 09 00 00 jne 573f0 <_IO_vfscanf+0x2a60> 0.00 : 56aa7: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 56aae: 48 8b 1d 83 b3 31 00 mov 0x31b383(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 56ab5: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 56abb: 89 14 18 mov %edx,(%rax,%rbx,1) 0.00 : 56abe: b8 fc 03 00 00 mov $0x3fc,%eax 0.00 : 56ac3: 41 83 3c 04 69 cmpl $0x69,(%r12,%rax,1) 0.00 : 56ac8: 0f 85 a6 f2 ff ff jne 55d74 <_IO_vfscanf+0x13e4> 0.00 : 56ace: 48 8b 9d 08 fd ff ff mov -0x2f8(%rbp),%rbx 0.00 : 56ad5: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 56ad9: 4c 8b 63 70 mov 0x70(%rbx),%r12 0.00 : 56add: 0f 85 38 09 00 00 jne 5741b <_IO_vfscanf+0x2a8b> 0.00 : 56ae3: 48 8b 1d 4e b3 31 00 mov 0x31b34e(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 56aea: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 56af0: b8 fc 03 00 00 mov $0x3fc,%eax 0.00 : 56af5: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 56afc: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 56aff: 41 83 3c 04 6c cmpl $0x6c,(%r12,%rax,1) 0.00 : 56b04: 0f 85 6a f2 ff ff jne 55d74 <_IO_vfscanf+0x13e4> 0.00 : 56b0a: 41 83 c7 01 add $0x1,%r15d 0.00 : 56b0e: 0f 85 53 03 00 00 jne 56e67 <_IO_vfscanf+0x24d7> 0.00 : 56b14: 48 8b 05 1d b3 31 00 mov 0x31b31d(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 56b1b: 8b 8d 1c fd ff ff mov -0x2e4(%rbp),%ecx 0.00 : 56b21: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 56b26: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 56b2d: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 56b30: e9 ab e3 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 56b35: 8b 85 ac fc ff ff mov -0x354(%rbp),%eax 0.00 : 56b3b: 85 c0 test %eax,%eax 0.00 : 56b3d: 0f 84 81 00 00 00 je 56bc4 <_IO_vfscanf+0x2234> 0.00 : 56b43: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 56b4a: 49 63 d7 movslq %r15d,%rdx 0.00 : 56b4d: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 56b51: f6 44 50 01 10 testb $0x10,0x1(%rax,%rdx,2) 0.00 : 56b56: 74 6c je 56bc4 <_IO_vfscanf+0x2234> 0.00 : 56b58: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 56b5f: 4d 89 cc mov %r9,%r12 0.00 : 56b62: 0f 85 61 fb ff ff jne 566c9 <_IO_vfscanf+0x1d39> 0.00 : 56b68: 4b 8d 1c 36 lea (%r14,%r14,1),%rbx 0.00 : 56b6c: be 00 01 00 00 mov $0x100,%esi 0.00 : 56b71: 48 81 fb 00 01 00 00 cmp $0x100,%rbx 0.00 : 56b78: 48 0f 43 f3 cmovae %rbx,%rsi 0.00 : 56b7c: 48 89 b5 50 fd ff ff mov %rsi,-0x2b0(%rbp) 0.00 : 56b83: 48 89 f0 mov %rsi,%rax 0.00 : 56b86: 48 83 c0 1e add $0x1e,%rax 0.00 : 56b8a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 56b8e: 48 29 c4 sub %rax,%rsp 0.00 : 56b91: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 56b96: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 56b9a: 4d 85 c9 test %r9,%r9 0.00 : 56b9d: 0f 84 26 fb ff ff je 566c9 <_IO_vfscanf+0x1d39> 0.00 : 56ba3: 4c 89 f2 mov %r14,%rdx 0.00 : 56ba6: 4c 89 ce mov %r9,%rsi 0.00 : 56ba9: 4c 89 e7 mov %r12,%rdi 0.00 : 56bac: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56bb3: e8 98 db 02 00 callq 84750 0.00 : 56bb8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 56bbf: e9 05 fb ff ff jmpq 566c9 <_IO_vfscanf+0x1d39> 0.00 : 56bc4: 4d 85 f6 test %r14,%r14 0.00 : 56bc7: 0f 84 87 fb ff ff je 56754 <_IO_vfscanf+0x1dc4> 0.00 : 56bcd: 48 8b 9d 08 fd ff ff mov -0x2f8(%rbp),%rbx 0.00 : 56bd4: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 56bd8: 0f b6 8d 1f fe ff ff movzbl -0x1e1(%rbp),%ecx 0.00 : 56bdf: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 56be3: 3a 0c 90 cmp (%rax,%rdx,4),%cl 0.00 : 56be6: 0f 85 68 fb ff ff jne 56754 <_IO_vfscanf+0x1dc4> 0.00 : 56bec: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 56bf3: 4d 89 cc mov %r9,%r12 0.00 : 56bf6: 0f 84 40 23 00 00 je 58f3c <_IO_vfscanf+0x45ac> 0.00 : 56bfc: 0f b6 85 1f fe ff ff movzbl -0x1e1(%rbp),%eax 0.00 : 56c03: 43 88 04 34 mov %al,(%r12,%r14,1) 0.00 : 56c07: 49 83 c6 01 add $0x1,%r14 0.00 : 56c0b: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 56c12: c6 85 20 fd ff ff 01 movb $0x1,-0x2e0(%rbp) 0.00 : 56c19: c6 85 21 fd ff ff 01 movb $0x1,-0x2df(%rbp) 0.00 : 56c20: e9 b3 fa ff ff jmpq 566d8 <_IO_vfscanf+0x1d48> 0.00 : 56c25: 45 85 ed test %r13d,%r13d 0.00 : 56c28: 75 3b jne 56c65 <_IO_vfscanf+0x22d5> 0.00 : 56c2a: 31 db xor %ebx,%ebx 0.00 : 56c2c: e9 af e2 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 56c31: 48 8b 05 00 b2 31 00 mov 0x31b200(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 56c38: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 56c3e: 48 c7 c2 fe ff ff ff mov $0xfffffffffffffffe,%rdx 0.00 : 56c45: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 56c4c: 89 3c 06 mov %edi,(%rsi,%rax,1) 0.00 : 56c4f: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 56c56: 48 8b 41 68 mov 0x68(%rcx),%rax 0.00 : 56c5a: f6 44 10 01 20 testb $0x20,0x1(%rax,%rdx,1) 0.00 : 56c5f: 0f 84 66 06 00 00 je 572cb <_IO_vfscanf+0x293b> 0.00 : 56c65: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 56c69: 74 c6 je 56c31 <_IO_vfscanf+0x22a1> 0.00 : 56c6b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56c6f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56c73: 0f 83 e0 47 00 00 jae 5b459 <_IO_vfscanf+0x6ac9> 0.00 : 56c79: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56c7d: 48 83 c0 01 add $0x1,%rax 0.00 : 56c81: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56c85: 49 63 c7 movslq %r15d,%rax 0.00 : 56c88: 48 8d 14 00 lea (%rax,%rax,1),%rdx 0.00 : 56c8c: eb c1 jmp 56c4f <_IO_vfscanf+0x22bf> 0.00 : 56c8e: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 56c95: 0f b6 02 movzbl (%rdx),%eax 0.00 : 56c98: 3c 2b cmp $0x2b,%al 0.00 : 56c9a: 0f 84 d4 f0 ff ff je 55d74 <_IO_vfscanf+0x13e4> 0.00 : 56ca0: 3c 2d cmp $0x2d,%al 0.00 : 56ca2: 0f 85 28 e6 ff ff jne 552d0 <_IO_vfscanf+0x940> 0.00 : 56ca8: e9 c7 f0 ff ff jmpq 55d74 <_IO_vfscanf+0x13e4> 0.00 : 56cad: 48 8b 9d 28 fd ff ff mov -0x2d8(%rbp),%rbx 0.00 : 56cb4: 44 89 f9 mov %r15d,%ecx 0.00 : 56cb7: 0f b6 13 movzbl (%rbx),%edx 0.00 : 56cba: 49 89 dc mov %rbx,%r12 0.00 : 56cbd: 0f b6 c2 movzbl %dl,%eax 0.00 : 56cc0: 41 39 c7 cmp %eax,%r15d 0.00 : 56cc3: 0f 85 be fa ff ff jne 56787 <_IO_vfscanf+0x1df7> 0.00 : 56cc9: 4c 8b a5 b0 fc ff ff mov -0x350(%rbp),%r12 0.00 : 56cd0: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 56cd5: 0f 84 c1 fa ff ff je 5679c <_IO_vfscanf+0x1e0c> 0.00 : 56cdb: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 56ce2: 01 0.00 : 56ce3: eb 1a jmp 56cff <_IO_vfscanf+0x236f> 0.00 : 56ce5: 0f 1f 00 nopl (%rax) 0.00 : 56ce8: 48 8b 85 d0 fd ff ff mov -0x230(%rbp),%rax 0.00 : 56cef: 48 83 c0 01 add $0x1,%rax 0.00 : 56cf3: 45 85 c0 test %r8d,%r8d 0.00 : 56cf6: 74 5e je 56d56 <_IO_vfscanf+0x23c6> 0.00 : 56cf8: 48 89 85 d0 fd ff ff mov %rax,-0x230(%rbp) 0.00 : 56cff: 4c 8b ad d0 fd ff ff mov -0x230(%rbp),%r13 0.00 : 56d06: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56d0a: 49 83 ed 01 sub $0x1,%r13 0.00 : 56d0e: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56d12: 0f 83 70 1a 00 00 jae 58788 <_IO_vfscanf+0x3df8> 0.00 : 56d18: 0f b6 08 movzbl (%rax),%ecx 0.00 : 56d1b: 48 83 c0 01 add $0x1,%rax 0.00 : 56d1f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56d23: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 56d28: 41 83 e8 01 sub $0x1,%r8d 0.00 : 56d2c: 44 0f b6 fa movzbl %dl,%r15d 0.00 : 56d30: 41 39 cf cmp %ecx,%r15d 0.00 : 56d33: 0f 85 4e fa ff ff jne 56787 <_IO_vfscanf+0x1df7> 0.00 : 56d39: 49 83 c4 01 add $0x1,%r12 0.00 : 56d3d: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 56d42: 75 a4 jne 56ce8 <_IO_vfscanf+0x2358> 0.00 : 56d44: 48 8b b5 28 fd ff ff mov -0x2d8(%rbp),%rsi 0.00 : 56d4b: 0f b6 16 movzbl (%rsi),%edx 0.00 : 56d4e: e9 49 fa ff ff jmpq 5679c <_IO_vfscanf+0x1e0c> 0.00 : 56d53: 41 89 cf mov %ecx,%r15d 0.00 : 56d56: 80 bd bf fc ff ff 00 cmpb $0x0,-0x341(%rbp) 0.00 : 56d5d: 0f 85 93 05 00 00 jne 572f6 <_IO_vfscanf+0x2966> 0.00 : 56d63: 4c 8b a5 30 fd ff ff mov -0x2d0(%rbp),%r12 0.00 : 56d6a: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 56d71: 4d 85 e4 test %r12,%r12 0.00 : 56d74: 0f 84 d6 25 00 00 je 59350 <_IO_vfscanf+0x49c0> 0.00 : 56d7a: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 56d7f: 0f 85 cb 25 00 00 jne 59350 <_IO_vfscanf+0x49c0> 0.00 : 56d85: 48 8b 95 30 fd ff ff mov -0x2d0(%rbp),%rdx 0.00 : 56d8c: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 56d8f: 0f 84 1c 01 00 00 je 56eb1 <_IO_vfscanf+0x2521> 0.00 : 56d95: 4f 8d 24 36 lea (%r14,%r14,1),%r12 0.00 : 56d99: 48 89 d3 mov %rdx,%rbx 0.00 : 56d9c: eb 1e jmp 56dbc <_IO_vfscanf+0x242c> 0.00 : 56d9e: 66 90 xchg %ax,%ax 0.00 : 56da0: 0f b6 03 movzbl (%rbx),%eax 0.00 : 56da3: 48 83 c3 01 add $0x1,%rbx 0.00 : 56da7: 49 83 c4 02 add $0x2,%r12 0.00 : 56dab: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 56daf: 49 83 c6 01 add $0x1,%r14 0.00 : 56db3: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 56db6: 0f 84 f5 00 00 00 je 56eb1 <_IO_vfscanf+0x2521> 0.00 : 56dbc: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 56dc3: 75 db jne 56da0 <_IO_vfscanf+0x2410> 0.00 : 56dc5: 49 81 fc 00 01 00 00 cmp $0x100,%r12 0.00 : 56dcc: b9 00 01 00 00 mov $0x100,%ecx 0.00 : 56dd1: 49 0f 43 cc cmovae %r12,%rcx 0.00 : 56dd5: 48 89 c8 mov %rcx,%rax 0.00 : 56dd8: 48 89 8d 50 fd ff ff mov %rcx,-0x2b0(%rbp) 0.00 : 56ddf: 48 83 c0 1e add $0x1e,%rax 0.00 : 56de3: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 56de7: 48 29 c4 sub %rax,%rsp 0.00 : 56dea: 4c 8d 6c 24 0f lea 0xf(%rsp),%r13 0.00 : 56def: 49 83 e5 f0 and $0xfffffffffffffff0,%r13 0.00 : 56df3: 4d 85 c9 test %r9,%r9 0.00 : 56df6: 0f 84 ea 06 00 00 je 574e6 <_IO_vfscanf+0x2b56> 0.00 : 56dfc: 4c 89 ce mov %r9,%rsi 0.00 : 56dff: 4c 89 f2 mov %r14,%rdx 0.00 : 56e02: 4c 89 ef mov %r13,%rdi 0.00 : 56e05: 44 89 85 30 fc ff ff mov %r8d,-0x3d0(%rbp) 0.00 : 56e0c: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56e13: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 56e1a: e8 31 d9 02 00 callq 84750 0.00 : 56e1f: 4d 89 e9 mov %r13,%r9 0.00 : 56e22: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 56e29: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 56e30: 44 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8d 0.00 : 56e37: e9 64 ff ff ff jmpq 56da0 <_IO_vfscanf+0x2410> 0.00 : 56e3c: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 56e42: 85 c0 test %eax,%eax 0.00 : 56e44: 0f 8e c6 0b 00 00 jle 57a10 <_IO_vfscanf+0x3080> 0.00 : 56e4a: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 56e51: 44 89 85 dc fd ff ff mov %r8d,-0x224(%rbp) 0.00 : 56e58: 4d 89 cc mov %r9,%r12 0.00 : 56e5b: c6 85 20 fd ff ff 01 movb $0x1,-0x2e0(%rbp) 0.00 : 56e62: e9 71 f8 ff ff jmpq 566d8 <_IO_vfscanf+0x1d48> 0.00 : 56e67: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 56e6b: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 56e6f: 0f 83 27 4a 00 00 jae 5b89c <_IO_vfscanf+0x6f0c> 0.00 : 56e75: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 56e79: 48 83 c0 01 add $0x1,%rax 0.00 : 56e7d: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 56e81: 41 83 ff 29 cmp $0x29,%r15d 0.00 : 56e85: 0f 85 f3 ee ff ff jne 55d7e <_IO_vfscanf+0x13ee> 0.00 : 56e8b: 48 83 bd 50 fd ff ff cmpq $0x0,-0x2b0(%rbp) 0.00 : 56e92: 00 0.00 : 56e93: 0f 84 03 0b 00 00 je 5799c <_IO_vfscanf+0x300c> 0.00 : 56e99: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 56ea0: 49 83 c3 01 add $0x1,%r11 0.00 : 56ea4: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 56ea9: c6 06 30 movb $0x30,(%rsi) 0.00 : 56eac: e9 51 e4 ff ff jmpq 55302 <_IO_vfscanf+0x972> 0.00 : 56eb1: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 56eb7: 4d 89 cc mov %r9,%r12 0.00 : 56eba: 85 c0 test %eax,%eax 0.00 : 56ebc: 0f 8e 16 f8 ff ff jle 566d8 <_IO_vfscanf+0x1d48> 0.00 : 56ec2: 44 89 85 dc fd ff ff mov %r8d,-0x224(%rbp) 0.00 : 56ec9: 4d 89 cc mov %r9,%r12 0.00 : 56ecc: e9 07 f8 ff ff jmpq 566d8 <_IO_vfscanf+0x1d48> 0.00 : 56ed1: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 56ed8: 08 0.00 : 56ed9: e9 f5 e4 ff ff jmpq 553d3 <_IO_vfscanf+0xa43> 0.00 : 56ede: 4c 8b a5 30 fd ff ff mov -0x2d0(%rbp),%r12 0.00 : 56ee5: e9 f0 ea ff ff jmpq 559da <_IO_vfscanf+0x104a> 0.00 : 56eea: 4c 89 d7 mov %r10,%rdi 0.00 : 56eed: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56ef4: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 56efb: e8 00 e3 01 00 callq 75200 <__uflow> 0.00 : 56f00: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 56f03: 41 89 c7 mov %eax,%r15d 0.00 : 56f06: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 56f0d: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 56f14: 0f 84 f9 dc ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 56f1a: e9 b6 dd ff ff jmpq 54cd5 <_IO_vfscanf+0x345> 0.00 : 56f1f: 90 nop 0.00 : 56f20: 48 8d 3c 1b lea (%rbx,%rbx,1),%rdi 0.00 : 56f24: b8 00 01 00 00 mov $0x100,%eax 0.00 : 56f29: 48 81 ff 00 01 00 00 cmp $0x100,%rdi 0.00 : 56f30: 48 0f 43 c7 cmovae %rdi,%rax 0.00 : 56f34: 48 89 85 50 fd ff ff mov %rax,-0x2b0(%rbp) 0.00 : 56f3b: 48 83 c0 1e add $0x1e,%rax 0.00 : 56f3f: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 56f43: 48 29 c4 sub %rax,%rsp 0.00 : 56f46: 4c 8d 6c 24 0f lea 0xf(%rsp),%r13 0.00 : 56f4b: 49 83 e5 f0 and $0xfffffffffffffff0,%r13 0.00 : 56f4f: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 56f56: 00 0.00 : 56f57: 0f 84 b9 e3 ff ff je 55316 <_IO_vfscanf+0x986> 0.00 : 56f5d: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 56f64: 48 89 da mov %rbx,%rdx 0.00 : 56f67: 4c 89 ef mov %r13,%rdi 0.00 : 56f6a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56f71: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 56f78: e8 d3 d7 02 00 callq 84750 0.00 : 56f7d: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 56f84: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 56f8b: e9 86 e3 ff ff jmpq 55316 <_IO_vfscanf+0x986> 0.00 : 56f90: 41 0f b6 08 movzbl (%r8),%ecx 0.00 : 56f94: c7 85 dc fd ff ff ff movl $0xffffffff,-0x224(%rbp) 0.00 : 56f9b: ff ff ff 0.00 : 56f9e: e9 2c de ff ff jmpq 54dcf <_IO_vfscanf+0x43f> 0.00 : 56fa3: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 56faa: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 56fb1: 00 01 00 00 0.00 : 56fb5: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 56fba: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 56fbe: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 56fc5: e9 4f ed ff ff jmpq 55d19 <_IO_vfscanf+0x1389> 0.00 : 56fca: 4c 89 d7 mov %r10,%rdi 0.00 : 56fcd: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 56fd4: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 56fdb: e8 20 e2 01 00 callq 75200 <__uflow> 0.00 : 56fe0: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 56fe3: 41 89 c7 mov %eax,%r15d 0.00 : 56fe6: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 56fed: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 56ff4: 0f 85 66 f1 ff ff jne 56160 <_IO_vfscanf+0x17d0> 0.00 : 56ffa: 48 8b 1d 37 ae 31 00 mov 0x31ae37(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57001: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 57008: 8b 1c 19 mov (%rcx,%rbx,1),%ebx 0.00 : 5700b: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 57011: 4d 89 ec mov %r13,%r12 0.00 : 57014: 45 85 f6 test %r14d,%r14d 0.00 : 57017: 0f 85 d7 dc ff ff jne 54cf4 <_IO_vfscanf+0x364> 0.00 : 5701d: 48 8b 9d 40 fd ff ff mov -0x2c0(%rbp),%rbx 0.00 : 57024: c6 03 00 movb $0x0,(%rbx) 0.00 : 57027: 48 83 c3 01 add $0x1,%rbx 0.00 : 5702b: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 57032: 21 00 00 0.00 : 57035: 48 89 9d 40 fd ff ff mov %rbx,-0x2c0(%rbp) 0.00 : 5703c: 74 45 je 57083 <_IO_vfscanf+0x26f3> 0.00 : 5703e: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 57045: 48 8b 3e mov (%rsi),%rdi 0.00 : 57048: 48 89 de mov %rbx,%rsi 0.00 : 5704b: 48 29 fe sub %rdi,%rsi 0.00 : 5704e: 4c 39 e6 cmp %r12,%rsi 0.00 : 57051: 74 30 je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57053: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5705a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57061: e8 da 77 fc ff callq 1e840 0.00 : 57066: 48 85 c0 test %rax,%rax 0.00 : 57069: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57070: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57077: 74 0a je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57079: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 57080: 48 89 07 mov %rax,(%rdi) 0.00 : 57083: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 5708a: 48 c7 85 48 fd ff ff movq $0x0,-0x2b8(%rbp) 0.00 : 57091: 00 00 00 00 0.00 : 57095: 45 31 ed xor %r13d,%r13d 0.00 : 57098: e9 fe da ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 5709d: f6 85 04 fd ff ff 04 testb $0x4,-0x2fc(%rbp) 0.00 : 570a4: 0f 84 3b 0a 00 00 je 57ae5 <_IO_vfscanf+0x3155> 0.00 : 570aa: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 570b0: 85 c0 test %eax,%eax 0.00 : 570b2: 0f 85 a2 1a 00 00 jne 58b5a <_IO_vfscanf+0x41ca> 0.00 : 570b8: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 570be: 83 f8 30 cmp $0x30,%eax 0.00 : 570c1: 0f 83 ba 10 00 00 jae 58181 <_IO_vfscanf+0x37f1> 0.00 : 570c7: 89 c2 mov %eax,%edx 0.00 : 570c9: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 570d0: 83 c0 08 add $0x8,%eax 0.00 : 570d3: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 570d9: 48 8b 02 mov (%rdx),%rax 0.00 : 570dc: 66 89 08 mov %cx,(%rax) 0.00 : 570df: e9 17 eb ff ff jmpq 55bfb <_IO_vfscanf+0x126b> 0.00 : 570e4: f6 85 04 fd ff ff 04 testb $0x4,-0x2fc(%rbp) 0.00 : 570eb: 0f 84 70 09 00 00 je 57a61 <_IO_vfscanf+0x30d1> 0.00 : 570f1: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 570f7: 85 d2 test %edx,%edx 0.00 : 570f9: 74 bd je 570b8 <_IO_vfscanf+0x2728> 0.00 : 570fb: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 57102: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 57109: 48 8b 07 mov (%rdi),%rax 0.00 : 5710c: 48 89 02 mov %rax,(%rdx) 0.00 : 5710f: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 57113: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 5711a: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 5711e: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 57122: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 57126: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 5712c: 83 ea 01 sub $0x1,%edx 0.00 : 5712f: 74 17 je 57148 <_IO_vfscanf+0x27b8> 0.00 : 57131: 83 f8 30 cmp $0x30,%eax 0.00 : 57134: 0f 83 2f 03 00 00 jae 57469 <_IO_vfscanf+0x2ad9> 0.00 : 5713a: 83 c0 08 add $0x8,%eax 0.00 : 5713d: 83 ea 01 sub $0x1,%edx 0.00 : 57140: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 57146: 75 e9 jne 57131 <_IO_vfscanf+0x27a1> 0.00 : 57148: 83 f8 30 cmp $0x30,%eax 0.00 : 5714b: 0f 83 af 1a 00 00 jae 58c00 <_IO_vfscanf+0x4270> 0.00 : 57151: 89 c2 mov %eax,%edx 0.00 : 57153: 83 c0 08 add $0x8,%eax 0.00 : 57156: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5715d: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 57163: e9 71 ff ff ff jmpq 570d9 <_IO_vfscanf+0x2749> 0.00 : 57168: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 5716e: 85 c0 test %eax,%eax 0.00 : 57170: 0f 85 11 2b 00 00 jne 59c87 <_IO_vfscanf+0x52f7> 0.00 : 57176: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 5717c: 83 f8 30 cmp $0x30,%eax 0.00 : 5717f: 0f 83 eb 2a 00 00 jae 59c70 <_IO_vfscanf+0x52e0> 0.00 : 57185: 89 c2 mov %eax,%edx 0.00 : 57187: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 5718e: 83 c0 08 add $0x8,%eax 0.00 : 57191: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 57197: 48 8b 12 mov (%rdx),%rdx 0.00 : 5719a: 48 89 95 40 fd ff ff mov %rdx,-0x2c0(%rbp) 0.00 : 571a1: 48 83 bd 40 fd ff ff cmpq $0x0,-0x2c0(%rbp) 0.00 : 571a8: 00 0.00 : 571a9: 0f 84 29 dd ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 571af: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 571b6: e9 46 f3 ff ff jmpq 56501 <_IO_vfscanf+0x1b71> 0.00 : 571bb: 4c 89 d7 mov %r10,%rdi 0.00 : 571be: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 571c5: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 571cc: e8 2f e0 01 00 callq 75200 <__uflow> 0.00 : 571d1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 571d4: 41 89 c7 mov %eax,%r15d 0.00 : 571d7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 571de: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 571e5: 0f 85 d8 30 00 00 jne 5a2c3 <_IO_vfscanf+0x5933> 0.00 : 571eb: 48 8b 1d 46 ac 31 00 mov 0x31ac46(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 571f2: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 571f9: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 571fc: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 57202: 45 85 ed test %r13d,%r13d 0.00 : 57205: 0f 85 e9 da ff ff jne 54cf4 <_IO_vfscanf+0x364> 0.00 : 5720b: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 57212: 21 00 00 0.00 : 57215: 0f 84 68 fe ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 5721b: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 57222: 48 8b 38 mov (%rax),%rdi 0.00 : 57225: 48 8b 85 e0 fd ff ff mov -0x220(%rbp),%rax 0.00 : 5722c: 48 29 f8 sub %rdi,%rax 0.00 : 5722f: 48 c1 f8 02 sar $0x2,%rax 0.00 : 57233: 4c 39 e0 cmp %r12,%rax 0.00 : 57236: 0f 84 47 fe ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 5723c: 48 8d 34 85 00 00 00 lea 0x0(,%rax,4),%rsi 0.00 : 57243: 00 0.00 : 57244: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5724b: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57252: e8 e9 75 fc ff callq 1e840 0.00 : 57257: 48 85 c0 test %rax,%rax 0.00 : 5725a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57261: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57268: 0f 84 15 fe ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 5726e: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 57275: 48 89 02 mov %rax,(%rdx) 0.00 : 57278: e9 06 fe ff ff jmpq 57083 <_IO_vfscanf+0x26f3> 0.00 : 5727d: 4c 89 d7 mov %r10,%rdi 0.00 : 57280: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57287: e8 74 df 01 00 callq 75200 <__uflow> 0.00 : 5728c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5728f: 41 89 c7 mov %eax,%r15d 0.00 : 57292: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57299: 0f 85 d5 db ff ff jne 54e74 <_IO_vfscanf+0x4e4> 0.00 : 5729f: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 572a6: 8b 3c 1f mov (%rdi,%rbx,1),%edi 0.00 : 572a9: 89 bd 1c fd ff ff mov %edi,-0x2e4(%rbp) 0.00 : 572af: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 572b6: 83 3c 18 04 cmpl $0x4,(%rax,%rbx,1) 0.00 : 572ba: 0f 84 53 d9 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 572c0: 41 bf ff ff ff ff mov $0xffffffff,%r15d 0.00 : 572c6: e9 b1 db ff ff jmpq 54e7c <_IO_vfscanf+0x4ec> 0.00 : 572cb: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 572cf: 0f 84 55 f9 ff ff je 56c2a <_IO_vfscanf+0x229a> 0.00 : 572d5: 4c 89 d7 mov %r10,%rdi 0.00 : 572d8: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 572dc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 572e3: 31 db xor %ebx,%ebx 0.00 : 572e5: e8 66 ce 01 00 callq 74150 <_IO_sputbackc> 0.00 : 572ea: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 572f1: e9 ea db ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 572f6: 80 bd 20 fd ff ff 00 cmpb $0x0,-0x2e0(%rbp) 0.00 : 572fd: 0f 85 60 fa ff ff jne 56d63 <_IO_vfscanf+0x23d3> 0.00 : 57303: 4c 89 e1 mov %r12,%rcx 0.00 : 57306: 48 2b 8d 28 fd ff ff sub -0x2d8(%rbp),%rcx 0.00 : 5730d: 48 85 c9 test %rcx,%rcx 0.00 : 57310: 0f 8e 82 21 00 00 jle 59498 <_IO_vfscanf+0x4b08> 0.00 : 57316: 48 8b 9d 30 fd ff ff mov -0x2d0(%rbp),%rbx 0.00 : 5731d: 48 8b b5 28 fd ff ff mov -0x2d8(%rbp),%rsi 0.00 : 57324: 0f b6 03 movzbl (%rbx),%eax 0.00 : 57327: 3a 06 cmp (%rsi),%al 0.00 : 57329: 0f 85 34 fa ff ff jne 56d63 <_IO_vfscanf+0x23d3> 0.00 : 5732f: 49 89 dc mov %rbx,%r12 0.00 : 57332: ba 01 00 00 00 mov $0x1,%edx 0.00 : 57337: eb 20 jmp 57359 <_IO_vfscanf+0x29c9> 0.00 : 57339: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 57340: 48 8b bd 28 fd ff ff mov -0x2d8(%rbp),%rdi 0.00 : 57347: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax 0.00 : 5734b: 48 83 c2 01 add $0x1,%rdx 0.00 : 5734f: 41 38 04 24 cmp %al,(%r12) 0.00 : 57353: 0f 85 13 08 00 00 jne 57b6c <_IO_vfscanf+0x31dc> 0.00 : 57359: 49 83 c4 01 add $0x1,%r12 0.00 : 5735d: 48 39 ca cmp %rcx,%rdx 0.00 : 57360: 48 89 d0 mov %rdx,%rax 0.00 : 57363: 7c db jl 57340 <_IO_vfscanf+0x29b0> 0.00 : 57365: 48 39 c8 cmp %rcx,%rax 0.00 : 57368: 0f 85 fe 07 00 00 jne 57b6c <_IO_vfscanf+0x31dc> 0.00 : 5736e: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 57373: 41 39 c7 cmp %eax,%r15d 0.00 : 57376: 0f 85 f0 07 00 00 jne 57b6c <_IO_vfscanf+0x31dc> 0.00 : 5737c: 49 83 c4 01 add $0x1,%r12 0.00 : 57380: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 57385: 0f 84 e1 07 00 00 je 57b6c <_IO_vfscanf+0x31dc> 0.00 : 5738b: 45 85 c0 test %r8d,%r8d 0.00 : 5738e: 0f 84 d8 07 00 00 je 57b6c <_IO_vfscanf+0x31dc> 0.00 : 57394: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5739b: 49 83 c3 01 add $0x1,%r11 0.00 : 5739f: eb 0c jmp 573ad <_IO_vfscanf+0x2a1d> 0.00 : 573a1: 45 85 c0 test %r8d,%r8d 0.00 : 573a4: 49 8d 43 01 lea 0x1(%r11),%rax 0.00 : 573a8: 74 3e je 573e8 <_IO_vfscanf+0x2a58> 0.00 : 573aa: 49 89 c3 mov %rax,%r11 0.00 : 573ad: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 573b1: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 573b5: 4d 8d 6b ff lea -0x1(%r11),%r13 0.00 : 573b9: 0f 83 6e 2b 00 00 jae 59f2d <_IO_vfscanf+0x559d> 0.00 : 573bf: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 573c3: 48 83 c0 01 add $0x1,%rax 0.00 : 573c7: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 573cb: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 573d0: 41 83 e8 01 sub $0x1,%r8d 0.00 : 573d4: 44 39 fa cmp %r15d,%edx 0.00 : 573d7: 0f 85 94 f9 ff ff jne 56d71 <_IO_vfscanf+0x23e1> 0.00 : 573dd: 49 83 c4 01 add $0x1,%r12 0.00 : 573e1: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 573e6: 75 b9 jne 573a1 <_IO_vfscanf+0x2a11> 0.00 : 573e8: 41 89 d7 mov %edx,%r15d 0.00 : 573eb: e9 81 f9 ff ff jmpq 56d71 <_IO_vfscanf+0x23e1> 0.00 : 573f0: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 573f4: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 573f8: 0f 83 a6 3c 00 00 jae 5b0a4 <_IO_vfscanf+0x6714> 0.00 : 573fe: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57402: 48 83 c0 01 add $0x1,%rax 0.00 : 57406: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5740a: 41 0f b6 c7 movzbl %r15b,%eax 0.00 : 5740e: 49 83 c3 01 add $0x1,%r11 0.00 : 57412: 48 c1 e0 02 shl $0x2,%rax 0.00 : 57416: e9 a8 f6 ff ff jmpq 56ac3 <_IO_vfscanf+0x2133> 0.00 : 5741b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5741f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57423: 0f 83 4c 49 00 00 jae 5bd75 <_IO_vfscanf+0x73e5> 0.00 : 57429: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5742d: 48 83 c0 01 add $0x1,%rax 0.00 : 57431: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57435: 41 0f b6 c7 movzbl %r15b,%eax 0.00 : 57439: 49 83 c3 01 add $0x1,%r11 0.00 : 5743d: 48 c1 e0 02 shl $0x2,%rax 0.00 : 57441: e9 b9 f6 ff ff jmpq 56aff <_IO_vfscanf+0x216f> 0.00 : 57446: 4b 8d 34 36 lea (%r14,%r14,1),%rsi 0.00 : 5744a: bf 00 01 00 00 mov $0x100,%edi 0.00 : 5744f: 48 81 fe 00 01 00 00 cmp $0x100,%rsi 0.00 : 57456: 48 0f 43 fe cmovae %rsi,%rdi 0.00 : 5745a: 48 89 bd 50 fd ff ff mov %rdi,-0x2b0(%rbp) 0.00 : 57461: 48 89 f8 mov %rdi,%rax 0.00 : 57464: e9 1d f7 ff ff jmpq 56b86 <_IO_vfscanf+0x21f6> 0.00 : 57469: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 57470: 08 0.00 : 57471: e9 b6 fc ff ff jmpq 5712c <_IO_vfscanf+0x279c> 0.00 : 57476: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 5747c: 85 c0 test %eax,%eax 0.00 : 5747e: 0f 85 2b 2b 00 00 jne 59faf <_IO_vfscanf+0x561f> 0.00 : 57484: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 5748a: 83 f8 30 cmp $0x30,%eax 0.00 : 5748d: 0f 83 05 2b 00 00 jae 59f98 <_IO_vfscanf+0x5608> 0.00 : 57493: 89 c2 mov %eax,%edx 0.00 : 57495: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 5749c: 83 c0 08 add $0x8,%eax 0.00 : 5749f: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 574a5: 48 8b 02 mov (%rdx),%rax 0.00 : 574a8: 0f b6 95 d0 fd ff ff movzbl -0x230(%rbp),%edx 0.00 : 574af: 88 10 mov %dl,(%rax) 0.00 : 574b1: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 574b8: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 574bf: 45 31 ed xor %r13d,%r13d 0.00 : 574c2: e9 d4 d6 ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 574c7: 4d 89 e9 mov %r13,%r9 0.00 : 574ca: e9 e9 f2 ff ff jmpq 567b8 <_IO_vfscanf+0x1e28> 0.00 : 574cf: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 574d6: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 574da: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 574e1: e9 0f e7 ff ff jmpq 55bf5 <_IO_vfscanf+0x1265> 0.00 : 574e6: 4d 89 e9 mov %r13,%r9 0.00 : 574e9: e9 b2 f8 ff ff jmpq 56da0 <_IO_vfscanf+0x2410> 0.00 : 574ee: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 574f5: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 574fc: 00 01 00 00 0.00 : 57500: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 57505: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 57509: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 57510: 00 0.00 : 57511: 0f 84 1f df ff ff je 55436 <_IO_vfscanf+0xaa6> 0.00 : 57517: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 5751e: 4c 89 ca mov %r9,%rdx 0.00 : 57521: 4c 89 e7 mov %r12,%rdi 0.00 : 57524: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5752b: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57532: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57539: e8 12 d2 02 00 callq 84750 0.00 : 5753e: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 57545: 00 01 00 00 0.00 : 57549: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57550: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57557: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5755e: e9 d3 de ff ff jmpq 55436 <_IO_vfscanf+0xaa6> 0.00 : 57563: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 5756a: 0f 85 3f fc ff ff jne 571af <_IO_vfscanf+0x281f> 0.00 : 57570: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 57577: 21 00 00 0.00 : 5757a: 0f 84 e8 fb ff ff je 57168 <_IO_vfscanf+0x27d8> 0.00 : 57580: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 57586: 85 c0 test %eax,%eax 0.00 : 57588: 0f 85 b2 23 00 00 jne 59940 <_IO_vfscanf+0x4fb0> 0.00 : 5758e: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 57594: 83 f8 30 cmp $0x30,%eax 0.00 : 57597: 0f 83 d3 24 00 00 jae 59a70 <_IO_vfscanf+0x50e0> 0.00 : 5759d: 89 c2 mov %eax,%edx 0.00 : 5759f: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 575a6: 83 c0 08 add $0x8,%eax 0.00 : 575a9: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 575af: 48 8b 12 mov (%rdx),%rdx 0.00 : 575b2: 48 89 95 48 fd ff ff mov %rdx,-0x2b8(%rbp) 0.00 : 575b9: 48 83 bd 48 fd ff ff cmpq $0x0,-0x2b8(%rbp) 0.00 : 575c0: 00 0.00 : 575c1: 0f 84 11 d9 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 575c7: bf 64 00 00 00 mov $0x64,%edi 0.00 : 575cc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 575d3: e8 78 72 fc ff callq 1e850 0.00 : 575d8: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 575df: 48 85 c0 test %rax,%rax 0.00 : 575e2: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 575e9: 48 89 02 mov %rax,(%rdx) 0.00 : 575ec: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 575f3: 0f 84 f0 17 00 00 je 58de9 <_IO_vfscanf+0x4459> 0.00 : 575f9: 48 83 bd 38 fd ff ff cmpq $0x0,-0x2c8(%rbp) 0.00 : 57600: 00 0.00 : 57601: 0f 84 39 24 00 00 je 59a40 <_IO_vfscanf+0x50b0> 0.00 : 57607: 48 8b 8d 38 fd ff ff mov -0x2c8(%rbp),%rcx 0.00 : 5760e: 48 8b 11 mov (%rcx),%rdx 0.00 : 57611: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 57615: 0f 84 25 24 00 00 je 59a40 <_IO_vfscanf+0x50b0> 0.00 : 5761b: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 57622: 48 8b bd 38 fd ff ff mov -0x2c8(%rbp),%rdi 0.00 : 57629: 41 bc 64 00 00 00 mov $0x64,%r12d 0.00 : 5762f: 48 89 44 d7 10 mov %rax,0x10(%rdi,%rdx,8) 0.00 : 57634: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 57638: 48 89 07 mov %rax,(%rdi) 0.00 : 5763b: e9 c1 ee ff ff jmpq 56501 <_IO_vfscanf+0x1b71> 0.00 : 57640: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57644: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57648: 0f 83 16 2a 00 00 jae 5a064 <_IO_vfscanf+0x56d4> 0.00 : 5764e: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57652: 48 83 c0 01 add $0x1,%rax 0.00 : 57656: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5765a: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 57661: 01 0.00 : 57662: e9 8e ef ff ff jmpq 565f5 <_IO_vfscanf+0x1c65> 0.00 : 57667: 44 8b 85 24 fd ff ff mov -0x2dc(%rbp),%r8d 0.00 : 5766e: 45 85 c0 test %r8d,%r8d 0.00 : 57671: 0f 85 ad 08 00 00 jne 57f24 <_IO_vfscanf+0x3594> 0.00 : 57677: c7 85 24 fd ff ff 10 movl $0x10,-0x2dc(%rbp) 0.00 : 5767e: 00 00 00 0.00 : 57681: 31 c0 xor %eax,%eax 0.00 : 57683: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5768a: 0f 9f c0 setg %al 0.00 : 5768d: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 57693: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 57697: 0f 85 c3 1f 00 00 jne 59660 <_IO_vfscanf+0x4cd0> 0.00 : 5769d: 48 8b 1d 94 a7 31 00 mov 0x31a794(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 576a4: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 576aa: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 576b1: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 576b4: e9 dd dd ff ff jmpq 55496 <_IO_vfscanf+0xb06> 0.00 : 576b9: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 576c0: 0f b6 c0 movzbl %al,%eax 0.00 : 576c3: c6 04 01 01 movb $0x1,(%rcx,%rax,1) 0.00 : 576c7: 48 83 85 c8 fd ff ff addq $0x1,-0x238(%rbp) 0.00 : 576ce: 01 0.00 : 576cf: 48 8b b5 c8 fd ff ff mov -0x238(%rbp),%rsi 0.00 : 576d6: 0f b6 06 movzbl (%rsi),%eax 0.00 : 576d9: e9 ba ee ff ff jmpq 56598 <_IO_vfscanf+0x1c08> 0.00 : 576de: 41 83 ff 2d cmp $0x2d,%r15d 0.00 : 576e2: 74 0a je 576ee <_IO_vfscanf+0x2d5e> 0.00 : 576e4: 41 83 ff 2b cmp $0x2b,%r15d 0.00 : 576e8: 0f 85 66 f0 ff ff jne 56754 <_IO_vfscanf+0x1dc4> 0.00 : 576ee: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 576f5: 4d 89 cc mov %r9,%r12 0.00 : 576f8: 0f 84 9a 18 00 00 je 58f98 <_IO_vfscanf+0x4608> 0.00 : 576fe: 47 88 3c 34 mov %r15b,(%r12,%r14,1) 0.00 : 57702: 49 83 c6 01 add $0x1,%r14 0.00 : 57706: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5770d: c6 85 21 fd ff ff 01 movb $0x1,-0x2df(%rbp) 0.00 : 57714: e9 bf ef ff ff jmpq 566d8 <_IO_vfscanf+0x1d48> 0.00 : 57719: 85 db test %ebx,%ebx 0.00 : 5771b: 0f 84 fb 01 00 00 je 5791c <_IO_vfscanf+0x2f8c> 0.00 : 57721: 41 83 c7 01 add $0x1,%r15d 0.00 : 57725: 0f 84 ed e4 ff ff je 55c18 <_IO_vfscanf+0x1288> 0.00 : 5772b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5772f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57733: 0f 83 1d 39 00 00 jae 5b056 <_IO_vfscanf+0x66c6> 0.00 : 57739: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5773d: 48 83 c0 01 add $0x1,%rax 0.00 : 57741: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57745: 8b b5 04 fd ff ff mov -0x2fc(%rbp),%esi 0.00 : 5774b: 8b 85 04 fd ff ff mov -0x2fc(%rbp),%eax 0.00 : 57751: 48 8d 5d 90 lea -0x70(%rbp),%rbx 0.00 : 57755: 4c 8b b5 d0 fd ff ff mov -0x230(%rbp),%r14 0.00 : 5775c: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 57760: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : 57767: 00 0.00 : 57768: 48 89 9d e0 fc ff ff mov %rbx,-0x320(%rbp) 0.00 : 5776f: 45 31 ed xor %r13d,%r13d 0.00 : 57772: 83 e6 08 and $0x8,%esi 0.00 : 57775: 25 00 21 00 00 and $0x2100,%eax 0.00 : 5777a: 48 89 bd 78 fc ff ff mov %rdi,-0x388(%rbp) 0.00 : 57781: 49 83 c6 02 add $0x2,%r14 0.00 : 57785: 89 b5 84 fc ff ff mov %esi,-0x37c(%rbp) 0.00 : 5778b: 89 85 74 fc ff ff mov %eax,-0x38c(%rbp) 0.00 : 57791: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 57798: 49 63 c7 movslq %r15d,%rax 0.00 : 5779b: 0f b6 95 23 fd ff ff movzbl -0x2dd(%rbp),%edx 0.00 : 577a2: 4d 8d 5e ff lea -0x1(%r14),%r11 0.00 : 577a6: 38 14 01 cmp %dl,(%rcx,%rax,1) 0.00 : 577a9: 0f 84 c0 23 00 00 je 59b6f <_IO_vfscanf+0x51df> 0.00 : 577af: 8b 85 84 fc ff ff mov -0x37c(%rbp),%eax 0.00 : 577b5: 4c 89 e3 mov %r12,%rbx 0.00 : 577b8: 85 c0 test %eax,%eax 0.00 : 577ba: 0f 84 d3 00 00 00 je 57893 <_IO_vfscanf+0x2f03> 0.00 : 577c0: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 577c7: 44 8b 8d dc fd ff ff mov -0x224(%rbp),%r9d 0.00 : 577ce: 45 85 c9 test %r9d,%r9d 0.00 : 577d1: 0f 8e 5d 17 00 00 jle 58f34 <_IO_vfscanf+0x45a4> 0.00 : 577d7: 49 89 dc mov %rbx,%r12 0.00 : 577da: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 577de: 0f 85 8c 00 00 00 jne 57870 <_IO_vfscanf+0x2ee0> 0.00 : 577e4: 48 8b 1d 4d a6 31 00 mov 0x31a64d(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 577eb: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 577f1: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 577f8: 89 14 18 mov %edx,(%rax,%rbx,1) 0.00 : 577fb: 4d 85 ed test %r13,%r13 0.00 : 577fe: 0f 85 9a 3c 00 00 jne 5b49e <_IO_vfscanf+0x6b0e> 0.00 : 57804: 4c 39 9d d0 fd ff ff cmp %r11,-0x230(%rbp) 0.00 : 5780b: 0f 84 c7 d6 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 57811: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 57818: 0f 85 d6 d4 ff ff jne 54cf4 <_IO_vfscanf+0x364> 0.00 : 5781e: 48 8b b5 e0 fd ff ff mov -0x220(%rbp),%rsi 0.00 : 57825: c7 06 00 00 00 00 movl $0x0,(%rsi) 0.00 : 5782b: 48 83 c6 04 add $0x4,%rsi 0.00 : 5782f: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 57836: 21 00 00 0.00 : 57839: 48 89 b5 e0 fd ff ff mov %rsi,-0x220(%rbp) 0.00 : 57840: 0f 84 3d f8 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57846: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 5784d: 48 8b 38 mov (%rax),%rdi 0.00 : 57850: 48 89 f0 mov %rsi,%rax 0.00 : 57853: 48 29 f8 sub %rdi,%rax 0.00 : 57856: 48 c1 f8 02 sar $0x2,%rax 0.00 : 5785a: 4c 39 e0 cmp %r12,%rax 0.00 : 5785d: 0f 84 20 f8 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57863: e9 d4 f9 ff ff jmpq 5723c <_IO_vfscanf+0x28ac> 0.00 : 57868: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5786f: 00 0.00 : 57870: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57874: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57878: 0f 83 9a 27 00 00 jae 5a018 <_IO_vfscanf+0x5688> 0.00 : 5787e: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57882: 48 83 c0 01 add $0x1,%rax 0.00 : 57886: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5788a: 49 83 c6 01 add $0x1,%r14 0.00 : 5788e: e9 fe fe ff ff jmpq 57791 <_IO_vfscanf+0x2e01> 0.00 : 57893: 48 8b 8d e0 fc ff ff mov -0x320(%rbp),%rcx 0.00 : 5789a: 48 8b b5 78 fc ff ff mov -0x388(%rbp),%rsi 0.00 : 578a1: ba 01 00 00 00 mov $0x1,%edx 0.00 : 578a6: 48 8b bd e0 fd ff ff mov -0x220(%rbp),%rdi 0.00 : 578ad: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 578b4: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 578bb: 44 88 7d 80 mov %r15b,-0x80(%rbp) 0.00 : 578bf: e8 cc 54 03 00 callq 8cd90 <__mbrtowc> 0.00 : 578c4: 48 83 f8 fe cmp $0xfffffffffffffffe,%rax 0.00 : 578c8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 578cf: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 578d6: 0f 84 0c 07 00 00 je 57fe8 <_IO_vfscanf+0x3658> 0.00 : 578dc: 8b 9d 74 fc ff ff mov -0x38c(%rbp),%ebx 0.00 : 578e2: 48 83 85 e0 fd ff ff addq $0x4,-0x220(%rbp) 0.00 : 578e9: 04 0.00 : 578ea: 85 db test %ebx,%ebx 0.00 : 578ec: 74 23 je 57911 <_IO_vfscanf+0x2f81> 0.00 : 578ee: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 578f5: 4e 8d 2c a5 00 00 00 lea 0x0(,%r12,4),%r13 0.00 : 578fc: 00 0.00 : 578fd: 48 8b 38 mov (%rax),%rdi 0.00 : 57900: 4a 8d 04 2f lea (%rdi,%r13,1),%rax 0.00 : 57904: 48 39 85 e0 fd ff ff cmp %rax,-0x220(%rbp) 0.00 : 5790b: 0f 84 c0 3f 00 00 je 5b8d1 <_IO_vfscanf+0x6f41> 0.00 : 57911: 4c 89 e3 mov %r12,%rbx 0.00 : 57914: 45 31 ed xor %r13d,%r13d 0.00 : 57917: e9 a4 fe ff ff jmpq 577c0 <_IO_vfscanf+0x2e30> 0.00 : 5791c: 41 83 c7 01 add $0x1,%r15d 0.00 : 57920: 0f 85 62 03 00 00 jne 57c88 <_IO_vfscanf+0x32f8> 0.00 : 57926: 48 8b 05 0b a5 31 00 mov 0x31a50b(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5792d: 8b 9d 1c fd ff ff mov -0x2e4(%rbp),%ebx 0.00 : 57933: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 5793a: 89 1c 01 mov %ebx,(%rcx,%rax,1) 0.00 : 5793d: e9 d1 d2 ff ff jmpq 54c13 <_IO_vfscanf+0x283> 0.00 : 57942: 4c 89 d7 mov %r10,%rdi 0.00 : 57945: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 5794c: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 57953: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5795a: e8 a1 d8 01 00 callq 75200 <__uflow> 0.00 : 5795f: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 57962: 41 89 c5 mov %eax,%r13d 0.00 : 57965: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 5796c: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 57973: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5797a: 0f 85 aa e0 ff ff jne 55a2a <_IO_vfscanf+0x109a> 0.00 : 57980: 48 8b 1d b1 a4 31 00 mov 0x31a4b1(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57987: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5798e: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 57991: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 57997: e9 c3 df ff ff jmpq 5595f <_IO_vfscanf+0xfcf> 0.00 : 5799c: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 579a3: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 579aa: 00 01 00 00 0.00 : 579ae: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 579b3: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 579b7: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 579be: e9 d6 f4 ff ff jmpq 56e99 <_IO_vfscanf+0x2509> 0.00 : 579c3: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 579c9: 85 c0 test %eax,%eax 0.00 : 579cb: 0f 85 17 0f 00 00 jne 588e8 <_IO_vfscanf+0x3f58> 0.00 : 579d1: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 579d7: 83 f8 30 cmp $0x30,%eax 0.00 : 579da: 0f 83 f1 0e 00 00 jae 588d1 <_IO_vfscanf+0x3f41> 0.00 : 579e0: 89 c2 mov %eax,%edx 0.00 : 579e2: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 579e9: 83 c0 08 add $0x8,%eax 0.00 : 579ec: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 579f2: 48 8b 12 mov (%rdx),%rdx 0.00 : 579f5: 48 89 95 e0 fd ff ff mov %rdx,-0x220(%rbp) 0.00 : 579fc: 48 83 bd e0 fd ff ff cmpq $0x0,-0x220(%rbp) 0.00 : 57a03: 00 0.00 : 57a04: 0f 85 df da ff ff jne 554e9 <_IO_vfscanf+0xb59> 0.00 : 57a0a: e9 c9 d4 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 57a0f: 90 nop 0.00 : 57a10: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 57a17: 4d 89 cc mov %r9,%r12 0.00 : 57a1a: c6 85 20 fd ff ff 01 movb $0x1,-0x2e0(%rbp) 0.00 : 57a21: e9 b2 ec ff ff jmpq 566d8 <_IO_vfscanf+0x1d48> 0.00 : 57a26: 4c 89 d7 mov %r10,%rdi 0.00 : 57a29: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57a30: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57a37: e8 c4 d7 01 00 callq 75200 <__uflow> 0.00 : 57a3c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 57a3f: 89 c3 mov %eax,%ebx 0.00 : 57a41: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57a48: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57a4f: 0f 85 74 ee ff ff jne 568c9 <_IO_vfscanf+0x1f39> 0.00 : 57a55: 48 8b 1d dc a3 31 00 mov 0x31a3dc(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57a5c: e9 eb dc ff ff jmpq 5574c <_IO_vfscanf+0xdbc> 0.00 : 57a61: f7 85 04 fd ff ff 00 testl $0x200,-0x2fc(%rbp) 0.00 : 57a68: 02 00 00 0.00 : 57a6b: 0f 85 f5 0a 00 00 jne 58566 <_IO_vfscanf+0x3bd6> 0.00 : 57a71: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 57a77: 85 c0 test %eax,%eax 0.00 : 57a79: 0f 85 a9 1c 00 00 jne 59728 <_IO_vfscanf+0x4d98> 0.00 : 57a7f: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 57a85: 83 f8 30 cmp $0x30,%eax 0.00 : 57a88: 0f 83 22 0c 00 00 jae 586b0 <_IO_vfscanf+0x3d20> 0.00 : 57a8e: 89 c2 mov %eax,%edx 0.00 : 57a90: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 57a97: 83 c0 08 add $0x8,%eax 0.00 : 57a9a: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 57aa0: 48 8b 02 mov (%rdx),%rax 0.00 : 57aa3: 89 08 mov %ecx,(%rax) 0.00 : 57aa5: e9 51 e1 ff ff jmpq 55bfb <_IO_vfscanf+0x126b> 0.00 : 57aaa: 4c 89 d7 mov %r10,%rdi 0.00 : 57aad: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57ab4: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57abb: e8 40 d7 01 00 callq 75200 <__uflow> 0.00 : 57ac0: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 57ac3: 89 c3 mov %eax,%ebx 0.00 : 57ac5: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57acc: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57ad3: 0f 85 20 ee ff ff jne 568f9 <_IO_vfscanf+0x1f69> 0.00 : 57ad9: 48 8b 1d 58 a3 31 00 mov 0x31a358(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57ae0: e9 e5 da ff ff jmpq 555ca <_IO_vfscanf+0xc3a> 0.00 : 57ae5: f7 85 04 fd ff ff 00 testl $0x200,-0x2fc(%rbp) 0.00 : 57aec: 02 00 00 0.00 : 57aef: 0f 85 b7 09 00 00 jne 584ac <_IO_vfscanf+0x3b1c> 0.00 : 57af5: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 57afb: 85 c0 test %eax,%eax 0.00 : 57afd: 74 80 je 57a7f <_IO_vfscanf+0x30ef> 0.00 : 57aff: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 57b06: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 57b0d: 48 8b 02 mov (%rdx),%rax 0.00 : 57b10: 48 89 03 mov %rax,(%rbx) 0.00 : 57b13: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 57b1a: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 57b1e: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 57b22: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 57b26: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 57b2a: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 57b30: 83 ea 01 sub $0x1,%edx 0.00 : 57b33: 74 17 je 57b4c <_IO_vfscanf+0x31bc> 0.00 : 57b35: 83 f8 30 cmp $0x30,%eax 0.00 : 57b38: 0f 83 f2 04 00 00 jae 58030 <_IO_vfscanf+0x36a0> 0.00 : 57b3e: 83 c0 08 add $0x8,%eax 0.00 : 57b41: 83 ea 01 sub $0x1,%edx 0.00 : 57b44: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 57b4a: 75 e9 jne 57b35 <_IO_vfscanf+0x31a5> 0.00 : 57b4c: 83 f8 30 cmp $0x30,%eax 0.00 : 57b4f: 0f 83 72 0b 00 00 jae 586c7 <_IO_vfscanf+0x3d37> 0.00 : 57b55: 89 c2 mov %eax,%edx 0.00 : 57b57: 83 c0 08 add $0x8,%eax 0.00 : 57b5a: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 57b61: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 57b67: e9 34 ff ff ff jmpq 57aa0 <_IO_vfscanf+0x3110> 0.00 : 57b6c: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 57b73: e9 f9 f1 ff ff jmpq 56d71 <_IO_vfscanf+0x23e1> 0.00 : 57b78: 8b bd 5c fd ff ff mov -0x2a4(%rbp),%edi 0.00 : 57b7e: 85 ff test %edi,%edi 0.00 : 57b80: 0f 85 c5 0c 00 00 jne 5884b <_IO_vfscanf+0x3ebb> 0.00 : 57b86: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 57b8c: 83 f8 30 cmp $0x30,%eax 0.00 : 57b8f: 0f 83 9f 0c 00 00 jae 58834 <_IO_vfscanf+0x3ea4> 0.00 : 57b95: 89 c2 mov %eax,%edx 0.00 : 57b97: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 57b9e: 83 c0 08 add $0x8,%eax 0.00 : 57ba1: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 57ba7: 48 8b 12 mov (%rdx),%rdx 0.00 : 57baa: 48 89 95 e0 fd ff ff mov %rdx,-0x220(%rbp) 0.00 : 57bb1: 48 83 bd e0 fd ff ff cmpq $0x0,-0x220(%rbp) 0.00 : 57bb8: 00 0.00 : 57bb9: 0f 85 4d da ff ff jne 5560c <_IO_vfscanf+0xc7c> 0.00 : 57bbf: e9 14 d3 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 57bc4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 57bc8: 48 83 bd 50 fd ff ff cmpq $0x0,-0x2b0(%rbp) 0.00 : 57bcf: 00 0.00 : 57bd0: 75 22 jne 57bf4 <_IO_vfscanf+0x3264> 0.00 : 57bd2: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 57bd9: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 57be0: 00 01 00 00 0.00 : 57be4: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 57be9: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 57bed: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 57bf4: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 57bfb: 44 88 3e mov %r15b,(%rsi) 0.00 : 57bfe: 44 8b ad dc fd ff ff mov -0x224(%rbp),%r13d 0.00 : 57c05: 45 85 ed test %r13d,%r13d 0.00 : 57c08: 0f 84 ca d2 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 57c0e: 41 83 c7 01 add $0x1,%r15d 0.00 : 57c12: 0f 85 cf 09 00 00 jne 585e7 <_IO_vfscanf+0x3c57> 0.00 : 57c18: 48 8b 05 19 a2 31 00 mov 0x31a219(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57c1f: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 57c25: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 57c2c: 89 14 07 mov %edx,(%rdi,%rax,1) 0.00 : 57c2f: e9 a4 d2 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 57c34: 44 8b b5 dc fd ff ff mov -0x224(%rbp),%r14d 0.00 : 57c3b: 41 83 ff 2d cmp $0x2d,%r15d 0.00 : 57c3f: 0f 94 85 22 fd ff ff sete -0x2de(%rbp) 0.00 : 57c46: 45 85 f6 test %r14d,%r14d 0.00 : 57c49: 0f 84 89 d2 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 57c4f: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57c53: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57c57: 0f 83 3f 25 00 00 jae 5a19c <_IO_vfscanf+0x580c> 0.00 : 57c5d: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57c61: 48 83 c0 01 add $0x1,%rax 0.00 : 57c65: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57c69: 31 c0 xor %eax,%eax 0.00 : 57c6b: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 57c72: 01 0.00 : 57c73: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 57c7a: 0f 9f c0 setg %al 0.00 : 57c7d: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 57c83: e9 a4 e9 ff ff jmpq 5662c <_IO_vfscanf+0x1c9c> 0.00 : 57c88: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57c8c: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57c90: 0f 83 fb 32 00 00 jae 5af91 <_IO_vfscanf+0x6601> 0.00 : 57c96: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57c9a: 48 83 c0 01 add $0x1,%rax 0.00 : 57c9e: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57ca2: 8b b5 04 fd ff ff mov -0x2fc(%rbp),%esi 0.00 : 57ca8: 8b bd 04 fd ff ff mov -0x2fc(%rbp),%edi 0.00 : 57cae: 4c 8b ad d0 fd ff ff mov -0x230(%rbp),%r13 0.00 : 57cb5: 83 e6 08 and $0x8,%esi 0.00 : 57cb8: 81 e7 00 21 00 00 and $0x2100,%edi 0.00 : 57cbe: 49 83 c5 02 add $0x2,%r13 0.00 : 57cc2: 89 b5 70 fc ff ff mov %esi,-0x390(%rbp) 0.00 : 57cc8: 89 bd 6c fc ff ff mov %edi,-0x394(%rbp) 0.00 : 57cce: eb 3d jmp 57d0d <_IO_vfscanf+0x337d> 0.00 : 57cd0: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 57cd7: 8b 8d dc fd ff ff mov -0x224(%rbp),%ecx 0.00 : 57cdd: 85 c9 test %ecx,%ecx 0.00 : 57cdf: 0f 8e 37 01 00 00 jle 57e1c <_IO_vfscanf+0x348c> 0.00 : 57ce5: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 57ce9: 0f 84 6b 13 00 00 je 5905a <_IO_vfscanf+0x46ca> 0.00 : 57cef: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57cf3: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57cf7: 0f 83 d8 00 00 00 jae 57dd5 <_IO_vfscanf+0x3445> 0.00 : 57cfd: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57d01: 48 83 c0 01 add $0x1,%rax 0.00 : 57d05: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57d09: 49 83 c5 01 add $0x1,%r13 0.00 : 57d0d: 48 8b 8d f0 fd ff ff mov -0x210(%rbp),%rcx 0.00 : 57d14: 49 63 c7 movslq %r15d,%rax 0.00 : 57d17: 0f b6 95 23 fd ff ff movzbl -0x2dd(%rbp),%edx 0.00 : 57d1e: 4d 8d 5d ff lea -0x1(%r13),%r11 0.00 : 57d22: 38 14 01 cmp %dl,(%rcx,%rax,1) 0.00 : 57d25: 0f 84 75 1e 00 00 je 59ba0 <_IO_vfscanf+0x5210> 0.00 : 57d2b: 8b bd 70 fc ff ff mov -0x390(%rbp),%edi 0.00 : 57d31: 85 ff test %edi,%edi 0.00 : 57d33: 75 9b jne 57cd0 <_IO_vfscanf+0x3340> 0.00 : 57d35: 48 8b 9d 40 fd ff ff mov -0x2c0(%rbp),%rbx 0.00 : 57d3c: 44 88 3b mov %r15b,(%rbx) 0.00 : 57d3f: 8b b5 6c fc ff ff mov -0x394(%rbp),%esi 0.00 : 57d45: 48 83 c3 01 add $0x1,%rbx 0.00 : 57d49: 48 89 9d 40 fd ff ff mov %rbx,-0x2c0(%rbp) 0.00 : 57d50: 85 f6 test %esi,%esi 0.00 : 57d52: 0f 84 78 ff ff ff je 57cd0 <_IO_vfscanf+0x3340> 0.00 : 57d58: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 57d5f: 48 8b 3e mov (%rsi),%rdi 0.00 : 57d62: 4a 8d 04 27 lea (%rdi,%r12,1),%rax 0.00 : 57d66: 48 39 c3 cmp %rax,%rbx 0.00 : 57d69: 0f 85 61 ff ff ff jne 57cd0 <_IO_vfscanf+0x3340> 0.00 : 57d6f: 4b 8d 1c 24 lea (%r12,%r12,1),%rbx 0.00 : 57d73: 4d 8d 74 24 01 lea 0x1(%r12),%r14 0.00 : 57d78: eb 16 jmp 57d90 <_IO_vfscanf+0x3400> 0.00 : 57d7a: 4c 39 f3 cmp %r14,%rbx 0.00 : 57d7d: 0f 86 80 1c 00 00 jbe 59a03 <_IO_vfscanf+0x5073> 0.00 : 57d83: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 57d8a: 4c 89 f3 mov %r14,%rbx 0.00 : 57d8d: 48 8b 38 mov (%rax),%rdi 0.00 : 57d90: 48 89 de mov %rbx,%rsi 0.00 : 57d93: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57d9a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57da1: e8 9a 6a fc ff callq 1e840 0.00 : 57da6: 48 85 c0 test %rax,%rax 0.00 : 57da9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57db0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57db7: 74 c1 je 57d7a <_IO_vfscanf+0x33ea> 0.00 : 57db9: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 57dc0: 48 89 01 mov %rax,(%rcx) 0.00 : 57dc3: 4c 01 e0 add %r12,%rax 0.00 : 57dc6: 49 89 dc mov %rbx,%r12 0.00 : 57dc9: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 57dd0: e9 fb fe ff ff jmpq 57cd0 <_IO_vfscanf+0x3340> 0.00 : 57dd5: 4c 89 d7 mov %r10,%rdi 0.00 : 57dd8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57ddf: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57de6: e8 15 d4 01 00 callq 75200 <__uflow> 0.00 : 57deb: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 57dee: 41 89 c7 mov %eax,%r15d 0.00 : 57df1: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57df8: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57dff: 0f 85 04 ff ff ff jne 57d09 <_IO_vfscanf+0x3379> 0.00 : 57e05: 48 8b 1d 2c a0 31 00 mov 0x31a02c(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57e0c: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 57e13: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 57e16: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 57e1c: 4c 39 9d d0 fd ff ff cmp %r11,-0x230(%rbp) 0.00 : 57e23: 0f 84 af d0 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 57e29: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 57e30: 0f 85 be ce ff ff jne 54cf4 <_IO_vfscanf+0x364> 0.00 : 57e36: 48 8b 95 40 fd ff ff mov -0x2c0(%rbp),%rdx 0.00 : 57e3d: c6 02 00 movb $0x0,(%rdx) 0.00 : 57e40: 48 83 c2 01 add $0x1,%rdx 0.00 : 57e44: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 57e4b: 21 00 00 0.00 : 57e4e: 48 89 95 40 fd ff ff mov %rdx,-0x2c0(%rbp) 0.00 : 57e55: 0f 84 28 f2 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57e5b: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 57e62: 48 89 d6 mov %rdx,%rsi 0.00 : 57e65: 48 8b 39 mov (%rcx),%rdi 0.00 : 57e68: 48 29 fe sub %rdi,%rsi 0.00 : 57e6b: 4c 39 e6 cmp %r12,%rsi 0.00 : 57e6e: 0f 84 0f f2 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57e74: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57e7b: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57e82: e8 b9 69 fc ff callq 1e840 0.00 : 57e87: 48 85 c0 test %rax,%rax 0.00 : 57e8a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57e91: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57e98: 0f 84 e5 f1 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57e9e: 48 8b 9d 48 fd ff ff mov -0x2b8(%rbp),%rbx 0.00 : 57ea5: 48 89 03 mov %rax,(%rbx) 0.00 : 57ea8: e9 d6 f1 ff ff jmpq 57083 <_IO_vfscanf+0x26f3> 0.00 : 57ead: 4c 89 d7 mov %r10,%rdi 0.00 : 57eb0: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 57eb7: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 57ebe: e8 3d d3 01 00 callq 75200 <__uflow> 0.00 : 57ec3: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 57ec6: 41 89 c7 mov %eax,%r15d 0.00 : 57ec9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 57ed0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 57ed7: 0f 85 1d e5 ff ff jne 563fa <_IO_vfscanf+0x1a6a> 0.00 : 57edd: 48 8b 1d 54 9f 31 00 mov 0x319f54(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 57ee4: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 57eeb: 8b 1c 1a mov (%rdx,%rbx,1),%ebx 0.00 : 57eee: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 57ef4: 8b 85 9c fd ff ff mov -0x264(%rbp),%eax 0.00 : 57efa: 85 c0 test %eax,%eax 0.00 : 57efc: 0f 84 81 f1 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57f02: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 57f09: 48 8b b5 40 fd ff ff mov -0x2c0(%rbp),%rsi 0.00 : 57f10: 48 8b 38 mov (%rax),%rdi 0.00 : 57f13: 48 29 fe sub %rdi,%rsi 0.00 : 57f16: 49 39 f4 cmp %rsi,%r12 0.00 : 57f19: 0f 84 64 f1 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 57f1f: e9 20 f3 ff ff jmpq 57244 <_IO_vfscanf+0x28b4> 0.00 : 57f24: 83 bd 24 fd ff ff 10 cmpl $0x10,-0x2dc(%rbp) 0.00 : 57f2b: 0f 85 65 d5 ff ff jne 55496 <_IO_vfscanf+0xb06> 0.00 : 57f31: e9 4b f7 ff ff jmpq 57681 <_IO_vfscanf+0x2cf1> 0.00 : 57f36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 57f3d: 00 00 00 0.00 : 57f40: 49 8d 5e 01 lea 0x1(%r14),%rbx 0.00 : 57f44: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 57f4b: 4c 8d 5b ff lea -0x1(%rbx),%r11 0.00 : 57f4f: 44 8b 8d dc fd ff ff mov -0x224(%rbp),%r9d 0.00 : 57f56: 45 85 c9 test %r9d,%r9d 0.00 : 57f59: 0f 8e 8e cd ff ff jle 54ced <_IO_vfscanf+0x35d> 0.00 : 57f5f: 41 83 c7 01 add $0x1,%r15d 0.00 : 57f63: 0f 84 1a 17 00 00 je 59683 <_IO_vfscanf+0x4cf3> 0.00 : 57f69: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 57f6d: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 57f71: 0f 83 4c 22 00 00 jae 5a1c3 <_IO_vfscanf+0x5833> 0.00 : 57f77: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 57f7b: 48 83 c0 01 add $0x1,%rax 0.00 : 57f7f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 57f83: 48 83 c3 01 add $0x1,%rbx 0.00 : 57f87: eb bb jmp 57f44 <_IO_vfscanf+0x35b4> 0.00 : 57f89: f6 85 04 fd ff ff 04 testb $0x4,-0x2fc(%rbp) 0.00 : 57f90: 0f 84 8a 0d 00 00 je 58d20 <_IO_vfscanf+0x4390> 0.00 : 57f96: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 57f9c: 85 c0 test %eax,%eax 0.00 : 57f9e: 0f 85 02 15 00 00 jne 594a6 <_IO_vfscanf+0x4b16> 0.00 : 57fa4: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 57faa: 83 f8 30 cmp $0x30,%eax 0.00 : 57fad: 0f 83 cf 17 00 00 jae 59782 <_IO_vfscanf+0x4df2> 0.00 : 57fb3: 89 c2 mov %eax,%edx 0.00 : 57fb5: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 57fbc: 83 c0 08 add $0x8,%eax 0.00 : 57fbf: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 57fc5: 0f b7 9d d0 fd ff ff movzwl -0x230(%rbp),%ebx 0.00 : 57fcc: 48 8b 02 mov (%rdx),%rax 0.00 : 57fcf: 45 31 ed xor %r13d,%r13d 0.00 : 57fd2: 66 89 18 mov %bx,(%rax) 0.00 : 57fd5: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 57fdc: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 57fe3: e9 b3 cb ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 57fe8: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 57fef: 48 8b 1d 92 9d 31 00 mov 0x319d92(%rip),%rbx # 371d88 <_DYNAMIC+0x228> 0.00 : 57ff6: 49 83 c5 01 add $0x1,%r13 0.00 : 57ffa: 48 8b 04 1e mov (%rsi,%rbx,1),%rax 0.00 : 57ffe: 48 8b 00 mov (%rax),%rax 0.00 : 58001: 8b 80 a8 00 00 00 mov 0xa8(%rax),%eax 0.00 : 58007: 49 39 c5 cmp %rax,%r13 0.00 : 5800a: 0f 82 ca f7 ff ff jb 577da <_IO_vfscanf+0x2e4a> 0.00 : 58010: 48 8d 0d 39 a9 0e 00 lea 0xea939(%rip),%rcx # 142950 <__PRETTY_FUNCTION__.14803> 0.00 : 58017: 48 8d 35 51 2d 0e 00 lea 0xe2d51(%rip),%rsi # 13ad6f <__PRETTY_FUNCTION__.14584+0x19> 0.00 : 5801e: 48 8d 3d 3b 69 0e 00 lea 0xe693b(%rip),%rdi # 13e960 <__PRETTY_FUNCTION__.11129+0xf87> 0.00 : 58025: ba bf 09 00 00 mov $0x9bf,%edx 0.00 : 5802a: e8 f1 38 fd ff callq 2b920 <__assert_fail> 0.00 : 5802f: 90 nop 0.00 : 58030: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 58037: 08 0.00 : 58038: e9 f3 fa ff ff jmpq 57b30 <_IO_vfscanf+0x31a0> 0.00 : 5803d: 48 83 bd 50 fd ff ff cmpq $0x0,-0x2b0(%rbp) 0.00 : 58044: 00 0.00 : 58045: 0f 84 1e 11 00 00 je 59169 <_IO_vfscanf+0x47d9> 0.00 : 5804b: 48 8b 95 f0 fd ff ff mov -0x210(%rbp),%rdx 0.00 : 58052: 44 88 3a mov %r15b,(%rdx) 0.00 : 58055: 44 8b 9d dc fd ff ff mov -0x224(%rbp),%r11d 0.00 : 5805c: 45 85 db test %r11d,%r11d 0.00 : 5805f: 0f 84 73 ce ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 58065: 41 83 c7 01 add $0x1,%r15d 0.00 : 58069: 0f 85 eb 08 00 00 jne 5895a <_IO_vfscanf+0x3fca> 0.00 : 5806f: 48 8b 05 c2 9d 31 00 mov 0x319dc2(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 58076: 8b 9d 1c fd ff ff mov -0x2e4(%rbp),%ebx 0.00 : 5807c: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 58083: 89 1c 01 mov %ebx,(%rcx,%rax,1) 0.00 : 58086: e9 4d ce ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5808b: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 58092: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 58099: 48 8b 07 mov (%rdi),%rax 0.00 : 5809c: 48 89 02 mov %rax,(%rdx) 0.00 : 5809f: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 580a3: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 580aa: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 580ae: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 580b2: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 580b6: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 580bc: 83 ea 01 sub $0x1,%edx 0.00 : 580bf: 0f 84 2a d3 ff ff je 553ef <_IO_vfscanf+0xa5f> 0.00 : 580c5: 83 f8 30 cmp $0x30,%eax 0.00 : 580c8: 73 16 jae 580e0 <_IO_vfscanf+0x3750> 0.00 : 580ca: 83 c0 08 add $0x8,%eax 0.00 : 580cd: 83 ea 01 sub $0x1,%edx 0.00 : 580d0: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 580d6: 75 ed jne 580c5 <_IO_vfscanf+0x3735> 0.00 : 580d8: e9 12 d3 ff ff jmpq 553ef <_IO_vfscanf+0xa5f> 0.00 : 580dd: 0f 1f 00 nopl (%rax) 0.00 : 580e0: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 580e7: 08 0.00 : 580e8: eb d2 jmp 580bc <_IO_vfscanf+0x372c> 0.00 : 580ea: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 580f1: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 580f5: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 580fc: e9 f4 da ff ff jmpq 55bf5 <_IO_vfscanf+0x1265> 0.00 : 58101: 48 83 bd 50 fd ff ff cmpq $0x0,-0x2b0(%rbp) 0.00 : 58108: 00 0.00 : 58109: 0f 84 f2 15 00 00 je 59701 <_IO_vfscanf+0x4d71> 0.00 : 5810f: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 58116: c6 06 30 movb $0x30,(%rsi) 0.00 : 58119: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5811d: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 58121: 0f 83 d0 30 00 00 jae 5b1f7 <_IO_vfscanf+0x6867> 0.00 : 58127: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5812b: 48 83 c0 01 add $0x1,%rax 0.00 : 5812f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 58133: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 5813a: 01 0.00 : 5813b: 31 c0 xor %eax,%eax 0.00 : 5813d: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 58144: 0f 9f c0 setg %al 0.00 : 58147: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5814d: 74 19 je 58168 <_IO_vfscanf+0x37d8> 0.00 : 5814f: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 58156: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 5815a: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 5815e: 83 3c 90 78 cmpl $0x78,(%rax,%rdx,4) 0.00 : 58162: 0f 84 a8 12 00 00 je 59410 <_IO_vfscanf+0x4a80> 0.00 : 58168: 4c 8b 8d f0 fd ff ff mov -0x210(%rbp),%r9 0.00 : 5816f: c6 85 1f fe ff ff 65 movb $0x65,-0x1e1(%rbp) 0.00 : 58176: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 5817c: e9 f4 e4 ff ff jmpq 56675 <_IO_vfscanf+0x1ce5> 0.00 : 58181: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 58188: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5818c: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 58193: e9 41 ef ff ff jmpq 570d9 <_IO_vfscanf+0x2749> 0.00 : 58198: 48 8b 1d 99 9c 31 00 mov 0x319c99(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5819f: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 581a5: 4d 89 e1 mov %r12,%r9 0.00 : 581a8: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 581af: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 581b2: f7 85 04 fd ff ff 00 testl $0x400,-0x2fc(%rbp) 0.00 : 581b9: 04 00 00 0.00 : 581bc: 0f 85 61 37 00 00 jne 5b923 <_IO_vfscanf+0x6f93> 0.00 : 581c2: 4d 85 f6 test %r14,%r14 0.00 : 581c5: 0f 84 0d cd ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 581cb: f7 85 04 fd ff ff 00 testl $0x800,-0x2fc(%rbp) 0.00 : 581d2: 08 00 00 0.00 : 581d5: 74 0a je 581e1 <_IO_vfscanf+0x3851> 0.00 : 581d7: 49 83 fe 02 cmp $0x2,%r14 0.00 : 581db: 0f 84 f7 cc ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 581e1: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 581e8: 4c 89 8d f0 fd ff ff mov %r9,-0x210(%rbp) 0.00 : 581ef: 0f 84 3d 02 00 00 je 58432 <_IO_vfscanf+0x3aa2> 0.00 : 581f5: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 581fc: 42 c6 04 37 00 movb $0x0,(%rdi,%r14,1) 0.00 : 58201: f6 85 04 fd ff ff 02 testb $0x2,-0x2fc(%rbp) 0.00 : 58208: 0f 85 8a 01 00 00 jne 58398 <_IO_vfscanf+0x3a08> 0.00 : 5820e: f6 85 04 fd ff ff 03 testb $0x3,-0x2fc(%rbp) 0.00 : 58215: 0f 84 d9 00 00 00 je 582f4 <_IO_vfscanf+0x3964> 0.00 : 5821b: 8b 95 04 fd ff ff mov -0x2fc(%rbp),%edx 0.00 : 58221: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 58228: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 5822c: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58233: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5823a: 81 e2 80 00 00 00 and $0x80,%edx 0.00 : 58240: e8 9b f2 fd ff callq 374e0 <__strtod_internal> 0.00 : 58245: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 5824c: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 58250: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58257: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5825e: 75 60 jne 582c0 <_IO_vfscanf+0x3930> 0.00 : 58260: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 58267: 48 39 75 b8 cmp %rsi,-0x48(%rbp) 0.00 : 5826b: 0f 84 67 cc ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 58271: 8b 8d 5c fd ff ff mov -0x2a4(%rbp),%ecx 0.00 : 58277: 85 c9 test %ecx,%ecx 0.00 : 58279: 0f 85 21 11 00 00 jne 593a0 <_IO_vfscanf+0x4a10> 0.00 : 5827f: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58285: 83 f8 30 cmp $0x30,%eax 0.00 : 58288: 0f 83 b5 0d 00 00 jae 59043 <_IO_vfscanf+0x46b3> 0.00 : 5828e: 89 c2 mov %eax,%edx 0.00 : 58290: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58297: 83 c0 08 add $0x8,%eax 0.00 : 5829a: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 582a0: 80 bd 22 fd ff ff 00 cmpb $0x0,-0x2de(%rbp) 0.00 : 582a7: 48 8b 02 mov (%rdx),%rax 0.00 : 582aa: 74 0c je 582b8 <_IO_vfscanf+0x3928> 0.00 : 582ac: f2 0f 10 05 dc b7 0e movsd 0xeb7dc(%rip),%xmm0 # 143a90 0.00 : 582b3: 00 0.00 : 582b4: 66 0f 57 c8 xorpd %xmm0,%xmm1 0.00 : 582b8: f2 0f 11 08 movsd %xmm1,(%rax) 0.00 : 582bc: eb 02 jmp 582c0 <_IO_vfscanf+0x3930> 0.00 : 582be: dd d8 fstp %st(0) 0.00 : 582c0: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 582c7: 48 39 45 b8 cmp %rax,-0x48(%rbp) 0.00 : 582cb: 0f 84 07 cc ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 582d1: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 582d8: 0f 85 0f ca ff ff jne 54ced <_IO_vfscanf+0x35d> 0.00 : 582de: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 582e5: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 582ec: 45 31 ed xor %r13d,%r13d 0.00 : 582ef: e9 a7 c8 ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 582f4: 8b 95 04 fd ff ff mov -0x2fc(%rbp),%edx 0.00 : 582fa: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 58301: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 58305: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5830c: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58313: 81 e2 80 00 00 00 and $0x80,%edx 0.00 : 58319: e8 82 f1 fd ff callq 374a0 <__strtof_internal> 0.00 : 5831e: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 58325: 0f 28 c8 movaps %xmm0,%xmm1 0.00 : 58328: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5832f: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58336: 75 88 jne 582c0 <_IO_vfscanf+0x3930> 0.00 : 58338: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5833f: 48 39 5d b8 cmp %rbx,-0x48(%rbp) 0.00 : 58343: 0f 84 8f cb ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 58349: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 5834f: 85 d2 test %edx,%edx 0.00 : 58351: 0f 85 90 0f 00 00 jne 592e7 <_IO_vfscanf+0x4957> 0.00 : 58357: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 5835d: 83 f8 30 cmp $0x30,%eax 0.00 : 58360: 0f 83 6a 0f 00 00 jae 592d0 <_IO_vfscanf+0x4940> 0.00 : 58366: 89 c2 mov %eax,%edx 0.00 : 58368: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 5836f: 83 c0 08 add $0x8,%eax 0.00 : 58372: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 58378: 80 bd 22 fd ff ff 00 cmpb $0x0,-0x2de(%rbp) 0.00 : 5837f: 48 8b 02 mov (%rdx),%rax 0.00 : 58382: 74 0b je 5838f <_IO_vfscanf+0x39ff> 0.00 : 58384: f3 0f 10 05 24 b7 0e movss 0xeb724(%rip),%xmm0 # 143ab0 0.00 : 5838b: 00 0.00 : 5838c: 0f 57 c8 xorps %xmm0,%xmm1 0.00 : 5838f: f3 0f 11 08 movss %xmm1,(%rax) 0.00 : 58393: e9 28 ff ff ff jmpq 582c0 <_IO_vfscanf+0x3930> 0.00 : 58398: 8b 95 04 fd ff ff mov -0x2fc(%rbp),%edx 0.00 : 5839e: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 583a5: 48 8d 75 b8 lea -0x48(%rbp),%rsi 0.00 : 583a9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 583b0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 583b7: 81 e2 80 00 00 00 and $0x80,%edx 0.00 : 583bd: e8 5e f1 fd ff callq 37520 <__strtold_internal> 0.00 : 583c2: f6 85 04 fd ff ff 08 testb $0x8,-0x2fc(%rbp) 0.00 : 583c9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 583d0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 583d7: 0f 85 e1 fe ff ff jne 582be <_IO_vfscanf+0x392e> 0.00 : 583dd: 48 8b 85 f0 fd ff ff mov -0x210(%rbp),%rax 0.00 : 583e4: 48 39 45 b8 cmp %rax,-0x48(%rbp) 0.00 : 583e8: 0f 84 e5 ca ff ff je 54ed3 <_IO_vfscanf+0x543> 0.00 : 583ee: 8b b5 5c fd ff ff mov -0x2a4(%rbp),%esi 0.00 : 583f4: 85 f6 test %esi,%esi 0.00 : 583f6: 0f 85 5b 0e 00 00 jne 59257 <_IO_vfscanf+0x48c7> 0.00 : 583fc: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58402: 83 f8 30 cmp $0x30,%eax 0.00 : 58405: 0f 83 35 0e 00 00 jae 59240 <_IO_vfscanf+0x48b0> 0.00 : 5840b: 89 c2 mov %eax,%edx 0.00 : 5840d: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58414: 83 c0 08 add $0x8,%eax 0.00 : 58417: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 5841d: 80 bd 22 fd ff ff 00 cmpb $0x0,-0x2de(%rbp) 0.00 : 58424: 48 8b 02 mov (%rdx),%rax 0.00 : 58427: 74 02 je 5842b <_IO_vfscanf+0x3a9b> 0.00 : 58429: d9 e0 fchs 0.00 : 5842b: db 38 fstpt (%rax) 0.00 : 5842d: e9 8e fe ff ff jmpq 582c0 <_IO_vfscanf+0x3930> 0.00 : 58432: 4b 8d 1c 36 lea (%r14,%r14,1),%rbx 0.00 : 58436: b8 00 01 00 00 mov $0x100,%eax 0.00 : 5843b: 48 81 fb 00 01 00 00 cmp $0x100,%rbx 0.00 : 58442: 48 0f 43 c3 cmovae %rbx,%rax 0.00 : 58446: 48 89 85 50 fd ff ff mov %rax,-0x2b0(%rbp) 0.00 : 5844d: 48 83 c0 1e add $0x1e,%rax 0.00 : 58451: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 58455: 48 29 c4 sub %rax,%rsp 0.00 : 58458: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 5845d: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 58461: 4d 85 c9 test %r9,%r9 0.00 : 58464: 48 89 b5 f0 fd ff ff mov %rsi,-0x210(%rbp) 0.00 : 5846b: 0f 84 84 fd ff ff je 581f5 <_IO_vfscanf+0x3865> 0.00 : 58471: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 58478: 4c 89 f2 mov %r14,%rdx 0.00 : 5847b: 4c 89 ce mov %r9,%rsi 0.00 : 5847e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58485: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5848c: e8 bf c2 02 00 callq 84750 0.00 : 58491: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58498: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5849f: e9 51 fd ff ff jmpq 581f5 <_IO_vfscanf+0x3865> 0.00 : 584a4: 4d 89 e1 mov %r12,%r9 0.00 : 584a7: e9 06 fd ff ff jmpq 581b2 <_IO_vfscanf+0x3822> 0.00 : 584ac: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 584b2: 85 c0 test %eax,%eax 0.00 : 584b4: 0f 85 66 13 00 00 jne 59820 <_IO_vfscanf+0x4e90> 0.00 : 584ba: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 584c0: 83 f8 30 cmp $0x30,%eax 0.00 : 584c3: 0f 83 07 06 00 00 jae 58ad0 <_IO_vfscanf+0x4140> 0.00 : 584c9: 89 c2 mov %eax,%edx 0.00 : 584cb: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 584d2: 83 c0 08 add $0x8,%eax 0.00 : 584d5: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 584db: 48 8b 02 mov (%rdx),%rax 0.00 : 584de: 88 08 mov %cl,(%rax) 0.00 : 584e0: e9 16 d7 ff ff jmpq 55bfb <_IO_vfscanf+0x126b> 0.00 : 584e5: 48 8b 85 a0 fc ff ff mov -0x360(%rbp),%rax 0.00 : 584ec: 48 2b 85 a8 fd ff ff sub -0x258(%rbp),%rax 0.00 : 584f3: 48 8b 95 90 fc ff ff mov -0x370(%rbp),%rdx 0.00 : 584fa: 48 2b 95 a8 fd ff ff sub -0x258(%rbp),%rdx 0.00 : 58501: 48 39 85 e8 fd ff ff cmp %rax,-0x218(%rbp) 0.00 : 58508: 48 8b b5 e8 fd ff ff mov -0x218(%rbp),%rsi 0.00 : 5850f: 48 0f 4e 95 e8 fd ff cmovle -0x218(%rbp),%rdx 0.00 : 58516: ff 0.00 : 58517: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5851e: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58525: 4c 8d 24 32 lea (%rdx,%rsi,1),%r12 0.00 : 58529: 4a 8d 34 a5 00 00 00 lea 0x0(,%r12,4),%rsi 0.00 : 58530: 00 0.00 : 58531: e8 0a 63 fc ff callq 1e840 0.00 : 58536: 48 85 c0 test %rax,%rax 0.00 : 58539: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58540: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58547: 0f 84 e8 2c 00 00 je 5b235 <_IO_vfscanf+0x68a5> 0.00 : 5854d: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 58554: 48 89 01 mov %rax,(%rcx) 0.00 : 58557: 48 01 d8 add %rbx,%rax 0.00 : 5855a: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 58561: e9 6d d1 ff ff jmpq 556d3 <_IO_vfscanf+0xd43> 0.00 : 58566: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 5856c: 85 c0 test %eax,%eax 0.00 : 5856e: 0f 84 46 ff ff ff je 584ba <_IO_vfscanf+0x3b2a> 0.00 : 58574: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 5857b: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 58582: 48 8b 02 mov (%rdx),%rax 0.00 : 58585: 48 89 03 mov %rax,(%rbx) 0.00 : 58588: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 5858f: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 58593: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 58597: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 5859b: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 5859f: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 585a5: 83 ea 01 sub $0x1,%edx 0.00 : 585a8: 74 13 je 585bd <_IO_vfscanf+0x3c2d> 0.00 : 585aa: 83 f8 30 cmp $0x30,%eax 0.00 : 585ad: 73 2e jae 585dd <_IO_vfscanf+0x3c4d> 0.00 : 585af: 83 c0 08 add $0x8,%eax 0.00 : 585b2: 83 ea 01 sub $0x1,%edx 0.00 : 585b5: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 585bb: 75 ed jne 585aa <_IO_vfscanf+0x3c1a> 0.00 : 585bd: 83 f8 30 cmp $0x30,%eax 0.00 : 585c0: 0f 83 8a 08 00 00 jae 58e50 <_IO_vfscanf+0x44c0> 0.00 : 585c6: 89 c2 mov %eax,%edx 0.00 : 585c8: 83 c0 08 add $0x8,%eax 0.00 : 585cb: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 585d2: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 585d8: e9 fe fe ff ff jmpq 584db <_IO_vfscanf+0x3b4b> 0.00 : 585dd: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 585e4: 08 0.00 : 585e5: eb be jmp 585a5 <_IO_vfscanf+0x3c15> 0.00 : 585e7: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 585eb: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 585ef: 0f 83 20 38 00 00 jae 5be15 <_IO_vfscanf+0x7485> 0.00 : 585f5: 0f b6 08 movzbl (%rax),%ecx 0.00 : 585f8: 48 83 c0 01 add $0x1,%rax 0.00 : 585fc: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 58600: 48 8b 9d 08 fd ff ff mov -0x2f8(%rbp),%rbx 0.00 : 58607: 0f b6 d1 movzbl %cl,%edx 0.00 : 5860a: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 5860e: 83 3c 90 61 cmpl $0x61,(%rax,%rdx,4) 0.00 : 58612: 0f 85 c0 c8 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 58618: 31 c0 xor %eax,%eax 0.00 : 5861a: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 58621: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 58628: 0f 9f c0 setg %al 0.00 : 5862b: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 58631: 48 83 bd 50 fd ff ff cmpq $0x1,-0x2b0(%rbp) 0.00 : 58638: 01 0.00 : 58639: 0f 84 d2 0b 00 00 je 59211 <_IO_vfscanf+0x4881> 0.00 : 5863f: 88 4b 01 mov %cl,0x1(%rbx) 0.00 : 58642: 44 8b a5 dc fd ff ff mov -0x224(%rbp),%r12d 0.00 : 58649: 45 85 e4 test %r12d,%r12d 0.00 : 5864c: 0f 84 86 c8 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 58652: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 58656: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5865a: 0f 83 8f 1a 00 00 jae 5a0ef <_IO_vfscanf+0x575f> 0.00 : 58660: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 58664: 48 83 c0 01 add $0x1,%rax 0.00 : 58668: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5866c: 48 8b bd 08 fd ff ff mov -0x2f8(%rbp),%rdi 0.00 : 58673: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 58677: 48 8b 47 70 mov 0x70(%rdi),%rax 0.00 : 5867b: 83 3c 90 6e cmpl $0x6e,(%rax,%rdx,4) 0.00 : 5867f: 0f 85 53 c8 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 58685: 48 83 bd 50 fd ff ff cmpq $0x2,-0x2b0(%rbp) 0.00 : 5868c: 02 0.00 : 5868d: 49 89 d9 mov %rbx,%r9 0.00 : 58690: 0f 84 52 0b 00 00 je 591e8 <_IO_vfscanf+0x4858> 0.00 : 58696: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5869d: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 586a3: 45 88 79 02 mov %r15b,0x2(%r9) 0.00 : 586a7: 49 83 c3 02 add $0x2,%r11 0.00 : 586ab: e9 31 fb ff ff jmpq 581e1 <_IO_vfscanf+0x3851> 0.00 : 586b0: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 586b7: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 586bb: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 586c2: e9 d9 f3 ff ff jmpq 57aa0 <_IO_vfscanf+0x3110> 0.00 : 586c7: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 586ce: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 586d2: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 586d9: e9 c2 f3 ff ff jmpq 57aa0 <_IO_vfscanf+0x3110> 0.00 : 586de: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 586e5: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 586ec: 48 8b 02 mov (%rdx),%rax 0.00 : 586ef: 48 89 01 mov %rax,(%rcx) 0.00 : 586f2: 48 8b 9d f8 fc ff ff mov -0x308(%rbp),%rbx 0.00 : 586f9: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 586fd: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 58701: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 58705: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 58709: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 5870f: 83 ea 01 sub $0x1,%edx 0.00 : 58712: 74 13 je 58727 <_IO_vfscanf+0x3d97> 0.00 : 58714: 83 f8 30 cmp $0x30,%eax 0.00 : 58717: 73 37 jae 58750 <_IO_vfscanf+0x3dc0> 0.00 : 58719: 83 c0 08 add $0x8,%eax 0.00 : 5871c: 83 ea 01 sub $0x1,%edx 0.00 : 5871f: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58725: 75 ed jne 58714 <_IO_vfscanf+0x3d84> 0.00 : 58727: 83 f8 30 cmp $0x30,%eax 0.00 : 5872a: 0f 83 ed 07 00 00 jae 58f1d <_IO_vfscanf+0x458d> 0.00 : 58730: 89 c2 mov %eax,%edx 0.00 : 58732: 83 c0 08 add $0x8,%eax 0.00 : 58735: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5873c: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58742: e9 87 d7 ff ff jmpq 55ece <_IO_vfscanf+0x153e> 0.00 : 58747: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5874e: 00 00 0.00 : 58750: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 58757: 08 0.00 : 58758: eb b5 jmp 5870f <_IO_vfscanf+0x3d7f> 0.00 : 5875a: 4c 89 d7 mov %r10,%rdi 0.00 : 5875d: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58764: e8 97 ca 01 00 callq 75200 <__uflow> 0.00 : 58769: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5876c: 41 89 c7 mov %eax,%r15d 0.00 : 5876f: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58776: 0f 84 97 c4 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5877c: e9 0f c5 ff ff jmpq 54c90 <_IO_vfscanf+0x300> 0.00 : 58781: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 58788: 4c 89 d7 mov %r10,%rdi 0.00 : 5878b: 44 89 85 30 fc ff ff mov %r8d,-0x3d0(%rbp) 0.00 : 58792: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 58799: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 587a0: e8 5b ca 01 00 callq 75200 <__uflow> 0.00 : 587a5: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 587a8: 89 c1 mov %eax,%ecx 0.00 : 587aa: 44 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8d 0.00 : 587b1: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 587b8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 587bf: 0f 85 5e e5 ff ff jne 56d23 <_IO_vfscanf+0x2393> 0.00 : 587c5: 48 8b 1d 6c 96 31 00 mov 0x31966c(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 587cc: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 587d3: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 587d6: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 587dc: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 587e1: 4c 89 ad d0 fd ff ff mov %r13,-0x230(%rbp) 0.00 : 587e8: e9 9a df ff ff jmpq 56787 <_IO_vfscanf+0x1df7> 0.00 : 587ed: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 587f4: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 587f9: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 587fd: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 58804: 48 8b 95 38 fd ff ff mov -0x2c8(%rbp),%rdx 0.00 : 5880b: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 5880f: 31 d2 xor %edx,%edx 0.00 : 58811: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 58818: e9 1d d7 ff ff jmpq 55f3a <_IO_vfscanf+0x15aa> 0.00 : 5881d: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 58824: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58828: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 5882f: e9 9a d6 ff ff jmpq 55ece <_IO_vfscanf+0x153e> 0.00 : 58834: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5883b: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5883f: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 58846: e9 5c f3 ff ff jmpq 57ba7 <_IO_vfscanf+0x3217> 0.00 : 5884b: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 58852: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 58859: 48 8b 06 mov (%rsi),%rax 0.00 : 5885c: 48 89 07 mov %rax,(%rdi) 0.00 : 5885f: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 58863: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 58867: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 5886b: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 5886f: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 58875: 83 ea 01 sub $0x1,%edx 0.00 : 58878: 74 13 je 5888d <_IO_vfscanf+0x3efd> 0.00 : 5887a: 83 f8 30 cmp $0x30,%eax 0.00 : 5887d: 73 31 jae 588b0 <_IO_vfscanf+0x3f20> 0.00 : 5887f: 83 c0 08 add $0x8,%eax 0.00 : 58882: 83 ea 01 sub $0x1,%edx 0.00 : 58885: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5888b: 75 ed jne 5887a <_IO_vfscanf+0x3eea> 0.00 : 5888d: 83 f8 30 cmp $0x30,%eax 0.00 : 58890: 0f 83 fc 07 00 00 jae 59092 <_IO_vfscanf+0x4702> 0.00 : 58896: 89 c2 mov %eax,%edx 0.00 : 58898: 83 c0 08 add $0x8,%eax 0.00 : 5889b: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 588a2: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 588a8: e9 fa f2 ff ff jmpq 57ba7 <_IO_vfscanf+0x3217> 0.00 : 588ad: 0f 1f 00 nopl (%rax) 0.00 : 588b0: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 588b7: 08 0.00 : 588b8: eb bb jmp 58875 <_IO_vfscanf+0x3ee5> 0.00 : 588ba: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 588c1: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 588c5: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 588cc: e9 f3 d8 ff ff jmpq 561c4 <_IO_vfscanf+0x1834> 0.00 : 588d1: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 588d8: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 588dc: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 588e3: e9 0a f1 ff ff jmpq 579f2 <_IO_vfscanf+0x3062> 0.00 : 588e8: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 588ef: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 588f6: 48 8b 06 mov (%rsi),%rax 0.00 : 588f9: 48 89 07 mov %rax,(%rdi) 0.00 : 588fc: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 58900: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 58904: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 58908: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 5890c: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 58912: 83 ea 01 sub $0x1,%edx 0.00 : 58915: 74 13 je 5892a <_IO_vfscanf+0x3f9a> 0.00 : 58917: 83 f8 30 cmp $0x30,%eax 0.00 : 5891a: 73 34 jae 58950 <_IO_vfscanf+0x3fc0> 0.00 : 5891c: 83 c0 08 add $0x8,%eax 0.00 : 5891f: 83 ea 01 sub $0x1,%edx 0.00 : 58922: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58928: 75 ed jne 58917 <_IO_vfscanf+0x3f87> 0.00 : 5892a: 83 f8 30 cmp $0x30,%eax 0.00 : 5892d: 0f 83 1f 08 00 00 jae 59152 <_IO_vfscanf+0x47c2> 0.00 : 58933: 89 c2 mov %eax,%edx 0.00 : 58935: 83 c0 08 add $0x8,%eax 0.00 : 58938: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5893f: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58945: e9 a8 f0 ff ff jmpq 579f2 <_IO_vfscanf+0x3062> 0.00 : 5894a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 58950: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 58957: 08 0.00 : 58958: eb b8 jmp 58912 <_IO_vfscanf+0x3f82> 0.00 : 5895a: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5895e: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 58962: 0f 83 61 17 00 00 jae 5a0c9 <_IO_vfscanf+0x5739> 0.00 : 58968: 0f b6 08 movzbl (%rax),%ecx 0.00 : 5896b: 48 83 c0 01 add $0x1,%rax 0.00 : 5896f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 58973: 48 8b b5 08 fd ff ff mov -0x2f8(%rbp),%rsi 0.00 : 5897a: 0f b6 d1 movzbl %cl,%edx 0.00 : 5897d: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 58981: 83 3c 90 6e cmpl $0x6e,(%rax,%rdx,4) 0.00 : 58985: 0f 85 4d c5 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 5898b: 31 c0 xor %eax,%eax 0.00 : 5898d: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 58994: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5899b: 0f 9f c0 setg %al 0.00 : 5899e: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 589a4: 48 83 bd 50 fd ff ff cmpq $0x1,-0x2b0(%rbp) 0.00 : 589ab: 01 0.00 : 589ac: 0f 84 07 08 00 00 je 591b9 <_IO_vfscanf+0x4829> 0.00 : 589b2: 88 4b 01 mov %cl,0x1(%rbx) 0.00 : 589b5: 44 8b 8d dc fd ff ff mov -0x224(%rbp),%r9d 0.00 : 589bc: 45 85 c9 test %r9d,%r9d 0.00 : 589bf: 0f 84 13 c5 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 589c5: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 589c9: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 589cd: 0f 83 cf 16 00 00 jae 5a0a2 <_IO_vfscanf+0x5712> 0.00 : 589d3: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 589d7: 48 83 c0 01 add $0x1,%rax 0.00 : 589db: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 589df: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 589e6: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 589ea: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 589ee: 83 3c 90 66 cmpl $0x66,(%rax,%rdx,4) 0.00 : 589f2: 0f 85 e0 c4 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 589f8: 31 c0 xor %eax,%eax 0.00 : 589fa: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 58a01: 49 89 d9 mov %rbx,%r9 0.00 : 58a04: 0f 9f c0 setg %al 0.00 : 58a07: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 58a0d: 48 83 bd 50 fd ff ff cmpq $0x2,-0x2b0(%rbp) 0.00 : 58a14: 02 0.00 : 58a15: 0f 84 75 07 00 00 je 59190 <_IO_vfscanf+0x4800> 0.00 : 58a1b: 4c 8b a5 d0 fd ff ff mov -0x230(%rbp),%r12 0.00 : 58a22: 45 88 79 02 mov %r15b,0x2(%r9) 0.00 : 58a26: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 58a2c: 44 8b 85 dc fd ff ff mov -0x224(%rbp),%r8d 0.00 : 58a33: 49 83 c4 02 add $0x2,%r12 0.00 : 58a37: 45 85 c0 test %r8d,%r8d 0.00 : 58a3a: 4d 89 e3 mov %r12,%r11 0.00 : 58a3d: 0f 84 9e f7 ff ff je 581e1 <_IO_vfscanf+0x3851> 0.00 : 58a43: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 58a47: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 58a4b: 0f 83 f1 2a 00 00 jae 5b542 <_IO_vfscanf+0x6bb2> 0.00 : 58a51: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 58a55: 48 83 c0 01 add $0x1,%rax 0.00 : 58a59: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 58a5d: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 58a64: 49 83 c3 03 add $0x3,%r11 0.00 : 58a68: 48 8b bd 08 fd ff ff mov -0x2f8(%rbp),%rdi 0.00 : 58a6f: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 58a73: 48 8b 47 70 mov 0x70(%rdi),%rax 0.00 : 58a77: 83 3c 90 69 cmpl $0x69,(%rax,%rdx,4) 0.00 : 58a7b: 0f 84 3c 2a 00 00 je 5b4bd <_IO_vfscanf+0x6b2d> 0.00 : 58a81: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 58a85: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 58a8b: 0f 84 50 f7 ff ff je 581e1 <_IO_vfscanf+0x3851> 0.00 : 58a91: 4c 89 d7 mov %r10,%rdi 0.00 : 58a94: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 58a98: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 58a9f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58aa6: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 58aac: e8 9f b6 01 00 callq 74150 <_IO_sputbackc> 0.00 : 58ab1: 4d 89 e3 mov %r12,%r11 0.00 : 58ab4: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 58abb: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58ac2: e9 1a f7 ff ff jmpq 581e1 <_IO_vfscanf+0x3851> 0.00 : 58ac7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 58ace: 00 00 0.00 : 58ad0: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 58ad7: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58adb: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 58ae2: e9 f4 f9 ff ff jmpq 584db <_IO_vfscanf+0x3b4b> 0.00 : 58ae7: 48 8b 8d f8 fc ff ff mov -0x308(%rbp),%rcx 0.00 : 58aee: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 58af5: 48 8b 01 mov (%rcx),%rax 0.00 : 58af8: 48 89 03 mov %rax,(%rbx) 0.00 : 58afb: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 58aff: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 58b03: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 58b07: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 58b0b: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 58b11: 83 ea 01 sub $0x1,%edx 0.00 : 58b14: 74 13 je 58b29 <_IO_vfscanf+0x4199> 0.00 : 58b16: 83 f8 30 cmp $0x30,%eax 0.00 : 58b19: 73 35 jae 58b50 <_IO_vfscanf+0x41c0> 0.00 : 58b1b: 83 c0 08 add $0x8,%eax 0.00 : 58b1e: 83 ea 01 sub $0x1,%edx 0.00 : 58b21: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58b27: 75 ed jne 58b16 <_IO_vfscanf+0x4186> 0.00 : 58b29: 83 f8 30 cmp $0x30,%eax 0.00 : 58b2c: 0f 83 7d 0b 00 00 jae 596af <_IO_vfscanf+0x4d1f> 0.00 : 58b32: 89 c2 mov %eax,%edx 0.00 : 58b34: 83 c0 08 add $0x8,%eax 0.00 : 58b37: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 58b3e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58b44: e9 9a d2 ff ff jmpq 55de3 <_IO_vfscanf+0x1453> 0.00 : 58b49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 58b50: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 58b57: 08 0.00 : 58b58: eb b7 jmp 58b11 <_IO_vfscanf+0x4181> 0.00 : 58b5a: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 58b61: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 58b68: 48 8b 06 mov (%rsi),%rax 0.00 : 58b6b: 48 89 07 mov %rax,(%rdi) 0.00 : 58b6e: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 58b72: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 58b76: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 58b7a: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 58b7e: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 58b84: 83 ea 01 sub $0x1,%edx 0.00 : 58b87: 0f 84 bb e5 ff ff je 57148 <_IO_vfscanf+0x27b8> 0.00 : 58b8d: 83 f8 30 cmp $0x30,%eax 0.00 : 58b90: 73 16 jae 58ba8 <_IO_vfscanf+0x4218> 0.00 : 58b92: 83 c0 08 add $0x8,%eax 0.00 : 58b95: 83 ea 01 sub $0x1,%edx 0.00 : 58b98: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 58b9e: 75 ed jne 58b8d <_IO_vfscanf+0x41fd> 0.00 : 58ba0: e9 a3 e5 ff ff jmpq 57148 <_IO_vfscanf+0x27b8> 0.00 : 58ba5: 0f 1f 00 nopl (%rax) 0.00 : 58ba8: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 58baf: 08 0.00 : 58bb0: eb d2 jmp 58b84 <_IO_vfscanf+0x41f4> 0.00 : 58bb2: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 58bb8: 85 c0 test %eax,%eax 0.00 : 58bba: 0f 85 de 0e 00 00 jne 59a9e <_IO_vfscanf+0x510e> 0.00 : 58bc0: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58bc6: 83 f8 30 cmp $0x30,%eax 0.00 : 58bc9: 0f 83 b8 0e 00 00 jae 59a87 <_IO_vfscanf+0x50f7> 0.00 : 58bcf: 89 c2 mov %eax,%edx 0.00 : 58bd1: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58bd8: 83 c0 08 add $0x8,%eax 0.00 : 58bdb: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 58be1: 48 8b 12 mov (%rdx),%rdx 0.00 : 58be4: 48 89 95 e0 fd ff ff mov %rdx,-0x220(%rbp) 0.00 : 58beb: 48 83 bd e0 fd ff ff cmpq $0x0,-0x220(%rbp) 0.00 : 58bf2: 00 0.00 : 58bf3: 0f 85 b6 e5 ff ff jne 571af <_IO_vfscanf+0x281f> 0.00 : 58bf9: e9 da c2 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 58bfe: 66 90 xchg %ax,%ax 0.00 : 58c00: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 58c07: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58c0b: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 58c12: e9 c2 e4 ff ff jmpq 570d9 <_IO_vfscanf+0x2749> 0.00 : 58c17: 49 83 eb 01 sub $0x1,%r11 0.00 : 58c1b: 4c 89 d7 mov %r10,%rdi 0.00 : 58c1e: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 58c22: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58c29: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58c30: e8 1b b5 01 00 callq 74150 <_IO_sputbackc> 0.00 : 58c35: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58c3c: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58c43: 45 85 f6 test %r14d,%r14d 0.00 : 58c46: 0f 85 a8 c0 ff ff jne 54cf4 <_IO_vfscanf+0x364> 0.00 : 58c4c: 48 8b 9d e0 fd ff ff mov -0x220(%rbp),%rbx 0.00 : 58c53: c7 03 00 00 00 00 movl $0x0,(%rbx) 0.00 : 58c59: 48 83 c3 04 add $0x4,%rbx 0.00 : 58c5d: f7 85 04 fd ff ff 00 testl $0x2100,-0x2fc(%rbp) 0.00 : 58c64: 21 00 00 0.00 : 58c67: 48 89 9d e0 fd ff ff mov %rbx,-0x220(%rbp) 0.00 : 58c6e: 0f 84 0f e4 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 58c74: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 58c7b: 48 89 d8 mov %rbx,%rax 0.00 : 58c7e: 48 8b 3e mov (%rsi),%rdi 0.00 : 58c81: 48 29 f8 sub %rdi,%rax 0.00 : 58c84: 48 c1 f8 02 sar $0x2,%rax 0.00 : 58c88: 4c 39 e0 cmp %r12,%rax 0.00 : 58c8b: 0f 84 f2 e3 ff ff je 57083 <_IO_vfscanf+0x26f3> 0.00 : 58c91: 48 8d 34 85 00 00 00 lea 0x0(,%rax,4),%rsi 0.00 : 58c98: 00 0.00 : 58c99: e9 b5 e3 ff ff jmpq 57053 <_IO_vfscanf+0x26c3> 0.00 : 58c9e: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 58ca5: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 58caa: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 58cae: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 58cb5: 48 8b 95 38 fd ff ff mov -0x2c8(%rbp),%rdx 0.00 : 58cbc: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 58cc0: 31 d2 xor %edx,%edx 0.00 : 58cc2: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 58cc9: e9 a2 d1 ff ff jmpq 55e70 <_IO_vfscanf+0x14e0> 0.00 : 58cce: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 58cd4: 85 d2 test %edx,%edx 0.00 : 58cd6: 0f 85 d4 0a 00 00 jne 597b0 <_IO_vfscanf+0x4e20> 0.00 : 58cdc: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58ce2: 83 f8 30 cmp $0x30,%eax 0.00 : 58ce5: 0f 83 ae 0a 00 00 jae 59799 <_IO_vfscanf+0x4e09> 0.00 : 58ceb: 89 c2 mov %eax,%edx 0.00 : 58ced: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58cf4: 83 c0 08 add $0x8,%eax 0.00 : 58cf7: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 58cfd: 48 8b 12 mov (%rdx),%rdx 50.00 : 58d00: 48 89 95 40 fd ff ff mov %rdx,-0x2c0(%rbp) 0.00 : 58d07: 48 83 bd 40 fd ff ff cmpq $0x0,-0x2c0(%rbp) 0.00 : 58d0e: 00 0.00 : 58d0f: 0f 85 65 d3 ff ff jne 5607a <_IO_vfscanf+0x16ea> 0.00 : 58d15: e9 be c1 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 58d1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 58d20: f7 85 04 fd ff ff 00 testl $0x200,-0x2fc(%rbp) 0.00 : 58d27: 02 00 00 0.00 : 58d2a: 0f 85 46 e7 ff ff jne 57476 <_IO_vfscanf+0x2ae6> 0.00 : 58d30: 8b 85 5c fd ff ff mov -0x2a4(%rbp),%eax 0.00 : 58d36: 85 c0 test %eax,%eax 0.00 : 58d38: 0f 85 4c 11 00 00 jne 59e8a <_IO_vfscanf+0x54fa> 0.00 : 58d3e: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58d44: 83 f8 30 cmp $0x30,%eax 0.00 : 58d47: 0f 83 26 11 00 00 jae 59e73 <_IO_vfscanf+0x54e3> 0.00 : 58d4d: 89 c2 mov %eax,%edx 0.00 : 58d4f: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58d56: 83 c0 08 add $0x8,%eax 0.00 : 58d59: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 58d5f: 48 8b 02 mov (%rdx),%rax 0.00 : 58d62: 8b 95 d0 fd ff ff mov -0x230(%rbp),%edx 0.00 : 58d68: 45 31 ed xor %r13d,%r13d 0.00 : 58d6b: 89 10 mov %edx,(%rax) 0.00 : 58d6d: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 58d74: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 58d7b: e9 1b be ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 58d80: 48 8b 95 60 fc ff ff mov -0x3a0(%rbp),%rdx 0.00 : 58d87: 48 8b 85 58 fc ff ff mov -0x3a8(%rbp),%rax 0.00 : 58d8e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58d95: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58d9c: 48 29 da sub %rbx,%rdx 0.00 : 58d9f: 48 29 d8 sub %rbx,%rax 0.00 : 58da2: 48 39 d1 cmp %rdx,%rcx 0.00 : 58da5: 48 0f 4c c1 cmovl %rcx,%rax 0.00 : 58da9: 4c 8d 24 08 lea (%rax,%rcx,1),%r12 0.00 : 58dad: 4c 89 e6 mov %r12,%rsi 0.00 : 58db0: e8 8b 5a fc ff callq 1e840 0.00 : 58db5: 48 85 c0 test %rax,%rax 0.00 : 58db8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58dbf: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58dc6: 0f 84 40 23 00 00 je 5b10c <_IO_vfscanf+0x677c> 0.00 : 58dcc: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 58dd3: 48 89 01 mov %rax,(%rcx) 0.00 : 58dd6: 48 03 85 e8 fd ff ff add -0x218(%rbp),%rax 0.00 : 58ddd: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 58de4: e9 cb d5 ff ff jmpq 563b4 <_IO_vfscanf+0x1a24> 0.00 : 58de9: f7 85 04 fd ff ff 00 testl $0x2000,-0x2fc(%rbp) 0.00 : 58df0: 20 00 00 0.00 : 58df3: 0f 84 df c0 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 58df9: e9 5d c1 ff ff jmpq 54f5b <_IO_vfscanf+0x5cb> 0.00 : 58dfe: 66 90 xchg %ax,%ax 0.00 : 58e00: 44 8b ad 5c fd ff ff mov -0x2a4(%rbp),%r13d 0.00 : 58e07: 45 85 ed test %r13d,%r13d 0.00 : 58e0a: 0f 85 89 0a 00 00 jne 59899 <_IO_vfscanf+0x4f09> 0.00 : 58e10: 8b 85 60 ff ff ff mov -0xa0(%rbp),%eax 0.00 : 58e16: 83 f8 30 cmp $0x30,%eax 0.00 : 58e19: 0f 83 63 0a 00 00 jae 59882 <_IO_vfscanf+0x4ef2> 0.00 : 58e1f: 89 c2 mov %eax,%edx 0.00 : 58e21: 48 03 95 70 ff ff ff add -0x90(%rbp),%rdx 0.00 : 58e28: 83 c0 08 add $0x8,%eax 0.00 : 58e2b: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) 0.00 : 58e31: 48 8b 12 mov (%rdx),%rdx 0.00 : 58e34: 48 89 95 40 fd ff ff mov %rdx,-0x2c0(%rbp) 0.00 : 58e3b: 48 83 bd 40 fd ff ff cmpq $0x0,-0x2c0(%rbp) 0.00 : 58e42: 00 0.00 : 58e43: 0f 85 c9 d4 ff ff jne 56312 <_IO_vfscanf+0x1982> 0.00 : 58e49: e9 8a c0 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 58e4e: 66 90 xchg %ax,%ax 0.00 : 58e50: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 58e57: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58e5b: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 58e62: e9 74 f6 ff ff jmpq 584db <_IO_vfscanf+0x3b4b> 0.00 : 58e67: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 58e6e: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58e72: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 58e79: e9 65 cf ff ff jmpq 55de3 <_IO_vfscanf+0x1453> 0.00 : 58e7e: 4f 8d 2c 24 lea (%r12,%r12,1),%r13 0.00 : 58e82: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58e89: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58e90: 4c 89 ee mov %r13,%rsi 0.00 : 58e93: e8 a8 59 fc ff callq 1e840 0.00 : 58e98: 48 85 c0 test %rax,%rax 0.00 : 58e9b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58ea2: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58ea9: 0f 84 58 24 00 00 je 5b307 <_IO_vfscanf+0x6977> 0.00 : 58eaf: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 58eb6: 48 89 07 mov %rax,(%rdi) 0.00 : 58eb9: 4c 01 e0 add %r12,%rax 0.00 : 58ebc: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 58ec3: e9 5d d2 ff ff jmpq 56125 <_IO_vfscanf+0x1795> 0.00 : 58ec8: 4c 8d 5b fe lea -0x2(%rbx),%r11 0.00 : 58ecc: 4c 89 d7 mov %r10,%rdi 0.00 : 58ecf: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 58ed3: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58eda: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 58ee1: e8 6a b2 01 00 callq 74150 <_IO_sputbackc> 0.00 : 58ee6: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58eed: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 58ef4: e9 1b e1 ff ff jmpq 57014 <_IO_vfscanf+0x2684> 0.00 : 58ef9: 48 8b 05 38 8f 31 00 mov 0x318f38(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 58f00: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 58f07: c7 85 00 fd ff ff ff movl $0xffffffff,-0x300(%rbp) 0.00 : 58f0e: ff ff ff 0.00 : 58f11: c7 04 02 16 00 00 00 movl $0x16,(%rdx,%rax,1) 0.00 : 58f18: e9 36 bd ff ff jmpq 54c53 <_IO_vfscanf+0x2c3> 0.00 : 58f1d: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 58f24: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 58f28: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 58f2f: e9 9a cf ff ff jmpq 55ece <_IO_vfscanf+0x153e> 0.00 : 58f34: 49 89 dc mov %rbx,%r12 0.00 : 58f37: e9 bf e8 ff ff jmpq 577fb <_IO_vfscanf+0x2e6b> 0.00 : 58f3c: 4b 8d 1c 36 lea (%r14,%r14,1),%rbx 0.00 : 58f40: be 00 01 00 00 mov $0x100,%esi 0.00 : 58f45: 48 81 fb 00 01 00 00 cmp $0x100,%rbx 0.00 : 58f4c: 48 0f 43 f3 cmovae %rbx,%rsi 0.00 : 58f50: 48 89 f0 mov %rsi,%rax 0.00 : 58f53: 48 89 b5 50 fd ff ff mov %rsi,-0x2b0(%rbp) 0.00 : 58f5a: 48 83 c0 1e add $0x1e,%rax 0.00 : 58f5e: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 58f62: 48 29 c4 sub %rax,%rsp 0.00 : 58f65: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 58f6a: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 58f6e: 4d 85 c9 test %r9,%r9 0.00 : 58f71: 0f 84 85 dc ff ff je 56bfc <_IO_vfscanf+0x226c> 0.00 : 58f77: 4c 89 f2 mov %r14,%rdx 0.00 : 58f7a: 4c 89 ce mov %r9,%rsi 0.00 : 58f7d: 4c 89 e7 mov %r12,%rdi 0.00 : 58f80: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58f87: e8 c4 b7 02 00 callq 84750 0.00 : 58f8c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58f93: e9 64 dc ff ff jmpq 56bfc <_IO_vfscanf+0x226c> 0.00 : 58f98: 4b 8d 14 36 lea (%r14,%r14,1),%rdx 0.00 : 58f9c: b9 00 01 00 00 mov $0x100,%ecx 0.00 : 58fa1: 48 81 fa 00 01 00 00 cmp $0x100,%rdx 0.00 : 58fa8: 48 0f 43 ca cmovae %rdx,%rcx 0.00 : 58fac: 48 89 c8 mov %rcx,%rax 0.00 : 58faf: 48 89 8d 50 fd ff ff mov %rcx,-0x2b0(%rbp) 0.00 : 58fb6: 48 83 c0 1e add $0x1e,%rax 0.00 : 58fba: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 58fbe: 48 29 c4 sub %rax,%rsp 0.00 : 58fc1: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 58fc6: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 58fca: 4d 85 c9 test %r9,%r9 0.00 : 58fcd: 0f 84 2b e7 ff ff je 576fe <_IO_vfscanf+0x2d6e> 0.00 : 58fd3: 4c 89 f2 mov %r14,%rdx 0.00 : 58fd6: 4c 89 ce mov %r9,%rsi 0.00 : 58fd9: 4c 89 e7 mov %r12,%rdi 0.00 : 58fdc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58fe3: e8 68 b7 02 00 callq 84750 0.00 : 58fe8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 58fef: e9 0a e7 ff ff jmpq 576fe <_IO_vfscanf+0x2d6e> 0.00 : 58ff4: 4c 89 d7 mov %r10,%rdi 0.00 : 58ff7: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 58ffe: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 59005: e8 f6 c1 01 00 callq 75200 <__uflow> 0.00 : 5900a: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5900d: 41 89 c7 mov %eax,%r15d 0.00 : 59010: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59017: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5901e: 0f 85 f9 0e 00 00 jne 59f1d <_IO_vfscanf+0x558d> 0.00 : 59024: 48 8b 1d 0d 8e 31 00 mov 0x318e0d(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5902b: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 59032: 4d 89 e1 mov %r12,%r9 0.00 : 59035: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 59038: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5903e: e9 6f f1 ff ff jmpq 581b2 <_IO_vfscanf+0x3822> 0.00 : 59043: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 5904a: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5904e: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59055: e9 46 f2 ff ff jmpq 582a0 <_IO_vfscanf+0x3910> 0.00 : 5905a: 48 8b 1d d7 8d 31 00 mov 0x318dd7(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 59061: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 59067: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5906e: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 59071: e9 a6 ed ff ff jmpq 57e1c <_IO_vfscanf+0x348c> 0.00 : 59076: 48 8b 1d bb 8d 31 00 mov 0x318dbb(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5907d: 8b 85 1c fd ff ff mov -0x2e4(%rbp),%eax 0.00 : 59083: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 5908a: 89 04 1f mov %eax,(%rdi,%rbx,1) 0.00 : 5908d: e9 62 ee ff ff jmpq 57ef4 <_IO_vfscanf+0x3564> 0.00 : 59092: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59099: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5909d: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 590a4: e9 fe ea ff ff jmpq 57ba7 <_IO_vfscanf+0x3217> 0.00 : 590a9: 48 8b 8d f8 fc ff ff mov -0x308(%rbp),%rcx 0.00 : 590b0: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 590b7: 48 8b 01 mov (%rcx),%rax 0.00 : 590ba: 48 89 03 mov %rax,(%rbx) 0.00 : 590bd: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 590c1: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 590c5: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 590c9: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 590cd: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 590d3: 83 ea 01 sub $0x1,%edx 0.00 : 590d6: 74 13 je 590eb <_IO_vfscanf+0x475b> 0.00 : 590d8: 83 f8 30 cmp $0x30,%eax 0.00 : 590db: 73 2a jae 59107 <_IO_vfscanf+0x4777> 0.00 : 590dd: 83 c0 08 add $0x8,%eax 0.00 : 590e0: 83 ea 01 sub $0x1,%edx 0.00 : 590e3: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 590e9: 75 ed jne 590d8 <_IO_vfscanf+0x4748> 0.00 : 590eb: 83 f8 30 cmp $0x30,%eax 0.00 : 590ee: 73 21 jae 59111 <_IO_vfscanf+0x4781> 0.00 : 590f0: 89 c2 mov %eax,%edx 0.00 : 590f2: 83 c0 08 add $0x8,%eax 0.00 : 590f5: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 590fc: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59102: e9 bd d0 ff ff jmpq 561c4 <_IO_vfscanf+0x1834> 0.00 : 59107: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 5910e: 08 0.00 : 5910f: eb c2 jmp 590d3 <_IO_vfscanf+0x4743> 0.00 : 59111: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59118: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5911c: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59123: e9 9c d0 ff ff jmpq 561c4 <_IO_vfscanf+0x1834> 0.00 : 59128: 48 8b 05 09 8d 31 00 mov 0x318d09(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5912f: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 59136: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 5913b: c7 04 01 54 00 00 00 movl $0x54,(%rcx,%rax,1) 0.00 : 59142: e9 99 bd ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 59147: 41 89 df mov %ebx,%r15d 0.00 : 5914a: 4d 89 c4 mov %r8,%r12 0.00 : 5914d: e9 f1 fa ff ff jmpq 58c43 <_IO_vfscanf+0x42b3> 0.00 : 59152: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59159: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5915d: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59164: e9 89 e8 ff ff jmpq 579f2 <_IO_vfscanf+0x3062> 0.00 : 59169: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 59170: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 59177: 00 01 00 00 0.00 : 5917b: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 59180: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 59184: 48 89 85 f0 fd ff ff mov %rax,-0x210(%rbp) 0.00 : 5918b: e9 bb ee ff ff jmpq 5804b <_IO_vfscanf+0x36bb> 0.00 : 59190: 0f b7 03 movzwl (%rbx),%eax 0.00 : 59193: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5919a: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 5919f: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 591a3: 66 89 06 mov %ax,(%rsi) 0.00 : 591a6: 49 89 f1 mov %rsi,%r9 0.00 : 591a9: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 591b0: 00 01 00 00 0.00 : 591b4: e9 62 f8 ff ff jmpq 58a1b <_IO_vfscanf+0x408b> 0.00 : 591b9: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 591c0: 48 8b bd f0 fd ff ff mov -0x210(%rbp),%rdi 0.00 : 591c7: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 591cc: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 591d0: 48 89 c3 mov %rax,%rbx 0.00 : 591d3: 0f b6 07 movzbl (%rdi),%eax 0.00 : 591d6: 88 03 mov %al,(%rbx) 0.00 : 591d8: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 591df: 00 01 00 00 0.00 : 591e3: e9 ca f7 ff ff jmpq 589b2 <_IO_vfscanf+0x4022> 0.00 : 591e8: 0f b7 03 movzwl (%rbx),%eax 0.00 : 591eb: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 591f2: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 591f7: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 591fb: 66 89 06 mov %ax,(%rsi) 0.00 : 591fe: 49 89 f1 mov %rsi,%r9 0.00 : 59201: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 59208: 00 01 00 00 0.00 : 5920c: e9 85 f4 ff ff jmpq 58696 <_IO_vfscanf+0x3d06> 0.00 : 59211: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 59218: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 5921f: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 59224: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 59228: 48 89 c3 mov %rax,%rbx 0.00 : 5922b: 0f b6 06 movzbl (%rsi),%eax 0.00 : 5922e: 88 03 mov %al,(%rbx) 0.00 : 59230: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 59237: 00 01 00 00 0.00 : 5923b: e9 ff f3 ff ff jmpq 5863f <_IO_vfscanf+0x3caf> 0.00 : 59240: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59247: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5924b: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59252: e9 c6 f1 ff ff jmpq 5841d <_IO_vfscanf+0x3a8d> 0.00 : 59257: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 5925e: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 59265: 48 8b 02 mov (%rdx),%rax 0.00 : 59268: 48 89 01 mov %rax,(%rcx) 0.00 : 5926b: 48 8b 9d f8 fc ff ff mov -0x308(%rbp),%rbx 0.00 : 59272: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 59276: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 5927a: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 5927e: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 59282: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59288: 83 ea 01 sub $0x1,%edx 0.00 : 5928b: 74 1a je 592a7 <_IO_vfscanf+0x4917> 0.00 : 5928d: 83 f8 30 cmp $0x30,%eax 0.00 : 59290: 73 0b jae 5929d <_IO_vfscanf+0x490d> 0.00 : 59292: 83 c0 08 add $0x8,%eax 0.00 : 59295: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5929b: eb eb jmp 59288 <_IO_vfscanf+0x48f8> 0.00 : 5929d: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 592a4: 08 0.00 : 592a5: eb e1 jmp 59288 <_IO_vfscanf+0x48f8> 0.00 : 592a7: 83 f8 30 cmp $0x30,%eax 0.00 : 592aa: 0f 83 8b 2b 00 00 jae 5be3b <_IO_vfscanf+0x74ab> 0.00 : 592b0: 89 c2 mov %eax,%edx 0.00 : 592b2: 83 c0 08 add $0x8,%eax 0.00 : 592b5: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 592bc: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 592c2: e9 56 f1 ff ff jmpq 5841d <_IO_vfscanf+0x3a8d> 0.00 : 592c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 592ce: 00 00 0.00 : 592d0: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 592d7: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 592db: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 592e2: e9 91 f0 ff ff jmpq 58378 <_IO_vfscanf+0x39e8> 0.00 : 592e7: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 592ee: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 592f5: 48 8b 06 mov (%rsi),%rax 0.00 : 592f8: 48 89 07 mov %rax,(%rdi) 0.00 : 592fb: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 592ff: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 59303: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59307: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 5930b: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59311: 83 ea 01 sub $0x1,%edx 0.00 : 59314: 74 1a je 59330 <_IO_vfscanf+0x49a0> 0.00 : 59316: 83 f8 30 cmp $0x30,%eax 0.00 : 59319: 73 0b jae 59326 <_IO_vfscanf+0x4996> 0.00 : 5931b: 83 c0 08 add $0x8,%eax 0.00 : 5931e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59324: eb eb jmp 59311 <_IO_vfscanf+0x4981> 0.00 : 59326: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 5932d: 08 0.00 : 5932e: eb e1 jmp 59311 <_IO_vfscanf+0x4981> 0.00 : 59330: 83 f8 30 cmp $0x30,%eax 0.00 : 59333: 0f 83 19 2b 00 00 jae 5be52 <_IO_vfscanf+0x74c2> 0.00 : 59339: 89 c2 mov %eax,%edx 0.00 : 5933b: 83 c0 08 add $0x8,%eax 0.00 : 5933e: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59345: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5934b: e9 28 f0 ff ff jmpq 58378 <_IO_vfscanf+0x39e8> 0.00 : 59350: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 59354: 0f 84 58 ee ff ff je 581b2 <_IO_vfscanf+0x3822> 0.00 : 5935a: 49 83 eb 01 sub $0x1,%r11 0.00 : 5935e: 4c 89 d7 mov %r10,%rdi 0.00 : 59361: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 59365: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5936c: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59373: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5937a: e8 d1 ad 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5937f: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 59386: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5938d: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59394: e9 19 ee ff ff jmpq 581b2 <_IO_vfscanf+0x3822> 0.00 : 59399: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 593a0: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 593a7: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 593ae: 48 8b 07 mov (%rdi),%rax 0.00 : 593b1: 48 89 02 mov %rax,(%rdx) 0.00 : 593b4: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 593b8: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 593bf: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 593c3: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 593c7: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 593cb: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 593d1: 83 ea 01 sub $0x1,%edx 0.00 : 593d4: 74 1a je 593f0 <_IO_vfscanf+0x4a60> 0.00 : 593d6: 83 f8 30 cmp $0x30,%eax 0.00 : 593d9: 73 0b jae 593e6 <_IO_vfscanf+0x4a56> 0.00 : 593db: 83 c0 08 add $0x8,%eax 0.00 : 593de: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 593e4: eb eb jmp 593d1 <_IO_vfscanf+0x4a41> 0.00 : 593e6: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 593ed: 08 0.00 : 593ee: eb e1 jmp 593d1 <_IO_vfscanf+0x4a41> 0.00 : 593f0: 83 f8 30 cmp $0x30,%eax 0.00 : 593f3: 0f 83 70 2a 00 00 jae 5be69 <_IO_vfscanf+0x74d9> 0.00 : 593f9: 89 c2 mov %eax,%edx 0.00 : 593fb: 83 c0 08 add $0x8,%eax 0.00 : 593fe: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59405: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5940b: e9 90 ee ff ff jmpq 582a0 <_IO_vfscanf+0x3910> 0.00 : 59410: 48 83 bd 50 fd ff ff cmpq $0x1,-0x2b0(%rbp) 0.00 : 59417: 01 0.00 : 59418: 4c 8b 8d f0 fd ff ff mov -0x210(%rbp),%r9 0.00 : 5941f: 0f 84 5b 1d 00 00 je 5b180 <_IO_vfscanf+0x67f0> 0.00 : 59425: 45 88 79 01 mov %r15b,0x1(%r9) 0.00 : 59429: 81 8d 04 fd ff ff 00 orl $0x800,-0x2fc(%rbp) 0.00 : 59430: 08 00 00 0.00 : 59433: 81 a5 04 fd ff ff 7f andl $0xffffff7f,-0x2fc(%rbp) 0.00 : 5943a: ff ff ff 0.00 : 5943d: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 59441: 0f 85 16 1d 00 00 jne 5b15d <_IO_vfscanf+0x67cd> 0.00 : 59447: 48 8b 1d ea 89 31 00 mov 0x3189ea(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5944e: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 59454: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5945b: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 5945e: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 59464: c6 85 1f fe ff ff 70 movb $0x70,-0x1e1(%rbp) 0.00 : 5946b: 41 be 02 00 00 00 mov $0x2,%r14d 0.00 : 59471: 85 c0 test %eax,%eax 0.00 : 59473: 0f 8e fc d1 ff ff jle 56675 <_IO_vfscanf+0x1ce5> 0.00 : 59479: 83 ad dc fd ff ff 01 subl $0x1,-0x224(%rbp) 0.00 : 59480: c6 85 1f fe ff ff 70 movb $0x70,-0x1e1(%rbp) 0.00 : 59487: 41 be 02 00 00 00 mov $0x2,%r14d 0.00 : 5948d: e9 e3 d1 ff ff jmpq 56675 <_IO_vfscanf+0x1ce5> 0.00 : 59492: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 59498: 4c 8b a5 30 fd ff ff mov -0x2d0(%rbp),%r12 0.00 : 5949f: 31 c0 xor %eax,%eax 0.00 : 594a1: e9 bf de ff ff jmpq 57365 <_IO_vfscanf+0x29d5> 0.00 : 594a6: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 594ad: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 594b4: 48 8b 07 mov (%rdi),%rax 0.00 : 594b7: 48 89 02 mov %rax,(%rdx) 0.00 : 594ba: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 594be: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 594c5: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 594c9: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 594cd: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 594d1: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 594d7: 83 ea 01 sub $0x1,%edx 0.00 : 594da: 74 1a je 594f6 <_IO_vfscanf+0x4b66> 0.00 : 594dc: 83 f8 30 cmp $0x30,%eax 0.00 : 594df: 73 0b jae 594ec <_IO_vfscanf+0x4b5c> 0.00 : 594e1: 83 c0 08 add $0x8,%eax 0.00 : 594e4: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 594ea: eb eb jmp 594d7 <_IO_vfscanf+0x4b47> 0.00 : 594ec: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 594f3: 08 0.00 : 594f4: eb e1 jmp 594d7 <_IO_vfscanf+0x4b47> 0.00 : 594f6: 83 f8 30 cmp $0x30,%eax 0.00 : 594f9: 0f 83 eb 1a 00 00 jae 5afea <_IO_vfscanf+0x665a> 0.00 : 594ff: 89 c2 mov %eax,%edx 0.00 : 59501: 83 c0 08 add $0x8,%eax 0.00 : 59504: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5950b: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59511: e9 af ea ff ff jmpq 57fc5 <_IO_vfscanf+0x3635> 0.00 : 59516: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5951d: 00 00 00 0.00 : 59520: 48 8b 8d f8 fc ff ff mov -0x308(%rbp),%rcx 0.00 : 59527: 48 8b b5 48 fc ff ff mov -0x3b8(%rbp),%rsi 0.00 : 5952e: 48 8b 01 mov (%rcx),%rax 0.00 : 59531: 48 89 06 mov %rax,(%rsi) 0.00 : 59534: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 59538: 48 89 56 08 mov %rdx,0x8(%rsi) 0.00 : 5953c: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 59540: 48 89 56 10 mov %rdx,0x10(%rsi) 0.00 : 59544: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 5954a: 83 ea 01 sub $0x1,%edx 0.00 : 5954d: 74 1a je 59569 <_IO_vfscanf+0x4bd9> 0.00 : 5954f: 83 f8 30 cmp $0x30,%eax 0.00 : 59552: 73 0b jae 5955f <_IO_vfscanf+0x4bcf> 0.00 : 59554: 83 c0 08 add $0x8,%eax 0.00 : 59557: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5955d: eb eb jmp 5954a <_IO_vfscanf+0x4bba> 0.00 : 5955f: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59566: 08 0.00 : 59567: eb e1 jmp 5954a <_IO_vfscanf+0x4bba> 0.00 : 59569: 83 f8 30 cmp $0x30,%eax 0.00 : 5956c: 0f 83 7d 09 00 00 jae 59eef <_IO_vfscanf+0x555f> 0.00 : 59572: 89 c2 mov %eax,%edx 0.00 : 59574: 83 c0 08 add $0x8,%eax 0.00 : 59577: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5957e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59584: e9 e6 cc ff ff jmpq 5626f <_IO_vfscanf+0x18df> 0.00 : 59589: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 59590: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 59597: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5959c: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 595a0: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 595a7: 48 8b 95 38 fd ff ff mov -0x2c8(%rbp),%rdx 0.00 : 595ae: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 595b2: 31 d2 xor %edx,%edx 0.00 : 595b4: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 595bb: e9 38 cd ff ff jmpq 562f8 <_IO_vfscanf+0x1968> 0.00 : 595c0: 48 8b 8d f8 fc ff ff mov -0x308(%rbp),%rcx 0.00 : 595c7: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 595ce: 48 8b 01 mov (%rcx),%rax 0.00 : 595d1: 48 89 03 mov %rax,(%rbx) 0.00 : 595d4: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 595d8: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 595dc: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 595e0: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 595e4: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 595ea: 83 ea 01 sub $0x1,%edx 0.00 : 595ed: 74 1a je 59609 <_IO_vfscanf+0x4c79> 0.00 : 595ef: 83 f8 30 cmp $0x30,%eax 0.00 : 595f2: 73 0b jae 595ff <_IO_vfscanf+0x4c6f> 0.00 : 595f4: 83 c0 08 add $0x8,%eax 0.00 : 595f7: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 595fd: eb eb jmp 595ea <_IO_vfscanf+0x4c5a> 0.00 : 595ff: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59606: 08 0.00 : 59607: eb e1 jmp 595ea <_IO_vfscanf+0x4c5a> 0.00 : 59609: 83 f8 30 cmp $0x30,%eax 0.00 : 5960c: 0f 83 16 1a 00 00 jae 5b028 <_IO_vfscanf+0x6698> 0.00 : 59612: 89 c2 mov %eax,%edx 0.00 : 59614: 83 c0 08 add $0x8,%eax 0.00 : 59617: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5961e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59624: e9 c0 c9 ff ff jmpq 55fe9 <_IO_vfscanf+0x1659> 0.00 : 59629: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 59630: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 59637: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5963c: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 59640: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 59647: 48 8b 95 38 fd ff ff mov -0x2c8(%rbp),%rdx 0.00 : 5964e: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 59652: 31 d2 xor %edx,%edx 0.00 : 59654: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 5965b: e9 f5 c9 ff ff jmpq 56055 <_IO_vfscanf+0x16c5> 0.00 : 59660: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 59664: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 59668: 0f 83 a1 0b 00 00 jae 5a20f <_IO_vfscanf+0x587f> 0.00 : 5966e: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 59672: 48 83 c0 01 add $0x1,%rax 0.00 : 59676: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5967a: 49 83 c3 01 add $0x1,%r11 0.00 : 5967e: e9 13 be ff ff jmpq 55496 <_IO_vfscanf+0xb06> 0.00 : 59683: 48 8b 1d ae 87 31 00 mov 0x3187ae(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5968a: 8b b5 1c fd ff ff mov -0x2e4(%rbp),%esi 0.00 : 59690: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 59697: 89 34 19 mov %esi,(%rcx,%rbx,1) 0.00 : 5969a: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 596a1: 41 bf ff ff ff ff mov $0xffffffff,%r15d 0.00 : 596a7: 45 31 ed xor %r13d,%r13d 0.00 : 596aa: e9 ec b4 ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 596af: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 596b6: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 596ba: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 596c1: e9 1d c7 ff ff jmpq 55de3 <_IO_vfscanf+0x1453> 0.00 : 596c6: 48 8b 05 6b 87 31 00 mov 0x31876b(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 596cd: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 596d4: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 596d9: c7 04 02 54 00 00 00 movl $0x54,(%rdx,%rax,1) 0.00 : 596e0: e9 fb b7 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 596e5: 48 8b 1d 4c 87 31 00 mov 0x31874c(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 596ec: 8b b5 1c fd ff ff mov -0x2e4(%rbp),%esi 0.00 : 596f2: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 596f9: 89 34 19 mov %esi,(%rcx,%rbx,1) 0.00 : 596fc: e9 01 db ff ff jmpq 57202 <_IO_vfscanf+0x2872> 0.00 : 59701: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 59708: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5970f: 00 01 00 00 0.00 : 59713: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 59718: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5971c: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 59723: e9 e7 e9 ff ff jmpq 5810f <_IO_vfscanf+0x377f> 0.00 : 59728: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 5972f: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 59736: 48 8b 06 mov (%rsi),%rax 0.00 : 59739: 48 89 07 mov %rax,(%rdi) 0.00 : 5973c: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 59740: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 59744: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59748: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 5974c: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59752: 83 ea 01 sub $0x1,%edx 0.00 : 59755: 0f 84 f1 e3 ff ff je 57b4c <_IO_vfscanf+0x31bc> 0.00 : 5975b: 83 f8 30 cmp $0x30,%eax 0.00 : 5975e: 73 18 jae 59778 <_IO_vfscanf+0x4de8> 0.00 : 59760: 83 c0 08 add $0x8,%eax 0.00 : 59763: 83 ea 01 sub $0x1,%edx 0.00 : 59766: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5976c: 75 ed jne 5975b <_IO_vfscanf+0x4dcb> 0.00 : 5976e: e9 d9 e3 ff ff jmpq 57b4c <_IO_vfscanf+0x31bc> 0.00 : 59773: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 59778: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 5977f: 08 0.00 : 59780: eb d0 jmp 59752 <_IO_vfscanf+0x4dc2> 0.00 : 59782: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59789: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5978d: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59794: e9 2c e8 ff ff jmpq 57fc5 <_IO_vfscanf+0x3635> 0.00 : 59799: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 597a0: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 597a4: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 597ab: e9 4d f5 ff ff jmpq 58cfd <_IO_vfscanf+0x436d> 0.00 : 597b0: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 597b7: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 597be: 48 8b 06 mov (%rsi),%rax 0.00 : 597c1: 48 89 07 mov %rax,(%rdi) 0.00 : 597c4: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 597c8: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 597cc: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 597d0: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 597d4: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 597da: 83 ea 01 sub $0x1,%edx 0.00 : 597dd: 74 1a je 597f9 <_IO_vfscanf+0x4e69> 0.00 : 597df: 83 f8 30 cmp $0x30,%eax 0.00 : 597e2: 73 0b jae 597ef <_IO_vfscanf+0x4e5f> 0.00 : 597e4: 83 c0 08 add $0x8,%eax 0.00 : 597e7: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 597ed: eb eb jmp 597da <_IO_vfscanf+0x4e4a> 0.00 : 597ef: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 597f6: 08 0.00 : 597f7: eb e1 jmp 597da <_IO_vfscanf+0x4e4a> 0.00 : 597f9: 83 f8 30 cmp $0x30,%eax 0.00 : 597fc: 0f 83 85 1a 00 00 jae 5b287 <_IO_vfscanf+0x68f7> 0.00 : 59802: 89 c2 mov %eax,%edx 0.00 : 59804: 83 c0 08 add $0x8,%eax 0.00 : 59807: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5980e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59814: e9 e4 f4 ff ff jmpq 58cfd <_IO_vfscanf+0x436d> 0.00 : 59819: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 59820: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 59827: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 5982e: 48 8b 07 mov (%rdi),%rax 0.00 : 59831: 48 89 02 mov %rax,(%rdx) 0.00 : 59834: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 59838: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 5983f: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 59843: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 59847: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 5984b: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59851: 83 ea 01 sub $0x1,%edx 0.00 : 59854: 0f 84 63 ed ff ff je 585bd <_IO_vfscanf+0x3c2d> 0.00 : 5985a: 83 f8 30 cmp $0x30,%eax 0.00 : 5985d: 73 19 jae 59878 <_IO_vfscanf+0x4ee8> 0.00 : 5985f: 83 c0 08 add $0x8,%eax 0.00 : 59862: 83 ea 01 sub $0x1,%edx 0.00 : 59865: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5986b: 75 ed jne 5985a <_IO_vfscanf+0x4eca> 0.00 : 5986d: e9 4b ed ff ff jmpq 585bd <_IO_vfscanf+0x3c2d> 0.00 : 59872: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 59878: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 5987f: 08 0.00 : 59880: eb cf jmp 59851 <_IO_vfscanf+0x4ec1> 0.00 : 59882: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59889: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5988d: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59894: e9 98 f5 ff ff jmpq 58e31 <_IO_vfscanf+0x44a1> 0.00 : 59899: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 598a0: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 598a7: 48 8b 07 mov (%rdi),%rax 0.00 : 598aa: 48 89 02 mov %rax,(%rdx) 0.00 : 598ad: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 598b1: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 598b8: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 598bc: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 598c0: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 598c4: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 598ca: 83 ea 01 sub $0x1,%edx 0.00 : 598cd: 74 1a je 598e9 <_IO_vfscanf+0x4f59> 0.00 : 598cf: 83 f8 30 cmp $0x30,%eax 0.00 : 598d2: 73 0b jae 598df <_IO_vfscanf+0x4f4f> 0.00 : 598d4: 83 c0 08 add $0x8,%eax 0.00 : 598d7: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 598dd: eb eb jmp 598ca <_IO_vfscanf+0x4f3a> 0.00 : 598df: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 598e6: 08 0.00 : 598e7: eb e1 jmp 598ca <_IO_vfscanf+0x4f3a> 0.00 : 598e9: 83 f8 30 cmp $0x30,%eax 0.00 : 598ec: 0f 83 ac 19 00 00 jae 5b29e <_IO_vfscanf+0x690e> 0.00 : 598f2: 89 c2 mov %eax,%edx 0.00 : 598f4: 83 c0 08 add $0x8,%eax 0.00 : 598f7: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 598fe: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59904: e9 28 f5 ff ff jmpq 58e31 <_IO_vfscanf+0x44a1> 0.00 : 59909: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 59910: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 59917: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5991c: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 59920: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 59927: 48 8b 95 38 fd ff ff mov -0x2c8(%rbp),%rdx 0.00 : 5992e: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 59932: 31 d2 xor %edx,%edx 0.00 : 59934: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 5993b: e9 a1 cb ff ff jmpq 564e1 <_IO_vfscanf+0x1b51> 0.00 : 59940: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 59947: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 5994e: 48 8b 06 mov (%rsi),%rax 0.00 : 59951: 48 89 07 mov %rax,(%rdi) 0.00 : 59954: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 59958: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 5995c: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59960: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 59964: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 5996a: 83 ea 01 sub $0x1,%edx 0.00 : 5996d: 74 1a je 59989 <_IO_vfscanf+0x4ff9> 0.00 : 5996f: 83 f8 30 cmp $0x30,%eax 0.00 : 59972: 73 0b jae 5997f <_IO_vfscanf+0x4fef> 0.00 : 59974: 83 c0 08 add $0x8,%eax 0.00 : 59977: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5997d: eb eb jmp 5996a <_IO_vfscanf+0x4fda> 0.00 : 5997f: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59986: 08 0.00 : 59987: eb e1 jmp 5996a <_IO_vfscanf+0x4fda> 0.00 : 59989: 83 f8 30 cmp $0x30,%eax 0.00 : 5998c: 0f 83 63 17 00 00 jae 5b0f5 <_IO_vfscanf+0x6765> 0.00 : 59992: 89 c2 mov %eax,%edx 0.00 : 59994: 83 c0 08 add $0x8,%eax 0.00 : 59997: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5999e: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 599a4: e9 06 dc ff ff jmpq 575af <_IO_vfscanf+0x2c1f> 0.00 : 599a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 599b0: 4a 8d 34 e5 00 00 00 lea 0x0(,%r12,8),%rsi 0.00 : 599b7: 00 0.00 : 599b8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 599bf: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 599c6: e8 75 4e fc ff callq 1e840 0.00 : 599cb: 48 85 c0 test %rax,%rax 0.00 : 599ce: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 599d5: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 599dc: 0f 84 b1 03 00 00 je 59d93 <_IO_vfscanf+0x5403> 0.00 : 599e2: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 599e9: 4f 8d 04 24 lea (%r12,%r12,1),%r8 0.00 : 599ed: 48 89 07 mov %rax,(%rdi) 0.00 : 599f0: 48 03 85 f8 fd ff ff add -0x208(%rbp),%rax 0.00 : 599f7: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 599fe: e9 ba cf ff ff jmpq 569bd <_IO_vfscanf+0x202d> 0.00 : 59a03: f7 85 04 fd ff ff 00 testl $0x2000,-0x2fc(%rbp) 0.00 : 59a0a: 20 00 00 0.00 : 59a0d: 0f 85 48 b5 ff ff jne 54f5b <_IO_vfscanf+0x5cb> 0.00 : 59a13: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 59a1a: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 59a1f: 48 8b 02 mov (%rdx),%rax 0.00 : 59a22: 42 c6 44 20 ff 00 movb $0x0,-0x1(%rax,%r12,1) 0.00 : 59a28: 48 c7 85 48 fd ff ff movq $0x0,-0x2b8(%rbp) 0.00 : 59a2f: 00 00 00 00 0.00 : 59a33: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 59a3a: e9 a1 b4 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 59a3f: 90 nop 0.00 : 59a40: 48 81 ec 20 01 00 00 sub $0x120,%rsp 0.00 : 59a47: 31 d2 xor %edx,%edx 0.00 : 59a49: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 59a4e: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 59a52: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 59a59: 48 8b b5 38 fd ff ff mov -0x2c8(%rbp),%rsi 0.00 : 59a60: 48 89 70 08 mov %rsi,0x8(%rax) 0.00 : 59a64: 48 89 85 38 fd ff ff mov %rax,-0x2c8(%rbp) 0.00 : 59a6b: e9 ab db ff ff jmpq 5761b <_IO_vfscanf+0x2c8b> 0.00 : 59a70: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59a77: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59a7b: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59a82: e9 28 db ff ff jmpq 575af <_IO_vfscanf+0x2c1f> 0.00 : 59a87: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59a8e: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59a92: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59a99: e9 43 f1 ff ff jmpq 58be1 <_IO_vfscanf+0x4251> 0.00 : 59a9e: 48 8b bd f8 fc ff ff mov -0x308(%rbp),%rdi 0.00 : 59aa5: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 59aac: 48 8b 07 mov (%rdi),%rax 0.00 : 59aaf: 48 89 02 mov %rax,(%rdx) 0.00 : 59ab2: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 59ab6: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 59abd: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 59ac1: 48 8b 57 10 mov 0x10(%rdi),%rdx 0.00 : 59ac5: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 59ac9: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59acf: 83 ea 01 sub $0x1,%edx 0.00 : 59ad2: 74 1a je 59aee <_IO_vfscanf+0x515e> 0.00 : 59ad4: 83 f8 30 cmp $0x30,%eax 0.00 : 59ad7: 73 0b jae 59ae4 <_IO_vfscanf+0x5154> 0.00 : 59ad9: 83 c0 08 add $0x8,%eax 0.00 : 59adc: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59ae2: eb eb jmp 59acf <_IO_vfscanf+0x513f> 0.00 : 59ae4: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59aeb: 08 0.00 : 59aec: eb e1 jmp 59acf <_IO_vfscanf+0x513f> 0.00 : 59aee: 83 f8 30 cmp $0x30,%eax 0.00 : 59af1: 0f 83 48 15 00 00 jae 5b03f <_IO_vfscanf+0x66af> 0.00 : 59af7: 89 c2 mov %eax,%edx 0.00 : 59af9: 83 c0 08 add $0x8,%eax 0.00 : 59afc: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59b03: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59b09: e9 d3 f0 ff ff jmpq 58be1 <_IO_vfscanf+0x4251> 0.00 : 59b0e: 66 90 xchg %ax,%ax 0.00 : 59b10: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59b17: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59b1b: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59b22: e9 c2 c4 ff ff jmpq 55fe9 <_IO_vfscanf+0x1659> 0.00 : 59b27: 4c 89 d7 mov %r10,%rdi 0.00 : 59b2a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59b31: e8 ca b6 01 00 callq 75200 <__uflow> 0.00 : 59b36: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 59b39: 41 89 c7 mov %eax,%r15d 0.00 : 59b3c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59b43: 0f 84 ca b0 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 59b49: e9 d2 b6 ff ff jmpq 55220 <_IO_vfscanf+0x890> 0.00 : 59b4e: 66 90 xchg %ax,%ax 0.00 : 59b50: 48 8b 1d e1 82 31 00 mov 0x3182e1(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 59b57: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 59b5d: 4d 89 ec mov %r13,%r12 0.00 : 59b60: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 59b67: 89 14 18 mov %edx,(%rax,%rbx,1) 0.00 : 59b6a: e9 a5 d4 ff ff jmpq 57014 <_IO_vfscanf+0x2684> 0.00 : 59b6f: 4d 8d 5e fe lea -0x2(%r14),%r11 0.00 : 59b73: 4c 89 d7 mov %r10,%rdi 0.00 : 59b76: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 59b7a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59b81: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 59b88: e8 c3 a5 01 00 callq 74150 <_IO_sputbackc> 0.00 : 59b8d: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59b94: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59b9b: e9 5b dc ff ff jmpq 577fb <_IO_vfscanf+0x2e6b> 0.00 : 59ba0: 4d 8d 5d fe lea -0x2(%r13),%r11 0.00 : 59ba4: 4c 89 d7 mov %r10,%rdi 0.00 : 59ba7: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 59bab: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59bb2: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 59bb9: e8 92 a5 01 00 callq 74150 <_IO_sputbackc> 0.00 : 59bbe: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59bc5: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59bcc: e9 4b e2 ff ff jmpq 57e1c <_IO_vfscanf+0x348c> 0.00 : 59bd1: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59bd8: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59bdc: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59be3: e9 87 c6 ff ff jmpq 5626f <_IO_vfscanf+0x18df> 0.00 : 59be8: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59bef: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59bf3: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59bfa: e9 76 c8 ff ff jmpq 56475 <_IO_vfscanf+0x1ae5> 0.00 : 59bff: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 59c06: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 59c0d: 48 8b 02 mov (%rdx),%rax 0.00 : 59c10: 48 89 01 mov %rax,(%rcx) 0.00 : 59c13: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 59c1a: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 59c1e: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 59c22: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59c26: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 59c2a: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59c30: 83 ea 01 sub $0x1,%edx 0.00 : 59c33: 74 1a je 59c4f <_IO_vfscanf+0x52bf> 0.00 : 59c35: 83 f8 30 cmp $0x30,%eax 0.00 : 59c38: 73 0b jae 59c45 <_IO_vfscanf+0x52b5> 0.00 : 59c3a: 83 c0 08 add $0x8,%eax 0.00 : 59c3d: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59c43: eb eb jmp 59c30 <_IO_vfscanf+0x52a0> 0.00 : 59c45: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59c4c: 08 0.00 : 59c4d: eb e1 jmp 59c30 <_IO_vfscanf+0x52a0> 0.00 : 59c4f: 83 f8 30 cmp $0x30,%eax 0.00 : 59c52: 0f 83 24 01 00 00 jae 59d7c <_IO_vfscanf+0x53ec> 0.00 : 59c58: 89 c2 mov %eax,%edx 0.00 : 59c5a: 83 c0 08 add $0x8,%eax 0.00 : 59c5d: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59c64: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59c6a: e9 06 c8 ff ff jmpq 56475 <_IO_vfscanf+0x1ae5> 0.00 : 59c6f: 90 nop 0.00 : 59c70: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59c77: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59c7b: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59c82: e9 10 d5 ff ff jmpq 57197 <_IO_vfscanf+0x2807> 0.00 : 59c87: 48 8b 95 f8 fc ff ff mov -0x308(%rbp),%rdx 0.00 : 59c8e: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 59c95: 48 8b 02 mov (%rdx),%rax 0.00 : 59c98: 48 89 01 mov %rax,(%rcx) 0.00 : 59c9b: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 59ca2: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 59ca6: 48 89 51 08 mov %rdx,0x8(%rcx) 0.00 : 59caa: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59cae: 48 89 51 10 mov %rdx,0x10(%rcx) 0.00 : 59cb2: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59cb8: 83 ea 01 sub $0x1,%edx 0.00 : 59cbb: 74 1a je 59cd7 <_IO_vfscanf+0x5347> 0.00 : 59cbd: 83 f8 30 cmp $0x30,%eax 0.00 : 59cc0: 73 0b jae 59ccd <_IO_vfscanf+0x533d> 0.00 : 59cc2: 83 c0 08 add $0x8,%eax 0.00 : 59cc5: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59ccb: eb eb jmp 59cb8 <_IO_vfscanf+0x5328> 0.00 : 59ccd: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59cd4: 08 0.00 : 59cd5: eb e1 jmp 59cb8 <_IO_vfscanf+0x5328> 0.00 : 59cd7: 83 f8 30 cmp $0x30,%eax 0.00 : 59cda: 0f 83 0d 01 00 00 jae 59ded <_IO_vfscanf+0x545d> 0.00 : 59ce0: 89 c2 mov %eax,%edx 0.00 : 59ce2: 83 c0 08 add $0x8,%eax 0.00 : 59ce5: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59cec: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59cf2: e9 a0 d4 ff ff jmpq 57197 <_IO_vfscanf+0x2807> 0.00 : 59cf7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 59cfe: 00 00 0.00 : 59d00: 4c 89 d7 mov %r10,%rdi 0.00 : 59d03: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 59d0a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59d11: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 59d18: e8 e3 b4 01 00 callq 75200 <__uflow> 0.00 : 59d1d: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 59d20: 41 89 c7 mov %eax,%r15d 0.00 : 59d23: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 59d2a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59d31: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59d38: 0f 85 c6 00 00 00 jne 59e04 <_IO_vfscanf+0x5474> 0.00 : 59d3e: 48 8b 1d f3 80 31 00 mov 0x3180f3(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 59d45: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 59d4c: 4d 89 c4 mov %r8,%r12 0.00 : 59d4f: 8b 1c 19 mov (%rcx,%rbx,1),%ebx 0.00 : 59d52: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 59d58: e9 e6 ee ff ff jmpq 58c43 <_IO_vfscanf+0x42b3> 0.00 : 59d5d: 48 8b 1d d4 80 31 00 mov 0x3180d4(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 59d64: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 59d6a: 4d 89 c4 mov %r8,%r12 0.00 : 59d6d: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 59d74: 89 14 18 mov %edx,(%rax,%rbx,1) 0.00 : 59d77: e9 c7 ee ff ff jmpq 58c43 <_IO_vfscanf+0x42b3> 0.00 : 59d7c: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59d83: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59d87: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59d8e: e9 e2 c6 ff ff jmpq 56475 <_IO_vfscanf+0x1ae5> 0.00 : 59d93: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 59d9a: 4d 8d 44 24 01 lea 0x1(%r12),%r8 0.00 : 59d9f: 4a 8d 34 85 00 00 00 lea 0x0(,%r8,4),%rsi 0.00 : 59da6: 00 0.00 : 59da7: 48 8b 3a mov (%rdx),%rdi 0.00 : 59daa: 4c 89 85 30 fc ff ff mov %r8,-0x3d0(%rbp) 0.00 : 59db1: e8 8a 4a fc ff callq 1e840 0.00 : 59db6: 48 85 c0 test %rax,%rax 0.00 : 59db9: 4c 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8 0.00 : 59dc0: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59dc7: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59dce: 74 3d je 59e0d <_IO_vfscanf+0x547d> 0.00 : 59dd0: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 59dd7: 48 89 06 mov %rax,(%rsi) 0.00 : 59dda: 48 03 85 f8 fd ff ff add -0x208(%rbp),%rax 0.00 : 59de1: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 59de8: e9 d0 cb ff ff jmpq 569bd <_IO_vfscanf+0x202d> 0.00 : 59ded: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59df4: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59df8: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59dff: e9 93 d3 ff ff jmpq 57197 <_IO_vfscanf+0x2807> 0.00 : 59e04: 49 83 c3 01 add $0x1,%r11 0.00 : 59e08: e9 ee cb ff ff jmpq 569fb <_IO_vfscanf+0x206b> 0.00 : 59e0d: f7 85 04 fd ff ff 00 testl $0x2000,-0x2fc(%rbp) 0.00 : 59e14: 20 00 00 0.00 : 59e17: 0f 85 3e b1 ff ff jne 54f5b <_IO_vfscanf+0x5cb> 0.00 : 59e1d: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 59e24: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 59e29: 48 8b 01 mov (%rcx),%rax 0.00 : 59e2c: 42 c7 44 a0 fc 00 00 movl $0x0,-0x4(%rax,%r12,4) 0.00 : 59e33: 00 00 0.00 : 59e35: 48 c7 85 48 fd ff ff movq $0x0,-0x2b8(%rbp) 0.00 : 59e3c: 00 00 00 00 0.00 : 59e40: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 59e47: e9 94 b0 ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 59e4c: 4c 89 d7 mov %r10,%rdi 0.00 : 59e4f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59e56: e8 a5 b3 01 00 callq 75200 <__uflow> 0.00 : 59e5b: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 59e5e: 41 89 c7 mov %eax,%r15d 0.00 : 59e61: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59e68: 0f 84 a5 ad ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 59e6e: e9 c3 c4 ff ff jmpq 56336 <_IO_vfscanf+0x19a6> 0.00 : 59e73: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59e7a: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59e7e: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59e85: e9 d5 ee ff ff jmpq 58d5f <_IO_vfscanf+0x43cf> 0.00 : 59e8a: 48 8b b5 f8 fc ff ff mov -0x308(%rbp),%rsi 0.00 : 59e91: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 59e98: 48 8b 06 mov (%rsi),%rax 0.00 : 59e9b: 48 89 07 mov %rax,(%rdi) 0.00 : 59e9e: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 59ea2: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 59ea6: 48 8b 56 10 mov 0x10(%rsi),%rdx 0.00 : 59eaa: 48 89 57 10 mov %rdx,0x10(%rdi) 0.00 : 59eae: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59eb4: 83 ea 01 sub $0x1,%edx 0.00 : 59eb7: 74 1a je 59ed3 <_IO_vfscanf+0x5543> 0.00 : 59eb9: 83 f8 30 cmp $0x30,%eax 0.00 : 59ebc: 73 0b jae 59ec9 <_IO_vfscanf+0x5539> 0.00 : 59ebe: 83 c0 08 add $0x8,%eax 0.00 : 59ec1: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59ec7: eb eb jmp 59eb4 <_IO_vfscanf+0x5524> 0.00 : 59ec9: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59ed0: 08 0.00 : 59ed1: eb e1 jmp 59eb4 <_IO_vfscanf+0x5524> 0.00 : 59ed3: 83 f8 30 cmp $0x30,%eax 0.00 : 59ed6: 73 2e jae 59f06 <_IO_vfscanf+0x5576> 0.00 : 59ed8: 89 c2 mov %eax,%edx 0.00 : 59eda: 83 c0 08 add $0x8,%eax 0.00 : 59edd: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 59ee4: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59eea: e9 70 ee ff ff jmpq 58d5f <_IO_vfscanf+0x43cf> 0.00 : 59eef: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59ef6: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59efa: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59f01: e9 69 c3 ff ff jmpq 5626f <_IO_vfscanf+0x18df> 0.00 : 59f06: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 59f0d: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59f11: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 59f18: e9 42 ee ff ff jmpq 58d5f <_IO_vfscanf+0x43cf> 0.00 : 59f1d: 49 83 c3 01 add $0x1,%r11 0.00 : 59f21: 4c 89 9d d0 fd ff ff mov %r11,-0x230(%rbp) 0.00 : 59f28: e9 ea c7 ff ff jmpq 56717 <_IO_vfscanf+0x1d87> 0.00 : 59f2d: 4c 89 d7 mov %r10,%rdi 0.00 : 59f30: 44 89 85 30 fc ff ff mov %r8d,-0x3d0(%rbp) 0.00 : 59f37: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 59f3e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 59f45: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 59f4c: e8 af b2 01 00 callq 75200 <__uflow> 0.00 : 59f51: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 59f54: 41 89 c7 mov %eax,%r15d 0.00 : 59f57: 44 8b 85 30 fc ff ff mov -0x3d0(%rbp),%r8d 0.00 : 59f5e: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 59f65: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 59f6c: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 59f73: 0f 85 52 d4 ff ff jne 573cb <_IO_vfscanf+0x2a3b> 0.00 : 59f79: 48 8b 1d b8 7e 31 00 mov 0x317eb8(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 59f80: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 59f87: 4d 89 eb mov %r13,%r11 0.00 : 59f8a: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 59f8d: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 59f93: e9 d9 cd ff ff jmpq 56d71 <_IO_vfscanf+0x23e1> 0.00 : 59f98: 48 8b 95 68 ff ff ff mov -0x98(%rbp),%rdx 0.00 : 59f9f: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 59fa3: 48 89 85 68 ff ff ff mov %rax,-0x98(%rbp) 0.00 : 59faa: e9 f6 d4 ff ff jmpq 574a5 <_IO_vfscanf+0x2b15> 0.00 : 59faf: 48 8b 8d f8 fc ff ff mov -0x308(%rbp),%rcx 0.00 : 59fb6: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 59fbd: 48 8b 01 mov (%rcx),%rax 0.00 : 59fc0: 48 89 03 mov %rax,(%rbx) 0.00 : 59fc3: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 59fc7: 48 89 53 08 mov %rdx,0x8(%rbx) 0.00 : 59fcb: 48 8b 51 10 mov 0x10(%rcx),%rdx 0.00 : 59fcf: 48 89 53 10 mov %rdx,0x10(%rbx) 0.00 : 59fd3: 8b 95 5c fd ff ff mov -0x2a4(%rbp),%edx 0.00 : 59fd9: 83 ea 01 sub $0x1,%edx 0.00 : 59fdc: 74 1a je 59ff8 <_IO_vfscanf+0x5668> 0.00 : 59fde: 83 f8 30 cmp $0x30,%eax 0.00 : 59fe1: 73 0b jae 59fee <_IO_vfscanf+0x565e> 0.00 : 59fe3: 83 c0 08 add $0x8,%eax 0.00 : 59fe6: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 59fec: eb eb jmp 59fd9 <_IO_vfscanf+0x5649> 0.00 : 59fee: 48 83 85 f8 fe ff ff addq $0x8,-0x108(%rbp) 0.00 : 59ff5: 08 0.00 : 59ff6: eb e1 jmp 59fd9 <_IO_vfscanf+0x5649> 0.00 : 59ff8: 83 f8 30 cmp $0x30,%eax 0.00 : 59ffb: 0f 83 b7 0f 00 00 jae 5afb8 <_IO_vfscanf+0x6628> 0.00 : 5a001: 89 c2 mov %eax,%edx 0.00 : 5a003: 83 c0 08 add $0x8,%eax 0.00 : 5a006: 48 03 95 00 ff ff ff add -0x100(%rbp),%rdx 0.00 : 5a00d: 89 85 f0 fe ff ff mov %eax,-0x110(%rbp) 0.00 : 5a013: e9 8d d4 ff ff jmpq 574a5 <_IO_vfscanf+0x2b15> 0.00 : 5a018: 4c 89 d7 mov %r10,%rdi 0.00 : 5a01b: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a022: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a029: e8 d2 b1 01 00 callq 75200 <__uflow> 0.00 : 5a02e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a031: 41 89 c7 mov %eax,%r15d 0.00 : 5a034: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a03b: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a042: 0f 85 42 d8 ff ff jne 5788a <_IO_vfscanf+0x2efa> 0.00 : 5a048: 48 8b 1d e9 7d 31 00 mov 0x317de9(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a04f: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 5a056: 8b 1c 19 mov (%rcx,%rbx,1),%ebx 0.00 : 5a059: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a05f: e9 97 d7 ff ff jmpq 577fb <_IO_vfscanf+0x2e6b> 0.00 : 5a064: 4c 89 d7 mov %r10,%rdi 0.00 : 5a067: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a06e: e8 8d b1 01 00 callq 75200 <__uflow> 0.00 : 5a073: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a076: 41 89 c7 mov %eax,%r15d 0.00 : 5a079: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a080: 0f 85 d4 d5 ff ff jne 5765a <_IO_vfscanf+0x2cca> 0.00 : 5a086: 48 8b 1d ab 7d 31 00 mov 0x317dab(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a08d: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5a094: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5a097: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a09d: e9 53 c5 ff ff jmpq 565f5 <_IO_vfscanf+0x1c65> 0.00 : 5a0a2: 4c 89 d7 mov %r10,%rdi 0.00 : 5a0a5: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a0ac: e8 4f b1 01 00 callq 75200 <__uflow> 0.00 : 5a0b1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a0b4: 41 89 c7 mov %eax,%r15d 0.00 : 5a0b7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a0be: 0f 84 14 ae ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5a0c4: e9 16 e9 ff ff jmpq 589df <_IO_vfscanf+0x404f> 0.00 : 5a0c9: 4c 89 d7 mov %r10,%rdi 0.00 : 5a0cc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a0d3: e8 28 b1 01 00 callq 75200 <__uflow> 0.00 : 5a0d8: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a0db: 89 c1 mov %eax,%ecx 0.00 : 5a0dd: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a0e4: 0f 84 ee ad ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5a0ea: e9 84 e8 ff ff jmpq 58973 <_IO_vfscanf+0x3fe3> 0.00 : 5a0ef: 4c 89 d7 mov %r10,%rdi 0.00 : 5a0f2: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a0f9: e8 02 b1 01 00 callq 75200 <__uflow> 0.00 : 5a0fe: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a101: 41 89 c7 mov %eax,%r15d 0.00 : 5a104: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a10b: 0f 84 c7 ad ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5a111: e9 56 e5 ff ff jmpq 5866c <_IO_vfscanf+0x3cdc> 0.00 : 5a116: 4c 89 d7 mov %r10,%rdi 0.00 : 5a119: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a120: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a127: e8 d4 b0 01 00 callq 75200 <__uflow> 0.00 : 5a12c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a12f: 41 89 c7 mov %eax,%r15d 0.00 : 5a132: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a139: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a140: 0f 85 35 c9 ff ff jne 56a7b <_IO_vfscanf+0x20eb> 0.00 : 5a146: 48 8b 1d eb 7c 31 00 mov 0x317ceb(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a14d: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5a154: b8 fc 03 00 00 mov $0x3fc,%eax 0.00 : 5a159: 8b 1c 1e mov (%rsi,%rbx,1),%ebx 0.00 : 5a15c: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a162: e9 20 c9 ff ff jmpq 56a87 <_IO_vfscanf+0x20f7> 0.00 : 5a167: 4c 89 d7 mov %r10,%rdi 0.00 : 5a16a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a171: e8 8a b0 01 00 callq 75200 <__uflow> 0.00 : 5a176: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a179: 41 89 c7 mov %eax,%r15d 0.00 : 5a17c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a183: 0f 84 8a aa ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5a189: e9 a2 b4 ff ff jmpq 55630 <_IO_vfscanf+0xca0> 0.00 : 5a18e: 4d 89 c3 mov %r8,%r11 0.00 : 5a191: 45 89 ef mov %r13d,%r15d 0.00 : 5a194: 4c 89 cb mov %r9,%rbx 0.00 : 5a197: e9 3d b9 ff ff jmpq 55ad9 <_IO_vfscanf+0x1149> 0.00 : 5a19c: 4c 89 d7 mov %r10,%rdi 0.00 : 5a19f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a1a6: e8 55 b0 01 00 callq 75200 <__uflow> 0.00 : 5a1ab: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a1ae: 41 89 c7 mov %eax,%r15d 0.00 : 5a1b1: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a1b8: 0f 84 1a ad ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5a1be: e9 a6 da ff ff jmpq 57c69 <_IO_vfscanf+0x32d9> 0.00 : 5a1c3: 4c 89 d7 mov %r10,%rdi 0.00 : 5a1c6: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a1cd: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a1d4: e8 27 b0 01 00 callq 75200 <__uflow> 0.00 : 5a1d9: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a1dc: 41 89 c7 mov %eax,%r15d 0.00 : 5a1df: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a1e6: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a1ed: 0f 85 90 dd ff ff jne 57f83 <_IO_vfscanf+0x35f3> 0.00 : 5a1f3: 48 8b 1d 3e 7c 31 00 mov 0x317c3e(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a1fa: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 5a201: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 5a204: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a20a: e9 8b f4 ff ff jmpq 5969a <_IO_vfscanf+0x4d0a> 0.00 : 5a20f: 4c 89 d7 mov %r10,%rdi 0.00 : 5a212: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a219: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a220: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a227: e8 d4 af 01 00 callq 75200 <__uflow> 0.00 : 5a22c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a22f: 41 89 c7 mov %eax,%r15d 0.00 : 5a232: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a239: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a240: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a247: 0f 85 2d f4 ff ff jne 5967a <_IO_vfscanf+0x4cea> 0.00 : 5a24d: 48 8b 1d e4 7b 31 00 mov 0x317be4(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a254: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5a25b: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5a25e: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a264: e9 2d b2 ff ff jmpq 55496 <_IO_vfscanf+0xb06> 0.00 : 5a269: 4c 89 d7 mov %r10,%rdi 0.00 : 5a26c: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a273: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a27a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a281: e8 7a af 01 00 callq 75200 <__uflow> 0.00 : 5a286: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a289: 41 89 c7 mov %eax,%r15d 0.00 : 5a28c: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a293: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a29a: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a2a1: 0f 85 ae b1 ff ff jne 55455 <_IO_vfscanf+0xac5> 0.00 : 5a2a7: 48 8b 1d 8a 7b 31 00 mov 0x317b8a(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a2ae: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5a2b5: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5a2b8: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a2be: e9 96 b1 ff ff jmpq 55459 <_IO_vfscanf+0xac9> 0.00 : 5a2c3: 49 83 c3 01 add $0x1,%r11 0.00 : 5a2c7: e9 8c c6 ff ff jmpq 56958 <_IO_vfscanf+0x1fc8> 0.00 : 5a2cc: 48 8d 3d 91 0a 0e 00 lea 0xe0a91(%rip),%rdi # 13ad64 <__PRETTY_FUNCTION__.14584+0xe> 0.00 : 5a2d3: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a2da: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a2e1: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a2e8: e8 c3 46 08 00 callq de9b0 0.00 : 5a2ed: 48 8b 8d 10 fd ff ff mov -0x2f0(%rbp),%rcx 0.00 : 5a2f4: 48 89 85 70 fd ff ff mov %rax,-0x290(%rbp) 0.00 : 5a2fb: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a302: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a309: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a310: 8b 89 d8 00 00 00 mov 0xd8(%rcx),%ecx 0.00 : 5a316: 89 8d ec fc ff ff mov %ecx,-0x314(%rbp) 0.00 : 5a31c: 83 e9 01 sub $0x1,%ecx 0.00 : 5a31f: 48 85 c0 test %rax,%rax 0.00 : 5a322: 89 8d 6c fd ff ff mov %ecx,-0x294(%rbp) 0.00 : 5a328: 0f 85 d5 0a 00 00 jne 5ae03 <_IO_vfscanf+0x6473> 0.00 : 5a32e: 0f b6 8d 04 fd ff ff movzbl -0x2fc(%rbp),%ecx 0.00 : 5a335: c7 85 68 fd ff ff 00 movl $0x0,-0x298(%rbp) 0.00 : 5a33c: 00 00 00 0.00 : 5a33f: 83 e1 80 and $0xffffff80,%ecx 0.00 : 5a342: 88 8d 8a fc ff ff mov %cl,-0x376(%rbp) 0.00 : 5a348: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5a34c: 74 0a je 5a358 <_IO_vfscanf+0x59c8> 0.00 : 5a34e: 8b 9d dc fd ff ff mov -0x224(%rbp),%ebx 0.00 : 5a354: 85 db test %ebx,%ebx 0.00 : 5a356: 75 08 jne 5a360 <_IO_vfscanf+0x59d0> 0.00 : 5a358: 4c 89 cb mov %r9,%rbx 0.00 : 5a35b: e9 5d af ff ff jmpq 552bd <_IO_vfscanf+0x92d> 0.00 : 5a360: c7 85 7c fd ff ff 00 movl $0x0,-0x284(%rbp) 0.00 : 5a367: 00 00 00 0.00 : 5a36a: 48 c7 85 c0 fd ff ff movq $0x0,-0x240(%rbp) 0.00 : 5a371: 00 00 00 00 0.00 : 5a375: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5a37b: 41 be ff ff ff 7f mov $0x7fffffff,%r14d 0.00 : 5a381: 85 c0 test %eax,%eax 0.00 : 5a383: 44 0f 4f b5 dc fd ff cmovg -0x224(%rbp),%r14d 0.00 : 5a38a: ff 0.00 : 5a38b: 48 83 bd 70 fd ff ff cmpq $0x0,-0x290(%rbp) 0.00 : 5a392: 00 0.00 : 5a393: 0f 85 01 09 00 00 jne 5ac9a <_IO_vfscanf+0x630a> 0.00 : 5a399: 48 8b b5 10 fd ff ff mov -0x2f0(%rbp),%rsi 0.00 : 5a3a0: 48 8b 9d c0 fd ff ff mov -0x240(%rbp),%rbx 0.00 : 5a3a7: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 5a3ae: 48 8b 84 1e e0 00 00 mov 0xe0(%rsi,%rbx,1),%rax 0.00 : 5a3b5: 00 0.00 : 5a3b6: 48 89 04 1f mov %rax,(%rdi,%rbx,1) 0.00 : 5a3ba: 8b 85 68 fd ff ff mov -0x298(%rbp),%eax 0.00 : 5a3c0: 85 c0 test %eax,%eax 0.00 : 5a3c2: 74 6e je 5a432 <_IO_vfscanf+0x5aa2> 0.00 : 5a3c4: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 5a3cb: 48 8b 85 c0 fd ff ff mov -0x240(%rbp),%rax 0.00 : 5a3d2: 31 db xor %ebx,%ebx 0.00 : 5a3d4: 48 8b 3c 02 mov (%rdx,%rax,1),%rdi 0.00 : 5a3d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5a3df: 00 0.00 : 5a3e0: 31 f6 xor %esi,%esi 0.00 : 5a3e2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a3e9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a3f0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a3f7: 83 c3 01 add $0x1,%ebx 0.00 : 5a3fa: e8 b1 b7 02 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 5a3ff: 39 9d 68 fd ff ff cmp %ebx,-0x298(%rbp) 0.00 : 5a405: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 5a409: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a410: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a417: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a41e: 7f c0 jg 5a3e0 <_IO_vfscanf+0x5a50> 0.00 : 5a420: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 5a427: 48 8b 8d c0 fd ff ff mov -0x240(%rbp),%rcx 0.00 : 5a42e: 48 89 3c 0b mov %rdi,(%rbx,%rcx,1) 0.00 : 5a432: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 5a439: 48 8b b5 c0 fd ff ff mov -0x240(%rbp),%rsi 0.00 : 5a440: 48 8b 34 37 mov (%rdi,%rsi,1),%rsi 0.00 : 5a444: 48 89 b5 00 fe ff ff mov %rsi,-0x200(%rbp) 0.00 : 5a44b: 0f b6 16 movzbl (%rsi),%edx 0.00 : 5a44e: 49 89 f4 mov %rsi,%r12 0.00 : 5a451: 0f b6 c2 movzbl %dl,%eax 0.00 : 5a454: 44 39 f8 cmp %r15d,%eax 0.00 : 5a457: 75 71 jne 5a4ca <_IO_vfscanf+0x5b3a> 0.00 : 5a459: 4c 8b a5 00 fe ff ff mov -0x200(%rbp),%r12 0.00 : 5a460: 48 8b bd 00 fe ff ff mov -0x200(%rbp),%rdi 0.00 : 5a467: 49 83 c4 01 add $0x1,%r12 0.00 : 5a46b: 80 7f 01 00 cmpb $0x0,0x1(%rdi) 0.00 : 5a46f: 0f 84 9c 06 00 00 je 5ab11 <_IO_vfscanf+0x6181> 0.00 : 5a475: 49 83 c3 01 add $0x1,%r11 0.00 : 5a479: eb 20 jmp 5a49b <_IO_vfscanf+0x5b0b> 0.00 : 5a47b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5a480: 49 83 c4 01 add $0x1,%r12 0.00 : 5a484: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5a489: 0f 84 82 06 00 00 je 5ab11 <_IO_vfscanf+0x6181> 0.00 : 5a48f: 45 85 f6 test %r14d,%r14d 0.00 : 5a492: 49 8d 43 01 lea 0x1(%r11),%rax 0.00 : 5a496: 74 3d je 5a4d5 <_IO_vfscanf+0x5b45> 0.00 : 5a498: 49 89 c3 mov %rax,%r11 0.00 : 5a49b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5a49f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5a4a3: 4d 8d 6b ff lea -0x1(%r11),%r13 0.00 : 5a4a7: 0f 83 02 06 00 00 jae 5aaaf <_IO_vfscanf+0x611f> 0.00 : 5a4ad: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5a4b1: 48 83 c0 01 add $0x1,%rax 0.00 : 5a4b5: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5a4b9: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 5a4be: 41 83 ee 01 sub $0x1,%r14d 0.00 : 5a4c2: 0f b6 ca movzbl %dl,%ecx 0.00 : 5a4c5: 44 39 f9 cmp %r15d,%ecx 0.00 : 5a4c8: 74 b6 je 5a480 <_IO_vfscanf+0x5af0> 0.00 : 5a4ca: 84 d2 test %dl,%dl 0.00 : 5a4cc: 0f 84 3f 06 00 00 je 5ab11 <_IO_vfscanf+0x6181> 0.00 : 5a4d2: 44 89 f9 mov %r15d,%ecx 0.00 : 5a4d5: 4c 3b a5 00 fe ff ff cmp -0x200(%rbp),%r12 0.00 : 5a4dc: 41 89 cf mov %ecx,%r15d 0.00 : 5a4df: 0f 86 b3 00 00 00 jbe 5a598 <_IO_vfscanf+0x5c08> 0.00 : 5a4e5: 83 f9 ff cmp $0xffffffff,%ecx 0.00 : 5a4e8: 74 39 je 5a523 <_IO_vfscanf+0x5b93> 0.00 : 5a4ea: 49 83 eb 01 sub $0x1,%r11 0.00 : 5a4ee: 4c 89 d7 mov %r10,%rdi 0.00 : 5a4f1: 0f b6 f1 movzbl %cl,%esi 0.00 : 5a4f4: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a4fb: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a502: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a509: e8 42 9c 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5a50e: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a515: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a51c: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a523: 4d 8d 6c 24 ff lea -0x1(%r12),%r13 0.00 : 5a528: 4c 39 ad 00 fe ff ff cmp %r13,-0x200(%rbp) 0.00 : 5a52f: 73 62 jae 5a593 <_IO_vfscanf+0x5c03> 0.00 : 5a531: 4c 89 eb mov %r13,%rbx 0.00 : 5a534: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5a538: 0f b6 33 movzbl (%rbx),%esi 0.00 : 5a53b: 4c 89 d7 mov %r10,%rdi 0.00 : 5a53e: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a545: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a54c: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a553: 48 83 eb 01 sub $0x1,%rbx 0.00 : 5a557: e8 f4 9b 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5a55c: 48 39 9d 00 fe ff ff cmp %rbx,-0x200(%rbp) 0.00 : 5a563: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a56a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a571: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a578: 72 be jb 5a538 <_IO_vfscanf+0x5ba8> 0.00 : 5a57a: 48 8b 85 00 fe ff ff mov -0x200(%rbp),%rax 0.00 : 5a581: 49 8d 54 24 fe lea -0x2(%r12),%rdx 0.00 : 5a586: 48 83 e8 01 sub $0x1,%rax 0.00 : 5a58a: 48 29 d0 sub %rdx,%rax 0.00 : 5a58d: 49 01 c3 add %rax,%r11 0.00 : 5a590: 49 01 c5 add %rax,%r13 0.00 : 5a593: 45 0f b6 7d 00 movzbl 0x0(%r13),%r15d 0.00 : 5a598: 48 8b bd 00 fe ff ff mov -0x200(%rbp),%rdi 0.00 : 5a59f: 31 f6 xor %esi,%esi 0.00 : 5a5a1: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a5a8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a5af: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a5b6: e8 f5 b5 02 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 5a5bb: 48 8b 8d c0 fd ff ff mov -0x240(%rbp),%rcx 0.00 : 5a5c2: 48 8b 9d 48 fc ff ff mov -0x3b8(%rbp),%rbx 0.00 : 5a5c9: 48 83 c0 01 add $0x1,%rax 0.00 : 5a5cd: 48 89 04 0b mov %rax,(%rbx,%rcx,1) 0.00 : 5a5d1: 83 85 7c fd ff ff 01 addl $0x1,-0x284(%rbp) 0.00 : 5a5d8: 48 83 c1 08 add $0x8,%rcx 0.00 : 5a5dc: 83 bd 7c fd ff ff 0a cmpl $0xa,-0x284(%rbp) 0.00 : 5a5e3: 48 89 8d c0 fd ff ff mov %rcx,-0x240(%rbp) 0.00 : 5a5ea: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a5f1: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a5f8: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a5ff: 0f 85 70 fd ff ff jne 5a375 <_IO_vfscanf+0x59e5> 0.00 : 5a605: 8b bd 68 fd ff ff mov -0x298(%rbp),%edi 0.00 : 5a60b: 83 c7 01 add $0x1,%edi 0.00 : 5a60e: 39 bd 6c fd ff ff cmp %edi,-0x294(%rbp) 0.00 : 5a614: 89 bd 08 fe ff ff mov %edi,-0x1f8(%rbp) 0.00 : 5a61a: 0f 8c 2a 03 00 00 jl 5a94a <_IO_vfscanf+0x5fba> 0.00 : 5a620: 48 8b 85 48 fc ff ff mov -0x3b8(%rbp),%rax 0.00 : 5a627: c7 85 7c fd ff ff 00 movl $0x0,-0x284(%rbp) 0.00 : 5a62e: 00 00 00 0.00 : 5a631: 48 89 85 b8 fd ff ff mov %rax,-0x248(%rbp) 0.00 : 5a638: 48 8b 95 b8 fd ff ff mov -0x248(%rbp),%rdx 0.00 : 5a63f: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5a645: 41 bd ff ff ff 7f mov $0x7fffffff,%r13d 0.00 : 5a64b: 48 8b 12 mov (%rdx),%rdx 0.00 : 5a64e: 85 c0 test %eax,%eax 0.00 : 5a650: 44 0f 4f ad dc fd ff cmovg -0x224(%rbp),%r13d 0.00 : 5a657: ff 0.00 : 5a658: 48 89 95 88 fd ff ff mov %rdx,-0x278(%rbp) 0.00 : 5a65f: 0f b6 02 movzbl (%rdx),%eax 0.00 : 5a662: 4c 8b a5 88 fd ff ff mov -0x278(%rbp),%r12 0.00 : 5a669: 0f b6 d0 movzbl %al,%edx 0.00 : 5a66c: 44 39 fa cmp %r15d,%edx 0.00 : 5a66f: 75 77 jne 5a6e8 <_IO_vfscanf+0x5d58> 0.00 : 5a671: 4c 8b a5 88 fd ff ff mov -0x278(%rbp),%r12 0.00 : 5a678: 48 8b 8d 88 fd ff ff mov -0x278(%rbp),%rcx 0.00 : 5a67f: 49 83 c4 01 add $0x1,%r12 0.00 : 5a683: 80 79 01 00 cmpb $0x0,0x1(%rcx) 0.00 : 5a687: 0f 84 18 02 00 00 je 5a8a5 <_IO_vfscanf+0x5f15> 0.00 : 5a68d: 49 83 c3 01 add $0x1,%r11 0.00 : 5a691: eb 20 jmp 5a6b3 <_IO_vfscanf+0x5d23> 0.00 : 5a693: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5a698: 49 83 c4 01 add $0x1,%r12 0.00 : 5a69c: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5a6a1: 0f 84 fe 01 00 00 je 5a8a5 <_IO_vfscanf+0x5f15> 0.00 : 5a6a7: 45 85 ed test %r13d,%r13d 0.00 : 5a6aa: 49 8d 43 01 lea 0x1(%r11),%rax 0.00 : 5a6ae: 74 43 je 5a6f3 <_IO_vfscanf+0x5d63> 0.00 : 5a6b0: 49 89 c3 mov %rax,%r11 0.00 : 5a6b3: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5a6b7: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5a6bb: 4d 8d 73 ff lea -0x1(%r11),%r14 0.00 : 5a6bf: 0f 83 23 02 00 00 jae 5a8e8 <_IO_vfscanf+0x5f58> 0.00 : 5a6c5: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5a6c9: 48 83 c0 01 add $0x1,%rax 0.00 : 5a6cd: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5a6d1: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 5a6d6: 41 83 ed 01 sub $0x1,%r13d 0.00 : 5a6da: 0f b6 d0 movzbl %al,%edx 0.00 : 5a6dd: 44 39 fa cmp %r15d,%edx 0.00 : 5a6e0: 74 b6 je 5a698 <_IO_vfscanf+0x5d08> 0.00 : 5a6e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5a6e8: 84 c0 test %al,%al 0.00 : 5a6ea: 0f 84 b8 01 00 00 je 5a8a8 <_IO_vfscanf+0x5f18> 0.00 : 5a6f0: 44 89 fa mov %r15d,%edx 0.00 : 5a6f3: 4c 39 a5 88 fd ff ff cmp %r12,-0x278(%rbp) 0.00 : 5a6fa: 41 89 d7 mov %edx,%r15d 0.00 : 5a6fd: 0f 83 b5 00 00 00 jae 5a7b8 <_IO_vfscanf+0x5e28> 0.00 : 5a703: 83 fa ff cmp $0xffffffff,%edx 0.00 : 5a706: 74 39 je 5a741 <_IO_vfscanf+0x5db1> 0.00 : 5a708: 49 83 eb 01 sub $0x1,%r11 0.00 : 5a70c: 4c 89 d7 mov %r10,%rdi 0.00 : 5a70f: 0f b6 f2 movzbl %dl,%esi 0.00 : 5a712: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a719: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a720: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a727: e8 24 9a 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5a72c: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a733: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a73a: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a741: 4d 8d 6c 24 ff lea -0x1(%r12),%r13 0.00 : 5a746: 4c 39 ad 88 fd ff ff cmp %r13,-0x278(%rbp) 0.00 : 5a74d: 73 64 jae 5a7b3 <_IO_vfscanf+0x5e23> 0.00 : 5a74f: 4c 89 eb mov %r13,%rbx 0.00 : 5a752: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5a758: 0f b6 33 movzbl (%rbx),%esi 0.00 : 5a75b: 4c 89 d7 mov %r10,%rdi 0.00 : 5a75e: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a765: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a76c: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a773: 48 83 eb 01 sub $0x1,%rbx 0.00 : 5a777: e8 d4 99 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5a77c: 48 39 9d 88 fd ff ff cmp %rbx,-0x278(%rbp) 0.00 : 5a783: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a78a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a791: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a798: 72 be jb 5a758 <_IO_vfscanf+0x5dc8> 0.00 : 5a79a: 48 8b 85 88 fd ff ff mov -0x278(%rbp),%rax 0.00 : 5a7a1: 49 8d 54 24 fe lea -0x2(%r12),%rdx 0.00 : 5a7a6: 48 83 e8 01 sub $0x1,%rax 0.00 : 5a7aa: 48 29 d0 sub %rdx,%rax 0.00 : 5a7ad: 49 01 c3 add %rax,%r11 0.00 : 5a7b0: 49 01 c5 add %rax,%r13 0.00 : 5a7b3: 45 0f b6 7d 00 movzbl 0x0(%r13),%r15d 0.00 : 5a7b8: 48 8b bd 88 fd ff ff mov -0x278(%rbp),%rdi 0.00 : 5a7bf: 31 f6 xor %esi,%esi 0.00 : 5a7c1: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a7c8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a7cf: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a7d6: e8 d5 b3 02 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 5a7db: 48 8b bd b8 fd ff ff mov -0x248(%rbp),%rdi 0.00 : 5a7e2: 48 83 c0 01 add $0x1,%rax 0.00 : 5a7e6: 48 89 07 mov %rax,(%rdi) 0.00 : 5a7e9: 83 85 7c fd ff ff 01 addl $0x1,-0x284(%rbp) 0.00 : 5a7f0: 48 83 c7 08 add $0x8,%rdi 0.00 : 5a7f4: 83 bd 7c fd ff ff 0a cmpl $0xa,-0x284(%rbp) 0.00 : 5a7fb: 48 89 bd b8 fd ff ff mov %rdi,-0x248(%rbp) 0.00 : 5a802: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a809: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a810: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a817: 0f 85 1b fe ff ff jne 5a638 <_IO_vfscanf+0x5ca8> 0.00 : 5a81d: 83 85 08 fe ff ff 01 addl $0x1,-0x1f8(%rbp) 0.00 : 5a824: 8b 95 08 fe ff ff mov -0x1f8(%rbp),%edx 0.00 : 5a82a: 39 95 6c fd ff ff cmp %edx,-0x294(%rbp) 0.00 : 5a830: 0f 8d ea fd ff ff jge 5a620 <_IO_vfscanf+0x5c90> 0.00 : 5a836: 83 bd 7c fd ff ff 09 cmpl $0x9,-0x284(%rbp) 0.00 : 5a83d: 0f 8f 07 01 00 00 jg 5a94a <_IO_vfscanf+0x5fba> 0.00 : 5a843: 44 8b bd 7c fd ff ff mov -0x284(%rbp),%r15d 0.00 : 5a84a: 41 83 c7 30 add $0x30,%r15d 0.00 : 5a84e: 45 89 fe mov %r15d,%r14d 0.00 : 5a851: 4c 3b 8d 50 fd ff ff cmp -0x2b0(%rbp),%r9 0.00 : 5a858: 0f 84 1d 03 00 00 je 5ab7b <_IO_vfscanf+0x61eb> 0.00 : 5a85e: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5a865: 31 c0 xor %eax,%eax 0.00 : 5a867: 46 88 34 0b mov %r14b,(%rbx,%r9,1) 0.00 : 5a86b: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5a872: 0f 9f c0 setg %al 0.00 : 5a875: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5a87b: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5a87f: 0f 85 d3 02 00 00 jne 5ab58 <_IO_vfscanf+0x61c8> 0.00 : 5a885: 48 8b 1d ac 75 31 00 mov 0x3175ac(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a88c: 8b bd 1c fd ff ff mov -0x2e4(%rbp),%edi 0.00 : 5a892: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5a899: 89 3c 1e mov %edi,(%rsi,%rbx,1) 0.00 : 5a89c: 49 83 c1 01 add $0x1,%r9 0.00 : 5a8a0: e9 a3 fa ff ff jmpq 5a348 <_IO_vfscanf+0x59b8> 0.00 : 5a8a5: 41 89 d7 mov %edx,%r15d 0.00 : 5a8a8: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5a8ae: 85 c0 test %eax,%eax 0.00 : 5a8b0: 44 0f 4e ad dc fd ff cmovle -0x224(%rbp),%r13d 0.00 : 5a8b7: ff 0.00 : 5a8b8: 83 bd 7c fd ff ff 09 cmpl $0x9,-0x284(%rbp) 0.00 : 5a8bf: 44 89 ad dc fd ff ff mov %r13d,-0x224(%rbp) 0.00 : 5a8c6: 0f 8f 51 ff ff ff jg 5a81d <_IO_vfscanf+0x5e8d> 0.00 : 5a8cc: 8b 85 08 fe ff ff mov -0x1f8(%rbp),%eax 0.00 : 5a8d2: 89 85 68 fd ff ff mov %eax,-0x298(%rbp) 0.00 : 5a8d8: 89 85 6c fd ff ff mov %eax,-0x294(%rbp) 0.00 : 5a8de: e9 60 ff ff ff jmpq 5a843 <_IO_vfscanf+0x5eb3> 0.00 : 5a8e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5a8e8: 4c 89 d7 mov %r10,%rdi 0.00 : 5a8eb: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5a8f2: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5a8f9: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5a900: e8 fb a8 01 00 callq 75200 <__uflow> 0.00 : 5a905: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5a908: 41 89 c7 mov %eax,%r15d 0.00 : 5a90b: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5a912: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5a919: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5a920: 0f 85 ab fd ff ff jne 5a6d1 <_IO_vfscanf+0x5d41> 0.00 : 5a926: 48 8b 1d 0b 75 31 00 mov 0x31750b(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5a92d: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5a934: 4d 89 f3 mov %r14,%r11 0.00 : 5a937: 8b 1c 1e mov (%rsi,%rbx,1),%ebx 0.00 : 5a93a: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5a940: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 5a945: e9 9e fd ff ff jmpq 5a6e8 <_IO_vfscanf+0x5d58> 0.00 : 5a94a: 80 bd 8a fc ff ff 00 cmpb $0x0,-0x376(%rbp) 0.00 : 5a951: 0f 84 01 fa ff ff je 5a358 <_IO_vfscanf+0x59c8> 0.00 : 5a957: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5a95d: b9 ff ff ff 7f mov $0x7fffffff,%ecx 0.00 : 5a962: 48 8b 9d 30 fd ff ff mov -0x2d0(%rbp),%rbx 0.00 : 5a969: 85 c0 test %eax,%eax 0.00 : 5a96b: 0f 4f 8d dc fd ff ff cmovg -0x224(%rbp),%ecx 0.00 : 5a972: 89 8d 90 fd ff ff mov %ecx,-0x270(%rbp) 0.00 : 5a978: 0f b6 13 movzbl (%rbx),%edx 0.00 : 5a97b: 0f b6 c2 movzbl %dl,%eax 0.00 : 5a97e: 41 39 c7 cmp %eax,%r15d 0.00 : 5a981: 0f 85 df 02 00 00 jne 5ac66 <_IO_vfscanf+0x62d6> 0.00 : 5a987: 4b 8d 34 09 lea (%r9,%r9,1),%rsi 0.00 : 5a98b: 49 8d 5b 01 lea 0x1(%r11),%rbx 0.00 : 5a98f: 4c 8b ad 30 fd ff ff mov -0x2d0(%rbp),%r13 0.00 : 5a996: 48 89 b5 b0 fd ff ff mov %rsi,-0x250(%rbp) 0.00 : 5a99d: eb 73 jmp 5aa12 <_IO_vfscanf+0x6082> 0.00 : 5a99f: 90 nop 0.00 : 5a9a0: 49 83 c5 01 add $0x1,%r13 0.00 : 5a9a4: 47 88 3c 0c mov %r15b,(%r12,%r9,1) 0.00 : 5a9a8: 49 83 c1 01 add $0x1,%r9 0.00 : 5a9ac: 41 80 7d 00 00 cmpb $0x0,0x0(%r13) 0.00 : 5a9b1: 45 89 fe mov %r15d,%r14d 0.00 : 5a9b4: 0f 84 24 06 00 00 je 5afde <_IO_vfscanf+0x664e> 0.00 : 5a9ba: 44 8b b5 90 fd ff ff mov -0x270(%rbp),%r14d 0.00 : 5a9c1: 45 85 f6 test %r14d,%r14d 0.00 : 5a9c4: 0f 84 05 06 00 00 je 5afcf <_IO_vfscanf+0x663f> 0.00 : 5a9ca: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5a9ce: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5a9d2: 0f 83 c5 03 00 00 jae 5ad9d <_IO_vfscanf+0x640d> 0.00 : 5a9d8: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5a9dc: 48 83 c0 01 add $0x1,%rax 0.00 : 5a9e0: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5a9e4: 83 ad 90 fd ff ff 01 subl $0x1,-0x270(%rbp) 0.00 : 5a9eb: 48 8d 4b 01 lea 0x1(%rbx),%rcx 0.00 : 5a9ef: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 5a9f4: 48 83 85 b0 fd ff ff addq $0x2,-0x250(%rbp) 0.00 : 5a9fb: 02 0.00 : 5a9fc: 0f b6 c2 movzbl %dl,%eax 0.00 : 5a9ff: 44 39 f8 cmp %r15d,%eax 0.00 : 5aa02: 0f 85 86 03 00 00 jne 5ad8e <_IO_vfscanf+0x63fe> 0.00 : 5aa08: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5aa0f: 48 89 cb mov %rcx,%rbx 0.00 : 5aa12: 4c 3b 8d 50 fd ff ff cmp -0x2b0(%rbp),%r9 0.00 : 5aa19: 4c 8d 5b ff lea -0x1(%rbx),%r11 0.00 : 5aa1d: 4c 8b a5 f0 fd ff ff mov -0x210(%rbp),%r12 0.00 : 5aa24: 0f 85 76 ff ff ff jne 5a9a0 <_IO_vfscanf+0x6010> 0.00 : 5aa2a: 48 81 bd b0 fd ff ff cmpq $0x100,-0x250(%rbp) 0.00 : 5aa31: 00 01 00 00 0.00 : 5aa35: bf 00 01 00 00 mov $0x100,%edi 0.00 : 5aa3a: 48 0f 43 bd b0 fd ff cmovae -0x250(%rbp),%rdi 0.00 : 5aa41: ff 0.00 : 5aa42: 48 89 f8 mov %rdi,%rax 0.00 : 5aa45: 48 89 bd 50 fd ff ff mov %rdi,-0x2b0(%rbp) 0.00 : 5aa4c: 48 83 c0 1e add $0x1e,%rax 0.00 : 5aa50: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5aa54: 48 29 c4 sub %rax,%rsp 0.00 : 5aa57: 4c 8d 64 24 0f lea 0xf(%rsp),%r12 0.00 : 5aa5c: 49 83 e4 f0 and $0xfffffffffffffff0,%r12 0.00 : 5aa60: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 5aa67: 00 0.00 : 5aa68: 0f 84 32 ff ff ff je 5a9a0 <_IO_vfscanf+0x6010> 0.00 : 5aa6e: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 5aa75: 4c 89 ca mov %r9,%rdx 0.00 : 5aa78: 4c 89 e7 mov %r12,%rdi 0.00 : 5aa7b: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5aa82: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5aa89: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5aa90: e8 bb 9c 02 00 callq 84750 0.00 : 5aa95: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5aa9c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5aaa3: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5aaaa: e9 f1 fe ff ff jmpq 5a9a0 <_IO_vfscanf+0x6010> 0.00 : 5aaaf: 4c 89 d7 mov %r10,%rdi 0.00 : 5aab2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5aab9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5aac0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5aac7: e8 34 a7 01 00 callq 75200 <__uflow> 0.00 : 5aacc: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5aacf: 41 89 c7 mov %eax,%r15d 0.00 : 5aad2: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5aad9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5aae0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5aae7: 0f 85 cc f9 ff ff jne 5a4b9 <_IO_vfscanf+0x5b29> 0.00 : 5aaed: 48 8b 1d 44 73 31 00 mov 0x317344(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5aaf4: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5aafb: 4d 89 eb mov %r13,%r11 0.00 : 5aafe: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5ab01: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5ab07: 41 0f b6 14 24 movzbl (%r12),%edx 0.00 : 5ab0c: e9 b9 f9 ff ff jmpq 5a4ca <_IO_vfscanf+0x5b3a> 0.00 : 5ab11: 8b 85 dc fd ff ff mov -0x224(%rbp),%eax 0.00 : 5ab17: 8b 95 68 fd ff ff mov -0x298(%rbp),%edx 0.00 : 5ab1d: 85 c0 test %eax,%eax 0.00 : 5ab1f: 44 0f 4e b5 dc fd ff cmovle -0x224(%rbp),%r14d 0.00 : 5ab26: ff 0.00 : 5ab27: 83 bd 7c fd ff ff 0a cmpl $0xa,-0x284(%rbp) 0.00 : 5ab2e: 89 95 6c fd ff ff mov %edx,-0x294(%rbp) 0.00 : 5ab34: 44 89 b5 dc fd ff ff mov %r14d,-0x224(%rbp) 0.00 : 5ab3b: 0f 85 f5 fc ff ff jne 5a836 <_IO_vfscanf+0x5ea6> 0.00 : 5ab41: 8b b5 68 fd ff ff mov -0x298(%rbp),%esi 0.00 : 5ab47: 89 b5 6c fd ff ff mov %esi,-0x294(%rbp) 0.00 : 5ab4d: e9 b3 fa ff ff jmpq 5a605 <_IO_vfscanf+0x5c75> 0.00 : 5ab52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5ab58: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5ab5c: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5ab60: 0f 83 9a 00 00 00 jae 5ac00 <_IO_vfscanf+0x6270> 0.00 : 5ab66: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5ab6a: 48 83 c0 01 add $0x1,%rax 0.00 : 5ab6e: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5ab72: 49 83 c3 01 add $0x1,%r11 0.00 : 5ab76: e9 21 fd ff ff jmpq 5a89c <_IO_vfscanf+0x5f0c> 0.00 : 5ab7b: 4b 8d 0c 09 lea (%r9,%r9,1),%rcx 0.00 : 5ab7f: b8 00 01 00 00 mov $0x100,%eax 0.00 : 5ab84: 48 81 f9 00 01 00 00 cmp $0x100,%rcx 0.00 : 5ab8b: 48 0f 43 c1 cmovae %rcx,%rax 0.00 : 5ab8f: 48 89 85 50 fd ff ff mov %rax,-0x2b0(%rbp) 0.00 : 5ab96: 48 83 c0 1e add $0x1e,%rax 0.00 : 5ab9a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5ab9e: 48 29 c4 sub %rax,%rsp 0.00 : 5aba1: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5aba6: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5abaa: 48 83 bd f0 fd ff ff cmpq $0x0,-0x210(%rbp) 0.00 : 5abb1: 00 0.00 : 5abb2: 0f 84 a2 00 00 00 je 5ac5a <_IO_vfscanf+0x62ca> 0.00 : 5abb8: 48 8b b5 f0 fd ff ff mov -0x210(%rbp),%rsi 0.00 : 5abbf: 4c 89 ca mov %r9,%rdx 0.00 : 5abc2: 48 89 df mov %rbx,%rdi 0.00 : 5abc5: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5abcc: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5abd3: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5abda: e8 71 9b 02 00 callq 84750 0.00 : 5abdf: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 5abe6: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5abed: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5abf4: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5abfb: e9 5e fc ff ff jmpq 5a85e <_IO_vfscanf+0x5ece> 0.00 : 5ac00: 4c 89 d7 mov %r10,%rdi 0.00 : 5ac03: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ac0a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5ac11: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5ac18: e8 e3 a5 01 00 callq 75200 <__uflow> 0.00 : 5ac1d: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5ac20: 41 89 c7 mov %eax,%r15d 0.00 : 5ac23: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ac2a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ac31: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5ac38: 0f 85 34 ff ff ff jne 5ab72 <_IO_vfscanf+0x61e2> 0.00 : 5ac3e: 48 8b 1d f3 71 31 00 mov 0x3171f3(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5ac45: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5ac4c: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5ac4f: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5ac55: e9 42 fc ff ff jmpq 5a89c <_IO_vfscanf+0x5f0c> 0.00 : 5ac5a: 48 89 9d f0 fd ff ff mov %rbx,-0x210(%rbp) 0.00 : 5ac61: e9 f8 fb ff ff jmpq 5a85e <_IO_vfscanf+0x5ece> 0.00 : 5ac66: 4c 8b ad 30 fd ff ff mov -0x2d0(%rbp),%r13 0.00 : 5ac6d: 84 d2 test %dl,%dl 0.00 : 5ac6f: 75 4b jne 5acbc <_IO_vfscanf+0x632c> 0.00 : 5ac71: 45 89 fe mov %r15d,%r14d 0.00 : 5ac74: 44 8b a5 dc fd ff ff mov -0x224(%rbp),%r12d 0.00 : 5ac7b: 8b 95 90 fd ff ff mov -0x270(%rbp),%edx 0.00 : 5ac81: 45 85 e4 test %r12d,%r12d 0.00 : 5ac84: 0f 4e 95 dc fd ff ff cmovle -0x224(%rbp),%edx 0.00 : 5ac8b: 49 83 e9 01 sub $0x1,%r9 0.00 : 5ac8f: 89 95 dc fd ff ff mov %edx,-0x224(%rbp) 0.00 : 5ac95: e9 b7 fb ff ff jmpq 5a851 <_IO_vfscanf+0x5ec1> 0.00 : 5ac9a: 48 8b 95 40 fc ff ff mov -0x3c0(%rbp),%rdx 0.00 : 5aca1: 48 8b bd c0 fd ff ff mov -0x240(%rbp),%rdi 0.00 : 5aca8: 48 8b 8d 48 fc ff ff mov -0x3b8(%rbp),%rcx 0.00 : 5acaf: 48 8b 04 3a mov (%rdx,%rdi,1),%rax 0.00 : 5acb3: 48 89 04 39 mov %rax,(%rcx,%rdi,1) 0.00 : 5acb7: e9 fe f6 ff ff jmpq 5a3ba <_IO_vfscanf+0x5a2a> 0.00 : 5acbc: 4c 89 cb mov %r9,%rbx 0.00 : 5acbf: 4c 39 ad 30 fd ff ff cmp %r13,-0x2d0(%rbp) 0.00 : 5acc6: 0f 83 f1 a5 ff ff jae 552bd <_IO_vfscanf+0x92d> 0.00 : 5accc: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5acd0: 74 3a je 5ad0c <_IO_vfscanf+0x637c> 0.00 : 5acd2: 49 83 eb 01 sub $0x1,%r11 0.00 : 5acd6: 4c 89 d7 mov %r10,%rdi 0.00 : 5acd9: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 5acdd: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ace4: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5aceb: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5acf2: e8 59 94 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5acf7: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5acfe: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ad05: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ad0c: 4d 8d 65 ff lea -0x1(%r13),%r12 0.00 : 5ad10: 4c 39 a5 30 fd ff ff cmp %r12,-0x2d0(%rbp) 0.00 : 5ad17: 73 5d jae 5ad76 <_IO_vfscanf+0x63e6> 0.00 : 5ad19: 4c 89 e3 mov %r12,%rbx 0.00 : 5ad1c: 0f b6 33 movzbl (%rbx),%esi 0.00 : 5ad1f: 4c 89 d7 mov %r10,%rdi 0.00 : 5ad22: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ad29: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5ad30: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5ad37: 48 83 eb 01 sub $0x1,%rbx 0.00 : 5ad3b: e8 10 94 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5ad40: 48 39 9d 30 fd ff ff cmp %rbx,-0x2d0(%rbp) 0.00 : 5ad47: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ad4e: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ad55: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5ad5c: 72 be jb 5ad1c <_IO_vfscanf+0x638c> 0.00 : 5ad5e: 48 8b 85 30 fd ff ff mov -0x2d0(%rbp),%rax 0.00 : 5ad65: 49 8d 55 fe lea -0x2(%r13),%rdx 0.00 : 5ad69: 48 83 e8 01 sub $0x1,%rax 0.00 : 5ad6d: 48 29 d0 sub %rdx,%rax 0.00 : 5ad70: 49 01 c3 add %rax,%r11 0.00 : 5ad73: 49 01 c4 add %rax,%r12 0.00 : 5ad76: 48 8b 85 30 fd ff ff mov -0x2d0(%rbp),%rax 0.00 : 5ad7d: 45 0f b6 3c 24 movzbl (%r12),%r15d 0.00 : 5ad82: 4c 29 e8 sub %r13,%rax 0.00 : 5ad85: 4a 8d 1c 08 lea (%rax,%r9,1),%rbx 0.00 : 5ad89: e9 2f a5 ff ff jmpq 552bd <_IO_vfscanf+0x92d> 0.00 : 5ad8e: 49 89 db mov %rbx,%r11 0.00 : 5ad91: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5ad98: e9 d0 fe ff ff jmpq 5ac6d <_IO_vfscanf+0x62dd> 0.00 : 5ad9d: 4c 89 d7 mov %r10,%rdi 0.00 : 5ada0: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ada7: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5adae: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5adb5: e8 46 a4 01 00 callq 75200 <__uflow> 0.00 : 5adba: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5adbd: 41 89 c7 mov %eax,%r15d 0.00 : 5adc0: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5adc7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5adce: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5add5: 0f 85 09 fc ff ff jne 5a9e4 <_IO_vfscanf+0x6054> 0.00 : 5addb: 48 8b 1d 56 70 31 00 mov 0x317056(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5ade2: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5ade9: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5adec: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5adf2: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 5adf7: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5adfe: e9 6a fe ff ff jmpq 5ac6d <_IO_vfscanf+0x62dd> 0.00 : 5ae03: 8b 9d ec fc ff ff mov -0x314(%rbp),%ebx 0.00 : 5ae09: 48 8d 75 b0 lea -0x50(%rbp),%rsi 0.00 : 5ae0d: 4c 8d 6d 80 lea -0x80(%rbp),%r13 0.00 : 5ae11: 45 31 e4 xor %r12d,%r12d 0.00 : 5ae14: 48 89 b5 d0 fc ff ff mov %rsi,-0x330(%rbp) 0.00 : 5ae1b: 89 9d 6c fd ff ff mov %ebx,-0x294(%rbp) 0.00 : 5ae21: 48 8b bd 10 fd ff ff mov -0x2f0(%rbp),%rdi 0.00 : 5ae28: 48 8b 85 48 fc ff ff mov -0x3b8(%rbp),%rax 0.00 : 5ae2f: 4e 8b b4 e7 e0 00 00 mov 0xe0(%rdi,%r12,8),%r14 0.00 : 5ae36: 00 0.00 : 5ae37: 41 8d 7c 24 30 lea 0x30(%r12),%edi 0.00 : 5ae3c: 4e 89 34 e0 mov %r14,(%rax,%r12,8) 0.00 : 5ae40: 48 8b b5 70 fd ff ff mov -0x290(%rbp),%rsi 0.00 : 5ae47: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ae4e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5ae55: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5ae5c: e8 df 3b 08 00 callq dea40 <__towctrans> 0.00 : 5ae61: 48 8b 95 d0 fc ff ff mov -0x330(%rbp),%rdx 0.00 : 5ae68: 89 c6 mov %eax,%esi 0.00 : 5ae6a: 4c 89 ef mov %r13,%rdi 0.00 : 5ae6d: 48 c7 02 00 00 00 00 movq $0x0,(%rdx) 0.00 : 5ae74: 48 8b 95 d0 fc ff ff mov -0x330(%rbp),%rdx 0.00 : 5ae7b: e8 60 21 03 00 callq 8cfe0 0.00 : 5ae80: 48 89 85 80 fd ff ff mov %rax,-0x280(%rbp) 0.00 : 5ae87: 48 83 c0 01 add $0x1,%rax 0.00 : 5ae8b: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ae92: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ae99: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5aea0: 0f 84 db 00 00 00 je 5af81 <_IO_vfscanf+0x65f1> 0.00 : 5aea6: 8b 8d ec fc ff ff mov -0x314(%rbp),%ecx 0.00 : 5aeac: 31 db xor %ebx,%ebx 0.00 : 5aeae: 31 d2 xor %edx,%edx 0.00 : 5aeb0: 4c 89 f7 mov %r14,%rdi 0.00 : 5aeb3: 85 c9 test %ecx,%ecx 0.00 : 5aeb5: 7e 46 jle 5aefd <_IO_vfscanf+0x656d> 0.00 : 5aeb7: 31 f6 xor %esi,%esi 0.00 : 5aeb9: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5aec0: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5aec7: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5aece: 83 c3 01 add $0x1,%ebx 0.00 : 5aed1: e8 da ac 02 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 5aed6: 39 9d ec fc ff ff cmp %ebx,-0x314(%rbp) 0.00 : 5aedc: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 5aee0: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5aee7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5aeee: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5aef5: 7f c0 jg 5aeb7 <_IO_vfscanf+0x6527> 0.00 : 5aef7: 48 89 fa mov %rdi,%rdx 0.00 : 5aefa: 4c 29 f2 sub %r14,%rdx 0.00 : 5aefd: 48 8b 9d 80 fd ff ff mov -0x280(%rbp),%rbx 0.00 : 5af04: 4c 89 f6 mov %r14,%rsi 0.00 : 5af07: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5af0e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5af15: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5af1c: 48 8d 44 1a 1f lea 0x1f(%rdx,%rbx,1),%rax 0.00 : 5af21: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5af25: 48 29 c4 sub %rax,%rsp 0.00 : 5af28: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5af2d: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5af31: 48 89 df mov %rbx,%rdi 0.00 : 5af34: e8 57 90 02 00 callq 83f90 <__mempcpy> 0.00 : 5af39: 48 8b 95 80 fd ff ff mov -0x280(%rbp),%rdx 0.00 : 5af40: 4c 89 ee mov %r13,%rsi 0.00 : 5af43: 48 89 c7 mov %rax,%rdi 0.00 : 5af46: e8 45 90 02 00 callq 83f90 <__mempcpy> 0.00 : 5af4b: c6 00 00 movb $0x0,(%rax) 0.00 : 5af4e: 48 8b b5 40 fc ff ff mov -0x3c0(%rbp),%rsi 0.00 : 5af55: 4a 89 1c e6 mov %rbx,(%rsi,%r12,8) 0.00 : 5af59: 49 83 c4 01 add $0x1,%r12 0.00 : 5af5d: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5af64: 49 83 fc 0a cmp $0xa,%r12 0.00 : 5af68: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5af6f: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5af76: 0f 85 a5 fe ff ff jne 5ae21 <_IO_vfscanf+0x6491> 0.00 : 5af7c: e9 ad f3 ff ff jmpq 5a32e <_IO_vfscanf+0x599e> 0.00 : 5af81: 48 c7 85 70 fd ff ff movq $0x0,-0x290(%rbp) 0.00 : 5af88: 00 00 00 00 0.00 : 5af8c: e9 9d f3 ff ff jmpq 5a32e <_IO_vfscanf+0x599e> 0.00 : 5af91: 4c 89 d7 mov %r10,%rdi 0.00 : 5af94: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5af9b: e8 60 a2 01 00 callq 75200 <__uflow> 0.00 : 5afa0: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5afa3: 41 89 c7 mov %eax,%r15d 0.00 : 5afa6: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5afad: 0f 84 60 9c ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5afb3: e9 ea cc ff ff jmpq 57ca2 <_IO_vfscanf+0x3312> 0.00 : 5afb8: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5afbf: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5afc3: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5afca: e9 d6 c4 ff ff jmpq 574a5 <_IO_vfscanf+0x2b15> 0.00 : 5afcf: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5afd6: 4c 89 cb mov %r9,%rbx 0.00 : 5afd9: e9 e1 fc ff ff jmpq 5acbf <_IO_vfscanf+0x632f> 0.00 : 5afde: 4c 89 a5 f0 fd ff ff mov %r12,-0x210(%rbp) 0.00 : 5afe5: e9 8a fc ff ff jmpq 5ac74 <_IO_vfscanf+0x62e4> 0.00 : 5afea: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5aff1: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5aff5: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5affc: e9 c4 cf ff ff jmpq 57fc5 <_IO_vfscanf+0x3635> 0.00 : 5b001: 4c 89 d7 mov %r10,%rdi 0.00 : 5b004: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b00b: e8 f0 a1 01 00 callq 75200 <__uflow> 0.00 : 5b010: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b013: 41 89 c7 mov %eax,%r15d 0.00 : 5b016: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b01d: 0f 84 f0 9b ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5b023: e9 42 b8 ff ff jmpq 5686a <_IO_vfscanf+0x1eda> 0.00 : 5b028: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5b02f: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5b033: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5b03a: e9 aa af ff ff jmpq 55fe9 <_IO_vfscanf+0x1659> 0.00 : 5b03f: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5b046: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5b04a: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5b051: e9 8b db ff ff jmpq 58be1 <_IO_vfscanf+0x4251> 0.00 : 5b056: 4c 89 d7 mov %r10,%rdi 0.00 : 5b059: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b060: e8 9b a1 01 00 callq 75200 <__uflow> 0.00 : 5b065: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b068: 41 89 c7 mov %eax,%r15d 0.00 : 5b06b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b072: 0f 84 9b 9b ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5b078: e9 c8 c6 ff ff jmpq 57745 <_IO_vfscanf+0x2db5> 0.00 : 5b07d: 4c 89 d7 mov %r10,%rdi 0.00 : 5b080: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b087: e8 74 a1 01 00 callq 75200 <__uflow> 0.00 : 5b08c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b08f: 41 89 c7 mov %eax,%r15d 0.00 : 5b092: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b099: 0f 84 74 9b ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5b09f: e9 70 a4 ff ff jmpq 55514 <_IO_vfscanf+0xb84> 0.00 : 5b0a4: 4c 89 d7 mov %r10,%rdi 0.00 : 5b0a7: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b0ae: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b0b5: e8 46 a1 01 00 callq 75200 <__uflow> 0.00 : 5b0ba: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b0bd: 41 89 c7 mov %eax,%r15d 0.00 : 5b0c0: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b0c7: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b0ce: 0f 85 36 c3 ff ff jne 5740a <_IO_vfscanf+0x2a7a> 0.00 : 5b0d4: 48 8b 1d 5d 6d 31 00 mov 0x316d5d(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b0db: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 5b0e2: b8 fc 03 00 00 mov $0x3fc,%eax 0.00 : 5b0e7: 8b 1c 19 mov (%rcx,%rbx,1),%ebx 0.00 : 5b0ea: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5b0f0: e9 ce b9 ff ff jmpq 56ac3 <_IO_vfscanf+0x2133> 0.00 : 5b0f5: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5b0fc: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5b100: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5b107: e9 a3 c4 ff ff jmpq 575af <_IO_vfscanf+0x2c1f> 0.00 : 5b10c: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 5b113: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 5b11a: 48 8b 38 mov (%rax),%rdi 0.00 : 5b11d: 49 83 c4 01 add $0x1,%r12 0.00 : 5b121: 4c 89 e6 mov %r12,%rsi 0.00 : 5b124: e8 17 37 fc ff callq 1e840 0.00 : 5b129: 48 85 c0 test %rax,%rax 0.00 : 5b12c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b133: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b13a: 0f 84 1b 9e ff ff je 54f5b <_IO_vfscanf+0x5cb> 0.00 : 5b140: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 5b147: 48 89 02 mov %rax,(%rdx) 0.00 : 5b14a: 48 03 85 e8 fd ff ff add -0x218(%rbp),%rax 0.00 : 5b151: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 5b158: e9 57 b2 ff ff jmpq 563b4 <_IO_vfscanf+0x1a24> 0.00 : 5b15d: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b161: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b165: 73 48 jae 5b1af <_IO_vfscanf+0x681f> 0.00 : 5b167: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5b16b: 48 83 c0 01 add $0x1,%rax 0.00 : 5b16f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b173: 48 83 85 d0 fd ff ff addq $0x1,-0x230(%rbp) 0.00 : 5b17a: 01 0.00 : 5b17b: e9 de e2 ff ff jmpq 5945e <_IO_vfscanf+0x4ace> 0.00 : 5b180: 48 8b 9d f0 fd ff ff mov -0x210(%rbp),%rbx 0.00 : 5b187: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b18e: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 5b193: 0f b6 03 movzbl (%rbx),%eax 0.00 : 5b196: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 5b19a: 49 89 f1 mov %rsi,%r9 0.00 : 5b19d: 88 06 mov %al,(%rsi) 0.00 : 5b19f: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b1a6: 00 01 00 00 0.00 : 5b1aa: e9 76 e2 ff ff jmpq 59425 <_IO_vfscanf+0x4a95> 0.00 : 5b1af: 4c 89 d7 mov %r10,%rdi 0.00 : 5b1b2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5b1b9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b1c0: e8 3b a0 01 00 callq 75200 <__uflow> 0.00 : 5b1c5: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b1c8: 41 89 c7 mov %eax,%r15d 0.00 : 5b1cb: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5b1d2: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b1d9: 75 98 jne 5b173 <_IO_vfscanf+0x67e3> 0.00 : 5b1db: 48 8b 1d 56 6c 31 00 mov 0x316c56(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b1e2: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5b1e9: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5b1ec: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5b1f2: e9 67 e2 ff ff jmpq 5945e <_IO_vfscanf+0x4ace> 0.00 : 5b1f7: 4c 89 d7 mov %r10,%rdi 0.00 : 5b1fa: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b201: e8 fa 9f 01 00 callq 75200 <__uflow> 0.00 : 5b206: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b209: 41 89 c7 mov %eax,%r15d 0.00 : 5b20c: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b213: 0f 85 1a cf ff ff jne 58133 <_IO_vfscanf+0x37a3> 0.00 : 5b219: 48 8b 1d 18 6c 31 00 mov 0x316c18(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b220: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 5b227: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 5b22a: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5b230: e9 06 cf ff ff jmpq 5813b <_IO_vfscanf+0x37ab> 0.00 : 5b235: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 5b23c: 48 8b 85 48 fd ff ff mov -0x2b8(%rbp),%rax 0.00 : 5b243: 49 83 c4 01 add $0x1,%r12 0.00 : 5b247: 48 8b 38 mov (%rax),%rdi 0.00 : 5b24a: 4a 8d 34 a5 00 00 00 lea 0x0(,%r12,4),%rsi 0.00 : 5b251: 00 0.00 : 5b252: e8 e9 35 fc ff callq 1e840 0.00 : 5b257: 48 85 c0 test %rax,%rax 0.00 : 5b25a: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b261: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b268: 0f 84 ed 9c ff ff je 54f5b <_IO_vfscanf+0x5cb> 0.00 : 5b26e: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 5b275: 48 89 02 mov %rax,(%rdx) 0.00 : 5b278: 48 01 d8 add %rbx,%rax 0.00 : 5b27b: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 5b282: e9 4c a4 ff ff jmpq 556d3 <_IO_vfscanf+0xd43> 0.00 : 5b287: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5b28e: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5b292: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5b299: e9 5f da ff ff jmpq 58cfd <_IO_vfscanf+0x436d> 0.00 : 5b29e: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5b2a5: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5b2a9: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5b2b0: e9 7c db ff ff jmpq 58e31 <_IO_vfscanf+0x44a1> 0.00 : 5b2b5: 4c 89 d7 mov %r10,%rdi 0.00 : 5b2b8: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b2bf: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b2c6: e8 35 9f 01 00 callq 75200 <__uflow> 0.00 : 5b2cb: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b2ce: 41 89 c7 mov %eax,%r15d 0.00 : 5b2d1: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b2d8: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b2df: 0f 85 6a aa ff ff jne 55d4f <_IO_vfscanf+0x13bf> 0.00 : 5b2e5: 48 8b 1d 4c 6b 31 00 mov 0x316b4c(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b2ec: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 5b2f3: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 5b2f9: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 5b2fc: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5b302: e9 51 9f ff ff jmpq 55258 <_IO_vfscanf+0x8c8> 0.00 : 5b307: 48 8b 8d 48 fd ff ff mov -0x2b8(%rbp),%rcx 0.00 : 5b30e: 4d 8d 6c 24 01 lea 0x1(%r12),%r13 0.00 : 5b313: 4c 89 ee mov %r13,%rsi 0.00 : 5b316: 48 8b 39 mov (%rcx),%rdi 0.00 : 5b319: e8 22 35 fc ff callq 1e840 0.00 : 5b31e: 48 85 c0 test %rax,%rax 0.00 : 5b321: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b328: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b32f: 0f 84 e8 00 00 00 je 5b41d <_IO_vfscanf+0x6a8d> 0.00 : 5b335: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 5b33c: 48 89 06 mov %rax,(%rsi) 0.00 : 5b33f: 4c 01 e0 add %r12,%rax 0.00 : 5b342: 48 89 85 40 fd ff ff mov %rax,-0x2c0(%rbp) 0.00 : 5b349: e9 d7 ad ff ff jmpq 56125 <_IO_vfscanf+0x1795> 0.00 : 5b34e: 4c 89 d7 mov %r10,%rdi 0.00 : 5b351: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b358: e8 a3 9e 01 00 callq 75200 <__uflow> 0.00 : 5b35d: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b360: 41 89 c7 mov %eax,%r15d 0.00 : 5b363: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b36a: 0f 84 a3 98 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5b370: e9 29 ad ff ff jmpq 5609e <_IO_vfscanf+0x170e> 0.00 : 5b375: 48 89 9d c8 fd ff ff mov %rbx,-0x238(%rbp) 0.00 : 5b37c: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5b383: 8b bd c8 fd ff ff mov -0x238(%rbp),%edi 0.00 : 5b389: 49 83 c3 01 add $0x1,%r11 0.00 : 5b38d: 8d 1c 38 lea (%rax,%rdi,1),%ebx 0.00 : 5b390: eb 09 jmp 5b39b <_IO_vfscanf+0x6a0b> 0.00 : 5b392: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b398: 49 89 d3 mov %rdx,%r11 0.00 : 5b39b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b39f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b3a3: 73 47 jae 5b3ec <_IO_vfscanf+0x6a5c> 0.00 : 5b3a5: 0f b6 10 movzbl (%rax),%edx 0.00 : 5b3a8: 48 83 c0 01 add $0x1,%rax 0.00 : 5b3ac: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b3b0: 48 8b 85 c8 fd ff ff mov -0x238(%rbp),%rax 0.00 : 5b3b7: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5b3bb: 41 39 d7 cmp %edx,%r15d 0.00 : 5b3be: 75 24 jne 5b3e4 <_IO_vfscanf+0x6a54> 0.00 : 5b3c0: 48 83 85 c8 fd ff ff addq $0x1,-0x238(%rbp) 0.00 : 5b3c7: 01 0.00 : 5b3c8: 89 d8 mov %ebx,%eax 0.00 : 5b3ca: 49 8d 53 01 lea 0x1(%r11),%rdx 0.00 : 5b3ce: 2b 85 c8 fd ff ff sub -0x238(%rbp),%eax 0.00 : 5b3d4: 85 c0 test %eax,%eax 0.00 : 5b3d6: 7f c0 jg 5b398 <_IO_vfscanf+0x6a08> 0.00 : 5b3d8: 4c 8b a5 e8 fd ff ff mov -0x218(%rbp),%r12 0.00 : 5b3df: e9 b7 97 ff ff jmpq 54b9b <_IO_vfscanf+0x20b> 0.00 : 5b3e4: 0f b6 f2 movzbl %dl,%esi 0.00 : 5b3e7: e9 96 a9 ff ff jmpq 55d82 <_IO_vfscanf+0x13f2> 0.00 : 5b3ec: 4c 89 d7 mov %r10,%rdi 0.00 : 5b3ef: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b3f6: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b3fd: e8 fe 9d 01 00 callq 75200 <__uflow> 0.00 : 5b402: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b405: 89 c2 mov %eax,%edx 0.00 : 5b407: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b40e: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b415: 0f 84 f8 97 ff ff je 54c13 <_IO_vfscanf+0x283> 0.00 : 5b41b: eb 93 jmp 5b3b0 <_IO_vfscanf+0x6a20> 0.00 : 5b41d: f7 85 04 fd ff ff 00 testl $0x2000,-0x2fc(%rbp) 0.00 : 5b424: 20 00 00 0.00 : 5b427: 0f 85 2e 9b ff ff jne 54f5b <_IO_vfscanf+0x5cb> 0.00 : 5b42d: 48 8b 9d 48 fd ff ff mov -0x2b8(%rbp),%rbx 0.00 : 5b434: 48 8b 03 mov (%rbx),%rax 0.00 : 5b437: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 5b43c: 42 c6 44 20 ff 00 movb $0x0,-0x1(%rax,%r12,1) 0.00 : 5b442: 48 c7 85 48 fd ff ff movq $0x0,-0x2b8(%rbp) 0.00 : 5b449: 00 00 00 00 0.00 : 5b44d: 83 85 00 fd ff ff 01 addl $0x1,-0x300(%rbp) 0.00 : 5b454: e9 87 9a ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 5b459: 4c 89 d7 mov %r10,%rdi 0.00 : 5b45c: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b463: e8 98 9d 01 00 callq 75200 <__uflow> 0.00 : 5b468: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b46b: 41 89 c7 mov %eax,%r15d 0.00 : 5b46e: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b475: 0f 85 0a b8 ff ff jne 56c85 <_IO_vfscanf+0x22f5> 0.00 : 5b47b: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 5b482: 48 8b 05 af 69 31 00 mov 0x3169af(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b489: 8b 04 02 mov (%rdx,%rax,1),%eax 0.00 : 5b48c: 48 c7 c2 fe ff ff ff mov $0xfffffffffffffffe,%rdx 0.00 : 5b493: 89 85 1c fd ff ff mov %eax,-0x2e4(%rbp) 0.00 : 5b499: e9 b1 b7 ff ff jmpq 56c4f <_IO_vfscanf+0x22bf> 0.00 : 5b49e: 48 8b 9d c0 fc ff ff mov -0x340(%rbp),%rbx 0.00 : 5b4a5: 48 8b 05 8c 69 31 00 mov 0x31698c(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b4ac: c7 04 03 54 00 00 00 movl $0x54,(%rbx,%rax,1) 0.00 : 5b4b3: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 5b4b8: e9 23 9a ff ff jmpq 54ee0 <_IO_vfscanf+0x550> 0.00 : 5b4bd: 31 c0 xor %eax,%eax 0.00 : 5b4bf: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5b4c6: 4d 89 cc mov %r9,%r12 0.00 : 5b4c9: 0f 9f c0 setg %al 0.00 : 5b4cc: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5b4d2: 48 83 bd 50 fd ff ff cmpq $0x3,-0x2b0(%rbp) 0.00 : 5b4d9: 03 0.00 : 5b4da: 75 31 jne 5b50d <_IO_vfscanf+0x6b7d> 0.00 : 5b4dc: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b4e3: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5b4e8: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5b4ec: 49 89 c4 mov %rax,%r12 0.00 : 5b4ef: 41 0f b7 01 movzwl (%r9),%eax 0.00 : 5b4f3: 66 41 89 04 24 mov %ax,(%r12) 0.00 : 5b4f8: 41 0f b6 41 02 movzbl 0x2(%r9),%eax 0.00 : 5b4fd: 41 88 44 24 02 mov %al,0x2(%r12) 0.00 : 5b502: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b509: 00 01 00 00 0.00 : 5b50d: 45 88 7c 24 03 mov %r15b,0x3(%r12) 0.00 : 5b512: 8b bd dc fd ff ff mov -0x224(%rbp),%edi 0.00 : 5b518: 85 ff test %edi,%edi 0.00 : 5b51a: 0f 84 b8 99 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b520: 41 83 c7 01 add $0x1,%r15d 0.00 : 5b524: 75 71 jne 5b597 <_IO_vfscanf+0x6c07> 0.00 : 5b526: 48 8b 05 0b 69 31 00 mov 0x31690b(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b52d: 8b 8d 1c fd ff ff mov -0x2e4(%rbp),%ecx 0.00 : 5b533: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 5b53a: 89 0c 02 mov %ecx,(%rdx,%rax,1) 0.00 : 5b53d: e9 96 99 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b542: 4c 89 d7 mov %r10,%rdi 0.00 : 5b545: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5b54c: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b553: e8 a8 9c 01 00 callq 75200 <__uflow> 0.00 : 5b558: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b55b: 41 89 c7 mov %eax,%r15d 0.00 : 5b55e: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5b565: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b56c: 0f 85 1a 03 00 00 jne 5b88c <_IO_vfscanf+0x6efc> 0.00 : 5b572: 48 8b 1d bf 68 31 00 mov 0x3168bf(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b579: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5b580: 4d 89 e3 mov %r12,%r11 0.00 : 5b583: 41 be 03 00 00 00 mov $0x3,%r14d 0.00 : 5b589: 8b 1c 1e mov (%rsi,%rbx,1),%ebx 0.00 : 5b58c: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5b592: e9 4a cc ff ff jmpq 581e1 <_IO_vfscanf+0x3851> 0.00 : 5b597: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b59b: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b59f: 0f 83 b3 02 00 00 jae 5b858 <_IO_vfscanf+0x6ec8> 0.00 : 5b5a5: 0f b6 08 movzbl (%rax),%ecx 0.00 : 5b5a8: 48 83 c0 01 add $0x1,%rax 0.00 : 5b5ac: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b5b0: 48 8b 9d 08 fd ff ff mov -0x2f8(%rbp),%rbx 0.00 : 5b5b7: 0f b6 d1 movzbl %cl,%edx 0.00 : 5b5ba: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 5b5be: 83 3c 90 6e cmpl $0x6e,(%rax,%rdx,4) 0.00 : 5b5c2: 0f 85 10 99 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b5c8: 31 c0 xor %eax,%eax 0.00 : 5b5ca: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5b5d1: 4c 89 e3 mov %r12,%rbx 0.00 : 5b5d4: 0f 9f c0 setg %al 0.00 : 5b5d7: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5b5dd: 48 83 bd 50 fd ff ff cmpq $0x4,-0x2b0(%rbp) 0.00 : 5b5e4: 04 0.00 : 5b5e5: 75 24 jne 5b60b <_IO_vfscanf+0x6c7b> 0.00 : 5b5e7: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b5ee: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5b5f3: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5b5f7: 48 89 c3 mov %rax,%rbx 0.00 : 5b5fa: 41 8b 04 24 mov (%r12),%eax 0.00 : 5b5fe: 89 03 mov %eax,(%rbx) 0.00 : 5b600: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b607: 00 01 00 00 0.00 : 5b60b: 88 4b 04 mov %cl,0x4(%rbx) 0.00 : 5b60e: 8b b5 dc fd ff ff mov -0x224(%rbp),%esi 0.00 : 5b614: 85 f6 test %esi,%esi 0.00 : 5b616: 0f 84 bc 98 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b61c: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b620: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b624: 0f 83 fa 01 00 00 jae 5b824 <_IO_vfscanf+0x6e94> 0.00 : 5b62a: 0f b6 08 movzbl (%rax),%ecx 0.00 : 5b62d: 48 83 c0 01 add $0x1,%rax 0.00 : 5b631: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b635: 48 8b b5 08 fd ff ff mov -0x2f8(%rbp),%rsi 0.00 : 5b63c: 0f b6 d1 movzbl %cl,%edx 0.00 : 5b63f: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 5b643: 83 3c 90 69 cmpl $0x69,(%rax,%rdx,4) 0.00 : 5b647: 0f 85 8b 98 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b64d: 31 c0 xor %eax,%eax 0.00 : 5b64f: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5b656: 49 89 dc mov %rbx,%r12 0.00 : 5b659: 0f 9f c0 setg %al 0.00 : 5b65c: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5b662: 48 83 bd 50 fd ff ff cmpq $0x5,-0x2b0(%rbp) 0.00 : 5b669: 05 0.00 : 5b66a: 75 2d jne 5b699 <_IO_vfscanf+0x6d09> 0.00 : 5b66c: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b673: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5b678: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5b67c: 49 89 c4 mov %rax,%r12 0.00 : 5b67f: 8b 03 mov (%rbx),%eax 0.00 : 5b681: 41 89 04 24 mov %eax,(%r12) 0.00 : 5b685: 0f b6 43 04 movzbl 0x4(%rbx),%eax 0.00 : 5b689: 41 88 44 24 04 mov %al,0x4(%r12) 0.00 : 5b68e: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b695: 00 01 00 00 0.00 : 5b699: 41 88 4c 24 05 mov %cl,0x5(%r12) 0.00 : 5b69e: 8b 8d dc fd ff ff mov -0x224(%rbp),%ecx 0.00 : 5b6a4: 85 c9 test %ecx,%ecx 0.00 : 5b6a6: 0f 84 2c 98 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b6ac: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b6b0: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b6b4: 0f 83 36 01 00 00 jae 5b7f0 <_IO_vfscanf+0x6e60> 0.00 : 5b6ba: 0f b6 08 movzbl (%rax),%ecx 0.00 : 5b6bd: 48 83 c0 01 add $0x1,%rax 0.00 : 5b6c1: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b6c5: 48 8b bd 08 fd ff ff mov -0x2f8(%rbp),%rdi 0.00 : 5b6cc: 0f b6 d1 movzbl %cl,%edx 0.00 : 5b6cf: 48 8b 47 70 mov 0x70(%rdi),%rax 0.00 : 5b6d3: 83 3c 90 74 cmpl $0x74,(%rax,%rdx,4) 0.00 : 5b6d7: 0f 85 fb 97 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b6dd: 31 c0 xor %eax,%eax 0.00 : 5b6df: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5b6e6: 4c 89 e3 mov %r12,%rbx 0.00 : 5b6e9: 0f 9f c0 setg %al 0.00 : 5b6ec: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5b6f2: 48 83 bd 50 fd ff ff cmpq $0x6,-0x2b0(%rbp) 0.00 : 5b6f9: 06 0.00 : 5b6fa: 75 2e jne 5b72a <_IO_vfscanf+0x6d9a> 0.00 : 5b6fc: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b703: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 5b708: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5b70c: 48 89 c3 mov %rax,%rbx 0.00 : 5b70f: 41 8b 04 24 mov (%r12),%eax 0.00 : 5b713: 89 03 mov %eax,(%rbx) 0.00 : 5b715: 41 0f b7 44 24 04 movzwl 0x4(%r12),%eax 0.00 : 5b71b: 66 89 43 04 mov %ax,0x4(%rbx) 0.00 : 5b71f: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b726: 00 01 00 00 0.00 : 5b72a: 88 4b 06 mov %cl,0x6(%rbx) 0.00 : 5b72d: 8b 95 dc fd ff ff mov -0x224(%rbp),%edx 0.00 : 5b733: 85 d2 test %edx,%edx 0.00 : 5b735: 0f 84 9d 97 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b73b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5b73f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5b743: 73 76 jae 5b7bb <_IO_vfscanf+0x6e2b> 0.00 : 5b745: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5b749: 48 83 c0 01 add $0x1,%rax 0.00 : 5b74d: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5b751: 48 8b 8d 08 fd ff ff mov -0x2f8(%rbp),%rcx 0.00 : 5b758: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 5b75c: 48 8b 41 70 mov 0x70(%rcx),%rax 0.00 : 5b760: 83 3c 90 79 cmpl $0x79,(%rax,%rdx,4) 0.00 : 5b764: 0f 85 6e 97 ff ff jne 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b76a: 48 83 bd 50 fd ff ff cmpq $0x7,-0x2b0(%rbp) 0.00 : 5b771: 07 0.00 : 5b772: 49 89 d9 mov %rbx,%r9 0.00 : 5b775: 75 31 jne 5b7a8 <_IO_vfscanf+0x6e18> 0.00 : 5b777: 48 81 ec 10 01 00 00 sub $0x110,%rsp 0.00 : 5b77e: 8b 03 mov (%rbx),%eax 0.00 : 5b780: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 5b785: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 5b789: 89 06 mov %eax,(%rsi) 0.00 : 5b78b: 0f b7 43 04 movzwl 0x4(%rbx),%eax 0.00 : 5b78f: 49 89 f1 mov %rsi,%r9 0.00 : 5b792: 66 89 46 04 mov %ax,0x4(%rsi) 0.00 : 5b796: 0f b6 43 06 movzbl 0x6(%rbx),%eax 0.00 : 5b79a: 88 46 06 mov %al,0x6(%rsi) 0.00 : 5b79d: 48 c7 85 50 fd ff ff movq $0x100,-0x2b0(%rbp) 0.00 : 5b7a4: 00 01 00 00 0.00 : 5b7a8: 49 83 c3 04 add $0x4,%r11 0.00 : 5b7ac: 45 88 79 07 mov %r15b,0x7(%r9) 0.00 : 5b7b0: 41 be 08 00 00 00 mov $0x8,%r14d 0.00 : 5b7b6: e9 26 ca ff ff jmpq 581e1 <_IO_vfscanf+0x3851> 0.00 : 5b7bb: 4c 89 d7 mov %r10,%rdi 0.00 : 5b7be: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b7c5: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b7cc: e8 2f 9a 01 00 callq 75200 <__uflow> 0.00 : 5b7d1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b7d4: 41 89 c7 mov %eax,%r15d 0.00 : 5b7d7: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b7de: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b7e5: 0f 85 66 ff ff ff jne 5b751 <_IO_vfscanf+0x6dc1> 0.00 : 5b7eb: e9 e8 96 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b7f0: 4c 89 d7 mov %r10,%rdi 0.00 : 5b7f3: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b7fa: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b801: e8 fa 99 01 00 callq 75200 <__uflow> 0.00 : 5b806: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b809: 89 c1 mov %eax,%ecx 0.00 : 5b80b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b812: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b819: 0f 85 a6 fe ff ff jne 5b6c5 <_IO_vfscanf+0x6d35> 0.00 : 5b81f: e9 b4 96 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b824: 4c 89 d7 mov %r10,%rdi 0.00 : 5b827: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b82e: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b835: e8 c6 99 01 00 callq 75200 <__uflow> 0.00 : 5b83a: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b83d: 89 c1 mov %eax,%ecx 0.00 : 5b83f: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b846: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b84d: 0f 85 e2 fd ff ff jne 5b635 <_IO_vfscanf+0x6ca5> 0.00 : 5b853: e9 80 96 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b858: 4c 89 d7 mov %r10,%rdi 0.00 : 5b85b: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b862: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b869: e8 92 99 01 00 callq 75200 <__uflow> 0.00 : 5b86e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b871: 89 c1 mov %eax,%ecx 0.00 : 5b873: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b87a: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b881: 0f 85 29 fd ff ff jne 5b5b0 <_IO_vfscanf+0x6c20> 0.00 : 5b887: e9 4c 96 ff ff jmpq 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b88c: 4c 8b 9d d0 fd ff ff mov -0x230(%rbp),%r11 0.00 : 5b893: 49 83 c3 03 add $0x3,%r11 0.00 : 5b897: e9 cc d1 ff ff jmpq 58a68 <_IO_vfscanf+0x40d8> 0.00 : 5b89c: 4c 89 d7 mov %r10,%rdi 0.00 : 5b89f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b8a6: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b8ad: e8 4e 99 01 00 callq 75200 <__uflow> 0.00 : 5b8b2: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5b8b5: 41 89 c7 mov %eax,%r15d 0.00 : 5b8b8: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b8bf: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b8c6: 0f 84 0c 96 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5b8cc: e9 b0 b5 ff ff jmpq 56e81 <_IO_vfscanf+0x24f1> 0.00 : 5b8d1: 4a 8d 34 e5 00 00 00 lea 0x0(,%r12,8),%rsi 0.00 : 5b8d8: 00 0.00 : 5b8d9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b8e0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b8e7: e8 54 2f fc ff callq 1e840 0.00 : 5b8ec: 48 85 c0 test %rax,%rax 0.00 : 5b8ef: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b8f6: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b8fd: 0f 84 c3 04 00 00 je 5bdc6 <_IO_vfscanf+0x7436> 0.00 : 5b903: 48 8b bd 48 fd ff ff mov -0x2b8(%rbp),%rdi 0.00 : 5b90a: 4b 8d 1c 24 lea (%r12,%r12,1),%rbx 0.00 : 5b90e: 48 89 07 mov %rax,(%rdi) 0.00 : 5b911: 4c 01 e8 add %r13,%rax 0.00 : 5b914: 45 31 ed xor %r13d,%r13d 0.00 : 5b917: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 5b91e: e9 9d be ff ff jmpq 577c0 <_IO_vfscanf+0x2e30> 0.00 : 5b923: f7 85 04 fd ff ff 00 testl $0x800,-0x2fc(%rbp) 0.00 : 5b92a: 08 00 00 0.00 : 5b92d: 0f 85 8f c8 ff ff jne 581c2 <_IO_vfscanf+0x3832> 0.00 : 5b933: 4d 85 f6 test %r14,%r14 0.00 : 5b936: 41 0f 94 c4 sete %r12b 0.00 : 5b93a: 74 0d je 5b949 <_IO_vfscanf+0x6fb9> 0.00 : 5b93c: 80 bd 20 fd ff ff 00 cmpb $0x0,-0x2e0(%rbp) 0.00 : 5b943: 0f 84 98 c8 ff ff je 581e1 <_IO_vfscanf+0x3851> 0.00 : 5b949: 48 8d 3d 14 f4 0d 00 lea 0xdf414(%rip),%rdi # 13ad64 <__PRETTY_FUNCTION__.14584+0xe> 0.00 : 5b950: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5b957: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b95e: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b965: e8 46 30 08 00 callq de9b0 0.00 : 5b96a: 48 85 c0 test %rax,%rax 0.00 : 5b96d: 48 89 85 60 fd ff ff mov %rax,-0x2a0(%rbp) 0.00 : 5b974: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5b97b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5b982: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5b989: 0f 84 33 c8 ff ff je 581c2 <_IO_vfscanf+0x3832> 0.00 : 5b98f: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5b993: 0f 85 e7 04 00 00 jne 5be80 <_IO_vfscanf+0x74f0> 0.00 : 5b999: 48 8b 1d 98 64 31 00 mov 0x316498(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5b9a0: 8b 8d 1c fd ff ff mov -0x2e4(%rbp),%ecx 0.00 : 5b9a6: 48 8b 95 c0 fc ff ff mov -0x340(%rbp),%rdx 0.00 : 5b9ad: 89 0c 1a mov %ecx,(%rdx,%rbx,1) 0.00 : 5b9b0: 48 8b b5 60 fd ff ff mov -0x2a0(%rbp),%rsi 0.00 : 5b9b7: bf 2e 00 00 00 mov $0x2e,%edi 0.00 : 5b9bc: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5b9c3: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5b9ca: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5b9d1: e8 6a 30 08 00 callq dea40 <__towctrans> 0.00 : 5b9d6: 48 8d 7d a0 lea -0x60(%rbp),%rdi 0.00 : 5b9da: 89 c6 mov %eax,%esi 0.00 : 5b9dc: 89 85 1c ff ff ff mov %eax,-0xe4(%rbp) 0.00 : 5b9e2: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 5b9e9: 00 0.00 : 5b9ea: 48 89 bd d8 fc ff ff mov %rdi,-0x328(%rbp) 0.00 : 5b9f1: 48 89 fa mov %rdi,%rdx 0.00 : 5b9f4: 48 8b bd 38 fc ff ff mov -0x3c8(%rbp),%rdi 0.00 : 5b9fb: e8 e0 15 03 00 callq 8cfe0 0.00 : 5ba00: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 5ba04: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ba0b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ba12: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5ba19: 0f 84 dc 02 00 00 je 5bcfb <_IO_vfscanf+0x736b> 0.00 : 5ba1f: c6 84 05 db fe ff ff movb $0x0,-0x125(%rbp,%rax,1) 0.00 : 5ba26: 00 0.00 : 5ba27: 48 8b bd 28 fd ff ff mov -0x2d8(%rbp),%rdi 0.00 : 5ba2e: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ba35: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5ba3c: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5ba43: e8 68 51 02 00 callq 80bb0 <__GI_strlen> 0.00 : 5ba48: 31 d2 xor %edx,%edx 0.00 : 5ba4a: 4c 39 f0 cmp %r14,%rax 0.00 : 5ba4d: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5ba54: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ba5b: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5ba62: 75 44 jne 5baa8 <_IO_vfscanf+0x7118> 0.00 : 5ba64: 48 8b b5 38 fc ff ff mov -0x3c8(%rbp),%rsi 0.00 : 5ba6b: 48 8b bd 28 fd ff ff mov -0x2d8(%rbp),%rdi 0.00 : 5ba72: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5ba79: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5ba80: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5ba87: e8 c4 36 02 00 callq 7f150 <__GI_strcmp> 0.00 : 5ba8c: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5ba93: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5ba9a: 31 d2 xor %edx,%edx 0.00 : 5ba9c: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5baa3: 85 c0 test %eax,%eax 0.00 : 5baa5: 0f 94 c2 sete %dl 0.00 : 5baa8: 44 89 e3 mov %r12d,%ebx 0.00 : 5baab: 09 d3 or %edx,%ebx 0.00 : 5baad: 84 db test %bl,%bl 0.00 : 5baaf: 0f 84 0d c7 ff ff je 581c2 <_IO_vfscanf+0x3832> 0.00 : 5bab5: 8b 85 04 fd ff ff mov -0x2fc(%rbp),%eax 0.00 : 5babb: 4c 8b ad 40 fc ff ff mov -0x3c0(%rbp),%r13 0.00 : 5bac2: 31 db xor %ebx,%ebx 0.00 : 5bac4: c1 e8 07 shr $0x7,%eax 0.00 : 5bac7: 83 e0 01 and $0x1,%eax 0.00 : 5baca: 88 85 0f fe ff ff mov %al,-0x1f1(%rbp) 0.00 : 5bad0: 88 85 97 fd ff ff mov %al,-0x269(%rbp) 0.00 : 5bad6: 83 fb 0a cmp $0xa,%ebx 0.00 : 5bad9: 41 89 dc mov %ebx,%r12d 0.00 : 5badc: 0f 85 d8 09 00 00 jne 5c4ba <_IO_vfscanf+0x7b2a> 0.00 : 5bae2: 48 8b b5 60 fd ff ff mov -0x2a0(%rbp),%rsi 0.00 : 5bae9: bf 2c 00 00 00 mov $0x2c,%edi 0.00 : 5baee: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5baf5: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bafc: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bb03: e8 38 2f 08 00 callq dea40 <__towctrans> 0.00 : 5bb08: 85 c0 test %eax,%eax 0.00 : 5bb0a: 89 85 18 ff ff ff mov %eax,-0xe8(%rbp) 0.00 : 5bb10: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bb17: 0f 95 c0 setne %al 0.00 : 5bb1a: 20 85 97 fd ff ff and %al,-0x269(%rbp) 0.00 : 5bb20: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bb27: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bb2e: 48 8b 8d d8 fc ff ff mov -0x328(%rbp),%rcx 0.00 : 5bb35: 48 c7 01 00 00 00 00 movq $0x0,(%rcx) 0.00 : 5bb3c: 48 8b bd 48 fc ff ff mov -0x3b8(%rbp),%rdi 0.00 : 5bb43: 48 89 ca mov %rcx,%rdx 0.00 : 5bb46: 8b 34 9f mov (%rdi,%rbx,4),%esi 0.00 : 5bb49: 4c 89 ef mov %r13,%rdi 0.00 : 5bb4c: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bb53: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bb5a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bb61: e8 7a 14 03 00 callq 8cfe0 0.00 : 5bb66: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 5bb6a: 48 89 c1 mov %rax,%rcx 0.00 : 5bb6d: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bb74: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bb7b: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bb82: 0f 84 04 06 00 00 je 5c18c <_IO_vfscanf+0x77fc> 0.00 : 5bb88: 49 63 c4 movslq %r12d,%rax 0.00 : 5bb8b: 48 89 c2 mov %rax,%rdx 0.00 : 5bb8e: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 5bb92: 48 01 c2 add %rax,%rdx 0.00 : 5bb95: 48 8d 45 d0 lea -0x30(%rbp),%rax 0.00 : 5bb99: 48 01 d0 add %rdx,%rax 0.00 : 5bb9c: c6 84 01 50 fe ff ff movb $0x0,-0x1b0(%rcx,%rax,1) 0.00 : 5bba3: 00 0.00 : 5bba4: 48 83 c3 01 add $0x1,%rbx 0.00 : 5bba8: 49 83 c5 11 add $0x11,%r13 0.00 : 5bbac: 48 83 fb 0b cmp $0xb,%rbx 0.00 : 5bbb0: 0f 85 20 ff ff ff jne 5bad6 <_IO_vfscanf+0x7146> 0.00 : 5bbb6: 80 bd 21 fd ff ff 00 cmpb $0x0,-0x2df(%rbp) 0.00 : 5bbbd: 0f 84 1b 08 00 00 je 5c3de <_IO_vfscanf+0x7a4e> 0.00 : 5bbc3: 0f b6 85 1f fe ff ff movzbl -0x1e1(%rbp),%eax 0.00 : 5bbca: 43 38 44 31 ff cmp %al,-0x1(%r9,%r14,1) 0.00 : 5bbcf: 0f 84 1e 05 00 00 je 5c0f3 <_IO_vfscanf+0x7763> 0.00 : 5bbd5: 48 8b 95 40 fc ff ff mov -0x3c0(%rbp),%rdx 0.00 : 5bbdc: c7 85 98 fd ff ff 00 movl $0x0,-0x268(%rbp) 0.00 : 5bbe3: 00 00 00 0.00 : 5bbe6: 48 89 95 a0 fd ff ff mov %rdx,-0x260(%rbp) 0.00 : 5bbed: 48 8b 8d a0 fd ff ff mov -0x260(%rbp),%rcx 0.00 : 5bbf4: 8b 9d dc fd ff ff mov -0x224(%rbp),%ebx 0.00 : 5bbfa: 41 bc ff ff ff 7f mov $0x7fffffff,%r12d 0.00 : 5bc00: 0f b6 11 movzbl (%rcx),%edx 0.00 : 5bc03: 85 db test %ebx,%ebx 0.00 : 5bc05: 44 0f 4f a5 dc fd ff cmovg -0x224(%rbp),%r12d 0.00 : 5bc0c: ff 0.00 : 5bc0d: 49 89 cd mov %rcx,%r13 0.00 : 5bc10: 0f b6 c2 movzbl %dl,%eax 0.00 : 5bc13: 41 39 c7 cmp %eax,%r15d 0.00 : 5bc16: 0f 85 fd 03 00 00 jne 5c019 <_IO_vfscanf+0x7689> 0.00 : 5bc1c: 4c 8b ad a0 fd ff ff mov -0x260(%rbp),%r13 0.00 : 5bc23: 48 8b 9d a0 fd ff ff mov -0x260(%rbp),%rbx 0.00 : 5bc2a: 49 83 c5 01 add $0x1,%r13 0.00 : 5bc2e: 80 7b 01 00 cmpb $0x0,0x1(%rbx) 0.00 : 5bc32: 0f 84 e9 03 00 00 je 5c021 <_IO_vfscanf+0x7691> 0.00 : 5bc38: 49 83 c3 01 add $0x1,%r11 0.00 : 5bc3c: eb 42 jmp 5bc80 <_IO_vfscanf+0x72f0> 0.00 : 5bc3e: 66 90 xchg %ax,%ax 0.00 : 5bc40: 0f b6 08 movzbl (%rax),%ecx 0.00 : 5bc43: 48 83 c0 01 add $0x1,%rax 0.00 : 5bc47: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5bc4b: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 5bc50: 41 83 ec 01 sub $0x1,%r12d 0.00 : 5bc54: 44 0f b6 fa movzbl %dl,%r15d 0.00 : 5bc58: 41 39 cf cmp %ecx,%r15d 0.00 : 5bc5b: 0f 85 b5 03 00 00 jne 5c016 <_IO_vfscanf+0x7686> 0.00 : 5bc61: 49 83 c5 01 add $0x1,%r13 0.00 : 5bc65: 41 80 7d 00 00 cmpb $0x0,0x0(%r13) 0.00 : 5bc6a: 0f 84 b1 03 00 00 je 5c021 <_IO_vfscanf+0x7691> 0.00 : 5bc70: 45 85 e4 test %r12d,%r12d 0.00 : 5bc73: 49 8d 43 01 lea 0x1(%r11),%rax 0.00 : 5bc77: 0f 84 78 02 00 00 je 5bef5 <_IO_vfscanf+0x7565> 0.00 : 5bc7d: 49 89 c3 mov %rax,%r11 0.00 : 5bc80: 49 8d 73 ff lea -0x1(%r11),%rsi 0.00 : 5bc84: 48 89 b5 10 fe ff ff mov %rsi,-0x1f0(%rbp) 0.00 : 5bc8b: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5bc8f: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5bc93: 72 ab jb 5bc40 <_IO_vfscanf+0x72b0> 0.00 : 5bc95: 4c 89 d7 mov %r10,%rdi 0.00 : 5bc98: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bc9f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bca6: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bcad: e8 4e 95 01 00 callq 75200 <__uflow> 0.00 : 5bcb2: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5bcb5: 41 89 c7 mov %eax,%r15d 0.00 : 5bcb8: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bcbf: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bcc6: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bccd: 0f 85 4f 05 00 00 jne 5c222 <_IO_vfscanf+0x7892> 0.00 : 5bcd3: 48 8b 1d 5e 61 31 00 mov 0x31615e(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5bcda: 48 8b bd c0 fc ff ff mov -0x340(%rbp),%rdi 0.00 : 5bce1: 4c 8b 9d 10 fe ff ff mov -0x1f0(%rbp),%r11 0.00 : 5bce8: 8b 1c 1f mov (%rdi,%rbx,1),%ebx 0.00 : 5bceb: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5bcf1: 41 0f b6 55 00 movzbl 0x0(%r13),%edx 0.00 : 5bcf6: e9 1e 03 00 00 jmpq 5c019 <_IO_vfscanf+0x7689> 0.00 : 5bcfb: 48 8b bd 28 fd ff ff mov -0x2d8(%rbp),%rdi 0.00 : 5bd02: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bd09: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bd10: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bd17: e8 94 4e 02 00 callq 80bb0 <__GI_strlen> 0.00 : 5bd1c: 48 83 f8 10 cmp $0x10,%rax 0.00 : 5bd20: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bd27: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bd2e: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bd35: 0f 87 87 c4 ff ff ja 581c2 <_IO_vfscanf+0x3832> 0.00 : 5bd3b: 48 8b b5 28 fd ff ff mov -0x2d8(%rbp),%rsi 0.00 : 5bd42: 48 8b bd 38 fc ff ff mov -0x3c8(%rbp),%rdi 0.00 : 5bd49: 49 39 c6 cmp %rax,%r14 0.00 : 5bd4c: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 5bd50: 0f 94 c3 sete %bl 0.00 : 5bd53: 44 09 e3 or %r12d,%ebx 0.00 : 5bd56: e8 f5 89 02 00 callq 84750 0.00 : 5bd5b: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bd62: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bd69: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bd70: e9 38 fd ff ff jmpq 5baad <_IO_vfscanf+0x711d> 0.00 : 5bd75: 4c 89 d7 mov %r10,%rdi 0.00 : 5bd78: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bd7f: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bd86: e8 75 94 01 00 callq 75200 <__uflow> 0.00 : 5bd8b: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5bd8e: 41 89 c7 mov %eax,%r15d 0.00 : 5bd91: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bd98: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bd9f: 0f 85 90 b6 ff ff jne 57435 <_IO_vfscanf+0x2aa5> 0.00 : 5bda5: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5bdac: 48 8b 1d 85 60 31 00 mov 0x316085(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5bdb3: 8b 1c 18 mov (%rax,%rbx,1),%ebx 0.00 : 5bdb6: b8 fc 03 00 00 mov $0x3fc,%eax 0.00 : 5bdbb: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5bdc1: e9 39 ad ff ff jmpq 56aff <_IO_vfscanf+0x216f> 0.00 : 5bdc6: 48 8b 95 48 fd ff ff mov -0x2b8(%rbp),%rdx 0.00 : 5bdcd: 49 8d 5c 24 01 lea 0x1(%r12),%rbx 0.00 : 5bdd2: 48 8d 34 9d 00 00 00 lea 0x0(,%rbx,4),%rsi 0.00 : 5bdd9: 00 0.00 : 5bdda: 48 8b 3a mov (%rdx),%rdi 0.00 : 5bddd: e8 5e 2a fc ff callq 1e840 0.00 : 5bde2: 48 85 c0 test %rax,%rax 0.00 : 5bde5: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bdec: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bdf3: 0f 84 14 e0 ff ff je 59e0d <_IO_vfscanf+0x547d> 0.00 : 5bdf9: 48 8b b5 48 fd ff ff mov -0x2b8(%rbp),%rsi 0.00 : 5be00: 48 89 06 mov %rax,(%rsi) 0.00 : 5be03: 4c 01 e8 add %r13,%rax 0.00 : 5be06: 45 31 ed xor %r13d,%r13d 0.00 : 5be09: 48 89 85 e0 fd ff ff mov %rax,-0x220(%rbp) 0.00 : 5be10: e9 ab b9 ff ff jmpq 577c0 <_IO_vfscanf+0x2e30> 0.00 : 5be15: 4c 89 d7 mov %r10,%rdi 0.00 : 5be18: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5be1f: e8 dc 93 01 00 callq 75200 <__uflow> 0.00 : 5be24: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5be27: 89 c1 mov %eax,%ecx 0.00 : 5be29: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5be30: 0f 84 a2 90 ff ff je 54ed8 <_IO_vfscanf+0x548> 0.00 : 5be36: e9 c5 c7 ff ff jmpq 58600 <_IO_vfscanf+0x3c70> 0.00 : 5be3b: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5be42: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5be46: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5be4d: e9 cb c5 ff ff jmpq 5841d <_IO_vfscanf+0x3a8d> 0.00 : 5be52: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5be59: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5be5d: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5be64: e9 0f c5 ff ff jmpq 58378 <_IO_vfscanf+0x39e8> 0.00 : 5be69: 48 8b 95 f8 fe ff ff mov -0x108(%rbp),%rdx 0.00 : 5be70: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 5be74: 48 89 85 f8 fe ff ff mov %rax,-0x108(%rbp) 0.00 : 5be7b: e9 20 c4 ff ff jmpq 582a0 <_IO_vfscanf+0x3910> 0.00 : 5be80: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5be84: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5be88: 73 15 jae 5be9f <_IO_vfscanf+0x750f> 0.00 : 5be8a: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5be8e: 48 83 c0 01 add $0x1,%rax 0.00 : 5be92: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5be96: 49 83 c3 01 add $0x1,%r11 0.00 : 5be9a: e9 11 fb ff ff jmpq 5b9b0 <_IO_vfscanf+0x7020> 0.00 : 5be9f: 4c 89 d7 mov %r10,%rdi 0.00 : 5bea2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bea9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5beb0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5beb7: e8 44 93 01 00 callq 75200 <__uflow> 0.00 : 5bebc: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5bebf: 41 89 c7 mov %eax,%r15d 0.00 : 5bec2: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bec9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bed0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bed7: 75 bd jne 5be96 <_IO_vfscanf+0x7506> 0.00 : 5bed9: 48 8b 1d 58 5f 31 00 mov 0x315f58(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5bee0: 48 8b b5 c0 fc ff ff mov -0x340(%rbp),%rsi 0.00 : 5bee7: 8b 1c 1e mov (%rsi,%rbx,1),%ebx 0.00 : 5beea: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5bef0: e9 bb fa ff ff jmpq 5b9b0 <_IO_vfscanf+0x7020> 0.00 : 5bef5: 4c 39 ad a0 fd ff ff cmp %r13,-0x260(%rbp) 0.00 : 5befc: 0f 83 af 00 00 00 jae 5bfb1 <_IO_vfscanf+0x7621> 0.00 : 5bf02: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5bf06: 74 3a je 5bf42 <_IO_vfscanf+0x75b2> 0.00 : 5bf08: 49 83 eb 01 sub $0x1,%r11 0.00 : 5bf0c: 4c 89 d7 mov %r10,%rdi 0.00 : 5bf0f: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 5bf13: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bf1a: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bf21: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bf28: e8 23 82 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5bf2d: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bf34: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bf3b: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bf42: 4d 8d 65 ff lea -0x1(%r13),%r12 0.00 : 5bf46: 4c 39 a5 a0 fd ff ff cmp %r12,-0x260(%rbp) 0.00 : 5bf4d: 73 5d jae 5bfac <_IO_vfscanf+0x761c> 0.00 : 5bf4f: 4c 89 e3 mov %r12,%rbx 0.00 : 5bf52: 0f b6 33 movzbl (%rbx),%esi 0.00 : 5bf55: 4c 89 d7 mov %r10,%rdi 0.00 : 5bf58: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bf5f: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bf66: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bf6d: 48 83 eb 01 sub $0x1,%rbx 0.00 : 5bf71: e8 da 81 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5bf76: 48 39 9d a0 fd ff ff cmp %rbx,-0x260(%rbp) 0.00 : 5bf7d: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5bf84: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5bf8b: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5bf92: 72 be jb 5bf52 <_IO_vfscanf+0x75c2> 0.00 : 5bf94: 48 8b 85 a0 fd ff ff mov -0x260(%rbp),%rax 0.00 : 5bf9b: 49 8d 55 fe lea -0x2(%r13),%rdx 0.00 : 5bf9f: 48 83 e8 01 sub $0x1,%rax 0.00 : 5bfa3: 48 29 d0 sub %rdx,%rax 0.00 : 5bfa6: 49 01 c3 add %rax,%r11 0.00 : 5bfa9: 49 01 c4 add %rax,%r12 0.00 : 5bfac: 45 0f b6 3c 24 movzbl (%r12),%r15d 0.00 : 5bfb1: 83 85 98 fd ff ff 01 addl $0x1,-0x268(%rbp) 0.00 : 5bfb8: 48 83 85 a0 fd ff ff addq $0x11,-0x260(%rbp) 0.00 : 5bfbf: 11 0.00 : 5bfc0: 83 bd 98 fd ff ff 0c cmpl $0xc,-0x268(%rbp) 0.00 : 5bfc7: 0f 85 20 fc ff ff jne 5bbed <_IO_vfscanf+0x725d> 0.00 : 5bfcd: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5bfd1: 0f 84 eb c1 ff ff je 581c2 <_IO_vfscanf+0x3832> 0.00 : 5bfd7: 49 83 eb 01 sub $0x1,%r11 0.00 : 5bfdb: 4c 89 d7 mov %r10,%rdi 0.00 : 5bfde: 41 0f b6 f7 movzbl %r15b,%esi 0.00 : 5bfe2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5bfe9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5bff0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5bff7: e8 54 81 01 00 callq 74150 <_IO_sputbackc> 0.00 : 5bffc: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5c003: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c00a: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c011: e9 ac c1 ff ff jmpq 581c2 <_IO_vfscanf+0x3832> 0.00 : 5c016: 41 89 cf mov %ecx,%r15d 0.00 : 5c019: 84 d2 test %dl,%dl 0.00 : 5c01b: 0f 85 d4 fe ff ff jne 5bef5 <_IO_vfscanf+0x7565> 0.00 : 5c021: 44 8b 85 dc fd ff ff mov -0x224(%rbp),%r8d 0.00 : 5c028: 45 85 c0 test %r8d,%r8d 0.00 : 5c02b: 44 0f 4e a5 dc fd ff cmovle -0x224(%rbp),%r12d 0.00 : 5c032: ff 0.00 : 5c033: 83 bd 98 fd ff ff 09 cmpl $0x9,-0x268(%rbp) 0.00 : 5c03a: 44 89 a5 dc fd ff ff mov %r12d,-0x224(%rbp) 0.00 : 5c041: 0f 8f e2 01 00 00 jg 5c229 <_IO_vfscanf+0x7899> 0.00 : 5c047: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 5c04e: 0f 84 cc 00 00 00 je 5c120 <_IO_vfscanf+0x7790> 0.00 : 5c054: 0f b6 85 98 fd ff ff movzbl -0x268(%rbp),%eax 0.00 : 5c05b: 83 c0 30 add $0x30,%eax 0.00 : 5c05e: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 5c062: 49 83 c6 01 add $0x1,%r14 0.00 : 5c066: 8b bd dc fd ff ff mov -0x224(%rbp),%edi 0.00 : 5c06c: 85 ff test %edi,%edi 0.00 : 5c06e: 0f 84 4e c1 ff ff je 581c2 <_IO_vfscanf+0x3832> 0.00 : 5c074: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5c078: 0f 84 88 01 00 00 je 5c206 <_IO_vfscanf+0x7876> 0.00 : 5c07e: 49 8b 42 08 mov 0x8(%r10),%rax 0.00 : 5c082: 49 3b 42 10 cmp 0x10(%r10),%rax 0.00 : 5c086: 73 27 jae 5c0af <_IO_vfscanf+0x771f> 0.00 : 5c088: 44 0f b6 38 movzbl (%rax),%r15d 0.00 : 5c08c: 48 83 c0 01 add $0x1,%rax 0.00 : 5c090: 49 83 c3 01 add $0x1,%r11 0.00 : 5c094: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : 5c098: 31 c0 xor %eax,%eax 0.00 : 5c09a: 83 bd dc fd ff ff 00 cmpl $0x0,-0x224(%rbp) 0.00 : 5c0a1: 0f 9f c0 setg %al 0.00 : 5c0a4: 29 85 dc fd ff ff sub %eax,-0x224(%rbp) 0.00 : 5c0aa: e9 07 fb ff ff jmpq 5bbb6 <_IO_vfscanf+0x7226> 0.00 : 5c0af: 4c 89 d7 mov %r10,%rdi 0.00 : 5c0b2: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5c0b9: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c0c0: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c0c7: e8 34 91 01 00 callq 75200 <__uflow> 0.00 : 5c0cc: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 5c0cf: 41 89 c7 mov %eax,%r15d 0.00 : 5c0d2: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5c0d9: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c0e0: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c0e7: 0f 84 44 03 00 00 je 5c431 <_IO_vfscanf+0x7aa1> 0.00 : 5c0ed: 49 83 c3 01 add $0x1,%r11 0.00 : 5c0f1: eb a5 jmp 5c098 <_IO_vfscanf+0x7708> 0.00 : 5c0f3: 41 83 ff 2d cmp $0x2d,%r15d 0.00 : 5c0f7: 74 0d je 5c106 <_IO_vfscanf+0x7776> 0.00 : 5c0f9: 41 83 ff 2b cmp $0x2b,%r15d 0.00 : 5c0fd: 0f 1f 00 nopl (%rax) 0.00 : 5c100: 0f 85 cf fa ff ff jne 5bbd5 <_IO_vfscanf+0x7245> 0.00 : 5c106: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 5c10d: 0f 84 97 01 00 00 je 5c2aa <_IO_vfscanf+0x791a> 0.00 : 5c113: 47 88 3c 31 mov %r15b,(%r9,%r14,1) 0.00 : 5c117: 49 83 c6 01 add $0x1,%r14 0.00 : 5c11b: e9 46 ff ff ff jmpq 5c066 <_IO_vfscanf+0x76d6> 0.00 : 5c120: 4b 8d 04 36 lea (%r14,%r14,1),%rax 0.00 : 5c124: ba 00 01 00 00 mov $0x100,%edx 0.00 : 5c129: 48 3d 00 01 00 00 cmp $0x100,%rax 0.00 : 5c12f: 48 0f 43 d0 cmovae %rax,%rdx 0.00 : 5c133: 48 89 d0 mov %rdx,%rax 0.00 : 5c136: 48 89 95 50 fd ff ff mov %rdx,-0x2b0(%rbp) 0.00 : 5c13d: 48 83 c0 1e add $0x1e,%rax 0.00 : 5c141: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5c145: 48 29 c4 sub %rax,%rsp 0.00 : 5c148: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5c14d: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5c151: 4d 85 c9 test %r9,%r9 0.00 : 5c154: 0f 84 15 04 00 00 je 5c56f <_IO_vfscanf+0x7bdf> 0.00 : 5c15a: 4c 89 ce mov %r9,%rsi 0.00 : 5c15d: 4c 89 f2 mov %r14,%rdx 0.00 : 5c160: 48 89 df mov %rbx,%rdi 0.00 : 5c163: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c16a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c171: e8 da 85 02 00 callq 84750 0.00 : 5c176: 49 89 d9 mov %rbx,%r9 0.00 : 5c179: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c180: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c187: e9 c8 fe ff ff jmpq 5c054 <_IO_vfscanf+0x76c4> 0.00 : 5c18c: 41 83 fc 0a cmp $0xa,%r12d 0.00 : 5c190: 0f 85 2c c0 ff ff jne 581c2 <_IO_vfscanf+0x3832> 0.00 : 5c196: 80 bd 97 fd ff ff 00 cmpb $0x0,-0x269(%rbp) 0.00 : 5c19d: 0f 84 01 fa ff ff je 5bba4 <_IO_vfscanf+0x7214> 0.00 : 5c1a3: 48 8b bd 30 fd ff ff mov -0x2d0(%rbp),%rdi 0.00 : 5c1aa: e8 01 4a 02 00 callq 80bb0 <__GI_strlen> 0.00 : 5c1af: 48 83 f8 10 cmp $0x10,%rax 0.00 : 5c1b3: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5c1ba: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c1c1: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c1c8: 0f 87 e8 f9 ff ff ja 5bbb6 <_IO_vfscanf+0x7226> 0.00 : 5c1ce: 48 8b bd 40 fc ff ff mov -0x3c0(%rbp),%rdi 0.00 : 5c1d5: 48 8b b5 30 fd ff ff mov -0x2d0(%rbp),%rsi 0.00 : 5c1dc: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 5c1e0: 48 81 c7 aa 00 00 00 add $0xaa,%rdi 0.00 : 5c1e7: e8 64 85 02 00 callq 84750 0.00 : 5c1ec: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5c1f3: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c1fa: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c201: e9 b0 f9 ff ff jmpq 5bbb6 <_IO_vfscanf+0x7226> 0.00 : 5c206: 48 8b 1d 2b 5c 31 00 mov 0x315c2b(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5c20d: 8b 95 1c fd ff ff mov -0x2e4(%rbp),%edx 0.00 : 5c213: 48 8b 85 c0 fc ff ff mov -0x340(%rbp),%rax 0.00 : 5c21a: 89 14 18 mov %edx,(%rax,%rbx,1) 0.00 : 5c21d: e9 a0 bf ff ff jmpq 581c2 <_IO_vfscanf+0x3832> 0.00 : 5c222: 89 c1 mov %eax,%ecx 0.00 : 5c224: e9 22 fa ff ff jmpq 5bc4b <_IO_vfscanf+0x72bb> 0.00 : 5c229: 0f b6 85 20 fd ff ff movzbl -0x2e0(%rbp),%eax 0.00 : 5c230: 83 f0 01 xor $0x1,%eax 0.00 : 5c233: 83 bd 98 fd ff ff 0b cmpl $0xb,-0x268(%rbp) 0.00 : 5c23a: 0f 84 4c 01 00 00 je 5c38c <_IO_vfscanf+0x79fc> 0.00 : 5c240: 83 bd 98 fd ff ff 0a cmpl $0xa,-0x268(%rbp) 0.00 : 5c247: 0f 85 80 fd ff ff jne 5bfcd <_IO_vfscanf+0x763d> 0.00 : 5c24d: 80 bd 0f fe ff ff 00 cmpb $0x0,-0x1f1(%rbp) 0.00 : 5c254: 0f 84 73 fd ff ff je 5bfcd <_IO_vfscanf+0x763d> 0.00 : 5c25a: 84 c0 test %al,%al 0.00 : 5c25c: 0f 84 6b fd ff ff je 5bfcd <_IO_vfscanf+0x763d> 0.00 : 5c262: 48 8b b5 30 fd ff ff mov -0x2d0(%rbp),%rsi 0.00 : 5c269: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : 5c26c: 74 30 je 5c29e <_IO_vfscanf+0x790e> 0.00 : 5c26e: 4f 8d 2c 36 lea (%r14,%r14,1),%r13 0.00 : 5c272: 49 89 f4 mov %rsi,%r12 0.00 : 5c275: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 5c27c: 0f 84 95 00 00 00 je 5c317 <_IO_vfscanf+0x7987> 0.00 : 5c282: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 5c287: 49 83 c4 01 add $0x1,%r12 0.00 : 5c28b: 49 83 c5 02 add $0x2,%r13 0.00 : 5c28f: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 5c293: 49 83 c6 01 add $0x1,%r14 0.00 : 5c297: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5c29c: 75 d7 jne 5c275 <_IO_vfscanf+0x78e5> 0.00 : 5c29e: c6 85 20 fd ff ff 00 movb $0x0,-0x2e0(%rbp) 0.00 : 5c2a5: e9 bc fd ff ff jmpq 5c066 <_IO_vfscanf+0x76d6> 0.00 : 5c2aa: 4b 8d 0c 36 lea (%r14,%r14,1),%rcx 0.00 : 5c2ae: bb 00 01 00 00 mov $0x100,%ebx 0.00 : 5c2b3: 48 81 f9 00 01 00 00 cmp $0x100,%rcx 0.00 : 5c2ba: 48 0f 43 d9 cmovae %rcx,%rbx 0.00 : 5c2be: 48 89 d8 mov %rbx,%rax 0.00 : 5c2c1: 48 89 9d 50 fd ff ff mov %rbx,-0x2b0(%rbp) 0.00 : 5c2c8: 48 83 c0 1e add $0x1e,%rax 0.00 : 5c2cc: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5c2d0: 48 29 c4 sub %rax,%rsp 0.00 : 5c2d3: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5c2d8: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5c2dc: 4d 85 c9 test %r9,%r9 0.00 : 5c2df: 0f 84 97 00 00 00 je 5c37c <_IO_vfscanf+0x79ec> 0.00 : 5c2e5: 4c 89 ce mov %r9,%rsi 0.00 : 5c2e8: 4c 89 f2 mov %r14,%rdx 0.00 : 5c2eb: 48 89 df mov %rbx,%rdi 0.00 : 5c2ee: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c2f5: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c2fc: e8 4f 84 02 00 callq 84750 0.00 : 5c301: 49 89 d9 mov %rbx,%r9 0.00 : 5c304: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c30b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c312: e9 fc fd ff ff jmpq 5c113 <_IO_vfscanf+0x7783> 0.00 : 5c317: 49 81 fd 00 01 00 00 cmp $0x100,%r13 0.00 : 5c31e: bf 00 01 00 00 mov $0x100,%edi 0.00 : 5c323: 49 0f 43 fd cmovae %r13,%rdi 0.00 : 5c327: 48 89 f8 mov %rdi,%rax 0.00 : 5c32a: 48 89 bd 50 fd ff ff mov %rdi,-0x2b0(%rbp) 0.00 : 5c331: 48 83 c0 1e add $0x1e,%rax 0.00 : 5c335: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5c339: 48 29 c4 sub %rax,%rsp 0.00 : 5c33c: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5c341: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5c345: 4d 85 c9 test %r9,%r9 0.00 : 5c348: 74 3a je 5c384 <_IO_vfscanf+0x79f4> 0.00 : 5c34a: 4c 89 ce mov %r9,%rsi 0.00 : 5c34d: 4c 89 f2 mov %r14,%rdx 0.00 : 5c350: 48 89 df mov %rbx,%rdi 0.00 : 5c353: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c35a: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c361: e8 ea 83 02 00 callq 84750 0.00 : 5c366: 49 89 d9 mov %rbx,%r9 0.00 : 5c369: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c370: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c377: e9 06 ff ff ff jmpq 5c282 <_IO_vfscanf+0x78f2> 0.00 : 5c37c: 49 89 d9 mov %rbx,%r9 0.00 : 5c37f: e9 8f fd ff ff jmpq 5c113 <_IO_vfscanf+0x7783> 0.00 : 5c384: 49 89 d9 mov %rbx,%r9 0.00 : 5c387: e9 f6 fe ff ff jmpq 5c282 <_IO_vfscanf+0x78f2> 0.00 : 5c38c: 84 c0 test %al,%al 0.00 : 5c38e: 66 90 xchg %ax,%ax 0.00 : 5c390: 0f 84 37 fc ff ff je 5bfcd <_IO_vfscanf+0x763d> 0.00 : 5c396: 48 8b 8d 28 fd ff ff mov -0x2d8(%rbp),%rcx 0.00 : 5c39d: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 5c3a0: 74 30 je 5c3d2 <_IO_vfscanf+0x7a42> 0.00 : 5c3a2: 4f 8d 2c 36 lea (%r14,%r14,1),%r13 0.00 : 5c3a6: 49 89 cc mov %rcx,%r12 0.00 : 5c3a9: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 5c3b0: 0f 84 4c 01 00 00 je 5c502 <_IO_vfscanf+0x7b72> 0.00 : 5c3b6: 41 0f b6 04 24 movzbl (%r12),%eax 0.00 : 5c3bb: 49 83 c4 01 add $0x1,%r12 0.00 : 5c3bf: 49 83 c5 02 add $0x2,%r13 0.00 : 5c3c3: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 5c3c7: 49 83 c6 01 add $0x1,%r14 0.00 : 5c3cb: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 5c3d0: 75 d7 jne 5c3a9 <_IO_vfscanf+0x7a19> 0.00 : 5c3d2: c6 85 20 fd ff ff 01 movb $0x1,-0x2e0(%rbp) 0.00 : 5c3d9: e9 88 fc ff ff jmpq 5c066 <_IO_vfscanf+0x76d6> 0.00 : 5c3de: 4d 85 f6 test %r14,%r14 0.00 : 5c3e1: 0f 84 ee f7 ff ff je 5bbd5 <_IO_vfscanf+0x7245> 0.00 : 5c3e7: 48 8b b5 08 fd ff ff mov -0x2f8(%rbp),%rsi 0.00 : 5c3ee: 41 0f b6 d7 movzbl %r15b,%edx 0.00 : 5c3f2: 0f b6 8d 1f fe ff ff movzbl -0x1e1(%rbp),%ecx 0.00 : 5c3f9: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 5c3fd: 3a 0c 90 cmp (%rax,%rdx,4),%cl 0.00 : 5c400: 0f 85 cf f7 ff ff jne 5bbd5 <_IO_vfscanf+0x7245> 0.00 : 5c406: 4c 3b b5 50 fd ff ff cmp -0x2b0(%rbp),%r14 0.00 : 5c40d: 74 3e je 5c44d <_IO_vfscanf+0x7abd> 0.00 : 5c40f: 0f b6 85 1f fe ff ff movzbl -0x1e1(%rbp),%eax 0.00 : 5c416: 43 88 04 31 mov %al,(%r9,%r14,1) 0.00 : 5c41a: 49 83 c6 01 add $0x1,%r14 0.00 : 5c41e: c6 85 20 fd ff ff 01 movb $0x1,-0x2e0(%rbp) 0.00 : 5c425: c6 85 21 fd ff ff 01 movb $0x1,-0x2df(%rbp) 0.00 : 5c42c: e9 35 fc ff ff jmpq 5c066 <_IO_vfscanf+0x76d6> 0.00 : 5c431: 48 8b 1d 00 5a 31 00 mov 0x315a00(%rip),%rbx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 5c438: 48 8b 8d c0 fc ff ff mov -0x340(%rbp),%rcx 0.00 : 5c43f: 8b 1c 19 mov (%rcx,%rbx,1),%ebx 0.00 : 5c442: 89 9d 1c fd ff ff mov %ebx,-0x2e4(%rbp) 0.00 : 5c448: e9 75 bd ff ff jmpq 581c2 <_IO_vfscanf+0x3832> 0.00 : 5c44d: 4b 8d 1c 36 lea (%r14,%r14,1),%rbx 0.00 : 5c451: be 00 01 00 00 mov $0x100,%esi 0.00 : 5c456: 48 81 fb 00 01 00 00 cmp $0x100,%rbx 0.00 : 5c45d: 48 0f 43 f3 cmovae %rbx,%rsi 0.00 : 5c461: 48 89 f0 mov %rsi,%rax 0.00 : 5c464: 48 89 b5 50 fd ff ff mov %rsi,-0x2b0(%rbp) 0.00 : 5c46b: 48 83 c0 1e add $0x1e,%rax 0.00 : 5c46f: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5c473: 48 29 c4 sub %rax,%rsp 0.00 : 5c476: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5c47b: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5c47f: 4d 85 c9 test %r9,%r9 0.00 : 5c482: 0f 84 ef 00 00 00 je 5c577 <_IO_vfscanf+0x7be7> 0.00 : 5c488: 4c 89 ce mov %r9,%rsi 0.00 : 5c48b: 4c 89 f2 mov %r14,%rdx 0.00 : 5c48e: 48 89 df mov %rbx,%rdi 0.00 : 5c491: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c498: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c49f: e8 ac 82 02 00 callq 84750 0.00 : 5c4a4: 49 89 d9 mov %rbx,%r9 0.00 : 5c4a7: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c4ae: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c4b5: e9 55 ff ff ff jmpq 5c40f <_IO_vfscanf+0x7a7f> 0.00 : 5c4ba: 48 8b b5 60 fd ff ff mov -0x2a0(%rbp),%rsi 0.00 : 5c4c1: 8d 7b 30 lea 0x30(%rbx),%edi 0.00 : 5c4c4: 4c 89 8d 28 fc ff ff mov %r9,-0x3d8(%rbp) 0.00 : 5c4cb: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c4d2: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c4d9: e8 62 25 08 00 callq dea40 <__towctrans> 0.00 : 5c4de: 48 8b 95 48 fc ff ff mov -0x3b8(%rbp),%rdx 0.00 : 5c4e5: 89 04 9a mov %eax,(%rdx,%rbx,4) 0.00 : 5c4e8: 4c 8b 8d 28 fc ff ff mov -0x3d8(%rbp),%r9 0.00 : 5c4ef: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c4f6: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c4fd: e9 2c f6 ff ff jmpq 5bb2e <_IO_vfscanf+0x719e> 0.00 : 5c502: 49 81 fd 00 01 00 00 cmp $0x100,%r13 0.00 : 5c509: bb 00 01 00 00 mov $0x100,%ebx 0.00 : 5c50e: 49 0f 43 dd cmovae %r13,%rbx 0.00 : 5c512: 48 89 d8 mov %rbx,%rax 0.00 : 5c515: 48 89 9d 50 fd ff ff mov %rbx,-0x2b0(%rbp) 0.00 : 5c51c: 48 83 c0 1e add $0x1e,%rax 0.00 : 5c520: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 5c524: 48 29 c4 sub %rax,%rsp 0.00 : 5c527: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 5c52c: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 5c530: 4d 85 c9 test %r9,%r9 0.00 : 5c533: 74 32 je 5c567 <_IO_vfscanf+0x7bd7> 0.00 : 5c535: 4c 89 ce mov %r9,%rsi 0.00 : 5c538: 4c 89 f2 mov %r14,%rdx 0.00 : 5c53b: 48 89 df mov %rbx,%rdi 0.00 : 5c53e: 4c 89 95 20 fc ff ff mov %r10,-0x3e0(%rbp) 0.00 : 5c545: 4c 89 9d 18 fc ff ff mov %r11,-0x3e8(%rbp) 0.00 : 5c54c: e8 ff 81 02 00 callq 84750 0.00 : 5c551: 49 89 d9 mov %rbx,%r9 0.00 : 5c554: 4c 8b 9d 18 fc ff ff mov -0x3e8(%rbp),%r11 0.00 : 5c55b: 4c 8b 95 20 fc ff ff mov -0x3e0(%rbp),%r10 0.00 : 5c562: e9 4f fe ff ff jmpq 5c3b6 <_IO_vfscanf+0x7a26> 0.00 : 5c567: 49 89 d9 mov %rbx,%r9 0.00 : 5c56a: e9 47 fe ff ff jmpq 5c3b6 <_IO_vfscanf+0x7a26> 0.00 : 5c56f: 49 89 d9 mov %rbx,%r9 0.00 : 5c572: e9 dd fa ff ff jmpq 5c054 <_IO_vfscanf+0x76c4> 0.00 : 5c577: 49 89 d9 mov %rbx,%r9 0.00 : 5c57a: e9 90 fe ff ff jmpq 5c40f <_IO_vfscanf+0x7a7f> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000023090 <__gconv_transform_utf8_internal>: 0.00 : 23090: 41 57 push %r15 50.00 : 23092: 48 8d 47 68 lea 0x68(%rdi),%rax 0.00 : 23096: 41 56 push %r14 0.00 : 23098: 41 55 push %r13 0.00 : 2309a: 41 54 push %r12 0.00 : 2309c: 49 89 cc mov %rcx,%r12 0.00 : 2309f: 55 push %rbp 0.00 : 230a0: 53 push %rbx 0.00 : 230a1: 48 81 ec 98 00 00 00 sub $0x98,%rsp 0.00 : 230a8: 48 89 54 24 30 mov %rdx,0x30(%rsp) 0.00 : 230ad: 48 89 f2 mov %rsi,%rdx 0.00 : 230b0: 48 89 74 24 38 mov %rsi,0x38(%rsp) 0.00 : 230b5: 48 83 c2 38 add $0x38,%rdx 0.00 : 230b9: 4c 89 44 24 28 mov %r8,0x28(%rsp) 0.00 : 230be: 4c 89 4c 24 20 mov %r9,0x20(%rsp) 0.00 : 230c3: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : 230c8: 48 89 54 24 48 mov %rdx,0x48(%rsp) 0.00 : 230cd: 44 8b 4e 10 mov 0x10(%rsi),%r9d 0.00 : 230d1: 8b 9c 24 d0 00 00 00 mov 0xd0(%rsp),%ebx 0.00 : 230d8: 48 c7 44 24 50 00 00 movq $0x0,0x50(%rsp) 0.00 : 230df: 00 00 0.00 : 230e1: 41 f6 c1 01 test $0x1,%r9b 0.00 : 230e5: 75 27 jne 2310e <__gconv_transform_utf8_internal+0x7e> 0.00 : 230e7: 48 8b 44 24 40 mov 0x40(%rsp),%rax 0.00 : 230ec: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 230f0: 48 89 44 24 50 mov %rax,0x50(%rsp) 0.00 : 230f5: 48 83 7f 68 00 cmpq $0x0,0x68(%rdi) 0.00 : 230fa: 74 12 je 2310e <__gconv_transform_utf8_internal+0x7e> 0.00 : 230fc: 48 c1 c8 11 ror $0x11,%rax 0.00 : 23100: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 23107: 00 00 0.00 : 23109: 48 89 44 24 50 mov %rax,0x50(%rsp) 0.00 : 2310e: 85 db test %ebx,%ebx 0.00 : 23110: 0f 85 f3 0b 00 00 jne 23d09 <__gconv_transform_utf8_internal+0xc79> 0.00 : 23116: 48 83 7c 24 28 00 cmpq $0x0,0x28(%rsp) 0.00 : 2311c: 0f 85 4a 0c 00 00 jne 23d6c <__gconv_transform_utf8_internal+0xcdc> 0.00 : 23122: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 23127: 48 8b 00 mov (%rax),%rax 0.00 : 2312a: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 2312f: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 23134: 45 31 ff xor %r15d,%r15d 0.00 : 23137: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : 2313d: 44 8b 94 24 d8 00 00 mov 0xd8(%rsp),%r10d 0.00 : 23144: 00 0.00 : 23145: 48 8d 44 24 78 lea 0x78(%rsp),%rax 0.00 : 2314a: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 2314e: 48 c7 44 24 78 00 00 movq $0x0,0x78(%rsp) 0.00 : 23155: 00 00 0.00 : 23157: 4c 0f 45 f8 cmovne %rax,%r15 0.00 : 2315b: 45 85 d2 test %r10d,%r10d 0.00 : 2315e: 48 89 4c 24 60 mov %rcx,0x60(%rsp) 0.00 : 23163: 74 15 je 2317a <__gconv_transform_utf8_internal+0xea> 0.00 : 23165: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 2316a: 4c 8b 58 20 mov 0x20(%rax),%r11 0.00 : 2316e: 41 8b 13 mov (%r11),%edx 0.00 : 23171: f6 c2 07 test $0x7,%dl 0.00 : 23174: 0f 85 7e 04 00 00 jne 235f8 <__gconv_transform_utf8_internal+0x568> 0.00 : 2317a: 48 8d 44 24 70 lea 0x70(%rsp),%rax 0.00 : 2317f: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 23184: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 23188: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 2318d: 4c 8b 32 mov (%rdx),%r14 0.00 : 23190: 4d 39 f4 cmp %r14,%r12 0.00 : 23193: 0f 84 af 03 00 00 je 23548 <__gconv_transform_utf8_internal+0x4b8> 0.00 : 23199: 48 8b 44 24 58 mov 0x58(%rsp),%rax 0.00 : 2319e: 48 83 c0 04 add $0x4,%rax 0.00 : 231a2: 48 39 44 24 60 cmp %rax,0x60(%rsp) 0.00 : 231a7: 0f 82 83 03 00 00 jb 23530 <__gconv_transform_utf8_internal+0x4a0> 0.00 : 231ad: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 231b2: 45 89 ca mov %r9d,%r10d 0.00 : 231b5: 4d 89 f0 mov %r14,%r8 0.00 : 231b8: 41 bd 04 00 00 00 mov $0x4,%r13d 0.00 : 231be: 41 83 e2 02 and $0x2,%r10d 0.00 : 231c2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 231c8: 41 0f b6 38 movzbl (%r8),%edi 0.00 : 231cc: 4d 8d 48 01 lea 0x1(%r8),%r9 0.00 : 231d0: 83 ff 7f cmp $0x7f,%edi 0.00 : 231d3: 0f 86 17 02 00 00 jbe 233f0 <__gconv_transform_utf8_internal+0x360> 0.00 : 231d9: 8d 87 3e ff ff ff lea -0xc2(%rdi),%eax 0.00 : 231df: 83 f8 1d cmp $0x1d,%eax 0.00 : 231e2: 0f 87 28 02 00 00 ja 23410 <__gconv_transform_utf8_internal+0x380> 0.00 : 231e8: 83 e7 1f and $0x1f,%edi 0.00 : 231eb: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 231f0: 4d 8d 0c 08 lea (%r8,%rcx,1),%r9 0.00 : 231f4: be 01 00 00 00 mov $0x1,%esi 0.00 : 231f9: 4d 39 cc cmp %r9,%r12 0.00 : 231fc: 73 62 jae 23260 <__gconv_transform_utf8_internal+0x1d0> 0.00 : 231fe: 49 8d 48 01 lea 0x1(%r8),%rcx 0.00 : 23202: 49 39 cc cmp %rcx,%r12 0.00 : 23205: 0f 86 12 03 00 00 jbe 2351d <__gconv_transform_utf8_internal+0x48d> 0.00 : 2320b: 41 0f b6 40 01 movzbl 0x1(%r8),%eax 0.00 : 23210: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23215: 83 c0 80 add $0xffffff80,%eax 0.00 : 23218: 0f 85 ff 02 00 00 jne 2351d <__gconv_transform_utf8_internal+0x48d> 0.00 : 2321e: 49 8d 50 02 lea 0x2(%r8),%rdx 0.00 : 23222: eb 15 jmp 23239 <__gconv_transform_utf8_internal+0x1a9> 0.00 : 23224: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 23228: 0f b6 02 movzbl (%rdx),%eax 0.00 : 2322b: 48 83 c2 01 add $0x1,%rdx 0.00 : 2322f: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23234: 83 c0 80 add $0xffffff80,%eax 0.00 : 23237: 75 0c jne 23245 <__gconv_transform_utf8_internal+0x1b5> 0.00 : 23239: 48 83 c6 01 add $0x1,%rsi 0.00 : 2323d: 49 39 d4 cmp %rdx,%r12 0.00 : 23240: 48 89 d1 mov %rdx,%rcx 0.00 : 23243: 77 e3 ja 23228 <__gconv_transform_utf8_internal+0x198> 0.00 : 23245: 4c 39 e1 cmp %r12,%rcx 0.00 : 23248: 75 66 jne 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 2324a: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 0.00 : 2324f: 41 bd 07 00 00 00 mov $0x7,%r13d 0.00 : 23255: e9 98 00 00 00 jmpq 232f2 <__gconv_transform_utf8_internal+0x262> 0.00 : 2325a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 23260: 41 0f b6 14 30 movzbl (%r8,%rsi,1),%edx 0.00 : 23265: 89 d0 mov %edx,%eax 0.00 : 23267: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 2326c: 83 c0 80 add $0xffffff80,%eax 0.00 : 2326f: 0f 85 2b 02 00 00 jne 234a0 <__gconv_transform_utf8_internal+0x410> 0.00 : 23275: c1 e7 06 shl $0x6,%edi 0.00 : 23278: 83 e2 3f and $0x3f,%edx 0.00 : 2327b: 48 83 c6 01 add $0x1,%rsi 0.00 : 2327f: 09 d7 or %edx,%edi 0.00 : 23281: 48 39 f1 cmp %rsi,%rcx 0.00 : 23284: 77 da ja 23260 <__gconv_transform_utf8_internal+0x1d0> 0.00 : 23286: 48 83 f9 02 cmp $0x2,%rcx 0.00 : 2328a: 74 0c je 23298 <__gconv_transform_utf8_internal+0x208> 0.00 : 2328c: 8d 4c 89 fc lea -0x4(%rcx,%rcx,4),%ecx 0.00 : 23290: 89 f8 mov %edi,%eax 0.00 : 23292: d3 e8 shr %cl,%eax 0.00 : 23294: 85 c0 test %eax,%eax 0.00 : 23296: 74 18 je 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 23298: 8d 87 00 28 ff ff lea -0xd800(%rdi),%eax 0.00 : 2329e: 3d ff 07 00 00 cmp $0x7ff,%eax 0.00 : 232a3: 0f 87 47 01 00 00 ja 233f0 <__gconv_transform_utf8_internal+0x360> 0.00 : 232a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 232b0: 4d 85 ff test %r15,%r15 0.00 : 232b3: 0f 84 d4 01 00 00 je 2348d <__gconv_transform_utf8_internal+0x3fd> 0.00 : 232b9: 45 85 d2 test %r10d,%r10d 0.00 : 232bc: 0f 84 cb 01 00 00 je 2348d <__gconv_transform_utf8_internal+0x3fd> 0.00 : 232c2: 49 01 f0 add %rsi,%r8 0.00 : 232c5: 49 83 07 01 addq $0x1,(%r15) 0.00 : 232c9: 41 bd 06 00 00 00 mov $0x6,%r13d 0.00 : 232cf: 4d 39 c4 cmp %r8,%r12 0.00 : 232d2: 0f 84 2b 01 00 00 je 23403 <__gconv_transform_utf8_internal+0x373> 0.00 : 232d8: 48 8d 45 04 lea 0x4(%rbp),%rax 0.00 : 232dc: 48 39 44 24 60 cmp %rax,0x60(%rsp) 0.00 : 232e1: 0f 83 e1 fe ff ff jae 231c8 <__gconv_transform_utf8_internal+0x138> 0.00 : 232e7: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 0.00 : 232ec: 41 bd 05 00 00 00 mov $0x5,%r13d 0.00 : 232f2: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : 232f7: 4c 89 01 mov %r8,(%rcx) 0.00 : 232fa: 48 83 7c 24 28 00 cmpq $0x0,0x28(%rsp) 0.00 : 23300: 0f 85 da 04 00 00 jne 237e0 <__gconv_transform_utf8_internal+0x750> 0.00 : 23306: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 2330b: 48 8b 59 30 mov 0x30(%rcx),%rbx 0.00 : 2330f: 48 85 db test %rbx,%rbx 0.00 : 23312: 74 35 je 23349 <__gconv_transform_utf8_internal+0x2b9> 0.00 : 23314: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 23318: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 2331c: 48 85 ff test %rdi,%rdi 0.00 : 2331f: 74 1f je 23340 <__gconv_transform_utf8_internal+0x2b0> 0.00 : 23321: e8 ea f9 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 23326: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 2332b: 48 8b 7b 18 mov 0x18(%rbx),%rdi 0.00 : 2332f: 49 89 e8 mov %rbp,%r8 0.00 : 23332: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 23337: 4c 89 f6 mov %r14,%rsi 0.00 : 2333a: 48 8b 10 mov (%rax),%rdx 0.00 : 2333d: ff 53 08 callq *0x8(%rbx) 0.00 : 23340: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 23344: 48 85 db test %rbx,%rbx 0.00 : 23347: 75 cf jne 23318 <__gconv_transform_utf8_internal+0x288> 0.00 : 23349: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 2334e: 83 42 14 01 addl $0x1,0x14(%rdx) 0.00 : 23352: f6 42 10 01 testb $0x1,0x10(%rdx) 0.00 : 23356: 0f 85 96 04 00 00 jne 237f2 <__gconv_transform_utf8_internal+0x762> 0.00 : 2335c: 48 3b 6c 24 58 cmp 0x58(%rsp),%rbp 0.00 : 23361: 0f 86 83 01 00 00 jbe 234ea <__gconv_transform_utf8_internal+0x45a> 0.00 : 23367: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 2336c: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 23371: 48 8b 01 mov (%rcx),%rax 0.00 : 23374: 48 89 44 24 70 mov %rax,0x70(%rsp) 0.00 : 23379: e8 92 f9 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 2337e: 8b 84 24 d8 00 00 00 mov 0xd8(%rsp),%eax 0.00 : 23385: 45 31 c0 xor %r8d,%r8d 0.00 : 23388: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 2338f: 4c 8b 4c 24 20 mov 0x20(%rsp),%r9 0.00 : 23394: 48 89 e9 mov %rbp,%rcx 0.00 : 23397: 48 8b 54 24 18 mov 0x18(%rsp),%rdx 0.00 : 2339c: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 233a1: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 233a6: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : 233aa: ff 54 24 50 callq *0x50(%rsp) 0.00 : 233ae: 83 f8 04 cmp $0x4,%eax 0.00 : 233b1: 41 89 c0 mov %eax,%r8d 0.00 : 233b4: 0f 84 26 01 00 00 je 234e0 <__gconv_transform_utf8_internal+0x450> 0.00 : 233ba: 48 39 6c 24 70 cmp %rbp,0x70(%rsp) 0.00 : 233bf: 0f 85 d9 05 00 00 jne 2399e <__gconv_transform_utf8_internal+0x90e> 0.00 : 233c5: 45 85 c0 test %r8d,%r8d 0.00 : 233c8: 0f 85 7e 0a 00 00 jne 23e4c <__gconv_transform_utf8_internal+0xdbc> 0.00 : 233ce: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 233d3: 48 8b 44 24 38 mov 0x38(%rsp),%rax 0.00 : 233d8: 48 8b 09 mov (%rcx),%rcx 0.00 : 233db: 48 89 4c 24 58 mov %rcx,0x58(%rsp) 0.00 : 233e0: 44 8b 48 10 mov 0x10(%rax),%r9d 0.00 : 233e4: e9 9f fd ff ff jmpq 23188 <__gconv_transform_utf8_internal+0xf8> 0.00 : 233e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 233f0: 4d 89 c8 mov %r9,%r8 0.00 : 233f3: 89 7d 00 mov %edi,0x0(%rbp) 0.00 : 233f6: 48 83 c5 04 add $0x4,%rbp 0.00 : 233fa: 4d 39 c4 cmp %r8,%r12 0.00 : 233fd: 0f 85 d5 fe ff ff jne 232d8 <__gconv_transform_utf8_internal+0x248> 0.00 : 23403: 4d 89 e0 mov %r12,%r8 0.00 : 23406: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 0.00 : 2340b: e9 e2 fe ff ff jmpq 232f2 <__gconv_transform_utf8_internal+0x262> 0.00 : 23410: 89 f8 mov %edi,%eax 0.00 : 23412: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 23417: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 2341c: 0f 84 8e 00 00 00 je 234b0 <__gconv_transform_utf8_internal+0x420> 0.00 : 23422: 89 f8 mov %edi,%eax 0.00 : 23424: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 23429: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 2342e: 0f 84 8c 00 00 00 je 234c0 <__gconv_transform_utf8_internal+0x430> 0.00 : 23434: 89 f8 mov %edi,%eax 0.00 : 23436: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 2343b: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 23440: 0f 84 8a 00 00 00 je 234d0 <__gconv_transform_utf8_internal+0x440> 0.00 : 23446: 89 f8 mov %edi,%eax 0.00 : 23448: 31 f6 xor %esi,%esi 0.00 : 2344a: 25 fe 00 00 00 and $0xfe,%eax 0.00 : 2344f: 3d fc 00 00 00 cmp $0xfc,%eax 0.00 : 23454: 0f 84 b6 00 00 00 je 23510 <__gconv_transform_utf8_internal+0x480> 0.00 : 2345a: 48 83 c6 01 add $0x1,%rsi 0.00 : 2345e: 49 8d 04 30 lea (%r8,%rsi,1),%rax 0.00 : 23462: 49 39 c4 cmp %rax,%r12 0.00 : 23465: 0f 86 45 fe ff ff jbe 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 2346b: 41 0f b6 04 30 movzbl (%r8,%rsi,1),%eax 0.00 : 23470: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23475: 83 c0 80 add $0xffffff80,%eax 0.00 : 23478: 0f 85 32 fe ff ff jne 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 2347e: 48 83 fe 04 cmp $0x4,%rsi 0.00 : 23482: 76 d6 jbe 2345a <__gconv_transform_utf8_internal+0x3ca> 0.00 : 23484: 4d 85 ff test %r15,%r15 0.00 : 23487: 0f 85 2c fe ff ff jne 232b9 <__gconv_transform_utf8_internal+0x229> 0.00 : 2348d: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 0.00 : 23492: 41 bd 06 00 00 00 mov $0x6,%r13d 0.00 : 23498: e9 55 fe ff ff jmpq 232f2 <__gconv_transform_utf8_internal+0x262> 0.00 : 2349d: 0f 1f 00 nopl (%rax) 0.00 : 234a0: 48 39 ce cmp %rcx,%rsi 0.00 : 234a3: 0f 82 07 fe ff ff jb 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 234a9: e9 d8 fd ff ff jmpq 23286 <__gconv_transform_utf8_internal+0x1f6> 0.00 : 234ae: 66 90 xchg %ax,%ax 0.00 : 234b0: 83 e7 0f and $0xf,%edi 0.00 : 234b3: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 234b8: e9 33 fd ff ff jmpq 231f0 <__gconv_transform_utf8_internal+0x160> 0.00 : 234bd: 0f 1f 00 nopl (%rax) 0.00 : 234c0: 83 e7 07 and $0x7,%edi 0.00 : 234c3: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 234c8: e9 23 fd ff ff jmpq 231f0 <__gconv_transform_utf8_internal+0x160> 0.00 : 234cd: 0f 1f 00 nopl (%rax) 0.00 : 234d0: 83 e7 03 and $0x3,%edi 0.00 : 234d3: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 234d8: e9 13 fd ff ff jmpq 231f0 <__gconv_transform_utf8_internal+0x160> 0.00 : 234dd: 0f 1f 00 nopl (%rax) 0.00 : 234e0: 41 83 fd 05 cmp $0x5,%r13d 0.00 : 234e4: 0f 84 e4 fe ff ff je 233ce <__gconv_transform_utf8_internal+0x33e> 0.00 : 234ea: 44 8b 8c 24 d8 00 00 mov 0xd8(%rsp),%r9d 0.00 : 234f1: 00 0.00 : 234f2: 45 85 c9 test %r9d,%r9d 0.00 : 234f5: 75 69 jne 23560 <__gconv_transform_utf8_internal+0x4d0> 0.00 : 234f7: 48 81 c4 98 00 00 00 add $0x98,%rsp 0.00 : 234fe: 44 89 e8 mov %r13d,%eax 0.00 : 23501: 5b pop %rbx 0.00 : 23502: 5d pop %rbp 50.00 : 23503: 41 5c pop %r12 0.00 : 23505: 41 5d pop %r13 0.00 : 23507: 41 5e pop %r14 0.00 : 23509: 41 5f pop %r15 0.00 : 2350b: c3 retq 0.00 : 2350c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 23510: 83 e7 01 and $0x1,%edi 0.00 : 23513: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 23518: e9 d3 fc ff ff jmpq 231f0 <__gconv_transform_utf8_internal+0x160> 0.00 : 2351d: 4c 39 e1 cmp %r12,%rcx 0.00 : 23520: be 01 00 00 00 mov $0x1,%esi 0.00 : 23525: 0f 85 85 fd ff ff jne 232b0 <__gconv_transform_utf8_internal+0x220> 0.00 : 2352b: e9 1a fd ff ff jmpq 2324a <__gconv_transform_utf8_internal+0x1ba> 0.00 : 23530: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 23535: 4d 89 f0 mov %r14,%r8 0.00 : 23538: 41 bd 05 00 00 00 mov $0x5,%r13d 0.00 : 2353e: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 0.00 : 23543: e9 aa fd ff ff jmpq 232f2 <__gconv_transform_utf8_internal+0x262> 0.00 : 23548: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 2354d: 4d 89 e0 mov %r12,%r8 0.00 : 23550: 41 bd 04 00 00 00 mov $0x4,%r13d 0.00 : 23556: 48 89 6c 24 68 mov %rbp,0x68(%rsp) 0.00 : 2355b: e9 92 fd ff ff jmpq 232f2 <__gconv_transform_utf8_internal+0x262> 0.00 : 23560: 41 83 fd 07 cmp $0x7,%r13d 0.00 : 23564: 75 91 jne 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23566: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : 2356b: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 23570: 48 8b 01 mov (%rcx),%rax 0.00 : 23573: 48 8b 72 20 mov 0x20(%rdx),%rsi 0.00 : 23577: 44 89 e1 mov %r12d,%ecx 0.00 : 2357a: 0f b6 10 movzbl (%rax),%edx 0.00 : 2357d: 29 c1 sub %eax,%ecx 0.00 : 2357f: 89 0e mov %ecx,(%rsi) 0.00 : 23581: 8d 82 3e ff ff ff lea -0xc2(%rdx),%eax 0.00 : 23587: 83 f8 1d cmp $0x1d,%eax 0.00 : 2358a: 0f 87 36 06 00 00 ja 23bc6 <__gconv_transform_utf8_internal+0xb36> 0.00 : 23590: 89 d7 mov %edx,%edi 0.00 : 23592: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 23598: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 2359d: 83 e7 1f and $0x1f,%edi 0.00 : 235a0: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 235a5: 4c 8b 00 mov (%rax),%r8 0.00 : 235a8: 49 8d 50 01 lea 0x1(%r8),%rdx 0.00 : 235ac: 49 39 d4 cmp %rdx,%r12 0.00 : 235af: 48 89 10 mov %rdx,(%rax) 0.00 : 235b2: 76 26 jbe 235da <__gconv_transform_utf8_internal+0x54a> 0.00 : 235b4: 89 f8 mov %edi,%eax 0.00 : 235b6: 0f b6 3a movzbl (%rdx),%edi 0.00 : 235b9: 48 83 c2 01 add $0x1,%rdx 0.00 : 235bd: c1 e0 06 shl $0x6,%eax 0.00 : 235c0: 83 e7 3f and $0x3f,%edi 0.00 : 235c3: 09 c7 or %eax,%edi 0.00 : 235c5: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 235ca: 49 39 d4 cmp %rdx,%r12 0.00 : 235cd: 48 89 10 mov %rdx,(%rax) 0.00 : 235d0: 77 e2 ja 235b4 <__gconv_transform_utf8_internal+0x524> 0.00 : 235d2: 4d 29 e0 sub %r12,%r8 0.00 : 235d5: 49 8d 4c 08 01 lea 0x1(%r8,%rcx,1),%rcx 0.00 : 235da: 48 8d 0c 49 lea (%rcx,%rcx,2),%rcx 0.00 : 235de: 44 89 c8 mov %r9d,%eax 0.00 : 235e1: 41 bd 07 00 00 00 mov $0x7,%r13d 0.00 : 235e7: c1 e0 08 shl $0x8,%eax 0.00 : 235ea: 09 06 or %eax,(%rsi) 0.00 : 235ec: 01 c9 add %ecx,%ecx 0.00 : 235ee: d3 e7 shl %cl,%edi 0.00 : 235f0: 89 7e 04 mov %edi,0x4(%rsi) 0.00 : 235f3: e9 ff fe ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 235f8: 48 83 7c 24 28 00 cmpq $0x0,0x28(%rsp) 0.00 : 235fe: 0f 85 e6 06 00 00 jne 23cea <__gconv_transform_utf8_internal+0xc5a> 0.00 : 23604: 89 d0 mov %edx,%eax 0.00 : 23606: 0f b6 f2 movzbl %dl,%esi 0.00 : 23609: 48 8d 15 d7 33 10 00 lea 0x1033d7(%rip),%rdx # 1269e7 0.00 : 23610: c1 f8 08 sar $0x8,%eax 0.00 : 23613: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx 0.00 : 23618: 45 8b 43 04 mov 0x4(%r11),%r8d 0.00 : 2361c: 48 98 cltq 0.00 : 2361e: 48 8d 9c 24 80 00 00 lea 0x80(%rsp),%rbx 0.00 : 23625: 00 0.00 : 23626: 0f b6 54 02 fe movzbl -0x2(%rdx,%rax,1),%edx 0.00 : 2362b: 48 8b 39 mov (%rcx),%rdi 0.00 : 2362e: 88 94 24 80 00 00 00 mov %dl,0x80(%rsp) 0.00 : 23635: 48 8d 50 ff lea -0x1(%rax),%rdx 0.00 : 23639: 48 8d 0c 13 lea (%rbx,%rdx,1),%rcx 0.00 : 2363d: eb 04 jmp 23643 <__gconv_transform_utf8_internal+0x5b3> 0.00 : 2363f: 48 83 ea 01 sub $0x1,%rdx 0.00 : 23643: 48 39 d6 cmp %rdx,%rsi 0.00 : 23646: 76 0b jbe 23653 <__gconv_transform_utf8_internal+0x5c3> 0.00 : 23648: 44 89 c0 mov %r8d,%eax 0.00 : 2364b: 83 e0 3f and $0x3f,%eax 0.00 : 2364e: 83 c8 80 or $0xffffff80,%eax 0.00 : 23651: 88 01 mov %al,(%rcx) 0.00 : 23653: 41 c1 e8 06 shr $0x6,%r8d 0.00 : 23657: 48 83 e9 01 sub $0x1,%rcx 0.00 : 2365b: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 2365f: 77 de ja 2363f <__gconv_transform_utf8_internal+0x5af> 0.00 : 23661: 48 89 f8 mov %rdi,%rax 0.00 : 23664: 44 08 84 24 80 00 00 or %r8b,0x80(%rsp) 0.00 : 2366b: 00 0.00 : 2366c: 48 29 f0 sub %rsi,%rax 0.00 : 2366f: 48 83 c0 01 add $0x1,%rax 0.00 : 23673: 49 39 c4 cmp %rax,%r12 0.00 : 23676: 0f 82 90 01 00 00 jb 2380c <__gconv_transform_utf8_internal+0x77c> 0.00 : 2367c: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 23681: 41 bd 05 00 00 00 mov $0x5,%r13d 0.00 : 23687: 48 83 c5 04 add $0x4,%rbp 0.00 : 2368b: 48 39 6c 24 60 cmp %rbp,0x60(%rsp) 0.00 : 23690: 0f 82 61 fe ff ff jb 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23696: 48 8d 14 33 lea (%rbx,%rsi,1),%rdx 0.00 : 2369a: eb 0d jmp 236a9 <__gconv_transform_utf8_internal+0x619> 0.00 : 2369c: 48 83 c7 01 add $0x1,%rdi 0.00 : 236a0: 48 83 c2 01 add $0x1,%rdx 0.00 : 236a4: 49 39 fc cmp %rdi,%r12 0.00 : 236a7: 76 0f jbe 236b8 <__gconv_transform_utf8_internal+0x628> 0.00 : 236a9: 0f b6 07 movzbl (%rdi),%eax 0.00 : 236ac: 48 83 c6 01 add $0x1,%rsi 0.00 : 236b0: 48 83 fe 05 cmp $0x5,%rsi 0.00 : 236b4: 88 02 mov %al,(%rdx) 0.00 : 236b6: 76 e4 jbe 2369c <__gconv_transform_utf8_internal+0x60c> 0.00 : 236b8: 0f b6 94 24 80 00 00 movzbl 0x80(%rsp),%edx 0.00 : 236bf: 00 0.00 : 236c0: 4c 8d 14 33 lea (%rbx,%rsi,1),%r10 0.00 : 236c4: 4c 8d 43 01 lea 0x1(%rbx),%r8 0.00 : 236c8: 83 fa 7f cmp $0x7f,%edx 0.00 : 236cb: 0f 86 80 02 00 00 jbe 23951 <__gconv_transform_utf8_internal+0x8c1> 0.00 : 236d1: 8d 82 3e ff ff ff lea -0xc2(%rdx),%eax 0.00 : 236d7: 83 f8 1d cmp $0x1d,%eax 0.00 : 236da: 0f 87 9e 06 00 00 ja 23d7e <__gconv_transform_utf8_internal+0xcee> 0.00 : 236e0: 83 e2 1f and $0x1f,%edx 0.00 : 236e3: be 02 00 00 00 mov $0x2,%esi 0.00 : 236e8: 4c 8d 04 33 lea (%rbx,%rsi,1),%r8 0.00 : 236ec: bf 01 00 00 00 mov $0x1,%edi 0.00 : 236f1: 4d 39 c2 cmp %r8,%r10 0.00 : 236f4: 0f 83 17 02 00 00 jae 23911 <__gconv_transform_utf8_internal+0x881> 0.00 : 236fa: 48 8d 53 01 lea 0x1(%rbx),%rdx 0.00 : 236fe: 49 39 d2 cmp %rdx,%r10 0.00 : 23701: 48 89 d1 mov %rdx,%rcx 0.00 : 23704: 76 38 jbe 2373e <__gconv_transform_utf8_internal+0x6ae> 0.00 : 23706: 0f b6 84 24 81 00 00 movzbl 0x81(%rsp),%eax 0.00 : 2370d: 00 0.00 : 2370e: 48 89 d1 mov %rdx,%rcx 0.00 : 23711: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23716: 83 c0 80 add $0xffffff80,%eax 0.00 : 23719: 75 23 jne 2373e <__gconv_transform_utf8_internal+0x6ae> 0.00 : 2371b: 48 8d 53 02 lea 0x2(%rbx),%rdx 0.00 : 2371f: eb 11 jmp 23732 <__gconv_transform_utf8_internal+0x6a2> 0.00 : 23721: 0f b6 02 movzbl (%rdx),%eax 0.00 : 23724: 48 83 c2 01 add $0x1,%rdx 0.00 : 23728: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 2372d: 83 c0 80 add $0xffffff80,%eax 0.00 : 23730: 75 0c jne 2373e <__gconv_transform_utf8_internal+0x6ae> 0.00 : 23732: 48 83 c7 01 add $0x1,%rdi 0.00 : 23736: 49 39 d2 cmp %rdx,%r10 0.00 : 23739: 48 89 d1 mov %rdx,%rcx 0.00 : 2373c: 77 e3 ja 23721 <__gconv_transform_utf8_internal+0x691> 0.00 : 2373e: 4c 39 d1 cmp %r10,%rcx 0.00 : 23741: 0f 85 94 06 00 00 jne 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 23747: 48 8d 43 06 lea 0x6(%rbx),%rax 0.00 : 2374b: 41 bd 07 00 00 00 mov $0x7,%r13d 0.00 : 23751: 48 39 c1 cmp %rax,%rcx 0.00 : 23754: 0f 84 a1 07 00 00 je 23efb <__gconv_transform_utf8_internal+0xe6b> 0.00 : 2375a: 49 63 13 movslq (%r11),%rdx 0.00 : 2375d: 4c 89 d0 mov %r10,%rax 0.00 : 23760: 45 89 d0 mov %r10d,%r8d 0.00 : 23763: 48 29 d8 sub %rbx,%rax 0.00 : 23766: 41 29 d8 sub %ebx,%r8d 0.00 : 23769: 83 e2 07 and $0x7,%edx 0.00 : 2376c: 48 29 d0 sub %rdx,%rax 0.00 : 2376f: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 23774: 48 01 02 add %rax,(%rdx) 0.00 : 23777: 0f b6 94 24 80 00 00 movzbl 0x80(%rsp),%edx 0.00 : 2377e: 00 0.00 : 2377f: 45 89 03 mov %r8d,(%r11) 0.00 : 23782: 8d 82 3e ff ff ff lea -0xc2(%rdx),%eax 0.00 : 23788: 83 f8 1d cmp $0x1d,%eax 0.00 : 2378b: 0f 87 2c 07 00 00 ja 23ebd <__gconv_transform_utf8_internal+0xe2d> 0.00 : 23791: 89 d6 mov %edx,%esi 0.00 : 23793: bf 02 00 00 00 mov $0x2,%edi 0.00 : 23798: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 2379d: 83 e6 1f and $0x1f,%esi 0.00 : 237a0: 48 8d 43 01 lea 0x1(%rbx),%rax 0.00 : 237a4: 49 39 c2 cmp %rax,%r10 0.00 : 237a7: 76 1b jbe 237c4 <__gconv_transform_utf8_internal+0x734> 0.00 : 237a9: 48 89 c2 mov %rax,%rdx 0.00 : 237ac: 0f b6 02 movzbl (%rdx),%eax 0.00 : 237af: c1 e6 06 shl $0x6,%esi 0.00 : 237b2: 48 83 c2 01 add $0x1,%rdx 0.00 : 237b6: 48 83 e9 01 sub $0x1,%rcx 0.00 : 237ba: 83 e0 3f and $0x3f,%eax 0.00 : 237bd: 09 c6 or %eax,%esi 0.00 : 237bf: 49 39 d2 cmp %rdx,%r10 0.00 : 237c2: 77 e8 ja 237ac <__gconv_transform_utf8_internal+0x71c> 0.00 : 237c4: 48 8d 0c 49 lea (%rcx,%rcx,2),%rcx 0.00 : 237c8: 89 f8 mov %edi,%eax 0.00 : 237ca: c1 e0 08 shl $0x8,%eax 0.00 : 237cd: 01 c9 add %ecx,%ecx 0.00 : 237cf: 44 09 c0 or %r8d,%eax 0.00 : 237d2: d3 e6 shl %cl,%esi 0.00 : 237d4: 41 89 03 mov %eax,(%r11) 0.00 : 237d7: 41 89 73 04 mov %esi,0x4(%r11) 0.00 : 237db: e9 17 fd ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 237e0: 48 8b 54 24 68 mov 0x68(%rsp),%rdx 0.00 : 237e5: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 237ea: 48 89 10 mov %rdx,(%rax) 0.00 : 237ed: e9 05 fd ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 237f2: 48 8b 4c 24 68 mov 0x68(%rsp),%rcx 0.00 : 237f7: 48 89 0a mov %rcx,(%rdx) 0.00 : 237fa: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 237ff: 48 8b 44 24 78 mov 0x78(%rsp),%rax 0.00 : 23804: 48 01 02 add %rax,(%rdx) 0.00 : 23807: e9 de fc ff ff jmpq 234ea <__gconv_transform_utf8_internal+0x45a> 0.00 : 2380c: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 23811: 49 39 fc cmp %rdi,%r12 0.00 : 23814: 4c 89 20 mov %r12,(%rax) 0.00 : 23817: 76 20 jbe 23839 <__gconv_transform_utf8_internal+0x7a9> 0.00 : 23819: 48 8d 0c 33 lea (%rbx,%rsi,1),%rcx 0.00 : 2381d: 48 89 fa mov %rdi,%rdx 0.00 : 23820: 0f b6 02 movzbl (%rdx),%eax 0.00 : 23823: 48 83 c2 01 add $0x1,%rdx 0.00 : 23827: 88 01 mov %al,(%rcx) 0.00 : 23829: 48 83 c1 01 add $0x1,%rcx 0.00 : 2382d: 49 39 d4 cmp %rdx,%r12 0.00 : 23830: 77 ee ja 23820 <__gconv_transform_utf8_internal+0x790> 0.00 : 23832: 49 29 fc sub %rdi,%r12 0.00 : 23835: 49 8d 34 34 lea (%r12,%rsi,1),%rsi 0.00 : 23839: 0f b6 94 24 80 00 00 movzbl 0x80(%rsp),%edx 0.00 : 23840: 00 0.00 : 23841: 4c 8d 04 33 lea (%rbx,%rsi,1),%r8 0.00 : 23845: 45 89 c1 mov %r8d,%r9d 0.00 : 23848: 41 29 d9 sub %ebx,%r9d 0.00 : 2384b: 8d 82 3e ff ff ff lea -0xc2(%rdx),%eax 0.00 : 23851: 45 89 0b mov %r9d,(%r11) 0.00 : 23854: 83 f8 1d cmp $0x1d,%eax 0.00 : 23857: 77 55 ja 238ae <__gconv_transform_utf8_internal+0x81e> 0.00 : 23859: 89 d6 mov %edx,%esi 0.00 : 2385b: bf 02 00 00 00 mov $0x2,%edi 0.00 : 23860: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 23865: 83 e6 1f and $0x1f,%esi 0.00 : 23868: 48 8d 43 01 lea 0x1(%rbx),%rax 0.00 : 2386c: 49 39 c0 cmp %rax,%r8 0.00 : 2386f: 76 1b jbe 2388c <__gconv_transform_utf8_internal+0x7fc> 0.00 : 23871: 48 89 c2 mov %rax,%rdx 0.00 : 23874: 0f b6 02 movzbl (%rdx),%eax 0.00 : 23877: c1 e6 06 shl $0x6,%esi 0.00 : 2387a: 48 83 c2 01 add $0x1,%rdx 0.00 : 2387e: 48 83 e9 01 sub $0x1,%rcx 0.00 : 23882: 83 e0 3f and $0x3f,%eax 0.00 : 23885: 09 c6 or %eax,%esi 0.00 : 23887: 49 39 d0 cmp %rdx,%r8 0.00 : 2388a: 77 e8 ja 23874 <__gconv_transform_utf8_internal+0x7e4> 0.00 : 2388c: 48 8d 0c 49 lea (%rcx,%rcx,2),%rcx 0.00 : 23890: 89 f8 mov %edi,%eax 0.00 : 23892: 41 bd 07 00 00 00 mov $0x7,%r13d 0.00 : 23898: c1 e0 08 shl $0x8,%eax 0.00 : 2389b: 01 c9 add %ecx,%ecx 0.00 : 2389d: 44 09 c8 or %r9d,%eax 0.00 : 238a0: d3 e6 shl %cl,%esi 0.00 : 238a2: 41 89 03 mov %eax,(%r11) 0.00 : 238a5: 41 89 73 04 mov %esi,0x4(%r11) 0.00 : 238a9: e9 49 fc ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 238ae: 89 d0 mov %edx,%eax 0.00 : 238b0: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 238b5: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 238ba: 0f 84 16 04 00 00 je 23cd6 <__gconv_transform_utf8_internal+0xc46> 0.00 : 238c0: 89 d0 mov %edx,%eax 0.00 : 238c2: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 238c7: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 238cc: 0f 84 f0 03 00 00 je 23cc2 <__gconv_transform_utf8_internal+0xc32> 0.00 : 238d2: 89 d0 mov %edx,%eax 0.00 : 238d4: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 238d9: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 238de: 0f 84 8f 05 00 00 je 23e73 <__gconv_transform_utf8_internal+0xde3> 0.00 : 238e4: 89 d6 mov %edx,%esi 0.00 : 238e6: bf 06 00 00 00 mov $0x6,%edi 0.00 : 238eb: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 238f0: 83 e6 01 and $0x1,%esi 0.00 : 238f3: e9 70 ff ff ff jmpq 23868 <__gconv_transform_utf8_internal+0x7d8> 0.00 : 238f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 238ff: 00 0.00 : 23900: c1 e2 06 shl $0x6,%edx 0.00 : 23903: 83 e1 3f and $0x3f,%ecx 0.00 : 23906: 48 83 c7 01 add $0x1,%rdi 0.00 : 2390a: 09 ca or %ecx,%edx 0.00 : 2390c: 48 39 fe cmp %rdi,%rsi 0.00 : 2390f: 76 19 jbe 2392a <__gconv_transform_utf8_internal+0x89a> 0.00 : 23911: 0f b6 0c 3b movzbl (%rbx,%rdi,1),%ecx 0.00 : 23915: 89 c8 mov %ecx,%eax 0.00 : 23917: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 2391c: 83 c0 80 add $0xffffff80,%eax 0.00 : 2391f: 74 df je 23900 <__gconv_transform_utf8_internal+0x870> 0.00 : 23921: 48 39 f7 cmp %rsi,%rdi 0.00 : 23924: 0f 82 b1 04 00 00 jb 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 2392a: 48 83 fe 02 cmp $0x2,%rsi 0.00 : 2392e: 74 10 je 23940 <__gconv_transform_utf8_internal+0x8b0> 0.00 : 23930: 8d 4c b6 fc lea -0x4(%rsi,%rsi,4),%ecx 0.00 : 23934: 89 d0 mov %edx,%eax 0.00 : 23936: d3 e8 shr %cl,%eax 0.00 : 23938: 85 c0 test %eax,%eax 0.00 : 2393a: 0f 84 9b 04 00 00 je 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 23940: 8d 82 00 28 ff ff lea -0xd800(%rdx),%eax 0.00 : 23946: 3d ff 07 00 00 cmp $0x7ff,%eax 0.00 : 2394b: 0f 86 8a 04 00 00 jbe 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 23951: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 23956: 45 31 ed xor %r13d,%r13d 0.00 : 23959: 89 11 mov %edx,(%rcx) 0.00 : 2395b: 49 39 d8 cmp %rbx,%r8 0.00 : 2395e: 0f 84 42 05 00 00 je 23ea6 <__gconv_transform_utf8_internal+0xe16> 0.00 : 23964: 49 63 13 movslq (%r11),%rdx 0.00 : 23967: 4c 89 c0 mov %r8,%rax 0.00 : 2396a: 48 29 d8 sub %rbx,%rax 0.00 : 2396d: 83 e2 07 and $0x7,%edx 0.00 : 23970: 48 39 d0 cmp %rdx,%rax 0.00 : 23973: 0f 8e 0e 05 00 00 jle 23e87 <__gconv_transform_utf8_internal+0xdf7> 0.00 : 23979: 48 29 d0 sub %rdx,%rax 0.00 : 2397c: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 23981: 48 01 02 add %rax,(%rdx) 0.00 : 23984: 41 c7 03 00 00 00 00 movl $0x0,(%r11) 0.00 : 2398b: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 23990: 48 89 6c 24 58 mov %rbp,0x58(%rsp) 0.00 : 23995: 44 8b 49 10 mov 0x10(%rcx),%r9d 0.00 : 23999: e9 dc f7 ff ff jmpq 2317a <__gconv_transform_utf8_internal+0xea> 0.00 : 2399e: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 239a3: 4d 39 f4 cmp %r14,%r12 0.00 : 239a6: 41 ba 04 00 00 00 mov $0x4,%r10d 0.00 : 239ac: 4c 89 32 mov %r14,(%rdx) 0.00 : 239af: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 239b4: 48 8b 5c 24 70 mov 0x70(%rsp),%rbx 0.00 : 239b9: 4c 8b 5c 24 58 mov 0x58(%rsp),%r11 0.00 : 239be: 8b 51 10 mov 0x10(%rcx),%edx 0.00 : 239c1: 0f 84 e9 00 00 00 je 23ab0 <__gconv_transform_utf8_internal+0xa20> 0.00 : 239c7: 48 8b 44 24 58 mov 0x58(%rsp),%rax 0.00 : 239cc: 4c 8b 5c 24 58 mov 0x58(%rsp),%r11 0.00 : 239d1: 41 ba 04 00 00 00 mov $0x4,%r10d 0.00 : 239d7: 48 83 c0 04 add $0x4,%rax 0.00 : 239db: 48 39 c3 cmp %rax,%rbx 0.00 : 239de: 0f 82 90 02 00 00 jb 23c74 <__gconv_transform_utf8_internal+0xbe4> 0.00 : 239e4: 89 d5 mov %edx,%ebp 0.00 : 239e6: 83 e5 02 and $0x2,%ebp 0.00 : 239e9: 41 0f b6 36 movzbl (%r14),%esi 0.00 : 239ed: 4d 8d 4e 01 lea 0x1(%r14),%r9 0.00 : 239f1: 83 fe 7f cmp $0x7f,%esi 0.00 : 239f4: 0f 86 48 01 00 00 jbe 23b42 <__gconv_transform_utf8_internal+0xab2> 0.00 : 239fa: 8d 86 3e ff ff ff lea -0xc2(%rsi),%eax 0.00 : 23a00: 83 f8 1d cmp $0x1d,%eax 0.00 : 23a03: 0f 87 48 01 00 00 ja 23b51 <__gconv_transform_utf8_internal+0xac1> 0.00 : 23a09: 83 e6 1f and $0x1f,%esi 0.00 : 23a0c: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 23a11: 4d 8d 0c 0e lea (%r14,%rcx,1),%r9 0.00 : 23a15: bf 01 00 00 00 mov $0x1,%edi 0.00 : 23a1a: 4d 39 cc cmp %r9,%r12 0.00 : 23a1d: 0f 83 de 00 00 00 jae 23b01 <__gconv_transform_utf8_internal+0xa71> 0.00 : 23a23: 49 8d 4e 01 lea 0x1(%r14),%rcx 0.00 : 23a27: 49 39 cc cmp %rcx,%r12 0.00 : 23a2a: 0f 86 3a 02 00 00 jbe 23c6a <__gconv_transform_utf8_internal+0xbda> 0.00 : 23a30: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 23a35: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23a3a: 83 c0 80 add $0xffffff80,%eax 0.00 : 23a3d: 0f 85 27 02 00 00 jne 23c6a <__gconv_transform_utf8_internal+0xbda> 0.00 : 23a43: 49 8d 56 02 lea 0x2(%r14),%rdx 0.00 : 23a47: eb 18 jmp 23a61 <__gconv_transform_utf8_internal+0x9d1> 0.00 : 23a49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 23a50: 0f b6 02 movzbl (%rdx),%eax 0.00 : 23a53: 48 83 c2 01 add $0x1,%rdx 0.00 : 23a57: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23a5c: 83 c0 80 add $0xffffff80,%eax 0.00 : 23a5f: 75 0c jne 23a6d <__gconv_transform_utf8_internal+0x9dd> 0.00 : 23a61: 48 83 c7 01 add $0x1,%rdi 0.00 : 23a65: 49 39 d4 cmp %rdx,%r12 0.00 : 23a68: 48 89 d1 mov %rdx,%rcx 0.00 : 23a6b: 77 e3 ja 23a50 <__gconv_transform_utf8_internal+0x9c0> 0.00 : 23a6d: 4c 39 e1 cmp %r12,%rcx 0.00 : 23a70: 0f 84 e8 04 00 00 je 23f5e <__gconv_transform_utf8_internal+0xece> 0.00 : 23a76: 4d 85 ff test %r15,%r15 0.00 : 23a79: 0f 84 91 01 00 00 je 23c10 <__gconv_transform_utf8_internal+0xb80> 0.00 : 23a7f: 85 ed test %ebp,%ebp 0.00 : 23a81: 0f 84 89 01 00 00 je 23c10 <__gconv_transform_utf8_internal+0xb80> 0.00 : 23a87: 49 83 07 01 addq $0x1,(%r15) 0.00 : 23a8b: 49 01 fe add %rdi,%r14 0.00 : 23a8e: 41 ba 06 00 00 00 mov $0x6,%r10d 0.00 : 23a94: 4d 39 f4 cmp %r14,%r12 0.00 : 23a97: 0f 84 b9 04 00 00 je 23f56 <__gconv_transform_utf8_internal+0xec6> 0.00 : 23a9d: 49 8d 43 04 lea 0x4(%r11),%rax 0.00 : 23aa1: 48 39 c3 cmp %rax,%rbx 0.00 : 23aa4: 0f 83 3f ff ff ff jae 239e9 <__gconv_transform_utf8_internal+0x959> 0.00 : 23aaa: 41 ba 05 00 00 00 mov $0x5,%r10d 0.00 : 23ab0: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 23ab5: 4c 89 30 mov %r14,(%rax) 0.00 : 23ab8: 4c 39 5c 24 70 cmp %r11,0x70(%rsp) 0.00 : 23abd: 0f 85 b9 01 00 00 jne 23c7c <__gconv_transform_utf8_internal+0xbec> 0.00 : 23ac3: 41 83 fa 05 cmp $0x5,%r10d 0.00 : 23ac7: 0f 85 7e 01 00 00 jne 23c4b <__gconv_transform_utf8_internal+0xbbb> 0.00 : 23acd: 4c 3b 5c 24 58 cmp 0x58(%rsp),%r11 0.00 : 23ad2: 0f 85 ed f8 ff ff jne 233c5 <__gconv_transform_utf8_internal+0x335> 0.00 : 23ad8: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 23add: 83 6a 14 01 subl $0x1,0x14(%rdx) 0.00 : 23ae1: e9 df f8 ff ff jmpq 233c5 <__gconv_transform_utf8_internal+0x335> 0.00 : 23ae6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 23aed: 00 00 00 0.00 : 23af0: c1 e6 06 shl $0x6,%esi 0.00 : 23af3: 83 e2 3f and $0x3f,%edx 0.00 : 23af6: 48 83 c7 01 add $0x1,%rdi 0.00 : 23afa: 09 d6 or %edx,%esi 0.00 : 23afc: 48 39 f9 cmp %rdi,%rcx 0.00 : 23aff: 76 1a jbe 23b1b <__gconv_transform_utf8_internal+0xa8b> 0.00 : 23b01: 41 0f b6 14 3e movzbl (%r14,%rdi,1),%edx 0.00 : 23b06: 89 d0 mov %edx,%eax 0.00 : 23b08: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23b0d: 83 c0 80 add $0xffffff80,%eax 0.00 : 23b10: 74 de je 23af0 <__gconv_transform_utf8_internal+0xa60> 0.00 : 23b12: 48 39 f9 cmp %rdi,%rcx 0.00 : 23b15: 0f 87 5b ff ff ff ja 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23b1b: 48 83 f9 02 cmp $0x2,%rcx 0.00 : 23b1f: 74 10 je 23b31 <__gconv_transform_utf8_internal+0xaa1> 0.00 : 23b21: 8d 4c 89 fc lea -0x4(%rcx,%rcx,4),%ecx 0.00 : 23b25: 89 f0 mov %esi,%eax 0.00 : 23b27: d3 e8 shr %cl,%eax 0.00 : 23b29: 85 c0 test %eax,%eax 0.00 : 23b2b: 0f 84 45 ff ff ff je 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23b31: 8d 86 00 28 ff ff lea -0xd800(%rsi),%eax 0.00 : 23b37: 3d ff 07 00 00 cmp $0x7ff,%eax 0.00 : 23b3c: 0f 86 34 ff ff ff jbe 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23b42: 41 89 33 mov %esi,(%r11) 0.00 : 23b45: 4d 89 ce mov %r9,%r14 0.00 : 23b48: 49 83 c3 04 add $0x4,%r11 0.00 : 23b4c: e9 43 ff ff ff jmpq 23a94 <__gconv_transform_utf8_internal+0xa04> 0.00 : 23b51: 89 f0 mov %esi,%eax 0.00 : 23b53: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 23b58: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 23b5d: 0f 84 a0 00 00 00 je 23c03 <__gconv_transform_utf8_internal+0xb73> 0.00 : 23b63: 89 f0 mov %esi,%eax 0.00 : 23b65: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 23b6a: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 23b6f: 0f 84 81 00 00 00 je 23bf6 <__gconv_transform_utf8_internal+0xb66> 0.00 : 23b75: 89 f0 mov %esi,%eax 0.00 : 23b77: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 23b7c: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 23b81: 74 66 je 23be9 <__gconv_transform_utf8_internal+0xb59> 0.00 : 23b83: 89 f0 mov %esi,%eax 0.00 : 23b85: 31 ff xor %edi,%edi 0.00 : 23b87: 25 fe 00 00 00 and $0xfe,%eax 0.00 : 23b8c: 3d fc 00 00 00 cmp $0xfc,%eax 0.00 : 23b91: 0f 84 84 00 00 00 je 23c1b <__gconv_transform_utf8_internal+0xb8b> 0.00 : 23b97: 48 83 c7 01 add $0x1,%rdi 0.00 : 23b9b: 49 8d 04 3e lea (%r14,%rdi,1),%rax 0.00 : 23b9f: 49 39 c4 cmp %rax,%r12 0.00 : 23ba2: 0f 86 ce fe ff ff jbe 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23ba8: 41 0f b6 04 3e movzbl (%r14,%rdi,1),%eax 0.00 : 23bad: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23bb2: 83 c0 80 add $0xffffff80,%eax 0.00 : 23bb5: 0f 85 bb fe ff ff jne 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23bbb: 48 83 ff 04 cmp $0x4,%rdi 0.00 : 23bbf: 76 d6 jbe 23b97 <__gconv_transform_utf8_internal+0xb07> 0.00 : 23bc1: e9 b0 fe ff ff jmpq 23a76 <__gconv_transform_utf8_internal+0x9e6> 0.00 : 23bc6: 89 d0 mov %edx,%eax 0.00 : 23bc8: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 23bcd: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 23bd2: 75 54 jne 23c28 <__gconv_transform_utf8_internal+0xb98> 0.00 : 23bd4: 89 d7 mov %edx,%edi 0.00 : 23bd6: 41 b9 03 00 00 00 mov $0x3,%r9d 0.00 : 23bdc: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 23be1: 83 e7 0f and $0xf,%edi 0.00 : 23be4: e9 b7 f9 ff ff jmpq 235a0 <__gconv_transform_utf8_internal+0x510> 0.00 : 23be9: 83 e6 03 and $0x3,%esi 0.00 : 23bec: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 23bf1: e9 1b fe ff ff jmpq 23a11 <__gconv_transform_utf8_internal+0x981> 0.00 : 23bf6: 83 e6 07 and $0x7,%esi 0.00 : 23bf9: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 23bfe: e9 0e fe ff ff jmpq 23a11 <__gconv_transform_utf8_internal+0x981> 0.00 : 23c03: 83 e6 0f and $0xf,%esi 0.00 : 23c06: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 23c0b: e9 01 fe ff ff jmpq 23a11 <__gconv_transform_utf8_internal+0x981> 0.00 : 23c10: 41 ba 06 00 00 00 mov $0x6,%r10d 0.00 : 23c16: e9 95 fe ff ff jmpq 23ab0 <__gconv_transform_utf8_internal+0xa20> 0.00 : 23c1b: 83 e6 01 and $0x1,%esi 0.00 : 23c1e: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 23c23: e9 e9 fd ff ff jmpq 23a11 <__gconv_transform_utf8_internal+0x981> 0.00 : 23c28: 89 d0 mov %edx,%eax 0.00 : 23c2a: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 23c2f: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 23c34: 75 65 jne 23c9b <__gconv_transform_utf8_internal+0xc0b> 0.00 : 23c36: 89 d7 mov %edx,%edi 0.00 : 23c38: 41 b9 04 00 00 00 mov $0x4,%r9d 0.00 : 23c3e: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 23c43: 83 e7 07 and $0x7,%edi 0.00 : 23c46: e9 55 f9 ff ff jmpq 235a0 <__gconv_transform_utf8_internal+0x510> 0.00 : 23c4b: 48 8d 0d 6e f5 11 00 lea 0x11f56e(%rip),%rcx # 1431c0 <__PRETTY_FUNCTION__.13378> 0.00 : 23c52: 48 8d 35 b1 6a 11 00 lea 0x116ab1(%rip),%rsi # 13a70a 0.00 : 23c59: 48 8d 3d a0 9f 11 00 lea 0x119fa0(%rip),%rdi # 13dc00 <__PRETTY_FUNCTION__.11129+0x227> 0.00 : 23c60: ba e1 02 00 00 mov $0x2e1,%edx 0.00 : 23c65: e8 b6 7c 00 00 callq 2b920 <__assert_fail> 0.00 : 23c6a: bf 01 00 00 00 mov $0x1,%edi 0.00 : 23c6f: e9 f9 fd ff ff jmpq 23a6d <__gconv_transform_utf8_internal+0x9dd> 0.00 : 23c74: 41 b2 05 mov $0x5,%r10b 0.00 : 23c77: e9 34 fe ff ff jmpq 23ab0 <__gconv_transform_utf8_internal+0xa20> 0.00 : 23c7c: 48 8d 0d 3d f5 11 00 lea 0x11f53d(%rip),%rcx # 1431c0 <__PRETTY_FUNCTION__.13378> 0.00 : 23c83: 48 8d 35 80 6a 11 00 lea 0x116a80(%rip),%rsi # 13a70a 0.00 : 23c8a: 48 8d 3d 09 6b 11 00 lea 0x116b09(%rip),%rdi # 13a79a 0.00 : 23c91: ba e0 02 00 00 mov $0x2e0,%edx 0.00 : 23c96: e8 85 7c 00 00 callq 2b920 <__assert_fail> 0.00 : 23c9b: 89 d0 mov %edx,%eax 0.00 : 23c9d: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 23ca2: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 23ca7: 0f 85 bc 02 00 00 jne 23f69 <__gconv_transform_utf8_internal+0xed9> 0.00 : 23cad: 89 d7 mov %edx,%edi 0.00 : 23caf: 41 b9 05 00 00 00 mov $0x5,%r9d 0.00 : 23cb5: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 23cba: 83 e7 03 and $0x3,%edi 0.00 : 23cbd: e9 de f8 ff ff jmpq 235a0 <__gconv_transform_utf8_internal+0x510> 0.00 : 23cc2: 89 d6 mov %edx,%esi 0.00 : 23cc4: bf 04 00 00 00 mov $0x4,%edi 0.00 : 23cc9: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 23cce: 83 e6 07 and $0x7,%esi 0.00 : 23cd1: e9 92 fb ff ff jmpq 23868 <__gconv_transform_utf8_internal+0x7d8> 0.00 : 23cd6: 89 d6 mov %edx,%esi 0.00 : 23cd8: bf 03 00 00 00 mov $0x3,%edi 0.00 : 23cdd: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 23ce2: 83 e6 0f and $0xf,%esi 0.00 : 23ce5: e9 7e fb ff ff jmpq 23868 <__gconv_transform_utf8_internal+0x7d8> 0.00 : 23cea: 48 8d 0d cf f4 11 00 lea 0x11f4cf(%rip),%rcx # 1431c0 <__PRETTY_FUNCTION__.13378> 0.00 : 23cf1: 48 8d 35 12 6a 11 00 lea 0x116a12(%rip),%rsi # 13a70a 0.00 : 23cf8: 48 8d 3d 1f 6a 11 00 lea 0x116a1f(%rip),%rdi # 13a71e 0.00 : 23cff: ba 2f 02 00 00 mov $0x22f,%edx 0.00 : 23d04: e8 17 7c 00 00 callq 2b920 <__assert_fail> 0.00 : 23d09: 48 83 7c 24 28 00 cmpq $0x0,0x28(%rsp) 0.00 : 23d0f: 0f 85 3f 01 00 00 jne 23e54 <__gconv_transform_utf8_internal+0xdc4> 0.00 : 23d15: 48 8b 54 24 38 mov 0x38(%rsp),%rdx 0.00 : 23d1a: 45 31 ed xor %r13d,%r13d 0.00 : 23d1d: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 23d21: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 23d28: f6 42 10 01 testb $0x1,0x10(%rdx) 0.00 : 23d2c: 0f 85 c5 f7 ff ff jne 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23d32: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 23d37: e8 d4 ef 0e 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 23d3c: 8b 8c 24 d8 00 00 00 mov 0xd8(%rsp),%ecx 0.00 : 23d43: 89 1c 24 mov %ebx,(%rsp) 0.00 : 23d46: 45 31 c0 xor %r8d,%r8d 0.00 : 23d49: 4c 8b 4c 24 20 mov 0x20(%rsp),%r9 0.00 : 23d4e: 31 d2 xor %edx,%edx 0.00 : 23d50: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 23d55: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 23d5a: 89 4c 24 08 mov %ecx,0x8(%rsp) 0.00 : 23d5e: 31 c9 xor %ecx,%ecx 0.00 : 23d60: ff 54 24 50 callq *0x50(%rsp) 0.00 : 23d64: 41 89 c5 mov %eax,%r13d 0.00 : 23d67: e9 8b f7 ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23d6c: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 23d71: 48 8b 12 mov (%rdx),%rdx 0.00 : 23d74: 48 89 54 24 58 mov %rdx,0x58(%rsp) 0.00 : 23d79: e9 b1 f3 ff ff jmpq 2312f <__gconv_transform_utf8_internal+0x9f> 0.00 : 23d7e: 89 d0 mov %edx,%eax 0.00 : 23d80: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 23d85: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 23d8a: 0f 84 af 00 00 00 je 23e3f <__gconv_transform_utf8_internal+0xdaf> 0.00 : 23d90: 89 d0 mov %edx,%eax 0.00 : 23d92: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 23d97: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 23d9c: 0f 84 90 00 00 00 je 23e32 <__gconv_transform_utf8_internal+0xda2> 0.00 : 23da2: 89 d0 mov %edx,%eax 0.00 : 23da4: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 23da9: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 23dae: 74 75 je 23e25 <__gconv_transform_utf8_internal+0xd95> 0.00 : 23db0: 89 d0 mov %edx,%eax 0.00 : 23db2: 31 ff xor %edi,%edi 0.00 : 23db4: 25 fe 00 00 00 and $0xfe,%eax 0.00 : 23db9: 3d fc 00 00 00 cmp $0xfc,%eax 0.00 : 23dbe: 74 55 je 23e15 <__gconv_transform_utf8_internal+0xd85> 0.00 : 23dc0: 48 83 c7 01 add $0x1,%rdi 0.00 : 23dc4: 48 8d 04 3b lea (%rbx,%rdi,1),%rax 0.00 : 23dc8: 49 39 c2 cmp %rax,%r10 0.00 : 23dcb: 76 0e jbe 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 23dcd: 0f b6 04 3b movzbl (%rbx,%rdi,1),%eax 0.00 : 23dd1: 25 c0 00 00 00 and $0xc0,%eax 0.00 : 23dd6: 83 c0 80 add $0xffffff80,%eax 0.00 : 23dd9: 74 23 je 23dfe <__gconv_transform_utf8_internal+0xd6e> 0.00 : 23ddb: 4d 85 ff test %r15,%r15 0.00 : 23dde: 74 26 je 23e06 <__gconv_transform_utf8_internal+0xd76> 0.00 : 23de0: 41 83 e1 02 and $0x2,%r9d 0.00 : 23de4: 74 20 je 23e06 <__gconv_transform_utf8_internal+0xd76> 0.00 : 23de6: 49 83 07 01 addq $0x1,(%r15) 0.00 : 23dea: 4c 8d 04 3b lea (%rbx,%rdi,1),%r8 0.00 : 23dee: 41 bd 06 00 00 00 mov $0x6,%r13d 0.00 : 23df4: 48 8b 6c 24 58 mov 0x58(%rsp),%rbp 0.00 : 23df9: e9 5d fb ff ff jmpq 2395b <__gconv_transform_utf8_internal+0x8cb> 0.00 : 23dfe: 48 83 ff 04 cmp $0x4,%rdi 0.00 : 23e02: 76 bc jbe 23dc0 <__gconv_transform_utf8_internal+0xd30> 0.00 : 23e04: eb d5 jmp 23ddb <__gconv_transform_utf8_internal+0xd4b> 0.00 : 23e06: 41 bd 06 00 00 00 mov $0x6,%r13d 0.00 : 23e0c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 23e10: e9 e2 f6 ff ff jmpq 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23e15: 83 e2 01 and $0x1,%edx 0.00 : 23e18: be 06 00 00 00 mov $0x6,%esi 0.00 : 23e1d: 0f 1f 00 nopl (%rax) 0.00 : 23e20: e9 c3 f8 ff ff jmpq 236e8 <__gconv_transform_utf8_internal+0x658> 0.00 : 23e25: 83 e2 03 and $0x3,%edx 0.00 : 23e28: be 05 00 00 00 mov $0x5,%esi 0.00 : 23e2d: e9 b6 f8 ff ff jmpq 236e8 <__gconv_transform_utf8_internal+0x658> 0.00 : 23e32: 83 e2 07 and $0x7,%edx 0.00 : 23e35: be 04 00 00 00 mov $0x4,%esi 0.00 : 23e3a: e9 a9 f8 ff ff jmpq 236e8 <__gconv_transform_utf8_internal+0x658> 0.00 : 23e3f: 83 e2 0f and $0xf,%edx 0.00 : 23e42: be 03 00 00 00 mov $0x3,%esi 0.00 : 23e47: e9 9c f8 ff ff jmpq 236e8 <__gconv_transform_utf8_internal+0x658> 0.00 : 23e4c: 45 89 c5 mov %r8d,%r13d 0.00 : 23e4f: e9 96 f6 ff ff jmpq 234ea <__gconv_transform_utf8_internal+0x45a> 0.00 : 23e54: 48 8d 0d 65 f3 11 00 lea 0x11f365(%rip),%rcx # 1431c0 <__PRETTY_FUNCTION__.13378> 0.00 : 23e5b: 48 8d 35 a8 68 11 00 lea 0x1168a8(%rip),%rsi # 13a70a 0.00 : 23e62: 48 8d 3d b5 68 11 00 lea 0x1168b5(%rip),%rdi # 13a71e 0.00 : 23e69: ba a0 01 00 00 mov $0x1a0,%edx 0.00 : 23e6e: e8 ad 7a 00 00 callq 2b920 <__assert_fail> 0.00 : 23e73: 89 d6 mov %edx,%esi 0.00 : 23e75: bf 05 00 00 00 mov $0x5,%edi 0.00 : 23e7a: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 23e7f: 83 e6 03 and $0x3,%esi 0.00 : 23e82: e9 e1 f9 ff ff jmpq 23868 <__gconv_transform_utf8_internal+0x7d8> 0.00 : 23e87: 48 8d 0d 62 e8 11 00 lea 0x11e862(%rip),%rcx # 1426f0 <__PRETTY_FUNCTION__.13202> 0.00 : 23e8e: 48 8d 35 a4 68 11 00 lea 0x1168a4(%rip),%rsi # 13a739 0.00 : 23e95: 48 8d 3d 14 9d 11 00 lea 0x119d14(%rip),%rdi # 13dbb0 <__PRETTY_FUNCTION__.11129+0x1d7> 0.00 : 23e9c: ba bf 01 00 00 mov $0x1bf,%edx 0.00 : 23ea1: e8 7a 7a 00 00 callq 2b920 <__assert_fail> 0.00 : 23ea6: 45 85 ed test %r13d,%r13d 0.00 : 23ea9: 0f 85 48 f6 ff ff jne 234f7 <__gconv_transform_utf8_internal+0x467> 0.00 : 23eaf: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx 0.00 : 23eb4: 44 8b 49 10 mov 0x10(%rcx),%r9d 0.00 : 23eb8: e9 bd f2 ff ff jmpq 2317a <__gconv_transform_utf8_internal+0xea> 0.00 : 23ebd: 89 d0 mov %edx,%eax 0.00 : 23ebf: 25 f0 00 00 00 and $0xf0,%eax 0.00 : 23ec4: 3d e0 00 00 00 cmp $0xe0,%eax 0.00 : 23ec9: 74 77 je 23f42 <__gconv_transform_utf8_internal+0xeb2> 0.00 : 23ecb: 89 d0 mov %edx,%eax 0.00 : 23ecd: 25 f8 00 00 00 and $0xf8,%eax 0.00 : 23ed2: 3d f0 00 00 00 cmp $0xf0,%eax 0.00 : 23ed7: 74 55 je 23f2e <__gconv_transform_utf8_internal+0xe9e> 0.00 : 23ed9: 89 d0 mov %edx,%eax 0.00 : 23edb: 25 fc 00 00 00 and $0xfc,%eax 0.00 : 23ee0: 3d f8 00 00 00 cmp $0xf8,%eax 0.00 : 23ee5: 74 33 je 23f1a <__gconv_transform_utf8_internal+0xe8a> 0.00 : 23ee7: 89 d6 mov %edx,%esi 0.00 : 23ee9: bf 06 00 00 00 mov $0x6,%edi 0.00 : 23eee: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 23ef3: 83 e6 01 and $0x1,%esi 0.00 : 23ef6: e9 a5 f8 ff ff jmpq 237a0 <__gconv_transform_utf8_internal+0x710> 0.00 : 23efb: 48 8d 0d ee e7 11 00 lea 0x11e7ee(%rip),%rcx # 1426f0 <__PRETTY_FUNCTION__.13202> 0.00 : 23f02: 48 8d 35 30 68 11 00 lea 0x116830(%rip),%rsi # 13a739 0.00 : 23f09: 48 8d 3d 75 68 11 00 lea 0x116875(%rip),%rdi # 13a785 0.00 : 23f10: ba d1 01 00 00 mov $0x1d1,%edx 0.00 : 23f15: e8 06 7a 00 00 callq 2b920 <__assert_fail> 0.00 : 23f1a: 89 d6 mov %edx,%esi 0.00 : 23f1c: bf 05 00 00 00 mov $0x5,%edi 0.00 : 23f21: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 23f26: 83 e6 03 and $0x3,%esi 0.00 : 23f29: e9 72 f8 ff ff jmpq 237a0 <__gconv_transform_utf8_internal+0x710> 0.00 : 23f2e: 89 d6 mov %edx,%esi 0.00 : 23f30: bf 04 00 00 00 mov $0x4,%edi 0.00 : 23f35: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 23f3a: 83 e6 07 and $0x7,%esi 0.00 : 23f3d: e9 5e f8 ff ff jmpq 237a0 <__gconv_transform_utf8_internal+0x710> 0.00 : 23f42: 89 d6 mov %edx,%esi 0.00 : 23f44: bf 03 00 00 00 mov $0x3,%edi 0.00 : 23f49: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 23f4e: 83 e6 0f and $0xf,%esi 0.00 : 23f51: e9 4a f8 ff ff jmpq 237a0 <__gconv_transform_utf8_internal+0x710> 0.00 : 23f56: 4d 89 e6 mov %r12,%r14 0.00 : 23f59: e9 52 fb ff ff jmpq 23ab0 <__gconv_transform_utf8_internal+0xa20> 0.00 : 23f5e: 41 ba 07 00 00 00 mov $0x7,%r10d 0.00 : 23f64: e9 47 fb ff ff jmpq 23ab0 <__gconv_transform_utf8_internal+0xa20> 0.00 : 23f69: 89 d7 mov %edx,%edi 0.00 : 23f6b: 41 b9 06 00 00 00 mov $0x6,%r9d 0.00 : 23f71: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 23f76: 83 e7 01 and $0x1,%edi 0.00 : 23f79: e9 22 f6 ff ff jmpq 235a0 <__gconv_transform_utf8_internal+0x510> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000009100 : 0.00 : 9100: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 9105: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 910a: 4c 89 d3 mov %r10,%rbx 0.00 : 910d: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 9112: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 9117: 48 83 ec 28 sub $0x28,%rsp 0.00 : 911b: 0f b6 4f 04 movzbl 0x4(%rdi),%ecx 0.00 : 911f: 49 89 fc mov %rdi,%r12 0.00 : 9122: 83 e1 0f and $0xf,%ecx 0.00 : 9125: 48 83 7f 08 00 cmpq $0x0,0x8(%rdi) 0.00 : 912a: 75 24 jne 9150 0.00 : 912c: 83 f9 06 cmp $0x6,%ecx 0.00 : 912f: 74 1f je 9150 0.00 : 9131: 45 31 e4 xor %r12d,%r12d 50.00 : 9134: 4c 89 e0 mov %r12,%rax 0.00 : 9137: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 913c: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 50.00 : 9141: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 9146: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 914b: 48 83 c4 28 add $0x28,%rsp 0.00 : 914f: c3 retq 0.00 : 9150: 31 c0 xor %eax,%eax 0.00 : 9152: 66 41 83 7c 24 06 00 cmpw $0x0,0x6(%r12) 0.00 : 9159: 0f 94 c0 sete %al 0.00 : 915c: 85 43 3c test %eax,0x3c(%rbx) 0.00 : 915f: 75 d0 jne 9131 0.00 : 9161: b8 67 04 00 00 mov $0x467,%eax 0.00 : 9166: d3 f8 sar %cl,%eax 0.00 : 9168: a8 01 test $0x1,%al 0.00 : 916a: 74 c5 je 9131 0.00 : 916c: 4c 3b 63 28 cmp 0x28(%rbx),%r12 0.00 : 9170: 0f 85 e2 00 00 00 jne 9258 0.00 : 9176: 48 8b 6b 08 mov 0x8(%rbx),%rbp 0.00 : 917a: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 917e: 48 85 ed test %rbp,%rbp 0.00 : 9181: 48 8b 96 30 03 00 00 mov 0x330(%rsi),%rdx 0.00 : 9188: 74 6e je 91f8 0.00 : 918a: 48 85 d2 test %rdx,%rdx 0.00 : 918d: 0f 84 e3 00 00 00 je 9276 0.00 : 9193: 8b 43 38 mov 0x38(%rbx),%eax 0.00 : 9196: 44 0f b7 2c 42 movzwl (%rdx,%rax,2),%r13d 0.00 : 919b: 4c 89 e8 mov %r13,%rax 0.00 : 919e: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 91a3: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 91a7: 48 c1 e0 03 shl $0x3,%rax 0.00 : 91ab: 48 03 86 e0 02 00 00 add 0x2e0(%rsi),%rax 0.00 : 91b2: 8b 58 08 mov 0x8(%rax),%ebx 0.00 : 91b5: 3b 5d 08 cmp 0x8(%rbp),%ebx 0.00 : 91b8: 75 14 jne 91ce 0.00 : 91ba: 48 8b 38 mov (%rax),%rdi 0.00 : 91bd: 48 8b 75 00 mov 0x0(%rbp),%rsi 0.00 : 91c1: e8 9a d4 00 00 callq 16660 0.00 : 91c6: 85 c0 test %eax,%eax 0.00 : 91c8: 0f 84 66 ff ff ff je 9134 0.00 : 91ce: 8b 45 0c mov 0xc(%rbp),%eax 0.00 : 91d1: 85 c0 test %eax,%eax 0.00 : 91d3: 0f 85 58 ff ff ff jne 9131 0.00 : 91d9: 85 db test %ebx,%ebx 0.00 : 91db: 0f 85 50 ff ff ff jne 9131 0.00 : 91e1: 66 45 85 ed test %r13w,%r13w 0.00 : 91e5: 0f 89 49 ff ff ff jns 9134 0.00 : 91eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 91f0: e9 3c ff ff ff jmpq 9131 0.00 : 91f5: 0f 1f 00 nopl (%rax) 0.00 : 91f8: 48 85 d2 test %rdx,%rdx 0.00 : 91fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 9200: 0f 84 2e ff ff ff je 9134 0.00 : 9206: 8b 43 38 mov 0x38(%rbx),%eax 0.00 : 9209: 0f b7 0c 42 movzwl (%rdx,%rax,2),%ecx 0.00 : 920d: 8b 43 34 mov 0x34(%rbx),%eax 0.00 : 9210: 83 e0 02 and $0x2,%eax 0.00 : 9213: 83 f8 01 cmp $0x1,%eax 0.00 : 9216: 89 ca mov %ecx,%edx 0.00 : 9218: 19 c0 sbb %eax,%eax 0.00 : 921a: 81 e2 ff 7f 00 00 and $0x7fff,%edx 0.00 : 9220: f7 d0 not %eax 0.00 : 9222: 83 c0 03 add $0x3,%eax 0.00 : 9225: 39 d0 cmp %edx,%eax 0.00 : 9227: 0f 8f 07 ff ff ff jg 9134 0.00 : 922d: 66 85 c9 test %cx,%cx 0.00 : 9230: 0f 88 fb fe ff ff js 9131 0.00 : 9236: 8b 53 30 mov 0x30(%rbx),%edx 0.00 : 9239: 8d 42 01 lea 0x1(%rdx),%eax 0.00 : 923c: 85 d2 test %edx,%edx 0.00 : 923e: 89 43 30 mov %eax,0x30(%rbx) 0.00 : 9241: 0f 85 ea fe ff ff jne 9131 0.00 : 9247: 4c 89 23 mov %r12,(%rbx) 0.00 : 924a: 45 31 e4 xor %r12d,%r12d 0.00 : 924d: e9 e2 fe ff ff jmpq 9134 0.00 : 9252: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 9258: 41 8b 3c 24 mov (%r12),%edi 0.00 : 925c: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 9260: 48 03 7b 20 add 0x20(%rbx),%rdi 0.00 : 9264: e8 f7 d3 00 00 callq 16660 0.00 : 9269: 85 c0 test %eax,%eax 0.00 : 926b: 0f 84 05 ff ff ff je 9176 0.00 : 9271: e9 bb fe ff ff jmpq 9131 0.00 : 9276: 48 8b 7d 10 mov 0x10(%rbp),%rdi 0.00 : 927a: 48 85 ff test %rdi,%rdi 0.00 : 927d: 0f 1f 00 nopl (%rax) 0.00 : 9280: 0f 84 ae fe ff ff je 9134 0.00 : 9286: 66 90 xchg %ax,%ax 0.00 : 9288: e8 f3 58 00 00 callq eb80 <_dl_name_match_p> 0.00 : 928d: 85 c0 test %eax,%eax 0.00 : 928f: 90 nop 0.00 : 9290: 0f 84 9e fe ff ff je 9134 0.00 : 9296: 48 8d 0d 36 0a 01 00 lea 0x10a36(%rip),%rcx # 19cd3 <__PRETTY_FUNCTION__.12100> 0.00 : 929d: 48 8d 35 30 09 01 00 lea 0x10930(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : 92a4: 48 8d 3d 65 23 01 00 lea 0x12365(%rip),%rdi # 1b610 <__PRETTY_FUNCTION__.3644+0x129f> 0.00 : 92ab: ba a8 00 00 00 mov $0xa8,%edx 0.00 : 92b0: e8 bb ba 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469620 : 100.00 : 469620: ff 25 52 db 6f 00 jmpq *0x6fdb52(%rip) # b67178 <_GLOBAL_OFFSET_TABLE_+0x178> 0.00 : 469626: 68 2c 00 00 00 pushq $0x2c 0.00 : 46962b: e9 20 fd ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469b70 : 100.00 : 469b70: ff 25 aa d8 6f 00 jmpq *0x6fd8aa(%rip) # b67420 <_GLOBAL_OFFSET_TABLE_+0x420> 0.00 : 469b76: 68 81 00 00 00 pushq $0x81 0.00 : 469b7b: e9 d0 f7 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469de0 : 100.00 : 469de0: ff 25 72 d7 6f 00 jmpq *0x6fd772(%rip) # b67558 <_GLOBAL_OFFSET_TABLE_+0x558> 0.00 : 469de6: 68 a8 00 00 00 pushq $0xa8 0.00 : 469deb: e9 60 f5 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1389 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1388 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046ecc0 : : /* : * heap_freetuple : */ : void : heap_freetuple(HeapTuple htup) : { 0.00 : 46ecc0: 55 push %rbp 0.00 : 46ecc1: 48 89 e5 mov %rsp,%rbp : pfree(htup); : } /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1389 50.00 : 46ecc4: c9 leaveq : * heap_freetuple : */ : void : heap_freetuple(HeapTuple htup) : { : pfree(htup); /home/Computational/mark/src/postgres-andres/src/backend/access/common/heaptuple.c:1388 50.00 : 46ecc5: e9 b6 9e 32 00 jmpq 798b80 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:435 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:435 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000470b10 : : /* : * Create a palloc'd copy of an index tuple. : */ : IndexTuple : CopyIndexTuple(IndexTuple source) : { 0.00 : 470b10: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/common/indextuple.c:435 50.00 : 470b11: 48 89 e5 mov %rsp,%rbp 0.00 : 470b14: 48 89 5d e8 mov %rbx,-0x18(%rbp) 50.00 : 470b18: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 470b1c: 48 89 fb mov %rdi,%rbx 0.00 : 470b1f: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 470b23: 48 83 ec 20 sub $0x20,%rsp : IndexTuple result; : Size size; : : size = IndexTupleSize(source); 0.00 : 470b27: 44 0f b7 67 06 movzwl 0x6(%rdi),%r12d 0.00 : 470b2c: 41 81 e4 ff 1f 00 00 and $0x1fff,%r12d : result = (IndexTuple) palloc(size); 0.00 : 470b33: 4c 89 e7 mov %r12,%rdi 0.00 : 470b36: e8 15 82 32 00 callq 798d50 : memcpy(result, source, size); 0.00 : 470b3b: 4c 89 e2 mov %r12,%rdx : { : IndexTuple result; : Size size; : : size = IndexTupleSize(source); : result = (IndexTuple) palloc(size); 0.00 : 470b3e: 49 89 c5 mov %rax,%r13 : memcpy(result, source, size); 0.00 : 470b41: 48 89 de mov %rbx,%rsi 0.00 : 470b44: 48 89 c7 mov %rax,%rdi 0.00 : 470b47: e8 a4 90 ff ff callq 469bf0 : return result; : } 0.00 : 470b4c: 4c 89 e8 mov %r13,%rax 0.00 : 470b4f: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 470b53: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 470b57: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 470b5b: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:131 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:177 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a2e50 : : * or external storage. : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr(struct varlena * attr) : { 0.00 : 4a2e50: 55 push %rbp 0.00 : 4a2e51: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:131 50.00 : 4a2e54: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 4a2e58: 4c 89 75 f8 mov %r14,-0x8(%rbp) : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2e5c: 48 89 fb mov %rdi,%rbx : * or external storage. : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr(struct varlena * attr) : { 0.00 : 4a2e5f: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 4a2e63: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 4a2e67: 48 83 ec 30 sub $0x30,%rsp : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2e6b: 0f b6 17 movzbl (%rdi),%edx : * or external storage. : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr(struct varlena * attr) : { 0.00 : 4a2e6e: 49 89 fe mov %rdi,%r14 : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2e71: 80 fa 01 cmp $0x1,%dl 0.00 : 4a2e74: 74 2a je 4a2ea0 : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(attr)); : : attr = heap_tuple_untoast_attr(attr); : } : else if (VARATT_IS_COMPRESSED(attr)) 0.00 : 4a2e76: 0f b6 ca movzbl %dl,%ecx 0.00 : 4a2e79: 89 c8 mov %ecx,%eax 0.00 : 4a2e7b: 83 e0 03 and $0x3,%eax 0.00 : 4a2e7e: 83 f8 02 cmp $0x2,%eax 0.00 : 4a2e81: 74 65 je 4a2ee8 : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : pglz_decompress(tmp, VARDATA(attr)); : } : else if (VARATT_IS_SHORT(attr)) 0.00 : 4a2e83: 83 e1 01 and $0x1,%ecx 0.00 : 4a2e86: 75 28 jne 4a2eb0 : memcpy(VARDATA(new_attr), VARDATA_SHORT(attr), data_size); : attr = new_attr; : } : : return attr; : } 0.00 : 4a2e88: 4c 89 f0 mov %r14,%rax 0.00 : 4a2e8b: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 4a2e8f: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 4a2e93: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 4a2e97: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 4a2e9b: c9 leaveq 0.00 : 4a2e9c: c3 retq 0.00 : 4a2e9d: 0f 1f 00 nopl (%rax) : * ---------- : */ : struct varlena * : heap_tuple_untoast_attr(struct varlena * attr) : { : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a2ea0: 0f b6 47 01 movzbl 0x1(%rdi),%eax 0.00 : 4a2ea4: 3c 12 cmp $0x12,%al 0.00 : 4a2ea6: 74 78 je 4a2f20 : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : pglz_decompress(tmp, VARDATA(attr)); : pfree(tmp); : } : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) 0.00 : 4a2ea8: 2c 01 sub $0x1,%al 0.00 : 4a2eaa: 0f 84 c8 00 00 00 je 4a2f78 : else if (VARATT_IS_SHORT(attr)) : { : /* : * This is a short-header varlena --- convert to 4-byte header format : */ : Size data_size = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT; 0.00 : 4a2eb0: d0 ea shr %dl 0.00 : 4a2eb2: 0f b6 da movzbl %dl,%ebx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:177 50.00 : 4a2eb5: 4c 8d 6b ff lea -0x1(%rbx),%r13 : Size new_size = data_size + VARHDRSZ; 0.00 : 4a2eb9: 48 83 c3 03 add $0x3,%rbx : struct varlena *new_attr; : : new_attr = (struct varlena *) palloc(new_size); 0.00 : 4a2ebd: 48 89 df mov %rbx,%rdi : SET_VARSIZE(new_attr, new_size); 0.00 : 4a2ec0: c1 e3 02 shl $0x2,%ebx : */ : Size data_size = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT; : Size new_size = data_size + VARHDRSZ; : struct varlena *new_attr; : : new_attr = (struct varlena *) palloc(new_size); 0.00 : 4a2ec3: e8 88 5e 2f 00 callq 798d50 : SET_VARSIZE(new_attr, new_size); : memcpy(VARDATA(new_attr), VARDATA_SHORT(attr), data_size); 0.00 : 4a2ec8: 49 8d 76 01 lea 0x1(%r14),%rsi 0.00 : 4a2ecc: 48 8d 78 04 lea 0x4(%rax),%rdi : */ : Size data_size = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT; : Size new_size = data_size + VARHDRSZ; : struct varlena *new_attr; : : new_attr = (struct varlena *) palloc(new_size); 0.00 : 4a2ed0: 49 89 c4 mov %rax,%r12 : SET_VARSIZE(new_attr, new_size); 0.00 : 4a2ed3: 89 18 mov %ebx,(%rax) : memcpy(VARDATA(new_attr), VARDATA_SHORT(attr), data_size); 0.00 : 4a2ed5: 4c 89 ea mov %r13,%rdx 0.00 : 4a2ed8: 4d 89 e6 mov %r12,%r14 0.00 : 4a2edb: e8 10 6d fc ff callq 469bf0 0.00 : 4a2ee0: eb a6 jmp 4a2e88 0.00 : 4a2ee2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * This is a compressed value inside of the main tuple : */ : PGLZ_Header *tmp = (PGLZ_Header *) attr; : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2ee8: 8b 7f 04 mov 0x4(%rdi),%edi 0.00 : 4a2eeb: 83 c7 04 add $0x4,%edi 0.00 : 4a2eee: 48 63 ff movslq %edi,%rdi 0.00 : 4a2ef1: e8 5a 5e 2f 00 callq 798d50 0.00 : 4a2ef6: 49 89 c6 mov %rax,%r14 : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2ef9: 8b 43 04 mov 0x4(%rbx),%eax : pglz_decompress(tmp, VARDATA(attr)); 0.00 : 4a2efc: 48 89 df mov %rbx,%rdi 0.00 : 4a2eff: 49 8d 76 04 lea 0x4(%r14),%rsi : * This is a compressed value inside of the main tuple : */ : PGLZ_Header *tmp = (PGLZ_Header *) attr; : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2f03: 8d 04 85 10 00 00 00 lea 0x10(,%rax,4),%eax 0.00 : 4a2f0a: 41 89 06 mov %eax,(%r14) : pglz_decompress(tmp, VARDATA(attr)); 0.00 : 4a2f0d: e8 9e ed 26 00 callq 711cb0 0.00 : 4a2f12: e9 71 ff ff ff jmpq 4a2e88 0.00 : 4a2f17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a2f1e: 00 00 : if (VARATT_IS_EXTERNAL_ONDISK(attr)) : { : /* : * This is an externally stored datum --- fetch it back from there : */ : attr = toast_fetch_datum(attr); 0.00 : 4a2f20: e8 fb e5 ff ff callq 4a1520 0.00 : 4a2f25: 49 89 c6 mov %rax,%r14 : /* If it's compressed, decompress it */ : if (VARATT_IS_COMPRESSED(attr)) 0.00 : 4a2f28: 0f b6 00 movzbl (%rax),%eax 0.00 : 4a2f2b: 83 e0 03 and $0x3,%eax 0.00 : 4a2f2e: 83 f8 02 cmp $0x2,%eax 0.00 : 4a2f31: 0f 85 51 ff ff ff jne 4a2e88 : { : PGLZ_Header *tmp = (PGLZ_Header *) attr; : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2f37: 41 8b 7e 04 mov 0x4(%r14),%edi : */ : attr = toast_fetch_datum(attr); : /* If it's compressed, decompress it */ : if (VARATT_IS_COMPRESSED(attr)) : { : PGLZ_Header *tmp = (PGLZ_Header *) attr; 0.00 : 4a2f3b: 4c 89 f3 mov %r14,%rbx : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2f3e: 83 c7 04 add $0x4,%edi 0.00 : 4a2f41: 48 63 ff movslq %edi,%rdi 0.00 : 4a2f44: e8 07 5e 2f 00 callq 798d50 0.00 : 4a2f49: 49 89 c6 mov %rax,%r14 : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2f4c: 8b 43 04 mov 0x4(%rbx),%eax : pglz_decompress(tmp, VARDATA(attr)); 0.00 : 4a2f4f: 48 89 df mov %rbx,%rdi 0.00 : 4a2f52: 49 8d 76 04 lea 0x4(%r14),%rsi : if (VARATT_IS_COMPRESSED(attr)) : { : PGLZ_Header *tmp = (PGLZ_Header *) attr; : : attr = (struct varlena *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); 0.00 : 4a2f56: 8d 04 85 10 00 00 00 lea 0x10(,%rax,4),%eax 0.00 : 4a2f5d: 41 89 06 mov %eax,(%r14) : pglz_decompress(tmp, VARDATA(attr)); 0.00 : 4a2f60: e8 4b ed 26 00 callq 711cb0 : pfree(tmp); 0.00 : 4a2f65: 48 89 df mov %rbx,%rdi 0.00 : 4a2f68: e8 13 5c 2f 00 callq 798b80 0.00 : 4a2f6d: e9 16 ff ff ff jmpq 4a2e88 0.00 : 4a2f72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) : { : struct varatt_indirect redirect; : : VARATT_EXTERNAL_GET_POINTER(redirect, attr); 0.00 : 4a2f78: 48 8b 7f 02 mov 0x2(%rdi),%rdi 0.00 : 4a2f7c: 48 89 7d d0 mov %rdi,-0x30(%rbp) : attr = (struct varlena *) redirect.pointer; : : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(attr)); : : attr = heap_tuple_untoast_attr(attr); 0.00 : 4a2f80: e8 cb fe ff ff callq 4a2e50 0.00 : 4a2f85: 49 89 c6 mov %rax,%r14 : SET_VARSIZE(attr, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); : pglz_decompress(tmp, VARDATA(attr)); : pfree(tmp); : } : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) 0.00 : 4a2f88: e9 fb fe ff ff jmpq 4a2e88 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:196 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:208 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a44c0 : : * : * If the page doesn't exist in the map file yet, it is extended. : */ : void : visibilitymap_pin(Relation rel, BlockNumber heapBlk, Buffer *buf) : { 0.00 : 4a44c0: 55 push %rbp : BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk); 0.00 : 4a44c1: c1 ee 06 shr $0x6,%esi 0.00 : 4a44c4: b8 21 81 01 02 mov $0x2018121,%eax : * : * If the page doesn't exist in the map file yet, it is extended. : */ : void : visibilitymap_pin(Relation rel, BlockNumber heapBlk, Buffer *buf) : { 0.00 : 4a44c9: 48 89 e5 mov %rsp,%rbp 0.00 : 4a44cc: 4c 89 65 f0 mov %r12,-0x10(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:196 50.00 : 4a44d0: 49 89 d4 mov %rdx,%r12 0.00 : 4a44d3: 48 89 5d e8 mov %rbx,-0x18(%rbp) : BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk); 0.00 : 4a44d7: f7 e6 mul %esi : * : * If the page doesn't exist in the map file yet, it is extended. : */ : void : visibilitymap_pin(Relation rel, BlockNumber heapBlk, Buffer *buf) : { 0.00 : 4a44d9: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 4a44dd: 48 83 ec 20 sub $0x20,%rsp 0.00 : 4a44e1: 49 89 fd mov %rdi,%r13 : BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk); : : /* Reuse the old pinned buffer if possible */ : if (BufferIsValid(*buf)) 0.00 : 4a44e4: 41 8b 3c 24 mov (%r12),%edi : * If the page doesn't exist in the map file yet, it is extended. : */ : void : visibilitymap_pin(Relation rel, BlockNumber heapBlk, Buffer *buf) : { : BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk); 0.00 : 4a44e8: 89 d3 mov %edx,%ebx 0.00 : 4a44ea: c1 eb 03 shr $0x3,%ebx : : /* Reuse the old pinned buffer if possible */ : if (BufferIsValid(*buf)) 0.00 : 4a44ed: 85 ff test %edi,%edi 0.00 : 4a44ef: 74 12 je 4a4503 : { : if (BufferGetBlockNumber(*buf) == mapBlock) 0.00 : 4a44f1: e8 3a fb 1c 00 callq 674030 0.00 : 4a44f6: 39 d8 cmp %ebx,%eax 0.00 : 4a44f8: 74 1c je 4a4516 : return; : : ReleaseBuffer(*buf); 0.00 : 4a44fa: 41 8b 3c 24 mov (%r12),%edi 0.00 : 4a44fe: e8 5d 09 1d 00 callq 674e60 : } : *buf = vm_readbuf(rel, mapBlock, true); 0.00 : 4a4503: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4a4508: 89 de mov %ebx,%esi 0.00 : 4a450a: 4c 89 ef mov %r13,%rdi 0.00 : 4a450d: e8 2e f9 ff ff callq 4a3e40 0.00 : 4a4512: 41 89 04 24 mov %eax,(%r12) : } 0.00 : 4a4516: 48 8b 5d e8 mov -0x18(%rbp),%rbx /home/Computational/mark/src/postgres-andres/src/backend/access/heap/visibilitymap.c:208 50.00 : 4a451a: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 4a451e: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 4a4522: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:265 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:271 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5e70 : : PG_RETURN_INT32(-1); : } : : static int : btoidfastcmp(Datum x, Datum y, SortSupport ssup) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:265 50.00 : 4a5e70: 55 push %rbp : Oid a = DatumGetObjectId(x); : Oid b = DatumGetObjectId(y); : : if (a > b) 0.00 : 4a5e71: 39 f7 cmp %esi,%edi 0.00 : 4a5e73: b8 01 00 00 00 mov $0x1,%eax : PG_RETURN_INT32(-1); : } : : static int : btoidfastcmp(Datum x, Datum y, SortSupport ssup) : { 0.00 : 4a5e78: 48 89 e5 mov %rsp,%rbp : Oid a = DatumGetObjectId(x); : Oid b = DatumGetObjectId(y); : : if (a > b) 0.00 : 4a5e7b: 77 09 ja 4a5e86 : return 1; : else if (a == b) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:271 50.00 : 4a5e7d: 0f 94 c0 sete %al 0.00 : 4a5e80: 0f b6 c0 movzbl %al,%eax 0.00 : 4a5e83: 83 e8 01 sub $0x1,%eax : return 0; : else : return -1; : } 0.00 : 4a5e86: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:494 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:503 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a8ad0 <_bt_checkpage>: : /* : * _bt_checkpage() -- Verify that a freshly-read page looks sane. : */ : void : _bt_checkpage(Relation rel, Buffer buf) : { 0.00 : 4a8ad0: 55 push %rbp 0.00 : 4a8ad1: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:494 50.00 : 4a8ad4: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 4a8ad8: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 4a8adc: 89 f3 mov %esi,%ebx 0.00 : 4a8ade: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 4a8ae2: 48 83 ec 20 sub $0x20,%rsp : Page page = BufferGetPage(buf); 0.00 : 4a8ae6: 85 f6 test %esi,%esi : /* : * _bt_checkpage() -- Verify that a freshly-read page looks sane. : */ : void : _bt_checkpage(Relation rel, Buffer buf) : { 0.00 : 4a8ae8: 49 89 fd mov %rdi,%r13 : Page page = BufferGetPage(buf); 0.00 : 4a8aeb: 78 3b js 4a8b28 <_bt_checkpage+0x58> 0.00 : 4a8aed: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 4a8af0: 48 63 d0 movslq %eax,%rdx 0.00 : 4a8af3: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4a8af7: 48 03 15 fa 6f 71 00 add 0x716ffa(%rip),%rdx # bbfaf8 : * ReadBuffer verifies that every newly-read page passes : * PageHeaderIsValid, which means it either contains a reasonably sane : * page header or is all-zero. We have to defend against the all-zero : * case, however. : */ : if (PageIsNew(page)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:503 50.00 : 4a8afe: 66 83 7a 0e 00 cmpw $0x0,0xe(%rdx) 0.00 : 4a8b03: 74 36 je 4a8b3b <_bt_checkpage+0x6b> : errhint("Please REINDEX it."))); : : /* : * Additionally check that the special area looks sane. : */ : if (PageGetSpecialSize(page) != MAXALIGN(sizeof(BTPageOpaqueData))) 0.00 : 4a8b05: 0f b7 42 12 movzwl 0x12(%rdx),%eax 0.00 : 4a8b09: 30 c0 xor %al,%al 0.00 : 4a8b0b: 66 2b 42 10 sub 0x10(%rdx),%ax 0.00 : 4a8b0f: 66 83 f8 10 cmp $0x10,%ax 0.00 : 4a8b13: 75 4b jne 4a8b60 <_bt_checkpage+0x90> : (errcode(ERRCODE_INDEX_CORRUPTED), : errmsg("index \"%s\" contains corrupted page at block %u", : RelationGetRelationName(rel), : BufferGetBlockNumber(buf)), : errhint("Please REINDEX it."))); : } 0.00 : 4a8b15: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 4a8b19: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 4a8b1d: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 4a8b21: c9 leaveq 0.00 : 4a8b22: c3 retq 0.00 : 4a8b23: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * _bt_checkpage() -- Verify that a freshly-read page looks sane. : */ : void : _bt_checkpage(Relation rel, Buffer buf) : { : Page page = BufferGetPage(buf); 0.00 : 4a8b28: 89 f0 mov %esi,%eax 0.00 : 4a8b2a: 48 8b 15 e7 45 6d 00 mov 0x6d45e7(%rip),%rdx # b7d118 0.00 : 4a8b31: f7 d0 not %eax 0.00 : 4a8b33: 48 98 cltq 0.00 : 4a8b35: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4a8b39: eb c3 jmp 4a8afe <_bt_checkpage+0x2e> : * PageHeaderIsValid, which means it either contains a reasonably sane : * page header or is all-zero. We have to defend against the all-zero : * case, however. : */ : if (PageIsNew(page)) : ereport(ERROR, 0.00 : 4a8b3b: 45 31 c0 xor %r8d,%r8d 0.00 : 4a8b3e: b9 04 47 7b 00 mov $0x7b4704,%ecx 0.00 : 4a8b43: ba fd 01 00 00 mov $0x1fd,%edx 0.00 : 4a8b48: be 22 43 7b 00 mov $0x7b4322,%esi 0.00 : 4a8b4d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a8b52: e8 69 1f 2d 00 callq 77aac0 0.00 : 4a8b57: 84 c0 test %al,%al 0.00 : 4a8b59: 75 69 jne 4a8bc4 <_bt_checkpage+0xf4> : : /* : * Additionally check that the special area looks sane. : */ : if (PageGetSpecialSize(page) != MAXALIGN(sizeof(BTPageOpaqueData))) : ereport(ERROR, 0.00 : 4a8b5b: e8 70 09 fc ff callq 4694d0 0.00 : 4a8b60: 45 31 c0 xor %r8d,%r8d 0.00 : 4a8b63: b9 04 47 7b 00 mov $0x7b4704,%ecx 0.00 : 4a8b68: ba 08 02 00 00 mov $0x208,%edx 0.00 : 4a8b6d: be 22 43 7b 00 mov $0x7b4322,%esi 0.00 : 4a8b72: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4a8b77: e8 44 1f 2d 00 callq 77aac0 0.00 : 4a8b7c: 84 c0 test %al,%al 0.00 : 4a8b7e: 74 db je 4a8b5b <_bt_checkpage+0x8b> 0.00 : 4a8b80: bf 12 15 7b 00 mov $0x7b1512,%edi 0.00 : 4a8b85: 31 c0 xor %eax,%eax 0.00 : 4a8b87: e8 14 31 2d 00 callq 77bca0 0.00 : 4a8b8c: 89 df mov %ebx,%edi 0.00 : 4a8b8e: 41 89 c4 mov %eax,%r12d 0.00 : 4a8b91: e8 9a b4 1c 00 callq 674030 0.00 : 4a8b96: 49 8b 75 30 mov 0x30(%r13),%rsi 0.00 : 4a8b9a: 89 c2 mov %eax,%edx 0.00 : 4a8b9c: bf 38 17 7b 00 mov $0x7b1738,%edi 0.00 : 4a8ba1: 31 c0 xor %eax,%eax 0.00 : 4a8ba3: e8 f8 3c 2d 00 callq 77c8a0 0.00 : 4a8ba8: bf 28 0a 00 02 mov $0x2000a28,%edi 0.00 : 4a8bad: 89 c3 mov %eax,%ebx 0.00 : 4a8baf: e8 9c 41 2d 00 callq 77cd50 0.00 : 4a8bb4: 44 89 e2 mov %r12d,%edx 0.00 : 4a8bb7: 89 c7 mov %eax,%edi 0.00 : 4a8bb9: 89 de mov %ebx,%esi 0.00 : 4a8bbb: 31 c0 xor %eax,%eax 0.00 : 4a8bbd: e8 1e 1a 2d 00 callq 77a5e0 0.00 : 4a8bc2: eb 97 jmp 4a8b5b <_bt_checkpage+0x8b> : * PageHeaderIsValid, which means it either contains a reasonably sane : * page header or is all-zero. We have to defend against the all-zero : * case, however. : */ : if (PageIsNew(page)) : ereport(ERROR, 0.00 : 4a8bc4: bf 12 15 7b 00 mov $0x7b1512,%edi 0.00 : 4a8bc9: 31 c0 xor %eax,%eax 0.00 : 4a8bcb: e8 d0 30 2d 00 callq 77bca0 0.00 : 4a8bd0: 89 df mov %ebx,%edi 0.00 : 4a8bd2: 41 89 c4 mov %eax,%r12d 0.00 : 4a8bd5: e8 56 b4 1c 00 callq 674030 0.00 : 4a8bda: 49 8b 75 30 mov 0x30(%r13),%rsi 0.00 : 4a8bde: 89 c2 mov %eax,%edx 0.00 : 4a8be0: bf 00 17 7b 00 mov $0x7b1700,%edi 0.00 : 4a8be5: eb ba jmp 4a8ba1 <_bt_checkpage+0xd1> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ae420 <_bt_checkkeys>: : */ : IndexTuple : _bt_checkkeys(IndexScanDesc scan, : Page page, OffsetNumber offnum, : ScanDirection dir, bool *continuescan) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1375 50.00 : 4ae420: 55 push %rbp 0.00 : 4ae421: 48 89 e5 mov %rsp,%rbp 0.00 : 4ae424: 41 57 push %r15 0.00 : 4ae426: 41 56 push %r14 0.00 : 4ae428: 41 55 push %r13 0.00 : 4ae42a: 41 54 push %r12 0.00 : 4ae42c: 53 push %rbx 0.00 : 4ae42d: 48 83 ec 18 sub $0x18,%rsp 0.00 : 4ae431: 4c 89 45 c0 mov %r8,-0x40(%rbp) : BTScanOpaque so; : int keysz; : int ikey; : ScanKey key; : : *continuescan = true; /* default assumption */ 0.00 : 4ae435: 48 8b 45 c0 mov -0x40(%rbp),%rax : */ : IndexTuple : _bt_checkkeys(IndexScanDesc scan, : Page page, OffsetNumber offnum, : ScanDirection dir, bool *continuescan) : { 0.00 : 4ae439: 89 4d cc mov %ecx,-0x34(%rbp) : ItemId iid = PageGetItemId(page, offnum); 0.00 : 4ae43c: 0f b7 ca movzwl %dx,%ecx 0.00 : 4ae43f: 4c 8d 41 ff lea -0x1(%rcx),%r8 : BTScanOpaque so; : int keysz; : int ikey; : ScanKey key; : : *continuescan = true; /* default assumption */ 0.00 : 4ae443: c6 00 01 movb $0x1,(%rax) : * not bother examining the tuple's index keys, but just return : * immediately with continuescan = true to proceed to the next tuple. : * However, if this is the last tuple on the page, we should check the : * index keys to prevent uselessly advancing to the next page. : */ : if (scan->ignore_killed_tuples && ItemIdIsDead(iid)) 0.00 : 4ae446: 80 7f 32 00 cmpb $0x0,0x32(%rdi) 0.00 : 4ae44a: 74 14 je 4ae460 <_bt_checkkeys+0x40> 0.00 : 4ae44c: 8b 44 8e 14 mov 0x14(%rsi,%rcx,4),%eax 0.00 : 4ae450: 25 00 80 01 00 and $0x18000,%eax 0.00 : 4ae455: 3d 00 80 01 00 cmp $0x18000,%eax 0.00 : 4ae45a: 0f 84 85 03 00 00 je 4ae7e5 <_bt_checkkeys+0x3c5> : } : else : { : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : : if (offnum > P_FIRSTDATAKEY(opaque)) 0.00 : 4ae460: c6 45 d3 01 movb $0x1,-0x2d(%rbp) : tuple_alive = false; : } : else : tuple_alive = true; : : tuple = (IndexTuple) PageGetItem(page, iid); 0.00 : 4ae464: 42 0f b7 44 86 18 movzwl 0x18(%rsi,%r8,4),%eax 0.00 : 4ae46a: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 4ae46f: 4c 8d 2c 06 lea (%rsi,%rax,1),%r13 : : tupdesc = RelationGetDescr(scan->indexRelation); 0.00 : 4ae473: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 4ae477: 4c 8b 78 38 mov 0x38(%rax),%r15 : so = (BTScanOpaque) scan->opaque; 0.00 : 4ae47b: 48 8b 47 38 mov 0x38(%rdi),%rax : keysz = so->numberOfKeys; 0.00 : 4ae47f: 8b 50 04 mov 0x4(%rax),%edx : : for (key = so->keyData, ikey = 0; ikey < keysz; key++, ikey++) 0.00 : 4ae482: 85 d2 test %edx,%edx : : tuple = (IndexTuple) PageGetItem(page, iid); : : tupdesc = RelationGetDescr(scan->indexRelation); : so = (BTScanOpaque) scan->opaque; : keysz = so->numberOfKeys; 0.00 : 4ae484: 89 55 d4 mov %edx,-0x2c(%rbp) : : for (key = so->keyData, ikey = 0; ikey < keysz; key++, ikey++) 0.00 : 4ae487: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 4ae48b: 0f 8e df 01 00 00 jle 4ae670 <_bt_checkkeys+0x250> 0.00 : 4ae491: 45 31 f6 xor %r14d,%r14d 0.00 : 4ae494: eb 34 jmp 4ae4ca <_bt_checkkeys+0xaa> 0.00 : 4ae496: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ae49d: 00 00 00 : &isNull); : : if (key->sk_flags & SK_ISNULL) : { : /* Handle IS NULL/NOT NULL tests */ : if (key->sk_flags & SK_SEARCHNULL) 0.00 : 4ae4a0: 40 f6 c7 40 test $0x40,%dil 0.00 : 4ae4a4: 0f 84 56 01 00 00 je 4ae600 <_bt_checkkeys+0x1e0> : { : if (isNull) 0.00 : 4ae4aa: 84 c9 test %cl,%cl 0.00 : 4ae4ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4ae4b0: 0f 84 52 01 00 00 je 4ae608 <_bt_checkkeys+0x1e8> : : tupdesc = RelationGetDescr(scan->indexRelation); : so = (BTScanOpaque) scan->opaque; : keysz = so->numberOfKeys; : : for (key = so->keyData, ikey = 0; ikey < keysz; key++, ikey++) 0.00 : 4ae4b6: 41 83 c6 01 add $0x1,%r14d 0.00 : 4ae4ba: 44 39 75 d4 cmp %r14d,-0x2c(%rbp) 0.00 : 4ae4be: 66 90 xchg %ax,%ax 0.00 : 4ae4c0: 0f 8e aa 01 00 00 jle 4ae670 <_bt_checkkeys+0x250> 0.00 : 4ae4c6: 48 83 c3 48 add $0x48,%rbx : Datum datum; : bool isNull; : Datum test; : : /* row-comparison keys need special processing */ : if (key->sk_flags & SK_ROW_HEADER) 0.00 : 4ae4ca: 8b 3b mov (%rbx),%edi 0.00 : 4ae4cc: 40 f6 c7 04 test $0x4,%dil 0.00 : 4ae4d0: 0f 85 aa 01 00 00 jne 4ae680 <_bt_checkkeys+0x260> : if (_bt_check_rowcompare(key, tuple, tupdesc, dir, continuescan)) : continue; : return NULL; : } : : datum = index_getattr(tuple, 0.00 : 4ae4d6: 66 41 83 7d 06 00 cmpw $0x0,0x6(%r13) 0.00 : 4ae4dc: 0f 88 c6 00 00 00 js 4ae5a8 <_bt_checkkeys+0x188> 0.00 : 4ae4e2: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx 0.00 : 4ae4e6: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 4ae4ea: 48 0f bf d1 movswq %cx,%rdx 0.00 : 4ae4ee: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 4ae4f3: 8b 42 54 mov 0x54(%rdx),%eax 0.00 : 4ae4f6: 85 c0 test %eax,%eax 0.00 : 4ae4f8: 0f 88 32 01 00 00 js 4ae630 <_bt_checkkeys+0x210> 0.00 : 4ae4fe: 80 7a 5c 00 cmpb $0x0,0x5c(%rdx) 0.00 : 4ae502: 0f 84 e8 00 00 00 je 4ae5f0 <_bt_checkkeys+0x1d0> /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtutils.c:1440 50.00 : 4ae508: 0f b7 52 4c movzwl 0x4c(%rdx),%edx 0.00 : 4ae50c: 66 83 fa 08 cmp $0x8,%dx 0.00 : 4ae510: 0f 84 2a 01 00 00 je 4ae640 <_bt_checkkeys+0x220> 0.00 : 4ae516: 66 83 fa 04 cmp $0x4,%dx 0.00 : 4ae51a: 0f 84 30 01 00 00 je 4ae650 <_bt_checkkeys+0x230> 0.00 : 4ae520: 66 83 fa 02 cmp $0x2,%dx 0.00 : 4ae524: 0f 84 36 01 00 00 je 4ae660 <_bt_checkkeys+0x240> 0.00 : 4ae52a: 48 98 cltq 0.00 : 4ae52c: 31 c9 xor %ecx,%ecx 0.00 : 4ae52e: 41 0f b6 54 05 08 movzbl 0x8(%r13,%rax,1),%edx 0.00 : 4ae534: 0f 1f 40 00 nopl 0x0(%rax) : key->sk_attno, : tupdesc, : &isNull); : : if (key->sk_flags & SK_ISNULL) 0.00 : 4ae538: 40 f6 c7 01 test $0x1,%dil 0.00 : 4ae53c: 0f 85 5e ff ff ff jne 4ae4a0 <_bt_checkkeys+0x80> : * In any case, this indextuple doesn't match the qual. : */ : return NULL; : } : : if (isNull) 0.00 : 4ae542: 84 c9 test %cl,%cl 0.00 : 4ae544: 0f 85 ec 02 00 00 jne 4ae836 <_bt_checkkeys+0x416> : * In any case, this indextuple doesn't match the qual. : */ : return NULL; : } : : test = FunctionCall2Coll(&key->sk_func, key->sk_collation, 0.00 : 4ae54a: 48 8b 4b 40 mov 0x40(%rbx),%rcx 0.00 : 4ae54e: 8b 73 0c mov 0xc(%rbx),%esi 0.00 : 4ae551: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 4ae555: e8 d6 fa 2c 00 callq 77e030 : datum, key->sk_argument); : : if (!DatumGetBool(test)) 0.00 : 4ae55a: 84 c0 test %al,%al 0.00 : 4ae55c: 0f 85 54 ff ff ff jne 4ae4b6 <_bt_checkkeys+0x96> : * Note: because we stop the scan as soon as any required equality : * qual fails, it is critical that equality quals be used for the : * initial positioning in _bt_first() when they are available. See : * comments in _bt_first(). : */ : if ((key->sk_flags & SK_BT_REQFWD) && 0.00 : 4ae562: 8b 03 mov (%rbx),%eax 0.00 : 4ae564: a9 00 00 01 00 test $0x10000,%eax 0.00 : 4ae569: 74 0b je 4ae576 <_bt_checkkeys+0x156> 0.00 : 4ae56b: 83 7d cc 01 cmpl $0x1,-0x34(%rbp) 0.00 : 4ae56f: 90 nop 0.00 : 4ae570: 0f 84 e0 01 00 00 je 4ae756 <_bt_checkkeys+0x336> : ScanDirectionIsForward(dir)) : *continuescan = false; : else if ((key->sk_flags & SK_BT_REQBKWD) && 0.00 : 4ae576: a9 00 00 02 00 test $0x20000,%eax 0.00 : 4ae57b: 74 13 je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae57d: 83 7d cc ff cmpl $0xffffffff,-0x34(%rbp) 0.00 : 4ae581: 0f 84 a0 02 00 00 je 4ae827 <_bt_checkkeys+0x407> 0.00 : 4ae587: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae58e: 00 00 : return NULL; : } : } : : /* Check for failure due to it being a killed tuple. */ : if (!tuple_alive) 0.00 : 4ae590: 45 31 ed xor %r13d,%r13d : return NULL; : : /* If we get here, the tuple passes all index quals. */ : return tuple; : } 0.00 : 4ae593: 48 83 c4 18 add $0x18,%rsp 0.00 : 4ae597: 4c 89 e8 mov %r13,%rax 0.00 : 4ae59a: 5b pop %rbx 0.00 : 4ae59b: 41 5c pop %r12 0.00 : 4ae59d: 41 5d pop %r13 0.00 : 4ae59f: 41 5e pop %r14 0.00 : 4ae5a1: 41 5f pop %r15 0.00 : 4ae5a3: c9 leaveq 0.00 : 4ae5a4: c3 retq 0.00 : 4ae5a5: 0f 1f 00 nopl (%rax) : if (_bt_check_rowcompare(key, tuple, tupdesc, dir, continuescan)) : continue; : return NULL; : } : : datum = index_getattr(tuple, 0.00 : 4ae5a8: 0f bf 73 04 movswl 0x4(%rbx),%esi 0.00 : 4ae5ac: 31 d2 xor %edx,%edx 0.00 : 4ae5ae: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 4ae5b1: 89 c8 mov %ecx,%eax 0.00 : 4ae5b3: 83 e1 07 and $0x7,%ecx 0.00 : 4ae5b6: c1 f8 03 sar $0x3,%eax 0.00 : 4ae5b9: 48 98 cltq 0.00 : 4ae5bb: 41 0f be 44 05 08 movsbl 0x8(%r13,%rax,1),%eax 0.00 : 4ae5c1: d3 f8 sar %cl,%eax 0.00 : 4ae5c3: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4ae5c8: a8 01 test $0x1,%al 0.00 : 4ae5ca: 0f 84 68 ff ff ff je 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae5d0: 4c 89 fa mov %r15,%rdx 0.00 : 4ae5d3: 4c 89 ef mov %r13,%rdi 0.00 : 4ae5d6: e8 85 25 fc ff callq 470b60 0.00 : 4ae5db: 8b 3b mov (%rbx),%edi 0.00 : 4ae5dd: 48 89 c2 mov %rax,%rdx 0.00 : 4ae5e0: 31 c9 xor %ecx,%ecx 0.00 : 4ae5e2: e9 51 ff ff ff jmpq 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae5e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae5ee: 00 00 0.00 : 4ae5f0: 48 98 cltq 0.00 : 4ae5f2: 31 c9 xor %ecx,%ecx 0.00 : 4ae5f4: 49 8d 54 05 08 lea 0x8(%r13,%rax,1),%rdx 0.00 : 4ae5f9: e9 3a ff ff ff jmpq 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae5fe: 66 90 xchg %ax,%ax : continue; /* tuple satisfies this qual */ : } : else : { : Assert(key->sk_flags & SK_SEARCHNOTNULL); : if (!isNull) 0.00 : 4ae600: 84 c9 test %cl,%cl 0.00 : 4ae602: 0f 84 ae fe ff ff je 4ae4b6 <_bt_checkkeys+0x96> : /* : * Tuple fails this qual. If it's a required qual for the current : * scan direction, then we can conclude no further tuples will : * pass, either. : */ : if ((key->sk_flags & SK_BT_REQFWD) && 0.00 : 4ae608: f7 c7 00 00 01 00 test $0x10000,%edi 0.00 : 4ae60e: 74 0a je 4ae61a <_bt_checkkeys+0x1fa> 0.00 : 4ae610: 83 7d cc 01 cmpl $0x1,-0x34(%rbp) 0.00 : 4ae614: 0f 84 3c 01 00 00 je 4ae756 <_bt_checkkeys+0x336> : ScanDirectionIsForward(dir)) : *continuescan = false; : else if ((key->sk_flags & SK_BT_REQBKWD) && 0.00 : 4ae61a: 81 e7 00 00 02 00 and $0x20000,%edi 0.00 : 4ae620: 0f 84 6a ff ff ff je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae626: 66 90 xchg %ax,%ax 0.00 : 4ae628: e9 50 ff ff ff jmpq 4ae57d <_bt_checkkeys+0x15d> 0.00 : 4ae62d: 0f 1f 00 nopl (%rax) : if (_bt_check_rowcompare(key, tuple, tupdesc, dir, continuescan)) : continue; : return NULL; : } : : datum = index_getattr(tuple, 0.00 : 4ae630: 0f bf f1 movswl %cx,%esi 0.00 : 4ae633: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ae638: eb 96 jmp 4ae5d0 <_bt_checkkeys+0x1b0> 0.00 : 4ae63a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae640: 48 98 cltq 0.00 : 4ae642: 31 c9 xor %ecx,%ecx 0.00 : 4ae644: 49 8b 54 05 08 mov 0x8(%r13,%rax,1),%rdx 0.00 : 4ae649: e9 ea fe ff ff jmpq 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae64e: 66 90 xchg %ax,%ax 0.00 : 4ae650: 48 98 cltq 0.00 : 4ae652: 31 c9 xor %ecx,%ecx 0.00 : 4ae654: 41 8b 54 05 08 mov 0x8(%r13,%rax,1),%edx 0.00 : 4ae659: e9 da fe ff ff jmpq 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae65e: 66 90 xchg %ax,%ax 0.00 : 4ae660: 48 98 cltq 0.00 : 4ae662: 31 c9 xor %ecx,%ecx 0.00 : 4ae664: 41 0f b7 54 05 08 movzwl 0x8(%r13,%rax,1),%edx 0.00 : 4ae66a: e9 c9 fe ff ff jmpq 4ae538 <_bt_checkkeys+0x118> 0.00 : 4ae66f: 90 nop : return NULL; : } : } : : /* Check for failure due to it being a killed tuple. */ : if (!tuple_alive) 0.00 : 4ae670: 80 7d d3 00 cmpb $0x0,-0x2d(%rbp) 0.00 : 4ae674: 0f 85 19 ff ff ff jne 4ae593 <_bt_checkkeys+0x173> 0.00 : 4ae67a: e9 11 ff ff ff jmpq 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae67f: 90 nop : */ : static bool : _bt_check_rowcompare(ScanKey skey, IndexTuple tuple, TupleDesc tupdesc, : ScanDirection dir, bool *continuescan) : { : ScanKey subkey = (ScanKey) DatumGetPointer(skey->sk_argument); 0.00 : 4ae680: 4c 8b 63 40 mov 0x40(%rbx),%r12 0.00 : 4ae684: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4ae688: eb 7b jmp 4ae705 <_bt_checkkeys+0x2e5> 0.00 : 4ae68a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Datum datum; : bool isNull; : : Assert(subkey->sk_flags & SK_ROW_MEMBER); : : datum = index_getattr(tuple, 0.00 : 4ae690: 41 0f b7 74 24 04 movzwl 0x4(%r12),%esi 0.00 : 4ae696: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 4ae69a: 48 0f bf d6 movswq %si,%rdx 0.00 : 4ae69e: 48 8b 4c d0 f8 mov -0x8(%rax,%rdx,8),%rcx 0.00 : 4ae6a3: 8b 79 54 mov 0x54(%rcx),%edi 0.00 : 4ae6a6: 85 ff test %edi,%edi 0.00 : 4ae6a8: 0f 88 e2 00 00 00 js 4ae790 <_bt_checkkeys+0x370> 0.00 : 4ae6ae: 80 79 5c 00 cmpb $0x0,0x5c(%rcx) 0.00 : 4ae6b2: 48 63 c7 movslq %edi,%rax 0.00 : 4ae6b5: 49 8d 54 05 08 lea 0x8(%r13,%rax,1),%rdx 0.00 : 4ae6ba: 0f 85 a8 00 00 00 jne 4ae768 <_bt_checkkeys+0x348> : * In any case, this indextuple doesn't match the qual. : */ : return false; : } : : if (subkey->sk_flags & SK_ISNULL) 0.00 : 4ae6c0: 41 f6 04 24 01 testb $0x1,(%r12) 0.00 : 4ae6c5: 0f 85 e2 01 00 00 jne 4ae8ad <_bt_checkkeys+0x48d> : *continuescan = false; : return false; : } : : /* Perform the test --- three-way comparison not bool operator */ : cmpresult = DatumGetInt32(FunctionCall2Coll(&subkey->sk_func, 0.00 : 4ae6cb: 49 8b 4c 24 40 mov 0x40(%r12),%rcx 0.00 : 4ae6d0: 41 8b 74 24 0c mov 0xc(%r12),%esi 0.00 : 4ae6d5: 49 8d 7c 24 10 lea 0x10(%r12),%rdi 0.00 : 4ae6da: e8 51 f9 2c 00 callq 77e030 : subkey->sk_collation, : datum, : subkey->sk_argument)); : : if (subkey->sk_flags & SK_BT_DESC) 0.00 : 4ae6df: 41 8b 0c 24 mov (%r12),%ecx : *continuescan = false; : return false; : } : : /* Perform the test --- three-way comparison not bool operator */ : cmpresult = DatumGetInt32(FunctionCall2Coll(&subkey->sk_func, 0.00 : 4ae6e3: 89 c2 mov %eax,%edx : subkey->sk_collation, : datum, : subkey->sk_argument)); : : if (subkey->sk_flags & SK_BT_DESC) : cmpresult = -cmpresult; 0.00 : 4ae6e5: f7 d8 neg %eax 0.00 : 4ae6e7: f7 c1 00 00 00 01 test $0x1000000,%ecx 0.00 : 4ae6ed: 0f 45 d0 cmovne %eax,%edx : : /* Done comparing if unequal, else advance to next column */ : if (cmpresult != 0) 0.00 : 4ae6f0: 85 d2 test %edx,%edx 0.00 : 4ae6f2: 0f 85 6d 01 00 00 jne 4ae865 <_bt_checkkeys+0x445> : break; : : if (subkey->sk_flags & SK_ROW_END) 0.00 : 4ae6f8: f6 c1 10 test $0x10,%cl 0.00 : 4ae6fb: 0f 85 64 01 00 00 jne 4ae865 <_bt_checkkeys+0x445> : break; : subkey++; 0.00 : 4ae701: 49 83 c4 48 add $0x48,%r12 : Datum datum; : bool isNull; : : Assert(subkey->sk_flags & SK_ROW_MEMBER); : : datum = index_getattr(tuple, 0.00 : 4ae705: 66 41 83 7d 06 00 cmpw $0x0,0x6(%r13) 0.00 : 4ae70b: 79 83 jns 4ae690 <_bt_checkkeys+0x270> 0.00 : 4ae70d: 41 0f bf 74 24 04 movswl 0x4(%r12),%esi 0.00 : 4ae713: 8d 4e ff lea -0x1(%rsi),%ecx 0.00 : 4ae716: 89 c8 mov %ecx,%eax 0.00 : 4ae718: 83 e1 07 and $0x7,%ecx 0.00 : 4ae71b: c1 f8 03 sar $0x3,%eax 0.00 : 4ae71e: 48 98 cltq 0.00 : 4ae720: 41 0f be 44 05 08 movsbl 0x8(%r13,%rax,1),%eax 0.00 : 4ae726: d3 f8 sar %cl,%eax 0.00 : 4ae728: a8 01 test $0x1,%al 0.00 : 4ae72a: 0f 85 80 00 00 00 jne 4ae7b0 <_bt_checkkeys+0x390> : tupdesc, : &isNull); : : if (isNull) : { : if (subkey->sk_flags & SK_BT_NULLS_FIRST) 0.00 : 4ae730: 41 8b 04 24 mov (%r12),%eax 0.00 : 4ae734: a9 00 00 00 02 test $0x2000000,%eax 0.00 : 4ae739: 0f 84 11 02 00 00 je 4ae950 <_bt_checkkeys+0x530> : * of whether the qual is > or <, so long as it's required, : * because it's not possible for any future tuples to pass. On : * a forward scan, however, we must keep going, because we may : * have initially positioned to the start of the index. : */ : if ((subkey->sk_flags & (SK_BT_REQFWD | SK_BT_REQBKWD)) && 0.00 : 4ae73f: a9 00 00 03 00 test $0x30000,%eax 0.00 : 4ae744: 0f 84 46 fe ff ff je 4ae590 <_bt_checkkeys+0x170> : * of whether the qual is > or <, so long as it's required, : * because it's not possible for any future tuples to pass. On : * a forward scan, however, we must keep going, because we may : * have initially positioned to the start of the index. : */ : if ((key->sk_flags & (SK_BT_REQFWD | SK_BT_REQBKWD)) && 0.00 : 4ae74a: 83 7d cc ff cmpl $0xffffffff,-0x34(%rbp) 0.00 : 4ae74e: 66 90 xchg %ax,%ax 0.00 : 4ae750: 0f 85 3a fe ff ff jne 4ae590 <_bt_checkkeys+0x170> : * initial positioning in _bt_first() when they are available. See : * comments in _bt_first(). : */ : if ((key->sk_flags & SK_BT_REQFWD) && : ScanDirectionIsForward(dir)) : *continuescan = false; 0.00 : 4ae756: 48 8b 45 c0 mov -0x40(%rbp),%rax 0.00 : 4ae75a: 45 31 ed xor %r13d,%r13d 0.00 : 4ae75d: c6 00 00 movb $0x0,(%rax) 0.00 : 4ae760: e9 2e fe ff ff jmpq 4ae593 <_bt_checkkeys+0x173> 0.00 : 4ae765: 0f 1f 00 nopl (%rax) : Datum datum; : bool isNull; : : Assert(subkey->sk_flags & SK_ROW_MEMBER); : : datum = index_getattr(tuple, 0.00 : 4ae768: 0f b7 41 4c movzwl 0x4c(%rcx),%eax 0.00 : 4ae76c: 66 83 f8 08 cmp $0x8,%ax 0.00 : 4ae770: 74 56 je 4ae7c8 <_bt_checkkeys+0x3a8> 0.00 : 4ae772: 66 83 f8 04 cmp $0x4,%ax 0.00 : 4ae776: 74 60 je 4ae7d8 <_bt_checkkeys+0x3b8> 0.00 : 4ae778: 66 83 f8 02 cmp $0x2,%ax 0.00 : 4ae77c: 0f 84 d3 00 00 00 je 4ae855 <_bt_checkkeys+0x435> 0.00 : 4ae782: 48 63 c7 movslq %edi,%rax 0.00 : 4ae785: 41 0f b6 54 05 08 movzbl 0x8(%r13,%rax,1),%edx 0.00 : 4ae78b: e9 30 ff ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> 0.00 : 4ae790: 4c 89 fa mov %r15,%rdx 0.00 : 4ae793: 0f bf f6 movswl %si,%esi 0.00 : 4ae796: 4c 89 ef mov %r13,%rdi 0.00 : 4ae799: e8 c2 23 fc ff callq 470b60 0.00 : 4ae79e: 48 89 c2 mov %rax,%rdx 0.00 : 4ae7a1: e9 1a ff ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> 0.00 : 4ae7a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4ae7ad: 00 00 00 0.00 : 4ae7b0: 4c 89 fa mov %r15,%rdx 0.00 : 4ae7b3: 4c 89 ef mov %r13,%rdi 0.00 : 4ae7b6: e8 a5 23 fc ff callq 470b60 0.00 : 4ae7bb: 48 89 c2 mov %rax,%rdx 0.00 : 4ae7be: e9 fd fe ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> 0.00 : 4ae7c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ae7c8: 48 63 c7 movslq %edi,%rax 0.00 : 4ae7cb: 49 8b 54 05 08 mov 0x8(%r13,%rax,1),%rdx 0.00 : 4ae7d0: e9 eb fe ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> 0.00 : 4ae7d5: 0f 1f 00 nopl (%rax) 0.00 : 4ae7d8: 48 63 c7 movslq %edi,%rax 0.00 : 4ae7db: 41 8b 54 05 08 mov 0x8(%r13,%rax,1),%edx 0.00 : 4ae7e0: e9 db fe ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> : * index keys to prevent uselessly advancing to the next page. : */ : if (scan->ignore_killed_tuples && ItemIdIsDead(iid)) : { : /* return immediately if there are more tuples on the page */ : if (ScanDirectionIsForward(dir)) 0.00 : 4ae7e5: 83 7d cc 01 cmpl $0x1,-0x34(%rbp) 0.00 : 4ae7e9: 0f 84 36 01 00 00 je 4ae925 <_bt_checkkeys+0x505> : } : else : { : BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); : : if (offnum > P_FIRSTDATAKEY(opaque)) 0.00 : 4ae7ef: 0f b7 46 10 movzwl 0x10(%rsi),%eax 0.00 : 4ae7f3: 0f b7 d2 movzwl %dx,%edx 0.00 : 4ae7f6: 83 7c 06 04 01 cmpl $0x1,0x4(%rsi,%rax,1) 0.00 : 4ae7fb: 19 c0 sbb %eax,%eax 0.00 : 4ae7fd: 83 c0 02 add $0x2,%eax 0.00 : 4ae800: 39 d0 cmp %edx,%eax 0.00 : 4ae802: 0f 8c 88 fd ff ff jl 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae808: c6 45 d3 00 movb $0x0,-0x2d(%rbp) 0.00 : 4ae80c: e9 53 fc ff ff jmpq 4ae464 <_bt_checkkeys+0x44> : * whether the qual is > or <, so long as it's required, : * because it's not possible for any future tuples to pass. On : * a backward scan, however, we must keep going, because we : * may have initially positioned to the end of the index. : */ : if ((key->sk_flags & (SK_BT_REQFWD | SK_BT_REQBKWD)) && 0.00 : 4ae811: 81 e7 00 00 03 00 and $0x30000,%edi 0.00 : 4ae817: 0f 84 73 fd ff ff je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae81d: 83 7d cc 01 cmpl $0x1,-0x34(%rbp) 0.00 : 4ae821: 0f 85 69 fd ff ff jne 4ae590 <_bt_checkkeys+0x170> : if ((key->sk_flags & SK_BT_REQFWD) && : ScanDirectionIsForward(dir)) : *continuescan = false; : else if ((key->sk_flags & SK_BT_REQBKWD) && : ScanDirectionIsBackward(dir)) : *continuescan = false; 0.00 : 4ae827: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 4ae82b: 45 31 ed xor %r13d,%r13d 0.00 : 4ae82e: c6 02 00 movb $0x0,(%rdx) 0.00 : 4ae831: e9 5d fd ff ff jmpq 4ae593 <_bt_checkkeys+0x173> : return NULL; : } : : if (isNull) : { : if (key->sk_flags & SK_BT_NULLS_FIRST) 0.00 : 4ae836: f7 c7 00 00 00 02 test $0x2000000,%edi 0.00 : 4ae83c: 74 d3 je 4ae811 <_bt_checkkeys+0x3f1> : * of whether the qual is > or <, so long as it's required, : * because it's not possible for any future tuples to pass. On : * a forward scan, however, we must keep going, because we may : * have initially positioned to the start of the index. : */ : if ((key->sk_flags & (SK_BT_REQFWD | SK_BT_REQBKWD)) && 0.00 : 4ae83e: 81 e7 00 00 03 00 and $0x30000,%edi 0.00 : 4ae844: 0f 84 46 fd ff ff je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae84a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ae850: e9 f5 fe ff ff jmpq 4ae74a <_bt_checkkeys+0x32a> : Datum datum; : bool isNull; : : Assert(subkey->sk_flags & SK_ROW_MEMBER); : : datum = index_getattr(tuple, 0.00 : 4ae855: 48 63 c7 movslq %edi,%rax 0.00 : 4ae858: 41 0f b7 54 05 08 movzwl 0x8(%r13,%rax,1),%edx 0.00 : 4ae85e: 66 90 xchg %ax,%ax 0.00 : 4ae860: e9 5b fe ff ff jmpq 4ae6c0 <_bt_checkkeys+0x2a0> : /* : * At this point cmpresult indicates the overall result of the row : * comparison, and subkey points to the deciding column (or the last : * column if the result is "="). : */ : switch (subkey->sk_strategy) 0.00 : 4ae865: 41 0f b7 44 24 06 movzwl 0x6(%r12),%eax 0.00 : 4ae86b: 66 83 f8 02 cmp $0x2,%ax 0.00 : 4ae86f: 90 nop 0.00 : 4ae870: 0f 84 ef 00 00 00 je 4ae965 <_bt_checkkeys+0x545> 0.00 : 4ae876: 77 56 ja 4ae8ce <_bt_checkkeys+0x4ae> 0.00 : 4ae878: 66 83 e8 01 sub $0x1,%ax 0.00 : 4ae87c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4ae880: 75 5c jne 4ae8de <_bt_checkkeys+0x4be> : break; : case BTLessEqualStrategyNumber: : result = (cmpresult <= 0); : break; : case BTGreaterEqualStrategyNumber: : result = (cmpresult >= 0); 0.00 : 4ae882: 89 d0 mov %edx,%eax 0.00 : 4ae884: c1 e8 1f shr $0x1f,%eax : (int) subkey->sk_strategy); : result = 0; /* keep compiler quiet */ : break; : } : : if (!result) 0.00 : 4ae887: 84 c0 test %al,%al 0.00 : 4ae889: 0f 85 27 fc ff ff jne 4ae4b6 <_bt_checkkeys+0x96> : * Tuple fails this qual. If it's a required qual for the current : * scan direction, then we can conclude no further tuples will pass, : * either. Note we have to look at the deciding column, not : * necessarily the first or last column of the row condition. : */ : if ((subkey->sk_flags & SK_BT_REQFWD) && 0.00 : 4ae88f: f7 c1 00 00 01 00 test $0x10000,%ecx 0.00 : 4ae895: 75 77 jne 4ae90e <_bt_checkkeys+0x4ee> : ScanDirectionIsForward(dir)) : *continuescan = false; : else if ((subkey->sk_flags & SK_BT_REQBKWD) && 0.00 : 4ae897: 81 e1 00 00 02 00 and $0x20000,%ecx 0.00 : 4ae89d: 0f 84 ed fc ff ff je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae8a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ae8a8: e9 d0 fc ff ff jmpq 4ae57d <_bt_checkkeys+0x15d> : * But it can never match. If all the earlier row comparison : * columns are required for the scan direction, we can stop the : * scan, because there can't be another tuple that will succeed. : */ : if (subkey != (ScanKey) DatumGetPointer(skey->sk_argument)) : subkey--; 0.00 : 4ae8ad: 4c 3b 63 40 cmp 0x40(%rbx),%r12 0.00 : 4ae8b1: 49 8d 44 24 b8 lea -0x48(%r12),%rax 0.00 : 4ae8b6: 4c 0f 45 e0 cmovne %rax,%r12 : if ((subkey->sk_flags & SK_BT_REQFWD) && 0.00 : 4ae8ba: 41 8b 04 24 mov (%r12),%eax 0.00 : 4ae8be: a9 00 00 01 00 test $0x10000,%eax 0.00 : 4ae8c3: 0f 84 ad fc ff ff je 4ae576 <_bt_checkkeys+0x156> 0.00 : 4ae8c9: e9 9d fc ff ff jmpq 4ae56b <_bt_checkkeys+0x14b> : /* : * At this point cmpresult indicates the overall result of the row : * comparison, and subkey points to the deciding column (or the last : * column if the result is "="). : */ : switch (subkey->sk_strategy) 0.00 : 4ae8ce: 66 83 f8 04 cmp $0x4,%ax 0.00 : 4ae8d2: 74 45 je 4ae919 <_bt_checkkeys+0x4f9> 0.00 : 4ae8d4: 66 83 f8 05 cmp $0x5,%ax 0.00 : 4ae8d8: 0f 84 91 00 00 00 je 4ae96f <_bt_checkkeys+0x54f> : break; : case BTGreaterStrategyNumber: : result = (cmpresult > 0); : break; : default: : elog(ERROR, "unrecognized RowCompareType: %d", 0.00 : 4ae8de: ba 20 4b 7b 00 mov $0x7b4b20,%edx 0.00 : 4ae8e3: be 99 06 00 00 mov $0x699,%esi 0.00 : 4ae8e8: bf 17 49 7b 00 mov $0x7b4917,%edi 0.00 : 4ae8ed: e8 2e cb 2c 00 callq 77b420 0.00 : 4ae8f2: 41 0f b7 54 24 06 movzwl 0x6(%r12),%edx 0.00 : 4ae8f8: be 98 49 7b 00 mov $0x7b4998,%esi 0.00 : 4ae8fd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ae902: 31 c0 xor %eax,%eax 0.00 : 4ae904: e8 27 c9 2c 00 callq 77b230 0.00 : 4ae909: e8 c2 ab fb ff callq 4694d0 : * Tuple fails this qual. If it's a required qual for the current : * scan direction, then we can conclude no further tuples will pass, : * either. Note we have to look at the deciding column, not : * necessarily the first or last column of the row condition. : */ : if ((subkey->sk_flags & SK_BT_REQFWD) && 0.00 : 4ae90e: 83 7d cc 01 cmpl $0x1,-0x34(%rbp) 0.00 : 4ae912: 75 83 jne 4ae897 <_bt_checkkeys+0x477> 0.00 : 4ae914: e9 3d fe ff ff jmpq 4ae756 <_bt_checkkeys+0x336> : break; : case BTLessEqualStrategyNumber: : result = (cmpresult <= 0); : break; : case BTGreaterEqualStrategyNumber: : result = (cmpresult >= 0); 0.00 : 4ae919: f7 d2 not %edx 0.00 : 4ae91b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ae920: e9 5d ff ff ff jmpq 4ae882 <_bt_checkkeys+0x462> : if (scan->ignore_killed_tuples && ItemIdIsDead(iid)) : { : /* return immediately if there are more tuples on the page */ : if (ScanDirectionIsForward(dir)) : { : if (offnum < PageGetMaxOffsetNumber(page)) 0.00 : 4ae925: 0f b7 46 0c movzwl 0xc(%rsi),%eax 0.00 : 4ae929: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4ae92d: 0f 1f 00 nopl (%rax) 0.00 : 4ae930: 0f 86 d2 fe ff ff jbe 4ae808 <_bt_checkkeys+0x3e8> 0.00 : 4ae936: 0f b7 c0 movzwl %ax,%eax 0.00 : 4ae939: 48 83 e8 18 sub $0x18,%rax 0.00 : 4ae93d: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4ae941: 48 39 c1 cmp %rax,%rcx 0.00 : 4ae944: 0f 82 46 fc ff ff jb 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae94a: e9 b9 fe ff ff jmpq 4ae808 <_bt_checkkeys+0x3e8> 0.00 : 4ae94f: 90 nop : * whether the qual is > or <, so long as it's required, : * because it's not possible for any future tuples to pass. On : * a backward scan, however, we must keep going, because we : * may have initially positioned to the end of the index. : */ : if ((subkey->sk_flags & (SK_BT_REQFWD | SK_BT_REQBKWD)) && 0.00 : 4ae950: a9 00 00 03 00 test $0x30000,%eax 0.00 : 4ae955: 0f 84 35 fc ff ff je 4ae590 <_bt_checkkeys+0x170> 0.00 : 4ae95b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ae960: e9 b8 fe ff ff jmpq 4ae81d <_bt_checkkeys+0x3fd> : /* EQ and NE cases aren't allowed here */ : case BTLessStrategyNumber: : result = (cmpresult < 0); : break; : case BTLessEqualStrategyNumber: : result = (cmpresult <= 0); 0.00 : 4ae965: 85 d2 test %edx,%edx 0.00 : 4ae967: 0f 9e c0 setle %al 0.00 : 4ae96a: e9 18 ff ff ff jmpq 4ae887 <_bt_checkkeys+0x467> : break; : case BTGreaterEqualStrategyNumber: : result = (cmpresult >= 0); : break; : case BTGreaterStrategyNumber: : result = (cmpresult > 0); 0.00 : 4ae96f: 85 d2 test %edx,%edx 0.00 : 4ae971: 0f 9f c0 setg %al 0.00 : 4ae974: e9 0e ff ff ff jmpq 4ae887 <_bt_checkkeys+0x467> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3066 50.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3129 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d1740 : : * take down the system on failure). They will promote to PANIC if we are : * in a critical section. : */ : int : XLogFileInit(XLogSegNo logsegno, bool *use_existent, bool use_lock) : { 0.00 : 4d1740: 55 push %rbp : XLogSegNo installed_segno; : int max_advance; : int fd; : int nbytes; : : XLogFilePath(path, ThisTimeLineID, logsegno); 0.00 : 4d1741: 44 0f b6 cf movzbl %dil,%r9d 0.00 : 4d1745: 49 89 f8 mov %rdi,%r8 0.00 : 4d1748: 49 c1 e8 08 shr $0x8,%r8 0.00 : 4d174c: 31 c0 xor %eax,%eax : * take down the system on failure). They will promote to PANIC if we are : * in a critical section. : */ : int : XLogFileInit(XLogSegNo logsegno, bool *use_existent, bool use_lock) : { 0.00 : 4d174e: 48 89 e5 mov %rsp,%rbp 0.00 : 4d1751: 41 57 push %r15 0.00 : 4d1753: 49 89 ff mov %rdi,%r15 : XLogSegNo installed_segno; : int max_advance; : int fd; : int nbytes; : : XLogFilePath(path, ThisTimeLineID, logsegno); 0.00 : 4d1756: 48 8d bd c0 fb ff ff lea -0x440(%rbp),%rdi : * take down the system on failure). They will promote to PANIC if we are : * in a critical section. : */ : int : XLogFileInit(XLogSegNo logsegno, bool *use_existent, bool use_lock) : { 0.00 : 4d175d: 41 56 push %r14 0.00 : 4d175f: 41 55 push %r13 0.00 : 4d1761: 41 54 push %r12 0.00 : 4d1763: 53 push %rbx 0.00 : 4d1764: 48 81 ec 38 28 00 00 sub $0x2838,%rsp : XLogSegNo installed_segno; : int max_advance; : int fd; : int nbytes; : : XLogFilePath(path, ThisTimeLineID, logsegno); 0.00 : 4d176b: 8b 0d f3 79 6a 00 mov 0x6a79f3(%rip),%ecx # b79164 : * take down the system on failure). They will promote to PANIC if we are : * in a critical section. : */ : int : XLogFileInit(XLogSegNo logsegno, bool *use_existent, bool use_lock) : { 0.00 : 4d1771: 48 89 b5 a8 d7 ff ff mov %rsi,-0x2858(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3066 50.00 : 4d1778: 88 95 a7 d7 ff ff mov %dl,-0x2859(%rbp) : XLogSegNo installed_segno; : int max_advance; : int fd; : int nbytes; : : XLogFilePath(path, ThisTimeLineID, logsegno); 0.00 : 4d177e: be 00 04 00 00 mov $0x400,%esi 0.00 : 4d1783: ba fa 95 7b 00 mov $0x7b95fa,%edx 0.00 : 4d1788: e8 c3 7c f9 ff callq 469450 : : /* : * Try to use existent file (checkpoint maker may have created it already) : */ : if (*use_existent) 0.00 : 4d178d: 48 8b 85 a8 d7 ff ff mov -0x2858(%rbp),%rax 0.00 : 4d1794: 80 38 00 cmpb $0x0,(%rax) 0.00 : 4d1797: 74 4f je 4d17e8 : { : fd = BasicOpenFile(path, O_RDWR | PG_BINARY | get_sync_bit(sync_method), 0.00 : 4d1799: 8b 3d ad 66 69 00 mov 0x6966ad(%rip),%edi # b67e4c 0.00 : 4d179f: e8 fc ca ff ff callq 4ce2a0 0.00 : 4d17a4: 48 8d bd c0 fb ff ff lea -0x440(%rbp),%rdi 0.00 : 4d17ab: 89 c6 mov %eax,%esi 0.00 : 4d17ad: ba 80 01 00 00 mov $0x180,%edx 0.00 : 4d17b2: 83 ce 02 or $0x2,%esi 0.00 : 4d17b5: e8 a6 7f 1a 00 callq 679760 : S_IRUSR | S_IWUSR); : if (fd < 0) 0.00 : 4d17ba: 85 c0 test %eax,%eax : /* : * Try to use existent file (checkpoint maker may have created it already) : */ : if (*use_existent) : { : fd = BasicOpenFile(path, O_RDWR | PG_BINARY | get_sync_bit(sync_method), 0.00 : 4d17bc: 89 c3 mov %eax,%ebx : S_IRUSR | S_IWUSR); : if (fd < 0) 0.00 : 4d17be: 78 14 js 4d17d4 : errmsg("could not open file \"%s\": %m", path))); : : elog(DEBUG2, "done creating and filling new WAL file"); : : return fd; : } 0.00 : 4d17c0: 48 81 c4 38 28 00 00 add $0x2838,%rsp 0.00 : 4d17c7: 89 d8 mov %ebx,%eax 0.00 : 4d17c9: 5b pop %rbx 0.00 : 4d17ca: 41 5c pop %r12 0.00 : 4d17cc: 41 5d pop %r13 0.00 : 4d17ce: 41 5e pop %r14 0.00 : 4d17d0: 41 5f pop %r15 0.00 : 4d17d2: c9 leaveq 0.00 : 4d17d3: c3 retq : { : fd = BasicOpenFile(path, O_RDWR | PG_BINARY | get_sync_bit(sync_method), : S_IRUSR | S_IWUSR); : if (fd < 0) : { : if (errno != ENOENT) 0.00 : 4d17d4: e8 e7 84 f9 ff callq 469cc0 <__errno_location@plt> 0.00 : 4d17d9: 83 38 02 cmpl $0x2,(%rax) 0.00 : 4d17dc: 0f 85 e3 02 00 00 jne 4d1ac5 0.00 : 4d17e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Initialize an empty (all zeroes) segment. NOTE: it is possible that : * another process is doing the same thing. If so, we will end up : * pre-creating an extra log segment. That seems OK, and better than : * holding the lock throughout this lengthy process. : */ : elog(DEBUG2, "creating and filling new WAL file"); 0.00 : 4d17e8: ba 0e d6 7b 00 mov $0x7bd60e,%edx 0.00 : 4d17ed: be 1e 0c 00 00 mov $0xc1e,%esi 0.00 : 4d17f2: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d17f7: e8 24 9c 2a 00 callq 77b420 0.00 : 4d17fc: be 88 b2 7b 00 mov $0x7bb288,%esi 0.00 : 4d1801: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 4d1806: 31 c0 xor %eax,%eax 0.00 : 4d1808: e8 23 9a 2a 00 callq 77b230 : : snprintf(tmppath, MAXPGPATH, XLOGDIR "/xlogtemp.%d", (int) getpid()); 0.00 : 4d180d: e8 3e 7f f9 ff callq 469750 0.00 : 4d1812: 48 8d bd c0 f7 ff ff lea -0x840(%rbp),%rdi 0.00 : 4d1819: 89 c1 mov %eax,%ecx 0.00 : 4d181b: ba bd 88 7b 00 mov $0x7b88bd,%edx 0.00 : 4d1820: be 00 04 00 00 mov $0x400,%esi 0.00 : 4d1825: 31 c0 xor %eax,%eax 0.00 : 4d1827: e8 24 7c f9 ff callq 469450 : : unlink(tmppath); 0.00 : 4d182c: 48 8d bd c0 f7 ff ff lea -0x840(%rbp),%rdi 0.00 : 4d1833: e8 78 7e f9 ff callq 4696b0 : : /* do not use get_sync_bit() here --- want to fsync only at end of fill */ : fd = BasicOpenFile(tmppath, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, 0.00 : 4d1838: 48 8d bd c0 f7 ff ff lea -0x840(%rbp),%rdi 0.00 : 4d183f: ba 80 01 00 00 mov $0x180,%edx 0.00 : 4d1844: be c2 00 00 00 mov $0xc2,%esi 0.00 : 4d1849: e8 12 7f 1a 00 callq 679760 : S_IRUSR | S_IWUSR); : if (fd < 0) 0.00 : 4d184e: 85 c0 test %eax,%eax : snprintf(tmppath, MAXPGPATH, XLOGDIR "/xlogtemp.%d", (int) getpid()); : : unlink(tmppath); : : /* do not use get_sync_bit() here --- want to fsync only at end of fill */ : fd = BasicOpenFile(tmppath, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, 0.00 : 4d1850: 41 89 c5 mov %eax,%r13d : S_IRUSR | S_IWUSR); : if (fd < 0) 0.00 : 4d1853: 0f 88 c5 01 00 00 js 4d1a1e : * log file. : * : * Note: ensure the buffer is reasonably well-aligned; this may save a few : * cycles transferring data to the kernel. : */ : zbuffer = (char *) MAXALIGN(zbuffer_raw); 0.00 : 4d1859: 4c 8d b5 b0 d7 ff ff lea -0x2850(%rbp),%r14 : memset(zbuffer, 0, XLOG_BLCKSZ); 0.00 : 4d1860: 31 c0 xor %eax,%eax 0.00 : 4d1862: b9 00 04 00 00 mov $0x400,%ecx : * take down the system on failure). They will promote to PANIC if we are : * in a critical section. : */ : int : XLogFileInit(XLogSegNo logsegno, bool *use_existent, bool use_lock) : { 0.00 : 4d1867: 31 db xor %ebx,%ebx : * : * Note: ensure the buffer is reasonably well-aligned; this may save a few : * cycles transferring data to the kernel. : */ : zbuffer = (char *) MAXALIGN(zbuffer_raw); : memset(zbuffer, 0, XLOG_BLCKSZ); 0.00 : 4d1869: 4c 89 f7 mov %r14,%rdi /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:3129 50.00 : 4d186c: f3 48 ab rep stos %rax,%es:(%rdi) : * take down the system on failure). They will promote to PANIC if we are : * in a critical section. : */ : int : XLogFileInit(XLogSegNo logsegno, bool *use_existent, bool use_lock) : { 0.00 : 4d186f: e8 4c 84 f9 ff callq 469cc0 <__errno_location@plt> 0.00 : 4d1874: 49 89 c4 mov %rax,%r12 0.00 : 4d1877: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4d187e: 00 00 : */ : zbuffer = (char *) MAXALIGN(zbuffer_raw); : memset(zbuffer, 0, XLOG_BLCKSZ); : for (nbytes = 0; nbytes < XLogSegSize; nbytes += XLOG_BLCKSZ) : { : errno = 0; 0.00 : 4d1880: 41 c7 04 24 00 00 00 movl $0x0,(%r12) 0.00 : 4d1887: 00 : if ((int) write(fd, zbuffer, XLOG_BLCKSZ) != (int) XLOG_BLCKSZ) 0.00 : 4d1888: ba 00 20 00 00 mov $0x2000,%edx 0.00 : 4d188d: 4c 89 f6 mov %r14,%rsi 0.00 : 4d1890: 44 89 ef mov %r13d,%edi 0.00 : 4d1893: e8 f8 87 f9 ff callq 46a090 0.00 : 4d1898: 3d 00 20 00 00 cmp $0x2000,%eax 0.00 : 4d189d: 0f 85 cc 00 00 00 jne 4d196f : * Note: ensure the buffer is reasonably well-aligned; this may save a few : * cycles transferring data to the kernel. : */ : zbuffer = (char *) MAXALIGN(zbuffer_raw); : memset(zbuffer, 0, XLOG_BLCKSZ); : for (nbytes = 0; nbytes < XLogSegSize; nbytes += XLOG_BLCKSZ) 0.00 : 4d18a3: 81 c3 00 20 00 00 add $0x2000,%ebx 0.00 : 4d18a9: 81 fb 00 00 00 01 cmp $0x1000000,%ebx 0.00 : 4d18af: 75 cf jne 4d1880 : (errcode_for_file_access(), : errmsg("could not write to file \"%s\": %m", tmppath))); : } : } : : if (pg_fsync(fd) != 0) 0.00 : 4d18b1: 44 89 ef mov %r13d,%edi 0.00 : 4d18b4: e8 b7 8e 1a 00 callq 67a770 0.00 : 4d18b9: 85 c0 test %eax,%eax 0.00 : 4d18bb: 0f 85 8f 01 00 00 jne 4d1a50 : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not fsync file \"%s\": %m", tmppath))); : } : : if (close(fd)) 0.00 : 4d18c1: 44 89 ef mov %r13d,%edi 0.00 : 4d18c4: e8 b7 7b f9 ff callq 469480 0.00 : 4d18c9: 85 c0 test %eax,%eax 0.00 : 4d18cb: 0f 85 bf 01 00 00 jne 4d1a90 : * pre-existing file. Otherwise, cope with possibility that someone else : * has created the file while we were filling ours: if so, use ours to : * pre-create a future log segment. : */ : installed_segno = logsegno; : max_advance = XLOGfileslop; 0.00 : 4d18d1: 8b 05 69 65 69 00 mov 0x696569(%rip),%eax # b67e40 : * If caller didn't want to use a pre-existing file, get rid of any : * pre-existing file. Otherwise, cope with possibility that someone else : * has created the file while we were filling ours: if so, use ours to : * pre-create a future log segment. : */ : installed_segno = logsegno; 0.00 : 4d18d7: 4c 89 7d c0 mov %r15,-0x40(%rbp) : max_advance = XLOGfileslop; : if (!InstallXLogFileSegment(&installed_segno, tmppath, 0.00 : 4d18db: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : 4d18df: 44 0f be 85 a7 d7 ff movsbl -0x2859(%rbp),%r8d 0.00 : 4d18e6: ff 0.00 : 4d18e7: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 4d18eb: 48 8d b5 c0 f7 ff ff lea -0x840(%rbp),%rsi : * pre-existing file. Otherwise, cope with possibility that someone else : * has created the file while we were filling ours: if so, use ours to : * pre-create a future log segment. : */ : installed_segno = logsegno; : max_advance = XLOGfileslop; 0.00 : 4d18f2: 8d 44 00 01 lea 0x1(%rax,%rax,1),%eax 0.00 : 4d18f6: 89 45 cc mov %eax,-0x34(%rbp) : if (!InstallXLogFileSegment(&installed_segno, tmppath, 0.00 : 4d18f9: 48 8b 85 a8 d7 ff ff mov -0x2858(%rbp),%rax 0.00 : 4d1900: 0f be 10 movsbl (%rax),%edx 0.00 : 4d1903: e8 98 d1 ff ff callq 4ceaa0 0.00 : 4d1908: 84 c0 test %al,%al 0.00 : 4d190a: 0f 84 fd 00 00 00 je 4d1a0d : */ : unlink(tmppath); : } : : /* Set flag to tell caller there was no existent file */ : *use_existent = false; 0.00 : 4d1910: 48 8b 85 a8 d7 ff ff mov -0x2858(%rbp),%rax 0.00 : 4d1917: c6 00 00 movb $0x0,(%rax) : : /* Now open original target segment (might not be file I just made) */ : fd = BasicOpenFile(path, O_RDWR | PG_BINARY | get_sync_bit(sync_method), 0.00 : 4d191a: 8b 3d 2c 65 69 00 mov 0x69652c(%rip),%edi # b67e4c 0.00 : 4d1920: e8 7b c9 ff ff callq 4ce2a0 0.00 : 4d1925: 48 8d bd c0 fb ff ff lea -0x440(%rbp),%rdi 0.00 : 4d192c: 89 c6 mov %eax,%esi 0.00 : 4d192e: ba 80 01 00 00 mov $0x180,%edx 0.00 : 4d1933: 83 ce 02 or $0x2,%esi 0.00 : 4d1936: e8 25 7e 1a 00 callq 679760 : S_IRUSR | S_IWUSR); : if (fd < 0) 0.00 : 4d193b: 85 c0 test %eax,%eax : : /* Set flag to tell caller there was no existent file */ : *use_existent = false; : : /* Now open original target segment (might not be file I just made) */ : fd = BasicOpenFile(path, O_RDWR | PG_BINARY | get_sync_bit(sync_method), 0.00 : 4d193d: 89 c3 mov %eax,%ebx : S_IRUSR | S_IWUSR); : if (fd < 0) 0.00 : 4d193f: 0f 88 81 00 00 00 js 4d19c6 : ereport(ERROR, : (errcode_for_file_access(), : errmsg("could not open file \"%s\": %m", path))); : : elog(DEBUG2, "done creating and filling new WAL file"); 0.00 : 4d1945: ba 0e d6 7b 00 mov $0x7bd60e,%edx 0.00 : 4d194a: be 7f 0c 00 00 mov $0xc7f,%esi 0.00 : 4d194f: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d1954: e8 c7 9a 2a 00 callq 77b420 0.00 : 4d1959: be b0 b2 7b 00 mov $0x7bb2b0,%esi 0.00 : 4d195e: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 4d1963: 31 c0 xor %eax,%eax 0.00 : 4d1965: e8 c6 98 2a 00 callq 77b230 : : return fd; : } 0.00 : 4d196a: e9 51 fe ff ff jmpq 4d17c0 : for (nbytes = 0; nbytes < XLogSegSize; nbytes += XLOG_BLCKSZ) : { : errno = 0; : if ((int) write(fd, zbuffer, XLOG_BLCKSZ) != (int) XLOG_BLCKSZ) : { : int save_errno = errno; 0.00 : 4d196f: 41 8b 1c 24 mov (%r12),%ebx : : /* : * If we fail to make the file, delete it to release disk space : */ : unlink(tmppath); 0.00 : 4d1973: 48 8d bd c0 f7 ff ff lea -0x840(%rbp),%rdi 0.00 : 4d197a: e8 31 7d f9 ff callq 4696b0 : : close(fd); 0.00 : 4d197f: 44 89 ef mov %r13d,%edi 0.00 : 4d1982: e8 f9 7a f9 ff callq 469480 : : /* if write didn't set errno, assume problem is no disk space */ : errno = save_errno ? save_errno : ENOSPC; 0.00 : 4d1987: 85 db test %ebx,%ebx 0.00 : 4d1989: b8 1c 00 00 00 mov $0x1c,%eax : : ereport(ERROR, 0.00 : 4d198e: be d6 f3 7a 00 mov $0x7af3d6,%esi : unlink(tmppath); : : close(fd); : : /* if write didn't set errno, assume problem is no disk space */ : errno = save_errno ? save_errno : ENOSPC; 0.00 : 4d1993: 0f 44 d8 cmove %eax,%ebx : : ereport(ERROR, 0.00 : 4d1996: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4d199b: 45 31 c0 xor %r8d,%r8d : unlink(tmppath); : : close(fd); : : /* if write didn't set errno, assume problem is no disk space */ : errno = save_errno ? save_errno : ENOSPC; 0.00 : 4d199e: 41 89 1c 24 mov %ebx,(%r12) : : ereport(ERROR, 0.00 : 4d19a2: b9 0e d6 7b 00 mov $0x7bd60e,%ecx 0.00 : 4d19a7: ba 4d 0c 00 00 mov $0xc4d,%edx 0.00 : 4d19ac: e8 0f 91 2a 00 callq 77aac0 0.00 : 4d19b1: 84 c0 test %al,%al 0.00 : 4d19b3: 48 8d b5 c0 f7 ff ff lea -0x840(%rbp),%rsi 0.00 : 4d19ba: bf e8 32 7b 00 mov $0x7b32e8,%edi 0.00 : 4d19bf: 75 31 jne 4d19f2 : : /* Now open original target segment (might not be file I just made) */ : fd = BasicOpenFile(path, O_RDWR | PG_BINARY | get_sync_bit(sync_method), : S_IRUSR | S_IWUSR); : if (fd < 0) : ereport(ERROR, 0.00 : 4d19c1: e8 0a 7b f9 ff callq 4694d0 0.00 : 4d19c6: 45 31 c0 xor %r8d,%r8d 0.00 : 4d19c9: b9 0e d6 7b 00 mov $0x7bd60e,%ecx 0.00 : 4d19ce: ba 7d 0c 00 00 mov $0xc7d,%edx 0.00 : 4d19d3: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d19d8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4d19dd: e8 de 90 2a 00 callq 77aac0 0.00 : 4d19e2: 84 c0 test %al,%al 0.00 : 4d19e4: 74 db je 4d19c1 0.00 : 4d19e6: 48 8d b5 c0 fb ff ff lea -0x440(%rbp),%rsi 0.00 : 4d19ed: bf 53 31 7b 00 mov $0x7b3153,%edi 0.00 : 4d19f2: 31 c0 xor %eax,%eax 0.00 : 4d19f4: e8 a7 ae 2a 00 callq 77c8a0 0.00 : 4d19f9: 89 c3 mov %eax,%ebx 0.00 : 4d19fb: e8 f0 b0 2a 00 callq 77caf0 0.00 : 4d1a00: 89 de mov %ebx,%esi 0.00 : 4d1a02: 89 c7 mov %eax,%edi 0.00 : 4d1a04: 31 c0 xor %eax,%eax 0.00 : 4d1a06: e8 d5 8b 2a 00 callq 77a5e0 0.00 : 4d1a0b: eb b4 jmp 4d19c1 : /* : * No need for any more future segments, or InstallXLogFileSegment() : * failed to rename the file into place. If the rename failed, opening : * the file below will fail. : */ : unlink(tmppath); 0.00 : 4d1a0d: 48 8d bd c0 f7 ff ff lea -0x840(%rbp),%rdi 0.00 : 4d1a14: e8 97 7c f9 ff callq 4696b0 0.00 : 4d1a19: e9 f2 fe ff ff jmpq 4d1910 : : /* do not use get_sync_bit() here --- want to fsync only at end of fill */ : fd = BasicOpenFile(tmppath, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, : S_IRUSR | S_IWUSR); : if (fd < 0) : ereport(ERROR, 0.00 : 4d1a1e: 45 31 c0 xor %r8d,%r8d 0.00 : 4d1a21: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d1a26: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4d1a2b: b9 0e d6 7b 00 mov $0x7bd60e,%ecx 0.00 : 4d1a30: ba 2a 0c 00 00 mov $0xc2a,%edx 0.00 : 4d1a35: e8 86 90 2a 00 callq 77aac0 0.00 : 4d1a3a: 84 c0 test %al,%al 0.00 : 4d1a3c: 48 8d b5 c0 f7 ff ff lea -0x840(%rbp),%rsi 0.00 : 4d1a43: bf 78 32 7b 00 mov $0x7b3278,%edi 0.00 : 4d1a48: 0f 84 73 ff ff ff je 4d19c1 0.00 : 4d1a4e: eb a2 jmp 4d19f2 : } : } : : if (pg_fsync(fd) != 0) : { : close(fd); 0.00 : 4d1a50: 44 89 ef mov %r13d,%edi 0.00 : 4d1a53: e8 28 7a f9 ff callq 469480 : ereport(ERROR, 0.00 : 4d1a58: 45 31 c0 xor %r8d,%r8d 0.00 : 4d1a5b: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d1a60: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4d1a65: b9 0e d6 7b 00 mov $0x7bd60e,%ecx 0.00 : 4d1a6a: ba 56 0c 00 00 mov $0xc56,%edx 0.00 : 4d1a6f: e8 4c 90 2a 00 callq 77aac0 0.00 : 4d1a74: 84 c0 test %al,%al 0.00 : 4d1a76: 48 8d b5 c0 f7 ff ff lea -0x840(%rbp),%rsi 0.00 : 4d1a7d: bf 70 31 7b 00 mov $0x7b3170,%edi 0.00 : 4d1a82: 0f 84 39 ff ff ff je 4d19c1 0.00 : 4d1a88: e9 65 ff ff ff jmpq 4d19f2 0.00 : 4d1a8d: 0f 1f 00 nopl (%rax) : (errcode_for_file_access(), : errmsg("could not fsync file \"%s\": %m", tmppath))); : } : : if (close(fd)) : ereport(ERROR, 0.00 : 4d1a90: 45 31 c0 xor %r8d,%r8d 0.00 : 4d1a93: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d1a98: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4d1a9d: b9 0e d6 7b 00 mov $0x7bd60e,%ecx 0.00 : 4d1aa2: ba 5c 0c 00 00 mov $0xc5c,%edx 0.00 : 4d1aa7: e8 14 90 2a 00 callq 77aac0 0.00 : 4d1aac: 84 c0 test %al,%al 0.00 : 4d1aae: 48 8d b5 c0 f7 ff ff lea -0x840(%rbp),%rsi 0.00 : 4d1ab5: bf d1 88 7b 00 mov $0x7b88d1,%edi 0.00 : 4d1aba: 0f 84 01 ff ff ff je 4d19c1 0.00 : 4d1ac0: e9 2d ff ff ff jmpq 4d19f2 : fd = BasicOpenFile(path, O_RDWR | PG_BINARY | get_sync_bit(sync_method), : S_IRUSR | S_IWUSR); : if (fd < 0) : { : if (errno != ENOENT) : ereport(ERROR, 0.00 : 4d1ac5: 45 31 c0 xor %r8d,%r8d 0.00 : 4d1ac8: b9 0e d6 7b 00 mov $0x7bd60e,%ecx 0.00 : 4d1acd: ba 12 0c 00 00 mov $0xc12,%edx 0.00 : 4d1ad2: e9 fc fe ff ff jmpq 4d19d3 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:109 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e2db0 : : * : * Check IsCatalogRelation() for details. : */ : bool : IsCatalogClass(Oid relid, Form_pg_class reltuple) : { 0.00 : 4e2db0: 55 push %rbp 0.00 : 4e2db1: 48 89 e5 mov %rsp,%rbp 0.00 : 4e2db4: 53 push %rbx 0.00 : 4e2db5: 89 fb mov %edi,%ebx 0.00 : 4e2db7: 48 83 ec 08 sub $0x8,%rsp : Oid relnamespace = reltuple->relnamespace; 0.00 : 4e2dbb: 8b 7e 40 mov 0x40(%rsi),%edi : : /* : * Never consider relations outside pg_catalog/pg_toast to be catalog : * relations. : */ : if (!IsSystemNamespace(relnamespace) && !IsToastNamespace(relnamespace)) /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:109 100.00 : 4e2dbe: 83 ff 0b cmp $0xb,%edi 0.00 : 4e2dc1: 74 0b je 4e2dce 0.00 : 4e2dc3: e8 98 ff ff ff callq 4e2d60 0.00 : 4e2dc8: 31 d2 xor %edx,%edx 0.00 : 4e2dca: 84 c0 test %al,%al 0.00 : 4e2dcc: 74 09 je 4e2dd7 : * property (c.f. GetNewObjectId()) and it has the advantage that it works : * correctly even if a user decides to create a relation in the pg_catalog : * namespace. : * ---- : */ : return relid < FirstNormalObjectId; 0.00 : 4e2dce: 81 fb ff 3f 00 00 cmp $0x3fff,%ebx 0.00 : 4e2dd4: 0f 96 c2 setbe %dl : } 0.00 : 4e2dd7: 48 83 c4 08 add $0x8,%rsp 0.00 : 4e2ddb: 89 d0 mov %edx,%eax 0.00 : 4e2ddd: 5b pop %rbx 0.00 : 4e2dde: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2988 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ec980 : : * namespace? : */ : bool : isTempToastNamespace(Oid namespaceId) : { : if (OidIsValid(myTempToastNamespace) && myTempToastNamespace == namespaceId) 0.00 : 4ec980: 8b 15 4a cd 68 00 mov 0x68cd4a(%rip),%edx # b796d0 : * isTempToastNamespace - is the given namespace my temporary-toast-table : * namespace? : */ : bool : isTempToastNamespace(Oid namespaceId) : { /home/Computational/mark/src/postgres-andres/src/backend/catalog/namespace.c:2988 100.00 : 4ec986: 55 push %rbp : if (OidIsValid(myTempToastNamespace) && myTempToastNamespace == namespaceId) 0.00 : 4ec987: 31 c0 xor %eax,%eax : * isTempToastNamespace - is the given namespace my temporary-toast-table : * namespace? : */ : bool : isTempToastNamespace(Oid namespaceId) : { 0.00 : 4ec989: 48 89 e5 mov %rsp,%rbp : if (OidIsValid(myTempToastNamespace) && myTempToastNamespace == namespaceId) 0.00 : 4ec98c: 85 d2 test %edx,%edx 0.00 : 4ec98e: 74 05 je 4ec995 0.00 : 4ec990: 39 fa cmp %edi,%edx 0.00 : 4ec992: 0f 94 c0 sete %al : return true; : return false; : } 0.00 : 4ec995: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:565 50.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:659 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000554af0 : : * : * NB: no data conversion is applied here. : */ : static int : CopyGetData(CopyState cstate, void *databuf, int minread, int maxread) : { /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:565 50.00 : 554af0: 55 push %rbp 0.00 : 554af1: 48 89 e5 mov %rsp,%rbp 0.00 : 554af4: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 554af8: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 554afc: 49 89 fc mov %rdi,%r12 0.00 : 554aff: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 554b03: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 554b07: 41 89 d7 mov %edx,%r15d 0.00 : 554b0a: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 554b0e: 48 83 ec 30 sub $0x30,%rsp 0.00 : 554b12: 48 89 75 d0 mov %rsi,-0x30(%rbp) : int bytesread = 0; : : switch (cstate->copy_dest) 0.00 : 554b16: 8b 07 mov (%rdi),%eax : * : * NB: no data conversion is applied here. : */ : static int : CopyGetData(CopyState cstate, void *databuf, int minread, int maxread) : { 0.00 : 554b18: 41 89 ce mov %ecx,%r14d : int bytesread = 0; : : switch (cstate->copy_dest) 0.00 : 554b1b: 83 f8 01 cmp $0x1,%eax 0.00 : 554b1e: 0f 84 dc 00 00 00 je 554c00 0.00 : 554b24: 73 4a jae 554b70 : { : case COPY_FILE: : bytesread = fread(databuf, 1, maxread, cstate->copy_file); 0.00 : 554b26: 48 8b 4f 08 mov 0x8(%rdi),%rcx 0.00 : 554b2a: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 554b2e: 49 63 d6 movslq %r14d,%rdx 0.00 : 554b31: be 01 00 00 00 mov $0x1,%esi 0.00 : 554b36: e8 55 51 f1 ff callq 469c90 : if (ferror(cstate->copy_file)) 0.00 : 554b3b: 49 8b 7c 24 08 mov 0x8(%r12),%rdi : int bytesread = 0; : : switch (cstate->copy_dest) : { : case COPY_FILE: : bytesread = fread(databuf, 1, maxread, cstate->copy_file); 0.00 : 554b40: 48 89 c3 mov %rax,%rbx : if (ferror(cstate->copy_file)) 0.00 : 554b43: e8 18 4d f1 ff callq 469860 0.00 : 554b48: 85 c0 test %eax,%eax 0.00 : 554b4a: 0f 85 09 02 00 00 jne 554d59 : } : break; : } : : return bytesread; : } 0.00 : 554b50: 89 d8 mov %ebx,%eax 0.00 : 554b52: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 554b56: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 554b5a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 554b5e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 554b62: 4c 8b 7d f8 mov -0x8(%rbp),%r15 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:659 50.00 : 554b66: c9 leaveq 0.00 : 554b67: c3 retq 0.00 : 554b68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 554b6f: 00 : static int : CopyGetData(CopyState cstate, void *databuf, int minread, int maxread) : { : int bytesread = 0; : : switch (cstate->copy_dest) 0.00 : 554b70: 83 f8 02 cmp $0x2,%eax 0.00 : 554b73: 74 0b je 554b80 : } : avail = cstate->fe_msgbuf->len - cstate->fe_msgbuf->cursor; : if (avail > maxread) : avail = maxread; : pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail); : databuf = (void *) ((char *) databuf + avail); 0.00 : 554b75: 31 db xor %ebx,%ebx 0.00 : 554b77: eb d7 jmp 554b50 0.00 : 554b79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : errmsg("unexpected EOF on client connection with an open transaction"))); : } : bytesread = minread; : break; : case COPY_NEW_FE: : while (maxread > 0 && bytesread < minread && !cstate->fe_eof) 0.00 : 554b80: 85 c9 test %ecx,%ecx 0.00 : 554b82: 7e f1 jle 554b75 0.00 : 554b84: 85 d2 test %edx,%edx 0.00 : 554b86: 7e ed jle 554b75 : * without noticing that the command they just : * sent was COPY. : */ : goto readmessage; : default: : ereport(ERROR, 0.00 : 554b88: 31 db xor %ebx,%ebx : errmsg("unexpected EOF on client connection with an open transaction"))); : } : bytesread = minread; : break; : case COPY_NEW_FE: : while (maxread > 0 && bytesread < minread && !cstate->fe_eof) 0.00 : 554b8a: 80 7f 18 00 cmpb $0x0,0x18(%rdi) 0.00 : 554b8e: 66 90 xchg %ax,%ax 0.00 : 554b90: 75 e3 jne 554b75 : { : int avail; : : while (cstate->fe_msgbuf->cursor >= cstate->fe_msgbuf->len) 0.00 : 554b92: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 554b97: 8b 57 10 mov 0x10(%rdi),%edx 0.00 : 554b9a: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 554b9d: 39 c2 cmp %eax,%edx 0.00 : 554b9f: 0f 8c 43 01 00 00 jl 554ce8 : { : /* Try to receive another message */ : int mtype; : : readmessage: : mtype = pq_getbyte(); 0.00 : 554ba5: e8 46 75 08 00 callq 5dc0f0 : if (mtype == EOF) 0.00 : 554baa: 83 f8 ff cmp $0xffffffff,%eax : { : /* Try to receive another message */ : int mtype; : : readmessage: : mtype = pq_getbyte(); 0.00 : 554bad: 41 89 c5 mov %eax,%r13d : if (mtype == EOF) 0.00 : 554bb0: 0f 84 91 01 00 00 je 554d47 : ereport(ERROR, : (errcode(ERRCODE_CONNECTION_FAILURE), : errmsg("unexpected EOF on client connection with an open transaction"))); : if (pq_getmessage(cstate->fe_msgbuf, 0)) 0.00 : 554bb6: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 554bbb: 31 f6 xor %esi,%esi 0.00 : 554bbd: e8 3e 72 08 00 callq 5dbe00 0.00 : 554bc2: 85 c0 test %eax,%eax 0.00 : 554bc4: 0f 85 6b 01 00 00 jne 554d35 : ereport(ERROR, : (errcode(ERRCODE_CONNECTION_FAILURE), : errmsg("unexpected EOF on client connection with an open transaction"))); : switch (mtype) 0.00 : 554bca: 41 8d 45 b8 lea -0x48(%r13),%eax 0.00 : 554bce: 83 f8 1e cmp $0x1e,%eax 0.00 : 554bd1: 76 7d jbe 554c50 : * without noticing that the command they just : * sent was COPY. : */ : goto readmessage; : default: : ereport(ERROR, 0.00 : 554bd3: 45 31 c0 xor %r8d,%r8d 0.00 : 554bd6: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554bdb: ba 83 02 00 00 mov $0x283,%edx 0.00 : 554be0: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 554be5: bf 14 00 00 00 mov $0x14,%edi 0.00 : 554bea: e8 d1 5e 22 00 callq 77aac0 0.00 : 554bef: 84 c0 test %al,%al 0.00 : 554bf1: 0f 85 d9 00 00 00 jne 554cd0 0.00 : 554bf7: e8 d4 48 f1 ff callq 4694d0 0.00 : 554bfc: 0f 1f 40 00 nopl 0x0(%rax) : * because old protocol doesn't have any clear way of separating : * the COPY stream from following data. This is slow, but not any : * slower than the code path was originally, and we don't care : * much anymore about the performance of old protocol. : */ : if (pq_getbytes((char *) databuf, minread)) 0.00 : 554c00: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 554c04: 48 63 f2 movslq %edx,%rsi 0.00 : 554c07: 44 89 fb mov %r15d,%ebx 0.00 : 554c0a: e8 61 71 08 00 callq 5dbd70 0.00 : 554c0f: 85 c0 test %eax,%eax 0.00 : 554c11: 0f 84 39 ff ff ff je 554b50 : { : /* Only a \. terminator is legal EOF in old protocol */ : ereport(ERROR, 0.00 : 554c17: 45 31 c0 xor %r8d,%r8d 0.00 : 554c1a: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554c1f: ba 4f 02 00 00 mov $0x24f,%edx : if (mtype == EOF) : ereport(ERROR, : (errcode(ERRCODE_CONNECTION_FAILURE), : errmsg("unexpected EOF on client connection with an open transaction"))); : if (pq_getmessage(cstate->fe_msgbuf, 0)) : ereport(ERROR, 0.00 : 554c24: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 554c29: bf 14 00 00 00 mov $0x14,%edi 0.00 : 554c2e: e8 8d 5e 22 00 callq 77aac0 0.00 : 554c33: 84 c0 test %al,%al 0.00 : 554c35: 74 c0 je 554bf7 0.00 : 554c37: bf 00 8c 87 00 mov $0x878c00,%edi 0.00 : 554c3c: 31 c0 xor %eax,%eax 0.00 : 554c3e: e8 5d 7c 22 00 callq 77c8a0 0.00 : 554c43: bf 00 02 00 06 mov $0x6000200,%edi 0.00 : 554c48: 89 c3 mov %eax,%ebx 0.00 : 554c4a: eb 58 jmp 554ca4 0.00 : 554c4c: 0f 1f 40 00 nopl 0x0(%rax) : (errcode(ERRCODE_CONNECTION_FAILURE), : errmsg("unexpected EOF on client connection with an open transaction"))); : switch (mtype) 0.00 : 554c50: 89 c0 mov %eax,%eax 0.00 : 554c52: ff 24 c5 60 99 87 00 jmpq *0x879960(,%rax,8) 0.00 : 554c59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : case 'c': /* CopyDone */ : /* COPY IN correctly terminated by frontend */ : cstate->fe_eof = true; : return bytesread; : case 'f': /* CopyFail */ : ereport(ERROR, 0.00 : 554c60: 45 31 c0 xor %r8d,%r8d 0.00 : 554c63: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554c68: ba 73 02 00 00 mov $0x273,%edx 0.00 : 554c6d: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 554c72: bf 14 00 00 00 mov $0x14,%edi 0.00 : 554c77: e8 44 5e 22 00 callq 77aac0 0.00 : 554c7c: 84 c0 test %al,%al 0.00 : 554c7e: 0f 84 73 ff ff ff je 554bf7 0.00 : 554c84: 49 8b 7c 24 10 mov 0x10(%r12),%rdi 0.00 : 554c89: e8 02 83 08 00 callq 5dcf90 0.00 : 554c8e: bf df 88 87 00 mov $0x8788df,%edi 0.00 : 554c93: 48 89 c6 mov %rax,%rsi 0.00 : 554c96: 31 c0 xor %eax,%eax 0.00 : 554c98: e8 03 7c 22 00 callq 77c8a0 0.00 : 554c9d: bf c5 01 04 04 mov $0x40401c5,%edi 0.00 : 554ca2: 89 c3 mov %eax,%ebx : * without noticing that the command they just : * sent was COPY. : */ : goto readmessage; : default: : ereport(ERROR, 0.00 : 554ca4: e8 a7 80 22 00 callq 77cd50 0.00 : 554ca9: 89 de mov %ebx,%esi 0.00 : 554cab: 89 c7 mov %eax,%edi 0.00 : 554cad: 31 c0 xor %eax,%eax 0.00 : 554caf: e8 2c 59 22 00 callq 77a5e0 0.00 : 554cb4: e9 3e ff ff ff jmpq 554bf7 0.00 : 554cb9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : case 'd': /* CopyData */ : break; : case 'c': /* CopyDone */ : /* COPY IN correctly terminated by frontend */ : cstate->fe_eof = true; 0.00 : 554cc0: 41 c6 44 24 18 01 movb $0x1,0x18(%r12) : } : break; : } : : return bytesread; : } 0.00 : 554cc6: e9 85 fe ff ff jmpq 554b50 0.00 : 554ccb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * without noticing that the command they just : * sent was COPY. : */ : goto readmessage; : default: : ereport(ERROR, 0.00 : 554cd0: bf 40 8c 87 00 mov $0x878c40,%edi 0.00 : 554cd5: 44 89 ee mov %r13d,%esi 0.00 : 554cd8: 31 c0 xor %eax,%eax 0.00 : 554cda: e8 c1 7b 22 00 callq 77c8a0 0.00 : 554cdf: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 554ce4: 89 c3 mov %eax,%ebx 0.00 : 554ce6: eb bc jmp 554ca4 : errmsg("unexpected message type 0x%02X during COPY from stdin", : mtype))); : break; : } : } : avail = cstate->fe_msgbuf->len - cstate->fe_msgbuf->cursor; 0.00 : 554ce8: 29 d0 sub %edx,%eax 0.00 : 554cea: 45 89 f5 mov %r14d,%r13d : if (avail > maxread) : avail = maxread; : pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail); 0.00 : 554ced: 48 8b 75 d0 mov -0x30(%rbp),%rsi : errmsg("unexpected message type 0x%02X during COPY from stdin", : mtype))); : break; : } : } : avail = cstate->fe_msgbuf->len - cstate->fe_msgbuf->cursor; 0.00 : 554cf1: 44 39 f0 cmp %r14d,%eax 0.00 : 554cf4: 44 0f 4e e8 cmovle %eax,%r13d : if (avail > maxread) : avail = maxread; : pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail); 0.00 : 554cf8: 44 89 ea mov %r13d,%edx : databuf = (void *) ((char *) databuf + avail); : maxread -= avail; 0.00 : 554cfb: 45 29 ee sub %r13d,%r14d : bytesread += avail; 0.00 : 554cfe: 44 01 eb add %r13d,%ebx : } : } : avail = cstate->fe_msgbuf->len - cstate->fe_msgbuf->cursor; : if (avail > maxread) : avail = maxread; : pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail); 0.00 : 554d01: e8 3a 84 08 00 callq 5dd140 : errmsg("unexpected EOF on client connection with an open transaction"))); : } : bytesread = minread; : break; : case COPY_NEW_FE: : while (maxread > 0 && bytesread < minread && !cstate->fe_eof) 0.00 : 554d06: 45 85 f6 test %r14d,%r14d 0.00 : 554d09: 0f 8e 41 fe ff ff jle 554b50 0.00 : 554d0f: 41 39 df cmp %ebx,%r15d 0.00 : 554d12: 0f 8e 38 fe ff ff jle 554b50 0.00 : 554d18: 41 80 7c 24 18 00 cmpb $0x0,0x18(%r12) 0.00 : 554d1e: 66 90 xchg %ax,%ax 0.00 : 554d20: 0f 85 2a fe ff ff jne 554b50 : } : avail = cstate->fe_msgbuf->len - cstate->fe_msgbuf->cursor; : if (avail > maxread) : avail = maxread; : pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail); : databuf = (void *) ((char *) databuf + avail); 0.00 : 554d26: 49 63 c5 movslq %r13d,%rax 0.00 : 554d29: 48 01 45 d0 add %rax,-0x30(%rbp) 0.00 : 554d2d: 0f 1f 00 nopl (%rax) 0.00 : 554d30: e9 5d fe ff ff jmpq 554b92 : if (mtype == EOF) : ereport(ERROR, : (errcode(ERRCODE_CONNECTION_FAILURE), : errmsg("unexpected EOF on client connection with an open transaction"))); : if (pq_getmessage(cstate->fe_msgbuf, 0)) : ereport(ERROR, 0.00 : 554d35: 45 31 c0 xor %r8d,%r8d 0.00 : 554d38: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554d3d: ba 66 02 00 00 mov $0x266,%edx 0.00 : 554d42: e9 dd fe ff ff jmpq 554c24 : int mtype; : : readmessage: : mtype = pq_getbyte(); : if (mtype == EOF) : ereport(ERROR, 0.00 : 554d47: 45 31 c0 xor %r8d,%r8d 0.00 : 554d4a: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554d4f: ba 62 02 00 00 mov $0x262,%edx 0.00 : 554d54: e9 cb fe ff ff jmpq 554c24 : switch (cstate->copy_dest) : { : case COPY_FILE: : bytesread = fread(databuf, 1, maxread, cstate->copy_file); : if (ferror(cstate->copy_file)) : ereport(ERROR, 0.00 : 554d59: 45 31 c0 xor %r8d,%r8d 0.00 : 554d5c: b9 e8 9c 87 00 mov $0x879ce8,%ecx 0.00 : 554d61: ba 3f 02 00 00 mov $0x23f,%edx 0.00 : 554d66: be c4 88 87 00 mov $0x8788c4,%esi 0.00 : 554d6b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 554d70: e8 4b 5d 22 00 callq 77aac0 0.00 : 554d75: 84 c0 test %al,%al 0.00 : 554d77: 0f 84 7a fe ff ff je 554bf7 0.00 : 554d7d: bf d8 8b 87 00 mov $0x878bd8,%edi 0.00 : 554d82: 31 c0 xor %eax,%eax 0.00 : 554d84: e8 17 7b 22 00 callq 77c8a0 0.00 : 554d89: 89 c3 mov %eax,%ebx 0.00 : 554d8b: e8 60 7d 22 00 callq 77caf0 0.00 : 554d90: 89 de mov %ebx,%esi 0.00 : 554d92: 89 c7 mov %eax,%edi 0.00 : 554d94: 31 c0 xor %eax,%eax 0.00 : 554d96: e8 45 58 22 00 callq 77a5e0 0.00 : 554d9b: e9 57 fe ff ff jmpq 554bf7 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4323 50.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4323 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005acee0 : : Datum : ExecEvalExprSwitchContext(ExprState *expression, : ExprContext *econtext, : bool *isNull, : ExprDoneCond *isDone) : { 0.00 : 5acee0: 55 push %rbp 0.00 : 5acee1: 49 89 f8 mov %rdi,%r8 0.00 : 5acee4: 48 89 e5 mov %rsp,%rbp 0.00 : 5acee7: 53 push %rbx 0.00 : 5acee8: 48 83 ec 08 sub $0x8,%rsp : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5aceec: 48 8b 1d 6d d9 60 00 mov 0x60d96d(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 5acef3: 48 8b 46 28 mov 0x28(%rsi),%rax 0.00 : 5acef7: 48 89 05 62 d9 60 00 mov %rax,0x60d962(%rip) # bba860 : Datum retDatum; : MemoryContext oldContext; : : oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : retDatum = ExecEvalExpr(expression, econtext, isNull, isDone); 0.00 : 5acefe: 41 ff 50 10 callq *0x10(%r8) 0.00 : 5acf02: 48 89 1d 57 d9 60 00 mov %rbx,0x60d957(%rip) # bba860 : MemoryContextSwitchTo(oldContext); : return retDatum; : } 0.00 : 5acf09: 48 83 c4 08 add $0x8,%rsp 0.00 : 5acf0d: 5b pop %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:4323 100.00 : 5acf0e: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:422 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000638120 : : * : * Lock a semaphore (decrement count), blocking if count would be < 0 : */ : void : PGSemaphoreLock(PGSemaphore sema, bool interruptOK) : { 0.00 : 638120: 55 push %rbp 0.00 : 638121: 48 89 e5 mov %rsp,%rbp 0.00 : 638124: 41 55 push %r13 0.00 : 638126: 4c 8d 6d d0 lea -0x30(%rbp),%r13 0.00 : 63812a: 41 54 push %r12 0.00 : 63812c: 41 89 f4 mov %esi,%r12d 0.00 : 63812f: 53 push %rbx 0.00 : 638130: 48 89 fb mov %rdi,%rbx 0.00 : 638133: 48 83 ec 18 sub $0x18,%rsp : int errStatus; : struct sembuf sops; : : sops.sem_op = -1; /* decrement */ 0.00 : 638137: 66 c7 45 d2 ff ff movw $0xffff,-0x2e(%rbp) : sops.sem_flg = 0; 0.00 : 63813d: 66 c7 45 d4 00 00 movw $0x0,-0x2c(%rbp) : sops.sem_num = sema->semNum; 0.00 : 638143: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 638146: 66 89 45 d0 mov %ax,-0x30(%rbp) 0.00 : 63814a: eb 28 jmp 638174 0.00 : 63814c: 0f 1f 40 00 nopl 0x0(%rax) : */ : do : { : ImmediateInterruptOK = interruptOK; : CHECK_FOR_INTERRUPTS(); : errStatus = semop(sema->semId, &sops, 1); 0.00 : 638150: 8b 3b mov (%rbx),%edi 0.00 : 638152: ba 01 00 00 00 mov $0x1,%edx 0.00 : 638157: 4c 89 ee mov %r13,%rsi 0.00 : 63815a: e8 61 1d e3 ff callq 469ec0 : ImmediateInterruptOK = false; : } while (errStatus < 0 && errno == EINTR); 0.00 : 63815f: 85 c0 test %eax,%eax : do : { : ImmediateInterruptOK = interruptOK; : CHECK_FOR_INTERRUPTS(); : errStatus = semop(sema->semId, &sops, 1); : ImmediateInterruptOK = false; /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:422 100.00 : 638161: c6 05 2c 1f 58 00 00 movb $0x0,0x581f2c(%rip) # bba094 : } while (errStatus < 0 && errno == EINTR); 0.00 : 638168: 79 26 jns 638190 0.00 : 63816a: e8 51 1b e3 ff callq 469cc0 <__errno_location@plt> 0.00 : 63816f: 83 38 04 cmpl $0x4,(%rax) 0.00 : 638172: 75 2c jne 6381a0 : * is waiting. The loop on EINTR is thus important only for platforms : * without SA_RESTART. : */ : do : { : ImmediateInterruptOK = interruptOK; 0.00 : 638174: 44 88 25 19 1f 58 00 mov %r12b,0x581f19(%rip) # bba094 : CHECK_FOR_INTERRUPTS(); 0.00 : 63817b: 0f b6 05 0e 1f 58 00 movzbl 0x581f0e(%rip),%eax # bba090 0.00 : 638182: 84 c0 test %al,%al 0.00 : 638184: 74 ca je 638150 0.00 : 638186: e8 15 41 06 00 callq 69c2a0 0.00 : 63818b: eb c3 jmp 638150 0.00 : 63818d: 0f 1f 00 nopl (%rax) : ImmediateInterruptOK = false; : } while (errStatus < 0 && errno == EINTR); : : if (errStatus < 0) : elog(FATAL, "semop(id=%d) failed: %m", sema->semId); : } 0.00 : 638190: 48 83 c4 18 add $0x18,%rsp 0.00 : 638194: 5b pop %rbx 0.00 : 638195: 41 5c pop %r12 0.00 : 638197: 41 5d pop %r13 0.00 : 638199: c9 leaveq 0.00 : 63819a: c3 retq 0.00 : 63819b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : errStatus = semop(sema->semId, &sops, 1); : ImmediateInterruptOK = false; : } while (errStatus < 0 && errno == EINTR); : : if (errStatus < 0) : elog(FATAL, "semop(id=%d) failed: %m", sema->semId); 0.00 : 6381a0: ba 90 d5 89 00 mov $0x89d590,%edx 0.00 : 6381a5: be aa 01 00 00 mov $0x1aa,%esi 0.00 : 6381aa: bf f7 d1 89 00 mov $0x89d1f7,%edi 0.00 : 6381af: e8 6c 32 14 00 callq 77b420 0.00 : 6381b4: 8b 13 mov (%rbx),%edx 0.00 : 6381b6: be 01 d2 89 00 mov $0x89d201,%esi 0.00 : 6381bb: bf 15 00 00 00 mov $0x15,%edi 0.00 : 6381c0: 31 c0 xor %eax,%eax 0.00 : 6381c2: e8 69 30 14 00 callq 77b230 0.00 : 6381c7: e8 04 13 e3 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:236 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000639150 : : * that EOF and error conditions are reported only via WL_SOCKET_READABLE. : */ : int : WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock, : long timeout) : { 0.00 : 639150: 55 push %rbp : int hifd; : #endif : : /* Ignore WL_SOCKET_* events if no valid socket is given */ : if (sock == PGINVALID_SOCKET) : wakeEvents &= ~(WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE); 0.00 : 639151: 89 f0 mov %esi,%eax 0.00 : 639153: 83 e0 f9 and $0xfffffff9,%eax : * that EOF and error conditions are reported only via WL_SOCKET_READABLE. : */ : int : WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock, : long timeout) : { 0.00 : 639156: 48 89 e5 mov %rsp,%rbp 0.00 : 639159: 41 57 push %r15 0.00 : 63915b: 49 89 cf mov %rcx,%r15 0.00 : 63915e: 41 56 push %r14 0.00 : 639160: 41 55 push %r13 0.00 : 639162: 41 54 push %r12 0.00 : 639164: 53 push %rbx 0.00 : 639165: 89 f3 mov %esi,%ebx 0.00 : 639167: 48 81 ec 88 00 00 00 sub $0x88,%rsp 0.00 : 63916e: 89 95 6c ff ff ff mov %edx,-0x94(%rbp) : int hifd; : #endif : : /* Ignore WL_SOCKET_* events if no valid socket is given */ : if (sock == PGINVALID_SOCKET) : wakeEvents &= ~(WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE); 0.00 : 639174: 83 c2 01 add $0x1,%edx 0.00 : 639177: 0f 44 d8 cmove %eax,%ebx : * that EOF and error conditions are reported only via WL_SOCKET_READABLE. : */ : int : WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock, : long timeout) : { 0.00 : 63917a: 48 89 bd 70 ff ff ff mov %rdi,-0x90(%rbp) : : Assert(wakeEvents != 0); /* must have at least one wake event */ : /* Cannot specify WL_SOCKET_WRITEABLE without WL_SOCKET_READABLE */ : Assert((wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) != WL_SOCKET_WRITEABLE); : : if ((wakeEvents & WL_LATCH_SET) && latch->owner_pid != MyProcPid) 0.00 : 639181: 89 d8 mov %ebx,%eax 0.00 : 639183: 83 e0 01 and $0x1,%eax 0.00 : 639186: 89 85 78 ff ff ff mov %eax,-0x88(%rbp) 0.00 : 63918c: 74 0f je 63919d 0.00 : 63918e: 8b 47 08 mov 0x8(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:236 100.00 : 639191: 3b 05 4d 6b 58 00 cmp 0x586b4d(%rip),%eax # bbfce4 0.00 : 639197: 0f 85 6b 03 00 00 jne 639508 : * Initialize timeout if requested. We must record the current time so : * that we can determine the remaining timeout if the poll() or select() : * is interrupted. (On some platforms, select() will update the contents : * of "tv" for us, but unfortunately we can't rely on that.) : */ : if (wakeEvents & WL_TIMEOUT) 0.00 : 63919d: 89 da mov %ebx,%edx 0.00 : 63919f: 83 e2 08 and $0x8,%edx 0.00 : 6391a2: 89 95 7c ff ff ff mov %edx,-0x84(%rbp) 0.00 : 6391a8: 0f 85 e2 02 00 00 jne 639490 0.00 : 6391ae: 49 c7 c6 ff ff ff ff mov $0xffffffffffffffff,%r14 : } : : /* Must wait ... we use poll(2) if available, otherwise select(2) */ : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) 0.00 : 6391b5: 89 d8 mov %ebx,%eax : pfds[nfds].fd = selfpipe_readfd; : pfds[nfds].events = POLLIN; : pfds[nfds].revents = 0; : nfds++; : : if (wakeEvents & WL_POSTMASTER_DEATH) 0.00 : 6391b7: 89 da mov %ebx,%edx : #ifndef HAVE_POLL : tvp = NULL; : #endif : } : : waiting = true; 0.00 : 6391b9: c7 05 b5 28 54 00 01 movl $0x1,0x5428b5(%rip) # b7ba78 0.00 : 6391c0: 00 00 00 : } : : /* Must wait ... we use poll(2) if available, otherwise select(2) */ : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) 0.00 : 6391c3: 83 e0 06 and $0x6,%eax : pfds[nfds].fd = selfpipe_readfd; : pfds[nfds].events = POLLIN; : pfds[nfds].revents = 0; : nfds++; : : if (wakeEvents & WL_POSTMASTER_DEATH) 0.00 : 6391c6: 83 e2 10 and $0x10,%edx : #ifndef HAVE_POLL : tvp = NULL; : #endif : } : : waiting = true; 0.00 : 6391c9: 45 31 ed xor %r13d,%r13d : } : : /* Must wait ... we use poll(2) if available, otherwise select(2) */ : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) 0.00 : 6391cc: 89 85 68 ff ff ff mov %eax,-0x98(%rbp) : result |= WL_TIMEOUT; : } : else : { : /* at least one event occurred, so check revents values */ : if ((wakeEvents & WL_SOCKET_READABLE) && 0.00 : 6391d2: 89 d8 mov %ebx,%eax : (pfds[0].revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL))) : { : /* data available in socket, or EOF/error condition */ : result |= WL_SOCKET_READABLE; : } : if ((wakeEvents & WL_SOCKET_WRITEABLE) && 0.00 : 6391d4: 83 e3 04 and $0x4,%ebx : result |= WL_TIMEOUT; : } : else : { : /* at least one event occurred, so check revents values */ : if ((wakeEvents & WL_SOCKET_READABLE) && 0.00 : 6391d7: 83 e0 02 and $0x2,%eax 0.00 : 6391da: 4c 8d 65 a0 lea -0x60(%rbp),%r12 : pfds[nfds].fd = selfpipe_readfd; : pfds[nfds].events = POLLIN; : pfds[nfds].revents = 0; : nfds++; : : if (wakeEvents & WL_POSTMASTER_DEATH) 0.00 : 6391de: 89 95 64 ff ff ff mov %edx,-0x9c(%rbp) : result |= WL_TIMEOUT; : } : else : { : /* at least one event occurred, so check revents values */ : if ((wakeEvents & WL_SOCKET_READABLE) && 0.00 : 6391e4: 89 85 60 ff ff ff mov %eax,-0xa0(%rbp) : (pfds[0].revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL))) : { : /* data available in socket, or EOF/error condition */ : result |= WL_SOCKET_READABLE; : } : if ((wakeEvents & WL_SOCKET_WRITEABLE) && 0.00 : 6391ea: 89 9d 5c ff ff ff mov %ebx,-0xa4(%rbp) 0.00 : 6391f0: eb 11 jmp 639203 0.00 : 6391f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : waiting = false; : elog(ERROR, "read() on self-pipe failed: %m"); : } : } : else if (rc == 0) 0.00 : 6391f8: 0f 84 54 02 00 00 je 639452 : { : waiting = false; : elog(ERROR, "unexpected EOF on self-pipe"); : } : else if (rc < sizeof(buf)) 0.00 : 6391fe: 83 f8 0f cmp $0xf,%eax 0.00 : 639201: 76 5d jbe 639260 : char buf[16]; : int rc; : : for (;;) : { : rc = read(selfpipe_readfd, buf, sizeof(buf)); 0.00 : 639203: 8b 3d bf f3 52 00 mov 0x52f3bf(%rip),%edi # b685c8 0.00 : 639209: ba 10 00 00 00 mov $0x10,%edx 0.00 : 63920e: 4c 89 e6 mov %r12,%rsi 0.00 : 639211: e8 fa 03 e3 ff callq 469610 : if (rc < 0) 0.00 : 639216: 83 f8 00 cmp $0x0,%eax 0.00 : 639219: 7d dd jge 6391f8 : { : if (errno == EAGAIN || errno == EWOULDBLOCK) 0.00 : 63921b: e8 a0 0a e3 ff callq 469cc0 <__errno_location@plt> 0.00 : 639220: 8b 00 mov (%rax),%eax 0.00 : 639222: 83 f8 0b cmp $0xb,%eax 0.00 : 639225: 74 39 je 639260 : break; /* the pipe is empty */ : else if (errno == EINTR) 0.00 : 639227: 83 f8 04 cmp $0x4,%eax 0.00 : 63922a: 74 d7 je 639203 : continue; /* retry */ : else : { : waiting = false; : elog(ERROR, "read() on self-pipe failed: %m"); 0.00 : 63922c: ba 12 de 89 00 mov $0x89de12,%edx 0.00 : 639231: be 87 02 00 00 mov $0x287,%esi 0.00 : 639236: bf f0 dc 89 00 mov $0x89dcf0,%edi : break; /* the pipe is empty */ : else if (errno == EINTR) : continue; /* retry */ : else : { : waiting = false; 0.00 : 63923b: c7 05 33 28 54 00 00 movl $0x0,0x542833(%rip) # b7ba78 0.00 : 639242: 00 00 00 : elog(ERROR, "read() on self-pipe failed: %m"); 0.00 : 639245: e8 d6 21 14 00 callq 77b420 0.00 : 63924a: be 80 dd 89 00 mov $0x89dd80,%esi 0.00 : 63924f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 639254: 31 c0 xor %eax,%eax 0.00 : 639256: e8 d5 1f 14 00 callq 77b230 0.00 : 63925b: e8 70 02 e3 ff callq 4694d0 : * with weak memory ordering, so that we cannot miss seeing is_set if : * the signal byte is already in the pipe when we drain it. : */ : drainSelfPipe(); : : if ((wakeEvents & WL_LATCH_SET) && latch->is_set) 0.00 : 639260: 44 8b 95 78 ff ff ff mov -0x88(%rbp),%r10d 0.00 : 639267: 45 85 d2 test %r10d,%r10d 0.00 : 63926a: 74 11 je 63927d 0.00 : 63926c: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : 639273: 8b 02 mov (%rdx),%eax 0.00 : 639275: 85 c0 test %eax,%eax 0.00 : 639277: 0f 85 b5 02 00 00 jne 639532 : } : : /* Must wait ... we use poll(2) if available, otherwise select(2) */ : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) 0.00 : 63927d: 44 8b 8d 68 ff ff ff mov -0x98(%rbp),%r9d 0.00 : 639284: 31 c0 xor %eax,%eax 0.00 : 639286: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 63928b: 45 85 c9 test %r9d,%r9d 0.00 : 63928e: 74 45 je 6392d5 : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; 0.00 : 639290: 44 8b 85 60 ff ff ff mov -0xa0(%rbp),%r8d : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; : pfds[0].events = 0; 0.00 : 639297: 66 c7 45 84 00 00 movw $0x0,-0x7c(%rbp) : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; 0.00 : 63929d: b8 01 00 00 00 mov $0x1,%eax : if (wakeEvents & WL_SOCKET_WRITEABLE) 0.00 : 6392a2: 8b bd 5c ff ff ff mov -0xa4(%rbp),%edi : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; 0.00 : 6392a8: 45 85 c0 test %r8d,%r8d 0.00 : 6392ab: 66 0f 44 45 84 cmove -0x7c(%rbp),%ax : if (wakeEvents & WL_SOCKET_WRITEABLE) 0.00 : 6392b0: 85 ff test %edi,%edi : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; 0.00 : 6392b2: 66 89 45 84 mov %ax,-0x7c(%rbp) : if (wakeEvents & WL_SOCKET_WRITEABLE) 0.00 : 6392b6: 0f 85 ca 01 00 00 jne 639486 : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; 0.00 : 6392bc: 8b 85 6c ff ff ff mov -0x94(%rbp),%eax : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; : if (wakeEvents & WL_SOCKET_WRITEABLE) : pfds[0].events |= POLLOUT; : pfds[0].revents = 0; 0.00 : 6392c2: 66 c7 45 86 00 00 movw $0x0,-0x7a(%rbp) 0.00 : 6392c8: bb 02 00 00 00 mov $0x2,%ebx : #ifdef HAVE_POLL : nfds = 0; : if (wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) : { : /* socket, if used, is always in pfds[0] */ : pfds[0].fd = sock; 0.00 : 6392cd: 89 45 80 mov %eax,-0x80(%rbp) : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; : if (wakeEvents & WL_SOCKET_WRITEABLE) : pfds[0].events |= POLLOUT; : pfds[0].revents = 0; 0.00 : 6392d0: b8 01 00 00 00 mov $0x1,%eax : nfds++; : } : : pfds[nfds].fd = selfpipe_readfd; 0.00 : 6392d5: 8b 15 ed f2 52 00 mov 0x52f2ed(%rip),%edx # b685c8 0.00 : 6392db: 48 98 cltq : pfds[nfds].events = POLLIN; 0.00 : 6392dd: 66 c7 44 c5 84 01 00 movw $0x1,-0x7c(%rbp,%rax,8) : pfds[nfds].revents = 0; 0.00 : 6392e4: 66 c7 44 c5 86 00 00 movw $0x0,-0x7a(%rbp,%rax,8) : pfds[0].events |= POLLOUT; : pfds[0].revents = 0; : nfds++; : } : : pfds[nfds].fd = selfpipe_readfd; 0.00 : 6392eb: 89 54 c5 80 mov %edx,-0x80(%rbp,%rax,8) : pfds[nfds].events = POLLIN; : pfds[nfds].revents = 0; : nfds++; : : if (wakeEvents & WL_POSTMASTER_DEATH) 0.00 : 6392ef: 8b b5 64 ff ff ff mov -0x9c(%rbp),%esi 0.00 : 6392f5: 85 f6 test %esi,%esi 0.00 : 6392f7: 74 1e je 639317 : { : /* postmaster fd, if used, is always in pfds[nfds - 1] */ : pfds[nfds].fd = postmaster_alive_fds[POSTMASTER_FD_WATCH]; 0.00 : 6392f9: 8b 15 29 f3 52 00 mov 0x52f329(%rip),%edx # b68628 0.00 : 6392ff: 48 63 c3 movslq %ebx,%rax : pfds[nfds].events = POLLIN; : pfds[nfds].revents = 0; : nfds++; 0.00 : 639302: 83 c3 01 add $0x1,%ebx : : if (wakeEvents & WL_POSTMASTER_DEATH) : { : /* postmaster fd, if used, is always in pfds[nfds - 1] */ : pfds[nfds].fd = postmaster_alive_fds[POSTMASTER_FD_WATCH]; : pfds[nfds].events = POLLIN; 0.00 : 639305: 66 c7 44 c5 84 01 00 movw $0x1,-0x7c(%rbp,%rax,8) : pfds[nfds].revents = 0; 0.00 : 63930c: 66 c7 44 c5 86 00 00 movw $0x0,-0x7a(%rbp,%rax,8) : nfds++; : : if (wakeEvents & WL_POSTMASTER_DEATH) : { : /* postmaster fd, if used, is always in pfds[nfds - 1] */ : pfds[nfds].fd = postmaster_alive_fds[POSTMASTER_FD_WATCH]; 0.00 : 639313: 89 54 c5 80 mov %edx,-0x80(%rbp,%rax,8) : pfds[nfds].revents = 0; : nfds++; : } : : /* Sleep */ : rc = poll(pfds, nfds, (int) cur_timeout); 0.00 : 639317: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 63931b: 48 63 f3 movslq %ebx,%rsi 0.00 : 63931e: 44 89 f2 mov %r14d,%edx 0.00 : 639321: e8 2a 07 e3 ff callq 469a50 : : /* Check return code */ : if (rc < 0) 0.00 : 639326: 83 f8 00 cmp $0x0,%eax 0.00 : 639329: 0f 8c 74 01 00 00 jl 6394a3 : ereport(ERROR, : (errcode_for_socket_access(), : errmsg("poll() failed: %m"))); : } : } : else if (rc == 0) 0.00 : 63932f: 0f 85 b5 00 00 00 jne 6393ea : { : /* timeout exceeded */ : if (wakeEvents & WL_TIMEOUT) : result |= WL_TIMEOUT; 0.00 : 639335: 44 0b ad 7c ff ff ff or -0x84(%rbp),%r13d : } : } : #endif /* HAVE_POLL */ : : /* If we're not done, update cur_timeout for next iteration */ : if (result == 0 && cur_timeout >= 0) 0.00 : 63933c: 45 85 ed test %r13d,%r13d 0.00 : 63933f: 90 nop 0.00 : 639340: 74 26 je 639368 : tv.tv_sec = cur_timeout / 1000L; : tv.tv_usec = (cur_timeout % 1000L) * 1000L; : #endif : } : } while (result == 0); : waiting = false; 0.00 : 639342: c7 05 2c 27 54 00 00 movl $0x0,0x54272c(%rip) # b7ba78 0.00 : 639349: 00 00 00 : : return result; : } 0.00 : 63934c: 48 81 c4 88 00 00 00 add $0x88,%rsp 0.00 : 639353: 44 89 e8 mov %r13d,%eax 0.00 : 639356: 5b pop %rbx 0.00 : 639357: 41 5c pop %r12 0.00 : 639359: 41 5d pop %r13 0.00 : 63935b: 41 5e pop %r14 0.00 : 63935d: 41 5f pop %r15 0.00 : 63935f: c9 leaveq 0.00 : 639360: c3 retq 0.00 : 639361: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } : } : #endif /* HAVE_POLL */ : : /* If we're not done, update cur_timeout for next iteration */ : if (result == 0 && cur_timeout >= 0) 0.00 : 639368: 4d 85 f6 test %r14,%r14 0.00 : 63936b: 0f 88 92 fe ff ff js 639203 : { : INSTR_TIME_SET_CURRENT(cur_time); 0.00 : 639371: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 639375: 31 f6 xor %esi,%esi 0.00 : 639377: e8 44 02 e3 ff callq 4695c0 : INSTR_TIME_SUBTRACT(cur_time, start_time); 0.00 : 63937c: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 639380: 48 2b 45 c8 sub -0x38(%rbp),%rax 0.00 : 639384: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 639388: 48 2b 55 c0 sub -0x40(%rbp),%rdx 0.00 : 63938c: 48 85 c0 test %rax,%rax 0.00 : 63938f: 48 89 45 b8 mov %rax,-0x48(%rbp) 0.00 : 639393: 48 89 55 b0 mov %rdx,-0x50(%rbp) 0.00 : 639397: 79 1b jns 6393b4 0.00 : 639399: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * that EOF and error conditions are reported only via WL_SOCKET_READABLE. : */ : int : WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock, : long timeout) : { 0.00 : 6393a0: 48 83 ea 01 sub $0x1,%rdx : : /* If we're not done, update cur_timeout for next iteration */ : if (result == 0 && cur_timeout >= 0) : { : INSTR_TIME_SET_CURRENT(cur_time); : INSTR_TIME_SUBTRACT(cur_time, start_time); 0.00 : 6393a4: 48 05 40 42 0f 00 add $0xf4240,%rax 0.00 : 6393aa: 78 f4 js 6393a0 0.00 : 6393ac: 48 89 55 b0 mov %rdx,-0x50(%rbp) 0.00 : 6393b0: 48 89 45 b8 mov %rax,-0x48(%rbp) : cur_timeout = timeout - (long) INSTR_TIME_GET_MILLISEC(cur_time); 0.00 : 6393b4: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 6393b9: f2 48 0f 2a 4d b0 cvtsi2sdq -0x50(%rbp),%xmm1 0.00 : 6393bf: f2 0f 59 0d 11 32 24 mulsd 0x243211(%rip),%xmm1 # 87c5d8 <__func__.18742+0x13> 0.00 : 6393c6: 00 0.00 : 6393c7: 4c 89 fa mov %r15,%rdx 0.00 : 6393ca: 45 31 f6 xor %r14d,%r14d 0.00 : 6393cd: f2 0f 5e 05 03 32 24 divsd 0x243203(%rip),%xmm0 # 87c5d8 <__func__.18742+0x13> 0.00 : 6393d4: 00 0.00 : 6393d5: f2 0f 58 c8 addsd %xmm0,%xmm1 0.00 : 6393d9: f2 48 0f 2c c1 cvttsd2si %xmm1,%rax 0.00 : 6393de: 48 29 c2 sub %rax,%rdx 0.00 : 6393e1: 4c 0f 49 f2 cmovns %rdx,%r14 0.00 : 6393e5: e9 19 fe ff ff jmpq 639203 : result |= WL_TIMEOUT; : } : else : { : /* at least one event occurred, so check revents values */ : if ((wakeEvents & WL_SOCKET_READABLE) && 0.00 : 6393ea: 8b 8d 60 ff ff ff mov -0xa0(%rbp),%ecx 0.00 : 6393f0: 85 c9 test %ecx,%ecx 0.00 : 6393f2: 74 10 je 639404 0.00 : 6393f4: 0f bf 45 86 movswl -0x7a(%rbp),%eax : (pfds[0].revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL))) : { : /* data available in socket, or EOF/error condition */ : result |= WL_SOCKET_READABLE; 0.00 : 6393f8: 44 89 ea mov %r13d,%edx 0.00 : 6393fb: 83 ca 02 or $0x2,%edx 0.00 : 6393fe: a8 39 test $0x39,%al 0.00 : 639400: 44 0f 45 ea cmovne %edx,%r13d : } : if ((wakeEvents & WL_SOCKET_WRITEABLE) && 0.00 : 639404: 8b 95 5c ff ff ff mov -0xa4(%rbp),%edx 0.00 : 63940a: 85 d2 test %edx,%edx 0.00 : 63940c: 74 0e je 63941c : (pfds[0].revents & POLLOUT)) : { : result |= WL_SOCKET_WRITEABLE; 0.00 : 63940e: 44 89 e8 mov %r13d,%eax 0.00 : 639411: 83 c8 04 or $0x4,%eax 0.00 : 639414: f6 45 86 04 testb $0x4,-0x7a(%rbp) 0.00 : 639418: 44 0f 45 e8 cmovne %eax,%r13d : /* : * We expect a POLLHUP when the remote end is closed, but because : * we don't expect the pipe to become readable or to have any : * errors either, treat those cases as postmaster death, too. : */ : if ((wakeEvents & WL_POSTMASTER_DEATH) && 0.00 : 63941c: 8b 85 64 ff ff ff mov -0x9c(%rbp),%eax 0.00 : 639422: 85 c0 test %eax,%eax 0.00 : 639424: 0f 84 12 ff ff ff je 63933c 0.00 : 63942a: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 63942d: 48 98 cltq 0.00 : 63942f: 0f bf 44 c5 86 movswl -0x7a(%rbp,%rax,8),%eax 0.00 : 639434: a8 39 test $0x39,%al 0.00 : 639436: 0f 84 00 ff ff ff je 63933c : * postmaster pipe, but since the consequences of falsely : * returning WL_POSTMASTER_DEATH could be pretty unpleasant, : * we take the trouble to positively verify EOF with : * PostmasterIsAlive(). : */ : if (!PostmasterIsAlive()) 0.00 : 63943c: e8 4f 5e 04 00 callq 67f290 : result |= WL_POSTMASTER_DEATH; 0.00 : 639441: 44 89 ea mov %r13d,%edx 0.00 : 639444: 83 ca 10 or $0x10,%edx 0.00 : 639447: 84 c0 test %al,%al 0.00 : 639449: 44 0f 44 ea cmove %edx,%r13d 0.00 : 63944d: e9 ea fe ff ff jmpq 63933c : } : } : else if (rc == 0) : { : waiting = false; : elog(ERROR, "unexpected EOF on self-pipe"); 0.00 : 639452: ba 12 de 89 00 mov $0x89de12,%edx 0.00 : 639457: be 8d 02 00 00 mov $0x28d,%esi 0.00 : 63945c: bf f0 dc 89 00 mov $0x89dcf0,%edi : elog(ERROR, "read() on self-pipe failed: %m"); : } : } : else if (rc == 0) : { : waiting = false; 0.00 : 639461: c7 05 0d 26 54 00 00 movl $0x0,0x54260d(%rip) # b7ba78 0.00 : 639468: 00 00 00 : elog(ERROR, "unexpected EOF on self-pipe"); 0.00 : 63946b: e8 b0 1f 14 00 callq 77b420 0.00 : 639470: be 0f dd 89 00 mov $0x89dd0f,%esi 0.00 : 639475: bf 14 00 00 00 mov $0x14,%edi 0.00 : 63947a: 31 c0 xor %eax,%eax 0.00 : 63947c: e8 af 1d 14 00 callq 77b230 0.00 : 639481: e8 4a 00 e3 ff callq 4694d0 : pfds[0].fd = sock; : pfds[0].events = 0; : if (wakeEvents & WL_SOCKET_READABLE) : pfds[0].events |= POLLIN; : if (wakeEvents & WL_SOCKET_WRITEABLE) : pfds[0].events |= POLLOUT; 0.00 : 639486: 66 83 4d 84 04 orw $0x4,-0x7c(%rbp) 0.00 : 63948b: e9 2c fe ff ff jmpq 6392bc : * is interrupted. (On some platforms, select() will update the contents : * of "tv" for us, but unfortunately we can't rely on that.) : */ : if (wakeEvents & WL_TIMEOUT) : { : INSTR_TIME_SET_CURRENT(start_time); 0.00 : 639490: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 639494: 31 f6 xor %esi,%esi 0.00 : 639496: 4d 89 fe mov %r15,%r14 0.00 : 639499: e8 22 01 e3 ff callq 4695c0 0.00 : 63949e: e9 12 fd ff ff jmpq 6391b5 : : /* Check return code */ : if (rc < 0) : { : /* EINTR is okay, otherwise complain */ : if (errno != EINTR) 0.00 : 6394a3: e8 18 08 e3 ff callq 469cc0 <__errno_location@plt> 0.00 : 6394a8: 83 38 04 cmpl $0x4,(%rax) 0.00 : 6394ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6394b0: 0f 84 86 fe ff ff je 63933c : { : waiting = false; : ereport(ERROR, 0.00 : 6394b6: 45 31 c0 xor %r8d,%r8d 0.00 : 6394b9: b9 00 de 89 00 mov $0x89de00,%ecx 0.00 : 6394be: ba 50 01 00 00 mov $0x150,%edx 0.00 : 6394c3: be f0 dc 89 00 mov $0x89dcf0,%esi 0.00 : 6394c8: bf 14 00 00 00 mov $0x14,%edi : if (rc < 0) : { : /* EINTR is okay, otherwise complain */ : if (errno != EINTR) : { : waiting = false; 0.00 : 6394cd: c7 05 a1 25 54 00 00 movl $0x0,0x5425a1(%rip) # b7ba78 0.00 : 6394d4: 00 00 00 : ereport(ERROR, 0.00 : 6394d7: e8 e4 15 14 00 callq 77aac0 0.00 : 6394dc: 84 c0 test %al,%al 0.00 : 6394de: 74 1e je 6394fe 0.00 : 6394e0: bf 2b dd 89 00 mov $0x89dd2b,%edi 0.00 : 6394e5: 31 c0 xor %eax,%eax 0.00 : 6394e7: e8 b4 33 14 00 callq 77c8a0 0.00 : 6394ec: 89 c3 mov %eax,%ebx 0.00 : 6394ee: e8 5d 35 14 00 callq 77ca50 0.00 : 6394f3: 89 de mov %ebx,%esi 0.00 : 6394f5: 89 c7 mov %eax,%edi 0.00 : 6394f7: 31 c0 xor %eax,%eax 0.00 : 6394f9: e8 e2 10 14 00 callq 77a5e0 0.00 : 6394fe: e8 cd ff e2 ff callq 4694d0 0.00 : 639503: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : Assert(wakeEvents != 0); /* must have at least one wake event */ : /* Cannot specify WL_SOCKET_WRITEABLE without WL_SOCKET_READABLE */ : Assert((wakeEvents & (WL_SOCKET_READABLE | WL_SOCKET_WRITEABLE)) != WL_SOCKET_WRITEABLE); : : if ((wakeEvents & WL_LATCH_SET) && latch->owner_pid != MyProcPid) : elog(ERROR, "cannot wait on a latch owned by another process"); 0.00 : 639508: ba 00 de 89 00 mov $0x89de00,%edx 0.00 : 63950d: be ed 00 00 00 mov $0xed,%esi 0.00 : 639512: bf f0 dc 89 00 mov $0x89dcf0,%edi 0.00 : 639517: e8 04 1f 14 00 callq 77b420 0.00 : 63951c: be 50 dd 89 00 mov $0x89dd50,%esi 0.00 : 639521: bf 14 00 00 00 mov $0x14,%edi 0.00 : 639526: 31 c0 xor %eax,%eax 0.00 : 639528: e8 03 1d 14 00 callq 77b230 0.00 : 63952d: e8 9e ff e2 ff callq 4694d0 : */ : drainSelfPipe(); : : if ((wakeEvents & WL_LATCH_SET) && latch->is_set) : { : result |= WL_LATCH_SET; 0.00 : 639532: 41 83 cd 01 or $0x1,%r13d : : /* : * Leave loop immediately, avoid blocking again. We don't attempt : * to report any other events that might also be satisfied. : */ : break; 0.00 : 639536: e9 07 fe ff ff jmpq 639342 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/bgwriter.c:270 50.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/bgwriter.c:373 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000063d690 : : * This is invoked from AuxiliaryProcessMain, which has already created the : * basic execution environment, but not enabled signals yet. : */ : void : BackgroundWriterMain(void) : { 0.00 : 63d690: 55 push %rbp 0.00 : 63d691: 48 89 e5 mov %rsp,%rbp 0.00 : 63d694: 41 55 push %r13 0.00 : 63d696: 41 54 push %r12 0.00 : 63d698: 53 push %rbx 0.00 : 63d699: 48 81 ec e8 00 00 00 sub $0xe8,%rsp : * can signal any child processes too. (bgwriter probably never has any : * child processes, but for consistency we make all postmaster child : * processes do this.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) 0.00 : 63d6a0: e8 bb bd e2 ff callq 469460 0.00 : 63d6a5: 85 c0 test %eax,%eax 0.00 : 63d6a7: 0f 88 68 03 00 00 js 63da15 : * Properly accept or ignore signals the postmaster might send us. : * : * bgwriter doesn't participate in ProcSignal signalling, but a SIGUSR1 : * handler is still needed for latch wakeups. : */ : pqsignal(SIGHUP, BgSigHupHandler); /* set flag to read config file */ 0.00 : 63d6ad: be f0 da 63 00 mov $0x63daf0,%esi 0.00 : 63d6b2: bf 01 00 00 00 mov $0x1,%edi 0.00 : 63d6b7: e8 44 f4 16 00 callq 7acb00 : pqsignal(SIGINT, SIG_IGN); 0.00 : 63d6bc: be 01 00 00 00 mov $0x1,%esi 0.00 : 63d6c1: bf 02 00 00 00 mov $0x2,%edi 0.00 : 63d6c6: e8 35 f4 16 00 callq 7acb00 : pqsignal(SIGTERM, ReqShutdownHandler); /* shutdown */ 0.00 : 63d6cb: be a0 da 63 00 mov $0x63daa0,%esi 0.00 : 63d6d0: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 63d6d5: e8 26 f4 16 00 callq 7acb00 : pqsignal(SIGQUIT, bg_quickdie); /* hard crash time */ 0.00 : 63d6da: be 70 da 63 00 mov $0x63da70,%esi 0.00 : 63d6df: bf 03 00 00 00 mov $0x3,%edi 0.00 : 63d6e4: e8 17 f4 16 00 callq 7acb00 : pqsignal(SIGALRM, SIG_IGN); 0.00 : 63d6e9: be 01 00 00 00 mov $0x1,%esi 0.00 : 63d6ee: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 63d6f3: e8 08 f4 16 00 callq 7acb00 : pqsignal(SIGPIPE, SIG_IGN); 0.00 : 63d6f8: be 01 00 00 00 mov $0x1,%esi 0.00 : 63d6fd: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 63d702: e8 f9 f3 16 00 callq 7acb00 : pqsignal(SIGUSR1, bgwriter_sigusr1_handler); 0.00 : 63d707: be 40 da 63 00 mov $0x63da40,%esi 0.00 : 63d70c: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 63d711: e8 ea f3 16 00 callq 7acb00 : pqsignal(SIGUSR2, SIG_IGN); 0.00 : 63d716: be 01 00 00 00 mov $0x1,%esi 0.00 : 63d71b: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 63d720: e8 db f3 16 00 callq 7acb00 : : /* : * Reset some signals that are accepted by postmaster but not here : */ : pqsignal(SIGCHLD, SIG_DFL); 0.00 : 63d725: 31 f6 xor %esi,%esi 0.00 : 63d727: bf 11 00 00 00 mov $0x11,%edi 0.00 : 63d72c: e8 cf f3 16 00 callq 7acb00 : pqsignal(SIGTTIN, SIG_DFL); 0.00 : 63d731: 31 f6 xor %esi,%esi 0.00 : 63d733: bf 15 00 00 00 mov $0x15,%edi 0.00 : 63d738: e8 c3 f3 16 00 callq 7acb00 : pqsignal(SIGTTOU, SIG_DFL); 0.00 : 63d73d: 31 f6 xor %esi,%esi 0.00 : 63d73f: bf 16 00 00 00 mov $0x16,%edi 0.00 : 63d744: e8 b7 f3 16 00 callq 7acb00 : pqsignal(SIGCONT, SIG_DFL); 0.00 : 63d749: 31 f6 xor %esi,%esi 0.00 : 63d74b: bf 12 00 00 00 mov $0x12,%edi 0.00 : 63d750: e8 ab f3 16 00 callq 7acb00 : pqsignal(SIGWINCH, SIG_DFL); 0.00 : 63d755: 31 f6 xor %esi,%esi 0.00 : 63d757: bf 1c 00 00 00 mov $0x1c,%edi 0.00 : 63d75c: e8 9f f3 16 00 callq 7acb00 : : /* We allow SIGQUIT (quickdie) at all times */ : sigdelset(&BlockSig, SIGQUIT); 0.00 : 63d761: be 03 00 00 00 mov $0x3,%esi 0.00 : 63d766: bf c0 f8 bb 00 mov $0xbbf8c0,%edi 0.00 : 63d76b: e8 70 c8 e2 ff callq 469fe0 : : /* : * Create a resource owner to keep track of our resources (currently only : * buffer pins). : */ : CurrentResourceOwner = ResourceOwnerCreate(NULL, "Background Writer"); 0.00 : 63d770: 31 ff xor %edi,%edi 0.00 : 63d772: be 47 e8 89 00 mov $0x89e847,%esi 0.00 : 63d777: e8 14 de 15 00 callq 79b590 0.00 : 63d77c: 48 89 05 3d d1 57 00 mov %rax,0x57d13d(%rip) # bba8c0 : : /* : * We just started, assume there has been either a shutdown or : * end-of-recovery snapshot. : */ : last_snapshot_ts = GetCurrentTimestamp(); 0.00 : 63d783: e8 e8 8b 10 00 callq 746370 : * Create a memory context that we will do all our work in. We do this so : * that we can reset the context during error recovery and thereby avoid : * possible memory leaks. Formerly this code just ran in : * TopMemoryContext, but resetting that would be a really bad idea. : */ : bgwriter_context = AllocSetContextCreate(TopMemoryContext, 0.00 : 63d788: 48 8b 3d d9 d0 57 00 mov 0x57d0d9(%rip),%rdi # bba868 0.00 : 63d78f: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 63d795: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 63d79a: 31 d2 xor %edx,%edx 0.00 : 63d79c: be 47 e8 89 00 mov $0x89e847,%esi : : /* : * We just started, assume there has been either a shutdown or : * end-of-recovery snapshot. : */ : last_snapshot_ts = GetCurrentTimestamp(); 0.00 : 63d7a1: 48 89 05 60 e3 53 00 mov %rax,0x53e360(%rip) # b7bb08 : * Create a memory context that we will do all our work in. We do this so : * that we can reset the context during error recovery and thereby avoid : * possible memory leaks. Formerly this code just ran in : * TopMemoryContext, but resetting that would be a really bad idea. : */ : bgwriter_context = AllocSetContextCreate(TopMemoryContext, 0.00 : 63d7a8: e8 e3 a7 15 00 callq 797f90 : /* : * If an exception is encountered, processing resumes here. : * : * See notes in postgres.c about the design of this coding. : */ : if (sigsetjmp(local_sigjmp_buf, 1) != 0) 0.00 : 63d7ad: 48 8d bd 10 ff ff ff lea -0xf0(%rbp),%rdi 0.00 : 63d7b4: be 01 00 00 00 mov $0x1,%esi : * Create a memory context that we will do all our work in. We do this so : * that we can reset the context during error recovery and thereby avoid : * possible memory leaks. Formerly this code just ran in : * TopMemoryContext, but resetting that would be a really bad idea. : */ : bgwriter_context = AllocSetContextCreate(TopMemoryContext, 0.00 : 63d7b9: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 63d7c0: 48 89 05 99 d0 57 00 mov %rax,0x57d099(%rip) # bba860 : /* : * If an exception is encountered, processing resumes here. : * : * See notes in postgres.c about the design of this coding. : */ : if (sigsetjmp(local_sigjmp_buf, 1) != 0) 0.00 : 63d7c7: e8 84 c8 e2 ff callq 46a050 <__sigsetjmp@plt> 0.00 : 63d7cc: 85 c0 test %eax,%eax 0.00 : 63d7ce: 0f 85 a4 01 00 00 jne 63d978 : */ : smgrcloseall(); : } : : /* We can now handle ereport(ERROR) */ : PG_exception_stack = &local_sigjmp_buf; 0.00 : 63d7d4: 48 8d 85 10 ff ff ff lea -0xf0(%rbp),%rax : : /* : * Unblock signals (they were blocked when the postmaster forked us) : */ : PG_SETMASK(&UnBlockSig); 0.00 : 63d7db: 31 d2 xor %edx,%edx 0.00 : 63d7dd: be 40 f8 bb 00 mov $0xbbf840,%esi 0.00 : 63d7e2: bf 02 00 00 00 mov $0x2,%edi 0.00 : 63d7e7: 45 31 ed xor %r13d,%r13d : */ : smgrcloseall(); : } : : /* We can now handle ereport(ERROR) */ : PG_exception_stack = &local_sigjmp_buf; 0.00 : 63d7ea: 48 89 05 57 be 57 00 mov %rax,0x57be57(%rip) # bb9648 : : /* : * Unblock signals (they were blocked when the postmaster forked us) : */ : PG_SETMASK(&UnBlockSig); 0.00 : 63d7f1: e8 ca c2 e2 ff callq 469ac0 0.00 : 63d7f6: eb 75 jmp 63d86d 0.00 : 63d7f8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 63d7ff: 00 : if (got_SIGHUP) : { : got_SIGHUP = false; : ProcessConfigFile(PGC_SIGHUP); : } : if (shutdown_requested) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/bgwriter.c:270 50.00 : 63d800: 8b 05 f6 e2 53 00 mov 0x53e2f6(%rip),%eax # b7bafc 0.00 : 63d806: 85 c0 test %eax,%eax 0.00 : 63d808: 0f 85 9f 00 00 00 jne 63d8ad : } : : /* : * Do one cycle of dirty-buffer writing. : */ : can_hibernate = BgBufferSync(); 0.00 : 63d80e: e8 dd 7e 03 00 callq 6756f0 0.00 : 63d813: 41 89 c4 mov %eax,%r12d : : /* : * Send off activity statistics to the stats collector : */ : pgstat_send_bgwriter(); 0.00 : 63d816: e8 45 25 00 00 callq 63fd60 : : if (FirstCallSinceLastCheckpoint()) 0.00 : 63d81b: e8 20 03 00 00 callq 63db40 0.00 : 63d820: 84 c0 test %al,%al 0.00 : 63d822: 0f 85 98 00 00 00 jne 63d8c0 : * We do this logging in the bgwriter as its the only process thats : * run regularly and returns to its mainloop all the time. E.g. : * Checkpointer, when active, is barely ever in its mainloop and thus : * makes it hard to log regularly. : */ : if (XLogStandbyInfoActive() && !RecoveryInProgress()) 0.00 : 63d828: 83 3d 2d b9 53 00 01 cmpl $0x1,0x53b92d(%rip) # b7915c 0.00 : 63d82f: 7e 0d jle 63d83e 0.00 : 63d831: e8 8a fc e8 ff callq 4cd4c0 0.00 : 63d836: 84 c0 test %al,%al 0.00 : 63d838: 0f 84 f2 00 00 00 je 63d930 : * correctness that that be exact, the feedback loop might misbehave : * if we stray too far from that. Hence, avoid loading this process : * down with latch events that are likely to happen frequently during : * normal operation. : */ : rc = WaitLatch(&MyProc->procLatch, 0.00 : 63d83e: 48 8b 3d 03 01 54 00 mov 0x540103(%rip),%rdi # b7d948 0.00 : 63d845: 48 63 15 a4 ad 52 00 movslq 0x52ada4(%rip),%rdx # b685f0 0.00 : 63d84c: be 19 00 00 00 mov $0x19,%esi 0.00 : 63d851: 48 83 c7 1c add $0x1c,%rdi 0.00 : 63d855: e8 e6 bc ff ff callq 639540 : * critical that we not hibernate anyway, we try to reduce the odds of : * that by only hibernating when BgBufferSync says nothing's happening : * for two consecutive cycles. Also, we mitigate any possible : * consequences of a missed wakeup by not hibernating forever. : */ : if (rc == WL_TIMEOUT && can_hibernate && prev_hibernate) 0.00 : 63d85a: 83 f8 08 cmp $0x8,%eax : * correctness that that be exact, the feedback loop might misbehave : * if we stray too far from that. Hence, avoid loading this process : * down with latch events that are likely to happen frequently during : * normal operation. : */ : rc = WaitLatch(&MyProc->procLatch, 0.00 : 63d85d: 89 c3 mov %eax,%ebx : * critical that we not hibernate anyway, we try to reduce the odds of : * that by only hibernating when BgBufferSync says nothing's happening : * for two consecutive cycles. Also, we mitigate any possible : * consequences of a missed wakeup by not hibernating forever. : */ : if (rc == WL_TIMEOUT && can_hibernate && prev_hibernate) 0.00 : 63d85f: 74 6f je 63d8d0 : : /* : * Emergency bailout if postmaster has died. This is to avoid the : * necessity for manual cleanup of all postmaster children. : */ : if (rc & WL_POSTMASTER_DEATH) 0.00 : 63d861: 83 e3 10 and $0x10,%ebx 0.00 : 63d864: 0f 85 b8 00 00 00 jne 63d922 : PG_exception_stack = &local_sigjmp_buf; : : /* : * Unblock signals (they were blocked when the postmaster forked us) : */ : PG_SETMASK(&UnBlockSig); 0.00 : 63d86a: 45 89 e5 mov %r12d,%r13d : { : bool can_hibernate; : int rc; : : /* Clear any already-pending wakeups */ : ResetLatch(&MyProc->procLatch); 0.00 : 63d86d: 48 8b 3d d4 00 54 00 mov 0x5400d4(%rip),%rdi # b7d948 0.00 : 63d874: 48 83 c7 1c add $0x1c,%rdi 0.00 : 63d878: e8 c3 b7 ff ff callq 639040 : : if (got_SIGHUP) 0.00 : 63d87d: 8b 05 75 e2 53 00 mov 0x53e275(%rip),%eax # b7baf8 0.00 : 63d883: 85 c0 test %eax,%eax 0.00 : 63d885: 0f 84 75 ff ff ff je 63d800 : { : got_SIGHUP = false; : ProcessConfigFile(PGC_SIGHUP); 0.00 : 63d88b: bf 02 00 00 00 mov $0x2,%edi : /* Clear any already-pending wakeups */ : ResetLatch(&MyProc->procLatch); : : if (got_SIGHUP) : { : got_SIGHUP = false; 0.00 : 63d890: c7 05 5e e2 53 00 00 movl $0x0,0x53e25e(%rip) # b7baf8 0.00 : 63d897: 00 00 00 : ProcessConfigFile(PGC_SIGHUP); 0.00 : 63d89a: e8 61 6f 15 00 callq 794800 : } : if (shutdown_requested) 0.00 : 63d89f: 8b 05 57 e2 53 00 mov 0x53e257(%rip),%eax # b7bafc 0.00 : 63d8a5: 85 c0 test %eax,%eax 0.00 : 63d8a7: 0f 84 61 ff ff ff je 63d80e : * From here on, elog(ERROR) should end with exit(1), not send : * control back to the sigsetjmp block above : */ : ExitOnAnyError = true; : /* Normal exit from the bgwriter is here */ : proc_exit(0); /* done */ 0.00 : 63d8ad: 31 ff xor %edi,%edi : { : /* : * From here on, elog(ERROR) should end with exit(1), not send : * control back to the sigsetjmp block above : */ : ExitOnAnyError = true; 0.00 : 63d8af: c6 05 0a c8 57 00 01 movb $0x1,0x57c80a(%rip) # bba0c0 : /* Normal exit from the bgwriter is here */ : proc_exit(0); /* done */ 0.00 : 63d8b6: e8 65 14 04 00 callq 67ed20 0.00 : 63d8bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : /* : * After any checkpoint, close all smgr files. This is so we : * won't hang onto smgr references to deleted files indefinitely. : */ : smgrcloseall(); 0.00 : 63d8c0: e8 1b c1 05 00 callq 6999e0 0.00 : 63d8c5: e9 5e ff ff ff jmpq 63d828 0.00 : 63d8ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * critical that we not hibernate anyway, we try to reduce the odds of : * that by only hibernating when BgBufferSync says nothing's happening : * for two consecutive cycles. Also, we mitigate any possible : * consequences of a missed wakeup by not hibernating forever. : */ : if (rc == WL_TIMEOUT && can_hibernate && prev_hibernate) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/bgwriter.c:373 50.00 : 63d8d0: 45 84 e4 test %r12b,%r12b 0.00 : 63d8d3: 74 8c je 63d861 0.00 : 63d8d5: 45 84 ed test %r13b,%r13b 0.00 : 63d8d8: 74 90 je 63d86a : { : /* Ask for notification at next buffer allocation */ : StrategyNotifyBgWriter(&MyProc->procLatch); 0.00 : 63d8da: 48 8b 3d 67 00 54 00 mov 0x540067(%rip),%rdi # b7d948 0.00 : 63d8e1: 48 83 c7 1c add $0x1c,%rdi 0.00 : 63d8e5: e8 e6 9a 03 00 callq 6773d0 : /* Sleep ... */ : rc = WaitLatch(&MyProc->procLatch, 0.00 : 63d8ea: 8b 15 00 ad 52 00 mov 0x52ad00(%rip),%edx # b685f0 0.00 : 63d8f0: b8 32 00 00 00 mov $0x32,%eax 0.00 : 63d8f5: 48 8b 3d 4c 00 54 00 mov 0x54004c(%rip),%rdi # b7d948 0.00 : 63d8fc: be 19 00 00 00 mov $0x19,%esi 0.00 : 63d901: 0f af d0 imul %eax,%edx 0.00 : 63d904: 48 83 c7 1c add $0x1c,%rdi 0.00 : 63d908: 48 63 d2 movslq %edx,%rdx 0.00 : 63d90b: e8 30 bc ff ff callq 639540 : WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH, : BgWriterDelay * HIBERNATE_FACTOR); : /* Reset the notification request in case we timed out */ : StrategyNotifyBgWriter(NULL); 0.00 : 63d910: 31 ff xor %edi,%edi : if (rc == WL_TIMEOUT && can_hibernate && prev_hibernate) : { : /* Ask for notification at next buffer allocation */ : StrategyNotifyBgWriter(&MyProc->procLatch); : /* Sleep ... */ : rc = WaitLatch(&MyProc->procLatch, 0.00 : 63d912: 89 c3 mov %eax,%ebx : WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH, : BgWriterDelay * HIBERNATE_FACTOR); : /* Reset the notification request in case we timed out */ : StrategyNotifyBgWriter(NULL); 0.00 : 63d914: e8 b7 9a 03 00 callq 6773d0 : : /* : * Emergency bailout if postmaster has died. This is to avoid the : * necessity for manual cleanup of all postmaster children. : */ : if (rc & WL_POSTMASTER_DEATH) 0.00 : 63d919: 83 e3 10 and $0x10,%ebx 0.00 : 63d91c: 0f 84 48 ff ff ff je 63d86a : exit(1); 0.00 : 63d922: bf 01 00 00 00 mov $0x1,%edi 0.00 : 63d927: e8 64 bc e2 ff callq 469590 0.00 : 63d92c: 0f 1f 40 00 nopl 0x0(%rax) : * makes it hard to log regularly. : */ : if (XLogStandbyInfoActive() && !RecoveryInProgress()) : { : TimestampTz timeout = 0; : TimestampTz now = GetCurrentTimestamp(); 0.00 : 63d930: e8 3b 8a 10 00 callq 746370 0.00 : 63d935: 48 89 c3 mov %rax,%rbx : : /* : * only log if enough time has passed and some xlog record has : * been inserted. : */ : if (now >= timeout && 0.00 : 63d938: 48 8b 05 c9 e1 53 00 mov 0x53e1c9(%rip),%rax # b7bb08 0.00 : 63d93f: 48 05 c0 e1 e4 00 add $0xe4e1c0,%rax 0.00 : 63d945: 48 39 c3 cmp %rax,%rbx 0.00 : 63d948: 0f 8c f0 fe ff ff jl 63d83e 0.00 : 63d94e: e8 6d f8 e8 ff callq 4cd1c0 0.00 : 63d953: 48 3b 05 a6 e1 53 00 cmp 0x53e1a6(%rip),%rax # b7bb00 0.00 : 63d95a: 0f 84 de fe ff ff je 63d83e : last_snapshot_lsn != GetXLogInsertRecPtr()) : { : last_snapshot_lsn = LogStandbySnapshot(); 0.00 : 63d960: e8 fb 7c 04 00 callq 685660 : last_snapshot_ts = now; 0.00 : 63d965: 48 89 1d 9c e1 53 00 mov %rbx,0x53e19c(%rip) # b7bb08 : * been inserted. : */ : if (now >= timeout && : last_snapshot_lsn != GetXLogInsertRecPtr()) : { : last_snapshot_lsn = LogStandbySnapshot(); 0.00 : 63d96c: 48 89 05 8d e1 53 00 mov %rax,0x53e18d(%rip) # b7bb00 0.00 : 63d973: e9 c6 fe ff ff jmpq 63d83e : { : /* Since not using PG_TRY, must reset error stack by hand */ : error_context_stack = NULL; : : /* Prevent interrupts while cleaning up */ : HOLD_INTERRUPTS(); 0.00 : 63d978: 8b 05 1a c7 57 00 mov 0x57c71a(%rip),%eax # bba098 : * See notes in postgres.c about the design of this coding. : */ : if (sigsetjmp(local_sigjmp_buf, 1) != 0) : { : /* Since not using PG_TRY, must reset error stack by hand */ : error_context_stack = NULL; 0.00 : 63d97e: 48 c7 05 b7 bc 57 00 movq $0x0,0x57bcb7(%rip) # bb9640 0.00 : 63d985: 00 00 00 00 : : /* Prevent interrupts while cleaning up */ : HOLD_INTERRUPTS(); 0.00 : 63d989: 83 c0 01 add $0x1,%eax 0.00 : 63d98c: 89 05 06 c7 57 00 mov %eax,0x57c706(%rip) # bba098 : : /* Report the error to the server log */ : EmitErrorReport(); 0.00 : 63d992: e8 89 b2 13 00 callq 778c20 : /* : * These operations are really just a minimal subset of : * AbortTransaction(). We don't have very many resources to worry : * about in bgwriter, but we do have LWLocks, buffers, and temp files. : */ : LWLockReleaseAll(); 0.00 : 63d997: e8 e4 1c 05 00 callq 68f680 : AbortBufferIO(); 0.00 : 63d99c: e8 cf 68 03 00 callq 674270 : UnlockBuffers(); 0.00 : 63d9a1: e8 aa 67 03 00 callq 674150 : /* buffer pins are released here: */ : ResourceOwnerRelease(CurrentResourceOwner, 0.00 : 63d9a6: 48 8b 3d 13 cf 57 00 mov 0x57cf13(%rip),%rdi # bba8c0 0.00 : 63d9ad: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 63d9b2: 31 d2 xor %edx,%edx 0.00 : 63d9b4: 31 f6 xor %esi,%esi 0.00 : 63d9b6: e8 e5 da 15 00 callq 79b4a0 : RESOURCE_RELEASE_BEFORE_LOCKS, : false, true); : /* we needn't bother with the other ResourceOwnerRelease phases */ : AtEOXact_Buffers(false); 0.00 : 63d9bb: 31 ff xor %edi,%edi 0.00 : 63d9bd: e8 ce 82 03 00 callq 675c90 : AtEOXact_SMgr(); 0.00 : 63d9c2: e8 a9 bf 05 00 callq 699970 : AtEOXact_Files(); 0.00 : 63d9c7: e8 54 bd 03 00 callq 679720 : AtEOXact_HashTables(false); 0.00 : 63d9cc: 31 ff xor %edi,%edi 0.00 : 63d9ce: e8 1d 5f 14 00 callq 7838f0 0.00 : 63d9d3: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : 63d9da: 48 89 05 7f ce 57 00 mov %rax,0x57ce7f(%rip) # bba860 : /* : * Now return to normal top-level context and clear ErrorContext for : * next time. : */ : MemoryContextSwitchTo(bgwriter_context); : FlushErrorState(); 0.00 : 63d9e1: e8 4a 9c 13 00 callq 777630 : : /* Flush any leaked data in the top-level context */ : MemoryContextResetAndDeleteChildren(bgwriter_context); 0.00 : 63d9e6: 48 8b bd 08 ff ff ff mov -0xf8(%rbp),%rdi 0.00 : 63d9ed: e8 1e b2 15 00 callq 798c10 : : /* Now we can allow interrupts again */ : RESUME_INTERRUPTS(); 0.00 : 63d9f2: 8b 05 a0 c6 57 00 mov 0x57c6a0(%rip),%eax # bba098 : /* : * Sleep at least 1 second after any error. A write error is likely : * to be repeated, and we don't want to be filling the error logs as : * fast as we can. : */ : pg_usleep(1000000L); 0.00 : 63d9f8: bf 40 42 0f 00 mov $0xf4240,%edi : : /* Flush any leaked data in the top-level context */ : MemoryContextResetAndDeleteChildren(bgwriter_context); : : /* Now we can allow interrupts again */ : RESUME_INTERRUPTS(); 0.00 : 63d9fd: 83 e8 01 sub $0x1,%eax 0.00 : 63da00: 89 05 92 c6 57 00 mov %eax,0x57c692(%rip) # bba098 : /* : * Sleep at least 1 second after any error. A write error is likely : * to be repeated, and we don't want to be filling the error logs as : * fast as we can. : */ : pg_usleep(1000000L); 0.00 : 63da06: e8 45 ed 16 00 callq 7ac750 : /* : * Close all open files after any error. This is helpful on Windows, : * where holding deleted files open causes various strange errors. : * It's not clear we need it elsewhere, but shouldn't hurt. : */ : smgrcloseall(); 0.00 : 63da0b: e8 d0 bf 05 00 callq 6999e0 0.00 : 63da10: e9 bf fd ff ff jmpq 63d7d4 : * child processes, but for consistency we make all postmaster child : * processes do this.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) : elog(FATAL, "setsid() failed: %m"); 0.00 : 63da15: ba 60 e8 89 00 mov $0x89e860,%edx 0.00 : 63da1a: be 7c 00 00 00 mov $0x7c,%esi 0.00 : 63da1f: bf 3c e8 89 00 mov $0x89e83c,%edi 0.00 : 63da24: e8 f7 d9 13 00 callq 77b420 0.00 : 63da29: be 83 fe 7b 00 mov $0x7bfe83,%esi 0.00 : 63da2e: bf 15 00 00 00 mov $0x15,%edi 0.00 : 63da33: 31 c0 xor %eax,%eax 0.00 : 63da35: e8 f6 d7 13 00 callq 77b230 0.00 : 63da3a: e8 91 ba e2 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:3225 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000643b20 : : * The argc/argv parameters are valid only in EXEC_BACKEND case. : * ---------- : */ : NON_EXEC_STATIC void : PgstatCollectorMain(int argc, char *argv[]) : { 0.00 : 643b20: 55 push %rbp 0.00 : 643b21: 48 89 e5 mov %rsp,%rbp 0.00 : 643b24: 41 57 push %r15 0.00 : 643b26: 41 56 push %r14 0.00 : 643b28: 41 55 push %r13 0.00 : 643b2a: 41 54 push %r12 0.00 : 643b2c: 53 push %rbx 0.00 : 643b2d: 48 81 ec 18 08 00 00 sub $0x818,%rsp : int len; : PgStat_Msg msg; : int wr; : : IsUnderPostmaster = true; /* we are a postmaster subprocess now */ 0.00 : 643b34: c6 05 82 65 57 00 01 movb $0x1,0x576582(%rip) # bba0bd : : MyProcPid = getpid(); /* reset MyProcPid */ 0.00 : 643b3b: e8 10 5c e2 ff callq 469750 : : MyStartTime = time(NULL); /* record Start Time for logging */ 0.00 : 643b40: 31 ff xor %edi,%edi : PgStat_Msg msg; : int wr; : : IsUnderPostmaster = true; /* we are a postmaster subprocess now */ : : MyProcPid = getpid(); /* reset MyProcPid */ 0.00 : 643b42: 89 05 9c c1 57 00 mov %eax,0x57c19c(%rip) # bbfce4 : : MyStartTime = time(NULL); /* record Start Time for logging */ 0.00 : 643b48: e8 53 66 e2 ff callq 46a1a0 0.00 : 643b4d: 48 89 05 b4 c9 57 00 mov %rax,0x57c9b4(%rip) # bc0508 : * can signal any child processes too. (pgstat probably never has any : * child processes, but for consistency we make all postmaster child : * processes do this.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) 0.00 : 643b54: e8 07 59 e2 ff callq 469460 0.00 : 643b59: 85 c0 test %eax,%eax 0.00 : 643b5b: 0f 88 56 0d 00 00 js 6448b7 : elog(FATAL, "setsid() failed: %m"); : #endif : : InitializeLatchSupport(); /* needed for latch waits */ 0.00 : 643b61: e8 fa 59 ff ff callq 639560 : : /* Initialize private latch for use by signal handlers */ : InitLatch(&pgStatLatch); 0.00 : 643b66: bf 58 bd b7 00 mov $0xb7bd58,%edi : */ : #ifdef WIN32 : pgwin32_noblock = 1; : #endif : : len = recv(pgStatSock, (char *) &msg, 0.00 : 643b6b: 4c 8d ad e0 fb ff ff lea -0x420(%rbp),%r13 : #endif : : InitializeLatchSupport(); /* needed for latch waits */ : : /* Initialize private latch for use by signal handlers */ : InitLatch(&pgStatLatch); 0.00 : 643b72: e8 79 54 ff ff callq 638ff0 : /* : * Ignore all signals usually bound to some action in the postmaster, : * except SIGHUP and SIGQUIT. Note we don't need a SIGUSR1 handler to : * support latch operations, because pgStatLatch is local not shared. : */ : pqsignal(SIGHUP, pgstat_sighup_handler); 0.00 : 643b77: be e0 49 64 00 mov $0x6449e0,%esi 0.00 : 643b7c: bf 01 00 00 00 mov $0x1,%edi 0.00 : 643b81: e8 7a 8f 16 00 callq 7acb00 : pqsignal(SIGINT, SIG_IGN); 0.00 : 643b86: be 01 00 00 00 mov $0x1,%esi 0.00 : 643b8b: bf 02 00 00 00 mov $0x2,%edi 0.00 : 643b90: e8 6b 8f 16 00 callq 7acb00 : pqsignal(SIGTERM, SIG_IGN); 0.00 : 643b95: be 01 00 00 00 mov $0x1,%esi 0.00 : 643b9a: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 643b9f: e8 5c 8f 16 00 callq 7acb00 : pqsignal(SIGQUIT, pgstat_exit); 0.00 : 643ba4: be a0 49 64 00 mov $0x6449a0,%esi 0.00 : 643ba9: bf 03 00 00 00 mov $0x3,%edi 0.00 : 643bae: e8 4d 8f 16 00 callq 7acb00 : pqsignal(SIGALRM, SIG_IGN); 0.00 : 643bb3: be 01 00 00 00 mov $0x1,%esi 0.00 : 643bb8: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 643bbd: e8 3e 8f 16 00 callq 7acb00 : pqsignal(SIGPIPE, SIG_IGN); 0.00 : 643bc2: be 01 00 00 00 mov $0x1,%esi 0.00 : 643bc7: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 643bcc: e8 2f 8f 16 00 callq 7acb00 : pqsignal(SIGUSR1, SIG_IGN); 0.00 : 643bd1: be 01 00 00 00 mov $0x1,%esi 0.00 : 643bd6: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 643bdb: e8 20 8f 16 00 callq 7acb00 : pqsignal(SIGUSR2, SIG_IGN); 0.00 : 643be0: be 01 00 00 00 mov $0x1,%esi 0.00 : 643be5: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 643bea: e8 11 8f 16 00 callq 7acb00 : pqsignal(SIGCHLD, SIG_DFL); 0.00 : 643bef: 31 f6 xor %esi,%esi 0.00 : 643bf1: bf 11 00 00 00 mov $0x11,%edi 0.00 : 643bf6: e8 05 8f 16 00 callq 7acb00 : pqsignal(SIGTTIN, SIG_DFL); 0.00 : 643bfb: 31 f6 xor %esi,%esi 0.00 : 643bfd: bf 15 00 00 00 mov $0x15,%edi 0.00 : 643c02: e8 f9 8e 16 00 callq 7acb00 : pqsignal(SIGTTOU, SIG_DFL); 0.00 : 643c07: 31 f6 xor %esi,%esi 0.00 : 643c09: bf 16 00 00 00 mov $0x16,%edi 0.00 : 643c0e: e8 ed 8e 16 00 callq 7acb00 : pqsignal(SIGCONT, SIG_DFL); 0.00 : 643c13: 31 f6 xor %esi,%esi 0.00 : 643c15: bf 12 00 00 00 mov $0x12,%edi 0.00 : 643c1a: e8 e1 8e 16 00 callq 7acb00 : pqsignal(SIGWINCH, SIG_DFL); 0.00 : 643c1f: 31 f6 xor %esi,%esi 0.00 : 643c21: bf 1c 00 00 00 mov $0x1c,%edi 0.00 : 643c26: e8 d5 8e 16 00 callq 7acb00 : PG_SETMASK(&UnBlockSig); 0.00 : 643c2b: 31 d2 xor %edx,%edx 0.00 : 643c2d: be 40 f8 bb 00 mov $0xbbf840,%esi 0.00 : 643c32: bf 02 00 00 00 mov $0x2,%edi 0.00 : 643c37: e8 84 5e e2 ff callq 469ac0 : : /* : * Identify myself via ps : */ : init_ps_display("stats collector process", "", "", ""); 0.00 : 643c3c: b9 96 16 8e 00 mov $0x8e1696,%ecx 0.00 : 643c41: bf 7d f0 89 00 mov $0x89f07d,%edi 0.00 : 643c46: 48 89 ca mov %rcx,%rdx 0.00 : 643c49: 48 89 ce mov %rcx,%rsi 0.00 : 643c4c: e8 8f 20 15 00 callq 795ce0 : /* : * Read in an existing statistics stats file or initialize the stats to : * zero. : */ : pgStatRunningInCollector = true; : pgStatDBHash = pgstat_read_statsfiles(InvalidOid, true, true); 0.00 : 643c51: ba 01 00 00 00 mov $0x1,%edx 0.00 : 643c56: be 01 00 00 00 mov $0x1,%esi 0.00 : 643c5b: 31 ff xor %edi,%edi : : /* : * Read in an existing statistics stats file or initialize the stats to : * zero. : */ : pgStatRunningInCollector = true; 0.00 : 643c5d: c6 05 24 80 53 00 01 movb $0x1,0x538024(%rip) # b7bc88 : pgStatDBHash = pgstat_read_statsfiles(InvalidOid, true, true); 0.00 : 643c64: e8 97 d4 ff ff callq 641100 : } : else : { : /* Successful archival operation */ : ++archiverStats.archived_count; : memcpy(archiverStats.last_archived_wal, msg->m_xlog, 0.00 : 643c69: 49 8d 55 09 lea 0x9(%r13),%rdx : /* : * Read in an existing statistics stats file or initialize the stats to : * zero. : */ : pgStatRunningInCollector = true; : pgStatDBHash = pgstat_read_statsfiles(InvalidOid, true, true); 0.00 : 643c6d: 48 89 05 64 7f 53 00 mov %rax,0x537f64(%rip) # b7bbd8 : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) 0.00 : 643c74: 49 8d 45 10 lea 0x10(%r13),%rax : } : else : { : /* Successful archival operation */ : ++archiverStats.archived_count; : memcpy(archiverStats.last_archived_wal, msg->m_xlog, 0.00 : 643c78: 48 89 95 c8 f7 ff ff mov %rdx,-0x838(%rbp) : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) 0.00 : 643c7f: 48 89 85 d0 f7 ff ff mov %rax,-0x830(%rbp) 0.00 : 643c86: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 643c8d: 00 00 00 : * action. : */ : for (;;) : { : /* Clear any already-pending wakeups */ : ResetLatch(&pgStatLatch); /home/Computational/mark/src/postgres-andres/src/backend/postmaster/pgstat.c:3225 100.00 : 643c90: bf 58 bd b7 00 mov $0xb7bd58,%edi 0.00 : 643c95: e8 a6 53 ff ff callq 639040 : : /* : * Quit if we get SIGQUIT from the postmaster. : */ : if (need_exit) 0.00 : 643c9a: 0f b6 05 a7 80 53 00 movzbl 0x5380a7(%rip),%eax # b7bd48 0.00 : 643ca1: 84 c0 test %al,%al 0.00 : 643ca3: 74 40 je 643ce5 0.00 : 643ca5: e9 aa 00 00 00 jmpq 643d54 0.00 : 643caa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * ---------- : */ : static bool : pgstat_write_statsfile_needed(void) : { : if (!slist_is_empty(&last_statrequests)) 0.00 : 643cb0: 48 83 3d 98 80 53 00 cmpq $0x0,0x538098(%rip) # b7bd50 0.00 : 643cb7: 00 0.00 : 643cb8: 74 09 je 643cc3 : /* : * Write the stats file if a new request has arrived that is not : * satisfied by existing file. : */ : if (pgstat_write_statsfile_needed()) : pgstat_write_statsfiles(false, false); 0.00 : 643cba: 31 f6 xor %esi,%esi 0.00 : 643cbc: 31 ff xor %edi,%edi 0.00 : 643cbe: e8 1d fb ff ff callq 6437e0 : */ : #ifdef WIN32 : pgwin32_noblock = 1; : #endif : : len = recv(pgStatSock, (char *) &msg, 0.00 : 643cc3: 8b 3d 47 49 52 00 mov 0x524947(%rip),%edi # b68610 0.00 : 643cc9: 31 c9 xor %ecx,%ecx 0.00 : 643ccb: ba e8 03 00 00 mov $0x3e8,%edx 0.00 : 643cd0: 4c 89 ee mov %r13,%rsi 0.00 : 643cd3: e8 88 59 e2 ff callq 469660 : : #ifdef WIN32 : pgwin32_noblock = 0; : #endif : : if (len < 0) 0.00 : 643cd8: 85 c0 test %eax,%eax 0.00 : 643cda: 0f 88 90 00 00 00 js 643d70 : } : : /* : * We ignore messages that are smaller than our common header : */ : if (len < sizeof(PgStat_MsgHdr)) 0.00 : 643ce0: 83 f8 07 cmp $0x7,%eax 0.00 : 643ce3: 77 2b ja 643d10 : : /* : * Inner loop iterates as long as we keep getting messages, or until : * need_exit becomes set. : */ : while (!need_exit) 0.00 : 643ce5: 0f b6 05 5c 80 53 00 movzbl 0x53805c(%rip),%eax # b7bd48 0.00 : 643cec: 84 c0 test %al,%al 0.00 : 643cee: 75 40 jne 643d30 : { : /* : * Reload configuration if we got SIGHUP from the postmaster. : */ : if (got_SIGHUP) 0.00 : 643cf0: 0f b6 05 52 80 53 00 movzbl 0x538052(%rip),%eax # b7bd49 0.00 : 643cf7: 84 c0 test %al,%al 0.00 : 643cf9: 74 b5 je 643cb0 : { : got_SIGHUP = false; : ProcessConfigFile(PGC_SIGHUP); 0.00 : 643cfb: bf 02 00 00 00 mov $0x2,%edi : /* : * Reload configuration if we got SIGHUP from the postmaster. : */ : if (got_SIGHUP) : { : got_SIGHUP = false; 0.00 : 643d00: c6 05 42 80 53 00 00 movb $0x0,0x538042(%rip) # b7bd49 : ProcessConfigFile(PGC_SIGHUP); 0.00 : 643d07: e8 f4 0a 15 00 callq 794800 0.00 : 643d0c: eb a2 jmp 643cb0 0.00 : 643d0e: 66 90 xchg %ax,%ax : continue; : : /* : * The received length must match the length in the header : */ : if (msg.msg_hdr.m_size != len) 0.00 : 643d10: 39 85 e4 fb ff ff cmp %eax,-0x41c(%rbp) 0.00 : 643d16: 75 cd jne 643ce5 : continue; : : /* : * O.K. - we accept this message. Process it. : */ : switch (msg.msg_hdr.m_type) 0.00 : 643d18: 83 bd e0 fb ff ff 11 cmpl $0x11,-0x420(%rbp) 0.00 : 643d1f: 77 c4 ja 643ce5 0.00 : 643d21: 8b 85 e0 fb ff ff mov -0x420(%rbp),%eax 0.00 : 643d27: ff 24 c5 80 f7 89 00 jmpq *0x89f780(,%rax,8) 0.00 : 643d2e: 66 90 xchg %ax,%ax : } : } /* end of inner message-processing loop */ : : /* Sleep until there's something to do */ : #ifndef WIN32 : wr = WaitLatchOrSocket(&pgStatLatch, 0.00 : 643d30: 8b 15 da 48 52 00 mov 0x5248da(%rip),%edx # b68610 0.00 : 643d36: 48 c7 c1 ff ff ff ff mov $0xffffffffffffffff,%rcx 0.00 : 643d3d: be 13 00 00 00 mov $0x13,%esi 0.00 : 643d42: bf 58 bd b7 00 mov $0xb7bd58,%edi 0.00 : 643d47: e8 04 54 ff ff callq 639150 : : /* : * Emergency bailout if postmaster has died. This is to avoid the : * necessity for manual cleanup of all postmaster children. : */ : if (wr & WL_POSTMASTER_DEATH) 0.00 : 643d4c: a8 10 test $0x10,%al 0.00 : 643d4e: 0f 84 3c ff ff ff je 643c90 : } /* end of outer loop */ : : /* : * Save the final stats to reuse at next startup. : */ : pgstat_write_statsfiles(true, true); 0.00 : 643d54: bf 01 00 00 00 mov $0x1,%edi 0.00 : 643d59: be 01 00 00 00 mov $0x1,%esi 0.00 : 643d5e: e8 7d fa ff ff callq 6437e0 : : exit(0); 0.00 : 643d63: 31 ff xor %edi,%edi 0.00 : 643d65: e8 26 58 e2 ff callq 469590 0.00 : 643d6a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : pgwin32_noblock = 0; : #endif : : if (len < 0) : { : if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) 0.00 : 643d70: e8 4b 5f e2 ff callq 469cc0 <__errno_location@plt> 0.00 : 643d75: 8b 00 mov (%rax),%eax 0.00 : 643d77: 83 f8 0b cmp $0xb,%eax 0.00 : 643d7a: 74 b4 je 643d30 0.00 : 643d7c: 83 f8 04 cmp $0x4,%eax 0.00 : 643d7f: 90 nop 0.00 : 643d80: 74 ae je 643d30 : break; /* out of inner loop */ : ereport(ERROR, 0.00 : 643d82: 45 31 c0 xor %r8d,%r8d 0.00 : 643d85: b9 60 f9 89 00 mov $0x89f960,%ecx 0.00 : 643d8a: ba d0 0c 00 00 mov $0xcd0,%edx 0.00 : 643d8f: be 88 ef 89 00 mov $0x89ef88,%esi 0.00 : 643d94: bf 14 00 00 00 mov $0x14,%edi 0.00 : 643d99: e8 22 6d 13 00 callq 77aac0 0.00 : 643d9e: 84 c0 test %al,%al 0.00 : 643da0: 0f 85 af 0a 00 00 jne 644855 : hash_destroy(dbentry->functions); : : if (hash_search(pgStatDBHash, : (void *) &dbid, : HASH_REMOVE, NULL) == NULL) : ereport(ERROR, 0.00 : 643da6: e8 25 57 e2 ff callq 4694d0 : static void : pgstat_recv_deadlock(PgStat_MsgDeadlock *msg, int len) : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 643dab: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 643db1: be 01 00 00 00 mov $0x1,%esi 0.00 : 643db6: e8 55 d1 ff ff callq 640f10 : : dbentry->n_deadlocks++; 0.00 : 643dbb: 48 83 80 90 00 00 00 addq $0x1,0x90(%rax) 0.00 : 643dc2: 01 : pgstat_recv_recoveryconflict((PgStat_MsgRecoveryConflict *) &msg, len); : break; : : case PGSTAT_MTYPE_DEADLOCK: : pgstat_recv_deadlock((PgStat_MsgDeadlock *) &msg, len); : break; 0.00 : 643dc3: e9 1d ff ff ff jmpq 643ce5 : { : slist_iter iter; : DBWriteRequest *newreq; : PgStat_StatDBEntry *dbentry; : : elog(DEBUG2, "received inquiry for %d", msg->databaseid); 0.00 : 643dc8: ba 80 f9 89 00 mov $0x89f980,%edx 0.00 : 643dcd: be bf 11 00 00 mov $0x11bf,%esi 0.00 : 643dd2: bf 88 ef 89 00 mov $0x89ef88,%edi 0.00 : 643dd7: e8 44 76 13 00 callq 77b420 0.00 : 643ddc: 8b 95 f8 fb ff ff mov -0x408(%rbp),%edx 0.00 : 643de2: 31 c0 xor %eax,%eax 0.00 : 643de4: be 95 f0 89 00 mov $0x89f095,%esi 0.00 : 643de9: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 643dee: e8 3d 74 13 00 callq 77b230 : * Note that if a request is found, we return early and skip the below : * check for clock skew. This is okay, since the only way for a DB : * request to be present in the list is that we have been here since the : * last write round. : */ : slist_foreach(iter, &last_statrequests) 0.00 : 643df3: 48 8b 05 56 7f 53 00 mov 0x537f56(%rip),%rax # b7bd50 0.00 : 643dfa: 48 85 c0 test %rax,%rax 0.00 : 643dfd: 74 2e je 643e2d : { : DBWriteRequest *req = slist_container(DBWriteRequest, next, iter.cur); : : if (req->databaseid != msg->databaseid) 0.00 : 643dff: 8b 8d f8 fb ff ff mov -0x408(%rbp),%ecx 0.00 : 643e05: 39 48 f0 cmp %ecx,-0x10(%rax) : * request to be present in the list is that we have been here since the : * last write round. : */ : slist_foreach(iter, &last_statrequests) : { : DBWriteRequest *req = slist_container(DBWriteRequest, next, iter.cur); 0.00 : 643e08: 48 8d 50 f0 lea -0x10(%rax),%rdx : : if (req->databaseid != msg->databaseid) 0.00 : 643e0c: 75 17 jne 643e25 0.00 : 643e0e: e9 5f 09 00 00 jmpq 644772 0.00 : 643e13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 643e18: 39 48 f0 cmp %ecx,-0x10(%rax) : * request to be present in the list is that we have been here since the : * last write round. : */ : slist_foreach(iter, &last_statrequests) : { : DBWriteRequest *req = slist_container(DBWriteRequest, next, iter.cur); 0.00 : 643e1b: 48 8d 50 f0 lea -0x10(%rax),%rdx : : if (req->databaseid != msg->databaseid) 0.00 : 643e1f: 0f 84 4d 09 00 00 je 644772 : * Note that if a request is found, we return early and skip the below : * check for clock skew. This is okay, since the only way for a DB : * request to be present in the list is that we have been here since the : * last write round. : */ : slist_foreach(iter, &last_statrequests) 0.00 : 643e25: 48 8b 00 mov (%rax),%rax 0.00 : 643e28: 48 85 c0 test %rax,%rax 0.00 : 643e2b: 75 eb jne 643e18 : } : : /* : * There's no request for this DB yet, so create one. : */ : newreq = palloc(sizeof(DBWriteRequest)); 0.00 : 643e2d: bf 18 00 00 00 mov $0x18,%edi 0.00 : 643e32: e8 19 4f 15 00 callq 798d50 0.00 : 643e37: 48 89 85 d8 f7 ff ff mov %rax,-0x828(%rbp) : : newreq->databaseid = msg->databaseid; 0.00 : 643e3e: 8b 85 f8 fb ff ff mov -0x408(%rbp),%eax : * the more likely explanation is just delayed message receipt. It is : * worth expending a GetCurrentTimestamp call to be sure, since a large : * retreat in the system clock reading could otherwise cause us to neglect : * to update the stats file for a long time. : */ : dbentry = pgstat_get_db_entry(msg->databaseid, false); 0.00 : 643e44: 31 f6 xor %esi,%esi : /* : * There's no request for this DB yet, so create one. : */ : newreq = palloc(sizeof(DBWriteRequest)); : : newreq->databaseid = msg->databaseid; 0.00 : 643e46: 48 8b 95 d8 f7 ff ff mov -0x828(%rbp),%rdx 0.00 : 643e4d: 89 02 mov %eax,(%rdx) : newreq->request_time = msg->clock_time; 0.00 : 643e4f: 48 8b 85 e8 fb ff ff mov -0x418(%rbp),%rax 0.00 : 643e56: 48 89 42 08 mov %rax,0x8(%rdx) : * Insert a node at the beginning of the list. : */ : STATIC_IF_INLINE void : slist_push_head(slist_head *head, slist_node *node) : { : node->next = head->head.next; 0.00 : 643e5a: 48 8b 05 ef 7e 53 00 mov 0x537eef(%rip),%rax # b7bd50 0.00 : 643e61: 48 89 42 10 mov %rax,0x10(%rdx) : * the more likely explanation is just delayed message receipt. It is : * worth expending a GetCurrentTimestamp call to be sure, since a large : * retreat in the system clock reading could otherwise cause us to neglect : * to update the stats file for a long time. : */ : dbentry = pgstat_get_db_entry(msg->databaseid, false); 0.00 : 643e65: 8b bd f8 fb ff ff mov -0x408(%rbp),%edi : head->head.next = node; 0.00 : 643e6b: 48 89 d0 mov %rdx,%rax 0.00 : 643e6e: 48 83 c0 10 add $0x10,%rax 0.00 : 643e72: 48 89 05 d7 7e 53 00 mov %rax,0x537ed7(%rip) # b7bd50 0.00 : 643e79: e8 92 d0 ff ff callq 640f10 : if ((dbentry != NULL) && (msg->clock_time < dbentry->stats_timestamp)) 0.00 : 643e7e: 48 85 c0 test %rax,%rax : * the more likely explanation is just delayed message receipt. It is : * worth expending a GetCurrentTimestamp call to be sure, since a large : * retreat in the system clock reading could otherwise cause us to neglect : * to update the stats file for a long time. : */ : dbentry = pgstat_get_db_entry(msg->databaseid, false); 0.00 : 643e81: 49 89 c6 mov %rax,%r14 : if ((dbentry != NULL) && (msg->clock_time < dbentry->stats_timestamp)) 0.00 : 643e84: 0f 84 5b fe ff ff je 643ce5 0.00 : 643e8a: 48 8b 80 b0 00 00 00 mov 0xb0(%rax),%rax 0.00 : 643e91: 48 39 85 e8 fb ff ff cmp %rax,-0x418(%rbp) 0.00 : 643e98: 0f 8d 47 fe ff ff jge 643ce5 : { : TimestampTz cur_ts = GetCurrentTimestamp(); 0.00 : 643e9e: e8 cd 24 10 00 callq 746370 : : if (cur_ts < dbentry->stats_timestamp) 0.00 : 643ea3: 49 8b be b0 00 00 00 mov 0xb0(%r14),%rdi : * to update the stats file for a long time. : */ : dbentry = pgstat_get_db_entry(msg->databaseid, false); : if ((dbentry != NULL) && (msg->clock_time < dbentry->stats_timestamp)) : { : TimestampTz cur_ts = GetCurrentTimestamp(); 0.00 : 643eaa: 49 89 c7 mov %rax,%r15 : : if (cur_ts < dbentry->stats_timestamp) 0.00 : 643ead: 48 39 f8 cmp %rdi,%rax 0.00 : 643eb0: 0f 8d 2f fe ff ff jge 643ce5 : */ : char *writetime; : char *mytime; : : /* Copy because timestamptz_to_str returns a static buffer */ : writetime = pstrdup(timestamptz_to_str(dbentry->stats_timestamp)); 0.00 : 643eb6: e8 f5 23 10 00 callq 7462b0 0.00 : 643ebb: 48 89 c7 mov %rax,%rdi 0.00 : 643ebe: e8 8d 50 15 00 callq 798f50 : mytime = pstrdup(timestamptz_to_str(cur_ts)); 0.00 : 643ec3: 4c 89 ff mov %r15,%rdi : */ : char *writetime; : char *mytime; : : /* Copy because timestamptz_to_str returns a static buffer */ : writetime = pstrdup(timestamptz_to_str(dbentry->stats_timestamp)); 0.00 : 643ec6: 49 89 c4 mov %rax,%r12 : mytime = pstrdup(timestamptz_to_str(cur_ts)); 0.00 : 643ec9: e8 e2 23 10 00 callq 7462b0 0.00 : 643ece: 48 89 c7 mov %rax,%rdi 0.00 : 643ed1: e8 7a 50 15 00 callq 798f50 : elog(LOG, 0.00 : 643ed6: ba 80 f9 89 00 mov $0x89f980,%edx 0.00 : 643edb: be fa 11 00 00 mov $0x11fa,%esi 0.00 : 643ee0: bf 88 ef 89 00 mov $0x89ef88,%edi : char *writetime; : char *mytime; : : /* Copy because timestamptz_to_str returns a static buffer */ : writetime = pstrdup(timestamptz_to_str(dbentry->stats_timestamp)); : mytime = pstrdup(timestamptz_to_str(cur_ts)); 0.00 : 643ee5: 48 89 c3 mov %rax,%rbx : elog(LOG, 0.00 : 643ee8: e8 33 75 13 00 callq 77b420 0.00 : 643eed: 45 8b 06 mov (%r14),%r8d 0.00 : 643ef0: 4c 89 e2 mov %r12,%rdx 0.00 : 643ef3: 31 c0 xor %eax,%eax 0.00 : 643ef5: 48 89 d9 mov %rbx,%rcx 0.00 : 643ef8: be c0 f3 89 00 mov $0x89f3c0,%esi 0.00 : 643efd: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 643f02: e8 29 73 13 00 callq 77b230 : "stats_timestamp %s is later than collector's time %s for db %d", : writetime, mytime, dbentry->databaseid); : pfree(writetime); 0.00 : 643f07: 4c 89 e7 mov %r12,%rdi 0.00 : 643f0a: e8 71 4c 15 00 callq 798b80 : pfree(mytime); 0.00 : 643f0f: 48 89 df mov %rbx,%rdi 0.00 : 643f12: e8 69 4c 15 00 callq 798b80 : : newreq->request_time = cur_ts; 0.00 : 643f17: 48 8b 95 d8 f7 ff ff mov -0x828(%rbp),%rdx : dbentry->stats_timestamp = cur_ts - 1; 0.00 : 643f1e: 49 8d 47 ff lea -0x1(%r15),%rax : "stats_timestamp %s is later than collector's time %s for db %d", : writetime, mytime, dbentry->databaseid); : pfree(writetime); : pfree(mytime); : : newreq->request_time = cur_ts; 0.00 : 643f22: 4c 89 7a 08 mov %r15,0x8(%rdx) : dbentry->stats_timestamp = cur_ts - 1; 0.00 : 643f26: 49 89 86 b0 00 00 00 mov %rax,0xb0(%r14) 0.00 : 643f2d: e9 b3 fd ff ff jmpq 643ce5 : PgStat_StatDBEntry *dbentry; : PgStat_StatTabEntry *tabentry; : int i; : bool found; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 643f32: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 643f38: be 01 00 00 00 mov $0x1,%esi 0.00 : 643f3d: e8 ce cf ff ff callq 640f10 0.00 : 643f42: 49 89 c4 mov %rax,%r12 : : /* : * Update database-wide stats. : */ : dbentry->n_xact_commit += (PgStat_Counter) (msg->m_xact_commit); 0.00 : 643f45: 48 63 85 f0 fb ff ff movslq -0x410(%rbp),%rax 0.00 : 643f4c: 49 01 44 24 08 add %rax,0x8(%r12) : dbentry->n_xact_rollback += (PgStat_Counter) (msg->m_xact_rollback); 0.00 : 643f51: 48 63 85 f4 fb ff ff movslq -0x40c(%rbp),%rax 0.00 : 643f58: 49 01 44 24 10 add %rax,0x10(%r12) : dbentry->n_block_read_time += msg->m_block_read_time; 0.00 : 643f5d: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax 0.00 : 643f64: 49 01 84 24 98 00 00 add %rax,0x98(%r12) 0.00 : 643f6b: 00 : dbentry->n_block_write_time += msg->m_block_write_time; 0.00 : 643f6c: 48 8b 85 00 fc ff ff mov -0x400(%rbp),%rax 0.00 : 643f73: 49 01 84 24 a0 00 00 add %rax,0xa0(%r12) 0.00 : 643f7a: 00 : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 643f7b: 44 8b 9d ec fb ff ff mov -0x414(%rbp),%r11d 0.00 : 643f82: 45 85 db test %r11d,%r11d 0.00 : 643f85: 0f 8e 5a fd ff ff jle 643ce5 0.00 : 643f8b: 45 31 ff xor %r15d,%r15d 0.00 : 643f8e: e9 7d 01 00 00 jmpq 644110 : { : /* : * If it's a new table entry, initialize counters to the values we : * just got. : */ : tabentry->numscans = tabmsg->t_counts.t_numscans; 0.00 : 643f93: 48 8b 84 1d 10 fc ff mov -0x3f0(%rbp,%rbx,1),%rax 0.00 : 643f9a: ff 0.00 : 643f9b: 48 89 42 08 mov %rax,0x8(%rdx) : tabentry->tuples_returned = tabmsg->t_counts.t_tuples_returned; 0.00 : 643f9f: 48 8b 84 1d 18 fc ff mov -0x3e8(%rbp,%rbx,1),%rax 0.00 : 643fa6: ff 0.00 : 643fa7: 48 89 42 10 mov %rax,0x10(%rdx) : tabentry->tuples_fetched = tabmsg->t_counts.t_tuples_fetched; 0.00 : 643fab: 48 8b 84 1d 20 fc ff mov -0x3e0(%rbp,%rbx,1),%rax 0.00 : 643fb2: ff 0.00 : 643fb3: 48 89 42 18 mov %rax,0x18(%rdx) : tabentry->tuples_inserted = tabmsg->t_counts.t_tuples_inserted; 0.00 : 643fb7: 48 8b 84 1d 28 fc ff mov -0x3d8(%rbp,%rbx,1),%rax 0.00 : 643fbe: ff 0.00 : 643fbf: 48 89 42 20 mov %rax,0x20(%rdx) : tabentry->tuples_updated = tabmsg->t_counts.t_tuples_updated; 0.00 : 643fc3: 48 8b 84 1d 30 fc ff mov -0x3d0(%rbp,%rbx,1),%rax 0.00 : 643fca: ff 0.00 : 643fcb: 48 89 42 28 mov %rax,0x28(%rdx) : tabentry->tuples_deleted = tabmsg->t_counts.t_tuples_deleted; 0.00 : 643fcf: 48 8b 84 1d 38 fc ff mov -0x3c8(%rbp,%rbx,1),%rax 0.00 : 643fd6: ff 0.00 : 643fd7: 48 89 42 30 mov %rax,0x30(%rdx) : tabentry->tuples_hot_updated = tabmsg->t_counts.t_tuples_hot_updated; 0.00 : 643fdb: 48 8b 84 1d 40 fc ff mov -0x3c0(%rbp,%rbx,1),%rax 0.00 : 643fe2: ff 0.00 : 643fe3: 48 89 42 38 mov %rax,0x38(%rdx) : tabentry->n_live_tuples = tabmsg->t_counts.t_delta_live_tuples; 0.00 : 643fe7: 48 8b 84 1d 48 fc ff mov -0x3b8(%rbp,%rbx,1),%rax 0.00 : 643fee: ff 0.00 : 643fef: 48 89 42 40 mov %rax,0x40(%rdx) : tabentry->n_dead_tuples = tabmsg->t_counts.t_delta_dead_tuples; 0.00 : 643ff3: 48 8b 84 1d 50 fc ff mov -0x3b0(%rbp,%rbx,1),%rax 0.00 : 643ffa: ff 0.00 : 643ffb: 48 89 42 48 mov %rax,0x48(%rdx) : tabentry->changes_since_analyze = tabmsg->t_counts.t_changed_tuples; 0.00 : 643fff: 48 8b 84 1d 58 fc ff mov -0x3a8(%rbp,%rbx,1),%rax 0.00 : 644006: ff 0.00 : 644007: 48 89 42 50 mov %rax,0x50(%rdx) : tabentry->blocks_fetched = tabmsg->t_counts.t_blocks_fetched; 0.00 : 64400b: 48 8b 84 1d 60 fc ff mov -0x3a0(%rbp,%rbx,1),%rax 0.00 : 644012: ff 0.00 : 644013: 48 89 42 58 mov %rax,0x58(%rdx) : tabentry->blocks_hit = tabmsg->t_counts.t_blocks_hit; 0.00 : 644017: 48 8b 84 1d 68 fc ff mov -0x398(%rbp,%rbx,1),%rax 0.00 : 64401e: ff : : tabentry->vacuum_timestamp = 0; 0.00 : 64401f: 48 c7 42 68 00 00 00 movq $0x0,0x68(%rdx) 0.00 : 644026: 00 : tabentry->vacuum_count = 0; 0.00 : 644027: 48 c7 42 70 00 00 00 movq $0x0,0x70(%rdx) 0.00 : 64402e: 00 : tabentry->autovac_vacuum_timestamp = 0; 0.00 : 64402f: 48 c7 42 78 00 00 00 movq $0x0,0x78(%rdx) 0.00 : 644036: 00 : tabentry->autovac_vacuum_count = 0; 0.00 : 644037: 48 c7 82 80 00 00 00 movq $0x0,0x80(%rdx) 0.00 : 64403e: 00 00 00 00 : tabentry->tuples_hot_updated = tabmsg->t_counts.t_tuples_hot_updated; : tabentry->n_live_tuples = tabmsg->t_counts.t_delta_live_tuples; : tabentry->n_dead_tuples = tabmsg->t_counts.t_delta_dead_tuples; : tabentry->changes_since_analyze = tabmsg->t_counts.t_changed_tuples; : tabentry->blocks_fetched = tabmsg->t_counts.t_blocks_fetched; : tabentry->blocks_hit = tabmsg->t_counts.t_blocks_hit; 0.00 : 644042: 48 89 42 60 mov %rax,0x60(%rdx) : : tabentry->vacuum_timestamp = 0; : tabentry->vacuum_count = 0; : tabentry->autovac_vacuum_timestamp = 0; : tabentry->autovac_vacuum_count = 0; : tabentry->analyze_timestamp = 0; 0.00 : 644046: 48 c7 82 88 00 00 00 movq $0x0,0x88(%rdx) 0.00 : 64404d: 00 00 00 00 : tabentry->analyze_count = 0; 0.00 : 644051: 48 c7 82 90 00 00 00 movq $0x0,0x90(%rdx) 0.00 : 644058: 00 00 00 00 : tabentry->autovac_analyze_timestamp = 0; 0.00 : 64405c: 48 c7 82 98 00 00 00 movq $0x0,0x98(%rdx) 0.00 : 644063: 00 00 00 00 : tabentry->autovac_analyze_count = 0; 0.00 : 644067: 48 c7 82 a0 00 00 00 movq $0x0,0xa0(%rdx) 0.00 : 64406e: 00 00 00 00 : tabentry->blocks_fetched += tabmsg->t_counts.t_blocks_fetched; : tabentry->blocks_hit += tabmsg->t_counts.t_blocks_hit; : } : : /* Clamp n_live_tuples in case of negative delta_live_tuples */ : tabentry->n_live_tuples = Max(tabentry->n_live_tuples, 0); 0.00 : 644072: 48 83 7a 40 00 cmpq $0x0,0x40(%rdx) 0.00 : 644077: b8 00 00 00 00 mov $0x0,%eax 0.00 : 64407c: 48 0f 49 42 40 cmovns 0x40(%rdx),%rax : /* Likewise for n_dead_tuples */ : tabentry->n_dead_tuples = Max(tabentry->n_dead_tuples, 0); 0.00 : 644081: 48 83 7a 48 00 cmpq $0x0,0x48(%rdx) : tabentry->blocks_fetched += tabmsg->t_counts.t_blocks_fetched; : tabentry->blocks_hit += tabmsg->t_counts.t_blocks_hit; : } : : /* Clamp n_live_tuples in case of negative delta_live_tuples */ : tabentry->n_live_tuples = Max(tabentry->n_live_tuples, 0); 0.00 : 644086: 48 89 42 40 mov %rax,0x40(%rdx) : /* Likewise for n_dead_tuples */ : tabentry->n_dead_tuples = Max(tabentry->n_dead_tuples, 0); 0.00 : 64408a: b8 00 00 00 00 mov $0x0,%eax 0.00 : 64408f: 48 0f 49 42 48 cmovns 0x48(%rdx),%rax : dbentry->n_block_write_time += msg->m_block_write_time; : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 644094: 41 83 c7 01 add $0x1,%r15d : } : : /* Clamp n_live_tuples in case of negative delta_live_tuples */ : tabentry->n_live_tuples = Max(tabentry->n_live_tuples, 0); : /* Likewise for n_dead_tuples */ : tabentry->n_dead_tuples = Max(tabentry->n_dead_tuples, 0); 0.00 : 644098: 48 89 42 48 mov %rax,0x48(%rdx) : : /* : * Add per-table stats to the per-database entry, too. : */ : dbentry->n_tuples_returned += tabmsg->t_counts.t_tuples_returned; 0.00 : 64409c: 4b 8d 04 76 lea (%r14,%r14,2),%rax 0.00 : 6440a0: 49 8d 04 86 lea (%r14,%rax,4),%rax 0.00 : 6440a4: 48 c1 e0 03 shl $0x3,%rax 0.00 : 6440a8: 48 8b 94 05 18 fc ff mov -0x3e8(%rbp,%rax,1),%rdx 0.00 : 6440af: ff 0.00 : 6440b0: 49 01 54 24 28 add %rdx,0x28(%r12) : dbentry->n_tuples_fetched += tabmsg->t_counts.t_tuples_fetched; 0.00 : 6440b5: 48 8b 94 05 20 fc ff mov -0x3e0(%rbp,%rax,1),%rdx 0.00 : 6440bc: ff 0.00 : 6440bd: 49 01 54 24 30 add %rdx,0x30(%r12) : dbentry->n_tuples_inserted += tabmsg->t_counts.t_tuples_inserted; 0.00 : 6440c2: 48 8b 94 05 28 fc ff mov -0x3d8(%rbp,%rax,1),%rdx 0.00 : 6440c9: ff 0.00 : 6440ca: 49 01 54 24 38 add %rdx,0x38(%r12) : dbentry->n_tuples_updated += tabmsg->t_counts.t_tuples_updated; 0.00 : 6440cf: 48 8b 94 05 30 fc ff mov -0x3d0(%rbp,%rax,1),%rdx 0.00 : 6440d6: ff 0.00 : 6440d7: 49 01 54 24 40 add %rdx,0x40(%r12) : dbentry->n_tuples_deleted += tabmsg->t_counts.t_tuples_deleted; 0.00 : 6440dc: 48 8b 94 05 38 fc ff mov -0x3c8(%rbp,%rax,1),%rdx 0.00 : 6440e3: ff 0.00 : 6440e4: 49 01 54 24 48 add %rdx,0x48(%r12) : dbentry->n_blocks_fetched += tabmsg->t_counts.t_blocks_fetched; 0.00 : 6440e9: 48 8b 94 05 60 fc ff mov -0x3a0(%rbp,%rax,1),%rdx 0.00 : 6440f0: ff 0.00 : 6440f1: 49 01 54 24 18 add %rdx,0x18(%r12) : dbentry->n_blocks_hit += tabmsg->t_counts.t_blocks_hit; 0.00 : 6440f6: 48 8b 84 05 68 fc ff mov -0x398(%rbp,%rax,1),%rax 0.00 : 6440fd: ff 0.00 : 6440fe: 49 01 44 24 20 add %rax,0x20(%r12) : dbentry->n_block_write_time += msg->m_block_write_time; : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 644103: 44 3b bd ec fb ff ff cmp -0x414(%rbp),%r15d 0.00 : 64410a: 0f 8d d5 fb ff ff jge 643ce5 : { : PgStat_TableEntry *tabmsg = &(msg->m_entry[i]); 0.00 : 644110: 4d 63 f7 movslq %r15d,%r14 : : tabentry = (PgStat_StatTabEntry *) hash_search(dbentry->tables, 0.00 : 644113: 49 8b bc 24 b8 00 00 mov 0xb8(%r12),%rdi 0.00 : 64411a: 00 0.00 : 64411b: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : 64411f: 4b 8d 04 76 lea (%r14,%r14,2),%rax 0.00 : 644123: ba 01 00 00 00 mov $0x1,%edx 0.00 : 644128: 49 8d 04 86 lea (%r14,%rax,4),%rax 0.00 : 64412c: 48 8d 1c c5 00 00 00 lea 0x0(,%rax,8),%rbx 0.00 : 644133: 00 0.00 : 644134: 49 8d 74 1d 28 lea 0x28(%r13,%rbx,1),%rsi 0.00 : 644139: e8 62 05 14 00 callq 7846a0 : (void *) &(tabmsg->t_id), : HASH_ENTER, &found); : : if (!found) 0.00 : 64413e: 80 7d cc 00 cmpb $0x0,-0x34(%rbp) : */ : for (i = 0; i < msg->m_nentries; i++) : { : PgStat_TableEntry *tabmsg = &(msg->m_entry[i]); : : tabentry = (PgStat_StatTabEntry *) hash_search(dbentry->tables, 0.00 : 644142: 48 89 c2 mov %rax,%rdx : (void *) &(tabmsg->t_id), : HASH_ENTER, &found); : : if (!found) 0.00 : 644145: 0f 84 48 fe ff ff je 643f93 : else : { : /* : * Otherwise add the values to the existing entry. : */ : tabentry->numscans += tabmsg->t_counts.t_numscans; 0.00 : 64414b: 48 8b 84 1d 10 fc ff mov -0x3f0(%rbp,%rbx,1),%rax 0.00 : 644152: ff 0.00 : 644153: 48 01 42 08 add %rax,0x8(%rdx) : tabentry->tuples_returned += tabmsg->t_counts.t_tuples_returned; 0.00 : 644157: 48 8b 84 1d 18 fc ff mov -0x3e8(%rbp,%rbx,1),%rax 0.00 : 64415e: ff 0.00 : 64415f: 48 01 42 10 add %rax,0x10(%rdx) : tabentry->tuples_fetched += tabmsg->t_counts.t_tuples_fetched; 0.00 : 644163: 48 8b 84 1d 20 fc ff mov -0x3e0(%rbp,%rbx,1),%rax 0.00 : 64416a: ff 0.00 : 64416b: 48 01 42 18 add %rax,0x18(%rdx) : tabentry->tuples_inserted += tabmsg->t_counts.t_tuples_inserted; 0.00 : 64416f: 48 8b 84 1d 28 fc ff mov -0x3d8(%rbp,%rbx,1),%rax 0.00 : 644176: ff 0.00 : 644177: 48 01 42 20 add %rax,0x20(%rdx) : tabentry->tuples_updated += tabmsg->t_counts.t_tuples_updated; 0.00 : 64417b: 48 8b 84 1d 30 fc ff mov -0x3d0(%rbp,%rbx,1),%rax 0.00 : 644182: ff 0.00 : 644183: 48 01 42 28 add %rax,0x28(%rdx) : tabentry->tuples_deleted += tabmsg->t_counts.t_tuples_deleted; 0.00 : 644187: 48 8b 84 1d 38 fc ff mov -0x3c8(%rbp,%rbx,1),%rax 0.00 : 64418e: ff 0.00 : 64418f: 48 01 42 30 add %rax,0x30(%rdx) : tabentry->tuples_hot_updated += tabmsg->t_counts.t_tuples_hot_updated; 0.00 : 644193: 48 8b 84 1d 40 fc ff mov -0x3c0(%rbp,%rbx,1),%rax 0.00 : 64419a: ff 0.00 : 64419b: 48 01 42 38 add %rax,0x38(%rdx) : tabentry->n_live_tuples += tabmsg->t_counts.t_delta_live_tuples; 0.00 : 64419f: 48 8b 84 1d 48 fc ff mov -0x3b8(%rbp,%rbx,1),%rax 0.00 : 6441a6: ff 0.00 : 6441a7: 48 01 42 40 add %rax,0x40(%rdx) : tabentry->n_dead_tuples += tabmsg->t_counts.t_delta_dead_tuples; 0.00 : 6441ab: 48 8b 84 1d 50 fc ff mov -0x3b0(%rbp,%rbx,1),%rax 0.00 : 6441b2: ff 0.00 : 6441b3: 48 01 42 48 add %rax,0x48(%rdx) : tabentry->changes_since_analyze += tabmsg->t_counts.t_changed_tuples; 0.00 : 6441b7: 48 8b 84 1d 58 fc ff mov -0x3a8(%rbp,%rbx,1),%rax 0.00 : 6441be: ff 0.00 : 6441bf: 48 01 42 50 add %rax,0x50(%rdx) : tabentry->blocks_fetched += tabmsg->t_counts.t_blocks_fetched; 0.00 : 6441c3: 48 8b 84 1d 60 fc ff mov -0x3a0(%rbp,%rbx,1),%rax 0.00 : 6441ca: ff 0.00 : 6441cb: 48 01 42 58 add %rax,0x58(%rdx) : tabentry->blocks_hit += tabmsg->t_counts.t_blocks_hit; 0.00 : 6441cf: 48 8b 84 1d 68 fc ff mov -0x398(%rbp,%rbx,1),%rax 0.00 : 6441d6: ff 0.00 : 6441d7: 48 01 42 60 add %rax,0x60(%rdx) 0.00 : 6441db: e9 92 fe ff ff jmpq 644072 : PgStat_StatTabEntry *tabentry; : : /* : * Store the data in the table's hashtable entry. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 6441e0: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 6441e6: be 01 00 00 00 mov $0x1,%esi 0.00 : 6441eb: e8 20 cd ff ff callq 640f10 : : tabentry = pgstat_get_tab_entry(dbentry, msg->m_tableoid, true); 0.00 : 6441f0: 8b b5 ec fb ff ff mov -0x414(%rbp),%esi 0.00 : 6441f6: ba 01 00 00 00 mov $0x1,%edx : PgStat_StatTabEntry *tabentry; : : /* : * Store the data in the table's hashtable entry. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 6441fb: 48 89 c7 mov %rax,%rdi : : tabentry = pgstat_get_tab_entry(dbentry, msg->m_tableoid, true); 0.00 : 6441fe: e8 6d cd ff ff callq 640f70 0.00 : 644203: 48 89 c2 mov %rax,%rdx : : tabentry->n_live_tuples = msg->m_live_tuples; 0.00 : 644206: 48 8b 85 00 fc ff ff mov -0x400(%rbp),%rax 0.00 : 64420d: 48 89 42 40 mov %rax,0x40(%rdx) : tabentry->n_dead_tuples = msg->m_dead_tuples; 0.00 : 644211: 48 8b 85 08 fc ff ff mov -0x3f8(%rbp),%rax 0.00 : 644218: 48 89 42 48 mov %rax,0x48(%rdx) : : if (msg->m_autovacuum) 0.00 : 64421c: 80 bd f0 fb ff ff 00 cmpb $0x0,-0x410(%rbp) 0.00 : 644223: 0f 84 e0 05 00 00 je 644809 : { : tabentry->autovac_vacuum_timestamp = msg->m_vacuumtime; 0.00 : 644229: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax : tabentry->autovac_vacuum_count++; 0.00 : 644230: 48 83 82 80 00 00 00 addq $0x1,0x80(%rdx) 0.00 : 644237: 01 : tabentry->n_live_tuples = msg->m_live_tuples; : tabentry->n_dead_tuples = msg->m_dead_tuples; : : if (msg->m_autovacuum) : { : tabentry->autovac_vacuum_timestamp = msg->m_vacuumtime; 0.00 : 644238: 48 89 42 78 mov %rax,0x78(%rdx) 0.00 : 64423c: e9 a4 fa ff ff jmpq 643ce5 : PgStat_StatTabEntry *tabentry; : : /* : * Store the data in the table's hashtable entry. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 644241: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 644247: be 01 00 00 00 mov $0x1,%esi 0.00 : 64424c: e8 bf cc ff ff callq 640f10 : : tabentry = pgstat_get_tab_entry(dbentry, msg->m_tableoid, true); 0.00 : 644251: 8b b5 ec fb ff ff mov -0x414(%rbp),%esi 0.00 : 644257: ba 01 00 00 00 mov $0x1,%edx : PgStat_StatTabEntry *tabentry; : : /* : * Store the data in the table's hashtable entry. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 64425c: 48 89 c7 mov %rax,%rdi : : tabentry = pgstat_get_tab_entry(dbentry, msg->m_tableoid, true); 0.00 : 64425f: e8 0c cd ff ff callq 640f70 0.00 : 644264: 48 89 c2 mov %rax,%rdx : : tabentry->n_live_tuples = msg->m_live_tuples; 0.00 : 644267: 48 8b 85 00 fc ff ff mov -0x400(%rbp),%rax 0.00 : 64426e: 48 89 42 40 mov %rax,0x40(%rdx) : tabentry->n_dead_tuples = msg->m_dead_tuples; 0.00 : 644272: 48 8b 85 08 fc ff ff mov -0x3f8(%rbp),%rax : : /* : * We reset changes_since_analyze to zero, forgetting any changes that : * occurred while the ANALYZE was in progress. : */ : tabentry->changes_since_analyze = 0; 0.00 : 644279: 48 c7 42 50 00 00 00 movq $0x0,0x50(%rdx) 0.00 : 644280: 00 : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); : : tabentry = pgstat_get_tab_entry(dbentry, msg->m_tableoid, true); : : tabentry->n_live_tuples = msg->m_live_tuples; : tabentry->n_dead_tuples = msg->m_dead_tuples; 0.00 : 644281: 48 89 42 48 mov %rax,0x48(%rdx) : * We reset changes_since_analyze to zero, forgetting any changes that : * occurred while the ANALYZE was in progress. : */ : tabentry->changes_since_analyze = 0; : : if (msg->m_autovacuum) 0.00 : 644285: 80 bd f0 fb ff ff 00 cmpb $0x0,-0x410(%rbp) 0.00 : 64428c: 0f 84 5c 05 00 00 je 6447ee : { : tabentry->autovac_analyze_timestamp = msg->m_analyzetime; 0.00 : 644292: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax : tabentry->autovac_analyze_count++; 0.00 : 644299: 48 83 82 a0 00 00 00 addq $0x1,0xa0(%rdx) 0.00 : 6442a0: 01 : */ : tabentry->changes_since_analyze = 0; : : if (msg->m_autovacuum) : { : tabentry->autovac_analyze_timestamp = msg->m_analyzetime; 0.00 : 6442a1: 48 89 82 98 00 00 00 mov %rax,0x98(%rdx) 0.00 : 6442a8: e9 38 fa ff ff jmpq 643ce5 : PgStat_StatDBEntry *dbentry; : : /* : * Lookup the database in the hashtable. Nothing to do if not there. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6442ad: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 6442b3: 31 f6 xor %esi,%esi 0.00 : 6442b5: e8 56 cc ff ff callq 640f10 : : if (!dbentry) 0.00 : 6442ba: 48 85 c0 test %rax,%rax : PgStat_StatDBEntry *dbentry; : : /* : * Lookup the database in the hashtable. Nothing to do if not there. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6442bd: 48 89 c3 mov %rax,%rbx : : if (!dbentry) 0.00 : 6442c0: 0f 84 1f fa ff ff je 643ce5 : : /* : * We simply throw away all the database's table entries by recreating a : * new hash table for them. : */ : if (dbentry->tables != NULL) 0.00 : 6442c6: 48 8b b8 b8 00 00 00 mov 0xb8(%rax),%rdi 0.00 : 6442cd: 48 85 ff test %rdi,%rdi 0.00 : 6442d0: 74 05 je 6442d7 : hash_destroy(dbentry->tables); 0.00 : 6442d2: e8 29 04 14 00 callq 784700 : if (dbentry->functions != NULL) 0.00 : 6442d7: 48 8b bb c0 00 00 00 mov 0xc0(%rbx),%rdi 0.00 : 6442de: 48 85 ff test %rdi,%rdi 0.00 : 6442e1: 74 05 je 6442e8 : hash_destroy(dbentry->functions); 0.00 : 6442e3: e8 18 04 14 00 callq 784700 : : dbentry->tables = NULL; 0.00 : 6442e8: 48 c7 83 b8 00 00 00 movq $0x0,0xb8(%rbx) 0.00 : 6442ef: 00 00 00 00 : dbentry->functions = NULL; 0.00 : 6442f3: 48 c7 83 c0 00 00 00 movq $0x0,0xc0(%rbx) 0.00 : 6442fa: 00 00 00 00 : : /* : * Reset database-level stats, too. This creates empty hash tables for : * tables and functions. : */ : reset_dbentry_counters(dbentry); 0.00 : 6442fe: 48 89 df mov %rbx,%rdi 0.00 : 644301: e8 7a ca ff ff callq 640d80 0.00 : 644306: e9 da f9 ff ff jmpq 643ce5 : PgStat_StatDBEntry *dbentry; : PgStat_StatFuncEntry *funcentry; : int i; : bool found; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 64430b: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 644311: be 01 00 00 00 mov $0x1,%esi 0.00 : 644316: e8 f5 cb ff ff callq 640f10 : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) 0.00 : 64431b: 44 8b 8d ec fb ff ff mov -0x414(%rbp),%r9d : PgStat_StatDBEntry *dbentry; : PgStat_StatFuncEntry *funcentry; : int i; : bool found; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 644322: 49 89 c6 mov %rax,%r14 : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) 0.00 : 644325: 45 85 c9 test %r9d,%r9d 0.00 : 644328: 0f 8e b7 f9 ff ff jle 643ce5 0.00 : 64432e: 48 8b 9d d0 f7 ff ff mov -0x830(%rbp),%rbx 0.00 : 644335: 45 31 e4 xor %r12d,%r12d 0.00 : 644338: eb 2d jmp 644367 : { : /* : * If it's a new function entry, initialize counters to the values : * we just got. : */ : funcentry->f_numcalls = funcmsg->f_numcalls; 0.00 : 64433a: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 64433e: 48 89 42 08 mov %rax,0x8(%rdx) : funcentry->f_total_time = funcmsg->f_total_time; 0.00 : 644342: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 644346: 48 89 42 10 mov %rax,0x10(%rdx) : funcentry->f_self_time = funcmsg->f_self_time; 0.00 : 64434a: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 64434e: 48 89 42 18 mov %rax,0x18(%rdx) : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) 0.00 : 644352: 41 83 c4 01 add $0x1,%r12d 0.00 : 644356: 44 3b a5 ec fb ff ff cmp -0x414(%rbp),%r12d 0.00 : 64435d: 0f 8d 82 f9 ff ff jge 643ce5 0.00 : 644363: 48 83 c3 20 add $0x20,%rbx : { : funcentry = (PgStat_StatFuncEntry *) hash_search(dbentry->functions, 0.00 : 644367: 49 8b be c0 00 00 00 mov 0xc0(%r14),%rdi 0.00 : 64436e: 48 8d 4d cc lea -0x34(%rbp),%rcx 0.00 : 644372: ba 01 00 00 00 mov $0x1,%edx 0.00 : 644377: 48 89 de mov %rbx,%rsi 0.00 : 64437a: e8 21 03 14 00 callq 7846a0 : (void *) &(funcmsg->f_id), : HASH_ENTER, &found); : : if (!found) 0.00 : 64437f: 80 7d cc 00 cmpb $0x0,-0x34(%rbp) : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++, funcmsg++) : { : funcentry = (PgStat_StatFuncEntry *) hash_search(dbentry->functions, 0.00 : 644383: 48 89 c2 mov %rax,%rdx : (void *) &(funcmsg->f_id), : HASH_ENTER, &found); : : if (!found) 0.00 : 644386: 74 b2 je 64433a : else : { : /* : * Otherwise add the values to the existing entry. : */ : funcentry->f_numcalls += funcmsg->f_numcalls; 0.00 : 644388: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 64438c: 48 01 42 08 add %rax,0x8(%rdx) : funcentry->f_total_time += funcmsg->f_total_time; 0.00 : 644390: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 644394: 48 01 42 10 add %rax,0x10(%rdx) : funcentry->f_self_time += funcmsg->f_self_time; 0.00 : 644398: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 64439c: 48 01 42 18 add %rax,0x18(%rdx) 0.00 : 6443a0: eb b0 jmp 644352 : pgstat_recv_funcpurge(PgStat_MsgFuncpurge *msg, int len) : { : PgStat_StatDBEntry *dbentry; : int i; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6443a2: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 6443a8: 31 f6 xor %esi,%esi 0.00 : 6443aa: e8 61 cb ff ff callq 640f10 : : /* : * No need to purge if we don't even know the database. : */ : if (!dbentry || !dbentry->functions) 0.00 : 6443af: 48 85 c0 test %rax,%rax : pgstat_recv_funcpurge(PgStat_MsgFuncpurge *msg, int len) : { : PgStat_StatDBEntry *dbentry; : int i; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6443b2: 49 89 c4 mov %rax,%r12 : : /* : * No need to purge if we don't even know the database. : */ : if (!dbentry || !dbentry->functions) 0.00 : 6443b5: 0f 84 2a f9 ff ff je 643ce5 0.00 : 6443bb: 48 8b b8 c0 00 00 00 mov 0xc0(%rax),%rdi 0.00 : 6443c2: 48 85 ff test %rdi,%rdi 0.00 : 6443c5: 0f 84 1a f9 ff ff je 643ce5 : return; : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 6443cb: 44 8b 85 ec fb ff ff mov -0x414(%rbp),%r8d 0.00 : 6443d2: 45 85 c0 test %r8d,%r8d 0.00 : 6443d5: 0f 8e 0a f9 ff ff jle 643ce5 0.00 : 6443db: 31 db xor %ebx,%ebx 0.00 : 6443dd: eb 09 jmp 6443e8 0.00 : 6443df: 90 nop 0.00 : 6443e0: 49 8b bc 24 c0 00 00 mov 0xc0(%r12),%rdi 0.00 : 6443e7: 00 : { : /* Remove from hashtable if present; we don't care if it's not. */ : (void) hash_search(dbentry->functions, 0.00 : 6443e8: 48 63 f3 movslq %ebx,%rsi 0.00 : 6443eb: 31 c9 xor %ecx,%ecx 0.00 : 6443ed: ba 02 00 00 00 mov $0x2,%edx 0.00 : 6443f2: 49 8d 74 b5 10 lea 0x10(%r13,%rsi,4),%rsi : return; : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 6443f7: 83 c3 01 add $0x1,%ebx : { : /* Remove from hashtable if present; we don't care if it's not. */ : (void) hash_search(dbentry->functions, 0.00 : 6443fa: e8 a1 02 14 00 callq 7846a0 : return; : : /* : * Process all function entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 6443ff: 3b 9d ec fb ff ff cmp -0x414(%rbp),%ebx 0.00 : 644405: 7c d9 jl 6443e0 0.00 : 644407: e9 d9 f8 ff ff jmpq 643ce5 : static void : pgstat_recv_recoveryconflict(PgStat_MsgRecoveryConflict *msg, int len) : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 64440c: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 644412: be 01 00 00 00 mov $0x1,%esi 0.00 : 644417: e8 f4 ca ff ff callq 640f10 0.00 : 64441c: 48 89 c2 mov %rax,%rdx : : switch (msg->m_reason) 0.00 : 64441f: 8b 85 ec fb ff ff mov -0x414(%rbp),%eax 0.00 : 644425: 83 e8 03 sub $0x3,%eax 0.00 : 644428: 83 f8 04 cmp $0x4,%eax 0.00 : 64442b: 0f 87 b4 f8 ff ff ja 643ce5 0.00 : 644431: 89 c0 mov %eax,%eax 0.00 : 644433: ff 24 c5 10 f8 89 00 jmpq *0x89f810(,%rax,8) : static void : pgstat_recv_tempfile(PgStat_MsgTempFile *msg, int len) : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 64443a: 41 8b 7d 08 mov 0x8(%r13),%edi 0.00 : 64443e: be 01 00 00 00 mov $0x1,%esi 0.00 : 644443: e8 c8 ca ff ff callq 640f10 : : dbentry->n_temp_bytes += msg->m_filesize; 0.00 : 644448: 49 8b 55 10 mov 0x10(%r13),%rdx : dbentry->n_temp_files += 1; 0.00 : 64444c: 48 83 80 80 00 00 00 addq $0x1,0x80(%rax) 0.00 : 644453: 01 : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); : : dbentry->n_temp_bytes += msg->m_filesize; 0.00 : 644454: 48 01 90 88 00 00 00 add %rdx,0x88(%rax) 0.00 : 64445b: e9 85 f8 ff ff jmpq 643ce5 : * ---------- : */ : static void : pgstat_recv_archiver(PgStat_MsgArchiver *msg, int len) : { : if (msg->m_failed) 0.00 : 644460: 80 bd e8 fb ff ff 00 cmpb $0x0,-0x418(%rbp) 0.00 : 644467: 0f 84 1f 03 00 00 je 64478c : { : /* Failed archival attempt */ : ++archiverStats.failed_count; : memcpy(archiverStats.last_failed_wal, msg->m_xlog, 0.00 : 64446d: 48 8b 95 c8 f7 ff ff mov -0x838(%rbp),%rdx : pgstat_recv_archiver(PgStat_MsgArchiver *msg, int len) : { : if (msg->m_failed) : { : /* Failed archival attempt */ : ++archiverStats.failed_count; 0.00 : 644474: 48 83 05 e4 79 53 00 addq $0x1,0x5379e4(%rip) # b7be60 0.00 : 64447b: 01 : memcpy(archiverStats.last_failed_wal, msg->m_xlog, 0.00 : 64447c: 48 8b 02 mov (%rdx),%rax 0.00 : 64447f: 48 89 05 e2 79 53 00 mov %rax,0x5379e2(%rip) # b7be68 0.00 : 644486: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 64448a: 48 89 05 df 79 53 00 mov %rax,0x5379df(%rip) # b7be70 0.00 : 644491: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 644495: 48 89 05 dc 79 53 00 mov %rax,0x5379dc(%rip) # b7be78 0.00 : 64449c: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 6444a0: 48 89 05 d9 79 53 00 mov %rax,0x5379d9(%rip) # b7be80 0.00 : 6444a7: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 6444ab: 48 89 05 d6 79 53 00 mov %rax,0x5379d6(%rip) # b7be88 0.00 : 6444b2: 0f b6 42 28 movzbl 0x28(%rdx),%eax 0.00 : 6444b6: 88 05 d4 79 53 00 mov %al,0x5379d4(%rip) # b7be90 : sizeof(archiverStats.last_failed_wal)); : archiverStats.last_failed_timestamp = msg->m_timestamp; 0.00 : 6444bc: 48 8b 85 18 fc ff ff mov -0x3e8(%rbp),%rax 0.00 : 6444c3: 48 89 05 ce 79 53 00 mov %rax,0x5379ce(%rip) # b7be98 0.00 : 6444ca: e9 16 f8 ff ff jmpq 643ce5 : * ---------- : */ : static void : pgstat_recv_bgwriter(PgStat_MsgBgWriter *msg, int len) : { : globalStats.timed_checkpoints += msg->m_timed_checkpoints; 0.00 : 6444cf: 48 8b 85 e8 fb ff ff mov -0x418(%rbp),%rax 0.00 : 6444d6: 48 01 05 eb 79 53 00 add %rax,0x5379eb(%rip) # b7bec8 : globalStats.requested_checkpoints += msg->m_requested_checkpoints; 0.00 : 6444dd: 48 8b 85 f0 fb ff ff mov -0x410(%rbp),%rax 0.00 : 6444e4: 48 01 05 e5 79 53 00 add %rax,0x5379e5(%rip) # b7bed0 : globalStats.checkpoint_write_time += msg->m_checkpoint_write_time; 0.00 : 6444eb: 48 8b 85 28 fc ff ff mov -0x3d8(%rbp),%rax 0.00 : 6444f2: 48 01 05 df 79 53 00 add %rax,0x5379df(%rip) # b7bed8 : globalStats.checkpoint_sync_time += msg->m_checkpoint_sync_time; 0.00 : 6444f9: 48 8b 85 30 fc ff ff mov -0x3d0(%rbp),%rax 0.00 : 644500: 48 01 05 d9 79 53 00 add %rax,0x5379d9(%rip) # b7bee0 : globalStats.buf_written_checkpoints += msg->m_buf_written_checkpoints; 0.00 : 644507: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax 0.00 : 64450e: 48 01 05 d3 79 53 00 add %rax,0x5379d3(%rip) # b7bee8 : globalStats.buf_written_clean += msg->m_buf_written_clean; 0.00 : 644515: 48 8b 85 00 fc ff ff mov -0x400(%rbp),%rax 0.00 : 64451c: 48 01 05 cd 79 53 00 add %rax,0x5379cd(%rip) # b7bef0 : globalStats.maxwritten_clean += msg->m_maxwritten_clean; 0.00 : 644523: 48 8b 85 08 fc ff ff mov -0x3f8(%rbp),%rax 0.00 : 64452a: 48 01 05 c7 79 53 00 add %rax,0x5379c7(%rip) # b7bef8 : globalStats.buf_written_backend += msg->m_buf_written_backend; 0.00 : 644531: 48 8b 85 10 fc ff ff mov -0x3f0(%rbp),%rax 0.00 : 644538: 48 01 05 c1 79 53 00 add %rax,0x5379c1(%rip) # b7bf00 : globalStats.buf_fsync_backend += msg->m_buf_fsync_backend; 0.00 : 64453f: 48 8b 85 18 fc ff ff mov -0x3e8(%rbp),%rax 0.00 : 644546: 48 01 05 bb 79 53 00 add %rax,0x5379bb(%rip) # b7bf08 : globalStats.buf_alloc += msg->m_buf_alloc; 0.00 : 64454d: 48 8b 85 20 fc ff ff mov -0x3e0(%rbp),%rax 0.00 : 644554: 48 01 05 b5 79 53 00 add %rax,0x5379b5(%rip) # b7bf10 : pgstat_recv_archiver((PgStat_MsgArchiver *) &msg, len); : break; : : case PGSTAT_MTYPE_BGWRITER: : pgstat_recv_bgwriter((PgStat_MsgBgWriter *) &msg, len); : break; 0.00 : 64455b: e9 85 f7 ff ff jmpq 643ce5 : pgstat_recv_tabpurge(PgStat_MsgTabpurge *msg, int len) : { : PgStat_StatDBEntry *dbentry; : int i; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 644560: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 644566: 31 f6 xor %esi,%esi 0.00 : 644568: e8 a3 c9 ff ff callq 640f10 : : /* : * No need to purge if we don't even know the database. : */ : if (!dbentry || !dbentry->tables) 0.00 : 64456d: 48 85 c0 test %rax,%rax : pgstat_recv_tabpurge(PgStat_MsgTabpurge *msg, int len) : { : PgStat_StatDBEntry *dbentry; : int i; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 644570: 49 89 c4 mov %rax,%r12 : : /* : * No need to purge if we don't even know the database. : */ : if (!dbentry || !dbentry->tables) 0.00 : 644573: 0f 84 6c f7 ff ff je 643ce5 0.00 : 644579: 48 8b b8 b8 00 00 00 mov 0xb8(%rax),%rdi 0.00 : 644580: 48 85 ff test %rdi,%rdi 0.00 : 644583: 0f 84 5c f7 ff ff je 643ce5 : return; : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 644589: 44 8b 95 ec fb ff ff mov -0x414(%rbp),%r10d 0.00 : 644590: 45 85 d2 test %r10d,%r10d 0.00 : 644593: 0f 8e 4c f7 ff ff jle 643ce5 0.00 : 644599: 31 db xor %ebx,%ebx 0.00 : 64459b: eb 0b jmp 6445a8 0.00 : 64459d: 0f 1f 00 nopl (%rax) 0.00 : 6445a0: 49 8b bc 24 b8 00 00 mov 0xb8(%r12),%rdi 0.00 : 6445a7: 00 : { : /* Remove from hashtable if present; we don't care if it's not. */ : (void) hash_search(dbentry->tables, 0.00 : 6445a8: 48 63 f3 movslq %ebx,%rsi 0.00 : 6445ab: 31 c9 xor %ecx,%ecx 0.00 : 6445ad: ba 02 00 00 00 mov $0x2,%edx 0.00 : 6445b2: 49 8d 74 b5 10 lea 0x10(%r13,%rsi,4),%rsi : return; : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 6445b7: 83 c3 01 add $0x1,%ebx : { : /* Remove from hashtable if present; we don't care if it's not. */ : (void) hash_search(dbentry->tables, 0.00 : 6445ba: e8 e1 00 14 00 callq 7846a0 : return; : : /* : * Process all table entries in the message. : */ : for (i = 0; i < msg->m_nentries; i++) 0.00 : 6445bf: 3b 9d ec fb ff ff cmp -0x414(%rbp),%ebx 0.00 : 6445c5: 7c d9 jl 6445a0 0.00 : 6445c7: e9 19 f7 ff ff jmpq 643ce5 : * ---------- : */ : static void : pgstat_recv_dropdb(PgStat_MsgDropdb *msg, int len) : { : Oid dbid = msg->m_databaseid; 0.00 : 6445cc: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi : PgStat_StatDBEntry *dbentry; : : /* : * Lookup the database in the hashtable. : */ : dbentry = pgstat_get_db_entry(dbid, false); 0.00 : 6445d2: 31 f6 xor %esi,%esi : * ---------- : */ : static void : pgstat_recv_dropdb(PgStat_MsgDropdb *msg, int len) : { : Oid dbid = msg->m_databaseid; 0.00 : 6445d4: 89 7d cc mov %edi,-0x34(%rbp) : PgStat_StatDBEntry *dbentry; : : /* : * Lookup the database in the hashtable. : */ : dbentry = pgstat_get_db_entry(dbid, false); 0.00 : 6445d7: e8 34 c9 ff ff callq 640f10 : : /* : * If found, remove it (along with the db statfile). : */ : if (dbentry) 0.00 : 6445dc: 48 85 c0 test %rax,%rax : PgStat_StatDBEntry *dbentry; : : /* : * Lookup the database in the hashtable. : */ : dbentry = pgstat_get_db_entry(dbid, false); 0.00 : 6445df: 48 89 c3 mov %rax,%rbx : : /* : * If found, remove it (along with the db statfile). : */ : if (dbentry) 0.00 : 6445e2: 0f 84 fd f6 ff ff je 643ce5 : { : char statfile[MAXPGPATH]; : : get_dbstat_filename(false, false, dbid, statfile, MAXPGPATH); 0.00 : 6445e8: 8b 55 cc mov -0x34(%rbp),%edx 0.00 : 6445eb: 48 8d 8d e0 f7 ff ff lea -0x820(%rbp),%rcx 0.00 : 6445f2: 41 b8 00 04 00 00 mov $0x400,%r8d 0.00 : 6445f8: 31 f6 xor %esi,%esi 0.00 : 6445fa: 31 ff xor %edi,%edi 0.00 : 6445fc: e8 7f ca ff ff callq 641080 : : elog(DEBUG2, "removing %s", statfile); 0.00 : 644601: ba a0 f9 89 00 mov $0x89f9a0,%edx 0.00 : 644606: be a5 12 00 00 mov $0x12a5,%esi 0.00 : 64460b: bf 88 ef 89 00 mov $0x89ef88,%edi 0.00 : 644610: e8 0b 6e 13 00 callq 77b420 0.00 : 644615: 48 8d 95 e0 f7 ff ff lea -0x820(%rbp),%rdx 0.00 : 64461c: 31 c0 xor %eax,%eax 0.00 : 64461e: be ad f0 89 00 mov $0x89f0ad,%esi 0.00 : 644623: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 644628: e8 03 6c 13 00 callq 77b230 : unlink(statfile); 0.00 : 64462d: 48 8d bd e0 f7 ff ff lea -0x820(%rbp),%rdi 0.00 : 644634: e8 77 50 e2 ff callq 4696b0 : : if (dbentry->tables != NULL) 0.00 : 644639: 48 8b bb b8 00 00 00 mov 0xb8(%rbx),%rdi 0.00 : 644640: 48 85 ff test %rdi,%rdi 0.00 : 644643: 74 05 je 64464a : hash_destroy(dbentry->tables); 0.00 : 644645: e8 b6 00 14 00 callq 784700 : if (dbentry->functions != NULL) 0.00 : 64464a: 48 8b bb c0 00 00 00 mov 0xc0(%rbx),%rdi 0.00 : 644651: 48 85 ff test %rdi,%rdi 0.00 : 644654: 74 05 je 64465b : hash_destroy(dbentry->functions); 0.00 : 644656: e8 a5 00 14 00 callq 784700 : : if (hash_search(pgStatDBHash, 0.00 : 64465b: 48 8b 3d 76 75 53 00 mov 0x537576(%rip),%rdi # b7bbd8 0.00 : 644662: 48 8d 75 cc lea -0x34(%rbp),%rsi 0.00 : 644666: 31 c9 xor %ecx,%ecx 0.00 : 644668: ba 02 00 00 00 mov $0x2,%edx 0.00 : 64466d: e8 2e 00 14 00 callq 7846a0 0.00 : 644672: 48 85 c0 test %rax,%rax 0.00 : 644675: 0f 85 6a f6 ff ff jne 643ce5 : (void *) &dbid, : HASH_REMOVE, NULL) == NULL) : ereport(ERROR, 0.00 : 64467b: 45 31 c0 xor %r8d,%r8d 0.00 : 64467e: b9 a0 f9 89 00 mov $0x89f9a0,%ecx 0.00 : 644683: ba b1 12 00 00 mov $0x12b1,%edx 0.00 : 644688: be 88 ef 89 00 mov $0x89ef88,%esi 0.00 : 64468d: bf 14 00 00 00 mov $0x14,%edi 0.00 : 644692: e8 29 64 13 00 callq 77aac0 0.00 : 644697: 84 c0 test %al,%al 0.00 : 644699: 0f 84 07 f7 ff ff je 643da6 0.00 : 64469f: bf 00 f4 89 00 mov $0x89f400,%edi 0.00 : 6446a4: 31 c0 xor %eax,%eax 0.00 : 6446a6: e8 f5 81 13 00 callq 77c8a0 0.00 : 6446ab: 89 c7 mov %eax,%edi 0.00 : 6446ad: 31 c0 xor %eax,%eax 0.00 : 6446af: e8 2c 5f 13 00 callq 77a5e0 0.00 : 6446b4: e9 ed f6 ff ff jmpq 643da6 0.00 : 6446b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : static void : pgstat_recv_resetsinglecounter(PgStat_MsgResetsinglecounter *msg, int len) : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6446c0: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 6446c6: 31 f6 xor %esi,%esi 0.00 : 6446c8: e8 43 c8 ff ff callq 640f10 : : if (!dbentry) 0.00 : 6446cd: 48 85 c0 test %rax,%rax : static void : pgstat_recv_resetsinglecounter(PgStat_MsgResetsinglecounter *msg, int len) : { : PgStat_StatDBEntry *dbentry; : : dbentry = pgstat_get_db_entry(msg->m_databaseid, false); 0.00 : 6446d0: 48 89 c3 mov %rax,%rbx : : if (!dbentry) 0.00 : 6446d3: 0f 84 0c f6 ff ff je 643ce5 : return; : : /* Set the reset timestamp for the whole database */ : dbentry->stat_reset_timestamp = GetCurrentTimestamp(); 0.00 : 6446d9: e8 92 1c 10 00 callq 746370 0.00 : 6446de: 48 89 83 a8 00 00 00 mov %rax,0xa8(%rbx) : : /* Remove object if it exists, ignore it if not */ : if (msg->m_resettype == RESET_TABLE) 0.00 : 6446e5: 8b 85 ec fb ff ff mov -0x414(%rbp),%eax 0.00 : 6446eb: 85 c0 test %eax,%eax 0.00 : 6446ed: 0f 84 a5 01 00 00 je 644898 : (void) hash_search(dbentry->tables, (void *) &(msg->m_objectid), : HASH_REMOVE, NULL); : else if (msg->m_resettype == RESET_FUNCTION) 0.00 : 6446f3: 83 e8 01 sub $0x1,%eax 0.00 : 6446f6: 0f 85 e9 f5 ff ff jne 643ce5 : (void) hash_search(dbentry->functions, (void *) &(msg->m_objectid), 0.00 : 6446fc: 48 8b bb c0 00 00 00 mov 0xc0(%rbx),%rdi 0.00 : 644703: 48 8b b5 d0 f7 ff ff mov -0x830(%rbp),%rsi 0.00 : 64470a: 31 c9 xor %ecx,%ecx 0.00 : 64470c: ba 02 00 00 00 mov $0x2,%edx 0.00 : 644711: e8 8a ff 13 00 callq 7846a0 0.00 : 644716: e9 ca f5 ff ff jmpq 643ce5 : PgStat_StatDBEntry *dbentry; : : /* : * Store the last autovacuum time in the database's hashtable entry. : */ : dbentry = pgstat_get_db_entry(msg->m_databaseid, true); 0.00 : 64471b: 8b bd e8 fb ff ff mov -0x418(%rbp),%edi 0.00 : 644721: be 01 00 00 00 mov $0x1,%esi 0.00 : 644726: e8 e5 c7 ff ff callq 640f10 : : dbentry->last_autovac_time = msg->m_start_time; 0.00 : 64472b: 48 8b 95 f0 fb ff ff mov -0x410(%rbp),%rdx 0.00 : 644732: 48 89 50 50 mov %rdx,0x50(%rax) : len); : break; : : case PGSTAT_MTYPE_AUTOVAC_START: : pgstat_recv_autovac((PgStat_MsgAutovacStart *) &msg, len); : break; 0.00 : 644736: e9 aa f5 ff ff jmpq 643ce5 : * ---------- : */ : static void : pgstat_recv_resetsharedcounter(PgStat_MsgResetsharedcounter *msg, int len) : { : if (msg->m_resettarget == RESET_BGWRITER) 0.00 : 64473b: 8b 85 e8 fb ff ff mov -0x418(%rbp),%eax 0.00 : 644741: 83 f8 01 cmp $0x1,%eax 0.00 : 644744: 0f 84 2e 01 00 00 je 644878 : { : /* Reset the global background writer statistics for the cluster. */ : memset(&globalStats, 0, sizeof(globalStats)); : globalStats.stat_reset_timestamp = GetCurrentTimestamp(); : } : else if (msg->m_resettarget == RESET_ARCHIVER) 0.00 : 64474a: 85 c0 test %eax,%eax 0.00 : 64474c: 0f 85 93 f5 ff ff jne 643ce5 : { : /* Reset the archiver statistics for the cluster. */ : memset(&archiverStats, 0, sizeof(archiverStats)); 0.00 : 644752: 31 c0 xor %eax,%eax 0.00 : 644754: bf 20 be b7 00 mov $0xb7be20,%edi 0.00 : 644759: b9 11 00 00 00 mov $0x11,%ecx 0.00 : 64475e: f3 48 ab rep stos %rax,%es:(%rdi) : archiverStats.stat_reset_timestamp = GetCurrentTimestamp(); 0.00 : 644761: e8 0a 1c 10 00 callq 746370 0.00 : 644766: 48 89 05 33 77 53 00 mov %rax,0x537733(%rip) # b7bea0 0.00 : 64476d: e9 73 f5 ff ff jmpq 643ce5 : DBWriteRequest *req = slist_container(DBWriteRequest, next, iter.cur); : : if (req->databaseid != msg->databaseid) : continue; : : if (msg->cutoff_time > req->request_time) 0.00 : 644772: 48 8b 85 f0 fb ff ff mov -0x410(%rbp),%rax 0.00 : 644779: 48 3b 42 08 cmp 0x8(%rdx),%rax 0.00 : 64477d: 0f 8e 62 f5 ff ff jle 643ce5 : req->request_time = msg->cutoff_time; 0.00 : 644783: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 644787: e9 59 f5 ff ff jmpq 643ce5 : } : else : { : /* Successful archival operation */ : ++archiverStats.archived_count; : memcpy(archiverStats.last_archived_wal, msg->m_xlog, 0.00 : 64478c: 48 8b 95 c8 f7 ff ff mov -0x838(%rbp),%rdx : archiverStats.last_failed_timestamp = msg->m_timestamp; : } : else : { : /* Successful archival operation */ : ++archiverStats.archived_count; 0.00 : 644793: 48 83 05 85 76 53 00 addq $0x1,0x537685(%rip) # b7be20 0.00 : 64479a: 01 : memcpy(archiverStats.last_archived_wal, msg->m_xlog, 0.00 : 64479b: 48 8b 02 mov (%rdx),%rax 0.00 : 64479e: 48 89 05 83 76 53 00 mov %rax,0x537683(%rip) # b7be28 0.00 : 6447a5: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 6447a9: 48 89 05 80 76 53 00 mov %rax,0x537680(%rip) # b7be30 0.00 : 6447b0: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 6447b4: 48 89 05 7d 76 53 00 mov %rax,0x53767d(%rip) # b7be38 0.00 : 6447bb: 48 8b 42 18 mov 0x18(%rdx),%rax 0.00 : 6447bf: 48 89 05 7a 76 53 00 mov %rax,0x53767a(%rip) # b7be40 0.00 : 6447c6: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 6447ca: 48 89 05 77 76 53 00 mov %rax,0x537677(%rip) # b7be48 0.00 : 6447d1: 0f b6 42 28 movzbl 0x28(%rdx),%eax 0.00 : 6447d5: 88 05 75 76 53 00 mov %al,0x537675(%rip) # b7be50 : sizeof(archiverStats.last_archived_wal)); : archiverStats.last_archived_timestamp = msg->m_timestamp; 0.00 : 6447db: 48 8b 85 18 fc ff ff mov -0x3e8(%rbp),%rax 0.00 : 6447e2: 48 89 05 6f 76 53 00 mov %rax,0x53766f(%rip) # b7be58 0.00 : 6447e9: e9 f7 f4 ff ff jmpq 643ce5 : tabentry->autovac_analyze_timestamp = msg->m_analyzetime; : tabentry->autovac_analyze_count++; : } : else : { : tabentry->analyze_timestamp = msg->m_analyzetime; 0.00 : 6447ee: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax : tabentry->analyze_count++; 0.00 : 6447f5: 48 83 82 90 00 00 00 addq $0x1,0x90(%rdx) 0.00 : 6447fc: 01 : tabentry->autovac_analyze_timestamp = msg->m_analyzetime; : tabentry->autovac_analyze_count++; : } : else : { : tabentry->analyze_timestamp = msg->m_analyzetime; 0.00 : 6447fd: 48 89 82 88 00 00 00 mov %rax,0x88(%rdx) 0.00 : 644804: e9 dc f4 ff ff jmpq 643ce5 : tabentry->autovac_vacuum_timestamp = msg->m_vacuumtime; : tabentry->autovac_vacuum_count++; : } : else : { : tabentry->vacuum_timestamp = msg->m_vacuumtime; 0.00 : 644809: 48 8b 85 f8 fb ff ff mov -0x408(%rbp),%rax : tabentry->vacuum_count++; 0.00 : 644810: 48 83 42 70 01 addq $0x1,0x70(%rdx) : tabentry->autovac_vacuum_timestamp = msg->m_vacuumtime; : tabentry->autovac_vacuum_count++; : } : else : { : tabentry->vacuum_timestamp = msg->m_vacuumtime; 0.00 : 644815: 48 89 42 68 mov %rax,0x68(%rdx) 0.00 : 644819: e9 c7 f4 ff ff jmpq 643ce5 : break; : case PROCSIG_RECOVERY_CONFLICT_SNAPSHOT: : dbentry->n_conflict_snapshot++; : break; : case PROCSIG_RECOVERY_CONFLICT_BUFFERPIN: : dbentry->n_conflict_bufferpin++; 0.00 : 64481e: 48 83 42 70 01 addq $0x1,0x70(%rdx) 0.00 : 644823: e9 bd f4 ff ff jmpq 643ce5 : break; : case PROCSIG_RECOVERY_CONFLICT_LOCK: : dbentry->n_conflict_lock++; : break; : case PROCSIG_RECOVERY_CONFLICT_SNAPSHOT: : dbentry->n_conflict_snapshot++; 0.00 : 644828: 48 83 42 68 01 addq $0x1,0x68(%rdx) 0.00 : 64482d: e9 b3 f4 ff ff jmpq 643ce5 : break; : case PROCSIG_RECOVERY_CONFLICT_TABLESPACE: : dbentry->n_conflict_tablespace++; : break; : case PROCSIG_RECOVERY_CONFLICT_LOCK: : dbentry->n_conflict_lock++; 0.00 : 644832: 48 83 42 60 01 addq $0x1,0x60(%rdx) 0.00 : 644837: e9 a9 f4 ff ff jmpq 643ce5 : * Since we drop the information about the database as soon as it : * replicates, there is no point in counting these conflicts. : */ : break; : case PROCSIG_RECOVERY_CONFLICT_TABLESPACE: : dbentry->n_conflict_tablespace++; 0.00 : 64483c: 48 83 42 58 01 addq $0x1,0x58(%rdx) 0.00 : 644841: e9 9f f4 ff ff jmpq 643ce5 : break; : case PROCSIG_RECOVERY_CONFLICT_BUFFERPIN: : dbentry->n_conflict_bufferpin++; : break; : case PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK: : dbentry->n_conflict_startup_deadlock++; 0.00 : 644846: 48 83 42 78 01 addq $0x1,0x78(%rdx) 0.00 : 64484b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 644850: e9 90 f4 ff ff jmpq 643ce5 : : if (len < 0) : { : if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) : break; /* out of inner loop */ : ereport(ERROR, 0.00 : 644855: bf 98 f3 89 00 mov $0x89f398,%edi 0.00 : 64485a: 31 c0 xor %eax,%eax 0.00 : 64485c: e8 3f 80 13 00 callq 77c8a0 0.00 : 644861: 89 c3 mov %eax,%ebx 0.00 : 644863: e8 e8 81 13 00 callq 77ca50 0.00 : 644868: 89 de mov %ebx,%esi 0.00 : 64486a: 89 c7 mov %eax,%edi 0.00 : 64486c: 31 c0 xor %eax,%eax 0.00 : 64486e: e8 6d 5d 13 00 callq 77a5e0 0.00 : 644873: e9 2e f5 ff ff jmpq 643da6 : pgstat_recv_resetsharedcounter(PgStat_MsgResetsharedcounter *msg, int len) : { : if (msg->m_resettarget == RESET_BGWRITER) : { : /* Reset the global background writer statistics for the cluster. */ : memset(&globalStats, 0, sizeof(globalStats)); 0.00 : 644878: 31 c0 xor %eax,%eax 0.00 : 64487a: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 64487f: bf c0 be b7 00 mov $0xb7bec0,%edi 0.00 : 644884: f3 48 ab rep stos %rax,%es:(%rdi) : globalStats.stat_reset_timestamp = GetCurrentTimestamp(); 0.00 : 644887: e8 e4 1a 10 00 callq 746370 0.00 : 64488c: 48 89 05 85 76 53 00 mov %rax,0x537685(%rip) # b7bf18 0.00 : 644893: e9 4d f4 ff ff jmpq 643ce5 : /* Set the reset timestamp for the whole database */ : dbentry->stat_reset_timestamp = GetCurrentTimestamp(); : : /* Remove object if it exists, ignore it if not */ : if (msg->m_resettype == RESET_TABLE) : (void) hash_search(dbentry->tables, (void *) &(msg->m_objectid), 0.00 : 644898: 48 8b bb b8 00 00 00 mov 0xb8(%rbx),%rdi 0.00 : 64489f: 48 8b b5 d0 f7 ff ff mov -0x830(%rbp),%rsi 0.00 : 6448a6: 31 c9 xor %ecx,%ecx 0.00 : 6448a8: ba 02 00 00 00 mov $0x2,%edx 0.00 : 6448ad: e8 ee fd 13 00 callq 7846a0 0.00 : 6448b2: e9 2e f4 ff ff jmpq 643ce5 : * child processes, but for consistency we make all postmaster child : * processes do this.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) : elog(FATAL, "setsid() failed: %m"); 0.00 : 6448b7: ba 60 f9 89 00 mov $0x89f960,%edx 0.00 : 6448bc: be 60 0c 00 00 mov $0xc60,%esi 0.00 : 6448c1: bf 88 ef 89 00 mov $0x89ef88,%edi 0.00 : 6448c6: e8 55 6b 13 00 callq 77b420 0.00 : 6448cb: be 83 fe 7b 00 mov $0x7bfe83,%esi 0.00 : 6448d0: bf 15 00 00 00 mov $0x15,%edi 0.00 : 6448d5: 31 c0 xor %eax,%eax 0.00 : 6448d7: e8 54 69 13 00 callq 77b230 0.00 : 6448dc: e8 ef 4b e2 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3038 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006747b0 : : * : * This assumes the caller wants BUFFER_LOCK_EXCLUSIVE mode. : */ : bool : ConditionalLockBuffer(Buffer buffer) : { 0.00 : 6747b0: 55 push %rbp : volatile BufferDesc *buf; : : Assert(BufferIsValid(buffer)); : if (BufferIsLocal(buffer)) 0.00 : 6747b1: 85 ff test %edi,%edi : * : * This assumes the caller wants BUFFER_LOCK_EXCLUSIVE mode. : */ : bool : ConditionalLockBuffer(Buffer buffer) : { 0.00 : 6747b3: 48 89 e5 mov %rsp,%rbp : volatile BufferDesc *buf; : : Assert(BufferIsValid(buffer)); : if (BufferIsLocal(buffer)) 0.00 : 6747b6: 78 28 js 6747e0 : return true; /* act as though we got it */ : : buf = &(BufferDescriptors[buffer - 1]); 0.00 : 6747b8: 48 63 c7 movslq %edi,%rax : : return LWLockConditionalAcquire(buf->content_lock, LW_EXCLUSIVE); 0.00 : 6747bb: 31 f6 xor %esi,%esi : : Assert(BufferIsValid(buffer)); : if (BufferIsLocal(buffer)) : return true; /* act as though we got it */ : : buf = &(BufferDescriptors[buffer - 1]); 0.00 : 6747bd: 48 83 e8 01 sub $0x1,%rax 0.00 : 6747c1: 48 c1 e0 06 shl $0x6,%rax 0.00 : 6747c5: 48 03 05 34 b3 54 00 add 0x54b334(%rip),%rax # bbfb00 : : return LWLockConditionalAcquire(buf->content_lock, LW_EXCLUSIVE); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3038 100.00 : 6747cc: 48 8b 78 38 mov 0x38(%rax),%rdi : } 0.00 : 6747d0: c9 leaveq : if (BufferIsLocal(buffer)) : return true; /* act as though we got it */ : : buf = &(BufferDescriptors[buffer - 1]); : : return LWLockConditionalAcquire(buf->content_lock, LW_EXCLUSIVE); 0.00 : 6747d1: e9 ca a7 01 00 jmpq 68efa0 0.00 : 6747d6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 6747dd: 00 00 00 : } 0.00 : 6747e0: b8 01 00 00 00 mov $0x1,%eax 0.00 : 6747e5: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1260 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006766c0 : : */ : Buffer : ReleaseAndReadBuffer(Buffer buffer, : Relation relation, : BlockNumber blockNum) : { 0.00 : 6766c0: 55 push %rbp 0.00 : 6766c1: 89 f9 mov %edi,%ecx 0.00 : 6766c3: 48 89 e5 mov %rsp,%rbp 0.00 : 6766c6: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 6766ca: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 6766ce: 48 89 f3 mov %rsi,%rbx 0.00 : 6766d1: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 6766d5: 48 83 ec 20 sub $0x20,%rsp : ForkNumber forkNum = MAIN_FORKNUM; : volatile BufferDesc *bufHdr; : : if (BufferIsValid(buffer)) 0.00 : 6766d9: 83 ff 00 cmp $0x0,%edi : */ : Buffer : ReleaseAndReadBuffer(Buffer buffer, : Relation relation, : BlockNumber blockNum) : { 0.00 : 6766dc: 41 89 d4 mov %edx,%r12d : ForkNumber forkNum = MAIN_FORKNUM; : volatile BufferDesc *bufHdr; : : if (BufferIsValid(buffer)) 0.00 : 6766df: 74 2d je 67670e : { : Assert(BufferIsPinned(buffer)); : if (BufferIsLocal(buffer)) 0.00 : 6766e1: 7c 4d jl 676730 : ResourceOwnerForgetBuffer(CurrentResourceOwner, buffer); : LocalRefCount[-buffer - 1]--; : } : else : { : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 6766e3: 48 63 c7 movslq %edi,%rax 0.00 : 6766e6: 48 8d 78 ff lea -0x1(%rax),%rdi 0.00 : 6766ea: 48 c1 e7 06 shl $0x6,%rdi 0.00 : 6766ee: 48 03 3d 0b 94 54 00 add 0x54940b(%rip),%rdi # bbfb00 : /* we have pin, so it's ok to examine tag without spinlock */ : if (bufHdr->tag.blockNum == blockNum && 0.00 : 6766f5: 8b 47 10 mov 0x10(%rdi),%eax 0.00 : 6766f8: 39 d0 cmp %edx,%eax 0.00 : 6766fa: 75 08 jne 676704 0.00 : 6766fc: 8b 47 08 mov 0x8(%rdi),%eax 0.00 : 6766ff: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 676702: 74 7c je 676780 : RelFileNodeEquals(bufHdr->tag.rnode, relation->rd_node) && : bufHdr->tag.forkNum == forkNum) : return buffer; : UnpinBuffer(bufHdr, true); 0.00 : 676704: be 01 00 00 00 mov $0x1,%esi 0.00 : 676709: e8 22 e6 ff ff callq 674d30 : } : } : : return ReadBuffer(relation, blockNum); /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1260 50.00 : 67670e: 44 89 e6 mov %r12d,%esi 0.00 : 676711: 48 89 df mov %rbx,%rdi : } 0.00 : 676714: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 676718: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 67671c: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 676720: c9 leaveq : return buffer; : UnpinBuffer(bufHdr, true); : } : } : : return ReadBuffer(relation, blockNum); 0.00 : 676721: e9 7a ff ff ff jmpq 6766a0 0.00 : 676726: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 67672d: 00 00 00 : if (BufferIsValid(buffer)) : { : Assert(BufferIsPinned(buffer)); : if (BufferIsLocal(buffer)) : { : bufHdr = &LocalBufferDescriptors[-buffer - 1]; 0.00 : 676730: 89 f8 mov %edi,%eax 0.00 : 676732: f7 d0 not %eax 0.00 : 676734: 4c 63 e8 movslq %eax,%r13 0.00 : 676737: 4c 89 ea mov %r13,%rdx 0.00 : 67673a: 48 c1 e2 06 shl $0x6,%rdx 0.00 : 67673e: 48 03 15 cb 69 50 00 add 0x5069cb(%rip),%rdx # b7d110 : if (bufHdr->tag.blockNum == blockNum && 0.00 : 676745: 8b 42 10 mov 0x10(%rdx),%eax 0.00 : 676748: 44 39 e0 cmp %r12d,%eax 0.00 : 67674b: 75 08 jne 676755 0.00 : 67674d: 8b 42 08 mov 0x8(%rdx),%eax 0.00 : 676750: 3b 46 08 cmp 0x8(%rsi),%eax 0.00 : 676753: 74 53 je 6767a8 : RelFileNodeEquals(bufHdr->tag.rnode, relation->rd_node) && : bufHdr->tag.forkNum == forkNum) : return buffer; : ResourceOwnerForgetBuffer(CurrentResourceOwner, buffer); 0.00 : 676755: 48 8b 3d 64 41 54 00 mov 0x544164(%rip),%rdi # bba8c0 0.00 : 67675c: 89 ce mov %ecx,%esi 0.00 : 67675e: e8 9d 41 12 00 callq 79a900 : LocalRefCount[-buffer - 1]--; 0.00 : 676763: 4a 8d 04 ad 00 00 00 lea 0x0(,%r13,4),%rax 0.00 : 67676a: 00 0.00 : 67676b: 48 03 05 ae 69 50 00 add 0x5069ae(%rip),%rax # b7d120 0.00 : 676772: 83 28 01 subl $0x1,(%rax) 0.00 : 676775: eb 97 jmp 67670e 0.00 : 676777: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 67677e: 00 00 : } : else : { : bufHdr = &BufferDescriptors[buffer - 1]; : /* we have pin, so it's ok to examine tag without spinlock */ : if (bufHdr->tag.blockNum == blockNum && 0.00 : 676780: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 676783: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 676786: 0f 85 78 ff ff ff jne 676704 0.00 : 67678c: 8b 07 mov (%rdi),%eax 0.00 : 67678e: 3b 06 cmp (%rsi),%eax 0.00 : 676790: 0f 85 6e ff ff ff jne 676704 0.00 : 676796: 8b 47 0c mov 0xc(%rdi),%eax 0.00 : 676799: 85 c0 test %eax,%eax 0.00 : 67679b: 0f 85 63 ff ff ff jne 676704 0.00 : 6767a1: eb 1c jmp 6767bf 0.00 : 6767a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : Assert(BufferIsPinned(buffer)); : if (BufferIsLocal(buffer)) : { : bufHdr = &LocalBufferDescriptors[-buffer - 1]; : if (bufHdr->tag.blockNum == blockNum && 0.00 : 6767a8: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 6767ab: 3b 46 04 cmp 0x4(%rsi),%eax 0.00 : 6767ae: 66 90 xchg %ax,%ax 0.00 : 6767b0: 75 a3 jne 676755 0.00 : 6767b2: 8b 02 mov (%rdx),%eax 0.00 : 6767b4: 3b 06 cmp (%rsi),%eax 0.00 : 6767b6: 75 9d jne 676755 0.00 : 6767b8: 8b 42 0c mov 0xc(%rdx),%eax 0.00 : 6767bb: 85 c0 test %eax,%eax 0.00 : 6767bd: 75 96 jne 676755 : UnpinBuffer(bufHdr, true); : } : } : : return ReadBuffer(relation, blockNum); : } 0.00 : 6767bf: 89 c8 mov %ecx,%eax 0.00 : 6767c1: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 6767c5: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 6767c9: 4c 8b 6d f8 mov -0x8(%rbp),%r13 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:1261 50.00 : 6767cd: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:658 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:658 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067c6d0 : : /* : * Search the tree for a heap page with at least min_cat of free space : */ : static BlockNumber : fsm_search(Relation rel, uint8 min_cat) : { 0.00 : 67c6d0: 55 push %rbp : : /* Search within the page */ : if (BufferIsValid(buf)) : { : LockBuffer(buf, BUFFER_LOCK_SHARE); : slot = fsm_search_avail(buf, min_cat, /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:658 50.00 : 67c6d1: 40 0f b6 f6 movzbl %sil,%esi : /* : * Search the tree for a heap page with at least min_cat of free space : */ : static BlockNumber : fsm_search(Relation rel, uint8 min_cat) : { 0.00 : 67c6d5: 48 89 e5 mov %rsp,%rbp 0.00 : 67c6d8: 41 57 push %r15 0.00 : 67c6da: 41 bf 02 00 00 00 mov $0x2,%r15d 0.00 : 67c6e0: 41 56 push %r14 0.00 : 67c6e2: 45 31 f6 xor %r14d,%r14d 0.00 : 67c6e5: 41 55 push %r13 0.00 : 67c6e7: 41 54 push %r12 0.00 : 67c6e9: 53 push %rbx 0.00 : 67c6ea: 48 83 ec 48 sub $0x48,%rsp 0.00 : 67c6ee: 48 89 7d a0 mov %rdi,-0x60(%rbp) 0.00 : 67c6f2: c7 45 ac 00 00 00 00 movl $0x0,-0x54(%rbp) 0.00 : 67c6f9: c7 45 b0 00 00 00 00 movl $0x0,-0x50(%rbp) 0.00 : 67c700: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) 0.00 : 67c707: 00 : : /* Search within the page */ : if (BufferIsValid(buf)) : { : LockBuffer(buf, BUFFER_LOCK_SHARE); : slot = fsm_search_avail(buf, min_cat, 0.00 : 67c708: 89 75 94 mov %esi,-0x6c(%rbp) 0.00 : 67c70b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : int slot; : Buffer buf; : uint8 max_avail = 0; : : /* Read the FSM page. */ : buf = fsm_readbuf(rel, addr, false); 0.00 : 67c710: 8b 45 b0 mov -0x50(%rbp),%eax 0.00 : 67c713: 41 83 e4 ff and $0xffffffff,%r12d 0.00 : 67c717: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 67c71e: ff ff ff 0.00 : 67c721: 48 8b 7d a0 mov -0x60(%rbp),%rdi : * bottom. : */ : if (addr.level == FSM_BOTTOM_LEVEL) : return fsm_get_heap_blk(addr, slot); : : addr = fsm_get_child(addr, slot); 0.00 : 67c725: 45 31 ed xor %r13d,%r13d : int slot; : Buffer buf; : uint8 max_avail = 0; : : /* Read the FSM page. */ : buf = fsm_readbuf(rel, addr, false); 0.00 : 67c728: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 67c72c: 48 c1 e0 20 shl $0x20,%rax 0.00 : 67c730: 49 09 c4 or %rax,%r12 0.00 : 67c733: 44 89 f8 mov %r15d,%eax 0.00 : 67c736: 49 21 d4 and %rdx,%r12 0.00 : 67c739: 31 d2 xor %edx,%edx 0.00 : 67c73b: 49 09 c4 or %rax,%r12 0.00 : 67c73e: 4c 89 e6 mov %r12,%rsi 0.00 : 67c741: e8 ba f6 ff ff callq 67be00 : : /* Search within the page */ : if (BufferIsValid(buf)) 0.00 : 67c746: 85 c0 test %eax,%eax : int slot; : Buffer buf; : uint8 max_avail = 0; : : /* Read the FSM page. */ : buf = fsm_readbuf(rel, addr, false); 0.00 : 67c748: 89 c3 mov %eax,%ebx : : /* Search within the page */ : if (BufferIsValid(buf)) 0.00 : 67c74a: 0f 85 90 00 00 00 jne 67c7e0 : if (addr.level == FSM_BOTTOM_LEVEL) : return fsm_get_heap_blk(addr, slot); : : addr = fsm_get_child(addr, slot); : } : else if (addr.level == FSM_ROOT_LEVEL) 0.00 : 67c750: 41 83 ff 02 cmp $0x2,%r15d 0.00 : 67c754: 0f 84 36 01 00 00 je 67c890 : FSMAddress parent; : : Assert(child.level < FSM_ROOT_LEVEL); : : parent.level = child.level + 1; : parent.logpageno = child.logpageno / SlotsPerFSMPage; 0.00 : 67c75a: 48 63 7d b0 movslq -0x50(%rbp),%rdi 0.00 : 67c75e: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 67c763: 48 21 45 c8 and %rax,-0x38(%rbp) 0.00 : 67c767: 48 b8 5f d9 6d 96 75 movabs $0x406cb775966dd95f,%rax 0.00 : 67c76e: b7 6c 40 : * page before us. We'll then update the parent page with the now : * stale information we had. It's OK, because it should happen : * rarely, and will be fixed by the next vacuum. : */ : parent = fsm_get_parent(addr, &parentslot); : fsm_set_and_search(rel, parent, parentslot, max_avail, 0); 0.00 : 67c771: 45 31 c0 xor %r8d,%r8d 0.00 : 67c774: 41 0f b6 cd movzbl %r13b,%ecx : FSMAddress parent; : : Assert(child.level < FSM_ROOT_LEVEL); : : parent.level = child.level + 1; : parent.logpageno = child.logpageno / SlotsPerFSMPage; 0.00 : 67c778: 48 f7 e7 mul %rdi 0.00 : 67c77b: 48 89 d6 mov %rdx,%rsi 0.00 : 67c77e: 48 c1 ee 0a shr $0xa,%rsi 0.00 : 67c782: 48 89 f0 mov %rsi,%rax 0.00 : 67c785: 48 c1 e0 20 shl $0x20,%rax 0.00 : 67c789: 48 09 45 c8 or %rax,-0x38(%rbp) 0.00 : 67c78d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 67c794: ff ff ff 0.00 : 67c797: 48 21 45 c8 and %rax,-0x38(%rbp) 0.00 : 67c79b: 41 8d 47 01 lea 0x1(%r15),%eax 0.00 : 67c79f: 48 09 45 c8 or %rax,-0x38(%rbp) : * page before us. We'll then update the parent page with the now : * stale information we had. It's OK, because it should happen : * rarely, and will be fixed by the next vacuum. : */ : parent = fsm_get_parent(addr, &parentslot); : fsm_set_and_search(rel, parent, parentslot, max_avail, 0); 0.00 : 67c7a3: 48 69 c6 e5 0f 00 00 imul $0xfe5,%rsi,%rax 0.00 : 67c7aa: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 67c7ae: 48 29 c7 sub %rax,%rdi 0.00 : 67c7b1: 0f b7 d7 movzwl %di,%edx 0.00 : 67c7b4: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 67c7b8: e8 c3 fd ff ff callq 67c580 : * quite a few times, updating them as we go. Any inconsistencies : * should eventually be corrected and the loop should end. Looping : * indefinitely is nevertheless scary, so provide an emergency : * valve. : */ : if (restarts++ > 10000) 0.00 : 67c7bd: 81 7d ac 10 27 00 00 cmpl $0x2710,-0x54(%rbp) 0.00 : 67c7c4: 0f 8f c6 00 00 00 jg 67c890 0.00 : 67c7ca: 83 45 ac 01 addl $0x1,-0x54(%rbp) 0.00 : 67c7ce: c7 45 b0 00 00 00 00 movl $0x0,-0x50(%rbp) 0.00 : 67c7d5: 41 bf 02 00 00 00 mov $0x2,%r15d 0.00 : 67c7db: e9 30 ff ff ff jmpq 67c710 : buf = fsm_readbuf(rel, addr, false); : : /* Search within the page */ : if (BufferIsValid(buf)) : { : LockBuffer(buf, BUFFER_LOCK_SHARE); 0.00 : 67c7e0: 89 c7 mov %eax,%edi 0.00 : 67c7e2: be 01 00 00 00 mov $0x1,%esi 0.00 : 67c7e7: e8 24 7f ff ff callq 674710 : slot = fsm_search_avail(buf, min_cat, 0.00 : 67c7ec: 8b 75 94 mov -0x6c(%rbp),%esi 0.00 : 67c7ef: 31 d2 xor %edx,%edx 0.00 : 67c7f1: 45 85 ff test %r15d,%r15d 50.00 : 67c7f4: 0f 94 c2 sete %dl 0.00 : 67c7f7: 89 df mov %ebx,%edi 0.00 : 67c7f9: 31 c9 xor %ecx,%ecx 0.00 : 67c7fb: e8 b0 03 00 00 callq 67cbb0 : (addr.level == FSM_BOTTOM_LEVEL), : false); : if (slot == -1) 0.00 : 67c800: 83 f8 ff cmp $0xffffffff,%eax : : /* Search within the page */ : if (BufferIsValid(buf)) : { : LockBuffer(buf, BUFFER_LOCK_SHARE); : slot = fsm_search_avail(buf, min_cat, 0.00 : 67c803: 41 89 c5 mov %eax,%r13d : (addr.level == FSM_BOTTOM_LEVEL), : false); : if (slot == -1) 0.00 : 67c806: 74 58 je 67c860 : max_avail = fsm_get_max_avail(BufferGetPage(buf)); : UnlockReleaseBuffer(buf); 0.00 : 67c808: 89 df mov %ebx,%edi 0.00 : 67c80a: e8 21 87 ff ff callq 674f30 : { : /* : * Descend the tree, or return the found block if we're at the : * bottom. : */ : if (addr.level == FSM_BOTTOM_LEVEL) 0.00 : 67c80f: 45 85 ff test %r15d,%r15d 0.00 : 67c812: 0f 84 a3 00 00 00 je 67c8bb : */ : static BlockNumber : fsm_get_heap_blk(FSMAddress addr, uint16 slot) : { : Assert(addr.level == FSM_BOTTOM_LEVEL); : return ((unsigned int) addr.logpageno) * SlotsPerFSMPage + slot; 0.00 : 67c818: 8b 55 b0 mov -0x50(%rbp),%edx 0.00 : 67c81b: 41 0f b7 c5 movzwl %r13w,%eax 0.00 : 67c81f: 41 83 e6 ff and $0xffffffff,%r14d 0.00 : 67c823: 69 d2 e5 0f 00 00 imul $0xfe5,%edx,%edx 0.00 : 67c829: 01 c2 add %eax,%edx 0.00 : 67c82b: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 67c832: ff ff ff 0.00 : 67c835: 48 c1 e2 20 shl $0x20,%rdx 0.00 : 67c839: 49 09 d6 or %rdx,%r14 0.00 : 67c83c: 49 21 c6 and %rax,%r14 0.00 : 67c83f: 41 8d 47 ff lea -0x1(%r15),%eax 0.00 : 67c843: 49 09 c6 or %rax,%r14 : * bottom. : */ : if (addr.level == FSM_BOTTOM_LEVEL) : return fsm_get_heap_blk(addr, slot); : : addr = fsm_get_child(addr, slot); 0.00 : 67c846: 4c 89 f2 mov %r14,%rdx 0.00 : 67c849: 45 89 f7 mov %r14d,%r15d 0.00 : 67c84c: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 67c850: 89 55 b0 mov %edx,-0x50(%rbp) 0.00 : 67c853: e9 b8 fe ff ff jmpq 67c710 0.00 : 67c858: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 67c85f: 00 : LockBuffer(buf, BUFFER_LOCK_SHARE); : slot = fsm_search_avail(buf, min_cat, : (addr.level == FSM_BOTTOM_LEVEL), : false); : if (slot == -1) : max_avail = fsm_get_max_avail(BufferGetPage(buf)); 0.00 : 67c860: 85 db test %ebx,%ebx 0.00 : 67c862: 78 44 js 67c8a8 0.00 : 67c864: 8d 43 ff lea -0x1(%rbx),%eax 0.00 : 67c867: 48 63 f8 movslq %eax,%rdi 0.00 : 67c86a: 48 c1 e7 0d shl $0xd,%rdi 0.00 : 67c86e: 48 03 3d 83 32 54 00 add 0x543283(%rip),%rdi # bbfaf8 0.00 : 67c875: e8 b6 01 00 00 callq 67ca30 : UnlockReleaseBuffer(buf); 0.00 : 67c87a: 89 df mov %ebx,%edi : LockBuffer(buf, BUFFER_LOCK_SHARE); : slot = fsm_search_avail(buf, min_cat, : (addr.level == FSM_BOTTOM_LEVEL), : false); : if (slot == -1) : max_avail = fsm_get_max_avail(BufferGetPage(buf)); 0.00 : 67c87c: 41 89 c5 mov %eax,%r13d : UnlockReleaseBuffer(buf); 0.00 : 67c87f: e8 ac 86 ff ff callq 674f30 : if (addr.level == FSM_BOTTOM_LEVEL) : return fsm_get_heap_blk(addr, slot); : : addr = fsm_get_child(addr, slot); : } : else if (addr.level == FSM_ROOT_LEVEL) 0.00 : 67c884: 41 83 ff 02 cmp $0x2,%r15d 0.00 : 67c888: 0f 85 cc fe ff ff jne 67c75a 0.00 : 67c88e: 66 90 xchg %ax,%ax : : /* Start search all over from the root */ : addr = FSM_ROOT_ADDRESS; : } : } : } 0.00 : 67c890: 48 83 c4 48 add $0x48,%rsp : * quite a few times, updating them as we go. Any inconsistencies : * should eventually be corrected and the loop should end. Looping : * indefinitely is nevertheless scary, so provide an emergency : * valve. : */ : if (restarts++ > 10000) 0.00 : 67c894: b8 ff ff ff ff mov $0xffffffff,%eax : : /* Start search all over from the root */ : addr = FSM_ROOT_ADDRESS; : } : } : } 0.00 : 67c899: 5b pop %rbx 0.00 : 67c89a: 41 5c pop %r12 0.00 : 67c89c: 41 5d pop %r13 0.00 : 67c89e: 41 5e pop %r14 0.00 : 67c8a0: 41 5f pop %r15 0.00 : 67c8a2: c9 leaveq 0.00 : 67c8a3: c3 retq 0.00 : 67c8a4: 0f 1f 40 00 nopl 0x0(%rax) : LockBuffer(buf, BUFFER_LOCK_SHARE); : slot = fsm_search_avail(buf, min_cat, : (addr.level == FSM_BOTTOM_LEVEL), : false); : if (slot == -1) : max_avail = fsm_get_max_avail(BufferGetPage(buf)); 0.00 : 67c8a8: 89 d8 mov %ebx,%eax 0.00 : 67c8aa: 48 8b 15 67 08 50 00 mov 0x500867(%rip),%rdx # b7d118 0.00 : 67c8b1: f7 d0 not %eax 0.00 : 67c8b3: 48 98 cltq 0.00 : 67c8b5: 48 8b 3c c2 mov (%rdx,%rax,8),%rdi 0.00 : 67c8b9: eb ba jmp 67c875 : */ : static BlockNumber : fsm_get_heap_blk(FSMAddress addr, uint16 slot) : { : Assert(addr.level == FSM_BOTTOM_LEVEL); : return ((unsigned int) addr.logpageno) * SlotsPerFSMPage + slot; 0.00 : 67c8bb: 48 8b 4d 98 mov -0x68(%rbp),%rcx : : /* Start search all over from the root */ : addr = FSM_ROOT_ADDRESS; : } : } : } 0.00 : 67c8bf: 48 83 c4 48 add $0x48,%rsp : */ : static BlockNumber : fsm_get_heap_blk(FSMAddress addr, uint16 slot) : { : Assert(addr.level == FSM_BOTTOM_LEVEL); : return ((unsigned int) addr.logpageno) * SlotsPerFSMPage + slot; 0.00 : 67c8c3: 41 0f b7 c5 movzwl %r13w,%eax : : /* Start search all over from the root */ : addr = FSM_ROOT_ADDRESS; : } : } : } 0.00 : 67c8c7: 5b pop %rbx 0.00 : 67c8c8: 41 5c pop %r12 : */ : static BlockNumber : fsm_get_heap_blk(FSMAddress addr, uint16 slot) : { : Assert(addr.level == FSM_BOTTOM_LEVEL); : return ((unsigned int) addr.logpageno) * SlotsPerFSMPage + slot; 0.00 : 67c8ca: 48 69 d1 e5 0f 00 00 imul $0xfe5,%rcx,%rdx : : /* Start search all over from the root */ : addr = FSM_ROOT_ADDRESS; : } : } : } 0.00 : 67c8d1: 41 5d pop %r13 0.00 : 67c8d3: 41 5e pop %r14 0.00 : 67c8d5: 41 5f pop %r15 : */ : static BlockNumber : fsm_get_heap_blk(FSMAddress addr, uint16 slot) : { : Assert(addr.level == FSM_BOTTOM_LEVEL); : return ((unsigned int) addr.logpageno) * SlotsPerFSMPage + slot; 0.00 : 67c8d7: 01 d0 add %edx,%eax : : /* Start search all over from the root */ : addr = FSM_ROOT_ADDRESS; : } : } : } 0.00 : 67c8d9: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:149 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:159 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067c940 : : * is located, it is preferred. : */ : BlockNumber : RecordAndGetPageWithFreeSpace(Relation rel, BlockNumber oldPage, : Size oldSpaceAvail, Size spaceNeeded) : { 0.00 : 67c940: 55 push %rbp 0.00 : 67c941: 48 89 e5 mov %rsp,%rbp 0.00 : 67c944: 48 89 5d e0 mov %rbx,-0x20(%rbp) 50.00 : 67c948: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 67c94c: 89 f3 mov %esi,%ebx 0.00 : 67c94e: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 67c952: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 67c956: 48 83 ec 30 sub $0x30,%rsp : { : int cat; : : Assert(avail < BLCKSZ); : : if (avail >= MaxFSMRequestSize) 0.00 : 67c95a: 48 81 fa df 1f 00 00 cmp $0x1fdf,%rdx : * is located, it is preferred. : */ : BlockNumber : RecordAndGetPageWithFreeSpace(Relation rel, BlockNumber oldPage, : Size oldSpaceAvail, Size spaceNeeded) : { 0.00 : 67c961: 49 89 fe mov %rdi,%r14 : { : int cat; : : Assert(avail < BLCKSZ); : : if (avail >= MaxFSMRequestSize) 0.00 : 67c964: 41 bc ff 00 00 00 mov $0xff,%r12d : * is located, it is preferred. : */ : BlockNumber : RecordAndGetPageWithFreeSpace(Relation rel, BlockNumber oldPage, : Size oldSpaceAvail, Size spaceNeeded) : { 0.00 : 67c96a: 48 89 cf mov %rcx,%rdi : { : int cat; : : Assert(avail < BLCKSZ); : : if (avail >= MaxFSMRequestSize) 0.00 : 67c96d: 77 0b ja 67c97a 0.00 : 67c96f: 48 89 d0 mov %rdx,%rax 0.00 : 67c972: 48 c1 e8 05 shr $0x5,%rax 0.00 : 67c976: 44 0f b6 e0 movzbl %al,%r12d : BlockNumber : RecordAndGetPageWithFreeSpace(Relation rel, BlockNumber oldPage, : Size oldSpaceAvail, Size spaceNeeded) : { : int old_cat = fsm_space_avail_to_cat(oldSpaceAvail); : int search_cat = fsm_space_needed_to_cat(spaceNeeded); 0.00 : 67c97a: e8 61 ff ff ff callq 67c8e0 : FSMAddress addr; : uint16 slot; : int search_slot; : : /* Get the location of the FSM byte representing the heap block */ : addr = fsm_get_location(oldPage, &slot); 0.00 : 67c97f: 48 8d 75 de lea -0x22(%rbp),%rsi 0.00 : 67c983: 89 df mov %ebx,%edi : BlockNumber : RecordAndGetPageWithFreeSpace(Relation rel, BlockNumber oldPage, : Size oldSpaceAvail, Size spaceNeeded) : { : int old_cat = fsm_space_avail_to_cat(oldSpaceAvail); : int search_cat = fsm_space_needed_to_cat(spaceNeeded); 0.00 : 67c985: 44 0f b6 e8 movzbl %al,%r13d : FSMAddress addr; : uint16 slot; : int search_slot; : : /* Get the location of the FSM byte representing the heap block */ : addr = fsm_get_location(oldPage, &slot); 0.00 : 67c989: e8 42 f4 ff ff callq 67bdd0 : : search_slot = fsm_set_and_search(rel, addr, slot, old_cat, search_cat); 0.00 : 67c98e: 0f b7 55 de movzwl -0x22(%rbp),%edx /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:159 50.00 : 67c992: 45 89 e8 mov %r13d,%r8d 0.00 : 67c995: 44 89 e1 mov %r12d,%ecx 0.00 : 67c998: 48 89 c6 mov %rax,%rsi 0.00 : 67c99b: 4c 89 f7 mov %r14,%rdi : FSMAddress addr; : uint16 slot; : int search_slot; : : /* Get the location of the FSM byte representing the heap block */ : addr = fsm_get_location(oldPage, &slot); 0.00 : 67c99e: 48 89 c3 mov %rax,%rbx : : search_slot = fsm_set_and_search(rel, addr, slot, old_cat, search_cat); 0.00 : 67c9a1: e8 da fb ff ff callq 67c580 : : /* : * If fsm_set_and_search found a suitable new block, return that. : * Otherwise, search as usual. : */ : if (search_slot != -1) 0.00 : 67c9a6: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 67c9a9: 74 25 je 67c9d0 : */ : static BlockNumber : fsm_get_heap_blk(FSMAddress addr, uint16 slot) : { : Assert(addr.level == FSM_BOTTOM_LEVEL); : return ((unsigned int) addr.logpageno) * SlotsPerFSMPage + slot; 0.00 : 67c9ab: 48 c1 eb 20 shr $0x20,%rbx 0.00 : 67c9af: 0f b7 d0 movzwl %ax,%edx 0.00 : 67c9b2: 48 69 c3 e5 0f 00 00 imul $0xfe5,%rbx,%rax 0.00 : 67c9b9: 8d 04 02 lea (%rdx,%rax,1),%eax : */ : if (search_slot != -1) : return fsm_get_heap_blk(addr, search_slot); : else : return fsm_search(rel, search_cat); : } 0.00 : 67c9bc: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 67c9c0: 4c 8b 65 e8 mov -0x18(%rbp),%r12 0.00 : 67c9c4: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 67c9c8: 4c 8b 75 f8 mov -0x8(%rbp),%r14 0.00 : 67c9cc: c9 leaveq 0.00 : 67c9cd: c3 retq 0.00 : 67c9ce: 66 90 xchg %ax,%ax : * Otherwise, search as usual. : */ : if (search_slot != -1) : return fsm_get_heap_blk(addr, search_slot); : else : return fsm_search(rel, search_cat); 0.00 : 67c9d0: 44 89 ee mov %r13d,%esi 0.00 : 67c9d3: 4c 89 f7 mov %r14,%rdi 0.00 : 67c9d6: e8 f5 fc ff ff callq 67c6d0 : } 0.00 : 67c9db: eb df jmp 67c9bc Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:123 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067ca10 : : * Since this is just a read-only access of a single byte, the page doesn't : * need to be locked. : */ : uint8 : fsm_get_avail(Page page, int slot) : { 0.00 : 67ca10: 55 push %rbp 0.00 : 67ca11: 81 c6 ff 0f 00 00 add $0xfff,%esi 0.00 : 67ca17: 48 63 f6 movslq %esi,%rsi 0.00 : 67ca1a: 0f b6 44 37 1c movzbl 0x1c(%rdi,%rsi,1),%eax /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/fsmpage.c:123 100.00 : 67ca1f: 48 89 e5 mov %rsp,%rbp : FSMPage fsmpage = (FSMPage) PageGetContents(page); : : Assert(slot < LeafNodesPerPage); : : return fsmpage->fp_nodes[NonLeafNodesPerPage + slot]; : } 0.00 : 67ca22: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:315 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:322 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000687e40 : : * We assume the caller is already holding some type of regular lock on : * the relation, so no AcceptInvalidationMessages call is needed here. : */ : void : LockRelationForExtension(Relation relation, LOCKMODE lockmode) : { 50.00 : 687e40: 55 push %rbp : : SET_LOCKTAG_RELATION_EXTEND(tag, : relation->rd_lockInfo.lockRelId.dbId, : relation->rd_lockInfo.lockRelId.relId); : : (void) LockAcquire(&tag, lockmode, false, false); /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lmgr.c:322 50.00 : 687e41: 31 c9 xor %ecx,%ecx 0.00 : 687e43: 31 d2 xor %edx,%edx : * We assume the caller is already holding some type of regular lock on : * the relation, so no AcceptInvalidationMessages call is needed here. : */ : void : LockRelationForExtension(Relation relation, LOCKMODE lockmode) : { 0.00 : 687e45: 48 89 e5 mov %rsp,%rbp 0.00 : 687e48: 48 83 ec 10 sub $0x10,%rsp : LOCKTAG tag; : : SET_LOCKTAG_RELATION_EXTEND(tag, 0.00 : 687e4c: 8b 47 48 mov 0x48(%rdi),%eax 0.00 : 687e4f: 89 45 f0 mov %eax,-0x10(%rbp) 0.00 : 687e52: 8b 47 44 mov 0x44(%rdi),%eax : relation->rd_lockInfo.lockRelId.dbId, : relation->rd_lockInfo.lockRelId.relId); : : (void) LockAcquire(&tag, lockmode, false, false); 0.00 : 687e55: 48 8d 7d f0 lea -0x10(%rbp),%rdi : void : LockRelationForExtension(Relation relation, LOCKMODE lockmode) : { : LOCKTAG tag; : : SET_LOCKTAG_RELATION_EXTEND(tag, 0.00 : 687e59: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%rbp) 0.00 : 687e60: 66 c7 45 fc 00 00 movw $0x0,-0x4(%rbp) 0.00 : 687e66: c6 45 fe 01 movb $0x1,-0x2(%rbp) 0.00 : 687e6a: c6 45 ff 01 movb $0x1,-0x1(%rbp) 0.00 : 687e6e: 89 45 f4 mov %eax,-0xc(%rbp) : relation->rd_lockInfo.lockRelId.dbId, : relation->rd_lockInfo.lockRelId.relId); : : (void) LockAcquire(&tag, lockmode, false, false); 0.00 : 687e71: e8 7a 41 00 00 callq 68bff0 : } 0.00 : 687e76: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1339 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1345 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006885b0 : : * table entry; but since we may be awaking some other process, we can't do : * that here; it's done by GrantLockLocal, instead. : */ : void : GrantLock(LOCK *lock, PROCLOCK *proclock, LOCKMODE lockmode) : { 0.00 : 6885b0: 89 d1 mov %edx,%ecx : lock->nGranted++; : lock->granted[lockmode]++; 0.00 : 6885b2: 48 63 d2 movslq %edx,%rdx : * that here; it's done by GrantLockLocal, instead. : */ : void : GrantLock(LOCK *lock, PROCLOCK *proclock, LOCKMODE lockmode) : { : lock->nGranted++; 0.00 : 6885b5: 83 87 94 00 00 00 01 addl $0x1,0x94(%rdi) : lock->granted[lockmode]++; 0.00 : 6885bc: 48 8d 42 18 lea 0x18(%rdx),%rax : * table entry; but since we may be awaking some other process, we can't do : * that here; it's done by GrantLockLocal, instead. : */ : void : GrantLock(LOCK *lock, PROCLOCK *proclock, LOCKMODE lockmode) : { 0.00 : 6885c0: 55 push %rbp : lock->nGranted++; : lock->granted[lockmode]++; : lock->grantMask |= LOCKBIT_ON(lockmode); 0.00 : 6885c1: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 6885c7: 41 d3 e0 shl %cl,%r8d : */ : void : GrantLock(LOCK *lock, PROCLOCK *proclock, LOCKMODE lockmode) : { : lock->nGranted++; : lock->granted[lockmode]++; 0.00 : 6885ca: 83 44 87 0c 01 addl $0x1,0xc(%rdi,%rax,4) : * table entry; but since we may be awaking some other process, we can't do : * that here; it's done by GrantLockLocal, instead. : */ : void : GrantLock(LOCK *lock, PROCLOCK *proclock, LOCKMODE lockmode) : { 0.00 : 6885cf: 48 89 e5 mov %rsp,%rbp : lock->nGranted++; : lock->granted[lockmode]++; : lock->grantMask |= LOCKBIT_ON(lockmode); 0.00 : 6885d2: 44 09 47 10 or %r8d,0x10(%rdi) : if (lock->granted[lockmode] == lock->requested[lockmode]) /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1339 50.00 : 6885d6: 8b 44 87 0c mov 0xc(%rdi,%rax,4),%eax 0.00 : 6885da: 3b 44 97 40 cmp 0x40(%rdi,%rdx,4),%eax 0.00 : 6885de: 75 08 jne 6885e8 : lock->waitMask &= LOCKBIT_OFF(lockmode); 0.00 : 6885e0: 44 89 c0 mov %r8d,%eax 0.00 : 6885e3: f7 d0 not %eax 0.00 : 6885e5: 21 47 14 and %eax,0x14(%rdi) : proclock->holdMask |= LOCKBIT_ON(lockmode); 0.00 : 6885e8: 44 09 46 10 or %r8d,0x10(%rsi) : LOCK_PRINT("GrantLock", lock, lockmode); : Assert((lock->nGranted > 0) && (lock->granted[lockmode] > 0)); : Assert(lock->nGranted <= lock->nRequested); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1345 50.00 : 6885ec: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1503 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1549 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000068f6c0 : : * : * The caller must be holding the lock in exclusive mode. : */ : void : LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 val) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1503 50.00 : 68f6c0: 55 push %rbp : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 68f6c1: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68f6c6: 48 89 e5 mov %rsp,%rbp 0.00 : 68f6c9: 41 56 push %r14 0.00 : 68f6cb: 49 89 f6 mov %rsi,%r14 0.00 : 68f6ce: 41 55 push %r13 0.00 : 68f6d0: 49 89 d5 mov %rdx,%r13 0.00 : 68f6d3: 41 54 push %r12 : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 68f6d5: 4c 8d 65 d0 lea -0x30(%rbp),%r12 0.00 : 68f6d9: 53 push %rbx 0.00 : 68f6da: 48 89 fb mov %rdi,%rbx 0.00 : 68f6dd: 48 83 ec 10 sub $0x10,%rsp 0.00 : 68f6e1: 4c 89 65 d0 mov %r12,-0x30(%rbp) 0.00 : 68f6e5: 4c 89 65 d8 mov %r12,-0x28(%rbp) 0.00 : 68f6e9: f0 86 07 lock xchg %al,(%rdi) : : /* Acquire mutex. Time spent holding mutex should be short! */ : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.00 : 68f6ec: 84 c0 test %al,%al 0.00 : 68f6ee: 0f 85 f4 00 00 00 jne 68f7e8 : #endif : : Assert(pg_atomic_read_u32(&lock->lockcount) >= EXCLUSIVE_LOCK); : : /* Update the lock's value */ : *valptr = val; 0.00 : 68f6f4: 4d 89 2e mov %r13,(%r14) : : /* : * See if there are any LW_WAIT_UNTIL_FREE waiters that need to be woken : * up. They are always in the front of the queue. : */ : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f6f7: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 68f6fb: 48 85 c0 test %rax,%rax 0.00 : 68f6fe: 0f 84 7c 00 00 00 je 68f780 0.00 : 68f704: 48 8d 7b 10 lea 0x10(%rbx),%rdi 0.00 : 68f708: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 68f70c: 48 39 c7 cmp %rax,%rdi 0.00 : 68f70f: 74 6f je 68f780 : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); : : if (waiter->lwWaitMode != LW_WAIT_UNTIL_FREE) 0.00 : 68f711: 80 78 fa 02 cmpb $0x2,-0x6(%rax) : * See if there are any LW_WAIT_UNTIL_FREE waiters that need to be woken : * up. They are always in the front of the queue. : */ : dlist_foreach_modify(iter, &lock->waiters) : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); 0.00 : 68f715: 48 8d 48 b8 lea -0x48(%rax),%rcx : : if (waiter->lwWaitMode != LW_WAIT_UNTIL_FREE) 0.00 : 68f719: 74 2f je 68f74a 0.00 : 68f71b: eb 63 jmp 68f780 0.00 : 68f71d: 0f 1f 00 nopl (%rax) : dlist_push_tail(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ : dlist_init(head); : : node->next = &head->head; 0.00 : 68f720: 4c 89 61 50 mov %r12,0x50(%rcx) : node->prev = head->head.prev; 0.00 : 68f724: 48 8b 45 d0 mov -0x30(%rbp),%rax : : /* : * See if there are any LW_WAIT_UNTIL_FREE waiters that need to be woken : * up. They are always in the front of the queue. : */ : dlist_foreach_modify(iter, &lock->waiters) 0.00 : 68f728: 48 39 f7 cmp %rsi,%rdi 0.00 : 68f72b: 48 89 41 48 mov %rax,0x48(%rcx) : node->prev->next = node; 0.00 : 68f72f: 48 89 50 08 mov %rdx,0x8(%rax) : head->head.prev = node; 0.00 : 68f733: 48 89 55 d0 mov %rdx,-0x30(%rbp) 0.00 : 68f737: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 68f73b: 74 43 je 68f780 : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); : : if (waiter->lwWaitMode != LW_WAIT_UNTIL_FREE) 0.00 : 68f73d: 80 7e fa 02 cmpb $0x2,-0x6(%rsi) : * See if there are any LW_WAIT_UNTIL_FREE waiters that need to be woken : * up. They are always in the front of the queue. : */ : dlist_foreach_modify(iter, &lock->waiters) : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); 0.00 : 68f741: 48 8d 4e b8 lea -0x48(%rsi),%rcx : : if (waiter->lwWaitMode != LW_WAIT_UNTIL_FREE) 0.00 : 68f745: 75 39 jne 68f780 : break; 0.00 : 68f747: 48 89 c6 mov %rax,%rsi : * Delete 'node' from its list (it must be in one). : */ : STATIC_IF_INLINE void : dlist_delete(dlist_node *node) : { : node->prev->next = node->next; 0.00 : 68f74a: 48 8b 51 48 mov 0x48(%rcx),%rdx 0.00 : 68f74e: 48 8b 41 50 mov 0x50(%rcx),%rax 0.00 : 68f752: 48 89 42 08 mov %rax,0x8(%rdx) : node->next->prev = node->prev; 0.00 : 68f756: 48 8b 51 50 mov 0x50(%rcx),%rdx 0.00 : 68f75a: 48 8b 41 48 mov 0x48(%rcx),%rax 0.00 : 68f75e: 48 89 02 mov %rax,(%rdx) : * Insert a node at the end of the list. : */ : STATIC_IF_INLINE void : dlist_push_tail(dlist_head *head, dlist_node *node) : { : if (head->head.next == NULL) /* convert NULL header to circular */ 0.00 : 68f761: 48 83 7d d8 00 cmpq $0x0,-0x28(%rbp) : : dlist_delete(&waiter->lwWaitLink); : dlist_push_tail(&wakeup, &waiter->lwWaitLink); 0.00 : 68f766: 48 8d 51 48 lea 0x48(%rcx),%rdx 0.00 : 68f76a: 75 b4 jne 68f720 : * Previous state will be thrown away without any cleanup. : */ : STATIC_IF_INLINE void : dlist_init(dlist_head *head) : { : head->head.next = head->head.prev = &head->head; 0.00 : 68f76c: 4c 89 65 d0 mov %r12,-0x30(%rbp) 0.00 : 68f770: 4c 89 65 d8 mov %r12,-0x28(%rbp) 0.00 : 68f774: eb aa jmp 68f720 0.00 : 68f776: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 68f77d: 00 00 00 : } : : /* We are done updating shared state of the lock itself. */ : SpinLockRelease(&lock->mutex); 0.00 : 68f780: c6 03 00 movb $0x0,(%rbx) : : /* : * Awaken any waiters I removed from the queue. : */ : dlist_foreach_modify(iter, &wakeup) 0.00 : 68f783: 48 8b 45 d8 mov -0x28(%rbp),%rax 0.00 : 68f787: 48 85 c0 test %rax,%rax 0.00 : 68f78a: 74 4b je 68f7d7 0.00 : 68f78c: 4c 39 e0 cmp %r12,%rax /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lwlock.c:1549 50.00 : 68f78f: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 68f793: 74 42 je 68f7d7 0.00 : 68f795: 48 89 c1 mov %rax,%rcx 0.00 : 68f798: eb 09 jmp 68f7a3 0.00 : 68f79a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 68f7a0: 48 89 c3 mov %rax,%rbx : { : PGPROC *waiter = dlist_container(PGPROC, lwWaitLink, iter.cur); 0.00 : 68f7a3: 48 8d 79 b8 lea -0x48(%rcx),%rdi : * Delete 'node' from its list (it must be in one). : */ : STATIC_IF_INLINE void : dlist_delete(dlist_node *node) : { : node->prev->next = node->next; 0.00 : 68f7a7: 48 8b 57 48 mov 0x48(%rdi),%rdx 0.00 : 68f7ab: 48 8b 47 50 mov 0x50(%rdi),%rax 0.00 : 68f7af: 48 89 42 08 mov %rax,0x8(%rdx) : node->next->prev = node->prev; 0.00 : 68f7b3: 48 8b 57 50 mov 0x50(%rdi),%rdx 0.00 : 68f7b7: 48 8b 47 48 mov 0x48(%rdi),%rax 0.00 : 68f7bb: 48 89 02 mov %rax,(%rdx) : dlist_delete(&waiter->lwWaitLink); : pg_write_barrier(); : waiter->lwWaiting = false; 0.00 : 68f7be: c6 41 f9 00 movb $0x0,-0x7(%rcx) : PGSemaphoreUnlock(&waiter->sem); 0.00 : 68f7c2: 48 83 c7 10 add $0x10,%rdi 0.00 : 68f7c6: e8 c5 88 fa ff callq 638090 : SpinLockRelease(&lock->mutex); : : /* : * Awaken any waiters I removed from the queue. : */ : dlist_foreach_modify(iter, &wakeup) 0.00 : 68f7cb: 4c 39 e3 cmp %r12,%rbx 0.00 : 68f7ce: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 68f7d2: 48 89 d9 mov %rbx,%rcx 0.00 : 68f7d5: 75 c9 jne 68f7a0 : dlist_delete(&waiter->lwWaitLink); : pg_write_barrier(); : waiter->lwWaiting = false; : PGSemaphoreUnlock(&waiter->sem); : } : } 0.00 : 68f7d7: 48 83 c4 10 add $0x10,%rsp 0.00 : 68f7db: 5b pop %rbx 0.00 : 68f7dc: 41 5c pop %r12 0.00 : 68f7de: 41 5d pop %r13 0.00 : 68f7e0: 41 5e pop %r14 0.00 : 68f7e2: c9 leaveq 0.00 : 68f7e3: c3 retq 0.00 : 68f7e4: 0f 1f 40 00 nopl 0x0(%rax) : : /* Acquire mutex. Time spent holding mutex should be short! */ : #ifdef LWLOCK_STATS : lwstats->spin_delay_count += SpinLockAcquire(&lock->mutex); : #else : SpinLockAcquire(&lock->mutex); 0.00 : 68f7e8: ba f0 05 00 00 mov $0x5f0,%edx 0.00 : 68f7ed: be 85 d0 8a 00 mov $0x8ad085,%esi 0.00 : 68f7f2: e8 49 08 00 00 callq 690040 0.00 : 68f7f7: e9 f8 fe ff ff jmpq 68f6f4 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:659 50.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:661 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000699450 : : * smgrnblocks() -- Calculate the number of blocks in the : * supplied relation. : */ : BlockNumber : smgrnblocks(SMgrRelation reln, ForkNumber forknum) : { 0.00 : 699450: 55 push %rbp : return (*(smgrsw[reln->smgr_which].smgr_nblocks)) (reln, forknum); 0.00 : 699451: 48 63 47 24 movslq 0x24(%rdi),%rax : * smgrnblocks() -- Calculate the number of blocks in the : * supplied relation. : */ : BlockNumber : smgrnblocks(SMgrRelation reln, ForkNumber forknum) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:659 50.00 : 699455: 48 89 e5 mov %rsp,%rbp : return (*(smgrsw[reln->smgr_which].smgr_nblocks)) (reln, forknum); 0.00 : 699458: 48 c1 e0 07 shl $0x7,%rax 0.00 : 69945c: 4c 8b 98 b0 e4 8a 00 mov 0x8ae4b0(%rax),%r11 : } /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:661 50.00 : 699463: c9 leaveq : * supplied relation. : */ : BlockNumber : smgrnblocks(SMgrRelation reln, ForkNumber forknum) : { : return (*(smgrsw[reln->smgr_which].smgr_nblocks)) (reln, forknum); 0.00 : 699464: 41 ff e3 jmpq *%r11 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2648 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2649 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006d3720 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) <= 0); : } : : Datum : float48gt(PG_FUNCTION_ARGS) : { 0.00 : 6d3720: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2648 50.00 : 6d3721: 48 89 e5 mov %rsp,%rbp 0.00 : 6d3724: 53 push %rbx 0.00 : 6d3725: 48 89 fb mov %rdi,%rbx 0.00 : 6d3728: 48 83 ec 08 sub $0x8,%rsp : float4 arg1 = PG_GETARG_FLOAT4(0); /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/float.c:2649 50.00 : 6d372c: 48 8b 7f 20 mov 0x20(%rdi),%rdi 0.00 : 6d3730: e8 7b a2 0a 00 callq 77d9b0 : float8 arg2 = PG_GETARG_FLOAT8(1); 0.00 : 6d3735: 48 8b 7b 28 mov 0x28(%rbx),%rdi : } : : Datum : float48gt(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); 0.00 : 6d3739: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp) : float8 arg2 = PG_GETARG_FLOAT8(1); 0.00 : 6d373e: e8 8d a2 0a 00 callq 77d9d0 : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) > 0); 0.00 : 6d3743: f3 0f 10 55 f4 movss -0xc(%rbp),%xmm2 0.00 : 6d3748: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 6d374c: 0f 5a d2 cvtps2pd %xmm2,%xmm2 0.00 : 6d374f: 66 0f 28 c2 movapd %xmm2,%xmm0 0.00 : 6d3753: e8 c8 f7 ff ff callq 6d2f20 0.00 : 6d3758: 85 c0 test %eax,%eax 0.00 : 6d375a: 0f 9f c0 setg %al : } 0.00 : 6d375d: 48 83 c4 08 add $0x8,%rsp : float48gt(PG_FUNCTION_ARGS) : { : float4 arg1 = PG_GETARG_FLOAT4(0); : float8 arg2 = PG_GETARG_FLOAT8(1); : : PG_RETURN_BOOL(float8_cmp_internal(arg1, arg2) > 0); 0.00 : 6d3761: 0f b6 c0 movzbl %al,%eax : } 0.00 : 6d3764: 5b pop %rbx 0.00 : 6d3765: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:796 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:982 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000075c520 : : * : * The result is always a freshly palloc'd datum. : */ : static text * : text_substring(Datum str, int32 start, int32 length, bool length_not_specified) : { 0.00 : 75c520: 55 push %rbp 0.00 : 75c521: 48 89 e5 mov %rsp,%rbp 0.00 : 75c524: 48 89 5d d8 mov %rbx,-0x28(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:796 50.00 : 75c528: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 75c52c: 89 f3 mov %esi,%ebx 0.00 : 75c52e: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 75c532: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 75c536: 41 89 d5 mov %edx,%r13d 0.00 : 75c539: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 75c53d: 48 83 ec 40 sub $0x40,%rsp 0.00 : 75c541: 48 89 7d c8 mov %rdi,-0x38(%rbp) 0.00 : 75c545: 41 89 cc mov %ecx,%r12d : int32 eml = pg_database_encoding_max_length(); 0.00 : 75c548: e8 43 f3 02 00 callq 78b890 : int32 S = start; /* start position */ : int32 S1; /* adjusted start position */ : int32 L1; /* adjusted substring length */ : : /* life is easy if the encoding max length is 1 */ : if (eml == 1) 0.00 : 75c54d: 83 f8 01 cmp $0x1,%eax 0.00 : 75c550: 0f 84 da 00 00 00 je 75c630 : * return a zero-length string -- PG_GETARG_TEXT_P_SLICE() will do : * that for us. Convert to zero-based starting position : */ : return DatumGetTextPSlice(str, S1 - 1, L1); : } : else if (eml > 1) 0.00 : 75c556: 0f 8e 5e 02 00 00 jle 75c7ba : : /* : * if S is past the end of the string, the tuple toaster will return a : * zero-length string to us : */ : S1 = Max(S, 1); 0.00 : 75c55c: 85 db test %ebx,%ebx 0.00 : 75c55e: ba 01 00 00 00 mov $0x1,%edx : * in advance which byte offset corresponds to the supplied start : * position. : */ : slice_start = 0; : : if (length_not_specified) /* special case - get length to end of 0.00 : 75c563: c7 45 d0 ff ff ff ff movl $0xffffffff,-0x30(%rbp) : : /* : * if S is past the end of the string, the tuple toaster will return a : * zero-length string to us : */ : S1 = Max(S, 1); 0.00 : 75c56a: 0f 4f d3 cmovg %ebx,%edx : * in advance which byte offset corresponds to the supplied start : * position. : */ : slice_start = 0; : : if (length_not_specified) /* special case - get length to end of 0.00 : 75c56d: 45 84 e4 test %r12b,%r12b : : /* : * if S is past the end of the string, the tuple toaster will return a : * zero-length string to us : */ : S1 = Max(S, 1); 0.00 : 75c570: 89 55 d4 mov %edx,-0x2c(%rbp) : * in advance which byte offset corresponds to the supplied start : * position. : */ : slice_start = 0; : : if (length_not_specified) /* special case - get length to end of 0.00 : 75c573: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 75c578: 75 1c jne 75c596 : * string */ : slice_size = L1 = -1; : else : { : int E = S + length; 0.00 : 75c57a: 41 8d 54 1d 00 lea 0x0(%r13,%rbx,1),%edx : : /* : * A negative value for L is the only way for the end position to : * be before the start. SQL99 says to throw an error. : */ : if (E < S) 0.00 : 75c57f: 39 d3 cmp %edx,%ebx 0.00 : 75c581: 0f 8f 5d 02 00 00 jg 75c7e4 : /* : * A zero or negative value for the end position can happen if the : * start was negative or one. SQL99 says to return a zero-length : * string. : */ : if (E < 1) 0.00 : 75c587: 85 d2 test %edx,%edx 0.00 : 75c589: 7e 5c jle 75c5e7 : : /* : * Total slice size in bytes can't be any longer than the start : * position plus substring length times the encoding max length. : */ : slice_size = (S1 + L1) * eml; 0.00 : 75c58b: 89 d1 mov %edx,%ecx 0.00 : 75c58d: 2b 4d d4 sub -0x2c(%rbp),%ecx 0.00 : 75c590: 0f af d0 imul %eax,%edx 0.00 : 75c593: 89 4d d0 mov %ecx,-0x30(%rbp) : : /* : * If we're working with an untoasted source, no need to do an extra : * copying step. : */ : if (VARATT_IS_COMPRESSED(DatumGetPointer(str)) || 0.00 : 75c596: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : 75c59a: 0f b6 08 movzbl (%rax),%ecx 0.00 : 75c59d: 89 c8 mov %ecx,%eax 0.00 : 75c59f: 83 e0 03 and $0x3,%eax 0.00 : 75c5a2: 83 f8 02 cmp $0x2,%eax 0.00 : 75c5a5: 74 69 je 75c610 0.00 : 75c5a7: 80 e9 01 sub $0x1,%cl : VARATT_IS_EXTERNAL(DatumGetPointer(str))) : slice = DatumGetTextPSlice(str, slice_start, slice_size); : else : slice = (text *) DatumGetPointer(str); 0.00 : 75c5aa: 4c 8b 75 c8 mov -0x38(%rbp),%r14 : : /* : * If we're working with an untoasted source, no need to do an extra : * copying step. : */ : if (VARATT_IS_COMPRESSED(DatumGetPointer(str)) || 0.00 : 75c5ae: 74 60 je 75c610 : slice = DatumGetTextPSlice(str, slice_start, slice_size); : else : slice = (text *) DatumGetPointer(str); : : /* see if we got back an empty string */ : if (VARSIZE_ANY_EXHDR(slice) == 0) 0.00 : 75c5b0: 41 0f b6 16 movzbl (%r14),%edx 0.00 : 75c5b4: 80 fa 01 cmp $0x1,%dl 0.00 : 75c5b7: 0f 84 e3 00 00 00 je 75c6a0 0.00 : 75c5bd: 89 d1 mov %edx,%ecx 0.00 : 75c5bf: 83 e1 01 and $0x1,%ecx 0.00 : 75c5c2: 0f 84 b0 00 00 00 je 75c678 0.00 : 75c5c8: 89 d0 mov %edx,%eax 0.00 : 75c5ca: d0 e8 shr %al 0.00 : 75c5cc: 2c 01 sub $0x1,%al 0.00 : 75c5ce: 0f 94 c0 sete %al 0.00 : 75c5d1: 84 c0 test %al,%al 0.00 : 75c5d3: 0f 84 b3 00 00 00 je 75c68c : * Check that the start position wasn't > slice_strlen. If so, SQL99 : * says to return a zero-length string. : */ : if (S1 > slice_strlen) : { : if (slice != (text *) DatumGetPointer(str)) 0.00 : 75c5d9: 4c 3b 75 c8 cmp -0x38(%rbp),%r14 0.00 : 75c5dd: 74 08 je 75c5e7 : pfree(slice); 0.00 : 75c5df: 4c 89 f7 mov %r14,%rdi 0.00 : 75c5e2: e8 99 c5 03 00 callq 798b80 : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); : : /* not reached: suppress compiler warning */ : return NULL; : } 0.00 : 75c5e7: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 75c5eb: 4c 8b 65 e0 mov -0x20(%rbp),%r12 : */ : if (S1 > slice_strlen) : { : if (slice != (text *) DatumGetPointer(str)) : pfree(slice); : return cstring_to_text(""); 0.00 : 75c5ef: bf 96 16 8e 00 mov $0x8e1696,%edi : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); : : /* not reached: suppress compiler warning */ : return NULL; : } 0.00 : 75c5f4: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 75c5f8: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 75c5fc: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 75c600: c9 leaveq : */ : if (S1 > slice_strlen) : { : if (slice != (text *) DatumGetPointer(str)) : pfree(slice); : return cstring_to_text(""); 0.00 : 75c601: e9 6a ef ff ff jmpq 75b570 0.00 : 75c606: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 75c60d: 00 00 00 : * If we're working with an untoasted source, no need to do an extra : * copying step. : */ : if (VARATT_IS_COMPRESSED(DatumGetPointer(str)) || : VARATT_IS_EXTERNAL(DatumGetPointer(str))) : slice = DatumGetTextPSlice(str, slice_start, slice_size); 0.00 : 75c610: 48 8b 7d c8 mov -0x38(%rbp),%rdi 0.00 : 75c614: 31 f6 xor %esi,%esi 0.00 : 75c616: e8 75 2c 02 00 callq 77f290 0.00 : 75c61b: 49 89 c6 mov %rax,%r14 : else : slice = (text *) DatumGetPointer(str); : : /* see if we got back an empty string */ : if (VARSIZE_ANY_EXHDR(slice) == 0) 0.00 : 75c61e: 41 0f b6 16 movzbl (%r14),%edx 0.00 : 75c622: 80 fa 01 cmp $0x1,%dl 0.00 : 75c625: 75 96 jne 75c5bd 0.00 : 75c627: eb 77 jmp 75c6a0 0.00 : 75c629: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : int32 L1; /* adjusted substring length */ : : /* life is easy if the encoding max length is 1 */ : if (eml == 1) : { : S1 = Max(S, 1); 0.00 : 75c630: 85 db test %ebx,%ebx : : if (length_not_specified) /* special case - get length to end of 0.00 : 75c632: ba ff ff ff ff mov $0xffffffff,%edx : int32 L1; /* adjusted substring length */ : : /* life is easy if the encoding max length is 1 */ : if (eml == 1) : { : S1 = Max(S, 1); 0.00 : 75c637: 0f 4f c3 cmovg %ebx,%eax : : if (length_not_specified) /* special case - get length to end of 0.00 : 75c63a: 45 84 e4 test %r12b,%r12b 0.00 : 75c63d: 75 13 jne 75c652 : * string */ : L1 = -1; : else : { : /* end position */ : int E = S + length; 0.00 : 75c63f: 41 8d 54 1d 00 lea 0x0(%r13,%rbx,1),%edx : : /* : * A negative value for L is the only way for the end position to : * be before the start. SQL99 says to throw an error. : */ : if (E < S) 0.00 : 75c644: 39 d3 cmp %edx,%ebx 0.00 : 75c646: 0f 8f dd 01 00 00 jg 75c829 : /* : * A zero or negative value for the end position can happen if the : * start was negative or one. SQL99 says to return a zero-length : * string. : */ : if (E < 1) 0.00 : 75c64c: 85 d2 test %edx,%edx 0.00 : 75c64e: 7e 97 jle 75c5e7 : return cstring_to_text(""); : : L1 = E - S1; 0.00 : 75c650: 29 c2 sub %eax,%edx : /* : * If the start position is past the end of the string, SQL99 says to : * return a zero-length string -- PG_GETARG_TEXT_P_SLICE() will do : * that for us. Convert to zero-based starting position : */ : return DatumGetTextPSlice(str, S1 - 1, L1); 0.00 : 75c652: 48 8b 7d c8 mov -0x38(%rbp),%rdi : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); : : /* not reached: suppress compiler warning */ : return NULL; : } 0.00 : 75c656: 48 8b 5d d8 mov -0x28(%rbp),%rbx : /* : * If the start position is past the end of the string, SQL99 says to : * return a zero-length string -- PG_GETARG_TEXT_P_SLICE() will do : * that for us. Convert to zero-based starting position : */ : return DatumGetTextPSlice(str, S1 - 1, L1); 0.00 : 75c65a: 8d 70 ff lea -0x1(%rax),%esi : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); : : /* not reached: suppress compiler warning */ : return NULL; : } 0.00 : 75c65d: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 75c661: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 75c665: 4c 8b 75 f0 mov -0x10(%rbp),%r14 /home/Computational/mark/src/postgres-andres/src/backend/utils/adt/varlena.c:982 50.00 : 75c669: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 75c66d: c9 leaveq : /* : * If the start position is past the end of the string, SQL99 says to : * return a zero-length string -- PG_GETARG_TEXT_P_SLICE() will do : * that for us. Convert to zero-based starting position : */ : return DatumGetTextPSlice(str, S1 - 1, L1); 0.00 : 75c66e: e9 1d 2c 02 00 jmpq 77f290 0.00 : 75c673: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : slice = DatumGetTextPSlice(str, slice_start, slice_size); : else : slice = (text *) DatumGetPointer(str); : : /* see if we got back an empty string */ : if (VARSIZE_ANY_EXHDR(slice) == 0) 0.00 : 75c678: 41 8b 06 mov (%r14),%eax 0.00 : 75c67b: c1 e8 02 shr $0x2,%eax 0.00 : 75c67e: 83 f8 04 cmp $0x4,%eax 0.00 : 75c681: 0f 94 c0 sete %al 0.00 : 75c684: 84 c0 test %al,%al 0.00 : 75c686: 0f 85 4d ff ff ff jne 75c5d9 : pfree(slice); : return cstring_to_text(""); : } : : /* Now we can get the actual length of the slice in MB characters */ : slice_strlen = pg_mbstrlen_with_len(VARDATA_ANY(slice), 0.00 : 75c68c: 85 c9 test %ecx,%ecx 0.00 : 75c68e: 0f 84 14 01 00 00 je 75c7a8 0.00 : 75c694: d0 ea shr %dl 0.00 : 75c696: 0f b6 c2 movzbl %dl,%eax 0.00 : 75c699: 8d 70 ff lea -0x1(%rax),%esi 0.00 : 75c69c: eb 1d jmp 75c6bb 0.00 : 75c69e: 66 90 xchg %ax,%ax 0.00 : 75c6a0: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : 75c6a5: be 08 00 00 00 mov $0x8,%esi 0.00 : 75c6aa: 3c 01 cmp $0x1,%al 0.00 : 75c6ac: 74 0d je 75c6bb 0.00 : 75c6ae: 3c 12 cmp $0x12,%al 0.00 : 75c6b0: 40 b6 10 mov $0x10,%sil 0.00 : 75c6b3: b8 01 00 00 00 mov $0x1,%eax 0.00 : 75c6b8: 0f 45 f0 cmovne %eax,%esi 0.00 : 75c6bb: 49 8d 7e 01 lea 0x1(%r14),%rdi 0.00 : 75c6bf: e8 bc c3 02 00 callq 788a80 : : /* : * Check that the start position wasn't > slice_strlen. If so, SQL99 : * says to return a zero-length string. : */ : if (S1 > slice_strlen) 0.00 : 75c6c4: 39 45 d4 cmp %eax,-0x2c(%rbp) 0.00 : 75c6c7: 0f 8f 0c ff ff ff jg 75c5d9 : : /* : * Adjust L1 and E1 now that we know the slice string length. Again : * remember that S1 is one based, and slice_start is zero based. : */ : if (L1 > -1) 0.00 : 75c6cd: 44 8b 4d d0 mov -0x30(%rbp),%r9d : E1 = Min(S1 + L1, slice_start + 1 + slice_strlen); : else : E1 = slice_start + 1 + slice_strlen; 0.00 : 75c6d1: 44 8d 78 01 lea 0x1(%rax),%r15d : : /* : * Adjust L1 and E1 now that we know the slice string length. Again : * remember that S1 is one based, and slice_start is zero based. : */ : if (L1 > -1) 0.00 : 75c6d5: 45 85 c9 test %r9d,%r9d 0.00 : 75c6d8: 78 11 js 75c6eb : E1 = Min(S1 + L1, slice_start + 1 + slice_strlen); 0.00 : 75c6da: 44 8d 78 01 lea 0x1(%rax),%r15d 0.00 : 75c6de: 8b 45 d0 mov -0x30(%rbp),%eax 0.00 : 75c6e1: 03 45 d4 add -0x2c(%rbp),%eax 0.00 : 75c6e4: 41 39 c7 cmp %eax,%r15d 0.00 : 75c6e7: 44 0f 4f f8 cmovg %eax,%r15d : E1 = slice_start + 1 + slice_strlen; : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); 0.00 : 75c6eb: 41 f6 06 01 testb $0x1,(%r14) : for (i = 0; i < S1 - 1; i++) 0.00 : 75c6ef: 44 8b 65 d4 mov -0x2c(%rbp),%r12d : E1 = slice_start + 1 + slice_strlen; : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); 0.00 : 75c6f3: 4d 8d 6e 01 lea 0x1(%r14),%r13 0.00 : 75c6f7: 49 8d 46 04 lea 0x4(%r14),%rax 0.00 : 75c6fb: 4c 0f 44 e8 cmove %rax,%r13 : for (i = 0; i < S1 - 1; i++) 0.00 : 75c6ff: 41 83 ec 01 sub $0x1,%r12d : E1 = slice_start + 1 + slice_strlen; : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); 0.00 : 75c703: 31 db xor %ebx,%ebx : for (i = 0; i < S1 - 1; i++) 0.00 : 75c705: 45 85 e4 test %r12d,%r12d 0.00 : 75c708: 7e 1b jle 75c725 0.00 : 75c70a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : p += pg_mblen(p); 0.00 : 75c710: 4c 89 ef mov %r13,%rdi : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); : for (i = 0; i < S1 - 1; i++) 0.00 : 75c713: 83 c3 01 add $0x1,%ebx : p += pg_mblen(p); 0.00 : 75c716: e8 45 c1 02 00 callq 788860 0.00 : 75c71b: 48 98 cltq 0.00 : 75c71d: 49 01 c5 add %rax,%r13 : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); : for (i = 0; i < S1 - 1; i++) 0.00 : 75c720: 41 39 dc cmp %ebx,%r12d 0.00 : 75c723: 7f eb jg 75c710 : : /* : * Count the actual bytes used by the substring of the requested : * length. : */ : for (i = S1; i < E1; i++) 0.00 : 75c725: 44 3b 7d d4 cmp -0x2c(%rbp),%r15d : : /* : * Find the start position in the slice; remember S1 is not zero based : */ : p = VARDATA_ANY(slice); : for (i = 0; i < S1 - 1; i++) 0.00 : 75c729: 4d 89 ec mov %r13,%r12 : : /* : * Count the actual bytes used by the substring of the requested : * length. : */ : for (i = S1; i < E1; i++) 0.00 : 75c72c: 7e 1f jle 75c74d 0.00 : 75c72e: 8b 5d d4 mov -0x2c(%rbp),%ebx 0.00 : 75c731: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : p += pg_mblen(p); 0.00 : 75c738: 4c 89 e7 mov %r12,%rdi : : /* : * Count the actual bytes used by the substring of the requested : * length. : */ : for (i = S1; i < E1; i++) 0.00 : 75c73b: 83 c3 01 add $0x1,%ebx : p += pg_mblen(p); 0.00 : 75c73e: e8 1d c1 02 00 callq 788860 0.00 : 75c743: 48 98 cltq 0.00 : 75c745: 49 01 c4 add %rax,%r12 : : /* : * Count the actual bytes used by the substring of the requested : * length. : */ : for (i = S1; i < E1; i++) 0.00 : 75c748: 41 39 df cmp %ebx,%r15d 0.00 : 75c74b: 7f eb jg 75c738 : p += pg_mblen(p); : : ret = (text *) palloc(VARHDRSZ + (p - s)); 0.00 : 75c74d: 4c 89 e3 mov %r12,%rbx 0.00 : 75c750: 4c 29 eb sub %r13,%rbx 0.00 : 75c753: 48 8d 7b 04 lea 0x4(%rbx),%rdi 0.00 : 75c757: e8 f4 c5 03 00 callq 798d50 0.00 : 75c75c: 49 89 c7 mov %rax,%r15 : SET_VARSIZE(ret, VARHDRSZ + (p - s)); 0.00 : 75c75f: 44 89 e0 mov %r12d,%eax : memcpy(VARDATA(ret), s, (p - s)); 0.00 : 75c762: 48 89 da mov %rbx,%rdx : */ : for (i = S1; i < E1; i++) : p += pg_mblen(p); : : ret = (text *) palloc(VARHDRSZ + (p - s)); : SET_VARSIZE(ret, VARHDRSZ + (p - s)); 0.00 : 75c765: 44 29 e8 sub %r13d,%eax : memcpy(VARDATA(ret), s, (p - s)); 0.00 : 75c768: 49 8d 7f 04 lea 0x4(%r15),%rdi 0.00 : 75c76c: 4c 89 ee mov %r13,%rsi : */ : for (i = S1; i < E1; i++) : p += pg_mblen(p); : : ret = (text *) palloc(VARHDRSZ + (p - s)); : SET_VARSIZE(ret, VARHDRSZ + (p - s)); 0.00 : 75c76f: 8d 04 85 10 00 00 00 lea 0x10(,%rax,4),%eax 0.00 : 75c776: 41 89 07 mov %eax,(%r15) : memcpy(VARDATA(ret), s, (p - s)); 0.00 : 75c779: e8 72 d4 d0 ff callq 469bf0 : : if (slice != (text *) DatumGetPointer(str)) 0.00 : 75c77e: 4c 3b 75 c8 cmp -0x38(%rbp),%r14 0.00 : 75c782: 74 08 je 75c78c : pfree(slice); 0.00 : 75c784: 4c 89 f7 mov %r14,%rdi 0.00 : 75c787: e8 f4 c3 03 00 callq 798b80 : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); : : /* not reached: suppress compiler warning */ : return NULL; : } 0.00 : 75c78c: 4c 89 f8 mov %r15,%rax 0.00 : 75c78f: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 75c793: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 75c797: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 75c79b: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 75c79f: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 75c7a3: c9 leaveq 0.00 : 75c7a4: c3 retq 0.00 : 75c7a5: 0f 1f 00 nopl (%rax) : pfree(slice); : return cstring_to_text(""); : } : : /* Now we can get the actual length of the slice in MB characters */ : slice_strlen = pg_mbstrlen_with_len(VARDATA_ANY(slice), 0.00 : 75c7a8: 41 8b 06 mov (%r14),%eax 0.00 : 75c7ab: 49 8d 7e 04 lea 0x4(%r14),%rdi 0.00 : 75c7af: c1 e8 02 shr $0x2,%eax 0.00 : 75c7b2: 8d 70 fc lea -0x4(%rax),%esi 0.00 : 75c7b5: e9 05 ff ff ff jmpq 75c6bf : pfree(slice); : : return ret; : } : else : elog(ERROR, "invalid backend encoding: encoding max length < 1"); 0.00 : 75c7ba: be d2 03 00 00 mov $0x3d2,%esi 0.00 : 75c7bf: bf 8b bb 8c 00 mov $0x8cbb8b,%edi 0.00 : 75c7c4: ba 40 bf 8c 00 mov $0x8cbf40,%edx 0.00 : 75c7c9: e8 52 ec 01 00 callq 77b420 0.00 : 75c7ce: be 88 bd 8c 00 mov $0x8cbd88,%esi 0.00 : 75c7d3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 75c7d8: 31 c0 xor %eax,%eax 0.00 : 75c7da: e8 51 ea 01 00 callq 77b230 0.00 : 75c7df: e8 ec cc d0 ff callq 4694d0 : /* : * A negative value for L is the only way for the end position to : * be before the start. SQL99 says to throw an error. : */ : if (E < S) : ereport(ERROR, 0.00 : 75c7e4: 45 31 c0 xor %r8d,%r8d 0.00 : 75c7e7: b9 40 bf 8c 00 mov $0x8cbf40,%ecx 0.00 : 75c7ec: ba 76 03 00 00 mov $0x376,%edx 0.00 : 75c7f1: be 8b bb 8c 00 mov $0x8cbb8b,%esi 0.00 : 75c7f6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 75c7fb: e8 c0 e2 01 00 callq 77aac0 0.00 : 75c800: 84 c0 test %al,%al 0.00 : 75c802: 74 db je 75c7df 0.00 : 75c804: bf 98 b8 8c 00 mov $0x8cb898,%edi 0.00 : 75c809: 31 c0 xor %eax,%eax 0.00 : 75c80b: e8 90 00 02 00 callq 77c8a0 0.00 : 75c810: bf 82 00 04 01 mov $0x1040082,%edi 0.00 : 75c815: 89 c3 mov %eax,%ebx 0.00 : 75c817: e8 34 05 02 00 callq 77cd50 0.00 : 75c81c: 89 de mov %ebx,%esi 0.00 : 75c81e: 89 c7 mov %eax,%edi 0.00 : 75c820: 31 c0 xor %eax,%eax 0.00 : 75c822: e8 b9 dd 01 00 callq 77a5e0 0.00 : 75c827: eb b6 jmp 75c7df : /* : * A negative value for L is the only way for the end position to : * be before the start. SQL99 says to throw an error. : */ : if (E < S) : ereport(ERROR, 0.00 : 75c829: 45 31 c0 xor %r8d,%r8d 0.00 : 75c82c: b9 40 bf 8c 00 mov $0x8cbf40,%ecx 0.00 : 75c831: ba 36 03 00 00 mov $0x336,%edx 0.00 : 75c836: eb b9 jmp 75c7f1 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:1187 50.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:1183 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007718f0 : : /* : * Test whether a relation has a system cache. : */ : bool : RelationHasSysCache(Oid relid) : { 0.00 : 7718f0: 55 push %rbp : int low = 0, : high = SysCacheRelationOidSize - 1; 0.00 : 7718f1: 8b 05 c1 7c 44 00 mov 0x447cc1(%rip),%eax # bb95b8 : /* : * Test whether a relation has a system cache. : */ : bool : RelationHasSysCache(Oid relid) : { 0.00 : 7718f7: 48 89 e5 mov %rsp,%rbp : int low = 0, : high = SysCacheRelationOidSize - 1; : : while (low <= high) 0.00 : 7718fa: 89 c6 mov %eax,%esi 0.00 : 7718fc: 83 ee 01 sub $0x1,%esi 0.00 : 7718ff: 78 4e js 77194f : { : int middle = low + (high - low) / 2; 0.00 : 771901: 89 f2 mov %esi,%edx : : if (SysCacheRelationOid[middle] == relid) 0.00 : 771903: 31 c9 xor %ecx,%ecx : int low = 0, : high = SysCacheRelationOidSize - 1; : : while (low <= high) : { : int middle = low + (high - low) / 2; 0.00 : 771905: d1 fa sar %edx : : if (SysCacheRelationOid[middle] == relid) 0.00 : 771907: 48 63 c2 movslq %edx,%rax 0.00 : 77190a: 8b 04 85 c0 94 bb 00 mov 0xbb94c0(,%rax,4),%eax 0.00 : 771911: 39 f8 cmp %edi,%eax 0.00 : 771913: 75 2f jne 771944 0.00 : 771915: eb 41 jmp 771958 0.00 : 771917: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 77191e: 00 00 : return true; : if (SysCacheRelationOid[middle] < relid) : low = middle + 1; 0.00 : 771920: 8d 4a 01 lea 0x1(%rdx),%ecx : RelationHasSysCache(Oid relid) : { : int low = 0, : high = SysCacheRelationOidSize - 1; : : while (low <= high) 0.00 : 771923: 39 ce cmp %ecx,%esi 0.00 : 771925: 7c 28 jl 77194f : { : int middle = low + (high - low) / 2; 0.00 : 771927: 89 f0 mov %esi,%eax 0.00 : 771929: 29 c8 sub %ecx,%eax 0.00 : 77192b: 89 c2 mov %eax,%edx 0.00 : 77192d: c1 ea 1f shr $0x1f,%edx 0.00 : 771930: 01 c2 add %eax,%edx 0.00 : 771932: d1 fa sar %edx 0.00 : 771934: 01 ca add %ecx,%edx : : if (SysCacheRelationOid[middle] == relid) 0.00 : 771936: 48 63 c2 movslq %edx,%rax 0.00 : 771939: 8b 04 85 c0 94 bb 00 mov 0xbb94c0(,%rax,4),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:1187 50.00 : 771940: 39 f8 cmp %edi,%eax 0.00 : 771942: 74 14 je 771958 : return true; : if (SysCacheRelationOid[middle] < relid) 0.00 : 771944: 39 c7 cmp %eax,%edi 0.00 : 771946: 77 d8 ja 771920 : low = middle + 1; : else : high = middle - 1; 0.00 : 771948: 8d 72 ff lea -0x1(%rdx),%esi : RelationHasSysCache(Oid relid) : { : int low = 0, : high = SysCacheRelationOidSize - 1; : : while (low <= high) 0.00 : 77194b: 39 ce cmp %ecx,%esi 0.00 : 77194d: 7d d8 jge 771927 0.00 : 77194f: 31 c0 xor %eax,%eax : else : high = middle - 1; : } : : return false; : } 0.00 : 771951: c9 leaveq 0.00 : 771952: c3 retq 0.00 : 771953: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : RelationHasSysCache(Oid relid) : { : int low = 0, : high = SysCacheRelationOidSize - 1; : : while (low <= high) /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/syscache.c:1183 50.00 : 771958: b8 01 00 00 00 mov $0x1,%eax : else : high = middle - 1; : } : : return false; : } 0.00 : 77195d: c9 leaveq 0.00 : 77195e: 66 90 xchg %ax,%ax Sorted summary for file /lib64/libm-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libm-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000016dd0 <__amd_bas64_log>: 0.00 : 16dd0: 48 83 ec 18 sub $0x18,%rsp 0.00 : 16dd4: 48 31 c0 xor %rax,%rax 0.00 : 16dd7: 66 0f 6f d8 movdqa %xmm0,%xmm3 0.00 : 16ddb: f2 0f 10 e0 movsd %xmm0,%xmm4 0.00 : 16ddf: 66 0f 73 d3 34 psrlq $0x34,%xmm3 0.00 : 16de4: 66 48 0f 7e c0 movq %xmm0,%rax 0.00 : 16de9: 66 0f fb 1d cf 60 24 psubq 0x2460cf(%rip),%xmm3 # 25cec0 <_LIB_VERSION+0x1e38> 0.00 : 16df0: 00 0.00 : 16df1: 66 0f 6f d0 movdqa %xmm0,%xmm2 0.00 : 16df5: f3 0f e6 f3 cvtdq2pd %xmm3,%xmm6 0.00 : 16df9: 66 0f 6f e8 movdqa %xmm0,%xmm5 0.00 : 16dfd: 66 0f 54 2d 7b 60 24 andpd 0x24607b(%rip),%xmm5 # 25ce80 <_LIB_VERSION+0x1df8> 0.00 : 16e04: 00 0.00 : 16e05: 66 0f 2f 2d 73 60 24 comisd 0x246073(%rip),%xmm5 # 25ce80 <_LIB_VERSION+0x1df8> 0.00 : 16e0c: 00 0.00 : 16e0d: 0f 84 2d 02 00 00 je 17040 <__amd_bas64_log+0x270> 0.00 : 16e13: 66 0f 57 ed xorpd %xmm5,%xmm5 0.00 : 16e17: 66 0f 2f c5 comisd %xmm5,%xmm0 0.00 : 16e1b: 0f 86 df 01 00 00 jbe 17000 <__amd_bas64_log+0x230> 0.00 : 16e21: 66 0f db 15 87 60 24 pand 0x246087(%rip),%xmm2 # 25ceb0 <_LIB_VERSION+0x1e28> 0.00 : 16e28: 00 0.00 : 16e29: f2 0f 5c 25 ff 60 24 subsd 0x2460ff(%rip),%xmm4 # 25cf30 <_LIB_VERSION+0x1ea8> 0.00 : 16e30: 00 0.00 : 16e31: 66 0f 2f 35 87 61 24 comisd 0x246187(%rip),%xmm6 # 25cfc0 <_LIB_VERSION+0x1f38> 0.00 : 16e38: 00 0.00 : 16e39: 0f 84 7e 01 00 00 je 16fbd <__amd_bas64_log+0x1ed> 0.00 : 16e3f: 49 89 c1 mov %rax,%r9 0.00 : 16e42: 48 23 05 97 60 24 00 and 0x246097(%rip),%rax # 25cee0 <_LIB_VERSION+0x1e58> 0.00 : 16e49: 4c 23 0d a0 60 24 00 and 0x2460a0(%rip),%r9 # 25cef0 <_LIB_VERSION+0x1e68> 0.00 : 16e50: 49 d1 e1 shl %r9 0.00 : 16e53: 4c 01 c8 add %r9,%rax 0.00 : 16e56: 48 89 04 24 mov %rax,(%rsp) 0.00 : 16e5a: 66 0f 54 25 8e 61 24 andpd 0x24618e(%rip),%xmm4 # 25cff0 <_LIB_VERSION+0x1f68> 0.00 : 16e61: 00 0.00 : 16e62: 66 0f 2f 25 76 61 24 comisd 0x246176(%rip),%xmm4 # 25cfe0 <_LIB_VERSION+0x1f58> 0.00 : 16e69: 00 0.00 : 16e6a: 0f 82 d0 00 00 00 jb 16f40 <__amd_bas64_log+0x170> 0.00 : 16e70: f2 0f 10 0c 24 movsd (%rsp),%xmm1 0.00 : 16e75: 48 c1 e8 2c shr $0x2c,%rax 0.00 : 16e79: 66 0f eb 15 bf 60 24 por 0x2460bf(%rip),%xmm2 # 25cf40 <_LIB_VERSION+0x1eb8> 0.00 : 16e80: 00 0.00 : 16e81: 66 0f eb 0d b7 60 24 por 0x2460b7(%rip),%xmm1 # 25cf40 <_LIB_VERSION+0x1eb8> 0.00 : 16e88: 00 0.00 : 16e89: 4c 8d 0d d0 71 24 00 lea 0x2471d0(%rip),%r9 # 25e060 <_LIB_VERSION+0x2fd8> 0.00 : 16e90: f2 0f 5c ca subsd %xmm2,%xmm1 0.00 : 16e94: f2 41 0f 59 0c c1 mulsd (%r9,%rax,8),%xmm1 0.00 : 16e9a: f2 0f 10 d1 movsd %xmm1,%xmm2 0.00 : 16e9e: f2 0f 10 c1 movsd %xmm1,%xmm0 0.00 : 16ea2: 4c 8d 0d 97 61 24 00 lea 0x246197(%rip),%r9 # 25d040 <_LIB_VERSION+0x1fb8> 0.00 : 16ea9: f2 0f 10 1d ff 60 24 movsd 0x2460ff(%rip),%xmm3 # 25cfb0 <_LIB_VERSION+0x1f28> 0.00 : 16eb0: 00 0.00 : 16eb1: f2 0f 10 0d c7 60 24 movsd 0x2460c7(%rip),%xmm1 # 25cf80 <_LIB_VERSION+0x1ef8> 0.00 : 16eb8: 00 ??:0 50.00 : 16eb9: f2 0f 59 da mulsd %xmm2,%xmm3 0.00 : 16ebd: f2 0f 59 ca mulsd %xmm2,%xmm1 0.00 : 16ec1: f2 0f 59 c2 mulsd %xmm2,%xmm0 0.00 : 16ec5: f2 0f 10 e0 movsd %xmm0,%xmm4 0.00 : 16ec9: f2 0f 58 1d cf 60 24 addsd 0x2460cf(%rip),%xmm3 # 25cfa0 <_LIB_VERSION+0x1f18> 0.00 : 16ed0: 00 0.00 : 16ed1: f2 0f 58 0d 97 60 24 addsd 0x246097(%rip),%xmm1 # 25cf70 <_LIB_VERSION+0x1ee8> 0.00 : 16ed8: 00 0.00 : 16ed9: f2 0f 59 e0 mulsd %xmm0,%xmm4 0.00 : 16edd: f2 0f 59 da mulsd %xmm2,%xmm3 0.00 : 16ee1: f2 0f 59 c8 mulsd %xmm0,%xmm1 0.00 : 16ee5: f2 0f 58 1d a3 60 24 addsd 0x2460a3(%rip),%xmm3 # 25cf90 <_LIB_VERSION+0x1f08> 0.00 : 16eec: 00 0.00 : 16eed: f2 0f 58 ca addsd %xmm2,%xmm1 0.00 : 16ef1: f2 0f 59 dc mulsd %xmm4,%xmm3 0.00 : 16ef5: f2 0f 58 cb addsd %xmm3,%xmm1 0.00 : 16ef9: f2 0f 10 2d 0f 60 24 movsd 0x24600f(%rip),%xmm5 # 25cf10 <_LIB_VERSION+0x1e88> 0.00 : 16f00: 00 0.00 : 16f01: f2 0f 59 ee mulsd %xmm6,%xmm5 0.00 : 16f05: f2 0f 5c e9 subsd %xmm1,%xmm5 0.00 : 16f09: f2 41 0f 10 04 c1 movsd (%r9,%rax,8),%xmm0 0.00 : 16f0f: 48 8d 15 3a 69 24 00 lea 0x24693a(%rip),%rdx # 25d850 <_LIB_VERSION+0x27c8> 0.00 : 16f16: f2 0f 10 14 c2 movsd (%rdx,%rax,8),%xmm2 0.00 : 16f1b: f2 0f 58 d5 addsd %xmm5,%xmm2 50.00 : 16f1f: f2 0f 10 25 d9 5f 24 movsd 0x245fd9(%rip),%xmm4 # 25cf00 <_LIB_VERSION+0x1e78> 0.00 : 16f26: 00 0.00 : 16f27: f2 0f 59 e6 mulsd %xmm6,%xmm4 0.00 : 16f2b: f2 0f 58 c4 addsd %xmm4,%xmm0 0.00 : 16f2f: f2 0f 58 c2 addsd %xmm2,%xmm0 0.00 : 16f33: 48 83 c4 18 add $0x18,%rsp 0.00 : 16f37: c3 retq 0.00 : 16f38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 16f3f: 00 0.00 : 16f40: f2 0f 10 15 d8 5f 24 movsd 0x245fd8(%rip),%xmm2 # 25cf20 <_LIB_VERSION+0x1e98> 0.00 : 16f47: 00 0.00 : 16f48: f2 0f 5c 05 e0 5f 24 subsd 0x245fe0(%rip),%xmm0 # 25cf30 <_LIB_VERSION+0x1ea8> 0.00 : 16f4f: 00 0.00 : 16f50: f2 0f 58 d0 addsd %xmm0,%xmm2 0.00 : 16f54: f2 0f 10 c8 movsd %xmm0,%xmm1 0.00 : 16f58: f2 0f 5e ca divsd %xmm2,%xmm1 0.00 : 16f5c: f2 0f 10 25 ac 60 24 movsd 0x2460ac(%rip),%xmm4 # 25d010 <_LIB_VERSION+0x1f88> 0.00 : 16f63: 00 0.00 : 16f64: f2 0f 10 2d c4 60 24 movsd 0x2460c4(%rip),%xmm5 # 25d030 <_LIB_VERSION+0x1fa8> 0.00 : 16f6b: 00 0.00 : 16f6c: f2 0f 10 f0 movsd %xmm0,%xmm6 0.00 : 16f70: f2 0f 59 f1 mulsd %xmm1,%xmm6 0.00 : 16f74: f2 0f 58 c9 addsd %xmm1,%xmm1 0.00 : 16f78: f2 0f 10 d1 movsd %xmm1,%xmm2 0.00 : 16f7c: f2 0f 59 d1 mulsd %xmm1,%xmm2 0.00 : 16f80: f2 0f 59 e2 mulsd %xmm2,%xmm4 0.00 : 16f84: f2 0f 59 ea mulsd %xmm2,%xmm5 0.00 : 16f88: f2 0f 58 25 70 60 24 addsd 0x246070(%rip),%xmm4 # 25d000 <_LIB_VERSION+0x1f78> 0.00 : 16f8f: 00 0.00 : 16f90: f2 0f 58 2d 88 60 24 addsd 0x246088(%rip),%xmm5 # 25d020 <_LIB_VERSION+0x1f98> 0.00 : 16f97: 00 0.00 : 16f98: f2 0f 59 d1 mulsd %xmm1,%xmm2 0.00 : 16f9c: f2 0f 59 e2 mulsd %xmm2,%xmm4 0.00 : 16fa0: f2 0f 59 d2 mulsd %xmm2,%xmm2 0.00 : 16fa4: f2 0f 59 d1 mulsd %xmm1,%xmm2 0.00 : 16fa8: f2 0f 59 ea mulsd %xmm2,%xmm5 0.00 : 16fac: f2 0f 58 e5 addsd %xmm5,%xmm4 0.00 : 16fb0: f2 0f 5c e6 subsd %xmm6,%xmm4 0.00 : 16fb4: f2 0f 58 c4 addsd %xmm4,%xmm0 0.00 : 16fb8: 48 83 c4 18 add $0x18,%rsp 0.00 : 16fbc: c3 retq 0.00 : 16fbd: 66 0f eb 15 6b 5f 24 por 0x245f6b(%rip),%xmm2 # 25cf30 <_LIB_VERSION+0x1ea8> 0.00 : 16fc4: 00 0.00 : 16fc5: f2 0f 5c 15 63 5f 24 subsd 0x245f63(%rip),%xmm2 # 25cf30 <_LIB_VERSION+0x1ea8> 0.00 : 16fcc: 00 0.00 : 16fcd: f2 0f 10 ea movsd %xmm2,%xmm5 0.00 : 16fd1: 66 0f db 15 d7 5e 24 pand 0x245ed7(%rip),%xmm2 # 25ceb0 <_LIB_VERSION+0x1e28> 0.00 : 16fd8: 00 0.00 : 16fd9: 66 48 0f 7e d0 movq %xmm2,%rax 0.00 : 16fde: 66 0f 73 d5 34 psrlq $0x34,%xmm5 0.00 : 16fe3: 66 0f fa 2d e5 5f 24 psubd 0x245fe5(%rip),%xmm5 # 25cfd0 <_LIB_VERSION+0x1f48> 0.00 : 16fea: 00 0.00 : 16feb: f3 0f e6 f5 cvtdq2pd %xmm5,%xmm6 0.00 : 16fef: e9 4b fe ff ff jmpq 16e3f <__amd_bas64_log+0x6f> 0.00 : 16ff4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 16ffb: 00 00 00 00 00 0.00 : 17000: 75 1e jne 17020 <__amd_bas64_log+0x250> 0.00 : 17002: f2 0f 10 0d 66 5e 24 movsd 0x245e66(%rip),%xmm1 # 25ce70 <_LIB_VERSION+0x1de8> 0.00 : 17009: 00 0.00 : 1700a: 8b 3d 50 5e 24 00 mov 0x245e50(%rip),%edi # 25ce60 <_LIB_VERSION+0x1dd8> 0.00 : 17010: e8 5b 1c 02 00 callq 38c70 <_log_special> 0.00 : 17015: eb 69 jmp 17080 <__amd_bas64_log+0x2b0> 0.00 : 17017: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1701e: 00 00 0.00 : 17020: f2 0f 10 0d 68 5e 24 movsd 0x245e68(%rip),%xmm1 # 25ce90 <_LIB_VERSION+0x1e08> 0.00 : 17027: 00 0.00 : 17028: 8b 3d 36 5e 24 00 mov 0x245e36(%rip),%edi # 25ce64 <_LIB_VERSION+0x1ddc> 0.00 : 1702e: e8 3d 1c 02 00 callq 38c70 <_log_special> 0.00 : 17033: eb 4b jmp 17080 <__amd_bas64_log+0x2b0> 0.00 : 17035: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1703c: 00 00 00 00 0.00 : 17040: 48 3b 05 39 5e 24 00 cmp 0x245e39(%rip),%rax # 25ce80 <_LIB_VERSION+0x1df8> 0.00 : 17047: 74 37 je 17080 <__amd_bas64_log+0x2b0> 0.00 : 17049: 48 3b 05 20 5e 24 00 cmp 0x245e20(%rip),%rax # 25ce70 <_LIB_VERSION+0x1de8> 0.00 : 17050: 74 ce je 17020 <__amd_bas64_log+0x250> 0.00 : 17052: 4c 8b 0d 47 5e 24 00 mov 0x245e47(%rip),%r9 # 25cea0 <_LIB_VERSION+0x1e18> 0.00 : 17059: 49 21 c1 and %rax,%r9 0.00 : 1705c: 75 22 jne 17080 <__amd_bas64_log+0x2b0> 0.00 : 1705e: 48 0b 05 3b 5e 24 00 or 0x245e3b(%rip),%rax # 25cea0 <_LIB_VERSION+0x1e18> 0.00 : 17065: 66 48 0f 6e c8 movq %rax,%xmm1 0.00 : 1706a: 8b 3d f8 5d 24 00 mov 0x245df8(%rip),%edi # 25ce68 <_LIB_VERSION+0x1de0> 0.00 : 17070: e8 fb 1b 02 00 callq 38c70 <_log_special> 0.00 : 17075: eb 09 jmp 17080 <__amd_bas64_log+0x2b0> 0.00 : 17077: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1707e: 00 00 0.00 : 17080: 48 83 c4 18 add $0x18,%rsp 0.00 : 17084: c3 retq 0.00 : 17085: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1708c: 00 00 00 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000442c0 <_IO_vfprintf>: 0.00 : 442c0: 55 push %rbp ??:0 50.00 : 442c1: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 442c8: 00 00 0.00 : 442ca: 48 89 e5 mov %rsp,%rbp 0.00 : 442cd: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 442d1: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 442d5: 49 89 d6 mov %rdx,%r14 0.00 : 442d8: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 442dc: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 442e0: 49 89 fc mov %rdi,%r12 0.00 : 442e3: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 442e7: 48 81 ec e0 07 00 00 sub $0x7e0,%rsp 0.00 : 442ee: 48 8b 15 43 db 32 00 mov 0x32db43(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 442f5: 48 89 85 58 f8 ff ff mov %rax,-0x7a8(%rbp) 0.00 : 442fc: 48 89 b5 b0 f8 ff ff mov %rsi,-0x750(%rbp) 0.00 : 44303: 8b 14 10 mov (%rax,%rdx,1),%edx 0.00 : 44306: 89 95 70 f9 ff ff mov %edx,-0x690(%rbp) 0.00 : 4430c: 8b 87 c0 00 00 00 mov 0xc0(%rdi),%eax 0.00 : 44312: 85 c0 test %eax,%eax 0.00 : 44314: 0f 85 f6 01 00 00 jne 44510 <_IO_vfprintf+0x250> 0.00 : 4431a: c7 87 c0 00 00 00 ff movl $0xffffffff,0xc0(%rdi) 0.00 : 44321: ff ff ff 0.00 : 44324: 41 8b 1c 24 mov (%r12),%ebx 0.00 : 44328: f6 c3 08 test $0x8,%bl 0.00 : 4432b: 0f 85 df 03 00 00 jne 44710 <_IO_vfprintf+0x450> 0.00 : 44331: 48 83 bd b0 f8 ff ff cmpq $0x0,-0x750(%rbp) 0.00 : 44338: 00 0.00 : 44339: 0f 84 21 27 00 00 je 46a60 <_IO_vfprintf+0x27a0> 0.00 : 4433f: f6 c3 02 test $0x2,%bl 0.00 : 44342: 0f 85 f8 01 00 00 jne 44540 <_IO_vfprintf+0x280> 0.00 : 44348: 49 8b 06 mov (%r14),%rax 0.00 : 4434b: 48 8d 95 00 ff ff ff lea -0x100(%rbp),%rdx 0.00 : 44352: 48 8b bd b0 f8 ff ff mov -0x750(%rbp),%rdi 0.00 : 44359: be 25 00 00 00 mov $0x25,%esi 0.00 : 4435e: 48 89 95 50 f8 ff ff mov %rdx,-0x7b0(%rbp) 0.00 : 44365: 48 89 85 00 ff ff ff mov %rax,-0x100(%rbp) 0.00 : 4436c: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 44370: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 44377: 49 8b 46 10 mov 0x10(%r14),%rax 0.00 : 4437b: 48 89 85 10 ff ff ff mov %rax,-0xf0(%rbp) 0.00 : 44382: e8 79 18 04 00 callq 85c00 0.00 : 44387: 66 85 db test %bx,%bx 0.00 : 4438a: 48 89 85 50 f9 ff ff mov %rax,-0x6b0(%rbp) 0.00 : 44391: c7 85 8c f9 ff ff 00 movl $0x0,-0x674(%rbp) 0.00 : 44398: 00 00 00 0.00 : 4439b: 0f 88 87 00 00 00 js 44428 <_IO_vfprintf+0x168> 0.00 : 443a1: 8b 0d 09 33 33 00 mov 0x333309(%rip),%ecx # 3776b0 <__libc_pthread_functions_init> 0.00 : 443a7: 85 c9 test %ecx,%ecx 0.00 : 443a9: 89 8d 8c f9 ff ff mov %ecx,-0x674(%rbp) 0.00 : 443af: 0f 85 cb 26 00 00 jne 46a80 <_IO_vfprintf+0x27c0> 0.00 : 443b5: 48 8b 05 8c db 32 00 mov 0x32db8c(%rip),%rax # 371f48 <_DYNAMIC+0x3e8> 0.00 : 443bc: 4c 89 a5 e8 fe ff ff mov %r12,-0x118(%rbp) 0.00 : 443c3: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) 0.00 : 443ca: 66 85 db test %bx,%bx 0.00 : 443cd: 78 59 js 44428 <_IO_vfprintf+0x168> 0.00 : 443cf: 4d 8b 8c 24 88 00 00 mov 0x88(%r12),%r9 0.00 : 443d6: 00 0.00 : 443d7: 64 4c 8b 14 25 10 00 mov %fs:0x10,%r10 0.00 : 443de: 00 00 0.00 : 443e0: 4d 3b 51 08 cmp 0x8(%r9),%r10 0.00 : 443e4: 74 3d je 44423 <_IO_vfprintf+0x163> 0.00 : 443e6: 31 d2 xor %edx,%edx 0.00 : 443e8: be 01 00 00 00 mov $0x1,%esi 0.00 : 443ed: 89 d0 mov %edx,%eax 0.00 : 443ef: 83 3d be 32 33 00 00 cmpl $0x0,0x3332be(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 443f6: 74 0d je 44405 <_IO_vfprintf+0x145> 0.00 : 443f8: f0 41 0f b1 31 lock cmpxchg %esi,(%r9) 0.00 : 443fd: 0f 85 bc 54 00 00 jne 498bf <_L_lock_724> 0.00 : 44403: eb 0a jmp 4440f <_IO_vfprintf+0x14f> 0.00 : 44405: 41 0f b1 31 cmpxchg %esi,(%r9) 0.00 : 44409: 0f 85 b0 54 00 00 jne 498bf <_L_lock_724> 0.00 : 4440f: 49 8b 84 24 88 00 00 mov 0x88(%r12),%rax 0.00 : 44416: 00 0.00 : 44417: 4c 89 50 08 mov %r10,0x8(%rax) 0.00 : 4441b: 4d 8b 8c 24 88 00 00 mov 0x88(%r12),%r9 0.00 : 44422: 00 0.00 : 44423: 41 83 41 04 01 addl $0x1,0x4(%r9) 0.00 : 44428: 48 8b 9d 50 f9 ff ff mov -0x6b0(%rbp),%rbx 0.00 : 4442f: 48 2b 9d b0 f8 ff ff sub -0x750(%rbp),%rbx 0.00 : 44436: 4c 89 e7 mov %r12,%rdi 0.00 : 44439: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 44440: 00 0.00 : 44441: 48 8b b5 b0 f8 ff ff mov -0x750(%rbp),%rsi 0.00 : 44448: 48 89 da mov %rbx,%rdx 0.00 : 4444b: ff 50 38 callq *0x38(%rax) 0.00 : 4444e: 48 39 c3 cmp %rax,%rbx 0.00 : 44451: 0f 84 09 01 00 00 je 44560 <_IO_vfprintf+0x2a0> 0.00 : 44457: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 4445d: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 44464: 00 00 00 00 0.00 : 44468: 48 c7 85 78 f9 ff ff movq $0x0,-0x688(%rbp) 0.00 : 4446f: 00 00 00 00 0.00 : 44473: 48 8b bd 78 f9 ff ff mov -0x688(%rbp),%rdi 0.00 : 4447a: e8 21 a4 fd ff callq 1e8a0 0.00 : 4447f: 48 8b bd 58 f9 ff ff mov -0x6a8(%rbp),%rdi 0.00 : 44486: e8 15 a4 fd ff callq 1e8a0 0.00 : 4448b: 66 41 83 3c 24 00 cmpw $0x0,(%r12) 0.00 : 44491: 78 49 js 444dc <_IO_vfprintf+0x21c> 0.00 : 44493: 49 8b 94 24 88 00 00 mov 0x88(%r12),%rdx 0.00 : 4449a: 00 0.00 : 4449b: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 4449e: 83 e8 01 sub $0x1,%eax 0.00 : 444a1: 85 c0 test %eax,%eax 0.00 : 444a3: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 444a6: 75 34 jne 444dc <_IO_vfprintf+0x21c> 0.00 : 444a8: 49 8b 84 24 88 00 00 mov 0x88(%r12),%rax 0.00 : 444af: 00 0.00 : 444b0: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 444b7: 00 0.00 : 444b8: 49 8b 94 24 88 00 00 mov 0x88(%r12),%rdx 0.00 : 444bf: 00 0.00 : 444c0: 83 3d ed 31 33 00 00 cmpl $0x0,0x3331ed(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 444c7: 74 0b je 444d4 <_IO_vfprintf+0x214> 0.00 : 444c9: f0 ff 0a lock decl (%rdx) 0.00 : 444cc: 0f 85 08 54 00 00 jne 498da <_L_unlock_932> 0.00 : 444d2: eb 08 jmp 444dc <_IO_vfprintf+0x21c> 0.00 : 444d4: ff 0a decl (%rdx) 0.00 : 444d6: 0f 85 fe 53 00 00 jne 498da <_L_unlock_932> 0.00 : 444dc: 8b 85 8c f9 ff ff mov -0x674(%rbp),%eax 0.00 : 444e2: 85 c0 test %eax,%eax 0.00 : 444e4: 74 39 je 4451f <_IO_vfprintf+0x25f> 0.00 : 444e6: 48 8b 05 8b 31 33 00 mov 0x33318b(%rip),%rax # 377678 <__libc_pthread_functions+0x178> 0.00 : 444ed: 48 8d bd e0 fe ff ff lea -0x120(%rbp),%rdi 0.00 : 444f4: 31 f6 xor %esi,%esi 0.00 : 444f6: 48 c1 c8 11 ror $0x11,%rax 0.00 : 444fa: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 44501: 00 00 0.00 : 44503: ff d0 callq *%rax 0.00 : 44505: eb 18 jmp 4451f <_IO_vfprintf+0x25f> 0.00 : 44507: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4450e: 00 00 0.00 : 44510: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 44516: 44 39 e8 cmp %r13d,%eax 0.00 : 44519: 0f 84 05 fe ff ff je 44324 <_IO_vfprintf+0x64> 0.00 : 4451f: 44 89 e8 mov %r13d,%eax 0.00 : 44522: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 44526: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 4452a: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 4452e: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 44532: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 44536: c9 leaveq 0.00 : 44537: c3 retq 0.00 : 44538: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4453f: 00 0.00 : 44540: 48 8b b5 b0 f8 ff ff mov -0x750(%rbp),%rsi 0.00 : 44547: 4c 89 f2 mov %r14,%rdx 0.00 : 4454a: 4c 89 e7 mov %r12,%rdi 0.00 : 4454d: e8 2e 51 00 00 callq 49680 0.00 : 44552: 41 89 c5 mov %eax,%r13d 0.00 : 44555: eb c8 jmp 4451f <_IO_vfprintf+0x25f> 0.00 : 44557: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4455e: 00 00 0.00 : 44560: 48 81 fb ff ff ff 7f cmp $0x7fffffff,%rbx 0.00 : 44567: 0f 87 ea fe ff ff ja 44457 <_IO_vfprintf+0x197> 0.00 : 4456d: 48 8b 85 50 f9 ff ff mov -0x6b0(%rbp),%rax 0.00 : 44574: 44 8b ad 50 f9 ff ff mov -0x6b0(%rbp),%r13d 0.00 : 4457b: 44 2b ad b0 f8 ff ff sub -0x750(%rbp),%r13d 0.00 : 44582: 80 38 00 cmpb $0x0,(%rax) 0.00 : 44585: 0f 84 d2 fe ff ff je 4445d <_IO_vfprintf+0x19d> 0.00 : 4458b: 48 8d 95 f0 fa ff ff lea -0x510(%rbp),%rdx 0.00 : 44592: 48 8d 8d 60 ff ff ff lea -0xa0(%rbp),%rcx 0.00 : 44599: 49 89 c7 mov %rax,%r15 0.00 : 4459c: 8d 1d 16 0b 00 00 lea 0xb16(%rip),%ebx # 450b8 <_IO_vfprintf+0xdf8> 0.00 : 445a2: 8d 05 32 17 00 00 lea 0x1732(%rip),%eax # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 445a8: 48 c7 85 38 f9 ff ff movq $0x0,-0x6c8(%rbp) 0.00 : 445af: 00 00 00 00 0.00 : 445b3: 48 89 95 88 f8 ff ff mov %rdx,-0x778(%rbp) 0.00 : 445ba: 48 89 8d 30 f8 ff ff mov %rcx,-0x7d0(%rbp) 0.00 : 445c1: 48 81 c2 e8 03 00 00 add $0x3e8,%rdx 0.00 : 445c8: 48 83 c1 0c add $0xc,%rcx 0.00 : 445cc: 29 c3 sub %eax,%ebx 0.00 : 445ce: 48 89 95 c8 fa ff ff mov %rdx,-0x538(%rbp) 0.00 : 445d5: 48 c7 85 40 f9 ff ff movq $0xffffffffffffffff,-0x6c0(%rbp) 0.00 : 445dc: ff ff ff ff 0.00 : 445e0: c7 85 6c f9 ff ff 00 movl $0x0,-0x694(%rbp) 0.00 : 445e7: 00 00 00 0.00 : 445ea: c7 85 74 f9 ff ff 00 movl $0x0,-0x68c(%rbp) 0.00 : 445f1: 00 00 00 0.00 : 445f4: 48 c7 85 78 f9 ff ff movq $0x0,-0x688(%rbp) 0.00 : 445fb: 00 00 00 00 0.00 : 445ff: c6 85 8b f9 ff ff 00 movb $0x0,-0x675(%rbp) 0.00 : 44606: 48 89 8d 28 f8 ff ff mov %rcx,-0x7d8(%rbp) 0.00 : 4460d: 89 9d 24 f8 ff ff mov %ebx,-0x7dc(%rbp) 0.00 : 44613: 49 8d 7f 01 lea 0x1(%r15),%rdi 0.00 : 44617: 48 8d 15 bc 16 00 00 lea 0x16bc(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4461e: 48 89 bd 48 f9 ff ff mov %rdi,-0x6b8(%rbp) 0.00 : 44625: 45 0f b6 7f 01 movzbl 0x1(%r15),%r15d 0.00 : 4462a: 44 89 f8 mov %r15d,%eax 0.00 : 4462d: 44 88 bd eb f9 ff ff mov %r15b,-0x615(%rbp) 0.00 : 44634: 83 e8 20 sub $0x20,%eax 0.00 : 44637: 3c 5a cmp $0x5a,%al 0.00 : 44639: 77 2c ja 44667 <_IO_vfprintf+0x3a7> 0.00 : 4463b: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 44642: 48 8d 15 37 08 0f 00 lea 0xf0837(%rip),%rdx # 134e80 0.00 : 44649: 83 e8 20 sub $0x20,%eax 0.00 : 4464c: 48 98 cltq 0.00 : 4464e: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 44652: 48 8d 05 a7 07 0f 00 lea 0xf07a7(%rip),%rax # 134e00 0.00 : 44659: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 4465d: 48 8d 15 76 16 00 00 lea 0x1676(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 44664: 48 01 c2 add %rax,%rdx 0.00 : 44667: 48 8b 85 c8 fa ff ff mov -0x538(%rbp),%rax 0.00 : 4466e: 48 8d 4d 98 lea -0x68(%rbp),%rcx 0.00 : 44672: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 44679: 00 00 00 00 0.00 : 4467d: c7 85 a4 f9 ff ff 00 movl $0x0,-0x65c(%rbp) 0.00 : 44684: 00 00 00 0.00 : 44687: c7 85 a8 f9 ff ff 00 movl $0x0,-0x658(%rbp) 0.00 : 4468e: 00 00 00 0.00 : 44691: c7 85 ac f9 ff ff 00 movl $0x0,-0x654(%rbp) 0.00 : 44698: 00 00 00 0.00 : 4469b: c7 85 b0 f9 ff ff 00 movl $0x0,-0x650(%rbp) 0.00 : 446a2: 00 00 00 0.00 : 446a5: 48 89 85 60 f9 ff ff mov %rax,-0x6a0(%rbp) 0.00 : 446ac: c7 85 b4 f9 ff ff 00 movl $0x0,-0x64c(%rbp) 0.00 : 446b3: 00 00 00 0.00 : 446b6: c7 85 b8 f9 ff ff 00 movl $0x0,-0x648(%rbp) 0.00 : 446bd: 00 00 00 0.00 : 446c0: c7 85 bc f9 ff ff 00 movl $0x0,-0x644(%rbp) 0.00 : 446c7: 00 00 00 0.00 : 446ca: c7 85 c0 f9 ff ff 00 movl $0x0,-0x640(%rbp) 0.00 : 446d1: 00 00 00 0.00 : 446d4: c7 85 c4 f9 ff ff 00 movl $0x0,-0x63c(%rbp) 0.00 : 446db: 00 00 00 0.00 : 446de: c7 85 b8 fa ff ff 00 movl $0x0,-0x548(%rbp) 0.00 : 446e5: 00 00 00 0.00 : 446e8: c7 85 ec fa ff ff ff movl $0xffffffff,-0x514(%rbp) 0.00 : 446ef: ff ff ff 0.00 : 446f2: c7 85 cc f9 ff ff 00 movl $0x0,-0x634(%rbp) 0.00 : 446f9: 00 00 00 0.00 : 446fc: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 44703: 48 89 8d 38 f8 ff ff mov %rcx,-0x7c8(%rbp) 0.00 : 4470a: ff e2 jmpq *%rdx 0.00 : 4470c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 44710: 48 8b 9d 58 f8 ff ff mov -0x7a8(%rbp),%rbx 0.00 : 44717: 48 8b 0d 1a d7 32 00 mov 0x32d71a(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 4471e: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 44724: c7 04 0b 09 00 00 00 movl $0x9,(%rbx,%rcx,1) 0.00 : 4472b: e9 ef fd ff ff jmpq 4451f <_IO_vfprintf+0x25f> 0.00 : 44730: 48 8b 05 51 d6 32 00 mov 0x32d651(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 44737: 48 8b 9d 58 f8 ff ff mov -0x7a8(%rbp),%rbx 0.00 : 4473e: 48 8d 55 c0 lea -0x40(%rbp),%rdx 0.00 : 44742: 48 89 a5 d8 f8 ff ff mov %rsp,-0x728(%rbp) 0.00 : 44749: 48 8b 04 03 mov (%rbx,%rax,1),%rax 0.00 : 4474d: 48 8b 00 mov (%rax),%rax 0.00 : 44750: 8b 80 a8 00 00 00 mov 0xa8(%rax),%eax 0.00 : 44756: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) 0.00 : 4475d: 00 0.00 : 4475e: 48 83 c0 1e add $0x1e,%rax 0.00 : 44762: 48 c1 e8 04 shr $0x4,%rax 0.00 : 44766: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4476a: 48 29 c4 sub %rax,%rsp 0.00 : 4476d: 41 8b 06 mov (%r14),%eax 0.00 : 44770: 48 8d 7c 24 0f lea 0xf(%rsp),%rdi 0.00 : 44775: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 44779: 83 f8 30 cmp $0x30,%eax 0.00 : 4477c: 48 89 bd a8 f8 ff ff mov %rdi,-0x758(%rbp) 0.00 : 44783: 0f 83 b3 2d 00 00 jae 4753c <_IO_vfprintf+0x327c> 0.00 : 44789: 89 c1 mov %eax,%ecx 0.00 : 4478b: 49 03 4e 10 add 0x10(%r14),%rcx 0.00 : 4478f: 83 c0 08 add $0x8,%eax 0.00 : 44792: 41 89 06 mov %eax,(%r14) 0.00 : 44795: 8b 31 mov (%rcx),%esi 0.00 : 44797: 48 8b bd a8 f8 ff ff mov -0x758(%rbp),%rdi 0.00 : 4479e: e8 3d 88 04 00 callq 8cfe0 0.00 : 447a3: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 447a7: 48 89 c3 mov %rax,%rbx 0.00 : 447aa: 0f 84 8b 3d 00 00 je 4853b <_IO_vfprintf+0x427b> 0.00 : 447b0: 44 8b bd b8 fa ff ff mov -0x548(%rbp),%r15d 0.00 : 447b7: 89 85 d4 f8 ff ff mov %eax,-0x72c(%rbp) 0.00 : 447bd: 41 29 c7 sub %eax,%r15d 0.00 : 447c0: 8b 85 ac f9 ff ff mov -0x654(%rbp),%eax 0.00 : 447c6: 85 c0 test %eax,%eax 0.00 : 447c8: 75 38 jne 44802 <_IO_vfprintf+0x542> 0.00 : 447ca: 45 85 ff test %r15d,%r15d 0.00 : 447cd: 7e 33 jle 44802 <_IO_vfprintf+0x542> 0.00 : 447cf: 49 63 d7 movslq %r15d,%rdx 0.00 : 447d2: be 20 00 00 00 mov $0x20,%esi 0.00 : 447d7: 4c 89 e7 mov %r12,%rdi 0.00 : 447da: e8 61 3a 02 00 callq 68240 <_IO_padn> 0.00 : 447df: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 447e6: 0f 87 69 4a 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 447ec: 89 c2 mov %eax,%edx 0.00 : 447ee: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 447f3: 44 29 e8 sub %r13d,%eax 0.00 : 447f6: 39 c2 cmp %eax,%edx 0.00 : 447f8: 0f 87 3d 3d 00 00 ja 4853b <_IO_vfprintf+0x427b> 0.00 : 447fe: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44802: 45 85 ed test %r13d,%r13d 0.00 : 44805: 0f 88 11 3d 00 00 js 4851c <_IO_vfprintf+0x425c> 0.00 : 4480b: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 44812: 00 0.00 : 44813: 48 89 da mov %rbx,%rdx 0.00 : 44816: 48 8b b5 a8 f8 ff ff mov -0x758(%rbp),%rsi 0.00 : 4481d: 4c 89 e7 mov %r12,%rdi 0.00 : 44820: ff 50 38 callq *0x38(%rax) 0.00 : 44823: 48 39 c3 cmp %rax,%rbx 0.00 : 44826: 0f 85 0f 3d 00 00 jne 4853b <_IO_vfprintf+0x427b> 0.00 : 4482c: 49 63 d5 movslq %r13d,%rdx 0.00 : 4482f: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44834: 48 29 d0 sub %rdx,%rax 0.00 : 44837: 48 39 c3 cmp %rax,%rbx 0.00 : 4483a: 0f 87 fb 3c 00 00 ja 4853b <_IO_vfprintf+0x427b> 0.00 : 44840: 8b 85 ac f9 ff ff mov -0x654(%rbp),%eax 0.00 : 44846: 44 03 ad d4 f8 ff ff add -0x72c(%rbp),%r13d 0.00 : 4484d: 85 c0 test %eax,%eax 0.00 : 4484f: 74 38 je 44889 <_IO_vfprintf+0x5c9> 0.00 : 44851: 45 85 ff test %r15d,%r15d 0.00 : 44854: 7e 33 jle 44889 <_IO_vfprintf+0x5c9> 0.00 : 44856: 49 63 d7 movslq %r15d,%rdx 0.00 : 44859: be 20 00 00 00 mov $0x20,%esi 0.00 : 4485e: 4c 89 e7 mov %r12,%rdi 0.00 : 44861: e8 da 39 02 00 callq 68240 <_IO_padn> 0.00 : 44866: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 4486d: 0f 87 e2 49 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 44873: 89 c2 mov %eax,%edx 0.00 : 44875: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 4487a: 44 29 e8 sub %r13d,%eax 0.00 : 4487d: 39 c2 cmp %eax,%edx 0.00 : 4487f: 0f 87 b6 3c 00 00 ja 4853b <_IO_vfprintf+0x427b> 0.00 : 44885: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44889: 48 8b a5 d8 f8 ff ff mov -0x728(%rbp),%rsp 0.00 : 44890: 48 83 bd 58 f9 ff ff cmpq $0x0,-0x6a8(%rbp) 0.00 : 44897: 00 0.00 : 44898: 0f 85 57 49 00 00 jne 491f5 <_IO_vfprintf+0x4f35> 0.00 : 4489e: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 448a5: be 25 00 00 00 mov $0x25,%esi 0.00 : 448aa: 48 83 c2 01 add $0x1,%rdx 0.00 : 448ae: 48 89 95 b8 f8 ff ff mov %rdx,-0x748(%rbp) 0.00 : 448b5: 48 89 d7 mov %rdx,%rdi 0.00 : 448b8: e8 43 13 04 00 callq 85c00 0.00 : 448bd: 45 85 ed test %r13d,%r13d 0.00 : 448c0: 48 89 85 80 fa ff ff mov %rax,-0x580(%rbp) 0.00 : 448c7: 0f 88 09 49 00 00 js 491d6 <_IO_vfprintf+0x4f16> 0.00 : 448cd: 4c 8b bd 80 fa ff ff mov -0x580(%rbp),%r15 0.00 : 448d4: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 448db: 00 0.00 : 448dc: 4c 89 e7 mov %r12,%rdi 0.00 : 448df: 48 8b b5 b8 f8 ff ff mov -0x748(%rbp),%rsi 0.00 : 448e6: 4c 89 fb mov %r15,%rbx 0.00 : 448e9: 48 2b 9d b8 f8 ff ff sub -0x748(%rbp),%rbx 0.00 : 448f0: 48 89 da mov %rbx,%rdx 0.00 : 448f3: ff 50 38 callq *0x38(%rax) 0.00 : 448f6: 48 39 c3 cmp %rax,%rbx 0.00 : 448f9: 0f 85 40 24 00 00 jne 46d3f <_IO_vfprintf+0x2a7f> 0.00 : 448ff: 49 63 d5 movslq %r13d,%rdx 0.00 : 44902: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44907: 48 29 d0 sub %rdx,%rax 0.00 : 4490a: 48 39 c3 cmp %rax,%rbx 0.00 : 4490d: 0f 87 2c 24 00 00 ja 46d3f <_IO_vfprintf+0x2a7f> 0.00 : 44913: 45 01 fd add %r15d,%r13d 0.00 : 44916: 4c 8b bd 80 fa ff ff mov -0x580(%rbp),%r15 0.00 : 4491d: 44 2b ad b8 f8 ff ff sub -0x748(%rbp),%r13d 0.00 : 44924: 41 80 3f 00 cmpb $0x0,(%r15) 0.00 : 44928: 0f 84 63 26 00 00 je 46f91 <_IO_vfprintf+0x2cd1> 0.00 : 4492e: 83 85 6c f9 ff ff 01 addl $0x1,-0x694(%rbp) 0.00 : 44935: e9 d9 fc ff ff jmpq 44613 <_IO_vfprintf+0x353> 0.00 : 4493a: 48 8b 95 58 f8 ff ff mov -0x7a8(%rbp),%rdx 0.00 : 44941: 48 8b 05 40 d4 32 00 mov 0x32d440(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 44948: 48 89 a5 18 f9 ff ff mov %rsp,-0x6e8(%rbp) 0.00 : 4494f: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 44953: 48 8d 55 90 lea -0x70(%rbp),%rdx 0.00 : 44957: 48 8b 00 mov (%rax),%rax 0.00 : 4495a: 8b 80 a8 00 00 00 mov 0xa8(%rax),%eax 0.00 : 44960: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : 44967: 00 0.00 : 44968: 48 83 c0 1e add $0x1e,%rax 0.00 : 4496c: 48 c1 e8 04 shr $0x4,%rax 0.00 : 44970: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44974: 48 29 c4 sub %rax,%rsp 0.00 : 44977: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 4497e: 48 8d 4c 24 0f lea 0xf(%rsp),%rcx 0.00 : 44983: 48 83 e1 f0 and $0xfffffffffffffff0,%rcx 0.00 : 44987: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 4498b: 48 89 8d 98 f8 ff ff mov %rcx,-0x768(%rbp) 0.00 : 44992: 48 8d 0c c5 00 00 00 lea 0x0(,%rax,8),%rcx 0.00 : 44999: 00 0.00 : 4499a: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 449a1: 48 01 c8 add %rcx,%rax 0.00 : 449a4: 48 85 c0 test %rax,%rax 0.00 : 449a7: 0f 84 f8 3a 00 00 je 484a5 <_IO_vfprintf+0x41e5> 0.00 : 449ad: 48 8b 9d 80 f9 ff ff mov -0x680(%rbp),%rbx 0.00 : 449b4: 48 8b bd 08 fa ff ff mov -0x5f8(%rbp),%rdi 0.00 : 449bb: 48 63 44 0b 30 movslq 0x30(%rbx,%rcx,1),%rax 0.00 : 449c0: 48 c1 e0 04 shl $0x4,%rax 0.00 : 449c4: 8b 34 07 mov (%rdi,%rax,1),%esi 0.00 : 449c7: 48 8b bd 98 f8 ff ff mov -0x768(%rbp),%rdi 0.00 : 449ce: e8 0d 86 04 00 callq 8cfe0 0.00 : 449d3: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 449d7: 48 89 c3 mov %rax,%rbx 0.00 : 449da: 0f 84 b3 3a 00 00 je 48493 <_IO_vfprintf+0x41d3> 0.00 : 449e0: 44 8b bd 64 fa ff ff mov -0x59c(%rbp),%r15d 0.00 : 449e7: 89 85 14 f9 ff ff mov %eax,-0x6ec(%rbp) 0.00 : 449ed: 41 29 c7 sub %eax,%r15d 0.00 : 449f0: 8b 85 48 fa ff ff mov -0x5b8(%rbp),%eax 0.00 : 449f6: 85 c0 test %eax,%eax 0.00 : 449f8: 75 38 jne 44a32 <_IO_vfprintf+0x772> 0.00 : 449fa: 45 85 ff test %r15d,%r15d 0.00 : 449fd: 7e 33 jle 44a32 <_IO_vfprintf+0x772> 0.00 : 449ff: 49 63 d7 movslq %r15d,%rdx 0.00 : 44a02: be 20 00 00 00 mov $0x20,%esi 0.00 : 44a07: 4c 89 e7 mov %r12,%rdi 0.00 : 44a0a: e8 31 38 02 00 callq 68240 <_IO_padn> 0.00 : 44a0f: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44a16: 0f 87 86 38 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 44a1c: 89 c2 mov %eax,%edx 0.00 : 44a1e: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44a23: 44 29 e8 sub %r13d,%eax 0.00 : 44a26: 39 c2 cmp %eax,%edx 0.00 : 44a28: 0f 87 65 3a 00 00 ja 48493 <_IO_vfprintf+0x41d3> 0.00 : 44a2e: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44a32: 45 85 ed test %r13d,%r13d 0.00 : 44a35: 0f 88 c0 39 00 00 js 483fb <_IO_vfprintf+0x413b> 0.00 : 44a3b: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 44a42: 00 0.00 : 44a43: 48 89 da mov %rbx,%rdx 0.00 : 44a46: 48 8b b5 98 f8 ff ff mov -0x768(%rbp),%rsi 0.00 : 44a4d: 4c 89 e7 mov %r12,%rdi 0.00 : 44a50: ff 50 38 callq *0x38(%rax) 0.00 : 44a53: 48 39 c3 cmp %rax,%rbx 0.00 : 44a56: 0f 85 37 3a 00 00 jne 48493 <_IO_vfprintf+0x41d3> 0.00 : 44a5c: 49 63 d5 movslq %r13d,%rdx 0.00 : 44a5f: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44a64: 48 29 d0 sub %rdx,%rax 0.00 : 44a67: 48 39 c3 cmp %rax,%rbx 0.00 : 44a6a: 0f 87 23 3a 00 00 ja 48493 <_IO_vfprintf+0x41d3> 0.00 : 44a70: 8b 9d 48 fa ff ff mov -0x5b8(%rbp),%ebx 0.00 : 44a76: 44 03 ad 14 f9 ff ff add -0x6ec(%rbp),%r13d 0.00 : 44a7d: 85 db test %ebx,%ebx 0.00 : 44a7f: 74 38 je 44ab9 <_IO_vfprintf+0x7f9> 0.00 : 44a81: 45 85 ff test %r15d,%r15d 0.00 : 44a84: 7e 33 jle 44ab9 <_IO_vfprintf+0x7f9> 0.00 : 44a86: 49 63 d7 movslq %r15d,%rdx 0.00 : 44a89: be 20 00 00 00 mov $0x20,%esi 0.00 : 44a8e: 4c 89 e7 mov %r12,%rdi 0.00 : 44a91: e8 aa 37 02 00 callq 68240 <_IO_padn> 0.00 : 44a96: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44a9d: 0f 87 ff 37 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 44aa3: 89 c2 mov %eax,%edx 0.00 : 44aa5: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44aaa: 44 29 e8 sub %r13d,%eax 0.00 : 44aad: 39 c2 cmp %eax,%edx 0.00 : 44aaf: 0f 87 de 39 00 00 ja 48493 <_IO_vfprintf+0x41d3> 0.00 : 44ab5: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44ab9: 48 8b a5 18 f9 ff ff mov -0x6e8(%rbp),%rsp 0.00 : 44ac0: 48 8b bd 58 f9 ff ff mov -0x6a8(%rbp),%rdi 0.00 : 44ac7: e8 d4 9d fd ff callq 1e8a0 0.00 : 44acc: 45 85 ed test %r13d,%r13d 0.00 : 44acf: 0f 88 61 39 00 00 js 48436 <_IO_vfprintf+0x4176> 0.00 : 44ad5: 48 63 9d 6c f9 ff ff movslq -0x694(%rbp),%rbx 0.00 : 44adc: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 44ae3: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 44aea: 00 0.00 : 44aeb: 48 8d 1c db lea (%rbx,%rbx,8),%rbx 0.00 : 44aef: 48 8d 1c df lea (%rdi,%rbx,8),%rbx 0.00 : 44af3: 4c 89 e7 mov %r12,%rdi 0.00 : 44af6: 48 8b 73 18 mov 0x18(%rbx),%rsi 0.00 : 44afa: 48 8b 53 20 mov 0x20(%rbx),%rdx 0.00 : 44afe: 48 29 f2 sub %rsi,%rdx 0.00 : 44b01: ff 50 38 callq *0x38(%rax) 0.00 : 44b04: 48 8b 7b 20 mov 0x20(%rbx),%rdi 0.00 : 44b08: 48 8b 4b 18 mov 0x18(%rbx),%rcx 0.00 : 44b0c: 48 89 c6 mov %rax,%rsi 0.00 : 44b0f: 48 89 f8 mov %rdi,%rax 0.00 : 44b12: 48 29 c8 sub %rcx,%rax 0.00 : 44b15: 48 39 c6 cmp %rax,%rsi 0.00 : 44b18: 0f 85 21 22 00 00 jne 46d3f <_IO_vfprintf+0x2a7f> 0.00 : 44b1e: 49 63 d5 movslq %r13d,%rdx 0.00 : 44b21: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44b26: 48 29 d0 sub %rdx,%rax 0.00 : 44b29: 48 39 c6 cmp %rax,%rsi 0.00 : 44b2c: 0f 87 0d 22 00 00 ja 46d3f <_IO_vfprintf+0x2a7f> 0.00 : 44b32: 89 f8 mov %edi,%eax 0.00 : 44b34: 83 85 6c f9 ff ff 01 addl $0x1,-0x694(%rbp) 0.00 : 44b3b: 29 c8 sub %ecx,%eax 0.00 : 44b3d: 46 8d 2c 28 lea (%rax,%r13,1),%r13d 0.00 : 44b41: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 44b48: 48 39 85 f8 f9 ff ff cmp %rax,-0x608(%rbp) 0.00 : 44b4f: 0f 86 3c 24 00 00 jbe 46f91 <_IO_vfprintf+0x2cd1> 0.00 : 44b55: 48 8b 95 80 f9 ff ff mov -0x680(%rbp),%rdx 0.00 : 44b5c: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 44b60: 4c 8d 3c c2 lea (%rdx,%rax,8),%r15 0.00 : 44b64: 41 0f b6 57 0c movzbl 0xc(%r15),%edx 0.00 : 44b69: 89 d0 mov %edx,%eax 0.00 : 44b6b: 89 d1 mov %edx,%ecx 0.00 : 44b6d: 89 d3 mov %edx,%ebx 0.00 : 44b6f: c0 e8 05 shr $0x5,%al 0.00 : 44b72: c0 e9 03 shr $0x3,%cl 0.00 : 44b75: c0 eb 04 shr $0x4,%bl 0.00 : 44b78: 89 c7 mov %eax,%edi 0.00 : 44b7a: 89 d0 mov %edx,%eax 0.00 : 44b7c: 83 e1 01 and $0x1,%ecx 0.00 : 44b7f: c0 e8 06 shr $0x6,%al 0.00 : 44b82: 83 e3 01 and $0x1,%ebx 0.00 : 44b85: 88 8d f7 f8 ff ff mov %cl,-0x709(%rbp) 0.00 : 44b8b: 83 e0 01 and $0x1,%eax 0.00 : 44b8e: 88 9d f8 f8 ff ff mov %bl,-0x708(%rbp) 0.00 : 44b94: 89 d1 mov %edx,%ecx 0.00 : 44b96: 88 85 f9 f8 ff ff mov %al,-0x707(%rbp) 0.00 : 44b9c: 89 d0 mov %edx,%eax 0.00 : 44b9e: 89 d3 mov %edx,%ebx 0.00 : 44ba0: d0 e8 shr %al 0.00 : 44ba2: 83 e7 01 and $0x1,%edi 0.00 : 44ba5: c0 e9 07 shr $0x7,%cl 0.00 : 44ba8: 83 e3 01 and $0x1,%ebx 0.00 : 44bab: 83 e0 01 and $0x1,%eax 0.00 : 44bae: 88 8d fa f8 ff ff mov %cl,-0x706(%rbp) 0.00 : 44bb4: 88 9d fb f8 ff ff mov %bl,-0x705(%rbp) 0.00 : 44bba: 89 bd 48 fa ff ff mov %edi,-0x5b8(%rbp) 0.00 : 44bc0: 89 d3 mov %edx,%ebx 0.00 : 44bc2: 88 85 fc f8 ff ff mov %al,-0x704(%rbp) 0.00 : 44bc8: 41 0f b6 47 0d movzbl 0xd(%r15),%eax 0.00 : 44bcd: c0 eb 02 shr $0x2,%bl 0.00 : 44bd0: 83 e3 01 and $0x1,%ebx 0.00 : 44bd3: 88 9d fe f8 ff ff mov %bl,-0x702(%rbp) 0.00 : 44bd9: 89 c1 mov %eax,%ecx 0.00 : 44bdb: c0 e8 03 shr $0x3,%al 0.00 : 44bde: d0 e9 shr %cl 0.00 : 44be0: 83 e0 01 and $0x1,%eax 0.00 : 44be3: 83 e1 01 and $0x1,%ecx 0.00 : 44be6: 88 8d fd f8 ff ff mov %cl,-0x703(%rbp) 0.00 : 44bec: 41 8b 7f 04 mov 0x4(%r15),%edi 0.00 : 44bf0: 89 bd 64 fa ff ff mov %edi,-0x59c(%rbp) 0.00 : 44bf6: 41 8b 0f mov (%r15),%ecx 0.00 : 44bf9: 88 85 ff f8 ff ff mov %al,-0x701(%rbp) 0.00 : 44bff: 89 8d 68 fa ff ff mov %ecx,-0x598(%rbp) 0.00 : 44c05: 41 8b 5f 10 mov 0x10(%r15),%ebx 0.00 : 44c09: 89 9d 00 f9 ff ff mov %ebx,-0x700(%rbp) 0.00 : 44c0f: 41 0f b6 7f 08 movzbl 0x8(%r15),%edi 0.00 : 44c14: 40 88 bd 73 fa ff ff mov %dil,-0x58d(%rbp) 0.00 : 44c1b: 41 8b 47 2c mov 0x2c(%r15),%eax 0.00 : 44c1f: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 44c22: 74 26 je 44c4a <_IO_vfprintf+0x98a> 0.00 : 44c24: 48 8b 8d 08 fa ff ff mov -0x5f8(%rbp),%rcx 0.00 : 44c2b: 48 98 cltq 0.00 : 44c2d: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44c31: 8b 04 01 mov (%rcx,%rax,1),%eax 0.00 : 44c34: 85 c0 test %eax,%eax 0.00 : 44c36: 41 89 47 04 mov %eax,0x4(%r15) 0.00 : 44c3a: 0f 88 da 37 00 00 js 4841a <_IO_vfprintf+0x415a> 0.00 : 44c40: 41 8b 5f 04 mov 0x4(%r15),%ebx 0.00 : 44c44: 89 9d 64 fa ff ff mov %ebx,-0x59c(%rbp) 0.00 : 44c4a: 41 8b 47 28 mov 0x28(%r15),%eax 0.00 : 44c4e: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 44c51: 74 23 je 44c76 <_IO_vfprintf+0x9b6> 0.00 : 44c53: 48 8b bd 08 fa ff ff mov -0x5f8(%rbp),%rdi 0.00 : 44c5a: 48 98 cltq 0.00 : 44c5c: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 44c61: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44c65: 8b 04 07 mov (%rdi,%rax,1),%eax 0.00 : 44c68: 85 c0 test %eax,%eax 0.00 : 44c6a: 0f 48 c2 cmovs %edx,%eax 0.00 : 44c6d: 41 89 07 mov %eax,(%r15) 0.00 : 44c70: 89 85 68 fa ff ff mov %eax,-0x598(%rbp) 0.00 : 44c76: 8b 8d 64 fa ff ff mov -0x59c(%rbp),%ecx 0.00 : 44c7c: 39 8d 68 fa ff ff cmp %ecx,-0x598(%rbp) 0.00 : 44c82: 0f 4d 8d 68 fa ff ff cmovge -0x598(%rbp),%ecx 0.00 : 44c89: 48 8b 9d c8 fa ff ff mov -0x538(%rbp),%rbx 0.00 : 44c90: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 44c97: 00 00 00 00 0.00 : 44c9b: 48 89 9d 60 f9 ff ff mov %rbx,-0x6a0(%rbp) 0.00 : 44ca2: 81 f9 c8 03 00 00 cmp $0x3c8,%ecx 0.00 : 44ca8: 89 8d 04 f9 ff ff mov %ecx,-0x6fc(%rbp) 0.00 : 44cae: 7e 4b jle 44cfb <_IO_vfprintf+0xa3b> 0.00 : 44cb0: 8b 85 04 f9 ff ff mov -0x6fc(%rbp),%eax 0.00 : 44cb6: 83 c0 20 add $0x20,%eax 0.00 : 44cb9: 48 63 d8 movslq %eax,%rbx 0.00 : 44cbc: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 44cc3: 0f 87 8c 37 00 00 ja 48455 <_IO_vfprintf+0x4195> 0.00 : 44cc9: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 44ccd: 48 63 95 04 f9 ff ff movslq -0x6fc(%rbp),%rdx 0.00 : 44cd4: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 44cdb: 00 00 00 00 0.00 : 44cdf: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 44ce3: 48 29 c4 sub %rax,%rsp 0.00 : 44ce6: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 44ceb: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 44cef: 48 8d 54 10 20 lea 0x20(%rax,%rdx,1),%rdx 0.00 : 44cf4: 48 89 95 60 f9 ff ff mov %rdx,-0x6a0(%rbp) 0.00 : 44cfb: 48 8b 0d e6 26 33 00 mov 0x3326e6(%rip),%rcx # 3773e8 <__printf_function_table> 0.00 : 44d02: 48 85 c9 test %rcx,%rcx 0.00 : 44d05: 0f 84 f2 38 00 00 je 485fd <_IO_vfprintf+0x433d> 0.00 : 44d0b: 4c 0f be 85 73 fa ff movsbq -0x58d(%rbp),%r8 0.00 : 44d12: ff 0.00 : 44d13: 4a 83 3c c1 00 cmpq $0x0,(%rcx,%r8,8) 0.00 : 44d18: 0f 84 df 38 00 00 je 485fd <_IO_vfprintf+0x433d> 0.00 : 44d1e: 49 8b 47 38 mov 0x38(%r15),%rax 0.00 : 44d22: 48 8d 04 c5 1e 00 00 lea 0x1e(,%rax,8),%rax 0.00 : 44d29: 00 0.00 : 44d2a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 44d2e: 48 29 c4 sub %rax,%rsp 0.00 : 44d31: 48 8d 54 24 0f lea 0xf(%rsp),%rdx 0.00 : 44d36: 48 83 e2 f0 and $0xfffffffffffffff0,%rdx 0.00 : 44d3a: 49 83 7f 38 00 cmpq $0x0,0x38(%r15) 0.00 : 44d3f: 74 2b je 44d6c <_IO_vfprintf+0xaac> 0.00 : 44d41: 31 f6 xor %esi,%esi 0.00 : 44d43: 31 c9 xor %ecx,%ecx 0.00 : 44d45: 89 f0 mov %esi,%eax 0.00 : 44d47: 41 03 47 30 add 0x30(%r15),%eax 0.00 : 44d4b: 83 c6 01 add $0x1,%esi 0.00 : 44d4e: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44d52: 48 03 85 08 fa ff ff add -0x5f8(%rbp),%rax 0.00 : 44d59: 48 89 04 ca mov %rax,(%rdx,%rcx,8) 0.00 : 44d5d: 89 f1 mov %esi,%ecx 0.00 : 44d5f: 49 3b 4f 38 cmp 0x38(%r15),%rcx 0.00 : 44d63: 72 e0 jb 44d45 <_IO_vfprintf+0xa85> 0.00 : 44d65: 48 8b 0d 7c 26 33 00 mov 0x33267c(%rip),%rcx # 3773e8 <__printf_function_table> 0.00 : 44d6c: 4c 89 fe mov %r15,%rsi 0.00 : 44d6f: 4c 89 e7 mov %r12,%rdi 0.00 : 44d72: 42 ff 14 c1 callq *(%rcx,%r8,8) 0.00 : 44d76: 83 f8 fe cmp $0xfffffffe,%eax 0.00 : 44d79: 89 c2 mov %eax,%edx 0.00 : 44d7b: 0f 84 7c 38 00 00 je 485fd <_IO_vfprintf+0x433d> 0.00 : 44d81: 85 c0 test %eax,%eax 0.00 : 44d83: 0f 88 48 1b 00 00 js 468d1 <_IO_vfprintf+0x2611> 0.00 : 44d89: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44d90: 0f 86 1d 01 00 00 jbe 44eb3 <_IO_vfprintf+0xbf3> 0.00 : 44d96: 48 8d 0d 73 db 0f 00 lea 0xfdb73(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 44d9d: 48 8d 35 32 5f 0f 00 lea 0xf5f32(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 44da4: 48 8d 3d e5 9a 0f 00 lea 0xf9ae5(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 44dab: ba ae 07 00 00 mov $0x7ae,%edx 0.00 : 44db0: e8 6b 6b fe ff callq 2b920 <__assert_fail> 0.00 : 44db5: 0f 1f 00 nopl (%rax) 0.00 : 44db8: 8b 85 60 fa ff ff mov -0x5a0(%rbp),%eax 0.00 : 44dbe: 85 c0 test %eax,%eax 0.00 : 44dc0: 0f 85 74 fb ff ff jne 4493a <_IO_vfprintf+0x67a> 0.00 : 44dc6: 8b 9d 64 fa ff ff mov -0x59c(%rbp),%ebx 0.00 : 44dcc: 8b 85 48 fa ff ff mov -0x5b8(%rbp),%eax 0.00 : 44dd2: 83 eb 01 sub $0x1,%ebx 0.00 : 44dd5: 85 c0 test %eax,%eax 0.00 : 44dd7: 75 37 jne 44e10 <_IO_vfprintf+0xb50> 0.00 : 44dd9: 85 db test %ebx,%ebx 0.00 : 44ddb: 7e 33 jle 44e10 <_IO_vfprintf+0xb50> 0.00 : 44ddd: 48 63 d3 movslq %ebx,%rdx 0.00 : 44de0: be 20 00 00 00 mov $0x20,%esi 0.00 : 44de5: 4c 89 e7 mov %r12,%rdi 0.00 : 44de8: e8 53 34 02 00 callq 68240 <_IO_padn> 0.00 : 44ded: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44df4: 0f 87 a8 34 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 44dfa: 89 c2 mov %eax,%edx 0.00 : 44dfc: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44e01: 44 29 e8 sub %r13d,%eax 0.00 : 44e04: 39 c2 cmp %eax,%edx 0.00 : 44e06: 0f 87 c5 1a 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 44e0c: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44e10: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 44e17: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 44e1b: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 44e22: 00 0.00 : 44e23: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 44e2a: 48 01 d0 add %rdx,%rax 0.00 : 44e2d: 48 85 c0 test %rax,%rax 0.00 : 44e30: 0f 84 2f 37 00 00 je 48565 <_IO_vfprintf+0x42a5> 0.00 : 44e36: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 44e3d: 48 8b bd 08 fa ff ff mov -0x5f8(%rbp),%rdi 0.00 : 44e44: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 44e49: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44e4d: 0f b6 34 07 movzbl (%rdi,%rax,1),%esi 0.00 : 44e51: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 44e56: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 44e5b: 0f 83 ec 36 00 00 jae 4854d <_IO_vfprintf+0x428d> 0.00 : 44e61: 40 88 30 mov %sil,(%rax) 0.00 : 44e64: 48 83 c0 01 add $0x1,%rax 0.00 : 44e68: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 44e6d: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 44e74: 0f 84 57 1a 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 44e7a: 8b 85 48 fa ff ff mov -0x5b8(%rbp),%eax 0.00 : 44e80: 41 83 c5 01 add $0x1,%r13d 0.00 : 44e84: 85 c0 test %eax,%eax 0.00 : 44e86: 0f 84 34 fc ff ff je 44ac0 <_IO_vfprintf+0x800> 0.00 : 44e8c: 85 db test %ebx,%ebx 0.00 : 44e8e: 0f 8e 2c fc ff ff jle 44ac0 <_IO_vfprintf+0x800> 0.00 : 44e94: 48 63 d3 movslq %ebx,%rdx 0.00 : 44e97: be 20 00 00 00 mov $0x20,%esi 0.00 : 44e9c: 4c 89 e7 mov %r12,%rdi 0.00 : 44e9f: e8 9c 33 02 00 callq 68240 <_IO_padn> 0.00 : 44ea4: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44eab: 0f 87 f1 33 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 44eb1: 89 c2 mov %eax,%edx 0.00 : 44eb3: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44eb8: 44 29 e8 sub %r13d,%eax 0.00 : 44ebb: 39 c2 cmp %eax,%edx 0.00 : 44ebd: 0f 87 0e 1a 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 44ec3: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 44ec7: e9 f4 fb ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 44ecc: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 44ed3: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 44ed7: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 44ede: 00 0.00 : 44edf: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 44ee6: 48 01 d0 add %rdx,%rax 0.00 : 44ee9: 48 85 c0 test %rax,%rax 0.00 : 44eec: 0f 84 9a 3a 00 00 je 4898c <_IO_vfprintf+0x46cc> 0.00 : 44ef2: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 44ef9: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 44f00: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 44f05: 48 c1 e0 04 shl $0x4,%rax 0.00 : 44f09: 4c 8b 3c 03 mov (%rbx,%rax,1),%r15 0.00 : 44f0d: 4d 85 ff test %r15,%r15 0.00 : 44f10: 0f 84 cc 2c 00 00 je 47be2 <_IO_vfprintf+0x3922> 0.00 : 44f16: 44 8b 9d 60 fa ff ff mov -0x5a0(%rbp),%r11d 0.00 : 44f1d: 45 85 db test %r11d,%r11d 0.00 : 44f20: 0f 84 da 24 00 00 je 47400 <_IO_vfprintf+0x3140> 0.00 : 44f26: 48 8b 9d 30 f8 ff ff mov -0x7d0(%rbp),%rbx 0.00 : 44f2d: 4c 89 bd 78 ff ff ff mov %r15,-0x88(%rbp) 0.00 : 44f34: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) 0.00 : 44f3b: 44 8b 95 68 fa ff ff mov -0x598(%rbp),%r10d 0.00 : 44f42: 45 85 d2 test %r10d,%r10d 0.00 : 44f45: 0f 88 a6 3b 00 00 js 48af1 <_IO_vfprintf+0x4831> 0.00 : 44f4b: 48 63 9d 68 fa ff ff movslq -0x598(%rbp),%rbx 0.00 : 44f52: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 44f59: 0f 87 61 35 00 00 ja 484c0 <_IO_vfprintf+0x4200> 0.00 : 44f5f: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 44f63: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 44f6a: 00 00 00 0.00 : 44f6d: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 44f71: 48 29 c4 sub %rax,%rsp 0.00 : 44f74: 4c 8d 7c 24 0f lea 0xf(%rsp),%r15 0.00 : 44f79: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 44f7d: 48 8b 8d 30 f8 ff ff mov -0x7d0(%rbp),%rcx 0.00 : 44f84: 48 8d b5 78 ff ff ff lea -0x88(%rbp),%rsi 0.00 : 44f8b: 48 89 da mov %rbx,%rdx 0.00 : 44f8e: 4c 89 ff mov %r15,%rdi 0.00 : 44f91: e8 da 82 04 00 callq 8d270 0.00 : 44f96: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 44f9a: 48 89 c3 mov %rax,%rbx 0.00 : 44f9d: 0f 84 2e 19 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 44fa3: 89 9d 88 fa ff ff mov %ebx,-0x578(%rbp) 0.00 : 44fa9: 8b 95 64 fa ff ff mov -0x59c(%rbp),%edx 0.00 : 44faf: 2b 95 88 fa ff ff sub -0x578(%rbp),%edx 0.00 : 44fb5: 89 95 34 f9 ff ff mov %edx,-0x6cc(%rbp) 0.00 : 44fbb: 0f 88 e0 2d 00 00 js 47da1 <_IO_vfprintf+0x3ae1> 0.00 : 44fc1: 44 8b 85 48 fa ff ff mov -0x5b8(%rbp),%r8d 0.00 : 44fc8: 45 85 c0 test %r8d,%r8d 0.00 : 44fcb: 75 41 jne 4500e <_IO_vfprintf+0xd4e> 0.00 : 44fcd: 8b bd 34 f9 ff ff mov -0x6cc(%rbp),%edi 0.00 : 44fd3: 85 ff test %edi,%edi 0.00 : 44fd5: 74 37 je 4500e <_IO_vfprintf+0xd4e> 0.00 : 44fd7: 48 63 95 34 f9 ff ff movslq -0x6cc(%rbp),%rdx 0.00 : 44fde: be 20 00 00 00 mov $0x20,%esi 0.00 : 44fe3: 4c 89 e7 mov %r12,%rdi 0.00 : 44fe6: e8 55 32 02 00 callq 68240 <_IO_padn> 0.00 : 44feb: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 44ff2: 0f 87 aa 32 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 44ff8: 89 c2 mov %eax,%edx 0.00 : 44ffa: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 44fff: 44 29 e8 sub %r13d,%eax 0.00 : 45002: 39 c2 cmp %eax,%edx 0.00 : 45004: 0f 87 c7 18 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 4500a: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 4500e: 45 85 ed test %r13d,%r13d 0.00 : 45011: 0f 88 e4 33 00 00 js 483fb <_IO_vfprintf+0x413b> 0.00 : 45017: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 4501e: 00 0.00 : 4501f: 48 89 da mov %rbx,%rdx 0.00 : 45022: 4c 89 fe mov %r15,%rsi 0.00 : 45025: 4c 89 e7 mov %r12,%rdi 0.00 : 45028: ff 50 38 callq *0x38(%rax) 0.00 : 4502b: 48 39 d8 cmp %rbx,%rax 0.00 : 4502e: 0f 85 9d 18 00 00 jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 45034: 49 63 d5 movslq %r13d,%rdx 0.00 : 45037: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 4503c: 48 29 d0 sub %rdx,%rax 0.00 : 4503f: 48 39 c3 cmp %rax,%rbx 0.00 : 45042: 0f 87 89 18 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 45048: 8b b5 48 fa ff ff mov -0x5b8(%rbp),%esi 0.00 : 4504e: 44 03 ad 88 fa ff ff add -0x578(%rbp),%r13d 0.00 : 45055: 85 f6 test %esi,%esi 0.00 : 45057: 74 41 je 4509a <_IO_vfprintf+0xdda> 0.00 : 45059: 8b 8d 34 f9 ff ff mov -0x6cc(%rbp),%ecx 0.00 : 4505f: 85 c9 test %ecx,%ecx 0.00 : 45061: 74 37 je 4509a <_IO_vfprintf+0xdda> 0.00 : 45063: 48 63 95 34 f9 ff ff movslq -0x6cc(%rbp),%rdx 0.00 : 4506a: be 20 00 00 00 mov $0x20,%esi 0.00 : 4506f: 4c 89 e7 mov %r12,%rdi 0.00 : 45072: e8 c9 31 02 00 callq 68240 <_IO_padn> 0.00 : 45077: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 4507e: 0f 87 1e 32 00 00 ja 482a2 <_IO_vfprintf+0x3fe2> 0.00 : 45084: 89 c2 mov %eax,%edx 0.00 : 45086: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 4508b: 44 29 e8 sub %r13d,%eax 0.00 : 4508e: 39 c2 cmp %eax,%edx 0.00 : 45090: 0f 87 3b 18 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 45096: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 4509a: 8b 95 74 fa ff ff mov -0x58c(%rbp),%edx 0.00 : 450a0: 85 d2 test %edx,%edx 0.00 : 450a2: 0f 84 18 fa ff ff je 44ac0 <_IO_vfprintf+0x800> 0.00 : 450a8: 4c 89 ff mov %r15,%rdi 0.00 : 450ab: e8 f0 97 fd ff callq 1e8a0 0.00 : 450b0: e9 0b fa ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 450b5: 0f 1f 00 nopl (%rax) 0.00 : 450b8: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 450bf: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 450c6: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 450ca: 48 8d 04 c1 lea (%rcx,%rax,8),%rax 0.00 : 450ce: 48 89 85 d8 fa ff ff mov %rax,-0x528(%rbp) 0.00 : 450d5: 48 89 c3 mov %rax,%rbx 0.00 : 450d8: 48 8b 40 38 mov 0x38(%rax),%rax 0.00 : 450dc: 48 8d 04 c5 1e 00 00 lea 0x1e(,%rax,8),%rax 0.00 : 450e3: 00 0.00 : 450e4: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 450e8: 48 29 c4 sub %rax,%rsp 0.00 : 450eb: 48 8d 74 24 0f lea 0xf(%rsp),%rsi 0.00 : 450f0: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 450f4: 48 83 7b 38 00 cmpq $0x0,0x38(%rbx) 0.00 : 450f9: 74 2a je 45125 <_IO_vfprintf+0xe65> 0.00 : 450fb: 31 c9 xor %ecx,%ecx 0.00 : 450fd: 31 d2 xor %edx,%edx 0.00 : 450ff: 48 8b bd d8 fa ff ff mov -0x528(%rbp),%rdi 0.00 : 45106: 89 c8 mov %ecx,%eax 0.00 : 45108: 83 c1 01 add $0x1,%ecx 0.00 : 4510b: 03 47 30 add 0x30(%rdi),%eax 0.00 : 4510e: 48 c1 e0 04 shl $0x4,%rax 0.00 : 45112: 48 03 85 08 fa ff ff add -0x5f8(%rbp),%rax 0.00 : 45119: 48 89 04 d6 mov %rax,(%rsi,%rdx,8) 0.00 : 4511d: 89 ca mov %ecx,%edx 0.00 : 4511f: 48 3b 57 38 cmp 0x38(%rdi),%rdx 0.00 : 45123: 72 da jb 450ff <_IO_vfprintf+0xe3f> 0.00 : 45125: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4512a: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4512f: 0f 83 71 37 00 00 jae 488a6 <_IO_vfprintf+0x45e6> 0.00 : 45135: c6 00 25 movb $0x25,(%rax) 0.00 : 45138: 48 83 c0 01 add $0x1,%rax 0.00 : 4513c: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 45141: 48 8b 95 d8 fa ff ff mov -0x528(%rbp),%rdx 0.00 : 45148: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 4514d: 0f b6 42 0c movzbl 0xc(%rdx),%eax 0.00 : 45151: a8 08 test $0x8,%al 0.00 : 45153: 0f 85 7a 30 00 00 jne 481d3 <_IO_vfprintf+0x3f13> 0.00 : 45159: 84 c0 test %al,%al 0.00 : 4515b: 0f 88 a3 30 00 00 js 48204 <_IO_vfprintf+0x3f44> 0.00 : 45161: a8 40 test $0x40,%al 0.00 : 45163: 0f 85 e8 2f 00 00 jne 48151 <_IO_vfprintf+0x3e91> 0.00 : 45169: a8 10 test $0x10,%al 0.00 : 4516b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 45170: 0f 85 cc 35 00 00 jne 48742 <_IO_vfprintf+0x4482> 0.00 : 45176: a8 20 test $0x20,%al 0.00 : 45178: 0f 85 ca 2d 00 00 jne 47f48 <_IO_vfprintf+0x3c88> 0.00 : 4517e: 48 8b 85 d8 fa ff ff mov -0x528(%rbp),%rax 0.00 : 45185: 83 78 10 30 cmpl $0x30,0x10(%rax) 0.00 : 45189: 0f 84 65 35 00 00 je 486f4 <_IO_vfprintf+0x4434> 0.00 : 4518f: 48 8b 95 d8 fa ff ff mov -0x528(%rbp),%rdx 0.00 : 45196: f6 42 0d 08 testb $0x8,0xd(%rdx) 0.00 : 4519a: 0f 85 34 35 00 00 jne 486d4 <_IO_vfprintf+0x4414> 0.00 : 451a0: 48 8b 8d d8 fa ff ff mov -0x528(%rbp),%rcx 0.00 : 451a7: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 451aa: 85 c0 test %eax,%eax 0.00 : 451ac: 0f 85 f8 40 00 00 jne 492aa <_IO_vfprintf+0x4fea> 0.00 : 451b2: 48 8b bd d8 fa ff ff mov -0x528(%rbp),%rdi 0.00 : 451b9: 83 3f ff cmpl $0xffffffff,(%rdi) 0.00 : 451bc: 0f 84 25 2c 00 00 je 47de7 <_IO_vfprintf+0x3b27> 0.00 : 451c2: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 451c7: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 451cc: 0f 83 00 42 00 00 jae 493d2 <_IO_vfprintf+0x5112> 0.00 : 451d2: c6 00 2e movb $0x2e,(%rax) 0.00 : 451d5: 48 83 c0 01 add $0x1,%rax 0.00 : 451d9: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 451de: 81 fb ff ff ff 7f cmp $0x7fffffff,%ebx 0.00 : 451e4: 0f 84 e7 16 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 451ea: 48 8b 85 d8 fa ff ff mov -0x528(%rbp),%rax 0.00 : 451f1: 48 8b b5 28 f8 ff ff mov -0x7d8(%rbp),%rsi 0.00 : 451f8: 31 c9 xor %ecx,%ecx 0.00 : 451fa: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 451ff: 83 c3 01 add $0x1,%ebx 0.00 : 45202: 48 63 38 movslq (%rax),%rdi 0.00 : 45205: e8 c6 ea ff ff callq 43cd0 <_itoa_word> 0.00 : 4520a: 48 39 85 28 f8 ff ff cmp %rax,-0x7d8(%rbp) 0.00 : 45211: 49 89 c7 mov %rax,%r15 0.00 : 45214: 77 35 ja 4524b <_IO_vfprintf+0xf8b> 0.00 : 45216: e9 cc 2b 00 00 jmpq 47de7 <_IO_vfprintf+0x3b27> 0.00 : 4521b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 45220: 88 10 mov %dl,(%rax) 0.00 : 45222: 48 83 c0 01 add $0x1,%rax 0.00 : 45226: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4522b: 81 fb ff ff ff 7f cmp $0x7fffffff,%ebx 0.00 : 45231: 0f 84 9a 16 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 45237: 49 83 c7 01 add $0x1,%r15 0.00 : 4523b: 83 c3 01 add $0x1,%ebx 0.00 : 4523e: 4c 39 bd 28 f8 ff ff cmp %r15,-0x7d8(%rbp) 0.00 : 45245: 0f 86 9c 2b 00 00 jbe 47de7 <_IO_vfprintf+0x3b27> 0.00 : 4524b: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 45250: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 45255: 41 0f b6 17 movzbl (%r15),%edx 0.00 : 45259: 72 c5 jb 45220 <_IO_vfprintf+0xf60> 0.00 : 4525b: 0f b6 f2 movzbl %dl,%esi 0.00 : 4525e: 4c 89 e7 mov %r12,%rdi 0.00 : 45261: e8 3a eb 02 00 callq 73da0 <__overflow> 0.00 : 45266: 83 c0 01 add $0x1,%eax 0.00 : 45269: 75 c0 jne 4522b <_IO_vfprintf+0xf6b> 0.00 : 4526b: e9 61 16 00 00 jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 45270: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45277: 01 0.00 : 45278: 48 8d 15 5b 0a 00 00 lea 0xa5b(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4527f: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.00 : 45286: 0f b6 1b movzbl (%rbx),%ebx 0.00 : 45289: 89 d8 mov %ebx,%eax 0.00 : 4528b: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 45291: 83 e8 20 sub $0x20,%eax 0.00 : 45294: 3c 5a cmp $0x5a,%al 0.00 : 45296: 77 2c ja 452c4 <_IO_vfprintf+0x1004> 0.00 : 45298: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 4529f: 48 8d 15 da fb 0e 00 lea 0xefbda(%rip),%rdx # 134e80 0.00 : 452a6: 83 e8 20 sub $0x20,%eax 0.00 : 452a9: 48 98 cltq 0.00 : 452ab: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 452af: 48 8d 05 4a fb 0e 00 lea 0xefb4a(%rip),%rax # 134e00 0.00 : 452b6: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 452ba: 48 8d 15 19 0a 00 00 lea 0xa19(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 452c1: 48 01 c2 add %rax,%rdx 0.00 : 452c4: c7 85 a8 f9 ff ff 01 movl $0x1,-0x658(%rbp) 0.00 : 452cb: 00 00 00 0.00 : 452ce: ff e2 jmpq *%rdx 0.00 : 452d0: 48 83 bd 40 f9 ff ff cmpq $0xffffffffffffffff,-0x6c0(%rbp) 0.00 : 452d7: ff 0.00 : 452d8: 0f 84 6f 3c 00 00 je 48f4d <_IO_vfprintf+0x4c8d> 0.00 : 452de: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 452e5: 01 0.00 : 452e6: 48 8d 15 ed 09 00 00 lea 0x9ed(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 452ed: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.00 : 452f4: 0f b6 1b movzbl (%rbx),%ebx 0.00 : 452f7: 89 d8 mov %ebx,%eax 0.00 : 452f9: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 452ff: 83 e8 20 sub $0x20,%eax 0.00 : 45302: 3c 5a cmp $0x5a,%al 0.00 : 45304: 77 2c ja 45332 <_IO_vfprintf+0x1072> 0.00 : 45306: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 4530d: 48 8d 15 6c fb 0e 00 lea 0xefb6c(%rip),%rdx # 134e80 0.00 : 45314: 83 e8 20 sub $0x20,%eax 0.00 : 45317: 48 98 cltq 0.00 : 45319: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 4531d: 48 8d 05 dc fa 0e 00 lea 0xefadc(%rip),%rax # 134e00 0.00 : 45324: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45328: 48 8d 15 ab 09 00 00 lea 0x9ab(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4532f: 48 01 c2 add %rax,%rdx 0.00 : 45332: c7 85 b4 f9 ff ff 01 movl $0x1,-0x64c(%rbp) 0.00 : 45339: 00 00 00 0.00 : 4533c: ff e2 jmpq *%rdx 0.00 : 4533e: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45345: 01 0.00 : 45346: 48 8d 15 8d 09 00 00 lea 0x98d(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4534d: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 45354: 0f b6 3f movzbl (%rdi),%edi 0.00 : 45357: 89 f8 mov %edi,%eax 0.00 : 45359: 40 88 bd eb f9 ff ff mov %dil,-0x615(%rbp) 0.00 : 45360: 83 e8 20 sub $0x20,%eax 0.00 : 45363: 3c 5a cmp $0x5a,%al 0.00 : 45365: 77 2c ja 45393 <_IO_vfprintf+0x10d3> 0.00 : 45367: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 4536e: 48 8d 15 0b fb 0e 00 lea 0xefb0b(%rip),%rdx # 134e80 0.00 : 45375: 83 e8 20 sub $0x20,%eax 0.00 : 45378: 48 98 cltq 0.00 : 4537a: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 4537e: 48 8d 05 7b fa 0e 00 lea 0xefa7b(%rip),%rax # 134e00 0.00 : 45385: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45389: 48 8d 15 4a 09 00 00 lea 0x94a(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45390: 48 01 c2 add %rax,%rdx 0.00 : 45393: c7 85 cc f9 ff ff 01 movl $0x1,-0x634(%rbp) 0.00 : 4539a: 00 00 00 0.00 : 4539d: ff e2 jmpq *%rdx 0.00 : 4539f: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 453a6: 01 0.00 : 453a7: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 453ae: 0f b6 02 movzbl (%rdx),%eax 0.00 : 453b1: 8d 50 d0 lea -0x30(%rax),%edx 0.00 : 453b4: 83 fa 09 cmp $0x9,%edx 0.00 : 453b7: 77 4a ja 45403 <_IO_vfprintf+0x1143> 0.00 : 453b9: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.00 : 453c0: 48 8b b5 48 f9 ff ff mov -0x6b8(%rbp),%rsi 0.00 : 453c7: 0f b6 4b 01 movzbl 0x1(%rbx),%ecx 0.00 : 453cb: 48 83 c6 01 add $0x1,%rsi 0.00 : 453cf: 0f b6 c1 movzbl %cl,%eax 0.00 : 453d2: 83 e8 30 sub $0x30,%eax 0.00 : 453d5: 83 f8 09 cmp $0x9,%eax 0.00 : 453d8: 77 1c ja 453f6 <_IO_vfprintf+0x1136> 0.00 : 453da: 48 83 c6 01 add $0x1,%rsi 0.00 : 453de: 0f b6 c1 movzbl %cl,%eax 0.00 : 453e1: 8d 14 92 lea (%rdx,%rdx,4),%edx 0.00 : 453e4: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 453e7: 8d 54 50 d0 lea -0x30(%rax,%rdx,2),%edx 0.00 : 453eb: 0f b6 c1 movzbl %cl,%eax 0.00 : 453ee: 83 e8 30 sub $0x30,%eax 0.00 : 453f1: 83 f8 09 cmp $0x9,%eax 0.00 : 453f4: 76 e4 jbe 453da <_IO_vfprintf+0x111a> 0.00 : 453f6: 85 d2 test %edx,%edx 0.00 : 453f8: 74 09 je 45403 <_IO_vfprintf+0x1143> 0.00 : 453fa: 80 f9 24 cmp $0x24,%cl 0.00 : 453fd: 0f 84 e4 08 00 00 je 45ce7 <_IO_vfprintf+0x1a27> 0.00 : 45403: 41 8b 06 mov (%r14),%eax 0.00 : 45406: 83 f8 30 cmp $0x30,%eax 0.00 : 45409: 0f 83 d5 23 00 00 jae 477e4 <_IO_vfprintf+0x3524> 0.00 : 4540f: 89 c2 mov %eax,%edx 0.00 : 45411: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 45415: 83 c0 08 add $0x8,%eax 0.00 : 45418: 41 89 06 mov %eax,(%r14) 0.00 : 4541b: 8b 12 mov (%rdx),%edx 0.00 : 4541d: 85 d2 test %edx,%edx 0.00 : 4541f: 89 95 b8 fa ff ff mov %edx,-0x548(%rbp) 0.00 : 45425: 79 19 jns 45440 <_IO_vfprintf+0x1180> 0.00 : 45427: f7 da neg %edx 0.00 : 45429: c7 85 ac f9 ff ff 01 movl $0x1,-0x654(%rbp) 0.00 : 45430: 00 00 00 0.00 : 45433: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 4543a: 89 95 b8 fa ff ff mov %edx,-0x548(%rbp) 0.00 : 45440: 83 bd b8 fa ff ff de cmpl $0xffffffde,-0x548(%rbp) 0.00 : 45447: 0f 87 6e 41 00 00 ja 495bb <_IO_vfprintf+0x52fb> 0.00 : 4544d: 81 bd b8 fa ff ff c7 cmpl $0x3c7,-0x548(%rbp) 0.00 : 45454: 03 00 00 0.00 : 45457: 76 36 jbe 4548f <_IO_vfprintf+0x11cf> 0.00 : 45459: 48 63 85 b8 fa ff ff movslq -0x548(%rbp),%rax 0.00 : 45460: 48 8d 58 20 lea 0x20(%rax),%rbx 0.00 : 45464: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 4546b: 0f 87 6a 41 00 00 ja 495db <_IO_vfprintf+0x531b> 0.00 : 45471: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 45475: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45479: 48 29 c4 sub %rax,%rsp 0.00 : 4547c: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 45481: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45485: 48 01 d8 add %rbx,%rax 0.00 : 45488: 48 89 85 60 f9 ff ff mov %rax,-0x6a0(%rbp) 0.00 : 4548f: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 45496: 0f b6 12 movzbl (%rdx),%edx 0.00 : 45499: 89 d0 mov %edx,%eax 0.00 : 4549b: 88 95 eb f9 ff ff mov %dl,-0x615(%rbp) 0.00 : 454a1: 83 e8 20 sub $0x20,%eax 0.00 : 454a4: 3c 5a cmp $0x5a,%al 0.00 : 454a6: 0f 87 2e 08 00 00 ja 45cda <_IO_vfprintf+0x1a1a> 0.00 : 454ac: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 454b3: 48 8d 15 c6 f9 0e 00 lea 0xef9c6(%rip),%rdx # 134e80 0.00 : 454ba: 83 e8 20 sub $0x20,%eax 0.00 : 454bd: 48 98 cltq 0.00 : 454bf: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 454c3: 48 8d 05 b6 f8 0e 00 lea 0xef8b6(%rip),%rax # 134d80 0.00 : 454ca: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 454ce: 48 8d 15 05 08 00 00 lea 0x805(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 454d5: 48 01 c2 add %rax,%rdx 0.00 : 454d8: ff e2 jmpq *%rdx 0.00 : 454da: 48 8b 8d 48 f9 ff ff mov -0x6b8(%rbp),%rcx 0.00 : 454e1: 0f b6 01 movzbl (%rcx),%eax 0.00 : 454e4: 48 83 c1 01 add $0x1,%rcx 0.00 : 454e8: 48 89 8d 48 f9 ff ff mov %rcx,-0x6b8(%rbp) 0.00 : 454ef: 0f b6 19 movzbl (%rcx),%ebx 0.00 : 454f2: 8d 50 d0 lea -0x30(%rax),%edx 0.00 : 454f5: 0f b6 c3 movzbl %bl,%eax 0.00 : 454f8: 83 e8 30 sub $0x30,%eax 0.00 : 454fb: 83 f8 09 cmp $0x9,%eax 0.00 : 454fe: 77 27 ja 45527 <_IO_vfprintf+0x1267> 0.00 : 45500: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45507: 01 0.00 : 45508: 0f b6 c3 movzbl %bl,%eax 0.00 : 4550b: 8d 14 92 lea (%rdx,%rdx,4),%edx 0.00 : 4550e: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 45515: 8d 54 50 d0 lea -0x30(%rax,%rdx,2),%edx 0.00 : 45519: 0f b6 1f movzbl (%rdi),%ebx 0.00 : 4551c: 0f b6 c3 movzbl %bl,%eax 0.00 : 4551f: 83 e8 30 sub $0x30,%eax 0.00 : 45522: 83 f8 09 cmp $0x9,%eax 0.00 : 45525: 76 d9 jbe 45500 <_IO_vfprintf+0x1240> 50.00 : 45527: 83 fa de cmp $0xffffffde,%edx 0.00 : 4552a: 0f 87 3c 34 00 00 ja 4896c <_IO_vfprintf+0x46ac> 0.00 : 45530: 81 fa c7 03 00 00 cmp $0x3c7,%edx 0.00 : 45536: 89 95 b8 fa ff ff mov %edx,-0x548(%rbp) 0.00 : 4553c: 76 32 jbe 45570 <_IO_vfprintf+0x12b0> 0.00 : 4553e: 48 63 c2 movslq %edx,%rax 0.00 : 45541: 4c 8d 78 20 lea 0x20(%rax),%r15 0.00 : 45545: 49 81 ff 00 10 00 00 cmp $0x1000,%r15 0.00 : 4554c: 0f 87 4b 3a 00 00 ja 48f9d <_IO_vfprintf+0x4cdd> 0.00 : 45552: 49 8d 47 1e lea 0x1e(%r15),%rax 0.00 : 45556: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4555a: 48 29 c4 sub %rax,%rsp 0.00 : 4555d: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 45562: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45566: 4c 01 f8 add %r15,%rax 0.00 : 45569: 48 89 85 60 f9 ff ff mov %rax,-0x6a0(%rbp) 0.00 : 45570: 80 fb 24 cmp $0x24,%bl 0.00 : 45573: 0f 84 6e 07 00 00 je 45ce7 <_IO_vfprintf+0x1a27> 0.00 : 45579: 89 d8 mov %ebx,%eax 0.00 : 4557b: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 45581: 83 e8 20 sub $0x20,%eax 0.00 : 45584: 3c 5a cmp $0x5a,%al 0.00 : 45586: 0f 87 4e 07 00 00 ja 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4558c: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45593: 48 8d 15 e6 f8 0e 00 lea 0xef8e6(%rip),%rdx # 134e80 0.00 : 4559a: 83 e8 20 sub $0x20,%eax 0.00 : 4559d: 48 98 cltq 0.00 : 4559f: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 455a3: 48 8d 05 d6 f7 0e 00 lea 0xef7d6(%rip),%rax # 134d80 0.00 : 455aa: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 455ae: 48 8d 15 25 07 00 00 lea 0x725(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 455b5: 48 01 c2 add %rax,%rdx 0.00 : 455b8: ff e2 jmpq *%rdx 0.00 : 455ba: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 455c1: 01 0.00 : 455c2: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 455c9: 0f b6 1f movzbl (%rdi),%ebx 0.00 : 455cc: 80 fb 2a cmp $0x2a,%bl 0.00 : 455cf: 0f 84 a0 22 00 00 je 47875 <_IO_vfprintf+0x35b5> 0.00 : 455d5: 0f b6 c3 movzbl %bl,%eax 0.00 : 455d8: c7 85 ec fa ff ff 00 movl $0x0,-0x514(%rbp) 0.00 : 455df: 00 00 00 0.00 : 455e2: 8d 50 d0 lea -0x30(%rax),%edx 0.00 : 455e5: 83 fa 09 cmp $0x9,%edx 0.00 : 455e8: 0f 87 b2 00 00 00 ja 456a0 <_IO_vfprintf+0x13e0> 0.00 : 455ee: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 455f5: 01 0.00 : 455f6: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 455fd: 0f b6 1f movzbl (%rdi),%ebx 0.00 : 45600: 0f b6 c3 movzbl %bl,%eax 0.00 : 45603: 83 e8 30 sub $0x30,%eax 0.00 : 45606: 83 f8 09 cmp $0x9,%eax 0.00 : 45609: 77 27 ja 45632 <_IO_vfprintf+0x1372> 0.00 : 4560b: 8d 14 92 lea (%rdx,%rdx,4),%edx 0.00 : 4560e: 0f b6 c3 movzbl %bl,%eax 0.00 : 45611: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45618: 01 0.00 : 45619: 8d 54 50 d0 lea -0x30(%rax,%rdx,2),%edx 0.00 : 4561d: 48 8b 85 48 f9 ff ff mov -0x6b8(%rbp),%rax 0.00 : 45624: 0f b6 18 movzbl (%rax),%ebx 0.00 : 45627: 0f b6 c3 movzbl %bl,%eax 0.00 : 4562a: 83 e8 30 sub $0x30,%eax 0.00 : 4562d: 83 f8 09 cmp $0x9,%eax 0.00 : 45630: 76 d9 jbe 4560b <_IO_vfprintf+0x134b> 0.00 : 45632: 81 fa c8 03 00 00 cmp $0x3c8,%edx 0.00 : 45638: 89 95 ec fa ff ff mov %edx,-0x514(%rbp) 0.00 : 4563e: 0f 97 c0 seta %al 0.00 : 45641: 8b 8d b8 fa ff ff mov -0x548(%rbp),%ecx 0.00 : 45647: 39 8d ec fa ff ff cmp %ecx,-0x514(%rbp) 0.00 : 4564d: 7e 47 jle 45696 <_IO_vfprintf+0x13d6> 0.00 : 4564f: 84 c0 test %al,%al 0.00 : 45651: 0f 84 f8 22 00 00 je 4794f <_IO_vfprintf+0x368f> 0.00 : 45657: 83 fa de cmp $0xffffffde,%edx 0.00 : 4565a: 0f 87 e0 36 00 00 ja 48d40 <_IO_vfprintf+0x4a80> 0.00 : 45660: 48 63 95 ec fa ff ff movslq -0x514(%rbp),%rdx 0.00 : 45667: 48 8d 5a 20 lea 0x20(%rdx),%rbx 0.00 : 4566b: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 45672: 0f 87 a1 22 00 00 ja 47919 <_IO_vfprintf+0x3659> 0.00 : 45678: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 4567c: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45680: 48 29 c4 sub %rax,%rsp 0.00 : 45683: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 45688: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4568c: 48 01 d8 add %rbx,%rax 0.00 : 4568f: 48 89 85 60 f9 ff ff mov %rax,-0x6a0(%rbp) 0.00 : 45696: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 4569d: 0f b6 1f movzbl (%rdi),%ebx 0.00 : 456a0: 89 d8 mov %ebx,%eax 0.00 : 456a2: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 456a8: 83 e8 20 sub $0x20,%eax 0.00 : 456ab: 3c 5a cmp $0x5a,%al 0.00 : 456ad: 0f 87 27 06 00 00 ja 45cda <_IO_vfprintf+0x1a1a> 0.00 : 456b3: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 456ba: 48 8d 15 bf f7 0e 00 lea 0xef7bf(%rip),%rdx # 134e80 0.00 : 456c1: 83 e8 20 sub $0x20,%eax 0.00 : 456c4: 48 98 cltq 0.00 : 456c6: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 456ca: 48 8d 05 2f f6 0e 00 lea 0xef62f(%rip),%rax # 134d00 0.00 : 456d1: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 456d5: 48 8d 15 fe 05 00 00 lea 0x5fe(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 456dc: 48 01 c2 add %rax,%rdx 0.00 : 456df: ff e2 jmpq *%rdx 0.00 : 456e1: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 456e8: 01 0.00 : 456e9: 48 8d 15 ea 05 00 00 lea 0x5ea(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 456f0: 48 8b 8d 48 f9 ff ff mov -0x6b8(%rbp),%rcx 0.00 : 456f7: 0f b6 09 movzbl (%rcx),%ecx 0.00 : 456fa: 89 c8 mov %ecx,%eax 0.00 : 456fc: 88 8d eb f9 ff ff mov %cl,-0x615(%rbp) 0.00 : 45702: 83 e8 20 sub $0x20,%eax 0.00 : 45705: 3c 5a cmp $0x5a,%al 0.00 : 45707: 77 2c ja 45735 <_IO_vfprintf+0x1475> 0.00 : 45709: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45710: 48 8d 15 69 f7 0e 00 lea 0xef769(%rip),%rdx # 134e80 0.00 : 45717: 83 e8 20 sub $0x20,%eax 0.00 : 4571a: 48 98 cltq 0.00 : 4571c: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 45720: 48 8d 05 59 f4 0e 00 lea 0xef459(%rip),%rax # 134b80 0.00 : 45727: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 4572b: 48 8d 15 a8 05 00 00 lea 0x5a8(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45732: 48 01 c2 add %rax,%rdx 0.00 : 45735: c7 85 bc f9 ff ff 00 movl $0x0,-0x644(%rbp) 0.00 : 4573c: 00 00 00 0.00 : 4573f: c7 85 c4 f9 ff ff 01 movl $0x1,-0x63c(%rbp) 0.00 : 45746: 00 00 00 0.00 : 45749: ff e2 jmpq *%rdx 0.00 : 4574b: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45752: 01 0.00 : 45753: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 4575a: 0f b6 12 movzbl (%rdx),%edx 0.00 : 4575d: 89 d0 mov %edx,%eax 0.00 : 4575f: 88 95 eb f9 ff ff mov %dl,-0x615(%rbp) 0.00 : 45765: 48 8d 15 6e 05 00 00 lea 0x56e(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4576c: 83 e8 20 sub $0x20,%eax 0.00 : 4576f: 3c 5a cmp $0x5a,%al 0.00 : 45771: 77 2c ja 4579f <_IO_vfprintf+0x14df> 0.00 : 45773: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 4577a: 48 8d 15 ff f6 0e 00 lea 0xef6ff(%rip),%rdx # 134e80 0.00 : 45781: 83 e8 20 sub $0x20,%eax 0.00 : 45784: 48 98 cltq 0.00 : 45786: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 4578a: 48 8d 05 ef f4 0e 00 lea 0xef4ef(%rip),%rax # 134c80 0.00 : 45791: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45795: 48 8d 15 3e 05 00 00 lea 0x53e(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 4579c: 48 01 c2 add %rax,%rdx 0.00 : 4579f: c7 85 bc f9 ff ff 01 movl $0x1,-0x644(%rbp) 0.00 : 457a6: 00 00 00 0.00 : 457a9: ff e2 jmpq *%rdx 0.00 : 457ab: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 457b2: 01 0.00 : 457b3: 48 8d 15 20 05 00 00 lea 0x520(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 457ba: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.00 : 457c1: 0f b6 1b movzbl (%rbx),%ebx 0.00 : 457c4: 89 d8 mov %ebx,%eax 0.00 : 457c6: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 457cc: 83 e8 20 sub $0x20,%eax 0.00 : 457cf: 3c 5a cmp $0x5a,%al 0.00 : 457d1: 77 2c ja 457ff <_IO_vfprintf+0x153f> 0.00 : 457d3: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 457da: 48 8d 15 9f f6 0e 00 lea 0xef69f(%rip),%rdx # 134e80 0.00 : 457e1: 83 e8 20 sub $0x20,%eax 0.00 : 457e4: 48 98 cltq 0.00 : 457e6: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 457ea: 48 8d 05 0f f4 0e 00 lea 0xef40f(%rip),%rax # 134c00 0.00 : 457f1: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 457f5: 48 8d 15 de 04 00 00 lea 0x4de(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 457fc: 48 01 c2 add %rax,%rdx 0.00 : 457ff: c7 85 c0 f9 ff ff 01 movl $0x1,-0x640(%rbp) 0.00 : 45806: 00 00 00 0.00 : 45809: ff e2 jmpq *%rdx 0.00 : 4580b: 8b 8d c0 f9 ff ff mov -0x640(%rbp),%ecx 0.00 : 45811: 85 c9 test %ecx,%ecx 0.00 : 45813: 0f 85 17 ef ff ff jne 44730 <_IO_vfprintf+0x470> 0.00 : 45819: 8b 9d b8 fa ff ff mov -0x548(%rbp),%ebx 0.00 : 4581f: 8b 95 ac f9 ff ff mov -0x654(%rbp),%edx 0.00 : 45825: 83 eb 01 sub $0x1,%ebx 0.00 : 45828: 85 d2 test %edx,%edx 0.00 : 4582a: 75 37 jne 45863 <_IO_vfprintf+0x15a3> 0.00 : 4582c: 85 db test %ebx,%ebx 0.00 : 4582e: 7e 33 jle 45863 <_IO_vfprintf+0x15a3> 0.00 : 45830: 48 63 d3 movslq %ebx,%rdx 0.00 : 45833: be 20 00 00 00 mov $0x20,%esi 0.00 : 45838: 4c 89 e7 mov %r12,%rdi 0.00 : 4583b: e8 00 2a 02 00 callq 68240 <_IO_padn> 0.00 : 45840: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 45847: 0f 87 08 3a 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 4584d: 89 c2 mov %eax,%edx 0.00 : 4584f: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 45854: 44 29 e8 sub %r13d,%eax 0.00 : 45857: 39 c2 cmp %eax,%edx 0.00 : 45859: 0f 87 72 10 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 4585f: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 45863: 41 8b 06 mov (%r14),%eax 0.00 : 45866: 83 f8 30 cmp $0x30,%eax 0.00 : 45869: 0f 83 c6 24 00 00 jae 47d35 <_IO_vfprintf+0x3a75> 0.00 : 4586f: 89 c2 mov %eax,%edx 0.00 : 45871: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 45875: 83 c0 08 add $0x8,%eax 0.00 : 45878: 41 89 06 mov %eax,(%r14) 0.00 : 4587b: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 45880: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 45885: 0f b6 32 movzbl (%rdx),%esi 0.00 : 45888: 0f 83 10 3d 00 00 jae 4959e <_IO_vfprintf+0x52de> 0.00 : 4588e: 40 88 30 mov %sil,(%rax) 0.00 : 45891: 48 83 c0 01 add $0x1,%rax 0.00 : 45895: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4589a: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 458a1: 0f 84 2a 10 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 458a7: 8b 85 ac f9 ff ff mov -0x654(%rbp),%eax 0.00 : 458ad: 41 83 c5 01 add $0x1,%r13d 0.00 : 458b1: 85 c0 test %eax,%eax 0.00 : 458b3: 0f 84 d7 ef ff ff je 44890 <_IO_vfprintf+0x5d0> 0.00 : 458b9: 85 db test %ebx,%ebx 0.00 : 458bb: 0f 8e cf ef ff ff jle 44890 <_IO_vfprintf+0x5d0> 0.00 : 458c1: 48 63 d3 movslq %ebx,%rdx 0.00 : 458c4: be 20 00 00 00 mov $0x20,%esi 0.00 : 458c9: 4c 89 e7 mov %r12,%rdi 0.00 : 458cc: e8 6f 29 02 00 callq 68240 <_IO_padn> 0.00 : 458d1: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 458d8: 0f 87 77 39 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 458de: 89 c2 mov %eax,%edx 0.00 : 458e0: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 458e5: 44 29 e8 sub %r13d,%eax 0.00 : 458e8: 39 c2 cmp %eax,%edx 0.00 : 458ea: 0f 87 e1 0f 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 458f0: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 458f4: e9 97 ef ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 458f9: 41 f6 44 24 74 04 testb $0x4,0x74(%r12) 0.00 : 458ff: 74 10 je 45911 <_IO_vfprintf+0x1651> 0.00 : 45901: 44 8b 8d 74 f9 ff ff mov -0x68c(%rbp),%r9d 0.00 : 45908: 45 85 c9 test %r9d,%r9d 0.00 : 4590b: 0f 84 38 2f 00 00 je 48849 <_IO_vfprintf+0x4589> 0.00 : 45911: 44 8b 85 c0 f9 ff ff mov -0x640(%rbp),%r8d 0.00 : 45918: 45 85 c0 test %r8d,%r8d 0.00 : 4591b: 0f 84 81 28 00 00 je 481a2 <_IO_vfprintf+0x3ee2> 0.00 : 45921: 41 8b 06 mov (%r14),%eax 0.00 : 45924: 83 f8 30 cmp $0x30,%eax 0.00 : 45927: 0f 83 64 28 00 00 jae 48191 <_IO_vfprintf+0x3ed1> 0.00 : 4592d: 89 c2 mov %eax,%edx 0.00 : 4592f: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 45933: 83 c0 08 add $0x8,%eax 0.00 : 45936: 41 89 06 mov %eax,(%r14) 0.00 : 45939: 48 8b 12 mov (%rdx),%rdx 0.00 : 4593c: 49 63 c5 movslq %r13d,%rax 0.00 : 4593f: 48 89 02 mov %rax,(%rdx) 0.00 : 45942: e9 49 ef ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 45947: 48 8b b5 88 f8 ff ff mov -0x778(%rbp),%rsi 0.00 : 4594e: 8b bd 70 f9 ff ff mov -0x690(%rbp),%edi 0.00 : 45954: ba e8 03 00 00 mov $0x3e8,%edx 0.00 : 45959: e8 f2 b0 03 00 callq 80a50 <__strerror_r> 0.00 : 4595e: c7 85 c0 f9 ff ff 00 movl $0x0,-0x640(%rbp) 0.00 : 45965: 00 00 00 0.00 : 45968: 49 89 c7 mov %rax,%r15 0.00 : 4596b: 4d 85 ff test %r15,%r15 0.00 : 4596e: 0f 84 34 26 00 00 je 47fa8 <_IO_vfprintf+0x3ce8> 0.00 : 45974: 8b 85 c0 f9 ff ff mov -0x640(%rbp),%eax 0.00 : 4597a: 85 c0 test %eax,%eax 0.00 : 4597c: 0f 84 74 1c 00 00 je 475f6 <_IO_vfprintf+0x3336> 0.00 : 45982: 8b 85 ec fa ff ff mov -0x514(%rbp),%eax 0.00 : 45988: 48 8d 55 a0 lea -0x60(%rbp),%rdx 0.00 : 4598c: 4c 89 7d 98 mov %r15,-0x68(%rbp) 0.00 : 45990: 48 c7 45 a0 00 00 00 movq $0x0,-0x60(%rbp) 0.00 : 45997: 00 0.00 : 45998: 48 89 95 68 f8 ff ff mov %rdx,-0x798(%rbp) 0.00 : 4599f: 85 c0 test %eax,%eax 0.00 : 459a1: 0f 88 82 29 00 00 js 48329 <_IO_vfprintf+0x4069> 0.00 : 459a7: 48 63 9d ec fa ff ff movslq -0x514(%rbp),%rbx 0.00 : 459ae: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 459b5: 0f 87 0a 2f 00 00 ja 488c5 <_IO_vfprintf+0x4605> 0.00 : 459bb: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 459bf: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 459c6: 00 00 00 0.00 : 459c9: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 459cd: 48 29 c4 sub %rax,%rsp 0.00 : 459d0: 4c 8d 7c 24 0f lea 0xf(%rsp),%r15 0.00 : 459d5: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 459d9: 48 8d 4d 98 lea -0x68(%rbp),%rcx 0.00 : 459dd: 48 89 da mov %rbx,%rdx 0.00 : 459e0: 4c 89 ff mov %r15,%rdi 0.00 : 459e3: 48 89 8d 70 f8 ff ff mov %rcx,-0x790(%rbp) 0.00 : 459ea: 48 8b 8d 68 f8 ff ff mov -0x798(%rbp),%rcx 0.00 : 459f1: 48 8b b5 70 f8 ff ff mov -0x790(%rbp),%rsi 0.00 : 459f8: e8 73 78 04 00 callq 8d270 0.00 : 459fd: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 45a01: 48 89 c3 mov %rax,%rbx 0.00 : 45a04: 0f 84 c7 0e 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 45a0a: 89 9d 8c fa ff ff mov %ebx,-0x574(%rbp) 0.00 : 45a10: 8b 85 b8 fa ff ff mov -0x548(%rbp),%eax 0.00 : 45a16: 2b 85 8c fa ff ff sub -0x574(%rbp),%eax 0.00 : 45a1c: 89 85 f0 f8 ff ff mov %eax,-0x710(%rbp) 0.00 : 45a22: 0f 88 c7 22 00 00 js 47cef <_IO_vfprintf+0x3a2f> 0.00 : 45a28: 44 8b 9d ac f9 ff ff mov -0x654(%rbp),%r11d 0.00 : 45a2f: 45 85 db test %r11d,%r11d 0.00 : 45a32: 75 43 jne 45a77 <_IO_vfprintf+0x17b7> 0.00 : 45a34: 44 8b 95 f0 f8 ff ff mov -0x710(%rbp),%r10d 0.00 : 45a3b: 45 85 d2 test %r10d,%r10d 0.00 : 45a3e: 74 37 je 45a77 <_IO_vfprintf+0x17b7> 0.00 : 45a40: 48 63 95 f0 f8 ff ff movslq -0x710(%rbp),%rdx 0.00 : 45a47: be 20 00 00 00 mov $0x20,%esi 0.00 : 45a4c: 4c 89 e7 mov %r12,%rdi 0.00 : 45a4f: e8 ec 27 02 00 callq 68240 <_IO_padn> 0.00 : 45a54: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 45a5b: 0f 87 f4 37 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 45a61: 89 c2 mov %eax,%edx 0.00 : 45a63: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 45a68: 44 29 e8 sub %r13d,%eax 0.00 : 45a6b: 39 c2 cmp %eax,%edx 0.00 : 45a6d: 0f 87 5e 0e 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 45a73: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 45a77: 45 85 ed test %r13d,%r13d 0.00 : 45a7a: 0f 88 9c 2a 00 00 js 4851c <_IO_vfprintf+0x425c> 0.00 : 45a80: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 45a87: 00 0.00 : 45a88: 48 89 da mov %rbx,%rdx 0.00 : 45a8b: 4c 89 fe mov %r15,%rsi 0.00 : 45a8e: 4c 89 e7 mov %r12,%rdi 0.00 : 45a91: ff 50 38 callq *0x38(%rax) 0.00 : 45a94: 48 39 d8 cmp %rbx,%rax 0.00 : 45a97: 0f 85 34 0e 00 00 jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 45a9d: 49 63 d5 movslq %r13d,%rdx 0.00 : 45aa0: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 45aa5: 48 29 d0 sub %rdx,%rax 0.00 : 45aa8: 48 39 c3 cmp %rax,%rbx 0.00 : 45aab: 0f 87 20 0e 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 45ab1: 44 8b 8d ac f9 ff ff mov -0x654(%rbp),%r9d 0.00 : 45ab8: 44 03 ad 8c fa ff ff add -0x574(%rbp),%r13d 0.00 : 45abf: 45 85 c9 test %r9d,%r9d 0.00 : 45ac2: 74 43 je 45b07 <_IO_vfprintf+0x1847> 0.00 : 45ac4: 44 8b 85 f0 f8 ff ff mov -0x710(%rbp),%r8d 0.00 : 45acb: 45 85 c0 test %r8d,%r8d 0.00 : 45ace: 74 37 je 45b07 <_IO_vfprintf+0x1847> 0.00 : 45ad0: 48 63 95 f0 f8 ff ff movslq -0x710(%rbp),%rdx 0.00 : 45ad7: be 20 00 00 00 mov $0x20,%esi 0.00 : 45adc: 4c 89 e7 mov %r12,%rdi 0.00 : 45adf: e8 5c 27 02 00 callq 68240 <_IO_padn> 0.00 : 45ae4: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 45aeb: 0f 87 64 37 00 00 ja 49255 <_IO_vfprintf+0x4f95> 0.00 : 45af1: 89 c2 mov %eax,%edx 0.00 : 45af3: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 45af8: 44 29 e8 sub %r13d,%eax 0.00 : 45afb: 39 c2 cmp %eax,%edx 0.00 : 45afd: 0f 87 ce 0d 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 45b03: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 45b07: 8b bd ec f9 ff ff mov -0x614(%rbp),%edi 0.00 : 45b0d: 85 ff test %edi,%edi 0.00 : 45b0f: 0f 84 7b ed ff ff je 44890 <_IO_vfprintf+0x5d0> 0.00 : 45b15: 4c 89 ff mov %r15,%rdi 0.00 : 45b18: e8 83 8d fd ff callq 1e8a0 0.00 : 45b1d: e9 6e ed ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 45b22: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 45b28: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45b2f: 01 0.00 : 45b30: 48 8d 15 a3 01 00 00 lea 0x1a3(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45b37: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 45b3e: 0f b6 3f movzbl (%rdi),%edi 0.00 : 45b41: 89 f8 mov %edi,%eax 0.00 : 45b43: 40 88 bd eb f9 ff ff mov %dil,-0x615(%rbp) 0.00 : 45b4a: 83 e8 20 sub $0x20,%eax 0.00 : 45b4d: 3c 5a cmp $0x5a,%al 0.00 : 45b4f: 77 2c ja 45b7d <_IO_vfprintf+0x18bd> 0.00 : 45b51: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45b58: 48 8d 15 21 f3 0e 00 lea 0xef321(%rip),%rdx # 134e80 0.00 : 45b5f: 83 e8 20 sub $0x20,%eax 0.00 : 45b62: 48 98 cltq 0.00 : 45b64: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 45b68: 48 8d 05 91 f2 0e 00 lea 0xef291(%rip),%rax # 134e00 0.00 : 45b6f: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45b73: 48 8d 15 60 01 00 00 lea 0x160(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45b7a: 48 01 c2 add %rax,%rdx 0.00 : 45b7d: c7 85 b0 f9 ff ff 01 movl $0x1,-0x650(%rbp) 0.00 : 45b84: 00 00 00 0.00 : 45b87: ff e2 jmpq *%rdx 0.00 : 45b89: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45b90: 01 0.00 : 45b91: 48 8d 15 42 01 00 00 lea 0x142(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45b98: 48 8b 85 48 f9 ff ff mov -0x6b8(%rbp),%rax 0.00 : 45b9f: 0f b6 00 movzbl (%rax),%eax 0.00 : 45ba2: 88 85 eb f9 ff ff mov %al,-0x615(%rbp) 0.00 : 45ba8: 83 e8 20 sub $0x20,%eax 0.00 : 45bab: 3c 5a cmp $0x5a,%al 0.00 : 45bad: 77 2c ja 45bdb <_IO_vfprintf+0x191b> 0.00 : 45baf: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45bb6: 48 8d 15 c3 f2 0e 00 lea 0xef2c3(%rip),%rdx # 134e80 0.00 : 45bbd: 83 e8 20 sub $0x20,%eax 0.00 : 45bc0: 48 98 cltq 0.00 : 45bc2: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 45bc6: 48 8d 05 33 f2 0e 00 lea 0xef233(%rip),%rax # 134e00 0.00 : 45bcd: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45bd1: 48 8d 15 02 01 00 00 lea 0x102(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45bd8: 48 01 c2 add %rax,%rdx 0.00 : 45bdb: c7 85 ac f9 ff ff 01 movl $0x1,-0x654(%rbp) 0.00 : 45be2: 00 00 00 0.00 : 45be5: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 45bec: ff e2 jmpq *%rdx 0.00 : 45bee: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45bf5: 01 0.00 : 45bf6: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 45bfd: 0f b6 12 movzbl (%rdx),%edx 0.00 : 45c00: 89 d0 mov %edx,%eax 0.00 : 45c02: 88 95 eb f9 ff ff mov %dl,-0x615(%rbp) 0.00 : 45c08: 48 8d 15 cb 00 00 00 lea 0xcb(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45c0f: 83 e8 20 sub $0x20,%eax 0.00 : 45c12: 3c 5a cmp $0x5a,%al 0.00 : 45c14: 77 2c ja 45c42 <_IO_vfprintf+0x1982> 0.00 : 45c16: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45c1d: 48 8d 15 5c f2 0e 00 lea 0xef25c(%rip),%rdx # 134e80 0.00 : 45c24: 83 e8 20 sub $0x20,%eax 0.00 : 45c27: 48 98 cltq 0.00 : 45c29: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 45c2d: 48 8d 05 cc f1 0e 00 lea 0xef1cc(%rip),%rax # 134e00 0.00 : 45c34: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45c38: 48 8d 15 9b 00 00 00 lea 0x9b(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45c3f: 48 01 c2 add %rax,%rdx 0.00 : 45c42: c7 85 a4 f9 ff ff 01 movl $0x1,-0x65c(%rbp) 0.00 : 45c49: 00 00 00 0.00 : 45c4c: ff e2 jmpq *%rdx 0.00 : 45c4e: 8b 85 ac f9 ff ff mov -0x654(%rbp),%eax 0.00 : 45c54: 0f b6 8d d0 f9 ff ff movzbl -0x630(%rbp),%ecx 0.00 : 45c5b: 85 c0 test %eax,%eax 0.00 : 45c5d: b8 30 00 00 00 mov $0x30,%eax 0.00 : 45c62: 0f 44 c8 cmove %eax,%ecx 0.00 : 45c65: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 45c6c: 01 0.00 : 45c6d: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.00 : 45c74: 88 8d d0 f9 ff ff mov %cl,-0x630(%rbp) 0.00 : 45c7a: 0f b6 1b movzbl (%rbx),%ebx 0.00 : 45c7d: 89 d8 mov %ebx,%eax 0.00 : 45c7f: 88 9d eb f9 ff ff mov %bl,-0x615(%rbp) 0.00 : 45c85: 83 e8 20 sub $0x20,%eax 0.00 : 45c88: 3c 5a cmp $0x5a,%al 0.00 : 45c8a: 77 4e ja 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45c8c: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 45c93: 48 8d 15 e6 f1 0e 00 lea 0xef1e6(%rip),%rdx # 134e80 0.00 : 45c9a: 83 e8 20 sub $0x20,%eax 0.00 : 45c9d: 48 98 cltq 0.00 : 45c9f: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 45ca3: 48 8d 05 56 f1 0e 00 lea 0xef156(%rip),%rax # 134e00 0.00 : 45caa: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 45cae: 48 8d 15 25 00 00 00 lea 0x25(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 45cb5: 48 01 c2 add %rax,%rdx 0.00 : 45cb8: ff e2 jmpq *%rdx 0.00 : 45cba: 41 8b 06 mov (%r14),%eax 0.00 : 45cbd: 83 f8 30 cmp $0x30,%eax 0.00 : 45cc0: 0f 83 9e 1b 00 00 jae 47864 <_IO_vfprintf+0x35a4> 0.00 : 45cc6: 89 c2 mov %eax,%edx 0.00 : 45cc8: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 45ccc: 83 c0 08 add $0x8,%eax 0.00 : 45ccf: 41 89 06 mov %eax,(%r14) 0.00 : 45cd2: 4c 8b 3a mov (%rdx),%r15 0.00 : 45cd5: e9 91 fc ff ff jmpq 4596b <_IO_vfprintf+0x16ab> 0.00 : 45cda: 80 bd eb f9 ff ff 00 cmpb $0x0,-0x615(%rbp) 0.00 : 45ce1: 0f 84 ea 0b 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 45ce7: 48 81 ec 10 09 00 00 sub $0x910,%rsp 0.00 : 45cee: 48 8b bd 58 f9 ff ff mov -0x6a8(%rbp),%rdi 0.00 : 45cf5: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : 45cfc: 00 0.00 : 45cfd: 48 8d 5c 24 0f lea 0xf(%rsp),%rbx 0.00 : 45d02: 48 83 e3 f0 and $0xfffffffffffffff0,%rbx 0.00 : 45d06: 48 89 9d a0 fa ff ff mov %rbx,-0x560(%rbp) 0.00 : 45d0d: e8 8e 8b fd ff callq 1e8a0 0.00 : 45d12: 48 83 bd 40 f9 ff ff cmpq $0xffffffffffffffff,-0x6c0(%rbp) 0.00 : 45d19: ff 0.00 : 45d1a: 0f 84 f1 2c 00 00 je 48a11 <_IO_vfprintf+0x4751> 0.00 : 45d20: 48 8b 8d 50 f9 ff ff mov -0x6b0(%rbp),%rcx 0.00 : 45d27: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 45d2a: 0f 84 7c 2c 00 00 je 489ac <_IO_vfprintf+0x46ec> 0.00 : 45d30: 48 8b 9d 50 f9 ff ff mov -0x6b0(%rbp),%rbx 0.00 : 45d37: 48 c7 85 f8 f9 ff ff movq $0x0,-0x608(%rbp) 0.00 : 45d3e: 00 00 00 00 0.00 : 45d42: 48 c7 85 00 fa ff ff movq $0x0,-0x600(%rbp) 0.00 : 45d49: 00 00 00 00 0.00 : 45d4d: 48 c7 85 90 fa ff ff movq $0x0,-0x570(%rbp) 0.00 : 45d54: 00 00 00 00 0.00 : 45d58: 48 89 9d 48 f9 ff ff mov %rbx,-0x6b8(%rbp) 0.00 : 45d5f: bb 00 09 00 00 mov $0x900,%ebx 0.00 : 45d64: e9 c2 00 00 00 jmpq 45e2b <_IO_vfprintf+0x1b6b> 0.00 : 45d69: 49 8d 47 1e lea 0x1e(%r15),%rax 0.00 : 45d6d: 49 8d 0c 1f lea (%r15,%rbx,1),%rcx 0.00 : 45d71: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45d75: 48 29 c4 sub %rax,%rsp 0.00 : 45d78: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 45d7d: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 45d81: 4a 8d 14 38 lea (%rax,%r15,1),%rdx 0.00 : 45d85: 48 39 95 a0 fa ff ff cmp %rdx,-0x560(%rbp) 0.00 : 45d8c: 48 89 c3 mov %rax,%rbx 0.00 : 45d8f: 4c 0f 44 f9 cmove %rcx,%r15 0.00 : 45d93: 48 8b 95 90 fa ff ff mov -0x570(%rbp),%rdx 0.00 : 45d9a: 48 8b b5 a0 fa ff ff mov -0x560(%rbp),%rsi 0.00 : 45da1: 48 89 df mov %rbx,%rdi 0.00 : 45da4: e8 f7 d4 03 00 callq 832a0 <__GI_memmove> 0.00 : 45da9: 80 bd 8b f9 ff ff 00 cmpb $0x0,-0x675(%rbp) 0.00 : 45db0: 74 0c je 45dbe <_IO_vfprintf+0x1afe> 0.00 : 45db2: 48 8b bd a0 fa ff ff mov -0x560(%rbp),%rdi 0.00 : 45db9: e8 e2 8a fd ff callq 1e8a0 0.00 : 45dbe: 49 81 ff 00 10 00 00 cmp $0x1000,%r15 0.00 : 45dc5: 0f 87 eb 0d 00 00 ja 46bb6 <_IO_vfprintf+0x28f6> 0.00 : 45dcb: 48 89 9d a0 fa ff ff mov %rbx,-0x560(%rbp) 0.00 : 45dd2: 48 8b 9d a0 fa ff ff mov -0x560(%rbp),%rbx 0.00 : 45dd9: 48 03 9d 90 fa ff ff add -0x570(%rbp),%rbx 0.00 : 45de0: 48 8b 8d 38 f8 ff ff mov -0x7c8(%rbp),%rcx 0.00 : 45de7: 48 8b b5 00 fa ff ff mov -0x600(%rbp),%rsi 0.00 : 45dee: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 45df5: 48 89 da mov %rbx,%rdx 0.00 : 45df8: e8 73 f3 01 00 callq 65170 <__parse_one_specmb> 0.00 : 45dfd: 48 01 85 00 fa ff ff add %rax,-0x600(%rbp) 0.00 : 45e04: 48 8b 5b 20 mov 0x20(%rbx),%rbx 0.00 : 45e08: 48 83 85 f8 f9 ff ff addq $0x1,-0x608(%rbp) 0.00 : 45e0f: 01 0.00 : 45e10: 48 83 85 90 fa ff ff addq $0x48,-0x570(%rbp) 0.00 : 45e17: 48 0.00 : 45e18: 48 89 9d 48 f9 ff ff mov %rbx,-0x6b8(%rbp) 0.00 : 45e1f: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 45e22: 0f 84 79 11 00 00 je 46fa1 <_IO_vfprintf+0x2ce1> 0.00 : 45e28: 4c 89 fb mov %r15,%rbx 0.00 : 45e2b: 48 3b 9d 90 fa ff ff cmp -0x570(%rbp),%rbx 0.00 : 45e32: 49 89 df mov %rbx,%r15 0.00 : 45e35: 77 9b ja 45dd2 <_IO_vfprintf+0x1b12> 0.00 : 45e37: 4c 8d 3c 1b lea (%rbx,%rbx,1),%r15 0.00 : 45e3b: 49 81 ff 00 10 00 00 cmp $0x1000,%r15 0.00 : 45e42: 0f 86 21 ff ff ff jbe 45d69 <_IO_vfprintf+0x1aa9> 0.00 : 45e48: 4c 89 ff mov %r15,%rdi 0.00 : 45e4b: e8 70 1d 0a 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 45e50: 85 c0 test %eax,%eax 0.00 : 45e52: 0f 85 11 ff ff ff jne 45d69 <_IO_vfprintf+0x1aa9> 0.00 : 45e58: 4c 89 ff mov %r15,%rdi 0.00 : 45e5b: e8 f0 89 fd ff callq 1e850 0.00 : 45e60: 48 89 c3 mov %rax,%rbx 0.00 : 45e63: e9 2b ff ff ff jmpq 45d93 <_IO_vfprintf+0x1ad3> 0.00 : 45e68: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 45e6d: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 45e72: 0f 83 cb 2f 00 00 jae 48e43 <_IO_vfprintf+0x4b83> 0.00 : 45e78: c6 00 25 movb $0x25,(%rax) 0.00 : 45e7b: 48 83 c0 01 add $0x1,%rax 0.00 : 45e7f: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 45e84: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 45e8b: 0f 84 40 0a 00 00 je 468d1 <_IO_vfprintf+0x2611> 0.00 : 45e91: 41 83 c5 01 add $0x1,%r13d 0.00 : 45e95: e9 26 ec ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 45e9a: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 45ea1: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 45ea5: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 45eac: 00 0.00 : 45ead: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 45eb4: 48 01 d0 add %rdx,%rax 0.00 : 45eb7: 48 85 c0 test %rax,%rax 0.00 : 45eba: 0f 84 5d 2f 00 00 je 48e1d <_IO_vfprintf+0x4b5d> 0.00 : 45ec0: 8b 85 60 fa ff ff mov -0x5a0(%rbp),%eax 0.00 : 45ec6: 85 c0 test %eax,%eax 0.00 : 45ec8: 0f 84 7a 1b 00 00 je 47a48 <_IO_vfprintf+0x3788> 0.00 : 45ece: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 45ed5: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 45edc: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 45ee1: 48 c1 e0 04 shl $0x4,%rax 0.00 : 45ee5: 48 8b 14 03 mov (%rbx,%rax,1),%rdx 0.00 : 45ee9: 48 89 d7 mov %rdx,%rdi 0.00 : 45eec: 48 89 d0 mov %rdx,%rax 0.00 : 45eef: c7 85 3c fa ff ff 0a movl $0xa,-0x5c4(%rbp) 0.00 : 45ef6: 00 00 00 0.00 : 45ef9: 48 c1 ef 3f shr $0x3f,%rdi 0.00 : 45efd: 48 f7 d8 neg %rax 0.00 : 45f00: 85 ff test %edi,%edi 0.00 : 45f02: 89 bd 20 fa ff ff mov %edi,-0x5e0(%rbp) 0.00 : 45f08: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 45f0c: 48 89 95 08 f9 ff ff mov %rdx,-0x6f8(%rbp) 0.00 : 45f13: 83 bd 68 fa ff ff 00 cmpl $0x0,-0x598(%rbp) 0.00 : 45f1a: 0f 8c 61 13 00 00 jl 47281 <_IO_vfprintf+0x2fc1> 0.00 : 45f20: 0f 85 2f 0e 00 00 jne 46d55 <_IO_vfprintf+0x2a95> 0.00 : 45f26: 48 83 bd 08 f9 ff ff cmpq $0x0,-0x6f8(%rbp) 0.00 : 45f2d: 00 0.00 : 45f2e: 0f 85 21 0e 00 00 jne 46d55 <_IO_vfprintf+0x2a95> 0.00 : 45f34: 83 bd 3c fa ff ff 08 cmpl $0x8,-0x5c4(%rbp) 0.00 : 45f3b: 0f 84 53 1c 00 00 je 47b94 <_IO_vfprintf+0x38d4> 0.00 : 45f41: 48 8b 8d 60 f9 ff ff mov -0x6a0(%rbp),%rcx 0.00 : 45f48: 31 c0 xor %eax,%eax 0.00 : 45f4a: c6 85 72 fa ff ff 20 movb $0x20,-0x58e(%rbp) 0.00 : 45f51: 48 89 8d d0 fa ff ff mov %rcx,-0x530(%rbp) 0.00 : 45f58: 49 89 cf mov %rcx,%r15 0.00 : 45f5b: 48 2b 85 60 f9 ff ff sub -0x6a0(%rbp),%rax 0.00 : 45f62: 8b b5 48 fa ff ff mov -0x5b8(%rbp),%esi 0.00 : 45f68: ba 00 00 00 00 mov $0x0,%edx 0.00 : 45f6d: 48 03 85 d0 fa ff ff add -0x530(%rbp),%rax 0.00 : 45f74: 48 0f 48 c2 cmovs %rdx,%rax 0.00 : 45f78: 85 f6 test %esi,%esi 0.00 : 45f7a: 89 85 bc fa ff ff mov %eax,-0x544(%rbp) 0.00 : 45f80: 0f 85 53 0c 00 00 jne 46bd9 <_IO_vfprintf+0x2919> 0.00 : 45f86: 8b 85 60 f9 ff ff mov -0x6a0(%rbp),%eax 0.00 : 45f8c: 29 85 64 fa ff ff sub %eax,-0x59c(%rbp) 0.00 : 45f92: 8b bd d0 fa ff ff mov -0x530(%rbp),%edi 0.00 : 45f98: 8b 9d 64 fa ff ff mov -0x59c(%rbp),%ebx 0.00 : 45f9e: 8b 8d 40 fa ff ff mov -0x5c0(%rbp),%ecx 0.00 : 45fa4: 89 85 c0 fa ff ff mov %eax,-0x540(%rbp) 0.00 : 45faa: 01 fb add %edi,%ebx 0.00 : 45fac: 2b 9d bc fa ff ff sub -0x544(%rbp),%ebx 0.00 : 45fb2: 48 83 bd 08 f9 ff ff cmpq $0x0,-0x6f8(%rbp) 0.00 : 45fb9: 00 0.00 : 45fba: 89 bd 10 f9 ff ff mov %edi,-0x6f0(%rbp) 0.00 : 45fc0: 0f 95 c2 setne %dl 0.00 : 45fc3: 85 c9 test %ecx,%ecx 0.00 : 45fc5: 0f 95 c0 setne %al 0.00 : 45fc8: 20 c2 and %al,%dl 0.00 : 45fca: 88 95 c7 fa ff ff mov %dl,-0x539(%rbp) 0.00 : 45fd0: 74 0d je 45fdf <_IO_vfprintf+0x1d1f> 0.00 : 45fd2: 83 bd 3c fa ff ff 10 cmpl $0x10,-0x5c4(%rbp) 0.00 : 45fd9: 8d 43 fe lea -0x2(%rbx),%eax 0.00 : 45fdc: 0f 44 d8 cmove %eax,%ebx 0.00 : 45fdf: 8b 85 44 fa ff ff mov -0x5bc(%rbp),%eax 0.00 : 45fe5: 0b 85 20 fa ff ff or -0x5e0(%rbp),%eax 0.00 : 45feb: 0b 85 4c fa ff ff or -0x5b4(%rbp),%eax 0.00 : 45ff1: 83 f8 01 cmp $0x1,%eax 0.00 : 45ff4: 83 d3 ff adc $0xffffffff,%ebx 0.00 : 45ff7: 80 bd 72 fa ff ff 20 cmpb $0x20,-0x58e(%rbp) 0.00 : 45ffe: 0f 84 5a 17 00 00 je 4775e <_IO_vfprintf+0x349e> 0.00 : 46004: 8b 95 20 fa ff ff mov -0x5e0(%rbp),%edx 0.00 : 4600a: 85 d2 test %edx,%edx 0.00 : 4600c: 0f 85 1a 17 00 00 jne 4772c <_IO_vfprintf+0x346c> 0.00 : 46012: 8b 85 4c fa ff ff mov -0x5b4(%rbp),%eax 0.00 : 46018: 85 c0 test %eax,%eax 0.00 : 4601a: 0f 85 8d 1c 00 00 jne 47cad <_IO_vfprintf+0x39ed> 0.00 : 46020: 8b 85 44 fa ff ff mov -0x5bc(%rbp),%eax 0.00 : 46026: 85 c0 test %eax,%eax 0.00 : 46028: 0f 85 5e 1c 00 00 jne 47c8c <_IO_vfprintf+0x39cc> 0.00 : 4602e: 80 bd c7 fa ff ff 00 cmpb $0x0,-0x539(%rbp) 0.00 : 46035: 74 0d je 46044 <_IO_vfprintf+0x1d84> 0.00 : 46037: 83 bd 3c fa ff ff 10 cmpl $0x10,-0x5c4(%rbp) 0.00 : 4603e: 0f 84 1c 2d 00 00 je 48d60 <_IO_vfprintf+0x4aa0> 0.00 : 46044: 8b 8d bc fa ff ff mov -0x544(%rbp),%ecx 0.00 : 4604a: 8d 04 0b lea (%rbx,%rcx,1),%eax 0.00 : 4604d: 85 c0 test %eax,%eax 0.00 : 4604f: 7e 33 jle 46084 <_IO_vfprintf+0x1dc4> 0.00 : 46051: 48 63 d0 movslq %eax,%rdx 0.00 : 46054: be 30 00 00 00 mov $0x30,%esi 0.00 : 46059: 4c 89 e7 mov %r12,%rdi 0.00 : 4605c: e8 df 21 02 00 callq 68240 <_IO_padn> 0.00 : 46061: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 46068: 0f 87 29 02 00 00 ja 46297 <_IO_vfprintf+0x1fd7> 0.00 : 4606e: 89 c2 mov %eax,%edx 0.00 : 46070: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46075: 44 29 e8 sub %r13d,%eax 0.00 : 46078: 39 c2 cmp %eax,%edx 0.00 : 4607a: 0f 87 51 08 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46080: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 46084: 45 85 ed test %r13d,%r13d 0.00 : 46087: 0f 88 f6 32 00 00 js 49383 <_IO_vfprintf+0x50c3> 0.00 : 4608d: 48 8b 9d 60 f9 ff ff mov -0x6a0(%rbp),%rbx 0.00 : 46094: 48 2b 9d d0 fa ff ff sub -0x530(%rbp),%rbx 0.00 : 4609b: 4c 89 fe mov %r15,%rsi 0.00 : 4609e: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 460a5: 00 0.00 : 460a6: 4c 89 e7 mov %r12,%rdi 0.00 : 460a9: 48 89 da mov %rbx,%rdx 0.00 : 460ac: ff 50 38 callq *0x38(%rax) 0.00 : 460af: 48 39 c3 cmp %rax,%rbx 0.00 : 460b2: 0f 85 19 08 00 00 jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 460b8: 49 63 d5 movslq %r13d,%rdx 0.00 : 460bb: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 460c0: 48 29 d0 sub %rdx,%rax 0.00 : 460c3: 48 39 c3 cmp %rax,%rbx 0.00 : 460c6: 0f 87 05 08 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 460cc: 8b 9d 10 f9 ff ff mov -0x6f0(%rbp),%ebx 0.00 : 460d2: 29 9d c0 fa ff ff sub %ebx,-0x540(%rbp) 0.00 : 460d8: 44 03 ad c0 fa ff ff add -0x540(%rbp),%r13d 0.00 : 460df: e9 dc e9 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 460e4: c7 85 3c fa ff ff 0a movl $0xa,-0x5c4(%rbp) 0.00 : 460eb: 00 00 00 0.00 : 460ee: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 460f5: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 460f9: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 46100: 00 0.00 : 46101: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 46108: 48 01 d0 add %rdx,%rax 0.00 : 4610b: 48 85 c0 test %rax,%rax 0.00 : 4610e: 0f 84 dc 18 00 00 je 479f0 <_IO_vfprintf+0x3730> 0.00 : 46114: 44 8b bd 60 fa ff ff mov -0x5a0(%rbp),%r15d 0.00 : 4611b: 45 85 ff test %r15d,%r15d 0.00 : 4611e: 0f 84 6c 11 00 00 je 47290 <_IO_vfprintf+0x2fd0> 0.00 : 46124: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 4612b: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 46132: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 46137: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4613b: 48 8b 04 03 mov (%rbx,%rax,1),%rax 0.00 : 4613f: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 46146: 00 00 00 0.00 : 46149: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 46150: 00 00 00 0.00 : 46153: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 4615a: 00 00 00 0.00 : 4615d: 48 89 85 08 f9 ff ff mov %rax,-0x6f8(%rbp) 0.00 : 46164: e9 aa fd ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 46169: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 46170: 01 0.00 : 46171: 48 8d 15 62 fb ff ff lea -0x49e(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 46178: 48 8b bd 48 f9 ff ff mov -0x6b8(%rbp),%rdi 0.00 : 4617f: 0f b6 3f movzbl (%rdi),%edi 0.00 : 46182: 89 f8 mov %edi,%eax 0.00 : 46184: 40 88 bd eb f9 ff ff mov %dil,-0x615(%rbp) 0.00 : 4618b: 83 e8 20 sub $0x20,%eax 0.00 : 4618e: 3c 5a cmp $0x5a,%al 0.00 : 46190: 77 2c ja 461be <_IO_vfprintf+0x1efe> 0.00 : 46192: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 46199: 48 8d 15 e0 ec 0e 00 lea 0xeece0(%rip),%rdx # 134e80 0.00 : 461a0: 83 e8 20 sub $0x20,%eax 0.00 : 461a3: 48 98 cltq 0.00 : 461a5: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 461a9: 48 8d 05 d0 e9 0e 00 lea 0xee9d0(%rip),%rax # 134b80 0.00 : 461b0: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 461b4: 48 8d 15 1f fb ff ff lea -0x4e1(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 461bb: 48 01 c2 add %rax,%rdx 0.00 : 461be: c7 85 b8 f9 ff ff 01 movl $0x1,-0x648(%rbp) 0.00 : 461c5: 00 00 00 0.00 : 461c8: c7 85 c0 f9 ff ff 01 movl $0x1,-0x640(%rbp) 0.00 : 461cf: 00 00 00 0.00 : 461d2: ff e2 jmpq *%rdx 0.00 : 461d4: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 461db: 01 0.00 : 461dc: 48 8d 15 f7 fa ff ff lea -0x509(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 461e3: 48 8b 85 48 f9 ff ff mov -0x6b8(%rbp),%rax 0.00 : 461ea: 0f b6 00 movzbl (%rax),%eax 0.00 : 461ed: 88 85 eb f9 ff ff mov %al,-0x615(%rbp) 0.00 : 461f3: 83 e8 20 sub $0x20,%eax 0.00 : 461f6: 3c 5a cmp $0x5a,%al 0.00 : 461f8: 77 2c ja 46226 <_IO_vfprintf+0x1f66> 0.00 : 461fa: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 46201: 48 8d 15 78 ec 0e 00 lea 0xeec78(%rip),%rdx # 134e80 0.00 : 46208: 83 e8 20 sub $0x20,%eax 0.00 : 4620b: 48 98 cltq 0.00 : 4620d: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 46211: 48 8d 05 68 e9 0e 00 lea 0xee968(%rip),%rax # 134b80 0.00 : 46218: 48 63 04 90 movslq (%rax,%rdx,4),%rax 0.00 : 4621c: 48 8d 15 b7 fa ff ff lea -0x549(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 46223: 48 01 c2 add %rax,%rdx 0.00 : 46226: c7 85 b8 f9 ff ff 00 movl $0x0,-0x648(%rbp) 0.00 : 4622d: 00 00 00 0.00 : 46230: c7 85 c0 f9 ff ff 01 movl $0x1,-0x640(%rbp) 0.00 : 46237: 00 00 00 0.00 : 4623a: ff e2 jmpq *%rdx 0.00 : 4623c: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 46243: 48 8b 95 80 f9 ff ff mov -0x680(%rbp),%rdx 0.00 : 4624a: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 4624e: 48 8d 34 c2 lea (%rdx,%rax,8),%rsi 0.00 : 46252: 48 85 f6 test %rsi,%rsi 0.00 : 46255: 0f 84 c4 1b 00 00 je 47e1f <_IO_vfprintf+0x3b5f> 0.00 : 4625b: 48 63 46 30 movslq 0x30(%rsi),%rax 0.00 : 4625f: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx 0.00 : 46266: 4c 89 e7 mov %r12,%rdi 0.00 : 46269: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4626d: 48 03 85 08 fa ff ff add -0x5f8(%rbp),%rax 0.00 : 46274: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 4627b: e8 40 64 00 00 callq 4c6c0 <__printf_fphex> 0.00 : 46280: 89 c2 mov %eax,%edx 0.00 : 46282: 85 d2 test %edx,%edx 0.00 : 46284: 0f 88 47 06 00 00 js 468d1 <_IO_vfprintf+0x2611> 0.00 : 4628a: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 46291: 0f 86 1c ec ff ff jbe 44eb3 <_IO_vfprintf+0xbf3> 0.00 : 46297: 48 8d 0d 72 c6 0f 00 lea 0xfc672(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 4629e: 48 8d 35 31 4a 0f 00 lea 0xf4a31(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 462a5: 48 8d 3d e4 85 0f 00 lea 0xf85e4(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 462ac: ba b5 07 00 00 mov $0x7b5,%edx 0.00 : 462b1: e8 6a 56 fe ff callq 2b920 <__assert_fail> 0.00 : 462b6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 462bd: 00 00 00 0.00 : 462c0: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 462c7: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 462cb: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 462d2: 00 0.00 : 462d3: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 462da: 48 01 d0 add %rdx,%rax 0.00 : 462dd: 48 85 c0 test %rax,%rax 0.00 : 462e0: 0f 84 30 33 00 00 je 49616 <_IO_vfprintf+0x5356> 0.00 : 462e6: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 462ed: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 462f2: 48 8b 95 08 fa ff ff mov -0x5f8(%rbp),%rdx 0.00 : 462f9: 48 c1 e0 04 shl $0x4,%rax 0.00 : 462fd: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 46301: 48 85 c0 test %rax,%rax 0.00 : 46304: 0f 84 d6 10 00 00 je 473e0 <_IO_vfprintf+0x3120> 0.00 : 4630a: 48 89 85 08 f9 ff ff mov %rax,-0x6f8(%rbp) 0.00 : 46311: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 46318: 00 00 00 0.00 : 4631b: c7 85 3c fa ff ff 10 movl $0x10,-0x5c4(%rbp) 0.00 : 46322: 00 00 00 0.00 : 46325: c7 85 40 fa ff ff 01 movl $0x1,-0x5c0(%rbp) 0.00 : 4632c: 00 00 00 0.00 : 4632f: c7 85 50 fa ff ff 00 movl $0x0,-0x5b0(%rbp) 0.00 : 46336: 00 00 00 0.00 : 46339: c6 85 73 fa ff ff 78 movb $0x78,-0x58d(%rbp) 0.00 : 46340: e9 ce fb ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 46345: 41 f6 44 24 74 04 testb $0x4,0x74(%r12) 0.00 : 4634b: 74 10 je 4635d <_IO_vfprintf+0x209d> 0.00 : 4634d: 44 8b 8d 74 f9 ff ff mov -0x68c(%rbp),%r9d 0.00 : 46354: 45 85 c9 test %r9d,%r9d 0.00 : 46357: 0f 84 28 2e 00 00 je 49185 <_IO_vfprintf+0x4ec5> 0.00 : 4635d: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 46364: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 46368: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 4636f: 00 0.00 : 46370: 48 8b 85 80 f9 ff ff mov -0x680(%rbp),%rax 0.00 : 46377: 48 01 d0 add %rdx,%rax 0.00 : 4637a: 48 85 c0 test %rax,%rax 0.00 : 4637d: 0f 84 f1 2e 00 00 je 49274 <_IO_vfprintf+0x4fb4> 0.00 : 46383: 8b 8d 60 fa ff ff mov -0x5a0(%rbp),%ecx 0.00 : 46389: 85 c9 test %ecx,%ecx 0.00 : 4638b: 0f 84 b5 19 00 00 je 47d46 <_IO_vfprintf+0x3a86> 0.00 : 46391: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 46398: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 4639f: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 463a4: 48 c1 e0 04 shl $0x4,%rax 0.00 : 463a8: 48 8b 14 03 mov (%rbx,%rax,1),%rdx 0.00 : 463ac: 49 63 c5 movslq %r13d,%rax 0.00 : 463af: 48 89 02 mov %rax,(%rdx) 0.00 : 463b2: e9 09 e7 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 463b7: 48 8b b5 88 f8 ff ff mov -0x778(%rbp),%rsi 0.00 : 463be: 8b bd 70 f9 ff ff mov -0x690(%rbp),%edi 0.00 : 463c4: ba e8 03 00 00 mov $0x3e8,%edx 0.00 : 463c9: e8 82 a6 03 00 callq 80a50 <__strerror_r> 0.00 : 463ce: c7 85 60 fa ff ff 00 movl $0x0,-0x5a0(%rbp) 0.00 : 463d5: 00 00 00 0.00 : 463d8: 49 89 c7 mov %rax,%r15 0.00 : 463db: e9 2d eb ff ff jmpq 44f0d <_IO_vfprintf+0xc4d> 0.00 : 463e0: c7 85 3c fa ff ff 10 movl $0x10,-0x5c4(%rbp) 0.00 : 463e7: 00 00 00 0.00 : 463ea: e9 ff fc ff ff jmpq 460ee <_IO_vfprintf+0x1e2e> 0.00 : 463ef: 48 63 85 6c f9 ff ff movslq -0x694(%rbp),%rax 0.00 : 463f6: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 463fd: 48 8d 04 c0 lea (%rax,%rax,8),%rax 0.00 : 46401: 48 8d 34 c1 lea (%rcx,%rax,8),%rsi 0.00 : 46405: 48 85 f6 test %rsi,%rsi 0.00 : 46408: 0f 84 fb 1b 00 00 je 48009 <_IO_vfprintf+0x3d49> 0.00 : 4640e: 48 63 46 30 movslq 0x30(%rsi),%rax 0.00 : 46412: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx 0.00 : 46419: 4c 89 e7 mov %r12,%rdi 0.00 : 4641c: 48 c1 e0 04 shl $0x4,%rax 0.00 : 46420: 48 03 85 08 fa ff ff add -0x5f8(%rbp),%rax 0.00 : 46427: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 4642e: e8 7d 39 00 00 callq 49db0 <__printf_fp> 0.00 : 46433: 89 c2 mov %eax,%edx 0.00 : 46435: e9 48 fe ff ff jmpq 46282 <_IO_vfprintf+0x1fc2> 0.00 : 4643a: c7 85 3c fa ff ff 08 movl $0x8,-0x5c4(%rbp) 0.00 : 46441: 00 00 00 0.00 : 46444: e9 a5 fc ff ff jmpq 460ee <_IO_vfprintf+0x1e2e> 0.00 : 46449: c7 85 a0 f9 ff ff 10 movl $0x10,-0x660(%rbp) 0.00 : 46450: 00 00 00 0.00 : 46453: 8b 9d c0 f9 ff ff mov -0x640(%rbp),%ebx 0.00 : 46459: 85 db test %ebx,%ebx 0.00 : 4645b: 0f 84 db 0a 00 00 je 46f3c <_IO_vfprintf+0x2c7c> 0.00 : 46461: 41 8b 06 mov (%r14),%eax 0.00 : 46464: 83 f8 30 cmp $0x30,%eax 0.00 : 46467: 0f 83 62 0f 00 00 jae 473cf <_IO_vfprintf+0x310f> 0.00 : 4646d: 89 c2 mov %eax,%edx 0.00 : 4646f: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 46473: 83 c0 08 add $0x8,%eax 0.00 : 46476: 41 89 06 mov %eax,(%r14) 0.00 : 46479: 48 8b 12 mov (%rdx),%rdx 0.00 : 4647c: c7 85 90 f9 ff ff 00 movl $0x0,-0x670(%rbp) 0.00 : 46483: 00 00 00 0.00 : 46486: c7 85 a8 f9 ff ff 00 movl $0x0,-0x658(%rbp) 0.00 : 4648d: 00 00 00 0.00 : 46490: c7 85 b0 f9 ff ff 00 movl $0x0,-0x650(%rbp) 0.00 : 46497: 00 00 00 0.00 : 4649a: 48 89 95 c0 f8 ff ff mov %rdx,-0x740(%rbp) 0.00 : 464a1: 83 bd ec fa ff ff 00 cmpl $0x0,-0x514(%rbp) 0.00 : 464a8: 0f 8c 7f 0a 00 00 jl 46f2d <_IO_vfprintf+0x2c6d> 0.00 : 464ae: 0f 85 8e 09 00 00 jne 46e42 <_IO_vfprintf+0x2b82> 0.00 : 464b4: 48 83 bd c0 f8 ff ff cmpq $0x0,-0x740(%rbp) 0.00 : 464bb: 00 0.00 : 464bc: 0f 85 80 09 00 00 jne 46e42 <_IO_vfprintf+0x2b82> 0.00 : 464c2: 83 bd a0 f9 ff ff 08 cmpl $0x8,-0x660(%rbp) 0.00 : 464c9: 0f 84 51 17 00 00 je 47c20 <_IO_vfprintf+0x3960> 0.00 : 464cf: 48 8b bd 60 f9 ff ff mov -0x6a0(%rbp),%rdi 0.00 : 464d6: 31 c0 xor %eax,%eax 0.00 : 464d8: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 464df: 48 89 bd 98 fa ff ff mov %rdi,-0x568(%rbp) 0.00 : 464e6: 49 89 ff mov %rdi,%r15 0.00 : 464e9: 48 2b 85 60 f9 ff ff sub -0x6a0(%rbp),%rax 0.00 : 464f0: 8b 8d ac f9 ff ff mov -0x654(%rbp),%ecx 0.00 : 464f6: ba 00 00 00 00 mov $0x0,%edx 0.00 : 464fb: 48 03 85 98 fa ff ff add -0x568(%rbp),%rax 0.00 : 46502: 48 0f 48 c2 cmovs %rdx,%rax 0.00 : 46506: 85 c9 test %ecx,%ecx 0.00 : 46508: 89 85 c8 f9 ff ff mov %eax,-0x638(%rbp) 0.00 : 4650e: 0f 85 9c 05 00 00 jne 46ab0 <_IO_vfprintf+0x27f0> 0.00 : 46514: 8b 8d 60 f9 ff ff mov -0x6a0(%rbp),%ecx 0.00 : 4651a: 29 8d b8 fa ff ff sub %ecx,-0x548(%rbp) 0.00 : 46520: 8b 95 98 fa ff ff mov -0x568(%rbp),%edx 0.00 : 46526: 8b 9d b8 fa ff ff mov -0x548(%rbp),%ebx 0.00 : 4652c: 89 8d d0 f8 ff ff mov %ecx,-0x730(%rbp) 0.00 : 46532: 01 d3 add %edx,%ebx 0.00 : 46534: 89 95 cc f8 ff ff mov %edx,-0x734(%rbp) 0.00 : 4653a: 29 c3 sub %eax,%ebx 0.00 : 4653c: 48 83 bd c0 f8 ff ff cmpq $0x0,-0x740(%rbp) 0.00 : 46543: 00 0.00 : 46544: 0f 95 c0 setne %al 0.00 : 46547: 22 85 a4 f9 ff ff and -0x65c(%rbp),%al 0.00 : 4654d: 88 85 af fa ff ff mov %al,-0x551(%rbp) 0.00 : 46553: 74 0d je 46562 <_IO_vfprintf+0x22a2> 0.00 : 46555: 83 bd a0 f9 ff ff 10 cmpl $0x10,-0x660(%rbp) 0.00 : 4655c: 8d 43 fe lea -0x2(%rbx),%eax 0.00 : 4655f: 0f 44 d8 cmove %eax,%ebx 0.00 : 46562: 8b 85 a8 f9 ff ff mov -0x658(%rbp),%eax 0.00 : 46568: 0b 85 90 f9 ff ff or -0x670(%rbp),%eax 0.00 : 4656e: 0b 85 b0 f9 ff ff or -0x650(%rbp),%eax 0.00 : 46574: 83 f8 01 cmp $0x1,%eax 0.00 : 46577: 83 d3 ff adc $0xffffffff,%ebx 0.00 : 4657a: 80 bd d0 f9 ff ff 20 cmpb $0x20,-0x630(%rbp) 0.00 : 46581: 0f 84 8e 0d 00 00 je 47315 <_IO_vfprintf+0x3055> 0.00 : 46587: 8b 95 90 f9 ff ff mov -0x670(%rbp),%edx 0.00 : 4658d: 85 d2 test %edx,%edx 0.00 : 4658f: 0f 85 4e 0d 00 00 jne 472e3 <_IO_vfprintf+0x3023> 0.00 : 46595: 8b 85 b0 f9 ff ff mov -0x650(%rbp),%eax 0.00 : 4659b: 85 c0 test %eax,%eax 0.00 : 4659d: 0f 85 c5 1c 00 00 jne 48268 <_IO_vfprintf+0x3fa8> 0.00 : 465a3: 8b 85 a8 f9 ff ff mov -0x658(%rbp),%eax 0.00 : 465a9: 85 c0 test %eax,%eax 0.00 : 465ab: 0f 85 cf 17 00 00 jne 47d80 <_IO_vfprintf+0x3ac0> 0.00 : 465b1: 80 bd af fa ff ff 00 cmpb $0x0,-0x551(%rbp) 0.00 : 465b8: 74 0d je 465c7 <_IO_vfprintf+0x2307> 0.00 : 465ba: 83 bd a0 f9 ff ff 10 cmpl $0x10,-0x660(%rbp) 0.00 : 465c1: 0f 84 51 2a 00 00 je 49018 <_IO_vfprintf+0x4d58> 0.00 : 465c7: 8b 8d c8 f9 ff ff mov -0x638(%rbp),%ecx 0.00 : 465cd: 8d 04 0b lea (%rbx,%rcx,1),%eax 0.00 : 465d0: 85 c0 test %eax,%eax 0.00 : 465d2: 7e 33 jle 46607 <_IO_vfprintf+0x2347> 0.00 : 465d4: 48 63 d0 movslq %eax,%rdx 0.00 : 465d7: be 30 00 00 00 mov $0x30,%esi 0.00 : 465dc: 4c 89 e7 mov %r12,%rdi 0.00 : 465df: e8 5c 1c 02 00 callq 68240 <_IO_padn> 0.00 : 465e4: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 465eb: 0f 87 b0 01 00 00 ja 467a1 <_IO_vfprintf+0x24e1> 0.00 : 465f1: 89 c2 mov %eax,%edx 0.00 : 465f3: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 465f8: 44 29 e8 sub %r13d,%eax 0.00 : 465fb: 39 c2 cmp %eax,%edx 0.00 : 465fd: 0f 87 ce 02 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46603: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 46607: 45 85 ed test %r13d,%r13d 0.00 : 4660a: 0f 88 f0 26 00 00 js 48d00 <_IO_vfprintf+0x4a40> 0.00 : 46610: 48 8b 9d 60 f9 ff ff mov -0x6a0(%rbp),%rbx 0.00 : 46617: 48 2b 9d 98 fa ff ff sub -0x568(%rbp),%rbx 0.00 : 4661e: 4c 89 fe mov %r15,%rsi 0.00 : 46621: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 46628: 00 0.00 : 46629: 4c 89 e7 mov %r12,%rdi 0.00 : 4662c: 48 89 da mov %rbx,%rdx 0.00 : 4662f: ff 50 38 callq *0x38(%rax) 0.00 : 46632: 48 39 c3 cmp %rax,%rbx 0.00 : 46635: 0f 85 96 02 00 00 jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 4663b: 49 63 d5 movslq %r13d,%rdx 0.00 : 4663e: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46643: 48 29 d0 sub %rdx,%rax 0.00 : 46646: 48 39 c3 cmp %rax,%rbx 0.00 : 46649: 0f 87 82 02 00 00 ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 4664f: 8b 9d cc f8 ff ff mov -0x734(%rbp),%ebx 0.00 : 46655: 29 9d d0 f8 ff ff sub %ebx,-0x730(%rbp) 0.00 : 4665b: 44 03 ad d0 f8 ff ff add -0x730(%rbp),%r13d 0.00 : 46662: e9 29 e2 ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 46667: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 4666e: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 46675: 00 00 00 00 0.00 : 46679: 0f b6 95 bc f9 ff ff movzbl -0x644(%rbp),%edx 0.00 : 46680: 8b 8d ec fa ff ff mov -0x514(%rbp),%ecx 0.00 : 46686: 44 8b 9d b8 f9 ff ff mov -0x648(%rbp),%r11d 0.00 : 4668d: 8b 9d b8 fa ff ff mov -0x548(%rbp),%ebx 0.00 : 46693: 89 85 28 ff ff ff mov %eax,-0xd8(%rbp) 0.00 : 46699: 0f b6 85 2c ff ff ff movzbl -0xd4(%rbp),%eax 0.00 : 466a0: 01 d2 add %edx,%edx 0.00 : 466a2: 89 8d 20 ff ff ff mov %ecx,-0xe0(%rbp) 0.00 : 466a8: 0f b6 8d c0 f9 ff ff movzbl -0x640(%rbp),%ecx 0.00 : 466af: 89 9d 24 ff ff ff mov %ebx,-0xdc(%rbp) 0.00 : 466b5: 83 e0 fc and $0xfffffffc,%eax 0.00 : 466b8: 0a 85 b8 f9 ff ff or -0x648(%rbp),%al 0.00 : 466be: c1 e1 02 shl $0x2,%ecx 0.00 : 466c1: 09 d0 or %edx,%eax 0.00 : 466c3: 0f b6 95 a4 f9 ff ff movzbl -0x65c(%rbp),%edx 0.00 : 466ca: 83 e0 f3 and $0xfffffff3,%eax 0.00 : 466cd: 09 c8 or %ecx,%eax 0.00 : 466cf: 0f b6 8d a8 f9 ff ff movzbl -0x658(%rbp),%ecx 0.00 : 466d6: c1 e2 03 shl $0x3,%edx 0.00 : 466d9: 09 d0 or %edx,%eax 0.00 : 466db: 0f b6 95 ac f9 ff ff movzbl -0x654(%rbp),%edx 0.00 : 466e2: c1 e1 04 shl $0x4,%ecx 0.00 : 466e5: 83 e0 cf and $0xffffffcf,%eax 0.00 : 466e8: 09 c8 or %ecx,%eax 0.00 : 466ea: 0f b6 8d b0 f9 ff ff movzbl -0x650(%rbp),%ecx 0.00 : 466f1: c1 e2 05 shl $0x5,%edx 0.00 : 466f4: 09 d0 or %edx,%eax 0.00 : 466f6: 0f b6 95 b4 f9 ff ff movzbl -0x64c(%rbp),%edx 0.00 : 466fd: c1 e1 06 shl $0x6,%ecx 0.00 : 46700: 83 e0 3f and $0x3f,%eax 0.00 : 46703: 09 c8 or %ecx,%eax 0.00 : 46705: c1 e2 07 shl $0x7,%edx 0.00 : 46708: 09 d0 or %edx,%eax 0.00 : 4670a: 0f b6 95 cc f9 ff ff movzbl -0x634(%rbp),%edx 0.00 : 46711: 88 85 2c ff ff ff mov %al,-0xd4(%rbp) 0.00 : 46717: 0f b6 85 2d ff ff ff movzbl -0xd3(%rbp),%eax 0.00 : 4671e: c1 e2 03 shl $0x3,%edx 0.00 : 46721: 83 e0 f7 and $0xfffffff7,%eax 0.00 : 46724: 09 d0 or %edx,%eax 0.00 : 46726: 45 85 db test %r11d,%r11d 0.00 : 46729: 88 85 2d ff ff ff mov %al,-0xd3(%rbp) 0.00 : 4672f: 0f b6 85 d0 f9 ff ff movzbl -0x630(%rbp),%eax 0.00 : 46736: 89 85 30 ff ff ff mov %eax,-0xd0(%rbp) 0.00 : 4673c: 0f 84 2b 14 00 00 je 47b6d <_IO_vfprintf+0x38ad> 0.00 : 46742: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 46746: 48 83 c0 0f add $0xf,%rax 0.00 : 4674a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4674e: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 46752: 49 89 56 08 mov %rdx,0x8(%r14) 0.00 : 46756: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 46759: 48 8b 00 mov (%rax),%rax 0.00 : 4675c: 89 95 58 ff ff ff mov %edx,-0xa8(%rbp) 0.00 : 46762: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 46769: 48 8d 7d 98 lea -0x68(%rbp),%rdi 0.00 : 4676d: 48 8d 85 50 ff ff ff lea -0xb0(%rbp),%rax 0.00 : 46774: 48 8d b5 20 ff ff ff lea -0xe0(%rbp),%rsi 0.00 : 4677b: 48 89 fa mov %rdi,%rdx 0.00 : 4677e: 4c 89 e7 mov %r12,%rdi 0.00 : 46781: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 46785: e8 26 36 00 00 callq 49db0 <__printf_fp> 0.00 : 4678a: 85 c0 test %eax,%eax 0.00 : 4678c: 89 c2 mov %eax,%edx 0.00 : 4678e: 0f 88 3d 01 00 00 js 468d1 <_IO_vfprintf+0x2611> 0.00 : 46794: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 4679b: 0f 86 3f f1 ff ff jbe 458e0 <_IO_vfprintf+0x1620> 0.00 : 467a1: 48 8d 0d 68 c1 0f 00 lea 0xfc168(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 467a8: 48 8d 35 27 45 0f 00 lea 0xf4527(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 467af: 48 8d 3d da 80 0f 00 lea 0xf80da(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 467b6: ba 41 06 00 00 mov $0x641,%edx 0.00 : 467bb: e8 60 51 fe ff callq 2b920 <__assert_fail> 0.00 : 467c0: 8b 85 ec fa ff ff mov -0x514(%rbp),%eax 0.00 : 467c6: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 467cd: 00 00 00 00 0.00 : 467d1: 8b 95 b8 fa ff ff mov -0x548(%rbp),%edx 0.00 : 467d7: 0f b6 8d c0 f9 ff ff movzbl -0x640(%rbp),%ecx 0.00 : 467de: 44 8b 95 b8 f9 ff ff mov -0x648(%rbp),%r10d 0.00 : 467e5: 89 85 20 ff ff ff mov %eax,-0xe0(%rbp) 0.00 : 467eb: 0f be 85 eb f9 ff ff movsbl -0x615(%rbp),%eax 0.00 : 467f2: 89 95 24 ff ff ff mov %edx,-0xdc(%rbp) 0.00 : 467f8: 0f b6 95 bc f9 ff ff movzbl -0x644(%rbp),%edx 0.00 : 467ff: c1 e1 02 shl $0x2,%ecx 0.00 : 46802: 89 85 28 ff ff ff mov %eax,-0xd8(%rbp) 0.00 : 46808: 0f b6 85 2c ff ff ff movzbl -0xd4(%rbp),%eax 0.00 : 4680f: 01 d2 add %edx,%edx 0.00 : 46811: 83 e0 fc and $0xfffffffc,%eax 0.00 : 46814: 0a 85 b8 f9 ff ff or -0x648(%rbp),%al 0.00 : 4681a: 09 d0 or %edx,%eax 0.00 : 4681c: 0f b6 95 a4 f9 ff ff movzbl -0x65c(%rbp),%edx 0.00 : 46823: 83 e0 f3 and $0xfffffff3,%eax 0.00 : 46826: 09 c8 or %ecx,%eax 0.00 : 46828: 0f b6 8d a8 f9 ff ff movzbl -0x658(%rbp),%ecx 0.00 : 4682f: c1 e2 03 shl $0x3,%edx 0.00 : 46832: 09 d0 or %edx,%eax 0.00 : 46834: 0f b6 95 ac f9 ff ff movzbl -0x654(%rbp),%edx 0.00 : 4683b: c1 e1 04 shl $0x4,%ecx 0.00 : 4683e: 83 e0 cf and $0xffffffcf,%eax 0.00 : 46841: 09 c8 or %ecx,%eax 0.00 : 46843: 0f b6 8d b0 f9 ff ff movzbl -0x650(%rbp),%ecx 0.00 : 4684a: c1 e2 05 shl $0x5,%edx 0.00 : 4684d: 09 d0 or %edx,%eax 0.00 : 4684f: 0f b6 95 b4 f9 ff ff movzbl -0x64c(%rbp),%edx 0.00 : 46856: c1 e1 06 shl $0x6,%ecx 0.00 : 46859: 83 e0 3f and $0x3f,%eax 0.00 : 4685c: 09 c8 or %ecx,%eax 0.00 : 4685e: c1 e2 07 shl $0x7,%edx 0.00 : 46861: 09 d0 or %edx,%eax 0.00 : 46863: 45 85 d2 test %r10d,%r10d 0.00 : 46866: 88 85 2c ff ff ff mov %al,-0xd4(%rbp) 0.00 : 4686c: 0f b6 85 d0 f9 ff ff movzbl -0x630(%rbp),%eax 0.00 : 46873: 89 85 30 ff ff ff mov %eax,-0xd0(%rbp) 0.00 : 46879: 0f 84 01 12 00 00 je 47a80 <_IO_vfprintf+0x37c0> 0.00 : 4687f: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 46883: 48 83 c0 0f add $0xf,%rax 0.00 : 46887: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4688b: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 4688f: 49 89 56 08 mov %rdx,0x8(%r14) 0.00 : 46893: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 46896: 48 8b 00 mov (%rax),%rax 0.00 : 46899: 89 95 58 ff ff ff mov %edx,-0xa8(%rbp) 0.00 : 4689f: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 468a6: 48 8d 4d 98 lea -0x68(%rbp),%rcx 0.00 : 468aa: 48 8d 85 50 ff ff ff lea -0xb0(%rbp),%rax 0.00 : 468b1: 48 8d b5 20 ff ff ff lea -0xe0(%rbp),%rsi 0.00 : 468b8: 4c 89 e7 mov %r12,%rdi 0.00 : 468bb: 48 89 ca mov %rcx,%rdx 0.00 : 468be: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 468c2: e8 f9 5d 00 00 callq 4c6c0 <__printf_fphex> 0.00 : 468c7: 85 c0 test %eax,%eax 0.00 : 468c9: 89 c2 mov %eax,%edx 0.00 : 468cb: 0f 89 c3 fe ff ff jns 46794 <_IO_vfprintf+0x24d4> 0.00 : 468d1: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 468d7: 80 bd 8b f9 ff ff 00 cmpb $0x0,-0x675(%rbp) 0.00 : 468de: 0f 84 8f db ff ff je 44473 <_IO_vfprintf+0x1b3> 0.00 : 468e4: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 468eb: e8 b0 7f fd ff callq 1e8a0 0.00 : 468f0: e9 7e db ff ff jmpq 44473 <_IO_vfprintf+0x1b3> 0.00 : 468f5: 41 8b 06 mov (%r14),%eax 0.00 : 468f8: 83 f8 30 cmp $0x30,%eax 0.00 : 468fb: 0f 83 7f 18 00 00 jae 48180 <_IO_vfprintf+0x3ec0> 0.00 : 46901: 89 c2 mov %eax,%edx 0.00 : 46903: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 46907: 83 c0 08 add $0x8,%eax 0.00 : 4690a: 41 89 06 mov %eax,(%r14) 0.00 : 4690d: 48 8b 02 mov (%rdx),%rax 0.00 : 46910: 48 85 c0 test %rax,%rax 0.00 : 46913: 0f 84 bd 0c 00 00 je 475d6 <_IO_vfprintf+0x3316> 0.00 : 46919: 48 89 85 c0 f8 ff ff mov %rax,-0x740(%rbp) 0.00 : 46920: c7 85 90 f9 ff ff 00 movl $0x0,-0x670(%rbp) 0.00 : 46927: 00 00 00 0.00 : 4692a: c7 85 a0 f9 ff ff 10 movl $0x10,-0x660(%rbp) 0.00 : 46931: 00 00 00 0.00 : 46934: c7 85 a4 f9 ff ff 01 movl $0x1,-0x65c(%rbp) 0.00 : 4693b: 00 00 00 0.00 : 4693e: c7 85 b4 f9 ff ff 00 movl $0x0,-0x64c(%rbp) 0.00 : 46945: 00 00 00 0.00 : 46948: c6 85 eb f9 ff ff 78 movb $0x78,-0x615(%rbp) 0.00 : 4694f: e9 4d fb ff ff jmpq 464a1 <_IO_vfprintf+0x21e1> 0.00 : 46954: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 46959: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4695e: 0f 83 7e 26 00 00 jae 48fe2 <_IO_vfprintf+0x4d22> 0.00 : 46964: c6 00 25 movb $0x25,(%rax) 0.00 : 46967: 48 83 c0 01 add $0x1,%rax 0.00 : 4696b: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 46970: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 46977: 0f 84 54 ff ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 4697d: 41 83 c5 01 add $0x1,%r13d 0.00 : 46981: e9 0a df ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 46986: 8b 85 c0 f9 ff ff mov -0x640(%rbp),%eax 0.00 : 4698c: 85 c0 test %eax,%eax 0.00 : 4698e: 0f 84 db 0f 00 00 je 4796f <_IO_vfprintf+0x36af> 0.00 : 46994: 41 8b 06 mov (%r14),%eax 0.00 : 46997: 83 f8 30 cmp $0x30,%eax 0.00 : 4699a: 0f 83 be 0f 00 00 jae 4795e <_IO_vfprintf+0x369e> 0.00 : 469a0: 89 c2 mov %eax,%edx 0.00 : 469a2: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 469a6: 83 c0 08 add $0x8,%eax 0.00 : 469a9: 41 89 06 mov %eax,(%r14) 0.00 : 469ac: 48 8b 12 mov (%rdx),%rdx 0.00 : 469af: 48 89 d3 mov %rdx,%rbx 0.00 : 469b2: 48 89 d0 mov %rdx,%rax 0.00 : 469b5: c7 85 a0 f9 ff ff 0a movl $0xa,-0x660(%rbp) 0.00 : 469bc: 00 00 00 0.00 : 469bf: 48 c1 eb 3f shr $0x3f,%rbx 0.00 : 469c3: 48 f7 d8 neg %rax 0.00 : 469c6: 85 db test %ebx,%ebx 0.00 : 469c8: 89 9d 90 f9 ff ff mov %ebx,-0x670(%rbp) 0.00 : 469ce: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : 469d2: 48 89 95 c0 f8 ff ff mov %rdx,-0x740(%rbp) 0.00 : 469d9: e9 c3 fa ff ff jmpq 464a1 <_IO_vfprintf+0x21e1> 0.00 : 469de: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 469e5: 01 0.00 : 469e6: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 469ed: 0f b6 12 movzbl (%rdx),%edx 0.00 : 469f0: 89 d0 mov %edx,%eax 0.00 : 469f2: 88 95 eb f9 ff ff mov %dl,-0x615(%rbp) 0.00 : 469f8: 48 8d 15 db f2 ff ff lea -0xd25(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 469ff: 83 e8 20 sub $0x20,%eax 0.00 : 46a02: 3c 5a cmp $0x5a,%al 0.00 : 46a04: 0f 87 1c f8 ff ff ja 46226 <_IO_vfprintf+0x1f66> 0.00 : 46a0a: e9 eb f7 ff ff jmpq 461fa <_IO_vfprintf+0x1f3a> 0.00 : 46a0f: 48 83 85 48 f9 ff ff addq $0x1,-0x6b8(%rbp) 0.00 : 46a16: 01 0.00 : 46a17: 48 8d 15 bc f2 ff ff lea -0xd44(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 46a1e: 48 8b 8d 48 f9 ff ff mov -0x6b8(%rbp),%rcx 0.00 : 46a25: 0f b6 09 movzbl (%rcx),%ecx 0.00 : 46a28: 89 c8 mov %ecx,%eax 0.00 : 46a2a: 88 8d eb f9 ff ff mov %cl,-0x615(%rbp) 0.00 : 46a30: 83 e8 20 sub $0x20,%eax 0.00 : 46a33: 3c 5a cmp $0x5a,%al 0.00 : 46a35: 0f 87 eb f7 ff ff ja 46226 <_IO_vfprintf+0x1f66> 0.00 : 46a3b: e9 ba f7 ff ff jmpq 461fa <_IO_vfprintf+0x1f3a> 0.00 : 46a40: c7 85 a0 f9 ff ff 0a movl $0xa,-0x660(%rbp) 0.00 : 46a47: 00 00 00 0.00 : 46a4a: e9 04 fa ff ff jmpq 46453 <_IO_vfprintf+0x2193> 0.00 : 46a4f: c7 85 a0 f9 ff ff 08 movl $0x8,-0x660(%rbp) 0.00 : 46a56: 00 00 00 0.00 : 46a59: e9 f5 f9 ff ff jmpq 46453 <_IO_vfprintf+0x2193> 0.00 : 46a5e: 66 90 xchg %ax,%ax 0.00 : 46a60: 48 8b 85 58 f8 ff ff mov -0x7a8(%rbp),%rax 0.00 : 46a67: 48 8b 3d ca b3 32 00 mov 0x32b3ca(%rip),%rdi # 371e38 <_DYNAMIC+0x2d8> 0.00 : 46a6e: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 46a74: c7 04 38 16 00 00 00 movl $0x16,(%rax,%rdi,1) 0.00 : 46a7b: e9 9f da ff ff jmpq 4451f <_IO_vfprintf+0x25f> 0.00 : 46a80: 48 8b 05 e9 0b 33 00 mov 0x330be9(%rip),%rax # 377670 <__libc_pthread_functions+0x170> 0.00 : 46a87: 48 8d bd e0 fe ff ff lea -0x120(%rbp),%rdi 0.00 : 46a8e: 4c 89 e2 mov %r12,%rdx 0.00 : 46a91: 48 c1 c8 11 ror $0x11,%rax 0.00 : 46a95: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 46a9c: 00 00 0.00 : 46a9e: 48 8b 35 a3 b4 32 00 mov 0x32b4a3(%rip),%rsi # 371f48 <_DYNAMIC+0x3e8> 0.00 : 46aa5: ff d0 callq *%rax 0.00 : 46aa7: 41 8b 1c 24 mov (%r12),%ebx 0.00 : 46aab: e9 1a d9 ff ff jmpq 443ca <_IO_vfprintf+0x10a> 0.00 : 46ab0: 8b 85 90 f9 ff ff mov -0x670(%rbp),%eax 0.00 : 46ab6: 85 c0 test %eax,%eax 0.00 : 46ab8: 0f 85 c8 0a 00 00 jne 47586 <_IO_vfprintf+0x32c6> 0.00 : 46abe: 8b 85 b0 f9 ff ff mov -0x650(%rbp),%eax 0.00 : 46ac4: 85 c0 test %eax,%eax 0.00 : 46ac6: 0f 85 f7 0c 00 00 jne 477c3 <_IO_vfprintf+0x3503> 0.00 : 46acc: 8b 85 a8 f9 ff ff mov -0x658(%rbp),%eax 0.00 : 46ad2: 85 c0 test %eax,%eax 0.00 : 46ad4: 0f 85 c0 0e 00 00 jne 4799a <_IO_vfprintf+0x36da> 0.00 : 46ada: 48 83 bd c0 f8 ff ff cmpq $0x0,-0x740(%rbp) 0.00 : 46ae1: 00 0.00 : 46ae2: 74 17 je 46afb <_IO_vfprintf+0x283b> 0.00 : 46ae4: 8b 85 a4 f9 ff ff mov -0x65c(%rbp),%eax 0.00 : 46aea: 85 c0 test %eax,%eax 0.00 : 46aec: 74 0d je 46afb <_IO_vfprintf+0x283b> 0.00 : 46aee: 83 bd a0 f9 ff ff 10 cmpl $0x10,-0x660(%rbp) 0.00 : 46af5: 0f 84 7e 25 00 00 je 49079 <_IO_vfprintf+0x4db9> 0.00 : 46afb: 8b 9d c8 f9 ff ff mov -0x638(%rbp),%ebx 0.00 : 46b01: 85 db test %ebx,%ebx 0.00 : 46b03: 7e 37 jle 46b3c <_IO_vfprintf+0x287c> 0.00 : 46b05: 48 63 95 c8 f9 ff ff movslq -0x638(%rbp),%rdx 0.00 : 46b0c: be 30 00 00 00 mov $0x30,%esi 0.00 : 46b11: 4c 89 e7 mov %r12,%rdi 0.00 : 46b14: e8 27 17 02 00 callq 68240 <_IO_padn> 0.00 : 46b19: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 46b20: 0f 87 7b fc ff ff ja 467a1 <_IO_vfprintf+0x24e1> 0.00 : 46b26: 89 c2 mov %eax,%edx 0.00 : 46b28: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46b2d: 44 29 e8 sub %r13d,%eax 0.00 : 46b30: 39 c2 cmp %eax,%edx 0.00 : 46b32: 0f 87 99 fd ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46b38: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 46b3c: 45 85 ed test %r13d,%r13d 0.00 : 46b3f: 0f 88 bb 21 00 00 js 48d00 <_IO_vfprintf+0x4a40> 0.00 : 46b45: 48 8b 9d 60 f9 ff ff mov -0x6a0(%rbp),%rbx 0.00 : 46b4c: 48 2b 9d 98 fa ff ff sub -0x568(%rbp),%rbx 0.00 : 46b53: 4c 89 fe mov %r15,%rsi 0.00 : 46b56: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 46b5d: 00 0.00 : 46b5e: 4c 89 e7 mov %r12,%rdi 0.00 : 46b61: 48 89 da mov %rbx,%rdx 0.00 : 46b64: ff 50 38 callq *0x38(%rax) 0.00 : 46b67: 48 39 c3 cmp %rax,%rbx 0.00 : 46b6a: 0f 85 61 fd ff ff jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 46b70: 49 63 d5 movslq %r13d,%rdx 0.00 : 46b73: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46b78: 48 29 d0 sub %rdx,%rax 0.00 : 46b7b: 48 39 c3 cmp %rax,%rbx 0.00 : 46b7e: 0f 87 4d fd ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46b84: 8b 8d 98 fa ff ff mov -0x568(%rbp),%ecx 0.00 : 46b8a: 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%edx 0.00 : 46b90: 89 c8 mov %ecx,%eax 0.00 : 46b92: 29 d0 sub %edx,%eax 0.00 : 46b94: 2b 85 c8 f9 ff ff sub -0x638(%rbp),%eax 0.00 : 46b9a: 29 ca sub %ecx,%edx 0.00 : 46b9c: 03 85 b8 fa ff ff add -0x548(%rbp),%eax 0.00 : 46ba2: 42 8d 1c 2a lea (%rdx,%r13,1),%ebx 0.00 : 46ba6: 85 c0 test %eax,%eax 0.00 : 46ba8: 0f 8f 51 06 00 00 jg 471ff <_IO_vfprintf+0x2f3f> 0.00 : 46bae: 41 89 dd mov %ebx,%r13d 0.00 : 46bb1: e9 da dc ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 46bb6: 4c 89 ff mov %r15,%rdi 0.00 : 46bb9: e8 02 10 0a 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 46bbe: 85 c0 test %eax,%eax 0.00 : 46bc0: 0f 85 05 f2 ff ff jne 45dcb <_IO_vfprintf+0x1b0b> 0.00 : 46bc6: 48 89 9d a0 fa ff ff mov %rbx,-0x560(%rbp) 0.00 : 46bcd: c6 85 8b f9 ff ff 01 movb $0x1,-0x675(%rbp) 0.00 : 46bd4: e9 f9 f1 ff ff jmpq 45dd2 <_IO_vfprintf+0x1b12> 0.00 : 46bd9: 8b 85 20 fa ff ff mov -0x5e0(%rbp),%eax 0.00 : 46bdf: 85 c0 test %eax,%eax 0.00 : 46be1: 0f 85 66 09 00 00 jne 4754d <_IO_vfprintf+0x328d> 0.00 : 46be7: 8b 85 4c fa ff ff mov -0x5b4(%rbp),%eax 0.00 : 46bed: 85 c0 test %eax,%eax 0.00 : 46bef: 0f 85 f3 13 00 00 jne 47fe8 <_IO_vfprintf+0x3d28> 0.00 : 46bf5: 8b 85 44 fa ff ff mov -0x5bc(%rbp),%eax 0.00 : 46bfb: 85 c0 test %eax,%eax 0.00 : 46bfd: 0f 85 cb 10 00 00 jne 47cce <_IO_vfprintf+0x3a0e> 0.00 : 46c03: 48 83 bd 08 f9 ff ff cmpq $0x0,-0x6f8(%rbp) 0.00 : 46c0a: 00 0.00 : 46c0b: 74 17 je 46c24 <_IO_vfprintf+0x2964> 0.00 : 46c0d: 8b 85 40 fa ff ff mov -0x5c0(%rbp),%eax 0.00 : 46c13: 85 c0 test %eax,%eax 0.00 : 46c15: 74 0d je 46c24 <_IO_vfprintf+0x2964> 0.00 : 46c17: 83 bd 3c fa ff ff 10 cmpl $0x10,-0x5c4(%rbp) 0.00 : 46c1e: 0f 84 9d 16 00 00 je 482c1 <_IO_vfprintf+0x4001> 0.00 : 46c24: 8b 9d bc fa ff ff mov -0x544(%rbp),%ebx 0.00 : 46c2a: 85 db test %ebx,%ebx 0.00 : 46c2c: 7e 37 jle 46c65 <_IO_vfprintf+0x29a5> 0.00 : 46c2e: 48 63 95 bc fa ff ff movslq -0x544(%rbp),%rdx 0.00 : 46c35: be 30 00 00 00 mov $0x30,%esi 0.00 : 46c3a: 4c 89 e7 mov %r12,%rdi 0.00 : 46c3d: e8 fe 15 02 00 callq 68240 <_IO_padn> 0.00 : 46c42: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 46c49: 0f 87 48 f6 ff ff ja 46297 <_IO_vfprintf+0x1fd7> 0.00 : 46c4f: 89 c2 mov %eax,%edx 0.00 : 46c51: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46c56: 44 29 e8 sub %r13d,%eax 0.00 : 46c59: 39 c2 cmp %eax,%edx 0.00 : 46c5b: 0f 87 70 fc ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46c61: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 46c65: 45 85 ed test %r13d,%r13d 0.00 : 46c68: 0f 88 15 27 00 00 js 49383 <_IO_vfprintf+0x50c3> 0.00 : 46c6e: 48 8b 9d 60 f9 ff ff mov -0x6a0(%rbp),%rbx 0.00 : 46c75: 48 2b 9d d0 fa ff ff sub -0x530(%rbp),%rbx 0.00 : 46c7c: 4c 89 fe mov %r15,%rsi 0.00 : 46c7f: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 46c86: 00 0.00 : 46c87: 4c 89 e7 mov %r12,%rdi 0.00 : 46c8a: 48 89 da mov %rbx,%rdx 0.00 : 46c8d: ff 50 38 callq *0x38(%rax) 0.00 : 46c90: 48 39 c3 cmp %rax,%rbx 0.00 : 46c93: 0f 85 38 fc ff ff jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 46c99: 49 63 d5 movslq %r13d,%rdx 0.00 : 46c9c: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46ca1: 48 29 d0 sub %rdx,%rax 0.00 : 46ca4: 48 39 c3 cmp %rax,%rbx 0.00 : 46ca7: 0f 87 24 fc ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46cad: 8b 8d d0 fa ff ff mov -0x530(%rbp),%ecx 0.00 : 46cb3: 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%edx 0.00 : 46cb9: 89 c8 mov %ecx,%eax 0.00 : 46cbb: 29 d0 sub %edx,%eax 0.00 : 46cbd: 2b 85 bc fa ff ff sub -0x544(%rbp),%eax 0.00 : 46cc3: 29 ca sub %ecx,%edx 0.00 : 46cc5: 03 85 64 fa ff ff add -0x59c(%rbp),%eax 0.00 : 46ccb: 42 8d 1c 2a lea (%rdx,%r13,1),%ebx 0.00 : 46ccf: 41 89 dd mov %ebx,%r13d 0.00 : 46cd2: 85 c0 test %eax,%eax 0.00 : 46cd4: 0f 8e e6 dd ff ff jle 44ac0 <_IO_vfprintf+0x800> 0.00 : 46cda: 48 63 d0 movslq %eax,%rdx 0.00 : 46cdd: be 20 00 00 00 mov $0x20,%esi 0.00 : 46ce2: 4c 89 e7 mov %r12,%rdi 0.00 : 46ce5: e8 56 15 02 00 callq 68240 <_IO_padn> 0.00 : 46cea: 81 fb fe ff ff 7f cmp $0x7ffffffe,%ebx 0.00 : 46cf0: 0f 87 a1 f5 ff ff ja 46297 <_IO_vfprintf+0x1fd7> 0.00 : 46cf6: 89 c2 mov %eax,%edx 0.00 : 46cf8: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 46cfd: 29 d8 sub %ebx,%eax 0.00 : 46cff: 39 c2 cmp %eax,%edx 0.00 : 46d01: 0f 87 ca fb ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 46d07: 44 8d 2c 1a lea (%rdx,%rbx,1),%r13d 0.00 : 46d0b: e9 b0 dd ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 46d10: 48 89 df mov %rbx,%rdi 0.00 : 46d13: e8 a8 0e 0a 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 46d18: 85 c0 test %eax,%eax 0.00 : 46d1a: 0f 85 ee 02 00 00 jne 4700e <_IO_vfprintf+0x2d4e> 0.00 : 46d20: 48 89 df mov %rbx,%rdi 0.00 : 46d23: e8 28 7b fd ff callq 1e850 0.00 : 46d28: 48 85 c0 test %rax,%rax 0.00 : 46d2b: 48 89 85 78 f9 ff ff mov %rax,-0x688(%rbp) 0.00 : 46d32: 48 89 85 08 fa ff ff mov %rax,-0x5f8(%rbp) 0.00 : 46d39: 0f 85 ea 02 00 00 jne 47029 <_IO_vfprintf+0x2d69> 0.00 : 46d3f: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 46d45: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 46d4c: 00 00 00 00 0.00 : 46d50: e9 82 fb ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 46d55: c6 85 72 fa ff ff 20 movb $0x20,-0x58e(%rbp) 0.00 : 46d5c: 31 c9 xor %ecx,%ecx 0.00 : 46d5e: 80 bd 73 fa ff ff 58 cmpb $0x58,-0x58d(%rbp) 0.00 : 46d65: 8b 95 3c fa ff ff mov -0x5c4(%rbp),%edx 0.00 : 46d6b: 48 8b b5 60 f9 ff ff mov -0x6a0(%rbp),%rsi 0.00 : 46d72: 48 8b bd 08 f9 ff ff mov -0x6f8(%rbp),%rdi 0.00 : 46d79: 0f 94 c1 sete %cl 0.00 : 46d7c: e8 4f cf ff ff callq 43cd0 <_itoa_word> 0.00 : 46d81: 44 8b 8d 50 fa ff ff mov -0x5b0(%rbp),%r9d 0.00 : 46d88: 49 89 c7 mov %rax,%r15 0.00 : 46d8b: 45 85 c9 test %r9d,%r9d 0.00 : 46d8e: 74 2a je 46dba <_IO_vfprintf+0x2afa> 0.00 : 46d90: 48 83 bd 40 f9 ff ff cmpq $0x0,-0x6c0(%rbp) 0.00 : 46d97: 00 0.00 : 46d98: 74 20 je 46dba <_IO_vfprintf+0x2afa> 0.00 : 46d9a: 48 8b 8d 38 f9 ff ff mov -0x6c8(%rbp),%rcx 0.00 : 46da1: 48 8b 95 40 f9 ff ff mov -0x6c0(%rbp),%rdx 0.00 : 46da8: 48 89 c7 mov %rax,%rdi 0.00 : 46dab: 48 8b b5 60 f9 ff ff mov -0x6a0(%rbp),%rsi 0.00 : 46db2: e8 39 d1 ff ff callq 43ef0 0.00 : 46db7: 49 89 c7 mov %rax,%r15 0.00 : 46dba: 44 8b 85 6c fa ff ff mov -0x594(%rbp),%r8d 0.00 : 46dc1: 45 85 c0 test %r8d,%r8d 0.00 : 46dc4: 74 1e je 46de4 <_IO_vfprintf+0x2b24> 0.00 : 46dc6: 83 bd 3c fa ff ff 0a cmpl $0xa,-0x5c4(%rbp) 0.00 : 46dcd: 75 15 jne 46de4 <_IO_vfprintf+0x2b24> 0.00 : 46dcf: 48 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%rdx 0.00 : 46dd6: 4c 89 ff mov %r15,%rdi 0.00 : 46dd9: 48 89 d6 mov %rdx,%rsi 0.00 : 46ddc: e8 3f d2 ff ff callq 44020 <_i18n_number_rewrite> 0.00 : 46de1: 49 89 c7 mov %rax,%r15 0.00 : 46de4: 48 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%rdx 0.00 : 46deb: 48 63 85 68 fa ff ff movslq -0x598(%rbp),%rax 0.00 : 46df2: 4c 89 bd d0 fa ff ff mov %r15,-0x530(%rbp) 0.00 : 46df9: 4c 29 fa sub %r15,%rdx 0.00 : 46dfc: 48 39 d0 cmp %rdx,%rax 0.00 : 46dff: 0f 8f 56 f1 ff ff jg 45f5b <_IO_vfprintf+0x1c9b> 0.00 : 46e05: 48 83 bd 08 f9 ff ff cmpq $0x0,-0x6f8(%rbp) 0.00 : 46e0c: 00 0.00 : 46e0d: 0f 84 48 f1 ff ff je 45f5b <_IO_vfprintf+0x1c9b> 0.00 : 46e13: 8b bd 40 fa ff ff mov -0x5c0(%rbp),%edi 0.00 : 46e19: 85 ff test %edi,%edi 0.00 : 46e1b: 0f 84 3a f1 ff ff je 45f5b <_IO_vfprintf+0x1c9b> 0.00 : 46e21: 83 bd 3c fa ff ff 08 cmpl $0x8,-0x5c4(%rbp) 0.00 : 46e28: 0f 85 2d f1 ff ff jne 45f5b <_IO_vfprintf+0x1c9b> 0.00 : 46e2e: 49 83 ef 01 sub $0x1,%r15 0.00 : 46e32: 41 c6 07 30 movb $0x30,(%r15) 0.00 : 46e36: 4c 89 bd d0 fa ff ff mov %r15,-0x530(%rbp) 0.00 : 46e3d: e9 19 f1 ff ff jmpq 45f5b <_IO_vfprintf+0x1c9b> 0.00 : 46e42: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 46e49: 31 c9 xor %ecx,%ecx 0.00 : 46e4b: 80 bd eb f9 ff ff 58 cmpb $0x58,-0x615(%rbp) 0.00 : 46e52: 8b 95 a0 f9 ff ff mov -0x660(%rbp),%edx 0.00 : 46e58: 48 8b b5 60 f9 ff ff mov -0x6a0(%rbp),%rsi 0.00 : 46e5f: 48 8b bd c0 f8 ff ff mov -0x740(%rbp),%rdi 0.00 : 46e66: 0f 94 c1 sete %cl 0.00 : 46e69: e8 62 ce ff ff callq 43cd0 <_itoa_word> 0.00 : 46e6e: 44 8b 85 b4 f9 ff ff mov -0x64c(%rbp),%r8d 0.00 : 46e75: 49 89 c7 mov %rax,%r15 0.00 : 46e78: 45 85 c0 test %r8d,%r8d 0.00 : 46e7b: 74 2a je 46ea7 <_IO_vfprintf+0x2be7> 0.00 : 46e7d: 48 83 bd 40 f9 ff ff cmpq $0x0,-0x6c0(%rbp) 0.00 : 46e84: 00 0.00 : 46e85: 74 20 je 46ea7 <_IO_vfprintf+0x2be7> 0.00 : 46e87: 48 8b 8d 38 f9 ff ff mov -0x6c8(%rbp),%rcx 0.00 : 46e8e: 48 8b 95 40 f9 ff ff mov -0x6c0(%rbp),%rdx 0.00 : 46e95: 48 89 c7 mov %rax,%rdi 0.00 : 46e98: 48 8b b5 60 f9 ff ff mov -0x6a0(%rbp),%rsi 0.00 : 46e9f: e8 4c d0 ff ff callq 43ef0 0.00 : 46ea4: 49 89 c7 mov %rax,%r15 0.00 : 46ea7: 8b bd cc f9 ff ff mov -0x634(%rbp),%edi 0.00 : 46ead: 85 ff test %edi,%edi 0.00 : 46eaf: 74 1e je 46ecf <_IO_vfprintf+0x2c0f> 0.00 : 46eb1: 83 bd a0 f9 ff ff 0a cmpl $0xa,-0x660(%rbp) 0.00 : 46eb8: 75 15 jne 46ecf <_IO_vfprintf+0x2c0f> 0.00 : 46eba: 48 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%rdx 0.00 : 46ec1: 4c 89 ff mov %r15,%rdi 0.00 : 46ec4: 48 89 d6 mov %rdx,%rsi 0.00 : 46ec7: e8 54 d1 ff ff callq 44020 <_i18n_number_rewrite> 0.00 : 46ecc: 49 89 c7 mov %rax,%r15 0.00 : 46ecf: 48 8b 95 60 f9 ff ff mov -0x6a0(%rbp),%rdx 0.00 : 46ed6: 48 63 85 ec fa ff ff movslq -0x514(%rbp),%rax 0.00 : 46edd: 4c 89 bd 98 fa ff ff mov %r15,-0x568(%rbp) 0.00 : 46ee4: 4c 29 fa sub %r15,%rdx 0.00 : 46ee7: 48 39 d0 cmp %rdx,%rax 0.00 : 46eea: 0f 8f f9 f5 ff ff jg 464e9 <_IO_vfprintf+0x2229> 0.00 : 46ef0: 48 83 bd c0 f8 ff ff cmpq $0x0,-0x740(%rbp) 0.00 : 46ef7: 00 0.00 : 46ef8: 0f 84 eb f5 ff ff je 464e9 <_IO_vfprintf+0x2229> 0.00 : 46efe: 8b b5 a4 f9 ff ff mov -0x65c(%rbp),%esi 0.00 : 46f04: 85 f6 test %esi,%esi 0.00 : 46f06: 0f 84 dd f5 ff ff je 464e9 <_IO_vfprintf+0x2229> 0.00 : 46f0c: 83 bd a0 f9 ff ff 08 cmpl $0x8,-0x660(%rbp) 0.00 : 46f13: 0f 85 d0 f5 ff ff jne 464e9 <_IO_vfprintf+0x2229> 0.00 : 46f19: 49 83 ef 01 sub $0x1,%r15 0.00 : 46f1d: 41 c6 07 30 movb $0x30,(%r15) 0.00 : 46f21: 4c 89 bd 98 fa ff ff mov %r15,-0x568(%rbp) 0.00 : 46f28: e9 bc f5 ff ff jmpq 464e9 <_IO_vfprintf+0x2229> 0.00 : 46f2d: c7 85 ec fa ff ff 01 movl $0x1,-0x514(%rbp) 0.00 : 46f34: 00 00 00 0.00 : 46f37: e9 0d ff ff ff jmpq 46e49 <_IO_vfprintf+0x2b89> 0.00 : 46f3c: 44 8b 9d c4 f9 ff ff mov -0x63c(%rbp),%r11d 0.00 : 46f43: 45 85 db test %r11d,%r11d 0.00 : 46f46: 0f 84 2f 04 00 00 je 4737b <_IO_vfprintf+0x30bb> 0.00 : 46f4c: 41 8b 06 mov (%r14),%eax 0.00 : 46f4f: 83 f8 30 cmp $0x30,%eax 0.00 : 46f52: 0f 83 53 0b 00 00 jae 47aab <_IO_vfprintf+0x37eb> 0.00 : 46f58: 89 c2 mov %eax,%edx 0.00 : 46f5a: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 46f5e: 83 c0 08 add $0x8,%eax 0.00 : 46f61: 41 89 06 mov %eax,(%r14) 0.00 : 46f64: 0f b6 12 movzbl (%rdx),%edx 0.00 : 46f67: c7 85 90 f9 ff ff 00 movl $0x0,-0x670(%rbp) 0.00 : 46f6e: 00 00 00 0.00 : 46f71: c7 85 a8 f9 ff ff 00 movl $0x0,-0x658(%rbp) 0.00 : 46f78: 00 00 00 0.00 : 46f7b: c7 85 b0 f9 ff ff 00 movl $0x0,-0x650(%rbp) 0.00 : 46f82: 00 00 00 0.00 : 46f85: 48 89 95 c0 f8 ff ff mov %rdx,-0x740(%rbp) 0.00 : 46f8c: e9 10 f5 ff ff jmpq 464a1 <_IO_vfprintf+0x21e1> 0.00 : 46f91: 48 c7 85 58 f9 ff ff movq $0x0,-0x6a8(%rbp) 0.00 : 46f98: 00 00 00 00 0.00 : 46f9c: e9 36 f9 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 46fa1: 48 8b bd f8 f9 ff ff mov -0x608(%rbp),%rdi 0.00 : 46fa8: 48 8b 85 a0 fa ff ff mov -0x560(%rbp),%rax 0.00 : 46faf: 48 89 bd e0 fa ff ff mov %rdi,-0x520(%rbp) 0.00 : 46fb6: 48 89 85 80 f9 ff ff mov %rax,-0x680(%rbp) 0.00 : 46fbd: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 46fc1: 48 39 85 00 fa ff ff cmp %rax,-0x600(%rbp) 0.00 : 46fc8: 48 0f 43 85 00 fa ff cmovae -0x600(%rbp),%rax 0.00 : 46fcf: ff 0.00 : 46fd0: 48 89 85 b0 fa ff ff mov %rax,-0x550(%rbp) 0.00 : 46fd7: 48 b8 aa aa aa aa aa movabs $0xaaaaaaaaaaaaaaa,%rax 0.00 : 46fde: aa aa 0a 0.00 : 46fe1: 48 39 85 b0 fa ff ff cmp %rax,-0x550(%rbp) 0.00 : 46fe8: 0f 87 51 fd ff ff ja 46d3f <_IO_vfprintf+0x2a7f> 0.00 : 46fee: 48 8b 95 b0 fa ff ff mov -0x550(%rbp),%rdx 0.00 : 46ff5: 48 8d 04 52 lea (%rdx,%rdx,2),%rax 0.00 : 46ff9: 48 8d 1c c5 00 00 00 lea 0x0(,%rax,8),%rbx 0.00 : 47000: 00 0.00 : 47001: 48 81 fb 00 10 00 00 cmp $0x1000,%rbx 0.00 : 47008: 0f 87 02 fd ff ff ja 46d10 <_IO_vfprintf+0x2a50> 0.00 : 4700e: 48 8d 43 1e lea 0x1e(%rbx),%rax 0.00 : 47012: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 47016: 48 29 c4 sub %rax,%rsp 0.00 : 47019: 48 8d 4c 24 0f lea 0xf(%rsp),%rcx 0.00 : 4701e: 48 83 e1 f0 and $0xfffffffffffffff0,%rcx 0.00 : 47022: 48 89 8d 08 fa ff ff mov %rcx,-0x5f8(%rbp) 0.00 : 47029: 48 8b 85 b0 fa ff ff mov -0x550(%rbp),%rax 0.00 : 47030: 48 8b 95 b0 fa ff ff mov -0x550(%rbp),%rdx 0.00 : 47037: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4703b: 48 03 85 08 fa ff ff add -0x5f8(%rbp),%rax 0.00 : 47042: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 47046: 48 89 85 10 fa ff ff mov %rax,-0x5f0(%rbp) 0.00 : 4704d: 48 01 d0 add %rdx,%rax 0.00 : 47050: 48 89 85 18 fa ff ff mov %rax,-0x5e8(%rbp) 0.00 : 47057: 41 8b 44 24 74 mov 0x74(%r12),%eax 0.00 : 4705c: 48 8b bd 18 fa ff ff mov -0x5e8(%rbp),%rdi 0.00 : 47063: 83 e0 04 and $0x4,%eax 0.00 : 47066: 83 f8 01 cmp $0x1,%eax 0.00 : 47069: 19 f6 sbb %esi,%esi 0.00 : 4706b: f7 d6 not %esi 0.00 : 4706d: e8 fe c3 03 00 callq 83470 <__GI_memset> 0.00 : 47072: 48 83 bd e0 fa ff ff cmpq $0x0,-0x520(%rbp) 0.00 : 47079: 00 0.00 : 4707a: 0f 84 ab 00 00 00 je 4712b <_IO_vfprintf+0x2e6b> 0.00 : 47080: 48 8b 9d a0 fa ff ff mov -0x560(%rbp),%rbx 0.00 : 47087: 45 31 ff xor %r15d,%r15d 0.00 : 4708a: eb 3c jmp 470c8 <_IO_vfprintf+0x2e08> 0.00 : 4708c: 48 63 53 30 movslq 0x30(%rbx),%rdx 0.00 : 47090: 48 8b 8d 10 fa ff ff mov -0x5f0(%rbp),%rcx 0.00 : 47097: 48 89 df mov %rbx,%rdi 0.00 : 4709a: 4c 63 43 08 movslq 0x8(%rbx),%r8 0.00 : 4709e: 48 8b 05 4b bd 32 00 mov 0x32bd4b(%rip),%rax # 372df0 <__printf_arginfo_table> 0.00 : 470a5: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 470a9: 48 01 d1 add %rdx,%rcx 0.00 : 470ac: 48 03 95 18 fa ff ff add -0x5e8(%rbp),%rdx 0.00 : 470b3: 42 ff 14 c0 callq *(%rax,%r8,8) 0.00 : 470b7: 49 83 c7 01 add $0x1,%r15 0.00 : 470bb: 48 83 c3 48 add $0x48,%rbx 0.00 : 470bf: 4c 3b bd e0 fa ff ff cmp -0x520(%rbp),%r15 0.00 : 470c6: 73 63 jae 4712b <_IO_vfprintf+0x2e6b> 0.00 : 470c8: 8b 43 2c mov 0x2c(%rbx),%eax 0.00 : 470cb: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 470ce: 74 10 je 470e0 <_IO_vfprintf+0x2e20> 0.00 : 470d0: 48 8b bd 18 fa ff ff mov -0x5e8(%rbp),%rdi 0.00 : 470d7: 48 98 cltq 0.00 : 470d9: c7 04 87 00 00 00 00 movl $0x0,(%rdi,%rax,4) 0.00 : 470e0: 8b 43 28 mov 0x28(%rbx),%eax 0.00 : 470e3: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 470e6: 74 10 je 470f8 <_IO_vfprintf+0x2e38> 0.00 : 470e8: 48 8b 95 18 fa ff ff mov -0x5e8(%rbp),%rdx 0.00 : 470ef: 48 98 cltq 0.00 : 470f1: c7 04 82 00 00 00 00 movl $0x0,(%rdx,%rax,4) 0.00 : 470f8: 48 8b 73 38 mov 0x38(%rbx),%rsi 0.00 : 470fc: 48 85 f6 test %rsi,%rsi 0.00 : 470ff: 74 b6 je 470b7 <_IO_vfprintf+0x2df7> 0.00 : 47101: 48 83 fe 01 cmp $0x1,%rsi 0.00 : 47105: 75 85 jne 4708c <_IO_vfprintf+0x2dcc> 0.00 : 47107: 48 63 53 30 movslq 0x30(%rbx),%rdx 0.00 : 4710b: 8b 43 34 mov 0x34(%rbx),%eax 0.00 : 4710e: 48 8b 8d 18 fa ff ff mov -0x5e8(%rbp),%rcx 0.00 : 47115: 89 04 91 mov %eax,(%rcx,%rdx,4) 0.00 : 47118: 48 63 53 30 movslq 0x30(%rbx),%rdx 0.00 : 4711c: 8b 43 40 mov 0x40(%rbx),%eax 0.00 : 4711f: 48 8b bd 10 fa ff ff mov -0x5f0(%rbp),%rdi 0.00 : 47126: 89 04 97 mov %eax,(%rdi,%rdx,4) 0.00 : 47129: eb 8c jmp 470b7 <_IO_vfprintf+0x2df7> 0.00 : 4712b: 48 83 bd b0 fa ff ff cmpq $0x0,-0x550(%rbp) 0.00 : 47132: 00 0.00 : 47133: 0f 84 08 da ff ff je 44b41 <_IO_vfprintf+0x881> 0.00 : 47139: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 47140: 45 31 ff xor %r15d,%r15d 0.00 : 47143: eb 48 jmp 4718d <_IO_vfprintf+0x2ecd> 0.00 : 47145: 83 f8 03 cmp $0x3,%eax 0.00 : 47148: 7d 7c jge 471c6 <_IO_vfprintf+0x2f06> 0.00 : 4714a: 83 f8 01 cmp $0x1,%eax 0.00 : 4714d: 0f 8e 19 0e 00 00 jle 47f6c <_IO_vfprintf+0x3cac> 0.00 : 47153: 8b 85 00 ff ff ff mov -0x100(%rbp),%eax 0.00 : 47159: 83 f8 30 cmp $0x30,%eax 0.00 : 4715c: 0f 83 5d 04 00 00 jae 475bf <_IO_vfprintf+0x32ff> 0.00 : 47162: 89 c2 mov %eax,%edx 0.00 : 47164: 48 03 95 10 ff ff ff add -0xf0(%rbp),%rdx 0.00 : 4716b: 83 c0 08 add $0x8,%eax 0.00 : 4716e: 89 85 00 ff ff ff mov %eax,-0x100(%rbp) 0.00 : 47174: 8b 02 mov (%rdx),%eax 0.00 : 47176: 89 03 mov %eax,(%rbx) 0.00 : 47178: 49 83 c7 01 add $0x1,%r15 0.00 : 4717c: 48 83 c3 10 add $0x10,%rbx 0.00 : 47180: 4c 39 bd b0 fa ff ff cmp %r15,-0x550(%rbp) 0.00 : 47187: 0f 86 b4 d9 ff ff jbe 44b41 <_IO_vfprintf+0x881> 0.00 : 4718d: 48 8b 95 18 fa ff ff mov -0x5e8(%rbp),%rdx 0.00 : 47194: 42 8b 04 ba mov (%rdx,%r15,4),%eax 0.00 : 47198: 83 f8 05 cmp $0x5,%eax 0.00 : 4719b: 7e a8 jle 47145 <_IO_vfprintf+0x2e85> 0.00 : 4719d: 3d 00 01 00 00 cmp $0x100,%eax 0.00 : 471a2: 74 22 je 471c6 <_IO_vfprintf+0x2f06> 0.00 : 471a4: 0f 8f 8b 00 00 00 jg 47235 <_IO_vfprintf+0x2f75> 0.00 : 471aa: 83 f8 07 cmp $0x7,%eax 0.00 : 471ad: 0f 1f 00 nopl (%rax) 0.00 : 471b0: 0f 8e 9d 01 00 00 jle 47353 <_IO_vfprintf+0x3093> 0.00 : 471b6: f6 c4 08 test $0x8,%ah 0.00 : 471b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 471c0: 0f 84 c3 10 00 00 je 48289 <_IO_vfprintf+0x3fc9> 0.00 : 471c6: 8b 85 00 ff ff ff mov -0x100(%rbp),%eax 0.00 : 471cc: 83 f8 30 cmp $0x30,%eax 0.00 : 471cf: 73 1a jae 471eb <_IO_vfprintf+0x2f2b> 0.00 : 471d1: 89 c2 mov %eax,%edx 0.00 : 471d3: 48 03 95 10 ff ff ff add -0xf0(%rbp),%rdx 0.00 : 471da: 83 c0 08 add $0x8,%eax 0.00 : 471dd: 89 85 00 ff ff ff mov %eax,-0x100(%rbp) 0.00 : 471e3: 48 8b 02 mov (%rdx),%rax 0.00 : 471e6: 48 89 03 mov %rax,(%rbx) 0.00 : 471e9: eb 8d jmp 47178 <_IO_vfprintf+0x2eb8> 0.00 : 471eb: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 471f2: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 471f6: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 471fd: eb e4 jmp 471e3 <_IO_vfprintf+0x2f23> 0.00 : 471ff: 48 63 d0 movslq %eax,%rdx 0.00 : 47202: be 20 00 00 00 mov $0x20,%esi 0.00 : 47207: 4c 89 e7 mov %r12,%rdi 0.00 : 4720a: e8 31 10 02 00 callq 68240 <_IO_padn> 0.00 : 4720f: 81 fb fe ff ff 7f cmp $0x7ffffffe,%ebx 0.00 : 47215: 0f 87 86 f5 ff ff ja 467a1 <_IO_vfprintf+0x24e1> 0.00 : 4721b: 89 c2 mov %eax,%edx 0.00 : 4721d: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 47222: 29 d8 sub %ebx,%eax 0.00 : 47224: 39 c2 cmp %eax,%edx 0.00 : 47226: 0f 87 a5 f6 ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 4722c: 44 8d 2c 1a lea (%rdx,%rbx,1),%r13d 0.00 : 47230: e9 5b d6 ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 47235: 3d 00 02 00 00 cmp $0x200,%eax 0.00 : 4723a: 74 8a je 471c6 <_IO_vfprintf+0x2f06> 0.00 : 4723c: 3d 00 04 00 00 cmp $0x400,%eax 0.00 : 47241: 0f 84 0c ff ff ff je 47153 <_IO_vfprintf+0x2e93> 0.00 : 47247: 3d 07 01 00 00 cmp $0x107,%eax 0.00 : 4724c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 47250: 0f 85 60 ff ff ff jne 471b6 <_IO_vfprintf+0x2ef6> 0.00 : 47256: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : 4725d: 48 83 c0 0f add $0xf,%rax 0.00 : 47261: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 47265: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 47269: 48 89 95 08 ff ff ff mov %rdx,-0xf8(%rbp) 0.00 : 47270: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 47273: 48 8b 00 mov (%rax),%rax 0.00 : 47276: 89 53 08 mov %edx,0x8(%rbx) 0.00 : 47279: 48 89 03 mov %rax,(%rbx) 0.00 : 4727c: e9 f7 fe ff ff jmpq 47178 <_IO_vfprintf+0x2eb8> 0.00 : 47281: c7 85 68 fa ff ff 01 movl $0x1,-0x598(%rbp) 0.00 : 47288: 00 00 00 0.00 : 4728b: e9 cc fa ff ff jmpq 46d5c <_IO_vfprintf+0x2a9c> 0.00 : 47290: 8b 9d 5c fa ff ff mov -0x5a4(%rbp),%ebx 0.00 : 47296: 85 db test %ebx,%ebx 0.00 : 47298: 0f 84 57 05 00 00 je 477f5 <_IO_vfprintf+0x3535> 0.00 : 4729e: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 472a5: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 472aa: 48 8b 95 08 fa ff ff mov -0x5f8(%rbp),%rdx 0.00 : 472b1: 48 c1 e0 04 shl $0x4,%rax 0.00 : 472b5: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 0.00 : 472b9: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 472c0: 00 00 00 0.00 : 472c3: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 472ca: 00 00 00 0.00 : 472cd: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 472d4: 00 00 00 0.00 : 472d7: 48 89 85 08 f9 ff ff mov %rax,-0x6f8(%rbp) 0.00 : 472de: e9 30 ec ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 472e3: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 472e8: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 472ed: 0f 83 28 1e 00 00 jae 4911b <_IO_vfprintf+0x4e5b> 0.00 : 472f3: c6 00 2d movb $0x2d,(%rax) 0.00 : 472f6: 48 83 c0 01 add $0x1,%rax 0.00 : 472fa: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 472ff: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 47306: 0f 84 c5 f5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 4730c: 41 83 c5 01 add $0x1,%r13d 0.00 : 47310: e9 9c f2 ff ff jmpq 465b1 <_IO_vfprintf+0x22f1> 0.00 : 47315: 85 db test %ebx,%ebx 0.00 : 47317: 7e 33 jle 4734c <_IO_vfprintf+0x308c> 0.00 : 47319: 48 63 d3 movslq %ebx,%rdx 0.00 : 4731c: be 20 00 00 00 mov $0x20,%esi 0.00 : 47321: 4c 89 e7 mov %r12,%rdi 0.00 : 47324: e8 17 0f 02 00 callq 68240 <_IO_padn> 0.00 : 47329: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 47330: 0f 87 6b f4 ff ff ja 467a1 <_IO_vfprintf+0x24e1> 0.00 : 47336: 89 c2 mov %eax,%edx 0.00 : 47338: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 4733d: 44 29 e8 sub %r13d,%eax 0.00 : 47340: 39 c2 cmp %eax,%edx 0.00 : 47342: 0f 87 89 f5 ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 47348: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 4734c: 31 db xor %ebx,%ebx 0.00 : 4734e: e9 34 f2 ff ff jmpq 46587 <_IO_vfprintf+0x22c7> 0.00 : 47353: 8b 85 04 ff ff ff mov -0xfc(%rbp),%eax 0.00 : 47359: 3d b0 00 00 00 cmp $0xb0,%eax 0.00 : 4735e: 0f 83 87 fe ff ff jae 471eb <_IO_vfprintf+0x2f2b> 0.00 : 47364: 89 c2 mov %eax,%edx 0.00 : 47366: 83 c0 10 add $0x10,%eax 0.00 : 47369: 48 03 95 10 ff ff ff add -0xf0(%rbp),%rdx 0.00 : 47370: 89 85 04 ff ff ff mov %eax,-0xfc(%rbp) 0.00 : 47376: e9 68 fe ff ff jmpq 471e3 <_IO_vfprintf+0x2f23> 0.00 : 4737b: 44 8b 95 bc f9 ff ff mov -0x644(%rbp),%r10d 0.00 : 47382: 45 85 d2 test %r10d,%r10d 0.00 : 47385: 0f 85 9d 07 00 00 jne 47b28 <_IO_vfprintf+0x3868> 0.00 : 4738b: 41 8b 06 mov (%r14),%eax 0.00 : 4738e: 83 f8 30 cmp $0x30,%eax 0.00 : 47391: 0f 83 36 19 00 00 jae 48ccd <_IO_vfprintf+0x4a0d> 0.00 : 47397: 89 c2 mov %eax,%edx 0.00 : 47399: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 4739d: 83 c0 08 add $0x8,%eax 0.00 : 473a0: 41 89 06 mov %eax,(%r14) 0.00 : 473a3: 8b 12 mov (%rdx),%edx 0.00 : 473a5: c7 85 90 f9 ff ff 00 movl $0x0,-0x670(%rbp) 0.00 : 473ac: 00 00 00 0.00 : 473af: c7 85 a8 f9 ff ff 00 movl $0x0,-0x658(%rbp) 0.00 : 473b6: 00 00 00 0.00 : 473b9: c7 85 b0 f9 ff ff 00 movl $0x0,-0x650(%rbp) 0.00 : 473c0: 00 00 00 0.00 : 473c3: 48 89 95 c0 f8 ff ff mov %rdx,-0x740(%rbp) 0.00 : 473ca: e9 d2 f0 ff ff jmpq 464a1 <_IO_vfprintf+0x21e1> 0.00 : 473cf: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 473d3: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 473d7: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 473db: e9 99 f0 ff ff jmpq 46479 <_IO_vfprintf+0x21b9> 0.00 : 473e0: 83 bd 68 fa ff ff 04 cmpl $0x4,-0x598(%rbp) 0.00 : 473e7: b8 05 00 00 00 mov $0x5,%eax 0.00 : 473ec: 4c 8d 3d ee 38 0f 00 lea 0xf38ee(%rip),%r15 # 13ace1 <__PRETTY_FUNCTION__.9779+0x95> 0.00 : 473f3: 0f 4f 85 68 fa ff ff cmovg -0x598(%rbp),%eax 0.00 : 473fa: 89 85 68 fa ff ff mov %eax,-0x598(%rbp) 0.00 : 47400: 80 bd 73 fa ff ff 53 cmpb $0x53,-0x58d(%rbp) 0.00 : 47407: 0f 84 19 db ff ff je 44f26 <_IO_vfprintf+0xc66> 0.00 : 4740d: 83 bd 68 fa ff ff ff cmpl $0xffffffff,-0x598(%rbp) 0.00 : 47414: 0f 84 b7 16 00 00 je 48ad1 <_IO_vfprintf+0x4811> 0.00 : 4741a: 48 8b 05 67 a9 32 00 mov 0x32a967(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 47421: 48 8b bd 58 f8 ff ff mov -0x7a8(%rbp),%rdi 0.00 : 47428: 48 8b 04 07 mov (%rdi,%rax,1),%rax 0.00 : 4742c: 48 8b 00 mov (%rax),%rax 0.00 : 4742f: 83 b8 a8 00 00 00 01 cmpl $0x1,0xa8(%rax) 0.00 : 47436: 0f 84 80 06 00 00 je 47abc <_IO_vfprintf+0x37fc> 0.00 : 4743c: 81 bd 68 fa ff ff 00 cmpl $0x400,-0x598(%rbp) 0.00 : 47443: 04 00 00 0.00 : 47446: 48 89 a5 20 f9 ff ff mov %rsp,-0x6e0(%rbp) 0.00 : 4744d: 0f 86 f6 03 00 00 jbe 47849 <_IO_vfprintf+0x3589> 0.00 : 47453: 48 63 95 68 fa ff ff movslq -0x598(%rbp),%rdx 0.00 : 4745a: 48 c7 85 78 fa ff ff movq $0x400,-0x588(%rbp) 0.00 : 47461: 00 04 00 00 0.00 : 47465: b8 00 10 00 00 mov $0x1000,%eax 0.00 : 4746a: 48 83 c0 1e add $0x1e,%rax 0.00 : 4746e: 4c 89 fb mov %r15,%rbx 0.00 : 47471: 48 8d 8d 78 ff ff ff lea -0x88(%rbp),%rcx 0.00 : 47478: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4747c: 4c 89 bd 78 ff ff ff mov %r15,-0x88(%rbp) 0.00 : 47483: 48 c7 45 80 00 00 00 movq $0x0,-0x80(%rbp) 0.00 : 4748a: 00 0.00 : 4748b: 48 29 c4 sub %rax,%rsp 0.00 : 4748e: 48 89 8d 40 f8 ff ff mov %rcx,-0x7c0(%rbp) 0.00 : 47495: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 4749a: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4749e: 48 01 d3 add %rdx,%rbx 0.00 : 474a1: 48 8d 55 80 lea -0x80(%rbp),%rdx 0.00 : 474a5: 48 89 85 90 f8 ff ff mov %rax,-0x770(%rbp) 0.00 : 474ac: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 474b3: 48 0f 42 d8 cmovb %rax,%rbx 0.00 : 474b7: 48 89 95 78 f8 ff ff mov %rdx,-0x788(%rbp) 0.00 : 474be: 48 8b 85 78 ff ff ff mov -0x88(%rbp),%rax 0.00 : 474c5: 48 85 c0 test %rax,%rax 0.00 : 474c8: 0f 84 77 1d 00 00 je 49245 <_IO_vfprintf+0x4f85> 0.00 : 474ce: 48 39 c3 cmp %rax,%rbx 0.00 : 474d1: 77 2d ja 47500 <_IO_vfprintf+0x3240> 0.00 : 474d3: 48 89 c3 mov %rax,%rbx 0.00 : 474d6: 48 63 45 80 movslq -0x80(%rbp),%rax 0.00 : 474da: 4c 29 fb sub %r15,%rbx 0.00 : 474dd: 83 e0 07 and $0x7,%eax 0.00 : 474e0: 48 29 c3 sub %rax,%rbx 0.00 : 474e3: 89 9d 88 fa ff ff mov %ebx,-0x578(%rbp) 0.00 : 474e9: 48 8b a5 20 f9 ff ff mov -0x6e0(%rbp),%rsp 0.00 : 474f0: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 474f7: 00 00 00 0.00 : 474fa: e9 aa da ff ff jmpq 44fa9 <_IO_vfprintf+0xce9> 0.00 : 474ff: 90 nop 0.00 : 47500: 4c 8b 85 78 f8 ff ff mov -0x788(%rbp),%r8 0.00 : 47507: 48 8b 8d 78 fa ff ff mov -0x588(%rbp),%rcx 0.00 : 4750e: 48 89 da mov %rbx,%rdx 0.00 : 47511: 48 8b b5 40 f8 ff ff mov -0x7c0(%rbp),%rsi 0.00 : 47518: 48 8b bd 90 f8 ff ff mov -0x770(%rbp),%rdi 0.00 : 4751f: 48 29 c2 sub %rax,%rdx 0.00 : 47522: e8 e9 60 04 00 callq 8d610 0.00 : 47527: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 4752b: 75 91 jne 474be <_IO_vfprintf+0x31fe> 0.00 : 4752d: 41 89 c5 mov %eax,%r13d 0.00 : 47530: 48 8b a5 20 f9 ff ff mov -0x6e0(%rbp),%rsp 0.00 : 47537: e9 9b f3 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 4753c: 49 8b 4e 08 mov 0x8(%r14),%rcx 0.00 : 47540: 48 8d 41 08 lea 0x8(%rcx),%rax 0.00 : 47544: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47548: e9 48 d2 ff ff jmpq 44795 <_IO_vfprintf+0x4d5> 0.00 : 4754d: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47552: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47557: 0f 83 d5 19 00 00 jae 48f32 <_IO_vfprintf+0x4c72> 0.00 : 4755d: c6 00 2d movb $0x2d,(%rax) 0.00 : 47560: 48 83 c0 01 add $0x1,%rax 0.00 : 47564: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47569: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 47570: 0f 84 5b f3 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 47576: 41 83 c5 01 add $0x1,%r13d 0.00 : 4757a: 83 ad 64 fa ff ff 01 subl $0x1,-0x59c(%rbp) 0.00 : 47581: e9 7d f6 ff ff jmpq 46c03 <_IO_vfprintf+0x2943> 0.00 : 47586: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4758b: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47590: 0f 83 f1 1e 00 00 jae 49487 <_IO_vfprintf+0x51c7> 0.00 : 47596: c6 00 2d movb $0x2d,(%rax) 0.00 : 47599: 48 83 c0 01 add $0x1,%rax 0.00 : 4759d: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 475a2: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 475a9: 0f 84 22 f3 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 475af: 41 83 c5 01 add $0x1,%r13d 0.00 : 475b3: 83 ad b8 fa ff ff 01 subl $0x1,-0x548(%rbp) 0.00 : 475ba: e9 1b f5 ff ff jmpq 46ada <_IO_vfprintf+0x281a> 0.00 : 475bf: 48 8b 95 08 ff ff ff mov -0xf8(%rbp),%rdx 0.00 : 475c6: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 475ca: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) 0.00 : 475d1: e9 9e fb ff ff jmpq 47174 <_IO_vfprintf+0x2eb4> 0.00 : 475d6: 83 bd ec fa ff ff 04 cmpl $0x4,-0x514(%rbp) 0.00 : 475dd: b8 05 00 00 00 mov $0x5,%eax 0.00 : 475e2: 4c 8d 3d f8 36 0f 00 lea 0xf36f8(%rip),%r15 # 13ace1 <__PRETTY_FUNCTION__.9779+0x95> 0.00 : 475e9: 0f 4f 85 ec fa ff ff cmovg -0x514(%rbp),%eax 0.00 : 475f0: 89 85 ec fa ff ff mov %eax,-0x514(%rbp) 0.00 : 475f6: 80 bd eb f9 ff ff 53 cmpb $0x53,-0x615(%rbp) 0.00 : 475fd: 0f 84 7f e3 ff ff je 45982 <_IO_vfprintf+0x16c2> 0.00 : 47603: 83 bd ec fa ff ff ff cmpl $0xffffffff,-0x514(%rbp) 0.00 : 4760a: 0f 84 11 1c 00 00 je 49221 <_IO_vfprintf+0x4f61> 0.00 : 47610: 48 8b 05 71 a7 32 00 mov 0x32a771(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 47617: 48 8b 95 58 f8 ff ff mov -0x7a8(%rbp),%rdx 0.00 : 4761e: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 47622: 48 8b 00 mov (%rax),%rax 0.00 : 47625: 83 b8 a8 00 00 00 01 cmpl $0x1,0xa8(%rax) 0.00 : 4762c: 0f 84 6a 01 00 00 je 4779c <_IO_vfprintf+0x34dc> 0.00 : 47632: 81 bd ec fa ff ff 00 cmpl $0x400,-0x514(%rbp) 0.00 : 47639: 04 00 00 0.00 : 4763c: 48 89 a5 e0 f8 ff ff mov %rsp,-0x720(%rbp) 0.00 : 47643: 0f 86 28 06 00 00 jbe 47c71 <_IO_vfprintf+0x39b1> 0.00 : 47649: 48 63 95 ec fa ff ff movslq -0x514(%rbp),%rdx 0.00 : 47650: 48 c7 85 f0 f9 ff ff movq $0x400,-0x610(%rbp) 0.00 : 47657: 00 04 00 00 0.00 : 4765b: b8 00 10 00 00 mov $0x1000,%eax 0.00 : 47660: 48 83 c0 1e add $0x1e,%rax 0.00 : 47664: 4c 89 fb mov %r15,%rbx 0.00 : 47667: 48 8d 7d b0 lea -0x50(%rbp),%rdi 0.00 : 4766b: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4766f: 4c 89 7d 98 mov %r15,-0x68(%rbp) 0.00 : 47673: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 4767a: 00 0.00 : 4767b: 48 29 c4 sub %rax,%rsp 0.00 : 4767e: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 47685: 48 89 bd 60 f8 ff ff mov %rdi,-0x7a0(%rbp) 0.00 : 4768c: 48 8d 4c 24 0f lea 0xf(%rsp),%rcx 0.00 : 47691: 48 83 e1 f0 and $0xfffffffffffffff0,%rcx 0.00 : 47695: 48 01 d3 add %rdx,%rbx 0.00 : 47698: 48 0f 42 d8 cmovb %rax,%rbx 0.00 : 4769c: 48 8d 45 98 lea -0x68(%rbp),%rax 0.00 : 476a0: 48 89 8d a0 f8 ff ff mov %rcx,-0x760(%rbp) 0.00 : 476a7: 48 89 85 48 f8 ff ff mov %rax,-0x7b8(%rbp) 0.00 : 476ae: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 476b2: 48 85 c0 test %rax,%rax 0.00 : 476b5: 0f 84 bc 1d 00 00 je 49477 <_IO_vfprintf+0x51b7> 0.00 : 476bb: 48 39 c3 cmp %rax,%rbx 0.00 : 476be: 77 30 ja 476f0 <_IO_vfprintf+0x3430> 0.00 : 476c0: 48 89 c3 mov %rax,%rbx 0.00 : 476c3: 48 63 45 b0 movslq -0x50(%rbp),%rax 0.00 : 476c7: 4c 29 fb sub %r15,%rbx 0.00 : 476ca: 83 e0 07 and $0x7,%eax 0.00 : 476cd: 48 29 c3 sub %rax,%rbx 0.00 : 476d0: 89 9d 8c fa ff ff mov %ebx,-0x574(%rbp) 0.00 : 476d6: 48 8b a5 e0 f8 ff ff mov -0x720(%rbp),%rsp 0.00 : 476dd: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 476e4: 00 00 00 0.00 : 476e7: e9 24 e3 ff ff jmpq 45a10 <_IO_vfprintf+0x1750> 0.00 : 476ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 476f0: 4c 8b 85 60 f8 ff ff mov -0x7a0(%rbp),%r8 0.00 : 476f7: 48 8b 8d f0 f9 ff ff mov -0x610(%rbp),%rcx 0.00 : 476fe: 48 89 da mov %rbx,%rdx 0.00 : 47701: 48 8b b5 48 f8 ff ff mov -0x7b8(%rbp),%rsi 0.00 : 47708: 48 8b bd a0 f8 ff ff mov -0x760(%rbp),%rdi 0.00 : 4770f: 48 29 c2 sub %rax,%rdx 0.00 : 47712: e8 f9 5e 04 00 callq 8d610 0.00 : 47717: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 4771b: 75 91 jne 476ae <_IO_vfprintf+0x33ee> 0.00 : 4771d: 41 89 c5 mov %eax,%r13d 0.00 : 47720: 48 8b a5 e0 f8 ff ff mov -0x720(%rbp),%rsp 0.00 : 47727: e9 ab f1 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 4772c: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47731: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47736: 0f 83 ca 1a 00 00 jae 49206 <_IO_vfprintf+0x4f46> 0.00 : 4773c: c6 00 2d movb $0x2d,(%rax) 0.00 : 4773f: 48 83 c0 01 add $0x1,%rax 0.00 : 47743: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47748: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 4774f: 0f 84 7c f1 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 47755: 41 83 c5 01 add $0x1,%r13d 0.00 : 47759: e9 d0 e8 ff ff jmpq 4602e <_IO_vfprintf+0x1d6e> 0.00 : 4775e: 85 db test %ebx,%ebx 0.00 : 47760: 7e 33 jle 47795 <_IO_vfprintf+0x34d5> 0.00 : 47762: 48 63 d3 movslq %ebx,%rdx 0.00 : 47765: be 20 00 00 00 mov $0x20,%esi 0.00 : 4776a: 4c 89 e7 mov %r12,%rdi 0.00 : 4776d: e8 ce 0a 02 00 callq 68240 <_IO_padn> 0.00 : 47772: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 47779: 0f 87 18 eb ff ff ja 46297 <_IO_vfprintf+0x1fd7> 0.00 : 4777f: 89 c2 mov %eax,%edx 0.00 : 47781: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 47786: 44 29 e8 sub %r13d,%eax 0.00 : 47789: 39 c2 cmp %eax,%edx 0.00 : 4778b: 0f 87 40 f1 ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 47791: 46 8d 2c 2a lea (%rdx,%r13,1),%r13d 0.00 : 47795: 31 db xor %ebx,%ebx 0.00 : 47797: e9 68 e8 ff ff jmpq 46004 <_IO_vfprintf+0x1d44> 0.00 : 4779c: 48 63 b5 ec fa ff ff movslq -0x514(%rbp),%rsi 0.00 : 477a3: 4c 89 ff mov %r15,%rdi 0.00 : 477a6: e8 55 94 03 00 callq 80c00 0.00 : 477ab: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 477b2: 00 00 00 0.00 : 477b5: 48 89 c3 mov %rax,%rbx 0.00 : 477b8: 89 85 8c fa ff ff mov %eax,-0x574(%rbp) 0.00 : 477be: e9 4d e2 ff ff jmpq 45a10 <_IO_vfprintf+0x1750> 0.00 : 477c3: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 477c8: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 477cd: 0f 83 2a 18 00 00 jae 48ffd <_IO_vfprintf+0x4d3d> 0.00 : 477d3: c6 00 2b movb $0x2b,(%rax) 0.00 : 477d6: 48 83 c0 01 add $0x1,%rax 0.00 : 477da: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 477df: e9 be fd ff ff jmpq 475a2 <_IO_vfprintf+0x32e2> 0.00 : 477e4: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 477e8: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 477ec: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 477f0: e9 26 dc ff ff jmpq 4541b <_IO_vfprintf+0x115b> 0.00 : 477f5: 44 8b 9d 58 fa ff ff mov -0x5a8(%rbp),%r11d 0.00 : 477fc: 45 85 db test %r11d,%r11d 0.00 : 477ff: 0f 85 de 02 00 00 jne 47ae3 <_IO_vfprintf+0x3823> 0.00 : 47805: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 4780c: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 47813: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 47818: 48 c1 e0 04 shl $0x4,%rax 0.00 : 4781c: 8b 04 03 mov (%rbx,%rax,1),%eax 0.00 : 4781f: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 47826: 00 00 00 0.00 : 47829: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 47830: 00 00 00 0.00 : 47833: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 4783a: 00 00 00 0.00 : 4783d: 48 89 85 08 f9 ff ff mov %rax,-0x6f8(%rbp) 0.00 : 47844: e9 ca e6 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 47849: 48 63 95 68 fa ff ff movslq -0x598(%rbp),%rdx 0.00 : 47850: 48 89 95 78 fa ff ff mov %rdx,-0x588(%rbp) 0.00 : 47857: 48 8d 04 95 00 00 00 lea 0x0(,%rdx,4),%rax 0.00 : 4785e: 00 0.00 : 4785f: e9 06 fc ff ff jmpq 4746a <_IO_vfprintf+0x31aa> 0.00 : 47864: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47868: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4786c: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47870: e9 5d e4 ff ff jmpq 45cd2 <_IO_vfprintf+0x1a12> 0.00 : 47875: 48 8b 95 48 f9 ff ff mov -0x6b8(%rbp),%rdx 0.00 : 4787c: 48 83 c7 01 add $0x1,%rdi 0.00 : 47880: 0f b6 42 01 movzbl 0x1(%rdx),%eax 0.00 : 47884: 8d 50 d0 lea -0x30(%rax),%edx 0.00 : 47887: 83 fa 09 cmp $0x9,%edx 0.00 : 4788a: 77 4a ja 478d6 <_IO_vfprintf+0x3616> 0.00 : 4788c: 48 8b 9d 48 f9 ff ff mov -0x6b8(%rbp),%rbx 0.00 : 47893: 48 8b b5 48 f9 ff ff mov -0x6b8(%rbp),%rsi 0.00 : 4789a: 0f b6 4b 02 movzbl 0x2(%rbx),%ecx 0.00 : 4789e: 48 83 c6 02 add $0x2,%rsi 0.00 : 478a2: 0f b6 c1 movzbl %cl,%eax 0.00 : 478a5: 83 e8 30 sub $0x30,%eax 0.00 : 478a8: 83 f8 09 cmp $0x9,%eax 0.00 : 478ab: 77 1c ja 478c9 <_IO_vfprintf+0x3609> 0.00 : 478ad: 48 83 c6 01 add $0x1,%rsi 0.00 : 478b1: 0f b6 c1 movzbl %cl,%eax 0.00 : 478b4: 8d 14 92 lea (%rdx,%rdx,4),%edx 0.00 : 478b7: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 478ba: 8d 54 50 d0 lea -0x30(%rax,%rdx,2),%edx 0.00 : 478be: 0f b6 c1 movzbl %cl,%eax 0.00 : 478c1: 83 e8 30 sub $0x30,%eax 0.00 : 478c4: 83 f8 09 cmp $0x9,%eax 0.00 : 478c7: 76 e4 jbe 478ad <_IO_vfprintf+0x35ed> 0.00 : 478c9: 85 d2 test %edx,%edx 0.00 : 478cb: 74 09 je 478d6 <_IO_vfprintf+0x3616> 0.00 : 478cd: 80 f9 24 cmp $0x24,%cl 0.00 : 478d0: 0f 84 11 e4 ff ff je 45ce7 <_IO_vfprintf+0x1a27> 0.00 : 478d6: 41 8b 06 mov (%r14),%eax 0.00 : 478d9: 83 f8 30 cmp $0x30,%eax 0.00 : 478dc: 0f 83 1e 11 00 00 jae 48a00 <_IO_vfprintf+0x4740> 0.00 : 478e2: 89 c2 mov %eax,%edx 0.00 : 478e4: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 478e8: 83 c0 08 add $0x8,%eax 0.00 : 478eb: 41 89 06 mov %eax,(%r14) 0.00 : 478ee: 8b 12 mov (%rdx),%edx 0.00 : 478f0: 85 d2 test %edx,%edx 0.00 : 478f2: 89 95 ec fa ff ff mov %edx,-0x514(%rbp) 0.00 : 478f8: 0f 88 e2 10 00 00 js 489e0 <_IO_vfprintf+0x4720> 0.00 : 478fe: 8b 95 ec fa ff ff mov -0x514(%rbp),%edx 0.00 : 47904: 48 89 bd 48 f9 ff ff mov %rdi,-0x6b8(%rbp) 0.00 : 4790b: 81 fa c8 03 00 00 cmp $0x3c8,%edx 0.00 : 47911: 0f 97 c0 seta %al 0.00 : 47914: e9 28 dd ff ff jmpq 45641 <_IO_vfprintf+0x1381> 0.00 : 47919: 48 89 df mov %rbx,%rdi 0.00 : 4791c: e8 9f 02 0a 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 47921: 85 c0 test %eax,%eax 0.00 : 47923: 0f 85 4f dd ff ff jne 45678 <_IO_vfprintf+0x13b8> 0.00 : 47929: 48 89 df mov %rbx,%rdi 0.00 : 4792c: e8 1f 6f fd ff callq 1e850 0.00 : 47931: 48 85 c0 test %rax,%rax 0.00 : 47934: 48 89 85 58 f9 ff ff mov %rax,-0x6a8(%rbp) 0.00 : 4793b: 0f 84 90 ef ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 47941: 48 03 9d 58 f9 ff ff add -0x6a8(%rbp),%rbx 0.00 : 47948: 48 89 9d 60 f9 ff ff mov %rbx,-0x6a0(%rbp) 0.00 : 4794f: 48 8b 85 48 f9 ff ff mov -0x6b8(%rbp),%rax 0.00 : 47956: 0f b6 18 movzbl (%rax),%ebx 0.00 : 47959: e9 42 dd ff ff jmpq 456a0 <_IO_vfprintf+0x13e0> 0.00 : 4795e: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47962: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 47966: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4796a: e9 3d f0 ff ff jmpq 469ac <_IO_vfprintf+0x26ec> 0.00 : 4796f: 8b 85 c4 f9 ff ff mov -0x63c(%rbp),%eax 0.00 : 47975: 85 c0 test %eax,%eax 0.00 : 47977: 74 42 je 479bb <_IO_vfprintf+0x36fb> 0.00 : 47979: 41 8b 06 mov (%r14),%eax 0.00 : 4797c: 83 f8 30 cmp $0x30,%eax 0.00 : 4797f: 0f 83 38 14 00 00 jae 48dbd <_IO_vfprintf+0x4afd> 0.00 : 47985: 89 c2 mov %eax,%edx 0.00 : 47987: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 4798b: 83 c0 08 add $0x8,%eax 0.00 : 4798e: 41 89 06 mov %eax,(%r14) 0.00 : 47991: 48 0f be 12 movsbq (%rdx),%rdx 0.00 : 47995: e9 15 f0 ff ff jmpq 469af <_IO_vfprintf+0x26ef> 0.00 : 4799a: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4799f: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 479a4: 0f 83 24 14 00 00 jae 48dce <_IO_vfprintf+0x4b0e> 0.00 : 479aa: c6 00 20 movb $0x20,(%rax) 0.00 : 479ad: 48 83 c0 01 add $0x1,%rax 0.00 : 479b1: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 479b6: e9 e7 fb ff ff jmpq 475a2 <_IO_vfprintf+0x32e2> 0.00 : 479bb: 44 8b bd bc f9 ff ff mov -0x644(%rbp),%r15d 0.00 : 479c2: 45 85 ff test %r15d,%r15d 0.00 : 479c5: 0f 85 d9 14 00 00 jne 48ea4 <_IO_vfprintf+0x4be4> 0.00 : 479cb: 41 8b 06 mov (%r14),%eax 0.00 : 479ce: 83 f8 30 cmp $0x30,%eax 0.00 : 479d1: 0f 83 bc 14 00 00 jae 48e93 <_IO_vfprintf+0x4bd3> 0.00 : 479d7: 89 c2 mov %eax,%edx 0.00 : 479d9: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 479dd: 83 c0 08 add $0x8,%eax 0.00 : 479e0: 41 89 06 mov %eax,(%r14) 0.00 : 479e3: 48 63 12 movslq (%rdx),%rdx 0.00 : 479e6: e9 c4 ef ff ff jmpq 469af <_IO_vfprintf+0x26ef> 0.00 : 479eb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 479f0: 8b 85 60 fa ff ff mov -0x5a0(%rbp),%eax 0.00 : 479f6: 85 c0 test %eax,%eax 0.00 : 479f8: 0f 84 80 10 00 00 je 48a7e <_IO_vfprintf+0x47be> 0.00 : 479fe: 41 8b 06 mov (%r14),%eax 0.00 : 47a01: 83 f8 30 cmp $0x30,%eax 0.00 : 47a04: 0f 83 63 10 00 00 jae 48a6d <_IO_vfprintf+0x47ad> 0.00 : 47a0a: 89 c2 mov %eax,%edx 0.00 : 47a0c: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 47a10: 83 c0 08 add $0x8,%eax 0.00 : 47a13: 41 89 06 mov %eax,(%r14) 0.00 : 47a16: 48 8b 12 mov (%rdx),%rdx 0.00 : 47a19: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 47a20: 00 00 00 0.00 : 47a23: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 47a2a: 00 00 00 0.00 : 47a2d: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 47a34: 00 00 00 0.00 : 47a37: 48 89 95 08 f9 ff ff mov %rdx,-0x6f8(%rbp) 0.00 : 47a3e: e9 d0 e4 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 47a43: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 47a48: 8b 85 5c fa ff ff mov -0x5a4(%rbp),%eax 0.00 : 47a4e: 85 c0 test %eax,%eax 0.00 : 47a50: 0f 84 4d 12 00 00 je 48ca3 <_IO_vfprintf+0x49e3> 0.00 : 47a56: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 47a5d: 48 8b 8d 08 fa ff ff mov -0x5f8(%rbp),%rcx 0.00 : 47a64: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 47a69: 48 c1 e0 04 shl $0x4,%rax 0.00 : 47a6d: 48 0f be 14 01 movsbq (%rcx,%rax,1),%rdx 0.00 : 47a72: e9 72 e4 ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 47a77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 47a7e: 00 00 0.00 : 47a80: 41 8b 46 04 mov 0x4(%r14),%eax 0.00 : 47a84: 3d b0 00 00 00 cmp $0xb0,%eax 0.00 : 47a89: 0f 83 d1 01 00 00 jae 47c60 <_IO_vfprintf+0x39a0> 0.00 : 47a8f: 89 c2 mov %eax,%edx 0.00 : 47a91: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 47a95: 83 c0 10 add $0x10,%eax 0.00 : 47a98: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 47a9c: 48 8b 02 mov (%rdx),%rax 0.00 : 47a9f: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 47aa6: e9 fb ed ff ff jmpq 468a6 <_IO_vfprintf+0x25e6> 0.00 : 47aab: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47aaf: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 47ab3: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47ab7: e9 a8 f4 ff ff jmpq 46f64 <_IO_vfprintf+0x2ca4> 0.00 : 47abc: 48 63 b5 68 fa ff ff movslq -0x598(%rbp),%rsi 0.00 : 47ac3: 4c 89 ff mov %r15,%rdi 0.00 : 47ac6: e8 35 91 03 00 callq 80c00 0.00 : 47acb: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 47ad2: 00 00 00 0.00 : 47ad5: 48 89 c3 mov %rax,%rbx 0.00 : 47ad8: 89 85 88 fa ff ff mov %eax,-0x578(%rbp) 0.00 : 47ade: e9 c6 d4 ff ff jmpq 44fa9 <_IO_vfprintf+0xce9> 0.00 : 47ae3: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 47aea: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 47aef: 48 8b 95 08 fa ff ff mov -0x5f8(%rbp),%rdx 0.00 : 47af6: 48 c1 e0 04 shl $0x4,%rax 0.00 : 47afa: 0f b7 04 02 movzwl (%rdx,%rax,1),%eax 0.00 : 47afe: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 47b05: 00 00 00 0.00 : 47b08: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 47b0f: 00 00 00 0.00 : 47b12: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 47b19: 00 00 00 0.00 : 47b1c: 48 89 85 08 f9 ff ff mov %rax,-0x6f8(%rbp) 0.00 : 47b23: e9 eb e3 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 47b28: 41 8b 06 mov (%r14),%eax 0.00 : 47b2b: 83 f8 30 cmp $0x30,%eax 0.00 : 47b2e: 0f 83 aa 11 00 00 jae 48cde <_IO_vfprintf+0x4a1e> 0.00 : 47b34: 89 c2 mov %eax,%edx 0.00 : 47b36: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 47b3a: 83 c0 08 add $0x8,%eax 0.00 : 47b3d: 41 89 06 mov %eax,(%r14) 0.00 : 47b40: 0f b7 12 movzwl (%rdx),%edx 0.00 : 47b43: c7 85 90 f9 ff ff 00 movl $0x0,-0x670(%rbp) 0.00 : 47b4a: 00 00 00 0.00 : 47b4d: c7 85 a8 f9 ff ff 00 movl $0x0,-0x658(%rbp) 0.00 : 47b54: 00 00 00 0.00 : 47b57: c7 85 b0 f9 ff ff 00 movl $0x0,-0x650(%rbp) 0.00 : 47b5e: 00 00 00 0.00 : 47b61: 48 89 95 c0 f8 ff ff mov %rdx,-0x740(%rbp) 0.00 : 47b68: e9 34 e9 ff ff jmpq 464a1 <_IO_vfprintf+0x21e1> 0.00 : 47b6d: 41 8b 46 04 mov 0x4(%r14),%eax 0.00 : 47b71: 3d b0 00 00 00 cmp $0xb0,%eax 0.00 : 47b76: 73 5c jae 47bd4 <_IO_vfprintf+0x3914> 0.00 : 47b78: 89 c2 mov %eax,%edx 0.00 : 47b7a: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 47b7e: 83 c0 10 add $0x10,%eax 0.00 : 47b81: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 47b85: 48 8b 02 mov (%rdx),%rax 0.00 : 47b88: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp) 0.00 : 47b8f: e9 d5 eb ff ff jmpq 46769 <_IO_vfprintf+0x24a9> 0.00 : 47b94: 44 8b 95 40 fa ff ff mov -0x5c0(%rbp),%r10d 0.00 : 47b9b: 45 85 d2 test %r10d,%r10d 0.00 : 47b9e: 0f 84 9d e3 ff ff je 45f41 <_IO_vfprintf+0x1c81> 0.00 : 47ba4: 4c 8b bd 60 f9 ff ff mov -0x6a0(%rbp),%r15 0.00 : 47bab: 48 8b 9d 60 f9 ff ff mov -0x6a0(%rbp),%rbx 0.00 : 47bb2: ba 01 00 00 00 mov $0x1,%edx 0.00 : 47bb7: 31 c0 xor %eax,%eax 0.00 : 47bb9: 49 83 ef 01 sub $0x1,%r15 0.00 : 47bbd: c6 43 ff 30 movb $0x30,-0x1(%rbx) 0.00 : 47bc1: c6 85 72 fa ff ff 20 movb $0x20,-0x58e(%rbp) 0.00 : 47bc8: 4c 89 bd d0 fa ff ff mov %r15,-0x530(%rbp) 0.00 : 47bcf: e9 28 f2 ff ff jmpq 46dfc <_IO_vfprintf+0x2b3c> 0.00 : 47bd4: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47bd8: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 47bdc: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47be0: eb a3 jmp 47b85 <_IO_vfprintf+0x38c5> 0.00 : 47be2: 83 bd 68 fa ff ff ff cmpl $0xffffffff,-0x598(%rbp) 0.00 : 47be9: 74 0d je 47bf8 <_IO_vfprintf+0x3938> 0.00 : 47beb: 83 bd 68 fa ff ff 05 cmpl $0x5,-0x598(%rbp) 0.00 : 47bf2: 0f 8e 5d 18 00 00 jle 49455 <_IO_vfprintf+0x5195> 0.00 : 47bf8: 4c 8d 3d 12 31 0f 00 lea 0xf3112(%rip),%r15 # 13ad11 0.00 : 47bff: bb 06 00 00 00 mov $0x6,%ebx 0.00 : 47c04: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 47c0b: 00 00 00 0.00 : 47c0e: c7 85 88 fa ff ff 06 movl $0x6,-0x578(%rbp) 0.00 : 47c15: 00 00 00 0.00 : 47c18: e9 8c d3 ff ff jmpq 44fa9 <_IO_vfprintf+0xce9> 0.00 : 47c1d: 0f 1f 00 nopl (%rax) 0.00 : 47c20: 44 8b 8d a4 f9 ff ff mov -0x65c(%rbp),%r9d 0.00 : 47c27: 45 85 c9 test %r9d,%r9d 0.00 : 47c2a: 0f 84 9f e8 ff ff je 464cf <_IO_vfprintf+0x220f> 0.00 : 47c30: 4c 8b bd 60 f9 ff ff mov -0x6a0(%rbp),%r15 0.00 : 47c37: 48 8b 85 60 f9 ff ff mov -0x6a0(%rbp),%rax 0.00 : 47c3e: ba 01 00 00 00 mov $0x1,%edx 0.00 : 47c43: 49 83 ef 01 sub $0x1,%r15 0.00 : 47c47: c6 40 ff 30 movb $0x30,-0x1(%rax) 0.00 : 47c4b: c6 85 d0 f9 ff ff 20 movb $0x20,-0x630(%rbp) 0.00 : 47c52: 4c 89 bd 98 fa ff ff mov %r15,-0x568(%rbp) 0.00 : 47c59: 31 c0 xor %eax,%eax 0.00 : 47c5b: e9 87 f2 ff ff jmpq 46ee7 <_IO_vfprintf+0x2c27> 0.00 : 47c60: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47c64: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 47c68: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47c6c: e9 2b fe ff ff jmpq 47a9c <_IO_vfprintf+0x37dc> 0.00 : 47c71: 48 63 95 ec fa ff ff movslq -0x514(%rbp),%rdx 0.00 : 47c78: 48 89 95 f0 f9 ff ff mov %rdx,-0x610(%rbp) 0.00 : 47c7f: 48 8d 04 95 00 00 00 lea 0x0(,%rdx,4),%rax 0.00 : 47c86: 00 0.00 : 47c87: e9 d4 f9 ff ff jmpq 47660 <_IO_vfprintf+0x33a0> 0.00 : 47c8c: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47c91: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47c96: 0f 83 e7 18 00 00 jae 49583 <_IO_vfprintf+0x52c3> 0.00 : 47c9c: c6 00 20 movb $0x20,(%rax) 0.00 : 47c9f: 48 83 c0 01 add $0x1,%rax 0.00 : 47ca3: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47ca8: e9 9b fa ff ff jmpq 47748 <_IO_vfprintf+0x3488> 0.00 : 47cad: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47cb2: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47cb7: 0f 83 ce 0b 00 00 jae 4888b <_IO_vfprintf+0x45cb> 0.00 : 47cbd: c6 00 2b movb $0x2b,(%rax) 0.00 : 47cc0: 48 83 c0 01 add $0x1,%rax 0.00 : 47cc4: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47cc9: e9 7a fa ff ff jmpq 47748 <_IO_vfprintf+0x3488> 0.00 : 47cce: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47cd3: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47cd8: 0f 83 1b 0c 00 00 jae 488f9 <_IO_vfprintf+0x4639> 0.00 : 47cde: c6 00 20 movb $0x20,(%rax) 0.00 : 47ce1: 48 83 c0 01 add $0x1,%rax 0.00 : 47ce5: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47cea: e9 7a f8 ff ff jmpq 47569 <_IO_vfprintf+0x32a9> 0.00 : 47cef: 45 85 ed test %r13d,%r13d 0.00 : 47cf2: 0f 88 24 08 00 00 js 4851c <_IO_vfprintf+0x425c> 0.00 : 47cf8: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 47cff: 00 0.00 : 47d00: 48 89 da mov %rbx,%rdx 0.00 : 47d03: 4c 89 fe mov %r15,%rsi 0.00 : 47d06: 4c 89 e7 mov %r12,%rdi 0.00 : 47d09: ff 50 38 callq *0x38(%rax) 0.00 : 47d0c: 48 39 d8 cmp %rbx,%rax 0.00 : 47d0f: 0f 85 bc eb ff ff jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 47d15: 49 63 d5 movslq %r13d,%rdx 0.00 : 47d18: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 47d1d: 48 29 d0 sub %rdx,%rax 0.00 : 47d20: 48 39 c3 cmp %rax,%rbx 0.00 : 47d23: 0f 87 a8 eb ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 47d29: 44 03 ad 8c fa ff ff add -0x574(%rbp),%r13d 0.00 : 47d30: e9 5b cb ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 47d35: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 47d39: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 47d3d: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 47d41: e9 35 db ff ff jmpq 4587b <_IO_vfprintf+0x15bb> 0.00 : 47d46: 8b 85 5c fa ff ff mov -0x5a4(%rbp),%eax 0.00 : 47d4c: 85 c0 test %eax,%eax 0.00 : 47d4e: 0f 84 4e 17 00 00 je 494a2 <_IO_vfprintf+0x51e2> 0.00 : 47d54: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 47d5b: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 47d60: 48 8b 95 08 fa ff ff mov -0x5f8(%rbp),%rdx 0.00 : 47d67: 48 c1 e0 04 shl $0x4,%rax 0.00 : 47d6b: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 47d6f: 44 88 28 mov %r13b,(%rax) 0.00 : 47d72: e9 49 cd ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 47d77: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 47d7e: 00 00 0.00 : 47d80: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47d85: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47d8a: 0f 83 63 07 00 00 jae 484f3 <_IO_vfprintf+0x4233> 0.00 : 47d90: c6 00 20 movb $0x20,(%rax) 0.00 : 47d93: 48 83 c0 01 add $0x1,%rax 0.00 : 47d97: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47d9c: e9 5e f5 ff ff jmpq 472ff <_IO_vfprintf+0x303f> 0.00 : 47da1: 45 85 ed test %r13d,%r13d 0.00 : 47da4: 0f 88 51 06 00 00 js 483fb <_IO_vfprintf+0x413b> 0.00 : 47daa: 49 8b 84 24 d8 00 00 mov 0xd8(%r12),%rax 0.00 : 47db1: 00 0.00 : 47db2: 48 89 da mov %rbx,%rdx 0.00 : 47db5: 4c 89 fe mov %r15,%rsi 0.00 : 47db8: 4c 89 e7 mov %r12,%rdi 0.00 : 47dbb: ff 50 38 callq *0x38(%rax) 0.00 : 47dbe: 48 39 d8 cmp %rbx,%rax 0.00 : 47dc1: 0f 85 0a eb ff ff jne 468d1 <_IO_vfprintf+0x2611> 0.00 : 47dc7: 49 63 d5 movslq %r13d,%rdx 0.00 : 47dca: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 47dcf: 48 29 d0 sub %rdx,%rax 0.00 : 47dd2: 48 39 c3 cmp %rax,%rbx 0.00 : 47dd5: 0f 87 f6 ea ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 47ddb: 44 03 ad 88 fa ff ff add -0x578(%rbp),%r13d 0.00 : 47de2: e9 d9 cc ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 47de7: 48 8b 8d d8 fa ff ff mov -0x528(%rbp),%rcx 0.00 : 47dee: 8b 51 08 mov 0x8(%rcx),%edx 0.00 : 47df1: 85 d2 test %edx,%edx 0.00 : 47df3: 0f 85 5f 15 00 00 jne 49358 <_IO_vfprintf+0x5098> 0.00 : 47df9: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 47e00: 0f 87 33 15 00 00 ja 49339 <_IO_vfprintf+0x5079> 0.00 : 47e06: b8 ff ff ff 7f mov $0x7fffffff,%eax 0.00 : 47e0b: 44 29 e8 sub %r13d,%eax 0.00 : 47e0e: 39 c3 cmp %eax,%ebx 0.00 : 47e10: 0f 87 bb ea ff ff ja 468d1 <_IO_vfprintf+0x2611> 0.00 : 47e16: 46 8d 2c 2b lea (%rbx,%r13,1),%r13d 0.00 : 47e1a: e9 a1 cc ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 47e1f: 0f be 85 73 fa ff ff movsbl -0x58d(%rbp),%eax 0.00 : 47e26: 8b 8d 68 fa ff ff mov -0x598(%rbp),%ecx 0.00 : 47e2c: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 47e33: 00 00 00 00 0.00 : 47e37: 0f b6 95 58 fa ff ff movzbl -0x5a8(%rbp),%edx 0.00 : 47e3e: 44 8b 95 54 fa ff ff mov -0x5ac(%rbp),%r10d 0.00 : 47e45: 8b 9d 64 fa ff ff mov -0x59c(%rbp),%ebx 0.00 : 47e4b: 89 8d 20 ff ff ff mov %ecx,-0xe0(%rbp) 0.00 : 47e51: 0f b6 8d 54 fa ff ff movzbl -0x5ac(%rbp),%ecx 0.00 : 47e58: 89 85 28 ff ff ff mov %eax,-0xd8(%rbp) 0.00 : 47e5e: 0f b6 85 2c ff ff ff movzbl -0xd4(%rbp),%eax 0.00 : 47e65: 83 e2 01 and $0x1,%edx 0.00 : 47e68: 89 9d 24 ff ff ff mov %ebx,-0xdc(%rbp) 0.00 : 47e6e: 01 d2 add %edx,%edx 0.00 : 47e70: 83 e1 01 and $0x1,%ecx 0.00 : 47e73: 83 e0 fc and $0xfffffffc,%eax 0.00 : 47e76: 09 c8 or %ecx,%eax 0.00 : 47e78: 0f b6 8d 60 fa ff ff movzbl -0x5a0(%rbp),%ecx 0.00 : 47e7f: 09 d0 or %edx,%eax 0.00 : 47e81: 0f b6 95 40 fa ff ff movzbl -0x5c0(%rbp),%edx 0.00 : 47e88: 83 e0 f3 and $0xfffffff3,%eax 0.00 : 47e8b: 83 e1 01 and $0x1,%ecx 0.00 : 47e8e: c1 e1 02 shl $0x2,%ecx 0.00 : 47e91: 83 e2 01 and $0x1,%edx 0.00 : 47e94: c1 e2 03 shl $0x3,%edx 0.00 : 47e97: 09 c8 or %ecx,%eax 0.00 : 47e99: 0f b6 8d 44 fa ff ff movzbl -0x5bc(%rbp),%ecx 0.00 : 47ea0: 09 d0 or %edx,%eax 0.00 : 47ea2: 0f b6 95 48 fa ff ff movzbl -0x5b8(%rbp),%edx 0.00 : 47ea9: 83 e0 cf and $0xffffffcf,%eax 0.00 : 47eac: 83 e1 01 and $0x1,%ecx 0.00 : 47eaf: c1 e1 04 shl $0x4,%ecx 0.00 : 47eb2: 83 e2 01 and $0x1,%edx 0.00 : 47eb5: c1 e2 05 shl $0x5,%edx 0.00 : 47eb8: 09 c8 or %ecx,%eax 0.00 : 47eba: 0f b6 8d 50 fa ff ff movzbl -0x5b0(%rbp),%ecx 0.00 : 47ec1: 09 d0 or %edx,%eax 0.00 : 47ec3: 0f b6 95 4c fa ff ff movzbl -0x5b4(%rbp),%edx 0.00 : 47eca: 83 e0 3f and $0x3f,%eax 0.00 : 47ecd: c1 e1 07 shl $0x7,%ecx 0.00 : 47ed0: 83 e2 01 and $0x1,%edx 0.00 : 47ed3: c1 e2 06 shl $0x6,%edx 0.00 : 47ed6: 09 d0 or %edx,%eax 0.00 : 47ed8: 09 c8 or %ecx,%eax 0.00 : 47eda: 45 85 d2 test %r10d,%r10d 0.00 : 47edd: 88 85 2c ff ff ff mov %al,-0xd4(%rbp) 0.00 : 47ee3: 0f be 85 72 fa ff ff movsbl -0x58e(%rbp),%eax 0.00 : 47eea: 89 85 30 ff ff ff mov %eax,-0xd0(%rbp) 0.00 : 47ef0: 0f 84 7b 08 00 00 je 48771 <_IO_vfprintf+0x44b1> 0.00 : 47ef6: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 47efa: 48 83 c0 0f add $0xf,%rax 0.00 : 47efe: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 47f02: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 47f06: 49 89 56 08 mov %rdx,0x8(%r14) 0.00 : 47f0a: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 47f0d: 48 8b 00 mov (%rax),%rax 0.00 : 47f10: 89 95 48 ff ff ff mov %edx,-0xb8(%rbp) 0.00 : 47f16: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 47f1d: 48 8d 85 40 ff ff ff lea -0xc0(%rbp),%rax 0.00 : 47f24: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx 0.00 : 47f2b: 48 8d b5 20 ff ff ff lea -0xe0(%rbp),%rsi 0.00 : 47f32: 4c 89 e7 mov %r12,%rdi 0.00 : 47f35: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 47f3c: e8 7f 47 00 00 callq 4c6c0 <__printf_fphex> 0.00 : 47f41: 89 c2 mov %eax,%edx 0.00 : 47f43: e9 3a e3 ff ff jmpq 46282 <_IO_vfprintf+0x1fc2> 0.00 : 47f48: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47f4d: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47f52: 0f 83 e7 15 00 00 jae 4953f <_IO_vfprintf+0x527f> 0.00 : 47f58: c6 00 2d movb $0x2d,(%rax) 0.00 : 47f5b: 48 83 c0 01 add $0x1,%rax 0.00 : 47f5f: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 47f64: 83 c3 01 add $0x1,%ebx 0.00 : 47f67: e9 12 d2 ff ff jmpq 4517e <_IO_vfprintf+0xebe> 0.00 : 47f6c: 85 c0 test %eax,%eax 0.00 : 47f6e: 0f 89 df f1 ff ff jns 47153 <_IO_vfprintf+0x2e93> 0.00 : 47f74: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 47f77: 0f 85 39 f2 ff ff jne 471b6 <_IO_vfprintf+0x2ef6> 0.00 : 47f7d: 41 f6 44 24 74 04 testb $0x4,0x74(%r12) 0.00 : 47f83: 0f 85 f6 08 00 00 jne 4887f <_IO_vfprintf+0x45bf> 0.00 : 47f89: 48 8d 0d 80 a9 0f 00 lea 0xfa980(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 47f90: 48 8d 35 3f 2d 0f 00 lea 0xf2d3f(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 47f97: 48 8d 3d 64 2d 0f 00 lea 0xf2d64(%rip),%rdi # 13ad02 <__PRETTY_FUNCTION__.9779+0xb6> 0.00 : 47f9e: ba 30 07 00 00 mov $0x730,%edx 0.00 : 47fa3: e8 78 39 fe ff callq 2b920 <__assert_fail> 0.00 : 47fa8: 83 bd ec fa ff ff ff cmpl $0xffffffff,-0x514(%rbp) 0.00 : 47faf: 74 0d je 47fbe <_IO_vfprintf+0x3cfe> 0.00 : 47fb1: 83 bd ec fa ff ff 05 cmpl $0x5,-0x514(%rbp) 0.00 : 47fb8: 0f 8e f6 11 00 00 jle 491b4 <_IO_vfprintf+0x4ef4> 0.00 : 47fbe: 4c 8d 3d 4c 2d 0f 00 lea 0xf2d4c(%rip),%r15 # 13ad11 0.00 : 47fc5: bb 06 00 00 00 mov $0x6,%ebx 0.00 : 47fca: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 47fd1: 00 00 00 0.00 : 47fd4: c7 85 8c fa ff ff 06 movl $0x6,-0x574(%rbp) 0.00 : 47fdb: 00 00 00 0.00 : 47fde: e9 2d da ff ff jmpq 45a10 <_IO_vfprintf+0x1750> 0.00 : 47fe3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 47fe8: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 47fed: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 47ff2: 0f 83 aa 13 00 00 jae 493a2 <_IO_vfprintf+0x50e2> 0.00 : 47ff8: c6 00 2b movb $0x2b,(%rax) 0.00 : 47ffb: 48 83 c0 01 add $0x1,%rax 0.00 : 47fff: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 48004: e9 60 f5 ff ff jmpq 47569 <_IO_vfprintf+0x32a9> 0.00 : 48009: 0f be 85 73 fa ff ff movsbl -0x58d(%rbp),%eax 0.00 : 48010: 48 c7 85 28 ff ff ff movq $0x0,-0xd8(%rbp) 0.00 : 48017: 00 00 00 00 0.00 : 4801b: 0f b6 8d 54 fa ff ff movzbl -0x5ac(%rbp),%ecx 0.00 : 48022: 0f b6 95 58 fa ff ff movzbl -0x5a8(%rbp),%edx 0.00 : 48029: 44 8b 9d 54 fa ff ff mov -0x5ac(%rbp),%r11d 0.00 : 48030: 8b 9d 68 fa ff ff mov -0x598(%rbp),%ebx 0.00 : 48036: 8b bd 64 fa ff ff mov -0x59c(%rbp),%edi 0.00 : 4803c: 89 85 28 ff ff ff mov %eax,-0xd8(%rbp) 0.00 : 48042: 0f b6 85 2c ff ff ff movzbl -0xd4(%rbp),%eax 0.00 : 48049: 83 e1 01 and $0x1,%ecx 0.00 : 4804c: 83 e2 01 and $0x1,%edx 0.00 : 4804f: 89 9d 20 ff ff ff mov %ebx,-0xe0(%rbp) 0.00 : 48055: 01 d2 add %edx,%edx 0.00 : 48057: 89 bd 24 ff ff ff mov %edi,-0xdc(%rbp) 0.00 : 4805d: 83 e0 fc and $0xfffffffc,%eax 0.00 : 48060: 09 c8 or %ecx,%eax 0.00 : 48062: 0f b6 8d 60 fa ff ff movzbl -0x5a0(%rbp),%ecx 0.00 : 48069: 09 d0 or %edx,%eax 0.00 : 4806b: 0f b6 95 40 fa ff ff movzbl -0x5c0(%rbp),%edx 0.00 : 48072: 83 e0 f3 and $0xfffffff3,%eax 0.00 : 48075: 83 e1 01 and $0x1,%ecx 0.00 : 48078: c1 e1 02 shl $0x2,%ecx 0.00 : 4807b: 83 e2 01 and $0x1,%edx 0.00 : 4807e: c1 e2 03 shl $0x3,%edx 0.00 : 48081: 09 c8 or %ecx,%eax 0.00 : 48083: 0f b6 8d 44 fa ff ff movzbl -0x5bc(%rbp),%ecx 0.00 : 4808a: 09 d0 or %edx,%eax 0.00 : 4808c: 0f b6 95 48 fa ff ff movzbl -0x5b8(%rbp),%edx 0.00 : 48093: 83 e0 cf and $0xffffffcf,%eax 0.00 : 48096: 83 e1 01 and $0x1,%ecx 0.00 : 48099: c1 e1 04 shl $0x4,%ecx 0.00 : 4809c: 83 e2 01 and $0x1,%edx 0.00 : 4809f: c1 e2 05 shl $0x5,%edx 0.00 : 480a2: 09 c8 or %ecx,%eax 0.00 : 480a4: 0f b6 8d 50 fa ff ff movzbl -0x5b0(%rbp),%ecx 0.00 : 480ab: 09 d0 or %edx,%eax 0.00 : 480ad: 0f b6 95 4c fa ff ff movzbl -0x5b4(%rbp),%edx 0.00 : 480b4: 83 e0 3f and $0x3f,%eax 0.00 : 480b7: c1 e1 07 shl $0x7,%ecx 0.00 : 480ba: 83 e2 01 and $0x1,%edx 0.00 : 480bd: c1 e2 06 shl $0x6,%edx 0.00 : 480c0: 09 d0 or %edx,%eax 0.00 : 480c2: 0f b6 95 6c fa ff ff movzbl -0x594(%rbp),%edx 0.00 : 480c9: 09 c8 or %ecx,%eax 0.00 : 480cb: 88 85 2c ff ff ff mov %al,-0xd4(%rbp) 0.00 : 480d1: 0f b6 85 2d ff ff ff movzbl -0xd3(%rbp),%eax 0.00 : 480d8: 83 e2 01 and $0x1,%edx 0.00 : 480db: c1 e2 03 shl $0x3,%edx 0.00 : 480de: 83 e0 f7 and $0xfffffff7,%eax 0.00 : 480e1: 09 d0 or %edx,%eax 0.00 : 480e3: 45 85 db test %r11d,%r11d 0.00 : 480e6: 88 85 2d ff ff ff mov %al,-0xd3(%rbp) 0.00 : 480ec: 0f be 85 72 fa ff ff movsbl -0x58e(%rbp),%eax 0.00 : 480f3: 89 85 30 ff ff ff mov %eax,-0xd0(%rbp) 0.00 : 480f9: 0f 84 be 06 00 00 je 487bd <_IO_vfprintf+0x44fd> 0.00 : 480ff: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 48103: 48 83 c0 0f add $0xf,%rax 0.00 : 48107: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 4810b: 48 8d 50 10 lea 0x10(%rax),%rdx 0.00 : 4810f: 49 89 56 08 mov %rdx,0x8(%r14) 0.00 : 48113: 8b 50 08 mov 0x8(%rax),%edx 0.00 : 48116: 48 8b 00 mov (%rax),%rax 0.00 : 48119: 89 95 48 ff ff ff mov %edx,-0xb8(%rbp) 0.00 : 4811f: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 48126: 48 8d 85 40 ff ff ff lea -0xc0(%rbp),%rax 0.00 : 4812d: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx 0.00 : 48134: 48 8d b5 20 ff ff ff lea -0xe0(%rbp),%rsi 0.00 : 4813b: 4c 89 e7 mov %r12,%rdi 0.00 : 4813e: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) 0.00 : 48145: e8 66 1c 00 00 callq 49db0 <__printf_fp> 0.00 : 4814a: 89 c2 mov %eax,%edx 0.00 : 4814c: e9 31 e1 ff ff jmpq 46282 <_IO_vfprintf+0x1fc2> 0.00 : 48151: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48156: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4815b: 0f 83 6e 13 00 00 jae 494cf <_IO_vfprintf+0x520f> 0.00 : 48161: c6 00 2b movb $0x2b,(%rax) 0.00 : 48164: 48 83 c0 01 add $0x1,%rax 0.00 : 48168: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4816d: 48 8b 8d d8 fa ff ff mov -0x528(%rbp),%rcx 0.00 : 48174: 83 c3 01 add $0x1,%ebx 0.00 : 48177: 0f b6 41 0c movzbl 0xc(%rcx),%eax 0.00 : 4817b: e9 f6 cf ff ff jmpq 45176 <_IO_vfprintf+0xeb6> 0.00 : 48180: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48184: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48188: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4818c: e9 7c e7 ff ff jmpq 4690d <_IO_vfprintf+0x264d> 0.00 : 48191: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48195: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48199: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4819d: e9 97 d7 ff ff jmpq 45939 <_IO_vfprintf+0x1679> 0.00 : 481a2: 8b bd c4 f9 ff ff mov -0x63c(%rbp),%edi 0.00 : 481a8: 85 ff test %edi,%edi 0.00 : 481aa: 0f 84 83 00 00 00 je 48233 <_IO_vfprintf+0x3f73> 0.00 : 481b0: 41 8b 06 mov (%r14),%eax 0.00 : 481b3: 83 f8 30 cmp $0x30,%eax 0.00 : 481b6: 0f 83 61 06 00 00 jae 4881d <_IO_vfprintf+0x455d> 0.00 : 481bc: 89 c2 mov %eax,%edx 0.00 : 481be: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 481c2: 83 c0 08 add $0x8,%eax 0.00 : 481c5: 41 89 06 mov %eax,(%r14) 0.00 : 481c8: 48 8b 02 mov (%rdx),%rax 0.00 : 481cb: 44 88 28 mov %r13b,(%rax) 0.00 : 481ce: e9 bd c6 ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 481d3: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 481d8: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 481dd: 0f 83 01 06 00 00 jae 487e4 <_IO_vfprintf+0x4524> 0.00 : 481e3: c6 00 23 movb $0x23,(%rax) 0.00 : 481e6: 48 8b bd d8 fa ff ff mov -0x528(%rbp),%rdi 0.00 : 481ed: 48 83 c0 01 add $0x1,%rax 0.00 : 481f1: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 481f6: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 481fb: 0f b6 47 0c movzbl 0xc(%rdi),%eax 0.00 : 481ff: e9 55 cf ff ff jmpq 45159 <_IO_vfprintf+0xe99> 0.00 : 48204: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48209: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4820e: 0f 83 1a 06 00 00 jae 4882e <_IO_vfprintf+0x456e> 0.00 : 48214: c6 00 27 movb $0x27,(%rax) 0.00 : 48217: 48 83 c0 01 add $0x1,%rax 0.00 : 4821b: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 48220: 48 8b 95 d8 fa ff ff mov -0x528(%rbp),%rdx 0.00 : 48227: 83 c3 01 add $0x1,%ebx 0.00 : 4822a: 0f b6 42 0c movzbl 0xc(%rdx),%eax 0.00 : 4822e: e9 2e cf ff ff jmpq 45161 <_IO_vfprintf+0xea1> 0.00 : 48233: 8b b5 bc f9 ff ff mov -0x644(%rbp),%esi 0.00 : 48239: 85 f6 test %esi,%esi 0.00 : 4823b: 0f 85 de 12 00 00 jne 4951f <_IO_vfprintf+0x525f> 0.00 : 48241: 41 8b 06 mov (%r14),%eax 0.00 : 48244: 83 f8 30 cmp $0x30,%eax 0.00 : 48247: 0f 83 c1 12 00 00 jae 4950e <_IO_vfprintf+0x524e> 0.00 : 4824d: 89 c2 mov %eax,%edx 0.00 : 4824f: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48253: 83 c0 08 add $0x8,%eax 0.00 : 48256: 41 89 06 mov %eax,(%r14) 0.00 : 48259: 48 8b 02 mov (%rdx),%rax 0.00 : 4825c: 44 89 28 mov %r13d,(%rax) 0.00 : 4825f: e9 2c c6 ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 48264: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 48268: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4826d: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 48272: 0f 83 e2 12 00 00 jae 4955a <_IO_vfprintf+0x529a> 0.00 : 48278: c6 00 2b movb $0x2b,(%rax) 0.00 : 4827b: 48 83 c0 01 add $0x1,%rax 0.00 : 4827f: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 48284: e9 76 f0 ff ff jmpq 472ff <_IO_vfprintf+0x303f> 0.00 : 48289: 48 8b 15 68 ab 32 00 mov 0x32ab68(%rip),%rdx # 372df8 <__printf_va_arg_table> 0.00 : 48290: 48 85 d2 test %rdx,%rdx 0.00 : 48293: 0f 85 12 03 00 00 jne 485ab <_IO_vfprintf+0x42eb> 0.00 : 48299: d9 ee fldz 0.00 : 4829b: db 3b fstpt (%rbx) 0.00 : 4829d: e9 d6 ee ff ff jmpq 47178 <_IO_vfprintf+0x2eb8> 0.00 : 482a2: 48 8d 0d 67 a6 0f 00 lea 0xfa667(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 482a9: 48 8d 35 26 2a 0f 00 lea 0xf2a26(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 482b0: 48 8d 3d d9 65 0f 00 lea 0xf65d9(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 482b7: ba b6 07 00 00 mov $0x7b6,%edx 0.00 : 482bc: e8 5f 36 fe ff callq 2b920 <__assert_fail> 0.00 : 482c1: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 482c6: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 482cb: 0f 83 0e 01 00 00 jae 483df <_IO_vfprintf+0x411f> 0.00 : 482d1: c6 00 30 movb $0x30,(%rax) 0.00 : 482d4: 48 83 c0 01 add $0x1,%rax 0.00 : 482d8: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 482dd: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 482e4: 0f 84 e7 e5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 482ea: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 482ef: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 482f4: 0f 83 c8 00 00 00 jae 483c2 <_IO_vfprintf+0x4102> 0.00 : 482fa: 0f b6 95 73 fa ff ff movzbl -0x58d(%rbp),%edx 0.00 : 48301: 88 10 mov %dl,(%rax) 0.00 : 48303: 48 83 c0 01 add $0x1,%rax 0.00 : 48307: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4830c: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 48313: 0f 84 b8 e5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48319: 41 83 c5 02 add $0x2,%r13d 0.00 : 4831d: 83 ad 64 fa ff ff 02 subl $0x2,-0x59c(%rbp) 0.00 : 48324: e9 fb e8 ff ff jmpq 46c24 <_IO_vfprintf+0x2964> 0.00 : 48329: 48 8d 5d 98 lea -0x68(%rbp),%rbx 0.00 : 4832d: 48 8b 8d 68 f8 ff ff mov -0x798(%rbp),%rcx 0.00 : 48334: 31 d2 xor %edx,%edx 0.00 : 48336: 31 ff xor %edi,%edi 0.00 : 48338: 48 89 de mov %rbx,%rsi 0.00 : 4833b: 48 89 9d 70 f8 ff ff mov %rbx,-0x790(%rbp) 0.00 : 48342: e8 29 4f 04 00 callq 8d270 0.00 : 48347: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 4834b: 48 89 c3 mov %rax,%rbx 0.00 : 4834e: 0f 84 7d e5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48354: 8b 45 a0 mov -0x60(%rbp),%eax 0.00 : 48357: 85 c0 test %eax,%eax 0.00 : 48359: 0f 85 ee 05 00 00 jne 4894d <_IO_vfprintf+0x468d> 0.00 : 4835f: 48 8d 7b 01 lea 0x1(%rbx),%rdi 0.00 : 48363: 4c 89 7d 98 mov %r15,-0x68(%rbp) 0.00 : 48367: 48 81 ff 00 10 00 00 cmp $0x1000,%rdi 0.00 : 4836e: 48 89 bd e8 f8 ff ff mov %rdi,-0x718(%rbp) 0.00 : 48375: 0f 87 9a 05 00 00 ja 48915 <_IO_vfprintf+0x4655> 0.00 : 4837b: 48 8b 85 e8 f8 ff ff mov -0x718(%rbp),%rax 0.00 : 48382: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 48389: 00 00 00 0.00 : 4838c: 48 83 c0 1e add $0x1e,%rax 0.00 : 48390: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 48394: 48 29 c4 sub %rax,%rsp 0.00 : 48397: 4c 8d 7c 24 0f lea 0xf(%rsp),%r15 0.00 : 4839c: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 483a0: 48 8b 8d 68 f8 ff ff mov -0x798(%rbp),%rcx 0.00 : 483a7: 48 8b 95 e8 f8 ff ff mov -0x718(%rbp),%rdx 0.00 : 483ae: 4c 89 ff mov %r15,%rdi 0.00 : 483b1: 48 8b b5 70 f8 ff ff mov -0x790(%rbp),%rsi 0.00 : 483b8: e8 b3 4e 04 00 callq 8d270 0.00 : 483bd: e9 48 d6 ff ff jmpq 45a0a <_IO_vfprintf+0x174a> 0.00 : 483c2: 0f b6 b5 73 fa ff ff movzbl -0x58d(%rbp),%esi 0.00 : 483c9: 4c 89 e7 mov %r12,%rdi 0.00 : 483cc: e8 cf b9 02 00 callq 73da0 <__overflow> 0.00 : 483d1: 83 c0 01 add $0x1,%eax 0.00 : 483d4: 0f 85 32 ff ff ff jne 4830c <_IO_vfprintf+0x404c> 0.00 : 483da: e9 f2 e4 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 483df: be 30 00 00 00 mov $0x30,%esi 0.00 : 483e4: 4c 89 e7 mov %r12,%rdi 0.00 : 483e7: e8 b4 b9 02 00 callq 73da0 <__overflow> 0.00 : 483ec: 83 c0 01 add $0x1,%eax 0.00 : 483ef: 90 nop 0.00 : 483f0: 0f 85 e7 fe ff ff jne 482dd <_IO_vfprintf+0x401d> 0.00 : 483f6: e9 d6 e4 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 483fb: 48 8d 0d 0e a5 0f 00 lea 0xfa50e(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 48402: 48 8d 35 cd 28 0f 00 lea 0xf28cd(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 48409: 48 8d 3d b0 64 0f 00 lea 0xf64b0(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 48410: ba b6 07 00 00 mov $0x7b6,%edx 0.00 : 48415: e8 06 35 fe ff callq 2b920 <__assert_fail> 0.00 : 4841a: f7 d8 neg %eax 0.00 : 4841c: 83 ca 20 or $0x20,%edx 0.00 : 4841f: 41 89 47 04 mov %eax,0x4(%r15) 0.00 : 48423: 41 88 57 0c mov %dl,0xc(%r15) 0.00 : 48427: c7 85 48 fa ff ff 01 movl $0x1,-0x5b8(%rbp) 0.00 : 4842e: 00 00 00 0.00 : 48431: e9 0a c8 ff ff jmpq 44c40 <_IO_vfprintf+0x980> 0.00 : 48436: 48 8d 0d d3 a4 0f 00 lea 0xfa4d3(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 4843d: 48 8d 35 92 28 0f 00 lea 0xf2892(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 48444: 48 8d 3d 75 64 0f 00 lea 0xf6475(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 4844b: ba db 07 00 00 mov $0x7db,%edx 0.00 : 48450: e8 cb 34 fe ff callq 2b920 <__assert_fail> 0.00 : 48455: 48 89 df mov %rbx,%rdi 0.00 : 48458: e8 63 f7 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 4845d: 85 c0 test %eax,%eax 0.00 : 4845f: 0f 85 64 c8 ff ff jne 44cc9 <_IO_vfprintf+0xa09> 0.00 : 48465: 48 89 df mov %rbx,%rdi 0.00 : 48468: e8 e3 63 fd ff callq 1e850 0.00 : 4846d: 48 89 85 58 f9 ff ff mov %rax,-0x6a8(%rbp) 0.00 : 48474: 48 63 85 04 f9 ff ff movslq -0x6fc(%rbp),%rax 0.00 : 4847b: 48 8b 95 58 f9 ff ff mov -0x6a8(%rbp),%rdx 0.00 : 48482: 48 8d 44 02 20 lea 0x20(%rdx,%rax,1),%rax 0.00 : 48487: 48 89 85 60 f9 ff ff mov %rax,-0x6a0(%rbp) 0.00 : 4848e: e9 68 c8 ff ff jmpq 44cfb <_IO_vfprintf+0xa3b> 0.00 : 48493: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 48499: 48 8b a5 18 f9 ff ff mov -0x6e8(%rbp),%rsp 0.00 : 484a0: e9 32 e4 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 484a5: 41 8b 06 mov (%r14),%eax 0.00 : 484a8: 83 f8 30 cmp $0x30,%eax 0.00 : 484ab: 73 61 jae 4850e <_IO_vfprintf+0x424e> 0.00 : 484ad: 89 c1 mov %eax,%ecx 0.00 : 484af: 49 03 4e 10 add 0x10(%r14),%rcx 0.00 : 484b3: 83 c0 08 add $0x8,%eax 0.00 : 484b6: 41 89 06 mov %eax,(%r14) 0.00 : 484b9: 8b 31 mov (%rcx),%esi 0.00 : 484bb: e9 07 c5 ff ff jmpq 449c7 <_IO_vfprintf+0x707> 0.00 : 484c0: 48 89 df mov %rbx,%rdi 0.00 : 484c3: e8 f8 f6 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 484c8: 85 c0 test %eax,%eax 0.00 : 484ca: 0f 85 8f ca ff ff jne 44f5f <_IO_vfprintf+0xc9f> 0.00 : 484d0: 48 89 df mov %rbx,%rdi 0.00 : 484d3: e8 78 63 fd ff callq 1e850 0.00 : 484d8: 48 85 c0 test %rax,%rax 0.00 : 484db: 49 89 c7 mov %rax,%r15 0.00 : 484de: 0f 84 ed e3 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 484e4: c7 85 74 fa ff ff 01 movl $0x1,-0x58c(%rbp) 0.00 : 484eb: 00 00 00 0.00 : 484ee: e9 8a ca ff ff jmpq 44f7d <_IO_vfprintf+0xcbd> 0.00 : 484f3: be 20 00 00 00 mov $0x20,%esi 0.00 : 484f8: 4c 89 e7 mov %r12,%rdi 0.00 : 484fb: e8 a0 b8 02 00 callq 73da0 <__overflow> 0.00 : 48500: 83 c0 01 add $0x1,%eax 0.00 : 48503: 0f 85 f6 ed ff ff jne 472ff <_IO_vfprintf+0x303f> 0.00 : 48509: e9 c3 e3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 4850e: 49 8b 4e 08 mov 0x8(%r14),%rcx 0.00 : 48512: 48 8d 41 08 lea 0x8(%rcx),%rax 0.00 : 48516: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4851a: eb 9d jmp 484b9 <_IO_vfprintf+0x41f9> 0.00 : 4851c: 48 8d 0d ed a3 0f 00 lea 0xfa3ed(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 48523: 48 8d 35 ac 27 0f 00 lea 0xf27ac(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 4852a: 48 8d 3d 8f 63 0f 00 lea 0xf638f(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 48531: ba 42 06 00 00 mov $0x642,%edx 0.00 : 48536: e8 e5 33 fe ff callq 2b920 <__assert_fail> 0.00 : 4853b: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 48541: 48 8b a5 d8 f8 ff ff mov -0x728(%rbp),%rsp 0.00 : 48548: e9 8a e3 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 4854d: 4c 89 e7 mov %r12,%rdi 0.00 : 48550: e8 4b b8 02 00 callq 73da0 <__overflow> 0.00 : 48555: 83 c0 01 add $0x1,%eax 0.00 : 48558: 0f 85 0f c9 ff ff jne 44e6d <_IO_vfprintf+0xbad> 0.00 : 4855e: 66 90 xchg %ax,%ax 0.00 : 48560: e9 6c e3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48565: 41 8b 06 mov (%r14),%eax 0.00 : 48568: 83 f8 30 cmp $0x30,%eax 0.00 : 4856b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 48570: 0f 83 4d 01 00 00 jae 486c3 <_IO_vfprintf+0x4403> 0.00 : 48576: 89 c2 mov %eax,%edx 0.00 : 48578: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 4857c: 83 c0 08 add $0x8,%eax 0.00 : 4857f: 41 89 06 mov %eax,(%r14) 0.00 : 48582: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48587: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4858c: 0f b6 32 movzbl (%rdx),%esi 0.00 : 4858f: 0f 82 cc c8 ff ff jb 44e61 <_IO_vfprintf+0xba1> 0.00 : 48595: 4c 89 e7 mov %r12,%rdi 0.00 : 48598: e8 03 b8 02 00 callq 73da0 <__overflow> 0.00 : 4859d: 83 c0 01 add $0x1,%eax 0.00 : 485a0: 0f 85 c7 c8 ff ff jne 44e6d <_IO_vfprintf+0xbad> 0.00 : 485a6: e9 26 e3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 485ab: 48 98 cltq 0.00 : 485ad: 48 83 7c c2 c0 00 cmpq $0x0,-0x40(%rdx,%rax,8) 0.00 : 485b3: 0f 84 e0 fc ff ff je 48299 <_IO_vfprintf+0x3fd9> 0.00 : 485b9: 48 8b 8d 10 fa ff ff mov -0x5f0(%rbp),%rcx 0.00 : 485c0: 4a 63 04 b9 movslq (%rcx,%r15,4),%rax 0.00 : 485c4: 48 83 c0 1e add $0x1e,%rax 0.00 : 485c8: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 485cc: 48 29 c4 sub %rax,%rsp 0.00 : 485cf: 48 8d 7c 24 0f lea 0xf(%rsp),%rdi 0.00 : 485d4: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 485d8: 48 89 3b mov %rdi,(%rbx) 0.00 : 485db: 48 8b 85 18 fa ff ff mov -0x5e8(%rbp),%rax 0.00 : 485e2: 48 8b b5 50 f8 ff ff mov -0x7b0(%rbp),%rsi 0.00 : 485e9: 4a 63 14 b8 movslq (%rax,%r15,4),%rdx 0.00 : 485ed: 48 8b 05 04 a8 32 00 mov 0x32a804(%rip),%rax # 372df8 <__printf_va_arg_table> 0.00 : 485f4: ff 54 d0 c0 callq *-0x40(%rax,%rdx,8) 0.00 : 485f8: e9 7b eb ff ff jmpq 47178 <_IO_vfprintf+0x2eb8> 0.00 : 485fd: 0f b6 85 73 fa ff ff movzbl -0x58d(%rbp),%eax 0.00 : 48604: 8b 95 24 f8 ff ff mov -0x7dc(%rbp),%edx 0.00 : 4860a: 83 e8 20 sub $0x20,%eax 0.00 : 4860d: 3c 5a cmp $0x5a,%al 0.00 : 4860f: 77 21 ja 48632 <_IO_vfprintf+0x4372> 0.00 : 48611: 0f be 85 73 fa ff ff movsbl -0x58d(%rbp),%eax 0.00 : 48618: 48 8d 15 61 c8 0e 00 lea 0xec861(%rip),%rdx # 134e80 0.00 : 4861f: 83 e8 20 sub $0x20,%eax 0.00 : 48622: 48 98 cltq 0.00 : 48624: 0f b6 14 02 movzbl (%rdx,%rax,1),%edx 0.00 : 48628: 48 8d 05 d1 c4 0e 00 lea 0xec4d1(%rip),%rax # 134b00 0.00 : 4862f: 8b 14 90 mov (%rax,%rdx,4),%edx 0.00 : 48632: 0f b6 85 f8 f8 ff ff movzbl -0x708(%rbp),%eax 0.00 : 48639: 0f b6 bd f7 f8 ff ff movzbl -0x709(%rbp),%edi 0.00 : 48640: 0f b6 8d f9 f8 ff ff movzbl -0x707(%rbp),%ecx 0.00 : 48647: 0f b6 9d fa f8 ff ff movzbl -0x706(%rbp),%ebx 0.00 : 4864e: 89 85 44 fa ff ff mov %eax,-0x5bc(%rbp) 0.00 : 48654: 0f b6 85 fc f8 ff ff movzbl -0x704(%rbp),%eax 0.00 : 4865b: 89 bd 40 fa ff ff mov %edi,-0x5c0(%rbp) 0.00 : 48661: 0f b6 bd fb f8 ff ff movzbl -0x705(%rbp),%edi 0.00 : 48668: 89 8d 4c fa ff ff mov %ecx,-0x5b4(%rbp) 0.00 : 4866e: 89 9d 50 fa ff ff mov %ebx,-0x5b0(%rbp) 0.00 : 48674: 0f b6 8d fd f8 ff ff movzbl -0x703(%rbp),%ecx 0.00 : 4867b: 0f b6 9d fe f8 ff ff movzbl -0x702(%rbp),%ebx 0.00 : 48682: 89 85 58 fa ff ff mov %eax,-0x5a8(%rbp) 0.00 : 48688: 0f b6 85 00 f9 ff ff movzbl -0x700(%rbp),%eax 0.00 : 4868f: 89 bd 54 fa ff ff mov %edi,-0x5ac(%rbp) 0.00 : 48695: 0f b6 bd ff f8 ff ff movzbl -0x701(%rbp),%edi 0.00 : 4869c: 89 8d 5c fa ff ff mov %ecx,-0x5a4(%rbp) 0.00 : 486a2: 89 9d 60 fa ff ff mov %ebx,-0x5a0(%rbp) 0.00 : 486a8: 88 85 72 fa ff ff mov %al,-0x58e(%rbp) 0.00 : 486ae: 48 63 c2 movslq %edx,%rax 0.00 : 486b1: 48 8d 15 22 d6 ff ff lea -0x29de(%rip),%rdx # 45cda <_IO_vfprintf+0x1a1a> 0.00 : 486b8: 89 bd 6c fa ff ff mov %edi,-0x594(%rbp) 0.00 : 486be: 48 01 c2 add %rax,%rdx 0.00 : 486c1: ff e2 jmpq *%rdx 0.00 : 486c3: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 486c7: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 486cb: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 486cf: e9 ae fe ff ff jmpq 48582 <_IO_vfprintf+0x42c2> 0.00 : 486d4: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 486d9: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 486de: 73 34 jae 48714 <_IO_vfprintf+0x4454> 0.00 : 486e0: c6 00 49 movb $0x49,(%rax) 0.00 : 486e3: 48 83 c0 01 add $0x1,%rax 0.00 : 486e7: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 486ec: 83 c3 01 add $0x1,%ebx 0.00 : 486ef: e9 ac ca ff ff jmpq 451a0 <_IO_vfprintf+0xee0> 0.00 : 486f4: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 486f9: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 486fe: 73 2b jae 4872b <_IO_vfprintf+0x446b> 0.00 : 48700: c6 00 30 movb $0x30,(%rax) 0.00 : 48703: 48 83 c0 01 add $0x1,%rax 0.00 : 48707: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4870c: 83 c3 01 add $0x1,%ebx 0.00 : 4870f: e9 7b ca ff ff jmpq 4518f <_IO_vfprintf+0xecf> 0.00 : 48714: be 49 00 00 00 mov $0x49,%esi 0.00 : 48719: 4c 89 e7 mov %r12,%rdi 0.00 : 4871c: e8 7f b6 02 00 callq 73da0 <__overflow> 0.00 : 48721: 83 c0 01 add $0x1,%eax 0.00 : 48724: 75 c6 jne 486ec <_IO_vfprintf+0x442c> 0.00 : 48726: e9 a6 e1 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 4872b: be 30 00 00 00 mov $0x30,%esi 0.00 : 48730: 4c 89 e7 mov %r12,%rdi 0.00 : 48733: e8 68 b6 02 00 callq 73da0 <__overflow> 0.00 : 48738: 83 c0 01 add $0x1,%eax 0.00 : 4873b: 75 cf jne 4870c <_IO_vfprintf+0x444c> 0.00 : 4873d: e9 8f e1 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48742: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48747: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4874c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 48750: 73 46 jae 48798 <_IO_vfprintf+0x44d8> 0.00 : 48752: c6 00 20 movb $0x20,(%rax) 0.00 : 48755: 48 83 c0 01 add $0x1,%rax 0.00 : 48759: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4875e: 48 8b bd d8 fa ff ff mov -0x528(%rbp),%rdi 0.00 : 48765: 83 c3 01 add $0x1,%ebx 0.00 : 48768: 0f b6 47 0c movzbl 0xc(%rdi),%eax 0.00 : 4876c: e9 05 ca ff ff jmpq 45176 <_IO_vfprintf+0xeb6> 0.00 : 48771: 41 8b 46 04 mov 0x4(%r14),%eax 0.00 : 48775: 3d b0 00 00 00 cmp $0xb0,%eax 0.00 : 4877a: 73 33 jae 487af <_IO_vfprintf+0x44ef> 0.00 : 4877c: 89 c2 mov %eax,%edx 0.00 : 4877e: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48782: 83 c0 10 add $0x10,%eax 0.00 : 48785: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 48789: 48 8b 02 mov (%rdx),%rax 0.00 : 4878c: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 48793: e9 85 f7 ff ff jmpq 47f1d <_IO_vfprintf+0x3c5d> 0.00 : 48798: be 20 00 00 00 mov $0x20,%esi 0.00 : 4879d: 4c 89 e7 mov %r12,%rdi 0.00 : 487a0: e8 fb b5 02 00 callq 73da0 <__overflow> 0.00 : 487a5: 83 c0 01 add $0x1,%eax 0.00 : 487a8: 75 b4 jne 4875e <_IO_vfprintf+0x449e> 0.00 : 487aa: e9 22 e1 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 487af: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 487b3: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 487b7: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 487bb: eb cc jmp 48789 <_IO_vfprintf+0x44c9> 0.00 : 487bd: 41 8b 46 04 mov 0x4(%r14),%eax 0.00 : 487c1: 3d b0 00 00 00 cmp $0xb0,%eax 0.00 : 487c6: 73 47 jae 4880f <_IO_vfprintf+0x454f> 0.00 : 487c8: 89 c2 mov %eax,%edx 0.00 : 487ca: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 487ce: 83 c0 10 add $0x10,%eax 0.00 : 487d1: 41 89 46 04 mov %eax,0x4(%r14) 0.00 : 487d5: 48 8b 02 mov (%rdx),%rax 0.00 : 487d8: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : 487df: e9 42 f9 ff ff jmpq 48126 <_IO_vfprintf+0x3e66> 0.00 : 487e4: be 23 00 00 00 mov $0x23,%esi 0.00 : 487e9: 4c 89 e7 mov %r12,%rdi 0.00 : 487ec: e8 af b5 02 00 callq 73da0 <__overflow> 0.00 : 487f1: 83 c0 01 add $0x1,%eax 0.00 : 487f4: 0f 84 d7 e0 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 487fa: 48 8b 8d d8 fa ff ff mov -0x528(%rbp),%rcx 0.00 : 48801: bb 02 00 00 00 mov $0x2,%ebx 0.00 : 48806: 0f b6 41 0c movzbl 0xc(%rcx),%eax 0.00 : 4880a: e9 4a c9 ff ff jmpq 45159 <_IO_vfprintf+0xe99> 0.00 : 4880f: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48813: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48817: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4881b: eb b8 jmp 487d5 <_IO_vfprintf+0x4515> 0.00 : 4881d: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48821: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48825: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48829: e9 9a f9 ff ff jmpq 481c8 <_IO_vfprintf+0x3f08> 0.00 : 4882e: be 27 00 00 00 mov $0x27,%esi 0.00 : 48833: 4c 89 e7 mov %r12,%rdi 0.00 : 48836: e8 65 b5 02 00 callq 73da0 <__overflow> 0.00 : 4883b: 83 c0 01 add $0x1,%eax 0.00 : 4883e: 0f 85 dc f9 ff ff jne 48220 <_IO_vfprintf+0x3f60> 0.00 : 48844: e9 88 e0 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48849: 48 8b bd b0 f8 ff ff mov -0x750(%rbp),%rdi 0.00 : 48850: e8 5b 83 03 00 callq 80bb0 <__GI_strlen> 0.00 : 48855: 48 8b bd b0 f8 ff ff mov -0x750(%rbp),%rdi 0.00 : 4885c: 48 8d 70 01 lea 0x1(%rax),%rsi 0.00 : 48860: e8 4b 6f 0a 00 callq ef7b0 <__readonly_area> 0.00 : 48865: 85 c0 test %eax,%eax 0.00 : 48867: 89 85 74 f9 ff ff mov %eax,-0x68c(%rbp) 0.00 : 4886d: 0f 89 9e d0 ff ff jns 45911 <_IO_vfprintf+0x1651> 0.00 : 48873: 48 8d 3d 6e 60 0f 00 lea 0xf606e(%rip),%rdi # 13e8e8 <__PRETTY_FUNCTION__.11129+0xf0f> 0.00 : 4887a: e8 51 86 02 00 callq 70ed0 <__libc_fatal> 0.00 : 4887f: 48 8d 3d 92 60 0f 00 lea 0xf6092(%rip),%rdi # 13e918 <__PRETTY_FUNCTION__.11129+0xf3f> 0.00 : 48886: e8 45 86 02 00 callq 70ed0 <__libc_fatal> 0.00 : 4888b: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 48890: 4c 89 e7 mov %r12,%rdi 0.00 : 48893: e8 08 b5 02 00 callq 73da0 <__overflow> 0.00 : 48898: 83 c0 01 add $0x1,%eax 0.00 : 4889b: 0f 85 a7 ee ff ff jne 47748 <_IO_vfprintf+0x3488> 0.00 : 488a1: e9 2b e0 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 488a6: be 25 00 00 00 mov $0x25,%esi 0.00 : 488ab: 4c 89 e7 mov %r12,%rdi 0.00 : 488ae: 66 90 xchg %ax,%ax 0.00 : 488b0: e8 eb b4 02 00 callq 73da0 <__overflow> 0.00 : 488b5: 83 c0 01 add $0x1,%eax 0.00 : 488b8: 0f 85 83 c8 ff ff jne 45141 <_IO_vfprintf+0xe81> 0.00 : 488be: 66 90 xchg %ax,%ax 0.00 : 488c0: e9 0c e0 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 488c5: 48 89 df mov %rbx,%rdi 0.00 : 488c8: e8 f3 f2 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 488cd: 85 c0 test %eax,%eax 0.00 : 488cf: 90 nop 0.00 : 488d0: 0f 85 e5 d0 ff ff jne 459bb <_IO_vfprintf+0x16fb> 0.00 : 488d6: 48 89 df mov %rbx,%rdi 0.00 : 488d9: e8 72 5f fd ff callq 1e850 0.00 : 488de: 48 85 c0 test %rax,%rax 0.00 : 488e1: 49 89 c7 mov %rax,%r15 0.00 : 488e4: 0f 84 e7 df ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 488ea: c7 85 ec f9 ff ff 01 movl $0x1,-0x614(%rbp) 0.00 : 488f1: 00 00 00 0.00 : 488f4: e9 e0 d0 ff ff jmpq 459d9 <_IO_vfprintf+0x1719> 0.00 : 488f9: be 20 00 00 00 mov $0x20,%esi 0.00 : 488fe: 4c 89 e7 mov %r12,%rdi 0.00 : 48901: e8 9a b4 02 00 callq 73da0 <__overflow> 0.00 : 48906: 83 c0 01 add $0x1,%eax 0.00 : 48909: 0f 85 5a ec ff ff jne 47569 <_IO_vfprintf+0x32a9> 0.00 : 4890f: 90 nop 0.00 : 48910: e9 bc df ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48915: 0f 1f 00 nopl (%rax) 0.00 : 48918: e8 a3 f2 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 4891d: 85 c0 test %eax,%eax 0.00 : 4891f: 90 nop 0.00 : 48920: 0f 85 55 fa ff ff jne 4837b <_IO_vfprintf+0x40bb> 0.00 : 48926: 48 8b bd e8 f8 ff ff mov -0x718(%rbp),%rdi 0.00 : 4892d: e8 1e 5f fd ff callq 1e850 0.00 : 48932: 48 85 c0 test %rax,%rax 0.00 : 48935: 49 89 c7 mov %rax,%r15 0.00 : 48938: 0f 84 93 df ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 4893e: c7 85 ec f9 ff ff 01 movl $0x1,-0x614(%rbp) 0.00 : 48945: 00 00 00 0.00 : 48948: e9 53 fa ff ff jmpq 483a0 <_IO_vfprintf+0x40e0> 0.00 : 4894d: 48 8d 0d bc 9f 0f 00 lea 0xf9fbc(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 48954: 48 8d 35 7b 23 0f 00 lea 0xf237b(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 4895b: 48 8d 3d 85 23 0f 00 lea 0xf2385(%rip),%rdi # 13ace7 <__PRETTY_FUNCTION__.9779+0x9b> 0.00 : 48962: ba 42 06 00 00 mov $0x642,%edx 0.00 : 48967: e8 b4 2f fe ff callq 2b920 <__assert_fail> 0.00 : 4896c: 48 8b 95 58 f8 ff ff mov -0x7a8(%rbp),%rdx 0.00 : 48973: 48 8b 05 be 94 32 00 mov 0x3294be(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 4897a: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 48980: c7 04 02 22 00 00 00 movl $0x22,(%rdx,%rax,1) 0.00 : 48987: e9 4b df ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 4898c: 41 8b 06 mov (%r14),%eax 0.00 : 4898f: 83 f8 30 cmp $0x30,%eax 0.00 : 48992: 0f 83 c4 00 00 00 jae 48a5c <_IO_vfprintf+0x479c> 0.00 : 48998: 89 c2 mov %eax,%edx 0.00 : 4899a: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 4899e: 83 c0 08 add $0x8,%eax 0.00 : 489a1: 41 89 06 mov %eax,(%r14) 0.00 : 489a4: 4c 8b 3a mov (%rdx),%r15 0.00 : 489a7: e9 61 c5 ff ff jmpq 44f0d <_IO_vfprintf+0xc4d> 0.00 : 489ac: 48 89 9d 80 f9 ff ff mov %rbx,-0x680(%rbp) 0.00 : 489b3: 48 89 8d 48 f9 ff ff mov %rcx,-0x6b8(%rbp) 0.00 : 489ba: 48 c7 85 e0 fa ff ff movq $0x0,-0x520(%rbp) 0.00 : 489c1: 00 00 00 00 0.00 : 489c5: 48 c7 85 00 fa ff ff movq $0x0,-0x600(%rbp) 0.00 : 489cc: 00 00 00 00 0.00 : 489d0: 48 c7 85 f8 f9 ff ff movq $0x0,-0x608(%rbp) 0.00 : 489d7: 00 00 00 00 0.00 : 489db: e9 dd e5 ff ff jmpq 46fbd <_IO_vfprintf+0x2cfd> 0.00 : 489e0: 48 89 bd 48 f9 ff ff mov %rdi,-0x6b8(%rbp) 0.00 : 489e7: c7 85 ec fa ff ff ff movl $0xffffffff,-0x514(%rbp) 0.00 : 489ee: ff ff ff 0.00 : 489f1: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 489f6: b8 01 00 00 00 mov $0x1,%eax 0.00 : 489fb: e9 41 cc ff ff jmpq 45641 <_IO_vfprintf+0x1381> 0.00 : 48a00: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48a04: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48a08: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48a0c: e9 dd ee ff ff jmpq 478ee <_IO_vfprintf+0x362e> 0.00 : 48a11: 48 8b 05 70 93 32 00 mov 0x329370(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 48a18: 48 8b 8d 58 f8 ff ff mov -0x7a8(%rbp),%rcx 0.00 : 48a1f: 48 8b 04 01 mov (%rcx,%rax,1),%rax 0.00 : 48a23: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 48a27: 48 8b 78 48 mov 0x48(%rax),%rdi 0.00 : 48a2b: 48 89 bd 38 f9 ff ff mov %rdi,-0x6c8(%rbp) 0.00 : 48a32: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 48a36: 48 89 85 40 f9 ff ff mov %rax,-0x6c0(%rbp) 0.00 : 48a3d: 0f b6 00 movzbl (%rax),%eax 0.00 : 48a40: 84 c0 test %al,%al 0.00 : 48a42: 74 08 je 48a4c <_IO_vfprintf+0x478c> 0.00 : 48a44: 3c 7f cmp $0x7f,%al 0.00 : 48a46: 0f 85 d4 d2 ff ff jne 45d20 <_IO_vfprintf+0x1a60> 0.00 : 48a4c: 48 c7 85 40 f9 ff ff movq $0x0,-0x6c0(%rbp) 0.00 : 48a53: 00 00 00 00 0.00 : 48a57: e9 c4 d2 ff ff jmpq 45d20 <_IO_vfprintf+0x1a60> 0.00 : 48a5c: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48a60: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48a64: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48a68: e9 37 ff ff ff jmpq 489a4 <_IO_vfprintf+0x46e4> 0.00 : 48a6d: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48a71: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48a75: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48a79: e9 98 ef ff ff jmpq 47a16 <_IO_vfprintf+0x3756> 0.00 : 48a7e: 8b 85 5c fa ff ff mov -0x5a4(%rbp),%eax 0.00 : 48a84: 85 c0 test %eax,%eax 0.00 : 48a86: 0f 84 19 01 00 00 je 48ba5 <_IO_vfprintf+0x48e5> 0.00 : 48a8c: 41 8b 06 mov (%r14),%eax 0.00 : 48a8f: 83 f8 30 cmp $0x30,%eax 0.00 : 48a92: 0f 83 fc 00 00 00 jae 48b94 <_IO_vfprintf+0x48d4> 0.00 : 48a98: 89 c2 mov %eax,%edx 0.00 : 48a9a: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48a9e: 83 c0 08 add $0x8,%eax 0.00 : 48aa1: 41 89 06 mov %eax,(%r14) 0.00 : 48aa4: 0f b6 12 movzbl (%rdx),%edx 0.00 : 48aa7: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 48aae: 00 00 00 0.00 : 48ab1: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 48ab8: 00 00 00 0.00 : 48abb: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 48ac2: 00 00 00 0.00 : 48ac5: 48 89 95 08 f9 ff ff mov %rdx,-0x6f8(%rbp) 0.00 : 48acc: e9 42 d4 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 48ad1: 4c 89 ff mov %r15,%rdi 0.00 : 48ad4: e8 d7 80 03 00 callq 80bb0 <__GI_strlen> 0.00 : 48ad9: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 48ae0: 00 00 00 0.00 : 48ae3: 48 89 c3 mov %rax,%rbx 0.00 : 48ae6: 89 85 88 fa ff ff mov %eax,-0x578(%rbp) 0.00 : 48aec: e9 b8 c4 ff ff jmpq 44fa9 <_IO_vfprintf+0xce9> 0.00 : 48af1: 48 8d bd 78 ff ff ff lea -0x88(%rbp),%rdi 0.00 : 48af8: 48 8b 8d 30 f8 ff ff mov -0x7d0(%rbp),%rcx 0.00 : 48aff: 31 d2 xor %edx,%edx 0.00 : 48b01: 48 89 bd 80 f8 ff ff mov %rdi,-0x780(%rbp) 0.00 : 48b08: 48 89 fe mov %rdi,%rsi 0.00 : 48b0b: 31 ff xor %edi,%edi 0.00 : 48b0d: e8 5e 47 04 00 callq 8d270 0.00 : 48b12: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 48b16: 48 89 c3 mov %rax,%rbx 0.00 : 48b19: 0f 84 b2 dd ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48b1f: 44 8b 8d 60 ff ff ff mov -0xa0(%rbp),%r9d 0.00 : 48b26: 45 85 c9 test %r9d,%r9d 0.00 : 48b29: 0f 85 ff 00 00 00 jne 48c2e <_IO_vfprintf+0x496e> 0.00 : 48b2f: 48 8d 40 01 lea 0x1(%rax),%rax 0.00 : 48b33: 4c 89 bd 78 ff ff ff mov %r15,-0x88(%rbp) 0.00 : 48b3a: 48 3d 00 10 00 00 cmp $0x1000,%rax 0.00 : 48b40: 48 89 85 28 f9 ff ff mov %rax,-0x6d8(%rbp) 0.00 : 48b47: 0f 87 aa 00 00 00 ja 48bf7 <_IO_vfprintf+0x4937> 0.00 : 48b4d: 48 8b 85 28 f9 ff ff mov -0x6d8(%rbp),%rax 0.00 : 48b54: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 48b5b: 00 00 00 0.00 : 48b5e: 48 83 c0 1e add $0x1e,%rax 0.00 : 48b62: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 48b66: 48 29 c4 sub %rax,%rsp 0.00 : 48b69: 4c 8d 7c 24 0f lea 0xf(%rsp),%r15 0.00 : 48b6e: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 48b72: 48 8b 8d 30 f8 ff ff mov -0x7d0(%rbp),%rcx 0.00 : 48b79: 48 8b 95 28 f9 ff ff mov -0x6d8(%rbp),%rdx 0.00 : 48b80: 4c 89 ff mov %r15,%rdi 0.00 : 48b83: 48 8b b5 80 f8 ff ff mov -0x780(%rbp),%rsi 0.00 : 48b8a: e8 e1 46 04 00 callq 8d270 0.00 : 48b8f: e9 0f c4 ff ff jmpq 44fa3 <_IO_vfprintf+0xce3> 0.00 : 48b94: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48b98: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48b9c: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48ba0: e9 ff fe ff ff jmpq 48aa4 <_IO_vfprintf+0x47e4> 0.00 : 48ba5: 8b 85 58 fa ff ff mov -0x5a8(%rbp),%eax 0.00 : 48bab: 85 c0 test %eax,%eax 0.00 : 48bad: 0f 85 ab 00 00 00 jne 48c5e <_IO_vfprintf+0x499e> 0.00 : 48bb3: 41 8b 06 mov (%r14),%eax 0.00 : 48bb6: 83 f8 30 cmp $0x30,%eax 0.00 : 48bb9: 0f 83 8e 00 00 00 jae 48c4d <_IO_vfprintf+0x498d> 0.00 : 48bbf: 89 c2 mov %eax,%edx 0.00 : 48bc1: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48bc5: 83 c0 08 add $0x8,%eax 0.00 : 48bc8: 41 89 06 mov %eax,(%r14) 0.00 : 48bcb: 8b 12 mov (%rdx),%edx 0.00 : 48bcd: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 48bd4: 00 00 00 0.00 : 48bd7: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 48bde: 00 00 00 0.00 : 48be1: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 48be8: 00 00 00 0.00 : 48beb: 48 89 95 08 f9 ff ff mov %rdx,-0x6f8(%rbp) 0.00 : 48bf2: e9 1c d3 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 48bf7: 48 89 c7 mov %rax,%rdi 0.00 : 48bfa: e8 c1 ef 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 48bff: 85 c0 test %eax,%eax 0.00 : 48c01: 0f 85 46 ff ff ff jne 48b4d <_IO_vfprintf+0x488d> 0.00 : 48c07: 48 8b bd 28 f9 ff ff mov -0x6d8(%rbp),%rdi 0.00 : 48c0e: e8 3d 5c fd ff callq 1e850 0.00 : 48c13: 48 85 c0 test %rax,%rax 0.00 : 48c16: 49 89 c7 mov %rax,%r15 0.00 : 48c19: 0f 84 b2 dc ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48c1f: c7 85 74 fa ff ff 01 movl $0x1,-0x58c(%rbp) 0.00 : 48c26: 00 00 00 0.00 : 48c29: e9 44 ff ff ff jmpq 48b72 <_IO_vfprintf+0x48b2> 0.00 : 48c2e: 48 8d 0d db 9c 0f 00 lea 0xf9cdb(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 48c35: 48 8d 35 9a 20 0f 00 lea 0xf209a(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 48c3c: 48 8d 3d a4 20 0f 00 lea 0xf20a4(%rip),%rdi # 13ace7 <__PRETTY_FUNCTION__.9779+0x9b> 0.00 : 48c43: ba b6 07 00 00 mov $0x7b6,%edx 0.00 : 48c48: e8 d3 2c fe ff callq 2b920 <__assert_fail> 0.00 : 48c4d: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48c51: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48c55: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48c59: e9 6d ff ff ff jmpq 48bcb <_IO_vfprintf+0x490b> 0.00 : 48c5e: 41 8b 06 mov (%r14),%eax 0.00 : 48c61: 83 f8 30 cmp $0x30,%eax 0.00 : 48c64: 0f 83 85 00 00 00 jae 48cef <_IO_vfprintf+0x4a2f> 0.00 : 48c6a: 89 c2 mov %eax,%edx 0.00 : 48c6c: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48c70: 83 c0 08 add $0x8,%eax 0.00 : 48c73: 41 89 06 mov %eax,(%r14) 0.00 : 48c76: 0f b7 12 movzwl (%rdx),%edx 0.00 : 48c79: c7 85 20 fa ff ff 00 movl $0x0,-0x5e0(%rbp) 0.00 : 48c80: 00 00 00 0.00 : 48c83: c7 85 44 fa ff ff 00 movl $0x0,-0x5bc(%rbp) 0.00 : 48c8a: 00 00 00 0.00 : 48c8d: c7 85 4c fa ff ff 00 movl $0x0,-0x5b4(%rbp) 0.00 : 48c94: 00 00 00 0.00 : 48c97: 48 89 95 08 f9 ff ff mov %rdx,-0x6f8(%rbp) 0.00 : 48c9e: e9 70 d2 ff ff jmpq 45f13 <_IO_vfprintf+0x1c53> 0.00 : 48ca3: 8b 85 58 fa ff ff mov -0x5a8(%rbp),%eax 0.00 : 48ca9: 85 c0 test %eax,%eax 0.00 : 48cab: 75 72 jne 48d1f <_IO_vfprintf+0x4a5f> 0.00 : 48cad: 48 8b 9d 80 f9 ff ff mov -0x680(%rbp),%rbx 0.00 : 48cb4: 48 8b bd 08 fa ff ff mov -0x5f8(%rbp),%rdi 0.00 : 48cbb: 48 63 44 13 30 movslq 0x30(%rbx,%rdx,1),%rax 0.00 : 48cc0: 48 c1 e0 04 shl $0x4,%rax 0.00 : 48cc4: 48 63 14 07 movslq (%rdi,%rax,1),%rdx 0.00 : 48cc8: e9 1c d2 ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48ccd: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48cd1: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48cd5: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48cd9: e9 c5 e6 ff ff jmpq 473a3 <_IO_vfprintf+0x30e3> 0.00 : 48cde: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48ce2: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48ce6: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48cea: e9 51 ee ff ff jmpq 47b40 <_IO_vfprintf+0x3880> 0.00 : 48cef: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48cf3: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48cf7: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48cfb: e9 76 ff ff ff jmpq 48c76 <_IO_vfprintf+0x49b6> 0.00 : 48d00: 48 8d 0d 09 9c 0f 00 lea 0xf9c09(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 48d07: 48 8d 35 c8 1f 0f 00 lea 0xf1fc8(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 48d0e: 48 8d 3d ab 5b 0f 00 lea 0xf5bab(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 48d15: ba 41 06 00 00 mov $0x641,%edx 0.00 : 48d1a: e8 01 2c fe ff callq 2b920 <__assert_fail> 0.00 : 48d1f: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 48d26: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 48d2d: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 48d32: 48 c1 e0 04 shl $0x4,%rax 0.00 : 48d36: 48 0f bf 14 03 movswq (%rbx,%rax,1),%rdx 0.00 : 48d3b: e9 a9 d1 ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48d40: 48 8b 8d 58 f8 ff ff mov -0x7a8(%rbp),%rcx 0.00 : 48d47: 48 8b 15 ea 90 32 00 mov 0x3290ea(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 48d4e: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 48d54: c7 04 11 22 00 00 00 movl $0x22,(%rcx,%rdx,1) 0.00 : 48d5b: e9 77 db ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 48d60: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48d65: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 48d6a: 0f 83 92 00 00 00 jae 48e02 <_IO_vfprintf+0x4b42> 0.00 : 48d70: c6 00 30 movb $0x30,(%rax) 0.00 : 48d73: 48 83 c0 01 add $0x1,%rax 0.00 : 48d77: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 48d7c: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 48d83: 0f 84 48 db ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48d89: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 48d8e: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 48d93: 73 54 jae 48de9 <_IO_vfprintf+0x4b29> 0.00 : 48d95: 0f b6 95 73 fa ff ff movzbl -0x58d(%rbp),%edx 0.00 : 48d9c: 88 10 mov %dl,(%rax) 0.00 : 48d9e: 48 83 c0 01 add $0x1,%rax 0.00 : 48da2: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 48da7: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 48dae: 0f 84 1d db ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48db4: 41 83 c5 02 add $0x2,%r13d 0.00 : 48db8: e9 87 d2 ff ff jmpq 46044 <_IO_vfprintf+0x1d84> 0.00 : 48dbd: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48dc1: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48dc5: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48dc9: e9 c3 eb ff ff jmpq 47991 <_IO_vfprintf+0x36d1> 0.00 : 48dce: be 20 00 00 00 mov $0x20,%esi 0.00 : 48dd3: 4c 89 e7 mov %r12,%rdi 0.00 : 48dd6: e8 c5 af 02 00 callq 73da0 <__overflow> 0.00 : 48ddb: 83 c0 01 add $0x1,%eax 0.00 : 48dde: 0f 85 be e7 ff ff jne 475a2 <_IO_vfprintf+0x32e2> 0.00 : 48de4: e9 e8 da ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48de9: 0f b6 b5 73 fa ff ff movzbl -0x58d(%rbp),%esi 0.00 : 48df0: 4c 89 e7 mov %r12,%rdi 0.00 : 48df3: e8 a8 af 02 00 callq 73da0 <__overflow> 0.00 : 48df8: 83 c0 01 add $0x1,%eax 0.00 : 48dfb: 75 aa jne 48da7 <_IO_vfprintf+0x4ae7> 0.00 : 48dfd: e9 cf da ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48e02: be 30 00 00 00 mov $0x30,%esi 0.00 : 48e07: 4c 89 e7 mov %r12,%rdi 0.00 : 48e0a: e8 91 af 02 00 callq 73da0 <__overflow> 0.00 : 48e0f: 83 c0 01 add $0x1,%eax 0.00 : 48e12: 0f 85 64 ff ff ff jne 48d7c <_IO_vfprintf+0x4abc> 0.00 : 48e18: e9 b4 da ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48e1d: 8b b5 60 fa ff ff mov -0x5a0(%rbp),%esi 0.00 : 48e23: 85 f6 test %esi,%esi 0.00 : 48e25: 74 45 je 48e6c <_IO_vfprintf+0x4bac> 0.00 : 48e27: 41 8b 06 mov (%r14),%eax 0.00 : 48e2a: 83 f8 30 cmp $0x30,%eax 0.00 : 48e2d: 73 2f jae 48e5e <_IO_vfprintf+0x4b9e> 0.00 : 48e2f: 89 c2 mov %eax,%edx 0.00 : 48e31: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48e35: 83 c0 08 add $0x8,%eax 0.00 : 48e38: 41 89 06 mov %eax,(%r14) 0.00 : 48e3b: 48 8b 12 mov (%rdx),%rdx 0.00 : 48e3e: e9 a6 d0 ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48e43: be 25 00 00 00 mov $0x25,%esi 0.00 : 48e48: 4c 89 e7 mov %r12,%rdi 0.00 : 48e4b: e8 50 af 02 00 callq 73da0 <__overflow> 0.00 : 48e50: 83 c0 01 add $0x1,%eax 0.00 : 48e53: 0f 85 2b d0 ff ff jne 45e84 <_IO_vfprintf+0x1bc4> 0.00 : 48e59: e9 73 da ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48e5e: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48e62: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48e66: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48e6a: eb cf jmp 48e3b <_IO_vfprintf+0x4b7b> 0.00 : 48e6c: 8b 8d 5c fa ff ff mov -0x5a4(%rbp),%ecx 0.00 : 48e72: 85 c9 test %ecx,%ecx 0.00 : 48e74: 74 59 je 48ecf <_IO_vfprintf+0x4c0f> 0.00 : 48e76: 41 8b 06 mov (%r14),%eax 0.00 : 48e79: 83 f8 30 cmp $0x30,%eax 0.00 : 48e7c: 73 43 jae 48ec1 <_IO_vfprintf+0x4c01> 0.00 : 48e7e: 89 c2 mov %eax,%edx 0.00 : 48e80: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48e84: 83 c0 08 add $0x8,%eax 0.00 : 48e87: 41 89 06 mov %eax,(%r14) 0.00 : 48e8a: 48 0f be 12 movsbq (%rdx),%rdx 0.00 : 48e8e: e9 56 d0 ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48e93: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48e97: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48e9b: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48e9f: e9 3f eb ff ff jmpq 479e3 <_IO_vfprintf+0x3723> 0.00 : 48ea4: 41 8b 06 mov (%r14),%eax 0.00 : 48ea7: 83 f8 30 cmp $0x30,%eax 0.00 : 48eaa: 73 49 jae 48ef5 <_IO_vfprintf+0x4c35> 0.00 : 48eac: 89 c2 mov %eax,%edx 0.00 : 48eae: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48eb2: 83 c0 08 add $0x8,%eax 0.00 : 48eb5: 41 89 06 mov %eax,(%r14) 0.00 : 48eb8: 48 0f bf 12 movswq (%rdx),%rdx 0.00 : 48ebc: e9 ee da ff ff jmpq 469af <_IO_vfprintf+0x26ef> 0.00 : 48ec1: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48ec5: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48ec9: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48ecd: eb bb jmp 48e8a <_IO_vfprintf+0x4bca> 0.00 : 48ecf: 8b 95 58 fa ff ff mov -0x5a8(%rbp),%edx 0.00 : 48ed5: 85 d2 test %edx,%edx 0.00 : 48ed7: 75 38 jne 48f11 <_IO_vfprintf+0x4c51> 0.00 : 48ed9: 41 8b 06 mov (%r14),%eax 0.00 : 48edc: 83 f8 30 cmp $0x30,%eax 0.00 : 48edf: 73 22 jae 48f03 <_IO_vfprintf+0x4c43> 0.00 : 48ee1: 89 c2 mov %eax,%edx 0.00 : 48ee3: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48ee7: 83 c0 08 add $0x8,%eax 0.00 : 48eea: 41 89 06 mov %eax,(%r14) 0.00 : 48eed: 48 63 12 movslq (%rdx),%rdx 0.00 : 48ef0: e9 f4 cf ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48ef5: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48ef9: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48efd: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48f01: eb b5 jmp 48eb8 <_IO_vfprintf+0x4bf8> 0.00 : 48f03: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 48f07: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 48f0b: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 48f0f: eb dc jmp 48eed <_IO_vfprintf+0x4c2d> 0.00 : 48f11: 41 8b 06 mov (%r14),%eax 0.00 : 48f14: 83 f8 30 cmp $0x30,%eax 0.00 : 48f17: 0f 83 19 02 00 00 jae 49136 <_IO_vfprintf+0x4e76> 0.00 : 48f1d: 89 c2 mov %eax,%edx 0.00 : 48f1f: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 48f23: 83 c0 08 add $0x8,%eax 0.00 : 48f26: 41 89 06 mov %eax,(%r14) 0.00 : 48f29: 48 0f bf 12 movswq (%rdx),%rdx 0.00 : 48f2d: e9 b7 cf ff ff jmpq 45ee9 <_IO_vfprintf+0x1c29> 0.00 : 48f32: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 48f37: 4c 89 e7 mov %r12,%rdi 0.00 : 48f3a: e8 61 ae 02 00 callq 73da0 <__overflow> 0.00 : 48f3f: 83 c0 01 add $0x1,%eax 0.00 : 48f42: 0f 85 21 e6 ff ff jne 47569 <_IO_vfprintf+0x32a9> 0.00 : 48f48: e9 84 d9 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48f4d: 48 8b 05 34 8e 32 00 mov 0x328e34(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 48f54: 48 8b bd 58 f8 ff ff mov -0x7a8(%rbp),%rdi 0.00 : 48f5b: 48 8b 04 07 mov (%rdi,%rax,1),%rax 0.00 : 48f5f: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 48f63: 48 8b 50 48 mov 0x48(%rax),%rdx 0.00 : 48f67: 48 89 95 38 f9 ff ff mov %rdx,-0x6c8(%rbp) 0.00 : 48f6e: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 48f72: 48 89 85 40 f9 ff ff mov %rax,-0x6c0(%rbp) 0.00 : 48f79: 0f b6 00 movzbl (%rax),%eax 0.00 : 48f7c: 84 c0 test %al,%al 0.00 : 48f7e: 74 0d je 48f8d <_IO_vfprintf+0x4ccd> 0.00 : 48f80: 3c 7f cmp $0x7f,%al 0.00 : 48f82: 74 09 je 48f8d <_IO_vfprintf+0x4ccd> 0.00 : 48f84: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 48f87: 0f 85 51 c3 ff ff jne 452de <_IO_vfprintf+0x101e> 0.00 : 48f8d: 48 c7 85 40 f9 ff ff movq $0x0,-0x6c0(%rbp) 0.00 : 48f94: 00 00 00 00 0.00 : 48f98: e9 41 c3 ff ff jmpq 452de <_IO_vfprintf+0x101e> 0.00 : 48f9d: 4c 89 ff mov %r15,%rdi 0.00 : 48fa0: e8 1b ec 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 48fa5: 85 c0 test %eax,%eax 0.00 : 48fa7: 0f 85 a5 c5 ff ff jne 45552 <_IO_vfprintf+0x1292> 0.00 : 48fad: 4c 89 ff mov %r15,%rdi 0.00 : 48fb0: e8 9b 58 fd ff callq 1e850 0.00 : 48fb5: 48 85 c0 test %rax,%rax 0.00 : 48fb8: 48 89 85 58 f9 ff ff mov %rax,-0x6a8(%rbp) 0.00 : 48fbf: 0f 84 0c d9 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 48fc5: 4c 03 bd 58 f9 ff ff add -0x6a8(%rbp),%r15 0.00 : 48fcc: 48 8b 8d 48 f9 ff ff mov -0x6b8(%rbp),%rcx 0.00 : 48fd3: 4c 89 bd 60 f9 ff ff mov %r15,-0x6a0(%rbp) 0.00 : 48fda: 0f b6 19 movzbl (%rcx),%ebx 0.00 : 48fdd: e9 8e c5 ff ff jmpq 45570 <_IO_vfprintf+0x12b0> 0.00 : 48fe2: be 25 00 00 00 mov $0x25,%esi 0.00 : 48fe7: 4c 89 e7 mov %r12,%rdi 0.00 : 48fea: e8 b1 ad 02 00 callq 73da0 <__overflow> 0.00 : 48fef: 83 c0 01 add $0x1,%eax 0.00 : 48ff2: 0f 85 78 d9 ff ff jne 46970 <_IO_vfprintf+0x26b0> 0.00 : 48ff8: e9 d4 d8 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 48ffd: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 49002: 4c 89 e7 mov %r12,%rdi 0.00 : 49005: e8 96 ad 02 00 callq 73da0 <__overflow> 0.00 : 4900a: 83 c0 01 add $0x1,%eax 0.00 : 4900d: 0f 85 8f e5 ff ff jne 475a2 <_IO_vfprintf+0x32e2> 0.00 : 49013: e9 b9 d8 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49018: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4901d: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 49022: 0f 83 d6 00 00 00 jae 490fe <_IO_vfprintf+0x4e3e> 0.00 : 49028: c6 00 30 movb $0x30,(%rax) 0.00 : 4902b: 48 83 c0 01 add $0x1,%rax 0.00 : 4902f: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 49034: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 4903b: 0f 84 90 d8 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 49041: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 49046: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4904b: 0f 83 90 00 00 00 jae 490e1 <_IO_vfprintf+0x4e21> 0.00 : 49051: 0f b6 95 eb f9 ff ff movzbl -0x615(%rbp),%edx 0.00 : 49058: 88 10 mov %dl,(%rax) 0.00 : 4905a: 48 83 c0 01 add $0x1,%rax 0.00 : 4905e: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 49063: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 4906a: 0f 84 61 d8 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 49070: 41 83 c5 02 add $0x2,%r13d 0.00 : 49074: e9 4e d5 ff ff jmpq 465c7 <_IO_vfprintf+0x2307> 0.00 : 49079: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4907e: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 49083: 0f 83 db 00 00 00 jae 49164 <_IO_vfprintf+0x4ea4> 0.00 : 49089: c6 00 30 movb $0x30,(%rax) 0.00 : 4908c: 48 83 c0 01 add $0x1,%rax 0.00 : 49090: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 49095: 41 81 fd ff ff ff 7f cmp $0x7fffffff,%r13d 0.00 : 4909c: 0f 84 2f d8 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 490a2: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 490a7: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 490ac: 0f 83 95 00 00 00 jae 49147 <_IO_vfprintf+0x4e87> 0.00 : 490b2: 0f b6 95 eb f9 ff ff movzbl -0x615(%rbp),%edx 0.00 : 490b9: 88 10 mov %dl,(%rax) 0.00 : 490bb: 48 83 c0 01 add $0x1,%rax 0.00 : 490bf: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 490c4: 41 81 fd fe ff ff 7f cmp $0x7ffffffe,%r13d 0.00 : 490cb: 0f 84 00 d8 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 490d1: 41 83 c5 02 add $0x2,%r13d 0.00 : 490d5: 83 ad b8 fa ff ff 02 subl $0x2,-0x548(%rbp) 0.00 : 490dc: e9 1a da ff ff jmpq 46afb <_IO_vfprintf+0x283b> 0.00 : 490e1: 0f b6 b5 eb f9 ff ff movzbl -0x615(%rbp),%esi 0.00 : 490e8: 4c 89 e7 mov %r12,%rdi 0.00 : 490eb: e8 b0 ac 02 00 callq 73da0 <__overflow> 0.00 : 490f0: 83 c0 01 add $0x1,%eax 0.00 : 490f3: 0f 85 6a ff ff ff jne 49063 <_IO_vfprintf+0x4da3> 0.00 : 490f9: e9 d3 d7 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 490fe: be 30 00 00 00 mov $0x30,%esi 0.00 : 49103: 4c 89 e7 mov %r12,%rdi 0.00 : 49106: e8 95 ac 02 00 callq 73da0 <__overflow> 0.00 : 4910b: 83 c0 01 add $0x1,%eax 0.00 : 4910e: 66 90 xchg %ax,%ax 0.00 : 49110: 0f 85 1e ff ff ff jne 49034 <_IO_vfprintf+0x4d74> 0.00 : 49116: e9 b6 d7 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 4911b: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 49120: 4c 89 e7 mov %r12,%rdi 0.00 : 49123: e8 78 ac 02 00 callq 73da0 <__overflow> 0.00 : 49128: 83 c0 01 add $0x1,%eax 0.00 : 4912b: 0f 85 ce e1 ff ff jne 472ff <_IO_vfprintf+0x303f> 0.00 : 49131: e9 9b d7 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49136: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 4913a: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4913e: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 49142: e9 e2 fd ff ff jmpq 48f29 <_IO_vfprintf+0x4c69> 0.00 : 49147: 0f b6 b5 eb f9 ff ff movzbl -0x615(%rbp),%esi 0.00 : 4914e: 4c 89 e7 mov %r12,%rdi 0.00 : 49151: e8 4a ac 02 00 callq 73da0 <__overflow> 0.00 : 49156: 83 c0 01 add $0x1,%eax 0.00 : 49159: 0f 85 65 ff ff ff jne 490c4 <_IO_vfprintf+0x4e04> 0.00 : 4915f: e9 6d d7 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49164: be 30 00 00 00 mov $0x30,%esi 0.00 : 49169: 4c 89 e7 mov %r12,%rdi 0.00 : 4916c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 49170: e8 2b ac 02 00 callq 73da0 <__overflow> 0.00 : 49175: 83 c0 01 add $0x1,%eax 0.00 : 49178: 0f 85 17 ff ff ff jne 49095 <_IO_vfprintf+0x4dd5> 0.00 : 4917e: 66 90 xchg %ax,%ax 0.00 : 49180: e9 4c d7 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49185: 48 8b bd b0 f8 ff ff mov -0x750(%rbp),%rdi 0.00 : 4918c: e8 1f 7a 03 00 callq 80bb0 <__GI_strlen> 0.00 : 49191: 48 8b bd b0 f8 ff ff mov -0x750(%rbp),%rdi 0.00 : 49198: 48 8d 70 01 lea 0x1(%rax),%rsi 0.00 : 4919c: e8 0f 66 0a 00 callq ef7b0 <__readonly_area> 0.00 : 491a1: 85 c0 test %eax,%eax 0.00 : 491a3: 89 85 74 f9 ff ff mov %eax,-0x68c(%rbp) 0.00 : 491a9: 0f 88 c4 f6 ff ff js 48873 <_IO_vfprintf+0x45b3> 0.00 : 491af: e9 a9 d1 ff ff jmpq 4635d <_IO_vfprintf+0x209d> 0.00 : 491b4: 4c 8d 3d 85 18 0f 00 lea 0xf1885(%rip),%r15 # 13aa40 0.00 : 491bb: 31 db xor %ebx,%ebx 0.00 : 491bd: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 491c4: 00 00 00 0.00 : 491c7: c7 85 8c fa ff ff 00 movl $0x0,-0x574(%rbp) 0.00 : 491ce: 00 00 00 0.00 : 491d1: e9 3a c8 ff ff jmpq 45a10 <_IO_vfprintf+0x1750> 0.00 : 491d6: 48 8d 0d 33 97 0f 00 lea 0xf9733(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 491dd: 48 8d 35 f2 1a 0f 00 lea 0xf1af2(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 491e4: 48 8d 3d d5 56 0f 00 lea 0xf56d5(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 491eb: ba 60 06 00 00 mov $0x660,%edx 0.00 : 491f0: e8 2b 27 fe ff callq 2b920 <__assert_fail> 0.00 : 491f5: 48 8b bd 58 f9 ff ff mov -0x6a8(%rbp),%rdi 0.00 : 491fc: e8 9f 56 fd ff callq 1e8a0 0.00 : 49201: e9 98 b6 ff ff jmpq 4489e <_IO_vfprintf+0x5de> 0.00 : 49206: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 4920b: 4c 89 e7 mov %r12,%rdi 0.00 : 4920e: e8 8d ab 02 00 callq 73da0 <__overflow> 0.00 : 49213: 83 c0 01 add $0x1,%eax 0.00 : 49216: 0f 85 2c e5 ff ff jne 47748 <_IO_vfprintf+0x3488> 0.00 : 4921c: e9 b0 d6 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49221: 4c 89 ff mov %r15,%rdi 0.00 : 49224: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 49228: e8 83 79 03 00 callq 80bb0 <__GI_strlen> 0.00 : 4922d: c7 85 ec f9 ff ff 00 movl $0x0,-0x614(%rbp) 0.00 : 49234: 00 00 00 0.00 : 49237: 48 89 c3 mov %rax,%rbx 0.00 : 4923a: 89 85 8c fa ff ff mov %eax,-0x574(%rbp) 0.00 : 49240: e9 cb c7 ff ff jmpq 45a10 <_IO_vfprintf+0x1750> 0.00 : 49245: 4c 89 ff mov %r15,%rdi 0.00 : 49248: e8 63 79 03 00 callq 80bb0 <__GI_strlen> 0.00 : 4924d: 48 89 c3 mov %rax,%rbx 0.00 : 49250: e9 8e e2 ff ff jmpq 474e3 <_IO_vfprintf+0x3223> 0.00 : 49255: 48 8d 0d b4 96 0f 00 lea 0xf96b4(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 4925c: 48 8d 35 73 1a 0f 00 lea 0xf1a73(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 49263: 48 8d 3d 26 56 0f 00 lea 0xf5626(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 4926a: ba 42 06 00 00 mov $0x642,%edx 0.00 : 4926f: e8 ac 26 fe ff callq 2b920 <__assert_fail> 0.00 : 49274: 44 8b 85 60 fa ff ff mov -0x5a0(%rbp),%r8d 0.00 : 4927b: 45 85 c0 test %r8d,%r8d 0.00 : 4927e: 0f 84 69 01 00 00 je 493ed <_IO_vfprintf+0x512d> 0.00 : 49284: 41 8b 06 mov (%r14),%eax 0.00 : 49287: 83 f8 30 cmp $0x30,%eax 0.00 : 4928a: 0f 83 98 00 00 00 jae 49328 <_IO_vfprintf+0x5068> 0.00 : 49290: 89 c2 mov %eax,%edx 0.00 : 49292: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 49296: 83 c0 08 add $0x8,%eax 0.00 : 49299: 41 89 06 mov %eax,(%r14) 0.00 : 4929c: 48 8b 12 mov (%rdx),%rdx 0.00 : 4929f: 49 63 c5 movslq %r13d,%rax 0.00 : 492a2: 48 89 02 mov %rax,(%rdx) 0.00 : 492a5: e9 16 b8 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 492aa: 48 8b b5 28 f8 ff ff mov -0x7d8(%rbp),%rsi 0.00 : 492b1: 31 c9 xor %ecx,%ecx 0.00 : 492b3: 48 63 f8 movslq %eax,%rdi 0.00 : 492b6: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 492bb: e8 10 aa ff ff callq 43cd0 <_itoa_word> 0.00 : 492c0: 48 39 85 28 f8 ff ff cmp %rax,-0x7d8(%rbp) 0.00 : 492c7: 49 89 c7 mov %rax,%r15 0.00 : 492ca: 77 37 ja 49303 <_IO_vfprintf+0x5043> 0.00 : 492cc: e9 e1 be ff ff jmpq 451b2 <_IO_vfprintf+0xef2> 0.00 : 492d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 492d8: 88 10 mov %dl,(%rax) 0.00 : 492da: 48 83 c0 01 add $0x1,%rax 0.00 : 492de: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 492e3: 81 fb ff ff ff 7f cmp $0x7fffffff,%ebx 0.00 : 492e9: 0f 84 e2 d5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 492ef: 49 83 c7 01 add $0x1,%r15 0.00 : 492f3: 83 c3 01 add $0x1,%ebx 0.00 : 492f6: 4c 39 bd 28 f8 ff ff cmp %r15,-0x7d8(%rbp) 0.00 : 492fd: 0f 86 af be ff ff jbe 451b2 <_IO_vfprintf+0xef2> 0.00 : 49303: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 49308: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 4930d: 41 0f b6 17 movzbl (%r15),%edx 0.00 : 49311: 72 c5 jb 492d8 <_IO_vfprintf+0x5018> 0.00 : 49313: 0f b6 f2 movzbl %dl,%esi 0.00 : 49316: 4c 89 e7 mov %r12,%rdi 0.00 : 49319: e8 82 aa 02 00 callq 73da0 <__overflow> 0.00 : 4931e: 83 c0 01 add $0x1,%eax 0.00 : 49321: 75 c0 jne 492e3 <_IO_vfprintf+0x5023> 0.00 : 49323: e9 a9 d5 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49328: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 4932c: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 49330: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 49334: e9 63 ff ff ff jmpq 4929c <_IO_vfprintf+0x4fdc> 0.00 : 49339: 48 8d 0d d0 95 0f 00 lea 0xf95d0(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 49340: 48 8d 35 8f 19 0f 00 lea 0xf198f(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 49347: 48 8d 3d 42 55 0f 00 lea 0xf5542(%rip),%rdi # 13e890 <__PRETTY_FUNCTION__.11129+0xeb7> 0.00 : 4934e: ba d0 07 00 00 mov $0x7d0,%edx 0.00 : 49353: e8 c8 25 fe ff callq 2b920 <__assert_fail> 0.00 : 49358: 49 8b 44 24 28 mov 0x28(%r12),%rax 0.00 : 4935d: 49 3b 44 24 30 cmp 0x30(%r12),%rax 0.00 : 49362: 73 59 jae 493bd <_IO_vfprintf+0x50fd> 0.00 : 49364: 88 10 mov %dl,(%rax) 0.00 : 49366: 48 83 c0 01 add $0x1,%rax 0.00 : 4936a: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 4936f: 81 fb ff ff ff 7f cmp $0x7fffffff,%ebx 0.00 : 49375: 0f 84 56 d5 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 4937b: 83 c3 01 add $0x1,%ebx 0.00 : 4937e: e9 76 ea ff ff jmpq 47df9 <_IO_vfprintf+0x3b39> 0.00 : 49383: 48 8d 0d 86 95 0f 00 lea 0xf9586(%rip),%rcx # 142910 <__PRETTY_FUNCTION__.14549> 0.00 : 4938a: 48 8d 35 45 19 0f 00 lea 0xf1945(%rip),%rsi # 13acd6 <__PRETTY_FUNCTION__.9779+0x8a> 0.00 : 49391: 48 8d 3d 28 55 0f 00 lea 0xf5528(%rip),%rdi # 13e8c0 <__PRETTY_FUNCTION__.11129+0xee7> 0.00 : 49398: ba b5 07 00 00 mov $0x7b5,%edx 0.00 : 4939d: e8 7e 25 fe ff callq 2b920 <__assert_fail> 0.00 : 493a2: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 493a7: 4c 89 e7 mov %r12,%rdi 0.00 : 493aa: e8 f1 a9 02 00 callq 73da0 <__overflow> 0.00 : 493af: 83 c0 01 add $0x1,%eax 0.00 : 493b2: 0f 85 b1 e1 ff ff jne 47569 <_IO_vfprintf+0x32a9> 0.00 : 493b8: e9 14 d5 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 493bd: 0f b6 f2 movzbl %dl,%esi 0.00 : 493c0: 4c 89 e7 mov %r12,%rdi 0.00 : 493c3: e8 d8 a9 02 00 callq 73da0 <__overflow> 0.00 : 493c8: 83 c0 01 add $0x1,%eax 0.00 : 493cb: 75 a2 jne 4936f <_IO_vfprintf+0x50af> 0.00 : 493cd: e9 ff d4 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 493d2: be 2e 00 00 00 mov $0x2e,%esi 0.00 : 493d7: 4c 89 e7 mov %r12,%rdi 0.00 : 493da: e8 c1 a9 02 00 callq 73da0 <__overflow> 0.00 : 493df: 83 c0 01 add $0x1,%eax 0.00 : 493e2: 0f 85 f6 bd ff ff jne 451de <_IO_vfprintf+0xf1e> 0.00 : 493e8: e9 e4 d4 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 493ed: 8b bd 5c fa ff ff mov -0x5a4(%rbp),%edi 0.00 : 493f3: 85 ff test %edi,%edi 0.00 : 493f5: 74 2d je 49424 <_IO_vfprintf+0x5164> 0.00 : 493f7: 41 8b 06 mov (%r14),%eax 0.00 : 493fa: 83 f8 30 cmp $0x30,%eax 0.00 : 493fd: 73 17 jae 49416 <_IO_vfprintf+0x5156> 0.00 : 493ff: 89 c2 mov %eax,%edx 0.00 : 49401: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 49405: 83 c0 08 add $0x8,%eax 0.00 : 49408: 41 89 06 mov %eax,(%r14) 0.00 : 4940b: 48 8b 02 mov (%rdx),%rax 0.00 : 4940e: 44 88 28 mov %r13b,(%rax) 0.00 : 49411: e9 aa b6 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 49416: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 4941a: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4941e: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 49422: eb e7 jmp 4940b <_IO_vfprintf+0x514b> 0.00 : 49424: 8b b5 58 fa ff ff mov -0x5a8(%rbp),%esi 0.00 : 4942a: 85 f6 test %esi,%esi 0.00 : 4942c: 0f 85 11 02 00 00 jne 49643 <_IO_vfprintf+0x5383> 0.00 : 49432: 41 8b 06 mov (%r14),%eax 0.00 : 49435: 83 f8 30 cmp $0x30,%eax 0.00 : 49438: 0f 83 f4 01 00 00 jae 49632 <_IO_vfprintf+0x5372> 0.00 : 4943e: 89 c2 mov %eax,%edx 0.00 : 49440: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 49444: 83 c0 08 add $0x8,%eax 0.00 : 49447: 41 89 06 mov %eax,(%r14) 0.00 : 4944a: 48 8b 02 mov (%rdx),%rax 0.00 : 4944d: 44 89 28 mov %r13d,(%rax) 0.00 : 49450: e9 6b b6 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 49455: 4c 8d 3d e4 15 0f 00 lea 0xf15e4(%rip),%r15 # 13aa40 0.00 : 4945c: 31 db xor %ebx,%ebx 0.00 : 4945e: c7 85 74 fa ff ff 00 movl $0x0,-0x58c(%rbp) 0.00 : 49465: 00 00 00 0.00 : 49468: c7 85 88 fa ff ff 00 movl $0x0,-0x578(%rbp) 0.00 : 4946f: 00 00 00 0.00 : 49472: e9 32 bb ff ff jmpq 44fa9 <_IO_vfprintf+0xce9> 0.00 : 49477: 4c 89 ff mov %r15,%rdi 0.00 : 4947a: e8 31 77 03 00 callq 80bb0 <__GI_strlen> 0.00 : 4947f: 48 89 c3 mov %rax,%rbx 0.00 : 49482: e9 49 e2 ff ff jmpq 476d0 <_IO_vfprintf+0x3410> 0.00 : 49487: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 4948c: 4c 89 e7 mov %r12,%rdi 0.00 : 4948f: e8 0c a9 02 00 callq 73da0 <__overflow> 0.00 : 49494: 83 c0 01 add $0x1,%eax 0.00 : 49497: 0f 85 05 e1 ff ff jne 475a2 <_IO_vfprintf+0x32e2> 0.00 : 4949d: e9 2f d4 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 494a2: 8b 85 58 fa ff ff mov -0x5a8(%rbp),%eax 0.00 : 494a8: 85 c0 test %eax,%eax 0.00 : 494aa: 75 3e jne 494ea <_IO_vfprintf+0x522a> 0.00 : 494ac: 48 8b 8d 80 f9 ff ff mov -0x680(%rbp),%rcx 0.00 : 494b3: 48 8b 9d 08 fa ff ff mov -0x5f8(%rbp),%rbx 0.00 : 494ba: 48 63 44 11 30 movslq 0x30(%rcx,%rdx,1),%rax 0.00 : 494bf: 48 c1 e0 04 shl $0x4,%rax 0.00 : 494c3: 48 8b 04 03 mov (%rbx,%rax,1),%rax 0.00 : 494c7: 44 89 28 mov %r13d,(%rax) 0.00 : 494ca: e9 f1 b5 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 494cf: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 494d4: 4c 89 e7 mov %r12,%rdi 0.00 : 494d7: e8 c4 a8 02 00 callq 73da0 <__overflow> 0.00 : 494dc: 83 c0 01 add $0x1,%eax 0.00 : 494df: 0f 85 88 ec ff ff jne 4816d <_IO_vfprintf+0x3ead> 0.00 : 494e5: e9 e7 d3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 494ea: 48 8b bd 80 f9 ff ff mov -0x680(%rbp),%rdi 0.00 : 494f1: 48 63 44 17 30 movslq 0x30(%rdi,%rdx,1),%rax 0.00 : 494f6: 48 8b 95 08 fa ff ff mov -0x5f8(%rbp),%rdx 0.00 : 494fd: 48 c1 e0 04 shl $0x4,%rax 0.00 : 49501: 48 8b 04 02 mov (%rdx,%rax,1),%rax 0.00 : 49505: 66 44 89 28 mov %r13w,(%rax) 0.00 : 49509: e9 b2 b5 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 4950e: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 49512: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 49516: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4951a: e9 3a ed ff ff jmpq 48259 <_IO_vfprintf+0x3f99> 0.00 : 4951f: 41 8b 06 mov (%r14),%eax 0.00 : 49522: 83 f8 30 cmp $0x30,%eax 0.00 : 49525: 73 4e jae 49575 <_IO_vfprintf+0x52b5> 0.00 : 49527: 89 c2 mov %eax,%edx 0.00 : 49529: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 4952d: 83 c0 08 add $0x8,%eax 0.00 : 49530: 41 89 06 mov %eax,(%r14) 0.00 : 49533: 48 8b 02 mov (%rdx),%rax 0.00 : 49536: 66 44 89 28 mov %r13w,(%rax) 0.00 : 4953a: e9 51 b3 ff ff jmpq 44890 <_IO_vfprintf+0x5d0> 0.00 : 4953f: be 2d 00 00 00 mov $0x2d,%esi 0.00 : 49544: 4c 89 e7 mov %r12,%rdi 0.00 : 49547: e8 54 a8 02 00 callq 73da0 <__overflow> 0.00 : 4954c: 83 c0 01 add $0x1,%eax 0.00 : 4954f: 0f 85 0f ea ff ff jne 47f64 <_IO_vfprintf+0x3ca4> 0.00 : 49555: e9 77 d3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 4955a: be 2b 00 00 00 mov $0x2b,%esi 0.00 : 4955f: 4c 89 e7 mov %r12,%rdi 0.00 : 49562: e8 39 a8 02 00 callq 73da0 <__overflow> 0.00 : 49567: 83 c0 01 add $0x1,%eax 0.00 : 4956a: 0f 85 8f dd ff ff jne 472ff <_IO_vfprintf+0x303f> 0.00 : 49570: e9 5c d3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 49575: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 49579: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4957d: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 49581: eb b0 jmp 49533 <_IO_vfprintf+0x5273> 0.00 : 49583: be 20 00 00 00 mov $0x20,%esi 0.00 : 49588: 4c 89 e7 mov %r12,%rdi 0.00 : 4958b: e8 10 a8 02 00 callq 73da0 <__overflow> 0.00 : 49590: 83 c0 01 add $0x1,%eax 0.00 : 49593: 0f 85 af e1 ff ff jne 47748 <_IO_vfprintf+0x3488> 0.00 : 49599: e9 33 d3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 4959e: 4c 89 e7 mov %r12,%rdi 0.00 : 495a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 495a8: e8 f3 a7 02 00 callq 73da0 <__overflow> 0.00 : 495ad: 83 c0 01 add $0x1,%eax 0.00 : 495b0: 0f 85 e4 c2 ff ff jne 4589a <_IO_vfprintf+0x15da> 0.00 : 495b6: e9 16 d3 ff ff jmpq 468d1 <_IO_vfprintf+0x2611> 0.00 : 495bb: 48 8b 85 58 f8 ff ff mov -0x7a8(%rbp),%rax 0.00 : 495c2: 48 8b 3d 6f 88 32 00 mov 0x32886f(%rip),%rdi # 371e38 <_DYNAMIC+0x2d8> 0.00 : 495c9: 41 bd ff ff ff ff mov $0xffffffff,%r13d 0.00 : 495cf: c7 04 38 22 00 00 00 movl $0x22,(%rax,%rdi,1) 0.00 : 495d6: e9 fc d2 ff ff jmpq 468d7 <_IO_vfprintf+0x2617> 0.00 : 495db: 48 89 df mov %rbx,%rdi 0.00 : 495de: e8 dd e5 09 00 callq e7bc0 <__libc_alloca_cutoff> 0.00 : 495e3: 85 c0 test %eax,%eax 0.00 : 495e5: 0f 85 86 be ff ff jne 45471 <_IO_vfprintf+0x11b1> 0.00 : 495eb: 48 89 df mov %rbx,%rdi 0.00 : 495ee: e8 5d 52 fd ff callq 1e850 0.00 : 495f3: 48 85 c0 test %rax,%rax 0.00 : 495f6: 48 89 85 58 f9 ff ff mov %rax,-0x6a8(%rbp) 0.00 : 495fd: 0f 84 ce d2 ff ff je 468d1 <_IO_vfprintf+0x2611> 0.00 : 49603: 48 03 9d 58 f9 ff ff add -0x6a8(%rbp),%rbx 0.00 : 4960a: 48 89 9d 60 f9 ff ff mov %rbx,-0x6a0(%rbp) 0.00 : 49611: e9 79 be ff ff jmpq 4548f <_IO_vfprintf+0x11cf> 0.00 : 49616: 41 8b 06 mov (%r14),%eax 0.00 : 49619: 83 f8 30 cmp $0x30,%eax 0.00 : 4961c: 73 45 jae 49663 <_IO_vfprintf+0x53a3> 0.00 : 4961e: 89 c2 mov %eax,%edx 0.00 : 49620: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 49624: 83 c0 08 add $0x8,%eax 0.00 : 49627: 41 89 06 mov %eax,(%r14) 0.00 : 4962a: 48 8b 02 mov (%rdx),%rax 0.00 : 4962d: e9 cf cc ff ff jmpq 46301 <_IO_vfprintf+0x2041> 0.00 : 49632: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 49636: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4963a: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4963e: e9 07 fe ff ff jmpq 4944a <_IO_vfprintf+0x518a> 0.00 : 49643: 41 8b 06 mov (%r14),%eax 0.00 : 49646: 83 f8 30 cmp $0x30,%eax 0.00 : 49649: 73 26 jae 49671 <_IO_vfprintf+0x53b1> 0.00 : 4964b: 89 c2 mov %eax,%edx 0.00 : 4964d: 49 03 56 10 add 0x10(%r14),%rdx 0.00 : 49651: 83 c0 08 add $0x8,%eax 0.00 : 49654: 41 89 06 mov %eax,(%r14) 0.00 : 49657: 48 8b 02 mov (%rdx),%rax 0.00 : 4965a: 66 44 89 28 mov %r13w,(%rax) 0.00 : 4965e: e9 5d b4 ff ff jmpq 44ac0 <_IO_vfprintf+0x800> 0.00 : 49663: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 49667: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 4966b: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4966f: eb b9 jmp 4962a <_IO_vfprintf+0x536a> 0.00 : 49671: 49 8b 56 08 mov 0x8(%r14),%rdx 0.00 : 49675: 48 8d 42 08 lea 0x8(%rdx),%rax 0.00 : 49679: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 4967d: eb d8 jmp 49657 <_IO_vfprintf+0x5397> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000072520 <_IO_file_underflow@@GLIBC_2.2.5>: 0.00 : 72520: 55 push %rbp ??:0 50.00 : 72521: 53 push %rbx 0.00 : 72522: 48 89 fb mov %rdi,%rbx 0.00 : 72525: 48 83 ec 08 sub $0x8,%rsp 0.00 : 72529: 8b 17 mov (%rdi),%edx 0.00 : 7252b: f6 c2 04 test $0x4,%dl 0.00 : 7252e: 0f 85 d4 01 00 00 jne 72708 <_IO_file_underflow@@GLIBC_2.2.5+0x1e8> 0.00 : 72534: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 72538: 48 3b 47 10 cmp 0x10(%rdi),%rax 0.00 : 7253c: 0f 82 4b 01 00 00 jb 7268d <_IO_file_underflow@@GLIBC_2.2.5+0x16d> 0.00 : 72542: 48 83 7f 38 00 cmpq $0x0,0x38(%rdi) 0.00 : 72547: 0f 84 7b 01 00 00 je 726c8 <_IO_file_underflow@@GLIBC_2.2.5+0x1a8> 0.00 : 7254d: 81 e2 02 02 00 00 and $0x202,%edx 0.00 : 72553: 0f 84 d7 00 00 00 je 72630 <_IO_file_underflow@@GLIBC_2.2.5+0x110> 0.00 : 72559: 48 8b 2d 50 08 30 00 mov 0x300850(%rip),%rbp # 372db0 0.00 : 72560: 66 83 7d 00 00 cmpw $0x0,0x0(%rbp) 0.00 : 72565: 48 89 ef mov %rbp,%rdi 0.00 : 72568: 78 5d js 725c7 <_IO_file_underflow@@GLIBC_2.2.5+0xa7> 0.00 : 7256a: 4c 8b 8d 88 00 00 00 mov 0x88(%rbp),%r9 0.00 : 72571: 64 4c 8b 14 25 10 00 mov %fs:0x10,%r10 0.00 : 72578: 00 00 0.00 : 7257a: 4d 3b 51 08 cmp 0x8(%r9),%r10 0.00 : 7257e: 74 3b je 725bb <_IO_file_underflow@@GLIBC_2.2.5+0x9b> 0.00 : 72580: 31 d2 xor %edx,%edx 0.00 : 72582: be 01 00 00 00 mov $0x1,%esi 0.00 : 72587: 89 d0 mov %edx,%eax 0.00 : 72589: 83 3d 24 51 30 00 00 cmpl $0x0,0x305124(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 72590: 74 0d je 7259f <_IO_file_underflow@@GLIBC_2.2.5+0x7f> 0.00 : 72592: f0 41 0f b1 31 lock cmpxchg %esi,(%r9) 0.00 : 72597: 0f 85 7b 11 00 00 jne 73718 <_L_lock_1873> 0.00 : 7259d: eb 0a jmp 725a9 <_IO_file_underflow@@GLIBC_2.2.5+0x89> 0.00 : 7259f: 41 0f b1 31 cmpxchg %esi,(%r9) 0.00 : 725a3: 0f 85 6f 11 00 00 jne 73718 <_L_lock_1873> 0.00 : 725a9: 48 8b 85 88 00 00 00 mov 0x88(%rbp),%rax 0.00 : 725b0: 4c 89 50 08 mov %r10,0x8(%rax) 0.00 : 725b4: 4c 8b 8d 88 00 00 00 mov 0x88(%rbp),%r9 0.00 : 725bb: 41 83 41 04 01 addl $0x1,0x4(%r9) 0.00 : 725c0: 48 8b 3d e9 07 30 00 mov 0x3007e9(%rip),%rdi # 372db0 0.00 : 725c7: 8b 07 mov (%rdi),%eax 0.00 : 725c9: 25 88 02 00 00 and $0x288,%eax 0.00 : 725ce: 3d 80 02 00 00 cmp $0x280,%eax 0.00 : 725d3: 0f 84 d7 00 00 00 je 726b0 <_IO_file_underflow@@GLIBC_2.2.5+0x190> 0.00 : 725d9: 66 83 7d 00 00 cmpw $0x0,0x0(%rbp) 0.00 : 725de: 78 50 js 72630 <_IO_file_underflow@@GLIBC_2.2.5+0x110> 0.00 : 725e0: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 725e7: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 725ea: 83 e8 01 sub $0x1,%eax 0.00 : 725ed: 85 c0 test %eax,%eax 0.00 : 725ef: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 725f2: 75 3c jne 72630 <_IO_file_underflow@@GLIBC_2.2.5+0x110> 0.00 : 725f4: 48 8b 85 88 00 00 00 mov 0x88(%rbp),%rax 0.00 : 725fb: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 72602: 00 0.00 : 72603: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 7260a: 83 3d a3 50 30 00 00 cmpl $0x0,0x3050a3(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 72611: 74 0b je 7261e <_IO_file_underflow@@GLIBC_2.2.5+0xfe> 0.00 : 72613: f0 ff 0a lock decl (%rdx) 0.00 : 72616: 0f 85 17 11 00 00 jne 73733 <_L_unlock_1914> 0.00 : 7261c: eb 08 jmp 72626 <_IO_file_underflow@@GLIBC_2.2.5+0x106> 0.00 : 7261e: ff 0a decl (%rdx) 0.00 : 72620: 0f 85 0d 11 00 00 jne 73733 <_L_unlock_1914> 0.00 : 72626: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 7262d: 00 00 00 50.00 : 72630: 48 89 df mov %rbx,%rdi 0.00 : 72633: e8 e8 16 00 00 callq 73d20 <_IO_switch_to_get_mode> 0.00 : 72638: 48 8b 73 38 mov 0x38(%rbx),%rsi 0.00 : 7263c: 48 8b 53 40 mov 0x40(%rbx),%rdx 0.00 : 72640: 48 89 df mov %rbx,%rdi 0.00 : 72643: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 7264a: 48 29 f2 sub %rsi,%rdx 0.00 : 7264d: 48 89 73 08 mov %rsi,0x8(%rbx) 0.00 : 72651: 48 89 73 18 mov %rsi,0x18(%rbx) 0.00 : 72655: 48 89 73 10 mov %rsi,0x10(%rbx) 0.00 : 72659: 48 89 73 30 mov %rsi,0x30(%rbx) 0.00 : 7265d: 48 89 73 28 mov %rsi,0x28(%rbx) 0.00 : 72661: 48 89 73 20 mov %rsi,0x20(%rbx) 0.00 : 72665: ff 50 70 callq *0x70(%rax) 0.00 : 72668: 48 83 f8 00 cmp $0x0,%rax 0.00 : 7266c: 7e 32 jle 726a0 <_IO_file_underflow@@GLIBC_2.2.5+0x180> 0.00 : 7266e: 48 8b 93 90 00 00 00 mov 0x90(%rbx),%rdx 0.00 : 72675: 48 01 43 10 add %rax,0x10(%rbx) 0.00 : 72679: 48 83 fa ff cmp $0xffffffffffffffff,%rdx 0.00 : 7267d: 74 0a je 72689 <_IO_file_underflow@@GLIBC_2.2.5+0x169> 0.00 : 7267f: 48 01 d0 add %rdx,%rax 0.00 : 72682: 48 89 83 90 00 00 00 mov %rax,0x90(%rbx) 0.00 : 72689: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7268d: 0f b6 00 movzbl (%rax),%eax 0.00 : 72690: 48 83 c4 08 add $0x8,%rsp 0.00 : 72694: 5b pop %rbx 0.00 : 72695: 5d pop %rbp 0.00 : 72696: c3 retq 0.00 : 72697: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7269e: 00 00 0.00 : 726a0: 75 56 jne 726f8 <_IO_file_underflow@@GLIBC_2.2.5+0x1d8> 0.00 : 726a2: 83 0b 10 orl $0x10,(%rbx) 0.00 : 726a5: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 726aa: eb e4 jmp 72690 <_IO_file_underflow@@GLIBC_2.2.5+0x170> 0.00 : 726ac: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 726b0: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 0.00 : 726b7: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 726bc: ff 50 18 callq *0x18(%rax) 0.00 : 726bf: e9 15 ff ff ff jmpq 725d9 <_IO_file_underflow@@GLIBC_2.2.5+0xb9> 0.00 : 726c4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 726c8: 48 8b 7f 48 mov 0x48(%rdi),%rdi 0.00 : 726cc: 48 85 ff test %rdi,%rdi 0.00 : 726cf: 74 12 je 726e3 <_IO_file_underflow@@GLIBC_2.2.5+0x1c3> 0.00 : 726d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 726d8: e8 c3 c1 fa ff callq 1e8a0 0.00 : 726dd: 81 23 ff fe ff ff andl $0xfffffeff,(%rbx) 0.00 : 726e3: 48 89 df mov %rbx,%rdi 0.00 : 726e6: e8 e5 16 00 00 callq 73dd0 <_IO_doallocbuf> 0.00 : 726eb: 8b 13 mov (%rbx),%edx 0.00 : 726ed: e9 5b fe ff ff jmpq 7254d <_IO_file_underflow@@GLIBC_2.2.5+0x2d> 0.00 : 726f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 726f8: 83 0b 20 orl $0x20,(%rbx) 0.00 : 726fb: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 72700: eb 8e jmp 72690 <_IO_file_underflow@@GLIBC_2.2.5+0x170> 0.00 : 72702: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 72708: 83 ca 20 or $0x20,%edx 0.00 : 7270b: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 72712: 00 00 0.00 : 72714: 89 17 mov %edx,(%rdi) 0.00 : 72716: 48 8b 15 1b f7 2f 00 mov 0x2ff71b(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 7271d: c7 04 10 09 00 00 00 movl $0x9,(%rax,%rdx,1) 0.00 : 72724: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 72729: e9 62 ff ff ff jmpq 72690 <_IO_file_underflow@@GLIBC_2.2.5+0x170> 0.00 : 7272e: 66 83 7d 00 00 cmpw $0x0,0x0(%rbp) 0.00 : 72733: 49 89 c0 mov %rax,%r8 0.00 : 72736: 78 46 js 7277e <_IO_file_underflow@@GLIBC_2.2.5+0x25e> 0.00 : 72738: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 7273f: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 72742: 83 e8 01 sub $0x1,%eax 0.00 : 72745: 85 c0 test %eax,%eax 0.00 : 72747: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 7274a: 75 32 jne 7277e <_IO_file_underflow@@GLIBC_2.2.5+0x25e> 0.00 : 7274c: 48 8b 85 88 00 00 00 mov 0x88(%rbp),%rax 0.00 : 72753: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 7275a: 00 0.00 : 7275b: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 72762: 83 3d 4b 4f 30 00 00 cmpl $0x0,0x304f4b(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 72769: 74 0b je 72776 <_IO_file_underflow@@GLIBC_2.2.5+0x256> 0.00 : 7276b: f0 ff 0a lock decl (%rdx) 0.00 : 7276e: 0f 85 da 0f 00 00 jne 7374e <_L_unlock_2076> 0.00 : 72774: eb 08 jmp 7277e <_IO_file_underflow@@GLIBC_2.2.5+0x25e> 0.00 : 72776: ff 0a decl (%rdx) 0.00 : 72778: 0f 85 d0 0f 00 00 jne 7374e <_L_unlock_2076> 0.00 : 7277e: 4c 89 c7 mov %r8,%rdi 0.00 : 72781: e8 da c7 fa ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000073e60 <_IO_sgetn>: 0.00 : 73e60: 48 8b 87 d8 00 00 00 mov 0xd8(%rdi),%rax 50.00 : 73e67: 4c 8b 58 40 mov 0x40(%rax),%r11 50.00 : 73e6b: 41 ff e3 jmpq *%r11 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000085c00 : 0.00 : 85c00: 66 0f 6e ce movd %esi,%xmm1 ??:0 50.00 : 85c04: 48 89 f9 mov %rdi,%rcx 0.00 : 85c07: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 85c0b: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 85c0f: 66 0f ef d2 pxor %xmm2,%xmm2 0.00 : 85c13: 66 0f 60 c9 punpcklbw %xmm1,%xmm1 0.00 : 85c17: 83 ce ff or $0xffffffff,%esi 0.00 : 85c1a: 66 0f 6f 07 movdqa (%rdi),%xmm0 0.00 : 85c1e: 66 0f 70 c9 00 pshufd $0x0,%xmm1,%xmm1 0.00 : 85c23: 48 29 f9 sub %rdi,%rcx 0.00 : 85c26: 66 0f 6f d8 movdqa %xmm0,%xmm3 0.00 : 85c2a: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 85c2e: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 85c32: 66 0f 74 da pcmpeqb %xmm2,%xmm3 0.00 : 85c36: d3 e6 shl %cl,%esi 0.00 : 85c38: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 85c3c: 66 0f d7 cb pmovmskb %xmm3,%ecx 0.00 : 85c40: 09 d1 or %edx,%ecx 0.00 : 85c42: 21 f1 and %esi,%ecx 0.00 : 85c44: 75 20 jne 85c66 50.00 : 85c46: 66 0f 6f 07 movdqa (%rdi),%xmm0 0.00 : 85c4a: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 85c4e: 66 0f 6f d8 movdqa %xmm0,%xmm3 0.00 : 85c52: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0 0.00 : 85c56: 66 0f 74 da pcmpeqb %xmm2,%xmm3 0.00 : 85c5a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 85c5e: 66 0f d7 cb pmovmskb %xmm3,%ecx 0.00 : 85c62: 09 d1 or %edx,%ecx 0.00 : 85c64: 74 e0 je 85c46 0.00 : 85c66: 0f bc d1 bsf %ecx,%edx 0.00 : 85c69: 48 8d 44 17 f0 lea -0x10(%rdi,%rdx,1),%rax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000099390 <__gettimeofday>: 0.00 : 99390: 48 83 ec 08 sub $0x8,%rsp 50.00 : 99394: 48 8b 05 ad de 2d 00 mov 0x2ddead(%rip),%rax # 377248 <__vdso_gettimeofday> 0.00 : 9939b: 48 c1 c8 11 ror $0x11,%rax 0.00 : 9939f: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : 993a6: 00 00 0.00 : 993a8: ff d0 callq *%rax 0.00 : 993aa: 3d 01 f0 ff ff cmp $0xfffff001,%eax 0.00 : 993af: 73 05 jae 993b6 <__gettimeofday+0x26> 50.00 : 993b1: 48 83 c4 08 add $0x8,%rsp 0.00 : 993b5: c3 retq 0.00 : 993b6: 48 8b 0d 7b 8a 2d 00 mov 0x2d8a7b(%rip),%rcx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 993bd: 31 d2 xor %edx,%edx 0.00 : 993bf: 48 29 c2 sub %rax,%rdx 0.00 : 993c2: 64 89 11 mov %edx,%fs:(%rcx) 0.00 : 993c5: 48 83 c8 ff or $0xffffffffffffffff,%rax 0.00 : 993c9: eb e6 jmp 993b1 <__gettimeofday+0x21> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000d32a0 : 0.00 : d32a0: 48 89 fe mov %rdi,%rsi 0.00 : d32a3: b8 0c 00 00 00 mov $0xc,%eax 0.00 : d32a8: 0f 05 syscall 0.00 : d32aa: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : d32b0: 48 89 c2 mov %rax,%rdx 0.00 : d32b3: 77 38 ja d32ed 0.00 : d32b5: 48 8b 05 cc eb 29 00 mov 0x29ebcc(%rip),%rax # 371e88 <_DYNAMIC+0x328> 50.00 : d32bc: 48 89 10 mov %rdx,(%rax) 50.00 : d32bf: 31 c0 xor %eax,%eax 0.00 : d32c1: 48 39 d6 cmp %rdx,%rsi 0.00 : d32c4: 77 0a ja d32d0 0.00 : d32c6: f3 c3 repz retq 0.00 : d32c8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : d32cf: 00 0.00 : d32d0: 48 8b 15 61 eb 29 00 mov 0x29eb61(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : d32d7: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : d32de: 00 00 0.00 : d32e0: c7 04 10 0c 00 00 00 movl $0xc,(%rax,%rdx,1) 0.00 : d32e7: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : d32ec: c3 retq 0.00 : d32ed: 89 c1 mov %eax,%ecx 0.00 : d32ef: 48 8b 15 42 eb 29 00 mov 0x29eb42(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : d32f6: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : d32fd: 00 00 0.00 : d32ff: f7 d9 neg %ecx 0.00 : d3301: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : d3304: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : d330b: eb a8 jmp d32b5 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000122bb0 <__memmove_ssse3>: 33.33 : 122bb0: 48 89 f8 mov %rdi,%rax 33.33 : 122bb3: 48 39 f7 cmp %rsi,%rdi 0.00 : 122bb6: 72 0e jb 122bc6 <__memmove_ssse3+0x16> 0.00 : 122bb8: 0f 84 7a 1a 00 00 je 124638 <__memmove_ssse3+0x1a88> 0.00 : 122bbe: 48 83 fa 4f cmp $0x4f,%rdx 0.00 : 122bc2: 76 02 jbe 122bc6 <__memmove_ssse3+0x16> 0.00 : 122bc4: eb 7a jmp 122c40 <__memmove_ssse3+0x90> 0.00 : 122bc6: 48 83 fa 4f cmp $0x4f,%rdx 0.00 : 122bca: 4c 8d 1d cf 16 02 00 lea 0x216cf(%rip),%r11 # 1442a0 0.00 : 122bd1: 77 1d ja 122bf0 <__memmove_ssse3+0x40> 0.00 : 122bd3: 4d 63 0c 93 movslq (%r11,%rdx,4),%r9 33.33 : 122bd7: 48 01 d6 add %rdx,%rsi 0.00 : 122bda: 48 01 d7 add %rdx,%rdi 0.00 : 122bdd: 4d 01 d9 add %r11,%r9 0.00 : 122be0: 41 ff e1 jmpq *%r9 0.00 : 122be3: 0f 0b ud2 0.00 : 122be5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 122bec: 00 00 00 00 0.00 : 122bf0: f3 0f 6f 06 movdqu (%rsi),%xmm0 0.00 : 122bf4: 48 89 f9 mov %rdi,%rcx 0.00 : 122bf7: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 122bfb: 48 83 c7 10 add $0x10,%rdi 0.00 : 122bff: 49 89 c8 mov %rcx,%r8 0.00 : 122c02: 48 29 f9 sub %rdi,%rcx 0.00 : 122c05: 48 01 ca add %rcx,%rdx 0.00 : 122c08: 48 29 ce sub %rcx,%rsi 0.00 : 122c0b: 48 8b 0d 1e f5 24 00 mov 0x24f51e(%rip),%rcx # 372130 <__x86_64_shared_cache_size_half> 0.00 : 122c12: 48 39 ca cmp %rcx,%rdx 0.00 : 122c15: 49 89 f1 mov %rsi,%r9 0.00 : 122c18: 0f 87 92 27 00 00 ja 1253b0 <__memmove_ssse3+0x2800> 0.00 : 122c1e: 49 83 e1 0f and $0xf,%r9 0.00 : 122c22: 74 7c je 122ca0 <__memmove_ssse3+0xf0> 0.00 : 122c24: 48 8b 0d e5 f4 24 00 mov 0x24f4e5(%rip),%rcx # 372110 <__x86_64_data_cache_size_half> 0.00 : 122c2b: 4c 8d 1d ae 17 02 00 lea 0x217ae(%rip),%r11 # 1443e0 0.00 : 122c32: 4f 63 0c 8b movslq (%r11,%r9,4),%r9 0.00 : 122c36: 4f 8d 0c 0b lea (%r11,%r9,1),%r9 0.00 : 122c3a: 41 ff e1 jmpq *%r9 0.00 : 122c3d: 0f 0b ud2 0.00 : 122c3f: 90 nop 0.00 : 122c40: f3 0f 6f 44 16 f0 movdqu -0x10(%rsi,%rdx,1),%xmm0 0.00 : 122c46: 48 01 d6 add %rdx,%rsi 0.00 : 122c49: 4c 8d 44 17 f0 lea -0x10(%rdi,%rdx,1),%r8 0.00 : 122c4e: 48 01 d7 add %rdx,%rdi 0.00 : 122c51: 48 89 f9 mov %rdi,%rcx 0.00 : 122c54: 48 83 e1 0f and $0xf,%rcx 0.00 : 122c58: 48 31 cf xor %rcx,%rdi 0.00 : 122c5b: 48 29 ca sub %rcx,%rdx 0.00 : 122c5e: 48 29 ce sub %rcx,%rsi 0.00 : 122c61: 48 8b 0d c8 f4 24 00 mov 0x24f4c8(%rip),%rcx # 372130 <__x86_64_shared_cache_size_half> 0.00 : 122c68: 48 39 ca cmp %rcx,%rdx 0.00 : 122c6b: 49 89 f1 mov %rsi,%r9 0.00 : 122c6e: 0f 87 fc 28 00 00 ja 125570 <__memmove_ssse3+0x29c0> 0.00 : 122c74: 49 83 e1 0f and $0xf,%r9 0.00 : 122c78: 0f 84 42 02 00 00 je 122ec0 <__memmove_ssse3+0x310> 0.00 : 122c7e: 48 8b 0d 8b f4 24 00 mov 0x24f48b(%rip),%rcx # 372110 <__x86_64_data_cache_size_half> 0.00 : 122c85: 4c 8d 1d 94 17 02 00 lea 0x21794(%rip),%r11 # 144420 0.00 : 122c8c: 4f 63 0c 8b movslq (%r11,%r9,4),%r9 0.00 : 122c90: 4f 8d 0c 0b lea (%r11,%r9,1),%r9 0.00 : 122c94: 41 ff e1 jmpq *%r9 0.00 : 122c97: 0f 0b ud2 0.00 : 122c99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 122ca0: 48 83 ea 10 sub $0x10,%rdx 0.00 : 122ca4: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 122ca8: 48 83 c6 10 add $0x10,%rsi 0.00 : 122cac: 66 0f 7f 0f movdqa %xmm1,(%rdi) 0.00 : 122cb0: 48 83 c7 10 add $0x10,%rdi 0.00 : 122cb4: 48 81 fa 80 00 00 00 cmp $0x80,%rdx 0.00 : 122cbb: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 122cc0: 77 4e ja 122d10 <__memmove_ssse3+0x160> 0.00 : 122cc2: 48 83 fa 40 cmp $0x40,%rdx 0.00 : 122cc6: 72 2a jb 122cf2 <__memmove_ssse3+0x142> 0.00 : 122cc8: 0f 28 26 movaps (%rsi),%xmm4 0.00 : 122ccb: 0f 28 4e 10 movaps 0x10(%rsi),%xmm1 0.00 : 122ccf: 0f 28 56 20 movaps 0x20(%rsi),%xmm2 0.00 : 122cd3: 0f 28 5e 30 movaps 0x30(%rsi),%xmm3 0.00 : 122cd7: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 122cda: 0f 29 4f 10 movaps %xmm1,0x10(%rdi) 0.00 : 122cde: 0f 29 57 20 movaps %xmm2,0x20(%rdi) 0.00 : 122ce2: 0f 29 5f 30 movaps %xmm3,0x30(%rdi) 0.00 : 122ce6: 48 83 ea 40 sub $0x40,%rdx 0.00 : 122cea: 48 83 c6 40 add $0x40,%rsi 0.00 : 122cee: 48 83 c7 40 add $0x40,%rdi 0.00 : 122cf2: 48 01 d6 add %rdx,%rsi 0.00 : 122cf5: 48 01 d7 add %rdx,%rdi 0.00 : 122cf8: 4c 8d 1d a1 15 02 00 lea 0x215a1(%rip),%r11 # 1442a0 0.00 : 122cff: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 122d03: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 122d07: ff e2 jmpq *%rdx 0.00 : 122d09: 0f 0b ud2 0.00 : 122d0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 122d10: 48 3b 15 f9 f3 24 00 cmp 0x24f3f9(%rip),%rdx # 372110 <__x86_64_data_cache_size_half> 0.00 : 122d17: 48 8d 52 80 lea -0x80(%rdx),%rdx 0.00 : 122d1b: 0f 83 af 00 00 00 jae 122dd0 <__memmove_ssse3+0x220> 0.00 : 122d21: 66 0f 6f 26 movdqa (%rsi),%xmm4 0.00 : 122d25: 0f 28 4e 10 movaps 0x10(%rsi),%xmm1 0.00 : 122d29: 0f 28 56 20 movaps 0x20(%rsi),%xmm2 0.00 : 122d2d: 0f 28 5e 30 movaps 0x30(%rsi),%xmm3 0.00 : 122d31: 66 0f 7f 27 movdqa %xmm4,(%rdi) 0.00 : 122d35: 0f 29 4f 10 movaps %xmm1,0x10(%rdi) 0.00 : 122d39: 0f 29 57 20 movaps %xmm2,0x20(%rdi) 0.00 : 122d3d: 0f 29 5f 30 movaps %xmm3,0x30(%rdi) 0.00 : 122d41: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 122d48: 0f 28 66 40 movaps 0x40(%rsi),%xmm4 0.00 : 122d4c: 0f 28 6e 50 movaps 0x50(%rsi),%xmm5 0.00 : 122d50: 0f 28 76 60 movaps 0x60(%rsi),%xmm6 0.00 : 122d54: 0f 28 7e 70 movaps 0x70(%rsi),%xmm7 0.00 : 122d58: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 122d5f: 0f 29 67 40 movaps %xmm4,0x40(%rdi) 0.00 : 122d63: 0f 29 6f 50 movaps %xmm5,0x50(%rdi) 0.00 : 122d67: 0f 29 77 60 movaps %xmm6,0x60(%rdi) 0.00 : 122d6b: 0f 29 7f 70 movaps %xmm7,0x70(%rdi) 0.00 : 122d6f: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 122d76: 73 a9 jae 122d21 <__memmove_ssse3+0x171> 0.00 : 122d78: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 122d7c: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 122d83: 7c 32 jl 122db7 <__memmove_ssse3+0x207> 0.00 : 122d85: 66 0f 6f 26 movdqa (%rsi),%xmm4 0.00 : 122d89: 48 83 ea 40 sub $0x40,%rdx 0.00 : 122d8d: 66 0f 6f 4e 10 movdqa 0x10(%rsi),%xmm1 0.00 : 122d92: 66 0f 7f 27 movdqa %xmm4,(%rdi) 0.00 : 122d96: 66 0f 7f 4f 10 movdqa %xmm1,0x10(%rdi) 0.00 : 122d9b: 66 0f 6f 66 20 movdqa 0x20(%rsi),%xmm4 0.00 : 122da0: 66 0f 6f 4e 30 movdqa 0x30(%rsi),%xmm1 0.00 : 122da5: 48 83 c6 40 add $0x40,%rsi 0.00 : 122da9: 66 0f 7f 67 20 movdqa %xmm4,0x20(%rdi) 0.00 : 122dae: 66 0f 7f 4f 30 movdqa %xmm1,0x30(%rdi) 0.00 : 122db3: 48 83 c7 40 add $0x40,%rdi 0.00 : 122db7: 48 01 d6 add %rdx,%rsi 0.00 : 122dba: 48 01 d7 add %rdx,%rdi 0.00 : 122dbd: 4c 8d 1d dc 14 02 00 lea 0x214dc(%rip),%r11 # 1442a0 0.00 : 122dc4: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 122dc8: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 122dcc: ff e2 jmpq *%rdx 0.00 : 122dce: 0f 0b ud2 0.00 : 122dd0: 0f 18 8e c0 01 00 00 prefetcht0 0x1c0(%rsi) 0.00 : 122dd7: 0f 18 8e 80 02 00 00 prefetcht0 0x280(%rsi) 0.00 : 122dde: 66 0f 6f 06 movdqa (%rsi),%xmm0 0.00 : 122de2: 66 0f 6f 4e 10 movdqa 0x10(%rsi),%xmm1 0.00 : 122de7: 66 0f 6f 56 20 movdqa 0x20(%rsi),%xmm2 0.00 : 122dec: 66 0f 6f 5e 30 movdqa 0x30(%rsi),%xmm3 0.00 : 122df1: 66 0f 6f 66 40 movdqa 0x40(%rsi),%xmm4 0.00 : 122df6: 66 0f 6f 6e 50 movdqa 0x50(%rsi),%xmm5 0.00 : 122dfb: 66 0f 6f 76 60 movdqa 0x60(%rsi),%xmm6 0.00 : 122e00: 66 0f 6f 7e 70 movdqa 0x70(%rsi),%xmm7 0.00 : 122e05: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 122e0c: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 122e13: 66 0f 7f 07 movdqa %xmm0,(%rdi) 0.00 : 122e17: 66 0f 7f 4f 10 movdqa %xmm1,0x10(%rdi) 0.00 : 122e1c: 66 0f 7f 57 20 movdqa %xmm2,0x20(%rdi) 0.00 : 122e21: 66 0f 7f 5f 30 movdqa %xmm3,0x30(%rdi) 0.00 : 122e26: 66 0f 7f 67 40 movdqa %xmm4,0x40(%rdi) 0.00 : 122e2b: 66 0f 7f 6f 50 movdqa %xmm5,0x50(%rdi) 0.00 : 122e30: 66 0f 7f 77 60 movdqa %xmm6,0x60(%rdi) 0.00 : 122e35: 66 0f 7f 7f 70 movdqa %xmm7,0x70(%rdi) 0.00 : 122e3a: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 122e41: 73 8d jae 122dd0 <__memmove_ssse3+0x220> 0.00 : 122e43: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 122e47: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 122e4e: 7c 32 jl 122e82 <__memmove_ssse3+0x2d2> 0.00 : 122e50: 66 0f 6f 06 movdqa (%rsi),%xmm0 0.00 : 122e54: 48 83 ea 40 sub $0x40,%rdx 0.00 : 122e58: 66 0f 6f 4e 10 movdqa 0x10(%rsi),%xmm1 0.00 : 122e5d: 66 0f 7f 07 movdqa %xmm0,(%rdi) 0.00 : 122e61: 66 0f 7f 4f 10 movdqa %xmm1,0x10(%rdi) 0.00 : 122e66: 66 0f 6f 46 20 movdqa 0x20(%rsi),%xmm0 0.00 : 122e6b: 66 0f 6f 4e 30 movdqa 0x30(%rsi),%xmm1 0.00 : 122e70: 48 83 c6 40 add $0x40,%rsi 0.00 : 122e74: 66 0f 7f 47 20 movdqa %xmm0,0x20(%rdi) 0.00 : 122e79: 66 0f 7f 4f 30 movdqa %xmm1,0x30(%rdi) 0.00 : 122e7e: 48 83 c7 40 add $0x40,%rdi 0.00 : 122e82: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 122e86: 72 1e jb 122ea6 <__memmove_ssse3+0x2f6> 0.00 : 122e88: 66 0f 6f 06 movdqa (%rsi),%xmm0 0.00 : 122e8c: 48 83 ea 20 sub $0x20,%rdx 0.00 : 122e90: 66 0f 6f 4e 10 movdqa 0x10(%rsi),%xmm1 0.00 : 122e95: 48 83 c6 20 add $0x20,%rsi 0.00 : 122e99: 66 0f 7f 07 movdqa %xmm0,(%rdi) 0.00 : 122e9d: 66 0f 7f 4f 10 movdqa %xmm1,0x10(%rdi) 0.00 : 122ea2: 48 83 c7 20 add $0x20,%rdi 0.00 : 122ea6: 48 01 d7 add %rdx,%rdi 0.00 : 122ea9: 48 01 d6 add %rdx,%rsi 0.00 : 122eac: 4c 8d 1d ed 13 02 00 lea 0x213ed(%rip),%r11 # 1442a0 0.00 : 122eb3: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 122eb7: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 122ebb: ff e2 jmpq *%rdx 0.00 : 122ebd: 0f 0b ud2 0.00 : 122ebf: 90 nop 0.00 : 122ec0: 48 83 ea 10 sub $0x10,%rdx 0.00 : 122ec4: 66 0f 6f 4e f0 movdqa -0x10(%rsi),%xmm1 0.00 : 122ec9: 48 83 ee 10 sub $0x10,%rsi 0.00 : 122ecd: 66 0f 7f 4f f0 movdqa %xmm1,-0x10(%rdi) 0.00 : 122ed2: 48 83 ef 10 sub $0x10,%rdi 0.00 : 122ed6: 48 81 fa 80 00 00 00 cmp $0x80,%rdx 0.00 : 122edd: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 122ee2: 77 4c ja 122f30 <__memmove_ssse3+0x380> 0.00 : 122ee4: 48 83 fa 40 cmp $0x40,%rdx 0.00 : 122ee8: 72 2c jb 122f16 <__memmove_ssse3+0x366> 0.00 : 122eea: 0f 28 46 f0 movaps -0x10(%rsi),%xmm0 0.00 : 122eee: 0f 28 4e e0 movaps -0x20(%rsi),%xmm1 0.00 : 122ef2: 0f 28 56 d0 movaps -0x30(%rsi),%xmm2 0.00 : 122ef6: 0f 28 5e c0 movaps -0x40(%rsi),%xmm3 0.00 : 122efa: 0f 29 47 f0 movaps %xmm0,-0x10(%rdi) 0.00 : 122efe: 0f 29 4f e0 movaps %xmm1,-0x20(%rdi) 0.00 : 122f02: 0f 29 57 d0 movaps %xmm2,-0x30(%rdi) 0.00 : 122f06: 0f 29 5f c0 movaps %xmm3,-0x40(%rdi) 0.00 : 122f0a: 48 83 ea 40 sub $0x40,%rdx 0.00 : 122f0e: 48 83 ee 40 sub $0x40,%rsi 0.00 : 122f12: 48 83 ef 40 sub $0x40,%rdi 0.00 : 122f16: 4c 8d 1d 83 13 02 00 lea 0x21383(%rip),%r11 # 1442a0 0.00 : 122f1d: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 122f21: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 122f25: ff e2 jmpq *%rdx 0.00 : 122f27: 0f 0b ud2 0.00 : 122f29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 122f30: 48 3b 15 d9 f1 24 00 cmp 0x24f1d9(%rip),%rdx # 372110 <__x86_64_data_cache_size_half> 0.00 : 122f37: 48 8d 52 80 lea -0x80(%rdx),%rdx 0.00 : 122f3b: 0f 83 af 00 00 00 jae 122ff0 <__memmove_ssse3+0x440> 0.00 : 122f41: 66 0f 6f 46 f0 movdqa -0x10(%rsi),%xmm0 0.00 : 122f46: 0f 28 4e e0 movaps -0x20(%rsi),%xmm1 0.00 : 122f4a: 0f 28 56 d0 movaps -0x30(%rsi),%xmm2 0.00 : 122f4e: 0f 28 5e c0 movaps -0x40(%rsi),%xmm3 0.00 : 122f52: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 122f57: 0f 29 4f e0 movaps %xmm1,-0x20(%rdi) 0.00 : 122f5b: 0f 29 57 d0 movaps %xmm2,-0x30(%rdi) 0.00 : 122f5f: 0f 29 5f c0 movaps %xmm3,-0x40(%rdi) 0.00 : 122f63: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 122f6a: 0f 28 66 b0 movaps -0x50(%rsi),%xmm4 0.00 : 122f6e: 0f 28 6e a0 movaps -0x60(%rsi),%xmm5 0.00 : 122f72: 0f 28 76 90 movaps -0x70(%rsi),%xmm6 0.00 : 122f76: 0f 28 7e 80 movaps -0x80(%rsi),%xmm7 0.00 : 122f7a: 48 8d 76 80 lea -0x80(%rsi),%rsi 0.00 : 122f7e: 0f 29 67 b0 movaps %xmm4,-0x50(%rdi) 0.00 : 122f82: 0f 29 6f a0 movaps %xmm5,-0x60(%rdi) 0.00 : 122f86: 0f 29 77 90 movaps %xmm6,-0x70(%rdi) 0.00 : 122f8a: 0f 29 7f 80 movaps %xmm7,-0x80(%rdi) 0.00 : 122f8e: 48 8d 7f 80 lea -0x80(%rdi),%rdi 0.00 : 122f92: 73 ad jae 122f41 <__memmove_ssse3+0x391> 0.00 : 122f94: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 122f98: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 122f9f: 7c 34 jl 122fd5 <__memmove_ssse3+0x425> 0.00 : 122fa1: 66 0f 6f 46 f0 movdqa -0x10(%rsi),%xmm0 0.00 : 122fa6: 48 83 ea 40 sub $0x40,%rdx 0.00 : 122faa: 66 0f 6f 4e e0 movdqa -0x20(%rsi),%xmm1 0.00 : 122faf: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 122fb4: 66 0f 7f 4f e0 movdqa %xmm1,-0x20(%rdi) 0.00 : 122fb9: 66 0f 6f 46 d0 movdqa -0x30(%rsi),%xmm0 0.00 : 122fbe: 66 0f 6f 4e c0 movdqa -0x40(%rsi),%xmm1 0.00 : 122fc3: 48 83 ee 40 sub $0x40,%rsi 0.00 : 122fc7: 66 0f 7f 47 d0 movdqa %xmm0,-0x30(%rdi) 0.00 : 122fcc: 66 0f 7f 4f c0 movdqa %xmm1,-0x40(%rdi) 0.00 : 122fd1: 48 83 ef 40 sub $0x40,%rdi 0.00 : 122fd5: 4c 8d 1d c4 12 02 00 lea 0x212c4(%rip),%r11 # 1442a0 0.00 : 122fdc: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 122fe0: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 122fe4: ff e2 jmpq *%rdx 0.00 : 122fe6: 0f 0b ud2 0.00 : 122fe8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 122fef: 00 0.00 : 122ff0: 0f 18 8e 40 fe ff ff prefetcht0 -0x1c0(%rsi) 0.00 : 122ff7: 0f 18 8e 80 fd ff ff prefetcht0 -0x280(%rsi) 0.00 : 122ffe: 66 0f 6f 46 f0 movdqa -0x10(%rsi),%xmm0 0.00 : 123003: 66 0f 6f 4e e0 movdqa -0x20(%rsi),%xmm1 0.00 : 123008: 66 0f 6f 56 d0 movdqa -0x30(%rsi),%xmm2 0.00 : 12300d: 66 0f 6f 5e c0 movdqa -0x40(%rsi),%xmm3 0.00 : 123012: 66 0f 6f 66 b0 movdqa -0x50(%rsi),%xmm4 0.00 : 123017: 66 0f 6f 6e a0 movdqa -0x60(%rsi),%xmm5 0.00 : 12301c: 66 0f 6f 76 90 movdqa -0x70(%rsi),%xmm6 0.00 : 123021: 66 0f 6f 7e 80 movdqa -0x80(%rsi),%xmm7 0.00 : 123026: 48 8d 76 80 lea -0x80(%rsi),%rsi 0.00 : 12302a: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 123031: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 123036: 66 0f 7f 4f e0 movdqa %xmm1,-0x20(%rdi) 0.00 : 12303b: 66 0f 7f 57 d0 movdqa %xmm2,-0x30(%rdi) 0.00 : 123040: 66 0f 7f 5f c0 movdqa %xmm3,-0x40(%rdi) 0.00 : 123045: 66 0f 7f 67 b0 movdqa %xmm4,-0x50(%rdi) 0.00 : 12304a: 66 0f 7f 6f a0 movdqa %xmm5,-0x60(%rdi) 0.00 : 12304f: 66 0f 7f 77 90 movdqa %xmm6,-0x70(%rdi) 0.00 : 123054: 66 0f 7f 7f 80 movdqa %xmm7,-0x80(%rdi) 0.00 : 123059: 48 8d 7f 80 lea -0x80(%rdi),%rdi 0.00 : 12305d: 73 91 jae 122ff0 <__memmove_ssse3+0x440> 0.00 : 12305f: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 123063: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 12306a: 7c 34 jl 1230a0 <__memmove_ssse3+0x4f0> 0.00 : 12306c: 66 0f 6f 46 f0 movdqa -0x10(%rsi),%xmm0 0.00 : 123071: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123075: 66 0f 6f 4e e0 movdqa -0x20(%rsi),%xmm1 0.00 : 12307a: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 12307f: 66 0f 7f 4f e0 movdqa %xmm1,-0x20(%rdi) 0.00 : 123084: 66 0f 6f 46 d0 movdqa -0x30(%rsi),%xmm0 0.00 : 123089: 66 0f 6f 4e c0 movdqa -0x40(%rsi),%xmm1 0.00 : 12308e: 48 83 ee 40 sub $0x40,%rsi 0.00 : 123092: 66 0f 7f 47 d0 movdqa %xmm0,-0x30(%rdi) 0.00 : 123097: 66 0f 7f 4f c0 movdqa %xmm1,-0x40(%rdi) 0.00 : 12309c: 48 83 ef 40 sub $0x40,%rdi 0.00 : 1230a0: 48 83 fa 20 cmp $0x20,%rdx 0.00 : 1230a4: 72 20 jb 1230c6 <__memmove_ssse3+0x516> 0.00 : 1230a6: 66 0f 6f 46 f0 movdqa -0x10(%rsi),%xmm0 0.00 : 1230ab: 48 83 ea 20 sub $0x20,%rdx 0.00 : 1230af: 66 0f 6f 4e e0 movdqa -0x20(%rsi),%xmm1 0.00 : 1230b4: 48 83 ee 20 sub $0x20,%rsi 0.00 : 1230b8: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 0.00 : 1230bd: 66 0f 7f 4f e0 movdqa %xmm1,-0x20(%rdi) 0.00 : 1230c2: 48 83 ef 20 sub $0x20,%rdi 0.00 : 1230c6: 4c 8d 1d d3 11 02 00 lea 0x211d3(%rip),%r11 # 1442a0 0.00 : 1230cd: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1230d1: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1230d5: ff e2 jmpq *%rdx 0.00 : 1230d7: 0f 0b ud2 0.00 : 1230d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 1230e0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1230e7: 48 39 ca cmp %rcx,%rdx 0.00 : 1230ea: 0f 28 4e ff movaps -0x1(%rsi),%xmm1 0.00 : 1230ee: 72 07 jb 1230f7 <__memmove_ssse3+0x547> 0.00 : 1230f0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1230f7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1230fb: 41 ff e1 jmpq *%r9 0.00 : 1230fe: 0f 0b ud2 0.00 : 123100: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123107: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12310b: 0f 28 56 0f movaps 0xf(%rsi),%xmm2 0.00 : 12310f: 0f 28 5e 1f movaps 0x1f(%rsi),%xmm3 0.00 : 123113: 0f 28 66 2f movaps 0x2f(%rsi),%xmm4 0.00 : 123117: 0f 28 6e 3f movaps 0x3f(%rsi),%xmm5 0.00 : 12311b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12311f: 66 0f 3a 0f ec 01 palignr $0x1,%xmm4,%xmm5 0.00 : 123125: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123129: 66 0f 3a 0f e3 01 palignr $0x1,%xmm3,%xmm4 0.00 : 12312f: 66 0f 3a 0f da 01 palignr $0x1,%xmm2,%xmm3 0.00 : 123135: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123139: 66 0f 3a 0f d1 01 palignr $0x1,%xmm1,%xmm2 0.00 : 12313f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123143: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123148: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12314c: 72 0d jb 12315b <__memmove_ssse3+0x5ab> 0.00 : 12314e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123152: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123156: 41 ff e1 jmpq *%r9 0.00 : 123159: 0f 0b ud2 0.00 : 12315b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12315f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123163: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123167: 48 01 d7 add %rdx,%rdi 0.00 : 12316a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12316f: 48 01 d6 add %rdx,%rsi 0.00 : 123172: 4c 8d 1d 27 11 02 00 lea 0x21127(%rip),%r11 # 1442a0 0.00 : 123179: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12317d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123181: ff e2 jmpq *%rdx 0.00 : 123183: 0f 0b ud2 0.00 : 123185: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12318c: 00 00 00 00 0.00 : 123190: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123197: 48 39 ca cmp %rcx,%rdx 0.00 : 12319a: 0f 28 4e ff movaps -0x1(%rsi),%xmm1 0.00 : 12319e: 72 07 jb 1231a7 <__memmove_ssse3+0x5f7> 0.00 : 1231a0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1231a7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1231ab: 41 ff e1 jmpq *%r9 0.00 : 1231ae: 0f 0b ud2 0.00 : 1231b0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 1231b7: 0f 28 56 ef movaps -0x11(%rsi),%xmm2 0.00 : 1231bb: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1231bf: 0f 28 5e df movaps -0x21(%rsi),%xmm3 0.00 : 1231c3: 0f 28 66 cf movaps -0x31(%rsi),%xmm4 0.00 : 1231c7: 0f 28 6e bf movaps -0x41(%rsi),%xmm5 0.00 : 1231cb: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 1231cf: 66 0f 3a 0f ca 01 palignr $0x1,%xmm2,%xmm1 0.00 : 1231d5: 66 0f 3a 0f d3 01 palignr $0x1,%xmm3,%xmm2 0.00 : 1231db: 66 0f 3a 0f dc 01 palignr $0x1,%xmm4,%xmm3 0.00 : 1231e1: 66 0f 3a 0f e5 01 palignr $0x1,%xmm5,%xmm4 0.00 : 1231e7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 1231eb: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 1231ee: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 1231f2: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 1231f6: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 1231fa: 72 08 jb 123204 <__memmove_ssse3+0x654> 0.00 : 1231fc: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1231ff: 41 ff e1 jmpq *%r9 0.00 : 123202: 0f 0b ud2 0.00 : 123204: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123207: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12320b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123210: 4c 8d 1d 89 10 02 00 lea 0x21089(%rip),%r11 # 1442a0 0.00 : 123217: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12321b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12321f: ff e2 jmpq *%rdx 0.00 : 123221: 0f 0b ud2 0.00 : 123223: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12322a: 84 00 00 00 00 00 0.00 : 123230: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123237: 48 39 ca cmp %rcx,%rdx 0.00 : 12323a: 0f 28 4e fe movaps -0x2(%rsi),%xmm1 0.00 : 12323e: 72 07 jb 123247 <__memmove_ssse3+0x697> 0.00 : 123240: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123247: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12324b: 41 ff e1 jmpq *%r9 0.00 : 12324e: 0f 0b ud2 0.00 : 123250: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123257: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12325b: 0f 28 56 0e movaps 0xe(%rsi),%xmm2 0.00 : 12325f: 0f 28 5e 1e movaps 0x1e(%rsi),%xmm3 0.00 : 123263: 0f 28 66 2e movaps 0x2e(%rsi),%xmm4 0.00 : 123267: 0f 28 6e 3e movaps 0x3e(%rsi),%xmm5 0.00 : 12326b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12326f: 66 0f 3a 0f ec 02 palignr $0x2,%xmm4,%xmm5 0.00 : 123275: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123279: 66 0f 3a 0f e3 02 palignr $0x2,%xmm3,%xmm4 0.00 : 12327f: 66 0f 3a 0f da 02 palignr $0x2,%xmm2,%xmm3 0.00 : 123285: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123289: 66 0f 3a 0f d1 02 palignr $0x2,%xmm1,%xmm2 0.00 : 12328f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123293: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123298: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12329c: 72 0d jb 1232ab <__memmove_ssse3+0x6fb> 0.00 : 12329e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1232a2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1232a6: 41 ff e1 jmpq *%r9 0.00 : 1232a9: 0f 0b ud2 0.00 : 1232ab: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1232af: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1232b3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1232b7: 48 01 d7 add %rdx,%rdi 0.00 : 1232ba: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1232bf: 48 01 d6 add %rdx,%rsi 0.00 : 1232c2: 4c 8d 1d d7 0f 02 00 lea 0x20fd7(%rip),%r11 # 1442a0 0.00 : 1232c9: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1232cd: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1232d1: ff e2 jmpq *%rdx 0.00 : 1232d3: 0f 0b ud2 0.00 : 1232d5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1232dc: 00 00 00 00 0.00 : 1232e0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1232e7: 48 39 ca cmp %rcx,%rdx 0.00 : 1232ea: 0f 28 4e fe movaps -0x2(%rsi),%xmm1 0.00 : 1232ee: 72 07 jb 1232f7 <__memmove_ssse3+0x747> 0.00 : 1232f0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1232f7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1232fb: 41 ff e1 jmpq *%r9 0.00 : 1232fe: 0f 0b ud2 0.00 : 123300: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123307: 0f 28 56 ee movaps -0x12(%rsi),%xmm2 0.00 : 12330b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12330f: 0f 28 5e de movaps -0x22(%rsi),%xmm3 0.00 : 123313: 0f 28 66 ce movaps -0x32(%rsi),%xmm4 0.00 : 123317: 0f 28 6e be movaps -0x42(%rsi),%xmm5 0.00 : 12331b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12331f: 66 0f 3a 0f ca 02 palignr $0x2,%xmm2,%xmm1 0.00 : 123325: 66 0f 3a 0f d3 02 palignr $0x2,%xmm3,%xmm2 0.00 : 12332b: 66 0f 3a 0f dc 02 palignr $0x2,%xmm4,%xmm3 0.00 : 123331: 66 0f 3a 0f e5 02 palignr $0x2,%xmm5,%xmm4 0.00 : 123337: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12333b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12333e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123342: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123346: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12334a: 72 08 jb 123354 <__memmove_ssse3+0x7a4> 0.00 : 12334c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12334f: 41 ff e1 jmpq *%r9 0.00 : 123352: 0f 0b ud2 0.00 : 123354: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123357: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12335b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123360: 4c 8d 1d 39 0f 02 00 lea 0x20f39(%rip),%r11 # 1442a0 0.00 : 123367: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12336b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12336f: ff e2 jmpq *%rdx 0.00 : 123371: 0f 0b ud2 0.00 : 123373: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12337a: 84 00 00 00 00 00 0.00 : 123380: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123387: 48 39 ca cmp %rcx,%rdx 0.00 : 12338a: 0f 28 4e fd movaps -0x3(%rsi),%xmm1 0.00 : 12338e: 72 07 jb 123397 <__memmove_ssse3+0x7e7> 0.00 : 123390: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123397: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12339b: 41 ff e1 jmpq *%r9 0.00 : 12339e: 0f 0b ud2 0.00 : 1233a0: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 1233a7: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1233ab: 0f 28 56 0d movaps 0xd(%rsi),%xmm2 0.00 : 1233af: 0f 28 5e 1d movaps 0x1d(%rsi),%xmm3 0.00 : 1233b3: 0f 28 66 2d movaps 0x2d(%rsi),%xmm4 0.00 : 1233b7: 0f 28 6e 3d movaps 0x3d(%rsi),%xmm5 0.00 : 1233bb: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 1233bf: 66 0f 3a 0f ec 03 palignr $0x3,%xmm4,%xmm5 0.00 : 1233c5: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 1233c9: 66 0f 3a 0f e3 03 palignr $0x3,%xmm3,%xmm4 0.00 : 1233cf: 66 0f 3a 0f da 03 palignr $0x3,%xmm2,%xmm3 0.00 : 1233d5: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 1233d9: 66 0f 3a 0f d1 03 palignr $0x3,%xmm1,%xmm2 0.00 : 1233df: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 1233e3: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 1233e8: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 1233ec: 72 0d jb 1233fb <__memmove_ssse3+0x84b> 0.00 : 1233ee: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1233f2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1233f6: 41 ff e1 jmpq *%r9 0.00 : 1233f9: 0f 0b ud2 0.00 : 1233fb: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1233ff: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123403: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123407: 48 01 d7 add %rdx,%rdi 0.00 : 12340a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12340f: 48 01 d6 add %rdx,%rsi 0.00 : 123412: 4c 8d 1d 87 0e 02 00 lea 0x20e87(%rip),%r11 # 1442a0 0.00 : 123419: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12341d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123421: ff e2 jmpq *%rdx 0.00 : 123423: 0f 0b ud2 0.00 : 123425: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12342c: 00 00 00 00 0.00 : 123430: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123437: 48 39 ca cmp %rcx,%rdx 0.00 : 12343a: 0f 28 4e fd movaps -0x3(%rsi),%xmm1 0.00 : 12343e: 72 07 jb 123447 <__memmove_ssse3+0x897> 0.00 : 123440: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123447: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12344b: 41 ff e1 jmpq *%r9 0.00 : 12344e: 0f 0b ud2 0.00 : 123450: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123457: 0f 28 56 ed movaps -0x13(%rsi),%xmm2 0.00 : 12345b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12345f: 0f 28 5e dd movaps -0x23(%rsi),%xmm3 0.00 : 123463: 0f 28 66 cd movaps -0x33(%rsi),%xmm4 0.00 : 123467: 0f 28 6e bd movaps -0x43(%rsi),%xmm5 0.00 : 12346b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12346f: 66 0f 3a 0f ca 03 palignr $0x3,%xmm2,%xmm1 0.00 : 123475: 66 0f 3a 0f d3 03 palignr $0x3,%xmm3,%xmm2 0.00 : 12347b: 66 0f 3a 0f dc 03 palignr $0x3,%xmm4,%xmm3 0.00 : 123481: 66 0f 3a 0f e5 03 palignr $0x3,%xmm5,%xmm4 0.00 : 123487: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12348b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12348e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123492: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123496: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12349a: 72 08 jb 1234a4 <__memmove_ssse3+0x8f4> 0.00 : 12349c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12349f: 41 ff e1 jmpq *%r9 0.00 : 1234a2: 0f 0b ud2 0.00 : 1234a4: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1234a7: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1234ab: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1234b0: 4c 8d 1d e9 0d 02 00 lea 0x20de9(%rip),%r11 # 1442a0 0.00 : 1234b7: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1234bb: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1234bf: ff e2 jmpq *%rdx 0.00 : 1234c1: 0f 0b ud2 0.00 : 1234c3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1234ca: 84 00 00 00 00 00 0.00 : 1234d0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1234d7: 48 39 ca cmp %rcx,%rdx 0.00 : 1234da: 0f 28 4e fc movaps -0x4(%rsi),%xmm1 0.00 : 1234de: 72 07 jb 1234e7 <__memmove_ssse3+0x937> 0.00 : 1234e0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1234e7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1234eb: 41 ff e1 jmpq *%r9 0.00 : 1234ee: 0f 0b ud2 0.00 : 1234f0: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 1234f7: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1234fb: 0f 28 56 0c movaps 0xc(%rsi),%xmm2 0.00 : 1234ff: 0f 28 5e 1c movaps 0x1c(%rsi),%xmm3 0.00 : 123503: 0f 28 66 2c movaps 0x2c(%rsi),%xmm4 0.00 : 123507: 0f 28 6e 3c movaps 0x3c(%rsi),%xmm5 0.00 : 12350b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12350f: 66 0f 3a 0f ec 04 palignr $0x4,%xmm4,%xmm5 0.00 : 123515: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123519: 66 0f 3a 0f e3 04 palignr $0x4,%xmm3,%xmm4 0.00 : 12351f: 66 0f 3a 0f da 04 palignr $0x4,%xmm2,%xmm3 0.00 : 123525: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123529: 66 0f 3a 0f d1 04 palignr $0x4,%xmm1,%xmm2 0.00 : 12352f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123533: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123538: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12353c: 72 0d jb 12354b <__memmove_ssse3+0x99b> 0.00 : 12353e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123542: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123546: 41 ff e1 jmpq *%r9 0.00 : 123549: 0f 0b ud2 0.00 : 12354b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12354f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123553: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123557: 48 01 d7 add %rdx,%rdi 0.00 : 12355a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12355f: 48 01 d6 add %rdx,%rsi 0.00 : 123562: 4c 8d 1d 37 0d 02 00 lea 0x20d37(%rip),%r11 # 1442a0 0.00 : 123569: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12356d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123571: ff e2 jmpq *%rdx 0.00 : 123573: 0f 0b ud2 0.00 : 123575: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12357c: 00 00 00 00 0.00 : 123580: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123587: 48 39 ca cmp %rcx,%rdx 0.00 : 12358a: 0f 28 4e fc movaps -0x4(%rsi),%xmm1 0.00 : 12358e: 72 07 jb 123597 <__memmove_ssse3+0x9e7> 0.00 : 123590: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123597: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12359b: 41 ff e1 jmpq *%r9 0.00 : 12359e: 0f 0b ud2 0.00 : 1235a0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 1235a7: 0f 28 56 ec movaps -0x14(%rsi),%xmm2 0.00 : 1235ab: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1235af: 0f 28 5e dc movaps -0x24(%rsi),%xmm3 0.00 : 1235b3: 0f 28 66 cc movaps -0x34(%rsi),%xmm4 0.00 : 1235b7: 0f 28 6e bc movaps -0x44(%rsi),%xmm5 0.00 : 1235bb: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 1235bf: 66 0f 3a 0f ca 04 palignr $0x4,%xmm2,%xmm1 0.00 : 1235c5: 66 0f 3a 0f d3 04 palignr $0x4,%xmm3,%xmm2 0.00 : 1235cb: 66 0f 3a 0f dc 04 palignr $0x4,%xmm4,%xmm3 0.00 : 1235d1: 66 0f 3a 0f e5 04 palignr $0x4,%xmm5,%xmm4 0.00 : 1235d7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 1235db: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 1235de: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 1235e2: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 1235e6: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 1235ea: 72 08 jb 1235f4 <__memmove_ssse3+0xa44> 0.00 : 1235ec: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1235ef: 41 ff e1 jmpq *%r9 0.00 : 1235f2: 0f 0b ud2 0.00 : 1235f4: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1235f7: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1235fb: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123600: 4c 8d 1d 99 0c 02 00 lea 0x20c99(%rip),%r11 # 1442a0 0.00 : 123607: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12360b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12360f: ff e2 jmpq *%rdx 0.00 : 123611: 0f 0b ud2 0.00 : 123613: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12361a: 84 00 00 00 00 00 0.00 : 123620: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123627: 48 39 ca cmp %rcx,%rdx 0.00 : 12362a: 0f 28 4e fb movaps -0x5(%rsi),%xmm1 0.00 : 12362e: 72 07 jb 123637 <__memmove_ssse3+0xa87> 0.00 : 123630: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123637: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12363b: 41 ff e1 jmpq *%r9 0.00 : 12363e: 0f 0b ud2 0.00 : 123640: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123647: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12364b: 0f 28 56 0b movaps 0xb(%rsi),%xmm2 0.00 : 12364f: 0f 28 5e 1b movaps 0x1b(%rsi),%xmm3 0.00 : 123653: 0f 28 66 2b movaps 0x2b(%rsi),%xmm4 0.00 : 123657: 0f 28 6e 3b movaps 0x3b(%rsi),%xmm5 0.00 : 12365b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12365f: 66 0f 3a 0f ec 05 palignr $0x5,%xmm4,%xmm5 0.00 : 123665: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123669: 66 0f 3a 0f e3 05 palignr $0x5,%xmm3,%xmm4 0.00 : 12366f: 66 0f 3a 0f da 05 palignr $0x5,%xmm2,%xmm3 0.00 : 123675: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123679: 66 0f 3a 0f d1 05 palignr $0x5,%xmm1,%xmm2 0.00 : 12367f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123683: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123688: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12368c: 72 0d jb 12369b <__memmove_ssse3+0xaeb> 0.00 : 12368e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123692: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123696: 41 ff e1 jmpq *%r9 0.00 : 123699: 0f 0b ud2 0.00 : 12369b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12369f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1236a3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1236a7: 48 01 d7 add %rdx,%rdi 0.00 : 1236aa: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1236af: 48 01 d6 add %rdx,%rsi 0.00 : 1236b2: 4c 8d 1d e7 0b 02 00 lea 0x20be7(%rip),%r11 # 1442a0 0.00 : 1236b9: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1236bd: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1236c1: ff e2 jmpq *%rdx 0.00 : 1236c3: 0f 0b ud2 0.00 : 1236c5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1236cc: 00 00 00 00 0.00 : 1236d0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1236d7: 48 39 ca cmp %rcx,%rdx 0.00 : 1236da: 0f 28 4e fb movaps -0x5(%rsi),%xmm1 0.00 : 1236de: 72 07 jb 1236e7 <__memmove_ssse3+0xb37> 0.00 : 1236e0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1236e7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1236eb: 41 ff e1 jmpq *%r9 0.00 : 1236ee: 0f 0b ud2 0.00 : 1236f0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 1236f7: 0f 28 56 eb movaps -0x15(%rsi),%xmm2 0.00 : 1236fb: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1236ff: 0f 28 5e db movaps -0x25(%rsi),%xmm3 0.00 : 123703: 0f 28 66 cb movaps -0x35(%rsi),%xmm4 0.00 : 123707: 0f 28 6e bb movaps -0x45(%rsi),%xmm5 0.00 : 12370b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12370f: 66 0f 3a 0f ca 05 palignr $0x5,%xmm2,%xmm1 0.00 : 123715: 66 0f 3a 0f d3 05 palignr $0x5,%xmm3,%xmm2 0.00 : 12371b: 66 0f 3a 0f dc 05 palignr $0x5,%xmm4,%xmm3 0.00 : 123721: 66 0f 3a 0f e5 05 palignr $0x5,%xmm5,%xmm4 0.00 : 123727: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12372b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12372e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123732: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123736: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12373a: 72 08 jb 123744 <__memmove_ssse3+0xb94> 0.00 : 12373c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12373f: 41 ff e1 jmpq *%r9 0.00 : 123742: 0f 0b ud2 0.00 : 123744: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123747: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12374b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123750: 4c 8d 1d 49 0b 02 00 lea 0x20b49(%rip),%r11 # 1442a0 0.00 : 123757: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12375b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12375f: ff e2 jmpq *%rdx 0.00 : 123761: 0f 0b ud2 0.00 : 123763: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12376a: 84 00 00 00 00 00 0.00 : 123770: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123777: 48 39 ca cmp %rcx,%rdx 0.00 : 12377a: 0f 28 4e fa movaps -0x6(%rsi),%xmm1 0.00 : 12377e: 72 07 jb 123787 <__memmove_ssse3+0xbd7> 0.00 : 123780: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123787: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12378b: 41 ff e1 jmpq *%r9 0.00 : 12378e: 0f 0b ud2 0.00 : 123790: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123797: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12379b: 0f 28 56 0a movaps 0xa(%rsi),%xmm2 0.00 : 12379f: 0f 28 5e 1a movaps 0x1a(%rsi),%xmm3 0.00 : 1237a3: 0f 28 66 2a movaps 0x2a(%rsi),%xmm4 0.00 : 1237a7: 0f 28 6e 3a movaps 0x3a(%rsi),%xmm5 0.00 : 1237ab: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 1237af: 66 0f 3a 0f ec 06 palignr $0x6,%xmm4,%xmm5 0.00 : 1237b5: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 1237b9: 66 0f 3a 0f e3 06 palignr $0x6,%xmm3,%xmm4 0.00 : 1237bf: 66 0f 3a 0f da 06 palignr $0x6,%xmm2,%xmm3 0.00 : 1237c5: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 1237c9: 66 0f 3a 0f d1 06 palignr $0x6,%xmm1,%xmm2 0.00 : 1237cf: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 1237d3: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 1237d8: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 1237dc: 72 0d jb 1237eb <__memmove_ssse3+0xc3b> 0.00 : 1237de: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1237e2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1237e6: 41 ff e1 jmpq *%r9 0.00 : 1237e9: 0f 0b ud2 0.00 : 1237eb: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1237ef: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1237f3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1237f7: 48 01 d7 add %rdx,%rdi 0.00 : 1237fa: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1237ff: 48 01 d6 add %rdx,%rsi 0.00 : 123802: 4c 8d 1d 97 0a 02 00 lea 0x20a97(%rip),%r11 # 1442a0 0.00 : 123809: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12380d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123811: ff e2 jmpq *%rdx 0.00 : 123813: 0f 0b ud2 0.00 : 123815: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12381c: 00 00 00 00 0.00 : 123820: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123827: 48 39 ca cmp %rcx,%rdx 0.00 : 12382a: 0f 28 4e fa movaps -0x6(%rsi),%xmm1 0.00 : 12382e: 72 07 jb 123837 <__memmove_ssse3+0xc87> 0.00 : 123830: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123837: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12383b: 41 ff e1 jmpq *%r9 0.00 : 12383e: 0f 0b ud2 0.00 : 123840: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123847: 0f 28 56 ea movaps -0x16(%rsi),%xmm2 0.00 : 12384b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12384f: 0f 28 5e da movaps -0x26(%rsi),%xmm3 0.00 : 123853: 0f 28 66 ca movaps -0x36(%rsi),%xmm4 0.00 : 123857: 0f 28 6e ba movaps -0x46(%rsi),%xmm5 0.00 : 12385b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12385f: 66 0f 3a 0f ca 06 palignr $0x6,%xmm2,%xmm1 0.00 : 123865: 66 0f 3a 0f d3 06 palignr $0x6,%xmm3,%xmm2 0.00 : 12386b: 66 0f 3a 0f dc 06 palignr $0x6,%xmm4,%xmm3 0.00 : 123871: 66 0f 3a 0f e5 06 palignr $0x6,%xmm5,%xmm4 0.00 : 123877: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12387b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12387e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123882: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123886: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12388a: 72 08 jb 123894 <__memmove_ssse3+0xce4> 0.00 : 12388c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12388f: 41 ff e1 jmpq *%r9 0.00 : 123892: 0f 0b ud2 0.00 : 123894: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123897: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12389b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1238a0: 4c 8d 1d f9 09 02 00 lea 0x209f9(%rip),%r11 # 1442a0 0.00 : 1238a7: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1238ab: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1238af: ff e2 jmpq *%rdx 0.00 : 1238b1: 0f 0b ud2 0.00 : 1238b3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1238ba: 84 00 00 00 00 00 0.00 : 1238c0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1238c7: 48 39 ca cmp %rcx,%rdx 0.00 : 1238ca: 0f 28 4e f9 movaps -0x7(%rsi),%xmm1 0.00 : 1238ce: 72 07 jb 1238d7 <__memmove_ssse3+0xd27> 0.00 : 1238d0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1238d7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1238db: 41 ff e1 jmpq *%r9 0.00 : 1238de: 0f 0b ud2 0.00 : 1238e0: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 1238e7: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1238eb: 0f 28 56 09 movaps 0x9(%rsi),%xmm2 0.00 : 1238ef: 0f 28 5e 19 movaps 0x19(%rsi),%xmm3 0.00 : 1238f3: 0f 28 66 29 movaps 0x29(%rsi),%xmm4 0.00 : 1238f7: 0f 28 6e 39 movaps 0x39(%rsi),%xmm5 0.00 : 1238fb: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 1238ff: 66 0f 3a 0f ec 07 palignr $0x7,%xmm4,%xmm5 0.00 : 123905: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123909: 66 0f 3a 0f e3 07 palignr $0x7,%xmm3,%xmm4 0.00 : 12390f: 66 0f 3a 0f da 07 palignr $0x7,%xmm2,%xmm3 0.00 : 123915: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123919: 66 0f 3a 0f d1 07 palignr $0x7,%xmm1,%xmm2 0.00 : 12391f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123923: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123928: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12392c: 72 0d jb 12393b <__memmove_ssse3+0xd8b> 0.00 : 12392e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123932: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123936: 41 ff e1 jmpq *%r9 0.00 : 123939: 0f 0b ud2 0.00 : 12393b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12393f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123943: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123947: 48 01 d7 add %rdx,%rdi 0.00 : 12394a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12394f: 48 01 d6 add %rdx,%rsi 0.00 : 123952: 4c 8d 1d 47 09 02 00 lea 0x20947(%rip),%r11 # 1442a0 0.00 : 123959: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12395d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123961: ff e2 jmpq *%rdx 0.00 : 123963: 0f 0b ud2 0.00 : 123965: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12396c: 00 00 00 00 0.00 : 123970: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123977: 48 39 ca cmp %rcx,%rdx 0.00 : 12397a: 0f 28 4e f9 movaps -0x7(%rsi),%xmm1 0.00 : 12397e: 72 07 jb 123987 <__memmove_ssse3+0xdd7> 0.00 : 123980: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123987: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12398b: 41 ff e1 jmpq *%r9 0.00 : 12398e: 0f 0b ud2 0.00 : 123990: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123997: 0f 28 56 e9 movaps -0x17(%rsi),%xmm2 0.00 : 12399b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12399f: 0f 28 5e d9 movaps -0x27(%rsi),%xmm3 0.00 : 1239a3: 0f 28 66 c9 movaps -0x37(%rsi),%xmm4 0.00 : 1239a7: 0f 28 6e b9 movaps -0x47(%rsi),%xmm5 0.00 : 1239ab: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 1239af: 66 0f 3a 0f ca 07 palignr $0x7,%xmm2,%xmm1 0.00 : 1239b5: 66 0f 3a 0f d3 07 palignr $0x7,%xmm3,%xmm2 0.00 : 1239bb: 66 0f 3a 0f dc 07 palignr $0x7,%xmm4,%xmm3 0.00 : 1239c1: 66 0f 3a 0f e5 07 palignr $0x7,%xmm5,%xmm4 0.00 : 1239c7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 1239cb: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 1239ce: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 1239d2: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 1239d6: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 1239da: 72 08 jb 1239e4 <__memmove_ssse3+0xe34> 0.00 : 1239dc: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1239df: 41 ff e1 jmpq *%r9 0.00 : 1239e2: 0f 0b ud2 0.00 : 1239e4: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1239e7: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1239eb: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1239f0: 4c 8d 1d a9 08 02 00 lea 0x208a9(%rip),%r11 # 1442a0 0.00 : 1239f7: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1239fb: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1239ff: ff e2 jmpq *%rdx 0.00 : 123a01: 0f 0b ud2 0.00 : 123a03: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123a0a: 84 00 00 00 00 00 0.00 : 123a10: 4d 8d 89 25 00 00 00 lea 0x25(%r9),%r9 0.00 : 123a17: 48 39 ca cmp %rcx,%rdx 0.00 : 123a1a: 0f 28 4e f8 movaps -0x8(%rsi),%xmm1 0.00 : 123a1e: 72 07 jb 123a27 <__memmove_ssse3+0xe77> 0.00 : 123a20: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123a27: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123a2b: 41 ff e1 jmpq *%r9 0.00 : 123a2e: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123a35: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123a39: 0f 28 56 08 movaps 0x8(%rsi),%xmm2 0.00 : 123a3d: 0f 28 5e 18 movaps 0x18(%rsi),%xmm3 0.00 : 123a41: 0f 28 66 28 movaps 0x28(%rsi),%xmm4 0.00 : 123a45: 0f 28 6e 38 movaps 0x38(%rsi),%xmm5 0.00 : 123a49: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 123a4d: 66 0f 3a 0f ec 08 palignr $0x8,%xmm4,%xmm5 0.00 : 123a53: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123a57: 66 0f 3a 0f e3 08 palignr $0x8,%xmm3,%xmm4 0.00 : 123a5d: 66 0f 3a 0f da 08 palignr $0x8,%xmm2,%xmm3 0.00 : 123a63: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123a67: 66 0f 3a 0f d1 08 palignr $0x8,%xmm1,%xmm2 0.00 : 123a6d: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123a71: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123a76: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 123a7a: 72 14 jb 123a90 <__memmove_ssse3+0xee0> 0.00 : 123a7c: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123a80: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123a84: 41 ff e1 jmpq *%r9 0.00 : 123a87: 0f 0b ud2 0.00 : 123a89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 123a90: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123a94: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123a98: 48 01 d6 add %rdx,%rsi 0.00 : 123a9b: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123a9f: 48 01 d7 add %rdx,%rdi 0.00 : 123aa2: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123aa7: 4c 8d 1d f2 07 02 00 lea 0x207f2(%rip),%r11 # 1442a0 0.00 : 123aae: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123ab2: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123ab6: ff e2 jmpq *%rdx 0.00 : 123ab8: 0f 0b ud2 0.00 : 123aba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 123ac0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123ac7: 48 39 ca cmp %rcx,%rdx 0.00 : 123aca: 0f 28 4e f8 movaps -0x8(%rsi),%xmm1 0.00 : 123ace: 72 07 jb 123ad7 <__memmove_ssse3+0xf27> 0.00 : 123ad0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123ad7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123adb: 41 ff e1 jmpq *%r9 0.00 : 123ade: 0f 0b ud2 0.00 : 123ae0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123ae7: 0f 28 56 e8 movaps -0x18(%rsi),%xmm2 0.00 : 123aeb: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123aef: 0f 28 5e d8 movaps -0x28(%rsi),%xmm3 0.00 : 123af3: 0f 28 66 c8 movaps -0x38(%rsi),%xmm4 0.00 : 123af7: 0f 28 6e b8 movaps -0x48(%rsi),%xmm5 0.00 : 123afb: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 123aff: 66 0f 3a 0f ca 08 palignr $0x8,%xmm2,%xmm1 0.00 : 123b05: 66 0f 3a 0f d3 08 palignr $0x8,%xmm3,%xmm2 0.00 : 123b0b: 66 0f 3a 0f dc 08 palignr $0x8,%xmm4,%xmm3 0.00 : 123b11: 66 0f 3a 0f e5 08 palignr $0x8,%xmm5,%xmm4 0.00 : 123b17: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 123b1b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 123b1e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123b22: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123b26: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 123b2a: 72 08 jb 123b34 <__memmove_ssse3+0xf84> 0.00 : 123b2c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123b2f: 41 ff e1 jmpq *%r9 0.00 : 123b32: 0f 0b ud2 0.00 : 123b34: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123b37: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123b3b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123b40: 4c 8d 1d 59 07 02 00 lea 0x20759(%rip),%r11 # 1442a0 0.00 : 123b47: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123b4b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123b4f: ff e2 jmpq *%rdx 0.00 : 123b51: 0f 0b ud2 0.00 : 123b53: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123b5a: 84 00 00 00 00 00 0.00 : 123b60: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123b67: 48 39 ca cmp %rcx,%rdx 0.00 : 123b6a: 0f 28 4e f7 movaps -0x9(%rsi),%xmm1 0.00 : 123b6e: 72 07 jb 123b77 <__memmove_ssse3+0xfc7> 0.00 : 123b70: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123b77: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123b7b: 41 ff e1 jmpq *%r9 0.00 : 123b7e: 0f 0b ud2 0.00 : 123b80: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123b87: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123b8b: 0f 28 56 07 movaps 0x7(%rsi),%xmm2 0.00 : 123b8f: 0f 28 5e 17 movaps 0x17(%rsi),%xmm3 0.00 : 123b93: 0f 28 66 27 movaps 0x27(%rsi),%xmm4 0.00 : 123b97: 0f 28 6e 37 movaps 0x37(%rsi),%xmm5 0.00 : 123b9b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 123b9f: 66 0f 3a 0f ec 09 palignr $0x9,%xmm4,%xmm5 0.00 : 123ba5: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123ba9: 66 0f 3a 0f e3 09 palignr $0x9,%xmm3,%xmm4 0.00 : 123baf: 66 0f 3a 0f da 09 palignr $0x9,%xmm2,%xmm3 0.00 : 123bb5: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123bb9: 66 0f 3a 0f d1 09 palignr $0x9,%xmm1,%xmm2 0.00 : 123bbf: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123bc3: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123bc8: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 123bcc: 72 0d jb 123bdb <__memmove_ssse3+0x102b> 0.00 : 123bce: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123bd2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123bd6: 41 ff e1 jmpq *%r9 0.00 : 123bd9: 0f 0b ud2 0.00 : 123bdb: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123bdf: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123be3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123be7: 48 01 d7 add %rdx,%rdi 0.00 : 123bea: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123bef: 48 01 d6 add %rdx,%rsi 0.00 : 123bf2: 4c 8d 1d a7 06 02 00 lea 0x206a7(%rip),%r11 # 1442a0 0.00 : 123bf9: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123bfd: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123c01: ff e2 jmpq *%rdx 0.00 : 123c03: 0f 0b ud2 0.00 : 123c05: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123c0c: 00 00 00 00 0.00 : 123c10: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123c17: 48 39 ca cmp %rcx,%rdx 0.00 : 123c1a: 0f 28 4e f7 movaps -0x9(%rsi),%xmm1 0.00 : 123c1e: 72 07 jb 123c27 <__memmove_ssse3+0x1077> 0.00 : 123c20: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123c27: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123c2b: 41 ff e1 jmpq *%r9 0.00 : 123c2e: 0f 0b ud2 0.00 : 123c30: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123c37: 0f 28 56 e7 movaps -0x19(%rsi),%xmm2 0.00 : 123c3b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123c3f: 0f 28 5e d7 movaps -0x29(%rsi),%xmm3 0.00 : 123c43: 0f 28 66 c7 movaps -0x39(%rsi),%xmm4 0.00 : 123c47: 0f 28 6e b7 movaps -0x49(%rsi),%xmm5 0.00 : 123c4b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 123c4f: 66 0f 3a 0f ca 09 palignr $0x9,%xmm2,%xmm1 0.00 : 123c55: 66 0f 3a 0f d3 09 palignr $0x9,%xmm3,%xmm2 0.00 : 123c5b: 66 0f 3a 0f dc 09 palignr $0x9,%xmm4,%xmm3 0.00 : 123c61: 66 0f 3a 0f e5 09 palignr $0x9,%xmm5,%xmm4 0.00 : 123c67: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 123c6b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 123c6e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123c72: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123c76: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 123c7a: 72 08 jb 123c84 <__memmove_ssse3+0x10d4> 0.00 : 123c7c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123c7f: 41 ff e1 jmpq *%r9 0.00 : 123c82: 0f 0b ud2 0.00 : 123c84: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123c87: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123c8b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123c90: 4c 8d 1d 09 06 02 00 lea 0x20609(%rip),%r11 # 1442a0 0.00 : 123c97: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123c9b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123c9f: ff e2 jmpq *%rdx 0.00 : 123ca1: 0f 0b ud2 0.00 : 123ca3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123caa: 84 00 00 00 00 00 0.00 : 123cb0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123cb7: 48 39 ca cmp %rcx,%rdx 0.00 : 123cba: 0f 28 4e f6 movaps -0xa(%rsi),%xmm1 0.00 : 123cbe: 72 07 jb 123cc7 <__memmove_ssse3+0x1117> 0.00 : 123cc0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123cc7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123ccb: 41 ff e1 jmpq *%r9 0.00 : 123cce: 0f 0b ud2 0.00 : 123cd0: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123cd7: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123cdb: 0f 28 56 06 movaps 0x6(%rsi),%xmm2 0.00 : 123cdf: 0f 28 5e 16 movaps 0x16(%rsi),%xmm3 0.00 : 123ce3: 0f 28 66 26 movaps 0x26(%rsi),%xmm4 0.00 : 123ce7: 0f 28 6e 36 movaps 0x36(%rsi),%xmm5 0.00 : 123ceb: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 123cef: 66 0f 3a 0f ec 0a palignr $0xa,%xmm4,%xmm5 0.00 : 123cf5: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123cf9: 66 0f 3a 0f e3 0a palignr $0xa,%xmm3,%xmm4 0.00 : 123cff: 66 0f 3a 0f da 0a palignr $0xa,%xmm2,%xmm3 0.00 : 123d05: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123d09: 66 0f 3a 0f d1 0a palignr $0xa,%xmm1,%xmm2 0.00 : 123d0f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123d13: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123d18: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 123d1c: 72 0d jb 123d2b <__memmove_ssse3+0x117b> 0.00 : 123d1e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123d22: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123d26: 41 ff e1 jmpq *%r9 0.00 : 123d29: 0f 0b ud2 0.00 : 123d2b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123d2f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123d33: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123d37: 48 01 d7 add %rdx,%rdi 0.00 : 123d3a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123d3f: 48 01 d6 add %rdx,%rsi 0.00 : 123d42: 4c 8d 1d 57 05 02 00 lea 0x20557(%rip),%r11 # 1442a0 0.00 : 123d49: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123d4d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123d51: ff e2 jmpq *%rdx 0.00 : 123d53: 0f 0b ud2 0.00 : 123d55: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123d5c: 00 00 00 00 0.00 : 123d60: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123d67: 48 39 ca cmp %rcx,%rdx 0.00 : 123d6a: 0f 28 4e f6 movaps -0xa(%rsi),%xmm1 0.00 : 123d6e: 72 07 jb 123d77 <__memmove_ssse3+0x11c7> 0.00 : 123d70: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123d77: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123d7b: 41 ff e1 jmpq *%r9 0.00 : 123d7e: 0f 0b ud2 0.00 : 123d80: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123d87: 0f 28 56 e6 movaps -0x1a(%rsi),%xmm2 0.00 : 123d8b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123d8f: 0f 28 5e d6 movaps -0x2a(%rsi),%xmm3 0.00 : 123d93: 0f 28 66 c6 movaps -0x3a(%rsi),%xmm4 0.00 : 123d97: 0f 28 6e b6 movaps -0x4a(%rsi),%xmm5 0.00 : 123d9b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 123d9f: 66 0f 3a 0f ca 0a palignr $0xa,%xmm2,%xmm1 0.00 : 123da5: 66 0f 3a 0f d3 0a palignr $0xa,%xmm3,%xmm2 0.00 : 123dab: 66 0f 3a 0f dc 0a palignr $0xa,%xmm4,%xmm3 0.00 : 123db1: 66 0f 3a 0f e5 0a palignr $0xa,%xmm5,%xmm4 0.00 : 123db7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 123dbb: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 123dbe: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123dc2: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123dc6: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 123dca: 72 08 jb 123dd4 <__memmove_ssse3+0x1224> 0.00 : 123dcc: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123dcf: 41 ff e1 jmpq *%r9 0.00 : 123dd2: 0f 0b ud2 0.00 : 123dd4: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123dd7: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123ddb: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123de0: 4c 8d 1d b9 04 02 00 lea 0x204b9(%rip),%r11 # 1442a0 0.00 : 123de7: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123deb: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123def: ff e2 jmpq *%rdx 0.00 : 123df1: 0f 0b ud2 0.00 : 123df3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123dfa: 84 00 00 00 00 00 0.00 : 123e00: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123e07: 48 39 ca cmp %rcx,%rdx 0.00 : 123e0a: 0f 28 4e f5 movaps -0xb(%rsi),%xmm1 0.00 : 123e0e: 72 07 jb 123e17 <__memmove_ssse3+0x1267> 0.00 : 123e10: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123e17: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123e1b: 41 ff e1 jmpq *%r9 0.00 : 123e1e: 0f 0b ud2 0.00 : 123e20: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123e27: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123e2b: 0f 28 56 05 movaps 0x5(%rsi),%xmm2 0.00 : 123e2f: 0f 28 5e 15 movaps 0x15(%rsi),%xmm3 0.00 : 123e33: 0f 28 66 25 movaps 0x25(%rsi),%xmm4 0.00 : 123e37: 0f 28 6e 35 movaps 0x35(%rsi),%xmm5 0.00 : 123e3b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 123e3f: 66 0f 3a 0f ec 0b palignr $0xb,%xmm4,%xmm5 0.00 : 123e45: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123e49: 66 0f 3a 0f e3 0b palignr $0xb,%xmm3,%xmm4 0.00 : 123e4f: 66 0f 3a 0f da 0b palignr $0xb,%xmm2,%xmm3 0.00 : 123e55: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123e59: 66 0f 3a 0f d1 0b palignr $0xb,%xmm1,%xmm2 0.00 : 123e5f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123e63: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123e68: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 123e6c: 72 0d jb 123e7b <__memmove_ssse3+0x12cb> 0.00 : 123e6e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123e72: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123e76: 41 ff e1 jmpq *%r9 0.00 : 123e79: 0f 0b ud2 0.00 : 123e7b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123e7f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123e83: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123e87: 48 01 d7 add %rdx,%rdi 0.00 : 123e8a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123e8f: 48 01 d6 add %rdx,%rsi 0.00 : 123e92: 4c 8d 1d 07 04 02 00 lea 0x20407(%rip),%r11 # 1442a0 0.00 : 123e99: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123e9d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123ea1: ff e2 jmpq *%rdx 0.00 : 123ea3: 0f 0b ud2 0.00 : 123ea5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123eac: 00 00 00 00 0.00 : 123eb0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123eb7: 48 39 ca cmp %rcx,%rdx 0.00 : 123eba: 0f 28 4e f5 movaps -0xb(%rsi),%xmm1 0.00 : 123ebe: 72 07 jb 123ec7 <__memmove_ssse3+0x1317> 0.00 : 123ec0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123ec7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123ecb: 41 ff e1 jmpq *%r9 0.00 : 123ece: 0f 0b ud2 0.00 : 123ed0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 123ed7: 0f 28 56 e5 movaps -0x1b(%rsi),%xmm2 0.00 : 123edb: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123edf: 0f 28 5e d5 movaps -0x2b(%rsi),%xmm3 0.00 : 123ee3: 0f 28 66 c5 movaps -0x3b(%rsi),%xmm4 0.00 : 123ee7: 0f 28 6e b5 movaps -0x4b(%rsi),%xmm5 0.00 : 123eeb: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 123eef: 66 0f 3a 0f ca 0b palignr $0xb,%xmm2,%xmm1 0.00 : 123ef5: 66 0f 3a 0f d3 0b palignr $0xb,%xmm3,%xmm2 0.00 : 123efb: 66 0f 3a 0f dc 0b palignr $0xb,%xmm4,%xmm3 0.00 : 123f01: 66 0f 3a 0f e5 0b palignr $0xb,%xmm5,%xmm4 0.00 : 123f07: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 123f0b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 123f0e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 123f12: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 123f16: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 123f1a: 72 08 jb 123f24 <__memmove_ssse3+0x1374> 0.00 : 123f1c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123f1f: 41 ff e1 jmpq *%r9 0.00 : 123f22: 0f 0b ud2 0.00 : 123f24: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 123f27: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123f2b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123f30: 4c 8d 1d 69 03 02 00 lea 0x20369(%rip),%r11 # 1442a0 0.00 : 123f37: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123f3b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123f3f: ff e2 jmpq *%rdx 0.00 : 123f41: 0f 0b ud2 0.00 : 123f43: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123f4a: 84 00 00 00 00 00 0.00 : 123f50: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 123f57: 48 39 ca cmp %rcx,%rdx 0.00 : 123f5a: 0f 28 4e f4 movaps -0xc(%rsi),%xmm1 0.00 : 123f5e: 72 07 jb 123f67 <__memmove_ssse3+0x13b7> 0.00 : 123f60: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 123f67: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 123f6b: 41 ff e1 jmpq *%r9 0.00 : 123f6e: 0f 0b ud2 0.00 : 123f70: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 123f77: 48 83 ea 40 sub $0x40,%rdx 0.00 : 123f7b: 0f 28 56 04 movaps 0x4(%rsi),%xmm2 0.00 : 123f7f: 0f 28 5e 14 movaps 0x14(%rsi),%xmm3 0.00 : 123f83: 0f 28 66 24 movaps 0x24(%rsi),%xmm4 0.00 : 123f87: 0f 28 6e 34 movaps 0x34(%rsi),%xmm5 0.00 : 123f8b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 123f8f: 66 0f 3a 0f ec 0c palignr $0xc,%xmm4,%xmm5 0.00 : 123f95: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 123f99: 66 0f 3a 0f e3 0c palignr $0xc,%xmm3,%xmm4 0.00 : 123f9f: 66 0f 3a 0f da 0c palignr $0xc,%xmm2,%xmm3 0.00 : 123fa5: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 123fa9: 66 0f 3a 0f d1 0c palignr $0xc,%xmm1,%xmm2 0.00 : 123faf: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 123fb3: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 123fb8: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 123fbc: 72 0d jb 123fcb <__memmove_ssse3+0x141b> 0.00 : 123fbe: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123fc2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123fc6: 41 ff e1 jmpq *%r9 0.00 : 123fc9: 0f 0b ud2 0.00 : 123fcb: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 123fcf: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 123fd3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 123fd7: 48 01 d7 add %rdx,%rdi 0.00 : 123fda: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 123fdf: 48 01 d6 add %rdx,%rsi 0.00 : 123fe2: 4c 8d 1d b7 02 02 00 lea 0x202b7(%rip),%r11 # 1442a0 0.00 : 123fe9: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 123fed: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 123ff1: ff e2 jmpq *%rdx 0.00 : 123ff3: 0f 0b ud2 0.00 : 123ff5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 123ffc: 00 00 00 00 0.00 : 124000: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 124007: 48 39 ca cmp %rcx,%rdx 0.00 : 12400a: 0f 28 4e f4 movaps -0xc(%rsi),%xmm1 0.00 : 12400e: 72 07 jb 124017 <__memmove_ssse3+0x1467> 0.00 : 124010: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 124017: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12401b: 41 ff e1 jmpq *%r9 0.00 : 12401e: 0f 0b ud2 0.00 : 124020: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 124027: 0f 28 56 e4 movaps -0x1c(%rsi),%xmm2 0.00 : 12402b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12402f: 0f 28 5e d4 movaps -0x2c(%rsi),%xmm3 0.00 : 124033: 0f 28 66 c4 movaps -0x3c(%rsi),%xmm4 0.00 : 124037: 0f 28 6e b4 movaps -0x4c(%rsi),%xmm5 0.00 : 12403b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12403f: 66 0f 3a 0f ca 0c palignr $0xc,%xmm2,%xmm1 0.00 : 124045: 66 0f 3a 0f d3 0c palignr $0xc,%xmm3,%xmm2 0.00 : 12404b: 66 0f 3a 0f dc 0c palignr $0xc,%xmm4,%xmm3 0.00 : 124051: 66 0f 3a 0f e5 0c palignr $0xc,%xmm5,%xmm4 0.00 : 124057: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12405b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12405e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 124062: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 124066: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12406a: 72 08 jb 124074 <__memmove_ssse3+0x14c4> 0.00 : 12406c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12406f: 41 ff e1 jmpq *%r9 0.00 : 124072: 0f 0b ud2 0.00 : 124074: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 124077: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12407b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 124080: 4c 8d 1d 19 02 02 00 lea 0x20219(%rip),%r11 # 1442a0 0.00 : 124087: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12408b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12408f: ff e2 jmpq *%rdx 0.00 : 124091: 0f 0b ud2 0.00 : 124093: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12409a: 84 00 00 00 00 00 0.00 : 1240a0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1240a7: 48 39 ca cmp %rcx,%rdx 0.00 : 1240aa: 0f 28 4e f3 movaps -0xd(%rsi),%xmm1 0.00 : 1240ae: 72 07 jb 1240b7 <__memmove_ssse3+0x1507> 0.00 : 1240b0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1240b7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1240bb: 41 ff e1 jmpq *%r9 0.00 : 1240be: 0f 0b ud2 0.00 : 1240c0: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 1240c7: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1240cb: 0f 28 56 03 movaps 0x3(%rsi),%xmm2 0.00 : 1240cf: 0f 28 5e 13 movaps 0x13(%rsi),%xmm3 0.00 : 1240d3: 0f 28 66 23 movaps 0x23(%rsi),%xmm4 0.00 : 1240d7: 0f 28 6e 33 movaps 0x33(%rsi),%xmm5 0.00 : 1240db: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 1240df: 66 0f 3a 0f ec 0d palignr $0xd,%xmm4,%xmm5 0.00 : 1240e5: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 1240e9: 66 0f 3a 0f e3 0d palignr $0xd,%xmm3,%xmm4 0.00 : 1240ef: 66 0f 3a 0f da 0d palignr $0xd,%xmm2,%xmm3 0.00 : 1240f5: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 1240f9: 66 0f 3a 0f d1 0d palignr $0xd,%xmm1,%xmm2 0.00 : 1240ff: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 124103: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 124108: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12410c: 72 0d jb 12411b <__memmove_ssse3+0x156b> 0.00 : 12410e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 124112: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 124116: 41 ff e1 jmpq *%r9 0.00 : 124119: 0f 0b ud2 0.00 : 12411b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12411f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 124123: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 124127: 48 01 d7 add %rdx,%rdi 0.00 : 12412a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12412f: 48 01 d6 add %rdx,%rsi 0.00 : 124132: 4c 8d 1d 67 01 02 00 lea 0x20167(%rip),%r11 # 1442a0 0.00 : 124139: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12413d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 124141: ff e2 jmpq *%rdx 0.00 : 124143: 0f 0b ud2 0.00 : 124145: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12414c: 00 00 00 00 0.00 : 124150: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 124157: 48 39 ca cmp %rcx,%rdx 0.00 : 12415a: 0f 28 4e f3 movaps -0xd(%rsi),%xmm1 0.00 : 12415e: 72 07 jb 124167 <__memmove_ssse3+0x15b7> 0.00 : 124160: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 124167: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12416b: 41 ff e1 jmpq *%r9 0.00 : 12416e: 0f 0b ud2 0.00 : 124170: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 124177: 0f 28 56 e3 movaps -0x1d(%rsi),%xmm2 0.00 : 12417b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12417f: 0f 28 5e d3 movaps -0x2d(%rsi),%xmm3 0.00 : 124183: 0f 28 66 c3 movaps -0x3d(%rsi),%xmm4 0.00 : 124187: 0f 28 6e b3 movaps -0x4d(%rsi),%xmm5 0.00 : 12418b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12418f: 66 0f 3a 0f ca 0d palignr $0xd,%xmm2,%xmm1 0.00 : 124195: 66 0f 3a 0f d3 0d palignr $0xd,%xmm3,%xmm2 0.00 : 12419b: 66 0f 3a 0f dc 0d palignr $0xd,%xmm4,%xmm3 0.00 : 1241a1: 66 0f 3a 0f e5 0d palignr $0xd,%xmm5,%xmm4 0.00 : 1241a7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 1241ab: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 1241ae: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 1241b2: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 1241b6: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 1241ba: 72 08 jb 1241c4 <__memmove_ssse3+0x1614> 0.00 : 1241bc: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1241bf: 41 ff e1 jmpq *%r9 0.00 : 1241c2: 0f 0b ud2 0.00 : 1241c4: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 1241c7: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1241cb: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1241d0: 4c 8d 1d c9 00 02 00 lea 0x200c9(%rip),%r11 # 1442a0 0.00 : 1241d7: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1241db: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1241df: ff e2 jmpq *%rdx 0.00 : 1241e1: 0f 0b ud2 0.00 : 1241e3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1241ea: 84 00 00 00 00 00 0.00 : 1241f0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1241f7: 48 39 ca cmp %rcx,%rdx 0.00 : 1241fa: 0f 28 4e f2 movaps -0xe(%rsi),%xmm1 0.00 : 1241fe: 72 07 jb 124207 <__memmove_ssse3+0x1657> 0.00 : 124200: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 124207: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12420b: 41 ff e1 jmpq *%r9 0.00 : 12420e: 0f 0b ud2 0.00 : 124210: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 124217: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12421b: 0f 28 56 02 movaps 0x2(%rsi),%xmm2 0.00 : 12421f: 0f 28 5e 12 movaps 0x12(%rsi),%xmm3 0.00 : 124223: 0f 28 66 22 movaps 0x22(%rsi),%xmm4 0.00 : 124227: 0f 28 6e 32 movaps 0x32(%rsi),%xmm5 0.00 : 12422b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12422f: 66 0f 3a 0f ec 0e palignr $0xe,%xmm4,%xmm5 0.00 : 124235: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 124239: 66 0f 3a 0f e3 0e palignr $0xe,%xmm3,%xmm4 0.00 : 12423f: 66 0f 3a 0f da 0e palignr $0xe,%xmm2,%xmm3 0.00 : 124245: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 124249: 66 0f 3a 0f d1 0e palignr $0xe,%xmm1,%xmm2 0.00 : 12424f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 124253: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 124258: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 12425c: 72 0d jb 12426b <__memmove_ssse3+0x16bb> 0.00 : 12425e: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 124262: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 124266: 41 ff e1 jmpq *%r9 0.00 : 124269: 0f 0b ud2 0.00 : 12426b: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 12426f: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 124273: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 124277: 48 01 d7 add %rdx,%rdi 0.00 : 12427a: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12427f: 48 01 d6 add %rdx,%rsi 0.00 : 124282: 4c 8d 1d 17 00 02 00 lea 0x20017(%rip),%r11 # 1442a0 0.00 : 124289: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12428d: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 124291: ff e2 jmpq *%rdx 0.00 : 124293: 0f 0b ud2 0.00 : 124295: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12429c: 00 00 00 00 0.00 : 1242a0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1242a7: 48 39 ca cmp %rcx,%rdx 0.00 : 1242aa: 0f 28 4e f2 movaps -0xe(%rsi),%xmm1 0.00 : 1242ae: 72 07 jb 1242b7 <__memmove_ssse3+0x1707> 0.00 : 1242b0: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 1242b7: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 1242bb: 41 ff e1 jmpq *%r9 0.00 : 1242be: 0f 0b ud2 0.00 : 1242c0: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 1242c7: 0f 28 56 e2 movaps -0x1e(%rsi),%xmm2 0.00 : 1242cb: 48 83 ea 40 sub $0x40,%rdx 0.00 : 1242cf: 0f 28 5e d2 movaps -0x2e(%rsi),%xmm3 0.00 : 1242d3: 0f 28 66 c2 movaps -0x3e(%rsi),%xmm4 0.00 : 1242d7: 0f 28 6e b2 movaps -0x4e(%rsi),%xmm5 0.00 : 1242db: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 1242df: 66 0f 3a 0f ca 0e palignr $0xe,%xmm2,%xmm1 0.00 : 1242e5: 66 0f 3a 0f d3 0e palignr $0xe,%xmm3,%xmm2 0.00 : 1242eb: 66 0f 3a 0f dc 0e palignr $0xe,%xmm4,%xmm3 0.00 : 1242f1: 66 0f 3a 0f e5 0e palignr $0xe,%xmm5,%xmm4 0.00 : 1242f7: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 1242fb: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 1242fe: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 124302: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 124306: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12430a: 72 08 jb 124314 <__memmove_ssse3+0x1764> 0.00 : 12430c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12430f: 41 ff e1 jmpq *%r9 0.00 : 124312: 0f 0b ud2 0.00 : 124314: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 124317: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12431b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 124320: 4c 8d 1d 79 ff 01 00 lea 0x1ff79(%rip),%r11 # 1442a0 0.00 : 124327: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12432b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12432f: ff e2 jmpq *%rdx 0.00 : 124331: 0f 0b ud2 0.00 : 124333: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12433a: 84 00 00 00 00 00 0.00 : 124340: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 124347: 48 39 ca cmp %rcx,%rdx 0.00 : 12434a: 0f 28 4e f1 movaps -0xf(%rsi),%xmm1 0.00 : 12434e: 72 07 jb 124357 <__memmove_ssse3+0x17a7> 0.00 : 124350: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 124357: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12435b: 41 ff e1 jmpq *%r9 0.00 : 12435e: 0f 0b ud2 0.00 : 124360: 0f 18 86 c0 01 00 00 prefetchnta 0x1c0(%rsi) 0.00 : 124367: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12436b: 0f 28 56 01 movaps 0x1(%rsi),%xmm2 0.00 : 12436f: 0f 28 5e 11 movaps 0x11(%rsi),%xmm3 0.00 : 124373: 0f 28 66 21 movaps 0x21(%rsi),%xmm4 0.00 : 124377: 0f 28 6e 31 movaps 0x31(%rsi),%xmm5 0.00 : 12437b: 66 0f 6f f5 movdqa %xmm5,%xmm6 0.00 : 12437f: 66 0f 3a 0f ec 0f palignr $0xf,%xmm4,%xmm5 0.00 : 124385: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 124389: 66 0f 3a 0f e3 0f palignr $0xf,%xmm3,%xmm4 0.00 : 12438f: 66 0f 3a 0f da 0f palignr $0xf,%xmm2,%xmm3 0.00 : 124395: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 124399: 66 0f 3a 0f d1 0f palignr $0xf,%xmm1,%xmm2 0.00 : 12439f: 66 0f 6f ce movdqa %xmm6,%xmm1 0.00 : 1243a3: 66 0f 7f 57 c0 movdqa %xmm2,-0x40(%rdi) 0.00 : 1243a8: 0f 29 5f d0 movaps %xmm3,-0x30(%rdi) 0.00 : 1243ac: 72 0d jb 1243bb <__memmove_ssse3+0x180b> 0.00 : 1243ae: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1243b2: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1243b6: 41 ff e1 jmpq *%r9 0.00 : 1243b9: 0f 0b ud2 0.00 : 1243bb: 0f 29 67 e0 movaps %xmm4,-0x20(%rdi) 0.00 : 1243bf: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 1243c3: 0f 29 6f f0 movaps %xmm5,-0x10(%rdi) 0.00 : 1243c7: 48 01 d7 add %rdx,%rdi 0.00 : 1243ca: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1243cf: 48 01 d6 add %rdx,%rsi 0.00 : 1243d2: 4c 8d 1d c7 fe 01 00 lea 0x1fec7(%rip),%r11 # 1442a0 0.00 : 1243d9: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 1243dd: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1243e1: ff e2 jmpq *%rdx 0.00 : 1243e3: 0f 0b ud2 0.00 : 1243e5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1243ec: 00 00 00 00 0.00 : 1243f0: 4d 8d 89 27 00 00 00 lea 0x27(%r9),%r9 0.00 : 1243f7: 48 39 ca cmp %rcx,%rdx 0.00 : 1243fa: 0f 28 4e f1 movaps -0xf(%rsi),%xmm1 0.00 : 1243fe: 72 07 jb 124407 <__memmove_ssse3+0x1857> 0.00 : 124400: 4d 8d 89 f9 ff ff ff lea -0x7(%r9),%r9 0.00 : 124407: 48 8d 52 c0 lea -0x40(%rdx),%rdx 0.00 : 12440b: 41 ff e1 jmpq *%r9 0.00 : 12440e: 0f 0b ud2 0.00 : 124410: 0f 18 86 40 fe ff ff prefetchnta -0x1c0(%rsi) 0.00 : 124417: 0f 28 56 e1 movaps -0x1f(%rsi),%xmm2 0.00 : 12441b: 48 83 ea 40 sub $0x40,%rdx 0.00 : 12441f: 0f 28 5e d1 movaps -0x2f(%rsi),%xmm3 0.00 : 124423: 0f 28 66 c1 movaps -0x3f(%rsi),%xmm4 0.00 : 124427: 0f 28 6e b1 movaps -0x4f(%rsi),%xmm5 0.00 : 12442b: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 12442f: 66 0f 3a 0f ca 0f palignr $0xf,%xmm2,%xmm1 0.00 : 124435: 66 0f 3a 0f d3 0f palignr $0xf,%xmm3,%xmm2 0.00 : 12443b: 66 0f 3a 0f dc 0f palignr $0xf,%xmm4,%xmm3 0.00 : 124441: 66 0f 3a 0f e5 0f palignr $0xf,%xmm5,%xmm4 0.00 : 124447: 0f 29 4f f0 movaps %xmm1,-0x10(%rdi) 0.00 : 12444b: 0f 28 cd movaps %xmm5,%xmm1 0.00 : 12444e: 0f 29 57 e0 movaps %xmm2,-0x20(%rdi) 0.00 : 124452: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 124456: 0f 29 5f 10 movaps %xmm3,0x10(%rdi) 0.00 : 12445a: 72 08 jb 124464 <__memmove_ssse3+0x18b4> 0.00 : 12445c: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 12445f: 41 ff e1 jmpq *%r9 0.00 : 124462: 0f 0b ud2 0.00 : 124464: 0f 29 27 movaps %xmm4,(%rdi) 0.00 : 124467: 48 8d 52 40 lea 0x40(%rdx),%rdx 0.00 : 12446b: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 124470: 4c 8d 1d 29 fe 01 00 lea 0x1fe29(%rip),%r11 # 1442a0 0.00 : 124477: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12447b: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12447f: ff e2 jmpq *%rdx 0.00 : 124481: 0f 0b ud2 0.00 : 124483: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12448a: 84 00 00 00 00 00 0.00 : 124490: f3 0f 6f 46 b8 movdqu -0x48(%rsi),%xmm0 0.00 : 124495: f3 0f 6f 4e c8 movdqu -0x38(%rsi),%xmm1 0.00 : 12449a: 4c 8b 46 d8 mov -0x28(%rsi),%r8 0.00 : 12449e: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 1244a2: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 1244a6: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 1244aa: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 1244ae: f3 0f 7f 47 b8 movdqu %xmm0,-0x48(%rdi) 0.00 : 1244b3: f3 0f 7f 4f c8 movdqu %xmm1,-0x38(%rdi) 0.00 : 1244b8: 4c 89 47 d8 mov %r8,-0x28(%rdi) 0.00 : 1244bc: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 1244c0: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 1244c4: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 1244c8: 48 89 4f f8 mov %rcx,-0x8(%rdi) 0.00 : 1244cc: c3 retq 0.00 : 1244cd: 0f 1f 00 nopl (%rax) 0.00 : 1244d0: f3 0f 6f 46 c0 movdqu -0x40(%rsi),%xmm0 0.00 : 1244d5: 48 8b 4e d0 mov -0x30(%rsi),%rcx 0.00 : 1244d9: 4c 8b 46 d8 mov -0x28(%rsi),%r8 0.00 : 1244dd: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 1244e1: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 1244e5: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 1244e9: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1244ed: f3 0f 7f 47 c0 movdqu %xmm0,-0x40(%rdi) 0.00 : 1244f2: 48 89 4f d0 mov %rcx,-0x30(%rdi) 0.00 : 1244f6: 4c 89 47 d8 mov %r8,-0x28(%rdi) 0.00 : 1244fa: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 1244fe: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 124502: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 124506: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 12450a: c3 retq 0.00 : 12450b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 124510: f3 0f 6f 46 c8 movdqu -0x38(%rsi),%xmm0 0.00 : 124515: 4c 8b 46 d8 mov -0x28(%rsi),%r8 0.00 : 124519: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 12451d: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 124521: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 124525: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 124529: f3 0f 7f 47 c8 movdqu %xmm0,-0x38(%rdi) 0.00 : 12452e: 4c 89 47 d8 mov %r8,-0x28(%rdi) 0.00 : 124532: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 124536: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 12453a: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 12453e: 48 89 4f f8 mov %rcx,-0x8(%rdi) 0.00 : 124542: c3 retq 0.00 : 124543: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12454a: 84 00 00 00 00 00 0.00 : 124550: 48 8b 4e d0 mov -0x30(%rsi),%rcx 0.00 : 124554: 4c 8b 46 d8 mov -0x28(%rsi),%r8 0.00 : 124558: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 12455c: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 124560: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 124564: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124568: 48 89 4f d0 mov %rcx,-0x30(%rdi) 0.00 : 12456c: 4c 89 47 d8 mov %r8,-0x28(%rdi) 0.00 : 124570: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 124574: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 124578: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 12457c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124580: c3 retq 0.00 : 124581: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124588: 0f 1f 84 00 00 00 00 0.00 : 12458f: 00 0.00 : 124590: 4c 8b 46 d8 mov -0x28(%rsi),%r8 0.00 : 124594: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 124598: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 12459c: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 1245a0: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1245a4: 4c 89 47 d8 mov %r8,-0x28(%rdi) 0.00 : 1245a8: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 1245ac: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 1245b0: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 1245b4: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1245b8: c3 retq 0.00 : 1245b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 1245c0: 4c 8b 4e e0 mov -0x20(%rsi),%r9 0.00 : 1245c4: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 1245c8: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 1245cc: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1245d0: 4c 89 4f e0 mov %r9,-0x20(%rdi) 0.00 : 1245d4: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 1245d8: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 1245dc: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1245e0: c3 retq 0.00 : 1245e1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1245e8: 0f 1f 84 00 00 00 00 0.00 : 1245ef: 00 0.00 : 1245f0: 4c 8b 56 e8 mov -0x18(%rsi),%r10 0.00 : 1245f4: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 1245f8: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1245fc: 4c 89 57 e8 mov %r10,-0x18(%rdi) 0.00 : 124600: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 124604: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124608: c3 retq 0.00 : 124609: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124610: 4c 8b 5e f0 mov -0x10(%rsi),%r11 0.00 : 124614: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124618: 4c 89 5f f0 mov %r11,-0x10(%rdi) 0.00 : 12461c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124620: c3 retq 0.00 : 124621: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124628: 0f 1f 84 00 00 00 00 0.00 : 12462f: 00 0.00 : 124630: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124634: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124638: c3 retq 0.00 : 124639: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124640: f3 0f 6f 46 b7 movdqu -0x49(%rsi),%xmm0 0.00 : 124645: f3 0f 6f 4e c7 movdqu -0x39(%rsi),%xmm1 0.00 : 12464a: 48 8b 4e d7 mov -0x29(%rsi),%rcx 0.00 : 12464e: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 124652: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 124656: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 12465a: 4c 8b 46 f7 mov -0x9(%rsi),%r8 0.00 : 12465e: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124661: f3 0f 7f 47 b7 movdqu %xmm0,-0x49(%rdi) 0.00 : 124666: f3 0f 7f 4f c7 movdqu %xmm1,-0x39(%rdi) 0.00 : 12466b: 48 89 4f d7 mov %rcx,-0x29(%rdi) 0.00 : 12466f: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 124673: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 124677: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 12467b: 4c 89 47 f7 mov %r8,-0x9(%rdi) 0.00 : 12467f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124682: c3 retq 0.00 : 124683: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12468a: 84 00 00 00 00 00 0.00 : 124690: f3 0f 6f 46 bf movdqu -0x41(%rsi),%xmm0 0.00 : 124695: f3 0f 6f 4e cf movdqu -0x31(%rsi),%xmm1 0.00 : 12469a: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 12469e: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 1246a2: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 1246a6: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 1246aa: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1246ad: f3 0f 7f 47 bf movdqu %xmm0,-0x41(%rdi) 0.00 : 1246b2: f3 0f 7f 4f cf movdqu %xmm1,-0x31(%rdi) 0.00 : 1246b7: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 1246bb: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 1246bf: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 1246c3: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 1246c7: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1246ca: c3 retq 0.00 : 1246cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 1246d0: f3 0f 6f 46 c7 movdqu -0x39(%rsi),%xmm0 0.00 : 1246d5: 4c 8b 46 d7 mov -0x29(%rsi),%r8 0.00 : 1246d9: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 1246dd: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 1246e1: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 1246e5: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 1246e9: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1246ec: f3 0f 7f 47 c7 movdqu %xmm0,-0x39(%rdi) 0.00 : 1246f1: 4c 89 47 d7 mov %r8,-0x29(%rdi) 0.00 : 1246f5: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 1246f9: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 1246fd: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 124701: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 124705: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124708: c3 retq 0.00 : 124709: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124710: f3 0f 6f 46 cf movdqu -0x31(%rsi),%xmm0 0.00 : 124715: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 124719: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 12471d: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 124721: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 124725: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124728: f3 0f 7f 47 cf movdqu %xmm0,-0x31(%rdi) 0.00 : 12472d: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 124731: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 124735: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 124739: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 12473d: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124740: c3 retq 0.00 : 124741: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124748: 0f 1f 84 00 00 00 00 0.00 : 12474f: 00 0.00 : 124750: 4c 8b 46 d7 mov -0x29(%rsi),%r8 0.00 : 124754: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 124758: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 12475c: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 124760: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 124764: 8a 56 ff mov -0x1(%rsi),%dl 0.00 : 124767: 4c 89 47 d7 mov %r8,-0x29(%rdi) 0.00 : 12476b: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 12476f: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 124773: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 124777: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 12477b: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 12477e: c3 retq 0.00 : 12477f: 90 nop 0.00 : 124780: 4c 8b 4e df mov -0x21(%rsi),%r9 0.00 : 124784: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 124788: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 12478c: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 124790: 8a 56 ff mov -0x1(%rsi),%dl 0.00 : 124793: 4c 89 4f df mov %r9,-0x21(%rdi) 0.00 : 124797: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 12479b: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 12479f: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 1247a3: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 1247a6: c3 retq 0.00 : 1247a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1247ae: 00 00 0.00 : 1247b0: 4c 8b 56 e7 mov -0x19(%rsi),%r10 0.00 : 1247b4: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 1247b8: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 1247bc: 8a 56 ff mov -0x1(%rsi),%dl 0.00 : 1247bf: 4c 89 57 e7 mov %r10,-0x19(%rdi) 0.00 : 1247c3: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 1247c7: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 1247cb: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 1247ce: c3 retq 0.00 : 1247cf: 90 nop 0.00 : 1247d0: 4c 8b 5e ef mov -0x11(%rsi),%r11 0.00 : 1247d4: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 1247d8: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1247db: 4c 89 5f ef mov %r11,-0x11(%rdi) 0.00 : 1247df: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 1247e3: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1247e6: c3 retq 0.00 : 1247e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1247ee: 00 00 0.00 : 1247f0: 48 8b 4e f7 mov -0x9(%rsi),%rcx 0.00 : 1247f4: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1247f7: 48 89 4f f7 mov %rcx,-0x9(%rdi) 0.00 : 1247fb: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1247fe: c3 retq 0.00 : 1247ff: 90 nop 0.00 : 124800: 8a 56 ff mov -0x1(%rsi),%dl 0.00 : 124803: 88 57 ff mov %dl,-0x1(%rdi) 0.00 : 124806: c3 retq 0.00 : 124807: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 12480e: 00 00 0.00 : 124810: f3 0f 6f 46 b6 movdqu -0x4a(%rsi),%xmm0 0.00 : 124815: f3 0f 6f 4e c6 movdqu -0x3a(%rsi),%xmm1 0.00 : 12481a: 4c 8b 46 d6 mov -0x2a(%rsi),%r8 0.00 : 12481e: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 124822: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 124826: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 12482a: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 12482e: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124831: f3 0f 7f 47 b6 movdqu %xmm0,-0x4a(%rdi) 0.00 : 124836: f3 0f 7f 4f c6 movdqu %xmm1,-0x3a(%rdi) 0.00 : 12483b: 4c 89 47 d6 mov %r8,-0x2a(%rdi) 0.00 : 12483f: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 124843: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 124847: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 12484b: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 12484f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124852: c3 retq 0.00 : 124853: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12485a: 84 00 00 00 00 00 0.00 : 124860: f3 0f 6f 46 be movdqu -0x42(%rsi),%xmm0 0.00 : 124865: f3 0f 6f 4e ce movdqu -0x32(%rsi),%xmm1 0.00 : 12486a: 4c 8b 46 d6 mov -0x2a(%rsi),%r8 0.00 : 12486e: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 124872: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 124876: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 12487a: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 12487e: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124881: f3 0f 7f 47 be movdqu %xmm0,-0x42(%rdi) 0.00 : 124886: f3 0f 7f 4f ce movdqu %xmm1,-0x32(%rdi) 0.00 : 12488b: 4c 89 47 d6 mov %r8,-0x2a(%rdi) 0.00 : 12488f: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 124893: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 124897: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 12489b: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 12489f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1248a2: c3 retq 0.00 : 1248a3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1248aa: 84 00 00 00 00 00 0.00 : 1248b0: f3 0f 6f 4e c6 movdqu -0x3a(%rsi),%xmm1 0.00 : 1248b5: 4c 8b 46 d6 mov -0x2a(%rsi),%r8 0.00 : 1248b9: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 1248bd: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 1248c1: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 1248c5: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 1248c9: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1248cc: f3 0f 7f 4f c6 movdqu %xmm1,-0x3a(%rdi) 0.00 : 1248d1: 4c 89 47 d6 mov %r8,-0x2a(%rdi) 0.00 : 1248d5: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 1248d9: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 1248dd: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 1248e1: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 1248e5: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1248e8: c3 retq 0.00 : 1248e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 1248f0: f3 0f 6f 46 ce movdqu -0x32(%rsi),%xmm0 0.00 : 1248f5: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 1248f9: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 1248fd: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 124901: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 124905: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124908: f3 0f 7f 47 ce movdqu %xmm0,-0x32(%rdi) 0.00 : 12490d: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 124911: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 124915: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 124919: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 12491d: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124920: c3 retq 0.00 : 124921: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124928: 0f 1f 84 00 00 00 00 0.00 : 12492f: 00 0.00 : 124930: 4c 8b 46 d6 mov -0x2a(%rsi),%r8 0.00 : 124934: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 124938: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 12493c: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 124940: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 124944: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124947: 4c 89 47 d6 mov %r8,-0x2a(%rdi) 0.00 : 12494b: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 12494f: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 124953: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 124957: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 12495b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 12495e: c3 retq 0.00 : 12495f: 90 nop 0.00 : 124960: 4c 8b 4e de mov -0x22(%rsi),%r9 0.00 : 124964: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 124968: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 12496c: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 124970: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124973: 4c 89 4f de mov %r9,-0x22(%rdi) 0.00 : 124977: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 12497b: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 12497f: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 124983: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124986: c3 retq 0.00 : 124987: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 12498e: 00 00 0.00 : 124990: 4c 8b 56 e6 mov -0x1a(%rsi),%r10 0.00 : 124994: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 124998: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 12499c: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 12499f: 4c 89 57 e6 mov %r10,-0x1a(%rdi) 0.00 : 1249a3: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 1249a7: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 1249ab: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1249ae: c3 retq 0.00 : 1249af: 90 nop 0.00 : 1249b0: 4c 8b 5e ee mov -0x12(%rsi),%r11 0.00 : 1249b4: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 1249b8: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1249bb: 4c 89 5f ee mov %r11,-0x12(%rdi) 0.00 : 1249bf: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 1249c3: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1249c6: c3 retq 0.00 : 1249c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1249ce: 00 00 0.00 : 1249d0: 48 8b 4e f6 mov -0xa(%rsi),%rcx 0.00 : 1249d4: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 1249d7: 48 89 4f f6 mov %rcx,-0xa(%rdi) 0.00 : 1249db: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 1249de: c3 retq 0.00 : 1249df: 90 nop 0.00 : 1249e0: 66 8b 56 fe mov -0x2(%rsi),%dx 0.00 : 1249e4: 66 89 57 fe mov %dx,-0x2(%rdi) 0.00 : 1249e8: c3 retq 0.00 : 1249e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 1249f0: f3 0f 6f 46 b5 movdqu -0x4b(%rsi),%xmm0 0.00 : 1249f5: f3 0f 6f 4e c5 movdqu -0x3b(%rsi),%xmm1 0.00 : 1249fa: 4c 8b 46 d5 mov -0x2b(%rsi),%r8 0.00 : 1249fe: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124a02: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124a06: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124a0a: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124a0e: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124a11: f3 0f 7f 47 b5 movdqu %xmm0,-0x4b(%rdi) 0.00 : 124a16: f3 0f 7f 4f c5 movdqu %xmm1,-0x3b(%rdi) 0.00 : 124a1b: 4c 89 47 d5 mov %r8,-0x2b(%rdi) 0.00 : 124a1f: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124a23: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124a27: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124a2b: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124a2f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124a32: c3 retq 0.00 : 124a33: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124a3a: 84 00 00 00 00 00 0.00 : 124a40: f3 0f 6f 46 bd movdqu -0x43(%rsi),%xmm0 0.00 : 124a45: f3 0f 6f 4e c5 movdqu -0x3b(%rsi),%xmm1 0.00 : 124a4a: 4c 8b 46 d5 mov -0x2b(%rsi),%r8 0.00 : 124a4e: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124a52: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124a56: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124a5a: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124a5e: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124a61: f3 0f 7f 47 bd movdqu %xmm0,-0x43(%rdi) 0.00 : 124a66: f3 0f 7f 4f c5 movdqu %xmm1,-0x3b(%rdi) 0.00 : 124a6b: 4c 89 47 d5 mov %r8,-0x2b(%rdi) 0.00 : 124a6f: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124a73: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124a77: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124a7b: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124a7f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124a82: c3 retq 0.00 : 124a83: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124a8a: 84 00 00 00 00 00 0.00 : 124a90: f3 0f 6f 46 c5 movdqu -0x3b(%rsi),%xmm0 0.00 : 124a95: 4c 8b 46 d5 mov -0x2b(%rsi),%r8 0.00 : 124a99: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124a9d: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124aa1: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124aa5: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124aa9: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124aac: f3 0f 7f 47 c5 movdqu %xmm0,-0x3b(%rdi) 0.00 : 124ab1: 4c 89 47 d5 mov %r8,-0x2b(%rdi) 0.00 : 124ab5: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124ab9: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124abd: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124ac1: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124ac5: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124ac8: c3 retq 0.00 : 124ac9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124ad0: f3 0f 6f 46 cd movdqu -0x33(%rsi),%xmm0 0.00 : 124ad5: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124ad9: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124add: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124ae1: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124ae5: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124ae8: f3 0f 7f 47 cd movdqu %xmm0,-0x33(%rdi) 0.00 : 124aed: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124af1: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124af5: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124af9: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124afd: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124b00: c3 retq 0.00 : 124b01: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124b08: 0f 1f 84 00 00 00 00 0.00 : 124b0f: 00 0.00 : 124b10: 4c 8b 46 d5 mov -0x2b(%rsi),%r8 0.00 : 124b14: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124b18: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124b1c: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124b20: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124b24: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124b27: 4c 89 47 d5 mov %r8,-0x2b(%rdi) 0.00 : 124b2b: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124b2f: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124b33: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124b37: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124b3b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124b3e: c3 retq 0.00 : 124b3f: 90 nop 0.00 : 124b40: 4c 8b 4e dd mov -0x23(%rsi),%r9 0.00 : 124b44: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124b48: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124b4c: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124b50: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124b53: 4c 89 4f dd mov %r9,-0x23(%rdi) 0.00 : 124b57: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124b5b: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124b5f: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124b63: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124b66: c3 retq 0.00 : 124b67: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124b6e: 00 00 0.00 : 124b70: 4c 8b 56 e5 mov -0x1b(%rsi),%r10 0.00 : 124b74: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124b78: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124b7c: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124b7f: 4c 89 57 e5 mov %r10,-0x1b(%rdi) 0.00 : 124b83: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124b87: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124b8b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124b8e: c3 retq 0.00 : 124b8f: 90 nop 0.00 : 124b90: 4c 8b 5e ed mov -0x13(%rsi),%r11 0.00 : 124b94: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124b98: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124b9b: 4c 89 5f ed mov %r11,-0x13(%rdi) 0.00 : 124b9f: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124ba3: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124ba6: c3 retq 0.00 : 124ba7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124bae: 00 00 0.00 : 124bb0: 48 8b 4e f5 mov -0xb(%rsi),%rcx 0.00 : 124bb4: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124bb7: 48 89 4f f5 mov %rcx,-0xb(%rdi) 0.00 : 124bbb: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124bbe: c3 retq 0.00 : 124bbf: 90 nop 0.00 : 124bc0: 66 8b 56 fd mov -0x3(%rsi),%dx 0.00 : 124bc4: 66 8b 4e fe mov -0x2(%rsi),%cx 0.00 : 124bc8: 66 89 57 fd mov %dx,-0x3(%rdi) 0.00 : 124bcc: 66 89 4f fe mov %cx,-0x2(%rdi) 0.00 : 124bd0: c3 retq 0.00 : 124bd1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124bd8: 0f 1f 84 00 00 00 00 0.00 : 124bdf: 00 0.00 : 124be0: f3 0f 6f 46 b4 movdqu -0x4c(%rsi),%xmm0 0.00 : 124be5: f3 0f 6f 4e c4 movdqu -0x3c(%rsi),%xmm1 0.00 : 124bea: 4c 8b 46 d4 mov -0x2c(%rsi),%r8 0.00 : 124bee: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124bf2: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124bf6: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124bfa: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124bfe: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124c01: f3 0f 7f 47 b4 movdqu %xmm0,-0x4c(%rdi) 0.00 : 124c06: f3 0f 7f 4f c4 movdqu %xmm1,-0x3c(%rdi) 0.00 : 124c0b: 4c 89 47 d4 mov %r8,-0x2c(%rdi) 0.00 : 124c0f: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124c13: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124c17: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124c1b: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124c1f: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124c22: c3 retq 0.00 : 124c23: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124c2a: 84 00 00 00 00 00 0.00 : 124c30: f3 0f 6f 46 bc movdqu -0x44(%rsi),%xmm0 0.00 : 124c35: f3 0f 6f 4e cc movdqu -0x34(%rsi),%xmm1 0.00 : 124c3a: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124c3e: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124c42: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124c46: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124c4a: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124c4d: f3 0f 7f 47 bc movdqu %xmm0,-0x44(%rdi) 0.00 : 124c52: f3 0f 7f 4f cc movdqu %xmm1,-0x34(%rdi) 0.00 : 124c57: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124c5b: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124c5f: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124c63: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124c67: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124c6a: c3 retq 0.00 : 124c6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 124c70: f3 0f 6f 46 c4 movdqu -0x3c(%rsi),%xmm0 0.00 : 124c75: 4c 8b 46 d4 mov -0x2c(%rsi),%r8 0.00 : 124c79: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124c7d: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124c81: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124c85: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124c89: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124c8c: f3 0f 7f 47 c4 movdqu %xmm0,-0x3c(%rdi) 0.00 : 124c91: 4c 89 47 d4 mov %r8,-0x2c(%rdi) 0.00 : 124c95: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124c99: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124c9d: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124ca1: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124ca5: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124ca8: c3 retq 0.00 : 124ca9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124cb0: f3 0f 6f 46 cc movdqu -0x34(%rsi),%xmm0 0.00 : 124cb5: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124cb9: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124cbd: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124cc1: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124cc5: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124cc8: f3 0f 7f 47 cc movdqu %xmm0,-0x34(%rdi) 0.00 : 124ccd: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124cd1: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124cd5: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124cd9: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124cdd: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124ce0: c3 retq 0.00 : 124ce1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124ce8: 0f 1f 84 00 00 00 00 0.00 : 124cef: 00 0.00 : 124cf0: 4c 8b 46 d4 mov -0x2c(%rsi),%r8 0.00 : 124cf4: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124cf8: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124cfc: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124d00: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124d04: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124d07: 4c 89 47 d4 mov %r8,-0x2c(%rdi) 0.00 : 124d0b: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124d0f: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124d13: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124d17: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124d1b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124d1e: c3 retq 0.00 : 124d1f: 90 nop 0.00 : 124d20: 4c 8b 4e dc mov -0x24(%rsi),%r9 0.00 : 124d24: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124d28: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124d2c: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124d30: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124d33: 4c 89 4f dc mov %r9,-0x24(%rdi) 0.00 : 124d37: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124d3b: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124d3f: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124d43: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124d46: c3 retq 0.00 : 124d47: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124d4e: 00 00 0.00 : 124d50: 4c 8b 56 e4 mov -0x1c(%rsi),%r10 0.00 : 124d54: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124d58: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124d5c: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124d5f: 4c 89 57 e4 mov %r10,-0x1c(%rdi) 0.00 : 124d63: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124d67: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124d6b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124d6e: c3 retq 0.00 : 124d6f: 90 nop 0.00 : 124d70: 4c 8b 5e ec mov -0x14(%rsi),%r11 0.00 : 124d74: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124d78: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124d7b: 4c 89 5f ec mov %r11,-0x14(%rdi) 0.00 : 124d7f: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124d83: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124d86: c3 retq 0.00 : 124d87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124d8e: 00 00 0.00 : 124d90: 48 8b 4e f4 mov -0xc(%rsi),%rcx 0.00 : 124d94: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124d97: 48 89 4f f4 mov %rcx,-0xc(%rdi) 0.00 : 124d9b: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124d9e: c3 retq 0.00 : 124d9f: 90 nop 0.00 : 124da0: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 124da3: 89 57 fc mov %edx,-0x4(%rdi) 0.00 : 124da6: c3 retq 0.00 : 124da7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124dae: 00 00 0.00 : 124db0: f3 0f 6f 46 b3 movdqu -0x4d(%rsi),%xmm0 0.00 : 124db5: f3 0f 6f 4e c3 movdqu -0x3d(%rsi),%xmm1 0.00 : 124dba: 4c 8b 46 d3 mov -0x2d(%rsi),%r8 0.00 : 124dbe: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124dc2: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124dc6: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124dca: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124dce: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124dd2: f3 0f 7f 47 b3 movdqu %xmm0,-0x4d(%rdi) 0.00 : 124dd7: f3 0f 7f 4f c3 movdqu %xmm1,-0x3d(%rdi) 0.00 : 124ddc: 4c 89 47 d3 mov %r8,-0x2d(%rdi) 0.00 : 124de0: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124de4: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124de8: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124dec: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124df0: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124df4: c3 retq 0.00 : 124df5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124dfc: 00 00 00 00 0.00 : 124e00: f3 0f 6f 46 bb movdqu -0x45(%rsi),%xmm0 0.00 : 124e05: f3 0f 6f 4e cb movdqu -0x35(%rsi),%xmm1 0.00 : 124e0a: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124e0e: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124e12: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124e16: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124e1a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124e1e: f3 0f 7f 47 bb movdqu %xmm0,-0x45(%rdi) 0.00 : 124e23: f3 0f 7f 4f cb movdqu %xmm1,-0x35(%rdi) 0.00 : 124e28: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124e2c: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124e30: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124e34: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124e38: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124e3c: c3 retq 0.00 : 124e3d: 0f 1f 00 nopl (%rax) 0.00 : 124e40: f3 0f 6f 46 c3 movdqu -0x3d(%rsi),%xmm0 0.00 : 124e45: 4c 8b 46 d3 mov -0x2d(%rsi),%r8 0.00 : 124e49: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124e4d: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124e51: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124e55: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124e59: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124e5d: f3 0f 7f 47 c3 movdqu %xmm0,-0x3d(%rdi) 0.00 : 124e62: 4c 89 47 d3 mov %r8,-0x2d(%rdi) 0.00 : 124e66: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124e6a: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124e6e: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124e72: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124e76: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124e7a: c3 retq 0.00 : 124e7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 124e80: f3 0f 6f 46 cb movdqu -0x35(%rsi),%xmm0 0.00 : 124e85: 4c 8b 46 d3 mov -0x2d(%rsi),%r8 0.00 : 124e89: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124e8d: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124e91: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124e95: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124e99: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124e9d: f3 0f 7f 47 cb movdqu %xmm0,-0x35(%rdi) 0.00 : 124ea2: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124ea6: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124eaa: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124eae: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124eb2: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124eb6: c3 retq 0.00 : 124eb7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 124ebe: 00 00 0.00 : 124ec0: 4c 8b 46 d3 mov -0x2d(%rsi),%r8 0.00 : 124ec4: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124ec8: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124ecc: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124ed0: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124ed4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124ed8: 4c 89 47 d3 mov %r8,-0x2d(%rdi) 0.00 : 124edc: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124ee0: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124ee4: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124ee8: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124eec: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124ef0: c3 retq 0.00 : 124ef1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124ef8: 0f 1f 84 00 00 00 00 0.00 : 124eff: 00 0.00 : 124f00: 4c 8b 4e db mov -0x25(%rsi),%r9 0.00 : 124f04: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124f08: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124f0c: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124f10: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124f14: 4c 89 4f db mov %r9,-0x25(%rdi) 0.00 : 124f18: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124f1c: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124f20: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124f24: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124f28: c3 retq 0.00 : 124f29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124f30: 4c 8b 56 e3 mov -0x1d(%rsi),%r10 0.00 : 124f34: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124f38: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124f3c: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124f40: 4c 89 57 e3 mov %r10,-0x1d(%rdi) 0.00 : 124f44: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124f48: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124f4c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124f50: c3 retq 0.00 : 124f51: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124f58: 0f 1f 84 00 00 00 00 0.00 : 124f5f: 00 0.00 : 124f60: 4c 8b 5e eb mov -0x15(%rsi),%r11 0.00 : 124f64: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124f68: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124f6c: 4c 89 5f eb mov %r11,-0x15(%rdi) 0.00 : 124f70: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124f74: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124f78: c3 retq 0.00 : 124f79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 124f80: 48 8b 4e f3 mov -0xd(%rsi),%rcx 0.00 : 124f84: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124f88: 48 89 4f f3 mov %rcx,-0xd(%rdi) 0.00 : 124f8c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124f90: c3 retq 0.00 : 124f91: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124f98: 0f 1f 84 00 00 00 00 0.00 : 124f9f: 00 0.00 : 124fa0: 8b 56 fb mov -0x5(%rsi),%edx 0.00 : 124fa3: 8b 4e fc mov -0x4(%rsi),%ecx 0.00 : 124fa6: 89 57 fb mov %edx,-0x5(%rdi) 0.00 : 124fa9: 89 4f fc mov %ecx,-0x4(%rdi) 0.00 : 124fac: c3 retq 0.00 : 124fad: 0f 1f 00 nopl (%rax) 0.00 : 124fb0: f3 0f 6f 46 b2 movdqu -0x4e(%rsi),%xmm0 0.00 : 124fb5: f3 0f 6f 4e c2 movdqu -0x3e(%rsi),%xmm1 0.00 : 124fba: 4c 8b 46 d2 mov -0x2e(%rsi),%r8 0.00 : 124fbe: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 124fc2: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 124fc6: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 124fca: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 124fce: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 124fd2: f3 0f 7f 47 b2 movdqu %xmm0,-0x4e(%rdi) 0.00 : 124fd7: f3 0f 7f 4f c2 movdqu %xmm1,-0x3e(%rdi) 0.00 : 124fdc: 4c 89 47 d2 mov %r8,-0x2e(%rdi) 0.00 : 124fe0: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 124fe4: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 124fe8: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 124fec: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 124ff0: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 124ff4: c3 retq 0.00 : 124ff5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 124ffc: 00 00 00 00 0.00 : 125000: f3 0f 6f 46 ba movdqu -0x46(%rsi),%xmm0 0.00 : 125005: f3 0f 6f 4e ca movdqu -0x36(%rsi),%xmm1 0.00 : 12500a: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 12500e: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 125012: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 125016: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 12501a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12501e: f3 0f 7f 47 ba movdqu %xmm0,-0x46(%rdi) 0.00 : 125023: f3 0f 7f 4f ca movdqu %xmm1,-0x36(%rdi) 0.00 : 125028: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 12502c: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 125030: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 125034: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 125038: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 12503c: c3 retq 0.00 : 12503d: 0f 1f 00 nopl (%rax) 0.00 : 125040: f3 0f 6f 46 c2 movdqu -0x3e(%rsi),%xmm0 0.00 : 125045: 4c 8b 46 d2 mov -0x2e(%rsi),%r8 0.00 : 125049: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 12504d: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 125051: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 125055: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 125059: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12505d: f3 0f 7f 47 c2 movdqu %xmm0,-0x3e(%rdi) 0.00 : 125062: 4c 89 47 d2 mov %r8,-0x2e(%rdi) 0.00 : 125066: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 12506a: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 12506e: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 125072: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 125076: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 12507a: c3 retq 0.00 : 12507b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 125080: f3 0f 6f 46 ca movdqu -0x36(%rsi),%xmm0 0.00 : 125085: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 125089: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 12508d: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 125091: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 125095: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125099: f3 0f 7f 47 ca movdqu %xmm0,-0x36(%rdi) 0.00 : 12509e: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 1250a2: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 1250a6: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 1250aa: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 1250ae: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1250b2: c3 retq 0.00 : 1250b3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1250ba: 84 00 00 00 00 00 0.00 : 1250c0: 4c 8b 46 d2 mov -0x2e(%rsi),%r8 0.00 : 1250c4: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 1250c8: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 1250cc: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 1250d0: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 1250d4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1250d8: 4c 89 47 d2 mov %r8,-0x2e(%rdi) 0.00 : 1250dc: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 1250e0: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 1250e4: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 1250e8: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 1250ec: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1250f0: c3 retq 0.00 : 1250f1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1250f8: 0f 1f 84 00 00 00 00 0.00 : 1250ff: 00 0.00 : 125100: 4c 8b 4e da mov -0x26(%rsi),%r9 0.00 : 125104: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 125108: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 12510c: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 125110: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125114: 4c 89 4f da mov %r9,-0x26(%rdi) 0.00 : 125118: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 12511c: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 125120: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 125124: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125128: c3 retq 0.00 : 125129: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 125130: 4c 8b 56 e2 mov -0x1e(%rsi),%r10 0.00 : 125134: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 125138: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 12513c: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125140: 4c 89 57 e2 mov %r10,-0x1e(%rdi) 0.00 : 125144: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 125148: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 12514c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125150: c3 retq 0.00 : 125151: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 125158: 0f 1f 84 00 00 00 00 0.00 : 12515f: 00 0.00 : 125160: 4c 8b 5e ea mov -0x16(%rsi),%r11 0.00 : 125164: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 125168: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12516c: 4c 89 5f ea mov %r11,-0x16(%rdi) 0.00 : 125170: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 125174: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125178: c3 retq 0.00 : 125179: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 125180: 48 8b 4e f2 mov -0xe(%rsi),%rcx 0.00 : 125184: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125188: 48 89 4f f2 mov %rcx,-0xe(%rdi) 0.00 : 12518c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125190: c3 retq 0.00 : 125191: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 125198: 0f 1f 84 00 00 00 00 0.00 : 12519f: 00 0.00 : 1251a0: 8b 56 fa mov -0x6(%rsi),%edx 0.00 : 1251a3: 8b 4e fc mov -0x4(%rsi),%ecx 0.00 : 1251a6: 89 57 fa mov %edx,-0x6(%rdi) 0.00 : 1251a9: 89 4f fc mov %ecx,-0x4(%rdi) 0.00 : 1251ac: c3 retq 0.00 : 1251ad: 0f 1f 00 nopl (%rax) 0.00 : 1251b0: f3 0f 6f 46 b1 movdqu -0x4f(%rsi),%xmm0 0.00 : 1251b5: f3 0f 6f 4e c1 movdqu -0x3f(%rsi),%xmm1 0.00 : 1251ba: 4c 8b 46 d1 mov -0x2f(%rsi),%r8 0.00 : 1251be: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 1251c2: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 1251c6: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 1251ca: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 1251ce: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1251d2: f3 0f 7f 47 b1 movdqu %xmm0,-0x4f(%rdi) 0.00 : 1251d7: f3 0f 7f 4f c1 movdqu %xmm1,-0x3f(%rdi) 0.00 : 1251dc: 4c 89 47 d1 mov %r8,-0x2f(%rdi) 0.00 : 1251e0: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 1251e4: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 1251e8: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 1251ec: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 1251f0: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1251f4: c3 retq 0.00 : 1251f5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1251fc: 00 00 00 00 0.00 : 125200: f3 0f 6f 46 b9 movdqu -0x47(%rsi),%xmm0 0.00 : 125205: f3 0f 6f 4e c9 movdqu -0x37(%rsi),%xmm1 0.00 : 12520a: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 12520e: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 125212: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 125216: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 12521a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12521e: f3 0f 7f 47 b9 movdqu %xmm0,-0x47(%rdi) 0.00 : 125223: f3 0f 7f 4f c9 movdqu %xmm1,-0x37(%rdi) 0.00 : 125228: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 12522c: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 125230: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 125234: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 125238: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 12523c: c3 retq 0.00 : 12523d: 0f 1f 00 nopl (%rax) 0.00 : 125240: f3 0f 6f 46 c1 movdqu -0x3f(%rsi),%xmm0 0.00 : 125245: 4c 8b 46 d1 mov -0x2f(%rsi),%r8 0.00 : 125249: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 12524d: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 125251: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 125255: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 125259: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12525d: f3 0f 7f 47 c1 movdqu %xmm0,-0x3f(%rdi) 0.00 : 125262: 4c 89 47 d1 mov %r8,-0x2f(%rdi) 0.00 : 125266: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 12526a: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 12526e: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 125272: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 125276: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 12527a: c3 retq 0.00 : 12527b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 125280: f3 0f 6f 46 c9 movdqu -0x37(%rsi),%xmm0 0.00 : 125285: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 125289: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 12528d: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 125291: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 125295: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125299: f3 0f 7f 47 c9 movdqu %xmm0,-0x37(%rdi) 0.00 : 12529e: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 1252a2: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 1252a6: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 1252aa: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 1252ae: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1252b2: c3 retq 0.00 : 1252b3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1252ba: 84 00 00 00 00 00 0.00 : 1252c0: 4c 8b 46 d1 mov -0x2f(%rsi),%r8 0.00 : 1252c4: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 1252c8: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 1252cc: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 1252d0: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 1252d4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 1252d8: 4c 89 47 d1 mov %r8,-0x2f(%rdi) 0.00 : 1252dc: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 1252e0: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 1252e4: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 1252e8: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 1252ec: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 1252f0: c3 retq 0.00 : 1252f1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1252f8: 0f 1f 84 00 00 00 00 0.00 : 1252ff: 00 0.00 : 125300: 4c 8b 4e d9 mov -0x27(%rsi),%r9 0.00 : 125304: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 125308: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 12530c: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 125310: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125314: 4c 89 4f d9 mov %r9,-0x27(%rdi) 0.00 : 125318: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 12531c: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 125320: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 125324: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125328: c3 retq 0.00 : 125329: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 125330: 4c 8b 56 e1 mov -0x1f(%rsi),%r10 0.00 : 125334: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 125338: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 12533c: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125340: 4c 89 57 e1 mov %r10,-0x1f(%rdi) 0.00 : 125344: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 125348: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 12534c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125350: c3 retq 0.00 : 125351: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 125358: 0f 1f 84 00 00 00 00 0.00 : 12535f: 00 0.00 : 125360: 4c 8b 5e e9 mov -0x17(%rsi),%r11 0.00 : 125364: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 125368: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 12536c: 4c 89 5f e9 mov %r11,-0x17(%rdi) 0.00 : 125370: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 125374: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125378: c3 retq 0.00 : 125379: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 125380: 48 8b 4e f1 mov -0xf(%rsi),%rcx 0.00 : 125384: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 125388: 48 89 4f f1 mov %rcx,-0xf(%rdi) 0.00 : 12538c: 48 89 57 f8 mov %rdx,-0x8(%rdi) 0.00 : 125390: c3 retq 0.00 : 125391: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 125398: 0f 1f 84 00 00 00 00 0.00 : 12539f: 00 0.00 : 1253a0: 8b 56 f9 mov -0x7(%rsi),%edx 0.00 : 1253a3: 8b 4e fc mov -0x4(%rsi),%ecx 0.00 : 1253a6: 89 57 f9 mov %edx,-0x7(%rdi) 0.00 : 1253a9: 89 4f fc mov %ecx,-0x4(%rdi) 0.00 : 1253ac: c3 retq 0.00 : 1253ad: 0f 1f 00 nopl (%rax) 0.00 : 1253b0: f3 0f 6f 0e movdqu (%rsi),%xmm1 0.00 : 1253b4: 48 8d 76 10 lea 0x10(%rsi),%rsi 0.00 : 1253b8: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 1253bd: 66 0f e7 0f movntdq %xmm1,(%rdi) 0.00 : 1253c1: 48 8d 7f 10 lea 0x10(%rdi),%rdi 0.00 : 1253c5: 48 8d 92 70 ff ff ff lea -0x90(%rdx),%rdx 0.00 : 1253cc: 49 89 f1 mov %rsi,%r9 0.00 : 1253cf: 49 29 f9 sub %rdi,%r9 0.00 : 1253d2: 49 39 d1 cmp %rdx,%r9 0.00 : 1253d5: 73 0d jae 1253e4 <__memmove_ssse3+0x2834> 0.00 : 1253d7: 48 c1 e1 02 shl $0x2,%rcx 0.00 : 1253db: 48 39 ca cmp %rcx,%rdx 0.00 : 1253de: 0f 82 cc 00 00 00 jb 1254b0 <__memmove_ssse3+0x2900> 0.00 : 1253e4: f3 0f 6f 06 movdqu (%rsi),%xmm0 0.00 : 1253e8: f3 0f 6f 4e 10 movdqu 0x10(%rsi),%xmm1 0.00 : 1253ed: f3 0f 6f 56 20 movdqu 0x20(%rsi),%xmm2 0.00 : 1253f2: f3 0f 6f 5e 30 movdqu 0x30(%rsi),%xmm3 0.00 : 1253f7: f3 0f 6f 66 40 movdqu 0x40(%rsi),%xmm4 0.00 : 1253fc: f3 0f 6f 6e 50 movdqu 0x50(%rsi),%xmm5 0.00 : 125401: f3 0f 6f 76 60 movdqu 0x60(%rsi),%xmm6 0.00 : 125406: f3 0f 6f 7e 70 movdqu 0x70(%rsi),%xmm7 0.00 : 12540b: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 125412: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 125419: 66 0f e7 07 movntdq %xmm0,(%rdi) 0.00 : 12541d: 66 0f e7 4f 10 movntdq %xmm1,0x10(%rdi) 0.00 : 125422: 66 0f e7 57 20 movntdq %xmm2,0x20(%rdi) 0.00 : 125427: 66 0f e7 5f 30 movntdq %xmm3,0x30(%rdi) 0.00 : 12542c: 66 0f e7 67 40 movntdq %xmm4,0x40(%rdi) 0.00 : 125431: 66 0f e7 6f 50 movntdq %xmm5,0x50(%rdi) 0.00 : 125436: 66 0f e7 77 60 movntdq %xmm6,0x60(%rdi) 0.00 : 12543b: 66 0f e7 7f 70 movntdq %xmm7,0x70(%rdi) 0.00 : 125440: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 125447: 73 9b jae 1253e4 <__memmove_ssse3+0x2834> 0.00 : 125449: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 12544d: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 125454: 7c 32 jl 125488 <__memmove_ssse3+0x28d8> 0.00 : 125456: f3 0f 6f 06 movdqu (%rsi),%xmm0 0.00 : 12545a: f3 0f 6f 4e 10 movdqu 0x10(%rsi),%xmm1 0.00 : 12545f: f3 0f 6f 56 20 movdqu 0x20(%rsi),%xmm2 0.00 : 125464: f3 0f 6f 5e 30 movdqu 0x30(%rsi),%xmm3 0.00 : 125469: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 12546d: 66 0f e7 07 movntdq %xmm0,(%rdi) 0.00 : 125471: 66 0f e7 4f 10 movntdq %xmm1,0x10(%rdi) 0.00 : 125476: 66 0f e7 57 20 movntdq %xmm2,0x20(%rdi) 0.00 : 12547b: 66 0f e7 5f 30 movntdq %xmm3,0x30(%rdi) 0.00 : 125480: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 125484: 48 83 ea 40 sub $0x40,%rdx 0.00 : 125488: 48 01 d6 add %rdx,%rsi 0.00 : 12548b: 48 01 d7 add %rdx,%rdi 0.00 : 12548e: 0f ae f8 sfence 0.00 : 125491: 4c 8d 1d 08 ee 01 00 lea 0x1ee08(%rip),%r11 # 1442a0 0.00 : 125498: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12549c: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 1254a0: ff e2 jmpq *%rdx 0.00 : 1254a2: 0f 0b ud2 0.00 : 1254a4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1254ab: 00 00 00 00 00 0.00 : 1254b0: 0f 18 8e c0 01 00 00 prefetcht0 0x1c0(%rsi) 0.00 : 1254b7: 0f 18 8e 00 02 00 00 prefetcht0 0x200(%rsi) 0.00 : 1254be: f3 0f 6f 06 movdqu (%rsi),%xmm0 0.00 : 1254c2: f3 0f 6f 4e 10 movdqu 0x10(%rsi),%xmm1 0.00 : 1254c7: f3 0f 6f 56 20 movdqu 0x20(%rsi),%xmm2 0.00 : 1254cc: f3 0f 6f 5e 30 movdqu 0x30(%rsi),%xmm3 0.00 : 1254d1: f3 0f 6f 66 40 movdqu 0x40(%rsi),%xmm4 0.00 : 1254d6: f3 0f 6f 6e 50 movdqu 0x50(%rsi),%xmm5 0.00 : 1254db: f3 0f 6f 76 60 movdqu 0x60(%rsi),%xmm6 0.00 : 1254e0: f3 0f 6f 7e 70 movdqu 0x70(%rsi),%xmm7 0.00 : 1254e5: 48 8d b6 80 00 00 00 lea 0x80(%rsi),%rsi 0.00 : 1254ec: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 1254f3: 0f 29 07 movaps %xmm0,(%rdi) 0.00 : 1254f6: 0f 29 4f 10 movaps %xmm1,0x10(%rdi) 0.00 : 1254fa: 0f 29 57 20 movaps %xmm2,0x20(%rdi) 0.00 : 1254fe: 0f 29 5f 30 movaps %xmm3,0x30(%rdi) 0.00 : 125502: 0f 29 67 40 movaps %xmm4,0x40(%rdi) 0.00 : 125506: 0f 29 6f 50 movaps %xmm5,0x50(%rdi) 0.00 : 12550a: 0f 29 77 60 movaps %xmm6,0x60(%rdi) 0.00 : 12550e: 0f 29 7f 70 movaps %xmm7,0x70(%rdi) 0.00 : 125512: 48 8d bf 80 00 00 00 lea 0x80(%rdi),%rdi 0.00 : 125519: 73 95 jae 1254b0 <__memmove_ssse3+0x2900> 0.00 : 12551b: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 12551f: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 125526: 7c 2e jl 125556 <__memmove_ssse3+0x29a6> 0.00 : 125528: f3 0f 6f 06 movdqu (%rsi),%xmm0 0.00 : 12552c: f3 0f 6f 4e 10 movdqu 0x10(%rsi),%xmm1 0.00 : 125531: f3 0f 6f 56 20 movdqu 0x20(%rsi),%xmm2 0.00 : 125536: f3 0f 6f 5e 30 movdqu 0x30(%rsi),%xmm3 0.00 : 12553b: 48 8d 76 40 lea 0x40(%rsi),%rsi 0.00 : 12553f: 0f 29 07 movaps %xmm0,(%rdi) 0.00 : 125542: 0f 29 4f 10 movaps %xmm1,0x10(%rdi) 0.00 : 125546: 0f 29 57 20 movaps %xmm2,0x20(%rdi) 0.00 : 12554a: 0f 29 5f 30 movaps %xmm3,0x30(%rdi) 0.00 : 12554e: 48 8d 7f 40 lea 0x40(%rdi),%rdi 0.00 : 125552: 48 83 ea 40 sub $0x40,%rdx 0.00 : 125556: 48 01 d6 add %rdx,%rsi 0.00 : 125559: 48 01 d7 add %rdx,%rdi 0.00 : 12555c: 4c 8d 1d 3d ed 01 00 lea 0x1ed3d(%rip),%r11 # 1442a0 0.00 : 125563: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 125567: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 12556b: ff e2 jmpq *%rdx 0.00 : 12556d: 0f 0b ud2 0.00 : 12556f: 90 nop 0.00 : 125570: f3 0f 6f 4e f0 movdqu -0x10(%rsi),%xmm1 0.00 : 125575: 48 8d 76 f0 lea -0x10(%rsi),%rsi 0.00 : 125579: f3 41 0f 7f 00 movdqu %xmm0,(%r8) 0.00 : 12557e: 66 0f 7f 4f f0 movdqa %xmm1,-0x10(%rdi) 0.00 : 125583: 48 8d 7f f0 lea -0x10(%rdi),%rdi 0.00 : 125587: 48 8d 92 70 ff ff ff lea -0x90(%rdx),%rdx 0.00 : 12558e: 49 89 f9 mov %rdi,%r9 0.00 : 125591: 49 29 f1 sub %rsi,%r9 0.00 : 125594: 49 39 d1 cmp %rdx,%r9 0.00 : 125597: 73 09 jae 1255a2 <__memmove_ssse3+0x29f2> 0.00 : 125599: 49 39 c9 cmp %rcx,%r9 0.00 : 12559c: 0f 82 be 00 00 00 jb 125660 <__memmove_ssse3+0x2ab0> 0.00 : 1255a2: f3 0f 6f 46 f0 movdqu -0x10(%rsi),%xmm0 0.00 : 1255a7: f3 0f 6f 4e e0 movdqu -0x20(%rsi),%xmm1 0.00 : 1255ac: f3 0f 6f 56 d0 movdqu -0x30(%rsi),%xmm2 0.00 : 1255b1: f3 0f 6f 5e c0 movdqu -0x40(%rsi),%xmm3 0.00 : 1255b6: f3 0f 6f 66 b0 movdqu -0x50(%rsi),%xmm4 0.00 : 1255bb: f3 0f 6f 6e a0 movdqu -0x60(%rsi),%xmm5 0.00 : 1255c0: f3 0f 6f 76 90 movdqu -0x70(%rsi),%xmm6 0.00 : 1255c5: f3 0f 6f 7e 80 movdqu -0x80(%rsi),%xmm7 0.00 : 1255ca: 48 8d 76 80 lea -0x80(%rsi),%rsi 0.00 : 1255ce: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 1255d5: 66 0f e7 47 f0 movntdq %xmm0,-0x10(%rdi) 0.00 : 1255da: 66 0f e7 4f e0 movntdq %xmm1,-0x20(%rdi) 0.00 : 1255df: 66 0f e7 57 d0 movntdq %xmm2,-0x30(%rdi) 0.00 : 1255e4: 66 0f e7 5f c0 movntdq %xmm3,-0x40(%rdi) 0.00 : 1255e9: 66 0f e7 67 b0 movntdq %xmm4,-0x50(%rdi) 0.00 : 1255ee: 66 0f e7 6f a0 movntdq %xmm5,-0x60(%rdi) 0.00 : 1255f3: 66 0f e7 77 90 movntdq %xmm6,-0x70(%rdi) 0.00 : 1255f8: 66 0f e7 7f 80 movntdq %xmm7,-0x80(%rdi) 0.00 : 1255fd: 48 8d 7f 80 lea -0x80(%rdi),%rdi 0.00 : 125601: 73 9f jae 1255a2 <__memmove_ssse3+0x29f2> 0.00 : 125603: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 125607: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 12560e: 7c 34 jl 125644 <__memmove_ssse3+0x2a94> 0.00 : 125610: f3 0f 6f 46 f0 movdqu -0x10(%rsi),%xmm0 0.00 : 125615: f3 0f 6f 4e e0 movdqu -0x20(%rsi),%xmm1 0.00 : 12561a: f3 0f 6f 56 d0 movdqu -0x30(%rsi),%xmm2 0.00 : 12561f: f3 0f 6f 5e c0 movdqu -0x40(%rsi),%xmm3 0.00 : 125624: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 125628: 66 0f e7 47 f0 movntdq %xmm0,-0x10(%rdi) 0.00 : 12562d: 66 0f e7 4f e0 movntdq %xmm1,-0x20(%rdi) 0.00 : 125632: 66 0f e7 57 d0 movntdq %xmm2,-0x30(%rdi) 0.00 : 125637: 66 0f e7 5f c0 movntdq %xmm3,-0x40(%rdi) 0.00 : 12563c: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 125640: 48 83 ea 40 sub $0x40,%rdx 0.00 : 125644: 0f ae f8 sfence 0.00 : 125647: 4c 8d 1d 52 ec 01 00 lea 0x1ec52(%rip),%r11 # 1442a0 0.00 : 12564e: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 125652: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 125656: ff e2 jmpq *%rdx 0.00 : 125658: 0f 0b ud2 0.00 : 12565a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 125660: 0f 18 8e 40 fe ff ff prefetcht0 -0x1c0(%rsi) 0.00 : 125667: 0f 18 8e 00 fe ff ff prefetcht0 -0x200(%rsi) 0.00 : 12566e: f3 0f 6f 46 f0 movdqu -0x10(%rsi),%xmm0 0.00 : 125673: f3 0f 6f 4e e0 movdqu -0x20(%rsi),%xmm1 0.00 : 125678: f3 0f 6f 56 d0 movdqu -0x30(%rsi),%xmm2 0.00 : 12567d: f3 0f 6f 5e c0 movdqu -0x40(%rsi),%xmm3 0.00 : 125682: f3 0f 6f 66 b0 movdqu -0x50(%rsi),%xmm4 0.00 : 125687: f3 0f 6f 6e a0 movdqu -0x60(%rsi),%xmm5 0.00 : 12568c: f3 0f 6f 76 90 movdqu -0x70(%rsi),%xmm6 0.00 : 125691: f3 0f 6f 7e 80 movdqu -0x80(%rsi),%xmm7 0.00 : 125696: 48 8d 76 80 lea -0x80(%rsi),%rsi 0.00 : 12569a: 48 81 ea 80 00 00 00 sub $0x80,%rdx 0.00 : 1256a1: 0f 29 47 f0 movaps %xmm0,-0x10(%rdi) 0.00 : 1256a5: 0f 29 4f e0 movaps %xmm1,-0x20(%rdi) 0.00 : 1256a9: 0f 29 57 d0 movaps %xmm2,-0x30(%rdi) 0.00 : 1256ad: 0f 29 5f c0 movaps %xmm3,-0x40(%rdi) 0.00 : 1256b1: 0f 29 67 b0 movaps %xmm4,-0x50(%rdi) 0.00 : 1256b5: 0f 29 6f a0 movaps %xmm5,-0x60(%rdi) 0.00 : 1256b9: 0f 29 77 90 movaps %xmm6,-0x70(%rdi) 0.00 : 1256bd: 0f 29 7f 80 movaps %xmm7,-0x80(%rdi) 0.00 : 1256c1: 48 8d 7f 80 lea -0x80(%rdi),%rdi 0.00 : 1256c5: 73 99 jae 125660 <__memmove_ssse3+0x2ab0> 0.00 : 1256c7: 48 83 fa c0 cmp $0xffffffffffffffc0,%rdx 0.00 : 1256cb: 48 8d 92 80 00 00 00 lea 0x80(%rdx),%rdx 0.00 : 1256d2: 7c 30 jl 125704 <__memmove_ssse3+0x2b54> 0.00 : 1256d4: f3 0f 6f 46 f0 movdqu -0x10(%rsi),%xmm0 0.00 : 1256d9: f3 0f 6f 4e e0 movdqu -0x20(%rsi),%xmm1 0.00 : 1256de: f3 0f 6f 56 d0 movdqu -0x30(%rsi),%xmm2 0.00 : 1256e3: f3 0f 6f 5e c0 movdqu -0x40(%rsi),%xmm3 0.00 : 1256e8: 48 8d 76 c0 lea -0x40(%rsi),%rsi 0.00 : 1256ec: 0f 29 47 f0 movaps %xmm0,-0x10(%rdi) 0.00 : 1256f0: 0f 29 4f e0 movaps %xmm1,-0x20(%rdi) 0.00 : 1256f4: 0f 29 57 d0 movaps %xmm2,-0x30(%rdi) 0.00 : 1256f8: 0f 29 5f c0 movaps %xmm3,-0x40(%rdi) 0.00 : 1256fc: 48 8d 7f c0 lea -0x40(%rdi),%rdi 0.00 : 125700: 48 83 ea 40 sub $0x40,%rdx 0.00 : 125704: 4c 8d 1d 95 eb 01 00 lea 0x1eb95(%rip),%r11 # 1442a0 0.00 : 12570b: 49 63 14 93 movslq (%r11,%rdx,4),%rdx 0.00 : 12570f: 49 8d 14 13 lea (%r11,%rdx,1),%rdx 0.00 : 125713: ff e2 jmpq *%rdx 0.00 : 125715: 0f 0b ud2 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000680 : 100.00 : 680: 83 7e 68 13 cmpl $0x13,0x68(%rsi) 0.00 : 6b4: 41 89 add $0x0,%al 0.00 : 6b6: f8 76 1c 8b add %al,-0x3e(%rcx,%rcx,4) 0.00 : 6ba: 96 c4 00 mov %rsi,%rcx 0.00 : 6bd: 00 00 48 8b 86 mov $0x2,%esi 0.00 : 6c2: d8 00 00 00 0f jmpq 6c7 : 6c7: b6 04 10 83 e0 0f c1 nopw 0x0(%rax,%rax,1) : 6ce: e0 02 : 6d0: 83 f8 mov %edi,%eax : 6d2: 13 77 0b b8 01 00 00 mov 0x460(%rdx),%rdi : 6d9: 00 c3 0f mov %rsi,%rcx : 6dc: 1f 44 mov %eax,%edx : 6de: 00 00 48 8b b9 mov $0x2,%esi : 6e3: 60 04 00 00 44 jmpq 6e8 : 6e8: 89 c2 48 89 f1 be 02 nopl 0x0(%rax,%rax,1) : 6ef: 00 : 6f0: 00 00 e9 00 movzbl 0x24(%rsi),%eax : ... Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/nf_conntrack.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000069d0 : 66.67 : 69d0: 55 push %rbp 0.00 : 6a01: 53 48 89 mov %eax,0x24(%rbx) 0.00 : 6a04: d3 48 83 ec add $0x28,%rsp 0.00 : 6a08: 28 8b 47 68 2b mov $0x1,%eax 0.00 : 6a0d: 47 pop %rbx 0.00 : 6a0e: 6c pop %rbp 33.33 : 6a0f: 29 retq 0.00 : 6a10: f0 83 f8 07 7e mov $0x8,%ecx 0.00 : 6a15: 2a 48 63 mov %rsp,%rdx 0.00 : 6a18: d6 48 03 97 e0 callq 6a1d 0.00 : 6a1d: 00 00 test %eax,%eax 0.00 : 6a1f: 00 48 js 6a30 0.00 : 6a21: 85 d2 74 mov %rsp,%rdx 0.00 : 6a24: 3b 0f jmp 69f0 0.00 : 6a26: b7 02 66 89 43 10 0f nopw %cs:0x0(%rax,%rax,1) 0.00 : 6a2d: b7 42 02 0.00 : 6a30: 66 89 43 24 add $0x28,%rsp 0.00 : 6a34: 48 83 xor %eax,%eax 0.00 : 6a36: c4 pop %rbx 0.00 : 6a37: 28 pop %rbp 0.00 : 6a38: b8 retq : 6a39: 01 00 00 00 5b 5d c3 nopl 0x0(%rax) : 6a40: b9 08 push %r15 : 6a42: 00 00 00 mov %rdi,%r10 : 6a45: 48 89 push %r14 : 6a47: e2 e8 push %r13 : 6a49: 00 00 push %r12 : 6a4b: 00 push %rbp : 6a4c: 00 85 c0 mov %rsi,%rbp : 6a4f: 78 push %rbx : 6a50: 0f 48 89 e2 eb ca 66 sub $0xa8,%rsp : 6a57: 2e 0f 1f 84 mov %edx,0x40(%rsp) : 6a5b: 00 00 00 00 00 48 83 movzbl 0xe8(%rsp),%eax : 6a62: c4 : 6a63: 28 31 c0 5b 5d cmpl $0x1,0x40(%rsp) Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000005bb0 : : } : : #else : static bool ixgbe_alloc_mapped_page(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *bi) : { 50.00 : 5bb0: 48 83 ec 28 sub $0x28,%rsp : struct page *page = bi->page; : dma_addr_t dma = bi->dma; : : /* since we are recycling buffers we should seldom need to alloc */ : if (likely(dma)) 0.00 : 5bb4: b8 01 00 00 00 mov $0x1,%eax : } : : #else : static bool ixgbe_alloc_mapped_page(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *bi) : { 0.00 : 5bb9: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 5bbd: 48 89 6c 24 08 mov %rbp,0x8(%rsp) 0.00 : 5bc2: 48 89 f3 mov %rsi,%rbx 0.00 : 5bc5: 4c 89 64 24 10 mov %r12,0x10(%rsp) 0.00 : 5bca: 4c 89 6c 24 18 mov %r13,0x18(%rsp) 0.00 : 5bcf: 48 89 fd mov %rdi,%rbp 0.00 : 5bd2: 4c 89 74 24 20 mov %r14,0x20(%rsp) : struct page *page = bi->page; : dma_addr_t dma = bi->dma; : : /* since we are recycling buffers we should seldom need to alloc */ : if (likely(dma)) 0.00 : 5bd7: 48 83 7e 08 00 cmpq $0x0,0x8(%rsi) : : #else : static bool ixgbe_alloc_mapped_page(struct ixgbe_ring *rx_ring, : struct ixgbe_rx_buffer *bi) : { : struct page *page = bi->page; 0.00 : 5bdc: 4c 8b 66 10 mov 0x10(%rsi),%r12 : dma_addr_t dma = bi->dma; : : /* since we are recycling buffers we should seldom need to alloc */ : if (likely(dma)) 0.00 : 5be0: 74 1d je 5bff : : bi->dma = dma; : bi->page_offset = 0; : : return true; : } 0.00 : 5be2: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 5be6: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 5beb: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 50.00 : 5bf0: 4c 8b 6c 24 18 mov 0x18(%rsp),%r13 0.00 : 5bf5: 4c 8b 74 24 20 mov 0x20(%rsp),%r14 0.00 : 5bfa: 48 83 c4 28 add $0x28,%rsp 0.00 : 5bfe: c3 retq : /* since we are recycling buffers we should seldom need to alloc */ : if (likely(dma)) : return true; : : /* alloc new page for storage */ : if (likely(!page)) { 0.00 : 5bff: 4d 85 e4 test %r12,%r12 0.00 : 5c02: 4c 8d 77 30 lea 0x30(%rdi),%r14 0.00 : 5c06: 75 29 jne 5c31 : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 5c08: 48 8b 77 30 mov 0x30(%rdi),%rsi : } : : static inline unsigned int ixgbe_rx_pg_order(struct ixgbe_ring *ring) : { : #ifdef IXGBE_FCOE : if (test_bit(__IXGBE_RX_FCOE, &ring->state)) 0.00 : 5c0c: 4c 8d 77 30 lea 0x30(%rdi),%r14 : extern struct page *alloc_pages_current(gfp_t gfp_mask, unsigned order); : : static inline struct page * : alloc_pages(gfp_t gfp_mask, unsigned int order) : { : return alloc_pages_current(gfp_mask, order); 0.00 : 5c10: bf 20 41 00 00 mov $0x4120,%edi 0.00 : 5c15: 48 c1 ee 05 shr $0x5,%rsi 0.00 : 5c19: 83 e6 01 and $0x1,%esi 0.00 : 5c1c: e8 00 00 00 00 callq 5c21 : page = alloc_pages(GFP_ATOMIC | __GFP_COLD | __GFP_COMP, : ixgbe_rx_pg_order(rx_ring)); : if (unlikely(!page)) { 0.00 : 5c21: 48 85 c0 test %rax,%rax 0.00 : 5c24: 49 89 c4 mov %rax,%r12 0.00 : 5c27: 0f 84 8f 00 00 00 je 5cbc : rx_ring->rx_stats.alloc_rx_page_failed++; : return false; : } : bi->page = page; 0.00 : 5c2d: 48 89 43 10 mov %rax,0x10(%rbx) : } : : /* map page for use */ : dma = dma_map_page(rx_ring->dev, page, 0, 0.00 : 5c31: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 5c35: 49 8b 06 mov (%r14),%rax : static inline struct dma_map_ops *get_dma_ops(struct device *dev) : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) 0.00 : 5c38: 48 85 ff test %rdi,%rdi 0.00 : 5c3b: 0f 84 b2 00 00 00 je 5cf3 0.00 : 5c41: 4c 8b 97 00 02 00 00 mov 0x200(%rdi),%r10 0.00 : 5c48: 4d 85 d2 test %r10,%r10 0.00 : 5c4b: 0f 84 a2 00 00 00 je 5cf3 : struct dma_map_ops *ops = get_dma_ops(dev); : dma_addr_t addr; : : kmemcheck_mark_initialized(page_address(page) + offset, size); : BUG_ON(!valid_dma_direction(dir)); : addr = ops->map_page(dev, page, offset, size, dir, NULL); 0.00 : 5c51: 48 c1 e8 05 shr $0x5,%rax 0.00 : 5c55: ba 00 10 00 00 mov $0x1000,%edx 0.00 : 5c5a: 45 31 c9 xor %r9d,%r9d 0.00 : 5c5d: 83 e0 01 and $0x1,%eax 0.00 : 5c60: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 5c66: 4c 89 e6 mov %r12,%rsi 0.00 : 5c69: 89 c1 mov %eax,%ecx 0.00 : 5c6b: 48 d3 e2 shl %cl,%rdx 0.00 : 5c6e: 48 89 d1 mov %rdx,%rcx 0.00 : 5c71: 31 d2 xor %edx,%edx 0.00 : 5c73: 41 ff 52 10 callq *0x10(%r10) : : /* : * if mapping failed free memory back to system since : * there isn't much point in holding memory we can't use : */ : if (dma_mapping_error(rx_ring->dev, dma)) { 0.00 : 5c77: 48 8b 7d 18 mov 0x18(%rbp),%rdi 0.00 : 5c7b: 49 89 c5 mov %rax,%r13 0.00 : 5c7e: 48 85 ff test %rdi,%rdi 0.00 : 5c81: 74 67 je 5cea 0.00 : 5c83: 48 8b 87 00 02 00 00 mov 0x200(%rdi),%rax 0.00 : 5c8a: 48 85 c0 test %rax,%rax 0.00 : 5c8d: 74 5b je 5cea : : /* Make sure we keep the same behaviour */ : static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) : { : struct dma_map_ops *ops = get_dma_ops(dev); : if (ops->mapping_error) 0.00 : 5c8f: 48 8b 40 50 mov 0x50(%rax),%rax 0.00 : 5c93: 48 85 c0 test %rax,%rax 0.00 : 5c96: 74 48 je 5ce0 : return ops->mapping_error(dev, dma_addr); 0.00 : 5c98: 4c 89 ee mov %r13,%rsi 0.00 : 5c9b: ff d0 callq *%rax 0.00 : 5c9d: 85 c0 test %eax,%eax 0.00 : 5c9f: 90 nop 0.00 : 5ca0: 74 29 je 5ccb 0.00 : 5ca2: 49 8b 36 mov (%r14),%rsi : __free_pages(page, ixgbe_rx_pg_order(rx_ring)); 0.00 : 5ca5: 4c 89 e7 mov %r12,%rdi 0.00 : 5ca8: 48 c1 ee 05 shr $0x5,%rsi 0.00 : 5cac: 83 e6 01 and $0x1,%esi 0.00 : 5caf: e8 00 00 00 00 callq 5cb4 : bi->page = NULL; 0.00 : 5cb4: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5cbb: 00 : : rx_ring->rx_stats.alloc_rx_page_failed++; 0.00 : 5cbc: 48 83 85 80 00 00 00 addq $0x1,0x80(%rbp) 0.00 : 5cc3: 01 0.00 : 5cc4: 31 c0 xor %eax,%eax : : bi->dma = dma; : bi->page_offset = 0; : : return true; : } 0.00 : 5cc6: e9 17 ff ff ff jmpq 5be2 : : rx_ring->rx_stats.alloc_rx_page_failed++; : return false; : } : : bi->dma = dma; 0.00 : 5ccb: 4c 89 6b 08 mov %r13,0x8(%rbx) : bi->page_offset = 0; 0.00 : 5ccf: c7 43 18 00 00 00 00 movl $0x0,0x18(%rbx) 0.00 : 5cd6: b8 01 00 00 00 mov $0x1,%eax : : return true; : } 0.00 : 5cdb: e9 02 ff ff ff jmpq 5be2 : : return (dma_addr == DMA_ERROR_CODE); 0.00 : 5ce0: 31 c0 xor %eax,%eax 0.00 : 5ce2: 4d 85 ed test %r13,%r13 0.00 : 5ce5: 0f 94 c0 sete %al 0.00 : 5ce8: eb b3 jmp 5c9d : { : #ifdef CONFIG_X86_32 : return dma_ops; : #else : if (unlikely(!dev) || !dev->archdata.dma_ops) : return dma_ops; 0.00 : 5cea: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 5cf1 0.00 : 5cf1: eb 9c jmp 5c8f 0.00 : 5cf3: 4c 8b 15 00 00 00 00 mov 0x0(%rip),%r10 # 5cfa 0.00 : 5cfa: e9 52 ff ff ff jmpq 5c51 Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000019020 : : **/ : s32 ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw, : union ixgbe_atr_hash_dword input, : union ixgbe_atr_hash_dword common, : u8 queue) : { 0.00 : 19020: 48 83 ec 10 sub $0x10,%rsp 0.00 : 19024: 48 89 6c 24 08 mov %rbp,0x8(%rsp) 0.00 : 19029: 48 89 fd mov %rdi,%rbp 0.00 : 1902c: 89 f7 mov %esi,%edi : : /* : * Get the flow_type in order to program FDIRCMD properly : * lowest 2 bits are FDIRCMD.L4TYPE, third lowest bit is FDIRCMD.IPV6 : */ : switch (input.formatted.flow_type) { 0.00 : 1902e: 89 f8 mov %edi,%eax : **/ : s32 ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw, : union ixgbe_atr_hash_dword input, : union ixgbe_atr_hash_dword common, : u8 queue) : { 0.00 : 19030: 89 ce mov %ecx,%esi 0.00 : 19032: 48 89 1c 24 mov %rbx,(%rsp) : : /* : * Get the flow_type in order to program FDIRCMD properly : * lowest 2 bits are FDIRCMD.L4TYPE, third lowest bit is FDIRCMD.IPV6 : */ : switch (input.formatted.flow_type) { 0.00 : 19036: 0f b6 cc movzbl %ah,%ecx 0.00 : 19039: 80 f9 07 cmp $0x7,%cl 0.00 : 1903c: 77 0c ja 1904a 0.00 : 1903e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 19043: 48 d3 e0 shl %cl,%rax 0.00 : 19046: a8 ee test $0xee,%al 0.00 : 19048: 75 16 jne 19060 0.00 : 1904a: b8 fc ff ff ff mov $0xfffffffc,%eax : IXGBE_WRITE_REG64(hw, IXGBE_FDIRHASH, fdirhashcmd); : : hw_dbg(hw, "Tx Queue=%x hash=%x\n", queue, (u32)fdirhashcmd); : : return 0; : } 0.00 : 1904f: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 19053: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 19058: 48 83 c4 10 add $0x10,%rsp 0.00 : 1905c: c3 retq 0.00 : 1905d: 0f 1f 00 nopl (%rax) : } : : /* configure FDIRCMD register */ : fdircmd = IXGBE_FDIRCMD_CMD_ADD_FLOW | IXGBE_FDIRCMD_FILTER_UPDATE | : IXGBE_FDIRCMD_LAST | IXGBE_FDIRCMD_QUEUE_EN; : fdircmd |= input.formatted.flow_type << IXGBE_FDIRCMD_FLOW_TYPE_SHIFT; 0.00 : 19060: 0f b6 d9 movzbl %cl,%ebx : : /* : * The lower 32-bits of fdirhashcmd is for FDIRHASH, the upper 32-bits : * is for FDIRCMD. Then do a 64-bit register write from FDIRHASH. : */ : fdirhashcmd = (u64)fdircmd << 32; 0.00 : 19063: 40 0f b6 c6 movzbl %sil,%eax : fdirhashcmd |= ixgbe_atr_compute_sig_hash_82599(input, common); 0.00 : 19067: 89 d6 mov %edx,%esi : } : : /* configure FDIRCMD register */ : fdircmd = IXGBE_FDIRCMD_CMD_ADD_FLOW | IXGBE_FDIRCMD_FILTER_UPDATE | : IXGBE_FDIRCMD_LAST | IXGBE_FDIRCMD_QUEUE_EN; : fdircmd |= input.formatted.flow_type << IXGBE_FDIRCMD_FLOW_TYPE_SHIFT; 0.00 : 19069: c1 e3 05 shl $0x5,%ebx : : /* : * The lower 32-bits of fdirhashcmd is for FDIRHASH, the upper 32-bits : * is for FDIRCMD. Then do a 64-bit register write from FDIRHASH. : */ : fdirhashcmd = (u64)fdircmd << 32; 0.00 : 1906c: c1 e0 10 shl $0x10,%eax : } : : /* configure FDIRCMD register */ : fdircmd = IXGBE_FDIRCMD_CMD_ADD_FLOW | IXGBE_FDIRCMD_FILTER_UPDATE | : IXGBE_FDIRCMD_LAST | IXGBE_FDIRCMD_QUEUE_EN; : fdircmd |= input.formatted.flow_type << IXGBE_FDIRCMD_FLOW_TYPE_SHIFT; 0.00 : 1906f: 81 cb 09 88 00 00 or $0x8809,%ebx : : /* : * The lower 32-bits of fdirhashcmd is for FDIRHASH, the upper 32-bits : * is for FDIRCMD. Then do a 64-bit register write from FDIRHASH. : */ : fdirhashcmd = (u64)fdircmd << 32; 0.00 : 19075: 09 c3 or %eax,%ebx : fdirhashcmd |= ixgbe_atr_compute_sig_hash_82599(input, common); 0.00 : 19077: e8 00 00 00 00 callq 1907c : #define mmiowb() barrier() : : #ifdef CONFIG_X86_64 : : build_mmio_read(readq, "q", unsigned long, "=r", :"memory") : build_mmio_write(writeq, "q", unsigned long, "r", :"memory") 0.00 : 1907c: 48 8b 55 00 mov 0x0(%rbp),%rdx : : /* : * The lower 32-bits of fdirhashcmd is for FDIRHASH, the upper 32-bits : * is for FDIRCMD. Then do a 64-bit register write from FDIRHASH. : */ : fdirhashcmd = (u64)fdircmd << 32; 50.00 : 19080: 48 c1 e3 20 shl $0x20,%rbx : fdirhashcmd |= ixgbe_atr_compute_sig_hash_82599(input, common); 0.00 : 19084: 89 c0 mov %eax,%eax 0.00 : 19086: 48 09 d8 or %rbx,%rax 0.00 : 19089: 48 81 c2 28 ee 00 00 add $0xee28,%rdx 0.00 : 19090: 48 89 02 mov %rax,(%rdx) 50.00 : 19093: 31 c0 xor %eax,%eax : IXGBE_WRITE_REG64(hw, IXGBE_FDIRHASH, fdirhashcmd); : : hw_dbg(hw, "Tx Queue=%x hash=%x\n", queue, (u32)fdirhashcmd); : : return 0; : } 0.00 : 19095: eb b8 jmp 1904f Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/igb/igb.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000128d0 : 0.00 : 128d0: 41 55 push %r13 0.00 : 12902: 41 54 49 fiadd 0x3(%rsi) 0.00 : 12905: 89 fc 55 53 31 db add %al,0xe801c3(%rbx) 0.00 : 1290b: 48 83 add %al,(%rax) 0.00 : 1290d: ec 08 0f add %al,0x39(%rcx) 0.00 : 12910: b7 87 b8 fnstsw -0x23(%rdi) 0.00 : 12913: 03 00 xor %ebp,%ebp 0.00 : 12915: 00 44 8d cmp %r13d,%ebx 0.00 : 12918: 68 01 je 12972 0.00 : 1291a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 12920: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 12925: 48 05 50 5b 00 00 add $0x5b50,%rax 0.00 : 1292b: 8b 00 mov (%rax),%edx 50.00 : 1292d: a8 01 74 12 bf mov 0x8(%r12),%rax 0.00 : 12932: de 46 03 or $0x2,%edx 0.00 : 12935: 00 83 c3 01 e8 00 add $0x5b50,%rax 0.00 : 1293b: 00 00 mov %edx,(%rax) 0.00 : 1293d: 00 41 39 dd 7f mov 0x8(%r12),%rax 0.00 : 12942: dd 31 ed 44 39 eb add $0x5b50,%rax 0.00 : 12948: 74 58 mov (%rax),%eax 50.00 : 1294a: 66 0f test $0x2,%al 0.00 : 1294c: 1f 44 jne 12960 0.00 : 1294e: 00 00 49 8b 44 mov $0x346de,%edi 0.00 : 12953: 24 08 48 add $0x1,%ebp 0.00 : 12956: 05 50 5b 00 00 callq 1295b 0.00 : 1295b: 8b 10 49 cmp %ebp,%r13d 0.00 : 1295e: 8b 44 jg 12920 0.00 : 12960: 24 08 xor %eax,%eax 0.00 : 12962: 83 ca 02 cmp %r13d,%ebp 0.00 : 12965: 48 05 je 12982 0.00 : 12967: 50 5b 00 00 add $0x8,%rsp 0.00 : 1296b: 89 pop %rbx 0.00 : 1296c: 10 pop %rbp 0.00 : 1296d: 49 8b pop %r12 0.00 : 1296f: 44 24 pop %r13 0.00 : 12971: 08 retq 0.00 : 12972: 48 05 50 5b 00 00 8b cmpb $0x0,0x0(%rip) # 12979 0.00 : 12979: 00 a8 jne 129f3 0.00 : 1297b: 02 75 12 bf de mov $0xffffffff,%eax 0.00 : 12980: 46 03 jmp 12967 0.00 : 12982: 00 83 c5 01 e8 mov 0x8(%r12),%rax 0.00 : 12987: 00 00 00 00 41 39 add $0x5b50,%rax 0.00 : 1298d: ed 7f mov (%rax),%edx 0.00 : 1298f: c0 31 c0 44 39 mov 0x8(%r12),%rax 0.00 : 12994: ed 74 1b and $0xfffffffc,%edx 0.00 : 12997: 48 83 c4 08 5b 5d add $0x5b50,%rax 0.00 : 1299d: 41 5c mov %edx,(%rax) 0.00 : 1299f: 41 5d c3 80 3d 00 00 cmpb $0x0,0x0(%rip) # 129a6 0.00 : 129a6: 00 00 je 1297b 0.00 : 129a8: 00 75 78 mov %r12,%rdi 0.00 : 129ab: b8 ff ff ff ff eb e5 mov $0x0,%rbx 0.00 : 129b2: 49 8b 44 24 08 callq 129b7 0.00 : 129b7: 48 05 50 5b 00 00 8b cmpb $0x1,0x448(%rax) 0.00 : 129be: 10 49 8b mov %r12,%rdi 0.00 : 129c1: 44 24 08 83 cmove %rax,%rbx 0.00 : 129c5: e2 fc 48 05 50 callq 129ca 0.00 : 129ca: 5b 00 00 89 10 80 3d mov 0x478(%rax),%rsi 0.00 : 129d1: 00 00 00 mov %rbx,%rcx 0.00 : 129d4: 00 00 74 d3 4c 89 e7 mov $0x0,%rdx 0.00 : 129db: 48 c7 c3 00 00 00 00 mov $0x0,%rdi 0.00 : 129e2: e8 00 xor %eax,%eax 0.00 : 129e4: 00 00 00 80 b8 callq 129e9 0.00 : 129e9: 48 04 00 00 01 mov $0xffffffff,%eax 0.00 : 129ee: 4c 89 e7 48 0f jmpq 12967 0.00 : 129f3: 44 d8 e8 mov %r12,%rdi 0.00 : 129f6: 00 00 00 00 48 8b b0 mov $0x0,%rbx 0.00 : 129fd: 78 04 00 00 48 callq 12a02 0.00 : 12a02: 89 d9 48 c7 c2 00 00 cmpb $0x1,0x448(%rax) 0.00 : 12a09: 00 00 48 mov %r12,%rdi 0.00 : 12a0c: c7 c7 00 00 cmove %rax,%rbx 0.00 : 12a10: 00 00 31 c0 e8 callq 12a15 0.00 : 12a15: 00 00 00 00 b8 ff ff mov 0x478(%rax),%rsi 0.00 : 12a1c: ff ff e9 mov %rbx,%rcx 0.00 : 12a1f: 74 ff ff ff 4c 89 e7 mov $0x0,%rdx 0.00 : 12a26: 48 c7 c3 00 00 00 00 mov $0x0,%rdi 0.00 : 12a2d: e8 00 xor %eax,%eax 0.00 : 12a2f: 00 00 00 80 b8 callq 12a34 0.00 : 12a34: 48 04 00 00 01 mov $0xffffffff,%eax 0.00 : 12a39: 4c 89 e7 48 0f jmpq 12967 : 12a3e: 44 d8 xchg %ax,%ax : 12a40: e8 00 00 00 sub $0x28,%rsp : 12a44: 00 48 8b b0 78 mov %r12,0x18(%rsp) : 12a49: 04 00 00 48 89 mov %r13,0x20(%rsp) : 12a4e: d9 48 c7 mov %rdi,%r12 : 12a51: c2 00 00 00 00 mov %rbx,0x8(%rsp) : 12a56: 48 c7 c7 00 00 mov %rbp,0x10(%rsp) : 12a5b: 00 00 31 mov %rdx,%r13 : 12a5e: c0 e8 00 00 mov 0x8(%rdi),%rax : 12a62: 00 00 b8 ff add $0x8,%rax : 12a66: ff ff mov (%rax),%ebp : 12a68: ff e9 29 test %bpl,%bpl : 12a6b: ff ff ff 66 90 48 js 12b80 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/xt_state.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/netfilter/xt_state.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000000 : 100.00 : 0: 0f b6 4f 7c movzbl 0x7c(%rdi),%ecx : 34: 48 8b mul %edx : 36: 87 88 shr %edx : 38: 00 00 00 lea (%rdx,%rdx,2),%edx Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000000 : 100.00 : 0: f3 c3 repz retq : 32: 66 66 66 add %cl,-0x75(%rax) : 35: 66 66 test %ebx,%eax : 37: 2e 0f add %al,(%rax) : 39: 1f 84 00 add %ah,-0x9(%rsi) : 3c: 00 00 00 adc %r8b,(%rsi) : ... Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib/modules/3.0.101-0.15-default/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000000367 : : */ : for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) { : struct ixgbe_q_vector *q_vector = adapter->q_vector[v_idx]; : struct ixgbe_ring *ring; : : ixgbe_for_each_ring(ring, q_vector->rx) 0.00 : 367: 49 8b 5d 10 mov 0x10(%r13),%rbx 0.00 : 36b: 48 85 db test %rbx,%rbx 0.00 : 36e: 74 18 je 388 : ixgbe_set_ivar(adapter, 0, ring->reg_idx, v_idx); 0.00 : 370: 0f b6 53 4f movzbl 0x4f(%rbx),%edx 0.00 : 374: 31 f6 xor %esi,%esi 0.00 : 376: 89 e9 mov %ebp,%ecx 0.00 : 378: 4c 89 e7 mov %r12,%rdi 0.00 : 37b: e8 80 fd ff ff callq 100 : */ : for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) { : struct ixgbe_q_vector *q_vector = adapter->q_vector[v_idx]; : struct ixgbe_ring *ring; : : ixgbe_for_each_ring(ring, q_vector->rx) 0.00 : 380: 48 8b 1b mov (%rbx),%rbx 0.00 : 383: 48 85 db test %rbx,%rbx 0.00 : 386: 75 e8 jne 370 : ixgbe_set_ivar(adapter, 0, ring->reg_idx, v_idx); : : ixgbe_for_each_ring(ring, q_vector->tx) 0.00 : 388: 49 8b 5d 28 mov 0x28(%r13),%rbx 0.00 : 38c: 48 85 db test %rbx,%rbx 0.00 : 38f: 74 35 je 3c6 0.00 : 391: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : ixgbe_set_ivar(adapter, 1, ring->reg_idx, v_idx); 0.00 : 398: 0f b6 53 4f movzbl 0x4f(%rbx),%edx 0.00 : 39c: 89 e9 mov %ebp,%ecx 0.00 : 39e: be 01 00 00 00 mov $0x1,%esi 0.00 : 3a3: 4c 89 e7 mov %r12,%rdi 0.00 : 3a6: e8 55 fd ff ff callq 100 : struct ixgbe_ring *ring; : : ixgbe_for_each_ring(ring, q_vector->rx) : ixgbe_set_ivar(adapter, 0, ring->reg_idx, v_idx); : : ixgbe_for_each_ring(ring, q_vector->tx) 0.00 : 3ab: 48 8b 1b mov (%rbx),%rbx 0.00 : 3ae: 48 85 db test %rbx,%rbx 0.00 : 3b1: 75 e5 jne 398 : ixgbe_set_ivar(adapter, 1, ring->reg_idx, v_idx); : : if (q_vector->tx.ring && !q_vector->rx.ring) { 0.00 : 3b3: 49 83 7d 28 00 cmpq $0x0,0x28(%r13) 0.00 : 3b8: 74 0c je 3c6 0.00 : 3ba: 49 83 7d 10 00 cmpq $0x0,0x10(%r13) 0.00 : 3bf: 90 nop 0.00 : 3c0: 0f 84 92 00 00 00 je 458 : q_vector->itr = IXGBE_10K_ITR; : else : q_vector->itr = adapter->tx_itr_setting; : } else { : /* rx or rx/tx vector */ : if (adapter->rx_itr_setting == 1) 0.00 : 3c6: 41 0f b7 84 24 2c 02 movzwl 0x22c(%r12),%eax 0.00 : 3cd: 00 00 : q_vector->itr = IXGBE_20K_ITR; 0.00 : 3cf: 66 83 f8 01 cmp $0x1,%ax 0.00 : 3d3: 41 0f 44 c7 cmove %r15d,%eax 0.00 : 3d7: 66 41 89 45 0e mov %ax,0xe(%r13) : else : q_vector->itr = adapter->rx_itr_setting; : } : : ixgbe_write_eitr(q_vector); 0.00 : 3dc: 4c 89 ef mov %r13,%rdi : : /* : * Populate the IVAR table and set the ITR values to the : * corresponding register. : */ : for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) { 0.00 : 3df: 83 c5 01 add $0x1,%ebp 0.00 : 3e2: 49 83 c6 08 add $0x8,%r14 : q_vector->itr = IXGBE_20K_ITR; : else : q_vector->itr = adapter->rx_itr_setting; : } : : ixgbe_write_eitr(q_vector); 0.00 : 3e6: e8 00 00 00 00 callq 3eb : : /* : * Populate the IVAR table and set the ITR values to the : * corresponding register. : */ : for (v_idx = 0; v_idx < adapter->num_q_vectors; v_idx++) { 0.00 : 3eb: 41 39 ac 24 c0 0b 00 cmp %ebp,0xbc0(%r12) 0.00 : 3f2: 00 0.00 : 3f3: 0f 8f 67 ff ff ff jg 360 : } : : ixgbe_write_eitr(q_vector); : } : : switch (adapter->hw.mac.type) { 0.00 : 3f9: 41 8b 84 24 50 10 00 mov 0x1050(%r12),%eax 0.00 : 400: 00 0.00 : 401: 83 f8 01 cmp $0x1,%eax 0.00 : 404: 0f 84 8d 00 00 00 je 497 0.00 : 40a: 73 6b jae 477 : ixgbe_set_ivar(adapter, -1, 1, v_idx); : break; : default: : break; : } : IXGBE_WRITE_REG(&adapter->hw, IXGBE_EITR(v_idx), 1950); 0.00 : 40c: 8d 04 ad 20 08 00 00 lea 0x820(,%rbp,4),%eax 0.00 : 413: 83 fd 17 cmp $0x17,%ebp 0.00 : 416: 49 8b 94 24 80 0e 00 mov 0xe80(%r12),%rdx 0.00 : 41d: 00 0.00 : 41e: 48 98 cltq 0.00 : 420: 7e 09 jle 42b 0.00 : 422: 8d 04 ad a0 22 01 00 lea 0x122a0(,%rbp,4),%eax 0.00 : 429: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 42b: 48 01 c2 add %rax,%rdx 0.00 : 42e: b8 9e 07 00 00 mov $0x79e,%eax 0.00 : 433: 89 02 mov %eax,(%rdx) 0.00 : 435: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : 43c: 00 0.00 : 43d: ba ff ff 00 40 mov $0x4000ffff,%edx 0.00 : 442: 48 05 10 08 00 00 add $0x810,%rax 0.00 : 448: 89 10 mov %edx,(%rax) : mask &= ~(IXGBE_EIMS_OTHER | : IXGBE_EIMS_MAILBOX | : IXGBE_EIMS_LSC); : : IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIAC, mask); : } 0.00 : 44a: 5b pop %rbx 0.00 : 44b: 5d pop %rbp 0.00 : 44c: 41 5c pop %r12 0.00 : 44e: 41 5d pop %r13 0.00 : 450: 41 5e pop %r14 0.00 : 452: 41 5f pop %r15 0.00 : 454: c3 retq 0.00 : 455: 0f 1f 00 nopl (%rax) : ixgbe_for_each_ring(ring, q_vector->tx) : ixgbe_set_ivar(adapter, 1, ring->reg_idx, v_idx); : : if (q_vector->tx.ring && !q_vector->rx.ring) { : /* tx only vector */ : if (adapter->tx_itr_setting == 1) 0.00 : 458: 41 0f b7 84 24 24 02 movzwl 0x224(%r12),%eax 0.00 : 45f: 00 00 : q_vector->itr = IXGBE_10K_ITR; 0.00 : 461: ba 90 01 00 00 mov $0x190,%edx 0.00 : 466: 66 83 f8 01 cmp $0x1,%ax 0.00 : 46a: 0f 44 c2 cmove %edx,%eax 0.00 : 46d: 66 41 89 45 0e mov %ax,0xe(%r13) 0.00 : 472: e9 65 ff ff ff jmpq 3dc : } : : ixgbe_write_eitr(q_vector); : } : : switch (adapter->hw.mac.type) { 0.00 : 477: 83 f8 03 cmp $0x3,%eax 0.00 : 47a: 77 90 ja 40c : ixgbe_set_ivar(adapter, -1, IXGBE_IVAR_OTHER_CAUSES_INDEX, : v_idx); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : ixgbe_set_ivar(adapter, -1, 1, v_idx); 0.00 : 47c: 40 0f b6 cd movzbl %bpl,%ecx 0.00 : 480: ba 01 00 00 00 mov $0x1,%edx 0.00 : 485: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 48a: 4c 89 e7 mov %r12,%rdi 0.00 : 48d: e8 6e fc ff ff callq 100 0.00 : 492: e9 75 ff ff ff jmpq 40c : ixgbe_write_eitr(q_vector); : } : : switch (adapter->hw.mac.type) { : case ixgbe_mac_82598EB: : ixgbe_set_ivar(adapter, -1, IXGBE_IVAR_OTHER_CAUSES_INDEX, 0.00 : 497: 40 0f b6 cd movzbl %bpl,%ecx 0.00 : 49b: ba 61 00 00 00 mov $0x61,%edx 0.00 : 4a0: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 4a5: 4c 89 e7 mov %r12,%rdi 0.00 : 4a8: e8 53 fc ff ff callq 100 : v_idx); : break; 0.00 : 4ad: e9 5a ff ff ff jmpq 40c 0.00 : 4b2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4b9: 1f 84 00 00 00 00 00 : : 00000000000004c0 : : void ixgbe_irq_enable_queues(struct ixgbe_adapter *adapter, u64 qmask) : { : u32 mask; : struct ixgbe_hw *hw = &adapter->hw; : : switch (hw->mac.type) { 100.00 : 4c0: 8b 87 50 10 00 00 mov 0x1050(%rdi),%eax 0.00 : 4c6: 83 f8 01 cmp $0x1,%eax 0.00 : 4c9: 74 3d je 508 0.00 : 4cb: 73 03 jae 4d0 0.00 : 4cd: f3 c3 repz retq 0.00 : 4cf: 90 nop 0.00 : 4d0: 83 f8 03 cmp $0x3,%eax 0.00 : 4d3: 77 f8 ja 4cd : IXGBE_WRITE_REG(hw, IXGBE_EIMS, mask); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : mask = (qmask & 0xFFFFFFFF); : if (mask) 0.00 : 4d5: 85 f6 test %esi,%esi 0.00 : 4d7: 74 0f je 4e8 0.00 : 4d9: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 4e0: 48 05 a0 0a 00 00 add $0xaa0,%rax 0.00 : 4e6: 89 30 mov %esi,(%rax) : IXGBE_WRITE_REG(hw, IXGBE_EIMS_EX(0), mask); : mask = (qmask >> 32); 0.00 : 4e8: 48 89 f2 mov %rsi,%rdx 0.00 : 4eb: 48 c1 ea 20 shr $0x20,%rdx : if (mask) 0.00 : 4ef: 85 d2 test %edx,%edx 0.00 : 4f1: 74 da je 4cd 0.00 : 4f3: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 4fa: 48 05 a4 0a 00 00 add $0xaa4,%rax 0.00 : 500: 89 10 mov %edx,(%rax) 0.00 : 502: c3 retq 0.00 : 503: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 508: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax : u32 mask; : struct ixgbe_hw *hw = &adapter->hw; : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : mask = (IXGBE_EIMS_RTX_QUEUE & qmask); 0.00 : 50f: 0f b7 d6 movzwl %si,%edx 0.00 : 512: 48 05 80 08 00 00 add $0x880,%rax 0.00 : 518: 89 10 mov %edx,(%rax) 0.00 : 51a: c3 retq 0.00 : 51b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : 0000000000000520 : : void ixgbe_irq_disable_queues(struct ixgbe_adapter *adapter, u64 qmask) : { : u32 mask; : struct ixgbe_hw *hw = &adapter->hw; : : switch (hw->mac.type) { 0.00 : 520: 8b 87 50 10 00 00 mov 0x1050(%rdi),%eax 0.00 : 526: 83 f8 01 cmp $0x1,%eax 0.00 : 529: 74 3d je 568 0.00 : 52b: 73 03 jae 530 0.00 : 52d: f3 c3 repz retq 0.00 : 52f: 90 nop 0.00 : 530: 83 f8 03 cmp $0x3,%eax 0.00 : 533: 77 f8 ja 52d : IXGBE_WRITE_REG(hw, IXGBE_EIMC, mask); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : mask = (qmask & 0xFFFFFFFF); : if (mask) 0.00 : 535: 85 f6 test %esi,%esi 0.00 : 537: 74 0f je 548 0.00 : 539: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 540: 48 05 b0 0a 00 00 add $0xab0,%rax 0.00 : 546: 89 30 mov %esi,(%rax) : IXGBE_WRITE_REG(hw, IXGBE_EIMC_EX(0), mask); : mask = (qmask >> 32); 0.00 : 548: 48 89 f2 mov %rsi,%rdx 0.00 : 54b: 48 c1 ea 20 shr $0x20,%rdx : if (mask) 0.00 : 54f: 85 d2 test %edx,%edx 0.00 : 551: 74 da je 52d 0.00 : 553: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 55a: 48 05 b4 0a 00 00 add $0xab4,%rax 0.00 : 560: 89 10 mov %edx,(%rax) 0.00 : 562: c3 retq 0.00 : 563: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 568: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax : u32 mask; : struct ixgbe_hw *hw = &adapter->hw; : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : mask = (IXGBE_EIMS_RTX_QUEUE & qmask); 0.00 : 56f: 0f b7 d6 movzwl %si,%edx 0.00 : 572: 48 05 88 08 00 00 add $0x888,%rax 0.00 : 578: 89 10 mov %edx,(%rax) 0.00 : 57a: c3 retq 0.00 : 57b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : 0000000000000580 : : { : int i; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; : : #ifdef HAVE_DCBNL_IEEE : if (adapter->ixgbe_ieee_pfc) 0.00 : 580: 48 8b 87 50 09 00 00 mov 0x950(%rdi),%rax : } : : void ixgbe_set_rx_drop_en(struct ixgbe_adapter *adapter) : { : int i; : bool pfc_en = adapter->dcb_cfg.pfc_mode_enable; 0.00 : 587: 0f b6 97 7a 0a 00 00 movzbl 0xa7a(%rdi),%edx : : #ifdef HAVE_DCBNL_IEEE : if (adapter->ixgbe_ieee_pfc) 0.00 : 58e: 48 85 c0 test %rax,%rax 0.00 : 591: 74 12 je 5a5 : pfc_en |= !!(adapter->ixgbe_ieee_pfc->pfc_en); 0.00 : 593: 80 78 01 00 cmpb $0x0,0x1(%rax) 0.00 : 597: 0f b6 d2 movzbl %dl,%edx 0.00 : 59a: 0f 95 c0 setne %al 0.00 : 59d: 0f b6 c0 movzbl %al,%eax 0.00 : 5a0: 09 d0 or %edx,%eax 0.00 : 5a2: 0f 95 c2 setne %dl : * Number of Rx queues > 1 and flow control is disabled : * : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && 0.00 : 5a5: 8b b7 58 7c 00 00 mov 0x7c58(%rdi),%esi 0.00 : 5ab: 85 f6 test %esi,%esi 0.00 : 5ad: 0f 84 d5 00 00 00 je 688 : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 5b3: 8b 8f 28 02 00 00 mov 0x228(%rdi),%ecx 0.00 : 5b9: 85 c9 test %ecx,%ecx 0.00 : 5bb: 0f 8e b8 01 00 00 jle 779 : * Number of Rx queues > 1 and flow control is disabled : * : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && 0.00 : 5c1: 49 89 fa mov %rdi,%r10 0.00 : 5c4: 45 31 c0 xor %r8d,%r8d 0.00 : 5c7: eb 5b jmp 624 0.00 : 5c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : static void ixgbe_enable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 5d0: 0f b6 ca movzbl %dl,%ecx 0.00 : 5d3: 8d 04 8d 00 21 00 00 lea 0x2100(,%rcx,4),%eax 0.00 : 5da: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 5dc: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 5e0: 8b 30 mov (%rax),%esi : : srrctl |= IXGBE_SRRCTL_DROP_EN; : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 5e2: 8d 04 8d 00 21 00 00 lea 0x2100(,%rcx,4),%eax : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); : : srrctl |= IXGBE_SRRCTL_DROP_EN; 0.00 : 5e9: 81 ce 00 00 00 10 or $0x10000000,%esi : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 5ef: 80 fa 0f cmp $0xf,%dl 0.00 : 5f2: 4c 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%r9 0.00 : 5f9: 48 98 cltq 0.00 : 5fb: 76 10 jbe 60d 0.00 : 5fd: 80 fa 3f cmp $0x3f,%dl 0.00 : 600: 77 56 ja 658 0.00 : 602: c1 e1 06 shl $0x6,%ecx 0.00 : 605: 8d 81 14 10 00 00 lea 0x1014(%rcx),%eax 0.00 : 60b: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 60d: 49 8d 04 01 lea (%r9,%rax,1),%rax 0.00 : 611: 89 30 mov %esi,(%rax) : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 613: 41 83 c0 01 add $0x1,%r8d 0.00 : 617: 49 83 c2 08 add $0x8,%r10 0.00 : 61b: 44 39 87 28 02 00 00 cmp %r8d,0x228(%rdi) 0.00 : 622: 7e 5c jle 680 : : static void ixgbe_enable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; 0.00 : 624: 49 8b 82 d8 04 00 00 mov 0x4d8(%r10),%rax : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 62b: 48 8b b7 80 0e 00 00 mov 0xe80(%rdi),%rsi : : static void ixgbe_enable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; 0.00 : 632: 0f b6 50 4f movzbl 0x4f(%rax),%edx : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 636: 80 fa 0f cmp $0xf,%dl 0.00 : 639: 76 95 jbe 5d0 0.00 : 63b: 80 fa 3f cmp $0x3f,%dl 0.00 : 63e: 77 28 ja 668 0.00 : 640: 0f b6 ca movzbl %dl,%ecx 0.00 : 643: 89 c8 mov %ecx,%eax 0.00 : 645: c1 e0 06 shl $0x6,%eax 0.00 : 648: 05 14 10 00 00 add $0x1014,%eax 0.00 : 64d: 48 98 cltq 0.00 : 64f: eb 8b jmp 5dc 0.00 : 651: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : srrctl |= IXGBE_SRRCTL_DROP_EN; : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 658: c1 e1 06 shl $0x6,%ecx 0.00 : 65b: 8d 81 14 c0 00 00 lea 0xc014(%rcx),%eax 0.00 : 661: 48 98 cltq 0.00 : 663: eb a8 jmp 60d 0.00 : 665: 0f 1f 00 nopl (%rax) : static void ixgbe_enable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 668: 0f b6 ca movzbl %dl,%ecx 0.00 : 66b: 89 c8 mov %ecx,%eax 0.00 : 66d: c1 e0 06 shl $0x6,%eax 0.00 : 670: 05 14 c0 00 00 add $0xc014,%eax 0.00 : 675: 48 98 cltq 0.00 : 677: e9 60 ff ff ff jmpq 5dc 0.00 : 67c: 0f 1f 40 00 nopl 0x0(%rax) : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 680: f3 c3 repz retq 0.00 : 682: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Number of Rx queues > 1 and flow control is disabled : * : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && 0.00 : 688: 8b 87 28 02 00 00 mov 0x228(%rdi),%eax 0.00 : 68e: 83 f8 01 cmp $0x1,%eax 0.00 : 691: 0f 8e d5 00 00 00 jle 76c 0.00 : 697: f6 87 0c 13 00 00 02 testb $0x2,0x130c(%rdi) 0.00 : 69e: 0f 84 bb 00 00 00 je 75f : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 6a4: 49 89 fa mov %rdi,%r10 0.00 : 6a7: 45 31 c0 xor %r8d,%r8d 0.00 : 6aa: eb 58 jmp 704 0.00 : 6ac: 0f 1f 40 00 nopl 0x0(%rax) : static void ixgbe_disable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 6b0: 0f b6 ca movzbl %dl,%ecx 0.00 : 6b3: 8d 04 8d 00 21 00 00 lea 0x2100(,%rcx,4),%eax 0.00 : 6ba: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 6bc: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 6c0: 8b 30 mov (%rax),%esi : : srrctl &= ~IXGBE_SRRCTL_DROP_EN; : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 6c2: 8d 04 8d 00 21 00 00 lea 0x2100(,%rcx,4),%eax : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); : : srrctl &= ~IXGBE_SRRCTL_DROP_EN; 0.00 : 6c9: 81 e6 ff ff ff ef and $0xefffffff,%esi : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 6cf: 80 fa 0f cmp $0xf,%dl 0.00 : 6d2: 4c 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%r9 0.00 : 6d9: 48 98 cltq 0.00 : 6db: 76 10 jbe 6ed 0.00 : 6dd: 80 fa 3f cmp $0x3f,%dl 0.00 : 6e0: 77 6e ja 750 0.00 : 6e2: c1 e1 06 shl $0x6,%ecx 0.00 : 6e5: 8d 81 14 10 00 00 lea 0x1014(%rcx),%eax 0.00 : 6eb: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 6ed: 49 8d 04 01 lea (%r9,%rax,1),%rax 0.00 : 6f1: 89 30 mov %esi,(%rax) : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) : ixgbe_enable_rx_drop(adapter, adapter->rx_ring[i]); : } else { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 6f3: 41 83 c0 01 add $0x1,%r8d 0.00 : 6f7: 49 83 c2 08 add $0x8,%r10 0.00 : 6fb: 44 39 87 28 02 00 00 cmp %r8d,0x228(%rdi) 0.00 : 702: 7e 59 jle 75d : : static void ixgbe_disable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; 0.00 : 704: 49 8b 82 d8 04 00 00 mov 0x4d8(%r10),%rax : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 70b: 48 8b b7 80 0e 00 00 mov 0xe80(%rdi),%rsi : : static void ixgbe_disable_rx_drop(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u8 reg_idx = ring->reg_idx; 0.00 : 712: 0f b6 50 4f movzbl 0x4f(%rax),%edx : u32 srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(reg_idx)); 0.00 : 716: 80 fa 0f cmp $0xf,%dl 0.00 : 719: 76 95 jbe 6b0 0.00 : 71b: 80 fa 3f cmp $0x3f,%dl 0.00 : 71e: 77 18 ja 738 0.00 : 720: 0f b6 ca movzbl %dl,%ecx 0.00 : 723: 89 c8 mov %ecx,%eax 0.00 : 725: c1 e0 06 shl $0x6,%eax 0.00 : 728: 05 14 10 00 00 add $0x1014,%eax 0.00 : 72d: 48 98 cltq 0.00 : 72f: eb 8b jmp 6bc 0.00 : 731: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 738: 0f b6 ca movzbl %dl,%ecx 0.00 : 73b: 89 c8 mov %ecx,%eax 0.00 : 73d: c1 e0 06 shl $0x6,%eax 0.00 : 740: 05 14 c0 00 00 add $0xc014,%eax 0.00 : 745: 48 98 cltq 0.00 : 747: e9 70 ff ff ff jmpq 6bc 0.00 : 74c: 0f 1f 40 00 nopl 0x0(%rax) : : srrctl &= ~IXGBE_SRRCTL_DROP_EN; : : IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(reg_idx), srrctl); 0.00 : 750: c1 e1 06 shl $0x6,%ecx 0.00 : 753: 8d 81 14 c0 00 00 lea 0xc014(%rcx),%eax 0.00 : 759: 48 98 cltq 0.00 : 75b: eb 90 jmp 6ed 0.00 : 75d: f3 c3 repz retq : * Number of Rx queues > 1 and flow control is disabled : * : * This allows us to avoid head of line blocking for security : * and performance reasons. : */ : if (adapter->num_vfs || (adapter->num_rx_queues > 1 && 0.00 : 75f: 84 d2 test %dl,%dl 0.00 : 761: 0f 85 3d ff ff ff jne 6a4 0.00 : 767: e9 55 fe ff ff jmpq 5c1 : !(adapter->hw.fc.current_mode & ixgbe_fc_tx_pause) && !pfc_en)) { : for (i = 0; i < adapter->num_rx_queues; i++) : ixgbe_enable_rx_drop(adapter, adapter->rx_ring[i]); : } else { : for (i = 0; i < adapter->num_rx_queues; i++) 0.00 : 76c: 85 c0 test %eax,%eax 0.00 : 76e: 66 90 xchg %ax,%ax 0.00 : 770: 0f 8f 2e ff ff ff jg 6a4 0.00 : 776: 66 90 xchg %ax,%ax 0.00 : 778: c3 retq 0.00 : 779: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 780: c3 retq 0.00 : 781: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 788: 0f 1f 84 00 00 00 00 0.00 : 78f: 00 : : 0000000000000790 : : void ixgbe_clear_rscctl(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u32 rscctrl; : u8 reg_idx = ring->reg_idx; 0.00 : 790: 44 0f b6 46 4f movzbl 0x4f(%rsi),%r8d : : rscctrl = IXGBE_READ_REG(hw, IXGBE_RSCCTL(reg_idx)); 0.00 : 795: 48 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%rcx 0.00 : 79c: 41 80 f8 3f cmp $0x3f,%r8b 0.00 : 7a0: 77 46 ja 7e8 0.00 : 7a2: 41 0f b6 d0 movzbl %r8b,%edx 0.00 : 7a6: 89 d0 mov %edx,%eax 0.00 : 7a8: c1 e0 06 shl $0x6,%eax 0.00 : 7ab: 05 2c 10 00 00 add $0x102c,%eax 0.00 : 7b0: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 7b2: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 7b6: 8b 08 mov (%rax),%ecx : rscctrl &= ~IXGBE_RSCCTL_RSCEN; 0.00 : 7b8: 83 e1 fe and $0xfffffffe,%ecx : IXGBE_WRITE_REG(hw, IXGBE_RSCCTL(reg_idx), rscctrl); 0.00 : 7bb: 41 80 f8 3f cmp $0x3f,%r8b 0.00 : 7bf: 48 8b bf 80 0e 00 00 mov 0xe80(%rdi),%rdi 0.00 : 7c6: 76 38 jbe 800 0.00 : 7c8: c1 e2 06 shl $0x6,%edx 0.00 : 7cb: 8d 82 2c c0 00 00 lea 0xc02c(%rdx),%eax 0.00 : 7d1: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 7d3: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 7d7: 89 08 mov %ecx,(%rax) : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 7d9: 48 8d 46 30 lea 0x30(%rsi),%rax 0.00 : 7dd: f0 80 66 30 f7 lock andb $0xf7,0x30(%rsi) : : clear_ring_rsc_enabled(ring); : } 0.00 : 7e2: c3 retq 0.00 : 7e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : struct ixgbe_hw *hw = &adapter->hw; : u32 rscctrl; : u8 reg_idx = ring->reg_idx; : : rscctrl = IXGBE_READ_REG(hw, IXGBE_RSCCTL(reg_idx)); 0.00 : 7e8: 41 0f b6 d0 movzbl %r8b,%edx 0.00 : 7ec: 89 d0 mov %edx,%eax 0.00 : 7ee: c1 e0 06 shl $0x6,%eax 0.00 : 7f1: 05 2c c0 00 00 add $0xc02c,%eax 0.00 : 7f6: 48 98 cltq 0.00 : 7f8: eb b8 jmp 7b2 0.00 : 7fa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : rscctrl &= ~IXGBE_RSCCTL_RSCEN; : IXGBE_WRITE_REG(hw, IXGBE_RSCCTL(reg_idx), rscctrl); 0.00 : 800: c1 e2 06 shl $0x6,%edx 0.00 : 803: 8d 82 2c 10 00 00 lea 0x102c(%rdx),%eax 0.00 : 809: 48 98 cltq 0.00 : 80b: eb c6 jmp 7d3 0.00 : 80d: 0f 1f 00 nopl (%rax) : : 0000000000000810 : : return oldbit; : } : : static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) : { : return ((1UL << (nr % BITS_PER_LONG)) & 0.00 : 810: 48 8b 46 30 mov 0x30(%rsi),%rax : void ixgbe_configure_rscctl(struct ixgbe_adapter *adapter, : struct ixgbe_ring *ring) : { : struct ixgbe_hw *hw = &adapter->hw; : u32 rscctrl; : u8 reg_idx = ring->reg_idx; 0.00 : 814: 44 0f b6 46 4f movzbl 0x4f(%rsi),%r8d : : if (!ring_is_rsc_enabled(ring)) 0.00 : 819: a8 08 test $0x8,%al 0.00 : 81b: 74 44 je 861 : return; : : rscctrl = IXGBE_READ_REG(hw, IXGBE_RSCCTL(reg_idx)); 0.00 : 81d: 41 80 f8 3f cmp $0x3f,%r8b 0.00 : 821: 48 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%rcx 0.00 : 828: 76 3e jbe 868 0.00 : 82a: 41 0f b6 d0 movzbl %r8b,%edx 0.00 : 82e: 89 d0 mov %edx,%eax 0.00 : 830: c1 e0 06 shl $0x6,%eax 0.00 : 833: 05 2c c0 00 00 add $0xc02c,%eax 0.00 : 838: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 83a: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : 83e: 8b 08 mov (%rax),%ecx : * total size of max desc * buf_len is not greater : * than 65536 : */ : #ifndef CONFIG_IXGBE_DISABLE_PACKET_SPLIT : #if (MAX_SKB_FRAGS >= 16) : rscctrl |= IXGBE_RSCCTL_MAXDESC_16; 0.00 : 840: 83 c9 0d or $0xd,%ecx : else if (ring->rx_buf_len <= IXGBE_RXBUFFER_8K) : rscctrl |= IXGBE_RSCCTL_MAXDESC_8; : else : rscctrl |= IXGBE_RSCCTL_MAXDESC_4; : #endif : IXGBE_WRITE_REG(hw, IXGBE_RSCCTL(reg_idx), rscctrl); 0.00 : 843: 41 80 f8 3f cmp $0x3f,%r8b 0.00 : 847: 48 8b b7 80 0e 00 00 mov 0xe80(%rdi),%rsi 0.00 : 84e: 77 30 ja 880 0.00 : 850: c1 e2 06 shl $0x6,%edx 0.00 : 853: 8d 82 2c 10 00 00 lea 0x102c(%rdx),%eax 0.00 : 859: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 85b: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 85f: 89 08 mov %ecx,(%rax) 0.00 : 861: f3 c3 repz retq 0.00 : 863: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : u8 reg_idx = ring->reg_idx; : : if (!ring_is_rsc_enabled(ring)) : return; : : rscctrl = IXGBE_READ_REG(hw, IXGBE_RSCCTL(reg_idx)); 0.00 : 868: 41 0f b6 d0 movzbl %r8b,%edx 0.00 : 86c: 89 d0 mov %edx,%eax 0.00 : 86e: c1 e0 06 shl $0x6,%eax 0.00 : 871: 05 2c 10 00 00 add $0x102c,%eax 0.00 : 876: 48 98 cltq 0.00 : 878: eb c0 jmp 83a 0.00 : 87a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else if (ring->rx_buf_len <= IXGBE_RXBUFFER_8K) : rscctrl |= IXGBE_RSCCTL_MAXDESC_8; : else : rscctrl |= IXGBE_RSCCTL_MAXDESC_4; : #endif : IXGBE_WRITE_REG(hw, IXGBE_RSCCTL(reg_idx), rscctrl); 0.00 : 880: c1 e2 06 shl $0x6,%edx 0.00 : 883: 8d 82 2c c0 00 00 lea 0xc02c(%rdx),%eax 0.00 : 889: 48 98 cltq 0.00 : 88b: eb ce jmp 85b 0.00 : 88d: 0f 1f 00 nopl (%rax) : : 0000000000000890 : : struct ixgbe_hw *hw = &adapter->hw; : u32 reg_offset, vf_shift; : u32 gcr_ext, vmdctl; : int i; : : if (!(adapter->flags & IXGBE_FLAG_VMDQ_ENABLED)) 0.00 : 890: 8b 87 18 02 00 00 mov 0x218(%rdi),%eax : for (p = 0; p < adapter->num_rx_pools; p++) : IXGBE_WRITE_REG(hw, IXGBE_PSRTYPE(VMDQ_P(p)), psrtype); : } : : static void ixgbe_configure_virtualization(struct ixgbe_adapter *adapter) : { 0.00 : 896: 49 89 f8 mov %rdi,%r8 : struct ixgbe_hw *hw = &adapter->hw; : u32 reg_offset, vf_shift; : u32 gcr_ext, vmdctl; : int i; : : if (!(adapter->flags & IXGBE_FLAG_VMDQ_ENABLED)) 0.00 : 899: f6 c4 08 test $0x8,%ah 0.00 : 89c: 0f 84 8e 00 00 00 je 930 : return; : : switch (hw->mac.type) { 0.00 : 8a2: 8b 97 50 10 00 00 mov 0x1050(%rdi),%edx 0.00 : 8a8: 83 fa 01 cmp $0x1,%edx 0.00 : 8ab: 0f 84 a7 01 00 00 je a58 0.00 : 8b1: 0f 83 81 00 00 00 jae 938 : break; : default: : break; : } : : if (!(adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)) 0.00 : 8b7: a9 00 00 10 00 test $0x100000,%eax 0.00 : 8bc: 74 72 je 930 : : /* : * Set up VF register offsets for selected VT Mode, : * i.e. 32 or 64 VFs for SR-IOV : */ : switch (adapter->ring_feature[RING_F_VMDQ].mask) { 0.00 : 8be: 41 0f b7 80 d4 0b 00 movzwl 0xbd4(%r8),%eax 0.00 : 8c5: 00 0.00 : 8c6: ba 01 00 00 00 mov $0x1,%edx 0.00 : 8cb: 66 83 f8 78 cmp $0x78,%ax 0.00 : 8cf: 74 0c je 8dd 0.00 : 8d1: 31 d2 xor %edx,%edx 0.00 : 8d3: 66 83 f8 7c cmp $0x7c,%ax 0.00 : 8d7: 0f 95 c2 setne %dl 0.00 : 8da: 83 c2 02 add $0x2,%edx 0.00 : 8dd: 49 8b 80 80 0e 00 00 mov 0xe80(%r8),%rax 0.00 : 8e4: 48 05 50 10 01 00 add $0x11050,%rax 0.00 : 8ea: 89 10 mov %edx,(%rax) : } : : IXGBE_WRITE_REG(hw, IXGBE_GCR_EXT, gcr_ext); : : /* enable Tx loopback for VF/PF communication */ : if (adapter->flags & IXGBE_FLAG_SRIOV_L2LOOPBACK_ENABLE) 0.00 : 8ec: 41 f6 80 1a 02 00 00 testb $0x80,0x21a(%r8) 0.00 : 8f3: 80 0.00 : 8f4: 0f 85 8e 01 00 00 jne a88 0.00 : 8fa: 49 8b 80 80 0e 00 00 mov 0xe80(%r8),%rax 0.00 : 901: 31 d2 xor %edx,%edx 0.00 : 903: 48 05 20 82 00 00 add $0x8220,%rax 0.00 : 909: 89 10 mov %edx,(%rax) : IXGBE_WRITE_REG(hw, IXGBE_PFDTXGSWC, IXGBE_PFDTXGSWC_VT_LBEN); : else : IXGBE_WRITE_REG(hw, IXGBE_PFDTXGSWC, 0); : : hw->mac.ops.set_mac_anti_spoofing(hw, (adapter->num_vfs != 0), 0.00 : 90b: 41 8b 90 58 7c 00 00 mov 0x7c58(%r8),%edx 0.00 : 912: 31 f6 xor %esi,%esi 0.00 : 914: 49 8d b8 80 0e 00 00 lea 0xe80(%r8),%rdi 0.00 : 91b: 4d 8b 98 20 10 00 00 mov 0x1020(%r8),%r11 0.00 : 922: 85 d2 test %edx,%edx 0.00 : 924: 40 0f 95 c6 setne %sil 0.00 : 928: 41 ff e3 jmpq *%r11 0.00 : 92b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 930: f3 c3 repz retq 0.00 : 932: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : int i; : : if (!(adapter->flags & IXGBE_FLAG_VMDQ_ENABLED)) : return; : : switch (hw->mac.type) { 0.00 : 938: 83 fa 03 cmp $0x3,%edx 0.00 : 93b: 0f 87 76 ff ff ff ja 8b7 : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 941: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : 948: 48 05 b0 51 00 00 add $0x51b0,%rax 0.00 : 94e: 8b 10 mov (%rax),%edx : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : vmdctl = IXGBE_READ_REG(hw, IXGBE_VT_CTL); : vmdctl |= IXGBE_VT_CTL_VT_ENABLE; : vmdctl &= ~IXGBE_VT_CTL_POOL_MASK; : vmdctl |= VMDQ_P(0) << IXGBE_VT_CTL_POOL_SHIFT; 0.00 : 950: 0f b7 87 d6 0b 00 00 movzwl 0xbd6(%rdi),%eax : IXGBE_WRITE_REG(hw, IXGBE_VMD_CTL, vmdctl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : vmdctl = IXGBE_READ_REG(hw, IXGBE_VT_CTL); : vmdctl |= IXGBE_VT_CTL_VT_ENABLE; 0.00 : 957: 83 ca 01 or $0x1,%edx : vmdctl &= ~IXGBE_VT_CTL_POOL_MASK; : vmdctl |= VMDQ_P(0) << IXGBE_VT_CTL_POOL_SHIFT; : if (adapter->num_vfs) : vmdctl |= IXGBE_VT_CTL_REPLEN; 0.00 : 95a: 8b bf 58 7c 00 00 mov 0x7c58(%rdi),%edi : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : vmdctl = IXGBE_READ_REG(hw, IXGBE_VT_CTL); : vmdctl |= IXGBE_VT_CTL_VT_ENABLE; : vmdctl &= ~IXGBE_VT_CTL_POOL_MASK; 0.00 : 960: 81 e2 7f e0 ff ff and $0xffffe07f,%edx : vmdctl |= VMDQ_P(0) << IXGBE_VT_CTL_POOL_SHIFT; 0.00 : 966: c1 e0 07 shl $0x7,%eax 0.00 : 969: 09 c2 or %eax,%edx : if (adapter->num_vfs) : vmdctl |= IXGBE_VT_CTL_REPLEN; 0.00 : 96b: 89 d0 mov %edx,%eax 0.00 : 96d: 0d 00 00 00 40 or $0x40000000,%eax 0.00 : 972: 85 ff test %edi,%edi 0.00 : 974: 0f 45 d0 cmovne %eax,%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 977: 49 8b 80 80 0e 00 00 mov 0xe80(%r8),%rax 0.00 : 97e: 48 05 b0 51 00 00 add $0x51b0,%rax 0.00 : 984: 89 10 mov %edx,(%rax) : IXGBE_WRITE_REG(hw, IXGBE_VT_CTL, vmdctl); : : for (i = 1; i < adapter->num_rx_pools; i++) { 0.00 : 986: 41 83 b8 18 07 00 00 cmpl $0x1,0x718(%r8) 0.00 : 98d: 01 0.00 : 98e: 7e 43 jle 9d3 0.00 : 990: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 995: 0f 1f 00 nopl (%rax) : : /* : * accept untagged packets until a vlan tag : * is specifically set for the VMDQ queue/pool : */ : vmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(pool)); 0.00 : 998: 41 0f b7 80 d6 0b 00 movzwl 0xbd6(%r8),%eax 0.00 : 99f: 00 0.00 : 9a0: 8d 84 01 00 3c 00 00 lea 0x3c00(%rcx,%rax,1),%eax 0.00 : 9a7: c1 e0 02 shl $0x2,%eax 0.00 : 9aa: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 9ac: 48 89 c2 mov %rax,%rdx 0.00 : 9af: 49 03 90 80 0e 00 00 add 0xe80(%r8),%rdx 0.00 : 9b6: 8b 12 mov (%rdx),%edx : vmolr |= IXGBE_VMOLR_AUPE; : vmolr |= IXGBE_VMOLR_BAM; 0.00 : 9b8: 81 ca 00 00 00 09 or $0x9000000,%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 9be: 49 03 80 80 0e 00 00 add 0xe80(%r8),%rax 0.00 : 9c5: 89 10 mov %edx,(%rax) : vmdctl |= VMDQ_P(0) << IXGBE_VT_CTL_POOL_SHIFT; : if (adapter->num_vfs) : vmdctl |= IXGBE_VT_CTL_REPLEN; : IXGBE_WRITE_REG(hw, IXGBE_VT_CTL, vmdctl); : : for (i = 1; i < adapter->num_rx_pools; i++) { 0.00 : 9c7: 83 c1 01 add $0x1,%ecx 0.00 : 9ca: 41 39 88 18 07 00 00 cmp %ecx,0x718(%r8) 0.00 : 9d1: 7f c5 jg 998 : vmolr |= IXGBE_VMOLR_AUPE; : vmolr |= IXGBE_VMOLR_BAM; : IXGBE_WRITE_REG(hw, IXGBE_VMOLR(pool), vmolr); : } : : vf_shift = VMDQ_P(0) % 32; 0.00 : 9d3: 41 0f b7 88 d6 0b 00 movzwl 0xbd6(%r8),%ecx 0.00 : 9da: 00 : reg_offset = (VMDQ_P(0) >= 32) ? 1 : 0; 0.00 : 9db: 31 d2 xor %edx,%edx : : /* Enable only the PF pools for Tx/Rx */ : IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset), (~0) << vf_shift); 0.00 : 9dd: be ff ff ff ff mov $0xffffffff,%esi : vmolr |= IXGBE_VMOLR_BAM; : IXGBE_WRITE_REG(hw, IXGBE_VMOLR(pool), vmolr); : } : : vf_shift = VMDQ_P(0) % 32; : reg_offset = (VMDQ_P(0) >= 32) ? 1 : 0; 0.00 : 9e2: 66 83 f9 1f cmp $0x1f,%cx 0.00 : 9e6: 0f 97 c2 seta %dl : : /* Enable only the PF pools for Tx/Rx */ : IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset), (~0) << vf_shift); 0.00 : 9e9: 83 e1 1f and $0x1f,%ecx 0.00 : 9ec: 8d 82 78 14 00 00 lea 0x1478(%rdx),%eax 0.00 : 9f2: d3 e6 shl %cl,%esi 0.00 : 9f4: c1 e0 02 shl $0x2,%eax 0.00 : 9f7: 89 c0 mov %eax,%eax 0.00 : 9f9: 49 03 80 80 0e 00 00 add 0xe80(%r8),%rax 0.00 : a00: 89 30 mov %esi,(%rax) : IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset ^ 1), reg_offset - 1); 0.00 : a02: 89 d1 mov %edx,%ecx 0.00 : a04: 8d 7a ff lea -0x1(%rdx),%edi 0.00 : a07: 83 f1 01 xor $0x1,%ecx 0.00 : a0a: 8d 81 78 14 00 00 lea 0x1478(%rcx),%eax 0.00 : a10: c1 e0 02 shl $0x2,%eax 0.00 : a13: 89 c0 mov %eax,%eax 0.00 : a15: 49 03 80 80 0e 00 00 add 0xe80(%r8),%rax 0.00 : a1c: 89 38 mov %edi,(%rax) 0.00 : a1e: 81 c2 44 20 00 00 add $0x2044,%edx 0.00 : a24: c1 e2 02 shl $0x2,%edx 0.00 : a27: 89 d2 mov %edx,%edx 0.00 : a29: 49 03 90 80 0e 00 00 add 0xe80(%r8),%rdx 0.00 : a30: 89 32 mov %esi,(%rdx) 0.00 : a32: 81 c1 44 20 00 00 add $0x2044,%ecx 0.00 : a38: c1 e1 02 shl $0x2,%ecx 0.00 : a3b: 89 c9 mov %ecx,%ecx 0.00 : a3d: 49 03 88 80 0e 00 00 add 0xe80(%r8),%rcx 0.00 : a44: 89 39 mov %edi,(%rcx) 0.00 : a46: 41 8b 80 18 02 00 00 mov 0x218(%r8),%eax 0.00 : a4d: e9 65 fe ff ff jmpq 8b7 0.00 : a52: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : a58: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : a5f: 48 05 1c 58 00 00 add $0x581c,%rax 0.00 : a65: 8b 10 mov (%rax),%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : a67: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax : return; : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : vmdctl = IXGBE_READ_REG(hw, IXGBE_VMD_CTL); : vmdctl |= IXGBE_VMD_CTL_VMDQ_EN; 0.00 : a6e: 83 ca 01 or $0x1,%edx 0.00 : a71: 48 05 1c 58 00 00 add $0x581c,%rax 0.00 : a77: 89 10 mov %edx,(%rax) 0.00 : a79: 8b 87 18 02 00 00 mov 0x218(%rdi),%eax 0.00 : a7f: e9 33 fe ff ff jmpq 8b7 0.00 : a84: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : a88: 49 8b 80 80 0e 00 00 mov 0xe80(%r8),%rax 0.00 : a8f: ba 01 00 00 00 mov $0x1,%edx 0.00 : a94: 48 05 20 82 00 00 add $0x8220,%rax 0.00 : a9a: 89 10 mov %edx,(%rax) 0.00 : a9c: e9 6a fe ff ff jmpq 90b 0.00 : aa1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : aa8: 0f 1f 84 00 00 00 00 0.00 : aaf: 00 : : 0000000000000ab0 : : struct ixgbe_hw *hw = &adapter->hw; : u32 vlnctrl; : int i; : : /* leave vlan tag stripping enabled for DCB */ : if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) 0.00 : ab0: f6 87 19 02 00 00 04 testb $0x4,0x219(%rdi) 0.00 : ab7: 0f 85 b3 00 00 00 jne b70 : return; : : switch (hw->mac.type) { 0.00 : abd: 8b 87 50 10 00 00 mov 0x1050(%rdi),%eax 0.00 : ac3: 83 f8 01 cmp $0x1,%eax 0.00 : ac6: 0f 84 ac 00 00 00 je b78 0.00 : acc: 0f 82 9e 00 00 00 jb b70 0.00 : ad2: 83 f8 03 cmp $0x3,%eax 0.00 : ad5: 0f 87 95 00 00 00 ja b70 : vlnctrl &= ~IXGBE_VLNCTRL_VME; : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : adb: 44 8b 87 28 02 00 00 mov 0x228(%rdi),%r8d 0.00 : ae2: 45 31 c9 xor %r9d,%r9d 0.00 : ae5: 49 89 fa mov %rdi,%r10 0.00 : ae8: 45 85 c0 test %r8d,%r8d 0.00 : aeb: 7f 56 jg b43 0.00 : aed: e9 be 00 00 00 jmpq bb0 0.00 : af2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : u8 reg_idx = adapter->rx_ring[i]->reg_idx; : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : af8: 40 0f b6 d6 movzbl %sil,%edx 0.00 : afc: 89 d0 mov %edx,%eax 0.00 : afe: c1 e0 06 shl $0x6,%eax 0.00 : b01: 05 28 10 00 00 add $0x1028,%eax 0.00 : b06: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : b08: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : b0c: 8b 08 mov (%rax),%ecx : vlnctrl &= ~IXGBE_RXDCTL_VME; 0.00 : b0e: 81 e1 ff ff ff bf and $0xbfffffff,%ecx : IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(reg_idx), vlnctrl); 0.00 : b14: 40 80 fe 3f cmp $0x3f,%sil 0.00 : b18: 4c 8b 87 80 0e 00 00 mov 0xe80(%rdi),%r8 0.00 : b1f: 77 7f ja ba0 0.00 : b21: c1 e2 06 shl $0x6,%edx 0.00 : b24: 8d 82 28 10 00 00 lea 0x1028(%rdx),%eax 0.00 : b2a: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : b2c: 49 8d 04 00 lea (%r8,%rax,1),%rax 0.00 : b30: 89 08 mov %ecx,(%rax) : vlnctrl &= ~IXGBE_VLNCTRL_VME; : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : b32: 41 83 c1 01 add $0x1,%r9d 0.00 : b36: 49 83 c2 08 add $0x8,%r10 0.00 : b3a: 44 39 8f 28 02 00 00 cmp %r9d,0x228(%rdi) 0.00 : b41: 7e 2d jle b70 : u8 reg_idx = adapter->rx_ring[i]->reg_idx; 0.00 : b43: 49 8b 82 d8 04 00 00 mov 0x4d8(%r10),%rax : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : b4a: 48 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%rcx : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { : u8 reg_idx = adapter->rx_ring[i]->reg_idx; 0.00 : b51: 0f b6 70 4f movzbl 0x4f(%rax),%esi : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : b55: 40 80 fe 3f cmp $0x3f,%sil 0.00 : b59: 76 9d jbe af8 0.00 : b5b: 40 0f b6 d6 movzbl %sil,%edx 0.00 : b5f: 89 d0 mov %edx,%eax 0.00 : b61: c1 e0 06 shl $0x6,%eax 0.00 : b64: 05 28 c0 00 00 add $0xc028,%eax 0.00 : b69: 48 98 cltq 0.00 : b6b: eb 9b jmp b08 0.00 : b6d: 0f 1f 00 nopl (%rax) 0.00 : b70: f3 c3 repz retq 0.00 : b72: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : b78: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : b7f: 48 05 88 50 00 00 add $0x5088,%rax 0.00 : b85: 8b 10 mov (%rax),%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : b87: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax : return; : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL); : vlnctrl &= ~IXGBE_VLNCTRL_VME; 0.00 : b8e: 81 e2 ff ff ff 7f and $0x7fffffff,%edx 0.00 : b94: 48 05 88 50 00 00 add $0x5088,%rax 0.00 : b9a: 89 10 mov %edx,(%rax) 0.00 : b9c: c3 retq 0.00 : b9d: 0f 1f 00 nopl (%rax) : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { : u8 reg_idx = adapter->rx_ring[i]->reg_idx; : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); : vlnctrl &= ~IXGBE_RXDCTL_VME; : IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(reg_idx), vlnctrl); 0.00 : ba0: c1 e2 06 shl $0x6,%edx 0.00 : ba3: 8d 82 28 c0 00 00 lea 0xc028(%rdx),%eax 0.00 : ba9: 48 98 cltq 0.00 : bab: e9 7c ff ff ff jmpq b2c 0.00 : bb0: c3 retq 0.00 : bb1: 66 66 66 66 66 66 2e data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : bb8: 0f 1f 84 00 00 00 00 0.00 : bbf: 00 : : 0000000000000bc0 : : { : struct ixgbe_hw *hw = &adapter->hw; : u32 vlnctrl; : int i; : : switch (hw->mac.type) { 0.00 : bc0: 8b 87 50 10 00 00 mov 0x1050(%rdi),%eax 0.00 : bc6: 83 f8 01 cmp $0x1,%eax 0.00 : bc9: 0f 84 b1 00 00 00 je c80 0.00 : bcf: 73 07 jae bd8 0.00 : bd1: f3 c3 repz retq 0.00 : bd3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : bd8: 83 f8 03 cmp $0x3,%eax 0.00 : bdb: 77 f4 ja bd1 : vlnctrl |= IXGBE_VLNCTRL_VME; : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : bdd: 44 8b 9f 28 02 00 00 mov 0x228(%rdi),%r11d 0.00 : be4: 45 31 c9 xor %r9d,%r9d 0.00 : be7: 49 89 fa mov %rdi,%r10 0.00 : bea: 45 85 db test %r11d,%r11d 0.00 : bed: 7f 54 jg c43 0.00 : bef: e9 b1 00 00 00 jmpq ca5 0.00 : bf4: 0f 1f 40 00 nopl 0x0(%rax) : u8 reg_idx = adapter->rx_ring[i]->reg_idx; : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : bf8: 40 0f b6 d6 movzbl %sil,%edx 0.00 : bfc: 89 d0 mov %edx,%eax 0.00 : bfe: c1 e0 06 shl $0x6,%eax 0.00 : c01: 05 28 10 00 00 add $0x1028,%eax 0.00 : c06: 48 98 cltq : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : c08: 48 8d 04 01 lea (%rcx,%rax,1),%rax 0.00 : c0c: 8b 08 mov (%rax),%ecx : vlnctrl |= IXGBE_RXDCTL_VME; 0.00 : c0e: 81 c9 00 00 00 40 or $0x40000000,%ecx : IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(reg_idx), vlnctrl); 0.00 : c14: 40 80 fe 3f cmp $0x3f,%sil 0.00 : c18: 4c 8b 87 80 0e 00 00 mov 0xe80(%rdi),%r8 0.00 : c1f: 77 4f ja c70 0.00 : c21: c1 e2 06 shl $0x6,%edx 0.00 : c24: 8d 82 28 10 00 00 lea 0x1028(%rdx),%eax 0.00 : c2a: 48 98 cltq : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : c2c: 49 8d 04 00 lea (%r8,%rax,1),%rax 0.00 : c30: 89 08 mov %ecx,(%rax) : vlnctrl |= IXGBE_VLNCTRL_VME; : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { 0.00 : c32: 41 83 c1 01 add $0x1,%r9d 0.00 : c36: 49 83 c2 08 add $0x8,%r10 0.00 : c3a: 44 39 8f 28 02 00 00 cmp %r9d,0x228(%rdi) 0.00 : c41: 7e 8e jle bd1 : u8 reg_idx = adapter->rx_ring[i]->reg_idx; 0.00 : c43: 49 8b 82 d8 04 00 00 mov 0x4d8(%r10),%rax : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : c4a: 48 8b 8f 80 0e 00 00 mov 0xe80(%rdi),%rcx : IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl); : break; : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : for (i = 0; i < adapter->num_rx_queues; i++) { : u8 reg_idx = adapter->rx_ring[i]->reg_idx; 0.00 : c51: 0f b6 70 4f movzbl 0x4f(%rax),%esi : vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(reg_idx)); 0.00 : c55: 40 80 fe 3f cmp $0x3f,%sil 0.00 : c59: 76 9d jbe bf8 0.00 : c5b: 40 0f b6 d6 movzbl %sil,%edx 0.00 : c5f: 89 d0 mov %edx,%eax 0.00 : c61: c1 e0 06 shl $0x6,%eax 0.00 : c64: 05 28 c0 00 00 add $0xc028,%eax 0.00 : c69: 48 98 cltq 0.00 : c6b: eb 9b jmp c08 0.00 : c6d: 0f 1f 00 nopl (%rax) : vlnctrl |= IXGBE_RXDCTL_VME; : IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(reg_idx), vlnctrl); 0.00 : c70: c1 e2 06 shl $0x6,%edx 0.00 : c73: 8d 82 28 c0 00 00 lea 0xc028(%rdx),%eax 0.00 : c79: 48 98 cltq 0.00 : c7b: eb af jmp c2c 0.00 : c7d: 0f 1f 00 nopl (%rax) : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : c80: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax 0.00 : c87: 48 05 88 50 00 00 add $0x5088,%rax 0.00 : c8d: 8b 10 mov (%rax),%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : c8f: 48 8b 87 80 0e 00 00 mov 0xe80(%rdi),%rax : int i; : : switch (hw->mac.type) { : case ixgbe_mac_82598EB: : vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL); : vlnctrl |= IXGBE_VLNCTRL_VME; 0.00 : c96: 81 ca 00 00 00 80 or $0x80000000,%edx 0.00 : c9c: 48 05 88 50 00 00 add $0x5088,%rax 0.00 : ca2: 89 10 mov %edx,(%rax) 0.00 : ca4: c3 retq 0.00 : ca5: c3 retq 0.00 : ca6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : cad: 00 00 00 : : 0000000000000cb0 : : static void ixgbe_vlan_mode(struct net_device *netdev, struct vlan_group *grp) : #else : void ixgbe_vlan_mode(struct net_device *netdev, u32 features) : #endif : { : struct ixgbe_adapter *adapter = netdev_priv(netdev); 0.00 : cb0: 48 81 c7 00 08 00 00 add $0x800,%rdi : #ifdef HAVE_VLAN_RX_REGISTER : bool enable = (grp || (adapter->flags & IXGBE_FLAG_DCB_ENABLED)); : #else : bool enable = !!(features & NETIF_F_HW_VLAN_RX); : #endif : if (enable) 0.00 : cb7: 81 e6 00 01 00 00 and $0x100,%esi 0.00 : cbd: 75 09 jne cc8 : /* enable VLAN tag insert/strip */ : ixgbe_vlan_stripping_enable(adapter); : else : /* disable VLAN tag insert/strip */ : ixgbe_vlan_stripping_disable(adapter); 0.00 : cbf: e9 00 00 00 00 jmpq cc4 0.00 : cc4: 0f 1f 40 00 nopl 0x0(%rax) : #else : bool enable = !!(features & NETIF_F_HW_VLAN_RX); : #endif : if (enable) : /* enable VLAN tag insert/strip */ : ixgbe_vlan_stripping_enable(adapter); 0.00 : cc8: e9 00 00 00 00 jmpq ccd 0.00 : ccd: 0f 1f 00 nopl (%rax) : : 0000000000000cd0 : : #ifdef CONFIG_PCI_IOV : struct ixgbe_adapter *adapter = hw->back; : #endif /* CONFIG_PCI_IOV */ : u8 *addr = *mc_addr_ptr; : : *vmdq = VMDQ_P(0); 0.00 : cd0: 48 8b 47 08 mov 0x8(%rdi),%rax : struct dev_mc_list *mc_ptr; : #endif : #ifdef CONFIG_PCI_IOV : struct ixgbe_adapter *adapter = hw->back; : #endif /* CONFIG_PCI_IOV */ : u8 *addr = *mc_addr_ptr; 0.00 : cd4: 48 8b 0e mov (%rsi),%rcx : : *vmdq = VMDQ_P(0); 0.00 : cd7: 0f b7 80 d6 0b 00 00 movzwl 0xbd6(%rax),%eax 0.00 : cde: 89 02 mov %eax,(%rdx) : : #ifdef NETDEV_HW_ADDR_T_MULTICAST : mc_ptr = container_of(addr, struct netdev_hw_addr, addr[0]); 0.00 : ce0: 48 8b 41 f0 mov -0x10(%rcx),%rax : if (mc_ptr->list.next) { 0.00 : ce4: 48 85 c0 test %rax,%rax 0.00 : ce7: 74 0f je cf8 : struct netdev_hw_addr *ha; : : ha = list_entry(mc_ptr->list.next, struct netdev_hw_addr, list); 0.00 : ce9: 48 83 c0 10 add $0x10,%rax 0.00 : ced: 48 89 06 mov %rax,(%rsi) : #endif : else : *mc_addr_ptr = NULL; : : return addr; : } 0.00 : cf0: 48 89 c8 mov %rcx,%rax 0.00 : cf3: c3 retq 0.00 : cf4: 0f 1f 40 00 nopl 0x0(%rax) : mc_ptr = container_of(addr, struct dev_mc_list, dmi_addr[0]); : if (mc_ptr->next) : *mc_addr_ptr = mc_ptr->next->dmi_addr; : #endif : else : *mc_addr_ptr = NULL; 0.00 : cf8: 48 c7 06 00 00 00 00 movq $0x0,(%rsi) : : return addr; : } 0.00 : cff: 48 89 c8 mov %rcx,%rax 0.00 : d02: c3 retq 0.00 : d03: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : d0a: 84 00 00 00 00 00 : : 0000000000000d10 : : return addr_count; : } : : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { 0.00 : d10: 41 54 push %r12 : struct ixgbe_hw *hw = &adapter->hw; 0.00 : d12: 4c 8d a7 80 0e 00 00 lea 0xe80(%rdi),%r12 : return addr_count; : } : : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { 0.00 : d19: 55 push %rbp 0.00 : d1a: 48 89 fd mov %rdi,%rbp 0.00 : d1d: 53 push %rbx : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : d1e: 8b 9f 78 12 00 00 mov 0x1278(%rdi),%ebx 0.00 : d24: 85 db test %ebx,%ebx 0.00 : d26: 74 56 je d7e 0.00 : d28: 31 db xor %ebx,%ebx 0.00 : d2a: 31 f6 xor %esi,%esi 0.00 : d2c: eb 22 jmp d50 0.00 : d2e: 66 90 xchg %ax,%ax : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_IN_USE) { : hw->mac.ops.set_rar(hw, i, adapter->mac_table[i].addr, 0.00 : d30: 0f b7 4a 06 movzwl 0x6(%rdx),%ecx : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : d34: 83 c3 01 add $0x1,%ebx : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_IN_USE) { : hw->mac.ops.set_rar(hw, i, adapter->mac_table[i].addr, 0.00 : d37: 41 b8 00 00 00 80 mov $0x80000000,%r8d 0.00 : d3d: 4c 89 e7 mov %r12,%rdi 0.00 : d40: ff 95 a0 0f 00 00 callq *0xfa0(%rbp) : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : d46: 39 9d 78 12 00 00 cmp %ebx,0x1278(%rbp) 0.00 : d4c: 89 de mov %ebx,%esi 0.00 : d4e: 76 2e jbe d7e : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_IN_USE) { 0.00 : d50: 48 63 c3 movslq %ebx,%rax 0.00 : d53: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : d57: 48 8d 14 00 lea (%rax,%rax,1),%rdx 0.00 : d5b: 48 03 95 a0 7c 00 00 add 0x7ca0(%rbp),%rdx 0.00 : d62: f6 42 08 04 testb $0x4,0x8(%rdx) 0.00 : d66: 75 c8 jne d30 : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : d68: 83 c3 01 add $0x1,%ebx : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_IN_USE) { : hw->mac.ops.set_rar(hw, i, adapter->mac_table[i].addr, : adapter->mac_table[i].queue, : IXGBE_RAH_AV); : } else { : hw->mac.ops.clear_rar(hw, i); 0.00 : d6b: 4c 89 e7 mov %r12,%rdi 0.00 : d6e: ff 95 b0 0f 00 00 callq *0xfb0(%rbp) : : void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : d74: 39 9d 78 12 00 00 cmp %ebx,0x1278(%rbp) 0.00 : d7a: 89 de mov %ebx,%esi 0.00 : d7c: 77 d2 ja d50 : IXGBE_RAH_AV); : } else { : hw->mac.ops.clear_rar(hw, i); : } : } : } 0.00 : d7e: 5b pop %rbx 0.00 : d7f: 5d pop %rbp 0.00 : d80: 41 5c pop %r12 0.00 : d82: c3 retq 0.00 : d83: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : d8a: 84 00 00 00 00 00 : : 0000000000000d90 : : : void ixgbe_sync_mac_table(struct ixgbe_adapter *adapter) : { 0.00 : d90: 41 55 push %r13 : struct ixgbe_hw *hw = &adapter->hw; 0.00 : d92: 4c 8d af 80 0e 00 00 lea 0xe80(%rdi),%r13 : } : } : } : : void ixgbe_sync_mac_table(struct ixgbe_adapter *adapter) : { 0.00 : d99: 41 54 push %r12 0.00 : d9b: 55 push %rbp 0.00 : d9c: 48 89 fd mov %rdi,%rbp 0.00 : d9f: 53 push %rbx 0.00 : da0: 48 83 ec 08 sub $0x8,%rsp : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : da4: 44 8b a7 78 12 00 00 mov 0x1278(%rdi),%r12d 0.00 : dab: 45 85 e4 test %r12d,%r12d 0.00 : dae: 74 70 je e20 0.00 : db0: 31 db xor %ebx,%ebx 0.00 : db2: 31 f6 xor %esi,%esi 0.00 : db4: eb 39 jmp def 0.00 : db6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : dbd: 00 00 00 : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_MODIFIED) { : if (adapter->mac_table[i].state & : IXGBE_MAC_STATE_IN_USE) { : hw->mac.ops.set_rar(hw, i, 0.00 : dc0: 0f b7 4a 06 movzwl 0x6(%rdx),%ecx 0.00 : dc4: 41 b8 00 00 00 80 mov $0x80000000,%r8d 0.00 : dca: 4c 89 ef mov %r13,%rdi 0.00 : dcd: ff 95 a0 0f 00 00 callq *0xfa0(%rbp) : adapter->mac_table[i].queue, : IXGBE_RAH_AV); : } else { : hw->mac.ops.clear_rar(hw, i); : } : adapter->mac_table[i].state &= 0.00 : dd3: 4c 89 e0 mov %r12,%rax 0.00 : dd6: 48 03 85 a0 7c 00 00 add 0x7ca0(%rbp),%rax 0.00 : ddd: 66 83 60 08 fd andw $0xfffd,0x8(%rax) : : void ixgbe_sync_mac_table(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : de2: 83 c3 01 add $0x1,%ebx 0.00 : de5: 39 9d 78 12 00 00 cmp %ebx,0x1278(%rbp) 0.00 : deb: 89 de mov %ebx,%esi 0.00 : ded: 76 31 jbe e20 : if (adapter->mac_table[i].state & IXGBE_MAC_STATE_MODIFIED) { 0.00 : def: 48 63 c3 movslq %ebx,%rax 0.00 : df2: 48 8b 95 a0 7c 00 00 mov 0x7ca0(%rbp),%rdx 0.00 : df9: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : dfd: 4c 8d 24 00 lea (%rax,%rax,1),%r12 0.00 : e01: 4c 01 e2 add %r12,%rdx 0.00 : e04: 0f b7 42 08 movzwl 0x8(%rdx),%eax 0.00 : e08: a8 02 test $0x2,%al 0.00 : e0a: 74 d6 je de2 : if (adapter->mac_table[i].state & 0.00 : e0c: a8 04 test $0x4,%al 0.00 : e0e: 75 b0 jne dc0 : hw->mac.ops.set_rar(hw, i, : adapter->mac_table[i].addr, : adapter->mac_table[i].queue, : IXGBE_RAH_AV); : } else { : hw->mac.ops.clear_rar(hw, i); 0.00 : e10: 4c 89 ef mov %r13,%rdi 0.00 : e13: ff 95 b0 0f 00 00 callq *0xfb0(%rbp) 0.00 : e19: eb b8 jmp dd3 0.00 : e1b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : adapter->mac_table[i].state &= : ~(IXGBE_MAC_STATE_MODIFIED); : } : } : } 0.00 : e20: 48 83 c4 08 add $0x8,%rsp 0.00 : e24: 5b pop %rbx 0.00 : e25: 5d pop %rbp 0.00 : e26: 41 5c pop %r12 0.00 : e28: 41 5d pop %r13 0.00 : e2a: c3 retq 0.00 : e2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : 0000000000000e30 : : int ixgbe_available_rars(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i, count = 0; : : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : e30: 44 8b 87 78 12 00 00 mov 0x1278(%rdi),%r8d 0.00 : e37: 31 c9 xor %ecx,%ecx 0.00 : e39: 45 85 c0 test %r8d,%r8d 0.00 : e3c: 74 2d je e6b 0.00 : e3e: 48 8b b7 a0 7c 00 00 mov 0x7ca0(%rdi),%rsi 0.00 : e45: 31 d2 xor %edx,%edx 0.00 : e47: 31 c9 xor %ecx,%ecx 0.00 : e49: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (adapter->mac_table[i].state == 0) 0.00 : e50: 48 63 c2 movslq %edx,%rax 0.00 : e53: 48 8d 04 80 lea (%rax,%rax,4),%rax 0.00 : e57: 48 01 c0 add %rax,%rax : count++; 0.00 : e5a: 66 83 7c 30 08 01 cmpw $0x1,0x8(%rax,%rsi,1) 0.00 : e60: 83 d1 00 adc $0x0,%ecx : int ixgbe_available_rars(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i, count = 0; : : for (i = 0; i < hw->mac.num_rar_entries; i++) { 0.00 : e63: 83 c2 01 add $0x1,%edx 0.00 : e66: 44 39 c2 cmp %r8d,%edx 0.00 : e69: 72 e5 jb e50 : if (adapter->mac_table[i].state == 0) : count++; : } : return count; : } 0.00 : e6b: 89 c8 mov %ecx,%eax 0.00 : e6d: c3 retq 0.00 : e6e: 66 90 xchg %ax,%ax : : 0000000000000e70 : : void ixgbe_clear_vf_stats_counters(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : e70: 8b 87 58 7c 00 00 mov 0x7c58(%rdi),%eax 0.00 : e76: 85 c0 test %eax,%eax 0.00 : e78: 0f 84 a0 01 00 00 je 101e 0.00 : e7e: 45 31 c0 xor %r8d,%r8d 0.00 : e81: 41 ba 00 83 00 00 mov $0x8300,%r10d 0.00 : e87: 41 b9 00 84 00 00 mov $0x8400,%r9d 0.00 : e8d: 0f 1f 00 nopl (%rax) : adapter->vfinfo[i].last_vfstats.gprc = 0.00 : e90: 49 63 c8 movslq %r8d,%rcx 0.00 : e93: 44 89 c6 mov %r8d,%esi 0.00 : e96: 48 8d 0c 49 lea (%rcx,%rcx,2),%rcx 0.00 : e9a: c1 e6 06 shl $0x6,%esi 0.00 : e9d: 48 63 f6 movslq %esi,%rsi 0.00 : ea0: 48 8d 0c c9 lea (%rcx,%rcx,8),%rcx : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : ea4: 48 8d 86 1c 10 00 00 lea 0x101c(%rsi),%rax 0.00 : eab: 48 03 87 80 0e 00 00 add 0xe80(%rdi),%rax 0.00 : eb2: 48 c1 e1 03 shl $0x3,%rcx 0.00 : eb6: 48 89 ca mov %rcx,%rdx 0.00 : eb9: 48 03 97 60 7c 00 00 add 0x7c60(%rdi),%rdx 0.00 : ec0: 8b 00 mov (%rax),%eax 0.00 : ec2: 89 c0 mov %eax,%eax 0.00 : ec4: 48 89 42 78 mov %rax,0x78(%rdx) : IXGBE_READ_REG(hw, IXGBE_PVFGPRC(i)); : adapter->vfinfo[i].saved_rst_vfstats.gprc += 0.00 : ec8: 48 89 c8 mov %rcx,%rax 0.00 : ecb: 48 03 87 60 7c 00 00 add 0x7c60(%rdi),%rax 0.00 : ed2: 48 8b 50 50 mov 0x50(%rax),%rdx 0.00 : ed6: 48 01 90 a0 00 00 00 add %rdx,0xa0(%rax) : adapter->vfinfo[i].vfstats.gprc; : adapter->vfinfo[i].vfstats.gprc = 0; : adapter->vfinfo[i].last_vfstats.gptc = 0.00 : edd: 48 89 ca mov %rcx,%rdx : for (i = 0; i < adapter->num_vfs; i++) { : adapter->vfinfo[i].last_vfstats.gprc = : IXGBE_READ_REG(hw, IXGBE_PVFGPRC(i)); : adapter->vfinfo[i].saved_rst_vfstats.gprc += : adapter->vfinfo[i].vfstats.gprc; : adapter->vfinfo[i].vfstats.gprc = 0; 0.00 : ee0: 48 8b 87 60 7c 00 00 mov 0x7c60(%rdi),%rax 0.00 : ee7: 48 c7 44 08 50 00 00 movq $0x0,0x50(%rax,%rcx,1) 0.00 : eee: 00 00 0.00 : ef0: 49 63 c2 movslq %r10d,%rax : adapter->vfinfo[i].last_vfstats.gptc = 0.00 : ef3: 48 03 97 60 7c 00 00 add 0x7c60(%rdi),%rdx 0.00 : efa: 48 03 87 80 0e 00 00 add 0xe80(%rdi),%rax 0.00 : f01: 8b 00 mov (%rax),%eax 0.00 : f03: 89 c0 mov %eax,%eax 0.00 : f05: 48 89 82 88 00 00 00 mov %rax,0x88(%rdx) : IXGBE_READ_REG(hw, IXGBE_PVFGPTC(i)); : adapter->vfinfo[i].saved_rst_vfstats.gptc += 0.00 : f0c: 48 89 c8 mov %rcx,%rax 0.00 : f0f: 48 03 87 60 7c 00 00 add 0x7c60(%rdi),%rax 0.00 : f16: 48 8b 50 60 mov 0x60(%rax),%rdx 0.00 : f1a: 48 01 90 b0 00 00 00 add %rdx,0xb0(%rax) : adapter->vfinfo[i].vfstats.gptc; : adapter->vfinfo[i].vfstats.gptc = 0; : adapter->vfinfo[i].last_vfstats.gorc = 0.00 : f21: 48 89 ca mov %rcx,%rdx : adapter->vfinfo[i].vfstats.gprc = 0; : adapter->vfinfo[i].last_vfstats.gptc = : IXGBE_READ_REG(hw, IXGBE_PVFGPTC(i)); : adapter->vfinfo[i].saved_rst_vfstats.gptc += : adapter->vfinfo[i].vfstats.gptc; : adapter->vfinfo[i].vfstats.gptc = 0; 0.00 : f24: 48 8b 87 60 7c 00 00 mov 0x7c60(%rdi),%rax 0.00 : f2b: 48 c7 44 08 60 00 00 movq $0x0,0x60(%rax,%rcx,1) 0.00 : f32: 00 00 0.00 : f34: 48 8d 86 20 10 00 00 lea 0x1020(%rsi),%rax : adapter->vfinfo[i].last_vfstats.gorc = 0.00 : f3b: 48 03 97 60 7c 00 00 add 0x7c60(%rdi),%rdx 0.00 : f42: 48 03 87 80 0e 00 00 add 0xe80(%rdi),%rax 0.00 : f49: 8b 00 mov (%rax),%eax 0.00 : f4b: 89 c0 mov %eax,%eax 0.00 : f4d: 48 89 82 80 00 00 00 mov %rax,0x80(%rdx) : IXGBE_READ_REG(hw, IXGBE_PVFGORC_LSB(i)); : adapter->vfinfo[i].saved_rst_vfstats.gorc += 0.00 : f54: 48 89 c8 mov %rcx,%rax 0.00 : f57: 48 03 87 60 7c 00 00 add 0x7c60(%rdi),%rax 0.00 : f5e: 48 8b 50 58 mov 0x58(%rax),%rdx 0.00 : f62: 48 01 90 a8 00 00 00 add %rdx,0xa8(%rax) : adapter->vfinfo[i].vfstats.gorc; : adapter->vfinfo[i].vfstats.gorc = 0; : adapter->vfinfo[i].last_vfstats.gotc = 0.00 : f69: 48 89 ca mov %rcx,%rdx : adapter->vfinfo[i].vfstats.gptc = 0; : adapter->vfinfo[i].last_vfstats.gorc = : IXGBE_READ_REG(hw, IXGBE_PVFGORC_LSB(i)); : adapter->vfinfo[i].saved_rst_vfstats.gorc += : adapter->vfinfo[i].vfstats.gorc; : adapter->vfinfo[i].vfstats.gorc = 0; 0.00 : f6c: 48 8b 87 60 7c 00 00 mov 0x7c60(%rdi),%rax 0.00 : f73: 48 c7 44 08 58 00 00 movq $0x0,0x58(%rax,%rcx,1) 0.00 : f7a: 00 00 0.00 : f7c: 49 63 c1 movslq %r9d,%rax : adapter->vfinfo[i].last_vfstats.gotc = 0.00 : f7f: 48 03 97 60 7c 00 00 add 0x7c60(%rdi),%rdx 0.00 : f86: 48 03 87 80 0e 00 00 add 0xe80(%rdi),%rax 0.00 : f8d: 8b 00 mov (%rax),%eax 0.00 : f8f: 89 c0 mov %eax,%eax 0.00 : f91: 48 81 c6 1c d0 00 00 add $0xd01c,%rsi 0.00 : f98: 48 89 82 90 00 00 00 mov %rax,0x90(%rdx) : IXGBE_READ_REG(hw, IXGBE_PVFGOTC_LSB(i)); : adapter->vfinfo[i].saved_rst_vfstats.gotc += 0.00 : f9f: 48 89 c8 mov %rcx,%rax 0.00 : fa2: 48 03 87 60 7c 00 00 add 0x7c60(%rdi),%rax 0.00 : fa9: 48 8b 50 68 mov 0x68(%rax),%rdx 0.00 : fad: 48 01 90 b8 00 00 00 add %rdx,0xb8(%rax) : adapter->vfinfo[i].vfstats.gotc; : adapter->vfinfo[i].vfstats.gotc = 0; : adapter->vfinfo[i].last_vfstats.mprc = 0.00 : fb4: 48 89 ca mov %rcx,%rdx : adapter->vfinfo[i].vfstats.gorc = 0; : adapter->vfinfo[i].last_vfstats.gotc = : IXGBE_READ_REG(hw, IXGBE_PVFGOTC_LSB(i)); : adapter->vfinfo[i].saved_rst_vfstats.gotc += : adapter->vfinfo[i].vfstats.gotc; : adapter->vfinfo[i].vfstats.gotc = 0; 0.00 : fb7: 48 8b 87 60 7c 00 00 mov 0x7c60(%rdi),%rax 0.00 : fbe: 48 c7 44 08 68 00 00 movq $0x0,0x68(%rax,%rcx,1) 0.00 : fc5: 00 00 : adapter->vfinfo[i].last_vfstats.mprc = 0.00 : fc7: 48 03 97 60 7c 00 00 add 0x7c60(%rdi),%rdx 0.00 : fce: 48 03 b7 80 0e 00 00 add 0xe80(%rdi),%rsi 0.00 : fd5: 8b 06 mov (%rsi),%eax 0.00 : fd7: 89 c0 mov %eax,%eax : void ixgbe_clear_vf_stats_counters(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : fd9: 41 83 c0 01 add $0x1,%r8d 0.00 : fdd: 41 83 c2 04 add $0x4,%r10d : adapter->vfinfo[i].last_vfstats.gotc = : IXGBE_READ_REG(hw, IXGBE_PVFGOTC_LSB(i)); : adapter->vfinfo[i].saved_rst_vfstats.gotc += : adapter->vfinfo[i].vfstats.gotc; : adapter->vfinfo[i].vfstats.gotc = 0; : adapter->vfinfo[i].last_vfstats.mprc = 0.00 : fe1: 48 89 82 98 00 00 00 mov %rax,0x98(%rdx) : IXGBE_READ_REG(hw, IXGBE_PVFMPRC(i)); : adapter->vfinfo[i].saved_rst_vfstats.mprc += 0.00 : fe8: 48 89 c8 mov %rcx,%rax 0.00 : feb: 48 03 87 60 7c 00 00 add 0x7c60(%rdi),%rax : void ixgbe_clear_vf_stats_counters(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : ff2: 41 83 c1 08 add $0x8,%r9d : adapter->vfinfo[i].saved_rst_vfstats.gotc += : adapter->vfinfo[i].vfstats.gotc; : adapter->vfinfo[i].vfstats.gotc = 0; : adapter->vfinfo[i].last_vfstats.mprc = : IXGBE_READ_REG(hw, IXGBE_PVFMPRC(i)); : adapter->vfinfo[i].saved_rst_vfstats.mprc += 0.00 : ff6: 48 8b 50 70 mov 0x70(%rax),%rdx 0.00 : ffa: 48 01 90 c0 00 00 00 add %rdx,0xc0(%rax) : adapter->vfinfo[i].vfstats.mprc; : adapter->vfinfo[i].vfstats.mprc = 0; 0.00 : 1001: 48 8b 87 60 7c 00 00 mov 0x7c60(%rdi),%rax 0.00 : 1008: 48 c7 44 08 70 00 00 movq $0x0,0x70(%rax,%rcx,1) 0.00 : 100f: 00 00 : void ixgbe_clear_vf_stats_counters(struct ixgbe_adapter *adapter) : { : struct ixgbe_hw *hw = &adapter->hw; : int i; : : for (i = 0; i < adapter->num_vfs; i++) { 0.00 : 1011: 44 39 87 58 7c 00 00 cmp %r8d,0x7c58(%rdi) 0.00 : 1018: 0f 87 72 fe ff ff ja e90 0.00 : 101e: f3 c3 repz retq : : 0000000000001020 : : mii->val_in); : } : } : : static int ixgbe_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) : { 0.00 : 1020: 53 push %rbx : #ifdef CONFIG_IXGBE_PTP : struct ixgbe_adapter *adapter = netdev_priv(netdev); : : #endif : switch (cmd) { 0.00 : 1021: 8d 82 b8 76 ff ff lea -0x8948(%rdx),%eax 0.00 : 1027: b9 a1 ff ff ff mov $0xffffffa1,%ecx : mii->val_in); : } : } : : static int ixgbe_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) : { 0.00 : 102c: 48 83 ec 10 sub $0x10,%rsp : #ifdef CONFIG_IXGBE_PTP : struct ixgbe_adapter *adapter = netdev_priv(netdev); : : #endif : switch (cmd) { 0.00 : 1030: 83 f8 01 cmp $0x1,%eax 0.00 : 1033: 77 42 ja 1077 : int cmd) : { : struct mii_ioctl_data *mii = (struct mii_ioctl_data *) &ifr->ifr_data; : int prtad, devad, ret; : : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; 0.00 : 1035: 0f b7 46 10 movzwl 0x10(%rsi),%eax : } : : static int ixgbe_mii_ioctl(struct net_device *netdev, struct ifreq *ifr, : int cmd) : { : struct mii_ioctl_data *mii = (struct mii_ioctl_data *) &ifr->ifr_data; 0.00 : 1039: 48 8d 5e 10 lea 0x10(%rsi),%rbx : int prtad, devad, ret; : : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; 0.00 : 103d: 41 89 c0 mov %eax,%r8d : devad = (mii->phy_id & MDIO_PHY_ID_DEVAD); 0.00 : 1040: 41 89 c1 mov %eax,%r9d : int cmd) : { : struct mii_ioctl_data *mii = (struct mii_ioctl_data *) &ifr->ifr_data; : int prtad, devad, ret; : : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; 0.00 : 1043: 41 81 e0 e0 03 00 00 and $0x3e0,%r8d : devad = (mii->phy_id & MDIO_PHY_ID_DEVAD); 0.00 : 104a: 41 83 e1 1f and $0x1f,%r9d : int cmd) : { : struct mii_ioctl_data *mii = (struct mii_ioctl_data *) &ifr->ifr_data; : int prtad, devad, ret; : : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; 0.00 : 104e: 41 c1 f8 05 sar $0x5,%r8d : devad = (mii->phy_id & MDIO_PHY_ID_DEVAD); : : if (cmd == SIOCGMIIREG) { 0.00 : 1052: 81 fa 48 89 00 00 cmp $0x8948,%edx 0.00 : 1058: 74 26 je 1080 : } : : static int ixgbe_mdio_write(struct net_device *netdev, int prtad, int devad, : u16 addr, u16 value) : { : struct ixgbe_adapter *adapter = netdev_priv(netdev); 0.00 : 105a: 48 8d 87 00 08 00 00 lea 0x800(%rdi),%rax : if (ret < 0) : return ret; : mii->val_out = ret; : return 0; : } else { : return ixgbe_mdio_write(netdev, prtad, devad, mii->reg_num, 0.00 : 1061: 0f b7 4b 04 movzwl 0x4(%rbx),%ecx 0.00 : 1065: 0f b7 73 02 movzwl 0x2(%rbx),%esi : u16 addr, u16 value) : { : struct ixgbe_adapter *adapter = netdev_priv(netdev); : struct ixgbe_hw *hw = &adapter->hw; : : if (prtad != hw->phy.addr) 0.00 : 1069: 44 3b 80 9c 13 00 00 cmp 0x139c(%rax),%r8d 0.00 : 1070: 74 5e je 10d0 : return -EINVAL; : return hw->phy.ops.write_reg(hw, addr, devad, value); 0.00 : 1072: b9 ea ff ff ff mov $0xffffffea,%ecx : case SIOCSMIIREG: : return ixgbe_mii_ioctl(netdev, ifr, cmd); : default: : return -EOPNOTSUPP; : } : } 0.00 : 1077: 89 c8 mov %ecx,%eax 0.00 : 1079: 48 83 c4 10 add $0x10,%rsp 0.00 : 107d: 5b pop %rbx 0.00 : 107e: c3 retq 0.00 : 107f: 90 nop : #endif /* (HAVE_NETDEV_STORAGE_ADDRESS) && defined(NETDEV_HW_ADDR_T_SAN) */ : : static int ixgbe_mdio_read(struct net_device *netdev, int prtad, int devad, : u16 addr) : { : struct ixgbe_adapter *adapter = netdev_priv(netdev); 0.00 : 1080: 48 8d 87 00 08 00 00 lea 0x800(%rdi),%rax : : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; : devad = (mii->phy_id & MDIO_PHY_ID_DEVAD); : : if (cmd == SIOCGMIIREG) { : ret = ixgbe_mdio_read(netdev, prtad, devad, mii->reg_num); 0.00 : 1087: 0f b7 73 02 movzwl 0x2(%rbx),%esi : struct ixgbe_adapter *adapter = netdev_priv(netdev); : struct ixgbe_hw *hw = &adapter->hw; : u16 value; : int rc; : : if (prtad != hw->phy.addr) 0.00 : 108b: 44 3b 80 9c 13 00 00 cmp 0x139c(%rax),%r8d 0.00 : 1092: 75 de jne 1072 : return -EINVAL; : rc = hw->phy.ops.read_reg(hw, addr, devad, &value); 0.00 : 1094: 48 8d 4c 24 0e lea 0xe(%rsp),%rcx 0.00 : 1099: 48 81 c7 80 16 00 00 add $0x1680,%rdi 0.00 : 10a0: 0f b7 f6 movzwl %si,%esi 0.00 : 10a3: 44 89 ca mov %r9d,%edx 0.00 : 10a6: ff 90 38 13 00 00 callq *0x1338(%rax) : if (!rc) 0.00 : 10ac: 83 f8 00 cmp $0x0,%eax : u16 value; : int rc; : : if (prtad != hw->phy.addr) : return -EINVAL; : rc = hw->phy.ops.read_reg(hw, addr, devad, &value); 0.00 : 10af: 89 c1 mov %eax,%ecx : if (!rc) 0.00 : 10b1: 75 3d jne 10f0 : rc = value; 0.00 : 10b3: 0f b7 4c 24 0e movzwl 0xe(%rsp),%ecx : : if (cmd == SIOCGMIIREG) { : ret = ixgbe_mdio_read(netdev, prtad, devad, mii->reg_num); : if (ret < 0) : return ret; : mii->val_out = ret; 0.00 : 10b8: 66 89 4b 06 mov %cx,0x6(%rbx) 0.00 : 10bc: 31 c9 xor %ecx,%ecx : case SIOCSMIIREG: : return ixgbe_mii_ioctl(netdev, ifr, cmd); : default: : return -EOPNOTSUPP; : } : } 0.00 : 10be: 48 83 c4 10 add $0x10,%rsp 0.00 : 10c2: 89 c8 mov %ecx,%eax 0.00 : 10c4: 5b pop %rbx 0.00 : 10c5: c3 retq 0.00 : 10c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 10cd: 00 00 00 : struct ixgbe_adapter *adapter = netdev_priv(netdev); : struct ixgbe_hw *hw = &adapter->hw; : : if (prtad != hw->phy.addr) : return -EINVAL; : return hw->phy.ops.write_reg(hw, addr, devad, value); 0.00 : 10d0: 0f b7 c9 movzwl %cx,%ecx 0.00 : 10d3: 0f b7 f6 movzwl %si,%esi 0.00 : 10d6: 48 81 c7 80 16 00 00 add $0x1680,%rdi 0.00 : 10dd: 44 89 ca mov %r9d,%edx 0.00 : 10e0: ff 90 40 13 00 00 callq *0x1340(%rax) 0.00 : 10e6: 89 c1 mov %eax,%ecx 0.00 : 10e8: eb 8d jmp 1077 0.00 : 10ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : prtad = (mii->phy_id & MDIO_PHY_ID_PRTAD) >> 5; : devad = (mii->phy_id & MDIO_PHY_ID_DEVAD); : : if (cmd == SIOCGMIIREG) { : ret = ixgbe_mdio_read(netdev, prtad, devad, mii->reg_num); : if (ret < 0) 0.00 : 10f0: 7d c6 jge 10b8 0.00 : 10f2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 10f8: e9 7a ff ff ff jmpq 1077 0.00 : 10fd: 0f 1f 00 nopl (%rax) : : 0000000000001100 : : struct ixgbe_adapter *adapter = netdev_priv(netdev); : #endif : : #ifdef CONFIG_DCB : if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) : features |= NETIF_F_HW_VLAN_RX; 0.00 : 1100: 89 f0 mov %esi,%eax 0.00 : 1102: 80 cc 01 or $0x1,%ah 0.00 : 1105: f6 87 19 0a 00 00 04 testb $0x4,0xa19(%rdi) 0.00 : 110c: 0f 45 f0 cmovne %eax,%esi : #endif : : /* If Rx checksum is disabled, then RSC/LRO should also be disabled */ : if (!(features & NETIF_F_RXCSUM)) : features &= ~NETIF_F_LRO; 0.00 : 110f: 89 f0 mov %esi,%eax 0.00 : 1111: 80 e4 7f and $0x7f,%ah 0.00 : 1114: f7 c6 00 00 00 20 test $0x20000000,%esi 0.00 : 111a: 0f 44 f0 cmove %eax,%esi : if (!(adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE)) : features &= ~NETIF_F_LRO; : : #endif : return features; : } 0.00 : 111d: 89 f0 mov %esi,%eax 0.00 : 111f: c3 retq : : 0000000000001120 : : { : int is_wol_supported = 0; : struct ixgbe_hw *hw = &adapter->hw; : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; : : switch (device_id) { 0.00 : 1120: 66 81 fe f8 10 cmp $0x10f8,%si : int ixgbe_wol_supported(struct ixgbe_adapter *adapter, u16 device_id, : u16 subdevice_id) : { : int is_wol_supported = 0; : struct ixgbe_hw *hw = &adapter->hw; : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; 0.00 : 1125: 0f b7 8f 3e 7c 00 00 movzwl 0x7c3e(%rdi),%ecx : : switch (device_id) { 0.00 : 112c: 74 7a je 11a8 0.00 : 112e: 76 38 jbe 1168 0.00 : 1130: 66 81 fe fb 10 cmp $0x10fb,%si 0.00 : 1135: 74 41 je 1178 0.00 : 1137: 66 81 fe 28 15 cmp $0x1528,%si 0.00 : 113c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 1140: 75 2d jne 116f : int ixgbe_wol_supported(struct ixgbe_adapter *adapter, u16 device_id, : u16 subdevice_id) : { : int is_wol_supported = 0; : struct ixgbe_hw *hw = &adapter->hw; : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; 0.00 : 1142: 89 c8 mov %ecx,%eax 0.00 : 1144: 83 e0 0c and $0xc,%eax : case IXGBE_DEV_ID_82599_KX4: : is_wol_supported = 1; : break; : case IXGBE_DEV_ID_X540T: : /* check eeprom to see if enabled wol */ : if ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0_1) || 0.00 : 1147: 66 83 f8 04 cmp $0x4,%ax 0.00 : 114b: 74 4b je 1198 0.00 : 114d: 66 83 f8 08 cmp $0x8,%ax 0.00 : 1151: 75 1c jne 116f 0.00 : 1153: 31 c0 xor %eax,%eax 0.00 : 1155: 66 83 bf 24 14 00 00 cmpw $0x0,0x1424(%rdi) 0.00 : 115c: 00 0.00 : 115d: 0f 94 c0 sete %al 0.00 : 1160: c3 retq 0.00 : 1161: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : { : int is_wol_supported = 0; : struct ixgbe_hw *hw = &adapter->hw; : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; : : switch (device_id) { 0.00 : 1168: 66 81 fe f7 10 cmp $0x10f7,%si 0.00 : 116d: 74 29 je 1198 : case IXGBE_DEV_ID_82599_KX4: : is_wol_supported = 1; : break; : case IXGBE_DEV_ID_X540T: : /* check eeprom to see if enabled wol */ : if ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0_1) || 0.00 : 116f: 31 c0 xor %eax,%eax 0.00 : 1171: c3 retq 0.00 : 1172: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; : : switch (device_id) { : case IXGBE_DEV_ID_82599_SFP: : /* Only these subdevices could supports WOL */ : switch (subdevice_id) { 0.00 : 1178: 66 81 fa a9 11 cmp $0x11a9,%dx 0.00 : 117d: 0f 1f 00 nopl (%rax) 0.00 : 1180: 74 16 je 1198 0.00 : 1182: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1188: 77 2e ja 11b8 0.00 : 118a: 66 81 fa 70 04 cmp $0x470,%dx 0.00 : 118f: 90 nop 0.00 : 1190: 75 dd jne 116f 0.00 : 1192: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : case IXGBE_DEV_ID_82599_KX4: : is_wol_supported = 1; : break; : case IXGBE_DEV_ID_X540T: : /* check eeprom to see if enabled wol */ : if ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0_1) || 0.00 : 1198: b8 01 00 00 00 mov $0x1,%eax 0.00 : 119d: 0f 1f 00 nopl (%rax) : } : break; : } : : return is_wol_supported; : } 0.00 : 11a0: c3 retq 0.00 : 11a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* Only these subdevices could supports WOL */ : switch (subdevice_id) { : case IXGBE_SUBDEV_ID_82599_560FLR: : /* only support first port */ : if (hw->bus.func != 0) : break; 0.00 : 11a8: 31 c0 xor %eax,%eax 0.00 : 11aa: 66 83 fa 0c cmp $0xc,%dx 0.00 : 11ae: 0f 95 c0 setne %al 0.00 : 11b1: c3 retq 0.00 : 11b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : u16 wol_cap = adapter->eeprom_cap & IXGBE_DEVICE_CAPS_WOL_MASK; : : switch (device_id) { : case IXGBE_DEV_ID_82599_SFP: : /* Only these subdevices could supports WOL */ : switch (subdevice_id) { 0.00 : 11b8: 66 81 fa d0 17 cmp $0x17d0,%dx 0.00 : 11bd: 0f 1f 00 nopl (%rax) 0.00 : 11c0: 74 91 je 1153 0.00 : 11c2: 66 81 fa 72 1f cmp $0x1f72,%dx 0.00 : 11c7: 75 a6 jne 116f 0.00 : 11c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 11d0: eb c6 jmp 1198 0.00 : 11d2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11d9: 1f 84 00 00 00 00 00 : : 00000000000011e0 : 0.00 : 11e0: 48 8b 87 10 02 00 00 mov 0x210(%rdi),%rax : : #define DEFAULT_DEBUG_LEVEL_SHIFT 3 : : static void ixgbe_service_event_schedule(struct ixgbe_adapter *adapter) : { : if (!test_bit(__IXGBE_DOWN, &adapter->state) && 0.00 : 11e7: 48 8d 97 10 02 00 00 lea 0x210(%rdi),%rdx 0.00 : 11ee: a8 04 test $0x4,%al 0.00 : 11f0: 75 0b jne 11fd : */ : static inline int test_and_set_bit(int nr, volatile unsigned long *addr) : { : int oldbit; : : asm volatile(LOCK_PREFIX "bts %2,%1\n\t" 0.00 : 11f2: f0 0f ba 2a 03 lock btsl $0x3,(%rdx) 0.00 : 11f7: 19 c0 sbb %eax,%eax 0.00 : 11f9: 85 c0 test %eax,%eax 0.00 : 11fb: 74 03 je 1200 0.00 : 11fd: f3 c3 repz retq 0.00 : 11ff: 90 nop : !test_and_set_bit(__IXGBE_SERVICE_SCHED, &adapter->state)) : schedule_work(&adapter->service_task); 0.00 : 1200: 48 81 c7 78 1b 00 00 add $0x1b78,%rdi 0.00 : 1207: e9 00 00 00 00 jmpq 120c 0.00 : 120c: 0f 1f 40 00 nopl 0x0(%rax) : : 0000000000001210 : : * @pdev: Pointer to PCI device : * : * Restart the card from scratch, as if from a cold-boot. : */ : static pci_ers_result_t ixgbe_io_slot_reset(struct pci_dev *pdev) : { 0.00 : 1210: 48 83 ec 18 sub $0x18,%rsp 0.00 : 1214: 48 89 6c 24 08 mov %rbp,0x8(%rsp) 0.00 : 1219: 48 89 fd mov %rdi,%rbp : * driver-specific data. They are really just a wrapper around : * the generic device structure functions of these calls. : */ : static inline void *pci_get_drvdata(struct pci_dev *pdev) : { : return dev_get_drvdata(&pdev->dev); 0.00 : 121c: 48 8d bf 90 00 00 00 lea 0x90(%rdi),%rdi 0.00 : 1223: 4c 89 64 24 10 mov %r12,0x10(%rsp) 0.00 : 1228: 48 89 1c 24 mov %rbx,(%rsp) 0.00 : 122c: e8 00 00 00 00 callq 1231 : struct ixgbe_adapter *adapter = pci_get_drvdata(pdev); : pci_ers_result_t result; : : if (pci_enable_device_mem(pdev)) { 0.00 : 1231: 48 89 ef mov %rbp,%rdi 0.00 : 1234: 49 89 c4 mov %rax,%r12 0.00 : 1237: e8 00 00 00 00 callq 123c 0.00 : 123c: 85 c0 test %eax,%eax 0.00 : 123e: 74 50 je 1290 : e_err(probe, "Cannot re-enable PCI device after reset.\n"); 0.00 : 1240: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : 1247: 00 02 0.00 : 1249: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 124e: 75 20 jne 1270 : : IXGBE_WRITE_REG(&adapter->hw, IXGBE_WUS, ~0); : result = PCI_ERS_RESULT_RECOVERED; : } : : pci_cleanup_aer_uncorrect_error_status(pdev); 0.00 : 1250: 48 89 ef mov %rbp,%rdi 0.00 : 1253: e8 00 00 00 00 callq 1258 : : return result; : } 0.00 : 1258: 89 d8 mov %ebx,%eax 0.00 : 125a: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 125f: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 1263: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 1268: 48 83 c4 18 add $0x18,%rsp 0.00 : 126c: c3 retq 0.00 : 126d: 0f 1f 00 nopl (%rax) : { : struct ixgbe_adapter *adapter = pci_get_drvdata(pdev); : pci_ers_result_t result; : : if (pci_enable_device_mem(pdev)) { : e_err(probe, "Cannot re-enable PCI device after reset.\n"); 0.00 : 1270: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 1277: 00 0.00 : 1278: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 127f: 31 c0 xor %eax,%eax 0.00 : 1281: bb 04 00 00 00 mov $0x4,%ebx 0.00 : 1286: e8 00 00 00 00 callq 128b 0.00 : 128b: eb c3 jmp 1250 0.00 : 128d: 0f 1f 00 nopl (%rax) : result = PCI_ERS_RESULT_DISCONNECT; : } else { : pci_set_master(pdev); 0.00 : 1290: 48 89 ef mov %rbp,%rdi 0.00 : 1293: e8 00 00 00 00 callq 1298 : pci_restore_state(pdev); 0.00 : 1298: 48 89 ef mov %rbp,%rdi 0.00 : 129b: e8 00 00 00 00 callq 12a0 : /* : * After second error pci->state_saved is false, this : * resets it so EEH doesn't break. : */ : pci_save_state(pdev); 0.00 : 12a0: 48 89 ef mov %rbp,%rdi 0.00 : 12a3: e8 00 00 00 00 callq 12a8 : : pci_wake_from_d3(pdev, false); 0.00 : 12a8: 31 f6 xor %esi,%esi 0.00 : 12aa: 48 89 ef mov %rbp,%rdi 0.00 : 12ad: e8 00 00 00 00 callq 12b2 : : adapter->flags2 |= IXGBE_FLAG2_RESET_REQUESTED; 0.00 : 12b2: 41 81 8c 24 1c 02 00 orl $0x80,0x21c(%r12) 0.00 : 12b9: 00 80 00 00 00 : ixgbe_service_event_schedule(adapter); 0.00 : 12be: 4c 89 e7 mov %r12,%rdi 0.00 : 12c1: e8 1a ff ff ff callq 11e0 : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 12c6: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : 12cd: 00 0.00 : 12ce: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 12d3: 48 05 10 58 00 00 add $0x5810,%rax 0.00 : 12d9: 89 10 mov %edx,(%rax) 0.00 : 12db: bb 05 00 00 00 mov $0x5,%ebx 0.00 : 12e0: e9 6b ff ff ff jmpq 1250 0.00 : 12e5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 12ec: 00 00 00 00 : : Disassembly of section .devinit.text: : : 0000000000000367 : : * The OS initialization, configuring of the adapter private structure, : * and a hardware reset occur. : **/ : static int __devinit ixgbe_probe(struct pci_dev *pdev, : const struct pci_device_id *ent) : { 0.00 : 367: 41 57 push %r15 0.00 : 369: 41 56 push %r14 0.00 : 36b: 41 55 push %r13 0.00 : 36d: 49 89 fd mov %rdi,%r13 0.00 : 370: 41 54 push %r12 0.00 : 372: 55 push %rbp 0.00 : 373: 53 push %rbx 0.00 : 374: 48 83 ec 58 sub $0x58,%rsp : u16 build, major, patch; : char *info_string, *i_s_var; : u8 part_str[IXGBE_PBANUM_LENGTH]; : enum ixgbe_mac_type mac_type = ixgbe_mac_unknown; : #ifdef HAVE_TX_MQ : unsigned int indices = num_possible_cpus(); 0.00 : 378: 4c 8b 25 00 00 00 00 mov 0x0(%rip),%r12 # 37f 0.00 : 37f: 4c 89 e7 mov %r12,%rdi 0.00 : 382: e8 00 00 00 00 callq 387 : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : u16 device_caps; : #endif : : err = pci_enable_device_mem(pdev); 0.00 : 387: 4c 89 ef mov %r13,%rdi : u16 build, major, patch; : char *info_string, *i_s_var; : u8 part_str[IXGBE_PBANUM_LENGTH]; : enum ixgbe_mac_type mac_type = ixgbe_mac_unknown; : #ifdef HAVE_TX_MQ : unsigned int indices = num_possible_cpus(); 0.00 : 38a: 41 89 c6 mov %eax,%r14d : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : u16 device_caps; : #endif : : err = pci_enable_device_mem(pdev); 0.00 : 38d: e8 00 00 00 00 callq 392 : if (err) 0.00 : 392: 85 c0 test %eax,%eax : #endif /* HAVE_TX_MQ */ : #ifdef IXGBE_FCOE : u16 device_caps; : #endif : : err = pci_enable_device_mem(pdev); 0.00 : 394: 89 c5 mov %eax,%ebp : if (err) 0.00 : 396: 74 11 je 3a9 : pci_select_bars(pdev, IORESOURCE_MEM)); : err_pci_reg: : err_dma: : pci_disable_device(pdev); : return err; : } 0.00 : 398: 48 83 c4 58 add $0x58,%rsp 0.00 : 39c: 89 e8 mov %ebp,%eax 0.00 : 39e: 5b pop %rbx 0.00 : 39f: 5d pop %rbp 0.00 : 3a0: 41 5c pop %r12 0.00 : 3a2: 41 5d pop %r13 0.00 : 3a4: 41 5e pop %r14 0.00 : 3a6: 41 5f pop %r15 0.00 : 3a8: c3 retq : : err = pci_enable_device_mem(pdev); : if (err) : return err; : : if (!dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64)) && 0.00 : 3a9: 4d 8d bd 90 00 00 00 lea 0x90(%r13),%r15 0.00 : 3b0: 48 c7 c6 ff ff ff ff mov $0xffffffffffffffff,%rsi 0.00 : 3b7: 4c 89 ff mov %r15,%rdi 0.00 : 3ba: e8 00 00 00 00 callq 3bf 0.00 : 3bf: 85 c0 test %eax,%eax 0.00 : 3c1: 75 6a jne 42d : #ifdef ARCH_HAS_DMA_SET_COHERENT_MASK : int dma_set_coherent_mask(struct device *dev, u64 mask); : #else : static inline int dma_set_coherent_mask(struct device *dev, u64 mask) : { : if (!dma_supported(dev, mask)) 0.00 : 3c3: 48 c7 c6 ff ff ff ff mov $0xffffffffffffffff,%rsi 0.00 : 3ca: 4c 89 ff mov %r15,%rdi 0.00 : 3cd: e8 00 00 00 00 callq 3d2 0.00 : 3d2: 85 c0 test %eax,%eax 0.00 : 3d4: 74 57 je 42d : return -EIO; : dev->coherent_dma_mask = mask; 0.00 : 3d6: 49 c7 85 60 02 00 00 movq $0xffffffffffffffff,0x260(%r13) 0.00 : 3dd: ff ff ff ff 0.00 : 3e1: c7 44 24 24 01 00 00 movl $0x1,0x24(%rsp) 0.00 : 3e8: 00 : } : } : pci_using_dac = 0; : } : : err = pci_request_selected_regions(pdev, pci_select_bars(pdev, 0.00 : 3e9: be 00 02 00 00 mov $0x200,%esi 0.00 : 3ee: 4c 89 ef mov %r13,%rdi 0.00 : 3f1: e8 00 00 00 00 callq 3f6 0.00 : 3f6: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 3fd: 89 c6 mov %eax,%esi 0.00 : 3ff: 4c 89 ef mov %r13,%rdi 0.00 : 402: e8 00 00 00 00 callq 407 : IORESOURCE_MEM), ixgbe_driver_name); : if (err) { 0.00 : 407: 85 c0 test %eax,%eax : } : } : pci_using_dac = 0; : } : : err = pci_request_selected_regions(pdev, pci_select_bars(pdev, 0.00 : 409: 89 c5 mov %eax,%ebp : IORESOURCE_MEM), ixgbe_driver_name); : if (err) { 0.00 : 40b: 74 5c je 469 : dev_err(pci_dev_to_dev(pdev), 0.00 : 40d: 89 c2 mov %eax,%edx 0.00 : 40f: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 416: 4c 89 ff mov %r15,%rdi 0.00 : 419: 31 c0 xor %eax,%eax 0.00 : 41b: e8 00 00 00 00 callq 420 : err_alloc_etherdev: : pci_release_selected_regions(pdev, : pci_select_bars(pdev, IORESOURCE_MEM)); : err_pci_reg: : err_dma: : pci_disable_device(pdev); 0.00 : 420: 4c 89 ef mov %r13,%rdi 0.00 : 423: e8 00 00 00 00 callq 428 : return err; : } 0.00 : 428: e9 6b ff ff ff jmpq 398 : : if (!dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64)) && : !dma_set_coherent_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64))) { : pci_using_dac = 1; : } else { : err = dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(32)); 0.00 : 42d: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 432: 4c 89 ff mov %r15,%rdi 0.00 : 435: e8 00 00 00 00 callq 43a : if (err) { 0.00 : 43a: 85 c0 test %eax,%eax : err = dma_set_coherent_mask(pci_dev_to_dev(pdev), : DMA_BIT_MASK(32)); : if (err) { : dev_err(pci_dev_to_dev(pdev), "No usable DMA " : "configuration, aborting\n"); : goto err_dma; 0.00 : 43c: c7 44 24 24 00 00 00 movl $0x0,0x24(%rsp) 0.00 : 443: 00 : if (!dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64)) && : !dma_set_coherent_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64))) { : pci_using_dac = 1; : } else { : err = dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(32)); : if (err) { 0.00 : 444: 74 a3 je 3e9 : #ifdef ARCH_HAS_DMA_SET_COHERENT_MASK : int dma_set_coherent_mask(struct device *dev, u64 mask); : #else : static inline int dma_set_coherent_mask(struct device *dev, u64 mask) : { : if (!dma_supported(dev, mask)) 0.00 : 446: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 44b: 4c 89 ff mov %r15,%rdi 0.00 : 44e: e8 00 00 00 00 callq 453 0.00 : 453: 85 c0 test %eax,%eax 0.00 : 455: 0f 84 ae 01 00 00 je 609 : return -EIO; : dev->coherent_dma_mask = mask; 0.00 : 45b: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 460: 49 89 95 60 02 00 00 mov %rdx,0x260(%r13) 0.00 : 467: eb 80 jmp 3e9 : /* : * The mac_type is needed before we have the adapter is set up : * so rather than maintain two devID -> MAC tables we dummy up : * an ixgbe_hw stuct and use ixgbe_set_mac_type. : */ : hw = vmalloc(sizeof(struct ixgbe_hw)); 0.00 : 469: bf 28 06 00 00 mov $0x628,%edi 0.00 : 46e: e8 00 00 00 00 callq 473 : if (!hw) { 0.00 : 473: 48 85 c0 test %rax,%rax : /* : * The mac_type is needed before we have the adapter is set up : * so rather than maintain two devID -> MAC tables we dummy up : * an ixgbe_hw stuct and use ixgbe_set_mac_type. : */ : hw = vmalloc(sizeof(struct ixgbe_hw)); 0.00 : 476: 48 89 c5 mov %rax,%rbp : if (!hw) { 0.00 : 479: 0f 84 77 01 00 00 je 5f6 : pr_info("Unable to allocate memory for early mac " : "check\n"); : } else { : hw->vendor_id = pdev->vendor; 0.00 : 47f: 41 0f b7 45 3c movzwl 0x3c(%r13),%eax : hw->device_id = pdev->device; : ixgbe_set_mac_type(hw); 0.00 : 484: 48 89 ef mov %rbp,%rdi : hw = vmalloc(sizeof(struct ixgbe_hw)); : if (!hw) { : pr_info("Unable to allocate memory for early mac " : "check\n"); : } else { : hw->vendor_id = pdev->vendor; 0.00 : 487: 66 89 85 12 06 00 00 mov %ax,0x612(%rbp) : hw->device_id = pdev->device; 0.00 : 48e: 41 0f b7 45 3e movzwl 0x3e(%r13),%eax 0.00 : 493: 66 89 85 10 06 00 00 mov %ax,0x610(%rbp) : ixgbe_set_mac_type(hw); 0.00 : 49a: e8 00 00 00 00 callq 49f : mac_type = hw->mac.type; 0.00 : 49f: 8b 9d d0 01 00 00 mov 0x1d0(%rbp),%ebx : vfree(hw); 0.00 : 4a5: 48 89 ef mov %rbp,%rdi 0.00 : 4a8: e8 00 00 00 00 callq 4ad : * port to which the 82598 is connected to prevent duplicate : * completions caused by LOs. We need the mac type so that we only : * do this on 82598 devices, ixgbe_set_mac_type does this for us if : * we set it's device ID. : */ : if (mac_type == ixgbe_mac_82598EB) 0.00 : 4ad: 83 eb 01 sub $0x1,%ebx 0.00 : 4b0: 0f 84 f6 00 00 00 je 5ac : pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S); : : pci_enable_pcie_error_reporting(pdev); 0.00 : 4b6: 4c 89 ef mov %r13,%rdi : : pci_set_master(pdev); : : #ifdef HAVE_TX_MQ : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; 0.00 : 4b9: 42 8d 1c f5 00 00 00 lea 0x0(,%r14,8),%ebx 100.00 : 4c0: 00 : * we set it's device ID. : */ : if (mac_type == ixgbe_mac_82598EB) : pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S); : : pci_enable_pcie_error_reporting(pdev); 0.00 : 4c1: e8 00 00 00 00 callq 4c6 : : pci_set_master(pdev); 0.00 : 4c6: 4c 89 ef mov %r13,%rdi 0.00 : 4c9: e8 00 00 00 00 callq 4ce : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; : #endif /* CONFIG_DCB */ : : #ifdef IXGBE_FCOE : indices += min_t(unsigned int, num_possible_cpus(), 0.00 : 4ce: 4c 89 e7 mov %r12,%rdi 0.00 : 4d1: e8 00 00 00 00 callq 4d6 0.00 : 4d6: ba 08 00 00 00 mov $0x8,%edx 0.00 : 4db: 83 f8 08 cmp $0x8,%eax : indices = min_t(unsigned int, indices, IXGBE_MAX_DCB_INDICES * 4); : #else : indices = min_t(unsigned int, indices, IXGBE_MAX_RSS_INDICES); : #endif : else : indices = min_t(unsigned int, indices, IXGBE_MAX_FDIR_INDICES); 0.00 : 4de: be 40 00 00 00 mov $0x40,%esi : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; : #endif /* CONFIG_DCB */ : : #ifdef IXGBE_FCOE : indices += min_t(unsigned int, num_possible_cpus(), 0.00 : 4e3: 0f 46 d0 cmovbe %eax,%edx 0.00 : 4e6: 01 da add %ebx,%edx : indices = min_t(unsigned int, indices, IXGBE_MAX_DCB_INDICES * 4); : #else : indices = min_t(unsigned int, indices, IXGBE_MAX_RSS_INDICES); : #endif : else : indices = min_t(unsigned int, indices, IXGBE_MAX_FDIR_INDICES); 0.00 : 4e8: 83 fa 40 cmp $0x40,%edx 0.00 : 4eb: 0f 46 f2 cmovbe %edx,%esi : : netdev = alloc_etherdev_mq(sizeof(struct ixgbe_adapter), indices); 0.00 : 4ee: 89 f2 mov %esi,%edx 0.00 : 4f0: bf 00 7d 00 00 mov $0x7d00,%edi : #else /* HAVE_TX_MQ */ : netdev = alloc_etherdev(sizeof(struct ixgbe_adapter)); : #endif /* HAVE_TX_MQ */ : if (!netdev) { 0.00 : 4f5: bd f4 ff ff ff mov $0xfffffff4,%ebp : indices = min_t(unsigned int, indices, IXGBE_MAX_RSS_INDICES); : #endif : else : indices = min_t(unsigned int, indices, IXGBE_MAX_FDIR_INDICES); : : netdev = alloc_etherdev_mq(sizeof(struct ixgbe_adapter), indices); 0.00 : 4fa: e8 00 00 00 00 callq 4ff : #else /* HAVE_TX_MQ */ : netdev = alloc_etherdev(sizeof(struct ixgbe_adapter)); : #endif /* HAVE_TX_MQ */ : if (!netdev) { 0.00 : 4ff: 48 85 c0 test %rax,%rax : indices = min_t(unsigned int, indices, IXGBE_MAX_RSS_INDICES); : #endif : else : indices = min_t(unsigned int, indices, IXGBE_MAX_FDIR_INDICES); : : netdev = alloc_etherdev_mq(sizeof(struct ixgbe_adapter), indices); 0.00 : 502: 49 89 c6 mov %rax,%r14 : #else /* HAVE_TX_MQ */ : netdev = alloc_etherdev(sizeof(struct ixgbe_adapter)); : #endif /* HAVE_TX_MQ */ : if (!netdev) { 0.00 : 505: 0f 84 85 00 00 00 je 590 : goto err_alloc_etherdev; : } : : SET_NETDEV_DEV(netdev, &pdev->dev); : : adapter = netdev_priv(netdev); 0.00 : 50b: 4c 8d a0 00 08 00 00 lea 0x800(%rax),%r12 : } : : static inline void pci_set_drvdata(struct pci_dev *pdev, void *data) : { : dev_set_drvdata(&pdev->dev, data); 0.00 : 512: 4c 89 ff mov %r15,%rdi : if (!netdev) { : err = -ENOMEM; : goto err_alloc_etherdev; : } : : SET_NETDEV_DEV(netdev, &pdev->dev); 0.00 : 515: 4c 89 b8 78 04 00 00 mov %r15,0x478(%rax) 0.00 : 51c: 4c 89 e6 mov %r12,%rsi 0.00 : 51f: e8 00 00 00 00 callq 524 : #ifdef HAVE_PCI_ERS : /* : * call save state here in standalone driver because it relies on : * adapter struct to exist, and needs to call netdev_priv : */ : pci_save_state(pdev); 0.00 : 524: 4c 89 ef mov %r13,%rdi : SET_NETDEV_DEV(netdev, &pdev->dev); : : adapter = netdev_priv(netdev); : pci_set_drvdata(pdev, adapter); : : adapter->netdev = netdev; 0.00 : 527: 4d 89 b4 24 00 02 00 mov %r14,0x200(%r12) 0.00 : 52e: 00 : adapter->pdev = pdev; 0.00 : 52f: 4d 89 ac 24 08 02 00 mov %r13,0x208(%r12) 0.00 : 536: 00 : hw = &adapter->hw; : hw->back = adapter; 0.00 : 537: 4d 89 a4 24 88 0e 00 mov %r12,0xe88(%r12) 0.00 : 53e: 00 : adapter->msg_enable = (1 << DEFAULT_DEBUG_LEVEL_SHIFT) - 1; 0.00 : 53f: 66 41 c7 84 24 a8 14 movw $0x7,0x14a8(%r12) 0.00 : 546: 00 00 07 00 : #ifdef HAVE_PCI_ERS : /* : * call save state here in standalone driver because it relies on : * adapter struct to exist, and needs to call netdev_priv : */ : pci_save_state(pdev); 0.00 : 54a: e8 00 00 00 00 callq 54f : : #endif : hw->hw_addr = ioremap(pci_resource_start(pdev, 0), 0.00 : 54f: 49 8b bd 00 03 00 00 mov 0x300(%r13),%rdi 0.00 : 556: 48 85 ff test %rdi,%rdi 0.00 : 559: 0f 84 78 0d 00 00 je 12d7 0.00 : 55f: 49 8b 85 08 03 00 00 mov 0x308(%r13),%rax 0.00 : 566: 48 29 f8 sub %rdi,%rax 0.00 : 569: 48 8d 70 01 lea 0x1(%rax),%rsi : /* : * The default ioremap() behavior is non-cached: : */ : static inline void __iomem *ioremap(resource_size_t offset, unsigned long size) : { : return ioremap_nocache(offset, size); 0.00 : 56d: e8 00 00 00 00 callq 572 : pci_resource_len(pdev, 0)); : if (!hw->hw_addr) { 0.00 : 572: 48 85 c0 test %rax,%rax : * adapter struct to exist, and needs to call netdev_priv : */ : pci_save_state(pdev); : : #endif : hw->hw_addr = ioremap(pci_resource_start(pdev, 0), 0.00 : 575: 49 89 84 24 80 0e 00 mov %rax,0xe80(%r12) 0.00 : 57c: 00 : pci_resource_len(pdev, 0)); : if (!hw->hw_addr) { 0.00 : 57d: bd fb ff ff ff mov $0xfffffffb,%ebp 0.00 : 582: 0f 85 9c 00 00 00 jne 624 : #endif /* CONFIG_PCI_IOV */ : adapter->flags2 &= ~IXGBE_FLAG2_SEARCH_FOR_SFP; : kfree(adapter->mac_table); : iounmap(hw->hw_addr); : err_ioremap: : free_netdev(netdev); 0.00 : 588: 4c 89 f7 mov %r14,%rdi 0.00 : 58b: e8 00 00 00 00 callq 590 : err_alloc_etherdev: : pci_release_selected_regions(pdev, 0.00 : 590: 4c 89 ef mov %r13,%rdi 0.00 : 593: be 00 02 00 00 mov $0x200,%esi 0.00 : 598: e8 00 00 00 00 callq 59d 0.00 : 59d: 4c 89 ef mov %r13,%rdi 0.00 : 5a0: 89 c6 mov %eax,%esi 0.00 : 5a2: e8 00 00 00 00 callq 5a7 0.00 : 5a7: e9 74 fe ff ff jmpq 420 : * completions caused by LOs. We need the mac type so that we only : * do this on 82598 devices, ixgbe_set_mac_type does this for us if : * we set it's device ID. : */ : if (mac_type == ixgbe_mac_82598EB) : pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S); 0.00 : 5ac: be 01 00 00 00 mov $0x1,%esi 0.00 : 5b1: 4c 89 ef mov %r13,%rdi : : pci_set_master(pdev); : : #ifdef HAVE_TX_MQ : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; 0.00 : 5b4: 42 8d 1c f5 00 00 00 lea 0x0(,%r14,8),%ebx 0.00 : 5bb: 00 : * completions caused by LOs. We need the mac type so that we only : * do this on 82598 devices, ixgbe_set_mac_type does this for us if : * we set it's device ID. : */ : if (mac_type == ixgbe_mac_82598EB) : pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S); 0.00 : 5bc: e8 00 00 00 00 callq 5c1 : : pci_enable_pcie_error_reporting(pdev); 0.00 : 5c1: 4c 89 ef mov %r13,%rdi 0.00 : 5c4: e8 00 00 00 00 callq 5c9 : : pci_set_master(pdev); 0.00 : 5c9: 4c 89 ef mov %r13,%rdi 0.00 : 5cc: e8 00 00 00 00 callq 5d1 : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; : #endif /* CONFIG_DCB */ : : #ifdef IXGBE_FCOE : indices += min_t(unsigned int, num_possible_cpus(), 0.00 : 5d1: 4c 89 e7 mov %r12,%rdi 0.00 : 5d4: e8 00 00 00 00 callq 5d9 0.00 : 5d9: ba 08 00 00 00 mov $0x8,%edx 0.00 : 5de: 83 f8 08 cmp $0x8,%eax : IXGBE_MAX_FCOE_INDICES); : #endif : : if (mac_type == ixgbe_mac_82598EB) : #ifdef CONFIG_DCB : indices = min_t(unsigned int, indices, IXGBE_MAX_DCB_INDICES * 4); 0.00 : 5e1: be 20 00 00 00 mov $0x20,%esi : #ifdef CONFIG_DCB : indices *= IXGBE_DCB_MAX_TRAFFIC_CLASS; : #endif /* CONFIG_DCB */ : : #ifdef IXGBE_FCOE : indices += min_t(unsigned int, num_possible_cpus(), 0.00 : 5e6: 0f 46 d0 cmovbe %eax,%edx 0.00 : 5e9: 01 da add %ebx,%edx : IXGBE_MAX_FCOE_INDICES); : #endif : : if (mac_type == ixgbe_mac_82598EB) : #ifdef CONFIG_DCB : indices = min_t(unsigned int, indices, IXGBE_MAX_DCB_INDICES * 4); 0.00 : 5eb: 83 fa 20 cmp $0x20,%edx 0.00 : 5ee: 0f 46 f2 cmovbe %edx,%esi 0.00 : 5f1: e9 f8 fe ff ff jmpq 4ee : * so rather than maintain two devID -> MAC tables we dummy up : * an ixgbe_hw stuct and use ixgbe_set_mac_type. : */ : hw = vmalloc(sizeof(struct ixgbe_hw)); : if (!hw) { : pr_info("Unable to allocate memory for early mac " 0.00 : 5f6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 0.00 : 5fd: 31 c0 xor %eax,%eax 0.00 : 5ff: e8 00 00 00 00 callq 604 0.00 : 604: e9 ad fe ff ff jmpq 4b6 : err = dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(32)); : if (err) { : err = dma_set_coherent_mask(pci_dev_to_dev(pdev), : DMA_BIT_MASK(32)); : if (err) { : dev_err(pci_dev_to_dev(pdev), "No usable DMA " 0.00 : 609: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 610: 4c 89 ff mov %r15,%rdi 0.00 : 613: 31 c0 xor %eax,%eax 0.00 : 615: e8 00 00 00 00 callq 61a 0.00 : 61a: bd fb ff ff ff mov $0xfffffffb,%ebp : "configuration, aborting\n"); : goto err_dma; 0.00 : 61f: e9 fc fd ff ff jmpq 420 : if (!hw->hw_addr) { : err = -EIO; : goto err_ioremap; : } : : ixgbe_assign_netdev_ops(netdev); 0.00 : 624: 4c 89 f7 mov %r14,%rdi 0.00 : 627: e8 00 00 00 00 callq 62c : #include : : static inline const char *dev_name(const struct device *dev) : { : /* Use the init name until the kobject becomes available */ : if (dev->init_name) 0.00 : 62c: 49 8b b5 e0 00 00 00 mov 0xe0(%r13),%rsi 0.00 : 633: 48 85 f6 test %rsi,%rsi 0.00 : 636: 0f 84 8f 0c 00 00 je 12cb : : strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1); 0.00 : 63c: ba 0f 00 00 00 mov $0xf,%edx 0.00 : 641: 4c 89 f7 mov %r14,%rdi 0.00 : 644: e8 00 00 00 00 callq 649 : : adapter->bd_number = cards_found; 0.00 : 649: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 64f : : /* setup the private structure */ : err = ixgbe_sw_init(adapter); 0.00 : 64f: 4c 89 e7 mov %r12,%rdi : : ixgbe_assign_netdev_ops(netdev); : : strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1); : : adapter->bd_number = cards_found; 0.00 : 652: 66 41 89 84 24 1c 7c mov %ax,0x7c1c(%r12) 0.00 : 659: 00 00 : : /* setup the private structure */ : err = ixgbe_sw_init(adapter); 0.00 : 65b: e8 a0 f9 ff ff callq 0 : if (err) 0.00 : 660: 85 c0 test %eax,%eax : strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1); : : adapter->bd_number = cards_found; : : /* setup the private structure */ : err = ixgbe_sw_init(adapter); 0.00 : 662: 89 c5 mov %eax,%ebp : if (err) 0.00 : 664: 0f 85 11 02 00 00 jne 87b : goto err_sw_init; : : /* Make it possible the adapter to be woken up via WOL */ : switch (adapter->hw.mac.type) { 0.00 : 66a: 41 8b 84 24 50 10 00 mov 0x1050(%r12),%eax 0.00 : 671: 00 0.00 : 672: 83 e8 02 sub $0x2,%eax 0.00 : 675: 83 f8 01 cmp $0x1,%eax 0.00 : 678: 77 15 ja 68f : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : 67a: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : 681: 00 0.00 : 682: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 687: 48 05 10 58 00 00 add $0x5810,%rax 0.00 : 68d: 89 10 mov %edx,(%rax) : : /* : * If we have a fan, this is as early we know, warn if we : * have had a failure. : */ : if (adapter->flags & IXGBE_FLAG_FAN_FAIL_CAPABLE) { 0.00 : 68f: 41 f6 84 24 19 02 00 testb $0x10,0x219(%r12) 0.00 : 696: 00 10 0.00 : 698: 74 33 je 6cd : { asm volatile("mov" size " %0,%1": :reg (val), \ : "m" (*(volatile type __force *)addr) barrier); } : : build_mmio_read(readb, "b", unsigned char, "=q", :"memory") : build_mmio_read(readw, "w", unsigned short, "=r", :"memory") : build_mmio_read(readl, "l", unsigned int, "=r", :"memory") 0.00 : 69a: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : 6a1: 00 0.00 : 6a2: 48 83 c0 20 add $0x20,%rax 0.00 : 6a6: 8b 00 mov (%rax),%eax : u32 esdp = IXGBE_READ_REG(hw, IXGBE_ESDP); : if (esdp & IXGBE_ESDP_SDP1) 0.00 : 6a8: a8 02 test $0x2,%al 0.00 : 6aa: 74 21 je 6cd : e_crit(probe, "Fan has stopped, replace the adapter\n"); 0.00 : 6ac: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : 6b3: 00 02 0.00 : 6b5: 74 16 je 6cd 0.00 : 6b7: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 6be: 00 0.00 : 6bf: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 6c6: 31 c0 xor %eax,%eax 0.00 : 6c8: e8 00 00 00 00 callq 6cd : adapter = netdev_priv(netdev); : pci_set_drvdata(pdev, adapter); : : adapter->netdev = netdev; : adapter->pdev = pdev; : hw = &adapter->hw; 0.00 : 6cd: 49 8d 84 24 80 0e 00 lea 0xe80(%r12),%rax 0.00 : 6d4: 00 : : /* : * check_options must be called before setup_link to set up : * hw->fc completely : */ : ixgbe_check_options(adapter); 0.00 : 6d5: 4c 89 e7 mov %r12,%rdi : adapter = netdev_priv(netdev); : pci_set_drvdata(pdev, adapter); : : adapter->netdev = netdev; : adapter->pdev = pdev; : hw = &adapter->hw; 0.00 : 6d8: 48 89 44 24 28 mov %rax,0x28(%rsp) : : /* : * check_options must be called before setup_link to set up : * hw->fc completely : */ : ixgbe_check_options(adapter); 0.00 : 6dd: e8 00 00 00 00 callq 6e2 : : /* reset_hw fills in the perm_addr as well */ : hw->phy.reset_if_overtemp = true; 0.00 : 6e2: 41 c6 84 24 c2 13 00 movb $0x1,0x13c2(%r12) 0.00 : 6e9: 00 01 : err = hw->mac.ops.reset_hw(hw); 0.00 : 6eb: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 6f0: 41 ff 94 24 98 0e 00 callq *0xe98(%r12) 0.00 : 6f7: 00 : hw->phy.reset_if_overtemp = false; : if (err == IXGBE_ERR_SFP_NOT_PRESENT && 0.00 : 6f8: 83 f8 ec cmp $0xffffffec,%eax : */ : ixgbe_check_options(adapter); : : /* reset_hw fills in the perm_addr as well */ : hw->phy.reset_if_overtemp = true; : err = hw->mac.ops.reset_hw(hw); 0.00 : 6fb: 89 c5 mov %eax,%ebp : hw->phy.reset_if_overtemp = false; 0.00 : 6fd: 41 c6 84 24 c2 13 00 movb $0x0,0x13c2(%r12) 0.00 : 704: 00 00 : if (err == IXGBE_ERR_SFP_NOT_PRESENT && 0.00 : 706: 0f 84 4d 0b 00 00 je 1259 : hw->mac.type == ixgbe_mac_82598EB) { : err = 0; : } else if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) { 0.00 : 70c: 83 f8 ed cmp $0xffffffed,%eax 0.00 : 70f: 0f 84 77 0b 00 00 je 128c : e_dev_err("failed to load because an unsupported SFP+ " : "module type was detected.\n"); : e_dev_err("Reload the driver after installing a supported " : "module.\n"); : goto err_sw_init; : } else if (err) { 0.00 : 715: 85 c0 test %eax,%eax 0.00 : 717: 0f 85 4b 0b 00 00 jne 1268 : e_dev_err("HW Init failed: %d\n", err); : goto err_sw_init; : } : : #ifdef CONFIG_PCI_IOV : ixgbe_enable_sriov(adapter); 0.00 : 71d: 4c 89 e7 mov %r12,%rdi 0.00 : 720: e8 00 00 00 00 callq 725 : #ifdef NETIF_F_RXHASH : netdev->features |= NETIF_F_RXHASH; : #endif /* NETIF_F_RXHASH */ : : #ifdef HAVE_NDO_SET_FEATURES : netdev->features |= NETIF_F_RXCSUM; 0.00 : 725: 41 8b 96 b0 00 00 00 mov 0xb0(%r14),%edx : : /* give us the option of enabling RSC/LRO later */ : #ifdef IXGBE_NO_LRO : if (adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE) : #endif : netdev->hw_features |= NETIF_F_LRO; 0.00 : 72c: 89 d0 mov %edx,%eax 0.00 : 72e: 41 0b 86 b4 00 00 00 or 0xb4(%r14),%eax 0.00 : 735: 0d 93 81 11 30 or $0x30118193,%eax 0.00 : 73a: 41 89 86 b4 00 00 00 mov %eax,0xb4(%r14) : #endif /* NETIF_F_GRO */ : #endif : : #ifdef NETIF_F_HW_VLAN_TX : /* set this bit last since it cannot be part of hw_features */ : netdev->features |= NETIF_F_HW_VLAN_FILTER; 0.00 : 741: 89 d0 mov %edx,%eax 0.00 : 743: 0d 93 03 11 30 or $0x30110393,%eax 0.00 : 748: 41 89 86 b0 00 00 00 mov %eax,0xb0(%r14) : #endif : switch (adapter->hw.mac.type) { 0.00 : 74f: 41 8b 84 24 50 10 00 mov 0x1050(%r12),%eax 0.00 : 756: 00 0.00 : 757: 83 e8 02 sub $0x2,%eax 0.00 : 75a: 83 f8 01 cmp $0x1,%eax 0.00 : 75d: 77 18 ja 777 : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : netdev->features |= NETIF_F_SCTP_CSUM; : #ifdef HAVE_NDO_SET_FEATURES : netdev->hw_features |= NETIF_F_SCTP_CSUM | 0.00 : 75f: 41 81 8e b4 00 00 00 orl $0xa000000,0xb4(%r14) 0.00 : 766: 00 00 00 0a : netdev->features |= NETIF_F_HW_VLAN_FILTER; : #endif : switch (adapter->hw.mac.type) { : case ixgbe_mac_82599EB: : case ixgbe_mac_X540: : netdev->features |= NETIF_F_SCTP_CSUM; 0.00 : 76a: 81 ca 93 03 11 32 or $0x32110393,%edx 0.00 : 770: 41 89 96 b0 00 00 00 mov %edx,0xb0(%r14) : default: : break; : } : : #ifdef HAVE_NETDEV_VLAN_FEATURES : netdev->vlan_features |= NETIF_F_SG | 0.00 : 777: 41 81 8e bc 00 00 00 orl $0x110013,0xbc(%r14) 0.00 : 77e: 13 00 11 00 : NETIF_F_IPV6_CSUM | : NETIF_F_TSO | : NETIF_F_TSO6; : : #endif /* HAVE_NETDEV_VLAN_FEATURES */ : if (netdev->features & NETIF_F_LRO) { 0.00 : 782: 66 41 83 be b0 00 00 cmpw $0x0,0xb0(%r14) 0.00 : 789: 00 00 0.00 : 78b: 79 37 jns 7c4 : if ((adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE) && 0.00 : 78d: 41 8b 84 24 1c 02 00 mov 0x21c(%r12),%eax 0.00 : 794: 00 0.00 : 795: 89 c1 mov %eax,%ecx 0.00 : 797: 83 e1 01 and $0x1,%ecx 0.00 : 79a: 0f 84 8f 0a 00 00 je 122f 0.00 : 7a0: 41 0f b7 94 24 2c 02 movzwl 0x22c(%r12),%edx 0.00 : 7a7: 00 00 0.00 : 7a9: 66 83 fa 01 cmp $0x1,%dx 0.00 : 7ad: 74 0a je 7b9 0.00 : 7af: 66 83 fa 18 cmp $0x18,%dx 0.00 : 7b3: 0f 86 76 0a 00 00 jbe 122f : ((adapter->rx_itr_setting == 1) || : (adapter->rx_itr_setting > IXGBE_MIN_RSC_ITR))) { : adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED; 0.00 : 7b9: 83 c8 02 or $0x2,%eax 0.00 : 7bc: 41 89 84 24 1c 02 00 mov %eax,0x21c(%r12) 0.00 : 7c3: 00 : "falling back to software LRO\n"); : #endif : } : } : #ifdef CONFIG_DCB : netdev->dcbnl_ops = &dcbnl_ops; 0.00 : 7c4: 49 c7 86 10 07 00 00 movq $0x0,0x710(%r14) 0.00 : 7cb: 00 00 00 00 : #endif : : #ifdef IXGBE_FCOE : #ifdef NETIF_F_FSO : if (adapter->flags & IXGBE_FLAG_FCOE_CAPABLE) { 0.00 : 7cf: 41 f6 84 24 1a 02 00 testb $0x2,0x21a(%r12) 0.00 : 7d6: 00 02 0.00 : 7d8: 0f 85 c0 09 00 00 jne 119e : NETIF_F_FCOE_MTU; : #endif /* HAVE_NETDEV_VLAN_FEATURES */ : } : #endif /* NETIF_F_FSO */ : #endif /* IXGBE_FCOE */ : if (pci_using_dac) { 0.00 : 7de: 8b 44 24 24 mov 0x24(%rsp),%eax 0.00 : 7e2: 85 c0 test %eax,%eax 0.00 : 7e4: 74 10 je 7f6 : netdev->features |= NETIF_F_HIGHDMA; 0.00 : 7e6: 41 83 8e b0 00 00 00 orl $0x20,0xb0(%r14) 0.00 : 7ed: 20 : #ifdef HAVE_NETDEV_VLAN_FEATURES : netdev->vlan_features |= NETIF_F_HIGHDMA; 0.00 : 7ee: 41 83 8e bc 00 00 00 orl $0x20,0xbc(%r14) 0.00 : 7f5: 20 : #endif /* HAVE_NETDEV_VLAN_FEATURES */ : } : #endif /* MAX_SKB_FRAGS */ : : /* make sure the EEPROM is good */ : if (hw->eeprom.ops.validate_checksum && 0.00 : 7f6: 49 8b 84 24 f0 13 00 mov 0x13f0(%r12),%rax 0.00 : 7fd: 00 0.00 : 7fe: 48 85 c0 test %rax,%rax 0.00 : 801: 74 11 je 814 0.00 : 803: 31 f6 xor %esi,%esi 0.00 : 805: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 80a: ff d0 callq *%rax 0.00 : 80c: 85 c0 test %eax,%eax 0.00 : 80e: 0f 88 c9 09 00 00 js 11dd : e_dev_err("The EEPROM Checksum Is Not Valid\n"); : err = -EIO; : goto err_sw_init; : } : : memcpy(netdev->dev_addr, hw->mac.perm_addr, netdev->addr_len); 0.00 : 814: 41 0f b6 96 ed 01 00 movzbl 0x1ed(%r14),%edx 0.00 : 81b: 00 0.00 : 81c: 49 8d ac 24 5a 10 00 lea 0x105a(%r12),%rbp 0.00 : 823: 00 0.00 : 824: 49 8b be 90 02 00 00 mov 0x290(%r14),%rdi : #ifdef ETHTOOL_GPERMADDR : memcpy(netdev->perm_addr, hw->mac.perm_addr, netdev->addr_len); 0.00 : 82b: 49 8d 9e cc 01 00 00 lea 0x1cc(%r14),%rbx : e_dev_err("The EEPROM Checksum Is Not Valid\n"); : err = -EIO; : goto err_sw_init; : } : : memcpy(netdev->dev_addr, hw->mac.perm_addr, netdev->addr_len); 0.00 : 832: 48 89 ee mov %rbp,%rsi 0.00 : 835: e8 00 00 00 00 callq 83a : #ifdef ETHTOOL_GPERMADDR : memcpy(netdev->perm_addr, hw->mac.perm_addr, netdev->addr_len); 0.00 : 83a: 41 0f b6 96 ed 01 00 movzbl 0x1ed(%r14),%edx 0.00 : 841: 00 0.00 : 842: 48 89 ee mov %rbp,%rsi 0.00 : 845: 48 89 df mov %rbx,%rdi 0.00 : 848: e8 00 00 00 00 callq 84d : : if (ixgbe_validate_mac_addr(netdev->perm_addr)) { 0.00 : 84d: 48 89 df mov %rbx,%rdi 0.00 : 850: e8 00 00 00 00 callq 855 0.00 : 855: 85 c0 test %eax,%eax 0.00 : 857: 74 52 je 8ab : e_dev_err("invalid MAC address\n"); 0.00 : 859: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 860: 00 0.00 : 861: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 868: 31 c0 xor %eax,%eax 0.00 : 86a: bd fb ff ff ff mov $0xfffffffb,%ebp 0.00 : 86f: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 876: e8 00 00 00 00 callq 87b : err_register: : ixgbe_clear_interrupt_scheme(adapter); : ixgbe_release_hw_control(adapter); : err_sw_init: : #ifdef CONFIG_PCI_IOV : ixgbe_disable_sriov(adapter); 0.00 : 87b: 4c 89 e7 mov %r12,%rdi 0.00 : 87e: e8 00 00 00 00 callq 883 : #endif /* CONFIG_PCI_IOV */ : adapter->flags2 &= ~IXGBE_FLAG2_SEARCH_FOR_SFP; 0.00 : 883: 41 83 a4 24 1c 02 00 andl $0xffffffdf,0x21c(%r12) 0.00 : 88a: 00 df : kfree(adapter->mac_table); 0.00 : 88c: 49 8b bc 24 a0 7c 00 mov 0x7ca0(%r12),%rdi 0.00 : 893: 00 0.00 : 894: e8 00 00 00 00 callq 899 : iounmap(hw->hw_addr); 0.00 : 899: 49 8b bc 24 80 0e 00 mov 0xe80(%r12),%rdi 0.00 : 8a0: 00 0.00 : 8a1: e8 00 00 00 00 callq 8a6 0.00 : 8a6: e9 dd fc ff ff jmpq 588 : e_dev_err("invalid MAC address\n"); : err = -EIO; : goto err_sw_init; : } : #endif : memcpy(&adapter->mac_table[0].addr, hw->mac.perm_addr, 0.00 : 8ab: 41 0f b6 96 ed 01 00 movzbl 0x1ed(%r14),%edx 0.00 : 8b2: 00 0.00 : 8b3: 49 8b bc 24 a0 7c 00 mov 0x7ca0(%r12),%rdi 0.00 : 8ba: 00 0.00 : 8bb: 48 89 ee mov %rbp,%rsi 0.00 : 8be: e8 00 00 00 00 callq 8c3 : netdev->addr_len); : adapter->mac_table[0].queue = VMDQ_P(0); 0.00 : 8c3: 41 0f b7 84 24 d6 0b movzwl 0xbd6(%r12),%eax 0.00 : 8ca: 00 00 0.00 : 8cc: 49 8b 94 24 a0 7c 00 mov 0x7ca0(%r12),%rdx 0.00 : 8d3: 00 : adapter->mac_table[0].state = (IXGBE_MAC_STATE_DEFAULT | : IXGBE_MAC_STATE_IN_USE); : hw->mac.ops.set_rar(hw, 0, adapter->mac_table[0].addr, 0.00 : 8d4: 41 b8 00 00 00 80 mov $0x80000000,%r8d 0.00 : 8da: 31 f6 xor %esi,%esi : goto err_sw_init; : } : #endif : memcpy(&adapter->mac_table[0].addr, hw->mac.perm_addr, : netdev->addr_len); : adapter->mac_table[0].queue = VMDQ_P(0); 0.00 : 8dc: 66 89 42 06 mov %ax,0x6(%rdx) : adapter->mac_table[0].state = (IXGBE_MAC_STATE_DEFAULT | 0.00 : 8e0: 49 8b 84 24 a0 7c 00 mov 0x7ca0(%r12),%rax 0.00 : 8e7: 00 0.00 : 8e8: 66 c7 40 08 05 00 movw $0x5,0x8(%rax) : IXGBE_MAC_STATE_IN_USE); : hw->mac.ops.set_rar(hw, 0, adapter->mac_table[0].addr, 0.00 : 8ee: 49 8b 94 24 a0 7c 00 mov 0x7ca0(%r12),%rdx 0.00 : 8f5: 00 0.00 : 8f6: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 8fb: 0f b7 4a 06 movzwl 0x6(%rdx),%ecx 0.00 : 8ff: 41 ff 94 24 a0 0f 00 callq *0xfa0(%r12) 0.00 : 906: 00 : void (*function)(unsigned long), : unsigned long data) : { : timer->function = function; : timer->data = data; : init_timer_key(timer, name, key); 0.00 : 907: 49 8d bc 24 28 1b 00 lea 0x1b28(%r12),%rdi 0.00 : 90e: 00 : const char *name, : struct lock_class_key *key, : void (*function)(unsigned long), : unsigned long data) : { : timer->function = function; 0.00 : 90f: 49 c7 84 24 48 1b 00 movq $0x0,0x1b48(%r12) 0.00 : 916: 00 00 00 00 00 : timer->data = data; 0.00 : 91b: 4d 89 a4 24 50 1b 00 mov %r12,0x1b50(%r12) 0.00 : 922: 00 : init_timer_key(timer, name, key); 0.00 : 923: 31 d2 xor %edx,%edx 0.00 : 925: 31 f6 xor %esi,%esi 0.00 : 927: e8 00 00 00 00 callq 92c : IXGBE_RAH_AV); : : setup_timer(&adapter->service_timer, &ixgbe_service_timer, : (unsigned long) adapter); : : INIT_WORK(&adapter->service_task, ixgbe_service_task); 0.00 : 92c: 49 8d 84 24 80 1b 00 lea 0x1b80(%r12),%rax 0.00 : 933: 00 0.00 : 934: 49 c7 84 24 78 1b 00 movq $0x100100,0x1b78(%r12) 0.00 : 93b: 00 00 01 10 00 0.00 : 940: 49 c7 84 24 90 1b 00 movq $0x0,0x1b90(%r12) 0.00 : 947: 00 00 00 00 00 : #define LIST_HEAD(name) \ : struct list_head name = LIST_HEAD_INIT(name) : : static inline void INIT_LIST_HEAD(struct list_head *list) : { : list->next = list; 0.00 : 94c: 49 89 84 24 80 1b 00 mov %rax,0x1b80(%r12) 0.00 : 953: 00 : list->prev = list; 0.00 : 954: 49 89 84 24 88 1b 00 mov %rax,0x1b88(%r12) 0.00 : 95b: 00 : */ : static __always_inline void : clear_bit(int nr, volatile unsigned long *addr) : { : if (IS_IMMEDIATE(nr)) { : asm volatile(LOCK_PREFIX "andb %1,%0" 0.00 : 95c: 49 8d 84 24 10 02 00 lea 0x210(%r12),%rax 0.00 : 963: 00 0.00 : 964: f0 41 80 a4 24 10 02 lock andb $0xf7,0x210(%r12) 0.00 : 96b: 00 00 f7 : clear_bit(__IXGBE_SERVICE_SCHED, &adapter->state); : : err = ixgbe_init_interrupt_scheme(adapter); 0.00 : 96e: 4c 89 e7 mov %r12,%rdi 0.00 : 971: e8 00 00 00 00 callq 976 : if (err) 0.00 : 976: 85 c0 test %eax,%eax : (unsigned long) adapter); : : INIT_WORK(&adapter->service_task, ixgbe_service_task); : clear_bit(__IXGBE_SERVICE_SCHED, &adapter->state); : : err = ixgbe_init_interrupt_scheme(adapter); 0.00 : 978: 89 c5 mov %eax,%ebp : if (err) 0.00 : 97a: 0f 85 fb fe ff ff jne 87b : goto err_sw_init; : : /* WOL not supported for all devices */ : adapter->wol = 0; 0.00 : 980: 41 c7 84 24 18 7c 00 movl $0x0,0x7c18(%r12) 0.00 : 987: 00 00 00 00 00 : hw->eeprom.ops.read(hw, 0x2c, &adapter->eeprom_cap); 0.00 : 98c: 49 8d 94 24 3e 7c 00 lea 0x7c3e(%r12),%rdx 0.00 : 993: 00 0.00 : 994: be 2c 00 00 00 mov $0x2c,%esi 0.00 : 999: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 99e: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : 9a5: 00 : if (ixgbe_wol_supported(adapter, pdev->device, pdev->subsystem_device)) 0.00 : 9a6: 41 0f b7 55 42 movzwl 0x42(%r13),%edx 0.00 : 9ab: 41 0f b7 75 3e movzwl 0x3e(%r13),%esi 0.00 : 9b0: 4c 89 e7 mov %r12,%rdi 0.00 : 9b3: e8 00 00 00 00 callq 9b8 0.00 : 9b8: 85 c0 test %eax,%eax 0.00 : 9ba: 74 0c je 9c8 : adapter->wol = IXGBE_WUFC_MAG; 0.00 : 9bc: 41 c7 84 24 18 7c 00 movl $0x2,0x7c18(%r12) 0.00 : 9c3: 00 02 00 00 00 : : device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); 0.00 : 9c8: 31 f6 xor %esi,%esi 0.00 : 9ca: 41 83 bc 24 18 7c 00 cmpl $0x0,0x7c18(%r12) 0.00 : 9d1: 00 00 0.00 : 9d3: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 9da: 00 0.00 : 9db: 40 0f 95 c6 setne %sil 0.00 : 9df: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 9e6: e8 00 00 00 00 callq 9eb : #endif : /* : * Save off EEPROM version number and Option Rom version which : * together make a unique identify for the eeprom : */ : hw->eeprom.ops.read(hw, 0x2e, &eeprom_verh); 0.00 : 9eb: 48 8d 54 24 4c lea 0x4c(%rsp),%rdx 0.00 : 9f0: be 2e 00 00 00 mov $0x2e,%esi 0.00 : 9f5: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 9fa: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : a01: 00 : hw->eeprom.ops.read(hw, 0x2d, &eeprom_verl); 0.00 : a02: 48 8d 54 24 4a lea 0x4a(%rsp),%rdx 0.00 : a07: be 2d 00 00 00 mov $0x2d,%esi 0.00 : a0c: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : a11: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : a18: 00 : etrack_id = (eeprom_verh << 16) | eeprom_verl; 0.00 : a19: 0f b7 5c 24 4c movzwl 0x4c(%rsp),%ebx 0.00 : a1e: 0f b7 44 24 4a movzwl 0x4a(%rsp),%eax : : hw->eeprom.ops.read(hw, 0x17, &offset); 0.00 : a23: 48 8d 54 24 4e lea 0x4e(%rsp),%rdx 0.00 : a28: be 17 00 00 00 mov $0x17,%esi 0.00 : a2d: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi : * Save off EEPROM version number and Option Rom version which : * together make a unique identify for the eeprom : */ : hw->eeprom.ops.read(hw, 0x2e, &eeprom_verh); : hw->eeprom.ops.read(hw, 0x2d, &eeprom_verl); : etrack_id = (eeprom_verh << 16) | eeprom_verl; 0.00 : a32: c1 e3 10 shl $0x10,%ebx 0.00 : a35: 09 c3 or %eax,%ebx : : hw->eeprom.ops.read(hw, 0x17, &offset); 0.00 : a37: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : a3e: 00 : : /* Make sure offset to SCSI block is valid */ : if (!(offset == 0x0) && !(offset == 0xffff)) { 0.00 : a3f: 0f b7 4c 24 4e movzwl 0x4e(%rsp),%ecx 0.00 : a44: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : a47: 66 83 f8 fd cmp $0xfffd,%ax 0.00 : a4b: 77 52 ja a9f : hw->eeprom.ops.read(hw, offset + 0x84, &eeprom_cfg_blkh); 0.00 : a4d: 8d b1 84 00 00 00 lea 0x84(%rcx),%esi 0.00 : a53: 48 8d 54 24 48 lea 0x48(%rsp),%rdx 0.00 : a58: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : a5d: 0f b7 f6 movzwl %si,%esi 0.00 : a60: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : a67: 00 : hw->eeprom.ops.read(hw, offset + 0x83, &eeprom_cfg_blkl); 0.00 : a68: 0f b7 74 24 4e movzwl 0x4e(%rsp),%esi 0.00 : a6d: 48 8d 54 24 46 lea 0x46(%rsp),%rdx 0.00 : a72: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : a77: 66 81 c6 83 00 add $0x83,%si 0.00 : a7c: 0f b7 f6 movzwl %si,%esi 0.00 : a7f: 41 ff 94 24 d0 13 00 callq *0x13d0(%r12) 0.00 : a86: 00 : : /* Only display Option Rom if exist */ : if (eeprom_cfg_blkl && eeprom_cfg_blkh) { 0.00 : a87: 0f b7 4c 24 46 movzwl 0x46(%rsp),%ecx 0.00 : a8c: 66 85 c9 test %cx,%cx 0.00 : a8f: 74 0e je a9f 0.00 : a91: 0f b7 54 24 48 movzwl 0x48(%rsp),%edx 0.00 : a96: 66 85 d2 test %dx,%dx 0.00 : a99: 0f 85 bd 06 00 00 jne 115c : } else { : snprintf(adapter->eeprom_id, sizeof(adapter->eeprom_id), : "0x%08x", etrack_id); : } : } else { : snprintf(adapter->eeprom_id, sizeof(adapter->eeprom_id), 0.00 : a9f: 49 8d bc 24 1e 7c 00 lea 0x7c1e(%r12),%rdi 0.00 : aa6: 00 0.00 : aa7: 89 d9 mov %ebx,%ecx 0.00 : aa9: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : ab0: be 20 00 00 00 mov $0x20,%esi 0.00 : ab5: 31 c0 xor %eax,%eax 0.00 : ab7: e8 00 00 00 00 callq abc : "0x%08x", etrack_id); : } : : /* reset the hardware with the new settings */ : err = hw->mac.ops.start_hw(hw); 0.00 : abc: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : ac1: 41 ff 94 24 a0 0e 00 callq *0xea0(%r12) 0.00 : ac8: 00 : if (err == IXGBE_ERR_EEPROM_VERSION) { 0.00 : ac9: 83 f8 e8 cmp $0xffffffe8,%eax 0.00 : acc: 0f 84 68 06 00 00 je 113a : "problems please contact your Intel or hardware " : "representative who provided you with this " : "hardware.\n"); : } : /* pick up the PCI bus settings for reporting later */ : if (hw->mac.ops.get_bus_info) 0.00 : ad2: 49 8b 84 24 f8 0e 00 mov 0xef8(%r12),%rax 0.00 : ad9: 00 0.00 : ada: 48 85 c0 test %rax,%rax 0.00 : add: 74 07 je ae6 : hw->mac.ops.get_bus_info(hw); 0.00 : adf: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : ae4: ff d0 callq *%rax : : strcpy(netdev->name, "eth%d"); 0.00 : ae6: 41 c7 06 65 74 68 25 movl $0x25687465,(%r14) 0.00 : aed: 66 41 c7 46 04 64 00 movw $0x64,0x4(%r14) : err = register_netdev(netdev); 0.00 : af4: 4c 89 f7 mov %r14,%rdi 0.00 : af7: e8 00 00 00 00 callq afc : if (err) 0.00 : afc: 85 c0 test %eax,%eax : /* pick up the PCI bus settings for reporting later */ : if (hw->mac.ops.get_bus_info) : hw->mac.ops.get_bus_info(hw); : : strcpy(netdev->name, "eth%d"); : err = register_netdev(netdev); 0.00 : afe: 89 c5 mov %eax,%ebp : if (err) 0.00 : b00: 0f 85 70 04 00 00 jne f76 : goto err_register; : : adapter->netdev_registered = true; : : /* power down the optics for multispeed fiber and 82599 SFP+ fiber */ : if (hw->mac.ops.disable_tx_laser && 0.00 : b06: 49 8b 84 24 48 0f 00 mov 0xf48(%r12),%rax 0.00 : b0d: 00 : strcpy(netdev->name, "eth%d"); : err = register_netdev(netdev); : if (err) : goto err_register; : : adapter->netdev_registered = true; 0.00 : b0e: 41 c6 84 24 40 7c 00 movb $0x1,0x7c40(%r12) 0.00 : b15: 00 01 : : /* power down the optics for multispeed fiber and 82599 SFP+ fiber */ : if (hw->mac.ops.disable_tx_laser && 0.00 : b17: 48 85 c0 test %rax,%rax 0.00 : b1a: 74 25 je b41 0.00 : b1c: 41 80 bc 24 c1 13 00 cmpb $0x0,0x13c1(%r12) 0.00 : b23: 00 00 0.00 : b25: 0f 85 ad 05 00 00 jne 10d8 0.00 : b2b: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : b30: 41 ff 94 24 b0 0e 00 callq *0xeb0(%r12) 0.00 : b37: 00 0.00 : b38: 83 e8 01 sub $0x1,%eax 0.00 : b3b: 0f 84 80 05 00 00 je 10c1 : ((hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) && : (hw->mac.type == ixgbe_mac_82599EB)))) : hw->mac.ops.disable_tx_laser(hw); : : /* carrier off reporting is important to ethtool even BEFORE open */ : netif_carrier_off(netdev); 0.00 : b41: 4c 89 f7 mov %r14,%rdi 0.00 : b44: e8 00 00 00 00 callq b49 : : static inline void netif_tx_stop_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : b49: 41 8b 86 88 03 00 00 mov 0x388(%r14),%eax 0.00 : b50: 85 c0 test %eax,%eax 0.00 : b52: 74 20 je b74 0.00 : b54: 31 db xor %ebx,%ebx : struct netdev_queue *txq = netdev_get_tx_queue(dev, i); : netif_tx_stop_queue(txq); 0.00 : b56: 89 df mov %ebx,%edi : : static inline void netif_tx_stop_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : b58: 83 c3 01 add $0x1,%ebx : struct netdev_queue *txq = netdev_get_tx_queue(dev, i); : netif_tx_stop_queue(txq); 0.00 : b5b: 48 c1 e7 08 shl $0x8,%rdi 0.00 : b5f: 49 03 be 80 03 00 00 add 0x380(%r14),%rdi 0.00 : b66: e8 00 00 00 00 callq b6b : : static inline void netif_tx_stop_all_queues(struct net_device *dev) : { : unsigned int i; : : for (i = 0; i < dev->num_tx_queues; i++) { 0.00 : b6b: 41 3b 9e 88 03 00 00 cmp 0x388(%r14),%ebx 0.00 : b72: 72 e2 jb b56 : /* keep stopping all the transmit queues for older kernels */ : netif_tx_stop_all_queues(netdev); : : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_CAPABLE) { 0.00 : b74: 41 80 bc 24 18 02 00 cmpb $0x0,0x218(%r12) 0.00 : b7b: 00 00 0.00 : b7d: 0f 88 17 05 00 00 js 109a : } : #endif : : /* print all messages at the end so that we use our eth%d name */ : /* print bus type/speed/width info */ : e_dev_info("(PCI Express:%s:%s) %02x:%02x:%02x:%02x:%02x:%02x\n", 0.00 : b83: 49 8b 86 90 02 00 00 mov 0x290(%r14),%rax 0.00 : b8a: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : b91: 0f b6 58 05 movzbl 0x5(%rax),%ebx 0.00 : b95: 44 0f b6 58 04 movzbl 0x4(%rax),%r11d 0.00 : b9a: 44 0f b6 50 03 movzbl 0x3(%rax),%r10d 0.00 : b9f: 0f b6 70 02 movzbl 0x2(%rax),%esi 0.00 : ba3: 44 0f b6 48 01 movzbl 0x1(%rax),%r9d 0.00 : ba8: 44 0f b6 00 movzbl (%rax),%r8d 0.00 : bac: 41 8b 84 24 1c 14 00 mov 0x141c(%r12),%eax 0.00 : bb3: 00 0.00 : bb4: 83 f8 08 cmp $0x8,%eax 0.00 : bb7: 74 21 je bda 0.00 : bb9: 83 f8 04 cmp $0x4,%eax 0.00 : bbc: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : bc3: 74 15 je bda 0.00 : bc5: 83 e8 01 sub $0x1,%eax 0.00 : bc8: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 0.00 : bcf: 48 c7 c0 00 00 00 00 mov $0x0,%rax 0.00 : bd6: 48 0f 44 c8 cmove %rax,%rcx 0.00 : bda: 41 8b 84 24 18 14 00 mov 0x1418(%r12),%eax 0.00 : be1: 00 0.00 : be2: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : be9: 3d 40 1f 00 00 cmp $0x1f40,%eax 0.00 : bee: 74 25 je c15 0.00 : bf0: 3d 88 13 00 00 cmp $0x1388,%eax 0.00 : bf5: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : bfc: 74 17 je c15 0.00 : bfe: 3d c4 09 00 00 cmp $0x9c4,%eax 0.00 : c03: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : c0a: 48 c7 c0 00 00 00 00 mov $0x0,%rax 0.00 : c11: 48 0f 44 d0 cmove %rax,%rdx 0.00 : c15: 0f b6 c3 movzbl %bl,%eax 0.00 : c18: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : c1f: 00 0.00 : c20: 45 0f b6 c9 movzbl %r9b,%r9d 0.00 : c24: 89 44 24 18 mov %eax,0x18(%rsp) 0.00 : c28: 41 0f b6 c3 movzbl %r11b,%eax 0.00 : c2c: 45 0f b6 c0 movzbl %r8b,%r8d 0.00 : c30: 89 44 24 10 mov %eax,0x10(%rsp) 0.00 : c34: 41 0f b6 c2 movzbl %r10b,%eax : "Unknown"), netdev->dev_addr[0], netdev->dev_addr[1], : netdev->dev_addr[2], netdev->dev_addr[3], : netdev->dev_addr[4], netdev->dev_addr[5]); : : /* First try to read PBA as a string */ : err = ixgbe_read_pba_string(hw, part_str, IXGBE_PBANUM_LENGTH); 0.00 : c38: 48 8d 5c 24 30 lea 0x30(%rsp),%rbx : } : #endif : : /* print all messages at the end so that we use our eth%d name */ : /* print bus type/speed/width info */ : e_dev_info("(PCI Express:%s:%s) %02x:%02x:%02x:%02x:%02x:%02x\n", 0.00 : c3d: 89 44 24 08 mov %eax,0x8(%rsp) 0.00 : c41: 40 0f b6 c6 movzbl %sil,%eax 0.00 : c45: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : c4c: 89 04 24 mov %eax,(%rsp) 0.00 : c4f: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : c56: 31 c0 xor %eax,%eax 0.00 : c58: e8 00 00 00 00 callq c5d : "Unknown"), netdev->dev_addr[0], netdev->dev_addr[1], : netdev->dev_addr[2], netdev->dev_addr[3], : netdev->dev_addr[4], netdev->dev_addr[5]); : : /* First try to read PBA as a string */ : err = ixgbe_read_pba_string(hw, part_str, IXGBE_PBANUM_LENGTH); 0.00 : c5d: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : c62: ba 0b 00 00 00 mov $0xb,%edx 0.00 : c67: 48 89 de mov %rbx,%rsi 0.00 : c6a: e8 00 00 00 00 callq c6f : if (err) 0.00 : c6f: 85 c0 test %eax,%eax 0.00 : c71: 0f 85 03 04 00 00 jne 107a : ixgbe_configure_rx(adapter); : } : : static bool ixgbe_is_sfp(struct ixgbe_hw *hw) : { : switch (hw->phy.type) { 0.00 : c77: 41 8b 8c 24 98 13 00 mov 0x1398(%r12),%ecx 0.00 : c7e: 00 0.00 : c7f: 83 f9 07 cmp $0x7,%ecx 0.00 : c82: 0f 84 e1 03 00 00 je 1069 0.00 : c88: 0f 83 87 03 00 00 jae 1015 : strncpy(part_str, "Unknown", IXGBE_PBANUM_LENGTH); : if (ixgbe_is_sfp(hw) && hw->phy.sfp_type != ixgbe_sfp_type_not_present) : e_info(probe, "MAC: %d, PHY: %d, SFP+: %d, PBA No: %s\n", : hw->mac.type, hw->phy.type, hw->phy.sfp_type, part_str); : else : e_info(probe, "MAC: %d, PHY: %d, PBA No: %s\n", 0.00 : c8e: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : c95: 00 02 0.00 : c97: 74 21 je cba : hw->mac.type, hw->phy.type, part_str); 0.00 : c99: 41 8b 94 24 50 10 00 mov 0x1050(%r12),%edx 0.00 : ca0: 00 0.00 : ca1: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : ca8: 00 0.00 : ca9: 49 89 d8 mov %rbx,%r8 0.00 : cac: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : cb3: 31 c0 xor %eax,%eax 0.00 : cb5: e8 00 00 00 00 callq cba : : if (((hw->bus.speed == ixgbe_bus_speed_2500) && 0.00 : cba: 41 81 bc 24 18 14 00 cmpl $0x9c4,0x1418(%r12) 0.00 : cc1: 00 c4 09 00 00 0.00 : cc6: 0f 84 35 03 00 00 je 1001 0.00 : ccc: 41 83 bc 24 1c 14 00 cmpl $0x2,0x141c(%r12) 0.00 : cd3: 00 02 0.00 : cd5: 77 3a ja d11 : (hw->bus.width <= ixgbe_bus_width_pcie_x4)) || : (hw->bus.width <= ixgbe_bus_width_pcie_x2)) { : e_dev_warn("PCI-Express bandwidth available for this " 0.00 : cd7: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : cde: 00 0.00 : cdf: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : ce6: 31 c0 xor %eax,%eax 0.00 : ce8: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : cef: e8 00 00 00 00 callq cf4 : "card is not sufficient for optimal " : "performance.\n"); : e_dev_warn("For optimal performance a x8 PCI-Express " 0.00 : cf4: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : cfb: 00 0.00 : cfc: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : d03: 31 c0 xor %eax,%eax 0.00 : d05: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : d0c: e8 00 00 00 00 callq d11 : "slot is required.\n"); : } : : #define INFO_STRING_LEN 255 : info_string = kzalloc(INFO_STRING_LEN, GFP_KERNEL); 0.00 : d11: be d0 00 00 00 mov $0xd0,%esi 0.00 : d16: bf ff 00 00 00 mov $0xff,%edi 0.00 : d1b: e8 00 00 00 00 callq d20 : if (!info_string) { 0.00 : d20: 48 85 c0 test %rax,%rax : e_dev_warn("For optimal performance a x8 PCI-Express " : "slot is required.\n"); : } : : #define INFO_STRING_LEN 255 : info_string = kzalloc(INFO_STRING_LEN, GFP_KERNEL); 0.00 : d23: 49 89 c7 mov %rax,%r15 : if (!info_string) { 0.00 : d26: 0f 84 ab 02 00 00 je fd7 : e_err(probe, "allocation for info string failed\n"); : goto no_info_string; : } : i_s_var = info_string; : i_s_var += sprintf(info_string, "Enabled Features: "); 0.00 : d2c: 48 b8 45 6e 61 62 6c movabs $0x2064656c62616e45,%rax 0.00 : d33: 65 64 20 0.00 : d36: 66 41 c7 47 10 3a 20 movw $0x203a,0x10(%r15) 0.00 : d3d: 41 c6 47 12 00 movb $0x0,0x12(%r15) 0.00 : d42: 49 89 07 mov %rax,(%r15) 0.00 : d45: 48 b8 46 65 61 74 75 movabs $0x7365727574616546,%rax 0.00 : d4c: 72 65 73 0.00 : d4f: 49 8d 5f 12 lea 0x12(%r15),%rbx 0.00 : d53: 49 89 47 08 mov %rax,0x8(%r15) : i_s_var += sprintf(i_s_var, "RxQ: %d TxQ: %d ", 0.00 : d57: 41 8b 94 24 28 02 00 mov 0x228(%r12),%edx 0.00 : d5e: 00 0.00 : d5f: 31 c0 xor %eax,%eax 0.00 : d61: 41 8b 8c 24 20 02 00 mov 0x220(%r12),%ecx 0.00 : d68: 00 0.00 : d69: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : d70: 48 89 df mov %rbx,%rdi 0.00 : d73: e8 00 00 00 00 callq d78 0.00 : d78: 48 98 cltq 0.00 : d7a: 48 8d 14 03 lea (%rbx,%rax,1),%rdx : adapter->num_rx_queues, adapter->num_tx_queues); : #ifdef IXGBE_FCOE : if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED) 0.00 : d7e: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : d85: 00 0.00 : d86: a9 00 00 04 00 test $0x40000,%eax 0.00 : d8b: 74 18 je da5 : i_s_var += sprintf(i_s_var, "FCoE "); 0.00 : d8d: c7 02 46 43 6f 45 movl $0x456f4346,(%rdx) 0.00 : d93: 66 c7 42 04 20 00 movw $0x20,0x4(%rdx) 0.00 : d99: 48 83 c2 05 add $0x5,%rdx 0.00 : d9d: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : da4: 00 : #endif : if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) 0.00 : da5: 66 85 c0 test %ax,%ax 0.00 : da8: 79 1f jns dc9 : i_s_var += sprintf(i_s_var, "FdirHash "); 0.00 : daa: 48 b8 46 64 69 72 48 movabs $0x6873614872696446,%rax 0.00 : db1: 61 73 68 0.00 : db4: 66 c7 42 08 20 00 movw $0x20,0x8(%rdx) 0.00 : dba: 48 89 02 mov %rax,(%rdx) 0.00 : dbd: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : dc4: 00 0.00 : dc5: 48 83 c2 09 add $0x9,%rdx : if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) 0.00 : dc9: f6 c4 04 test $0x4,%ah 0.00 : dcc: 74 16 je de4 : i_s_var += sprintf(i_s_var, "DCB "); 0.00 : dce: c7 02 44 43 42 20 movl $0x20424344,(%rdx) 0.00 : dd4: c6 42 04 00 movb $0x0,0x4(%rdx) 0.00 : dd8: 48 83 c2 04 add $0x4,%rdx 0.00 : ddc: 41 8b 84 24 18 02 00 mov 0x218(%r12),%eax 0.00 : de3: 00 : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) 0.00 : de4: a8 40 test $0x40,%al 0.00 : de6: 74 0e je df6 : i_s_var += sprintf(i_s_var, "DCA "); 0.00 : de8: c7 02 44 43 41 20 movl $0x20414344,(%rdx) 0.00 : dee: c6 42 04 00 movb $0x0,0x4(%rdx) 0.00 : df2: 48 83 c2 04 add $0x4,%rdx : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) 0.00 : df6: 41 f6 84 24 1c 02 00 testb $0x2,0x21c(%r12) 0.00 : dfd: 00 02 0.00 : dff: 0f 85 a4 01 00 00 jne fa9 : i_s_var += sprintf(i_s_var, "RSC "); : #ifndef IXGBE_NO_LRO : else if (netdev->features & NETIF_F_LRO) 0.00 : e05: 66 41 83 be b0 00 00 cmpw $0x0,0xb0(%r14) 0.00 : e0c: 00 00 0.00 : e0e: 79 0e jns e1e : i_s_var += sprintf(i_s_var, "LRO "); 0.00 : e10: c7 02 4c 52 4f 20 movl $0x204f524c,(%rdx) 0.00 : e16: c6 42 04 00 movb $0x0,0x4(%rdx) 0.00 : e1a: 48 83 c2 04 add $0x4,%rdx : #endif : : BUG_ON(i_s_var > (info_string + INFO_STRING_LEN)); 0.00 : e1e: 49 8d 87 ff 00 00 00 lea 0xff(%r15),%rax 0.00 : e25: 48 39 c2 cmp %rax,%rdx 0.00 : e28: 0f 87 77 01 00 00 ja fa5 : /* end features printing */ : e_info(probe, "%s\n", info_string); 0.00 : e2e: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : e35: 00 02 0.00 : e37: 74 19 je e52 0.00 : e39: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : e40: 00 0.00 : e41: 4c 89 fa mov %r15,%rdx 0.00 : e44: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : e4b: 31 c0 xor %eax,%eax 0.00 : e4d: e8 00 00 00 00 callq e52 : kfree(info_string); 0.00 : e52: 4c 89 ff mov %r15,%rdi 0.00 : e55: e8 00 00 00 00 callq e5a : no_info_string: : #ifdef CONFIG_PCI_IOV : if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { 0.00 : e5a: 41 f6 84 24 1a 02 00 testb $0x10,0x21a(%r12) 0.00 : e61: 00 10 0.00 : e63: 74 2c je e91 : int i; : : for (i = 0; i < adapter->num_vfs; i++) 0.00 : e65: 45 8b bc 24 58 7c 00 mov 0x7c58(%r12),%r15d 0.00 : e6c: 00 0.00 : e6d: 45 85 ff test %r15d,%r15d 0.00 : e70: 74 1f je e91 0.00 : e72: 31 db xor %ebx,%ebx : ixgbe_vf_configuration(pdev, (i | 0x10000000)); 0.00 : e74: 89 de mov %ebx,%esi 0.00 : e76: 4c 89 ef mov %r13,%rdi : no_info_string: : #ifdef CONFIG_PCI_IOV : if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { : int i; : : for (i = 0; i < adapter->num_vfs; i++) 0.00 : e79: 83 c3 01 add $0x1,%ebx : ixgbe_vf_configuration(pdev, (i | 0x10000000)); 0.00 : e7c: 81 ce 00 00 00 10 or $0x10000000,%esi 0.00 : e82: e8 00 00 00 00 callq e87 : no_info_string: : #ifdef CONFIG_PCI_IOV : if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { : int i; : : for (i = 0; i < adapter->num_vfs; i++) 0.00 : e87: 41 3b 9c 24 58 7c 00 cmp 0x7c58(%r12),%ebx 0.00 : e8e: 00 0.00 : e8f: 72 e3 jb e74 : ixgbe_vf_configuration(pdev, (i | 0x10000000)); : } : #endif : : /* firmware requires blank driver version */ : if (hw->mac.ops.set_fw_drv_ver) 0.00 : e91: 49 8b 84 24 38 10 00 mov 0x1038(%r12),%rax 0.00 : e98: 00 0.00 : e99: 48 85 c0 test %rax,%rax 0.00 : e9c: 74 1c je eba : hw->mac.ops.set_fw_drv_ver(hw, 0xFF, 0xFF, 0xFF, 0xFF); 0.00 : e9e: 41 b8 ff 00 00 00 mov $0xff,%r8d 0.00 : ea4: b9 ff 00 00 00 mov $0xff,%ecx 0.00 : ea9: ba ff 00 00 00 mov $0xff,%edx 0.00 : eae: be ff 00 00 00 mov $0xff,%esi 0.00 : eb3: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : eb8: ff d0 callq *%rax : * Return true if the address is a multicast address. : * By definition the broadcast address is also a multicast address. : */ : static inline int is_multicast_ether_addr(const u8 *addr) : { : return 0x01 & addr[0]; 0.00 : eba: 41 0f b6 84 24 60 10 movzbl 0x1060(%r12),%eax 0.00 : ec1: 00 00 : */ : static inline int is_valid_ether_addr(const u8 *addr) : { : /* FF:FF:FF:FF:FF:FF is a multicast address so we don't need to : * explicitly check for it here. */ : return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr); 0.00 : ec3: a8 01 test $0x1,%al 0.00 : ec5: 75 5f jne f26 0.00 : ec7: 41 0a 84 24 61 10 00 or 0x1061(%r12),%al 0.00 : ece: 00 0.00 : ecf: 41 0a 84 24 62 10 00 or 0x1062(%r12),%al 0.00 : ed6: 00 0.00 : ed7: 41 0a 84 24 63 10 00 or 0x1063(%r12),%al 0.00 : ede: 00 0.00 : edf: 41 0a 84 24 64 10 00 or 0x1064(%r12),%al 0.00 : ee6: 00 0.00 : ee7: 41 0a 84 24 65 10 00 or 0x1065(%r12),%al 0.00 : eee: 00 0.00 : eef: 74 35 je f26 : int err = 0; : struct ixgbe_adapter *adapter = netdev_priv(dev); : struct ixgbe_hw *hw = &adapter->hw; : : if (is_valid_ether_addr(hw->mac.san_addr)) { : rtnl_lock(); 0.00 : ef1: e8 00 00 00 00 callq ef6 : err = dev_addr_add(dev, hw->mac.san_addr, 0.00 : ef6: 49 8d b4 24 60 10 00 lea 0x1060(%r12),%rsi 0.00 : efd: 00 0.00 : efe: 4c 89 f7 mov %r14,%rdi 0.00 : f01: ba 02 00 00 00 mov $0x2,%edx 0.00 : f06: e8 00 00 00 00 callq f0b : NETDEV_HW_ADDR_T_SAN); : rtnl_unlock(); 0.00 : f0b: e8 00 00 00 00 callq f10 : : /* update SAN MAC vmdq pool selection */ : hw->mac.ops.set_vmdq_san_mac(hw, VMDQ_P(0)); 0.00 : f10: 41 0f b7 b4 24 d6 0b movzwl 0xbd6(%r12),%esi 0.00 : f17: 00 00 0.00 : f19: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : f1e: 41 ff 94 24 c8 0f 00 callq *0xfc8(%r12) 0.00 : f25: 00 : #if defined(HAVE_NETDEV_STORAGE_ADDRESS) && defined(NETDEV_HW_ADDR_T_SAN) : /* add san mac addr to netdev */ : ixgbe_add_sanmac_netdev(netdev); : : #endif /* (HAVE_NETDEV_STORAGE_ADDRESS) && (NETDEV_HW_ADDR_T_SAN) */ : e_info(probe, "Intel(R) 10 Gigabit Network Connection\n"); 0.00 : f26: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : f2d: 00 02 0.00 : f2f: 0f 85 87 00 00 00 jne fbc : cards_found++; : : #ifdef IXGBE_SYSFS : if (ixgbe_sysfs_init(adapter)) 0.00 : f35: 4c 89 e7 mov %r12,%rdi : /* add san mac addr to netdev */ : ixgbe_add_sanmac_netdev(netdev); : : #endif /* (HAVE_NETDEV_STORAGE_ADDRESS) && (NETDEV_HW_ADDR_T_SAN) */ : e_info(probe, "Intel(R) 10 Gigabit Network Connection\n"); : cards_found++; 0.00 : f38: 83 05 00 00 00 00 01 addl $0x1,0x0(%rip) # f3f : : #ifdef IXGBE_SYSFS : if (ixgbe_sysfs_init(adapter)) 0.00 : f3f: e8 00 00 00 00 callq f44 0.00 : f44: 85 c0 test %eax,%eax 0.00 : f46: 0f 84 4c f4 ff ff je 398 : e_err(probe, "failed to allocate sysfs resources\n"); 0.00 : f4c: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : f53: 00 02 0.00 : f55: 0f 84 3d f4 ff ff je 398 0.00 : f5b: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : f62: 00 0.00 : f63: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : f6a: 31 c0 xor %eax,%eax 0.00 : f6c: e8 00 00 00 00 callq f71 0.00 : f71: e9 22 f4 ff ff jmpq 398 : #endif /* IXGBE_SYSFS */ : : return 0; : : err_register: : ixgbe_clear_interrupt_scheme(adapter); 0.00 : f76: 4c 89 e7 mov %r12,%rdi 0.00 : f79: e8 00 00 00 00 callq f7e 0.00 : f7e: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : f85: 00 0.00 : f86: 48 83 c0 18 add $0x18,%rax 0.00 : f8a: 8b 10 mov (%rax),%edx : build_mmio_read(__readw, "w", unsigned short, "=r", ) : build_mmio_read(__readl, "l", unsigned int, "=r", ) : : build_mmio_write(writeb, "b", unsigned char, "q", :"memory") : build_mmio_write(writew, "w", unsigned short, "r", :"memory") : build_mmio_write(writel, "l", unsigned int, "r", :"memory") 0.00 : f8c: 49 8b 84 24 80 0e 00 mov 0xe80(%r12),%rax 0.00 : f93: 00 : { : u32 ctrl_ext; : : /* Let firmware take over control of h/w */ : ctrl_ext = IXGBE_READ_REG(&adapter->hw, IXGBE_CTRL_EXT); : IXGBE_WRITE_REG(&adapter->hw, IXGBE_CTRL_EXT, 0.00 : f94: 81 e2 ff ff ff ef and $0xefffffff,%edx 0.00 : f9a: 48 83 c0 18 add $0x18,%rax 0.00 : f9e: 89 10 mov %edx,(%rax) 0.00 : fa0: e9 d6 f8 ff ff jmpq 87b : #ifndef IXGBE_NO_LRO : else if (netdev->features & NETIF_F_LRO) : i_s_var += sprintf(i_s_var, "LRO "); : #endif : : BUG_ON(i_s_var > (info_string + INFO_STRING_LEN)); 0.00 : fa5: 0f 0b ud2 0.00 : fa7: eb fe jmp fa7 : if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) : i_s_var += sprintf(i_s_var, "DCB "); : if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) : i_s_var += sprintf(i_s_var, "DCA "); : if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) : i_s_var += sprintf(i_s_var, "RSC "); 0.00 : fa9: c7 02 52 53 43 20 movl $0x20435352,(%rdx) 0.00 : faf: c6 42 04 00 movb $0x0,0x4(%rdx) 0.00 : fb3: 48 83 c2 04 add $0x4,%rdx 0.00 : fb7: e9 62 fe ff ff jmpq e1e : #if defined(HAVE_NETDEV_STORAGE_ADDRESS) && defined(NETDEV_HW_ADDR_T_SAN) : /* add san mac addr to netdev */ : ixgbe_add_sanmac_netdev(netdev); : : #endif /* (HAVE_NETDEV_STORAGE_ADDRESS) && (NETDEV_HW_ADDR_T_SAN) */ : e_info(probe, "Intel(R) 10 Gigabit Network Connection\n"); 0.00 : fbc: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : fc3: 00 0.00 : fc4: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : fcb: 31 c0 xor %eax,%eax 0.00 : fcd: e8 00 00 00 00 callq fd2 0.00 : fd2: e9 5e ff ff ff jmpq f35 : } : : #define INFO_STRING_LEN 255 : info_string = kzalloc(INFO_STRING_LEN, GFP_KERNEL); : if (!info_string) { : e_err(probe, "allocation for info string failed\n"); 0.00 : fd7: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : fde: 00 02 0.00 : fe0: 0f 84 74 fe ff ff je e5a 0.00 : fe6: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : fed: 00 0.00 : fee: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : ff5: 31 c0 xor %eax,%eax 0.00 : ff7: e8 00 00 00 00 callq ffc 0.00 : ffc: e9 59 fe ff ff jmpq e5a : hw->mac.type, hw->phy.type, hw->phy.sfp_type, part_str); : else : e_info(probe, "MAC: %d, PHY: %d, PBA No: %s\n", : hw->mac.type, hw->phy.type, part_str); : : if (((hw->bus.speed == ixgbe_bus_speed_2500) && 0.00 : 1001: 41 83 bc 24 1c 14 00 cmpl $0x4,0x141c(%r12) 0.00 : 1008: 00 04 0.00 : 100a: 0f 87 01 fd ff ff ja d11 0.00 : 1010: e9 c2 fc ff ff jmpq cd7 : ixgbe_configure_rx(adapter); : } : : static bool ixgbe_is_sfp(struct ixgbe_hw *hw) : { : switch (hw->phy.type) { 0.00 : 1015: 83 f9 0f cmp $0xf,%ecx 0.00 : 1018: 0f 87 70 fc ff ff ja c8e : : /* First try to read PBA as a string */ : err = ixgbe_read_pba_string(hw, part_str, IXGBE_PBANUM_LENGTH); : if (err) : strncpy(part_str, "Unknown", IXGBE_PBANUM_LENGTH); : if (ixgbe_is_sfp(hw) && hw->phy.sfp_type != ixgbe_sfp_type_not_present) 0.00 : 101e: 41 8b 84 24 a4 13 00 mov 0x13a4(%r12),%eax 0.00 : 1025: 00 0.00 : 1026: 3d fe ff 00 00 cmp $0xfffe,%eax 0.00 : 102b: 0f 84 5d fc ff ff je c8e : e_info(probe, "MAC: %d, PHY: %d, SFP+: %d, PBA No: %s\n", 0.00 : 1031: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : 1038: 00 02 0.00 : 103a: 0f 84 7a fc ff ff je cba : hw->mac.type, hw->phy.type, hw->phy.sfp_type, part_str); 0.00 : 1040: 41 8b 94 24 50 10 00 mov 0x1050(%r12),%edx 0.00 : 1047: 00 0.00 : 1048: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 104f: 00 0.00 : 1050: 41 89 c0 mov %eax,%r8d 0.00 : 1053: 49 89 d9 mov %rbx,%r9 0.00 : 1056: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 105d: 31 c0 xor %eax,%eax 0.00 : 105f: e8 00 00 00 00 callq 1064 0.00 : 1064: e9 51 fc ff ff jmpq cba : case ixgbe_phy_sfp_passive_unknown: : case ixgbe_phy_sfp_active_unknown: : case ixgbe_phy_sfp_ftl_active: : return true; : case ixgbe_phy_nl: : if (hw->mac.type == ixgbe_mac_82598EB) 0.00 : 1069: 41 83 bc 24 50 10 00 cmpl $0x1,0x1050(%r12) 0.00 : 1070: 00 01 0.00 : 1072: 0f 85 16 fc ff ff jne c8e 0.00 : 1078: eb a4 jmp 101e : netdev->dev_addr[4], netdev->dev_addr[5]); : : /* First try to read PBA as a string */ : err = ixgbe_read_pba_string(hw, part_str, IXGBE_PBANUM_LENGTH); : if (err) : strncpy(part_str, "Unknown", IXGBE_PBANUM_LENGTH); 0.00 : 107a: 48 b8 55 6e 6b 6e 6f movabs $0x6e776f6e6b6e55,%rax 0.00 : 1081: 77 6e 00 0.00 : 1084: 66 c7 44 24 38 00 00 movw $0x0,0x38(%rsp) 0.00 : 108b: c6 44 24 3a 00 movb $0x0,0x3a(%rsp) 0.00 : 1090: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 1095: e9 dd fb ff ff jmpq c77 : /* keep stopping all the transmit queues for older kernels */ : netif_tx_stop_all_queues(netdev); : : #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE) : if (adapter->flags & IXGBE_FLAG_DCA_CAPABLE) { : err = dca_add_requester(&pdev->dev); 0.00 : 109a: 4c 89 ff mov %r15,%rdi 0.00 : 109d: e8 00 00 00 00 callq 10a2 : switch (err) { 0.00 : 10a2: 83 f8 ed cmp $0xffffffed,%eax 0.00 : 10a5: 74 69 je 1110 0.00 : 10a7: 85 c0 test %eax,%eax 0.00 : 10a9: 75 39 jne 10e4 : case 0: : adapter->flags |= IXGBE_FLAG_DCA_ENABLED; 0.00 : 10ab: 41 83 8c 24 18 02 00 orl $0x40,0x218(%r12) 0.00 : 10b2: 00 40 : ixgbe_setup_dca(adapter); 0.00 : 10b4: 4c 89 e7 mov %r12,%rdi 0.00 : 10b7: e8 00 00 00 00 callq 10bc : break; 0.00 : 10bc: e9 c2 fa ff ff jmpq b83 : goto err_register; : : adapter->netdev_registered = true; : : /* power down the optics for multispeed fiber and 82599 SFP+ fiber */ : if (hw->mac.ops.disable_tx_laser && 0.00 : 10c1: 41 83 bc 24 50 10 00 cmpl $0x2,0x1050(%r12) 0.00 : 10c8: 00 02 0.00 : 10ca: 0f 85 71 fa ff ff jne b41 0.00 : 10d0: 49 8b 84 24 48 0f 00 mov 0xf48(%r12),%rax 0.00 : 10d7: 00 : ((hw->phy.multispeed_fiber) || : ((hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) && : (hw->mac.type == ixgbe_mac_82599EB)))) : hw->mac.ops.disable_tx_laser(hw); 0.00 : 10d8: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 10dd: ff d0 callq *%rax 0.00 : 10df: e9 5d fa ff ff jmpq b41 : case -19: : e_info(rx_err, "No DCA provider found. Please " : "start ioatdma for DCA functionality.\n"); : break; : default: : e_info(probe, "DCA registration failed: %d\n", err); 0.00 : 10e4: 41 f6 84 24 a8 14 00 testb $0x2,0x14a8(%r12) 0.00 : 10eb: 00 02 0.00 : 10ed: 0f 84 90 fa ff ff je b83 0.00 : 10f3: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 10fa: 00 0.00 : 10fb: 89 c2 mov %eax,%edx 0.00 : 10fd: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1104: 31 c0 xor %eax,%eax 0.00 : 1106: e8 00 00 00 00 callq 110b 0.00 : 110b: e9 73 fa ff ff jmpq b83 : adapter->flags |= IXGBE_FLAG_DCA_ENABLED; : ixgbe_setup_dca(adapter); : break; : /* -19 is returned from the kernel when no provider is found */ : case -19: : e_info(rx_err, "No DCA provider found. Please " 0.00 : 1110: 41 f6 84 24 a8 14 00 testb $0x40,0x14a8(%r12) 0.00 : 1117: 00 40 0.00 : 1119: 0f 84 64 fa ff ff je b83 : "start ioatdma for DCA functionality.\n"); 0.00 : 111f: 49 8b bc 24 00 02 00 mov 0x200(%r12),%rdi 0.00 : 1126: 00 0.00 : 1127: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 112e: 31 c0 xor %eax,%eax 0.00 : 1130: e8 00 00 00 00 callq 1135 0.00 : 1135: e9 49 fa ff ff jmpq b83 : : /* reset the hardware with the new settings */ : err = hw->mac.ops.start_hw(hw); : if (err == IXGBE_ERR_EEPROM_VERSION) { : /* We are running on a pre-production device, log a warning */ : e_dev_warn("This device is a pre-production adapter/LOM. " 0.00 : 113a: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 1141: 00 0.00 : 1142: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1149: 31 c0 xor %eax,%eax 0.00 : 114b: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 1152: e8 00 00 00 00 callq 1157 0.00 : 1157: e9 76 f9 ff ff jmpq ad2 : if (eeprom_cfg_blkl && eeprom_cfg_blkh) { : major = eeprom_cfg_blkl >> 8; : build = (eeprom_cfg_blkl << 8) | (eeprom_cfg_blkh >> 8); : patch = eeprom_cfg_blkh & 0x00ff; : : snprintf(adapter->eeprom_id, sizeof(adapter->eeprom_id), 0.00 : 115c: 41 89 c9 mov %ecx,%r9d 0.00 : 115f: 89 d0 mov %edx,%eax 0.00 : 1161: 0f b6 cd movzbl %ch,%ecx 0.00 : 1164: 66 c1 e8 08 shr $0x8,%ax 0.00 : 1168: 41 c1 e1 08 shl $0x8,%r9d 0.00 : 116c: 49 8d bc 24 1e 7c 00 lea 0x7c1e(%r12),%rdi 0.00 : 1173: 00 0.00 : 1174: 41 09 c1 or %eax,%r9d 0.00 : 1177: 0f b6 c2 movzbl %dl,%eax 0.00 : 117a: 41 89 c8 mov %ecx,%r8d 0.00 : 117d: 89 04 24 mov %eax,(%rsp) 0.00 : 1180: 45 0f b7 c9 movzwl %r9w,%r9d 0.00 : 1184: 89 d9 mov %ebx,%ecx 0.00 : 1186: 48 c7 c2 00 00 00 00 mov $0x0,%rdx 0.00 : 118d: be 20 00 00 00 mov $0x20,%esi 0.00 : 1192: 31 c0 xor %eax,%eax 0.00 : 1194: e8 00 00 00 00 callq 1199 : if (!(offset == 0x0) && !(offset == 0xffff)) { : hw->eeprom.ops.read(hw, offset + 0x84, &eeprom_cfg_blkh); : hw->eeprom.ops.read(hw, offset + 0x83, &eeprom_cfg_blkl); : : /* Only display Option Rom if exist */ : if (eeprom_cfg_blkl && eeprom_cfg_blkh) { 0.00 : 1199: e9 1e f9 ff ff jmpq abc : #endif : : #ifdef IXGBE_FCOE : #ifdef NETIF_F_FSO : if (adapter->flags & IXGBE_FLAG_FCOE_CAPABLE) { : hw->mac.ops.get_device_caps(hw, &device_caps); 0.00 : 119e: 48 8d 74 24 44 lea 0x44(%rsp),%rsi 0.00 : 11a3: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi 0.00 : 11a8: 41 ff 94 24 d8 0e 00 callq *0xed8(%r12) 0.00 : 11af: 00 : if (device_caps & IXGBE_DEVICE_CAPS_FCOE_OFFLOADS) { 0.00 : 11b0: f6 44 24 44 02 testb $0x2,0x44(%rsp) 0.00 : 11b5: 75 4d jne 1204 : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; : adapter->flags &= ~IXGBE_FLAG_FCOE_CAPABLE; : e_dev_info("FCoE offload feature is not available. " : "Disabling FCoE offload feature\n"); : } else { : netdev->features |= NETIF_F_FSO | 0.00 : 11b7: 41 81 8e b0 00 00 00 orl $0x1200000,0xb0(%r14) 0.00 : 11be: 00 00 20 01 : adapter->flags |= IXGBE_FLAG_FCOE_ENABLED; : netdev->features |= NETIF_F_FCOE_MTU; : #endif /* HAVE_NETDEV_OPS_FCOE_ENABLE */ : } : : adapter->ring_feature[RING_F_FCOE].limit = IXGBE_FCRETA_SIZE; 0.00 : 11c2: 66 41 c7 84 24 e8 0b movw $0x8,0xbe8(%r12) 0.00 : 11c9: 00 00 08 00 : : #ifdef HAVE_NETDEV_VLAN_FEATURES : netdev->vlan_features |= NETIF_F_FSO | 0.00 : 11cd: 41 81 8e bc 00 00 00 orl $0x5200000,0xbc(%r14) 0.00 : 11d4: 00 00 20 05 0.00 : 11d8: e9 01 f6 ff ff jmpq 7de : #endif /* MAX_SKB_FRAGS */ : : /* make sure the EEPROM is good */ : if (hw->eeprom.ops.validate_checksum && : (hw->eeprom.ops.validate_checksum(hw, NULL) < 0)) { : e_dev_err("The EEPROM Checksum Is Not Valid\n"); 0.00 : 11dd: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 11e4: 00 0.00 : 11e5: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 11ec: 31 c0 xor %eax,%eax 0.00 : 11ee: bd fb ff ff ff mov $0xfffffffb,%ebp 0.00 : 11f3: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 11fa: e8 00 00 00 00 callq 11ff : err = -EIO; : goto err_sw_init; 0.00 : 11ff: e9 77 f6 ff ff jmpq 87b : if (adapter->flags & IXGBE_FLAG_FCOE_CAPABLE) { : hw->mac.ops.get_device_caps(hw, &device_caps); : if (device_caps & IXGBE_DEVICE_CAPS_FCOE_OFFLOADS) { : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; : adapter->flags &= ~IXGBE_FLAG_FCOE_CAPABLE; : e_dev_info("FCoE offload feature is not available. " 0.00 : 1204: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 120b: 00 : #ifdef NETIF_F_FSO : if (adapter->flags & IXGBE_FLAG_FCOE_CAPABLE) { : hw->mac.ops.get_device_caps(hw, &device_caps); : if (device_caps & IXGBE_DEVICE_CAPS_FCOE_OFFLOADS) { : adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED; : adapter->flags &= ~IXGBE_FLAG_FCOE_CAPABLE; 0.00 : 120c: 41 81 a4 24 18 02 00 andl $0xfff9ffff,0x218(%r12) 0.00 : 1213: 00 ff ff f9 ff : e_dev_info("FCoE offload feature is not available. " 0.00 : 1218: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 121f: 31 c0 xor %eax,%eax 0.00 : 1221: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 1228: e8 00 00 00 00 callq 122d 0.00 : 122d: eb 93 jmp 11c2 : if (netdev->features & NETIF_F_LRO) { : if ((adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE) && : ((adapter->rx_itr_setting == 1) || : (adapter->rx_itr_setting > IXGBE_MIN_RSC_ITR))) { : adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED; : } else if (adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE) { 0.00 : 122f: 85 c9 test %ecx,%ecx 0.00 : 1231: 0f 84 8d f5 ff ff je 7c4 : #ifdef IXGBE_NO_LRO : e_dev_info("InterruptThrottleRate set too high, " : "disabling RSC\n"); : #else : e_dev_info("InterruptThrottleRate set too high, " 0.00 : 1237: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 123e: 00 0.00 : 123f: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1246: 31 c0 xor %eax,%eax 0.00 : 1248: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 124f: e8 00 00 00 00 callq 1254 0.00 : 1254: e9 6b f5 ff ff jmpq 7c4 : : /* reset_hw fills in the perm_addr as well */ : hw->phy.reset_if_overtemp = true; : err = hw->mac.ops.reset_hw(hw); : hw->phy.reset_if_overtemp = false; : if (err == IXGBE_ERR_SFP_NOT_PRESENT && 0.00 : 1259: 41 83 bc 24 50 10 00 cmpl $0x1,0x1050(%r12) 0.00 : 1260: 00 01 0.00 : 1262: 0f 84 b5 f4 ff ff je 71d : "module type was detected.\n"); : e_dev_err("Reload the driver after installing a supported " : "module.\n"); : goto err_sw_init; : } else if (err) { : e_dev_err("HW Init failed: %d\n", err); 0.00 : 1268: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 126f: 00 0.00 : 1270: 89 ea mov %ebp,%edx 0.00 : 1272: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 1279: 31 c0 xor %eax,%eax 0.00 : 127b: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 1282: e8 00 00 00 00 callq 1287 : goto err_sw_init; 0.00 : 1287: e9 ef f5 ff ff jmpq 87b : hw->phy.reset_if_overtemp = false; : if (err == IXGBE_ERR_SFP_NOT_PRESENT && : hw->mac.type == ixgbe_mac_82598EB) { : err = 0; : } else if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) { : e_dev_err("failed to load because an unsupported SFP+ " 0.00 : 128c: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 1293: 00 0.00 : 1294: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 129b: 31 c0 xor %eax,%eax 0.00 : 129d: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 12a4: e8 00 00 00 00 callq 12a9 : "module type was detected.\n"); : e_dev_err("Reload the driver after installing a supported " 0.00 : 12a9: 49 8b bc 24 08 02 00 mov 0x208(%r12),%rdi 0.00 : 12b0: 00 0.00 : 12b1: 48 c7 c6 00 00 00 00 mov $0x0,%rsi 0.00 : 12b8: 31 c0 xor %eax,%eax 0.00 : 12ba: 48 81 c7 90 00 00 00 add $0x90,%rdi 0.00 : 12c1: e8 00 00 00 00 callq 12c6 : "module.\n"); : goto err_sw_init; 0.00 : 12c6: e9 b0 f5 ff ff jmpq 87b : extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, : va_list vargs); : : static inline const char *kobject_name(const struct kobject *kobj) : { : return kobj->name; 0.00 : 12cb: 49 8b b5 a0 00 00 00 mov 0xa0(%r13),%rsi 0.00 : 12d2: e9 65 f3 ff ff jmpq 63c : * adapter struct to exist, and needs to call netdev_priv : */ : pci_save_state(pdev); : : #endif : hw->hw_addr = ioremap(pci_resource_start(pdev, 0), 0.00 : 12d7: 49 8b 85 08 03 00 00 mov 0x308(%r13),%rax 0.00 : 12de: 31 f6 xor %esi,%esi 0.00 : 12e0: 48 85 c0 test %rax,%rax 0.00 : 12e3: 0f 85 7d f2 ff ff jne 566 0.00 : 12e9: e9 7f f2 ff ff jmpq 56d Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000b070 <_dl_relocate_object>: 0.00 : b070: 55 push %rbp 0.00 : b071: 48 89 e5 mov %rsp,%rbp 0.00 : b074: 41 57 push %r15 0.00 : b076: 41 56 push %r14 0.00 : b078: 49 89 fe mov %rdi,%r14 0.00 : b07b: 41 55 push %r13 0.00 : b07d: 41 54 push %r12 0.00 : b07f: 41 89 d4 mov %edx,%r12d 0.00 : b082: 41 83 e4 01 and $0x1,%r12d 0.00 : b086: 53 push %rbx 0.00 : b087: 48 81 ec b8 00 00 00 sub $0xb8,%rsp 0.00 : b08e: 81 e2 00 00 00 08 and $0x8000000,%edx 0.00 : b094: 48 89 b5 58 ff ff ff mov %rsi,-0xa8(%rbp) 0.00 : b09b: 89 8d 54 ff ff ff mov %ecx,-0xac(%rbp) 0.00 : b0a1: 75 15 jne b0b8 <_dl_relocate_object+0x48> 0.00 : b0a3: 31 c0 xor %eax,%eax 0.00 : b0a5: 48 83 3d 83 3c 21 00 cmpq $0x0,0x213c83(%rip) # 21ed30 <_rtld_global_ro+0x110> 0.00 : b0ac: 00 0.00 : b0ad: 0f 95 c0 setne %al 0.00 : b0b0: 09 c1 or %eax,%ecx 0.00 : b0b2: 89 8d 54 ff ff ff mov %ecx,-0xac(%rbp) 0.00 : b0b8: 41 f6 86 14 03 00 00 testb $0x4,0x314(%r14) 0.00 : b0bf: 04 0.00 : b0c0: 0f 85 1a 02 00 00 jne b2e0 <_dl_relocate_object+0x270> 0.00 : b0c6: 44 8b 8d 54 ff ff ff mov -0xac(%rbp),%r9d 0.00 : b0cd: 45 85 c9 test %r9d,%r9d 0.00 : b0d0: 0f 84 52 0a 00 00 je bb28 <_dl_relocate_object+0xab8> 0.00 : b0d6: f6 05 43 3b 21 00 20 testb $0x20,0x213b43(%rip) # 21ec20 <_rtld_global_ro> 0.00 : b0dd: 0f 85 cf 0f 00 00 jne c0b2 <_dl_relocate_object+0x1042> 0.00 : b0e3: 49 83 be f0 00 00 00 cmpq $0x0,0xf0(%r14) 0.00 : b0ea: 00 0.00 : b0eb: 0f 85 ba 0e 00 00 jne bfab <_dl_relocate_object+0xf3b> 0.00 : b0f1: 48 c7 85 68 ff ff ff movq $0x0,-0x98(%rbp) 0.00 : b0f8: 00 00 00 00 0.00 : b0fc: 49 8b 46 68 mov 0x68(%r14),%rax 0.00 : b100: 45 85 e4 test %r12d,%r12d 0.00 : b103: 0f 95 c3 setne %bl 0.00 : b106: 49 83 be f8 00 00 00 cmpq $0x0,0xf8(%r14) 0.00 : b10d: 00 0.00 : b10e: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b112: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : b119: 0f 85 19 07 00 00 jne b838 <_dl_relocate_object+0x7c8> 0.00 : b11f: 84 db test %bl,%bl 0.00 : b121: 49 8b 86 88 02 00 00 mov 0x288(%r14),%rax 0.00 : b128: 74 17 je b141 <_dl_relocate_object+0xd1> 0.00 : b12a: 48 85 c0 test %rax,%rax 0.00 : b12d: 74 12 je b141 <_dl_relocate_object+0xd1> 0.00 : b12f: 49 8b 16 mov (%r14),%rdx 0.00 : b132: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b136: 48 8d 0d 53 aa 00 00 lea 0xaa53(%rip),%rcx # 15b90 <_dl_tlsdesc_resolve_rela> 0.00 : b13d: 48 89 0c 02 mov %rcx,(%rdx,%rax,1) 0.00 : b141: 49 8b 46 78 mov 0x78(%r14),%rax 0.00 : b145: c7 45 a0 00 00 00 00 movl $0x0,-0x60(%rbp) 0.00 : b14c: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : b153: 00 0.00 : b154: 48 c7 45 98 00 00 00 movq $0x0,-0x68(%rbp) 0.00 : b15b: 00 0.00 : b15c: 48 c7 45 90 00 00 00 movq $0x0,-0x70(%rbp) 0.00 : b163: 00 0.00 : b164: 48 85 c0 test %rax,%rax 0.00 : b167: 74 17 je b180 <_dl_relocate_object+0x110> 0.00 : b169: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b16d: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : b171: 49 8b 86 80 00 00 00 mov 0x80(%r14),%rax 0.00 : b178: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b17c: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : b180: 49 83 be e0 00 00 00 cmpq $0x0,0xe0(%r14) 0.00 : b187: 00 0.00 : b188: 74 37 je b1c1 <_dl_relocate_object+0x151> 0.00 : b18a: 49 8b 86 f8 00 00 00 mov 0xf8(%r14),%rax 0.00 : b191: 84 db test %bl,%bl 0.00 : b193: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : b197: 75 14 jne b1ad <_dl_relocate_object+0x13d> 0.00 : b199: 48 8b 55 98 mov -0x68(%rbp),%rdx 0.00 : b19d: 48 89 d0 mov %rdx,%rax 0.00 : b1a0: 48 03 45 90 add -0x70(%rbp),%rax 0.00 : b1a4: 48 39 c8 cmp %rcx,%rax 0.00 : b1a7: 0f 84 b1 0a 00 00 je bc5e <_dl_relocate_object+0xbee> 0.00 : b1ad: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : b1b1: 48 89 4d a8 mov %rcx,-0x58(%rbp) 0.00 : b1b5: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b1b9: 44 89 65 b8 mov %r12d,-0x48(%rbp) 0.00 : b1bd: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : b1c1: 48 8d 75 90 lea -0x70(%rbp),%rsi 0.00 : b1c5: 48 8d 45 c8 lea -0x38(%rbp),%rax 0.00 : b1c9: 48 89 b5 48 ff ff ff mov %rsi,-0xb8(%rbp) 0.00 : b1d0: 48 89 75 88 mov %rsi,-0x78(%rbp) 0.00 : b1d4: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp) 0.00 : b1db: 48 8b 55 88 mov -0x78(%rbp),%rdx 0.00 : b1df: 4d 8b 1e mov (%r14),%r11 0.00 : b1e2: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : b1e6: 48 8b 1a mov (%rdx),%rbx 0.00 : b1e9: 48 8d 34 0b lea (%rbx,%rcx,1),%rsi 0.00 : b1ed: 48 89 b5 78 ff ff ff mov %rsi,-0x88(%rbp) 0.00 : b1f4: 8b 7a 10 mov 0x10(%rdx),%edi 0.00 : b1f7: 85 ff test %edi,%edi 0.00 : b1f9: 0f 84 31 01 00 00 je b330 <_dl_relocate_object+0x2c0> 0.00 : b1ff: 48 39 f3 cmp %rsi,%rbx 0.00 : b202: 72 52 jb b256 <_dl_relocate_object+0x1e6> 0.00 : b204: e9 87 00 00 00 jmpq b290 <_dl_relocate_object+0x220> 0.00 : b209: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b210: 48 83 f8 24 cmp $0x24,%rax 0.00 : b214: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b218: 0f 84 d2 00 00 00 je b2f0 <_dl_relocate_object+0x280> 0.00 : b21e: 48 83 f8 25 cmp $0x25,%rax 0.00 : b222: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b228: 0f 85 53 0c 00 00 jne be81 <_dl_relocate_object+0xe11> 0.00 : b22e: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : b232: 49 03 06 add (%r14),%rax 0.00 : b235: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b23c: ff d0 callq *%rax 0.00 : b23e: 49 89 04 24 mov %rax,(%r12) 0.00 : b242: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b249: 48 83 c3 18 add $0x18,%rbx 0.00 : b24d: 48 39 9d 78 ff ff ff cmp %rbx,-0x88(%rbp) 0.00 : b254: 76 3a jbe b290 <_dl_relocate_object+0x220> 0.00 : b256: 8b 43 08 mov 0x8(%rbx),%eax 0.00 : b259: 4d 89 dc mov %r11,%r12 0.00 : b25c: 4c 03 23 add (%rbx),%r12 0.00 : b25f: 48 83 f8 07 cmp $0x7,%rax 0.00 : b263: 75 ab jne b210 <_dl_relocate_object+0x1a0> 0.00 : b265: 49 8b 96 e8 03 00 00 mov 0x3e8(%r14),%rdx 0.00 : b26c: 48 85 d2 test %rdx,%rdx 0.00 : b26f: 0f 85 9b 00 00 00 jne b310 <_dl_relocate_object+0x2a0> 0.00 : b275: 4d 01 1c 24 add %r11,(%r12) 0.00 : b279: 48 83 c3 18 add $0x18,%rbx 0.00 : b27d: 48 39 9d 78 ff ff ff cmp %rbx,-0x88(%rbp) 0.00 : b284: 77 d0 ja b256 <_dl_relocate_object+0x1e6> 0.00 : b286: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : b28d: 00 00 00 0.00 : b290: 48 8b 85 48 ff ff ff mov -0xb8(%rbp),%rax 0.00 : b297: 48 83 45 88 18 addq $0x18,-0x78(%rbp) 0.00 : b29c: 48 83 c0 30 add $0x30,%rax 0.00 : b2a0: 48 39 45 88 cmp %rax,-0x78(%rbp) 0.00 : b2a4: 0f 85 31 ff ff ff jne b1db <_dl_relocate_object+0x16b> 0.00 : b2aa: 8b 85 54 ff ff ff mov -0xac(%rbp),%eax 0.00 : b2b0: 85 c0 test %eax,%eax 0.00 : b2b2: 0f 85 84 0e 00 00 jne c13c <_dl_relocate_object+0x10cc> 0.00 : b2b8: 41 80 8e 14 03 00 00 orb $0x4,0x314(%r14) 0.00 : b2bf: 04 0.00 : b2c0: 48 83 bd 68 ff ff ff cmpq $0x0,-0x98(%rbp) 0.00 : b2c7: 00 0.00 : b2c8: 0f 85 37 0e 00 00 jne c105 <_dl_relocate_object+0x1095> 0.00 : b2ce: 49 83 be 60 04 00 00 cmpq $0x0,0x460(%r14) 0.00 : b2d5: 00 0.00 : b2d6: 74 08 je b2e0 <_dl_relocate_object+0x270> 0.00 : b2d8: 4c 89 f7 mov %r14,%rdi 0.00 : b2db: e8 90 fb ff ff callq ae70 <_dl_protect_relro> 0.00 : b2e0: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : b2e4: 5b pop %rbx 0.00 : b2e5: 41 5c pop %r12 0.00 : b2e7: 41 5d pop %r13 0.00 : b2e9: 41 5e pop %r14 0.00 : b2eb: 41 5f pop %r15 0.00 : b2ed: c9 leaveq 0.00 : b2ee: c3 retq 0.00 : b2ef: 90 nop 0.00 : b2f0: 49 89 5c 24 08 mov %rbx,0x8(%r12) 0.00 : b2f5: 49 8b 96 90 02 00 00 mov 0x290(%r14),%rdx 0.00 : b2fc: 49 8b 06 mov (%r14),%rax 0.00 : b2ff: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : b303: 49 89 04 24 mov %rax,(%r12) 0.00 : b307: e9 3d ff ff ff jmpq b249 <_dl_relocate_object+0x1d9> 0.00 : b30c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b310: 4c 89 e0 mov %r12,%rax 0.00 : b313: 49 2b 86 f0 03 00 00 sub 0x3f0(%r14),%rax 0.00 : b31a: 48 8d 04 42 lea (%rdx,%rax,2),%rax 0.00 : b31e: 49 89 04 24 mov %rax,(%r12) 0.00 : b322: e9 22 ff ff ff jmpq b249 <_dl_relocate_object+0x1d9> 0.00 : b327: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b32e: 00 00 33.33 : b330: 49 8b 46 70 mov 0x70(%r14),%rax 0.00 : b334: 49 8b 96 80 01 00 00 mov 0x180(%r14),%rdx 0.00 : b33b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b33f: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : b343: 31 c0 xor %eax,%eax 0.00 : b345: 48 85 d2 test %rdx,%rdx 0.00 : b348: 74 2a je b374 <_dl_relocate_object+0x304> 0.00 : b34a: 8b 72 08 mov 0x8(%rdx),%esi 0.00 : b34d: 48 89 c8 mov %rcx,%rax 0.00 : b350: 48 ba ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rdx 0.00 : b357: aa aa aa 0.00 : b35a: 48 f7 e2 mul %rdx 0.00 : b35d: 48 c1 ea 04 shr $0x4,%rdx 0.00 : b361: 48 39 d6 cmp %rdx,%rsi 0.00 : b364: 48 0f 46 d6 cmovbe %rsi,%rdx 0.00 : b368: 48 8d 14 52 lea (%rdx,%rdx,2),%rdx 0.00 : b36c: 48 8d 04 d5 00 00 00 lea 0x0(,%rdx,8),%rax 0.00 : b373: 00 0.00 : b374: 4c 8d 24 03 lea (%rbx,%rax,1),%r12 0.00 : b378: 48 8d 05 51 46 21 00 lea 0x214651(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : b37f: 49 39 c6 cmp %rax,%r14 0.00 : b382: 74 39 je b3bd <_dl_relocate_object+0x34d> 0.00 : b384: 4d 85 db test %r11,%r11 0.00 : b387: 0f 84 93 04 00 00 je b820 <_dl_relocate_object+0x7b0> 0.00 : b38d: 4c 39 e3 cmp %r12,%rbx 0.00 : b390: 73 2b jae b3bd <_dl_relocate_object+0x34d> 0.00 : b392: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b398: 83 7b 08 08 cmpl $0x8,0x8(%rbx) 0.00 : b39c: 48 8b 03 mov (%rbx),%rax 33.33 : b39f: 90 nop 0.00 : b3a0: 0f 85 ea 0a 00 00 jne be90 <_dl_relocate_object+0xe20> 0.00 : b3a6: 4a 8d 14 18 lea (%rax,%r11,1),%rdx 0.00 : b3aa: 4c 89 d8 mov %r11,%rax 0.00 : b3ad: 48 03 43 10 add 0x10(%rbx),%rax 0.00 : b3b1: 48 83 c3 18 add $0x18,%rbx 0.00 : b3b5: 49 39 dc cmp %rbx,%r12 0.00 : b3b8: 48 89 02 mov %rax,(%rdx) 0.00 : b3bb: 77 db ja b398 <_dl_relocate_object+0x328> 0.00 : b3bd: 49 8b 86 c8 01 00 00 mov 0x1c8(%r14),%rax 0.00 : b3c4: 48 85 c0 test %rax,%rax 0.00 : b3c7: 0f 84 cf 01 00 00 je b59c <_dl_relocate_object+0x52c> 0.00 : b3cd: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b3d4: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : b3d8: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp) 0.00 : b3df: 0f 86 ab fe ff ff jbe b290 <_dl_relocate_object+0x220> 0.00 : b3e5: 0f 1f 00 nopl (%rax) 0.00 : b3e8: 41 8b 44 24 0c mov 0xc(%r12),%eax 0.00 : b3ed: 48 8b 95 70 ff ff ff mov -0x90(%rbp),%rdx 0.00 : b3f4: 4d 89 da mov %r11,%r10 0.00 : b3f7: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : b3fb: 4d 03 14 24 add (%r12),%r10 0.00 : b3ff: 4d 8b 86 e0 02 00 00 mov 0x2e0(%r14),%r8 0.00 : b406: 0f b7 3c 42 movzwl (%rdx,%rax,2),%edi 33.33 : b40a: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : b40e: 4c 8d 2c c1 lea (%rcx,%rax,8),%r13 0.00 : b412: 4c 89 6d c8 mov %r13,-0x38(%rbp) 0.00 : b416: 41 8b 5c 24 08 mov 0x8(%r12),%ebx 0.00 : b41b: 48 83 fb 08 cmp $0x8,%rbx 0.00 : b41f: 0f 84 4b 03 00 00 je b770 <_dl_relocate_object+0x700> 0.00 : b425: 48 85 db test %rbx,%rbx 0.00 : b428: 0f 84 2a 03 00 00 je b758 <_dl_relocate_object+0x6e8> 0.00 : b42e: 41 0f b6 45 04 movzbl 0x4(%r13),%eax 0.00 : b433: 4d 89 f7 mov %r14,%r15 0.00 : b436: 4c 89 ea mov %r13,%rdx 0.00 : b439: c0 e8 04 shr $0x4,%al 0.00 : b43c: 84 c0 test %al,%al 0.00 : b43e: 0f 84 d5 00 00 00 je b519 <_dl_relocate_object+0x4a9> 0.00 : b444: 4d 3b ae 00 04 00 00 cmp 0x400(%r14),%r13 0.00 : b44b: 0f 84 7f 06 00 00 je bad0 <_dl_relocate_object+0xa60> 0.00 : b451: 48 83 fb 07 cmp $0x7,%rbx 0.00 : b455: 40 0f 94 c6 sete %sil 0.00 : b459: 48 83 fb 10 cmp $0x10,%rbx 0.00 : b45d: 0f 94 c2 sete %dl 0.00 : b460: 84 d2 test %dl,%dl 0.00 : b462: 75 09 jne b46d <_dl_relocate_object+0x3fd> 0.00 : b464: 40 84 f6 test %sil,%sil 0.00 : b467: 0f 84 db 01 00 00 je b648 <_dl_relocate_object+0x5d8> 0.00 : b46d: b9 01 00 00 00 mov $0x1,%ecx 0.00 : b472: 89 c8 mov %ecx,%eax 0.00 : b474: 83 c8 02 or $0x2,%eax 0.00 : b477: 48 83 fb 05 cmp $0x5,%rbx 0.00 : b47b: 0f 44 c8 cmove %eax,%ecx 0.00 : b47e: 48 89 f8 mov %rdi,%rax 0.00 : b481: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : b485: 41 89 8e 08 04 00 00 mov %ecx,0x408(%r14) 0.00 : b48c: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : b491: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : b495: 49 89 96 00 04 00 00 mov %rdx,0x400(%r14) 0.00 : b49c: 49 8d 04 c0 lea (%r8,%rax,8),%rax 0.00 : b4a0: 48 85 c0 test %rax,%rax 0.00 : b4a3: 74 0e je b4b3 <_dl_relocate_object+0x443> 0.00 : b4a5: 8b 70 08 mov 0x8(%rax),%esi 0.00 : b4a8: 85 f6 test %esi,%esi 0.00 : b4aa: be 00 00 00 00 mov $0x0,%esi 0.00 : b4af: 48 0f 44 c6 cmove %rsi,%rax 0.00 : b4b3: 8b 3a mov (%rdx),%edi 0.00 : b4b5: 41 89 c9 mov %ecx,%r9d 0.00 : b4b8: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : b4bf: 48 03 bd 60 ff ff ff add -0xa0(%rbp),%rdi 0.00 : b4c6: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : b4cd: 49 89 c0 mov %rax,%r8 0.00 : b4d0: 4c 89 f6 mov %r14,%rsi 0.00 : b4d3: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : b4da: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b4e1: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : b4e8: 00 00 0.00 : b4ea: c7 04 24 01 00 00 00 movl $0x1,(%rsp) 0.00 : b4f1: e8 7a e6 ff ff callq 9b70 <_dl_lookup_symbol_x> 0.00 : b4f6: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : b4fa: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b501: 49 89 c7 mov %rax,%r15 0.00 : b504: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : b50b: 49 89 86 10 04 00 00 mov %rax,0x410(%r14) 0.00 : b512: 49 89 96 18 04 00 00 mov %rdx,0x418(%r14) 0.00 : b519: 31 c9 xor %ecx,%ecx 0.00 : b51b: 48 85 d2 test %rdx,%rdx 0.00 : b51e: 74 17 je b537 <_dl_relocate_object+0x4c7> 0.00 : b520: 0f b6 42 04 movzbl 0x4(%rdx),%eax 0.00 : b524: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : b528: 49 03 0f add (%r15),%rcx 0.00 : b52b: 83 e0 0f and $0xf,%eax 0.00 : b52e: 83 f8 0a cmp $0xa,%eax 0.00 : b531: 0f 84 99 02 00 00 je b7d0 <_dl_relocate_object+0x760> 0.00 : b537: 48 83 fb 25 cmp $0x25,%rbx 0.00 : b53b: 0f 86 57 02 00 00 jbe b798 <_dl_relocate_object+0x728> 0.00 : b541: 31 d2 xor %edx,%edx 0.00 : b543: 89 de mov %ebx,%esi 0.00 : b545: 4c 89 f7 mov %r14,%rdi 0.00 : b548: e8 43 f8 ff ff callq ad90 <_dl_reloc_bad_type> 0.00 : b54d: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : b552: 0f 84 57 09 00 00 je beaf <_dl_relocate_object+0xe3f> 0.00 : b558: 49 8b 87 48 04 00 00 mov 0x448(%r15),%rax 0.00 : b55f: 48 83 f8 01 cmp $0x1,%rax 0.00 : b563: 0f 84 d5 09 00 00 je bf3e <_dl_relocate_object+0xece> 0.00 : b569: 48 85 c0 test %rax,%rax 0.00 : b56c: 0f 84 a0 09 00 00 je bf12 <_dl_relocate_object+0xea2> 0.00 : b572: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : b576: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : b57b: 48 8d 0d 4e a5 00 00 lea 0xa54e(%rip),%rcx # 15ad0 <_dl_tlsdesc_return> 0.00 : b582: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : b586: 49 2b 87 48 04 00 00 sub 0x448(%r15),%rax 0.00 : b58d: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : b591: 49 89 0a mov %rcx,(%r10) 0.00 : b594: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b598: 49 83 c4 18 add $0x18,%r12 0.00 : b59c: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b5a3: 0f 86 e7 fc ff ff jbe b290 <_dl_relocate_object+0x220> 0.00 : b5a9: 41 8b 44 24 0c mov 0xc(%r12),%eax 0.00 : b5ae: 48 8b 55 80 mov -0x80(%rbp),%rdx 0.00 : b5b2: 4d 89 da mov %r11,%r10 0.00 : b5b5: 4d 03 14 24 add (%r12),%r10 0.00 : b5b9: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : b5bd: 4c 8d 2c c2 lea (%rdx,%rax,8),%r13 0.00 : b5c1: 4c 89 6d c8 mov %r13,-0x38(%rbp) 0.00 : b5c5: 41 8b 5c 24 08 mov 0x8(%r12),%ebx 0.00 : b5ca: 48 83 fb 08 cmp $0x8,%rbx 0.00 : b5ce: 0f 84 34 02 00 00 je b808 <_dl_relocate_object+0x798> 0.00 : b5d4: 48 85 db test %rbx,%rbx 0.00 : b5d7: 74 bf je b598 <_dl_relocate_object+0x528> 0.00 : b5d9: 41 0f b6 45 04 movzbl 0x4(%r13),%eax 0.00 : b5de: 4d 89 f7 mov %r14,%r15 0.00 : b5e1: 4c 89 ea mov %r13,%rdx 0.00 : b5e4: c0 e8 04 shr $0x4,%al 0.00 : b5e7: 84 c0 test %al,%al 0.00 : b5e9: 0f 84 01 01 00 00 je b6f0 <_dl_relocate_object+0x680> 0.00 : b5ef: 4d 3b ae 00 04 00 00 cmp 0x400(%r14),%r13 0.00 : b5f6: 74 7d je b675 <_dl_relocate_object+0x605> 0.00 : b5f8: 48 83 fb 07 cmp $0x7,%rbx 0.00 : b5fc: 40 0f 94 c6 sete %sil 0.00 : b600: 48 83 fb 10 cmp $0x10,%rbx 0.00 : b604: 0f 94 c2 sete %dl 0.00 : b607: 84 d2 test %dl,%dl 0.00 : b609: 0f 85 81 05 00 00 jne bb90 <_dl_relocate_object+0xb20> 0.00 : b60f: 40 84 f6 test %sil,%sil 0.00 : b612: 0f 85 78 05 00 00 jne bb90 <_dl_relocate_object+0xb20> 0.00 : b618: 48 83 fb 11 cmp $0x11,%rbx 0.00 : b61c: 0f 84 6e 05 00 00 je bb90 <_dl_relocate_object+0xb20> 0.00 : b622: 48 83 fb 12 cmp $0x12,%rbx 0.00 : b626: 0f 84 64 05 00 00 je bb90 <_dl_relocate_object+0xb20> 0.00 : b62c: 48 83 fb 24 cmp $0x24,%rbx 0.00 : b630: ba 01 00 00 00 mov $0x1,%edx 0.00 : b635: 0f 84 66 05 00 00 je bba1 <_dl_relocate_object+0xb31> 0.00 : b63b: 30 d2 xor %dl,%dl 0.00 : b63d: 0f 1f 00 nopl (%rax) 0.00 : b640: e9 50 05 00 00 jmpq bb95 <_dl_relocate_object+0xb25> 0.00 : b645: 0f 1f 00 nopl (%rax) 0.00 : b648: 48 83 fb 11 cmp $0x11,%rbx 0.00 : b64c: 0f 84 1b fe ff ff je b46d <_dl_relocate_object+0x3fd> 0.00 : b652: 48 83 fb 12 cmp $0x12,%rbx 0.00 : b656: 0f 84 11 fe ff ff je b46d <_dl_relocate_object+0x3fd> 0.00 : b65c: 48 83 fb 24 cmp $0x24,%rbx 0.00 : b660: b9 01 00 00 00 mov $0x1,%ecx 0.00 : b665: 0f 84 13 fe ff ff je b47e <_dl_relocate_object+0x40e> 0.00 : b66b: 30 c9 xor %cl,%cl 0.00 : b66d: 0f 1f 00 nopl (%rax) 0.00 : b670: e9 fd fd ff ff jmpq b472 <_dl_relocate_object+0x402> 0.00 : b675: 48 83 fb 07 cmp $0x7,%rbx 0.00 : b679: 40 0f 94 c6 sete %sil 0.00 : b67d: 48 83 fb 10 cmp $0x10,%rbx 0.00 : b681: 0f 94 c2 sete %dl 0.00 : b684: 40 84 f6 test %sil,%sil 0.00 : b687: 0f 85 7b 08 00 00 jne bf08 <_dl_relocate_object+0xe98> 0.00 : b68d: 84 d2 test %dl,%dl 0.00 : b68f: 0f 85 73 08 00 00 jne bf08 <_dl_relocate_object+0xe98> 0.00 : b695: 48 83 fb 11 cmp $0x11,%rbx 0.00 : b699: 0f 84 69 08 00 00 je bf08 <_dl_relocate_object+0xe98> 0.00 : b69f: 48 83 fb 12 cmp $0x12,%rbx 0.00 : b6a3: 0f 84 5f 08 00 00 je bf08 <_dl_relocate_object+0xe98> 0.00 : b6a9: 48 83 fb 24 cmp $0x24,%rbx 0.00 : b6ad: b9 01 00 00 00 mov $0x1,%ecx 0.00 : b6b2: 74 0e je b6c2 <_dl_relocate_object+0x652> 0.00 : b6b4: 30 c9 xor %cl,%cl 0.00 : b6b6: 89 c8 mov %ecx,%eax 0.00 : b6b8: 83 c8 02 or $0x2,%eax 0.00 : b6bb: 48 83 fb 05 cmp $0x5,%rbx 0.00 : b6bf: 0f 44 c8 cmove %eax,%ecx 0.00 : b6c2: 41 39 8e 08 04 00 00 cmp %ecx,0x408(%r14) 0.00 : b6c9: 0f 85 38 ff ff ff jne b607 <_dl_relocate_object+0x597> 0.00 : b6cf: 48 83 05 e1 42 21 00 addq $0x1,0x2142e1(%rip) # 21f9b8 <_rtld_global+0x958> 0.00 : b6d6: 01 0.00 : b6d7: 49 8b 86 18 04 00 00 mov 0x418(%r14),%rax 0.00 : b6de: 4d 8b be 10 04 00 00 mov 0x410(%r14),%r15 0.00 : b6e5: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : b6e9: 48 89 c2 mov %rax,%rdx 0.00 : b6ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b6f0: 31 c9 xor %ecx,%ecx 0.00 : b6f2: 48 85 d2 test %rdx,%rdx 0.00 : b6f5: 74 17 je b70e <_dl_relocate_object+0x69e> 0.00 : b6f7: 0f b6 42 04 movzbl 0x4(%rdx),%eax 0.00 : b6fb: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : b6ff: 49 03 0f add (%r15),%rcx 0.00 : b702: 83 e0 0f and $0xf,%eax 0.00 : b705: 83 f8 0a cmp $0xa,%eax 0.00 : b708: 0f 84 2f 04 00 00 je bb3d <_dl_relocate_object+0xacd> 0.00 : b70e: 48 83 fb 25 cmp $0x25,%rbx 0.00 : b712: 0f 87 29 fe ff ff ja b541 <_dl_relocate_object+0x4d1> 0.00 : b718: 48 8d 35 21 d3 00 00 lea 0xd321(%rip),%rsi # 18a40 0.00 : b71f: 48 63 04 9e movslq (%rsi,%rbx,4),%rax 0.00 : b723: 48 01 f0 add %rsi,%rax 0.00 : b726: ff e0 jmpq *%rax 0.00 : b728: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : b72d: 74 29 je b758 <_dl_relocate_object+0x6e8> 0.00 : b72f: 49 83 bf 48 04 00 00 cmpq $0x1,0x448(%r15) 0.00 : b736: 01 0.00 : b737: 0f 86 a2 07 00 00 jbe bedf <_dl_relocate_object+0xe6f> 0.00 : b73d: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : b741: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : b746: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : b74a: 49 2b 87 48 04 00 00 sub 0x448(%r15),%rax 0.00 : b751: 49 89 02 mov %rax,(%r10) 0.00 : b754: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b758: 49 83 c4 18 add $0x18,%r12 0.00 : b75c: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b763: 0f 87 7f fc ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : b769: e9 22 fb ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : b76e: 66 90 xchg %ax,%ax 0.00 : b770: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : b775: 49 03 06 add (%r14),%rax 0.00 : b778: 49 83 c4 18 add $0x18,%r12 0.00 : b77c: 49 89 02 mov %rax,(%r10) 0.00 : b77f: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b786: 0f 87 5c fc ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : b78c: e9 ff fa ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : b791: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b798: 48 8d 15 39 d3 00 00 lea 0xd339(%rip),%rdx # 18ad8 0.00 : b79f: 48 63 04 9a movslq (%rdx,%rbx,4),%rax 0.00 : b7a3: 48 01 d0 add %rdx,%rax 0.00 : b7a6: ff e0 jmpq *%rax 0.00 : b7a8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b7af: 00 0.00 : b7b0: 49 03 4c 24 10 add 0x10(%r12),%rcx 0.00 : b7b5: 49 83 c4 18 add $0x18,%r12 0.00 : b7b9: 49 89 0a mov %rcx,(%r10) 0.00 : b7bc: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b7c3: 0f 87 1f fc ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : b7c9: e9 c2 fa ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : b7ce: 66 90 xchg %ax,%ax 0.00 : b7d0: 66 83 7a 06 00 cmpw $0x0,0x6(%rdx) 0.00 : b7d5: 0f 84 5c fd ff ff je b537 <_dl_relocate_object+0x4c7> 0.00 : b7db: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : b7e2: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b7e9: ff d1 callq *%rcx 0.00 : b7eb: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b7f2: 48 89 c1 mov %rax,%rcx 0.00 : b7f5: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : b7fc: e9 36 fd ff ff jmpq b537 <_dl_relocate_object+0x4c7> 0.00 : b801: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : b808: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : b80d: 49 03 06 add (%r14),%rax 0.00 : b810: 49 83 c4 18 add $0x18,%r12 0.00 : b814: 49 89 02 mov %rax,(%r10) 0.00 : b817: e9 80 fd ff ff jmpq b59c <_dl_relocate_object+0x52c> 0.00 : b81c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b820: 49 83 be 38 02 00 00 cmpq $0x0,0x238(%r14) 0.00 : b827: 00 0.00 : b828: 0f 85 8f fb ff ff jne b3bd <_dl_relocate_object+0x34d> 0.00 : b82e: e9 5a fb ff ff jmpq b38d <_dl_relocate_object+0x31d> 0.00 : b833: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : b838: 84 db test %bl,%bl 0.00 : b83a: 0f 84 df f8 ff ff je b11f <_dl_relocate_object+0xaf> 0.00 : b840: 49 8b 46 58 mov 0x58(%r14),%rax 0.00 : b844: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : b848: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : b84c: 48 85 c0 test %rax,%rax 0.00 : b84f: 74 15 je b866 <_dl_relocate_object+0x7f6> 0.00 : b851: 49 03 06 add (%r14),%rax 0.00 : b854: 49 89 86 e8 03 00 00 mov %rax,0x3e8(%r14) 0.00 : b85b: 48 8d 42 18 lea 0x18(%rdx),%rax 0.00 : b85f: 49 89 86 f0 03 00 00 mov %rax,0x3f0(%r14) 0.00 : b866: 4c 89 72 08 mov %r14,0x8(%rdx) 0.00 : b86a: 44 8b 85 54 ff ff ff mov -0xac(%rbp),%r8d 0.00 : b871: 45 85 c0 test %r8d,%r8d 0.00 : b874: 0f 84 f4 02 00 00 je bb6e <_dl_relocate_object+0xafe> 0.00 : b87a: 48 8d 0d 7f 84 00 00 lea 0x847f(%rip),%rcx # 13d00 <_dl_runtime_profile> 0.00 : b881: 48 89 4a 10 mov %rcx,0x10(%rdx) 0.00 : b885: 48 8b 3d 14 34 21 00 mov 0x213414(%rip),%rdi # 21eca0 <_rtld_global_ro+0x80> 0.00 : b88c: 48 85 ff test %rdi,%rdi 0.00 : b88f: 0f 84 8a f8 ff ff je b11f <_dl_relocate_object+0xaf> 0.00 : b895: 4c 89 f6 mov %r14,%rsi 0.00 : b898: e8 e3 32 00 00 callq eb80 <_dl_name_match_p> 0.00 : b89d: 85 c0 test %eax,%eax 0.00 : b89f: 0f 84 7a f8 ff ff je b11f <_dl_relocate_object+0xaf> 0.00 : b8a5: 4c 89 35 fc 40 21 00 mov %r14,0x2140fc(%rip) # 21f9a8 <_rtld_global+0x948> 0.00 : b8ac: e9 6e f8 ff ff jmpq b11f <_dl_relocate_object+0xaf> 0.00 : b8b1: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : b8b6: 49 03 06 add (%r14),%rax 0.00 : b8b9: 49 83 c4 18 add $0x18,%r12 0.00 : b8bd: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : b8c4: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b8cb: ff d0 callq *%rax 0.00 : b8cd: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : b8d4: 49 89 02 mov %rax,(%r10) 0.00 : b8d7: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b8de: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b8e5: 0f 87 fd fa ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : b8eb: e9 a0 f9 ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : b8f0: 48 89 c8 mov %rcx,%rax 0.00 : b8f3: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : b8f8: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : b8fd: 48 39 d0 cmp %rdx,%rax 0.00 : b900: 41 89 02 mov %eax,(%r10) 0.00 : b903: 0f 86 4f fe ff ff jbe b758 <_dl_relocate_object+0x6e8> 0.00 : b909: 48 8d 3d e8 01 01 00 lea 0x101e8(%rip),%rdi # 1baf8 <__PRETTY_FUNCTION__.3644+0x1787> 0.00 : b910: 48 8b 05 f1 32 21 00 mov 0x2132f1(%rip),%rax # 21ec08 <_dl_argv> 0.00 : b917: 49 8b 76 68 mov 0x68(%r14),%rsi 0.00 : b91b: 48 8d 0d 88 dc 00 00 lea 0xdc88(%rip),%rcx # 195aa 0.00 : b922: 48 8b 10 mov (%rax),%rdx 0.00 : b925: 48 85 d2 test %rdx,%rdx 0.00 : b928: 48 0f 44 d1 cmove %rcx,%rdx 0.00 : b92c: 41 8b 4d 00 mov 0x0(%r13),%ecx 0.00 : b930: 31 c0 xor %eax,%eax 0.00 : b932: 48 03 4e 08 add 0x8(%rsi),%rcx 0.00 : b936: 48 89 fe mov %rdi,%rsi 0.00 : b939: bf 02 00 00 00 mov $0x2,%edi 0.00 : b93e: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b945: 49 83 c4 18 add $0x18,%r12 0.00 : b949: e8 b2 38 00 00 callq f200 <_dl_dprintf> 0.00 : b94e: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : b955: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b95c: 0f 87 86 fa ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : b962: e9 29 f9 ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : b967: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : b96e: 00 00 0.00 : b970: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : b974: 48 85 c0 test %rax,%rax 0.00 : b977: 0f 84 db fd ff ff je b758 <_dl_relocate_object+0x6e8> 0.00 : b97d: 49 8b 55 10 mov 0x10(%r13),%rdx 0.00 : b981: 48 39 50 10 cmp %rdx,0x10(%rax) 0.00 : b985: 48 89 ce mov %rcx,%rsi 0.00 : b988: 48 0f 46 50 10 cmovbe 0x10(%rax),%rdx 0.00 : b98d: 4c 89 d7 mov %r10,%rdi 0.00 : b990: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : b997: e8 54 b9 00 00 callq 172f0 0.00 : b99c: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : b9a0: 49 8b 75 10 mov 0x10(%r13),%rsi 0.00 : b9a4: 48 8d 3d cd 01 01 00 lea 0x101cd(%rip),%rdi # 1bb78 <__PRETTY_FUNCTION__.3644+0x1807> 0.00 : b9ab: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : b9b2: 48 39 70 10 cmp %rsi,0x10(%rax) 0.00 : b9b6: 0f 87 54 ff ff ff ja b910 <_dl_relocate_object+0x8a0> 0.00 : b9bc: 0f 83 96 fd ff ff jae b758 <_dl_relocate_object+0x6e8> 0.00 : b9c2: 8b 0d 8c 32 21 00 mov 0x21328c(%rip),%ecx # 21ec54 <_rtld_global_ro+0x34> 0.00 : b9c8: 48 8d 3d a9 01 01 00 lea 0x101a9(%rip),%rdi # 1bb78 <__PRETTY_FUNCTION__.3644+0x1807> 0.00 : b9cf: 85 c9 test %ecx,%ecx 0.00 : b9d1: 0f 85 39 ff ff ff jne b910 <_dl_relocate_object+0x8a0> 0.00 : b9d7: e9 7c fd ff ff jmpq b758 <_dl_relocate_object+0x6e8> 0.00 : b9dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : b9e0: 48 89 c8 mov %rcx,%rax 0.00 : b9e3: 48 8d 3d 4e 01 01 00 lea 0x1014e(%rip),%rdi # 1bb38 <__PRETTY_FUNCTION__.3644+0x17c7> 0.00 : b9ea: 4c 29 d0 sub %r10,%rax 0.00 : b9ed: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : b9f2: 48 63 d0 movslq %eax,%rdx 0.00 : b9f5: 41 89 02 mov %eax,(%r10) 0.00 : b9f8: 48 39 d0 cmp %rdx,%rax 0.00 : b9fb: 0f 85 0f ff ff ff jne b910 <_dl_relocate_object+0x8a0> 0.00 : ba01: e9 52 fd ff ff jmpq b758 <_dl_relocate_object+0x6e8> 0.00 : ba06: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : ba0b: 0f 84 b6 04 00 00 je bec7 <_dl_relocate_object+0xe57> 0.00 : ba11: 49 8b 87 48 04 00 00 mov 0x448(%r15),%rax 0.00 : ba18: 48 83 f8 01 cmp $0x1,%rax 0.00 : ba1c: 0f 84 79 02 00 00 je bc9b <_dl_relocate_object+0xc2b> 0.00 : ba22: 48 85 c0 test %rax,%rax 0.00 : ba25: 0f 84 44 02 00 00 je bc6f <_dl_relocate_object+0xbff> 0.00 : ba2b: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : ba2f: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : ba34: 49 83 c4 18 add $0x18,%r12 0.00 : ba38: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : ba3c: 49 2b 87 48 04 00 00 sub 0x448(%r15),%rax 0.00 : ba43: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : ba47: 48 8d 05 82 a0 00 00 lea 0xa082(%rip),%rax # 15ad0 <_dl_tlsdesc_return> 0.00 : ba4e: 49 89 02 mov %rax,(%r10) 0.00 : ba51: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : ba58: 0f 87 8a f9 ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : ba5e: e9 2d f8 ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : ba63: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : ba68: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : ba6c: 48 85 d2 test %rdx,%rdx 0.00 : ba6f: 0f 84 e3 fc ff ff je b758 <_dl_relocate_object+0x6e8> 0.00 : ba75: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : ba7a: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : ba7e: 49 83 c4 18 add $0x18,%r12 0.00 : ba82: 49 89 02 mov %rax,(%r10) 0.00 : ba85: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : ba8c: 0f 87 56 f9 ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : ba92: e9 f9 f7 ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : ba97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : ba9e: 00 00 0.00 : baa0: 4d 85 ff test %r15,%r15 0.00 : baa3: 0f 84 af fc ff ff je b758 <_dl_relocate_object+0x6e8> 0.00 : baa9: 49 8b 87 50 04 00 00 mov 0x450(%r15),%rax 0.00 : bab0: 49 83 c4 18 add $0x18,%r12 0.00 : bab4: 49 89 02 mov %rax,(%r10) 0.00 : bab7: 4c 39 a5 78 ff ff ff cmp %r12,-0x88(%rbp) 0.00 : babe: 0f 87 24 f9 ff ff ja b3e8 <_dl_relocate_object+0x378> 0.00 : bac4: e9 c7 f7 ff ff jmpq b290 <_dl_relocate_object+0x220> 0.00 : bac9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : bad0: 48 83 fb 07 cmp $0x7,%rbx 0.00 : bad4: 40 0f 94 c6 sete %sil 0.00 : bad8: 48 83 fb 10 cmp $0x10,%rbx 0.00 : badc: 0f 94 c2 sete %dl 0.00 : badf: 40 84 f6 test %sil,%sil 0.00 : bae2: 0f 84 41 01 00 00 je bc29 <_dl_relocate_object+0xbb9> 0.00 : bae8: b9 01 00 00 00 mov $0x1,%ecx 0.00 : baed: 89 c8 mov %ecx,%eax 0.00 : baef: 83 c8 02 or $0x2,%eax 0.00 : baf2: 48 83 fb 05 cmp $0x5,%rbx 0.00 : baf6: 0f 44 c8 cmove %eax,%ecx 0.00 : baf9: 41 39 8e 08 04 00 00 cmp %ecx,0x408(%r14) 0.00 : bb00: 0f 85 5a f9 ff ff jne b460 <_dl_relocate_object+0x3f0> 0.00 : bb06: 48 83 05 aa 3e 21 00 addq $0x1,0x213eaa(%rip) # 21f9b8 <_rtld_global+0x958> 0.00 : bb0d: 01 0.00 : bb0e: 49 8b 86 18 04 00 00 mov 0x418(%r14),%rax 0.00 : bb15: 4d 8b be 10 04 00 00 mov 0x410(%r14),%r15 0.00 : bb1c: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : bb20: 48 89 c2 mov %rax,%rdx 0.00 : bb23: e9 f1 f9 ff ff jmpq b519 <_dl_relocate_object+0x4a9> 0.00 : bb28: 49 83 be 00 01 00 00 cmpq $0x0,0x100(%r14) 0.00 : bb2f: 00 0.00 : bb30: 44 0f 45 a5 54 ff ff cmovne -0xac(%rbp),%r12d 0.00 : bb37: ff 0.00 : bb38: e9 99 f5 ff ff jmpq b0d6 <_dl_relocate_object+0x66> 0.00 : bb3d: 66 83 7a 06 00 cmpw $0x0,0x6(%rdx) 0.00 : bb42: 0f 84 c6 fb ff ff je b70e <_dl_relocate_object+0x69e> 0.00 : bb48: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bb4f: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bb56: ff d1 callq *%rcx 0.00 : bb58: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bb5f: 48 89 c1 mov %rax,%rcx 0.00 : bb62: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bb69: e9 a0 fb ff ff jmpq b70e <_dl_relocate_object+0x69e> 0.00 : bb6e: 48 8d 35 1b 81 00 00 lea 0x811b(%rip),%rsi # 13c90 <_dl_runtime_resolve> 0.00 : bb75: 84 db test %bl,%bl 0.00 : bb77: 48 89 72 10 mov %rsi,0x10(%rdx) 0.00 : bb7b: 49 8b 86 88 02 00 00 mov 0x288(%r14),%rax 0.00 : bb82: 0f 84 b9 f5 ff ff je b141 <_dl_relocate_object+0xd1> 0.00 : bb88: e9 9d f5 ff ff jmpq b12a <_dl_relocate_object+0xba> 0.00 : bb8d: 0f 1f 00 nopl (%rax) 0.00 : bb90: ba 01 00 00 00 mov $0x1,%edx 0.00 : bb95: 89 d0 mov %edx,%eax 0.00 : bb97: 83 c8 02 or $0x2,%eax 0.00 : bb9a: 48 83 fb 05 cmp $0x5,%rbx 0.00 : bb9e: 0f 44 d0 cmove %eax,%edx 0.00 : bba1: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : bba5: 41 89 96 08 04 00 00 mov %edx,0x408(%r14) 0.00 : bbac: 41 89 d1 mov %edx,%r9d 0.00 : bbaf: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : bbb6: 48 8b 95 40 ff ff ff mov -0xc0(%rbp),%rdx 0.00 : bbbd: 45 31 c0 xor %r8d,%r8d 0.00 : bbc0: 4c 89 f6 mov %r14,%rsi 0.00 : bbc3: 49 89 86 00 04 00 00 mov %rax,0x400(%r14) 0.00 : bbca: 8b 38 mov (%rax),%edi 0.00 : bbcc: 48 03 bd 60 ff ff ff add -0xa0(%rbp),%rdi 0.00 : bbd3: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bbda: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bbe1: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : bbe8: 00 00 0.00 : bbea: c7 04 24 01 00 00 00 movl $0x1,(%rsp) 0.00 : bbf1: e8 7a df ff ff callq 9b70 <_dl_lookup_symbol_x> 0.00 : bbf6: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : bbfa: 31 c9 xor %ecx,%ecx 0.00 : bbfc: 49 89 c7 mov %rax,%r15 0.00 : bbff: 49 89 86 10 04 00 00 mov %rax,0x410(%r14) 0.00 : bc06: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bc0d: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bc14: 48 85 d2 test %rdx,%rdx 0.00 : bc17: 49 89 96 18 04 00 00 mov %rdx,0x418(%r14) 0.00 : bc1e: 0f 85 d3 fa ff ff jne b6f7 <_dl_relocate_object+0x687> 0.00 : bc24: e9 e5 fa ff ff jmpq b70e <_dl_relocate_object+0x69e> 0.00 : bc29: 84 d2 test %dl,%dl 0.00 : bc2b: 0f 85 b7 fe ff ff jne bae8 <_dl_relocate_object+0xa78> 0.00 : bc31: 48 83 fb 11 cmp $0x11,%rbx 0.00 : bc35: 0f 1f 00 nopl (%rax) 0.00 : bc38: 0f 84 aa fe ff ff je bae8 <_dl_relocate_object+0xa78> 0.00 : bc3e: 48 83 fb 12 cmp $0x12,%rbx 0.00 : bc42: 0f 84 a0 fe ff ff je bae8 <_dl_relocate_object+0xa78> 0.00 : bc48: 48 83 fb 24 cmp $0x24,%rbx 0.00 : bc4c: b9 01 00 00 00 mov $0x1,%ecx 0.00 : bc51: 0f 84 a2 fe ff ff je baf9 <_dl_relocate_object+0xa89> 0.00 : bc57: 30 c9 xor %cl,%cl 0.00 : bc59: e9 8f fe ff ff jmpq baed <_dl_relocate_object+0xa7d> 0.00 : bc5e: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : bc62: 48 03 50 08 add 0x8(%rax),%rdx 0.00 : bc66: 48 89 55 98 mov %rdx,-0x68(%rbp) 0.00 : bc6a: e9 52 f5 ff ff jmpq b1c1 <_dl_relocate_object+0x151> 0.00 : bc6f: 4c 89 ff mov %r15,%rdi 0.00 : bc72: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bc79: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bc80: e8 db f2 ff ff callq af60 <_dl_try_allocate_static_tls> 0.00 : bc85: 85 c0 test %eax,%eax 0.00 : bc87: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bc8e: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bc95: 0f 84 90 fd ff ff je ba2b <_dl_relocate_object+0x9bb> 0.00 : bc9b: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : bc9f: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : bca4: 4c 89 ff mov %r15,%rdi 0.00 : bca7: 48 03 70 08 add 0x8(%rax),%rsi 0.00 : bcab: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bcb2: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bcb9: e8 42 99 00 00 callq 15600 <_dl_make_tlsdesc_dynamic> 0.00 : bcbe: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bcc5: 48 8d 35 24 9e 00 00 lea 0x9e24(%rip),%rsi # 15af0 <_dl_tlsdesc_dynamic> 0.00 : bccc: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : bcd0: 49 89 32 mov %rsi,(%r10) 0.00 : bcd3: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bcda: e9 79 fa ff ff jmpq b758 <_dl_relocate_object+0x6e8> 0.00 : bcdf: 49 03 4c 24 10 add 0x10(%r12),%rcx 0.00 : bce4: 49 83 c4 18 add $0x18,%r12 0.00 : bce8: 49 89 0a mov %rcx,(%r10) 0.00 : bceb: e9 ac f8 ff ff jmpq b59c <_dl_relocate_object+0x52c> 0.00 : bcf0: 4d 85 ff test %r15,%r15 0.00 : bcf3: 0f 84 9f f8 ff ff je b598 <_dl_relocate_object+0x528> 0.00 : bcf9: 49 8b 87 50 04 00 00 mov 0x450(%r15),%rax 0.00 : bd00: 49 89 02 mov %rax,(%r10) 0.00 : bd03: e9 90 f8 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : bd08: 48 89 c8 mov %rcx,%rax 0.00 : bd0b: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : bd10: be ff ff ff ff mov $0xffffffff,%esi 0.00 : bd15: 48 39 f0 cmp %rsi,%rax 0.00 : bd18: 41 89 02 mov %eax,(%r10) 0.00 : bd1b: 0f 86 77 f8 ff ff jbe b598 <_dl_relocate_object+0x528> 0.00 : bd21: 48 8d 3d d0 fd 00 00 lea 0xfdd0(%rip),%rdi # 1baf8 <__PRETTY_FUNCTION__.3644+0x1787> 0.00 : bd28: 48 8b 05 d9 2e 21 00 mov 0x212ed9(%rip),%rax # 21ec08 <_dl_argv> 0.00 : bd2f: 49 8b 76 68 mov 0x68(%r14),%rsi 0.00 : bd33: 41 8b 4d 00 mov 0x0(%r13),%ecx 0.00 : bd37: 48 8b 10 mov (%rax),%rdx 0.00 : bd3a: 48 8d 05 69 d8 00 00 lea 0xd869(%rip),%rax # 195aa 0.00 : bd41: 48 85 d2 test %rdx,%rdx 0.00 : bd44: 48 0f 44 d0 cmove %rax,%rdx 0.00 : bd48: 48 03 4e 08 add 0x8(%rsi),%rcx 0.00 : bd4c: 31 c0 xor %eax,%eax 0.00 : bd4e: 48 89 fe mov %rdi,%rsi 0.00 : bd51: bf 02 00 00 00 mov $0x2,%edi 0.00 : bd56: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bd5d: e8 9e 34 00 00 callq f200 <_dl_dprintf> 0.00 : bd62: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bd69: e9 2a f8 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : bd6e: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : bd72: 48 85 c0 test %rax,%rax 0.00 : bd75: 0f 84 1d f8 ff ff je b598 <_dl_relocate_object+0x528> 0.00 : bd7b: 49 8b 55 10 mov 0x10(%r13),%rdx 0.00 : bd7f: 48 39 50 10 cmp %rdx,0x10(%rax) 0.00 : bd83: 4c 89 d7 mov %r10,%rdi 0.00 : bd86: 48 0f 46 50 10 cmovbe 0x10(%rax),%rdx 0.00 : bd8b: 48 89 ce mov %rcx,%rsi 0.00 : bd8e: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bd95: e8 56 b5 00 00 callq 172f0 0.00 : bd9a: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : bd9e: 49 8b 55 10 mov 0x10(%r13),%rdx 0.00 : bda2: 48 8d 3d cf fd 00 00 lea 0xfdcf(%rip),%rdi # 1bb78 <__PRETTY_FUNCTION__.3644+0x1807> 0.00 : bda9: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bdb0: 48 39 50 10 cmp %rdx,0x10(%rax) 0.00 : bdb4: 0f 87 6e ff ff ff ja bd28 <_dl_relocate_object+0xcb8> 0.00 : bdba: 0f 83 d8 f7 ff ff jae b598 <_dl_relocate_object+0x528> 0.00 : bdc0: 8b 15 8e 2e 21 00 mov 0x212e8e(%rip),%edx # 21ec54 <_rtld_global_ro+0x34> 0.00 : bdc6: 48 8d 3d ab fd 00 00 lea 0xfdab(%rip),%rdi # 1bb78 <__PRETTY_FUNCTION__.3644+0x1807> 0.00 : bdcd: 85 d2 test %edx,%edx 0.00 : bdcf: 0f 85 53 ff ff ff jne bd28 <_dl_relocate_object+0xcb8> 0.00 : bdd5: e9 be f7 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : bdda: 48 89 c8 mov %rcx,%rax 0.00 : bddd: 48 8d 3d 54 fd 00 00 lea 0xfd54(%rip),%rdi # 1bb38 <__PRETTY_FUNCTION__.3644+0x17c7> 0.00 : bde4: 4c 29 d0 sub %r10,%rax 0.00 : bde7: 49 03 44 24 10 add 0x10(%r12),%rax 0.00 : bdec: 48 63 d0 movslq %eax,%rdx 0.00 : bdef: 41 89 02 mov %eax,(%r10) 0.00 : bdf2: 48 39 d0 cmp %rdx,%rax 0.00 : bdf5: 0f 85 2d ff ff ff jne bd28 <_dl_relocate_object+0xcb8> 0.00 : bdfb: e9 98 f7 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : be00: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : be05: 49 03 06 add (%r14),%rax 0.00 : be08: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : be0f: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : be16: ff d0 callq *%rax 0.00 : be18: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : be1f: 49 89 02 mov %rax,(%r10) 0.00 : be22: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : be29: e9 6a f7 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : be2e: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : be33: 0f 84 5f f7 ff ff je b598 <_dl_relocate_object+0x528> 0.00 : be39: 49 83 bf 48 04 00 00 cmpq $0x1,0x448(%r15) 0.00 : be40: 01 0.00 : be41: 0f 86 3b 01 00 00 jbe bf82 <_dl_relocate_object+0xf12> 0.00 : be47: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : be4b: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : be50: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : be54: 49 2b 87 48 04 00 00 sub 0x448(%r15),%rax 0.00 : be5b: 49 89 02 mov %rax,(%r10) 0.00 : be5e: e9 35 f7 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : be63: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : be67: 48 85 d2 test %rdx,%rdx 0.00 : be6a: 0f 84 28 f7 ff ff je b598 <_dl_relocate_object+0x528> 0.00 : be70: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : be75: 48 03 42 08 add 0x8(%rdx),%rax 0.00 : be79: 49 89 02 mov %rax,(%r10) 0.00 : be7c: e9 17 f7 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : be81: ba 01 00 00 00 mov $0x1,%edx 0.00 : be86: 89 c6 mov %eax,%esi 0.00 : be88: 4c 89 f7 mov %r14,%rdi 0.00 : be8b: e8 00 ef ff ff callq ad90 <_dl_reloc_bad_type> 0.00 : be90: 48 8d 0d 19 08 01 00 lea 0x10819(%rip),%rcx # 1c6b0 <__PRETTY_FUNCTION__.11640> 0.00 : be97: 48 8d 35 4a e7 00 00 lea 0xe74a(%rip),%rsi # 1a5e8 <__PRETTY_FUNCTION__.3644+0x277> 0.00 : be9e: 48 8d 3d 63 e7 00 00 lea 0xe763(%rip),%rdi # 1a608 <__PRETTY_FUNCTION__.3644+0x297> 0.00 : bea5: ba d2 01 00 00 mov $0x1d2,%edx 0.00 : beaa: e8 c1 8e 00 00 callq 14d70 <__GI___assert_fail> 0.00 : beaf: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : beb4: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : beb8: 48 8d 05 21 9c 00 00 lea 0x9c21(%rip),%rax # 15ae0 <_dl_tlsdesc_undefweak> 0.00 : bebf: 49 89 02 mov %rax,(%r10) 0.00 : bec2: e9 d1 f6 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : bec7: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : becc: 48 8d 0d 0d 9c 00 00 lea 0x9c0d(%rip),%rcx # 15ae0 <_dl_tlsdesc_undefweak> 0.00 : bed3: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : bed7: 49 89 0a mov %rcx,(%r10) 0.00 : beda: e9 79 f8 ff ff jmpq b758 <_dl_relocate_object+0x6e8> 0.00 : bedf: 4c 89 ff mov %r15,%rdi 0.00 : bee2: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bee9: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bef0: e8 3b f1 ff ff callq b030 <_dl_allocate_static_tls> 0.00 : bef5: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : befc: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bf03: e9 35 f8 ff ff jmpq b73d <_dl_relocate_object+0x6cd> 0.00 : bf08: b9 01 00 00 00 mov $0x1,%ecx 0.00 : bf0d: e9 a4 f7 ff ff jmpq b6b6 <_dl_relocate_object+0x646> 0.00 : bf12: 4c 89 ff mov %r15,%rdi 0.00 : bf15: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bf1c: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bf23: e8 38 f0 ff ff callq af60 <_dl_try_allocate_static_tls> 0.00 : bf28: 85 c0 test %eax,%eax 0.00 : bf2a: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bf31: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bf38: 0f 84 34 f6 ff ff je b572 <_dl_relocate_object+0x502> 0.00 : bf3e: 48 8b 45 c8 mov -0x38(%rbp),%rax 0.00 : bf42: 49 8b 74 24 10 mov 0x10(%r12),%rsi 0.00 : bf47: 4c 89 ff mov %r15,%rdi 0.00 : bf4a: 48 03 70 08 add 0x8(%rax),%rsi 0.00 : bf4e: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bf55: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bf5c: e8 9f 96 00 00 callq 15600 <_dl_make_tlsdesc_dynamic> 0.00 : bf61: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bf68: 48 8d 15 81 9b 00 00 lea 0x9b81(%rip),%rdx # 15af0 <_dl_tlsdesc_dynamic> 0.00 : bf6f: 49 89 42 08 mov %rax,0x8(%r10) 0.00 : bf73: 49 89 12 mov %rdx,(%r10) 0.00 : bf76: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bf7d: e9 16 f6 ff ff jmpq b598 <_dl_relocate_object+0x528> 0.00 : bf82: 4c 89 ff mov %r15,%rdi 0.00 : bf85: 4c 89 95 38 ff ff ff mov %r10,-0xc8(%rbp) 0.00 : bf8c: 4c 89 9d 30 ff ff ff mov %r11,-0xd0(%rbp) 0.00 : bf93: e8 98 f0 ff ff callq b030 <_dl_allocate_static_tls> 0.00 : bf98: 4c 8b 9d 30 ff ff ff mov -0xd0(%rbp),%r11 0.00 : bf9f: 4c 8b 95 38 ff ff ff mov -0xc8(%rbp),%r10 0.00 : bfa6: e9 9c fe ff ff jmpq be47 <_dl_relocate_object+0xdd7> 0.00 : bfab: 41 0f b7 8e b0 02 00 movzwl 0x2b0(%r14),%ecx 0.00 : bfb2: 00 0.00 : bfb3: 49 8b 9e a0 02 00 00 mov 0x2a0(%r14),%rbx 0.00 : bfba: 48 8d 14 cd 00 00 00 lea 0x0(,%rcx,8),%rdx 0.00 : bfc1: 00 0.00 : bfc2: 48 89 c8 mov %rcx,%rax 0.00 : bfc5: 48 c1 e0 06 shl $0x6,%rax 0.00 : bfc9: 48 29 d0 sub %rdx,%rax 0.00 : bfcc: 48 8d 04 03 lea (%rbx,%rax,1),%rax 0.00 : bfd0: 48 39 c3 cmp %rax,%rbx 0.00 : bfd3: 0f 83 18 f1 ff ff jae b0f1 <_dl_relocate_object+0x81> 0.00 : bfd9: 48 c7 85 68 ff ff ff movq $0x0,-0x98(%rbp) 0.00 : bfe0: 00 00 00 00 0.00 : bfe4: 49 bf ff ff ff ff 02 movabs $0x2ffffffff,%r15 0.00 : bfeb: 00 00 00 0.00 : bfee: eb 26 jmp c016 <_dl_relocate_object+0xfa6> 0.00 : bff0: 48 8d 14 cd 00 00 00 lea 0x0(,%rcx,8),%rdx 0.00 : bff7: 00 0.00 : bff8: 48 89 c8 mov %rcx,%rax 0.00 : bffb: 48 83 c3 38 add $0x38,%rbx 0.00 : bfff: 48 c1 e0 06 shl $0x6,%rax 0.00 : c003: 48 29 d0 sub %rdx,%rax 0.00 : c006: 49 03 86 a0 02 00 00 add 0x2a0(%r14),%rax 0.00 : c00d: 48 39 c3 cmp %rax,%rbx 0.00 : c010: 0f 83 e6 f0 ff ff jae b0fc <_dl_relocate_object+0x8c> 0.00 : c016: 4c 89 f8 mov %r15,%rax 0.00 : c019: 48 23 03 and (%rbx),%rax 0.00 : c01c: 48 83 e8 01 sub $0x1,%rax 0.00 : c020: 75 ce jne bff0 <_dl_relocate_object+0xf80> 0.00 : c022: 48 8b 4b 10 mov 0x10(%rbx),%rcx 0.00 : c026: 48 8b 35 0b 2c 21 00 mov 0x212c0b(%rip),%rsi # 21ec38 <_rtld_global_ro+0x18> 0.00 : c02d: 48 83 ec 30 sub $0x30,%rsp 0.00 : c031: 4c 8d 6c 24 1f lea 0x1f(%rsp),%r13 0.00 : c036: 48 89 ca mov %rcx,%rdx 0.00 : c039: 48 03 53 28 add 0x28(%rbx),%rdx 0.00 : c03d: 48 89 f0 mov %rsi,%rax 0.00 : c040: 48 f7 d8 neg %rax 0.00 : c043: 49 83 e5 f0 and $0xfffffffffffffff0,%r13 0.00 : c047: 48 8d 74 16 ff lea -0x1(%rsi,%rdx,1),%rsi 0.00 : c04c: ba 03 00 00 00 mov $0x3,%edx 0.00 : c051: 48 21 c6 and %rax,%rsi 0.00 : c054: 48 21 c8 and %rcx,%rax 0.00 : c057: 48 29 c6 sub %rax,%rsi 0.00 : c05a: 49 89 75 08 mov %rsi,0x8(%r13) 0.00 : c05e: 48 8b 3d d3 2b 21 00 mov 0x212bd3(%rip),%rdi # 21ec38 <_rtld_global_ro+0x18> 0.00 : c065: 48 f7 df neg %rdi 0.00 : c068: 48 23 7b 10 and 0x10(%rbx),%rdi 0.00 : c06c: 49 03 3e add (%r14),%rdi 0.00 : c06f: 49 89 7d 00 mov %rdi,0x0(%r13) 0.00 : c073: e8 b8 a1 00 00 callq 16230 <__mprotect> 0.00 : c078: 85 c0 test %eax,%eax 0.00 : c07a: 78 71 js c0ed <_dl_relocate_object+0x107d> 0.00 : c07c: 8b 4b 04 mov 0x4(%rbx),%ecx 0.00 : c07f: b8 40 62 51 73 mov $0x73516240,%eax 0.00 : c084: 83 e1 07 and $0x7,%ecx 0.00 : c087: c1 e1 02 shl $0x2,%ecx 0.00 : c08a: d3 f8 sar %cl,%eax 0.00 : c08c: 83 e0 0f and $0xf,%eax 0.00 : c08f: 41 89 45 10 mov %eax,0x10(%r13) 0.00 : c093: 48 8b 85 68 ff ff ff mov -0x98(%rbp),%rax 0.00 : c09a: 49 89 45 18 mov %rax,0x18(%r13) 0.00 : c09e: 4c 89 ad 68 ff ff ff mov %r13,-0x98(%rbp) 0.00 : c0a5: 41 0f b7 8e b0 02 00 movzwl 0x2b0(%r14),%ecx 0.00 : c0ac: 00 0.00 : c0ad: e9 3e ff ff ff jmpq bff0 <_dl_relocate_object+0xf80> 0.00 : c0b2: 49 8b 76 08 mov 0x8(%r14),%rsi 0.00 : c0b6: 48 8d 15 20 d7 00 00 lea 0xd720(%rip),%rdx # 197dd 0.00 : c0bd: 48 8d 05 35 dc 00 00 lea 0xdc35(%rip),%rax # 19cf9 <__PRETTY_FUNCTION__.12494+0x1a> 0.00 : c0c4: 45 85 e4 test %r12d,%r12d 0.00 : c0c7: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : c0cb: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : c0ce: 75 0a jne c0da <_dl_relocate_object+0x106a> 0.00 : c0d0: 48 8b 05 31 2b 21 00 mov 0x212b31(%rip),%rax # 21ec08 <_dl_argv> 0.00 : c0d7: 48 8b 30 mov (%rax),%rsi 0.00 : c0da: 48 8d 3d 20 dc 00 00 lea 0xdc20(%rip),%rdi # 19d01 <__PRETTY_FUNCTION__.12494+0x22> 0.00 : c0e1: 31 c0 xor %eax,%eax 0.00 : c0e3: e8 68 32 00 00 callq f350 <_dl_debug_printf> 0.00 : c0e8: e9 f6 ef ff ff jmpq b0e3 <_dl_relocate_object+0x73> 0.00 : c0ed: 48 8d 0d d4 f9 00 00 lea 0xf9d4(%rip),%rcx # 1bac8 <__PRETTY_FUNCTION__.3644+0x1757> 0.00 : c0f4: 49 8b 76 08 mov 0x8(%r14),%rsi 0.00 : c0f8: 8b 3d 86 40 21 00 mov 0x214086(%rip),%edi # 220184 0.00 : c0fe: 31 d2 xor %edx,%edx 0.00 : c100: e8 fb 1d 00 00 callq df00 <_dl_signal_error> 0.00 : c105: 48 8b 8d 68 ff ff ff mov -0x98(%rbp),%rcx 0.00 : c10c: 8b 51 10 mov 0x10(%rcx),%edx 0.00 : c10f: 48 8b 71 08 mov 0x8(%rcx),%rsi 0.00 : c113: 48 8b 39 mov (%rcx),%rdi 0.00 : c116: e8 15 a1 00 00 callq 16230 <__mprotect> 0.00 : c11b: 85 c0 test %eax,%eax 0.00 : c11d: 78 7d js c19c <_dl_relocate_object+0x112c> 0.00 : c11f: 48 8b b5 68 ff ff ff mov -0x98(%rbp),%rsi 0.00 : c126: 48 8b 76 18 mov 0x18(%rsi),%rsi 0.00 : c12a: 48 85 f6 test %rsi,%rsi 0.00 : c12d: 48 89 b5 68 ff ff ff mov %rsi,-0x98(%rbp) 0.00 : c134: 0f 84 94 f1 ff ff je b2ce <_dl_relocate_object+0x25e> 0.00 : c13a: eb c9 jmp c105 <_dl_relocate_object+0x1095> 0.00 : c13c: 49 8b 46 50 mov 0x50(%r14),%rax 0.00 : c140: 48 85 c0 test %rax,%rax 0.00 : c143: 74 63 je c1a8 <_dl_relocate_object+0x1138> 0.00 : c145: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : c149: bf 20 00 00 00 mov $0x20,%edi 0.00 : c14e: e8 7d 49 ff ff callq ad0 0.00 : c153: 48 85 c0 test %rax,%rax 0.00 : c156: 49 89 86 28 03 00 00 mov %rax,0x328(%r14) 0.00 : c15d: 48 8d 35 8c fa 00 00 lea 0xfa8c(%rip),%rsi # 1bbf0 <__PRETTY_FUNCTION__.3644+0x187f> 0.00 : c164: 0f 85 4e f1 ff ff jne b2b8 <_dl_relocate_object+0x248> 0.00 : c16a: 48 8b 05 97 2a 21 00 mov 0x212a97(%rip),%rax # 21ec08 <_dl_argv> 0.00 : c171: 49 8b 4e 08 mov 0x8(%r14),%rcx 0.00 : c175: 48 8d 15 2e d4 00 00 lea 0xd42e(%rip),%rdx # 195aa 0.00 : c17c: bf 02 00 00 00 mov $0x2,%edi 0.00 : c181: 48 8b 00 mov (%rax),%rax 0.00 : c184: 48 85 c0 test %rax,%rax 0.00 : c187: 48 0f 45 d0 cmovne %rax,%rdx 0.00 : c18b: 31 c0 xor %eax,%eax 0.00 : c18d: e8 6e 30 00 00 callq f200 <_dl_dprintf> 0.00 : c192: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : c197: e8 24 a1 00 00 callq 162c0 <_Exit> 0.00 : c19c: 48 8d 0d 85 fa 00 00 lea 0xfa85(%rip),%rcx # 1bc28 <__PRETTY_FUNCTION__.3644+0x18b7> 0.00 : c1a3: e9 4c ff ff ff jmpq c0f4 <_dl_relocate_object+0x1084> 0.00 : c1a8: 48 8d 35 19 fa 00 00 lea 0xfa19(%rip),%rsi # 1bbc8 <__PRETTY_FUNCTION__.3644+0x1857> 0.00 : c1af: eb b9 jmp c16a <_dl_relocate_object+0x10fa> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000416fb0 : 0.00 : 416fb0: 48 83 ec 08 sub $0x8,%rsp 0.00 : 416fb4: 85 ff test %edi,%edi 0.00 : 416fb6: 75 38 jne 416ff0 0.00 : 416fb8: 8b 35 e2 3a 27 00 mov 0x273ae2(%rip),%esi # 68aaa0 0.00 : 416fbe: 85 f6 test %esi,%esi 0.00 : 416fc0: 7e 1f jle 416fe1 0.00 : 416fc2: 8b 3d d8 3a 27 00 mov 0x273ad8(%rip),%edi # 68aaa0 0.00 : 416fc8: e8 73 f7 02 00 callq 446740 0.00 : 416fcd: c7 05 79 fa 27 00 ff movl $0xffffffff,0x27fa79(%rip) # 696a50 0.00 : 416fd4: ff ff ff 0.00 : 416fd7: c7 05 bf 3a 27 00 ff movl $0xffffffff,0x273abf(%rip) # 68aaa0 0.00 : 416fde: ff ff ff 100.00 : 416fe1: 48 83 c4 08 add $0x8,%rsp 0.00 : 416fe5: c3 retq 0.00 : 416fe6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 416fed: 00 00 00 0.00 : 416ff0: 8b 3d aa 3a 27 00 mov 0x273aaa(%rip),%edi # 68aaa0 0.00 : 416ff6: 85 ff test %edi,%edi 0.00 : 416ff8: 79 c8 jns 416fc2 0.00 : 416ffa: 48 83 c4 08 add $0x8,%rsp Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000001178a0 <__strcpy_ssse3>: 0.00 : 1178a0: 31 d2 xor %edx,%edx 0.00 : 1178a2: 89 f1 mov %esi,%ecx 0.00 : 1178a4: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 1178a8: 83 e1 0f and $0xf,%ecx 0.00 : 1178ab: 48 89 f8 mov %rdi,%rax 0.00 : 1178ae: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1178b2: 66 0f 74 06 pcmpeqb (%rsi),%xmm0 0.00 : 1178b6: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1178ba: d3 ea shr %cl,%edx 0.00 : 1178bc: 85 d2 test %edx,%edx 0.00 : 1178be: 0f 85 cf 06 00 00 jne 117f93 <__strcpy_ssse3+0x6f3> 0.00 : 1178c4: 49 89 c9 mov %rcx,%r9 0.00 : 1178c7: 09 f9 or %edi,%ecx 0.00 : 1178c9: 83 e1 0f and $0xf,%ecx 0.00 : 1178cc: 4d 8d 51 f0 lea -0x10(%r9),%r10 0.00 : 1178d0: 74 6e je 117940 <__strcpy_ssse3+0xa0> 0.00 : 1178d2: 49 f7 da neg %r10 0.00 : 1178d5: 66 0f ef c0 pxor %xmm0,%xmm0 0.00 : 1178d9: 66 0f 74 46 10 pcmpeqb 0x10(%rsi),%xmm0 0.00 : 1178de: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1178e2: 85 d2 test %edx,%edx 0.00 : 1178e4: 0f 85 96 06 00 00 jne 117f80 <__strcpy_ssse3+0x6e0> 0.00 : 1178ea: 4a 8b 14 0e mov (%rsi,%r9,1),%rdx 0.00 : 1178ee: 48 89 17 mov %rdx,(%rdi) 0.00 : 1178f1: 4a 8b 54 0e 08 mov 0x8(%rsi,%r9,1),%rdx 0.00 : 1178f6: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1178fa: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi 0.00 : 1178fe: 48 89 c2 mov %rax,%rdx 0.00 : 117901: 48 31 fa xor %rdi,%rdx 0.00 : 117904: 48 83 c7 10 add $0x10,%rdi 0.00 : 117908: 49 29 d1 sub %rdx,%r9 0.00 : 11790b: 49 8d 74 31 10 lea 0x10(%r9,%rsi,1),%rsi 0.00 : 117910: 89 f1 mov %esi,%ecx 0.00 : 117912: 48 83 e6 f0 and $0xfffffffffffffff0,%rsi 0.00 : 117916: 83 e1 0f and $0xf,%ecx 0.00 : 117919: 74 25 je 117940 <__strcpy_ssse3+0xa0> 0.00 : 11791b: 4c 8d 51 f0 lea -0x10(%rcx),%r10 0.00 : 11791f: 49 89 c9 mov %rcx,%r9 0.00 : 117922: 49 f7 da neg %r10 0.00 : 117925: 4c 8d 1d 74 c3 02 00 lea 0x2c374(%rip),%r11 # 143ca0 0.00 : 11792c: 49 63 0c 8b movslq (%r11,%rcx,4),%rcx 0.00 : 117930: 49 8d 0c 0b lea (%r11,%rcx,1),%rcx 0.00 : 117934: ff e1 jmpq *%rcx 0.00 : 117936: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11793d: 00 00 00 0.00 : 117940: 66 0f 6f 0e movdqa (%rsi),%xmm1 0.00 : 117944: 66 0f 7f 0f movdqa %xmm1,(%rdi) 0.00 : 117948: 48 83 c6 10 add $0x10,%rsi 0.00 : 11794c: 48 83 c7 10 add $0x10,%rdi 0.00 : 117950: 66 0f 74 06 pcmpeqb (%rsi),%xmm0 0.00 : 117954: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117958: 85 d2 test %edx,%edx 0.00 : 11795a: 0f 85 36 06 00 00 jne 117f96 <__strcpy_ssse3+0x6f6> 0.00 : 117960: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 117965: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 11796a: 48 83 c1 10 add $0x10,%rcx 0.00 : 11796e: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.00 : 117973: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117977: 85 d2 test %edx,%edx 0.00 : 117979: 0f 85 11 06 00 00 jne 117f90 <__strcpy_ssse3+0x6f0> 0.00 : 11797f: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 117984: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 117989: 48 83 c1 10 add $0x10,%rcx 0.00 : 11798d: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.00 : 117992: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117996: 85 d2 test %edx,%edx 0.00 : 117998: 0f 85 f2 05 00 00 jne 117f90 <__strcpy_ssse3+0x6f0> 0.00 : 11799e: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 1179a3: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 1179a8: 48 83 c1 10 add $0x10,%rcx 0.00 : 1179ac: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.00 : 1179b1: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1179b5: 85 d2 test %edx,%edx 0.00 : 1179b7: 0f 85 d3 05 00 00 jne 117f90 <__strcpy_ssse3+0x6f0> 0.00 : 1179bd: 66 0f 6f 0c 0e movdqa (%rsi,%rcx,1),%xmm1 0.00 : 1179c2: 66 0f 7f 0c 0f movdqa %xmm1,(%rdi,%rcx,1) 0.00 : 1179c7: 48 83 c1 10 add $0x10,%rcx 0.00 : 1179cb: 66 0f 74 04 0e pcmpeqb (%rsi,%rcx,1),%xmm0 0.00 : 1179d0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1179d4: 85 d2 test %edx,%edx 0.00 : 1179d6: 74 88 je 117960 <__strcpy_ssse3+0xc0> 0.00 : 1179d8: e9 b3 05 00 00 jmpq 117f90 <__strcpy_ssse3+0x6f0> 0.00 : 1179dd: 0f 1f 00 nopl (%rax) 0.00 : 1179e0: 31 c9 xor %ecx,%ecx 0.00 : 1179e2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1179e9: 1f 84 00 00 00 00 00 0.00 : 1179f0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 1179f6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 1179fa: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 1179fe: 85 d2 test %edx,%edx 0.00 : 117a00: 0f 85 7c 05 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117a06: 66 0f 3a 0f 1c 0e 0f palignr $0xf,(%rsi,%rcx,1),%xmm3 0.00 : 117a0d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117a12: 48 83 c1 10 add $0x10,%rcx 0.00 : 117a16: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117a1c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117a20: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117a24: 85 d2 test %edx,%edx 0.00 : 117a26: 0f 85 56 05 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117a2c: 66 0f 3a 0f 1c 0e 0f palignr $0xf,(%rsi,%rcx,1),%xmm3 0.00 : 117a33: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117a38: 48 83 c1 10 add $0x10,%rcx 0.00 : 117a3c: eb b2 jmp 1179f0 <__strcpy_ssse3+0x150> 0.00 : 117a3e: 66 90 xchg %ax,%ax 0.00 : 117a40: 31 c9 xor %ecx,%ecx 0.00 : 117a42: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117a49: 1f 84 00 00 00 00 00 0.00 : 117a50: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117a56: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117a5a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117a5e: 85 d2 test %edx,%edx 0.00 : 117a60: 0f 85 1c 05 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117a66: 66 0f 3a 0f 1c 0e 0e palignr $0xe,(%rsi,%rcx,1),%xmm3 0.00 : 117a6d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117a72: 48 83 c1 10 add $0x10,%rcx 0.00 : 117a76: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117a7c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117a80: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117a84: 85 d2 test %edx,%edx 0.00 : 117a86: 0f 85 f6 04 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117a8c: 66 0f 3a 0f 1c 0e 0e palignr $0xe,(%rsi,%rcx,1),%xmm3 0.00 : 117a93: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117a98: 48 83 c1 10 add $0x10,%rcx 0.00 : 117a9c: eb b2 jmp 117a50 <__strcpy_ssse3+0x1b0> 0.00 : 117a9e: 66 90 xchg %ax,%ax 0.00 : 117aa0: 31 c9 xor %ecx,%ecx 0.00 : 117aa2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117aa9: 1f 84 00 00 00 00 00 0.00 : 117ab0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117ab6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117aba: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117abe: 85 d2 test %edx,%edx 0.00 : 117ac0: 0f 85 bc 04 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117ac6: 66 0f 3a 0f 1c 0e 0d palignr $0xd,(%rsi,%rcx,1),%xmm3 0.00 : 117acd: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117ad2: 48 83 c1 10 add $0x10,%rcx 0.00 : 117ad6: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117adc: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117ae0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117ae4: 85 d2 test %edx,%edx 0.00 : 117ae6: 0f 85 96 04 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117aec: 66 0f 3a 0f 1c 0e 0d palignr $0xd,(%rsi,%rcx,1),%xmm3 0.00 : 117af3: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117af8: 48 83 c1 10 add $0x10,%rcx 0.00 : 117afc: eb b2 jmp 117ab0 <__strcpy_ssse3+0x210> 0.00 : 117afe: 66 90 xchg %ax,%ax 0.00 : 117b00: 31 c9 xor %ecx,%ecx 0.00 : 117b02: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117b09: 1f 84 00 00 00 00 00 0.00 : 117b10: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117b16: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117b1a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117b1e: 85 d2 test %edx,%edx 0.00 : 117b20: 0f 85 5c 04 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117b26: 66 0f 3a 0f 1c 0e 0c palignr $0xc,(%rsi,%rcx,1),%xmm3 0.00 : 117b2d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117b32: 48 83 c1 10 add $0x10,%rcx 0.00 : 117b36: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117b3c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117b40: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117b44: 85 d2 test %edx,%edx 0.00 : 117b46: 0f 85 36 04 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117b4c: 66 0f 3a 0f 1c 0e 0c palignr $0xc,(%rsi,%rcx,1),%xmm3 0.00 : 117b53: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117b58: 48 83 c1 10 add $0x10,%rcx 0.00 : 117b5c: eb b2 jmp 117b10 <__strcpy_ssse3+0x270> 0.00 : 117b5e: 66 90 xchg %ax,%ax 0.00 : 117b60: 31 c9 xor %ecx,%ecx 0.00 : 117b62: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117b69: 1f 84 00 00 00 00 00 0.00 : 117b70: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117b76: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117b7a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117b7e: 85 d2 test %edx,%edx 0.00 : 117b80: 0f 85 fc 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117b86: 66 0f 3a 0f 1c 0e 0b palignr $0xb,(%rsi,%rcx,1),%xmm3 0.00 : 117b8d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117b92: 48 83 c1 10 add $0x10,%rcx 0.00 : 117b96: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117b9c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117ba0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117ba4: 85 d2 test %edx,%edx 0.00 : 117ba6: 0f 85 d6 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117bac: 66 0f 3a 0f 1c 0e 0b palignr $0xb,(%rsi,%rcx,1),%xmm3 0.00 : 117bb3: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117bb8: 48 83 c1 10 add $0x10,%rcx 0.00 : 117bbc: eb b2 jmp 117b70 <__strcpy_ssse3+0x2d0> 0.00 : 117bbe: 66 90 xchg %ax,%ax 0.00 : 117bc0: 31 c9 xor %ecx,%ecx 0.00 : 117bc2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117bc9: 1f 84 00 00 00 00 00 0.00 : 117bd0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117bd6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117bda: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117bde: 85 d2 test %edx,%edx 0.00 : 117be0: 0f 85 9c 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117be6: 66 0f 3a 0f 1c 0e 0a palignr $0xa,(%rsi,%rcx,1),%xmm3 0.00 : 117bed: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117bf2: 48 83 c1 10 add $0x10,%rcx 0.00 : 117bf6: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117bfc: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117c00: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117c04: 85 d2 test %edx,%edx 0.00 : 117c06: 0f 85 76 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117c0c: 66 0f 3a 0f 1c 0e 0a palignr $0xa,(%rsi,%rcx,1),%xmm3 0.00 : 117c13: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117c18: 48 83 c1 10 add $0x10,%rcx 0.00 : 117c1c: eb b2 jmp 117bd0 <__strcpy_ssse3+0x330> 0.00 : 117c1e: 66 90 xchg %ax,%ax 0.00 : 117c20: 31 c9 xor %ecx,%ecx 0.00 : 117c22: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117c29: 1f 84 00 00 00 00 00 0.00 : 117c30: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117c36: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117c3a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117c3e: 85 d2 test %edx,%edx 0.00 : 117c40: 0f 85 3c 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117c46: 66 0f 3a 0f 1c 0e 09 palignr $0x9,(%rsi,%rcx,1),%xmm3 0.00 : 117c4d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117c52: 48 83 c1 10 add $0x10,%rcx 0.00 : 117c56: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117c5c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117c60: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117c64: 85 d2 test %edx,%edx 0.00 : 117c66: 0f 85 16 03 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117c6c: 66 0f 3a 0f 1c 0e 09 palignr $0x9,(%rsi,%rcx,1),%xmm3 0.00 : 117c73: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117c78: 48 83 c1 10 add $0x10,%rcx 0.00 : 117c7c: eb b2 jmp 117c30 <__strcpy_ssse3+0x390> 0.00 : 117c7e: 66 90 xchg %ax,%ax 0.00 : 117c80: 31 c9 xor %ecx,%ecx 0.00 : 117c82: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117c89: 1f 84 00 00 00 00 00 0.00 : 117c90: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117c96: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117c9a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117c9e: 85 d2 test %edx,%edx 0.00 : 117ca0: 0f 85 dc 02 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117ca6: 66 0f 3a 0f 1c 0e 08 palignr $0x8,(%rsi,%rcx,1),%xmm3 0.00 : 117cad: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117cb2: 48 83 c1 10 add $0x10,%rcx 0.00 : 117cb6: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117cbc: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117cc0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117cc4: 85 d2 test %edx,%edx 0.00 : 117cc6: 0f 85 b6 02 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117ccc: 66 0f 3a 0f 1c 0e 08 palignr $0x8,(%rsi,%rcx,1),%xmm3 0.00 : 117cd3: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117cd8: 48 83 c1 10 add $0x10,%rcx 0.00 : 117cdc: eb b2 jmp 117c90 <__strcpy_ssse3+0x3f0> 0.00 : 117cde: 66 90 xchg %ax,%ax 0.00 : 117ce0: 31 c9 xor %ecx,%ecx 0.00 : 117ce2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117ce9: 1f 84 00 00 00 00 00 0.00 : 117cf0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117cf6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117cfa: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117cfe: 85 d2 test %edx,%edx 0.00 : 117d00: 0f 85 7c 02 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117d06: 66 0f 3a 0f 1c 0e 07 palignr $0x7,(%rsi,%rcx,1),%xmm3 0.00 : 117d0d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117d12: 48 83 c1 10 add $0x10,%rcx 0.00 : 117d16: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117d1c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117d20: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117d24: 85 d2 test %edx,%edx 0.00 : 117d26: 0f 85 56 02 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117d2c: 66 0f 3a 0f 1c 0e 07 palignr $0x7,(%rsi,%rcx,1),%xmm3 0.00 : 117d33: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117d38: 48 83 c1 10 add $0x10,%rcx 0.00 : 117d3c: eb b2 jmp 117cf0 <__strcpy_ssse3+0x450> 0.00 : 117d3e: 66 90 xchg %ax,%ax 0.00 : 117d40: 31 c9 xor %ecx,%ecx 0.00 : 117d42: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117d49: 1f 84 00 00 00 00 00 0.00 : 117d50: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117d56: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117d5a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117d5e: 85 d2 test %edx,%edx 0.00 : 117d60: 0f 85 1c 02 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117d66: 66 0f 3a 0f 1c 0e 06 palignr $0x6,(%rsi,%rcx,1),%xmm3 0.00 : 117d6d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117d72: 48 83 c1 10 add $0x10,%rcx 0.00 : 117d76: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117d7c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117d80: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117d84: 85 d2 test %edx,%edx 0.00 : 117d86: 0f 85 f6 01 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117d8c: 66 0f 3a 0f 1c 0e 06 palignr $0x6,(%rsi,%rcx,1),%xmm3 0.00 : 117d93: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117d98: 48 83 c1 10 add $0x10,%rcx 0.00 : 117d9c: eb b2 jmp 117d50 <__strcpy_ssse3+0x4b0> 0.00 : 117d9e: 66 90 xchg %ax,%ax 0.00 : 117da0: 31 c9 xor %ecx,%ecx 0.00 : 117da2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117da9: 1f 84 00 00 00 00 00 0.00 : 117db0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117db6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117dba: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117dbe: 85 d2 test %edx,%edx 0.00 : 117dc0: 0f 85 bc 01 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117dc6: 66 0f 3a 0f 1c 0e 05 palignr $0x5,(%rsi,%rcx,1),%xmm3 0.00 : 117dcd: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117dd2: 48 83 c1 10 add $0x10,%rcx 0.00 : 117dd6: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117ddc: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117de0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117de4: 85 d2 test %edx,%edx 0.00 : 117de6: 0f 85 96 01 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117dec: 66 0f 3a 0f 1c 0e 05 palignr $0x5,(%rsi,%rcx,1),%xmm3 0.00 : 117df3: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117df8: 48 83 c1 10 add $0x10,%rcx 0.00 : 117dfc: eb b2 jmp 117db0 <__strcpy_ssse3+0x510> 0.00 : 117dfe: 66 90 xchg %ax,%ax 0.00 : 117e00: 31 c9 xor %ecx,%ecx 0.00 : 117e02: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117e09: 1f 84 00 00 00 00 00 0.00 : 117e10: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117e16: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117e1a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117e1e: 85 d2 test %edx,%edx 0.00 : 117e20: 0f 85 5c 01 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117e26: 66 0f 3a 0f 1c 0e 04 palignr $0x4,(%rsi,%rcx,1),%xmm3 0.00 : 117e2d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117e32: 48 83 c1 10 add $0x10,%rcx 0.00 : 117e36: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117e3c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117e40: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117e44: 85 d2 test %edx,%edx 0.00 : 117e46: 0f 85 36 01 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117e4c: 66 0f 3a 0f 1c 0e 04 palignr $0x4,(%rsi,%rcx,1),%xmm3 0.00 : 117e53: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117e58: 48 83 c1 10 add $0x10,%rcx 0.00 : 117e5c: eb b2 jmp 117e10 <__strcpy_ssse3+0x570> 0.00 : 117e5e: 66 90 xchg %ax,%ax 0.00 : 117e60: 31 c9 xor %ecx,%ecx 0.00 : 117e62: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117e69: 1f 84 00 00 00 00 00 0.00 : 117e70: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117e76: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117e7a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117e7e: 85 d2 test %edx,%edx 0.00 : 117e80: 0f 85 fc 00 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117e86: 66 0f 3a 0f 1c 0e 03 palignr $0x3,(%rsi,%rcx,1),%xmm3 0.00 : 117e8d: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117e92: 48 83 c1 10 add $0x10,%rcx 0.00 : 117e96: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117e9c: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117ea0: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117ea4: 85 d2 test %edx,%edx 0.00 : 117ea6: 0f 85 d6 00 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117eac: 66 0f 3a 0f 1c 0e 03 palignr $0x3,(%rsi,%rcx,1),%xmm3 0.00 : 117eb3: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117eb8: 48 83 c1 10 add $0x10,%rcx 0.00 : 117ebc: eb b2 jmp 117e70 <__strcpy_ssse3+0x5d0> 0.00 : 117ebe: 66 90 xchg %ax,%ax 0.00 : 117ec0: 31 c9 xor %ecx,%ecx 0.00 : 117ec2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117ec9: 1f 84 00 00 00 00 00 0.00 : 117ed0: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117ed6: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117eda: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117ede: 85 d2 test %edx,%edx 0.00 : 117ee0: 0f 85 9c 00 00 00 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117ee6: 66 0f 3a 0f 1c 0e 02 palignr $0x2,(%rsi,%rcx,1),%xmm3 0.00 : 117eed: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117ef2: 48 83 c1 10 add $0x10,%rcx 0.00 : 117ef6: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117efc: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117f00: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117f04: 85 d2 test %edx,%edx 0.00 : 117f06: 75 7a jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117f08: 66 0f 3a 0f 1c 0e 02 palignr $0x2,(%rsi,%rcx,1),%xmm3 0.00 : 117f0f: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117f14: 48 83 c1 10 add $0x10,%rcx 0.00 : 117f18: eb b6 jmp 117ed0 <__strcpy_ssse3+0x630> 0.00 : 117f1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 117f20: 31 c9 xor %ecx,%ecx 0.00 : 117f22: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117f29: 1f 84 00 00 00 00 00 0.00 : 117f30: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117f36: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117f3a: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117f3e: 85 d2 test %edx,%edx 0.00 : 117f40: 75 40 jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117f42: 66 0f 3a 0f 1c 0e 01 palignr $0x1,(%rsi,%rcx,1),%xmm3 0.00 : 117f49: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117f4e: 48 83 c1 10 add $0x10,%rcx 0.00 : 117f52: 66 0f 6f 5c 0e 10 movdqa 0x10(%rsi,%rcx,1),%xmm3 0.00 : 117f58: 66 0f 74 c3 pcmpeqb %xmm3,%xmm0 0.00 : 117f5c: 66 0f d7 d0 pmovmskb %xmm0,%edx 0.00 : 117f60: 85 d2 test %edx,%edx 0.00 : 117f62: 75 1e jne 117f82 <__strcpy_ssse3+0x6e2> 0.00 : 117f64: 66 0f 3a 0f 1c 0e 01 palignr $0x1,(%rsi,%rcx,1),%xmm3 0.00 : 117f6b: 66 0f 7f 1c 0f movdqa %xmm3,(%rdi,%rcx,1) 0.00 : 117f70: 48 83 c1 10 add $0x10,%rcx 0.00 : 117f74: eb ba jmp 117f30 <__strcpy_ssse3+0x690> 0.00 : 117f76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117f7d: 00 00 00 0.00 : 117f80: 31 c9 xor %ecx,%ecx 0.00 : 117f82: 4c 01 ce add %r9,%rsi 0.00 : 117f85: 49 89 c9 mov %rcx,%r9 0.00 : 117f88: 4c 89 d1 mov %r10,%rcx 0.00 : 117f8b: d3 e2 shl %cl,%edx 0.00 : 117f8d: 4c 89 c9 mov %r9,%rcx 0.00 : 117f90: 48 01 cf add %rcx,%rdi 0.00 : 117f93: 48 01 ce add %rcx,%rsi 0.00 : 117f96: 48 0f bc ca bsf %rdx,%rcx 0.00 : 117f9a: 4c 8d 1d 7f bc 02 00 lea 0x2bc7f(%rip),%r11 # 143c20 0.00 : 117fa1: 49 63 0c 8b movslq (%r11,%rcx,4),%rcx 50.00 : 117fa5: 49 8d 0c 0b lea (%r11,%rcx,1),%rcx 0.00 : 117fa9: ff e1 jmpq *%rcx 0.00 : 117fab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 117fb0: 8a 0e mov (%rsi),%cl 0.00 : 117fb2: 88 0f mov %cl,(%rdi) 0.00 : 117fb4: c3 retq 0.00 : 117fb5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117fbc: 00 00 00 00 0.00 : 117fc0: 66 8b 0e mov (%rsi),%cx 0.00 : 117fc3: 66 89 0f mov %cx,(%rdi) 0.00 : 117fc6: c3 retq 0.00 : 117fc7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 117fce: 00 00 0.00 : 117fd0: 66 8b 0e mov (%rsi),%cx 0.00 : 117fd3: 66 89 0f mov %cx,(%rdi) 0.00 : 117fd6: 66 8b 4e 01 mov 0x1(%rsi),%cx 0.00 : 117fda: 66 89 4f 01 mov %cx,0x1(%rdi) 0.00 : 117fde: c3 retq 0.00 : 117fdf: 90 nop 0.00 : 117fe0: 8b 0e mov (%rsi),%ecx 0.00 : 117fe2: 89 0f mov %ecx,(%rdi) 0.00 : 117fe4: c3 retq 0.00 : 117fe5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 117fec: 00 00 00 00 0.00 : 117ff0: 8b 0e mov (%rsi),%ecx 0.00 : 117ff2: 89 0f mov %ecx,(%rdi) 0.00 : 117ff4: 8b 56 01 mov 0x1(%rsi),%edx 0.00 : 117ff7: 89 57 01 mov %edx,0x1(%rdi) 0.00 : 117ffa: c3 retq 0.00 : 117ffb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118000: 8b 0e mov (%rsi),%ecx 0.00 : 118002: 89 0f mov %ecx,(%rdi) 0.00 : 118004: 8b 56 02 mov 0x2(%rsi),%edx 0.00 : 118007: 89 57 02 mov %edx,0x2(%rdi) 0.00 : 11800a: c3 retq 0.00 : 11800b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118010: 8b 0e mov (%rsi),%ecx 0.00 : 118012: 89 0f mov %ecx,(%rdi) 0.00 : 118014: 8b 56 03 mov 0x3(%rsi),%edx 0.00 : 118017: 89 57 03 mov %edx,0x3(%rdi) 0.00 : 11801a: c3 retq 0.00 : 11801b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 118020: 48 8b 0e mov (%rsi),%rcx 50.00 : 118023: 48 89 0f mov %rcx,(%rdi) 0.00 : 118026: c3 retq 0.00 : 118027: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 11802e: 00 00 0.00 : 118030: 48 8b 0e mov (%rsi),%rcx 0.00 : 118033: 48 89 0f mov %rcx,(%rdi) 0.00 : 118036: 8b 56 05 mov 0x5(%rsi),%edx 0.00 : 118039: 89 57 05 mov %edx,0x5(%rdi) 0.00 : 11803c: c3 retq 0.00 : 11803d: 0f 1f 00 nopl (%rax) 0.00 : 118040: 48 8b 0e mov (%rsi),%rcx 0.00 : 118043: 48 89 0f mov %rcx,(%rdi) 0.00 : 118046: 8b 56 06 mov 0x6(%rsi),%edx 0.00 : 118049: 89 57 06 mov %edx,0x6(%rdi) 0.00 : 11804c: c3 retq 0.00 : 11804d: 0f 1f 00 nopl (%rax) 0.00 : 118050: 48 8b 0e mov (%rsi),%rcx 0.00 : 118053: 48 89 0f mov %rcx,(%rdi) 0.00 : 118056: 8b 56 07 mov 0x7(%rsi),%edx 0.00 : 118059: 89 57 07 mov %edx,0x7(%rdi) 0.00 : 11805c: c3 retq 0.00 : 11805d: 0f 1f 00 nopl (%rax) 0.00 : 118060: 48 8b 0e mov (%rsi),%rcx 0.00 : 118063: 48 89 0f mov %rcx,(%rdi) 0.00 : 118066: 8b 56 08 mov 0x8(%rsi),%edx 0.00 : 118069: 89 57 08 mov %edx,0x8(%rdi) 0.00 : 11806c: c3 retq 0.00 : 11806d: 0f 1f 00 nopl (%rax) 0.00 : 118070: 48 8b 0e mov (%rsi),%rcx 0.00 : 118073: 48 89 0f mov %rcx,(%rdi) 0.00 : 118076: 48 8b 4e 05 mov 0x5(%rsi),%rcx 0.00 : 11807a: 48 89 4f 05 mov %rcx,0x5(%rdi) 0.00 : 11807e: c3 retq 0.00 : 11807f: 90 nop 0.00 : 118080: 48 8b 0e mov (%rsi),%rcx 0.00 : 118083: 48 89 0f mov %rcx,(%rdi) 0.00 : 118086: 48 8b 4e 06 mov 0x6(%rsi),%rcx 0.00 : 11808a: 48 89 4f 06 mov %rcx,0x6(%rdi) 0.00 : 11808e: c3 retq 0.00 : 11808f: 90 nop 0.00 : 118090: 48 8b 0e mov (%rsi),%rcx 0.00 : 118093: 48 89 0f mov %rcx,(%rdi) 0.00 : 118096: 48 8b 4e 07 mov 0x7(%rsi),%rcx 0.00 : 11809a: 48 89 4f 07 mov %rcx,0x7(%rdi) 0.00 : 11809e: c3 retq 0.00 : 11809f: 48 8b 0e mov (%rsi),%rcx 0.00 : 1180a2: 48 89 0f mov %rcx,(%rdi) 0.00 : 1180a5: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1180a9: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1180ad: c3 retq 0.00 : 1180ae: 66 90 xchg %ax,%ax 0.00 : 1180b0: 48 8b 0e mov (%rsi),%rcx 0.00 : 1180b3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1180b6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1180ba: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1180be: 8a 4e 10 mov 0x10(%rsi),%cl 0.00 : 1180c1: 88 4f 10 mov %cl,0x10(%rdi) 0.00 : 1180c4: c3 retq 0.00 : 1180c5: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 1180cc: 00 00 00 00 0.00 : 1180d0: 48 8b 0e mov (%rsi),%rcx 0.00 : 1180d3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1180d6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1180da: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1180de: 66 8b 4e 10 mov 0x10(%rsi),%cx 0.00 : 1180e2: 66 89 4f 10 mov %cx,0x10(%rdi) 0.00 : 1180e6: c3 retq 0.00 : 1180e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1180ee: 00 00 0.00 : 1180f0: 48 8b 0e mov (%rsi),%rcx 0.00 : 1180f3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1180f6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1180fa: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1180fe: 8b 4e 0f mov 0xf(%rsi),%ecx 0.00 : 118101: 89 4f 0f mov %ecx,0xf(%rdi) 0.00 : 118104: c3 retq 0.00 : 118105: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11810c: 00 00 00 00 0.00 : 118110: 48 8b 0e mov (%rsi),%rcx 0.00 : 118113: 48 89 0f mov %rcx,(%rdi) 0.00 : 118116: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11811a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11811e: 8b 4e 10 mov 0x10(%rsi),%ecx 0.00 : 118121: 89 4f 10 mov %ecx,0x10(%rdi) 0.00 : 118124: c3 retq 0.00 : 118125: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1) 0.00 : 11812c: 00 00 00 00 0.00 : 118130: 48 8b 0e mov (%rsi),%rcx 0.00 : 118133: 48 89 0f mov %rcx,(%rdi) 0.00 : 118136: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11813a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11813e: 48 8b 4e 0d mov 0xd(%rsi),%rcx 0.00 : 118142: 48 89 4f 0d mov %rcx,0xd(%rdi) 0.00 : 118146: c3 retq 0.00 : 118147: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 11814e: 00 00 0.00 : 118150: 48 8b 0e mov (%rsi),%rcx 0.00 : 118153: 48 89 0f mov %rcx,(%rdi) 0.00 : 118156: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11815a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11815e: 48 8b 4e 0e mov 0xe(%rsi),%rcx 0.00 : 118162: 48 89 4f 0e mov %rcx,0xe(%rdi) 0.00 : 118166: c3 retq 0.00 : 118167: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 11816e: 00 00 0.00 : 118170: 48 8b 0e mov (%rsi),%rcx 0.00 : 118173: 48 89 0f mov %rcx,(%rdi) 0.00 : 118176: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11817a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11817e: 48 8b 4e 0f mov 0xf(%rsi),%rcx 0.00 : 118182: 48 89 4f 0f mov %rcx,0xf(%rdi) 0.00 : 118186: c3 retq 0.00 : 118187: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 11818e: 00 00 0.00 : 118190: 48 8b 0e mov (%rsi),%rcx 0.00 : 118193: 48 89 0f mov %rcx,(%rdi) 0.00 : 118196: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11819a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11819e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 1181a2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1181a6: c3 retq 0.00 : 1181a7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1181ae: 00 00 0.00 : 1181b0: 48 8b 0e mov (%rsi),%rcx 0.00 : 1181b3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1181b6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1181ba: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1181be: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 1181c2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1181c6: 8b 56 15 mov 0x15(%rsi),%edx 0.00 : 1181c9: 89 57 15 mov %edx,0x15(%rdi) 0.00 : 1181cc: c3 retq 0.00 : 1181cd: 0f 1f 00 nopl (%rax) 0.00 : 1181d0: 48 8b 0e mov (%rsi),%rcx 0.00 : 1181d3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1181d6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1181da: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1181de: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 1181e2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1181e6: 8b 56 16 mov 0x16(%rsi),%edx 0.00 : 1181e9: 89 57 16 mov %edx,0x16(%rdi) 0.00 : 1181ec: c3 retq 0.00 : 1181ed: 0f 1f 00 nopl (%rax) 0.00 : 1181f0: 48 8b 0e mov (%rsi),%rcx 0.00 : 1181f3: 48 89 0f mov %rcx,(%rdi) 0.00 : 1181f6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 1181fa: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 1181fe: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 118202: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 118206: 8b 56 17 mov 0x17(%rsi),%edx 0.00 : 118209: 89 57 17 mov %edx,0x17(%rdi) 0.00 : 11820c: c3 retq 0.00 : 11820d: 0f 1f 00 nopl (%rax) 0.00 : 118210: 48 8b 0e mov (%rsi),%rcx 0.00 : 118213: 48 89 0f mov %rcx,(%rdi) 0.00 : 118216: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11821a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11821e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 118222: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 118226: 8b 56 18 mov 0x18(%rsi),%edx 0.00 : 118229: 89 57 18 mov %edx,0x18(%rdi) 0.00 : 11822c: c3 retq 0.00 : 11822d: 0f 1f 00 nopl (%rax) 0.00 : 118230: 48 8b 0e mov (%rsi),%rcx 0.00 : 118233: 48 89 0f mov %rcx,(%rdi) 0.00 : 118236: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11823a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11823e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 118242: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 118246: 48 8b 56 15 mov 0x15(%rsi),%rdx 0.00 : 11824a: 48 89 57 15 mov %rdx,0x15(%rdi) 0.00 : 11824e: c3 retq 0.00 : 11824f: 90 nop 0.00 : 118250: 48 8b 0e mov (%rsi),%rcx 0.00 : 118253: 48 89 0f mov %rcx,(%rdi) 0.00 : 118256: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11825a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11825e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 118262: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 118266: 48 8b 56 16 mov 0x16(%rsi),%rdx 0.00 : 11826a: 48 89 57 16 mov %rdx,0x16(%rdi) 0.00 : 11826e: c3 retq 0.00 : 11826f: 90 nop 0.00 : 118270: 48 8b 0e mov (%rsi),%rcx 0.00 : 118273: 48 89 0f mov %rcx,(%rdi) 0.00 : 118276: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11827a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11827e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 118282: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 118286: 48 8b 56 17 mov 0x17(%rsi),%rdx 0.00 : 11828a: 48 89 57 17 mov %rdx,0x17(%rdi) 0.00 : 11828e: c3 retq 0.00 : 11828f: 90 nop 0.00 : 118290: 48 8b 0e mov (%rsi),%rcx 0.00 : 118293: 48 89 0f mov %rcx,(%rdi) 0.00 : 118296: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : 11829a: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : 11829e: 48 8b 4e 10 mov 0x10(%rsi),%rcx 0.00 : 1182a2: 48 89 4f 10 mov %rcx,0x10(%rdi) 0.00 : 1182a6: 48 8b 56 18 mov 0x18(%rsi),%rdx 0.00 : 1182aa: 48 89 57 18 mov %rdx,0x18(%rdi) Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000043b7c0 : 0.00 : 43b7c0: 41 57 push %r15 0.00 : 43b7c2: 41 56 push %r14 0.00 : 43b7c4: 41 55 push %r13 0.00 : 43b7c6: 49 89 fd mov %rdi,%r13 0.00 : 43b7c9: 41 54 push %r12 0.00 : 43b7cb: 55 push %rbp 0.00 : 43b7cc: 48 89 f5 mov %rsi,%rbp 0.00 : 43b7cf: 53 push %rbx 0.00 : 43b7d0: 89 d3 mov %edx,%ebx 0.00 : 43b7d2: 48 83 ec 28 sub $0x28,%rsp 0.00 : 43b7d6: 48 85 ff test %rdi,%rdi 0.00 : 43b7d9: 75 15 jne 43b7f0 0.00 : 43b7db: 45 31 f6 xor %r14d,%r14d 0.00 : 43b7de: 48 83 c4 28 add $0x28,%rsp 0.00 : 43b7e2: 4c 89 f0 mov %r14,%rax 0.00 : 43b7e5: 5b pop %rbx 0.00 : 43b7e6: 5d pop %rbp 0.00 : 43b7e7: 41 5c pop %r12 0.00 : 43b7e9: 41 5d pop %r13 0.00 : 43b7eb: 41 5e pop %r14 0.00 : 43b7ed: 41 5f pop %r15 0.00 : 43b7ef: c3 retq 0.00 : 43b7f0: 0f b6 17 movzbl (%rdi),%edx 0.00 : 43b7f3: 84 d2 test %dl,%dl 0.00 : 43b7f5: 74 e4 je 43b7db 0.00 : 43b7f7: 48 85 f6 test %rsi,%rsi 0.00 : 43b7fa: 0f 84 a9 02 00 00 je 43baa9 0.00 : 43b800: 80 3e 20 cmpb $0x20,(%rsi) 0.00 : 43b803: 0f 84 b0 03 00 00 je 43bbb9 0.00 : 43b809: c7 44 24 0c 00 00 00 movl $0x0,0xc(%rsp) 0.00 : 43b810: 00 0.00 : 43b811: 85 db test %ebx,%ebx 0.00 : 43b813: 0f 84 98 02 00 00 je 43bab1 0.00 : 43b819: 48 85 ed test %rbp,%rbp 0.00 : 43b81c: 0f 84 8f 02 00 00 je 43bab1 0.00 : 43b822: 80 7d 00 00 cmpb $0x0,0x0(%rbp) 0.00 : 43b826: 0f 84 85 02 00 00 je 43bab1 0.00 : 43b82c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43b830: e8 2b ac fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43b835: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43b839: 41 bf 01 00 00 00 mov $0x1,%r15d 0.00 : 43b83f: 90 nop 0.00 : 43b840: 76 0b jbe 43b84d 0.00 : 43b842: 4c 89 ef mov %r13,%rdi 0.00 : 43b845: e8 a6 ab fd ff callq 4163f0 0.00 : 43b84a: 49 89 c7 mov %rax,%r15 0.00 : 43b84d: 83 e3 03 and $0x3,%ebx 0.00 : 43b850: c7 44 24 1c 00 00 00 movl $0x0,0x1c(%rsp) 0.00 : 43b857: 00 0.00 : 43b858: 45 31 f6 xor %r14d,%r14d 0.00 : 43b85b: 31 c9 xor %ecx,%ecx 0.00 : 43b85d: 89 5c 24 08 mov %ebx,0x8(%rsp) 0.00 : 43b861: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 43b868: 48 63 c1 movslq %ecx,%rax 0.00 : 43b86b: 41 80 7c 05 00 00 cmpb $0x0,0x0(%r13,%rax,1) 0.00 : 43b871: 0f 84 0e 03 00 00 je 43bb85 0.00 : 43b877: 48 8d 54 24 1c lea 0x1c(%rsp),%rdx 0.00 : 43b87c: 48 89 e9 mov %rbp,%rcx 0.00 : 43b87f: 4c 89 fe mov %r15,%rsi 0.00 : 43b882: 4c 89 ef mov %r13,%rdi 0.00 : 43b885: e8 36 f9 ff ff callq 43b1c0 0.00 : 43b88a: 48 85 c0 test %rax,%rax 0.00 : 43b88d: 49 89 c4 mov %rax,%r12 0.00 : 43b890: 0f 84 ef 02 00 00 je 43bb85 0.00 : 43b896: 0f b6 00 movzbl (%rax),%eax 0.00 : 43b899: 3c 7f cmp $0x7f,%al 0.00 : 43b89b: 0f 84 67 02 00 00 je 43bb08 0.00 : 43b8a1: 84 c0 test %al,%al 0.00 : 43b8a3: 0f 85 6d 02 00 00 jne 43bb16 0.00 : 43b8a9: 8b 44 24 0c mov 0xc(%rsp),%eax 0.00 : 43b8ad: 85 c0 test %eax,%eax 0.00 : 43b8af: 75 3f jne 43b8f0 0.00 : 43b8b1: 48 63 44 24 1c movslq 0x1c(%rsp),%rax 0.00 : 43b8b6: 41 0f b6 44 05 00 movzbl 0x0(%r13,%rax,1),%eax 0.00 : 43b8bc: 3c 20 cmp $0x20,%al 0.00 : 43b8be: 74 30 je 43b8f0 0.00 : 43b8c0: 3c 09 cmp $0x9,%al 0.00 : 43b8c2: 74 2c je 43b8f0 0.00 : 43b8c4: 3c 0a cmp $0xa,%al 0.00 : 43b8c6: 74 28 je 43b8f0 0.00 : 43b8c8: e8 23 77 fe ff callq 422ff0 0.00 : 43b8cd: 31 ff xor %edi,%edi 0.00 : 43b8cf: 48 89 c3 mov %rax,%rbx 0.00 : 43b8d2: e8 79 c8 ff ff callq 438150 0.00 : 43b8d7: 81 4b 08 02 00 04 00 orl $0x40002,0x8(%rbx) 0.00 : 43b8de: 4c 89 f6 mov %r14,%rsi 0.00 : 43b8e1: 48 89 03 mov %rax,(%rbx) 0.00 : 43b8e4: 48 89 df mov %rbx,%rdi 0.00 : 43b8e7: e8 04 76 fe ff callq 422ef0 0.00 : 43b8ec: 49 89 c6 mov %rax,%r14 0.00 : 43b8ef: 90 nop 0.00 : 43b8f0: 4c 89 e7 mov %r12,%rdi 0.00 : 43b8f3: e8 c8 aa fd ff callq 4163c0 0.00 : 43b8f8: 8b 4c 24 1c mov 0x1c(%rsp),%ecx 0.00 : 43b8fc: 48 63 c1 movslq %ecx,%rax 0.00 : 43b8ff: 41 0f b6 44 05 00 movzbl 0x0(%r13,%rax,1),%eax 0.00 : 43b905: 84 c0 test %al,%al 0.00 : 43b907: 0f 84 5b ff ff ff je 43b868 0.00 : 43b90d: 3c 20 cmp $0x20,%al 0.00 : 43b90f: 0f 84 4b 02 00 00 je 43bb60 0.00 : 43b915: 3c 09 cmp $0x9,%al 0.00 : 43b917: 0f 84 43 02 00 00 je 43bb60 0.00 : 43b91d: 45 31 e4 xor %r12d,%r12d 0.00 : 43b920: 3c 0a cmp $0xa,%al 0.00 : 43b922: 41 0f 94 c4 sete %r12b 0.00 : 43b926: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp) 0.00 : 43b92d: 00 00 0.00 : 43b92f: e8 2c ab fd ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 43b934: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43b938: 0f 86 32 02 00 00 jbe 43bb70 0.00 : 43b93e: 48 63 74 24 1c movslq 0x1c(%rsp),%rsi 0.00 : 43b943: 4c 89 fa mov %r15,%rdx 0.00 : 43b946: 48 8d 4c 24 10 lea 0x10(%rsp),%rcx 0.00 : 43b94b: 31 ff xor %edi,%edi 0.00 : 43b94d: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx 0.00 : 43b952: 48 29 f2 sub %rsi,%rdx 0.00 : 43b955: 49 8d 74 35 00 lea 0x0(%r13,%rsi,1),%rsi 0.00 : 43b95a: e8 f1 a4 fd ff callq 415e50 0.00 : 43b95f: 48 89 c2 mov %rax,%rdx 0.00 : 43b962: 48 8d 40 02 lea 0x2(%rax),%rax 0.00 : 43b966: 48 83 f8 01 cmp $0x1,%rax 0.00 : 43b96a: 0f 86 3a 02 00 00 jbe 43bbaa 0.00 : 43b970: 48 85 d2 test %rdx,%rdx 0.00 : 43b973: 0f 84 f7 01 00 00 je 43bb70 0.00 : 43b979: 01 54 24 1c add %edx,0x1c(%rsp) 0.00 : 43b97d: 0f 1f 00 nopl (%rax) 0.00 : 43b980: 8b 74 24 1c mov 0x1c(%rsp),%esi 0.00 : 43b984: 48 63 c6 movslq %esi,%rax 0.00 : 43b987: 89 f1 mov %esi,%ecx 0.00 : 43b989: 41 0f b6 54 05 00 movzbl 0x0(%r13,%rax,1),%edx 0.00 : 43b98f: 84 d2 test %dl,%dl 0.00 : 43b991: 0f 84 d1 fe ff ff je 43b868 0.00 : 43b997: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : 43b99a: 48 98 cltq 0.00 : 43b99c: 49 8d 4c 05 00 lea 0x0(%r13,%rax,1),%rcx 0.00 : 43b9a1: eb 27 jmp 43b9ca 0.00 : 43b9a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43b9a8: 0f b6 c2 movzbl %dl,%eax 0.00 : 43b9ab: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43b9b2: 74 3c je 43b9f0 0.00 : 43b9b4: 83 c6 01 add $0x1,%esi 0.00 : 43b9b7: 89 74 24 1c mov %esi,0x1c(%rsp) 0.00 : 43b9bb: 0f b6 11 movzbl (%rcx),%edx 0.00 : 43b9be: 48 83 c1 01 add $0x1,%rcx 0.00 : 43b9c2: 84 d2 test %dl,%dl 0.00 : 43b9c4: 0f 84 8e 01 00 00 je 43bb58 0.00 : 43b9ca: 80 fa 20 cmp $0x20,%dl 0.00 : 43b9cd: 74 0a je 43b9d9 0.00 : 43b9cf: 80 fa 09 cmp $0x9,%dl 0.00 : 43b9d2: 74 05 je 43b9d9 0.00 : 43b9d4: 80 fa 0a cmp $0xa,%dl 0.00 : 43b9d7: 75 17 jne 43b9f0 0.00 : 43b9d9: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 43b9dd: 84 c0 test %al,%al 0.00 : 43b9df: 90 nop 0.00 : 43b9e0: 74 0e je 43b9f0 0.00 : 43b9e2: 80 7d 01 00 cmpb $0x0,0x1(%rbp) 0.00 : 43b9e6: 75 c0 jne 43b9a8 0.00 : 43b9e8: 38 c2 cmp %al,%dl 0.00 : 43b9ea: 74 c8 je 43b9b4 0.00 : 43b9ec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43b9f0: 84 d2 test %dl,%dl 0.00 : 43b9f2: 0f 84 a8 00 00 00 je 43baa0 0.00 : 43b9f8: 45 85 e4 test %r12d,%r12d 0.00 : 43b9fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43ba00: 0f 84 9a 00 00 00 je 43baa0 0.00 : 43ba06: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 43ba0a: 84 c0 test %al,%al 0.00 : 43ba0c: 0f 84 8e 00 00 00 je 43baa0 0.00 : 43ba12: 80 7d 01 00 cmpb $0x0,0x1(%rbp) 0.00 : 43ba16: 0f 84 5e 01 00 00 je 43bb7a 0.00 : 43ba1c: 0f b6 c2 movzbl %dl,%eax 0.00 : 43ba1f: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43ba26: 0f 95 c0 setne %al 0.00 : 43ba29: 84 c0 test %al,%al 0.00 : 43ba2b: 74 73 je 43baa0 0.00 : 43ba2d: 80 fa 20 cmp $0x20,%dl 0.00 : 43ba30: 74 6e je 43baa0 0.00 : 43ba32: 80 fa 09 cmp $0x9,%dl 0.00 : 43ba35: 74 69 je 43baa0 0.00 : 43ba37: 80 fa 0a cmp $0xa,%dl 0.00 : 43ba3a: 74 64 je 43baa0 0.00 : 43ba3c: 8d 7e 01 lea 0x1(%rsi),%edi 0.00 : 43ba3f: 48 63 c7 movslq %edi,%rax 0.00 : 43ba42: 89 7c 24 1c mov %edi,0x1c(%rsp) 0.00 : 43ba46: 89 f9 mov %edi,%ecx 0.00 : 43ba48: 41 0f b6 54 05 00 movzbl 0x0(%r13,%rax,1),%edx 0.00 : 43ba4e: 84 d2 test %dl,%dl 0.00 : 43ba50: 0f 84 12 fe ff ff je 43b868 0.00 : 43ba56: 8d 46 02 lea 0x2(%rsi),%eax 0.00 : 43ba59: 48 98 cltq 0.00 : 43ba5b: 49 8d 4c 05 00 lea 0x0(%r13,%rax,1),%rcx 0.00 : 43ba60: eb 1c jmp 43ba7e 0.00 : 43ba62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 43ba68: 83 c7 01 add $0x1,%edi 0.00 : 43ba6b: 89 7c 24 1c mov %edi,0x1c(%rsp) 0.00 : 43ba6f: 0f b6 11 movzbl (%rcx),%edx 0.00 : 43ba72: 48 83 c1 01 add $0x1,%rcx 0.00 : 43ba76: 84 d2 test %dl,%dl 0.00 : 43ba78: 0f 84 62 01 00 00 je 43bbe0 0.00 : 43ba7e: 80 fa 20 cmp $0x20,%dl 0.00 : 43ba81: 74 0f je 43ba92 0.00 : 43ba83: 80 fa 09 cmp $0x9,%dl 0.00 : 43ba86: 74 0a je 43ba92 0.00 : 43ba88: 80 fa 0a cmp $0xa,%dl 0.00 : 43ba8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43ba90: 75 0e jne 43baa0 0.00 : 43ba92: 0f b6 c2 movzbl %dl,%eax 0.00 : 43ba95: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43ba9c: 75 ca jne 43ba68 0.00 : 43ba9e: 66 90 xchg %ax,%ax 0.00 : 43baa0: 8b 4c 24 1c mov 0x1c(%rsp),%ecx 0.00 : 43baa4: e9 bf fd ff ff jmpq 43b868 0.00 : 43baa9: c7 44 24 0c 00 00 00 movl $0x0,0xc(%rsp) 0.00 : 43bab0: 00 0.00 : 43bab1: 4c 89 ef mov %r13,%rdi 0.00 : 43bab4: eb 25 jmp 43badb 0.00 : 43bab6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 43babd: 00 00 00 0.00 : 43bac0: 0f b6 c2 movzbl %dl,%eax 0.00 : 43bac3: 80 b8 00 6d 69 00 00 cmpb $0x0,0x696d00(%rax) 0.00 : 43baca: 74 30 je 43bafc 0.00 : 43bacc: 48 83 c7 01 add $0x1,%rdi 0.00 : 43bad0: 0f b6 17 movzbl (%rdi),%edx 0.00 : 43bad3: 84 d2 test %dl,%dl 0.00 : 43bad5: 0f 84 00 fd ff ff je 43b7db 0.00 : 43badb: 80 fa 20 cmp $0x20,%dl 0.00 : 43bade: 74 0a je 43baea 0.00 : 43bae0: 80 fa 09 cmp $0x9,%dl 0.00 : 43bae3: 74 05 je 43baea 0.00 : 43bae5: 80 fa 0a cmp $0xa,%dl 0.00 : 43bae8: 75 12 jne 43bafc 0.00 : 43baea: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 43baee: 84 c0 test %al,%al 0.00 : 43baf0: 74 0a je 43bafc 0.00 : 43baf2: 80 7d 01 00 cmpb $0x0,0x1(%rbp) 0.00 : 43baf6: 75 c8 jne 43bac0 0.00 : 43baf8: 38 c2 cmp %al,%dl 0.00 : 43bafa: 74 d0 je 43bacc 0.00 : 43bafc: 49 89 fd mov %rdi,%r13 0.00 : 43baff: 90 nop 0.00 : 43bb00: e9 27 fd ff ff jmpq 43b82c 0.00 : 43bb05: 0f 1f 00 nopl (%rax) 0.00 : 43bb08: 41 80 7c 24 01 00 cmpb $0x0,0x1(%r12) 0.00 : 43bb0e: 66 90 xchg %ax,%ax 0.00 : 43bb10: 0f 84 b2 fd ff ff je 43b8c8 0.00 : 43bb16: 4c 89 e7 mov %r12,%rdi 0.00 : 43bb19: e8 32 ea ff ff callq 43a550 0.00 : 43bb1e: 4c 89 e7 mov %r12,%rdi 0.00 : 43bb21: e8 aa 7b fe ff callq 4236d0 0.00 : 43bb26: 4c 89 f6 mov %r14,%rsi 0.00 : 43bb29: 48 89 c7 mov %rax,%rdi 0.00 : 43bb2c: e8 bf 73 fe ff callq 422ef0 0.00 : 43bb31: 8b 54 24 08 mov 0x8(%rsp),%edx 0.00 : 43bb35: 49 89 c6 mov %rax,%r14 0.00 : 43bb38: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 43bb3c: 81 60 08 ff ff fb ff andl $0xfffbffff,0x8(%rax) 0.00 : 43bb43: 85 d2 test %edx,%edx 0.00 : 43bb45: 0f 84 a5 fd ff ff je 43b8f0 0.00 : 43bb4b: 83 48 08 02 orl $0x2,0x8(%rax) 0.00 : 43bb4f: e9 9c fd ff ff jmpq 43b8f0 0.00 : 43bb54: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 43bb58: 89 f1 mov %esi,%ecx 0.00 : 43bb5a: e9 09 fd ff ff jmpq 43b868 0.00 : 43bb5f: 90 nop 0.00 : 43bb60: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 43bb66: e9 bb fd ff ff jmpq 43b926 0.00 : 43bb6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 43bb70: 83 44 24 1c 01 addl $0x1,0x1c(%rsp) 0.00 : 43bb75: e9 06 fe ff ff jmpq 43b980 0.00 : 43bb7a: 38 d0 cmp %dl,%al 0.00 : 43bb7c: 0f 94 c0 sete %al 0.00 : 43bb7f: 90 nop 0.00 : 43bb80: e9 a4 fe ff ff jmpq 43ba29 0.00 : 43bb85: 4d 85 f6 test %r14,%r14 0.00 : 43bb88: 0f 84 50 fc ff ff je 43b7de 0.00 : 43bb8e: 49 83 3e 00 cmpq $0x0,(%r14) 0.00 : 43bb92: 0f 84 46 fc ff ff je 43b7de 0.00 : 43bb98: 4c 89 f7 mov %r14,%rdi 0.00 : 43bb9b: 31 c0 xor %eax,%eax 0.00 : 43bb9d: e8 2e 6d 01 00 callq 4528d0 0.00 : 43bba2: 49 89 c6 mov %rax,%r14 0.00 : 43bba5: e9 34 fc ff ff jmpq 43b7de 0.00 : 43bbaa: 48 89 5c 24 10 mov %rbx,0x10(%rsp) 0.00 : 43bbaf: 83 44 24 1c 01 addl $0x1,0x1c(%rsp) 0.00 : 43bbb4: e9 c7 fd ff ff jmpq 43b980 0.00 : 43bbb9: 80 7e 01 09 cmpb $0x9,0x1(%rsi) 0.00 : 43bbbd: 0f 85 46 fc ff ff jne 43b809 0.00 : 43bbc3: 80 7e 02 0a cmpb $0xa,0x2(%rsi) 0.00 : 43bbc7: 0f 85 3c fc ff ff jne 43b809 0.00 : 43bbcd: 31 c0 xor %eax,%eax 0.00 : 43bbcf: 80 7e 03 00 cmpb $0x0,0x3(%rsi) 100.00 : 43bbd3: 0f 94 c0 sete %al 0.00 : 43bbd6: 89 44 24 0c mov %eax,0xc(%rsp) 0.00 : 43bbda: e9 32 fc ff ff jmpq 43b811 0.00 : 43bbdf: 90 nop 0.00 : 43bbe0: 89 f9 mov %edi,%ecx 0.00 : 43bbe2: e9 81 fc ff ff jmpq 43b868 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/psql ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/bin/psql/startup.c:167 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/psql ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000412310
: : * main : * : */ : int : main(int argc, char *argv[]) : { 0.00 : 412310: 55 push %rbp 0.00 : 412311: 48 89 e5 mov %rsp,%rbp 0.00 : 412314: 41 57 push %r15 0.00 : 412316: 41 56 push %r14 0.00 : 412318: 41 55 push %r13 0.00 : 41231a: 49 89 f5 mov %rsi,%r13 : int successResult; : char *password = NULL; : char *password_prompt = NULL; : bool new_pass; : : set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("psql")); 0.00 : 41231d: be 5b 66 44 00 mov $0x44665b,%esi : * main : * : */ : int : main(int argc, char *argv[]) : { 0.00 : 412322: 41 54 push %r12 0.00 : 412324: 53 push %rbx 0.00 : 412325: 89 fb mov %edi,%ebx 0.00 : 412327: 48 83 ec 58 sub $0x58,%rsp : int successResult; : char *password = NULL; : char *password_prompt = NULL; : bool new_pass; : : set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("psql")); 0.00 : 41232b: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 41232f: e8 8c 14 02 00 callq 4337c0 : : if (argc > 1) 0.00 : 412334: 83 fb 01 cmp $0x1,%ebx 0.00 : 412337: 7e 57 jle 412390 : { : if ((strcmp(argv[1], "-?") == 0) || (argc == 2 && (strcmp(argv[1], "--help") == 0))) 0.00 : 412339: 4d 8b 4d 08 mov 0x8(%r13),%r9 0.00 : 41233d: 45 0f b6 01 movzbl (%r9),%r8d 0.00 : 412341: 41 83 f8 2d cmp $0x2d,%r8d 0.00 : 412345: 0f 84 85 03 00 00 je 4126d0 0.00 : 41234b: 83 fb 02 cmp $0x2,%ebx 0.00 : 41234e: 0f 84 b4 03 00 00 je 412708 : { : usage(NOPAGER); : exit(EXIT_SUCCESS); : } : if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) 0.00 : 412354: bf 6b 66 44 00 mov $0x44666b,%edi 0.00 : 412359: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 41235e: 4c 89 ce mov %r9,%rsi 0.00 : 412361: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 412363: 74 14 je 412379 0.00 : 412365: 41 83 f8 2d cmp $0x2d,%r8d 0.00 : 412369: 75 25 jne 412390 0.00 : 41236b: 41 80 79 01 56 cmpb $0x56,0x1(%r9) 0.00 : 412370: 75 1e jne 412390 0.00 : 412372: 41 80 79 02 00 cmpb $0x0,0x2(%r9) 0.00 : 412377: 75 17 jne 412390 : * This output format is intended to match GNU standards. : */ : static void : showVersion(void) : { : puts("psql (PostgreSQL) " PG_VERSION); 0.00 : 412379: bf 75 66 44 00 mov $0x446675,%edi 0.00 : 41237e: e8 9d 13 ff ff callq 403720 : free(value); : break; : } : case 'V': : showVersion(); : exit(EXIT_SUCCESS); 0.00 : 412383: 31 ff xor %edi,%edi 0.00 : 412385: e8 06 1c ff ff callq 403f90 0.00 : 41238a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : #ifdef WIN32 : setvbuf(stderr, NULL, _IONBF, 0); : #endif : : pset.progname = get_progname(argv[0]); 0.00 : 412390: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 412394: e8 57 1f 02 00 callq 4342f0 : : pset.db = NULL; 0.00 : 412399: 48 c7 05 fc 8c 25 00 movq $0x0,0x258cfc(%rip) # 66b0a0 0.00 : 4123a0: 00 00 00 00 : : #ifdef WIN32 : setvbuf(stderr, NULL, _IONBF, 0); : #endif : : pset.progname = get_progname(argv[0]); 0.00 : 4123a4: 48 89 05 e5 8d 25 00 mov %rax,0x258de5(%rip) # 66b190 : : pset.db = NULL; : setDecimalLocale(); 0.00 : 4123ab: e8 b0 23 00 00 callq 414760 : pset.encoding = PQenv2encoding(); 0.00 : 4123b0: e8 fb 15 ff ff callq 4039b0 0.00 : 4123b5: 89 05 ed 8c 25 00 mov %eax,0x258ced(%rip) # 66b0a8 : pset.queryFout = stdout; 0.00 : 4123bb: 48 8b 05 8e 86 25 00 mov 0x25868e(%rip),%rax # 66aa50 : : pset.popt.topt.unicode_border_linestyle = UNICODE_LINESTYLE_SINGLE; : pset.popt.topt.unicode_column_linestyle = UNICODE_LINESTYLE_SINGLE; : pset.popt.topt.unicode_header_linestyle = UNICODE_LINESTYLE_SINGLE; : : refresh_utf8format(&(pset.popt.topt)); 0.00 : 4123c2: bf c8 b0 66 00 mov $0x66b0c8,%edi : : pset.db = NULL; : setDecimalLocale(); : pset.encoding = PQenv2encoding(); : pset.queryFout = stdout; : pset.queryFoutPipe = false; 0.00 : 4123c7: c6 05 ea 8c 25 00 00 movb $0x0,0x258cea(%rip) # 66b0b8 : pset.copyStream = NULL; 0.00 : 4123ce: 48 c7 05 e7 8c 25 00 movq $0x0,0x258ce7(%rip) # 66b0c0 0.00 : 4123d5: 00 00 00 00 : pset.cur_cmd_source = stdin; : pset.cur_cmd_interactive = false; 0.00 : 4123d9: c6 05 a8 8d 25 00 00 movb $0x0,0x258da8(%rip) # 66b188 : : /* We rely on unmentioned fields of pset.popt to start out 0/false/NULL */ : pset.popt.topt.format = PRINT_ALIGNED; 0.00 : 4123e0: c7 05 de 8c 25 00 02 movl $0x2,0x258cde(%rip) # 66b0c8 0.00 : 4123e7: 00 00 00 : pset.progname = get_progname(argv[0]); : : pset.db = NULL; : setDecimalLocale(); : pset.encoding = PQenv2encoding(); : pset.queryFout = stdout; 0.00 : 4123ea: 48 89 05 bf 8c 25 00 mov %rax,0x258cbf(%rip) # 66b0b0 : pset.queryFoutPipe = false; : pset.copyStream = NULL; : pset.cur_cmd_source = stdin; 0.00 : 4123f1: 48 8b 05 68 86 25 00 mov 0x258668(%rip),%rax # 66aa60 : pset.cur_cmd_interactive = false; : : /* We rely on unmentioned fields of pset.popt to start out 0/false/NULL */ : pset.popt.topt.format = PRINT_ALIGNED; : pset.popt.topt.border = 1; 0.00 : 4123f8: 66 c7 05 cd 8c 25 00 movw $0x1,0x258ccd(%rip) # 66b0ce 0.00 : 4123ff: 01 00 : pset.popt.topt.pager = 1; 0.00 : 412401: 66 c7 05 c6 8c 25 00 movw $0x1,0x258cc6(%rip) # 66b0d0 0.00 : 412408: 01 00 : pset.popt.topt.start_table = true; 0.00 : 41240a: c6 05 c2 8c 25 00 01 movb $0x1,0x258cc2(%rip) # 66b0d3 : pset.popt.topt.stop_table = true; 0.00 : 412411: c6 05 bc 8c 25 00 01 movb $0x1,0x258cbc(%rip) # 66b0d4 : setDecimalLocale(); : pset.encoding = PQenv2encoding(); : pset.queryFout = stdout; : pset.queryFoutPipe = false; : pset.copyStream = NULL; : pset.cur_cmd_source = stdin; 0.00 : 412418: 48 89 05 61 8d 25 00 mov %rax,0x258d61(%rip) # 66b180 : pset.popt.topt.format = PRINT_ALIGNED; : pset.popt.topt.border = 1; : pset.popt.topt.pager = 1; : pset.popt.topt.start_table = true; : pset.popt.topt.stop_table = true; : pset.popt.topt.default_footer = true; 0.00 : 41241f: c6 05 af 8c 25 00 01 movb $0x1,0x258caf(%rip) # 66b0d5 : : pset.popt.topt.unicode_border_linestyle = UNICODE_LINESTYLE_SINGLE; 0.00 : 412426: c7 05 f4 8c 25 00 00 movl $0x0,0x258cf4(%rip) # 66b124 0.00 : 41242d: 00 00 00 : pset.popt.topt.unicode_column_linestyle = UNICODE_LINESTYLE_SINGLE; 0.00 : 412430: c7 05 ee 8c 25 00 00 movl $0x0,0x258cee(%rip) # 66b128 0.00 : 412437: 00 00 00 : pset.popt.topt.unicode_header_linestyle = UNICODE_LINESTYLE_SINGLE; 0.00 : 41243a: c7 05 e8 8c 25 00 00 movl $0x0,0x258ce8(%rip) # 66b12c 0.00 : 412441: 00 00 00 : : refresh_utf8format(&(pset.popt.topt)); 0.00 : 412444: e8 87 21 00 00 callq 4145d0 : : /* We must get COLUMNS here before readline() sets it */ : pset.popt.topt.env_columns = getenv("COLUMNS") ? atoi(getenv("COLUMNS")) : 0; 0.00 : 412449: bf 90 66 44 00 mov $0x446690,%edi 0.00 : 41244e: e8 0d 12 ff ff callq 403660 0.00 : 412453: 31 d2 xor %edx,%edx 0.00 : 412455: 48 85 c0 test %rax,%rax 0.00 : 412458: 74 1b je 412475 0.00 : 41245a: bf 90 66 44 00 mov $0x446690,%edi 0.00 : 41245f: e8 fc 11 ff ff callq 403660 : return strtod (__nptr, (char **) NULL); : } : __extern_inline int : __NTH (atoi (__const char *__nptr)) : { : return (int) strtol (__nptr, (char **) NULL, 10); 0.00 : 412464: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 412469: 48 89 c7 mov %rax,%rdi 0.00 : 41246c: 31 f6 xor %esi,%esi 0.00 : 41246e: e8 ad 17 ff ff callq 403c20 0.00 : 412473: 89 c2 mov %eax,%edx : : pset.notty = (!isatty(fileno(stdin)) || !isatty(fileno(stdout))); 0.00 : 412475: 48 8b 3d e4 85 25 00 mov 0x2585e4(%rip),%rdi # 66aa60 : pset.popt.topt.unicode_header_linestyle = UNICODE_LINESTYLE_SINGLE; : : refresh_utf8format(&(pset.popt.topt)); : : /* We must get COLUMNS here before readline() sets it */ : pset.popt.topt.env_columns = getenv("COLUMNS") ? atoi(getenv("COLUMNS")) : 0; 0.00 : 41247c: 89 15 9a 8c 25 00 mov %edx,0x258c9a(%rip) # 66b11c : : pset.notty = (!isatty(fileno(stdin)) || !isatty(fileno(stdout))); 0.00 : 412482: e8 e9 17 ff ff callq 403c70 0.00 : 412487: 89 c7 mov %eax,%edi 0.00 : 412489: e8 b2 12 ff ff callq 403740 0.00 : 41248e: 85 c0 test %eax,%eax 0.00 : 412490: 0f 85 9a 02 00 00 jne 412730 0.00 : 412496: ba 01 00 00 00 mov $0x1,%edx 0.00 : 41249b: 88 15 d7 8c 25 00 mov %dl,0x258cd7(%rip) # 66b178 : : pset.getPassword = TRI_DEFAULT; 0.00 : 4124a1: c7 05 d1 8c 25 00 00 movl $0x0,0x258cd1(%rip) # 66b17c 0.00 : 4124a8: 00 00 00 0.00 : 4124ab: 4c 8d 75 cc lea -0x34(%rbp),%r14 : : : static void : EstablishVariableSpace(void) : { : pset.vars = CreateVariableSpace(); 0.00 : 4124af: e8 4c 15 00 00 callq 413a00 : : SetVariableAssignHook(pset.vars, "AUTOCOMMIT", autocommit_hook); 0.00 : 4124b4: ba 00 21 41 00 mov $0x412100,%edx : : : static void : EstablishVariableSpace(void) : { : pset.vars = CreateVariableSpace(); 0.00 : 4124b9: 48 89 c7 mov %rax,%rdi : : SetVariableAssignHook(pset.vars, "AUTOCOMMIT", autocommit_hook); 0.00 : 4124bc: be 98 66 44 00 mov $0x446698,%esi : : : static void : EstablishVariableSpace(void) : { : pset.vars = CreateVariableSpace(); 0.00 : 4124c1: 48 89 05 f8 8c 25 00 mov %rax,0x258cf8(%rip) # 66b1c0 : : SetVariableAssignHook(pset.vars, "AUTOCOMMIT", autocommit_hook); 0.00 : 4124c8: e8 63 15 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "ON_ERROR_STOP", on_error_stop_hook); 0.00 : 4124cd: 48 8b 3d ec 8c 25 00 mov 0x258cec(%rip),%rdi # 66b1c0 0.00 : 4124d4: ba e0 20 41 00 mov $0x4120e0,%edx 0.00 : 4124d9: be a3 66 44 00 mov $0x4466a3,%esi 0.00 : 4124de: e8 4d 15 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "QUIET", quiet_hook); 0.00 : 4124e3: 48 8b 3d d6 8c 25 00 mov 0x258cd6(%rip),%rdi # 66b1c0 0.00 : 4124ea: ba c0 20 41 00 mov $0x4120c0,%edx 0.00 : 4124ef: be b1 66 44 00 mov $0x4466b1,%esi 0.00 : 4124f4: e8 37 15 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "SINGLELINE", singleline_hook); 0.00 : 4124f9: 48 8b 3d c0 8c 25 00 mov 0x258cc0(%rip),%rdi # 66b1c0 0.00 : 412500: ba a0 20 41 00 mov $0x4120a0,%edx 0.00 : 412505: be b7 66 44 00 mov $0x4466b7,%esi 0.00 : 41250a: e8 21 15 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "SINGLESTEP", singlestep_hook); 0.00 : 41250f: 48 8b 3d aa 8c 25 00 mov 0x258caa(%rip),%rdi # 66b1c0 0.00 : 412516: ba 80 20 41 00 mov $0x412080,%edx 0.00 : 41251b: be c2 66 44 00 mov $0x4466c2,%esi 0.00 : 412520: e8 0b 15 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "FETCH_COUNT", fetch_count_hook); 0.00 : 412525: 48 8b 3d 94 8c 25 00 mov 0x258c94(%rip),%rdi # 66b1c0 0.00 : 41252c: ba 60 20 41 00 mov $0x412060,%edx 0.00 : 412531: be cd 66 44 00 mov $0x4466cd,%esi 0.00 : 412536: e8 f5 14 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "ECHO", echo_hook); 0.00 : 41253b: 48 8b 3d 7e 8c 25 00 mov 0x258c7e(%rip),%rdi # 66b1c0 0.00 : 412542: ba 50 1e 41 00 mov $0x411e50,%edx 0.00 : 412547: be d9 66 44 00 mov $0x4466d9,%esi 0.00 : 41254c: e8 df 14 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "ECHO_HIDDEN", echo_hidden_hook); 0.00 : 412551: 48 8b 3d 68 8c 25 00 mov 0x258c68(%rip),%rdi # 66b1c0 0.00 : 412558: ba 00 20 41 00 mov $0x412000,%edx 0.00 : 41255d: be de 66 44 00 mov $0x4466de,%esi 0.00 : 412562: e8 c9 14 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "ON_ERROR_ROLLBACK", on_error_rollback_hook); 0.00 : 412567: 48 8b 3d 52 8c 25 00 mov 0x258c52(%rip),%rdi # 66b1c0 0.00 : 41256e: ba 90 1f 41 00 mov $0x411f90,%edx 0.00 : 412573: be ea 66 44 00 mov $0x4466ea,%esi 0.00 : 412578: e8 b3 14 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "HISTCONTROL", histcontrol_hook); 0.00 : 41257d: 48 8b 3d 3c 8c 25 00 mov 0x258c3c(%rip),%rdi # 66b1c0 0.00 : 412584: ba c0 1d 41 00 mov $0x411dc0,%edx 0.00 : 412589: be fc 66 44 00 mov $0x4466fc,%esi 0.00 : 41258e: e8 9d 14 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "PROMPT1", prompt1_hook); 0.00 : 412593: 48 8b 3d 26 8c 25 00 mov 0x258c26(%rip),%rdi # 66b1c0 0.00 : 41259a: ba 60 1d 41 00 mov $0x411d60,%edx 0.00 : 41259f: be 08 67 44 00 mov $0x446708,%esi 0.00 : 4125a4: e8 87 14 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "PROMPT2", prompt2_hook); 0.00 : 4125a9: 48 8b 3d 10 8c 25 00 mov 0x258c10(%rip),%rdi # 66b1c0 0.00 : 4125b0: ba 80 1d 41 00 mov $0x411d80,%edx 0.00 : 4125b5: be 10 67 44 00 mov $0x446710,%esi 0.00 : 4125ba: e8 71 14 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "PROMPT3", prompt3_hook); 0.00 : 4125bf: 48 8b 3d fa 8b 25 00 mov 0x258bfa(%rip),%rdi # 66b1c0 0.00 : 4125c6: ba a0 1d 41 00 mov $0x411da0,%edx 0.00 : 4125cb: be 18 67 44 00 mov $0x446718,%esi 0.00 : 4125d0: e8 5b 14 00 00 callq 413a30 : SetVariableAssignHook(pset.vars, "VERBOSITY", verbosity_hook); 0.00 : 4125d5: 48 8b 3d e4 8b 25 00 mov 0x258be4(%rip),%rdi # 66b1c0 0.00 : 4125dc: ba e0 1e 41 00 mov $0x411ee0,%edx 0.00 : 4125e1: be 20 67 44 00 mov $0x446720,%esi 0.00 : 4125e6: e8 45 14 00 00 callq 413a30 : : pset.getPassword = TRI_DEFAULT; : : EstablishVariableSpace(); : : SetVariable(pset.vars, "VERSION", PG_VERSION_STR); 0.00 : 4125eb: 48 8b 3d ce 8b 25 00 mov 0x258bce(%rip),%rdi # 66b1c0 0.00 : 4125f2: ba a0 68 44 00 mov $0x4468a0,%edx 0.00 : 4125f7: be 58 bc 43 00 mov $0x43bc58,%esi 0.00 : 4125fc: e8 1f 15 00 00 callq 413b20 : : /* Default values for variables */ : SetVariableBool(pset.vars, "AUTOCOMMIT"); 0.00 : 412601: 48 8b 3d b8 8b 25 00 mov 0x258bb8(%rip),%rdi # 66b1c0 0.00 : 412608: be 98 66 44 00 mov $0x446698,%esi 0.00 : 41260d: e8 4e 16 00 00 callq 413c60 : SetVariable(pset.vars, "VERBOSITY", "default"); 0.00 : 412612: 48 8b 3d a7 8b 25 00 mov 0x258ba7(%rip),%rdi # 66b1c0 0.00 : 412619: ba 25 66 44 00 mov $0x446625,%edx 0.00 : 41261e: be 20 67 44 00 mov $0x446720,%esi 0.00 : 412623: e8 f8 14 00 00 callq 413b20 : SetVariable(pset.vars, "PROMPT1", DEFAULT_PROMPT1); 0.00 : 412628: 48 8b 3d 91 8b 25 00 mov 0x258b91(%rip),%rdi # 66b1c0 0.00 : 41262f: ba 2a 67 44 00 mov $0x44672a,%edx 0.00 : 412634: be 08 67 44 00 mov $0x446708,%esi 0.00 : 412639: e8 e2 14 00 00 callq 413b20 : SetVariable(pset.vars, "PROMPT2", DEFAULT_PROMPT2); 0.00 : 41263e: 48 8b 3d 7b 8b 25 00 mov 0x258b7b(%rip),%rdi # 66b1c0 0.00 : 412645: ba 2a 67 44 00 mov $0x44672a,%edx 0.00 : 41264a: be 10 67 44 00 mov $0x446710,%esi 0.00 : 41264f: e8 cc 14 00 00 callq 413b20 : SetVariable(pset.vars, "PROMPT3", DEFAULT_PROMPT3); 0.00 : 412654: 48 8b 3d 65 8b 25 00 mov 0x258b65(%rip),%rdi # 66b1c0 0.00 : 41265b: ba 32 67 44 00 mov $0x446732,%edx 0.00 : 412660: be 18 67 44 00 mov $0x446718,%esi 0.00 : 412665: e8 b6 14 00 00 callq 413b20 : }; : : int optindex; : int c; : : memset(options, 0, sizeof *options); 0.00 : 41266a: 48 8d 7d 80 lea -0x80(%rbp),%rdi 0.00 : 41266e: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 412673: 31 c0 xor %eax,%eax 0.00 : 412675: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 412678: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 41267f: 00 : : while ((c = getopt_long(argc, argv, "aAbc:d:eEf:F:h:HlL:no:p:P:qR:sStT:U:v:VwWxXz?01", 0.00 : 412680: 4d 89 f0 mov %r14,%r8 0.00 : 412683: b9 a0 a5 66 00 mov $0x66a5a0,%ecx 0.00 : 412688: ba c8 69 44 00 mov $0x4469c8,%edx 0.00 : 41268d: 4c 89 ee mov %r13,%rsi 0.00 : 412690: 89 df mov %ebx,%edi 0.00 : 412692: e8 69 12 ff ff callq 403900 0.00 : 412697: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 41269a: 0f 84 c8 04 00 00 je 412b68 : long_options, &optindex)) != -1) : { : switch (c) 0.00 : 4126a0: 83 f8 7a cmp $0x7a,%eax 0.00 : 4126a3: 76 53 jbe 4126f8 : exit(EXIT_SUCCESS); : } : break; : default: : unknown_option: : fprintf(stderr, _("Try \"%s --help\" for more information.\n"), 0.00 : 4126a5: 48 8b 3d 0c 86 25 00 mov 0x25860c(%rip),%rdi # 66acb8 0.00 : 4126ac: 48 8b 15 dd 8a 25 00 mov 0x258add(%rip),%rdx # 66b190 0.00 : 4126b3: be a0 69 44 00 mov $0x4469a0,%esi 0.00 : 4126b8: 31 c0 xor %eax,%eax 0.00 : 4126ba: e8 21 15 ff ff callq 403be0 : pset.progname); : exit(EXIT_FAILURE); 0.00 : 4126bf: bf 01 00 00 00 mov $0x1,%edi 0.00 : 4126c4: e8 c7 18 ff ff callq 403f90 0.00 : 4126c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("psql")); : : if (argc > 1) : { : if ((strcmp(argv[1], "-?") == 0) || (argc == 2 && (strcmp(argv[1], "--help") == 0))) 0.00 : 4126d0: 41 80 79 01 3f cmpb $0x3f,0x1(%r9) 0.00 : 4126d5: 0f 85 70 fc ff ff jne 41234b 0.00 : 4126db: 41 80 79 02 00 cmpb $0x0,0x2(%r9) 0.00 : 4126e0: 0f 85 65 fc ff ff jne 41234b : break; : case '?': : /* Actual help option given */ : if (strcmp(argv[optind - 1], "-?") == 0) : { : usage(NOPAGER); 0.00 : 4126e6: 31 ff xor %edi,%edi 0.00 : 4126e8: e8 b3 99 ff ff callq 40c0a0 : exit(EXIT_SUCCESS); 0.00 : 4126ed: 31 ff xor %edi,%edi 0.00 : 4126ef: e8 9c 18 ff ff callq 403f90 0.00 : 4126f4: 0f 1f 40 00 nopl 0x0(%rax) : memset(options, 0, sizeof *options); : : while ((c = getopt_long(argc, argv, "aAbc:d:eEf:F:h:HlL:no:p:P:qR:sStT:U:v:VwWxXz?01", : long_options, &optindex)) != -1) : { : switch (c) 0.00 : 4126f8: 89 c0 mov %eax,%eax 0.00 : 4126fa: ff 24 c5 90 6a 44 00 jmpq *0x446a90(,%rax,8) 0.00 : 412701: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("psql")); : : if (argc > 1) : { : if ((strcmp(argv[1], "-?") == 0) || (argc == 2 && (strcmp(argv[1], "--help") == 0))) 0.00 : 412708: bf 64 66 44 00 mov $0x446664,%edi 0.00 : 41270d: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 412712: 4c 89 ce mov %r9,%rsi 0.00 : 412715: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 412717: 0f 85 37 fc ff ff jne 412354 : break; : case '?': : /* Actual help option given */ : if (strcmp(argv[optind - 1], "-?") == 0) : { : usage(NOPAGER); 0.00 : 41271d: 31 ff xor %edi,%edi 0.00 : 41271f: e8 7c 99 ff ff callq 40c0a0 : exit(EXIT_SUCCESS); 0.00 : 412724: 31 ff xor %edi,%edi 0.00 : 412726: e8 65 18 ff ff callq 403f90 0.00 : 41272b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : refresh_utf8format(&(pset.popt.topt)); : : /* We must get COLUMNS here before readline() sets it */ : pset.popt.topt.env_columns = getenv("COLUMNS") ? atoi(getenv("COLUMNS")) : 0; : : pset.notty = (!isatty(fileno(stdin)) || !isatty(fileno(stdout))); 0.00 : 412730: 48 8b 3d 19 83 25 00 mov 0x258319(%rip),%rdi # 66aa50 0.00 : 412737: e8 34 15 ff ff callq 403c70 0.00 : 41273c: 89 c7 mov %eax,%edi 0.00 : 41273e: e8 fd 0f ff ff callq 403740 0.00 : 412743: 31 d2 xor %edx,%edx 0.00 : 412745: 85 c0 test %eax,%eax 0.00 : 412747: 0f 85 4e fd ff ff jne 41249b 0.00 : 41274d: e9 44 fd ff ff jmpq 412496 0.00 : 412752: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : break; : case 'X': : options->no_psqlrc = true; : break; : case 'z': : pset.popt.topt.fieldSep.separator_zero = true; 0.00 : 412758: c6 05 91 89 25 00 01 movb $0x1,0x258991(%rip) # 66b0f0 0.00 : 41275f: 90 nop 0.00 : 412760: e9 1b ff ff ff jmpq 412680 0.00 : 412765: 0f 1f 00 nopl (%rax) : break; : case 'W': : pset.getPassword = TRI_YES; : break; : case 'x': : pset.popt.topt.expanded = true; 0.00 : 412768: 66 c7 05 5b 89 25 00 movw $0x1,0x25895b(%rip) # 66b0cc 0.00 : 41276f: 01 00 0.00 : 412771: e9 0a ff ff ff jmpq 412680 0.00 : 412776: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 41277d: 00 00 00 : } : case 'V': : showVersion(); : exit(EXIT_SUCCESS); : case 'w': : pset.getPassword = TRI_NO; 0.00 : 412780: c7 05 f2 89 25 00 01 movl $0x1,0x2589f2(%rip) # 66b17c 0.00 : 412787: 00 00 00 0.00 : 41278a: e9 f1 fe ff ff jmpq 412680 0.00 : 41278f: 90 nop : else : goto unknown_option; : break; : case 1: : { : if (!optarg || strcmp(optarg, "options") == 0) 0.00 : 412790: 4c 8b 05 09 85 25 00 mov 0x258509(%rip),%r8 # 66aca0 0.00 : 412797: 4d 85 c0 test %r8,%r8 0.00 : 41279a: 74 15 je 4127b1 0.00 : 41279c: bf 68 81 44 00 mov $0x448168,%edi 0.00 : 4127a1: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 4127a6: 4c 89 c6 mov %r8,%rsi 0.00 : 4127a9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 4127ab: 0f 85 3f 07 00 00 jne 412ef0 : usage(NOPAGER); 0.00 : 4127b1: 31 ff xor %edi,%edi 0.00 : 4127b3: e8 e8 98 ff ff callq 40c0a0 : else if (optarg && strcmp(optarg, "variables") == 0) : helpVariables(NOPAGER); : else : goto unknown_option; : : exit(EXIT_SUCCESS); 0.00 : 4127b8: 31 ff xor %edi,%edi 0.00 : 4127ba: e8 d1 17 ff ff callq 403f90 0.00 : 4127bf: 90 nop : case 'v': : { : char *value; : char *equal_loc; : : value = pg_strdup(optarg); 0.00 : 4127c0: 48 8b 3d d9 84 25 00 mov 0x2584d9(%rip),%rdi # 66aca0 0.00 : 4127c7: e8 94 16 02 00 callq 433e60 : equal_loc = strchr(value, '='); 0.00 : 4127cc: be 3d 00 00 00 mov $0x3d,%esi 0.00 : 4127d1: 48 89 c7 mov %rax,%rdi : case 'v': : { : char *value; : char *equal_loc; : : value = pg_strdup(optarg); 0.00 : 4127d4: 49 89 c4 mov %rax,%r12 : equal_loc = strchr(value, '='); 0.00 : 4127d7: e8 74 11 ff ff callq 403950 : if (!equal_loc) 0.00 : 4127dc: 48 85 c0 test %rax,%rax 0.00 : 4127df: 0f 84 20 08 00 00 je 413005 : exit(EXIT_FAILURE); : } : } : else : { : *equal_loc = '\0'; 0.00 : 4127e5: c6 00 00 movb $0x0,(%rax) : if (!SetVariable(pset.vars, value, equal_loc + 1)) 0.00 : 4127e8: 48 8b 3d d1 89 25 00 mov 0x2589d1(%rip),%rdi # 66b1c0 0.00 : 4127ef: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 4127f3: 4c 89 e6 mov %r12,%rsi 0.00 : 4127f6: e8 25 13 00 00 callq 413b20 0.00 : 4127fb: 84 c0 test %al,%al 0.00 : 4127fd: 0f 84 52 09 00 00 je 413155 : pset.progname, value); : exit(EXIT_FAILURE); : } : } : : free(value); 0.00 : 412803: 4c 89 e7 mov %r12,%rdi 0.00 : 412806: e8 75 0e ff ff callq 403680 0.00 : 41280b: e9 70 fe ff ff jmpq 412680 : break; : case 'S': : SetVariableBool(pset.vars, "SINGLELINE"); : break; : case 't': : pset.popt.topt.tuples_only = true; 0.00 : 412810: c6 05 bb 88 25 00 01 movb $0x1,0x2588bb(%rip) # 66b0d2 0.00 : 412817: e9 64 fe ff ff jmpq 412680 0.00 : 41281c: 0f 1f 40 00 nopl 0x0(%rax) : case 'R': : pset.popt.topt.recordSep.separator = pg_strdup(optarg); : pset.popt.topt.recordSep.separator_zero = false; : break; : case 's': : SetVariableBool(pset.vars, "SINGLESTEP"); 0.00 : 412820: 48 8b 3d 99 89 25 00 mov 0x258999(%rip),%rdi # 66b1c0 0.00 : 412827: be c2 66 44 00 mov $0x4466c2,%esi 0.00 : 41282c: e8 2f 14 00 00 callq 413c60 0.00 : 412831: e9 4a fe ff ff jmpq 412680 0.00 : 412836: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 41283d: 00 00 00 : : free(value); : break; : } : case 'q': : SetVariableBool(pset.vars, "QUIET"); 0.00 : 412840: 48 8b 3d 79 89 25 00 mov 0x258979(%rip),%rdi # 66b1c0 0.00 : 412847: be b1 66 44 00 mov $0x4466b1,%esi 0.00 : 41284c: e8 0f 14 00 00 callq 413c60 0.00 : 412851: e9 2a fe ff ff jmpq 412680 0.00 : 412856: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 41285d: 00 00 00 : break; : case 'o': : setQFout(optarg); : break; : case 'p': : options->port = pg_strdup(optarg); 0.00 : 412860: 48 8b 3d 39 84 25 00 mov 0x258439(%rip),%rdi # 66aca0 0.00 : 412867: e8 f4 15 02 00 callq 433e60 0.00 : 41286c: 48 89 45 90 mov %rax,-0x70(%rbp) 0.00 : 412870: e9 0b fe ff ff jmpq 412680 0.00 : 412875: 0f 1f 00 nopl (%rax) : break; : case 'n': : options->no_readline = true; : break; : case 'o': : setQFout(optarg); 0.00 : 412878: 48 8b 3d 21 84 25 00 mov 0x258421(%rip),%rdi # 66aca0 0.00 : 41287f: e8 cc 6c ff ff callq 409550 0.00 : 412884: e9 f7 fd ff ff jmpq 412680 0.00 : 412889: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : break; : case 'L': : options->logfilename = pg_strdup(optarg); : break; : case 'n': : options->no_readline = true; 0.00 : 412890: c6 45 b8 01 movb $0x1,-0x48(%rbp) 0.00 : 412894: e9 e7 fd ff ff jmpq 412680 0.00 : 412899: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : break; : case 'H': : pset.popt.topt.format = PRINT_HTML; : break; : case 'l': : options->action = ACT_LIST_DB; 0.00 : 4128a0: c7 45 a8 02 00 00 00 movl $0x2,-0x58(%rbp) 0.00 : 4128a7: 90 nop 0.00 : 4128a8: e9 d3 fd ff ff jmpq 412680 0.00 : 4128ad: 0f 1f 00 nopl (%rax) : case 'F': : pset.popt.topt.fieldSep.separator = pg_strdup(optarg); : pset.popt.topt.fieldSep.separator_zero = false; : break; : case 'h': : options->host = pg_strdup(optarg); 0.00 : 4128b0: 48 8b 3d e9 83 25 00 mov 0x2583e9(%rip),%rdi # 66aca0 0.00 : 4128b7: e8 a4 15 02 00 callq 433e60 0.00 : 4128bc: 48 89 45 88 mov %rax,-0x78(%rbp) 0.00 : 4128c0: e9 bb fd ff ff jmpq 412680 0.00 : 4128c5: 0f 1f 00 nopl (%rax) : case 'E': : SetVariableBool(pset.vars, "ECHO_HIDDEN"); : break; : case 'f': : options->action = ACT_FILE; : options->action_string = pg_strdup(optarg); 0.00 : 4128c8: 48 8b 3d d1 83 25 00 mov 0x2583d1(%rip),%rdi # 66aca0 : break; : case 'E': : SetVariableBool(pset.vars, "ECHO_HIDDEN"); : break; : case 'f': : options->action = ACT_FILE; 0.00 : 4128cf: c7 45 a8 04 00 00 00 movl $0x4,-0x58(%rbp) : options->action_string = pg_strdup(optarg); 0.00 : 4128d6: e8 85 15 02 00 callq 433e60 0.00 : 4128db: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 4128df: e9 9c fd ff ff jmpq 412680 0.00 : 4128e4: 0f 1f 40 00 nopl 0x0(%rax) : break; : case 'd': : options->dbname = pg_strdup(optarg); : break; : case 'e': : SetVariable(pset.vars, "ECHO", "queries"); 0.00 : 4128e8: 48 8b 3d d1 88 25 00 mov 0x2588d1(%rip),%rdi # 66b1c0 0.00 : 4128ef: ba 7c 67 44 00 mov $0x44677c,%edx 0.00 : 4128f4: be d9 66 44 00 mov $0x4466d9,%esi 0.00 : 4128f9: e8 22 12 00 00 callq 413b20 0.00 : 4128fe: e9 7d fd ff ff jmpq 412680 0.00 : 412903: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : } : else : options->action = ACT_SINGLE_QUERY; : break; : case 'd': : options->dbname = pg_strdup(optarg); 0.00 : 412908: 48 8b 3d 91 83 25 00 mov 0x258391(%rip),%rdi # 66aca0 0.00 : 41290f: e8 4c 15 02 00 callq 433e60 0.00 : 412914: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 412918: e9 63 fd ff ff jmpq 412680 0.00 : 41291d: 0f 1f 00 nopl (%rax) : break; : case 'b': : SetVariable(pset.vars, "ECHO", "errors"); : break; : case 'c': : options->action_string = pg_strdup(optarg); 0.00 : 412920: 48 8b 3d 79 83 25 00 mov 0x258379(%rip),%rdi # 66aca0 0.00 : 412927: e8 34 15 02 00 callq 433e60 0.00 : 41292c: 48 89 45 b0 mov %rax,-0x50(%rbp) : if (optarg[0] == '\\') 0.00 : 412930: 48 8b 05 69 83 25 00 mov 0x258369(%rip),%rax # 66aca0 0.00 : 412937: 80 38 5c cmpb $0x5c,(%rax) 0.00 : 41293a: 0f 84 79 06 00 00 je 412fb9 : { : options->action = ACT_SINGLE_SLASH; : options->action_string++; : } : else : options->action = ACT_SINGLE_QUERY; 0.00 : 412940: c7 45 a8 03 00 00 00 movl $0x3,-0x58(%rbp) 0.00 : 412947: e9 34 fd ff ff jmpq 412680 0.00 : 41294c: 0f 1f 40 00 nopl 0x0(%rax) : break; : case 'A': : pset.popt.topt.format = PRINT_UNALIGNED; : break; : case 'b': : SetVariable(pset.vars, "ECHO", "errors"); 0.00 : 412950: 48 8b 3d 69 88 25 00 mov 0x258869(%rip),%rdi # 66b1c0 0.00 : 412957: ba 89 67 44 00 mov $0x446789,%edx 0.00 : 41295c: be d9 66 44 00 mov $0x4466d9,%esi 0.00 : 412961: e8 ba 11 00 00 callq 413b20 0.00 : 412966: e9 15 fd ff ff jmpq 412680 0.00 : 41296b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : long_options, &optindex)) != -1) : { : switch (c) : { : case 'a': : SetVariable(pset.vars, "ECHO", "all"); 0.00 : 412970: 48 8b 3d 49 88 25 00 mov 0x258849(%rip),%rdi # 66b1c0 0.00 : 412977: ba 62 67 44 00 mov $0x446762,%edx 0.00 : 41297c: be d9 66 44 00 mov $0x4466d9,%esi 0.00 : 412981: e8 9a 11 00 00 callq 413b20 0.00 : 412986: e9 f5 fc ff ff jmpq 412680 0.00 : 41298b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : break; : case 'x': : pset.popt.topt.expanded = true; : break; : case 'X': : options->no_psqlrc = true; 0.00 : 412990: c6 45 b9 01 movb $0x1,-0x47(%rbp) 0.00 : 412994: e9 e7 fc ff ff jmpq 412680 0.00 : 412999: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : exit(EXIT_SUCCESS); : case 'w': : pset.getPassword = TRI_NO; : break; : case 'W': : pset.getPassword = TRI_YES; 0.00 : 4129a0: c7 05 d2 87 25 00 02 movl $0x2,0x2587d2(%rip) # 66b17c 0.00 : 4129a7: 00 00 00 0.00 : 4129aa: e9 d1 fc ff ff jmpq 412680 0.00 : 4129af: 90 nop : break; : case 'T': : pset.popt.topt.tableAttr = pg_strdup(optarg); : break; : case 'U': : options->username = pg_strdup(optarg); 0.00 : 4129b0: 48 8b 3d e9 82 25 00 mov 0x2582e9(%rip),%rdi # 66aca0 0.00 : 4129b7: e8 a4 14 02 00 callq 433e60 0.00 : 4129bc: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 4129c0: e9 bb fc ff ff jmpq 412680 0.00 : 4129c5: 0f 1f 00 nopl (%rax) : break; : case 't': : pset.popt.topt.tuples_only = true; : break; : case 'T': : pset.popt.topt.tableAttr = pg_strdup(optarg); 0.00 : 4129c8: 48 8b 3d d1 82 25 00 mov 0x2582d1(%rip),%rdi # 66aca0 0.00 : 4129cf: e8 8c 14 02 00 callq 433e60 0.00 : 4129d4: 48 89 05 35 87 25 00 mov %rax,0x258735(%rip) # 66b110 0.00 : 4129db: e9 a0 fc ff ff jmpq 412680 : break; : case 's': : SetVariableBool(pset.vars, "SINGLESTEP"); : break; : case 'S': : SetVariableBool(pset.vars, "SINGLELINE"); 0.00 : 4129e0: 48 8b 3d d9 87 25 00 mov 0x2587d9(%rip),%rdi # 66b1c0 0.00 : 4129e7: be b7 66 44 00 mov $0x4466b7,%esi 0.00 : 4129ec: e8 6f 12 00 00 callq 413c60 0.00 : 4129f1: e9 8a fc ff ff jmpq 412680 0.00 : 4129f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4129fd: 00 00 00 : } : case 'q': : SetVariableBool(pset.vars, "QUIET"); : break; : case 'R': : pset.popt.topt.recordSep.separator = pg_strdup(optarg); 0.00 : 412a00: 48 8b 3d 99 82 25 00 mov 0x258299(%rip),%rdi # 66aca0 0.00 : 412a07: e8 54 14 02 00 callq 433e60 : pset.popt.topt.recordSep.separator_zero = false; 0.00 : 412a0c: c6 05 ed 86 25 00 00 movb $0x0,0x2586ed(%rip) # 66b100 : } : case 'q': : SetVariableBool(pset.vars, "QUIET"); : break; : case 'R': : pset.popt.topt.recordSep.separator = pg_strdup(optarg); 0.00 : 412a13: 48 89 05 de 86 25 00 mov %rax,0x2586de(%rip) # 66b0f8 0.00 : 412a1a: e9 61 fc ff ff jmpq 412680 0.00 : 412a1f: 90 nop : { : char *value; : char *equal_loc; : bool result; : : value = pg_strdup(optarg); 0.00 : 412a20: 48 8b 3d 79 82 25 00 mov 0x258279(%rip),%rdi # 66aca0 0.00 : 412a27: e8 34 14 02 00 callq 433e60 : equal_loc = strchr(value, '='); 0.00 : 412a2c: be 3d 00 00 00 mov $0x3d,%esi 0.00 : 412a31: 48 89 c7 mov %rax,%rdi : { : char *value; : char *equal_loc; : bool result; : : value = pg_strdup(optarg); 0.00 : 412a34: 49 89 c4 mov %rax,%r12 : equal_loc = strchr(value, '='); 0.00 : 412a37: e8 14 0f ff ff callq 403950 : if (!equal_loc) 0.00 : 412a3c: 48 85 c0 test %rax,%rax 0.00 : 412a3f: 0f 84 a7 05 00 00 je 412fec : result = do_pset(value, NULL, &pset.popt, true); : else : { : *equal_loc = '\0'; : result = do_pset(value, equal_loc + 1, &pset.popt, true); 0.00 : 412a45: 48 8d 70 01 lea 0x1(%rax),%rsi : equal_loc = strchr(value, '='); : if (!equal_loc) : result = do_pset(value, NULL, &pset.popt, true); : else : { : *equal_loc = '\0'; 0.00 : 412a49: c6 00 00 movb $0x0,(%rax) : result = do_pset(value, equal_loc + 1, &pset.popt, true); 0.00 : 412a4c: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 412a51: ba c8 b0 66 00 mov $0x66b0c8,%edx 0.00 : 412a56: 4c 89 e7 mov %r12,%rdi 0.00 : 412a59: e8 42 1e ff ff callq 4048a0 : } : : if (!result) 0.00 : 412a5e: 84 c0 test %al,%al 0.00 : 412a60: 0f 85 9d fd ff ff jne 412803 : { : fprintf(stderr, _("%s: could not set printing parameter \"%s\"\n"), pset.progname, value); 0.00 : 412a66: 48 8b 3d 4b 82 25 00 mov 0x25824b(%rip),%rdi # 66acb8 0.00 : 412a6d: 48 8b 15 1c 87 25 00 mov 0x25871c(%rip),%rdx # 66b190 0.00 : 412a74: 4c 89 e1 mov %r12,%rcx 0.00 : 412a77: be 20 69 44 00 mov $0x446920,%esi 0.00 : 412a7c: e8 5f 11 ff ff callq 403be0 : exit(EXIT_FAILURE); 0.00 : 412a81: bf 01 00 00 00 mov $0x1,%edi 0.00 : 412a86: e8 05 15 ff ff callq 403f90 0.00 : 412a8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : break; : case 'l': : options->action = ACT_LIST_DB; : break; : case 'L': : options->logfilename = pg_strdup(optarg); 0.00 : 412a90: 48 8b 3d 09 82 25 00 mov 0x258209(%rip),%rdi # 66aca0 0.00 : 412a97: e8 c4 13 02 00 callq 433e60 0.00 : 412a9c: 48 89 45 a0 mov %rax,-0x60(%rbp) 0.00 : 412aa0: e9 db fb ff ff jmpq 412680 0.00 : 412aa5: 0f 1f 00 nopl (%rax) : break; : case 'h': : options->host = pg_strdup(optarg); : break; : case 'H': : pset.popt.topt.format = PRINT_HTML; 0.00 : 412aa8: c7 05 16 86 25 00 04 movl $0x4,0x258616(%rip) # 66b0c8 0.00 : 412aaf: 00 00 00 0.00 : 412ab2: e9 c9 fb ff ff jmpq 412680 0.00 : 412ab7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 412abe: 00 00 : case 'f': : options->action = ACT_FILE; : options->action_string = pg_strdup(optarg); : break; : case 'F': : pset.popt.topt.fieldSep.separator = pg_strdup(optarg); 0.00 : 412ac0: 48 8b 3d d9 81 25 00 mov 0x2581d9(%rip),%rdi # 66aca0 0.00 : 412ac7: e8 94 13 02 00 callq 433e60 : pset.popt.topt.fieldSep.separator_zero = false; 0.00 : 412acc: c6 05 1d 86 25 00 00 movb $0x0,0x25861d(%rip) # 66b0f0 : case 'f': : options->action = ACT_FILE; : options->action_string = pg_strdup(optarg); : break; : case 'F': : pset.popt.topt.fieldSep.separator = pg_strdup(optarg); 0.00 : 412ad3: 48 89 05 0e 86 25 00 mov %rax,0x25860e(%rip) # 66b0e8 0.00 : 412ada: e9 a1 fb ff ff jmpq 412680 0.00 : 412adf: 90 nop : break; : case 'e': : SetVariable(pset.vars, "ECHO", "queries"); : break; : case 'E': : SetVariableBool(pset.vars, "ECHO_HIDDEN"); 0.00 : 412ae0: 48 8b 3d d9 86 25 00 mov 0x2586d9(%rip),%rdi # 66b1c0 0.00 : 412ae7: be de 66 44 00 mov $0x4466de,%esi 0.00 : 412aec: e8 6f 11 00 00 callq 413c60 0.00 : 412af1: e9 8a fb ff ff jmpq 412680 0.00 : 412af6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 412afd: 00 00 00 : { : case 'a': : SetVariable(pset.vars, "ECHO", "all"); : break; : case 'A': : pset.popt.topt.format = PRINT_UNALIGNED; 0.00 : 412b00: c7 05 be 85 25 00 01 movl $0x1,0x2585be(%rip) # 66b0c8 0.00 : 412b07: 00 00 00 0.00 : 412b0a: e9 71 fb ff ff jmpq 412680 0.00 : 412b0f: 90 nop : case '1': : options->single_txn = true; : break; : case '?': : /* Actual help option given */ : if (strcmp(argv[optind - 1], "-?") == 0) 0.00 : 412b10: 48 63 05 71 81 25 00 movslq 0x258171(%rip),%rax # 66ac88 0.00 : 412b17: 49 8b 44 c5 f8 mov -0x8(%r13,%rax,8),%rax 0.00 : 412b1c: 80 38 2d cmpb $0x2d,(%rax) 0.00 : 412b1f: 0f 85 80 fb ff ff jne 4126a5 0.00 : 412b25: 80 78 01 3f cmpb $0x3f,0x1(%rax) 0.00 : 412b29: 0f 85 76 fb ff ff jne 4126a5 0.00 : 412b2f: 80 78 02 00 cmpb $0x0,0x2(%rax) 0.00 : 412b33: 0f 85 6c fb ff ff jne 4126a5 0.00 : 412b39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 412b40: e9 a1 fb ff ff jmpq 4126e6 0.00 : 412b45: 0f 1f 00 nopl (%rax) : break; : case '0': : pset.popt.topt.recordSep.separator_zero = true; : break; : case '1': : options->single_txn = true; 0.00 : 412b48: c6 45 ba 01 movb $0x1,-0x46(%rbp) 0.00 : 412b4c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 412b50: e9 2b fb ff ff jmpq 412680 0.00 : 412b55: 0f 1f 00 nopl (%rax) : break; : case 'z': : pset.popt.topt.fieldSep.separator_zero = true; : break; : case '0': : pset.popt.topt.recordSep.separator_zero = true; 0.00 : 412b58: c6 05 a1 85 25 00 01 movb $0x1,0x2585a1(%rip) # 66b100 0.00 : 412b5f: 90 nop 0.00 : 412b60: e9 1b fb ff ff jmpq 412680 0.00 : 412b65: 0f 1f 00 nopl (%rax) : } : : /* : * if we still have arguments, use it as the database name and username : */ : while (argc - optind >= 1) 0.00 : 412b68: 8b 15 1a 81 25 00 mov 0x25811a(%rip),%edx # 66ac88 0.00 : 412b6e: 89 d8 mov %ebx,%eax 0.00 : 412b70: 29 d0 sub %edx,%eax 0.00 : 412b72: 89 d1 mov %edx,%ecx 0.00 : 412b74: 85 c0 test %eax,%eax 0.00 : 412b76: 7f 1b jg 412b93 0.00 : 412b78: e9 83 00 00 00 jmpq 412c00 0.00 : 412b7d: 0f 1f 00 nopl (%rax) : options->username = argv[optind]; : else if (!pset.quiet) : fprintf(stderr, _("%s: warning: extra command-line argument \"%s\" ignored\n"), : pset.progname, argv[optind]); : : optind++; 0.00 : 412b80: 8d 4a 01 lea 0x1(%rdx),%ecx : } : : /* : * if we still have arguments, use it as the database name and username : */ : while (argc - optind >= 1) 0.00 : 412b83: 89 d8 mov %ebx,%eax 0.00 : 412b85: 29 c8 sub %ecx,%eax : options->username = argv[optind]; : else if (!pset.quiet) : fprintf(stderr, _("%s: warning: extra command-line argument \"%s\" ignored\n"), : pset.progname, argv[optind]); : : optind++; 0.00 : 412b87: 89 ca mov %ecx,%edx 0.00 : 412b89: 89 0d f9 80 25 00 mov %ecx,0x2580f9(%rip) # 66ac88 : } : : /* : * if we still have arguments, use it as the database name and username : */ : while (argc - optind >= 1) 0.00 : 412b8f: 85 c0 test %eax,%eax 0.00 : 412b91: 7e 6d jle 412c00 : { : if (!options->dbname) 0.00 : 412b93: 48 83 7d 80 00 cmpq $0x0,-0x80(%rbp) 0.00 : 412b98: 74 3e je 412bd8 : options->dbname = argv[optind]; : else if (!options->username) 0.00 : 412b9a: 48 83 7d 98 00 cmpq $0x0,-0x68(%rbp) 0.00 : 412b9f: 74 4f je 412bf0 : options->username = argv[optind]; : else if (!pset.quiet) 0.00 : 412ba1: 80 3d 22 86 25 00 00 cmpb $0x0,0x258622(%rip) # 66b1ca 0.00 : 412ba8: 75 d6 jne 412b80 : fprintf(stderr, _("%s: warning: extra command-line argument \"%s\" ignored\n"), 0.00 : 412baa: 48 63 c1 movslq %ecx,%rax 0.00 : 412bad: 48 8b 15 dc 85 25 00 mov 0x2585dc(%rip),%rdx # 66b190 0.00 : 412bb4: 48 8b 3d fd 80 25 00 mov 0x2580fd(%rip),%rdi # 66acb8 0.00 : 412bbb: 49 8b 4c c5 00 mov 0x0(%r13,%rax,8),%rcx 0.00 : 412bc0: be f8 69 44 00 mov $0x4469f8,%esi 0.00 : 412bc5: 31 c0 xor %eax,%eax 0.00 : 412bc7: e8 14 10 ff ff callq 403be0 0.00 : 412bcc: 8b 15 b6 80 25 00 mov 0x2580b6(%rip),%edx # 66ac88 0.00 : 412bd2: eb ac jmp 412b80 0.00 : 412bd4: 0f 1f 40 00 nopl 0x0(%rax) : * if we still have arguments, use it as the database name and username : */ : while (argc - optind >= 1) : { : if (!options->dbname) : options->dbname = argv[optind]; 0.00 : 412bd8: 48 63 c1 movslq %ecx,%rax 0.00 : 412bdb: 49 8b 44 c5 00 mov 0x0(%r13,%rax,8),%rax 0.00 : 412be0: 48 89 45 80 mov %rax,-0x80(%rbp) 0.00 : 412be4: eb 9a jmp 412b80 0.00 : 412be6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 412bed: 00 00 00 : else if (!options->username) : options->username = argv[optind]; 0.00 : 412bf0: 48 63 c1 movslq %ecx,%rax 0.00 : 412bf3: 49 8b 44 c5 00 mov 0x0(%r13,%rax,8),%rax 0.00 : 412bf8: 48 89 45 98 mov %rax,-0x68(%rbp) 0.00 : 412bfc: eb 82 jmp 412b80 0.00 : 412bfe: 66 90 xchg %ax,%ax : /* : * If no action was specified and we're in non-interactive mode, treat it : * as if the user had specified "-f -". This lets single-transaction mode : * work in this case. : */ : if (options.action == ACT_NOTHING && pset.notty) /home/Computational/mark/src/postgres-andres/src/bin/psql/startup.c:167 100.00 : 412c00: 8b 45 a8 mov -0x58(%rbp),%eax 0.00 : 412c03: 85 c0 test %eax,%eax 0.00 : 412c05: 75 18 jne 412c1f 0.00 : 412c07: 80 3d 6a 85 25 00 00 cmpb $0x0,0x25856a(%rip) # 66b178 0.00 : 412c0e: 74 0f je 412c1f : { : options.action = ACT_FILE; 0.00 : 412c10: c7 45 a8 04 00 00 00 movl $0x4,-0x58(%rbp) : options.action_string = NULL; 0.00 : 412c17: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) 0.00 : 412c1e: 00 : } : : /* Bail out if -1 was specified but will be ignored. */ : if (options.single_txn && options.action != ACT_FILE && options.action == ACT_NOTHING) 0.00 : 412c1f: 80 7d ba 00 cmpb $0x0,-0x46(%rbp) 0.00 : 412c23: 0f 85 fd 02 00 00 jne 412f26 : { : fprintf(stderr, _("%s: -1 can only be used in non-interactive mode\n"), pset.progname); : exit(EXIT_FAILURE); : } : : if (!pset.popt.topt.fieldSep.separator && 0.00 : 412c29: 48 83 3d b7 84 25 00 cmpq $0x0,0x2584b7(%rip) # 66b0e8 0.00 : 412c30: 00 0.00 : 412c31: 0f 84 3b 04 00 00 je 413072 : !pset.popt.topt.fieldSep.separator_zero) : { : pset.popt.topt.fieldSep.separator = pg_strdup(DEFAULT_FIELD_SEP); : pset.popt.topt.fieldSep.separator_zero = false; : } : if (!pset.popt.topt.recordSep.separator && 0.00 : 412c37: 48 83 3d b9 84 25 00 cmpq $0x0,0x2584b9(%rip) # 66b0f8 0.00 : 412c3e: 00 0.00 : 412c3f: 0f 84 03 04 00 00 je 413048 : { : pset.popt.topt.recordSep.separator = pg_strdup(DEFAULT_RECORD_SEP); : pset.popt.topt.recordSep.separator_zero = false; : } : : if (options.username == NULL) 0.00 : 412c45: 48 8b 75 98 mov -0x68(%rbp),%rsi 0.00 : 412c49: 48 85 f6 test %rsi,%rsi 0.00 : 412c4c: 0f 84 4a 04 00 00 je 41309c : password_prompt = pg_strdup(_("Password: ")); : else : password_prompt = psprintf(_("Password for user %s: "), 0.00 : 412c52: bf e5 56 43 00 mov $0x4356e5,%edi 0.00 : 412c57: 31 c0 xor %eax,%eax 0.00 : 412c59: e8 e2 0e 02 00 callq 433b40 0.00 : 412c5e: 49 89 c7 mov %rax,%r15 : options.username); : : if (pset.getPassword == TRI_YES) 0.00 : 412c61: 45 31 f6 xor %r14d,%r14d 0.00 : 412c64: 83 3d 11 85 25 00 02 cmpl $0x2,0x258511(%rip) # 66b17c 0.00 : 412c6b: 0f 84 65 02 00 00 je 412ed6 : : /* loop until we have a password if requested by backend */ : do : { : #define PARAMS_ARRAY_SIZE 8 : const char **keywords = pg_malloc(PARAMS_ARRAY_SIZE * sizeof(*keywords)); 0.00 : 412c71: bf 40 00 00 00 mov $0x40,%edi 0.00 : 412c76: e8 b5 12 02 00 callq 433f30 : const char **values = pg_malloc(PARAMS_ARRAY_SIZE * sizeof(*values)); 0.00 : 412c7b: bf 40 00 00 00 mov $0x40,%edi : : /* loop until we have a password if requested by backend */ : do : { : #define PARAMS_ARRAY_SIZE 8 : const char **keywords = pg_malloc(PARAMS_ARRAY_SIZE * sizeof(*keywords)); 0.00 : 412c80: 49 89 c4 mov %rax,%r12 : const char **values = pg_malloc(PARAMS_ARRAY_SIZE * sizeof(*values)); 0.00 : 412c83: e8 a8 12 02 00 callq 433f30 : : keywords[0] = "host"; 0.00 : 412c88: 49 c7 04 24 f3 57 43 movq $0x4357f3,(%r12) 0.00 : 412c8f: 00 : /* loop until we have a password if requested by backend */ : do : { : #define PARAMS_ARRAY_SIZE 8 : const char **keywords = pg_malloc(PARAMS_ARRAY_SIZE * sizeof(*keywords)); : const char **values = pg_malloc(PARAMS_ARRAY_SIZE * sizeof(*values)); 0.00 : 412c90: 48 89 c3 mov %rax,%rbx : : keywords[0] = "host"; : values[0] = options.host; 0.00 : 412c93: 48 8b 45 88 mov -0x78(%rbp),%rax 0.00 : 412c97: 48 89 03 mov %rax,(%rbx) : keywords[1] = "port"; 0.00 : 412c9a: 49 c7 44 24 08 49 72 movq $0x447249,0x8(%r12) 0.00 : 412ca1: 44 00 : values[1] = options.port; 0.00 : 412ca3: 48 8b 45 90 mov -0x70(%rbp),%rax 0.00 : 412ca7: 48 89 43 08 mov %rax,0x8(%rbx) : keywords[2] = "user"; 0.00 : 412cab: 49 c7 44 24 10 d2 63 movq $0x4463d2,0x10(%r12) 0.00 : 412cb2: 44 00 : values[2] = options.username; 0.00 : 412cb4: 48 8b 45 98 mov -0x68(%rbp),%rax 0.00 : 412cb8: 48 89 43 10 mov %rax,0x10(%rbx) : keywords[3] = "password"; 0.00 : 412cbc: 49 c7 44 24 18 58 68 movq $0x446858,0x18(%r12) 0.00 : 412cc3: 44 00 : values[3] = password; 0.00 : 412cc5: 4c 89 73 18 mov %r14,0x18(%rbx) : keywords[4] = "dbname"; 0.00 : 412cc9: 49 c7 44 24 20 f8 57 movq $0x4357f8,0x20(%r12) 0.00 : 412cd0: 43 00 : values[4] = (options.action == ACT_LIST_DB && 0.00 : 412cd2: 83 7d a8 02 cmpl $0x2,-0x58(%rbp) 0.00 : 412cd6: 0f 84 ac 01 00 00 je 412e88 0.00 : 412cdc: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 412ce0: 48 89 43 20 mov %rax,0x20(%rbx) : options.dbname == NULL) ? : "postgres" : options.dbname; : keywords[5] = "fallback_application_name"; 0.00 : 412ce4: 49 c7 44 24 28 ff 57 movq $0x4357ff,0x28(%r12) 0.00 : 412ceb: 43 00 : values[5] = pset.progname; 0.00 : 412ced: 48 8b 05 9c 84 25 00 mov 0x25849c(%rip),%rax # 66b190 0.00 : 412cf4: 48 89 43 28 mov %rax,0x28(%rbx) : keywords[6] = "client_encoding"; 0.00 : 412cf8: 49 c7 44 24 30 19 58 movq $0x435819,0x30(%r12) 0.00 : 412cff: 43 00 : values[6] = (pset.notty || getenv("PGCLIENTENCODING")) ? NULL : "auto"; 0.00 : 412d01: 80 3d 70 84 25 00 00 cmpb $0x0,0x258470(%rip) # 66b178 0.00 : 412d08: 0f 84 5a 01 00 00 je 412e68 0.00 : 412d0e: 31 d2 xor %edx,%edx : keywords[7] = NULL; : values[7] = NULL; : : new_pass = false; : pset.db = PQconnectdbParams(keywords, values, true); 0.00 : 412d10: 48 89 de mov %rbx,%rsi : options.dbname == NULL) ? : "postgres" : options.dbname; : keywords[5] = "fallback_application_name"; : values[5] = pset.progname; : keywords[6] = "client_encoding"; : values[6] = (pset.notty || getenv("PGCLIENTENCODING")) ? NULL : "auto"; 0.00 : 412d13: 48 89 53 30 mov %rdx,0x30(%rbx) : keywords[7] = NULL; : values[7] = NULL; : : new_pass = false; : pset.db = PQconnectdbParams(keywords, values, true); 0.00 : 412d17: 4c 89 e7 mov %r12,%rdi 0.00 : 412d1a: ba 01 00 00 00 mov $0x1,%edx : "postgres" : options.dbname; : keywords[5] = "fallback_application_name"; : values[5] = pset.progname; : keywords[6] = "client_encoding"; : values[6] = (pset.notty || getenv("PGCLIENTENCODING")) ? NULL : "auto"; : keywords[7] = NULL; 0.00 : 412d1f: 49 c7 44 24 38 00 00 movq $0x0,0x38(%r12) 0.00 : 412d26: 00 00 : values[7] = NULL; 0.00 : 412d28: 48 c7 43 38 00 00 00 movq $0x0,0x38(%rbx) 0.00 : 412d2f: 00 : : new_pass = false; : pset.db = PQconnectdbParams(keywords, values, true); 0.00 : 412d30: e8 db 0d ff ff callq 403b10 : free(keywords); 0.00 : 412d35: 4c 89 e7 mov %r12,%rdi : values[6] = (pset.notty || getenv("PGCLIENTENCODING")) ? NULL : "auto"; : keywords[7] = NULL; : values[7] = NULL; : : new_pass = false; : pset.db = PQconnectdbParams(keywords, values, true); 0.00 : 412d38: 48 89 05 61 83 25 00 mov %rax,0x258361(%rip) # 66b0a0 : free(keywords); 0.00 : 412d3f: e8 3c 09 ff ff callq 403680 : free(values); 0.00 : 412d44: 48 89 df mov %rbx,%rdi 0.00 : 412d47: e8 34 09 ff ff callq 403680 : : if (PQstatus(pset.db) == CONNECTION_BAD && 0.00 : 412d4c: 48 8b 3d 4d 83 25 00 mov 0x25834d(%rip),%rdi # 66b0a0 0.00 : 412d53: e8 98 0a ff ff callq 4037f0 0.00 : 412d58: 83 e8 01 sub $0x1,%eax 0.00 : 412d5b: 0f 84 3f 01 00 00 je 412ea0 : password = simple_prompt(password_prompt, 100, false); : new_pass = true; : } : } while (new_pass); : : free(password); 0.00 : 412d61: 4c 89 f7 mov %r14,%rdi 0.00 : 412d64: e8 17 09 ff ff callq 403680 : free(password_prompt); 0.00 : 412d69: 4c 89 ff mov %r15,%rdi 0.00 : 412d6c: e8 0f 09 ff ff callq 403680 : : if (PQstatus(pset.db) == CONNECTION_BAD) 0.00 : 412d71: 48 8b 3d 28 83 25 00 mov 0x258328(%rip),%rdi # 66b0a0 0.00 : 412d78: e8 73 0a ff ff callq 4037f0 0.00 : 412d7d: 83 e8 01 sub $0x1,%eax 0.00 : 412d80: 0f 84 27 04 00 00 je 4131ad : fprintf(stderr, "%s: %s", pset.progname, PQerrorMessage(pset.db)); : PQfinish(pset.db); : exit(EXIT_BADCONN); : } : : setup_cancel_handler(); 0.00 : 412d86: e8 45 5f ff ff callq 408cd0 : : PQsetNoticeProcessor(pset.db, NoticeProcessor, NULL); 0.00 : 412d8b: 48 8b 3d 0e 83 25 00 mov 0x25830e(%rip),%rdi # 66b0a0 0.00 : 412d92: 31 d2 xor %edx,%edx 0.00 : 412d94: be 30 95 40 00 mov $0x409530,%esi 0.00 : 412d99: e8 c2 10 ff ff callq 403e60 : : SyncVariables(); 0.00 : 412d9e: e8 0d 24 ff ff callq 4051b0 : : if (options.action == ACT_LIST_DB) 0.00 : 412da3: 8b 45 a8 mov -0x58(%rbp),%eax 0.00 : 412da6: 83 f8 02 cmp $0x2,%eax 0.00 : 412da9: 0f 84 cb 03 00 00 je 41317a : success = listAllDbs(NULL, false); : PQfinish(pset.db); : exit(success ? EXIT_SUCCESS : EXIT_FAILURE); : } : : if (options.logfilename) 0.00 : 412daf: 48 8b 7d a0 mov -0x60(%rbp),%rdi 0.00 : 412db3: 48 85 ff test %rdi,%rdi 0.00 : 412db6: 74 1d je 412dd5 : { : pset.logfile = fopen(options.logfilename, "a"); 0.00 : 412db8: be 63 1a 45 00 mov $0x451a63,%esi 0.00 : 412dbd: e8 ee 10 ff ff callq 403eb0 : if (!pset.logfile) 0.00 : 412dc2: 48 85 c0 test %rax,%rax : exit(success ? EXIT_SUCCESS : EXIT_FAILURE); : } : : if (options.logfilename) : { : pset.logfile = fopen(options.logfilename, "a"); 0.00 : 412dc5: 48 89 05 ec 83 25 00 mov %rax,0x2583ec(%rip) # 66b1b8 : if (!pset.logfile) 0.00 : 412dcc: 0f 84 29 03 00 00 je 4130fb : fprintf(stderr, _("%s: could not open log file \"%s\": %s\n"), 0.00 : 412dd2: 8b 45 a8 mov -0x58(%rbp),%eax : */ : : /* : * process file given by -f : */ : if (options.action == ACT_FILE) 0.00 : 412dd5: 83 f8 04 cmp $0x4,%eax 0.00 : 412dd8: 0f 84 ec 01 00 00 je 412fca : } : : /* : * process slash command if one was given to -c : */ : else if (options.action == ACT_SINGLE_SLASH) 0.00 : 412dde: 83 f8 01 cmp $0x1,%eax 0.00 : 412de1: 0f 84 79 01 00 00 je 412f60 : } : : /* : * If the query given to -c was a normal one, send it : */ : else if (options.action == ACT_SINGLE_QUERY) 0.00 : 412de7: 83 f8 03 cmp $0x3,%eax 0.00 : 412dea: 0f 84 be 02 00 00 je 4130ae : /* : * or otherwise enter interactive main loop : */ : else : { : if (!options.no_psqlrc) 0.00 : 412df0: 80 7d b9 00 cmpb $0x0,-0x47(%rbp) 0.00 : 412df4: 0f 84 e5 02 00 00 je 4130df : process_psqlrc(argv[0]); : : connection_warnings(true); 0.00 : 412dfa: bf 01 00 00 00 mov $0x1,%edi 0.00 : 412dff: 90 nop 0.00 : 412e00: e8 bb 24 ff ff callq 4052c0 : if (!pset.quiet) 0.00 : 412e05: 80 3d be 83 25 00 00 cmpb $0x0,0x2583be(%rip) # 66b1ca 0.00 : 412e0c: 0f 84 be 02 00 00 je 4130d0 : printf(_("Type \"help\" for help.\n\n")); : initializeInput(options.no_readline ? 0 : 1); 0.00 : 412e12: 31 ff xor %edi,%edi 0.00 : 412e14: 80 7d b8 00 cmpb $0x0,-0x48(%rbp) 0.00 : 412e18: 40 0f 94 c7 sete %dil 0.00 : 412e1c: e8 4f 98 ff ff callq 40c670 : successResult = MainLoop(stdin); 0.00 : 412e21: 48 8b 3d 38 7c 25 00 mov 0x257c38(%rip),%rdi # 66aa60 0.00 : 412e28: e8 c3 d6 ff ff callq 4104f0 0.00 : 412e2d: 89 c3 mov %eax,%ebx : } : : /* clean up */ : if (pset.logfile) 0.00 : 412e2f: 48 8b 3d 82 83 25 00 mov 0x258382(%rip),%rdi # 66b1b8 0.00 : 412e36: 48 85 ff test %rdi,%rdi 0.00 : 412e39: 74 05 je 412e40 : fclose(pset.logfile); 0.00 : 412e3b: e8 20 0a ff ff callq 403860 : PQfinish(pset.db); 0.00 : 412e40: 48 8b 3d 59 82 25 00 mov 0x258259(%rip),%rdi # 66b0a0 0.00 : 412e47: e8 94 11 ff ff callq 403fe0 : setQFout(NULL); 0.00 : 412e4c: 31 ff xor %edi,%edi 0.00 : 412e4e: e8 fd 66 ff ff callq 409550 : : return successResult; : } 0.00 : 412e53: 48 83 c4 58 add $0x58,%rsp 0.00 : 412e57: 89 d8 mov %ebx,%eax 0.00 : 412e59: 5b pop %rbx 0.00 : 412e5a: 41 5c pop %r12 0.00 : 412e5c: 41 5d pop %r13 0.00 : 412e5e: 41 5e pop %r14 0.00 : 412e60: 41 5f pop %r15 0.00 : 412e62: c9 leaveq 0.00 : 412e63: c3 retq 0.00 : 412e64: 0f 1f 40 00 nopl 0x0(%rax) : options.dbname == NULL) ? : "postgres" : options.dbname; : keywords[5] = "fallback_application_name"; : values[5] = pset.progname; : keywords[6] = "client_encoding"; : values[6] = (pset.notty || getenv("PGCLIENTENCODING")) ? NULL : "auto"; 0.00 : 412e68: bf 29 58 43 00 mov $0x435829,%edi 0.00 : 412e6d: e8 ee 07 ff ff callq 403660 0.00 : 412e72: 48 85 c0 test %rax,%rax 0.00 : 412e75: ba 7c 56 43 00 mov $0x43567c,%edx 0.00 : 412e7a: 0f 85 8e fe ff ff jne 412d0e 0.00 : 412e80: e9 8b fe ff ff jmpq 412d10 0.00 : 412e85: 0f 1f 00 nopl (%rax) : keywords[2] = "user"; : values[2] = options.username; : keywords[3] = "password"; : values[3] = password; : keywords[4] = "dbname"; : values[4] = (options.action == ACT_LIST_DB && 0.00 : 412e88: 48 8b 45 80 mov -0x80(%rbp),%rax 0.00 : 412e8c: ba 36 67 44 00 mov $0x446736,%edx 0.00 : 412e91: 48 85 c0 test %rax,%rax 0.00 : 412e94: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 412e98: e9 43 fe ff ff jmpq 412ce0 0.00 : 412e9d: 0f 1f 00 nopl (%rax) : new_pass = false; : pset.db = PQconnectdbParams(keywords, values, true); : free(keywords); : free(values); : : if (PQstatus(pset.db) == CONNECTION_BAD && 0.00 : 412ea0: 48 8b 3d f9 81 25 00 mov 0x2581f9(%rip),%rdi # 66b0a0 0.00 : 412ea7: e8 f4 09 ff ff callq 4038a0 0.00 : 412eac: 85 c0 test %eax,%eax 0.00 : 412eae: 0f 84 ad fe ff ff je 412d61 0.00 : 412eb4: 4d 85 f6 test %r14,%r14 0.00 : 412eb7: 0f 85 a4 fe ff ff jne 412d61 0.00 : 412ebd: 83 3d b8 82 25 00 01 cmpl $0x1,0x2582b8(%rip) # 66b17c 0.00 : 412ec4: 0f 84 97 fe ff ff je 412d61 : PQconnectionNeedsPassword(pset.db) && : password == NULL && : pset.getPassword != TRI_NO) : { : PQfinish(pset.db); 0.00 : 412eca: 48 8b 3d cf 81 25 00 mov 0x2581cf(%rip),%rdi # 66b0a0 0.00 : 412ed1: e8 0a 11 ff ff callq 403fe0 : else : password_prompt = psprintf(_("Password for user %s: "), : options.username); : : if (pset.getPassword == TRI_YES) : password = simple_prompt(password_prompt, 100, false); 0.00 : 412ed6: 31 d2 xor %edx,%edx 0.00 : 412ed8: be 64 00 00 00 mov $0x64,%esi 0.00 : 412edd: 4c 89 ff mov %r15,%rdi 0.00 : 412ee0: e8 8b 20 02 00 callq 434f70 0.00 : 412ee5: 49 89 c6 mov %rax,%r14 0.00 : 412ee8: e9 84 fd ff ff jmpq 412c71 0.00 : 412eed: 0f 1f 00 nopl (%rax) : break; : case 1: : { : if (!optarg || strcmp(optarg, "options") == 0) : usage(NOPAGER); : else if (optarg && strcmp(optarg, "commands") == 0) 0.00 : 412ef0: bf 20 5a 43 00 mov $0x435a20,%edi 0.00 : 412ef5: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 412efa: 4c 89 c6 mov %r8,%rsi 0.00 : 412efd: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 412eff: 0f 84 a8 00 00 00 je 412fad : slashUsage(NOPAGER); : else if (optarg && strcmp(optarg, "variables") == 0) 0.00 : 412f05: bf 29 5a 43 00 mov $0x435a29,%edi 0.00 : 412f0a: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 412f0f: 4c 89 c6 mov %r8,%rsi 0.00 : 412f12: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 412f14: 0f 85 8b f7 ff ff jne 4126a5 : helpVariables(NOPAGER); 0.00 : 412f1a: 31 ff xor %edi,%edi 0.00 : 412f1c: e8 ef 7d ff ff callq 40ad10 0.00 : 412f21: e9 92 f8 ff ff jmpq 4127b8 : options.action = ACT_FILE; : options.action_string = NULL; : } : : /* Bail out if -1 was specified but will be ignored. */ : if (options.single_txn && options.action != ACT_FILE && options.action == ACT_NOTHING) 0.00 : 412f26: 8b 45 a8 mov -0x58(%rbp),%eax 0.00 : 412f29: 83 f8 04 cmp $0x4,%eax 0.00 : 412f2c: 0f 84 f7 fc ff ff je 412c29 0.00 : 412f32: 85 c0 test %eax,%eax 0.00 : 412f34: 0f 85 ef fc ff ff jne 412c29 : { : fprintf(stderr, _("%s: -1 can only be used in non-interactive mode\n"), pset.progname); 0.00 : 412f3a: 48 8b 3d 77 7d 25 00 mov 0x257d77(%rip),%rdi # 66acb8 0.00 : 412f41: 48 8b 15 48 82 25 00 mov 0x258248(%rip),%rdx # 66b190 0.00 : 412f48: be 30 6a 44 00 mov $0x446a30,%esi 0.00 : 412f4d: e8 8e 0c ff ff callq 403be0 : exit(EXIT_FAILURE); 0.00 : 412f52: bf 01 00 00 00 mov $0x1,%edi 0.00 : 412f57: e8 34 10 ff ff callq 403f90 0.00 : 412f5c: 0f 1f 40 00 nopl 0x0(%rax) : */ : else if (options.action == ACT_SINGLE_SLASH) : { : PsqlScanState scan_state; : : if (pset.echo == PSQL_ECHO_ALL) 0.00 : 412f60: 83 3d 6d 82 25 00 03 cmpl $0x3,0x25826d(%rip) # 66b1d4 0.00 : 412f67: 0f 84 c5 01 00 00 je 413132 : puts(options.action_string); : : scan_state = psql_scan_create(); 0.00 : 412f6d: e8 1e a7 ff ff callq 40d690 : psql_scan_setup(scan_state, 0.00 : 412f72: 48 8b 5d b0 mov -0x50(%rbp),%rbx : PsqlScanState scan_state; : : if (pset.echo == PSQL_ECHO_ALL) : puts(options.action_string); : : scan_state = psql_scan_create(); 0.00 : 412f76: 49 89 c4 mov %rax,%r12 : psql_scan_setup(scan_state, 0.00 : 412f79: 48 89 df mov %rbx,%rdi 0.00 : 412f7c: e8 ff 08 ff ff callq 403880 0.00 : 412f81: 48 89 de mov %rbx,%rsi 0.00 : 412f84: 89 c2 mov %eax,%edx 0.00 : 412f86: 4c 89 e7 mov %r12,%rdi 0.00 : 412f89: e8 b2 ab ff ff callq 40db40 : options.action_string, : strlen(options.action_string)); : : successResult = HandleSlashCmds(scan_state, NULL) != PSQL_CMD_ERROR 0.00 : 412f8e: 31 f6 xor %esi,%esi 0.00 : 412f90: 4c 89 e7 mov %r12,%rdi 0.00 : 412f93: 31 db xor %ebx,%ebx 0.00 : 412f95: e8 46 2e ff ff callq 405de0 : ? EXIT_SUCCESS : EXIT_FAILURE; : : psql_scan_destroy(scan_state); 0.00 : 412f9a: 4c 89 e7 mov %r12,%rdi : scan_state = psql_scan_create(); : psql_scan_setup(scan_state, : options.action_string, : strlen(options.action_string)); : : successResult = HandleSlashCmds(scan_state, NULL) != PSQL_CMD_ERROR 0.00 : 412f9d: 83 f8 05 cmp $0x5,%eax 0.00 : 412fa0: 0f 94 c3 sete %bl : ? EXIT_SUCCESS : EXIT_FAILURE; : : psql_scan_destroy(scan_state); 0.00 : 412fa3: e8 58 a5 ff ff callq 40d500 0.00 : 412fa8: e9 82 fe ff ff jmpq 412e2f : case 1: : { : if (!optarg || strcmp(optarg, "options") == 0) : usage(NOPAGER); : else if (optarg && strcmp(optarg, "commands") == 0) : slashUsage(NOPAGER); 0.00 : 412fad: 31 ff xor %edi,%edi 0.00 : 412faf: e8 ac 87 ff ff callq 40b760 0.00 : 412fb4: e9 ff f7 ff ff jmpq 4127b8 : break; : case 'c': : options->action_string = pg_strdup(optarg); : if (optarg[0] == '\\') : { : options->action = ACT_SINGLE_SLASH; 0.00 : 412fb9: c7 45 a8 01 00 00 00 movl $0x1,-0x58(%rbp) : options->action_string++; 0.00 : 412fc0: 48 83 45 b0 01 addq $0x1,-0x50(%rbp) 0.00 : 412fc5: e9 b6 f6 ff ff jmpq 412680 : /* : * process file given by -f : */ : if (options.action == ACT_FILE) : { : if (!options.no_psqlrc) 0.00 : 412fca: 80 7d b9 00 cmpb $0x0,-0x47(%rbp) 0.00 : 412fce: 66 90 xchg %ax,%ax 0.00 : 412fd0: 0f 84 17 01 00 00 je 4130ed : process_psqlrc(argv[0]); : : successResult = process_file(options.action_string, options.single_txn, false); 0.00 : 412fd6: 0f be 75 ba movsbl -0x46(%rbp),%esi 0.00 : 412fda: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 412fde: 31 d2 xor %edx,%edx 0.00 : 412fe0: e8 5b 1f ff ff callq 404f40 0.00 : 412fe5: 89 c3 mov %eax,%ebx 0.00 : 412fe7: e9 43 fe ff ff jmpq 412e2f : bool result; : : value = pg_strdup(optarg); : equal_loc = strchr(value, '='); : if (!equal_loc) : result = do_pset(value, NULL, &pset.popt, true); 0.00 : 412fec: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 412ff1: ba c8 b0 66 00 mov $0x66b0c8,%edx 0.00 : 412ff6: 31 f6 xor %esi,%esi 0.00 : 412ff8: 4c 89 e7 mov %r12,%rdi 0.00 : 412ffb: e8 a0 18 ff ff callq 4048a0 0.00 : 413000: e9 59 fa ff ff jmpq 412a5e : : value = pg_strdup(optarg); : equal_loc = strchr(value, '='); : if (!equal_loc) : { : if (!DeleteVariable(pset.vars, value)) 0.00 : 413005: 48 8b 3d b4 81 25 00 mov 0x2581b4(%rip),%rdi # 66b1c0 0.00 : 41300c: 4c 89 e6 mov %r12,%rsi 0.00 : 41300f: e8 3c 09 00 00 callq 413950 0.00 : 413014: 84 c0 test %al,%al 0.00 : 413016: 0f 85 e7 f7 ff ff jne 412803 : { : fprintf(stderr, _("%s: could not delete variable \"%s\"\n"), 0.00 : 41301c: 48 8b 3d 95 7c 25 00 mov 0x257c95(%rip),%rdi # 66acb8 0.00 : 413023: 48 8b 15 66 81 25 00 mov 0x258166(%rip),%rdx # 66b190 0.00 : 41302a: 4c 89 e1 mov %r12,%rcx 0.00 : 41302d: be 50 69 44 00 mov $0x446950,%esi 0.00 : 413032: e8 a9 0b ff ff callq 403be0 : pset.progname, value); : exit(EXIT_FAILURE); 0.00 : 413037: bf 01 00 00 00 mov $0x1,%edi 0.00 : 41303c: e8 4f 0f ff ff callq 403f90 0.00 : 413041: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : !pset.popt.topt.fieldSep.separator_zero) : { : pset.popt.topt.fieldSep.separator = pg_strdup(DEFAULT_FIELD_SEP); : pset.popt.topt.fieldSep.separator_zero = false; : } : if (!pset.popt.topt.recordSep.separator && 0.00 : 413048: 80 3d b1 80 25 00 00 cmpb $0x0,0x2580b1(%rip) # 66b100 0.00 : 41304f: 0f 85 f0 fb ff ff jne 412c45 : !pset.popt.topt.recordSep.separator_zero) : { : pset.popt.topt.recordSep.separator = pg_strdup(DEFAULT_RECORD_SEP); 0.00 : 413055: bf 16 69 43 00 mov $0x436916,%edi 0.00 : 41305a: e8 01 0e 02 00 callq 433e60 : pset.popt.topt.recordSep.separator_zero = false; 0.00 : 41305f: c6 05 9a 80 25 00 00 movb $0x0,0x25809a(%rip) # 66b100 : pset.popt.topt.fieldSep.separator_zero = false; : } : if (!pset.popt.topt.recordSep.separator && : !pset.popt.topt.recordSep.separator_zero) : { : pset.popt.topt.recordSep.separator = pg_strdup(DEFAULT_RECORD_SEP); 0.00 : 413066: 48 89 05 8b 80 25 00 mov %rax,0x25808b(%rip) # 66b0f8 0.00 : 41306d: e9 d3 fb ff ff jmpq 412c45 : { : fprintf(stderr, _("%s: -1 can only be used in non-interactive mode\n"), pset.progname); : exit(EXIT_FAILURE); : } : : if (!pset.popt.topt.fieldSep.separator && 0.00 : 413072: 80 3d 77 80 25 00 00 cmpb $0x0,0x258077(%rip) # 66b0f0 0.00 : 413079: 0f 85 b8 fb ff ff jne 412c37 : !pset.popt.topt.fieldSep.separator_zero) : { : pset.popt.topt.fieldSep.separator = pg_strdup(DEFAULT_FIELD_SEP); 0.00 : 41307f: bf 60 75 44 00 mov $0x447560,%edi 0.00 : 413084: e8 d7 0d 02 00 callq 433e60 : pset.popt.topt.fieldSep.separator_zero = false; 0.00 : 413089: c6 05 60 80 25 00 00 movb $0x0,0x258060(%rip) # 66b0f0 : } : : if (!pset.popt.topt.fieldSep.separator && : !pset.popt.topt.fieldSep.separator_zero) : { : pset.popt.topt.fieldSep.separator = pg_strdup(DEFAULT_FIELD_SEP); 0.00 : 413090: 48 89 05 51 80 25 00 mov %rax,0x258051(%rip) # 66b0e8 0.00 : 413097: e9 9b fb ff ff jmpq 412c37 : pset.popt.topt.recordSep.separator = pg_strdup(DEFAULT_RECORD_SEP); : pset.popt.topt.recordSep.separator_zero = false; : } : : if (options.username == NULL) : password_prompt = pg_strdup(_("Password: ")); 0.00 : 41309c: bf da 56 43 00 mov $0x4356da,%edi 0.00 : 4130a1: e8 ba 0d 02 00 callq 433e60 0.00 : 4130a6: 49 89 c7 mov %rax,%r15 0.00 : 4130a9: e9 b3 fb ff ff jmpq 412c61 : /* : * If the query given to -c was a normal one, send it : */ : else if (options.action == ACT_SINGLE_QUERY) : { : if (pset.echo == PSQL_ECHO_ALL) 0.00 : 4130ae: 83 3d 1f 81 25 00 03 cmpl $0x3,0x25811f(%rip) # 66b1d4 0.00 : 4130b5: 0f 84 8a 00 00 00 je 413145 : puts(options.action_string); : : successResult = SendQuery(options.action_string) 0.00 : 4130bb: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 4130bf: 31 db xor %ebx,%ebx 0.00 : 4130c1: e8 8a 6c ff ff callq 409d50 0.00 : 4130c6: 84 c0 test %al,%al 0.00 : 4130c8: 0f 94 c3 sete %bl 0.00 : 4130cb: e9 5f fd ff ff jmpq 412e2f : if (!options.no_psqlrc) : process_psqlrc(argv[0]); : : connection_warnings(true); : if (!pset.quiet) : printf(_("Type \"help\" for help.\n\n")); 0.00 : 4130d0: bf 46 67 44 00 mov $0x446746,%edi 0.00 : 4130d5: e8 46 06 ff ff callq 403720 0.00 : 4130da: e9 33 fd ff ff jmpq 412e12 : * or otherwise enter interactive main loop : */ : else : { : if (!options.no_psqlrc) : process_psqlrc(argv[0]); 0.00 : 4130df: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 4130e3: e8 08 f1 ff ff callq 4121f0 0.00 : 4130e8: e9 0d fd ff ff jmpq 412dfa : * process file given by -f : */ : if (options.action == ACT_FILE) : { : if (!options.no_psqlrc) : process_psqlrc(argv[0]); 0.00 : 4130ed: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 4130f1: e8 fa f0 ff ff callq 4121f0 0.00 : 4130f6: e9 db fe ff ff jmpq 412fd6 0.00 : 4130fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : if (options.logfilename) : { : pset.logfile = fopen(options.logfilename, "a"); : if (!pset.logfile) : fprintf(stderr, _("%s: could not open log file \"%s\": %s\n"), 0.00 : 413100: e8 ab 05 ff ff callq 4036b0 <__errno_location@plt> 0.00 : 413105: 8b 38 mov (%rax),%edi 0.00 : 413107: e8 04 0f ff ff callq 404010 0.00 : 41310c: 48 8b 4d a0 mov -0x60(%rbp),%rcx 0.00 : 413110: 48 8b 15 79 80 25 00 mov 0x258079(%rip),%rdx # 66b190 0.00 : 413117: 49 89 c0 mov %rax,%r8 0.00 : 41311a: 48 8b 3d 97 7b 25 00 mov 0x257b97(%rip),%rdi # 66acb8 0.00 : 413121: be 68 6a 44 00 mov $0x446a68,%esi 0.00 : 413126: 31 c0 xor %eax,%eax 0.00 : 413128: e8 b3 0a ff ff callq 403be0 0.00 : 41312d: e9 a0 fc ff ff jmpq 412dd2 : else if (options.action == ACT_SINGLE_SLASH) : { : PsqlScanState scan_state; : : if (pset.echo == PSQL_ECHO_ALL) : puts(options.action_string); 0.00 : 413132: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 413136: e8 e5 05 ff ff callq 403720 0.00 : 41313b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 413140: e9 28 fe ff ff jmpq 412f6d : * If the query given to -c was a normal one, send it : */ : else if (options.action == ACT_SINGLE_QUERY) : { : if (pset.echo == PSQL_ECHO_ALL) : puts(options.action_string); 0.00 : 413145: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 413149: e8 d2 05 ff ff callq 403720 0.00 : 41314e: 66 90 xchg %ax,%ax 0.00 : 413150: e9 66 ff ff ff jmpq 4130bb : else : { : *equal_loc = '\0'; : if (!SetVariable(pset.vars, value, equal_loc + 1)) : { : fprintf(stderr, _("%s: could not set variable \"%s\"\n"), 0.00 : 413155: 48 8b 3d 5c 7b 25 00 mov 0x257b5c(%rip),%rdi # 66acb8 0.00 : 41315c: 48 8b 15 2d 80 25 00 mov 0x25802d(%rip),%rdx # 66b190 0.00 : 413163: 4c 89 e1 mov %r12,%rcx 0.00 : 413166: be 78 69 44 00 mov $0x446978,%esi 0.00 : 41316b: e8 70 0a ff ff callq 403be0 : pset.progname, value); : exit(EXIT_FAILURE); 0.00 : 413170: bf 01 00 00 00 mov $0x1,%edi 0.00 : 413175: e8 16 0e ff ff callq 403f90 : : if (options.action == ACT_LIST_DB) : { : int success; : : if (!options.no_psqlrc) 0.00 : 41317a: 80 7d b9 00 cmpb $0x0,-0x47(%rbp) 0.00 : 41317e: 75 09 jne 413189 : process_psqlrc(argv[0]); 0.00 : 413180: 49 8b 7d 00 mov 0x0(%r13),%rdi 0.00 : 413184: e8 67 f0 ff ff callq 4121f0 : : success = listAllDbs(NULL, false); 0.00 : 413189: 31 f6 xor %esi,%esi 0.00 : 41318b: 31 ff xor %edi,%edi 0.00 : 41318d: e8 0e 93 00 00 callq 41c4a0 : PQfinish(pset.db); 0.00 : 413192: 48 8b 3d 07 7f 25 00 mov 0x257f07(%rip),%rdi # 66b0a0 : int success; : : if (!options.no_psqlrc) : process_psqlrc(argv[0]); : : success = listAllDbs(NULL, false); 0.00 : 413199: 89 c3 mov %eax,%ebx : PQfinish(pset.db); 0.00 : 41319b: e8 40 0e ff ff callq 403fe0 : exit(success ? EXIT_SUCCESS : EXIT_FAILURE); 0.00 : 4131a0: 31 ff xor %edi,%edi 0.00 : 4131a2: 84 db test %bl,%bl 0.00 : 4131a4: 40 0f 94 c7 sete %dil 0.00 : 4131a8: e8 e3 0d ff ff callq 403f90 : free(password); : free(password_prompt); : : if (PQstatus(pset.db) == CONNECTION_BAD) : { : fprintf(stderr, "%s: %s", pset.progname, PQerrorMessage(pset.db)); 0.00 : 4131ad: 48 8b 3d ec 7e 25 00 mov 0x257eec(%rip),%rdi # 66b0a0 0.00 : 4131b4: e8 e7 0b ff ff callq 403da0 0.00 : 4131b9: 48 8b 15 d0 7f 25 00 mov 0x257fd0(%rip),%rdx # 66b190 0.00 : 4131c0: 48 8b 3d f1 7a 25 00 mov 0x257af1(%rip),%rdi # 66acb8 0.00 : 4131c7: 48 89 c1 mov %rax,%rcx 0.00 : 4131ca: be 3f 67 44 00 mov $0x44673f,%esi 0.00 : 4131cf: 31 c0 xor %eax,%eax 0.00 : 4131d1: e8 0a 0a ff ff callq 403be0 : PQfinish(pset.db); 0.00 : 4131d6: 48 8b 3d c3 7e 25 00 mov 0x257ec3(%rip),%rdi # 66b0a0 0.00 : 4131dd: e8 fe 0d ff ff callq 403fe0 : exit(EXIT_BADCONN); 0.00 : 4131e2: bf 02 00 00 00 mov $0x2,%edi 0.00 : 4131e7: e8 a4 0d ff ff callq 403f90 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000d0e0 : : */ : PGconn * : PQconnectdbParams(const char *const * keywords, : const char *const * values, : int expand_dbname) : { 0.00 : d0e0: 55 push %rbp ??:0 100.00 : d0e1: 48 89 e5 mov %rsp,%rbp 0.00 : d0e4: 53 push %rbx 0.00 : d0e5: 48 83 ec 08 sub $0x8,%rsp : PGconn *conn = PQconnectStartParams(keywords, values, expand_dbname); 0.00 : d0e9: e8 42 ad ff ff callq 7e30 : : if (conn && conn->status != CONNECTION_BAD) 0.00 : d0ee: 48 85 c0 test %rax,%rax : PGconn * : PQconnectdbParams(const char *const * keywords, : const char *const * values, : int expand_dbname) : { : PGconn *conn = PQconnectStartParams(keywords, values, expand_dbname); 0.00 : d0f1: 48 89 c3 mov %rax,%rbx : : if (conn && conn->status != CONNECTION_BAD) 0.00 : d0f4: 74 11 je d107 0.00 : d0f6: 83 b8 00 01 00 00 01 cmpl $0x1,0x100(%rax) 0.00 : d0fd: 74 08 je d107 : (void) connectDBComplete(conn); 0.00 : d0ff: 48 89 c7 mov %rax,%rdi 0.00 : d102: e8 69 f6 ff ff callq c770 : : return conn; : : } 0.00 : d107: 48 89 d8 mov %rbx,%rax 0.00 : d10a: 48 83 c4 08 add $0x8,%rsp 0.00 : d10e: 5b pop %rbx 0.00 : d10f: c9 leaveq Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000fdf0 : : /* : * pqSaveParameterStatus - remember parameter status sent by backend : */ : void : pqSaveParameterStatus(PGconn *conn, const char *name, const char *value) : { 0.00 : fdf0: 55 push %rbp 0.00 : fdf1: 48 89 e5 mov %rsp,%rbp 0.00 : fdf4: 41 57 push %r15 0.00 : fdf6: 49 89 ff mov %rdi,%r15 0.00 : fdf9: 41 56 push %r14 0.00 : fdfb: 49 89 d6 mov %rdx,%r14 0.00 : fdfe: 41 55 push %r13 0.00 : fe00: 49 89 f5 mov %rsi,%r13 0.00 : fe03: 41 54 push %r12 0.00 : fe05: 53 push %rbx 0.00 : fe06: 48 83 ec 18 sub $0x18,%rsp : pgParameterStatus *pstatus; : pgParameterStatus *prev; : : if (conn->Pfdebug) 0.00 : fe0a: 48 8b bf c8 00 00 00 mov 0xc8(%rdi),%rdi 0.00 : fe11: 48 85 ff test %rdi,%rdi 0.00 : fe14: 74 14 je fe2a : fprintf(conn->Pfdebug, "pqSaveParameterStatus: '%s' = '%s'\n", 0.00 : fe16: 48 89 d1 mov %rdx,%rcx 0.00 : fe19: 48 89 f2 mov %rsi,%rdx 0.00 : fe1c: 48 8d 35 ed f4 00 00 lea 0xf4ed(%rip),%rsi # 1f310 0.00 : fe23: 31 c0 xor %eax,%eax 0.00 : fe25: e8 26 80 ff ff callq 7e50 : name, value); : : /* : * Forget any old information about the parameter : */ : for (pstatus = conn->pstatus, prev = NULL; 0.00 : fe2a: 49 8b 9f 90 02 00 00 mov 0x290(%r15),%rbx : pstatus != NULL; 0.00 : fe31: 48 85 db test %rbx,%rbx 0.00 : fe34: 74 40 je fe76 0.00 : fe36: 45 31 e4 xor %r12d,%r12d 0.00 : fe39: eb 13 jmp fe4e 0.00 : fe3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : prev = pstatus, pstatus = pstatus->next) 0.00 : fe40: 48 8b 3b mov (%rbx),%rdi 0.00 : fe43: 49 89 dc mov %rbx,%r12 : : /* : * Forget any old information about the parameter : */ : for (pstatus = conn->pstatus, prev = NULL; : pstatus != NULL; 0.00 : fe46: 48 85 ff test %rdi,%rdi 0.00 : fe49: 74 2b je fe76 0.00 : fe4b: 48 89 fb mov %rdi,%rbx : prev = pstatus, pstatus = pstatus->next) : { : if (strcmp(pstatus->name, name) == 0) 0.00 : fe4e: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : fe52: 4c 89 ee mov %r13,%rsi 0.00 : fe55: e8 b6 7f ff ff callq 7e10 0.00 : fe5a: 85 c0 test %eax,%eax 0.00 : fe5c: 75 e2 jne fe40 : { : if (prev) 0.00 : fe5e: 4d 85 e4 test %r12,%r12 0.00 : fe61: 0f 84 70 01 00 00 je ffd7 : prev->next = pstatus->next; 0.00 : fe67: 48 8b 03 mov (%rbx),%rax 0.00 : fe6a: 49 89 04 24 mov %rax,(%r12) : else : conn->pstatus = pstatus->next; : free(pstatus); /* frees name and value strings too */ 0.00 : fe6e: 48 89 df mov %rbx,%rdi 0.00 : fe71: e8 fa 7b ff ff callq 7a70 : } : : /* : * Store new info as a single malloc block : */ : pstatus = (pgParameterStatus *) malloc(sizeof(pgParameterStatus) + 0.00 : fe76: 4c 89 ef mov %r13,%rdi 0.00 : fe79: e8 82 7d ff ff callq 7c00 0.00 : fe7e: 4c 89 f7 mov %r14,%rdi 0.00 : fe81: 48 89 c3 mov %rax,%rbx 0.00 : fe84: e8 77 7d ff ff callq 7c00 0.00 : fe89: 48 8d 7c 03 1a lea 0x1a(%rbx,%rax,1),%rdi 0.00 : fe8e: e8 ad 80 ff ff callq 7f40 : strlen(name) +strlen(value) + 2); : if (pstatus) 0.00 : fe93: 48 85 c0 test %rax,%rax : } : : /* : * Store new info as a single malloc block : */ : pstatus = (pgParameterStatus *) malloc(sizeof(pgParameterStatus) + 0.00 : fe96: 49 89 c4 mov %rax,%r12 : strlen(name) +strlen(value) + 2); : if (pstatus) 0.00 : fe99: 74 3f je feda : { : char *ptr; : : ptr = ((char *) pstatus) + sizeof(pgParameterStatus); 0.00 : fe9b: 48 8d 58 18 lea 0x18(%rax),%rbx : pstatus->name = ptr; : strcpy(ptr, name); 0.00 : fe9f: 4c 89 ee mov %r13,%rsi 0.00 : fea2: 48 89 df mov %rbx,%rdi : if (pstatus) : { : char *ptr; : : ptr = ((char *) pstatus) + sizeof(pgParameterStatus); : pstatus->name = ptr; 0.00 : fea5: 48 89 58 08 mov %rbx,0x8(%rax) : strcpy(ptr, name); 0.00 : fea9: e8 42 7c ff ff callq 7af0 : ptr += strlen(name) + 1; 0.00 : feae: 4c 89 ef mov %r13,%rdi 0.00 : feb1: e8 4a 7d ff ff callq 7c00 0.00 : feb6: 48 8d 7c 03 01 lea 0x1(%rbx,%rax,1),%rdi : pstatus->value = ptr; : strcpy(ptr, value); 0.00 : febb: 4c 89 f6 mov %r14,%rsi : : ptr = ((char *) pstatus) + sizeof(pgParameterStatus); : pstatus->name = ptr; : strcpy(ptr, name); : ptr += strlen(name) + 1; : pstatus->value = ptr; 0.00 : febe: 49 89 7c 24 10 mov %rdi,0x10(%r12) : strcpy(ptr, value); 0.00 : fec3: e8 28 7c ff ff callq 7af0 : pstatus->next = conn->pstatus; 0.00 : fec8: 49 8b 87 90 02 00 00 mov 0x290(%r15),%rax 0.00 : fecf: 49 89 04 24 mov %rax,(%r12) : conn->pstatus = pstatus; 0.00 : fed3: 4d 89 a7 90 02 00 00 mov %r12,0x290(%r15) : * standard_conforming_strings, and convert server version to a numeric : * form. We keep the first two of these in static variables as well, so : * that PQescapeString and PQescapeBytea can behave somewhat sanely (at : * least in single-connection-using programs). : */ : if (strcmp(name, "client_encoding") == 0) 0.00 : feda: 48 8d 3d 14 e0 00 00 lea 0xe014(%rip),%rdi # 1def5 <_real_fini+0x21d> 0.00 : fee1: b9 10 00 00 00 mov $0x10,%ecx 0.00 : fee6: 4c 89 ee mov %r13,%rsi 0.00 : fee9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : feeb: 0f 97 c2 seta %dl 0.00 : feee: 0f 92 c0 setb %al 0.00 : fef1: 89 d3 mov %edx,%ebx 0.00 : fef3: 28 c3 sub %al,%bl 0.00 : fef5: 0f be db movsbl %bl,%ebx 0.00 : fef8: 85 db test %ebx,%ebx 0.00 : fefa: 75 2c jne ff28 : { : conn->client_encoding = pg_char_to_encoding(value); 0.00 : fefc: 4c 89 f7 mov %r14,%rdi 0.00 : feff: e8 0c 7c ff ff callq 7b10 : /* if we don't recognize the encoding name, fall back to SQL_ASCII */ : if (conn->client_encoding < 0) : conn->client_encoding = PG_SQL_ASCII; 0.00 : ff04: 85 c0 test %eax,%eax 0.00 : ff06: 0f 48 c3 cmovs %ebx,%eax 0.00 : ff09: 41 89 87 98 02 00 00 mov %eax,0x298(%r15) : static_client_encoding = conn->client_encoding; 0.00 : ff10: 89 05 be 85 21 00 mov %eax,0x2185be(%rip) # 2284d4 : if (cnt == 2) : vrev = 0; : conn->sversion = (100 * vmaj + vmin) * 100 + vrev; : } : } : } 0.00 : ff16: 48 83 c4 18 add $0x18,%rsp 0.00 : ff1a: 5b pop %rbx 0.00 : ff1b: 41 5c pop %r12 0.00 : ff1d: 41 5d pop %r13 0.00 : ff1f: 41 5e pop %r14 0.00 : ff21: 41 5f pop %r15 0.00 : ff23: c9 leaveq 0.00 : ff24: c3 retq 0.00 : ff25: 0f 1f 00 nopl (%rax) : /* if we don't recognize the encoding name, fall back to SQL_ASCII */ : if (conn->client_encoding < 0) : conn->client_encoding = PG_SQL_ASCII; : static_client_encoding = conn->client_encoding; : } : else if (strcmp(name, "standard_conforming_strings") == 0) 0.00 : ff28: 48 8d 3d 57 f1 00 00 lea 0xf157(%rip),%rdi # 1f086 0.00 : ff2f: b9 1c 00 00 00 mov $0x1c,%ecx 0.00 : ff34: 4c 89 ee mov %r13,%rsi 0.00 : ff37: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : ff39: 75 3d jne ff78 : { : conn->std_strings = (strcmp(value, "on") == 0); 0.00 : ff3b: 41 0f b6 06 movzbl (%r14),%eax 0.00 : ff3f: 83 e8 6f sub $0x6f,%eax 0.00 : ff42: 75 0f jne ff53 0.00 : ff44: 41 0f b6 46 01 movzbl 0x1(%r14),%eax 0.00 : ff49: 83 e8 6e sub $0x6e,%eax 0.00 : ff4c: 75 05 jne ff53 0.00 : ff4e: 41 0f b6 46 02 movzbl 0x2(%r14),%eax 0.00 : ff53: 85 c0 test %eax,%eax 0.00 : ff55: 0f 94 c0 sete %al 0.00 : ff58: 41 88 87 9c 02 00 00 mov %al,0x29c(%r15) : static_std_strings = conn->std_strings; 0.00 : ff5f: 88 05 6b 85 21 00 mov %al,0x21856b(%rip) # 2284d0 : if (cnt == 2) : vrev = 0; : conn->sversion = (100 * vmaj + vmin) * 100 + vrev; : } : } : } 0.00 : ff65: 48 83 c4 18 add $0x18,%rsp 0.00 : ff69: 5b pop %rbx 0.00 : ff6a: 41 5c pop %r12 0.00 : ff6c: 41 5d pop %r13 0.00 : ff6e: 41 5e pop %r14 0.00 : ff70: 41 5f pop %r15 0.00 : ff72: c9 leaveq 0.00 : ff73: c3 retq 0.00 : ff74: 0f 1f 40 00 nopl 0x0(%rax) : else if (strcmp(name, "standard_conforming_strings") == 0) : { : conn->std_strings = (strcmp(value, "on") == 0); : static_std_strings = conn->std_strings; : } : else if (strcmp(name, "server_version") == 0) 0.00 : ff78: 48 8d 3d 23 f1 00 00 lea 0xf123(%rip),%rdi # 1f0a2 0.00 : ff7f: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : ff84: 4c 89 ee mov %r13,%rsi 0.00 : ff87: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : ff89: 75 8b jne ff16 : int cnt; : int vmaj, : vmin, : vrev; : : cnt = sscanf(value, "%d.%d.%d", &vmaj, &vmin, &vrev); 0.00 : ff8b: 48 8d 4d d0 lea -0x30(%rbp),%rcx 0.00 : ff8f: 48 8d 55 d4 lea -0x2c(%rbp),%rdx 0.00 : ff93: 4c 8d 45 cc lea -0x34(%rbp),%r8 0.00 : ff97: 48 8d 35 13 f1 00 00 lea 0xf113(%rip),%rsi # 1f0b1 0.00 : ff9e: 31 c0 xor %eax,%eax 0.00 : ffa0: 4c 89 f7 mov %r14,%rdi 0.00 : ffa3: e8 e8 7f ff ff callq 7f90 : : if (cnt < 2) 0.00 : ffa8: 83 f8 01 cmp $0x1,%eax 0.00 : ffab: 7e 39 jle ffe6 : conn->sversion = 0; /* unknown */ : else : { : if (cnt == 2) ??:0 100.00 : ffad: 83 f8 02 cmp $0x2,%eax 0.00 : ffb0: 74 44 je fff6 : vrev = 0; : conn->sversion = (100 * vmaj + vmin) * 100 + vrev; 0.00 : ffb2: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : ffb5: b9 64 00 00 00 mov $0x64,%ecx 0.00 : ffba: ba 64 00 00 00 mov $0x64,%edx 0.00 : ffbf: 0f af c1 imul %ecx,%eax 0.00 : ffc2: 03 45 d0 add -0x30(%rbp),%eax 0.00 : ffc5: 0f af c2 imul %edx,%eax 0.00 : ffc8: 03 45 cc add -0x34(%rbp),%eax 0.00 : ffcb: 41 89 87 54 02 00 00 mov %eax,0x254(%r15) 0.00 : ffd2: e9 3f ff ff ff jmpq ff16 : if (strcmp(pstatus->name, name) == 0) : { : if (prev) : prev->next = pstatus->next; : else : conn->pstatus = pstatus->next; 0.00 : ffd7: 48 8b 03 mov (%rbx),%rax 0.00 : ffda: 49 89 87 90 02 00 00 mov %rax,0x290(%r15) 0.00 : ffe1: e9 88 fe ff ff jmpq fe6e : vrev; : : cnt = sscanf(value, "%d.%d.%d", &vmaj, &vmin, &vrev); : : if (cnt < 2) : conn->sversion = 0; /* unknown */ 0.00 : ffe6: 41 c7 87 54 02 00 00 movl $0x0,0x254(%r15) 0.00 : ffed: 00 00 00 00 0.00 : fff1: e9 20 ff ff ff jmpq ff16 : else : { : if (cnt == 2) : vrev = 0; 0.00 : fff6: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%rbp) 0.00 : fffd: eb b3 jmp ffb2 Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000122a0 : : * pqPutnchar: : * write exactly len bytes to the current message : */ : int : pqPutnchar(const char *s, size_t len, PGconn *conn) : { 0.00 : 122a0: 55 push %rbp 0.00 : 122a1: 48 89 e5 mov %rsp,%rbp 0.00 : 122a4: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 122a8: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 122ac: 49 89 f5 mov %rsi,%r13 0.00 : 122af: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 122b3: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 122b7: 49 89 d6 mov %rdx,%r14 0.00 : 122ba: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 122be: 48 83 ec 30 sub $0x30,%rsp 0.00 : 122c2: 49 89 ff mov %rdi,%r15 : if (pqPutMsgBytes(s, len, conn)) 0.00 : 122c5: e8 66 fd ff ff callq 12030 0.00 : 122ca: 85 c0 test %eax,%eax 0.00 : 122cc: ba ff ff ff ff mov $0xffffffff,%edx 0.00 : 122d1: 75 61 jne 12334 : return EOF; : : if (conn->Pfdebug) 0.00 : 122d3: 49 8b 8e c8 00 00 00 mov 0xc8(%r14),%rcx ??:0 100.00 : 122da: 31 d2 xor %edx,%edx 0.00 : 122dc: 48 85 c9 test %rcx,%rcx 0.00 : 122df: 74 53 je 12334 : { : fprintf(conn->Pfdebug, "To backend> "); 0.00 : 122e1: 48 8d 3d 3b d3 00 00 lea 0xd33b(%rip),%rdi # 1f623 0.00 : 122e8: ba 0c 00 00 00 mov $0xc,%edx 0.00 : 122ed: be 01 00 00 00 mov $0x1,%esi 0.00 : 122f2: e8 69 5e ff ff callq 8160 : * is not valid in what libc thinks is the prevailing encoding. : */ : static void : fputnbytes(FILE *f, const char *str, size_t n) : { : while (n-- > 0) 0.00 : 122f7: 4d 85 ed test %r13,%r13 : return EOF; : : if (conn->Pfdebug) : { : fprintf(conn->Pfdebug, "To backend> "); : fputnbytes(conn->Pfdebug, s, len); 0.00 : 122fa: 4d 8b a6 c8 00 00 00 mov 0xc8(%r14),%r12 : * is not valid in what libc thinks is the prevailing encoding. : */ : static void : fputnbytes(FILE *f, const char *str, size_t n) : { : while (n-- > 0) 0.00 : 12301: 74 22 je 12325 0.00 : 12303: 31 db xor %ebx,%ebx 0.00 : 12305: 0f 1f 00 nopl (%rax) : fputc(*str++, f); 0.00 : 12308: 41 0f be 3c 1f movsbl (%r15,%rbx,1),%edi 0.00 : 1230d: 4c 89 e6 mov %r12,%rsi 0.00 : 12310: 48 83 c3 01 add $0x1,%rbx 0.00 : 12314: e8 47 5a ff ff callq 7d60 : * is not valid in what libc thinks is the prevailing encoding. : */ : static void : fputnbytes(FILE *f, const char *str, size_t n) : { : while (n-- > 0) 0.00 : 12319: 49 39 dd cmp %rbx,%r13 0.00 : 1231c: 75 ea jne 12308 0.00 : 1231e: 4d 8b a6 c8 00 00 00 mov 0xc8(%r14),%r12 : : if (conn->Pfdebug) : { : fprintf(conn->Pfdebug, "To backend> "); : fputnbytes(conn->Pfdebug, s, len); : fprintf(conn->Pfdebug, "\n"); 0.00 : 12325: 4c 89 e6 mov %r12,%rsi 0.00 : 12328: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 1232d: e8 2e 5a ff ff callq 7d60 0.00 : 12332: 31 d2 xor %edx,%edx : } : : return 0; : } 0.00 : 12334: 89 d0 mov %edx,%eax 0.00 : 12336: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 1233a: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 1233e: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 12342: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 12346: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 1234a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/lib/libpq.so.5.8 ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/lib/libpq.so.5.8 ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000016df0 : : * of bytes used. : */ : static int : build_startup_packet(const PGconn *conn, char *packet, : const PQEnvironmentOption *options) : { 0.00 : 16df0: 55 push %rbp 0.00 : 16df1: 48 89 e5 mov %rsp,%rbp 0.00 : 16df4: 41 57 push %r15 0.00 : 16df6: 49 89 d7 mov %rdx,%r15 0.00 : 16df9: 41 56 push %r14 0.00 : 16dfb: 49 89 f6 mov %rsi,%r14 0.00 : 16dfe: 41 55 push %r13 0.00 : 16e00: 41 54 push %r12 0.00 : 16e02: 53 push %rbx 0.00 : 16e03: 48 89 fb mov %rdi,%rbx 0.00 : 16e06: 48 83 ec 18 sub $0x18,%rsp : int packet_len = 0; : const PQEnvironmentOption *next_eo; : const char *val; : : /* Protocol version comes first. */ : if (packet) 0.00 : 16e0a: 48 85 f6 test %rsi,%rsi 0.00 : 16e0d: 74 0d je 16e1c : { : ProtocolVersion pv = htonl(conn->pversion); 0.00 : 16e0f: 8b 87 50 02 00 00 mov 0x250(%rdi),%eax 0.00 : 16e15: 0f c8 bswap %eax 0.00 : 16e17: 89 45 d4 mov %eax,-0x2c(%rbp) : : memcpy(packet + packet_len, &pv, sizeof(ProtocolVersion)); 0.00 : 16e1a: 89 06 mov %eax,(%rsi) : if (packet) \ : strcpy(packet + packet_len, optval); \ : packet_len += strlen(optval) + 1; \ : } while(0) : : if (conn->pguser && conn->pguser[0]) 0.00 : 16e1c: 48 8b 7b 60 mov 0x60(%rbx),%rdi 0.00 : 16e20: 48 85 ff test %rdi,%rdi 0.00 : 16e23: 0f 84 07 02 00 00 je 17030 0.00 : 16e29: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 16e2c: 0f 84 fe 01 00 00 je 17030 : ADD_STARTUP_OPTION("user", conn->pguser); 0.00 : 16e32: 4d 85 f6 test %r14,%r14 0.00 : 16e35: 74 1e je 16e55 0.00 : 16e37: 41 c7 46 04 75 73 65 movl $0x72657375,0x4(%r14) 0.00 : 16e3e: 72 0.00 : 16e3f: 41 c6 46 08 00 movb $0x0,0x8(%r14) 0.00 : 16e44: 49 8d 7e 09 lea 0x9(%r14),%rdi 0.00 : 16e48: 48 8b 73 60 mov 0x60(%rbx),%rsi 0.00 : 16e4c: e8 9f 0c ff ff callq 7af0 0.00 : 16e51: 48 8b 7b 60 mov 0x60(%rbx),%rdi 0.00 : 16e55: e8 a6 0d ff ff callq 7c00 : if (conn->dbName && conn->dbName[0]) 0.00 : 16e5a: 48 8b 7b 50 mov 0x50(%rbx),%rdi : strcpy(packet + packet_len, optval); \ : packet_len += strlen(optval) + 1; \ : } while(0) : : if (conn->pguser && conn->pguser[0]) : ADD_STARTUP_OPTION("user", conn->pguser); 0.00 : 16e5e: 44 8d 68 0a lea 0xa(%rax),%r13d : if (conn->dbName && conn->dbName[0]) 0.00 : 16e62: 48 85 ff test %rdi,%rdi 0.00 : 16e65: 0f 85 d8 01 00 00 jne 17043 0.00 : 16e6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : ADD_STARTUP_OPTION("database", conn->dbName); : if (conn->replication && conn->replication[0]) 0.00 : 16e70: 48 8b 7b 58 mov 0x58(%rbx),%rdi 0.00 : 16e74: 48 85 ff test %rdi,%rdi 0.00 : 16e77: 74 4b je 16ec4 0.00 : 16e79: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 16e7c: 74 46 je 16ec4 : ADD_STARTUP_OPTION("replication", conn->replication); 0.00 : 16e7e: 4d 85 f6 test %r14,%r14 0.00 : 16e81: 45 8d 65 0c lea 0xc(%r13),%r12d 0.00 : 16e85: 74 33 je 16eba 0.00 : 16e87: 49 63 c5 movslq %r13d,%rax 0.00 : 16e8a: 45 8d 65 0c lea 0xc(%r13),%r12d 0.00 : 16e8e: 49 b9 72 65 70 6c 69 movabs $0x746163696c706572,%r9 0.00 : 16e95: 63 61 74 0.00 : 16e98: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 16e9c: 49 63 fc movslq %r12d,%rdi 0.00 : 16e9f: 4c 89 08 mov %r9,(%rax) 0.00 : 16ea2: c7 40 08 69 6f 6e 00 movl $0x6e6f69,0x8(%rax) 0.00 : 16ea9: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 16ead: 48 8b 73 58 mov 0x58(%rbx),%rsi 0.00 : 16eb1: e8 3a 0c ff ff callq 7af0 0.00 : 16eb6: 48 8b 7b 58 mov 0x58(%rbx),%rdi 0.00 : 16eba: e8 41 0d ff ff callq 7c00 0.00 : 16ebf: 45 8d 6c 04 01 lea 0x1(%r12,%rax,1),%r13d : if (conn->pgoptions && conn->pgoptions[0]) ??:0 100.00 : 16ec4: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 16ec8: 48 85 ff test %rdi,%rdi 0.00 : 16ecb: 74 41 je 16f0e 0.00 : 16ecd: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 16ed0: 74 3c je 16f0e : ADD_STARTUP_OPTION("options", conn->pgoptions); 0.00 : 16ed2: 4d 85 f6 test %r14,%r14 0.00 : 16ed5: 45 8d 65 08 lea 0x8(%r13),%r12d 0.00 : 16ed9: 74 29 je 16f04 0.00 : 16edb: 45 8d 65 08 lea 0x8(%r13),%r12d 0.00 : 16edf: 49 63 c5 movslq %r13d,%rax 0.00 : 16ee2: 49 b8 6f 70 74 69 6f movabs $0x736e6f6974706f,%r8 0.00 : 16ee9: 6e 73 00 0.00 : 16eec: 4d 89 04 06 mov %r8,(%r14,%rax,1) 0.00 : 16ef0: 48 8b 73 38 mov 0x38(%rbx),%rsi 0.00 : 16ef4: 49 63 fc movslq %r12d,%rdi 0.00 : 16ef7: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 16efb: e8 f0 0b ff ff callq 7af0 0.00 : 16f00: 48 8b 7b 38 mov 0x38(%rbx),%rdi 0.00 : 16f04: e8 f7 0c ff ff callq 7c00 0.00 : 16f09: 45 8d 6c 04 01 lea 0x1(%r12,%rax,1),%r13d : if (conn->send_appname) 0.00 : 16f0e: 80 bb 80 02 00 00 00 cmpb $0x0,0x280(%rbx) 0.00 : 16f15: 74 65 je 16f7c : { : /* Use appname if present, otherwise use fallback */ : val = conn->appname ? conn->appname : conn->fbappname; 0.00 : 16f17: 4c 8b 63 40 mov 0x40(%rbx),%r12 0.00 : 16f1b: 4d 85 e4 test %r12,%r12 0.00 : 16f1e: 0f 84 ee 01 00 00 je 17112 : if (val && val[0]) 0.00 : 16f24: 41 80 3c 24 00 cmpb $0x0,(%r12) 0.00 : 16f29: 74 51 je 16f7c : ADD_STARTUP_OPTION("application_name", val); 0.00 : 16f2b: 4d 85 f6 test %r14,%r14 0.00 : 16f2e: 66 90 xchg %ax,%ax 0.00 : 16f30: 0f 84 f2 01 00 00 je 17128 0.00 : 16f36: 49 63 c5 movslq %r13d,%rax 0.00 : 16f39: 48 bf 61 70 70 6c 69 movabs $0x746163696c707061,%rdi 0.00 : 16f40: 63 61 74 0.00 : 16f43: 41 83 c5 11 add $0x11,%r13d 0.00 : 16f47: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 16f4b: 48 be 69 6f 6e 5f 6e movabs $0x656d616e5f6e6f69,%rsi 0.00 : 16f52: 61 6d 65 0.00 : 16f55: 48 89 38 mov %rdi,(%rax) 0.00 : 16f58: 49 63 fd movslq %r13d,%rdi 0.00 : 16f5b: 48 89 70 08 mov %rsi,0x8(%rax) 0.00 : 16f5f: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 16f63: c6 40 10 00 movb $0x0,0x10(%rax) 0.00 : 16f67: 4c 89 e6 mov %r12,%rsi 0.00 : 16f6a: e8 81 0b ff ff callq 7af0 0.00 : 16f6f: 4c 89 e7 mov %r12,%rdi 0.00 : 16f72: e8 89 0c ff ff callq 7c00 0.00 : 16f77: 45 8d 6c 05 01 lea 0x1(%r13,%rax,1),%r13d : } : : if (conn->client_encoding_initial && conn->client_encoding_initial[0]) 0.00 : 16f7c: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 16f80: 48 85 ff test %rdi,%rdi 0.00 : 16f83: 74 09 je 16f8e 0.00 : 16f85: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 16f88: 0f 85 32 01 00 00 jne 170c0 : ADD_STARTUP_OPTION("client_encoding", conn->client_encoding_initial); : : /* Add any environment-driven GUC settings needed */ : for (next_eo = options; next_eo->envName; next_eo++) 0.00 : 16f8e: 49 8b 3f mov (%r15),%rdi 0.00 : 16f91: 48 85 ff test %rdi,%rdi 0.00 : 16f94: 0f 84 fe 00 00 00 je 17098 0.00 : 16f9a: 4d 89 fc mov %r15,%r12 0.00 : 16f9d: 0f 1f 00 nopl (%rax) 0.00 : 16fa0: eb 53 jmp 16ff5 0.00 : 16fa2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if ((val = getenv(next_eo->envName)) != NULL) : { : if (pg_strcasecmp(val, "default") != 0) : ADD_STARTUP_OPTION(next_eo->pgName, val); 0.00 : 16fa8: 49 8b 74 24 08 mov 0x8(%r12),%rsi 0.00 : 16fad: 49 63 fd movslq %r13d,%rdi 0.00 : 16fb0: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 16fb4: e8 37 0b ff ff callq 7af0 0.00 : 16fb9: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 16fbe: e8 3d 0c ff ff callq 7c00 0.00 : 16fc3: 45 8d 6c 05 01 lea 0x1(%r13,%rax,1),%r13d 0.00 : 16fc8: 48 89 de mov %rbx,%rsi 0.00 : 16fcb: 49 63 fd movslq %r13d,%rdi 0.00 : 16fce: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 16fd2: e8 19 0b ff ff callq 7af0 0.00 : 16fd7: 48 89 df mov %rbx,%rdi 0.00 : 16fda: e8 21 0c ff ff callq 7c00 0.00 : 16fdf: 45 8d 6c 05 01 lea 0x1(%r13,%rax,1),%r13d : : if (conn->client_encoding_initial && conn->client_encoding_initial[0]) : ADD_STARTUP_OPTION("client_encoding", conn->client_encoding_initial); : : /* Add any environment-driven GUC settings needed */ : for (next_eo = options; next_eo->envName; next_eo++) 0.00 : 16fe4: 49 83 c4 10 add $0x10,%r12 0.00 : 16fe8: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 16fec: 48 85 ff test %rdi,%rdi 0.00 : 16fef: 0f 84 a3 00 00 00 je 17098 : { : if ((val = getenv(next_eo->envName)) != NULL) 0.00 : 16ff5: e8 56 0a ff ff callq 7a50 0.00 : 16ffa: 48 85 c0 test %rax,%rax 0.00 : 16ffd: 48 89 c3 mov %rax,%rbx 0.00 : 17000: 74 e2 je 16fe4 : { : if (pg_strcasecmp(val, "default") != 0) 0.00 : 17002: 48 8d 35 ce 90 00 00 lea 0x90ce(%rip),%rsi # 200d7 0.00 : 17009: 48 89 c7 mov %rax,%rdi 0.00 : 1700c: e8 1f 3e 00 00 callq 1ae30 0.00 : 17011: 85 c0 test %eax,%eax 0.00 : 17013: 74 cf je 16fe4 : ADD_STARTUP_OPTION(next_eo->pgName, val); 0.00 : 17015: 4d 85 f6 test %r14,%r14 0.00 : 17018: 75 8e jne 16fa8 0.00 : 1701a: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 1701f: 90 nop 0.00 : 17020: e8 db 0b ff ff callq 7c00 0.00 : 17025: 45 8d 6c 05 01 lea 0x1(%r13,%rax,1),%r13d 0.00 : 1702a: eb ab jmp 16fd7 0.00 : 1702c: 0f 1f 40 00 nopl 0x0(%rax) : packet_len += strlen(optval) + 1; \ : } while(0) : : if (conn->pguser && conn->pguser[0]) : ADD_STARTUP_OPTION("user", conn->pguser); : if (conn->dbName && conn->dbName[0]) 0.00 : 17030: 48 8b 7b 50 mov 0x50(%rbx),%rdi : strcpy(packet + packet_len, optval); \ : packet_len += strlen(optval) + 1; \ : } while(0) : : if (conn->pguser && conn->pguser[0]) : ADD_STARTUP_OPTION("user", conn->pguser); 0.00 : 17034: 41 bd 04 00 00 00 mov $0x4,%r13d : if (conn->dbName && conn->dbName[0]) 0.00 : 1703a: 48 85 ff test %rdi,%rdi 0.00 : 1703d: 0f 84 2d fe ff ff je 16e70 0.00 : 17043: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 17046: 0f 84 24 fe ff ff je 16e70 : ADD_STARTUP_OPTION("database", conn->dbName); 0.00 : 1704c: 4d 85 f6 test %r14,%r14 0.00 : 1704f: 45 8d 65 09 lea 0x9(%r13),%r12d 0.00 : 17053: 74 30 je 17085 0.00 : 17055: 49 63 c5 movslq %r13d,%rax 0.00 : 17058: 45 8d 65 09 lea 0x9(%r13),%r12d 0.00 : 1705c: 49 ba 64 61 74 61 62 movabs $0x6573616261746164,%r10 0.00 : 17063: 61 73 65 0.00 : 17066: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 1706a: 49 63 fc movslq %r12d,%rdi 0.00 : 1706d: 4c 89 10 mov %r10,(%rax) 0.00 : 17070: c6 40 08 00 movb $0x0,0x8(%rax) 0.00 : 17074: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 17078: 48 8b 73 50 mov 0x50(%rbx),%rsi 0.00 : 1707c: e8 6f 0a ff ff callq 7af0 0.00 : 17081: 48 8b 7b 50 mov 0x50(%rbx),%rdi 0.00 : 17085: e8 76 0b ff ff callq 7c00 0.00 : 1708a: 45 8d 6c 04 01 lea 0x1(%r12,%rax,1),%r13d 0.00 : 1708f: e9 dc fd ff ff jmpq 16e70 0.00 : 17094: 0f 1f 40 00 nopl 0x0(%rax) : ADD_STARTUP_OPTION(next_eo->pgName, val); : } : } : : /* Add trailing terminator */ : if (packet) 0.00 : 17098: 4d 85 f6 test %r14,%r14 0.00 : 1709b: 74 08 je 170a5 : packet[packet_len] = '\0'; 0.00 : 1709d: 49 63 c5 movslq %r13d,%rax 0.00 : 170a0: 41 c6 04 06 00 movb $0x0,(%r14,%rax,1) : packet_len++; : : return packet_len; : } 0.00 : 170a5: 48 83 c4 18 add $0x18,%rsp : } : } : : /* Add trailing terminator */ : if (packet) : packet[packet_len] = '\0'; 0.00 : 170a9: 41 8d 45 01 lea 0x1(%r13),%eax : packet_len++; : : return packet_len; : } 0.00 : 170ad: 5b pop %rbx 0.00 : 170ae: 41 5c pop %r12 0.00 : 170b0: 41 5d pop %r13 0.00 : 170b2: 41 5e pop %r14 0.00 : 170b4: 41 5f pop %r15 0.00 : 170b6: c9 leaveq 0.00 : 170b7: c3 retq 0.00 : 170b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 170bf: 00 : if (val && val[0]) : ADD_STARTUP_OPTION("application_name", val); : } : : if (conn->client_encoding_initial && conn->client_encoding_initial[0]) : ADD_STARTUP_OPTION("client_encoding", conn->client_encoding_initial); 0.00 : 170c0: 4d 85 f6 test %r14,%r14 0.00 : 170c3: 45 8d 65 10 lea 0x10(%r13),%r12d 0.00 : 170c7: 74 3a je 17103 0.00 : 170c9: 49 63 c5 movslq %r13d,%rax 0.00 : 170cc: 45 8d 65 10 lea 0x10(%r13),%r12d 0.00 : 170d0: 48 b9 63 6c 69 65 6e movabs $0x655f746e65696c63,%rcx 0.00 : 170d7: 74 5f 65 0.00 : 170da: 49 8d 04 06 lea (%r14,%rax,1),%rax 0.00 : 170de: 48 ba 6e 63 6f 64 69 movabs $0x676e69646f636e,%rdx 0.00 : 170e5: 6e 67 00 0.00 : 170e8: 49 63 fc movslq %r12d,%rdi 0.00 : 170eb: 48 89 08 mov %rcx,(%rax) 0.00 : 170ee: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 170f2: 49 8d 3c 3e lea (%r14,%rdi,1),%rdi 0.00 : 170f6: 48 8b 73 30 mov 0x30(%rbx),%rsi 0.00 : 170fa: e8 f1 09 ff ff callq 7af0 0.00 : 170ff: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 17103: e8 f8 0a ff ff callq 7c00 0.00 : 17108: 45 8d 6c 04 01 lea 0x1(%r12,%rax,1),%r13d 0.00 : 1710d: e9 7c fe ff ff jmpq 16f8e : if (conn->pgoptions && conn->pgoptions[0]) : ADD_STARTUP_OPTION("options", conn->pgoptions); : if (conn->send_appname) : { : /* Use appname if present, otherwise use fallback */ : val = conn->appname ? conn->appname : conn->fbappname; 0.00 : 17112: 4c 8b 63 48 mov 0x48(%rbx),%r12 : if (val && val[0]) 0.00 : 17116: 4d 85 e4 test %r12,%r12 0.00 : 17119: 0f 84 5d fe ff ff je 16f7c 0.00 : 1711f: 90 nop 0.00 : 17120: e9 ff fd ff ff jmpq 16f24 0.00 : 17125: 0f 1f 00 nopl (%rax) : ADD_STARTUP_OPTION("application_name", val); 0.00 : 17128: 41 83 c5 11 add $0x11,%r13d 0.00 : 1712c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 17130: e9 3a fe ff ff jmpq 16f6f Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000002ff90 <_nl_make_l10nflist>: 0.00 : 2ff90: 41 57 push %r15 0.00 : 2ff92: 41 56 push %r14 0.00 : 2ff94: 41 55 push %r13 0.00 : 2ff96: 41 54 push %r12 0.00 : 2ff98: 41 89 cc mov %ecx,%r12d 0.00 : 2ff9b: 55 push %rbp 0.00 : 2ff9c: 53 push %rbx 0.00 : 2ff9d: 48 83 ec 78 sub $0x78,%rsp 0.00 : 2ffa1: 48 89 7c 24 58 mov %rdi,0x58(%rsp) 0.00 : 2ffa6: 48 89 74 24 50 mov %rsi,0x50(%rsp) 0.00 : 2ffab: 4c 89 c7 mov %r8,%rdi 0.00 : 2ffae: 48 89 54 24 48 mov %rdx,0x48(%rsp) 0.00 : 2ffb3: 4c 89 44 24 40 mov %r8,0x40(%rsp) 0.00 : 2ffb8: 4c 89 4c 24 38 mov %r9,0x38(%rsp) 0.00 : 2ffbd: e8 ee 0b 05 00 callq 80bb0 <__GI_strlen> 0.00 : 2ffc2: 49 89 c7 mov %rax,%r15 0.00 : 2ffc5: 44 89 e0 mov %r12d,%eax 0.00 : 2ffc8: 83 e0 04 and $0x4,%eax 0.00 : 2ffcb: 89 44 24 64 mov %eax,0x64(%rsp) 0.00 : 2ffcf: 0f 85 ab 03 00 00 jne 30380 <_nl_make_l10nflist+0x3f0> 0.00 : 2ffd5: 45 31 f6 xor %r14d,%r14d 0.00 : 2ffd8: 44 89 e2 mov %r12d,%edx 0.00 : 2ffdb: 83 e2 02 and $0x2,%edx 0.00 : 2ffde: 89 54 24 68 mov %edx,0x68(%rsp) 0.00 : 2ffe2: 0f 85 78 03 00 00 jne 30360 <_nl_make_l10nflist+0x3d0> 0.00 : 2ffe8: 45 31 ed xor %r13d,%r13d 0.00 : 2ffeb: 44 89 e0 mov %r12d,%eax 0.00 : 2ffee: 83 e0 01 and $0x1,%eax 0.00 : 2fff1: 89 44 24 6c mov %eax,0x6c(%rsp) 0.00 : 2fff5: 0f 85 45 03 00 00 jne 30340 <_nl_make_l10nflist+0x3b0> 0.00 : 2fffb: 31 ed xor %ebp,%ebp 0.00 : 2fffd: 44 89 e2 mov %r12d,%edx 0.00 : 30000: 83 e2 08 and $0x8,%edx 0.00 : 30003: 89 54 24 70 mov %edx,0x70(%rsp) 0.00 : 30007: 0f 85 1b 03 00 00 jne 30328 <_nl_make_l10nflist+0x398> 0.00 : 3000d: 31 db xor %ebx,%ebx 0.00 : 3000f: 48 8b bc 24 c8 00 00 mov 0xc8(%rsp),%rdi 0.00 : 30016: 00 0.00 : 30017: e8 94 0b 05 00 callq 80bb0 <__GI_strlen> 0.00 : 3001c: 49 8d 7c 07 02 lea 0x2(%r15,%rax,1),%rdi 0.00 : 30021: 48 03 7c 24 48 add 0x48(%rsp),%rdi 0.00 : 30026: 4c 01 f7 add %r14,%rdi 0.00 : 30029: 45 31 f6 xor %r14d,%r14d 0.00 : 3002c: 4c 01 ef add %r13,%rdi 0.00 : 3002f: 48 01 ef add %rbp,%rdi 0.00 : 30032: 48 01 df add %rbx,%rdi 0.00 : 30035: e8 16 e8 fe ff callq 1e850 0.00 : 3003a: 48 85 c0 test %rax,%rax 0.00 : 3003d: 48 89 c3 mov %rax,%rbx 0.00 : 30040: 0f 84 0b 02 00 00 je 30251 <_nl_make_l10nflist+0x2c1> 0.00 : 30046: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 3004b: 48 8b 74 24 50 mov 0x50(%rsp),%rsi 0.00 : 30050: 48 89 c7 mov %rax,%rdi 0.00 : 30053: e8 f8 46 05 00 callq 84750 0.00 : 30058: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 3005d: ba 3a 00 00 00 mov $0x3a,%edx 0.00 : 30062: 48 89 df mov %rbx,%rdi 0.00 : 30065: e8 66 61 05 00 callq 861d0 <__argz_stringify> 0.00 : 3006a: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 3006f: 48 8d 7c 03 ff lea -0x1(%rbx,%rax,1),%rdi 0.00 : 30074: c6 07 2f movb $0x2f,(%rdi) 0.00 : 30077: 48 8b 74 24 40 mov 0x40(%rsp),%rsi 0.00 : 3007c: 48 83 c7 01 add $0x1,%rdi 0.00 : 30080: e8 1b 44 05 00 callq 844a0 <__GI___stpcpy> 0.00 : 30085: 8b 7c 24 64 mov 0x64(%rsp),%edi 0.00 : 30089: 85 ff test %edi,%edi 0.00 : 3008b: 0f 85 67 03 00 00 jne 303f8 <_nl_make_l10nflist+0x468> 0.00 : 30091: 8b 74 24 68 mov 0x68(%rsp),%esi 0.00 : 30095: 85 f6 test %esi,%esi 0.00 : 30097: 0f 85 3b 03 00 00 jne 303d8 <_nl_make_l10nflist+0x448> 0.00 : 3009d: 8b 4c 24 6c mov 0x6c(%rsp),%ecx 0.00 : 300a1: 85 c9 test %ecx,%ecx 0.00 : 300a3: 0f 85 0f 03 00 00 jne 303b8 <_nl_make_l10nflist+0x428> 0.00 : 300a9: 8b 54 24 70 mov 0x70(%rsp),%edx 0.00 : 300ad: 85 d2 test %edx,%edx 0.00 : 300af: 0f 85 e3 02 00 00 jne 30398 <_nl_make_l10nflist+0x408> 0.00 : 300b5: c6 00 2f movb $0x2f,(%rax) 0.00 : 300b8: 48 8b b4 24 c8 00 00 mov 0xc8(%rsp),%rsi 0.00 : 300bf: 00 0.00 : 300c0: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 300c4: 31 ed xor %ebp,%ebp 0.00 : 300c6: e8 15 05 05 00 callq 805e0 <__GI_strcpy> 0.00 : 300cb: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 300d0: 4c 8b 32 mov (%rdx),%r14 0.00 : 300d3: 4d 85 f6 test %r14,%r14 0.00 : 300d6: 0f 84 7a 03 00 00 je 30456 <_nl_make_l10nflist+0x4c6> 0.00 : 300dc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 300e0: 49 8b 3e mov (%r14),%rdi 0.00 : 300e3: 48 85 ff test %rdi,%rdi 0.00 : 300e6: 74 1a je 30102 <_nl_make_l10nflist+0x172> 0.00 : 300e8: 48 89 de mov %rbx,%rsi 0.00 : 300eb: e8 60 f0 04 00 callq 7f150 <__GI_strcmp> 0.00 : 300f0: 83 f8 00 cmp $0x0,%eax 0.00 : 300f3: 0f 84 1f 02 00 00 je 30318 <_nl_make_l10nflist+0x388> 0.00 : 300f9: 0f 8c 0f 03 00 00 jl 3040e <_nl_make_l10nflist+0x47e> 0.00 : 300ff: 4c 89 f5 mov %r14,%rbp 0.00 : 30102: 4d 8b 76 18 mov 0x18(%r14),%r14 0.00 : 30106: 4d 85 f6 test %r14,%r14 0.00 : 30109: 75 d5 jne 300e0 <_nl_make_l10nflist+0x150> 0.00 : 3010b: 8b 84 24 d0 00 00 00 mov 0xd0(%rsp),%eax 0.00 : 30112: 85 c0 test %eax,%eax 0.00 : 30114: 0f 84 fe 01 00 00 je 30318 <_nl_make_l10nflist+0x388> 0.00 : 3011a: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 3011f: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 30124: e8 27 5c 05 00 callq 85d50 <__argz_count> 0.00 : 30129: 44 89 e2 mov %r12d,%edx 0.00 : 3012c: 44 89 e1 mov %r12d,%ecx 0.00 : 3012f: bf 01 00 00 00 mov $0x1,%edi 0.00 : 30134: 81 e2 aa aa ff ff and $0xffffaaaa,%edx 0.00 : 3013a: 81 e1 55 55 00 00 and $0x5555,%ecx 0.00 : 30140: d1 fa sar %edx 0.00 : 30142: 01 ca add %ecx,%edx 0.00 : 30144: 89 d1 mov %edx,%ecx 0.00 : 30146: 81 e2 33 33 00 00 and $0x3333,%edx 0.00 : 3014c: 81 e1 cc cc ff ff and $0xffffcccc,%ecx 0.00 : 30152: c1 f9 02 sar $0x2,%ecx 0.00 : 30155: 01 d1 add %edx,%ecx 0.00 : 30157: 89 ca mov %ecx,%edx 0.00 : 30159: c1 fa 04 sar $0x4,%edx 0.00 : 3015c: 01 ca add %ecx,%edx 0.00 : 3015e: 81 e2 0f 0f 00 00 and $0xf0f,%edx 0.00 : 30164: 89 d1 mov %edx,%ecx 0.00 : 30166: c1 f9 08 sar $0x8,%ecx 0.00 : 30169: 01 d1 add %edx,%ecx 0.00 : 3016b: d3 e7 shl %cl,%edi 0.00 : 3016d: 48 63 ff movslq %edi,%rdi 0.00 : 30170: 48 0f af f8 imul %rax,%rdi 0.00 : 30174: 48 8d 3c fd 28 00 00 lea 0x28(,%rdi,8),%rdi 0.00 : 3017b: 00 0.00 : 3017c: e8 cf e6 fe ff callq 1e850 0.00 : 30181: 48 85 c0 test %rax,%rax 0.00 : 30184: 49 89 c6 mov %rax,%r14 0.00 : 30187: 48 89 44 24 30 mov %rax,0x30(%rsp) 0.00 : 3018c: 0f 84 86 01 00 00 je 30318 <_nl_make_l10nflist+0x388> 0.00 : 30192: 48 89 18 mov %rbx,(%rax) 0.00 : 30195: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 3019a: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 3019f: e8 ac 5b 05 00 callq 85d50 <__argz_count> 0.00 : 301a4: 48 83 e8 01 sub $0x1,%rax 0.00 : 301a8: ba 01 00 00 00 mov $0x1,%edx 0.00 : 301ad: 0f 84 72 02 00 00 je 30425 <_nl_make_l10nflist+0x495> 0.00 : 301b3: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 301b8: 48 85 ed test %rbp,%rbp 0.00 : 301bb: 89 50 08 mov %edx,0x8(%rax) 0.00 : 301be: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 301c5: 00 0.00 : 301c6: 0f 84 6c 02 00 00 je 30438 <_nl_make_l10nflist+0x4a8> 0.00 : 301cc: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 301d0: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 301d5: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 301d9: 48 89 55 18 mov %rdx,0x18(%rbp) 0.00 : 301dd: 48 8b 74 24 48 mov 0x48(%rsp),%rsi 0.00 : 301e2: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 301e7: 45 89 e5 mov %r12d,%r13d 0.00 : 301ea: e8 61 5b 05 00 callq 85d50 <__argz_count> 0.00 : 301ef: 41 8d 54 24 ff lea -0x1(%r12),%edx 0.00 : 301f4: 48 83 e8 01 sub $0x1,%rax 0.00 : 301f8: 41 f7 d4 not %r12d 0.00 : 301fb: 44 89 64 24 74 mov %r12d,0x74(%rsp) 0.00 : 30200: 44 0f 44 ea cmove %edx,%r13d 0.00 : 30204: 45 31 e4 xor %r12d,%r12d 0.00 : 30207: 45 85 ed test %r13d,%r13d 0.00 : 3020a: 78 37 js 30243 <_nl_make_l10nflist+0x2b3> 0.00 : 3020c: 4c 8b 7c 24 50 mov 0x50(%rsp),%r15 0.00 : 30211: 4c 03 7c 24 48 add 0x48(%rsp),%r15 0.00 : 30216: eb 0e jmp 30226 <_nl_make_l10nflist+0x296> 0.00 : 30218: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 3021f: 00 0.00 : 30220: 41 83 ed 01 sub $0x1,%r13d 0.00 : 30224: 78 1d js 30243 <_nl_make_l10nflist+0x2b3> 0.00 : 30226: 31 db xor %ebx,%ebx 0.00 : 30228: 44 85 6c 24 74 test %r13d,0x74(%rsp) 0.00 : 3022d: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 30232: 4a 8d 6c e0 20 lea 0x20(%rax,%r12,8),%rbp 0.00 : 30237: 0f 84 b8 00 00 00 je 302f5 <_nl_make_l10nflist+0x365> 0.00 : 3023d: 41 83 ed 01 sub $0x1,%r13d 0.00 : 30241: 79 e3 jns 30226 <_nl_make_l10nflist+0x296> 0.00 : 30243: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 30248: 4a c7 44 e2 20 00 00 movq $0x0,0x20(%rdx,%r12,8) 0.00 : 3024f: 00 00 0.00 : 30251: 48 83 c4 78 add $0x78,%rsp 0.00 : 30255: 4c 89 f0 mov %r14,%rax 0.00 : 30258: 5b pop %rbx 0.00 : 30259: 5d pop %rbp 0.00 : 3025a: 41 5c pop %r12 0.00 : 3025c: 41 5d pop %r13 0.00 : 3025e: 41 5e pop %r14 0.00 : 30260: 41 5f pop %r15 0.00 : 30262: c3 retq 0.00 : 30263: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 30268: 4c 39 fb cmp %r15,%rbx 0.00 : 3026b: 73 b3 jae 30220 <_nl_make_l10nflist+0x290> 0.00 : 3026d: 31 f6 xor %esi,%esi 0.00 : 3026f: 48 89 df mov %rbx,%rdi 0.00 : 30272: e8 39 59 05 00 callq 85bb0 <__GI___rawmemchr> 0.00 : 30277: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 3027b: 49 39 ff cmp %rdi,%r15 0.00 : 3027e: 76 a0 jbe 30220 <_nl_make_l10nflist+0x290> 0.00 : 30280: 48 89 fb mov %rdi,%rbx 0.00 : 30283: 48 85 db test %rbx,%rbx 0.00 : 30286: 74 98 je 30220 <_nl_make_l10nflist+0x290> 0.00 : 30288: 48 89 df mov %rbx,%rdi 0.00 : 3028b: 49 83 c4 01 add $0x1,%r12 0.00 : 3028f: e8 1c 09 05 00 callq 80bb0 <__GI_strlen> 0.00 : 30294: 48 8d 50 01 lea 0x1(%rax),%rdx 0.00 : 30298: 48 8b 84 24 c8 00 00 mov 0xc8(%rsp),%rax 0.00 : 3029f: 00 0.00 : 302a0: 4c 8b 4c 24 38 mov 0x38(%rsp),%r9 0.00 : 302a5: 4c 8b 44 24 40 mov 0x40(%rsp),%r8 0.00 : 302aa: 48 8b 7c 24 58 mov 0x58(%rsp),%rdi 0.00 : 302af: 44 89 e9 mov %r13d,%ecx 0.00 : 302b2: 48 89 de mov %rbx,%rsi 0.00 : 302b5: c7 44 24 20 01 00 00 movl $0x1,0x20(%rsp) 0.00 : 302bc: 00 0.00 : 302bd: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 302c2: 48 8b 84 24 c0 00 00 mov 0xc0(%rsp),%rax 0.00 : 302c9: 00 0.00 : 302ca: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 302cf: 48 8b 84 24 b8 00 00 mov 0xb8(%rsp),%rax 0.00 : 302d6: 00 0.00 : 302d7: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 302dc: 48 8b 84 24 b0 00 00 mov 0xb0(%rsp),%rax 0.00 : 302e3: 00 0.00 : 302e4: 48 89 04 24 mov %rax,(%rsp) 0.00 : 302e8: e8 a3 fc ff ff callq 2ff90 <_nl_make_l10nflist> 0.00 : 302ed: 48 89 45 00 mov %rax,0x0(%rbp) 0.00 : 302f1: 48 83 c5 08 add $0x8,%rbp 0.00 : 302f5: 48 85 db test %rbx,%rbx 0.00 : 302f8: 0f 85 6a ff ff ff jne 30268 <_nl_make_l10nflist+0x2d8> 0.00 : 302fe: 48 83 7c 24 48 00 cmpq $0x0,0x48(%rsp) 0.00 : 30304: 0f 84 16 ff ff ff je 30220 <_nl_make_l10nflist+0x290> 0.00 : 3030a: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : 3030f: e9 6f ff ff ff jmpq 30283 <_nl_make_l10nflist+0x2f3> 0.00 : 30314: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 30318: 48 89 df mov %rbx,%rdi 0.00 : 3031b: e8 80 e5 fe ff callq 1e8a0 0.00 : 30320: e9 2c ff ff ff jmpq 30251 <_nl_make_l10nflist+0x2c1> 0.00 : 30325: 0f 1f 00 nopl (%rax) 0.00 : 30328: 48 8b bc 24 c0 00 00 mov 0xc0(%rsp),%rdi 0.00 : 3032f: 00 0.00 : 30330: e8 7b 08 05 00 callq 80bb0 <__GI_strlen> 0.00 : 30335: 48 8d 58 01 lea 0x1(%rax),%rbx 0.00 : 30339: e9 d1 fc ff ff jmpq 3000f <_nl_make_l10nflist+0x7f> 0.00 : 3033e: 66 90 xchg %ax,%ax 0.00 : 30340: 48 8b bc 24 b8 00 00 mov 0xb8(%rsp),%rdi 0.00 : 30347: 00 0.00 : 30348: e8 63 08 05 00 callq 80bb0 <__GI_strlen> 0.00 : 3034d: 48 8d 68 01 lea 0x1(%rax),%rbp 0.00 : 30351: e9 a7 fc ff ff jmpq 2fffd <_nl_make_l10nflist+0x6d> 0.00 : 30356: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3035d: 00 00 00 0.00 : 30360: 48 8b bc 24 b0 00 00 mov 0xb0(%rsp),%rdi 0.00 : 30367: 00 0.00 : 30368: e8 43 08 05 00 callq 80bb0 <__GI_strlen> 0.00 : 3036d: 4c 8d 68 01 lea 0x1(%rax),%r13 0.00 : 30371: e9 75 fc ff ff jmpq 2ffeb <_nl_make_l10nflist+0x5b> 0.00 : 30376: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 3037d: 00 00 00 0.00 : 30380: 48 8b 7c 24 38 mov 0x38(%rsp),%rdi 0.00 : 30385: e8 26 08 05 00 callq 80bb0 <__GI_strlen> 0.00 : 3038a: 4c 8d 70 01 lea 0x1(%rax),%r14 0.00 : 3038e: e9 45 fc ff ff jmpq 2ffd8 <_nl_make_l10nflist+0x48> 0.00 : 30393: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 30398: c6 00 40 movb $0x40,(%rax) 0.00 : 3039b: 48 8b b4 24 c0 00 00 mov 0xc0(%rsp),%rsi 0.00 : 303a2: 00 0.00 : 303a3: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 303a7: e8 f4 40 05 00 callq 844a0 <__GI___stpcpy> 0.00 : 303ac: e9 04 fd ff ff jmpq 300b5 <_nl_make_l10nflist+0x125> 0.00 : 303b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 100.00 : 303b8: c6 00 2e movb $0x2e,(%rax) 0.00 : 303bb: 48 8b b4 24 b8 00 00 mov 0xb8(%rsp),%rsi 0.00 : 303c2: 00 0.00 : 303c3: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 303c7: e8 d4 40 05 00 callq 844a0 <__GI___stpcpy> 0.00 : 303cc: e9 d8 fc ff ff jmpq 300a9 <_nl_make_l10nflist+0x119> 0.00 : 303d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 303d8: c6 00 2e movb $0x2e,(%rax) 0.00 : 303db: 48 8b b4 24 b0 00 00 mov 0xb0(%rsp),%rsi 0.00 : 303e2: 00 0.00 : 303e3: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 303e7: e8 b4 40 05 00 callq 844a0 <__GI___stpcpy> 0.00 : 303ec: e9 ac fc ff ff jmpq 3009d <_nl_make_l10nflist+0x10d> 0.00 : 303f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 303f8: c6 00 5f movb $0x5f,(%rax) 0.00 : 303fb: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 30400: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 30404: e8 97 40 05 00 callq 844a0 <__GI___stpcpy> 0.00 : 30409: e9 83 fc ff ff jmpq 30091 <_nl_make_l10nflist+0x101> 0.00 : 3040e: 8b 84 24 d0 00 00 00 mov 0xd0(%rsp),%eax 0.00 : 30415: 45 31 f6 xor %r14d,%r14d 0.00 : 30418: 85 c0 test %eax,%eax 0.00 : 3041a: 0f 85 fa fc ff ff jne 3011a <_nl_make_l10nflist+0x18a> 0.00 : 30420: e9 f3 fe ff ff jmpq 30318 <_nl_make_l10nflist+0x388> 0.00 : 30425: 44 89 e0 mov %r12d,%eax 0.00 : 30428: 31 d2 xor %edx,%edx 0.00 : 3042a: 83 e0 03 and $0x3,%eax 0.00 : 3042d: 83 f8 03 cmp $0x3,%eax 0.00 : 30430: 0f 94 c2 sete %dl 0.00 : 30433: e9 7b fd ff ff jmpq 301b3 <_nl_make_l10nflist+0x223> 0.00 : 30438: 48 8b 54 24 58 mov 0x58(%rsp),%rdx 0.00 : 3043d: 48 8b 02 mov (%rdx),%rax 0.00 : 30440: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 30445: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 30449: 48 8b 44 24 58 mov 0x58(%rsp),%rax 0.00 : 3044e: 48 89 10 mov %rdx,(%rax) 0.00 : 30451: e9 87 fd ff ff jmpq 301dd <_nl_make_l10nflist+0x24d> 0.00 : 30456: 4c 89 f5 mov %r14,%rbp 0.00 : 30459: e9 ad fc ff ff jmpq 3010b <_nl_make_l10nflist+0x17b> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008baa0 : 0.00 : 8baa0: 41 57 push %r15 0.00 : 8baa2: 49 89 d7 mov %rdx,%r15 0.00 : 8baa5: 41 56 push %r14 0.00 : 8baa7: 49 89 ce mov %rcx,%r14 0.00 : 8baaa: 41 55 push %r13 0.00 : 8baac: 41 54 push %r12 0.00 : 8baae: 41 89 fc mov %edi,%r12d 0.00 : 8bab1: 55 push %rbp 0.00 : 8bab2: 53 push %rbx 0.00 : 8bab3: 89 f3 mov %esi,%ebx 0.00 : 8bab5: 48 83 ec 18 sub $0x18,%rsp 0.00 : 8bab9: 83 fe 00 cmp $0x0,%esi 0.00 : 8babc: 0f 8c 7e 00 00 00 jl 8bb40 0.00 : 8bac2: 74 7c je 8bb40 0.00 : 8bac4: 41 8d 8c 24 47 ff ff lea -0xb9(%r12),%ecx 0.00 : 8bacb: ff 0.00 : 8bacc: ba 56 55 55 55 mov $0x55555556,%edx 0.00 : 8bad1: 89 c8 mov %ecx,%eax 0.00 : 8bad3: c1 f9 1f sar $0x1f,%ecx 0.00 : 8bad6: f7 ea imul %edx 0.00 : 8bad8: 29 ca sub %ecx,%edx 0.00 : 8bada: 8d 2c 52 lea (%rdx,%rdx,2),%ebp 0.00 : 8badd: eb 4c jmp 8bb2b 0.00 : 8badf: 90 nop 0.00 : 8bae0: 83 f8 49 cmp $0x49,%eax 0.00 : 8bae3: 74 73 je 8bb58 0.00 : 8bae5: 4c 8d 05 c4 fd ff ff lea -0x23c(%rip),%r8 # 8b8b0 0.00 : 8baec: 48 8d 35 ad af 0a 00 lea 0xaafad(%rip),%rsi # 136aa0 0.00 : 8baf3: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 8baf8: ba 44 00 00 00 mov $0x44,%edx 0.00 : 8bafd: 48 89 e7 mov %rsp,%rdi 0.00 : 8bb00: 88 04 24 mov %al,(%rsp) ??:0 100.00 : 8bb03: e8 48 87 fa ff callq 34250 0.00 : 8bb08: 48 85 c0 test %rax,%rax 0.00 : 8bb0b: 48 89 c1 mov %rax,%rcx 0.00 : 8bb0e: 74 14 je 8bb24 0.00 : 8bb10: 0f b6 50 03 movzbl 0x3(%rax),%edx 0.00 : 8bb14: 0f b6 c2 movzbl %dl,%eax 0.00 : 8bb17: 39 e8 cmp %ebp,%eax 0.00 : 8bb19: 0f 84 81 00 00 00 je 8bba0 0.00 : 8bb1f: 80 fa 06 cmp $0x6,%dl 0.00 : 8bb22: 74 4c je 8bb70 0.00 : 8bb24: c1 eb 08 shr $0x8,%ebx 0.00 : 8bb27: 85 db test %ebx,%ebx 0.00 : 8bb29: 74 15 je 8bb40 0.00 : 8bb2b: 0f b6 c3 movzbl %bl,%eax 0.00 : 8bb2e: 83 f8 40 cmp $0x40,%eax 0.00 : 8bb31: 75 ad jne 8bae0 0.00 : 8bb33: 83 fd 09 cmp $0x9,%ebp 0.00 : 8bb36: 41 c6 06 01 movb $0x1,(%r14) 0.00 : 8bb3a: 75 e8 jne 8bb24 0.00 : 8bb3c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8bb40: 31 c0 xor %eax,%eax 0.00 : 8bb42: 48 83 c4 18 add $0x18,%rsp 0.00 : 8bb46: 5b pop %rbx 0.00 : 8bb47: 5d pop %rbp 0.00 : 8bb48: 41 5c pop %r12 0.00 : 8bb4a: 41 5d pop %r13 0.00 : 8bb4c: 41 5e pop %r14 0.00 : 8bb4e: 41 5f pop %r15 0.00 : 8bb50: c3 retq 0.00 : 8bb51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8bb58: 83 fd 09 cmp $0x9,%ebp 0.00 : 8bb5b: 75 88 jne 8bae5 0.00 : 8bb5d: 83 3d 14 b7 2e 00 0f cmpl $0xf,0x2eb714(%rip) # 377278 <__cpu_features+0x18> 0.00 : 8bb64: 74 1a je 8bb80 0.00 : 8bb66: bd 09 00 00 00 mov $0x9,%ebp 0.00 : 8bb6b: e9 75 ff ff ff jmpq 8bae5 0.00 : 8bb70: 41 c6 07 01 movb $0x1,(%r15) 0.00 : 8bb74: eb ae jmp 8bb24 0.00 : 8bb76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8bb7d: 00 00 00 0.00 : 8bb80: 83 3d f5 b6 2e 00 06 cmpl $0x6,0x2eb6f5(%rip) # 37727c <__cpu_features+0x1c> 0.00 : 8bb87: 75 dd jne 8bb66 0.00 : 8bb89: 41 83 ec 03 sub $0x3,%r12d 0.00 : 8bb8d: bd 06 00 00 00 mov $0x6,%ebp 0.00 : 8bb92: e9 4e ff ff ff jmpq 8bae5 0.00 : 8bb97: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8bb9e: 00 00 0.00 : 8bba0: 41 8d 84 24 47 ff ff lea -0xb9(%r12),%eax 0.00 : 8bba7: ff 0.00 : 8bba8: 29 e8 sub %ebp,%eax 0.00 : 8bbaa: 74 10 je 8bbbc 0.00 : 8bbac: 83 f8 01 cmp $0x1,%eax 0.00 : 8bbaf: 74 1d je 8bbce 0.00 : 8bbb1: 83 f8 02 cmp $0x2,%eax 0.00 : 8bbb4: 75 21 jne 8bbd7 0.00 : 8bbb6: 0f b6 41 02 movzbl 0x2(%rcx),%eax 0.00 : 8bbba: eb 86 jmp 8bb42 0.00 : 8bbbc: 8b 41 04 mov 0x4(%rcx),%eax 0.00 : 8bbbf: 48 83 c4 18 add $0x18,%rsp 0.00 : 8bbc3: 5b pop %rbx 0.00 : 8bbc4: 5d pop %rbp 0.00 : 8bbc5: 41 5c pop %r12 0.00 : 8bbc7: 41 5d pop %r13 0.00 : 8bbc9: 41 5e pop %r14 0.00 : 8bbcb: 41 5f pop %r15 0.00 : 8bbcd: c3 retq 0.00 : 8bbce: 0f b6 41 01 movzbl 0x1(%rcx),%eax 0.00 : 8bbd2: e9 6b ff ff ff jmpq 8bb42 0.00 : 8bbd7: 48 8d 0d 92 6e 0b 00 lea 0xb6e92(%rip),%rcx # 142a70 <__PRETTY_FUNCTION__.3630> 0.00 : 8bbde: 48 8d 35 03 47 0b 00 lea 0xb4703(%rip),%rsi # 1402e8 <__PRETTY_FUNCTION__.11129+0x290f> 0.00 : 8bbe5: 48 8d 3d c9 03 0b 00 lea 0xb03c9(%rip),%rdi # 13bfb5 <__PRETTY_FUNCTION__.9176+0x23> 0.00 : 8bbec: ba ec 00 00 00 mov $0xec,%edx 0.00 : 8bbf1: e8 2a fd f9 ff callq 2b920 <__assert_fail> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008bd40 : 0.00 : 8bd40: 48 89 5c 24 e0 mov %rbx,-0x20(%rsp) 0.00 : 8bd45: 48 89 6c 24 e8 mov %rbp,-0x18(%rsp) 0.00 : 8bd4a: 4c 89 64 24 f0 mov %r12,-0x10(%rsp) 0.00 : 8bd4f: 4c 89 6c 24 f8 mov %r13,-0x8(%rsp) 0.00 : 8bd54: 48 83 ec 28 sub $0x28,%rsp 0.00 : 8bd58: 8b 05 02 b5 2e 00 mov 0x2eb502(%rip),%eax # 377260 <__cpu_features> 0.00 : 8bd5e: 85 c0 test %eax,%eax 0.00 : 8bd60: 74 2e je 8bd90 0.00 : 8bd62: 83 f8 01 cmp $0x1,%eax 0.00 : 8bd65: 74 39 je 8bda0 0.00 : 8bd67: 83 f8 02 cmp $0x2,%eax 0.00 : 8bd6a: 0f 84 50 01 00 00 je 8bec0 0.00 : 8bd70: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx 0.00 : 8bd75: 48 8b 6c 24 10 mov 0x10(%rsp),%rbp 0.00 : 8bd7a: 4c 8b 64 24 18 mov 0x18(%rsp),%r12 0.00 : 8bd7f: 4c 8b 6c 24 20 mov 0x20(%rsp),%r13 0.00 : 8bd84: 48 83 c4 28 add $0x28,%rsp 0.00 : 8bd88: c3 retq 0.00 : 8bd89: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8bd90: e8 fb 31 f9 ff callq 1ef90 <__init_cpu_features> 0.00 : 8bd95: 8b 05 c5 b4 2e 00 mov 0x2eb4c5(%rip),%eax # 377260 <__cpu_features> 0.00 : 8bd9b: 83 f8 01 cmp $0x1,%eax 0.00 : 8bd9e: 75 c7 jne 8bd67 0.00 : 8bda0: 8b 35 be b4 2e 00 mov 0x2eb4be(%rip),%esi # 377264 <__cpu_features+0x4> 0.00 : 8bda6: bf bc 00 00 00 mov $0xbc,%edi 0.00 : 8bdab: e8 50 fe ff ff callq 8bc00 0.00 : 8bdb0: 8b 35 ae b4 2e 00 mov 0x2eb4ae(%rip),%esi # 377264 <__cpu_features+0x4> 0.00 : 8bdb6: bf c2 00 00 00 mov $0xc2,%edi 0.00 : 8bdbb: 48 89 c5 mov %rax,%rbp 0.00 : 8bdbe: e8 3d fe ff ff callq 8bc00 0.00 : 8bdc3: 48 85 c0 test %rax,%rax 0.00 : 8bdc6: 48 89 c7 mov %rax,%rdi 0.00 : 8bdc9: 41 b9 03 00 00 00 mov $0x3,%r9d 0.00 : 8bdcf: 0f 8e 2b 02 00 00 jle 8c000 0.00 : 8bdd5: 44 8b 1d 88 b4 2e 00 mov 0x2eb488(%rip),%r11d # 377264 <__cpu_features+0x4> 0.00 : 8bddc: 44 8b 05 89 b4 2e 00 mov 0x2eb489(%rip),%r8d # 37726c <__cpu_features+0xc> 0.00 : 8bde3: 41 83 fb 03 cmp $0x3,%r11d 0.00 : 8bde7: 0f 8e 73 01 00 00 jle 8bf60 0.00 : 8bded: 31 f6 xor %esi,%esi 0.00 : 8bdef: 41 ba 04 00 00 00 mov $0x4,%r10d 0.00 : 8bdf5: 0f 1f 00 nopl (%rax) 0.00 : 8bdf8: 89 f1 mov %esi,%ecx 0.00 : 8bdfa: 44 89 d0 mov %r10d,%eax 0.00 : 8bdfd: 83 c6 01 add $0x1,%esi 0.00 : 8be00: 0f a2 cpuid 0.00 : 8be02: a8 1f test $0x1f,%al 0.00 : 8be04: 41 89 c5 mov %eax,%r13d 0.00 : 8be07: 0f 84 53 01 00 00 je 8bf60 0.00 : 8be0d: c1 e8 05 shr $0x5,%eax 0.00 : 8be10: 83 e0 07 and $0x7,%eax 0.00 : 8be13: 44 39 c8 cmp %r9d,%eax 0.00 : 8be16: 75 e0 jne 8bdf8 0.00 : 8be18: 41 c1 ed 0e shr $0xe,%r13d 0.00 : 8be1c: 44 89 ee mov %r13d,%esi 0.00 : 8be1f: 81 e6 ff 03 00 00 and $0x3ff,%esi 0.00 : 8be25: 0f 85 85 01 00 00 jne 8bfb0 0.00 : 8be2b: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : 8be2e: 48 85 ff test %rdi,%rdi 0.00 : 8be31: 7e 16 jle 8be49 0.00 : 8be33: 85 c0 test %eax,%eax 0.00 : 8be35: 74 12 je 8be49 0.00 : 8be37: 48 89 fa mov %rdi,%rdx 0.00 : 8be3a: 89 c1 mov %eax,%ecx 0.00 : 8be3c: 48 89 f8 mov %rdi,%rax 0.00 : 8be3f: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 8be43: 48 f7 f9 idiv %rcx 0.00 : 8be46: 48 89 c7 mov %rax,%rdi 0.00 : 8be49: 48 85 ed test %rbp,%rbp 0.00 : 8be4c: 7e 2d jle 8be7b 0.00 : 8be4e: 48 89 e8 mov %rbp,%rax 0.00 : 8be51: 48 89 ea mov %rbp,%rdx 0.00 : 8be54: 48 89 2d cd 62 2e 00 mov %rbp,0x2e62cd(%rip) # 372128 <__x86_64_raw_data_cache_size> 0.00 : 8be5b: 48 d1 f8 sar %rax 0.00 : 8be5e: 30 d2 xor %dl,%dl 0.00 : 8be60: 48 89 05 b9 62 2e 00 mov %rax,0x2e62b9(%rip) # 372120 <__x86_64_raw_data_cache_size_half> 0.00 : 8be67: 48 89 d0 mov %rdx,%rax 0.00 : 8be6a: 48 89 15 a7 62 2e 00 mov %rdx,0x2e62a7(%rip) # 372118 <__x86_64_data_cache_size> 0.00 : 8be71: 48 d1 f8 sar %rax 0.00 : 8be74: 48 89 05 95 62 2e 00 mov %rax,0x2e6295(%rip) # 372110 <__x86_64_data_cache_size_half> 0.00 : 8be7b: 48 85 ff test %rdi,%rdi 0.00 : 8be7e: 0f 8e ec fe ff ff jle 8bd70 0.00 : 8be84: 48 89 f8 mov %rdi,%rax 0.00 : 8be87: 48 89 fa mov %rdi,%rdx 0.00 : 8be8a: 48 89 3d b7 62 2e 00 mov %rdi,0x2e62b7(%rip) # 372148 <__x86_64_raw_shared_cache_size> 0.00 : 8be91: 48 d1 f8 sar %rax 0.00 : 8be94: 30 d2 xor %dl,%dl 0.00 : 8be96: 48 89 05 a3 62 2e 00 mov %rax,0x2e62a3(%rip) # 372140 <__x86_64_raw_shared_cache_size_half> 0.00 : 8be9d: 48 89 d0 mov %rdx,%rax 0.00 : 8bea0: 48 89 15 91 62 2e 00 mov %rdx,0x2e6291(%rip) # 372138 <__x86_64_shared_cache_size> 0.00 : 8bea7: 48 d1 f8 sar %rax 0.00 : 8beaa: 48 89 05 7f 62 2e 00 mov %rax,0x2e627f(%rip) # 372130 <__x86_64_shared_cache_size_half> 0.00 : 8beb1: e9 ba fe ff ff jmpq 8bd70 0.00 : 8beb6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8bebd: 00 00 00 0.00 : 8bec0: bf bc 00 00 00 mov $0xbc,%edi 0.00 : 8bec5: e8 06 fa ff ff callq 8b8d0 0.00 : 8beca: bf bf 00 00 00 mov $0xbf,%edi 0.00 : 8becf: 48 89 c5 mov %rax,%rbp 0.00 : 8bed2: e8 f9 f9 ff ff callq 8b8d0 0.00 : 8bed7: bf c2 00 00 00 mov $0xc2,%edi 0.00 : 8bedc: 49 89 c4 mov %rax,%r12 0.00 : 8bedf: e8 ec f9 ff ff callq 8b8d0 0.00 : 8bee4: be 00 00 00 80 mov $0x80000000,%esi 0.00 : 8bee9: 49 89 c0 mov %rax,%r8 0.00 : 8beec: 4c 89 e7 mov %r12,%rdi 0.00 : 8beef: 89 f0 mov %esi,%eax 0.00 : 8bef1: 0f a2 cpuid 0.00 : 8bef3: 4d 85 c0 test %r8,%r8 0.00 : 8bef6: 89 c6 mov %eax,%esi 0.00 : 8bef8: 7e 2a jle 8bf24 0.00 : 8befa: 3d 07 00 00 80 cmp $0x80000007,%eax 0.00 : 8beff: 77 6f ja 8bf70 0.00 : 8bf01: be 01 00 00 00 mov $0x1,%esi 0.00 : 8bf06: 89 f0 mov %esi,%eax 0.00 : 8bf08: 0f a2 cpuid 0.00 : 8bf0a: 81 e2 00 00 00 10 and $0x10000000,%edx 0.00 : 8bf10: 89 c6 mov %eax,%esi 0.00 : 8bf12: 74 0c je 8bf20 0.00 : 8bf14: c1 eb 10 shr $0x10,%ebx 0.00 : 8bf17: 89 d8 mov %ebx,%eax 0.00 : 8bf19: 25 ff 00 00 00 and $0xff,%eax 0.00 : 8bf1e: 75 70 jne 8bf90 0.00 : 8bf20: 4b 8d 3c 20 lea (%r8,%r12,1),%rdi 0.00 : 8bf24: 81 fe 00 00 00 80 cmp $0x80000000,%esi 0.00 : 8bf2a: 0f 86 19 ff ff ff jbe 8be49 0.00 : 8bf30: b8 01 00 00 80 mov $0x80000001,%eax 0.00 : 8bf35: 0f a2 cpuid 0.00 : 8bf37: 80 e5 01 and $0x1,%ch 0.00 : 8bf3a: 75 0c jne 8bf48 0.00 : 8bf3c: 85 d2 test %edx,%edx 0.00 : 8bf3e: 0f 89 05 ff ff ff jns 8be49 0.00 : 8bf44: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8bf48: c7 05 be b4 2e 00 ff movl $0xffffffff,0x2eb4be(%rip) # 377410 <__x86_64_prefetchw> 0.00 : 8bf4f: ff ff ff 0.00 : 8bf52: e9 f2 fe ff ff jmpq 8be49 0.00 : 8bf57: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8bf5e: 00 00 0.00 : 8bf60: 41 c1 e8 10 shr $0x10,%r8d 0.00 : 8bf64: 41 0f b6 c0 movzbl %r8b,%eax 0.00 : 8bf68: e9 c1 fe ff ff jmpq 8be2e 0.00 : 8bf6d: 0f 1f 00 nopl (%rax) 0.00 : 8bf70: be 08 00 00 80 mov $0x80000008,%esi 0.00 : 8bf75: 89 f0 mov %esi,%eax 0.00 : 8bf77: 0f a2 cpuid 0.00 : 8bf79: c1 e9 0c shr $0xc,%ecx 0.00 : 8bf7c: 89 c6 mov %eax,%esi 0.00 : 8bf7e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 8bf83: 83 e1 0f and $0xf,%ecx 0.00 : 8bf86: d3 e0 shl %cl,%eax 0.00 : 8bf88: 85 c0 test %eax,%eax 0.00 : 8bf8a: 0f 84 71 ff ff ff je 8bf01 0.00 : 8bf90: 4c 89 c2 mov %r8,%rdx 0.00 : 8bf93: 89 c1 mov %eax,%ecx 0.00 : 8bf95: 4c 89 c0 mov %r8,%rax 0.00 : 8bf98: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 8bf9c: 48 f7 f9 idiv %rcx 0.00 : 8bf9f: 49 89 c0 mov %rax,%r8 0.00 : 8bfa2: e9 79 ff ff ff jmpq 8bf20 0.00 : 8bfa7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8bfae: 00 00 0.00 : 8bfb0: 41 83 fb 0a cmp $0xa,%r11d 0.00 : 8bfb4: 0f 8e 71 fe ff ff jle 8be2b 0.00 : 8bfba: 45 31 d2 xor %r10d,%r10d 0.00 : 8bfbd: 41 b8 0b 00 00 00 mov $0xb,%r8d 0.00 : 8bfc3: eb 10 jmp 8bfd5 0.00 : 8bfc5: 85 c9 test %ecx,%ecx 0.00 : 8bfc7: 0f 84 5e fe ff ff je 8be2b 0.00 : 8bfcd: 81 f9 00 02 00 00 cmp $0x200,%ecx 0.00 : 8bfd3: 74 4b je 8c020 0.00 : 8bfd5: 44 89 d1 mov %r10d,%ecx 0.00 : 8bfd8: 44 89 c0 mov %r8d,%eax 0.00 : 8bfdb: 41 83 c2 01 add $0x1,%r10d 0.00 : 8bfdf: 0f a2 cpuid ??:0 100.00 : 8bfe1: 89 d8 mov %ebx,%eax 0.00 : 8bfe3: 81 e1 f0 0f 00 00 and $0xff0,%ecx 0.00 : 8bfe9: 25 ff 00 00 00 and $0xff,%eax 0.00 : 8bfee: 0f 84 37 fe ff ff je 8be2b 0.00 : 8bff4: eb cf jmp 8bfc5 0.00 : 8bff6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 8bffd: 00 00 00 0.00 : 8c000: 8b 35 5e b2 2e 00 mov 0x2eb25e(%rip),%esi # 377264 <__cpu_features+0x4> 0.00 : 8c006: bf bf 00 00 00 mov $0xbf,%edi 0.00 : 8c00b: e8 f0 fb ff ff callq 8bc00 0.00 : 8c010: 41 b9 02 00 00 00 mov $0x2,%r9d 0.00 : 8c016: 48 89 c7 mov %rax,%rdi 0.00 : 8c019: e9 b7 fd ff ff jmpq 8bdd5 0.00 : 8c01e: 66 90 xchg %ax,%ax 0.00 : 8c020: 0f bd ce bsr %esi,%ecx 0.00 : 8c023: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 8c028: 83 c1 01 add $0x1,%ecx 0.00 : 8c02b: 83 e8 01 sub $0x1,%eax 0.00 : 8c02e: d3 e6 shl %cl,%esi 0.00 : 8c030: f7 d6 not %esi 0.00 : 8c032: 21 c6 and %eax,%esi 0.00 : 8c034: e9 f2 fd ff ff jmpq 8be2b Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 50.00 ??:0 50.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000008cd90 <__mbrtowc>: 0.00 : 8cd90: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp) 0.00 : 8cd95: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp) 0.00 : 8cd9a: 48 89 d5 mov %rdx,%rbp 0.00 : 8cd9d: 4c 89 74 24 f0 mov %r14,-0x10(%rsp) 0.00 : 8cda2: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp) 0.00 : 8cda7: 48 8d 05 ee 7b 2e 00 lea 0x2e7bee(%rip),%rax # 37499c 0.00 : 8cdae: 4c 89 64 24 e0 mov %r12,-0x20(%rsp) 0.00 : 8cdb3: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp) 0.00 : 8cdb8: 48 81 ec a8 00 00 00 sub $0xa8,%rsp 0.00 : 8cdbf: 48 8d 54 24 60 lea 0x60(%rsp),%rdx 0.00 : 8cdc4: 48 85 ff test %rdi,%rdi 0.00 : 8cdc7: 49 89 f5 mov %rsi,%r13 0.00 : 8cdca: c7 44 24 24 00 00 00 movl $0x0,0x24(%rsp) 0.00 : 8cdd1: 00 0.00 : 8cdd2: c7 44 24 28 01 00 00 movl $0x1,0x28(%rsp) 0.00 : 8cdd9: 00 0.00 : 8cdda: 48 0f 44 fa cmove %rdx,%rdi 0.00 : 8cdde: 48 85 c9 test %rcx,%rcx 0.00 : 8cde1: c7 44 24 20 01 00 00 movl $0x1,0x20(%rsp) 0.00 : 8cde8: 00 0.00 : 8cde9: 48 0f 44 c8 cmove %rax,%rcx 0.00 : 8cded: 48 85 f6 test %rsi,%rsi 0.00 : 8cdf0: 48 c7 44 24 40 00 00 movq $0x0,0x40(%rsp) 0.00 : 8cdf7: 00 00 0.00 : 8cdf9: 48 89 4c 24 30 mov %rcx,0x30(%rsp) 0.00 : 8cdfe: 49 89 fe mov %rdi,%r14 0.00 : 8ce01: 0f 84 59 01 00 00 je 8cf60 <__mbrtowc+0x1d0> 0.00 : 8ce07: 49 8d 46 04 lea 0x4(%r14),%rax 0.00 : 8ce0b: 64 4c 8b 3c 25 00 00 mov %fs:0x0,%r15 0.00 : 8ce12: 00 00 0.00 : 8ce14: 4c 89 74 24 10 mov %r14,0x10(%rsp) 0.00 : 8ce19: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 8ce1e: 48 8b 05 63 4f 2e 00 mov 0x2e4f63(%rip),%rax # 371d88 <_DYNAMIC+0x228> 0.00 : 8ce25: 49 8b 04 07 mov (%r15,%rax,1),%rax 0.00 : 8ce29: 48 8b 18 mov (%rax),%rbx 50.00 : 8ce2c: 4c 8b 63 28 mov 0x28(%rbx),%r12 0.00 : 8ce30: 4d 85 e4 test %r12,%r12 0.00 : 8ce33: 0f 84 3f 01 00 00 je 8cf78 <__mbrtowc+0x1e8> 0.00 : 8ce39: 4c 01 ed add %r13,%rbp 0.00 : 8ce3c: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 8ce43: 4c 89 6c 24 50 mov %r13,0x50(%rsp) 0.00 : 8ce48: 48 0f 42 e8 cmovb %rax,%rbp 0.00 : 8ce4c: 49 8b 04 24 mov (%r12),%rax 0.00 : 8ce50: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 8ce54: 48 8b 58 28 mov 0x28(%rax),%rbx 0.00 : 8ce58: 74 0d je 8ce67 <__mbrtowc+0xd7> 0.00 : 8ce5a: 48 c1 cb 11 ror $0x11,%rbx 0.00 : 8ce5e: 64 48 33 1c 25 30 00 xor %fs:0x30,%rbx 0.00 : 8ce65: 00 00 0.00 : 8ce67: 48 89 df mov %rbx,%rdi 0.00 : 8ce6a: e8 a1 5e 08 00 callq 112d10 <_dl_mcount_wrapper_check> 0.00 : 8ce6f: c7 44 24 08 01 00 00 movl $0x1,0x8(%rsp) 0.00 : 8ce76: 00 0.00 : 8ce77: c7 04 24 00 00 00 00 movl $0x0,(%rsp) 0.00 : 8ce7e: 45 31 c0 xor %r8d,%r8d 0.00 : 8ce81: 48 8d 54 24 50 lea 0x50(%rsp),%rdx 0.00 : 8ce86: 48 8d 74 24 10 lea 0x10(%rsp),%rsi 0.00 : 8ce8b: 4c 8d 4c 24 58 lea 0x58(%rsp),%r9 0.00 : 8ce90: 48 89 e9 mov %rbp,%rcx 0.00 : 8ce93: 49 8b 3c 24 mov (%r12),%rdi 0.00 : 8ce97: ff d3 callq *%rbx 0.00 : 8ce99: 85 c0 test %eax,%eax 0.00 : 8ce9b: 74 19 je 8ceb6 <__mbrtowc+0x126> 0.00 : 8ce9d: 83 f8 04 cmp $0x4,%eax 0.00 : 8cea0: 74 7e je 8cf20 <__mbrtowc+0x190> 0.00 : 8cea2: 83 f8 06 cmp $0x6,%eax 0.00 : 8cea5: 74 79 je 8cf20 <__mbrtowc+0x190> 50.00 : 8cea7: 83 f8 07 cmp $0x7,%eax 0.00 : 8ceaa: 74 74 je 8cf20 <__mbrtowc+0x190> 0.00 : 8ceac: 83 f8 05 cmp $0x5,%eax 0.00 : 8ceaf: 90 nop 0.00 : 8ceb0: 0f 85 ea 00 00 00 jne 8cfa0 <__mbrtowc+0x210> 0.00 : 8ceb6: 4c 39 74 24 10 cmp %r14,0x10(%rsp) 0.00 : 8cebb: 74 53 je 8cf10 <__mbrtowc+0x180> 0.00 : 8cebd: 41 8b 16 mov (%r14),%edx 0.00 : 8cec0: 85 d2 test %edx,%edx 0.00 : 8cec2: 75 4c jne 8cf10 <__mbrtowc+0x180> 0.00 : 8cec4: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 8cec9: 31 d2 xor %edx,%edx 0.00 : 8cecb: 8b 00 mov (%rax),%eax 0.00 : 8cecd: 85 c0 test %eax,%eax 0.00 : 8cecf: 0f 85 ea 00 00 00 jne 8cfbf <__mbrtowc+0x22f> 0.00 : 8ced5: 48 89 d0 mov %rdx,%rax 0.00 : 8ced8: 48 8b 5c 24 78 mov 0x78(%rsp),%rbx 0.00 : 8cedd: 48 8b ac 24 80 00 00 mov 0x80(%rsp),%rbp 0.00 : 8cee4: 00 0.00 : 8cee5: 4c 8b a4 24 88 00 00 mov 0x88(%rsp),%r12 0.00 : 8ceec: 00 0.00 : 8ceed: 4c 8b ac 24 90 00 00 mov 0x90(%rsp),%r13 0.00 : 8cef4: 00 0.00 : 8cef5: 4c 8b b4 24 98 00 00 mov 0x98(%rsp),%r14 0.00 : 8cefc: 00 0.00 : 8cefd: 4c 8b bc 24 a0 00 00 mov 0xa0(%rsp),%r15 0.00 : 8cf04: 00 0.00 : 8cf05: 48 81 c4 a8 00 00 00 add $0xa8,%rsp 0.00 : 8cf0c: c3 retq 0.00 : 8cf0d: 0f 1f 00 nopl (%rax) 0.00 : 8cf10: 48 8b 54 24 50 mov 0x50(%rsp),%rdx 0.00 : 8cf15: 4c 29 ea sub %r13,%rdx 0.00 : 8cf18: eb bb jmp 8ced5 <__mbrtowc+0x145> 0.00 : 8cf1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 8cf20: 85 c0 test %eax,%eax 0.00 : 8cf22: 74 92 je 8ceb6 <__mbrtowc+0x126> 0.00 : 8cf24: 83 f8 04 cmp $0x4,%eax 0.00 : 8cf27: 74 8d je 8ceb6 <__mbrtowc+0x126> 0.00 : 8cf29: 83 f8 05 cmp $0x5,%eax 0.00 : 8cf2c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8cf30: 74 84 je 8ceb6 <__mbrtowc+0x126> 0.00 : 8cf32: 83 f8 07 cmp $0x7,%eax 0.00 : 8cf35: 48 c7 c2 fe ff ff ff mov $0xfffffffffffffffe,%rdx 0.00 : 8cf3c: 74 97 je 8ced5 <__mbrtowc+0x145> 0.00 : 8cf3e: 48 8b 05 f3 4e 2e 00 mov 0x2e4ef3(%rip),%rax # 371e38 <_DYNAMIC+0x2d8> 0.00 : 8cf45: 48 c7 c2 ff ff ff ff mov $0xffffffffffffffff,%rdx 0.00 : 8cf4c: 41 c7 04 07 54 00 00 movl $0x54,(%r15,%rax,1) 0.00 : 8cf53: 00 0.00 : 8cf54: e9 7c ff ff ff jmpq 8ced5 <__mbrtowc+0x145> 0.00 : 8cf59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 8cf60: 49 89 d6 mov %rdx,%r14 0.00 : 8cf63: 4c 8d 2d d6 da 0a 00 lea 0xadad6(%rip),%r13 # 13aa40 0.00 : 8cf6a: bd 01 00 00 00 mov $0x1,%ebp 0.00 : 8cf6f: e9 93 fe ff ff jmpq 8ce07 <__mbrtowc+0x77> 0.00 : 8cf74: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 8cf78: 48 8d 05 c1 2d 2e 00 lea 0x2e2dc1(%rip),%rax # 36fd40 <_nl_C_LC_CTYPE> 0.00 : 8cf7f: 4c 8d 25 7a 24 2e 00 lea 0x2e247a(%rip),%r12 # 36f400 <__wcsmbs_gconv_fcts_c> 0.00 : 8cf86: 48 39 c3 cmp %rax,%rbx 0.00 : 8cf89: 0f 84 aa fe ff ff je 8ce39 <__mbrtowc+0xa9> 0.00 : 8cf8f: 48 89 df mov %rbx,%rdi 0.00 : 8cf92: e8 59 a3 00 00 callq 972f0 <__wcsmbs_load_conv> 0.00 : 8cf97: 4c 8b 63 28 mov 0x28(%rbx),%r12 0.00 : 8cf9b: e9 99 fe ff ff jmpq 8ce39 <__mbrtowc+0xa9> 0.00 : 8cfa0: 48 8d 0d 48 f0 0a 00 lea 0xaf048(%rip),%rcx # 13bfef <__PRETTY_FUNCTION__.11266> 0.00 : 8cfa7: 48 8d 35 37 f0 0a 00 lea 0xaf037(%rip),%rsi # 13bfe5 <__PRETTY_FUNCTION__.3721+0xb> 0.00 : 8cfae: 48 8d 3d 63 33 0b 00 lea 0xb3363(%rip),%rdi # 140318 <__PRETTY_FUNCTION__.11129+0x293f> 0.00 : 8cfb5: ba 5c 00 00 00 mov $0x5c,%edx 0.00 : 8cfba: e8 61 e9 f9 ff callq 2b920 <__assert_fail> 0.00 : 8cfbf: 48 8d 0d 29 f0 0a 00 lea 0xaf029(%rip),%rcx # 13bfef <__PRETTY_FUNCTION__.11266> 0.00 : 8cfc6: 48 8d 35 18 f0 0a 00 lea 0xaf018(%rip),%rsi # 13bfe5 <__PRETTY_FUNCTION__.3721+0xb> 0.00 : 8cfcd: 48 8d 3d e4 33 0b 00 lea 0xb33e4(%rip),%rdi # 1403b8 <__PRETTY_FUNCTION__.11129+0x29df> 0.00 : 8cfd4: ba 65 00 00 00 mov $0x65,%edx 0.00 : 8cfd9: e8 42 e9 f9 ff callq 2b920 <__assert_fail> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000a86a0 <__fork>: 0.00 : a86a0: 55 push %rbp 0.00 : a86a1: 48 89 e5 mov %rsp,%rbp 0.00 : a86a4: 41 56 push %r14 0.00 : a86a6: 41 55 push %r13 0.00 : a86a8: 41 54 push %r12 0.00 : a86aa: 53 push %rbx 0.00 : a86ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : a86b0: 48 8b 1d b9 ed 2c 00 mov 0x2cedb9(%rip),%rbx # 377470 <__fork_handlers> 0.00 : a86b7: 48 85 db test %rbx,%rbx 0.00 : a86ba: 74 5c je a8718 <__fork+0x78> 0.00 : a86bc: 8b 4b 28 mov 0x28(%rbx),%ecx 0.00 : a86bf: 85 c9 test %ecx,%ecx 0.00 : a86c1: 74 ed je a86b0 <__fork+0x10> 0.00 : a86c3: 48 8b 35 a6 ed 2c 00 mov 0x2ceda6(%rip),%rsi # 377470 <__fork_handlers> 0.00 : a86ca: 8d 51 01 lea 0x1(%rcx),%edx 0.00 : a86cd: 89 c8 mov %ecx,%eax 0.00 : a86cf: f0 0f b1 56 28 lock cmpxchg %edx,0x28(%rsi) 0.00 : a86d4: 75 da jne a86b0 <__fork+0x10> 0.00 : a86d6: 45 31 e4 xor %r12d,%r12d 0.00 : a86d9: eb 0c jmp a86e7 <__fork+0x47> 0.00 : a86db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : a86e0: f0 ff 43 28 lock incl 0x28(%rbx) 0.00 : a86e4: 49 89 c4 mov %rax,%r12 0.00 : a86e7: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : a86eb: 48 85 c0 test %rax,%rax 0.00 : a86ee: 74 02 je a86f2 <__fork+0x52> 0.00 : a86f0: ff d0 callq *%rax 0.00 : a86f2: 48 83 ec 20 sub $0x20,%rsp 0.00 : a86f6: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : a86fb: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : a86ff: 48 89 18 mov %rbx,(%rax) 0.00 : a8702: 4c 89 60 08 mov %r12,0x8(%rax) 0.00 : a8706: 48 8b 1b mov (%rbx),%rbx 0.00 : a8709: 48 85 db test %rbx,%rbx 0.00 : a870c: 75 d2 jne a86e0 <__fork+0x40> 0.00 : a870e: 49 89 c4 mov %rax,%r12 0.00 : a8711: eb 08 jmp a871b <__fork+0x7b> 0.00 : a8713: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : a8718: 45 31 e4 xor %r12d,%r12d 0.00 : a871b: e8 f0 c4 fc ff callq 74c10 <_IO_list_lock> 0.00 : a8720: 64 44 8b 0c 25 d0 02 mov %fs:0x2d0,%r9d 0.00 : a8727: 00 00 0.00 : a8729: 64 44 8b 04 25 d4 02 mov %fs:0x2d4,%r8d 0.00 : a8730: 00 00 0.00 : a8732: 44 89 c0 mov %r8d,%eax 0.00 : a8735: f7 d8 neg %eax 0.00 : a8737: 64 89 04 25 d4 02 00 mov %eax,%fs:0x2d4 0.00 : a873e: 00 0.00 : a873f: 64 48 8b 1c 25 10 00 mov %fs:0x10,%rbx 0.00 : a8746: 00 00 0.00 : a8748: 31 d2 xor %edx,%edx 0.00 : a874a: 4c 8d 93 d0 02 00 00 lea 0x2d0(%rbx),%r10 0.00 : a8751: 31 f6 xor %esi,%esi 0.00 : a8753: bf 11 00 20 01 mov $0x1200011,%edi 0.00 : a8758: b8 38 00 00 00 mov $0x38,%eax 0.00 : a875d: 0f 05 syscall 0.00 : a875f: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 0.00 : a8765: 0f 87 43 01 00 00 ja a88ae <__fork+0x20e> 0.00 : a876b: 85 c0 test %eax,%eax 0.00 : a876d: 41 89 c6 mov %eax,%r14d 0.00 : a8770: 0f 85 5a 01 00 00 jne a88d0 <__fork+0x230> 0.00 : a8776: 64 8b 04 25 d0 02 00 mov %fs:0x2d0,%eax 0.00 : a877d: 00 0.00 : a877e: 41 39 c1 cmp %eax,%r9d 0.00 : a8781: 0f 84 ea 01 00 00 je a8971 <__fork+0x2d1> 0.00 : a8787: 48 8b 05 da ec 2c 00 mov 0x2cecda(%rip),%rax # 377468 <__fork_generation_pointer> ??:0 100.00 : a878e: 48 85 c0 test %rax,%rax 0.00 : a8791: 74 04 je a8797 <__fork+0xf7> 0.00 : a8793: 48 83 00 04 addq $0x4,(%rax) 0.00 : a8797: 64 8b 04 25 d0 02 00 mov %fs:0x2d0,%eax 0.00 : a879e: 00 0.00 : a879f: 64 89 04 25 d4 02 00 mov %eax,%fs:0x2d4 0.00 : a87a6: 00 0.00 : a87a7: 0f 31 rdtsc 0.00 : a87a9: 48 c1 e2 20 shl $0x20,%rdx 0.00 : a87ad: 89 c0 mov %eax,%eax 0.00 : a87af: 48 09 c2 or %rax,%rdx 0.00 : a87b2: 64 48 89 14 25 20 06 mov %rdx,%fs:0x620 0.00 : a87b9: 00 00 0.00 : a87bb: 8b 0d ef ee 2c 00 mov 0x2ceeef(%rip),%ecx # 3776b0 <__libc_pthread_functions_init> 0.00 : a87c1: 4c 8b 2d f0 95 2c 00 mov 0x2c95f0(%rip),%r13 # 371db8 <_DYNAMIC+0x258> 0.00 : a87c8: 85 c9 test %ecx,%ecx 0.00 : a87ca: 49 89 95 40 09 00 00 mov %rdx,0x940(%r13) 0.00 : a87d1: 0f 85 b9 01 00 00 jne a8990 <__fork+0x2f0> 0.00 : a87d7: e8 f4 c3 fc ff callq 74bd0 <_IO_iter_begin> 0.00 : a87dc: 48 89 c3 mov %rax,%rbx 0.00 : a87df: eb 36 jmp a8817 <__fork+0x177> 0.00 : a87e1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : a87e8: 48 89 df mov %rbx,%rdi 0.00 : a87eb: e8 10 c4 fc ff callq 74c00 <_IO_iter_file> 0.00 : a87f0: 48 8b 80 88 00 00 00 mov 0x88(%rax),%rax 0.00 : a87f7: 48 89 df mov %rbx,%rdi 0.00 : a87fa: c7 00 00 00 00 00 movl $0x0,(%rax) 0.00 : a8800: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) 0.00 : a8807: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : a880e: 00 0.00 : a880f: e8 dc c3 fc ff callq 74bf0 <_IO_iter_next> 0.00 : a8814: 48 89 c3 mov %rax,%rbx 0.00 : a8817: e8 c4 c3 fc ff callq 74be0 <_IO_iter_end> 0.00 : a881c: 48 39 c3 cmp %rax,%rbx 0.00 : a881f: 75 c7 jne a87e8 <__fork+0x148> 0.00 : a8821: e8 8a c4 fc ff callq 74cb0 <_IO_list_resetlock> 0.00 : a8826: 4d 85 e4 test %r12,%r12 0.00 : a8829: 49 c7 85 18 09 00 00 movq $0x0,0x918(%r13) 0.00 : a8830: 00 00 00 00 0.00 : a8834: 49 c7 85 08 09 00 00 movq $0x0,0x908(%r13) 0.00 : a883b: 00 00 00 00 0.00 : a883f: 49 c7 85 10 09 00 00 movq $0x0,0x910(%r13) 0.00 : a8846: 00 00 00 00 0.00 : a884a: 49 c7 85 20 09 00 00 movq $0x0,0x920(%r13) 0.00 : a8851: 00 00 00 00 0.00 : a8855: 49 c7 85 28 09 00 00 movq $0x0,0x928(%r13) 0.00 : a885c: 00 00 00 00 0.00 : a8860: 41 c7 85 18 09 00 00 movl $0x1,0x918(%r13) 0.00 : a8867: 01 00 00 00 0.00 : a886b: 74 27 je a8894 <__fork+0x1f4> 0.00 : a886d: 0f 1f 00 nopl (%rax) 0.00 : a8870: 49 8b 04 24 mov (%r12),%rax 0.00 : a8874: 48 8b 50 18 mov 0x18(%rax),%rdx 0.00 : a8878: 48 85 d2 test %rdx,%rdx 0.00 : a887b: 74 06 je a8883 <__fork+0x1e3> 0.00 : a887d: ff d2 callq *%rdx 0.00 : a887f: 49 8b 04 24 mov (%r12),%rax 0.00 : a8883: c7 40 28 01 00 00 00 movl $0x1,0x28(%rax) 0.00 : a888a: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : a888f: 4d 85 e4 test %r12,%r12 0.00 : a8892: 75 dc jne a8870 <__fork+0x1d0> 0.00 : a8894: c7 05 22 cf 2c 00 00 movl $0x0,0x2ccf22(%rip) # 3757c0 <__fork_lock> 0.00 : a889b: 00 00 00 0.00 : a889e: 48 8d 65 e0 lea -0x20(%rbp),%rsp 0.00 : a88a2: 44 89 f0 mov %r14d,%eax 0.00 : a88a5: 5b pop %rbx 0.00 : a88a6: 41 5c pop %r12 0.00 : a88a8: 41 5d pop %r13 0.00 : a88aa: 41 5e pop %r14 0.00 : a88ac: c9 leaveq 0.00 : a88ad: c3 retq 0.00 : a88ae: 89 c1 mov %eax,%ecx 0.00 : a88b0: 48 8b 15 81 95 2c 00 mov 0x2c9581(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : a88b7: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : a88be: 00 00 0.00 : a88c0: f7 d9 neg %ecx 0.00 : a88c2: 41 be ff ff ff ff mov $0xffffffff,%r14d 0.00 : a88c8: 89 0c 10 mov %ecx,(%rax,%rdx,1) 0.00 : a88cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : a88d0: 64 8b 04 25 d0 02 00 mov %fs:0x2d0,%eax 0.00 : a88d7: 00 0.00 : a88d8: 41 39 c1 cmp %eax,%r9d 0.00 : a88db: 75 75 jne a8952 <__fork+0x2b2> 0.00 : a88dd: 64 44 89 04 25 d4 02 mov %r8d,%fs:0x2d4 0.00 : a88e4: 00 00 0.00 : a88e6: e8 75 c3 fc ff callq 74c60 <_IO_list_unlock> 0.00 : a88eb: 4d 85 e4 test %r12,%r12 0.00 : a88ee: 74 ae je a889e <__fork+0x1fe> 0.00 : a88f0: bb ca 00 00 00 mov $0xca,%ebx 0.00 : a88f5: 0f 1f 00 nopl (%rax) 0.00 : a88f8: 49 8b 14 24 mov (%r12),%rdx 0.00 : a88fc: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : a8900: 48 85 c0 test %rax,%rax 0.00 : a8903: 74 06 je a890b <__fork+0x26b> 0.00 : a8905: ff d0 callq *%rax 0.00 : a8907: 49 8b 14 24 mov (%r12),%rdx 0.00 : a890b: f0 ff 4a 28 lock decl 0x28(%rdx) 0.00 : a890f: 0f 94 c0 sete %al 0.00 : a8912: 84 c0 test %al,%al 0.00 : a8914: 74 22 je a8938 <__fork+0x298> 0.00 : a8916: 49 8b 04 24 mov (%r12),%rax 0.00 : a891a: 8b 50 2c mov 0x2c(%rax),%edx 0.00 : a891d: 85 d2 test %edx,%edx 0.00 : a891f: 74 17 je a8938 <__fork+0x298> 0.00 : a8921: ba 01 00 00 00 mov $0x1,%edx 0.00 : a8926: 64 8b 34 25 48 00 00 mov %fs:0x48,%esi 0.00 : a892d: 00 0.00 : a892e: 8b 78 28 mov 0x28(%rax),%edi 0.00 : a8931: 83 ce 01 or $0x1,%esi 0.00 : a8934: 89 d8 mov %ebx,%eax 0.00 : a8936: 0f 05 syscall 0.00 : a8938: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : a893d: 4d 85 e4 test %r12,%r12 0.00 : a8940: 75 b6 jne a88f8 <__fork+0x258> 0.00 : a8942: 48 8d 65 e0 lea -0x20(%rbp),%rsp 0.00 : a8946: 44 89 f0 mov %r14d,%eax 0.00 : a8949: 5b pop %rbx 0.00 : a894a: 41 5c pop %r12 0.00 : a894c: 41 5d pop %r13 0.00 : a894e: 41 5e pop %r14 0.00 : a8950: c9 leaveq 0.00 : a8951: c3 retq 0.00 : a8952: 48 8d 0d 72 39 09 00 lea 0x93972(%rip),%rcx # 13c2cb <__PRETTY_FUNCTION__.14012> 0.00 : a8959: 48 8d 35 70 86 09 00 lea 0x98670(%rip),%rsi # 140fd0 <__PRETTY_FUNCTION__.11129+0x35f7> 0.00 : a8960: 48 8d 3d 79 88 09 00 lea 0x98879(%rip),%rdi # 1411e0 <__PRETTY_FUNCTION__.11129+0x3807> 0.00 : a8967: ba d4 00 00 00 mov $0xd4,%edx 0.00 : a896c: e8 af 2f f8 ff callq 2b920 <__assert_fail> 0.00 : a8971: 48 8d 0d 53 39 09 00 lea 0x93953(%rip),%rcx # 13c2cb <__PRETTY_FUNCTION__.14012> 0.00 : a8978: 48 8d 35 51 86 09 00 lea 0x98651(%rip),%rsi # 140fd0 <__PRETTY_FUNCTION__.11129+0x35f7> 0.00 : a897f: 48 8d 3d 82 86 09 00 lea 0x98682(%rip),%rdi # 141008 <__PRETTY_FUNCTION__.11129+0x362f> 0.00 : a8986: ba 8e 00 00 00 mov $0x8e,%edx 0.00 : a898b: e8 90 2f f8 ff callq 2b920 <__assert_fail> 0.00 : a8990: 48 8b 05 11 ed 2c 00 mov 0x2ced11(%rip),%rax # 3776a8 <__libc_pthread_functions+0x1a8> 0.00 : a8997: 48 89 df mov %rbx,%rdi 0.00 : a899a: 48 c1 c8 11 ror $0x11,%rax 0.00 : a899e: 64 48 33 04 25 30 00 xor %fs:0x30,%rax 0.00 : a89a5: 00 00 0.00 : a89a7: ff d0 callq *%rax 0.00 : a89a9: e9 29 fe ff ff jmpq a87d7 <__fork+0x137> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 33.33 ??:0 33.33 ??:0 33.33 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000001129c0 <_dl_addr>: 0.00 : 1129c0: 41 57 push %r15 0.00 : 1129c2: 49 89 f7 mov %rsi,%r15 0.00 : 1129c5: 41 56 push %r14 0.00 : 1129c7: 41 55 push %r13 0.00 : 1129c9: 41 54 push %r12 0.00 : 1129cb: 55 push %rbp 0.00 : 1129cc: 48 89 fd mov %rdi,%rbp 0.00 : 1129cf: 53 push %rbx 0.00 : 1129d0: 48 83 ec 28 sub $0x28,%rsp 0.00 : 1129d4: 48 8b 05 dd f3 25 00 mov 0x25f3dd(%rip),%rax # 371db8 <_DYNAMIC+0x258> 0.00 : 1129db: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 1129e0: 48 89 4c 24 08 mov %rcx,0x8(%rsp) 0.00 : 1129e5: 48 8d b8 08 09 00 00 lea 0x908(%rax),%rdi 0.00 : 1129ec: ff 90 e0 0e 00 00 callq *0xee0(%rax) 0.00 : 1129f2: 48 8b 05 bf f3 25 00 mov 0x25f3bf(%rip),%rax # 371db8 <_DYNAMIC+0x258> 0.00 : 1129f9: 48 83 b8 00 09 00 00 cmpq $0x0,0x900(%rax) 0.00 : 112a00: 00 0.00 : 112a01: 74 63 je 112a66 <_dl_addr+0xa6> 0.00 : 112a03: 49 89 c4 mov %rax,%r12 0.00 : 112a06: 45 31 ed xor %r13d,%r13d 0.00 : 112a09: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 112a0d: 48 85 db test %rbx,%rbx 0.00 : 112a10: 74 39 je 112a4b <_dl_addr+0x8b> 0.00 : 112a12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 112a18: 48 3b ab 40 03 00 00 cmp 0x340(%rbx),%rbp 0.00 : 112a1f: 72 21 jb 112a42 <_dl_addr+0x82> 0.00 : 112a21: 48 3b ab 48 03 00 00 cmp 0x348(%rbx),%rbp 0.00 : 112a28: 73 18 jae 112a42 <_dl_addr+0x82> 0.00 : 112a2a: f6 83 15 03 00 00 40 testb $0x40,0x315(%rbx) 0.00 : 112a31: 75 3d jne 112a70 <_dl_addr+0xb0> 0.00 : 112a33: 48 89 ee mov %rbp,%rsi 0.00 : 112a36: 48 89 df mov %rbx,%rdi 0.00 : 112a39: e8 12 ff ff ff callq 112950 <_dl_addr_inside_object> 0.00 : 112a3e: 85 c0 test %eax,%eax 0.00 : 112a40: 75 2e jne 112a70 <_dl_addr+0xb0> 0.00 : 112a42: 48 8b 5b 18 mov 0x18(%rbx),%rbx 0.00 : 112a46: 48 85 db test %rbx,%rbx 0.00 : 112a49: 75 cd jne 112a18 <_dl_addr+0x58> 0.00 : 112a4b: 48 8b 05 66 f3 25 00 mov 0x25f366(%rip),%rax # 371db8 <_DYNAMIC+0x258> 0.00 : 112a52: 49 83 c5 01 add $0x1,%r13 0.00 : 112a56: 49 81 c4 90 00 00 00 add $0x90,%r12 0.00 : 112a5d: 4c 39 a8 00 09 00 00 cmp %r13,0x900(%rax) 0.00 : 112a64: 77 a3 ja 112a09 <_dl_addr+0x49> 0.00 : 112a66: 31 db xor %ebx,%ebx 0.00 : 112a68: e9 77 01 00 00 jmpq 112be4 <_dl_addr+0x224> 0.00 : 112a6d: 0f 1f 00 nopl (%rax) 0.00 : 112a70: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 112a74: 49 89 07 mov %rax,(%r15) 0.00 : 112a77: 48 8b 83 40 03 00 00 mov 0x340(%rbx),%rax 0.00 : 112a7e: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : 112a82: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 112a86: 80 38 00 cmpb $0x0,(%rax) 0.00 : 112a89: 0f 84 7a 01 00 00 je 112c09 <_dl_addr+0x249> 0.00 : 112a8f: 48 8b 43 70 mov 0x70(%rbx),%rax 0.00 : 112a93: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 112a97: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 112a9b: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 112a9f: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 112aa4: 48 8b 83 90 00 00 00 mov 0x90(%rbx),%rax 0.00 : 112aab: 8b 40 08 mov 0x8(%rax),%eax 0.00 : 112aae: 89 44 24 1c mov %eax,0x1c(%rsp) 0.00 : 112ab2: 48 83 bb 98 02 00 00 cmpq $0x0,0x298(%rbx) 0.00 : 112ab9: 00 0.00 : 112aba: 0f 84 6b 01 00 00 je 112c2b <_dl_addr+0x26b> 0.00 : 112ac0: 44 8b ab ec 02 00 00 mov 0x2ec(%rbx),%r13d 0.00 : 112ac7: 45 85 ed test %r13d,%r13d 0.00 : 112aca: 0f 84 c9 00 00 00 je 112b99 <_dl_addr+0x1d9> 0.00 : 112ad0: 4c 8b b3 00 03 00 00 mov 0x300(%rbx),%r14 0.00 : 112ad7: 45 31 c9 xor %r9d,%r9d 0.00 : 112ada: 45 31 db xor %r11d,%r11d 0.00 : 112add: 0f 1f 00 nopl (%rax) ??:0 33.33 : 112ae0: 47 8b 04 9e mov (%r14,%r11,4),%r8d 0.00 : 112ae4: 4c 89 ca mov %r9,%rdx 0.00 : 112ae7: 45 85 c0 test %r8d,%r8d 0.00 : 112aea: 0f 84 98 00 00 00 je 112b88 <_dl_addr+0x1c8> 0.00 : 112af0: 44 89 c0 mov %r8d,%eax 0.00 : 112af3: 48 8d 3c 85 00 00 00 lea 0x0(,%rax,4),%rdi 0.00 : 112afa: 00 0.00 : 112afb: 48 03 bb 08 03 00 00 add 0x308(%rbx),%rdi 0.00 : 112b02: eb 12 jmp 112b16 <_dl_addr+0x156> 0.00 : 112b04: 0f 1f 40 00 nopl 0x0(%rax) 33.33 : 112b08: 41 83 c0 01 add $0x1,%r8d 0.00 : 112b0c: 48 83 c7 04 add $0x4,%rdi 0.00 : 112b10: 49 89 d1 mov %rdx,%r9 0.00 : 112b13: 44 89 c0 mov %r8d,%eax 0.00 : 112b16: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 112b1a: 49 8d 14 c4 lea (%r12,%rax,8),%rdx 0.00 : 112b1e: 0f b7 72 06 movzwl 0x6(%rdx),%esi 33.33 : 112b22: 66 85 f6 test %si,%si 0.00 : 112b25: 75 07 jne 112b2e <_dl_addr+0x16e> 0.00 : 112b27: 48 83 7a 08 00 cmpq $0x0,0x8(%rdx) 0.00 : 112b2c: 74 52 je 112b80 <_dl_addr+0x1c0> 0.00 : 112b2e: 0f b6 42 04 movzbl 0x4(%rdx),%eax 0.00 : 112b32: 83 e0 0f and $0xf,%eax 0.00 : 112b35: 83 f8 06 cmp $0x6,%eax 0.00 : 112b38: 74 46 je 112b80 <_dl_addr+0x1c0> 0.00 : 112b3a: 4c 8b 52 08 mov 0x8(%rdx),%r10 0.00 : 112b3e: 4c 89 d1 mov %r10,%rcx 0.00 : 112b41: 48 03 0b add (%rbx),%rcx 0.00 : 112b44: 48 39 cd cmp %rcx,%rbp 0.00 : 112b47: 72 37 jb 112b80 <_dl_addr+0x1c0> 0.00 : 112b49: 66 85 f6 test %si,%si 0.00 : 112b4c: 74 09 je 112b57 <_dl_addr+0x197> 0.00 : 112b4e: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 112b52: 48 85 c0 test %rax,%rax 0.00 : 112b55: 75 09 jne 112b60 <_dl_addr+0x1a0> 0.00 : 112b57: 48 39 cd cmp %rcx,%rbp 0.00 : 112b5a: 74 0c je 112b68 <_dl_addr+0x1a8> 0.00 : 112b5c: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 112b60: 48 01 c8 add %rcx,%rax 0.00 : 112b63: 48 39 c5 cmp %rax,%rbp 0.00 : 112b66: 73 18 jae 112b80 <_dl_addr+0x1c0> 0.00 : 112b68: 4d 85 c9 test %r9,%r9 0.00 : 112b6b: 74 06 je 112b73 <_dl_addr+0x1b3> 0.00 : 112b6d: 4d 3b 51 08 cmp 0x8(%r9),%r10 0.00 : 112b71: 76 0d jbe 112b80 <_dl_addr+0x1c0> 0.00 : 112b73: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 112b77: 3b 02 cmp (%rdx),%eax 0.00 : 112b79: 77 08 ja 112b83 <_dl_addr+0x1c3> 0.00 : 112b7b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 112b80: 4c 89 ca mov %r9,%rdx 0.00 : 112b83: f6 07 01 testb $0x1,(%rdi) 0.00 : 112b86: 74 80 je 112b08 <_dl_addr+0x148> 0.00 : 112b88: 49 83 c3 01 add $0x1,%r11 0.00 : 112b8c: 45 39 dd cmp %r11d,%r13d 0.00 : 112b8f: 76 0f jbe 112ba0 <_dl_addr+0x1e0> 0.00 : 112b91: 49 89 d1 mov %rdx,%r9 0.00 : 112b94: e9 47 ff ff ff jmpq 112ae0 <_dl_addr+0x120> 0.00 : 112b99: 31 d2 xor %edx,%edx 0.00 : 112b9b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 112ba0: 48 83 7c 24 10 00 cmpq $0x0,0x10(%rsp) 0.00 : 112ba6: 74 08 je 112bb0 <_dl_addr+0x1f0> 0.00 : 112ba8: 48 8b 44 24 10 mov 0x10(%rsp),%rax 0.00 : 112bad: 48 89 18 mov %rbx,(%rax) 0.00 : 112bb0: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) 0.00 : 112bb6: 74 08 je 112bc0 <_dl_addr+0x200> 0.00 : 112bb8: 48 8b 44 24 08 mov 0x8(%rsp),%rax 0.00 : 112bbd: 48 89 10 mov %rdx,(%rax) 0.00 : 112bc0: 48 85 d2 test %rdx,%rdx 0.00 : 112bc3: 0f 84 1f 01 00 00 je 112ce8 <_dl_addr+0x328> 0.00 : 112bc9: 8b 02 mov (%rdx),%eax 0.00 : 112bcb: 48 03 44 24 20 add 0x20(%rsp),%rax 0.00 : 112bd0: 49 89 47 10 mov %rax,0x10(%r15) 0.00 : 112bd4: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 112bd8: 48 03 03 add (%rbx),%rax 0.00 : 112bdb: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 112be0: 49 89 47 18 mov %rax,0x18(%r15) 0.00 : 112be4: 48 8b 05 cd f1 25 00 mov 0x25f1cd(%rip),%rax # 371db8 <_DYNAMIC+0x258> 0.00 : 112beb: 48 8d b8 08 09 00 00 lea 0x908(%rax),%rdi 0.00 : 112bf2: ff 90 e8 0e 00 00 callq *0xee8(%rax) 0.00 : 112bf8: 48 83 c4 28 add $0x28,%rsp 0.00 : 112bfc: 89 d8 mov %ebx,%eax 0.00 : 112bfe: 5b pop %rbx 0.00 : 112bff: 5d pop %rbp 0.00 : 112c00: 41 5c pop %r12 0.00 : 112c02: 41 5d pop %r13 0.00 : 112c04: 41 5e pop %r14 0.00 : 112c06: 41 5f pop %r15 0.00 : 112c08: c3 retq 0.00 : 112c09: f6 83 14 03 00 00 03 testb $0x3,0x314(%rbx) 0.00 : 112c10: 0f 85 79 fe ff ff jne 112a8f <_dl_addr+0xcf> 0.00 : 112c16: 48 8b 05 b3 f3 25 00 mov 0x25f3b3(%rip),%rax # 371fd0 <_DYNAMIC+0x470> 0.00 : 112c1d: 48 8b 00 mov (%rax),%rax 0.00 : 112c20: 48 8b 00 mov (%rax),%rax 0.00 : 112c23: 49 89 07 mov %rax,(%r15) 0.00 : 112c26: e9 64 fe ff ff jmpq 112a8f <_dl_addr+0xcf> 0.00 : 112c2b: 48 8b 43 60 mov 0x60(%rbx),%rax 0.00 : 112c2f: 48 8b 74 24 20 mov 0x20(%rsp),%rsi 0.00 : 112c34: 48 85 c0 test %rax,%rax 0.00 : 112c37: 74 0f je 112c48 <_dl_addr+0x288> 0.00 : 112c39: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 112c3d: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 112c40: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 112c44: 49 8d 34 c4 lea (%r12,%rax,8),%rsi 0.00 : 112c48: 31 d2 xor %edx,%edx 0.00 : 112c4a: 49 39 f4 cmp %rsi,%r12 0.00 : 112c4d: 72 16 jb 112c65 <_dl_addr+0x2a5> 0.00 : 112c4f: e9 45 ff ff ff jmpq 112b99 <_dl_addr+0x1d9> 0.00 : 112c54: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 112c58: 49 83 c4 18 add $0x18,%r12 0.00 : 112c5c: 49 39 f4 cmp %rsi,%r12 0.00 : 112c5f: 0f 83 3b ff ff ff jae 112ba0 <_dl_addr+0x1e0> 0.00 : 112c65: 41 0f b6 4c 24 04 movzbl 0x4(%r12),%ecx 0.00 : 112c6b: 89 c8 mov %ecx,%eax 0.00 : 112c6d: c0 e8 04 shr $0x4,%al 0.00 : 112c70: 83 e8 01 sub $0x1,%eax 0.00 : 112c73: 3c 01 cmp $0x1,%al 0.00 : 112c75: 77 e1 ja 112c58 <_dl_addr+0x298> 0.00 : 112c77: 89 c8 mov %ecx,%eax 0.00 : 112c79: 83 e0 0f and $0xf,%eax 0.00 : 112c7c: 83 f8 06 cmp $0x6,%eax 0.00 : 112c7f: 74 d7 je 112c58 <_dl_addr+0x298> 0.00 : 112c81: 41 0f b7 44 24 06 movzwl 0x6(%r12),%eax 0.00 : 112c87: 66 85 c0 test %ax,%ax 0.00 : 112c8a: 74 4c je 112cd8 <_dl_addr+0x318> 0.00 : 112c8c: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 112c91: 48 89 f9 mov %rdi,%rcx 0.00 : 112c94: 48 03 0b add (%rbx),%rcx 0.00 : 112c97: 48 39 cd cmp %rcx,%rbp 0.00 : 112c9a: 72 bc jb 112c58 <_dl_addr+0x298> 0.00 : 112c9c: 66 85 c0 test %ax,%ax 0.00 : 112c9f: 74 2b je 112ccc <_dl_addr+0x30c> 0.00 : 112ca1: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 112ca6: 48 85 c0 test %rax,%rax 0.00 : 112ca9: 74 21 je 112ccc <_dl_addr+0x30c> 0.00 : 112cab: 48 01 c8 add %rcx,%rax 0.00 : 112cae: 48 39 c5 cmp %rax,%rbp 0.00 : 112cb1: 73 a5 jae 112c58 <_dl_addr+0x298> 0.00 : 112cb3: 48 85 d2 test %rdx,%rdx 0.00 : 112cb6: 74 06 je 112cbe <_dl_addr+0x2fe> 0.00 : 112cb8: 48 39 7a 08 cmp %rdi,0x8(%rdx) 0.00 : 112cbc: 73 9a jae 112c58 <_dl_addr+0x298> 0.00 : 112cbe: 8b 44 24 1c mov 0x1c(%rsp),%eax 0.00 : 112cc2: 41 3b 04 24 cmp (%r12),%eax 0.00 : 112cc6: 49 0f 47 d4 cmova %r12,%rdx 0.00 : 112cca: eb 8c jmp 112c58 <_dl_addr+0x298> 0.00 : 112ccc: 48 39 cd cmp %rcx,%rbp 0.00 : 112ccf: 74 e2 je 112cb3 <_dl_addr+0x2f3> 0.00 : 112cd1: 49 8b 44 24 10 mov 0x10(%r12),%rax 0.00 : 112cd6: eb d3 jmp 112cab <_dl_addr+0x2eb> 0.00 : 112cd8: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 0.00 : 112cdd: 48 85 ff test %rdi,%rdi 0.00 : 112ce0: 0f 84 72 ff ff ff je 112c58 <_dl_addr+0x298> 0.00 : 112ce6: eb a9 jmp 112c91 <_dl_addr+0x2d1> 0.00 : 112ce8: 49 c7 47 10 00 00 00 movq $0x0,0x10(%r15) 0.00 : 112cef: 00 0.00 : 112cf0: 49 c7 47 18 00 00 00 movq $0x0,0x18(%r15) 0.00 : 112cf7: 00 0.00 : 112cf8: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 112cfd: e9 e2 fe ff ff jmpq 112be4 <_dl_addr+0x224> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000007b80 <_dl_map_object>: 0.00 : 7b80: 41 57 push %r15 0.00 : 7b82: 41 56 push %r14 0.00 : 7b84: 49 89 fe mov %rdi,%r14 0.00 : 7b87: 41 55 push %r13 0.00 : 7b89: 4d 89 cd mov %r9,%r13 0.00 : 7b8c: 41 54 push %r12 0.00 : 7b8e: 55 push %rbp 0.00 : 7b8f: 48 89 f5 mov %rsi,%rbp 0.00 : 7b92: 53 push %rbx 0.00 : 7b93: 48 81 ec d8 03 00 00 sub $0x3d8,%rsp 0.00 : 7b9a: 4d 85 c9 test %r9,%r9 0.00 : 7b9d: 89 54 24 54 mov %edx,0x54(%rsp) 0.00 : 7ba1: 89 4c 24 50 mov %ecx,0x50(%rsp) 0.00 : 7ba5: 44 89 44 24 4c mov %r8d,0x4c(%rsp) 0.00 : 7baa: 0f 88 13 06 00 00 js 81c3 <_dl_map_object+0x643> 0.00 : 7bb0: 4c 3b 0d a9 7d 21 00 cmp 0x217da9(%rip),%r9 # 21f960 <_rtld_global+0x900> 0.00 : 7bb7: 0f 83 e7 05 00 00 jae 81a4 <_dl_map_object+0x624> 0.00 : 7bbd: 4b 8d 04 c9 lea (%r9,%r9,8),%rax 0.00 : 7bc1: 48 8d 15 98 74 21 00 lea 0x217498(%rip),%rdx # 21f060 <_rtld_global> 0.00 : 7bc8: 48 c1 e0 04 shl $0x4,%rax 0.00 : 7bcc: 48 8b 1c 02 mov (%rdx,%rax,1),%rbx 0.00 : 7bd0: 48 85 db test %rbx,%rbx 0.00 : 7bd3: 75 21 jne 7bf6 <_dl_map_object+0x76> 0.00 : 7bd5: eb 59 jmp 7c30 <_dl_map_object+0xb0> 0.00 : 7bd7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7bde: 00 00 0.00 : 7be0: f6 83 15 03 00 00 01 testb $0x1,0x315(%rbx) 0.00 : 7be7: 0f 84 9f 01 00 00 je 7d8c <_dl_map_object+0x20c> 0.00 : 7bed: 48 8b 5b 18 mov 0x18(%rbx),%rbx 0.00 : 7bf1: 48 85 db test %rbx,%rbx 0.00 : 7bf4: 74 3a je 7c30 <_dl_map_object+0xb0> 0.00 : 7bf6: 0f b6 83 15 03 00 00 movzbl 0x315(%rbx),%eax 0.00 : 7bfd: a8 02 test $0x2,%al 0.00 : 7bff: 75 ec jne 7bed <_dl_map_object+0x6d> 0.00 : 7c01: a8 20 test $0x20,%al 0.00 : 7c03: 75 e8 jne 7bed <_dl_map_object+0x6d> 0.00 : 7c05: 48 89 de mov %rbx,%rsi 0.00 : 7c08: 48 89 ef mov %rbp,%rdi 0.00 : 7c0b: e8 70 6f 00 00 callq eb80 <_dl_name_match_p> 0.00 : 7c10: 85 c0 test %eax,%eax 0.00 : 7c12: 74 cc je 7be0 <_dl_map_object+0x60> 0.00 : 7c14: 48 81 c4 d8 03 00 00 add $0x3d8,%rsp 0.00 : 7c1b: 48 89 d8 mov %rbx,%rax 0.00 : 7c1e: 5b pop %rbx 0.00 : 7c1f: 5d pop %rbp 0.00 : 7c20: 41 5c pop %r12 0.00 : 7c22: 41 5d pop %r13 0.00 : 7c24: 41 5e pop %r14 0.00 : 7c26: 41 5f pop %r15 0.00 : 7c28: c3 retq 0.00 : 7c29: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 7c30: 4d 85 f6 test %r14,%r14 0.00 : 7c33: 41 0f 95 c7 setne %r15b 0.00 : 7c37: f6 05 e2 6f 21 00 40 testb $0x40,0x216fe2(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 7c3e: 0f 85 f4 00 00 00 jne 7d38 <_dl_map_object+0x1b8> 0.00 : 7c44: 8b 3d ee 70 21 00 mov 0x2170ee(%rip),%edi # 21ed38 <_rtld_global_ro+0x118> 0.00 : 7c4a: 85 ff test %edi,%edi 0.00 : 7c4c: 0f 85 3e 03 00 00 jne 7f90 <_dl_map_object+0x410> 0.00 : 7c52: c6 84 24 cf 03 00 00 movb $0x0,0x3cf(%rsp) 0.00 : 7c59: 00 0.00 : 7c5a: be 2f 00 00 00 mov $0x2f,%esi 0.00 : 7c5f: 48 89 ef mov %rbp,%rdi 0.00 : 7c62: e8 79 e9 00 00 callq 165e0 0.00 : 7c67: 48 85 c0 test %rax,%rax 0.00 : 7c6a: 0f 84 91 01 00 00 je 7e01 <_dl_map_object+0x281> 0.00 : 7c70: 45 84 ff test %r15b,%r15b 0.00 : 7c73: 0f 84 5f 01 00 00 je 7dd8 <_dl_map_object+0x258> 0.00 : 7c79: 4c 89 f7 mov %r14,%rdi 0.00 : 7c7c: 31 d2 xor %edx,%edx 0.00 : 7c7e: 48 89 ee mov %rbp,%rsi 0.00 : 7c81: e8 da f9 ff ff callq 7660 0.00 : 7c86: 48 89 c7 mov %rax,%rdi 0.00 : 7c89: 48 85 ff test %rdi,%rdi 0.00 : 7c8c: 48 89 bc 24 c0 03 00 mov %rdi,0x3c0(%rsp) 0.00 : 7c93: 00 0.00 : 7c94: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 7c99: 74 31 je 7ccc <_dl_map_object+0x14c> 0.00 : 7c9b: 45 84 ff test %r15b,%r15b 0.00 : 7c9e: 4c 89 f2 mov %r14,%rdx 0.00 : 7ca1: 0f 84 41 01 00 00 je 7de8 <_dl_map_object+0x268> 0.00 : 7ca7: 48 8d 74 24 70 lea 0x70(%rsp),%rsi 0.00 : 7cac: 4c 8d 84 24 cf 03 00 lea 0x3cf(%rsp),%r8 0.00 : 7cb3: 00 0.00 : 7cb4: 31 c9 xor %ecx,%ecx 0.00 : 7cb6: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 7cbc: e8 ef da ff ff callq 57b0 0.00 : 7cc1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 7cc4: 89 c3 mov %eax,%ebx 0.00 : 7cc6: 0f 84 fd 05 00 00 je 82c9 <_dl_map_object+0x749> 0.00 : 7ccc: f7 44 24 4c 00 00 00 testl $0x10000000,0x4c(%rsp) 0.00 : 7cd3: 10 0.00 : 7cd4: b8 00 00 00 00 mov $0x0,%eax 0.00 : 7cd9: 4c 0f 45 f0 cmovne %rax,%r14 0.00 : 7cdd: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 7ce0: 0f 84 ba 05 00 00 je 82a0 <_dl_map_object+0x720> 0.00 : 7ce6: 48 8b 05 6b 71 21 00 mov 0x21716b(%rip),%rax # 21ee58 <__libc_stack_end> 0.00 : 7ced: 48 8b 8c 24 c0 03 00 mov 0x3c0(%rsp),%rcx 0.00 : 7cf4: 00 0.00 : 7cf5: 48 8d 54 24 70 lea 0x70(%rsp),%rdx 0.00 : 7cfa: 44 8b 4c 24 54 mov 0x54(%rsp),%r9d 0.00 : 7cff: 89 de mov %ebx,%esi 0.00 : 7d01: 4d 89 f0 mov %r14,%r8 0.00 : 7d04: 48 89 ef mov %rbp,%rdi 0.00 : 7d07: 4c 89 6c 24 10 mov %r13,0x10(%rsp) 0.00 : 7d0c: 48 89 84 24 b8 03 00 mov %rax,0x3b8(%rsp) 0.00 : 7d13: 00 0.00 : 7d14: 48 8d 84 24 b8 03 00 lea 0x3b8(%rsp),%rax 0.00 : 7d1b: 00 0.00 : 7d1c: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 7d21: 8b 44 24 4c mov 0x4c(%rsp),%eax 0.00 : 7d25: 89 04 24 mov %eax,(%rsp) 0.00 : 7d28: e8 73 e3 ff ff callq 60a0 <_dl_map_object_from_fd> 0.00 : 7d2d: 48 89 c3 mov %rax,%rbx 0.00 : 7d30: e9 df fe ff ff jmpq 7c14 <_dl_map_object+0x94> 0.00 : 7d35: 0f 1f 00 nopl (%rax) 0.00 : 7d38: 45 84 ff test %r15b,%r15b 0.00 : 7d3b: 0f 84 03 ff ff ff je 7c44 <_dl_map_object+0xc4> 0.00 : 7d41: 49 8b 4e 08 mov 0x8(%r14),%rcx 0.00 : 7d45: 49 8b 56 30 mov 0x30(%r14),%rdx 0.00 : 7d49: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 7d4c: 74 32 je 7d80 <_dl_map_object+0x200> 0.00 : 7d4e: 48 8d 3d fb 37 01 00 lea 0x137fb(%rip),%rdi # 1b550 <__PRETTY_FUNCTION__.3644+0x11df> 0.00 : 7d55: 49 89 d0 mov %rdx,%r8 0.00 : 7d58: 31 c0 xor %eax,%eax 0.00 : 7d5a: 4c 89 ea mov %r13,%rdx 0.00 : 7d5d: 48 89 ee mov %rbp,%rsi 0.00 : 7d60: e8 eb 75 00 00 callq f350 <_dl_debug_printf> 0.00 : 7d65: 8b 3d cd 6f 21 00 mov 0x216fcd(%rip),%edi # 21ed38 <_rtld_global_ro+0x118> 0.00 : 7d6b: 85 ff test %edi,%edi 0.00 : 7d6d: 0f 84 df fe ff ff je 7c52 <_dl_map_object+0xd2> 0.00 : 7d73: e9 18 02 00 00 jmpq 7f90 <_dl_map_object+0x410> 0.00 : 7d78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7d7f: 00 0.00 : 7d80: 48 8b 05 81 6e 21 00 mov 0x216e81(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 7d87: 48 8b 08 mov (%rax),%rcx 0.00 : 7d8a: eb c2 jmp 7d4e <_dl_map_object+0x1ce> 0.00 : 7d8c: 48 8b 93 b0 00 00 00 mov 0xb0(%rbx),%rdx 0.00 : 7d93: 48 85 d2 test %rdx,%rdx 0.00 : 7d96: 0f 84 51 fe ff ff je 7bed <_dl_map_object+0x6d> 0.00 : 7d9c: 48 8b 43 68 mov 0x68(%rbx),%rax 0.00 : 7da0: 48 89 ef mov %rbp,%rdi 0.00 : 7da3: 4c 8b 60 08 mov 0x8(%rax),%r12 ??:0 100.00 : 7da7: 4c 03 62 08 add 0x8(%rdx),%r12 0.00 : 7dab: 4c 89 e6 mov %r12,%rsi 0.00 : 7dae: e8 ad e8 00 00 callq 16660 0.00 : 7db3: 85 c0 test %eax,%eax 0.00 : 7db5: 0f 85 32 fe ff ff jne 7bed <_dl_map_object+0x6d> 0.00 : 7dbb: 4c 89 e6 mov %r12,%rsi 0.00 : 7dbe: 48 89 df mov %rbx,%rdi 0.00 : 7dc1: e8 6a d5 ff ff callq 5330 0.00 : 7dc6: 80 8b 15 03 00 00 01 orb $0x1,0x315(%rbx) 0.00 : 7dcd: e9 42 fe ff ff jmpq 7c14 <_dl_map_object+0x94> 0.00 : 7dd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7dd8: 48 89 ef mov %rbp,%rdi 0.00 : 7ddb: e8 00 d1 ff ff callq 4ee0 0.00 : 7de0: 48 89 c7 mov %rax,%rdi 0.00 : 7de3: e9 a1 fe ff ff jmpq 7c89 <_dl_map_object+0x109> 0.00 : 7de8: 4b 8d 44 ed 00 lea 0x0(%r13,%r13,8),%rax 0.00 : 7ded: 48 8d 0d 6c 72 21 00 lea 0x21726c(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 7df4: 48 c1 e0 04 shl $0x4,%rax 0.00 : 7df8: 48 8b 14 01 mov (%rcx,%rax,1),%rdx 0.00 : 7dfc: e9 a6 fe ff ff jmpq 7ca7 <_dl_map_object+0x127> 0.00 : 7e01: 48 89 ef mov %rbp,%rdi 0.00 : 7e04: e8 67 e9 00 00 callq 16770 <__GI_strlen> 0.00 : 7e09: 48 83 c0 01 add $0x1,%rax 0.00 : 7e0d: f6 05 0c 6e 21 00 01 testb $0x1,0x216e0c(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 7e14: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 7e19: 0f 85 be 05 00 00 jne 83dd <_dl_map_object+0x85d> 0.00 : 7e1f: 4d 85 f6 test %r14,%r14 0.00 : 7e22: 0f 84 9e 02 00 00 je 80c6 <_dl_map_object+0x546> 0.00 : 7e28: 49 83 be 28 01 00 00 cmpq $0x0,0x128(%r14) 0.00 : 7e2f: 00 0.00 : 7e30: 0f 84 90 02 00 00 je 80c6 <_dl_map_object+0x546> 0.00 : 7e36: 48 83 3d d2 6f 21 00 cmpq $0xffffffffffffffff,0x216fd2(%rip) # 21ee10 0.00 : 7e3d: ff 0.00 : 7e3e: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 7e43: b8 01 00 00 00 mov $0x1,%eax 0.00 : 7e48: 74 5a je 7ea4 <_dl_map_object+0x324> 0.00 : 7e4a: 48 8b 05 0f 72 21 00 mov 0x21720f(%rip),%rax # 21f060 <_rtld_global> 0.00 : 7e51: 8b 54 24 4c mov 0x4c(%rsp),%edx 0.00 : 7e55: 48 8d 8c 24 cf 03 00 lea 0x3cf(%rsp),%rcx 0.00 : 7e5c: 00 0.00 : 7e5d: 48 8b 74 24 58 mov 0x58(%rsp),%rsi 0.00 : 7e62: 45 84 ff test %r15b,%r15b 0.00 : 7e65: 4c 8d 4c 24 70 lea 0x70(%rsp),%r9 0.00 : 7e6a: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 7e6f: 4c 8d 84 24 c0 03 00 lea 0x3c0(%rsp),%r8 0.00 : 7e76: 00 0.00 : 7e77: 48 8d 0d 92 6f 21 00 lea 0x216f92(%rip),%rcx # 21ee10 0.00 : 7e7e: 49 0f 45 c6 cmovne %r14,%rax 0.00 : 7e82: 48 89 ef mov %rbp,%rdi 0.00 : 7e85: 81 e2 00 00 00 04 and $0x4000000,%edx 0.00 : 7e8b: c7 44 24 08 02 00 00 movl $0x2,0x8(%rsp) 0.00 : 7e92: 00 0.00 : 7e93: 48 89 04 24 mov %rax,(%rsp) 0.00 : 7e97: e8 a4 dd ff ff callq 5c40 0.00 : 7e9c: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 7e9f: 89 c3 mov %eax,%ebx 0.00 : 7ea1: 0f 94 c0 sete %al 0.00 : 7ea4: 45 84 ff test %r15b,%r15b 0.00 : 7ea7: 0f 84 90 01 00 00 je 803d <_dl_map_object+0x4bd> 0.00 : 7ead: 84 c0 test %al,%al 0.00 : 7eaf: 0f 84 88 01 00 00 je 803d <_dl_map_object+0x4bd> 0.00 : 7eb5: 49 8d 9e a8 03 00 00 lea 0x3a8(%r14),%rbx 0.00 : 7ebc: 48 8d 0d ed 1b 01 00 lea 0x11bed(%rip),%rcx # 19ab0 <__PRETTY_FUNCTION__.12417+0x1ae> 0.00 : 7ec3: ba 1d 00 00 00 mov $0x1d,%edx 0.00 : 7ec8: 4c 89 f7 mov %r14,%rdi 0.00 : 7ecb: 48 89 de mov %rbx,%rsi 0.00 : 7ece: e8 8d fa ff ff callq 7960 0.00 : 7ed3: 84 c0 test %al,%al 0.00 : 7ed5: 0f 85 20 01 00 00 jne 7ffb <_dl_map_object+0x47b> 0.00 : 7edb: 8b 44 24 4c mov 0x4c(%rsp),%eax 0.00 : 7edf: 25 00 00 00 04 and $0x4000000,%eax 0.00 : 7ee4: 89 44 24 6c mov %eax,0x6c(%rsp) 0.00 : 7ee8: 0f 85 08 05 00 00 jne 83f6 <_dl_map_object+0x876> 0.00 : 7eee: 48 89 ef mov %rbp,%rdi 0.00 : 7ef1: e8 fa 0a 00 00 callq 89f0 <_dl_load_cache_lookup> 0.00 : 7ef6: 48 85 c0 test %rax,%rax 0.00 : 7ef9: 49 89 c4 mov %rax,%r12 0.00 : 7efc: 0f 84 53 01 00 00 je 8055 <_dl_map_object+0x4d5> 0.00 : 7f02: 45 84 ff test %r15b,%r15b 0.00 : 7f05: 4c 89 f2 mov %r14,%rdx 0.00 : 7f08: 0f 84 b5 04 00 00 je 83c3 <_dl_map_object+0x843> 0.00 : 7f0e: f6 82 dd 03 00 00 08 testb $0x8,0x3dd(%rdx) 0.00 : 7f15: 0f 85 75 04 00 00 jne 8390 <_dl_map_object+0x810> 0.00 : 7f1b: 45 84 ff test %r15b,%r15b 0.00 : 7f1e: 4c 89 f2 mov %r14,%rdx 0.00 : 7f21: 0f 84 50 04 00 00 je 8377 <_dl_map_object+0x7f7> 0.00 : 7f27: 48 8d 74 24 70 lea 0x70(%rsp),%rsi 0.00 : 7f2c: 4c 8d 84 24 cf 03 00 lea 0x3cf(%rsp),%r8 0.00 : 7f33: 00 0.00 : 7f34: 45 31 c9 xor %r9d,%r9d 0.00 : 7f37: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 7f3c: 4c 89 e7 mov %r12,%rdi 0.00 : 7f3f: e8 6c d8 ff ff callq 57b0 0.00 : 7f44: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 7f47: 89 c3 mov %eax,%ebx 0.00 : 7f49: 0f 84 06 01 00 00 je 8055 <_dl_map_object+0x4d5> 0.00 : 7f4f: 4c 89 e7 mov %r12,%rdi 0.00 : 7f52: e8 89 cf ff ff callq 4ee0 0.00 : 7f57: 48 85 c0 test %rax,%rax 0.00 : 7f5a: 48 89 84 24 c0 03 00 mov %rax,0x3c0(%rsp) 0.00 : 7f61: 00 0.00 : 7f62: 0f 84 e3 00 00 00 je 804b <_dl_map_object+0x4cb> 0.00 : 7f68: f6 05 b1 6c 21 00 01 testb $0x1,0x216cb1(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 7f6f: 0f 84 57 fd ff ff je 7ccc <_dl_map_object+0x14c> 0.00 : 7f75: 48 8d 3d 60 18 01 00 lea 0x11860(%rip),%rdi # 197dc 0.00 : 7f7c: 31 c0 xor %eax,%eax 0.00 : 7f7e: e8 cd 73 00 00 callq f350 <_dl_debug_printf> 0.00 : 7f83: e9 44 fd ff ff jmpq 7ccc <_dl_map_object+0x14c> 0.00 : 7f88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7f8f: 00 0.00 : 7f90: 4d 85 f6 test %r14,%r14 0.00 : 7f93: 74 11 je 7fa6 <_dl_map_object+0x426> 0.00 : 7f95: 41 f6 86 15 03 00 00 testb $0x8,0x315(%r14) 0.00 : 7f9c: 08 0.00 : 7f9d: 0f 1f 00 nopl (%rax) 0.00 : 7fa0: 0f 85 ac fc ff ff jne 7c52 <_dl_map_object+0xd2> 0.00 : 7fa6: 4c 8b 25 83 6d 21 00 mov 0x216d83(%rip),%r12 # 21ed30 <_rtld_global_ro+0x110> 0.00 : 7fad: 31 db xor %ebx,%ebx 0.00 : 7faf: eb 17 jmp 7fc8 <_dl_map_object+0x448> 0.00 : 7fb1: 48 89 c5 mov %rax,%rbp 0.00 : 7fb4: 83 c3 01 add $0x1,%ebx 0.00 : 7fb7: 39 1d 7b 6d 21 00 cmp %ebx,0x216d7b(%rip) # 21ed38 <_rtld_global_ro+0x118> 0.00 : 7fbd: 4d 8b 64 24 40 mov 0x40(%r12),%r12 0.00 : 7fc2: 0f 86 8a fc ff ff jbe 7c52 <_dl_map_object+0xd2> 0.00 : 7fc8: 49 8b 4c 24 08 mov 0x8(%r12),%rcx 0.00 : 7fcd: 48 85 c9 test %rcx,%rcx 0.00 : 7fd0: 74 e2 je 7fb4 <_dl_map_object+0x434> 0.00 : 7fd2: 89 d8 mov %ebx,%eax 0.00 : 7fd4: ba 01 00 00 00 mov $0x1,%edx 0.00 : 7fd9: 48 89 ef mov %rbp,%rdi 0.00 : 7fdc: 48 c1 e0 04 shl $0x4,%rax 0.00 : 7fe0: 49 8d b4 06 70 04 00 lea 0x470(%r14,%rax,1),%rsi 0.00 : 7fe7: 00 0.00 : 7fe8: ff d1 callq *%rcx 0.00 : 7fea: 48 85 c0 test %rax,%rax 0.00 : 7fed: 75 c2 jne 7fb1 <_dl_map_object+0x431> 0.00 : 7fef: 31 ed xor %ebp,%ebp 0.00 : 7ff1: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 7ff6: e9 d1 fc ff ff jmpq 7ccc <_dl_map_object+0x14c> 0.00 : 7ffb: 8b 54 24 4c mov 0x4c(%rsp),%edx 0.00 : 7fff: 48 8b 74 24 58 mov 0x58(%rsp),%rsi 0.00 : 8004: 48 8d 84 24 cf 03 00 lea 0x3cf(%rsp),%rax 0.00 : 800b: 00 0.00 : 800c: 4c 8d 4c 24 70 lea 0x70(%rsp),%r9 0.00 : 8011: 4c 8d 84 24 c0 03 00 lea 0x3c0(%rsp),%r8 0.00 : 8018: 00 0.00 : 8019: 48 89 d9 mov %rbx,%rcx 0.00 : 801c: 48 89 ef mov %rbp,%rdi 0.00 : 801f: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 8024: c7 44 24 08 04 00 00 movl $0x4,0x8(%rsp) 0.00 : 802b: 00 0.00 : 802c: 81 e2 00 00 00 04 and $0x4000000,%edx 0.00 : 8032: 4c 89 34 24 mov %r14,(%rsp) 0.00 : 8036: e8 05 dc ff ff callq 5c40 0.00 : 803b: 89 c3 mov %eax,%ebx 0.00 : 803d: 83 fb ff cmp $0xffffffff,%ebx 0.00 : 8040: 0f 85 22 ff ff ff jne 7f68 <_dl_map_object+0x3e8> 0.00 : 8046: e9 90 fe ff ff jmpq 7edb <_dl_map_object+0x35b> 0.00 : 804b: 89 df mov %ebx,%edi 0.00 : 804d: 0f 1f 00 nopl (%rax) 0.00 : 8050: e8 2b df 00 00 callq 15f80 <__close> 0.00 : 8055: 45 84 ff test %r15b,%r15b 0.00 : 8058: 4c 89 f2 mov %r14,%rdx 0.00 : 805b: 0f 84 7a 02 00 00 je 82db <_dl_map_object+0x75b> 0.00 : 8061: 48 85 d2 test %rdx,%rdx 0.00 : 8064: 74 0d je 8073 <_dl_map_object+0x4f3> 0.00 : 8066: f6 82 dd 03 00 00 08 testb $0x8,0x3dd(%rdx) 0.00 : 806d: 0f 85 fa 02 00 00 jne 836d <_dl_map_object+0x7ed> 0.00 : 8073: 48 83 3d c5 6d 21 00 cmpq $0xffffffffffffffff,0x216dc5(%rip) # 21ee40 0.00 : 807a: ff 0.00 : 807b: 0f 84 ec 02 00 00 je 836d <_dl_map_object+0x7ed> 0.00 : 8081: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 8085: 48 8b 74 24 58 mov 0x58(%rsp),%rsi 0.00 : 808a: 48 8d 84 24 cf 03 00 lea 0x3cf(%rsp),%rax 0.00 : 8091: 00 0.00 : 8092: 8b 54 24 6c mov 0x6c(%rsp),%edx 0.00 : 8096: 4c 8d 4c 24 70 lea 0x70(%rsp),%r9 0.00 : 809b: 4c 8d 84 24 c0 03 00 lea 0x3c0(%rsp),%r8 0.00 : 80a2: 00 0.00 : 80a3: 48 8d 0d 96 6d 21 00 lea 0x216d96(%rip),%rcx # 21ee40 0.00 : 80aa: 48 89 ef mov %rbp,%rdi 0.00 : 80ad: 48 89 44 24 10 mov %rax,0x10(%rsp) 0.00 : 80b2: c7 44 24 08 40 00 00 movl $0x40,0x8(%rsp) 0.00 : 80b9: 00 0.00 : 80ba: e8 81 db ff ff callq 5c40 0.00 : 80bf: 89 c3 mov %eax,%ebx 0.00 : 80c1: e9 a2 fe ff ff jmpq 7f68 <_dl_map_object+0x3e8> 0.00 : 80c6: 48 8b 0d 93 6f 21 00 mov 0x216f93(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 80cd: 45 84 ff test %r15b,%r15b 0.00 : 80d0: 48 89 4c 24 60 mov %rcx,0x60(%rsp) 0.00 : 80d5: 0f 84 12 01 00 00 je 81ed <_dl_map_object+0x66d> 0.00 : 80db: 48 8d 44 24 70 lea 0x70(%rsp),%rax 0.00 : 80e0: 8b 4c 24 4c mov 0x4c(%rsp),%ecx 0.00 : 80e4: 48 8d 94 24 c0 03 00 lea 0x3c0(%rsp),%rdx 0.00 : 80eb: 00 0.00 : 80ec: 4d 89 f4 mov %r14,%r12 0.00 : 80ef: c6 44 24 6b 00 movb $0x0,0x6b(%rsp) 0.00 : 80f4: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : 80f9: 48 8d 84 24 cf 03 00 lea 0x3cf(%rsp),%rax 0.00 : 8100: 00 0.00 : 8101: 48 89 54 24 38 mov %rdx,0x38(%rsp) 0.00 : 8106: 81 e1 00 00 00 04 and $0x4000000,%ecx 0.00 : 810c: 89 4c 24 34 mov %ecx,0x34(%rsp) 0.00 : 8110: 48 89 44 24 28 mov %rax,0x28(%rsp) 0.00 : 8115: eb 1a jmp 8131 <_dl_map_object+0x5b1> 0.00 : 8117: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 811e: 00 00 0.00 : 8120: 4d 8b a4 24 d8 02 00 mov 0x2d8(%r12),%r12 0.00 : 8127: 00 0.00 : 8128: 4d 85 e4 test %r12,%r12 0.00 : 812b: 0f 84 b1 00 00 00 je 81e2 <_dl_map_object+0x662> 0.00 : 8131: 49 8d 9c 24 18 03 00 lea 0x318(%r12),%rbx 0.00 : 8138: 00 0.00 : 8139: 48 8d 0d 6a 19 01 00 lea 0x1196a(%rip),%rcx # 19aaa <__PRETTY_FUNCTION__.12417+0x1a8> 0.00 : 8140: ba 0f 00 00 00 mov $0xf,%edx 0.00 : 8145: 4c 89 e7 mov %r12,%rdi 0.00 : 8148: 48 89 de mov %rbx,%rsi 0.00 : 814b: e8 10 f8 ff ff callq 7960 0.00 : 8150: 84 c0 test %al,%al 0.00 : 8152: 74 cc je 8120 <_dl_map_object+0x5a0> 0.00 : 8154: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 8159: 4c 8b 4c 24 40 mov 0x40(%rsp),%r9 0.00 : 815e: 48 89 d9 mov %rbx,%rcx 0.00 : 8161: 4c 8b 44 24 38 mov 0x38(%rsp),%r8 0.00 : 8166: 48 8b 74 24 58 mov 0x58(%rsp),%rsi 0.00 : 816b: 48 89 ef mov %rbp,%rdi 0.00 : 816e: c7 44 24 08 04 00 00 movl $0x4,0x8(%rsp) 0.00 : 8175: 00 0.00 : 8176: 4c 89 34 24 mov %r14,(%rsp) 0.00 : 817a: 48 89 54 24 10 mov %rdx,0x10(%rsp) 0.00 : 817f: 8b 54 24 34 mov 0x34(%rsp),%edx 0.00 : 8183: e8 b8 da ff ff callq 5c40 0.00 : 8188: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 818b: 89 c3 mov %eax,%ebx 0.00 : 818d: 0f 85 d5 fd ff ff jne 7f68 <_dl_map_object+0x3e8> 0.00 : 8193: 4c 3b 64 24 60 cmp 0x60(%rsp),%r12 0.00 : 8198: 0f 94 c0 sete %al 0.00 : 819b: 08 44 24 6b or %al,0x6b(%rsp) 0.00 : 819f: e9 7c ff ff ff jmpq 8120 <_dl_map_object+0x5a0> 0.00 : 81a4: 48 8d 0d a7 19 01 00 lea 0x119a7(%rip),%rcx # 19b52 <__PRETTY_FUNCTION__.13089> 0.00 : 81ab: 48 8d 35 89 17 01 00 lea 0x11789(%rip),%rsi # 1993b <__PRETTY_FUNCTION__.12417+0x39> 0.00 : 81b2: 48 8d 3d 09 19 01 00 lea 0x11909(%rip),%rdi # 19ac2 <__PRETTY_FUNCTION__.12417+0x1c0> 0.00 : 81b9: ba 07 08 00 00 mov $0x807,%edx 0.00 : 81be: e8 ad cb 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 81c3: 48 8d 0d 88 19 01 00 lea 0x11988(%rip),%rcx # 19b52 <__PRETTY_FUNCTION__.13089> 0.00 : 81ca: 48 8d 35 6a 17 01 00 lea 0x1176a(%rip),%rsi # 1993b <__PRETTY_FUNCTION__.12417+0x39> 0.00 : 81d1: 48 8d 3d e0 18 01 00 lea 0x118e0(%rip),%rdi # 19ab8 <__PRETTY_FUNCTION__.12417+0x1b6> 0.00 : 81d8: ba 06 08 00 00 mov $0x806,%edx 0.00 : 81dd: e8 8e cb 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 81e2: 80 7c 24 6b 00 cmpb $0x0,0x6b(%rsp) 0.00 : 81e7: 0f 85 49 fc ff ff jne 7e36 <_dl_map_object+0x2b6> 0.00 : 81ed: 48 83 7c 24 60 00 cmpq $0x0,0x60(%rsp) 0.00 : 81f3: 0f 84 3d fc ff ff je 7e36 <_dl_map_object+0x2b6> 0.00 : 81f9: 48 8b 4c 24 60 mov 0x60(%rsp),%rcx 0.00 : 81fe: 0f b6 81 14 03 00 00 movzbl 0x314(%rcx),%eax 0.00 : 8205: 83 e0 03 and $0x3,%eax 0.00 : 8208: 3c 02 cmp $0x2,%al 0.00 : 820a: 0f 84 26 fc ff ff je 7e36 <_dl_map_object+0x2b6> 0.00 : 8210: 48 89 cb mov %rcx,%rbx 0.00 : 8213: 48 8b 7c 24 60 mov 0x60(%rsp),%rdi 0.00 : 8218: 48 8d 0d 8b 18 01 00 lea 0x1188b(%rip),%rcx # 19aaa <__PRETTY_FUNCTION__.12417+0x1a8> 0.00 : 821f: 48 81 c3 18 03 00 00 add $0x318,%rbx 0.00 : 8226: ba 0f 00 00 00 mov $0xf,%edx 0.00 : 822b: 48 89 de mov %rbx,%rsi 0.00 : 822e: e8 2d f7 ff ff callq 7960 0.00 : 8233: 84 c0 test %al,%al 0.00 : 8235: 0f 84 fb fb ff ff je 7e36 <_dl_map_object+0x2b6> 0.00 : 823b: 48 8b 44 24 60 mov 0x60(%rsp),%rax 0.00 : 8240: 8b 54 24 4c mov 0x4c(%rsp),%edx 0.00 : 8244: 48 8d 8c 24 cf 03 00 lea 0x3cf(%rsp),%rcx 0.00 : 824b: 00 0.00 : 824c: 48 8b 74 24 58 mov 0x58(%rsp),%rsi 0.00 : 8251: 45 84 ff test %r15b,%r15b 0.00 : 8254: 4c 8d 4c 24 70 lea 0x70(%rsp),%r9 0.00 : 8259: 4c 8d 84 24 c0 03 00 lea 0x3c0(%rsp),%r8 0.00 : 8260: 00 0.00 : 8261: 48 89 4c 24 10 mov %rcx,0x10(%rsp) 0.00 : 8266: 48 89 ef mov %rbp,%rdi 0.00 : 8269: 49 0f 45 c6 cmovne %r14,%rax 0.00 : 826d: 48 89 d9 mov %rbx,%rcx 0.00 : 8270: 81 e2 00 00 00 04 and $0x4000000,%edx 0.00 : 8276: c7 44 24 08 04 00 00 movl $0x4,0x8(%rsp) 0.00 : 827d: 00 0.00 : 827e: 48 89 04 24 mov %rax,(%rsp) 0.00 : 8282: e8 b9 d9 ff ff callq 5c40 0.00 : 8287: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 828a: 89 c3 mov %eax,%ebx 0.00 : 828c: 0f 85 d6 fc ff ff jne 7f68 <_dl_map_object+0x3e8> 0.00 : 8292: e9 9f fb ff ff jmpq 7e36 <_dl_map_object+0x2b6> 0.00 : 8297: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 829e: 00 00 0.00 : 82a0: 8b 4c 24 50 mov 0x50(%rsp),%ecx 0.00 : 82a4: 85 c9 test %ecx,%ecx 0.00 : 82a6: 75 4c jne 82f4 <_dl_map_object+0x774> 0.00 : 82a8: 80 bc 24 cf 03 00 00 cmpb $0x0,0x3cf(%rsp) 0.00 : 82af: 00 0.00 : 82b0: 0f 84 53 01 00 00 je 8409 <_dl_map_object+0x889> 0.00 : 82b6: 48 8d 0d 20 18 01 00 lea 0x11820(%rip),%rcx # 19add <__PRETTY_FUNCTION__.12417+0x1db> 0.00 : 82bd: 31 d2 xor %edx,%edx 0.00 : 82bf: 48 89 ee mov %rbp,%rsi 0.00 : 82c2: 31 ff xor %edi,%edi 0.00 : 82c4: e8 37 5c 00 00 callq df00 <_dl_signal_error> 0.00 : 82c9: 48 8b bc 24 c0 03 00 mov 0x3c0(%rsp),%rdi 0.00 : 82d0: 00 0.00 : 82d1: e8 1a 88 ff ff callq af0 0.00 : 82d6: e9 f1 f9 ff ff jmpq 7ccc <_dl_map_object+0x14c> 0.00 : 82db: 4b 8d 44 ed 00 lea 0x0(%r13,%r13,8),%rax 0.00 : 82e0: 48 8d 0d 79 6d 21 00 lea 0x216d79(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 82e7: 48 c1 e0 04 shl $0x4,%rax 0.00 : 82eb: 48 8b 14 01 mov (%rcx,%rax,1),%rdx 0.00 : 82ef: e9 6d fd ff ff jmpq 8061 <_dl_map_object+0x4e1> 0.00 : 82f4: f6 05 26 69 21 00 04 testb $0x4,0x216926(%rip) # 21ec21 <_rtld_global_ro+0x1> 0.00 : 82fb: 75 ab jne 82a8 <_dl_map_object+0x728> 0.00 : 82fd: 48 89 ef mov %rbp,%rdi 0.00 : 8300: e8 db cb ff ff callq 4ee0 0.00 : 8305: 48 85 c0 test %rax,%rax 0.00 : 8308: 49 89 c4 mov %rax,%r12 0.00 : 830b: 0f 84 0f 01 00 00 je 8420 <_dl_map_object+0x8a0> 0.00 : 8311: 44 8b 44 24 4c mov 0x4c(%rsp),%r8d 0.00 : 8316: 8b 54 24 54 mov 0x54(%rsp),%edx 0.00 : 831a: 4d 89 e9 mov %r13,%r9 0.00 : 831d: 4c 89 f1 mov %r14,%rcx 0.00 : 8320: 48 89 ee mov %rbp,%rsi 0.00 : 8323: 48 89 c7 mov %rax,%rdi 0.00 : 8326: e8 45 27 00 00 callq aa70 <_dl_new_object> 0.00 : 832b: 48 85 c0 test %rax,%rax 0.00 : 832e: 48 89 c3 mov %rax,%rbx 0.00 : 8331: 0f 84 e9 00 00 00 je 8420 <_dl_map_object+0x8a0> 0.00 : 8337: 80 88 15 03 00 00 02 orb $0x2,0x315(%rax) 0.00 : 833e: 48 8d 05 8b 46 01 00 lea 0x1468b(%rip),%rax # 1c9d0 0.00 : 8345: c7 83 ec 02 00 00 01 movl $0x1,0x2ec(%rbx) 0.00 : 834c: 00 00 00 0.00 : 834f: 80 8b 14 03 00 00 04 orb $0x4,0x314(%rbx) 0.00 : 8356: 4c 89 ee mov %r13,%rsi 0.00 : 8359: 48 89 df mov %rbx,%rdi 0.00 : 835c: 48 89 83 08 03 00 00 mov %rax,0x308(%rbx) 0.00 : 8363: e8 98 26 00 00 callq aa00 <_dl_add_to_namespace_list> 0.00 : 8368: e9 a7 f8 ff ff jmpq 7c14 <_dl_map_object+0x94> 0.00 : 836d: bb ff ff ff ff mov $0xffffffff,%ebx 0.00 : 8372: e9 f1 fb ff ff jmpq 7f68 <_dl_map_object+0x3e8> 0.00 : 8377: 4b 8d 44 ed 00 lea 0x0(%r13,%r13,8),%rax 0.00 : 837c: 48 8d 0d dd 6c 21 00 lea 0x216cdd(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 8383: 48 c1 e0 04 shl $0x4,%rax 0.00 : 8387: 48 8b 14 01 mov (%rcx,%rax,1),%rdx 0.00 : 838b: e9 97 fb ff ff jmpq 7f27 <_dl_map_object+0x3a7> 0.00 : 8390: 48 8d 3d 49 06 01 00 lea 0x10649(%rip),%rdi # 189e0 0.00 : 8397: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 839c: 4c 89 e6 mov %r12,%rsi 0.00 : 839f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 83a1: 0f 84 ae fc ff ff je 8055 <_dl_map_object+0x4d5> 0.00 : 83a7: 48 8d 3d 3a 06 01 00 lea 0x1063a(%rip),%rdi # 189e8 0.00 : 83ae: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 83b3: 4c 89 e6 mov %r12,%rsi 0.00 : 83b6: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 83b8: 0f 85 5d fb ff ff jne 7f1b <_dl_map_object+0x39b> 0.00 : 83be: e9 92 fc ff ff jmpq 8055 <_dl_map_object+0x4d5> 0.00 : 83c3: 48 8b 15 96 6c 21 00 mov 0x216c96(%rip),%rdx # 21f060 <_rtld_global> 0.00 : 83ca: 48 8d 05 ff 75 21 00 lea 0x2175ff(%rip),%rax # 21f9d0 <_rtld_global+0x970> 0.00 : 83d1: 48 85 d2 test %rdx,%rdx 0.00 : 83d4: 48 0f 44 d0 cmove %rax,%rdx 0.00 : 83d8: e9 31 fb ff ff jmpq 7f0e <_dl_map_object+0x38e> 0.00 : 83dd: 48 8d 3d 94 31 01 00 lea 0x13194(%rip),%rdi # 1b578 <__PRETTY_FUNCTION__.3644+0x1207> 0.00 : 83e4: 4c 89 ea mov %r13,%rdx 0.00 : 83e7: 48 89 ee mov %rbp,%rsi 0.00 : 83ea: 31 c0 xor %eax,%eax 0.00 : 83ec: e8 5f 6f 00 00 callq f350 <_dl_debug_printf> 0.00 : 83f1: e9 29 fa ff ff jmpq 7e1f <_dl_map_object+0x29f> 0.00 : 83f6: 8b 35 54 6a 21 00 mov 0x216a54(%rip),%esi # 21ee50 <__libc_enable_secure> 0.00 : 83fc: 85 f6 test %esi,%esi 0.00 : 83fe: 0f 85 51 fc ff ff jne 8055 <_dl_map_object+0x4d5> 0.00 : 8404: e9 e5 fa ff ff jmpq 7eee <_dl_map_object+0x36e> 0.00 : 8409: 8b 3d 75 7d 21 00 mov 0x217d75(%rip),%edi # 220184 0.00 : 840f: 48 8d 0d 8a 31 01 00 lea 0x1318a(%rip),%rcx # 1b5a0 <__PRETTY_FUNCTION__.3644+0x122f> 0.00 : 8416: 31 d2 xor %edx,%edx 0.00 : 8418: 48 89 ee mov %rbp,%rsi 0.00 : 841b: e8 e0 5a 00 00 callq df00 <_dl_signal_error> 0.00 : 8420: 4c 89 e7 mov %r12,%rdi 0.00 : 8423: e8 c8 86 ff ff callq af0 0.00 : 8428: 48 8d 0d 31 2e 01 00 lea 0x12e31(%rip),%rcx # 1b260 <__PRETTY_FUNCTION__.3644+0xeef> 0.00 : 842f: 31 d2 xor %edx,%edx 0.00 : 8431: 48 89 ee mov %rbp,%rsi 0.00 : 8434: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 8439: e8 c2 5a 00 00 callq df00 <_dl_signal_error> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000009040 <_dl_setup_hash>: 0.00 : 9040: 48 83 ec 08 sub $0x8,%rsp 0.00 : 9044: 48 8b 87 98 02 00 00 mov 0x298(%rdi),%rax 0.00 : 904b: 48 85 c0 test %rax,%rax 0.00 : 904e: 74 62 je 90b2 <_dl_setup_hash+0x72> 0.00 : 9050: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 9054: 8b 02 mov (%rdx),%eax ??:0 100.00 : 9056: 89 87 ec 02 00 00 mov %eax,0x2ec(%rdi) 0.00 : 905c: 8b 4a 08 mov 0x8(%rdx),%ecx 0.00 : 905f: 8b 72 04 mov 0x4(%rdx),%esi 0.00 : 9062: 8d 41 ff lea -0x1(%rcx),%eax 0.00 : 9065: 85 c8 test %ecx,%eax 0.00 : 9067: 75 76 jne 90df <_dl_setup_hash+0x9f> 0.00 : 9069: 89 87 f0 02 00 00 mov %eax,0x2f0(%rdi) 0.00 : 906f: 8b 42 0c mov 0xc(%rdx),%eax 0.00 : 9072: 48 83 c2 10 add $0x10,%rdx 0.00 : 9076: 48 89 97 f8 02 00 00 mov %rdx,0x2f8(%rdi) 0.00 : 907d: 89 87 f4 02 00 00 mov %eax,0x2f4(%rdi) 0.00 : 9083: 8d 04 09 lea (%rcx,%rcx,1),%eax 0.00 : 9086: 89 c0 mov %eax,%eax 0.00 : 9088: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 908c: 8b 97 ec 02 00 00 mov 0x2ec(%rdi),%edx 0.00 : 9092: 48 89 87 00 03 00 00 mov %rax,0x300(%rdi) 0.00 : 9099: 48 8d 14 90 lea (%rax,%rdx,4),%rdx 0.00 : 909d: 89 f0 mov %esi,%eax 0.00 : 909f: 48 c1 e0 02 shl $0x2,%rax 0.00 : 90a3: 48 29 c2 sub %rax,%rdx 0.00 : 90a6: 48 89 97 08 03 00 00 mov %rdx,0x308(%rdi) 0.00 : 90ad: 48 83 c4 08 add $0x8,%rsp 0.00 : 90b1: c3 retq 0.00 : 90b2: 48 8b 47 60 mov 0x60(%rdi),%rax 0.00 : 90b6: 48 85 c0 test %rax,%rax 0.00 : 90b9: 74 f2 je 90ad <_dl_setup_hash+0x6d> 0.00 : 90bb: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 90bf: 8b 02 mov (%rdx),%eax 0.00 : 90c1: 48 83 c2 08 add $0x8,%rdx 0.00 : 90c5: 48 89 97 08 03 00 00 mov %rdx,0x308(%rdi) 0.00 : 90cc: 89 87 ec 02 00 00 mov %eax,0x2ec(%rdi) 0.00 : 90d2: 48 8d 04 82 lea (%rdx,%rax,4),%rax 0.00 : 90d6: 48 89 87 00 03 00 00 mov %rax,0x300(%rdi) 0.00 : 90dd: eb ce jmp 90ad <_dl_setup_hash+0x6d> 0.00 : 90df: 48 8d 0d d2 0b 01 00 lea 0x10bd2(%rip),%rcx # 19cb8 <__PRETTY_FUNCTION__.12775> 0.00 : 90e6: 48 8d 35 e7 0a 01 00 lea 0x10ae7(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : 90ed: 48 8d 3d ec 24 01 00 lea 0x124ec(%rip),%rdi # 1b5e0 <__PRETTY_FUNCTION__.3644+0x126f> 0.00 : 90f4: ba 6d 03 00 00 mov $0x36d,%edx 0.00 : 90f9: e8 72 bc 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000092c0 : 0.00 : 92c0: 41 57 push %r15 0.00 : 92c2: 49 89 f3 mov %rsi,%r11 0.00 : 92c5: 41 56 push %r14 0.00 : 92c7: 41 55 push %r13 0.00 : 92c9: 41 54 push %r12 0.00 : 92cb: 55 push %rbp 0.00 : 92cc: 53 push %rbx 0.00 : 92cd: 48 81 ec a8 00 00 00 sub $0xa8,%rsp 0.00 : 92d4: 48 8b 84 24 e8 00 00 mov 0xe8(%rsp),%rax 0.00 : 92db: 00 0.00 : 92dc: 48 89 54 24 30 mov %rdx,0x30(%rsp) 0.00 : 92e1: 4c 89 44 24 28 mov %r8,0x28(%rsp) 0.00 : 92e6: 48 89 7c 24 78 mov %rdi,0x78(%rsp) 0.00 : 92eb: 48 89 8c 24 88 00 00 mov %rcx,0x88(%rsp) 0.00 : 92f2: 00 0.00 : 92f3: 48 8b ac 24 e0 00 00 mov 0xe0(%rsp),%rbp 0.00 : 92fa: 00 0.00 : 92fb: 48 89 44 24 68 mov %rax,0x68(%rsp) 0.00 : 9300: 8b 84 24 f0 00 00 00 mov 0xf0(%rsp),%eax 0.00 : 9307: 4c 8b ac 24 f8 00 00 mov 0xf8(%rsp),%r13 0.00 : 930e: 00 0.00 : 930f: 89 84 24 94 00 00 00 mov %eax,0x94(%rsp) 0.00 : 9316: 8b 84 24 00 01 00 00 mov 0x100(%rsp),%eax 0.00 : 931d: 89 84 24 9c 00 00 00 mov %eax,0x9c(%rsp) 0.00 : 9324: 45 8b 61 08 mov 0x8(%r9),%r12d 0.00 : 9328: 48 8d 44 24 60 lea 0x60(%rsp),%rax 0.00 : 932d: 49 89 f6 mov %rsi,%r14 0.00 : 9330: 41 89 f7 mov %esi,%r15d 0.00 : 9333: 48 8d 1c ed 00 00 00 lea 0x0(,%rbp,8),%rbx 0.00 : 933a: 00 0.00 : 933b: 49 c1 ee 06 shr $0x6,%r14 0.00 : 933f: 49 03 19 add (%r9),%rbx 0.00 : 9342: 41 83 e7 3f and $0x3f,%r15d 0.00 : 9346: 48 89 44 24 20 mov %rax,0x20(%rsp) 0.00 : 934b: eb 14 jmp 9361 0.00 : 934d: 0f 1f 00 nopl (%rax) 0.00 : 9350: 48 83 c5 01 add $0x1,%rbp 0.00 : 9354: 48 83 c3 08 add $0x8,%rbx 0.00 : 9358: 49 39 ec cmp %rbp,%r12 0.00 : 935b: 0f 86 1f 01 00 00 jbe 9480 0.00 : 9361: c7 84 24 90 00 00 00 movl $0x0,0x90(%rsp) 0.00 : 9368: 00 00 00 00 0.00 : 936c: 48 c7 44 24 60 00 00 movq $0x0,0x60(%rsp) 0.00 : 9373: 00 00 0.00 : 9375: 48 8b 03 mov (%rbx),%rax 0.00 : 9378: 48 8b 40 28 mov 0x28(%rax),%rax 0.00 : 937c: 4c 39 e8 cmp %r13,%rax 0.00 : 937f: 48 89 44 24 70 mov %rax,0x70(%rsp) 0.00 : 9384: 74 ca je 9350 0.00 : 9386: f6 84 24 9c 00 00 00 testb $0x2,0x9c(%rsp) 0.00 : 938d: 02 0.00 : 938e: 74 09 je 9399 0.00 : 9390: f6 80 14 03 00 00 03 testb $0x3,0x314(%rax) 0.00 : 9397: 74 b7 je 9350 0.00 : 9399: f6 80 15 03 00 00 20 testb $0x20,0x315(%rax) 0.00 : 93a0: 75 ae jne 9350 0.00 : 93a2: f6 05 77 58 21 00 08 testb $0x8,0x215877(%rip) # 21ec20 <_rtld_global_ro> 0.00 : 93a9: 0f 85 bf 04 00 00 jne 986e 0.00 : 93af: 48 8b 74 24 70 mov 0x70(%rsp),%rsi 0.00 : 93b4: 8b be ec 02 00 00 mov 0x2ec(%rsi),%edi 0.00 : 93ba: 85 ff test %edi,%edi 0.00 : 93bc: 74 92 je 9350 0.00 : 93be: 48 8b 46 70 mov 0x70(%rsi),%rax 0.00 : 93c2: 4c 8b 48 08 mov 0x8(%rax),%r9 0.00 : 93c6: 48 8b 46 68 mov 0x68(%rsi),%rax 0.00 : 93ca: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 93ce: 48 89 84 24 80 00 00 mov %rax,0x80(%rsp) 0.00 : 93d5: 00 0.00 : 93d6: 48 8b 96 f8 02 00 00 mov 0x2f8(%rsi),%rdx 0.00 : 93dd: 48 85 d2 test %rdx,%rdx 0.00 : 93e0: 0f 84 0e 05 00 00 je 98f4 0.00 : 93e6: 8b 86 f0 02 00 00 mov 0x2f0(%rsi),%eax 0.00 : 93ec: 8b 8e f4 02 00 00 mov 0x2f4(%rsi),%ecx 0.00 : 93f2: 44 21 f0 and %r14d,%eax 0.00 : 93f5: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx ??:0 100.00 : 93f9: 4c 89 d8 mov %r11,%rax 0.00 : 93fc: 48 d3 e8 shr %cl,%rax 0.00 : 93ff: 48 89 c1 mov %rax,%rcx 0.00 : 9402: 83 e1 3f and $0x3f,%ecx 0.00 : 9405: 48 89 d0 mov %rdx,%rax 0.00 : 9408: 48 d3 e8 shr %cl,%rax 0.00 : 940b: 44 89 f9 mov %r15d,%ecx 0.00 : 940e: 48 d3 ea shr %cl,%rdx 0.00 : 9411: 48 21 d0 and %rdx,%rax 0.00 : 9414: a8 01 test $0x1,%al 0.00 : 9416: 0f 85 78 05 00 00 jne 9994 0.00 : 941c: c7 84 24 98 00 00 00 movl $0x0,0x98(%rsp) 0.00 : 9423: 00 00 00 00 0.00 : 9427: 83 bc 24 90 00 00 00 cmpl $0x1,0x90(%rsp) 0.00 : 942e: 01 0.00 : 942f: 74 67 je 9498 0.00 : 9431: 8b 94 24 98 00 00 00 mov 0x98(%rsp),%edx 0.00 : 9438: 85 d2 test %edx,%edx 0.00 : 943a: 0f 85 10 ff ff ff jne 9350 0.00 : 9440: 48 8b 44 24 68 mov 0x68(%rsp),%rax 0.00 : 9445: 48 85 c0 test %rax,%rax 0.00 : 9448: 0f 84 02 ff ff ff je 9350 0.00 : 944e: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 9452: 48 85 ff test %rdi,%rdi 0.00 : 9455: 0f 84 f5 fe ff ff je 9350 0.00 : 945b: 48 8b 74 24 70 mov 0x70(%rsp),%rsi 0.00 : 9460: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9465: e8 16 57 00 00 callq eb80 <_dl_name_match_p> 0.00 : 946a: 85 c0 test %eax,%eax 0.00 : 946c: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 9471: 0f 84 d9 fe ff ff je 9350 0.00 : 9477: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 947c: eb 04 jmp 9482 0.00 : 947e: 66 90 xchg %ax,%ax 0.00 : 9480: 31 c0 xor %eax,%eax 0.00 : 9482: 48 81 c4 a8 00 00 00 add $0xa8,%rsp 0.00 : 9489: 5b pop %rbx 0.00 : 948a: 5d pop %rbp 0.00 : 948b: 41 5c pop %r12 0.00 : 948d: 41 5d pop %r13 0.00 : 948f: 41 5e pop %r14 0.00 : 9491: 41 5f pop %r15 0.00 : 9493: c3 retq 0.00 : 9494: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 9498: 48 8b 54 24 60 mov 0x60(%rsp),%rdx 0.00 : 949d: 48 85 d2 test %rdx,%rdx 0.00 : 94a0: 48 89 54 24 48 mov %rdx,0x48(%rsp) 0.00 : 94a5: 74 8a je 9431 0.00 : 94a7: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx 0.00 : 94ac: 0f b6 41 04 movzbl 0x4(%rcx),%eax 0.00 : 94b0: c0 e8 04 shr $0x4,%al 0.00 : 94b3: 3c 02 cmp $0x2,%al 0.00 : 94b5: 0f 84 75 01 00 00 je 9630 0.00 : 94bb: 3c 0a cmp $0xa,%al 0.00 : 94bd: 74 31 je 94f0 0.00 : 94bf: 2c 01 sub $0x1,%al 0.00 : 94c1: 0f 85 6a ff ff ff jne 9431 0.00 : 94c7: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 94cc: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 94d1: 48 89 10 mov %rdx,(%rax) 0.00 : 94d4: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.00 : 94d9: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 94de: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 94e2: b8 01 00 00 00 mov $0x1,%eax 0.00 : 94e7: eb 99 jmp 9482 0.00 : 94e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 94f0: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.00 : 94f5: 48 8d 2d 6c 5b 21 00 lea 0x215b6c(%rip),%rbp # 21f068 <_rtld_global+0x8> 0.00 : 94fc: 48 8b 40 30 mov 0x30(%rax),%rax 0.00 : 9500: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9505: 48 8d 1c c0 lea (%rax,%rax,8),%rbx 0.00 : 9509: 48 89 44 24 58 mov %rax,0x58(%rsp) 0.00 : 950e: 48 8d 05 4b 5b 21 00 lea 0x215b4b(%rip),%rax # 21f060 <_rtld_global> 0.00 : 9515: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 9519: 48 8d 44 18 20 lea 0x20(%rax,%rbx,1),%rax 0.00 : 951e: 48 01 dd add %rbx,%rbp 0.00 : 9521: 48 89 44 24 40 mov %rax,0x40(%rsp) 0.00 : 9526: 48 89 c7 mov %rax,%rdi 0.00 : 9529: ff 15 11 6a 21 00 callq *0x216a11(%rip) # 21ff40 <_rtld_global+0xee0> 0.00 : 952f: 48 8b 55 40 mov 0x40(%rbp),%rdx 0.00 : 9533: 48 8d 0d 26 5b 21 00 lea 0x215b26(%rip),%rcx # 21f060 <_rtld_global> 0.00 : 953a: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 953f: 48 8d 1c 19 lea (%rcx,%rbx,1),%rbx 0.00 : 9543: 48 85 d2 test %rdx,%rdx 0.00 : 9546: 48 89 54 24 50 mov %rdx,0x50(%rsp) 0.00 : 954b: 4c 8b 73 50 mov 0x50(%rbx),%r14 0.00 : 954f: 0f 84 bb 02 00 00 je 9810 0.00 : 9555: 4c 89 d8 mov %r11,%rax 0.00 : 9558: 31 d2 xor %edx,%edx 0.00 : 955a: 49 8d 76 fe lea -0x2(%r14),%rsi 0.00 : 955e: 49 f7 f6 div %r14 0.00 : 9561: 4c 89 d8 mov %r11,%rax 0.00 : 9564: 48 89 d1 mov %rdx,%rcx 0.00 : 9567: 31 d2 xor %edx,%edx 0.00 : 9569: 48 f7 f6 div %rsi 0.00 : 956c: 4c 8d 6a 01 lea 0x1(%rdx),%r13 0.00 : 9570: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 9575: 4d 89 ef mov %r13,%r15 0.00 : 9578: 48 89 54 24 38 mov %rdx,0x38(%rsp) 0.00 : 957d: 49 c1 e7 05 shl $0x5,%r15 0.00 : 9581: 48 8b 6c 24 50 mov 0x50(%rsp),%rbp 0.00 : 9586: 4d 8d 64 0d 00 lea 0x0(%r13,%rcx,1),%r12 0.00 : 958b: 48 c1 e1 05 shl $0x5,%rcx 0.00 : 958f: 48 01 cd add %rcx,%rbp 0.00 : 9592: eb 26 jmp 95ba 0.00 : 9594: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 9598: 48 8b 5d 08 mov 0x8(%rbp),%rbx 0.00 : 959c: 48 85 db test %rbx,%rbx 0.00 : 959f: 0f 84 cb 00 00 00 je 9670 0.00 : 95a5: 4b 8d 14 2c lea (%r12,%r13,1),%rdx 0.00 : 95a9: 4c 01 fd add %r15,%rbp 0.00 : 95ac: 48 89 d0 mov %rdx,%rax 0.00 : 95af: 4c 29 e8 sub %r13,%rax 0.00 : 95b2: 49 39 c6 cmp %rax,%r14 0.00 : 95b5: 76 69 jbe 9620 0.00 : 95b7: 49 89 d4 mov %rdx,%r12 0.00 : 95ba: 8b 45 00 mov 0x0(%rbp),%eax 0.00 : 95bd: 4c 39 d8 cmp %r11,%rax 0.00 : 95c0: 75 d6 jne 9598 0.00 : 95c2: 48 8b 5d 08 mov 0x8(%rbp),%rbx 0.00 : 95c6: 48 8b 74 24 38 mov 0x38(%rsp),%rsi 0.00 : 95cb: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 95d0: 48 89 df mov %rbx,%rdi 0.00 : 95d3: e8 88 d0 00 00 callq 16660 0.00 : 95d8: 85 c0 test %eax,%eax 0.00 : 95da: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 95df: 75 bb jne 959c 0.00 : 95e1: f6 84 24 9c 00 00 00 testb $0x2,0x9c(%rsp) 0.00 : 95e8: 02 0.00 : 95e9: 0f 84 ec 02 00 00 je 98db 0.00 : 95ef: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 95f4: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 95f9: 48 89 01 mov %rax,(%rcx) 0.00 : 95fc: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.00 : 9601: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 9605: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 960a: ff 15 38 69 21 00 callq *0x216938(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : 9610: b8 01 00 00 00 mov $0x1,%eax 0.00 : 9615: e9 68 fe ff ff jmpq 9482 0.00 : 961a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 9620: 4c 89 e1 mov %r12,%rcx 0.00 : 9623: 4c 29 f1 sub %r14,%rcx 0.00 : 9626: e9 56 ff ff ff jmpq 9581 0.00 : 962b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 9630: 8b 0d 32 56 21 00 mov 0x215632(%rip),%ecx # 21ec68 <_rtld_global_ro+0x48> 0.00 : 9636: 85 c9 test %ecx,%ecx 0.00 : 9638: 0f 84 89 fe ff ff je 94c7 0.00 : 963e: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 9643: 48 83 38 00 cmpq $0x0,(%rax) 0.00 : 9647: 0f 85 e4 fd ff ff jne 9431 0.00 : 964d: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 9652: 48 89 10 mov %rdx,(%rax) 0.00 : 9655: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.00 : 965a: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 965f: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 9663: e9 c9 fd ff ff jmpq 9431 0.00 : 9668: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 966f: 00 0.00 : 9670: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 9675: 4b 8d 04 76 lea (%r14,%r14,2),%rax 0.00 : 9679: 48 8d 14 c9 lea (%rcx,%rcx,8),%rdx 0.00 : 967d: 48 8d 0d e4 59 21 00 lea 0x2159e4(%rip),%rcx # 21f068 <_rtld_global+0x8> 0.00 : 9684: 48 c1 e2 04 shl $0x4,%rdx 0.00 : 9688: 48 8b 54 11 50 mov 0x50(%rcx,%rdx,1),%rdx 0.00 : 968d: 48 c1 e2 02 shl $0x2,%rdx 0.00 : 9691: 48 39 d0 cmp %rdx,%rax 0.00 : 9694: 0f 87 d3 00 00 00 ja 976d 0.00 : 969a: 64 8b 04 25 4c 00 00 mov %fs:0x4c,%eax 0.00 : 96a1: 00 0.00 : 96a2: 85 c0 test %eax,%eax 0.00 : 96a4: 0f 85 9e 04 00 00 jne 9b48 0.00 : 96aa: 49 8d 7e 01 lea 0x1(%r14),%rdi 0.00 : 96ae: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 96b3: e8 48 54 00 00 callq eb00 <_dl_higher_prime_number> 0.00 : 96b8: bf 20 00 00 00 mov $0x20,%edi 0.00 : 96bd: 48 89 c6 mov %rax,%rsi 0.00 : 96c0: 49 89 c7 mov %rax,%r15 0.00 : 96c3: e8 08 74 ff ff callq ad0 0.00 : 96c8: 48 85 c0 test %rax,%rax 0.00 : 96cb: 49 89 c5 mov %rax,%r13 0.00 : 96ce: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 96d3: 0f 84 da 01 00 00 je 98b3 0.00 : 96d9: 31 ed xor %ebp,%ebp 0.00 : 96db: 4d 85 f6 test %r14,%r14 0.00 : 96de: 48 8b 5c 24 50 mov 0x50(%rsp),%rbx 0.00 : 96e3: 74 38 je 971d 0.00 : 96e5: 0f 1f 00 nopl (%rax) 0.00 : 96e8: 48 8b 4b 08 mov 0x8(%rbx),%rcx 0.00 : 96ec: 48 85 c9 test %rcx,%rcx 0.00 : 96ef: 74 1f je 9710 0.00 : 96f1: 4c 8b 4b 18 mov 0x18(%rbx),%r9 0.00 : 96f5: 4c 8b 43 10 mov 0x10(%rbx),%r8 0.00 : 96f9: 4c 89 fe mov %r15,%rsi 0.00 : 96fc: 8b 13 mov (%rbx),%edx 0.00 : 96fe: 4c 89 ef mov %r13,%rdi 0.00 : 9701: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9706: e8 a5 f8 ff ff callq 8fb0 0.00 : 970b: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 9710: 48 83 c5 01 add $0x1,%rbp 0.00 : 9714: 48 83 c3 20 add $0x20,%rbx 0.00 : 9718: 49 39 ee cmp %rbp,%r14 0.00 : 971b: 77 cb ja 96e8 0.00 : 971d: 48 8b 44 24 58 mov 0x58(%rsp),%rax 0.00 : 9722: 4c 8d 25 37 59 21 00 lea 0x215937(%rip),%r12 # 21f060 <_rtld_global> 0.00 : 9729: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 972e: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 9733: 4d 89 fe mov %r15,%r14 0.00 : 9736: 48 8d 1c c0 lea (%rax,%rax,8),%rbx 0.00 : 973a: 48 c1 e3 04 shl $0x4,%rbx 0.00 : 973e: 49 01 dc add %rbx,%r12 0.00 : 9741: 41 ff 54 24 60 callq *0x60(%r12) 0.00 : 9746: 48 8b 05 ab 58 21 00 mov 0x2158ab(%rip),%rax # 21eff8 <_DYNAMIC+0x188> 0.00 : 974d: 48 8d 15 14 59 21 00 lea 0x215914(%rip),%rdx # 21f068 <_rtld_global+0x8> 0.00 : 9754: 4d 89 7c 24 50 mov %r15,0x50(%r12) 0.00 : 9759: 4c 89 6c 1a 40 mov %r13,0x40(%rdx,%rbx,1) 0.00 : 975e: 49 89 44 24 60 mov %rax,0x60(%r12) 0.00 : 9763: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 9768: 4c 89 6c 24 50 mov %r13,0x50(%rsp) 0.00 : 976d: f6 84 24 9c 00 00 00 testb $0x2,0x9c(%rsp) 0.00 : 9774: 02 0.00 : 9775: 75 68 jne 97df 0.00 : 9777: 48 8b 54 24 48 mov 0x48(%rsp),%rdx 0.00 : 977c: 4c 8b 4c 24 70 mov 0x70(%rsp),%r9 0.00 : 9781: 4c 89 f6 mov %r14,%rsi 0.00 : 9784: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 9789: 8b 0a mov (%rdx),%ecx 0.00 : 978b: 49 89 d0 mov %rdx,%r8 0.00 : 978e: 44 89 da mov %r11d,%edx 0.00 : 9791: 48 03 8c 24 80 00 00 add 0x80(%rsp),%rcx 0.00 : 9798: 00 0.00 : 9799: e8 12 f8 ff ff callq 8fb0 0.00 : 979e: 48 8b 54 24 70 mov 0x70(%rsp),%rdx 0.00 : 97a3: 0f b6 82 14 03 00 00 movzbl 0x314(%rdx),%eax 0.00 : 97aa: 83 e0 03 and $0x3,%eax 0.00 : 97ad: 3c 02 cmp $0x2,%al 0.00 : 97af: 0f 84 f2 00 00 00 je 98a7 0.00 : 97b5: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx 0.00 : 97ba: 48 8d 15 a7 58 21 00 lea 0x2158a7(%rip),%rdx # 21f068 <_rtld_global+0x8> 0.00 : 97c1: 48 8d 04 c9 lea (%rcx,%rcx,8),%rax 0.00 : 97c5: 48 c1 e0 04 shl $0x4,%rax 0.00 : 97c9: 48 83 44 02 50 01 addq $0x1,0x50(%rdx,%rax,1) 0.00 : 97cf: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 97d4: ff 15 6e 67 21 00 callq *0x21676e(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : 97da: e9 e8 fc ff ff jmpq 94c7 0.00 : 97df: 48 8b 44 24 48 mov 0x48(%rsp),%rax 0.00 : 97e4: 4c 8b 8c 24 08 01 00 mov 0x108(%rsp),%r9 0.00 : 97eb: 00 0.00 : 97ec: 44 89 da mov %r11d,%edx 0.00 : 97ef: 4c 8b 84 24 88 00 00 mov 0x88(%rsp),%r8 0.00 : 97f6: 00 0.00 : 97f7: 48 8b 7c 24 50 mov 0x50(%rsp),%rdi 0.00 : 97fc: 4c 89 f6 mov %r14,%rsi 0.00 : 97ff: 8b 08 mov (%rax),%ecx 0.00 : 9801: 48 03 8c 24 80 00 00 add 0x80(%rsp),%rcx 0.00 : 9808: 00 0.00 : 9809: e8 a2 f7 ff ff callq 8fb0 0.00 : 980e: eb a5 jmp 97b5 0.00 : 9810: 64 8b 04 25 4c 00 00 mov %fs:0x4c,%eax 0.00 : 9817: 00 0.00 : 9818: 85 c0 test %eax,%eax 0.00 : 981a: 0f 85 09 03 00 00 jne 9b29 0.00 : 9820: 4d 85 f6 test %r14,%r14 0.00 : 9823: 0f 85 d4 02 00 00 jne 9afd 0.00 : 9829: be 1f 00 00 00 mov $0x1f,%esi 0.00 : 982e: bf 20 00 00 00 mov $0x20,%edi 0.00 : 9833: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9838: e8 93 72 ff ff callq ad0 0.00 : 983d: 48 85 c0 test %rax,%rax 0.00 : 9840: 48 89 44 24 50 mov %rax,0x50(%rsp) 0.00 : 9845: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 984a: 74 67 je 98b3 0.00 : 984c: 48 89 45 40 mov %rax,0x40(%rbp) 0.00 : 9850: 48 8b 05 a1 57 21 00 mov 0x2157a1(%rip),%rax # 21eff8 <_DYNAMIC+0x188> 0.00 : 9857: 41 be 1f 00 00 00 mov $0x1f,%r14d 0.00 : 985d: 48 c7 43 50 1f 00 00 movq $0x1f,0x50(%rbx) 0.00 : 9864: 00 0.00 : 9865: 48 89 43 60 mov %rax,0x60(%rbx) 0.00 : 9869: e9 ff fe ff ff jmpq 976d 0.00 : 986e: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 9872: 48 8b 48 30 mov 0x30(%rax),%rcx 0.00 : 9876: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 9879: 75 0a jne 9885 0.00 : 987b: 48 8b 05 86 53 21 00 mov 0x215386(%rip),%rax # 21ec08 <_dl_argv> 0.00 : 9882: 48 8b 10 mov (%rax),%rdx 0.00 : 9885: 48 8b 74 24 78 mov 0x78(%rsp),%rsi 0.00 : 988a: 48 8d 3d cf 1d 01 00 lea 0x11dcf(%rip),%rdi # 1b660 <__PRETTY_FUNCTION__.3644+0x12ef> 0.00 : 9891: 31 c0 xor %eax,%eax 0.00 : 9893: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9898: e8 b3 5a 00 00 callq f350 <_dl_debug_printf> 0.00 : 989d: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 98a2: e9 08 fb ff ff jmpq 93af 0.00 : 98a7: 83 8a dc 03 00 00 08 orl $0x8,0x3dc(%rdx) 0.00 : 98ae: e9 02 ff ff ff jmpq 97b5 0.00 : 98b3: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi 0.00 : 98b8: ff 15 8a 66 21 00 callq *0x21668a(%rip) # 21ff48 <_rtld_global+0xee8> 0.00 : 98be: 48 8d 35 7f fe 00 00 lea 0xfe7f(%rip),%rsi # 19744 0.00 : 98c5: bf 02 00 00 00 mov $0x2,%edi 0.00 : 98ca: 31 c0 xor %eax,%eax 0.00 : 98cc: e8 2f 59 00 00 callq f200 <_dl_dprintf> 0.00 : 98d1: bf 7f 00 00 00 mov $0x7f,%edi 0.00 : 98d6: e8 e5 c9 00 00 callq 162c0 <_Exit> 0.00 : 98db: 48 8b 45 10 mov 0x10(%rbp),%rax 0.00 : 98df: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 98e4: 48 89 02 mov %rax,(%rdx) 0.00 : 98e7: 48 8b 45 18 mov 0x18(%rbp),%rax 0.00 : 98eb: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 98ef: e9 11 fd ff ff jmpq 9605 0.00 : 98f4: 48 8b 54 24 30 mov 0x30(%rsp),%rdx 0.00 : 98f9: b9 ff ff ff ff mov $0xffffffff,%ecx 0.00 : 98fe: 48 8b 3a mov (%rdx),%rdi 0.00 : 9901: 48 39 cf cmp %rcx,%rdi 0.00 : 9904: 0f 84 41 01 00 00 je 9a4b 0.00 : 990a: 8b 8e ec 02 00 00 mov 0x2ec(%rsi),%ecx 0.00 : 9910: 31 d2 xor %edx,%edx 0.00 : 9912: 48 89 f8 mov %rdi,%rax 0.00 : 9915: 48 f7 f1 div %rcx 0.00 : 9918: 48 8b 86 08 03 00 00 mov 0x308(%rsi),%rax 0.00 : 991f: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 9922: 85 c0 test %eax,%eax 0.00 : 9924: 89 84 24 98 00 00 00 mov %eax,0x98(%rsp) 0.00 : 992b: 75 30 jne 995d 0.00 : 992d: e9 f5 fa ff ff jmpq 9427 0.00 : 9932: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 9938: 48 8b 54 24 70 mov 0x70(%rsp),%rdx 0.00 : 993d: 8b 84 24 98 00 00 00 mov 0x98(%rsp),%eax 0.00 : 9944: 48 8b 92 00 03 00 00 mov 0x300(%rdx),%rdx 0.00 : 994b: 8b 04 82 mov (%rdx,%rax,4),%eax 0.00 : 994e: 85 c0 test %eax,%eax 0.00 : 9950: 89 84 24 98 00 00 00 mov %eax,0x98(%rsp) 0.00 : 9957: 0f 84 ca fa ff ff je 9427 0.00 : 995d: 89 c7 mov %eax,%edi 0.00 : 995f: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 0.00 : 9964: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : 9969: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi 0.00 : 996d: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9972: 49 8d 3c f9 lea (%r9,%rdi,8),%rdi 0.00 : 9976: e8 85 f7 ff ff callq 9100 0.00 : 997b: 48 85 c0 test %rax,%rax 0.00 : 997e: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.00 : 9983: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : 9988: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 998d: 74 a9 je 9938 0.00 : 998f: e9 13 fb ff ff jmpq 94a7 0.00 : 9994: 8b 8e ec 02 00 00 mov 0x2ec(%rsi),%ecx 0.00 : 999a: 31 d2 xor %edx,%edx 0.00 : 999c: 4c 89 d8 mov %r11,%rax 0.00 : 999f: 48 f7 f1 div %rcx 0.00 : 99a2: 48 8b 86 00 03 00 00 mov 0x300(%rsi),%rax 0.00 : 99a9: 8b 04 90 mov (%rax,%rdx,4),%eax 0.00 : 99ac: 85 c0 test %eax,%eax 0.00 : 99ae: 0f 84 68 fa ff ff je 941c 0.00 : 99b4: 89 c0 mov %eax,%eax 0.00 : 99b6: 4c 8d 04 85 00 00 00 lea 0x0(,%rax,4),%r8 0.00 : 99bd: 00 0.00 : 99be: 4c 03 86 08 03 00 00 add 0x308(%rsi),%r8 0.00 : 99c5: 41 8b 10 mov (%r8),%edx 0.00 : 99c8: 89 d0 mov %edx,%eax 0.00 : 99ca: 4c 31 d8 xor %r11,%rax 0.00 : 99cd: 48 d1 e8 shr %rax 0.00 : 99d0: 74 1a je 99ec 0.00 : 99d2: 83 e2 01 and $0x1,%edx 0.00 : 99d5: 0f 85 41 fa ff ff jne 941c 0.00 : 99db: 49 83 c0 04 add $0x4,%r8 0.00 : 99df: 41 8b 10 mov (%r8),%edx 0.00 : 99e2: 89 d0 mov %edx,%eax 0.00 : 99e4: 4c 31 d8 xor %r11,%rax 0.00 : 99e7: 48 d1 e8 shr %rax 0.00 : 99ea: 75 e6 jne 99d2 0.00 : 99ec: 48 8b 44 24 70 mov 0x70(%rsp),%rax 0.00 : 99f1: 4c 89 c7 mov %r8,%rdi 0.00 : 99f4: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 0.00 : 99f9: 48 2b b8 08 03 00 00 sub 0x308(%rax),%rdi 0.00 : 9a00: 4c 89 44 24 18 mov %r8,0x18(%rsp) 0.00 : 9a05: 4c 89 4c 24 10 mov %r9,0x10(%rsp) 0.00 : 9a0a: 4c 89 5c 24 08 mov %r11,0x8(%rsp) 0.00 : 9a0f: 48 c1 ff 02 sar $0x2,%rdi 0.00 : 9a13: 89 bc 24 98 00 00 00 mov %edi,0x98(%rsp) 0.00 : 9a1a: 89 ff mov %edi,%edi 0.00 : 9a1c: 48 8d 3c 7f lea (%rdi,%rdi,2),%rdi 0.00 : 9a20: 49 8d 3c f9 lea (%r9,%rdi,8),%rdi 0.00 : 9a24: e8 d7 f6 ff ff callq 9100 0.00 : 9a29: 48 85 c0 test %rax,%rax 0.00 : 9a2c: 48 89 44 24 48 mov %rax,0x48(%rsp) 0.00 : 9a31: 4c 8b 44 24 18 mov 0x18(%rsp),%r8 0.00 : 9a36: 4c 8b 4c 24 10 mov 0x10(%rsp),%r9 0.00 : 9a3b: 4c 8b 5c 24 08 mov 0x8(%rsp),%r11 0.00 : 9a40: 0f 85 61 fa ff ff jne 94a7 0.00 : 9a46: 41 8b 10 mov (%r8),%edx 0.00 : 9a49: eb 87 jmp 99d2 0.00 : 9a4b: 48 8b 54 24 78 mov 0x78(%rsp),%rdx 0.00 : 9a50: 31 ff xor %edi,%edi 0.00 : 9a52: 0f b6 02 movzbl (%rdx),%eax 0.00 : 9a55: 84 c0 test %al,%al 0.00 : 9a57: 0f 84 93 00 00 00 je 9af0 0.00 : 9a5d: 0f b6 c8 movzbl %al,%ecx 0.00 : 9a60: 0f b6 42 01 movzbl 0x1(%rdx),%eax 0.00 : 9a64: 89 cf mov %ecx,%edi 0.00 : 9a66: 84 c0 test %al,%al 0.00 : 9a68: 0f 84 82 00 00 00 je 9af0 0.00 : 9a6e: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 9a72: 0f b6 c0 movzbl %al,%eax 0.00 : 9a75: 48 8d 0c 08 lea (%rax,%rcx,1),%rcx 0.00 : 9a79: 0f b6 42 02 movzbl 0x2(%rdx),%eax 0.00 : 9a7d: 89 cf mov %ecx,%edi 0.00 : 9a7f: 84 c0 test %al,%al 0.00 : 9a81: 74 6d je 9af0 0.00 : 9a83: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 9a87: 0f b6 c0 movzbl %al,%eax 0.00 : 9a8a: 48 01 c1 add %rax,%rcx 0.00 : 9a8d: 0f b6 42 03 movzbl 0x3(%rdx),%eax 0.00 : 9a91: 89 cf mov %ecx,%edi 0.00 : 9a93: 84 c0 test %al,%al 0.00 : 9a95: 74 59 je 9af0 0.00 : 9a97: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 9a9b: 0f b6 c0 movzbl %al,%eax 0.00 : 9a9e: 48 01 c1 add %rax,%rcx 0.00 : 9aa1: 0f b6 42 04 movzbl 0x4(%rdx),%eax 0.00 : 9aa5: 89 cf mov %ecx,%edi 0.00 : 9aa7: 84 c0 test %al,%al 0.00 : 9aa9: 74 45 je 9af0 0.00 : 9aab: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 9aaf: 0f b6 c0 movzbl %al,%eax 0.00 : 9ab2: 4c 8d 42 05 lea 0x5(%rdx),%r8 0.00 : 9ab6: 48 01 c1 add %rax,%rcx 0.00 : 9ab9: 0f b6 42 05 movzbl 0x5(%rdx),%eax 0.00 : 9abd: 89 cf mov %ecx,%edi 0.00 : 9abf: 84 c0 test %al,%al 0.00 : 9ac1: 74 2d je 9af0 0.00 : 9ac3: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 9ac7: 0f b6 d0 movzbl %al,%edx 0.00 : 9aca: 49 83 c0 01 add $0x1,%r8 0.00 : 9ace: 48 01 ca add %rcx,%rdx 0.00 : 9ad1: 48 89 d0 mov %rdx,%rax 0.00 : 9ad4: 25 00 00 00 f0 and $0xf0000000,%eax 0.00 : 9ad9: 48 89 c1 mov %rax,%rcx 0.00 : 9adc: 48 c1 e8 18 shr $0x18,%rax 0.00 : 9ae0: 48 31 d1 xor %rdx,%rcx 0.00 : 9ae3: 48 31 c1 xor %rax,%rcx 0.00 : 9ae6: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 9aea: 84 c0 test %al,%al 0.00 : 9aec: 75 d5 jne 9ac3 0.00 : 9aee: 89 cf mov %ecx,%edi 0.00 : 9af0: 48 8b 44 24 30 mov 0x30(%rsp),%rax 0.00 : 9af5: 48 89 38 mov %rdi,(%rax) 0.00 : 9af8: e9 0d fe ff ff jmpq 990a 0.00 : 9afd: f6 05 1d 51 21 00 04 testb $0x4,0x21511d(%rip) # 21ec21 <_rtld_global_ro+0x1> 0.00 : 9b04: 0f 85 c5 fc ff ff jne 97cf 0.00 : 9b0a: 48 8d 0d b6 01 01 00 lea 0x101b6(%rip),%rcx # 19cc7 <__PRETTY_FUNCTION__.12172> 0.00 : 9b11: 48 8d 35 bc 00 01 00 lea 0x100bc(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : 9b18: 48 8d 3d 21 1e 01 00 lea 0x11e21(%rip),%rdi # 1b940 <__PRETTY_FUNCTION__.3644+0x15cf> 0.00 : 9b1f: ba a2 01 00 00 mov $0x1a2,%edx 0.00 : 9b24: e8 47 b2 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 9b29: 48 8d 0d 97 01 01 00 lea 0x10197(%rip),%rcx # 19cc7 <__PRETTY_FUNCTION__.12172> 0.00 : 9b30: 48 8d 35 9d 00 01 00 lea 0x1009d(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : 9b37: 48 8d 3d 4a 1b 01 00 lea 0x11b4a(%rip),%rdi # 1b688 <__PRETTY_FUNCTION__.3644+0x1317> 0.00 : 9b3e: ba 97 01 00 00 mov $0x197,%edx 0.00 : 9b43: e8 28 b2 00 00 callq 14d70 <__GI___assert_fail> 0.00 : 9b48: 48 8d 0d 78 01 01 00 lea 0x10178(%rip),%rcx # 19cc7 <__PRETTY_FUNCTION__.12172> 0.00 : 9b4f: 48 8d 35 7e 00 01 00 lea 0x1007e(%rip),%rsi # 19bd4 <__PRETTY_FUNCTION__.12287+0x73> 0.00 : 9b56: 48 8d 3d 2b 1b 01 00 lea 0x11b2b(%rip),%rdi # 1b688 <__PRETTY_FUNCTION__.3644+0x1317> 0.00 : 9b5d: ba 7a 01 00 00 mov $0x17a,%edx 0.00 : 9b62: e8 09 b2 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000db80 <_dl_fixup>: 0.00 : db80: 41 55 push %r13 0.00 : db82: 89 f6 mov %esi,%esi 0.00 : db84: 49 89 fa mov %rdi,%r10 0.00 : db87: 48 8d 34 76 lea (%rsi,%rsi,2),%rsi 0.00 : db8b: 41 54 push %r12 0.00 : db8d: 48 c1 e6 03 shl $0x3,%rsi 0.00 : db91: 55 push %rbp 0.00 : db92: 53 push %rbx 0.00 : db93: 48 83 ec 28 sub $0x28,%rsp 0.00 : db97: 48 8b 47 68 mov 0x68(%rdi),%rax 0.00 : db9b: 48 8b 57 70 mov 0x70(%rdi),%rdx 0.00 : db9f: 4c 8b 48 08 mov 0x8(%rax),%r9 0.00 : dba3: 48 8b 87 f8 00 00 00 mov 0xf8(%rdi),%rax 0.00 : dbaa: 48 03 70 08 add 0x8(%rax),%rsi 0.00 : dbae: 8b 46 0c mov 0xc(%rsi),%eax 0.00 : dbb1: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : dbb5: 48 8d 3c c5 00 00 00 lea 0x0(,%rax,8),%rdi 0.00 : dbbc: 00 0.00 : dbbd: 48 03 7a 08 add 0x8(%rdx),%rdi 0.00 : dbc1: 48 89 7c 24 20 mov %rdi,0x20(%rsp) 0.00 : dbc6: 48 8b 56 08 mov 0x8(%rsi),%rdx 0.00 : dbca: 4d 8b 2a mov (%r10),%r13 0.00 : dbcd: 4c 8b 26 mov (%rsi),%r12 0.00 : dbd0: 83 fa 07 cmp $0x7,%edx 0.00 : dbd3: 0f 85 2e 01 00 00 jne dd07 <_dl_fixup+0x187> 0.00 : dbd9: f6 47 05 03 testb $0x3,0x5(%rdi) ??:0 100.00 : dbdd: 0f 85 43 01 00 00 jne dd26 <_dl_fixup+0x1a6> 0.00 : dbe3: 49 8b 82 c8 01 00 00 mov 0x1c8(%r10),%rax 0.00 : dbea: 48 85 c0 test %rax,%rax 0.00 : dbed: 0f 84 fd 00 00 00 je dcf0 <_dl_fixup+0x170> 0.00 : dbf3: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : dbf7: 48 c1 ea 20 shr $0x20,%rdx 0.00 : dbfb: 0f b7 04 50 movzwl (%rax,%rdx,2),%eax 0.00 : dbff: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : dc04: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : dc08: 4c 8d 04 c5 00 00 00 lea 0x0(,%rax,8),%r8 0.00 : dc0f: 00 0.00 : dc10: 4d 03 82 e0 02 00 00 add 0x2e0(%r10),%r8 0.00 : dc17: 41 8b 58 08 mov 0x8(%r8),%ebx 0.00 : dc1b: 85 db test %ebx,%ebx 0.00 : dc1d: 0f 84 cd 00 00 00 je dcf0 <_dl_fixup+0x170> 0.00 : dc23: 64 8b 04 25 18 00 00 mov %fs:0x18,%eax 0.00 : dc2a: 00 0.00 : dc2b: 85 c0 test %eax,%eax 0.00 : dc2d: be 01 00 00 00 mov $0x1,%esi 0.00 : dc32: 0f 85 f7 00 00 00 jne dd2f <_dl_fixup+0x1af> 0.00 : dc38: 64 8b 2c 25 4c 00 00 mov %fs:0x4c,%ebp 0.00 : dc3f: 00 0.00 : dc40: 64 c7 04 25 4c 00 00 movl $0x1,%fs:0x4c 0.00 : dc47: 00 01 00 00 00 0.00 : dc4c: 8b 3f mov (%rdi),%edi 0.00 : dc4e: 49 8b 8a 80 03 00 00 mov 0x380(%r10),%rcx 0.00 : dc55: 48 8d 54 24 20 lea 0x20(%rsp),%rdx 0.00 : dc5a: 89 34 24 mov %esi,(%rsp) 0.00 : dc5d: 4c 89 d6 mov %r10,%rsi 0.00 : dc60: 48 c7 44 24 08 00 00 movq $0x0,0x8(%rsp) 0.00 : dc67: 00 00 0.00 : dc69: 49 8d 3c 39 lea (%r9,%rdi,1),%rdi 0.00 : dc6d: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : dc73: e8 f8 be ff ff callq 9b70 <_dl_lookup_symbol_x> 0.00 : dc78: 48 89 c3 mov %rax,%rbx 0.00 : dc7b: 64 8b 04 25 18 00 00 mov %fs:0x18,%eax 0.00 : dc82: 00 0.00 : dc83: 85 c0 test %eax,%eax 0.00 : dc85: 0f 85 ba 00 00 00 jne dd45 <_dl_fixup+0x1c5> 0.00 : dc8b: 64 8b 04 25 4c 00 00 mov %fs:0x4c,%eax 0.00 : dc92: 00 0.00 : dc93: 85 c0 test %eax,%eax 0.00 : dc95: 74 69 je dd00 <_dl_fixup+0x180> 0.00 : dc97: 64 89 2c 25 4c 00 00 mov %ebp,%fs:0x4c 0.00 : dc9e: 00 0.00 : dc9f: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi 0.00 : dca4: 31 d2 xor %edx,%edx 0.00 : dca6: 48 85 ff test %rdi,%rdi 0.00 : dca9: 74 21 je dccc <_dl_fixup+0x14c> 0.00 : dcab: 31 c0 xor %eax,%eax 0.00 : dcad: 48 85 db test %rbx,%rbx 0.00 : dcb0: 74 03 je dcb5 <_dl_fixup+0x135> 0.00 : dcb2: 48 8b 03 mov (%rbx),%rax 0.00 : dcb5: 48 89 c2 mov %rax,%rdx 0.00 : dcb8: 48 03 57 08 add 0x8(%rdi),%rdx 0.00 : dcbc: 0f b6 47 04 movzbl 0x4(%rdi),%eax 0.00 : dcc0: 83 e0 0f and $0xf,%eax 0.00 : dcc3: 83 f8 0a cmp $0xa,%eax 0.00 : dcc6: 0f 84 b2 00 00 00 je dd7e <_dl_fixup+0x1fe> 0.00 : dccc: 44 8b 1d 91 0f 21 00 mov 0x210f91(%rip),%r11d # 21ec64 <_rtld_global_ro+0x44> 0.00 : dcd3: 45 85 db test %r11d,%r11d 0.00 : dcd6: 75 04 jne dcdc <_dl_fixup+0x15c> 0.00 : dcd8: 4b 89 14 2c mov %rdx,(%r12,%r13,1) 0.00 : dcdc: 48 83 c4 28 add $0x28,%rsp 0.00 : dce0: 48 89 d0 mov %rdx,%rax 0.00 : dce3: 5b pop %rbx 0.00 : dce4: 5d pop %rbp 0.00 : dce5: 41 5c pop %r12 0.00 : dce7: 41 5d pop %r13 0.00 : dce9: c3 retq 0.00 : dcea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : dcf0: 45 31 c0 xor %r8d,%r8d 0.00 : dcf3: e9 2b ff ff ff jmpq dc23 <_dl_fixup+0xa3> 0.00 : dcf8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : dcff: 00 0.00 : dd00: e8 eb 61 00 00 callq 13ef0 <_dl_x86_64_restore_sse> 0.00 : dd05: eb 90 jmp dc97 <_dl_fixup+0x117> 0.00 : dd07: 48 8d 0d 3c c0 00 00 lea 0xc03c(%rip),%rcx # 19d4a <__PRETTY_FUNCTION__.12044> 0.00 : dd0e: 48 8d 35 21 c0 00 00 lea 0xc021(%rip),%rsi # 19d36 <__PRETTY_FUNCTION__.12494+0x57> 0.00 : dd15: 48 8d 3d fc e0 00 00 lea 0xe0fc(%rip),%rdi # 1be18 <__PRETTY_FUNCTION__.3644+0x1aa7> 0.00 : dd1c: ba 56 00 00 00 mov $0x56,%edx 0.00 : dd21: e8 4a 70 00 00 callq 14d70 <__GI___assert_fail> 0.00 : dd26: 4c 89 ea mov %r13,%rdx 0.00 : dd29: 48 03 57 08 add 0x8(%rdi),%rdx 0.00 : dd2d: eb 8d jmp dcbc <_dl_fixup+0x13c> 0.00 : dd2f: 64 c7 04 25 1c 00 00 movl $0x1,%fs:0x1c 0.00 : dd36: 00 01 00 00 00 0.00 : dd3b: be 05 00 00 00 mov $0x5,%esi 0.00 : dd40: e9 f3 fe ff ff jmpq dc38 <_dl_fixup+0xb8> 0.00 : dd45: 31 c0 xor %eax,%eax 0.00 : dd47: 64 87 04 25 1c 00 00 xchg %eax,%fs:0x1c 0.00 : dd4e: 00 0.00 : dd4f: 83 f8 02 cmp $0x2,%eax 0.00 : dd52: 0f 85 33 ff ff ff jne dc8b <_dl_fixup+0x10b> 0.00 : dd58: ba 01 00 00 00 mov $0x1,%edx 0.00 : dd5d: 64 48 8b 3c 25 10 00 mov %fs:0x10,%rdi 0.00 : dd64: 00 00 0.00 : dd66: 64 8b 34 25 48 00 00 mov %fs:0x48,%esi 0.00 : dd6d: 00 0.00 : dd6e: 48 83 c7 1c add $0x1c,%rdi 0.00 : dd72: 83 ce 01 or $0x1,%esi 0.00 : dd75: b0 ca mov $0xca,%al 0.00 : dd77: 0f 05 syscall 0.00 : dd79: e9 0d ff ff ff jmpq dc8b <_dl_fixup+0x10b> 0.00 : dd7e: ff d2 callq *%rdx 0.00 : dd80: 48 89 c2 mov %rax,%rdx 0.00 : dd83: e9 44 ff ff ff jmpq dccc <_dl_fixup+0x14c> Sorted summary for file /lib64/ld-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/ld-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000014120 <_dl_important_hwcaps>: 0.00 : 14120: 55 push %rbp 0.00 : 14121: 48 89 e5 mov %rsp,%rbp 0.00 : 14124: 41 57 push %r15 0.00 : 14126: 41 56 push %r14 0.00 : 14128: 41 55 push %r13 0.00 : 1412a: 41 54 push %r12 0.00 : 1412c: 45 31 e4 xor %r12d,%r12d 0.00 : 1412f: 53 push %rbx 0.00 : 14130: 48 81 ec 88 00 00 00 sub $0x88,%rsp 0.00 : 14137: 48 89 55 80 mov %rdx,-0x80(%rbp) 0.00 : 1413b: 48 8b 15 3e ab 20 00 mov 0x20ab3e(%rip),%rdx # 21ec80 <_rtld_global_ro+0x60> 0.00 : 14142: 48 85 ff test %rdi,%rdi 0.00 : 14145: 48 89 7d 90 mov %rdi,-0x70(%rbp) 0.00 : 14149: 48 89 75 88 mov %rsi,-0x78(%rbp) 0.00 : 1414d: 41 0f 95 c4 setne %r12b 0.00 : 14151: 48 89 8d 78 ff ff ff mov %rcx,-0x88(%rbp) 0.00 : 14158: 49 89 d6 mov %rdx,%r14 0.00 : 1415b: 4c 23 35 16 ab 20 00 and 0x20ab16(%rip),%r14 # 21ec78 <_rtld_global_ro+0x58> 0.00 : 14162: 74 30 je 14194 <_dl_important_hwcaps+0x74> 0.00 : 14164: 31 d2 xor %edx,%edx 0.00 : 14166: 31 c9 xor %ecx,%ecx 0.00 : 14168: be 01 00 00 00 mov $0x1,%esi 0.00 : 1416d: 0f 1f 00 nopl (%rax) 0.00 : 14170: 4c 89 f0 mov %r14,%rax 0.00 : 14173: 48 d3 e8 shr %cl,%rax 0.00 : 14176: 83 e0 01 and $0x1,%eax 0.00 : 14179: 83 f8 01 cmp $0x1,%eax 0.00 : 1417c: 48 89 f0 mov %rsi,%rax 0.00 : 1417f: 49 83 dc ff sbb $0xffffffffffffffff,%r12 0.00 : 14183: 48 83 c2 01 add $0x1,%rdx 0.00 : 14187: 89 d1 mov %edx,%ecx 0.00 : 14189: 48 d3 e0 shl %cl,%rax 0.00 : 1418c: 48 f7 d8 neg %rax 0.00 : 1418f: 4c 85 f0 test %r14,%rax 0.00 : 14192: 75 dc jne 14170 <_dl_important_hwcaps+0x50> 0.00 : 14194: 4c 8b 2d 3d ab 20 00 mov 0x20ab3d(%rip),%r13 # 21ecd8 <_rtld_global_ro+0xb8> 0.00 : 1419b: 4d 85 ed test %r13,%r13 0.00 : 1419e: 0f 84 d7 05 00 00 je 1477b <_dl_important_hwcaps+0x65b> 0.00 : 141a4: 41 0f b7 95 b0 02 00 movzwl 0x2b0(%r13),%edx 0.00 : 141ab: 00 0.00 : 141ac: 49 8b 85 a0 02 00 00 mov 0x2a0(%r13),%rax 0.00 : 141b3: 48 85 d2 test %rdx,%rdx 0.00 : 141b6: 48 89 95 50 ff ff ff mov %rdx,-0xb0(%rbp) 0.00 : 141bd: 0f 84 b8 05 00 00 je 1477b <_dl_important_hwcaps+0x65b> 0.00 : 141c3: 49 89 c3 mov %rax,%r11 0.00 : 141c6: 31 db xor %ebx,%ebx 0.00 : 141c8: 4c 8d 3d 0f 60 00 00 lea 0x600f(%rip),%r15 # 1a1de <__PRETTY_FUNCTION__.12953+0x25> 0.00 : 141cf: eb 1c jmp 141ed <_dl_important_hwcaps+0xcd> 0.00 : 141d1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 141d8: 48 83 c3 01 add $0x1,%rbx 0.00 : 141dc: 49 83 c3 38 add $0x38,%r11 0.00 : 141e0: 48 3b 9d 50 ff ff ff cmp -0xb0(%rbp),%rbx 0.00 : 141e7: 0f 83 8e 05 00 00 jae 1477b <_dl_important_hwcaps+0x65b> 0.00 : 141ed: 41 83 3b 04 cmpl $0x4,(%r11) ??:0 100.00 : 141f1: 75 e5 jne 141d8 <_dl_important_hwcaps+0xb8> 0.00 : 141f3: 4d 8b 4d 00 mov 0x0(%r13),%r9 0.00 : 141f7: 4d 03 4b 10 add 0x10(%r11),%r9 0.00 : 141fb: 4c 89 8d 58 ff ff ff mov %r9,-0xa8(%rbp) 0.00 : 14202: 4d 8b 53 28 mov 0x28(%r11),%r10 0.00 : 14206: 49 83 fa 0c cmp $0xc,%r10 0.00 : 1420a: 77 45 ja 14251 <_dl_important_hwcaps+0x131> 0.00 : 1420c: eb ca jmp 141d8 <_dl_important_hwcaps+0xb8> 0.00 : 1420e: 66 90 xchg %ax,%ax 0.00 : 14210: 48 8b bd 58 ff ff ff mov -0xa8(%rbp),%rdi 0.00 : 14217: 44 8b 07 mov (%rdi),%r8d 0.00 : 1421a: 8b 57 04 mov 0x4(%rdi),%edx 0.00 : 1421d: 44 89 c0 mov %r8d,%eax 0.00 : 14220: 89 d2 mov %edx,%edx 0.00 : 14222: 48 83 c0 03 add $0x3,%rax 0.00 : 14226: 48 83 c2 03 add $0x3,%rdx 0.00 : 1422a: 48 83 e0 fc and $0xfffffffffffffffc,%rax 0.00 : 1422e: 48 83 e2 fc and $0xfffffffffffffffc,%rdx 0.00 : 14232: 48 8d 44 10 0c lea 0xc(%rax,%rdx,1),%rax 0.00 : 14237: 48 01 85 58 ff ff ff add %rax,-0xa8(%rbp) 0.00 : 1423e: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 14245: 48 83 c0 0c add $0xc,%rax 0.00 : 14249: 4c 29 c8 sub %r9,%rax 0.00 : 1424c: 4c 39 d0 cmp %r10,%rax 0.00 : 1424f: 73 87 jae 141d8 <_dl_important_hwcaps+0xb8> 0.00 : 14251: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 14258: 83 79 08 02 cmpl $0x2,0x8(%rcx) 0.00 : 1425c: 75 b2 jne 14210 <_dl_important_hwcaps+0xf0> 0.00 : 1425e: 44 8b 01 mov (%rcx),%r8d 0.00 : 14261: 41 83 f8 04 cmp $0x4,%r8d 0.00 : 14265: 74 09 je 14270 <_dl_important_hwcaps+0x150> 0.00 : 14267: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 1426a: eb b1 jmp 1421d <_dl_important_hwcaps+0xfd> 0.00 : 1426c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 14270: 48 8b b5 58 ff ff ff mov -0xa8(%rbp),%rsi 0.00 : 14277: 4c 89 ff mov %r15,%rdi 0.00 : 1427a: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 1427f: 48 83 c6 0c add $0xc,%rsi 0.00 : 14283: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 14285: 74 11 je 14298 <_dl_important_hwcaps+0x178> 0.00 : 14287: 48 8b 85 58 ff ff ff mov -0xa8(%rbp),%rax 0.00 : 1428e: 8b 50 04 mov 0x4(%rax),%edx 0.00 : 14291: eb 8a jmp 1421d <_dl_important_hwcaps+0xfd> 0.00 : 14293: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 14298: 48 8b 8d 58 ff ff ff mov -0xa8(%rbp),%rcx 0.00 : 1429f: 8b 51 04 mov 0x4(%rcx),%edx 0.00 : 142a2: 83 fa 0a cmp $0xa,%edx 0.00 : 142a5: 0f 86 72 ff ff ff jbe 1421d <_dl_important_hwcaps+0xfd> 0.00 : 142ab: 8b 41 10 mov 0x10(%rcx),%eax 0.00 : 142ae: 49 89 c8 mov %rcx,%r8 0.00 : 142b1: 48 89 ce mov %rcx,%rsi 0.00 : 142b4: 49 83 c0 14 add $0x14,%r8 0.00 : 142b8: 49 01 c4 add %rax,%r12 0.00 : 142bb: 89 d0 mov %edx,%eax 0.00 : 142bd: 48 83 c6 18 add $0x18,%rsi 0.00 : 142c1: 48 8d 50 f8 lea -0x8(%rax),%rdx 0.00 : 142c5: 0f 84 0d ff ff ff je 141d8 <_dl_important_hwcaps+0xb8> 0.00 : 142cb: 49 83 c4 01 add $0x1,%r12 0.00 : 142cf: 48 8d 14 16 lea (%rsi,%rdx,1),%rdx 0.00 : 142d3: 45 31 ed xor %r13d,%r13d 0.00 : 142d6: 4c 89 e0 mov %r12,%rax 0.00 : 142d9: 4c 89 65 a8 mov %r12,-0x58(%rbp) 0.00 : 142dd: 48 89 f3 mov %rsi,%rbx 0.00 : 142e0: 48 c1 e0 04 shl $0x4,%rax 0.00 : 142e4: 48 83 c0 10 add $0x10,%rax 0.00 : 142e8: 48 29 c4 sub %rax,%rsp 0.00 : 142eb: 4c 8d 7c 24 0f lea 0xf(%rsp),%r15 0.00 : 142f0: 49 83 e7 f0 and $0xfffffffffffffff0,%r15 0.00 : 142f4: 4c 89 7d b0 mov %r15,-0x50(%rbp) 0.00 : 142f8: 45 8b 00 mov (%r8),%r8d 0.00 : 142fb: 48 89 55 98 mov %rdx,-0x68(%rbp) 0.00 : 142ff: 44 89 c0 mov %r8d,%eax 0.00 : 14302: 48 09 05 6f a9 20 00 or %rax,0x20a96f(%rip) # 21ec78 <_rtld_global_ro+0x58> 0.00 : 14309: 48 09 05 70 a9 20 00 or %rax,0x20a970(%rip) # 21ec80 <_rtld_global_ro+0x60> 0.00 : 14310: 48 39 d6 cmp %rdx,%rsi 0.00 : 14313: 44 89 45 bc mov %r8d,-0x44(%rbp) 0.00 : 14317: 73 4a jae 14363 <_dl_important_hwcaps+0x243> 0.00 : 14319: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 14320: 4c 8d 63 01 lea 0x1(%rbx),%r12 0.00 : 14324: 4c 89 e7 mov %r12,%rdi 0.00 : 14327: e8 44 24 00 00 callq 16770 <__GI_strlen> 0.00 : 1432c: 0f b6 0b movzbl (%rbx),%ecx 0.00 : 1432f: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 14334: 48 89 c2 mov %rax,%rdx 0.00 : 14337: d3 e3 shl %cl,%ebx 0.00 : 14339: 85 5d bc test %ebx,-0x44(%rbp) 0.00 : 1433c: 0f 84 f6 04 00 00 je 14838 <_dl_important_hwcaps+0x718> 0.00 : 14342: 4c 89 e8 mov %r13,%rax 0.00 : 14345: 49 83 c5 01 add $0x1,%r13 0.00 : 14349: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1434d: 49 8d 04 07 lea (%r15,%rax,1),%rax 0.00 : 14351: 4c 89 20 mov %r12,(%rax) 0.00 : 14354: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 14358: 49 8d 5c 14 01 lea 0x1(%r12,%rdx,1),%rbx 0.00 : 1435d: 48 3b 5d 98 cmp -0x68(%rbp),%rbx 0.00 : 14361: 72 bd jb 14320 <_dl_important_hwcaps+0x200> 0.00 : 14363: 4d 85 f6 test %r14,%r14 0.00 : 14366: 74 54 je 143bc <_dl_important_hwcaps+0x29c> 0.00 : 14368: 31 d2 xor %edx,%edx 0.00 : 1436a: be 01 00 00 00 mov $0x1,%esi 0.00 : 1436f: eb 10 jmp 14381 <_dl_important_hwcaps+0x261> 0.00 : 14371: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 14378: 4d 85 f6 test %r14,%r14 0.00 : 1437b: 74 3f je 143bc <_dl_important_hwcaps+0x29c> 0.00 : 1437d: 48 83 c2 01 add $0x1,%rdx 0.00 : 14381: 89 d1 mov %edx,%ecx 0.00 : 14383: 4c 89 f0 mov %r14,%rax 0.00 : 14386: 48 d3 e8 shr %cl,%rax 0.00 : 14389: a8 01 test $0x1,%al 0.00 : 1438b: 74 eb je 14378 <_dl_important_hwcaps+0x258> 0.00 : 1438d: 4c 89 e8 mov %r13,%rax 0.00 : 14390: 48 8d 3d 46 54 00 00 lea 0x5446(%rip),%rdi # 197dd 0.00 : 14397: 49 83 c5 01 add $0x1,%r13 0.00 : 1439b: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1439f: 48 03 45 b0 add -0x50(%rbp),%rax 0.00 : 143a3: 48 89 38 mov %rdi,(%rax) 0.00 : 143a6: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 143ad: 00 0.00 : 143ae: 48 89 f0 mov %rsi,%rax 0.00 : 143b1: 48 d3 e0 shl %cl,%rax 0.00 : 143b4: 49 31 c6 xor %rax,%r14 0.00 : 143b7: 4d 85 f6 test %r14,%r14 0.00 : 143ba: 75 c1 jne 1437d <_dl_important_hwcaps+0x25d> 0.00 : 143bc: 48 83 7d 90 00 cmpq $0x0,-0x70(%rbp) 0.00 : 143c1: 4c 89 ea mov %r13,%rdx 0.00 : 143c4: 74 1e je 143e4 <_dl_important_hwcaps+0x2c4> 0.00 : 143c6: 4c 89 e8 mov %r13,%rax 0.00 : 143c9: 48 8b 4d 90 mov -0x70(%rbp),%rcx 0.00 : 143cd: 48 83 c2 01 add $0x1,%rdx 0.00 : 143d1: 48 c1 e0 04 shl $0x4,%rax 0.00 : 143d5: 48 03 45 b0 add -0x50(%rbp),%rax 0.00 : 143d9: 48 89 08 mov %rcx,(%rax) 0.00 : 143dc: 48 8b 5d 88 mov -0x78(%rbp),%rbx 0.00 : 143e0: 48 89 58 08 mov %rbx,0x8(%rax) 0.00 : 143e4: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 143e8: 48 89 d1 mov %rdx,%rcx 0.00 : 143eb: 48 8d 3d 15 55 00 00 lea 0x5515(%rip),%rdi # 19907 <__PRETTY_FUNCTION__.12417+0x5> 0.00 : 143f2: 48 c1 e1 04 shl $0x4,%rcx 0.00 : 143f6: 48 01 c8 add %rcx,%rax 0.00 : 143f9: 48 89 38 mov %rdi,(%rax) 0.00 : 143fc: 48 c7 40 08 03 00 00 movq $0x3,0x8(%rax) 0.00 : 14403: 00 0.00 : 14404: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 14408: 48 3b 45 a8 cmp -0x58(%rbp),%rax 0.00 : 1440c: 0f 85 30 04 00 00 jne 14842 <_dl_important_hwcaps+0x722> 0.00 : 14412: 48 83 7d a8 01 cmpq $0x1,-0x58(%rbp) 0.00 : 14417: 0f 84 4d 03 00 00 je 1476a <_dl_important_hwcaps+0x64a> 0.00 : 1441d: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.00 : 14421: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 14425: 48 03 44 0b 08 add 0x8(%rbx,%rcx,1),%rax 0.00 : 1442a: 48 83 c0 02 add $0x2,%rax 0.00 : 1442e: 48 83 7d a8 02 cmpq $0x2,-0x58(%rbp) 0.00 : 14433: 76 7c jbe 144b1 <_dl_important_hwcaps+0x391> 0.00 : 14435: 48 8d 34 00 lea (%rax,%rax,1),%rsi 0.00 : 14439: ba 02 00 00 00 mov $0x2,%edx 0.00 : 1443e: b8 01 00 00 00 mov $0x1,%eax 0.00 : 14443: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 14448: 48 8b 7d b0 mov -0x50(%rbp),%rdi 0.00 : 1444c: 48 c1 e0 04 shl $0x4,%rax 0.00 : 14450: 48 8b 44 07 08 mov 0x8(%rdi,%rax,1),%rax 0.00 : 14455: 48 8d 74 06 01 lea 0x1(%rsi,%rax,1),%rsi 0.00 : 1445a: 48 89 d0 mov %rdx,%rax 0.00 : 1445d: 48 83 c2 01 add $0x1,%rdx 0.00 : 14461: 48 39 55 a8 cmp %rdx,-0x58(%rbp) 0.00 : 14465: 77 e1 ja 14448 <_dl_important_hwcaps+0x328> 0.00 : 14467: 48 83 7d a8 03 cmpq $0x3,-0x58(%rbp) 0.00 : 1446c: ba 03 00 00 00 mov $0x3,%edx 0.00 : 14471: 74 35 je 144a8 <_dl_important_hwcaps+0x388> 0.00 : 14473: 48 83 7d a8 3f cmpq $0x3f,-0x58(%rbp) 0.00 : 14478: 77 19 ja 14493 <_dl_important_hwcaps+0x373> 0.00 : 1447a: 8b 55 a8 mov -0x58(%rbp),%edx 0.00 : 1447d: 48 8d 86 80 00 00 00 lea 0x80(%rsi),%rax 0.00 : 14484: b9 43 00 00 00 mov $0x43,%ecx 0.00 : 14489: 29 d1 sub %edx,%ecx 0.00 : 1448b: 48 d3 e8 shr %cl,%rax 0.00 : 1448e: 48 85 c0 test %rax,%rax 0.00 : 14491: 74 15 je 144a8 <_dl_important_hwcaps+0x388> 0.00 : 14493: 48 8d 0d 64 5d 00 00 lea 0x5d64(%rip),%rcx # 1a1fe <__PRETTY_FUNCTION__.12953+0x45> 0.00 : 1449a: 31 d2 xor %edx,%edx 0.00 : 1449c: 31 f6 xor %esi,%esi 0.00 : 1449e: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 144a3: e8 58 9a ff ff callq df00 <_dl_signal_error> 0.00 : 144a8: 8d 4a fd lea -0x3(%rdx),%ecx 0.00 : 144ab: 48 89 f0 mov %rsi,%rax 0.00 : 144ae: 48 d3 e0 shl %cl,%rax 0.00 : 144b1: 8b 55 a8 mov -0x58(%rbp),%edx 0.00 : 144b4: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 144b9: 89 df mov %ebx,%edi 0.00 : 144bb: 89 d1 mov %edx,%ecx 0.00 : 144bd: 89 55 a0 mov %edx,-0x60(%rbp) 0.00 : 144c0: d3 e7 shl %cl,%edi 0.00 : 144c2: 48 8b 4d 80 mov -0x80(%rbp),%rcx 0.00 : 144c6: 48 63 d7 movslq %edi,%rdx 0.00 : 144c9: 89 7d a4 mov %edi,-0x5c(%rbp) 0.00 : 144cc: 48 89 d7 mov %rdx,%rdi 0.00 : 144cf: 48 89 55 d0 mov %rdx,-0x30(%rbp) 0.00 : 144d3: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 144d7: 48 89 11 mov %rdx,(%rcx) 0.00 : 144da: 48 8d 3c 38 lea (%rax,%rdi,1),%rdi 0.00 : 144de: e8 cd c5 fe ff callq ab0 0.00 : 144e3: 48 85 c0 test %rax,%rax 0.00 : 144e6: 49 89 c7 mov %rax,%r15 0.00 : 144e9: 74 a8 je 14493 <_dl_important_hwcaps+0x373> 0.00 : 144eb: 48 83 7d a8 01 cmpq $0x1,-0x58(%rbp) 0.00 : 144f0: 0f 84 eb 02 00 00 je 147e1 <_dl_important_hwcaps+0x6c1> 0.00 : 144f6: 48 8b 7d 80 mov -0x80(%rbp),%rdi 0.00 : 144fa: 48 8b 07 mov (%rdi),%rax 0.00 : 144fd: 48 c1 e0 04 shl $0x4,%rax 0.00 : 14501: 49 8d 3c 07 lea (%r15,%rax,1),%rdi 0.00 : 14505: 49 89 3f mov %rdi,(%r15) 0.00 : 14508: 49 89 7f 10 mov %rdi,0x10(%r15) 0.00 : 1450c: 48 83 7d a8 02 cmpq $0x2,-0x58(%rbp) 0.00 : 14511: 0f 84 8f 02 00 00 je 147a6 <_dl_important_hwcaps+0x686> 0.00 : 14517: 8b 4d a8 mov -0x58(%rbp),%ecx 0.00 : 1451a: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 1451e: 41 be 01 00 00 00 mov $0x1,%r14d 0.00 : 14524: 83 e9 01 sub $0x1,%ecx 0.00 : 14527: d3 e3 shl %cl,%ebx 0.00 : 14529: 4c 63 eb movslq %ebx,%r13 0.00 : 1452c: 48 8b 5d a8 mov -0x58(%rbp),%rbx 0.00 : 14530: 48 83 eb 01 sub $0x1,%rbx 0.00 : 14534: 48 89 d8 mov %rbx,%rax 0.00 : 14537: 48 89 9d 68 ff ff ff mov %rbx,-0x98(%rbp) 0.00 : 1453e: 48 c1 e0 04 shl $0x4,%rax 0.00 : 14542: 48 03 45 b0 add -0x50(%rbp),%rax 0.00 : 14546: 48 89 45 c0 mov %rax,-0x40(%rbp) 0.00 : 1454a: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 1454e: 48 83 e8 02 sub $0x2,%rax 0.00 : 14552: 48 89 45 c8 mov %rax,-0x38(%rbp) 0.00 : 14556: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 1455a: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1455e: 48 8d 44 02 e8 lea -0x18(%rdx,%rax,1),%rax 0.00 : 14563: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp) 0.00 : 1456a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 14570: 48 8b 4d c0 mov -0x40(%rbp),%rcx 0.00 : 14574: 49 83 ed 02 sub $0x2,%r13 0.00 : 14578: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 1457c: 48 8b 31 mov (%rcx),%rsi 0.00 : 1457f: e8 3c 2b 00 00 callq 170c0 <__mempcpy> 0.00 : 14584: c6 00 2f movb $0x2f,(%rax) 0.00 : 14587: 48 83 7d c8 00 cmpq $0x0,-0x38(%rbp) 0.00 : 1458c: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 14590: 74 45 je 145d7 <_dl_important_hwcaps+0x4b7> 0.00 : 14592: 4c 8b a5 60 ff ff ff mov -0xa0(%rbp),%r12 0.00 : 14599: 48 8b 5d c8 mov -0x38(%rbp),%rbx 0.00 : 1459d: eb 0b jmp 145aa <_dl_important_hwcaps+0x48a> 0.00 : 1459f: 90 nop 0.00 : 145a0: 49 83 ec 10 sub $0x10,%r12 0.00 : 145a4: 48 83 eb 01 sub $0x1,%rbx 0.00 : 145a8: 74 2d je 145d7 <_dl_important_hwcaps+0x4b7> 0.00 : 145aa: 44 89 f0 mov %r14d,%eax 0.00 : 145ad: 89 d9 mov %ebx,%ecx 0.00 : 145af: d3 e0 shl %cl,%eax 0.00 : 145b1: 48 98 cltq 0.00 : 145b3: 4c 85 e8 test %r13,%rax 0.00 : 145b6: 74 e8 je 145a0 <_dl_important_hwcaps+0x480> 0.00 : 145b8: 49 8b 74 24 f8 mov -0x8(%r12),%rsi 0.00 : 145bd: 49 8b 14 24 mov (%r12),%rdx 0.00 : 145c1: 49 83 ec 10 sub $0x10,%r12 0.00 : 145c5: e8 f6 2a 00 00 callq 170c0 <__mempcpy> 0.00 : 145ca: 48 83 eb 01 sub $0x1,%rbx 0.00 : 145ce: c6 00 2f movb $0x2f,(%rax) 0.00 : 145d1: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 145d5: 75 d3 jne 145aa <_dl_important_hwcaps+0x48a> 0.00 : 145d7: 48 8b 5d b0 mov -0x50(%rbp),%rbx 0.00 : 145db: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 145df: 48 8b 33 mov (%rbx),%rsi 0.00 : 145e2: e8 d9 2a 00 00 callq 170c0 <__mempcpy> 0.00 : 145e7: 4d 85 ed test %r13,%r13 0.00 : 145ea: c6 00 2f movb $0x2f,(%rax) 0.00 : 145ed: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 145f1: 0f 85 79 ff ff ff jne 14570 <_dl_important_hwcaps+0x450> 0.00 : 145f7: 0f b6 4d a0 movzbl -0x60(%rbp),%ecx 0.00 : 145fb: be 01 00 00 00 mov $0x1,%esi 0.00 : 14600: 31 d2 xor %edx,%edx 0.00 : 14602: 48 d3 e6 shl %cl,%rsi 0.00 : 14605: 48 85 f6 test %rsi,%rsi 0.00 : 14608: 74 1f je 14629 <_dl_important_hwcaps+0x509> 0.00 : 1460a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 14610: 48 89 d0 mov %rdx,%rax 0.00 : 14613: 48 83 c2 01 add $0x1,%rdx 0.00 : 14617: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1461b: 48 39 f2 cmp %rsi,%rdx 0.00 : 1461e: 49 c7 44 07 08 00 00 movq $0x0,0x8(%r15,%rax,1) 0.00 : 14625: 00 00 0.00 : 14627: 72 e7 jb 14610 <_dl_important_hwcaps+0x4f0> 0.00 : 14629: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 1462d: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 14631: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 14637: 4c 8b 45 a8 mov -0x58(%rbp),%r8 0.00 : 1463b: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1463f: 48 8d 7c 02 f8 lea -0x8(%rdx,%rax,1),%rdi 0.00 : 14644: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 14648: 49 83 e8 01 sub $0x1,%r8 0.00 : 1464c: 44 89 c8 mov %r9d,%eax 0.00 : 1464f: 44 89 c1 mov %r8d,%ecx 0.00 : 14652: d3 e0 shl %cl,%eax 0.00 : 14654: 48 83 7d d0 00 cmpq $0x0,-0x30(%rbp) 0.00 : 14659: 48 63 f0 movslq %eax,%rsi 0.00 : 1465c: 74 33 je 14691 <_dl_important_hwcaps+0x571> 0.00 : 1465e: 48 8b 55 d0 mov -0x30(%rbp),%rdx 0.00 : 14662: 4c 89 f9 mov %r15,%rcx 0.00 : 14665: eb 1c jmp 14683 <_dl_important_hwcaps+0x563> 0.00 : 14667: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 1466e: 00 00 0.00 : 14670: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 14674: 48 03 07 add (%rdi),%rax 0.00 : 14677: 48 83 c0 01 add $0x1,%rax 0.00 : 1467b: 48 89 41 08 mov %rax,0x8(%rcx) 0.00 : 1467f: 48 83 c1 10 add $0x10,%rcx 0.00 : 14683: 48 83 ea 01 sub $0x1,%rdx 0.00 : 14687: 48 85 f2 test %rsi,%rdx 0.00 : 1468a: 75 e4 jne 14670 <_dl_important_hwcaps+0x550> 0.00 : 1468c: 48 85 d2 test %rdx,%rdx 0.00 : 1468f: 75 ee jne 1467f <_dl_important_hwcaps+0x55f> 0.00 : 14691: 48 83 ef 10 sub $0x10,%rdi 0.00 : 14695: 4d 85 c0 test %r8,%r8 0.00 : 14698: 75 ae jne 14648 <_dl_important_hwcaps+0x528> 0.00 : 1469a: 8b 45 a4 mov -0x5c(%rbp),%eax 0.00 : 1469d: 8b 4d a8 mov -0x58(%rbp),%ecx 0.00 : 146a0: 41 b0 01 mov $0x1,%r8b 0.00 : 146a3: 4d 8d 4f 20 lea 0x20(%r15),%r9 0.00 : 146a7: 83 e8 02 sub $0x2,%eax 0.00 : 146aa: 83 e9 01 sub $0x1,%ecx 0.00 : 146ad: 48 63 f8 movslq %eax,%rdi 0.00 : 146b0: 49 d3 e0 shl %cl,%r8 0.00 : 146b3: 49 39 f8 cmp %rdi,%r8 0.00 : 146b6: 74 4d je 14705 <_dl_important_hwcaps+0x5e5> 0.00 : 146b8: 48 89 fe mov %rdi,%rsi 0.00 : 146bb: 4c 89 ca mov %r9,%rdx 0.00 : 146be: eb 14 jmp 146d4 <_dl_important_hwcaps+0x5b4> 0.00 : 146c0: 48 8b 42 e0 mov -0x20(%rdx),%rax 0.00 : 146c4: 48 03 42 e8 add -0x18(%rdx),%rax 0.00 : 146c8: 48 89 02 mov %rax,(%rdx) 0.00 : 146cb: 48 83 c2 10 add $0x10,%rdx 0.00 : 146cf: 49 39 f0 cmp %rsi,%r8 0.00 : 146d2: 74 1a je 146ee <_dl_important_hwcaps+0x5ce> 0.00 : 146d4: 48 83 ee 01 sub $0x1,%rsi 0.00 : 146d8: 40 f6 c6 01 test $0x1,%sil 0.00 : 146dc: 75 e2 jne 146c0 <_dl_important_hwcaps+0x5a0> 0.00 : 146de: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 146e2: 48 89 02 mov %rax,(%rdx) 0.00 : 146e5: 48 83 c2 10 add $0x10,%rdx 0.00 : 146e9: 49 39 f0 cmp %rsi,%r8 0.00 : 146ec: 75 e6 jne 146d4 <_dl_important_hwcaps+0x5b4> 0.00 : 146ee: 48 89 f8 mov %rdi,%rax 0.00 : 146f1: 4c 29 c0 sub %r8,%rax 0.00 : 146f4: 48 c1 e0 04 shl $0x4,%rax 0.00 : 146f8: 49 01 c1 add %rax,%r9 0.00 : 146fb: 4a 8d 04 07 lea (%rdi,%r8,1),%rax 0.00 : 146ff: 48 29 f8 sub %rdi,%rax 0.00 : 14702: 48 89 c7 mov %rax,%rdi 0.00 : 14705: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 1470a: 48 c1 a5 68 ff ff ff shlq $0x4,-0x98(%rbp) 0.00 : 14711: 04 0.00 : 14712: 48 8b 75 b0 mov -0x50(%rbp),%rsi 0.00 : 14716: d3 e0 shl %cl,%eax 0.00 : 14718: 48 03 b5 68 ff ff ff add -0x98(%rbp),%rsi 0.00 : 1471f: 31 d2 xor %edx,%edx 0.00 : 14721: 48 98 cltq 0.00 : 14723: 48 c1 e0 04 shl $0x4,%rax 0.00 : 14727: 49 8d 0c 01 lea (%r9,%rax,1),%rcx 0.00 : 1472b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 14730: 48 8b 46 08 mov 0x8(%rsi),%rax 0.00 : 14734: 48 83 c0 01 add $0x1,%rax 0.00 : 14738: 48 03 04 11 add (%rcx,%rdx,1),%rax 0.00 : 1473c: 49 89 04 11 mov %rax,(%r9,%rdx,1) 0.00 : 14740: 48 83 c2 10 add $0x10,%rdx 0.00 : 14744: 48 83 ef 01 sub $0x1,%rdi 0.00 : 14748: 75 e6 jne 14730 <_dl_important_hwcaps+0x610> 0.00 : 1474a: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 1474e: 48 8b 9d 78 ff ff ff mov -0x88(%rbp),%rbx 0.00 : 14755: 48 89 03 mov %rax,(%rbx) 0.00 : 14758: 48 8d 65 d8 lea -0x28(%rbp),%rsp 0.00 : 1475c: 4c 89 f8 mov %r15,%rax 0.00 : 1475f: 5b pop %rbx 0.00 : 14760: 41 5c pop %r12 0.00 : 14762: 41 5d pop %r13 0.00 : 14764: 41 5e pop %r14 0.00 : 14766: 41 5f pop %r15 0.00 : 14768: c9 leaveq 0.00 : 14769: c3 retq 0.00 : 1476a: 48 8b 55 b0 mov -0x50(%rbp),%rdx 0.00 : 1476e: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 14772: 48 83 c0 01 add $0x1,%rax 0.00 : 14776: e9 36 fd ff ff jmpq 144b1 <_dl_important_hwcaps+0x391> 0.00 : 1477b: 49 83 c4 01 add $0x1,%r12 0.00 : 1477f: 45 31 ed xor %r13d,%r13d 0.00 : 14782: 4c 89 e0 mov %r12,%rax 0.00 : 14785: 4c 89 65 a8 mov %r12,-0x58(%rbp) 0.00 : 14789: 48 c1 e0 04 shl $0x4,%rax 0.00 : 1478d: 48 83 c0 10 add $0x10,%rax 0.00 : 14791: 48 29 c4 sub %rax,%rsp 0.00 : 14794: 48 8d 44 24 0f lea 0xf(%rsp),%rax 0.00 : 14799: 48 83 e0 f0 and $0xfffffffffffffff0,%rax 0.00 : 1479d: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 147a1: e9 bd fb ff ff jmpq 14363 <_dl_important_hwcaps+0x243> 0.00 : 147a6: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 147aa: 48 8b 50 18 mov 0x18(%rax),%rdx 0.00 : 147ae: 48 8b 70 10 mov 0x10(%rax),%rsi 0.00 : 147b2: e8 09 29 00 00 callq 170c0 <__mempcpy> 0.00 : 147b7: c6 00 2f movb $0x2f,(%rax) 0.00 : 147ba: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 147be: 48 8d 78 01 lea 0x1(%rax),%rdi 0.00 : 147c2: 48 8b 51 08 mov 0x8(%rcx),%rdx 0.00 : 147c6: 48 8b 31 mov (%rcx),%rsi 0.00 : 147c9: e8 f2 28 00 00 callq 170c0 <__mempcpy> 0.00 : 147ce: c6 00 2f movb $0x2f,(%rax) 0.00 : 147d1: 48 c7 85 68 ff ff ff movq $0x1,-0x98(%rbp) 0.00 : 147d8: 01 00 00 00 0.00 : 147dc: e9 16 fe ff ff jmpq 145f7 <_dl_important_hwcaps+0x4d7> 0.00 : 147e1: 48 8b 5d 80 mov -0x80(%rbp),%rbx 0.00 : 147e5: 48 8b 3b mov (%rbx),%rdi 0.00 : 147e8: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 147ec: 48 8d 3c 38 lea (%rax,%rdi,1),%rdi 0.00 : 147f0: 48 89 38 mov %rdi,(%rax) 0.00 : 147f3: 48 8b 45 b0 mov -0x50(%rbp),%rax 0.00 : 147f7: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 147fb: 49 89 7f 10 mov %rdi,0x10(%r15) 0.00 : 147ff: 49 c7 47 18 00 00 00 movq $0x0,0x18(%r15) 0.00 : 14806: 00 0.00 : 14807: 48 8d 42 01 lea 0x1(%rdx),%rax 0.00 : 1480b: 49 89 47 08 mov %rax,0x8(%r15) 0.00 : 1480f: 48 8b 4d b0 mov -0x50(%rbp),%rcx 0.00 : 14813: 48 8b 31 mov (%rcx),%rsi 0.00 : 14816: e8 a5 28 00 00 callq 170c0 <__mempcpy> 0.00 : 1481b: c6 00 2f movb $0x2f,(%rax) 0.00 : 1481e: 48 c7 03 02 00 00 00 movq $0x2,(%rbx) 0.00 : 14825: 49 8b 47 08 mov 0x8(%r15),%rax 0.00 : 14829: 48 8b 9d 78 ff ff ff mov -0x88(%rbp),%rbx 0.00 : 14830: 48 89 03 mov %rax,(%rbx) 0.00 : 14833: e9 20 ff ff ff jmpq 14758 <_dl_important_hwcaps+0x638> 0.00 : 14838: 48 83 6d a8 01 subq $0x1,-0x58(%rbp) 0.00 : 1483d: e9 16 fb ff ff jmpq 14358 <_dl_important_hwcaps+0x238> 0.00 : 14842: 48 8d 0d 27 81 00 00 lea 0x8127(%rip),%rcx # 1c970 <__PRETTY_FUNCTION__.11989> 0.00 : 14849: 48 8d 35 92 59 00 00 lea 0x5992(%rip),%rsi # 1a1e2 <__PRETTY_FUNCTION__.12953+0x29> 0.00 : 14850: 48 8d 3d 9e 59 00 00 lea 0x599e(%rip),%rdi # 1a1f5 <__PRETTY_FUNCTION__.12953+0x3c> 0.00 : 14857: ba d5 01 00 00 mov $0x1d5,%edx 0.00 : 1485c: e8 0f 05 00 00 callq 14d70 <__GI___assert_fail> Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000444710 : 0.00 : 444710: 41 57 push %r15 0.00 : 444712: 49 89 ff mov %rdi,%r15 0.00 : 444715: 41 56 push %r14 0.00 : 444717: 41 55 push %r13 0.00 : 444719: 49 89 f5 mov %rsi,%r13 0.00 : 44471c: 41 54 push %r12 0.00 : 44471e: 55 push %rbp 0.00 : 44471f: 53 push %rbx 0.00 : 444720: 48 83 ec 08 sub $0x8,%rsp 0.00 : 444724: 48 85 f6 test %rsi,%rsi 0.00 : 444727: 0f 84 9d 00 00 00 je 4447ca 0.00 : 44472d: 83 e2 02 and $0x2,%edx 0.00 : 444730: 89 54 24 04 mov %edx,0x4(%rsp) 0.00 : 444734: 0f 84 df 00 00 00 je 444819 0.00 : 44473a: 45 0f b6 27 movzbl (%r15),%r12d 0.00 : 44473e: 31 ed xor %ebp,%ebp 0.00 : 444740: 45 31 f6 xor %r14d,%r14d 0.00 : 444743: 45 84 e4 test %r12b,%r12b 0.00 : 444746: 74 31 je 444779 0.00 : 444748: 4c 89 f9 mov %r15,%rcx 0.00 : 44474b: 44 89 e2 mov %r12d,%edx 0.00 : 44474e: 31 ed xor %ebp,%ebp 0.00 : 444750: 48 83 c1 01 add $0x1,%rcx 0.00 : 444754: 69 c5 93 01 00 01 imul $0x1000193,%ebp,%eax 0.00 : 44475a: 0f be ea movsbl %dl,%ebp 0.00 : 44475d: 0f b6 11 movzbl (%rcx),%edx 0.00 : 444760: 31 c5 xor %eax,%ebp 0.00 : 444762: 84 d2 test %dl,%dl 0.00 : 444764: 75 ea jne 444750 0.00 : 444766: 41 8b 45 08 mov 0x8(%r13),%eax 0.00 : 44476a: 83 e8 01 sub $0x1,%eax 0.00 : 44476d: 21 e8 and %ebp,%eax 0.00 : 44476f: 48 98 cltq 0.00 : 444771: 4c 8d 34 c5 00 00 00 lea 0x0(,%rax,8),%r14 0.00 : 444778: 00 0.00 : 444779: 49 8b 45 00 mov 0x0(%r13),%rax 0.00 : 44477d: 4a 8b 1c 30 mov (%rax,%r14,1),%rbx 0.00 : 444781: 48 85 db test %rbx,%rbx 0.00 : 444784: 75 12 jne 444798 0.00 : 444786: eb 38 jmp 4447c0 0.00 : 444788: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 44478f: 00 0.00 : 444790: 48 8b 1b mov (%rbx),%rbx 0.00 : 444793: 48 85 db test %rbx,%rbx 0.00 : 444796: 74 28 je 4447c0 0.00 : 444798: 39 6b 18 cmp %ebp,0x18(%rbx) 0.00 : 44479b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4447a0: 75 ee jne 444790 0.00 : 4447a2: 48 8b 7b 08 mov 0x8(%rbx),%rdi 0.00 : 4447a6: 44 38 27 cmp %r12b,(%rdi) 0.00 : 4447a9: 75 e5 jne 444790 ??:0 100.00 : 4447ab: 4c 89 fe mov %r15,%rsi 0.00 : 4447ae: e8 7d 21 fd ff callq 416930 0.00 : 4447b3: 85 c0 test %eax,%eax 0.00 : 4447b5: 75 d9 jne 444790 0.00 : 4447b7: 83 43 1c 01 addl $0x1,0x1c(%rbx) 0.00 : 4447bb: eb 0f jmp 4447cc 0.00 : 4447bd: 0f 1f 00 nopl (%rax) 0.00 : 4447c0: 44 8b 44 24 04 mov 0x4(%rsp),%r8d 0.00 : 4447c5: 45 85 c0 test %r8d,%r8d 0.00 : 4447c8: 75 16 jne 4447e0 0.00 : 4447ca: 31 db xor %ebx,%ebx 0.00 : 4447cc: 48 83 c4 08 add $0x8,%rsp 0.00 : 4447d0: 48 89 d8 mov %rbx,%rax 0.00 : 4447d3: 5b pop %rbx 0.00 : 4447d4: 5d pop %rbp 0.00 : 4447d5: 41 5c pop %r12 0.00 : 4447d7: 41 5d pop %r13 0.00 : 4447d9: 41 5e pop %r14 0.00 : 4447db: 41 5f pop %r15 0.00 : 4447dd: c3 retq 0.00 : 4447de: 66 90 xchg %ax,%ax 0.00 : 4447e0: bf 20 00 00 00 mov $0x20,%edi 0.00 : 4447e5: e8 d6 3a 01 00 callq 4582c0 0.00 : 4447ea: 49 8b 55 00 mov 0x0(%r13),%rdx 0.00 : 4447ee: 48 89 c3 mov %rax,%rbx 0.00 : 4447f1: 89 6b 18 mov %ebp,0x18(%rbx) 0.00 : 4447f4: c7 43 1c 00 00 00 00 movl $0x0,0x1c(%rbx) 0.00 : 4447fb: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 444802: 00 0.00 : 444803: 4c 89 7b 08 mov %r15,0x8(%rbx) 0.00 : 444807: 4a 8b 04 32 mov (%rdx,%r14,1),%rax 0.00 : 44480b: 41 83 45 0c 01 addl $0x1,0xc(%r13) 0.00 : 444810: 48 89 03 mov %rax,(%rbx) 0.00 : 444813: 4a 89 1c 32 mov %rbx,(%rdx,%r14,1) 0.00 : 444817: eb b3 jmp 4447cc 0.00 : 444819: 44 8b 4e 0c mov 0xc(%rsi),%r9d 0.00 : 44481d: 45 85 c9 test %r9d,%r9d 0.00 : 444820: 0f 85 14 ff ff ff jne 44473a 0.00 : 444826: eb a2 jmp 4447ca Sorted summary for file /bin/bash ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /bin/bash ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046dd40 : 0.00 : 46dd40: 48 89 5c 24 d8 mov %rbx,-0x28(%rsp) 0.00 : 46dd45: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) 0.00 : 46dd4a: 48 89 fb mov %rdi,%rbx 0.00 : 46dd4d: 4c 89 64 24 e8 mov %r12,-0x18(%rsp) 0.00 : 46dd52: 4c 89 6c 24 f0 mov %r13,-0x10(%rsp) 0.00 : 46dd57: 89 f5 mov %esi,%ebp 0.00 : 46dd59: 4c 89 74 24 f8 mov %r14,-0x8(%rsp) 0.00 : 46dd5e: 48 83 ec 38 sub $0x38,%rsp 0.00 : 46dd62: 40 80 fe 2f cmp $0x2f,%sil 0.00 : 46dd66: 76 0b jbe 46dd73 0.00 : 46dd68: e8 f3 86 fa ff callq 416460 <__ctype_get_mb_cur_max@plt> 0.00 : 46dd6d: 48 83 f8 01 cmp $0x1,%rax 0.00 : 46dd71: 77 35 ja 46dda8 0.00 : 46dd73: 48 89 df mov %rbx,%rdi 0.00 : 46dd76: 89 ee mov %ebp,%esi 0.00 : 46dd78: e8 03 8a fa ff callq 416780 0.00 : 46dd7d: 48 89 c3 mov %rax,%rbx 0.00 : 46dd80: 48 89 d8 mov %rbx,%rax 100.00 : 46dd83: 48 8b 6c 24 18 mov 0x18(%rsp),%rbp 0.00 : 46dd88: 48 8b 5c 24 10 mov 0x10(%rsp),%rbx 0.00 : 46dd8d: 4c 8b 64 24 20 mov 0x20(%rsp),%r12 0.00 : 46dd92: 4c 8b 6c 24 28 mov 0x28(%rsp),%r13 0.00 : 46dd97: 4c 8b 74 24 30 mov 0x30(%rsp),%r14 0.00 : 46dd9c: 48 83 c4 38 add $0x38,%rsp 0.00 : 46dda0: c3 retq 0.00 : 46dda1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 46dda8: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 46ddaf: 00 0.00 : 46ddb0: 48 89 df mov %rbx,%rdi 0.00 : 46ddb3: e8 38 86 fa ff callq 4163f0 0.00 : 46ddb8: 48 85 c0 test %rax,%rax 0.00 : 46ddbb: 49 89 c4 mov %rax,%r12 0.00 : 46ddbe: 74 3e je 46ddfe 0.00 : 46ddc0: 41 bd 01 00 00 00 mov $0x1,%r13d 0.00 : 46ddc6: eb 0b jmp 46ddd3 0.00 : 46ddc8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 46ddcf: 00 0.00 : 46ddd0: 48 01 d3 add %rdx,%rbx 0.00 : 46ddd3: 4c 89 e2 mov %r12,%rdx 0.00 : 46ddd6: 31 ff xor %edi,%edi 0.00 : 46ddd8: 48 89 e1 mov %rsp,%rcx 0.00 : 46dddb: 48 89 de mov %rbx,%rsi 0.00 : 46ddde: e8 6d 80 fa ff callq 415e50 0.00 : 46dde3: 48 89 c2 mov %rax,%rdx 0.00 : 46dde6: 48 8d 40 ff lea -0x1(%rax),%rax 0.00 : 46ddea: 48 83 f8 fd cmp $0xfffffffffffffffd,%rax 0.00 : 46ddee: 0f b6 03 movzbl (%rbx),%eax 0.00 : 46ddf1: 49 0f 43 d5 cmovae %r13,%rdx 0.00 : 46ddf5: 39 e8 cmp %ebp,%eax 0.00 : 46ddf7: 74 87 je 46dd80 0.00 : 46ddf9: 49 29 d4 sub %rdx,%r12 0.00 : 46ddfc: 75 d2 jne 46ddd0 0.00 : 46ddfe: 31 db xor %ebx,%ebx 0.00 : 46de00: e9 7b ff ff ff jmpq 46dd80 Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file ---------------------------------------------- Nothing higher than 0.5% Percent | Source code & Disassembly of ------------------------------------------------ Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469820 : 100.00 : 469820: ff 25 52 da 6f 00 jmpq *0x6fda52(%rip) # b67278 <_GLOBAL_OFFSET_TABLE_+0x278> 0.00 : 469826: 68 4c 00 00 00 pushq $0x4c 0.00 : 46982b: e9 20 fb ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 0000000000469ea0 : 100.00 : 469ea0: ff 25 12 d7 6f 00 jmpq *0x6fd712(%rip) # b675b8 <_GLOBAL_OFFSET_TABLE_+0x5b8> 0.00 : 469ea6: 68 b4 00 00 00 pushq $0xb4 0.00 : 469eab: e9 a0 f4 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .plt: : : 000000000046a090 : 100.00 : 46a090: ff 25 1a d6 6f 00 jmpq *0x6fd61a(%rip) # b676b0 <_GLOBAL_OFFSET_TABLE_+0x6b0> 0.00 : 46a096: 68 d3 00 00 00 pushq $0xd3 0.00 : 46a09b: e9 b0 f2 ff ff jmpq 469350 <_init+0x20> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:188 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000046c710 : : * This is used both in regular operation and during WAL replay. : */ : void : brinSetHeapBlockItemptr(Buffer buf, BlockNumber pagesPerRange, : BlockNumber heapBlk, ItemPointerData tid) : { 0.00 : 46c710: 55 push %rbp 0.00 : 46c711: 41 89 f1 mov %esi,%r9d 0.00 : 46c714: 41 89 d0 mov %edx,%r8d 0.00 : 46c717: 48 89 ce mov %rcx,%rsi 0.00 : 46c71a: 89 ca mov %ecx,%edx 0.00 : 46c71c: 41 89 d2 mov %edx,%r10d 0.00 : 46c71f: 49 89 f3 mov %rsi,%r11 0.00 : 46c722: 48 89 e5 mov %rsp,%rbp 0.00 : 46c725: 41 c1 ea 10 shr $0x10,%r10d 0.00 : 46c729: 49 c1 eb 20 shr $0x20,%r11 : RevmapContents *contents; : ItemPointerData *iptr; : Page page; : : /* The correct page should already be pinned and locked */ : page = BufferGetPage(buf); 0.00 : 46c72d: 85 ff test %edi,%edi : * This is used both in regular operation and during WAL replay. : */ : void : brinSetHeapBlockItemptr(Buffer buf, BlockNumber pagesPerRange, : BlockNumber heapBlk, ItemPointerData tid) : { 0.00 : 46c72f: 48 89 4d f8 mov %rcx,-0x8(%rbp) : RevmapContents *contents; : ItemPointerData *iptr; : Page page; : : /* The correct page should already be pinned and locked */ : page = BufferGetPage(buf); 0.00 : 46c733: 78 5b js 46c790 0.00 : 46c735: 8d 47 ff lea -0x1(%rdi),%eax 0.00 : 46c738: 48 63 f0 movslq %eax,%rsi 0.00 : 46c73b: 48 c1 e6 0d shl $0xd,%rsi 0.00 : 46c73f: 48 03 35 b2 33 75 00 add 0x7533b2(%rip),%rsi # bbfaf8 : contents = (RevmapContents *) PageGetContents(page); : iptr = (ItemPointerData *) contents->rm_tids; : iptr += HEAPBLK_TO_REVMAP_INDEX(pagesPerRange, heapBlk); 0.00 : 46c746: 44 89 c0 mov %r8d,%eax 0.00 : 46c749: 31 d2 xor %edx,%edx : : ItemPointerSet(iptr, 0.00 : 46c74b: c1 e1 10 shl $0x10,%ecx : : /* The correct page should already be pinned and locked */ : page = BufferGetPage(buf); : contents = (RevmapContents *) PageGetContents(page); : iptr = (ItemPointerData *) contents->rm_tids; : iptr += HEAPBLK_TO_REVMAP_INDEX(pagesPerRange, heapBlk); 0.00 : 46c74e: 41 f7 f1 div %r9d 0.00 : 46c751: ba c1 c0 c0 c0 mov $0xc0c0c0c1,%edx 0.00 : 46c756: 89 c7 mov %eax,%edi 0.00 : 46c758: f7 e2 mul %edx 0.00 : 46c75a: 89 f8 mov %edi,%eax 0.00 : 46c75c: c1 ea 0a shr $0xa,%edx 0.00 : 46c75f: 69 d2 50 05 00 00 imul $0x550,%edx,%edx 0.00 : 46c765: 29 d0 sub %edx,%eax : : ItemPointerSet(iptr, 0.00 : 46c767: 41 0f b7 d2 movzwl %r10w,%edx 0.00 : 46c76b: 09 d1 or %edx,%ecx 0.00 : 46c76d: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 46c771: 89 ca mov %ecx,%edx 0.00 : 46c773: 48 01 c0 add %rax,%rax 0.00 : 46c776: c1 ea 10 shr $0x10,%edx 0.00 : 46c779: 66 89 54 06 18 mov %dx,0x18(%rsi,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/access/brin/brin_revmap.c:188 100.00 : 46c77e: 48 8d 44 06 18 lea 0x18(%rsi,%rax,1),%rax 0.00 : 46c783: 66 89 48 02 mov %cx,0x2(%rax) 0.00 : 46c787: 66 44 89 58 04 mov %r11w,0x4(%rax) : ItemPointerGetBlockNumber(&tid), : ItemPointerGetOffsetNumber(&tid)); : } 0.00 : 46c78c: c9 leaveq 0.00 : 46c78d: c3 retq 0.00 : 46c78e: 66 90 xchg %ax,%ax : RevmapContents *contents; : ItemPointerData *iptr; : Page page; : : /* The correct page should already be pinned and locked */ : page = BufferGetPage(buf); 0.00 : 46c790: 48 8b 05 81 09 71 00 mov 0x710981(%rip),%rax # b7d118 0.00 : 46c797: f7 d7 not %edi 0.00 : 46c799: 48 63 d7 movslq %edi,%rdx 0.00 : 46c79c: 48 8b 34 d0 mov (%rax,%rdx,8),%rsi 0.00 : 46c7a0: eb a4 jmp 46c746 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:325 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a14a0 : : * (including the VARHDRSZ header) : * ---------- : */ : Size : toast_raw_datum_size(Datum value) : { 0.00 : 4a14a0: 55 push %rbp 0.00 : 4a14a1: 48 89 e5 mov %rsp,%rbp 0.00 : 4a14a4: 48 83 ec 10 sub $0x10,%rsp : struct varlena *attr = (struct varlena *) DatumGetPointer(value); : Size result; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a14a8: 0f b6 17 movzbl (%rdi),%edx 0.00 : 4a14ab: 80 fa 01 cmp $0x1,%dl 0.00 : 4a14ae: 74 30 je 4a14e0 : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(toast_pointer.pointer)); : : return toast_raw_datum_size(PointerGetDatum(toast_pointer.pointer)); : } : else if (VARATT_IS_COMPRESSED(attr)) 0.00 : 4a14b0: 0f b6 ca movzbl %dl,%ecx 0.00 : 4a14b3: 89 c8 mov %ecx,%eax 0.00 : 4a14b5: 83 e0 03 and $0x3,%eax 0.00 : 4a14b8: 83 f8 02 cmp $0x2,%eax 0.00 : 4a14bb: 74 13 je 4a14d0 : { : /* here, va_rawsize is just the payload size */ : result = VARRAWSIZE_4B_C(attr) + VARHDRSZ; : } : else if (VARATT_IS_SHORT(attr)) 0.00 : 4a14bd: 83 e1 01 and $0x1,%ecx 0.00 : 4a14c0: 75 2a jne 4a14ec : result = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT + VARHDRSZ; : } : else : { : /* plain untoasted datum */ : result = VARSIZE(attr); 0.00 : 4a14c2: 8b 07 mov (%rdi),%eax : } : return result; : } 0.00 : 4a14c4: c9 leaveq : result = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT + VARHDRSZ; : } : else : { : /* plain untoasted datum */ : result = VARSIZE(attr); 0.00 : 4a14c5: c1 e8 02 shr $0x2,%eax 0.00 : 4a14c8: 89 c0 mov %eax,%eax : } : return result; : } 0.00 : 4a14ca: c3 retq 0.00 : 4a14cb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : return toast_raw_datum_size(PointerGetDatum(toast_pointer.pointer)); : } : else if (VARATT_IS_COMPRESSED(attr)) : { : /* here, va_rawsize is just the payload size */ : result = VARRAWSIZE_4B_C(attr) + VARHDRSZ; 0.00 : 4a14d0: 8b 47 04 mov 0x4(%rdi),%eax : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a14d3: c9 leaveq : return toast_raw_datum_size(PointerGetDatum(toast_pointer.pointer)); : } : else if (VARATT_IS_COMPRESSED(attr)) : { : /* here, va_rawsize is just the payload size */ : result = VARRAWSIZE_4B_C(attr) + VARHDRSZ; 0.00 : 4a14d4: 83 c0 04 add $0x4,%eax : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a14d7: c3 retq 0.00 : 4a14d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4a14df: 00 : toast_raw_datum_size(Datum value) : { : struct varlena *attr = (struct varlena *) DatumGetPointer(value); : Size result; : : if (VARATT_IS_EXTERNAL_ONDISK(attr)) 0.00 : 4a14e0: 0f b6 47 01 movzbl 0x1(%rdi),%eax 0.00 : 4a14e4: 3c 12 cmp $0x12,%al 0.00 : 4a14e6: 74 18 je 4a1500 : struct varatt_external toast_pointer; : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); : result = toast_pointer.va_rawsize; : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) 0.00 : 4a14e8: 2c 01 sub $0x1,%al 0.00 : 4a14ea: 74 24 je 4a1510 : { : /* : * we have to normalize the header length to VARHDRSZ or else the : * callers of this function will be confused. : */ : result = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT + VARHDRSZ; 0.00 : 4a14ec: d0 ea shr %dl : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a14ee: c9 leaveq : { : /* : * we have to normalize the header length to VARHDRSZ or else the : * callers of this function will be confused. : */ : result = VARSIZE_SHORT(attr) - VARHDRSZ_SHORT + VARHDRSZ; 0.00 : 4a14ef: 0f b6 c2 movzbl %dl,%eax /home/Computational/mark/src/postgres-andres/src/backend/access/heap/tuptoaster.c:325 100.00 : 4a14f2: 48 83 c0 03 add $0x3,%rax : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a14f6: c3 retq 0.00 : 4a14f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4a14fe: 00 00 : if (VARATT_IS_EXTERNAL_ONDISK(attr)) : { : /* va_rawsize is the size of the original datum -- including header */ : struct varatt_external toast_pointer; : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); 0.00 : 4a1500: 48 8b 47 02 mov 0x2(%rdi),%rax 0.00 : 4a1504: 48 89 45 f0 mov %rax,-0x10(%rbp) : result = toast_pointer.va_rawsize; 0.00 : 4a1508: 48 63 45 f0 movslq -0x10(%rbp),%rax : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a150c: c9 leaveq 0.00 : 4a150d: c3 retq 0.00 : 4a150e: 66 90 xchg %ax,%ax : } : else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) : { : struct varatt_indirect toast_pointer; : : VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); 0.00 : 4a1510: 48 8b 7f 02 mov 0x2(%rdi),%rdi 0.00 : 4a1514: 48 89 7d f0 mov %rdi,-0x10(%rbp) : : /* nested indirect Datums aren't allowed */ : Assert(!VARATT_IS_EXTERNAL_INDIRECT(toast_pointer.pointer)); : : return toast_raw_datum_size(PointerGetDatum(toast_pointer.pointer)); 0.00 : 4a1518: e8 83 ff ff ff callq 4a14a0 : { : /* plain untoasted datum */ : result = VARSIZE(attr); : } : return result; : } 0.00 : 4a151d: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:57 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a5be0 : : #include "utils/sortsupport.h" : : : Datum : btboolcmp(PG_FUNCTION_ARGS) : { 0.00 : 4a5be0: 31 c0 xor %eax,%eax 0.00 : 4a5be2: 80 7f 20 00 cmpb $0x0,0x20(%rdi) 0.00 : 4a5be6: 55 push %rbp 0.00 : 4a5be7: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtcompare.c:57 100.00 : 4a5bea: 0f 95 c0 setne %al 0.00 : 4a5bed: 31 d2 xor %edx,%edx 0.00 : 4a5bef: 80 7f 28 00 cmpb $0x0,0x28(%rdi) : bool a = PG_GETARG_BOOL(0); : bool b = PG_GETARG_BOOL(1); : : PG_RETURN_INT32((int32) a - (int32) b); : } 0.00 : 4a5bf3: c9 leaveq : #include "utils/sortsupport.h" : : : Datum : btboolcmp(PG_FUNCTION_ARGS) : { 0.00 : 4a5bf4: 0f 95 c2 setne %dl 0.00 : 4a5bf7: 29 d0 sub %edx,%eax Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:760 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004a8f10 <_bt_page_recyclable>: : * This exists to make sure _bt_getbuf and btvacuumscan have the same : * policy about whether a page is safe to re-use. : */ : bool : _bt_page_recyclable(Page page) : { 0.00 : 4a8f10: 55 push %rbp : * It's possible to find an all-zeroes page in an index --- for example, a : * backend might successfully extend the relation one page and then crash : * before it is able to make a WAL entry for adding the page. If we find a : * zeroed page then reclaim it. : */ : if (PageIsNew(page)) 0.00 : 4a8f11: 66 83 7f 0e 00 cmpw $0x0,0xe(%rdi) 0.00 : 4a8f16: b8 01 00 00 00 mov $0x1,%eax : * This exists to make sure _bt_getbuf and btvacuumscan have the same : * policy about whether a page is safe to re-use. : */ : bool : _bt_page_recyclable(Page page) : { 0.00 : 4a8f1b: 48 89 e5 mov %rsp,%rbp : * It's possible to find an all-zeroes page in an index --- for example, a : * backend might successfully extend the relation one page and then crash : * before it is able to make a WAL entry for adding the page. If we find a : * zeroed page then reclaim it. : */ : if (PageIsNew(page)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:760 100.00 : 4a8f1e: 74 10 je 4a8f30 <_bt_page_recyclable+0x20> : : /* : * Otherwise, recycle if deleted and too old to have any processes : * interested in it. : */ : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4a8f20: 0f b7 47 10 movzwl 0x10(%rdi),%eax 0.00 : 4a8f24: 48 8d 14 07 lea (%rdi,%rax,1),%rdx : if (P_ISDELETED(opaque) && 0.00 : 4a8f28: 31 c0 xor %eax,%eax 0.00 : 4a8f2a: f6 42 0c 04 testb $0x4,0xc(%rdx) 0.00 : 4a8f2e: 75 08 jne 4a8f38 <_bt_page_recyclable+0x28> : TransactionIdPrecedes(opaque->btpo.xact, RecentGlobalXmin)) : return true; : return false; : } 0.00 : 4a8f30: c9 leaveq 0.00 : 4a8f31: c3 retq 0.00 : 4a8f32: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * Otherwise, recycle if deleted and too old to have any processes : * interested in it. : */ : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : if (P_ISDELETED(opaque) && 0.00 : 4a8f38: 8b 7a 08 mov 0x8(%rdx),%edi 0.00 : 4a8f3b: 8b 35 bf 19 71 00 mov 0x7119bf(%rip),%esi # bba900 0.00 : 4a8f41: e8 9a 70 01 00 callq 4bffe0 0.00 : 4a8f46: 84 c0 test %al,%al : TransactionIdPrecedes(opaque->btpo.xact, RecentGlobalXmin)) : return true; : return false; : } 0.00 : 4a8f48: c9 leaveq : /* : * Otherwise, recycle if deleted and too old to have any processes : * interested in it. : */ : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : if (P_ISDELETED(opaque) && 0.00 : 4a8f49: 0f 95 c0 setne %al Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:162 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004aac20 <_bt_getroot>: : * On successful return, the root page is pinned and read-locked. : * The metadata page is not locked or pinned on exit. : */ : Buffer : _bt_getroot(Relation rel, int access) : { 0.00 : 4aac20: 55 push %rbp 0.00 : 4aac21: 48 89 e5 mov %rsp,%rbp 0.00 : 4aac24: 41 57 push %r15 0.00 : 4aac26: 41 56 push %r14 0.00 : 4aac28: 49 89 fe mov %rdi,%r14 0.00 : 4aac2b: 41 55 push %r13 0.00 : 4aac2d: 41 89 f5 mov %esi,%r13d 0.00 : 4aac30: 41 54 push %r12 0.00 : 4aac32: 53 push %rbx 0.00 : 4aac33: 48 83 ec 58 sub $0x58,%rsp : /* : * Try to use previously-cached metapage data to find the root. This : * normally saves one buffer access per index search, which is a very : * helpful savings in bufmgr traffic and hence contention. : */ : if (rel->rd_amcache != NULL) 0.00 : 4aac37: 48 8b 87 18 01 00 00 mov 0x118(%rdi),%rax 0.00 : 4aac3e: 48 85 c0 test %rax,%rax 0.00 : 4aac41: 74 6a je 4aacad <_bt_getroot+0x8d> : : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; : : rootbuf = _bt_getbuf(rel, rootblkno, BT_READ); 0.00 : 4aac43: 8b 70 10 mov 0x10(%rax),%esi 0.00 : 4aac46: ba 01 00 00 00 mov $0x1,%edx : Assert(metad->btm_version == BTREE_VERSION); : Assert(metad->btm_root != P_NONE); : : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; 0.00 : 4aac4b: 8b 58 14 mov 0x14(%rax),%ebx : : rootbuf = _bt_getbuf(rel, rootblkno, BT_READ); 0.00 : 4aac4e: e8 fd e3 ff ff callq 4a9050 <_bt_getbuf> : rootpage = BufferGetPage(rootbuf); 0.00 : 4aac53: 85 c0 test %eax,%eax : : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; : : rootbuf = _bt_getbuf(rel, rootblkno, BT_READ); 0.00 : 4aac55: 41 89 c4 mov %eax,%r12d : rootpage = BufferGetPage(rootbuf); 0.00 : 4aac58: 0f 88 6a 02 00 00 js 4aaec8 <_bt_getroot+0x2a8> 0.00 : 4aac5e: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4aac63: 48 63 d0 movslq %eax,%rdx 0.00 : 4aac66: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4aac6a: 48 03 15 87 4e 71 00 add 0x714e87(%rip),%rdx # bbfaf8 : rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage); 0.00 : 4aac71: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 4aac75: 48 01 c2 add %rax,%rdx : * here than normal. We *must* check that it's not deleted. If it's : * not alone on its level, then we reject too --- this may be overly : * paranoid but better safe than sorry. Note we don't check P_ISROOT, : * because that's not set in a "fast root". : */ : if (!P_IGNORE(rootopaque) && 0.00 : 4aac78: 0f b7 42 0c movzwl 0xc(%rdx),%eax 0.00 : 4aac7c: a8 14 test $0x14,%al 0.00 : 4aac7e: 75 09 jne 4aac89 <_bt_getroot+0x69> 0.00 : 4aac80: 39 5a 08 cmp %ebx,0x8(%rdx) 0.00 : 4aac83: 0f 84 57 02 00 00 je 4aaee0 <_bt_getroot+0x2c0> : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { : UnlockReleaseBuffer(buf); 0.00 : 4aac89: 44 89 e7 mov %r12d,%edi 0.00 : 4aac8c: e8 9f a2 1c 00 callq 674f30 : /* OK, accept cached page as the root */ : return rootbuf; : } : _bt_relbuf(rel, rootbuf); : /* Cache is stale, throw it away */ : if (rel->rd_amcache) 0.00 : 4aac91: 49 8b be 18 01 00 00 mov 0x118(%r14),%rdi 0.00 : 4aac98: 48 85 ff test %rdi,%rdi 0.00 : 4aac9b: 74 05 je 4aaca2 <_bt_getroot+0x82> : pfree(rel->rd_amcache); 0.00 : 4aac9d: e8 de de 2e 00 callq 798b80 : rel->rd_amcache = NULL; 0.00 : 4aaca2: 49 c7 86 18 01 00 00 movq $0x0,0x118(%r14) 0.00 : 4aaca9: 00 00 00 00 : } : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_READ); 0.00 : 4aacad: 31 f6 xor %esi,%esi 0.00 : 4aacaf: ba 01 00 00 00 mov $0x1,%edx 0.00 : 4aacb4: 4c 89 f7 mov %r14,%rdi 0.00 : 4aacb7: e8 94 e3 ff ff callq 4a9050 <_bt_getbuf> : metapg = BufferGetPage(metabuf); 0.00 : 4aacbc: 85 c0 test %eax,%eax : if (rel->rd_amcache) : pfree(rel->rd_amcache); : rel->rd_amcache = NULL; : } : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_READ); 0.00 : 4aacbe: 41 89 c0 mov %eax,%r8d : metapg = BufferGetPage(metabuf); 0.00 : 4aacc1: 0f 88 e9 01 00 00 js 4aaeb0 <_bt_getroot+0x290> 0.00 : 4aacc7: 41 8d 40 ff lea -0x1(%r8),%eax 0.00 : 4aaccb: 48 63 d8 movslq %eax,%rbx 0.00 : 4aacce: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 4aacd2: 48 03 1d 1f 4e 71 00 add 0x714e1f(%rip),%rbx # bbfaf8 : metaopaque = (BTPageOpaque) PageGetSpecialPointer(metapg); : metad = BTPageGetMeta(metapg); : : /* sanity-check the metapage */ : if (!(metaopaque->btpo_flags & BTP_META) || 0.00 : 4aacd9: 0f b7 43 10 movzwl 0x10(%rbx),%eax 0.00 : 4aacdd: f6 44 03 0c 08 testb $0x8,0xc(%rbx,%rax,1) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtpage.c:162 100.00 : 4aace2: 74 0d je 4aacf1 <_bt_getroot+0xd1> 0.00 : 4aace4: 81 7b 18 62 31 05 00 cmpl $0x53162,0x18(%rbx) : } : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_READ); : metapg = BufferGetPage(metabuf); : metaopaque = (BTPageOpaque) PageGetSpecialPointer(metapg); : metad = BTPageGetMeta(metapg); 0.00 : 4aaceb: 4c 8d 7b 18 lea 0x18(%rbx),%r15 : : /* sanity-check the metapage */ : if (!(metaopaque->btpo_flags & BTP_META) || 0.00 : 4aacef: 74 5f je 4aad50 <_bt_getroot+0x130> : metad->btm_magic != BTREE_MAGIC) : ereport(ERROR, 0.00 : 4aacf1: 45 31 c0 xor %r8d,%r8d 0.00 : 4aacf4: b9 50 47 7b 00 mov $0x7b4750,%ecx 0.00 : 4aacf9: ba a7 00 00 00 mov $0xa7,%edx 0.00 : 4aacfe: be 22 43 7b 00 mov $0x7b4322,%esi 0.00 : 4aad03: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4aad08: e8 b3 fd 2c 00 callq 77aac0 0.00 : 4aad0d: 84 c0 test %al,%al 0.00 : 4aad0f: 75 0f jne 4aad20 <_bt_getroot+0x100> : rootblkno = rootopaque->btpo_next; : } : : /* Note: can't check btpo.level on deleted pages */ : if (rootopaque->btpo.level != rootlevel) : elog(ERROR, "root page %u of index \"%s\" has level %u, expected %u", 0.00 : 4aad11: e8 ba e7 fb ff callq 4694d0 0.00 : 4aad16: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4aad1d: 00 00 00 : metad = BTPageGetMeta(metapg); : : /* sanity-check the metapage */ : if (!(metaopaque->btpo_flags & BTP_META) || : metad->btm_magic != BTREE_MAGIC) : ereport(ERROR, 0.00 : 4aad20: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 4aad24: bf 4a 43 7b 00 mov $0x7b434a,%edi 0.00 : 4aad29: 31 c0 xor %eax,%eax 0.00 : 4aad2b: e8 70 1b 2d 00 callq 77c8a0 : (errcode(ERRCODE_INDEX_CORRUPTED), : errmsg("index \"%s\" is not a btree", : RelationGetRelationName(rel)))); : : if (metad->btm_version != BTREE_VERSION) : ereport(ERROR, 0.00 : 4aad30: 89 c3 mov %eax,%ebx 0.00 : 4aad32: bf 28 0a 00 02 mov $0x2000a28,%edi 0.00 : 4aad37: e8 14 20 2d 00 callq 77cd50 0.00 : 4aad3c: 89 de mov %ebx,%esi 0.00 : 4aad3e: 89 c7 mov %eax,%edi 0.00 : 4aad40: 31 c0 xor %eax,%eax 0.00 : 4aad42: e8 99 f8 2c 00 callq 77a5e0 : rootblkno = rootopaque->btpo_next; : } : : /* Note: can't check btpo.level on deleted pages */ : if (rootopaque->btpo.level != rootlevel) : elog(ERROR, "root page %u of index \"%s\" has level %u, expected %u", 0.00 : 4aad47: e8 84 e7 fb ff callq 4694d0 0.00 : 4aad4c: 0f 1f 40 00 nopl 0x0(%rax) : ereport(ERROR, : (errcode(ERRCODE_INDEX_CORRUPTED), : errmsg("index \"%s\" is not a btree", : RelationGetRelationName(rel)))); : : if (metad->btm_version != BTREE_VERSION) 0.00 : 4aad50: 41 83 7f 04 02 cmpl $0x2,0x4(%r15) 0.00 : 4aad55: 0f 85 7b 03 00 00 jne 4ab0d6 <_bt_getroot+0x4b6> : errmsg("version mismatch in index \"%s\": file version %d, code version %d", : RelationGetRelationName(rel), : metad->btm_version, BTREE_VERSION))); : : /* if no root page initialized yet, do it */ : if (metad->btm_root == P_NONE) 0.00 : 4aad5b: 45 8b 57 08 mov 0x8(%r15),%r10d 0.00 : 4aad5f: 45 85 d2 test %r10d,%r10d 0.00 : 4aad62: 0f 85 a8 01 00 00 jne 4aaf10 <_bt_getroot+0x2f0> : { : /* If access = BT_READ, caller doesn't want us to create root yet */ : if (access == BT_READ) 0.00 : 4aad68: 41 83 fd 01 cmp $0x1,%r13d 0.00 : 4aad6c: 0f 84 8e 01 00 00 je 4aaf00 <_bt_getroot+0x2e0> : _bt_relbuf(rel, metabuf); : return InvalidBuffer; : } : : /* trade in our read lock for a write lock */ : LockBuffer(metabuf, BUFFER_LOCK_UNLOCK); 0.00 : 4aad72: 31 f6 xor %esi,%esi 0.00 : 4aad74: 44 89 c7 mov %r8d,%edi 0.00 : 4aad77: 44 89 45 80 mov %r8d,-0x80(%rbp) 0.00 : 4aad7b: e8 90 99 1c 00 callq 674710 : LockBuffer(metabuf, BT_WRITE); 0.00 : 4aad80: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aad84: be 02 00 00 00 mov $0x2,%esi 0.00 : 4aad89: 44 89 c7 mov %r8d,%edi 0.00 : 4aad8c: e8 7f 99 1c 00 callq 674710 : /* : * Race condition: if someone else initialized the metadata between : * the time we released the read lock and acquired the write lock, we : * must avoid doing it again. : */ : if (metad->btm_root != P_NONE) 0.00 : 4aad91: 45 8b 4f 08 mov 0x8(%r15),%r9d 0.00 : 4aad95: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aad99: 45 85 c9 test %r9d,%r9d 0.00 : 4aad9c: 0f 85 66 02 00 00 jne 4ab008 <_bt_getroot+0x3e8> : /* : * Get, initialize, write, and leave a lock of the appropriate type on : * the new root page. Since this is the first page in the tree, it's : * a leaf as well as the root. : */ : rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); 0.00 : 4aada2: ba 02 00 00 00 mov $0x2,%edx 0.00 : 4aada7: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 4aadac: 4c 89 f7 mov %r14,%rdi 0.00 : 4aadaf: 44 89 45 80 mov %r8d,-0x80(%rbp) 0.00 : 4aadb3: e8 98 e2 ff ff callq 4a9050 <_bt_getbuf> 0.00 : 4aadb8: 41 89 c4 mov %eax,%r12d : rootblkno = BufferGetBlockNumber(rootbuf); 0.00 : 4aadbb: 89 c7 mov %eax,%edi 0.00 : 4aadbd: e8 6e 92 1c 00 callq 674030 : rootpage = BufferGetPage(rootbuf); 0.00 : 4aadc2: 45 85 e4 test %r12d,%r12d : * Get, initialize, write, and leave a lock of the appropriate type on : * the new root page. Since this is the first page in the tree, it's : * a leaf as well as the root. : */ : rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); : rootblkno = BufferGetBlockNumber(rootbuf); 0.00 : 4aadc5: 89 45 88 mov %eax,-0x78(%rbp) : rootpage = BufferGetPage(rootbuf); 0.00 : 4aadc8: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aadcc: 0f 88 56 02 00 00 js 4ab028 <_bt_getroot+0x408> 0.00 : 4aadd2: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4aadd7: 4c 63 e8 movslq %eax,%r13 0.00 : 4aadda: 49 c1 e5 0d shl $0xd,%r13 0.00 : 4aadde: 4c 03 2d 13 4d 71 00 add 0x714d13(%rip),%r13 # bbfaf8 : rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage); 0.00 : 4aade5: 41 0f b7 45 10 movzwl 0x10(%r13),%eax : metad->btm_root = rootblkno; : metad->btm_level = 0; : metad->btm_fastroot = rootblkno; : metad->btm_fastlevel = 0; : : MarkBufferDirty(rootbuf); 0.00 : 4aadea: 44 89 e7 mov %r12d,%edi : * a leaf as well as the root. : */ : rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); : rootblkno = BufferGetBlockNumber(rootbuf); : rootpage = BufferGetPage(rootbuf); : rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage); 0.00 : 4aaded: 49 8d 44 05 00 lea 0x0(%r13,%rax,1),%rax : rootopaque->btpo_prev = rootopaque->btpo_next = P_NONE; 0.00 : 4aadf2: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) 0.00 : 4aadf9: c7 00 00 00 00 00 movl $0x0,(%rax) : rootopaque->btpo_flags = (BTP_LEAF | BTP_ROOT); 0.00 : 4aadff: 66 c7 40 0c 03 00 movw $0x3,0xc(%rax) : rootopaque->btpo.level = 0; 0.00 : 4aae05: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : rootopaque->btpo_cycleid = 0; 0.00 : 4aae0c: 66 c7 40 0e 00 00 movw $0x0,0xe(%rax) : : /* NO ELOG(ERROR) till meta is updated */ : START_CRIT_SECTION(); 0.00 : 4aae12: 8b 05 84 f2 70 00 mov 0x70f284(%rip),%eax # bba09c 0.00 : 4aae18: 83 c0 01 add $0x1,%eax 0.00 : 4aae1b: 89 05 7b f2 70 00 mov %eax,0x70f27b(%rip) # bba09c : : metad->btm_root = rootblkno; 0.00 : 4aae21: 8b 45 88 mov -0x78(%rbp),%eax : metad->btm_level = 0; 0.00 : 4aae24: 41 c7 47 0c 00 00 00 movl $0x0,0xc(%r15) 0.00 : 4aae2b: 00 : metad->btm_fastroot = rootblkno; : metad->btm_fastlevel = 0; 0.00 : 4aae2c: 41 c7 47 14 00 00 00 movl $0x0,0x14(%r15) 0.00 : 4aae33: 00 : rootopaque->btpo_cycleid = 0; : : /* NO ELOG(ERROR) till meta is updated */ : START_CRIT_SECTION(); : : metad->btm_root = rootblkno; 0.00 : 4aae34: 41 89 47 08 mov %eax,0x8(%r15) : metad->btm_level = 0; : metad->btm_fastroot = rootblkno; 0.00 : 4aae38: 41 89 47 10 mov %eax,0x10(%r15) : metad->btm_fastlevel = 0; : : MarkBufferDirty(rootbuf); 0.00 : 4aae3c: 44 89 45 80 mov %r8d,-0x80(%rbp) 0.00 : 4aae40: e8 ab 99 1c 00 callq 6747f0 : MarkBufferDirty(metabuf); 0.00 : 4aae45: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aae49: 44 89 c7 mov %r8d,%edi 0.00 : 4aae4c: e8 9f 99 1c 00 callq 6747f0 : : /* XLOG stuff */ : if (RelationNeedsWAL(rel)) 0.00 : 4aae51: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 4aae55: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aae59: 80 78 6e 70 cmpb $0x70,0x6e(%rax) 0.00 : 4aae5d: 0f 84 0a 02 00 00 je 4ab06d <_bt_getroot+0x44d> : : PageSetLSN(rootpage, recptr); : PageSetLSN(metapg, recptr); : } : : END_CRIT_SECTION(); 0.00 : 4aae63: 8b 05 33 f2 70 00 mov 0x70f233(%rip),%eax # bba09c : /* : * swap root write lock for read lock. There is no danger of anyone : * else accessing the new root page while it's unlocked, since no one : * else knows where it is yet. : */ : LockBuffer(rootbuf, BUFFER_LOCK_UNLOCK); 0.00 : 4aae69: 31 f6 xor %esi,%esi 0.00 : 4aae6b: 44 89 e7 mov %r12d,%edi 0.00 : 4aae6e: 44 89 45 80 mov %r8d,-0x80(%rbp) : : PageSetLSN(rootpage, recptr); : PageSetLSN(metapg, recptr); : } : : END_CRIT_SECTION(); 0.00 : 4aae72: 83 e8 01 sub $0x1,%eax 0.00 : 4aae75: 89 05 21 f2 70 00 mov %eax,0x70f221(%rip) # bba09c : /* : * swap root write lock for read lock. There is no danger of anyone : * else accessing the new root page while it's unlocked, since no one : * else knows where it is yet. : */ : LockBuffer(rootbuf, BUFFER_LOCK_UNLOCK); 0.00 : 4aae7b: e8 90 98 1c 00 callq 674710 : LockBuffer(rootbuf, BT_READ); 0.00 : 4aae80: 44 89 e7 mov %r12d,%edi 0.00 : 4aae83: be 01 00 00 00 mov $0x1,%esi 0.00 : 4aae88: e8 83 98 1c 00 callq 674710 : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { : UnlockReleaseBuffer(buf); 0.00 : 4aae8d: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aae91: 44 89 c7 mov %r8d,%edi 0.00 : 4aae94: e8 97 a0 1c 00 callq 674f30 : /* : * By here, we have a pin and read lock on the root page, and no lock set : * on the metadata page. Return the root page's buffer. : */ : return rootbuf; : } 0.00 : 4aae99: 48 83 c4 58 add $0x58,%rsp 0.00 : 4aae9d: 44 89 e0 mov %r12d,%eax 0.00 : 4aaea0: 5b pop %rbx 0.00 : 4aaea1: 41 5c pop %r12 0.00 : 4aaea3: 41 5d pop %r13 0.00 : 4aaea5: 41 5e pop %r14 0.00 : 4aaea7: 41 5f pop %r15 0.00 : 4aaea9: c9 leaveq 0.00 : 4aaeaa: c3 retq 0.00 : 4aaeab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : pfree(rel->rd_amcache); : rel->rd_amcache = NULL; : } : : metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_READ); : metapg = BufferGetPage(metabuf); 0.00 : 4aaeb0: 48 8b 15 61 22 6d 00 mov 0x6d2261(%rip),%rdx # b7d118 0.00 : 4aaeb7: f7 d0 not %eax 0.00 : 4aaeb9: 48 98 cltq 0.00 : 4aaebb: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 4aaebf: e9 15 fe ff ff jmpq 4aacd9 <_bt_getroot+0xb9> 0.00 : 4aaec4: 0f 1f 40 00 nopl 0x0(%rax) : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; : : rootbuf = _bt_getbuf(rel, rootblkno, BT_READ); : rootpage = BufferGetPage(rootbuf); 0.00 : 4aaec8: 48 8b 15 49 22 6d 00 mov 0x6d2249(%rip),%rdx # b7d118 0.00 : 4aaecf: f7 d0 not %eax 0.00 : 4aaed1: 48 98 cltq 0.00 : 4aaed3: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4aaed7: e9 95 fd ff ff jmpq 4aac71 <_bt_getroot+0x51> 0.00 : 4aaedc: 0f 1f 40 00 nopl 0x0(%rax) : * here than normal. We *must* check that it's not deleted. If it's : * not alone on its level, then we reject too --- this may be overly : * paranoid but better safe than sorry. Note we don't check P_ISROOT, : * because that's not set in a "fast root". : */ : if (!P_IGNORE(rootopaque) && 0.00 : 4aaee0: 8b 1a mov (%rdx),%ebx 0.00 : 4aaee2: 85 db test %ebx,%ebx 0.00 : 4aaee4: 0f 85 9f fd ff ff jne 4aac89 <_bt_getroot+0x69> 0.00 : 4aaeea: 44 8b 5a 04 mov 0x4(%rdx),%r11d 0.00 : 4aaeee: 45 85 db test %r11d,%r11d 0.00 : 4aaef1: 0f 85 92 fd ff ff jne 4aac89 <_bt_getroot+0x69> 0.00 : 4aaef7: eb a0 jmp 4aae99 <_bt_getroot+0x279> 0.00 : 4aaef9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { : UnlockReleaseBuffer(buf); 0.00 : 4aaf00: 44 89 c7 mov %r8d,%edi 0.00 : 4aaf03: 45 31 e4 xor %r12d,%r12d 0.00 : 4aaf06: e8 25 a0 1c 00 callq 674f30 : /* : * By here, we have a pin and read lock on the root page, and no lock set : * on the metadata page. Return the root page's buffer. : */ : return rootbuf; : } 0.00 : 4aaf0b: eb 8c jmp 4aae99 <_bt_getroot+0x279> 0.00 : 4aaf0d: 0f 1f 00 nopl (%rax) : } : else : { : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; 0.00 : 4aaf10: 41 8b 47 14 mov 0x14(%r15),%eax : : /* : * Cache the metapage data for next time : */ : rel->rd_amcache = MemoryContextAlloc(rel->rd_indexcxt, 0.00 : 4aaf14: 49 8b be b8 00 00 00 mov 0xb8(%r14),%rdi 0.00 : 4aaf1b: be 18 00 00 00 mov $0x18,%esi : /* okay, metadata is correct, release lock on it */ : _bt_relbuf(rel, metabuf); : } : else : { : rootblkno = metad->btm_fastroot; 0.00 : 4aaf20: 45 8b 6f 10 mov 0x10(%r15),%r13d : rootlevel = metad->btm_fastlevel; : : /* : * Cache the metapage data for next time : */ : rel->rd_amcache = MemoryContextAlloc(rel->rd_indexcxt, 0.00 : 4aaf24: 44 89 45 80 mov %r8d,-0x80(%rbp) : } : else : { : rootblkno = metad->btm_fastroot; : Assert(rootblkno != P_NONE); : rootlevel = metad->btm_fastlevel; 0.00 : 4aaf28: 89 45 8c mov %eax,-0x74(%rbp) : : /* : * Cache the metapage data for next time : */ : rel->rd_amcache = MemoryContextAlloc(rel->rd_indexcxt, 0.00 : 4aaf2b: e8 60 df 2e 00 callq 798e90 0.00 : 4aaf30: 49 89 86 18 01 00 00 mov %rax,0x118(%r14) : sizeof(BTMetaPageData)); : memcpy(rel->rd_amcache, metad, sizeof(BTMetaPageData)); 0.00 : 4aaf37: 49 8b 17 mov (%r15),%rdx 0.00 : 4aaf3a: 48 89 10 mov %rdx,(%rax) 0.00 : 4aaf3d: 49 8b 57 08 mov 0x8(%r15),%rdx 0.00 : 4aaf41: 48 89 50 08 mov %rdx,0x8(%rax) 0.00 : 4aaf45: 49 8b 57 10 mov 0x10(%r15),%rdx 0.00 : 4aaf49: 48 89 50 10 mov %rdx,0x10(%rax) 0.00 : 4aaf4d: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4aaf51: 45 89 c4 mov %r8d,%r12d 0.00 : 4aaf54: eb 3a jmp 4aaf90 <_bt_getroot+0x370> 0.00 : 4aaf56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 4aaf5d: 00 00 00 : rootbuf = metabuf; : : for (;;) : { : rootbuf = _bt_relandgetbuf(rel, rootbuf, rootblkno, BT_READ); : rootpage = BufferGetPage(rootbuf); 0.00 : 4aaf60: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4aaf65: 48 63 d0 movslq %eax,%rdx 0.00 : 4aaf68: 48 c1 e2 0d shl $0xd,%rdx 0.00 : 4aaf6c: 48 03 15 85 4b 71 00 add 0x714b85(%rip),%rdx # bbfaf8 : rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage); 0.00 : 4aaf73: 0f b7 42 10 movzwl 0x10(%rdx),%eax 0.00 : 4aaf77: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : : if (!P_IGNORE(rootopaque)) 0.00 : 4aaf7b: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 4aaf7f: a8 14 test $0x14,%al 0.00 : 4aaf81: 74 3d je 4aafc0 <_bt_getroot+0x3a0> : break; : : /* it's dead, Jim. step right one page */ : if (P_RIGHTMOST(rootopaque)) 0.00 : 4aaf83: 44 8b 6b 04 mov 0x4(%rbx),%r13d 0.00 : 4aaf87: 45 85 ed test %r13d,%r13d 0.00 : 4aaf8a: 0f 84 af 00 00 00 je 4ab03f <_bt_getroot+0x41f> : */ : rootbuf = metabuf; : : for (;;) : { : rootbuf = _bt_relandgetbuf(rel, rootbuf, rootblkno, BT_READ); 0.00 : 4aaf90: 44 89 e6 mov %r12d,%esi 0.00 : 4aaf93: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 4aaf98: 44 89 ea mov %r13d,%edx 0.00 : 4aaf9b: 4c 89 f7 mov %r14,%rdi 0.00 : 4aaf9e: e8 3d e0 ff ff callq 4a8fe0 <_bt_relandgetbuf> : rootpage = BufferGetPage(rootbuf); 0.00 : 4aafa3: 85 c0 test %eax,%eax : */ : rootbuf = metabuf; : : for (;;) : { : rootbuf = _bt_relandgetbuf(rel, rootbuf, rootblkno, BT_READ); 0.00 : 4aafa5: 41 89 c4 mov %eax,%r12d : rootpage = BufferGetPage(rootbuf); 0.00 : 4aafa8: 79 b6 jns 4aaf60 <_bt_getroot+0x340> 0.00 : 4aafaa: 48 8b 15 67 21 6d 00 mov 0x6d2167(%rip),%rdx # b7d118 0.00 : 4aafb1: f7 d0 not %eax 0.00 : 4aafb3: 48 98 cltq 0.00 : 4aafb5: 48 8b 14 c2 mov (%rdx,%rax,8),%rdx 0.00 : 4aafb9: eb b8 jmp 4aaf73 <_bt_getroot+0x353> 0.00 : 4aafbb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : RelationGetRelationName(rel)); : rootblkno = rootopaque->btpo_next; : } : : /* Note: can't check btpo.level on deleted pages */ : if (rootopaque->btpo.level != rootlevel) 0.00 : 4aafc0: 8b 45 8c mov -0x74(%rbp),%eax 0.00 : 4aafc3: 39 43 08 cmp %eax,0x8(%rbx) 0.00 : 4aafc6: 0f 84 cd fe ff ff je 4aae99 <_bt_getroot+0x279> : elog(ERROR, "root page %u of index \"%s\" has level %u, expected %u", 0.00 : 4aafcc: ba 50 47 7b 00 mov $0x7b4750,%edx 0.00 : 4aafd1: be 32 01 00 00 mov $0x132,%esi 0.00 : 4aafd6: bf 22 43 7b 00 mov $0x7b4322,%edi 0.00 : 4aafdb: e8 40 04 2d 00 callq 77b420 0.00 : 4aafe0: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 4aafe4: 44 8b 4d 8c mov -0x74(%rbp),%r9d 0.00 : 4aafe8: 44 89 ea mov %r13d,%edx 0.00 : 4aafeb: 44 8b 43 08 mov 0x8(%rbx),%r8d 0.00 : 4aafef: be 58 46 7b 00 mov $0x7b4658,%esi 0.00 : 4aaff4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4aaff9: 31 c0 xor %eax,%eax 0.00 : 4aaffb: e8 30 02 2d 00 callq 77b230 0.00 : 4ab000: e9 0c fd ff ff jmpq 4aad11 <_bt_getroot+0xf1> 0.00 : 4ab005: 0f 1f 00 nopl (%rax) : * Lock and pin (refcount) are both dropped. : */ : void : _bt_relbuf(Relation rel, Buffer buf) : { : UnlockReleaseBuffer(buf); 0.00 : 4ab008: 44 89 c7 mov %r8d,%edi 0.00 : 4ab00b: e8 20 9f 1c 00 callq 674f30 : * deadlocks, we have to release the metadata page and start all : * over again. (Is that really true? But it's hardly worth trying : * to optimize this case.) : */ : _bt_relbuf(rel, metabuf); : return _bt_getroot(rel, access); 0.00 : 4ab010: 44 89 ee mov %r13d,%esi 0.00 : 4ab013: 4c 89 f7 mov %r14,%rdi 0.00 : 4ab016: e8 05 fc ff ff callq 4aac20 <_bt_getroot> 0.00 : 4ab01b: 41 89 c4 mov %eax,%r12d : /* : * By here, we have a pin and read lock on the root page, and no lock set : * on the metadata page. Return the root page's buffer. : */ : return rootbuf; : } 0.00 : 4ab01e: e9 76 fe ff ff jmpq 4aae99 <_bt_getroot+0x279> 0.00 : 4ab023: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * the new root page. Since this is the first page in the tree, it's : * a leaf as well as the root. : */ : rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE); : rootblkno = BufferGetBlockNumber(rootbuf); : rootpage = BufferGetPage(rootbuf); 0.00 : 4ab028: 44 89 e0 mov %r12d,%eax 0.00 : 4ab02b: 48 8b 15 e6 20 6d 00 mov 0x6d20e6(%rip),%rdx # b7d118 0.00 : 4ab032: f7 d0 not %eax 0.00 : 4ab034: 48 98 cltq 0.00 : 4ab036: 4c 8b 2c c2 mov (%rdx,%rax,8),%r13 0.00 : 4ab03a: e9 a6 fd ff ff jmpq 4aade5 <_bt_getroot+0x1c5> : if (!P_IGNORE(rootopaque)) : break; : : /* it's dead, Jim. step right one page */ : if (P_RIGHTMOST(rootopaque)) : elog(ERROR, "no live root page found in index \"%s\"", 0.00 : 4ab03f: ba 50 47 7b 00 mov $0x7b4750,%edx 0.00 : 4ab044: be 2a 01 00 00 mov $0x12a,%esi 0.00 : 4ab049: bf 22 43 7b 00 mov $0x7b4322,%edi 0.00 : 4ab04e: e8 cd 03 2d 00 callq 77b420 0.00 : 4ab053: 49 8b 56 30 mov 0x30(%r14),%rdx 0.00 : 4ab057: be 30 46 7b 00 mov $0x7b4630,%esi 0.00 : 4ab05c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ab061: 31 c0 xor %eax,%eax 0.00 : 4ab063: e8 c8 01 2d 00 callq 77b230 0.00 : 4ab068: e8 63 e4 fb ff callq 4694d0 : { : xl_btree_newroot xlrec; : XLogRecPtr recptr; : XLogRecData rdata; : : xlrec.node = rel->rd_node; 0.00 : 4ab06d: 49 8b 06 mov (%r14),%rax : rdata.data = (char *) &xlrec; : rdata.len = SizeOfBtreeNewroot; : rdata.buffer = InvalidBuffer; : rdata.next = NULL; : : recptr = XLogInsert(RM_BTREE_ID, XLOG_BTREE_NEWROOT, &rdata); 0.00 : 4ab070: 48 8d 55 90 lea -0x70(%rbp),%rdx 0.00 : 4ab074: be a0 00 00 00 mov $0xa0,%esi 0.00 : 4ab079: bf 0b 00 00 00 mov $0xb,%edi : XLogRecPtr recptr; : XLogRecData rdata; : : xlrec.node = rel->rd_node; : xlrec.rootblk = rootblkno; : xlrec.level = 0; 0.00 : 4ab07e: c7 45 c0 00 00 00 00 movl $0x0,-0x40(%rbp) : : rdata.data = (char *) &xlrec; : rdata.len = SizeOfBtreeNewroot; 0.00 : 4ab085: c7 45 98 14 00 00 00 movl $0x14,-0x68(%rbp) : rdata.buffer = InvalidBuffer; 0.00 : 4ab08c: c7 45 9c 00 00 00 00 movl $0x0,-0x64(%rbp) : rdata.next = NULL; 0.00 : 4ab093: 48 c7 45 a8 00 00 00 movq $0x0,-0x58(%rbp) 0.00 : 4ab09a: 00 : { : xl_btree_newroot xlrec; : XLogRecPtr recptr; : XLogRecData rdata; : : xlrec.node = rel->rd_node; 0.00 : 4ab09b: 48 89 45 b0 mov %rax,-0x50(%rbp) 0.00 : 4ab09f: 41 8b 46 08 mov 0x8(%r14),%eax 0.00 : 4ab0a3: 89 45 b8 mov %eax,-0x48(%rbp) : xlrec.rootblk = rootblkno; 0.00 : 4ab0a6: 8b 45 88 mov -0x78(%rbp),%eax 0.00 : 4ab0a9: 89 45 bc mov %eax,-0x44(%rbp) : xlrec.level = 0; : : rdata.data = (char *) &xlrec; 0.00 : 4ab0ac: 48 8d 45 b0 lea -0x50(%rbp),%rax 0.00 : 4ab0b0: 48 89 45 90 mov %rax,-0x70(%rbp) : rdata.len = SizeOfBtreeNewroot; : rdata.buffer = InvalidBuffer; : rdata.next = NULL; : : recptr = XLogInsert(RM_BTREE_ID, XLOG_BTREE_NEWROOT, &rdata); 0.00 : 4ab0b4: e8 67 9e 02 00 callq 4d4f20 : : PageSetLSN(rootpage, recptr); 0.00 : 4ab0b9: 48 89 c2 mov %rax,%rdx 0.00 : 4ab0bc: 41 89 45 04 mov %eax,0x4(%r13) 0.00 : 4ab0c0: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4ab0c4: 41 89 55 00 mov %edx,0x0(%r13) : PageSetLSN(metapg, recptr); 0.00 : 4ab0c8: 89 13 mov %edx,(%rbx) 0.00 : 4ab0ca: 89 43 04 mov %eax,0x4(%rbx) 0.00 : 4ab0cd: 44 8b 45 80 mov -0x80(%rbp),%r8d 0.00 : 4ab0d1: e9 8d fd ff ff jmpq 4aae63 <_bt_getroot+0x243> : (errcode(ERRCODE_INDEX_CORRUPTED), : errmsg("index \"%s\" is not a btree", : RelationGetRelationName(rel)))); : : if (metad->btm_version != BTREE_VERSION) : ereport(ERROR, 0.00 : 4ab0d6: 45 31 c0 xor %r8d,%r8d 0.00 : 4ab0d9: b9 50 47 7b 00 mov $0x7b4750,%ecx 0.00 : 4ab0de: ba ae 00 00 00 mov $0xae,%edx 0.00 : 4ab0e3: be 22 43 7b 00 mov $0x7b4322,%esi 0.00 : 4ab0e8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ab0ed: e8 ce f9 2c 00 callq 77aac0 0.00 : 4ab0f2: 84 c0 test %al,%al 0.00 : 4ab0f4: 0f 84 17 fc ff ff je 4aad11 <_bt_getroot+0xf1> 0.00 : 4ab0fa: 41 8b 57 04 mov 0x4(%r15),%edx 0.00 : 4ab0fe: 49 8b 76 30 mov 0x30(%r14),%rsi 0.00 : 4ab102: b9 02 00 00 00 mov $0x2,%ecx 0.00 : 4ab107: bf e8 45 7b 00 mov $0x7b45e8,%edi 0.00 : 4ab10c: 31 c0 xor %eax,%eax 0.00 : 4ab10e: e8 8d 17 2d 00 callq 77c8a0 0.00 : 4ab113: e9 18 fc ff ff jmpq 4aad30 <_bt_getroot+0x110> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:922 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ab130 : : * reached by the outer btvacuumscan loop (the same as blkno, unless we : * are recursing to re-examine a previous page). : */ : static void : btvacuumpage(BTVacState *vstate, BlockNumber blkno, BlockNumber orig_blkno) : { 0.00 : 4ab130: 55 push %rbp 0.00 : 4ab131: 48 89 e5 mov %rsp,%rbp 0.00 : 4ab134: 41 57 push %r15 0.00 : 4ab136: 41 89 f7 mov %esi,%r15d 0.00 : 4ab139: 41 56 push %r14 0.00 : 4ab13b: 41 55 push %r13 0.00 : 4ab13d: 41 54 push %r12 0.00 : 4ab13f: 53 push %rbx 0.00 : 4ab140: 48 81 ec 68 10 00 00 sub $0x1068,%rsp 0.00 : 4ab147: 48 89 bd 80 ef ff ff mov %rdi,-0x1080(%rbp) 0.00 : 4ab14e: 89 95 7c ef ff ff mov %edx,-0x1084(%rbp) : IndexVacuumInfo *info = vstate->info; 0.00 : 4ab154: 48 8b 07 mov (%rdi),%rax 0.00 : 4ab157: 48 89 85 88 ef ff ff mov %rax,-0x1078(%rbp) : IndexBulkDeleteResult *stats = vstate->stats; 0.00 : 4ab15e: 48 8b 57 08 mov 0x8(%rdi),%rdx 0.00 : 4ab162: 48 89 95 90 ef ff ff mov %rdx,-0x1070(%rbp) : IndexBulkDeleteCallback callback = vstate->callback; 0.00 : 4ab169: 48 8b 4f 10 mov 0x10(%rdi),%rcx : void *callback_state = vstate->callback_state; : Relation rel = info->index; 0.00 : 4ab16d: 48 8b 95 88 ef ff ff mov -0x1078(%rbp),%rdx : static void : btvacuumpage(BTVacState *vstate, BlockNumber blkno, BlockNumber orig_blkno) : { : IndexVacuumInfo *info = vstate->info; : IndexBulkDeleteResult *stats = vstate->stats; : IndexBulkDeleteCallback callback = vstate->callback; 0.00 : 4ab174: 48 89 8d 98 ef ff ff mov %rcx,-0x1068(%rbp) : void *callback_state = vstate->callback_state; 0.00 : 4ab17b: 48 8b 47 18 mov 0x18(%rdi),%rax 0.00 : 4ab17f: 48 89 85 a0 ef ff ff mov %rax,-0x1060(%rbp) : Relation rel = info->index; 0.00 : 4ab186: 48 8b 12 mov (%rdx),%rdx 0.00 : 4ab189: 48 89 95 a8 ef ff ff mov %rdx,-0x1058(%rbp) 0.00 : 4ab190: eb 3a jmp 4ab1cc 0.00 : 4ab192: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : stats->pages_deleted++; : } : else if (P_ISDELETED(opaque)) : { : /* Already deleted, but can't recycle yet */ : stats->pages_deleted++; 0.00 : 4ab198: 48 8b 95 90 ef ff ff mov -0x1070(%rbp),%rdx 0.00 : 4ab19f: 83 42 20 01 addl $0x1,0x20(%rdx) 0.00 : 4ab1a3: c7 85 b4 ef ff ff 00 movl $0x0,-0x104c(%rbp) 0.00 : 4ab1aa: 00 00 00 : : MemoryContextSwitchTo(oldcontext); : /* pagedel released buffer, so we shouldn't */ : } : else : _bt_relbuf(rel, buf); 0.00 : 4ab1ad: 48 8b bd a8 ef ff ff mov -0x1058(%rbp),%rdi 0.00 : 4ab1b4: 44 89 ee mov %r13d,%esi 0.00 : 4ab1b7: e8 14 de ff ff callq 4a8fd0 <_bt_relbuf> 0.00 : 4ab1bc: 44 8b bd b4 ef ff ff mov -0x104c(%rbp),%r15d : * optimize it as such, we'd eat an uncomfortably large amount of stack : * space per recursion level (due to the deletable[] array). A failure is : * improbable since the number of levels isn't likely to be large ... but : * just in case, let's hand-optimize into a loop. : */ : if (recurse_to != P_NONE) 0.00 : 4ab1c3: 45 85 ff test %r15d,%r15d 0.00 : 4ab1c6: 0f 84 0a 03 00 00 je 4ab4d6 : restart: : delete_now = false; : recurse_to = P_NONE; : : /* call vacuum_delay_point while not holding any buffer lock */ : vacuum_delay_point(); 0.00 : 4ab1cc: e8 8f 78 0f 00 callq 5a2a60 : * We can't use _bt_getbuf() here because it always applies : * _bt_checkpage(), which will barf on an all-zero page. We want to : * recycle all-zero pages, not fail. Also, we want to use a nondefault : * buffer access strategy. : */ : buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL, 0.00 : 4ab1d1: 48 8b 8d 88 ef ff ff mov -0x1078(%rbp),%rcx 0.00 : 4ab1d8: 48 8b bd a8 ef ff ff mov -0x1058(%rbp),%rdi 0.00 : 4ab1df: 31 f6 xor %esi,%esi 0.00 : 4ab1e1: 44 89 fa mov %r15d,%edx 0.00 : 4ab1e4: 4c 8b 41 18 mov 0x18(%rcx),%r8 0.00 : 4ab1e8: 31 c9 xor %ecx,%ecx 0.00 : 4ab1ea: e8 81 b3 1c 00 callq 676570 : info->strategy); : LockBuffer(buf, BT_READ); 0.00 : 4ab1ef: be 01 00 00 00 mov $0x1,%esi : * We can't use _bt_getbuf() here because it always applies : * _bt_checkpage(), which will barf on an all-zero page. We want to : * recycle all-zero pages, not fail. Also, we want to use a nondefault : * buffer access strategy. : */ : buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL, 0.00 : 4ab1f4: 41 89 c5 mov %eax,%r13d : info->strategy); : LockBuffer(buf, BT_READ); 0.00 : 4ab1f7: 89 c7 mov %eax,%edi 0.00 : 4ab1f9: e8 12 95 1c 00 callq 674710 : page = BufferGetPage(buf); 0.00 : 4ab1fe: 45 85 ed test %r13d,%r13d 0.00 : 4ab201: 0f 88 01 03 00 00 js 4ab508 0.00 : 4ab207: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 4ab20b: 48 63 d8 movslq %eax,%rbx 0.00 : 4ab20e: 48 c1 e3 0d shl $0xd,%rbx 0.00 : 4ab212: 48 03 1d df 48 71 00 add 0x7148df(%rip),%rbx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ab219: 0f b7 43 10 movzwl 0x10(%rbx),%eax : if (!PageIsNew(page)) 0.00 : 4ab21d: 66 83 7b 0e 00 cmpw $0x0,0xe(%rbx) : */ : buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL, : info->strategy); : LockBuffer(buf, BT_READ); : page = BufferGetPage(buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ab222: 4c 8d 34 03 lea (%rbx,%rax,1),%r14 : if (!PageIsNew(page)) 0.00 : 4ab226: 0f 85 c4 02 00 00 jne 4ab4f0 : /* : * If we are recursing, the only case we want to do anything with is a : * live leaf page having the current vacuum cycle ID. Any other state : * implies we already saw the page (eg, deleted it as being empty). : */ : if (blkno != orig_blkno) 0.00 : 4ab22c: 44 3b bd 7c ef ff ff cmp -0x1084(%rbp),%r15d 0.00 : 4ab233: 74 37 je 4ab26c : { : if (_bt_page_recyclable(page) || 0.00 : 4ab235: 48 89 df mov %rbx,%rdi 0.00 : 4ab238: e8 d3 dc ff ff callq 4a8f10 <_bt_page_recyclable> 0.00 : 4ab23d: 84 c0 test %al,%al 0.00 : 4ab23f: 0f 85 13 03 00 00 jne 4ab558 0.00 : 4ab245: 41 0f b7 46 0c movzwl 0xc(%r14),%eax 0.00 : 4ab24a: 83 e0 15 and $0x15,%eax 0.00 : 4ab24d: 83 e8 01 sub $0x1,%eax 0.00 : 4ab250: 0f 85 02 03 00 00 jne 4ab558 0.00 : 4ab256: 48 8b 95 80 ef ff ff mov -0x1080(%rbp),%rdx 0.00 : 4ab25d: 41 0f b7 46 0e movzwl 0xe(%r14),%eax 0.00 : 4ab262: 66 3b 42 20 cmp 0x20(%rdx),%ax 0.00 : 4ab266: 0f 85 ec 02 00 00 jne 4ab558 : return; : } : } : : /* Page is valid, see what to do with it */ : if (_bt_page_recyclable(page)) 0.00 : 4ab26c: 48 89 df mov %rbx,%rdi 0.00 : 4ab26f: e8 9c dc ff ff callq 4a8f10 <_bt_page_recyclable> 0.00 : 4ab274: 84 c0 test %al,%al 0.00 : 4ab276: 0f 85 a4 02 00 00 jne 4ab520 : /* Okay to recycle this page */ : RecordFreeIndexPage(rel, blkno); : vstate->totFreePages++; : stats->pages_deleted++; : } : else if (P_ISDELETED(opaque)) 0.00 : 4ab27c: 41 0f b7 46 0c movzwl 0xc(%r14),%eax 0.00 : 4ab281: a8 04 test $0x4,%al 0.00 : 4ab283: 0f 85 0f ff ff ff jne 4ab198 : { : /* Already deleted, but can't recycle yet */ : stats->pages_deleted++; : } : else if (P_ISHALFDEAD(opaque)) 0.00 : 4ab289: 89 c2 mov %eax,%edx : * the case). : */ : if (minoff > maxoff) : delete_now = (blkno == orig_blkno); : else : stats->num_index_tuples += maxoff - minoff + 1; 0.00 : 4ab28b: c7 85 b4 ef ff ff 00 movl $0x0,-0x104c(%rbp) 0.00 : 4ab292: 00 00 00 : else if (P_ISDELETED(opaque)) : { : /* Already deleted, but can't recycle yet */ : stats->pages_deleted++; : } : else if (P_ISHALFDEAD(opaque)) 0.00 : 4ab295: 83 e2 10 and $0x10,%edx 0.00 : 4ab298: 0f 85 da 01 00 00 jne 4ab478 : { : /* Half-dead, try to delete */ : delete_now = true; : } : else if (P_ISLEAF(opaque)) 0.00 : 4ab29e: a8 01 test $0x1,%al : * optimize it as such, we'd eat an uncomfortably large amount of stack : * space per recursion level (due to the deletable[] array). A failure is : * improbable since the number of levels isn't likely to be large ... but : * just in case, let's hand-optimize into a loop. : */ : if (recurse_to != P_NONE) 0.00 : 4ab2a0: 89 95 b4 ef ff ff mov %edx,-0x104c(%rbp) : else if (P_ISHALFDEAD(opaque)) : { : /* Half-dead, try to delete */ : delete_now = true; : } : else if (P_ISLEAF(opaque)) /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:922 100.00 : 4ab2a6: 0f 84 01 ff ff ff je 4ab1ad : * Trade in the initial read lock for a super-exclusive write lock on : * this page. We must get such a lock on every leaf page over the : * course of the vacuum scan, whether or not it actually contains any : * deletable tuples --- see nbtree/README. : */ : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 4ab2ac: 31 f6 xor %esi,%esi 0.00 : 4ab2ae: 44 89 ef mov %r13d,%edi 0.00 : 4ab2b1: e8 5a 94 1c 00 callq 674710 : LockBufferForCleanup(buf); 0.00 : 4ab2b6: 44 89 ef mov %r13d,%edi 0.00 : 4ab2b9: e8 72 bd 1c 00 callq 677030 : : /* : * Remember highest leaf page number we've taken cleanup lock on; see : * notes in btvacuumscan : */ : if (blkno > vstate->lastBlockLocked) 0.00 : 4ab2be: 48 8b 8d 80 ef ff ff mov -0x1080(%rbp),%rcx 0.00 : 4ab2c5: 44 3b 79 28 cmp 0x28(%rcx),%r15d 0.00 : 4ab2c9: 76 04 jbe 4ab2cf : vstate->lastBlockLocked = blkno; 0.00 : 4ab2cb: 44 89 79 28 mov %r15d,0x28(%rcx) : * are concerned about is a page split that happened since we started : * the vacuum scan. If the split moved some tuples to a lower page : * then we might have missed 'em. If so, set up for tail recursion. : * (Must do this before possibly clearing btpo_cycleid below!) : */ : if (vstate->cycleid != 0 && 0.00 : 4ab2cf: 48 8b 85 80 ef ff ff mov -0x1080(%rbp),%rax 0.00 : 4ab2d6: 0f b7 50 20 movzwl 0x20(%rax),%edx 0.00 : 4ab2da: 66 85 d2 test %dx,%dx 0.00 : 4ab2dd: 74 0b je 4ab2ea 0.00 : 4ab2df: 66 41 3b 56 0e cmp 0xe(%r14),%dx 0.00 : 4ab2e4: 0f 84 de 02 00 00 je 4ab5c8 : /* : * Scan over all items to see which ones need deleted according to the : * callback function. : */ : ndeletable = 0; : minoff = P_FIRSTDATAKEY(opaque); 0.00 : 4ab2ea: c7 85 b4 ef ff ff 00 movl $0x0,-0x104c(%rbp) 0.00 : 4ab2f1: 00 00 00 0.00 : 4ab2f4: 66 c7 85 be ef ff ff movw $0x1,-0x1042(%rbp) 0.00 : 4ab2fb: 01 00 0.00 : 4ab2fd: 41 8b 4e 04 mov 0x4(%r14),%ecx 0.00 : 4ab301: 85 c9 test %ecx,%ecx 0.00 : 4ab303: 74 09 je 4ab30e 0.00 : 4ab305: 66 c7 85 be ef ff ff movw $0x2,-0x1042(%rbp) 0.00 : 4ab30c: 02 00 : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 4ab30e: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 4ab312: 66 c7 85 c0 ef ff ff movw $0x0,-0x1040(%rbp) 0.00 : 4ab319: 00 00 0.00 : 4ab31b: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4ab31f: 0f 87 4b 02 00 00 ja 4ab570 : if (callback) 0.00 : 4ab325: 48 83 bd 98 ef ff ff cmpq $0x0,-0x1068(%rbp) 0.00 : 4ab32c: 00 0.00 : 4ab32d: 0f 84 68 02 00 00 je 4ab59b : { : for (offnum = minoff; : offnum <= maxoff; 0.00 : 4ab333: 0f b7 85 c0 ef ff ff movzwl -0x1040(%rbp),%eax 0.00 : 4ab33a: 66 39 85 be ef ff ff cmp %ax,-0x1042(%rbp) 0.00 : 4ab341: 0f 87 54 02 00 00 ja 4ab59b 0.00 : 4ab347: 44 0f b7 a5 be ef ff movzwl -0x1042(%rbp),%r12d 0.00 : 4ab34e: ff 0.00 : 4ab34f: c7 85 b8 ef ff ff 00 movl $0x0,-0x1048(%rbp) 0.00 : 4ab356: 00 00 00 0.00 : 4ab359: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * worked out a way to pass a useful value for : * latestRemovedXid on the XLOG_BTREE_VACUUM records. This : * applies to *any* type of index that marks index tuples as : * killed. : */ : if (callback(htup, callback_state)) 0.00 : 4ab360: 41 0f b7 c4 movzwl %r12w,%eax 0.00 : 4ab364: 48 8b b5 a0 ef ff ff mov -0x1060(%rbp),%rsi 0.00 : 4ab36b: 0f b7 7c 83 14 movzwl 0x14(%rbx,%rax,4),%edi 0.00 : 4ab370: 81 e7 ff 7f 00 00 and $0x7fff,%edi 0.00 : 4ab376: 48 8d 3c 3b lea (%rbx,%rdi,1),%rdi 0.00 : 4ab37a: ff 95 98 ef ff ff callq *-0x1068(%rbp) 0.00 : 4ab380: 84 c0 test %al,%al 0.00 : 4ab382: 74 17 je 4ab39b : deletable[ndeletable++] = offnum; 0.00 : 4ab384: 48 63 85 b8 ef ff ff movslq -0x1048(%rbp),%rax 0.00 : 4ab38b: 66 44 89 a4 45 d0 ef mov %r12w,-0x1030(%rbp,%rax,2) 0.00 : 4ab392: ff ff 0.00 : 4ab394: 83 85 b8 ef ff ff 01 addl $0x1,-0x1048(%rbp) 0.00 : 4ab39b: 41 83 c4 01 add $0x1,%r12d : minoff = P_FIRSTDATAKEY(opaque); : maxoff = PageGetMaxOffsetNumber(page); : if (callback) : { : for (offnum = minoff; : offnum <= maxoff; 0.00 : 4ab39f: 66 44 39 a5 c0 ef ff cmp %r12w,-0x1040(%rbp) 0.00 : 4ab3a6: ff 0.00 : 4ab3a7: 73 b7 jae 4ab360 : : /* : * Apply any needed deletes. We issue just one _bt_delitems_vacuum() : * call per page, so as to minimize WAL traffic. : */ : if (ndeletable > 0) 0.00 : 4ab3a9: 8b 85 b8 ef ff ff mov -0x1048(%rbp),%eax 0.00 : 4ab3af: 85 c0 test %eax,%eax 0.00 : 4ab3b1: 0f 8e d9 01 00 00 jle 4ab590 : * Since we can visit leaf pages out-of-order when recursing, : * replay might end up locking such pages an extra time, but it : * doesn't seem worth the amount of bookkeeping it'd take to avoid : * that. : */ : _bt_delitems_vacuum(rel, buf, deletable, ndeletable, 0.00 : 4ab3b7: 48 8b 85 80 ef ff ff mov -0x1080(%rbp),%rax 0.00 : 4ab3be: 8b 8d b8 ef ff ff mov -0x1048(%rbp),%ecx 0.00 : 4ab3c4: 48 8d 95 d0 ef ff ff lea -0x1030(%rbp),%rdx 0.00 : 4ab3cb: 48 8b bd a8 ef ff ff mov -0x1058(%rbp),%rdi 0.00 : 4ab3d2: 44 89 ee mov %r13d,%esi 0.00 : 4ab3d5: 44 8b 40 24 mov 0x24(%rax),%r8d 0.00 : 4ab3d9: e8 a2 d9 ff ff callq 4a8d80 <_bt_delitems_vacuum> : : /* : * Remember highest leaf page number we've issued a : * XLOG_BTREE_VACUUM WAL record for. : */ : if (blkno > vstate->lastBlockVacuumed) 0.00 : 4ab3de: 48 8b 95 80 ef ff ff mov -0x1080(%rbp),%rdx 0.00 : 4ab3e5: 44 3b 7a 24 cmp 0x24(%rdx),%r15d 0.00 : 4ab3e9: 76 04 jbe 4ab3ef : vstate->lastBlockVacuumed = blkno; 0.00 : 4ab3eb: 44 89 7a 24 mov %r15d,0x24(%rdx) : : stats->tuples_removed += ndeletable; 0.00 : 4ab3ef: 48 8b 8d 90 ef ff ff mov -0x1070(%rbp),%rcx 0.00 : 4ab3f6: f2 0f 2a 85 b8 ef ff cvtsi2sdl -0x1048(%rbp),%xmm0 0.00 : 4ab3fd: ff 0.00 : 4ab3fe: f2 0f 58 41 18 addsd 0x18(%rcx),%xmm0 0.00 : 4ab403: f2 0f 11 41 18 movsd %xmm0,0x18(%rcx) : /* must recompute maxoff */ : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 4ab408: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 4ab40c: 66 83 f8 18 cmp $0x18,%ax 0.00 : 4ab410: 76 56 jbe 4ab468 0.00 : 4ab412: 0f b7 c0 movzwl %ax,%eax 0.00 : 4ab415: 48 83 e8 18 sub $0x18,%rax 0.00 : 4ab419: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4ab41d: 66 89 85 c0 ef ff ff mov %ax,-0x1040(%rbp) : * If it's now empty, try to delete; else count the live tuples. We : * don't delete when recursing, though, to avoid putting entries into : * freePages out-of-order (doesn't seem worth any extra code to handle : * the case). : */ : if (minoff > maxoff) 0.00 : 4ab424: 0f b7 85 be ef ff ff movzwl -0x1042(%rbp),%eax 0.00 : 4ab42b: 66 39 85 c0 ef ff ff cmp %ax,-0x1040(%rbp) 0.00 : 4ab432: 72 34 jb 4ab468 : delete_now = (blkno == orig_blkno); : else : stats->num_index_tuples += maxoff - minoff + 1; 0.00 : 4ab434: 0f b7 95 be ef ff ff movzwl -0x1042(%rbp),%edx 0.00 : 4ab43b: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4ab440: 29 d0 sub %edx,%eax 0.00 : 4ab442: 0f b7 95 c0 ef ff ff movzwl -0x1040(%rbp),%edx 0.00 : 4ab449: 01 d0 add %edx,%eax 0.00 : 4ab44b: 48 8b 95 90 ef ff ff mov -0x1070(%rbp),%rdx 0.00 : 4ab452: f2 0f 2a c0 cvtsi2sd %eax,%xmm0 0.00 : 4ab456: f2 0f 58 42 10 addsd 0x10(%rdx),%xmm0 0.00 : 4ab45b: f2 0f 11 42 10 movsd %xmm0,0x10(%rdx) 0.00 : 4ab460: e9 48 fd ff ff jmpq 4ab1ad 0.00 : 4ab465: 0f 1f 00 nopl (%rax) : } : : if (delete_now) 0.00 : 4ab468: 44 3b bd 7c ef ff ff cmp -0x1084(%rbp),%r15d 0.00 : 4ab46f: 0f 85 38 fd ff ff jne 4ab1ad 0.00 : 4ab475: 0f 1f 00 nopl (%rax) : { : MemoryContext oldcontext; : int ndel; : : /* Run pagedel in a temp context to avoid memory leakage */ : MemoryContextReset(vstate->pagedelcontext); 0.00 : 4ab478: 48 8b 8d 80 ef ff ff mov -0x1080(%rbp),%rcx 0.00 : 4ab47f: 48 8b 79 30 mov 0x30(%rcx),%rdi 0.00 : 4ab483: e8 28 d5 2e 00 callq 7989b0 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 4ab488: 48 8b 95 80 ef ff ff mov -0x1080(%rbp),%rdx : oldcontext = MemoryContextSwitchTo(vstate->pagedelcontext); : : ndel = _bt_pagedel(rel, buf); 0.00 : 4ab48f: 48 8b bd a8 ef ff ff mov -0x1058(%rbp),%rdi 0.00 : 4ab496: 44 89 ee mov %r13d,%esi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 4ab499: 48 8b 1d c0 f3 70 00 mov 0x70f3c0(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 4ab4a0: 48 8b 42 30 mov 0x30(%rdx),%rax 0.00 : 4ab4a4: 48 89 05 b5 f3 70 00 mov %rax,0x70f3b5(%rip) # bba860 0.00 : 4ab4ab: e8 90 de ff ff callq 4a9340 <_bt_pagedel> : : /* count only this page, else may double-count parent */ : if (ndel) 0.00 : 4ab4b0: 85 c0 test %eax,%eax 0.00 : 4ab4b2: 74 0b je 4ab4bf : stats->pages_deleted++; 0.00 : 4ab4b4: 48 8b 8d 90 ef ff ff mov -0x1070(%rbp),%rcx 0.00 : 4ab4bb: 83 41 20 01 addl $0x1,0x20(%rcx) : : MemoryContextSwitchTo(oldcontext); : /* pagedel released buffer, so we shouldn't */ : } : else : _bt_relbuf(rel, buf); 0.00 : 4ab4bf: 44 8b bd b4 ef ff ff mov -0x104c(%rbp),%r15d 0.00 : 4ab4c6: 48 89 1d 93 f3 70 00 mov %rbx,0x70f393(%rip) # bba860 : * optimize it as such, we'd eat an uncomfortably large amount of stack : * space per recursion level (due to the deletable[] array). A failure is : * improbable since the number of levels isn't likely to be large ... but : * just in case, let's hand-optimize into a loop. : */ : if (recurse_to != P_NONE) 0.00 : 4ab4cd: 45 85 ff test %r15d,%r15d 0.00 : 4ab4d0: 0f 85 f6 fc ff ff jne 4ab1cc : { : blkno = recurse_to; : goto restart; : } : } 0.00 : 4ab4d6: 48 81 c4 68 10 00 00 add $0x1068,%rsp 0.00 : 4ab4dd: 5b pop %rbx 0.00 : 4ab4de: 41 5c pop %r12 0.00 : 4ab4e0: 41 5d pop %r13 0.00 : 4ab4e2: 41 5e pop %r14 0.00 : 4ab4e4: 41 5f pop %r15 0.00 : 4ab4e6: c9 leaveq 0.00 : 4ab4e7: c3 retq 0.00 : 4ab4e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4ab4ef: 00 : info->strategy); : LockBuffer(buf, BT_READ); : page = BufferGetPage(buf); : opaque = (BTPageOpaque) PageGetSpecialPointer(page); : if (!PageIsNew(page)) : _bt_checkpage(rel, buf); 0.00 : 4ab4f0: 48 8b bd a8 ef ff ff mov -0x1058(%rbp),%rdi 0.00 : 4ab4f7: 44 89 ee mov %r13d,%esi 0.00 : 4ab4fa: e8 d1 d5 ff ff callq 4a8ad0 <_bt_checkpage> 0.00 : 4ab4ff: e9 28 fd ff ff jmpq 4ab22c 0.00 : 4ab504: 0f 1f 40 00 nopl 0x0(%rax) : * buffer access strategy. : */ : buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL, : info->strategy); : LockBuffer(buf, BT_READ); : page = BufferGetPage(buf); 0.00 : 4ab508: 44 89 e8 mov %r13d,%eax 0.00 : 4ab50b: 48 8b 15 06 1c 6d 00 mov 0x6d1c06(%rip),%rdx # b7d118 0.00 : 4ab512: f7 d0 not %eax 0.00 : 4ab514: 48 98 cltq 0.00 : 4ab516: 48 8b 1c c2 mov (%rdx,%rax,8),%rbx 0.00 : 4ab51a: e9 fa fc ff ff jmpq 4ab219 0.00 : 4ab51f: 90 nop : : /* Page is valid, see what to do with it */ : if (_bt_page_recyclable(page)) : { : /* Okay to recycle this page */ : RecordFreeIndexPage(rel, blkno); 0.00 : 4ab520: 48 8b bd a8 ef ff ff mov -0x1058(%rbp),%rdi 0.00 : 4ab527: 44 89 fe mov %r15d,%esi 0.00 : 4ab52a: e8 61 18 1d 00 callq 67cd90 : vstate->totFreePages++; 0.00 : 4ab52f: 48 8b 8d 80 ef ff ff mov -0x1080(%rbp),%rcx 0.00 : 4ab536: 83 41 2c 01 addl $0x1,0x2c(%rcx) : stats->pages_deleted++; 0.00 : 4ab53a: 48 8b 85 90 ef ff ff mov -0x1070(%rbp),%rax 0.00 : 4ab541: 83 40 20 01 addl $0x1,0x20(%rax) 0.00 : 4ab545: c7 85 b4 ef ff ff 00 movl $0x0,-0x104c(%rbp) 0.00 : 4ab54c: 00 00 00 0.00 : 4ab54f: e9 59 fc ff ff jmpq 4ab1ad 0.00 : 4ab554: 0f 1f 40 00 nopl 0x0(%rax) : if (_bt_page_recyclable(page) || : P_IGNORE(opaque) || : !P_ISLEAF(opaque) || : opaque->btpo_cycleid != vstate->cycleid) : { : _bt_relbuf(rel, buf); 0.00 : 4ab558: 48 8b bd a8 ef ff ff mov -0x1058(%rbp),%rdi 0.00 : 4ab55f: 44 89 ee mov %r13d,%esi 0.00 : 4ab562: e8 69 da ff ff callq 4a8fd0 <_bt_relbuf> : if (recurse_to != P_NONE) : { : blkno = recurse_to; : goto restart; : } : } 0.00 : 4ab567: e9 6a ff ff ff jmpq 4ab4d6 0.00 : 4ab56c: 0f 1f 40 00 nopl 0x0(%rax) : * Scan over all items to see which ones need deleted according to the : * callback function. : */ : ndeletable = 0; : minoff = P_FIRSTDATAKEY(opaque); : maxoff = PageGetMaxOffsetNumber(page); 0.00 : 4ab570: 0f b7 c0 movzwl %ax,%eax 0.00 : 4ab573: 48 83 e8 18 sub $0x18,%rax 0.00 : 4ab577: 48 c1 e8 02 shr $0x2,%rax 0.00 : 4ab57b: 66 89 85 c0 ef ff ff mov %ax,-0x1040(%rbp) 0.00 : 4ab582: e9 9e fd ff ff jmpq 4ab325 0.00 : 4ab587: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 4ab58e: 00 00 : : /* : * Apply any needed deletes. We issue just one _bt_delitems_vacuum() : * call per page, so as to minimize WAL traffic. : */ : if (ndeletable > 0) 0.00 : 4ab590: 48 8b 8d 80 ef ff ff mov -0x1080(%rbp),%rcx 0.00 : 4ab597: 0f b7 51 20 movzwl 0x20(%rcx),%edx : * care of this.) This ensures we won't process the page again. : * : * We treat this like a hint-bit update because there's no need to : * WAL-log it. : */ : if (vstate->cycleid != 0 && 0.00 : 4ab59b: 66 85 d2 test %dx,%dx 0.00 : 4ab59e: 0f 84 80 fe ff ff je 4ab424 0.00 : 4ab5a4: 66 41 39 56 0e cmp %dx,0xe(%r14) 0.00 : 4ab5a9: 0f 85 75 fe ff ff jne 4ab424 : opaque->btpo_cycleid == vstate->cycleid) : { : opaque->btpo_cycleid = 0; 0.00 : 4ab5af: 66 41 c7 46 0e 00 00 movw $0x0,0xe(%r14) : MarkBufferDirtyHint(buf, true); 0.00 : 4ab5b6: be 01 00 00 00 mov $0x1,%esi 0.00 : 4ab5bb: 44 89 ef mov %r13d,%edi 0.00 : 4ab5be: e8 cd 93 1c 00 callq 674990 0.00 : 4ab5c3: e9 5c fe ff ff jmpq 4ab424 : * are concerned about is a page split that happened since we started : * the vacuum scan. If the split moved some tuples to a lower page : * then we might have missed 'em. If so, set up for tail recursion. : * (Must do this before possibly clearing btpo_cycleid below!) : */ : if (vstate->cycleid != 0 && 0.00 : 4ab5c8: 41 0f b7 46 0c movzwl 0xc(%r14),%eax 0.00 : 4ab5cd: 83 e0 20 and $0x20,%eax 0.00 : 4ab5d0: 0f 85 14 fd ff ff jne 4ab2ea 0.00 : 4ab5d6: 41 8b 4e 04 mov 0x4(%r14),%ecx 0.00 : 4ab5da: 66 c7 85 be ef ff ff movw $0x1,-0x1042(%rbp) 0.00 : 4ab5e1: 01 00 0.00 : 4ab5e3: 85 c9 test %ecx,%ecx 0.00 : 4ab5e5: 89 8d b4 ef ff ff mov %ecx,-0x104c(%rbp) 0.00 : 4ab5eb: 0f 84 1d fd ff ff je 4ab30e : * optimize it as such, we'd eat an uncomfortably large amount of stack : * space per recursion level (due to the deletable[] array). A failure is : * improbable since the number of levels isn't likely to be large ... but : * just in case, let's hand-optimize into a loop. : */ : if (recurse_to != P_NONE) 0.00 : 4ab5f1: 8b 8d b4 ef ff ff mov -0x104c(%rbp),%ecx 0.00 : 4ab5f7: 39 8d 7c ef ff ff cmp %ecx,-0x1084(%rbp) 0.00 : 4ab5fd: 0f 47 c1 cmova %ecx,%eax 0.00 : 4ab600: 89 85 b4 ef ff ff mov %eax,-0x104c(%rbp) 0.00 : 4ab606: e9 fa fc ff ff jmpq 4ab305 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:414 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004abc70 : : /* : * btbeginscan() -- start a scan on a btree index : */ : Datum : btbeginscan(PG_FUNCTION_ARGS) : { 0.00 : 4abc70: 55 push %rbp 0.00 : 4abc71: 48 89 e5 mov %rsp,%rbp 0.00 : 4abc74: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 4abc78: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 4abc7c: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 4abc80: 48 83 ec 20 sub $0x20,%rsp : Relation rel = (Relation) PG_GETARG_POINTER(0); 0.00 : 4abc84: 4c 8b 6f 20 mov 0x20(%rdi),%r13 : : /* no order by operators allowed */ : Assert(norderbys == 0); : : /* get the scan */ : scan = RelationGetIndexScan(rel, nkeys, norderbys); 0.00 : 4abc88: 48 8b 57 30 mov 0x30(%rdi),%rdx 0.00 : 4abc8c: 48 8b 77 28 mov 0x28(%rdi),%rsi 0.00 : 4abc90: 4c 89 ef mov %r13,%rdi 0.00 : 4abc93: e8 c8 92 ff ff callq 4a4f60 : : /* allocate private workspace */ : so = (BTScanOpaque) palloc(sizeof(BTScanOpaqueData)); 0.00 : 4abc98: bf 70 20 00 00 mov $0x2070,%edi : : /* no order by operators allowed */ : Assert(norderbys == 0); : : /* get the scan */ : scan = RelationGetIndexScan(rel, nkeys, norderbys); 0.00 : 4abc9d: 49 89 c4 mov %rax,%r12 : : /* allocate private workspace */ : so = (BTScanOpaque) palloc(sizeof(BTScanOpaqueData)); 0.00 : 4abca0: e8 ab d0 2e 00 callq 798d50 0.00 : 4abca5: 48 89 c3 mov %rax,%rbx : so->currPos.buf = so->markPos.buf = InvalidBuffer; 0.00 : 4abca8: c7 80 60 10 00 00 00 movl $0x0,0x1060(%rax) 0.00 : 4abcaf: 00 00 00 0.00 : 4abcb2: c7 40 54 00 00 00 00 movl $0x0,0x54(%rax) : if (scan->numberOfKeys > 0) 0.00 : 4abcb9: 41 8b 44 24 18 mov 0x18(%r12),%eax 0.00 : 4abcbe: 85 c0 test %eax,%eax 0.00 : 4abcc0: 7f 7e jg 4abd40 : so->keyData = (ScanKey) palloc(scan->numberOfKeys * sizeof(ScanKeyData)); : else : so->keyData = NULL; 0.00 : 4abcc2: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 4abcc9: 00 : : so->arrayKeyData = NULL; /* assume no array keys for now */ 0.00 : 4abcca: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 4abcd1: 00 : so->numArrayKeys = 0; 0.00 : 4abcd2: c7 43 18 00 00 00 00 movl $0x0,0x18(%rbx) : so->arrayKeys = NULL; /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtree.c:414 100.00 : 4abcd9: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 4abce0: 00 : so->arrayContext = NULL; 0.00 : 4abce1: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 4abce8: 00 : : so->killedItems = NULL; /* until needed */ 0.00 : 4abce9: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 4abcf0: 00 : so->numKilled = 0; 0.00 : 4abcf1: c7 43 38 00 00 00 00 movl $0x0,0x38(%rbx) : /* : * We don't know yet whether the scan will be index-only, so we do not : * allocate the tuple workspace arrays until btrescan. However, we set up : * scan->xs_itupdesc whether we'll need it or not, since that's so cheap. : */ : so->currTuples = so->markTuples = NULL; 0.00 : 4abcf8: 48 c7 43 48 00 00 00 movq $0x0,0x48(%rbx) 0.00 : 4abcff: 00 0.00 : 4abd00: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 4abd07: 00 : so->currPos.nextTupleOffset = 0; 0.00 : 4abd08: c7 43 60 00 00 00 00 movl $0x0,0x60(%rbx) : so->markPos.nextTupleOffset = 0; 0.00 : 4abd0f: c7 83 6c 10 00 00 00 movl $0x0,0x106c(%rbx) 0.00 : 4abd16: 00 00 00 : : scan->xs_itupdesc = RelationGetDescr(rel); 0.00 : 4abd19: 49 8b 45 38 mov 0x38(%r13),%rax : : scan->opaque = so; 0.00 : 4abd1d: 49 89 5c 24 38 mov %rbx,0x38(%r12) : */ : so->currTuples = so->markTuples = NULL; : so->currPos.nextTupleOffset = 0; : so->markPos.nextTupleOffset = 0; : : scan->xs_itupdesc = RelationGetDescr(rel); 0.00 : 4abd22: 49 89 44 24 48 mov %rax,0x48(%r12) : : scan->opaque = so; : : PG_RETURN_POINTER(scan); : } 0.00 : 4abd27: 4c 89 e0 mov %r12,%rax 0.00 : 4abd2a: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 4abd2e: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 4abd32: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 4abd36: c9 leaveq 0.00 : 4abd37: c3 retq 0.00 : 4abd38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4abd3f: 00 : : /* allocate private workspace */ : so = (BTScanOpaque) palloc(sizeof(BTScanOpaqueData)); : so->currPos.buf = so->markPos.buf = InvalidBuffer; : if (scan->numberOfKeys > 0) : so->keyData = (ScanKey) palloc(scan->numberOfKeys * sizeof(ScanKeyData)); 0.00 : 4abd40: 48 63 f8 movslq %eax,%rdi 0.00 : 4abd43: 48 8d 3c ff lea (%rdi,%rdi,8),%rdi 0.00 : 4abd47: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 4abd4b: e8 00 d0 2e 00 callq 798d50 0.00 : 4abd50: 48 89 43 08 mov %rax,0x8(%rbx) 0.00 : 4abd54: e9 71 ff ff ff jmpq 4abcca Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:179 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004acf70 <_bt_moveright>: : ScanKey scankey, : bool nextkey, : bool forupdate, : BTStack stack, : int access) : { /home/Computational/mark/src/postgres-andres/src/backend/access/nbtree/nbtsearch.c:179 100.00 : 4acf70: 55 push %rbp : * needed. : * : * We also have to move right if we followed a link that brought us to a : * dead page. : */ : cmpval = nextkey ? 0 : 1; 0.00 : 4acf71: 31 c0 xor %eax,%eax : ScanKey scankey, : bool nextkey, : bool forupdate, : BTStack stack, : int access) : { 0.00 : 4acf73: 48 89 e5 mov %rsp,%rbp 0.00 : 4acf76: 41 57 push %r15 0.00 : 4acf78: 45 89 cf mov %r9d,%r15d 0.00 : 4acf7b: 41 56 push %r14 0.00 : 4acf7d: 41 55 push %r13 0.00 : 4acf7f: 49 89 fd mov %rdi,%r13 0.00 : 4acf82: 41 54 push %r12 0.00 : 4acf84: 41 89 f4 mov %esi,%r12d 0.00 : 4acf87: 53 push %rbx 0.00 : 4acf88: 48 83 ec 18 sub $0x18,%rsp : * needed. : * : * We also have to move right if we followed a link that brought us to a : * dead page. : */ : cmpval = nextkey ? 0 : 1; 0.00 : 4acf8c: 45 84 c0 test %r8b,%r8b : ScanKey scankey, : bool nextkey, : bool forupdate, : BTStack stack, : int access) : { 0.00 : 4acf8f: 44 8b 75 18 mov 0x18(%rbp),%r14d : * needed. : * : * We also have to move right if we followed a link that brought us to a : * dead page. : */ : cmpval = nextkey ? 0 : 1; 0.00 : 4acf93: 0f 94 c0 sete %al : ScanKey scankey, : bool nextkey, : bool forupdate, : BTStack stack, : int access) : { 0.00 : 4acf96: 89 55 cc mov %edx,-0x34(%rbp) 0.00 : 4acf99: 48 89 4d c0 mov %rcx,-0x40(%rbp) : * needed. : * : * We also have to move right if we followed a link that brought us to a : * dead page. : */ : cmpval = nextkey ? 0 : 1; 0.00 : 4acf9d: 89 45 d0 mov %eax,-0x30(%rbp) : : for (;;) : { : page = BufferGetPage(buf); 0.00 : 4acfa0: 45 85 e4 test %r12d,%r12d 0.00 : 4acfa3: 78 70 js 4ad015 <_bt_moveright+0xa5> 0.00 : 4acfa5: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 4acfaa: 48 63 c8 movslq %eax,%rcx 0.00 : 4acfad: 48 c1 e1 0d shl $0xd,%rcx 0.00 : 4acfb1: 48 03 0d 40 2b 71 00 add 0x712b40(%rip),%rcx # bbfaf8 : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4acfb8: 0f b7 41 10 movzwl 0x10(%rcx),%eax 0.00 : 4acfbc: 48 8d 1c 01 lea (%rcx,%rax,1),%rbx : : if (P_RIGHTMOST(opaque)) 0.00 : 4acfc0: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : 4acfc3: 85 d2 test %edx,%edx 0.00 : 4acfc5: 74 6f je 4ad036 <_bt_moveright+0xc6> : break; : : /* : * Finish any incomplete splits we encounter along the way. : */ : if (forupdate && P_INCOMPLETE_SPLIT(opaque)) 0.00 : 4acfc7: 45 84 ff test %r15b,%r15b 0.00 : 4acfca: 0f 84 88 00 00 00 je 4ad058 <_bt_moveright+0xe8> 0.00 : 4acfd0: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 4acfd4: 84 c0 test %al,%al 0.00 : 4acfd6: 0f 88 8c 00 00 00 js 4ad068 <_bt_moveright+0xf8> : /* re-acquire the lock in the right mode, and re-check */ : buf = _bt_getbuf(rel, blkno, access); : continue; : } : : if (P_IGNORE(opaque) || _bt_compare(rel, keysz, scankey, page, P_HIKEY) >= cmpval) 0.00 : 4acfdc: a8 14 test $0x14,%al 0.00 : 4acfde: 66 90 xchg %ax,%ax 0.00 : 4acfe0: 75 1d jne 4acfff <_bt_moveright+0x8f> 0.00 : 4acfe2: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 4acfe6: 8b 75 cc mov -0x34(%rbp),%esi 0.00 : 4acfe9: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 4acfef: 4c 89 ef mov %r13,%rdi 0.00 : 4acff2: e8 59 fc ff ff callq 4acc50 <_bt_compare> 0.00 : 4acff7: 39 45 d0 cmp %eax,-0x30(%rbp) 0.00 : 4acffa: 7f 3a jg 4ad036 <_bt_moveright+0xc6> 0.00 : 4acffc: 8b 53 04 mov 0x4(%rbx),%edx : { : /* step right one page */ : buf = _bt_relandgetbuf(rel, buf, opaque->btpo_next, access); 0.00 : 4acfff: 44 89 e6 mov %r12d,%esi 0.00 : 4ad002: 44 89 f1 mov %r14d,%ecx 0.00 : 4ad005: 4c 89 ef mov %r13,%rdi 0.00 : 4ad008: e8 d3 bf ff ff callq 4a8fe0 <_bt_relandgetbuf> 0.00 : 4ad00d: 41 89 c4 mov %eax,%r12d : */ : cmpval = nextkey ? 0 : 1; : : for (;;) : { : page = BufferGetPage(buf); 0.00 : 4ad010: 45 85 e4 test %r12d,%r12d 0.00 : 4ad013: 79 90 jns 4acfa5 <_bt_moveright+0x35> 0.00 : 4ad015: 48 8b 15 fc 00 6d 00 mov 0x6d00fc(%rip),%rdx # b7d118 0.00 : 4ad01c: 44 89 e0 mov %r12d,%eax 0.00 : 4ad01f: f7 d0 not %eax 0.00 : 4ad021: 48 98 cltq 0.00 : 4ad023: 48 8b 0c c2 mov (%rdx,%rax,8),%rcx : opaque = (BTPageOpaque) PageGetSpecialPointer(page); 0.00 : 4ad027: 0f b7 41 10 movzwl 0x10(%rcx),%eax 0.00 : 4ad02b: 48 8d 1c 01 lea (%rcx,%rax,1),%rbx : : if (P_RIGHTMOST(opaque)) 0.00 : 4ad02f: 8b 53 04 mov 0x4(%rbx),%edx 0.00 : 4ad032: 85 d2 test %edx,%edx 0.00 : 4ad034: 75 91 jne 4acfc7 <_bt_moveright+0x57> : } : else : break; : } : : if (P_IGNORE(opaque)) 0.00 : 4ad036: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 4ad03a: a8 14 test $0x14,%al 0.00 : 4ad03c: 0f 85 8f 00 00 00 jne 4ad0d1 <_bt_moveright+0x161> : elog(ERROR, "fell off the end of index \"%s\"", : RelationGetRelationName(rel)); : : return buf; : } 0.00 : 4ad042: 48 83 c4 18 add $0x18,%rsp 0.00 : 4ad046: 44 89 e0 mov %r12d,%eax 0.00 : 4ad049: 5b pop %rbx 0.00 : 4ad04a: 41 5c pop %r12 0.00 : 4ad04c: 41 5d pop %r13 0.00 : 4ad04e: 41 5e pop %r14 0.00 : 4ad050: 41 5f pop %r15 0.00 : 4ad052: c9 leaveq 0.00 : 4ad053: c3 retq 0.00 : 4ad054: 0f 1f 40 00 nopl 0x0(%rax) : else : _bt_relbuf(rel, buf); : : /* re-acquire the lock in the right mode, and re-check */ : buf = _bt_getbuf(rel, blkno, access); : continue; 0.00 : 4ad058: 0f b7 43 0c movzwl 0xc(%rbx),%eax 0.00 : 4ad05c: e9 7b ff ff ff jmpq 4acfdc <_bt_moveright+0x6c> 0.00 : 4ad061: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Finish any incomplete splits we encounter along the way. : */ : if (forupdate && P_INCOMPLETE_SPLIT(opaque)) : { : BlockNumber blkno = BufferGetBlockNumber(buf); 0.00 : 4ad068: 44 89 e7 mov %r12d,%edi 0.00 : 4ad06b: e8 c0 6f 1c 00 callq 674030 : : /* upgrade our lock if necessary */ : if (access == BT_READ) 0.00 : 4ad070: 41 83 fe 01 cmp $0x1,%r14d : /* : * Finish any incomplete splits we encounter along the way. : */ : if (forupdate && P_INCOMPLETE_SPLIT(opaque)) : { : BlockNumber blkno = BufferGetBlockNumber(buf); 0.00 : 4ad074: 89 45 d4 mov %eax,-0x2c(%rbp) : : /* upgrade our lock if necessary */ : if (access == BT_READ) 0.00 : 4ad077: 74 3f je 4ad0b8 <_bt_moveright+0x148> : { : LockBuffer(buf, BUFFER_LOCK_UNLOCK); : LockBuffer(buf, BT_WRITE); : } : : if (P_INCOMPLETE_SPLIT(opaque)) 0.00 : 4ad079: 80 7b 0c 00 cmpb $0x0,0xc(%rbx) 0.00 : 4ad07d: 79 29 jns 4ad0a8 <_bt_moveright+0x138> : _bt_finish_split(rel, buf, stack); 0.00 : 4ad07f: 48 8b 55 10 mov 0x10(%rbp),%rdx 0.00 : 4ad083: 44 89 e6 mov %r12d,%esi 0.00 : 4ad086: 4c 89 ef mov %r13,%rdi 0.00 : 4ad089: e8 52 aa ff ff callq 4a7ae0 <_bt_finish_split> : else : _bt_relbuf(rel, buf); : : /* re-acquire the lock in the right mode, and re-check */ : buf = _bt_getbuf(rel, blkno, access); 0.00 : 4ad08e: 8b 75 d4 mov -0x2c(%rbp),%esi 0.00 : 4ad091: 44 89 f2 mov %r14d,%edx 0.00 : 4ad094: 4c 89 ef mov %r13,%rdi 0.00 : 4ad097: e8 b4 bf ff ff callq 4a9050 <_bt_getbuf> 0.00 : 4ad09c: 41 89 c4 mov %eax,%r12d : continue; 0.00 : 4ad09f: e9 fc fe ff ff jmpq 4acfa0 <_bt_moveright+0x30> 0.00 : 4ad0a4: 0f 1f 40 00 nopl 0x0(%rax) : } : : if (P_INCOMPLETE_SPLIT(opaque)) : _bt_finish_split(rel, buf, stack); : else : _bt_relbuf(rel, buf); 0.00 : 4ad0a8: 44 89 e6 mov %r12d,%esi 0.00 : 4ad0ab: 4c 89 ef mov %r13,%rdi 0.00 : 4ad0ae: e8 1d bf ff ff callq 4a8fd0 <_bt_relbuf> 0.00 : 4ad0b3: eb d9 jmp 4ad08e <_bt_moveright+0x11e> 0.00 : 4ad0b5: 0f 1f 00 nopl (%rax) : BlockNumber blkno = BufferGetBlockNumber(buf); : : /* upgrade our lock if necessary */ : if (access == BT_READ) : { : LockBuffer(buf, BUFFER_LOCK_UNLOCK); 0.00 : 4ad0b8: 31 f6 xor %esi,%esi 0.00 : 4ad0ba: 44 89 e7 mov %r12d,%edi 0.00 : 4ad0bd: e8 4e 76 1c 00 callq 674710 : LockBuffer(buf, BT_WRITE); 0.00 : 4ad0c2: be 02 00 00 00 mov $0x2,%esi 0.00 : 4ad0c7: 44 89 e7 mov %r12d,%edi 0.00 : 4ad0ca: e8 41 76 1c 00 callq 674710 0.00 : 4ad0cf: eb a8 jmp 4ad079 <_bt_moveright+0x109> : else : break; : } : : if (P_IGNORE(opaque)) : elog(ERROR, "fell off the end of index \"%s\"", 0.00 : 4ad0d1: ba f6 48 7b 00 mov $0x7b48f6,%edx 0.00 : 4ad0d6: be f5 00 00 00 mov $0xf5,%esi 0.00 : 4ad0db: bf 70 47 7b 00 mov $0x7b4770,%edi 0.00 : 4ad0e0: e8 3b e3 2c 00 callq 77b420 0.00 : 4ad0e5: 49 8b 55 30 mov 0x30(%r13),%rdx 0.00 : 4ad0e9: be 60 41 7b 00 mov $0x7b4160,%esi 0.00 : 4ad0ee: bf 14 00 00 00 mov $0x14,%edi 0.00 : 4ad0f3: 31 c0 xor %eax,%eax 0.00 : 4ad0f5: e8 36 e1 2c 00 callq 77b230 0.00 : 4ad0fa: e8 d1 c3 fb ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:247 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004bffd0 : : * Note: : * Assumes transaction identifier is valid. : */ : bool : TransactionIdIsKnownCompleted(TransactionId transactionId) : { 0.00 : 4bffd0: 3b 3d a2 8d 6b 00 cmp 0x6b8da2(%rip),%edi # b78d78 0.00 : 4bffd6: 55 push %rbp 0.00 : 4bffd7: 48 89 e5 mov %rsp,%rbp : /* If it's in the cache at all, it must be completed. */ : return true; : } : : return false; : } /home/Computational/mark/src/postgres-andres/src/backend/access/transam/transam.c:247 100.00 : 4bffda: c9 leaveq : * Note: : * Assumes transaction identifier is valid. : */ : bool : TransactionIdIsKnownCompleted(TransactionId transactionId) : { 0.00 : 4bffdb: 0f 94 c0 sete %al Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:710 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c0c50 : : * Note: this will return zero when not inside any transaction, one when : * inside a top-level transaction, etc. : */ : int : GetCurrentTransactionNestLevel(void) : { 100.00 : 4c0c50: 48 8b 05 d1 71 6a 00 mov 0x6a71d1(%rip),%rax # b67e28 0.00 : 4c0c57: 55 push %rbp 0.00 : 4c0c58: 48 89 e5 mov %rsp,%rbp 0.00 : 4c0c5b: 8b 40 1c mov 0x1c(%rax),%eax : TransactionState s = CurrentTransactionState; : : return s->nestingLevel; : } 0.00 : 4c0c5e: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:381 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004c48c0 : : * transaction), assigning one if it's not yet set. Be careful to call this : * only inside a valid xact. : */ : TransactionId : GetCurrentTransactionId(void) : { 0.00 : 4c48c0: 55 push %rbp 0.00 : 4c48c1: 48 89 e5 mov %rsp,%rbp 0.00 : 4c48c4: 53 push %rbx 0.00 : 4c48c5: 48 83 ec 08 sub $0x8,%rsp : TransactionState s = CurrentTransactionState; 0.00 : 4c48c9: 48 8b 1d 58 35 6a 00 mov 0x6a3558(%rip),%rbx # b67e28 : : if (!TransactionIdIsValid(s->transactionId)) 0.00 : 4c48d0: 8b 03 mov (%rbx),%eax /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xact.c:381 100.00 : 4c48d2: 85 c0 test %eax,%eax 0.00 : 4c48d4: 75 0a jne 4c48e0 : AssignTransactionId(s); 0.00 : 4c48d6: 48 89 df mov %rbx,%rdi 0.00 : 4c48d9: e8 12 fd ff ff callq 4c45f0 0.00 : 4c48de: 8b 03 mov (%rbx),%eax : return s->transactionId; : } 0.00 : 4c48e0: 48 83 c4 08 add $0x8,%rsp 0.00 : 4c48e4: 5b pop %rbx 0.00 : 4c48e5: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:9664 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004ce180 : : * 'fd' is a file descriptor for the XLOG file to be fsync'd. : * 'log' and 'seg' are for error reporting purposes. : */ : void : issue_xlog_fsync(int fd, XLogSegNo segno) : { 0.00 : 4ce180: 55 push %rbp 0.00 : 4ce181: 48 89 e5 mov %rsp,%rbp 0.00 : 4ce184: 53 push %rbx 0.00 : 4ce185: 48 89 f3 mov %rsi,%rbx 0.00 : 4ce188: 48 83 ec 08 sub $0x8,%rsp : switch (sync_method) 0.00 : 4ce18c: 8b 05 ba 9c 69 00 mov 0x699cba(%rip),%eax # b67e4c 0.00 : 4ce192: 83 f8 01 cmp $0x1,%eax 0.00 : 4ce195: 74 61 je 4ce1f8 0.00 : 4ce197: 7e 47 jle 4ce1e0 0.00 : 4ce199: 83 f8 02 cmp $0x2,%eax 0.00 : 4ce19c: 74 4f je 4ce1ed 0.00 : 4ce19e: 83 f8 04 cmp $0x4,%eax 0.00 : 4ce1a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 4ce1a8: 74 43 je 4ce1ed : case SYNC_METHOD_OPEN: : case SYNC_METHOD_OPEN_DSYNC: : /* write synced it already */ : break; : default: : elog(PANIC, "unrecognized wal_sync_method: %d", sync_method); 0.00 : 4ce1aa: ba 70 d1 7b 00 mov $0x7bd170,%edx 0.00 : 4ce1af: be cc 25 00 00 mov $0x25cc,%esi 0.00 : 4ce1b4: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4ce1b9: e8 62 d2 2a 00 callq 77b420 0.00 : 4ce1be: 8b 15 88 9c 69 00 mov 0x699c88(%rip),%edx # b67e4c 0.00 : 4ce1c4: be 18 a0 7b 00 mov $0x7ba018,%esi 0.00 : 4ce1c9: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4ce1ce: 31 c0 xor %eax,%eax 0.00 : 4ce1d0: e8 5b d0 2a 00 callq 77b230 0.00 : 4ce1d5: e8 f6 b2 f9 ff callq 4694d0 0.00 : 4ce1da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * 'log' and 'seg' are for error reporting purposes. : */ : void : issue_xlog_fsync(int fd, XLogSegNo segno) : { : switch (sync_method) 0.00 : 4ce1e0: 85 c0 test %eax,%eax 0.00 : 4ce1e2: 75 c6 jne 4ce1aa : { : case SYNC_METHOD_FSYNC: : if (pg_fsync_no_writethrough(fd) != 0) 0.00 : 4ce1e4: e8 67 c5 1a 00 callq 67a750 0.00 : 4ce1e9: 85 c0 test %eax,%eax 0.00 : 4ce1eb: 75 4d jne 4ce23a : break; : default: : elog(PANIC, "unrecognized wal_sync_method: %d", sync_method); : break; : } : } 0.00 : 4ce1ed: 48 83 c4 08 add $0x8,%rsp 0.00 : 4ce1f1: 5b pop %rbx 0.00 : 4ce1f2: c9 leaveq 0.00 : 4ce1f3: c3 retq 0.00 : 4ce1f4: 0f 1f 40 00 nopl 0x0(%rax) : XLogFileNameP(ThisTimeLineID, segno)))); : break; : #endif : #ifdef HAVE_FDATASYNC : case SYNC_METHOD_FDATASYNC: : if (pg_fdatasync(fd) != 0) 0.00 : 4ce1f8: e8 33 c5 1a 00 callq 67a730 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:9664 100.00 : 4ce1fd: 85 c0 test %eax,%eax 0.00 : 4ce1ff: 90 nop 0.00 : 4ce200: 74 eb je 4ce1ed : ereport(PANIC, 0.00 : 4ce202: 45 31 c0 xor %r8d,%r8d 0.00 : 4ce205: b9 70 d1 7b 00 mov $0x7bd170,%ecx 0.00 : 4ce20a: ba c4 25 00 00 mov $0x25c4,%edx 0.00 : 4ce20f: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4ce214: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4ce219: e8 a2 c8 2a 00 callq 77aac0 0.00 : 4ce21e: 84 c0 test %al,%al 0.00 : 4ce220: 74 b3 je 4ce1d5 0.00 : 4ce222: 8b 3d 3c af 6a 00 mov 0x6aaf3c(%rip),%edi # b79164 0.00 : 4ce228: 48 89 de mov %rbx,%rsi 0.00 : 4ce22b: e8 b0 fd ff ff callq 4cdfe0 0.00 : 4ce230: bf f0 9f 7b 00 mov $0x7b9ff0,%edi 0.00 : 4ce235: 48 89 c6 mov %rax,%rsi 0.00 : 4ce238: eb 3a jmp 4ce274 : { : switch (sync_method) : { : case SYNC_METHOD_FSYNC: : if (pg_fsync_no_writethrough(fd) != 0) : ereport(PANIC, 0.00 : 4ce23a: 45 31 c0 xor %r8d,%r8d 0.00 : 4ce23d: b9 70 d1 7b 00 mov $0x7bd170,%ecx 0.00 : 4ce242: ba b3 25 00 00 mov $0x25b3,%edx 0.00 : 4ce247: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4ce24c: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4ce251: e8 6a c8 2a 00 callq 77aac0 0.00 : 4ce256: 84 c0 test %al,%al 0.00 : 4ce258: 0f 84 77 ff ff ff je 4ce1d5 0.00 : 4ce25e: 8b 3d 00 af 6a 00 mov 0x6aaf00(%rip),%edi # b79164 0.00 : 4ce264: 48 89 de mov %rbx,%rsi 0.00 : 4ce267: e8 74 fd ff ff callq 4cdfe0 0.00 : 4ce26c: bf d0 9f 7b 00 mov $0x7b9fd0,%edi 0.00 : 4ce271: 48 89 c6 mov %rax,%rsi : break; : #endif : #ifdef HAVE_FDATASYNC : case SYNC_METHOD_FDATASYNC: : if (pg_fdatasync(fd) != 0) : ereport(PANIC, 0.00 : 4ce274: 31 c0 xor %eax,%eax 0.00 : 4ce276: e8 25 e6 2a 00 callq 77c8a0 0.00 : 4ce27b: 89 c3 mov %eax,%ebx 0.00 : 4ce27d: e8 6e e8 2a 00 callq 77caf0 0.00 : 4ce282: 89 de mov %ebx,%esi 0.00 : 4ce284: 89 c7 mov %eax,%edi 0.00 : 4ce286: 31 c0 xor %eax,%eax 0.00 : 4ce288: e8 53 c3 2a 00 callq 77a5e0 0.00 : 4ce28d: e9 43 ff ff ff jmpq 4ce1d5 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1699 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d3f10 : : * uninitialized page), and the inserter might need to evict an old WAL buffer : * to make room for a new one, which in turn requires WALWriteLock. : */ : static XLogRecPtr : WaitXLogInsertionsToFinish(XLogRecPtr upto) : { 0.00 : 4d3f10: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:1699 100.00 : 4d3f11: 48 89 e5 mov %rsp,%rbp 0.00 : 4d3f14: 41 56 push %r14 0.00 : 4d3f16: 41 55 push %r13 0.00 : 4d3f18: 41 54 push %r12 0.00 : 4d3f1a: 49 89 fc mov %rdi,%r12 0.00 : 4d3f1d: 53 push %rbx 0.00 : 4d3f1e: 48 83 ec 10 sub $0x10,%rsp : XLogRecPtr reservedUpto; : XLogRecPtr finishedUpto; : XLogCtlInsert *Insert = &XLogCtl->Insert; : int i; : : if (MyProc == NULL) 0.00 : 4d3f22: 48 83 3d 1e 9a 6a 00 cmpq $0x0,0x6a9a1e(%rip) # b7d948 0.00 : 4d3f29: 00 : WaitXLogInsertionsToFinish(XLogRecPtr upto) : { : uint64 bytepos; : XLogRecPtr reservedUpto; : XLogRecPtr finishedUpto; : XLogCtlInsert *Insert = &XLogCtl->Insert; 0.00 : 4d3f2a: 48 8b 1d 67 52 6a 00 mov 0x6a5267(%rip),%rbx # b79198 : int i; : : if (MyProc == NULL) 0.00 : 4d3f31: 0f 84 f6 00 00 00 je 4d402d : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d3f37: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d3f3c: f0 86 03 lock xchg %al,(%rbx) : elog(PANIC, "cannot wait without a PGPROC structure"); : : /* Read the current insert position */ : SpinLockAcquire(&Insert->insertpos_lck); 0.00 : 4d3f3f: 84 c0 test %al,%al 0.00 : 4d3f41: 0f 85 8e 00 00 00 jne 4d3fd5 : bytepos = Insert->CurrBytePos; 0.00 : 4d3f47: 48 8b 7b 08 mov 0x8(%rbx),%rdi : SpinLockRelease(&Insert->insertpos_lck); 0.00 : 4d3f4b: c6 03 00 movb $0x0,(%rbx) : reservedUpto = XLogBytePosToEndRecPtr(bytepos); 0.00 : 4d3f4e: e8 bd 8e ff ff callq 4cce10 : * LSN on disk, for example. XLogFlush checks for that situation and : * complains, but only after the flush. Here we just assume that to mean : * that all WAL that has been reserved needs to be finished. In this : * corner-case, the return value can be smaller than 'upto' argument. : */ : if (upto > reservedUpto) 0.00 : 4d3f53: 4c 39 e0 cmp %r12,%rax : : /* Read the current insert position */ : SpinLockAcquire(&Insert->insertpos_lck); : bytepos = Insert->CurrBytePos; : SpinLockRelease(&Insert->insertpos_lck); : reservedUpto = XLogBytePosToEndRecPtr(bytepos); 0.00 : 4d3f56: 48 89 c3 mov %rax,%rbx : * LSN on disk, for example. XLogFlush checks for that situation and : * complains, but only after the flush. Here we just assume that to mean : * that all WAL that has been reserved needs to be finished. In this : * corner-case, the return value can be smaller than 'upto' argument. : */ : if (upto > reservedUpto) 0.00 : 4d3f59: 0f 82 8d 00 00 00 jb 4d3fec 0.00 : 4d3f5f: 4c 8d 75 d8 lea -0x28(%rbp),%r14 : { : elog(LOG, "request to flush past end of generated WAL; request %X/%X, currpos %X/%X", 0.00 : 4d3f63: 49 89 dd mov %rbx,%r13 0.00 : 4d3f66: 31 db xor %ebx,%ebx 0.00 : 4d3f68: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 4d3f6f: 00 : * out for any insertion that's still in progress. : */ : finishedUpto = reservedUpto; : for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++) : { : XLogRecPtr insertingat = InvalidXLogRecPtr; 0.00 : 4d3f70: 48 c7 45 d8 00 00 00 movq $0x0,-0x28(%rbp) 0.00 : 4d3f77: 00 0.00 : 4d3f78: 31 d2 xor %edx,%edx 0.00 : 4d3f7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * same page and the inserter will release the lock without ever : * calling LWLockUpdateVar. But if it has to sleep, it will : * advertise the insertion point with LWLockUpdateVar before : * sleeping. : */ : if (LWLockWaitForVar(&WALInsertLocks[i].l.lock, 0.00 : 4d3f80: 48 89 df mov %rbx,%rdi 0.00 : 4d3f83: 48 03 3d 36 52 6a 00 add 0x6a5236(%rip),%rdi # b791c0 0.00 : 4d3f8a: 4c 89 f1 mov %r14,%rcx 0.00 : 4d3f8d: 48 8d 77 20 lea 0x20(%rdi),%rsi 0.00 : 4d3f91: e8 6a b8 1b 00 callq 68f800 0.00 : 4d3f96: 84 c0 test %al,%al 0.00 : 4d3f98: 75 16 jne 4d3fb0 : : /* : * This insertion is still in progress. Have to wait, unless the : * inserter has proceeded past 'upto'. : */ : } while (insertingat < upto); 0.00 : 4d3f9a: 48 8b 45 d8 mov -0x28(%rbp),%rax 0.00 : 4d3f9e: 49 39 c4 cmp %rax,%r12 0.00 : 4d3fa1: 48 89 c2 mov %rax,%rdx 0.00 : 4d3fa4: 77 da ja 4d3f80 : : if (insertingat != InvalidXLogRecPtr && insertingat < finishedUpto) 0.00 : 4d3fa6: 48 85 c0 test %rax,%rax 0.00 : 4d3fa9: 74 05 je 4d3fb0 0.00 : 4d3fab: 4c 39 e8 cmp %r13,%rax 0.00 : 4d3fae: 72 03 jb 4d3fb3 0.00 : 4d3fb0: 4c 89 e8 mov %r13,%rax 0.00 : 4d3fb3: 48 83 eb 80 sub $0xffffffffffffff80,%rbx : * the WAL insertions have been finished. Initialize it to the head of : * reserved WAL, and as we iterate through the insertion locks, back it : * out for any insertion that's still in progress. : */ : finishedUpto = reservedUpto; : for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++) 0.00 : 4d3fb7: 48 81 fb 00 04 00 00 cmp $0x400,%rbx 0.00 : 4d3fbe: 74 08 je 4d3fc8 0.00 : 4d3fc0: 49 89 c5 mov %rax,%r13 0.00 : 4d3fc3: eb ab jmp 4d3f70 0.00 : 4d3fc5: 0f 1f 00 nopl (%rax) : : if (insertingat != InvalidXLogRecPtr && insertingat < finishedUpto) : finishedUpto = insertingat; : } : return finishedUpto; : } 0.00 : 4d3fc8: 48 83 c4 10 add $0x10,%rsp 0.00 : 4d3fcc: 5b pop %rbx 0.00 : 4d3fcd: 41 5c pop %r12 0.00 : 4d3fcf: 41 5d pop %r13 0.00 : 4d3fd1: 41 5e pop %r14 0.00 : 4d3fd3: c9 leaveq 0.00 : 4d3fd4: c3 retq : : if (MyProc == NULL) : elog(PANIC, "cannot wait without a PGPROC structure"); : : /* Read the current insert position */ : SpinLockAcquire(&Insert->insertpos_lck); 0.00 : 4d3fd5: ba ae 06 00 00 mov $0x6ae,%edx 0.00 : 4d3fda: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d3fdf: 48 89 df mov %rbx,%rdi 0.00 : 4d3fe2: e8 59 c0 1b 00 callq 690040 0.00 : 4d3fe7: e9 5b ff ff ff jmpq 4d3f47 : * that all WAL that has been reserved needs to be finished. In this : * corner-case, the return value can be smaller than 'upto' argument. : */ : if (upto > reservedUpto) : { : elog(LOG, "request to flush past end of generated WAL; request %X/%X, currpos %X/%X", 0.00 : 4d3fec: ba 20 d6 7b 00 mov $0x7bd620,%edx 0.00 : 4d3ff1: be bf 06 00 00 mov $0x6bf,%esi 0.00 : 4d3ff6: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d3ffb: e8 20 74 2a 00 callq 77b420 0.00 : 4d4000: 4c 89 e2 mov %r12,%rdx 0.00 : 4d4003: 49 89 d8 mov %rbx,%r8 0.00 : 4d4006: 44 89 e1 mov %r12d,%ecx 0.00 : 4d4009: 48 c1 ea 20 shr $0x20,%rdx 0.00 : 4d400d: 41 89 d9 mov %ebx,%r9d 0.00 : 4d4010: 49 c1 e8 20 shr $0x20,%r8 0.00 : 4d4014: be a8 b6 7b 00 mov $0x7bb6a8,%esi 0.00 : 4d4019: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 4d401e: 31 c0 xor %eax,%eax 0.00 : 4d4020: e8 0b 72 2a 00 callq 77b230 0.00 : 4d4025: 49 89 dc mov %rbx,%r12 0.00 : 4d4028: e9 32 ff ff ff jmpq 4d3f5f : XLogRecPtr finishedUpto; : XLogCtlInsert *Insert = &XLogCtl->Insert; : int i; : : if (MyProc == NULL) : elog(PANIC, "cannot wait without a PGPROC structure"); 0.00 : 4d402d: ba 20 d6 7b 00 mov $0x7bd620,%edx 0.00 : 4d4032: be ab 06 00 00 mov $0x6ab,%esi 0.00 : 4d4037: bf d6 f3 7a 00 mov $0x7af3d6,%edi 0.00 : 4d403c: e8 df 73 2a 00 callq 77b420 0.00 : 4d4041: be 80 b6 7b 00 mov $0x7bb680,%esi 0.00 : 4d4046: bf 16 00 00 00 mov $0x16,%edi 0.00 : 4d404b: 31 c0 xor %eax,%eax 0.00 : 4d404d: e8 de 71 2a 00 callq 77b230 0.00 : 4d4052: e8 79 54 f9 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2909 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004d4910 : : * : * Returns TRUE if we flushed anything. : */ : bool : XLogBackgroundFlush(void) : { 0.00 : 4d4910: 55 push %rbp 0.00 : 4d4911: 48 89 e5 mov %rsp,%rbp 0.00 : 4d4914: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 4d4918: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 4d491c: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 4d4920: 48 83 ec 30 sub $0x30,%rsp : XLogRecPtr WriteRqstPtr; : bool flexible = true; : bool wrote_something = false; : : /* XLOG doesn't need flushing during recovery */ : if (RecoveryInProgress()) 0.00 : 4d4924: e8 97 8b ff ff callq 4cd4c0 0.00 : 4d4929: 84 c0 test %al,%al 0.00 : 4d492b: 0f 85 9f 01 00 00 jne 4d4ad0 : return false; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4931: 48 8b 15 60 48 6a 00 mov 0x6a4860(%rip),%rdx # b79198 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 4d4938: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d493d: 48 81 c2 08 06 00 00 add $0x608,%rdx 0.00 : 4d4944: f0 86 02 lock xchg %al,(%rdx) /home/Computational/mark/src/postgres-andres/src/backend/access/transam/xlog.c:2909 100.00 : 4d4947: 84 c0 test %al,%al 0.00 : 4d4949: 0f 85 99 01 00 00 jne 4d4ae8 : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d494f: 48 8b 05 42 48 6a 00 mov 0x6a4842(%rip),%rax # b79198 0.00 : 4d4956: 48 8b 90 28 01 00 00 mov 0x128(%rax),%rdx 0.00 : 4d495d: 48 89 15 4c 48 6a 00 mov %rdx,0x6a484c(%rip) # b791b0 0.00 : 4d4964: 48 8b 90 30 01 00 00 mov 0x130(%rax),%rdx 0.00 : 4d496b: 48 89 15 46 48 6a 00 mov %rdx,0x6a4846(%rip) # b791b8 : WriteRqstPtr = XLogCtl->LogwrtRqst.Write; 0.00 : 4d4972: 48 8b 98 d8 00 00 00 mov 0xd8(%rax),%rbx : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d4979: 48 8b 05 18 48 6a 00 mov 0x6a4818(%rip),%rax # b79198 : : /* back off to last completed page boundary */ : WriteRqstPtr -= WriteRqstPtr % XLOG_BLCKSZ; 0.00 : 4d4980: 48 81 e3 00 e0 ff ff and $0xffffffffffffe000,%rbx : : /* if we have already flushed that far, consider async commit records */ : if (WriteRqstPtr <= LogwrtResult.Flush) 0.00 : 4d4987: 41 bd 01 00 00 00 mov $0x1,%r13d : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); : LogwrtResult = XLogCtl->LogwrtResult; : WriteRqstPtr = XLogCtl->LogwrtRqst.Write; : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d498d: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : : /* back off to last completed page boundary */ : WriteRqstPtr -= WriteRqstPtr % XLOG_BLCKSZ; : : /* if we have already flushed that far, consider async commit records */ : if (WriteRqstPtr <= LogwrtResult.Flush) 0.00 : 4d4994: 48 3b 1d 1d 48 6a 00 cmp 0x6a481d(%rip),%rbx # b791b8 0.00 : 4d499b: 0f 86 af 00 00 00 jbe 4d4a50 : (uint32) (WriteRqstPtr >> 32), (uint32) WriteRqstPtr, : (uint32) (LogwrtResult.Write >> 32), (uint32) LogwrtResult.Write, : (uint32) (LogwrtResult.Flush >> 32), (uint32) LogwrtResult.Flush); : #endif : : START_CRIT_SECTION(); 0.00 : 4d49a1: 8b 05 f5 56 6e 00 mov 0x6e56f5(%rip),%eax # bba09c : : /* now wait for any in-progress insertions to finish and get write lock */ : WaitXLogInsertionsToFinish(WriteRqstPtr); 0.00 : 4d49a7: 48 89 df mov %rbx,%rdi : LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); : LogwrtResult = XLogCtl->LogwrtResult; : if (WriteRqstPtr > LogwrtResult.Flush) 0.00 : 4d49aa: 45 31 e4 xor %r12d,%r12d : (uint32) (WriteRqstPtr >> 32), (uint32) WriteRqstPtr, : (uint32) (LogwrtResult.Write >> 32), (uint32) LogwrtResult.Write, : (uint32) (LogwrtResult.Flush >> 32), (uint32) LogwrtResult.Flush); : #endif : : START_CRIT_SECTION(); 0.00 : 4d49ad: 83 c0 01 add $0x1,%eax 0.00 : 4d49b0: 89 05 e6 56 6e 00 mov %eax,0x6e56e6(%rip) # bba09c : : /* now wait for any in-progress insertions to finish and get write lock */ : WaitXLogInsertionsToFinish(WriteRqstPtr); 0.00 : 4d49b6: e8 55 f5 ff ff callq 4d3f10 : LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); 0.00 : 4d49bb: 48 8b 3d 3e 90 6a 00 mov 0x6a903e(%rip),%rdi # b7da00 0.00 : 4d49c2: 31 f6 xor %esi,%esi 0.00 : 4d49c4: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d49cb: e8 20 b1 1b 00 callq 68faf0 : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d49d0: 48 8b 15 c1 47 6a 00 mov 0x6a47c1(%rip),%rdx # b79198 0.00 : 4d49d7: 48 8b 82 28 01 00 00 mov 0x128(%rdx),%rax 0.00 : 4d49de: 48 89 05 cb 47 6a 00 mov %rax,0x6a47cb(%rip) # b791b0 0.00 : 4d49e5: 48 8b 82 30 01 00 00 mov 0x130(%rdx),%rax : if (WriteRqstPtr > LogwrtResult.Flush) 0.00 : 4d49ec: 48 39 d8 cmp %rbx,%rax : START_CRIT_SECTION(); : : /* now wait for any in-progress insertions to finish and get write lock */ : WaitXLogInsertionsToFinish(WriteRqstPtr); : LWLockAcquire(WALWriteLock, LW_EXCLUSIVE); : LogwrtResult = XLogCtl->LogwrtResult; 0.00 : 4d49ef: 48 89 05 c2 47 6a 00 mov %rax,0x6a47c2(%rip) # b791b8 : if (WriteRqstPtr > LogwrtResult.Flush) 0.00 : 4d49f6: 0f 82 24 01 00 00 jb 4d4b20 : WriteRqst.Write = WriteRqstPtr; : WriteRqst.Flush = WriteRqstPtr; : XLogWrite(WriteRqst, flexible); : wrote_something = true; : } : LWLockRelease(WALWriteLock); 0.00 : 4d49fc: 48 8b 3d fd 8f 6a 00 mov 0x6a8ffd(%rip),%rdi # b7da00 0.00 : 4d4a03: 48 81 c7 00 01 00 00 add $0x100,%rdi 0.00 : 4d4a0a: e8 91 a9 1b 00 callq 68f3a0 : : END_CRIT_SECTION(); 0.00 : 4d4a0f: 8b 05 87 56 6e 00 mov 0x6e5687(%rip),%eax # bba09c 0.00 : 4d4a15: 83 e8 01 sub $0x1,%eax : : /* wake up walsenders now that we've released heavily contended locks */ : WalSndWakeupProcessRequests(); 0.00 : 4d4a18: 80 3d aa 83 6a 00 00 cmpb $0x0,0x6a83aa(%rip) # b7cdc9 : XLogWrite(WriteRqst, flexible); : wrote_something = true; : } : LWLockRelease(WALWriteLock); : : END_CRIT_SECTION(); 0.00 : 4d4a1f: 89 05 77 56 6e 00 mov %eax,0x6e5677(%rip) # bba09c : : /* wake up walsenders now that we've released heavily contended locks */ : WalSndWakeupProcessRequests(); 0.00 : 4d4a25: 74 16 je 4d4a3d 0.00 : 4d4a27: 8b 1d 97 83 6a 00 mov 0x6a8397(%rip),%ebx # b7cdc4 0.00 : 4d4a2d: c6 05 95 83 6a 00 00 movb $0x0,0x6a8395(%rip) # b7cdc9 0.00 : 4d4a34: 85 db test %ebx,%ebx 0.00 : 4d4a36: 7e 05 jle 4d4a3d 0.00 : 4d4a38: e8 a3 c0 18 00 callq 660ae0 : : /* : * Great, done. To take some work off the critical path, try to initialize : * as many of the no-longer-needed WAL buffers for future use as we can. : */ : AdvanceXLInsertBuffer(InvalidXLogRecPtr, true); 0.00 : 4d4a3d: be 01 00 00 00 mov $0x1,%esi 0.00 : 4d4a42: 31 ff xor %edi,%edi 0.00 : 4d4a44: e8 27 fc ff ff callq 4d4670 : : return wrote_something; : } 0.00 : 4d4a49: e9 85 00 00 00 jmpq 4d4ad3 0.00 : 4d4a4e: 66 90 xchg %ax,%ax : WriteRqstPtr -= WriteRqstPtr % XLOG_BLCKSZ; : : /* if we have already flushed that far, consider async commit records */ : if (WriteRqstPtr <= LogwrtResult.Flush) : { : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4a50: 48 8d 90 08 06 00 00 lea 0x608(%rax),%rdx 0.00 : 4d4a57: b8 01 00 00 00 mov $0x1,%eax 0.00 : 4d4a5c: f0 86 02 lock xchg %al,(%rdx) 0.00 : 4d4a5f: 84 c0 test %al,%al 0.00 : 4d4a61: 74 1d je 4d4a80 0.00 : 4d4a63: 48 8b 3d 2e 47 6a 00 mov 0x6a472e(%rip),%rdi # b79198 0.00 : 4d4a6a: ba 68 0b 00 00 mov $0xb68,%edx 0.00 : 4d4a6f: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d4a74: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d4a7b: e8 c0 b5 1b 00 callq 690040 : WriteRqstPtr = XLogCtl->asyncXactLSN; 0.00 : 4d4a80: 48 8b 05 11 47 6a 00 mov 0x6a4711(%rip),%rax # b79198 0.00 : 4d4a87: 48 8b 98 f8 00 00 00 mov 0xf8(%rax),%rbx : SpinLockRelease(&XLogCtl->info_lck); 0.00 : 4d4a8e: 48 8b 05 03 47 6a 00 mov 0x6a4703(%rip),%rax # b79198 0.00 : 4d4a95: c6 80 08 06 00 00 00 movb $0x0,0x608(%rax) : /* : * If already known flushed, we're done. Just need to check if we are : * holding an open file handle to a logfile that's no longer in use, : * preventing the file from being deleted. : */ : if (WriteRqstPtr <= LogwrtResult.Flush) 0.00 : 4d4a9c: 48 3b 1d 15 47 6a 00 cmp 0x6a4715(%rip),%rbx # b791b8 0.00 : 4d4aa3: 0f 87 99 00 00 00 ja 4d4b42 : { : if (openLogFile >= 0) 0.00 : 4d4aa9: 44 8b 25 a4 33 69 00 mov 0x6933a4(%rip),%r12d # b67e54 0.00 : 4d4ab0: 45 85 e4 test %r12d,%r12d 0.00 : 4d4ab3: 78 1b js 4d4ad0 : { : if (!XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) 0.00 : 4d4ab5: 48 8b 05 f4 46 6a 00 mov 0x6a46f4(%rip),%rax # b791b0 0.00 : 4d4abc: 48 83 e8 01 sub $0x1,%rax 0.00 : 4d4ac0: 48 c1 e8 18 shr $0x18,%rax 0.00 : 4d4ac4: 48 3b 05 05 47 6a 00 cmp 0x6a4705(%rip),%rax # b791d0 0.00 : 4d4acb: 75 43 jne 4d4b10 0.00 : 4d4acd: 0f 1f 00 nopl (%rax) : : /* : * Great, done. To take some work off the critical path, try to initialize : * as many of the no-longer-needed WAL buffers for future use as we can. : */ : AdvanceXLInsertBuffer(InvalidXLogRecPtr, true); 0.00 : 4d4ad0: 45 31 e4 xor %r12d,%r12d : : return wrote_something; : } 0.00 : 4d4ad3: 44 89 e0 mov %r12d,%eax 0.00 : 4d4ad6: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 4d4ada: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 4d4ade: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 4d4ae2: c9 leaveq 0.00 : 4d4ae3: c3 retq 0.00 : 4d4ae4: 0f 1f 40 00 nopl 0x0(%rax) : /* XLOG doesn't need flushing during recovery */ : if (RecoveryInProgress()) : return false; : : /* read LogwrtResult and update local state */ : SpinLockAcquire(&XLogCtl->info_lck); 0.00 : 4d4ae8: 48 8b 3d a9 46 6a 00 mov 0x6a46a9(%rip),%rdi # b79198 0.00 : 4d4aef: ba 5d 0b 00 00 mov $0xb5d,%edx 0.00 : 4d4af4: be d6 f3 7a 00 mov $0x7af3d6,%esi 0.00 : 4d4af9: 48 81 c7 08 06 00 00 add $0x608,%rdi 0.00 : 4d4b00: e8 3b b5 1b 00 callq 690040 0.00 : 4d4b05: e9 45 fe ff ff jmpq 4d494f 0.00 : 4d4b0a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : if (openLogFile >= 0) : { : if (!XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) : { : XLogFileClose(); 0.00 : 4d4b10: e8 db 98 ff ff callq 4ce3f0 0.00 : 4d4b15: 45 31 e4 xor %r12d,%r12d 0.00 : 4d4b18: eb b9 jmp 4d4ad3 0.00 : 4d4b1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : XLogwrtRqst WriteRqst; : : WriteRqst.Write = WriteRqstPtr; : WriteRqst.Flush = WriteRqstPtr; : XLogWrite(WriteRqst, flexible); 0.00 : 4d4b20: 41 0f be d5 movsbl %r13b,%edx 0.00 : 4d4b24: 48 89 df mov %rbx,%rdi 0.00 : 4d4b27: 48 89 de mov %rbx,%rsi : LogwrtResult = XLogCtl->LogwrtResult; : if (WriteRqstPtr > LogwrtResult.Flush) : { : XLogwrtRqst WriteRqst; : : WriteRqst.Write = WriteRqstPtr; 0.00 : 4d4b2a: 48 89 5d d0 mov %rbx,-0x30(%rbp) : WriteRqst.Flush = WriteRqstPtr; 0.00 : 4d4b2e: 48 89 5d d8 mov %rbx,-0x28(%rbp) : XLogWrite(WriteRqst, flexible); 0.00 : 4d4b32: 41 bc 01 00 00 00 mov $0x1,%r12d 0.00 : 4d4b38: e8 23 f5 ff ff callq 4d4060 0.00 : 4d4b3d: e9 ba fe ff ff jmpq 4d49fc : { : if (openLogFile >= 0) : { : if (!XLByteInPrevSeg(LogwrtResult.Write, openLogSegNo)) : { : XLogFileClose(); 0.00 : 4d4b42: 45 31 ed xor %r13d,%r13d 0.00 : 4d4b45: e9 57 fe ff ff jmpq 4d49a1 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:246 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e2b90 : : */ : bool : IsSharedRelation(Oid relationId) : { : /* These are the shared catalogs (look for BKI_SHARED_RELATION) */ : if (relationId == AuthIdRelationId || 0.00 : 4e2b90: 8d 87 14 fb ff ff lea -0x4ec(%rdi),%eax : * of shared relations is fairly static, so a hand-maintained list of their : * OIDs isn't completely impractical. : */ : bool : IsSharedRelation(Oid relationId) : { 0.00 : 4e2b96: 55 push %rbp : /* These are the shared catalogs (look for BKI_SHARED_RELATION) */ : if (relationId == AuthIdRelationId || 0.00 : 4e2b97: 83 f8 02 cmp $0x2,%eax : * of shared relations is fairly static, so a hand-maintained list of their : * OIDs isn't completely impractical. : */ : bool : IsSharedRelation(Oid relationId) : { 0.00 : 4e2b9a: 48 89 e5 mov %rsp,%rbp : /* These are the shared catalogs (look for BKI_SHARED_RELATION) */ : if (relationId == AuthIdRelationId || 0.00 : 4e2b9d: 0f 86 dd 00 00 00 jbe 4e2c80 0.00 : 4e2ba3: 81 ff 70 04 00 00 cmp $0x470,%edi 0.00 : 4e2ba9: 0f 84 d1 00 00 00 je 4e2c80 0.00 : 4e2baf: 81 ff 5c 09 00 00 cmp $0x95c,%edi 0.00 : 4e2bb5: 0f 84 c5 00 00 00 je 4e2c80 0.00 : 4e2bbb: 81 ff be 04 00 00 cmp $0x4be,%edi 0.00 : 4e2bc1: 0f 84 b9 00 00 00 je 4e2c80 0.00 : 4e2bc7: 81 ff 08 0e 00 00 cmp $0xe08,%edi 0.00 : 4e2bcd: 0f 1f 00 nopl (%rax) 0.00 : 4e2bd0: 0f 84 aa 00 00 00 je 4e2c80 0.00 : 4e2bd6: 81 ff bd 04 00 00 cmp $0x4bd,%edi 0.00 : 4e2bdc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4e2be0: 0f 84 9a 00 00 00 je 4e2c80 0.00 : 4e2be6: 81 ff 94 0b 00 00 cmp $0xb94,%edi 0.00 : 4e2bec: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 4e2bf0: 0f 84 8a 00 00 00 je 4e2c80 : relationId == SharedSecLabelRelationId || : relationId == TableSpaceRelationId || : relationId == DbRoleSettingRelationId) : return true; : /* These are their indexes (see indexing.h) */ : if (relationId == AuthIdRolnameIndexId || 0.00 : 4e2bf6: 8d 87 8c f5 ff ff lea -0xa74(%rdi),%eax 0.00 : 4e2bfc: 83 f8 01 cmp $0x1,%eax 0.00 : 4e2bff: 90 nop 0.00 : 4e2c00: 76 7e jbe 4e2c80 0.00 : 4e2c02: 81 ff 86 0a 00 00 cmp $0xa86,%edi 0.00 : 4e2c08: 74 76 je 4e2c80 0.00 : 4e2c0a: 81 ff 87 0a 00 00 cmp $0xa87,%edi 0.00 : 4e2c10: 74 6e je 4e2c80 0.00 : 4e2c12: 81 ff 6f 0a 00 00 cmp $0xa6f,%edi 0.00 : 4e2c18: 74 66 je 4e2c80 0.00 : 4e2c1a: 81 ff 70 0a 00 00 cmp $0xa70,%edi 0.00 : 4e2c20: 74 5e je 4e2c80 0.00 : 4e2c22: 81 ff 71 04 00 00 cmp $0x471,%edi 0.00 : 4e2c28: 74 56 je 4e2c80 0.00 : 4e2c2a: 81 ff 5d 09 00 00 cmp $0x95d,%edi 0.00 : 4e2c30: 74 4e je 4e2c80 0.00 : 4e2c32: 81 ff d0 04 00 00 cmp $0x4d0,%edi 0.00 : 4e2c38: 74 46 je 4e2c80 0.00 : 4e2c3a: 81 ff d1 04 00 00 cmp $0x4d1,%edi 0.00 : 4e2c40: 74 3e je 4e2c80 0.00 : 4e2c42: 81 ff 09 0e 00 00 cmp $0xe09,%edi 0.00 : 4e2c48: 74 36 je 4e2c80 0.00 : 4e2c4a: 81 ff 89 0a 00 00 cmp $0xa89,%edi 0.00 : 4e2c50: 74 2e je 4e2c80 0.00 : 4e2c52: 81 ff 8a 0a 00 00 cmp $0xa8a,%edi 0.00 : 4e2c58: 74 26 je 4e2c80 0.00 : 4e2c5a: 81 ff 95 0b 00 00 cmp $0xb95,%edi 0.00 : 4e2c60: 74 1e je 4e2c80 : relationId == TablespaceOidIndexId || : relationId == TablespaceNameIndexId || : relationId == DbRoleSettingDatidRolidIndexId) : return true; : /* These are their toast tables and toast indexes (see toasting.h) */ : if (relationId == PgShdescriptionToastTable || 0.00 : 4e2c62: 8d 87 e2 f4 ff ff lea -0xb1e(%rdi),%eax 0.00 : 4e2c68: 83 f8 01 cmp $0x1,%eax 0.00 : 4e2c6b: 76 13 jbe 4e2c80 0.00 : 4e2c6d: 81 ff 96 0b 00 00 cmp $0xb96,%edi 0.00 : 4e2c73: 74 0b je 4e2c80 0.00 : 4e2c75: 81 ff 97 0b 00 00 cmp $0xb97,%edi : relationId == PgShdescriptionToastIndex || : relationId == PgDbRoleSettingToastTable || : relationId == PgDbRoleSettingToastIndex) : return true; : return false; : } 0.00 : 4e2c7b: c9 leaveq : relationId == TablespaceOidIndexId || : relationId == TablespaceNameIndexId || : relationId == DbRoleSettingDatidRolidIndexId) : return true; : /* These are their toast tables and toast indexes (see toasting.h) */ : if (relationId == PgShdescriptionToastTable || /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:246 100.00 : 4e2c7c: 0f 94 c0 sete %al : relationId == PgShdescriptionToastIndex || : relationId == PgDbRoleSettingToastTable || : relationId == PgDbRoleSettingToastIndex) : return true; : return false; : } 0.00 : 4e2c7f: c3 retq : relationId == TablespaceOidIndexId || : relationId == TablespaceNameIndexId || : relationId == DbRoleSettingDatidRolidIndexId) : return true; : /* These are their toast tables and toast indexes (see toasting.h) */ : if (relationId == PgShdescriptionToastTable || 0.00 : 4e2c80: b8 01 00 00 00 mov $0x1,%eax : relationId == PgShdescriptionToastIndex || : relationId == PgDbRoleSettingToastTable || : relationId == PgDbRoleSettingToastIndex) : return true; : return false; : } 0.00 : 4e2c85: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000004e2d60 : : * to other backends. Those are treated the same as other backends' regular : * temp table namespaces, and access is prevented where appropriate. : */ : bool : IsToastNamespace(Oid namespaceId) : { 0.00 : 4e2d60: 55 push %rbp : return (namespaceId == PG_TOAST_NAMESPACE) || /home/Computational/mark/src/postgres-andres/src/backend/catalog/catalog.c:176 100.00 : 4e2d61: 83 ff 63 cmp $0x63,%edi 0.00 : 4e2d64: b8 01 00 00 00 mov $0x1,%eax : * to other backends. Those are treated the same as other backends' regular : * temp table namespaces, and access is prevented where appropriate. : */ : bool : IsToastNamespace(Oid namespaceId) : { 0.00 : 4e2d69: 48 89 e5 mov %rsp,%rbp : return (namespaceId == PG_TOAST_NAMESPACE) || 0.00 : 4e2d6c: 74 0a je 4e2d78 0.00 : 4e2d6e: e8 0d 9c 00 00 callq 4ec980 0.00 : 4e2d73: 84 c0 test %al,%al 0.00 : 4e2d75: 0f 95 c0 setne %al : isTempToastNamespace(namespaceId); : } 0.00 : 4e2d78: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21868 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005116b0 : : int : yyparse (yyscanner) : core_yyscan_t yyscanner; : #endif : #endif : { 0.00 : 5116b0: 55 push %rbp 0.00 : 5116b1: 48 89 e5 mov %rsp,%rbp 0.00 : 5116b4: 41 57 push %r15 0.00 : 5116b6: 45 31 ff xor %r15d,%r15d 0.00 : 5116b9: 48 8d 85 d0 f4 ff ff lea -0xb30(%rbp),%rax 0.00 : 5116c0: 48 8d 95 10 fb ff ff lea -0x4f0(%rbp),%rdx 0.00 : 5116c7: 41 56 push %r14 0.00 : 5116c9: 41 55 push %r13 0.00 : 5116cb: 41 54 push %r12 0.00 : 5116cd: 4c 8d a5 30 fe ff ff lea -0x1d0(%rbp),%r12 0.00 : 5116d4: 53 push %rbx 0.00 : 5116d5: 4d 89 e2 mov %r12,%r10 0.00 : 5116d8: 48 81 ec a8 0b 00 00 sub $0xba8,%rsp 0.00 : 5116df: 48 89 bd 70 f4 ff ff mov %rdi,-0xb90(%rbp) 0.00 : 5116e6: c7 85 7c f4 ff ff fe movl $0xfffffffe,-0xb84(%rbp) 0.00 : 5116ed: ff ff ff 0.00 : 5116f0: 4c 89 a5 48 f4 ff ff mov %r12,-0xbb8(%rbp) 0.00 : 5116f7: 48 89 85 80 f4 ff ff mov %rax,-0xb80(%rbp) 0.00 : 5116fe: 48 89 85 88 f4 ff ff mov %rax,-0xb78(%rbp) 0.00 : 511705: 48 89 95 90 f4 ff ff mov %rdx,-0xb70(%rbp) 0.00 : 51170c: 48 89 95 98 f4 ff ff mov %rdx,-0xb68(%rbp) 0.00 : 511713: 48 c7 85 a0 f4 ff ff movq $0xc8,-0xb60(%rbp) 0.00 : 51171a: c8 00 00 00 0.00 : 51171e: 48 c7 85 68 f4 ff ff movq $0xc7,-0xb98(%rbp) 0.00 : 511725: c7 00 00 00 0.00 : 511729: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* In all cases, when you get here, the value and location stacks : have just been pushed. So pushing a state here evens the stacks. */ : yyssp++; : : yysetstate: : *yyssp = yystate; 0.00 : 511730: 66 45 89 3a mov %r15w,(%r10) : : if (yyss + yystacksize - 1 <= yyssp) 0.00 : 511734: 48 8b b5 68 f4 ff ff mov -0xb98(%rbp),%rsi 0.00 : 51173b: 49 8d 04 74 lea (%r12,%rsi,2),%rax 0.00 : 51173f: 49 39 c2 cmp %rax,%r10 0.00 : 511742: 0f 83 f8 76 01 00 jae 528e40 0.00 : 511748: 48 8b 85 80 f4 ff ff mov -0xb80(%rbp),%rax 0.00 : 51174f: 48 8b 95 90 f4 ff ff mov -0xb70(%rbp),%rdx : YYABORT; : } : : YYDPRINTF ((stderr, "Entering state %d\n", yystate)); : : if (yystate == YYFINAL) 0.00 : 511756: 41 81 ff e3 02 00 00 cmp $0x2e3,%r15d : yyssp++; : : yysetstate: : *yyssp = yystate; : : if (yyss + yystacksize - 1 <= yyssp) 0.00 : 51175d: 4c 89 a5 b0 f4 ff ff mov %r12,-0xb50(%rbp) 0.00 : 511764: 48 89 85 b8 f4 ff ff mov %rax,-0xb48(%rbp) 0.00 : 51176b: 48 89 95 c0 f4 ff ff mov %rdx,-0xb40(%rbp) : YYABORT; : } : : YYDPRINTF ((stderr, "Entering state %d\n", yystate)); : : if (yystate == YYFINAL) 0.00 : 511772: 0f 84 00 78 01 00 je 528f78 : : /* Do appropriate processing given the current state. Read a : lookahead token if we need one and don't already have one. */ : : /* First try to decide what to do without reference to lookahead token. */ : yyn = yypact[yystate]; 0.00 : 511778: 4d 63 e7 movslq %r15d,%r12 0.00 : 51177b: 42 8b 1c a5 00 ea 7c mov 0x7cea00(,%r12,4),%ebx 0.00 : 511782: 00 : if (yypact_value_is_default (yyn)) 0.00 : 511783: 81 fb 0e f0 ff ff cmp $0xfffff00e,%ebx 0.00 : 511789: 74 5a je 5117e5 : goto yydefault; : : /* Not known => get a lookahead token if don't already have one. */ : : /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ : if (yychar == YYEMPTY) 0.00 : 51178b: 83 bd 7c f4 ff ff fe cmpl $0xfffffffe,-0xb84(%rbp) 0.00 : 511792: 0f 84 48 78 01 00 je 528fe0 : { : YYDPRINTF ((stderr, "Reading a token: ")); : yychar = YYLEX; : } : : if (yychar <= YYEOF) 0.00 : 511798: 44 8b 9d 7c f4 ff ff mov -0xb84(%rbp),%r11d 0.00 : 51179f: 45 85 db test %r11d,%r11d 0.00 : 5117a2: 0f 8e 08 78 01 00 jle 528fb0 : yychar = yytoken = YYEOF; : YYDPRINTF ((stderr, "Now at end of input.\n")); : } : else : { : yytoken = YYTRANSLATE (yychar); 0.00 : 5117a8: 81 bd 7c f4 ff ff aa cmpl $0x2aa,-0xb84(%rbp) 0.00 : 5117af: 02 00 00 0.00 : 5117b2: ba 02 00 00 00 mov $0x2,%edx 0.00 : 5117b7: 77 0f ja 5117c8 0.00 : 5117b9: 48 63 85 7c f4 ff ff movslq -0xb84(%rbp),%rax 0.00 : 5117c0: 0f b7 94 00 c0 32 7d movzwl 0x7d32c0(%rax,%rax,1),%edx 0.00 : 5117c7: 00 : YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); : } : : /* If the proper action on seeing token YYTOKEN is to reduce or to : detect an error, take that action. */ : yyn += yytoken; 0.00 : 5117c8: 8d 04 1a lea (%rdx,%rbx,1),%eax : if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 0.00 : 5117cb: 3d 93 3c 01 00 cmp $0x13c93,%eax 0.00 : 5117d0: 77 13 ja 5117e5 0.00 : 5117d2: 48 63 c8 movslq %eax,%rcx 0.00 : 5117d5: 0f bf 84 09 20 38 7d movswl 0x7d3820(%rcx,%rcx,1),%eax 0.00 : 5117dc: 00 0.00 : 5117dd: 39 d0 cmp %edx,%eax 0.00 : 5117df: 0f 84 2b 78 01 00 je 529010 : : /*-----------------------------------------------------------. : | yydefault -- do the default action for the current state. | : `-----------------------------------------------------------*/ : yydefault: : yyn = yydefact[yystate]; 0.00 : 5117e5: 43 0f b7 8c 24 a0 2a movzwl 0x822aa0(%r12,%r12,1),%ecx 0.00 : 5117ec: 82 00 : if (yyn == 0) /home/Computational/mark/src/postgres-andres/src/backend/parser/gram.c:21868 100.00 : 5117ee: 85 c9 test %ecx,%ecx 0.00 : 5117f0: 0f 84 82 78 01 00 je 529078 : /*-----------------------------. : | yyreduce -- Do a reduction. | : `-----------------------------*/ : yyreduce: : /* yyn is the number of a rule to reduce with. */ : yylen = yyr2[yyn]; 0.00 : 5117f6: 48 63 d9 movslq %ecx,%rbx : Otherwise, the following line sets YYVAL to garbage. : This behavior is undocumented and Bison : users should not rely upon it. Assigning to YYVAL : unconditionally makes the parser a bit smaller, and it avoids a : GCC warning that YYVAL may be used uninitialized. */ : yyval = yyvsp[1-yylen]; 0.00 : 5117f9: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5117fe: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : /*-----------------------------. : | yyreduce -- Do a reduction. | : `-----------------------------*/ : yyreduce: : /* yyn is the number of a rule to reduce with. */ : yylen = yyr2[yyn]; 0.00 : 511805: 44 0f b6 bb 00 4f 82 movzbl 0x824f00(%rbx),%r15d 0.00 : 51180c: 00 0.00 : 51180d: 48 89 9d 60 f4 ff ff mov %rbx,-0xba0(%rbp) : Otherwise, the following line sets YYVAL to garbage. : This behavior is undocumented and Bison : users should not rely upon it. Assigning to YYVAL : unconditionally makes the parser a bit smaller, and it avoids a : GCC warning that YYVAL may be used uninitialized. */ : yyval = yyvsp[1-yylen]; 0.00 : 511814: 44 29 f8 sub %r15d,%eax : : /* Default location. */ : YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); 0.00 : 511817: 45 85 ff test %r15d,%r15d : Otherwise, the following line sets YYVAL to garbage. : This behavior is undocumented and Bison : users should not rely upon it. Assigning to YYVAL : unconditionally makes the parser a bit smaller, and it avoids a : GCC warning that YYVAL may be used uninitialized. */ : yyval = yyvsp[1-yylen]; 0.00 : 51181a: 48 98 cltq 0.00 : 51181c: 4c 8b 34 c6 mov (%rsi,%rax,8),%r14 : : /* Default location. */ : YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); 0.00 : 511820: c7 85 a8 f4 ff ff ff movl $0xffffffff,-0xb58(%rbp) 0.00 : 511827: ff ff ff 0.00 : 51182a: 74 1b je 511847 0.00 : 51182c: 49 63 d7 movslq %r15d,%rdx 0.00 : 51182f: b8 01 00 00 00 mov $0x1,%eax 0.00 : 511834: 48 29 d0 sub %rdx,%rax 0.00 : 511837: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51183e: 8b 04 82 mov (%rdx,%rax,4),%eax 0.00 : 511841: 89 85 a8 f4 ff ff mov %eax,-0xb58(%rbp) : YY_REDUCE_PRINT (yyn); : switch (yyn) 0.00 : 511847: 81 f9 c9 07 00 00 cmp $0x7c9,%ecx 0.00 : 51184d: 0f 87 2d 01 00 00 ja 511980 0.00 : 511853: 89 c8 mov %ecx,%eax 0.00 : 511855: ff 24 c5 20 aa 7c 00 jmpq *0x7caa20(,%rax,8) : *****************************************************************************/ : : CopyStmt: COPY opt_binary qualified_name opt_column_list opt_oids : copy_from opt_program copy_file_name copy_delimiter opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); 0.00 : 51185c: 48 8b 3d fd 8f 6a 00 mov 0x6a8ffd(%rip),%rdi # bba860 0.00 : 511863: be 38 00 00 00 mov $0x38,%esi 0.00 : 511868: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51186f: e8 9c 75 28 00 callq 798e10 0.00 : 511874: c7 00 cb 02 00 00 movl $0x2cb,(%rax) : n->relation = $3; 0.00 : 51187a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : *****************************************************************************/ : : CopyStmt: COPY opt_binary qualified_name opt_column_list opt_oids : copy_from opt_program copy_file_name copy_delimiter opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); 0.00 : 511881: 48 89 c3 mov %rax,%rbx : n->relation = $3; 0.00 : 511884: 48 8b 46 c0 mov -0x40(%rsi),%rax : n->query = NULL; 0.00 : 511888: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 51188f: 00 : : CopyStmt: COPY opt_binary qualified_name opt_column_list opt_oids : copy_from opt_program copy_file_name copy_delimiter opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); : n->relation = $3; 0.00 : 511890: 48 89 43 08 mov %rax,0x8(%rbx) : n->query = NULL; : n->attlist = $4; 0.00 : 511894: 48 8b 46 c8 mov -0x38(%rsi),%rax 0.00 : 511898: 48 89 43 18 mov %rax,0x18(%rbx) : n->is_from = $6; 0.00 : 51189c: 0f b6 46 d8 movzbl -0x28(%rsi),%eax 0.00 : 5118a0: 88 43 20 mov %al,0x20(%rbx) : n->is_program = $7; 0.00 : 5118a3: 0f b6 46 e0 movzbl -0x20(%rsi),%eax 0.00 : 5118a7: 88 43 21 mov %al,0x21(%rbx) : n->filename = $8; : : if (n->is_program && n->filename == NULL) 0.00 : 5118aa: 80 7b 21 00 cmpb $0x0,0x21(%rbx) : n->relation = $3; : n->query = NULL; : n->attlist = $4; : n->is_from = $6; : n->is_program = $7; : n->filename = $8; 0.00 : 5118ae: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 5118b2: 48 89 43 28 mov %rax,0x28(%rbx) : : if (n->is_program && n->filename == NULL) 0.00 : 5118b6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5118bd: 74 09 je 5118c8 0.00 : 5118bf: 48 85 c0 test %rax,%rax 0.00 : 5118c2: 0f 84 4c 80 01 00 je 529914 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("STDIN/STDOUT not allowed with PROGRAM"), : parser_errposition(@8))); : : n->options = NIL; 0.00 : 5118c8: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 5118cf: 00 : /* Concatenate user-supplied flags */ : if ($2) 0.00 : 5118d0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5118d7: 48 8b 72 b8 mov -0x48(%rdx),%rsi 0.00 : 5118db: 48 85 f6 test %rsi,%rsi 0.00 : 5118de: 74 19 je 5118f9 : n->options = lappend(n->options, $2); 0.00 : 5118e0: 31 ff xor %edi,%edi 0.00 : 5118e2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5118e9: e8 92 05 0d 00 callq 5e1e80 0.00 : 5118ee: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 5118f2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : if ($5) 0.00 : 5118f9: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511900: 48 8b 71 d0 mov -0x30(%rcx),%rsi 0.00 : 511904: 48 85 f6 test %rsi,%rsi 0.00 : 511907: 74 1b je 511924 : n->options = lappend(n->options, $5); 0.00 : 511909: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 51190d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511914: e8 67 05 0d 00 callq 5e1e80 0.00 : 511919: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 51191d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : if ($9) 0.00 : 511924: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51192b: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 51192f: 48 85 f6 test %rsi,%rsi 0.00 : 511932: 74 1b je 51194f : n->options = lappend(n->options, $9); 0.00 : 511934: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 511938: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51193f: e8 3c 05 0d 00 callq 5e1e80 0.00 : 511944: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 511948: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : if ($11) 0.00 : 51194f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511956: 48 8b 32 mov (%rdx),%rsi 0.00 : 511959: 48 85 f6 test %rsi,%rsi 0.00 : 51195c: 74 1b je 511979 : n->options = list_concat(n->options, $11); 0.00 : 51195e: 48 8b 7b 30 mov 0x30(%rbx),%rdi 0.00 : 511962: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511969: e8 52 0c 0d 00 callq 5e25c0 0.00 : 51196e: 48 89 43 30 mov %rax,0x30(%rbx) 0.00 : 511972: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *)n; 0.00 : 511979: 49 89 de mov %rbx,%r14 0.00 : 51197c: 0f 1f 40 00 nopl 0x0(%rax) : case of YYERROR or YYBACKUP, subsequent parser actions might lead : to an incorrect destructor call or verbose syntax error message : before the lookahead is translated. */ : YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); : : YYPOPSTACK (yylen); 0.00 : 511980: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511987: 49 63 c7 movslq %r15d,%rax 0.00 : 51198a: 48 8d 14 c5 00 00 00 lea 0x0(,%rax,8),%rdx 0.00 : 511991: 00 0.00 : 511992: 48 29 d1 sub %rdx,%rcx 0.00 : 511995: 48 8d 14 00 lea (%rax,%rax,1),%rdx 0.00 : 511999: 48 c1 e0 02 shl $0x2,%rax : yylen = 0; : YY_STACK_PRINT (yyss, yyssp); : : *++yyvsp = yyval; 0.00 : 51199d: 48 8d 59 08 lea 0x8(%rcx),%rbx : case of YYERROR or YYBACKUP, subsequent parser actions might lead : to an incorrect destructor call or verbose syntax error message : before the lookahead is translated. */ : YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); : : YYPOPSTACK (yylen); 0.00 : 5119a1: 49 29 d2 sub %rdx,%r10 0.00 : 5119a4: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : yylen = 0; : YY_STACK_PRINT (yyss, yyssp); : : *++yyvsp = yyval; 0.00 : 5119ab: 48 89 9d 88 f4 ff ff mov %rbx,-0xb78(%rbp) 0.00 : 5119b2: 4c 89 71 08 mov %r14,0x8(%rcx) : case of YYERROR or YYBACKUP, subsequent parser actions might lead : to an incorrect destructor call or verbose syntax error message : before the lookahead is translated. */ : YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); : : YYPOPSTACK (yylen); 0.00 : 5119b6: 48 29 c2 sub %rax,%rdx 0.00 : 5119b9: 48 89 d0 mov %rdx,%rax : yylen = 0; : YY_STACK_PRINT (yyss, yyssp); : : *++yyvsp = yyval; : *++yylsp = yyloc; 0.00 : 5119bc: 48 8d 72 04 lea 0x4(%rdx),%rsi 0.00 : 5119c0: 8b 95 a8 f4 ff ff mov -0xb58(%rbp),%edx 0.00 : 5119c6: 48 89 b5 98 f4 ff ff mov %rsi,-0xb68(%rbp) 0.00 : 5119cd: 89 50 04 mov %edx,0x4(%rax) : that goes to, based on the state we popped back to and the rule : number reduced by. */ : : yyn = yyr1[yyn]; : : yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 0.00 : 5119d0: 48 8b 8d 60 f4 ff ff mov -0xba0(%rbp),%rcx 0.00 : 5119d7: 41 0f b7 32 movzwl (%r10),%esi 0.00 : 5119db: 0f b7 84 09 80 58 82 movzwl 0x825880(%rcx,%rcx,1),%eax 0.00 : 5119e2: 00 0.00 : 5119e3: 0f bf d6 movswl %si,%edx 0.00 : 5119e6: 2d bd 01 00 00 sub $0x1bd,%eax 0.00 : 5119eb: 48 63 c8 movslq %eax,%rcx 0.00 : 5119ee: 0f bf 84 09 60 6b 82 movswl 0x826b60(%rcx,%rcx,1),%eax 0.00 : 5119f5: 00 0.00 : 5119f6: 8d 04 02 lea (%rdx,%rax,1),%eax : if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 0.00 : 5119f9: 3d 93 3c 01 00 cmp $0x13c93,%eax 0.00 : 5119fe: 77 10 ja 511a10 0.00 : 511a00: 48 98 cltq 0.00 : 511a02: 66 3b b4 00 20 38 7d cmp 0x7d3820(%rax,%rax,1),%si 0.00 : 511a09: 00 0.00 : 511a0a: 0f 84 b8 75 01 00 je 528fc8 : yystate = yytable[yystate]; : else : yystate = yydefgoto[yyn - YYNTOKENS]; 0.00 : 511a10: 44 0f bf bc 09 00 70 movswl 0x827000(%rcx,%rcx,1),%r15d 0.00 : 511a17: 82 00 : | yynewstate -- Push a new state, which is found in yystate. | : `------------------------------------------------------------*/ : yynewstate: : /* In all cases, when you get here, the value and location stacks : have just been pushed. So pushing a state here evens the stacks. */ : yyssp++; 0.00 : 511a19: 48 8b 8d b8 f4 ff ff mov -0xb48(%rbp),%rcx 0.00 : 511a20: 48 8b 9d c0 f4 ff ff mov -0xb40(%rbp),%rbx 0.00 : 511a27: 49 83 c2 02 add $0x2,%r10 0.00 : 511a2b: 4c 8b a5 b0 f4 ff ff mov -0xb50(%rbp),%r12 0.00 : 511a32: 48 89 8d 80 f4 ff ff mov %rcx,-0xb80(%rbp) 0.00 : 511a39: 48 89 9d 90 f4 ff ff mov %rbx,-0xb70(%rbp) 0.00 : 511a40: e9 eb fc ff ff jmpq 511730 : { : $$ = makeBoolAConst(TRUE, @1); : } : | FALSE_P : { : $$ = makeBoolAConst(FALSE, @1); 0.00 : 511a45: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 511a4c: 31 ff xor %edi,%edi 0.00 : 511a4e: 8b 33 mov (%rbx),%esi 0.00 : 511a50: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511a57: e8 94 f2 ff ff callq 510cf0 : } : | NULL_P 0.00 : 511a5c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeBoolAConst(TRUE, @1); : } : | FALSE_P : { : $$ = makeBoolAConst(FALSE, @1); 0.00 : 511a63: 49 89 c6 mov %rax,%r14 : } : | NULL_P 0.00 : 511a66: e9 15 ff ff ff jmpq 511980 : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | TRUE_P : { : $$ = makeBoolAConst(TRUE, @1); 0.00 : 511a6b: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 511a72: bf 01 00 00 00 mov $0x1,%edi 0.00 : 511a77: 8b 31 mov (%rcx),%esi 0.00 : 511a79: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511a80: e8 6b f2 ff ff callq 510cf0 : } : | FALSE_P 0.00 : 511a85: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | TRUE_P : { : $$ = makeBoolAConst(TRUE, @1); 0.00 : 511a8c: 49 89 c6 mov %rax,%r14 : } : | FALSE_P 0.00 : 511a8f: e9 ec fe ff ff jmpq 511980 : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); : } : | ConstInterval '(' Iconst ')' Sconst opt_interval : { : TypeName *t = $1; 0.00 : 511a94: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : if ($6 != NIL) 0.00 : 511a9b: 48 8b 02 mov (%rdx),%rax : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); : } : | ConstInterval '(' Iconst ')' Sconst opt_interval : { : TypeName *t = $1; 0.00 : 511a9e: 4c 8b 62 d8 mov -0x28(%rdx),%r12 : if ($6 != NIL) 0.00 : 511aa2: 48 85 c0 test %rax,%rax 0.00 : 511aa5: 0f 84 c8 7c 01 00 je 529773 : { : if (list_length($6) != 1) 0.00 : 511aab: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 511aaf: 0f 85 69 7c 01 00 jne 52971e : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("interval precision specified twice"), : parser_errposition(@1))); : t->typmods = lappend($6, makeIntConst($3, @3)); 0.00 : 511ab5: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 511abc: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 511ac3: 8b 73 f4 mov -0xc(%rbx),%esi 0.00 : 511ac6: 8b 78 e8 mov -0x18(%rax),%edi 0.00 : 511ac9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511ad0: e8 3b f1 ff ff callq 510c10 0.00 : 511ad5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511adc: 48 89 c6 mov %rax,%rsi 0.00 : 511adf: 48 8b 3a mov (%rdx),%rdi 0.00 : 511ae2: e8 99 03 0d 00 callq 5e1e80 0.00 : 511ae7: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 511aec: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); 0.00 : 511af3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511afa: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 511b01: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 511b05: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 511b08: 4c 89 e2 mov %r12,%rdx 0.00 : 511b0b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511b12: e8 a9 f0 ff ff callq 510bc0 : } : | TRUE_P 0.00 : 511b17: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : t->typmods = lappend($6, makeIntConst($3, @3)); : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); 0.00 : 511b1e: 49 89 c6 mov %rax,%r14 : } : | TRUE_P 0.00 : 511b21: e9 5a fe ff ff jmpq 511980 : { : $$ = makeStringConstCast($2, @2, $1); : } : | ConstInterval Sconst opt_interval : { : TypeName *t = $1; 0.00 : 511b26: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : t->typmods = $3; 0.00 : 511b2d: 48 8b 03 mov (%rbx),%rax : { : $$ = makeStringConstCast($2, @2, $1); : } : | ConstInterval Sconst opt_interval : { : TypeName *t = $1; 0.00 : 511b30: 48 8b 53 f0 mov -0x10(%rbx),%rdx : t->typmods = $3; 0.00 : 511b34: 48 89 42 18 mov %rax,0x18(%rdx) : $$ = makeStringConstCast($2, @2, t); 0.00 : 511b38: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 511b3f: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 511b43: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 511b46: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511b4d: e8 6e f0 ff ff callq 510bc0 : } : | ConstInterval '(' Iconst ')' Sconst opt_interval 0.00 : 511b52: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | ConstInterval Sconst opt_interval : { : TypeName *t = $1; : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); 0.00 : 511b59: 49 89 c6 mov %rax,%r14 : } : | ConstInterval '(' Iconst ')' Sconst opt_interval 0.00 : 511b5c: e9 1f fe ff ff jmpq 511980 : t->location = @1; : $$ = makeStringConstCast($6, @6, t); : } : | ConstTypename Sconst : { : $$ = makeStringConstCast($2, @2, $1); 0.00 : 511b61: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 511b68: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 511b6f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511b76: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 511b7a: 8b 30 mov (%rax),%esi 0.00 : 511b7c: 48 8b 39 mov (%rcx),%rdi 0.00 : 511b7f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511b86: e8 35 f0 ff ff callq 510bc0 : } : | ConstInterval Sconst opt_interval 0.00 : 511b8b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : t->location = @1; : $$ = makeStringConstCast($6, @6, t); : } : | ConstTypename Sconst : { : $$ = makeStringConstCast($2, @2, $1); 0.00 : 511b92: 49 89 c6 mov %rax,%r14 : } : | ConstInterval Sconst opt_interval 0.00 : 511b95: e9 e6 fd ff ff jmpq 511980 : $$ = makeStringConstCast($2, @2, t); : } : | func_name '(' func_arg_list opt_sort_clause ')' Sconst : { : /* generic syntax with a type modifier */ : TypeName *t = makeTypeNameFromNameList($1); 0.00 : 511b9a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511ba1: 48 8b 7a d8 mov -0x28(%rdx),%rdi 0.00 : 511ba5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511bac: e8 7f fa 0d 00 callq 5f1630 : * We must use func_arg_list and opt_sort_clause in the : * production to avoid reduce/reduce conflicts, but we : * don't actually wish to allow NamedArgExpr in this : * context, nor ORDER BY. : */ : foreach(lc, $3) 0.00 : 511bb1: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$ = makeStringConstCast($2, @2, t); : } : | func_name '(' func_arg_list opt_sort_clause ')' Sconst : { : /* generic syntax with a type modifier */ : TypeName *t = makeTypeNameFromNameList($1); 0.00 : 511bb8: 48 89 c2 mov %rax,%rdx : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 511bbb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * We must use func_arg_list and opt_sort_clause in the : * production to avoid reduce/reduce conflicts, but we : * don't actually wish to allow NamedArgExpr in this : * context, nor ORDER BY. : */ : foreach(lc, $3) 0.00 : 511bc2: 48 8b 4b e8 mov -0x18(%rbx),%rcx 0.00 : 511bc6: 48 85 c9 test %rcx,%rcx 0.00 : 511bc9: 74 21 je 511bec 0.00 : 511bcb: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 511bcf: 48 85 c0 test %rax,%rax 0.00 : 511bd2: 74 18 je 511bec : { : NamedArgExpr *arg = (NamedArgExpr *) lfirst(lc); 0.00 : 511bd4: 48 8b 18 mov (%rax),%rbx : : if (IsA(arg, NamedArgExpr)) 0.00 : 511bd7: 81 3b 36 01 00 00 cmpl $0x136,(%rbx) 0.00 : 511bdd: 0f 84 0b 79 01 00 je 5294ee : * We must use func_arg_list and opt_sort_clause in the : * production to avoid reduce/reduce conflicts, but we : * don't actually wish to allow NamedArgExpr in this : * context, nor ORDER BY. : */ : foreach(lc, $3) 0.00 : 511be3: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 511be7: 48 85 c0 test %rax,%rax 0.00 : 511bea: 75 e8 jne 511bd4 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("type modifier cannot have parameter name"), : parser_errposition(arg->location))); : } : if ($4 != NIL) 0.00 : 511bec: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 511bf3: 48 83 7e f0 00 cmpq $0x0,-0x10(%rsi) 0.00 : 511bf8: 0f 85 6f 84 01 00 jne 52a06d : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("type modifier cannot have ORDER BY"), : parser_errposition(@4))); : : t->typmods = $3; 0.00 : 511bfe: 48 89 4a 18 mov %rcx,0x18(%rdx) : t->location = @1; 0.00 : 511c02: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 511c09: 8b 41 ec mov -0x14(%rcx),%eax 0.00 : 511c0c: 89 42 30 mov %eax,0x30(%rdx) : $$ = makeStringConstCast($6, @6, t); 0.00 : 511c0f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511c16: 8b 31 mov (%rcx),%esi 0.00 : 511c18: 48 8b 3b mov (%rbx),%rdi 0.00 : 511c1b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511c22: e8 99 ef ff ff callq 510bc0 : } : | ConstTypename Sconst 0.00 : 511c27: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : errmsg("type modifier cannot have ORDER BY"), : parser_errposition(@4))); : : t->typmods = $3; : t->location = @1; : $$ = makeStringConstCast($6, @6, t); 0.00 : 511c2e: 49 89 c6 mov %rax,%r14 : } : | ConstTypename Sconst 0.00 : 511c31: e9 4a fd ff ff jmpq 511980 : $$ = makeBitStringConst($1, @1); : } : | func_name Sconst : { : /* generic type 'literal' syntax */ : TypeName *t = makeTypeNameFromNameList($1); 0.00 : 511c36: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511c3d: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 511c41: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511c48: e8 e3 f9 0d 00 callq 5f1630 : t->location = @1; 0.00 : 511c4d: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 511c54: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 511c57: 89 50 30 mov %edx,0x30(%rax) : $$ = makeStringConstCast($2, @2, t); 0.00 : 511c5a: 48 89 c2 mov %rax,%rdx 0.00 : 511c5d: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 511c64: 48 8b 3b mov (%rbx),%rdi 0.00 : 511c67: 8b 30 mov (%rax),%esi 0.00 : 511c69: e8 52 ef ff ff callq 510bc0 : } : | func_name '(' func_arg_list opt_sort_clause ')' Sconst 0.00 : 511c6e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | func_name Sconst : { : /* generic type 'literal' syntax */ : TypeName *t = makeTypeNameFromNameList($1); : t->location = @1; : $$ = makeStringConstCast($2, @2, t); 0.00 : 511c75: 49 89 c6 mov %rax,%r14 : } : | func_name '(' func_arg_list opt_sort_clause ')' Sconst 0.00 : 511c78: e9 03 fd ff ff jmpq 511980 : : attr_name: ColLabel { $$ = $1; }; : : index_name: ColId { $$ = $1; }; : : file_name: Sconst { $$ = $1; }; 0.00 : 511c7d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 511c84: 4c 8b 36 mov (%rsi),%r14 : 0.00 : 511c87: e9 f4 fc ff ff jmpq 511980 : access_method: : ColId { $$ = $1; }; : : attr_name: ColLabel { $$ = $1; }; : : index_name: ColId { $$ = $1; }; 0.00 : 511c8c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511c93: 4c 8b 33 mov (%rbx),%r14 : 0.00 : 511c96: e9 e5 fc ff ff jmpq 511980 : ColId { $$ = $1; }; : : access_method: : ColId { $$ = $1; }; : : attr_name: ColLabel { $$ = $1; }; 0.00 : 511c9b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511ca2: 4c 8b 31 mov (%rcx),%r14 : 0.00 : 511ca5: e9 d6 fc ff ff jmpq 511980 : : database_name: : ColId { $$ = $1; }; : : access_method: : ColId { $$ = $1; }; 0.00 : 511caa: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511cb1: 4c 8b 32 mov (%rdx),%r14 : 0.00 : 511cb4: e9 c7 fc ff ff jmpq 511980 : : : name: ColId { $$ = $1; }; : : database_name: : ColId { $$ = $1; }; 0.00 : 511cb9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 511cc0: 4c 8b 30 mov (%rax),%r14 : 0.00 : 511cc3: e9 b8 fc ff ff jmpq 511980 : | name_list ',' name : { $$ = lappend($1, makeString($3)); } : ; : : : name: ColId { $$ = $1; }; 0.00 : 511cc8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 511ccf: 4c 8b 36 mov (%rsi),%r14 : 0.00 : 511cd2: e9 a9 fc ff ff jmpq 511980 : ; : : name_list: name : { $$ = list_make1(makeString($1)); } : | name_list ',' name : { $$ = lappend($1, makeString($3)); } 0.00 : 511cd7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511cde: 48 8b 3b mov (%rbx),%rdi 0.00 : 511ce1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511ce8: e8 03 da 0e 00 callq 5ff6f0 0.00 : 511ced: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 511cf1: 48 89 c6 mov %rax,%rsi 0.00 : 511cf4: e8 87 01 0d 00 callq 5e1e80 : ; 0.00 : 511cf9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : name_list: name : { $$ = list_make1(makeString($1)); } : | name_list ',' name : { $$ = lappend($1, makeString($3)); } 0.00 : 511d00: 49 89 c6 mov %rax,%r14 : ; 0.00 : 511d03: e9 78 fc ff ff jmpq 511980 : } : } : ; : : name_list: name : { $$ = list_make1(makeString($1)); } 0.00 : 511d08: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511d0f: 48 8b 39 mov (%rcx),%rdi 0.00 : 511d12: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511d19: e8 d2 d9 0e 00 callq 5ff6f0 0.00 : 511d1e: 31 f6 xor %esi,%esi 0.00 : 511d20: 48 89 c7 mov %rax,%rdi 0.00 : 511d23: e8 28 fb 0c 00 callq 5e1850 : | name_list ',' name 0.00 : 511d28: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : } : ; : : name_list: name : { $$ = list_make1(makeString($1)); } 0.00 : 511d2f: 49 89 c6 mov %rax,%r14 : | name_list ',' name 0.00 : 511d32: e9 49 fc ff ff jmpq 511980 : { : $$ = makeIntConst($1, @1); : } : | FCONST : { : $$ = makeFloatConst($1, @1); 0.00 : 511d37: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 511d3e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : } : : static Node * : makeFloatConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511d45: 48 8b 3d 14 8b 6a 00 mov 0x6a8b14(%rip),%rdi # bba860 : { : $$ = makeIntConst($1, @1); : } : | FCONST : { : $$ = makeFloatConst($1, @1); 0.00 : 511d4c: 8b 1e mov (%rsi),%ebx 0.00 : 511d4e: 4c 8b 20 mov (%rax),%r12 : } : : static Node * : makeFloatConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511d51: be 20 00 00 00 mov $0x20,%esi 0.00 : 511d56: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511d5d: e8 ae 70 28 00 callq 798e10 0.00 : 511d62: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Float; 0.00 : 511d68: c7 40 08 8c 02 00 00 movl $0x28c,0x8(%rax) : { : $$ = makeIntConst($1, @1); : } : | FCONST : { : $$ = makeFloatConst($1, @1); 0.00 : 511d6f: 49 89 c6 mov %rax,%r14 : makeFloatConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_Float; : n->val.val.str = str; 0.00 : 511d72: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 511d76: 89 58 18 mov %ebx,0x18(%rax) : } : | FCONST : { : $$ = makeFloatConst($1, @1); : } : | Sconst 0.00 : 511d79: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 511d80: e9 fb fb ff ff jmpq 511980 : /* : * Constants : */ : AexprConst: Iconst : { : $$ = makeIntConst($1, @1); 0.00 : 511d85: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 511d8c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511d93: 8b 31 mov (%rcx),%esi 0.00 : 511d95: 8b 3b mov (%rbx),%edi 0.00 : 511d97: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511d9e: e8 6d ee ff ff callq 510c10 : } : | FCONST 0.00 : 511da3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* : * Constants : */ : AexprConst: Iconst : { : $$ = makeIntConst($1, @1); 0.00 : 511daa: 49 89 c6 mov %rax,%r14 : } : | FCONST 0.00 : 511dad: e9 ce fb ff ff jmpq 511980 : */ : func_name: type_function_name : { $$ = list_make1(makeString($1)); } : | ColId indirection : { : $$ = check_func_name(lcons(makeString($1), $2), 0.00 : 511db2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511db9: 48 8b 1a mov (%rdx),%rbx 0.00 : 511dbc: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 511dc0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511dc7: e8 24 d9 0e 00 callq 5ff6f0 0.00 : 511dcc: 48 89 de mov %rbx,%rsi 0.00 : 511dcf: 48 89 c7 mov %rax,%rdi 0.00 : 511dd2: e8 79 fa 0c 00 callq 5e1850 0.00 : 511dd7: 48 85 c0 test %rax,%rax 0.00 : 511dda: 48 89 c1 mov %rax,%rcx 0.00 : 511ddd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 511de4: 74 21 je 511e07 0.00 : 511de6: 48 8b 50 08 mov 0x8(%rax),%rdx : static List * : check_func_name(List *names, core_yyscan_t yyscanner) : { : ListCell *i; : : foreach(i, names) 0.00 : 511dea: 48 85 d2 test %rdx,%rdx 0.00 : 511ded: 74 18 je 511e07 : { : if (!IsA(lfirst(i), String)) 0.00 : 511def: 48 8b 02 mov (%rdx),%rax 0.00 : 511df2: 81 38 8d 02 00 00 cmpl $0x28d,(%rax) 0.00 : 511df8: 0f 85 7a 72 01 00 jne 529078 : static List * : check_func_name(List *names, core_yyscan_t yyscanner) : { : ListCell *i; : : foreach(i, names) 0.00 : 511dfe: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 511e02: 48 85 d2 test %rdx,%rdx 0.00 : 511e05: 75 e8 jne 511def : */ : func_name: type_function_name : { $$ = list_make1(makeString($1)); } : | ColId indirection : { : $$ = check_func_name(lcons(makeString($1), $2), 0.00 : 511e07: 49 89 ce mov %rcx,%r14 : yyscanner); : } : ; 0.00 : 511e0a: e9 71 fb ff ff jmpq 511980 : * anything else for a columnref). Therefore we allow 'indirection' which : * may contain subscripts, and reject that case in the C code. (If we : * ever implement SQL99-like methods, such syntax may actually become legal!) : */ : func_name: type_function_name : { $$ = list_make1(makeString($1)); } 0.00 : 511e0f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 511e16: 48 8b 38 mov (%rax),%rdi 0.00 : 511e19: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511e20: e8 cb d8 0e 00 callq 5ff6f0 0.00 : 511e25: 31 f6 xor %esi,%esi 0.00 : 511e27: 48 89 c7 mov %rax,%rdi 0.00 : 511e2a: e8 21 fa 0c 00 callq 5e1850 : | ColId indirection 0.00 : 511e2f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * anything else for a columnref). Therefore we allow 'indirection' which : * may contain subscripts, and reject that case in the C code. (If we : * ever implement SQL99-like methods, such syntax may actually become legal!) : */ : func_name: type_function_name : { $$ = list_make1(makeString($1)); } 0.00 : 511e36: 49 89 c6 mov %rax,%r14 : | ColId indirection 0.00 : 511e39: e9 42 fb ff ff jmpq 511980 : { : $$ = makeStringConst($1, @1); : } : | BCONST : { : $$ = makeBitStringConst($1, @1); 0.00 : 511e3e: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 511e45: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : } : : static Node * : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511e4c: 48 8b 3d 0d 8a 6a 00 mov 0x6a8a0d(%rip),%rdi # bba860 : { : $$ = makeStringConst($1, @1); : } : | BCONST : { : $$ = makeBitStringConst($1, @1); 0.00 : 511e53: 8b 1e mov (%rsi),%ebx 0.00 : 511e55: 4c 8b 20 mov (%rax),%r12 : } : : static Node * : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511e58: be 20 00 00 00 mov $0x20,%esi 0.00 : 511e5d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511e64: e8 a7 6f 28 00 callq 798e10 0.00 : 511e69: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_BitString; 0.00 : 511e6f: c7 40 08 8e 02 00 00 movl $0x28e,0x8(%rax) : { : $$ = makeStringConst($1, @1); : } : | BCONST : { : $$ = makeBitStringConst($1, @1); 0.00 : 511e76: 49 89 c6 mov %rax,%r14 : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_BitString; : n->val.val.str = str; 0.00 : 511e79: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 511e7d: 89 58 18 mov %ebx,0x18(%rax) : } : | BCONST : { : $$ = makeBitStringConst($1, @1); : } : | XCONST 0.00 : 511e80: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 511e87: e9 f4 fa ff ff jmpq 511980 : { : $$ = makeFloatConst($1, @1); : } : | Sconst : { : $$ = makeStringConst($1, @1); 0.00 : 511e8c: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 511e93: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 511e9a: 8b 32 mov (%rdx),%esi 0.00 : 511e9c: 48 8b 39 mov (%rcx),%rdi 0.00 : 511e9f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511ea6: e8 c5 ec ff ff callq 510b70 : } : | BCONST 0.00 : 511eab: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeFloatConst($1, @1); : } : | Sconst : { : $$ = makeStringConst($1, @1); 0.00 : 511eb2: 49 89 c6 mov %rax,%r14 : } : | BCONST 0.00 : 511eb5: e9 c6 fa ff ff jmpq 511980 : /* This is a bit constant per SQL99: : * Without Feature F511, "BIT data type", : * a shall not be a : * or a . : */ : $$ = makeBitStringConst($1, @1); 0.00 : 511eba: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 511ec1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : : static Node * : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511ec8: be 20 00 00 00 mov $0x20,%esi 0.00 : 511ecd: 48 8b 3d 8c 89 6a 00 mov 0x6a898c(%rip),%rdi # bba860 : /* This is a bit constant per SQL99: : * Without Feature F511, "BIT data type", : * a shall not be a : * or a . : */ : $$ = makeBitStringConst($1, @1); 0.00 : 511ed4: 8b 1a mov (%rdx),%ebx 0.00 : 511ed6: 4c 8b 21 mov (%rcx),%r12 : } : : static Node * : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 511ed9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511ee0: e8 2b 6f 28 00 callq 798e10 0.00 : 511ee5: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_BitString; 0.00 : 511eeb: c7 40 08 8e 02 00 00 movl $0x28e,0x8(%rax) : /* This is a bit constant per SQL99: : * Without Feature F511, "BIT data type", : * a shall not be a : * or a . : */ : $$ = makeBitStringConst($1, @1); 0.00 : 511ef2: 49 89 c6 mov %rax,%r14 : makeBitStringConst(char *str, int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_BitString; : n->val.val.str = str; 0.00 : 511ef5: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 511ef9: 89 58 18 mov %ebx,0x18(%rax) : * a shall not be a : * or a . : */ : $$ = makeBitStringConst($1, @1); : } : | func_name Sconst 0.00 : 511efc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 511f03: e9 78 fa ff ff jmpq 511980 : { : $$ = makeRangeVar(NULL, $1, @1); : } : | ColId indirection : { : check_qualified_name($2, yyscanner); 0.00 : 511f08: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 511f0f: 48 8b 02 mov (%rdx),%rax 0.00 : 511f12: 48 85 c0 test %rax,%rax 0.00 : 511f15: 74 21 je 511f38 0.00 : 511f17: 48 8b 50 08 mov 0x8(%rax),%rdx : static void : check_qualified_name(List *names, core_yyscan_t yyscanner) : { : ListCell *i; : : foreach(i, names) 0.00 : 511f1b: 48 85 d2 test %rdx,%rdx 0.00 : 511f1e: 74 18 je 511f38 : { : if (!IsA(lfirst(i), String)) 0.00 : 511f20: 48 8b 02 mov (%rdx),%rax 0.00 : 511f23: 81 38 8d 02 00 00 cmpl $0x28d,(%rax) 0.00 : 511f29: 0f 85 49 71 01 00 jne 529078 : static void : check_qualified_name(List *names, core_yyscan_t yyscanner) : { : ListCell *i; : : foreach(i, names) 0.00 : 511f2f: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 511f33: 48 85 d2 test %rdx,%rdx 0.00 : 511f36: 75 e8 jne 511f20 : $$ = makeRangeVar(NULL, $1, @1); : } : | ColId indirection : { : check_qualified_name($2, yyscanner); : $$ = makeRangeVar(NULL, NULL, @1); 0.00 : 511f38: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 511f3f: 31 f6 xor %esi,%esi 0.00 : 511f41: 31 ff xor %edi,%edi 0.00 : 511f43: 8b 51 fc mov -0x4(%rcx),%edx 0.00 : 511f46: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511f4d: e8 2e f7 0d 00 callq 5f1680 : switch (list_length($2)) 0.00 : 511f52: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$ = makeRangeVar(NULL, $1, @1); : } : | ColId indirection : { : check_qualified_name($2, yyscanner); : $$ = makeRangeVar(NULL, NULL, @1); 0.00 : 511f59: 48 89 c1 mov %rax,%rcx 0.00 : 511f5c: 49 89 c6 mov %rax,%r14 : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 511f5f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : switch (list_length($2)) 0.00 : 511f66: 48 8b 03 mov (%rbx),%rax 0.00 : 511f69: 48 85 c0 test %rax,%rax 0.00 : 511f6c: 74 15 je 511f83 0.00 : 511f6e: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 511f71: 83 f8 01 cmp $0x1,%eax 0.00 : 511f74: 0f 84 c6 76 01 00 je 529640 0.00 : 511f7a: 83 f8 02 cmp $0x2,%eax 0.00 : 511f7d: 0f 84 2d 76 01 00 je 5295b0 : $$->catalogname = $1; : $$->schemaname = strVal(linitial($2)); : $$->relname = strVal(lsecond($2)); : break; : default: : ereport(ERROR, 0.00 : 511f83: 45 31 c0 xor %r8d,%r8d 0.00 : 511f86: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 511f8b: ba 04 32 00 00 mov $0x3204,%edx 0.00 : 511f90: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 511f95: bf 14 00 00 00 mov $0x14,%edi 0.00 : 511f9a: e8 21 8b 26 00 callq 77aac0 0.00 : 511f9f: 84 c0 test %al,%al 0.00 : 511fa1: 0f 85 c0 82 01 00 jne 52a267 : { : TypeName *t = $1; : if ($6 != NIL) : { : if (list_length($6) != 1) : ereport(ERROR, 0.00 : 511fa7: e8 24 75 f5 ff callq 4694d0 : * which may contain subscripts, and reject that case in the C code. : */ : qualified_name: : ColId : { : $$ = makeRangeVar(NULL, $1, @1); 0.00 : 511fac: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 511fb3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 511fba: 31 ff xor %edi,%edi 0.00 : 511fbc: 8b 16 mov (%rsi),%edx 0.00 : 511fbe: 48 8b 30 mov (%rax),%rsi 0.00 : 511fc1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 511fc8: e8 b3 f6 0d 00 callq 5f1680 : } : | ColId indirection 0.00 : 511fcd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * which may contain subscripts, and reject that case in the C code. : */ : qualified_name: : ColId : { : $$ = makeRangeVar(NULL, $1, @1); 0.00 : 511fd4: 49 89 c6 mov %rax,%r14 : } : | ColId indirection 0.00 : 511fd7: e9 a4 f9 ff ff jmpq 511980 : /* : * Aggregate decoration clauses : */ : within_group_clause: : WITHIN GROUP_P '(' sort_clause ')' { $$ = $4; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 511fdc: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 511fdf: e9 9c f9 ff ff jmpq 511980 : : /* : * Aggregate decoration clauses : */ : within_group_clause: : WITHIN GROUP_P '(' sort_clause ')' { $$ = $4; } 0.00 : 511fe4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 511feb: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 511fef: e9 8c f9 ff ff jmpq 511980 : { : $$ = $4; : } : | PASSING BY REF c_expr BY REF : { : $$ = $4; 0.00 : 511ff4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 511ffb: 4c 8b 73 f0 mov -0x10(%rbx),%r14 : } : ; 0.00 : 511fff: e9 7c f9 ff ff jmpq 511980 : { : $$ = $2; : } : | PASSING BY REF c_expr : { : $$ = $4; 0.00 : 512004: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51200b: 4c 8b 31 mov (%rcx),%r14 : } : | PASSING BY REF c_expr BY REF 0.00 : 51200e: e9 6d f9 ff ff jmpq 511980 : { : $$ = $2; : } : | PASSING c_expr BY REF : { : $$ = $2; 0.00 : 512013: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51201a: 4c 8b 72 f0 mov -0x10(%rdx),%r14 : } : | PASSING BY REF c_expr 0.00 : 51201e: e9 5d f9 ff ff jmpq 511980 : : /* We allow several variants for SQL and other compatibility. */ : xmlexists_argument: : PASSING c_expr : { : $$ = $2; 0.00 : 512023: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51202a: 4c 8b 30 mov (%rax),%r14 : } : | PASSING c_expr BY REF 0.00 : 51202d: e9 4e f9 ff ff jmpq 511980 : | CONTENT_P { $$ = XMLOPTION_CONTENT; } : ; : : xml_whitespace_option: PRESERVE WHITESPACE_P { $$ = TRUE; } : | STRIP_P WHITESPACE_P { $$ = FALSE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 512032: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 512035: e9 46 f9 ff ff jmpq 511980 : document_or_content: DOCUMENT_P { $$ = XMLOPTION_DOCUMENT; } : | CONTENT_P { $$ = XMLOPTION_CONTENT; } : ; : : xml_whitespace_option: PRESERVE WHITESPACE_P { $$ = TRUE; } : | STRIP_P WHITESPACE_P { $$ = FALSE; } 0.00 : 51203a: 45 30 f6 xor %r14b,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51203d: e9 3e f9 ff ff jmpq 511980 : : document_or_content: DOCUMENT_P { $$ = XMLOPTION_DOCUMENT; } : | CONTENT_P { $$ = XMLOPTION_CONTENT; } : ; : : xml_whitespace_option: PRESERVE WHITESPACE_P { $$ = TRUE; } 0.00 : 512042: 41 b6 01 mov $0x1,%r14b : | STRIP_P WHITESPACE_P { $$ = FALSE; } 0.00 : 512045: e9 36 f9 ff ff jmpq 511980 : $$->location = @1; : } : ; : : document_or_content: DOCUMENT_P { $$ = XMLOPTION_DOCUMENT; } : | CONTENT_P { $$ = XMLOPTION_CONTENT; } 0.00 : 51204a: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 512051: ff ff ff 0.00 : 512054: 49 21 f6 and %rsi,%r14 0.00 : 512057: 49 83 ce 01 or $0x1,%r14 : ; 0.00 : 51205b: e9 20 f9 ff ff jmpq 511980 : $$->val = (Node *) $1; : $$->location = @1; : } : ; : : document_or_content: DOCUMENT_P { $$ = XMLOPTION_DOCUMENT; } 0.00 : 512060: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 512067: ff ff ff 0.00 : 51206a: 49 21 de and %rbx,%r14 : | CONTENT_P { $$ = XMLOPTION_CONTENT; } 0.00 : 51206d: e9 0e f9 ff ff jmpq 511980 : $$->val = (Node *) $1; : $$->location = @1; : } : | a_expr : { : $$ = makeNode(ResTarget); 0.00 : 512072: 48 8b 3d e7 87 6a 00 mov 0x6a87e7(%rip),%rdi # bba860 0.00 : 512079: be 28 00 00 00 mov $0x28,%esi 0.00 : 51207e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512085: e8 86 6d 28 00 callq 798e10 0.00 : 51208a: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = NULL; 0.00 : 512090: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 512097: 00 : $$->val = (Node *) $1; : $$->location = @1; : } : | a_expr : { : $$ = makeNode(ResTarget); 0.00 : 512098: 49 89 c6 mov %rax,%r14 : $$->name = NULL; : $$->indirection = NIL; 0.00 : 51209b: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5120a2: 00 : $$->val = (Node *) $1; 0.00 : 5120a3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5120aa: 48 8b 02 mov (%rdx),%rax 0.00 : 5120ad: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5120b1: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5120b8: 8b 01 mov (%rcx),%eax 0.00 : 5120ba: 41 89 46 20 mov %eax,0x20(%r14) : } : ; 0.00 : 5120be: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5120c5: e9 b6 f8 ff ff jmpq 511980 : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } : ; : : xml_attribute_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); 0.00 : 5120ca: 48 8b 3d 8f 87 6a 00 mov 0x6a878f(%rip),%rdi # bba860 0.00 : 5120d1: be 28 00 00 00 mov $0x28,%esi 0.00 : 5120d6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5120dd: e8 2e 6d 28 00 callq 798e10 0.00 : 5120e2: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = $3; 0.00 : 5120e8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } : ; : : xml_attribute_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); 0.00 : 5120ef: 49 89 c6 mov %rax,%r14 : $$->name = $3; 0.00 : 5120f2: 48 8b 03 mov (%rbx),%rax : $$->indirection = NIL; 0.00 : 5120f5: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 5120fc: 00 : ; : : xml_attribute_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); : $$->name = $3; 0.00 : 5120fd: 49 89 46 08 mov %rax,0x8(%r14) : $$->indirection = NIL; : $$->val = (Node *) $1; 0.00 : 512101: 48 8b 43 f0 mov -0x10(%rbx),%rax 0.00 : 512105: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 512109: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 512110: 8b 46 f8 mov -0x8(%rsi),%eax 0.00 : 512113: 41 89 46 20 mov %eax,0x20(%r14) : } : | a_expr 0.00 : 512117: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51211e: e9 5d f8 ff ff jmpq 511980 : : xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } : ; : : xml_attribute_list: xml_attribute_el { $$ = list_make1($1); } : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } 0.00 : 512123: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51212a: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51212e: 48 8b 31 mov (%rcx),%rsi 0.00 : 512131: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512138: e8 43 fd 0c 00 callq 5e1e80 : ; 0.00 : 51213d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } : ; : : xml_attribute_list: xml_attribute_el { $$ = list_make1($1); } : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } 0.00 : 512144: 49 89 c6 mov %rax,%r14 : ; 0.00 : 512147: e9 34 f8 ff ff jmpq 511980 : ; : : xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } : ; : : xml_attribute_list: xml_attribute_el { $$ = list_make1($1); } 0.00 : 51214c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 512153: 31 f6 xor %esi,%esi 0.00 : 512155: 48 8b 3a mov (%rdx),%rdi 0.00 : 512158: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51215f: e8 ec f6 0c 00 callq 5e1850 : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } 0.00 : 512164: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } : ; : : xml_attribute_list: xml_attribute_el { $$ = list_make1($1); } 0.00 : 51216b: 49 89 c6 mov %rax,%r14 : | xml_attribute_list ',' xml_attribute_el { $$ = lappend($1, $3); } 0.00 : 51216e: e9 0d f8 ff ff jmpq 511980 : { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } : | /*EMPTY*/ : { $$ = makeIntConst(XML_STANDALONE_OMITTED, -1); } : ; : : xml_attributes: XMLATTRIBUTES '(' xml_attribute_list ')' { $$ = $3; } 0.00 : 512173: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51217a: 4c 8b 70 f8 mov -0x8(%rax),%r14 : ; 0.00 : 51217e: e9 fd f7 ff ff jmpq 511980 : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } : | ',' STANDALONE_P NO VALUE_P : { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } : | /*EMPTY*/ : { $$ = makeIntConst(XML_STANDALONE_OMITTED, -1); } 0.00 : 512183: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512188: bf 03 00 00 00 mov $0x3,%edi 0.00 : 51218d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512194: e8 77 ea ff ff callq 510c10 : ; 0.00 : 512199: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } : | ',' STANDALONE_P NO VALUE_P : { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } : | /*EMPTY*/ : { $$ = makeIntConst(XML_STANDALONE_OMITTED, -1); } 0.00 : 5121a0: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5121a3: e9 d8 f7 ff ff jmpq 511980 : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } : | ',' STANDALONE_P NO VALUE_P : { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } 0.00 : 5121a8: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5121ad: bf 02 00 00 00 mov $0x2,%edi 0.00 : 5121b2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5121b9: e8 52 ea ff ff callq 510c10 : | /*EMPTY*/ 0.00 : 5121be: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } : | ',' STANDALONE_P NO VALUE_P : { $$ = makeIntConst(XML_STANDALONE_NO_VALUE, -1); } 0.00 : 5121c5: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ 0.00 : 5121c8: e9 b3 f7 ff ff jmpq 511980 : ; : : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } 0.00 : 5121cd: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5121d2: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5121d7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5121de: e8 2d ea ff ff callq 510c10 : | ',' STANDALONE_P NO VALUE_P 0.00 : 5121e3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } : | ',' STANDALONE_P NO : { $$ = makeIntConst(XML_STANDALONE_NO, -1); } 0.00 : 5121ea: 49 89 c6 mov %rax,%r14 : | ',' STANDALONE_P NO VALUE_P 0.00 : 5121ed: e9 8e f7 ff ff jmpq 511980 : | VERSION_P NO VALUE_P : { $$ = makeNullAConst(-1); } : ; : : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } 0.00 : 5121f2: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5121f7: 31 ff xor %edi,%edi 0.00 : 5121f9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512200: e8 0b ea ff ff callq 510c10 : | ',' STANDALONE_P NO 0.00 : 512205: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | VERSION_P NO VALUE_P : { $$ = makeNullAConst(-1); } : ; : : opt_xml_root_standalone: ',' STANDALONE_P YES_P : { $$ = makeIntConst(XML_STANDALONE_YES, -1); } 0.00 : 51220c: 49 89 c6 mov %rax,%r14 : | ',' STANDALONE_P NO 0.00 : 51220f: e9 6c f7 ff ff jmpq 511980 : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 512214: 48 8b 3d 45 86 6a 00 mov 0x6a8645(%rip),%rdi # bba860 0.00 : 51221b: be 20 00 00 00 mov $0x20,%esi 0.00 : 512220: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512227: e8 e4 6b 28 00 callq 798e10 0.00 : 51222c: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Null; 0.00 : 512232: c7 40 08 8f 02 00 00 movl $0x28f,0x8(%rax) : * SQL/XML support : */ : xml_root_version: VERSION_P a_expr : { $$ = $2; } : | VERSION_P NO VALUE_P : { $$ = makeNullAConst(-1); } 0.00 : 512239: 49 89 c6 mov %rax,%r14 : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_Null; : n->location = location; 0.00 : 51223c: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : */ : xml_root_version: VERSION_P a_expr : { $$ = $2; } : | VERSION_P NO VALUE_P : { $$ = makeNullAConst(-1); } : ; 0.00 : 512243: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51224a: e9 31 f7 ff ff jmpq 511980 : : /* : * SQL/XML support : */ : xml_root_version: VERSION_P a_expr : { $$ = $2; } 0.00 : 51224f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 512256: 4c 8b 36 mov (%rsi),%r14 : | VERSION_P NO VALUE_P 0.00 : 512259: e9 22 f7 ff ff jmpq 511980 : $$ = makeXmlExpr(IS_XMLROOT, NULL, NIL, : list_make3($3, $5, $6), @1); : } : | XMLSERIALIZE '(' document_or_content a_expr AS SimpleTypename ')' : { : XmlSerialize *n = makeNode(XmlSerialize); 0.00 : 51225e: 48 8b 3d fb 85 6a 00 mov 0x6a85fb(%rip),%rdi # bba860 0.00 : 512265: be 20 00 00 00 mov $0x20,%esi 0.00 : 51226a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512271: e8 9a 6b 28 00 callq 798e10 0.00 : 512276: c7 00 a7 03 00 00 movl $0x3a7,(%rax) : n->xmloption = $3; 0.00 : 51227c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->expr = $4; : n->typeName = $6; : n->location = @1; : $$ = (Node *)n; 0.00 : 512283: 49 89 c6 mov %rax,%r14 : list_make3($3, $5, $6), @1); : } : | XMLSERIALIZE '(' document_or_content a_expr AS SimpleTypename ')' : { : XmlSerialize *n = makeNode(XmlSerialize); : n->xmloption = $3; 0.00 : 512286: 8b 51 e0 mov -0x20(%rcx),%edx 0.00 : 512289: 89 50 04 mov %edx,0x4(%rax) : n->expr = $4; 0.00 : 51228c: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 512290: 48 89 50 08 mov %rdx,0x8(%rax) : n->typeName = $6; 0.00 : 512294: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 512298: 48 89 50 10 mov %rdx,0x10(%rax) : n->location = @1; 0.00 : 51229c: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5122a3: 8b 53 e8 mov -0x18(%rbx),%edx 0.00 : 5122a6: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *)n; : } : ; 0.00 : 5122a9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5122b0: e9 cb f6 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, list_make1($6), @1); : } : | XMLROOT '(' a_expr ',' xml_root_version opt_xml_root_standalone ')' : { : $$ = makeXmlExpr(IS_XMLROOT, NULL, NIL, 0.00 : 5122b5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5122bc: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5122c3: 31 f6 xor %esi,%esi 0.00 : 5122c5: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 5122c9: 8b 5a e8 mov -0x18(%rdx),%ebx 0.00 : 5122cc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5122d3: e8 78 f5 0c 00 callq 5e1850 0.00 : 5122d8: 48 89 c6 mov %rax,%rsi 0.00 : 5122db: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5122e2: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 5122e6: e8 65 f5 0c 00 callq 5e1850 0.00 : 5122eb: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5122f2: 48 89 c6 mov %rax,%rsi 0.00 : 5122f5: 48 8b 7a e0 mov -0x20(%rdx),%rdi 0.00 : 5122f9: e8 52 f5 0c 00 callq 5e1850 0.00 : 5122fe: 41 89 d8 mov %ebx,%r8d 0.00 : 512301: 48 89 c1 mov %rax,%rcx 0.00 : 512304: 31 d2 xor %edx,%edx 0.00 : 512306: 31 f6 xor %esi,%esi 0.00 : 512308: bf 05 00 00 00 mov $0x5,%edi 0.00 : 51230d: e8 de e7 ff ff callq 510af0 : list_make3($3, $5, $6), @1); : } : | XMLSERIALIZE '(' document_or_content a_expr AS SimpleTypename ')' 0.00 : 512312: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, list_make1($6), @1); : } : | XMLROOT '(' a_expr ',' xml_root_version opt_xml_root_standalone ')' : { : $$ = makeXmlExpr(IS_XMLROOT, NULL, NIL, 0.00 : 512319: 49 89 c6 mov %rax,%r14 : list_make3($3, $5, $6), @1); : } : | XMLSERIALIZE '(' document_or_content a_expr AS SimpleTypename ')' 0.00 : 51231c: e9 5f f6 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, NIL, @1); : } : | XMLPI '(' NAME_P ColLabel ',' a_expr ')' : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, list_make1($6), @1); 0.00 : 512321: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 512328: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51232f: 31 f6 xor %esi,%esi 0.00 : 512331: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 512335: 8b 5a e8 mov -0x18(%rdx),%ebx 0.00 : 512338: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51233f: e8 0c f5 0c 00 callq 5e1850 0.00 : 512344: 48 89 c1 mov %rax,%rcx 0.00 : 512347: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51234e: 41 89 d8 mov %ebx,%r8d 0.00 : 512351: 31 d2 xor %edx,%edx 0.00 : 512353: bf 04 00 00 00 mov $0x4,%edi 0.00 : 512358: 48 8b 70 e8 mov -0x18(%rax),%rsi 0.00 : 51235c: e8 8f e7 ff ff callq 510af0 : } : | XMLROOT '(' a_expr ',' xml_root_version opt_xml_root_standalone ')' 0.00 : 512361: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, NIL, @1); : } : | XMLPI '(' NAME_P ColLabel ',' a_expr ')' : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, list_make1($6), @1); 0.00 : 512368: 49 89 c6 mov %rax,%r14 : } : | XMLROOT '(' a_expr ',' xml_root_version opt_xml_root_standalone ')' 0.00 : 51236b: e9 10 f6 ff ff jmpq 511980 : x->xmloption = $3; : $$ = (Node *)x; : } : | XMLPI '(' NAME_P ColLabel ')' : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, NIL, @1); 0.00 : 512370: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 512377: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51237e: 31 c9 xor %ecx,%ecx 0.00 : 512380: 31 d2 xor %edx,%edx 0.00 : 512382: bf 04 00 00 00 mov $0x4,%edi 0.00 : 512387: 48 8b 73 f8 mov -0x8(%rbx),%rsi 0.00 : 51238b: 44 8b 40 f0 mov -0x10(%rax),%r8d 0.00 : 51238f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512396: e8 55 e7 ff ff callq 510af0 : } : | XMLPI '(' NAME_P ColLabel ',' a_expr ')' 0.00 : 51239b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : x->xmloption = $3; : $$ = (Node *)x; : } : | XMLPI '(' NAME_P ColLabel ')' : { : $$ = makeXmlExpr(IS_XMLPI, $4, NULL, NIL, @1); 0.00 : 5123a2: 49 89 c6 mov %rax,%r14 : } : | XMLPI '(' NAME_P ColLabel ',' a_expr ')' 0.00 : 5123a5: e9 d6 f5 ff ff jmpq 511980 : | XMLPARSE '(' document_or_content a_expr xml_whitespace_option ')' : { : XmlExpr *x = (XmlExpr *) : makeXmlExpr(IS_XMLPARSE, NULL, NIL, : list_make2($4, makeBoolAConst($5, -1)), : @1); 0.00 : 5123aa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5123b1: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5123b8: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5123bd: 0f be 79 f8 movsbl -0x8(%rcx),%edi 0.00 : 5123c1: 8b 5a ec mov -0x14(%rdx),%ebx 0.00 : 5123c4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5123cb: e8 20 e9 ff ff callq 510cf0 0.00 : 5123d0: 31 f6 xor %esi,%esi 0.00 : 5123d2: 48 89 c7 mov %rax,%rdi 0.00 : 5123d5: e8 76 f4 0c 00 callq 5e1850 0.00 : 5123da: 48 89 c6 mov %rax,%rsi 0.00 : 5123dd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5123e4: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 5123e8: e8 63 f4 0c 00 callq 5e1850 0.00 : 5123ed: 31 d2 xor %edx,%edx 0.00 : 5123ef: 48 89 c1 mov %rax,%rcx 0.00 : 5123f2: 41 89 d8 mov %ebx,%r8d 0.00 : 5123f5: 31 f6 xor %esi,%esi 0.00 : 5123f7: bf 03 00 00 00 mov $0x3,%edi 0.00 : 5123fc: e8 ef e6 ff ff callq 510af0 : x->xmloption = $3; 0.00 : 512401: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)x; 0.00 : 512408: 49 89 c6 mov %rax,%r14 : { : XmlExpr *x = (XmlExpr *) : makeXmlExpr(IS_XMLPARSE, NULL, NIL, : list_make2($4, makeBoolAConst($5, -1)), : @1); : x->xmloption = $3; 0.00 : 51240b: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 51240e: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)x; : } : | XMLPI '(' NAME_P ColLabel ')' 0.00 : 512411: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512418: e9 63 f5 ff ff jmpq 511980 : * converted to xmlexists(A, B)*/ : $$ = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2($3, $4), @1); : } : | XMLFOREST '(' xml_attribute_list ')' : { : $$ = makeXmlExpr(IS_XMLFOREST, NULL, $3, NIL, @1); 0.00 : 51241d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 512424: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51242b: 31 c9 xor %ecx,%ecx 0.00 : 51242d: bf 02 00 00 00 mov $0x2,%edi 0.00 : 512432: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 512436: 44 8b 40 f4 mov -0xc(%rax),%r8d 0.00 : 51243a: 31 f6 xor %esi,%esi 0.00 : 51243c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512443: e8 a8 e6 ff ff callq 510af0 : } : | XMLPARSE '(' document_or_content a_expr xml_whitespace_option ')' 0.00 : 512448: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * converted to xmlexists(A, B)*/ : $$ = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2($3, $4), @1); : } : | XMLFOREST '(' xml_attribute_list ')' : { : $$ = makeXmlExpr(IS_XMLFOREST, NULL, $3, NIL, @1); 0.00 : 51244f: 49 89 c6 mov %rax,%r14 : } : | XMLPARSE '(' document_or_content a_expr xml_whitespace_option ')' 0.00 : 512452: e9 29 f5 ff ff jmpq 511980 : } : | XMLEXISTS '(' c_expr xmlexists_argument ')' : { : /* xmlexists(A PASSING [BY REF] B [BY REF]) is : * converted to xmlexists(A, B)*/ : $$ = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2($3, $4), @1); 0.00 : 512457: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51245e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512465: 31 f6 xor %esi,%esi 0.00 : 512467: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 51246b: 44 8b 62 f0 mov -0x10(%rdx),%r12d 0.00 : 51246f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512476: e8 d5 f3 0c 00 callq 5e1850 0.00 : 51247b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 512482: 48 89 c6 mov %rax,%rsi 0.00 : 512485: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 512489: e8 c2 f3 0c 00 callq 5e1850 0.00 : 51248e: bf ab 97 7c 00 mov $0x7c97ab,%edi 0.00 : 512493: 48 89 c3 mov %rax,%rbx 0.00 : 512496: e8 55 e5 ff ff callq 5109f0 0.00 : 51249b: 44 89 e2 mov %r12d,%edx 0.00 : 51249e: 48 89 c7 mov %rax,%rdi 0.00 : 5124a1: 48 89 de mov %rbx,%rsi 0.00 : 5124a4: e8 77 ef 0d 00 callq 5f1420 : } : | XMLFOREST '(' xml_attribute_list ')' 0.00 : 5124a9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | XMLEXISTS '(' c_expr xmlexists_argument ')' : { : /* xmlexists(A PASSING [BY REF] B [BY REF]) is : * converted to xmlexists(A, B)*/ : $$ = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2($3, $4), @1); 0.00 : 5124b0: 49 89 c6 mov %rax,%r14 : } : | XMLFOREST '(' xml_attribute_list ')' 0.00 : 5124b3: e9 c8 f4 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, $6, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ',' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, $8, @1); 0.00 : 5124b8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5124bf: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5124c6: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5124cb: 48 89 d3 mov %rdx,%rbx 0.00 : 5124ce: 48 8b 4a f8 mov -0x8(%rdx),%rcx 0.00 : 5124d2: 44 8b 40 e0 mov -0x20(%rax),%r8d 0.00 : 5124d6: 48 8b 52 e8 mov -0x18(%rdx),%rdx 0.00 : 5124da: 48 8b 73 d8 mov -0x28(%rbx),%rsi 0.00 : 5124de: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5124e5: e8 06 e6 ff ff callq 510af0 : } : | XMLEXISTS '(' c_expr xmlexists_argument ')' 0.00 : 5124ea: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, $6, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ',' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, $8, @1); 0.00 : 5124f1: 49 89 c6 mov %rax,%r14 : } : | XMLEXISTS '(' c_expr xmlexists_argument ')' 0.00 : 5124f4: e9 87 f4 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, NIL, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, $6, @1); 0.00 : 5124f9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 512500: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512507: 31 d2 xor %edx,%edx 0.00 : 512509: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51250e: 48 8b 4b f8 mov -0x8(%rbx),%rcx 0.00 : 512512: 48 8b 73 e8 mov -0x18(%rbx),%rsi 0.00 : 512516: 44 8b 40 e8 mov -0x18(%rax),%r8d 0.00 : 51251a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512521: e8 ca e5 ff ff callq 510af0 : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ',' expr_list ')' 0.00 : 512526: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, NIL, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, $6, @1); 0.00 : 51252d: 49 89 c6 mov %rax,%r14 : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ',' expr_list ')' 0.00 : 512530: e9 4b f4 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, NIL, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, NIL, @1); 0.00 : 512535: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51253c: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 512543: bf 01 00 00 00 mov $0x1,%edi 0.00 : 512548: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51254c: 44 8b 41 e8 mov -0x18(%rcx),%r8d 0.00 : 512550: 31 c9 xor %ecx,%ecx 0.00 : 512552: 48 8b 76 e8 mov -0x18(%rsi),%rsi 0.00 : 512556: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51255d: e8 8e e5 ff ff callq 510af0 : } : | XMLELEMENT '(' NAME_P ColLabel ',' expr_list ')' 0.00 : 512562: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, NIL, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, $6, NIL, @1); 0.00 : 512569: 49 89 c6 mov %rax,%r14 : } : | XMLELEMENT '(' NAME_P ColLabel ',' expr_list ')' 0.00 : 51256c: e9 0f f4 ff ff jmpq 511980 : { : $$ = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, $3, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, NIL, @1); 0.00 : 512571: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 512578: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51257f: 31 d2 xor %edx,%edx 0.00 : 512581: bf 01 00 00 00 mov $0x1,%edi 0.00 : 512586: 48 8b 71 f8 mov -0x8(%rcx),%rsi 0.00 : 51258a: 44 8b 43 f0 mov -0x10(%rbx),%r8d 0.00 : 51258e: 31 c9 xor %ecx,%ecx 0.00 : 512590: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512597: e8 54 e5 ff ff callq 510af0 : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ')' 0.00 : 51259c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, $3, @1); : } : | XMLELEMENT '(' NAME_P ColLabel ')' : { : $$ = makeXmlExpr(IS_XMLELEMENT, $4, NIL, NIL, @1); 0.00 : 5125a3: 49 89 c6 mov %rax,%r14 : } : | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ')' 0.00 : 5125a6: e9 d5 f3 ff ff jmpq 511980 : v->location = @1; : $$ = (Node *)v; : } : | XMLCONCAT '(' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, $3, @1); 0.00 : 5125ab: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5125b2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5125b9: 31 f6 xor %esi,%esi 0.00 : 5125bb: 31 ff xor %edi,%edi 0.00 : 5125bd: 44 8b 42 f4 mov -0xc(%rdx),%r8d 0.00 : 5125c1: 48 8b 48 f8 mov -0x8(%rax),%rcx 0.00 : 5125c5: 31 d2 xor %edx,%edx 0.00 : 5125c7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5125ce: e8 1d e5 ff ff callq 510af0 : } : | XMLELEMENT '(' NAME_P ColLabel ')' 0.00 : 5125d3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : v->location = @1; : $$ = (Node *)v; : } : | XMLCONCAT '(' expr_list ')' : { : $$ = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, $3, @1); 0.00 : 5125da: 49 89 c6 mov %rax,%r14 : } : | XMLELEMENT '(' NAME_P ColLabel ')' 0.00 : 5125dd: e9 9e f3 ff ff jmpq 511980 : v->location = @1; : $$ = (Node *)v; : } : | LEAST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); 0.00 : 5125e2: 48 8b 3d 77 82 6a 00 mov 0x6a8277(%rip),%rdi # bba860 0.00 : 5125e9: be 28 00 00 00 mov $0x28,%esi 0.00 : 5125ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5125f5: e8 16 68 28 00 callq 798e10 0.00 : 5125fa: c7 00 4d 01 00 00 movl $0x14d,(%rax) : v->args = $3; 0.00 : 512600: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : v->op = IS_LEAST; : v->location = @1; : $$ = (Node *)v; 0.00 : 512607: 49 89 c6 mov %rax,%r14 : $$ = (Node *)v; : } : | LEAST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); : v->args = $3; 0.00 : 51260a: 48 8b 53 f8 mov -0x8(%rbx),%rdx : v->op = IS_LEAST; 0.00 : 51260e: c7 40 10 01 00 00 00 movl $0x1,0x10(%rax) : $$ = (Node *)v; : } : | LEAST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); : v->args = $3; 0.00 : 512615: 48 89 50 18 mov %rdx,0x18(%rax) : v->op = IS_LEAST; : v->location = @1; 0.00 : 512619: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 512620: 8b 56 f4 mov -0xc(%rsi),%edx 0.00 : 512623: 89 50 20 mov %edx,0x20(%rax) : $$ = (Node *)v; : } : | XMLCONCAT '(' expr_list ')' 0.00 : 512626: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51262d: e9 4e f3 ff ff jmpq 511980 : c->location = @1; : $$ = (Node *)c; : } : | GREATEST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); 0.00 : 512632: 48 8b 3d 27 82 6a 00 mov 0x6a8227(%rip),%rdi # bba860 0.00 : 512639: be 28 00 00 00 mov $0x28,%esi 0.00 : 51263e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512645: e8 c6 67 28 00 callq 798e10 0.00 : 51264a: c7 00 4d 01 00 00 movl $0x14d,(%rax) : v->args = $3; 0.00 : 512650: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : v->op = IS_GREATEST; : v->location = @1; : $$ = (Node *)v; 0.00 : 512657: 49 89 c6 mov %rax,%r14 : $$ = (Node *)c; : } : | GREATEST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); : v->args = $3; 0.00 : 51265a: 48 8b 56 f8 mov -0x8(%rsi),%rdx : v->op = IS_GREATEST; 0.00 : 51265e: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : $$ = (Node *)c; : } : | GREATEST '(' expr_list ')' : { : MinMaxExpr *v = makeNode(MinMaxExpr); : v->args = $3; 0.00 : 512665: 48 89 50 18 mov %rdx,0x18(%rax) : v->op = IS_GREATEST; : v->location = @1; 0.00 : 512669: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 512670: 8b 51 f4 mov -0xc(%rcx),%edx 0.00 : 512673: 89 50 20 mov %edx,0x20(%rax) : $$ = (Node *)v; : } : | LEAST '(' expr_list ')' 0.00 : 512676: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51267d: e9 fe f2 ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", $3, $5, @1); : } : | COALESCE '(' expr_list ')' : { : CoalesceExpr *c = makeNode(CoalesceExpr); 0.00 : 512682: 48 8b 3d d7 81 6a 00 mov 0x6a81d7(%rip),%rdi # bba860 0.00 : 512689: be 20 00 00 00 mov $0x20,%esi 0.00 : 51268e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512695: e8 76 67 28 00 callq 798e10 0.00 : 51269a: c7 00 4c 01 00 00 movl $0x14c,(%rax) : c->args = $3; 0.00 : 5126a0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : c->location = @1; : $$ = (Node *)c; 0.00 : 5126a7: 49 89 c6 mov %rax,%r14 : $$ = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", $3, $5, @1); : } : | COALESCE '(' expr_list ')' : { : CoalesceExpr *c = makeNode(CoalesceExpr); : c->args = $3; 0.00 : 5126aa: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5126ae: 48 89 50 10 mov %rdx,0x10(%rax) : c->location = @1; 0.00 : 5126b2: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5126b9: 8b 53 f4 mov -0xc(%rbx),%edx 0.00 : 5126bc: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *)c; : } : | GREATEST '(' expr_list ')' 0.00 : 5126bf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5126c6: e9 b5 f2 ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $3, @1); : } : | NULLIF '(' a_expr ',' a_expr ')' : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", $3, $5, @1); 0.00 : 5126cb: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5126d2: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5126d9: bf 04 00 00 00 mov $0x4,%edi 0.00 : 5126de: 44 8b 46 ec mov -0x14(%rsi),%r8d 0.00 : 5126e2: 48 8b 4b f8 mov -0x8(%rbx),%rcx 0.00 : 5126e6: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 5126eb: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 5126ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5126f6: e8 75 f3 0d 00 callq 5f1a70 : } : | COALESCE '(' expr_list ')' 0.00 : 5126fb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $3, @1); : } : | NULLIF '(' a_expr ',' a_expr ')' : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", $3, $5, @1); 0.00 : 512702: 49 89 c6 mov %rax,%r14 : } : | COALESCE '(' expr_list ')' 0.00 : 512705: e9 76 f2 ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("rtrim"), $4, @1); : } : | TRIM '(' trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $3, @1); 0.00 : 51270a: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512711: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 512718: bf 99 97 7c 00 mov $0x7c9799,%edi 0.00 : 51271d: 4c 8b 61 f8 mov -0x8(%rcx),%r12 0.00 : 512721: 8b 5a f4 mov -0xc(%rdx),%ebx 0.00 : 512724: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51272b: e8 c0 e2 ff ff callq 5109f0 0.00 : 512730: 89 da mov %ebx,%edx 0.00 : 512732: 48 89 c7 mov %rax,%rdi 0.00 : 512735: 4c 89 e6 mov %r12,%rsi 0.00 : 512738: e8 e3 ec 0d 00 callq 5f1420 : } : | NULLIF '(' a_expr ',' a_expr ')' 0.00 : 51273d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("rtrim"), $4, @1); : } : | TRIM '(' trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $3, @1); 0.00 : 512744: 49 89 c6 mov %rax,%r14 : } : | NULLIF '(' a_expr ',' a_expr ')' 0.00 : 512747: e9 34 f2 ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("ltrim"), $4, @1); : } : | TRIM '(' TRAILING trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("rtrim"), $4, @1); 0.00 : 51274c: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 512753: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51275a: bf a5 97 7c 00 mov $0x7c97a5,%edi 0.00 : 51275f: 8b 5e f0 mov -0x10(%rsi),%ebx 0.00 : 512762: 4c 8b 60 f8 mov -0x8(%rax),%r12 0.00 : 512766: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51276d: e8 7e e2 ff ff callq 5109f0 0.00 : 512772: 89 da mov %ebx,%edx 0.00 : 512774: 48 89 c7 mov %rax,%rdi 0.00 : 512777: 4c 89 e6 mov %r12,%rsi 0.00 : 51277a: e8 a1 ec 0d 00 callq 5f1420 : } : | TRIM '(' trim_list ')' 0.00 : 51277f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("ltrim"), $4, @1); : } : | TRIM '(' TRAILING trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("rtrim"), $4, @1); 0.00 : 512786: 49 89 c6 mov %rax,%r14 : } : | TRIM '(' trim_list ')' 0.00 : 512789: e9 f2 f1 ff ff jmpq 511980 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $4, @1); : } : | TRIM '(' LEADING trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("ltrim"), $4, @1); 0.00 : 51278e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512795: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51279c: bf 9f 97 7c 00 mov $0x7c979f,%edi 0.00 : 5127a1: 4c 8b 61 f8 mov -0x8(%rcx),%r12 0.00 : 5127a5: 8b 5a f0 mov -0x10(%rdx),%ebx 0.00 : 5127a8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5127af: e8 3c e2 ff ff callq 5109f0 0.00 : 5127b4: 89 da mov %ebx,%edx 0.00 : 5127b6: 48 89 c7 mov %rax,%rdi 0.00 : 5127b9: 4c 89 e6 mov %r12,%rsi 0.00 : 5127bc: e8 5f ec 0d 00 callq 5f1420 : } : | TRIM '(' TRAILING trim_list ')' 0.00 : 5127c1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $4, @1); : } : | TRIM '(' LEADING trim_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("ltrim"), $4, @1); 0.00 : 5127c8: 49 89 c6 mov %rax,%r14 : } : | TRIM '(' TRAILING trim_list ')' 0.00 : 5127cb: e9 b0 f1 ff ff jmpq 511980 : | TRIM '(' BOTH trim_list ')' : { : /* various trim expressions are defined in SQL : * - thomas 1997-07-19 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $4, @1); 0.00 : 5127d0: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5127d7: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5127de: bf 99 97 7c 00 mov $0x7c9799,%edi 0.00 : 5127e3: 8b 5e f0 mov -0x10(%rsi),%ebx 0.00 : 5127e6: 4c 8b 60 f8 mov -0x8(%rax),%r12 0.00 : 5127ea: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5127f1: e8 fa e1 ff ff callq 5109f0 0.00 : 5127f6: 89 da mov %ebx,%edx 0.00 : 5127f8: 48 89 c7 mov %rax,%rdi 0.00 : 5127fb: 4c 89 e6 mov %r12,%rsi 0.00 : 5127fe: e8 1d ec 0d 00 callq 5f1420 : } : | TRIM '(' LEADING trim_list ')' 0.00 : 512803: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | TRIM '(' BOTH trim_list ')' : { : /* various trim expressions are defined in SQL : * - thomas 1997-07-19 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("btrim"), $4, @1); 0.00 : 51280a: 49 89 c6 mov %rax,%r14 : } : | TRIM '(' LEADING trim_list ')' 0.00 : 51280d: e9 6e f1 ff ff jmpq 511980 : * coercions than are handled by implicit casting. : * : * Convert SystemTypeName() to SystemFuncName() even though : * at the moment they result in the same thing. : */ : $$ = (Node *) makeFuncCall(SystemFuncName(((Value *)llast($5->names))->val.str), 0.00 : 512812: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 512819: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512820: 31 f6 xor %esi,%esi 0.00 : 512822: 48 8b 7a e8 mov -0x18(%rdx),%rdi 0.00 : 512826: 8b 58 ec mov -0x14(%rax),%ebx 0.00 : 512829: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512830: e8 1b f0 0c 00 callq 5e1850 0.00 : 512835: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51283c: 49 89 c4 mov %rax,%r12 : } : : STATIC_IF_INLINE ListCell * : list_tail(List *l) : { : return l ? l->tail : NULL; 0.00 : 51283f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512846: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 51284a: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 51284e: 31 c0 xor %eax,%eax 0.00 : 512850: 48 85 d2 test %rdx,%rdx 0.00 : 512853: 74 04 je 512859 0.00 : 512855: 48 8b 42 10 mov 0x10(%rdx),%rax 0.00 : 512859: 48 8b 00 mov (%rax),%rax 0.00 : 51285c: 48 8b 78 08 mov 0x8(%rax),%rdi 0.00 : 512860: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512867: e8 84 e1 ff ff callq 5109f0 0.00 : 51286c: 89 da mov %ebx,%edx 0.00 : 51286e: 48 89 c7 mov %rax,%rdi 0.00 : 512871: 4c 89 e6 mov %r12,%rsi 0.00 : 512874: e8 a7 eb 0d 00 callq 5f1420 : list_make1($3), : @1); : } : | TRIM '(' BOTH trim_list ')' 0.00 : 512879: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * coercions than are handled by implicit casting. : * : * Convert SystemTypeName() to SystemFuncName() even though : * at the moment they result in the same thing. : */ : $$ = (Node *) makeFuncCall(SystemFuncName(((Value *)llast($5->names))->val.str), 0.00 : 512880: 49 89 c6 mov %rax,%r14 : list_make1($3), : @1); : } : | TRIM '(' BOTH trim_list ')' 0.00 : 512883: e9 f8 f0 ff ff jmpq 511980 : | SUBSTRING '(' substr_list ')' : { : /* substring(A from B for C) is converted to : * substring(A, B, C) - thomas 2000-11-28 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("substring"), $3, @1); 0.00 : 512888: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51288f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 512896: bf 8f 97 7c 00 mov $0x7c978f,%edi 0.00 : 51289b: 8b 59 f4 mov -0xc(%rcx),%ebx 0.00 : 51289e: 4c 8b 66 f8 mov -0x8(%rsi),%r12 0.00 : 5128a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5128a9: e8 42 e1 ff ff callq 5109f0 0.00 : 5128ae: 89 da mov %ebx,%edx 0.00 : 5128b0: 48 89 c7 mov %rax,%rdi 0.00 : 5128b3: 4c 89 e6 mov %r12,%rsi 0.00 : 5128b6: e8 65 eb 0d 00 callq 5f1420 : } : | TREAT '(' a_expr AS Typename ')' 0.00 : 5128bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | SUBSTRING '(' substr_list ')' : { : /* substring(A from B for C) is converted to : * substring(A, B, C) - thomas 2000-11-28 : */ : $$ = (Node *) makeFuncCall(SystemFuncName("substring"), $3, @1); 0.00 : 5128c2: 49 89 c6 mov %rax,%r14 : } : | TREAT '(' a_expr AS Typename ')' 0.00 : 5128c5: e9 b6 f0 ff ff jmpq 511980 : $$ = (Node *) makeFuncCall(SystemFuncName("overlay"), $3, @1); : } : | POSITION '(' position_list ')' : { : /* position(A in B) is converted to position(B, A) */ : $$ = (Node *) makeFuncCall(SystemFuncName("position"), $3, @1); 0.00 : 5128ca: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5128d1: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5128d8: bf 98 5d 8c 00 mov $0x8c5d98,%edi 0.00 : 5128dd: 4c 8b 62 f8 mov -0x8(%rdx),%r12 0.00 : 5128e1: 8b 58 f4 mov -0xc(%rax),%ebx 0.00 : 5128e4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5128eb: e8 00 e1 ff ff callq 5109f0 0.00 : 5128f0: 89 da mov %ebx,%edx 0.00 : 5128f2: 48 89 c7 mov %rax,%rdi 0.00 : 5128f5: 4c 89 e6 mov %r12,%rsi 0.00 : 5128f8: e8 23 eb 0d 00 callq 5f1420 : } : | SUBSTRING '(' substr_list ')' 0.00 : 5128fd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) makeFuncCall(SystemFuncName("overlay"), $3, @1); : } : | POSITION '(' position_list ')' : { : /* position(A in B) is converted to position(B, A) */ : $$ = (Node *) makeFuncCall(SystemFuncName("position"), $3, @1); 0.00 : 512904: 49 89 c6 mov %rax,%r14 : } : | SUBSTRING '(' substr_list ')' 0.00 : 512907: e9 74 f0 ff ff jmpq 511980 : /* overlay(A PLACING B FROM C FOR D) is converted to : * overlay(A, B, C, D) : * overlay(A PLACING B FROM C) is converted to : * overlay(A, B, C) : */ : $$ = (Node *) makeFuncCall(SystemFuncName("overlay"), $3, @1); 0.00 : 51290c: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 512913: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51291a: bf 70 47 8e 00 mov $0x8e4770,%edi 0.00 : 51291f: 8b 59 f4 mov -0xc(%rcx),%ebx 0.00 : 512922: 4c 8b 66 f8 mov -0x8(%rsi),%r12 0.00 : 512926: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51292d: e8 be e0 ff ff callq 5109f0 0.00 : 512932: 89 da mov %ebx,%edx 0.00 : 512934: 48 89 c7 mov %rax,%rdi 0.00 : 512937: 4c 89 e6 mov %r12,%rsi 0.00 : 51293a: e8 e1 ea 0d 00 callq 5f1420 : } : | POSITION '(' position_list ')' 0.00 : 51293f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* overlay(A PLACING B FROM C FOR D) is converted to : * overlay(A, B, C, D) : * overlay(A PLACING B FROM C) is converted to : * overlay(A, B, C) : */ : $$ = (Node *) makeFuncCall(SystemFuncName("overlay"), $3, @1); 0.00 : 512946: 49 89 c6 mov %rax,%r14 : } : | POSITION '(' position_list ')' 0.00 : 512949: e9 32 f0 ff ff jmpq 511980 : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } : | EXTRACT '(' extract_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("date_part"), $3, @1); 0.00 : 51294e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 512955: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51295c: bf 85 97 7c 00 mov $0x7c9785,%edi 0.00 : 512961: 4c 8b 62 f8 mov -0x8(%rdx),%r12 0.00 : 512965: 8b 58 f4 mov -0xc(%rax),%ebx 0.00 : 512968: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51296f: e8 7c e0 ff ff callq 5109f0 0.00 : 512974: 89 da mov %ebx,%edx 0.00 : 512976: 48 89 c7 mov %rax,%rdi 0.00 : 512979: 4c 89 e6 mov %r12,%rsi 0.00 : 51297c: e8 9f ea 0d 00 callq 5f1420 : } : | OVERLAY '(' overlay_list ')' 0.00 : 512981: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } : | EXTRACT '(' extract_list ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("date_part"), $3, @1); 0.00 : 512988: 49 89 c6 mov %rax,%r14 : } : | OVERLAY '(' overlay_list ')' 0.00 : 51298b: e9 f0 ef ff ff jmpq 511980 : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } 0.00 : 512990: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 512997: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 51299e: 48 8b 3d bb 7e 6a 00 mov 0x6a7ebb(%rip),%rdi # bba860 : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } 0.00 : 5129a5: 4c 8b 66 f8 mov -0x8(%rsi),%r12 0.00 : 5129a9: 4c 8b 6e e8 mov -0x18(%rsi),%r13 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 5129ad: be 20 00 00 00 mov $0x20,%esi : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } 0.00 : 5129b2: 8b 59 ec mov -0x14(%rcx),%ebx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 5129b5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5129bc: e8 4f 64 28 00 callq 798e10 0.00 : 5129c1: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 5129c7: 4c 89 68 08 mov %r13,0x8(%rax) : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } 0.00 : 5129cb: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 5129ce: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 5129d2: 89 58 18 mov %ebx,0x18(%rax) : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); : } : | CAST '(' a_expr AS Typename ')' : { $$ = makeTypeCast($3, $5, @1); } : | EXTRACT '(' extract_list ')' 0.00 : 5129d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5129dc: e9 9f ef ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_database"), NIL, @1); : } : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); 0.00 : 5129e1: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5129e8: bf 76 97 7c 00 mov $0x7c9776,%edi 0.00 : 5129ed: 8b 1a mov (%rdx),%ebx 0.00 : 5129ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5129f6: e8 f5 df ff ff callq 5109f0 0.00 : 5129fb: 31 f6 xor %esi,%esi 0.00 : 5129fd: 48 89 c7 mov %rax,%rdi 0.00 : 512a00: 89 da mov %ebx,%edx 0.00 : 512a02: e8 19 ea 0d 00 callq 5f1420 : } : | CAST '(' a_expr AS Typename ')' 0.00 : 512a07: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_database"), NIL, @1); : } : | CURRENT_SCHEMA : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_schema"), NIL, @1); 0.00 : 512a0e: 49 89 c6 mov %rax,%r14 : } : | CAST '(' a_expr AS Typename ')' 0.00 : 512a11: e9 6a ef ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | CURRENT_CATALOG : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_database"), NIL, @1); 0.00 : 512a16: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512a1d: bf 65 97 7c 00 mov $0x7c9765,%edi 0.00 : 512a22: 8b 18 mov (%rax),%ebx 0.00 : 512a24: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512a2b: e8 c0 df ff ff callq 5109f0 0.00 : 512a30: 31 f6 xor %esi,%esi 0.00 : 512a32: 48 89 c7 mov %rax,%rdi 0.00 : 512a35: 89 da mov %ebx,%edx 0.00 : 512a37: e8 e4 e9 0d 00 callq 5f1420 : } : | CURRENT_SCHEMA 0.00 : 512a3c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | CURRENT_CATALOG : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_database"), NIL, @1); 0.00 : 512a43: 49 89 c6 mov %rax,%r14 : } : | CURRENT_SCHEMA 0.00 : 512a46: e9 35 ef ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("session_user"), NIL, @1); : } : | USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512a4b: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 512a52: bf 3b 96 7c 00 mov $0x7c963b,%edi 0.00 : 512a57: 8b 1e mov (%rsi),%ebx 0.00 : 512a59: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512a60: e8 8b df ff ff callq 5109f0 0.00 : 512a65: 31 f6 xor %esi,%esi 0.00 : 512a67: 48 89 c7 mov %rax,%rdi 0.00 : 512a6a: 89 da mov %ebx,%edx 0.00 : 512a6c: e8 af e9 0d 00 callq 5f1420 : } : | CURRENT_CATALOG 0.00 : 512a71: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("session_user"), NIL, @1); : } : | USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512a78: 49 89 c6 mov %rax,%r14 : } : | CURRENT_CATALOG 0.00 : 512a7b: e9 00 ef ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | SESSION_USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("session_user"), NIL, @1); 0.00 : 512a80: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 512a87: bf 58 97 7c 00 mov $0x7c9758,%edi 0.00 : 512a8c: 8b 19 mov (%rcx),%ebx 0.00 : 512a8e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512a95: e8 56 df ff ff callq 5109f0 0.00 : 512a9a: 31 f6 xor %esi,%esi 0.00 : 512a9c: 48 89 c7 mov %rax,%rdi 0.00 : 512a9f: 89 da mov %ebx,%edx 0.00 : 512aa1: e8 7a e9 0d 00 callq 5f1420 : } : | USER 0.00 : 512aa6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | SESSION_USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("session_user"), NIL, @1); 0.00 : 512aad: 49 89 c6 mov %rax,%r14 : } : | USER 0.00 : 512ab0: e9 cb ee ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | CURRENT_USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512ab5: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512abc: bf 3b 96 7c 00 mov $0x7c963b,%edi 0.00 : 512ac1: 8b 1a mov (%rdx),%ebx 0.00 : 512ac3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512aca: e8 21 df ff ff callq 5109f0 0.00 : 512acf: 31 f6 xor %esi,%esi 0.00 : 512ad1: 48 89 c7 mov %rax,%rdi 0.00 : 512ad4: 89 da mov %ebx,%edx 0.00 : 512ad6: e8 45 e9 0d 00 callq 5f1420 : } : | SESSION_USER 0.00 : 512adb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); : } : | CURRENT_USER : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512ae2: 49 89 c6 mov %rax,%r14 : } : | SESSION_USER 0.00 : 512ae5: e9 96 ee ff ff jmpq 511980 : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); : } : | CURRENT_ROLE : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512aea: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512af1: bf 3b 96 7c 00 mov $0x7c963b,%edi 0.00 : 512af6: 8b 18 mov (%rax),%ebx 0.00 : 512af8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512aff: e8 ec de ff ff callq 5109f0 0.00 : 512b04: 31 f6 xor %esi,%esi 0.00 : 512b06: 48 89 c7 mov %rax,%rdi 0.00 : 512b09: 89 da mov %ebx,%edx 0.00 : 512b0b: e8 10 e9 0d 00 callq 5f1420 : } : | CURRENT_USER 0.00 : 512b10: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); : } : | CURRENT_ROLE : { : $$ = (Node *) makeFuncCall(SystemFuncName("current_user"), NIL, @1); 0.00 : 512b17: 49 89 c6 mov %rax,%r14 : } : | CURRENT_USER 0.00 : 512b1a: e9 61 ee ff ff jmpq 511980 : * Translate as "'now'::text::timestamp(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512b1f: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512b24: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512b2b: e8 00 df ff ff callq 510a30 0.00 : 512b30: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512b35: 48 89 c2 mov %rax,%rdx 0.00 : 512b38: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512b3d: e8 7e e0 ff ff callq 510bc0 : d = SystemTypeName("timestamp"); 0.00 : 512b42: bf ff 70 8e 00 mov $0x8e70ff,%edi : * Translate as "'now'::text::timestamp(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512b47: 49 89 c4 mov %rax,%r12 : d = SystemTypeName("timestamp"); 0.00 : 512b4a: e8 e1 de ff ff callq 510a30 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512b4f: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512b56: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamp"); 0.00 : 512b5d: 49 89 c5 mov %rax,%r13 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512b60: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 512b63: 8b 79 f8 mov -0x8(%rcx),%edi 0.00 : 512b66: e8 a5 e0 ff ff callq 510c10 0.00 : 512b6b: 31 f6 xor %esi,%esi 0.00 : 512b6d: 48 89 c7 mov %rax,%rdi 0.00 : 512b70: e8 db ec 0c 00 callq 5e1850 0.00 : 512b75: 49 89 45 18 mov %rax,0x18(%r13) : $$ = makeTypeCast(n, d, @1); 0.00 : 512b79: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512b80: 48 8b 3d d9 7c 6a 00 mov 0x6a7cd9(%rip),%rdi # bba860 : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamp"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512b87: 8b 5e f4 mov -0xc(%rsi),%ebx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512b8a: be 20 00 00 00 mov $0x20,%esi 0.00 : 512b8f: e8 7c 62 28 00 callq 798e10 0.00 : 512b94: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512b9a: 4c 89 60 08 mov %r12,0x8(%rax) : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamp"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512b9e: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512ba1: 4c 89 68 10 mov %r13,0x10(%rax) : n->location = location; 0.00 : 512ba5: 89 58 18 mov %ebx,0x18(%rax) : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamp"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); : } : | CURRENT_ROLE 0.00 : 512ba8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512baf: e9 cc ed ff ff jmpq 511980 : /* : * Translate as "'now'::text::timestamp". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512bb4: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512bb9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512bc0: e8 6b de ff ff callq 510a30 0.00 : 512bc5: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512bca: 48 89 c2 mov %rax,%rdx 0.00 : 512bcd: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512bd2: e8 e9 df ff ff callq 510bc0 0.00 : 512bd7: 48 89 c3 mov %rax,%rbx : $$ = makeTypeCast(n, SystemTypeName("timestamp"), @1); 0.00 : 512bda: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512be1: bf ff 70 8e 00 mov $0x8e70ff,%edi 0.00 : 512be6: 44 8b 28 mov (%rax),%r13d 0.00 : 512be9: e8 42 de ff ff callq 510a30 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512bee: 48 8b 3d 6b 7c 6a 00 mov 0x6a7c6b(%rip),%rdi # bba860 : * Translate as "'now'::text::timestamp". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timestamp"), @1); 0.00 : 512bf5: 49 89 c4 mov %rax,%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512bf8: be 20 00 00 00 mov $0x20,%esi 0.00 : 512bfd: e8 0e 62 28 00 callq 798e10 0.00 : 512c02: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512c08: 48 89 58 08 mov %rbx,0x8(%rax) : * Translate as "'now'::text::timestamp". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timestamp"), @1); 0.00 : 512c0c: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512c0f: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 512c13: 44 89 68 18 mov %r13d,0x18(%rax) : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timestamp"), @1); : } : | LOCALTIMESTAMP '(' Iconst ')' 0.00 : 512c17: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512c1e: e9 5d ed ff ff jmpq 511980 : * Translate as "'now'::text::time(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512c23: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512c28: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512c2f: e8 fc dd ff ff callq 510a30 0.00 : 512c34: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512c39: 48 89 c2 mov %rax,%rdx 0.00 : 512c3c: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512c41: e8 7a df ff ff callq 510bc0 : d = SystemTypeName("time"); 0.00 : 512c46: bf bc 95 7b 00 mov $0x7b95bc,%edi : * Translate as "'now'::text::time(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512c4b: 49 89 c4 mov %rax,%r12 : d = SystemTypeName("time"); 0.00 : 512c4e: e8 dd dd ff ff callq 510a30 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512c53: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512c5a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("time"); 0.00 : 512c61: 49 89 c5 mov %rax,%r13 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512c64: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 512c67: 8b 79 f8 mov -0x8(%rcx),%edi 0.00 : 512c6a: e8 a1 df ff ff callq 510c10 0.00 : 512c6f: 31 f6 xor %esi,%esi 0.00 : 512c71: 48 89 c7 mov %rax,%rdi 0.00 : 512c74: e8 d7 eb 0c 00 callq 5e1850 0.00 : 512c79: 49 89 45 18 mov %rax,0x18(%r13) : $$ = makeTypeCast((Node *)n, d, @1); 0.00 : 512c7d: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512c84: 48 8b 3d d5 7b 6a 00 mov 0x6a7bd5(%rip),%rdi # bba860 : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("time"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast((Node *)n, d, @1); 0.00 : 512c8b: 8b 5e f4 mov -0xc(%rsi),%ebx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512c8e: be 20 00 00 00 mov $0x20,%esi 0.00 : 512c93: e8 78 61 28 00 callq 798e10 0.00 : 512c98: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512c9e: 4c 89 60 08 mov %r12,0x8(%rax) : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("time"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast((Node *)n, d, @1); 0.00 : 512ca2: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512ca5: 4c 89 68 10 mov %r13,0x10(%rax) : n->location = location; 0.00 : 512ca9: 89 58 18 mov %ebx,0x18(%rax) : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("time"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast((Node *)n, d, @1); : } : | LOCALTIMESTAMP 0.00 : 512cac: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512cb3: e9 c8 ec ff ff jmpq 511980 : /* : * Translate as "'now'::text::time". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512cb8: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512cbd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512cc4: e8 67 dd ff ff callq 510a30 0.00 : 512cc9: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512cce: 48 89 c2 mov %rax,%rdx 0.00 : 512cd1: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512cd6: e8 e5 de ff ff callq 510bc0 0.00 : 512cdb: 48 89 c3 mov %rax,%rbx : $$ = makeTypeCast((Node *)n, SystemTypeName("time"), @1); 0.00 : 512cde: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512ce5: bf bc 95 7b 00 mov $0x7b95bc,%edi 0.00 : 512cea: 44 8b 28 mov (%rax),%r13d 0.00 : 512ced: e8 3e dd ff ff callq 510a30 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512cf2: 48 8b 3d 67 7b 6a 00 mov 0x6a7b67(%rip),%rdi # bba860 : * Translate as "'now'::text::time". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast((Node *)n, SystemTypeName("time"), @1); 0.00 : 512cf9: 49 89 c4 mov %rax,%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512cfc: be 20 00 00 00 mov $0x20,%esi 0.00 : 512d01: e8 0a 61 28 00 callq 798e10 0.00 : 512d06: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512d0c: 48 89 58 08 mov %rbx,0x8(%rax) : * Translate as "'now'::text::time". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast((Node *)n, SystemTypeName("time"), @1); 0.00 : 512d10: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512d13: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 512d17: 44 89 68 18 mov %r13d,0x18(%rax) : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast((Node *)n, SystemTypeName("time"), @1); : } : | LOCALTIME '(' Iconst ')' 0.00 : 512d1b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512d22: e9 59 ec ff ff jmpq 511980 : * Translate as "'now'::text::timestamptz(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512d27: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512d2c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512d33: e8 f8 dc ff ff callq 510a30 0.00 : 512d38: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512d3d: 48 89 c2 mov %rax,%rdx 0.00 : 512d40: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512d45: e8 76 de ff ff callq 510bc0 : d = SystemTypeName("timestamptz"); 0.00 : 512d4a: bf 86 71 8e 00 mov $0x8e7186,%edi : * Translate as "'now'::text::timestamptz(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512d4f: 49 89 c4 mov %rax,%r12 : d = SystemTypeName("timestamptz"); 0.00 : 512d52: e8 d9 dc ff ff callq 510a30 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512d57: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512d5e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamptz"); 0.00 : 512d65: 49 89 c5 mov %rax,%r13 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512d68: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 512d6b: 8b 79 f8 mov -0x8(%rcx),%edi 0.00 : 512d6e: e8 9d de ff ff callq 510c10 0.00 : 512d73: 31 f6 xor %esi,%esi 0.00 : 512d75: 48 89 c7 mov %rax,%rdi 0.00 : 512d78: e8 d3 ea 0c 00 callq 5e1850 0.00 : 512d7d: 49 89 45 18 mov %rax,0x18(%r13) : $$ = makeTypeCast(n, d, @1); 0.00 : 512d81: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512d88: 48 8b 3d d1 7a 6a 00 mov 0x6a7ad1(%rip),%rdi # bba860 : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamptz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512d8f: 8b 5e f4 mov -0xc(%rsi),%ebx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512d92: be 20 00 00 00 mov $0x20,%esi 0.00 : 512d97: e8 74 60 28 00 callq 798e10 0.00 : 512d9c: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512da2: 4c 89 60 08 mov %r12,0x8(%rax) : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamptz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512da6: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512da9: 4c 89 68 10 mov %r13,0x10(%rax) : n->location = location; 0.00 : 512dad: 89 58 18 mov %ebx,0x18(%rax) : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timestamptz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); : } : | LOCALTIME 0.00 : 512db0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512db7: e9 c4 eb ff ff jmpq 511980 : { : /* : * Translate as "now()", since we have a function that : * does exactly what is needed. : */ : $$ = (Node *) makeFuncCall(SystemFuncName("now"), NIL, @1); 0.00 : 512dbc: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512dc3: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512dc8: 8b 18 mov (%rax),%ebx 0.00 : 512dca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512dd1: e8 1a dc ff ff callq 5109f0 0.00 : 512dd6: 31 f6 xor %esi,%esi 0.00 : 512dd8: 48 89 c7 mov %rax,%rdi 0.00 : 512ddb: 89 da mov %ebx,%edx 0.00 : 512ddd: e8 3e e6 0d 00 callq 5f1420 : } : | CURRENT_TIMESTAMP '(' Iconst ')' 0.00 : 512de2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : /* : * Translate as "now()", since we have a function that : * does exactly what is needed. : */ : $$ = (Node *) makeFuncCall(SystemFuncName("now"), NIL, @1); 0.00 : 512de9: 49 89 c6 mov %rax,%r14 : } : | CURRENT_TIMESTAMP '(' Iconst ')' 0.00 : 512dec: e9 8f eb ff ff jmpq 511980 : * Translate as "'now'::text::timetz(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512df1: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512df6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512dfd: e8 2e dc ff ff callq 510a30 0.00 : 512e02: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512e07: 48 89 c2 mov %rax,%rdx 0.00 : 512e0a: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512e0f: e8 ac dd ff ff callq 510bc0 : d = SystemTypeName("timetz"); 0.00 : 512e14: bf 4b 68 8e 00 mov $0x8e684b,%edi : * Translate as "'now'::text::timetz(n)". : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512e19: 49 89 c4 mov %rax,%r12 : d = SystemTypeName("timetz"); 0.00 : 512e1c: e8 0f dc ff ff callq 510a30 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512e21: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512e28: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : * See comments for CURRENT_DATE. : */ : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timetz"); 0.00 : 512e2f: 49 89 c5 mov %rax,%r13 : d->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 512e32: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 512e35: 8b 79 f8 mov -0x8(%rcx),%edi 0.00 : 512e38: e8 d3 dd ff ff callq 510c10 0.00 : 512e3d: 31 f6 xor %esi,%esi 0.00 : 512e3f: 48 89 c7 mov %rax,%rdi 0.00 : 512e42: e8 09 ea 0c 00 callq 5e1850 0.00 : 512e47: 49 89 45 18 mov %rax,0x18(%r13) : $$ = makeTypeCast(n, d, @1); 0.00 : 512e4b: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512e52: 48 8b 3d 07 7a 6a 00 mov 0x6a7a07(%rip),%rdi # bba860 : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timetz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512e59: 8b 5e f4 mov -0xc(%rsi),%ebx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512e5c: be 20 00 00 00 mov $0x20,%esi 0.00 : 512e61: e8 aa 5f 28 00 callq 798e10 0.00 : 512e66: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512e6c: 4c 89 60 08 mov %r12,0x8(%rax) : Node *n; : TypeName *d; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timetz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); 0.00 : 512e70: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512e73: 4c 89 68 10 mov %r13,0x10(%rax) : n->location = location; 0.00 : 512e77: 89 58 18 mov %ebx,0x18(%rax) : n = makeStringConstCast("now", -1, SystemTypeName("text")); : d = SystemTypeName("timetz"); : d->typmods = list_make1(makeIntConst($3, @3)); : $$ = makeTypeCast(n, d, @1); : } : | CURRENT_TIMESTAMP 0.00 : 512e7a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512e81: e9 fa ea ff ff jmpq 511980 : /* : * Translate as "'now'::text::timetz". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512e86: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512e8b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512e92: e8 99 db ff ff callq 510a30 0.00 : 512e97: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512e9c: 48 89 c2 mov %rax,%rdx 0.00 : 512e9f: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512ea4: e8 17 dd ff ff callq 510bc0 0.00 : 512ea9: 48 89 c3 mov %rax,%rbx : $$ = makeTypeCast(n, SystemTypeName("timetz"), @1); 0.00 : 512eac: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 512eb3: bf 4b 68 8e 00 mov $0x8e684b,%edi 0.00 : 512eb8: 44 8b 28 mov (%rax),%r13d 0.00 : 512ebb: e8 70 db ff ff callq 510a30 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512ec0: 48 8b 3d 99 79 6a 00 mov 0x6a7999(%rip),%rdi # bba860 : * Translate as "'now'::text::timetz". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timetz"), @1); 0.00 : 512ec7: 49 89 c4 mov %rax,%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512eca: be 20 00 00 00 mov $0x20,%esi 0.00 : 512ecf: e8 3c 5f 28 00 callq 798e10 0.00 : 512ed4: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512eda: 48 89 58 08 mov %rbx,0x8(%rax) : * Translate as "'now'::text::timetz". : * See comments for CURRENT_DATE. : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timetz"), @1); 0.00 : 512ede: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512ee1: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 512ee5: 44 89 68 18 mov %r13d,0x18(%rax) : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("timetz"), @1); : } : | CURRENT_TIME '(' Iconst ')' 0.00 : 512ee9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512ef0: e9 8b ea ff ff jmpq 511980 : * typecast, not to the Const, for the convenience of : * pg_stat_statements (which doesn't want these constructs : * to appear to be replaceable constants). : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512ef5: bf 8f 3a 8d 00 mov $0x8d3a8f,%edi 0.00 : 512efa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512f01: e8 2a db ff ff callq 510a30 0.00 : 512f06: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 512f0b: 48 89 c2 mov %rax,%rdx 0.00 : 512f0e: bf 48 3d 8e 00 mov $0x8e3d48,%edi 0.00 : 512f13: e8 a8 dc ff ff callq 510bc0 : $$ = makeTypeCast(n, SystemTypeName("date"), @1); 0.00 : 512f18: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 512f1f: bf 10 72 8e 00 mov $0x8e7210,%edi : * typecast, not to the Const, for the convenience of : * pg_stat_statements (which doesn't want these constructs : * to appear to be replaceable constants). : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); 0.00 : 512f24: 48 89 c3 mov %rax,%rbx : $$ = makeTypeCast(n, SystemTypeName("date"), @1); 0.00 : 512f27: 44 8b 2e mov (%rsi),%r13d 0.00 : 512f2a: e8 01 db ff ff callq 510a30 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512f2f: 48 8b 3d 2a 79 6a 00 mov 0x6a792a(%rip),%rdi # bba860 : * pg_stat_statements (which doesn't want these constructs : * to appear to be replaceable constants). : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("date"), @1); 0.00 : 512f36: 49 89 c4 mov %rax,%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 512f39: be 20 00 00 00 mov $0x20,%esi 0.00 : 512f3e: e8 cd 5e 28 00 callq 798e10 0.00 : 512f43: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 512f49: 48 89 58 08 mov %rbx,0x8(%rax) : * pg_stat_statements (which doesn't want these constructs : * to appear to be replaceable constants). : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("date"), @1); 0.00 : 512f4d: 49 89 c6 mov %rax,%r14 : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; : n->typeName = typename; 0.00 : 512f50: 4c 89 60 10 mov %r12,0x10(%rax) : n->location = location; 0.00 : 512f54: 44 89 68 18 mov %r13d,0x18(%rax) : */ : Node *n; : n = makeStringConstCast("now", -1, SystemTypeName("text")); : $$ = makeTypeCast(n, SystemTypeName("date"), @1); : } : | CURRENT_TIME 0.00 : 512f58: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 512f5f: e9 1c ea ff ff jmpq 511980 : * Special expressions that are considered to be functions. : */ : func_expr_common_subexpr: : COLLATION FOR '(' a_expr ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("pg_collation_for"), 0.00 : 512f64: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 512f6b: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 512f72: 31 f6 xor %esi,%esi 0.00 : 512f74: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 512f78: 44 8b 62 f0 mov -0x10(%rdx),%r12d 0.00 : 512f7c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 512f83: e8 c8 e8 0c 00 callq 5e1850 0.00 : 512f88: bf 47 97 7c 00 mov $0x7c9747,%edi 0.00 : 512f8d: 48 89 c3 mov %rax,%rbx 0.00 : 512f90: e8 5b da ff ff callq 5109f0 0.00 : 512f95: 44 89 e2 mov %r12d,%edx 0.00 : 512f98: 48 89 c7 mov %rax,%rdi 0.00 : 512f9b: 48 89 de mov %rbx,%rsi 0.00 : 512f9e: e8 7d e4 0d 00 callq 5f1420 : list_make1($4), : @1); : } : | CURRENT_DATE 0.00 : 512fa3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * Special expressions that are considered to be functions. : */ : func_expr_common_subexpr: : COLLATION FOR '(' a_expr ')' : { : $$ = (Node *) makeFuncCall(SystemFuncName("pg_collation_for"), 0.00 : 512faa: 49 89 c6 mov %rax,%r14 : list_make1($4), : @1); : } : | CURRENT_DATE 0.00 : 512fad: e9 ce e9 ff ff jmpq 511980 : * Use this when window expressions are not allowed, where needed to : * disambiguate the grammar (e.g. in CREATE INDEX). : */ : func_expr_windowless: : func_application { $$ = $1; } : | func_expr_common_subexpr { $$ = $1; } 0.00 : 512fb2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 512fb9: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 512fbc: e9 bf e9 ff ff jmpq 511980 : * (but they can still be contained in arguments for functions etc). : * Use this when window expressions are not allowed, where needed to : * disambiguate the grammar (e.g. in CREATE INDEX). : */ : func_expr_windowless: : func_application { $$ = $1; } 0.00 : 512fc1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 512fc8: 4c 8b 36 mov (%rsi),%r14 : | func_expr_common_subexpr { $$ = $1; } 0.00 : 512fcb: e9 b0 e9 ff ff jmpq 511980 : n->agg_filter = $3; : n->over = $4; : $$ = (Node *) n; : } : | func_expr_common_subexpr : { $$ = $1; } 0.00 : 512fd0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 512fd7: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 512fda: e9 a1 e9 ff ff jmpq 511980 : * (Note that many of the special SQL functions wouldn't actually make any : * sense as functional index entries, but we ignore that consideration here.) : */ : func_expr: func_application within_group_clause filter_clause over_clause : { : FuncCall *n = (FuncCall *) $1; 0.00 : 512fdf: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 512fe6: 48 8b 50 e8 mov -0x18(%rax),%rdx : * check here that at most one is present. We also check : * for DISTINCT and VARIADIC here to give a better error : * location. Other consistency checks are deferred to : * parse analysis. : */ : if ($2 != NIL) 0.00 : 512fea: 48 8b 40 f0 mov -0x10(%rax),%rax 0.00 : 512fee: 48 85 c0 test %rax,%rax 0.00 : 512ff1: 74 2b je 51301e : { : if (n->agg_order != NIL) 0.00 : 512ff3: 48 83 7a 18 00 cmpq $0x0,0x18(%rdx) 0.00 : 512ff8: 0f 85 63 6b 01 00 jne 529b61 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), : parser_errposition(@2))); : if (n->agg_distinct) 0.00 : 512ffe: 80 7a 2a 00 cmpb $0x0,0x2a(%rdx) 0.00 : 513002: 0f 85 04 6b 01 00 jne 529b0c : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("cannot use DISTINCT with WITHIN GROUP"), : parser_errposition(@2))); : if (n->func_variadic) 0.00 : 513008: 80 7a 2b 00 cmpb $0x0,0x2b(%rdx) 0.00 : 51300c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 513010: 0f 85 a1 6a 01 00 jne 529ab7 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("cannot use VARIADIC with WITHIN GROUP"), : parser_errposition(@2))); : n->agg_order = $2; 0.00 : 513016: 48 89 42 18 mov %rax,0x18(%rdx) : n->agg_within_group = TRUE; 0.00 : 51301a: c6 42 28 01 movb $0x1,0x28(%rdx) : } : n->agg_filter = $3; 0.00 : 51301e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->over = $4; : $$ = (Node *) n; 0.00 : 513025: 49 89 d6 mov %rdx,%r14 : errmsg("cannot use VARIADIC with WITHIN GROUP"), : parser_errposition(@2))); : n->agg_order = $2; : n->agg_within_group = TRUE; : } : n->agg_filter = $3; 0.00 : 513028: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 51302c: 48 89 42 20 mov %rax,0x20(%rdx) : n->over = $4; 0.00 : 513030: 48 8b 01 mov (%rcx),%rax 0.00 : 513033: 48 89 42 30 mov %rax,0x30(%rdx) : $$ = (Node *) n; : } : | func_expr_common_subexpr 0.00 : 513037: e9 44 e9 ff ff jmpq 511980 : * : * The FuncCall node is also marked agg_star = true, : * so that later processing can detect what the argument : * really was. : */ : FuncCall *n = makeFuncCall($1, NIL, @1); 0.00 : 51303c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513043: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51304a: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51304e: 8b 53 f4 mov -0xc(%rbx),%edx 0.00 : 513051: 31 f6 xor %esi,%esi 0.00 : 513053: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51305a: e8 c1 e3 0d 00 callq 5f1420 : n->agg_star = TRUE; 0.00 : 51305f: c6 40 29 01 movb $0x1,0x29(%rax) : $$ = (Node *)n; 0.00 : 513063: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 513066: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51306d: e9 0e e9 ff ff jmpq 511980 : */ : $$ = (Node *)n; : } : | func_name '(' DISTINCT func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $4, @1); 0.00 : 513072: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513079: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513080: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 513084: 8b 53 ec mov -0x14(%rbx),%edx 0.00 : 513087: 48 8b 78 d8 mov -0x28(%rax),%rdi 0.00 : 51308b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513092: e8 89 e3 0d 00 callq 5f1420 : n->agg_order = $5; 0.00 : 513097: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->agg_distinct = TRUE; : $$ = (Node *)n; 0.00 : 51309e: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | func_name '(' DISTINCT func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $4, @1); : n->agg_order = $5; 0.00 : 5130a1: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->agg_distinct = TRUE; 0.00 : 5130a5: c6 40 2a 01 movb $0x1,0x2a(%rax) : $$ = (Node *)n; : } : | func_name '(' DISTINCT func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $4, @1); : n->agg_order = $5; 0.00 : 5130a9: 48 89 50 18 mov %rdx,0x18(%rax) : n->agg_distinct = TRUE; : $$ = (Node *)n; : } : | func_name '(' '*' ')' 0.00 : 5130ad: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5130b4: e9 c7 e8 ff ff jmpq 511980 : n->agg_order = $7; : $$ = (Node *)n; : } : | func_name '(' ALL func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $4, @1); 0.00 : 5130b9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5130c0: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5130c7: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 5130cb: 8b 53 ec mov -0x14(%rbx),%edx 0.00 : 5130ce: 48 8b 78 d8 mov -0x28(%rax),%rdi 0.00 : 5130d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5130d9: e8 42 e3 0d 00 callq 5f1420 : n->agg_order = $5; 0.00 : 5130de: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : /* Ideally we'd mark the FuncCall node to indicate : * "must be an aggregate", but there's no provision : * for that in FuncCall at the moment. : */ : $$ = (Node *)n; 0.00 : 5130e5: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | func_name '(' ALL func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $4, @1); : n->agg_order = $5; 0.00 : 5130e8: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5130ec: 48 89 50 18 mov %rdx,0x18(%rax) : * "must be an aggregate", but there's no provision : * for that in FuncCall at the moment. : */ : $$ = (Node *)n; : } : | func_name '(' DISTINCT func_arg_list opt_sort_clause ')' 0.00 : 5130f0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5130f7: e9 84 e8 ff ff jmpq 511980 : n->agg_order = $5; : $$ = (Node *)n; : } : | func_name '(' func_arg_list ',' VARIADIC func_arg_expr opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, lappend($3, $6), @1); 0.00 : 5130fc: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513103: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51310a: 8b 5e e4 mov -0x1c(%rsi),%ebx 0.00 : 51310d: 48 8b 78 d8 mov -0x28(%rax),%rdi 0.00 : 513111: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 513115: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51311c: e8 5f ed 0c 00 callq 5e1e80 0.00 : 513121: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513128: 48 89 c6 mov %rax,%rsi 0.00 : 51312b: 48 8b 7a c8 mov -0x38(%rdx),%rdi 0.00 : 51312f: 89 da mov %ebx,%edx 0.00 : 513131: e8 ea e2 0d 00 callq 5f1420 : n->func_variadic = TRUE; 0.00 : 513136: c6 40 2b 01 movb $0x1,0x2b(%rax) : n->agg_order = $7; 0.00 : 51313a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 513141: 49 89 c6 mov %rax,%r14 : } : | func_name '(' func_arg_list ',' VARIADIC func_arg_expr opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, lappend($3, $6), @1); : n->func_variadic = TRUE; : n->agg_order = $7; 0.00 : 513144: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 513148: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | func_name '(' ALL func_arg_list opt_sort_clause ')' 0.00 : 51314c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513153: e9 28 e8 ff ff jmpq 511980 : n->agg_order = $4; : $$ = (Node *)n; : } : | func_name '(' VARIADIC func_arg_expr opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, list_make1($4), @1); 0.00 : 513158: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51315f: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513166: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 51316a: 8b 5e ec mov -0x14(%rsi),%ebx 0.00 : 51316d: 31 f6 xor %esi,%esi 0.00 : 51316f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513176: e8 d5 e6 0c 00 callq 5e1850 0.00 : 51317b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513182: 48 89 c6 mov %rax,%rsi 0.00 : 513185: 48 8b 7a d8 mov -0x28(%rdx),%rdi 0.00 : 513189: 89 da mov %ebx,%edx 0.00 : 51318b: e8 90 e2 0d 00 callq 5f1420 : n->func_variadic = TRUE; 0.00 : 513190: c6 40 2b 01 movb $0x1,0x2b(%rax) : n->agg_order = $5; 0.00 : 513194: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 51319b: 49 89 c6 mov %rax,%r14 : } : | func_name '(' VARIADIC func_arg_expr opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, list_make1($4), @1); : n->func_variadic = TRUE; : n->agg_order = $5; 0.00 : 51319e: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5131a2: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | func_name '(' func_arg_list ',' VARIADIC func_arg_expr opt_sort_clause ')' 0.00 : 5131a6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5131ad: e9 ce e7 ff ff jmpq 511980 : { : $$ = (Node *) makeFuncCall($1, NIL, @1); : } : | func_name '(' func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $3, @1); 0.00 : 5131b2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5131b9: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5131c0: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 5131c4: 8b 53 f0 mov -0x10(%rbx),%edx 0.00 : 5131c7: 48 8b 78 e0 mov -0x20(%rax),%rdi 0.00 : 5131cb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5131d2: e8 49 e2 0d 00 callq 5f1420 : n->agg_order = $4; 0.00 : 5131d7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 5131de: 49 89 c6 mov %rax,%r14 : $$ = (Node *) makeFuncCall($1, NIL, @1); : } : | func_name '(' func_arg_list opt_sort_clause ')' : { : FuncCall *n = makeFuncCall($1, $3, @1); : n->agg_order = $4; 0.00 : 5131e1: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5131e5: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | func_name '(' VARIADIC func_arg_expr opt_sort_clause ')' 0.00 : 5131e9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5131f0: e9 8b e7 ff ff jmpq 511980 : } : ; : : func_application: func_name '(' ')' : { : $$ = (Node *) makeFuncCall($1, NIL, @1); 0.00 : 5131f5: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5131fc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 513203: 31 f6 xor %esi,%esi 0.00 : 513205: 8b 50 f8 mov -0x8(%rax),%edx 0.00 : 513208: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51320c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513213: e8 08 e2 0d 00 callq 5f1420 : } : | func_name '(' func_arg_list opt_sort_clause ')' 0.00 : 513218: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : func_application: func_name '(' ')' : { : $$ = (Node *) makeFuncCall($1, NIL, @1); 0.00 : 51321f: 49 89 c6 mov %rax,%r14 : } : | func_name '(' func_arg_list opt_sort_clause ')' 0.00 : 513222: e9 59 e7 ff ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | row : { : RowExpr *r = makeNode(RowExpr); 0.00 : 513227: 48 8b 3d 32 76 6a 00 mov 0x6a7632(%rip),%rdi # bba860 0.00 : 51322e: be 28 00 00 00 mov $0x28,%esi 0.00 : 513233: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51323a: e8 d1 5b 28 00 callq 798e10 0.00 : 51323f: c7 00 4a 01 00 00 movl $0x14a,(%rax) : r->args = $1; 0.00 : 513245: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : r->row_typeid = InvalidOid; /* not analyzed yet */ : r->colnames = NIL; /* to be filled in during analysis */ : r->location = @1; : $$ = (Node *)r; 0.00 : 51324c: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | row : { : RowExpr *r = makeNode(RowExpr); : r->args = $1; 0.00 : 51324f: 48 8b 13 mov (%rbx),%rdx : r->row_typeid = InvalidOid; /* not analyzed yet */ 0.00 : 513252: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : r->colnames = NIL; /* to be filled in during analysis */ 0.00 : 513259: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 513260: 00 : $$ = (Node *)n; : } : | row : { : RowExpr *r = makeNode(RowExpr); : r->args = $1; 0.00 : 513261: 48 89 50 08 mov %rdx,0x8(%rax) : r->row_typeid = InvalidOid; /* not analyzed yet */ : r->colnames = NIL; /* to be filled in during analysis */ : r->location = @1; 0.00 : 513265: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51326c: 8b 16 mov (%rsi),%edx 0.00 : 51326e: 89 50 20 mov %edx,0x20(%rax) : $$ = (Node *)r; : } : ; 0.00 : 513271: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513278: e9 03 e7 ff ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | ARRAY array_expr : { : A_ArrayExpr *n = (A_ArrayExpr *) $2; 0.00 : 51327d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : Assert(IsA(n, A_ArrayExpr)); : /* point outermost A_ArrayExpr to the ARRAY keyword */ : n->location = @1; 0.00 : 513284: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : n->location = @1; : $$ = (Node *)n; : } : | ARRAY array_expr : { : A_ArrayExpr *n = (A_ArrayExpr *) $2; 0.00 : 51328b: 48 8b 16 mov (%rsi),%rdx : Assert(IsA(n, A_ArrayExpr)); : /* point outermost A_ArrayExpr to the ARRAY keyword */ : n->location = @1; 0.00 : 51328e: 8b 41 fc mov -0x4(%rcx),%eax : $$ = (Node *)n; 0.00 : 513291: 49 89 d6 mov %rdx,%r14 : | ARRAY array_expr : { : A_ArrayExpr *n = (A_ArrayExpr *) $2; : Assert(IsA(n, A_ArrayExpr)); : /* point outermost A_ArrayExpr to the ARRAY keyword */ : n->location = @1; 0.00 : 513294: 89 42 10 mov %eax,0x10(%rdx) : $$ = (Node *)n; : } : | row 0.00 : 513297: e9 e4 e6 ff ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | ARRAY select_with_parens : { : SubLink *n = makeNode(SubLink); 0.00 : 51329c: 48 8b 3d bd 75 6a 00 mov 0x6a75bd(%rip),%rdi # bba860 0.00 : 5132a3: be 30 00 00 00 mov $0x30,%esi 0.00 : 5132a8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5132af: e8 5c 5b 28 00 callq 798e10 0.00 : 5132b4: c7 00 3c 01 00 00 movl $0x13c,(%rax) : n->subLinkType = ARRAY_SUBLINK; 0.00 : 5132ba: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->subLinkId = 0; : n->testexpr = NULL; : n->operName = NIL; : n->subselect = $2; : n->location = @1; : $$ = (Node *)n; 0.00 : 5132c1: 49 89 c6 mov %rax,%r14 : } : | ARRAY select_with_parens : { : SubLink *n = makeNode(SubLink); : n->subLinkType = ARRAY_SUBLINK; : n->subLinkId = 0; 0.00 : 5132c4: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : n->testexpr = NULL; 0.00 : 5132cb: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5132d2: 00 : n->operName = NIL; 0.00 : 5132d3: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5132da: 00 : n->subselect = $2; 0.00 : 5132db: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5132e2: 48 8b 11 mov (%rcx),%rdx 0.00 : 5132e5: 48 89 50 20 mov %rdx,0x20(%rax) : n->location = @1; 0.00 : 5132e9: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5132f0: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 5132f3: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)n; : } : | ARRAY array_expr 0.00 : 5132f6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5132fd: e9 7e e6 ff ff jmpq 511980 : a->indirection = check_indirection($2, yyscanner); : $$ = (Node *)a; : } : | EXISTS select_with_parens : { : SubLink *n = makeNode(SubLink); 0.00 : 513302: 48 8b 3d 57 75 6a 00 mov 0x6a7557(%rip),%rdi # bba860 0.00 : 513309: be 30 00 00 00 mov $0x30,%esi 0.00 : 51330e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513315: e8 f6 5a 28 00 callq 798e10 0.00 : 51331a: c7 00 3c 01 00 00 movl $0x13c,(%rax) : n->subLinkType = EXISTS_SUBLINK; 0.00 : 513320: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->subLinkId = 0; : n->testexpr = NULL; : n->operName = NIL; : n->subselect = $2; : n->location = @1; : $$ = (Node *)n; 0.00 : 513327: 49 89 c6 mov %rax,%r14 : } : | EXISTS select_with_parens : { : SubLink *n = makeNode(SubLink); : n->subLinkType = EXISTS_SUBLINK; : n->subLinkId = 0; 0.00 : 51332a: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : n->testexpr = NULL; 0.00 : 513331: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 513338: 00 : n->operName = NIL; 0.00 : 513339: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 513340: 00 : n->subselect = $2; 0.00 : 513341: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513348: 48 8b 13 mov (%rbx),%rdx 0.00 : 51334b: 48 89 50 20 mov %rdx,0x20(%rax) : n->location = @1; 0.00 : 51334f: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513356: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 513359: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)n; : } : | ARRAY select_with_parens 0.00 : 51335c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513363: e9 18 e6 ff ff jmpq 511980 : * the sub-SELECT won't be regarded as an a_expr as long : * as there are parens around it. To support applying : * subscripting or field selection to a sub-SELECT result, : * we need this redundant-looking production. : */ : SubLink *n = makeNode(SubLink); 0.00 : 513368: 48 8b 3d f1 74 6a 00 mov 0x6a74f1(%rip),%rdi # bba860 0.00 : 51336f: be 30 00 00 00 mov $0x30,%esi 0.00 : 513374: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51337b: e8 90 5a 28 00 callq 798e10 0.00 : 513380: c7 00 3c 01 00 00 movl $0x13c,(%rax) : A_Indirection *a = makeNode(A_Indirection); 0.00 : 513386: 48 8b 3d d3 74 6a 00 mov 0x6a74d3(%rip),%rdi # bba860 : * the sub-SELECT won't be regarded as an a_expr as long : * as there are parens around it. To support applying : * subscripting or field selection to a sub-SELECT result, : * we need this redundant-looking production. : */ : SubLink *n = makeNode(SubLink); 0.00 : 51338d: 48 89 c3 mov %rax,%rbx : A_Indirection *a = makeNode(A_Indirection); 0.00 : 513390: be 18 00 00 00 mov $0x18,%esi 0.00 : 513395: e8 76 5a 28 00 callq 798e10 0.00 : 51339a: c7 00 8b 03 00 00 movl $0x38b,(%rax) : n->subLinkType = EXPR_SUBLINK; 0.00 : 5133a0: c7 43 04 04 00 00 00 movl $0x4,0x4(%rbx) : * as there are parens around it. To support applying : * subscripting or field selection to a sub-SELECT result, : * we need this redundant-looking production. : */ : SubLink *n = makeNode(SubLink); : A_Indirection *a = makeNode(A_Indirection); 0.00 : 5133a7: 49 89 c4 mov %rax,%r12 : n->subLinkType = EXPR_SUBLINK; : n->subLinkId = 0; 0.00 : 5133aa: c7 43 08 00 00 00 00 movl $0x0,0x8(%rbx) : n->testexpr = NULL; 0.00 : 5133b1: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5133b8: 00 : n->operName = NIL; : n->subselect = $1; : n->location = @1; : a->arg = (Node *)n; : a->indirection = check_indirection($2, yyscanner); : $$ = (Node *)a; 0.00 : 5133b9: 4d 89 e6 mov %r12,%r14 : SubLink *n = makeNode(SubLink); : A_Indirection *a = makeNode(A_Indirection); : n->subLinkType = EXPR_SUBLINK; : n->subLinkId = 0; : n->testexpr = NULL; : n->operName = NIL; 0.00 : 5133bc: 48 c7 43 18 00 00 00 movq $0x0,0x18(%rbx) 0.00 : 5133c3: 00 : n->subselect = $1; 0.00 : 5133c4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5133cb: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 5133cf: 48 89 43 20 mov %rax,0x20(%rbx) : n->location = @1; 0.00 : 5133d3: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5133da: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 5133dd: 89 43 28 mov %eax,0x28(%rbx) : a->arg = (Node *)n; 0.00 : 5133e0: 49 89 5c 24 08 mov %rbx,0x8(%r12) : a->indirection = check_indirection($2, yyscanner); 0.00 : 5133e5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5133ec: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5133f3: 48 8b 39 mov (%rcx),%rdi 0.00 : 5133f6: e8 c5 a9 ff ff callq 50ddc0 0.00 : 5133fb: 49 89 44 24 10 mov %rax,0x10(%r12) : $$ = (Node *)a; : } : | EXISTS select_with_parens 0.00 : 513400: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513407: e9 74 e5 ff ff jmpq 511980 : { $$ = $1; } : | func_expr : { $$ = $1; } : | select_with_parens %prec UMINUS : { : SubLink *n = makeNode(SubLink); 0.00 : 51340c: 48 8b 3d 4d 74 6a 00 mov 0x6a744d(%rip),%rdi # bba860 0.00 : 513413: be 30 00 00 00 mov $0x30,%esi 0.00 : 513418: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51341f: e8 ec 59 28 00 callq 798e10 0.00 : 513424: c7 00 3c 01 00 00 movl $0x13c,(%rax) : n->subLinkType = EXPR_SUBLINK; 0.00 : 51342a: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->subLinkId = 0; : n->testexpr = NULL; : n->operName = NIL; : n->subselect = $1; : n->location = @1; : $$ = (Node *)n; 0.00 : 513431: 49 89 c6 mov %rax,%r14 : { $$ = $1; } : | select_with_parens %prec UMINUS : { : SubLink *n = makeNode(SubLink); : n->subLinkType = EXPR_SUBLINK; : n->subLinkId = 0; 0.00 : 513434: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : n->testexpr = NULL; 0.00 : 51343b: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 513442: 00 : n->operName = NIL; 0.00 : 513443: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 51344a: 00 : n->subselect = $1; 0.00 : 51344b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 513452: 48 8b 11 mov (%rcx),%rdx 0.00 : 513455: 48 89 50 20 mov %rdx,0x20(%rax) : n->location = @1; 0.00 : 513459: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513460: 8b 13 mov (%rbx),%edx 0.00 : 513462: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)n; : } : | select_with_parens indirection 0.00 : 513465: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51346c: e9 0f e5 ff ff jmpq 511980 : $$ = $2; : } : | case_expr : { $$ = $1; } : | func_expr : { $$ = $1; } 0.00 : 513471: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513478: 4c 8b 30 mov (%rax),%r14 : | select_with_parens %prec UMINUS 0.00 : 51347b: e9 00 e5 ff ff jmpq 511980 : } : else : $$ = $2; : } : | case_expr : { $$ = $1; } 0.00 : 513480: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513487: 4c 8b 36 mov (%rsi),%r14 : | func_expr 0.00 : 51348a: e9 f1 e4 ff ff jmpq 511980 : else : $$ = (Node *) p; : } : | '(' a_expr ')' opt_indirection : { : if ($4) 0.00 : 51348f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513496: 48 83 3a 00 cmpq $0x0,(%rdx) 0.00 : 51349a: 0f 84 9b 5f 01 00 je 52943b : { : A_Indirection *n = makeNode(A_Indirection); 0.00 : 5134a0: 48 8b 3d b9 73 6a 00 mov 0x6a73b9(%rip),%rdi # bba860 0.00 : 5134a7: be 18 00 00 00 mov $0x18,%esi 0.00 : 5134ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5134b3: e8 58 59 28 00 callq 798e10 0.00 : 5134b8: c7 00 8b 03 00 00 movl $0x38b,(%rax) : n->arg = $2; 0.00 : 5134be: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : | '(' a_expr ')' opt_indirection : { : if ($4) : { : A_Indirection *n = makeNode(A_Indirection); 0.00 : 5134c5: 48 89 c3 mov %rax,%rbx : n->arg = $2; : n->indirection = check_indirection($4, yyscanner); : $$ = (Node *)n; 0.00 : 5134c8: 49 89 de mov %rbx,%r14 : | '(' a_expr ')' opt_indirection : { : if ($4) : { : A_Indirection *n = makeNode(A_Indirection); : n->arg = $2; 0.00 : 5134cb: 48 8b 41 f0 mov -0x10(%rcx),%rax 0.00 : 5134cf: 48 89 43 08 mov %rax,0x8(%rbx) : n->indirection = check_indirection($4, yyscanner); 0.00 : 5134d3: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5134da: 48 8b 39 mov (%rcx),%rdi 0.00 : 5134dd: e8 de a8 ff ff callq 50ddc0 0.00 : 5134e2: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5134e6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5134ed: e9 8e e4 ff ff jmpq 511980 : */ : c_expr: columnref { $$ = $1; } : | AexprConst { $$ = $1; } : | PARAM opt_indirection : { : ParamRef *p = makeNode(ParamRef); 0.00 : 5134f2: 48 8b 3d 67 73 6a 00 mov 0x6a7367(%rip),%rdi # bba860 0.00 : 5134f9: be 0c 00 00 00 mov $0xc,%esi 0.00 : 5134fe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513505: e8 16 5b 28 00 callq 799020 0.00 : 51350a: c7 00 86 03 00 00 movl $0x386,(%rax) : p->number = $1; 0.00 : 513510: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->arg = (Node *) p; : n->indirection = check_indirection($2, yyscanner); : $$ = (Node *) n; : } : else : $$ = (Node *) p; 0.00 : 513517: 49 89 c6 mov %rax,%r14 : c_expr: columnref { $$ = $1; } : | AexprConst { $$ = $1; } : | PARAM opt_indirection : { : ParamRef *p = makeNode(ParamRef); : p->number = $1; 0.00 : 51351a: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 51351d: 89 50 04 mov %edx,0x4(%rax) : p->location = @1; 0.00 : 513520: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513527: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 51352a: 89 50 08 mov %edx,0x8(%rax) : if ($2) 0.00 : 51352d: 48 83 3b 00 cmpq $0x0,(%rbx) 0.00 : 513531: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513538: 0f 84 42 e4 ff ff je 511980 : { : A_Indirection *n = makeNode(A_Indirection); 0.00 : 51353e: 48 8b 3d 1b 73 6a 00 mov 0x6a731b(%rip),%rdi # bba860 0.00 : 513545: be 18 00 00 00 mov $0x18,%esi 0.00 : 51354a: e8 c1 58 28 00 callq 798e10 0.00 : 51354f: c7 00 8b 03 00 00 movl $0x38b,(%rax) : n->arg = (Node *) p; 0.00 : 513555: 4c 89 70 08 mov %r14,0x8(%rax) : ParamRef *p = makeNode(ParamRef); : p->number = $1; : p->location = @1; : if ($2) : { : A_Indirection *n = makeNode(A_Indirection); 0.00 : 513559: 48 89 c3 mov %rax,%rbx : n->arg = (Node *) p; : n->indirection = check_indirection($2, yyscanner); 0.00 : 51355c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513563: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi : $$ = (Node *) n; 0.00 : 51356a: 49 89 de mov %rbx,%r14 : p->location = @1; : if ($2) : { : A_Indirection *n = makeNode(A_Indirection); : n->arg = (Node *) p; : n->indirection = check_indirection($2, yyscanner); 0.00 : 51356d: 48 8b 38 mov (%rax),%rdi 0.00 : 513570: e8 4b a8 ff ff callq 50ddc0 0.00 : 513575: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 513579: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513580: e9 fb e3 ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); : } : | b_expr IS DOCUMENT_P %prec IS : { : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513585: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51358c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 513593: 31 f6 xor %esi,%esi 0.00 : 513595: 8b 5a fc mov -0x4(%rdx),%ebx 0.00 : 513598: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51359c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5135a3: e8 a8 e2 0c 00 callq 5e1850 0.00 : 5135a8: 41 89 d8 mov %ebx,%r8d 0.00 : 5135ab: 48 89 c1 mov %rax,%rcx 0.00 : 5135ae: 31 d2 xor %edx,%edx 0.00 : 5135b0: 31 f6 xor %esi,%esi 0.00 : 5135b2: bf 07 00 00 00 mov $0x7,%edi 0.00 : 5135b7: e8 34 d5 ff ff callq 510af0 : list_make1($1), @2); : } : | b_expr IS NOT DOCUMENT_P %prec IS 0.00 : 5135bc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); : } : | b_expr IS DOCUMENT_P %prec IS : { : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 5135c3: 49 89 c6 mov %rax,%r14 : list_make1($1), @2); : } : | b_expr IS NOT DOCUMENT_P %prec IS 0.00 : 5135c6: e9 b5 e3 ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); : } : | b_expr IS NOT OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); 0.00 : 5135cb: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5135d2: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5135d9: bf 05 00 00 00 mov $0x5,%edi 0.00 : 5135de: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 5135e2: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 5135e6: be d3 78 89 00 mov $0x8978d3,%esi 0.00 : 5135eb: 44 8b 40 ec mov -0x14(%rax),%r8d 0.00 : 5135ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5135f6: e8 75 e4 0d 00 callq 5f1a70 : } : | b_expr IS DOCUMENT_P %prec IS 0.00 : 5135fb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); : } : | b_expr IS NOT OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); 0.00 : 513602: 49 89 c6 mov %rax,%r14 : } : | b_expr IS DOCUMENT_P %prec IS 0.00 : 513605: e9 76 e3 ff ff jmpq 511980 : "=", $1, $6, @2), : @2); : } : | b_expr IS OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); 0.00 : 51360a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513611: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513618: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 51361d: bf 05 00 00 00 mov $0x5,%edi 0.00 : 513622: 48 8b 48 f8 mov -0x8(%rax),%rcx 0.00 : 513626: 48 8b 50 d8 mov -0x28(%rax),%rdx 0.00 : 51362a: 44 8b 43 f0 mov -0x10(%rbx),%r8d 0.00 : 51362e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513635: e8 36 e4 0d 00 callq 5f1a70 : } : | b_expr IS NOT OF '(' type_list ')' %prec IS 0.00 : 51363a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : "=", $1, $6, @2), : @2); : } : | b_expr IS OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); 0.00 : 513641: 49 89 c6 mov %rax,%r14 : } : | b_expr IS NOT OF '(' type_list ')' %prec IS 0.00 : 513644: e9 37 e3 ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); : } : | b_expr IS NOT DISTINCT FROM b_expr %prec IS : { : $$ = makeNotExpr((Node *) makeSimpleA_Expr(AEXPR_DISTINCT, 0.00 : 513649: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513650: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 513657: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 51365c: bf 03 00 00 00 mov $0x3,%edi 0.00 : 513661: 8b 58 f0 mov -0x10(%rax),%ebx 0.00 : 513664: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 513668: 48 8b 09 mov (%rcx),%rcx 0.00 : 51366b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513672: 41 89 d8 mov %ebx,%r8d 0.00 : 513675: e8 f6 e3 0d 00 callq 5f1a70 0.00 : 51367a: 89 de mov %ebx,%esi 0.00 : 51367c: 48 89 c7 mov %rax,%rdi 0.00 : 51367f: e8 1c dd ff ff callq 5113a0 : "=", $1, $6, @2), : @2); : } : | b_expr IS OF '(' type_list ')' %prec IS 0.00 : 513684: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); : } : | b_expr IS NOT DISTINCT FROM b_expr %prec IS : { : $$ = makeNotExpr((Node *) makeSimpleA_Expr(AEXPR_DISTINCT, 0.00 : 51368b: 49 89 c6 mov %rax,%r14 : "=", $1, $6, @2), : @2); : } : | b_expr IS OF '(' type_list ')' %prec IS 0.00 : 51368e: e9 ed e2 ff ff jmpq 511980 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | b_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : | b_expr IS DISTINCT FROM b_expr %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); 0.00 : 513693: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51369a: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5136a1: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 5136a6: bf 03 00 00 00 mov $0x3,%edi 0.00 : 5136ab: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 5136af: 44 8b 43 f4 mov -0xc(%rbx),%r8d 0.00 : 5136b3: 48 8b 09 mov (%rcx),%rcx 0.00 : 5136b6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5136bd: e8 ae e3 0d 00 callq 5f1a70 : } : | b_expr IS NOT DISTINCT FROM b_expr %prec IS 0.00 : 5136c2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | b_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : | b_expr IS DISTINCT FROM b_expr %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); 0.00 : 5136c9: 49 89 c6 mov %rax,%r14 : } : | b_expr IS NOT DISTINCT FROM b_expr %prec IS 0.00 : 5136cc: e9 af e2 ff ff jmpq 511980 : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | b_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } 0.00 : 5136d1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5136d8: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5136df: 31 ff xor %edi,%edi 0.00 : 5136e1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5136e8: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5136ec: 44 8b 03 mov (%rbx),%r8d 0.00 : 5136ef: 31 c9 xor %ecx,%ecx 0.00 : 5136f1: 48 8b 30 mov (%rax),%rsi 0.00 : 5136f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5136fb: e8 e0 e2 0d 00 callq 5f19e0 : | b_expr IS DISTINCT FROM b_expr %prec IS 0.00 : 513700: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | b_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } 0.00 : 513707: 49 89 c6 mov %rax,%r14 : | b_expr IS DISTINCT FROM b_expr %prec IS 0.00 : 51370a: e9 71 e2 ff ff jmpq 511980 : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } 0.00 : 51370f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513716: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51371d: 31 d2 xor %edx,%edx 0.00 : 51371f: 31 ff xor %edi,%edi 0.00 : 513721: 48 8b 73 f8 mov -0x8(%rbx),%rsi 0.00 : 513725: 44 8b 40 fc mov -0x4(%rax),%r8d 0.00 : 513729: 48 8b 0b mov (%rbx),%rcx 0.00 : 51372c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513733: e8 a8 e2 0d 00 callq 5f19e0 : | b_expr qual_Op %prec POSTFIXOP 0.00 : 513738: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } 0.00 : 51373f: 49 89 c6 mov %rax,%r14 : | b_expr qual_Op %prec POSTFIXOP 0.00 : 513742: e9 39 e2 ff ff jmpq 511980 : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } 0.00 : 513747: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51374e: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 513755: 31 ff xor %edi,%edi 0.00 : 513757: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 51375b: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 51375f: 48 8b 70 f8 mov -0x8(%rax),%rsi 0.00 : 513763: 48 8b 08 mov (%rax),%rcx 0.00 : 513766: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51376d: e8 6e e2 0d 00 callq 5f19e0 : | qual_Op b_expr %prec Op 0.00 : 513772: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : | b_expr qual_Op b_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } 0.00 : 513779: 49 89 c6 mov %rax,%r14 : | qual_Op b_expr %prec Op 0.00 : 51377c: e9 ff e1 ff ff jmpq 511980 : * Note: productions that refer recursively to a_expr or b_expr mostly : * cannot appear here. However, it's OK to refer to a_exprs that occur : * inside parentheses, such as function arguments; that cannot introduce : * ambiguity to the b_expr syntax. : */ : c_expr: columnref { $$ = $1; } 0.00 : 513781: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513788: 4c 8b 32 mov (%rdx),%r14 : | AexprConst { $$ = $1; } 0.00 : 51378b: e9 f0 e1 ff ff jmpq 511980 : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, : list_make1($1), @2); : } : | b_expr IS NOT DOCUMENT_P %prec IS : { : $$ = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513790: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513797: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51379e: 8b 5e f8 mov -0x8(%rsi),%ebx 0.00 : 5137a1: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 5137a5: 31 f6 xor %esi,%esi 0.00 : 5137a7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5137ae: e8 9d e0 0c 00 callq 5e1850 0.00 : 5137b3: 41 89 d8 mov %ebx,%r8d 0.00 : 5137b6: 48 89 c1 mov %rax,%rcx 0.00 : 5137b9: 31 d2 xor %edx,%edx 0.00 : 5137bb: 31 f6 xor %esi,%esi 0.00 : 5137bd: bf 07 00 00 00 mov $0x7,%edi 0.00 : 5137c2: e8 29 d3 ff ff callq 510af0 0.00 : 5137c7: 89 de mov %ebx,%esi 0.00 : 5137c9: 48 89 c7 mov %rax,%rdi 0.00 : 5137cc: e8 cf db ff ff callq 5113a0 : list_make1($1), @2), : @2); : } : ; 0.00 : 5137d1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, : list_make1($1), @2); : } : | b_expr IS NOT DOCUMENT_P %prec IS : { : $$ = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 5137d8: 49 89 c6 mov %rax,%r14 : list_make1($1), @2), : @2); : } : ; 0.00 : 5137db: e9 a0 e1 ff ff jmpq 511980 : * cannot appear here. However, it's OK to refer to a_exprs that occur : * inside parentheses, such as function arguments; that cannot introduce : * ambiguity to the b_expr syntax. : */ : c_expr: columnref { $$ = $1; } : | AexprConst { $$ = $1; } 0.00 : 5137e0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5137e7: 4c 8b 31 mov (%rcx),%r14 : | PARAM opt_indirection 0.00 : 5137ea: e9 91 e1 ff ff jmpq 511980 : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } 0.00 : 5137ef: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5137f6: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5137fd: 31 ff xor %edi,%edi 0.00 : 5137ff: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 513803: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 513807: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 51380c: 48 8b 0b mov (%rbx),%rcx 0.00 : 51380f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513816: e8 55 e2 0d 00 callq 5f1a70 : | b_expr qual_Op b_expr %prec Op 0.00 : 51381b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | b_expr '=' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } 0.00 : 513822: 49 89 c6 mov %rax,%r14 : | b_expr qual_Op b_expr %prec Op 0.00 : 513825: e9 56 e1 ff ff jmpq 511980 : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } 0.00 : 51382a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513831: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 513838: be d4 78 89 00 mov $0x8978d4,%esi 0.00 : 51383d: 31 ff xor %edi,%edi 0.00 : 51383f: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 513843: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 513847: 48 8b 08 mov (%rax),%rcx 0.00 : 51384a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513851: e8 1a e2 0d 00 callq 5f1a70 : | b_expr '=' b_expr 0.00 : 513856: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | b_expr '>' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } 0.00 : 51385d: 49 89 c6 mov %rax,%r14 : | b_expr '=' b_expr 0.00 : 513860: e9 1b e1 ff ff jmpq 511980 : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } 0.00 : 513865: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51386c: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513873: 31 ff xor %edi,%edi 0.00 : 513875: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 513879: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51387d: be 1b 97 7c 00 mov $0x7c971b,%esi 0.00 : 513882: 48 8b 0b mov (%rbx),%rcx 0.00 : 513885: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51388c: e8 df e1 0d 00 callq 5f1a70 : | b_expr '>' b_expr 0.00 : 513891: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | b_expr '<' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } 0.00 : 513898: 49 89 c6 mov %rax,%r14 : | b_expr '>' b_expr 0.00 : 51389b: e9 e0 e0 ff ff jmpq 511980 : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } 0.00 : 5138a0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5138a7: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5138ae: be 70 3d 8c 00 mov $0x8c3d70,%esi 0.00 : 5138b3: 31 ff xor %edi,%edi 0.00 : 5138b5: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 5138b9: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 5138bd: 48 8b 08 mov (%rax),%rcx 0.00 : 5138c0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5138c7: e8 a4 e1 0d 00 callq 5f1a70 : | b_expr '<' b_expr 0.00 : 5138cc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | b_expr '^' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } 0.00 : 5138d3: 49 89 c6 mov %rax,%r14 : | b_expr '<' b_expr 0.00 : 5138d6: e9 a5 e0 ff ff jmpq 511980 : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } 0.00 : 5138db: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5138e2: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5138e9: 31 ff xor %edi,%edi 0.00 : 5138eb: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 5138ef: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 5138f3: be ce 6e 8c 00 mov $0x8c6ece,%esi 0.00 : 5138f8: 48 8b 0b mov (%rbx),%rcx 0.00 : 5138fb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513902: e8 69 e1 0d 00 callq 5f1a70 : | b_expr '^' b_expr 0.00 : 513907: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | b_expr '%' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } 0.00 : 51390e: 49 89 c6 mov %rax,%r14 : | b_expr '^' b_expr 0.00 : 513911: e9 6a e0 ff ff jmpq 511980 : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } 0.00 : 513916: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51391d: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 513924: be 8a e7 87 00 mov $0x87e78a,%esi 0.00 : 513929: 31 ff xor %edi,%edi 0.00 : 51392b: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 51392f: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 513933: 48 8b 08 mov (%rax),%rcx 0.00 : 513936: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51393d: e8 2e e1 0d 00 callq 5f1a70 : | b_expr '%' b_expr 0.00 : 513942: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | b_expr '/' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } 0.00 : 513949: 49 89 c6 mov %rax,%r14 : | b_expr '%' b_expr 0.00 : 51394c: e9 2f e0 ff ff jmpq 511980 : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } 0.00 : 513951: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513958: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51395f: 31 ff xor %edi,%edi 0.00 : 513961: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 513965: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 513969: be a3 76 7c 00 mov $0x7c76a3,%esi 0.00 : 51396e: 48 8b 0b mov (%rbx),%rcx 0.00 : 513971: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513978: e8 f3 e0 0d 00 callq 5f1a70 : | b_expr '/' b_expr 0.00 : 51397d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | b_expr '*' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } 0.00 : 513984: 49 89 c6 mov %rax,%r14 : | b_expr '/' b_expr 0.00 : 513987: e9 f4 df ff ff jmpq 511980 : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } 0.00 : 51398c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513993: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51399a: be ca 6e 8c 00 mov $0x8c6eca,%esi 0.00 : 51399f: 31 ff xor %edi,%edi 0.00 : 5139a1: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 5139a5: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 5139a9: 48 8b 08 mov (%rax),%rcx 0.00 : 5139ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5139b3: e8 b8 e0 0d 00 callq 5f1a70 : | b_expr '*' b_expr 0.00 : 5139b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | b_expr '-' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } 0.00 : 5139bf: 49 89 c6 mov %rax,%r14 : | b_expr '*' b_expr 0.00 : 5139c2: e9 b9 df ff ff jmpq 511980 : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } 0.00 : 5139c7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5139ce: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5139d5: be 19 97 7c 00 mov $0x7c9719,%esi 0.00 : 5139da: 31 ff xor %edi,%edi 0.00 : 5139dc: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5139e0: 44 8b 43 fc mov -0x4(%rbx),%r8d 0.00 : 5139e4: 48 8b 09 mov (%rcx),%rcx 0.00 : 5139e7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5139ee: e8 7d e0 0d 00 callq 5f1a70 : | b_expr '-' b_expr 0.00 : 5139f3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | b_expr '+' b_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } 0.00 : 5139fa: 49 89 c6 mov %rax,%r14 : | b_expr '-' b_expr 0.00 : 5139fd: e9 7e df ff ff jmpq 511980 : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } 0.00 : 513a02: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513a09: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513a10: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 513a13: 48 8b 3a mov (%rdx),%rdi 0.00 : 513a16: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513a1d: e8 6e d3 ff ff callq 510d90 : | b_expr '+' b_expr 0.00 : 513a22: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' b_expr %prec UMINUS : { $$ = doNegate($2, @1); } 0.00 : 513a29: 49 89 c6 mov %rax,%r14 : | b_expr '+' b_expr 0.00 : 513a2c: e9 4f df ff ff jmpq 511980 : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } 0.00 : 513a31: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513a38: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513a3f: 31 d2 xor %edx,%edx 0.00 : 513a41: 31 ff xor %edi,%edi 0.00 : 513a43: 48 8b 0e mov (%rsi),%rcx 0.00 : 513a46: 44 8b 43 fc mov -0x4(%rbx),%r8d 0.00 : 513a4a: be 19 97 7c 00 mov $0x7c9719,%esi 0.00 : 513a4f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513a56: e8 15 e0 0d 00 callq 5f1a70 : | '-' b_expr %prec UMINUS 0.00 : 513a5b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | '+' b_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } 0.00 : 513a62: 49 89 c6 mov %rax,%r14 : | '-' b_expr %prec UMINUS 0.00 : 513a65: e9 16 df ff ff jmpq 511980 : * just eliminate all the boolean-keyword-operator productions from b_expr. : */ : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 513a6a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 513a71: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 513a78: be 20 00 00 00 mov $0x20,%esi 0.00 : 513a7d: 48 8b 3d dc 6d 6a 00 mov 0x6a6ddc(%rip),%rdi # bba860 : * just eliminate all the boolean-keyword-operator productions from b_expr. : */ : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 513a84: 8b 5a fc mov -0x4(%rdx),%ebx 0.00 : 513a87: 4c 8b 21 mov (%rcx),%r12 0.00 : 513a8a: 4c 8b 69 f0 mov -0x10(%rcx),%r13 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 513a8e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513a95: e8 76 53 28 00 callq 798e10 0.00 : 513a9a: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; : n->typeName = typename; 0.00 : 513aa0: 4c 89 60 10 mov %r12,0x10(%rax) : * just eliminate all the boolean-keyword-operator productions from b_expr. : */ : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 513aa4: 49 89 c6 mov %rax,%r14 : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; 0.00 : 513aa7: 4c 89 68 08 mov %r13,0x8(%rax) : n->typeName = typename; : n->location = location; 0.00 : 513aab: 89 58 18 mov %ebx,0x18(%rax) : */ : b_expr: c_expr : { $$ = $1; } : | b_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | '+' b_expr %prec UMINUS 0.00 : 513aae: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513ab5: e9 c6 de ff ff jmpq 511980 : * Presently, AND, NOT, IS, and IN are the a_expr keywords that would : * cause trouble in the places where b_expr is used. For simplicity, we : * just eliminate all the boolean-keyword-operator productions from b_expr. : */ : b_expr: c_expr : { $$ = $1; } 0.00 : 513aba: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513ac1: 4c 8b 30 mov (%rax),%r14 : | b_expr TYPECAST Typename 0.00 : 513ac4: e9 b7 de ff ff jmpq 511980 : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, : list_make1($1), @2); : } : | a_expr IS NOT DOCUMENT_P %prec IS : { : $$ = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513ac9: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 513ad0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513ad7: 8b 59 f8 mov -0x8(%rcx),%ebx 0.00 : 513ada: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 513ade: 31 f6 xor %esi,%esi 0.00 : 513ae0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513ae7: e8 64 dd 0c 00 callq 5e1850 0.00 : 513aec: 41 89 d8 mov %ebx,%r8d 0.00 : 513aef: 48 89 c1 mov %rax,%rcx 0.00 : 513af2: 31 d2 xor %edx,%edx 0.00 : 513af4: 31 f6 xor %esi,%esi 0.00 : 513af6: bf 07 00 00 00 mov $0x7,%edi 0.00 : 513afb: e8 f0 cf ff ff callq 510af0 0.00 : 513b00: 89 de mov %ebx,%esi 0.00 : 513b02: 48 89 c7 mov %rax,%rdi 0.00 : 513b05: e8 96 d8 ff ff callq 5113a0 : list_make1($1), @2), : @2); : } : ; 0.00 : 513b0a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, : list_make1($1), @2); : } : | a_expr IS NOT DOCUMENT_P %prec IS : { : $$ = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513b11: 49 89 c6 mov %rax,%r14 : list_make1($1), @2), : @2); : } : ; 0.00 : 513b14: e9 67 de ff ff jmpq 511980 : errmsg("UNIQUE predicate is not yet implemented"), : parser_errposition(@1))); : } : | a_expr IS DOCUMENT_P %prec IS : { : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513b19: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513b20: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513b27: 31 f6 xor %esi,%esi 0.00 : 513b29: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 513b2d: 8b 58 fc mov -0x4(%rax),%ebx 0.00 : 513b30: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513b37: e8 14 dd 0c 00 callq 5e1850 0.00 : 513b3c: 41 89 d8 mov %ebx,%r8d 0.00 : 513b3f: 48 89 c1 mov %rax,%rcx 0.00 : 513b42: 31 d2 xor %edx,%edx 0.00 : 513b44: 31 f6 xor %esi,%esi 0.00 : 513b46: bf 07 00 00 00 mov $0x7,%edi 0.00 : 513b4b: e8 a0 cf ff ff callq 510af0 : list_make1($1), @2); : } : | a_expr IS NOT DOCUMENT_P %prec IS 0.00 : 513b50: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : errmsg("UNIQUE predicate is not yet implemented"), : parser_errposition(@1))); : } : | a_expr IS DOCUMENT_P %prec IS : { : $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, 0.00 : 513b57: 49 89 c6 mov %rax,%r14 : list_make1($1), @2); : } : | a_expr IS NOT DOCUMENT_P %prec IS 0.00 : 513b5a: e9 21 de ff ff jmpq 511980 : * select into a node, then transforming the target expressions : * from whatever they are into count(*), and testing the : * entire result equal to one. : * But, will probably implement a separate node in the executor. : */ : ereport(ERROR, 0.00 : 513b5f: 45 31 c0 xor %r8d,%r8d 0.00 : 513b62: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 513b67: ba 79 2c 00 00 mov $0x2c79,%edx 0.00 : 513b6c: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 513b71: bf 14 00 00 00 mov $0x14,%edi 0.00 : 513b76: e8 45 6f 26 00 callq 77aac0 0.00 : 513b7b: 84 c0 test %al,%al 0.00 : 513b7d: 0f 84 24 e4 ff ff je 511fa7 0.00 : 513b83: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513b8a: 8b 7e fc mov -0x4(%rsi),%edi 0.00 : 513b8d: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 513b94: e8 07 a1 ff ff callq 50dca0 0.00 : 513b99: bf 18 a4 7c 00 mov $0x7ca418,%edi 0.00 : 513b9e: 41 89 c4 mov %eax,%r12d 0.00 : 513ba1: 31 c0 xor %eax,%eax 0.00 : 513ba3: e8 f8 8c 26 00 callq 77c8a0 0.00 : 513ba8: bf 40 04 00 00 mov $0x440,%edi 0.00 : 513bad: 89 c3 mov %eax,%ebx 0.00 : 513baf: e9 ac 0c 01 00 jmpq 524860 : n->location = @2; : $$ = (Node *)n; : } : | a_expr subquery_Op sub_type '(' a_expr ')' %prec Op : { : if ($3 == ANY_SUBLINK) 0.00 : 513bb4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513bbb: 83 7e e8 02 cmpl $0x2,-0x18(%rsi) 0.00 : 513bbf: 0f 84 3f 58 01 00 je 529404 : $$ = (Node *) makeA_Expr(AEXPR_OP_ANY, $2, $1, $5, @2); : else : $$ = (Node *) makeA_Expr(AEXPR_OP_ALL, $2, $1, $5, @2); 0.00 : 513bc5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513bcc: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513bd3: bf 02 00 00 00 mov $0x2,%edi 0.00 : 513bd8: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 513bdc: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 513be0: 44 8b 43 f0 mov -0x10(%rbx),%r8d 0.00 : 513be4: 48 8b 76 e0 mov -0x20(%rsi),%rsi 0.00 : 513be8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513bef: e8 ec dd 0d 00 callq 5f19e0 0.00 : 513bf4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513bfb: 49 89 c6 mov %rax,%r14 0.00 : 513bfe: e9 7d dd ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); : } : | a_expr IS NOT OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); 0.00 : 513c03: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513c0a: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513c11: bf 05 00 00 00 mov $0x5,%edi 0.00 : 513c16: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 513c1a: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 513c1e: be d3 78 89 00 mov $0x8978d3,%esi 0.00 : 513c23: 44 8b 40 ec mov -0x14(%rax),%r8d 0.00 : 513c27: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513c2e: e8 3d de 0d 00 callq 5f1a70 : } : /* 0.00 : 513c33: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); : } : | a_expr IS NOT OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); 0.00 : 513c3a: 49 89 c6 mov %rax,%r14 : } : /* 0.00 : 513c3d: e9 3e dd ff ff jmpq 511980 : @2), : @2); : } : | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN : { : $$ = makeAndExpr( 0.00 : 513c42: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513c49: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513c50: be d4 78 89 00 mov $0x8978d4,%esi 0.00 : 513c55: 31 ff xor %edi,%edi 0.00 : 513c57: 44 8b 42 ec mov -0x14(%rdx),%r8d 0.00 : 513c5b: 48 8b 4b f0 mov -0x10(%rbx),%rcx 0.00 : 513c5f: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 513c63: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513c6a: e8 01 de 0d 00 callq 5f1a70 0.00 : 513c6f: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513c76: 48 89 c3 mov %rax,%rbx 0.00 : 513c79: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513c80: 31 ff xor %edi,%edi 0.00 : 513c82: 44 8b 66 ec mov -0x14(%rsi),%r12d 0.00 : 513c86: 48 8b 08 mov (%rax),%rcx 0.00 : 513c89: be 1b 97 7c 00 mov $0x7c971b,%esi 0.00 : 513c8e: 48 8b 50 d0 mov -0x30(%rax),%rdx 0.00 : 513c92: 45 89 e0 mov %r12d,%r8d 0.00 : 513c95: e8 d6 dd 0d 00 callq 5f1a70 0.00 : 513c9a: 44 89 e2 mov %r12d,%edx 0.00 : 513c9d: 48 89 de mov %rbx,%rsi 0.00 : 513ca0: 48 89 c7 mov %rax,%rdi 0.00 : 513ca3: e8 f8 d5 ff ff callq 5112a0 0.00 : 513ca8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513caf: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513cb6: be d4 78 89 00 mov $0x8978d4,%esi 0.00 : 513cbb: 31 ff xor %edi,%edi 0.00 : 513cbd: 49 89 c5 mov %rax,%r13 0.00 : 513cc0: 44 8b 42 ec mov -0x14(%rdx),%r8d 0.00 : 513cc4: 48 8b 0b mov (%rbx),%rcx 0.00 : 513cc7: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 513ccb: e8 a0 dd 0d 00 callq 5f1a70 0.00 : 513cd0: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513cd7: 49 89 c4 mov %rax,%r12 0.00 : 513cda: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513ce1: 31 ff xor %edi,%edi 0.00 : 513ce3: 8b 5e ec mov -0x14(%rsi),%ebx 0.00 : 513ce6: 48 8b 48 f0 mov -0x10(%rax),%rcx 0.00 : 513cea: be 1b 97 7c 00 mov $0x7c971b,%esi 0.00 : 513cef: 48 8b 50 d0 mov -0x30(%rax),%rdx 0.00 : 513cf3: 41 89 d8 mov %ebx,%r8d 0.00 : 513cf6: e8 75 dd 0d 00 callq 5f1a70 0.00 : 513cfb: 89 da mov %ebx,%edx 0.00 : 513cfd: 48 89 c7 mov %rax,%rdi 0.00 : 513d00: 4c 89 e6 mov %r12,%rsi 0.00 : 513d03: e8 98 d5 ff ff callq 5112a0 0.00 : 513d08: 89 da mov %ebx,%edx 0.00 : 513d0a: 48 89 c7 mov %rax,%rdi 0.00 : 513d0d: 4c 89 ee mov %r13,%rsi 0.00 : 513d10: e8 0b d6 ff ff callq 511320 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $7, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $5, @2), : @2), : @2); : } : | a_expr IN_P in_expr 0.00 : 513d15: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : @2), : @2); : } : | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN : { : $$ = makeAndExpr( 0.00 : 513d1c: 49 89 c6 mov %rax,%r14 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $7, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $5, @2), : @2), : @2); : } : | a_expr IN_P in_expr 0.00 : 513d1f: e9 5c dc ff ff jmpq 511980 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7, @2), : @2); : } : | a_expr BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN : { : $$ = makeOrExpr( 0.00 : 513d24: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513d2b: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513d32: be 44 97 7c 00 mov $0x7c9744,%esi 0.00 : 513d37: 31 ff xor %edi,%edi 0.00 : 513d39: 44 8b 42 f0 mov -0x10(%rdx),%r8d 0.00 : 513d3d: 48 8b 4b f0 mov -0x10(%rbx),%rcx 0.00 : 513d41: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 513d45: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513d4c: e8 1f dd 0d 00 callq 5f1a70 0.00 : 513d51: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513d58: 48 89 c3 mov %rax,%rbx 0.00 : 513d5b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513d62: 31 ff xor %edi,%edi 0.00 : 513d64: 44 8b 66 f0 mov -0x10(%rsi),%r12d 0.00 : 513d68: 48 8b 08 mov (%rax),%rcx 0.00 : 513d6b: be 9f 76 7c 00 mov $0x7c769f,%esi 0.00 : 513d70: 48 8b 50 d8 mov -0x28(%rax),%rdx 0.00 : 513d74: 45 89 e0 mov %r12d,%r8d 0.00 : 513d77: e8 f4 dc 0d 00 callq 5f1a70 0.00 : 513d7c: 44 89 e2 mov %r12d,%edx 0.00 : 513d7f: 48 89 de mov %rbx,%rsi 0.00 : 513d82: 48 89 c7 mov %rax,%rdi 0.00 : 513d85: e8 96 d5 ff ff callq 511320 0.00 : 513d8a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513d91: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513d98: be 44 97 7c 00 mov $0x7c9744,%esi 0.00 : 513d9d: 31 ff xor %edi,%edi 0.00 : 513d9f: 49 89 c5 mov %rax,%r13 0.00 : 513da2: 44 8b 42 f0 mov -0x10(%rdx),%r8d 0.00 : 513da6: 48 8b 0b mov (%rbx),%rcx 0.00 : 513da9: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 513dad: e8 be dc 0d 00 callq 5f1a70 0.00 : 513db2: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513db9: 49 89 c4 mov %rax,%r12 0.00 : 513dbc: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513dc3: 31 ff xor %edi,%edi 0.00 : 513dc5: 8b 5e f0 mov -0x10(%rsi),%ebx 0.00 : 513dc8: 48 8b 48 f0 mov -0x10(%rax),%rcx 0.00 : 513dcc: be 9f 76 7c 00 mov $0x7c769f,%esi 0.00 : 513dd1: 48 8b 50 d8 mov -0x28(%rax),%rdx 0.00 : 513dd5: 41 89 d8 mov %ebx,%r8d 0.00 : 513dd8: e8 93 dc 0d 00 callq 5f1a70 0.00 : 513ddd: 89 da mov %ebx,%edx 0.00 : 513ddf: 48 89 c7 mov %rax,%rdi 0.00 : 513de2: 4c 89 e6 mov %r12,%rsi 0.00 : 513de5: e8 36 d5 ff ff callq 511320 0.00 : 513dea: 89 da mov %ebx,%edx 0.00 : 513dec: 48 89 c7 mov %rax,%rdi 0.00 : 513def: 4c 89 ee mov %r13,%rsi 0.00 : 513df2: e8 a9 d4 ff ff callq 5112a0 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $6, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $4, @2), : @2), : @2); : } : | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN 0.00 : 513df7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7, @2), : @2); : } : | a_expr BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN : { : $$ = makeOrExpr( 0.00 : 513dfe: 49 89 c6 mov %rax,%r14 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $6, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $4, @2), : @2), : @2); : } : | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN 0.00 : 513e01: e9 7a db ff ff jmpq 511980 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6, @2), : @2); : } : | a_expr NOT BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN : { : $$ = makeOrExpr( 0.00 : 513e06: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513e0d: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513e14: be d4 78 89 00 mov $0x8978d4,%esi 0.00 : 513e19: 31 ff xor %edi,%edi 0.00 : 513e1b: 44 8b 42 ec mov -0x14(%rdx),%r8d 0.00 : 513e1f: 48 8b 0b mov (%rbx),%rcx 0.00 : 513e22: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 513e26: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513e2d: e8 3e dc 0d 00 callq 5f1a70 0.00 : 513e32: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513e39: 49 89 c4 mov %rax,%r12 0.00 : 513e3c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513e43: 31 ff xor %edi,%edi 0.00 : 513e45: 8b 5e ec mov -0x14(%rsi),%ebx 0.00 : 513e48: 48 8b 48 f0 mov -0x10(%rax),%rcx 0.00 : 513e4c: be 1b 97 7c 00 mov $0x7c971b,%esi 0.00 : 513e51: 48 8b 50 d0 mov -0x30(%rax),%rdx 0.00 : 513e55: 41 89 d8 mov %ebx,%r8d 0.00 : 513e58: e8 13 dc 0d 00 callq 5f1a70 0.00 : 513e5d: 89 da mov %ebx,%edx 0.00 : 513e5f: 48 89 c7 mov %rax,%rdi 0.00 : 513e62: 4c 89 e6 mov %r12,%rsi 0.00 : 513e65: e8 36 d4 ff ff callq 5112a0 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $5, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7, @2), : @2); : } : | a_expr BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN 0.00 : 513e6a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6, @2), : @2); : } : | a_expr NOT BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN : { : $$ = makeOrExpr( 0.00 : 513e71: 49 89 c6 mov %rax,%r14 : (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $5, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7, @2), : @2); : } : | a_expr BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN 0.00 : 513e74: e9 07 db ff ff jmpq 511980 : * issues make this difficult: : * http://archives.postgresql.org/pgsql-hackers/2008-08/msg01142.php : */ : | a_expr BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN : { : $$ = makeAndExpr( 0.00 : 513e79: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 513e80: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 513e87: be 44 97 7c 00 mov $0x7c9744,%esi 0.00 : 513e8c: 31 ff xor %edi,%edi 0.00 : 513e8e: 44 8b 42 f0 mov -0x10(%rdx),%r8d 0.00 : 513e92: 48 8b 0b mov (%rbx),%rcx 0.00 : 513e95: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 513e99: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513ea0: e8 cb db 0d 00 callq 5f1a70 0.00 : 513ea5: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 513eac: 49 89 c4 mov %rax,%r12 0.00 : 513eaf: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 513eb6: 31 ff xor %edi,%edi 0.00 : 513eb8: 8b 5e f0 mov -0x10(%rsi),%ebx 0.00 : 513ebb: 48 8b 48 f0 mov -0x10(%rax),%rcx 0.00 : 513ebf: be 9f 76 7c 00 mov $0x7c769f,%esi 0.00 : 513ec4: 48 8b 50 d8 mov -0x28(%rax),%rdx 0.00 : 513ec8: 41 89 d8 mov %ebx,%r8d 0.00 : 513ecb: e8 a0 db 0d 00 callq 5f1a70 0.00 : 513ed0: 89 da mov %ebx,%edx 0.00 : 513ed2: 48 89 c7 mov %rax,%rdi 0.00 : 513ed5: 4c 89 e6 mov %r12,%rsi 0.00 : 513ed8: e8 43 d4 ff ff callq 511320 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $4, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6, @2), : @2); : } : | a_expr NOT BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN 0.00 : 513edd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * issues make this difficult: : * http://archives.postgresql.org/pgsql-hackers/2008-08/msg01142.php : */ : | a_expr BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN : { : $$ = makeAndExpr( 0.00 : 513ee4: 49 89 c6 mov %rax,%r14 : (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $4, @2), : (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6, @2), : @2); : } : | a_expr NOT BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN 0.00 : 513ee7: e9 94 da ff ff jmpq 511980 : } : } : | a_expr NOT IN_P in_expr : { : /* in_expr returns a SubLink or a list of a_exprs */ : if (IsA($4, SubLink)) 0.00 : 513eec: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513ef3: 48 8b 1a mov (%rdx),%rbx 0.00 : 513ef6: 81 3b 3c 01 00 00 cmpl $0x13c,(%rbx) 0.00 : 513efc: 0f 84 a6 54 01 00 je 5293a8 : $$ = makeNotExpr((Node *) n, @2); : } : else : { : /* generate scalar NOT IN expression */ : $$ = (Node *) makeSimpleA_Expr(AEXPR_IN, "<>", $1, $4, @2); 0.00 : 513f02: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513f09: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513f10: 48 89 d9 mov %rbx,%rcx 0.00 : 513f13: bf 06 00 00 00 mov $0x6,%edi 0.00 : 513f18: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 513f1c: 44 8b 40 f8 mov -0x8(%rax),%r8d 0.00 : 513f20: be d3 78 89 00 mov $0x8978d3,%esi 0.00 : 513f25: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513f2c: e8 3f db 0d 00 callq 5f1a70 0.00 : 513f31: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513f38: 49 89 c6 mov %rax,%r14 0.00 : 513f3b: e9 40 da ff ff jmpq 511980 : @2); : } : | a_expr IN_P in_expr : { : /* in_expr returns a SubLink or a list of a_exprs */ : if (IsA($3, SubLink)) 0.00 : 513f40: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 513f47: 48 8b 1a mov (%rdx),%rbx 0.00 : 513f4a: 81 3b 3c 01 00 00 cmpl $0x13c,(%rbx) 0.00 : 513f50: 0f 84 66 53 01 00 je 5292bc : $$ = (Node *)n; : } : else : { : /* generate scalar IN expression */ : $$ = (Node *) makeSimpleA_Expr(AEXPR_IN, "=", $1, $3, @2); 0.00 : 513f56: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 513f5d: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 513f64: 48 89 d9 mov %rbx,%rcx 0.00 : 513f67: bf 06 00 00 00 mov $0x6,%edi 0.00 : 513f6c: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 513f70: 44 8b 40 fc mov -0x4(%rax),%r8d 0.00 : 513f74: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 513f79: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513f80: e8 eb da 0d 00 callq 5f1a70 0.00 : 513f85: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513f8c: 49 89 c6 mov %rax,%r14 0.00 : 513f8f: e9 ec d9 ff ff jmpq 511980 : $$ = (Node *) makeSimpleA_Expr(AEXPR_IN, "<>", $1, $4, @2); : } : } : | a_expr subquery_Op sub_type select_with_parens %prec Op : { : SubLink *n = makeNode(SubLink); 0.00 : 513f94: 48 8b 3d c5 68 6a 00 mov 0x6a68c5(%rip),%rdi # bba860 0.00 : 513f9b: be 30 00 00 00 mov $0x30,%esi 0.00 : 513fa0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 513fa7: e8 64 4e 28 00 callq 798e10 0.00 : 513fac: c7 00 3c 01 00 00 movl $0x13c,(%rax) : n->subLinkType = $3; 0.00 : 513fb2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->subLinkId = 0; : n->testexpr = $1; : n->operName = $2; : n->subselect = $4; : n->location = @2; : $$ = (Node *)n; 0.00 : 513fb9: 49 89 c6 mov %rax,%r14 : } : } : | a_expr subquery_Op sub_type select_with_parens %prec Op : { : SubLink *n = makeNode(SubLink); : n->subLinkType = $3; 0.00 : 513fbc: 8b 51 f8 mov -0x8(%rcx),%edx : n->subLinkId = 0; 0.00 : 513fbf: c7 40 08 00 00 00 00 movl $0x0,0x8(%rax) : } : } : | a_expr subquery_Op sub_type select_with_parens %prec Op : { : SubLink *n = makeNode(SubLink); : n->subLinkType = $3; 0.00 : 513fc6: 89 50 04 mov %edx,0x4(%rax) : n->subLinkId = 0; : n->testexpr = $1; 0.00 : 513fc9: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 513fcd: 48 89 50 10 mov %rdx,0x10(%rax) : n->operName = $2; 0.00 : 513fd1: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 513fd5: 48 89 50 18 mov %rdx,0x18(%rax) : n->subselect = $4; 0.00 : 513fd9: 48 8b 11 mov (%rcx),%rdx 0.00 : 513fdc: 48 89 50 20 mov %rdx,0x20(%rax) : n->location = @2; 0.00 : 513fe0: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 513fe7: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 513fea: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)n; : } : | a_expr subquery_Op sub_type '(' a_expr ')' %prec Op 0.00 : 513fed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 513ff4: e9 87 d9 ff ff jmpq 511980 : b->booltesttype = IS_UNKNOWN; : $$ = (Node *)b; : } : | a_expr IS NOT UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 513ff9: 48 8b 3d 60 68 6a 00 mov 0x6a6860(%rip),%rdi # bba860 0.00 : 514000: be 18 00 00 00 mov $0x18,%esi 0.00 : 514005: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51400c: e8 ff 4d 28 00 callq 798e10 0.00 : 514011: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 514017: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : b->booltesttype = IS_NOT_UNKNOWN; : $$ = (Node *)b; 0.00 : 51401e: 49 89 c6 mov %rax,%r14 : $$ = (Node *)b; : } : | a_expr IS NOT UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 514021: 48 8b 51 e8 mov -0x18(%rcx),%rdx : b->booltesttype = IS_NOT_UNKNOWN; 0.00 : 514025: c7 40 10 05 00 00 00 movl $0x5,0x10(%rax) : $$ = (Node *)b; : } : | a_expr IS NOT UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 51402c: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_NOT_UNKNOWN; : $$ = (Node *)b; : } : | a_expr IS DISTINCT FROM a_expr %prec IS 0.00 : 514030: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514037: e9 44 d9 ff ff jmpq 511980 : b->booltesttype = IS_NOT_FALSE; : $$ = (Node *)b; : } : | a_expr IS UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 51403c: 48 8b 3d 1d 68 6a 00 mov 0x6a681d(%rip),%rdi # bba860 0.00 : 514043: be 18 00 00 00 mov $0x18,%esi 0.00 : 514048: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51404f: e8 bc 4d 28 00 callq 798e10 0.00 : 514054: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 51405a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : b->booltesttype = IS_UNKNOWN; : $$ = (Node *)b; 0.00 : 514061: 49 89 c6 mov %rax,%r14 : $$ = (Node *)b; : } : | a_expr IS UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 514064: 48 8b 56 f0 mov -0x10(%rsi),%rdx : b->booltesttype = IS_UNKNOWN; 0.00 : 514068: c7 40 10 04 00 00 00 movl $0x4,0x10(%rax) : $$ = (Node *)b; : } : | a_expr IS UNKNOWN %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 51406f: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_UNKNOWN; : $$ = (Node *)b; : } : | a_expr IS NOT UNKNOWN %prec IS 0.00 : 514073: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51407a: e9 01 d9 ff ff jmpq 511980 : b->booltesttype = IS_FALSE; : $$ = (Node *)b; : } : | a_expr IS NOT FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 51407f: 48 8b 3d da 67 6a 00 mov 0x6a67da(%rip),%rdi # bba860 0.00 : 514086: be 18 00 00 00 mov $0x18,%esi 0.00 : 51408b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514092: e8 79 4d 28 00 callq 798e10 0.00 : 514097: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 51409d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : b->booltesttype = IS_NOT_FALSE; : $$ = (Node *)b; 0.00 : 5140a4: 49 89 c6 mov %rax,%r14 : $$ = (Node *)b; : } : | a_expr IS NOT FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5140a7: 48 8b 53 e8 mov -0x18(%rbx),%rdx : b->booltesttype = IS_NOT_FALSE; 0.00 : 5140ab: c7 40 10 03 00 00 00 movl $0x3,0x10(%rax) : $$ = (Node *)b; : } : | a_expr IS NOT FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5140b2: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_NOT_FALSE; : $$ = (Node *)b; : } : | a_expr IS UNKNOWN %prec IS 0.00 : 5140b6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5140bd: e9 be d8 ff ff jmpq 511980 : b->booltesttype = IS_NOT_TRUE; : $$ = (Node *)b; : } : | a_expr IS FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 5140c2: 48 8b 3d 97 67 6a 00 mov 0x6a6797(%rip),%rdi # bba860 0.00 : 5140c9: be 18 00 00 00 mov $0x18,%esi 0.00 : 5140ce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5140d5: e8 36 4d 28 00 callq 798e10 0.00 : 5140da: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 5140e0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : b->booltesttype = IS_FALSE; : $$ = (Node *)b; 0.00 : 5140e7: 49 89 c6 mov %rax,%r14 : $$ = (Node *)b; : } : | a_expr IS FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5140ea: 48 8b 51 f0 mov -0x10(%rcx),%rdx : b->booltesttype = IS_FALSE; 0.00 : 5140ee: c7 40 10 02 00 00 00 movl $0x2,0x10(%rax) : $$ = (Node *)b; : } : | a_expr IS FALSE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5140f5: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_FALSE; : $$ = (Node *)b; : } : | a_expr IS NOT FALSE_P %prec IS 0.00 : 5140f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514100: e9 7b d8 ff ff jmpq 511980 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); : } : | a_expr IS NOT DISTINCT FROM a_expr %prec IS : { : $$ = makeNotExpr((Node *) makeSimpleA_Expr(AEXPR_DISTINCT, 0.00 : 514105: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51410c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514113: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 514118: bf 03 00 00 00 mov $0x3,%edi 0.00 : 51411d: 8b 58 f0 mov -0x10(%rax),%ebx 0.00 : 514120: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 514124: 48 8b 09 mov (%rcx),%rcx 0.00 : 514127: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51412e: 41 89 d8 mov %ebx,%r8d 0.00 : 514131: e8 3a d9 0d 00 callq 5f1a70 0.00 : 514136: 89 de mov %ebx,%esi 0.00 : 514138: 48 89 c7 mov %rax,%rdi 0.00 : 51413b: e8 60 d2 ff ff callq 5113a0 : "=", $1, $6, @2), : @2); : } : | a_expr IS OF '(' type_list ')' %prec IS 0.00 : 514140: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); : } : | a_expr IS NOT DISTINCT FROM a_expr %prec IS : { : $$ = makeNotExpr((Node *) makeSimpleA_Expr(AEXPR_DISTINCT, 0.00 : 514147: 49 89 c6 mov %rax,%r14 : "=", $1, $6, @2), : @2); : } : | a_expr IS OF '(' type_list ')' %prec IS 0.00 : 51414a: e9 31 d8 ff ff jmpq 511980 : b->booltesttype = IS_NOT_UNKNOWN; : $$ = (Node *)b; : } : | a_expr IS DISTINCT FROM a_expr %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); 0.00 : 51414f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514156: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51415d: bf 03 00 00 00 mov $0x3,%edi 0.00 : 514162: 44 8b 46 f4 mov -0xc(%rsi),%r8d 0.00 : 514166: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 51416a: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 51416f: 48 8b 0b mov (%rbx),%rcx 0.00 : 514172: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514179: e8 f2 d8 0d 00 callq 5f1a70 : } : | a_expr IS NOT DISTINCT FROM a_expr %prec IS 0.00 : 51417e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : b->booltesttype = IS_NOT_UNKNOWN; : $$ = (Node *)b; : } : | a_expr IS DISTINCT FROM a_expr %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); 0.00 : 514185: 49 89 c6 mov %rax,%r14 : } : | a_expr IS NOT DISTINCT FROM a_expr %prec IS 0.00 : 514188: e9 f3 d7 ff ff jmpq 511980 : "=", $1, $6, @2), : @2); : } : | a_expr IS OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); 0.00 : 51418d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514194: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51419b: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 5141a0: bf 05 00 00 00 mov $0x5,%edi 0.00 : 5141a5: 48 8b 48 f8 mov -0x8(%rax),%rcx 0.00 : 5141a9: 48 8b 50 d8 mov -0x28(%rax),%rdx 0.00 : 5141ad: 44 8b 43 f0 mov -0x10(%rbx),%r8d 0.00 : 5141b1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5141b8: e8 b3 d8 0d 00 callq 5f1a70 : } : | a_expr IS NOT OF '(' type_list ')' %prec IS 0.00 : 5141bd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : "=", $1, $6, @2), : @2); : } : | a_expr IS OF '(' type_list ')' %prec IS : { : $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); 0.00 : 5141c4: 49 89 c6 mov %rax,%r14 : } : | a_expr IS NOT OF '(' type_list ')' %prec IS 0.00 : 5141c7: e9 b4 d7 ff ff jmpq 511980 : { : $$ = makeAArrayExpr(NIL, @1); : } : ; : : array_expr_list: array_expr { $$ = list_make1($1); } 0.00 : 5141cc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5141d3: 31 f6 xor %esi,%esi 0.00 : 5141d5: 48 8b 3b mov (%rbx),%rdi 0.00 : 5141d8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5141df: e8 6c d6 0c 00 callq 5e1850 : | array_expr_list ',' array_expr { $$ = lappend($1, $3); } 0.00 : 5141e4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeAArrayExpr(NIL, @1); : } : ; : : array_expr_list: array_expr { $$ = list_make1($1); } 0.00 : 5141eb: 49 89 c6 mov %rax,%r14 : | array_expr_list ',' array_expr { $$ = lappend($1, $3); } 0.00 : 5141ee: e9 8d d7 ff ff jmpq 511980 : { : $$ = makeAArrayExpr($2, @1); : } : | '[' ']' : { : $$ = makeAArrayExpr(NIL, @1); 0.00 : 5141f3: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 5141fa: 48 8b 3d 5f 66 6a 00 mov 0x6a665f(%rip),%rdi # bba860 0.00 : 514201: be 18 00 00 00 mov $0x18,%esi : { : $$ = makeAArrayExpr($2, @1); : } : | '[' ']' : { : $$ = makeAArrayExpr(NIL, @1); 0.00 : 514206: 8b 59 fc mov -0x4(%rcx),%ebx : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 514209: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514210: e8 fb 4b 28 00 callq 798e10 0.00 : 514215: c7 00 8c 03 00 00 movl $0x38c,(%rax) : : n->elements = elements; 0.00 : 51421b: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 514222: 00 : { : $$ = makeAArrayExpr($2, @1); : } : | '[' ']' : { : $$ = makeAArrayExpr(NIL, @1); 0.00 : 514223: 49 89 c6 mov %rax,%r14 : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); : : n->elements = elements; : n->location = location; 0.00 : 514226: 89 58 10 mov %ebx,0x10(%rax) : } : | '[' ']' : { : $$ = makeAArrayExpr(NIL, @1); : } : ; 0.00 : 514229: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514230: e9 4b d7 ff ff jmpq 511980 : { : $$ = makeAArrayExpr($2, @1); : } : | '[' array_expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 514235: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51423c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 514243: be 18 00 00 00 mov $0x18,%esi 0.00 : 514248: 48 8b 3d 11 66 6a 00 mov 0x6a6611(%rip),%rdi # bba860 : { : $$ = makeAArrayExpr($2, @1); : } : | '[' array_expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 51424f: 8b 58 f8 mov -0x8(%rax),%ebx 0.00 : 514252: 4c 8b 62 f8 mov -0x8(%rdx),%r12 : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 514256: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51425d: e8 ae 4b 28 00 callq 798e10 0.00 : 514262: c7 00 8c 03 00 00 movl $0x38c,(%rax) : : n->elements = elements; 0.00 : 514268: 4c 89 60 08 mov %r12,0x8(%rax) : { : $$ = makeAArrayExpr($2, @1); : } : | '[' array_expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 51426c: 49 89 c6 mov %rax,%r14 : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); : : n->elements = elements; : n->location = location; 0.00 : 51426f: 89 58 10 mov %ebx,0x10(%rax) : } : | '[' array_expr_list ']' : { : $$ = makeAArrayExpr($2, @1); : } : | '[' ']' 0.00 : 514272: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514279: e9 02 d7 ff ff jmpq 511980 : | type_list ',' Typename { $$ = lappend($1, $3); } : ; : : array_expr: '[' expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 51427e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514285: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 51428c: 48 8b 3d cd 65 6a 00 mov 0x6a65cd(%rip),%rdi # bba860 : | type_list ',' Typename { $$ = lappend($1, $3); } : ; : : array_expr: '[' expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 514293: 4c 8b 66 f8 mov -0x8(%rsi),%r12 0.00 : 514297: 8b 59 f8 mov -0x8(%rcx),%ebx : } : : static Node * : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); 0.00 : 51429a: be 18 00 00 00 mov $0x18,%esi 0.00 : 51429f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5142a6: e8 65 4b 28 00 callq 798e10 0.00 : 5142ab: c7 00 8c 03 00 00 movl $0x38c,(%rax) : : n->elements = elements; 0.00 : 5142b1: 4c 89 60 08 mov %r12,0x8(%rax) : | type_list ',' Typename { $$ = lappend($1, $3); } : ; : : array_expr: '[' expr_list ']' : { : $$ = makeAArrayExpr($2, @1); 0.00 : 5142b5: 49 89 c6 mov %rax,%r14 : makeAArrayExpr(List *elements, int location) : { : A_ArrayExpr *n = makeNode(A_ArrayExpr); : : n->elements = elements; : n->location = location; 0.00 : 5142b8: 89 58 10 mov %ebx,0x10(%rax) : : array_expr: '[' expr_list ']' : { : $$ = makeAArrayExpr($2, @1); : } : | '[' array_expr_list ']' 0.00 : 5142bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5142c2: e9 b9 d6 ff ff jmpq 511980 : $$ = (Node *) na; : } : ; : : type_list: Typename { $$ = list_make1($1); } : | type_list ',' Typename { $$ = lappend($1, $3); } 0.00 : 5142c7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5142ce: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5142d2: 48 8b 32 mov (%rdx),%rsi 0.00 : 5142d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5142dc: e8 9f db 0c 00 callq 5e1e80 : ; 0.00 : 5142e1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) na; : } : ; : : type_list: Typename { $$ = list_make1($1); } : | type_list ',' Typename { $$ = lappend($1, $3); } 0.00 : 5142e8: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5142eb: e9 90 d6 ff ff jmpq 511980 : na->location = @1; : $$ = (Node *) na; : } : ; : : type_list: Typename { $$ = list_make1($1); } 0.00 : 5142f0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5142f7: 31 f6 xor %esi,%esi 0.00 : 5142f9: 48 8b 38 mov (%rax),%rdi 0.00 : 5142fc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514303: e8 48 d5 0c 00 callq 5e1850 : | type_list ',' Typename { $$ = lappend($1, $3); } 0.00 : 514308: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : na->location = @1; : $$ = (Node *) na; : } : ; : : type_list: Typename { $$ = list_make1($1); } 0.00 : 51430f: 49 89 c6 mov %rax,%r14 : | type_list ',' Typename { $$ = lappend($1, $3); } 0.00 : 514312: e9 69 d6 ff ff jmpq 511980 : { : $$ = $1; : } : | param_name COLON_EQUALS a_expr : { : NamedArgExpr *na = makeNode(NamedArgExpr); 0.00 : 514317: 48 8b 3d 42 65 6a 00 mov 0x6a6542(%rip),%rdi # bba860 0.00 : 51431e: be 20 00 00 00 mov $0x20,%esi 0.00 : 514323: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51432a: e8 e1 4a 28 00 callq 798e10 0.00 : 51432f: c7 00 36 01 00 00 movl $0x136,(%rax) : na->name = $1; 0.00 : 514335: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : na->arg = (Expr *) $3; : na->argnumber = -1; /* until determined */ : na->location = @1; : $$ = (Node *) na; 0.00 : 51433c: 49 89 c6 mov %rax,%r14 : $$ = $1; : } : | param_name COLON_EQUALS a_expr : { : NamedArgExpr *na = makeNode(NamedArgExpr); : na->name = $1; 0.00 : 51433f: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 514343: 48 89 50 10 mov %rdx,0x10(%rax) : na->arg = (Expr *) $3; 0.00 : 514347: 48 8b 13 mov (%rbx),%rdx : na->argnumber = -1; /* until determined */ 0.00 : 51434a: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : } : | param_name COLON_EQUALS a_expr : { : NamedArgExpr *na = makeNode(NamedArgExpr); : na->name = $1; : na->arg = (Expr *) $3; 0.00 : 514351: 48 89 50 08 mov %rdx,0x8(%rax) : na->argnumber = -1; /* until determined */ : na->location = @1; 0.00 : 514355: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51435c: 8b 56 f8 mov -0x8(%rsi),%edx 0.00 : 51435f: 89 50 1c mov %edx,0x1c(%rax) : $$ = (Node *) na; : } : ; 0.00 : 514362: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514369: e9 12 d6 ff ff jmpq 511980 : } : ; : : func_arg_expr: a_expr : { : $$ = $1; 0.00 : 51436e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514375: 4c 8b 31 mov (%rcx),%r14 : } : | param_name COLON_EQUALS a_expr 0.00 : 514378: e9 03 d6 ff ff jmpq 511980 : { : $$ = list_make1($1); : } : | func_arg_list ',' func_arg_expr : { : $$ = lappend($1, $3); 0.00 : 51437d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514384: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 514388: 48 8b 32 mov (%rdx),%rsi 0.00 : 51438b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514392: e8 e9 da 0c 00 callq 5e1e80 : } : ; 0.00 : 514397: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | func_arg_list ',' func_arg_expr : { : $$ = lappend($1, $3); 0.00 : 51439e: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 5143a1: e9 da d5 ff ff jmpq 511980 : ; : : /* function arguments can have names */ : func_arg_list: func_arg_expr : { : $$ = list_make1($1); 0.00 : 5143a6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5143ad: 31 f6 xor %esi,%esi 0.00 : 5143af: 48 8b 38 mov (%rax),%rdi 0.00 : 5143b2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5143b9: e8 92 d4 0c 00 callq 5e1850 : } : | func_arg_list ',' func_arg_expr 0.00 : 5143be: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* function arguments can have names */ : func_arg_list: func_arg_expr : { : $$ = list_make1($1); 0.00 : 5143c5: 49 89 c6 mov %rax,%r14 : } : | func_arg_list ',' func_arg_expr 0.00 : 5143c8: e9 b3 d5 ff ff jmpq 511980 : { : $$ = list_make1($1); : } : | expr_list ',' a_expr : { : $$ = lappend($1, $3); 0.00 : 5143cd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5143d4: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 5143d8: 48 8b 33 mov (%rbx),%rsi 0.00 : 5143db: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5143e2: e8 99 da 0c 00 callq 5e1e80 : } : ; 0.00 : 5143e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | expr_list ',' a_expr : { : $$ = lappend($1, $3); 0.00 : 5143ee: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 5143f1: e9 8a d5 ff ff jmpq 511980 : */ : ; : : expr_list: a_expr : { : $$ = list_make1($1); 0.00 : 5143f6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5143fd: 31 f6 xor %esi,%esi 0.00 : 5143ff: 48 8b 39 mov (%rcx),%rdi 0.00 : 514402: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514409: e8 42 d4 0c 00 callq 5e1850 : } : | expr_list ',' a_expr 0.00 : 51440e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : */ : ; : : expr_list: a_expr : { : $$ = list_make1($1); 0.00 : 514415: 49 89 c6 mov %rax,%r14 : } : | expr_list ',' a_expr 0.00 : 514418: e9 63 d5 ff ff jmpq 511980 : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } : | ILIKE : { $$ = list_make1(makeString("~~*")); } : | NOT ILIKE : { $$ = list_make1(makeString("!~~*")); } 0.00 : 51441d: bf 2d 97 7c 00 mov $0x7c972d,%edi 0.00 : 514422: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514429: e8 c2 b2 0e 00 callq 5ff6f0 0.00 : 51442e: 31 f6 xor %esi,%esi 0.00 : 514430: 48 89 c7 mov %rax,%rdi 0.00 : 514433: e8 18 d4 0c 00 callq 5e1850 : /* cannot put SIMILAR TO here, because SIMILAR TO is a hack. 0.00 : 514438: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } : | ILIKE : { $$ = list_make1(makeString("~~*")); } : | NOT ILIKE : { $$ = list_make1(makeString("!~~*")); } 0.00 : 51443f: 49 89 c6 mov %rax,%r14 : /* cannot put SIMILAR TO here, because SIMILAR TO is a hack. 0.00 : 514442: e9 39 d5 ff ff jmpq 511980 : | LIKE : { $$ = list_make1(makeString("~~")); } : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } : | ILIKE : { $$ = list_make1(makeString("~~*")); } 0.00 : 514447: bf 2e 97 7c 00 mov $0x7c972e,%edi 0.00 : 51444c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514453: e8 98 b2 0e 00 callq 5ff6f0 0.00 : 514458: 31 f6 xor %esi,%esi 0.00 : 51445a: 48 89 c7 mov %rax,%rdi 0.00 : 51445d: e8 ee d3 0c 00 callq 5e1850 : | NOT ILIKE 0.00 : 514462: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | LIKE : { $$ = list_make1(makeString("~~")); } : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } : | ILIKE : { $$ = list_make1(makeString("~~*")); } 0.00 : 514469: 49 89 c6 mov %rax,%r14 : | NOT ILIKE 0.00 : 51446c: e9 0f d5 ff ff jmpq 511980 : | OPERATOR '(' any_operator ')' : { $$ = $3; } : | LIKE : { $$ = list_make1(makeString("~~")); } : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } 0.00 : 514471: bf 29 97 7c 00 mov $0x7c9729,%edi 0.00 : 514476: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51447d: e8 6e b2 0e 00 callq 5ff6f0 0.00 : 514482: 31 f6 xor %esi,%esi 0.00 : 514484: 48 89 c7 mov %rax,%rdi 0.00 : 514487: e8 c4 d3 0c 00 callq 5e1850 : | ILIKE 0.00 : 51448c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | OPERATOR '(' any_operator ')' : { $$ = $3; } : | LIKE : { $$ = list_make1(makeString("~~")); } : | NOT LIKE : { $$ = list_make1(makeString("!~~")); } 0.00 : 514493: 49 89 c6 mov %rax,%r14 : | ILIKE 0.00 : 514496: e9 e5 d4 ff ff jmpq 511980 : all_Op : { $$ = list_make1(makeString($1)); } : | OPERATOR '(' any_operator ')' : { $$ = $3; } : | LIKE : { $$ = list_make1(makeString("~~")); } 0.00 : 51449b: bf 2a 97 7c 00 mov $0x7c972a,%edi 0.00 : 5144a0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5144a7: e8 44 b2 0e 00 callq 5ff6f0 0.00 : 5144ac: 31 f6 xor %esi,%esi 0.00 : 5144ae: 48 89 c7 mov %rax,%rdi 0.00 : 5144b1: e8 9a d3 0c 00 callq 5e1850 : | NOT LIKE 0.00 : 5144b6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : all_Op : { $$ = list_make1(makeString($1)); } : | OPERATOR '(' any_operator ')' : { $$ = $3; } : | LIKE : { $$ = list_make1(makeString("~~")); } 0.00 : 5144bd: 49 89 c6 mov %rax,%r14 : | NOT LIKE 0.00 : 5144c0: e9 bb d4 ff ff jmpq 511980 : : subquery_Op: : all_Op : { $$ = list_make1(makeString($1)); } : | OPERATOR '(' any_operator ')' : { $$ = $3; } 0.00 : 5144c5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5144cc: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : | LIKE 0.00 : 5144d0: e9 ab d4 ff ff jmpq 511980 : { $$ = $3; } : ; : : subquery_Op: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 5144d5: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5144dc: 48 8b 38 mov (%rax),%rdi 0.00 : 5144df: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5144e6: e8 05 b2 0e 00 callq 5ff6f0 0.00 : 5144eb: 31 f6 xor %esi,%esi 0.00 : 5144ed: 48 89 c7 mov %rax,%rdi 0.00 : 5144f0: e8 5b d3 0c 00 callq 5e1850 : | OPERATOR '(' any_operator ')' 0.00 : 5144f5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = $3; } : ; : : subquery_Op: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 5144fc: 49 89 c6 mov %rax,%r14 : | OPERATOR '(' any_operator ')' 0.00 : 5144ff: e9 7c d4 ff ff jmpq 511980 : : qual_all_Op: : all_Op : { $$ = list_make1(makeString($1)); } : | OPERATOR '(' any_operator ')' : { $$ = $3; } 0.00 : 514504: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51450b: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : ; 0.00 : 51450f: e9 6c d4 ff ff jmpq 511980 : { $$ = $3; } : ; : : qual_all_Op: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 514514: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51451b: 48 8b 3b mov (%rbx),%rdi 0.00 : 51451e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514525: e8 c6 b1 0e 00 callq 5ff6f0 0.00 : 51452a: 31 f6 xor %esi,%esi 0.00 : 51452c: 48 89 c7 mov %rax,%rdi 0.00 : 51452f: e8 1c d3 0c 00 callq 5e1850 : | OPERATOR '(' any_operator ')' 0.00 : 514534: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = $3; } : ; : : qual_all_Op: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 51453b: 49 89 c6 mov %rax,%r14 : | OPERATOR '(' any_operator ')' 0.00 : 51453e: e9 3d d4 ff ff jmpq 511980 : ; : : qual_Op: Op : { $$ = list_make1(makeString($1)); } : | OPERATOR '(' any_operator ')' : { $$ = $3; } 0.00 : 514543: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51454a: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : ; 0.00 : 51454e: e9 2d d4 ff ff jmpq 511980 : | '>' { $$ = ">"; } : | '=' { $$ = "="; } : ; : : qual_Op: Op : { $$ = list_make1(makeString($1)); } 0.00 : 514553: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51455a: 48 8b 3a mov (%rdx),%rdi 0.00 : 51455d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514564: e8 87 b1 0e 00 callq 5ff6f0 0.00 : 514569: 31 f6 xor %esi,%esi 0.00 : 51456b: 48 89 c7 mov %rax,%rdi 0.00 : 51456e: e8 dd d2 0c 00 callq 5e1850 : | OPERATOR '(' any_operator ')' 0.00 : 514573: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '>' { $$ = ">"; } : | '=' { $$ = "="; } : ; : : qual_Op: Op : { $$ = list_make1(makeString($1)); } 0.00 : 51457a: 49 89 c6 mov %rax,%r14 : | OPERATOR '(' any_operator ')' 0.00 : 51457d: e9 fe d3 ff ff jmpq 511980 : | '/' { $$ = "/"; } : | '%' { $$ = "%"; } : | '^' { $$ = "^"; } : | '<' { $$ = "<"; } : | '>' { $$ = ">"; } : | '=' { $$ = "="; } 0.00 : 514582: 41 be 45 97 7c 00 mov $0x7c9745,%r14d : ; 0.00 : 514588: e9 f3 d3 ff ff jmpq 511980 : | '*' { $$ = "*"; } : | '/' { $$ = "/"; } : | '%' { $$ = "%"; } : | '^' { $$ = "^"; } : | '<' { $$ = "<"; } : | '>' { $$ = ">"; } 0.00 : 51458d: 41 be d4 78 89 00 mov $0x8978d4,%r14d : | '=' { $$ = "="; } 0.00 : 514593: e9 e8 d3 ff ff jmpq 511980 : | '-' { $$ = "-"; } : | '*' { $$ = "*"; } : | '/' { $$ = "/"; } : | '%' { $$ = "%"; } : | '^' { $$ = "^"; } : | '<' { $$ = "<"; } 0.00 : 514598: 41 be 1b 97 7c 00 mov $0x7c971b,%r14d : | '>' { $$ = ">"; } 0.00 : 51459e: e9 dd d3 ff ff jmpq 511980 : MathOp: '+' { $$ = "+"; } : | '-' { $$ = "-"; } : | '*' { $$ = "*"; } : | '/' { $$ = "/"; } : | '%' { $$ = "%"; } : | '^' { $$ = "^"; } 0.00 : 5145a3: 41 be 70 3d 8c 00 mov $0x8c3d70,%r14d : | '<' { $$ = "<"; } 0.00 : 5145a9: e9 d2 d3 ff ff jmpq 511980 : : MathOp: '+' { $$ = "+"; } : | '-' { $$ = "-"; } : | '*' { $$ = "*"; } : | '/' { $$ = "/"; } : | '%' { $$ = "%"; } 0.00 : 5145ae: 41 be ce 6e 8c 00 mov $0x8c6ece,%r14d : | '^' { $$ = "^"; } 0.00 : 5145b4: e9 c7 d3 ff ff jmpq 511980 : ; : : MathOp: '+' { $$ = "+"; } : | '-' { $$ = "-"; } : | '*' { $$ = "*"; } : | '/' { $$ = "/"; } 0.00 : 5145b9: 41 be 8a e7 87 00 mov $0x87e78a,%r14d : | '%' { $$ = "%"; } 0.00 : 5145bf: e9 bc d3 ff ff jmpq 511980 : | MathOp { $$ = $1; } : ; : : MathOp: '+' { $$ = "+"; } : | '-' { $$ = "-"; } : | '*' { $$ = "*"; } 0.00 : 5145c4: 41 be a3 76 7c 00 mov $0x7c76a3,%r14d : | '/' { $$ = "/"; } 0.00 : 5145ca: e9 b1 d3 ff ff jmpq 511980 : all_Op: Op { $$ = $1; } : | MathOp { $$ = $1; } : ; : : MathOp: '+' { $$ = "+"; } : | '-' { $$ = "-"; } 0.00 : 5145cf: 41 be ca 6e 8c 00 mov $0x8c6eca,%r14d : | '*' { $$ = "*"; } 0.00 : 5145d5: e9 a6 d3 ff ff jmpq 511980 : : all_Op: Op { $$ = $1; } : | MathOp { $$ = $1; } : ; : : MathOp: '+' { $$ = "+"; } 0.00 : 5145da: 41 be 19 97 7c 00 mov $0x7c9719,%r14d : | '-' { $$ = "-"; } 0.00 : 5145e0: e9 9b d3 ff ff jmpq 511980 : | SOME { $$ = ANY_SUBLINK; } : | ALL { $$ = ALL_SUBLINK; } : ; : : all_Op: Op { $$ = $1; } : | MathOp { $$ = $1; } 0.00 : 5145e5: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5145ec: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 5145ef: e9 8c d3 ff ff jmpq 511980 : sub_type: ANY { $$ = ANY_SUBLINK; } : | SOME { $$ = ANY_SUBLINK; } : | ALL { $$ = ALL_SUBLINK; } : ; : : all_Op: Op { $$ = $1; } 0.00 : 5145f4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5145fb: 4c 8b 36 mov (%rsi),%r14 : | MathOp { $$ = $1; } 0.00 : 5145fe: e9 7d d3 ff ff jmpq 511980 : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } : ; : : sub_type: ANY { $$ = ANY_SUBLINK; } : | SOME { $$ = ANY_SUBLINK; } : | ALL { $$ = ALL_SUBLINK; } 0.00 : 514603: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51460a: ff ff ff 0.00 : 51460d: 49 21 de and %rbx,%r14 0.00 : 514610: 49 83 ce 01 or $0x1,%r14 : ; 0.00 : 514614: e9 67 d3 ff ff jmpq 511980 : | ROW '(' ')' { $$ = NIL; } : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } : ; : : sub_type: ANY { $$ = ANY_SUBLINK; } : | SOME { $$ = ANY_SUBLINK; } 0.00 : 514619: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 514620: ff ff ff 0.00 : 514623: 49 21 ce and %rcx,%r14 0.00 : 514626: 49 83 ce 02 or $0x2,%r14 : | ALL { $$ = ALL_SUBLINK; } 0.00 : 51462a: e9 51 d3 ff ff jmpq 511980 : row: ROW '(' expr_list ')' { $$ = $3; } : | ROW '(' ')' { $$ = NIL; } : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } : ; : : sub_type: ANY { $$ = ANY_SUBLINK; } 0.00 : 51462f: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 514636: ff ff ff 0.00 : 514639: 49 21 d6 and %rdx,%r14 0.00 : 51463c: 49 83 ce 02 or $0x2,%r14 : | SOME { $$ = ANY_SUBLINK; } 0.00 : 514640: e9 3b d3 ff ff jmpq 511980 : * without conflicting with the parenthesized a_expr production. Without the : * ROW keyword, there must be more than one a_expr inside the parens. : */ : row: ROW '(' expr_list ')' { $$ = $3; } : | ROW '(' ')' { $$ = NIL; } : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } 0.00 : 514645: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51464c: 48 8b 70 f8 mov -0x8(%rax),%rsi 0.00 : 514650: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 514654: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51465b: e8 20 d8 0c 00 callq 5e1e80 : ; 0.00 : 514660: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * without conflicting with the parenthesized a_expr production. Without the : * ROW keyword, there must be more than one a_expr inside the parens. : */ : row: ROW '(' expr_list ')' { $$ = $3; } : | ROW '(' ')' { $$ = NIL; } : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } 0.00 : 514667: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51466a: e9 11 d3 ff ff jmpq 511980 : * SQL99 allows an optional ROW keyword, so we can now do single-element rows : * without conflicting with the parenthesized a_expr production. Without the : * ROW keyword, there must be more than one a_expr inside the parens. : */ : row: ROW '(' expr_list ')' { $$ = $3; } : | ROW '(' ')' { $$ = NIL; } 0.00 : 51466f: 45 31 f6 xor %r14d,%r14d : | '(' expr_list ',' a_expr ')' { $$ = lappend($2, $4); } 0.00 : 514672: e9 09 d3 ff ff jmpq 511980 : * : * SQL99 allows an optional ROW keyword, so we can now do single-element rows : * without conflicting with the parenthesized a_expr production. Without the : * ROW keyword, there must be more than one a_expr inside the parens. : */ : row: ROW '(' expr_list ')' { $$ = $3; } 0.00 : 514677: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51467e: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | ROW '(' ')' { $$ = NIL; } 0.00 : 514682: e9 f9 d2 ff ff jmpq 511980 : n->endOffset = NULL; : $$ = n; : } : | a_expr FOLLOWING : { : WindowDef *n = makeNode(WindowDef); 0.00 : 514687: 48 8b 3d d2 61 6a 00 mov 0x6a61d2(%rip),%rdi # bba860 0.00 : 51468e: be 48 00 00 00 mov $0x48,%esi 0.00 : 514693: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51469a: e8 71 47 28 00 callq 798e10 0.00 : 51469f: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; 0.00 : 5146a5: c7 40 28 00 10 00 00 movl $0x1000,0x28(%rax) : n->startOffset = $1; : n->endOffset = NULL; : $$ = n; 0.00 : 5146ac: 49 89 c6 mov %rax,%r14 : } : | a_expr FOLLOWING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; : n->startOffset = $1; 0.00 : 5146af: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5146b6: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->endOffset = NULL; 0.00 : 5146ba: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 5146c1: 00 : } : | a_expr FOLLOWING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; : n->startOffset = $1; 0.00 : 5146c2: 48 89 50 30 mov %rdx,0x30(%rax) : n->endOffset = NULL; : $$ = n; : } : ; 0.00 : 5146c6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5146cd: e9 ae d2 ff ff jmpq 511980 : n->endOffset = NULL; : $$ = n; : } : | a_expr PRECEDING : { : WindowDef *n = makeNode(WindowDef); 0.00 : 5146d2: 48 8b 3d 87 61 6a 00 mov 0x6a6187(%rip),%rdi # bba860 0.00 : 5146d9: be 48 00 00 00 mov $0x48,%esi 0.00 : 5146de: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5146e5: e8 26 47 28 00 callq 798e10 0.00 : 5146ea: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; 0.00 : 5146f0: c7 40 28 00 04 00 00 movl $0x400,0x28(%rax) : n->startOffset = $1; : n->endOffset = NULL; : $$ = n; 0.00 : 5146f7: 49 89 c6 mov %rax,%r14 : } : | a_expr PRECEDING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; : n->startOffset = $1; 0.00 : 5146fa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514701: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->endOffset = NULL; 0.00 : 514705: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 51470c: 00 : } : | a_expr PRECEDING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; : n->startOffset = $1; 0.00 : 51470d: 48 89 50 30 mov %rdx,0x30(%rax) : n->endOffset = NULL; : $$ = n; : } : | a_expr FOLLOWING 0.00 : 514711: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514718: e9 63 d2 ff ff jmpq 511980 : n->endOffset = NULL; : $$ = n; : } : | CURRENT_P ROW : { : WindowDef *n = makeNode(WindowDef); 0.00 : 51471d: 48 8b 3d 3c 61 6a 00 mov 0x6a613c(%rip),%rdi # bba860 0.00 : 514724: be 48 00 00 00 mov $0x48,%esi 0.00 : 514729: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514730: e8 db 46 28 00 callq 798e10 0.00 : 514735: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; 0.00 : 51473b: c7 40 28 00 01 00 00 movl $0x100,0x28(%rax) : n->startOffset = NULL; : n->endOffset = NULL; : $$ = n; 0.00 : 514742: 49 89 c6 mov %rax,%r14 : } : | CURRENT_P ROW : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; : n->startOffset = NULL; 0.00 : 514745: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 51474c: 00 : n->endOffset = NULL; 0.00 : 51474d: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 514754: 00 : $$ = n; : } : | a_expr PRECEDING 0.00 : 514755: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51475c: e9 1f d2 ff ff jmpq 511980 : n->endOffset = NULL; : $$ = n; : } : | UNBOUNDED FOLLOWING : { : WindowDef *n = makeNode(WindowDef); 0.00 : 514761: 48 8b 3d f8 60 6a 00 mov 0x6a60f8(%rip),%rdi # bba860 0.00 : 514768: be 48 00 00 00 mov $0x48,%esi 0.00 : 51476d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514774: e8 97 46 28 00 callq 798e10 0.00 : 514779: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; 0.00 : 51477f: c7 40 28 40 00 00 00 movl $0x40,0x28(%rax) : n->startOffset = NULL; : n->endOffset = NULL; : $$ = n; 0.00 : 514786: 49 89 c6 mov %rax,%r14 : } : | UNBOUNDED FOLLOWING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; : n->startOffset = NULL; 0.00 : 514789: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 514790: 00 : n->endOffset = NULL; 0.00 : 514791: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 514798: 00 : $$ = n; : } : | CURRENT_P ROW 0.00 : 514799: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5147a0: e9 db d1 ff ff jmpq 511980 : * invalid cases. : */ : frame_bound: : UNBOUNDED PRECEDING : { : WindowDef *n = makeNode(WindowDef); 0.00 : 5147a5: 48 8b 3d b4 60 6a 00 mov 0x6a60b4(%rip),%rdi # bba860 0.00 : 5147ac: be 48 00 00 00 mov $0x48,%esi 0.00 : 5147b1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5147b8: e8 53 46 28 00 callq 798e10 0.00 : 5147bd: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; 0.00 : 5147c3: c7 40 28 10 00 00 00 movl $0x10,0x28(%rax) : n->startOffset = NULL; : n->endOffset = NULL; : $$ = n; 0.00 : 5147ca: 49 89 c6 mov %rax,%r14 : frame_bound: : UNBOUNDED PRECEDING : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; : n->startOffset = NULL; 0.00 : 5147cd: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 5147d4: 00 : n->endOffset = NULL; 0.00 : 5147d5: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 5147dc: 00 : $$ = n; : } : | UNBOUNDED FOLLOWING 0.00 : 5147dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5147e4: e9 97 d1 ff ff jmpq 511980 : n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; : $$ = n; : } : | BETWEEN frame_bound AND frame_bound : { : WindowDef *n1 = $2; 0.00 : 5147e9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5147f0: 48 8b 4e f0 mov -0x10(%rsi),%rcx : WindowDef *n2 = $4; 0.00 : 5147f4: 48 8b 36 mov (%rsi),%rsi : /* form merged options */ : int frameOptions = n1->frameOptions; 0.00 : 5147f7: 8b 51 28 mov 0x28(%rcx),%edx : /* shift converts START_ options to END_ options */ : frameOptions |= n2->frameOptions << 1; : frameOptions |= FRAMEOPTION_BETWEEN; 0.00 : 5147fa: 8b 46 28 mov 0x28(%rsi),%eax : WindowDef *n1 = $2; : WindowDef *n2 = $4; : /* form merged options */ : int frameOptions = n1->frameOptions; : /* shift converts START_ options to END_ options */ : frameOptions |= n2->frameOptions << 1; 0.00 : 5147fd: 83 ca 08 or $0x8,%edx : frameOptions |= FRAMEOPTION_BETWEEN; 0.00 : 514800: 01 c0 add %eax,%eax 0.00 : 514802: 09 c2 or %eax,%edx : /* reject invalid cases */ : if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) 0.00 : 514804: f6 c2 40 test $0x40,%dl 0.00 : 514807: 0f 85 9b 5c 01 00 jne 52a4a8 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame start cannot be UNBOUNDED FOLLOWING"), : parser_errposition(@2))); : if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) 0.00 : 51480d: f6 c2 20 test $0x20,%dl 0.00 : 514810: 0f 85 ac 58 01 00 jne 52a0c2 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame end cannot be UNBOUNDED PRECEDING"), : parser_errposition(@4))); : if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && 0.00 : 514816: 89 d0 mov %edx,%eax 0.00 : 514818: 25 00 09 00 00 and $0x900,%eax 0.00 : 51481d: 3d 00 09 00 00 cmp $0x900,%eax 0.00 : 514822: 0f 84 48 57 01 00 je 529f70 : (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame starting from current row cannot have preceding rows"), : parser_errposition(@4))); : if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && 0.00 : 514828: f6 c6 10 test $0x10,%dh 0.00 : 51482b: 74 09 je 514836 0.00 : 51482d: f6 c6 0a test $0xa,%dh 0.00 : 514830: 0f 85 0c 5c 01 00 jne 52a442 : FRAMEOPTION_END_CURRENT_ROW))) : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame starting from following row cannot have preceding rows"), : parser_errposition(@4))); : n1->frameOptions = frameOptions; 0.00 : 514836: 89 51 28 mov %edx,0x28(%rcx) : n1->endOffset = n2->startOffset; 0.00 : 514839: 48 8b 46 30 mov 0x30(%rsi),%rax : $$ = n1; 0.00 : 51483d: 49 89 ce mov %rcx,%r14 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame starting from following row cannot have preceding rows"), : parser_errposition(@4))); : n1->frameOptions = frameOptions; : n1->endOffset = n2->startOffset; 0.00 : 514840: 48 89 41 38 mov %rax,0x38(%rcx) : $$ = n1; : } : ; 0.00 : 514844: e9 37 d1 ff ff jmpq 511980 : n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; : $$ = n; : } : | /*EMPTY*/ : { : WindowDef *n = makeNode(WindowDef); 0.00 : 514849: 48 8b 3d 10 60 6a 00 mov 0x6a6010(%rip),%rdi # bba860 0.00 : 514850: be 48 00 00 00 mov $0x48,%esi 0.00 : 514855: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51485c: e8 af 45 28 00 callq 798e10 0.00 : 514861: c7 00 92 03 00 00 movl $0x392,(%rax) : n->frameOptions = FRAMEOPTION_DEFAULTS; 0.00 : 514867: c7 40 28 12 02 00 00 movl $0x212,0x28(%rax) : n->startOffset = NULL; : n->endOffset = NULL; : $$ = n; 0.00 : 51486e: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ : { : WindowDef *n = makeNode(WindowDef); : n->frameOptions = FRAMEOPTION_DEFAULTS; : n->startOffset = NULL; 0.00 : 514871: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 514878: 00 : n->endOffset = NULL; 0.00 : 514879: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 514880: 00 : $$ = n; : } : ; 0.00 : 514881: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514888: e9 f3 d0 ff ff jmpq 511980 : parser_errposition(@1))); : $$ = n; : } : | ROWS frame_extent : { : WindowDef *n = $2; 0.00 : 51488d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514894: 48 8b 06 mov (%rsi),%rax : n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; 0.00 : 514897: 83 48 28 05 orl $0x5,0x28(%rax) : $$ = n; 0.00 : 51489b: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ 0.00 : 51489e: e9 dd d0 ff ff jmpq 511980 : } : ; : : frame_extent: frame_bound : { : WindowDef *n = $1; 0.00 : 5148a3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5148aa: 48 8b 02 mov (%rdx),%rax : /* reject invalid cases */ : if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) 0.00 : 5148ad: 8b 50 28 mov 0x28(%rax),%edx 0.00 : 5148b0: f6 c2 40 test $0x40,%dl 0.00 : 5148b3: 0f 85 9c 5a 01 00 jne 52a355 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame start cannot be UNBOUNDED FOLLOWING"), : parser_errposition(@1))); : if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) 0.00 : 5148b9: f6 c6 10 test $0x10,%dh 0.00 : 5148bc: 0f 85 54 58 01 00 jne 52a116 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame starting from following row cannot end with current row"), : parser_errposition(@1))); : n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; 0.00 : 5148c2: 80 ce 02 or $0x2,%dh : $$ = n; 0.00 : 5148c5: 49 89 c6 mov %rax,%r14 : if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame starting from following row cannot end with current row"), : parser_errposition(@1))); : n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; 0.00 : 5148c8: 89 50 28 mov %edx,0x28(%rax) : $$ = n; : } : | BETWEEN frame_bound AND frame_bound 0.00 : 5148cb: e9 b0 d0 ff ff jmpq 511980 : * We don't support yet. : */ : opt_frame_clause: : RANGE frame_extent : { : WindowDef *n = $2; 0.00 : 5148d0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5148d7: 48 8b 02 mov (%rdx),%rax : n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; 0.00 : 5148da: 8b 50 28 mov 0x28(%rax),%edx 0.00 : 5148dd: 83 ca 03 or $0x3,%edx : if (n->frameOptions & (FRAMEOPTION_START_VALUE_PRECEDING | 0.00 : 5148e0: f6 c6 0c test $0xc,%dh : */ : opt_frame_clause: : RANGE frame_extent : { : WindowDef *n = $2; : n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; 0.00 : 5148e3: 89 50 28 mov %edx,0x28(%rax) : if (n->frameOptions & (FRAMEOPTION_START_VALUE_PRECEDING | 0.00 : 5148e6: 0f 85 14 5a 01 00 jne 52a300 : FRAMEOPTION_END_VALUE_PRECEDING)) : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("RANGE PRECEDING is only supported with UNBOUNDED"), : parser_errposition(@1))); : if (n->frameOptions & (FRAMEOPTION_START_VALUE_FOLLOWING | 0.00 : 5148ec: 80 e6 30 and $0x30,%dh 0.00 : 5148ef: 0f 85 cf 56 01 00 jne 529fc4 : FRAMEOPTION_END_VALUE_FOLLOWING)) : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("RANGE FOLLOWING is only supported with UNBOUNDED"), : parser_errposition(@1))); : $$ = n; 0.00 : 5148f5: 49 89 c6 mov %rax,%r14 : } : | ROWS frame_extent 0.00 : 5148f8: e9 83 d0 ff ff jmpq 511980 : opt_existing_window_name: ColId { $$ = $1; } : | /*EMPTY*/ %prec Op { $$ = NULL; } : ; : : opt_partition_clause: PARTITION BY expr_list { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5148fd: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514900: e9 7b d0 ff ff jmpq 511980 : $$ = n; : } : ; : : over_clause: OVER window_specification : { $$ = $2; } 0.00 : 514905: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51490c: 4c 8b 30 mov (%rax),%r14 : | OVER ColId 0.00 : 51490f: e9 6c d0 ff ff jmpq 511980 : ; : : window_definition: : ColId AS window_specification : { : WindowDef *n = $3; 0.00 : 514914: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51491b: 48 8b 16 mov (%rsi),%rdx : n->name = $1; 0.00 : 51491e: 48 8b 46 f0 mov -0x10(%rsi),%rax : $$ = n; 0.00 : 514922: 49 89 d6 mov %rdx,%r14 : : window_definition: : ColId AS window_specification : { : WindowDef *n = $3; : n->name = $1; 0.00 : 514925: 48 89 42 08 mov %rax,0x8(%rdx) : $$ = n; : } : ; 0.00 : 514929: e9 52 d0 ff ff jmpq 511980 : ; : : window_definition_list: : window_definition { $$ = list_make1($1); } : | window_definition_list ',' window_definition : { $$ = lappend($1, $3); } 0.00 : 51492e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514935: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 514939: 48 8b 33 mov (%rbx),%rsi 0.00 : 51493c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514943: e8 38 d5 0c 00 callq 5e1e80 : ; 0.00 : 514948: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : window_definition_list: : window_definition { $$ = list_make1($1); } : | window_definition_list ',' window_definition : { $$ = lappend($1, $3); } 0.00 : 51494f: 49 89 c6 mov %rax,%r14 : ; 0.00 : 514952: e9 29 d0 ff ff jmpq 511980 : WINDOW window_definition_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : window_definition_list: : window_definition { $$ = list_make1($1); } 0.00 : 514957: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51495e: 31 f6 xor %esi,%esi 0.00 : 514960: 48 8b 39 mov (%rcx),%rdi 0.00 : 514963: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51496a: e8 e1 ce 0c 00 callq 5e1850 : | window_definition_list ',' window_definition 0.00 : 51496f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : WINDOW window_definition_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : window_definition_list: : window_definition { $$ = list_make1($1); } 0.00 : 514976: 49 89 c6 mov %rax,%r14 : | window_definition_list ',' window_definition 0.00 : 514979: e9 02 d0 ff ff jmpq 511980 : /* : * Window Definitions : */ : window_clause: : WINDOW window_definition_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51497e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514981: e9 fa cf ff ff jmpq 511980 : : /* : * Window Definitions : */ : window_clause: : WINDOW window_definition_list { $$ = $2; } 0.00 : 514986: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51498d: 4c 8b 32 mov (%rdx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514990: e9 eb cf ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : filter_clause: : FILTER '(' WHERE a_expr ')' { $$ = $4; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 514995: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514998: e9 e3 cf ff ff jmpq 511980 : WITHIN GROUP_P '(' sort_clause ')' { $$ = $4; } : | /*EMPTY*/ { $$ = NIL; } : ; : : filter_clause: : FILTER '(' WHERE a_expr ')' { $$ = $4; } 0.00 : 51499d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5149a4: 4c 8b 70 f8 mov -0x8(%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5149a8: e9 d3 cf ff ff jmpq 511980 : * and giving the empty production here a slightly higher precedence, so : * that the shift/reduce conflict is resolved in favor of reducing the rule. : * These keywords are thus precluded from being an existing_window_name but : * are not reserved for any other purpose. : */ : opt_existing_window_name: ColId { $$ = $1; } 0.00 : 5149ad: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5149b4: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ %prec Op { $$ = NULL; } 0.00 : 5149b7: e9 c4 cf ff ff jmpq 511980 : ; : : window_specification: '(' opt_existing_window_name opt_partition_clause : opt_sort_clause opt_frame_clause ')' : { : WindowDef *n = makeNode(WindowDef); 0.00 : 5149bc: 48 8b 3d 9d 5e 6a 00 mov 0x6a5e9d(%rip),%rdi # bba860 0.00 : 5149c3: be 48 00 00 00 mov $0x48,%esi 0.00 : 5149c8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5149cf: e8 3c 44 28 00 callq 798e10 0.00 : 5149d4: c7 00 92 03 00 00 movl $0x392,(%rax) : n->name = NULL; 0.00 : 5149da: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5149e1: 00 : /* copy relevant fields of opt_frame_clause */ : n->frameOptions = $5->frameOptions; : n->startOffset = $5->startOffset; : n->endOffset = $5->endOffset; : n->location = @1; : $$ = n; 0.00 : 5149e2: 49 89 c6 mov %rax,%r14 : window_specification: '(' opt_existing_window_name opt_partition_clause : opt_sort_clause opt_frame_clause ')' : { : WindowDef *n = makeNode(WindowDef); : n->name = NULL; : n->refname = $2; 0.00 : 5149e5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5149ec: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 5149f0: 48 89 50 10 mov %rdx,0x10(%rax) : n->partitionClause = $3; 0.00 : 5149f4: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 5149f8: 48 89 50 18 mov %rdx,0x18(%rax) : n->orderClause = $4; 0.00 : 5149fc: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 514a00: 48 89 50 20 mov %rdx,0x20(%rax) : /* copy relevant fields of opt_frame_clause */ : n->frameOptions = $5->frameOptions; 0.00 : 514a04: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 514a08: 8b 52 28 mov 0x28(%rdx),%edx 0.00 : 514a0b: 89 50 28 mov %edx,0x28(%rax) : n->startOffset = $5->startOffset; 0.00 : 514a0e: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 514a12: 48 8b 52 30 mov 0x30(%rdx),%rdx 0.00 : 514a16: 48 89 50 30 mov %rdx,0x30(%rax) : n->endOffset = $5->endOffset; 0.00 : 514a1a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 514a1e: 48 8b 52 38 mov 0x38(%rdx),%rdx 0.00 : 514a22: 48 89 50 38 mov %rdx,0x38(%rax) : n->location = @1; 0.00 : 514a26: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 514a2d: 8b 51 ec mov -0x14(%rcx),%edx 0.00 : 514a30: 89 50 40 mov %edx,0x40(%rax) : $$ = n; : } : ; 0.00 : 514a33: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514a3a: e9 41 cf ff ff jmpq 511980 : n->endOffset = NULL; : n->location = @2; : $$ = n; : } : | /*EMPTY*/ : { $$ = NULL; } 0.00 : 514a3f: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514a42: e9 39 cf ff ff jmpq 511980 : : over_clause: OVER window_specification : { $$ = $2; } : | OVER ColId : { : WindowDef *n = makeNode(WindowDef); 0.00 : 514a47: 48 8b 3d 12 5e 6a 00 mov 0x6a5e12(%rip),%rdi # bba860 0.00 : 514a4e: be 48 00 00 00 mov $0x48,%esi 0.00 : 514a53: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514a5a: e8 b1 43 28 00 callq 798e10 0.00 : 514a5f: c7 00 92 03 00 00 movl $0x392,(%rax) : n->name = $2; 0.00 : 514a65: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->orderClause = NIL; : n->frameOptions = FRAMEOPTION_DEFAULTS; : n->startOffset = NULL; : n->endOffset = NULL; : n->location = @2; : $$ = n; 0.00 : 514a6c: 49 89 c6 mov %rax,%r14 : over_clause: OVER window_specification : { $$ = $2; } : | OVER ColId : { : WindowDef *n = makeNode(WindowDef); : n->name = $2; 0.00 : 514a6f: 48 8b 11 mov (%rcx),%rdx : n->refname = NULL; 0.00 : 514a72: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 514a79: 00 : n->partitionClause = NIL; 0.00 : 514a7a: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 514a81: 00 : n->orderClause = NIL; 0.00 : 514a82: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 514a89: 00 : n->frameOptions = FRAMEOPTION_DEFAULTS; 0.00 : 514a8a: c7 40 28 12 02 00 00 movl $0x212,0x28(%rax) : n->startOffset = NULL; 0.00 : 514a91: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 514a98: 00 : over_clause: OVER window_specification : { $$ = $2; } : | OVER ColId : { : WindowDef *n = makeNode(WindowDef); : n->name = $2; 0.00 : 514a99: 48 89 50 08 mov %rdx,0x8(%rax) : n->refname = NULL; : n->partitionClause = NIL; : n->orderClause = NIL; : n->frameOptions = FRAMEOPTION_DEFAULTS; : n->startOffset = NULL; : n->endOffset = NULL; 0.00 : 514a9d: 48 c7 40 38 00 00 00 movq $0x0,0x38(%rax) 0.00 : 514aa4: 00 : n->location = @2; 0.00 : 514aa5: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 514aac: 8b 13 mov (%rbx),%edx 0.00 : 514aae: 89 50 40 mov %edx,0x40(%rax) : $$ = n; : } : | /*EMPTY*/ 0.00 : 514ab1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514ab8: e9 c3 ce ff ff jmpq 511980 : */ : opt_existing_window_name: ColId { $$ = $1; } : | /*EMPTY*/ %prec Op { $$ = NULL; } : ; : : opt_partition_clause: PARTITION BY expr_list { $$ = $3; } 0.00 : 514abd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514ac4: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514ac7: e9 b4 ce ff ff jmpq 511980 : * that the shift/reduce conflict is resolved in favor of reducing the rule. : * These keywords are thus precluded from being an existing_window_name but : * are not reserved for any other purpose. : */ : opt_existing_window_name: ColId { $$ = $1; } : | /*EMPTY*/ %prec Op { $$ = NULL; } 0.00 : 514acc: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514acf: e9 ac ce ff ff jmpq 511980 : ; : : when_clause_list: : /* There must be at least one */ : when_clause { $$ = list_make1($1); } : | when_clause_list when_clause { $$ = lappend($1, $2); } 0.00 : 514ad4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514adb: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 514adf: 48 8b 32 mov (%rdx),%rsi 0.00 : 514ae2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514ae9: e8 92 d3 0c 00 callq 5e1e80 : ; 0.00 : 514aee: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : when_clause_list: : /* There must be at least one */ : when_clause { $$ = list_make1($1); } : | when_clause_list when_clause { $$ = lappend($1, $2); } 0.00 : 514af5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 514af8: e9 83 ce ff ff jmpq 511980 : } : ; : : when_clause_list: : /* There must be at least one */ : when_clause { $$ = list_make1($1); } 0.00 : 514afd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514b04: 31 f6 xor %esi,%esi 0.00 : 514b06: 48 8b 38 mov (%rax),%rdi 0.00 : 514b09: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514b10: e8 3b cd 0c 00 callq 5e1850 : | when_clause_list when_clause { $$ = lappend($1, $2); } 0.00 : 514b15: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : when_clause_list: : /* There must be at least one */ : when_clause { $$ = list_make1($1); } 0.00 : 514b1c: 49 89 c6 mov %rax,%r14 : | when_clause_list when_clause { $$ = lappend($1, $2); } 0.00 : 514b1f: e9 5c ce ff ff jmpq 511980 : * - Implicit argument : * CASE a WHEN b THEN c ... ELSE d END : */ : case_expr: CASE case_arg when_clause_list case_default END_P : { : CaseExpr *c = makeNode(CaseExpr); 0.00 : 514b24: 48 8b 3d 35 5d 6a 00 mov 0x6a5d35(%rip),%rdi # bba860 0.00 : 514b2b: be 30 00 00 00 mov $0x30,%esi 0.00 : 514b30: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514b37: e8 d4 42 28 00 callq 798e10 0.00 : 514b3c: c7 00 46 01 00 00 movl $0x146,(%rax) : c->casetype = InvalidOid; /* not analyzed yet */ 0.00 : 514b42: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : c->arg = (Expr *) $2; : c->args = $3; : c->defresult = (Expr *) $4; : c->location = @1; : $$ = (Node *)c; 0.00 : 514b49: 49 89 c6 mov %rax,%r14 : */ : case_expr: CASE case_arg when_clause_list case_default END_P : { : CaseExpr *c = makeNode(CaseExpr); : c->casetype = InvalidOid; /* not analyzed yet */ : c->arg = (Expr *) $2; 0.00 : 514b4c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514b53: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 514b57: 48 89 50 10 mov %rdx,0x10(%rax) : c->args = $3; 0.00 : 514b5b: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 514b5f: 48 89 50 18 mov %rdx,0x18(%rax) : c->defresult = (Expr *) $4; 0.00 : 514b63: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 514b67: 48 89 50 20 mov %rdx,0x20(%rax) : c->location = @1; 0.00 : 514b6b: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 514b72: 8b 53 f0 mov -0x10(%rbx),%edx 0.00 : 514b75: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node *)c; : } : ; 0.00 : 514b78: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514b7f: e9 fc cd ff ff jmpq 511980 : SubLink *n = makeNode(SubLink); : n->subselect = $1; : /* other fields will be filled later */ : $$ = (Node *)n; : } : | '(' expr_list ')' { $$ = (Node *)$2; } 0.00 : 514b84: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514b8b: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : ; 0.00 : 514b8f: e9 ec cd ff ff jmpq 511980 : | expr_list { $$ = $1; } : ; : : in_expr: select_with_parens : { : SubLink *n = makeNode(SubLink); 0.00 : 514b94: 48 8b 3d c5 5c 6a 00 mov 0x6a5cc5(%rip),%rdi # bba860 0.00 : 514b9b: be 30 00 00 00 mov $0x30,%esi 0.00 : 514ba0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514ba7: e8 64 42 28 00 callq 798e10 0.00 : 514bac: c7 00 3c 01 00 00 movl $0x13c,(%rax) : n->subselect = $1; 0.00 : 514bb2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : /* other fields will be filled later */ : $$ = (Node *)n; 0.00 : 514bb9: 49 89 c6 mov %rax,%r14 : ; : : in_expr: select_with_parens : { : SubLink *n = makeNode(SubLink); : n->subselect = $1; 0.00 : 514bbc: 48 8b 13 mov (%rbx),%rdx 0.00 : 514bbf: 48 89 50 20 mov %rdx,0x20(%rax) : /* other fields will be filled later */ : $$ = (Node *)n; : } : | '(' expr_list ')' { $$ = (Node *)$2; } 0.00 : 514bc3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 514bca: e9 b1 cd ff ff jmpq 511980 : substr_for: FOR a_expr { $$ = $2; } : ; : : trim_list: a_expr FROM expr_list { $$ = lappend($3, $1); } : | FROM expr_list { $$ = $2; } : | expr_list { $$ = $1; } 0.00 : 514bcf: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514bd6: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 514bd9: e9 a2 cd ff ff jmpq 511980 : : substr_for: FOR a_expr { $$ = $2; } : ; : : trim_list: a_expr FROM expr_list { $$ = lappend($3, $1); } : | FROM expr_list { $$ = $2; } 0.00 : 514bde: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514be5: 4c 8b 32 mov (%rdx),%r14 : | expr_list { $$ = $1; } 0.00 : 514be8: e9 93 cd ff ff jmpq 511980 : ; : : substr_for: FOR a_expr { $$ = $2; } : ; : : trim_list: a_expr FROM expr_list { $$ = lappend($3, $1); } 0.00 : 514bed: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514bf4: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 514bf8: 48 8b 38 mov (%rax),%rdi 0.00 : 514bfb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514c02: e8 79 d2 0c 00 callq 5e1e80 : | FROM expr_list { $$ = $2; } 0.00 : 514c07: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : substr_for: FOR a_expr { $$ = $2; } : ; : : trim_list: a_expr FROM expr_list { $$ = lappend($3, $1); } 0.00 : 514c0e: 49 89 c6 mov %rax,%r14 : | FROM expr_list { $$ = $2; } 0.00 : 514c11: e9 6a cd ff ff jmpq 511980 : : substr_from: : FROM a_expr { $$ = $2; } : ; : : substr_for: FOR a_expr { $$ = $2; } 0.00 : 514c16: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514c1d: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 514c20: e9 5b cd ff ff jmpq 511980 : | /*EMPTY*/ : { $$ = NIL; } : ; : : substr_from: : FROM a_expr { $$ = $2; } 0.00 : 514c25: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514c2c: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 514c2f: e9 4c cd ff ff jmpq 511980 : | expr_list : { : $$ = $1; : } : | /*EMPTY*/ : { $$ = NIL; } 0.00 : 514c34: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514c37: e9 44 cd ff ff jmpq 511980 : makeTypeCast($2, : SystemTypeName("int4"), -1)); : } : | expr_list : { : $$ = $1; 0.00 : 514c3c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514c43: 4c 8b 32 mov (%rdx),%r14 : } : | /*EMPTY*/ 0.00 : 514c46: e9 35 cd ff ff jmpq 511980 : * substring(text,int4) and substring(text,text), : * and we don't want the parser to choose the latter, : * which it is likely to do if the second argument : * is unknown or doesn't have an implicit cast to int4. : */ : $$ = list_make3($1, makeIntConst(1, -1), 0.00 : 514c4b: bf d2 69 88 00 mov $0x8869d2,%edi 0.00 : 514c50: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514c57: e8 d4 bd ff ff callq 510a30 0.00 : 514c5c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 514c63: 48 8b 3d f6 5b 6a 00 mov 0x6a5bf6(%rip),%rdi # bba860 : * substring(text,int4) and substring(text,text), : * and we don't want the parser to choose the latter, : * which it is likely to do if the second argument : * is unknown or doesn't have an implicit cast to int4. : */ : $$ = list_make3($1, makeIntConst(1, -1), 0.00 : 514c6a: 48 89 c3 mov %rax,%rbx 0.00 : 514c6d: 4c 8b 26 mov (%rsi),%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 514c70: be 20 00 00 00 mov $0x20,%esi 0.00 : 514c75: e8 96 41 28 00 callq 798e10 : * substring(text,int4) and substring(text,text), : * and we don't want the parser to choose the latter, : * which it is likely to do if the second argument : * is unknown or doesn't have an implicit cast to int4. : */ : $$ = list_make3($1, makeIntConst(1, -1), 0.00 : 514c7a: 31 f6 xor %esi,%esi : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 514c7c: 48 89 c7 mov %rax,%rdi : n->arg = arg; : n->typeName = typename; 0.00 : 514c7f: 48 89 58 10 mov %rbx,0x10(%rax) : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 514c83: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; 0.00 : 514c89: 4c 89 60 08 mov %r12,0x8(%rax) : n->typeName = typename; : n->location = location; 0.00 : 514c8d: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : * substring(text,int4) and substring(text,text), : * and we don't want the parser to choose the latter, : * which it is likely to do if the second argument : * is unknown or doesn't have an implicit cast to int4. : */ : $$ = list_make3($1, makeIntConst(1, -1), 0.00 : 514c94: e8 b7 cb 0c 00 callq 5e1850 0.00 : 514c99: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 514c9e: 48 89 c3 mov %rax,%rbx 0.00 : 514ca1: bf 01 00 00 00 mov $0x1,%edi 0.00 : 514ca6: e8 65 bf ff ff callq 510c10 0.00 : 514cab: 48 89 de mov %rbx,%rsi 0.00 : 514cae: 48 89 c7 mov %rax,%rdi 0.00 : 514cb1: e8 9a cb 0c 00 callq 5e1850 0.00 : 514cb6: 48 89 c6 mov %rax,%rsi 0.00 : 514cb9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514cc0: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 514cc4: e8 87 cb 0c 00 callq 5e1850 : makeTypeCast($2, : SystemTypeName("int4"), -1)); : } : | expr_list 0.00 : 514cc9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * substring(text,int4) and substring(text,text), : * and we don't want the parser to choose the latter, : * which it is likely to do if the second argument : * is unknown or doesn't have an implicit cast to int4. : */ : $$ = list_make3($1, makeIntConst(1, -1), 0.00 : 514cd0: 49 89 c6 mov %rax,%r14 : makeTypeCast($2, : SystemTypeName("int4"), -1)); : } : | expr_list 0.00 : 514cd3: e9 a8 cc ff ff jmpq 511980 : /* not legal per SQL99, but might as well allow it */ : $$ = list_make3($1, $3, $2); : } : | a_expr substr_from : { : $$ = list_make2($1, $2); 0.00 : 514cd8: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514cdf: 31 f6 xor %esi,%esi 0.00 : 514ce1: 48 8b 39 mov (%rcx),%rdi 0.00 : 514ce4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514ceb: e8 60 cb 0c 00 callq 5e1850 0.00 : 514cf0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514cf7: 48 89 c6 mov %rax,%rsi 0.00 : 514cfa: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 514cfe: e8 4d cb 0c 00 callq 5e1850 : } : | a_expr substr_for 0.00 : 514d03: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* not legal per SQL99, but might as well allow it */ : $$ = list_make3($1, $3, $2); : } : | a_expr substr_from : { : $$ = list_make2($1, $2); 0.00 : 514d0a: 49 89 c6 mov %rax,%r14 : } : | a_expr substr_for 0.00 : 514d0d: e9 6e cc ff ff jmpq 511980 : $$ = list_make3($1, $2, $3); : } : | a_expr substr_for substr_from : { : /* not legal per SQL99, but might as well allow it */ : $$ = list_make3($1, $3, $2); 0.00 : 514d12: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514d19: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 514d1d: 31 f6 xor %esi,%esi 0.00 : 514d1f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514d26: e8 25 cb 0c 00 callq 5e1850 0.00 : 514d2b: 48 89 c6 mov %rax,%rsi 0.00 : 514d2e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514d35: 48 8b 38 mov (%rax),%rdi 0.00 : 514d38: e8 13 cb 0c 00 callq 5e1850 0.00 : 514d3d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514d44: 48 89 c6 mov %rax,%rsi 0.00 : 514d47: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 514d4b: e8 00 cb 0c 00 callq 5e1850 : } : | a_expr substr_from 0.00 : 514d50: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = list_make3($1, $2, $3); : } : | a_expr substr_for substr_from : { : /* not legal per SQL99, but might as well allow it */ : $$ = list_make3($1, $3, $2); 0.00 : 514d57: 49 89 c6 mov %rax,%r14 : } : | a_expr substr_from 0.00 : 514d5a: e9 21 cc ff ff jmpq 511980 : * processing. - thomas 2000-11-28 : */ : substr_list: : a_expr substr_from substr_for : { : $$ = list_make3($1, $2, $3); 0.00 : 514d5f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514d66: 31 f6 xor %esi,%esi 0.00 : 514d68: 48 8b 3a mov (%rdx),%rdi 0.00 : 514d6b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514d72: e8 d9 ca 0c 00 callq 5e1850 0.00 : 514d77: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514d7e: 48 89 c6 mov %rax,%rsi 0.00 : 514d81: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 514d85: e8 c6 ca 0c 00 callq 5e1850 0.00 : 514d8a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514d91: 48 89 c6 mov %rax,%rsi 0.00 : 514d94: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 514d98: e8 b3 ca 0c 00 callq 5e1850 : } : | a_expr substr_for substr_from 0.00 : 514d9d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * processing. - thomas 2000-11-28 : */ : substr_list: : a_expr substr_from substr_for : { : $$ = list_make3($1, $2, $3); 0.00 : 514da4: 49 89 c6 mov %rax,%r14 : } : | a_expr substr_for substr_from 0.00 : 514da7: e9 d4 cb ff ff jmpq 511980 : : /* position_list uses b_expr not a_expr to avoid conflict with general IN */ : : position_list: : b_expr IN_P b_expr { $$ = list_make2($3, $1); } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514dac: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514daf: e9 cc cb ff ff jmpq 511980 : ; : : /* position_list uses b_expr not a_expr to avoid conflict with general IN */ : : position_list: : b_expr IN_P b_expr { $$ = list_make2($3, $1); } 0.00 : 514db4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514dbb: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 514dbf: 31 f6 xor %esi,%esi 0.00 : 514dc1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514dc8: e8 83 ca 0c 00 callq 5e1850 0.00 : 514dcd: 48 89 c6 mov %rax,%rsi 0.00 : 514dd0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514dd7: 48 8b 38 mov (%rax),%rdi 0.00 : 514dda: e8 71 ca 0c 00 callq 5e1850 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514ddf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* position_list uses b_expr not a_expr to avoid conflict with general IN */ : : position_list: : b_expr IN_P b_expr { $$ = list_make2($3, $1); } 0.00 : 514de6: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514de9: e9 92 cb ff ff jmpq 511980 : } : ; : : overlay_placing: : PLACING a_expr : { $$ = $2; } 0.00 : 514dee: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514df5: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 514df8: e9 83 cb ff ff jmpq 511980 : { : $$ = list_make4($1, $2, $3, $4); : } : | a_expr overlay_placing substr_from : { : $$ = list_make3($1, $2, $3); 0.00 : 514dfd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514e04: 31 f6 xor %esi,%esi 0.00 : 514e06: 48 8b 38 mov (%rax),%rdi 0.00 : 514e09: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514e10: e8 3b ca 0c 00 callq 5e1850 0.00 : 514e15: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514e1c: 48 89 c6 mov %rax,%rsi 0.00 : 514e1f: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 514e23: e8 28 ca 0c 00 callq 5e1850 0.00 : 514e28: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514e2f: 48 89 c6 mov %rax,%rsi 0.00 : 514e32: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 514e36: e8 15 ca 0c 00 callq 5e1850 : } : ; 0.00 : 514e3b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make4($1, $2, $3, $4); : } : | a_expr overlay_placing substr_from : { : $$ = list_make3($1, $2, $3); 0.00 : 514e42: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 514e45: e9 36 cb ff ff jmpq 511980 : * and similarly for binary strings : */ : overlay_list: : a_expr overlay_placing substr_from substr_for : { : $$ = list_make4($1, $2, $3, $4); 0.00 : 514e4a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514e51: 31 f6 xor %esi,%esi 0.00 : 514e53: 48 8b 3b mov (%rbx),%rdi 0.00 : 514e56: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514e5d: e8 ee c9 0c 00 callq 5e1850 0.00 : 514e62: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 514e66: 48 89 c6 mov %rax,%rsi 0.00 : 514e69: e8 e2 c9 0c 00 callq 5e1850 0.00 : 514e6e: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 514e72: 48 89 c6 mov %rax,%rsi 0.00 : 514e75: e8 d6 c9 0c 00 callq 5e1850 0.00 : 514e7a: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 514e7e: 48 89 c6 mov %rax,%rsi 0.00 : 514e81: e8 ca c9 0c 00 callq 5e1850 : } : | a_expr overlay_placing substr_from 0.00 : 514e86: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * and similarly for binary strings : */ : overlay_list: : a_expr overlay_placing substr_from substr_for : { : $$ = list_make4($1, $2, $3, $4); 0.00 : 514e8d: 49 89 c6 mov %rax,%r14 : } : | a_expr overlay_placing substr_from 0.00 : 514e90: e9 eb ca ff ff jmpq 511980 : | MONTH_P { $$ = "month"; } : | DAY_P { $$ = "day"; } : | HOUR_P { $$ = "hour"; } : | MINUTE_P { $$ = "minute"; } : | SECOND_P { $$ = "second"; } : | Sconst { $$ = $1; } 0.00 : 514e95: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514e9c: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 514e9f: e9 dc ca ff ff jmpq 511980 : | YEAR_P { $$ = "year"; } : | MONTH_P { $$ = "month"; } : | DAY_P { $$ = "day"; } : | HOUR_P { $$ = "hour"; } : | MINUTE_P { $$ = "minute"; } : | SECOND_P { $$ = "second"; } 0.00 : 514ea4: 41 be bc 94 8c 00 mov $0x8c94bc,%r14d : | Sconst { $$ = $1; } 0.00 : 514eaa: e9 d1 ca ff ff jmpq 511980 : IDENT { $$ = $1; } : | YEAR_P { $$ = "year"; } : | MONTH_P { $$ = "month"; } : | DAY_P { $$ = "day"; } : | HOUR_P { $$ = "hour"; } : | MINUTE_P { $$ = "minute"; } 0.00 : 514eaf: 41 be 9a 94 8c 00 mov $0x8c949a,%r14d : | SECOND_P { $$ = "second"; } 0.00 : 514eb5: e9 c6 ca ff ff jmpq 511980 : extract_arg: : IDENT { $$ = $1; } : | YEAR_P { $$ = "year"; } : | MONTH_P { $$ = "month"; } : | DAY_P { $$ = "day"; } : | HOUR_P { $$ = "hour"; } 0.00 : 514eba: 41 be 6e 94 8c 00 mov $0x8c946e,%r14d : | MINUTE_P { $$ = "minute"; } 0.00 : 514ec0: e9 bb ca ff ff jmpq 511980 : */ : extract_arg: : IDENT { $$ = $1; } : | YEAR_P { $$ = "year"; } : | MONTH_P { $$ = "month"; } : | DAY_P { $$ = "day"; } 0.00 : 514ec5: 41 be 53 94 8c 00 mov $0x8c9453,%r14d : | HOUR_P { $$ = "hour"; } 0.00 : 514ecb: e9 b0 ca ff ff jmpq 511980 : * - thomas 2001-04-12 : */ : extract_arg: : IDENT { $$ = $1; } : | YEAR_P { $$ = "year"; } : | MONTH_P { $$ = "month"; } 0.00 : 514ed0: 41 be 60 94 8c 00 mov $0x8c9460,%r14d : | DAY_P { $$ = "day"; } 0.00 : 514ed6: e9 a5 ca ff ff jmpq 511980 : /* Allow delimited string Sconst in extract_arg as an SQL extension. : * - thomas 2001-04-12 : */ : extract_arg: : IDENT { $$ = $1; } : | YEAR_P { $$ = "year"; } 0.00 : 514edb: 41 be e2 94 8c 00 mov $0x8c94e2,%r14d : | MONTH_P { $$ = "month"; } 0.00 : 514ee1: e9 9a ca ff ff jmpq 511980 : : /* Allow delimited string Sconst in extract_arg as an SQL extension. : * - thomas 2001-04-12 : */ : extract_arg: : IDENT { $$ = $1; } 0.00 : 514ee6: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514eed: 4c 8b 32 mov (%rdx),%r14 : | YEAR_P { $$ = "year"; } 0.00 : 514ef0: e9 8b ca ff ff jmpq 511980 : extract_list: : extract_arg FROM a_expr : { : $$ = list_make2(makeStringConst($1, @1), $3); : } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514ef5: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 514ef8: e9 83 ca ff ff jmpq 511980 : : : extract_list: : extract_arg FROM a_expr : { : $$ = list_make2(makeStringConst($1, @1), $3); 0.00 : 514efd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514f04: 31 f6 xor %esi,%esi 0.00 : 514f06: 48 8b 3a mov (%rdx),%rdi 0.00 : 514f09: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514f10: e8 3b c9 0c 00 callq 5e1850 0.00 : 514f15: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 514f1c: 48 89 c3 mov %rax,%rbx 0.00 : 514f1f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514f26: 8b 71 f8 mov -0x8(%rcx),%esi 0.00 : 514f29: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 514f2d: e8 3e bc ff ff callq 510b70 0.00 : 514f32: 48 89 de mov %rbx,%rsi 0.00 : 514f35: 48 89 c7 mov %rax,%rdi 0.00 : 514f38: e8 13 c9 0c 00 callq 5e1850 : } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514f3d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : : extract_list: : extract_arg FROM a_expr : { : $$ = list_make2(makeStringConst($1, @1), $3); 0.00 : 514f44: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 514f47: e9 34 ca ff ff jmpq 511980 : $$ = makeAArrayExpr(NIL, @1); : } : ; : : array_expr_list: array_expr { $$ = list_make1($1); } : | array_expr_list ',' array_expr { $$ = lappend($1, $3); } 0.00 : 514f4c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 514f53: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 514f57: 48 8b 36 mov (%rsi),%rsi 0.00 : 514f5a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514f61: e8 1a cf 0c 00 callq 5e1e80 : ; 0.00 : 514f66: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeAArrayExpr(NIL, @1); : } : ; : : array_expr_list: array_expr { $$ = list_make1($1); } : | array_expr_list ',' array_expr { $$ = lappend($1, $3); } 0.00 : 514f6d: 49 89 c6 mov %rax,%r14 : ; 0.00 : 514f70: e9 0b ca ff ff jmpq 511980 : * are the same as "a_expr" and "row" except that DEFAULT can appear at : * the top level. : */ : : ctext_expr: : a_expr { $$ = (Node *) $1; } 0.00 : 514f75: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 514f7c: 4c 8b 33 mov (%rbx),%r14 : | DEFAULT 0.00 : 514f7f: e9 fc c9 ff ff jmpq 511980 : | indirection indirection_el { $$ = lappend($1, $2); } : ; : : opt_indirection: : /*EMPTY*/ { $$ = NIL; } : | opt_indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514f84: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 514f8b: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 514f8f: 48 8b 31 mov (%rcx),%rsi 0.00 : 514f92: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514f99: e8 e2 ce 0c 00 callq 5e1e80 : ; 0.00 : 514f9e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | indirection indirection_el { $$ = lappend($1, $2); } : ; : : opt_indirection: : /*EMPTY*/ { $$ = NIL; } : | opt_indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514fa5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 514fa8: e9 d3 c9 ff ff jmpq 511980 : indirection_el { $$ = list_make1($1); } : | indirection indirection_el { $$ = lappend($1, $2); } : ; : : opt_indirection: : /*EMPTY*/ { $$ = NIL; } 0.00 : 514fad: 45 31 f6 xor %r14d,%r14d : | opt_indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514fb0: e9 cb c9 ff ff jmpq 511980 : } : ; : : indirection: : indirection_el { $$ = list_make1($1); } : | indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514fb5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 514fbc: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 514fc0: 48 8b 32 mov (%rdx),%rsi 0.00 : 514fc3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514fca: e8 b1 ce 0c 00 callq 5e1e80 : ; 0.00 : 514fcf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : indirection: : indirection_el { $$ = list_make1($1); } : | indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514fd6: 49 89 c6 mov %rax,%r14 : ; 0.00 : 514fd9: e9 a2 c9 ff ff jmpq 511980 : $$ = (Node *) ai; : } : ; : : indirection: : indirection_el { $$ = list_make1($1); } 0.00 : 514fde: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 514fe5: 31 f6 xor %esi,%esi 0.00 : 514fe7: 48 8b 38 mov (%rax),%rdi 0.00 : 514fea: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 514ff1: e8 5a c8 0c 00 callq 5e1850 : | indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 514ff6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) ai; : } : ; : : indirection: : indirection_el { $$ = list_make1($1); } 0.00 : 514ffd: 49 89 c6 mov %rax,%r14 : | indirection indirection_el { $$ = lappend($1, $2); } 0.00 : 515000: e9 7b c9 ff ff jmpq 511980 : ai->uidx = $2; : $$ = (Node *) ai; : } : | '[' a_expr ':' a_expr ']' : { : A_Indices *ai = makeNode(A_Indices); 0.00 : 515005: 48 8b 3d 54 58 6a 00 mov 0x6a5854(%rip),%rdi # bba860 0.00 : 51500c: be 18 00 00 00 mov $0x18,%esi 0.00 : 515011: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515018: e8 f3 3d 28 00 callq 798e10 0.00 : 51501d: c7 00 8a 03 00 00 movl $0x38a,(%rax) : ai->lidx = $2; 0.00 : 515023: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : ai->uidx = $4; : $$ = (Node *) ai; 0.00 : 51502a: 49 89 c6 mov %rax,%r14 : $$ = (Node *) ai; : } : | '[' a_expr ':' a_expr ']' : { : A_Indices *ai = makeNode(A_Indices); : ai->lidx = $2; 0.00 : 51502d: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 515031: 48 89 50 08 mov %rdx,0x8(%rax) : ai->uidx = $4; 0.00 : 515035: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 515039: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) ai; : } : ; 0.00 : 51503d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515044: e9 37 c9 ff ff jmpq 511980 : { : $$ = (Node *) makeNode(A_Star); : } : | '[' a_expr ']' : { : A_Indices *ai = makeNode(A_Indices); 0.00 : 515049: 48 8b 3d 10 58 6a 00 mov 0x6a5810(%rip),%rdi # bba860 0.00 : 515050: be 18 00 00 00 mov $0x18,%esi 0.00 : 515055: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51505c: e8 af 3d 28 00 callq 798e10 0.00 : 515061: c7 00 8a 03 00 00 movl $0x38a,(%rax) : ai->lidx = NULL; 0.00 : 515067: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51506e: 00 : ai->uidx = $2; : $$ = (Node *) ai; 0.00 : 51506f: 49 89 c6 mov %rax,%r14 : } : | '[' a_expr ']' : { : A_Indices *ai = makeNode(A_Indices); : ai->lidx = NULL; : ai->uidx = $2; 0.00 : 515072: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515079: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51507d: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) ai; : } : | '[' a_expr ':' a_expr ']' 0.00 : 515081: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515088: e9 f3 c8 ff ff jmpq 511980 : { : $$ = (Node *) makeString($2); : } : | '.' '*' : { : $$ = (Node *) makeNode(A_Star); 0.00 : 51508d: 48 8b 3d cc 57 6a 00 mov 0x6a57cc(%rip),%rdi # bba860 0.00 : 515094: be 04 00 00 00 mov $0x4,%esi 0.00 : 515099: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5150a0: e8 7b 3f 28 00 callq 799020 0.00 : 5150a5: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 5150ab: 49 89 c6 mov %rax,%r14 : } : | '[' a_expr ']' 0.00 : 5150ae: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5150b5: e9 c6 c8 ff ff jmpq 511980 : ; : : indirection_el: : '.' attr_name : { : $$ = (Node *) makeString($2); 0.00 : 5150ba: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5150c1: 48 8b 3e mov (%rsi),%rdi 0.00 : 5150c4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5150cb: e8 20 a6 0e 00 callq 5ff6f0 : } : | '.' '*' 0.00 : 5150d0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : indirection_el: : '.' attr_name : { : $$ = (Node *) makeString($2); 0.00 : 5150d7: 49 89 c6 mov %rax,%r14 : } : | '.' '*' 0.00 : 5150da: e9 a1 c8 ff ff jmpq 511980 : { : $$ = makeColumnRef($1, NIL, @1, yyscanner); : } : | ColId indirection : { : $$ = makeColumnRef($1, $2, @1, yyscanner); 0.00 : 5150df: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5150e6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5150ed: 8b 51 fc mov -0x4(%rcx),%edx 0.00 : 5150f0: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 5150f4: 48 8b 33 mov (%rbx),%rsi 0.00 : 5150f7: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 5150fe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515105: e8 c6 c2 ff ff callq 5113d0 : } : ; 0.00 : 51510a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeColumnRef($1, NIL, @1, yyscanner); : } : | ColId indirection : { : $$ = makeColumnRef($1, $2, @1, yyscanner); 0.00 : 515111: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 515114: e9 67 c8 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : columnref: ColId : { : $$ = makeColumnRef($1, NIL, @1, yyscanner); 0.00 : 515119: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 515120: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515127: 31 f6 xor %esi,%esi 0.00 : 515129: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 515130: 8b 13 mov (%rbx),%edx 0.00 : 515132: 48 8b 38 mov (%rax),%rdi 0.00 : 515135: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51513c: e8 8f c2 ff ff callq 5113d0 : } : | ColId indirection 0.00 : 515141: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ { $$ = NULL; } : ; : : columnref: ColId : { : $$ = makeColumnRef($1, NIL, @1, yyscanner); 0.00 : 515148: 49 89 c6 mov %rax,%r14 : } : | ColId indirection 0.00 : 51514b: e9 30 c8 ff ff jmpq 511980 : ELSE a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } : ; : : case_arg: a_expr { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 515150: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 515153: e9 28 c8 ff ff jmpq 511980 : case_default: : ELSE a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } : ; : : case_arg: a_expr { $$ = $1; } 0.00 : 515158: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51515f: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 515162: e9 19 c8 ff ff jmpq 511980 : } : ; : : case_default: : ELSE a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 515167: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51516a: e9 11 c8 ff ff jmpq 511980 : $$ = (Node *)w; : } : ; : : case_default: : ELSE a_expr { $$ = $2; } 0.00 : 51516f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 515176: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 515179: e9 02 c8 ff ff jmpq 511980 : ; : : when_clause: : WHEN a_expr THEN a_expr : { : CaseWhen *w = makeNode(CaseWhen); 0.00 : 51517e: 48 8b 3d db 56 6a 00 mov 0x6a56db(%rip),%rdi # bba860 0.00 : 515185: be 20 00 00 00 mov $0x20,%esi 0.00 : 51518a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515191: e8 7a 3c 28 00 callq 798e10 0.00 : 515196: c7 00 47 01 00 00 movl $0x147,(%rax) : w->expr = (Expr *) $2; 0.00 : 51519c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : w->result = (Expr *) $4; : w->location = @1; : $$ = (Node *)w; 0.00 : 5151a3: 49 89 c6 mov %rax,%r14 : : when_clause: : WHEN a_expr THEN a_expr : { : CaseWhen *w = makeNode(CaseWhen); : w->expr = (Expr *) $2; 0.00 : 5151a6: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5151aa: 48 89 50 08 mov %rdx,0x8(%rax) : w->result = (Expr *) $4; 0.00 : 5151ae: 48 8b 11 mov (%rcx),%rdx 0.00 : 5151b1: 48 89 50 10 mov %rdx,0x10(%rax) : w->location = @1; 0.00 : 5151b5: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5151bc: 8b 53 f4 mov -0xc(%rbx),%edx 0.00 : 5151bf: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *)w; : } : ; 0.00 : 5151c2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5151c9: e9 b2 c7 ff ff jmpq 511980 : | /* EMPTY */ { $$ = NIL; } : ; : : target_list: : target_el { $$ = list_make1($1); } : | target_list ',' target_el { $$ = lappend($1, $3); } 0.00 : 5151ce: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5151d5: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5151d9: 48 8b 32 mov (%rdx),%rsi 0.00 : 5151dc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5151e3: e8 98 cc 0c 00 callq 5e1e80 : ; 0.00 : 5151e8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /* EMPTY */ { $$ = NIL; } : ; : : target_list: : target_el { $$ = list_make1($1); } : | target_list ',' target_el { $$ = lappend($1, $3); } 0.00 : 5151ef: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5151f2: e9 89 c7 ff ff jmpq 511980 : opt_target_list: target_list { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : target_list: : target_el { $$ = list_make1($1); } 0.00 : 5151f7: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5151fe: 31 f6 xor %esi,%esi 0.00 : 515200: 48 8b 38 mov (%rax),%rdi 0.00 : 515203: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51520a: e8 41 c6 0c 00 callq 5e1850 : | target_list ',' target_el { $$ = lappend($1, $3); } 0.00 : 51520f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : opt_target_list: target_list { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : target_list: : target_el { $$ = list_make1($1); } 0.00 : 515216: 49 89 c6 mov %rax,%r14 : | target_list ',' target_el { $$ = lappend($1, $3); } 0.00 : 515219: e9 62 c7 ff ff jmpq 511980 : * target list for SELECT : * : *****************************************************************************/ : : opt_target_list: target_list { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 51521e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 515221: e9 5a c7 ff ff jmpq 511980 : * : * target list for SELECT : * : *****************************************************************************/ : : opt_target_list: target_list { $$ = $1; } 0.00 : 515226: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51522d: 4c 8b 33 mov (%rbx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 515230: e9 4b c7 ff ff jmpq 511980 : /* : * We should allow ROW '(' ctext_expr_list ')' too, but that seems to require : * making VALUES a fully reserved word, which will probably break more apps : * than allowing the noise-word is worth. : */ : ctext_row: '(' ctext_expr_list ')' { $$ = $2; } 0.00 : 515235: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51523c: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : ; 0.00 : 515240: e9 3b c7 ff ff jmpq 511980 : } : ; : : ctext_expr_list: : ctext_expr { $$ = list_make1($1); } : | ctext_expr_list ',' ctext_expr { $$ = lappend($1, $3); } 0.00 : 515245: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51524c: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 515250: 48 8b 32 mov (%rdx),%rsi 0.00 : 515253: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51525a: e8 21 cc 0c 00 callq 5e1e80 : ; 0.00 : 51525f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : ctext_expr_list: : ctext_expr { $$ = list_make1($1); } : | ctext_expr_list ',' ctext_expr { $$ = lappend($1, $3); } 0.00 : 515266: 49 89 c6 mov %rax,%r14 : ; 0.00 : 515269: e9 12 c7 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : ctext_expr_list: : ctext_expr { $$ = list_make1($1); } 0.00 : 51526e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515275: 31 f6 xor %esi,%esi 0.00 : 515277: 48 8b 38 mov (%rax),%rdi 0.00 : 51527a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515281: e8 ca c5 0c 00 callq 5e1850 : | ctext_expr_list ',' ctext_expr { $$ = lappend($1, $3); } 0.00 : 515286: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) n; : } : ; : : ctext_expr_list: : ctext_expr { $$ = list_make1($1); } 0.00 : 51528d: 49 89 c6 mov %rax,%r14 : | ctext_expr_list ',' ctext_expr { $$ = lappend($1, $3); } 0.00 : 515290: e9 eb c6 ff ff jmpq 511980 : : ctext_expr: : a_expr { $$ = (Node *) $1; } : | DEFAULT : { : SetToDefault *n = makeNode(SetToDefault); 0.00 : 515295: 48 8b 3d c4 55 6a 00 mov 0x6a55c4(%rip),%rdi # bba860 0.00 : 51529c: be 14 00 00 00 mov $0x14,%esi 0.00 : 5152a1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5152a8: e8 73 3d 28 00 callq 799020 0.00 : 5152ad: c7 00 53 01 00 00 movl $0x153,(%rax) : n->location = @1; 0.00 : 5152b3: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : $$ = (Node *) n; 0.00 : 5152ba: 49 89 c6 mov %rax,%r14 : ctext_expr: : a_expr { $$ = (Node *) $1; } : | DEFAULT : { : SetToDefault *n = makeNode(SetToDefault); : n->location = @1; 0.00 : 5152bd: 8b 16 mov (%rsi),%edx 0.00 : 5152bf: 89 50 10 mov %edx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5152c2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5152c9: e9 b2 c6 ff ff jmpq 511980 : $$->val = (Node *)$1; : $$->location = @1; : } : | '*' : { : ColumnRef *n = makeNode(ColumnRef); 0.00 : 5152ce: 48 8b 3d 8b 55 6a 00 mov 0x6a558b(%rip),%rdi # bba860 0.00 : 5152d5: be 18 00 00 00 mov $0x18,%esi 0.00 : 5152da: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5152e1: e8 2a 3b 28 00 callq 798e10 0.00 : 5152e6: c7 00 85 03 00 00 movl $0x385,(%rax) : n->fields = list_make1(makeNode(A_Star)); 0.00 : 5152ec: 48 8b 3d 6d 55 6a 00 mov 0x6a556d(%rip),%rdi # bba860 0.00 : 5152f3: be 04 00 00 00 mov $0x4,%esi : $$->val = (Node *)$1; : $$->location = @1; : } : | '*' : { : ColumnRef *n = makeNode(ColumnRef); 0.00 : 5152f8: 48 89 c3 mov %rax,%rbx : n->fields = list_make1(makeNode(A_Star)); 0.00 : 5152fb: e8 20 3d 28 00 callq 799020 0.00 : 515300: 31 f6 xor %esi,%esi 0.00 : 515302: 48 89 c7 mov %rax,%rdi 0.00 : 515305: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 51530b: e8 40 c5 0c 00 callq 5e1850 0.00 : 515310: 48 89 43 08 mov %rax,0x8(%rbx) : n->location = @1; 0.00 : 515314: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51531b: 8b 06 mov (%rsi),%eax : : $$ = makeNode(ResTarget); 0.00 : 51531d: be 28 00 00 00 mov $0x28,%esi : } : | '*' : { : ColumnRef *n = makeNode(ColumnRef); : n->fields = list_make1(makeNode(A_Star)); : n->location = @1; 0.00 : 515322: 89 43 10 mov %eax,0x10(%rbx) : : $$ = makeNode(ResTarget); 0.00 : 515325: 48 8b 3d 34 55 6a 00 mov 0x6a5534(%rip),%rdi # bba860 0.00 : 51532c: e8 df 3a 28 00 callq 798e10 0.00 : 515331: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = NULL; 0.00 : 515337: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51533e: 00 : { : ColumnRef *n = makeNode(ColumnRef); : n->fields = list_make1(makeNode(A_Star)); : n->location = @1; : : $$ = makeNode(ResTarget); 0.00 : 51533f: 49 89 c6 mov %rax,%r14 : $$->name = NULL; : $$->indirection = NIL; 0.00 : 515342: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 515349: 00 : $$->val = (Node *)n; 0.00 : 51534a: 48 89 58 18 mov %rbx,0x18(%rax) : $$->location = @1; 0.00 : 51534e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 515355: 8b 02 mov (%rdx),%eax 0.00 : 515357: 41 89 46 20 mov %eax,0x20(%r14) : } : ; 0.00 : 51535b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515362: e9 19 c6 ff ff jmpq 511980 : $$->val = (Node *)$1; : $$->location = @1; : } : | a_expr : { : $$ = makeNode(ResTarget); 0.00 : 515367: 48 8b 3d f2 54 6a 00 mov 0x6a54f2(%rip),%rdi # bba860 0.00 : 51536e: be 28 00 00 00 mov $0x28,%esi 0.00 : 515373: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51537a: e8 91 3a 28 00 callq 798e10 0.00 : 51537f: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = NULL; 0.00 : 515385: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51538c: 00 : $$->val = (Node *)$1; : $$->location = @1; : } : | a_expr : { : $$ = makeNode(ResTarget); 0.00 : 51538d: 49 89 c6 mov %rax,%r14 : $$->name = NULL; : $$->indirection = NIL; 0.00 : 515390: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 515397: 00 : $$->val = (Node *)$1; 0.00 : 515398: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51539f: 48 8b 01 mov (%rcx),%rax 0.00 : 5153a2: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5153a6: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5153ad: 8b 03 mov (%rbx),%eax 0.00 : 5153af: 41 89 46 20 mov %eax,0x20(%r14) : } : | '*' 0.00 : 5153b3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5153ba: e9 c1 c5 ff ff jmpq 511980 : * as an infix expression, which we accomplish by assigning : * IDENT a precedence higher than POSTFIXOP. : */ : | a_expr IDENT : { : $$ = makeNode(ResTarget); 0.00 : 5153bf: 48 8b 3d 9a 54 6a 00 mov 0x6a549a(%rip),%rdi # bba860 0.00 : 5153c6: be 28 00 00 00 mov $0x28,%esi 0.00 : 5153cb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5153d2: e8 39 3a 28 00 callq 798e10 0.00 : 5153d7: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = $2; 0.00 : 5153dd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : * as an infix expression, which we accomplish by assigning : * IDENT a precedence higher than POSTFIXOP. : */ : | a_expr IDENT : { : $$ = makeNode(ResTarget); 0.00 : 5153e4: 49 89 c6 mov %rax,%r14 : $$->name = $2; 0.00 : 5153e7: 48 8b 06 mov (%rsi),%rax : $$->indirection = NIL; 0.00 : 5153ea: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 5153f1: 00 : * IDENT a precedence higher than POSTFIXOP. : */ : | a_expr IDENT : { : $$ = makeNode(ResTarget); : $$->name = $2; 0.00 : 5153f2: 49 89 46 08 mov %rax,0x8(%r14) : $$->indirection = NIL; : $$->val = (Node *)$1; 0.00 : 5153f6: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 5153fa: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5153fe: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 515405: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 515408: 41 89 46 20 mov %eax,0x20(%r14) : } : | a_expr 0.00 : 51540c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515413: e9 68 c5 ff ff jmpq 511980 : | target_list ',' target_el { $$ = lappend($1, $3); } : ; : : target_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); 0.00 : 515418: 48 8b 3d 41 54 6a 00 mov 0x6a5441(%rip),%rdi # bba860 0.00 : 51541f: be 28 00 00 00 mov $0x28,%esi 0.00 : 515424: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51542b: e8 e0 39 28 00 callq 798e10 0.00 : 515430: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = $3; 0.00 : 515436: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : | target_list ',' target_el { $$ = lappend($1, $3); } : ; : : target_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); 0.00 : 51543d: 49 89 c6 mov %rax,%r14 : $$->name = $3; 0.00 : 515440: 48 8b 01 mov (%rcx),%rax : $$->indirection = NIL; 0.00 : 515443: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 51544a: 00 : ; : : target_el: a_expr AS ColLabel : { : $$ = makeNode(ResTarget); : $$->name = $3; 0.00 : 51544b: 49 89 46 08 mov %rax,0x8(%r14) : $$->indirection = NIL; : $$->val = (Node *)$1; 0.00 : 51544f: 48 8b 41 f0 mov -0x10(%rcx),%rax 0.00 : 515453: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 515457: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51545e: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 515461: 41 89 46 20 mov %eax,0x20(%r14) : } : /* 0.00 : 515465: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51546c: e9 0f c5 ff ff jmpq 511980 : * : *****************************************************************************/ : : qualified_name_list: : qualified_name { $$ = list_make1($1); } : | qualified_name_list ',' qualified_name { $$ = lappend($1, $3); } 0.00 : 515471: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515478: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 51547c: 48 8b 33 mov (%rbx),%rsi 0.00 : 51547f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515486: e8 f5 c9 0c 00 callq 5e1e80 : ; 0.00 : 51548b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * : *****************************************************************************/ : : qualified_name_list: : qualified_name { $$ = list_make1($1); } : | qualified_name_list ',' qualified_name { $$ = lappend($1, $3); } 0.00 : 515492: 49 89 c6 mov %rax,%r14 : ; 0.00 : 515495: e9 e6 c4 ff ff jmpq 511980 : * Names and constants : * : *****************************************************************************/ : : qualified_name_list: : qualified_name { $$ = list_make1($1); } 0.00 : 51549a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5154a1: 31 f6 xor %esi,%esi 0.00 : 5154a3: 48 8b 39 mov (%rcx),%rdi 0.00 : 5154a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5154ad: e8 9e c3 0c 00 callq 5e1850 : | qualified_name_list ',' qualified_name { $$ = lappend($1, $3); } 0.00 : 5154b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * Names and constants : * : *****************************************************************************/ : : qualified_name_list: : qualified_name { $$ = list_make1($1); } 0.00 : 5154b9: 49 89 c6 mov %rax,%r14 : | qualified_name_list ',' qualified_name { $$ = lappend($1, $3); } 0.00 : 5154bc: e9 bf c4 ff ff jmpq 511980 : b->booltesttype = IS_TRUE; : $$ = (Node *)b; : } : | a_expr IS NOT TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 5154c1: 48 8b 3d 98 53 6a 00 mov 0x6a5398(%rip),%rdi # bba860 0.00 : 5154c8: be 18 00 00 00 mov $0x18,%esi 0.00 : 5154cd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5154d4: e8 37 39 28 00 callq 798e10 0.00 : 5154d9: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 5154df: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : b->booltesttype = IS_NOT_TRUE; : $$ = (Node *)b; 0.00 : 5154e6: 49 89 c6 mov %rax,%r14 : $$ = (Node *)b; : } : | a_expr IS NOT TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5154e9: 48 8b 56 e8 mov -0x18(%rsi),%rdx : b->booltesttype = IS_NOT_TRUE; 0.00 : 5154ed: c7 40 10 01 00 00 00 movl $0x1,0x10(%rax) : $$ = (Node *)b; : } : | a_expr IS NOT TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 5154f4: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_NOT_TRUE; : $$ = (Node *)b; : } : | a_expr IS FALSE_P %prec IS 0.00 : 5154f8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5154ff: e9 7c c4 ff ff jmpq 511980 : list_concat($1, $3), : @2); : } : | a_expr IS TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); 0.00 : 515504: 48 8b 3d 55 53 6a 00 mov 0x6a5355(%rip),%rdi # bba860 0.00 : 51550b: be 18 00 00 00 mov $0x18,%esi 0.00 : 515510: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515517: e8 f4 38 28 00 callq 798e10 0.00 : 51551c: c7 00 50 01 00 00 movl $0x150,(%rax) : b->arg = (Expr *) $1; 0.00 : 515522: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : b->booltesttype = IS_TRUE; : $$ = (Node *)b; 0.00 : 515529: 49 89 c6 mov %rax,%r14 : @2); : } : | a_expr IS TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 51552c: 48 8b 53 f0 mov -0x10(%rbx),%rdx : b->booltesttype = IS_TRUE; 0.00 : 515530: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : @2); : } : | a_expr IS TRUE_P %prec IS : { : BooleanTest *b = makeNode(BooleanTest); : b->arg = (Expr *) $1; 0.00 : 515537: 48 89 50 08 mov %rdx,0x8(%rax) : b->booltesttype = IS_TRUE; : $$ = (Node *)b; : } : | a_expr IS NOT TRUE_P %prec IS 0.00 : 51553b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515542: e9 39 c4 ff ff jmpq 511980 : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; : } : | row OVERLAPS row : { : if (list_length($1) != 2) 0.00 : 515547: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51554e: 48 8b 7b f0 mov -0x10(%rbx),%rdi : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 515552: 48 85 ff test %rdi,%rdi 0.00 : 515555: 0f 84 3a 4c 01 00 je 52a195 0.00 : 51555b: 83 7f 04 02 cmpl $0x2,0x4(%rdi) 0.00 : 51555f: 0f 85 30 4c 01 00 jne 52a195 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("wrong number of parameters on left side of OVERLAPS expression"), : parser_errposition(@1))); : if (list_length($3) != 2) 0.00 : 515565: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51556c: 48 8b 30 mov (%rax),%rsi 0.00 : 51556f: 48 85 f6 test %rsi,%rsi 0.00 : 515572: 0f 84 a4 49 01 00 je 529f1c 0.00 : 515578: 83 7e 04 02 cmpl $0x2,0x4(%rsi) 0.00 : 51557c: 0f 85 9a 49 01 00 jne 529f1c : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("wrong number of parameters on right side of OVERLAPS expression"), : parser_errposition(@3))); : $$ = (Node *) makeFuncCall(SystemFuncName("overlaps"), 0.00 : 515582: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515589: 44 8b 61 fc mov -0x4(%rcx),%r12d 0.00 : 51558d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515594: e8 27 d0 0c 00 callq 5e25c0 0.00 : 515599: bf 6e a0 8e 00 mov $0x8ea06e,%edi 0.00 : 51559e: 48 89 c3 mov %rax,%rbx 0.00 : 5155a1: e8 4a b4 ff ff callq 5109f0 0.00 : 5155a6: 44 89 e2 mov %r12d,%edx 0.00 : 5155a9: 48 89 c7 mov %rax,%rdi 0.00 : 5155ac: 48 89 de mov %rbx,%rsi 0.00 : 5155af: e8 6c be 0d 00 callq 5f1420 : list_concat($1, $3), : @2); : } : | a_expr IS TRUE_P %prec IS 0.00 : 5155b4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : if (list_length($3) != 2) : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("wrong number of parameters on right side of OVERLAPS expression"), : parser_errposition(@3))); : $$ = (Node *) makeFuncCall(SystemFuncName("overlaps"), 0.00 : 5155bb: 49 89 c6 mov %rax,%r14 : list_concat($1, $3), : @2); : } : | a_expr IS TRUE_P %prec IS 0.00 : 5155be: e9 bd c3 ff ff jmpq 511980 : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; : } : | a_expr NOTNULL : { : NullTest *n = makeNode(NullTest); 0.00 : 5155c3: 48 8b 3d 96 52 6a 00 mov 0x6a5296(%rip),%rdi # bba860 0.00 : 5155ca: be 18 00 00 00 mov $0x18,%esi 0.00 : 5155cf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5155d6: e8 35 38 28 00 callq 798e10 0.00 : 5155db: c7 00 4f 01 00 00 movl $0x14f,(%rax) : n->arg = (Expr *) $1; 0.00 : 5155e1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; 0.00 : 5155e8: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | a_expr NOTNULL : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 5155eb: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->nulltesttype = IS_NOT_NULL; 0.00 : 5155ef: c7 40 10 01 00 00 00 movl $0x1,0x10(%rax) : $$ = (Node *)n; : } : | a_expr NOTNULL : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 5155f6: 48 89 50 08 mov %rdx,0x8(%rax) : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; : } : | row OVERLAPS row 0.00 : 5155fa: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515601: e9 7a c3 ff ff jmpq 511980 : n->nulltesttype = IS_NULL; : $$ = (Node *)n; : } : | a_expr IS NOT NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); 0.00 : 515606: 48 8b 3d 53 52 6a 00 mov 0x6a5253(%rip),%rdi # bba860 0.00 : 51560d: be 18 00 00 00 mov $0x18,%esi 0.00 : 515612: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515619: e8 f2 37 28 00 callq 798e10 0.00 : 51561e: c7 00 4f 01 00 00 movl $0x14f,(%rax) : n->arg = (Expr *) $1; 0.00 : 515624: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; 0.00 : 51562b: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | a_expr IS NOT NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 51562e: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->nulltesttype = IS_NOT_NULL; 0.00 : 515632: c7 40 10 01 00 00 00 movl $0x1,0x10(%rax) : $$ = (Node *)n; : } : | a_expr IS NOT NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 515639: 48 89 50 08 mov %rdx,0x8(%rax) : n->nulltesttype = IS_NOT_NULL; : $$ = (Node *)n; : } : | a_expr NOTNULL 0.00 : 51563d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515644: e9 37 c3 ff ff jmpq 511980 : n->nulltesttype = IS_NULL; : $$ = (Node *)n; : } : | a_expr ISNULL : { : NullTest *n = makeNode(NullTest); 0.00 : 515649: 48 8b 3d 10 52 6a 00 mov 0x6a5210(%rip),%rdi # bba860 0.00 : 515650: be 18 00 00 00 mov $0x18,%esi 0.00 : 515655: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51565c: e8 af 37 28 00 callq 798e10 0.00 : 515661: c7 00 4f 01 00 00 movl $0x14f,(%rax) : n->arg = (Expr *) $1; 0.00 : 515667: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->nulltesttype = IS_NULL; : $$ = (Node *)n; 0.00 : 51566e: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | a_expr ISNULL : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 515671: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->nulltesttype = IS_NULL; 0.00 : 515675: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : $$ = (Node *)n; : } : | a_expr ISNULL : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 51567c: 48 89 50 08 mov %rdx,0x8(%rax) : n->nulltesttype = IS_NULL; : $$ = (Node *)n; : } : | a_expr IS NOT NULL_P %prec IS 0.00 : 515680: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 515687: e9 f4 c2 ff ff jmpq 511980 : * a ISNULL : * a NOTNULL : */ : | a_expr IS NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); 0.00 : 51568c: 48 8b 3d cd 51 6a 00 mov 0x6a51cd(%rip),%rdi # bba860 0.00 : 515693: be 18 00 00 00 mov $0x18,%esi 0.00 : 515698: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51569f: e8 6c 37 28 00 callq 798e10 0.00 : 5156a4: c7 00 4f 01 00 00 movl $0x14f,(%rax) : n->arg = (Expr *) $1; 0.00 : 5156aa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->nulltesttype = IS_NULL; : $$ = (Node *)n; 0.00 : 5156b1: 49 89 c6 mov %rax,%r14 : * a NOTNULL : */ : | a_expr IS NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 5156b4: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->nulltesttype = IS_NULL; 0.00 : 5156b8: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : * a NOTNULL : */ : | a_expr IS NULL_P %prec IS : { : NullTest *n = makeNode(NullTest); : n->arg = (Expr *) $1; 0.00 : 5156bf: 48 89 50 08 mov %rdx,0x8(%rax) : n->nulltesttype = IS_NULL; : $$ = (Node *)n; : } : | a_expr ISNULL 0.00 : 5156c3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5156ca: e9 b1 c2 ff ff jmpq 511980 : } : | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, $7), : @2); 0.00 : 5156cf: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5156d6: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5156dd: 31 f6 xor %esi,%esi 0.00 : 5156df: 48 8b 3a mov (%rdx),%rdi 0.00 : 5156e2: 44 8b 60 ec mov -0x14(%rax),%r12d 0.00 : 5156e6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5156ed: e8 5e c1 0c 00 callq 5e1850 0.00 : 5156f2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5156f9: 48 89 c6 mov %rax,%rsi 0.00 : 5156fc: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 515700: e8 4b c1 0c 00 callq 5e1850 0.00 : 515705: bf 32 97 7c 00 mov $0x7c9732,%edi 0.00 : 51570a: 48 89 c3 mov %rax,%rbx 0.00 : 51570d: e8 de b2 ff ff callq 5109f0 0.00 : 515712: 48 89 de mov %rbx,%rsi 0.00 : 515715: 48 89 c7 mov %rax,%rdi 0.00 : 515718: 44 89 e2 mov %r12d,%edx 0.00 : 51571b: e8 00 bd 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 515720: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515727: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : } : | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, $7), : @2); 0.00 : 51572e: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 515731: 31 ff xor %edi,%edi 0.00 : 515733: 44 8b 46 ec mov -0x14(%rsi),%r8d 0.00 : 515737: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 51573b: be 41 97 7c 00 mov $0x7c9741,%esi 0.00 : 515740: e8 2b c3 0d 00 callq 5f1a70 : } : 0.00 : 515745: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, $7), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 51574c: 49 89 c6 mov %rax,%r14 : } : 0.00 : 51574f: e9 2c c2 ff ff jmpq 511980 : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); 0.00 : 515754: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 51575b: 48 8b 3d fe 50 6a 00 mov 0x6a50fe(%rip),%rdi # bba860 0.00 : 515762: be 20 00 00 00 mov $0x20,%esi : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); 0.00 : 515767: 44 8b 60 f4 mov -0xc(%rax),%r12d : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 51576b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515772: e8 99 36 28 00 callq 798e10 : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); 0.00 : 515777: 31 f6 xor %esi,%esi : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 515779: 48 89 c7 mov %rax,%rdi 0.00 : 51577c: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Null; 0.00 : 515782: c7 40 08 8f 02 00 00 movl $0x28f,0x8(%rax) : n->location = location; 0.00 : 515789: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); 0.00 : 515790: e8 bb c0 0c 00 callq 5e1850 0.00 : 515795: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51579c: 48 89 c6 mov %rax,%rsi 0.00 : 51579f: 48 8b 3a mov (%rdx),%rdi 0.00 : 5157a2: e8 a9 c0 0c 00 callq 5e1850 0.00 : 5157a7: bf 32 97 7c 00 mov $0x7c9732,%edi 0.00 : 5157ac: 48 89 c3 mov %rax,%rbx 0.00 : 5157af: e8 3c b2 ff ff callq 5109f0 0.00 : 5157b4: 48 89 de mov %rbx,%rsi 0.00 : 5157b7: 48 89 c7 mov %rax,%rdi 0.00 : 5157ba: 44 89 e2 mov %r12d,%edx 0.00 : 5157bd: e8 5e bc 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 5157c2: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5157c9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); 0.00 : 5157d0: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 5157d3: 31 ff xor %edi,%edi 0.00 : 5157d5: 44 8b 46 f4 mov -0xc(%rsi),%r8d 0.00 : 5157d9: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 5157dd: be 41 97 7c 00 mov $0x7c9741,%esi 0.00 : 5157e2: e8 89 c2 0d 00 callq 5f1a70 : } : | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr 0.00 : 5157e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($5, makeNullAConst(-1)), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n, @2); 0.00 : 5157ee: 49 89 c6 mov %rax,%r14 : } : | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr 0.00 : 5157f1: e9 8a c1 ff ff jmpq 511980 : } : | a_expr SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, $6), : @2); 0.00 : 5157f6: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5157fd: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 515804: 31 f6 xor %esi,%esi 0.00 : 515806: 48 8b 3a mov (%rdx),%rdi 0.00 : 515809: 44 8b 60 f0 mov -0x10(%rax),%r12d 0.00 : 51580d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515814: e8 37 c0 0c 00 callq 5e1850 0.00 : 515819: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515820: 48 89 c6 mov %rax,%rsi 0.00 : 515823: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 515827: e8 24 c0 0c 00 callq 5e1850 0.00 : 51582c: bf 32 97 7c 00 mov $0x7c9732,%edi 0.00 : 515831: 48 89 c3 mov %rax,%rbx 0.00 : 515834: e8 b7 b1 ff ff callq 5109f0 0.00 : 515839: 48 89 de mov %rbx,%rsi 0.00 : 51583c: 48 89 c7 mov %rax,%rdi 0.00 : 51583f: 44 89 e2 mov %r12d,%edx 0.00 : 515842: e8 d9 bb 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 515847: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51584e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : } : | a_expr SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, $6), : @2); 0.00 : 515855: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 515858: 31 ff xor %edi,%edi 0.00 : 51585a: 44 8b 46 f0 mov -0x10(%rsi),%r8d 0.00 : 51585e: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 515862: be 42 97 7c 00 mov $0x7c9742,%esi 0.00 : 515867: e8 04 c2 0d 00 callq 5f1a70 : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR 0.00 : 51586c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr SIMILAR TO a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, $6), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 515873: 49 89 c6 mov %rax,%r14 : } : | a_expr NOT SIMILAR TO a_expr %prec SIMILAR 0.00 : 515876: e9 05 c1 ff ff jmpq 511980 : : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); 0.00 : 51587b: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 515882: 48 8b 3d d7 4f 6a 00 mov 0x6a4fd7(%rip),%rdi # bba860 0.00 : 515889: be 20 00 00 00 mov $0x20,%esi : : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); 0.00 : 51588e: 44 8b 60 f8 mov -0x8(%rax),%r12d : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 515892: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515899: e8 72 35 28 00 callq 798e10 : : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); 0.00 : 51589e: 31 f6 xor %esi,%esi : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 5158a0: 48 89 c7 mov %rax,%rdi 0.00 : 5158a3: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Null; 0.00 : 5158a9: c7 40 08 8f 02 00 00 movl $0x28f,0x8(%rax) : n->location = location; 0.00 : 5158b0: c7 40 18 ff ff ff ff movl $0xffffffff,0x18(%rax) : : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); 0.00 : 5158b7: e8 94 bf 0c 00 callq 5e1850 0.00 : 5158bc: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5158c3: 48 89 c6 mov %rax,%rsi 0.00 : 5158c6: 48 8b 3a mov (%rdx),%rdi 0.00 : 5158c9: e8 82 bf 0c 00 callq 5e1850 0.00 : 5158ce: bf 32 97 7c 00 mov $0x7c9732,%edi 0.00 : 5158d3: 48 89 c3 mov %rax,%rbx 0.00 : 5158d6: e8 15 b1 ff ff callq 5109f0 0.00 : 5158db: 48 89 de mov %rbx,%rsi 0.00 : 5158de: 48 89 c7 mov %rax,%rdi 0.00 : 5158e1: 44 89 e2 mov %r12d,%edx 0.00 : 5158e4: e8 37 bb 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 5158e9: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5158f0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); 0.00 : 5158f7: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 5158fa: 31 ff xor %edi,%edi 0.00 : 5158fc: 44 8b 46 f8 mov -0x8(%rsi),%r8d 0.00 : 515900: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 515904: be 42 97 7c 00 mov $0x7c9742,%esi 0.00 : 515909: e8 62 c1 0d 00 callq 5f1a70 : } : | a_expr SIMILAR TO a_expr ESCAPE a_expr 0.00 : 51590e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr SIMILAR TO a_expr %prec SIMILAR : { : FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), : list_make2($4, makeNullAConst(-1)), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n, @2); 0.00 : 515915: 49 89 c6 mov %rax,%r14 : } : | a_expr SIMILAR TO a_expr ESCAPE a_expr 0.00 : 515918: e9 63 c0 ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, $4, @2); } : | a_expr NOT ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); 0.00 : 51591d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515924: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51592b: 31 f6 xor %esi,%esi 0.00 : 51592d: 48 8b 38 mov (%rax),%rdi 0.00 : 515930: 44 8b 63 f0 mov -0x10(%rbx),%r12d 0.00 : 515934: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51593b: e8 10 bf 0c 00 callq 5e1850 0.00 : 515940: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 515947: 48 89 c6 mov %rax,%rsi 0.00 : 51594a: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51594e: e8 fd be 0c 00 callq 5e1850 0.00 : 515953: bf 1d 97 7c 00 mov $0x7c971d,%edi 0.00 : 515958: 48 89 c3 mov %rax,%rbx 0.00 : 51595b: e8 90 b0 ff ff callq 5109f0 0.00 : 515960: 48 89 de mov %rbx,%rsi 0.00 : 515963: 48 89 c7 mov %rax,%rdi 0.00 : 515966: 44 89 e2 mov %r12d,%edx 0.00 : 515969: e8 b2 ba 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, (Node *) n, @2); 0.00 : 51596e: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515975: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, $4, @2); } : | a_expr NOT ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); 0.00 : 51597c: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, (Node *) n, @2); 0.00 : 51597f: 31 ff xor %edi,%edi 0.00 : 515981: 44 8b 46 f0 mov -0x10(%rsi),%r8d 0.00 : 515985: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 515989: be 2d 97 7c 00 mov $0x7c972d,%esi 0.00 : 51598e: e8 dd c0 0d 00 callq 5f1a70 : } : 0.00 : 515993: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr NOT ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, (Node *) n, @2); 0.00 : 51599a: 49 89 c6 mov %rax,%r14 : } : 0.00 : 51599d: e9 de bf ff ff jmpq 511980 : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); : } : | a_expr NOT ILIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, $4, @2); } 0.00 : 5159a2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5159a9: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5159b0: be 2d 97 7c 00 mov $0x7c972d,%esi 0.00 : 5159b5: 31 ff xor %edi,%edi 0.00 : 5159b7: 44 8b 41 f8 mov -0x8(%rcx),%r8d 0.00 : 5159bb: 48 8b 50 e8 mov -0x18(%rax),%rdx 0.00 : 5159bf: 48 8b 08 mov (%rax),%rcx 0.00 : 5159c2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5159c9: e8 a2 c0 0d 00 callq 5f1a70 : | a_expr NOT ILIKE a_expr ESCAPE a_expr 0.00 : 5159ce: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); : } : | a_expr NOT ILIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, $4, @2); } 0.00 : 5159d5: 49 89 c6 mov %rax,%r14 : | a_expr NOT ILIKE a_expr ESCAPE a_expr 0.00 : 5159d8: e9 a3 bf ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, $3, @2); } : | a_expr ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); 0.00 : 5159dd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5159e4: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5159eb: 31 f6 xor %esi,%esi 0.00 : 5159ed: 48 8b 38 mov (%rax),%rdi 0.00 : 5159f0: 44 8b 63 f4 mov -0xc(%rbx),%r12d 0.00 : 5159f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5159fb: e8 50 be 0c 00 callq 5e1850 0.00 : 515a00: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 515a07: 48 89 c6 mov %rax,%rsi 0.00 : 515a0a: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 515a0e: e8 3d be 0c 00 callq 5e1850 0.00 : 515a13: bf 1d 97 7c 00 mov $0x7c971d,%edi 0.00 : 515a18: 48 89 c3 mov %rax,%rbx 0.00 : 515a1b: e8 d0 af ff ff callq 5109f0 0.00 : 515a20: 48 89 de mov %rbx,%rsi 0.00 : 515a23: 48 89 c7 mov %rax,%rdi 0.00 : 515a26: 44 89 e2 mov %r12d,%edx 0.00 : 515a29: e8 f2 b9 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); 0.00 : 515a2e: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515a35: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, $3, @2); } : | a_expr ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); 0.00 : 515a3c: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); 0.00 : 515a3f: 31 ff xor %edi,%edi 0.00 : 515a41: 44 8b 46 f4 mov -0xc(%rsi),%r8d 0.00 : 515a45: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 515a49: be 2e 97 7c 00 mov $0x7c972e,%esi 0.00 : 515a4e: e8 1d c0 0d 00 callq 5f1a70 : } : | a_expr NOT ILIKE a_expr 0.00 : 515a53: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr ILIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n, @2); 0.00 : 515a5a: 49 89 c6 mov %rax,%r14 : } : | a_expr NOT ILIKE a_expr 0.00 : 515a5d: e9 1e bf ff ff jmpq 511980 : list_make2($4, $6), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); : } : | a_expr ILIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, $3, @2); } 0.00 : 515a62: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515a69: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515a70: be 2e 97 7c 00 mov $0x7c972e,%esi 0.00 : 515a75: 31 ff xor %edi,%edi 0.00 : 515a77: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515a7b: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515a7f: 48 8b 08 mov (%rax),%rcx 0.00 : 515a82: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515a89: e8 e2 bf 0d 00 callq 5f1a70 : | a_expr ILIKE a_expr ESCAPE a_expr 0.00 : 515a8e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : list_make2($4, $6), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); : } : | a_expr ILIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, $3, @2); } 0.00 : 515a95: 49 89 c6 mov %rax,%r14 : | a_expr ILIKE a_expr ESCAPE a_expr 0.00 : 515a98: e9 e3 be ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, $4, @2); } : | a_expr NOT LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); 0.00 : 515a9d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515aa4: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 515aab: 31 f6 xor %esi,%esi 0.00 : 515aad: 48 8b 38 mov (%rax),%rdi 0.00 : 515ab0: 44 8b 63 f0 mov -0x10(%rbx),%r12d 0.00 : 515ab4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515abb: e8 90 bd 0c 00 callq 5e1850 0.00 : 515ac0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 515ac7: 48 89 c6 mov %rax,%rsi 0.00 : 515aca: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 515ace: e8 7d bd 0c 00 callq 5e1850 0.00 : 515ad3: bf 1d 97 7c 00 mov $0x7c971d,%edi 0.00 : 515ad8: 48 89 c3 mov %rax,%rbx 0.00 : 515adb: e8 10 af ff ff callq 5109f0 0.00 : 515ae0: 48 89 de mov %rbx,%rsi 0.00 : 515ae3: 48 89 c7 mov %rax,%rdi 0.00 : 515ae6: 44 89 e2 mov %r12d,%edx 0.00 : 515ae9: e8 32 b9 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); 0.00 : 515aee: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515af5: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, $4, @2); } : | a_expr NOT LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); 0.00 : 515afc: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); 0.00 : 515aff: 31 ff xor %edi,%edi 0.00 : 515b01: 44 8b 46 f0 mov -0x10(%rsi),%r8d 0.00 : 515b05: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 515b09: be 29 97 7c 00 mov $0x7c9729,%esi 0.00 : 515b0e: e8 5d bf 0d 00 callq 5f1a70 : } : | a_expr ILIKE a_expr 0.00 : 515b13: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr NOT LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($4, $6), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n, @2); 0.00 : 515b1a: 49 89 c6 mov %rax,%r14 : } : | a_expr ILIKE a_expr 0.00 : 515b1d: e9 5e be ff ff jmpq 511980 : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); : } : | a_expr NOT LIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, $4, @2); } 0.00 : 515b22: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515b29: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515b30: be 29 97 7c 00 mov $0x7c9729,%esi 0.00 : 515b35: 31 ff xor %edi,%edi 0.00 : 515b37: 44 8b 41 f8 mov -0x8(%rcx),%r8d 0.00 : 515b3b: 48 8b 50 e8 mov -0x18(%rax),%rdx 0.00 : 515b3f: 48 8b 08 mov (%rax),%rcx 0.00 : 515b42: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515b49: e8 22 bf 0d 00 callq 5f1a70 : | a_expr NOT LIKE a_expr ESCAPE a_expr 0.00 : 515b4e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); : } : | a_expr NOT LIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, $4, @2); } 0.00 : 515b55: 49 89 c6 mov %rax,%r14 : | a_expr NOT LIKE a_expr ESCAPE a_expr 0.00 : 515b58: e9 23 be ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, $3, @2); } : | a_expr LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); 0.00 : 515b5d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 515b64: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 515b6b: 31 f6 xor %esi,%esi 0.00 : 515b6d: 48 8b 3a mov (%rdx),%rdi 0.00 : 515b70: 44 8b 60 f4 mov -0xc(%rax),%r12d 0.00 : 515b74: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515b7b: e8 d0 bc 0c 00 callq 5e1850 0.00 : 515b80: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515b87: 48 89 c6 mov %rax,%rsi 0.00 : 515b8a: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 515b8e: e8 bd bc 0c 00 callq 5e1850 0.00 : 515b93: bf 1d 97 7c 00 mov $0x7c971d,%edi 0.00 : 515b98: 48 89 c3 mov %rax,%rbx 0.00 : 515b9b: e8 50 ae ff ff callq 5109f0 0.00 : 515ba0: 48 89 de mov %rbx,%rsi 0.00 : 515ba3: 48 89 c7 mov %rax,%rdi 0.00 : 515ba6: 44 89 e2 mov %r12d,%edx 0.00 : 515ba9: e8 72 b8 0d 00 callq 5f1420 : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); 0.00 : 515bae: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515bb5: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, $3, @2); } : | a_expr LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); 0.00 : 515bbc: 48 89 c1 mov %rax,%rcx : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); 0.00 : 515bbf: 31 ff xor %edi,%edi 0.00 : 515bc1: 44 8b 46 f4 mov -0xc(%rsi),%r8d 0.00 : 515bc5: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 515bc9: be 2a 97 7c 00 mov $0x7c972a,%esi 0.00 : 515bce: e8 9d be 0d 00 callq 5f1a70 : } : | a_expr NOT LIKE a_expr 0.00 : 515bd3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr LIKE a_expr ESCAPE a_expr : { : FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), : list_make2($3, $5), : @2); : $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n, @2); 0.00 : 515bda: 49 89 c6 mov %rax,%r14 : } : | a_expr NOT LIKE a_expr 0.00 : 515bdd: e9 9e bd ff ff jmpq 511980 : { $$ = makeOrExpr($1, $3, @2); } : | NOT a_expr : { $$ = makeNotExpr($2, @1); } : : | a_expr LIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, $3, @2); } 0.00 : 515be2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515be9: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515bf0: 31 ff xor %edi,%edi 0.00 : 515bf2: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 515bf6: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 515bfa: be 2a 97 7c 00 mov $0x7c972a,%esi 0.00 : 515bff: 48 8b 0b mov (%rbx),%rcx 0.00 : 515c02: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515c09: e8 62 be 0d 00 callq 5f1a70 : | a_expr LIKE a_expr ESCAPE a_expr 0.00 : 515c0e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = makeOrExpr($1, $3, @2); } : | NOT a_expr : { $$ = makeNotExpr($2, @1); } : : | a_expr LIKE a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, $3, @2); } 0.00 : 515c15: 49 89 c6 mov %rax,%r14 : | a_expr LIKE a_expr ESCAPE a_expr 0.00 : 515c18: e9 63 bd ff ff jmpq 511980 : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } : | a_expr OR a_expr : { $$ = makeOrExpr($1, $3, @2); } : | NOT a_expr : { $$ = makeNotExpr($2, @1); } 0.00 : 515c1d: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 515c24: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515c2b: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 515c2e: 48 8b 39 mov (%rcx),%rdi 0.00 : 515c31: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515c38: e8 63 b7 ff ff callq 5113a0 : 0.00 : 515c3d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } : | a_expr OR a_expr : { $$ = makeOrExpr($1, $3, @2); } : | NOT a_expr : { $$ = makeNotExpr($2, @1); } 0.00 : 515c44: 49 89 c6 mov %rax,%r14 : 0.00 : 515c47: e9 34 bd ff ff jmpq 511980 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } : | a_expr OR a_expr : { $$ = makeOrExpr($1, $3, @2); } 0.00 : 515c4c: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515c53: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515c5a: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 515c5d: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 515c61: 48 8b 30 mov (%rax),%rsi 0.00 : 515c64: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515c6b: e8 30 b6 ff ff callq 5112a0 : | NOT a_expr 0.00 : 515c70: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } : | a_expr OR a_expr : { $$ = makeOrExpr($1, $3, @2); } 0.00 : 515c77: 49 89 c6 mov %rax,%r14 : | NOT a_expr 0.00 : 515c7a: e9 01 bd ff ff jmpq 511980 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | a_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } 0.00 : 515c7f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515c86: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515c8d: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 515c91: 8b 51 fc mov -0x4(%rcx),%edx 0.00 : 515c94: 48 8b 33 mov (%rbx),%rsi 0.00 : 515c97: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515c9e: e8 7d b6 ff ff callq 511320 : | a_expr OR a_expr 0.00 : 515ca3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | a_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } : : | a_expr AND a_expr : { $$ = makeAndExpr($1, $3, @2); } 0.00 : 515caa: 49 89 c6 mov %rax,%r14 : | a_expr OR a_expr 0.00 : 515cad: e9 ce bc ff ff jmpq 511980 : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | a_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } 0.00 : 515cb2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515cb9: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 515cc0: 31 ff xor %edi,%edi 0.00 : 515cc2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515cc9: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 515ccd: 44 8b 03 mov (%rbx),%r8d 0.00 : 515cd0: 31 c9 xor %ecx,%ecx 0.00 : 515cd2: 48 8b 30 mov (%rax),%rsi 0.00 : 515cd5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515cdc: e8 ff bc 0d 00 callq 5f19e0 : 0.00 : 515ce1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } : | a_expr qual_Op %prec POSTFIXOP : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } 0.00 : 515ce8: 49 89 c6 mov %rax,%r14 : 0.00 : 515ceb: e9 90 bc ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } 0.00 : 515cf0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515cf7: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 515cfe: 31 d2 xor %edx,%edx 0.00 : 515d00: 31 ff xor %edi,%edi 0.00 : 515d02: 48 8b 73 f8 mov -0x8(%rbx),%rsi 0.00 : 515d06: 44 8b 40 fc mov -0x4(%rax),%r8d 0.00 : 515d0a: 48 8b 0b mov (%rbx),%rcx 0.00 : 515d0d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515d14: e8 c7 bc 0d 00 callq 5f19e0 : | a_expr qual_Op %prec POSTFIXOP 0.00 : 515d19: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } : | qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); } 0.00 : 515d20: 49 89 c6 mov %rax,%r14 : | a_expr qual_Op %prec POSTFIXOP 0.00 : 515d23: e9 58 bc ff ff jmpq 511980 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | a_expr '=' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } 0.00 : 515d28: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515d2f: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515d36: 31 ff xor %edi,%edi 0.00 : 515d38: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515d3c: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515d40: 48 8b 70 f8 mov -0x8(%rax),%rsi 0.00 : 515d44: 48 8b 08 mov (%rax),%rcx 0.00 : 515d47: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515d4e: e8 8d bc 0d 00 callq 5f19e0 : | qual_Op a_expr %prec Op 0.00 : 515d53: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | a_expr '=' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } : : | a_expr qual_Op a_expr %prec Op : { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } 0.00 : 515d5a: 49 89 c6 mov %rax,%r14 : | qual_Op a_expr %prec Op 0.00 : 515d5d: e9 1e bc ff ff jmpq 511980 : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | a_expr '>' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | a_expr '=' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } 0.00 : 515d62: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515d69: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515d70: 31 ff xor %edi,%edi 0.00 : 515d72: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 515d76: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 515d7a: be 45 97 7c 00 mov $0x7c9745,%esi 0.00 : 515d7f: 48 8b 0b mov (%rbx),%rcx 0.00 : 515d82: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515d89: e8 e2 bc 0d 00 callq 5f1a70 : 0.00 : 515d8e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | a_expr '>' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } : | a_expr '=' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); } 0.00 : 515d95: 49 89 c6 mov %rax,%r14 : 0.00 : 515d98: e9 e3 bb ff ff jmpq 511980 : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | a_expr '>' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } 0.00 : 515d9d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515da4: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515dab: be d4 78 89 00 mov $0x8978d4,%esi 0.00 : 515db0: 31 ff xor %edi,%edi 0.00 : 515db2: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515db6: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515dba: 48 8b 08 mov (%rax),%rcx 0.00 : 515dbd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515dc4: e8 a7 bc 0d 00 callq 5f1a70 : | a_expr '=' a_expr 0.00 : 515dc9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } : | a_expr '>' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); } 0.00 : 515dd0: 49 89 c6 mov %rax,%r14 : | a_expr '=' a_expr 0.00 : 515dd3: e9 a8 bb ff ff jmpq 511980 : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } 0.00 : 515dd8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515ddf: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515de6: 31 ff xor %edi,%edi 0.00 : 515de8: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 515dec: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 515df0: be 1b 97 7c 00 mov $0x7c971b,%esi 0.00 : 515df5: 48 8b 0b mov (%rbx),%rcx 0.00 : 515df8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515dff: e8 6c bc 0d 00 callq 5f1a70 : | a_expr '>' a_expr 0.00 : 515e04: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } : | a_expr '<' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); } 0.00 : 515e0b: 49 89 c6 mov %rax,%r14 : | a_expr '>' a_expr 0.00 : 515e0e: e9 6d bb ff ff jmpq 511980 : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } 0.00 : 515e13: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515e1a: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515e21: be 70 3d 8c 00 mov $0x8c3d70,%esi 0.00 : 515e26: 31 ff xor %edi,%edi 0.00 : 515e28: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515e2c: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515e30: 48 8b 08 mov (%rax),%rcx 0.00 : 515e33: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515e3a: e8 31 bc 0d 00 callq 5f1a70 : | a_expr '<' a_expr 0.00 : 515e3f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } : | a_expr '^' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); } 0.00 : 515e46: 49 89 c6 mov %rax,%r14 : | a_expr '<' a_expr 0.00 : 515e49: e9 32 bb ff ff jmpq 511980 : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } 0.00 : 515e4e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515e55: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515e5c: 31 ff xor %edi,%edi 0.00 : 515e5e: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 515e62: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 515e66: be ce 6e 8c 00 mov $0x8c6ece,%esi 0.00 : 515e6b: 48 8b 0b mov (%rbx),%rcx 0.00 : 515e6e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515e75: e8 f6 bb 0d 00 callq 5f1a70 : | a_expr '^' a_expr 0.00 : 515e7a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } : | a_expr '%' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); } 0.00 : 515e81: 49 89 c6 mov %rax,%r14 : | a_expr '^' a_expr 0.00 : 515e84: e9 f7 ba ff ff jmpq 511980 : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } 0.00 : 515e89: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515e90: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515e97: be 8a e7 87 00 mov $0x87e78a,%esi 0.00 : 515e9c: 31 ff xor %edi,%edi 0.00 : 515e9e: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515ea2: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515ea6: 48 8b 08 mov (%rax),%rcx 0.00 : 515ea9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515eb0: e8 bb bb 0d 00 callq 5f1a70 : | a_expr '%' a_expr 0.00 : 515eb5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } : | a_expr '/' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); } 0.00 : 515ebc: 49 89 c6 mov %rax,%r14 : | a_expr '%' a_expr 0.00 : 515ebf: e9 bc ba ff ff jmpq 511980 : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } 0.00 : 515ec4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515ecb: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515ed2: 31 ff xor %edi,%edi 0.00 : 515ed4: 44 8b 46 fc mov -0x4(%rsi),%r8d 0.00 : 515ed8: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 515edc: be a3 76 7c 00 mov $0x7c76a3,%esi 0.00 : 515ee1: 48 8b 0b mov (%rbx),%rcx 0.00 : 515ee4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515eeb: e8 80 bb 0d 00 callq 5f1a70 : | a_expr '/' a_expr 0.00 : 515ef0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } : | a_expr '*' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); } 0.00 : 515ef7: 49 89 c6 mov %rax,%r14 : | a_expr '/' a_expr 0.00 : 515efa: e9 81 ba ff ff jmpq 511980 : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } 0.00 : 515eff: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515f06: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515f0d: be ca 6e 8c 00 mov $0x8c6eca,%esi 0.00 : 515f12: 31 ff xor %edi,%edi 0.00 : 515f14: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515f18: 48 8b 50 f0 mov -0x10(%rax),%rdx 0.00 : 515f1c: 48 8b 08 mov (%rax),%rcx 0.00 : 515f1f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515f26: e8 45 bb 0d 00 callq 5f1a70 : | a_expr '*' a_expr 0.00 : 515f2b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } : | a_expr '-' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); } 0.00 : 515f32: 49 89 c6 mov %rax,%r14 : | a_expr '*' a_expr 0.00 : 515f35: e9 46 ba ff ff jmpq 511980 : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } 0.00 : 515f3a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 515f41: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 515f48: be 19 97 7c 00 mov $0x7c9719,%esi 0.00 : 515f4d: 31 ff xor %edi,%edi 0.00 : 515f4f: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 515f53: 44 8b 43 fc mov -0x4(%rbx),%r8d 0.00 : 515f57: 48 8b 09 mov (%rcx),%rcx 0.00 : 515f5a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515f61: e8 0a bb 0d 00 callq 5f1a70 : | a_expr '-' a_expr 0.00 : 515f66: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } : | a_expr '+' a_expr : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } 0.00 : 515f6d: 49 89 c6 mov %rax,%r14 : | a_expr '-' a_expr 0.00 : 515f70: e9 0b ba ff ff jmpq 511980 : * also to b_expr and to the MathOp list above. : */ : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } 0.00 : 515f75: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 515f7c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 515f83: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 515f86: 48 8b 3a mov (%rdx),%rdi 0.00 : 515f89: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515f90: e8 fb ad ff ff callq 510d90 : | a_expr '+' a_expr 0.00 : 515f95: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * also to b_expr and to the MathOp list above. : */ : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } : | '-' a_expr %prec UMINUS : { $$ = doNegate($2, @1); } 0.00 : 515f9c: 49 89 c6 mov %rax,%r14 : | a_expr '+' a_expr 0.00 : 515f9f: e9 dc b9 ff ff jmpq 511980 : * : * If you add more explicitly-known operators, be sure to add them : * also to b_expr and to the MathOp list above. : */ : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } 0.00 : 515fa4: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 515fab: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 515fb2: 31 d2 xor %edx,%edx 0.00 : 515fb4: be 19 97 7c 00 mov $0x7c9719,%esi 0.00 : 515fb9: 31 ff xor %edi,%edi 0.00 : 515fbb: 44 8b 41 fc mov -0x4(%rcx),%r8d 0.00 : 515fbf: 48 8b 0b mov (%rbx),%rcx 0.00 : 515fc2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515fc9: e8 a2 ba 0d 00 callq 5f1a70 : | '-' a_expr %prec UMINUS 0.00 : 515fce: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * : * If you add more explicitly-known operators, be sure to add them : * also to b_expr and to the MathOp list above. : */ : | '+' a_expr %prec UMINUS : { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } 0.00 : 515fd5: 49 89 c6 mov %rax,%r14 : | '-' a_expr %prec UMINUS 0.00 : 515fd8: e9 a3 b9 ff ff jmpq 511980 : n->location = @2; : $$ = (Node *) n; : } : | a_expr AT TIME ZONE a_expr %prec AT : { : $$ = (Node *) makeFuncCall(SystemFuncName("timezone"), 0.00 : 515fdd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 515fe4: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 515feb: 48 8b 78 e0 mov -0x20(%rax),%rdi 0.00 : 515fef: 44 8b 66 f4 mov -0xc(%rsi),%r12d 0.00 : 515ff3: 31 f6 xor %esi,%esi 0.00 : 515ff5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 515ffc: e8 4f b8 0c 00 callq 5e1850 0.00 : 516001: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516008: 48 89 c6 mov %rax,%rsi 0.00 : 51600b: 48 8b 3a mov (%rdx),%rdi 0.00 : 51600e: e8 3d b8 0c 00 callq 5e1850 0.00 : 516013: bf 60 fc 8f 00 mov $0x8ffc60,%edi 0.00 : 516018: 48 89 c3 mov %rax,%rbx 0.00 : 51601b: e8 d0 a9 ff ff callq 5109f0 0.00 : 516020: 44 89 e2 mov %r12d,%edx 0.00 : 516023: 48 89 c7 mov %rax,%rdi 0.00 : 516026: 48 89 de mov %rbx,%rsi 0.00 : 516029: e8 f2 b3 0d 00 callq 5f1420 : list_make2($5, $1), : @2); : } : /* 0.00 : 51602e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : n->location = @2; : $$ = (Node *) n; : } : | a_expr AT TIME ZONE a_expr %prec AT : { : $$ = (Node *) makeFuncCall(SystemFuncName("timezone"), 0.00 : 516035: 49 89 c6 mov %rax,%r14 : list_make2($5, $1), : @2); : } : /* 0.00 : 516038: e9 43 b9 ff ff jmpq 511980 : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | a_expr COLLATE any_name : { : CollateClause *n = makeNode(CollateClause); 0.00 : 51603d: 48 8b 3d 1c 48 6a 00 mov 0x6a481c(%rip),%rdi # bba860 0.00 : 516044: be 20 00 00 00 mov $0x20,%esi 0.00 : 516049: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516050: e8 bb 2d 28 00 callq 798e10 0.00 : 516055: c7 00 90 03 00 00 movl $0x390,(%rax) : n->arg = $1; 0.00 : 51605b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->collname = $3; : n->location = @2; : $$ = (Node *) n; 0.00 : 516062: 49 89 c6 mov %rax,%r14 : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | a_expr COLLATE any_name : { : CollateClause *n = makeNode(CollateClause); : n->arg = $1; 0.00 : 516065: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 516069: 48 89 50 08 mov %rdx,0x8(%rax) : n->collname = $3; 0.00 : 51606d: 48 8b 11 mov (%rcx),%rdx 0.00 : 516070: 48 89 50 10 mov %rdx,0x10(%rax) : n->location = @2; 0.00 : 516074: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51607b: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 51607e: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *) n; : } : | a_expr AT TIME ZONE a_expr %prec AT 0.00 : 516081: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516088: e9 f3 b8 ff ff jmpq 511980 : * c_expr is all the productions that are common to a_expr and b_expr; : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 51608d: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 516094: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 51609b: 48 8b 3d be 47 6a 00 mov 0x6a47be(%rip),%rdi # bba860 : * c_expr is all the productions that are common to a_expr and b_expr; : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 5160a2: 8b 5e fc mov -0x4(%rsi),%ebx 0.00 : 5160a5: 4c 8b 20 mov (%rax),%r12 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 5160a8: be 20 00 00 00 mov $0x20,%esi : * c_expr is all the productions that are common to a_expr and b_expr; : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 5160ad: 4c 8b 68 f0 mov -0x10(%rax),%r13 : } : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); 0.00 : 5160b1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5160b8: e8 53 2d 28 00 callq 798e10 0.00 : 5160bd: c7 00 8f 03 00 00 movl $0x38f,(%rax) : n->arg = arg; : n->typeName = typename; 0.00 : 5160c3: 4c 89 60 10 mov %r12,0x10(%rax) : * c_expr is all the productions that are common to a_expr and b_expr; : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } 0.00 : 5160c7: 49 89 c6 mov %rax,%r14 : : static Node * : makeTypeCast(Node *arg, TypeName *typename, int location) : { : TypeCast *n = makeNode(TypeCast); : n->arg = arg; 0.00 : 5160ca: 4c 89 68 08 mov %r13,0x8(%rax) : n->typeName = typename; : n->location = location; 0.00 : 5160ce: 89 58 18 mov %ebx,0x18(%rax) : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } : | a_expr TYPECAST Typename : { $$ = makeTypeCast($1, $3, @2); } : | a_expr COLLATE any_name 0.00 : 5160d1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5160d8: e9 a3 b8 ff ff jmpq 511980 : * always be used by surrounding it with parens. : * : * c_expr is all the productions that are common to a_expr and b_expr; : * it's factored out just to eliminate redundant coding. : */ : a_expr: c_expr { $$ = $1; } 0.00 : 5160dd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5160e4: 4c 8b 33 mov (%rbx),%r14 : | a_expr TYPECAST Typename 0.00 : 5160e7: e9 94 b8 ff ff jmpq 511980 : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(SECOND), @1)); : } : | SECOND_P '(' Iconst ')' : { : $$ = list_make2(makeIntConst(INTERVAL_MASK(SECOND), @1), 0.00 : 5160ec: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5160f3: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5160fa: 8b 7a f8 mov -0x8(%rdx),%edi 0.00 : 5160fd: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 516100: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516107: e8 04 ab ff ff callq 510c10 0.00 : 51610c: 31 f6 xor %esi,%esi 0.00 : 51610e: 48 89 c7 mov %rax,%rdi 0.00 : 516111: e8 3a b7 0c 00 callq 5e1850 0.00 : 516116: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51611d: 48 89 c3 mov %rax,%rbx 0.00 : 516120: bf 00 10 00 00 mov $0x1000,%edi 0.00 : 516125: 8b 71 f4 mov -0xc(%rcx),%esi 0.00 : 516128: e8 e3 aa ff ff callq 510c10 0.00 : 51612d: 48 89 de mov %rbx,%rsi 0.00 : 516130: 48 89 c7 mov %rax,%rdi 0.00 : 516133: e8 18 b7 0c 00 callq 5e1850 : makeIntConst($3, @3)); : } : ; 0.00 : 516138: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(SECOND), @1)); : } : | SECOND_P '(' Iconst ')' : { : $$ = list_make2(makeIntConst(INTERVAL_MASK(SECOND), @1), 0.00 : 51613f: 49 89 c6 mov %rax,%r14 : makeIntConst($3, @3)); : } : ; 0.00 : 516142: e9 39 b8 ff ff jmpq 511980 : ; : : interval_second: : SECOND_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(SECOND), @1)); 0.00 : 516147: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51614e: bf 00 10 00 00 mov $0x1000,%edi 0.00 : 516153: 8b 33 mov (%rbx),%esi 0.00 : 516155: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51615c: e8 af aa ff ff callq 510c10 0.00 : 516161: 31 f6 xor %esi,%esi 0.00 : 516163: 48 89 c7 mov %rax,%rdi 0.00 : 516166: e8 e5 b6 0c 00 callq 5e1850 : } : | SECOND_P '(' Iconst ')' 0.00 : 51616b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : interval_second: : SECOND_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(SECOND), @1)); 0.00 : 516172: 49 89 c6 mov %rax,%r14 : } : | SECOND_P '(' Iconst ')' 0.00 : 516175: e9 06 b8 ff ff jmpq 511980 : $$ = $3; : linitial($$) = makeIntConst(INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | /*EMPTY*/ : { $$ = NIL; } 0.00 : 51617a: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51617d: e9 fe b7 ff ff jmpq 511980 : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | MINUTE_P TO interval_second : { : $$ = $3; 0.00 : 516182: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 516189: 31 db xor %ebx,%ebx 0.00 : 51618b: 48 8b 02 mov (%rdx),%rax 0.00 : 51618e: 48 85 c0 test %rax,%rax 0.00 : 516191: 74 04 je 516197 0.00 : 516193: 48 8b 58 08 mov 0x8(%rax),%rbx : linitial($$) = makeIntConst(INTERVAL_MASK(MINUTE) | 0.00 : 516197: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51619e: bf 00 18 00 00 mov $0x1800,%edi : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | MINUTE_P TO interval_second : { : $$ = $3; 0.00 : 5161a3: 49 89 c6 mov %rax,%r14 : linitial($$) = makeIntConst(INTERVAL_MASK(MINUTE) | 0.00 : 5161a6: 8b 71 f8 mov -0x8(%rcx),%esi 0.00 : 5161a9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5161b0: e8 5b aa ff ff callq 510c10 0.00 : 5161b5: 48 89 03 mov %rax,(%rbx) : INTERVAL_MASK(SECOND), @1); : } : | /*EMPTY*/ 0.00 : 5161b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5161bf: e9 bc b7 ff ff jmpq 511980 : $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | : INTERVAL_MASK(MINUTE), @1)); : } : | HOUR_P TO interval_second : { : $$ = $3; 0.00 : 5161c4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5161cb: 31 db xor %ebx,%ebx 0.00 : 5161cd: 48 8b 01 mov (%rcx),%rax 0.00 : 5161d0: 48 85 c0 test %rax,%rax 0.00 : 5161d3: 74 04 je 5161d9 0.00 : 5161d5: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 5161d9: 49 89 c6 mov %rax,%r14 : linitial($$) = makeIntConst(INTERVAL_MASK(HOUR) | 0.00 : 5161dc: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5161e3: bf 00 1c 00 00 mov $0x1c00,%edi 0.00 : 5161e8: 8b 70 f8 mov -0x8(%rax),%esi 0.00 : 5161eb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5161f2: e8 19 aa ff ff callq 510c10 0.00 : 5161f7: 48 89 03 mov %rax,(%rbx) : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | MINUTE_P TO interval_second 0.00 : 5161fa: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516201: e9 7a b7 ff ff jmpq 511980 : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | HOUR_P TO MINUTE_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | 0.00 : 516206: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51620d: bf 00 0c 00 00 mov $0xc00,%edi 0.00 : 516212: 8b 72 f8 mov -0x8(%rdx),%esi 0.00 : 516215: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51621c: e8 ef a9 ff ff callq 510c10 0.00 : 516221: 31 f6 xor %esi,%esi 0.00 : 516223: 48 89 c7 mov %rax,%rdi 0.00 : 516226: e8 25 b6 0c 00 callq 5e1850 : INTERVAL_MASK(MINUTE), @1)); : } : | HOUR_P TO interval_second 0.00 : 51622b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | HOUR_P TO MINUTE_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | 0.00 : 516232: 49 89 c6 mov %rax,%r14 : INTERVAL_MASK(MINUTE), @1)); : } : | HOUR_P TO interval_second 0.00 : 516235: e9 46 b7 ff ff jmpq 511980 : INTERVAL_MASK(HOUR) | : INTERVAL_MASK(MINUTE), @1)); : } : | DAY_P TO interval_second : { : $$ = $3; 0.00 : 51623a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516241: 48 8b 03 mov (%rbx),%rax 0.00 : 516244: 31 db xor %ebx,%ebx 0.00 : 516246: 48 85 c0 test %rax,%rax 0.00 : 516249: 74 04 je 51624f 0.00 : 51624b: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 51624f: 49 89 c6 mov %rax,%r14 : linitial($$) = makeIntConst(INTERVAL_MASK(DAY) | 0.00 : 516252: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 516259: bf 08 1c 00 00 mov $0x1c08,%edi 0.00 : 51625e: 8b 70 f8 mov -0x8(%rax),%esi 0.00 : 516261: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516268: e8 a3 a9 ff ff callq 510c10 0.00 : 51626d: 48 89 03 mov %rax,(%rbx) : INTERVAL_MASK(HOUR) | : INTERVAL_MASK(MINUTE) | : INTERVAL_MASK(SECOND), @1); : } : | HOUR_P TO MINUTE_P 0.00 : 516270: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516277: e9 04 b7 ff ff jmpq 511980 : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | : INTERVAL_MASK(HOUR), @1)); : } : | DAY_P TO MINUTE_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | 0.00 : 51627c: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 516283: bf 08 0c 00 00 mov $0xc08,%edi 0.00 : 516288: 8b 71 f8 mov -0x8(%rcx),%esi 0.00 : 51628b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516292: e8 79 a9 ff ff callq 510c10 0.00 : 516297: 31 f6 xor %esi,%esi 0.00 : 516299: 48 89 c7 mov %rax,%rdi 0.00 : 51629c: e8 af b5 0c 00 callq 5e1850 : INTERVAL_MASK(HOUR) | : INTERVAL_MASK(MINUTE), @1)); : } : | DAY_P TO interval_second 0.00 : 5162a1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | : INTERVAL_MASK(HOUR), @1)); : } : | DAY_P TO MINUTE_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | 0.00 : 5162a8: 49 89 c6 mov %rax,%r14 : INTERVAL_MASK(HOUR) | : INTERVAL_MASK(MINUTE), @1)); : } : | DAY_P TO interval_second 0.00 : 5162ab: e9 d0 b6 ff ff jmpq 511980 : $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | : INTERVAL_MASK(MONTH), @1)); : } : | DAY_P TO HOUR_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | 0.00 : 5162b0: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5162b7: bf 08 04 00 00 mov $0x408,%edi 0.00 : 5162bc: 8b 72 f8 mov -0x8(%rdx),%esi 0.00 : 5162bf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5162c6: e8 45 a9 ff ff callq 510c10 0.00 : 5162cb: 31 f6 xor %esi,%esi 0.00 : 5162cd: 48 89 c7 mov %rax,%rdi 0.00 : 5162d0: e8 7b b5 0c 00 callq 5e1850 : INTERVAL_MASK(HOUR), @1)); : } : | DAY_P TO MINUTE_P 0.00 : 5162d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | : INTERVAL_MASK(MONTH), @1)); : } : | DAY_P TO HOUR_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) | 0.00 : 5162dc: 49 89 c6 mov %rax,%r14 : INTERVAL_MASK(HOUR), @1)); : } : | DAY_P TO MINUTE_P 0.00 : 5162df: e9 9c b6 ff ff jmpq 511980 : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } : | interval_second : { $$ = $1; } : | YEAR_P TO MONTH_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | 0.00 : 5162e4: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5162eb: bf 06 00 00 00 mov $0x6,%edi 0.00 : 5162f0: 8b 70 f8 mov -0x8(%rax),%esi 0.00 : 5162f3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5162fa: e8 11 a9 ff ff callq 510c10 0.00 : 5162ff: 31 f6 xor %esi,%esi 0.00 : 516301: 48 89 c7 mov %rax,%rdi 0.00 : 516304: e8 47 b5 0c 00 callq 5e1850 : INTERVAL_MASK(MONTH), @1)); : } : | DAY_P TO HOUR_P 0.00 : 516309: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } : | interval_second : { $$ = $1; } : | YEAR_P TO MONTH_P : { : $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | 0.00 : 516310: 49 89 c6 mov %rax,%r14 : INTERVAL_MASK(MONTH), @1)); : } : | DAY_P TO HOUR_P 0.00 : 516313: e9 68 b6 ff ff jmpq 511980 : | HOUR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } : | MINUTE_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } : | interval_second : { $$ = $1; } 0.00 : 516318: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51631f: 4c 8b 36 mov (%rsi),%r14 : | YEAR_P TO MONTH_P 0.00 : 516322: e9 59 b6 ff ff jmpq 511980 : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } : | HOUR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } : | MINUTE_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } 0.00 : 516327: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51632e: bf 00 08 00 00 mov $0x800,%edi 0.00 : 516333: 8b 33 mov (%rbx),%esi 0.00 : 516335: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51633c: e8 cf a8 ff ff callq 510c10 0.00 : 516341: 31 f6 xor %esi,%esi 0.00 : 516343: 48 89 c7 mov %rax,%rdi 0.00 : 516346: e8 05 b5 0c 00 callq 5e1850 : | interval_second 0.00 : 51634b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } : | HOUR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } : | MINUTE_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), @1)); } 0.00 : 516352: 49 89 c6 mov %rax,%r14 : | interval_second 0.00 : 516355: e9 26 b6 ff ff jmpq 511980 : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } : | HOUR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } 0.00 : 51635a: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 516361: bf 00 04 00 00 mov $0x400,%edi 0.00 : 516366: 8b 31 mov (%rcx),%esi 0.00 : 516368: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51636f: e8 9c a8 ff ff callq 510c10 0.00 : 516374: 31 f6 xor %esi,%esi 0.00 : 516376: 48 89 c7 mov %rax,%rdi 0.00 : 516379: e8 d2 b4 0c 00 callq 5e1850 : | MINUTE_P 0.00 : 51637e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } : | HOUR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR), @1)); } 0.00 : 516385: 49 89 c6 mov %rax,%r14 : | MINUTE_P 0.00 : 516388: e9 f3 b5 ff ff jmpq 511980 : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } 0.00 : 51638d: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 516394: bf 08 00 00 00 mov $0x8,%edi 0.00 : 516399: 8b 32 mov (%rdx),%esi 0.00 : 51639b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5163a2: e8 69 a8 ff ff callq 510c10 0.00 : 5163a7: 31 f6 xor %esi,%esi 0.00 : 5163a9: 48 89 c7 mov %rax,%rdi 0.00 : 5163ac: e8 9f b4 0c 00 callq 5e1850 : | HOUR_P 0.00 : 5163b1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } : | DAY_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(DAY), @1)); } 0.00 : 5163b8: 49 89 c6 mov %rax,%r14 : | HOUR_P 0.00 : 5163bb: e9 c0 b5 ff ff jmpq 511980 : : opt_interval: : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } 0.00 : 5163c0: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5163c7: bf 02 00 00 00 mov $0x2,%edi 0.00 : 5163cc: 8b 30 mov (%rax),%esi 0.00 : 5163ce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5163d5: e8 36 a8 ff ff callq 510c10 0.00 : 5163da: 31 f6 xor %esi,%esi 0.00 : 5163dc: 48 89 c7 mov %rax,%rdi 0.00 : 5163df: e8 6c b4 0c 00 callq 5e1850 : | DAY_P 0.00 : 5163e4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : opt_interval: : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } : | MONTH_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(MONTH), @1)); } 0.00 : 5163eb: 49 89 c6 mov %rax,%r14 : | DAY_P 0.00 : 5163ee: e9 8d b5 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_interval: : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } 0.00 : 5163f3: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5163fa: bf 04 00 00 00 mov $0x4,%edi 0.00 : 5163ff: 8b 33 mov (%rbx),%esi 0.00 : 516401: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516408: e8 03 a8 ff ff callq 510c10 0.00 : 51640d: 31 f6 xor %esi,%esi 0.00 : 51640f: 48 89 c7 mov %rax,%rdi 0.00 : 516412: e8 39 b4 0c 00 callq 5e1850 : | MONTH_P 0.00 : 516417: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_interval: : YEAR_P : { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } 0.00 : 51641e: 49 89 c6 mov %rax,%r14 : | MONTH_P 0.00 : 516421: e9 5a b5 ff ff jmpq 511980 : ; : : opt_timezone: : WITH_TIME ZONE { $$ = TRUE; } : | WITHOUT TIME ZONE { $$ = FALSE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 516426: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 516429: e9 52 b5 ff ff jmpq 511980 : } : ; : : opt_timezone: : WITH_TIME ZONE { $$ = TRUE; } : | WITHOUT TIME ZONE { $$ = FALSE; } 0.00 : 51642e: 45 30 f6 xor %r14b,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 516431: e9 4a b5 ff ff jmpq 511980 : $$->location = @1; : } : ; : : opt_timezone: : WITH_TIME ZONE { $$ = TRUE; } 0.00 : 516436: 41 b6 01 mov $0x1,%r14b : | WITHOUT TIME ZONE { $$ = FALSE; } 0.00 : 516439: e9 42 b5 ff ff jmpq 511980 : ; : : ConstInterval: : INTERVAL : { : $$ = SystemTypeName("interval"); 0.00 : 51643e: bf 21 5c 8e 00 mov $0x8e5c21,%edi 0.00 : 516443: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51644a: e8 e1 a5 ff ff callq 510a30 : $$->location = @1; 0.00 : 51644f: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : ; : : ConstInterval: : INTERVAL : { : $$ = SystemTypeName("interval"); 0.00 : 516456: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 516459: 8b 01 mov (%rcx),%eax 0.00 : 51645b: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 51645f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516466: e9 15 b5 ff ff jmpq 511980 : $$->typmods = list_make1(makeIntConst($3, @3)); : $$->location = @1; : } : | TIME opt_timezone : { : if ($2) 0.00 : 51646b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516472: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : 516475: 0f 84 c0 2c 01 00 je 52913b : $$ = SystemTypeName("timetz"); 0.00 : 51647b: bf 4b 68 8e 00 mov $0x8e684b,%edi 0.00 : 516480: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516487: e8 a4 a5 ff ff callq 510a30 0.00 : 51648c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516493: 49 89 c6 mov %rax,%r14 : else : $$ = SystemTypeName("time"); : $$->location = @1; 0.00 : 516496: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51649d: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 5164a0: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 5164a4: e9 d7 b4 ff ff jmpq 511980 : $$ = SystemTypeName("timestamp"); : $$->location = @1; : } : | TIME '(' Iconst ')' opt_timezone : { : if ($5) 0.00 : 5164a9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5164b0: 80 38 00 cmpb $0x0,(%rax) 0.00 : 5164b3: 0f 84 ff 2c 01 00 je 5291b8 : $$ = SystemTypeName("timetz"); 0.00 : 5164b9: bf 4b 68 8e 00 mov $0x8e684b,%edi 0.00 : 5164be: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5164c5: e8 66 a5 ff ff callq 510a30 0.00 : 5164ca: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5164d1: 49 89 c6 mov %rax,%r14 : else : $$ = SystemTypeName("time"); : $$->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 5164d4: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5164db: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5164e2: 8b 72 f8 mov -0x8(%rdx),%esi 0.00 : 5164e5: 8b 79 f0 mov -0x10(%rcx),%edi 0.00 : 5164e8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5164ef: e8 1c a7 ff ff callq 510c10 0.00 : 5164f4: 31 f6 xor %esi,%esi 0.00 : 5164f6: 48 89 c7 mov %rax,%rdi 0.00 : 5164f9: e8 52 b3 0c 00 callq 5e1850 0.00 : 5164fe: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516502: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 516509: 8b 43 f0 mov -0x10(%rbx),%eax 0.00 : 51650c: 41 89 46 30 mov %eax,0x30(%r14) : } : | TIME opt_timezone 0.00 : 516510: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516517: e9 64 b4 ff ff jmpq 511980 : $$->typmods = list_make1(makeIntConst($3, @3)); : $$->location = @1; : } : | TIMESTAMP opt_timezone : { : if ($2) 0.00 : 51651c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516523: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 516526: 0f 84 ac 2c 01 00 je 5291d8 : $$ = SystemTypeName("timestamptz"); 0.00 : 51652c: bf 86 71 8e 00 mov $0x8e7186,%edi 0.00 : 516531: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516538: e8 f3 a4 ff ff callq 510a30 0.00 : 51653d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516544: 49 89 c6 mov %rax,%r14 : else : $$ = SystemTypeName("timestamp"); : $$->location = @1; 0.00 : 516547: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51654e: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 516551: 41 89 46 30 mov %eax,0x30(%r14) : } : | TIME '(' Iconst ')' opt_timezone 0.00 : 516555: e9 26 b4 ff ff jmpq 511980 : * SQL date/time types : */ : ConstDatetime: : TIMESTAMP '(' Iconst ')' opt_timezone : { : if ($5) 0.00 : 51655a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516561: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 516564: 0f 84 2e 2c 01 00 je 529198 : $$ = SystemTypeName("timestamptz"); 0.00 : 51656a: bf 86 71 8e 00 mov $0x8e7186,%edi 0.00 : 51656f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516576: e8 b5 a4 ff ff callq 510a30 0.00 : 51657b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516582: 49 89 c6 mov %rax,%r14 : else : $$ = SystemTypeName("timestamp"); : $$->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 516585: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51658c: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 516593: 8b 7a f0 mov -0x10(%rdx),%edi 0.00 : 516596: 8b 70 f8 mov -0x8(%rax),%esi 0.00 : 516599: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5165a0: e8 6b a6 ff ff callq 510c10 0.00 : 5165a5: 31 f6 xor %esi,%esi 0.00 : 5165a7: 48 89 c7 mov %rax,%rdi 0.00 : 5165aa: e8 a1 b2 0c 00 callq 5e1850 0.00 : 5165af: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5165b3: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5165ba: 8b 41 f0 mov -0x10(%rcx),%eax 0.00 : 5165bd: 41 89 46 30 mov %eax,0x30(%r14) : } : | TIMESTAMP opt_timezone 0.00 : 5165c1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5165c8: e9 b3 b3 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_charset: : CHARACTER SET ColId { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5165cd: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5165d0: e9 ab b3 ff ff jmpq 511980 : $$ = SystemTypeName("int4"); : $$->location = @1; : } : | SMALLINT : { : $$ = SystemTypeName("int2"); 0.00 : 5165d5: bf e2 69 88 00 mov $0x8869e2,%edi 0.00 : 5165da: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5165e1: e8 4a a4 ff ff callq 510a30 : $$->location = @1; 0.00 : 5165e6: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : $$ = SystemTypeName("int4"); : $$->location = @1; : } : | SMALLINT : { : $$ = SystemTypeName("int2"); 0.00 : 5165ed: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 5165f0: 8b 01 mov (%rcx),%eax 0.00 : 5165f2: 41 89 46 30 mov %eax,0x30(%r14) : } : | BIGINT 0.00 : 5165f6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5165fd: e9 7e b3 ff ff jmpq 511980 : $$ = SystemTypeName("int4"); : $$->location = @1; : } : | INTEGER : { : $$ = SystemTypeName("int4"); 0.00 : 516602: bf d2 69 88 00 mov $0x8869d2,%edi 0.00 : 516607: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51660e: e8 1d a4 ff ff callq 510a30 : $$->location = @1; 0.00 : 516613: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : $$ = SystemTypeName("int4"); : $$->location = @1; : } : | INTEGER : { : $$ = SystemTypeName("int4"); 0.00 : 51661a: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 51661d: 8b 02 mov (%rdx),%eax 0.00 : 51661f: 41 89 46 30 mov %eax,0x30(%r14) : } : | SMALLINT 0.00 : 516623: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51662a: e9 51 b3 ff ff jmpq 511980 : /* : * SQL numeric data types : */ : Numeric: INT_P : { : $$ = SystemTypeName("int4"); 0.00 : 51662f: bf d2 69 88 00 mov $0x8869d2,%edi 0.00 : 516634: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51663b: e8 f0 a3 ff ff callq 510a30 : $$->location = @1; 0.00 : 516640: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : /* : * SQL numeric data types : */ : Numeric: INT_P : { : $$ = SystemTypeName("int4"); 0.00 : 516647: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 51664a: 8b 06 mov (%rsi),%eax 0.00 : 51664c: 41 89 46 30 mov %eax,0x30(%r14) : } : | INTEGER 0.00 : 516650: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516657: e9 24 b3 ff ff jmpq 511980 : $$->location = @1; : } : ; : : opt_type_modifiers: '(' expr_list ')' { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 51665c: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51665f: e9 1c b3 ff ff jmpq 511980 : $$->typmods = $3; : $$->location = @1; : } : ; : : opt_type_modifiers: '(' expr_list ')' { $$ = $2; } 0.00 : 516664: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51666b: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 51666f: e9 0c b3 ff ff jmpq 511980 : $$->typmods = $2; : $$->location = @1; : } : | type_function_name attrs opt_type_modifiers : { : $$ = makeTypeNameFromNameList(lcons(makeString($1), $2)); 0.00 : 516674: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51667b: 48 8b 58 f8 mov -0x8(%rax),%rbx 0.00 : 51667f: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 516683: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51668a: e8 61 90 0e 00 callq 5ff6f0 0.00 : 51668f: 48 89 de mov %rbx,%rsi 0.00 : 516692: 48 89 c7 mov %rax,%rdi 0.00 : 516695: e8 b6 b1 0c 00 callq 5e1850 0.00 : 51669a: 48 89 c7 mov %rax,%rdi 0.00 : 51669d: e8 8e af 0d 00 callq 5f1630 : $$->typmods = $3; 0.00 : 5166a2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$->typmods = $2; : $$->location = @1; : } : | type_function_name attrs opt_type_modifiers : { : $$ = makeTypeNameFromNameList(lcons(makeString($1), $2)); 0.00 : 5166a9: 49 89 c6 mov %rax,%r14 : $$->typmods = $3; 0.00 : 5166ac: 48 8b 02 mov (%rdx),%rax 0.00 : 5166af: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5166b3: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5166ba: 8b 41 f8 mov -0x8(%rcx),%eax 0.00 : 5166bd: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 5166c1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5166c8: e9 b3 b2 ff ff jmpq 511980 : * constants for them. : */ : GenericType: : type_function_name opt_type_modifiers : { : $$ = makeTypeName($1); 0.00 : 5166cd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5166d4: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 5166d8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5166df: e8 6c b3 0d 00 callq 5f1a50 0.00 : 5166e4: 49 89 c6 mov %rax,%r14 : $$->typmods = $2; 0.00 : 5166e7: 48 8b 03 mov (%rbx),%rax 0.00 : 5166ea: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 5166ee: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5166f5: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 5166f8: 41 89 46 30 mov %eax,0x30(%r14) : } : | type_function_name attrs opt_type_modifiers 0.00 : 5166fc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516703: e9 78 b2 ff ff jmpq 511980 : */ : ConstTypename: : Numeric { $$ = $1; } : | ConstBit { $$ = $1; } : | ConstCharacter { $$ = $1; } : | ConstDatetime { $$ = $1; } 0.00 : 516708: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51670f: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 516712: e9 69 b2 ff ff jmpq 511980 : * reduce/reduce conflicts against function names. : */ : ConstTypename: : Numeric { $$ = $1; } : | ConstBit { $$ = $1; } : | ConstCharacter { $$ = $1; } 0.00 : 516717: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51671e: 4c 8b 32 mov (%rdx),%r14 : | ConstDatetime { $$ = $1; } 0.00 : 516721: e9 5a b2 ff ff jmpq 511980 : * the generic-type-name case in AExprConst to avoid premature : * reduce/reduce conflicts against function names. : */ : ConstTypename: : Numeric { $$ = $1; } : | ConstBit { $$ = $1; } 0.00 : 516726: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51672d: 4c 8b 30 mov (%rax),%r14 : | ConstCharacter { $$ = $1; } 0.00 : 516730: e9 4b b2 ff ff jmpq 511980 : * options (e.g. INTERVAL '1' YEAR). Likewise, we have to handle : * the generic-type-name case in AExprConst to avoid premature : * reduce/reduce conflicts against function names. : */ : ConstTypename: : Numeric { $$ = $1; } 0.00 : 516735: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51673c: 4c 8b 36 mov (%rsi),%r14 : | ConstBit { $$ = $1; } 0.00 : 51673f: e9 3c b2 ff ff jmpq 511980 : $$ = $1; : $$->typmods = $2; : } : | ConstInterval '(' Iconst ')' opt_interval : { : $$ = $1; 0.00 : 516744: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51674b: 4c 8b 70 e0 mov -0x20(%rax),%r14 : if ($5 != NIL) 0.00 : 51674f: 48 8b 00 mov (%rax),%rax 0.00 : 516752: 48 85 c0 test %rax,%rax 0.00 : 516755: 0f 84 e5 30 01 00 je 529840 : { : if (list_length($5) != 1) 0.00 : 51675b: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 51675f: 0f 85 a8 30 01 00 jne 52980d : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("interval precision specified twice"), : parser_errposition(@1))); : $$->typmods = lappend($5, makeIntConst($3, @3)); 0.00 : 516765: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51676c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516773: 8b 73 f8 mov -0x8(%rbx),%esi 0.00 : 516776: 8b 78 f0 mov -0x10(%rax),%edi 0.00 : 516779: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516780: e8 8b a4 ff ff callq 510c10 0.00 : 516785: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51678c: 48 89 c6 mov %rax,%rsi 0.00 : 51678f: 48 8b 3a mov (%rdx),%rdi 0.00 : 516792: e8 e9 b6 0c 00 callq 5e1e80 0.00 : 516797: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 51679b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5167a2: e9 d9 b1 ff ff jmpq 511980 : | Bit { $$ = $1; } : | Character { $$ = $1; } : | ConstDatetime { $$ = $1; } : | ConstInterval opt_interval : { : $$ = $1; 0.00 : 5167a7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5167ae: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : $$->typmods = $2; 0.00 : 5167b2: 48 8b 06 mov (%rsi),%rax 0.00 : 5167b5: 49 89 46 18 mov %rax,0x18(%r14) : } : | ConstInterval '(' Iconst ')' opt_interval 0.00 : 5167b9: e9 c2 b1 ff ff jmpq 511980 : SimpleTypename: : GenericType { $$ = $1; } : | Numeric { $$ = $1; } : | Bit { $$ = $1; } : | Character { $$ = $1; } : | ConstDatetime { $$ = $1; } 0.00 : 5167be: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5167c5: 4c 8b 33 mov (%rbx),%r14 : | ConstInterval opt_interval 0.00 : 5167c8: e9 b3 b1 ff ff jmpq 511980 : : SimpleTypename: : GenericType { $$ = $1; } : | Numeric { $$ = $1; } : | Bit { $$ = $1; } : | Character { $$ = $1; } 0.00 : 5167cd: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5167d4: 4c 8b 31 mov (%rcx),%r14 : | ConstDatetime { $$ = $1; } 0.00 : 5167d7: e9 a4 b1 ff ff jmpq 511980 : ; : : SimpleTypename: : GenericType { $$ = $1; } : | Numeric { $$ = $1; } : | Bit { $$ = $1; } 0.00 : 5167dc: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5167e3: 4c 8b 32 mov (%rdx),%r14 : | Character { $$ = $1; } 0.00 : 5167e6: e9 95 b1 ff ff jmpq 511980 : { $$ = NIL; } : ; : : SimpleTypename: : GenericType { $$ = $1; } : | Numeric { $$ = $1; } 0.00 : 5167eb: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5167f2: 4c 8b 30 mov (%rax),%r14 : | Bit { $$ = $1; } 0.00 : 5167f5: e9 86 b1 ff ff jmpq 511980 : | /*EMPTY*/ : { $$ = NIL; } : ; : : SimpleTypename: : GenericType { $$ = $1; } 0.00 : 5167fa: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516801: 4c 8b 36 mov (%rsi),%r14 : | Numeric { $$ = $1; } 0.00 : 516804: e9 77 b1 ff ff jmpq 511980 : opt_array_bounds '[' ']' : { $$ = lappend($1, makeInteger(-1)); } : | opt_array_bounds '[' Iconst ']' : { $$ = lappend($1, makeInteger($3)); } : | /*EMPTY*/ : { $$ = NIL; } 0.00 : 516809: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51680c: e9 6f b1 ff ff jmpq 511980 : : opt_array_bounds: : opt_array_bounds '[' ']' : { $$ = lappend($1, makeInteger(-1)); } : | opt_array_bounds '[' Iconst ']' : { $$ = lappend($1, makeInteger($3)); } 0.00 : 516811: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516818: 48 63 79 f8 movslq -0x8(%rcx),%rdi 0.00 : 51681c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516823: e8 28 8f 0e 00 callq 5ff750 0.00 : 516828: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51682f: 48 89 c6 mov %rax,%rsi 0.00 : 516832: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 516836: e8 45 b6 0c 00 callq 5e1e80 : | /*EMPTY*/ 0.00 : 51683b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : opt_array_bounds: : opt_array_bounds '[' ']' : { $$ = lappend($1, makeInteger(-1)); } : | opt_array_bounds '[' Iconst ']' : { $$ = lappend($1, makeInteger($3)); } 0.00 : 516842: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ 0.00 : 516845: e9 36 b1 ff ff jmpq 511980 : } : ; : : opt_array_bounds: : opt_array_bounds '[' ']' : { $$ = lappend($1, makeInteger(-1)); } 0.00 : 51684a: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi 0.00 : 516851: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516858: e8 f3 8e 0e 00 callq 5ff750 0.00 : 51685d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516864: 48 89 c6 mov %rax,%rsi 0.00 : 516867: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51686b: e8 10 b6 0c 00 callq 5e1e80 : | opt_array_bounds '[' Iconst ']' 0.00 : 516870: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : opt_array_bounds: : opt_array_bounds '[' ']' : { $$ = lappend($1, makeInteger(-1)); } 0.00 : 516877: 49 89 c6 mov %rax,%r14 : | opt_array_bounds '[' Iconst ']' 0.00 : 51687a: e9 01 b1 ff ff jmpq 511980 : $$ = $1; : $$->arrayBounds = list_make1(makeInteger(-1)); : } : | SETOF SimpleTypename ARRAY : { : $$ = $2; 0.00 : 51687f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : $$->arrayBounds = list_make1(makeInteger(-1)); 0.00 : 516886: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi : $$ = $1; : $$->arrayBounds = list_make1(makeInteger(-1)); : } : | SETOF SimpleTypename ARRAY : { : $$ = $2; 0.00 : 51688d: 4c 8b 70 f8 mov -0x8(%rax),%r14 : $$->arrayBounds = list_make1(makeInteger(-1)); 0.00 : 516891: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516898: e8 b3 8e 0e 00 callq 5ff750 0.00 : 51689d: 31 f6 xor %esi,%esi 0.00 : 51689f: 48 89 c7 mov %rax,%rdi 0.00 : 5168a2: e8 a9 af 0c 00 callq 5e1850 : $$->setof = TRUE; 0.00 : 5168a7: 41 c6 46 14 01 movb $0x1,0x14(%r14) : $$->arrayBounds = list_make1(makeInteger(-1)); : } : | SETOF SimpleTypename ARRAY : { : $$ = $2; : $$->arrayBounds = list_make1(makeInteger(-1)); 0.00 : 5168ac: 49 89 46 28 mov %rax,0x28(%r14) : $$->setof = TRUE; : } : ; 0.00 : 5168b0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5168b7: e9 c4 b0 ff ff jmpq 511980 : $$->arrayBounds = list_make1(makeInteger($5)); : $$->setof = TRUE; : } : | SimpleTypename ARRAY : { : $$ = $1; 0.00 : 5168bc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$->arrayBounds = list_make1(makeInteger(-1)); 0.00 : 5168c3: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi : $$->arrayBounds = list_make1(makeInteger($5)); : $$->setof = TRUE; : } : | SimpleTypename ARRAY : { : $$ = $1; 0.00 : 5168ca: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : $$->arrayBounds = list_make1(makeInteger(-1)); 0.00 : 5168ce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5168d5: e8 76 8e 0e 00 callq 5ff750 0.00 : 5168da: 31 f6 xor %esi,%esi 0.00 : 5168dc: 48 89 c7 mov %rax,%rdi 0.00 : 5168df: e8 6c af 0c 00 callq 5e1850 0.00 : 5168e4: 49 89 46 28 mov %rax,0x28(%r14) : } : | SETOF SimpleTypename ARRAY 0.00 : 5168e8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5168ef: e9 8c b0 ff ff jmpq 511980 : $$ = $1; : $$->arrayBounds = list_make1(makeInteger($4)); : } : | SETOF SimpleTypename ARRAY '[' Iconst ']' : { : $$ = $2; 0.00 : 5168f4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$->arrayBounds = list_make1(makeInteger($5)); 0.00 : 5168fb: 48 63 7b f8 movslq -0x8(%rbx),%rdi : $$ = $1; : $$->arrayBounds = list_make1(makeInteger($4)); : } : | SETOF SimpleTypename ARRAY '[' Iconst ']' : { : $$ = $2; 0.00 : 5168ff: 4c 8b 73 e0 mov -0x20(%rbx),%r14 : $$->arrayBounds = list_make1(makeInteger($5)); 0.00 : 516903: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51690a: e8 41 8e 0e 00 callq 5ff750 0.00 : 51690f: 31 f6 xor %esi,%esi 0.00 : 516911: 48 89 c7 mov %rax,%rdi 0.00 : 516914: e8 37 af 0c 00 callq 5e1850 : $$->setof = TRUE; 0.00 : 516919: 41 c6 46 14 01 movb $0x1,0x14(%r14) : $$->arrayBounds = list_make1(makeInteger($4)); : } : | SETOF SimpleTypename ARRAY '[' Iconst ']' : { : $$ = $2; : $$->arrayBounds = list_make1(makeInteger($5)); 0.00 : 51691e: 49 89 46 28 mov %rax,0x28(%r14) : $$->setof = TRUE; : } : | SimpleTypename ARRAY 0.00 : 516922: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516929: e9 52 b0 ff ff jmpq 511980 : $$->setof = TRUE; : } : /* SQL standard syntax, currently only one-dimensional */ : | SimpleTypename ARRAY '[' Iconst ']' : { : $$ = $1; 0.00 : 51692e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$->arrayBounds = list_make1(makeInteger($4)); 0.00 : 516935: 48 63 79 f8 movslq -0x8(%rcx),%rdi : $$->setof = TRUE; : } : /* SQL standard syntax, currently only one-dimensional */ : | SimpleTypename ARRAY '[' Iconst ']' : { : $$ = $1; 0.00 : 516939: 4c 8b 71 e0 mov -0x20(%rcx),%r14 : $$->arrayBounds = list_make1(makeInteger($4)); 0.00 : 51693d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516944: e8 07 8e 0e 00 callq 5ff750 0.00 : 516949: 31 f6 xor %esi,%esi 0.00 : 51694b: 48 89 c7 mov %rax,%rdi 0.00 : 51694e: e8 fd ae 0c 00 callq 5e1850 0.00 : 516953: 49 89 46 28 mov %rax,0x28(%r14) : } : | SETOF SimpleTypename ARRAY '[' Iconst ']' 0.00 : 516957: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51695e: e9 1d b0 ff ff jmpq 511980 : $$ = $1; : $$->arrayBounds = $2; : } : | SETOF SimpleTypename opt_array_bounds : { : $$ = $2; 0.00 : 516963: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51696a: 4c 8b 70 f8 mov -0x8(%rax),%r14 : $$->arrayBounds = $3; 0.00 : 51696e: 48 8b 00 mov (%rax),%rax : $$->setof = TRUE; 0.00 : 516971: 41 c6 46 14 01 movb $0x1,0x14(%r14) : $$->arrayBounds = $2; : } : | SETOF SimpleTypename opt_array_bounds : { : $$ = $2; : $$->arrayBounds = $3; 0.00 : 516976: 49 89 46 28 mov %rax,0x28(%r14) : $$->setof = TRUE; : } : /* SQL standard syntax, currently only one-dimensional */ 0.00 : 51697a: e9 01 b0 ff ff jmpq 511980 : * : *****************************************************************************/ : : Typename: SimpleTypename opt_array_bounds : { : $$ = $1; 0.00 : 51697f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516986: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : $$->arrayBounds = $2; 0.00 : 51698a: 48 8b 06 mov (%rsi),%rax 0.00 : 51698d: 49 89 46 28 mov %rax,0x28(%r14) : } : | SETOF SimpleTypename opt_array_bounds 0.00 : 516991: e9 ea af ff ff jmpq 511980 : } : ; : : TableFuncElement: ColId Typename opt_collate_clause : { : ColumnDef *n = makeNode(ColumnDef); 0.00 : 516996: 48 8b 3d c3 3e 6a 00 mov 0x6a3ec3(%rip),%rdi # bba860 0.00 : 51699d: be 58 00 00 00 mov $0x58,%esi 0.00 : 5169a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5169a9: e8 62 24 28 00 callq 798e10 0.00 : 5169ae: c7 00 96 03 00 00 movl $0x396,(%rax) : n->colname = $1; 0.00 : 5169b4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cooked_default = NULL; : n->collClause = (CollateClause *) $3; : n->collOid = InvalidOid; : n->constraints = NIL; : n->location = @1; : $$ = (Node *)n; 0.00 : 5169bb: 49 89 c6 mov %rax,%r14 : ; : : TableFuncElement: ColId Typename opt_collate_clause : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; 0.00 : 5169be: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5169c2: 48 89 50 08 mov %rdx,0x8(%rax) : n->typeName = $2; 0.00 : 5169c6: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->inhcount = 0; 0.00 : 5169ca: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : n->is_local = true; 0.00 : 5169d1: c6 40 1c 01 movb $0x1,0x1c(%rax) : n->is_not_null = false; 0.00 : 5169d5: c6 40 1d 00 movb $0x0,0x1d(%rax) : n->is_from_type = false; 0.00 : 5169d9: c6 40 1e 00 movb $0x0,0x1e(%rax) : : TableFuncElement: ColId Typename opt_collate_clause : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; : n->typeName = $2; 0.00 : 5169dd: 48 89 50 10 mov %rdx,0x10(%rax) : n->inhcount = 0; : n->is_local = true; : n->is_not_null = false; : n->is_from_type = false; : n->storage = 0; 0.00 : 5169e1: c6 40 1f 00 movb $0x0,0x1f(%rax) : n->raw_default = NULL; 0.00 : 5169e5: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 5169ec: 00 : n->cooked_default = NULL; 0.00 : 5169ed: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 5169f4: 00 : n->collClause = (CollateClause *) $3; 0.00 : 5169f5: 48 8b 11 mov (%rcx),%rdx : n->collOid = InvalidOid; 0.00 : 5169f8: c7 40 38 00 00 00 00 movl $0x0,0x38(%rax) : n->constraints = NIL; 0.00 : 5169ff: 48 c7 40 40 00 00 00 movq $0x0,0x40(%rax) 0.00 : 516a06: 00 : n->is_not_null = false; : n->is_from_type = false; : n->storage = 0; : n->raw_default = NULL; : n->cooked_default = NULL; : n->collClause = (CollateClause *) $3; 0.00 : 516a07: 48 89 50 30 mov %rdx,0x30(%rax) : n->collOid = InvalidOid; : n->constraints = NIL; : n->location = @1; 0.00 : 516a0b: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 516a12: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 516a15: 89 50 50 mov %edx,0x50(%rax) : $$ = (Node *)n; : } : ; 0.00 : 516a18: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516a1f: e9 5c af ff ff jmpq 511980 : { : $$ = list_make1($1); : } : | TableFuncElementList ',' TableFuncElement : { : $$ = lappend($1, $3); 0.00 : 516a24: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516a2b: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 516a2f: 48 8b 32 mov (%rdx),%rsi 0.00 : 516a32: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516a39: e8 42 b4 0c 00 callq 5e1e80 : } : ; 0.00 : 516a3e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | TableFuncElementList ',' TableFuncElement : { : $$ = lappend($1, $3); 0.00 : 516a45: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 516a48: e9 33 af ff ff jmpq 511980 : ; : : TableFuncElementList: : TableFuncElement : { : $$ = list_make1($1); 0.00 : 516a4d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516a54: 31 f6 xor %esi,%esi 0.00 : 516a56: 48 8b 38 mov (%rax),%rdi 0.00 : 516a59: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516a60: e8 eb ad 0c 00 callq 5e1850 : } : | TableFuncElementList ',' TableFuncElement 0.00 : 516a65: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : TableFuncElementList: : TableFuncElement : { : $$ = list_make1($1); 0.00 : 516a6c: 49 89 c6 mov %rax,%r14 : } : | TableFuncElementList ',' TableFuncElement 0.00 : 516a6f: e9 0c af ff ff jmpq 511980 : ; : : : OptTableFuncElementList: : TableFuncElementList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 516a74: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 516a77: e9 04 af ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : : OptTableFuncElementList: : TableFuncElementList { $$ = $1; } 0.00 : 516a7c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516a83: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 516a86: e9 f5 ae ff ff jmpq 511980 : : BitWithoutLength: : BIT opt_varying : { : /* bit defaults to bit(1), varbit to no limit */ : if ($2) 0.00 : 516a8b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516a92: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 516a95: 0f 84 c0 26 01 00 je 52915b : { : $$ = SystemTypeName("varbit"); 0.00 : 516a9b: bf fb 96 7c 00 mov $0x7c96fb,%edi 0.00 : 516aa0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516aa7: e8 84 9f ff ff callq 510a30 0.00 : 516aac: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516ab3: 49 89 c6 mov %rax,%r14 : else : { : $$ = SystemTypeName("bit"); : $$->typmods = list_make1(makeIntConst(1, -1)); : } : $$->location = @1; 0.00 : 516ab6: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 516abd: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 516ac0: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 516ac4: e9 b7 ae ff ff jmpq 511980 : BitWithLength: : BIT opt_varying '(' expr_list ')' : { : char *typname; : : typname = $2 ? "varbit" : "bit"; 0.00 : 516ac9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516ad0: b8 fb 96 7c 00 mov $0x7c96fb,%eax 0.00 : 516ad5: bf fe 96 7c 00 mov $0x7c96fe,%edi 0.00 : 516ada: 80 7e e8 00 cmpb $0x0,-0x18(%rsi) : $$ = SystemTypeName(typname); 0.00 : 516ade: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) : BitWithLength: : BIT opt_varying '(' expr_list ')' : { : char *typname; : : typname = $2 ? "varbit" : "bit"; 0.00 : 516ae5: 48 0f 45 f8 cmovne %rax,%rdi : $$ = SystemTypeName(typname); 0.00 : 516ae9: e8 42 9f ff ff callq 510a30 : $$->typmods = $4; 0.00 : 516aee: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : BIT opt_varying '(' expr_list ')' : { : char *typname; : : typname = $2 ? "varbit" : "bit"; : $$ = SystemTypeName(typname); 0.00 : 516af5: 49 89 c6 mov %rax,%r14 : $$->typmods = $4; 0.00 : 516af8: 48 8b 42 f8 mov -0x8(%rdx),%rax 0.00 : 516afc: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516b00: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 516b07: 8b 41 f0 mov -0x10(%rcx),%eax 0.00 : 516b0a: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 516b0e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516b15: e9 66 ae ff ff jmpq 511980 : ; : : character: CHARACTER opt_varying : { $$ = $2 ? "varchar": "bpchar"; } : | CHAR_P opt_varying : { $$ = $2 ? "varchar": "bpchar"; } 0.00 : 516b1a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516b21: 41 be f2 69 88 00 mov $0x8869f2,%r14d 0.00 : 516b27: b8 11 97 7c 00 mov $0x7c9711,%eax 0.00 : 516b2c: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 516b2f: 4c 0f 45 f0 cmovne %rax,%r14 : | VARCHAR 0.00 : 516b33: e9 48 ae ff ff jmpq 511980 : $$->location = @1; : } : ; : : character: CHARACTER opt_varying : { $$ = $2 ? "varchar": "bpchar"; } 0.00 : 516b38: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516b3f: 41 be f2 69 88 00 mov $0x8869f2,%r14d 0.00 : 516b45: b8 11 97 7c 00 mov $0x7c9711,%eax 0.00 : 516b4a: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 516b4d: 4c 0f 45 f0 cmovne %rax,%r14 : | CHAR_P opt_varying 0.00 : 516b51: e9 2a ae ff ff jmpq 511980 : } : ; : : CharacterWithoutLength: character opt_charset : { : if (($2 != NULL) && (strcmp($2, "sql_text") != 0)) 0.00 : 516b56: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516b5d: 4c 8b 02 mov (%rdx),%r8 0.00 : 516b60: 48 8d 5a f8 lea -0x8(%rdx),%rbx 0.00 : 516b64: 4d 85 c0 test %r8,%r8 0.00 : 516b67: 74 15 je 516b7e 0.00 : 516b69: bf 02 97 7c 00 mov $0x7c9702,%edi 0.00 : 516b6e: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 516b73: 4c 89 c6 mov %r8,%rsi 0.00 : 516b76: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 516b78: 0f 85 c2 29 01 00 jne 529540 : $1 = psprintf("%s_%s", $1, $2); : : $$ = SystemTypeName($1); 0.00 : 516b7e: 48 8b 3b mov (%rbx),%rdi 0.00 : 516b81: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516b88: e8 a3 9e ff ff callq 510a30 : : /* char defaults to char(1), varchar to no limit */ : if (strcmp($1, "bpchar") == 0) 0.00 : 516b8d: 48 8b 33 mov (%rbx),%rsi 0.00 : 516b90: bf f2 69 88 00 mov $0x8869f2,%edi 0.00 : 516b95: b9 07 00 00 00 mov $0x7,%ecx : CharacterWithoutLength: character opt_charset : { : if (($2 != NULL) && (strcmp($2, "sql_text") != 0)) : $1 = psprintf("%s_%s", $1, $2); : : $$ = SystemTypeName($1); 0.00 : 516b9a: 49 89 c4 mov %rax,%r12 : : /* char defaults to char(1), varchar to no limit */ : if (strcmp($1, "bpchar") == 0) 0.00 : 516b9d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516ba4: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 516ba6: 75 25 jne 516bcd : $$->typmods = list_make1(makeIntConst(1, -1)); 0.00 : 516ba8: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 516bad: bf 01 00 00 00 mov $0x1,%edi 0.00 : 516bb2: e8 59 a0 ff ff callq 510c10 0.00 : 516bb7: 31 f6 xor %esi,%esi 0.00 : 516bb9: 48 89 c7 mov %rax,%rdi 0.00 : 516bbc: e8 8f ac 0c 00 callq 5e1850 0.00 : 516bc1: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 516bc6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : $$->location = @1; 0.00 : 516bcd: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : CharacterWithoutLength: character opt_charset : { : if (($2 != NULL) && (strcmp($2, "sql_text") != 0)) : $1 = psprintf("%s_%s", $1, $2); : : $$ = SystemTypeName($1); 0.00 : 516bd4: 4d 89 e6 mov %r12,%r14 : : /* char defaults to char(1), varchar to no limit */ : if (strcmp($1, "bpchar") == 0) : $$->typmods = list_make1(makeIntConst(1, -1)); : : $$->location = @1; 0.00 : 516bd7: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 516bda: 41 89 44 24 30 mov %eax,0x30(%r12) : } : ; 0.00 : 516bdf: e9 9c ad ff ff jmpq 511980 : } : ; : : CharacterWithLength: character '(' Iconst ')' opt_charset : { : if (($5 != NULL) && (strcmp($5, "sql_text") != 0)) 0.00 : 516be4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516beb: 4c 8b 06 mov (%rsi),%r8 0.00 : 516bee: 4d 85 c0 test %r8,%r8 0.00 : 516bf1: 74 15 je 516c08 0.00 : 516bf3: bf 02 97 7c 00 mov $0x7c9702,%edi 0.00 : 516bf8: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 516bfd: 4c 89 c6 mov %r8,%rsi 0.00 : 516c00: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 516c02: 0f 85 00 2a 01 00 jne 529608 : $1 = psprintf("%s_%s", $1, $5); : : $$ = SystemTypeName($1); 0.00 : 516c08: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516c0f: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 516c13: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516c1a: e8 11 9e ff ff callq 510a30 : $$->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 516c1f: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx : CharacterWithLength: character '(' Iconst ')' opt_charset : { : if (($5 != NULL) && (strcmp($5, "sql_text") != 0)) : $1 = psprintf("%s_%s", $1, $5); : : $$ = SystemTypeName($1); 0.00 : 516c26: 49 89 c6 mov %rax,%r14 : $$->typmods = list_make1(makeIntConst($3, @3)); 0.00 : 516c29: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516c30: 8b 73 f8 mov -0x8(%rbx),%esi 0.00 : 516c33: 8b 78 f0 mov -0x10(%rax),%edi 0.00 : 516c36: e8 d5 9f ff ff callq 510c10 0.00 : 516c3b: 31 f6 xor %esi,%esi 0.00 : 516c3d: 48 89 c7 mov %rax,%rdi 0.00 : 516c40: e8 0b ac 0c 00 callq 5e1850 0.00 : 516c45: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516c49: 8b 43 f0 mov -0x10(%rbx),%eax 0.00 : 516c4c: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 516c50: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516c57: e9 24 ad ff ff jmpq 511980 : * This handles problems with fixed-length (bpchar) strings : * which in column definitions must default to a length : * of one, but should not be constrained if the length : * was not specified. : */ : $$ = $1; 0.00 : 516c5c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516c63: 4c 8b 33 mov (%rbx),%r14 : $$->typmods = NIL; 0.00 : 516c66: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 516c6d: 00 : } : ; 0.00 : 516c6e: e9 0d ad ff ff jmpq 511980 : } : ; : : ConstCharacter: CharacterWithLength : { : $$ = $1; 0.00 : 516c73: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516c7a: 4c 8b 31 mov (%rcx),%r14 : } : | CharacterWithoutLength 0.00 : 516c7d: e9 fe ac ff ff jmpq 511980 : { : $$ = $1; : } : | CharacterWithoutLength : { : $$ = $1; 0.00 : 516c82: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516c89: 4c 8b 32 mov (%rdx),%r14 : } : ; 0.00 : 516c8c: e9 ef ac ff ff jmpq 511980 : * SQL character data types : * The following implements CHAR() and VARCHAR(). : */ : Character: CharacterWithLength : { : $$ = $1; 0.00 : 516c91: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516c98: 4c 8b 30 mov (%rax),%r14 : } : | CharacterWithoutLength 0.00 : 516c9b: e9 e0 ac ff ff jmpq 511980 : | NATIONAL CHARACTER opt_varying : { $$ = $3 ? "varchar": "bpchar"; } : | NATIONAL CHAR_P opt_varying : { $$ = $3 ? "varchar": "bpchar"; } : | NCHAR opt_varying : { $$ = $2 ? "varchar": "bpchar"; } 0.00 : 516ca0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516ca7: 41 be f2 69 88 00 mov $0x8869f2,%r14d 0.00 : 516cad: b8 11 97 7c 00 mov $0x7c9711,%eax 0.00 : 516cb2: 80 3a 00 cmpb $0x0,(%rdx) 0.00 : 516cb5: 4c 0f 45 f0 cmovne %rax,%r14 : ; 0.00 : 516cb9: e9 c2 ac ff ff jmpq 511980 : | VARCHAR : { $$ = "varchar"; } : | NATIONAL CHARACTER opt_varying : { $$ = $3 ? "varchar": "bpchar"; } : | NATIONAL CHAR_P opt_varying : { $$ = $3 ? "varchar": "bpchar"; } 0.00 : 516cbe: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516cc5: 41 be f2 69 88 00 mov $0x8869f2,%r14d 0.00 : 516ccb: 80 38 00 cmpb $0x0,(%rax) 0.00 : 516cce: b8 11 97 7c 00 mov $0x7c9711,%eax 0.00 : 516cd3: 4c 0f 45 f0 cmovne %rax,%r14 : | NCHAR opt_varying 0.00 : 516cd7: e9 a4 ac ff ff jmpq 511980 : | CHAR_P opt_varying : { $$ = $2 ? "varchar": "bpchar"; } : | VARCHAR : { $$ = "varchar"; } : | NATIONAL CHARACTER opt_varying : { $$ = $3 ? "varchar": "bpchar"; } 0.00 : 516cdc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516ce3: 41 be f2 69 88 00 mov $0x8869f2,%r14d 0.00 : 516ce9: b8 11 97 7c 00 mov $0x7c9711,%eax 0.00 : 516cee: 80 3e 00 cmpb $0x0,(%rsi) 0.00 : 516cf1: 4c 0f 45 f0 cmovne %rax,%r14 : | NATIONAL CHAR_P opt_varying 0.00 : 516cf5: e9 86 ac ff ff jmpq 511980 : character: CHARACTER opt_varying : { $$ = $2 ? "varchar": "bpchar"; } : | CHAR_P opt_varying : { $$ = $2 ? "varchar": "bpchar"; } : | VARCHAR : { $$ = "varchar"; } 0.00 : 516cfa: 41 be 11 97 7c 00 mov $0x7c9711,%r14d : | NATIONAL CHARACTER opt_varying 0.00 : 516d00: e9 7b ac ff ff jmpq 511980 : { $$ = $2 ? "varchar": "bpchar"; } : ; : : opt_varying: : VARYING { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 516d05: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 516d08: e9 73 ac ff ff jmpq 511980 : | NCHAR opt_varying : { $$ = $2 ? "varchar": "bpchar"; } : ; : : opt_varying: : VARYING { $$ = TRUE; } 0.00 : 516d0d: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 516d10: e9 6b ac ff ff jmpq 511980 : ; : : opt_charset: : CHARACTER SET ColId { $$ = $3; } 0.00 : 516d15: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516d1c: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 516d1f: e9 5c ac ff ff jmpq 511980 : $$->typmods = $2; : $$->location = @1; : } : | BOOLEAN_P : { : $$ = SystemTypeName("bool"); 0.00 : 516d24: bf bd 79 8e 00 mov $0x8e79bd,%edi 0.00 : 516d29: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516d30: e8 fb 9c ff ff callq 510a30 : $$->location = @1; 0.00 : 516d35: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : $$->typmods = $2; : $$->location = @1; : } : | BOOLEAN_P : { : $$ = SystemTypeName("bool"); 0.00 : 516d3c: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 516d3f: 8b 02 mov (%rdx),%eax 0.00 : 516d41: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 516d45: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516d4c: e9 2f ac ff ff jmpq 511980 : $$->typmods = $2; : $$->location = @1; : } : | NUMERIC opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516d51: bf d9 60 8e 00 mov $0x8e60d9,%edi 0.00 : 516d56: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516d5d: e8 ce 9c ff ff callq 510a30 : $$->typmods = $2; 0.00 : 516d62: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$->typmods = $2; : $$->location = @1; : } : | NUMERIC opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516d69: 49 89 c6 mov %rax,%r14 : $$->typmods = $2; 0.00 : 516d6c: 48 8b 03 mov (%rbx),%rax 0.00 : 516d6f: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516d73: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 516d7a: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 516d7d: 41 89 46 30 mov %eax,0x30(%r14) : } : | BOOLEAN_P 0.00 : 516d81: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516d88: e9 f3 ab ff ff jmpq 511980 : $$->typmods = $2; : $$->location = @1; : } : | DEC opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516d8d: bf d9 60 8e 00 mov $0x8e60d9,%edi 0.00 : 516d92: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516d99: e8 92 9c ff ff callq 510a30 : $$->typmods = $2; 0.00 : 516d9e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$->typmods = $2; : $$->location = @1; : } : | DEC opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516da5: 49 89 c6 mov %rax,%r14 : $$->typmods = $2; 0.00 : 516da8: 48 8b 02 mov (%rdx),%rax 0.00 : 516dab: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516daf: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 516db6: 8b 41 fc mov -0x4(%rcx),%eax 0.00 : 516db9: 41 89 46 30 mov %eax,0x30(%r14) : } : | NUMERIC opt_type_modifiers 0.00 : 516dbd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516dc4: e9 b7 ab ff ff jmpq 511980 : $$ = SystemTypeName("float8"); : $$->location = @1; : } : | DECIMAL_P opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516dc9: bf d9 60 8e 00 mov $0x8e60d9,%edi 0.00 : 516dce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516dd5: e8 56 9c ff ff callq 510a30 : $$->typmods = $2; 0.00 : 516dda: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$ = SystemTypeName("float8"); : $$->location = @1; : } : | DECIMAL_P opt_type_modifiers : { : $$ = SystemTypeName("numeric"); 0.00 : 516de1: 49 89 c6 mov %rax,%r14 : $$->typmods = $2; 0.00 : 516de4: 48 8b 03 mov (%rbx),%rax 0.00 : 516de7: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @1; 0.00 : 516deb: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 516df2: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 516df5: 41 89 46 30 mov %eax,0x30(%r14) : } : | DEC opt_type_modifiers 0.00 : 516df9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516e00: e9 7b ab ff ff jmpq 511980 : $$ = $2; : $$->location = @1; : } : | DOUBLE_P PRECISION : { : $$ = SystemTypeName("float8"); 0.00 : 516e05: bf c0 69 88 00 mov $0x8869c0,%edi 0.00 : 516e0a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516e11: e8 1a 9c ff ff callq 510a30 : $$->location = @1; 0.00 : 516e16: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : $$ = $2; : $$->location = @1; : } : | DOUBLE_P PRECISION : { : $$ = SystemTypeName("float8"); 0.00 : 516e1d: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 516e20: 8b 41 fc mov -0x4(%rcx),%eax 0.00 : 516e23: 41 89 46 30 mov %eax,0x30(%r14) : } : | DECIMAL_P opt_type_modifiers 0.00 : 516e27: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516e2e: e9 4d ab ff ff jmpq 511980 : $$ = SystemTypeName("float4"); : $$->location = @1; : } : | FLOAT_P opt_float : { : $$ = $2; 0.00 : 516e33: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : $$->location = @1; 0.00 : 516e3a: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : $$ = SystemTypeName("float4"); : $$->location = @1; : } : | FLOAT_P opt_float : { : $$ = $2; 0.00 : 516e41: 4c 8b 30 mov (%rax),%r14 : $$->location = @1; 0.00 : 516e44: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 516e47: 41 89 46 30 mov %eax,0x30(%r14) : } : | DOUBLE_P PRECISION 0.00 : 516e4b: e9 30 ab ff ff jmpq 511980 : $$ = SystemTypeName("int8"); : $$->location = @1; : } : | REAL : { : $$ = SystemTypeName("float4"); 0.00 : 516e50: bf 76 5f 8e 00 mov $0x8e5f76,%edi 0.00 : 516e55: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516e5c: e8 cf 9b ff ff callq 510a30 : $$->location = @1; 0.00 : 516e61: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : $$ = SystemTypeName("int8"); : $$->location = @1; : } : | REAL : { : $$ = SystemTypeName("float4"); 0.00 : 516e68: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 516e6b: 8b 06 mov (%rsi),%eax 0.00 : 516e6d: 41 89 46 30 mov %eax,0x30(%r14) : } : | FLOAT_P opt_float 0.00 : 516e71: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516e78: e9 03 ab ff ff jmpq 511980 : $$ = SystemTypeName("int2"); : $$->location = @1; : } : | BIGINT : { : $$ = SystemTypeName("int8"); 0.00 : 516e7d: bf ba 60 8e 00 mov $0x8e60ba,%edi 0.00 : 516e82: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516e89: e8 a2 9b ff ff callq 510a30 : $$->location = @1; 0.00 : 516e8e: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx : $$ = SystemTypeName("int2"); : $$->location = @1; : } : | BIGINT : { : $$ = SystemTypeName("int8"); 0.00 : 516e95: 49 89 c6 mov %rax,%r14 : $$->location = @1; 0.00 : 516e98: 8b 03 mov (%rbx),%eax 0.00 : 516e9a: 41 89 46 30 mov %eax,0x30(%r14) : } : | REAL 0.00 : 516e9e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516ea5: e9 d6 aa ff ff jmpq 511980 : { : $$ = $1; : } : | BitWithoutLength : { : $$ = $1; 0.00 : 516eaa: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516eb1: 4c 8b 32 mov (%rdx),%r14 : } : ; 0.00 : 516eb4: e9 c7 aa ff ff jmpq 511980 : * SQL bit-field data types : * The following implements BIT() and BIT VARYING(). : */ : Bit: BitWithLength : { : $$ = $1; 0.00 : 516eb9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516ec0: 4c 8b 30 mov (%rax),%r14 : } : | BitWithoutLength 0.00 : 516ec3: e9 b8 aa ff ff jmpq 511980 : errmsg("precision for type float must be less than 54 bits"), : parser_errposition(@2))); : } : | /*EMPTY*/ : { : $$ = SystemTypeName("float8"); 0.00 : 516ec8: bf c0 69 88 00 mov $0x8869c0,%edi 0.00 : 516ecd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516ed4: e8 57 9b ff ff callq 510a30 : } : ; 0.00 : 516ed9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : errmsg("precision for type float must be less than 54 bits"), : parser_errposition(@2))); : } : | /*EMPTY*/ : { : $$ = SystemTypeName("float8"); 0.00 : 516ee0: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 516ee3: e9 98 aa ff ff jmpq 511980 : { : /* : * Check FLOAT() precision limits assuming IEEE floating : * types - thomas 1997-09-18 : */ : if ($2 < 1) 0.00 : 516ee8: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516eef: 8b 41 f8 mov -0x8(%rcx),%eax 0.00 : 516ef2: 85 c0 test %eax,%eax 0.00 : 516ef4: 0f 8e cf 27 01 00 jle 5296c9 : ereport(ERROR, : (errcode(ERRCODE_INVALID_PARAMETER_VALUE), : errmsg("precision for type float must be at least 1 bit"), : parser_errposition(@2))); : else if ($2 <= 24) 0.00 : 516efa: 83 f8 18 cmp $0x18,%eax 0.00 : 516efd: 0f 8e 99 23 01 00 jle 52929c : $$ = SystemTypeName("float4"); : else if ($2 <= 53) 0.00 : 516f03: 83 f8 35 cmp $0x35,%eax 0.00 : 516f06: 0f 8f c0 2e 01 00 jg 529dcc : $$ = SystemTypeName("float8"); 0.00 : 516f0c: bf c0 69 88 00 mov $0x8869c0,%edi 0.00 : 516f11: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516f18: e8 13 9b ff ff callq 510a30 0.00 : 516f1d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516f24: 49 89 c6 mov %rax,%r14 0.00 : 516f27: e9 54 aa ff ff jmpq 511980 : { : $$ = $1; : } : | BitWithoutLength : { : $$ = $1; 0.00 : 516f2c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516f33: 4c 8b 33 mov (%rbx),%r14 : $$->typmods = NIL; 0.00 : 516f36: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 516f3d: 00 : } : ; 0.00 : 516f3e: e9 3d aa ff ff jmpq 511980 : : /* ConstBit is like Bit except "BIT" defaults to unspecified length */ : /* See notes for ConstCharacter, which addresses same issue for "CHAR" */ : ConstBit: BitWithLength : { : $$ = $1; 0.00 : 516f43: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 516f4a: 4c 8b 31 mov (%rcx),%r14 : } : | BitWithoutLength 0.00 : 516f4d: e9 2e aa ff ff jmpq 511980 : /* cvarno is filled in by parse analysis */ : n->cursor_name = $4; : n->cursor_param = 0; : $$ = (Node *) n; : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 516f52: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 516f55: e9 26 aa ff ff jmpq 511980 : /* variant for UPDATE and DELETE */ : where_or_current_clause: : WHERE a_expr { $$ = $2; } : | WHERE CURRENT_P OF cursor_name : { : CurrentOfExpr *n = makeNode(CurrentOfExpr); 0.00 : 516f5a: 48 8b 3d ff 38 6a 00 mov 0x6a38ff(%rip),%rdi # bba860 0.00 : 516f61: be 18 00 00 00 mov $0x18,%esi 0.00 : 516f66: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516f6d: e8 9e 1e 28 00 callq 798e10 0.00 : 516f72: c7 00 54 01 00 00 movl $0x154,(%rax) : /* cvarno is filled in by parse analysis */ : n->cursor_name = $4; 0.00 : 516f78: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cursor_param = 0; : $$ = (Node *) n; 0.00 : 516f7f: 49 89 c6 mov %rax,%r14 : WHERE a_expr { $$ = $2; } : | WHERE CURRENT_P OF cursor_name : { : CurrentOfExpr *n = makeNode(CurrentOfExpr); : /* cvarno is filled in by parse analysis */ : n->cursor_name = $4; 0.00 : 516f82: 48 8b 11 mov (%rcx),%rdx : n->cursor_param = 0; 0.00 : 516f85: c7 40 10 00 00 00 00 movl $0x0,0x10(%rax) : WHERE a_expr { $$ = $2; } : | WHERE CURRENT_P OF cursor_name : { : CurrentOfExpr *n = makeNode(CurrentOfExpr); : /* cvarno is filled in by parse analysis */ : n->cursor_name = $4; 0.00 : 516f8c: 48 89 50 08 mov %rdx,0x8(%rax) : n->cursor_param = 0; : $$ = (Node *) n; : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 516f90: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 516f97: e9 e4 a9 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : /* variant for UPDATE and DELETE */ : where_or_current_clause: : WHERE a_expr { $$ = $2; } 0.00 : 516f9c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 516fa3: 4c 8b 32 mov (%rdx),%r14 : | WHERE CURRENT_P OF cursor_name 0.00 : 516fa6: e9 d5 a9 ff ff jmpq 511980 : ; : : : where_clause: : WHERE a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 516fab: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 516fae: e9 cd a9 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = false; } : ; : : : where_clause: : WHERE a_expr { $$ = $2; } 0.00 : 516fb3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 516fba: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 516fbd: e9 be a9 ff ff jmpq 511980 : opt_col_def_list: AS '(' TableFuncElementList ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_ordinality: WITH_ORDINALITY { $$ = true; } : | /*EMPTY*/ { $$ = false; } 0.00 : 516fc2: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 516fc5: e9 b6 a9 ff ff jmpq 511980 : : opt_col_def_list: AS '(' TableFuncElementList ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_ordinality: WITH_ORDINALITY { $$ = true; } 0.00 : 516fca: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = false; } 0.00 : 516fcd: e9 ae a9 ff ff jmpq 511980 : rowsfrom_item { $$ = list_make1($1); } : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } : ; : : opt_col_def_list: AS '(' TableFuncElementList ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 516fd2: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 516fd5: e9 a6 a9 ff ff jmpq 511980 : rowsfrom_list: : rowsfrom_item { $$ = list_make1($1); } : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } : ; : : opt_col_def_list: AS '(' TableFuncElementList ')' { $$ = $3; } 0.00 : 516fda: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 516fe1: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 516fe5: e9 96 a9 ff ff jmpq 511980 : { $$ = list_make2($1, $2); } : ; : : rowsfrom_list: : rowsfrom_item { $$ = list_make1($1); } : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } 0.00 : 516fea: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 516ff1: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 516ff5: 48 8b 33 mov (%rbx),%rsi 0.00 : 516ff8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 516fff: e8 7c ae 0c 00 callq 5e1e80 : ; 0.00 : 517004: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = list_make2($1, $2); } : ; : : rowsfrom_list: : rowsfrom_item { $$ = list_make1($1); } : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } 0.00 : 51700b: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51700e: e9 6d a9 ff ff jmpq 511980 : rowsfrom_item: func_expr_windowless opt_col_def_list : { $$ = list_make2($1, $2); } : ; : : rowsfrom_list: : rowsfrom_item { $$ = list_make1($1); } 0.00 : 517013: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51701a: 31 f6 xor %esi,%esi 0.00 : 51701c: 48 8b 39 mov (%rcx),%rdi 0.00 : 51701f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517026: e8 25 a8 0c 00 callq 5e1850 : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } 0.00 : 51702b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : rowsfrom_item: func_expr_windowless opt_col_def_list : { $$ = list_make2($1, $2); } : ; : : rowsfrom_list: : rowsfrom_item { $$ = list_make1($1); } 0.00 : 517032: 49 89 c6 mov %rax,%r14 : | rowsfrom_list ',' rowsfrom_item { $$ = lappend($1, $3); } 0.00 : 517035: e9 46 a9 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : rowsfrom_item: func_expr_windowless opt_col_def_list : { $$ = list_make2($1, $2); } 0.00 : 51703a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517041: 31 f6 xor %esi,%esi 0.00 : 517043: 48 8b 38 mov (%rax),%rdi 0.00 : 517046: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51704d: e8 fe a7 0c 00 callq 5e1850 0.00 : 517052: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517059: 48 89 c6 mov %rax,%rsi 0.00 : 51705c: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 517060: e8 eb a7 0c 00 callq 5e1850 : ; 0.00 : 517065: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) n; : } : ; : : rowsfrom_item: func_expr_windowless opt_col_def_list : { $$ = list_make2($1, $2); } 0.00 : 51706c: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51706f: e9 0c a9 ff ff jmpq 511980 : /* alias and coldeflist are set by table_ref production */ : $$ = (Node *) n; : } : | ROWS FROM '(' rowsfrom_list ')' opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); 0.00 : 517074: 48 8b 3d e5 37 6a 00 mov 0x6a37e5(%rip),%rdi # bba860 0.00 : 51707b: be 20 00 00 00 mov $0x20,%esi 0.00 : 517080: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517087: e8 84 1d 28 00 callq 798e10 0.00 : 51708c: c7 00 94 03 00 00 movl $0x394,(%rax) : n->lateral = false; 0.00 : 517092: c6 40 04 00 movb $0x0,0x4(%rax) : n->ordinality = $6; : n->is_rowsfrom = true; : n->functions = $4; : /* alias and coldeflist are set by table_ref production */ : $$ = (Node *) n; 0.00 : 517096: 49 89 c6 mov %rax,%r14 : } : | ROWS FROM '(' rowsfrom_list ')' opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); : n->lateral = false; : n->ordinality = $6; 0.00 : 517099: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5170a0: 0f b6 13 movzbl (%rbx),%edx : n->is_rowsfrom = true; 0.00 : 5170a3: c6 40 06 01 movb $0x1,0x6(%rax) : } : | ROWS FROM '(' rowsfrom_list ')' opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); : n->lateral = false; : n->ordinality = $6; 0.00 : 5170a7: 88 50 05 mov %dl,0x5(%rax) : n->is_rowsfrom = true; : n->functions = $4; 0.00 : 5170aa: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 5170ae: 48 89 50 08 mov %rdx,0x8(%rax) : /* alias and coldeflist are set by table_ref production */ : $$ = (Node *) n; : } : ; 0.00 : 5170b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5170b9: e9 c2 a8 ff ff jmpq 511980 : * It's also possible to attach a column definition list to the RangeFunction : * as a whole, but that's handled by the table_ref production. : */ : func_table: func_expr_windowless opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); 0.00 : 5170be: 48 8b 3d 9b 37 6a 00 mov 0x6a379b(%rip),%rdi # bba860 0.00 : 5170c5: be 20 00 00 00 mov $0x20,%esi 0.00 : 5170ca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5170d1: e8 3a 1d 28 00 callq 798e10 0.00 : 5170d6: c7 00 94 03 00 00 movl $0x394,(%rax) : n->lateral = false; 0.00 : 5170dc: c6 40 04 00 movb $0x0,0x4(%rax) : * It's also possible to attach a column definition list to the RangeFunction : * as a whole, but that's handled by the table_ref production. : */ : func_table: func_expr_windowless opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); 0.00 : 5170e0: 48 89 c3 mov %rax,%rbx : n->lateral = false; : n->ordinality = $2; 0.00 : 5170e3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->is_rowsfrom = false; : n->functions = list_make1(list_make2($1, NIL)); 0.00 : 5170ea: 31 f6 xor %esi,%esi 0.00 : 5170ec: 31 ff xor %edi,%edi : /* alias and coldeflist are set by table_ref production */ : $$ = (Node *) n; 0.00 : 5170ee: 49 89 de mov %rbx,%r14 : */ : func_table: func_expr_windowless opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); : n->lateral = false; : n->ordinality = $2; 0.00 : 5170f1: 0f b6 02 movzbl (%rdx),%eax : n->is_rowsfrom = false; 0.00 : 5170f4: c6 43 06 00 movb $0x0,0x6(%rbx) : */ : func_table: func_expr_windowless opt_ordinality : { : RangeFunction *n = makeNode(RangeFunction); : n->lateral = false; : n->ordinality = $2; 0.00 : 5170f8: 88 43 05 mov %al,0x5(%rbx) : n->is_rowsfrom = false; : n->functions = list_make1(list_make2($1, NIL)); 0.00 : 5170fb: e8 50 a7 0c 00 callq 5e1850 0.00 : 517100: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517107: 48 89 c6 mov %rax,%rsi 0.00 : 51710a: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 51710e: e8 3d a7 0c 00 callq 5e1850 0.00 : 517113: 31 f6 xor %esi,%esi 0.00 : 517115: 48 89 c7 mov %rax,%rdi 0.00 : 517118: e8 33 a7 0c 00 callq 5e1850 0.00 : 51711d: 48 89 43 08 mov %rax,0x8(%rbx) : /* alias and coldeflist are set by table_ref production */ : $$ = (Node *) n; : } : | ROWS FROM '(' rowsfrom_list ')' opt_ordinality 0.00 : 517121: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517128: e9 53 a8 ff ff jmpq 511980 : $1->alias = alias; : $$ = $1; : } : | relation_expr AS ColId : { : Alias *alias = makeNode(Alias); 0.00 : 51712d: 48 8b 3d 2c 37 6a 00 mov 0x6a372c(%rip),%rdi # bba860 0.00 : 517134: be 18 00 00 00 mov $0x18,%esi 0.00 : 517139: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517140: e8 cb 1c 28 00 callq 798e10 0.00 : 517145: c7 00 2c 01 00 00 movl $0x12c,(%rax) : alias->aliasname = $3; 0.00 : 51714b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517152: 48 8b 16 mov (%rsi),%rdx 0.00 : 517155: 48 89 50 08 mov %rdx,0x8(%rax) : $1->alias = alias; 0.00 : 517159: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 51715d: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = $1; 0.00 : 517161: 4c 8b 76 f0 mov -0x10(%rsi),%r14 : } : ; 0.00 : 517165: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51716c: e9 0f a8 ff ff jmpq 511980 : { : $$ = $1; : } : | relation_expr ColId : { : Alias *alias = makeNode(Alias); 0.00 : 517171: 48 8b 3d e8 36 6a 00 mov 0x6a36e8(%rip),%rdi # bba860 0.00 : 517178: be 18 00 00 00 mov $0x18,%esi 0.00 : 51717d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517184: e8 87 1c 28 00 callq 798e10 0.00 : 517189: c7 00 2c 01 00 00 movl $0x12c,(%rax) : alias->aliasname = $2; 0.00 : 51718f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517196: 48 8b 13 mov (%rbx),%rdx 0.00 : 517199: 48 89 50 08 mov %rdx,0x8(%rax) : $1->alias = alias; 0.00 : 51719d: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5171a1: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = $1; 0.00 : 5171a5: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : } : | relation_expr AS ColId 0.00 : 5171a9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5171b0: e9 cb a7 ff ff jmpq 511980 : * has, causing the parser to prefer to reduce, in effect assuming that the : * SET is not an alias. : */ : relation_expr_opt_alias: relation_expr %prec UMINUS : { : $$ = $1; 0.00 : 5171b5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5171bc: 4c 8b 31 mov (%rcx),%r14 : } : | relation_expr ColId 0.00 : 5171bf: e9 bc a7 ff ff jmpq 511980 : ; : : : relation_expr_list: : relation_expr { $$ = list_make1($1); } : | relation_expr_list ',' relation_expr { $$ = lappend($1, $3); } 0.00 : 5171c4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5171cb: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5171cf: 48 8b 32 mov (%rdx),%rsi 0.00 : 5171d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5171d9: e8 a2 ac 0c 00 callq 5e1e80 : ; 0.00 : 5171de: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : : relation_expr_list: : relation_expr { $$ = list_make1($1); } : | relation_expr_list ',' relation_expr { $$ = lappend($1, $3); } 0.00 : 5171e5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5171e8: e9 93 a7 ff ff jmpq 511980 : } : ; : : : relation_expr_list: : relation_expr { $$ = list_make1($1); } 0.00 : 5171ed: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5171f4: 31 f6 xor %esi,%esi 0.00 : 5171f6: 48 8b 38 mov (%rax),%rdi 0.00 : 5171f9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517200: e8 4b a6 0c 00 callq 5e1850 : | relation_expr_list ',' relation_expr { $$ = lappend($1, $3); } 0.00 : 517205: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : : relation_expr_list: : relation_expr { $$ = list_make1($1); } 0.00 : 51720c: 49 89 c6 mov %rax,%r14 : | relation_expr_list ',' relation_expr { $$ = lappend($1, $3); } 0.00 : 51720f: e9 6c a7 ff ff jmpq 511980 : $$->alias = NULL; : } : | ONLY '(' qualified_name ')' : { : /* no inheritance, SQL99-style syntax */ : $$ = $3; 0.00 : 517214: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51721b: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : $$->inhOpt = INH_NO; 0.00 : 51721f: 41 c7 46 20 00 00 00 movl $0x0,0x20(%r14) 0.00 : 517226: 00 : $$->alias = NULL; 0.00 : 517227: 49 c7 46 28 00 00 00 movq $0x0,0x28(%r14) 0.00 : 51722e: 00 : } : ; 0.00 : 51722f: e9 4c a7 ff ff jmpq 511980 : $$->alias = NULL; : } : | ONLY qualified_name : { : /* no inheritance */ : $$ = $2; 0.00 : 517234: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51723b: 4c 8b 33 mov (%rbx),%r14 : $$->inhOpt = INH_NO; 0.00 : 51723e: 41 c7 46 20 00 00 00 movl $0x0,0x20(%r14) 0.00 : 517245: 00 : $$->alias = NULL; 0.00 : 517246: 49 c7 46 28 00 00 00 movq $0x0,0x28(%r14) 0.00 : 51724d: 00 : } : | ONLY '(' qualified_name ')' 0.00 : 51724e: e9 2d a7 ff ff jmpq 511980 : $$->alias = NULL; : } : | qualified_name '*' : { : /* inheritance query */ : $$ = $1; 0.00 : 517253: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51725a: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : $$->inhOpt = INH_YES; 0.00 : 51725e: 41 c7 46 20 01 00 00 movl $0x1,0x20(%r14) 0.00 : 517265: 00 : $$->alias = NULL; 0.00 : 517266: 49 c7 46 28 00 00 00 movq $0x0,0x28(%r14) 0.00 : 51726d: 00 : } : | ONLY qualified_name 0.00 : 51726e: e9 0d a7 ff ff jmpq 511980 : : relation_expr: : qualified_name : { : /* default inheritance */ : $$ = $1; 0.00 : 517273: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51727a: 4c 8b 32 mov (%rdx),%r14 : $$->inhOpt = INH_DEFAULT; 0.00 : 51727d: 41 c7 46 20 02 00 00 movl $0x2,0x20(%r14) 0.00 : 517284: 00 : $$->alias = NULL; 0.00 : 517285: 49 c7 46 28 00 00 00 movq $0x0,0x28(%r14) 0.00 : 51728c: 00 : } : | qualified_name '*' 0.00 : 51728d: e9 ee a6 ff ff jmpq 511980 : * : * We return USING as a List node, while an ON-expr will not be a List. : */ : : join_qual: USING '(' name_list ')' { $$ = (Node *) $3; } : | ON a_expr { $$ = $2; } 0.00 : 517292: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517299: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 51729c: e9 df a6 ff ff jmpq 511980 : * ON expr allows more general qualifications. : * : * We return USING as a List node, while an ON-expr will not be a List. : */ : : join_qual: USING '(' name_list ')' { $$ = (Node *) $3; } 0.00 : 5172a1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5172a8: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | ON a_expr { $$ = $2; } 0.00 : 5172ac: e9 cf a6 ff ff jmpq 511980 : | INNER_P { $$ = JOIN_INNER; } : ; : : /* OUTER is just noise... */ : join_outer: OUTER_P { $$ = NULL; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5172b1: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5172b4: e9 c7 a6 ff ff jmpq 511980 : | RIGHT join_outer { $$ = JOIN_RIGHT; } : | INNER_P { $$ = JOIN_INNER; } : ; : : /* OUTER is just noise... */ : join_outer: OUTER_P { $$ = NULL; } 0.00 : 5172b9: 45 31 f6 xor %r14d,%r14d : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5172bc: e9 bf a6 ff ff jmpq 511980 : ; : : join_type: FULL join_outer { $$ = JOIN_FULL; } : | LEFT join_outer { $$ = JOIN_LEFT; } : | RIGHT join_outer { $$ = JOIN_RIGHT; } : | INNER_P { $$ = JOIN_INNER; } 0.00 : 5172c1: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5172c8: ff ff ff 0.00 : 5172cb: 49 21 de and %rbx,%r14 0.00 : 5172ce: 66 90 xchg %ax,%ax : ; 0.00 : 5172d0: e9 ab a6 ff ff jmpq 511980 : } : ; : : join_type: FULL join_outer { $$ = JOIN_FULL; } : | LEFT join_outer { $$ = JOIN_LEFT; } : | RIGHT join_outer { $$ = JOIN_RIGHT; } 0.00 : 5172d5: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5172dc: ff ff ff 0.00 : 5172df: 49 21 ce and %rcx,%r14 0.00 : 5172e2: 49 83 ce 03 or $0x3,%r14 : | INNER_P { $$ = JOIN_INNER; } 0.00 : 5172e6: e9 95 a6 ff ff jmpq 511980 : $$ = list_make2(NULL, NIL); : } : ; : : join_type: FULL join_outer { $$ = JOIN_FULL; } : | LEFT join_outer { $$ = JOIN_LEFT; } 0.00 : 5172eb: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5172f2: ff ff ff 0.00 : 5172f5: 49 21 d6 and %rdx,%r14 0.00 : 5172f8: 49 83 ce 01 or $0x1,%r14 : | RIGHT join_outer { $$ = JOIN_RIGHT; } 0.00 : 5172fc: e9 7f a6 ff ff jmpq 511980 : { : $$ = list_make2(NULL, NIL); : } : ; : : join_type: FULL join_outer { $$ = JOIN_FULL; } 0.00 : 517301: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 517308: ff ff ff 0.00 : 51730b: 49 21 c6 and %rax,%r14 0.00 : 51730e: 49 83 ce 02 or $0x2,%r14 : | LEFT join_outer { $$ = JOIN_LEFT; } 0.00 : 517312: e9 69 a6 ff ff jmpq 511980 : a->aliasname = $1; : $$ = list_make2(a, $3); : } : | /*EMPTY*/ : { : $$ = list_make2(NULL, NIL); 0.00 : 517317: 31 f6 xor %esi,%esi 0.00 : 517319: 31 ff xor %edi,%edi 0.00 : 51731b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517322: e8 29 a5 0c 00 callq 5e1850 0.00 : 517327: 31 ff xor %edi,%edi 0.00 : 517329: 48 89 c6 mov %rax,%rsi 0.00 : 51732c: e8 1f a5 0c 00 callq 5e1850 : } : ; 0.00 : 517331: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : a->aliasname = $1; : $$ = list_make2(a, $3); : } : | /*EMPTY*/ : { : $$ = list_make2(NULL, NIL); 0.00 : 517338: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51733b: e9 40 a6 ff ff jmpq 511980 : a->aliasname = $2; : $$ = list_make2(a, $4); : } : | ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); 0.00 : 517340: 48 8b 3d 19 35 6a 00 mov 0x6a3519(%rip),%rdi # bba860 0.00 : 517347: be 18 00 00 00 mov $0x18,%esi 0.00 : 51734c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517353: e8 b8 1a 28 00 callq 798e10 0.00 : 517358: c7 00 2c 01 00 00 movl $0x12c,(%rax) : a->aliasname = $1; 0.00 : 51735e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : a->aliasname = $2; : $$ = list_make2(a, $4); : } : | ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); 0.00 : 517365: 48 89 c3 mov %rax,%rbx : a->aliasname = $1; 0.00 : 517368: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 51736c: 48 89 43 08 mov %rax,0x8(%rbx) : $$ = list_make2(a, $3); 0.00 : 517370: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 517374: 31 f6 xor %esi,%esi 0.00 : 517376: e8 d5 a4 0c 00 callq 5e1850 0.00 : 51737b: 48 89 df mov %rbx,%rdi 0.00 : 51737e: 48 89 c6 mov %rax,%rsi 0.00 : 517381: e8 ca a4 0c 00 callq 5e1850 : } : | /*EMPTY*/ 0.00 : 517386: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); : a->aliasname = $1; : $$ = list_make2(a, $3); 0.00 : 51738d: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ 0.00 : 517390: e9 eb a5 ff ff jmpq 511980 : { : $$ = list_make2(NULL, $3); : } : | AS ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); 0.00 : 517395: 48 8b 3d c4 34 6a 00 mov 0x6a34c4(%rip),%rdi # bba860 0.00 : 51739c: be 18 00 00 00 mov $0x18,%esi 0.00 : 5173a1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5173a8: e8 63 1a 28 00 callq 798e10 0.00 : 5173ad: c7 00 2c 01 00 00 movl $0x12c,(%rax) : a->aliasname = $2; 0.00 : 5173b3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : { : $$ = list_make2(NULL, $3); : } : | AS ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); 0.00 : 5173ba: 48 89 c3 mov %rax,%rbx : a->aliasname = $2; : $$ = list_make2(a, $4); 0.00 : 5173bd: 31 f6 xor %esi,%esi : $$ = list_make2(NULL, $3); : } : | AS ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); : a->aliasname = $2; 0.00 : 5173bf: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 5173c3: 48 89 43 08 mov %rax,0x8(%rbx) : $$ = list_make2(a, $4); 0.00 : 5173c7: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 5173cb: e8 80 a4 0c 00 callq 5e1850 0.00 : 5173d0: 48 89 df mov %rbx,%rdi 0.00 : 5173d3: 48 89 c6 mov %rax,%rsi 0.00 : 5173d6: e8 75 a4 0c 00 callq 5e1850 : } : | ColId '(' TableFuncElementList ')' 0.00 : 5173db: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | AS ColId '(' TableFuncElementList ')' : { : Alias *a = makeNode(Alias); : a->aliasname = $2; : $$ = list_make2(a, $4); 0.00 : 5173e2: 49 89 c6 mov %rax,%r14 : } : | ColId '(' TableFuncElementList ')' 0.00 : 5173e5: e9 96 a5 ff ff jmpq 511980 : { : $$ = list_make2($1, NIL); : } : | AS '(' TableFuncElementList ')' : { : $$ = list_make2(NULL, $3); 0.00 : 5173ea: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5173f1: 31 f6 xor %esi,%esi 0.00 : 5173f3: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 5173f7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5173fe: e8 4d a4 0c 00 callq 5e1850 0.00 : 517403: 31 ff xor %edi,%edi 0.00 : 517405: 48 89 c6 mov %rax,%rsi 0.00 : 517408: e8 43 a4 0c 00 callq 5e1850 : } : | AS ColId '(' TableFuncElementList ')' 0.00 : 51740d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make2($1, NIL); : } : | AS '(' TableFuncElementList ')' : { : $$ = list_make2(NULL, $3); 0.00 : 517414: 49 89 c6 mov %rax,%r14 : } : | AS ColId '(' TableFuncElementList ')' 0.00 : 517417: e9 64 a5 ff ff jmpq 511980 : * return a 2-element list that gets disassembled by calling production. : */ : func_alias_clause: : alias_clause : { : $$ = list_make2($1, NIL); 0.00 : 51741c: 31 f6 xor %esi,%esi 0.00 : 51741e: 31 ff xor %edi,%edi 0.00 : 517420: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517427: e8 24 a4 0c 00 callq 5e1850 0.00 : 51742c: 48 89 c6 mov %rax,%rsi 0.00 : 51742f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517436: 48 8b 38 mov (%rax),%rdi 0.00 : 517439: e8 12 a4 0c 00 callq 5e1850 : } : | AS '(' TableFuncElementList ')' 0.00 : 51743e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * return a 2-element list that gets disassembled by calling production. : */ : func_alias_clause: : alias_clause : { : $$ = list_make2($1, NIL); 0.00 : 517445: 49 89 c6 mov %rax,%r14 : } : | AS '(' TableFuncElementList ')' 0.00 : 517448: e9 33 a5 ff ff jmpq 511980 : $$->aliasname = $1; : } : ; : : opt_alias_clause: alias_clause { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51744d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517450: e9 2b a5 ff ff jmpq 511980 : $$ = makeNode(Alias); : $$->aliasname = $1; : } : ; : : opt_alias_clause: alias_clause { $$ = $1; } 0.00 : 517455: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51745c: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51745f: e9 1c a5 ff ff jmpq 511980 : $$->aliasname = $1; : $$->colnames = $3; : } : | ColId : { : $$ = makeNode(Alias); 0.00 : 517464: 48 8b 3d f5 33 6a 00 mov 0x6a33f5(%rip),%rdi # bba860 0.00 : 51746b: be 18 00 00 00 mov $0x18,%esi 0.00 : 517470: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517477: e8 94 19 28 00 callq 798e10 0.00 : 51747c: c7 00 2c 01 00 00 movl $0x12c,(%rax) : $$->aliasname = $1; 0.00 : 517482: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$->aliasname = $1; : $$->colnames = $3; : } : | ColId : { : $$ = makeNode(Alias); 0.00 : 517489: 49 89 c6 mov %rax,%r14 : $$->aliasname = $1; 0.00 : 51748c: 48 8b 01 mov (%rcx),%rax 0.00 : 51748f: 49 89 46 08 mov %rax,0x8(%r14) : } : ; 0.00 : 517493: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51749a: e9 e1 a4 ff ff jmpq 511980 : $$ = makeNode(Alias); : $$->aliasname = $2; : } : | ColId '(' name_list ')' : { : $$ = makeNode(Alias); 0.00 : 51749f: 48 8b 3d ba 33 6a 00 mov 0x6a33ba(%rip),%rdi # bba860 0.00 : 5174a6: be 18 00 00 00 mov $0x18,%esi 0.00 : 5174ab: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5174b2: e8 59 19 28 00 callq 798e10 0.00 : 5174b7: c7 00 2c 01 00 00 movl $0x12c,(%rax) : $$->aliasname = $1; 0.00 : 5174bd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$ = makeNode(Alias); : $$->aliasname = $2; : } : | ColId '(' name_list ')' : { : $$ = makeNode(Alias); 0.00 : 5174c4: 49 89 c6 mov %rax,%r14 : $$->aliasname = $1; 0.00 : 5174c7: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 5174cb: 49 89 46 08 mov %rax,0x8(%r14) : $$->colnames = $3; 0.00 : 5174cf: 48 8b 42 f8 mov -0x8(%rdx),%rax 0.00 : 5174d3: 49 89 46 10 mov %rax,0x10(%r14) : } : | ColId 0.00 : 5174d7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5174de: e9 9d a4 ff ff jmpq 511980 : $$->aliasname = $2; : $$->colnames = $4; : } : | AS ColId : { : $$ = makeNode(Alias); 0.00 : 5174e3: 48 8b 3d 76 33 6a 00 mov 0x6a3376(%rip),%rdi # bba860 0.00 : 5174ea: be 18 00 00 00 mov $0x18,%esi 0.00 : 5174ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5174f6: e8 15 19 28 00 callq 798e10 0.00 : 5174fb: c7 00 2c 01 00 00 movl $0x12c,(%rax) : $$->aliasname = $2; 0.00 : 517501: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$->aliasname = $2; : $$->colnames = $4; : } : | AS ColId : { : $$ = makeNode(Alias); 0.00 : 517508: 49 89 c6 mov %rax,%r14 : $$->aliasname = $2; 0.00 : 51750b: 48 8b 06 mov (%rsi),%rax 0.00 : 51750e: 49 89 46 08 mov %rax,0x8(%r14) : } : | ColId '(' name_list ')' 0.00 : 517512: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517519: e9 62 a4 ff ff jmpq 511980 : ; : : alias_clause: : AS ColId '(' name_list ')' : { : $$ = makeNode(Alias); 0.00 : 51751e: 48 8b 3d 3b 33 6a 00 mov 0x6a333b(%rip),%rdi # bba860 0.00 : 517525: be 18 00 00 00 mov $0x18,%esi 0.00 : 51752a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517531: e8 da 18 28 00 callq 798e10 0.00 : 517536: c7 00 2c 01 00 00 movl $0x12c,(%rax) : $$->aliasname = $2; 0.00 : 51753c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : ; : : alias_clause: : AS ColId '(' name_list ')' : { : $$ = makeNode(Alias); 0.00 : 517543: 49 89 c6 mov %rax,%r14 : $$->aliasname = $2; 0.00 : 517546: 48 8b 43 e8 mov -0x18(%rbx),%rax 0.00 : 51754a: 49 89 46 08 mov %rax,0x8(%r14) : $$->colnames = $4; 0.00 : 51754e: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 517552: 49 89 46 10 mov %rax,0x10(%r14) : } : | AS ColId 0.00 : 517556: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51755d: e9 1e a4 ff ff jmpq 511980 : $$ = n; : } : | table_ref NATURAL JOIN table_ref : { : /* letting join_type reduce to empty doesn't work */ : JoinExpr *n = makeNode(JoinExpr); 0.00 : 517562: 48 8b 3d f7 32 6a 00 mov 0x6a32f7(%rip),%rdi # bba860 0.00 : 517569: be 40 00 00 00 mov $0x40,%esi 0.00 : 51756e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517575: e8 96 18 28 00 callq 798e10 0.00 : 51757a: c7 00 57 01 00 00 movl $0x157,(%rax) : n->jointype = JOIN_INNER; 0.00 : 517580: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->isNatural = TRUE; : n->larg = $1; : n->rarg = $4; : n->usingClause = NIL; /* figure out which columns later... */ : n->quals = NULL; /* fill later */ : $$ = n; 0.00 : 517587: 49 89 c6 mov %rax,%r14 : | table_ref NATURAL JOIN table_ref : { : /* letting join_type reduce to empty doesn't work */ : JoinExpr *n = makeNode(JoinExpr); : n->jointype = JOIN_INNER; : n->isNatural = TRUE; 0.00 : 51758a: c6 40 08 01 movb $0x1,0x8(%rax) : n->larg = $1; 0.00 : 51758e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517595: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 517599: 48 89 50 10 mov %rdx,0x10(%rax) : n->rarg = $4; 0.00 : 51759d: 48 8b 11 mov (%rcx),%rdx : n->usingClause = NIL; /* figure out which columns later... */ 0.00 : 5175a0: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 5175a7: 00 : n->quals = NULL; /* fill later */ 0.00 : 5175a8: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 5175af: 00 : /* letting join_type reduce to empty doesn't work */ : JoinExpr *n = makeNode(JoinExpr); : n->jointype = JOIN_INNER; : n->isNatural = TRUE; : n->larg = $1; : n->rarg = $4; 0.00 : 5175b0: 48 89 50 18 mov %rdx,0x18(%rax) : n->usingClause = NIL; /* figure out which columns later... */ : n->quals = NULL; /* fill later */ : $$ = n; : } : ; 0.00 : 5175b4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5175bb: e9 c0 a3 ff ff jmpq 511980 : n->quals = $4; /* ON clause */ : $$ = n; : } : | table_ref NATURAL join_type JOIN table_ref : { : JoinExpr *n = makeNode(JoinExpr); 0.00 : 5175c0: 48 8b 3d 99 32 6a 00 mov 0x6a3299(%rip),%rdi # bba860 0.00 : 5175c7: be 40 00 00 00 mov $0x40,%esi 0.00 : 5175cc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5175d3: e8 38 18 28 00 callq 798e10 0.00 : 5175d8: c7 00 57 01 00 00 movl $0x157,(%rax) : n->jointype = $3; 0.00 : 5175de: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->isNatural = TRUE; : n->larg = $1; : n->rarg = $5; : n->usingClause = NIL; /* figure out which columns later... */ : n->quals = NULL; /* fill later */ : $$ = n; 0.00 : 5175e5: 49 89 c6 mov %rax,%r14 : $$ = n; : } : | table_ref NATURAL join_type JOIN table_ref : { : JoinExpr *n = makeNode(JoinExpr); : n->jointype = $3; 0.00 : 5175e8: 8b 56 f0 mov -0x10(%rsi),%edx : n->isNatural = TRUE; 0.00 : 5175eb: c6 40 08 01 movb $0x1,0x8(%rax) : $$ = n; : } : | table_ref NATURAL join_type JOIN table_ref : { : JoinExpr *n = makeNode(JoinExpr); : n->jointype = $3; 0.00 : 5175ef: 89 50 04 mov %edx,0x4(%rax) : n->isNatural = TRUE; : n->larg = $1; 0.00 : 5175f2: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 5175f6: 48 89 50 10 mov %rdx,0x10(%rax) : n->rarg = $5; 0.00 : 5175fa: 48 8b 16 mov (%rsi),%rdx : n->usingClause = NIL; /* figure out which columns later... */ 0.00 : 5175fd: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 517604: 00 : n->quals = NULL; /* fill later */ 0.00 : 517605: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51760c: 00 : { : JoinExpr *n = makeNode(JoinExpr); : n->jointype = $3; : n->isNatural = TRUE; : n->larg = $1; : n->rarg = $5; 0.00 : 51760d: 48 89 50 18 mov %rdx,0x18(%rax) : n->usingClause = NIL; /* figure out which columns later... */ : n->quals = NULL; /* fill later */ : $$ = n; : } : | table_ref NATURAL JOIN table_ref 0.00 : 517611: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517618: e9 63 a3 ff ff jmpq 511980 : $$ = n; : } : | table_ref JOIN table_ref join_qual : { : /* letting join_type reduce to empty doesn't work */ : JoinExpr *n = makeNode(JoinExpr); 0.00 : 51761d: 48 8b 3d 3c 32 6a 00 mov 0x6a323c(%rip),%rdi # bba860 0.00 : 517624: be 40 00 00 00 mov $0x40,%esi 0.00 : 517629: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517630: e8 db 17 28 00 callq 798e10 0.00 : 517635: c7 00 57 01 00 00 movl $0x157,(%rax) : n->jointype = JOIN_INNER; 0.00 : 51763b: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : $$ = n; : } : | table_ref JOIN table_ref join_qual : { : /* letting join_type reduce to empty doesn't work */ : JoinExpr *n = makeNode(JoinExpr); 0.00 : 517642: 48 89 c2 mov %rax,%rdx : n->jointype = JOIN_INNER; : n->isNatural = FALSE; 0.00 : 517645: c6 40 08 00 movb $0x0,0x8(%rax) : n->larg = $1; 0.00 : 517649: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517650: 48 8b 43 e8 mov -0x18(%rbx),%rax 0.00 : 517654: 48 89 42 10 mov %rax,0x10(%rdx) : n->rarg = $3; 0.00 : 517658: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 51765c: 48 89 42 18 mov %rax,0x18(%rdx) : if ($4 != NULL && IsA($4, List)) 0.00 : 517660: 48 8b 03 mov (%rbx),%rax 0.00 : 517663: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51766a: 48 85 c0 test %rax,%rax 0.00 : 51766d: 74 0c je 51767b 0.00 : 51766f: 81 38 90 02 00 00 cmpl $0x290,(%rax) 0.00 : 517675: 0f 84 e0 1d 01 00 je 52945b : n->usingClause = (List *) $4; /* USING clause */ : else : n->quals = $4; /* ON clause */ 0.00 : 51767b: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = n; 0.00 : 51767f: 49 89 d6 mov %rdx,%r14 : } : | table_ref NATURAL join_type JOIN table_ref 0.00 : 517682: e9 f9 a2 ff ff jmpq 511980 : ; : : for_locking_strength: : FOR UPDATE { $$ = LCS_FORUPDATE; } : | FOR NO KEY UPDATE { $$ = LCS_FORNOKEYUPDATE; } : | FOR SHARE { $$ = LCS_FORSHARE; } 0.00 : 517687: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51768e: ff ff ff 0.00 : 517691: 49 21 d6 and %rdx,%r14 0.00 : 517694: 49 83 ce 01 or $0x1,%r14 : | FOR KEY SHARE { $$ = LCS_FORKEYSHARE; } 0.00 : 517698: e9 e3 a2 ff ff jmpq 511980 : } : ; : : for_locking_strength: : FOR UPDATE { $$ = LCS_FORUPDATE; } : | FOR NO KEY UPDATE { $$ = LCS_FORNOKEYUPDATE; } 0.00 : 51769d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5176a4: ff ff ff 0.00 : 5176a7: 49 21 c6 and %rax,%r14 0.00 : 5176aa: 49 83 ce 02 or $0x2,%r14 : | FOR SHARE { $$ = LCS_FORSHARE; } 0.00 : 5176ae: e9 cd a2 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : for_locking_strength: : FOR UPDATE { $$ = LCS_FORUPDATE; } 0.00 : 5176b3: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5176ba: ff ff ff 0.00 : 5176bd: 49 21 f6 and %rsi,%r14 0.00 : 5176c0: 49 83 ce 03 or $0x3,%r14 : | FOR NO KEY UPDATE { $$ = LCS_FORNOKEYUPDATE; } 0.00 : 5176c4: e9 b7 a2 ff ff jmpq 511980 : ; : : for_locking_item: : for_locking_strength locked_rels_list opt_nowait_or_skip : { : LockingClause *n = makeNode(LockingClause); 0.00 : 5176c9: 48 8b 3d 90 31 6a 00 mov 0x6a3190(%rip),%rdi # bba860 0.00 : 5176d0: be 18 00 00 00 mov $0x18,%esi 0.00 : 5176d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5176dc: e8 2f 17 28 00 callq 798e10 0.00 : 5176e1: c7 00 a5 03 00 00 movl $0x3a5,(%rax) : n->lockedRels = $2; 0.00 : 5176e7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->strength = $1; : n->waitPolicy = $3; : $$ = (Node *) n; 0.00 : 5176ee: 49 89 c6 mov %rax,%r14 : : for_locking_item: : for_locking_strength locked_rels_list opt_nowait_or_skip : { : LockingClause *n = makeNode(LockingClause); : n->lockedRels = $2; 0.00 : 5176f1: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5176f5: 48 89 50 08 mov %rdx,0x8(%rax) : n->strength = $1; 0.00 : 5176f9: 8b 53 f0 mov -0x10(%rbx),%edx 0.00 : 5176fc: 89 50 10 mov %edx,0x10(%rax) : n->waitPolicy = $3; 0.00 : 5176ff: 8b 13 mov (%rbx),%edx 0.00 : 517701: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *) n; : } : ; 0.00 : 517704: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51770b: e9 70 a2 ff ff jmpq 511980 : | /* EMPTY */ { $$ = NIL; } : ; : : for_locking_items: : for_locking_item { $$ = list_make1($1); } : | for_locking_items for_locking_item { $$ = lappend($1, $2); } 0.00 : 517710: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517717: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 51771b: 48 8b 31 mov (%rcx),%rsi 0.00 : 51771e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517725: e8 56 a7 0c 00 callq 5e1e80 : ; 0.00 : 51772a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /* EMPTY */ { $$ = NIL; } : ; : : for_locking_items: : for_locking_item { $$ = list_make1($1); } : | for_locking_items for_locking_item { $$ = lappend($1, $2); } 0.00 : 517731: 49 89 c6 mov %rax,%r14 : ; 0.00 : 517734: e9 47 a2 ff ff jmpq 511980 : for_locking_clause { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : for_locking_items: : for_locking_item { $$ = list_make1($1); } 0.00 : 517739: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517740: 31 f6 xor %esi,%esi 0.00 : 517742: 48 8b 3a mov (%rdx),%rdi 0.00 : 517745: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51774c: e8 ff a0 0c 00 callq 5e1850 : | for_locking_items for_locking_item { $$ = lappend($1, $2); } 0.00 : 517751: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : for_locking_clause { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : for_locking_items: : for_locking_item { $$ = list_make1($1); } 0.00 : 517758: 49 89 c6 mov %rax,%r14 : | for_locking_items for_locking_item { $$ = lappend($1, $2); } 0.00 : 51775b: e9 20 a2 ff ff jmpq 511980 : | FOR READ ONLY { $$ = NIL; } : ; : : opt_for_locking_clause: : for_locking_clause { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 517760: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517763: e9 18 a2 ff ff jmpq 511980 : for_locking_items { $$ = $1; } : | FOR READ ONLY { $$ = NIL; } : ; : : opt_for_locking_clause: : for_locking_clause { $$ = $1; } 0.00 : 517768: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51776f: 4c 8b 30 mov (%rax),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 517772: e9 09 a2 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : for_locking_clause: : for_locking_items { $$ = $1; } : | FOR READ ONLY { $$ = NIL; } 0.00 : 517777: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51777a: e9 01 a2 ff ff jmpq 511980 : HAVING a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } : ; : : for_locking_clause: : for_locking_items { $$ = $1; } 0.00 : 51777f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517786: 4c 8b 36 mov (%rsi),%r14 : | FOR READ ONLY { $$ = NIL; } 0.00 : 517789: e9 f2 a1 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : having_clause: : HAVING a_expr { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51778e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517791: e9 ea a1 ff ff jmpq 511980 : GROUP_P BY expr_list { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } : ; : : having_clause: : HAVING a_expr { $$ = $2; } 0.00 : 517796: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51779d: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5177a0: e9 db a1 ff ff jmpq 511980 : ; : : : group_clause: : GROUP_P BY expr_list { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5177a5: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5177a8: e9 d3 a1 ff ff jmpq 511980 : | NEXT { $$ = 0; } : ; : : : group_clause: : GROUP_P BY expr_list { $$ = $3; } 0.00 : 5177ad: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5177b4: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5177b7: e9 c4 a1 ff ff jmpq 511980 : row_or_rows: ROW { $$ = 0; } : | ROWS { $$ = 0; } : ; : : first_or_next: FIRST_P { $$ = 0; } : | NEXT { $$ = 0; } 0.00 : 5177bc: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5177c3: ff ff ff 0.00 : 5177c6: 49 21 d6 and %rdx,%r14 : ; 0.00 : 5177c9: e9 b2 a1 ff ff jmpq 511980 : /* noise words */ : row_or_rows: ROW { $$ = 0; } : | ROWS { $$ = 0; } : ; : : first_or_next: FIRST_P { $$ = 0; } 0.00 : 5177ce: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5177d5: ff ff ff 0.00 : 5177d8: 49 21 c6 and %rax,%r14 : | NEXT { $$ = 0; } 0.00 : 5177db: e9 a0 a1 ff ff jmpq 511980 : c_expr { $$ = $1; } : ; : : /* noise words */ : row_or_rows: ROW { $$ = 0; } : | ROWS { $$ = 0; } 0.00 : 5177e0: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5177e7: ff ff ff 0.00 : 5177ea: 49 21 f6 and %rsi,%r14 : ; 0.00 : 5177ed: e9 8e a1 ff ff jmpq 511980 : select_offset_value2: : c_expr { $$ = $1; } : ; : : /* noise words */ : row_or_rows: ROW { $$ = 0; } 0.00 : 5177f2: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5177f9: ff ff ff 0.00 : 5177fc: 49 21 de and %rbx,%r14 : | ROWS { $$ = 0; } 0.00 : 5177ff: e9 7c a1 ff ff jmpq 511980 : /* : * Again, the trailing ROW/ROWS in this case prevent the full expression : * syntax. c_expr is the best we can do. : */ : select_offset_value2: : c_expr { $$ = $1; } 0.00 : 517804: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51780b: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 51780e: e9 6d a1 ff ff jmpq 511980 : * default to 1. : */ : opt_select_fetch_first_value: : SignedIconst { $$ = makeIntConst($1, @1); } : | '(' a_expr ')' { $$ = $2; } : | /*EMPTY*/ { $$ = makeIntConst(1, -1); } 0.00 : 517813: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 517818: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51781d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517824: e8 e7 93 ff ff callq 510c10 : ; 0.00 : 517829: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * default to 1. : */ : opt_select_fetch_first_value: : SignedIconst { $$ = makeIntConst($1, @1); } : | '(' a_expr ')' { $$ = $2; } : | /*EMPTY*/ { $$ = makeIntConst(1, -1); } 0.00 : 517830: 49 89 c6 mov %rax,%r14 : ; 0.00 : 517833: e9 48 a1 ff ff jmpq 511980 : * constants, so we allow the rest only with parentheses. If omitted, : * default to 1. : */ : opt_select_fetch_first_value: : SignedIconst { $$ = makeIntConst($1, @1); } : | '(' a_expr ')' { $$ = $2; } 0.00 : 517838: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51783f: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : | /*EMPTY*/ { $$ = makeIntConst(1, -1); } 0.00 : 517843: e9 38 a1 ff ff jmpq 511980 : * problems with the trailing ROW/ROWS key words. SQL only calls for : * constants, so we allow the rest only with parentheses. If omitted, : * default to 1. : */ : opt_select_fetch_first_value: : SignedIconst { $$ = makeIntConst($1, @1); } 0.00 : 517848: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51784f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517856: 8b 33 mov (%rbx),%esi 0.00 : 517858: 8b 38 mov (%rax),%edi 0.00 : 51785a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517861: e8 aa 93 ff ff callq 510c10 : | '(' a_expr ')' { $$ = $2; } 0.00 : 517866: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * problems with the trailing ROW/ROWS key words. SQL only calls for : * constants, so we allow the rest only with parentheses. If omitted, : * default to 1. : */ : opt_select_fetch_first_value: : SignedIconst { $$ = makeIntConst($1, @1); } 0.00 : 51786d: 49 89 c6 mov %rax,%r14 : | '(' a_expr ')' { $$ = $2; } 0.00 : 517870: e9 0b a1 ff ff jmpq 511980 : $$ = makeNullAConst(@1); : } : ; : : select_offset_value: : a_expr { $$ = $1; } 0.00 : 517875: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51787c: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 51787f: e9 fc a0 ff ff jmpq 511980 : select_limit_value: : a_expr { $$ = $1; } : | ALL : { : /* LIMIT ALL is represented as a NULL constant */ : $$ = makeNullAConst(@1); 0.00 : 517884: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 51788b: 48 8b 3d ce 2f 6a 00 mov 0x6a2fce(%rip),%rdi # bba860 0.00 : 517892: be 20 00 00 00 mov $0x20,%esi : select_limit_value: : a_expr { $$ = $1; } : | ALL : { : /* LIMIT ALL is represented as a NULL constant */ : $$ = makeNullAConst(@1); 0.00 : 517897: 8b 1a mov (%rdx),%ebx : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 517899: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5178a0: e8 6b 15 28 00 callq 798e10 0.00 : 5178a5: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Null; 0.00 : 5178ab: c7 40 08 8f 02 00 00 movl $0x28f,0x8(%rax) : select_limit_value: : a_expr { $$ = $1; } : | ALL : { : /* LIMIT ALL is represented as a NULL constant */ : $$ = makeNullAConst(@1); 0.00 : 5178b2: 49 89 c6 mov %rax,%r14 : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_Null; : n->location = location; 0.00 : 5178b5: 89 58 18 mov %ebx,0x18(%rax) : | ALL : { : /* LIMIT ALL is represented as a NULL constant */ : $$ = makeNullAConst(@1); : } : ; 0.00 : 5178b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5178bf: e9 bc a0 ff ff jmpq 511980 : | OFFSET select_offset_value2 row_or_rows : { $$ = $2; } : ; : : select_limit_value: : a_expr { $$ = $1; } 0.00 : 5178c4: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5178cb: 4c 8b 30 mov (%rax),%r14 : | ALL 0.00 : 5178ce: e9 ad a0 ff ff jmpq 511980 : offset_clause: : OFFSET select_offset_value : { $$ = $2; } : /* SQL:2008 syntax */ : | OFFSET select_offset_value2 row_or_rows : { $$ = $2; } 0.00 : 5178d3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5178da: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : ; 0.00 : 5178de: e9 9d a0 ff ff jmpq 511980 : { $$ = $3; } : ; : : offset_clause: : OFFSET select_offset_value : { $$ = $2; } 0.00 : 5178e3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5178ea: 4c 8b 33 mov (%rbx),%r14 : /* SQL:2008 syntax */ 0.00 : 5178ed: e9 8e a0 ff ff jmpq 511980 : errhint("Use separate LIMIT and OFFSET clauses."), : parser_errposition(@1))); : } : /* SQL:2008 syntax */ : | FETCH first_or_next opt_select_fetch_first_value row_or_rows ONLY : { $$ = $3; } 0.00 : 5178f2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5178f9: 4c 8b 71 f0 mov -0x10(%rcx),%r14 : ; 0.00 : 5178fd: e9 7e a0 ff ff jmpq 511980 : LIMIT select_limit_value : { $$ = $2; } : | LIMIT select_limit_value ',' select_offset_value : { : /* Disabled because it was too confusing, bjm 2002-02-18 */ : ereport(ERROR, 0.00 : 517902: 45 31 c0 xor %r8d,%r8d 0.00 : 517905: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 51790a: ba d1 26 00 00 mov $0x26d1,%edx 0.00 : 51790f: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 517914: bf 14 00 00 00 mov $0x14,%edi 0.00 : 517919: e8 a2 31 26 00 callq 77aac0 0.00 : 51791e: 84 c0 test %al,%al 0.00 : 517920: 0f 84 81 a6 ff ff je 511fa7 0.00 : 517926: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51792d: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 517934: 8b 7a f4 mov -0xc(%rdx),%edi 0.00 : 517937: e8 64 63 ff ff callq 50dca0 0.00 : 51793c: bf 30 a2 7c 00 mov $0x7ca230,%edi 0.00 : 517941: 41 89 c5 mov %eax,%r13d 0.00 : 517944: 31 c0 xor %eax,%eax 0.00 : 517946: e8 55 43 26 00 callq 77bca0 0.00 : 51794b: bf 58 a2 7c 00 mov $0x7ca258,%edi 0.00 : 517950: 89 c3 mov %eax,%ebx 0.00 : 517952: e9 b9 5b 00 00 jmpq 51d510 : | /* EMPTY */ { $$ = list_make2(NULL,NULL); } : ; : : limit_clause: : LIMIT select_limit_value : { $$ = $2; } 0.00 : 517957: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51795e: 4c 8b 30 mov (%rax),%r14 : | LIMIT select_limit_value ',' select_offset_value 0.00 : 517961: e9 1a a0 ff ff jmpq 511980 : | offset_clause { $$ = list_make2($1, NULL); } : ; : : opt_select_limit: : select_limit { $$ = $1; } : | /* EMPTY */ { $$ = list_make2(NULL,NULL); } 0.00 : 517966: 31 f6 xor %esi,%esi 0.00 : 517968: 31 ff xor %edi,%edi 0.00 : 51796a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517971: e8 da 9e 0c 00 callq 5e1850 0.00 : 517976: 31 ff xor %edi,%edi 0.00 : 517978: 48 89 c6 mov %rax,%rsi 0.00 : 51797b: e8 d0 9e 0c 00 callq 5e1850 : ; 0.00 : 517980: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | offset_clause { $$ = list_make2($1, NULL); } : ; : : opt_select_limit: : select_limit { $$ = $1; } : | /* EMPTY */ { $$ = list_make2(NULL,NULL); } 0.00 : 517987: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51798a: e9 f1 9f ff ff jmpq 511980 : | limit_clause { $$ = list_make2(NULL, $1); } : | offset_clause { $$ = list_make2($1, NULL); } : ; : : opt_select_limit: : select_limit { $$ = $1; } 0.00 : 51798f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517996: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = list_make2(NULL,NULL); } 0.00 : 517999: e9 e2 9f ff ff jmpq 511980 : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } : | limit_clause { $$ = list_make2(NULL, $1); } : | offset_clause { $$ = list_make2($1, NULL); } 0.00 : 51799e: 31 f6 xor %esi,%esi 0.00 : 5179a0: 31 ff xor %edi,%edi 0.00 : 5179a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5179a9: e8 a2 9e 0c 00 callq 5e1850 0.00 : 5179ae: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5179b5: 48 89 c6 mov %rax,%rsi 0.00 : 5179b8: 48 8b 3b mov (%rbx),%rdi 0.00 : 5179bb: e8 90 9e 0c 00 callq 5e1850 : ; 0.00 : 5179c0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } : | limit_clause { $$ = list_make2(NULL, $1); } : | offset_clause { $$ = list_make2($1, NULL); } 0.00 : 5179c7: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5179ca: e9 b1 9f ff ff jmpq 511980 : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } : | limit_clause { $$ = list_make2(NULL, $1); } 0.00 : 5179cf: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5179d6: 31 f6 xor %esi,%esi 0.00 : 5179d8: 48 8b 39 mov (%rcx),%rdi 0.00 : 5179db: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5179e2: e8 69 9e 0c 00 callq 5e1850 0.00 : 5179e7: 31 ff xor %edi,%edi 0.00 : 5179e9: 48 89 c6 mov %rax,%rsi 0.00 : 5179ec: e8 5f 9e 0c 00 callq 5e1850 : | offset_clause { $$ = list_make2($1, NULL); } 0.00 : 5179f1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } : | limit_clause { $$ = list_make2(NULL, $1); } 0.00 : 5179f8: 49 89 c6 mov %rax,%r14 : | offset_clause { $$ = list_make2($1, NULL); } 0.00 : 5179fb: e9 80 9f ff ff jmpq 511980 : ; : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } 0.00 : 517a00: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517a07: 31 f6 xor %esi,%esi 0.00 : 517a09: 48 8b 38 mov (%rax),%rdi 0.00 : 517a0c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517a13: e8 38 9e 0c 00 callq 5e1850 0.00 : 517a18: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517a1f: 48 89 c6 mov %rax,%rsi 0.00 : 517a22: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 517a26: e8 25 9e 0c 00 callq 5e1850 : | limit_clause { $$ = list_make2(NULL, $1); } 0.00 : 517a2b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } : | offset_clause limit_clause { $$ = list_make2($1, $2); } 0.00 : 517a32: 49 89 c6 mov %rax,%r14 : | limit_clause { $$ = list_make2(NULL, $1); } 0.00 : 517a35: e9 46 9f ff ff jmpq 511980 : } : ; : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } 0.00 : 517a3a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517a41: 31 f6 xor %esi,%esi 0.00 : 517a43: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 517a47: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517a4e: e8 fd 9d 0c 00 callq 5e1850 0.00 : 517a53: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517a5a: 48 89 c6 mov %rax,%rsi 0.00 : 517a5d: 48 8b 3b mov (%rbx),%rdi 0.00 : 517a60: e8 eb 9d 0c 00 callq 5e1850 : | offset_clause limit_clause { $$ = list_make2($1, $2); } 0.00 : 517a65: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : : select_limit: : limit_clause offset_clause { $$ = list_make2($2, $1); } 0.00 : 517a6c: 49 89 c6 mov %rax,%r14 : | offset_clause limit_clause { $$ = list_make2($1, $2); } 0.00 : 517a6f: e9 0c 9f ff ff jmpq 511980 : $$->useOp = $3; : $$->location = @3; : } : | a_expr opt_asc_desc opt_nulls_order : { : $$ = makeNode(SortBy); 0.00 : 517a74: 48 8b 3d e5 2d 6a 00 mov 0x6a2de5(%rip),%rdi # bba860 0.00 : 517a7b: be 28 00 00 00 mov $0x28,%esi 0.00 : 517a80: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517a87: e8 84 13 28 00 callq 798e10 0.00 : 517a8c: c7 00 91 03 00 00 movl $0x391,(%rax) : $$->node = $1; 0.00 : 517a92: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$->useOp = $3; : $$->location = @3; : } : | a_expr opt_asc_desc opt_nulls_order : { : $$ = makeNode(SortBy); 0.00 : 517a99: 49 89 c6 mov %rax,%r14 : $$->node = $1; 0.00 : 517a9c: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 517aa0: 49 89 46 08 mov %rax,0x8(%r14) : $$->sortby_dir = $2; 0.00 : 517aa4: 8b 42 f8 mov -0x8(%rdx),%eax 0.00 : 517aa7: 41 89 46 10 mov %eax,0x10(%r14) : $$->sortby_nulls = $3; 0.00 : 517aab: 8b 02 mov (%rdx),%eax : $$->useOp = NIL; 0.00 : 517aad: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 517ab4: 00 : $$->location = -1; /* no operator */ 0.00 : 517ab5: 41 c7 46 20 ff ff ff movl $0xffffffff,0x20(%r14) 0.00 : 517abc: ff : | a_expr opt_asc_desc opt_nulls_order : { : $$ = makeNode(SortBy); : $$->node = $1; : $$->sortby_dir = $2; : $$->sortby_nulls = $3; 0.00 : 517abd: 41 89 46 14 mov %eax,0x14(%r14) : $$->useOp = NIL; : $$->location = -1; /* no operator */ : } : ; 0.00 : 517ac1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517ac8: e9 b3 9e ff ff jmpq 511980 : | sortby_list ',' sortby { $$ = lappend($1, $3); } : ; : : sortby: a_expr USING qual_all_Op opt_nulls_order : { : $$ = makeNode(SortBy); 0.00 : 517acd: 48 8b 3d 8c 2d 6a 00 mov 0x6a2d8c(%rip),%rdi # bba860 0.00 : 517ad4: be 28 00 00 00 mov $0x28,%esi 0.00 : 517ad9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517ae0: e8 2b 13 28 00 callq 798e10 0.00 : 517ae5: c7 00 91 03 00 00 movl $0x391,(%rax) : $$->node = $1; 0.00 : 517aeb: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : | sortby_list ',' sortby { $$ = lappend($1, $3); } : ; : : sortby: a_expr USING qual_all_Op opt_nulls_order : { : $$ = makeNode(SortBy); 0.00 : 517af2: 49 89 c6 mov %rax,%r14 : $$->node = $1; 0.00 : 517af5: 48 8b 43 e8 mov -0x18(%rbx),%rax : $$->sortby_dir = SORTBY_USING; 0.00 : 517af9: 41 c7 46 10 03 00 00 movl $0x3,0x10(%r14) 0.00 : 517b00: 00 : ; : : sortby: a_expr USING qual_all_Op opt_nulls_order : { : $$ = makeNode(SortBy); : $$->node = $1; 0.00 : 517b01: 49 89 46 08 mov %rax,0x8(%r14) : $$->sortby_dir = SORTBY_USING; : $$->sortby_nulls = $4; 0.00 : 517b05: 8b 03 mov (%rbx),%eax 0.00 : 517b07: 41 89 46 14 mov %eax,0x14(%r14) : $$->useOp = $3; 0.00 : 517b0b: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 517b0f: 49 89 46 18 mov %rax,0x18(%r14) : $$->location = @3; 0.00 : 517b13: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 517b1a: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 517b1d: 41 89 46 20 mov %eax,0x20(%r14) : } : | a_expr opt_asc_desc opt_nulls_order 0.00 : 517b21: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517b28: e9 53 9e ff ff jmpq 511980 : ORDER BY sortby_list { $$ = $3; } : ; : : sortby_list: : sortby { $$ = list_make1($1); } : | sortby_list ',' sortby { $$ = lappend($1, $3); } 0.00 : 517b2d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517b34: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 517b38: 48 8b 31 mov (%rcx),%rsi 0.00 : 517b3b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517b42: e8 39 a3 0c 00 callq 5e1e80 : ; 0.00 : 517b47: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ORDER BY sortby_list { $$ = $3; } : ; : : sortby_list: : sortby { $$ = list_make1($1); } : | sortby_list ',' sortby { $$ = lappend($1, $3); } 0.00 : 517b4e: 49 89 c6 mov %rax,%r14 : ; 0.00 : 517b51: e9 2a 9e ff ff jmpq 511980 : sort_clause: : ORDER BY sortby_list { $$ = $3; } : ; : : sortby_list: : sortby { $$ = list_make1($1); } 0.00 : 517b56: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517b5d: 31 f6 xor %esi,%esi 0.00 : 517b5f: 48 8b 3a mov (%rdx),%rdi 0.00 : 517b62: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517b69: e8 e2 9c 0c 00 callq 5e1850 : | sortby_list ',' sortby { $$ = lappend($1, $3); } 0.00 : 517b6e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : sort_clause: : ORDER BY sortby_list { $$ = $3; } : ; : : sortby_list: : sortby { $$ = list_make1($1); } 0.00 : 517b75: 49 89 c6 mov %rax,%r14 : | sortby_list ',' sortby { $$ = lappend($1, $3); } 0.00 : 517b78: e9 03 9e ff ff jmpq 511980 : sort_clause { $$ = $1;} : | /*EMPTY*/ { $$ = NIL; } : ; : : sort_clause: : ORDER BY sortby_list { $$ = $3; } 0.00 : 517b7d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517b84: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 517b87: e9 f4 9d ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_sort_clause: : sort_clause { $$ = $1;} : | /*EMPTY*/ { $$ = NIL; } 0.00 : 517b8c: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517b8f: e9 ec 9d ff ff jmpq 511980 : | ALL { $$ = NIL; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_sort_clause: : sort_clause { $$ = $1;} 0.00 : 517b94: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517b9b: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 517b9e: e9 dd 9d ff ff jmpq 511980 : */ : opt_distinct: : DISTINCT { $$ = list_make1(NIL); } : | DISTINCT ON '(' expr_list ')' { $$ = $4; } : | ALL { $$ = NIL; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 517ba3: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517ba6: e9 d5 9d ff ff jmpq 511980 : * should be placed in the DISTINCT list during parsetree analysis. : */ : opt_distinct: : DISTINCT { $$ = list_make1(NIL); } : | DISTINCT ON '(' expr_list ')' { $$ = $4; } : | ALL { $$ = NIL; } 0.00 : 517bab: 45 31 f6 xor %r14d,%r14d : | /*EMPTY*/ { $$ = NIL; } 0.00 : 517bae: e9 cd 9d ff ff jmpq 511980 : /* We use (NIL) as a placeholder to indicate that all target expressions : * should be placed in the DISTINCT list during parsetree analysis. : */ : opt_distinct: : DISTINCT { $$ = list_make1(NIL); } : | DISTINCT ON '(' expr_list ')' { $$ = $4; } 0.00 : 517bb3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517bba: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | ALL { $$ = NIL; } 0.00 : 517bbe: e9 bd 9d ff ff jmpq 511980 : : /* We use (NIL) as a placeholder to indicate that all target expressions : * should be placed in the DISTINCT list during parsetree analysis. : */ : opt_distinct: : DISTINCT { $$ = list_make1(NIL); } 0.00 : 517bc3: 31 f6 xor %esi,%esi 0.00 : 517bc5: 31 ff xor %edi,%edi 0.00 : 517bc7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517bce: e8 7d 9c 0c 00 callq 5e1850 : | DISTINCT ON '(' expr_list ')' { $$ = $4; } 0.00 : 517bd3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* We use (NIL) as a placeholder to indicate that all target expressions : * should be placed in the DISTINCT list during parsetree analysis. : */ : opt_distinct: : DISTINCT { $$ = list_make1(NIL); } 0.00 : 517bda: 49 89 c6 mov %rax,%r14 : | DISTINCT ON '(' expr_list ')' { $$ = $4; } 0.00 : 517bdd: e9 9e 9d ff ff jmpq 511980 : | /*EMPTY*/ {} : ; : : opt_all: ALL { $$ = TRUE; } : | DISTINCT { $$ = FALSE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 517be2: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 517be5: e9 96 9d ff ff jmpq 511980 : opt_table: TABLE {} : | /*EMPTY*/ {} : ; : : opt_all: ALL { $$ = TRUE; } : | DISTINCT { $$ = FALSE; } 0.00 : 517bea: 45 30 f6 xor %r14b,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 517bed: e9 8e 9d ff ff jmpq 511980 : : opt_table: TABLE {} : | /*EMPTY*/ {} : ; : : opt_all: ALL { $$ = TRUE; } 0.00 : 517bf2: 41 b6 01 mov $0x1,%r14b : | DISTINCT { $$ = FALSE; } 0.00 : 517bf5: e9 86 9d ff ff jmpq 511980 : { : $$ = makeBoolAConst(FALSE, @1); : } : | NULL_P : { : $$ = makeNullAConst(@1); 0.00 : 517bfa: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 517c01: 48 8b 3d 58 2c 6a 00 mov 0x6a2c58(%rip),%rdi # bba860 : { : $$ = makeBoolAConst(FALSE, @1); : } : | NULL_P : { : $$ = makeNullAConst(@1); 0.00 : 517c08: 8b 1e mov (%rsi),%ebx : } : : static Node * : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); 0.00 : 517c0a: be 20 00 00 00 mov $0x20,%esi 0.00 : 517c0f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517c16: e8 f5 11 28 00 callq 798e10 0.00 : 517c1b: c7 00 87 03 00 00 movl $0x387,(%rax) : : n->val.type = T_Null; 0.00 : 517c21: c7 40 08 8f 02 00 00 movl $0x28f,0x8(%rax) : { : $$ = makeBoolAConst(FALSE, @1); : } : | NULL_P : { : $$ = makeNullAConst(@1); 0.00 : 517c28: 49 89 c6 mov %rax,%r14 : makeNullAConst(int location) : { : A_Const *n = makeNode(A_Const); : : n->val.type = T_Null; : n->location = location; 0.00 : 517c2b: 89 58 18 mov %ebx,0x18(%rax) : } : | NULL_P : { : $$ = makeNullAConst(@1); : } : ; 0.00 : 517c2e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517c35: e9 46 9d ff ff jmpq 511980 : : Iconst: ICONST { $$ = $1; }; 0.00 : 517c3a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517c41: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 517c48: ff ff ff 0.00 : 517c4b: 49 21 ce and %rcx,%r14 0.00 : 517c4e: 8b 02 mov (%rdx),%eax 0.00 : 517c50: 49 09 c6 or %rax,%r14 : Sconst: SCONST { $$ = $1; }; 0.00 : 517c53: e9 28 9d ff ff jmpq 511980 : $$ = $2; : $$->relpersistence = RELPERSISTENCE_PERMANENT; : } : | qualified_name : { : $$ = $1; 0.00 : 517c58: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517c5f: 4c 8b 31 mov (%rcx),%r14 : $$->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 517c62: 41 c6 46 24 70 movb $0x70,0x24(%r14) : } : ; 0.00 : 517c67: e9 14 9d ff ff jmpq 511980 : $$ = $3; : $$->relpersistence = RELPERSISTENCE_UNLOGGED; : } : | TABLE qualified_name : { : $$ = $2; 0.00 : 517c6c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517c73: 4c 8b 32 mov (%rdx),%r14 : $$->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 517c76: 41 c6 46 24 70 movb $0x70,0x24(%r14) : } : | qualified_name 0.00 : 517c7b: e9 00 9d ff ff jmpq 511980 : $$ = $4; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | UNLOGGED opt_table qualified_name : { : $$ = $3; 0.00 : 517c80: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517c87: 4c 8b 30 mov (%rax),%r14 : $$->relpersistence = RELPERSISTENCE_UNLOGGED; 0.00 : 517c8a: 41 c6 46 24 75 movb $0x75,0x24(%r14) : } : | TABLE qualified_name 0.00 : 517c8f: e9 ec 9c ff ff jmpq 511980 : $$ = $4; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | GLOBAL TEMP opt_table qualified_name : { : ereport(WARNING, 0.00 : 517c94: 45 31 c0 xor %r8d,%r8d 0.00 : 517c97: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 517c9c: ba 70 26 00 00 mov $0x2670,%edx 0.00 : 517ca1: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 517ca6: bf 13 00 00 00 mov $0x13,%edi 0.00 : 517cab: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517cb2: e8 09 2e 26 00 callq 77aac0 0.00 : 517cb7: 84 c0 test %al,%al 0.00 : 517cb9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517cc0: 74 36 je 517cf8 0.00 : 517cc2: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 517cc9: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 517cd0: 8b 7b f4 mov -0xc(%rbx),%edi 0.00 : 517cd3: e8 c8 5f ff ff callq 50dca0 0.00 : 517cd8: bf 58 9f 7c 00 mov $0x7c9f58,%edi 0.00 : 517cdd: 89 c3 mov %eax,%ebx 0.00 : 517cdf: 31 c0 xor %eax,%eax 0.00 : 517ce1: e8 ba 4b 26 00 callq 77c8a0 0.00 : 517ce6: 89 de mov %ebx,%esi 0.00 : 517ce8: 89 c7 mov %eax,%edi 0.00 : 517cea: 31 c0 xor %eax,%eax 0.00 : 517cec: e8 ef 28 26 00 callq 77a5e0 0.00 : 517cf1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = $4; 0.00 : 517cf8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517cff: 4c 8b 36 mov (%rsi),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517d02: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | UNLOGGED opt_table qualified_name 0.00 : 517d07: e9 74 9c ff ff jmpq 511980 : $$ = $4; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | GLOBAL TEMPORARY opt_table qualified_name : { : ereport(WARNING, 0.00 : 517d0c: 45 31 c0 xor %r8d,%r8d 0.00 : 517d0f: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 517d14: ba 68 26 00 00 mov $0x2668,%edx 0.00 : 517d19: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 517d1e: bf 13 00 00 00 mov $0x13,%edi 0.00 : 517d23: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517d2a: e8 91 2d 26 00 callq 77aac0 0.00 : 517d2f: 84 c0 test %al,%al 0.00 : 517d31: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517d38: 74 36 je 517d70 0.00 : 517d3a: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 517d41: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 517d48: 8b 7a f4 mov -0xc(%rdx),%edi 0.00 : 517d4b: e8 50 5f ff ff callq 50dca0 0.00 : 517d50: bf 58 9f 7c 00 mov $0x7c9f58,%edi 0.00 : 517d55: 89 c3 mov %eax,%ebx 0.00 : 517d57: 31 c0 xor %eax,%eax 0.00 : 517d59: e8 42 4b 26 00 callq 77c8a0 0.00 : 517d5e: 89 de mov %ebx,%esi 0.00 : 517d60: 89 c7 mov %eax,%edi 0.00 : 517d62: 31 c0 xor %eax,%eax 0.00 : 517d64: e8 77 28 26 00 callq 77a5e0 0.00 : 517d69: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = $4; 0.00 : 517d70: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517d77: 4c 8b 31 mov (%rcx),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517d7a: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | GLOBAL TEMP opt_table qualified_name 0.00 : 517d7f: e9 fc 9b ff ff jmpq 511980 : $$ = $4; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | LOCAL TEMP opt_table qualified_name : { : $$ = $4; 0.00 : 517d84: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517d8b: 4c 8b 30 mov (%rax),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517d8e: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | GLOBAL TEMPORARY opt_table qualified_name 0.00 : 517d93: e9 e8 9b ff ff jmpq 511980 : $$ = $3; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | LOCAL TEMPORARY opt_table qualified_name : { : $$ = $4; 0.00 : 517d98: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517d9f: 4c 8b 36 mov (%rsi),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517da2: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | LOCAL TEMP opt_table qualified_name 0.00 : 517da7: e9 d4 9b ff ff jmpq 511980 : $$ = $3; : $$->relpersistence = RELPERSISTENCE_TEMP; : } : | TEMP opt_table qualified_name : { : $$ = $3; 0.00 : 517dac: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517db3: 4c 8b 33 mov (%rbx),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517db6: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | LOCAL TEMPORARY opt_table qualified_name 0.00 : 517dbb: e9 c0 9b ff ff jmpq 511980 : * since TEMP is not a reserved word. See also OptTemp. : */ : OptTempTableName: : TEMPORARY opt_table qualified_name : { : $$ = $3; 0.00 : 517dc0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517dc7: 4c 8b 31 mov (%rcx),%r14 : $$->relpersistence = RELPERSISTENCE_TEMP; 0.00 : 517dca: 41 c6 46 24 74 movb $0x74,0x24(%r14) : } : | TEMP opt_table qualified_name 0.00 : 517dcf: e9 ac 9b ff ff jmpq 511980 : $$->tableSpaceName = NULL; : $$->viewQuery = NULL; : $$->skipData = false; : } : | /*EMPTY*/ : { $$ = NULL; } 0.00 : 517dd4: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517dd7: e9 a4 9b ff ff jmpq 511980 : ; : : into_clause: : INTO OptTempTableName : { : $$ = makeNode(IntoClause); 0.00 : 517ddc: 48 8b 3d 7d 2a 6a 00 mov 0x6a2a7d(%rip),%rdi # bba860 0.00 : 517de3: be 40 00 00 00 mov $0x40,%esi 0.00 : 517de8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517def: e8 1c 10 28 00 callq 798e10 0.00 : 517df4: c7 00 59 01 00 00 movl $0x159,(%rax) : $$->rel = $2; 0.00 : 517dfa: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : ; : : into_clause: : INTO OptTempTableName : { : $$ = makeNode(IntoClause); 0.00 : 517e01: 49 89 c6 mov %rax,%r14 : $$->rel = $2; 0.00 : 517e04: 48 8b 02 mov (%rdx),%rax : $$->colNames = NIL; 0.00 : 517e07: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 517e0e: 00 : $$->options = NIL; 0.00 : 517e0f: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 517e16: 00 : $$->onCommit = ONCOMMIT_NOOP; 0.00 : 517e17: 41 c7 46 20 00 00 00 movl $0x0,0x20(%r14) 0.00 : 517e1e: 00 : $$->tableSpaceName = NULL; 0.00 : 517e1f: 49 c7 46 28 00 00 00 movq $0x0,0x28(%r14) 0.00 : 517e26: 00 : $$->viewQuery = NULL; 0.00 : 517e27: 49 c7 46 30 00 00 00 movq $0x0,0x30(%r14) 0.00 : 517e2e: 00 : : into_clause: : INTO OptTempTableName : { : $$ = makeNode(IntoClause); : $$->rel = $2; 0.00 : 517e2f: 49 89 46 08 mov %rax,0x8(%r14) : $$->colNames = NIL; : $$->options = NIL; : $$->onCommit = ONCOMMIT_NOOP; : $$->tableSpaceName = NULL; : $$->viewQuery = NULL; : $$->skipData = false; 0.00 : 517e33: 41 c6 46 38 00 movb $0x0,0x38(%r14) : } : | /*EMPTY*/ 0.00 : 517e38: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517e3f: e9 3c 9b ff ff jmpq 511980 : } : ; : : opt_with_clause: : with_clause { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 517e44: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 517e47: e9 34 9b ff ff jmpq 511980 : { : $$ = (Node *) $1; : } : | '(' joined_table ')' alias_clause : { : $2->alias = $4; 0.00 : 517e4c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517e53: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 517e57: 48 8b 01 mov (%rcx),%rax 0.00 : 517e5a: 48 89 42 30 mov %rax,0x30(%rdx) : $$ = (Node *) $2; 0.00 : 517e5e: 4c 8b 71 f0 mov -0x10(%rcx),%r14 : } : ; 0.00 : 517e62: e9 19 9b ff ff jmpq 511980 : } : $$ = (Node *) n; : } : | joined_table : { : $$ = (Node *) $1; 0.00 : 517e67: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517e6e: 4c 8b 30 mov (%rax),%r14 : } : | '(' joined_table ')' alias_clause 0.00 : 517e71: e9 0a 9b ff ff jmpq 511980 : } : $$ = (Node *) n; : } : | LATERAL_P select_with_parens opt_alias_clause : { : RangeSubselect *n = makeNode(RangeSubselect); 0.00 : 517e76: 48 8b 3d e3 29 6a 00 mov 0x6a29e3(%rip),%rdi # bba860 0.00 : 517e7d: be 18 00 00 00 mov $0x18,%esi 0.00 : 517e82: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517e89: e8 82 0f 28 00 callq 798e10 0.00 : 517e8e: c7 00 93 03 00 00 movl $0x393,(%rax) : n->lateral = true; 0.00 : 517e94: c6 40 04 01 movb $0x1,0x4(%rax) : } : $$ = (Node *) n; : } : | LATERAL_P select_with_parens opt_alias_clause : { : RangeSubselect *n = makeNode(RangeSubselect); 0.00 : 517e98: 48 89 c2 mov %rax,%rdx : n->lateral = true; : n->subquery = $2; 0.00 : 517e9b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517ea2: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 517ea6: 48 89 42 08 mov %rax,0x8(%rdx) : n->alias = $3; 0.00 : 517eaa: 48 8b 01 mov (%rcx),%rax 0.00 : 517ead: 48 89 42 10 mov %rax,0x10(%rdx) : /* same coment as above */ : if ($3 == NULL) 0.00 : 517eb1: 48 83 39 00 cmpq $0x0,(%rcx) 0.00 : 517eb5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517ebc: 0f 84 7b 1d 01 00 je 529c3d : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("subquery in FROM must have an alias"), : errhint("For example, FROM (SELECT ...) [AS] foo."), : parser_errposition(@2))); : } : $$ = (Node *) n; 0.00 : 517ec2: 49 89 d6 mov %rdx,%r14 : } : | joined_table 0.00 : 517ec5: e9 b6 9a ff ff jmpq 511980 : n->coldeflist = lsecond($3); : $$ = (Node *) n; : } : | select_with_parens opt_alias_clause : { : RangeSubselect *n = makeNode(RangeSubselect); 0.00 : 517eca: 48 8b 3d 8f 29 6a 00 mov 0x6a298f(%rip),%rdi # bba860 0.00 : 517ed1: be 18 00 00 00 mov $0x18,%esi 0.00 : 517ed6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517edd: e8 2e 0f 28 00 callq 798e10 0.00 : 517ee2: c7 00 93 03 00 00 movl $0x393,(%rax) : n->lateral = false; 0.00 : 517ee8: c6 40 04 00 movb $0x0,0x4(%rax) : n->coldeflist = lsecond($3); : $$ = (Node *) n; : } : | select_with_parens opt_alias_clause : { : RangeSubselect *n = makeNode(RangeSubselect); 0.00 : 517eec: 48 89 c2 mov %rax,%rdx : n->lateral = false; : n->subquery = $1; 0.00 : 517eef: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517ef6: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 517efa: 48 89 42 08 mov %rax,0x8(%rdx) : n->alias = $2; 0.00 : 517efe: 48 8b 01 mov (%rcx),%rax 0.00 : 517f01: 48 89 42 10 mov %rax,0x10(%rdx) : * popular demand, but for now let's just implement : * the spec and see if anyone complains. : * However, it does seem like a good idea to emit : * an error message that's better than "syntax error". : */ : if ($2 == NULL) 0.00 : 517f05: 48 83 39 00 cmpq $0x0,(%rcx) 0.00 : 517f09: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 517f10: 0f 84 93 1d 01 00 je 529ca9 : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("subquery in FROM must have an alias"), : errhint("For example, FROM (SELECT ...) [AS] foo."), : parser_errposition(@1))); : } : $$ = (Node *) n; 0.00 : 517f16: 49 89 d6 mov %rdx,%r14 : } : | LATERAL_P select_with_parens opt_alias_clause 0.00 : 517f19: e9 62 9a ff ff jmpq 511980 : n->coldeflist = lsecond($2); : $$ = (Node *) n; : } : | LATERAL_P func_table func_alias_clause : { : RangeFunction *n = (RangeFunction *) $2; 0.00 : 517f1e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 517f25: 48 8b 48 f8 mov -0x8(%rax),%rcx : n->lateral = true; 0.00 : 517f29: c6 41 04 01 movb $0x1,0x4(%rcx) : n->alias = linitial($3); 0.00 : 517f2d: 48 8b 10 mov (%rax),%rdx 0.00 : 517f30: 31 c0 xor %eax,%eax 0.00 : 517f32: 48 85 d2 test %rdx,%rdx 0.00 : 517f35: 74 04 je 517f3b 0.00 : 517f37: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 517f3b: 48 8b 00 mov (%rax),%rax 0.00 : 517f3e: 48 89 41 10 mov %rax,0x10(%rcx) : n->coldeflist = lsecond($3); 0.00 : 517f42: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 517f49: 48 8b 02 mov (%rdx),%rax 0.00 : 517f4c: 31 d2 xor %edx,%edx 0.00 : 517f4e: 48 85 c0 test %rax,%rax 0.00 : 517f51: 74 04 je 517f57 0.00 : 517f53: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 517f57: 48 8b 42 08 mov 0x8(%rdx),%rax : $$ = (Node *) n; 0.00 : 517f5b: 49 89 ce mov %rcx,%r14 : | LATERAL_P func_table func_alias_clause : { : RangeFunction *n = (RangeFunction *) $2; : n->lateral = true; : n->alias = linitial($3); : n->coldeflist = lsecond($3); 0.00 : 517f5e: 48 8b 00 mov (%rax),%rax 0.00 : 517f61: 48 89 41 18 mov %rax,0x18(%rcx) : $$ = (Node *) n; : } : | select_with_parens opt_alias_clause 0.00 : 517f65: e9 16 9a ff ff jmpq 511980 : /* : * table_ref is where an alias clause can be attached. : */ : table_ref: relation_expr opt_alias_clause : { : $1->alias = $2; 0.00 : 517f6a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 517f71: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 517f75: 48 8b 01 mov (%rcx),%rax 0.00 : 517f78: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = (Node *) $1; 0.00 : 517f7c: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : } : | func_table func_alias_clause 0.00 : 517f80: e9 fb 99 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : from_list: : table_ref { $$ = list_make1($1); } : | from_list ',' table_ref { $$ = lappend($1, $3); } 0.00 : 517f85: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517f8c: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 517f90: 48 8b 36 mov (%rsi),%rsi 0.00 : 517f93: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 517f9a: e8 e1 9e 0c 00 callq 5e1e80 : ; 0.00 : 517f9f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ { $$ = NIL; } : ; : : from_list: : table_ref { $$ = list_make1($1); } : | from_list ',' table_ref { $$ = lappend($1, $3); } 0.00 : 517fa6: 49 89 c6 mov %rax,%r14 : ; 0.00 : 517fa9: e9 d2 99 ff ff jmpq 511980 : $1->alias = $2; : $$ = (Node *) $1; : } : | func_table func_alias_clause : { : RangeFunction *n = (RangeFunction *) $1; 0.00 : 517fae: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517fb5: 31 c0 xor %eax,%eax : n->alias = linitial($2); 0.00 : 517fb7: 48 8b 13 mov (%rbx),%rdx : $1->alias = $2; : $$ = (Node *) $1; : } : | func_table func_alias_clause : { : RangeFunction *n = (RangeFunction *) $1; 0.00 : 517fba: 48 8b 4b f8 mov -0x8(%rbx),%rcx 0.00 : 517fbe: 48 85 d2 test %rdx,%rdx 0.00 : 517fc1: 74 04 je 517fc7 0.00 : 517fc3: 48 8b 42 08 mov 0x8(%rdx),%rax : n->alias = linitial($2); 0.00 : 517fc7: 48 8b 00 mov (%rax),%rax 0.00 : 517fca: 31 d2 xor %edx,%edx 0.00 : 517fcc: 48 89 41 10 mov %rax,0x10(%rcx) : n->coldeflist = lsecond($2); 0.00 : 517fd0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 517fd7: 48 8b 06 mov (%rsi),%rax 0.00 : 517fda: 48 85 c0 test %rax,%rax 0.00 : 517fdd: 74 04 je 517fe3 0.00 : 517fdf: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 517fe3: 48 8b 42 08 mov 0x8(%rdx),%rax : $$ = (Node *) n; 0.00 : 517fe7: 49 89 ce mov %rcx,%r14 : } : | func_table func_alias_clause : { : RangeFunction *n = (RangeFunction *) $1; : n->alias = linitial($2); : n->coldeflist = lsecond($2); 0.00 : 517fea: 48 8b 00 mov (%rax),%rax 0.00 : 517fed: 48 89 41 18 mov %rax,0x18(%rcx) : $$ = (Node *) n; : } : | LATERAL_P func_table func_alias_clause 0.00 : 517ff1: e9 8a 99 ff ff jmpq 511980 : FROM from_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : from_list: : table_ref { $$ = list_make1($1); } 0.00 : 517ff6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 517ffd: 31 f6 xor %esi,%esi 0.00 : 517fff: 48 8b 3b mov (%rbx),%rdi 0.00 : 518002: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518009: e8 42 98 0c 00 callq 5e1850 : | from_list ',' table_ref { $$ = lappend($1, $3); } 0.00 : 51800e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : FROM from_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : from_list: : table_ref { $$ = list_make1($1); } 0.00 : 518015: 49 89 c6 mov %rax,%r14 : | from_list ',' table_ref { $$ = lappend($1, $3); } 0.00 : 518018: e9 63 99 ff ff jmpq 511980 : * : *****************************************************************************/ : : from_clause: : FROM from_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51801d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 518020: e9 5b 99 ff ff jmpq 511980 : * where_clause - qualifications for joins or restrictions : * : *****************************************************************************/ : : from_clause: : FROM from_list { $$ = $2; } 0.00 : 518025: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51802c: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51802f: e9 4c 99 ff ff jmpq 511980 : n->valuesLists = list_make1($2); : $$ = (Node *) n; : } : | values_clause ',' ctext_row : { : SelectStmt *n = (SelectStmt *) $1; 0.00 : 518034: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51803b: 48 8b 5a f0 mov -0x10(%rdx),%rbx : n->valuesLists = lappend(n->valuesLists, $3); 0.00 : 51803f: 48 8b 32 mov (%rdx),%rsi 0.00 : 518042: 48 8b 7b 48 mov 0x48(%rbx),%rdi : $$ = (Node *) n; 0.00 : 518046: 49 89 de mov %rbx,%r14 : $$ = (Node *) n; : } : | values_clause ',' ctext_row : { : SelectStmt *n = (SelectStmt *) $1; : n->valuesLists = lappend(n->valuesLists, $3); 0.00 : 518049: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518050: e8 2b 9e 0c 00 callq 5e1e80 0.00 : 518055: 48 89 43 48 mov %rax,0x48(%rbx) : $$ = (Node *) n; : } : ; 0.00 : 518059: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518060: e9 1b 99 ff ff jmpq 511980 : : : values_clause: : VALUES ctext_row : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518065: 48 8b 3d f4 27 6a 00 mov 0x6a27f4(%rip),%rdi # bba860 0.00 : 51806c: be 90 00 00 00 mov $0x90,%esi 0.00 : 518071: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518078: e8 93 0d 28 00 callq 798e10 0.00 : 51807d: 48 89 c3 mov %rax,%rbx 0.00 : 518080: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : n->valuesLists = list_make1($2); 0.00 : 518086: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51808d: 31 f6 xor %esi,%esi : $$ = (Node *) n; 0.00 : 51808f: 49 89 de mov %rbx,%r14 : : values_clause: : VALUES ctext_row : { : SelectStmt *n = makeNode(SelectStmt); : n->valuesLists = list_make1($2); 0.00 : 518092: 48 8b 38 mov (%rax),%rdi 0.00 : 518095: e8 b6 97 0c 00 callq 5e1850 0.00 : 51809a: 48 89 43 48 mov %rax,0x48(%rbx) : $$ = (Node *) n; : } : | values_clause ',' ctext_row 0.00 : 51809e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5180a5: e9 d6 98 ff ff jmpq 511980 : | FOR KEY SHARE { $$ = LCS_FORKEYSHARE; } : ; : : locked_rels_list: : OF qualified_name_list { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 5180aa: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5180ad: e9 ce 98 ff ff jmpq 511980 : | FOR SHARE { $$ = LCS_FORSHARE; } : | FOR KEY SHARE { $$ = LCS_FORKEYSHARE; } : ; : : locked_rels_list: : OF qualified_name_list { $$ = $2; } 0.00 : 5180b2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5180b9: 4c 8b 33 mov (%rbx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 5180bc: e9 bf 98 ff ff jmpq 511980 : : for_locking_strength: : FOR UPDATE { $$ = LCS_FORUPDATE; } : | FOR NO KEY UPDATE { $$ = LCS_FORNOKEYUPDATE; } : | FOR SHARE { $$ = LCS_FORSHARE; } : | FOR KEY SHARE { $$ = LCS_FORKEYSHARE; } 0.00 : 5180c1: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5180c8: ff ff ff 0.00 : 5180cb: 49 21 ce and %rcx,%r14 : ; 0.00 : 5180ce: e9 ad 98 ff ff jmpq 511980 : $$ = $2; : } : | table_ref CROSS JOIN table_ref : { : /* CROSS JOIN is same as unqualified inner join */ : JoinExpr *n = makeNode(JoinExpr); 0.00 : 5180d3: 48 8b 3d 86 27 6a 00 mov 0x6a2786(%rip),%rdi # bba860 0.00 : 5180da: be 40 00 00 00 mov $0x40,%esi 0.00 : 5180df: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5180e6: e8 25 0d 28 00 callq 798e10 0.00 : 5180eb: c7 00 57 01 00 00 movl $0x157,(%rax) : n->jointype = JOIN_INNER; 0.00 : 5180f1: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $4; : n->usingClause = NIL; : n->quals = NULL; : $$ = n; 0.00 : 5180f8: 49 89 c6 mov %rax,%r14 : | table_ref CROSS JOIN table_ref : { : /* CROSS JOIN is same as unqualified inner join */ : JoinExpr *n = makeNode(JoinExpr); : n->jointype = JOIN_INNER; : n->isNatural = FALSE; 0.00 : 5180fb: c6 40 08 00 movb $0x0,0x8(%rax) : n->larg = $1; 0.00 : 5180ff: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518106: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51810a: 48 89 50 10 mov %rdx,0x10(%rax) : n->rarg = $4; 0.00 : 51810e: 48 8b 16 mov (%rsi),%rdx : n->usingClause = NIL; 0.00 : 518111: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 518118: 00 : n->quals = NULL; 0.00 : 518119: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 518120: 00 : /* CROSS JOIN is same as unqualified inner join */ : JoinExpr *n = makeNode(JoinExpr); : n->jointype = JOIN_INNER; : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $4; 0.00 : 518121: 48 89 50 18 mov %rdx,0x18(%rax) : n->usingClause = NIL; : n->quals = NULL; : $$ = n; : } : | table_ref join_type JOIN table_ref join_qual 0.00 : 518125: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51812c: e9 4f 98 ff ff jmpq 511980 : */ : : joined_table: : '(' joined_table ')' : { : $$ = $2; 0.00 : 518131: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518138: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : } : | table_ref CROSS JOIN table_ref 0.00 : 51813c: e9 3f 98 ff ff jmpq 511980 : n->quals = NULL; : $$ = n; : } : | table_ref join_type JOIN table_ref join_qual : { : JoinExpr *n = makeNode(JoinExpr); 0.00 : 518141: 48 8b 3d 18 27 6a 00 mov 0x6a2718(%rip),%rdi # bba860 0.00 : 518148: be 40 00 00 00 mov $0x40,%esi 0.00 : 51814d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518154: e8 b7 0c 28 00 callq 798e10 0.00 : 518159: c7 00 57 01 00 00 movl $0x157,(%rax) : n->jointype = $2; 0.00 : 51815f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->quals = NULL; : $$ = n; : } : | table_ref join_type JOIN table_ref join_qual : { : JoinExpr *n = makeNode(JoinExpr); 0.00 : 518166: 48 89 c2 mov %rax,%rdx : n->jointype = $2; 0.00 : 518169: 8b 41 e8 mov -0x18(%rcx),%eax : n->isNatural = FALSE; 0.00 : 51816c: c6 42 08 00 movb $0x0,0x8(%rdx) : $$ = n; : } : | table_ref join_type JOIN table_ref join_qual : { : JoinExpr *n = makeNode(JoinExpr); : n->jointype = $2; 0.00 : 518170: 89 42 04 mov %eax,0x4(%rdx) : n->isNatural = FALSE; : n->larg = $1; 0.00 : 518173: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 518177: 48 89 42 10 mov %rax,0x10(%rdx) : n->rarg = $4; 0.00 : 51817b: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 51817f: 48 89 42 18 mov %rax,0x18(%rdx) : if ($5 != NULL && IsA($5, List)) 0.00 : 518183: 48 8b 01 mov (%rcx),%rax 0.00 : 518186: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51818d: 48 85 c0 test %rax,%rax 0.00 : 518190: 74 0c je 51819e 0.00 : 518192: 81 38 90 02 00 00 cmpl $0x290,(%rax) 0.00 : 518198: 0f 84 ca 13 01 00 je 529568 : n->usingClause = (List *) $5; /* USING clause */ : else : n->quals = $5; /* ON clause */ 0.00 : 51819e: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = n; 0.00 : 5181a2: 49 89 d6 mov %rdx,%r14 : } : | table_ref JOIN table_ref join_qual 0.00 : 5181a5: e9 d6 97 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_with_clause: : with_clause { $$ = $1; } 0.00 : 5181aa: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5181b1: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5181b4: e9 c7 97 ff ff jmpq 511980 : | cte_list ',' common_table_expr { $$ = lappend($1, $3); } : ; : : common_table_expr: name opt_name_list AS '(' PreparableStmt ')' : { : CommonTableExpr *n = makeNode(CommonTableExpr); 0.00 : 5181b9: 48 8b 3d a0 26 6a 00 mov 0x6a26a0(%rip),%rdi # bba860 0.00 : 5181c0: be 50 00 00 00 mov $0x50,%esi 0.00 : 5181c5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5181cc: e8 3f 0c 28 00 callq 798e10 0.00 : 5181d1: c7 00 a9 03 00 00 movl $0x3a9,(%rax) : n->ctename = $1; 0.00 : 5181d7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->aliascolnames = $2; : n->ctequery = $5; : n->location = @1; : $$ = (Node *) n; 0.00 : 5181de: 49 89 c6 mov %rax,%r14 : ; : : common_table_expr: name opt_name_list AS '(' PreparableStmt ')' : { : CommonTableExpr *n = makeNode(CommonTableExpr); : n->ctename = $1; 0.00 : 5181e1: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 5181e5: 48 89 50 08 mov %rdx,0x8(%rax) : n->aliascolnames = $2; 0.00 : 5181e9: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 5181ed: 48 89 50 10 mov %rdx,0x10(%rax) : n->ctequery = $5; 0.00 : 5181f1: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5181f5: 48 89 50 18 mov %rdx,0x18(%rax) : n->location = @1; 0.00 : 5181f9: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 518200: 8b 53 ec mov -0x14(%rbx),%edx 0.00 : 518203: 89 50 20 mov %edx,0x20(%rax) : $$ = (Node *) n; : } : ; 0.00 : 518206: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51820d: e9 6e 97 ff ff jmpq 511980 : } : ; : : cte_list: : common_table_expr { $$ = list_make1($1); } : | cte_list ',' common_table_expr { $$ = lappend($1, $3); } 0.00 : 518212: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 518219: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51821d: 48 8b 32 mov (%rdx),%rsi 0.00 : 518220: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518227: e8 54 9c 0c 00 callq 5e1e80 : ; 0.00 : 51822c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : cte_list: : common_table_expr { $$ = list_make1($1); } : | cte_list ',' common_table_expr { $$ = lappend($1, $3); } 0.00 : 518233: 49 89 c6 mov %rax,%r14 : ; 0.00 : 518236: e9 45 97 ff ff jmpq 511980 : $$->location = @1; : } : ; : : cte_list: : common_table_expr { $$ = list_make1($1); } 0.00 : 51823b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518242: 31 f6 xor %esi,%esi 0.00 : 518244: 48 8b 38 mov (%rax),%rdi 0.00 : 518247: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51824e: e8 fd 95 0c 00 callq 5e1850 : | cte_list ',' common_table_expr { $$ = lappend($1, $3); } 0.00 : 518253: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$->location = @1; : } : ; : : cte_list: : common_table_expr { $$ = list_make1($1); } 0.00 : 51825a: 49 89 c6 mov %rax,%r14 : | cte_list ',' common_table_expr { $$ = lappend($1, $3); } 0.00 : 51825d: e9 1e 97 ff ff jmpq 511980 : $$->recursive = false; : $$->location = @1; : } : | WITH RECURSIVE cte_list : { : $$ = makeNode(WithClause); 0.00 : 518262: 48 8b 3d f7 25 6a 00 mov 0x6a25f7(%rip),%rdi # bba860 0.00 : 518269: be 18 00 00 00 mov $0x18,%esi 0.00 : 51826e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518275: e8 96 0b 28 00 callq 798e10 0.00 : 51827a: c7 00 a8 03 00 00 movl $0x3a8,(%rax) : $$->ctes = $3; 0.00 : 518280: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$->recursive = false; : $$->location = @1; : } : | WITH RECURSIVE cte_list : { : $$ = makeNode(WithClause); 0.00 : 518287: 49 89 c6 mov %rax,%r14 : $$->ctes = $3; 0.00 : 51828a: 48 8b 03 mov (%rbx),%rax : $$->recursive = true; 0.00 : 51828d: 41 c6 46 10 01 movb $0x1,0x10(%r14) : $$->location = @1; : } : | WITH RECURSIVE cte_list : { : $$ = makeNode(WithClause); : $$->ctes = $3; 0.00 : 518292: 49 89 46 08 mov %rax,0x8(%r14) : $$->recursive = true; : $$->location = @1; 0.00 : 518296: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 51829d: 8b 46 f8 mov -0x8(%rsi),%eax 0.00 : 5182a0: 41 89 46 14 mov %eax,0x14(%r14) : } : ; 0.00 : 5182a4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5182ab: e9 d0 96 ff ff jmpq 511980 : * We don't currently support the SEARCH or CYCLE clause. : */ : with_clause: : WITH cte_list : { : $$ = makeNode(WithClause); 0.00 : 5182b0: 48 8b 3d a9 25 6a 00 mov 0x6a25a9(%rip),%rdi # bba860 0.00 : 5182b7: be 18 00 00 00 mov $0x18,%esi 0.00 : 5182bc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5182c3: e8 48 0b 28 00 callq 798e10 0.00 : 5182c8: c7 00 a8 03 00 00 movl $0x3a8,(%rax) : $$->ctes = $2; 0.00 : 5182ce: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : * We don't currently support the SEARCH or CYCLE clause. : */ : with_clause: : WITH cte_list : { : $$ = makeNode(WithClause); 0.00 : 5182d5: 49 89 c6 mov %rax,%r14 : $$->ctes = $2; 0.00 : 5182d8: 48 8b 02 mov (%rdx),%rax : $$->recursive = false; 0.00 : 5182db: 41 c6 46 10 00 movb $0x0,0x10(%r14) : */ : with_clause: : WITH cte_list : { : $$ = makeNode(WithClause); : $$->ctes = $2; 0.00 : 5182e0: 49 89 46 08 mov %rax,0x8(%r14) : $$->recursive = false; : $$->location = @1; 0.00 : 5182e4: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5182eb: 8b 41 fc mov -0x4(%rcx),%eax 0.00 : 5182ee: 41 89 46 14 mov %eax,0x14(%r14) : } : | WITH RECURSIVE cte_list 0.00 : 5182f2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5182f9: e9 82 96 ff ff jmpq 511980 : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); : } : | select_clause EXCEPT opt_all select_clause : { : $$ = makeSetOp(SETOP_EXCEPT, $3, $1, $4); 0.00 : 5182fe: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518305: 48 8b 3d 54 25 6a 00 mov 0x6a2554(%rip),%rdi # bba860 : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); : } : | select_clause EXCEPT opt_all select_clause : { : $$ = makeSetOp(SETOP_EXCEPT, $3, $1, $4); 0.00 : 51830c: 48 89 de mov %rbx,%rsi 0.00 : 51830f: 4c 8b 2b mov (%rbx),%r13 0.00 : 518312: 48 8b 5b e8 mov -0x18(%rbx),%rbx 0.00 : 518316: 44 0f be 66 f8 movsbl -0x8(%rsi),%r12d : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 51831b: be 90 00 00 00 mov $0x90,%esi 0.00 : 518320: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518327: e8 e4 0a 28 00 callq 798e10 0.00 : 51832c: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : : n->op = op; 0.00 : 518332: c7 40 78 03 00 00 00 movl $0x3,0x78(%rax) : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); : } : | select_clause EXCEPT opt_all select_clause : { : $$ = makeSetOp(SETOP_EXCEPT, $3, $1, $4); 0.00 : 518339: 49 89 c6 mov %rax,%r14 : { : SelectStmt *n = makeNode(SelectStmt); : : n->op = op; : n->all = all; : n->larg = (SelectStmt *) larg; 0.00 : 51833c: 48 89 98 80 00 00 00 mov %rbx,0x80(%rax) : n->rarg = (SelectStmt *) rarg; 0.00 : 518343: 4c 89 a8 88 00 00 00 mov %r13,0x88(%rax) : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); : : n->op = op; : n->all = all; 0.00 : 51834a: 44 88 60 7c mov %r12b,0x7c(%rax) : } : | select_clause EXCEPT opt_all select_clause : { : $$ = makeSetOp(SETOP_EXCEPT, $3, $1, $4); : } : ; 0.00 : 51834e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518355: e9 26 96 ff ff jmpq 511980 : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); : } : | select_clause INTERSECT opt_all select_clause : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); 0.00 : 51835a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518361: 48 8b 3d f8 24 6a 00 mov 0x6a24f8(%rip),%rdi # bba860 0.00 : 518368: be 90 00 00 00 mov $0x90,%esi : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); : } : | select_clause INTERSECT opt_all select_clause : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); 0.00 : 51836d: 44 0f be 61 f8 movsbl -0x8(%rcx),%r12d 0.00 : 518372: 4c 8b 29 mov (%rcx),%r13 0.00 : 518375: 48 8b 59 e8 mov -0x18(%rcx),%rbx : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518379: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518380: e8 8b 0a 28 00 callq 798e10 0.00 : 518385: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : : n->op = op; 0.00 : 51838b: c7 40 78 02 00 00 00 movl $0x2,0x78(%rax) : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); : } : | select_clause INTERSECT opt_all select_clause : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); 0.00 : 518392: 49 89 c6 mov %rax,%r14 : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); : : n->op = op; : n->all = all; 0.00 : 518395: 44 88 60 7c mov %r12b,0x7c(%rax) : n->larg = (SelectStmt *) larg; 0.00 : 518399: 48 89 98 80 00 00 00 mov %rbx,0x80(%rax) : n->rarg = (SelectStmt *) rarg; 0.00 : 5183a0: 4c 89 a8 88 00 00 00 mov %r13,0x88(%rax) : } : | select_clause INTERSECT opt_all select_clause : { : $$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4); : } : | select_clause EXCEPT opt_all select_clause 0.00 : 5183a7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5183ae: e9 cd 95 ff ff jmpq 511980 : n->fromClause = list_make1($2); : $$ = (Node *)n; : } : | select_clause UNION opt_all select_clause : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); 0.00 : 5183b3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 5183ba: 48 8b 3d 9f 24 6a 00 mov 0x6a249f(%rip),%rdi # bba860 0.00 : 5183c1: be 90 00 00 00 mov $0x90,%esi : n->fromClause = list_make1($2); : $$ = (Node *)n; : } : | select_clause UNION opt_all select_clause : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); 0.00 : 5183c6: 44 0f be 62 f8 movsbl -0x8(%rdx),%r12d 0.00 : 5183cb: 4c 8b 2a mov (%rdx),%r13 0.00 : 5183ce: 48 8b 5a e8 mov -0x18(%rdx),%rbx : } : : static Node * : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 5183d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5183d9: e8 32 0a 28 00 callq 798e10 0.00 : 5183de: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : : n->op = op; 0.00 : 5183e4: c7 40 78 01 00 00 00 movl $0x1,0x78(%rax) : n->fromClause = list_make1($2); : $$ = (Node *)n; : } : | select_clause UNION opt_all select_clause : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); 0.00 : 5183eb: 49 89 c6 mov %rax,%r14 : makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) : { : SelectStmt *n = makeNode(SelectStmt); : : n->op = op; : n->all = all; 0.00 : 5183ee: 44 88 60 7c mov %r12b,0x7c(%rax) : n->larg = (SelectStmt *) larg; 0.00 : 5183f2: 48 89 98 80 00 00 00 mov %rbx,0x80(%rax) : n->rarg = (SelectStmt *) rarg; 0.00 : 5183f9: 4c 89 a8 88 00 00 00 mov %r13,0x88(%rax) : } : | select_clause UNION opt_all select_clause : { : $$ = makeSetOp(SETOP_UNION, $3, $1, $4); : } : | select_clause INTERSECT opt_all select_clause 0.00 : 518400: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518407: e9 74 95 ff ff jmpq 511980 : } : | values_clause { $$ = $1; } : | TABLE relation_expr : { : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); 0.00 : 51840c: 48 8b 3d 4d 24 6a 00 mov 0x6a244d(%rip),%rdi # bba860 0.00 : 518413: be 18 00 00 00 mov $0x18,%esi 0.00 : 518418: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51841f: e8 ec 09 28 00 callq 798e10 0.00 : 518424: c7 00 85 03 00 00 movl $0x385,(%rax) : ResTarget *rt = makeNode(ResTarget); 0.00 : 51842a: 48 8b 3d 2f 24 6a 00 mov 0x6a242f(%rip),%rdi # bba860 0.00 : 518431: be 28 00 00 00 mov $0x28,%esi : } : | values_clause { $$ = $1; } : | TABLE relation_expr : { : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); 0.00 : 518436: 49 89 c4 mov %rax,%r12 : ResTarget *rt = makeNode(ResTarget); 0.00 : 518439: e8 d2 09 28 00 callq 798e10 0.00 : 51843e: c7 00 8d 03 00 00 movl $0x38d,(%rax) : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518444: 48 8b 3d 15 24 6a 00 mov 0x6a2415(%rip),%rdi # bba860 0.00 : 51844b: be 90 00 00 00 mov $0x90,%esi : | values_clause { $$ = $1; } : | TABLE relation_expr : { : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); : ResTarget *rt = makeNode(ResTarget); 0.00 : 518450: 48 89 c3 mov %rax,%rbx : SelectStmt *n = makeNode(SelectStmt); 0.00 : 518453: e8 b8 09 28 00 callq 798e10 0.00 : 518458: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : : cr->fields = list_make1(makeNode(A_Star)); 0.00 : 51845e: 48 8b 3d fb 23 6a 00 mov 0x6a23fb(%rip),%rdi # bba860 0.00 : 518465: be 04 00 00 00 mov $0x4,%esi : | TABLE relation_expr : { : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); : ResTarget *rt = makeNode(ResTarget); : SelectStmt *n = makeNode(SelectStmt); 0.00 : 51846a: 49 89 c5 mov %rax,%r13 : rt->val = (Node *)cr; : rt->location = -1; : : n->targetList = list_make1(rt); : n->fromClause = list_make1($2); : $$ = (Node *)n; 0.00 : 51846d: 4d 89 ee mov %r13,%r14 : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); : ResTarget *rt = makeNode(ResTarget); : SelectStmt *n = makeNode(SelectStmt); : : cr->fields = list_make1(makeNode(A_Star)); 0.00 : 518470: e8 ab 0b 28 00 callq 799020 0.00 : 518475: 31 f6 xor %esi,%esi 0.00 : 518477: 48 89 c7 mov %rax,%rdi 0.00 : 51847a: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 518480: e8 cb 93 0c 00 callq 5e1850 : cr->location = -1; 0.00 : 518485: 41 c7 44 24 10 ff ff movl $0xffffffff,0x10(%r12) 0.00 : 51848c: ff ff : /* same as SELECT * FROM relation_expr */ : ColumnRef *cr = makeNode(ColumnRef); : ResTarget *rt = makeNode(ResTarget); : SelectStmt *n = makeNode(SelectStmt); : : cr->fields = list_make1(makeNode(A_Star)); 0.00 : 51848e: 49 89 44 24 08 mov %rax,0x8(%r12) : rt->name = NULL; : rt->indirection = NIL; : rt->val = (Node *)cr; : rt->location = -1; : : n->targetList = list_make1(rt); 0.00 : 518493: 31 f6 xor %esi,%esi 0.00 : 518495: 48 89 df mov %rbx,%rdi : SelectStmt *n = makeNode(SelectStmt); : : cr->fields = list_make1(makeNode(A_Star)); : cr->location = -1; : : rt->name = NULL; 0.00 : 518498: 48 c7 43 08 00 00 00 movq $0x0,0x8(%rbx) 0.00 : 51849f: 00 : rt->indirection = NIL; 0.00 : 5184a0: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5184a7: 00 : rt->val = (Node *)cr; 0.00 : 5184a8: 4c 89 63 18 mov %r12,0x18(%rbx) : rt->location = -1; 0.00 : 5184ac: c7 43 20 ff ff ff ff movl $0xffffffff,0x20(%rbx) : : n->targetList = list_make1(rt); 0.00 : 5184b3: e8 98 93 0c 00 callq 5e1850 0.00 : 5184b8: 49 89 45 18 mov %rax,0x18(%r13) : n->fromClause = list_make1($2); 0.00 : 5184bc: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5184c3: 31 f6 xor %esi,%esi 0.00 : 5184c5: 48 8b 38 mov (%rax),%rdi 0.00 : 5184c8: e8 83 93 0c 00 callq 5e1850 0.00 : 5184cd: 49 89 45 20 mov %rax,0x20(%r13) : $$ = (Node *)n; : } : | select_clause UNION opt_all select_clause 0.00 : 5184d1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5184d8: e9 a3 94 ff ff jmpq 511980 : n->groupClause = $7; : n->havingClause = $8; : n->windowClause = $9; : $$ = (Node *)n; : } : | values_clause { $$ = $1; } 0.00 : 5184dd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5184e4: 4c 8b 33 mov (%rbx),%r14 : | TABLE relation_expr 0.00 : 5184e7: e9 94 94 ff ff jmpq 511980 : simple_select: : SELECT opt_distinct opt_target_list : into_clause from_clause where_clause : group_clause having_clause window_clause : { : SelectStmt *n = makeNode(SelectStmt); 0.00 : 5184ec: 48 8b 3d 6d 23 6a 00 mov 0x6a236d(%rip),%rdi # bba860 0.00 : 5184f3: be 90 00 00 00 mov $0x90,%esi 0.00 : 5184f8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5184ff: e8 0c 09 28 00 callq 798e10 0.00 : 518504: c7 00 c1 02 00 00 movl $0x2c1,(%rax) : n->distinctClause = $2; 0.00 : 51850a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->fromClause = $5; : n->whereClause = $6; : n->groupClause = $7; : n->havingClause = $8; : n->windowClause = $9; : $$ = (Node *)n; 0.00 : 518511: 49 89 c6 mov %rax,%r14 : SELECT opt_distinct opt_target_list : into_clause from_clause where_clause : group_clause having_clause window_clause : { : SelectStmt *n = makeNode(SelectStmt); : n->distinctClause = $2; 0.00 : 518514: 48 8b 51 c8 mov -0x38(%rcx),%rdx 0.00 : 518518: 48 89 50 08 mov %rdx,0x8(%rax) : n->targetList = $3; 0.00 : 51851c: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 518520: 48 89 50 18 mov %rdx,0x18(%rax) : n->intoClause = $4; 0.00 : 518524: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 518528: 48 89 50 10 mov %rdx,0x10(%rax) : n->fromClause = $5; 0.00 : 51852c: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 518530: 48 89 50 20 mov %rdx,0x20(%rax) : n->whereClause = $6; 0.00 : 518534: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 518538: 48 89 50 28 mov %rdx,0x28(%rax) : n->groupClause = $7; 0.00 : 51853c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 518540: 48 89 50 30 mov %rdx,0x30(%rax) : n->havingClause = $8; 0.00 : 518544: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 518548: 48 89 50 38 mov %rdx,0x38(%rax) : n->windowClause = $9; 0.00 : 51854c: 48 8b 11 mov (%rcx),%rdx 0.00 : 51854f: 48 89 50 40 mov %rdx,0x40(%rax) : $$ = (Node *)n; : } : | values_clause { $$ = $1; } 0.00 : 518553: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51855a: e9 21 94 ff ff jmpq 511980 : } : ; : : select_clause: : simple_select { $$ = $1; } : | select_with_parens { $$ = $1; } 0.00 : 51855f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518566: 4c 8b 36 mov (%rsi),%r14 : ; 0.00 : 518569: e9 12 94 ff ff jmpq 511980 : $$ = $2; : } : ; : : select_clause: : simple_select { $$ = $1; } 0.00 : 51856e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518575: 4c 8b 33 mov (%rbx),%r14 : | select_with_parens { $$ = $1; } 0.00 : 518578: e9 03 94 ff ff jmpq 511980 : yyscanner); : $$ = $2; : } : | with_clause select_clause opt_sort_clause select_limit opt_for_locking_clause : { : insertSelectOptions((SelectStmt *) $2, $3, $5, 0.00 : 51857d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518584: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51858b: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51858f: 4c 8b 66 e0 mov -0x20(%rsi),%r12 0.00 : 518593: be 01 00 00 00 mov $0x1,%esi 0.00 : 518598: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51859f: e8 bc 8e 0c 00 callq 5e1460 0.00 : 5185a4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5185ab: 31 f6 xor %esi,%esi 0.00 : 5185ad: 48 89 c3 mov %rax,%rbx 0.00 : 5185b0: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 5185b4: e8 a7 8e 0c 00 callq 5e1460 0.00 : 5185b9: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 5185c0: 48 89 c1 mov %rax,%rcx 0.00 : 5185c3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5185ca: 4d 89 e1 mov %r12,%r9 0.00 : 5185cd: 49 89 d8 mov %rbx,%r8 0.00 : 5185d0: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 5185d4: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 5185d8: 48 8b 10 mov (%rax),%rdx 0.00 : 5185db: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 5185df: e8 dc 89 ff ff callq 510fc0 : list_nth($4, 0), list_nth($4, 1), : $1, : yyscanner); : $$ = $2; 0.00 : 5185e4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : ; 0.00 : 5185eb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : insertSelectOptions((SelectStmt *) $2, $3, $5, : list_nth($4, 0), list_nth($4, 1), : $1, : yyscanner); : $$ = $2; 0.00 : 5185f2: 4c 8b 71 e8 mov -0x18(%rcx),%r14 : } : ; 0.00 : 5185f6: e9 85 93 ff ff jmpq 511980 : yyscanner); : $$ = $2; : } : | with_clause select_clause opt_sort_clause for_locking_clause opt_select_limit : { : insertSelectOptions((SelectStmt *) $2, $3, $4, 0.00 : 5185fb: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518602: be 01 00 00 00 mov $0x1,%esi 0.00 : 518607: 48 8b 3b mov (%rbx),%rdi 0.00 : 51860a: 4c 8b 63 e0 mov -0x20(%rbx),%r12 0.00 : 51860e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518615: e8 46 8e 0c 00 callq 5e1460 0.00 : 51861a: 48 89 c3 mov %rax,%rbx 0.00 : 51861d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518624: 31 f6 xor %esi,%esi 0.00 : 518626: 48 8b 38 mov (%rax),%rdi 0.00 : 518629: e8 32 8e 0c 00 callq 5e1460 0.00 : 51862e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518635: 48 89 c1 mov %rax,%rcx 0.00 : 518638: 49 89 d8 mov %rbx,%r8 0.00 : 51863b: 48 8b 85 70 f4 ff ff mov -0xb90(%rbp),%rax 0.00 : 518642: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518649: 4d 89 e1 mov %r12,%r9 0.00 : 51864c: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 518650: 48 8b 76 f0 mov -0x10(%rsi),%rsi 0.00 : 518654: 48 89 04 24 mov %rax,(%rsp) 0.00 : 518658: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 51865c: e8 5f 89 ff ff callq 510fc0 : list_nth($5, 0), list_nth($5, 1), : $1, : yyscanner); : $$ = $2; 0.00 : 518661: 4c 8b 73 e8 mov -0x18(%rbx),%r14 : } : | with_clause select_clause opt_sort_clause select_limit opt_for_locking_clause 0.00 : 518665: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51866c: e9 0f 93 ff ff jmpq 511980 : yyscanner); : $$ = $2; : } : | with_clause select_clause sort_clause : { : insertSelectOptions((SelectStmt *) $2, $3, NIL, 0.00 : 518671: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518678: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 51867f: 31 c9 xor %ecx,%ecx 0.00 : 518681: 45 31 c0 xor %r8d,%r8d 0.00 : 518684: 4c 8b 48 f0 mov -0x10(%rax),%r9 0.00 : 518688: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 51868c: 31 d2 xor %edx,%edx 0.00 : 51868e: 48 8b 30 mov (%rax),%rsi 0.00 : 518691: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 518695: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51869c: e8 1f 89 ff ff callq 510fc0 : NULL, NULL, : $1, : yyscanner); : $$ = $2; 0.00 : 5186a1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : | with_clause select_clause opt_sort_clause for_locking_clause opt_select_limit 0.00 : 5186a8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : insertSelectOptions((SelectStmt *) $2, $3, NIL, : NULL, NULL, : $1, : yyscanner); : $$ = $2; 0.00 : 5186af: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : } : | with_clause select_clause opt_sort_clause for_locking_clause opt_select_limit 0.00 : 5186b3: e9 c8 92 ff ff jmpq 511980 : yyscanner); : $$ = $1; : } : | with_clause select_clause : { : insertSelectOptions((SelectStmt *) $2, NULL, NIL, 0.00 : 5186b8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5186bf: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5186c6: 45 31 c0 xor %r8d,%r8d 0.00 : 5186c9: 31 c9 xor %ecx,%ecx 0.00 : 5186cb: 31 d2 xor %edx,%edx 0.00 : 5186cd: 4c 8b 4b f8 mov -0x8(%rbx),%r9 0.00 : 5186d1: 48 89 34 24 mov %rsi,(%rsp) 0.00 : 5186d5: 31 f6 xor %esi,%esi 0.00 : 5186d7: 48 8b 3b mov (%rbx),%rdi 0.00 : 5186da: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5186e1: e8 da 88 ff ff callq 510fc0 : NULL, NULL, : $1, : yyscanner); : $$ = $2; 0.00 : 5186e6: 4c 8b 33 mov (%rbx),%r14 : } : | with_clause select_clause sort_clause 0.00 : 5186e9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5186f0: e9 8b 92 ff ff jmpq 511980 : yyscanner); : $$ = $1; : } : | select_clause opt_sort_clause select_limit opt_for_locking_clause : { : insertSelectOptions((SelectStmt *) $1, $2, $4, 0.00 : 5186f5: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5186fc: be 01 00 00 00 mov $0x1,%esi 0.00 : 518701: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 518705: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51870c: e8 4f 8d 0c 00 callq 5e1460 0.00 : 518711: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 518718: 31 f6 xor %esi,%esi 0.00 : 51871a: 48 89 c3 mov %rax,%rbx 0.00 : 51871d: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 518721: e8 3a 8d 0c 00 callq 5e1460 0.00 : 518726: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 51872d: 48 89 c1 mov %rax,%rcx 0.00 : 518730: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518737: 45 31 c9 xor %r9d,%r9d 0.00 : 51873a: 49 89 d8 mov %rbx,%r8 0.00 : 51873d: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 518741: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 518745: 48 8b 10 mov (%rax),%rdx 0.00 : 518748: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51874c: e8 6f 88 ff ff callq 510fc0 : list_nth($3, 0), list_nth($3, 1), : NULL, : yyscanner); : $$ = $1; 0.00 : 518751: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : | with_clause select_clause 0.00 : 518758: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : insertSelectOptions((SelectStmt *) $1, $2, $4, : list_nth($3, 0), list_nth($3, 1), : NULL, : yyscanner); : $$ = $1; 0.00 : 51875f: 4c 8b 71 e8 mov -0x18(%rcx),%r14 : } : | with_clause select_clause 0.00 : 518763: e9 18 92 ff ff jmpq 511980 : yyscanner); : $$ = $1; : } : | select_clause opt_sort_clause for_locking_clause opt_select_limit : { : insertSelectOptions((SelectStmt *) $1, $2, $3, 0.00 : 518768: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51876f: be 01 00 00 00 mov $0x1,%esi 0.00 : 518774: 48 8b 38 mov (%rax),%rdi 0.00 : 518777: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51877e: e8 dd 8c 0c 00 callq 5e1460 0.00 : 518783: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51878a: 48 89 c3 mov %rax,%rbx 0.00 : 51878d: 31 f6 xor %esi,%esi 0.00 : 51878f: 48 8b 3a mov (%rdx),%rdi 0.00 : 518792: e8 c9 8c 0c 00 callq 5e1460 0.00 : 518797: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51879e: 48 89 c1 mov %rax,%rcx 0.00 : 5187a1: 49 89 d8 mov %rbx,%r8 0.00 : 5187a4: 48 8b 85 70 f4 ff ff mov -0xb90(%rbp),%rax 0.00 : 5187ab: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5187b2: 45 31 c9 xor %r9d,%r9d 0.00 : 5187b5: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5187b9: 48 8b 76 f0 mov -0x10(%rsi),%rsi 0.00 : 5187bd: 48 89 04 24 mov %rax,(%rsp) 0.00 : 5187c1: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 5187c5: e8 f6 87 ff ff callq 510fc0 : list_nth($4, 0), list_nth($4, 1), : NULL, : yyscanner); : $$ = $1; 0.00 : 5187ca: 4c 8b 73 e8 mov -0x18(%rbx),%r14 : } : | select_clause opt_sort_clause select_limit opt_for_locking_clause 0.00 : 5187ce: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5187d5: e9 a6 91 ff ff jmpq 511980 : */ : select_no_parens: : simple_select { $$ = $1; } : | select_clause sort_clause : { : insertSelectOptions((SelectStmt *) $1, $2, NIL, 0.00 : 5187da: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5187e1: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 5187e8: 45 31 c9 xor %r9d,%r9d 0.00 : 5187eb: 45 31 c0 xor %r8d,%r8d 0.00 : 5187ee: 31 c9 xor %ecx,%ecx 0.00 : 5187f0: 48 89 14 24 mov %rdx,(%rsp) 0.00 : 5187f4: 48 8b 33 mov (%rbx),%rsi 0.00 : 5187f7: 31 d2 xor %edx,%edx 0.00 : 5187f9: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 5187fd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518804: e8 b7 87 ff ff callq 510fc0 : NULL, NULL, NULL, : yyscanner); : $$ = $1; 0.00 : 518809: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : } : | select_clause opt_sort_clause for_locking_clause opt_select_limit 0.00 : 51880d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518814: e9 67 91 ff ff jmpq 511980 : * We now support both orderings, but prefer LIMIT/OFFSET before the locking : * clause. : * 2002-08-28 bjm : */ : select_no_parens: : simple_select { $$ = $1; } 0.00 : 518819: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518820: 4c 8b 30 mov (%rax),%r14 : | select_clause sort_clause 0.00 : 518823: e9 58 91 ff ff jmpq 511980 : | select_with_parens %prec UMINUS : ; : : select_with_parens: : '(' select_no_parens ')' { $$ = $2; } : | '(' select_with_parens ')' { $$ = $2; } 0.00 : 518828: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51882f: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : ; 0.00 : 518833: e9 48 91 ff ff jmpq 511980 : SelectStmt: select_no_parens %prec UMINUS : | select_with_parens %prec UMINUS : ; : : select_with_parens: : '(' select_no_parens ')' { $$ = $2; } 0.00 : 518838: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51883f: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | '(' select_with_parens ')' { $$ = $2; } 0.00 : 518843: e9 38 91 ff ff jmpq 511980 : | cursor_options INSENSITIVE { $$ = $1 | CURSOR_OPT_INSENSITIVE; } : ; : : opt_hold: /* EMPTY */ { $$ = 0; } : | WITH HOLD { $$ = CURSOR_OPT_HOLD; } : | WITHOUT HOLD { $$ = 0; } 0.00 : 518848: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51884f: ff ff ff 0.00 : 518852: 49 21 ce and %rcx,%r14 : ; 0.00 : 518855: e9 26 91 ff ff jmpq 511980 : | cursor_options BINARY { $$ = $1 | CURSOR_OPT_BINARY; } : | cursor_options INSENSITIVE { $$ = $1 | CURSOR_OPT_INSENSITIVE; } : ; : : opt_hold: /* EMPTY */ { $$ = 0; } : | WITH HOLD { $$ = CURSOR_OPT_HOLD; } 0.00 : 51885a: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 518861: ff ff ff 0.00 : 518864: 49 21 d6 and %rdx,%r14 0.00 : 518867: 49 83 ce 10 or $0x10,%r14 : | WITHOUT HOLD { $$ = 0; } 0.00 : 51886b: e9 10 91 ff ff jmpq 511980 : | cursor_options SCROLL { $$ = $1 | CURSOR_OPT_SCROLL; } : | cursor_options BINARY { $$ = $1 | CURSOR_OPT_BINARY; } : | cursor_options INSENSITIVE { $$ = $1 | CURSOR_OPT_INSENSITIVE; } : ; : : opt_hold: /* EMPTY */ { $$ = 0; } 0.00 : 518870: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 518877: ff ff ff 0.00 : 51887a: 49 21 c6 and %rax,%r14 : | WITH HOLD { $$ = CURSOR_OPT_HOLD; } 0.00 : 51887d: e9 fe 90 ff ff jmpq 511980 : : cursor_options: /*EMPTY*/ { $$ = 0; } : | cursor_options NO SCROLL { $$ = $1 | CURSOR_OPT_NO_SCROLL; } : | cursor_options SCROLL { $$ = $1 | CURSOR_OPT_SCROLL; } : | cursor_options BINARY { $$ = $1 | CURSOR_OPT_BINARY; } : | cursor_options INSENSITIVE { $$ = $1 | CURSOR_OPT_INSENSITIVE; } 0.00 : 518882: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518889: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 518890: ff ff ff 0.00 : 518893: 49 21 f6 and %rsi,%r14 0.00 : 518896: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 518899: 83 c8 08 or $0x8,%eax 0.00 : 51889c: 49 09 c6 or %rax,%r14 : ; 0.00 : 51889f: e9 dc 90 ff ff jmpq 511980 : ; : : cursor_options: /*EMPTY*/ { $$ = 0; } : | cursor_options NO SCROLL { $$ = $1 | CURSOR_OPT_NO_SCROLL; } : | cursor_options SCROLL { $$ = $1 | CURSOR_OPT_SCROLL; } : | cursor_options BINARY { $$ = $1 | CURSOR_OPT_BINARY; } 0.00 : 5188a4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5188ab: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5188b2: ff ff ff 0.00 : 5188b5: 49 21 ce and %rcx,%r14 0.00 : 5188b8: 8b 42 f8 mov -0x8(%rdx),%eax 0.00 : 5188bb: 83 c8 01 or $0x1,%eax 0.00 : 5188be: 49 09 c6 or %rax,%r14 : | cursor_options INSENSITIVE { $$ = $1 | CURSOR_OPT_INSENSITIVE; } 0.00 : 5188c1: e9 ba 90 ff ff jmpq 511980 : cursor_name: name { $$ = $1; } : ; : : cursor_options: /*EMPTY*/ { $$ = 0; } : | cursor_options NO SCROLL { $$ = $1 | CURSOR_OPT_NO_SCROLL; } : | cursor_options SCROLL { $$ = $1 | CURSOR_OPT_SCROLL; } 0.00 : 5188c6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5188cd: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5188d4: ff ff ff 0.00 : 5188d7: 49 21 f6 and %rsi,%r14 0.00 : 5188da: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 5188dd: 83 c8 02 or $0x2,%eax 0.00 : 5188e0: 49 09 c6 or %rax,%r14 : | cursor_options BINARY { $$ = $1 | CURSOR_OPT_BINARY; } 0.00 : 5188e3: e9 98 90 ff ff jmpq 511980 : : cursor_name: name { $$ = $1; } : ; : : cursor_options: /*EMPTY*/ { $$ = 0; } : | cursor_options NO SCROLL { $$ = $1 | CURSOR_OPT_NO_SCROLL; } 0.00 : 5188e8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5188ef: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5188f6: ff ff ff 0.00 : 5188f9: 49 21 ce and %rcx,%r14 0.00 : 5188fc: 8b 42 f0 mov -0x10(%rdx),%eax 0.00 : 5188ff: 83 c8 04 or $0x4,%eax 0.00 : 518902: 49 09 c6 or %rax,%r14 : | cursor_options SCROLL { $$ = $1 | CURSOR_OPT_SCROLL; } 0.00 : 518905: e9 76 90 ff ff jmpq 511980 : ; : : cursor_name: name { $$ = $1; } : ; : : cursor_options: /*EMPTY*/ { $$ = 0; } 0.00 : 51890a: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 518911: ff ff ff 0.00 : 518914: 49 21 f6 and %rsi,%r14 : | cursor_options NO SCROLL { $$ = $1 | CURSOR_OPT_NO_SCROLL; } 0.00 : 518917: e9 64 90 ff ff jmpq 511980 : n->query = $7; : $$ = (Node *)n; : } : ; : : cursor_name: name { $$ = $1; } 0.00 : 51891c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518923: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 518926: e9 55 90 ff ff jmpq 511980 : * CURSOR STATEMENTS : * : *****************************************************************************/ : DeclareCursorStmt: DECLARE cursor_name cursor_options CURSOR opt_hold FOR SelectStmt : { : DeclareCursorStmt *n = makeNode(DeclareCursorStmt); 0.00 : 51892b: 48 8b 3d 2e 1f 6a 00 mov 0x6a1f2e(%rip),%rdi # bba860 0.00 : 518932: be 20 00 00 00 mov $0x20,%esi 0.00 : 518937: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51893e: e8 cd 04 28 00 callq 798e10 0.00 : 518943: c7 00 fe 02 00 00 movl $0x2fe,(%rax) : n->portalname = $2; 0.00 : 518949: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : /* currently we always set FAST_PLAN option */ : n->options = $3 | $5 | CURSOR_OPT_FAST_PLAN; : n->query = $7; : $$ = (Node *)n; 0.00 : 518950: 49 89 c6 mov %rax,%r14 : * : *****************************************************************************/ : DeclareCursorStmt: DECLARE cursor_name cursor_options CURSOR opt_hold FOR SelectStmt : { : DeclareCursorStmt *n = makeNode(DeclareCursorStmt); : n->portalname = $2; 0.00 : 518953: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 518957: 48 89 50 08 mov %rdx,0x8(%rax) : /* currently we always set FAST_PLAN option */ : n->options = $3 | $5 | CURSOR_OPT_FAST_PLAN; 0.00 : 51895b: 8b 51 e0 mov -0x20(%rcx),%edx 0.00 : 51895e: 0b 51 f0 or -0x10(%rcx),%edx 0.00 : 518961: 83 ca 20 or $0x20,%edx 0.00 : 518964: 89 50 10 mov %edx,0x10(%rax) : n->query = $7; 0.00 : 518967: 48 8b 11 mov (%rcx),%rdx 0.00 : 51896a: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51896e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518975: e9 06 90 ff ff jmpq 511980 : } : ; : : set_target_list: : set_target { $$ = list_make1($1); } : | set_target_list ',' set_target { $$ = lappend($1,$3); } 0.00 : 51897a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 518981: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 518985: 48 8b 32 mov (%rdx),%rsi 0.00 : 518988: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51898f: e8 ec 94 0c 00 callq 5e1e80 : ; 0.00 : 518994: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : set_target_list: : set_target { $$ = list_make1($1); } : | set_target_list ',' set_target { $$ = lappend($1,$3); } 0.00 : 51899b: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51899e: e9 dd 8f ff ff jmpq 511980 : $$->location = @1; : } : ; : : set_target_list: : set_target { $$ = list_make1($1); } 0.00 : 5189a3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5189aa: 31 f6 xor %esi,%esi 0.00 : 5189ac: 48 8b 38 mov (%rax),%rdi 0.00 : 5189af: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5189b6: e8 95 8e 0c 00 callq 5e1850 : | set_target_list ',' set_target { $$ = lappend($1,$3); } 0.00 : 5189bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$->location = @1; : } : ; : : set_target_list: : set_target { $$ = list_make1($1); } 0.00 : 5189c2: 49 89 c6 mov %rax,%r14 : | set_target_list ',' set_target { $$ = lappend($1,$3); } 0.00 : 5189c5: e9 b6 8f ff ff jmpq 511980 : ; : : set_target: : ColId opt_indirection : { : $$ = makeNode(ResTarget); 0.00 : 5189ca: 48 8b 3d 8f 1e 6a 00 mov 0x6a1e8f(%rip),%rdi # bba860 0.00 : 5189d1: be 28 00 00 00 mov $0x28,%esi 0.00 : 5189d6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5189dd: e8 2e 04 28 00 callq 798e10 0.00 : 5189e2: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = $1; 0.00 : 5189e8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : ; : : set_target: : ColId opt_indirection : { : $$ = makeNode(ResTarget); 0.00 : 5189ef: 49 89 c6 mov %rax,%r14 : $$->name = $1; 0.00 : 5189f2: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 5189f6: 49 89 46 08 mov %rax,0x8(%r14) : $$->indirection = check_indirection($2, yyscanner); 0.00 : 5189fa: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 518a01: 48 8b 3b mov (%rbx),%rdi 0.00 : 518a04: e8 b7 53 ff ff callq 50ddc0 : $$->val = NULL; /* upper production sets this */ 0.00 : 518a09: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 518a10: 00 : set_target: : ColId opt_indirection : { : $$ = makeNode(ResTarget); : $$->name = $1; : $$->indirection = check_indirection($2, yyscanner); 0.00 : 518a11: 49 89 46 10 mov %rax,0x10(%r14) : $$->val = NULL; /* upper production sets this */ : $$->location = @1; 0.00 : 518a15: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 518a1c: 8b 46 fc mov -0x4(%rsi),%eax 0.00 : 518a1f: 41 89 46 20 mov %eax,0x20(%r14) : } : ; 0.00 : 518a23: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518a2a: e9 51 8f ff ff jmpq 511980 : : $$ = $2; : } : | '(' set_target_list ')' '=' select_with_parens : { : SubLink *sl = makeNode(SubLink); 0.00 : 518a2f: 48 8b 3d 2a 1e 6a 00 mov 0x6a1e2a(%rip),%rdi # bba860 0.00 : 518a36: be 30 00 00 00 mov $0x30,%esi 0.00 : 518a3b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518a42: e8 c9 03 28 00 callq 798e10 0.00 : 518a47: c7 00 3c 01 00 00 movl $0x13c,(%rax) : int ncolumns = list_length($2); 0.00 : 518a4d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : : $$ = $2; : } : | '(' set_target_list ')' '=' select_with_parens : { : SubLink *sl = makeNode(SubLink); 0.00 : 518a54: 49 89 c6 mov %rax,%r14 : int ncolumns = list_length($2); 0.00 : 518a57: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 518a5e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518a65: 48 83 ee 18 sub $0x18,%rsi 0.00 : 518a69: 48 89 b5 c8 f4 ff ff mov %rsi,-0xb38(%rbp) 0.00 : 518a70: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 518a74: c7 85 ac f4 ff ff 00 movl $0x0,-0xb54(%rbp) 0.00 : 518a7b: 00 00 00 0.00 : 518a7e: 48 85 c0 test %rax,%rax 0.00 : 518a81: 74 09 je 518a8c 0.00 : 518a83: 8b 40 04 mov 0x4(%rax),%eax 0.00 : 518a86: 89 85 ac f4 ff ff mov %eax,-0xb54(%rbp) : int i = 1; : ListCell *col_cell; : : /* First, convert bare SelectStmt into a SubLink */ : sl->subLinkType = MULTIEXPR_SUBLINK; 0.00 : 518a8c: 41 c7 46 04 05 00 00 movl $0x5,0x4(%r14) 0.00 : 518a93: 00 : sl->subLinkId = 0; /* will be assigned later */ 0.00 : 518a94: 41 c7 46 08 00 00 00 movl $0x0,0x8(%r14) 0.00 : 518a9b: 00 : sl->testexpr = NULL; 0.00 : 518a9c: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 518aa3: 00 : sl->operName = NIL; 0.00 : 518aa4: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 518aab: 00 : sl->subselect = $5; 0.00 : 518aac: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 518ab3: 48 8b 01 mov (%rcx),%rax 0.00 : 518ab6: 49 89 46 20 mov %rax,0x20(%r14) : sl->location = @5; 0.00 : 518aba: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 518ac1: 8b 03 mov (%rbx),%eax 0.00 : 518ac3: 41 89 46 28 mov %eax,0x28(%r14) : : /* Create a MultiAssignRef source for each target */ : foreach(col_cell, $2) 0.00 : 518ac7: 48 8b b5 c8 f4 ff ff mov -0xb38(%rbp),%rsi 0.00 : 518ace: 48 8b 06 mov (%rsi),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 518ad1: 48 85 c0 test %rax,%rax 0.00 : 518ad4: 74 65 je 518b3b 0.00 : 518ad6: 4c 8b 60 08 mov 0x8(%rax),%r12 0.00 : 518ada: 4d 85 e4 test %r12,%r12 0.00 : 518add: 74 5c je 518b3b 0.00 : 518adf: 41 bd 01 00 00 00 mov $0x1,%r13d : { : ResTarget *res_col = (ResTarget *) lfirst(col_cell); : MultiAssignRef *r = makeNode(MultiAssignRef); 0.00 : 518ae5: 48 8b 3d 74 1d 6a 00 mov 0x6a1d74(%rip),%rdi # bba860 0.00 : 518aec: be 18 00 00 00 mov $0x18,%esi : sl->location = @5; : : /* Create a MultiAssignRef source for each target */ : foreach(col_cell, $2) : { : ResTarget *res_col = (ResTarget *) lfirst(col_cell); 0.00 : 518af1: 49 8b 1c 24 mov (%r12),%rbx : MultiAssignRef *r = makeNode(MultiAssignRef); 0.00 : 518af5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518afc: e8 0f 03 28 00 callq 798e10 : : r->source = (Node *) sl; : r->colno = i; 0.00 : 518b01: 44 89 68 10 mov %r13d,0x10(%rax) : : /* Create a MultiAssignRef source for each target */ : foreach(col_cell, $2) : { : ResTarget *res_col = (ResTarget *) lfirst(col_cell); : MultiAssignRef *r = makeNode(MultiAssignRef); 0.00 : 518b05: c7 00 8e 03 00 00 movl $0x38e,(%rax) : : r->source = (Node *) sl; : r->colno = i; : r->ncolumns = ncolumns; : res_col->val = (Node *) r; : i++; 0.00 : 518b0b: 41 83 c5 01 add $0x1,%r13d : foreach(col_cell, $2) : { : ResTarget *res_col = (ResTarget *) lfirst(col_cell); : MultiAssignRef *r = makeNode(MultiAssignRef); : : r->source = (Node *) sl; 0.00 : 518b0f: 4c 89 70 08 mov %r14,0x8(%rax) : r->colno = i; : r->ncolumns = ncolumns; 0.00 : 518b13: 8b 95 ac f4 ff ff mov -0xb54(%rbp),%edx 0.00 : 518b19: 89 50 14 mov %edx,0x14(%rax) : res_col->val = (Node *) r; 0.00 : 518b1c: 48 89 43 18 mov %rax,0x18(%rbx) : sl->operName = NIL; : sl->subselect = $5; : sl->location = @5; : : /* Create a MultiAssignRef source for each target */ : foreach(col_cell, $2) 0.00 : 518b20: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 518b25: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518b2c: 4d 85 e4 test %r12,%r12 0.00 : 518b2f: 75 b4 jne 518ae5 0.00 : 518b31: 48 8b 8d c8 f4 ff ff mov -0xb38(%rbp),%rcx 0.00 : 518b38: 48 8b 01 mov (%rcx),%rax : r->ncolumns = ncolumns; : res_col->val = (Node *) r; : i++; : } : : $$ = $2; 0.00 : 518b3b: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 518b3e: e9 3d 8e ff ff jmpq 511980 : * Break the ctext_row apart, merge individual expressions : * into the destination ResTargets. This is semantically : * equivalent to, and much cheaper to process than, the : * general case. : */ : if (list_length($2) != list_length($5)) 0.00 : 518b43: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518b4a: 48 8b bd 88 f4 ff ff mov -0xb78(%rbp),%rdi 0.00 : 518b51: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 518b55: 48 83 ef 18 sub $0x18,%rdi : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 518b59: 31 f6 xor %esi,%esi 0.00 : 518b5b: 48 85 c0 test %rax,%rax 0.00 : 518b5e: 74 03 je 518b63 0.00 : 518b60: 8b 70 04 mov 0x4(%rax),%esi 0.00 : 518b63: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 518b6a: 48 8b 11 mov (%rcx),%rdx 0.00 : 518b6d: 31 c9 xor %ecx,%ecx 0.00 : 518b6f: 48 85 d2 test %rdx,%rdx 0.00 : 518b72: 74 03 je 518b77 0.00 : 518b74: 8b 4a 04 mov 0x4(%rdx),%ecx 0.00 : 518b77: 39 ce cmp %ecx,%esi 0.00 : 518b79: 0f 85 f6 0a 01 00 jne 529675 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 518b7f: 31 f6 xor %esi,%esi 0.00 : 518b81: 48 85 c0 test %rax,%rax 0.00 : 518b84: 74 04 je 518b8a 0.00 : 518b86: 48 8b 70 08 mov 0x8(%rax),%rsi 0.00 : 518b8a: 48 85 d2 test %rdx,%rdx 0.00 : 518b8d: 74 2d je 518bbc : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("number of columns does not match number of values"), : parser_errposition(@5))); : forboth(col_cell, $2, val_cell, $5) 0.00 : 518b8f: 48 85 f6 test %rsi,%rsi 0.00 : 518b92: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 518b96: 74 24 je 518bbc 0.00 : 518b98: 48 85 c9 test %rcx,%rcx 0.00 : 518b9b: 74 1f je 518bbc : { : ResTarget *res_col = (ResTarget *) lfirst(col_cell); : Node *res_val = (Node *) lfirst(val_cell); : : res_col->val = res_val; 0.00 : 518b9d: 48 8b 16 mov (%rsi),%rdx 0.00 : 518ba0: 48 8b 01 mov (%rcx),%rax 0.00 : 518ba3: 48 89 42 18 mov %rax,0x18(%rdx) : if (list_length($2) != list_length($5)) : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("number of columns does not match number of values"), : parser_errposition(@5))); : forboth(col_cell, $2, val_cell, $5) 0.00 : 518ba7: 48 8b 76 08 mov 0x8(%rsi),%rsi 0.00 : 518bab: 48 8b 49 08 mov 0x8(%rcx),%rcx 0.00 : 518baf: 48 85 f6 test %rsi,%rsi 0.00 : 518bb2: 74 05 je 518bb9 0.00 : 518bb4: 48 85 c9 test %rcx,%rcx 0.00 : 518bb7: 75 e4 jne 518b9d 0.00 : 518bb9: 48 8b 07 mov (%rdi),%rax : Node *res_val = (Node *) lfirst(val_cell); : : res_col->val = res_val; : } : : $$ = $2; 0.00 : 518bbc: 49 89 c6 mov %rax,%r14 : } : | '(' set_target_list ')' '=' select_with_parens 0.00 : 518bbf: e9 bc 8d ff ff jmpq 511980 : ; : : single_set_clause: : set_target '=' ctext_expr : { : $$ = $1; 0.00 : 518bc4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518bcb: 4c 8b 73 f0 mov -0x10(%rbx),%r14 : $$->val = (Node *) $3; 0.00 : 518bcf: 48 8b 03 mov (%rbx),%rax 0.00 : 518bd2: 49 89 46 18 mov %rax,0x18(%r14) : } : ; 0.00 : 518bd6: e9 a5 8d ff ff jmpq 511980 : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } : ; : : set_clause: : single_set_clause { $$ = list_make1($1); } : | multiple_set_clause { $$ = $1; } 0.00 : 518bdb: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 518be2: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 518be5: e9 96 8d ff ff jmpq 511980 : set_clause { $$ = $1; } : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } : ; : : set_clause: : single_set_clause { $$ = list_make1($1); } 0.00 : 518bea: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 518bf1: 31 f6 xor %esi,%esi 0.00 : 518bf3: 48 8b 3a mov (%rdx),%rdi 0.00 : 518bf6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518bfd: e8 4e 8c 0c 00 callq 5e1850 : | multiple_set_clause { $$ = $1; } 0.00 : 518c02: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : set_clause { $$ = $1; } : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } : ; : : set_clause: : single_set_clause { $$ = list_make1($1); } 0.00 : 518c09: 49 89 c6 mov %rax,%r14 : | multiple_set_clause { $$ = $1; } 0.00 : 518c0c: e9 6f 8d ff ff jmpq 511980 : } : ; : : set_clause_list: : set_clause { $$ = $1; } : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } 0.00 : 518c11: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518c18: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 518c1c: 48 8b 36 mov (%rsi),%rsi 0.00 : 518c1f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518c26: e8 95 99 0c 00 callq 5e25c0 : ; 0.00 : 518c2b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : set_clause_list: : set_clause { $$ = $1; } : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } 0.00 : 518c32: 49 89 c6 mov %rax,%r14 : ; 0.00 : 518c35: e9 46 8d ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : set_clause_list: : set_clause { $$ = $1; } 0.00 : 518c3a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518c41: 4c 8b 33 mov (%rbx),%r14 : | set_clause_list ',' set_clause { $$ = list_concat($1,$3); } 0.00 : 518c44: e9 37 8d ff ff jmpq 511980 : SET set_clause_list : from_clause : where_or_current_clause : returning_clause : { : UpdateStmt *n = makeNode(UpdateStmt); 0.00 : 518c49: 48 8b 3d 10 1c 6a 00 mov 0x6a1c10(%rip),%rdi # bba860 0.00 : 518c50: be 38 00 00 00 mov $0x38,%esi 0.00 : 518c55: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518c5c: e8 af 01 28 00 callq 798e10 0.00 : 518c61: c7 00 c0 02 00 00 movl $0x2c0,(%rax) : n->relation = $3; 0.00 : 518c67: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->targetList = $5; : n->fromClause = $6; : n->whereClause = $7; : n->returningList = $8; : n->withClause = $1; : $$ = (Node *)n; 0.00 : 518c6e: 49 89 c6 mov %rax,%r14 : from_clause : where_or_current_clause : returning_clause : { : UpdateStmt *n = makeNode(UpdateStmt); : n->relation = $3; 0.00 : 518c71: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 518c75: 48 89 50 08 mov %rdx,0x8(%rax) : n->targetList = $5; 0.00 : 518c79: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 518c7d: 48 89 50 10 mov %rdx,0x10(%rax) : n->fromClause = $6; 0.00 : 518c81: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 518c85: 48 89 50 20 mov %rdx,0x20(%rax) : n->whereClause = $7; 0.00 : 518c89: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 518c8d: 48 89 50 18 mov %rdx,0x18(%rax) : n->returningList = $8; 0.00 : 518c91: 48 8b 11 mov (%rcx),%rdx 0.00 : 518c94: 48 89 50 28 mov %rdx,0x28(%rax) : n->withClause = $1; 0.00 : 518c98: 48 8b 51 c8 mov -0x38(%rcx),%rdx 0.00 : 518c9c: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *)n; : } : ; 0.00 : 518ca0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518ca7: e9 d4 8c ff ff jmpq 511980 : ; : : opt_nowait_or_skip: : NOWAIT { $$ = LockWaitError; } : | SKIP LOCKED { $$ = LockWaitSkip; } : | /*EMPTY*/ { $$ = LockWaitBlock; } 0.00 : 518cac: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 518cb3: ff ff ff 0.00 : 518cb6: 49 21 d6 and %rdx,%r14 : ; 0.00 : 518cb9: e9 c2 8c ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_nowait_or_skip: : NOWAIT { $$ = LockWaitError; } : | SKIP LOCKED { $$ = LockWaitSkip; } 0.00 : 518cbe: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 518cc5: ff ff ff 0.00 : 518cc8: 49 21 c6 and %rax,%r14 0.00 : 518ccb: 49 83 ce 01 or $0x1,%r14 : | /*EMPTY*/ { $$ = LockWaitBlock; } 0.00 : 518ccf: e9 ac 8c ff ff jmpq 511980 : opt_nowait: NOWAIT { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_nowait_or_skip: : NOWAIT { $$ = LockWaitError; } 0.00 : 518cd4: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 518cdb: ff ff ff 0.00 : 518cde: 49 21 f6 and %rsi,%r14 0.00 : 518ce1: 49 83 ce 02 or $0x2,%r14 : | SKIP LOCKED { $$ = LockWaitSkip; } 0.00 : 518ce5: e9 96 8c ff ff jmpq 511980 : | EXCLUSIVE { $$ = ExclusiveLock; } : | ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; } : ; : : opt_nowait: NOWAIT { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 518cea: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 518ced: e9 8e 8c ff ff jmpq 511980 : | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } : | EXCLUSIVE { $$ = ExclusiveLock; } : | ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; } : ; : : opt_nowait: NOWAIT { $$ = TRUE; } 0.00 : 518cf2: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 518cf5: e9 86 8c ff ff jmpq 511980 : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } : | SHARE { $$ = ShareLock; } : | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } : | EXCLUSIVE { $$ = ExclusiveLock; } : | ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; } 0.00 : 518cfa: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 518d01: ff ff ff 0.00 : 518d04: 49 21 de and %rbx,%r14 0.00 : 518d07: 49 83 ce 08 or $0x8,%r14 : ; 0.00 : 518d0b: e9 70 8c ff ff jmpq 511980 : | ROW SHARE { $$ = RowShareLock; } : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } : | SHARE { $$ = ShareLock; } : | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } : | EXCLUSIVE { $$ = ExclusiveLock; } 0.00 : 518d10: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 518d17: ff ff ff 0.00 : 518d1a: 49 21 ce and %rcx,%r14 0.00 : 518d1d: 49 83 ce 07 or $0x7,%r14 : | ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; } 0.00 : 518d21: e9 5a 8c ff ff jmpq 511980 : lock_type: ACCESS SHARE { $$ = AccessShareLock; } : | ROW SHARE { $$ = RowShareLock; } : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } : | SHARE { $$ = ShareLock; } : | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } 0.00 : 518d26: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 518d2d: ff ff ff 0.00 : 518d30: 49 21 d6 and %rdx,%r14 0.00 : 518d33: 49 83 ce 06 or $0x6,%r14 : | EXCLUSIVE { $$ = ExclusiveLock; } 0.00 : 518d37: e9 44 8c ff ff jmpq 511980 : : lock_type: ACCESS SHARE { $$ = AccessShareLock; } : | ROW SHARE { $$ = RowShareLock; } : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } : | SHARE { $$ = ShareLock; } 0.00 : 518d3c: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 518d43: ff ff ff 0.00 : 518d46: 49 21 c6 and %rax,%r14 0.00 : 518d49: 49 83 ce 05 or $0x5,%r14 : | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } 0.00 : 518d4d: e9 2e 8c ff ff jmpq 511980 : ; : : lock_type: ACCESS SHARE { $$ = AccessShareLock; } : | ROW SHARE { $$ = RowShareLock; } : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } 0.00 : 518d52: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 518d59: ff ff ff 0.00 : 518d5c: 49 21 f6 and %rsi,%r14 0.00 : 518d5f: 49 83 ce 04 or $0x4,%r14 : | SHARE { $$ = ShareLock; } 0.00 : 518d63: e9 18 8c ff ff jmpq 511980 : | /*EMPTY*/ { $$ = AccessExclusiveLock; } : ; : : lock_type: ACCESS SHARE { $$ = AccessShareLock; } : | ROW SHARE { $$ = RowShareLock; } : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } 0.00 : 518d68: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 518d6f: ff ff ff 0.00 : 518d72: 49 21 de and %rbx,%r14 0.00 : 518d75: 49 83 ce 03 or $0x3,%r14 : | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } 0.00 : 518d79: e9 02 8c ff ff jmpq 511980 : opt_lock: IN_P lock_type MODE { $$ = $2; } : | /*EMPTY*/ { $$ = AccessExclusiveLock; } : ; : : lock_type: ACCESS SHARE { $$ = AccessShareLock; } : | ROW SHARE { $$ = RowShareLock; } 0.00 : 518d7e: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 518d85: ff ff ff 0.00 : 518d88: 49 21 ce and %rcx,%r14 0.00 : 518d8b: 49 83 ce 02 or $0x2,%r14 : | ROW EXCLUSIVE { $$ = RowExclusiveLock; } 0.00 : 518d8f: e9 ec 8b ff ff jmpq 511980 : : opt_lock: IN_P lock_type MODE { $$ = $2; } : | /*EMPTY*/ { $$ = AccessExclusiveLock; } : ; : : lock_type: ACCESS SHARE { $$ = AccessShareLock; } 0.00 : 518d94: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 518d9b: ff ff ff 0.00 : 518d9e: 49 21 d6 and %rdx,%r14 0.00 : 518da1: 49 83 ce 01 or $0x1,%r14 : | ROW SHARE { $$ = RowShareLock; } 0.00 : 518da5: e9 d6 8b ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_lock: IN_P lock_type MODE { $$ = $2; } : | /*EMPTY*/ { $$ = AccessExclusiveLock; } 0.00 : 518daa: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 518db1: ff ff ff 0.00 : 518db4: 49 21 c6 and %rax,%r14 0.00 : 518db7: 49 83 ce 08 or $0x8,%r14 : ; 0.00 : 518dbb: e9 c0 8b ff ff jmpq 511980 : n->nowait = $5; : $$ = (Node *)n; : } : ; : : opt_lock: IN_P lock_type MODE { $$ = $2; } 0.00 : 518dc0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518dc7: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 518dce: ff ff ff 0.00 : 518dd1: 49 21 f6 and %rsi,%r14 0.00 : 518dd4: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 518dd7: 49 09 c6 or %rax,%r14 : | /*EMPTY*/ { $$ = AccessExclusiveLock; } 0.00 : 518dda: e9 a1 8b ff ff jmpq 511980 : * : *****************************************************************************/ : : LockStmt: LOCK_P opt_table relation_expr_list opt_lock opt_nowait : { : LockStmt *n = makeNode(LockStmt); 0.00 : 518ddf: 48 8b 3d 7a 1a 6a 00 mov 0x6a1a7a(%rip),%rdi # bba860 0.00 : 518de6: be 18 00 00 00 mov $0x18,%esi 0.00 : 518deb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518df2: e8 19 00 28 00 callq 798e10 0.00 : 518df7: c7 00 ee 02 00 00 movl $0x2ee,(%rax) : : n->relations = $3; 0.00 : 518dfd: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->mode = $4; : n->nowait = $5; : $$ = (Node *)n; 0.00 : 518e04: 49 89 c6 mov %rax,%r14 : : LockStmt: LOCK_P opt_table relation_expr_list opt_lock opt_nowait : { : LockStmt *n = makeNode(LockStmt); : : n->relations = $3; 0.00 : 518e07: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 518e0b: 48 89 50 08 mov %rdx,0x8(%rax) : n->mode = $4; 0.00 : 518e0f: 8b 51 f8 mov -0x8(%rcx),%edx 0.00 : 518e12: 89 50 10 mov %edx,0x10(%rax) : n->nowait = $5; 0.00 : 518e15: 0f b6 11 movzbl (%rcx),%edx 0.00 : 518e18: 88 50 14 mov %dl,0x14(%rax) : $$ = (Node *)n; : } : ; 0.00 : 518e1b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518e22: e9 59 8b ff ff jmpq 511980 : } : ; : : using_clause: : USING from_list { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 518e27: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 518e2a: e9 51 8b ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : using_clause: : USING from_list { $$ = $2; } 0.00 : 518e2f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 518e36: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 518e39: e9 42 8b ff ff jmpq 511980 : *****************************************************************************/ : : DeleteStmt: opt_with_clause DELETE_P FROM relation_expr_opt_alias : using_clause where_or_current_clause returning_clause : { : DeleteStmt *n = makeNode(DeleteStmt); 0.00 : 518e3e: 48 8b 3d 1b 1a 6a 00 mov 0x6a1a1b(%rip),%rdi # bba860 0.00 : 518e45: be 30 00 00 00 mov $0x30,%esi 0.00 : 518e4a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518e51: e8 ba ff 27 00 callq 798e10 0.00 : 518e56: c7 00 bf 02 00 00 movl $0x2bf,(%rax) : n->relation = $4; 0.00 : 518e5c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->usingClause = $5; : n->whereClause = $6; : n->returningList = $7; : n->withClause = $1; : $$ = (Node *)n; 0.00 : 518e63: 49 89 c6 mov %rax,%r14 : : DeleteStmt: opt_with_clause DELETE_P FROM relation_expr_opt_alias : using_clause where_or_current_clause returning_clause : { : DeleteStmt *n = makeNode(DeleteStmt); : n->relation = $4; 0.00 : 518e66: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 518e6a: 48 89 50 08 mov %rdx,0x8(%rax) : n->usingClause = $5; 0.00 : 518e6e: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 518e72: 48 89 50 10 mov %rdx,0x10(%rax) : n->whereClause = $6; 0.00 : 518e76: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 518e7a: 48 89 50 18 mov %rdx,0x18(%rax) : n->returningList = $7; 0.00 : 518e7e: 48 8b 13 mov (%rbx),%rdx 0.00 : 518e81: 48 89 50 20 mov %rdx,0x20(%rax) : n->withClause = $1; 0.00 : 518e85: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 518e89: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 518e8d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518e94: e9 e7 8a ff ff jmpq 511980 : } : ; : : returning_clause: : RETURNING target_list { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 518e99: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 518e9c: e9 df 8a ff ff jmpq 511980 : $$->location = @1; : } : ; : : returning_clause: : RETURNING target_list { $$ = $2; } 0.00 : 518ea1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 518ea8: 4c 8b 31 mov (%rcx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 518eab: e9 d0 8a ff ff jmpq 511980 : ; : : insert_column_item: : ColId opt_indirection : { : $$ = makeNode(ResTarget); 0.00 : 518eb0: 48 8b 3d a9 19 6a 00 mov 0x6a19a9(%rip),%rdi # bba860 0.00 : 518eb7: be 28 00 00 00 mov $0x28,%esi 0.00 : 518ebc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518ec3: e8 48 ff 27 00 callq 798e10 0.00 : 518ec8: c7 00 8d 03 00 00 movl $0x38d,(%rax) : $$->name = $1; 0.00 : 518ece: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : ; : : insert_column_item: : ColId opt_indirection : { : $$ = makeNode(ResTarget); 0.00 : 518ed5: 49 89 c6 mov %rax,%r14 : $$->name = $1; 0.00 : 518ed8: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 518edc: 49 89 46 08 mov %rax,0x8(%r14) : $$->indirection = check_indirection($2, yyscanner); 0.00 : 518ee0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 518ee7: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 518eee: 48 8b 38 mov (%rax),%rdi 0.00 : 518ef1: e8 ca 4e ff ff callq 50ddc0 : $$->val = NULL; 0.00 : 518ef6: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 518efd: 00 : insert_column_item: : ColId opt_indirection : { : $$ = makeNode(ResTarget); : $$->name = $1; : $$->indirection = check_indirection($2, yyscanner); 0.00 : 518efe: 49 89 46 10 mov %rax,0x10(%r14) : $$->val = NULL; : $$->location = @1; 0.00 : 518f02: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 518f09: 8b 42 fc mov -0x4(%rdx),%eax 0.00 : 518f0c: 41 89 46 20 mov %eax,0x20(%r14) : } : ; 0.00 : 518f10: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518f17: e9 64 8a ff ff jmpq 511980 : : insert_column_list: : insert_column_item : { $$ = list_make1($1); } : | insert_column_list ',' insert_column_item : { $$ = lappend($1, $3); } 0.00 : 518f1c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 518f23: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 518f27: 48 8b 33 mov (%rbx),%rsi 0.00 : 518f2a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518f31: e8 4a 8f 0c 00 callq 5e1e80 : ; 0.00 : 518f36: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : insert_column_list: : insert_column_item : { $$ = list_make1($1); } : | insert_column_list ',' insert_column_item : { $$ = lappend($1, $3); } 0.00 : 518f3d: 49 89 c6 mov %rax,%r14 : ; 0.00 : 518f40: e9 3b 8a ff ff jmpq 511980 : } : ; : : insert_column_list: : insert_column_item : { $$ = list_make1($1); } 0.00 : 518f45: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 518f4c: 31 f6 xor %esi,%esi 0.00 : 518f4e: 48 8b 39 mov (%rcx),%rdi 0.00 : 518f51: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518f58: e8 f3 88 0c 00 callq 5e1850 : | insert_column_list ',' insert_column_item 0.00 : 518f5d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : insert_column_list: : insert_column_item : { $$ = list_make1($1); } 0.00 : 518f64: 49 89 c6 mov %rax,%r14 : | insert_column_list ',' insert_column_item 0.00 : 518f67: e9 14 8a ff ff jmpq 511980 : $$->cols = $2; : $$->selectStmt = $4; : } : | DEFAULT VALUES : { : $$ = makeNode(InsertStmt); 0.00 : 518f6c: 48 8b 3d ed 18 6a 00 mov 0x6a18ed(%rip),%rdi # bba860 0.00 : 518f73: be 30 00 00 00 mov $0x30,%esi 0.00 : 518f78: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518f7f: e8 8c fe 27 00 callq 798e10 0.00 : 518f84: c7 00 be 02 00 00 movl $0x2be,(%rax) : $$->cols = NIL; 0.00 : 518f8a: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 518f91: 00 : $$->cols = $2; : $$->selectStmt = $4; : } : | DEFAULT VALUES : { : $$ = makeNode(InsertStmt); 0.00 : 518f92: 49 89 c6 mov %rax,%r14 : $$->cols = NIL; : $$->selectStmt = NULL; 0.00 : 518f95: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 518f9c: 00 : } : ; 0.00 : 518f9d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518fa4: e9 d7 89 ff ff jmpq 511980 : $$->cols = NIL; : $$->selectStmt = $1; : } : | '(' insert_column_list ')' SelectStmt : { : $$ = makeNode(InsertStmt); 0.00 : 518fa9: 48 8b 3d b0 18 6a 00 mov 0x6a18b0(%rip),%rdi # bba860 0.00 : 518fb0: be 30 00 00 00 mov $0x30,%esi 0.00 : 518fb5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518fbc: e8 4f fe 27 00 callq 798e10 0.00 : 518fc1: c7 00 be 02 00 00 movl $0x2be,(%rax) : $$->cols = $2; 0.00 : 518fc7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$->cols = NIL; : $$->selectStmt = $1; : } : | '(' insert_column_list ')' SelectStmt : { : $$ = makeNode(InsertStmt); 0.00 : 518fce: 49 89 c6 mov %rax,%r14 : $$->cols = $2; 0.00 : 518fd1: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 518fd5: 49 89 46 10 mov %rax,0x10(%r14) : $$->selectStmt = $4; 0.00 : 518fd9: 48 8b 02 mov (%rdx),%rax 0.00 : 518fdc: 49 89 46 18 mov %rax,0x18(%r14) : } : | DEFAULT VALUES 0.00 : 518fe0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 518fe7: e9 94 89 ff ff jmpq 511980 : ; : : insert_rest: : SelectStmt : { : $$ = makeNode(InsertStmt); 0.00 : 518fec: 48 8b 3d 6d 18 6a 00 mov 0x6a186d(%rip),%rdi # bba860 0.00 : 518ff3: be 30 00 00 00 mov $0x30,%esi 0.00 : 518ff8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 518fff: e8 0c fe 27 00 callq 798e10 0.00 : 519004: c7 00 be 02 00 00 movl $0x2be,(%rax) : $$->cols = NIL; 0.00 : 51900a: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 519011: 00 : ; : : insert_rest: : SelectStmt : { : $$ = makeNode(InsertStmt); 0.00 : 519012: 49 89 c6 mov %rax,%r14 : $$->cols = NIL; : $$->selectStmt = $1; 0.00 : 519015: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51901c: 48 8b 06 mov (%rsi),%rax 0.00 : 51901f: 49 89 46 18 mov %rax,0x18(%r14) : } : | '(' insert_column_list ')' SelectStmt 0.00 : 519023: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51902a: e9 51 89 ff ff jmpq 511980 : *****************************************************************************/ : : InsertStmt: : opt_with_clause INSERT INTO qualified_name insert_rest returning_clause : { : $5->relation = $4; 0.00 : 51902f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519036: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 51903a: 48 8b 43 f0 mov -0x10(%rbx),%rax 0.00 : 51903e: 48 89 42 08 mov %rax,0x8(%rdx) : $5->returningList = $6; 0.00 : 519042: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 519046: 48 8b 03 mov (%rbx),%rax 0.00 : 519049: 48 89 42 20 mov %rax,0x20(%rdx) : $5->withClause = $1; 0.00 : 51904d: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 519051: 48 8b 43 d8 mov -0x28(%rbx),%rax 0.00 : 519055: 48 89 42 28 mov %rax,0x28(%rdx) : $$ = (Node *) $5; 0.00 : 519059: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : } : ; 0.00 : 51905d: e9 1e 89 ff ff jmpq 511980 : n->name = NULL; : $$ = (Node *) n; : } : | DEALLOCATE PREPARE ALL : { : DeallocateStmt *n = makeNode(DeallocateStmt); 0.00 : 519062: 48 8b 3d f7 17 6a 00 mov 0x6a17f7(%rip),%rdi # bba860 0.00 : 519069: be 10 00 00 00 mov $0x10,%esi 0.00 : 51906e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519075: e8 96 fd 27 00 callq 798e10 0.00 : 51907a: c7 00 fd 02 00 00 movl $0x2fd,(%rax) : n->name = NULL; 0.00 : 519080: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 519087: 00 : $$ = (Node *) n; 0.00 : 519088: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51908b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519092: e9 e9 88 ff ff jmpq 511980 : n->name = $3; : $$ = (Node *) n; : } : | DEALLOCATE ALL : { : DeallocateStmt *n = makeNode(DeallocateStmt); 0.00 : 519097: 48 8b 3d c2 17 6a 00 mov 0x6a17c2(%rip),%rdi # bba860 0.00 : 51909e: be 10 00 00 00 mov $0x10,%esi 0.00 : 5190a3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5190aa: e8 61 fd 27 00 callq 798e10 0.00 : 5190af: c7 00 fd 02 00 00 movl $0x2fd,(%rax) : n->name = NULL; 0.00 : 5190b5: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5190bc: 00 : $$ = (Node *) n; 0.00 : 5190bd: 49 89 c6 mov %rax,%r14 : } : | DEALLOCATE PREPARE ALL 0.00 : 5190c0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5190c7: e9 b4 88 ff ff jmpq 511980 : n->name = $2; : $$ = (Node *) n; : } : | DEALLOCATE PREPARE name : { : DeallocateStmt *n = makeNode(DeallocateStmt); 0.00 : 5190cc: 48 8b 3d 8d 17 6a 00 mov 0x6a178d(%rip),%rdi # bba860 0.00 : 5190d3: be 10 00 00 00 mov $0x10,%esi 0.00 : 5190d8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5190df: e8 2c fd 27 00 callq 798e10 0.00 : 5190e4: c7 00 fd 02 00 00 movl $0x2fd,(%rax) : n->name = $3; 0.00 : 5190ea: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *) n; 0.00 : 5190f1: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | DEALLOCATE PREPARE name : { : DeallocateStmt *n = makeNode(DeallocateStmt); : n->name = $3; 0.00 : 5190f4: 48 8b 11 mov (%rcx),%rdx 0.00 : 5190f7: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *) n; : } : | DEALLOCATE ALL 0.00 : 5190fb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519102: e9 79 88 ff ff jmpq 511980 : * : *****************************************************************************/ : : DeallocateStmt: DEALLOCATE name : { : DeallocateStmt *n = makeNode(DeallocateStmt); 0.00 : 519107: 48 8b 3d 52 17 6a 00 mov 0x6a1752(%rip),%rdi # bba860 0.00 : 51910e: be 10 00 00 00 mov $0x10,%esi 0.00 : 519113: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51911a: e8 f1 fc 27 00 callq 798e10 0.00 : 51911f: c7 00 fd 02 00 00 movl $0x2fd,(%rax) : n->name = $2; 0.00 : 519125: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$ = (Node *) n; 0.00 : 51912c: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : DeallocateStmt: DEALLOCATE name : { : DeallocateStmt *n = makeNode(DeallocateStmt); : n->name = $2; 0.00 : 51912f: 48 8b 16 mov (%rsi),%rdx 0.00 : 519132: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *) n; : } : | DEALLOCATE PREPARE name 0.00 : 519136: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51913d: e9 3e 88 ff ff jmpq 511980 : $$ = (Node *) ctas; : } : ; : : execute_param_clause: '(' expr_list ')' { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 519142: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 519145: e9 36 88 ff ff jmpq 511980 : $4->skipData = !($9); : $$ = (Node *) ctas; : } : ; : : execute_param_clause: '(' expr_list ')' { $$ = $2; } 0.00 : 51914a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519151: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 519155: e9 26 88 ff ff jmpq 511980 : $$ = (Node *) n; : } : | CREATE OptTemp TABLE create_as_target AS : EXECUTE name execute_param_clause opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); 0.00 : 51915a: 48 8b 3d ff 16 6a 00 mov 0x6a16ff(%rip),%rdi # bba860 0.00 : 519161: be 20 00 00 00 mov $0x20,%esi 0.00 : 519166: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51916d: e8 9e fc 27 00 callq 798e10 0.00 : 519172: c7 00 e3 02 00 00 movl $0x2e3,(%rax) : ExecuteStmt *n = makeNode(ExecuteStmt); 0.00 : 519178: 48 8b 3d e1 16 6a 00 mov 0x6a16e1(%rip),%rdi # bba860 0.00 : 51917f: be 18 00 00 00 mov $0x18,%esi : $$ = (Node *) n; : } : | CREATE OptTemp TABLE create_as_target AS : EXECUTE name execute_param_clause opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); 0.00 : 519184: 48 89 c3 mov %rax,%rbx : ctas->relkind = OBJECT_TABLE; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $4->rel->relpersistence = $2; : $4->skipData = !($9); : $$ = (Node *) ctas; 0.00 : 519187: 49 89 de mov %rbx,%r14 : } : | CREATE OptTemp TABLE create_as_target AS : EXECUTE name execute_param_clause opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ExecuteStmt *n = makeNode(ExecuteStmt); 0.00 : 51918a: e8 81 fc 27 00 callq 798e10 0.00 : 51918f: c7 00 fc 02 00 00 movl $0x2fc,(%rax) : n->name = $7; 0.00 : 519195: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51919c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5191a0: 48 89 50 08 mov %rdx,0x8(%rax) : n->params = $8; 0.00 : 5191a4: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5191a8: 48 89 50 10 mov %rdx,0x10(%rax) : ctas->query = (Node *) n; 0.00 : 5191ac: 48 89 43 08 mov %rax,0x8(%rbx) : ctas->into = $4; 0.00 : 5191b0: 48 8b 41 d8 mov -0x28(%rcx),%rax : ctas->relkind = OBJECT_TABLE; 0.00 : 5191b4: c7 43 18 1b 00 00 00 movl $0x1b,0x18(%rbx) : ctas->is_select_into = false; 0.00 : 5191bb: c6 43 1c 00 movb $0x0,0x1c(%rbx) : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ExecuteStmt *n = makeNode(ExecuteStmt); : n->name = $7; : n->params = $8; : ctas->query = (Node *) n; : ctas->into = $4; 0.00 : 5191bf: 48 89 43 10 mov %rax,0x10(%rbx) : ctas->relkind = OBJECT_TABLE; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $4->rel->relpersistence = $2; 0.00 : 5191c3: 48 8b 41 d8 mov -0x28(%rcx),%rax 0.00 : 5191c7: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 5191cb: 8b 41 c8 mov -0x38(%rcx),%eax 0.00 : 5191ce: 88 42 24 mov %al,0x24(%rdx) : $4->skipData = !($9); 0.00 : 5191d1: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 5191d4: 48 8b 41 d8 mov -0x28(%rcx),%rax 0.00 : 5191d8: 0f 94 40 38 sete 0x38(%rax) : $$ = (Node *) ctas; : } : ; 0.00 : 5191dc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5191e3: e9 98 87 ff ff jmpq 511980 : * : *****************************************************************************/ : : ExecuteStmt: EXECUTE name execute_param_clause : { : ExecuteStmt *n = makeNode(ExecuteStmt); 0.00 : 5191e8: 48 8b 3d 71 16 6a 00 mov 0x6a1671(%rip),%rdi # bba860 0.00 : 5191ef: be 18 00 00 00 mov $0x18,%esi 0.00 : 5191f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5191fb: e8 10 fc 27 00 callq 798e10 0.00 : 519200: c7 00 fc 02 00 00 movl $0x2fc,(%rax) : n->name = $2; 0.00 : 519206: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->params = $3; : $$ = (Node *) n; 0.00 : 51920d: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : ExecuteStmt: EXECUTE name execute_param_clause : { : ExecuteStmt *n = makeNode(ExecuteStmt); : n->name = $2; 0.00 : 519210: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 519214: 48 89 50 08 mov %rdx,0x8(%rax) : n->params = $3; 0.00 : 519218: 48 8b 16 mov (%rsi),%rdx 0.00 : 51921b: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : | CREATE OptTemp TABLE create_as_target AS 0.00 : 51921f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519226: e9 55 87 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : prep_type_clause: '(' type_list ')' { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 51922b: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51922e: e9 4d 87 ff ff jmpq 511980 : n->query = $5; : $$ = (Node *) n; : } : ; : : prep_type_clause: '(' type_list ')' { $$ = $2; } 0.00 : 519233: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51923a: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 51923e: e9 3d 87 ff ff jmpq 511980 : * : *****************************************************************************/ : : PrepareStmt: PREPARE name prep_type_clause AS PreparableStmt : { : PrepareStmt *n = makeNode(PrepareStmt); 0.00 : 519243: 48 8b 3d 16 16 6a 00 mov 0x6a1616(%rip),%rdi # bba860 0.00 : 51924a: be 20 00 00 00 mov $0x20,%esi 0.00 : 51924f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519256: e8 b5 fb 27 00 callq 798e10 0.00 : 51925b: c7 00 fb 02 00 00 movl $0x2fb,(%rax) : n->name = $2; 0.00 : 519261: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->argtypes = $3; : n->query = $5; : $$ = (Node *) n; 0.00 : 519268: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : PrepareStmt: PREPARE name prep_type_clause AS PreparableStmt : { : PrepareStmt *n = makeNode(PrepareStmt); : n->name = $2; 0.00 : 51926b: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51926f: 48 89 50 08 mov %rdx,0x8(%rax) : n->argtypes = $3; 0.00 : 519273: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 519277: 48 89 50 10 mov %rdx,0x10(%rax) : n->query = $5; 0.00 : 51927b: 48 8b 11 mov (%rcx),%rdx 0.00 : 51927e: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 519282: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519289: e9 f2 86 ff ff jmpq 511980 : ; : : explain_option_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 51928e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 519291: e9 ea 86 ff ff jmpq 511980 : | analyze_keyword { $$ = "analyze"; } : ; : : explain_option_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } 0.00 : 519296: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51929d: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 5192a0: e9 db 86 ff ff jmpq 511980 : NonReservedWord { $$ = $1; } : | analyze_keyword { $$ = "analyze"; } : ; : : explain_option_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 5192a5: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5192ac: 48 8b 3b mov (%rbx),%rdi 0.00 : 5192af: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5192b6: e8 35 64 0e 00 callq 5ff6f0 : | NumericOnly { $$ = (Node *) $1; } 0.00 : 5192bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : NonReservedWord { $$ = $1; } : | analyze_keyword { $$ = "analyze"; } : ; : : explain_option_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 5192c2: 49 89 c6 mov %rax,%r14 : | NumericOnly { $$ = (Node *) $1; } 0.00 : 5192c5: e9 b6 86 ff ff jmpq 511980 : } : ; : : explain_option_name: : NonReservedWord { $$ = $1; } : | analyze_keyword { $$ = "analyze"; } 0.00 : 5192ca: 41 be 47 8e 8e 00 mov $0x8e8e47,%r14d : ; 0.00 : 5192d0: e9 ab 86 ff ff jmpq 511980 : $$ = makeDefElem($1, $2); : } : ; : : explain_option_name: : NonReservedWord { $$ = $1; } 0.00 : 5192d5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5192dc: 4c 8b 31 mov (%rcx),%r14 : | analyze_keyword { $$ = "analyze"; } 0.00 : 5192df: e9 9c 86 ff ff jmpq 511980 : ; : : explain_option_elem: : explain_option_name explain_option_arg : { : $$ = makeDefElem($1, $2); 0.00 : 5192e4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5192eb: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 5192ef: 48 8b 32 mov (%rdx),%rsi 0.00 : 5192f2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5192f9: e8 02 82 0d 00 callq 5f1500 : } : ; 0.00 : 5192fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : explain_option_elem: : explain_option_name explain_option_arg : { : $$ = makeDefElem($1, $2); 0.00 : 519305: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 519308: e9 73 86 ff ff jmpq 511980 : { : $$ = list_make1($1); : } : | explain_option_list ',' explain_option_elem : { : $$ = lappend($1, $3); 0.00 : 51930d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 519314: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 519318: 48 8b 36 mov (%rsi),%rsi 0.00 : 51931b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519322: e8 59 8b 0c 00 callq 5e1e80 : } : ; 0.00 : 519327: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | explain_option_list ',' explain_option_elem : { : $$ = lappend($1, $3); 0.00 : 51932e: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 519331: e9 4a 86 ff ff jmpq 511980 : ; : : explain_option_list: : explain_option_elem : { : $$ = list_make1($1); 0.00 : 519336: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51933d: 31 f6 xor %esi,%esi 0.00 : 51933f: 48 8b 3b mov (%rbx),%rdi 0.00 : 519342: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519349: e8 02 85 0c 00 callq 5e1850 : } : | explain_option_list ',' explain_option_elem 0.00 : 51934e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : explain_option_list: : explain_option_elem : { : $$ = list_make1($1); 0.00 : 519355: 49 89 c6 mov %rax,%r14 : } : | explain_option_list ',' explain_option_elem 0.00 : 519358: e9 23 86 ff ff jmpq 511980 : n->options = list_make1(makeDefElem("verbose", NULL)); : $$ = (Node *) n; : } : | EXPLAIN '(' explain_option_list ')' ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 51935d: 48 8b 3d fc 14 6a 00 mov 0x6a14fc(%rip),%rdi # bba860 0.00 : 519364: be 18 00 00 00 mov $0x18,%esi 0.00 : 519369: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519370: e8 9b fa 27 00 callq 798e10 0.00 : 519375: c7 00 e2 02 00 00 movl $0x2e2,(%rax) : n->query = $5; 0.00 : 51937b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->options = $3; : $$ = (Node *) n; 0.00 : 519382: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | EXPLAIN '(' explain_option_list ')' ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $5; 0.00 : 519385: 48 8b 11 mov (%rcx),%rdx 0.00 : 519388: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $3; 0.00 : 51938c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 519390: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 519394: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51939b: e9 e0 85 ff ff jmpq 511980 : makeDefElem("verbose", NULL)); : $$ = (Node *) n; : } : | EXPLAIN VERBOSE ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 5193a0: 48 8b 3d b9 14 6a 00 mov 0x6a14b9(%rip),%rdi # bba860 0.00 : 5193a7: be 18 00 00 00 mov $0x18,%esi 0.00 : 5193ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5193b3: e8 58 fa 27 00 callq 798e10 0.00 : 5193b8: c7 00 e2 02 00 00 movl $0x2e2,(%rax) : n->query = $3; 0.00 : 5193be: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : makeDefElem("verbose", NULL)); : $$ = (Node *) n; : } : | EXPLAIN VERBOSE ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 5193c5: 48 89 c3 mov %rax,%rbx : n->query = $3; : n->options = list_make1(makeDefElem("verbose", NULL)); 0.00 : 5193c8: 31 f6 xor %esi,%esi 0.00 : 5193ca: bf ba b4 8d 00 mov $0x8db4ba,%edi : $$ = (Node *) n; 0.00 : 5193cf: 49 89 de mov %rbx,%r14 : $$ = (Node *) n; : } : | EXPLAIN VERBOSE ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $3; 0.00 : 5193d2: 48 8b 02 mov (%rdx),%rax 0.00 : 5193d5: 48 89 43 08 mov %rax,0x8(%rbx) : n->options = list_make1(makeDefElem("verbose", NULL)); 0.00 : 5193d9: e8 22 81 0d 00 callq 5f1500 0.00 : 5193de: 31 f6 xor %esi,%esi 0.00 : 5193e0: 48 89 c7 mov %rax,%rdi 0.00 : 5193e3: e8 68 84 0c 00 callq 5e1850 0.00 : 5193e8: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = (Node *) n; : } : | EXPLAIN '(' explain_option_list ')' ExplainableStmt 0.00 : 5193ec: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5193f3: e9 88 85 ff ff jmpq 511980 : n->options = NIL; : $$ = (Node *) n; : } : | EXPLAIN analyze_keyword opt_verbose ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 5193f8: 48 8b 3d 61 14 6a 00 mov 0x6a1461(%rip),%rdi # bba860 0.00 : 5193ff: be 18 00 00 00 mov $0x18,%esi 0.00 : 519404: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51940b: e8 00 fa 27 00 callq 798e10 0.00 : 519410: c7 00 e2 02 00 00 movl $0x2e2,(%rax) : n->query = $4; 0.00 : 519416: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->options = NIL; : $$ = (Node *) n; : } : | EXPLAIN analyze_keyword opt_verbose ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 51941d: 48 89 c3 mov %rax,%rbx : n->query = $4; : n->options = list_make1(makeDefElem("analyze", NULL)); 0.00 : 519420: bf 47 8e 8e 00 mov $0x8e8e47,%edi : $$ = (Node *) n; : } : | EXPLAIN analyze_keyword opt_verbose ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $4; 0.00 : 519425: 48 8b 06 mov (%rsi),%rax : n->options = list_make1(makeDefElem("analyze", NULL)); 0.00 : 519428: 31 f6 xor %esi,%esi : $$ = (Node *) n; : } : | EXPLAIN analyze_keyword opt_verbose ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $4; 0.00 : 51942a: 48 89 43 08 mov %rax,0x8(%rbx) : n->options = list_make1(makeDefElem("analyze", NULL)); 0.00 : 51942e: e8 cd 80 0d 00 callq 5f1500 0.00 : 519433: 31 f6 xor %esi,%esi 0.00 : 519435: 48 89 c7 mov %rax,%rdi 0.00 : 519438: e8 13 84 0c 00 callq 5e1850 0.00 : 51943d: 48 89 43 10 mov %rax,0x10(%rbx) : if ($3) 0.00 : 519441: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519448: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51944f: 80 78 f8 00 cmpb $0x0,-0x8(%rax) 0.00 : 519453: 74 23 je 519478 : n->options = lappend(n->options, 0.00 : 519455: 31 f6 xor %esi,%esi 0.00 : 519457: bf ba b4 8d 00 mov $0x8db4ba,%edi 0.00 : 51945c: e8 9f 80 0d 00 callq 5f1500 0.00 : 519461: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 519465: 48 89 c6 mov %rax,%rsi 0.00 : 519468: e8 13 8a 0c 00 callq 5e1e80 0.00 : 51946d: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 519471: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : makeDefElem("verbose", NULL)); : $$ = (Node *) n; 0.00 : 519478: 49 89 de mov %rbx,%r14 : } : | EXPLAIN VERBOSE ExplainableStmt 0.00 : 51947b: e9 00 85 ff ff jmpq 511980 : *****************************************************************************/ : : ExplainStmt: : EXPLAIN ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); 0.00 : 519480: 48 8b 3d d9 13 6a 00 mov 0x6a13d9(%rip),%rdi # bba860 0.00 : 519487: be 18 00 00 00 mov $0x18,%esi 0.00 : 51948c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519493: e8 78 f9 27 00 callq 798e10 0.00 : 519498: c7 00 e2 02 00 00 movl $0x2e2,(%rax) : n->query = $2; 0.00 : 51949e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->options = NIL; : $$ = (Node *) n; 0.00 : 5194a5: 49 89 c6 mov %rax,%r14 : : ExplainStmt: : EXPLAIN ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $2; 0.00 : 5194a8: 48 8b 11 mov (%rcx),%rdx : n->options = NIL; 0.00 : 5194ab: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5194b2: 00 : : ExplainStmt: : EXPLAIN ExplainableStmt : { : ExplainStmt *n = makeNode(ExplainStmt); : n->query = $2; 0.00 : 5194b3: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = NIL; : $$ = (Node *) n; : } : | EXPLAIN analyze_keyword opt_verbose ExplainableStmt 0.00 : 5194b7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5194be: e9 bd 84 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_name_list: : '(' name_list ')' { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5194c3: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5194c6: e9 b5 84 ff ff jmpq 511980 : opt_freeze: FREEZE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_name_list: : '(' name_list ')' { $$ = $2; } 0.00 : 5194cb: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5194d2: 4c 8b 70 f8 mov -0x8(%rax),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5194d6: e9 a5 84 ff ff jmpq 511980 : opt_full: FULL { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_freeze: FREEZE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 5194db: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 5194de: e9 9d 84 ff ff jmpq 511980 : : opt_full: FULL { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_freeze: FREEZE { $$ = TRUE; } 0.00 : 5194e3: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 5194e6: e9 95 84 ff ff jmpq 511980 : VERBOSE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_full: FULL { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 5194eb: 45 30 f6 xor %r14b,%r14b 0.00 : 5194ee: 66 90 xchg %ax,%ax : ; 0.00 : 5194f0: e9 8b 84 ff ff jmpq 511980 : opt_verbose: : VERBOSE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_full: FULL { $$ = TRUE; } 0.00 : 5194f5: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 5194f8: e9 83 84 ff ff jmpq 511980 : | ANALYSE /* British */ {} : ; : : opt_verbose: : VERBOSE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 5194fd: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 519500: e9 7b 84 ff ff jmpq 511980 : ANALYZE {} : | ANALYSE /* British */ {} : ; : : opt_verbose: : VERBOSE { $$ = TRUE; } 0.00 : 519505: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 519508: e9 73 84 ff ff jmpq 511980 : $$ = makeNullAConst(@1); : } : ; : : Iconst: ICONST { $$ = $1; }; : Sconst: SCONST { $$ = $1; }; 0.00 : 51950d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519514: 4c 8b 33 mov (%rbx),%r14 : RoleId: NonReservedWord { $$ = $1; }; 0.00 : 519517: e9 64 84 ff ff jmpq 511980 0.00 : 51951c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 519523: 4c 8b 36 mov (%rsi),%r14 : 0.00 : 519526: e9 55 84 ff ff jmpq 511980 : n->va_cols = NIL; : $$ = (Node *)n; : } : | analyze_keyword opt_verbose qualified_name opt_name_list : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 51952b: 48 8b 3d 2e 13 6a 00 mov 0x6a132e(%rip),%rdi # bba860 0.00 : 519532: be 28 00 00 00 mov $0x28,%esi 0.00 : 519537: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51953e: e8 cd f8 27 00 callq 798e10 0.00 : 519543: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_ANALYZE; 0.00 : 519549: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->va_cols = NIL; : $$ = (Node *)n; : } : | analyze_keyword opt_verbose qualified_name opt_name_list : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 519550: 48 89 c2 mov %rax,%rdx : n->options = VACOPT_ANALYZE; : if ($2) 0.00 : 519553: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51955a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519561: 80 7b f0 00 cmpb $0x0,-0x10(%rbx) 0.00 : 519565: 74 07 je 51956e : n->options |= VACOPT_VERBOSE; 0.00 : 519567: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->freeze_min_age = -1; 0.00 : 51956e: c7 42 08 ff ff ff ff movl $0xffffffff,0x8(%rdx) : n->freeze_table_age = -1; 0.00 : 519575: c7 42 0c ff ff ff ff movl $0xffffffff,0xc(%rdx) : n->multixact_freeze_min_age = -1; : n->multixact_freeze_table_age = -1; : n->relation = $3; : n->va_cols = $4; : $$ = (Node *)n; 0.00 : 51957c: 49 89 d6 mov %rdx,%r14 : n->options = VACOPT_ANALYZE; : if ($2) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = -1; : n->freeze_table_age = -1; : n->multixact_freeze_min_age = -1; 0.00 : 51957f: c7 42 10 ff ff ff ff movl $0xffffffff,0x10(%rdx) : n->multixact_freeze_table_age = -1; 0.00 : 519586: c7 42 14 ff ff ff ff movl $0xffffffff,0x14(%rdx) : n->relation = $3; 0.00 : 51958d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 519594: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 519598: 48 89 42 18 mov %rax,0x18(%rdx) : n->va_cols = $4; 0.00 : 51959c: 48 8b 06 mov (%rsi),%rax 0.00 : 51959f: 48 89 42 20 mov %rax,0x20(%rdx) : $$ = (Node *)n; : } : ; 0.00 : 5195a3: e9 d8 83 ff ff jmpq 511980 : ; : : AnalyzeStmt: : analyze_keyword opt_verbose : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 5195a8: 48 8b 3d b1 12 6a 00 mov 0x6a12b1(%rip),%rdi # bba860 0.00 : 5195af: be 28 00 00 00 mov $0x28,%esi 0.00 : 5195b4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5195bb: e8 50 f8 27 00 callq 798e10 0.00 : 5195c0: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_ANALYZE; 0.00 : 5195c6: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : if ($2) 0.00 : 5195cd: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5195d4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5195db: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 5195de: 74 07 je 5195e7 : n->options |= VACOPT_VERBOSE; 0.00 : 5195e0: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->freeze_min_age = -1; 0.00 : 5195e7: c7 40 08 ff ff ff ff movl $0xffffffff,0x8(%rax) : n->freeze_table_age = -1; 0.00 : 5195ee: c7 40 0c ff ff ff ff movl $0xffffffff,0xc(%rax) : n->multixact_freeze_min_age = -1; : n->multixact_freeze_table_age = -1; : n->relation = NULL; : n->va_cols = NIL; : $$ = (Node *)n; 0.00 : 5195f5: 49 89 c6 mov %rax,%r14 : n->options = VACOPT_ANALYZE; : if ($2) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = -1; : n->freeze_table_age = -1; : n->multixact_freeze_min_age = -1; 0.00 : 5195f8: c7 40 10 ff ff ff ff movl $0xffffffff,0x10(%rax) : n->multixact_freeze_table_age = -1; 0.00 : 5195ff: c7 40 14 ff ff ff ff movl $0xffffffff,0x14(%rax) : n->relation = NULL; 0.00 : 519606: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 51960d: 00 : n->va_cols = NIL; 0.00 : 51960e: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 519615: 00 : $$ = (Node *)n; : } : | analyze_keyword opt_verbose qualified_name opt_name_list 0.00 : 519616: e9 65 83 ff ff jmpq 511980 : : vacuum_option_elem: : analyze_keyword { $$ = VACOPT_ANALYZE; } : | VERBOSE { $$ = VACOPT_VERBOSE; } : | FREEZE { $$ = VACOPT_FREEZE; } : | FULL { $$ = VACOPT_FULL; } 0.00 : 51961b: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 519622: ff ff ff 0.00 : 519625: 49 21 d6 and %rdx,%r14 0.00 : 519628: 49 83 ce 10 or $0x10,%r14 : ; 0.00 : 51962c: e9 4f 83 ff ff jmpq 511980 : ; : : vacuum_option_elem: : analyze_keyword { $$ = VACOPT_ANALYZE; } : | VERBOSE { $$ = VACOPT_VERBOSE; } : | FREEZE { $$ = VACOPT_FREEZE; } 0.00 : 519631: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 519638: ff ff ff 0.00 : 51963b: 49 21 c6 and %rax,%r14 0.00 : 51963e: 49 83 ce 08 or $0x8,%r14 : | FULL { $$ = VACOPT_FULL; } 0.00 : 519642: e9 39 83 ff ff jmpq 511980 : | vacuum_option_list ',' vacuum_option_elem { $$ = $1 | $3; } : ; : : vacuum_option_elem: : analyze_keyword { $$ = VACOPT_ANALYZE; } : | VERBOSE { $$ = VACOPT_VERBOSE; } 0.00 : 519647: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51964e: ff ff ff 0.00 : 519651: 49 21 f6 and %rsi,%r14 0.00 : 519654: 49 83 ce 04 or $0x4,%r14 : | FREEZE { $$ = VACOPT_FREEZE; } 0.00 : 519658: e9 23 83 ff ff jmpq 511980 : vacuum_option_elem { $$ = $1; } : | vacuum_option_list ',' vacuum_option_elem { $$ = $1 | $3; } : ; : : vacuum_option_elem: : analyze_keyword { $$ = VACOPT_ANALYZE; } 0.00 : 51965d: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 519664: ff ff ff 0.00 : 519667: 49 21 de and %rbx,%r14 0.00 : 51966a: 49 83 ce 02 or $0x2,%r14 : | VERBOSE { $$ = VACOPT_VERBOSE; } 0.00 : 51966e: e9 0d 83 ff ff jmpq 511980 : } : ; : : vacuum_option_list: : vacuum_option_elem { $$ = $1; } : | vacuum_option_list ',' vacuum_option_elem { $$ = $1 | $3; } 0.00 : 519673: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51967a: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 519681: ff ff ff 0.00 : 519684: 49 21 ce and %rcx,%r14 0.00 : 519687: 8b 02 mov (%rdx),%eax 0.00 : 519689: 0b 42 f0 or -0x10(%rdx),%eax 0.00 : 51968c: 49 09 c6 or %rax,%r14 : ; 0.00 : 51968f: e9 ec 82 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : vacuum_option_list: : vacuum_option_elem { $$ = $1; } 0.00 : 519694: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51969b: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5196a2: ff ff ff 0.00 : 5196a5: 49 21 f6 and %rsi,%r14 0.00 : 5196a8: 8b 03 mov (%rbx),%eax 0.00 : 5196aa: 49 09 c6 or %rax,%r14 : | vacuum_option_list ',' vacuum_option_elem { $$ = $1 | $3; } 0.00 : 5196ad: e9 ce 82 ff ff jmpq 511980 : n->va_cols = NIL; : $$ = (Node *) n; : } : | VACUUM '(' vacuum_option_list ')' qualified_name opt_name_list : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 5196b2: 48 8b 3d a7 11 6a 00 mov 0x6a11a7(%rip),%rdi # bba860 0.00 : 5196b9: be 28 00 00 00 mov $0x28,%esi 0.00 : 5196be: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5196c5: e8 46 f7 27 00 callq 798e10 0.00 : 5196ca: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_VACUUM | $3; 0.00 : 5196d0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->va_cols = NIL; : $$ = (Node *) n; : } : | VACUUM '(' vacuum_option_list ')' qualified_name opt_name_list : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 5196d7: 48 89 c2 mov %rax,%rdx : n->options = VACOPT_VACUUM | $3; 0.00 : 5196da: 8b 46 e8 mov -0x18(%rsi),%eax 0.00 : 5196dd: 83 c8 01 or $0x1,%eax : if (n->options & VACOPT_FREEZE) 0.00 : 5196e0: a8 08 test $0x8,%al : $$ = (Node *) n; : } : | VACUUM '(' vacuum_option_list ')' qualified_name opt_name_list : { : VacuumStmt *n = makeNode(VacuumStmt); : n->options = VACOPT_VACUUM | $3; 0.00 : 5196e2: 89 42 04 mov %eax,0x4(%rdx) : if (n->options & VACOPT_FREEZE) 0.00 : 5196e5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5196ec: 0f 84 68 fb 00 00 je 52925a : { : n->freeze_min_age = n->freeze_table_age = 0; 0.00 : 5196f2: c7 42 0c 00 00 00 00 movl $0x0,0xc(%rdx) 0.00 : 5196f9: c7 42 08 00 00 00 00 movl $0x0,0x8(%rdx) : n->multixact_freeze_min_age = 0; 0.00 : 519700: c7 42 10 00 00 00 00 movl $0x0,0x10(%rdx) : n->multixact_freeze_table_age = 0; 0.00 : 519707: c7 42 14 00 00 00 00 movl $0x0,0x14(%rdx) : { : n->freeze_min_age = n->freeze_table_age = -1; : n->multixact_freeze_min_age = -1; : n->multixact_freeze_table_age = -1; : } : n->relation = $5; 0.00 : 51970e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 519715: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 519719: 48 89 42 18 mov %rax,0x18(%rdx) : n->va_cols = $6; 0.00 : 51971d: 48 8b 01 mov (%rcx),%rax : if (n->va_cols != NIL) /* implies analyze */ 0.00 : 519720: 48 85 c0 test %rax,%rax : n->freeze_min_age = n->freeze_table_age = -1; : n->multixact_freeze_min_age = -1; : n->multixact_freeze_table_age = -1; : } : n->relation = $5; : n->va_cols = $6; 0.00 : 519723: 48 89 42 20 mov %rax,0x20(%rdx) : if (n->va_cols != NIL) /* implies analyze */ 0.00 : 519727: 74 04 je 51972d : n->options |= VACOPT_ANALYZE; 0.00 : 519729: 83 4a 04 02 orl $0x2,0x4(%rdx) : $$ = (Node *) n; 0.00 : 51972d: 49 89 d6 mov %rdx,%r14 : } : ; 0.00 : 519730: e9 4b 82 ff ff jmpq 511980 : n->multixact_freeze_table_age = $3 ? 0 : -1; : $$ = (Node *)n; : } : | VACUUM '(' vacuum_option_list ')' : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 519735: 48 8b 3d 24 11 6a 00 mov 0x6a1124(%rip),%rdi # bba860 0.00 : 51973c: be 28 00 00 00 mov $0x28,%esi 0.00 : 519741: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519748: e8 c3 f6 27 00 callq 798e10 0.00 : 51974d: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_VACUUM | $3; 0.00 : 519753: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->multixact_freeze_table_age = $3 ? 0 : -1; : $$ = (Node *)n; : } : | VACUUM '(' vacuum_option_list ')' : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 51975a: 48 89 c2 mov %rax,%rdx : n->options = VACOPT_VACUUM | $3; 0.00 : 51975d: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 519760: 83 c8 01 or $0x1,%eax : if (n->options & VACOPT_FREEZE) 0.00 : 519763: a8 08 test $0x8,%al : $$ = (Node *)n; : } : | VACUUM '(' vacuum_option_list ')' : { : VacuumStmt *n = makeNode(VacuumStmt); : n->options = VACOPT_VACUUM | $3; 0.00 : 519765: 89 42 04 mov %eax,0x4(%rdx) : if (n->options & VACOPT_FREEZE) 0.00 : 519768: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51976f: 0f 84 06 fb 00 00 je 52927b : { : n->freeze_min_age = n->freeze_table_age = 0; 0.00 : 519775: c7 42 0c 00 00 00 00 movl $0x0,0xc(%rdx) 0.00 : 51977c: c7 42 08 00 00 00 00 movl $0x0,0x8(%rdx) : n->multixact_freeze_min_age = 0; 0.00 : 519783: c7 42 10 00 00 00 00 movl $0x0,0x10(%rdx) : n->multixact_freeze_table_age = 0; 0.00 : 51978a: c7 42 14 00 00 00 00 movl $0x0,0x14(%rdx) : { : n->freeze_min_age = n->freeze_table_age = -1; : n->multixact_freeze_min_age = -1; : n->multixact_freeze_table_age = -1; : } : n->relation = NULL; 0.00 : 519791: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 519798: 00 : n->va_cols = NIL; 0.00 : 519799: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 5197a0: 00 : $$ = (Node *) n; 0.00 : 5197a1: 49 89 d6 mov %rdx,%r14 : } : | VACUUM '(' vacuum_option_list ')' qualified_name opt_name_list 0.00 : 5197a4: e9 d7 81 ff ff jmpq 511980 : n->va_cols = NIL; : $$ = (Node *)n; : } : | VACUUM opt_full opt_freeze opt_verbose AnalyzeStmt : { : VacuumStmt *n = (VacuumStmt *) $5; 0.00 : 5197a9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5197b0: 48 8b 16 mov (%rsi),%rdx : n->options |= VACOPT_VACUUM; 0.00 : 5197b3: 8b 4a 04 mov 0x4(%rdx),%ecx 0.00 : 5197b6: 89 c8 mov %ecx,%eax 0.00 : 5197b8: 83 c8 01 or $0x1,%eax 0.00 : 5197bb: 89 42 04 mov %eax,0x4(%rdx) : if ($2) 0.00 : 5197be: 80 7e e8 00 cmpb $0x0,-0x18(%rsi) 0.00 : 5197c2: 74 06 je 5197ca : n->options |= VACOPT_FULL; 0.00 : 5197c4: 83 c9 11 or $0x11,%ecx 0.00 : 5197c7: 89 4a 04 mov %ecx,0x4(%rdx) : if ($4) 0.00 : 5197ca: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5197d1: 80 78 f8 00 cmpb $0x0,-0x8(%rax) 0.00 : 5197d5: 74 04 je 5197db : n->options |= VACOPT_VERBOSE; 0.00 : 5197d7: 83 4a 04 04 orl $0x4,0x4(%rdx) : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 5197db: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->freeze_table_age = $3 ? 0 : -1; : n->multixact_freeze_min_age = $3 ? 0 : -1; : n->multixact_freeze_table_age = $3 ? 0 : -1; : $$ = (Node *)n; 0.00 : 5197e2: 49 89 d6 mov %rdx,%r14 : n->options |= VACOPT_VACUUM; : if ($2) : n->options |= VACOPT_FULL; : if ($4) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 5197e5: 80 79 f0 01 cmpb $0x1,-0x10(%rcx) 0.00 : 5197e9: 19 c0 sbb %eax,%eax 0.00 : 5197eb: 89 42 08 mov %eax,0x8(%rdx) : n->freeze_table_age = $3 ? 0 : -1; 0.00 : 5197ee: 80 79 f0 01 cmpb $0x1,-0x10(%rcx) 0.00 : 5197f2: 19 c0 sbb %eax,%eax 0.00 : 5197f4: 89 42 0c mov %eax,0xc(%rdx) : n->multixact_freeze_min_age = $3 ? 0 : -1; 0.00 : 5197f7: 80 79 f0 01 cmpb $0x1,-0x10(%rcx) 0.00 : 5197fb: 19 c0 sbb %eax,%eax 0.00 : 5197fd: 89 42 10 mov %eax,0x10(%rdx) : n->multixact_freeze_table_age = $3 ? 0 : -1; 0.00 : 519800: 80 79 f0 01 cmpb $0x1,-0x10(%rcx) 0.00 : 519804: 19 c0 sbb %eax,%eax 0.00 : 519806: 89 42 14 mov %eax,0x14(%rdx) : $$ = (Node *)n; : } : | VACUUM '(' vacuum_option_list ')' 0.00 : 519809: e9 72 81 ff ff jmpq 511980 : * : *****************************************************************************/ : : VacuumStmt: VACUUM opt_full opt_freeze opt_verbose : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 51980e: 48 8b 3d 4b 10 6a 00 mov 0x6a104b(%rip),%rdi # bba860 0.00 : 519815: be 28 00 00 00 mov $0x28,%esi 0.00 : 51981a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519821: e8 ea f5 27 00 callq 798e10 0.00 : 519826: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_VACUUM; 0.00 : 51982c: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : * : *****************************************************************************/ : : VacuumStmt: VACUUM opt_full opt_freeze opt_verbose : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 519833: 48 89 c2 mov %rax,%rdx : n->options = VACOPT_VACUUM; : if ($2) 0.00 : 519836: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51983d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519844: 80 79 f0 00 cmpb $0x0,-0x10(%rcx) 0.00 : 519848: 74 07 je 519851 : n->options |= VACOPT_FULL; 0.00 : 51984a: c7 40 04 11 00 00 00 movl $0x11,0x4(%rax) : if ($4) 0.00 : 519851: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519858: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 51985b: 74 04 je 519861 : n->options |= VACOPT_VERBOSE; 0.00 : 51985d: 83 4a 04 04 orl $0x4,0x4(%rdx) : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 519861: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->freeze_table_age = $3 ? 0 : -1; : n->multixact_freeze_min_age = $3 ? 0 : -1; : n->multixact_freeze_table_age = $3 ? 0 : -1; : n->relation = NULL; : n->va_cols = NIL; : $$ = (Node *)n; 0.00 : 519868: 49 89 d6 mov %rdx,%r14 : n->options = VACOPT_VACUUM; : if ($2) : n->options |= VACOPT_FULL; : if ($4) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 51986b: 80 7e f8 01 cmpb $0x1,-0x8(%rsi) 0.00 : 51986f: 19 c0 sbb %eax,%eax 0.00 : 519871: 89 42 08 mov %eax,0x8(%rdx) : n->freeze_table_age = $3 ? 0 : -1; 0.00 : 519874: 80 7e f8 01 cmpb $0x1,-0x8(%rsi) 0.00 : 519878: 19 c0 sbb %eax,%eax 0.00 : 51987a: 89 42 0c mov %eax,0xc(%rdx) : n->multixact_freeze_min_age = $3 ? 0 : -1; 0.00 : 51987d: 80 7e f8 01 cmpb $0x1,-0x8(%rsi) 0.00 : 519881: 19 c0 sbb %eax,%eax 0.00 : 519883: 89 42 10 mov %eax,0x10(%rdx) : n->multixact_freeze_table_age = $3 ? 0 : -1; 0.00 : 519886: 80 7e f8 01 cmpb $0x1,-0x8(%rsi) : n->relation = NULL; 0.00 : 51988a: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 519891: 00 : n->va_cols = NIL; 0.00 : 519892: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 519899: 00 : if ($4) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = $3 ? 0 : -1; : n->freeze_table_age = $3 ? 0 : -1; : n->multixact_freeze_min_age = $3 ? 0 : -1; : n->multixact_freeze_table_age = $3 ? 0 : -1; 0.00 : 51989a: 19 c0 sbb %eax,%eax 0.00 : 51989c: 89 42 14 mov %eax,0x14(%rdx) : n->relation = NULL; : n->va_cols = NIL; : $$ = (Node *)n; : } : | VACUUM opt_full opt_freeze opt_verbose qualified_name 0.00 : 51989f: e9 dc 80 ff ff jmpq 511980 : } : ; : : cluster_index_specification: : USING index_name { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5198a4: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5198a7: e9 d4 80 ff ff jmpq 511980 : n->va_cols = NIL; : $$ = (Node *)n; : } : | VACUUM opt_full opt_freeze opt_verbose qualified_name : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 5198ac: 48 8b 3d ad 0f 6a 00 mov 0x6a0fad(%rip),%rdi # bba860 0.00 : 5198b3: be 28 00 00 00 mov $0x28,%esi 0.00 : 5198b8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5198bf: e8 4c f5 27 00 callq 798e10 0.00 : 5198c4: c7 00 e1 02 00 00 movl $0x2e1,(%rax) : n->options = VACOPT_VACUUM; 0.00 : 5198ca: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->va_cols = NIL; : $$ = (Node *)n; : } : | VACUUM opt_full opt_freeze opt_verbose qualified_name : { : VacuumStmt *n = makeNode(VacuumStmt); 0.00 : 5198d1: 48 89 c2 mov %rax,%rdx : n->options = VACOPT_VACUUM; : if ($2) 0.00 : 5198d4: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5198db: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5198e2: 80 78 e8 00 cmpb $0x0,-0x18(%rax) 0.00 : 5198e6: 74 07 je 5198ef : n->options |= VACOPT_FULL; 0.00 : 5198e8: c7 42 04 11 00 00 00 movl $0x11,0x4(%rdx) : if ($4) 0.00 : 5198ef: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5198f6: 80 79 f8 00 cmpb $0x0,-0x8(%rcx) 0.00 : 5198fa: 74 04 je 519900 : n->options |= VACOPT_VERBOSE; 0.00 : 5198fc: 83 4a 04 04 orl $0x4,0x4(%rdx) : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 519900: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->freeze_table_age = $3 ? 0 : -1; : n->multixact_freeze_min_age = $3 ? 0 : -1; : n->multixact_freeze_table_age = $3 ? 0 : -1; : n->relation = $5; : n->va_cols = NIL; : $$ = (Node *)n; 0.00 : 519907: 49 89 d6 mov %rdx,%r14 : n->options = VACOPT_VACUUM; : if ($2) : n->options |= VACOPT_FULL; : if ($4) : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = $3 ? 0 : -1; 0.00 : 51990a: 80 7b f0 01 cmpb $0x1,-0x10(%rbx) 0.00 : 51990e: 19 c0 sbb %eax,%eax 0.00 : 519910: 89 42 08 mov %eax,0x8(%rdx) : n->freeze_table_age = $3 ? 0 : -1; 0.00 : 519913: 80 7b f0 01 cmpb $0x1,-0x10(%rbx) 0.00 : 519917: 19 c0 sbb %eax,%eax 0.00 : 519919: 89 42 0c mov %eax,0xc(%rdx) : n->multixact_freeze_min_age = $3 ? 0 : -1; 0.00 : 51991c: 80 7b f0 01 cmpb $0x1,-0x10(%rbx) 0.00 : 519920: 19 c0 sbb %eax,%eax 0.00 : 519922: 89 42 10 mov %eax,0x10(%rdx) : n->multixact_freeze_table_age = $3 ? 0 : -1; 0.00 : 519925: 80 7b f0 01 cmpb $0x1,-0x10(%rbx) 0.00 : 519929: 19 c0 sbb %eax,%eax 0.00 : 51992b: 89 42 14 mov %eax,0x14(%rdx) : n->relation = $5; 0.00 : 51992e: 48 8b 03 mov (%rbx),%rax : n->va_cols = NIL; 0.00 : 519931: 48 c7 42 20 00 00 00 movq $0x0,0x20(%rdx) 0.00 : 519938: 00 : n->options |= VACOPT_VERBOSE; : n->freeze_min_age = $3 ? 0 : -1; : n->freeze_table_age = $3 ? 0 : -1; : n->multixact_freeze_min_age = $3 ? 0 : -1; : n->multixact_freeze_table_age = $3 ? 0 : -1; : n->relation = $5; 0.00 : 519939: 48 89 42 18 mov %rax,0x18(%rdx) : n->va_cols = NIL; : $$ = (Node *)n; : } : | VACUUM opt_full opt_freeze opt_verbose AnalyzeStmt 0.00 : 51993d: e9 3e 80 ff ff jmpq 511980 : $$ = (Node*)n; : } : ; : : cluster_index_specification: : USING index_name { $$ = $2; } 0.00 : 519942: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519949: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51994c: e9 2f 80 ff ff jmpq 511980 : $$ = (Node*)n; : } : /* kept for pre-8.3 compatibility */ : | CLUSTER opt_verbose index_name ON qualified_name : { : ClusterStmt *n = makeNode(ClusterStmt); 0.00 : 519951: 48 8b 3d 08 0f 6a 00 mov 0x6a0f08(%rip),%rdi # bba860 0.00 : 519958: be 20 00 00 00 mov $0x20,%esi 0.00 : 51995d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519964: e8 a7 f4 27 00 callq 798e10 0.00 : 519969: c7 00 ca 02 00 00 movl $0x2ca,(%rax) : n->relation = $5; 0.00 : 51996f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->indexname = $3; : n->verbose = $2; : $$ = (Node*)n; 0.00 : 519976: 49 89 c6 mov %rax,%r14 : } : /* kept for pre-8.3 compatibility */ : | CLUSTER opt_verbose index_name ON qualified_name : { : ClusterStmt *n = makeNode(ClusterStmt); : n->relation = $5; 0.00 : 519979: 48 8b 16 mov (%rsi),%rdx 0.00 : 51997c: 48 89 50 08 mov %rdx,0x8(%rax) : n->indexname = $3; 0.00 : 519980: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 519984: 48 89 50 10 mov %rdx,0x10(%rax) : n->verbose = $2; 0.00 : 519988: 0f b6 56 e8 movzbl -0x18(%rsi),%edx 0.00 : 51998c: 88 50 18 mov %dl,0x18(%rax) : $$ = (Node*)n; : } : ; 0.00 : 51998f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519996: e9 e5 7f ff ff jmpq 511980 : n->verbose = $2; : $$ = (Node*)n; : } : | CLUSTER opt_verbose : { : ClusterStmt *n = makeNode(ClusterStmt); 0.00 : 51999b: 48 8b 3d be 0e 6a 00 mov 0x6a0ebe(%rip),%rdi # bba860 0.00 : 5199a2: be 20 00 00 00 mov $0x20,%esi 0.00 : 5199a7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5199ae: e8 5d f4 27 00 callq 798e10 0.00 : 5199b3: c7 00 ca 02 00 00 movl $0x2ca,(%rax) : n->relation = NULL; 0.00 : 5199b9: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5199c0: 00 : n->indexname = NULL; : n->verbose = $2; : $$ = (Node*)n; 0.00 : 5199c1: 49 89 c6 mov %rax,%r14 : } : | CLUSTER opt_verbose : { : ClusterStmt *n = makeNode(ClusterStmt); : n->relation = NULL; : n->indexname = NULL; 0.00 : 5199c4: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5199cb: 00 : n->verbose = $2; 0.00 : 5199cc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5199d3: 0f b6 13 movzbl (%rbx),%edx 0.00 : 5199d6: 88 50 18 mov %dl,0x18(%rax) : $$ = (Node*)n; : } : /* kept for pre-8.3 compatibility */ 0.00 : 5199d9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5199e0: e9 9b 7f ff ff jmpq 511980 : *****************************************************************************/ : : ClusterStmt: : CLUSTER opt_verbose qualified_name cluster_index_specification : { : ClusterStmt *n = makeNode(ClusterStmt); 0.00 : 5199e5: 48 8b 3d 74 0e 6a 00 mov 0x6a0e74(%rip),%rdi # bba860 0.00 : 5199ec: be 20 00 00 00 mov $0x20,%esi 0.00 : 5199f1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5199f8: e8 13 f4 27 00 callq 798e10 0.00 : 5199fd: c7 00 ca 02 00 00 movl $0x2ca,(%rax) : n->relation = $3; 0.00 : 519a03: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->indexname = $4; : n->verbose = $2; : $$ = (Node*)n; 0.00 : 519a0a: 49 89 c6 mov %rax,%r14 : : ClusterStmt: : CLUSTER opt_verbose qualified_name cluster_index_specification : { : ClusterStmt *n = makeNode(ClusterStmt); : n->relation = $3; 0.00 : 519a0d: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 519a11: 48 89 50 08 mov %rdx,0x8(%rax) : n->indexname = $4; 0.00 : 519a15: 48 8b 11 mov (%rcx),%rdx 0.00 : 519a18: 48 89 50 10 mov %rdx,0x10(%rax) : n->verbose = $2; 0.00 : 519a1c: 0f b6 51 f0 movzbl -0x10(%rcx),%edx 0.00 : 519a20: 88 50 18 mov %dl,0x18(%rax) : $$ = (Node*)n; : } : | CLUSTER opt_verbose 0.00 : 519a23: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519a2a: e9 51 7f ff ff jmpq 511980 : : CreateConversionStmt: : CREATE opt_default CONVERSION_P any_name FOR Sconst : TO Sconst FROM any_name : { : CreateConversionStmt *n = makeNode(CreateConversionStmt); 0.00 : 519a2f: 48 8b 3d 2a 0e 6a 00 mov 0x6a0e2a(%rip),%rdi # bba860 0.00 : 519a36: be 30 00 00 00 mov $0x30,%esi 0.00 : 519a3b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519a42: e8 c9 f3 27 00 callq 798e10 0.00 : 519a47: c7 00 f6 02 00 00 movl $0x2f6,(%rax) : n->conversion_name = $4; 0.00 : 519a4d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->for_encoding_name = $6; : n->to_encoding_name = $8; : n->func_name = $10; : n->def = $2; : $$ = (Node *)n; 0.00 : 519a54: 49 89 c6 mov %rax,%r14 : CreateConversionStmt: : CREATE opt_default CONVERSION_P any_name FOR Sconst : TO Sconst FROM any_name : { : CreateConversionStmt *n = makeNode(CreateConversionStmt); : n->conversion_name = $4; 0.00 : 519a57: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 519a5b: 48 89 50 08 mov %rdx,0x8(%rax) : n->for_encoding_name = $6; 0.00 : 519a5f: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 519a63: 48 89 50 10 mov %rdx,0x10(%rax) : n->to_encoding_name = $8; 0.00 : 519a67: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 519a6b: 48 89 50 18 mov %rdx,0x18(%rax) : n->func_name = $10; 0.00 : 519a6f: 48 8b 16 mov (%rsi),%rdx 0.00 : 519a72: 48 89 50 20 mov %rdx,0x20(%rax) : n->def = $2; 0.00 : 519a76: 0f b6 56 c0 movzbl -0x40(%rsi),%edx 0.00 : 519a7a: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 519a7d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519a84: e9 f7 7e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519a89: 48 8b 3d d0 0d 6a 00 mov 0x6a0dd0(%rip),%rdi # bba860 0.00 : 519a90: be 28 00 00 00 mov $0x28,%esi 0.00 : 519a95: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519a9c: e8 6f f3 27 00 callq 798e10 0.00 : 519aa1: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519aa7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->tokentype = $11; : n->missing_ok = true; : $$ = (Node*)n; 0.00 : 519aae: 49 89 c6 mov %rax,%r14 : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519ab1: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 519ab5: 48 89 50 08 mov %rdx,0x8(%rax) : n->tokentype = $11; 0.00 : 519ab9: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 519abc: c6 40 22 01 movb $0x1,0x22(%rax) : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = $11; 0.00 : 519ac0: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = true; : $$ = (Node*)n; : } : ; 0.00 : 519ac4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519acb: e9 b0 7e ff ff jmpq 511980 : n->replace = true; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519ad0: 48 8b 3d 89 0d 6a 00 mov 0x6a0d89(%rip),%rdi # bba860 0.00 : 519ad7: be 28 00 00 00 mov $0x28,%esi 0.00 : 519adc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519ae3: e8 28 f3 27 00 callq 798e10 0.00 : 519ae8: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519aee: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->tokentype = $9; : n->missing_ok = false; : $$ = (Node*)n; 0.00 : 519af5: 49 89 c6 mov %rax,%r14 : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519af8: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 519afc: 48 89 50 08 mov %rdx,0x8(%rax) : n->tokentype = $9; 0.00 : 519b00: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 519b03: c6 40 22 00 movb $0x0,0x22(%rax) : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = $9; 0.00 : 519b07: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list 0.00 : 519b0b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519b12: e9 69 7e ff ff jmpq 511980 : n->replace = true; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519b17: 48 8b 3d 42 0d 6a 00 mov 0x6a0d42(%rip),%rdi # bba860 0.00 : 519b1e: be 28 00 00 00 mov $0x28,%esi 0.00 : 519b23: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519b2a: e8 e1 f2 27 00 callq 798e10 0.00 : 519b2f: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519b35: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->replace = true; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519b3c: 48 89 c3 mov %rax,%rbx : n->cfgname = $5; : n->tokentype = $9; : n->dicts = list_make2($11,$13); 0.00 : 519b3f: 31 f6 xor %esi,%esi : n->override = false; : n->replace = true; : $$ = (Node*)n; 0.00 : 519b41: 49 89 de mov %rbx,%r14 : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519b44: 48 8b 41 c0 mov -0x40(%rcx),%rax 0.00 : 519b48: 48 89 43 08 mov %rax,0x8(%rbx) : n->tokentype = $9; 0.00 : 519b4c: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 519b50: 48 89 43 10 mov %rax,0x10(%rbx) : n->dicts = list_make2($11,$13); 0.00 : 519b54: 48 8b 39 mov (%rcx),%rdi 0.00 : 519b57: e8 f4 7c 0c 00 callq 5e1850 0.00 : 519b5c: 48 89 c6 mov %rax,%rsi 0.00 : 519b5f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519b66: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 519b6a: e8 e1 7c 0c 00 callq 5e1850 : n->override = false; 0.00 : 519b6f: c6 43 20 00 movb $0x0,0x20(%rbx) : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = $9; : n->dicts = list_make2($11,$13); 0.00 : 519b73: 48 89 43 18 mov %rax,0x18(%rbx) : n->override = false; : n->replace = true; 0.00 : 519b77: c6 43 21 01 movb $0x1,0x21(%rbx) : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list 0.00 : 519b7b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519b82: e9 f9 7d ff ff jmpq 511980 : n->replace = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519b87: 48 8b 3d d2 0c 6a 00 mov 0x6a0cd2(%rip),%rdi # bba860 0.00 : 519b8e: be 28 00 00 00 mov $0x28,%esi 0.00 : 519b93: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519b9a: e8 71 f2 27 00 callq 798e10 0.00 : 519b9f: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519ba5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->replace = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519bac: 48 89 c3 mov %rax,%rbx : n->cfgname = $5; : n->tokentype = NIL; : n->dicts = list_make2($9,$11); : n->override = false; : n->replace = true; : $$ = (Node*)n; 0.00 : 519baf: 49 89 de mov %rbx,%r14 : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519bb2: 48 8b 46 d0 mov -0x30(%rsi),%rax : n->tokentype = NIL; 0.00 : 519bb6: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 519bbd: 00 : n->dicts = list_make2($9,$11); 0.00 : 519bbe: 31 f6 xor %esi,%esi : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519bc0: 48 89 43 08 mov %rax,0x8(%rbx) : n->tokentype = NIL; : n->dicts = list_make2($9,$11); 0.00 : 519bc4: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519bcb: 48 8b 38 mov (%rax),%rdi 0.00 : 519bce: e8 7d 7c 0c 00 callq 5e1850 0.00 : 519bd3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 519bda: 48 89 c6 mov %rax,%rsi 0.00 : 519bdd: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 519be1: e8 6a 7c 0c 00 callq 5e1850 : n->override = false; 0.00 : 519be6: c6 43 20 00 movb $0x0,0x20(%rbx) : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = NIL; : n->dicts = list_make2($9,$11); 0.00 : 519bea: 48 89 43 18 mov %rax,0x18(%rbx) : n->override = false; : n->replace = true; 0.00 : 519bee: c6 43 21 01 movb $0x1,0x21(%rbx) : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name 0.00 : 519bf2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519bf9: e9 82 7d ff ff jmpq 511980 : n->replace = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519bfe: 48 8b 3d 5b 0c 6a 00 mov 0x6a0c5b(%rip),%rdi # bba860 0.00 : 519c05: be 28 00 00 00 mov $0x28,%esi 0.00 : 519c0a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519c11: e8 fa f1 27 00 callq 798e10 0.00 : 519c16: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519c1c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->tokentype = $9; : n->dicts = $11; : n->override = true; : n->replace = false; : $$ = (Node*)n; 0.00 : 519c23: 49 89 c6 mov %rax,%r14 : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519c26: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 519c2a: 48 89 50 08 mov %rdx,0x8(%rax) : n->tokentype = $9; 0.00 : 519c2e: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 519c32: 48 89 50 10 mov %rdx,0x10(%rax) : n->dicts = $11; 0.00 : 519c36: 48 8b 11 mov (%rcx),%rdx : n->override = true; 0.00 : 519c39: c6 40 20 01 movb $0x1,0x20(%rax) : n->replace = false; 0.00 : 519c3d: c6 40 21 00 movb $0x0,0x21(%rax) : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = $9; : n->dicts = $11; 0.00 : 519c41: 48 89 50 18 mov %rdx,0x18(%rax) : n->override = true; : n->replace = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name 0.00 : 519c45: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519c4c: e9 2f 7d ff ff jmpq 511980 : ; : : AlterTSConfigurationStmt: : ALTER TEXT_P SEARCH CONFIGURATION any_name ADD_P MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); 0.00 : 519c51: 48 8b 3d 08 0c 6a 00 mov 0x6a0c08(%rip),%rdi # bba860 0.00 : 519c58: be 28 00 00 00 mov $0x28,%esi 0.00 : 519c5d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519c64: e8 a7 f1 27 00 callq 798e10 0.00 : 519c69: c7 00 0a 03 00 00 movl $0x30a,(%rax) : n->cfgname = $5; 0.00 : 519c6f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->tokentype = $9; : n->dicts = $11; : n->override = false; : n->replace = false; : $$ = (Node*)n; 0.00 : 519c76: 49 89 c6 mov %rax,%r14 : : AlterTSConfigurationStmt: : ALTER TEXT_P SEARCH CONFIGURATION any_name ADD_P MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; 0.00 : 519c79: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 519c7d: 48 89 50 08 mov %rdx,0x8(%rax) : n->tokentype = $9; 0.00 : 519c81: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 519c85: 48 89 50 10 mov %rdx,0x10(%rax) : n->dicts = $11; 0.00 : 519c89: 48 8b 16 mov (%rsi),%rdx : n->override = false; 0.00 : 519c8c: c6 40 20 00 movb $0x0,0x20(%rax) : n->replace = false; 0.00 : 519c90: c6 40 21 00 movb $0x0,0x21(%rax) : ALTER TEXT_P SEARCH CONFIGURATION any_name ADD_P MAPPING FOR name_list WITH any_name_list : { : AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); : n->cfgname = $5; : n->tokentype = $9; : n->dicts = $11; 0.00 : 519c94: 48 89 50 18 mov %rdx,0x18(%rax) : n->override = false; : n->replace = false; : $$ = (Node*)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list WITH any_name_list 0.00 : 519c98: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519c9f: e9 dc 7c ff ff jmpq 511980 : *****************************************************************************/ : : AlterTSDictionaryStmt: : ALTER TEXT_P SEARCH DICTIONARY any_name definition : { : AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); 0.00 : 519ca4: 48 8b 3d b5 0b 6a 00 mov 0x6a0bb5(%rip),%rdi # bba860 0.00 : 519cab: be 18 00 00 00 mov $0x18,%esi 0.00 : 519cb0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519cb7: e8 54 f1 27 00 callq 798e10 0.00 : 519cbc: c7 00 09 03 00 00 movl $0x309,(%rax) : n->dictname = $5; 0.00 : 519cc2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->options = $6; : $$ = (Node *)n; 0.00 : 519cc9: 49 89 c6 mov %rax,%r14 : : AlterTSDictionaryStmt: : ALTER TEXT_P SEARCH DICTIONARY any_name definition : { : AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); : n->dictname = $5; 0.00 : 519ccc: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 519cd0: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $6; 0.00 : 519cd4: 48 8b 13 mov (%rbx),%rdx 0.00 : 519cd7: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 519cdb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519ce2: e9 99 7c ff ff jmpq 511980 : Iconst: ICONST { $$ = $1; }; : Sconst: SCONST { $$ = $1; }; : RoleId: NonReservedWord { $$ = $1; }; : : role_list: RoleId : { $$ = list_make1(makeString($1)); } 0.00 : 519ce7: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519cee: 48 8b 38 mov (%rax),%rdi 0.00 : 519cf1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519cf8: e8 f3 59 0e 00 callq 5ff6f0 0.00 : 519cfd: 31 f6 xor %esi,%esi 0.00 : 519cff: 48 89 c7 mov %rax,%rdi 0.00 : 519d02: e8 49 7b 0c 00 callq 5e1850 : | role_list ',' RoleId 0.00 : 519d07: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : Iconst: ICONST { $$ = $1; }; : Sconst: SCONST { $$ = $1; }; : RoleId: NonReservedWord { $$ = $1; }; : : role_list: RoleId : { $$ = list_make1(makeString($1)); } 0.00 : 519d0e: 49 89 c6 mov %rax,%r14 : | role_list ',' RoleId 0.00 : 519d11: e9 6a 7c ff ff jmpq 511980 : { $$ = lappend($1, makeString($3)); } 0.00 : 519d16: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 519d1d: 48 8b 3a mov (%rdx),%rdi 0.00 : 519d20: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519d27: e8 c4 59 0e 00 callq 5ff6f0 0.00 : 519d2c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 519d33: 48 89 c6 mov %rax,%rsi 0.00 : 519d36: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 519d3a: e8 41 81 0c 00 callq 5e1e80 : ; 0.00 : 519d3f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : RoleId: NonReservedWord { $$ = $1; }; : : role_list: RoleId : { $$ = list_make1(makeString($1)); } : | role_list ',' RoleId : { $$ = lappend($1, makeString($3)); } 0.00 : 519d46: 49 89 c6 mov %rax,%r14 : ; 0.00 : 519d49: e9 32 7c ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN VALIDATE CONSTRAINT */ : | ALTER DOMAIN_P any_name VALIDATE CONSTRAINT name : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519d4e: 48 8b 3d 0b 0b 6a 00 mov 0x6a0b0b(%rip),%rdi # bba860 0.00 : 519d55: be 28 00 00 00 mov $0x28,%esi 0.00 : 519d5a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519d61: e8 aa f0 27 00 callq 798e10 0.00 : 519d66: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'V'; 0.00 : 519d6c: c6 40 04 56 movb $0x56,0x4(%rax) : n->typeName = $3; : n->name = $6; : $$ = (Node *)n; 0.00 : 519d70: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN VALIDATE CONSTRAINT */ : | ALTER DOMAIN_P any_name VALIDATE CONSTRAINT name : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'V'; : n->typeName = $3; 0.00 : 519d73: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 519d7a: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 519d7e: 48 89 50 08 mov %rdx,0x8(%rax) : n->name = $6; 0.00 : 519d82: 48 8b 11 mov (%rcx),%rdx 0.00 : 519d85: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 519d89: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519d90: e9 eb 7b ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ : | ALTER DOMAIN_P any_name DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519d95: 48 8b 3d c4 0a 6a 00 mov 0x6a0ac4(%rip),%rdi # bba860 0.00 : 519d9c: be 28 00 00 00 mov $0x28,%esi 0.00 : 519da1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519da8: e8 63 f0 27 00 callq 798e10 0.00 : 519dad: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'X'; 0.00 : 519db3: c6 40 04 58 movb $0x58,0x4(%rax) : n->typeName = $3; : n->name = $8; : n->behavior = $9; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 519db7: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ : | ALTER DOMAIN_P any_name DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'X'; : n->typeName = $3; 0.00 : 519dba: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 519dc1: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 519dc5: 48 89 50 08 mov %rdx,0x8(%rax) : n->name = $8; 0.00 : 519dc9: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 519dcd: 48 89 50 10 mov %rdx,0x10(%rax) : n->behavior = $9; 0.00 : 519dd1: 8b 16 mov (%rsi),%edx : n->missing_ok = true; 0.00 : 519dd3: c6 40 24 01 movb $0x1,0x24(%rax) : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'X'; : n->typeName = $3; : n->name = $8; : n->behavior = $9; 0.00 : 519dd7: 89 50 20 mov %edx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : /* ALTER DOMAIN VALIDATE CONSTRAINT */ 0.00 : 519dda: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519de1: e9 9a 7b ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP CONSTRAINT [RESTRICT|CASCADE] */ : | ALTER DOMAIN_P any_name DROP CONSTRAINT name opt_drop_behavior : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519de6: 48 8b 3d 73 0a 6a 00 mov 0x6a0a73(%rip),%rdi # bba860 0.00 : 519ded: be 28 00 00 00 mov $0x28,%esi 0.00 : 519df2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519df9: e8 12 f0 27 00 callq 798e10 0.00 : 519dfe: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'X'; 0.00 : 519e04: c6 40 04 58 movb $0x58,0x4(%rax) : n->typeName = $3; : n->name = $6; : n->behavior = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 519e08: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN DROP CONSTRAINT [RESTRICT|CASCADE] */ : | ALTER DOMAIN_P any_name DROP CONSTRAINT name opt_drop_behavior : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'X'; : n->typeName = $3; 0.00 : 519e0b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519e12: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 519e16: 48 89 50 08 mov %rdx,0x8(%rax) : n->name = $6; 0.00 : 519e1a: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 519e1e: 48 89 50 10 mov %rdx,0x10(%rax) : n->behavior = $7; 0.00 : 519e22: 8b 13 mov (%rbx),%edx : n->missing_ok = false; 0.00 : 519e24: c6 40 24 00 movb $0x0,0x24(%rax) : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'X'; : n->typeName = $3; : n->name = $6; : n->behavior = $7; 0.00 : 519e28: 89 50 20 mov %edx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ 0.00 : 519e2b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519e32: e9 49 7b ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN ADD CONSTRAINT ... */ : | ALTER DOMAIN_P any_name ADD_P TableConstraint : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519e37: 48 8b 3d 22 0a 6a 00 mov 0x6a0a22(%rip),%rdi # bba860 0.00 : 519e3e: be 28 00 00 00 mov $0x28,%esi 0.00 : 519e43: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519e4a: e8 c1 ef 27 00 callq 798e10 0.00 : 519e4f: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'C'; 0.00 : 519e55: c6 40 04 43 movb $0x43,0x4(%rax) : n->typeName = $3; : n->def = $5; : $$ = (Node *)n; 0.00 : 519e59: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN ADD CONSTRAINT ... */ : | ALTER DOMAIN_P any_name ADD_P TableConstraint : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'C'; : n->typeName = $3; 0.00 : 519e5c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 519e63: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 519e67: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = $5; 0.00 : 519e6b: 48 8b 11 mov (%rcx),%rdx 0.00 : 519e6e: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP CONSTRAINT [RESTRICT|CASCADE] */ 0.00 : 519e72: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519e79: e9 02 7b ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN SET NOT NULL */ : | ALTER DOMAIN_P any_name SET NOT NULL_P : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519e7e: 48 8b 3d db 09 6a 00 mov 0x6a09db(%rip),%rdi # bba860 0.00 : 519e85: be 28 00 00 00 mov $0x28,%esi 0.00 : 519e8a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519e91: e8 7a ef 27 00 callq 798e10 0.00 : 519e96: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'O'; 0.00 : 519e9c: c6 40 04 4f movb $0x4f,0x4(%rax) : n->typeName = $3; : $$ = (Node *)n; 0.00 : 519ea0: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN SET NOT NULL */ : | ALTER DOMAIN_P any_name SET NOT NULL_P : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'O'; : n->typeName = $3; 0.00 : 519ea3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 519eaa: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 519eae: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER DOMAIN ADD CONSTRAINT ... */ 0.00 : 519eb2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519eb9: e9 c2 7a ff ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP NOT NULL */ : | ALTER DOMAIN_P any_name DROP NOT NULL_P : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519ebe: 48 8b 3d 9b 09 6a 00 mov 0x6a099b(%rip),%rdi # bba860 0.00 : 519ec5: be 28 00 00 00 mov $0x28,%esi 0.00 : 519eca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519ed1: e8 3a ef 27 00 callq 798e10 0.00 : 519ed6: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'N'; 0.00 : 519edc: c6 40 04 4e movb $0x4e,0x4(%rax) : n->typeName = $3; : $$ = (Node *)n; 0.00 : 519ee0: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN DROP NOT NULL */ : | ALTER DOMAIN_P any_name DROP NOT NULL_P : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'N'; : n->typeName = $3; 0.00 : 519ee3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 519eea: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 519eee: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER DOMAIN SET NOT NULL */ 0.00 : 519ef2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519ef9: e9 82 7a ff ff jmpq 511980 : : AlterDomainStmt: : /* ALTER DOMAIN {SET DEFAULT |DROP DEFAULT} */ : ALTER DOMAIN_P any_name alter_column_default : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); 0.00 : 519efe: 48 8b 3d 5b 09 6a 00 mov 0x6a095b(%rip),%rdi # bba860 0.00 : 519f05: be 28 00 00 00 mov $0x28,%esi 0.00 : 519f0a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519f11: e8 fa ee 27 00 callq 798e10 0.00 : 519f16: c7 00 c4 02 00 00 movl $0x2c4,(%rax) : n->subtype = 'T'; 0.00 : 519f1c: c6 40 04 54 movb $0x54,0x4(%rax) : n->typeName = $3; : n->def = $4; : $$ = (Node *)n; 0.00 : 519f20: 49 89 c6 mov %rax,%r14 : /* ALTER DOMAIN {SET DEFAULT |DROP DEFAULT} */ : ALTER DOMAIN_P any_name alter_column_default : { : AlterDomainStmt *n = makeNode(AlterDomainStmt); : n->subtype = 'T'; : n->typeName = $3; 0.00 : 519f23: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 519f2a: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 519f2e: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = $4; 0.00 : 519f32: 48 8b 11 mov (%rcx),%rdx 0.00 : 519f35: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : /* ALTER DOMAIN DROP NOT NULL */ 0.00 : 519f39: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519f40: e9 3b 7a ff ff jmpq 511980 : *****************************************************************************/ : : CreateDomainStmt: : CREATE DOMAIN_P any_name opt_as Typename ColQualList : { : CreateDomainStmt *n = makeNode(CreateDomainStmt); 0.00 : 519f45: 48 8b 3d 14 09 6a 00 mov 0x6a0914(%rip),%rdi # bba860 0.00 : 519f4c: be 28 00 00 00 mov $0x28,%esi 0.00 : 519f51: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519f58: e8 b3 ee 27 00 callq 798e10 0.00 : 519f5d: c7 00 de 02 00 00 movl $0x2de,(%rax) : n->domainname = $3; 0.00 : 519f63: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : *****************************************************************************/ : : CreateDomainStmt: : CREATE DOMAIN_P any_name opt_as Typename ColQualList : { : CreateDomainStmt *n = makeNode(CreateDomainStmt); 0.00 : 519f6a: 48 89 c3 mov %rax,%rbx : n->domainname = $3; : n->typeName = $5; : SplitColQualList($6, &n->constraints, &n->collClause, 0.00 : 519f6d: 48 8d 53 18 lea 0x18(%rbx),%rdx : yyscanner); : $$ = (Node *)n; 0.00 : 519f71: 49 89 de mov %rbx,%r14 : : CreateDomainStmt: : CREATE DOMAIN_P any_name opt_as Typename ColQualList : { : CreateDomainStmt *n = makeNode(CreateDomainStmt); : n->domainname = $3; 0.00 : 519f74: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 519f78: 48 89 43 08 mov %rax,0x8(%rbx) : n->typeName = $5; 0.00 : 519f7c: 48 8b 46 f8 mov -0x8(%rsi),%rax : SplitColQualList($6, &n->constraints, &n->collClause, 0.00 : 519f80: 48 8d 73 20 lea 0x20(%rbx),%rsi : CreateDomainStmt: : CREATE DOMAIN_P any_name opt_as Typename ColQualList : { : CreateDomainStmt *n = makeNode(CreateDomainStmt); : n->domainname = $3; : n->typeName = $5; 0.00 : 519f84: 48 89 43 10 mov %rax,0x10(%rbx) : SplitColQualList($6, &n->constraints, &n->collClause, 0.00 : 519f88: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 519f8f: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 519f96: 48 8b 38 mov (%rax),%rdi 0.00 : 519f99: e8 f2 71 ff ff callq 511190 : yyscanner); : $$ = (Node *)n; : } : ; 0.00 : 519f9e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519fa5: e9 d6 79 ff ff jmpq 511980 : n->setstmt = $4; : $$ = (Node *)n; : } : | ALTER SYSTEM_P RESET generic_reset : { : AlterSystemStmt *n = makeNode(AlterSystemStmt); 0.00 : 519faa: 48 8b 3d af 08 6a 00 mov 0x6a08af(%rip),%rdi # bba860 0.00 : 519fb1: be 10 00 00 00 mov $0x10,%esi 0.00 : 519fb6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519fbd: e8 4e ee 27 00 callq 798e10 0.00 : 519fc2: c7 00 1e 03 00 00 movl $0x31e,(%rax) : n->setstmt = $4; 0.00 : 519fc8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$ = (Node *)n; 0.00 : 519fcf: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER SYSTEM_P RESET generic_reset : { : AlterSystemStmt *n = makeNode(AlterSystemStmt); : n->setstmt = $4; 0.00 : 519fd2: 48 8b 13 mov (%rbx),%rdx 0.00 : 519fd5: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 519fd9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 519fe0: e9 9b 79 ff ff jmpq 511980 : *****************************************************************************/ : : AlterSystemStmt: : ALTER SYSTEM_P SET generic_set : { : AlterSystemStmt *n = makeNode(AlterSystemStmt); 0.00 : 519fe5: 48 8b 3d 74 08 6a 00 mov 0x6a0874(%rip),%rdi # bba860 0.00 : 519fec: be 10 00 00 00 mov $0x10,%esi 0.00 : 519ff1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 519ff8: e8 13 ee 27 00 callq 798e10 0.00 : 519ffd: c7 00 1e 03 00 00 movl $0x31e,(%rax) : n->setstmt = $4; 0.00 : 51a003: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 51a00a: 49 89 c6 mov %rax,%r14 : : AlterSystemStmt: : ALTER SYSTEM_P SET generic_set : { : AlterSystemStmt *n = makeNode(AlterSystemStmt); : n->setstmt = $4; 0.00 : 51a00d: 48 8b 11 mov (%rcx),%rdx 0.00 : 51a010: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | ALTER SYSTEM_P RESET generic_reset 0.00 : 51a014: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a01b: e9 60 79 ff ff jmpq 511980 : n->missing_ok = FALSE; : $$ = (Node *)n; : } : | DROP DATABASE IF_P EXISTS database_name : { : DropdbStmt *n = makeNode(DropdbStmt); 0.00 : 51a020: 48 8b 3d 39 08 6a 00 mov 0x6a0839(%rip),%rdi # bba860 0.00 : 51a027: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a02c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a033: e8 d8 ed 27 00 callq 798e10 0.00 : 51a038: c7 00 e0 02 00 00 movl $0x2e0,(%rax) : n->dbname = $5; 0.00 : 51a03e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->missing_ok = TRUE; : $$ = (Node *)n; 0.00 : 51a045: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | DROP DATABASE IF_P EXISTS database_name : { : DropdbStmt *n = makeNode(DropdbStmt); : n->dbname = $5; 0.00 : 51a048: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = TRUE; 0.00 : 51a04b: c6 40 10 01 movb $0x1,0x10(%rax) : $$ = (Node *)n; : } : | DROP DATABASE IF_P EXISTS database_name : { : DropdbStmt *n = makeNode(DropdbStmt); : n->dbname = $5; 0.00 : 51a04f: 48 89 50 08 mov %rdx,0x8(%rax) : n->missing_ok = TRUE; : $$ = (Node *)n; : } : ; 0.00 : 51a053: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a05a: e9 21 79 ff ff jmpq 511980 : * This is implicitly CASCADE, no need for drop behavior : *****************************************************************************/ : : DropdbStmt: DROP DATABASE database_name : { : DropdbStmt *n = makeNode(DropdbStmt); 0.00 : 51a05f: 48 8b 3d fa 07 6a 00 mov 0x6a07fa(%rip),%rdi # bba860 0.00 : 51a066: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a06b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a072: e8 99 ed 27 00 callq 798e10 0.00 : 51a077: c7 00 e0 02 00 00 movl $0x2e0,(%rax) : n->dbname = $3; 0.00 : 51a07d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->missing_ok = FALSE; : $$ = (Node *)n; 0.00 : 51a084: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : DropdbStmt: DROP DATABASE database_name : { : DropdbStmt *n = makeNode(DropdbStmt); : n->dbname = $3; 0.00 : 51a087: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = FALSE; 0.00 : 51a08a: c6 40 10 00 movb $0x0,0x10(%rax) : *****************************************************************************/ : : DropdbStmt: DROP DATABASE database_name : { : DropdbStmt *n = makeNode(DropdbStmt); : n->dbname = $3; 0.00 : 51a08e: 48 89 50 08 mov %rdx,0x8(%rax) : n->missing_ok = FALSE; : $$ = (Node *)n; : } : | DROP DATABASE IF_P EXISTS database_name 0.00 : 51a092: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a099: e9 e2 78 ff ff jmpq 511980 : ; : : AlterDatabaseSetStmt: : ALTER DATABASE database_name SetResetClause : { : AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); 0.00 : 51a09e: 48 8b 3d bb 07 6a 00 mov 0x6a07bb(%rip),%rdi # bba860 0.00 : 51a0a5: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a0aa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a0b1: e8 5a ed 27 00 callq 798e10 0.00 : 51a0b6: c7 00 f4 02 00 00 movl $0x2f4,(%rax) : n->dbname = $3; 0.00 : 51a0bc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->setstmt = $4; : $$ = (Node *)n; 0.00 : 51a0c3: 49 89 c6 mov %rax,%r14 : : AlterDatabaseSetStmt: : ALTER DATABASE database_name SetResetClause : { : AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); : n->dbname = $3; 0.00 : 51a0c6: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51a0ca: 48 89 50 08 mov %rdx,0x8(%rax) : n->setstmt = $4; 0.00 : 51a0ce: 48 8b 11 mov (%rcx),%rdx 0.00 : 51a0d1: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51a0d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a0dc: e9 9f 78 ff ff jmpq 511980 : n->options = $4; : $$ = (Node *)n; : } : | ALTER DATABASE database_name SET TABLESPACE name : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); 0.00 : 51a0e1: 48 8b 3d 78 07 6a 00 mov 0x6a0778(%rip),%rdi # bba860 0.00 : 51a0e8: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a0ed: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a0f4: e8 17 ed 27 00 callq 798e10 0.00 : 51a0f9: c7 00 f3 02 00 00 movl $0x2f3,(%rax) : n->dbname = $3; 0.00 : 51a0ff: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->options = $4; : $$ = (Node *)n; : } : | ALTER DATABASE database_name SET TABLESPACE name : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); 0.00 : 51a106: 48 89 c3 mov %rax,%rbx : n->dbname = $3; : n->options = list_make1(makeDefElem("tablespace", : (Node *)makeString($6))); : $$ = (Node *)n; 0.00 : 51a109: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER DATABASE database_name SET TABLESPACE name : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); : n->dbname = $3; 0.00 : 51a10c: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 51a110: 48 89 43 08 mov %rax,0x8(%rbx) : n->options = list_make1(makeDefElem("tablespace", 0.00 : 51a114: 48 8b 3a mov (%rdx),%rdi 0.00 : 51a117: e8 d4 55 0e 00 callq 5ff6f0 0.00 : 51a11c: bf f0 b0 8d 00 mov $0x8db0f0,%edi 0.00 : 51a121: 48 89 c6 mov %rax,%rsi 0.00 : 51a124: e8 d7 73 0d 00 callq 5f1500 0.00 : 51a129: 31 f6 xor %esi,%esi 0.00 : 51a12b: 48 89 c7 mov %rax,%rdi 0.00 : 51a12e: e8 1d 77 0c 00 callq 5e1850 0.00 : 51a133: 48 89 43 10 mov %rax,0x10(%rbx) : (Node *)makeString($6))); : $$ = (Node *)n; : } : ; 0.00 : 51a137: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a13e: e9 3d 78 ff ff jmpq 511980 : n->options = $5; : $$ = (Node *)n; : } : | ALTER DATABASE database_name createdb_opt_list : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); 0.00 : 51a143: 48 8b 3d 16 07 6a 00 mov 0x6a0716(%rip),%rdi # bba860 0.00 : 51a14a: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a14f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a156: e8 b5 ec 27 00 callq 798e10 0.00 : 51a15b: c7 00 f3 02 00 00 movl $0x2f3,(%rax) : n->dbname = $3; 0.00 : 51a161: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->options = $4; : $$ = (Node *)n; 0.00 : 51a168: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER DATABASE database_name createdb_opt_list : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); : n->dbname = $3; 0.00 : 51a16b: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51a16f: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $4; 0.00 : 51a173: 48 8b 16 mov (%rsi),%rdx 0.00 : 51a176: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | ALTER DATABASE database_name SET TABLESPACE name 0.00 : 51a17a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a181: e9 fa 77 ff ff jmpq 511980 : *****************************************************************************/ : : AlterDatabaseStmt: : ALTER DATABASE database_name WITH createdb_opt_list : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); 0.00 : 51a186: 48 8b 3d d3 06 6a 00 mov 0x6a06d3(%rip),%rdi # bba860 0.00 : 51a18d: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a192: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a199: e8 72 ec 27 00 callq 798e10 0.00 : 51a19e: c7 00 f3 02 00 00 movl $0x2f3,(%rax) : n->dbname = $3; 0.00 : 51a1a4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->options = $5; : $$ = (Node *)n; 0.00 : 51a1ab: 49 89 c6 mov %rax,%r14 : : AlterDatabaseStmt: : ALTER DATABASE database_name WITH createdb_opt_list : { : AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); : n->dbname = $3; 0.00 : 51a1ae: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51a1b2: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 51a1b6: 48 8b 13 mov (%rbx),%rdx 0.00 : 51a1b9: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | ALTER DATABASE database_name createdb_opt_list 0.00 : 51a1bd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a1c4: e9 b7 77 ff ff jmpq 511980 : { $$ = list_make1(makeString($1)); } : | role_list ',' RoleId : { $$ = lappend($1, makeString($3)); } : ; : : SignedIconst: Iconst { $$ = $1; } 0.00 : 51a1c9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a1d0: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51a1d7: ff ff ff 0.00 : 51a1da: 49 21 f6 and %rsi,%r14 0.00 : 51a1dd: 8b 03 mov (%rbx),%eax 0.00 : 51a1df: 49 09 c6 or %rax,%r14 : | '+' Iconst { $$ = + $2; } 0.00 : 51a1e2: e9 99 77 ff ff jmpq 511980 0.00 : 51a1e7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a1ee: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51a1f5: ff ff ff 0.00 : 51a1f8: 49 21 ce and %rcx,%r14 0.00 : 51a1fb: 8b 02 mov (%rdx),%eax 0.00 : 51a1fd: 49 09 c6 or %rax,%r14 : | '-' Iconst { $$ = - $2; } 0.00 : 51a200: e9 7b 77 ff ff jmpq 511980 : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } : | TABLESPACE { $$ = pstrdup($1); } : | TEMPLATE { $$ = pstrdup($1); } 0.00 : 51a205: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a20c: 48 8b 39 mov (%rcx),%rdi 0.00 : 51a20f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a216: e8 35 ed 27 00 callq 798f50 : ; 0.00 : 51a21b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } : | TABLESPACE { $$ = pstrdup($1); } : | TEMPLATE { $$ = pstrdup($1); } 0.00 : 51a222: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51a225: e9 56 77 ff ff jmpq 511980 : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } : | TABLESPACE { $$ = pstrdup($1); } 0.00 : 51a22a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a231: 48 8b 3a mov (%rdx),%rdi 0.00 : 51a234: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a23b: e8 10 ed 27 00 callq 798f50 : | TEMPLATE { $$ = pstrdup($1); } 0.00 : 51a240: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } : | TABLESPACE { $$ = pstrdup($1); } 0.00 : 51a247: 49 89 c6 mov %rax,%r14 : | TEMPLATE { $$ = pstrdup($1); } 0.00 : 51a24a: e9 31 77 ff ff jmpq 511980 : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } 0.00 : 51a24f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51a256: 48 8b 38 mov (%rax),%rdi 0.00 : 51a259: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a260: e8 eb ec 27 00 callq 798f50 : | TABLESPACE { $$ = pstrdup($1); } 0.00 : 51a265: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } : | OWNER { $$ = pstrdup($1); } 0.00 : 51a26c: 49 89 c6 mov %rax,%r14 : | TABLESPACE { $$ = pstrdup($1); } 0.00 : 51a26f: e9 0c 77 ff ff jmpq 511980 : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } 0.00 : 51a274: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a27b: 48 8b 3e mov (%rsi),%rdi 0.00 : 51a27e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a285: e8 c6 ec 27 00 callq 798f50 : | OWNER { $$ = pstrdup($1); } 0.00 : 51a28a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } : | LOCATION { $$ = pstrdup($1); } 0.00 : 51a291: 49 89 c6 mov %rax,%r14 : | OWNER { $$ = pstrdup($1); } 0.00 : 51a294: e9 e7 76 ff ff jmpq 511980 : * exercising every such option, at least at the syntax level. : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } 0.00 : 51a299: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a2a0: 48 8b 3b mov (%rbx),%rdi 0.00 : 51a2a3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a2aa: e8 a1 ec 27 00 callq 798f50 : | LOCATION { $$ = pstrdup($1); } 0.00 : 51a2af: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * exercising every such option, at least at the syntax level. : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } : | ENCODING { $$ = pstrdup($1); } 0.00 : 51a2b6: 49 89 c6 mov %rax,%r14 : | LOCATION { $$ = pstrdup($1); } 0.00 : 51a2b9: e9 c2 76 ff ff jmpq 511980 : * option will silently break. Best defense is to provide a regression test : * exercising every such option, at least at the syntax level. : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } 0.00 : 51a2be: bf ea 96 7c 00 mov $0x7c96ea,%edi 0.00 : 51a2c3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a2ca: e8 81 ec 27 00 callq 798f50 : | ENCODING { $$ = pstrdup($1); } 0.00 : 51a2cf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * option will silently break. Best defense is to provide a regression test : * exercising every such option, at least at the syntax level. : */ : createdb_opt_name: : IDENT { $$ = $1; } : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } 0.00 : 51a2d6: 49 89 c6 mov %rax,%r14 : | ENCODING { $$ = pstrdup($1); } 0.00 : 51a2d9: e9 a2 76 ff ff jmpq 511980 : * non-keyword option name into a keyword and forgets to add it here, the : * option will silently break. Best defense is to provide a regression test : * exercising every such option, at least at the syntax level. : */ : createdb_opt_name: : IDENT { $$ = $1; } 0.00 : 51a2de: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a2e5: 4c 8b 31 mov (%rcx),%r14 : | CONNECTION LIMIT { $$ = pstrdup("connection_limit"); } 0.00 : 51a2e8: e9 93 76 ff ff jmpq 511980 : { : $$ = makeDefElem($1, (Node *)makeString($3)); : } : | createdb_opt_name opt_equal DEFAULT : { : $$ = makeDefElem($1, NULL); 0.00 : 51a2ed: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a2f4: 31 f6 xor %esi,%esi 0.00 : 51a2f6: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51a2fa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a301: e8 fa 71 0d 00 callq 5f1500 : } : ; 0.00 : 51a306: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem($1, (Node *)makeString($3)); : } : | createdb_opt_name opt_equal DEFAULT : { : $$ = makeDefElem($1, NULL); 0.00 : 51a30d: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51a310: e9 6b 76 ff ff jmpq 511980 : { : $$ = makeDefElem($1, (Node *)makeInteger($3)); : } : | createdb_opt_name opt_equal opt_boolean_or_string : { : $$ = makeDefElem($1, (Node *)makeString($3)); 0.00 : 51a315: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a31c: 48 8b 3e mov (%rsi),%rdi 0.00 : 51a31f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a326: e8 c5 53 0e 00 callq 5ff6f0 0.00 : 51a32b: 48 89 c6 mov %rax,%rsi 0.00 : 51a32e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51a335: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 51a339: e8 c2 71 0d 00 callq 5f1500 : } : | createdb_opt_name opt_equal DEFAULT 0.00 : 51a33e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem($1, (Node *)makeInteger($3)); : } : | createdb_opt_name opt_equal opt_boolean_or_string : { : $$ = makeDefElem($1, (Node *)makeString($3)); 0.00 : 51a345: 49 89 c6 mov %rax,%r14 : } : | createdb_opt_name opt_equal DEFAULT 0.00 : 51a348: e9 33 76 ff ff jmpq 511980 : ; : : createdb_opt_item: : createdb_opt_name opt_equal SignedIconst : { : $$ = makeDefElem($1, (Node *)makeInteger($3)); 0.00 : 51a34d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a354: 48 63 39 movslq (%rcx),%rdi 0.00 : 51a357: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a35e: e8 ed 53 0e 00 callq 5ff750 0.00 : 51a363: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a36a: 48 89 c6 mov %rax,%rsi 0.00 : 51a36d: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 51a371: e8 8a 71 0d 00 callq 5f1500 : } : | createdb_opt_name opt_equal opt_boolean_or_string 0.00 : 51a376: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : createdb_opt_item: : createdb_opt_name opt_equal SignedIconst : { : $$ = makeDefElem($1, (Node *)makeInteger($3)); 0.00 : 51a37d: 49 89 c6 mov %rax,%r14 : } : | createdb_opt_name opt_equal opt_boolean_or_string 0.00 : 51a380: e9 fb 75 ff ff jmpq 511980 : | /* EMPTY */ { $$ = NIL; } : ; : : createdb_opt_items: : createdb_opt_item { $$ = list_make1($1); } : | createdb_opt_items createdb_opt_item { $$ = lappend($1, $2); } 0.00 : 51a385: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a38c: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 51a390: 48 8b 32 mov (%rdx),%rsi 0.00 : 51a393: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a39a: e8 e1 7a 0c 00 callq 5e1e80 : ; 0.00 : 51a39f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /* EMPTY */ { $$ = NIL; } : ; : : createdb_opt_items: : createdb_opt_item { $$ = list_make1($1); } : | createdb_opt_items createdb_opt_item { $$ = lappend($1, $2); } 0.00 : 51a3a6: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51a3a9: e9 d2 75 ff ff jmpq 511980 : createdb_opt_items { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : createdb_opt_items: : createdb_opt_item { $$ = list_make1($1); } 0.00 : 51a3ae: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51a3b5: 31 f6 xor %esi,%esi 0.00 : 51a3b7: 48 8b 38 mov (%rax),%rdi 0.00 : 51a3ba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a3c1: e8 8a 74 0c 00 callq 5e1850 : | createdb_opt_items createdb_opt_item { $$ = lappend($1, $2); } 0.00 : 51a3c6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : createdb_opt_items { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } : ; : : createdb_opt_items: : createdb_opt_item { $$ = list_make1($1); } 0.00 : 51a3cd: 49 89 c6 mov %rax,%r14 : | createdb_opt_items createdb_opt_item { $$ = lappend($1, $2); } 0.00 : 51a3d0: e9 ab 75 ff ff jmpq 511980 : } : ; : : createdb_opt_list: : createdb_opt_items { $$ = $1; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 51a3d5: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51a3d8: e9 a3 75 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : createdb_opt_list: : createdb_opt_items { $$ = $1; } 0.00 : 51a3dd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a3e4: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 51a3e7: e9 94 75 ff ff jmpq 511980 : *****************************************************************************/ : : CreatedbStmt: : CREATE DATABASE database_name opt_with createdb_opt_list : { : CreatedbStmt *n = makeNode(CreatedbStmt); 0.00 : 51a3ec: 48 8b 3d 6d 04 6a 00 mov 0x6a046d(%rip),%rdi # bba860 0.00 : 51a3f3: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a3f8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a3ff: e8 0c ea 27 00 callq 798e10 0.00 : 51a404: c7 00 df 02 00 00 movl $0x2df,(%rax) : n->dbname = $3; 0.00 : 51a40a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->options = $5; : $$ = (Node *)n; 0.00 : 51a411: 49 89 c6 mov %rax,%r14 : : CreatedbStmt: : CREATE DATABASE database_name opt_with createdb_opt_list : { : CreatedbStmt *n = makeNode(CreatedbStmt); : n->dbname = $3; 0.00 : 51a414: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51a418: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 51a41c: 48 8b 13 mov (%rbx),%rdx 0.00 : 51a41f: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51a423: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a42a: e9 51 75 ff ff jmpq 511980 : * : *****************************************************************************/ : : LoadStmt: LOAD file_name : { : LoadStmt *n = makeNode(LoadStmt); 0.00 : 51a42f: 48 8b 3d 2a 04 6a 00 mov 0x6a042a(%rip),%rdi # bba860 0.00 : 51a436: be 10 00 00 00 mov $0x10,%esi 0.00 : 51a43b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a442: e8 c9 e9 27 00 callq 798e10 0.00 : 51a447: c7 00 dd 02 00 00 movl $0x2dd,(%rax) : n->filename = $2; 0.00 : 51a44d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 51a454: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : LoadStmt: LOAD file_name : { : LoadStmt *n = makeNode(LoadStmt); : n->filename = $2; 0.00 : 51a457: 48 8b 11 mov (%rcx),%rdx 0.00 : 51a45a: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51a45e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a465: e9 16 75 ff ff jmpq 511980 : : opt_check_option: : WITH CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } : | WITH CASCADED CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } : | WITH LOCAL CHECK OPTION { $$ = LOCAL_CHECK_OPTION; } : | /* EMPTY */ { $$ = NO_CHECK_OPTION; } 0.00 : 51a46a: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51a471: ff ff ff 0.00 : 51a474: 49 21 f6 and %rsi,%r14 : ; 0.00 : 51a477: e9 04 75 ff ff jmpq 511980 : ; : : opt_check_option: : WITH CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } : | WITH CASCADED CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } : | WITH LOCAL CHECK OPTION { $$ = LOCAL_CHECK_OPTION; } 0.00 : 51a47c: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51a483: ff ff ff 0.00 : 51a486: 49 21 de and %rbx,%r14 0.00 : 51a489: 49 83 ce 01 or $0x1,%r14 : | /* EMPTY */ { $$ = NO_CHECK_OPTION; } 0.00 : 51a48d: e9 ee 74 ff ff jmpq 511980 : } : ; : : opt_check_option: : WITH CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } : | WITH CASCADED CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } 0.00 : 51a492: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51a499: ff ff ff 0.00 : 51a49c: 49 21 ce and %rcx,%r14 0.00 : 51a49f: 49 83 ce 02 or $0x2,%r14 : | WITH LOCAL CHECK OPTION { $$ = LOCAL_CHECK_OPTION; } 0.00 : 51a4a3: e9 d8 74 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_check_option: : WITH CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } 0.00 : 51a4a8: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51a4af: ff ff ff 0.00 : 51a4b2: 49 21 d6 and %rdx,%r14 0.00 : 51a4b5: 49 83 ce 02 or $0x2,%r14 : | WITH CASCADED CHECK OPTION { $$ = CASCADED_CHECK_OPTION; } 0.00 : 51a4b9: e9 c2 74 ff ff jmpq 511980 : $$ = (Node *) n; : } : | CREATE OR REPLACE OptTemp RECURSIVE VIEW qualified_name '(' columnList ')' opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); 0.00 : 51a4be: 48 8b 3d 9b 03 6a 00 mov 0x6a039b(%rip),%rdi # bba860 0.00 : 51a4c5: be 38 00 00 00 mov $0x38,%esi 0.00 : 51a4ca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a4d1: e8 3a e9 27 00 callq 798e10 0.00 : 51a4d6: c7 00 dc 02 00 00 movl $0x2dc,(%rax) : n->view = $7; 0.00 : 51a4dc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *) n; : } : | CREATE OR REPLACE OptTemp RECURSIVE VIEW qualified_name '(' columnList ')' opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); 0.00 : 51a4e3: 48 89 c3 mov %rax,%rbx : n->view = $7; 0.00 : 51a4e6: 48 8b 51 c8 mov -0x38(%rcx),%rdx 0.00 : 51a4ea: 48 89 50 08 mov %rdx,0x8(%rax) : n->view->relpersistence = $4; 0.00 : 51a4ee: 8b 41 b0 mov -0x50(%rcx),%eax 0.00 : 51a4f1: 88 42 24 mov %al,0x24(%rdx) : n->aliases = $9; 0.00 : 51a4f4: 48 8b 71 d8 mov -0x28(%rcx),%rsi : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $13); 0.00 : 51a4f8: 48 8b 43 08 mov 0x8(%rbx),%rax : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $7; : n->view->relpersistence = $4; : n->aliases = $9; 0.00 : 51a4fc: 48 89 73 10 mov %rsi,0x10(%rbx) : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $13); 0.00 : 51a500: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51a504: 48 8b 78 18 mov 0x18(%rax),%rdi 0.00 : 51a508: e8 43 70 ff ff callq 511550 : n->replace = true; 0.00 : 51a50d: c6 43 20 01 movb $0x1,0x20(%rbx) : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $7; : n->view->relpersistence = $4; : n->aliases = $9; : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $13); 0.00 : 51a511: 48 89 43 18 mov %rax,0x18(%rbx) : n->replace = true; : n->options = $11; 0.00 : 51a515: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a51c: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 51a520: 48 89 43 28 mov %rax,0x28(%rbx) : n->withCheckOption = $14; 0.00 : 51a524: 8b 06 mov (%rsi),%eax : if (n->withCheckOption != NO_CHECK_OPTION) 0.00 : 51a526: 85 c0 test %eax,%eax : n->view->relpersistence = $4; : n->aliases = $9; : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $13); : n->replace = true; : n->options = $11; : n->withCheckOption = $14; 0.00 : 51a528: 89 43 30 mov %eax,0x30(%rbx) : if (n->withCheckOption != NO_CHECK_OPTION) 0.00 : 51a52b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a532: 0f 85 e1 fa 00 00 jne 52a019 : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("WITH CHECK OPTION not supported on recursive views"), : parser_errposition(@14))); : $$ = (Node *) n; 0.00 : 51a538: 49 89 de mov %rbx,%r14 : } : ; 0.00 : 51a53b: e9 40 74 ff ff jmpq 511980 : $$ = (Node *) n; : } : | CREATE OptTemp RECURSIVE VIEW qualified_name '(' columnList ')' opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); 0.00 : 51a540: 48 8b 3d 19 03 6a 00 mov 0x6a0319(%rip),%rdi # bba860 0.00 : 51a547: be 38 00 00 00 mov $0x38,%esi 0.00 : 51a54c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a553: e8 b8 e8 27 00 callq 798e10 0.00 : 51a558: c7 00 dc 02 00 00 movl $0x2dc,(%rax) 0.00 : 51a55e: 48 89 c3 mov %rax,%rbx : n->view = $5; 0.00 : 51a561: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51a568: 48 8b 50 c8 mov -0x38(%rax),%rdx 0.00 : 51a56c: 48 89 53 08 mov %rdx,0x8(%rbx) : n->view->relpersistence = $2; 0.00 : 51a570: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a577: 8b 41 b0 mov -0x50(%rcx),%eax 0.00 : 51a57a: 88 42 24 mov %al,0x24(%rdx) : n->aliases = $7; 0.00 : 51a57d: 48 8b 71 d8 mov -0x28(%rcx),%rsi : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $11); 0.00 : 51a581: 48 8b 43 08 mov 0x8(%rbx),%rax : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $5; : n->view->relpersistence = $2; : n->aliases = $7; 0.00 : 51a585: 48 89 73 10 mov %rsi,0x10(%rbx) : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $11); 0.00 : 51a589: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51a58d: 48 8b 78 18 mov 0x18(%rax),%rdi 0.00 : 51a591: e8 ba 6f ff ff callq 511550 : n->replace = false; 0.00 : 51a596: c6 43 20 00 movb $0x0,0x20(%rbx) : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $5; : n->view->relpersistence = $2; : n->aliases = $7; : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $11); 0.00 : 51a59a: 48 89 43 18 mov %rax,0x18(%rbx) : n->replace = false; : n->options = $9; 0.00 : 51a59e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a5a5: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 51a5a9: 48 89 43 28 mov %rax,0x28(%rbx) : n->withCheckOption = $12; 0.00 : 51a5ad: 8b 06 mov (%rsi),%eax : if (n->withCheckOption != NO_CHECK_OPTION) 0.00 : 51a5af: 85 c0 test %eax,%eax : n->view->relpersistence = $2; : n->aliases = $7; : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $11); : n->replace = false; : n->options = $9; : n->withCheckOption = $12; 0.00 : 51a5b1: 89 43 30 mov %eax,0x30(%rbx) : if (n->withCheckOption != NO_CHECK_OPTION) 0.00 : 51a5b4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a5bb: 0f 85 d5 fe 00 00 jne 52a496 : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("WITH CHECK OPTION not supported on recursive views"), : parser_errposition(@12))); : $$ = (Node *) n; 0.00 : 51a5c1: 49 89 de mov %rbx,%r14 : } : | CREATE OR REPLACE OptTemp RECURSIVE VIEW qualified_name '(' columnList ')' opt_reloptions 0.00 : 51a5c4: e9 b7 73 ff ff jmpq 511980 : $$ = (Node *) n; : } : | CREATE OR REPLACE OptTemp VIEW qualified_name opt_column_list opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); 0.00 : 51a5c9: 48 8b 3d 90 02 6a 00 mov 0x6a0290(%rip),%rdi # bba860 0.00 : 51a5d0: be 38 00 00 00 mov $0x38,%esi 0.00 : 51a5d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a5dc: e8 2f e8 27 00 callq 798e10 0.00 : 51a5e1: c7 00 dc 02 00 00 movl $0x2dc,(%rax) : n->view = $6; 0.00 : 51a5e7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->aliases = $7; : n->query = $10; : n->replace = true; : n->options = $8; : n->withCheckOption = $11; : $$ = (Node *) n; 0.00 : 51a5ee: 49 89 c6 mov %rax,%r14 : } : | CREATE OR REPLACE OptTemp VIEW qualified_name opt_column_list opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $6; 0.00 : 51a5f1: 48 8b 4e d8 mov -0x28(%rsi),%rcx 0.00 : 51a5f5: 48 89 48 08 mov %rcx,0x8(%rax) : n->view->relpersistence = $4; 0.00 : 51a5f9: 8b 56 c8 mov -0x38(%rsi),%edx 0.00 : 51a5fc: 88 51 24 mov %dl,0x24(%rcx) : n->aliases = $7; 0.00 : 51a5ff: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 51a603: 48 89 50 10 mov %rdx,0x10(%rax) : n->query = $10; 0.00 : 51a607: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->replace = true; 0.00 : 51a60b: c6 40 20 01 movb $0x1,0x20(%rax) : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $6; : n->view->relpersistence = $4; : n->aliases = $7; : n->query = $10; 0.00 : 51a60f: 48 89 50 18 mov %rdx,0x18(%rax) : n->replace = true; : n->options = $8; 0.00 : 51a613: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51a617: 48 89 50 28 mov %rdx,0x28(%rax) : n->withCheckOption = $11; 0.00 : 51a61b: 8b 16 mov (%rsi),%edx 0.00 : 51a61d: 89 50 30 mov %edx,0x30(%rax) : $$ = (Node *) n; : } : | CREATE OptTemp RECURSIVE VIEW qualified_name '(' columnList ')' opt_reloptions 0.00 : 51a620: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a627: e9 54 73 ff ff jmpq 511980 : *****************************************************************************/ : : ViewStmt: CREATE OptTemp VIEW qualified_name opt_column_list opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); 0.00 : 51a62c: 48 8b 3d 2d 02 6a 00 mov 0x6a022d(%rip),%rdi # bba860 0.00 : 51a633: be 38 00 00 00 mov $0x38,%esi 0.00 : 51a638: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a63f: e8 cc e7 27 00 callq 798e10 0.00 : 51a644: c7 00 dc 02 00 00 movl $0x2dc,(%rax) : n->view = $4; 0.00 : 51a64a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->aliases = $5; : n->query = $8; : n->replace = false; : n->options = $6; : n->withCheckOption = $9; : $$ = (Node *) n; 0.00 : 51a651: 49 89 c6 mov %rax,%r14 : : ViewStmt: CREATE OptTemp VIEW qualified_name opt_column_list opt_reloptions : AS SelectStmt opt_check_option : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $4; 0.00 : 51a654: 48 8b 4a d8 mov -0x28(%rdx),%rcx 0.00 : 51a658: 48 89 48 08 mov %rcx,0x8(%rax) : n->view->relpersistence = $2; 0.00 : 51a65c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a663: 8b 53 c8 mov -0x38(%rbx),%edx 0.00 : 51a666: 88 51 24 mov %dl,0x24(%rcx) : n->aliases = $5; 0.00 : 51a669: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 51a66d: 48 89 50 10 mov %rdx,0x10(%rax) : n->query = $8; 0.00 : 51a671: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->replace = false; 0.00 : 51a675: c6 40 20 00 movb $0x0,0x20(%rax) : { : ViewStmt *n = makeNode(ViewStmt); : n->view = $4; : n->view->relpersistence = $2; : n->aliases = $5; : n->query = $8; 0.00 : 51a679: 48 89 50 18 mov %rdx,0x18(%rax) : n->replace = false; : n->options = $6; 0.00 : 51a67d: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51a681: 48 89 50 28 mov %rdx,0x28(%rax) : n->withCheckOption = $9; 0.00 : 51a685: 8b 13 mov (%rbx),%edx 0.00 : 51a687: 89 50 30 mov %edx,0x30(%rax) : $$ = (Node *) n; : } : | CREATE OR REPLACE OptTemp VIEW qualified_name opt_column_list opt_reloptions 0.00 : 51a68a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a691: e9 ea 72 ff ff jmpq 511980 : ; : : transaction_mode_list_or_empty: : transaction_mode_list : | /* EMPTY */ : { $$ = NIL; } 0.00 : 51a696: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51a699: e9 e2 72 ff ff jmpq 511980 : transaction_mode_item : { $$ = list_make1($1); } : | transaction_mode_list ',' transaction_mode_item : { $$ = lappend($1, $3); } : | transaction_mode_list transaction_mode_item : { $$ = lappend($1, $2); } 0.00 : 51a69e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a6a5: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51a6a9: 48 8b 36 mov (%rsi),%rsi 0.00 : 51a6ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a6b3: e8 c8 77 0c 00 callq 5e1e80 : ; 0.00 : 51a6b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : transaction_mode_item : { $$ = list_make1($1); } : | transaction_mode_list ',' transaction_mode_item : { $$ = lappend($1, $3); } : | transaction_mode_list transaction_mode_item : { $$ = lappend($1, $2); } 0.00 : 51a6bf: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51a6c2: e9 b9 72 ff ff jmpq 511980 : /* Syntax with commas is SQL-spec, without commas is Postgres historical */ : transaction_mode_list: : transaction_mode_item : { $$ = list_make1($1); } : | transaction_mode_list ',' transaction_mode_item : { $$ = lappend($1, $3); } 0.00 : 51a6c7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a6ce: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 51a6d2: 48 8b 33 mov (%rbx),%rsi 0.00 : 51a6d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a6dc: e8 9f 77 0c 00 callq 5e1e80 : | transaction_mode_list transaction_mode_item 0.00 : 51a6e1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* Syntax with commas is SQL-spec, without commas is Postgres historical */ : transaction_mode_list: : transaction_mode_item : { $$ = list_make1($1); } : | transaction_mode_list ',' transaction_mode_item : { $$ = lappend($1, $3); } 0.00 : 51a6e8: 49 89 c6 mov %rax,%r14 : | transaction_mode_list transaction_mode_item 0.00 : 51a6eb: e9 90 72 ff ff jmpq 511980 : ; : : /* Syntax with commas is SQL-spec, without commas is Postgres historical */ : transaction_mode_list: : transaction_mode_item : { $$ = list_make1($1); } 0.00 : 51a6f0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a6f7: 31 f6 xor %esi,%esi 0.00 : 51a6f9: 48 8b 39 mov (%rcx),%rdi 0.00 : 51a6fc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a703: e8 48 71 0c 00 callq 5e1850 : | transaction_mode_list ',' transaction_mode_item 0.00 : 51a708: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* Syntax with commas is SQL-spec, without commas is Postgres historical */ : transaction_mode_list: : transaction_mode_item : { $$ = list_make1($1); } 0.00 : 51a70f: 49 89 c6 mov %rax,%r14 : | transaction_mode_list ',' transaction_mode_item 0.00 : 51a712: e9 69 72 ff ff jmpq 511980 : makeIntConst(FALSE, @1)); } : | DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", : makeIntConst(TRUE, @1)); } : | NOT DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", 0.00 : 51a717: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51a71e: 31 ff xor %edi,%edi 0.00 : 51a720: 8b 72 fc mov -0x4(%rdx),%esi 0.00 : 51a723: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a72a: e8 e1 64 ff ff callq 510c10 0.00 : 51a72f: bf d3 96 7c 00 mov $0x7c96d3,%edi 0.00 : 51a734: 48 89 c6 mov %rax,%rsi 0.00 : 51a737: e8 c4 6d 0d 00 callq 5f1500 : makeIntConst(FALSE, @1)); } : ; 0.00 : 51a73c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : makeIntConst(FALSE, @1)); } : | DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", : makeIntConst(TRUE, @1)); } : | NOT DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", 0.00 : 51a743: 49 89 c6 mov %rax,%r14 : makeIntConst(FALSE, @1)); } : ; 0.00 : 51a746: e9 35 72 ff ff jmpq 511980 : makeIntConst(TRUE, @1)); } : | READ WRITE : { $$ = makeDefElem("transaction_read_only", : makeIntConst(FALSE, @1)); } : | DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", 0.00 : 51a74b: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51a752: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51a757: 8b 30 mov (%rax),%esi 0.00 : 51a759: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a760: e8 ab 64 ff ff callq 510c10 0.00 : 51a765: bf d3 96 7c 00 mov $0x7c96d3,%edi 0.00 : 51a76a: 48 89 c6 mov %rax,%rsi 0.00 : 51a76d: e8 8e 6d 0d 00 callq 5f1500 : makeIntConst(TRUE, @1)); } : | NOT DEFERRABLE 0.00 : 51a772: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : makeIntConst(TRUE, @1)); } : | READ WRITE : { $$ = makeDefElem("transaction_read_only", : makeIntConst(FALSE, @1)); } : | DEFERRABLE : { $$ = makeDefElem("transaction_deferrable", 0.00 : 51a779: 49 89 c6 mov %rax,%r14 : makeIntConst(TRUE, @1)); } : | NOT DEFERRABLE 0.00 : 51a77c: e9 ff 71 ff ff jmpq 511980 : makeStringConst($3, @3)); } : | READ ONLY : { $$ = makeDefElem("transaction_read_only", : makeIntConst(TRUE, @1)); } : | READ WRITE : { $$ = makeDefElem("transaction_read_only", 0.00 : 51a781: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 51a788: 31 ff xor %edi,%edi 0.00 : 51a78a: 8b 73 fc mov -0x4(%rbx),%esi 0.00 : 51a78d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a794: e8 77 64 ff ff callq 510c10 0.00 : 51a799: bf 55 a4 8d 00 mov $0x8da455,%edi 0.00 : 51a79e: 48 89 c6 mov %rax,%rsi 0.00 : 51a7a1: e8 5a 6d 0d 00 callq 5f1500 : makeIntConst(FALSE, @1)); } : | DEFERRABLE 0.00 : 51a7a6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : makeStringConst($3, @3)); } : | READ ONLY : { $$ = makeDefElem("transaction_read_only", : makeIntConst(TRUE, @1)); } : | READ WRITE : { $$ = makeDefElem("transaction_read_only", 0.00 : 51a7ad: 49 89 c6 mov %rax,%r14 : makeIntConst(FALSE, @1)); } : | DEFERRABLE 0.00 : 51a7b0: e9 cb 71 ff ff jmpq 511980 : transaction_mode_item: : ISOLATION LEVEL iso_level : { $$ = makeDefElem("transaction_isolation", : makeStringConst($3, @3)); } : | READ ONLY : { $$ = makeDefElem("transaction_read_only", 0.00 : 51a7b5: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51a7bc: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51a7c1: 8b 71 fc mov -0x4(%rcx),%esi 0.00 : 51a7c4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a7cb: e8 40 64 ff ff callq 510c10 0.00 : 51a7d0: bf 55 a4 8d 00 mov $0x8da455,%edi 0.00 : 51a7d5: 48 89 c6 mov %rax,%rsi 0.00 : 51a7d8: e8 23 6d 0d 00 callq 5f1500 : makeIntConst(TRUE, @1)); } : | READ WRITE 0.00 : 51a7dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : transaction_mode_item: : ISOLATION LEVEL iso_level : { $$ = makeDefElem("transaction_isolation", : makeStringConst($3, @3)); } : | READ ONLY : { $$ = makeDefElem("transaction_read_only", 0.00 : 51a7e4: 49 89 c6 mov %rax,%r14 : makeIntConst(TRUE, @1)); } : | READ WRITE 0.00 : 51a7e7: e9 94 71 ff ff jmpq 511980 : | /*EMPTY*/ {} : ; : : transaction_mode_item: : ISOLATION LEVEL iso_level : { $$ = makeDefElem("transaction_isolation", 0.00 : 51a7ec: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a7f3: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51a7fa: 48 8b 3a mov (%rdx),%rdi 0.00 : 51a7fd: 8b 30 mov (%rax),%esi 0.00 : 51a7ff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a806: e8 65 63 ff ff callq 510b70 0.00 : 51a80b: bf 2a df 89 00 mov $0x89df2a,%edi 0.00 : 51a810: 48 89 c6 mov %rax,%rsi 0.00 : 51a813: e8 e8 6c 0d 00 callq 5f1500 : makeStringConst($3, @3)); } : | READ ONLY 0.00 : 51a818: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ {} : ; : : transaction_mode_item: : ISOLATION LEVEL iso_level : { $$ = makeDefElem("transaction_isolation", 0.00 : 51a81f: 49 89 c6 mov %rax,%r14 : makeStringConst($3, @3)); } : | READ ONLY 0.00 : 51a822: e9 59 71 ff ff jmpq 511980 : { $$ = lappend($1, makeString($3)); } : ; : : SignedIconst: Iconst { $$ = $1; } : | '+' Iconst { $$ = + $2; } : | '-' Iconst { $$ = - $2; } 0.00 : 51a827: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a82e: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51a835: ff ff ff 0.00 : 51a838: 49 21 f6 and %rsi,%r14 0.00 : 51a83b: 8b 03 mov (%rbx),%eax 0.00 : 51a83d: f7 d8 neg %eax 0.00 : 51a83f: 89 c0 mov %eax,%eax 0.00 : 51a841: 49 09 c6 or %rax,%r14 : ; 0.00 : 51a844: e9 37 71 ff ff jmpq 511980 : * is chosen in part to make keywords acceptable as names wherever possible. : */ : : /* Column identifier --- names that can be column, table, etc names. : */ : ColId: IDENT { $$ = $1; } 0.00 : 51a849: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51a850: 4c 8b 30 mov (%rax),%r14 : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 51a853: e9 28 71 ff ff jmpq 511980 0.00 : 51a858: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51a85f: 48 8b 3a mov (%rdx),%rdi 0.00 : 51a862: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a869: e8 e2 e6 27 00 callq 798f50 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 51a86e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : */ : : /* Column identifier --- names that can be column, table, etc names. : */ : ColId: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 51a875: 49 89 c6 mov %rax,%r14 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 51a878: e9 03 71 ff ff jmpq 511980 : n->gid = $3; : $$ = (Node *)n; : } : | ROLLBACK PREPARED Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a87d: 48 8b 3d dc ff 69 00 mov 0x69ffdc(%rip),%rdi # bba860 0.00 : 51a884: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a889: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a890: e8 7b e5 27 00 callq 798e10 0.00 : 51a895: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_ROLLBACK_PREPARED; 0.00 : 51a89b: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : n->gid = $3; : $$ = (Node *)n; 0.00 : 51a8a2: 49 89 c6 mov %rax,%r14 : } : | ROLLBACK PREPARED Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_ROLLBACK_PREPARED; : n->gid = $3; 0.00 : 51a8a5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51a8ac: 48 8b 16 mov (%rsi),%rdx 0.00 : 51a8af: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51a8b3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a8ba: e9 c1 70 ff ff jmpq 511980 : n->gid = $3; : $$ = (Node *)n; : } : | COMMIT PREPARED Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a8bf: 48 8b 3d 9a ff 69 00 mov 0x69ff9a(%rip),%rdi # bba860 0.00 : 51a8c6: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a8cb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a8d2: e8 39 e5 27 00 callq 798e10 0.00 : 51a8d7: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_COMMIT_PREPARED; 0.00 : 51a8dd: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->gid = $3; : $$ = (Node *)n; 0.00 : 51a8e4: 49 89 c6 mov %rax,%r14 : } : | COMMIT PREPARED Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_COMMIT_PREPARED; : n->gid = $3; 0.00 : 51a8e7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51a8ee: 48 8b 13 mov (%rbx),%rdx 0.00 : 51a8f1: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | ROLLBACK PREPARED Sconst 0.00 : 51a8f5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a8fc: e9 7f 70 ff ff jmpq 511980 : (Node *)makeString($4))); : $$ = (Node *)n; : } : | PREPARE TRANSACTION Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a901: 48 8b 3d 58 ff 69 00 mov 0x69ff58(%rip),%rdi # bba860 0.00 : 51a908: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a90d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a914: e8 f7 e4 27 00 callq 798e10 0.00 : 51a919: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_PREPARE; 0.00 : 51a91f: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->gid = $3; : $$ = (Node *)n; 0.00 : 51a926: 49 89 c6 mov %rax,%r14 : } : | PREPARE TRANSACTION Sconst : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_PREPARE; : n->gid = $3; 0.00 : 51a929: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51a930: 48 8b 11 mov (%rcx),%rdx 0.00 : 51a933: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | COMMIT PREPARED Sconst 0.00 : 51a937: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a93e: e9 3d 70 ff ff jmpq 511980 : (Node *)makeString($5))); : $$ = (Node *)n; : } : | ROLLBACK opt_transaction TO ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a943: 48 8b 3d 16 ff 69 00 mov 0x69ff16(%rip),%rdi # bba860 0.00 : 51a94a: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a94f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a956: e8 b5 e4 27 00 callq 798e10 0.00 : 51a95b: 48 89 c3 mov %rax,%rbx 0.00 : 51a95e: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_ROLLBACK_TO; 0.00 : 51a964: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51a96b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : (Node *)makeString($4))); : $$ = (Node *)n; 0.00 : 51a972: 49 89 de mov %rbx,%r14 : } : | ROLLBACK opt_transaction TO ColId : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_ROLLBACK_TO; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51a975: 48 8b 38 mov (%rax),%rdi 0.00 : 51a978: e8 73 4d 0e 00 callq 5ff6f0 0.00 : 51a97d: bf e2 6a 7b 00 mov $0x7b6ae2,%edi 0.00 : 51a982: 48 89 c6 mov %rax,%rsi 0.00 : 51a985: e8 76 6b 0d 00 callq 5f1500 0.00 : 51a98a: 31 f6 xor %esi,%esi 0.00 : 51a98c: 48 89 c7 mov %rax,%rdi 0.00 : 51a98f: e8 bc 6e 0c 00 callq 5e1850 0.00 : 51a994: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *)makeString($4))); : $$ = (Node *)n; : } : | PREPARE TRANSACTION Sconst 0.00 : 51a998: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51a99f: e9 dc 6f ff ff jmpq 511980 : (Node *)makeString($2))); : $$ = (Node *)n; : } : | ROLLBACK opt_transaction TO SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a9a4: 48 8b 3d b5 fe 69 00 mov 0x69feb5(%rip),%rdi # bba860 0.00 : 51a9ab: be 18 00 00 00 mov $0x18,%esi 0.00 : 51a9b0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51a9b7: e8 54 e4 27 00 callq 798e10 0.00 : 51a9bc: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_ROLLBACK_TO; 0.00 : 51a9c2: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : (Node *)makeString($2))); : $$ = (Node *)n; : } : | ROLLBACK opt_transaction TO SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51a9c9: 48 89 c3 mov %rax,%rbx : n->kind = TRANS_STMT_ROLLBACK_TO; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51a9cc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : (Node *)makeString($5))); : $$ = (Node *)n; 0.00 : 51a9d3: 49 89 de mov %rbx,%r14 : } : | ROLLBACK opt_transaction TO SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_ROLLBACK_TO; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51a9d6: 48 8b 3e mov (%rsi),%rdi 0.00 : 51a9d9: e8 12 4d 0e 00 callq 5ff6f0 0.00 : 51a9de: bf e2 6a 7b 00 mov $0x7b6ae2,%edi 0.00 : 51a9e3: 48 89 c6 mov %rax,%rsi 0.00 : 51a9e6: e8 15 6b 0d 00 callq 5f1500 0.00 : 51a9eb: 31 f6 xor %esi,%esi 0.00 : 51a9ed: 48 89 c7 mov %rax,%rdi 0.00 : 51a9f0: e8 5b 6e 0c 00 callq 5e1850 0.00 : 51a9f5: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *)makeString($5))); : $$ = (Node *)n; : } : | ROLLBACK opt_transaction TO ColId 0.00 : 51a9f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51aa00: e9 7b 6f ff ff jmpq 511980 : (Node *)makeString($3))); : $$ = (Node *)n; : } : | RELEASE ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aa05: 48 8b 3d 54 fe 69 00 mov 0x69fe54(%rip),%rdi # bba860 0.00 : 51aa0c: be 18 00 00 00 mov $0x18,%esi 0.00 : 51aa11: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51aa18: e8 f3 e3 27 00 callq 798e10 0.00 : 51aa1d: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_RELEASE; 0.00 : 51aa23: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : (Node *)makeString($3))); : $$ = (Node *)n; : } : | RELEASE ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aa2a: 48 89 c3 mov %rax,%rbx : n->kind = TRANS_STMT_RELEASE; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aa2d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : (Node *)makeString($2))); : $$ = (Node *)n; 0.00 : 51aa34: 49 89 de mov %rbx,%r14 : } : | RELEASE ColId : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_RELEASE; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aa37: 48 8b 39 mov (%rcx),%rdi 0.00 : 51aa3a: e8 b1 4c 0e 00 callq 5ff6f0 0.00 : 51aa3f: bf e2 6a 7b 00 mov $0x7b6ae2,%edi 0.00 : 51aa44: 48 89 c6 mov %rax,%rsi 0.00 : 51aa47: e8 b4 6a 0d 00 callq 5f1500 0.00 : 51aa4c: 31 f6 xor %esi,%esi 0.00 : 51aa4e: 48 89 c7 mov %rax,%rdi 0.00 : 51aa51: e8 fa 6d 0c 00 callq 5e1850 0.00 : 51aa56: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *)makeString($2))); : $$ = (Node *)n; : } : | ROLLBACK opt_transaction TO SAVEPOINT ColId 0.00 : 51aa5a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51aa61: e9 1a 6f ff ff jmpq 511980 : (Node *)makeString($2))); : $$ = (Node *)n; : } : | RELEASE SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aa66: 48 8b 3d f3 fd 69 00 mov 0x69fdf3(%rip),%rdi # bba860 0.00 : 51aa6d: be 18 00 00 00 mov $0x18,%esi 0.00 : 51aa72: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51aa79: e8 92 e3 27 00 callq 798e10 0.00 : 51aa7e: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_RELEASE; 0.00 : 51aa84: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : (Node *)makeString($2))); : $$ = (Node *)n; : } : | RELEASE SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aa8b: 48 89 c3 mov %rax,%rbx : n->kind = TRANS_STMT_RELEASE; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aa8e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : (Node *)makeString($3))); : $$ = (Node *)n; 0.00 : 51aa95: 49 89 de mov %rbx,%r14 : } : | RELEASE SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_RELEASE; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aa98: 48 8b 3a mov (%rdx),%rdi 0.00 : 51aa9b: e8 50 4c 0e 00 callq 5ff6f0 0.00 : 51aaa0: bf e2 6a 7b 00 mov $0x7b6ae2,%edi 0.00 : 51aaa5: 48 89 c6 mov %rax,%rsi 0.00 : 51aaa8: e8 53 6a 0d 00 callq 5f1500 0.00 : 51aaad: 31 f6 xor %esi,%esi 0.00 : 51aaaf: 48 89 c7 mov %rax,%rdi 0.00 : 51aab2: e8 99 6d 0c 00 callq 5e1850 0.00 : 51aab7: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *)makeString($3))); : $$ = (Node *)n; : } : | RELEASE ColId 0.00 : 51aabb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51aac2: e9 b9 6e ff ff jmpq 511980 : n->options = NIL; : $$ = (Node *)n; : } : | SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aac7: 48 8b 3d 92 fd 69 00 mov 0x69fd92(%rip),%rdi # bba860 0.00 : 51aace: be 18 00 00 00 mov $0x18,%esi 0.00 : 51aad3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51aada: e8 31 e3 27 00 callq 798e10 0.00 : 51aadf: 48 89 c3 mov %rax,%rbx 0.00 : 51aae2: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_SAVEPOINT; 0.00 : 51aae8: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aaef: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : (Node *)makeString($2))); : $$ = (Node *)n; 0.00 : 51aaf6: 49 89 de mov %rbx,%r14 : } : | SAVEPOINT ColId : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_SAVEPOINT; : n->options = list_make1(makeDefElem("savepoint_name", 0.00 : 51aaf9: 48 8b 38 mov (%rax),%rdi 0.00 : 51aafc: e8 ef 4b 0e 00 callq 5ff6f0 0.00 : 51ab01: bf e2 6a 7b 00 mov $0x7b6ae2,%edi 0.00 : 51ab06: 48 89 c6 mov %rax,%rsi 0.00 : 51ab09: e8 f2 69 0d 00 callq 5f1500 0.00 : 51ab0e: 31 f6 xor %esi,%esi 0.00 : 51ab10: 48 89 c7 mov %rax,%rdi 0.00 : 51ab13: e8 38 6d 0c 00 callq 5e1850 0.00 : 51ab18: 48 89 43 08 mov %rax,0x8(%rbx) : (Node *)makeString($2))); : $$ = (Node *)n; : } : | RELEASE SAVEPOINT ColId 0.00 : 51ab1c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ab23: e9 58 6e ff ff jmpq 511980 : n->options = NIL; : $$ = (Node *)n; : } : | ROLLBACK opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51ab28: 48 8b 3d 31 fd 69 00 mov 0x69fd31(%rip),%rdi # bba860 0.00 : 51ab2f: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ab34: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ab3b: e8 d0 e2 27 00 callq 798e10 0.00 : 51ab40: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_ROLLBACK; 0.00 : 51ab46: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->options = NIL; : $$ = (Node *)n; 0.00 : 51ab4d: 49 89 c6 mov %rax,%r14 : } : | ROLLBACK opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_ROLLBACK; : n->options = NIL; 0.00 : 51ab50: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ab57: 00 : $$ = (Node *)n; : } : | SAVEPOINT ColId 0.00 : 51ab58: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ab5f: e9 1c 6e ff ff jmpq 511980 : n->options = NIL; : $$ = (Node *)n; : } : | END_P opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51ab64: 48 8b 3d f5 fc 69 00 mov 0x69fcf5(%rip),%rdi # bba860 0.00 : 51ab6b: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ab70: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ab77: e8 94 e2 27 00 callq 798e10 0.00 : 51ab7c: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_COMMIT; 0.00 : 51ab82: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->options = NIL; : $$ = (Node *)n; 0.00 : 51ab89: 49 89 c6 mov %rax,%r14 : } : | END_P opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_COMMIT; : n->options = NIL; 0.00 : 51ab8c: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ab93: 00 : $$ = (Node *)n; : } : | ROLLBACK opt_transaction 0.00 : 51ab94: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ab9b: e9 e0 6d ff ff jmpq 511980 : n->options = $3; : $$ = (Node *)n; : } : | COMMIT opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51aba0: 48 8b 3d b9 fc 69 00 mov 0x69fcb9(%rip),%rdi # bba860 0.00 : 51aba7: be 18 00 00 00 mov $0x18,%esi 0.00 : 51abac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51abb3: e8 58 e2 27 00 callq 798e10 0.00 : 51abb8: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_COMMIT; 0.00 : 51abbe: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->options = NIL; : $$ = (Node *)n; 0.00 : 51abc5: 49 89 c6 mov %rax,%r14 : } : | COMMIT opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_COMMIT; : n->options = NIL; 0.00 : 51abc8: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51abcf: 00 : $$ = (Node *)n; : } : | END_P opt_transaction 0.00 : 51abd0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51abd7: e9 a4 6d ff ff jmpq 511980 : n->options = $3; : $$ = (Node *)n; : } : | START TRANSACTION transaction_mode_list_or_empty : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51abdc: 48 8b 3d 7d fc 69 00 mov 0x69fc7d(%rip),%rdi # bba860 0.00 : 51abe3: be 18 00 00 00 mov $0x18,%esi 0.00 : 51abe8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51abef: e8 1c e2 27 00 callq 798e10 0.00 : 51abf4: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_START; 0.00 : 51abfa: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->options = $3; : $$ = (Node *)n; 0.00 : 51ac01: 49 89 c6 mov %rax,%r14 : } : | START TRANSACTION transaction_mode_list_or_empty : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_START; : n->options = $3; 0.00 : 51ac04: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ac0b: 48 8b 16 mov (%rsi),%rdx 0.00 : 51ac0e: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | COMMIT opt_transaction 0.00 : 51ac12: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ac19: e9 62 6d ff ff jmpq 511980 : n->options = NIL; : $$ = (Node *)n; : } : | BEGIN_P opt_transaction transaction_mode_list_or_empty : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51ac1e: 48 8b 3d 3b fc 69 00 mov 0x69fc3b(%rip),%rdi # bba860 0.00 : 51ac25: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ac2a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ac31: e8 da e1 27 00 callq 798e10 0.00 : 51ac36: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_BEGIN; 0.00 : 51ac3c: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->options = $3; : $$ = (Node *)n; 0.00 : 51ac43: 49 89 c6 mov %rax,%r14 : } : | BEGIN_P opt_transaction transaction_mode_list_or_empty : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_BEGIN; : n->options = $3; 0.00 : 51ac46: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ac4d: 48 8b 13 mov (%rbx),%rdx 0.00 : 51ac50: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | START TRANSACTION transaction_mode_list_or_empty 0.00 : 51ac54: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ac5b: e9 20 6d ff ff jmpq 511980 : *****************************************************************************/ : : TransactionStmt: : ABORT_P opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); 0.00 : 51ac60: 48 8b 3d f9 fb 69 00 mov 0x69fbf9(%rip),%rdi # bba860 0.00 : 51ac67: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ac6c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ac73: e8 98 e1 27 00 callq 798e10 0.00 : 51ac78: c7 00 db 02 00 00 movl $0x2db,(%rax) : n->kind = TRANS_STMT_ROLLBACK; 0.00 : 51ac7e: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->options = NIL; : $$ = (Node *)n; 0.00 : 51ac85: 49 89 c6 mov %rax,%r14 : TransactionStmt: : ABORT_P opt_transaction : { : TransactionStmt *n = makeNode(TransactionStmt); : n->kind = TRANS_STMT_ROLLBACK; : n->options = NIL; 0.00 : 51ac88: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ac8f: 00 : $$ = (Node *)n; : } : | BEGIN_P opt_transaction transaction_mode_list_or_empty 0.00 : 51ac90: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ac97: e9 e4 6c ff ff jmpq 511980 : n->conditionname = $2; : $$ = (Node *)n; : } : | UNLISTEN '*' : { : UnlistenStmt *n = makeNode(UnlistenStmt); 0.00 : 51ac9c: 48 8b 3d bd fb 69 00 mov 0x69fbbd(%rip),%rdi # bba860 0.00 : 51aca3: be 10 00 00 00 mov $0x10,%esi 0.00 : 51aca8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51acaf: e8 5c e1 27 00 callq 798e10 0.00 : 51acb4: c7 00 da 02 00 00 movl $0x2da,(%rax) : n->conditionname = NULL; 0.00 : 51acba: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51acc1: 00 : $$ = (Node *)n; 0.00 : 51acc2: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51acc5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51accc: e9 af 6c ff ff jmpq 511980 : ; : : UnlistenStmt: : UNLISTEN ColId : { : UnlistenStmt *n = makeNode(UnlistenStmt); 0.00 : 51acd1: 48 8b 3d 88 fb 69 00 mov 0x69fb88(%rip),%rdi # bba860 0.00 : 51acd8: be 10 00 00 00 mov $0x10,%esi 0.00 : 51acdd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ace4: e8 27 e1 27 00 callq 798e10 0.00 : 51ace9: c7 00 da 02 00 00 movl $0x2da,(%rax) : n->conditionname = $2; 0.00 : 51acef: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 51acf6: 49 89 c6 mov %rax,%r14 : : UnlistenStmt: : UNLISTEN ColId : { : UnlistenStmt *n = makeNode(UnlistenStmt); : n->conditionname = $2; 0.00 : 51acf9: 48 8b 11 mov (%rcx),%rdx 0.00 : 51acfc: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | UNLISTEN '*' 0.00 : 51ad00: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ad07: e9 74 6c ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : ListenStmt: LISTEN ColId : { : ListenStmt *n = makeNode(ListenStmt); 0.00 : 51ad0c: 48 8b 3d 4d fb 69 00 mov 0x69fb4d(%rip),%rdi # bba860 0.00 : 51ad13: be 10 00 00 00 mov $0x10,%esi 0.00 : 51ad18: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ad1f: e8 ec e0 27 00 callq 798e10 0.00 : 51ad24: c7 00 d9 02 00 00 movl $0x2d9,(%rax) : n->conditionname = $2; 0.00 : 51ad2a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$ = (Node *)n; 0.00 : 51ad31: 49 89 c6 mov %rax,%r14 : ; : : ListenStmt: LISTEN ColId : { : ListenStmt *n = makeNode(ListenStmt); : n->conditionname = $2; 0.00 : 51ad34: 48 8b 16 mov (%rsi),%rdx 0.00 : 51ad37: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51ad3b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ad42: e9 39 6c ff ff jmpq 511980 : } : ; : : notify_payload: : ',' Sconst { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51ad47: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51ad4a: e9 31 6c ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : notify_payload: : ',' Sconst { $$ = $2; } 0.00 : 51ad4f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ad56: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51ad59: e9 22 6c ff ff jmpq 511980 : * : *****************************************************************************/ : : NotifyStmt: NOTIFY ColId notify_payload : { : NotifyStmt *n = makeNode(NotifyStmt); 0.00 : 51ad5e: 48 8b 3d fb fa 69 00 mov 0x69fafb(%rip),%rdi # bba860 0.00 : 51ad65: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ad6a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ad71: e8 9a e0 27 00 callq 798e10 0.00 : 51ad76: c7 00 d8 02 00 00 movl $0x2d8,(%rax) : n->conditionname = $2; 0.00 : 51ad7c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->payload = $3; : $$ = (Node *)n; 0.00 : 51ad83: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : NotifyStmt: NOTIFY ColId notify_payload : { : NotifyStmt *n = makeNode(NotifyStmt); : n->conditionname = $2; 0.00 : 51ad86: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51ad8a: 48 89 50 08 mov %rdx,0x8(%rax) : n->payload = $3; 0.00 : 51ad8e: 48 8b 11 mov (%rcx),%rdx 0.00 : 51ad91: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51ad95: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ad9c: e9 df 6b ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51ada1: 48 8b 3d b8 fa 69 00 mov 0x69fab8(%rip),%rdi # bba860 0.00 : 51ada8: be 28 00 00 00 mov $0x28,%esi 0.00 : 51adad: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51adb4: e8 57 e0 27 00 callq 798e10 0.00 : 51adb9: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_RULE; 0.00 : 51adbf: c7 40 18 18 00 00 00 movl $0x18,0x18(%rax) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51adc6: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 51adc9: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->arguments = NIL; : n->behavior = $8; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 51add0: 49 89 de mov %rbx,%r14 : } : | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 51add3: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51add7: e8 14 49 0e 00 callq 5ff6f0 0.00 : 51addc: 48 89 c6 mov %rax,%rsi 0.00 : 51addf: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51ade6: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51adea: e8 91 70 0c 00 callq 5e1e80 0.00 : 51adef: 31 f6 xor %esi,%esi 0.00 : 51adf1: 48 89 c7 mov %rax,%rdi 0.00 : 51adf4: e8 57 6a 0c 00 callq 5e1850 : n->arguments = NIL; 0.00 : 51adf9: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 51ae00: 00 : } : | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 51ae01: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $8; 0.00 : 51ae05: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51ae0c: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 51ae0e: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 51ae12: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($7, makeString($5))); : n->arguments = NIL; : n->behavior = $8; 0.00 : 51ae16: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 51ae19: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ae20: e9 5b 6b ff ff jmpq 511980 : : : DropRuleStmt: : DROP RULE name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51ae25: 48 8b 3d 34 fa 69 00 mov 0x69fa34(%rip),%rdi # bba860 0.00 : 51ae2c: be 28 00 00 00 mov $0x28,%esi 0.00 : 51ae31: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ae38: e8 d3 df 27 00 callq 798e10 0.00 : 51ae3d: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_RULE; 0.00 : 51ae43: c7 40 18 18 00 00 00 movl $0x18,0x18(%rax) : : : DropRuleStmt: : DROP RULE name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51ae4a: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 51ae4d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = NIL; : n->behavior = $6; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 51ae54: 49 89 de mov %rbx,%r14 : DropRuleStmt: : DROP RULE name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 51ae57: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51ae5b: e8 90 48 0e 00 callq 5ff6f0 0.00 : 51ae60: 48 89 c6 mov %rax,%rsi 0.00 : 51ae63: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51ae6a: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51ae6e: e8 0d 70 0c 00 callq 5e1e80 0.00 : 51ae73: 31 f6 xor %esi,%esi 0.00 : 51ae75: 48 89 c7 mov %rax,%rdi 0.00 : 51ae78: e8 d3 69 0c 00 callq 5e1850 : n->arguments = NIL; 0.00 : 51ae7d: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 51ae84: 00 : DropRuleStmt: : DROP RULE name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 51ae85: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $6; 0.00 : 51ae89: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51ae90: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 51ae92: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 51ae96: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_RULE; : n->objects = list_make1(lappend($5, makeString($3))); : n->arguments = NIL; : n->behavior = $6; 0.00 : 51ae9a: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; : } : | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior 0.00 : 51ae9d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51aea4: e9 d7 6a ff ff jmpq 511980 : ; : : opt_instead: : INSTEAD { $$ = TRUE; } : | ALSO { $$ = FALSE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51aea9: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51aeac: e9 cf 6a ff ff jmpq 511980 : | INSERT { $$ = CMD_INSERT; } : ; : : opt_instead: : INSTEAD { $$ = TRUE; } : | ALSO { $$ = FALSE; } 0.00 : 51aeb1: 45 30 f6 xor %r14b,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51aeb4: e9 c7 6a ff ff jmpq 511980 : | DELETE_P { $$ = CMD_DELETE; } : | INSERT { $$ = CMD_INSERT; } : ; : : opt_instead: : INSTEAD { $$ = TRUE; } 0.00 : 51aeb9: 41 b6 01 mov $0x1,%r14b 0.00 : 51aebc: 0f 1f 40 00 nopl 0x0(%rax) : | ALSO { $$ = FALSE; } 0.00 : 51aec0: e9 bb 6a ff ff jmpq 511980 : ; : : event: SELECT { $$ = CMD_SELECT; } : | UPDATE { $$ = CMD_UPDATE; } : | DELETE_P { $$ = CMD_DELETE; } : | INSERT { $$ = CMD_INSERT; } 0.00 : 51aec5: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51aecc: ff ff ff 0.00 : 51aecf: 49 21 ce and %rcx,%r14 0.00 : 51aed2: 49 83 ce 03 or $0x3,%r14 : ; 0.00 : 51aed6: e9 a5 6a ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : event: SELECT { $$ = CMD_SELECT; } : | UPDATE { $$ = CMD_UPDATE; } : | DELETE_P { $$ = CMD_DELETE; } 0.00 : 51aedb: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51aee2: ff ff ff 0.00 : 51aee5: 49 21 d6 and %rdx,%r14 0.00 : 51aee8: 49 83 ce 04 or $0x4,%r14 : | INSERT { $$ = CMD_INSERT; } 0.00 : 51aeec: e9 8f 6a ff ff jmpq 511980 : RuleActionStmt { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } : ; : : event: SELECT { $$ = CMD_SELECT; } : | UPDATE { $$ = CMD_UPDATE; } 0.00 : 51aef1: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51aef8: ff ff ff 0.00 : 51aefb: 49 21 c6 and %rax,%r14 0.00 : 51aefe: 49 83 ce 02 or $0x2,%r14 : | DELETE_P { $$ = CMD_DELETE; } 0.00 : 51af02: e9 79 6a ff ff jmpq 511980 : RuleActionStmtOrEmpty: : RuleActionStmt { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } : ; : : event: SELECT { $$ = CMD_SELECT; } 0.00 : 51af07: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51af0e: ff ff ff 0.00 : 51af11: 49 21 f6 and %rsi,%r14 0.00 : 51af14: 49 83 ce 01 or $0x1,%r14 : | UPDATE { $$ = CMD_UPDATE; } 0.00 : 51af18: e9 63 6a ff ff jmpq 511980 : | NotifyStmt : ; : : RuleActionStmtOrEmpty: : RuleActionStmt { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51af1d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51af20: e9 5b 6a ff ff jmpq 511980 : | DeleteStmt : | NotifyStmt : ; : : RuleActionStmtOrEmpty: : RuleActionStmt { $$ = $1; } 0.00 : 51af25: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51af2c: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51af2f: e9 4c 6a ff ff jmpq 511980 : $$ = lappend($1, $3); : else : $$ = $1; : } : | RuleActionStmtOrEmpty : { if ($1 != NULL) 0.00 : 51af34: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = list_make1($1); : else : $$ = NIL; 0.00 : 51af3b: 45 31 f6 xor %r14d,%r14d : $$ = lappend($1, $3); : else : $$ = $1; : } : | RuleActionStmtOrEmpty : { if ($1 != NULL) 0.00 : 51af3e: 48 8b 39 mov (%rcx),%rdi 0.00 : 51af41: 48 85 ff test %rdi,%rdi 0.00 : 51af44: 0f 84 36 6a ff ff je 511980 : $$ = list_make1($1); 0.00 : 51af4a: 31 f6 xor %esi,%esi 0.00 : 51af4c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51af53: e8 f8 68 0c 00 callq 5e1850 0.00 : 51af58: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51af5f: 49 89 c6 mov %rax,%r14 0.00 : 51af62: e9 19 6a ff ff jmpq 511980 : ; : : /* the thrashing around here is to discard "empty" statements... */ : RuleActionMulti: : RuleActionMulti ';' RuleActionStmtOrEmpty : { if ($3 != NULL) 0.00 : 51af67: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51af6e: 48 8b 30 mov (%rax),%rsi 0.00 : 51af71: 48 85 f6 test %rsi,%rsi 0.00 : 51af74: 0f 84 d1 e4 00 00 je 52944b : $$ = lappend($1, $3); 0.00 : 51af7a: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 51af7e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51af85: e8 f6 6e 0c 00 callq 5e1e80 0.00 : 51af8a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51af91: 49 89 c6 mov %rax,%r14 0.00 : 51af94: e9 e7 69 ff ff jmpq 511980 : ; : : RuleActionList: : NOTHING { $$ = NIL; } : | RuleActionStmt { $$ = list_make1($1); } : | '(' RuleActionMulti ')' { $$ = $2; } 0.00 : 51af99: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51afa0: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : ; 0.00 : 51afa4: e9 d7 69 ff ff jmpq 511980 : } : ; : : RuleActionList: : NOTHING { $$ = NIL; } : | RuleActionStmt { $$ = list_make1($1); } 0.00 : 51afa9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51afb0: 31 f6 xor %esi,%esi 0.00 : 51afb2: 48 8b 3b mov (%rbx),%rdi 0.00 : 51afb5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51afbc: e8 8f 68 0c 00 callq 5e1850 : | '(' RuleActionMulti ')' { $$ = $2; } 0.00 : 51afc1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : RuleActionList: : NOTHING { $$ = NIL; } : | RuleActionStmt { $$ = list_make1($1); } 0.00 : 51afc8: 49 89 c6 mov %rax,%r14 : | '(' RuleActionMulti ')' { $$ = $2; } 0.00 : 51afcb: e9 b0 69 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : RuleActionList: : NOTHING { $$ = NIL; } 0.00 : 51afd0: 45 31 f6 xor %r14d,%r14d : | RuleActionStmt { $$ = list_make1($1); } 0.00 : 51afd3: e9 a8 69 ff ff jmpq 511980 : : RuleStmt: CREATE opt_or_replace RULE name AS : ON event TO qualified_name where_clause : DO opt_instead RuleActionList : { : RuleStmt *n = makeNode(RuleStmt); 0.00 : 51afd8: 48 8b 3d 81 f8 69 00 mov 0x69f881(%rip),%rdi # bba860 0.00 : 51afdf: be 38 00 00 00 mov $0x38,%esi 0.00 : 51afe4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51afeb: e8 20 de 27 00 callq 798e10 0.00 : 51aff0: c7 00 d7 02 00 00 movl $0x2d7,(%rax) : n->replace = $2; 0.00 : 51aff6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->rulename = $4; : n->whereClause = $10; : n->event = $7; : n->instead = $12; : n->actions = $13; : $$ = (Node *)n; 0.00 : 51affd: 49 89 c6 mov %rax,%r14 : RuleStmt: CREATE opt_or_replace RULE name AS : ON event TO qualified_name where_clause : DO opt_instead RuleActionList : { : RuleStmt *n = makeNode(RuleStmt); : n->replace = $2; 0.00 : 51b000: 0f b6 51 a8 movzbl -0x58(%rcx),%edx 0.00 : 51b004: 88 50 30 mov %dl,0x30(%rax) : n->relation = $9; 0.00 : 51b007: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 51b00b: 48 89 50 08 mov %rdx,0x8(%rax) : n->rulename = $4; 0.00 : 51b00f: 48 8b 51 b8 mov -0x48(%rcx),%rdx 0.00 : 51b013: 48 89 50 10 mov %rdx,0x10(%rax) : n->whereClause = $10; 0.00 : 51b017: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b01b: 48 89 50 18 mov %rdx,0x18(%rax) : n->event = $7; 0.00 : 51b01f: 8b 51 d0 mov -0x30(%rcx),%edx 0.00 : 51b022: 89 50 20 mov %edx,0x20(%rax) : n->instead = $12; 0.00 : 51b025: 0f b6 51 f8 movzbl -0x8(%rcx),%edx 0.00 : 51b029: 88 50 24 mov %dl,0x24(%rax) : n->actions = $13; 0.00 : 51b02c: 48 8b 11 mov (%rcx),%rdx 0.00 : 51b02f: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51b033: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b03a: e9 41 69 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER EVENT TRIGGER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b03f: 48 8b 3d 1a f8 69 00 mov 0x69f81a(%rip),%rdi # bba860 0.00 : 51b046: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b04b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b052: e8 b9 dd 27 00 callq 798e10 0.00 : 51b057: 48 89 c3 mov %rax,%rbx 0.00 : 51b05a: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_EVENT_TRIGGER; 0.00 : 51b060: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : n->object = list_make1(makeString($4)); 0.00 : 51b067: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->newowner = $7; : $$ = (Node *)n; 0.00 : 51b06e: 49 89 de mov %rbx,%r14 : } : | ALTER EVENT TRIGGER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_EVENT_TRIGGER; : n->object = list_make1(makeString($4)); 0.00 : 51b071: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51b075: e8 76 46 0e 00 callq 5ff6f0 0.00 : 51b07a: 31 f6 xor %esi,%esi 0.00 : 51b07c: 48 89 c7 mov %rax,%rdi 0.00 : 51b07f: e8 cc 67 0c 00 callq 5e1850 0.00 : 51b084: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $7; 0.00 : 51b088: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b08f: 48 8b 02 mov (%rdx),%rax 0.00 : 51b092: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 51b096: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b09d: e9 de 68 ff ff jmpq 511980 : n->newowner = $8; : $$ = (Node *)n; : } : | ALTER SERVER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b0a2: 48 8b 3d b7 f7 69 00 mov 0x69f7b7(%rip),%rdi # bba860 0.00 : 51b0a9: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b0ae: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b0b5: e8 56 dd 27 00 callq 798e10 0.00 : 51b0ba: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_FOREIGN_SERVER; 0.00 : 51b0c0: c7 40 04 0c 00 00 00 movl $0xc,0x4(%rax) : n->newowner = $8; : $$ = (Node *)n; : } : | ALTER SERVER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b0c7: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_FOREIGN_SERVER; : n->object = list_make1(makeString($3)); 0.00 : 51b0ca: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b0d1: 49 89 de mov %rbx,%r14 : } : | ALTER SERVER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_FOREIGN_SERVER; : n->object = list_make1(makeString($3)); 0.00 : 51b0d4: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51b0d8: e8 13 46 0e 00 callq 5ff6f0 0.00 : 51b0dd: 31 f6 xor %esi,%esi 0.00 : 51b0df: 48 89 c7 mov %rax,%rdi 0.00 : 51b0e2: e8 69 67 0c 00 callq 5e1850 0.00 : 51b0e7: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $6; 0.00 : 51b0eb: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b0f2: 48 8b 06 mov (%rsi),%rax 0.00 : 51b0f5: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER EVENT TRIGGER name OWNER TO RoleId 0.00 : 51b0f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b100: e9 7b 68 ff ff jmpq 511980 : n->newowner = $8; : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b105: 48 8b 3d 54 f7 69 00 mov 0x69f754(%rip),%rdi # bba860 0.00 : 51b10c: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b111: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b118: e8 f3 dc 27 00 callq 798e10 0.00 : 51b11d: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_FDW; 0.00 : 51b123: c7 40 04 0b 00 00 00 movl $0xb,0x4(%rax) : n->newowner = $8; : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b12a: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_FDW; : n->object = list_make1(makeString($5)); 0.00 : 51b12d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newowner = $8; : $$ = (Node *)n; 0.00 : 51b134: 49 89 de mov %rbx,%r14 : } : | ALTER FOREIGN DATA_P WRAPPER name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_FDW; : n->object = list_make1(makeString($5)); 0.00 : 51b137: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51b13b: e8 b0 45 0e 00 callq 5ff6f0 0.00 : 51b140: 31 f6 xor %esi,%esi 0.00 : 51b142: 48 89 c7 mov %rax,%rdi 0.00 : 51b145: e8 06 67 0c 00 callq 5e1850 0.00 : 51b14a: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $8; 0.00 : 51b14e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b155: 48 8b 02 mov (%rdx),%rax 0.00 : 51b158: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER SERVER name OWNER TO RoleId 0.00 : 51b15c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b163: e9 18 68 ff ff jmpq 511980 : n->newowner = $8; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b168: 48 8b 3d f1 f6 69 00 mov 0x69f6f1(%rip),%rdi # bba860 0.00 : 51b16f: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b174: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b17b: e8 90 dc 27 00 callq 798e10 0.00 : 51b180: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_TSCONFIGURATION; 0.00 : 51b186: c7 40 04 1e 00 00 00 movl $0x1e,0x4(%rax) : n->object = $5; : n->newowner = $8; : $$ = (Node *)n; 0.00 : 51b18d: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_TSCONFIGURATION; : n->object = $5; 0.00 : 51b190: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b197: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b19b: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $8; 0.00 : 51b19f: 48 8b 13 mov (%rbx),%rdx 0.00 : 51b1a2: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name OWNER TO RoleId 0.00 : 51b1a6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b1ad: e9 ce 67 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b1b2: 48 8b 3d a7 f6 69 00 mov 0x69f6a7(%rip),%rdi # bba860 0.00 : 51b1b9: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b1be: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b1c5: e8 46 dc 27 00 callq 798e10 0.00 : 51b1ca: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_TSDICTIONARY; 0.00 : 51b1d0: c7 40 04 1f 00 00 00 movl $0x1f,0x4(%rax) : n->object = $5; : n->newowner = $8; : $$ = (Node *)n; 0.00 : 51b1d7: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH DICTIONARY any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_TSDICTIONARY; : n->object = $5; 0.00 : 51b1da: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b1e1: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b1e5: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $8; 0.00 : 51b1e9: 48 8b 11 mov (%rcx),%rdx 0.00 : 51b1ec: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name OWNER TO RoleId 0.00 : 51b1f0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b1f7: e9 84 67 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER TABLESPACE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b1fc: 48 8b 3d 5d f6 69 00 mov 0x69f65d(%rip),%rdi # bba860 0.00 : 51b203: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b208: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b20f: e8 fc db 27 00 callq 798e10 0.00 : 51b214: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_TABLESPACE; 0.00 : 51b21a: c7 40 04 1c 00 00 00 movl $0x1c,0x4(%rax) : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER TABLESPACE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b221: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_TABLESPACE; : n->object = list_make1(makeString($3)); 0.00 : 51b224: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b22b: 49 89 de mov %rbx,%r14 : } : | ALTER TABLESPACE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_TABLESPACE; : n->object = list_make1(makeString($3)); 0.00 : 51b22e: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51b232: e8 b9 44 0e 00 callq 5ff6f0 0.00 : 51b237: 31 f6 xor %esi,%esi 0.00 : 51b239: 48 89 c7 mov %rax,%rdi 0.00 : 51b23c: e8 0f 66 0c 00 callq 5e1850 0.00 : 51b241: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $6; 0.00 : 51b245: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b24c: 48 8b 02 mov (%rdx),%rax 0.00 : 51b24f: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name OWNER TO RoleId 0.00 : 51b253: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b25a: e9 21 67 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b25f: 48 8b 3d fa f5 69 00 mov 0x69f5fa(%rip),%rdi # bba860 0.00 : 51b266: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b26b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b272: e8 99 db 27 00 callq 798e10 0.00 : 51b277: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_TYPE; 0.00 : 51b27d: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->object = $3; : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b284: 49 89 c6 mov %rax,%r14 : } : | ALTER TYPE_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_TYPE; : n->object = $3; 0.00 : 51b287: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b28e: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b292: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $6; 0.00 : 51b296: 48 8b 11 mov (%rcx),%rdx 0.00 : 51b299: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER TABLESPACE name OWNER TO RoleId 0.00 : 51b29d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b2a4: e9 d7 66 ff ff jmpq 511980 : n->newowner = $9; : $$ = (Node *)n; : } : | ALTER SCHEMA name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b2a9: 48 8b 3d b0 f5 69 00 mov 0x69f5b0(%rip),%rdi # bba860 0.00 : 51b2b0: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b2b5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b2bc: e8 4f db 27 00 callq 798e10 0.00 : 51b2c1: 48 89 c3 mov %rax,%rbx 0.00 : 51b2c4: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_SCHEMA; 0.00 : 51b2ca: c7 40 04 19 00 00 00 movl $0x19,0x4(%rax) : n->object = list_make1(makeString($3)); 0.00 : 51b2d1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b2d8: 49 89 de mov %rbx,%r14 : } : | ALTER SCHEMA name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_SCHEMA; : n->object = list_make1(makeString($3)); 0.00 : 51b2db: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51b2df: e8 0c 44 0e 00 callq 5ff6f0 0.00 : 51b2e4: 31 f6 xor %esi,%esi 0.00 : 51b2e6: 48 89 c7 mov %rax,%rdi 0.00 : 51b2e9: e8 62 65 0c 00 callq 5e1850 0.00 : 51b2ee: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $6; 0.00 : 51b2f2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b2f9: 48 8b 02 mov (%rdx),%rax 0.00 : 51b2fc: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER TYPE_P any_name OWNER TO RoleId 0.00 : 51b300: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b307: e9 74 66 ff ff jmpq 511980 : n->newowner = $9; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b30c: 48 8b 3d 4d f5 69 00 mov 0x69f54d(%rip),%rdi # bba860 0.00 : 51b313: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b318: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b31f: e8 ec da 27 00 callq 798e10 0.00 : 51b324: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_OPFAMILY; 0.00 : 51b32a: c7 40 04 15 00 00 00 movl $0x15,0x4(%rax) : n->newowner = $9; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b331: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51b334: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objarg = list_make1(makeString($6)); : n->newowner = $9; : $$ = (Node *)n; 0.00 : 51b33b: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR FAMILY any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51b33e: 48 8b 41 d8 mov -0x28(%rcx),%rax 0.00 : 51b342: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51b346: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51b34a: e8 a1 43 0e 00 callq 5ff6f0 0.00 : 51b34f: 31 f6 xor %esi,%esi 0.00 : 51b351: 48 89 c7 mov %rax,%rdi 0.00 : 51b354: e8 f7 64 0c 00 callq 5e1850 0.00 : 51b359: 48 89 43 18 mov %rax,0x18(%rbx) : n->newowner = $9; 0.00 : 51b35d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b364: 48 8b 06 mov (%rsi),%rax 0.00 : 51b367: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER SCHEMA name OWNER TO RoleId 0.00 : 51b36b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b372: e9 09 66 ff ff jmpq 511980 : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b377: 48 8b 3d e2 f4 69 00 mov 0x69f4e2(%rip),%rdi # bba860 0.00 : 51b37e: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b383: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b38a: e8 81 da 27 00 callq 798e10 0.00 : 51b38f: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_OPCLASS; 0.00 : 51b395: c7 40 04 13 00 00 00 movl $0x13,0x4(%rax) : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b39c: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51b39f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objarg = list_make1(makeString($6)); : n->newowner = $9; : $$ = (Node *)n; 0.00 : 51b3a6: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51b3a9: 48 8b 46 d8 mov -0x28(%rsi),%rax 0.00 : 51b3ad: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51b3b1: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51b3b5: e8 36 43 0e 00 callq 5ff6f0 0.00 : 51b3ba: 31 f6 xor %esi,%esi 0.00 : 51b3bc: 48 89 c7 mov %rax,%rdi 0.00 : 51b3bf: e8 8c 64 0c 00 callq 5e1850 0.00 : 51b3c4: 48 89 43 18 mov %rax,0x18(%rbx) : n->newowner = $9; 0.00 : 51b3c8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b3cf: 48 8b 02 mov (%rdx),%rax 0.00 : 51b3d2: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method OWNER TO RoleId 0.00 : 51b3d6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b3dd: e9 9e 65 ff ff jmpq 511980 : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER OPERATOR any_operator oper_argtypes OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b3e2: 48 8b 3d 77 f4 69 00 mov 0x69f477(%rip),%rdi # bba860 0.00 : 51b3e9: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b3ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b3f5: e8 16 da 27 00 callq 798e10 0.00 : 51b3fa: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_OPERATOR; 0.00 : 51b400: c7 40 04 14 00 00 00 movl $0x14,0x4(%rax) : n->object = $3; : n->objarg = $4; : n->newowner = $7; : $$ = (Node *)n; 0.00 : 51b407: 49 89 c6 mov %rax,%r14 : } : | ALTER OPERATOR any_operator oper_argtypes OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_OPERATOR; : n->object = $3; 0.00 : 51b40a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b411: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 51b415: 48 89 50 10 mov %rdx,0x10(%rax) : n->objarg = $4; 0.00 : 51b419: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b41d: 48 89 50 18 mov %rdx,0x18(%rax) : n->newowner = $7; 0.00 : 51b421: 48 8b 11 mov (%rcx),%rdx 0.00 : 51b424: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleId 0.00 : 51b428: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b42f: e9 4c 65 ff ff jmpq 511980 : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER LARGE_P OBJECT_P NumericOnly OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b434: 48 8b 3d 25 f4 69 00 mov 0x69f425(%rip),%rdi # bba860 0.00 : 51b43b: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b440: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b447: e8 c4 d9 27 00 callq 798e10 0.00 : 51b44c: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_LARGEOBJECT; 0.00 : 51b452: c7 40 04 11 00 00 00 movl $0x11,0x4(%rax) : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER LARGE_P OBJECT_P NumericOnly OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b459: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_LARGEOBJECT; : n->object = list_make1($4); 0.00 : 51b45c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b463: 31 f6 xor %esi,%esi : n->newowner = $7; : $$ = (Node *)n; 0.00 : 51b465: 49 89 de mov %rbx,%r14 : } : | ALTER LARGE_P OBJECT_P NumericOnly OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_LARGEOBJECT; : n->object = list_make1($4); 0.00 : 51b468: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51b46c: e8 df 63 0c 00 callq 5e1850 0.00 : 51b471: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $7; 0.00 : 51b475: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b47c: 48 8b 06 mov (%rsi),%rax 0.00 : 51b47f: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER OPERATOR any_operator oper_argtypes OWNER TO RoleId 0.00 : 51b483: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b48a: e9 f1 64 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b48f: 48 8b 3d ca f3 69 00 mov 0x69f3ca(%rip),%rdi # bba860 0.00 : 51b496: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b49b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b4a2: e8 69 d9 27 00 callq 798e10 0.00 : 51b4a7: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_LANGUAGE; 0.00 : 51b4ad: c7 40 04 10 00 00 00 movl $0x10,0x4(%rax) : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b4b4: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_LANGUAGE; : n->object = list_make1(makeString($4)); 0.00 : 51b4b7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newowner = $7; : $$ = (Node *)n; 0.00 : 51b4be: 49 89 de mov %rbx,%r14 : } : | ALTER opt_procedural LANGUAGE name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_LANGUAGE; : n->object = list_make1(makeString($4)); 0.00 : 51b4c1: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51b4c5: e8 26 42 0e 00 callq 5ff6f0 0.00 : 51b4ca: 31 f6 xor %esi,%esi 0.00 : 51b4cc: 48 89 c7 mov %rax,%rdi 0.00 : 51b4cf: e8 7c 63 0c 00 callq 5e1850 0.00 : 51b4d4: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $7; 0.00 : 51b4d8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b4df: 48 8b 02 mov (%rdx),%rax 0.00 : 51b4e2: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER LARGE_P OBJECT_P NumericOnly OWNER TO RoleId 0.00 : 51b4e6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b4ed: e9 8e 64 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b4f2: 48 8b 3d 67 f3 69 00 mov 0x69f367(%rip),%rdi # bba860 0.00 : 51b4f9: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b4fe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b505: e8 06 d9 27 00 callq 798e10 0.00 : 51b50a: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_FUNCTION; 0.00 : 51b510: c7 40 04 0e 00 00 00 movl $0xe,0x4(%rax) : n->object = $3->funcname; : n->objarg = $3->funcargs; : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b517: 49 89 c6 mov %rax,%r14 : } : | ALTER FUNCTION function_with_argtypes OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_FUNCTION; : n->object = $3->funcname; 0.00 : 51b51a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b521: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b525: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51b529: 48 89 50 10 mov %rdx,0x10(%rax) : n->objarg = $3->funcargs; 0.00 : 51b52d: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b531: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 51b535: 48 89 50 18 mov %rdx,0x18(%rax) : n->newowner = $6; 0.00 : 51b539: 48 8b 13 mov (%rbx),%rdx 0.00 : 51b53c: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name OWNER TO RoleId 0.00 : 51b540: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b547: e9 34 64 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b54c: 48 8b 3d 0d f3 69 00 mov 0x69f30d(%rip),%rdi # bba860 0.00 : 51b553: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b558: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b55f: e8 ac d8 27 00 callq 798e10 0.00 : 51b564: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_DOMAIN; 0.00 : 51b56a: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->object = $3; : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b571: 49 89 c6 mov %rax,%r14 : } : | ALTER DOMAIN_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_DOMAIN; : n->object = $3; 0.00 : 51b574: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b57b: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b57f: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $6; 0.00 : 51b583: 48 8b 11 mov (%rcx),%rdx 0.00 : 51b586: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes OWNER TO RoleId 0.00 : 51b58a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b591: e9 ea 63 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER DATABASE database_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b596: 48 8b 3d c3 f2 69 00 mov 0x69f2c3(%rip),%rdi # bba860 0.00 : 51b59d: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b5a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b5a9: e8 62 d8 27 00 callq 798e10 0.00 : 51b5ae: 48 89 c3 mov %rax,%rbx 0.00 : 51b5b1: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_DATABASE; 0.00 : 51b5b7: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->object = list_make1(makeString($3)); 0.00 : 51b5be: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b5c5: 49 89 de mov %rbx,%r14 : } : | ALTER DATABASE database_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_DATABASE; : n->object = list_make1(makeString($3)); 0.00 : 51b5c8: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51b5cc: e8 1f 41 0e 00 callq 5ff6f0 0.00 : 51b5d1: 31 f6 xor %esi,%esi 0.00 : 51b5d3: 48 89 c7 mov %rax,%rdi 0.00 : 51b5d6: e8 75 62 0c 00 callq 5e1850 0.00 : 51b5db: 48 89 43 10 mov %rax,0x10(%rbx) : n->newowner = $6; 0.00 : 51b5df: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51b5e6: 48 8b 02 mov (%rdx),%rax 0.00 : 51b5e9: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name OWNER TO RoleId 0.00 : 51b5ed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b5f4: e9 87 63 ff ff jmpq 511980 : n->newowner = $6; : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b5f9: 48 8b 3d 60 f2 69 00 mov 0x69f260(%rip),%rdi # bba860 0.00 : 51b600: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b605: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b60c: e8 ff d7 27 00 callq 798e10 0.00 : 51b611: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_CONVERSION; 0.00 : 51b617: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->object = $3; : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b61e: 49 89 c6 mov %rax,%r14 : } : | ALTER CONVERSION_P any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_CONVERSION; : n->object = $3; 0.00 : 51b621: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b628: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51b62c: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $6; 0.00 : 51b630: 48 8b 16 mov (%rsi),%rdx 0.00 : 51b633: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER DATABASE database_name OWNER TO RoleId 0.00 : 51b637: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b63e: e9 3d 63 ff ff jmpq 511980 : n->newowner = $7; : $$ = (Node *)n; : } : | ALTER COLLATION any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b643: 48 8b 3d 16 f2 69 00 mov 0x69f216(%rip),%rdi # bba860 0.00 : 51b64a: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b64f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b656: e8 b5 d7 27 00 callq 798e10 0.00 : 51b65b: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_COLLATION; 0.00 : 51b661: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->object = $3; : n->newowner = $6; : $$ = (Node *)n; 0.00 : 51b668: 49 89 c6 mov %rax,%r14 : } : | ALTER COLLATION any_name OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_COLLATION; : n->object = $3; 0.00 : 51b66b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b672: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b676: 48 89 50 10 mov %rdx,0x10(%rax) : n->newowner = $6; 0.00 : 51b67a: 48 8b 13 mov (%rbx),%rdx 0.00 : 51b67d: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name OWNER TO RoleId 0.00 : 51b681: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b688: e9 f3 62 ff ff jmpq 511980 : * : *****************************************************************************/ : : AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b68d: 48 8b 3d cc f1 69 00 mov 0x69f1cc(%rip),%rdi # bba860 0.00 : 51b694: be 28 00 00 00 mov $0x28,%esi 0.00 : 51b699: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b6a0: e8 6b d7 27 00 callq 798e10 0.00 : 51b6a5: c7 00 02 03 00 00 movl $0x302,(%rax) : n->objectType = OBJECT_AGGREGATE; 0.00 : 51b6ab: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : * : *****************************************************************************/ : : AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); 0.00 : 51b6b2: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51b6b5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->objarg = extractAggrArgTypes($4); : n->newowner = $7; : $$ = (Node *)n; 0.00 : 51b6bc: 49 89 de mov %rbx,%r14 : : AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId : { : AlterOwnerStmt *n = makeNode(AlterOwnerStmt); : n->objectType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51b6bf: 48 8b 42 e0 mov -0x20(%rdx),%rax 0.00 : 51b6c3: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = extractAggrArgTypes($4); 0.00 : 51b6c7: 48 8b 7a e8 mov -0x18(%rdx),%rdi 0.00 : 51b6cb: e8 00 54 ff ff callq 510ad0 0.00 : 51b6d0: 48 89 43 18 mov %rax,0x18(%rbx) : n->newowner = $7; 0.00 : 51b6d4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b6db: 48 8b 01 mov (%rcx),%rax 0.00 : 51b6de: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER COLLATION any_name OWNER TO RoleId 0.00 : 51b6e2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b6e9: e9 92 62 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b6ee: 48 8b 3d 6b f1 69 00 mov 0x69f16b(%rip),%rdi # bba860 0.00 : 51b6f5: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b6fa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b701: e8 0a d7 27 00 callq 798e10 0.00 : 51b706: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TYPE; 0.00 : 51b70c: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->object = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b713: 49 89 c6 mov %rax,%r14 : } : | ALTER TYPE_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TYPE; : n->object = $3; 0.00 : 51b716: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b71d: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51b721: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $6; 0.00 : 51b725: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51b728: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TYPE_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TYPE; : n->object = $3; : n->newschema = $6; 0.00 : 51b72c: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : ; 0.00 : 51b730: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b737: e9 44 62 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b73c: 48 8b 3d 1d f1 69 00 mov 0x69f11d(%rip),%rdi # bba860 0.00 : 51b743: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b748: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b74f: e8 bc d6 27 00 callq 798e10 0.00 : 51b754: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_FOREIGN_TABLE; 0.00 : 51b75a: c7 40 04 0d 00 00 00 movl $0xd,0x4(%rax) : n->relation = $6; : n->newschema = $9; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51b761: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FOREIGN_TABLE; : n->relation = $6; 0.00 : 51b764: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b76b: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b76f: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $9; 0.00 : 51b773: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51b776: c6 40 28 01 movb $0x1,0x28(%rax) : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FOREIGN_TABLE; : n->relation = $6; : n->newschema = $9; 0.00 : 51b77a: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name SET SCHEMA name 0.00 : 51b77e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b785: e9 f6 61 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b78a: 48 8b 3d cf f0 69 00 mov 0x69f0cf(%rip),%rdi # bba860 0.00 : 51b791: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b796: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b79d: e8 6e d6 27 00 callq 798e10 0.00 : 51b7a2: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_FOREIGN_TABLE; 0.00 : 51b7a8: c7 40 04 0d 00 00 00 movl $0xd,0x4(%rax) : n->relation = $4; : n->newschema = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b7af: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FOREIGN_TABLE; : n->relation = $4; 0.00 : 51b7b2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b7b9: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b7bd: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $7; 0.00 : 51b7c1: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51b7c4: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER FOREIGN TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FOREIGN_TABLE; : n->relation = $4; : n->newschema = $7; 0.00 : 51b7c8: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr SET SCHEMA name 0.00 : 51b7cc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b7d3: e9 a8 61 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b7d8: 48 8b 3d 81 f0 69 00 mov 0x69f081(%rip),%rdi # bba860 0.00 : 51b7df: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b7e4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b7eb: e8 20 d6 27 00 callq 798e10 0.00 : 51b7f0: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_MATVIEW; 0.00 : 51b7f6: c7 40 04 12 00 00 00 movl $0x12,0x4(%rax) : n->relation = $6; : n->newschema = $9; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51b7fd: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_MATVIEW; : n->relation = $6; 0.00 : 51b800: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b807: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51b80b: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $9; 0.00 : 51b80f: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = true; 0.00 : 51b812: c6 40 28 01 movb $0x1,0x28(%rax) : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_MATVIEW; : n->relation = $6; : n->newschema = $9; 0.00 : 51b816: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr SET SCHEMA name 0.00 : 51b81a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b821: e9 5a 61 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b826: 48 8b 3d 33 f0 69 00 mov 0x69f033(%rip),%rdi # bba860 0.00 : 51b82d: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b832: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b839: e8 d2 d5 27 00 callq 798e10 0.00 : 51b83e: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_MATVIEW; 0.00 : 51b844: c7 40 04 12 00 00 00 movl $0x12,0x4(%rax) : n->relation = $4; : n->newschema = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b84b: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_MATVIEW; : n->relation = $4; 0.00 : 51b84e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b855: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b859: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $7; 0.00 : 51b85d: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51b860: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER MATERIALIZED VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_MATVIEW; : n->relation = $4; : n->newschema = $7; 0.00 : 51b864: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name SET SCHEMA name 0.00 : 51b868: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b86f: e9 0c 61 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b874: 48 8b 3d e5 ef 69 00 mov 0x69efe5(%rip),%rdi # bba860 0.00 : 51b87b: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b880: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b887: e8 84 d5 27 00 callq 798e10 0.00 : 51b88c: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_VIEW; 0.00 : 51b892: c7 40 04 23 00 00 00 movl $0x23,0x4(%rax) : n->relation = $5; : n->newschema = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51b899: 49 89 c6 mov %rax,%r14 : } : | ALTER VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_VIEW; : n->relation = $5; 0.00 : 51b89c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b8a3: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b8a7: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $8; 0.00 : 51b8ab: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 51b8ae: c6 40 28 01 movb $0x1,0x28(%rax) : | ALTER VIEW IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_VIEW; : n->relation = $5; : n->newschema = $8; 0.00 : 51b8b2: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name SET SCHEMA name 0.00 : 51b8b6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b8bd: e9 be 60 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b8c2: 48 8b 3d 97 ef 69 00 mov 0x69ef97(%rip),%rdi # bba860 0.00 : 51b8c9: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b8ce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b8d5: e8 36 d5 27 00 callq 798e10 0.00 : 51b8da: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_VIEW; 0.00 : 51b8e0: c7 40 04 23 00 00 00 movl $0x23,0x4(%rax) : n->relation = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b8e7: 49 89 c6 mov %rax,%r14 : } : | ALTER VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_VIEW; : n->relation = $3; 0.00 : 51b8ea: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b8f1: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51b8f5: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $6; 0.00 : 51b8f9: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51b8fc: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER VIEW qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_VIEW; : n->relation = $3; : n->newschema = $6; 0.00 : 51b900: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name SET SCHEMA name 0.00 : 51b904: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b90b: e9 70 60 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b910: 48 8b 3d 49 ef 69 00 mov 0x69ef49(%rip),%rdi # bba860 0.00 : 51b917: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b91c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b923: e8 e8 d4 27 00 callq 798e10 0.00 : 51b928: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_SEQUENCE; 0.00 : 51b92e: c7 40 04 1a 00 00 00 movl $0x1a,0x4(%rax) : n->relation = $5; : n->newschema = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51b935: 49 89 c6 mov %rax,%r14 : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_SEQUENCE; : n->relation = $5; 0.00 : 51b938: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51b93f: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51b943: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $8; 0.00 : 51b947: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51b94a: c6 40 28 01 movb $0x1,0x28(%rax) : | ALTER SEQUENCE IF_P EXISTS qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_SEQUENCE; : n->relation = $5; : n->newschema = $8; 0.00 : 51b94e: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name SET SCHEMA name 0.00 : 51b952: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b959: e9 22 60 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b95e: 48 8b 3d fb ee 69 00 mov 0x69eefb(%rip),%rdi # bba860 0.00 : 51b965: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b96a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b971: e8 9a d4 27 00 callq 798e10 0.00 : 51b976: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_SEQUENCE; 0.00 : 51b97c: c7 40 04 1a 00 00 00 movl $0x1a,0x4(%rax) : n->relation = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b983: 49 89 c6 mov %rax,%r14 : } : | ALTER SEQUENCE qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_SEQUENCE; : n->relation = $3; 0.00 : 51b986: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51b98d: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51b991: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $6; 0.00 : 51b995: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51b998: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER SEQUENCE qualified_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_SEQUENCE; : n->relation = $3; : n->newschema = $6; 0.00 : 51b99c: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SET SCHEMA name 0.00 : 51b9a0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b9a7: e9 d4 5f ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b9ac: 48 8b 3d ad ee 69 00 mov 0x69eead(%rip),%rdi # bba860 0.00 : 51b9b3: be 30 00 00 00 mov $0x30,%esi 0.00 : 51b9b8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51b9bf: e8 4c d4 27 00 callq 798e10 0.00 : 51b9c4: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TSCONFIGURATION; 0.00 : 51b9ca: c7 40 04 1e 00 00 00 movl $0x1e,0x4(%rax) : n->object = $5; : n->newschema = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51b9d1: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSCONFIGURATION; : n->object = $5; 0.00 : 51b9d4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51b9db: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51b9df: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $8; 0.00 : 51b9e3: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51b9e6: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TEXT_P SEARCH CONFIGURATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSCONFIGURATION; : n->object = $5; : n->newschema = $8; 0.00 : 51b9ea: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name SET SCHEMA name 0.00 : 51b9ee: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51b9f5: e9 86 5f ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH TEMPLATE any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51b9fa: 48 8b 3d 5f ee 69 00 mov 0x69ee5f(%rip),%rdi # bba860 0.00 : 51ba01: be 30 00 00 00 mov $0x30,%esi 0.00 : 51ba06: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ba0d: e8 fe d3 27 00 callq 798e10 0.00 : 51ba12: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TSTEMPLATE; 0.00 : 51ba18: c7 40 04 21 00 00 00 movl $0x21,0x4(%rax) : n->object = $5; : n->newschema = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ba1f: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH TEMPLATE any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSTEMPLATE; : n->object = $5; 0.00 : 51ba22: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ba29: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51ba2d: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $8; 0.00 : 51ba31: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51ba34: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TEXT_P SEARCH TEMPLATE any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSTEMPLATE; : n->object = $5; : n->newschema = $8; 0.00 : 51ba38: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name SET SCHEMA name 0.00 : 51ba3c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ba43: e9 38 5f ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51ba48: 48 8b 3d 11 ee 69 00 mov 0x69ee11(%rip),%rdi # bba860 0.00 : 51ba4f: be 30 00 00 00 mov $0x30,%esi 0.00 : 51ba54: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ba5b: e8 b0 d3 27 00 callq 798e10 0.00 : 51ba60: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TSDICTIONARY; 0.00 : 51ba66: c7 40 04 1f 00 00 00 movl $0x1f,0x4(%rax) : n->object = $5; : n->newschema = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ba6d: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH DICTIONARY any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSDICTIONARY; : n->object = $5; 0.00 : 51ba70: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ba77: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51ba7b: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $8; 0.00 : 51ba7f: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51ba82: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TEXT_P SEARCH DICTIONARY any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSDICTIONARY; : n->object = $5; : n->newschema = $8; 0.00 : 51ba86: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH TEMPLATE any_name SET SCHEMA name 0.00 : 51ba8a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ba91: e9 ea 5e ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51ba96: 48 8b 3d c3 ed 69 00 mov 0x69edc3(%rip),%rdi # bba860 0.00 : 51ba9d: be 30 00 00 00 mov $0x30,%esi 0.00 : 51baa2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51baa9: e8 62 d3 27 00 callq 798e10 0.00 : 51baae: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TSPARSER; 0.00 : 51bab4: c7 40 04 20 00 00 00 movl $0x20,0x4(%rax) : n->object = $5; : n->newschema = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51babb: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSPARSER; : n->object = $5; 0.00 : 51babe: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51bac5: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51bac9: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $8; 0.00 : 51bacd: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51bad0: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TSPARSER; : n->object = $5; : n->newschema = $8; 0.00 : 51bad4: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name SET SCHEMA name 0.00 : 51bad8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51badf: e9 9c 5e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bae4: 48 8b 3d 75 ed 69 00 mov 0x69ed75(%rip),%rdi # bba860 0.00 : 51baeb: be 30 00 00 00 mov $0x30,%esi 0.00 : 51baf0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51baf7: e8 14 d3 27 00 callq 798e10 0.00 : 51bafc: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TABLE; 0.00 : 51bb02: c7 40 04 1b 00 00 00 movl $0x1b,0x4(%rax) : n->relation = $5; : n->newschema = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51bb09: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TABLE; : n->relation = $5; 0.00 : 51bb0c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51bb13: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51bb17: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $8; 0.00 : 51bb1b: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51bb1e: c6 40 28 01 movb $0x1,0x28(%rax) : | ALTER TABLE IF_P EXISTS relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TABLE; : n->relation = $5; : n->newschema = $8; 0.00 : 51bb22: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name 0.00 : 51bb26: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bb2d: e9 4e 5e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bb32: 48 8b 3d 27 ed 69 00 mov 0x69ed27(%rip),%rdi # bba860 0.00 : 51bb39: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bb3e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bb45: e8 c6 d2 27 00 callq 798e10 0.00 : 51bb4a: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_TABLE; 0.00 : 51bb50: c7 40 04 1b 00 00 00 movl $0x1b,0x4(%rax) : n->relation = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bb57: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TABLE; : n->relation = $3; 0.00 : 51bb5a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51bb61: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51bb65: 48 89 50 08 mov %rdx,0x8(%rax) : n->newschema = $6; 0.00 : 51bb69: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51bb6c: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER TABLE relation_expr SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_TABLE; : n->relation = $3; : n->newschema = $6; 0.00 : 51bb70: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr SET SCHEMA name 0.00 : 51bb74: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bb7b: e9 00 5e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bb80: 48 8b 3d d9 ec 69 00 mov 0x69ecd9(%rip),%rdi # bba860 0.00 : 51bb87: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bb8c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bb93: e8 78 d2 27 00 callq 798e10 0.00 : 51bb98: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_OPFAMILY; 0.00 : 51bb9e: c7 40 04 15 00 00 00 movl $0x15,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bba5: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51bba8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objarg = list_make1(makeString($6)); : n->newschema = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bbaf: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51bbb2: 48 8b 46 d8 mov -0x28(%rsi),%rax 0.00 : 51bbb6: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51bbba: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51bbbe: e8 2d 3b 0e 00 callq 5ff6f0 0.00 : 51bbc3: 31 f6 xor %esi,%esi 0.00 : 51bbc5: 48 89 c7 mov %rax,%rdi 0.00 : 51bbc8: e8 83 5c 0c 00 callq 5e1850 0.00 : 51bbcd: 48 89 43 18 mov %rax,0x18(%rbx) : n->newschema = $9; 0.00 : 51bbd1: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51bbd8: 48 8b 02 mov (%rdx),%rax : n->missing_ok = false; 0.00 : 51bbdb: c6 43 28 00 movb $0x0,0x28(%rbx) : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPFAMILY; : n->object = $4; : n->objarg = list_make1(makeString($6)); : n->newschema = $9; 0.00 : 51bbdf: 48 89 43 20 mov %rax,0x20(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr SET SCHEMA name 0.00 : 51bbe3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bbea: e9 91 5d ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bbef: 48 8b 3d 6a ec 69 00 mov 0x69ec6a(%rip),%rdi # bba860 0.00 : 51bbf6: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bbfb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bc02: e8 09 d2 27 00 callq 798e10 0.00 : 51bc07: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_OPCLASS; 0.00 : 51bc0d: c7 40 04 13 00 00 00 movl $0x13,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bc14: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51bc17: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->objarg = list_make1(makeString($6)); : n->newschema = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bc1e: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51bc21: 48 8b 42 d8 mov -0x28(%rdx),%rax 0.00 : 51bc25: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51bc29: 48 8b 7a e8 mov -0x18(%rdx),%rdi 0.00 : 51bc2d: e8 be 3a 0e 00 callq 5ff6f0 0.00 : 51bc32: 31 f6 xor %esi,%esi 0.00 : 51bc34: 48 89 c7 mov %rax,%rdi 0.00 : 51bc37: e8 14 5c 0c 00 callq 5e1850 0.00 : 51bc3c: 48 89 43 18 mov %rax,0x18(%rbx) : n->newschema = $9; 0.00 : 51bc40: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51bc47: 48 8b 01 mov (%rcx),%rax : n->missing_ok = false; 0.00 : 51bc4a: c6 43 28 00 movb $0x0,0x28(%rbx) : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPCLASS; : n->object = $4; : n->objarg = list_make1(makeString($6)); : n->newschema = $9; 0.00 : 51bc4e: 48 89 43 20 mov %rax,0x20(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name 0.00 : 51bc52: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bc59: e9 22 5d ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR any_operator oper_argtypes SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bc5e: 48 8b 3d fb eb 69 00 mov 0x69ebfb(%rip),%rdi # bba860 0.00 : 51bc65: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bc6a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bc71: e8 9a d1 27 00 callq 798e10 0.00 : 51bc76: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_OPERATOR; 0.00 : 51bc7c: c7 40 04 14 00 00 00 movl $0x14,0x4(%rax) : n->object = $3; : n->objarg = $4; : n->newschema = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bc83: 49 89 c6 mov %rax,%r14 : } : | ALTER OPERATOR any_operator oper_argtypes SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPERATOR; : n->object = $3; 0.00 : 51bc86: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51bc8d: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 51bc91: 48 89 50 10 mov %rdx,0x10(%rax) : n->objarg = $4; 0.00 : 51bc95: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51bc99: 48 89 50 18 mov %rdx,0x18(%rax) : n->newschema = $7; 0.00 : 51bc9d: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51bca0: c6 40 28 00 movb $0x0,0x28(%rax) : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_OPERATOR; : n->object = $3; : n->objarg = $4; : n->newschema = $7; 0.00 : 51bca4: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name 0.00 : 51bca8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bcaf: e9 cc 5c ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bcb4: 48 8b 3d a5 eb 69 00 mov 0x69eba5(%rip),%rdi # bba860 0.00 : 51bcbb: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bcc0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bcc7: e8 44 d1 27 00 callq 798e10 0.00 : 51bccc: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_FUNCTION; 0.00 : 51bcd2: c7 40 04 0e 00 00 00 movl $0xe,0x4(%rax) : n->object = $3->funcname; : n->objarg = $3->funcargs; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bcd9: 49 89 c6 mov %rax,%r14 : } : | ALTER FUNCTION function_with_argtypes SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FUNCTION; : n->object = $3->funcname; 0.00 : 51bcdc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51bce3: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51bce7: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51bceb: 48 89 50 10 mov %rdx,0x10(%rax) : n->objarg = $3->funcargs; 0.00 : 51bcef: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51bcf3: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 51bcf7: 48 89 50 18 mov %rdx,0x18(%rax) : n->newschema = $6; 0.00 : 51bcfb: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51bcfe: c6 40 28 00 movb $0x0,0x28(%rax) : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_FUNCTION; : n->object = $3->funcname; : n->objarg = $3->funcargs; : n->newschema = $6; 0.00 : 51bd02: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR any_operator oper_argtypes SET SCHEMA name 0.00 : 51bd06: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bd0d: e9 6e 5c ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER EXTENSION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bd12: 48 8b 3d 47 eb 69 00 mov 0x69eb47(%rip),%rdi # bba860 0.00 : 51bd19: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bd1e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bd25: e8 e6 d0 27 00 callq 798e10 0.00 : 51bd2a: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_EXTENSION; 0.00 : 51bd30: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->object = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bd37: 49 89 c6 mov %rax,%r14 : } : | ALTER EXTENSION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_EXTENSION; : n->object = $3; 0.00 : 51bd3a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51bd41: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51bd45: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $6; 0.00 : 51bd49: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51bd4c: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER EXTENSION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_EXTENSION; : n->object = $3; : n->newschema = $6; 0.00 : 51bd50: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes SET SCHEMA name 0.00 : 51bd54: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bd5b: e9 20 5c ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bd60: 48 8b 3d f9 ea 69 00 mov 0x69eaf9(%rip),%rdi # bba860 0.00 : 51bd67: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bd6c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bd73: e8 98 d0 27 00 callq 798e10 0.00 : 51bd78: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_DOMAIN; 0.00 : 51bd7e: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->object = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bd85: 49 89 c6 mov %rax,%r14 : } : | ALTER DOMAIN_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_DOMAIN; : n->object = $3; 0.00 : 51bd88: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51bd8f: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51bd93: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $6; 0.00 : 51bd97: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51bd9a: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER DOMAIN_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_DOMAIN; : n->object = $3; : n->newschema = $6; 0.00 : 51bd9e: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER EXTENSION any_name SET SCHEMA name 0.00 : 51bda2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bda9: e9 d2 5b ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bdae: 48 8b 3d ab ea 69 00 mov 0x69eaab(%rip),%rdi # bba860 0.00 : 51bdb5: be 30 00 00 00 mov $0x30,%esi 0.00 : 51bdba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bdc1: e8 4a d0 27 00 callq 798e10 0.00 : 51bdc6: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_CONVERSION; 0.00 : 51bdcc: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->object = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bdd3: 49 89 c6 mov %rax,%r14 : } : | ALTER CONVERSION_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_CONVERSION; : n->object = $3; 0.00 : 51bdd6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51bddd: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51bde1: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $6; 0.00 : 51bde5: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51bde8: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER CONVERSION_P any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_CONVERSION; : n->object = $3; : n->newschema = $6; 0.00 : 51bdec: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name SET SCHEMA name 0.00 : 51bdf0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bdf7: e9 84 5b ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER COLLATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51bdfc: 48 8b 3d 5d ea 69 00 mov 0x69ea5d(%rip),%rdi # bba860 0.00 : 51be03: be 30 00 00 00 mov $0x30,%esi 0.00 : 51be08: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51be0f: e8 fc cf 27 00 callq 798e10 0.00 : 51be14: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_COLLATION; 0.00 : 51be1a: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->object = $3; : n->newschema = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51be21: 49 89 c6 mov %rax,%r14 : } : | ALTER COLLATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_COLLATION; : n->object = $3; 0.00 : 51be24: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51be2b: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51be2f: 48 89 50 10 mov %rdx,0x10(%rax) : n->newschema = $6; 0.00 : 51be33: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51be36: c6 40 28 00 movb $0x0,0x28(%rax) : | ALTER COLLATION any_name SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_COLLATION; : n->object = $3; : n->newschema = $6; 0.00 : 51be3a: 48 89 50 20 mov %rdx,0x20(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name SET SCHEMA name 0.00 : 51be3e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51be45: e9 36 5b ff ff jmpq 511980 : *****************************************************************************/ : : AlterObjectSchemaStmt: : ALTER AGGREGATE func_name aggr_args SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51be4a: 48 8b 3d 0f ea 69 00 mov 0x69ea0f(%rip),%rdi # bba860 0.00 : 51be51: be 30 00 00 00 mov $0x30,%esi 0.00 : 51be56: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51be5d: e8 ae cf 27 00 callq 798e10 0.00 : 51be62: c7 00 01 03 00 00 movl $0x301,(%rax) : n->objectType = OBJECT_AGGREGATE; 0.00 : 51be68: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : *****************************************************************************/ : : AlterObjectSchemaStmt: : ALTER AGGREGATE func_name aggr_args SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); 0.00 : 51be6f: 48 89 c3 mov %rax,%rbx : n->objectType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51be72: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objarg = extractAggrArgTypes($4); : n->newschema = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51be79: 49 89 de mov %rbx,%r14 : AlterObjectSchemaStmt: : ALTER AGGREGATE func_name aggr_args SET SCHEMA name : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51be7c: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 51be80: 48 89 43 10 mov %rax,0x10(%rbx) : n->objarg = extractAggrArgTypes($4); 0.00 : 51be84: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51be88: e8 43 4c ff ff callq 510ad0 0.00 : 51be8d: 48 89 43 18 mov %rax,0x18(%rbx) : n->newschema = $7; 0.00 : 51be91: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51be98: 48 8b 06 mov (%rsi),%rax : n->missing_ok = false; 0.00 : 51be9b: c6 43 28 00 movb $0x0,0x28(%rbx) : { : AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); : n->objectType = OBJECT_AGGREGATE; : n->object = $3; : n->objarg = extractAggrArgTypes($4); : n->newschema = $7; 0.00 : 51be9f: 48 89 43 20 mov %rax,0x20(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER COLLATION any_name SET SCHEMA name 0.00 : 51bea3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51beaa: e9 d1 5a ff ff jmpq 511980 : opt_column: COLUMN { $$ = COLUMN; } : | /*EMPTY*/ { $$ = 0; } : ; : : opt_set_data: SET DATA_P { $$ = 1; } : | /*EMPTY*/ { $$ = 0; } 0.00 : 51beaf: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51beb6: ff ff ff 0.00 : 51beb9: 49 21 d6 and %rdx,%r14 : ; 0.00 : 51bebc: e9 bf 5a ff ff jmpq 511980 : : opt_column: COLUMN { $$ = COLUMN; } : | /*EMPTY*/ { $$ = 0; } : ; : : opt_set_data: SET DATA_P { $$ = 1; } 0.00 : 51bec1: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51bec8: ff ff ff 0.00 : 51becb: 49 21 c6 and %rax,%r14 0.00 : 51bece: 49 83 ce 01 or $0x1,%r14 : | /*EMPTY*/ { $$ = 0; } 0.00 : 51bed2: e9 a9 5a ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_column: COLUMN { $$ = COLUMN; } : | /*EMPTY*/ { $$ = 0; } 0.00 : 51bed7: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51bede: ff ff ff 0.00 : 51bee1: 49 21 f6 and %rsi,%r14 : ; 0.00 : 51bee4: e9 97 5a ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : ; : : opt_column: COLUMN { $$ = COLUMN; } 0.00 : 51bee9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51bef0: ff ff ff 0.00 : 51bef3: 49 21 de and %rbx,%r14 0.00 : 51bef6: 49 81 ce 43 01 00 00 or $0x143,%r14 : | /*EMPTY*/ { $$ = 0; } 0.00 : 51befd: e9 7e 5a ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name RENAME ATTRIBUTE name TO name opt_drop_behavior : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51bf02: 48 8b 3d 57 e9 69 00 mov 0x69e957(%rip),%rdi # bba860 0.00 : 51bf09: be 40 00 00 00 mov $0x40,%esi 0.00 : 51bf0e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bf15: e8 f6 ce 27 00 callq 798e10 0.00 : 51bf1a: 48 89 c3 mov %rax,%rbx 0.00 : 51bf1d: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_ATTRIBUTE; 0.00 : 51bf23: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->relationType = OBJECT_TYPE; 0.00 : 51bf2a: c7 40 08 22 00 00 00 movl $0x22,0x8(%rax) : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 51bf31: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->subname = $6; : n->newname = $8; : n->behavior = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bf38: 49 89 de mov %rbx,%r14 : | ALTER TYPE_P any_name RENAME ATTRIBUTE name TO name opt_drop_behavior : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ATTRIBUTE; : n->relationType = OBJECT_TYPE; : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 51bf3b: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 51bf42: 48 8b 7a d0 mov -0x30(%rdx),%rdi 0.00 : 51bf46: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 51bf4d: 8b 70 e8 mov -0x18(%rax),%esi 0.00 : 51bf50: e8 eb 4e ff ff callq 510e40 0.00 : 51bf55: 48 89 43 10 mov %rax,0x10(%rbx) : n->subname = $6; 0.00 : 51bf59: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51bf60: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 51bf64: 48 89 43 28 mov %rax,0x28(%rbx) : n->newname = $8; 0.00 : 51bf68: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 51bf6c: 48 89 43 30 mov %rax,0x30(%rbx) : n->behavior = $9; 0.00 : 51bf70: 8b 01 mov (%rcx),%eax : n->missing_ok = false; 0.00 : 51bf72: c6 43 3c 00 movb $0x0,0x3c(%rbx) : n->renameType = OBJECT_ATTRIBUTE; : n->relationType = OBJECT_TYPE; : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); : n->subname = $6; : n->newname = $8; : n->behavior = $9; 0.00 : 51bf76: 89 43 38 mov %eax,0x38(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : ; 0.00 : 51bf79: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bf80: e9 fb 59 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51bf85: 48 8b 3d d4 e8 69 00 mov 0x69e8d4(%rip),%rdi # bba860 0.00 : 51bf8c: be 40 00 00 00 mov $0x40,%esi 0.00 : 51bf91: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bf98: e8 73 ce 27 00 callq 798e10 0.00 : 51bf9d: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TYPE; 0.00 : 51bfa3: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->object = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bfaa: 49 89 c6 mov %rax,%r14 : } : | ALTER TYPE_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TYPE; : n->object = $3; 0.00 : 51bfad: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51bfb4: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51bfb8: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $6; 0.00 : 51bfbc: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51bfbf: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TYPE_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TYPE; : n->object = $3; : n->newname = $6; 0.00 : 51bfc3: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name RENAME ATTRIBUTE name TO name opt_drop_behavior 0.00 : 51bfc7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51bfce: e9 ad 59 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51bfd3: 48 8b 3d 86 e8 69 00 mov 0x69e886(%rip),%rdi # bba860 0.00 : 51bfda: be 40 00 00 00 mov $0x40,%esi 0.00 : 51bfdf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51bfe6: e8 25 ce 27 00 callq 798e10 0.00 : 51bfeb: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TSCONFIGURATION; 0.00 : 51bff1: c7 40 04 1e 00 00 00 movl $0x1e,0x4(%rax) : n->object = $5; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51bff8: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSCONFIGURATION; : n->object = $5; 0.00 : 51bffb: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c002: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51c006: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $8; 0.00 : 51c00a: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c00d: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSCONFIGURATION; : n->object = $5; : n->newname = $8; 0.00 : 51c011: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TYPE_P any_name RENAME TO name 0.00 : 51c015: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c01c: e9 5f 59 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c021: 48 8b 3d 38 e8 69 00 mov 0x69e838(%rip),%rdi # bba860 0.00 : 51c028: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c02d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c034: e8 d7 cd 27 00 callq 798e10 0.00 : 51c039: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TSTEMPLATE; 0.00 : 51c03f: c7 40 04 21 00 00 00 movl $0x21,0x4(%rax) : n->object = $5; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c046: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSTEMPLATE; : n->object = $5; 0.00 : 51c049: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c050: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51c054: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $8; 0.00 : 51c058: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c05b: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSTEMPLATE; : n->object = $5; : n->newname = $8; 0.00 : 51c05f: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name 0.00 : 51c063: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c06a: e9 11 59 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c06f: 48 8b 3d ea e7 69 00 mov 0x69e7ea(%rip),%rdi # bba860 0.00 : 51c076: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c07b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c082: e8 89 cd 27 00 callq 798e10 0.00 : 51c087: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TSDICTIONARY; 0.00 : 51c08d: c7 40 04 1f 00 00 00 movl $0x1f,0x4(%rax) : n->object = $5; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c094: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSDICTIONARY; : n->object = $5; 0.00 : 51c097: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c09e: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51c0a2: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $8; 0.00 : 51c0a6: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51c0a9: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSDICTIONARY; : n->object = $5; : n->newname = $8; 0.00 : 51c0ad: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name 0.00 : 51c0b1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c0b8: e9 c3 58 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c0bd: 48 8b 3d 9c e7 69 00 mov 0x69e79c(%rip),%rdi # bba860 0.00 : 51c0c4: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c0c9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c0d0: e8 3b cd 27 00 callq 798e10 0.00 : 51c0d5: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TSPARSER; 0.00 : 51c0db: c7 40 04 20 00 00 00 movl $0x20,0x4(%rax) : n->object = $5; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c0e2: 49 89 c6 mov %rax,%r14 : } : | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSPARSER; : n->object = $5; 0.00 : 51c0e5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c0ec: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51c0f0: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $8; 0.00 : 51c0f4: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c0f7: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TSPARSER; : n->object = $5; : n->newname = $8; 0.00 : 51c0fb: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name 0.00 : 51c0ff: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c106: e9 75 58 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLESPACE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c10b: 48 8b 3d 4e e7 69 00 mov 0x69e74e(%rip),%rdi # bba860 0.00 : 51c112: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c117: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c11e: e8 ed cc 27 00 callq 798e10 0.00 : 51c123: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TABLESPACE; 0.00 : 51c129: c7 40 04 1c 00 00 00 movl $0x1c,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c130: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLESPACE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLESPACE; : n->subname = $3; 0.00 : 51c133: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c13a: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51c13e: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51c142: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c145: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER TABLESPACE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLESPACE; : n->subname = $3; : n->newname = $6; 0.00 : 51c149: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name 0.00 : 51c14d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c154: e9 27 58 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER USER RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c159: 48 8b 3d 00 e7 69 00 mov 0x69e700(%rip),%rdi # bba860 0.00 : 51c160: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c165: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c16c: e8 9f cc 27 00 callq 798e10 0.00 : 51c171: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_ROLE; 0.00 : 51c177: c7 40 04 17 00 00 00 movl $0x17,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c17e: 49 89 c6 mov %rax,%r14 : } : | ALTER USER RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; 0.00 : 51c181: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c188: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51c18c: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51c190: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51c193: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER USER RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; : n->newname = $6; 0.00 : 51c197: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLESPACE name RENAME TO name 0.00 : 51c19b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c1a2: e9 d9 57 ff ff jmpq 511980 : n->newname = $7; : $$ = (Node *)n; : } : | ALTER ROLE RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c1a7: 48 8b 3d b2 e6 69 00 mov 0x69e6b2(%rip),%rdi # bba860 0.00 : 51c1ae: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c1b3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c1ba: e8 51 cc 27 00 callq 798e10 0.00 : 51c1bf: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_ROLE; 0.00 : 51c1c5: c7 40 04 17 00 00 00 movl $0x17,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c1cc: 49 89 c6 mov %rax,%r14 : } : | ALTER ROLE RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; 0.00 : 51c1cf: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c1d6: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51c1da: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51c1de: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c1e1: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER ROLE RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; : n->newname = $6; 0.00 : 51c1e5: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER USER RoleId RENAME TO RoleId 0.00 : 51c1e9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c1f0: e9 8b 57 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER EVENT TRIGGER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c1f5: 48 8b 3d 64 e6 69 00 mov 0x69e664(%rip),%rdi # bba860 0.00 : 51c1fc: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c201: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c208: e8 03 cc 27 00 callq 798e10 0.00 : 51c20d: 48 89 c3 mov %rax,%rbx 0.00 : 51c210: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_EVENT_TRIGGER; 0.00 : 51c216: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : n->object = list_make1(makeString($4)); 0.00 : 51c21d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->newname = $7; : $$ = (Node *)n; 0.00 : 51c224: 49 89 de mov %rbx,%r14 : } : | ALTER EVENT TRIGGER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_EVENT_TRIGGER; : n->object = list_make1(makeString($4)); 0.00 : 51c227: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51c22b: e8 c0 34 0e 00 callq 5ff6f0 0.00 : 51c230: 31 f6 xor %esi,%esi 0.00 : 51c232: 48 89 c7 mov %rax,%rdi 0.00 : 51c235: e8 16 56 0c 00 callq 5e1850 0.00 : 51c23a: 48 89 43 18 mov %rax,0x18(%rbx) : n->newname = $7; 0.00 : 51c23e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51c245: 48 8b 02 mov (%rdx),%rax 0.00 : 51c248: 48 89 43 30 mov %rax,0x30(%rbx) : $$ = (Node *)n; : } : | ALTER ROLE RoleId RENAME TO RoleId 0.00 : 51c24c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c253: e9 28 57 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TRIGGER name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c258: 48 8b 3d 01 e6 69 00 mov 0x69e601(%rip),%rdi # bba860 0.00 : 51c25f: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c264: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c26b: e8 a0 cb 27 00 callq 798e10 0.00 : 51c270: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TRIGGER; 0.00 : 51c276: c7 40 04 1d 00 00 00 movl $0x1d,0x4(%rax) : n->relation = $5; : n->subname = $3; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c27d: 49 89 c6 mov %rax,%r14 : } : | ALTER TRIGGER name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TRIGGER; : n->relation = $5; 0.00 : 51c280: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c287: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51c28b: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $3; 0.00 : 51c28f: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51c293: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51c297: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c29a: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TRIGGER; : n->relation = $5; : n->subname = $3; : n->newname = $8; 0.00 : 51c29e: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER EVENT TRIGGER name RENAME TO name 0.00 : 51c2a2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c2a9: e9 d2 56 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER RULE name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c2ae: 48 8b 3d ab e5 69 00 mov 0x69e5ab(%rip),%rdi # bba860 0.00 : 51c2b5: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c2ba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c2c1: e8 4a cb 27 00 callq 798e10 0.00 : 51c2c6: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_RULE; 0.00 : 51c2cc: c7 40 04 18 00 00 00 movl $0x18,0x4(%rax) : n->relation = $5; : n->subname = $3; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c2d3: 49 89 c6 mov %rax,%r14 : } : | ALTER RULE name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_RULE; : n->relation = $5; 0.00 : 51c2d6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c2dd: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51c2e1: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $3; 0.00 : 51c2e5: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51c2e9: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51c2ed: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51c2f0: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_RULE; : n->relation = $5; : n->subname = $3; : n->newname = $8; 0.00 : 51c2f4: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TRIGGER name ON qualified_name RENAME TO name 0.00 : 51c2f8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c2ff: e9 7c 56 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c304: 48 8b 3d 55 e5 69 00 mov 0x69e555(%rip),%rdi # bba860 0.00 : 51c30b: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c310: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c317: e8 f4 ca 27 00 callq 798e10 0.00 : 51c31c: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c322: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_FOREIGN_TABLE; : n->relation = $6; : n->subname = $9; : n->newname = $11; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c329: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_FOREIGN_TABLE; 0.00 : 51c32c: c7 40 08 0d 00 00 00 movl $0xd,0x8(%rax) : n->relation = $6; 0.00 : 51c333: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c33a: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51c33e: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $9; 0.00 : 51c342: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51c346: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $11; 0.00 : 51c34a: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 51c34d: c6 40 3c 01 movb $0x1,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_FOREIGN_TABLE; : n->relation = $6; : n->subname = $9; : n->newname = $11; 0.00 : 51c351: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER RULE name ON qualified_name RENAME TO name 0.00 : 51c355: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c35c: e9 1f 56 ff ff jmpq 511980 : n->newname = $8; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c361: 48 8b 3d f8 e4 69 00 mov 0x69e4f8(%rip),%rdi # bba860 0.00 : 51c368: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c36d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c374: e8 97 ca 27 00 callq 798e10 0.00 : 51c379: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c37f: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_FOREIGN_TABLE; : n->relation = $4; : n->subname = $7; : n->newname = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c386: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_FOREIGN_TABLE; 0.00 : 51c389: c7 40 08 0d 00 00 00 movl $0xd,0x8(%rax) : n->relation = $4; 0.00 : 51c390: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c397: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51c39b: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $7; 0.00 : 51c39f: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 51c3a3: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $9; 0.00 : 51c3a7: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c3aa: c6 40 3c 00 movb $0x0,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_FOREIGN_TABLE; : n->relation = $4; : n->subname = $7; : n->newname = $9; 0.00 : 51c3ae: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name 0.00 : 51c3b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c3b9: e9 c2 55 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME CONSTRAINT name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c3be: 48 8b 3d 9b e4 69 00 mov 0x69e49b(%rip),%rdi # bba860 0.00 : 51c3c5: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c3ca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c3d1: e8 3a ca 27 00 callq 798e10 0.00 : 51c3d6: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_CONSTRAINT; 0.00 : 51c3dc: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->relationType = OBJECT_TABLE; : n->relation = $3; : n->subname = $6; : n->newname = $8; : $$ = (Node *)n; 0.00 : 51c3e3: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE relation_expr RENAME CONSTRAINT name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_CONSTRAINT; : n->relationType = OBJECT_TABLE; 0.00 : 51c3e6: c7 40 08 1b 00 00 00 movl $0x1b,0x8(%rax) : n->relation = $3; 0.00 : 51c3ed: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c3f4: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51c3f8: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $6; 0.00 : 51c3fc: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51c400: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51c404: 48 8b 13 mov (%rbx),%rdx 0.00 : 51c407: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr RENAME opt_column name TO name 0.00 : 51c40b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c412: e9 69 55 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c417: 48 8b 3d 42 e4 69 00 mov 0x69e442(%rip),%rdi # bba860 0.00 : 51c41e: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c423: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c42a: e8 e1 c9 27 00 callq 798e10 0.00 : 51c42f: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c435: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_MATVIEW; : n->relation = $6; : n->subname = $9; : n->newname = $11; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c43c: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_MATVIEW; 0.00 : 51c43f: c7 40 08 12 00 00 00 movl $0x12,0x8(%rax) : n->relation = $6; 0.00 : 51c446: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c44d: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51c451: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $9; 0.00 : 51c455: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51c459: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $11; 0.00 : 51c45d: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 51c460: c6 40 3c 01 movb $0x1,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_MATVIEW; : n->relation = $6; : n->subname = $9; : n->newname = $11; 0.00 : 51c464: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME CONSTRAINT name TO name 0.00 : 51c468: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c46f: e9 0c 55 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c474: 48 8b 3d e5 e3 69 00 mov 0x69e3e5(%rip),%rdi # bba860 0.00 : 51c47b: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c480: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c487: e8 84 c9 27 00 callq 798e10 0.00 : 51c48c: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c492: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_MATVIEW; : n->relation = $4; : n->subname = $7; : n->newname = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c499: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW qualified_name RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_MATVIEW; 0.00 : 51c49c: c7 40 08 12 00 00 00 movl $0x12,0x8(%rax) : n->relation = $4; 0.00 : 51c4a3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c4aa: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51c4ae: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $7; 0.00 : 51c4b2: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 51c4b6: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $9; 0.00 : 51c4ba: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c4bd: c6 40 3c 00 movb $0x0,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_MATVIEW; : n->relation = $4; : n->subname = $7; : n->newname = $9; 0.00 : 51c4c1: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME opt_column name TO name 0.00 : 51c4c5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c4cc: e9 af 54 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c4d1: 48 8b 3d 88 e3 69 00 mov 0x69e388(%rip),%rdi # bba860 0.00 : 51c4d8: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c4dd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c4e4: e8 27 c9 27 00 callq 798e10 0.00 : 51c4e9: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c4ef: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_TABLE; : n->relation = $5; : n->subname = $8; : n->newname = $10; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c4f6: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_TABLE; 0.00 : 51c4f9: c7 40 08 1b 00 00 00 movl $0x1b,0x8(%rax) : n->relation = $5; 0.00 : 51c500: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c507: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51c50b: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $8; 0.00 : 51c50f: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51c513: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $10; 0.00 : 51c517: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51c51a: c6 40 3c 01 movb $0x1,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_TABLE; : n->relation = $5; : n->subname = $8; : n->newname = $10; 0.00 : 51c51e: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name RENAME opt_column name TO name 0.00 : 51c522: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c529: e9 52 54 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c52e: 48 8b 3d 2b e3 69 00 mov 0x69e32b(%rip),%rdi # bba860 0.00 : 51c535: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c53a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c541: e8 ca c8 27 00 callq 798e10 0.00 : 51c546: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLUMN; 0.00 : 51c54c: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->relationType = OBJECT_TABLE; : n->relation = $3; : n->subname = $6; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c553: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE relation_expr RENAME opt_column name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_TABLE; 0.00 : 51c556: c7 40 08 1b 00 00 00 movl $0x1b,0x8(%rax) : n->relation = $3; 0.00 : 51c55d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c564: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51c568: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $6; 0.00 : 51c56c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51c570: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51c574: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c577: c6 40 3c 00 movb $0x0,0x3c(%rax) : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLUMN; : n->relationType = OBJECT_TABLE; : n->relation = $3; : n->subname = $6; : n->newname = $8; 0.00 : 51c57b: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name 0.00 : 51c57f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c586: e9 f5 53 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c58b: 48 8b 3d ce e2 69 00 mov 0x69e2ce(%rip),%rdi # bba860 0.00 : 51c592: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c597: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c59e: e8 6d c8 27 00 callq 798e10 0.00 : 51c5a3: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_FOREIGN_TABLE; 0.00 : 51c5a9: c7 40 04 0d 00 00 00 movl $0xd,0x4(%rax) : n->relation = $6; : n->subname = NULL; : n->newname = $9; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c5b0: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $6; 0.00 : 51c5b3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c5ba: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->subname = NULL; 0.00 : 51c5be: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c5c5: 00 : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $6; 0.00 : 51c5c6: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $9; 0.00 : 51c5ca: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = true; 0.00 : 51c5cd: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $6; : n->subname = NULL; : n->newname = $9; 0.00 : 51c5d1: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME opt_column name TO name 0.00 : 51c5d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c5dc: e9 9f 53 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c5e1: 48 8b 3d 78 e2 69 00 mov 0x69e278(%rip),%rdi # bba860 0.00 : 51c5e8: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c5ed: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c5f4: e8 17 c8 27 00 callq 798e10 0.00 : 51c5f9: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_FOREIGN_TABLE; 0.00 : 51c5ff: c7 40 04 0d 00 00 00 movl $0xd,0x4(%rax) : n->relation = $4; : n->subname = NULL; : n->newname = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c606: 49 89 c6 mov %rax,%r14 : } : | ALTER FOREIGN TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $4; 0.00 : 51c609: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c610: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->subname = NULL; 0.00 : 51c614: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c61b: 00 : } : | ALTER FOREIGN TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $4; 0.00 : 51c61c: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $7; 0.00 : 51c620: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51c623: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_TABLE; : n->relation = $4; : n->subname = NULL; : n->newname = $7; 0.00 : 51c627: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME TO name 0.00 : 51c62b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c632: e9 49 53 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER INDEX IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c637: 48 8b 3d 22 e2 69 00 mov 0x69e222(%rip),%rdi # bba860 0.00 : 51c63e: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c643: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c64a: e8 c1 c7 27 00 callq 798e10 0.00 : 51c64f: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_INDEX; 0.00 : 51c655: c7 40 04 0f 00 00 00 movl $0xf,0x4(%rax) : n->relation = $5; : n->subname = NULL; : n->newname = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c65c: 49 89 c6 mov %rax,%r14 : } : | ALTER INDEX IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $5; 0.00 : 51c65f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c666: 48 8b 51 e8 mov -0x18(%rcx),%rdx : n->subname = NULL; 0.00 : 51c66a: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c671: 00 : } : | ALTER INDEX IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $5; 0.00 : 51c672: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $8; 0.00 : 51c676: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 51c679: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $5; : n->subname = NULL; : n->newname = $8; 0.00 : 51c67d: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE relation_expr RENAME TO name 0.00 : 51c681: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c688: e9 f3 52 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER INDEX qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c68d: 48 8b 3d cc e1 69 00 mov 0x69e1cc(%rip),%rdi # bba860 0.00 : 51c694: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c699: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c6a0: e8 6b c7 27 00 callq 798e10 0.00 : 51c6a5: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_INDEX; 0.00 : 51c6ab: c7 40 04 0f 00 00 00 movl $0xf,0x4(%rax) : n->relation = $3; : n->subname = NULL; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c6b2: 49 89 c6 mov %rax,%r14 : } : | ALTER INDEX qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $3; 0.00 : 51c6b5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c6bc: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->subname = NULL; 0.00 : 51c6c0: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c6c7: 00 : } : | ALTER INDEX qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $3; 0.00 : 51c6c8: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $6; 0.00 : 51c6cc: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c6cf: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_INDEX; : n->relation = $3; : n->subname = NULL; : n->newname = $6; 0.00 : 51c6d3: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER INDEX IF_P EXISTS qualified_name RENAME TO name 0.00 : 51c6d7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c6de: e9 9d 52 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c6e3: 48 8b 3d 76 e1 69 00 mov 0x69e176(%rip),%rdi # bba860 0.00 : 51c6ea: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c6ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c6f6: e8 15 c7 27 00 callq 798e10 0.00 : 51c6fb: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_MATVIEW; 0.00 : 51c701: c7 40 04 12 00 00 00 movl $0x12,0x4(%rax) : n->relation = $6; : n->subname = NULL; : n->newname = $9; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c708: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $6; 0.00 : 51c70b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c712: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->subname = NULL; 0.00 : 51c716: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c71d: 00 : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $6; 0.00 : 51c71e: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $9; 0.00 : 51c722: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51c725: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $6; : n->subname = NULL; : n->newname = $9; 0.00 : 51c729: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER INDEX qualified_name RENAME TO name 0.00 : 51c72d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c734: e9 47 52 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c739: 48 8b 3d 20 e1 69 00 mov 0x69e120(%rip),%rdi # bba860 0.00 : 51c740: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c745: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c74c: e8 bf c6 27 00 callq 798e10 0.00 : 51c751: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_MATVIEW; 0.00 : 51c757: c7 40 04 12 00 00 00 movl $0x12,0x4(%rax) : n->relation = $4; : n->subname = NULL; : n->newname = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c75e: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $4; 0.00 : 51c761: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c768: 48 8b 51 e8 mov -0x18(%rcx),%rdx : n->subname = NULL; 0.00 : 51c76c: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c773: 00 : } : | ALTER MATERIALIZED VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $4; 0.00 : 51c774: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $7; 0.00 : 51c778: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c77b: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_MATVIEW; : n->relation = $4; : n->subname = NULL; : n->newname = $7; 0.00 : 51c77f: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME TO name 0.00 : 51c783: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c78a: e9 f1 51 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c78f: 48 8b 3d ca e0 69 00 mov 0x69e0ca(%rip),%rdi # bba860 0.00 : 51c796: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c79b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c7a2: e8 69 c6 27 00 callq 798e10 0.00 : 51c7a7: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_VIEW; 0.00 : 51c7ad: c7 40 04 23 00 00 00 movl $0x23,0x4(%rax) : n->relation = $5; : n->subname = NULL; : n->newname = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c7b4: 49 89 c6 mov %rax,%r14 : } : | ALTER VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $5; 0.00 : 51c7b7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c7be: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->subname = NULL; 0.00 : 51c7c2: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c7c9: 00 : } : | ALTER VIEW IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $5; 0.00 : 51c7ca: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $8; 0.00 : 51c7ce: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = true; 0.00 : 51c7d1: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $5; : n->subname = NULL; : n->newname = $8; 0.00 : 51c7d5: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name RENAME TO name 0.00 : 51c7d9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c7e0: e9 9b 51 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c7e5: 48 8b 3d 74 e0 69 00 mov 0x69e074(%rip),%rdi # bba860 0.00 : 51c7ec: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c7f1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c7f8: e8 13 c6 27 00 callq 798e10 0.00 : 51c7fd: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_VIEW; 0.00 : 51c803: c7 40 04 23 00 00 00 movl $0x23,0x4(%rax) : n->relation = $3; : n->subname = NULL; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c80a: 49 89 c6 mov %rax,%r14 : } : | ALTER VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $3; 0.00 : 51c80d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c814: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->subname = NULL; 0.00 : 51c818: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c81f: 00 : } : | ALTER VIEW qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $3; 0.00 : 51c820: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $6; 0.00 : 51c824: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51c827: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_VIEW; : n->relation = $3; : n->subname = NULL; : n->newname = $6; 0.00 : 51c82b: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name RENAME TO name 0.00 : 51c82f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c836: e9 45 51 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c83b: 48 8b 3d 1e e0 69 00 mov 0x69e01e(%rip),%rdi # bba860 0.00 : 51c842: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c847: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c84e: e8 bd c5 27 00 callq 798e10 0.00 : 51c853: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_SEQUENCE; 0.00 : 51c859: c7 40 04 1a 00 00 00 movl $0x1a,0x4(%rax) : n->relation = $5; : n->subname = NULL; : n->newname = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c860: 49 89 c6 mov %rax,%r14 : } : | ALTER SEQUENCE IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $5; 0.00 : 51c863: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c86a: 48 8b 51 e8 mov -0x18(%rcx),%rdx : n->subname = NULL; 0.00 : 51c86e: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c875: 00 : } : | ALTER SEQUENCE IF_P EXISTS qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $5; 0.00 : 51c876: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $8; 0.00 : 51c87a: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 51c87d: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $5; : n->subname = NULL; : n->newname = $8; 0.00 : 51c881: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name RENAME TO name 0.00 : 51c885: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c88c: e9 ef 50 ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c891: 48 8b 3d c8 df 69 00 mov 0x69dfc8(%rip),%rdi # bba860 0.00 : 51c898: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c89d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c8a4: e8 67 c5 27 00 callq 798e10 0.00 : 51c8a9: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_SEQUENCE; 0.00 : 51c8af: c7 40 04 1a 00 00 00 movl $0x1a,0x4(%rax) : n->relation = $3; : n->subname = NULL; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c8b6: 49 89 c6 mov %rax,%r14 : } : | ALTER SEQUENCE qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $3; 0.00 : 51c8b9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51c8c0: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->subname = NULL; 0.00 : 51c8c4: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c8cb: 00 : } : | ALTER SEQUENCE qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $3; 0.00 : 51c8cc: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $6; 0.00 : 51c8d0: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51c8d3: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SEQUENCE; : n->relation = $3; : n->subname = NULL; : n->newname = $6; 0.00 : 51c8d7: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name RENAME TO name 0.00 : 51c8db: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c8e2: e9 99 50 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c8e7: 48 8b 3d 72 df 69 00 mov 0x69df72(%rip),%rdi # bba860 0.00 : 51c8ee: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c8f3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c8fa: e8 11 c5 27 00 callq 798e10 0.00 : 51c8ff: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TABLE; 0.00 : 51c905: c7 40 04 1b 00 00 00 movl $0x1b,0x4(%rax) : n->relation = $5; : n->subname = NULL; : n->newname = $8; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51c90c: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $5; 0.00 : 51c90f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51c916: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->subname = NULL; 0.00 : 51c91a: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c921: 00 : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $5; 0.00 : 51c922: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $8; 0.00 : 51c926: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 51c929: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $5; : n->subname = NULL; : n->newname = $8; 0.00 : 51c92d: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name RENAME TO name 0.00 : 51c931: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c938: e9 43 50 ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c93d: 48 8b 3d 1c df 69 00 mov 0x69df1c(%rip),%rdi # bba860 0.00 : 51c944: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c949: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c950: e8 bb c4 27 00 callq 798e10 0.00 : 51c955: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_TABLE; 0.00 : 51c95b: c7 40 04 1b 00 00 00 movl $0x1b,0x4(%rax) : n->relation = $3; : n->subname = NULL; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c962: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $3; 0.00 : 51c965: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51c96c: 48 8b 51 e8 mov -0x18(%rcx),%rdx : n->subname = NULL; 0.00 : 51c970: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 51c977: 00 : } : | ALTER TABLE relation_expr RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $3; 0.00 : 51c978: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = NULL; : n->newname = $6; 0.00 : 51c97c: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51c97f: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_TABLE; : n->relation = $3; : n->subname = NULL; : n->newname = $6; 0.00 : 51c983: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr RENAME TO name 0.00 : 51c987: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c98e: e9 ed 4f ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SERVER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c993: 48 8b 3d c6 de 69 00 mov 0x69dec6(%rip),%rdi # bba860 0.00 : 51c99a: be 40 00 00 00 mov $0x40,%esi 0.00 : 51c99f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51c9a6: e8 65 c4 27 00 callq 798e10 0.00 : 51c9ab: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_FOREIGN_SERVER; 0.00 : 51c9b1: c7 40 04 0c 00 00 00 movl $0xc,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SERVER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c9b8: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_FOREIGN_SERVER; : n->object = list_make1(makeString($3)); 0.00 : 51c9bb: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51c9c2: 49 89 de mov %rbx,%r14 : } : | ALTER SERVER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_SERVER; : n->object = list_make1(makeString($3)); 0.00 : 51c9c5: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51c9c9: e8 22 2d 0e 00 callq 5ff6f0 0.00 : 51c9ce: 31 f6 xor %esi,%esi 0.00 : 51c9d0: 48 89 c7 mov %rax,%rdi 0.00 : 51c9d3: e8 78 4e 0c 00 callq 5e1850 0.00 : 51c9d8: 48 89 43 18 mov %rax,0x18(%rbx) : n->newname = $6; 0.00 : 51c9dc: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51c9e3: 48 8b 02 mov (%rdx),%rax : n->missing_ok = false; 0.00 : 51c9e6: c6 43 3c 00 movb $0x0,0x3c(%rbx) : | ALTER SERVER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FOREIGN_SERVER; : n->object = list_make1(makeString($3)); : n->newname = $6; 0.00 : 51c9ea: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE relation_expr RENAME TO name 0.00 : 51c9ee: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51c9f5: e9 86 4f ff ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER SCHEMA name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51c9fa: 48 8b 3d 5f de 69 00 mov 0x69de5f(%rip),%rdi # bba860 0.00 : 51ca01: be 40 00 00 00 mov $0x40,%esi 0.00 : 51ca06: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ca0d: e8 fe c3 27 00 callq 798e10 0.00 : 51ca12: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_SCHEMA; 0.00 : 51ca18: c7 40 04 19 00 00 00 movl $0x19,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ca1f: 49 89 c6 mov %rax,%r14 : } : | ALTER SCHEMA name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SCHEMA; : n->subname = $3; 0.00 : 51ca22: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ca29: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51ca2d: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51ca31: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51ca34: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER SCHEMA name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_SCHEMA; : n->subname = $3; : n->newname = $6; 0.00 : 51ca38: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SERVER name RENAME TO name 0.00 : 51ca3c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ca43: e9 38 4f ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER POLICY IF_P EXISTS name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51ca48: 48 8b 3d 11 de 69 00 mov 0x69de11(%rip),%rdi # bba860 0.00 : 51ca4f: be 40 00 00 00 mov $0x40,%esi 0.00 : 51ca54: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ca5b: e8 b0 c3 27 00 callq 798e10 0.00 : 51ca60: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_POLICY; 0.00 : 51ca66: c7 40 04 16 00 00 00 movl $0x16,0x4(%rax) : n->relation = $7; : n->subname = $5; : n->newname = $10; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 51ca6d: 49 89 c6 mov %rax,%r14 : } : | ALTER POLICY IF_P EXISTS name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_POLICY; : n->relation = $7; 0.00 : 51ca70: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ca77: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51ca7b: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $5; 0.00 : 51ca7f: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51ca83: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $10; 0.00 : 51ca87: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = true; 0.00 : 51ca8a: c6 40 3c 01 movb $0x1,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_POLICY; : n->relation = $7; : n->subname = $5; : n->newname = $10; 0.00 : 51ca8e: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER SCHEMA name RENAME TO name 0.00 : 51ca92: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ca99: e9 e2 4e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER POLICY name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51ca9e: 48 8b 3d bb dd 69 00 mov 0x69ddbb(%rip),%rdi # bba860 0.00 : 51caa5: be 40 00 00 00 mov $0x40,%esi 0.00 : 51caaa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cab1: e8 5a c3 27 00 callq 798e10 0.00 : 51cab6: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_POLICY; 0.00 : 51cabc: c7 40 04 16 00 00 00 movl $0x16,0x4(%rax) : n->relation = $5; : n->subname = $3; : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cac3: 49 89 c6 mov %rax,%r14 : } : | ALTER POLICY name ON qualified_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_POLICY; : n->relation = $5; 0.00 : 51cac6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51cacd: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51cad1: 48 89 50 10 mov %rdx,0x10(%rax) : n->subname = $3; 0.00 : 51cad5: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51cad9: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51cadd: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51cae0: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_POLICY; : n->relation = $5; : n->subname = $3; : n->newname = $8; 0.00 : 51cae4: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER POLICY IF_P EXISTS name ON qualified_name RENAME TO name 0.00 : 51cae8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51caef: e9 8c 4e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51caf4: 48 8b 3d 65 dd 69 00 mov 0x69dd65(%rip),%rdi # bba860 0.00 : 51cafb: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cb00: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cb07: e8 04 c3 27 00 callq 798e10 0.00 : 51cb0c: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_OPFAMILY; 0.00 : 51cb12: c7 40 04 15 00 00 00 movl $0x15,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cb19: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51cb1c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->objarg = list_make1(makeString($6)); : n->newname = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cb23: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_OPFAMILY; : n->object = $4; 0.00 : 51cb26: 48 8b 42 d8 mov -0x28(%rdx),%rax 0.00 : 51cb2a: 48 89 43 18 mov %rax,0x18(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51cb2e: 48 8b 7a e8 mov -0x18(%rdx),%rdi 0.00 : 51cb32: e8 b9 2b 0e 00 callq 5ff6f0 0.00 : 51cb37: 31 f6 xor %esi,%esi 0.00 : 51cb39: 48 89 c7 mov %rax,%rdi 0.00 : 51cb3c: e8 0f 4d 0c 00 callq 5e1850 0.00 : 51cb41: 48 89 43 20 mov %rax,0x20(%rbx) : n->newname = $9; 0.00 : 51cb45: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51cb4c: 48 8b 01 mov (%rcx),%rax : n->missing_ok = false; 0.00 : 51cb4f: c6 43 3c 00 movb $0x0,0x3c(%rbx) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_OPFAMILY; : n->object = $4; : n->objarg = list_make1(makeString($6)); : n->newname = $9; 0.00 : 51cb53: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER POLICY name ON qualified_name RENAME TO name 0.00 : 51cb57: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cb5e: e9 1d 4e ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cb63: 48 8b 3d f6 dc 69 00 mov 0x69dcf6(%rip),%rdi # bba860 0.00 : 51cb6a: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cb6f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cb76: e8 95 c2 27 00 callq 798e10 0.00 : 51cb7b: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_OPCLASS; 0.00 : 51cb81: c7 40 04 13 00 00 00 movl $0x13,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cb88: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51cb8b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objarg = list_make1(makeString($6)); : n->newname = $9; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cb92: 49 89 de mov %rbx,%r14 : } : | ALTER OPERATOR CLASS any_name USING access_method RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_OPCLASS; : n->object = $4; 0.00 : 51cb95: 48 8b 41 d8 mov -0x28(%rcx),%rax 0.00 : 51cb99: 48 89 43 18 mov %rax,0x18(%rbx) : n->objarg = list_make1(makeString($6)); 0.00 : 51cb9d: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 51cba1: e8 4a 2b 0e 00 callq 5ff6f0 0.00 : 51cba6: 31 f6 xor %esi,%esi 0.00 : 51cba8: 48 89 c7 mov %rax,%rdi 0.00 : 51cbab: e8 a0 4c 0c 00 callq 5e1850 0.00 : 51cbb0: 48 89 43 20 mov %rax,0x20(%rbx) : n->newname = $9; 0.00 : 51cbb4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51cbbb: 48 8b 06 mov (%rsi),%rax : n->missing_ok = false; 0.00 : 51cbbe: c6 43 3c 00 movb $0x0,0x3c(%rbx) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_OPCLASS; : n->object = $4; : n->objarg = list_make1(makeString($6)); : n->newname = $9; 0.00 : 51cbc2: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name 0.00 : 51cbc6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cbcd: e9 ae 4d ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cbd2: 48 8b 3d 87 dc 69 00 mov 0x69dc87(%rip),%rdi # bba860 0.00 : 51cbd9: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cbde: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cbe5: e8 26 c2 27 00 callq 798e10 0.00 : 51cbea: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_LANGUAGE; 0.00 : 51cbf0: c7 40 04 10 00 00 00 movl $0x10,0x4(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cbf7: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_LANGUAGE; : n->object = list_make1(makeString($4)); 0.00 : 51cbfa: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newname = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cc01: 49 89 de mov %rbx,%r14 : } : | ALTER opt_procedural LANGUAGE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_LANGUAGE; : n->object = list_make1(makeString($4)); 0.00 : 51cc04: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51cc08: e8 e3 2a 0e 00 callq 5ff6f0 0.00 : 51cc0d: 31 f6 xor %esi,%esi 0.00 : 51cc0f: 48 89 c7 mov %rax,%rdi 0.00 : 51cc12: e8 39 4c 0c 00 callq 5e1850 0.00 : 51cc17: 48 89 43 18 mov %rax,0x18(%rbx) : n->newname = $7; 0.00 : 51cc1b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51cc22: 48 8b 02 mov (%rdx),%rax : n->missing_ok = false; 0.00 : 51cc25: c6 43 3c 00 movb $0x0,0x3c(%rbx) : | ALTER opt_procedural LANGUAGE name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_LANGUAGE; : n->object = list_make1(makeString($4)); : n->newname = $7; 0.00 : 51cc29: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER OPERATOR CLASS any_name USING access_method RENAME TO name 0.00 : 51cc2d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cc34: e9 47 4d ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER GROUP_P RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cc39: 48 8b 3d 20 dc 69 00 mov 0x69dc20(%rip),%rdi # bba860 0.00 : 51cc40: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cc45: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cc4c: e8 bf c1 27 00 callq 798e10 0.00 : 51cc51: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_ROLE; 0.00 : 51cc57: c7 40 04 17 00 00 00 movl $0x17,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cc5e: 49 89 c6 mov %rax,%r14 : } : | ALTER GROUP_P RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; 0.00 : 51cc61: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51cc68: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51cc6c: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51cc70: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51cc73: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER GROUP_P RoleId RENAME TO RoleId : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_ROLE; : n->subname = $3; : n->newname = $6; 0.00 : 51cc77: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER opt_procedural LANGUAGE name RENAME TO name 0.00 : 51cc7b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cc82: e9 f9 4c ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cc87: 48 8b 3d d2 db 69 00 mov 0x69dbd2(%rip),%rdi # bba860 0.00 : 51cc8e: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cc93: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cc9a: e8 71 c1 27 00 callq 798e10 0.00 : 51cc9f: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_FUNCTION; 0.00 : 51cca5: c7 40 04 0e 00 00 00 movl $0xe,0x4(%rax) : n->object = $3->funcname; : n->objarg = $3->funcargs; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ccac: 49 89 c6 mov %rax,%r14 : } : | ALTER FUNCTION function_with_argtypes RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FUNCTION; : n->object = $3->funcname; 0.00 : 51ccaf: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ccb6: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51ccba: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51ccbe: 48 89 50 18 mov %rdx,0x18(%rax) : n->objarg = $3->funcargs; 0.00 : 51ccc2: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51ccc6: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 51ccca: 48 89 50 20 mov %rdx,0x20(%rax) : n->newname = $6; 0.00 : 51ccce: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51ccd1: c6 40 3c 00 movb $0x0,0x3c(%rax) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FUNCTION; : n->object = $3->funcname; : n->objarg = $3->funcargs; : n->newname = $6; 0.00 : 51ccd5: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER GROUP_P RoleId RENAME TO RoleId 0.00 : 51ccd9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cce0: e9 9b 4c ff ff jmpq 511980 : n->newname = $8; : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cce5: 48 8b 3d 74 db 69 00 mov 0x69db74(%rip),%rdi # bba860 0.00 : 51ccec: be 40 00 00 00 mov $0x40,%esi 0.00 : 51ccf1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ccf8: e8 13 c1 27 00 callq 798e10 0.00 : 51ccfd: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_FDW; 0.00 : 51cd03: c7 40 04 0b 00 00 00 movl $0xb,0x4(%rax) : n->newname = $8; : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cd0a: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_FDW; : n->object = list_make1(makeString($5)); 0.00 : 51cd0d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newname = $8; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cd14: 49 89 de mov %rbx,%r14 : } : | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FDW; : n->object = list_make1(makeString($5)); 0.00 : 51cd17: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51cd1b: e8 d0 29 0e 00 callq 5ff6f0 0.00 : 51cd20: 31 f6 xor %esi,%esi 0.00 : 51cd22: 48 89 c7 mov %rax,%rdi 0.00 : 51cd25: e8 26 4b 0c 00 callq 5e1850 0.00 : 51cd2a: 48 89 43 18 mov %rax,0x18(%rbx) : n->newname = $8; 0.00 : 51cd2e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51cd35: 48 8b 02 mov (%rdx),%rax : n->missing_ok = false; 0.00 : 51cd38: c6 43 3c 00 movb $0x0,0x3c(%rbx) : | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_FDW; : n->object = list_make1(makeString($5)); : n->newname = $8; 0.00 : 51cd3c: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FUNCTION function_with_argtypes RENAME TO name 0.00 : 51cd40: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cd47: e9 34 4c ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name RENAME CONSTRAINT name TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cd4c: 48 8b 3d 0d db 69 00 mov 0x69db0d(%rip),%rdi # bba860 0.00 : 51cd53: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cd58: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cd5f: e8 ac c0 27 00 callq 798e10 0.00 : 51cd64: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_CONSTRAINT; 0.00 : 51cd6a: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->relationType = OBJECT_DOMAIN; : n->object = $3; : n->subname = $6; : n->newname = $8; : $$ = (Node *)n; 0.00 : 51cd71: 49 89 c6 mov %rax,%r14 : } : | ALTER DOMAIN_P any_name RENAME CONSTRAINT name TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_CONSTRAINT; : n->relationType = OBJECT_DOMAIN; 0.00 : 51cd74: c7 40 08 08 00 00 00 movl $0x8,0x8(%rax) : n->object = $3; 0.00 : 51cd7b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51cd82: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51cd86: 48 89 50 18 mov %rdx,0x18(%rax) : n->subname = $6; 0.00 : 51cd8a: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51cd8e: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $8; 0.00 : 51cd92: 48 8b 13 mov (%rbx),%rdx 0.00 : 51cd95: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *)n; : } : | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name 0.00 : 51cd99: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cda0: e9 db 4b ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cda5: 48 8b 3d b4 da 69 00 mov 0x69dab4(%rip),%rdi # bba860 0.00 : 51cdac: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cdb1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cdb8: e8 53 c0 27 00 callq 798e10 0.00 : 51cdbd: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_DOMAIN; 0.00 : 51cdc3: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->object = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cdca: 49 89 c6 mov %rax,%r14 : } : | ALTER DOMAIN_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_DOMAIN; : n->object = $3; 0.00 : 51cdcd: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51cdd4: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51cdd8: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $6; 0.00 : 51cddc: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51cddf: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER DOMAIN_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_DOMAIN; : n->object = $3; : n->newname = $6; 0.00 : 51cde3: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name RENAME CONSTRAINT name TO name 0.00 : 51cde7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cdee: e9 8d 4b ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DATABASE database_name RENAME TO database_name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cdf3: 48 8b 3d 66 da 69 00 mov 0x69da66(%rip),%rdi # bba860 0.00 : 51cdfa: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cdff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ce06: e8 05 c0 27 00 callq 798e10 0.00 : 51ce0b: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_DATABASE; 0.00 : 51ce11: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->subname = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ce18: 49 89 c6 mov %rax,%r14 : } : | ALTER DATABASE database_name RENAME TO database_name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_DATABASE; : n->subname = $3; 0.00 : 51ce1b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ce22: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51ce26: 48 89 50 28 mov %rdx,0x28(%rax) : n->newname = $6; 0.00 : 51ce2a: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 51ce2d: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER DATABASE database_name RENAME TO database_name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_DATABASE; : n->subname = $3; : n->newname = $6; 0.00 : 51ce31: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DOMAIN_P any_name RENAME TO name 0.00 : 51ce35: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ce3c: e9 3f 4b ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51ce41: 48 8b 3d 18 da 69 00 mov 0x69da18(%rip),%rdi # bba860 0.00 : 51ce48: be 40 00 00 00 mov $0x40,%esi 0.00 : 51ce4d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ce54: e8 b7 bf 27 00 callq 798e10 0.00 : 51ce59: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_CONVERSION; 0.00 : 51ce5f: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->object = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ce66: 49 89 c6 mov %rax,%r14 : } : | ALTER CONVERSION_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_CONVERSION; : n->object = $3; 0.00 : 51ce69: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ce70: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51ce74: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $6; 0.00 : 51ce78: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = false; 0.00 : 51ce7b: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER CONVERSION_P any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_CONVERSION; : n->object = $3; : n->newname = $6; 0.00 : 51ce7f: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER DATABASE database_name RENAME TO database_name 0.00 : 51ce83: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ce8a: e9 f1 4a ff ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER COLLATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51ce8f: 48 8b 3d ca d9 69 00 mov 0x69d9ca(%rip),%rdi # bba860 0.00 : 51ce96: be 40 00 00 00 mov $0x40,%esi 0.00 : 51ce9b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cea2: e8 69 bf 27 00 callq 798e10 0.00 : 51cea7: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_COLLATION; 0.00 : 51cead: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->object = $3; : n->newname = $6; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51ceb4: 49 89 c6 mov %rax,%r14 : } : | ALTER COLLATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLLATION; : n->object = $3; 0.00 : 51ceb7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51cebe: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51cec2: 48 89 50 18 mov %rdx,0x18(%rax) : n->newname = $6; 0.00 : 51cec6: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 51cec9: c6 40 3c 00 movb $0x0,0x3c(%rax) : | ALTER COLLATION any_name RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_COLLATION; : n->object = $3; : n->newname = $6; 0.00 : 51cecd: 48 89 50 30 mov %rdx,0x30(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER CONVERSION_P any_name RENAME TO name 0.00 : 51ced1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ced8: e9 a3 4a ff ff jmpq 511980 : * : *****************************************************************************/ : : RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cedd: 48 8b 3d 7c d9 69 00 mov 0x69d97c(%rip),%rdi # bba860 0.00 : 51cee4: be 40 00 00 00 mov $0x40,%esi 0.00 : 51cee9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cef0: e8 1b bf 27 00 callq 798e10 0.00 : 51cef5: c7 00 d6 02 00 00 movl $0x2d6,(%rax) : n->renameType = OBJECT_AGGREGATE; 0.00 : 51cefb: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : * : *****************************************************************************/ : : RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); 0.00 : 51cf02: 48 89 c3 mov %rax,%rbx : n->renameType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51cf05: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objarg = extractAggrArgTypes($4); : n->newname = $7; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 51cf0c: 49 89 de mov %rbx,%r14 : : RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_AGGREGATE; : n->object = $3; 0.00 : 51cf0f: 48 8b 46 e0 mov -0x20(%rsi),%rax 0.00 : 51cf13: 48 89 43 18 mov %rax,0x18(%rbx) : n->objarg = extractAggrArgTypes($4); 0.00 : 51cf17: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51cf1b: e8 b0 3b ff ff callq 510ad0 0.00 : 51cf20: 48 89 43 20 mov %rax,0x20(%rbx) : n->newname = $7; 0.00 : 51cf24: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51cf2b: 48 8b 02 mov (%rdx),%rax : n->missing_ok = false; 0.00 : 51cf2e: c6 43 3c 00 movb $0x0,0x3c(%rbx) : { : RenameStmt *n = makeNode(RenameStmt); : n->renameType = OBJECT_AGGREGATE; : n->object = $3; : n->objarg = extractAggrArgTypes($4); : n->newname = $7; 0.00 : 51cf32: 48 89 43 30 mov %rax,0x30(%rbx) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER COLLATION any_name RENAME TO name 0.00 : 51cf36: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cf3d: e9 3e 4a ff ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER TABLESPACE name RESET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); 0.00 : 51cf42: 48 8b 3d 17 d9 69 00 mov 0x69d917(%rip),%rdi # bba860 0.00 : 51cf49: be 20 00 00 00 mov $0x20,%esi 0.00 : 51cf4e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cf55: e8 b6 be 27 00 callq 798e10 0.00 : 51cf5a: c7 00 12 03 00 00 movl $0x312,(%rax) : n->tablespacename = $3; 0.00 : 51cf60: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->options = $5; : n->isReset = TRUE; : $$ = (Node *)n; 0.00 : 51cf67: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLESPACE name RESET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); : n->tablespacename = $3; 0.00 : 51cf6a: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51cf6e: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 51cf72: 48 8b 13 mov (%rbx),%rdx : n->isReset = TRUE; 0.00 : 51cf75: c6 40 18 01 movb $0x1,0x18(%rax) : | ALTER TABLESPACE name RESET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); : n->tablespacename = $3; : n->options = $5; 0.00 : 51cf79: 48 89 50 10 mov %rdx,0x10(%rax) : n->isReset = TRUE; : $$ = (Node *)n; : } : ; 0.00 : 51cf7d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cf84: e9 f7 49 ff ff jmpq 511980 : : AlterTblSpcStmt: : ALTER TABLESPACE name SET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); 0.00 : 51cf89: 48 8b 3d d0 d8 69 00 mov 0x69d8d0(%rip),%rdi # bba860 0.00 : 51cf90: be 20 00 00 00 mov $0x20,%esi 0.00 : 51cf95: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51cf9c: e8 6f be 27 00 callq 798e10 0.00 : 51cfa1: c7 00 12 03 00 00 movl $0x312,(%rax) : n->tablespacename = $3; 0.00 : 51cfa7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->options = $5; : n->isReset = FALSE; : $$ = (Node *)n; 0.00 : 51cfae: 49 89 c6 mov %rax,%r14 : AlterTblSpcStmt: : ALTER TABLESPACE name SET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); : n->tablespacename = $3; 0.00 : 51cfb1: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51cfb5: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 51cfb9: 48 8b 11 mov (%rcx),%rdx : n->isReset = FALSE; 0.00 : 51cfbc: c6 40 18 00 movb $0x0,0x18(%rax) : ALTER TABLESPACE name SET reloptions : { : AlterTableSpaceOptionsStmt *n = : makeNode(AlterTableSpaceOptionsStmt); : n->tablespacename = $3; : n->options = $5; 0.00 : 51cfc0: 48 89 50 10 mov %rdx,0x10(%rax) : n->isReset = FALSE; : $$ = (Node *)n; : } : | ALTER TABLESPACE name RESET reloptions 0.00 : 51cfc4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51cfcb: e9 b0 49 ff ff jmpq 511980 : INDEX { $$ = OBJECT_INDEX; } : | TABLE { $$ = OBJECT_TABLE; } : ; : : opt_force: FORCE { $$ = TRUE; } : | /* EMPTY */ { $$ = FALSE; } 0.00 : 51cfd0: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51cfd3: e9 a8 49 ff ff jmpq 511980 : reindex_type: : INDEX { $$ = OBJECT_INDEX; } : | TABLE { $$ = OBJECT_TABLE; } : ; : : opt_force: FORCE { $$ = TRUE; } 0.00 : 51cfd8: 41 b6 01 mov $0x1,%r14b : | /* EMPTY */ { $$ = FALSE; } 0.00 : 51cfdb: e9 a0 49 ff ff jmpq 511980 : } : ; : : reindex_type: : INDEX { $$ = OBJECT_INDEX; } : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51cfe0: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51cfe7: ff ff ff 0.00 : 51cfea: 49 21 d6 and %rdx,%r14 0.00 : 51cfed: 49 83 ce 1b or $0x1b,%r14 : ; 0.00 : 51cff1: e9 8a 49 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : reindex_type: : INDEX { $$ = OBJECT_INDEX; } 0.00 : 51cff6: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51cffd: ff ff ff 0.00 : 51d000: 49 21 c6 and %rax,%r14 0.00 : 51d003: 49 83 ce 0f or $0xf,%r14 : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51d007: e9 74 49 ff ff jmpq 511980 : n->do_user = false; : $$ = (Node *)n; : } : | REINDEX DATABASE name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); 0.00 : 51d00c: 48 8b 3d 4d d8 69 00 mov 0x69d84d(%rip),%rdi # bba860 0.00 : 51d013: be 20 00 00 00 mov $0x20,%esi 0.00 : 51d018: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d01f: e8 ec bd 27 00 callq 798e10 0.00 : 51d024: c7 00 f0 02 00 00 movl $0x2f0,(%rax) : n->kind = OBJECT_DATABASE; 0.00 : 51d02a: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->name = $3; : n->relation = NULL; : n->do_system = true; : n->do_user = true; : $$ = (Node *)n; 0.00 : 51d031: 49 89 c6 mov %rax,%r14 : } : | REINDEX DATABASE name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = OBJECT_DATABASE; : n->name = $3; 0.00 : 51d034: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d03b: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->relation = NULL; 0.00 : 51d03f: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51d046: 00 : n->do_system = true; 0.00 : 51d047: c6 40 18 01 movb $0x1,0x18(%rax) : n->do_user = true; 0.00 : 51d04b: c6 40 19 01 movb $0x1,0x19(%rax) : } : | REINDEX DATABASE name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = OBJECT_DATABASE; : n->name = $3; 0.00 : 51d04f: 48 89 50 10 mov %rdx,0x10(%rax) : n->relation = NULL; : n->do_system = true; : n->do_user = true; : $$ = (Node *)n; : } : ; 0.00 : 51d053: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d05a: e9 21 49 ff ff jmpq 511980 : n->name = NULL; : $$ = (Node *)n; : } : | REINDEX SYSTEM_P name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); 0.00 : 51d05f: 48 8b 3d fa d7 69 00 mov 0x69d7fa(%rip),%rdi # bba860 0.00 : 51d066: be 20 00 00 00 mov $0x20,%esi 0.00 : 51d06b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d072: e8 99 bd 27 00 callq 798e10 0.00 : 51d077: c7 00 f0 02 00 00 movl $0x2f0,(%rax) : n->kind = OBJECT_DATABASE; 0.00 : 51d07d: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->name = $3; : n->relation = NULL; : n->do_system = true; : n->do_user = false; : $$ = (Node *)n; 0.00 : 51d084: 49 89 c6 mov %rax,%r14 : } : | REINDEX SYSTEM_P name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = OBJECT_DATABASE; : n->name = $3; 0.00 : 51d087: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51d08e: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->relation = NULL; 0.00 : 51d092: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51d099: 00 : n->do_system = true; 0.00 : 51d09a: c6 40 18 01 movb $0x1,0x18(%rax) : n->do_user = false; 0.00 : 51d09e: c6 40 19 00 movb $0x0,0x19(%rax) : } : | REINDEX SYSTEM_P name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = OBJECT_DATABASE; : n->name = $3; 0.00 : 51d0a2: 48 89 50 10 mov %rdx,0x10(%rax) : n->relation = NULL; : n->do_system = true; : n->do_user = false; : $$ = (Node *)n; : } : | REINDEX DATABASE name opt_force 0.00 : 51d0a6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d0ad: e9 ce 48 ff ff jmpq 511980 : *****************************************************************************/ : : ReindexStmt: : REINDEX reindex_type qualified_name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); 0.00 : 51d0b2: 48 8b 3d a7 d7 69 00 mov 0x69d7a7(%rip),%rdi # bba860 0.00 : 51d0b9: be 20 00 00 00 mov $0x20,%esi 0.00 : 51d0be: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d0c5: e8 46 bd 27 00 callq 798e10 0.00 : 51d0ca: c7 00 f0 02 00 00 movl $0x2f0,(%rax) : n->kind = $2; 0.00 : 51d0d0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->relation = $3; : n->name = NULL; : $$ = (Node *)n; 0.00 : 51d0d7: 49 89 c6 mov %rax,%r14 : : ReindexStmt: : REINDEX reindex_type qualified_name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = $2; 0.00 : 51d0da: 8b 51 f0 mov -0x10(%rcx),%edx 0.00 : 51d0dd: 89 50 04 mov %edx,0x4(%rax) : n->relation = $3; 0.00 : 51d0e0: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->name = NULL; 0.00 : 51d0e4: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51d0eb: 00 : ReindexStmt: : REINDEX reindex_type qualified_name opt_force : { : ReindexStmt *n = makeNode(ReindexStmt); : n->kind = $2; : n->relation = $3; 0.00 : 51d0ec: 48 89 50 08 mov %rdx,0x8(%rax) : n->name = NULL; : $$ = (Node *)n; : } : | REINDEX SYSTEM_P name opt_force 0.00 : 51d0f0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d0f7: e9 84 48 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_if_exists: IF_P EXISTS { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51d0fc: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51d0ff: e9 7c 48 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : ; : : opt_if_exists: IF_P EXISTS { $$ = TRUE; } 0.00 : 51d104: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51d107: e9 74 48 ff ff jmpq 511980 : ; : : : DropCastStmt: DROP CAST opt_if_exists '(' Typename AS Typename ')' opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d10c: 48 8b 3d 4d d7 69 00 mov 0x69d74d(%rip),%rdi # bba860 0.00 : 51d113: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d118: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d11f: e8 ec bc 27 00 callq 798e10 0.00 : 51d124: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_CAST; 0.00 : 51d12a: c7 40 18 02 00 00 00 movl $0x2,0x18(%rax) : n->objects = list_make1(list_make1($5)); 0.00 : 51d131: 31 f6 xor %esi,%esi 0.00 : 51d133: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : ; : : : DropCastStmt: DROP CAST opt_if_exists '(' Typename AS Typename ')' opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d13a: 48 89 c3 mov %rax,%rbx : n->objects = list_make1(list_make1($5)); : n->arguments = list_make1(list_make1($7)); : n->behavior = $9; : n->missing_ok = $3; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d13d: 49 89 de mov %rbx,%r14 : : DropCastStmt: DROP CAST opt_if_exists '(' Typename AS Typename ')' opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_CAST; : n->objects = list_make1(list_make1($5)); 0.00 : 51d140: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 51d144: e8 07 47 0c 00 callq 5e1850 0.00 : 51d149: 31 f6 xor %esi,%esi 0.00 : 51d14b: 48 89 c7 mov %rax,%rdi 0.00 : 51d14e: e8 fd 46 0c 00 callq 5e1850 0.00 : 51d153: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(list_make1($7)); 0.00 : 51d157: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d15e: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 51d162: 31 f6 xor %esi,%esi 0.00 : 51d164: e8 e7 46 0c 00 callq 5e1850 0.00 : 51d169: 31 f6 xor %esi,%esi 0.00 : 51d16b: 48 89 c7 mov %rax,%rdi 0.00 : 51d16e: e8 dd 46 0c 00 callq 5e1850 0.00 : 51d173: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $9; 0.00 : 51d177: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d17e: 8b 02 mov (%rdx),%eax 0.00 : 51d180: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = $3; 0.00 : 51d183: 0f b6 42 d0 movzbl -0x30(%rdx),%eax : n->concurrent = false; 0.00 : 51d187: c6 43 21 00 movb $0x0,0x21(%rbx) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_CAST; : n->objects = list_make1(list_make1($5)); : n->arguments = list_make1(list_make1($7)); : n->behavior = $9; : n->missing_ok = $3; 0.00 : 51d18b: 88 43 20 mov %al,0x20(%rbx) : n->concurrent = false; : $$ = (Node *)n; : } : ; 0.00 : 51d18e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d195: e9 e6 47 ff ff jmpq 511980 : } : ; : : cast_context: AS IMPLICIT_P { $$ = COERCION_IMPLICIT; } : | AS ASSIGNMENT { $$ = COERCION_ASSIGNMENT; } : | /*EMPTY*/ { $$ = COERCION_EXPLICIT; } 0.00 : 51d19a: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51d1a1: ff ff ff 0.00 : 51d1a4: 49 21 d6 and %rdx,%r14 0.00 : 51d1a7: 49 83 ce 02 or $0x2,%r14 : ; 0.00 : 51d1ab: e9 d0 47 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : cast_context: AS IMPLICIT_P { $$ = COERCION_IMPLICIT; } : | AS ASSIGNMENT { $$ = COERCION_ASSIGNMENT; } 0.00 : 51d1b0: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51d1b7: ff ff ff 0.00 : 51d1ba: 49 21 c6 and %rax,%r14 0.00 : 51d1bd: 49 83 ce 01 or $0x1,%r14 : | /*EMPTY*/ { $$ = COERCION_EXPLICIT; } 0.00 : 51d1c1: e9 ba 47 ff ff jmpq 511980 : n->inout = true; : $$ = (Node *)n; : } : ; : : cast_context: AS IMPLICIT_P { $$ = COERCION_IMPLICIT; } 0.00 : 51d1c6: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51d1cd: ff ff ff 0.00 : 51d1d0: 49 21 f6 and %rsi,%r14 : | AS ASSIGNMENT { $$ = COERCION_ASSIGNMENT; } 0.00 : 51d1d3: e9 a8 47 ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE CAST '(' Typename AS Typename ')' : WITH INOUT cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); 0.00 : 51d1d8: 48 8b 3d 81 d6 69 00 mov 0x69d681(%rip),%rdi # bba860 0.00 : 51d1df: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d1e4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d1eb: e8 20 bc 27 00 callq 798e10 0.00 : 51d1f0: c7 00 f7 02 00 00 movl $0x2f7,(%rax) : n->sourcetype = $4; 0.00 : 51d1f6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->targettype = $6; : n->func = NULL; : n->context = (CoercionContext) $10; : n->inout = true; : $$ = (Node *)n; 0.00 : 51d1fd: 49 89 c6 mov %rax,%r14 : } : | CREATE CAST '(' Typename AS Typename ')' : WITH INOUT cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; 0.00 : 51d200: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 51d204: 48 89 50 08 mov %rdx,0x8(%rax) : n->targettype = $6; 0.00 : 51d208: 48 8b 53 e0 mov -0x20(%rbx),%rdx : n->func = NULL; 0.00 : 51d20c: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 51d213: 00 : | CREATE CAST '(' Typename AS Typename ')' : WITH INOUT cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; : n->targettype = $6; 0.00 : 51d214: 48 89 50 10 mov %rdx,0x10(%rax) : n->func = NULL; : n->context = (CoercionContext) $10; 0.00 : 51d218: 8b 13 mov (%rbx),%edx : n->inout = true; 0.00 : 51d21a: c6 40 24 01 movb $0x1,0x24(%rax) : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; : n->targettype = $6; : n->func = NULL; : n->context = (CoercionContext) $10; 0.00 : 51d21e: 89 50 20 mov %edx,0x20(%rax) : n->inout = true; : $$ = (Node *)n; : } : ; 0.00 : 51d221: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d228: e9 53 47 ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE CAST '(' Typename AS Typename ')' : WITHOUT FUNCTION cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); 0.00 : 51d22d: 48 8b 3d 2c d6 69 00 mov 0x69d62c(%rip),%rdi # bba860 0.00 : 51d234: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d239: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d240: e8 cb bb 27 00 callq 798e10 0.00 : 51d245: c7 00 f7 02 00 00 movl $0x2f7,(%rax) : n->sourcetype = $4; 0.00 : 51d24b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->targettype = $6; : n->func = NULL; : n->context = (CoercionContext) $10; : n->inout = false; : $$ = (Node *)n; 0.00 : 51d252: 49 89 c6 mov %rax,%r14 : } : | CREATE CAST '(' Typename AS Typename ')' : WITHOUT FUNCTION cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; 0.00 : 51d255: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 51d259: 48 89 50 08 mov %rdx,0x8(%rax) : n->targettype = $6; 0.00 : 51d25d: 48 8b 51 e0 mov -0x20(%rcx),%rdx : n->func = NULL; 0.00 : 51d261: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 51d268: 00 : | CREATE CAST '(' Typename AS Typename ')' : WITHOUT FUNCTION cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; : n->targettype = $6; 0.00 : 51d269: 48 89 50 10 mov %rdx,0x10(%rax) : n->func = NULL; : n->context = (CoercionContext) $10; 0.00 : 51d26d: 8b 11 mov (%rcx),%edx : n->inout = false; 0.00 : 51d26f: c6 40 24 00 movb $0x0,0x24(%rax) : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; : n->targettype = $6; : n->func = NULL; : n->context = (CoercionContext) $10; 0.00 : 51d273: 89 50 20 mov %edx,0x20(%rax) : n->inout = false; : $$ = (Node *)n; : } : | CREATE CAST '(' Typename AS Typename ')' 0.00 : 51d276: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d27d: e9 fe 46 ff ff jmpq 511980 : *****************************************************************************/ : : CreateCastStmt: CREATE CAST '(' Typename AS Typename ')' : WITH FUNCTION function_with_argtypes cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); 0.00 : 51d282: 48 8b 3d d7 d5 69 00 mov 0x69d5d7(%rip),%rdi # bba860 0.00 : 51d289: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d28e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d295: e8 76 bb 27 00 callq 798e10 0.00 : 51d29a: c7 00 f7 02 00 00 movl $0x2f7,(%rax) : n->sourcetype = $4; 0.00 : 51d2a0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->targettype = $6; : n->func = $10; : n->context = (CoercionContext) $11; : n->inout = false; : $$ = (Node *)n; 0.00 : 51d2a7: 49 89 c6 mov %rax,%r14 : : CreateCastStmt: CREATE CAST '(' Typename AS Typename ')' : WITH FUNCTION function_with_argtypes cast_context : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; 0.00 : 51d2aa: 48 8b 56 c8 mov -0x38(%rsi),%rdx 0.00 : 51d2ae: 48 89 50 08 mov %rdx,0x8(%rax) : n->targettype = $6; 0.00 : 51d2b2: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51d2b6: 48 89 50 10 mov %rdx,0x10(%rax) : n->func = $10; 0.00 : 51d2ba: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51d2be: 48 89 50 18 mov %rdx,0x18(%rax) : n->context = (CoercionContext) $11; 0.00 : 51d2c2: 8b 16 mov (%rsi),%edx : n->inout = false; 0.00 : 51d2c4: c6 40 24 00 movb $0x0,0x24(%rax) : { : CreateCastStmt *n = makeNode(CreateCastStmt); : n->sourcetype = $4; : n->targettype = $6; : n->func = $10; : n->context = (CoercionContext) $11; 0.00 : 51d2c8: 89 50 20 mov %edx,0x20(%rax) : n->inout = false; : $$ = (Node *)n; : } : | CREATE CAST '(' Typename AS Typename ')' 0.00 : 51d2cb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d2d2: e9 a9 46 ff ff jmpq 511980 : { : $$ = makeDefElem("as", (Node *)makeString($1)); : } : | LANGUAGE NonReservedWord_or_Sconst : { : $$ = makeDefElem("language", (Node *)makeString($2)); 0.00 : 51d2d7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51d2de: 48 8b 3b mov (%rbx),%rdi 0.00 : 51d2e1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d2e8: e8 03 24 0e 00 callq 5ff6f0 0.00 : 51d2ed: bf 5e 52 7c 00 mov $0x7c525e,%edi 0.00 : 51d2f2: 48 89 c6 mov %rax,%rsi 0.00 : 51d2f5: e8 06 42 0d 00 callq 5f1500 : } : ; 0.00 : 51d2fa: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("as", (Node *)makeString($1)); : } : | LANGUAGE NonReservedWord_or_Sconst : { : $$ = makeDefElem("language", (Node *)makeString($2)); 0.00 : 51d301: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51d304: e9 77 46 ff ff jmpq 511980 : ; : : dostmt_opt_item: : Sconst : { : $$ = makeDefElem("as", (Node *)makeString($1)); 0.00 : 51d309: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d310: 48 8b 39 mov (%rcx),%rdi 0.00 : 51d313: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d31a: e8 d1 23 0e 00 callq 5ff6f0 0.00 : 51d31f: bf 4f b0 8d 00 mov $0x8db04f,%edi 0.00 : 51d324: 48 89 c6 mov %rax,%rsi 0.00 : 51d327: e8 d4 41 0d 00 callq 5f1500 : } : | LANGUAGE NonReservedWord_or_Sconst 0.00 : 51d32c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : dostmt_opt_item: : Sconst : { : $$ = makeDefElem("as", (Node *)makeString($1)); 0.00 : 51d333: 49 89 c6 mov %rax,%r14 : } : | LANGUAGE NonReservedWord_or_Sconst 0.00 : 51d336: e9 45 46 ff ff jmpq 511980 : } : ; : : dostmt_opt_list: : dostmt_opt_item { $$ = list_make1($1); } : | dostmt_opt_list dostmt_opt_item { $$ = lappend($1, $2); } 0.00 : 51d33b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d342: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 51d346: 48 8b 32 mov (%rdx),%rsi 0.00 : 51d349: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d350: e8 2b 4b 0c 00 callq 5e1e80 : ; 0.00 : 51d355: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : dostmt_opt_list: : dostmt_opt_item { $$ = list_make1($1); } : | dostmt_opt_list dostmt_opt_item { $$ = lappend($1, $2); } 0.00 : 51d35c: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51d35f: e9 1c 46 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : dostmt_opt_list: : dostmt_opt_item { $$ = list_make1($1); } 0.00 : 51d364: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d36b: 31 f6 xor %esi,%esi 0.00 : 51d36d: 48 8b 38 mov (%rax),%rdi 0.00 : 51d370: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d377: e8 d4 44 0c 00 callq 5e1850 : | dostmt_opt_list dostmt_opt_item { $$ = lappend($1, $2); } 0.00 : 51d37c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *)n; : } : ; : : dostmt_opt_list: : dostmt_opt_item { $$ = list_make1($1); } 0.00 : 51d383: 49 89 c6 mov %rax,%r14 : | dostmt_opt_list dostmt_opt_item { $$ = lappend($1, $2); } 0.00 : 51d386: e9 f5 45 ff ff jmpq 511980 : * : *****************************************************************************/ : : DoStmt: DO dostmt_opt_list : { : DoStmt *n = makeNode(DoStmt); 0.00 : 51d38b: 48 8b 3d ce d4 69 00 mov 0x69d4ce(%rip),%rdi # bba860 0.00 : 51d392: be 10 00 00 00 mov $0x10,%esi 0.00 : 51d397: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d39e: e8 6d ba 27 00 callq 798e10 0.00 : 51d3a3: c7 00 d5 02 00 00 movl $0x2d5,(%rax) : n->args = $2; 0.00 : 51d3a9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : $$ = (Node *)n; 0.00 : 51d3b0: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : DoStmt: DO dostmt_opt_list : { : DoStmt *n = makeNode(DoStmt); : n->args = $2; 0.00 : 51d3b3: 48 8b 13 mov (%rbx),%rdx 0.00 : 51d3b6: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51d3ba: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d3c1: e9 ba 45 ff ff jmpq 511980 : : any_operator: : all_Op : { $$ = list_make1(makeString($1)); } : | ColId '.' any_operator : { $$ = lcons(makeString($1), $3); } 0.00 : 51d3c6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d3cd: 48 8b 19 mov (%rcx),%rbx 0.00 : 51d3d0: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51d3d4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d3db: e8 10 23 0e 00 callq 5ff6f0 0.00 : 51d3e0: 48 89 de mov %rbx,%rsi 0.00 : 51d3e3: 48 89 c7 mov %rax,%rdi 0.00 : 51d3e6: e8 65 44 0c 00 callq 5e1850 : ; 0.00 : 51d3eb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : any_operator: : all_Op : { $$ = list_make1(makeString($1)); } : | ColId '.' any_operator : { $$ = lcons(makeString($1), $3); } 0.00 : 51d3f2: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51d3f5: e9 86 45 ff ff jmpq 511980 : { $$ = list_make2($2, NULL); } : ; : : any_operator: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 51d3fa: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d401: 48 8b 3a mov (%rdx),%rdi 0.00 : 51d404: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d40b: e8 e0 22 0e 00 callq 5ff6f0 0.00 : 51d410: 31 f6 xor %esi,%esi 0.00 : 51d412: 48 89 c7 mov %rax,%rdi 0.00 : 51d415: e8 36 44 0c 00 callq 5e1850 : | ColId '.' any_operator 0.00 : 51d41a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = list_make2($2, NULL); } : ; : : any_operator: : all_Op : { $$ = list_make1(makeString($1)); } 0.00 : 51d421: 49 89 c6 mov %rax,%r14 : | ColId '.' any_operator 0.00 : 51d424: e9 57 45 ff ff jmpq 511980 : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } : | '(' NONE ',' Typename ')' /* left unary */ : { $$ = list_make2(NULL, $4); } : | '(' Typename ',' NONE ')' /* right unary */ : { $$ = list_make2($2, NULL); } 0.00 : 51d429: 31 f6 xor %esi,%esi 0.00 : 51d42b: 31 ff xor %edi,%edi 0.00 : 51d42d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d434: e8 17 44 0c 00 callq 5e1850 0.00 : 51d439: 48 89 c6 mov %rax,%rsi 0.00 : 51d43c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d443: 48 8b 78 e8 mov -0x18(%rax),%rdi 0.00 : 51d447: e8 04 44 0c 00 callq 5e1850 : ; 0.00 : 51d44c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } : | '(' NONE ',' Typename ')' /* left unary */ : { $$ = list_make2(NULL, $4); } : | '(' Typename ',' NONE ')' /* right unary */ : { $$ = list_make2($2, NULL); } 0.00 : 51d453: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51d456: e9 25 45 ff ff jmpq 511980 : parser_errposition(@3))); : } : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } : | '(' NONE ',' Typename ')' /* left unary */ : { $$ = list_make2(NULL, $4); } 0.00 : 51d45b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d462: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51d466: 31 f6 xor %esi,%esi 0.00 : 51d468: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d46f: e8 dc 43 0c 00 callq 5e1850 0.00 : 51d474: 31 ff xor %edi,%edi 0.00 : 51d476: 48 89 c6 mov %rax,%rsi 0.00 : 51d479: e8 d2 43 0c 00 callq 5e1850 : | '(' Typename ',' NONE ')' /* right unary */ 0.00 : 51d47e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : parser_errposition(@3))); : } : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } : | '(' NONE ',' Typename ')' /* left unary */ : { $$ = list_make2(NULL, $4); } 0.00 : 51d485: 49 89 c6 mov %rax,%r14 : | '(' Typename ',' NONE ')' /* right unary */ 0.00 : 51d488: e9 f3 44 ff ff jmpq 511980 : errmsg("missing argument"), : errhint("Use NONE to denote the missing argument of a unary operator."), : parser_errposition(@3))); : } : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } 0.00 : 51d48d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51d494: 31 f6 xor %esi,%esi 0.00 : 51d496: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 51d49a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d4a1: e8 aa 43 0c 00 callq 5e1850 0.00 : 51d4a6: 48 8b 7b e8 mov -0x18(%rbx),%rdi 0.00 : 51d4aa: 48 89 c6 mov %rax,%rsi 0.00 : 51d4ad: e8 9e 43 0c 00 callq 5e1850 : | '(' NONE ',' Typename ')' /* left unary */ 0.00 : 51d4b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : errmsg("missing argument"), : errhint("Use NONE to denote the missing argument of a unary operator."), : parser_errposition(@3))); : } : | '(' Typename ',' Typename ')' : { $$ = list_make2($2, $4); } 0.00 : 51d4b9: 49 89 c6 mov %rax,%r14 : | '(' NONE ',' Typename ')' /* left unary */ 0.00 : 51d4bc: e9 bf 44 ff ff jmpq 511980 : ; : : oper_argtypes: : '(' Typename ')' : { : ereport(ERROR, 0.00 : 51d4c1: 45 31 c0 xor %r8d,%r8d 0.00 : 51d4c4: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 51d4c9: ba 91 1b 00 00 mov $0x1b91,%edx 0.00 : 51d4ce: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 51d4d3: bf 14 00 00 00 mov $0x14,%edi 0.00 : 51d4d8: e8 e3 d5 25 00 callq 77aac0 0.00 : 51d4dd: 84 c0 test %al,%al 0.00 : 51d4df: 0f 84 c2 4a ff ff je 511fa7 0.00 : 51d4e5: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51d4ec: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 51d4f3: 8b 39 mov (%rcx),%edi 0.00 : 51d4f5: e8 a6 07 ff ff callq 50dca0 0.00 : 51d4fa: bf 80 a1 7c 00 mov $0x7ca180,%edi 0.00 : 51d4ff: 41 89 c5 mov %eax,%r13d 0.00 : 51d502: 31 c0 xor %eax,%eax 0.00 : 51d504: e8 97 e7 25 00 callq 77bca0 0.00 : 51d509: bf c2 96 7c 00 mov $0x7c96c2,%edi 0.00 : 51d50e: 89 c3 mov %eax,%ebx : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("VALUES in FROM must have an alias"), : errhint("For example, FROM (VALUES ...) [AS] foo."), : parser_errposition(@2))); : else : ereport(ERROR, 0.00 : 51d510: 31 c0 xor %eax,%eax 0.00 : 51d512: e8 89 f3 25 00 callq 77c8a0 0.00 : 51d517: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 51d51c: 41 89 c4 mov %eax,%r12d 0.00 : 51d51f: e8 2c f8 25 00 callq 77cd50 0.00 : 51d524: 44 89 e9 mov %r13d,%ecx 0.00 : 51d527: 89 c7 mov %eax,%edi 0.00 : 51d529: 89 da mov %ebx,%edx 0.00 : 51d52b: 44 89 e6 mov %r12d,%esi 0.00 : 51d52e: 31 c0 xor %eax,%eax 0.00 : 51d530: e8 ab d0 25 00 callq 77a5e0 0.00 : 51d535: e9 6d 4a ff ff jmpq 511fa7 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d53a: 48 8b 3d 1f d3 69 00 mov 0x69d31f(%rip),%rdi # bba860 0.00 : 51d541: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d546: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d54d: e8 be b8 27 00 callq 798e10 0.00 : 51d552: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_OPERATOR; 0.00 : 51d558: c7 40 18 14 00 00 00 movl $0x14,0x18(%rax) : n->concurrent = false; : $$ = (Node *)n; : } : | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d55f: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($5); 0.00 : 51d562: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d569: 31 f6 xor %esi,%esi : n->arguments = list_make1($6); : n->behavior = $7; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d56b: 49 89 de mov %rbx,%r14 : } : | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($5); 0.00 : 51d56e: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51d572: e8 d9 42 0c 00 callq 5e1850 0.00 : 51d577: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1($6); 0.00 : 51d57b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d582: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51d586: 31 f6 xor %esi,%esi 0.00 : 51d588: e8 c3 42 0c 00 callq 5e1850 0.00 : 51d58d: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $7; 0.00 : 51d591: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d598: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 51d59a: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 51d59e: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($5); : n->arguments = list_make1($6); : n->behavior = $7; 0.00 : 51d5a2: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; : } : ; 0.00 : 51d5a5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d5ac: e9 cf 43 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP AGGREGATE IF_P EXISTS func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d5b1: 48 8b 3d a8 d2 69 00 mov 0x69d2a8(%rip),%rdi # bba860 0.00 : 51d5b8: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d5bd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d5c4: e8 47 b8 27 00 callq 798e10 0.00 : 51d5c9: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_AGGREGATE; 0.00 : 51d5cf: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : n->concurrent = false; : $$ = (Node *)n; : } : | DROP AGGREGATE IF_P EXISTS func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d5d6: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($5); 0.00 : 51d5d9: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d5e0: 31 f6 xor %esi,%esi : n->arguments = list_make1(extractAggrArgTypes($6)); : n->behavior = $7; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d5e2: 49 89 de mov %rbx,%r14 : } : | DROP AGGREGATE IF_P EXISTS func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($5); 0.00 : 51d5e5: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51d5e9: e8 62 42 0c 00 callq 5e1850 0.00 : 51d5ee: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(extractAggrArgTypes($6)); 0.00 : 51d5f2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d5f9: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51d5fd: e8 ce 34 ff ff callq 510ad0 0.00 : 51d602: 31 f6 xor %esi,%esi 0.00 : 51d604: 48 89 c7 mov %rax,%rdi 0.00 : 51d607: e8 44 42 0c 00 callq 5e1850 0.00 : 51d60c: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $7; 0.00 : 51d610: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d617: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 51d619: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 51d61d: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($5); : n->arguments = list_make1(extractAggrArgTypes($6)); : n->behavior = $7; 0.00 : 51d621: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; : } : ; 0.00 : 51d624: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d62b: e9 50 43 ff ff jmpq 511980 : ; : : RemoveAggrStmt: : DROP AGGREGATE func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d630: 48 8b 3d 29 d2 69 00 mov 0x69d229(%rip),%rdi # bba860 0.00 : 51d637: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d63c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d643: e8 c8 b7 27 00 callq 798e10 0.00 : 51d648: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_AGGREGATE; 0.00 : 51d64e: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : ; : : RemoveAggrStmt: : DROP AGGREGATE func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d655: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($3); 0.00 : 51d658: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = list_make1(extractAggrArgTypes($4)); : n->behavior = $5; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d65f: 49 89 de mov %rbx,%r14 : RemoveAggrStmt: : DROP AGGREGATE func_name aggr_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($3); 0.00 : 51d662: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 51d666: 31 f6 xor %esi,%esi 0.00 : 51d668: e8 e3 41 0c 00 callq 5e1850 0.00 : 51d66d: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(extractAggrArgTypes($4)); 0.00 : 51d671: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d678: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51d67c: e8 4f 34 ff ff callq 510ad0 0.00 : 51d681: 31 f6 xor %esi,%esi 0.00 : 51d683: 48 89 c7 mov %rax,%rdi 0.00 : 51d686: e8 c5 41 0c 00 callq 5e1850 0.00 : 51d68b: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $5; 0.00 : 51d68f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d696: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 51d698: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 51d69c: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_AGGREGATE; : n->objects = list_make1($3); : n->arguments = list_make1(extractAggrArgTypes($4)); : n->behavior = $5; 0.00 : 51d6a0: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; : } : | DROP AGGREGATE IF_P EXISTS func_name aggr_args opt_drop_behavior 0.00 : 51d6a3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d6aa: e9 d1 42 ff ff jmpq 511980 : ; : : RemoveOperStmt: : DROP OPERATOR any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d6af: 48 8b 3d aa d1 69 00 mov 0x69d1aa(%rip),%rdi # bba860 0.00 : 51d6b6: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d6bb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d6c2: e8 49 b7 27 00 callq 798e10 0.00 : 51d6c7: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_OPERATOR; 0.00 : 51d6cd: c7 40 18 14 00 00 00 movl $0x14,0x18(%rax) : ; : : RemoveOperStmt: : DROP OPERATOR any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d6d4: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($3); 0.00 : 51d6d7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d6de: 31 f6 xor %esi,%esi : n->arguments = list_make1($4); : n->behavior = $5; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d6e0: 49 89 de mov %rbx,%r14 : RemoveOperStmt: : DROP OPERATOR any_operator oper_argtypes opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($3); 0.00 : 51d6e3: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51d6e7: e8 64 41 0c 00 callq 5e1850 0.00 : 51d6ec: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1($4); 0.00 : 51d6f0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d6f7: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51d6fb: 31 f6 xor %esi,%esi 0.00 : 51d6fd: e8 4e 41 0c 00 callq 5e1850 0.00 : 51d702: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $5; 0.00 : 51d706: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d70d: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 51d70f: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 51d713: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_OPERATOR; : n->objects = list_make1($3); : n->arguments = list_make1($4); : n->behavior = $5; 0.00 : 51d717: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; : } : | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior 0.00 : 51d71a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d721: e9 5a 42 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP FUNCTION IF_P EXISTS func_name func_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d726: 48 8b 3d 33 d1 69 00 mov 0x69d133(%rip),%rdi # bba860 0.00 : 51d72d: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d732: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d739: e8 d2 b6 27 00 callq 798e10 0.00 : 51d73e: 48 89 c3 mov %rax,%rbx 0.00 : 51d741: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FUNCTION; 0.00 : 51d747: c7 40 18 0e 00 00 00 movl $0xe,0x18(%rax) : n->objects = list_make1($5); 0.00 : 51d74e: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d755: 31 f6 xor %esi,%esi : n->arguments = list_make1(extractArgTypes($6)); : n->behavior = $7; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d757: 49 89 de mov %rbx,%r14 : } : | DROP FUNCTION IF_P EXISTS func_name func_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FUNCTION; : n->objects = list_make1($5); 0.00 : 51d75a: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 51d75e: e8 ed 40 0c 00 callq 5e1850 0.00 : 51d763: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(extractArgTypes($6)); 0.00 : 51d767: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d76e: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 51d772: e8 f9 32 ff ff callq 510a70 0.00 : 51d777: 31 f6 xor %esi,%esi 0.00 : 51d779: 48 89 c7 mov %rax,%rdi 0.00 : 51d77c: e8 cf 40 0c 00 callq 5e1850 0.00 : 51d781: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $7; 0.00 : 51d785: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d78c: 8b 01 mov (%rcx),%eax : n->missing_ok = true; 0.00 : 51d78e: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 51d792: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FUNCTION; : n->objects = list_make1($5); : n->arguments = list_make1(extractArgTypes($6)); : n->behavior = $7; 0.00 : 51d796: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; : } : ; 0.00 : 51d799: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d7a0: e9 db 41 ff ff jmpq 511980 : *****************************************************************************/ : : RemoveFuncStmt: : DROP FUNCTION func_name func_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d7a5: 48 8b 3d b4 d0 69 00 mov 0x69d0b4(%rip),%rdi # bba860 0.00 : 51d7ac: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d7b1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d7b8: e8 53 b6 27 00 callq 798e10 0.00 : 51d7bd: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FUNCTION; 0.00 : 51d7c3: c7 40 18 0e 00 00 00 movl $0xe,0x18(%rax) : *****************************************************************************/ : : RemoveFuncStmt: : DROP FUNCTION func_name func_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 51d7ca: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_FUNCTION; : n->objects = list_make1($3); 0.00 : 51d7cd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d7d4: 31 f6 xor %esi,%esi : n->arguments = list_make1(extractArgTypes($4)); : n->behavior = $5; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 51d7d6: 49 89 de mov %rbx,%r14 : RemoveFuncStmt: : DROP FUNCTION func_name func_args opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FUNCTION; : n->objects = list_make1($3); 0.00 : 51d7d9: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51d7dd: e8 6e 40 0c 00 callq 5e1850 0.00 : 51d7e2: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(extractArgTypes($4)); 0.00 : 51d7e6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d7ed: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 51d7f1: e8 7a 32 ff ff callq 510a70 0.00 : 51d7f6: 31 f6 xor %esi,%esi 0.00 : 51d7f8: 48 89 c7 mov %rax,%rdi 0.00 : 51d7fb: e8 50 40 0c 00 callq 5e1850 0.00 : 51d800: 48 89 43 10 mov %rax,0x10(%rbx) : n->behavior = $5; 0.00 : 51d804: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d80b: 8b 06 mov (%rsi),%eax : n->missing_ok = false; 0.00 : 51d80d: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 51d811: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FUNCTION; : n->objects = list_make1($3); : n->arguments = list_make1(extractArgTypes($4)); : n->behavior = $5; 0.00 : 51d815: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; : } : | DROP FUNCTION IF_P EXISTS func_name func_args opt_drop_behavior 0.00 : 51d818: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d81f: e9 5c 41 ff ff jmpq 511980 : ; : : alterfunc_opt_list: : /* At least one option must be specified */ : common_func_opt_item { $$ = list_make1($1); } : | alterfunc_opt_list common_func_opt_item { $$ = lappend($1, $2); } 0.00 : 51d824: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d82b: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51d82f: 48 8b 36 mov (%rsi),%rsi 0.00 : 51d832: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d839: e8 42 46 0c 00 callq 5e1e80 : ; 0.00 : 51d83e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : alterfunc_opt_list: : /* At least one option must be specified */ : common_func_opt_item { $$ = list_make1($1); } : | alterfunc_opt_list common_func_opt_item { $$ = lappend($1, $2); } 0.00 : 51d845: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51d848: e9 33 41 ff ff jmpq 511980 : } : ; : : alterfunc_opt_list: : /* At least one option must be specified */ : common_func_opt_item { $$ = list_make1($1); } 0.00 : 51d84d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51d854: 31 f6 xor %esi,%esi 0.00 : 51d856: 48 8b 3b mov (%rbx),%rdi 0.00 : 51d859: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d860: e8 eb 3f 0c 00 callq 5e1850 : | alterfunc_opt_list common_func_opt_item { $$ = lappend($1, $2); } 0.00 : 51d865: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : alterfunc_opt_list: : /* At least one option must be specified */ : common_func_opt_item { $$ = list_make1($1); } 0.00 : 51d86c: 49 89 c6 mov %rax,%r14 : | alterfunc_opt_list common_func_opt_item { $$ = lappend($1, $2); } 0.00 : 51d86f: e9 0c 41 ff ff jmpq 511980 : * : *****************************************************************************/ : AlterFunctionStmt: : ALTER FUNCTION function_with_argtypes alterfunc_opt_list opt_restrict : { : AlterFunctionStmt *n = makeNode(AlterFunctionStmt); 0.00 : 51d874: 48 8b 3d e5 cf 69 00 mov 0x69cfe5(%rip),%rdi # bba860 0.00 : 51d87b: be 18 00 00 00 mov $0x18,%esi 0.00 : 51d880: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d887: e8 84 b5 27 00 callq 798e10 0.00 : 51d88c: c7 00 d4 02 00 00 movl $0x2d4,(%rax) : n->func = $3; 0.00 : 51d892: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->actions = $4; : $$ = (Node *) n; 0.00 : 51d899: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : AlterFunctionStmt: : ALTER FUNCTION function_with_argtypes alterfunc_opt_list opt_restrict : { : AlterFunctionStmt *n = makeNode(AlterFunctionStmt); : n->func = $3; 0.00 : 51d89c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51d8a0: 48 89 50 08 mov %rdx,0x8(%rax) : n->actions = $4; 0.00 : 51d8a4: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51d8a8: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 51d8ac: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d8b3: e9 c8 40 ff ff jmpq 511980 : { : $$ = list_make1($1); : } : | table_func_column_list ',' table_func_column : { : $$ = lappend($1, $3); 0.00 : 51d8b8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d8bf: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51d8c3: 48 8b 32 mov (%rdx),%rsi 0.00 : 51d8c6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d8cd: e8 ae 45 0c 00 callq 5e1e80 : } : ; 0.00 : 51d8d2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | table_func_column_list ',' table_func_column : { : $$ = lappend($1, $3); 0.00 : 51d8d9: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51d8dc: e9 9f 40 ff ff jmpq 511980 : ; : : table_func_column_list: : table_func_column : { : $$ = list_make1($1); 0.00 : 51d8e1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d8e8: 31 f6 xor %esi,%esi 0.00 : 51d8ea: 48 8b 38 mov (%rax),%rdi 0.00 : 51d8ed: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d8f4: e8 57 3f 0c 00 callq 5e1850 : } : | table_func_column_list ',' table_func_column 0.00 : 51d8f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : table_func_column_list: : table_func_column : { : $$ = list_make1($1); 0.00 : 51d900: 49 89 c6 mov %rax,%r14 : } : | table_func_column_list ',' table_func_column 0.00 : 51d903: e9 78 40 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : table_func_column: param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51d908: 48 8b 3d 51 cf 69 00 mov 0x69cf51(%rip),%rdi # bba860 0.00 : 51d90f: be 28 00 00 00 mov $0x28,%esi 0.00 : 51d914: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d91b: e8 f0 b4 27 00 callq 798e10 0.00 : 51d920: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = $1; 0.00 : 51d926: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->argType = $2; : n->mode = FUNC_PARAM_TABLE; : n->defexpr = NULL; : $$ = n; 0.00 : 51d92d: 49 89 c6 mov %rax,%r14 : ; : : table_func_column: param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; 0.00 : 51d930: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 51d934: 48 89 50 08 mov %rdx,0x8(%rax) : n->argType = $2; 0.00 : 51d938: 48 8b 13 mov (%rbx),%rdx : n->mode = FUNC_PARAM_TABLE; 0.00 : 51d93b: c7 40 18 74 00 00 00 movl $0x74,0x18(%rax) : n->defexpr = NULL; 0.00 : 51d942: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51d949: 00 : : table_func_column: param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; : n->argType = $2; 0.00 : 51d94a: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = FUNC_PARAM_TABLE; : n->defexpr = NULL; : $$ = n; : } : ; 0.00 : 51d94e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51d955: e9 26 40 ff ff jmpq 511980 : } : ; : : opt_definition: : WITH definition { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51d95a: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51d95d: e9 1e 40 ff ff jmpq 511980 : $$ = list_make2(makeString($1), makeString($3)); : } : ; : : opt_definition: : WITH definition { $$ = $2; } 0.00 : 51d962: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51d969: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51d96c: e9 0f 40 ff ff jmpq 511980 : ; : : func_as: Sconst { $$ = list_make1(makeString($1)); } : | Sconst ',' Sconst : { : $$ = list_make2(makeString($1), makeString($3)); 0.00 : 51d971: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51d978: 48 8b 38 mov (%rax),%rdi 0.00 : 51d97b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d982: e8 69 1d 0e 00 callq 5ff6f0 0.00 : 51d987: 31 f6 xor %esi,%esi 0.00 : 51d989: 48 89 c7 mov %rax,%rdi 0.00 : 51d98c: e8 bf 3e 0c 00 callq 5e1850 0.00 : 51d991: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51d998: 48 89 c3 mov %rax,%rbx 0.00 : 51d99b: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51d99f: e8 4c 1d 0e 00 callq 5ff6f0 0.00 : 51d9a4: 48 89 de mov %rbx,%rsi 0.00 : 51d9a7: 48 89 c7 mov %rax,%rdi 0.00 : 51d9aa: e8 a1 3e 0c 00 callq 5e1850 : } : ; 0.00 : 51d9af: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : func_as: Sconst { $$ = list_make1(makeString($1)); } : | Sconst ',' Sconst : { : $$ = list_make2(makeString($1), makeString($3)); 0.00 : 51d9b6: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51d9b9: e9 c2 3f ff ff jmpq 511980 : { : $$ = $1; : } : ; : : func_as: Sconst { $$ = list_make1(makeString($1)); } 0.00 : 51d9be: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51d9c5: 48 8b 3e mov (%rsi),%rdi 0.00 : 51d9c8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51d9cf: e8 1c 1d 0e 00 callq 5ff6f0 0.00 : 51d9d4: 31 f6 xor %esi,%esi 0.00 : 51d9d6: 48 89 c7 mov %rax,%rdi 0.00 : 51d9d9: e8 72 3e 0c 00 callq 5e1850 : | Sconst ',' Sconst 0.00 : 51d9de: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = $1; : } : ; : : func_as: Sconst { $$ = list_make1(makeString($1)); } 0.00 : 51d9e5: 49 89 c6 mov %rax,%r14 : | Sconst ',' Sconst 0.00 : 51d9e8: e9 93 3f ff ff jmpq 511980 : { : $$ = makeDefElem("window", (Node *)makeInteger(TRUE)); : } : | common_func_opt_item : { : $$ = $1; 0.00 : 51d9ed: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51d9f4: 4c 8b 33 mov (%rbx),%r14 : } : ; 0.00 : 51d9f7: e9 84 3f ff ff jmpq 511980 : { : $$ = makeDefElem("language", (Node *)makeString($2)); : } : | WINDOW : { : $$ = makeDefElem("window", (Node *)makeInteger(TRUE)); 0.00 : 51d9fc: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51da01: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51da08: e8 43 1d 0e 00 callq 5ff750 0.00 : 51da0d: bf bb 96 7c 00 mov $0x7c96bb,%edi 0.00 : 51da12: 48 89 c6 mov %rax,%rsi 0.00 : 51da15: e8 e6 3a 0d 00 callq 5f1500 : } : | common_func_opt_item 0.00 : 51da1a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("language", (Node *)makeString($2)); : } : | WINDOW : { : $$ = makeDefElem("window", (Node *)makeInteger(TRUE)); 0.00 : 51da21: 49 89 c6 mov %rax,%r14 : } : | common_func_opt_item 0.00 : 51da24: e9 57 3f ff ff jmpq 511980 : { : $$ = makeDefElem("as", (Node *)$2); : } : | LANGUAGE NonReservedWord_or_Sconst : { : $$ = makeDefElem("language", (Node *)makeString($2)); 0.00 : 51da29: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51da30: 48 8b 39 mov (%rcx),%rdi 0.00 : 51da33: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51da3a: e8 b1 1c 0e 00 callq 5ff6f0 0.00 : 51da3f: bf 5e 52 7c 00 mov $0x7c525e,%edi 0.00 : 51da44: 48 89 c6 mov %rax,%rsi 0.00 : 51da47: e8 b4 3a 0d 00 callq 5f1500 : } : | WINDOW 0.00 : 51da4c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("as", (Node *)$2); : } : | LANGUAGE NonReservedWord_or_Sconst : { : $$ = makeDefElem("language", (Node *)makeString($2)); 0.00 : 51da53: 49 89 c6 mov %rax,%r14 : } : | WINDOW 0.00 : 51da56: e9 25 3f ff ff jmpq 511980 : ; : : createfunc_opt_item: : AS func_as : { : $$ = makeDefElem("as", (Node *)$2); 0.00 : 51da5b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51da62: bf 4f b0 8d 00 mov $0x8db04f,%edi 0.00 : 51da67: 48 8b 32 mov (%rdx),%rsi 0.00 : 51da6a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51da71: e8 8a 3a 0d 00 callq 5f1500 : } : | LANGUAGE NonReservedWord_or_Sconst 0.00 : 51da76: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : createfunc_opt_item: : AS func_as : { : $$ = makeDefElem("as", (Node *)$2); 0.00 : 51da7d: 49 89 c6 mov %rax,%r14 : } : | LANGUAGE NonReservedWord_or_Sconst 0.00 : 51da80: e9 fb 3e ff ff jmpq 511980 : $$ = makeDefElem("rows", (Node *)$2); : } : | FunctionSetResetClause : { : /* we abuse the normal content of a DefElem here */ : $$ = makeDefElem("set", (Node *)$1); 0.00 : 51da85: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51da8c: bf f8 69 7c 00 mov $0x7c69f8,%edi 0.00 : 51da91: 48 8b 30 mov (%rax),%rsi 0.00 : 51da94: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51da9b: e8 60 3a 0d 00 callq 5f1500 : } : ; 0.00 : 51daa0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem("rows", (Node *)$2); : } : | FunctionSetResetClause : { : /* we abuse the normal content of a DefElem here */ : $$ = makeDefElem("set", (Node *)$1); 0.00 : 51daa7: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51daaa: e9 d1 3e ff ff jmpq 511980 : { : $$ = makeDefElem("cost", (Node *)$2); : } : | ROWS NumericOnly : { : $$ = makeDefElem("rows", (Node *)$2); 0.00 : 51daaf: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51dab6: bf b6 96 7c 00 mov $0x7c96b6,%edi 0.00 : 51dabb: 48 8b 33 mov (%rbx),%rsi 0.00 : 51dabe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dac5: e8 36 3a 0d 00 callq 5f1500 : } : | FunctionSetResetClause 0.00 : 51daca: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("cost", (Node *)$2); : } : | ROWS NumericOnly : { : $$ = makeDefElem("rows", (Node *)$2); 0.00 : 51dad1: 49 89 c6 mov %rax,%r14 : } : | FunctionSetResetClause 0.00 : 51dad4: e9 a7 3e ff ff jmpq 511980 : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(FALSE)); : } : | COST NumericOnly : { : $$ = makeDefElem("cost", (Node *)$2); 0.00 : 51dad9: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51dae0: bf a7 f9 7a 00 mov $0x7af9a7,%edi 0.00 : 51dae5: 48 8b 31 mov (%rcx),%rsi 0.00 : 51dae8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51daef: e8 0c 3a 0d 00 callq 5f1500 : } : | ROWS NumericOnly 0.00 : 51daf4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(FALSE)); : } : | COST NumericOnly : { : $$ = makeDefElem("cost", (Node *)$2); 0.00 : 51dafb: 49 89 c6 mov %rax,%r14 : } : | ROWS NumericOnly 0.00 : 51dafe: e9 7d 3e ff ff jmpq 511980 : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(TRUE)); : } : | NOT LEAKPROOF : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(FALSE)); 0.00 : 51db03: 31 ff xor %edi,%edi 0.00 : 51db05: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51db0c: e8 3f 1c 0e 00 callq 5ff750 0.00 : 51db11: bf ac 96 7c 00 mov $0x7c96ac,%edi 0.00 : 51db16: 48 89 c6 mov %rax,%rsi 0.00 : 51db19: e8 e2 39 0d 00 callq 5f1500 : } : | COST NumericOnly 0.00 : 51db1e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(TRUE)); : } : | NOT LEAKPROOF : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(FALSE)); 0.00 : 51db25: 49 89 c6 mov %rax,%r14 : } : | COST NumericOnly 0.00 : 51db28: e9 53 3e ff ff jmpq 511980 : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); : } : | LEAKPROOF : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(TRUE)); 0.00 : 51db2d: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51db32: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51db39: e8 12 1c 0e 00 callq 5ff750 0.00 : 51db3e: bf ac 96 7c 00 mov $0x7c96ac,%edi 0.00 : 51db43: 48 89 c6 mov %rax,%rsi 0.00 : 51db46: e8 b5 39 0d 00 callq 5f1500 : } : | NOT LEAKPROOF 0.00 : 51db4b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); : } : | LEAKPROOF : { : $$ = makeDefElem("leakproof", (Node *)makeInteger(TRUE)); 0.00 : 51db52: 49 89 c6 mov %rax,%r14 : } : | NOT LEAKPROOF 0.00 : 51db55: e9 26 3e ff ff jmpq 511980 : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); : } : | SECURITY INVOKER : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); 0.00 : 51db5a: 31 ff xor %edi,%edi 0.00 : 51db5c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51db63: e8 e8 1b 0e 00 callq 5ff750 0.00 : 51db68: bf 50 b4 8d 00 mov $0x8db450,%edi 0.00 : 51db6d: 48 89 c6 mov %rax,%rsi 0.00 : 51db70: e8 8b 39 0d 00 callq 5f1500 : } : | LEAKPROOF 0.00 : 51db75: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); : } : | SECURITY INVOKER : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); 0.00 : 51db7c: 49 89 c6 mov %rax,%r14 : } : | LEAKPROOF 0.00 : 51db7f: e9 fc 3d ff ff jmpq 511980 : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); : } : | SECURITY DEFINER : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); 0.00 : 51db84: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51db89: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51db90: e8 bb 1b 0e 00 callq 5ff750 0.00 : 51db95: bf 50 b4 8d 00 mov $0x8db450,%edi 0.00 : 51db9a: 48 89 c6 mov %rax,%rsi 0.00 : 51db9d: e8 5e 39 0d 00 callq 5f1500 : } : | SECURITY INVOKER 0.00 : 51dba2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); : } : | SECURITY DEFINER : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); 0.00 : 51dba9: 49 89 c6 mov %rax,%r14 : } : | SECURITY INVOKER 0.00 : 51dbac: e9 cf 3d ff ff jmpq 511980 : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); : } : | EXTERNAL SECURITY INVOKER : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); 0.00 : 51dbb1: 31 ff xor %edi,%edi 0.00 : 51dbb3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dbba: e8 91 1b 0e 00 callq 5ff750 0.00 : 51dbbf: bf 50 b4 8d 00 mov $0x8db450,%edi 0.00 : 51dbc4: 48 89 c6 mov %rax,%rsi 0.00 : 51dbc7: e8 34 39 0d 00 callq 5f1500 : } : | SECURITY DEFINER 0.00 : 51dbcc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); : } : | EXTERNAL SECURITY INVOKER : { : $$ = makeDefElem("security", (Node *)makeInteger(FALSE)); 0.00 : 51dbd3: 49 89 c6 mov %rax,%r14 : } : | SECURITY DEFINER 0.00 : 51dbd6: e9 a5 3d ff ff jmpq 511980 : { : $$ = makeDefElem("volatility", (Node *)makeString("volatile")); : } : | EXTERNAL SECURITY DEFINER : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); 0.00 : 51dbdb: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51dbe0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dbe7: e8 64 1b 0e 00 callq 5ff750 0.00 : 51dbec: bf 50 b4 8d 00 mov $0x8db450,%edi 0.00 : 51dbf1: 48 89 c6 mov %rax,%rsi 0.00 : 51dbf4: e8 07 39 0d 00 callq 5f1500 : } : | EXTERNAL SECURITY INVOKER 0.00 : 51dbf9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("volatility", (Node *)makeString("volatile")); : } : | EXTERNAL SECURITY DEFINER : { : $$ = makeDefElem("security", (Node *)makeInteger(TRUE)); 0.00 : 51dc00: 49 89 c6 mov %rax,%r14 : } : | EXTERNAL SECURITY INVOKER 0.00 : 51dc03: e9 78 3d ff ff jmpq 511980 : { : $$ = makeDefElem("volatility", (Node *)makeString("stable")); : } : | VOLATILE : { : $$ = makeDefElem("volatility", (Node *)makeString("volatile")); 0.00 : 51dc08: bf a3 96 7c 00 mov $0x7c96a3,%edi 0.00 : 51dc0d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dc14: e8 d7 1a 0e 00 callq 5ff6f0 0.00 : 51dc19: bf 91 96 7c 00 mov $0x7c9691,%edi 0.00 : 51dc1e: 48 89 c6 mov %rax,%rsi 0.00 : 51dc21: e8 da 38 0d 00 callq 5f1500 : } : | EXTERNAL SECURITY DEFINER 0.00 : 51dc26: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("volatility", (Node *)makeString("stable")); : } : | VOLATILE : { : $$ = makeDefElem("volatility", (Node *)makeString("volatile")); 0.00 : 51dc2d: 49 89 c6 mov %rax,%r14 : } : | EXTERNAL SECURITY DEFINER 0.00 : 51dc30: e9 4b 3d ff ff jmpq 511980 : { : $$ = makeDefElem("volatility", (Node *)makeString("immutable")); : } : | STABLE : { : $$ = makeDefElem("volatility", (Node *)makeString("stable")); 0.00 : 51dc35: bf 9c 96 7c 00 mov $0x7c969c,%edi 0.00 : 51dc3a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dc41: e8 aa 1a 0e 00 callq 5ff6f0 0.00 : 51dc46: bf 91 96 7c 00 mov $0x7c9691,%edi 0.00 : 51dc4b: 48 89 c6 mov %rax,%rsi 0.00 : 51dc4e: e8 ad 38 0d 00 callq 5f1500 : } : | VOLATILE 0.00 : 51dc53: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("volatility", (Node *)makeString("immutable")); : } : | STABLE : { : $$ = makeDefElem("volatility", (Node *)makeString("stable")); 0.00 : 51dc5a: 49 89 c6 mov %rax,%r14 : } : | VOLATILE 0.00 : 51dc5d: e9 1e 3d ff ff jmpq 511980 : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); : } : | IMMUTABLE : { : $$ = makeDefElem("volatility", (Node *)makeString("immutable")); 0.00 : 51dc62: bf 87 96 7c 00 mov $0x7c9687,%edi 0.00 : 51dc67: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dc6e: e8 7d 1a 0e 00 callq 5ff6f0 0.00 : 51dc73: bf 91 96 7c 00 mov $0x7c9691,%edi 0.00 : 51dc78: 48 89 c6 mov %rax,%rsi 0.00 : 51dc7b: e8 80 38 0d 00 callq 5f1500 : } : | STABLE 0.00 : 51dc80: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); : } : | IMMUTABLE : { : $$ = makeDefElem("volatility", (Node *)makeString("immutable")); 0.00 : 51dc87: 49 89 c6 mov %rax,%r14 : } : | STABLE 0.00 : 51dc8a: e9 f1 3c ff ff jmpq 511980 : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); : } : | STRICT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); 0.00 : 51dc8f: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51dc94: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dc9b: e8 b0 1a 0e 00 callq 5ff750 0.00 : 51dca0: bf 84 f0 86 00 mov $0x86f084,%edi 0.00 : 51dca5: 48 89 c6 mov %rax,%rsi 0.00 : 51dca8: e8 53 38 0d 00 callq 5f1500 : } : | IMMUTABLE 0.00 : 51dcad: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); : } : | STRICT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); 0.00 : 51dcb4: 49 89 c6 mov %rax,%r14 : } : | IMMUTABLE 0.00 : 51dcb7: e9 c4 3c ff ff jmpq 511980 : { : $$ = makeDefElem("strict", (Node *)makeInteger(FALSE)); : } : | RETURNS NULL_P ON NULL_P INPUT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); 0.00 : 51dcbc: bf 01 00 00 00 mov $0x1,%edi 0.00 : 51dcc1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dcc8: e8 83 1a 0e 00 callq 5ff750 0.00 : 51dccd: bf 84 f0 86 00 mov $0x86f084,%edi 0.00 : 51dcd2: 48 89 c6 mov %rax,%rsi 0.00 : 51dcd5: e8 26 38 0d 00 callq 5f1500 : } : | STRICT_P 0.00 : 51dcda: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("strict", (Node *)makeInteger(FALSE)); : } : | RETURNS NULL_P ON NULL_P INPUT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(TRUE)); 0.00 : 51dce1: 49 89 c6 mov %rax,%r14 : } : | STRICT_P 0.00 : 51dce4: e9 97 3c ff ff jmpq 511980 : * Options common to both CREATE FUNCTION and ALTER FUNCTION : */ : common_func_opt_item: : CALLED ON NULL_P INPUT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(FALSE)); 0.00 : 51dce9: 31 ff xor %edi,%edi 0.00 : 51dceb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dcf2: e8 59 1a 0e 00 callq 5ff750 0.00 : 51dcf7: bf 84 f0 86 00 mov $0x86f084,%edi 0.00 : 51dcfc: 48 89 c6 mov %rax,%rsi 0.00 : 51dcff: e8 fc 37 0d 00 callq 5f1500 : } : | RETURNS NULL_P ON NULL_P INPUT_P 0.00 : 51dd04: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * Options common to both CREATE FUNCTION and ALTER FUNCTION : */ : common_func_opt_item: : CALLED ON NULL_P INPUT_P : { : $$ = makeDefElem("strict", (Node *)makeInteger(FALSE)); 0.00 : 51dd0b: 49 89 c6 mov %rax,%r14 : } : | RETURNS NULL_P ON NULL_P INPUT_P 0.00 : 51dd0e: e9 6d 3c ff ff jmpq 511980 : ; : : createfunc_opt_list: : /* Must be at least one to prevent conflict */ : createfunc_opt_item { $$ = list_make1($1); } : | createfunc_opt_list createfunc_opt_item { $$ = lappend($1, $2); } 0.00 : 51dd13: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51dd1a: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 51dd1e: 48 8b 32 mov (%rdx),%rsi 0.00 : 51dd21: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dd28: e8 53 41 0c 00 callq 5e1e80 : ; 0.00 : 51dd2d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : createfunc_opt_list: : /* Must be at least one to prevent conflict */ : createfunc_opt_item { $$ = list_make1($1); } : | createfunc_opt_list createfunc_opt_item { $$ = lappend($1, $2); } 0.00 : 51dd34: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51dd37: e9 44 3c ff ff jmpq 511980 : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } : ; : : createfunc_opt_list: : /* Must be at least one to prevent conflict */ : createfunc_opt_item { $$ = list_make1($1); } 0.00 : 51dd3c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51dd43: 31 f6 xor %esi,%esi 0.00 : 51dd45: 48 8b 38 mov (%rax),%rdi 0.00 : 51dd48: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dd4f: e8 fc 3a 0c 00 callq 5e1850 : | createfunc_opt_list createfunc_opt_item { $$ = lappend($1, $2); } 0.00 : 51dd54: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } : ; : : createfunc_opt_list: : /* Must be at least one to prevent conflict */ : createfunc_opt_item { $$ = list_make1($1); } 0.00 : 51dd5b: 49 89 c6 mov %rax,%r14 : | createfunc_opt_list createfunc_opt_item { $$ = lappend($1, $2); } 0.00 : 51dd5e: e9 1d 3c ff ff jmpq 511980 : } : ; : : aggr_args_list: : aggr_arg { $$ = list_make1($1); } : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } 0.00 : 51dd63: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51dd6a: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 51dd6e: 48 8b 33 mov (%rbx),%rsi 0.00 : 51dd71: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dd78: e8 03 41 0c 00 callq 5e1e80 : ; 0.00 : 51dd7d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : aggr_args_list: : aggr_arg { $$ = list_make1($1); } : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } 0.00 : 51dd84: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51dd87: e9 f4 3b ff ff jmpq 511980 : $$ = makeOrderedSetArgs($2, $5, yyscanner); : } : ; : : aggr_args_list: : aggr_arg { $$ = list_make1($1); } 0.00 : 51dd8c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51dd93: 31 f6 xor %esi,%esi 0.00 : 51dd95: 48 8b 39 mov (%rcx),%rdi 0.00 : 51dd98: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dd9f: e8 ac 3a 0c 00 callq 5e1850 : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } 0.00 : 51dda4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeOrderedSetArgs($2, $5, yyscanner); : } : ; : : aggr_args_list: : aggr_arg { $$ = list_make1($1); } 0.00 : 51ddab: 49 89 c6 mov %rax,%r14 : | aggr_args_list ',' aggr_arg { $$ = lappend($1, $3); } 0.00 : 51ddae: e9 cd 3b ff ff jmpq 511980 : $$ = list_make2($4, makeInteger(0)); : } : | '(' aggr_args_list ORDER BY aggr_args_list ')' : { : /* this is the only case requiring consistency checking */ : $$ = makeOrderedSetArgs($2, $5, yyscanner); 0.00 : 51ddb3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : } : : STATIC_IF_INLINE ListCell * : list_tail(List *l) : { : return l ? l->tail : NULL; 0.00 : 51ddba: 31 c0 xor %eax,%eax 0.00 : 51ddbc: 4c 8b 6a e0 mov -0x20(%rdx),%r13 0.00 : 51ddc0: 4c 8b 62 f8 mov -0x8(%rdx),%r12 0.00 : 51ddc4: 4d 85 ed test %r13,%r13 0.00 : 51ddc7: 74 04 je 51ddcd 0.00 : 51ddc9: 49 8b 45 10 mov 0x10(%r13),%rax : */ : static List * : makeOrderedSetArgs(List *directargs, List *orderedargs, : core_yyscan_t yyscanner) : { : FunctionParameter *lastd = (FunctionParameter *) llast(directargs); 0.00 : 51ddcd: 48 8b 10 mov (%rax),%rdx : int ndirectargs; : : /* No restriction unless last direct arg is VARIADIC */ : if (lastd->mode == FUNC_PARAM_VARIADIC) 0.00 : 51ddd0: 83 7a 18 76 cmpl $0x76,0x18(%rdx) 0.00 : 51ddd4: 0f 84 33 b5 00 00 je 52930d : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 51ddda: 31 c0 xor %eax,%eax 0.00 : 51dddc: 4d 85 ed test %r13,%r13 0.00 : 51dddf: 74 04 je 51dde5 0.00 : 51dde1: 41 8b 45 04 mov 0x4(%r13),%eax : } : : /* don't merge into the next line, as list_concat changes directargs */ : ndirectargs = list_length(directargs); : : return list_make2(list_concat(directargs, orderedargs), 0.00 : 51dde5: 48 63 f8 movslq %eax,%rdi 0.00 : 51dde8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ddef: e8 5c 19 0e 00 callq 5ff750 0.00 : 51ddf4: 31 f6 xor %esi,%esi 0.00 : 51ddf6: 48 89 c7 mov %rax,%rdi 0.00 : 51ddf9: e8 52 3a 0c 00 callq 5e1850 0.00 : 51ddfe: 4c 89 e6 mov %r12,%rsi 0.00 : 51de01: 48 89 c3 mov %rax,%rbx 0.00 : 51de04: 4c 89 ef mov %r13,%rdi 0.00 : 51de07: e8 b4 47 0c 00 callq 5e25c0 0.00 : 51de0c: 48 89 de mov %rbx,%rsi 0.00 : 51de0f: 48 89 c7 mov %rax,%rdi 0.00 : 51de12: e8 39 3a 0c 00 callq 5e1850 : | '(' aggr_args_list ORDER BY aggr_args_list ')' : { : /* this is the only case requiring consistency checking */ : $$ = makeOrderedSetArgs($2, $5, yyscanner); : } : ; 0.00 : 51de17: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : : /* don't merge into the next line, as list_concat changes directargs */ : ndirectargs = list_length(directargs); : : return list_make2(list_concat(directargs, orderedargs), 0.00 : 51de1e: 49 89 c6 mov %rax,%r14 : | '(' aggr_args_list ORDER BY aggr_args_list ')' : { : /* this is the only case requiring consistency checking */ : $$ = makeOrderedSetArgs($2, $5, yyscanner); : } : ; 0.00 : 51de21: e9 5a 3b ff ff jmpq 511980 : { : $$ = list_make2($2, makeInteger(-1)); : } : | '(' ORDER BY aggr_args_list ')' : { : $$ = list_make2($4, makeInteger(0)); 0.00 : 51de26: 31 ff xor %edi,%edi 0.00 : 51de28: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51de2f: e8 1c 19 0e 00 callq 5ff750 0.00 : 51de34: 31 f6 xor %esi,%esi 0.00 : 51de36: 48 89 c7 mov %rax,%rdi 0.00 : 51de39: e8 12 3a 0c 00 callq 5e1850 0.00 : 51de3e: 48 89 c6 mov %rax,%rsi 0.00 : 51de41: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51de48: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51de4c: e8 ff 39 0c 00 callq 5e1850 : } : | '(' aggr_args_list ORDER BY aggr_args_list ')' 0.00 : 51de51: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make2($2, makeInteger(-1)); : } : | '(' ORDER BY aggr_args_list ')' : { : $$ = list_make2($4, makeInteger(0)); 0.00 : 51de58: 49 89 c6 mov %rax,%r14 : } : | '(' aggr_args_list ORDER BY aggr_args_list ')' 0.00 : 51de5b: e9 20 3b ff ff jmpq 511980 : { : $$ = list_make2(NIL, makeInteger(-1)); : } : | '(' aggr_args_list ')' : { : $$ = list_make2($2, makeInteger(-1)); 0.00 : 51de60: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi 0.00 : 51de67: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51de6e: e8 dd 18 0e 00 callq 5ff750 0.00 : 51de73: 31 f6 xor %esi,%esi 0.00 : 51de75: 48 89 c7 mov %rax,%rdi 0.00 : 51de78: e8 d3 39 0c 00 callq 5e1850 0.00 : 51de7d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51de84: 48 89 c6 mov %rax,%rsi 0.00 : 51de87: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 51de8b: e8 c0 39 0c 00 callq 5e1850 : } : | '(' ORDER BY aggr_args_list ')' 0.00 : 51de90: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make2(NIL, makeInteger(-1)); : } : | '(' aggr_args_list ')' : { : $$ = list_make2($2, makeInteger(-1)); 0.00 : 51de97: 49 89 c6 mov %rax,%r14 : } : | '(' ORDER BY aggr_args_list ')' 0.00 : 51de9a: e9 e1 3a ff ff jmpq 511980 : * on existing aggregates, we can just apply extractArgTypes to the first : * sublist. : */ : aggr_args: '(' '*' ')' : { : $$ = list_make2(NIL, makeInteger(-1)); 0.00 : 51de9f: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi 0.00 : 51dea6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dead: e8 9e 18 0e 00 callq 5ff750 0.00 : 51deb2: 31 f6 xor %esi,%esi 0.00 : 51deb4: 48 89 c7 mov %rax,%rdi 0.00 : 51deb7: e8 94 39 0c 00 callq 5e1850 0.00 : 51debc: 31 ff xor %edi,%edi 0.00 : 51debe: 48 89 c6 mov %rax,%rsi 0.00 : 51dec1: e8 8a 39 0c 00 callq 5e1850 : } : | '(' aggr_args_list ')' 0.00 : 51dec6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * on existing aggregates, we can just apply extractArgTypes to the first : * sublist. : */ : aggr_args: '(' '*' ')' : { : $$ = list_make2(NIL, makeInteger(-1)); 0.00 : 51decd: 49 89 c6 mov %rax,%r14 : } : | '(' aggr_args_list ')' 0.00 : 51ded0: e9 ab 3a ff ff jmpq 511980 : ; : : /* Aggregate args can be most things that function args can be */ : aggr_arg: func_arg : { : if (!($1->mode == FUNC_PARAM_IN || 0.00 : 51ded5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51dedc: 48 8b 02 mov (%rdx),%rax 0.00 : 51dedf: 8b 50 18 mov 0x18(%rax),%edx 0.00 : 51dee2: 83 fa 69 cmp $0x69,%edx 0.00 : 51dee5: 0f 84 48 b2 00 00 je 529133 0.00 : 51deeb: 83 fa 76 cmp $0x76,%edx 0.00 : 51deee: 0f 84 3f b2 00 00 je 529133 : $1->mode == FUNC_PARAM_VARIADIC)) : ereport(ERROR, 0.00 : 51def4: 45 31 c0 xor %r8d,%r8d 0.00 : 51def7: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 51defc: ba 5e 1a 00 00 mov $0x1a5e,%edx 0.00 : 51df01: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 51df06: bf 14 00 00 00 mov $0x14,%edi 0.00 : 51df0b: e8 b0 cb 25 00 callq 77aac0 0.00 : 51df10: 84 c0 test %al,%al 0.00 : 51df12: 0f 84 8f 40 ff ff je 511fa7 0.00 : 51df18: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 51df1f: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 51df26: 8b 39 mov (%rcx),%edi 0.00 : 51df28: e8 73 fd fe ff callq 50dca0 0.00 : 51df2d: bf d8 a0 7c 00 mov $0x7ca0d8,%edi 0.00 : 51df32: 41 89 c4 mov %eax,%r12d 0.00 : 51df35: 31 c0 xor %eax,%eax 0.00 : 51df37: e8 64 e9 25 00 callq 77c8a0 0.00 : 51df3c: bf 40 04 00 00 mov $0x440,%edi 0.00 : 51df41: 89 c3 mov %eax,%ebx 0.00 : 51df43: e9 18 69 00 00 jmpq 524860 0.00 : 51df48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 51df4f: 00 : $$ = $1; : $$->defexpr = $3; : } : | func_arg '=' a_expr : { : $$ = $1; 0.00 : 51df50: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51df57: 4c 8b 76 f0 mov -0x10(%rsi),%r14 : $$->defexpr = $3; 0.00 : 51df5b: 48 8b 06 mov (%rsi),%rax 0.00 : 51df5e: 49 89 46 20 mov %rax,0x20(%r14) : } : ; 0.00 : 51df62: e9 19 3a ff ff jmpq 511980 : { : $$ = $1; : } : | func_arg DEFAULT a_expr : { : $$ = $1; 0.00 : 51df67: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51df6e: 4c 8b 73 f0 mov -0x10(%rbx),%r14 : $$->defexpr = $3; 0.00 : 51df72: 48 8b 03 mov (%rbx),%rax 0.00 : 51df75: 49 89 46 20 mov %rax,0x20(%r14) : } : | func_arg '=' a_expr 0.00 : 51df79: e9 02 3a ff ff jmpq 511980 : ; : : defacl_privilege_target: : TABLES { $$ = ACL_OBJECT_RELATION; } : | FUNCTIONS { $$ = ACL_OBJECT_FUNCTION; } : | SEQUENCES { $$ = ACL_OBJECT_SEQUENCE; } 0.00 : 51df7e: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51df85: ff ff ff 0.00 : 51df88: 49 21 d6 and %rdx,%r14 0.00 : 51df8b: 49 83 ce 02 or $0x2,%r14 : | TYPES_P { $$ = ACL_OBJECT_TYPE; } 0.00 : 51df8f: e9 ec 39 ff ff jmpq 511980 : } : ; : : defacl_privilege_target: : TABLES { $$ = ACL_OBJECT_RELATION; } : | FUNCTIONS { $$ = ACL_OBJECT_FUNCTION; } 0.00 : 51df94: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51df9b: ff ff ff 0.00 : 51df9e: 49 21 c6 and %rax,%r14 0.00 : 51dfa1: 49 83 ce 07 or $0x7,%r14 : | SEQUENCES { $$ = ACL_OBJECT_SEQUENCE; } 0.00 : 51dfa5: e9 d6 39 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : defacl_privilege_target: : TABLES { $$ = ACL_OBJECT_RELATION; } 0.00 : 51dfaa: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51dfb1: ff ff ff 0.00 : 51dfb4: 49 21 f6 and %rsi,%r14 0.00 : 51dfb7: 49 83 ce 01 or $0x1,%r14 : | FUNCTIONS { $$ = ACL_OBJECT_FUNCTION; } 0.00 : 51dfbb: e9 c0 39 ff ff jmpq 511980 : $$ = (Node *)n; : } : | REVOKE GRANT OPTION FOR privileges ON defacl_privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51dfc0: 48 8b 3d 99 c8 69 00 mov 0x69c899(%rip),%rdi # bba860 0.00 : 51dfc7: be 30 00 00 00 mov $0x30,%esi 0.00 : 51dfcc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51dfd3: e8 38 ae 27 00 callq 798e10 0.00 : 51dfd8: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = false; 0.00 : 51dfde: c6 40 04 00 movb $0x0,0x4(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $7; : n->objects = NIL; : n->grantees = $9; : n->behavior = $10; : $$ = (Node *)n; 0.00 : 51dfe2: 49 89 c6 mov %rax,%r14 : | REVOKE GRANT OPTION FOR privileges ON defacl_privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = true; 0.00 : 51dfe5: c6 40 28 01 movb $0x1,0x28(%rax) : n->privileges = $5; 0.00 : 51dfe9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51dff0: 48 8b 53 d8 mov -0x28(%rbx),%rdx : n->targtype = ACL_TARGET_DEFAULTS; 0.00 : 51dff4: c7 40 08 02 00 00 00 movl $0x2,0x8(%rax) : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = true; : n->privileges = $5; 0.00 : 51dffb: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $7; 0.00 : 51dfff: 8b 53 e8 mov -0x18(%rbx),%edx : n->objects = NIL; 0.00 : 51e002: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51e009: 00 : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = true; : n->privileges = $5; : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $7; 0.00 : 51e00a: 89 50 0c mov %edx,0xc(%rax) : n->objects = NIL; : n->grantees = $9; 0.00 : 51e00d: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 51e011: 48 89 50 20 mov %rdx,0x20(%rax) : n->behavior = $10; 0.00 : 51e015: 8b 13 mov (%rbx),%edx 0.00 : 51e017: 89 50 2c mov %edx,0x2c(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51e01a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e021: e9 5a 39 ff ff jmpq 511980 : $$ = (Node*)n; : } : | REVOKE privileges ON defacl_privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51e026: 48 8b 3d 33 c8 69 00 mov 0x69c833(%rip),%rdi # bba860 0.00 : 51e02d: be 30 00 00 00 mov $0x30,%esi 0.00 : 51e032: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e039: e8 d2 ad 27 00 callq 798e10 0.00 : 51e03e: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = false; 0.00 : 51e044: c6 40 04 00 movb $0x0,0x4(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; : n->objects = NIL; : n->grantees = $6; : n->behavior = $7; : $$ = (Node *)n; 0.00 : 51e048: 49 89 c6 mov %rax,%r14 : | REVOKE privileges ON defacl_privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = false; 0.00 : 51e04b: c6 40 28 00 movb $0x0,0x28(%rax) : n->privileges = $2; 0.00 : 51e04f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e056: 48 8b 51 d8 mov -0x28(%rcx),%rdx : n->targtype = ACL_TARGET_DEFAULTS; 0.00 : 51e05a: c7 40 08 02 00 00 00 movl $0x2,0x8(%rax) : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = false; : n->privileges = $2; 0.00 : 51e061: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; 0.00 : 51e065: 8b 51 e8 mov -0x18(%rcx),%edx : n->objects = NIL; 0.00 : 51e068: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51e06f: 00 : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = false; : n->privileges = $2; : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; 0.00 : 51e070: 89 50 0c mov %edx,0xc(%rax) : n->objects = NIL; : n->grantees = $6; 0.00 : 51e073: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51e077: 48 89 50 20 mov %rdx,0x20(%rax) : n->behavior = $7; 0.00 : 51e07b: 8b 11 mov (%rcx),%edx 0.00 : 51e07d: 89 50 2c mov %edx,0x2c(%rax) : $$ = (Node *)n; : } : | REVOKE GRANT OPTION FOR privileges ON defacl_privilege_target 0.00 : 51e080: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e087: e9 f4 38 ff ff jmpq 511980 : */ : DefACLAction: : GRANT privileges ON defacl_privilege_target TO grantee_list : opt_grant_grant_option : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51e08c: 48 8b 3d cd c7 69 00 mov 0x69c7cd(%rip),%rdi # bba860 0.00 : 51e093: be 30 00 00 00 mov $0x30,%esi 0.00 : 51e098: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e09f: e8 6c ad 27 00 callq 798e10 0.00 : 51e0a4: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = true; 0.00 : 51e0aa: c6 40 04 01 movb $0x1,0x4(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; : n->objects = NIL; : n->grantees = $6; : n->grant_option = $7; : $$ = (Node*)n; 0.00 : 51e0ae: 49 89 c6 mov %rax,%r14 : GRANT privileges ON defacl_privilege_target TO grantee_list : opt_grant_grant_option : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = true; : n->privileges = $2; 0.00 : 51e0b1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e0b8: 48 8b 56 d8 mov -0x28(%rsi),%rdx : n->targtype = ACL_TARGET_DEFAULTS; 0.00 : 51e0bc: c7 40 08 02 00 00 00 movl $0x2,0x8(%rax) : GRANT privileges ON defacl_privilege_target TO grantee_list : opt_grant_grant_option : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = true; : n->privileges = $2; 0.00 : 51e0c3: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; 0.00 : 51e0c7: 8b 56 e8 mov -0x18(%rsi),%edx : n->objects = NIL; 0.00 : 51e0ca: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51e0d1: 00 : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = true; : n->privileges = $2; : n->targtype = ACL_TARGET_DEFAULTS; : n->objtype = $4; 0.00 : 51e0d2: 89 50 0c mov %edx,0xc(%rax) : n->objects = NIL; : n->grantees = $6; 0.00 : 51e0d5: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51e0d9: 48 89 50 20 mov %rdx,0x20(%rax) : n->grant_option = $7; 0.00 : 51e0dd: 0f b6 16 movzbl (%rsi),%edx 0.00 : 51e0e0: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node*)n; : } : | REVOKE privileges ON defacl_privilege_target 0.00 : 51e0e3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e0ea: e9 91 38 ff ff jmpq 511980 : { : $$ = makeDefElem("roles", (Node *)$3); : } : | FOR USER role_list : { : $$ = makeDefElem("roles", (Node *)$3); 0.00 : 51e0ef: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e0f6: bf 36 32 7c 00 mov $0x7c3236,%edi 0.00 : 51e0fb: 48 8b 33 mov (%rbx),%rsi 0.00 : 51e0fe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e105: e8 f6 33 0d 00 callq 5f1500 : } : ; 0.00 : 51e10a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("roles", (Node *)$3); : } : | FOR USER role_list : { : $$ = makeDefElem("roles", (Node *)$3); 0.00 : 51e111: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51e114: e9 67 38 ff ff jmpq 511980 : { : $$ = makeDefElem("schemas", (Node *)$3); : } : | FOR ROLE role_list : { : $$ = makeDefElem("roles", (Node *)$3); 0.00 : 51e119: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e120: bf 36 32 7c 00 mov $0x7c3236,%edi 0.00 : 51e125: 48 8b 31 mov (%rcx),%rsi 0.00 : 51e128: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e12f: e8 cc 33 0d 00 callq 5f1500 : } : | FOR USER role_list 0.00 : 51e134: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("schemas", (Node *)$3); : } : | FOR ROLE role_list : { : $$ = makeDefElem("roles", (Node *)$3); 0.00 : 51e13b: 49 89 c6 mov %rax,%r14 : } : | FOR USER role_list 0.00 : 51e13e: e9 3d 38 ff ff jmpq 511980 : ; : : DefACLOption: : IN_P SCHEMA name_list : { : $$ = makeDefElem("schemas", (Node *)$3); 0.00 : 51e143: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51e14a: bf 64 57 8e 00 mov $0x8e5764,%edi 0.00 : 51e14f: 48 8b 32 mov (%rdx),%rsi 0.00 : 51e152: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e159: e8 a2 33 0d 00 callq 5f1500 : } : | FOR ROLE role_list 0.00 : 51e15e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : DefACLOption: : IN_P SCHEMA name_list : { : $$ = makeDefElem("schemas", (Node *)$3); 0.00 : 51e165: 49 89 c6 mov %rax,%r14 : } : | FOR ROLE role_list 0.00 : 51e168: e9 13 38 ff ff jmpq 511980 : } : ; : : DefACLOptionList: : DefACLOptionList DefACLOption { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } 0.00 : 51e16d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51e170: e9 0b 38 ff ff jmpq 511980 : $$ = (Node*)n; : } : ; : : DefACLOptionList: : DefACLOptionList DefACLOption { $$ = lappend($1, $2); } 0.00 : 51e175: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51e17c: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51e180: 48 8b 30 mov (%rax),%rsi 0.00 : 51e183: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e18a: e8 f1 3c 0c 00 callq 5e1e80 : | /* EMPTY */ { $$ = NIL; } 0.00 : 51e18f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node*)n; : } : ; : : DefACLOptionList: : DefACLOptionList DefACLOption { $$ = lappend($1, $2); } 0.00 : 51e196: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 51e199: e9 e2 37 ff ff jmpq 511980 : *****************************************************************************/ : : AlterDefaultPrivilegesStmt: : ALTER DEFAULT PRIVILEGES DefACLOptionList DefACLAction : { : AlterDefaultPrivilegesStmt *n = makeNode(AlterDefaultPrivilegesStmt); 0.00 : 51e19e: 48 8b 3d bb c6 69 00 mov 0x69c6bb(%rip),%rdi # bba860 0.00 : 51e1a5: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e1aa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e1b1: e8 5a ac 27 00 callq 798e10 0.00 : 51e1b6: c7 00 c8 02 00 00 movl $0x2c8,(%rax) : n->options = $4; 0.00 : 51e1bc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->action = (GrantStmt *) $5; : $$ = (Node*)n; 0.00 : 51e1c3: 49 89 c6 mov %rax,%r14 : : AlterDefaultPrivilegesStmt: : ALTER DEFAULT PRIVILEGES DefACLOptionList DefACLAction : { : AlterDefaultPrivilegesStmt *n = makeNode(AlterDefaultPrivilegesStmt); : n->options = $4; 0.00 : 51e1c6: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51e1ca: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = (GrantStmt *) $5; 0.00 : 51e1ce: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e1d1: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node*)n; : } : ; 0.00 : 51e1d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e1dc: e9 9f 37 ff ff jmpq 511980 : opt_grant_admin_option: WITH ADMIN OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_granted_by: GRANTED BY RoleId { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51e1e1: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51e1e4: e9 97 37 ff ff jmpq 511980 : : opt_grant_admin_option: WITH ADMIN OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_granted_by: GRANTED BY RoleId { $$ = $3; } 0.00 : 51e1e9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e1f0: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51e1f3: e9 88 37 ff ff jmpq 511980 : $$ = (Node*)n; : } : ; : : opt_grant_admin_option: WITH ADMIN OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51e1f8: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51e1fb: e9 80 37 ff ff jmpq 511980 : n->behavior = $9; : $$ = (Node*)n; : } : ; : : opt_grant_admin_option: WITH ADMIN OPTION { $$ = TRUE; } 0.00 : 51e200: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51e203: e9 78 37 ff ff jmpq 511980 : n->behavior = $6; : $$ = (Node*)n; : } : | REVOKE ADMIN OPTION FOR privilege_list FROM role_list opt_granted_by opt_drop_behavior : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); 0.00 : 51e208: 48 8b 3d 51 c6 69 00 mov 0x69c651(%rip),%rdi # bba860 0.00 : 51e20f: be 30 00 00 00 mov $0x30,%esi 0.00 : 51e214: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e21b: e8 f0 ab 27 00 callq 798e10 0.00 : 51e220: c7 00 c7 02 00 00 movl $0x2c7,(%rax) : n->is_grant = false; 0.00 : 51e226: c6 40 18 00 movb $0x0,0x18(%rax) : n->admin_opt = true; : n->granted_roles = $5; : n->grantee_roles = $7; : n->behavior = $9; : $$ = (Node*)n; 0.00 : 51e22a: 49 89 c6 mov %rax,%r14 : } : | REVOKE ADMIN OPTION FOR privilege_list FROM role_list opt_granted_by opt_drop_behavior : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); : n->is_grant = false; : n->admin_opt = true; 0.00 : 51e22d: c6 40 19 01 movb $0x1,0x19(%rax) : n->granted_roles = $5; 0.00 : 51e231: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e238: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 51e23c: 48 89 50 08 mov %rdx,0x8(%rax) : n->grantee_roles = $7; 0.00 : 51e240: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51e244: 48 89 50 10 mov %rdx,0x10(%rax) : n->behavior = $9; 0.00 : 51e248: 8b 11 mov (%rcx),%edx 0.00 : 51e24a: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node*)n; : } : ; 0.00 : 51e24d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e254: e9 27 37 ff ff jmpq 511980 : ; : : RevokeRoleStmt: : REVOKE privilege_list FROM role_list opt_granted_by opt_drop_behavior : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); 0.00 : 51e259: 48 8b 3d 00 c6 69 00 mov 0x69c600(%rip),%rdi # bba860 0.00 : 51e260: be 30 00 00 00 mov $0x30,%esi 0.00 : 51e265: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e26c: e8 9f ab 27 00 callq 798e10 0.00 : 51e271: c7 00 c7 02 00 00 movl $0x2c7,(%rax) : n->is_grant = false; 0.00 : 51e277: c6 40 18 00 movb $0x0,0x18(%rax) : n->admin_opt = false; : n->granted_roles = $2; : n->grantee_roles = $4; : n->behavior = $6; : $$ = (Node*)n; 0.00 : 51e27b: 49 89 c6 mov %rax,%r14 : RevokeRoleStmt: : REVOKE privilege_list FROM role_list opt_granted_by opt_drop_behavior : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); : n->is_grant = false; : n->admin_opt = false; 0.00 : 51e27e: c6 40 19 00 movb $0x0,0x19(%rax) : n->granted_roles = $2; 0.00 : 51e282: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e289: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 51e28d: 48 89 50 08 mov %rdx,0x8(%rax) : n->grantee_roles = $4; 0.00 : 51e291: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 51e295: 48 89 50 10 mov %rdx,0x10(%rax) : n->behavior = $6; 0.00 : 51e299: 8b 16 mov (%rsi),%edx 0.00 : 51e29b: 89 50 28 mov %edx,0x28(%rax) : $$ = (Node*)n; : } : | REVOKE ADMIN OPTION FOR privilege_list FROM role_list opt_granted_by opt_drop_behavior 0.00 : 51e29e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e2a5: e9 d6 36 ff ff jmpq 511980 : *****************************************************************************/ : : GrantRoleStmt: : GRANT privilege_list TO role_list opt_grant_admin_option opt_granted_by : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); 0.00 : 51e2aa: 48 8b 3d af c5 69 00 mov 0x69c5af(%rip),%rdi # bba860 0.00 : 51e2b1: be 30 00 00 00 mov $0x30,%esi 0.00 : 51e2b6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e2bd: e8 4e ab 27 00 callq 798e10 0.00 : 51e2c2: c7 00 c7 02 00 00 movl $0x2c7,(%rax) : n->is_grant = true; 0.00 : 51e2c8: c6 40 18 01 movb $0x1,0x18(%rax) : n->granted_roles = $2; : n->grantee_roles = $4; : n->admin_opt = $5; : n->grantor = $6; : $$ = (Node*)n; 0.00 : 51e2cc: 49 89 c6 mov %rax,%r14 : GrantRoleStmt: : GRANT privilege_list TO role_list opt_grant_admin_option opt_granted_by : { : GrantRoleStmt *n = makeNode(GrantRoleStmt); : n->is_grant = true; : n->granted_roles = $2; 0.00 : 51e2cf: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e2d6: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 51e2da: 48 89 50 08 mov %rdx,0x8(%rax) : n->grantee_roles = $4; 0.00 : 51e2de: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51e2e2: 48 89 50 10 mov %rdx,0x10(%rax) : n->admin_opt = $5; 0.00 : 51e2e6: 0f b6 53 f8 movzbl -0x8(%rbx),%edx 0.00 : 51e2ea: 88 50 19 mov %dl,0x19(%rax) : n->grantor = $6; 0.00 : 51e2ed: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e2f0: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node*)n; : } : ; 0.00 : 51e2f4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e2fb: e9 80 36 ff ff jmpq 511980 : ; : : function_with_argtypes: : func_name func_args : { : FuncWithArgs *n = makeNode(FuncWithArgs); 0.00 : 51e300: 48 8b 3d 59 c5 69 00 mov 0x69c559(%rip),%rdi # bba860 0.00 : 51e307: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e30c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e313: e8 f8 aa 27 00 callq 798e10 0.00 : 51e318: c7 00 a0 03 00 00 movl $0x3a0,(%rax) : n->funcname = $1; 0.00 : 51e31e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : ; : : function_with_argtypes: : func_name func_args : { : FuncWithArgs *n = makeNode(FuncWithArgs); 0.00 : 51e325: 48 89 c3 mov %rax,%rbx : n->funcname = $1; : n->funcargs = extractArgTypes($2); : $$ = n; 0.00 : 51e328: 49 89 de mov %rbx,%r14 : : function_with_argtypes: : func_name func_args : { : FuncWithArgs *n = makeNode(FuncWithArgs); : n->funcname = $1; 0.00 : 51e32b: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 51e32f: 48 89 43 08 mov %rax,0x8(%rbx) : n->funcargs = extractArgTypes($2); 0.00 : 51e333: 48 8b 39 mov (%rcx),%rdi 0.00 : 51e336: e8 35 27 ff ff callq 510a70 0.00 : 51e33b: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : ; 0.00 : 51e33f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e346: e9 35 36 ff ff jmpq 511980 : ; : : function_with_argtypes_list: : function_with_argtypes { $$ = list_make1($1); } : | function_with_argtypes_list ',' function_with_argtypes : { $$ = lappend($1, $3); } 0.00 : 51e34b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51e352: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51e356: 48 8b 32 mov (%rdx),%rsi 0.00 : 51e359: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e360: e8 1b 3b 0c 00 callq 5e1e80 : ; 0.00 : 51e365: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : function_with_argtypes_list: : function_with_argtypes { $$ = list_make1($1); } : | function_with_argtypes_list ',' function_with_argtypes : { $$ = lappend($1, $3); } 0.00 : 51e36c: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51e36f: e9 0c 36 ff ff jmpq 511980 : WITH GRANT OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : function_with_argtypes_list: : function_with_argtypes { $$ = list_make1($1); } 0.00 : 51e374: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51e37b: 31 f6 xor %esi,%esi 0.00 : 51e37d: 48 8b 38 mov (%rax),%rdi 0.00 : 51e380: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e387: e8 c4 34 0c 00 callq 5e1850 : | function_with_argtypes_list ',' function_with_argtypes 0.00 : 51e38c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : WITH GRANT OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : function_with_argtypes_list: : function_with_argtypes { $$ = list_make1($1); } 0.00 : 51e393: 49 89 c6 mov %rax,%r14 : | function_with_argtypes_list ',' function_with_argtypes 0.00 : 51e396: e9 e5 35 ff ff jmpq 511980 : ; : : : opt_grant_grant_option: : WITH GRANT OPTION { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51e39b: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51e39e: e9 dd 35 ff ff jmpq 511980 : } : ; : : : opt_grant_grant_option: : WITH GRANT OPTION { $$ = TRUE; } 0.00 : 51e3a3: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51e3a6: e9 d5 35 ff ff jmpq 511980 : n->rolname = $1; : $$ = (Node *)n; : } : | GROUP_P RoleId : { : PrivGrantee *n = makeNode(PrivGrantee); 0.00 : 51e3ab: 48 8b 3d ae c4 69 00 mov 0x69c4ae(%rip),%rdi # bba860 0.00 : 51e3b2: be 10 00 00 00 mov $0x10,%esi 0.00 : 51e3b7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e3be: e8 4d aa 27 00 callq 798e10 0.00 : 51e3c3: c7 00 9f 03 00 00 movl $0x39f,(%rax) : /* Treat GROUP PUBLIC as a synonym for PUBLIC */ : if (strcmp($2, "public") == 0) 0.00 : 51e3c9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e3d0: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 51e3d5: bf 75 b1 8d 00 mov $0x8db175,%edi : n->rolname = NULL; : else : n->rolname = $2; : $$ = (Node *)n; 0.00 : 51e3da: 49 89 c6 mov %rax,%r14 : } : | GROUP_P RoleId : { : PrivGrantee *n = makeNode(PrivGrantee); : /* Treat GROUP PUBLIC as a synonym for PUBLIC */ : if (strcmp($2, "public") == 0) 0.00 : 51e3dd: 4c 8b 03 mov (%rbx),%r8 0.00 : 51e3e0: 4c 89 c6 mov %r8,%rsi 0.00 : 51e3e3: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 51e3e5: 40 0f 97 c6 seta %sil 0.00 : 51e3e9: 0f 92 c1 setb %cl : n->rolname = NULL; 0.00 : 51e3ec: 31 d2 xor %edx,%edx 0.00 : 51e3ee: 40 38 ce cmp %cl,%sil 0.00 : 51e3f1: 49 0f 45 d0 cmovne %r8,%rdx 0.00 : 51e3f5: 48 89 50 08 mov %rdx,0x8(%rax) : else : n->rolname = $2; : $$ = (Node *)n; : } : ; 0.00 : 51e3f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e400: e9 7b 35 ff ff jmpq 511980 : | grantee_list ',' grantee { $$ = lappend($1, $3); } : ; : : grantee: RoleId : { : PrivGrantee *n = makeNode(PrivGrantee); 0.00 : 51e405: 48 8b 3d 54 c4 69 00 mov 0x69c454(%rip),%rdi # bba860 0.00 : 51e40c: be 10 00 00 00 mov $0x10,%esi 0.00 : 51e411: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e418: e8 f3 a9 27 00 callq 798e10 0.00 : 51e41d: c7 00 9f 03 00 00 movl $0x39f,(%rax) : /* This hack lets us avoid reserving PUBLIC as a keyword*/ : if (strcmp($1, "public") == 0) 0.00 : 51e423: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e42a: bf 75 b1 8d 00 mov $0x8db175,%edi : n->rolname = NULL; : else : n->rolname = $1; : $$ = (Node *)n; 0.00 : 51e42f: 49 89 c6 mov %rax,%r14 : : grantee: RoleId : { : PrivGrantee *n = makeNode(PrivGrantee); : /* This hack lets us avoid reserving PUBLIC as a keyword*/ : if (strcmp($1, "public") == 0) 0.00 : 51e432: 4c 8b 01 mov (%rcx),%r8 0.00 : 51e435: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 51e43a: 4c 89 c6 mov %r8,%rsi 0.00 : 51e43d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 51e43f: 40 0f 97 c6 seta %sil 0.00 : 51e443: 0f 92 c1 setb %cl : n->rolname = NULL; 0.00 : 51e446: 31 d2 xor %edx,%edx 0.00 : 51e448: 40 38 ce cmp %cl,%sil 0.00 : 51e44b: 49 0f 45 d0 cmovne %r8,%rdx 0.00 : 51e44f: 48 89 50 08 mov %rdx,0x8(%rax) : else : n->rolname = $1; : $$ = (Node *)n; : } : | GROUP_P RoleId 0.00 : 51e453: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e45a: e9 21 35 ff ff jmpq 511980 : ; : : : grantee_list: : grantee { $$ = list_make1($1); } : | grantee_list ',' grantee { $$ = lappend($1, $3); } 0.00 : 51e45f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51e466: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51e46a: 48 8b 32 mov (%rdx),%rsi 0.00 : 51e46d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e474: e8 07 3a 0c 00 callq 5e1e80 : ; 0.00 : 51e479: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : : grantee_list: : grantee { $$ = list_make1($1); } : | grantee_list ',' grantee { $$ = lappend($1, $3); } 0.00 : 51e480: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51e483: e9 f8 34 ff ff jmpq 511980 : } : ; : : : grantee_list: : grantee { $$ = list_make1($1); } 0.00 : 51e488: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51e48f: 31 f6 xor %esi,%esi 0.00 : 51e491: 48 8b 38 mov (%rax),%rdi 0.00 : 51e494: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e49b: e8 b0 33 0c 00 callq 5e1850 : | grantee_list ',' grantee { $$ = lappend($1, $3); } 0.00 : 51e4a0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : : grantee_list: : grantee { $$ = list_make1($1); } 0.00 : 51e4a7: 49 89 c6 mov %rax,%r14 : | grantee_list ',' grantee { $$ = lappend($1, $3); } 0.00 : 51e4aa: e9 d1 34 ff ff jmpq 511980 : n->objs = $5; : $$ = n; : } : | ALL FUNCTIONS IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e4af: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e4b4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e4bb: e8 90 a8 27 00 callq 798d50 : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; 0.00 : 51e4c0: c7 00 01 00 00 00 movl $0x1,(%rax) : n->objtype = ACL_OBJECT_FUNCTION; 0.00 : 51e4c6: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->objs = $5; : $$ = n; 0.00 : 51e4cd: 49 89 c6 mov %rax,%r14 : | ALL FUNCTIONS IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; : n->objtype = ACL_OBJECT_FUNCTION; : n->objs = $5; 0.00 : 51e4d0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e4d7: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e4da: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : ; 0.00 : 51e4de: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e4e5: e9 96 34 ff ff jmpq 511980 : n->objs = $5; : $$ = n; : } : | ALL SEQUENCES IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e4ea: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e4ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e4f6: e8 55 a8 27 00 callq 798d50 : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; 0.00 : 51e4fb: c7 00 01 00 00 00 movl $0x1,(%rax) : n->objtype = ACL_OBJECT_SEQUENCE; 0.00 : 51e501: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->objs = $5; : $$ = n; 0.00 : 51e508: 49 89 c6 mov %rax,%r14 : | ALL SEQUENCES IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; : n->objtype = ACL_OBJECT_SEQUENCE; : n->objs = $5; 0.00 : 51e50b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e512: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e515: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | ALL FUNCTIONS IN_P SCHEMA name_list 0.00 : 51e519: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e520: e9 5b 34 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | ALL TABLES IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e525: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e52a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e531: e8 1a a8 27 00 callq 798d50 : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; 0.00 : 51e536: c7 00 01 00 00 00 movl $0x1,(%rax) : n->objtype = ACL_OBJECT_RELATION; 0.00 : 51e53c: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->objs = $5; : $$ = n; 0.00 : 51e543: 49 89 c6 mov %rax,%r14 : | ALL TABLES IN_P SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_ALL_IN_SCHEMA; : n->objtype = ACL_OBJECT_RELATION; : n->objs = $5; 0.00 : 51e546: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e54d: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e550: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | ALL SEQUENCES IN_P SCHEMA name_list 0.00 : 51e554: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e55b: e9 20 34 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | TYPE_P any_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e560: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e565: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e56c: e8 df a7 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e571: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_TYPE; 0.00 : 51e577: c7 40 04 0c 00 00 00 movl $0xc,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e57e: 49 89 c6 mov %rax,%r14 : | TYPE_P any_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_TYPE; : n->objs = $2; 0.00 : 51e581: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e588: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e58b: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | ALL TABLES IN_P SCHEMA name_list 0.00 : 51e58f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e596: e9 e5 33 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | TABLESPACE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e59b: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e5a0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e5a7: e8 a4 a7 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e5ac: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_TABLESPACE; 0.00 : 51e5b2: c7 40 04 0b 00 00 00 movl $0xb,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e5b9: 49 89 c6 mov %rax,%r14 : | TABLESPACE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_TABLESPACE; : n->objs = $2; 0.00 : 51e5bc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e5c3: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e5c6: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | TYPE_P any_name_list 0.00 : 51e5ca: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e5d1: e9 aa 33 ff ff jmpq 511980 : n->objs = $3; : $$ = n; : } : | SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e5d6: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e5db: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e5e2: e8 69 a7 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e5e7: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_NAMESPACE; 0.00 : 51e5ed: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e5f4: 49 89 c6 mov %rax,%r14 : | SCHEMA name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_NAMESPACE; : n->objs = $2; 0.00 : 51e5f7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e5fe: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e601: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | TABLESPACE name_list 0.00 : 51e605: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e60c: e9 6f 33 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | LARGE_P OBJECT_P NumericOnly_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e611: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e616: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e61d: e8 2e a7 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e622: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_LARGEOBJECT; 0.00 : 51e628: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : n->objs = $3; : $$ = n; 0.00 : 51e62f: 49 89 c6 mov %rax,%r14 : | LARGE_P OBJECT_P NumericOnly_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_LARGEOBJECT; : n->objs = $3; 0.00 : 51e632: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e639: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e63c: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | SCHEMA name_list 0.00 : 51e640: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e647: e9 34 33 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | LANGUAGE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e64c: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e651: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e658: e8 f3 a6 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e65d: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_LANGUAGE; 0.00 : 51e663: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e66a: 49 89 c6 mov %rax,%r14 : | LANGUAGE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_LANGUAGE; : n->objs = $2; 0.00 : 51e66d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e674: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e677: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | LARGE_P OBJECT_P NumericOnly_list 0.00 : 51e67b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e682: e9 f9 32 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | DOMAIN_P any_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e687: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e68c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e693: e8 b8 a6 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e698: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_DOMAIN; 0.00 : 51e69e: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e6a5: 49 89 c6 mov %rax,%r14 : | DOMAIN_P any_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_DOMAIN; : n->objs = $2; 0.00 : 51e6a8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e6af: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e6b2: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | LANGUAGE name_list 0.00 : 51e6b6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e6bd: e9 be 32 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | DATABASE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e6c2: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e6c7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e6ce: e8 7d a6 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e6d3: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_DATABASE; 0.00 : 51e6d9: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e6e0: 49 89 c6 mov %rax,%r14 : | DATABASE name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_DATABASE; : n->objs = $2; 0.00 : 51e6e3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e6ea: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e6ed: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | DOMAIN_P any_name_list 0.00 : 51e6f1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e6f8: e9 83 32 ff ff jmpq 511980 : n->objs = $3; : $$ = n; : } : | FUNCTION function_with_argtypes_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e6fd: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e702: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e709: e8 42 a6 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e70e: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_FUNCTION; 0.00 : 51e714: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e71b: 49 89 c6 mov %rax,%r14 : | FUNCTION function_with_argtypes_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_FUNCTION; : n->objs = $2; 0.00 : 51e71e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e725: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e728: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | DATABASE name_list 0.00 : 51e72c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e733: e9 48 32 ff ff jmpq 511980 : n->objs = $4; : $$ = n; : } : | FOREIGN SERVER name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e738: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e73d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e744: e8 07 a6 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e749: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_FOREIGN_SERVER; 0.00 : 51e74f: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : n->objs = $3; : $$ = n; 0.00 : 51e756: 49 89 c6 mov %rax,%r14 : | FOREIGN SERVER name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_FOREIGN_SERVER; : n->objs = $3; 0.00 : 51e759: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e760: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e763: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | FUNCTION function_with_argtypes_list 0.00 : 51e767: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e76e: e9 0d 32 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | FOREIGN DATA_P WRAPPER name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e773: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e778: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e77f: e8 cc a5 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e784: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_FDW; 0.00 : 51e78a: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->objs = $4; : $$ = n; 0.00 : 51e791: 49 89 c6 mov %rax,%r14 : | FOREIGN DATA_P WRAPPER name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_FDW; : n->objs = $4; 0.00 : 51e794: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e79b: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e79e: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | FOREIGN SERVER name_list 0.00 : 51e7a2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e7a9: e9 d2 31 ff ff jmpq 511980 : n->objs = $2; : $$ = n; : } : | SEQUENCE qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e7ae: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e7b3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e7ba: e8 91 a5 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e7bf: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_SEQUENCE; 0.00 : 51e7c5: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e7cc: 49 89 c6 mov %rax,%r14 : | SEQUENCE qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_SEQUENCE; : n->objs = $2; 0.00 : 51e7cf: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e7d6: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e7d9: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | FOREIGN DATA_P WRAPPER name_list 0.00 : 51e7dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e7e4: e9 97 31 ff ff jmpq 511980 : n->objs = $1; : $$ = n; : } : | TABLE qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e7e9: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e7ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e7f5: e8 56 a5 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e7fa: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_RELATION; 0.00 : 51e800: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->objs = $2; : $$ = n; 0.00 : 51e807: 49 89 c6 mov %rax,%r14 : | TABLE qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_RELATION; : n->objs = $2; 0.00 : 51e80a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e811: 48 8b 16 mov (%rsi),%rdx 0.00 : 51e814: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | SEQUENCE qualified_name_list 0.00 : 51e818: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e81f: e9 5c 31 ff ff jmpq 511980 : * opt_table. You're going to get conflicts. : */ : privilege_target: : qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); 0.00 : 51e824: bf 10 00 00 00 mov $0x10,%edi 0.00 : 51e829: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e830: e8 1b a5 27 00 callq 798d50 : n->targtype = ACL_TARGET_OBJECT; 0.00 : 51e835: c7 00 00 00 00 00 movl $0x0,(%rax) : n->objtype = ACL_OBJECT_RELATION; 0.00 : 51e83b: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->objs = $1; : $$ = n; 0.00 : 51e842: 49 89 c6 mov %rax,%r14 : qualified_name_list : { : PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); : n->targtype = ACL_TARGET_OBJECT; : n->objtype = ACL_OBJECT_RELATION; : n->objs = $1; 0.00 : 51e845: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e84c: 48 8b 13 mov (%rbx),%rdx 0.00 : 51e84f: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | TABLE qualified_name_list 0.00 : 51e853: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e85a: e9 21 31 ff ff jmpq 511980 : n->cols = $2; : $$ = n; : } : | ColId opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e85f: 48 8b 3d fa bf 69 00 mov 0x69bffa(%rip),%rdi # bba860 0.00 : 51e866: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e86b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e872: e8 99 a5 27 00 callq 798e10 0.00 : 51e877: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = $1; 0.00 : 51e87d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cols = $2; : $$ = n; 0.00 : 51e884: 49 89 c6 mov %rax,%r14 : $$ = n; : } : | ColId opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = $1; 0.00 : 51e887: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51e88b: 48 89 50 08 mov %rdx,0x8(%rax) : n->cols = $2; 0.00 : 51e88f: 48 8b 11 mov (%rcx),%rdx 0.00 : 51e892: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = n; : } : ; 0.00 : 51e896: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e89d: e9 de 30 ff ff jmpq 511980 : n->cols = $2; : $$ = n; : } : | CREATE opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e8a2: 48 8b 3d b7 bf 69 00 mov 0x69bfb7(%rip),%rdi # bba860 0.00 : 51e8a9: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e8ae: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e8b5: e8 56 a5 27 00 callq 798e10 0.00 : 51e8ba: 48 89 c3 mov %rax,%rbx 0.00 : 51e8bd: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = pstrdup($1); 0.00 : 51e8c3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->cols = $2; : $$ = n; 0.00 : 51e8ca: 49 89 de mov %rbx,%r14 : $$ = n; : } : | CREATE opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = pstrdup($1); 0.00 : 51e8cd: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 51e8d1: e8 7a a6 27 00 callq 798f50 0.00 : 51e8d6: 48 89 43 08 mov %rax,0x8(%rbx) : n->cols = $2; 0.00 : 51e8da: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51e8e1: 48 8b 02 mov (%rdx),%rax 0.00 : 51e8e4: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | ColId opt_column_list 0.00 : 51e8e8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e8ef: e9 8c 30 ff ff jmpq 511980 : n->cols = $2; : $$ = n; : } : | REFERENCES opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e8f4: 48 8b 3d 65 bf 69 00 mov 0x69bf65(%rip),%rdi # bba860 0.00 : 51e8fb: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e900: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e907: e8 04 a5 27 00 callq 798e10 0.00 : 51e90c: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = pstrdup($1); 0.00 : 51e912: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cols = $2; : $$ = n; : } : | REFERENCES opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e919: 48 89 c3 mov %rax,%rbx : n->priv_name = pstrdup($1); : n->cols = $2; : $$ = n; 0.00 : 51e91c: 49 89 de mov %rbx,%r14 : $$ = n; : } : | REFERENCES opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = pstrdup($1); 0.00 : 51e91f: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 51e923: e8 28 a6 27 00 callq 798f50 0.00 : 51e928: 48 89 43 08 mov %rax,0x8(%rbx) : n->cols = $2; 0.00 : 51e92c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51e933: 48 8b 06 mov (%rsi),%rax 0.00 : 51e936: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | CREATE opt_column_list 0.00 : 51e93a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e941: e9 3a 30 ff ff jmpq 511980 : | privilege_list ',' privilege { $$ = lappend($1, $3); } : ; : : privilege: SELECT opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e946: 48 8b 3d 13 bf 69 00 mov 0x69bf13(%rip),%rdi # bba860 0.00 : 51e94d: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e952: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e959: e8 b2 a4 27 00 callq 798e10 0.00 : 51e95e: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = pstrdup($1); 0.00 : 51e964: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : | privilege_list ',' privilege { $$ = lappend($1, $3); } : ; : : privilege: SELECT opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e96b: 48 89 c3 mov %rax,%rbx : n->priv_name = pstrdup($1); : n->cols = $2; : $$ = n; 0.00 : 51e96e: 49 89 de mov %rbx,%r14 : ; : : privilege: SELECT opt_column_list : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = pstrdup($1); 0.00 : 51e971: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 51e975: e8 d6 a5 27 00 callq 798f50 0.00 : 51e97a: 48 89 43 08 mov %rax,0x8(%rbx) : n->cols = $2; 0.00 : 51e97e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51e985: 48 8b 02 mov (%rdx),%rax 0.00 : 51e988: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | REFERENCES opt_column_list 0.00 : 51e98c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51e993: e9 e8 2f ff ff jmpq 511980 : $$ = list_make1(n); : } : ; : : privilege_list: privilege { $$ = list_make1($1); } : | privilege_list ',' privilege { $$ = lappend($1, $3); } 0.00 : 51e998: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51e99f: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 51e9a3: 48 8b 33 mov (%rbx),%rsi 0.00 : 51e9a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e9ad: e8 ce 34 0c 00 callq 5e1e80 : ; 0.00 : 51e9b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = list_make1(n); : } : ; : : privilege_list: privilege { $$ = list_make1($1); } : | privilege_list ',' privilege { $$ = lappend($1, $3); } 0.00 : 51e9b9: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51e9bc: e9 bf 2f ff ff jmpq 511980 : n->cols = $4; : $$ = list_make1(n); : } : ; : : privilege_list: privilege { $$ = list_make1($1); } 0.00 : 51e9c1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51e9c8: 31 f6 xor %esi,%esi 0.00 : 51e9ca: 48 8b 39 mov (%rcx),%rdi 0.00 : 51e9cd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e9d4: e8 77 2e 0c 00 callq 5e1850 : | privilege_list ',' privilege { $$ = lappend($1, $3); } 0.00 : 51e9d9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : n->cols = $4; : $$ = list_make1(n); : } : ; : : privilege_list: privilege { $$ = list_make1($1); } 0.00 : 51e9e0: 49 89 c6 mov %rax,%r14 : | privilege_list ',' privilege { $$ = lappend($1, $3); } 0.00 : 51e9e3: e9 98 2f ff ff jmpq 511980 : n->cols = $3; : $$ = list_make1(n); : } : | ALL PRIVILEGES '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51e9e8: 48 8b 3d 71 be 69 00 mov 0x69be71(%rip),%rdi # bba860 0.00 : 51e9ef: be 18 00 00 00 mov $0x18,%esi 0.00 : 51e9f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51e9fb: e8 10 a4 27 00 callq 798e10 0.00 : 51ea00: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = NULL; 0.00 : 51ea06: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ea0d: 00 : n->cols = $3; : $$ = list_make1(n); : } : | ALL PRIVILEGES '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51ea0e: 48 89 c7 mov %rax,%rdi : n->priv_name = NULL; : n->cols = $4; 0.00 : 51ea11: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$ = list_make1(n); 0.00 : 51ea18: 31 f6 xor %esi,%esi : } : | ALL PRIVILEGES '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = NULL; : n->cols = $4; 0.00 : 51ea1a: 48 8b 42 f8 mov -0x8(%rdx),%rax 0.00 : 51ea1e: 48 89 47 10 mov %rax,0x10(%rdi) : $$ = list_make1(n); 0.00 : 51ea22: e8 29 2e 0c 00 callq 5e1850 : } : ; 0.00 : 51ea27: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | ALL PRIVILEGES '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = NULL; : n->cols = $4; : $$ = list_make1(n); 0.00 : 51ea2e: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51ea31: e9 4a 2f ff ff jmpq 511980 : { $$ = NIL; } : | ALL PRIVILEGES : { $$ = NIL; } : | ALL '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51ea36: 48 8b 3d 23 be 69 00 mov 0x69be23(%rip),%rdi # bba860 0.00 : 51ea3d: be 18 00 00 00 mov $0x18,%esi 0.00 : 51ea42: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ea49: e8 c2 a3 27 00 callq 798e10 0.00 : 51ea4e: c7 00 a1 03 00 00 movl $0x3a1,(%rax) : n->priv_name = NULL; 0.00 : 51ea54: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ea5b: 00 : { $$ = NIL; } : | ALL PRIVILEGES : { $$ = NIL; } : | ALL '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); 0.00 : 51ea5c: 48 89 c7 mov %rax,%rdi : n->priv_name = NULL; : n->cols = $3; 0.00 : 51ea5f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ea66: 48 8b 46 f8 mov -0x8(%rsi),%rax : $$ = list_make1(n); 0.00 : 51ea6a: 31 f6 xor %esi,%esi : { $$ = NIL; } : | ALL '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = NULL; : n->cols = $3; 0.00 : 51ea6c: 48 89 47 10 mov %rax,0x10(%rdi) : $$ = list_make1(n); 0.00 : 51ea70: e8 db 2d 0c 00 callq 5e1850 : } : | ALL PRIVILEGES '(' columnList ')' 0.00 : 51ea75: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | ALL '(' columnList ')' : { : AccessPriv *n = makeNode(AccessPriv); : n->priv_name = NULL; : n->cols = $3; : $$ = list_make1(n); 0.00 : 51ea7c: 49 89 c6 mov %rax,%r14 : } : | ALL PRIVILEGES '(' columnList ')' 0.00 : 51ea7f: e9 fc 2e ff ff jmpq 511980 : privileges: privilege_list : { $$ = $1; } : | ALL : { $$ = NIL; } : | ALL PRIVILEGES : { $$ = NIL; } 0.00 : 51ea84: 45 31 f6 xor %r14d,%r14d : | ALL '(' columnList ')' 0.00 : 51ea87: e9 f4 2e ff ff jmpq 511980 : : /* either ALL [PRIVILEGES] or a list of individual privileges */ : privileges: privilege_list : { $$ = $1; } : | ALL : { $$ = NIL; } 0.00 : 51ea8c: 45 31 f6 xor %r14d,%r14d : | ALL PRIVILEGES 0.00 : 51ea8f: e9 ec 2e ff ff jmpq 511980 : * production any reserved keywords that need to be usable as privilege names. : */ : : /* either ALL [PRIVILEGES] or a list of individual privileges */ : privileges: privilege_list : { $$ = $1; } 0.00 : 51ea94: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ea9b: 4c 8b 33 mov (%rbx),%r14 : | ALL 0.00 : 51ea9e: e9 dd 2e ff ff jmpq 511980 : $$ = (Node *)n; : } : | REVOKE GRANT OPTION FOR privileges ON privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51eaa3: 48 8b 3d b6 bd 69 00 mov 0x69bdb6(%rip),%rdi # bba860 0.00 : 51eaaa: be 30 00 00 00 mov $0x30,%esi 0.00 : 51eaaf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51eab6: e8 55 a3 27 00 callq 798e10 0.00 : 51eabb: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = false; 0.00 : 51eac1: c6 40 04 00 movb $0x0,0x4(%rax) : n->targtype = ($7)->targtype; : n->objtype = ($7)->objtype; : n->objects = ($7)->objs; : n->grantees = $9; : n->behavior = $10; : $$ = (Node *)n; 0.00 : 51eac5: 49 89 c6 mov %rax,%r14 : | REVOKE GRANT OPTION FOR privileges ON privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = true; 0.00 : 51eac8: c6 40 28 01 movb $0x1,0x28(%rax) : n->privileges = $5; 0.00 : 51eacc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ead3: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51ead7: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ($7)->targtype; 0.00 : 51eadb: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51eadf: 8b 12 mov (%rdx),%edx 0.00 : 51eae1: 89 50 08 mov %edx,0x8(%rax) : n->objtype = ($7)->objtype; 0.00 : 51eae4: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51eae8: 8b 52 04 mov 0x4(%rdx),%edx 0.00 : 51eaeb: 89 50 0c mov %edx,0xc(%rax) : n->objects = ($7)->objs; 0.00 : 51eaee: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51eaf2: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51eaf6: 48 89 50 10 mov %rdx,0x10(%rax) : n->grantees = $9; 0.00 : 51eafa: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51eafe: 48 89 50 20 mov %rdx,0x20(%rax) : n->behavior = $10; 0.00 : 51eb02: 8b 11 mov (%rcx),%edx 0.00 : 51eb04: 89 50 2c mov %edx,0x2c(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51eb07: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51eb0e: e9 6d 2e ff ff jmpq 511980 : : RevokeStmt: : REVOKE privileges ON privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51eb13: 48 8b 3d 46 bd 69 00 mov 0x69bd46(%rip),%rdi # bba860 0.00 : 51eb1a: be 30 00 00 00 mov $0x30,%esi 0.00 : 51eb1f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51eb26: e8 e5 a2 27 00 callq 798e10 0.00 : 51eb2b: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = false; 0.00 : 51eb31: c6 40 04 00 movb $0x0,0x4(%rax) : n->targtype = ($4)->targtype; : n->objtype = ($4)->objtype; : n->objects = ($4)->objs; : n->grantees = $6; : n->behavior = $7; : $$ = (Node *)n; 0.00 : 51eb35: 49 89 c6 mov %rax,%r14 : REVOKE privileges ON privilege_target : FROM grantee_list opt_drop_behavior : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = false; : n->grant_option = false; 0.00 : 51eb38: c6 40 28 00 movb $0x0,0x28(%rax) : n->privileges = $2; 0.00 : 51eb3c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51eb43: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 51eb47: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ($4)->targtype; 0.00 : 51eb4b: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51eb4f: 8b 12 mov (%rdx),%edx 0.00 : 51eb51: 89 50 08 mov %edx,0x8(%rax) : n->objtype = ($4)->objtype; 0.00 : 51eb54: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51eb58: 8b 52 04 mov 0x4(%rdx),%edx 0.00 : 51eb5b: 89 50 0c mov %edx,0xc(%rax) : n->objects = ($4)->objs; 0.00 : 51eb5e: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 51eb62: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51eb66: 48 89 50 10 mov %rdx,0x10(%rax) : n->grantees = $6; 0.00 : 51eb6a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51eb6e: 48 89 50 20 mov %rdx,0x20(%rax) : n->behavior = $7; 0.00 : 51eb72: 8b 16 mov (%rsi),%edx 0.00 : 51eb74: 89 50 2c mov %edx,0x2c(%rax) : $$ = (Node *)n; : } : | REVOKE GRANT OPTION FOR privileges ON privilege_target 0.00 : 51eb77: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51eb7e: e9 fd 2d ff ff jmpq 511980 : *****************************************************************************/ : : GrantStmt: GRANT privileges ON privilege_target TO grantee_list : opt_grant_grant_option : { : GrantStmt *n = makeNode(GrantStmt); 0.00 : 51eb83: 48 8b 3d d6 bc 69 00 mov 0x69bcd6(%rip),%rdi # bba860 0.00 : 51eb8a: be 30 00 00 00 mov $0x30,%esi 0.00 : 51eb8f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51eb96: e8 75 a2 27 00 callq 798e10 0.00 : 51eb9b: c7 00 c6 02 00 00 movl $0x2c6,(%rax) : n->is_grant = true; 0.00 : 51eba1: c6 40 04 01 movb $0x1,0x4(%rax) : n->targtype = ($4)->targtype; : n->objtype = ($4)->objtype; : n->objects = ($4)->objs; : n->grantees = $6; : n->grant_option = $7; : $$ = (Node*)n; 0.00 : 51eba5: 49 89 c6 mov %rax,%r14 : GrantStmt: GRANT privileges ON privilege_target TO grantee_list : opt_grant_grant_option : { : GrantStmt *n = makeNode(GrantStmt); : n->is_grant = true; : n->privileges = $2; 0.00 : 51eba8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ebaf: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 51ebb3: 48 89 50 18 mov %rdx,0x18(%rax) : n->targtype = ($4)->targtype; 0.00 : 51ebb7: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51ebbb: 8b 12 mov (%rdx),%edx 0.00 : 51ebbd: 89 50 08 mov %edx,0x8(%rax) : n->objtype = ($4)->objtype; 0.00 : 51ebc0: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51ebc4: 8b 52 04 mov 0x4(%rdx),%edx 0.00 : 51ebc7: 89 50 0c mov %edx,0xc(%rax) : n->objects = ($4)->objs; 0.00 : 51ebca: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 51ebce: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 51ebd2: 48 89 50 10 mov %rdx,0x10(%rax) : n->grantees = $6; 0.00 : 51ebd6: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 51ebda: 48 89 50 20 mov %rdx,0x20(%rax) : n->grant_option = $7; 0.00 : 51ebde: 0f b6 13 movzbl (%rbx),%edx 0.00 : 51ebe1: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node*)n; : } : ; 0.00 : 51ebe4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ebeb: e9 90 2d ff ff jmpq 511980 : : /* Column identifier --- names that can be column, table, etc names. : */ : ColId: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 51ebf0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ebf7: 48 8b 39 mov (%rcx),%rdi 0.00 : 51ebfa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ec01: e8 4a a3 27 00 callq 798f50 : ; 0.00 : 51ec06: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* Column identifier --- names that can be column, table, etc names. : */ : ColId: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 51ec0d: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51ec10: e9 6b 2d ff ff jmpq 511980 : : /* Type/function identifier --- names that can be type or function names. : */ : type_function_name: IDENT { $$ = $1; } 0.00 : 51ec15: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ec1c: 4c 8b 33 mov (%rbx),%r14 : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 51ec1f: e9 5c 2d ff ff jmpq 511980 0.00 : 51ec24: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ec2b: 48 8b 3e mov (%rsi),%rdi 0.00 : 51ec2e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ec35: e8 16 a3 27 00 callq 798f50 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 51ec3a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* Type/function identifier --- names that can be type or function names. : */ : type_function_name: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 51ec41: 49 89 c6 mov %rax,%r14 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 51ec44: e9 37 2d ff ff jmpq 511980 0.00 : 51ec49: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51ec50: 48 8b 38 mov (%rax),%rdi 0.00 : 51ec53: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ec5a: e8 f1 a2 27 00 callq 798f50 : ; 0.00 : 51ec5f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* Type/function identifier --- names that can be type or function names. : */ : type_function_name: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 51ec66: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51ec69: e9 12 2d ff ff jmpq 511980 : n->howMany = $2; : $$ = (Node *)n; : } : | BACKWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51ec6e: 48 8b 3d eb bb 69 00 mov 0x69bbeb(%rip),%rdi # bba860 0.00 : 51ec75: be 20 00 00 00 mov $0x20,%esi 0.00 : 51ec7a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ec81: e8 8a a1 27 00 callq 798e10 0.00 : 51ec86: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51ec8c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_BACKWARD; : n->howMany = FETCH_ALL; : $$ = (Node *)n; 0.00 : 51ec93: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | BACKWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51ec96: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_BACKWARD; : n->howMany = FETCH_ALL; 0.00 : 51ec99: 48 b9 ff ff ff ff ff movabs $0x7fffffffffffffff,%rcx 0.00 : 51eca0: ff ff 7f : } : | BACKWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; : n->direction = FETCH_BACKWARD; 0.00 : 51eca3: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->howMany = FETCH_ALL; 0.00 : 51ecaa: 48 89 48 08 mov %rcx,0x8(%rax) : $$ = (Node *)n; : } : | BACKWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51ecae: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_BACKWARD; : n->howMany = FETCH_ALL; : $$ = (Node *)n; : } : ; 0.00 : 51ecb2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ecb9: e9 c2 2c ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | BACKWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51ecbe: 48 8b 3d 9b bb 69 00 mov 0x69bb9b(%rip),%rdi # bba860 0.00 : 51ecc5: be 20 00 00 00 mov $0x20,%esi 0.00 : 51ecca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ecd1: e8 3a a1 27 00 callq 798e10 0.00 : 51ecd6: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51ecdc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->direction = FETCH_BACKWARD; : n->howMany = $2; : $$ = (Node *)n; 0.00 : 51ece3: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | BACKWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51ece6: 48 8b 16 mov (%rsi),%rdx : n->direction = FETCH_BACKWARD; 0.00 : 51ece9: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : $$ = (Node *)n; : } : | BACKWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51ecf0: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_BACKWARD; : n->howMany = $2; 0.00 : 51ecf4: 48 63 56 f0 movslq -0x10(%rsi),%rdx 0.00 : 51ecf8: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | BACKWARD ALL opt_from_in cursor_name 0.00 : 51ecfc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ed03: e9 78 2c ff ff jmpq 511980 : opt_or_replace: : OR REPLACE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : func_args: '(' func_args_list ')' { $$ = $2; } 0.00 : 51ed08: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ed0f: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | '(' ')' { $$ = NIL; } 0.00 : 51ed13: e9 68 2c ff ff jmpq 511980 : } : ; : : opt_or_replace: : OR REPLACE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51ed18: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51ed1b: e9 60 2c ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_or_replace: : OR REPLACE { $$ = TRUE; } 0.00 : 51ed20: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51ed23: e9 58 2c ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); 0.00 : 51ed28: 48 8b 3d 31 bb 69 00 mov 0x69bb31(%rip),%rdi # bba860 0.00 : 51ed2f: be 30 00 00 00 mov $0x30,%esi 0.00 : 51ed34: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ed3b: e8 d0 a0 27 00 callq 798e10 0.00 : 51ed40: c7 00 d3 02 00 00 movl $0x2d3,(%rax) : n->replace = $2; 0.00 : 51ed46: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->funcname = $4; : n->parameters = $5; : n->returnType = NULL; : n->options = $6; : n->withClause = $7; : $$ = (Node *)n; 0.00 : 51ed4d: 49 89 c6 mov %rax,%r14 : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; 0.00 : 51ed50: 0f b6 51 d8 movzbl -0x28(%rcx),%edx 0.00 : 51ed54: 88 50 04 mov %dl,0x4(%rax) : n->funcname = $4; 0.00 : 51ed57: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 51ed5b: 48 89 50 08 mov %rdx,0x8(%rax) : n->parameters = $5; 0.00 : 51ed5f: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->returnType = NULL; 0.00 : 51ed63: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 51ed6a: 00 : createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; : n->funcname = $4; : n->parameters = $5; 0.00 : 51ed6b: 48 89 50 10 mov %rdx,0x10(%rax) : n->returnType = NULL; : n->options = $6; 0.00 : 51ed6f: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51ed73: 48 89 50 20 mov %rdx,0x20(%rax) : n->withClause = $7; 0.00 : 51ed77: 48 8b 11 mov (%rcx),%rdx 0.00 : 51ed7a: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51ed7e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ed85: e9 f6 2b ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); 0.00 : 51ed8a: 48 8b 3d cf ba 69 00 mov 0x69bacf(%rip),%rdi # bba860 0.00 : 51ed91: be 30 00 00 00 mov $0x30,%esi 0.00 : 51ed96: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ed9d: e8 6e a0 27 00 callq 798e10 0.00 : 51eda2: c7 00 d3 02 00 00 movl $0x2d3,(%rax) : n->replace = $2; 0.00 : 51eda8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$ = (Node *)n; : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); 0.00 : 51edaf: 48 89 c3 mov %rax,%rbx : n->replace = $2; 0.00 : 51edb2: 0f b6 46 b0 movzbl -0x50(%rsi),%eax : n->funcname = $4; : n->parameters = mergeTableFuncParameters($5, $9); 0.00 : 51edb6: 49 89 f4 mov %rsi,%r12 0.00 : 51edb9: 49 83 ec 18 sub $0x18,%r12 : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; 0.00 : 51edbd: 88 43 04 mov %al,0x4(%rbx) : n->funcname = $4; 0.00 : 51edc0: 48 8b 46 c0 mov -0x40(%rsi),%rax 0.00 : 51edc4: 48 89 43 08 mov %rax,0x8(%rbx) : n->parameters = mergeTableFuncParameters($5, $9); 0.00 : 51edc8: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 51edcf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51edd6: 48 8b 78 c8 mov -0x38(%rax),%rdi 0.00 : 51edda: 48 8b 70 e8 mov -0x18(%rax),%rsi 0.00 : 51edde: 48 85 ff test %rdi,%rdi 0.00 : 51ede1: 0f 84 d1 a2 00 00 je 5290b8 0.00 : 51ede7: 48 8b 57 08 mov 0x8(%rdi),%rdx : mergeTableFuncParameters(List *func_args, List *columns) : { : ListCell *lc; : : /* Explicit OUT and INOUT parameters shouldn't be used in this syntax */ : foreach(lc, func_args) 0.00 : 51edeb: 48 85 d2 test %rdx,%rdx 0.00 : 51edee: 0f 84 c4 a2 00 00 je 5290b8 : { : FunctionParameter *p = (FunctionParameter *) lfirst(lc); : : if (p->mode != FUNC_PARAM_IN && p->mode != FUNC_PARAM_VARIADIC) 0.00 : 51edf4: 48 8b 02 mov (%rdx),%rax 0.00 : 51edf7: 8b 40 18 mov 0x18(%rax),%eax 0.00 : 51edfa: 83 f8 69 cmp $0x69,%eax 0.00 : 51edfd: 0f 84 a8 a2 00 00 je 5290ab 0.00 : 51ee03: 83 f8 76 cmp $0x76,%eax 0.00 : 51ee06: 0f 84 9f a2 00 00 je 5290ab : ereport(ERROR, 0.00 : 51ee0c: 45 31 c0 xor %r8d,%r8d 0.00 : 51ee0f: b9 c0 74 82 00 mov $0x8274c0,%ecx 0.00 : 51ee14: ba c2 36 00 00 mov $0x36c2,%edx 0.00 : 51ee19: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 51ee1e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 51ee23: e8 98 bc 25 00 callq 77aac0 0.00 : 51ee28: 84 c0 test %al,%al 0.00 : 51ee2a: 0f 84 77 31 ff ff je 511fa7 0.00 : 51ee30: bf 98 a0 7c 00 mov $0x7ca098,%edi 0.00 : 51ee35: 31 c0 xor %eax,%eax 0.00 : 51ee37: e8 64 da 25 00 callq 77c8a0 0.00 : 51ee3c: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 51ee41: 89 c3 mov %eax,%ebx 0.00 : 51ee43: e9 65 2a 00 00 jmpq 5218ad 0.00 : 51ee48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 51ee4f: 00 : : CreateFunctionStmt: : CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : RETURNS func_return createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); 0.00 : 51ee50: 48 8b 3d 09 ba 69 00 mov 0x69ba09(%rip),%rdi # bba860 0.00 : 51ee57: be 30 00 00 00 mov $0x30,%esi 0.00 : 51ee5c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ee63: e8 a8 9f 27 00 callq 798e10 0.00 : 51ee68: c7 00 d3 02 00 00 movl $0x2d3,(%rax) : n->replace = $2; 0.00 : 51ee6e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->funcname = $4; : n->parameters = $5; : n->returnType = $7; : n->options = $8; : n->withClause = $9; : $$ = (Node *)n; 0.00 : 51ee75: 49 89 c6 mov %rax,%r14 : CreateFunctionStmt: : CREATE opt_or_replace FUNCTION func_name func_args_with_defaults : RETURNS func_return createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; 0.00 : 51ee78: 0f b6 51 c8 movzbl -0x38(%rcx),%edx 0.00 : 51ee7c: 88 50 04 mov %dl,0x4(%rax) : n->funcname = $4; 0.00 : 51ee7f: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51ee83: 48 89 50 08 mov %rdx,0x8(%rax) : n->parameters = $5; 0.00 : 51ee87: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 51ee8b: 48 89 50 10 mov %rdx,0x10(%rax) : n->returnType = $7; 0.00 : 51ee8f: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 51ee93: 48 89 50 18 mov %rdx,0x18(%rax) : n->options = $8; 0.00 : 51ee97: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51ee9b: 48 89 50 20 mov %rdx,0x20(%rax) : n->withClause = $9; 0.00 : 51ee9f: 48 8b 11 mov (%rcx),%rdx 0.00 : 51eea2: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *)n; : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults 0.00 : 51eea6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51eead: e9 ce 2a ff ff jmpq 511980 : | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } : ; : : opt_nulls_order: NULLS_FIRST { $$ = SORTBY_NULLS_FIRST; } : | NULLS_LAST { $$ = SORTBY_NULLS_LAST; } : | /*EMPTY*/ { $$ = SORTBY_NULLS_DEFAULT; } 0.00 : 51eeb2: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51eeb9: ff ff ff 0.00 : 51eebc: 49 21 c6 and %rax,%r14 : ; 0.00 : 51eebf: e9 bc 2a ff ff jmpq 511980 : | DESC { $$ = SORTBY_DESC; } : | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } : ; : : opt_nulls_order: NULLS_FIRST { $$ = SORTBY_NULLS_FIRST; } : | NULLS_LAST { $$ = SORTBY_NULLS_LAST; } 0.00 : 51eec4: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51eecb: ff ff ff 0.00 : 51eece: 49 21 f6 and %rsi,%r14 0.00 : 51eed1: 49 83 ce 02 or $0x2,%r14 : | /*EMPTY*/ { $$ = SORTBY_NULLS_DEFAULT; } 0.00 : 51eed5: e9 a6 2a ff ff jmpq 511980 : opt_asc_desc: ASC { $$ = SORTBY_ASC; } : | DESC { $$ = SORTBY_DESC; } : | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } : ; : : opt_nulls_order: NULLS_FIRST { $$ = SORTBY_NULLS_FIRST; } 0.00 : 51eeda: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51eee1: ff ff ff 0.00 : 51eee4: 49 21 de and %rbx,%r14 0.00 : 51eee7: 49 83 ce 01 or $0x1,%r14 : | NULLS_LAST { $$ = SORTBY_NULLS_LAST; } 0.00 : 51eeeb: e9 90 2a ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_asc_desc: ASC { $$ = SORTBY_ASC; } : | DESC { $$ = SORTBY_DESC; } : | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } 0.00 : 51eef0: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51eef7: ff ff ff 0.00 : 51eefa: 49 21 ce and %rcx,%r14 : ; 0.00 : 51eefd: e9 7e 2a ff ff jmpq 511980 : | USING any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_asc_desc: ASC { $$ = SORTBY_ASC; } : | DESC { $$ = SORTBY_DESC; } 0.00 : 51ef02: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51ef09: ff ff ff 0.00 : 51ef0c: 49 21 d6 and %rdx,%r14 0.00 : 51ef0f: 49 83 ce 02 or $0x2,%r14 : | /*EMPTY*/ { $$ = SORTBY_DEFAULT; } 0.00 : 51ef13: e9 68 2a ff ff jmpq 511980 : opt_class: any_name { $$ = $1; } : | USING any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_asc_desc: ASC { $$ = SORTBY_ASC; } 0.00 : 51ef18: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51ef1f: ff ff ff 0.00 : 51ef22: 49 21 c6 and %rax,%r14 0.00 : 51ef25: 49 83 ce 01 or $0x1,%r14 : | DESC { $$ = SORTBY_DESC; } 0.00 : 51ef29: e9 52 2a ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_class: any_name { $$ = $1; } : | USING any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51ef2e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51ef31: e9 4a 2a ff ff jmpq 511980 : opt_collate: COLLATE any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_class: any_name { $$ = $1; } : | USING any_name { $$ = $2; } 0.00 : 51ef36: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ef3d: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51ef40: e9 3b 2a ff ff jmpq 511980 : : opt_collate: COLLATE any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opt_class: any_name { $$ = $1; } 0.00 : 51ef45: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51ef4c: 4c 8b 33 mov (%rbx),%r14 : | USING any_name { $$ = $2; } 0.00 : 51ef4f: e9 2c 2a ff ff jmpq 511980 : $$->nulls_ordering = $7; : } : ; : : opt_collate: COLLATE any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51ef54: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51ef57: e9 24 2a ff ff jmpq 511980 : $$->ordering = $6; : $$->nulls_ordering = $7; : } : ; : : opt_collate: COLLATE any_name { $$ = $2; } 0.00 : 51ef5c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ef63: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 51ef66: e9 15 2a ff ff jmpq 511980 : $$->ordering = $4; : $$->nulls_ordering = $5; : } : | '(' a_expr ')' opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51ef6b: 48 8b 3d ee b8 69 00 mov 0x69b8ee(%rip),%rdi # bba860 0.00 : 51ef72: be 38 00 00 00 mov $0x38,%esi 0.00 : 51ef77: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ef7e: e8 8d 9e 27 00 callq 798e10 0.00 : 51ef83: c7 00 97 03 00 00 movl $0x397,(%rax) : $$->name = NULL; 0.00 : 51ef89: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51ef90: 00 : $$->ordering = $4; : $$->nulls_ordering = $5; : } : | '(' a_expr ')' opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51ef91: 49 89 c6 mov %rax,%r14 : $$->name = NULL; : $$->expr = $2; 0.00 : 51ef94: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51ef9b: 48 8b 42 d8 mov -0x28(%rdx),%rax : $$->indexcolname = NULL; 0.00 : 51ef9f: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 51efa6: 00 : } : | '(' a_expr ')' opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); : $$->name = NULL; : $$->expr = $2; 0.00 : 51efa7: 49 89 46 10 mov %rax,0x10(%r14) : $$->indexcolname = NULL; : $$->collation = $4; 0.00 : 51efab: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 51efaf: 49 89 46 20 mov %rax,0x20(%r14) : $$->opclass = $5; 0.00 : 51efb3: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 51efb7: 49 89 46 28 mov %rax,0x28(%r14) : $$->ordering = $6; 0.00 : 51efbb: 8b 42 f8 mov -0x8(%rdx),%eax 0.00 : 51efbe: 41 89 46 30 mov %eax,0x30(%r14) : $$->nulls_ordering = $7; 0.00 : 51efc2: 8b 02 mov (%rdx),%eax 0.00 : 51efc4: 41 89 46 34 mov %eax,0x34(%r14) : } : ; 0.00 : 51efc8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51efcf: e9 ac 29 ff ff jmpq 511980 : $$->ordering = $4; : $$->nulls_ordering = $5; : } : | func_expr_windowless opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51efd4: 48 8b 3d 85 b8 69 00 mov 0x69b885(%rip),%rdi # bba860 0.00 : 51efdb: be 38 00 00 00 mov $0x38,%esi 0.00 : 51efe0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51efe7: e8 24 9e 27 00 callq 798e10 0.00 : 51efec: c7 00 97 03 00 00 movl $0x397,(%rax) : $$->name = NULL; 0.00 : 51eff2: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51eff9: 00 : $$->ordering = $4; : $$->nulls_ordering = $5; : } : | func_expr_windowless opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51effa: 49 89 c6 mov %rax,%r14 : $$->name = NULL; : $$->expr = $1; 0.00 : 51effd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f004: 48 8b 46 e0 mov -0x20(%rsi),%rax : $$->indexcolname = NULL; 0.00 : 51f008: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 51f00f: 00 : } : | func_expr_windowless opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); : $$->name = NULL; : $$->expr = $1; 0.00 : 51f010: 49 89 46 10 mov %rax,0x10(%r14) : $$->indexcolname = NULL; : $$->collation = $2; 0.00 : 51f014: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 51f018: 49 89 46 20 mov %rax,0x20(%r14) : $$->opclass = $3; 0.00 : 51f01c: 48 8b 46 f0 mov -0x10(%rsi),%rax 0.00 : 51f020: 49 89 46 28 mov %rax,0x28(%r14) : $$->ordering = $4; 0.00 : 51f024: 8b 46 f8 mov -0x8(%rsi),%eax 0.00 : 51f027: 41 89 46 30 mov %eax,0x30(%r14) : $$->nulls_ordering = $5; 0.00 : 51f02b: 8b 06 mov (%rsi),%eax 0.00 : 51f02d: 41 89 46 34 mov %eax,0x34(%r14) : } : | '(' a_expr ')' opt_collate opt_class opt_asc_desc opt_nulls_order 0.00 : 51f031: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f038: e9 43 29 ff ff jmpq 511980 : * expressions in parens. For backwards-compatibility reasons, we allow : * an expression that's just a function call to be written without parens. : */ : index_elem: ColId opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51f03d: 48 8b 3d 1c b8 69 00 mov 0x69b81c(%rip),%rdi # bba860 0.00 : 51f044: be 38 00 00 00 mov $0x38,%esi 0.00 : 51f049: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f050: e8 bb 9d 27 00 callq 798e10 0.00 : 51f055: c7 00 97 03 00 00 movl $0x397,(%rax) : $$->name = $1; 0.00 : 51f05b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : * expressions in parens. For backwards-compatibility reasons, we allow : * an expression that's just a function call to be written without parens. : */ : index_elem: ColId opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); 0.00 : 51f062: 49 89 c6 mov %rax,%r14 : $$->name = $1; 0.00 : 51f065: 48 8b 43 e0 mov -0x20(%rbx),%rax : $$->expr = NULL; 0.00 : 51f069: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 51f070: 00 : $$->indexcolname = NULL; 0.00 : 51f071: 49 c7 46 18 00 00 00 movq $0x0,0x18(%r14) 0.00 : 51f078: 00 : * an expression that's just a function call to be written without parens. : */ : index_elem: ColId opt_collate opt_class opt_asc_desc opt_nulls_order : { : $$ = makeNode(IndexElem); : $$->name = $1; 0.00 : 51f079: 49 89 46 08 mov %rax,0x8(%r14) : $$->expr = NULL; : $$->indexcolname = NULL; : $$->collation = $2; 0.00 : 51f07d: 48 8b 43 e8 mov -0x18(%rbx),%rax 0.00 : 51f081: 49 89 46 20 mov %rax,0x20(%r14) : $$->opclass = $3; 0.00 : 51f085: 48 8b 43 f0 mov -0x10(%rbx),%rax 0.00 : 51f089: 49 89 46 28 mov %rax,0x28(%r14) : $$->ordering = $4; 0.00 : 51f08d: 8b 43 f8 mov -0x8(%rbx),%eax 0.00 : 51f090: 41 89 46 30 mov %eax,0x30(%r14) : $$->nulls_ordering = $5; 0.00 : 51f094: 8b 03 mov (%rbx),%eax 0.00 : 51f096: 41 89 46 34 mov %eax,0x34(%r14) : } : | func_expr_windowless opt_collate opt_class opt_asc_desc opt_nulls_order 0.00 : 51f09a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f0a1: e9 da 28 ff ff jmpq 511980 : USING access_method { $$ = $2; } : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } : ; : : index_params: index_elem { $$ = list_make1($1); } : | index_params ',' index_elem { $$ = lappend($1, $3); } 0.00 : 51f0a6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51f0ad: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51f0b1: 48 8b 31 mov (%rcx),%rsi 0.00 : 51f0b4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f0bb: e8 c0 2d 0c 00 callq 5e1e80 : ; 0.00 : 51f0c0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : USING access_method { $$ = $2; } : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } : ; : : index_params: index_elem { $$ = list_make1($1); } : | index_params ',' index_elem { $$ = lappend($1, $3); } 0.00 : 51f0c7: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51f0ca: e9 b1 28 ff ff jmpq 511980 : access_method_clause: : USING access_method { $$ = $2; } : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } : ; : : index_params: index_elem { $$ = list_make1($1); } 0.00 : 51f0cf: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51f0d6: 31 f6 xor %esi,%esi 0.00 : 51f0d8: 48 8b 3a mov (%rdx),%rdi 0.00 : 51f0db: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f0e2: e8 69 27 0c 00 callq 5e1850 : | index_params ',' index_elem { $$ = lappend($1, $3); } 0.00 : 51f0e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : access_method_clause: : USING access_method { $$ = $2; } : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } : ; : : index_params: index_elem { $$ = list_make1($1); } 0.00 : 51f0ee: 49 89 c6 mov %rax,%r14 : | index_params ',' index_elem { $$ = lappend($1, $3); } 0.00 : 51f0f1: e9 8a 28 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : access_method_clause: : USING access_method { $$ = $2; } : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } 0.00 : 51f0f6: 41 be 5e 43 7b 00 mov $0x7b435e,%r14d : ; 0.00 : 51f0fc: e9 7f 28 ff ff jmpq 511980 : index_name { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } : ; : : access_method_clause: : USING access_method { $$ = $2; } 0.00 : 51f101: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51f108: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } 0.00 : 51f10b: e9 70 28 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_index_name: : index_name { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51f110: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51f113: e9 68 28 ff ff jmpq 511980 : CONCURRENTLY { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_index_name: : index_name { $$ = $1; } 0.00 : 51f118: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f11f: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 51f122: e9 59 28 ff ff jmpq 511980 : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_concurrently: : CONCURRENTLY { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51f127: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51f12a: e9 51 28 ff ff jmpq 511980 : UNIQUE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_concurrently: : CONCURRENTLY { $$ = TRUE; } 0.00 : 51f12f: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51f132: e9 49 28 ff ff jmpq 511980 : } : ; : : opt_unique: : UNIQUE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51f137: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 51f13a: e9 41 28 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_unique: : UNIQUE { $$ = TRUE; } 0.00 : 51f13f: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 51f142: e9 39 28 ff ff jmpq 511980 : : IndexStmt: CREATE opt_unique INDEX opt_concurrently opt_index_name : ON qualified_name access_method_clause '(' index_params ')' : opt_reloptions OptTableSpace where_clause : { : IndexStmt *n = makeNode(IndexStmt); 0.00 : 51f147: 48 8b 3d 12 b7 69 00 mov 0x69b712(%rip),%rdi # bba860 0.00 : 51f14e: be 60 00 00 00 mov $0x60,%esi 0.00 : 51f153: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f15a: e8 b1 9c 27 00 callq 798e10 0.00 : 51f15f: c7 00 d2 02 00 00 movl $0x2d2,(%rax) : n->unique = $2; 0.00 : 51f165: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->oldNode = InvalidOid; : n->primary = false; : n->isconstraint = false; : n->deferrable = false; : n->initdeferred = false; : $$ = (Node *)n; 0.00 : 51f16c: 49 89 c6 mov %rax,%r14 : IndexStmt: CREATE opt_unique INDEX opt_concurrently opt_index_name : ON qualified_name access_method_clause '(' index_params ')' : opt_reloptions OptTableSpace where_clause : { : IndexStmt *n = makeNode(IndexStmt); : n->unique = $2; 0.00 : 51f16f: 0f b6 53 a0 movzbl -0x60(%rbx),%edx 0.00 : 51f173: 88 50 58 mov %dl,0x58(%rax) : n->concurrent = $4; 0.00 : 51f176: 0f b6 53 b0 movzbl -0x50(%rbx),%edx 0.00 : 51f17a: 88 50 5d mov %dl,0x5d(%rax) : n->idxname = $5; 0.00 : 51f17d: 48 8b 53 b8 mov -0x48(%rbx),%rdx 0.00 : 51f181: 48 89 50 08 mov %rdx,0x8(%rax) : n->relation = $7; 0.00 : 51f185: 48 8b 53 c8 mov -0x38(%rbx),%rdx 0.00 : 51f189: 48 89 50 10 mov %rdx,0x10(%rax) : n->accessMethod = $8; 0.00 : 51f18d: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 51f191: 48 89 50 18 mov %rdx,0x18(%rax) : n->indexParams = $10; 0.00 : 51f195: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 51f199: 48 89 50 28 mov %rdx,0x28(%rax) : n->options = $12; 0.00 : 51f19d: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51f1a1: 48 89 50 30 mov %rdx,0x30(%rax) : n->tableSpace = $13; 0.00 : 51f1a5: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 51f1a9: 48 89 50 20 mov %rdx,0x20(%rax) : n->whereClause = $14; 0.00 : 51f1ad: 48 8b 13 mov (%rbx),%rdx : n->excludeOpNames = NIL; 0.00 : 51f1b0: 48 c7 40 40 00 00 00 movq $0x0,0x40(%rax) 0.00 : 51f1b7: 00 : n->idxcomment = NULL; 0.00 : 51f1b8: 48 c7 40 48 00 00 00 movq $0x0,0x48(%rax) 0.00 : 51f1bf: 00 : n->indexOid = InvalidOid; 0.00 : 51f1c0: c7 40 50 00 00 00 00 movl $0x0,0x50(%rax) : n->oldNode = InvalidOid; 0.00 : 51f1c7: c7 40 54 00 00 00 00 movl $0x0,0x54(%rax) : n->relation = $7; : n->accessMethod = $8; : n->indexParams = $10; : n->options = $12; : n->tableSpace = $13; : n->whereClause = $14; 0.00 : 51f1ce: 48 89 50 38 mov %rdx,0x38(%rax) : n->excludeOpNames = NIL; : n->idxcomment = NULL; : n->indexOid = InvalidOid; : n->oldNode = InvalidOid; : n->primary = false; 0.00 : 51f1d2: c6 40 59 00 movb $0x0,0x59(%rax) : n->isconstraint = false; 0.00 : 51f1d6: c6 40 5a 00 movb $0x0,0x5a(%rax) : n->deferrable = false; 0.00 : 51f1da: c6 40 5b 00 movb $0x0,0x5b(%rax) : n->initdeferred = false; 0.00 : 51f1de: c6 40 5c 00 movb $0x0,0x5c(%rax) : $$ = (Node *)n; : } : ; 0.00 : 51f1e2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f1e9: e9 92 27 ff ff jmpq 511980 : : defacl_privilege_target: : TABLES { $$ = ACL_OBJECT_RELATION; } : | FUNCTIONS { $$ = ACL_OBJECT_FUNCTION; } : | SEQUENCES { $$ = ACL_OBJECT_SEQUENCE; } : | TYPES_P { $$ = ACL_OBJECT_TYPE; } 0.00 : 51f1ee: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51f1f5: ff ff ff 0.00 : 51f1f8: 49 21 ce and %rcx,%r14 0.00 : 51f1fb: 49 83 ce 0c or $0xc,%r14 : ; 0.00 : 51f1ff: e9 7c 27 ff ff jmpq 511980 : : /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ : arg_class: IN_P { $$ = FUNC_PARAM_IN; } : | OUT_P { $$ = FUNC_PARAM_OUT; } : | INOUT { $$ = FUNC_PARAM_INOUT; } : | IN_P OUT_P { $$ = FUNC_PARAM_INOUT; } 0.00 : 51f204: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51f20b: ff ff ff 0.00 : 51f20e: 49 21 ce and %rcx,%r14 0.00 : 51f211: 49 83 ce 62 or $0x62,%r14 : | VARIADIC { $$ = FUNC_PARAM_VARIADIC; } 0.00 : 51f215: e9 66 27 ff ff jmpq 511980 : ; : : /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ : arg_class: IN_P { $$ = FUNC_PARAM_IN; } : | OUT_P { $$ = FUNC_PARAM_OUT; } : | INOUT { $$ = FUNC_PARAM_INOUT; } 0.00 : 51f21a: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51f221: ff ff ff 0.00 : 51f224: 49 21 d6 and %rdx,%r14 0.00 : 51f227: 49 83 ce 62 or $0x62,%r14 : | IN_P OUT_P { $$ = FUNC_PARAM_INOUT; } 0.00 : 51f22b: e9 50 27 ff ff jmpq 511980 : } : ; : : /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ : arg_class: IN_P { $$ = FUNC_PARAM_IN; } : | OUT_P { $$ = FUNC_PARAM_OUT; } 0.00 : 51f230: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51f237: ff ff ff 0.00 : 51f23a: 49 21 c6 and %rax,%r14 0.00 : 51f23d: 49 83 ce 6f or $0x6f,%r14 : | INOUT { $$ = FUNC_PARAM_INOUT; } 0.00 : 51f241: e9 3a 27 ff ff jmpq 511980 : $$ = n; : } : ; : : /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ : arg_class: IN_P { $$ = FUNC_PARAM_IN; } 0.00 : 51f246: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51f24d: ff ff ff 0.00 : 51f250: 49 21 f6 and %rsi,%r14 0.00 : 51f253: 49 83 ce 69 or $0x69,%r14 : | OUT_P { $$ = FUNC_PARAM_OUT; } 0.00 : 51f257: e9 24 27 ff ff jmpq 511980 : n->defexpr = NULL; : $$ = n; : } : | func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51f25c: 48 8b 3d fd b5 69 00 mov 0x69b5fd(%rip),%rdi # bba860 0.00 : 51f263: be 28 00 00 00 mov $0x28,%esi 0.00 : 51f268: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f26f: e8 9c 9b 27 00 callq 798e10 0.00 : 51f274: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = NULL; 0.00 : 51f27a: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51f281: 00 : n->argType = $1; : n->mode = FUNC_PARAM_IN; : n->defexpr = NULL; : $$ = n; 0.00 : 51f282: 49 89 c6 mov %rax,%r14 : } : | func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = NULL; : n->argType = $1; 0.00 : 51f285: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51f28c: 48 8b 13 mov (%rbx),%rdx : n->mode = FUNC_PARAM_IN; 0.00 : 51f28f: c7 40 18 69 00 00 00 movl $0x69,0x18(%rax) : n->defexpr = NULL; 0.00 : 51f296: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51f29d: 00 : } : | func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = NULL; : n->argType = $1; 0.00 : 51f29e: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = FUNC_PARAM_IN; : n->defexpr = NULL; : $$ = n; : } : ; 0.00 : 51f2a2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f2a9: e9 d2 26 ff ff jmpq 511980 : n->defexpr = NULL; : $$ = n; : } : | arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51f2ae: 48 8b 3d ab b5 69 00 mov 0x69b5ab(%rip),%rdi # bba860 0.00 : 51f2b5: be 28 00 00 00 mov $0x28,%esi 0.00 : 51f2ba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f2c1: e8 4a 9b 27 00 callq 798e10 0.00 : 51f2c6: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = NULL; 0.00 : 51f2cc: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 51f2d3: 00 : n->argType = $2; : n->mode = $1; : n->defexpr = NULL; : $$ = n; 0.00 : 51f2d4: 49 89 c6 mov %rax,%r14 : } : | arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = NULL; : n->argType = $2; 0.00 : 51f2d7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51f2de: 48 8b 11 mov (%rcx),%rdx 0.00 : 51f2e1: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = $1; 0.00 : 51f2e5: 8b 51 f8 mov -0x8(%rcx),%edx : n->defexpr = NULL; 0.00 : 51f2e8: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51f2ef: 00 : | arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = NULL; : n->argType = $2; : n->mode = $1; 0.00 : 51f2f0: 89 50 18 mov %edx,0x18(%rax) : n->defexpr = NULL; : $$ = n; : } : | func_type 0.00 : 51f2f3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f2fa: e9 81 26 ff ff jmpq 511980 : n->defexpr = NULL; : $$ = n; : } : | param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51f2ff: 48 8b 3d 5a b5 69 00 mov 0x69b55a(%rip),%rdi # bba860 0.00 : 51f306: be 28 00 00 00 mov $0x28,%esi 0.00 : 51f30b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f312: e8 f9 9a 27 00 callq 798e10 0.00 : 51f317: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = $1; 0.00 : 51f31d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->argType = $2; : n->mode = FUNC_PARAM_IN; : n->defexpr = NULL; : $$ = n; 0.00 : 51f324: 49 89 c6 mov %rax,%r14 : $$ = n; : } : | param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; 0.00 : 51f327: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 51f32b: 48 89 50 08 mov %rdx,0x8(%rax) : n->argType = $2; 0.00 : 51f32f: 48 8b 16 mov (%rsi),%rdx : n->mode = FUNC_PARAM_IN; 0.00 : 51f332: c7 40 18 69 00 00 00 movl $0x69,0x18(%rax) : n->defexpr = NULL; 0.00 : 51f339: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51f340: 00 : } : | param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; : n->argType = $2; 0.00 : 51f341: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = FUNC_PARAM_IN; : n->defexpr = NULL; : $$ = n; : } : | arg_class func_type 0.00 : 51f345: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f34c: e9 2f 26 ff ff jmpq 511980 : n->defexpr = NULL; : $$ = n; : } : | param_name arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51f351: 48 8b 3d 08 b5 69 00 mov 0x69b508(%rip),%rdi # bba860 0.00 : 51f358: be 28 00 00 00 mov $0x28,%esi 0.00 : 51f35d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f364: e8 a7 9a 27 00 callq 798e10 0.00 : 51f369: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = $1; 0.00 : 51f36f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->argType = $3; : n->mode = $2; : n->defexpr = NULL; : $$ = n; 0.00 : 51f376: 49 89 c6 mov %rax,%r14 : $$ = n; : } : | param_name arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; 0.00 : 51f379: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 51f37d: 48 89 50 08 mov %rdx,0x8(%rax) : n->argType = $3; 0.00 : 51f381: 48 8b 13 mov (%rbx),%rdx 0.00 : 51f384: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = $2; 0.00 : 51f388: 8b 53 f8 mov -0x8(%rbx),%edx : n->defexpr = NULL; 0.00 : 51f38b: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51f392: 00 : | param_name arg_class func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $1; : n->argType = $3; : n->mode = $2; 0.00 : 51f393: 89 50 18 mov %edx,0x18(%rax) : n->defexpr = NULL; : $$ = n; : } : | param_name func_type 0.00 : 51f396: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f39d: e9 de 25 ff ff jmpq 511980 : * - thomas 2000-03-22 : */ : func_arg: : arg_class param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); 0.00 : 51f3a2: 48 8b 3d b7 b4 69 00 mov 0x69b4b7(%rip),%rdi # bba860 0.00 : 51f3a9: be 28 00 00 00 mov $0x28,%esi 0.00 : 51f3ae: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f3b5: e8 56 9a 27 00 callq 798e10 0.00 : 51f3ba: c7 00 a4 03 00 00 movl $0x3a4,(%rax) : n->name = $2; 0.00 : 51f3c0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->argType = $3; : n->mode = $1; : n->defexpr = NULL; : $$ = n; 0.00 : 51f3c7: 49 89 c6 mov %rax,%r14 : */ : func_arg: : arg_class param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $2; 0.00 : 51f3ca: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 51f3ce: 48 89 50 08 mov %rdx,0x8(%rax) : n->argType = $3; 0.00 : 51f3d2: 48 8b 11 mov (%rcx),%rdx 0.00 : 51f3d5: 48 89 50 10 mov %rdx,0x10(%rax) : n->mode = $1; 0.00 : 51f3d9: 8b 51 f0 mov -0x10(%rcx),%edx : n->defexpr = NULL; 0.00 : 51f3dc: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 51f3e3: 00 : arg_class param_name func_type : { : FunctionParameter *n = makeNode(FunctionParameter); : n->name = $2; : n->argType = $3; : n->mode = $1; 0.00 : 51f3e4: 89 50 18 mov %edx,0x18(%rax) : n->defexpr = NULL; : $$ = n; : } : | param_name arg_class func_type 0.00 : 51f3e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f3ee: e9 8d 25 ff ff jmpq 511980 : ; : : func_args_with_defaults_list: : func_arg_with_default { $$ = list_make1($1); } : | func_args_with_defaults_list ',' func_arg_with_default : { $$ = lappend($1, $3); } 0.00 : 51f3f3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f3fa: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 51f3fe: 48 8b 36 mov (%rsi),%rsi 0.00 : 51f401: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f408: e8 73 2a 0c 00 callq 5e1e80 : ; 0.00 : 51f40d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : func_args_with_defaults_list: : func_arg_with_default { $$ = list_make1($1); } : | func_args_with_defaults_list ',' func_arg_with_default : { $$ = lappend($1, $3); } 0.00 : 51f414: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51f417: e9 64 25 ff ff jmpq 511980 : '(' func_args_with_defaults_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } : ; : : func_args_with_defaults_list: : func_arg_with_default { $$ = list_make1($1); } 0.00 : 51f41c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51f423: 31 f6 xor %esi,%esi 0.00 : 51f425: 48 8b 3b mov (%rbx),%rdi 0.00 : 51f428: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f42f: e8 1c 24 0c 00 callq 5e1850 : | func_args_with_defaults_list ',' func_arg_with_default 0.00 : 51f434: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : '(' func_args_with_defaults_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } : ; : : func_args_with_defaults_list: : func_arg_with_default { $$ = list_make1($1); } 0.00 : 51f43b: 49 89 c6 mov %rax,%r14 : | func_args_with_defaults_list ',' func_arg_with_default 0.00 : 51f43e: e9 3d 25 ff ff jmpq 511980 : * func_args_with_defaults is separate because we only want to accept : * defaults in CREATE FUNCTION, not in ALTER etc. : */ : func_args_with_defaults: : '(' func_args_with_defaults_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } 0.00 : 51f443: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51f446: e9 35 25 ff ff jmpq 511980 : /* : * func_args_with_defaults is separate because we only want to accept : * defaults in CREATE FUNCTION, not in ALTER etc. : */ : func_args_with_defaults: : '(' func_args_with_defaults_list ')' { $$ = $2; } 0.00 : 51f44b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51f452: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : | '(' ')' { $$ = NIL; } 0.00 : 51f456: e9 25 25 ff ff jmpq 511980 : | '(' ')' { $$ = NIL; } : ; : : func_args_list: : func_arg { $$ = list_make1($1); } : | func_args_list ',' func_arg { $$ = lappend($1, $3); } 0.00 : 51f45b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51f462: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51f466: 48 8b 32 mov (%rdx),%rsi 0.00 : 51f469: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f470: e8 0b 2a 0c 00 callq 5e1e80 : ; 0.00 : 51f475: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '(' ')' { $$ = NIL; } : ; : : func_args_list: : func_arg { $$ = list_make1($1); } : | func_args_list ',' func_arg { $$ = lappend($1, $3); } 0.00 : 51f47c: 49 89 c6 mov %rax,%r14 : ; 0.00 : 51f47f: e9 fc 24 ff ff jmpq 511980 : func_args: '(' func_args_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } : ; : : func_args_list: : func_arg { $$ = list_make1($1); } 0.00 : 51f484: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51f48b: 31 f6 xor %esi,%esi 0.00 : 51f48d: 48 8b 38 mov (%rax),%rdi 0.00 : 51f490: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f497: e8 b4 23 0c 00 callq 5e1850 : | func_args_list ',' func_arg { $$ = lappend($1, $3); } 0.00 : 51f49c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : func_args: '(' func_args_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } : ; : : func_args_list: : func_arg { $$ = list_make1($1); } 0.00 : 51f4a3: 49 89 c6 mov %rax,%r14 : | func_args_list ',' func_arg { $$ = lappend($1, $3); } 0.00 : 51f4a6: e9 d5 24 ff ff jmpq 511980 : OR REPLACE { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : func_args: '(' func_args_list ')' { $$ = $2; } : | '(' ')' { $$ = NIL; } 0.00 : 51f4ab: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51f4ae: e9 cd 24 ff ff jmpq 511980 : * is next best choice. : */ : func_type: Typename { $$ = $1; } : | type_function_name attrs '%' TYPE_P : { : $$ = makeTypeNameFromNameList(lcons(makeString($1), $2)); 0.00 : 51f4b3: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51f4ba: 48 8b 5a f0 mov -0x10(%rdx),%rbx 0.00 : 51f4be: 48 8b 7a e8 mov -0x18(%rdx),%rdi 0.00 : 51f4c2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f4c9: e8 22 02 0e 00 callq 5ff6f0 0.00 : 51f4ce: 48 89 de mov %rbx,%rsi 0.00 : 51f4d1: 48 89 c7 mov %rax,%rdi 0.00 : 51f4d4: e8 77 23 0c 00 callq 5e1850 0.00 : 51f4d9: 48 89 c7 mov %rax,%rdi 0.00 : 51f4dc: e8 4f 21 0d 00 callq 5f1630 : $$->pct_type = true; 0.00 : 51f4e1: c6 40 15 01 movb $0x1,0x15(%rax) : $$->location = @1; 0.00 : 51f4e5: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : * is next best choice. : */ : func_type: Typename { $$ = $1; } : | type_function_name attrs '%' TYPE_P : { : $$ = makeTypeNameFromNameList(lcons(makeString($1), $2)); 0.00 : 51f4ec: 49 89 c6 mov %rax,%r14 : $$->pct_type = true; : $$->location = @1; 0.00 : 51f4ef: 8b 41 f4 mov -0xc(%rcx),%eax 0.00 : 51f4f2: 41 89 46 30 mov %eax,0x30(%r14) : } : | SETOF type_function_name attrs '%' TYPE_P 0.00 : 51f4f6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f4fd: e9 7e 24 ff ff jmpq 511980 : /* : * We would like to make the %TYPE productions here be ColId attrs etc, : * but that causes reduce/reduce conflicts. type_function_name : * is next best choice. : */ : func_type: Typename { $$ = $1; } 0.00 : 51f502: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 51f509: 4c 8b 30 mov (%rax),%r14 : | type_function_name attrs '%' TYPE_P 0.00 : 51f50c: e9 6f 24 ff ff jmpq 511980 : { : /* We can catch over-specified results here if we want to, : * but for now better to silently swallow typmod, etc. : * - thomas 2000-03-22 : */ : $$ = $1; 0.00 : 51f511: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f518: 4c 8b 36 mov (%rsi),%r14 : } : ; 0.00 : 51f51b: e9 60 24 ff ff jmpq 511980 : /* INOUT is SQL99 standard, IN OUT is for Oracle compatibility */ : arg_class: IN_P { $$ = FUNC_PARAM_IN; } : | OUT_P { $$ = FUNC_PARAM_OUT; } : | INOUT { $$ = FUNC_PARAM_INOUT; } : | IN_P OUT_P { $$ = FUNC_PARAM_INOUT; } : | VARIADIC { $$ = FUNC_PARAM_VARIADIC; } 0.00 : 51f520: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51f527: ff ff ff 0.00 : 51f52a: 49 21 de and %rbx,%r14 0.00 : 51f52d: 49 83 ce 76 or $0x76,%r14 : ; 0.00 : 51f531: e9 4a 24 ff ff jmpq 511980 : ; : : func_arg_with_default: : func_arg : { : $$ = $1; 0.00 : 51f536: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51f53d: 4c 8b 31 mov (%rcx),%r14 : } : | func_arg DEFAULT a_expr 0.00 : 51f540: e9 3b 24 ff ff jmpq 511980 : $$->pct_type = true; : $$->location = @1; : } : | SETOF type_function_name attrs '%' TYPE_P : { : $$ = makeTypeNameFromNameList(lcons(makeString($2), $3)); 0.00 : 51f545: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f54c: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51f550: 48 8b 5e f0 mov -0x10(%rsi),%rbx 0.00 : 51f554: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f55b: e8 90 01 0e 00 callq 5ff6f0 0.00 : 51f560: 48 89 de mov %rbx,%rsi 0.00 : 51f563: 48 89 c7 mov %rax,%rdi 0.00 : 51f566: e8 e5 22 0c 00 callq 5e1850 0.00 : 51f56b: 48 89 c7 mov %rax,%rdi 0.00 : 51f56e: e8 bd 20 0d 00 callq 5f1630 : $$->pct_type = true; 0.00 : 51f573: c6 40 15 01 movb $0x1,0x15(%rax) : $$->setof = TRUE; 0.00 : 51f577: c6 40 14 01 movb $0x1,0x14(%rax) : $$->pct_type = true; : $$->location = @1; : } : | SETOF type_function_name attrs '%' TYPE_P : { : $$ = makeTypeNameFromNameList(lcons(makeString($2), $3)); 0.00 : 51f57b: 49 89 c6 mov %rax,%r14 : $$->pct_type = true; : $$->setof = TRUE; : $$->location = @2; 0.00 : 51f57e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 51f585: 8b 42 f4 mov -0xc(%rdx),%eax 0.00 : 51f588: 41 89 46 30 mov %eax,0x30(%r14) : } : ; 0.00 : 51f58c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f593: e9 e8 23 ff ff jmpq 511980 : n->howMany = FETCH_ALL; : $$ = (Node *)n; : } : | BACKWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f598: 48 8b 3d c1 b2 69 00 mov 0x69b2c1(%rip),%rdi # bba860 0.00 : 51f59f: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f5a4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f5ab: e8 60 98 27 00 callq 798e10 0.00 : 51f5b0: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f5b6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->direction = FETCH_BACKWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f5bd: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | BACKWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f5c0: 48 8b 13 mov (%rbx),%rdx : n->direction = FETCH_BACKWARD; 0.00 : 51f5c3: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->howMany = 1; 0.00 : 51f5ca: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f5d1: 00 : $$ = (Node *)n; : } : | BACKWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f5d2: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_BACKWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | BACKWARD SignedIconst opt_from_in cursor_name 0.00 : 51f5d6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f5dd: e9 9e 23 ff ff jmpq 511980 : n->howMany = $2; : $$ = (Node *)n; : } : | FORWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f5e2: 48 8b 3d 77 b2 69 00 mov 0x69b277(%rip),%rdi # bba860 0.00 : 51f5e9: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f5ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f5f5: e8 16 98 27 00 callq 798e10 0.00 : 51f5fa: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51f600: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_FORWARD; : n->howMany = FETCH_ALL; 0.00 : 51f607: 48 be ff ff ff ff ff movabs $0x7fffffffffffffff,%rsi 0.00 : 51f60e: ff ff 7f : $$ = (Node *)n; 0.00 : 51f611: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | FORWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f614: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f617: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = FETCH_ALL; 0.00 : 51f61e: 48 89 70 08 mov %rsi,0x8(%rax) : $$ = (Node *)n; : } : | FORWARD ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f622: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = FETCH_ALL; : $$ = (Node *)n; : } : | BACKWARD opt_from_in cursor_name 0.00 : 51f626: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f62d: e9 4e 23 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | FORWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f632: 48 8b 3d 27 b2 69 00 mov 0x69b227(%rip),%rdi # bba860 0.00 : 51f639: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f63e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f645: e8 c6 97 27 00 callq 798e10 0.00 : 51f64a: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51f650: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->direction = FETCH_FORWARD; : n->howMany = $2; : $$ = (Node *)n; 0.00 : 51f657: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | FORWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f65a: 48 8b 16 mov (%rsi),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f65d: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : $$ = (Node *)n; : } : | FORWARD SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f664: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = $2; 0.00 : 51f668: 48 63 56 f0 movslq -0x10(%rsi),%rdx 0.00 : 51f66c: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | FORWARD ALL opt_from_in cursor_name 0.00 : 51f670: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f677: e9 04 23 ff ff jmpq 511980 : n->howMany = FETCH_ALL; : $$ = (Node *)n; : } : | FORWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f67c: 48 8b 3d dd b1 69 00 mov 0x69b1dd(%rip),%rdi # bba860 0.00 : 51f683: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f688: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f68f: e8 7c 97 27 00 callq 798e10 0.00 : 51f694: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f69a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f6a1: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | FORWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f6a4: 48 8b 13 mov (%rbx),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f6a7: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = 1; 0.00 : 51f6ae: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f6b5: 00 : $$ = (Node *)n; : } : | FORWARD opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f6b6: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | FORWARD SignedIconst opt_from_in cursor_name 0.00 : 51f6ba: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f6c1: e9 ba 22 ff ff jmpq 511980 : n->howMany = $1; : $$ = (Node *)n; : } : | ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f6c6: 48 8b 3d 93 b1 69 00 mov 0x69b193(%rip),%rdi # bba860 0.00 : 51f6cd: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f6d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f6d9: e8 32 97 27 00 callq 798e10 0.00 : 51f6de: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f6e4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_FORWARD; : n->howMany = FETCH_ALL; 0.00 : 51f6eb: 48 bf ff ff ff ff ff movabs $0x7fffffffffffffff,%rdi 0.00 : 51f6f2: ff ff 7f : $$ = (Node *)n; 0.00 : 51f6f5: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f6f8: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f6fb: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = FETCH_ALL; 0.00 : 51f702: 48 89 78 08 mov %rdi,0x8(%rax) : $$ = (Node *)n; : } : | ALL opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f706: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = FETCH_ALL; : $$ = (Node *)n; : } : | FORWARD opt_from_in cursor_name 0.00 : 51f70a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f711: e9 6a 22 ff ff jmpq 511980 : n->howMany = $2; : $$ = (Node *)n; : } : | SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f716: 48 8b 3d 43 b1 69 00 mov 0x69b143(%rip),%rdi # bba860 0.00 : 51f71d: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f722: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f729: e8 e2 96 27 00 callq 798e10 0.00 : 51f72e: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f734: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->direction = FETCH_FORWARD; : n->howMany = $1; : $$ = (Node *)n; 0.00 : 51f73b: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f73e: 48 8b 16 mov (%rsi),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f741: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : $$ = (Node *)n; : } : | SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f748: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = $1; 0.00 : 51f74c: 48 63 56 f0 movslq -0x10(%rsi),%rdx 0.00 : 51f750: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | ALL opt_from_in cursor_name 0.00 : 51f754: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f75b: e9 20 22 ff ff jmpq 511980 : n->howMany = $2; : $$ = (Node *)n; : } : | RELATIVE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f760: 48 8b 3d f9 b0 69 00 mov 0x69b0f9(%rip),%rdi # bba860 0.00 : 51f767: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f76c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f773: e8 98 96 27 00 callq 798e10 0.00 : 51f778: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51f77e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->direction = FETCH_RELATIVE; : n->howMany = $2; : $$ = (Node *)n; 0.00 : 51f785: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | RELATIVE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f788: 48 8b 13 mov (%rbx),%rdx : n->direction = FETCH_RELATIVE; 0.00 : 51f78b: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : $$ = (Node *)n; : } : | RELATIVE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f792: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_RELATIVE; : n->howMany = $2; 0.00 : 51f796: 48 63 53 f0 movslq -0x10(%rbx),%rdx 0.00 : 51f79a: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | SignedIconst opt_from_in cursor_name 0.00 : 51f79e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f7a5: e9 d6 21 ff ff jmpq 511980 : n->howMany = -1; : $$ = (Node *)n; : } : | ABSOLUTE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f7aa: 48 8b 3d af b0 69 00 mov 0x69b0af(%rip),%rdi # bba860 0.00 : 51f7b1: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f7b6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f7bd: e8 4e 96 27 00 callq 798e10 0.00 : 51f7c2: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $4; 0.00 : 51f7c8: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_ABSOLUTE; : n->howMany = $2; : $$ = (Node *)n; 0.00 : 51f7cf: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ABSOLUTE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f7d2: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_ABSOLUTE; 0.00 : 51f7d5: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : $$ = (Node *)n; : } : | ABSOLUTE_P SignedIconst opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $4; 0.00 : 51f7dc: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_ABSOLUTE; : n->howMany = $2; 0.00 : 51f7e0: 48 63 51 f0 movslq -0x10(%rcx),%rdx 0.00 : 51f7e4: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | RELATIVE_P SignedIconst opt_from_in cursor_name 0.00 : 51f7e8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f7ef: e9 8c 21 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | LAST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f7f4: 48 8b 3d 65 b0 69 00 mov 0x69b065(%rip),%rdi # bba860 0.00 : 51f7fb: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f800: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f807: e8 04 96 27 00 callq 798e10 0.00 : 51f80c: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f812: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->direction = FETCH_ABSOLUTE; : n->howMany = -1; : $$ = (Node *)n; 0.00 : 51f819: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | LAST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f81c: 48 8b 16 mov (%rsi),%rdx : n->direction = FETCH_ABSOLUTE; 0.00 : 51f81f: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->howMany = -1; 0.00 : 51f826: 48 c7 40 08 ff ff ff movq $0xffffffffffffffff,0x8(%rax) 0.00 : 51f82d: ff : $$ = (Node *)n; : } : | LAST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f82e: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_ABSOLUTE; : n->howMany = -1; : $$ = (Node *)n; : } : | ABSOLUTE_P SignedIconst opt_from_in cursor_name 0.00 : 51f832: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f839: e9 42 21 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | FIRST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f83e: 48 8b 3d 1b b0 69 00 mov 0x69b01b(%rip),%rdi # bba860 0.00 : 51f845: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f84a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f851: e8 ba 95 27 00 callq 798e10 0.00 : 51f856: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f85c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->direction = FETCH_ABSOLUTE; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f863: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | FIRST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f866: 48 8b 13 mov (%rbx),%rdx : n->direction = FETCH_ABSOLUTE; 0.00 : 51f869: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->howMany = 1; 0.00 : 51f870: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f877: 00 : $$ = (Node *)n; : } : | FIRST_P opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f878: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_ABSOLUTE; : n->howMany = 1; : $$ = (Node *)n; : } : | LAST_P opt_from_in cursor_name 0.00 : 51f87c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f883: e9 f8 20 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | PRIOR opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f888: 48 8b 3d d1 af 69 00 mov 0x69afd1(%rip),%rdi # bba860 0.00 : 51f88f: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f894: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f89b: e8 70 95 27 00 callq 798e10 0.00 : 51f8a0: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f8a6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_BACKWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f8ad: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | PRIOR opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f8b0: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_BACKWARD; 0.00 : 51f8b3: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->howMany = 1; 0.00 : 51f8ba: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f8c1: 00 : $$ = (Node *)n; : } : | PRIOR opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f8c2: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_BACKWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | FIRST_P opt_from_in cursor_name 0.00 : 51f8c6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f8cd: e9 ae 20 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | NEXT opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f8d2: 48 8b 3d 87 af 69 00 mov 0x69af87(%rip),%rdi # bba860 0.00 : 51f8d9: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f8de: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f8e5: e8 26 95 27 00 callq 798e10 0.00 : 51f8ea: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $3; 0.00 : 51f8f0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f8f7: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | NEXT opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f8fa: 48 8b 16 mov (%rsi),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f8fd: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = 1; 0.00 : 51f904: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f90b: 00 : $$ = (Node *)n; : } : | NEXT opt_from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $3; 0.00 : 51f90c: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | PRIOR opt_from_in cursor_name 0.00 : 51f910: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f917: e9 64 20 ff ff jmpq 511980 : n->howMany = 1; : $$ = (Node *)n; : } : | from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f91c: 48 8b 3d 3d af 69 00 mov 0x69af3d(%rip),%rdi # bba860 0.00 : 51f923: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f928: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f92f: e8 dc 94 27 00 callq 798e10 0.00 : 51f934: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $2; 0.00 : 51f93a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f941: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $2; 0.00 : 51f944: 48 8b 13 mov (%rbx),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f947: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = 1; 0.00 : 51f94e: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f955: 00 : $$ = (Node *)n; : } : | from_in cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $2; 0.00 : 51f956: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | NEXT opt_from_in cursor_name 0.00 : 51f95a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f961: e9 1a 20 ff ff jmpq 511980 : } : ; : : fetch_args: cursor_name : { : FetchStmt *n = makeNode(FetchStmt); 0.00 : 51f966: 48 8b 3d f3 ae 69 00 mov 0x69aef3(%rip),%rdi # bba860 0.00 : 51f96d: be 20 00 00 00 mov $0x20,%esi 0.00 : 51f972: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51f979: e8 92 94 27 00 callq 798e10 0.00 : 51f97e: c7 00 d1 02 00 00 movl $0x2d1,(%rax) : n->portalname = $1; 0.00 : 51f984: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; 0.00 : 51f98b: 49 89 c6 mov %rax,%r14 : ; : : fetch_args: cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $1; 0.00 : 51f98e: 48 8b 11 mov (%rcx),%rdx : n->direction = FETCH_FORWARD; 0.00 : 51f991: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->howMany = 1; 0.00 : 51f998: 48 c7 40 08 01 00 00 movq $0x1,0x8(%rax) 0.00 : 51f99f: 00 : ; : : fetch_args: cursor_name : { : FetchStmt *n = makeNode(FetchStmt); : n->portalname = $1; 0.00 : 51f9a0: 48 89 50 10 mov %rdx,0x10(%rax) : n->direction = FETCH_FORWARD; : n->howMany = 1; : $$ = (Node *)n; : } : | from_in cursor_name 0.00 : 51f9a4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51f9ab: e9 d0 1f ff ff jmpq 511980 : n->ismove = FALSE; : $$ = (Node *)n; : } : | MOVE fetch_args : { : FetchStmt *n = (FetchStmt *) $2; 0.00 : 51f9b0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51f9b7: 48 8b 02 mov (%rdx),%rax : n->ismove = TRUE; 0.00 : 51f9ba: c6 40 18 01 movb $0x1,0x18(%rax) : $$ = (Node *)n; 0.00 : 51f9be: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 51f9c1: e9 ba 1f ff ff jmpq 511980 : * : *****************************************************************************/ : : FetchStmt: FETCH fetch_args : { : FetchStmt *n = (FetchStmt *) $2; 0.00 : 51f9c6: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51f9cd: 48 8b 06 mov (%rsi),%rax : n->ismove = FALSE; 0.00 : 51f9d0: c6 40 18 00 movb $0x0,0x18(%rax) : $$ = (Node *)n; 0.00 : 51f9d4: 49 89 c6 mov %rax,%r14 : } : | MOVE fetch_args 0.00 : 51f9d7: e9 a4 1f ff ff jmpq 511980 : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : ; : : security_label: Sconst { $$ = $1; } : | NULL_P { $$ = NULL; } 0.00 : 51f9dc: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51f9df: e9 9c 1f ff ff jmpq 511980 : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : ; : : security_label: Sconst { $$ = $1; } 0.00 : 51f9e4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 51f9eb: 4c 8b 33 mov (%rbx),%r14 : | NULL_P { $$ = NULL; } 0.00 : 51f9ee: e9 8d 1f ff ff jmpq 511980 : | DOMAIN_P { $$ = OBJECT_TYPE; } : | ROLE { $$ = OBJECT_ROLE; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 51f9f3: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51f9fa: ff ff ff 0.00 : 51f9fd: 49 21 ce and %rcx,%r14 0.00 : 51fa00: 49 83 ce 12 or $0x12,%r14 : ; 0.00 : 51fa04: e9 77 1f ff ff jmpq 511980 : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_TYPE; } : | ROLE { $$ = OBJECT_ROLE; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 51fa09: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fa10: ff ff ff 0.00 : 51fa13: 49 21 d6 and %rdx,%r14 0.00 : 51fa16: 49 83 ce 23 or $0x23,%r14 : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 51fa1a: e9 61 1f ff ff jmpq 511980 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_TYPE; } : | ROLE { $$ = OBJECT_ROLE; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 51fa1f: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fa26: ff ff ff 0.00 : 51fa29: 49 21 c6 and %rax,%r14 0.00 : 51fa2c: 49 83 ce 22 or $0x22,%r14 : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 51fa30: e9 4b 1f ff ff jmpq 511980 : | SCHEMA { $$ = OBJECT_SCHEMA; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_TYPE; } : | ROLE { $$ = OBJECT_ROLE; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } 0.00 : 51fa35: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51fa3c: ff ff ff 0.00 : 51fa3f: 49 21 f6 and %rsi,%r14 0.00 : 51fa42: 49 83 ce 1c or $0x1c,%r14 : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 51fa46: e9 35 1f ff ff jmpq 511980 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_TYPE; } : | ROLE { $$ = OBJECT_ROLE; } 0.00 : 51fa4b: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51fa52: ff ff ff 0.00 : 51fa55: 49 21 de and %rbx,%r14 0.00 : 51fa58: 49 83 ce 17 or $0x17,%r14 : | TABLESPACE { $$ = OBJECT_TABLESPACE; } 0.00 : 51fa5c: e9 1f 1f ff ff jmpq 511980 : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_TYPE; } 0.00 : 51fa61: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fa68: ff ff ff 0.00 : 51fa6b: 49 21 ce and %rcx,%r14 0.00 : 51fa6e: 49 83 ce 22 or $0x22,%r14 : | ROLE { $$ = OBJECT_ROLE; } 0.00 : 51fa72: e9 09 1f ff ff jmpq 511980 : | DATABASE { $$ = OBJECT_DATABASE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51fa77: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fa7e: ff ff ff 0.00 : 51fa81: 49 21 d6 and %rdx,%r14 0.00 : 51fa84: 49 83 ce 1b or $0x1b,%r14 : | DOMAIN_P { $$ = OBJECT_TYPE; } 0.00 : 51fa88: e9 f3 1e ff ff jmpq 511980 : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 51fa8d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fa94: ff ff ff 0.00 : 51fa97: 49 21 c6 and %rax,%r14 0.00 : 51fa9a: 49 83 ce 1a or $0x1a,%r14 : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51fa9e: e9 dd 1e ff ff jmpq 511980 : security_label_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 51faa3: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51faaa: ff ff ff 0.00 : 51faad: 49 21 f6 and %rsi,%r14 0.00 : 51fab0: 49 83 ce 19 or $0x19,%r14 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 51fab4: e9 c7 1e ff ff jmpq 511980 : : security_label_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 51fab9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51fac0: ff ff ff 0.00 : 51fac3: 49 21 de and %rbx,%r14 0.00 : 51fac6: 49 83 ce 0d or $0xd,%r14 : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 51faca: e9 b1 1e ff ff jmpq 511980 : ; : : security_label_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 51facf: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fad6: ff ff ff 0.00 : 51fad9: 49 21 ce and %rcx,%r14 0.00 : 51fadc: 49 83 ce 09 or $0x9,%r14 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 51fae0: e9 9b 1e ff ff jmpq 511980 : | /* empty */ { $$ = NULL; } : ; : : security_label_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } 0.00 : 51fae5: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51faec: ff ff ff 0.00 : 51faef: 49 21 d6 and %rdx,%r14 0.00 : 51faf2: 49 83 ce 07 or $0x7,%r14 : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 51faf6: e9 85 1e ff ff jmpq 511980 : opt_provider: FOR NonReservedWord_or_Sconst { $$ = $2; } : | /* empty */ { $$ = NULL; } : ; : : security_label_type: : COLUMN { $$ = OBJECT_COLUMN; } 0.00 : 51fafb: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fb02: ff ff ff 0.00 : 51fb05: 49 21 c6 and %rax,%r14 0.00 : 51fb08: 49 83 ce 03 or $0x3,%r14 : | DATABASE { $$ = OBJECT_DATABASE; } 0.00 : 51fb0c: e9 6f 1e ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_provider: FOR NonReservedWord_or_Sconst { $$ = $2; } : | /* empty */ { $$ = NULL; } 0.00 : 51fb11: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51fb14: e9 67 1e ff ff jmpq 511980 : n->label = $9; : $$ = (Node *) n; : } : ; : : opt_provider: FOR NonReservedWord_or_Sconst { $$ = $2; } 0.00 : 51fb19: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51fb20: 4c 8b 36 mov (%rsi),%r14 : | /* empty */ { $$ = NULL; } 0.00 : 51fb23: e9 58 1e ff ff jmpq 511980 : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON opt_procedural LANGUAGE any_name : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fb28: 48 8b 3d 31 ad 69 00 mov 0x69ad31(%rip),%rdi # bba860 0.00 : 51fb2f: be 28 00 00 00 mov $0x28,%esi 0.00 : 51fb34: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51fb3b: e8 d0 92 27 00 callq 798e10 0.00 : 51fb40: c7 00 14 03 00 00 movl $0x314,(%rax) : n->provider = $3; 0.00 : 51fb46: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->objtype = OBJECT_LANGUAGE; : n->objname = $7; : n->objargs = NIL; : n->label = $9; : $$ = (Node *) n; 0.00 : 51fb4d: 49 89 c6 mov %rax,%r14 : } : | SECURITY LABEL opt_provider ON opt_procedural LANGUAGE any_name : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fb50: 48 8b 53 d0 mov -0x30(%rbx),%rdx : n->objtype = OBJECT_LANGUAGE; 0.00 : 51fb54: c7 40 04 10 00 00 00 movl $0x10,0x4(%rax) : } : | SECURITY LABEL opt_provider ON opt_procedural LANGUAGE any_name : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fb5b: 48 89 50 18 mov %rdx,0x18(%rax) : n->objtype = OBJECT_LANGUAGE; : n->objname = $7; 0.00 : 51fb5f: 48 8b 53 f0 mov -0x10(%rbx),%rdx : n->objargs = NIL; 0.00 : 51fb63: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51fb6a: 00 : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; : n->objtype = OBJECT_LANGUAGE; : n->objname = $7; 0.00 : 51fb6b: 48 89 50 08 mov %rdx,0x8(%rax) : n->objargs = NIL; : n->label = $9; 0.00 : 51fb6f: 48 8b 13 mov (%rbx),%rdx 0.00 : 51fb72: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : ; 0.00 : 51fb76: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51fb7d: e9 fe 1d ff ff jmpq 511980 : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fb82: 48 8b 3d d7 ac 69 00 mov 0x69acd7(%rip),%rdi # bba860 0.00 : 51fb89: be 28 00 00 00 mov $0x28,%esi 0.00 : 51fb8e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51fb95: e8 76 92 27 00 callq 798e10 0.00 : 51fb9a: c7 00 14 03 00 00 movl $0x314,(%rax) : n->provider = $3; 0.00 : 51fba0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fba7: 48 89 c3 mov %rax,%rbx : n->provider = $3; : n->objtype = OBJECT_LARGEOBJECT; : n->objname = list_make1($7); 0.00 : 51fbaa: 31 f6 xor %esi,%esi : n->objargs = NIL; : n->label = $9; : $$ = (Node *) n; 0.00 : 51fbac: 49 89 de mov %rbx,%r14 : } : | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fbaf: 48 8b 42 d0 mov -0x30(%rdx),%rax : n->objtype = OBJECT_LARGEOBJECT; 0.00 : 51fbb3: c7 43 04 11 00 00 00 movl $0x11,0x4(%rbx) : } : | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fbba: 48 89 43 18 mov %rax,0x18(%rbx) : n->objtype = OBJECT_LARGEOBJECT; : n->objname = list_make1($7); 0.00 : 51fbbe: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 51fbc2: e8 89 1c 0c 00 callq 5e1850 : n->objargs = NIL; 0.00 : 51fbc7: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 51fbce: 00 : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; : n->objtype = OBJECT_LARGEOBJECT; : n->objname = list_make1($7); 0.00 : 51fbcf: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->label = $9; 0.00 : 51fbd3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51fbda: 48 8b 01 mov (%rcx),%rax 0.00 : 51fbdd: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON opt_procedural LANGUAGE any_name 0.00 : 51fbe1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51fbe8: e9 93 1d ff ff jmpq 511980 : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON FUNCTION func_name func_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fbed: 48 8b 3d 6c ac 69 00 mov 0x69ac6c(%rip),%rdi # bba860 0.00 : 51fbf4: be 28 00 00 00 mov $0x28,%esi 0.00 : 51fbf9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51fc00: e8 0b 92 27 00 callq 798e10 0.00 : 51fc05: c7 00 14 03 00 00 movl $0x314,(%rax) : n->provider = $3; 0.00 : 51fc0b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON FUNCTION func_name func_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fc12: 48 89 c3 mov %rax,%rbx : n->provider = $3; : n->objtype = OBJECT_FUNCTION; : n->objname = $6; : n->objargs = extractArgTypes($7); : n->label = $9; : $$ = (Node *) n; 0.00 : 51fc15: 49 89 de mov %rbx,%r14 : } : | SECURITY LABEL opt_provider ON FUNCTION func_name func_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fc18: 48 8b 41 d0 mov -0x30(%rcx),%rax : n->objtype = OBJECT_FUNCTION; 0.00 : 51fc1c: c7 43 04 0e 00 00 00 movl $0xe,0x4(%rbx) : } : | SECURITY LABEL opt_provider ON FUNCTION func_name func_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fc23: 48 89 43 18 mov %rax,0x18(%rbx) : n->objtype = OBJECT_FUNCTION; : n->objname = $6; 0.00 : 51fc27: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 51fc2b: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = extractArgTypes($7); 0.00 : 51fc2f: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 51fc33: e8 38 0e ff ff callq 510a70 0.00 : 51fc38: 48 89 43 10 mov %rax,0x10(%rbx) : n->label = $9; 0.00 : 51fc3c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51fc43: 48 8b 06 mov (%rsi),%rax 0.00 : 51fc46: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P NumericOnly 0.00 : 51fc4a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51fc51: e9 2a 1d ff ff jmpq 511980 : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fc56: 48 8b 3d 03 ac 69 00 mov 0x69ac03(%rip),%rdi # bba860 0.00 : 51fc5d: be 28 00 00 00 mov $0x28,%esi 0.00 : 51fc62: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51fc69: e8 a2 91 27 00 callq 798e10 0.00 : 51fc6e: c7 00 14 03 00 00 movl $0x314,(%rax) : n->provider = $3; 0.00 : 51fc74: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fc7b: 48 89 c3 mov %rax,%rbx : n->provider = $3; : n->objtype = OBJECT_AGGREGATE; : n->objname = $6; : n->objargs = extractAggrArgTypes($7); : n->label = $9; : $$ = (Node *) n; 0.00 : 51fc7e: 49 89 de mov %rbx,%r14 : } : | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fc81: 48 8b 46 d0 mov -0x30(%rsi),%rax : n->objtype = OBJECT_AGGREGATE; 0.00 : 51fc85: c7 43 04 00 00 00 00 movl $0x0,0x4(%rbx) : } : | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fc8c: 48 89 43 18 mov %rax,0x18(%rbx) : n->objtype = OBJECT_AGGREGATE; : n->objname = $6; 0.00 : 51fc90: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 51fc94: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = extractAggrArgTypes($7); 0.00 : 51fc98: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 51fc9c: e8 2f 0e ff ff callq 510ad0 0.00 : 51fca1: 48 89 43 10 mov %rax,0x10(%rbx) : n->label = $9; 0.00 : 51fca5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51fcac: 48 8b 02 mov (%rdx),%rax 0.00 : 51fcaf: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON FUNCTION func_name func_args 0.00 : 51fcb3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51fcba: e9 c1 1c ff ff jmpq 511980 : : SecLabelStmt: : SECURITY LABEL opt_provider ON security_label_type any_name : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); 0.00 : 51fcbf: 48 8b 3d 9a ab 69 00 mov 0x69ab9a(%rip),%rdi # bba860 0.00 : 51fcc6: be 28 00 00 00 mov $0x28,%esi 0.00 : 51fccb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51fcd2: e8 39 91 27 00 callq 798e10 0.00 : 51fcd7: c7 00 14 03 00 00 movl $0x314,(%rax) : n->provider = $3; 0.00 : 51fcdd: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objtype = $5; : n->objname = $6; : n->objargs = NIL; : n->label = $8; : $$ = (Node *) n; 0.00 : 51fce4: 49 89 c6 mov %rax,%r14 : SecLabelStmt: : SECURITY LABEL opt_provider ON security_label_type any_name : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; 0.00 : 51fce7: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 51fceb: 48 89 50 18 mov %rdx,0x18(%rax) : n->objtype = $5; 0.00 : 51fcef: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 51fcf2: 89 50 04 mov %edx,0x4(%rax) : n->objname = $6; 0.00 : 51fcf5: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->objargs = NIL; 0.00 : 51fcf9: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51fd00: 00 : IS security_label : { : SecLabelStmt *n = makeNode(SecLabelStmt); : n->provider = $3; : n->objtype = $5; : n->objname = $6; 0.00 : 51fd01: 48 89 50 08 mov %rdx,0x8(%rax) : n->objargs = NIL; : n->label = $8; 0.00 : 51fd05: 48 8b 11 mov (%rcx),%rdx 0.00 : 51fd08: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args 0.00 : 51fd0c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51fd13: e9 68 1c ff ff jmpq 511980 : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } : ; : : comment_text: : Sconst { $$ = $1; } : | NULL_P { $$ = NULL; } 0.00 : 51fd18: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 51fd1b: e9 60 1c ff ff jmpq 511980 : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } : ; : : comment_text: : Sconst { $$ = $1; } 0.00 : 51fd20: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51fd27: 4c 8b 32 mov (%rdx),%r14 : | NULL_P { $$ = NULL; } 0.00 : 51fd2a: e9 51 1c ff ff jmpq 511980 : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } 0.00 : 51fd2f: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fd36: ff ff ff 0.00 : 51fd39: 49 21 c6 and %rax,%r14 0.00 : 51fd3c: 49 83 ce 21 or $0x21,%r14 : ; 0.00 : 51fd40: e9 3b 1c ff ff jmpq 511980 : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } 0.00 : 51fd45: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51fd4c: ff ff ff 0.00 : 51fd4f: 49 21 f6 and %rsi,%r14 0.00 : 51fd52: 49 83 ce 20 or $0x20,%r14 : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } 0.00 : 51fd56: e9 25 1c ff ff jmpq 511980 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } 0.00 : 51fd5b: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51fd62: ff ff ff 0.00 : 51fd65: 49 21 de and %rbx,%r14 0.00 : 51fd68: 49 83 ce 1f or $0x1f,%r14 : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } 0.00 : 51fd6c: e9 0f 1c ff ff jmpq 511980 : | ROLE { $$ = OBJECT_ROLE; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } 0.00 : 51fd71: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fd78: ff ff ff 0.00 : 51fd7b: 49 21 ce and %rcx,%r14 0.00 : 51fd7e: 49 83 ce 1e or $0x1e,%r14 : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } 0.00 : 51fd82: e9 f9 1b ff ff jmpq 511980 : | EXTENSION { $$ = OBJECT_EXTENSION; } : | ROLE { $$ = OBJECT_ROLE; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 51fd87: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fd8e: ff ff ff 0.00 : 51fd91: 49 21 d6 and %rdx,%r14 0.00 : 51fd94: 49 83 ce 09 or $0x9,%r14 : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } 0.00 : 51fd98: e9 e3 1b ff ff jmpq 511980 : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | ROLE { $$ = OBJECT_ROLE; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } 0.00 : 51fd9d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fda4: ff ff ff 0.00 : 51fda7: 49 21 c6 and %rax,%r14 0.00 : 51fdaa: 49 83 ce 0b or $0xb,%r14 : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 51fdae: e9 cd 1b ff ff jmpq 511980 : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | ROLE { $$ = OBJECT_ROLE; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } 0.00 : 51fdb3: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51fdba: ff ff ff 0.00 : 51fdbd: 49 21 f6 and %rsi,%r14 0.00 : 51fdc0: 49 83 ce 0c or $0xc,%r14 : | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } 0.00 : 51fdc4: e9 b7 1b ff ff jmpq 511980 : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | ROLE { $$ = OBJECT_ROLE; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 51fdc9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51fdd0: ff ff ff 0.00 : 51fdd3: 49 21 de and %rbx,%r14 0.00 : 51fdd6: 49 83 ce 0d or $0xd,%r14 : | SERVER { $$ = OBJECT_FOREIGN_SERVER; } 0.00 : 51fdda: e9 a1 1b ff ff jmpq 511980 : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | ROLE { $$ = OBJECT_ROLE; } 0.00 : 51fddf: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fde6: ff ff ff 0.00 : 51fde9: 49 21 ce and %rcx,%r14 0.00 : 51fdec: 49 83 ce 17 or $0x17,%r14 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 51fdf0: e9 8b 1b ff ff jmpq 511980 : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } : | EXTENSION { $$ = OBJECT_EXTENSION; } 0.00 : 51fdf5: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fdfc: ff ff ff 0.00 : 51fdff: 49 21 d6 and %rdx,%r14 0.00 : 51fe02: 49 83 ce 0a or $0xa,%r14 : | ROLE { $$ = OBJECT_ROLE; } 0.00 : 51fe06: e9 75 1b ff ff jmpq 511980 : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | TABLESPACE { $$ = OBJECT_TABLESPACE; } 0.00 : 51fe0b: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fe12: ff ff ff 0.00 : 51fe15: 49 21 c6 and %rax,%r14 0.00 : 51fe18: 49 83 ce 1c or $0x1c,%r14 : | EXTENSION { $$ = OBJECT_EXTENSION; } 0.00 : 51fe1c: e9 5f 1b ff ff jmpq 511980 : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } 0.00 : 51fe21: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51fe28: ff ff ff 0.00 : 51fe2b: 49 21 f6 and %rsi,%r14 0.00 : 51fe2e: 49 83 ce 06 or $0x6,%r14 : | TABLESPACE { $$ = OBJECT_TABLESPACE; } 0.00 : 51fe32: e9 49 1b ff ff jmpq 511980 : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | COLLATION { $$ = OBJECT_COLLATION; } 0.00 : 51fe37: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51fe3e: ff ff ff 0.00 : 51fe41: 49 21 de and %rbx,%r14 0.00 : 51fe44: 49 83 ce 05 or $0x5,%r14 : | CONVERSION_P { $$ = OBJECT_CONVERSION; } 0.00 : 51fe48: e9 33 1b ff ff jmpq 511980 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 51fe4d: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fe54: ff ff ff 0.00 : 51fe57: 49 21 ce and %rcx,%r14 0.00 : 51fe5a: 49 83 ce 12 or $0x12,%r14 : | COLLATION { $$ = OBJECT_COLLATION; } 0.00 : 51fe5e: e9 1d 1b ff ff jmpq 511980 : | INDEX { $$ = OBJECT_INDEX; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | TYPE_P { $$ = OBJECT_TYPE; } : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 51fe63: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fe6a: ff ff ff 0.00 : 51fe6d: 49 21 d6 and %rdx,%r14 0.00 : 51fe70: 49 83 ce 23 or $0x23,%r14 : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 51fe74: e9 07 1b ff ff jmpq 511980 : | SCHEMA { $$ = OBJECT_SCHEMA; } : | INDEX { $$ = OBJECT_INDEX; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 51fe79: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51fe80: ff ff ff 0.00 : 51fe83: 49 21 c6 and %rax,%r14 0.00 : 51fe86: 49 83 ce 22 or $0x22,%r14 : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 51fe8a: e9 f1 1a ff ff jmpq 511980 : | DATABASE { $$ = OBJECT_DATABASE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | INDEX { $$ = OBJECT_INDEX; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } 0.00 : 51fe8f: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51fe96: ff ff ff 0.00 : 51fe99: 49 21 f6 and %rsi,%r14 0.00 : 51fe9c: 49 83 ce 08 or $0x8,%r14 : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 51fea0: e9 db 1a ff ff jmpq 511980 : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | INDEX { $$ = OBJECT_INDEX; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51fea5: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51feac: ff ff ff 0.00 : 51feaf: 49 21 de and %rbx,%r14 0.00 : 51feb2: 49 83 ce 1b or $0x1b,%r14 : | DOMAIN_P { $$ = OBJECT_DOMAIN; } 0.00 : 51feb6: e9 c5 1a ff ff jmpq 511980 : comment_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | INDEX { $$ = OBJECT_INDEX; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 51febb: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 51fec2: ff ff ff 0.00 : 51fec5: 49 21 ce and %rcx,%r14 0.00 : 51fec8: 49 83 ce 1a or $0x1a,%r14 : | TABLE { $$ = OBJECT_TABLE; } 0.00 : 51fecc: e9 af 1a ff ff jmpq 511980 : : comment_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | INDEX { $$ = OBJECT_INDEX; } 0.00 : 51fed1: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 51fed8: ff ff ff 0.00 : 51fedb: 49 21 d6 and %rdx,%r14 0.00 : 51fede: 49 83 ce 0f or $0xf,%r14 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 51fee2: e9 99 1a ff ff jmpq 511980 : ; : : comment_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 51fee7: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 51feee: ff ff ff 0.00 : 51fef1: 49 21 c6 and %rax,%r14 0.00 : 51fef4: 49 83 ce 19 or $0x19,%r14 : | INDEX { $$ = OBJECT_INDEX; } 0.00 : 51fef8: e9 83 1a ff ff jmpq 511980 : } : ; : : comment_type: : COLUMN { $$ = OBJECT_COLUMN; } : | DATABASE { $$ = OBJECT_DATABASE; } 0.00 : 51fefd: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 51ff04: ff ff ff 0.00 : 51ff07: 49 21 f6 and %rsi,%r14 0.00 : 51ff0a: 49 83 ce 07 or $0x7,%r14 : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 51ff0e: e9 6d 1a ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : comment_type: : COLUMN { $$ = OBJECT_COLUMN; } 0.00 : 51ff13: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 51ff1a: ff ff ff 0.00 : 51ff1d: 49 21 de and %rbx,%r14 0.00 : 51ff20: 49 83 ce 03 or $0x3,%r14 : | DATABASE { $$ = OBJECT_DATABASE; } 0.00 : 51ff24: e9 57 1a ff ff jmpq 511980 : n->comment = $10; : $$ = (Node *) n; : } : | COMMENT ON opt_procedural LANGUAGE any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 51ff29: 48 8b 3d 30 a9 69 00 mov 0x69a930(%rip),%rdi # bba860 0.00 : 51ff30: be 20 00 00 00 mov $0x20,%esi 0.00 : 51ff35: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ff3c: e8 cf 8e 27 00 callq 798e10 0.00 : 51ff41: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_LANGUAGE; 0.00 : 51ff47: c7 40 04 10 00 00 00 movl $0x10,0x4(%rax) : n->objname = $5; : n->objargs = NIL; : n->comment = $7; : $$ = (Node *) n; 0.00 : 51ff4e: 49 89 c6 mov %rax,%r14 : } : | COMMENT ON opt_procedural LANGUAGE any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_LANGUAGE; : n->objname = $5; 0.00 : 51ff51: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ff58: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->objargs = NIL; 0.00 : 51ff5c: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 51ff63: 00 : } : | COMMENT ON opt_procedural LANGUAGE any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_LANGUAGE; : n->objname = $5; 0.00 : 51ff64: 48 89 50 08 mov %rdx,0x8(%rax) : n->objargs = NIL; : n->comment = $7; 0.00 : 51ff68: 48 8b 11 mov (%rcx),%rdx 0.00 : 51ff6b: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 51ff6f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ff76: e9 05 1a ff ff jmpq 511980 : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON CAST '(' Typename AS Typename ')' IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 51ff7b: 48 8b 3d de a8 69 00 mov 0x69a8de(%rip),%rdi # bba860 0.00 : 51ff82: be 20 00 00 00 mov $0x20,%esi 0.00 : 51ff87: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ff8e: e8 7d 8e 27 00 callq 798e10 0.00 : 51ff93: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_CAST; 0.00 : 51ff99: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON CAST '(' Typename AS Typename ')' IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 51ffa0: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_CAST; : n->objname = list_make1($5); 0.00 : 51ffa3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 51ffaa: 31 f6 xor %esi,%esi : n->objargs = list_make1($7); : n->comment = $10; : $$ = (Node *) n; 0.00 : 51ffac: 49 89 de mov %rbx,%r14 : } : | COMMENT ON CAST '(' Typename AS Typename ')' IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_CAST; : n->objname = list_make1($5); 0.00 : 51ffaf: 48 8b 79 d8 mov -0x28(%rcx),%rdi 0.00 : 51ffb3: e8 98 18 0c 00 callq 5e1850 0.00 : 51ffb8: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = list_make1($7); 0.00 : 51ffbc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 51ffc3: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 51ffc7: 31 f6 xor %esi,%esi 0.00 : 51ffc9: e8 82 18 0c 00 callq 5e1850 0.00 : 51ffce: 48 89 43 10 mov %rax,0x10(%rbx) : n->comment = $10; 0.00 : 51ffd2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 51ffd9: 48 8b 02 mov (%rdx),%rax 0.00 : 51ffdc: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON opt_procedural LANGUAGE any_name IS comment_text 0.00 : 51ffe0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 51ffe7: e9 94 19 ff ff jmpq 511980 : n->comment = $9; : $$ = (Node *) n; : } : | COMMENT ON LARGE_P OBJECT_P NumericOnly IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 51ffec: 48 8b 3d 6d a8 69 00 mov 0x69a86d(%rip),%rdi # bba860 0.00 : 51fff3: be 20 00 00 00 mov $0x20,%esi 0.00 : 51fff8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 51ffff: e8 0c 8e 27 00 callq 798e10 0.00 : 520004: 48 89 c3 mov %rax,%rbx 0.00 : 520007: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_LARGEOBJECT; 0.00 : 52000d: c7 40 04 11 00 00 00 movl $0x11,0x4(%rax) : n->objname = list_make1($5); 0.00 : 520014: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 52001b: 31 f6 xor %esi,%esi : n->objargs = NIL; : n->comment = $7; : $$ = (Node *) n; 0.00 : 52001d: 49 89 de mov %rbx,%r14 : } : | COMMENT ON LARGE_P OBJECT_P NumericOnly IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_LARGEOBJECT; : n->objname = list_make1($5); 0.00 : 520020: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 520024: e8 27 18 0c 00 callq 5e1850 : n->objargs = NIL; 0.00 : 520029: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 520030: 00 : } : | COMMENT ON LARGE_P OBJECT_P NumericOnly IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_LARGEOBJECT; : n->objname = list_make1($5); 0.00 : 520031: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->comment = $7; 0.00 : 520035: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52003c: 48 8b 02 mov (%rdx),%rax 0.00 : 52003f: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON CAST '(' Typename AS Typename ')' IS comment_text 0.00 : 520043: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52004a: e9 31 19 ff ff jmpq 511980 : n->comment = $9; : $$ = (Node *) n; : } : | COMMENT ON OPERATOR FAMILY any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 52004f: 48 8b 3d 0a a8 69 00 mov 0x69a80a(%rip),%rdi # bba860 0.00 : 520056: be 20 00 00 00 mov $0x20,%esi 0.00 : 52005b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520062: e8 a9 8d 27 00 callq 798e10 0.00 : 520067: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_OPFAMILY; 0.00 : 52006d: c7 40 04 15 00 00 00 movl $0x15,0x4(%rax) : n->comment = $9; : $$ = (Node *) n; : } : | COMMENT ON OPERATOR FAMILY any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520074: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_OPFAMILY; : n->objname = $5; 0.00 : 520077: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objargs = list_make1(makeString($7)); : n->comment = $9; : $$ = (Node *) n; 0.00 : 52007e: 49 89 de mov %rbx,%r14 : } : | COMMENT ON OPERATOR FAMILY any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_OPFAMILY; : n->objname = $5; 0.00 : 520081: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 520085: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = list_make1(makeString($7)); 0.00 : 520089: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 52008d: e8 5e f6 0d 00 callq 5ff6f0 0.00 : 520092: 31 f6 xor %esi,%esi 0.00 : 520094: 48 89 c7 mov %rax,%rdi 0.00 : 520097: e8 b4 17 0c 00 callq 5e1850 0.00 : 52009c: 48 89 43 10 mov %rax,0x10(%rbx) : n->comment = $9; 0.00 : 5200a0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5200a7: 48 8b 06 mov (%rsi),%rax 0.00 : 5200aa: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON LARGE_P OBJECT_P NumericOnly IS comment_text 0.00 : 5200ae: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5200b5: e9 c6 18 ff ff jmpq 511980 : n->comment = $8; : $$ = (Node *) n; : } : | COMMENT ON OPERATOR CLASS any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 5200ba: 48 8b 3d 9f a7 69 00 mov 0x69a79f(%rip),%rdi # bba860 0.00 : 5200c1: be 20 00 00 00 mov $0x20,%esi 0.00 : 5200c6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5200cd: e8 3e 8d 27 00 callq 798e10 0.00 : 5200d2: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_OPCLASS; 0.00 : 5200d8: c7 40 04 13 00 00 00 movl $0x13,0x4(%rax) : n->comment = $8; : $$ = (Node *) n; : } : | COMMENT ON OPERATOR CLASS any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 5200df: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_OPCLASS; : n->objname = $5; 0.00 : 5200e2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = list_make1(makeString($7)); : n->comment = $9; : $$ = (Node *) n; 0.00 : 5200e9: 49 89 de mov %rbx,%r14 : } : | COMMENT ON OPERATOR CLASS any_name USING access_method IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_OPCLASS; : n->objname = $5; 0.00 : 5200ec: 48 8b 46 e0 mov -0x20(%rsi),%rax 0.00 : 5200f0: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = list_make1(makeString($7)); 0.00 : 5200f4: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 5200f8: e8 f3 f5 0d 00 callq 5ff6f0 0.00 : 5200fd: 31 f6 xor %esi,%esi 0.00 : 5200ff: 48 89 c7 mov %rax,%rdi 0.00 : 520102: e8 49 17 0c 00 callq 5e1850 0.00 : 520107: 48 89 43 10 mov %rax,0x10(%rbx) : n->comment = $9; 0.00 : 52010b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520112: 48 8b 02 mov (%rdx),%rax 0.00 : 520115: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON OPERATOR FAMILY any_name USING access_method IS comment_text 0.00 : 520119: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520120: e9 5b 18 ff ff jmpq 511980 : n->comment = $6; : $$ = (Node *) n; : } : | COMMENT ON TRIGGER name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520125: 48 8b 3d 34 a7 69 00 mov 0x69a734(%rip),%rdi # bba860 0.00 : 52012c: be 20 00 00 00 mov $0x20,%esi 0.00 : 520131: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520138: e8 d3 8c 27 00 callq 798e10 0.00 : 52013d: 48 89 c3 mov %rax,%rbx 0.00 : 520140: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_TRIGGER; 0.00 : 520146: c7 40 04 1d 00 00 00 movl $0x1d,0x4(%rax) : n->objname = lappend($6, makeString($4)); 0.00 : 52014d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->objargs = NIL; : n->comment = $8; : $$ = (Node *) n; 0.00 : 520154: 49 89 de mov %rbx,%r14 : } : | COMMENT ON TRIGGER name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_TRIGGER; : n->objname = lappend($6, makeString($4)); 0.00 : 520157: 48 8b 78 e0 mov -0x20(%rax),%rdi 0.00 : 52015b: e8 90 f5 0d 00 callq 5ff6f0 0.00 : 520160: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520167: 48 89 c6 mov %rax,%rsi 0.00 : 52016a: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 52016e: e8 0d 1d 0c 00 callq 5e1e80 : n->objargs = NIL; 0.00 : 520173: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 52017a: 00 : } : | COMMENT ON TRIGGER name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_TRIGGER; : n->objname = lappend($6, makeString($4)); 0.00 : 52017b: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->comment = $8; 0.00 : 52017f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 520186: 48 8b 01 mov (%rcx),%rax 0.00 : 520189: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON OPERATOR CLASS any_name USING access_method IS comment_text 0.00 : 52018d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520194: e9 e7 17 ff ff jmpq 511980 : $$ = (Node *) n; : } : | COMMENT ON RULE name IS comment_text : { : /* Obsolete syntax supported for awhile for compatibility */ : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520199: 48 8b 3d c0 a6 69 00 mov 0x69a6c0(%rip),%rdi # bba860 0.00 : 5201a0: be 20 00 00 00 mov $0x20,%esi 0.00 : 5201a5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5201ac: e8 5f 8c 27 00 callq 798e10 0.00 : 5201b1: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_RULE; 0.00 : 5201b7: c7 40 04 18 00 00 00 movl $0x18,0x4(%rax) : $$ = (Node *) n; : } : | COMMENT ON RULE name IS comment_text : { : /* Obsolete syntax supported for awhile for compatibility */ : CommentStmt *n = makeNode(CommentStmt); 0.00 : 5201be: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_RULE; : n->objname = list_make1(makeString($4)); 0.00 : 5201c1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objargs = NIL; : n->comment = $6; : $$ = (Node *) n; 0.00 : 5201c8: 49 89 de mov %rbx,%r14 : | COMMENT ON RULE name IS comment_text : { : /* Obsolete syntax supported for awhile for compatibility */ : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_RULE; : n->objname = list_make1(makeString($4)); 0.00 : 5201cb: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 5201cf: e8 1c f5 0d 00 callq 5ff6f0 0.00 : 5201d4: 31 f6 xor %esi,%esi 0.00 : 5201d6: 48 89 c7 mov %rax,%rdi 0.00 : 5201d9: e8 72 16 0c 00 callq 5e1850 : n->objargs = NIL; 0.00 : 5201de: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5201e5: 00 : | COMMENT ON RULE name IS comment_text : { : /* Obsolete syntax supported for awhile for compatibility */ : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_RULE; : n->objname = list_make1(makeString($4)); 0.00 : 5201e6: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->comment = $6; 0.00 : 5201ea: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5201f1: 48 8b 06 mov (%rsi),%rax 0.00 : 5201f4: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON TRIGGER name ON any_name IS comment_text 0.00 : 5201f8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5201ff: e9 7c 17 ff ff jmpq 511980 : n->comment = $8; : $$ = (Node *) n; : } : | COMMENT ON RULE name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520204: 48 8b 3d 55 a6 69 00 mov 0x69a655(%rip),%rdi # bba860 0.00 : 52020b: be 20 00 00 00 mov $0x20,%esi 0.00 : 520210: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520217: e8 f4 8b 27 00 callq 798e10 0.00 : 52021c: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_RULE; 0.00 : 520222: c7 40 04 18 00 00 00 movl $0x18,0x4(%rax) : n->comment = $8; : $$ = (Node *) n; : } : | COMMENT ON RULE name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520229: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_RULE; : n->objname = lappend($6, makeString($4)); 0.00 : 52022c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objargs = NIL; : n->comment = $8; : $$ = (Node *) n; 0.00 : 520233: 49 89 de mov %rbx,%r14 : } : | COMMENT ON RULE name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_RULE; : n->objname = lappend($6, makeString($4)); 0.00 : 520236: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 52023a: e8 b1 f4 0d 00 callq 5ff6f0 0.00 : 52023f: 48 89 c6 mov %rax,%rsi 0.00 : 520242: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 520249: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 52024d: e8 2e 1c 0c 00 callq 5e1e80 : n->objargs = NIL; 0.00 : 520252: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 520259: 00 : } : | COMMENT ON RULE name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_RULE; : n->objname = lappend($6, makeString($4)); 0.00 : 52025a: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->comment = $8; 0.00 : 52025e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520265: 48 8b 02 mov (%rdx),%rax 0.00 : 520268: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON RULE name IS comment_text 0.00 : 52026c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520273: e9 08 17 ff ff jmpq 511980 : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON CONSTRAINT name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520278: 48 8b 3d e1 a5 69 00 mov 0x69a5e1(%rip),%rdi # bba860 0.00 : 52027f: be 20 00 00 00 mov $0x20,%esi 0.00 : 520284: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52028b: e8 80 8b 27 00 callq 798e10 0.00 : 520290: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_CONSTRAINT; 0.00 : 520296: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON CONSTRAINT name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 52029d: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_CONSTRAINT; : n->objname = lappend($6, makeString($4)); 0.00 : 5202a0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = NIL; : n->comment = $8; : $$ = (Node *) n; 0.00 : 5202a7: 49 89 de mov %rbx,%r14 : } : | COMMENT ON CONSTRAINT name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_CONSTRAINT; : n->objname = lappend($6, makeString($4)); 0.00 : 5202aa: 48 8b 7e e0 mov -0x20(%rsi),%rdi 0.00 : 5202ae: e8 3d f4 0d 00 callq 5ff6f0 0.00 : 5202b3: 48 89 c6 mov %rax,%rsi 0.00 : 5202b6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5202bd: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 5202c1: e8 ba 1b 0c 00 callq 5e1e80 : n->objargs = NIL; 0.00 : 5202c6: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5202cd: 00 : } : | COMMENT ON CONSTRAINT name ON any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_CONSTRAINT; : n->objname = lappend($6, makeString($4)); 0.00 : 5202ce: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = NIL; : n->comment = $8; 0.00 : 5202d2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5202d9: 48 8b 02 mov (%rdx),%rax 0.00 : 5202dc: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON RULE name ON any_name IS comment_text 0.00 : 5202e0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5202e7: e9 94 16 ff ff jmpq 511980 : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON OPERATOR any_operator oper_argtypes IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 5202ec: 48 8b 3d 6d a5 69 00 mov 0x69a56d(%rip),%rdi # bba860 0.00 : 5202f3: be 20 00 00 00 mov $0x20,%esi 0.00 : 5202f8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5202ff: e8 0c 8b 27 00 callq 798e10 0.00 : 520304: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_OPERATOR; 0.00 : 52030a: c7 40 04 14 00 00 00 movl $0x14,0x4(%rax) : n->objname = $4; : n->objargs = $5; : n->comment = $7; : $$ = (Node *) n; 0.00 : 520311: 49 89 c6 mov %rax,%r14 : } : | COMMENT ON OPERATOR any_operator oper_argtypes IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_OPERATOR; : n->objname = $4; 0.00 : 520314: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52031b: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 52031f: 48 89 50 08 mov %rdx,0x8(%rax) : n->objargs = $5; 0.00 : 520323: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 520327: 48 89 50 10 mov %rdx,0x10(%rax) : n->comment = $7; 0.00 : 52032b: 48 8b 11 mov (%rcx),%rdx 0.00 : 52032e: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : | COMMENT ON CONSTRAINT name ON any_name IS comment_text 0.00 : 520332: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520339: e9 42 16 ff ff jmpq 511980 : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON FUNCTION func_name func_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 52033e: 48 8b 3d 1b a5 69 00 mov 0x69a51b(%rip),%rdi # bba860 0.00 : 520345: be 20 00 00 00 mov $0x20,%esi 0.00 : 52034a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520351: e8 ba 8a 27 00 callq 798e10 0.00 : 520356: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_FUNCTION; 0.00 : 52035c: c7 40 04 0e 00 00 00 movl $0xe,0x4(%rax) : n->comment = $7; : $$ = (Node *) n; : } : | COMMENT ON FUNCTION func_name func_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520363: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_FUNCTION; : n->objname = $4; 0.00 : 520366: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objargs = extractArgTypes($5); : n->comment = $7; : $$ = (Node *) n; 0.00 : 52036d: 49 89 de mov %rbx,%r14 : } : | COMMENT ON FUNCTION func_name func_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_FUNCTION; : n->objname = $4; 0.00 : 520370: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 520374: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = extractArgTypes($5); 0.00 : 520378: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 52037c: e8 ef 06 ff ff callq 510a70 0.00 : 520381: 48 89 43 10 mov %rax,0x10(%rbx) : n->comment = $7; 0.00 : 520385: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52038c: 48 8b 06 mov (%rsi),%rax 0.00 : 52038f: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON OPERATOR any_operator oper_argtypes IS comment_text 0.00 : 520393: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52039a: e9 e1 15 ff ff jmpq 511980 : n->comment = $6; : $$ = (Node *) n; : } : | COMMENT ON AGGREGATE func_name aggr_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 52039f: 48 8b 3d ba a4 69 00 mov 0x69a4ba(%rip),%rdi # bba860 0.00 : 5203a6: be 20 00 00 00 mov $0x20,%esi 0.00 : 5203ab: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5203b2: e8 59 8a 27 00 callq 798e10 0.00 : 5203b7: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = OBJECT_AGGREGATE; 0.00 : 5203bd: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->comment = $6; : $$ = (Node *) n; : } : | COMMENT ON AGGREGATE func_name aggr_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 5203c4: 48 89 c3 mov %rax,%rbx : n->objtype = OBJECT_AGGREGATE; : n->objname = $4; 0.00 : 5203c7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = extractAggrArgTypes($5); : n->comment = $7; : $$ = (Node *) n; 0.00 : 5203ce: 49 89 de mov %rbx,%r14 : } : | COMMENT ON AGGREGATE func_name aggr_args IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = OBJECT_AGGREGATE; : n->objname = $4; 0.00 : 5203d1: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 5203d5: 48 89 43 08 mov %rax,0x8(%rbx) : n->objargs = extractAggrArgTypes($5); 0.00 : 5203d9: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 5203dd: e8 ee 06 ff ff callq 510ad0 0.00 : 5203e2: 48 89 43 10 mov %rax,0x10(%rbx) : n->comment = $7; 0.00 : 5203e6: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5203ed: 48 8b 02 mov (%rdx),%rax 0.00 : 5203f0: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *) n; : } : | COMMENT ON FUNCTION func_name func_args IS comment_text 0.00 : 5203f4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5203fb: e9 80 15 ff ff jmpq 511980 : *****************************************************************************/ : : CommentStmt: : COMMENT ON comment_type any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); 0.00 : 520400: 48 8b 3d 59 a4 69 00 mov 0x69a459(%rip),%rdi # bba860 0.00 : 520407: be 20 00 00 00 mov $0x20,%esi 0.00 : 52040c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520413: e8 f8 89 27 00 callq 798e10 0.00 : 520418: c7 00 d0 02 00 00 movl $0x2d0,(%rax) : n->objtype = $3; 0.00 : 52041e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objname = $4; : n->objargs = NIL; : n->comment = $6; : $$ = (Node *) n; 0.00 : 520425: 49 89 c6 mov %rax,%r14 : : CommentStmt: : COMMENT ON comment_type any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = $3; 0.00 : 520428: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 52042b: 89 50 04 mov %edx,0x4(%rax) : n->objname = $4; 0.00 : 52042e: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->objargs = NIL; 0.00 : 520432: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 520439: 00 : CommentStmt: : COMMENT ON comment_type any_name IS comment_text : { : CommentStmt *n = makeNode(CommentStmt); : n->objtype = $3; : n->objname = $4; 0.00 : 52043a: 48 89 50 08 mov %rdx,0x8(%rax) : n->objargs = NIL; : n->comment = $6; 0.00 : 52043e: 48 8b 11 mov (%rcx),%rdx 0.00 : 520441: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : | COMMENT ON AGGREGATE func_name aggr_args IS comment_text 0.00 : 520445: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52044c: e9 2f 15 ff ff jmpq 511980 : ; : : opt_restart_seqs: : CONTINUE_P IDENTITY_P { $$ = false; } : | RESTART IDENTITY_P { $$ = true; } : | /* EMPTY */ { $$ = false; } 0.00 : 520451: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 520454: e9 27 15 ff ff jmpq 511980 : } : ; : : opt_restart_seqs: : CONTINUE_P IDENTITY_P { $$ = false; } : | RESTART IDENTITY_P { $$ = true; } 0.00 : 520459: 41 b6 01 mov $0x1,%r14b : | /* EMPTY */ { $$ = false; } 0.00 : 52045c: e9 1f 15 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_restart_seqs: : CONTINUE_P IDENTITY_P { $$ = false; } 0.00 : 520461: 45 30 f6 xor %r14b,%r14b : | RESTART IDENTITY_P { $$ = true; } 0.00 : 520464: e9 17 15 ff ff jmpq 511980 : *****************************************************************************/ : : TruncateStmt: : TRUNCATE opt_table relation_expr_list opt_restart_seqs opt_drop_behavior : { : TruncateStmt *n = makeNode(TruncateStmt); 0.00 : 520469: 48 8b 3d f0 a3 69 00 mov 0x69a3f0(%rip),%rdi # bba860 0.00 : 520470: be 18 00 00 00 mov $0x18,%esi 0.00 : 520475: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52047c: e8 8f 89 27 00 callq 798e10 0.00 : 520481: c7 00 cf 02 00 00 movl $0x2cf,(%rax) : n->relations = $3; 0.00 : 520487: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->restart_seqs = $4; : n->behavior = $5; : $$ = (Node *)n; 0.00 : 52048e: 49 89 c6 mov %rax,%r14 : : TruncateStmt: : TRUNCATE opt_table relation_expr_list opt_restart_seqs opt_drop_behavior : { : TruncateStmt *n = makeNode(TruncateStmt); : n->relations = $3; 0.00 : 520491: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 520495: 48 89 50 08 mov %rdx,0x8(%rax) : n->restart_seqs = $4; 0.00 : 520499: 0f b6 56 f8 movzbl -0x8(%rsi),%edx 0.00 : 52049d: 88 50 10 mov %dl,0x10(%rax) : n->behavior = $5; 0.00 : 5204a0: 8b 16 mov (%rsi),%edx 0.00 : 5204a2: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : ; 0.00 : 5204a5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5204ac: e9 cf 14 ff ff jmpq 511980 : ; : : attrs: '.' attr_name : { $$ = list_make1(makeString($2)); } : | attrs '.' attr_name : { $$ = lappend($1, makeString($3)); } 0.00 : 5204b1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5204b8: 48 8b 39 mov (%rcx),%rdi 0.00 : 5204bb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5204c2: e8 29 f2 0d 00 callq 5ff6f0 0.00 : 5204c7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5204ce: 48 89 c6 mov %rax,%rsi 0.00 : 5204d1: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 5204d5: e8 a6 19 0c 00 callq 5e1e80 : ; 0.00 : 5204da: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : attrs: '.' attr_name : { $$ = list_make1(makeString($2)); } : | attrs '.' attr_name : { $$ = lappend($1, makeString($3)); } 0.00 : 5204e1: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5204e4: e9 97 14 ff ff jmpq 511980 : any_name: ColId { $$ = list_make1(makeString($1)); } : | ColId attrs { $$ = lcons(makeString($1), $2); } : ; : : attrs: '.' attr_name : { $$ = list_make1(makeString($2)); } 0.00 : 5204e9: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5204f0: 48 8b 3a mov (%rdx),%rdi 0.00 : 5204f3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5204fa: e8 f1 f1 0d 00 callq 5ff6f0 0.00 : 5204ff: 31 f6 xor %esi,%esi 0.00 : 520501: 48 89 c7 mov %rax,%rdi 0.00 : 520504: e8 47 13 0c 00 callq 5e1850 : | attrs '.' attr_name 0.00 : 520509: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : any_name: ColId { $$ = list_make1(makeString($1)); } : | ColId attrs { $$ = lcons(makeString($1), $2); } : ; : : attrs: '.' attr_name : { $$ = list_make1(makeString($2)); } 0.00 : 520510: 49 89 c6 mov %rax,%r14 : | attrs '.' attr_name 0.00 : 520513: e9 68 14 ff ff jmpq 511980 : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } : ; : : any_name: ColId { $$ = list_make1(makeString($1)); } : | ColId attrs { $$ = lcons(makeString($1), $2); } 0.00 : 520518: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 52051f: 48 8b 18 mov (%rax),%rbx 0.00 : 520522: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 520526: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52052d: e8 be f1 0d 00 callq 5ff6f0 0.00 : 520532: 48 89 de mov %rbx,%rsi 0.00 : 520535: 48 89 c7 mov %rax,%rdi 0.00 : 520538: e8 13 13 0c 00 callq 5e1850 : ; 0.00 : 52053d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } : ; : : any_name: ColId { $$ = list_make1(makeString($1)); } : | ColId attrs { $$ = lcons(makeString($1), $2); } 0.00 : 520544: 49 89 c6 mov %rax,%r14 : ; 0.00 : 520547: e9 34 14 ff ff jmpq 511980 : any_name_list: : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } : ; : : any_name: ColId { $$ = list_make1(makeString($1)); } 0.00 : 52054c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520553: 48 8b 3e mov (%rsi),%rdi 0.00 : 520556: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52055d: e8 8e f1 0d 00 callq 5ff6f0 0.00 : 520562: 31 f6 xor %esi,%esi 0.00 : 520564: 48 89 c7 mov %rax,%rdi 0.00 : 520567: e8 e4 12 0c 00 callq 5e1850 : | ColId attrs { $$ = lcons(makeString($1), $2); } 0.00 : 52056c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : any_name_list: : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } : ; : : any_name: ColId { $$ = list_make1(makeString($1)); } 0.00 : 520573: 49 89 c6 mov %rax,%r14 : | ColId attrs { $$ = lcons(makeString($1), $2); } 0.00 : 520576: e9 05 14 ff ff jmpq 511980 : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : ; : : any_name_list: : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } 0.00 : 52057b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 520582: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 520586: 48 8b 33 mov (%rbx),%rsi 0.00 : 520589: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520590: e8 eb 18 0c 00 callq 5e1e80 : ; 0.00 : 520595: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : ; : : any_name_list: : any_name { $$ = list_make1($1); } : | any_name_list ',' any_name { $$ = lappend($1, $3); } 0.00 : 52059c: 49 89 c6 mov %rax,%r14 : ; 0.00 : 52059f: e9 dc 13 ff ff jmpq 511980 : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : ; : : any_name_list: : any_name { $$ = list_make1($1); } 0.00 : 5205a4: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5205ab: 31 f6 xor %esi,%esi 0.00 : 5205ad: 48 8b 39 mov (%rcx),%rdi 0.00 : 5205b0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5205b7: e8 94 12 0c 00 callq 5e1850 : | any_name_list ',' any_name { $$ = lappend($1, $3); } 0.00 : 5205bc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } : ; : : any_name_list: : any_name { $$ = list_make1($1); } 0.00 : 5205c3: 49 89 c6 mov %rax,%r14 : | any_name_list ',' any_name { $$ = lappend($1, $3); } 0.00 : 5205c6: e9 b5 13 ff ff jmpq 511980 : | SCHEMA { $$ = OBJECT_SCHEMA; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } 0.00 : 5205cb: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5205d2: ff ff ff 0.00 : 5205d5: 49 21 d6 and %rdx,%r14 0.00 : 5205d8: 49 83 ce 1e or $0x1e,%r14 : ; 0.00 : 5205dc: e9 9f 13 ff ff jmpq 511980 : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } 0.00 : 5205e1: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5205e8: ff ff ff 0.00 : 5205eb: 49 21 c6 and %rax,%r14 0.00 : 5205ee: 49 83 ce 21 or $0x21,%r14 : | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } 0.00 : 5205f2: e9 89 13 ff ff jmpq 511980 : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } 0.00 : 5205f7: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5205fe: ff ff ff 0.00 : 520601: 49 21 f6 and %rsi,%r14 0.00 : 520604: 49 83 ce 1f or $0x1f,%r14 : | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } 0.00 : 520608: e9 73 13 ff ff jmpq 511980 : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | EXTENSION { $$ = OBJECT_EXTENSION; } : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } 0.00 : 52060d: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 520614: ff ff ff 0.00 : 520617: 49 21 de and %rbx,%r14 0.00 : 52061a: 49 83 ce 20 or $0x20,%r14 : | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } 0.00 : 52061e: e9 5d 13 ff ff jmpq 511980 : | TYPE_P { $$ = OBJECT_TYPE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | SCHEMA { $$ = OBJECT_SCHEMA; } : | EXTENSION { $$ = OBJECT_EXTENSION; } 0.00 : 520623: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 52062a: ff ff ff 0.00 : 52062d: 49 21 ce and %rcx,%r14 0.00 : 520630: 49 83 ce 0a or $0xa,%r14 : | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } 0.00 : 520634: e9 47 13 ff ff jmpq 511980 : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TYPE_P { $$ = OBJECT_TYPE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 520639: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 520640: ff ff ff 0.00 : 520643: 49 21 d6 and %rdx,%r14 0.00 : 520646: 49 83 ce 19 or $0x19,%r14 : | EXTENSION { $$ = OBJECT_EXTENSION; } 0.00 : 52064a: e9 31 13 ff ff jmpq 511980 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TYPE_P { $$ = OBJECT_TYPE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | COLLATION { $$ = OBJECT_COLLATION; } : | CONVERSION_P { $$ = OBJECT_CONVERSION; } 0.00 : 52064f: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 520656: ff ff ff 0.00 : 520659: 49 21 c6 and %rax,%r14 0.00 : 52065c: 49 83 ce 06 or $0x6,%r14 : | SCHEMA { $$ = OBJECT_SCHEMA; } 0.00 : 520660: e9 1b 13 ff ff jmpq 511980 : | INDEX { $$ = OBJECT_INDEX; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TYPE_P { $$ = OBJECT_TYPE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } : | COLLATION { $$ = OBJECT_COLLATION; } 0.00 : 520665: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 52066c: ff ff ff 0.00 : 52066f: 49 21 f6 and %rsi,%r14 0.00 : 520672: 49 83 ce 05 or $0x5,%r14 : | CONVERSION_P { $$ = OBJECT_CONVERSION; } 0.00 : 520676: e9 05 13 ff ff jmpq 511980 : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | INDEX { $$ = OBJECT_INDEX; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TYPE_P { $$ = OBJECT_TYPE; } : | DOMAIN_P { $$ = OBJECT_DOMAIN; } 0.00 : 52067b: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 520682: ff ff ff 0.00 : 520685: 49 21 de and %rbx,%r14 0.00 : 520688: 49 83 ce 08 or $0x8,%r14 : | COLLATION { $$ = OBJECT_COLLATION; } 0.00 : 52068c: e9 ef 12 ff ff jmpq 511980 : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | INDEX { $$ = OBJECT_INDEX; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 520691: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 520698: ff ff ff 0.00 : 52069b: 49 21 ce and %rcx,%r14 0.00 : 52069e: 49 83 ce 22 or $0x22,%r14 : | DOMAIN_P { $$ = OBJECT_DOMAIN; } 0.00 : 5206a2: e9 d9 12 ff ff jmpq 511980 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | INDEX { $$ = OBJECT_INDEX; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 5206a7: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5206ae: ff ff ff 0.00 : 5206b1: 49 21 d6 and %rdx,%r14 0.00 : 5206b4: 49 83 ce 09 or $0x9,%r14 : | TYPE_P { $$ = OBJECT_TYPE; } 0.00 : 5206b8: e9 c3 12 ff ff jmpq 511980 : drop_type: TABLE { $$ = OBJECT_TABLE; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | INDEX { $$ = OBJECT_INDEX; } : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 5206bd: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5206c4: ff ff ff 0.00 : 5206c7: 49 21 c6 and %rax,%r14 0.00 : 5206ca: 49 83 ce 0d or $0xd,%r14 : | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } 0.00 : 5206ce: e9 ad 12 ff ff jmpq 511980 : : drop_type: TABLE { $$ = OBJECT_TABLE; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } : | INDEX { $$ = OBJECT_INDEX; } 0.00 : 5206d3: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5206da: ff ff ff 0.00 : 5206dd: 49 21 f6 and %rsi,%r14 0.00 : 5206e0: 49 83 ce 0f or $0xf,%r14 : | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } 0.00 : 5206e4: e9 97 12 ff ff jmpq 511980 : : : drop_type: TABLE { $$ = OBJECT_TABLE; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | VIEW { $$ = OBJECT_VIEW; } : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 5206e9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5206f0: ff ff ff 0.00 : 5206f3: 49 21 de and %rbx,%r14 0.00 : 5206f6: 49 83 ce 12 or $0x12,%r14 : | INDEX { $$ = OBJECT_INDEX; } 0.00 : 5206fa: e9 81 12 ff ff jmpq 511980 : ; : : : drop_type: TABLE { $$ = OBJECT_TABLE; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 5206ff: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 520706: ff ff ff 0.00 : 520709: 49 21 ce and %rcx,%r14 0.00 : 52070c: 49 83 ce 23 or $0x23,%r14 : | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } 0.00 : 520710: e9 6b 12 ff ff jmpq 511980 : } : ; : : : drop_type: TABLE { $$ = OBJECT_TABLE; } : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 520715: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 52071c: ff ff ff 0.00 : 52071f: 49 21 d6 and %rdx,%r14 0.00 : 520722: 49 83 ce 1a or $0x1a,%r14 : | VIEW { $$ = OBJECT_VIEW; } 0.00 : 520726: e9 55 12 ff ff jmpq 511980 : $$ = (Node *)n; : } : ; : : : drop_type: TABLE { $$ = OBJECT_TABLE; } 0.00 : 52072b: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 520732: ff ff ff 0.00 : 520735: 49 21 c6 and %rax,%r14 0.00 : 520738: 49 83 ce 1b or $0x1b,%r14 : | SEQUENCE { $$ = OBJECT_SEQUENCE; } 0.00 : 52073c: e9 3f 12 ff ff jmpq 511980 : n->concurrent = true; : $$ = (Node *)n; : } : | DROP INDEX CONCURRENTLY IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520741: 48 8b 3d 18 a1 69 00 mov 0x69a118(%rip),%rdi # bba860 0.00 : 520748: be 28 00 00 00 mov $0x28,%esi 0.00 : 52074d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520754: e8 b7 86 27 00 callq 798e10 0.00 : 520759: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_INDEX; 0.00 : 52075f: c7 40 18 0f 00 00 00 movl $0xf,0x18(%rax) : n->missing_ok = TRUE; : n->objects = $6; : n->arguments = NIL; : n->behavior = $7; : n->concurrent = true; : $$ = (Node *)n; 0.00 : 520766: 49 89 c6 mov %rax,%r14 : } : | DROP INDEX CONCURRENTLY IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = TRUE; 0.00 : 520769: c6 40 20 01 movb $0x1,0x20(%rax) : n->objects = $6; 0.00 : 52076d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520774: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->arguments = NIL; 0.00 : 520778: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 52077f: 00 : | DROP INDEX CONCURRENTLY IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = TRUE; : n->objects = $6; 0.00 : 520780: 48 89 50 08 mov %rdx,0x8(%rax) : n->arguments = NIL; : n->behavior = $7; 0.00 : 520784: 8b 16 mov (%rsi),%edx : n->concurrent = true; 0.00 : 520786: c6 40 21 01 movb $0x1,0x21(%rax) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = TRUE; : n->objects = $6; : n->arguments = NIL; : n->behavior = $7; 0.00 : 52078a: 89 50 1c mov %edx,0x1c(%rax) : n->concurrent = true; : $$ = (Node *)n; : } : ; 0.00 : 52078d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520794: e9 e7 11 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP INDEX CONCURRENTLY any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520799: 48 8b 3d c0 a0 69 00 mov 0x69a0c0(%rip),%rdi # bba860 0.00 : 5207a0: be 28 00 00 00 mov $0x28,%esi 0.00 : 5207a5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5207ac: e8 5f 86 27 00 callq 798e10 0.00 : 5207b1: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_INDEX; 0.00 : 5207b7: c7 40 18 0f 00 00 00 movl $0xf,0x18(%rax) : n->missing_ok = FALSE; : n->objects = $4; : n->arguments = NIL; : n->behavior = $5; : n->concurrent = true; : $$ = (Node *)n; 0.00 : 5207be: 49 89 c6 mov %rax,%r14 : } : | DROP INDEX CONCURRENTLY any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = FALSE; 0.00 : 5207c1: c6 40 20 00 movb $0x0,0x20(%rax) : n->objects = $4; 0.00 : 5207c5: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5207cc: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->arguments = NIL; 0.00 : 5207d0: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5207d7: 00 : | DROP INDEX CONCURRENTLY any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = FALSE; : n->objects = $4; 0.00 : 5207d8: 48 89 50 08 mov %rdx,0x8(%rax) : n->arguments = NIL; : n->behavior = $5; 0.00 : 5207dc: 8b 13 mov (%rbx),%edx : n->concurrent = true; 0.00 : 5207de: c6 40 21 01 movb $0x1,0x21(%rax) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_INDEX; : n->missing_ok = FALSE; : n->objects = $4; : n->arguments = NIL; : n->behavior = $5; 0.00 : 5207e2: 89 50 1c mov %edx,0x1c(%rax) : n->concurrent = true; : $$ = (Node *)n; : } : | DROP INDEX CONCURRENTLY IF_P EXISTS any_name_list opt_drop_behavior 0.00 : 5207e5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5207ec: e9 8f 11 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP drop_type any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 5207f1: 48 8b 3d 68 a0 69 00 mov 0x69a068(%rip),%rdi # bba860 0.00 : 5207f8: be 28 00 00 00 mov $0x28,%esi 0.00 : 5207fd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520804: e8 07 86 27 00 callq 798e10 0.00 : 520809: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = $2; 0.00 : 52080f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->missing_ok = FALSE; : n->objects = $3; : n->arguments = NIL; : n->behavior = $4; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 520816: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | DROP drop_type any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; 0.00 : 520819: 8b 51 f0 mov -0x10(%rcx),%edx : n->missing_ok = FALSE; 0.00 : 52081c: c6 40 20 00 movb $0x0,0x20(%rax) : $$ = (Node *)n; : } : | DROP drop_type any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; 0.00 : 520820: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = FALSE; : n->objects = $3; 0.00 : 520823: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->arguments = NIL; 0.00 : 520827: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 52082e: 00 : | DROP drop_type any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; : n->missing_ok = FALSE; : n->objects = $3; 0.00 : 52082f: 48 89 50 08 mov %rdx,0x8(%rax) : n->arguments = NIL; : n->behavior = $4; 0.00 : 520833: 8b 11 mov (%rcx),%edx : n->concurrent = false; 0.00 : 520835: c6 40 21 00 movb $0x0,0x21(%rax) : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; : n->missing_ok = FALSE; : n->objects = $3; : n->arguments = NIL; : n->behavior = $4; 0.00 : 520839: 89 50 1c mov %edx,0x1c(%rax) : n->concurrent = false; : $$ = (Node *)n; : } : | DROP INDEX CONCURRENTLY any_name_list opt_drop_behavior 0.00 : 52083c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520843: e9 38 11 ff ff jmpq 511980 : * : *****************************************************************************/ : : DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520848: 48 8b 3d 11 a0 69 00 mov 0x69a011(%rip),%rdi # bba860 0.00 : 52084f: be 28 00 00 00 mov $0x28,%esi 0.00 : 520854: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52085b: e8 b0 85 27 00 callq 798e10 0.00 : 520860: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = $2; 0.00 : 520866: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->missing_ok = TRUE; : n->objects = $5; : n->arguments = NIL; : n->behavior = $6; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 52086d: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; 0.00 : 520870: 8b 56 e0 mov -0x20(%rsi),%edx : n->missing_ok = TRUE; 0.00 : 520873: c6 40 20 01 movb $0x1,0x20(%rax) : *****************************************************************************/ : : DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; 0.00 : 520877: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = TRUE; : n->objects = $5; 0.00 : 52087a: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->arguments = NIL; 0.00 : 52087e: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 520885: 00 : DropStmt: DROP drop_type IF_P EXISTS any_name_list opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; : n->missing_ok = TRUE; : n->objects = $5; 0.00 : 520886: 48 89 50 08 mov %rdx,0x8(%rax) : n->arguments = NIL; : n->behavior = $6; 0.00 : 52088a: 8b 16 mov (%rsi),%edx : n->concurrent = false; 0.00 : 52088c: c6 40 21 00 movb $0x0,0x21(%rax) : DropStmt *n = makeNode(DropStmt); : n->removeType = $2; : n->missing_ok = TRUE; : n->objects = $5; : n->arguments = NIL; : n->behavior = $6; 0.00 : 520890: 89 50 1c mov %edx,0x1c(%rax) : n->concurrent = false; : $$ = (Node *)n; : } : | DROP drop_type any_name_list opt_drop_behavior 0.00 : 520893: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52089a: e9 e1 10 ff ff jmpq 511980 : ; : : ReassignOwnedStmt: : REASSIGN OWNED BY role_list TO name : { : ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); 0.00 : 52089f: 48 8b 3d ba 9f 69 00 mov 0x699fba(%rip),%rdi # bba860 0.00 : 5208a6: be 18 00 00 00 mov $0x18,%esi 0.00 : 5208ab: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5208b2: e8 59 85 27 00 callq 798e10 0.00 : 5208b7: c7 00 04 03 00 00 movl $0x304,(%rax) : n->roles = $4; 0.00 : 5208bd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->newrole = $6; : $$ = (Node *)n; 0.00 : 5208c4: 49 89 c6 mov %rax,%r14 : : ReassignOwnedStmt: : REASSIGN OWNED BY role_list TO name : { : ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); : n->roles = $4; 0.00 : 5208c7: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 5208cb: 48 89 50 08 mov %rdx,0x8(%rax) : n->newrole = $6; 0.00 : 5208cf: 48 8b 13 mov (%rbx),%rdx 0.00 : 5208d2: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 5208d6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5208dd: e9 9e 10 ff ff jmpq 511980 : * : *****************************************************************************/ : DropOwnedStmt: : DROP OWNED BY role_list opt_drop_behavior : { : DropOwnedStmt *n = makeNode(DropOwnedStmt); 0.00 : 5208e2: 48 8b 3d 77 9f 69 00 mov 0x699f77(%rip),%rdi # bba860 0.00 : 5208e9: be 18 00 00 00 mov $0x18,%esi 0.00 : 5208ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5208f5: e8 16 85 27 00 callq 798e10 0.00 : 5208fa: c7 00 03 03 00 00 movl $0x303,(%rax) : n->roles = $4; 0.00 : 520900: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->behavior = $5; : $$ = (Node *)n; 0.00 : 520907: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : DropOwnedStmt: : DROP OWNED BY role_list opt_drop_behavior : { : DropOwnedStmt *n = makeNode(DropOwnedStmt); : n->roles = $4; 0.00 : 52090a: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52090e: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $5; 0.00 : 520912: 8b 11 mov (%rcx),%edx 0.00 : 520914: 89 50 10 mov %edx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 520917: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52091e: e9 5d 10 ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520923: 48 8b 3d 36 9f 69 00 mov 0x699f36(%rip),%rdi # bba860 0.00 : 52092a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52092f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520936: e8 d5 84 27 00 callq 798e10 0.00 : 52093b: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->objects = list_make1($6); 0.00 : 520941: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520948: 48 89 c3 mov %rax,%rbx : n->objects = list_make1($6); 0.00 : 52094b: 31 f6 xor %esi,%esi : n->arguments = list_make1(list_make1(makeString($8))); : n->removeType = OBJECT_OPFAMILY; : n->behavior = $9; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 52094d: 49 89 de mov %rbx,%r14 : $$ = (Node *) n; : } : | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); 0.00 : 520950: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 520954: e8 f7 0e 0c 00 callq 5e1850 0.00 : 520959: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(list_make1(makeString($8))); 0.00 : 52095d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520964: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 520968: e8 83 ed 0d 00 callq 5ff6f0 0.00 : 52096d: 31 f6 xor %esi,%esi 0.00 : 52096f: 48 89 c7 mov %rax,%rdi 0.00 : 520972: e8 d9 0e 0c 00 callq 5e1850 0.00 : 520977: 31 f6 xor %esi,%esi 0.00 : 520979: 48 89 c7 mov %rax,%rdi 0.00 : 52097c: e8 cf 0e 0c 00 callq 5e1850 : n->removeType = OBJECT_OPFAMILY; 0.00 : 520981: c7 43 18 15 00 00 00 movl $0x15,0x18(%rbx) : } : | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); : n->arguments = list_make1(list_make1(makeString($8))); 0.00 : 520988: 48 89 43 10 mov %rax,0x10(%rbx) : n->removeType = OBJECT_OPFAMILY; : n->behavior = $9; 0.00 : 52098c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520993: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 520995: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 520999: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); : n->arguments = list_make1(list_make1(makeString($8))); : n->removeType = OBJECT_OPFAMILY; : n->behavior = $9; 0.00 : 52099d: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 5209a0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5209a7: e9 d4 0f ff ff jmpq 511980 : ; : : DropOpFamilyStmt: : DROP OPERATOR FAMILY any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 5209ac: 48 8b 3d ad 9e 69 00 mov 0x699ead(%rip),%rdi # bba860 0.00 : 5209b3: be 28 00 00 00 mov $0x28,%esi 0.00 : 5209b8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5209bf: e8 4c 84 27 00 callq 798e10 0.00 : 5209c4: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->objects = list_make1($4); 0.00 : 5209ca: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : ; : : DropOpFamilyStmt: : DROP OPERATOR FAMILY any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 5209d1: 48 89 c3 mov %rax,%rbx : n->objects = list_make1($4); 0.00 : 5209d4: 31 f6 xor %esi,%esi : n->arguments = list_make1(list_make1(makeString($6))); : n->removeType = OBJECT_OPFAMILY; : n->behavior = $7; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 5209d6: 49 89 de mov %rbx,%r14 : : DropOpFamilyStmt: : DROP OPERATOR FAMILY any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); 0.00 : 5209d9: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 5209dd: e8 6e 0e 0c 00 callq 5e1850 0.00 : 5209e2: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(list_make1(makeString($6))); 0.00 : 5209e6: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5209ed: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 5209f1: e8 fa ec 0d 00 callq 5ff6f0 0.00 : 5209f6: 31 f6 xor %esi,%esi 0.00 : 5209f8: 48 89 c7 mov %rax,%rdi 0.00 : 5209fb: e8 50 0e 0c 00 callq 5e1850 0.00 : 520a00: 31 f6 xor %esi,%esi 0.00 : 520a02: 48 89 c7 mov %rax,%rdi 0.00 : 520a05: e8 46 0e 0c 00 callq 5e1850 : n->removeType = OBJECT_OPFAMILY; 0.00 : 520a0a: c7 43 18 15 00 00 00 movl $0x15,0x18(%rbx) : DropOpFamilyStmt: : DROP OPERATOR FAMILY any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); : n->arguments = list_make1(list_make1(makeString($6))); 0.00 : 520a11: 48 89 43 10 mov %rax,0x10(%rbx) : n->removeType = OBJECT_OPFAMILY; : n->behavior = $7; 0.00 : 520a15: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520a1c: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 520a1e: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 520a22: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); : n->arguments = list_make1(list_make1(makeString($6))); : n->removeType = OBJECT_OPFAMILY; : n->behavior = $7; 0.00 : 520a26: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior 0.00 : 520a29: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520a30: e9 4b 0f ff ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520a35: 48 8b 3d 24 9e 69 00 mov 0x699e24(%rip),%rdi # bba860 0.00 : 520a3c: be 28 00 00 00 mov $0x28,%esi 0.00 : 520a41: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520a48: e8 c3 83 27 00 callq 798e10 0.00 : 520a4d: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->objects = list_make1($6); 0.00 : 520a53: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520a5a: 48 89 c3 mov %rax,%rbx : n->objects = list_make1($6); 0.00 : 520a5d: 31 f6 xor %esi,%esi : n->arguments = list_make1(list_make1(makeString($8))); : n->removeType = OBJECT_OPCLASS; : n->behavior = $9; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 520a5f: 49 89 de mov %rbx,%r14 : $$ = (Node *) n; : } : | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); 0.00 : 520a62: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 520a66: e8 e5 0d 0c 00 callq 5e1850 0.00 : 520a6b: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(list_make1(makeString($8))); 0.00 : 520a6f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520a76: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 520a7a: e8 71 ec 0d 00 callq 5ff6f0 0.00 : 520a7f: 31 f6 xor %esi,%esi 0.00 : 520a81: 48 89 c7 mov %rax,%rdi 0.00 : 520a84: e8 c7 0d 0c 00 callq 5e1850 0.00 : 520a89: 31 f6 xor %esi,%esi 0.00 : 520a8b: 48 89 c7 mov %rax,%rdi 0.00 : 520a8e: e8 bd 0d 0c 00 callq 5e1850 : n->removeType = OBJECT_OPCLASS; 0.00 : 520a93: c7 43 18 13 00 00 00 movl $0x13,0x18(%rbx) : } : | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); : n->arguments = list_make1(list_make1(makeString($8))); 0.00 : 520a9a: 48 89 43 10 mov %rax,0x10(%rbx) : n->removeType = OBJECT_OPCLASS; : n->behavior = $9; 0.00 : 520a9e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520aa5: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 520aa7: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 520aab: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($6); : n->arguments = list_make1(list_make1(makeString($8))); : n->removeType = OBJECT_OPCLASS; : n->behavior = $9; 0.00 : 520aaf: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 520ab2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520ab9: e9 c2 0e ff ff jmpq 511980 : : : DropOpClassStmt: : DROP OPERATOR CLASS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520abe: 48 8b 3d 9b 9d 69 00 mov 0x699d9b(%rip),%rdi # bba860 0.00 : 520ac5: be 28 00 00 00 mov $0x28,%esi 0.00 : 520aca: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520ad1: e8 3a 83 27 00 callq 798e10 0.00 : 520ad6: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->objects = list_make1($4); 0.00 : 520adc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : : : DropOpClassStmt: : DROP OPERATOR CLASS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 520ae3: 48 89 c3 mov %rax,%rbx : n->arguments = list_make1(list_make1(makeString($6))); : n->removeType = OBJECT_OPCLASS; : n->behavior = $7; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 520ae6: 49 89 de mov %rbx,%r14 : : DropOpClassStmt: : DROP OPERATOR CLASS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); 0.00 : 520ae9: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 520aed: 31 f6 xor %esi,%esi 0.00 : 520aef: e8 5c 0d 0c 00 callq 5e1850 0.00 : 520af4: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = list_make1(list_make1(makeString($6))); 0.00 : 520af8: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 520aff: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 520b03: e8 e8 eb 0d 00 callq 5ff6f0 0.00 : 520b08: 31 f6 xor %esi,%esi 0.00 : 520b0a: 48 89 c7 mov %rax,%rdi 0.00 : 520b0d: e8 3e 0d 0c 00 callq 5e1850 0.00 : 520b12: 31 f6 xor %esi,%esi 0.00 : 520b14: 48 89 c7 mov %rax,%rdi 0.00 : 520b17: e8 34 0d 0c 00 callq 5e1850 : n->removeType = OBJECT_OPCLASS; 0.00 : 520b1c: c7 43 18 13 00 00 00 movl $0x13,0x18(%rbx) : DropOpClassStmt: : DROP OPERATOR CLASS any_name USING access_method opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); : n->arguments = list_make1(list_make1(makeString($6))); 0.00 : 520b23: 48 89 43 10 mov %rax,0x10(%rbx) : n->removeType = OBJECT_OPCLASS; : n->behavior = $7; 0.00 : 520b27: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520b2e: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 520b30: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 520b34: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->objects = list_make1($4); : n->arguments = list_make1(list_make1(makeString($6))); : n->removeType = OBJECT_OPCLASS; : n->behavior = $7; 0.00 : 520b38: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; : } : | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior 0.00 : 520b3b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520b42: e9 39 0e ff ff jmpq 511980 : n->args = $4; : $$ = (Node *) n; : } : | FUNCTION Iconst '(' type_list ')' : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520b47: 48 8b 3d 12 9d 69 00 mov 0x699d12(%rip),%rdi # bba860 0.00 : 520b4e: be 38 00 00 00 mov $0x38,%esi 0.00 : 520b53: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520b5a: e8 b1 82 27 00 callq 798e10 0.00 : 520b5f: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_FUNCTION; 0.00 : 520b65: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->number = $2; : n->args = $4; : $$ = (Node *) n; 0.00 : 520b6c: 49 89 c6 mov %rax,%r14 : } : | FUNCTION Iconst '(' type_list ')' : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_FUNCTION; : n->number = $2; 0.00 : 520b6f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 520b76: 8b 53 e8 mov -0x18(%rbx),%edx 0.00 : 520b79: 89 50 18 mov %edx,0x18(%rax) : n->args = $4; 0.00 : 520b7c: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 520b80: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 520b84: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520b8b: e9 f0 0d ff ff jmpq 511980 : ; : : opclass_drop: : OPERATOR Iconst '(' type_list ')' : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520b90: 48 8b 3d c9 9c 69 00 mov 0x699cc9(%rip),%rdi # bba860 0.00 : 520b97: be 38 00 00 00 mov $0x38,%esi 0.00 : 520b9c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520ba3: e8 68 82 27 00 callq 798e10 0.00 : 520ba8: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_OPERATOR; 0.00 : 520bae: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->number = $2; : n->args = $4; : $$ = (Node *) n; 0.00 : 520bb5: 49 89 c6 mov %rax,%r14 : opclass_drop: : OPERATOR Iconst '(' type_list ')' : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_OPERATOR; : n->number = $2; 0.00 : 520bb8: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 520bbf: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 520bc2: 89 50 18 mov %edx,0x18(%rax) : n->args = $4; 0.00 : 520bc5: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 520bc9: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : | FUNCTION Iconst '(' type_list ')' 0.00 : 520bcd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520bd4: e9 a7 0d ff ff jmpq 511980 : } : ; : : opclass_drop_list: : opclass_drop { $$ = list_make1($1); } : | opclass_drop_list ',' opclass_drop { $$ = lappend($1, $3); } 0.00 : 520bd9: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520be0: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 520be4: 48 8b 32 mov (%rdx),%rsi 0.00 : 520be7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520bee: e8 8d 12 0c 00 callq 5e1e80 : ; 0.00 : 520bf3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : opclass_drop_list: : opclass_drop { $$ = list_make1($1); } : | opclass_drop_list ',' opclass_drop { $$ = lappend($1, $3); } 0.00 : 520bfa: 49 89 c6 mov %rax,%r14 : ; 0.00 : 520bfd: e9 7e 0d ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opclass_drop_list: : opclass_drop { $$ = list_make1($1); } 0.00 : 520c02: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 520c09: 31 f6 xor %esi,%esi 0.00 : 520c0b: 48 8b 38 mov (%rax),%rdi 0.00 : 520c0e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520c15: e8 36 0c 0c 00 callq 5e1850 : | opclass_drop_list ',' opclass_drop { $$ = lappend($1, $3); } 0.00 : 520c1a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) n; : } : ; : : opclass_drop_list: : opclass_drop { $$ = list_make1($1); } 0.00 : 520c21: 49 89 c6 mov %rax,%r14 : | opclass_drop_list ',' opclass_drop { $$ = lappend($1, $3); } 0.00 : 520c24: e9 57 0d ff ff jmpq 511980 : n->items = $8; : $$ = (Node *) n; : } : | ALTER OPERATOR FAMILY any_name USING access_method DROP opclass_drop_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); 0.00 : 520c29: 48 8b 3d 30 9c 69 00 mov 0x699c30(%rip),%rdi # bba860 0.00 : 520c30: be 28 00 00 00 mov $0x28,%esi 0.00 : 520c35: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520c3c: e8 cf 81 27 00 callq 798e10 0.00 : 520c41: c7 00 fa 02 00 00 movl $0x2fa,(%rax) : n->opfamilyname = $4; 0.00 : 520c47: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->amname = $6; : n->isDrop = true; : n->items = $8; : $$ = (Node *) n; 0.00 : 520c4e: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER OPERATOR FAMILY any_name USING access_method DROP opclass_drop_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); : n->opfamilyname = $4; 0.00 : 520c51: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 520c55: 48 89 50 08 mov %rdx,0x8(%rax) : n->amname = $6; 0.00 : 520c59: 48 8b 56 f0 mov -0x10(%rsi),%rdx : n->isDrop = true; 0.00 : 520c5d: c6 40 18 01 movb $0x1,0x18(%rax) : } : | ALTER OPERATOR FAMILY any_name USING access_method DROP opclass_drop_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); : n->opfamilyname = $4; : n->amname = $6; 0.00 : 520c61: 48 89 50 10 mov %rdx,0x10(%rax) : n->isDrop = true; : n->items = $8; 0.00 : 520c65: 48 8b 16 mov (%rsi),%rdx 0.00 : 520c68: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : ; 0.00 : 520c6c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520c73: e9 08 0d ff ff jmpq 511980 : ; : : AlterOpFamilyStmt: : ALTER OPERATOR FAMILY any_name USING access_method ADD_P opclass_item_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); 0.00 : 520c78: 48 8b 3d e1 9b 69 00 mov 0x699be1(%rip),%rdi # bba860 0.00 : 520c7f: be 28 00 00 00 mov $0x28,%esi 0.00 : 520c84: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520c8b: e8 80 81 27 00 callq 798e10 0.00 : 520c90: c7 00 fa 02 00 00 movl $0x2fa,(%rax) : n->opfamilyname = $4; 0.00 : 520c96: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->amname = $6; : n->isDrop = false; : n->items = $8; : $$ = (Node *) n; 0.00 : 520c9d: 49 89 c6 mov %rax,%r14 : : AlterOpFamilyStmt: : ALTER OPERATOR FAMILY any_name USING access_method ADD_P opclass_item_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); : n->opfamilyname = $4; 0.00 : 520ca0: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 520ca4: 48 89 50 08 mov %rdx,0x8(%rax) : n->amname = $6; 0.00 : 520ca8: 48 8b 53 f0 mov -0x10(%rbx),%rdx : n->isDrop = false; 0.00 : 520cac: c6 40 18 00 movb $0x0,0x18(%rax) : AlterOpFamilyStmt: : ALTER OPERATOR FAMILY any_name USING access_method ADD_P opclass_item_list : { : AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); : n->opfamilyname = $4; : n->amname = $6; 0.00 : 520cb0: 48 89 50 10 mov %rdx,0x10(%rax) : n->isDrop = false; : n->items = $8; 0.00 : 520cb4: 48 8b 13 mov (%rbx),%rdx 0.00 : 520cb7: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : | ALTER OPERATOR FAMILY any_name USING access_method DROP opclass_drop_list 0.00 : 520cbb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520cc2: e9 b9 0c ff ff jmpq 511980 : : : CreateOpFamilyStmt: : CREATE OPERATOR FAMILY any_name USING access_method : { : CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); 0.00 : 520cc7: 48 8b 3d 92 9b 69 00 mov 0x699b92(%rip),%rdi # bba860 0.00 : 520cce: be 18 00 00 00 mov $0x18,%esi 0.00 : 520cd3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520cda: e8 31 81 27 00 callq 798e10 0.00 : 520cdf: c7 00 f9 02 00 00 movl $0x2f9,(%rax) : n->opfamilyname = $4; 0.00 : 520ce5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->amname = $6; : $$ = (Node *) n; 0.00 : 520cec: 49 89 c6 mov %rax,%r14 : : CreateOpFamilyStmt: : CREATE OPERATOR FAMILY any_name USING access_method : { : CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); : n->opfamilyname = $4; 0.00 : 520cef: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 520cf3: 48 89 50 08 mov %rdx,0x8(%rax) : n->amname = $6; 0.00 : 520cf7: 48 8b 11 mov (%rcx),%rdx 0.00 : 520cfa: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 520cfe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520d05: e9 76 0c ff ff jmpq 511980 : errmsg("RECHECK is no longer required"), : errhint("Update your data type."), : parser_errposition(@1))); : $$ = TRUE; : } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 520d0a: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 520d0d: e9 6e 0c ff ff jmpq 511980 : /* : * RECHECK no longer does anything in opclass definitions, : * but we still accept it to ease porting of old database : * dumps. : */ : ereport(NOTICE, 0.00 : 520d12: 45 31 c0 xor %r8d,%r8d 0.00 : 520d15: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 520d1a: ba a9 14 00 00 mov $0x14a9,%edx 0.00 : 520d1f: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 520d24: bf 12 00 00 00 mov $0x12,%edi 0.00 : 520d29: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520d30: e8 8b 9d 25 00 callq 77aac0 0.00 : 520d35: 84 c0 test %al,%al 0.00 : 520d37: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520d3e: 74 57 je 520d97 0.00 : 520d40: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 520d47: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 520d4e: 8b 38 mov (%rax),%edi 0.00 : 520d50: e8 4b cf fe ff callq 50dca0 0.00 : 520d55: bf 52 96 7c 00 mov $0x7c9652,%edi 0.00 : 520d5a: 41 89 c5 mov %eax,%r13d 0.00 : 520d5d: 31 c0 xor %eax,%eax 0.00 : 520d5f: e8 3c af 25 00 callq 77bca0 0.00 : 520d64: bf 69 96 7c 00 mov $0x7c9669,%edi 0.00 : 520d69: 89 c3 mov %eax,%ebx 0.00 : 520d6b: 31 c0 xor %eax,%eax 0.00 : 520d6d: e8 2e bb 25 00 callq 77c8a0 0.00 : 520d72: bf 40 04 00 00 mov $0x440,%edi 0.00 : 520d77: 41 89 c4 mov %eax,%r12d 0.00 : 520d7a: e8 d1 bf 25 00 callq 77cd50 0.00 : 520d7f: 44 89 e9 mov %r13d,%ecx 0.00 : 520d82: 89 c7 mov %eax,%edi 0.00 : 520d84: 89 da mov %ebx,%edx 0.00 : 520d86: 44 89 e6 mov %r12d,%esi 0.00 : 520d89: 31 c0 xor %eax,%eax 0.00 : 520d8b: e8 50 98 25 00 callq 77a5e0 0.00 : 520d90: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("RECHECK is no longer required"), : errhint("Update your data type."), : parser_errposition(@1))); : $$ = TRUE; 0.00 : 520d97: 41 b6 01 mov $0x1,%r14b : } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 520d9a: e9 e1 0b ff ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : opclass_purpose: FOR SEARCH { $$ = NIL; } : | FOR ORDER BY any_name { $$ = $4; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 520d9f: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 520da2: e9 d9 0b ff ff jmpq 511980 : opt_opfamily: FAMILY any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opclass_purpose: FOR SEARCH { $$ = NIL; } : | FOR ORDER BY any_name { $$ = $4; } 0.00 : 520da7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520dae: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 520db1: e9 ca 0b ff ff jmpq 511980 : : opt_opfamily: FAMILY any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : opclass_purpose: FOR SEARCH { $$ = NIL; } 0.00 : 520db6: 45 31 f6 xor %r14d,%r14d : | FOR ORDER BY any_name { $$ = $4; } 0.00 : 520db9: e9 c2 0b ff ff jmpq 511980 : opt_default: DEFAULT { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_opfamily: FAMILY any_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 520dbe: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 520dc1: e9 ba 0b ff ff jmpq 511980 : : opt_default: DEFAULT { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } : ; : : opt_opfamily: FAMILY any_name { $$ = $2; } 0.00 : 520dc6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 520dcd: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 520dd0: e9 ab 0b ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_default: DEFAULT { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 520dd5: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 520dd8: e9 a3 0b ff ff jmpq 511980 : n->storedtype = $2; : $$ = (Node *) n; : } : ; : : opt_default: DEFAULT { $$ = TRUE; } 0.00 : 520ddd: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 520de0: e9 9b 0b ff ff jmpq 511980 : n->class_args = $4; : $$ = (Node *) n; : } : | STORAGE Typename : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520de5: 48 8b 3d 74 9a 69 00 mov 0x699a74(%rip),%rdi # bba860 0.00 : 520dec: be 38 00 00 00 mov $0x38,%esi 0.00 : 520df1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520df8: e8 13 80 27 00 callq 798e10 0.00 : 520dfd: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_STORAGETYPE; 0.00 : 520e03: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->storedtype = $2; : $$ = (Node *) n; 0.00 : 520e0a: 49 89 c6 mov %rax,%r14 : } : | STORAGE Typename : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_STORAGETYPE; : n->storedtype = $2; 0.00 : 520e0d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 520e14: 48 8b 11 mov (%rcx),%rdx 0.00 : 520e17: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *) n; : } : ; 0.00 : 520e1b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520e22: e9 59 0b ff ff jmpq 511980 : n->number = $2; : $$ = (Node *) n; : } : | FUNCTION Iconst '(' type_list ')' func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520e27: 48 8b 3d 32 9a 69 00 mov 0x699a32(%rip),%rdi # bba860 0.00 : 520e2e: be 38 00 00 00 mov $0x38,%esi 0.00 : 520e33: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520e3a: e8 d1 7f 27 00 callq 798e10 0.00 : 520e3f: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_FUNCTION; 0.00 : 520e45: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->number = $2; : $$ = (Node *) n; : } : | FUNCTION Iconst '(' type_list ')' func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520e4c: 48 89 c3 mov %rax,%rbx : n->itemtype = OPCLASS_ITEM_FUNCTION; : n->name = $6; 0.00 : 520e4f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->args = extractArgTypes($7); : n->number = $2; : n->class_args = $4; : $$ = (Node *) n; 0.00 : 520e56: 49 89 de mov %rbx,%r14 : } : | FUNCTION Iconst '(' type_list ')' func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_FUNCTION; : n->name = $6; 0.00 : 520e59: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 520e5d: 48 89 43 08 mov %rax,0x8(%rbx) : n->args = extractArgTypes($7); 0.00 : 520e61: 48 8b 39 mov (%rcx),%rdi 0.00 : 520e64: e8 07 fc fe ff callq 510a70 0.00 : 520e69: 48 89 43 10 mov %rax,0x10(%rbx) : n->number = $2; 0.00 : 520e6d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520e74: 8b 46 d8 mov -0x28(%rsi),%eax 0.00 : 520e77: 89 43 18 mov %eax,0x18(%rbx) : n->class_args = $4; 0.00 : 520e7a: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 520e7e: 48 89 43 28 mov %rax,0x28(%rbx) : $$ = (Node *) n; : } : | STORAGE Typename 0.00 : 520e82: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520e89: e9 f2 0a ff ff jmpq 511980 : n->order_family = $5; : $$ = (Node *) n; : } : | FUNCTION Iconst func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520e8e: 48 8b 3d cb 99 69 00 mov 0x6999cb(%rip),%rdi # bba860 0.00 : 520e95: be 38 00 00 00 mov $0x38,%esi 0.00 : 520e9a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520ea1: e8 6a 7f 27 00 callq 798e10 0.00 : 520ea6: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_FUNCTION; 0.00 : 520eac: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->order_family = $5; : $$ = (Node *) n; : } : | FUNCTION Iconst func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520eb3: 48 89 c3 mov %rax,%rbx : n->itemtype = OPCLASS_ITEM_FUNCTION; : n->name = $3; 0.00 : 520eb6: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->args = extractArgTypes($4); : n->number = $2; : $$ = (Node *) n; 0.00 : 520ebd: 49 89 de mov %rbx,%r14 : } : | FUNCTION Iconst func_name func_args : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_FUNCTION; : n->name = $3; 0.00 : 520ec0: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 520ec4: 48 89 43 08 mov %rax,0x8(%rbx) : n->args = extractArgTypes($4); 0.00 : 520ec8: 48 8b 3e mov (%rsi),%rdi 0.00 : 520ecb: e8 a0 fb fe ff callq 510a70 0.00 : 520ed0: 48 89 43 10 mov %rax,0x10(%rbx) : n->number = $2; 0.00 : 520ed4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 520edb: 8b 42 f0 mov -0x10(%rdx),%eax 0.00 : 520ede: 89 43 18 mov %eax,0x18(%rbx) : $$ = (Node *) n; : } : | FUNCTION Iconst '(' type_list ')' func_name func_args 0.00 : 520ee1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520ee8: e9 93 0a ff ff jmpq 511980 : $$ = (Node *) n; : } : | OPERATOR Iconst any_operator oper_argtypes opclass_purpose : opt_recheck : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520eed: 48 8b 3d 6c 99 69 00 mov 0x69996c(%rip),%rdi # bba860 0.00 : 520ef4: be 38 00 00 00 mov $0x38,%esi 0.00 : 520ef9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520f00: e8 0b 7f 27 00 callq 798e10 0.00 : 520f05: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_OPERATOR; 0.00 : 520f0b: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->name = $3; : n->args = $4; : n->number = $2; : n->order_family = $5; : $$ = (Node *) n; 0.00 : 520f12: 49 89 c6 mov %rax,%r14 : | OPERATOR Iconst any_operator oper_argtypes opclass_purpose : opt_recheck : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_OPERATOR; : n->name = $3; 0.00 : 520f15: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 520f1c: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 520f20: 48 89 50 08 mov %rdx,0x8(%rax) : n->args = $4; 0.00 : 520f24: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 520f28: 48 89 50 10 mov %rdx,0x10(%rax) : n->number = $2; 0.00 : 520f2c: 8b 53 e0 mov -0x20(%rbx),%edx 0.00 : 520f2f: 89 50 18 mov %edx,0x18(%rax) : n->order_family = $5; 0.00 : 520f32: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 520f36: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : | FUNCTION Iconst func_name func_args 0.00 : 520f3a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520f41: e9 3a 0a ff ff jmpq 511980 : ; : : opclass_item: : OPERATOR Iconst any_operator opclass_purpose opt_recheck : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); 0.00 : 520f46: 48 8b 3d 13 99 69 00 mov 0x699913(%rip),%rdi # bba860 0.00 : 520f4d: be 38 00 00 00 mov $0x38,%esi 0.00 : 520f52: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520f59: e8 b2 7e 27 00 callq 798e10 0.00 : 520f5e: c7 00 a2 03 00 00 movl $0x3a2,(%rax) : n->itemtype = OPCLASS_ITEM_OPERATOR; 0.00 : 520f64: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->name = $3; : n->args = NIL; : n->number = $2; : n->order_family = $4; : $$ = (Node *) n; 0.00 : 520f6b: 49 89 c6 mov %rax,%r14 : opclass_item: : OPERATOR Iconst any_operator opclass_purpose opt_recheck : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_OPERATOR; : n->name = $3; 0.00 : 520f6e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 520f75: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->args = NIL; 0.00 : 520f79: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 520f80: 00 : opclass_item: : OPERATOR Iconst any_operator opclass_purpose opt_recheck : { : CreateOpClassItem *n = makeNode(CreateOpClassItem); : n->itemtype = OPCLASS_ITEM_OPERATOR; : n->name = $3; 0.00 : 520f81: 48 89 50 08 mov %rdx,0x8(%rax) : n->args = NIL; : n->number = $2; 0.00 : 520f85: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 520f88: 89 50 18 mov %edx,0x18(%rax) : n->order_family = $4; 0.00 : 520f8b: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 520f8f: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : | OPERATOR Iconst any_operator oper_argtypes opclass_purpose 0.00 : 520f93: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 520f9a: e9 e1 09 ff ff jmpq 511980 : } : ; : : opclass_item_list: : opclass_item { $$ = list_make1($1); } : | opclass_item_list ',' opclass_item { $$ = lappend($1, $3); } 0.00 : 520f9f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 520fa6: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 520faa: 48 8b 36 mov (%rsi),%rsi 0.00 : 520fad: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520fb4: e8 c7 0e 0c 00 callq 5e1e80 : ; 0.00 : 520fb9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : opclass_item_list: : opclass_item { $$ = list_make1($1); } : | opclass_item_list ',' opclass_item { $$ = lappend($1, $3); } 0.00 : 520fc0: 49 89 c6 mov %rax,%r14 : ; 0.00 : 520fc3: e9 b8 09 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opclass_item_list: : opclass_item { $$ = list_make1($1); } 0.00 : 520fc8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 520fcf: 31 f6 xor %esi,%esi 0.00 : 520fd1: 48 8b 3b mov (%rbx),%rdi 0.00 : 520fd4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 520fdb: e8 70 08 0c 00 callq 5e1850 : | opclass_item_list ',' opclass_item { $$ = lappend($1, $3); } 0.00 : 520fe0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) n; : } : ; : : opclass_item_list: : opclass_item { $$ = list_make1($1); } 0.00 : 520fe7: 49 89 c6 mov %rax,%r14 : | opclass_item_list ',' opclass_item { $$ = lappend($1, $3); } 0.00 : 520fea: e9 91 09 ff ff jmpq 511980 : : CreateOpClassStmt: : CREATE OPERATOR CLASS any_name opt_default FOR TYPE_P Typename : USING access_method opt_opfamily AS opclass_item_list : { : CreateOpClassStmt *n = makeNode(CreateOpClassStmt); 0.00 : 520fef: 48 8b 3d 6a 98 69 00 mov 0x69986a(%rip),%rdi # bba860 0.00 : 520ff6: be 38 00 00 00 mov $0x38,%esi 0.00 : 520ffb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521002: e8 09 7e 27 00 callq 798e10 0.00 : 521007: c7 00 f8 02 00 00 movl $0x2f8,(%rax) : n->opclassname = $4; 0.00 : 52100d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->isDefault = $5; : n->datatype = $8; : n->amname = $10; : n->opfamilyname = $11; : n->items = $13; : $$ = (Node *) n; 0.00 : 521014: 49 89 c6 mov %rax,%r14 : CreateOpClassStmt: : CREATE OPERATOR CLASS any_name opt_default FOR TYPE_P Typename : USING access_method opt_opfamily AS opclass_item_list : { : CreateOpClassStmt *n = makeNode(CreateOpClassStmt); : n->opclassname = $4; 0.00 : 521017: 48 8b 51 b8 mov -0x48(%rcx),%rdx 0.00 : 52101b: 48 89 50 08 mov %rdx,0x8(%rax) : n->isDefault = $5; 0.00 : 52101f: 0f b6 51 c0 movzbl -0x40(%rcx),%edx 0.00 : 521023: 88 50 30 mov %dl,0x30(%rax) : n->datatype = $8; 0.00 : 521026: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 52102a: 48 89 50 20 mov %rdx,0x20(%rax) : n->amname = $10; 0.00 : 52102e: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 521032: 48 89 50 18 mov %rdx,0x18(%rax) : n->opfamilyname = $11; 0.00 : 521036: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 52103a: 48 89 50 10 mov %rdx,0x10(%rax) : n->items = $13; 0.00 : 52103e: 48 8b 11 mov (%rcx),%rdx 0.00 : 521041: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *) n; : } : ; 0.00 : 521045: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52104c: e9 2f 09 ff ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_if_not_exists: IF_P NOT EXISTS { $$ = true; } : | /* empty */ { $$ = false; } 0.00 : 521051: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 521054: e9 27 09 ff ff jmpq 511980 : n->skipIfExists = $6; : $$ = (Node *) n; : } : ; : : opt_if_not_exists: IF_P NOT EXISTS { $$ = true; } 0.00 : 521059: 41 b6 01 mov $0x1,%r14b : | /* empty */ { $$ = false; } 0.00 : 52105c: e9 1f 09 ff ff jmpq 511980 : n->skipIfExists = $6; : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst AFTER Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); 0.00 : 521061: 48 8b 3d f8 97 69 00 mov 0x6997f8(%rip),%rdi # bba860 0.00 : 521068: be 28 00 00 00 mov $0x28,%esi 0.00 : 52106d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521074: e8 97 7d 27 00 callq 798e10 0.00 : 521079: c7 00 08 03 00 00 movl $0x308,(%rax) : n->typeName = $3; 0.00 : 52107f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->newVal = $7; : n->newValNeighbor = $9; : n->newValIsAfter = true; : n->skipIfExists = $6; : $$ = (Node *) n; 0.00 : 521086: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst AFTER Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; 0.00 : 521089: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 52108d: 48 89 50 08 mov %rdx,0x8(%rax) : n->newVal = $7; 0.00 : 521091: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 521095: 48 89 50 10 mov %rdx,0x10(%rax) : n->newValNeighbor = $9; 0.00 : 521099: 48 8b 16 mov (%rsi),%rdx : n->newValIsAfter = true; 0.00 : 52109c: c6 40 20 01 movb $0x1,0x20(%rax) : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst AFTER Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; : n->newVal = $7; : n->newValNeighbor = $9; 0.00 : 5210a0: 48 89 50 18 mov %rdx,0x18(%rax) : n->newValIsAfter = true; : n->skipIfExists = $6; 0.00 : 5210a4: 0f b6 56 e8 movzbl -0x18(%rsi),%edx 0.00 : 5210a8: 88 50 21 mov %dl,0x21(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5210ab: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5210b2: e9 c9 08 ff ff jmpq 511980 : n->skipIfExists = $6; : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst BEFORE Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); 0.00 : 5210b7: 48 8b 3d a2 97 69 00 mov 0x6997a2(%rip),%rdi # bba860 0.00 : 5210be: be 28 00 00 00 mov $0x28,%esi 0.00 : 5210c3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5210ca: e8 41 7d 27 00 callq 798e10 0.00 : 5210cf: c7 00 08 03 00 00 movl $0x308,(%rax) : n->typeName = $3; 0.00 : 5210d5: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->newVal = $7; : n->newValNeighbor = $9; : n->newValIsAfter = false; : n->skipIfExists = $6; : $$ = (Node *) n; 0.00 : 5210dc: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst BEFORE Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; 0.00 : 5210df: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 5210e3: 48 89 50 08 mov %rdx,0x8(%rax) : n->newVal = $7; 0.00 : 5210e7: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 5210eb: 48 89 50 10 mov %rdx,0x10(%rax) : n->newValNeighbor = $9; 0.00 : 5210ef: 48 8b 13 mov (%rbx),%rdx : n->newValIsAfter = false; 0.00 : 5210f2: c6 40 20 00 movb $0x0,0x20(%rax) : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst BEFORE Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; : n->newVal = $7; : n->newValNeighbor = $9; 0.00 : 5210f6: 48 89 50 18 mov %rdx,0x18(%rax) : n->newValIsAfter = false; : n->skipIfExists = $6; 0.00 : 5210fa: 0f b6 53 e8 movzbl -0x18(%rbx),%edx 0.00 : 5210fe: 88 50 21 mov %dl,0x21(%rax) : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst AFTER Sconst 0.00 : 521101: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521108: e9 73 08 ff ff jmpq 511980 : *****************************************************************************/ : : AlterEnumStmt: : ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); 0.00 : 52110d: 48 8b 3d 4c 97 69 00 mov 0x69974c(%rip),%rdi # bba860 0.00 : 521114: be 28 00 00 00 mov $0x28,%esi 0.00 : 521119: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521120: e8 eb 7c 27 00 callq 798e10 0.00 : 521125: c7 00 08 03 00 00 movl $0x308,(%rax) : n->typeName = $3; 0.00 : 52112b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->newVal = $7; : n->newValNeighbor = NULL; : n->newValIsAfter = true; : n->skipIfExists = $6; : $$ = (Node *) n; 0.00 : 521132: 49 89 c6 mov %rax,%r14 : : AlterEnumStmt: : ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; 0.00 : 521135: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 521139: 48 89 50 08 mov %rdx,0x8(%rax) : n->newVal = $7; 0.00 : 52113d: 48 8b 11 mov (%rcx),%rdx : n->newValNeighbor = NULL; 0.00 : 521140: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521147: 00 : n->newValIsAfter = true; 0.00 : 521148: c6 40 20 01 movb $0x1,0x20(%rax) : AlterEnumStmt: : ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst : { : AlterEnumStmt *n = makeNode(AlterEnumStmt); : n->typeName = $3; : n->newVal = $7; 0.00 : 52114c: 48 89 50 10 mov %rdx,0x10(%rax) : n->newValNeighbor = NULL; : n->newValIsAfter = true; : n->skipIfExists = $6; 0.00 : 521150: 0f b6 51 f8 movzbl -0x8(%rcx),%edx 0.00 : 521154: 88 50 21 mov %dl,0x21(%rax) : $$ = (Node *) n; : } : | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists Sconst BEFORE Sconst 0.00 : 521157: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52115e: e9 1d 08 ff ff jmpq 511980 : ; : : enum_val_list: Sconst : { $$ = list_make1(makeString($1)); } : | enum_val_list ',' Sconst : { $$ = lappend($1, makeString($3)); } 0.00 : 521163: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52116a: 48 8b 3e mov (%rsi),%rdi 0.00 : 52116d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521174: e8 77 e5 0d 00 callq 5ff6f0 0.00 : 521179: 48 89 c6 mov %rax,%rsi 0.00 : 52117c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521183: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 521187: e8 f4 0c 0c 00 callq 5e1e80 : ; 0.00 : 52118c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : enum_val_list: Sconst : { $$ = list_make1(makeString($1)); } : | enum_val_list ',' Sconst : { $$ = lappend($1, makeString($3)); } 0.00 : 521193: 49 89 c6 mov %rax,%r14 : ; 0.00 : 521196: e9 e5 07 ff ff jmpq 511980 : enum_val_list { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : enum_val_list: Sconst : { $$ = list_make1(makeString($1)); } 0.00 : 52119b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5211a2: 48 8b 3b mov (%rbx),%rdi 0.00 : 5211a5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5211ac: e8 3f e5 0d 00 callq 5ff6f0 0.00 : 5211b1: 31 f6 xor %esi,%esi 0.00 : 5211b3: 48 89 c7 mov %rax,%rdi 0.00 : 5211b6: e8 95 06 0c 00 callq 5e1850 : | enum_val_list ',' Sconst 0.00 : 5211bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : enum_val_list { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : enum_val_list: Sconst : { $$ = list_make1(makeString($1)); } 0.00 : 5211c2: 49 89 c6 mov %rax,%r14 : | enum_val_list ',' Sconst 0.00 : 5211c5: e9 b6 07 ff ff jmpq 511980 : } : ; : : opt_enum_val_list: : enum_val_list { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5211ca: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5211cd: e9 ae 07 ff ff jmpq 511980 : $$ = makeDefElem($1, (Node *)$3); : } : ; : : opt_enum_val_list: : enum_val_list { $$ = $1; } 0.00 : 5211d2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5211d9: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5211dc: e9 9f 07 ff ff jmpq 511980 : * the item names needed in old aggregate definitions are likely to become : * SQL keywords. : */ : old_aggr_elem: IDENT '=' def_arg : { : $$ = makeDefElem($1, (Node *)$3); 0.00 : 5211e1: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5211e8: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5211ec: 48 8b 32 mov (%rdx),%rsi 0.00 : 5211ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5211f6: e8 05 03 0d 00 callq 5f1500 : } : ; 0.00 : 5211fb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * the item names needed in old aggregate definitions are likely to become : * SQL keywords. : */ : old_aggr_elem: IDENT '=' def_arg : { : $$ = makeDefElem($1, (Node *)$3); 0.00 : 521202: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 521205: e9 76 07 ff ff jmpq 511980 : : old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } : ; : : old_aggr_list: old_aggr_elem { $$ = list_make1($1); } : | old_aggr_list ',' old_aggr_elem { $$ = lappend($1, $3); } 0.00 : 52120a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521211: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 521215: 48 8b 36 mov (%rsi),%rsi 0.00 : 521218: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52121f: e8 5c 0c 0c 00 callq 5e1e80 : ; 0.00 : 521224: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } : ; : : old_aggr_list: old_aggr_elem { $$ = list_make1($1); } : | old_aggr_list ',' old_aggr_elem { $$ = lappend($1, $3); } 0.00 : 52122b: 49 89 c6 mov %rax,%r14 : ; 0.00 : 52122e: e9 4d 07 ff ff jmpq 511980 : ; : : old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } : ; : : old_aggr_list: old_aggr_elem { $$ = list_make1($1); } 0.00 : 521233: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52123a: 31 f6 xor %esi,%esi 0.00 : 52123c: 48 8b 3b mov (%rbx),%rdi 0.00 : 52123f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521246: e8 05 06 0c 00 callq 5e1850 : | old_aggr_list ',' old_aggr_elem { $$ = lappend($1, $3); } 0.00 : 52124b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } : ; : : old_aggr_list: old_aggr_elem { $$ = list_make1($1); } 0.00 : 521252: 49 89 c6 mov %rax,%r14 : | old_aggr_list ',' old_aggr_elem { $$ = lappend($1, $3); } 0.00 : 521255: e9 26 07 ff ff jmpq 511980 : | qual_all_Op { $$ = (Node *)$1; } : | NumericOnly { $$ = (Node *)$1; } : | Sconst { $$ = (Node *)makeString($1); } : ; : : old_aggr_definition: '(' old_aggr_list ')' { $$ = $2; } 0.00 : 52125a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521261: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : ; 0.00 : 521265: e9 16 07 ff ff jmpq 511980 : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } : | qual_all_Op { $$ = (Node *)$1; } : | NumericOnly { $$ = (Node *)$1; } : | Sconst { $$ = (Node *)makeString($1); } 0.00 : 52126a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521271: 48 8b 3a mov (%rdx),%rdi 0.00 : 521274: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52127b: e8 70 e4 0d 00 callq 5ff6f0 : ; 0.00 : 521280: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } : | qual_all_Op { $$ = (Node *)$1; } : | NumericOnly { $$ = (Node *)$1; } : | Sconst { $$ = (Node *)makeString($1); } 0.00 : 521287: 49 89 c6 mov %rax,%r14 : ; 0.00 : 52128a: e9 f1 06 ff ff jmpq 511980 : : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } : | qual_all_Op { $$ = (Node *)$1; } : | NumericOnly { $$ = (Node *)$1; } 0.00 : 52128f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521296: 4c 8b 30 mov (%rax),%r14 : | Sconst { $$ = (Node *)makeString($1); } 0.00 : 521299: e9 e2 06 ff ff jmpq 511980 : ; : : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } : | qual_all_Op { $$ = (Node *)$1; } 0.00 : 52129e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5212a5: 4c 8b 36 mov (%rsi),%r14 : | NumericOnly { $$ = (Node *)$1; } 0.00 : 5212a8: e9 d3 06 ff ff jmpq 511980 : } : ; : : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } 0.00 : 5212ad: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5212b4: 48 8b 3b mov (%rbx),%rdi 0.00 : 5212b7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5212be: e8 8d 7c 27 00 callq 798f50 0.00 : 5212c3: 48 89 c7 mov %rax,%rdi 0.00 : 5212c6: e8 25 e4 0d 00 callq 5ff6f0 : | qual_all_Op { $$ = (Node *)$1; } 0.00 : 5212cb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } 0.00 : 5212d2: 49 89 c6 mov %rax,%r14 : | qual_all_Op { $$ = (Node *)$1; } 0.00 : 5212d5: e9 a6 06 ff ff jmpq 511980 : $$ = makeDefElem($1, NULL); : } : ; : : /* Note: any simple identifier will be returned as a type name! */ : def_arg: func_type { $$ = (Node *)$1; } 0.00 : 5212da: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5212e1: 4c 8b 31 mov (%rcx),%r14 : | reserved_keyword { $$ = (Node *)makeString(pstrdup($1)); } 0.00 : 5212e4: e9 97 06 ff ff jmpq 511980 : { : $$ = makeDefElem($1, (Node *) $3); : } : | ColLabel : { : $$ = makeDefElem($1, NULL); 0.00 : 5212e9: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5212f0: 31 f6 xor %esi,%esi 0.00 : 5212f2: 48 8b 3a mov (%rdx),%rdi 0.00 : 5212f5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5212fc: e8 ff 01 0d 00 callq 5f1500 : } : ; 0.00 : 521301: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem($1, (Node *) $3); : } : | ColLabel : { : $$ = makeDefElem($1, NULL); 0.00 : 521308: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 52130b: e9 70 06 ff ff jmpq 511980 : | def_list ',' def_elem { $$ = lappend($1, $3); } : ; : : def_elem: ColLabel '=' def_arg : { : $$ = makeDefElem($1, (Node *) $3); 0.00 : 521310: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521317: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 52131b: 48 8b 36 mov (%rsi),%rsi 0.00 : 52131e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521325: e8 d6 01 0d 00 callq 5f1500 : } : | ColLabel 0.00 : 52132a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | def_list ',' def_elem { $$ = lappend($1, $3); } : ; : : def_elem: ColLabel '=' def_arg : { : $$ = makeDefElem($1, (Node *) $3); 0.00 : 521331: 49 89 c6 mov %rax,%r14 : } : | ColLabel 0.00 : 521334: e9 47 06 ff ff jmpq 511980 : : definition: '(' def_list ')' { $$ = $2; } : ; : : def_list: def_elem { $$ = list_make1($1); } : | def_list ',' def_elem { $$ = lappend($1, $3); } 0.00 : 521339: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521340: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 521344: 48 8b 33 mov (%rbx),%rsi 0.00 : 521347: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52134e: e8 2d 0b 0c 00 callq 5e1e80 : ; 0.00 : 521353: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : definition: '(' def_list ')' { $$ = $2; } : ; : : def_list: def_elem { $$ = list_make1($1); } : | def_list ',' def_elem { $$ = lappend($1, $3); } 0.00 : 52135a: 49 89 c6 mov %rax,%r14 : ; 0.00 : 52135d: e9 1e 06 ff ff jmpq 511980 : ; : : definition: '(' def_list ')' { $$ = $2; } : ; : : def_list: def_elem { $$ = list_make1($1); } 0.00 : 521362: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521369: 31 f6 xor %esi,%esi 0.00 : 52136b: 48 8b 39 mov (%rcx),%rdi 0.00 : 52136e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521375: e8 d6 04 0c 00 callq 5e1850 : | def_list ',' def_elem { $$ = lappend($1, $3); } 0.00 : 52137a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : definition: '(' def_list ')' { $$ = $2; } : ; : : def_list: def_elem { $$ = list_make1($1); } 0.00 : 521381: 49 89 c6 mov %rax,%r14 : | def_list ',' def_elem { $$ = lappend($1, $3); } 0.00 : 521384: e9 f7 05 ff ff jmpq 511980 : n->definition = list_make1(makeDefElem("from", (Node *) $5)); : $$ = (Node *)n; : } : ; : : definition: '(' def_list ')' { $$ = $2; } 0.00 : 521389: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521390: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : ; 0.00 : 521394: e9 e7 05 ff ff jmpq 511980 : n->definition = $4; : $$ = (Node *)n; : } : | CREATE COLLATION any_name FROM any_name : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 521399: 48 8b 3d c0 94 69 00 mov 0x6994c0(%rip),%rdi # bba860 0.00 : 5213a0: be 28 00 00 00 mov $0x28,%esi 0.00 : 5213a5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5213ac: e8 5f 7a 27 00 callq 798e10 0.00 : 5213b1: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_COLLATION; 0.00 : 5213b7: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->definition = $4; : $$ = (Node *)n; : } : | CREATE COLLATION any_name FROM any_name : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 5213be: 48 89 c3 mov %rax,%rbx : n->kind = OBJECT_COLLATION; : n->args = NIL; 0.00 : 5213c1: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5213c8: 00 : n->defnames = $3; 0.00 : 5213c9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->definition = list_make1(makeDefElem("from", (Node *) $5)); 0.00 : 5213d0: bf 2a ec 8a 00 mov $0x8aec2a,%edi : $$ = (Node *)n; 0.00 : 5213d5: 49 89 de mov %rbx,%r14 : | CREATE COLLATION any_name FROM any_name : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_COLLATION; : n->args = NIL; : n->defnames = $3; 0.00 : 5213d8: 48 8b 46 f0 mov -0x10(%rsi),%rax 0.00 : 5213dc: 48 89 43 10 mov %rax,0x10(%rbx) : n->definition = list_make1(makeDefElem("from", (Node *) $5)); 0.00 : 5213e0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5213e7: 48 8b 30 mov (%rax),%rsi 0.00 : 5213ea: e8 11 01 0d 00 callq 5f1500 0.00 : 5213ef: 31 f6 xor %esi,%esi 0.00 : 5213f1: 48 89 c7 mov %rax,%rdi 0.00 : 5213f4: e8 57 04 0c 00 callq 5e1850 0.00 : 5213f9: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 5213fd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521404: e9 77 05 ff ff jmpq 511980 : n->definition = $6; : $$ = (Node *)n; : } : | CREATE COLLATION any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 521409: 48 8b 3d 50 94 69 00 mov 0x699450(%rip),%rdi # bba860 0.00 : 521410: be 28 00 00 00 mov $0x28,%esi 0.00 : 521415: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52141c: e8 ef 79 27 00 callq 798e10 0.00 : 521421: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_COLLATION; 0.00 : 521427: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->args = NIL; : n->defnames = $3; : n->definition = $4; : $$ = (Node *)n; 0.00 : 52142e: 49 89 c6 mov %rax,%r14 : } : | CREATE COLLATION any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_COLLATION; : n->args = NIL; 0.00 : 521431: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521438: 00 : n->defnames = $3; 0.00 : 521439: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521440: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 521444: 48 89 50 10 mov %rdx,0x10(%rax) : n->definition = $4; 0.00 : 521448: 48 8b 13 mov (%rbx),%rdx 0.00 : 52144b: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE COLLATION any_name FROM any_name 0.00 : 52144f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521456: e9 25 05 ff ff jmpq 511980 : n->definition = $6; : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH CONFIGURATION any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 52145b: 48 8b 3d fe 93 69 00 mov 0x6993fe(%rip),%rdi # bba860 0.00 : 521462: be 28 00 00 00 mov $0x28,%esi 0.00 : 521467: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52146e: e8 9d 79 27 00 callq 798e10 0.00 : 521473: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TSCONFIGURATION; 0.00 : 521479: c7 40 04 1e 00 00 00 movl $0x1e,0x4(%rax) : n->args = NIL; : n->defnames = $5; : n->definition = $6; : $$ = (Node *)n; 0.00 : 521480: 49 89 c6 mov %rax,%r14 : } : | CREATE TEXT_P SEARCH CONFIGURATION any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TSCONFIGURATION; : n->args = NIL; 0.00 : 521483: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 52148a: 00 : n->defnames = $5; 0.00 : 52148b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521492: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 521496: 48 89 50 10 mov %rdx,0x10(%rax) : n->definition = $6; 0.00 : 52149a: 48 8b 11 mov (%rcx),%rdx 0.00 : 52149d: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE COLLATION any_name definition 0.00 : 5214a1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5214a8: e9 d3 04 ff ff jmpq 511980 : n->definition = $6; : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH TEMPLATE any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 5214ad: 48 8b 3d ac 93 69 00 mov 0x6993ac(%rip),%rdi # bba860 0.00 : 5214b4: be 28 00 00 00 mov $0x28,%esi 0.00 : 5214b9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5214c0: e8 4b 79 27 00 callq 798e10 0.00 : 5214c5: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TSTEMPLATE; 0.00 : 5214cb: c7 40 04 21 00 00 00 movl $0x21,0x4(%rax) : n->args = NIL; : n->defnames = $5; : n->definition = $6; : $$ = (Node *)n; 0.00 : 5214d2: 49 89 c6 mov %rax,%r14 : } : | CREATE TEXT_P SEARCH TEMPLATE any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TSTEMPLATE; : n->args = NIL; 0.00 : 5214d5: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5214dc: 00 : n->defnames = $5; 0.00 : 5214dd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5214e4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5214e8: 48 89 50 10 mov %rdx,0x10(%rax) : n->definition = $6; 0.00 : 5214ec: 48 8b 16 mov (%rsi),%rdx 0.00 : 5214ef: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH CONFIGURATION any_name definition 0.00 : 5214f3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5214fa: e9 81 04 ff ff jmpq 511980 : n->definition = $6; : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH DICTIONARY any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 5214ff: 48 8b 3d 5a 93 69 00 mov 0x69935a(%rip),%rdi # bba860 0.00 : 521506: be 28 00 00 00 mov $0x28,%esi 0.00 : 52150b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521512: e8 f9 78 27 00 callq 798e10 0.00 : 521517: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TSDICTIONARY; 0.00 : 52151d: c7 40 04 1f 00 00 00 movl $0x1f,0x4(%rax) : n->args = NIL; : n->defnames = $5; : n->definition = $6; : $$ = (Node *)n; 0.00 : 521524: 49 89 c6 mov %rax,%r14 : } : | CREATE TEXT_P SEARCH DICTIONARY any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TSDICTIONARY; : n->args = NIL; 0.00 : 521527: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 52152e: 00 : n->defnames = $5; 0.00 : 52152f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521536: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 52153a: 48 89 50 10 mov %rdx,0x10(%rax) : n->definition = $6; 0.00 : 52153e: 48 8b 13 mov (%rbx),%rdx 0.00 : 521541: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH TEMPLATE any_name definition 0.00 : 521545: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52154c: e9 2f 04 ff ff jmpq 511980 : n->params = $6; : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH PARSER any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 521551: 48 8b 3d 08 93 69 00 mov 0x699308(%rip),%rdi # bba860 0.00 : 521558: be 28 00 00 00 mov $0x28,%esi 0.00 : 52155d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521564: e8 a7 78 27 00 callq 798e10 0.00 : 521569: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TSPARSER; 0.00 : 52156f: c7 40 04 20 00 00 00 movl $0x20,0x4(%rax) : n->args = NIL; : n->defnames = $5; : n->definition = $6; : $$ = (Node *)n; 0.00 : 521576: 49 89 c6 mov %rax,%r14 : } : | CREATE TEXT_P SEARCH PARSER any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TSPARSER; : n->args = NIL; 0.00 : 521579: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521580: 00 : n->defnames = $5; 0.00 : 521581: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521588: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52158c: 48 89 50 10 mov %rdx,0x10(%rax) : n->definition = $6; 0.00 : 521590: 48 8b 11 mov (%rcx),%rdx 0.00 : 521593: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH DICTIONARY any_name definition 0.00 : 521597: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52159e: e9 dd 03 ff ff jmpq 511980 : n->vals = $7; : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS RANGE definition : { : CreateRangeStmt *n = makeNode(CreateRangeStmt); 0.00 : 5215a3: 48 8b 3d b6 92 69 00 mov 0x6992b6(%rip),%rdi # bba860 0.00 : 5215aa: be 18 00 00 00 mov $0x18,%esi 0.00 : 5215af: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5215b6: e8 55 78 27 00 callq 798e10 0.00 : 5215bb: c7 00 07 03 00 00 movl $0x307,(%rax) : n->typeName = $3; 0.00 : 5215c1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->params = $6; : $$ = (Node *)n; 0.00 : 5215c8: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS RANGE definition : { : CreateRangeStmt *n = makeNode(CreateRangeStmt); : n->typeName = $3; 0.00 : 5215cb: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 5215cf: 48 89 50 08 mov %rdx,0x8(%rax) : n->params = $6; 0.00 : 5215d3: 48 8b 16 mov (%rsi),%rdx 0.00 : 5215d6: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | CREATE TEXT_P SEARCH PARSER any_name definition 0.00 : 5215da: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5215e1: e9 9a 03 ff ff jmpq 511980 : n->coldeflist = $6; : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS ENUM_P '(' opt_enum_val_list ')' : { : CreateEnumStmt *n = makeNode(CreateEnumStmt); 0.00 : 5215e6: 48 8b 3d 73 92 69 00 mov 0x699273(%rip),%rdi # bba860 0.00 : 5215ed: be 18 00 00 00 mov $0x18,%esi 0.00 : 5215f2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5215f9: e8 12 78 27 00 callq 798e10 0.00 : 5215fe: c7 00 06 03 00 00 movl $0x306,(%rax) : n->typeName = $3; 0.00 : 521604: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->vals = $7; : $$ = (Node *)n; 0.00 : 52160b: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS ENUM_P '(' opt_enum_val_list ')' : { : CreateEnumStmt *n = makeNode(CreateEnumStmt); : n->typeName = $3; 0.00 : 52160e: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 521612: 48 89 50 08 mov %rdx,0x8(%rax) : n->vals = $7; 0.00 : 521616: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 52161a: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS RANGE definition 0.00 : 52161e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521625: e9 56 03 ff ff jmpq 511980 : n->definition = NIL; : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS '(' OptTableFuncElementList ')' : { : CompositeTypeStmt *n = makeNode(CompositeTypeStmt); 0.00 : 52162a: 48 8b 3d 2f 92 69 00 mov 0x69922f(%rip),%rdi # bba860 0.00 : 521631: be 18 00 00 00 mov $0x18,%esi 0.00 : 521636: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52163d: e8 ce 77 27 00 callq 798e10 0.00 : 521642: c7 00 05 03 00 00 movl $0x305,(%rax) 0.00 : 521648: 48 89 c3 mov %rax,%rbx : : /* can't use qualified_name, sigh */ : n->typevar = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 52164b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521652: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax : n->coldeflist = $6; : $$ = (Node *)n; 0.00 : 521659: 49 89 de mov %rbx,%r14 : | CREATE TYPE_P any_name AS '(' OptTableFuncElementList ')' : { : CompositeTypeStmt *n = makeNode(CompositeTypeStmt); : : /* can't use qualified_name, sigh */ : n->typevar = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 52165c: 48 8b 7a e0 mov -0x20(%rdx),%rdi 0.00 : 521660: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 521667: 8b 70 f0 mov -0x10(%rax),%esi 0.00 : 52166a: e8 d1 f7 fe ff callq 510e40 0.00 : 52166f: 48 89 43 08 mov %rax,0x8(%rbx) : n->coldeflist = $6; 0.00 : 521673: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52167a: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 52167e: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS ENUM_P '(' opt_enum_val_list ')' 0.00 : 521682: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521689: e9 f2 02 ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE TYPE_P any_name : { : /* Shell type (identified by lack of definition) */ : DefineStmt *n = makeNode(DefineStmt); 0.00 : 52168e: 48 8b 3d cb 91 69 00 mov 0x6991cb(%rip),%rdi # bba860 0.00 : 521695: be 28 00 00 00 mov $0x28,%esi 0.00 : 52169a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5216a1: e8 6a 77 27 00 callq 798e10 0.00 : 5216a6: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TYPE; 0.00 : 5216ac: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->oldstyle = false; : n->defnames = $3; : n->args = NIL; : n->definition = NIL; : $$ = (Node *)n; 0.00 : 5216b3: 49 89 c6 mov %rax,%r14 : | CREATE TYPE_P any_name : { : /* Shell type (identified by lack of definition) */ : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TYPE; : n->oldstyle = false; 0.00 : 5216b6: c6 40 08 00 movb $0x0,0x8(%rax) : n->defnames = $3; 0.00 : 5216ba: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5216c1: 48 8b 16 mov (%rsi),%rdx : n->args = NIL; 0.00 : 5216c4: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5216cb: 00 : n->definition = NIL; 0.00 : 5216cc: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 5216d3: 00 : { : /* Shell type (identified by lack of definition) */ : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TYPE; : n->oldstyle = false; : n->defnames = $3; 0.00 : 5216d4: 48 89 50 10 mov %rdx,0x10(%rax) : n->args = NIL; : n->definition = NIL; : $$ = (Node *)n; : } : | CREATE TYPE_P any_name AS '(' OptTableFuncElementList ')' 0.00 : 5216d8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5216df: e9 9c 02 ff ff jmpq 511980 : n->definition = $4; : $$ = (Node *)n; : } : | CREATE TYPE_P any_name definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 5216e4: 48 8b 3d 75 91 69 00 mov 0x699175(%rip),%rdi # bba860 0.00 : 5216eb: be 28 00 00 00 mov $0x28,%esi 0.00 : 5216f0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5216f7: e8 14 77 27 00 callq 798e10 0.00 : 5216fc: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_TYPE; 0.00 : 521702: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->oldstyle = false; : n->defnames = $3; : n->args = NIL; : n->definition = $4; : $$ = (Node *)n; 0.00 : 521709: 49 89 c6 mov %rax,%r14 : } : | CREATE TYPE_P any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TYPE; : n->oldstyle = false; 0.00 : 52170c: c6 40 08 00 movb $0x0,0x8(%rax) : n->defnames = $3; 0.00 : 521710: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521717: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->args = NIL; 0.00 : 52171b: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521722: 00 : | CREATE TYPE_P any_name definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_TYPE; : n->oldstyle = false; : n->defnames = $3; 0.00 : 521723: 48 89 50 10 mov %rdx,0x10(%rax) : n->args = NIL; : n->definition = $4; 0.00 : 521727: 48 8b 13 mov (%rbx),%rdx 0.00 : 52172a: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE TYPE_P any_name 0.00 : 52172e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521735: e9 46 02 ff ff jmpq 511980 : n->definition = $4; : $$ = (Node *)n; : } : | CREATE OPERATOR any_operator definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 52173a: 48 8b 3d 1f 91 69 00 mov 0x69911f(%rip),%rdi # bba860 0.00 : 521741: be 28 00 00 00 mov $0x28,%esi 0.00 : 521746: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52174d: e8 be 76 27 00 callq 798e10 0.00 : 521752: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_OPERATOR; 0.00 : 521758: c7 40 04 14 00 00 00 movl $0x14,0x4(%rax) : n->oldstyle = false; : n->defnames = $3; : n->args = NIL; : n->definition = $4; : $$ = (Node *)n; 0.00 : 52175f: 49 89 c6 mov %rax,%r14 : } : | CREATE OPERATOR any_operator definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_OPERATOR; : n->oldstyle = false; 0.00 : 521762: c6 40 08 00 movb $0x0,0x8(%rax) : n->defnames = $3; 0.00 : 521766: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52176d: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->args = NIL; 0.00 : 521771: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521778: 00 : | CREATE OPERATOR any_operator definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_OPERATOR; : n->oldstyle = false; : n->defnames = $3; 0.00 : 521779: 48 89 50 10 mov %rdx,0x10(%rax) : n->args = NIL; : n->definition = $4; 0.00 : 52177d: 48 8b 11 mov (%rcx),%rdx 0.00 : 521780: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE TYPE_P any_name definition 0.00 : 521784: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52178b: e9 f0 01 ff ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE AGGREGATE func_name old_aggr_definition : { : /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ : DefineStmt *n = makeNode(DefineStmt); 0.00 : 521790: 48 8b 3d c9 90 69 00 mov 0x6990c9(%rip),%rdi # bba860 0.00 : 521797: be 28 00 00 00 mov $0x28,%esi 0.00 : 52179c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5217a3: e8 68 76 27 00 callq 798e10 0.00 : 5217a8: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_AGGREGATE; 0.00 : 5217ae: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->oldstyle = true; : n->defnames = $3; : n->args = NIL; : n->definition = $4; : $$ = (Node *)n; 0.00 : 5217b5: 49 89 c6 mov %rax,%r14 : | CREATE AGGREGATE func_name old_aggr_definition : { : /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_AGGREGATE; : n->oldstyle = true; 0.00 : 5217b8: c6 40 08 01 movb $0x1,0x8(%rax) : n->defnames = $3; 0.00 : 5217bc: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5217c3: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->args = NIL; 0.00 : 5217c7: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5217ce: 00 : { : /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_AGGREGATE; : n->oldstyle = true; : n->defnames = $3; 0.00 : 5217cf: 48 89 50 10 mov %rdx,0x10(%rax) : n->args = NIL; : n->definition = $4; 0.00 : 5217d3: 48 8b 16 mov (%rsi),%rdx 0.00 : 5217d6: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE OPERATOR any_operator definition 0.00 : 5217da: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5217e1: e9 9a 01 ff ff jmpq 511980 : *****************************************************************************/ : : DefineStmt: : CREATE AGGREGATE func_name aggr_args definition : { : DefineStmt *n = makeNode(DefineStmt); 0.00 : 5217e6: 48 8b 3d 73 90 69 00 mov 0x699073(%rip),%rdi # bba860 0.00 : 5217ed: be 28 00 00 00 mov $0x28,%esi 0.00 : 5217f2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5217f9: e8 12 76 27 00 callq 798e10 0.00 : 5217fe: c7 00 cd 02 00 00 movl $0x2cd,(%rax) : n->kind = OBJECT_AGGREGATE; 0.00 : 521804: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->oldstyle = false; : n->defnames = $3; : n->args = $4; : n->definition = $5; : $$ = (Node *)n; 0.00 : 52180b: 49 89 c6 mov %rax,%r14 : DefineStmt: : CREATE AGGREGATE func_name aggr_args definition : { : DefineStmt *n = makeNode(DefineStmt); : n->kind = OBJECT_AGGREGATE; : n->oldstyle = false; 0.00 : 52180e: c6 40 08 00 movb $0x0,0x8(%rax) : n->defnames = $3; 0.00 : 521812: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521819: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 52181d: 48 89 50 10 mov %rdx,0x10(%rax) : n->args = $4; 0.00 : 521821: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 521825: 48 89 50 18 mov %rdx,0x18(%rax) : n->definition = $5; 0.00 : 521829: 48 8b 13 mov (%rbx),%rdx 0.00 : 52182c: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE AGGREGATE func_name old_aggr_definition 0.00 : 521830: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521837: e9 44 01 ff ff jmpq 511980 : ; : : DropAssertStmt: : DROP ASSERTION name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 52183c: 48 8b 3d 1d 90 69 00 mov 0x69901d(%rip),%rdi # bba860 0.00 : 521843: be 28 00 00 00 mov $0x28,%esi 0.00 : 521848: e8 c3 75 27 00 callq 798e10 0.00 : 52184d: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->objects = NIL; 0.00 : 521853: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 52185a: 00 : n->arguments = NIL; : n->behavior = $4; : n->removeType = OBJECT_TRIGGER; /* XXX */ : ereport(ERROR, 0.00 : 52185b: 45 31 c0 xor %r8d,%r8d : DropAssertStmt: : DROP ASSERTION name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = NIL; : n->arguments = NIL; 0.00 : 52185e: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 521865: 00 : n->behavior = $4; 0.00 : 521866: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->removeType = OBJECT_TRIGGER; /* XXX */ : ereport(ERROR, 0.00 : 52186d: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 521872: bf 14 00 00 00 mov $0x14,%edi : DROP ASSERTION name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = NIL; : n->arguments = NIL; : n->behavior = $4; 0.00 : 521877: 8b 11 mov (%rcx),%edx : n->removeType = OBJECT_TRIGGER; /* XXX */ 0.00 : 521879: c7 40 18 1d 00 00 00 movl $0x1d,0x18(%rax) : ereport(ERROR, 0.00 : 521880: b9 9a 74 82 00 mov $0x82749a,%ecx : DROP ASSERTION name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->objects = NIL; : n->arguments = NIL; : n->behavior = $4; 0.00 : 521885: 89 50 1c mov %edx,0x1c(%rax) : n->removeType = OBJECT_TRIGGER; /* XXX */ : ereport(ERROR, 0.00 : 521888: ba 4d 13 00 00 mov $0x134d,%edx 0.00 : 52188d: e8 2e 92 25 00 callq 77aac0 0.00 : 521892: 84 c0 test %al,%al 0.00 : 521894: 0f 84 0d 07 ff ff je 511fa7 0.00 : 52189a: bf 70 a0 7c 00 mov $0x7ca070,%edi 0.00 : 52189f: 31 c0 xor %eax,%eax 0.00 : 5218a1: e8 fa af 25 00 callq 77c8a0 0.00 : 5218a6: bf 40 04 00 00 mov $0x440,%edi 0.00 : 5218ab: 89 c3 mov %eax,%ebx : foreach(lc, func_args) : { : FunctionParameter *p = (FunctionParameter *) lfirst(lc); : : if (p->mode != FUNC_PARAM_IN && p->mode != FUNC_PARAM_VARIADIC) : ereport(ERROR, 0.00 : 5218ad: e8 9e b4 25 00 callq 77cd50 0.00 : 5218b2: 89 de mov %ebx,%esi 0.00 : 5218b4: 89 c7 mov %eax,%edi 0.00 : 5218b6: 31 c0 xor %eax,%eax 0.00 : 5218b8: e8 23 8d 25 00 callq 77a5e0 0.00 : 5218bd: e9 e5 06 ff ff jmpq 511fa7 : : CreateAssertStmt: : CREATE ASSERTION name CHECK '(' a_expr ')' : ConstraintAttributeSpec : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 5218c2: 48 8b 3d 97 8f 69 00 mov 0x698f97(%rip),%rdi # bba860 0.00 : 5218c9: be 50 00 00 00 mov $0x50,%esi 0.00 : 5218ce: e8 3d 75 27 00 callq 798e10 0.00 : 5218d3: c7 00 e9 02 00 00 movl $0x2e9,(%rax) : n->trigname = $3; 0.00 : 5218d9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : : CreateAssertStmt: : CREATE ASSERTION name CHECK '(' a_expr ')' : ConstraintAttributeSpec : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 5218e0: 48 89 c3 mov %rax,%rbx : n->trigname = $3; 0.00 : 5218e3: 48 8b 46 d8 mov -0x28(%rsi),%rax 0.00 : 5218e7: 48 89 43 08 mov %rax,0x8(%rbx) : n->args = list_make1($6); 0.00 : 5218eb: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 5218ef: 31 f6 xor %esi,%esi 0.00 : 5218f1: e8 5a ff 0b 00 callq 5e1850 : n->isconstraint = TRUE; 0.00 : 5218f6: c6 43 40 01 movb $0x1,0x40(%rbx) : CREATE ASSERTION name CHECK '(' a_expr ')' : ConstraintAttributeSpec : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); : n->trigname = $3; : n->args = list_make1($6); 0.00 : 5218fa: 48 89 43 20 mov %rax,0x20(%rbx) : n->isconstraint = TRUE; : processCASbits($8, @8, "ASSERTION", 0.00 : 5218fe: 48 8d 4b 41 lea 0x41(%rbx),%rcx 0.00 : 521902: 48 8b 85 70 f4 ff ff mov -0xb90(%rbp),%rax 0.00 : 521909: 4c 8d 43 42 lea 0x42(%rbx),%r8 0.00 : 52190d: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 521914: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 52191b: 00 0.00 : 52191c: 45 31 c9 xor %r9d,%r9d 0.00 : 52191f: ba 48 96 7c 00 mov $0x7c9648,%edx 0.00 : 521924: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 521929: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521930: 8b 33 mov (%rbx),%esi 0.00 : 521932: 8b 38 mov (%rax),%edi 0.00 : 521934: e8 d7 c4 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : : ereport(ERROR, 0.00 : 521939: 45 31 c0 xor %r8d,%r8d 0.00 : 52193c: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 521941: ba 3d 13 00 00 mov $0x133d,%edx 0.00 : 521946: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52194b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 521950: e8 6b 91 25 00 callq 77aac0 0.00 : 521955: 84 c0 test %al,%al 0.00 : 521957: 0f 84 4a 06 ff ff je 511fa7 0.00 : 52195d: bf 48 a0 7c 00 mov $0x7ca048,%edi 0.00 : 521962: 31 c0 xor %eax,%eax 0.00 : 521964: e8 37 af 25 00 callq 77c8a0 0.00 : 521969: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52196e: 89 c3 mov %eax,%ebx 0.00 : 521970: e9 38 ff ff ff jmpq 5218ad : : enable_trigger: : ENABLE_P { $$ = TRIGGER_FIRES_ON_ORIGIN; } : | ENABLE_P REPLICA { $$ = TRIGGER_FIRES_ON_REPLICA; } : | ENABLE_P ALWAYS { $$ = TRIGGER_FIRES_ALWAYS; } : | DISABLE_P { $$ = TRIGGER_DISABLED; } 0.00 : 521975: 41 b6 44 mov $0x44,%r14b : ; 0.00 : 521978: e9 03 00 ff ff jmpq 511980 : : ConstraintAttributeElem: : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } : | DEFERRABLE { $$ = CAS_DEFERRABLE; } : | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } : | INITIALLY DEFERRED { $$ = CAS_INITIALLY_DEFERRED; } 0.00 : 52197d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 521984: ff ff ff 0.00 : 521987: 49 21 c6 and %rax,%r14 0.00 : 52198a: 49 83 ce 08 or $0x8,%r14 : | NOT VALID { $$ = CAS_NOT_VALID; } 0.00 : 52198e: e9 ed ff fe ff jmpq 511980 : ; : : ConstraintAttributeElem: : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } : | DEFERRABLE { $$ = CAS_DEFERRABLE; } : | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } 0.00 : 521993: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 52199a: ff ff ff 0.00 : 52199d: 49 21 f6 and %rsi,%r14 0.00 : 5219a0: 49 83 ce 04 or $0x4,%r14 : | INITIALLY DEFERRED { $$ = CAS_INITIALLY_DEFERRED; } 0.00 : 5219a4: e9 d7 ff fe ff jmpq 511980 : } : ; : : ConstraintAttributeElem: : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } : | DEFERRABLE { $$ = CAS_DEFERRABLE; } 0.00 : 5219a9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5219b0: ff ff ff 0.00 : 5219b3: 49 21 de and %rbx,%r14 0.00 : 5219b6: 49 83 ce 02 or $0x2,%r14 : | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } 0.00 : 5219ba: e9 c1 ff fe ff jmpq 511980 : $$ = newspec; : } : ; : : ConstraintAttributeElem: : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } 0.00 : 5219bf: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5219c6: ff ff ff 0.00 : 5219c9: 49 21 ce and %rcx,%r14 0.00 : 5219cc: 49 83 ce 01 or $0x1,%r14 : | DEFERRABLE { $$ = CAS_DEFERRABLE; } 0.00 : 5219d0: e9 ab ff fe ff jmpq 511980 : /* : * We must complain about conflicting options. : * We could, but choose not to, complain about redundant : * options (ie, where $2's bit is already set in $1). : */ : int newspec = $1 | $2; 0.00 : 5219d5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5219dc: 8b 11 mov (%rcx),%edx 0.00 : 5219de: 0b 51 f8 or -0x8(%rcx),%edx : : /* special message for this case */ : if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) 0.00 : 5219e1: 89 d0 mov %edx,%eax 0.00 : 5219e3: 83 e0 09 and $0x9,%eax 0.00 : 5219e6: 83 f8 09 cmp $0x9,%eax 0.00 : 5219e9: 0f 84 86 84 00 00 je 529e75 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), : parser_errposition(@2))); : /* generic message for other conflicts */ : if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || 0.00 : 5219ef: 89 d0 mov %edx,%eax 0.00 : 5219f1: 83 e0 03 and $0x3,%eax 0.00 : 5219f4: 83 f8 03 cmp $0x3,%eax 0.00 : 5219f7: 0f 84 24 84 00 00 je 529e21 0.00 : 5219fd: 89 d0 mov %edx,%eax 0.00 : 5219ff: 83 e0 0c and $0xc,%eax 0.00 : 521a02: 83 f8 0c cmp $0xc,%eax 0.00 : 521a05: 0f 84 16 84 00 00 je 529e21 : (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("conflicting constraint properties"), : parser_errposition(@2))); : $$ = newspec; 0.00 : 521a0b: 89 d0 mov %edx,%eax 0.00 : 521a0d: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 521a14: ff ff ff 0.00 : 521a17: 49 21 d6 and %rdx,%r14 0.00 : 521a1a: 49 09 c6 or %rax,%r14 : } : ; 0.00 : 521a1d: e9 5e ff fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : ConstraintAttributeSpec: : /*EMPTY*/ : { $$ = 0; } 0.00 : 521a22: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 521a29: ff ff ff 0.00 : 521a2c: 49 21 d6 and %rdx,%r14 : | ConstraintAttributeSpec ConstraintAttributeElem 0.00 : 521a2f: e9 4c ff fe ff jmpq 511980 : : event_trigger_when_list: : event_trigger_when_item : { $$ = list_make1($1); } : | event_trigger_when_list AND event_trigger_when_item : { $$ = lappend($1, $3); } 0.00 : 521a34: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521a3b: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 521a3f: 48 8b 32 mov (%rdx),%rsi 0.00 : 521a42: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521a49: e8 32 04 0c 00 callq 5e1e80 : ; 0.00 : 521a4e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : event_trigger_when_list: : event_trigger_when_item : { $$ = list_make1($1); } : | event_trigger_when_list AND event_trigger_when_item : { $$ = lappend($1, $3); } 0.00 : 521a55: 49 89 c6 mov %rax,%r14 : ; 0.00 : 521a58: e9 23 ff fe ff jmpq 511980 : } : ; : : event_trigger_when_list: : event_trigger_when_item : { $$ = list_make1($1); } 0.00 : 521a5d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521a64: 31 f6 xor %esi,%esi 0.00 : 521a66: 48 8b 38 mov (%rax),%rdi 0.00 : 521a69: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521a70: e8 db fd 0b 00 callq 5e1850 : | event_trigger_when_list AND event_trigger_when_item 0.00 : 521a75: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : event_trigger_when_list: : event_trigger_when_item : { $$ = list_make1($1); } 0.00 : 521a7c: 49 89 c6 mov %rax,%r14 : | event_trigger_when_list AND event_trigger_when_item 0.00 : 521a7f: e9 fc fe fe ff jmpq 511980 : } : | CREATE EVENT TRIGGER name ON ColLabel : WHEN event_trigger_when_list : EXECUTE PROCEDURE func_name '(' ')' : { : CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); 0.00 : 521a84: 48 8b 3d d5 8d 69 00 mov 0x698dd5(%rip),%rdi # bba860 0.00 : 521a8b: be 28 00 00 00 mov $0x28,%esi 0.00 : 521a90: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521a97: e8 74 73 27 00 callq 798e10 0.00 : 521a9c: c7 00 1a 03 00 00 movl $0x31a,(%rax) : n->trigname = $4; 0.00 : 521aa2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->eventname = $6; : n->whenclause = $8; : n->funcname = $11; : $$ = (Node *)n; 0.00 : 521aa9: 49 89 c6 mov %rax,%r14 : | CREATE EVENT TRIGGER name ON ColLabel : WHEN event_trigger_when_list : EXECUTE PROCEDURE func_name '(' ')' : { : CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); : n->trigname = $4; 0.00 : 521aac: 48 8b 53 b8 mov -0x48(%rbx),%rdx 0.00 : 521ab0: 48 89 50 08 mov %rdx,0x8(%rax) : n->eventname = $6; 0.00 : 521ab4: 48 8b 53 c8 mov -0x38(%rbx),%rdx 0.00 : 521ab8: 48 89 50 10 mov %rdx,0x10(%rax) : n->whenclause = $8; 0.00 : 521abc: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 521ac0: 48 89 50 18 mov %rdx,0x18(%rax) : n->funcname = $11; 0.00 : 521ac4: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 521ac8: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : ; 0.00 : 521acc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521ad3: e9 a8 fe fe ff jmpq 511980 : : CreateEventTrigStmt: : CREATE EVENT TRIGGER name ON ColLabel : EXECUTE PROCEDURE func_name '(' ')' : { : CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); 0.00 : 521ad8: 48 8b 3d 81 8d 69 00 mov 0x698d81(%rip),%rdi # bba860 0.00 : 521adf: be 28 00 00 00 mov $0x28,%esi 0.00 : 521ae4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521aeb: e8 20 73 27 00 callq 798e10 0.00 : 521af0: c7 00 1a 03 00 00 movl $0x31a,(%rax) : n->trigname = $4; 0.00 : 521af6: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->eventname = $6; : n->whenclause = NULL; : n->funcname = $9; : $$ = (Node *)n; 0.00 : 521afd: 49 89 c6 mov %rax,%r14 : CreateEventTrigStmt: : CREATE EVENT TRIGGER name ON ColLabel : EXECUTE PROCEDURE func_name '(' ')' : { : CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); : n->trigname = $4; 0.00 : 521b00: 48 8b 51 c8 mov -0x38(%rcx),%rdx 0.00 : 521b04: 48 89 50 08 mov %rdx,0x8(%rax) : n->eventname = $6; 0.00 : 521b08: 48 8b 51 d8 mov -0x28(%rcx),%rdx : n->whenclause = NULL; 0.00 : 521b0c: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 521b13: 00 : CREATE EVENT TRIGGER name ON ColLabel : EXECUTE PROCEDURE func_name '(' ')' : { : CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); : n->trigname = $4; : n->eventname = $6; 0.00 : 521b14: 48 89 50 10 mov %rdx,0x10(%rax) : n->whenclause = NULL; : n->funcname = $9; 0.00 : 521b18: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 521b1c: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | CREATE EVENT TRIGGER name ON ColLabel 0.00 : 521b20: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521b27: e9 54 fe fe ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 521b2c: 48 8b 3d 2d 8d 69 00 mov 0x698d2d(%rip),%rdi # bba860 0.00 : 521b33: be 28 00 00 00 mov $0x28,%esi 0.00 : 521b38: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521b3f: e8 cc 72 27 00 callq 798e10 0.00 : 521b44: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_TRIGGER; 0.00 : 521b4a: c7 40 18 1d 00 00 00 movl $0x1d,0x18(%rax) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 521b51: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 521b54: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->arguments = NIL; : n->behavior = $8; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 521b5b: 49 89 de mov %rbx,%r14 : } : | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 521b5e: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 521b62: e8 89 db 0d 00 callq 5ff6f0 0.00 : 521b67: 48 89 c6 mov %rax,%rsi 0.00 : 521b6a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521b71: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 521b75: e8 06 03 0c 00 callq 5e1e80 0.00 : 521b7a: 31 f6 xor %esi,%esi 0.00 : 521b7c: 48 89 c7 mov %rax,%rdi 0.00 : 521b7f: e8 cc fc 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 521b84: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 521b8b: 00 : } : | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 521b8c: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $8; 0.00 : 521b90: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521b97: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 521b99: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 521b9d: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($7, makeString($5))); : n->arguments = NIL; : n->behavior = $8; 0.00 : 521ba1: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 521ba4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521bab: e9 d0 fd fe ff jmpq 511980 : : : DropTrigStmt: : DROP TRIGGER name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 521bb0: 48 8b 3d a9 8c 69 00 mov 0x698ca9(%rip),%rdi # bba860 0.00 : 521bb7: be 28 00 00 00 mov $0x28,%esi 0.00 : 521bbc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521bc3: e8 48 72 27 00 callq 798e10 0.00 : 521bc8: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_TRIGGER; 0.00 : 521bce: c7 40 18 1d 00 00 00 movl $0x1d,0x18(%rax) : : : DropTrigStmt: : DROP TRIGGER name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 521bd5: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 521bd8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = NIL; : n->behavior = $6; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 521bdf: 49 89 de mov %rbx,%r14 : DropTrigStmt: : DROP TRIGGER name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 521be2: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 521be6: e8 05 db 0d 00 callq 5ff6f0 0.00 : 521beb: 48 89 c6 mov %rax,%rsi 0.00 : 521bee: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521bf5: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 521bf9: e8 82 02 0c 00 callq 5e1e80 0.00 : 521bfe: 31 f6 xor %esi,%esi 0.00 : 521c00: 48 89 c7 mov %rax,%rdi 0.00 : 521c03: e8 48 fc 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 521c08: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 521c0f: 00 : DropTrigStmt: : DROP TRIGGER name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 521c10: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $6; 0.00 : 521c14: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521c1b: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 521c1d: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 521c21: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_TRIGGER; : n->objects = list_make1(lappend($5, makeString($3))); : n->arguments = NIL; : n->behavior = $6; 0.00 : 521c25: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; : } : | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior 0.00 : 521c28: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521c2f: e9 4c fd fe ff jmpq 511980 : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } : | DEFERRABLE { $$ = CAS_DEFERRABLE; } : | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } : | INITIALLY DEFERRED { $$ = CAS_INITIALLY_DEFERRED; } : | NOT VALID { $$ = CAS_NOT_VALID; } : | NO INHERIT { $$ = CAS_NO_INHERIT; } 0.00 : 521c34: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 521c3b: ff ff ff 0.00 : 521c3e: 49 21 ce and %rcx,%r14 0.00 : 521c41: 49 83 ce 20 or $0x20,%r14 : ; 0.00 : 521c45: e9 36 fd fe ff jmpq 511980 : ConstraintAttributeElem: : NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } : | DEFERRABLE { $$ = CAS_DEFERRABLE; } : | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } : | INITIALLY DEFERRED { $$ = CAS_INITIALLY_DEFERRED; } : | NOT VALID { $$ = CAS_NOT_VALID; } 0.00 : 521c4a: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 521c51: ff ff ff 0.00 : 521c54: 49 21 d6 and %rdx,%r14 0.00 : 521c57: 49 83 ce 10 or $0x10,%r14 : | NO INHERIT { $$ = CAS_NO_INHERIT; } 0.00 : 521c5b: e9 20 fd fe ff jmpq 511980 : ; : : AlterEventTrigStmt: : ALTER EVENT TRIGGER name enable_trigger : { : AlterEventTrigStmt *n = makeNode(AlterEventTrigStmt); 0.00 : 521c60: 48 8b 3d f9 8b 69 00 mov 0x698bf9(%rip),%rdi # bba860 0.00 : 521c67: be 18 00 00 00 mov $0x18,%esi 0.00 : 521c6c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521c73: e8 98 71 27 00 callq 798e10 0.00 : 521c78: c7 00 1b 03 00 00 movl $0x31b,(%rax) : n->trigname = $4; 0.00 : 521c7e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->tgenabled = $5; : $$ = (Node *) n; 0.00 : 521c85: 49 89 c6 mov %rax,%r14 : : AlterEventTrigStmt: : ALTER EVENT TRIGGER name enable_trigger : { : AlterEventTrigStmt *n = makeNode(AlterEventTrigStmt); : n->trigname = $4; 0.00 : 521c88: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 521c8c: 48 89 50 08 mov %rdx,0x8(%rax) : n->tgenabled = $5; 0.00 : 521c90: 0f b6 11 movzbl (%rcx),%edx 0.00 : 521c93: 88 50 10 mov %dl,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 521c96: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521c9d: e9 de fc fe ff jmpq 511980 : : event_trigger_value_list: : SCONST : { $$ = list_make1(makeString($1)); } : | event_trigger_value_list ',' SCONST : { $$ = lappend($1, makeString($3)); } 0.00 : 521ca2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521ca9: 48 8b 3e mov (%rsi),%rdi 0.00 : 521cac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521cb3: e8 38 da 0d 00 callq 5ff6f0 0.00 : 521cb8: 48 89 c6 mov %rax,%rsi 0.00 : 521cbb: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521cc2: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 521cc6: e8 b5 01 0c 00 callq 5e1e80 : ; 0.00 : 521ccb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : event_trigger_value_list: : SCONST : { $$ = list_make1(makeString($1)); } : | event_trigger_value_list ',' SCONST : { $$ = lappend($1, makeString($3)); } 0.00 : 521cd2: 49 89 c6 mov %rax,%r14 : ; 0.00 : 521cd5: e9 a6 fc fe ff jmpq 511980 : { $$ = makeDefElem($1, (Node *) $4); } : ; : : event_trigger_value_list: : SCONST : { $$ = list_make1(makeString($1)); } 0.00 : 521cda: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521ce1: 48 8b 3b mov (%rbx),%rdi 0.00 : 521ce4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521ceb: e8 00 da 0d 00 callq 5ff6f0 0.00 : 521cf0: 31 f6 xor %esi,%esi 0.00 : 521cf2: 48 89 c7 mov %rax,%rdi 0.00 : 521cf5: e8 56 fb 0b 00 callq 5e1850 : | event_trigger_value_list ',' SCONST 0.00 : 521cfa: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = makeDefElem($1, (Node *) $4); } : ; : : event_trigger_value_list: : SCONST : { $$ = list_make1(makeString($1)); } 0.00 : 521d01: 49 89 c6 mov %rax,%r14 : | event_trigger_value_list ',' SCONST 0.00 : 521d04: e9 77 fc fe ff jmpq 511980 : { $$ = lappend($1, $3); } : ; : : event_trigger_when_item: : ColId IN_P '(' event_trigger_value_list ')' : { $$ = makeDefElem($1, (Node *) $4); } 0.00 : 521d09: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521d10: 48 8b 71 f8 mov -0x8(%rcx),%rsi 0.00 : 521d14: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 521d18: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521d1f: e8 dc f7 0c 00 callq 5f1500 : ; 0.00 : 521d24: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = lappend($1, $3); } : ; : : event_trigger_when_item: : ColId IN_P '(' event_trigger_value_list ')' : { $$ = makeDefElem($1, (Node *) $4); } 0.00 : 521d2b: 49 89 c6 mov %rax,%r14 : ; 0.00 : 521d2e: e9 4d fc fe ff jmpq 511980 : } : ; : : enable_trigger: : ENABLE_P { $$ = TRIGGER_FIRES_ON_ORIGIN; } : | ENABLE_P REPLICA { $$ = TRIGGER_FIRES_ON_REPLICA; } 0.00 : 521d33: 41 b6 52 mov $0x52,%r14b : | ENABLE_P ALWAYS { $$ = TRIGGER_FIRES_ALWAYS; } 0.00 : 521d36: e9 45 fc fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : enable_trigger: : ENABLE_P { $$ = TRIGGER_FIRES_ON_ORIGIN; } 0.00 : 521d3b: 41 b6 4f mov $0x4f,%r14b : | ENABLE_P REPLICA { $$ = TRIGGER_FIRES_ON_REPLICA; } 0.00 : 521d3e: e9 3d fc fe ff jmpq 511980 : | ENABLE_P ALWAYS { $$ = TRIGGER_FIRES_ALWAYS; } 0.00 : 521d43: 41 b6 41 mov $0x41,%r14b : | DISABLE_P { $$ = TRIGGER_DISABLED; } 0.00 : 521d46: e9 35 fc fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : TriggerActionTime: : BEFORE { $$ = TRIGGER_TYPE_BEFORE; } 0.00 : 521d4b: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 521d52: ff ff ff 0.00 : 521d55: 49 21 de and %rbx,%r14 0.00 : 521d58: 49 83 ce 02 or $0x2,%r14 : | AFTER { $$ = TRIGGER_TYPE_AFTER; } 0.00 : 521d5c: e9 1f fc fe ff jmpq 511980 : | CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON : qualified_name OptConstrFromTable ConstraintAttributeSpec : FOR EACH ROW TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 521d61: 48 8b 3d f8 8a 69 00 mov 0x698af8(%rip),%rdi # bba860 0.00 : 521d68: be 50 00 00 00 mov $0x50,%esi 0.00 : 521d6d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521d74: e8 97 70 27 00 callq 798e10 0.00 : 521d79: c7 00 e9 02 00 00 movl $0x2e9,(%rax) : n->trigname = $4; 0.00 : 521d7f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : | CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON : qualified_name OptConstrFromTable ConstraintAttributeSpec : FOR EACH ROW TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 521d86: 48 89 c3 mov %rax,%rbx : n->trigname = $4; 0.00 : 521d89: 48 8b 42 80 mov -0x80(%rdx),%rax : n->relation = $8; : n->funcname = $17; : n->args = $19; : n->row = TRUE; : n->timing = TRIGGER_TYPE_AFTER; : n->events = intVal(linitial($6)); 0.00 : 521d8d: 48 89 d1 mov %rdx,%rcx 0.00 : 521d90: 48 83 e9 70 sub $0x70,%rcx : qualified_name OptConstrFromTable ConstraintAttributeSpec : FOR EACH ROW TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); : n->trigname = $4; 0.00 : 521d94: 48 89 43 08 mov %rax,0x8(%rbx) : n->relation = $8; 0.00 : 521d98: 48 8b 42 a0 mov -0x60(%rdx),%rax 0.00 : 521d9c: 48 89 43 10 mov %rax,0x10(%rbx) : n->funcname = $17; 0.00 : 521da0: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 521da4: 48 89 43 18 mov %rax,0x18(%rbx) : n->args = $19; 0.00 : 521da8: 48 8b 42 f8 mov -0x8(%rdx),%rax : n->row = TRUE; 0.00 : 521dac: c6 43 28 01 movb $0x1,0x28(%rbx) : n->timing = TRIGGER_TYPE_AFTER; 0.00 : 521db0: 66 c7 43 2a 00 00 movw $0x0,0x2a(%rbx) : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); : n->trigname = $4; : n->relation = $8; : n->funcname = $17; : n->args = $19; 0.00 : 521db6: 48 89 43 20 mov %rax,0x20(%rbx) : n->row = TRUE; : n->timing = TRIGGER_TYPE_AFTER; : n->events = intVal(linitial($6)); 0.00 : 521dba: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521dc1: 31 c0 xor %eax,%eax 0.00 : 521dc3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521dca: 48 8b 56 90 mov -0x70(%rsi),%rdx 0.00 : 521dce: 48 85 d2 test %rdx,%rdx 0.00 : 521dd1: 74 04 je 521dd7 0.00 : 521dd3: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 521dd7: 48 8b 00 mov (%rax),%rax 0.00 : 521dda: 31 d2 xor %edx,%edx 0.00 : 521ddc: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 521de0: 66 89 43 2c mov %ax,0x2c(%rbx) : n->columns = (List *) lsecond($6); 0.00 : 521de4: 48 8b 01 mov (%rcx),%rax 0.00 : 521de7: 48 85 c0 test %rax,%rax 0.00 : 521dea: 74 04 je 521df0 0.00 : 521dec: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 521df0: 48 8b 42 08 mov 0x8(%rdx),%rax : n->whenClause = $14; : n->isconstraint = TRUE; : processCASbits($10, @10, "TRIGGER", 0.00 : 521df4: 48 8d 4b 41 lea 0x41(%rbx),%rcx 0.00 : 521df8: 4c 8d 43 42 lea 0x42(%rbx),%r8 0.00 : 521dfc: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : n->constrrel = $9; : $$ = (Node *)n; 0.00 : 521dff: 49 89 de mov %rbx,%r14 : n->funcname = $17; : n->args = $19; : n->row = TRUE; : n->timing = TRIGGER_TYPE_AFTER; : n->events = intVal(linitial($6)); : n->columns = (List *) lsecond($6); 0.00 : 521e02: 48 8b 00 mov (%rax),%rax 0.00 : 521e05: 48 89 43 30 mov %rax,0x30(%rbx) : n->whenClause = $14; 0.00 : 521e09: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521e10: 48 8b 42 d0 mov -0x30(%rdx),%rax : n->isconstraint = TRUE; 0.00 : 521e14: c6 43 40 01 movb $0x1,0x40(%rbx) : n->args = $19; : n->row = TRUE; : n->timing = TRIGGER_TYPE_AFTER; : n->events = intVal(linitial($6)); : n->columns = (List *) lsecond($6); : n->whenClause = $14; 0.00 : 521e18: 48 89 43 38 mov %rax,0x38(%rbx) : n->isconstraint = TRUE; : processCASbits($10, @10, "TRIGGER", 0.00 : 521e1c: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 521e23: 8b 7a b0 mov -0x50(%rdx),%edi 0.00 : 521e26: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 521e2d: 8b 70 d8 mov -0x28(%rax),%esi 0.00 : 521e30: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521e37: 48 89 54 24 08 mov %rdx,0x8(%rsp) 0.00 : 521e3c: ba 15 0a 8b 00 mov $0x8b0a15,%edx 0.00 : 521e41: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 521e48: 00 0.00 : 521e49: e8 c2 bf fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : n->constrrel = $9; 0.00 : 521e4e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521e55: 48 8b 41 a8 mov -0x58(%rcx),%rax 0.00 : 521e59: 48 89 43 48 mov %rax,0x48(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 521e5d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521e64: e9 17 fb fe ff jmpq 511980 : CreateTrigStmt: : CREATE TRIGGER name TriggerActionTime TriggerEvents ON : qualified_name TriggerForSpec TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 521e69: 48 8b 3d f0 89 69 00 mov 0x6989f0(%rip),%rdi # bba860 0.00 : 521e70: be 50 00 00 00 mov $0x50,%esi 0.00 : 521e75: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521e7c: e8 8f 6f 27 00 callq 798e10 0.00 : 521e81: c7 00 e9 02 00 00 movl $0x2e9,(%rax) : n->trigname = $3; 0.00 : 521e87: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : CreateTrigStmt: : CREATE TRIGGER name TriggerActionTime TriggerEvents ON : qualified_name TriggerForSpec TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); 0.00 : 521e8e: 48 89 c2 mov %rax,%rdx : n->trigname = $3; 0.00 : 521e91: 48 8b 41 a0 mov -0x60(%rcx),%rax : n->relation = $7; : n->funcname = $12; : n->args = $14; : n->row = $8; : n->timing = $4; : n->events = intVal(linitial($5)); 0.00 : 521e95: 48 89 ce mov %rcx,%rsi 0.00 : 521e98: 48 83 ee 50 sub $0x50,%rsi : CREATE TRIGGER name TriggerActionTime TriggerEvents ON : qualified_name TriggerForSpec TriggerWhen : EXECUTE PROCEDURE func_name '(' TriggerFuncArgs ')' : { : CreateTrigStmt *n = makeNode(CreateTrigStmt); : n->trigname = $3; 0.00 : 521e9c: 48 89 42 08 mov %rax,0x8(%rdx) : n->relation = $7; 0.00 : 521ea0: 48 8b 41 c0 mov -0x40(%rcx),%rax 0.00 : 521ea4: 48 89 42 10 mov %rax,0x10(%rdx) : n->funcname = $12; 0.00 : 521ea8: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 521eac: 48 89 42 18 mov %rax,0x18(%rdx) : n->args = $14; 0.00 : 521eb0: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 521eb4: 48 89 42 20 mov %rax,0x20(%rdx) : n->row = $8; 0.00 : 521eb8: 0f b6 41 c8 movzbl -0x38(%rcx),%eax 0.00 : 521ebc: 88 42 28 mov %al,0x28(%rdx) : n->timing = $4; 0.00 : 521ebf: 8b 41 a8 mov -0x58(%rcx),%eax 0.00 : 521ec2: 66 89 42 2a mov %ax,0x2a(%rdx) : n->events = intVal(linitial($5)); 0.00 : 521ec6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521ecd: 31 c0 xor %eax,%eax 0.00 : 521ecf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 521ed6: 48 8b 4b b0 mov -0x50(%rbx),%rcx 0.00 : 521eda: 48 85 c9 test %rcx,%rcx 0.00 : 521edd: 74 04 je 521ee3 0.00 : 521edf: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 521ee3: 48 8b 00 mov (%rax),%rax 0.00 : 521ee6: 31 c9 xor %ecx,%ecx 0.00 : 521ee8: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 521eec: 66 89 42 2c mov %ax,0x2c(%rdx) : n->columns = (List *) lsecond($5); 0.00 : 521ef0: 48 8b 06 mov (%rsi),%rax 0.00 : 521ef3: 48 85 c0 test %rax,%rax 0.00 : 521ef6: 74 04 je 521efc 0.00 : 521ef8: 48 8b 48 08 mov 0x8(%rax),%rcx 0.00 : 521efc: 48 8b 41 08 mov 0x8(%rcx),%rax : n->whenClause = $9; : n->isconstraint = FALSE; : n->deferrable = FALSE; : n->initdeferred = FALSE; : n->constrrel = NULL; : $$ = (Node *)n; 0.00 : 521f00: 49 89 d6 mov %rdx,%r14 : n->funcname = $12; : n->args = $14; : n->row = $8; : n->timing = $4; : n->events = intVal(linitial($5)); : n->columns = (List *) lsecond($5); 0.00 : 521f03: 48 8b 00 mov (%rax),%rax 0.00 : 521f06: 48 89 42 30 mov %rax,0x30(%rdx) : n->whenClause = $9; 0.00 : 521f0a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521f11: 48 8b 46 d0 mov -0x30(%rsi),%rax : n->isconstraint = FALSE; 0.00 : 521f15: c6 42 40 00 movb $0x0,0x40(%rdx) : n->deferrable = FALSE; 0.00 : 521f19: c6 42 41 00 movb $0x0,0x41(%rdx) : n->initdeferred = FALSE; 0.00 : 521f1d: c6 42 42 00 movb $0x0,0x42(%rdx) : n->constrrel = NULL; 0.00 : 521f21: 48 c7 42 48 00 00 00 movq $0x0,0x48(%rdx) 0.00 : 521f28: 00 : n->args = $14; : n->row = $8; : n->timing = $4; : n->events = intVal(linitial($5)); : n->columns = (List *) lsecond($5); : n->whenClause = $9; 0.00 : 521f29: 48 89 42 38 mov %rax,0x38(%rdx) : n->deferrable = FALSE; : n->initdeferred = FALSE; : n->constrrel = NULL; : $$ = (Node *)n; : } : | CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON 0.00 : 521f2d: e9 4e fa fe ff jmpq 511980 : row_security_cmd: : ALL { $$ = "all"; } : | SELECT { $$ = "select"; } : | INSERT { $$ = "insert"; } : | UPDATE { $$ = "update"; } : | DELETE_P { $$ = "delete"; } 0.00 : 521f32: 41 be 51 a5 8e 00 mov $0x8ea551,%r14d : ; 0.00 : 521f38: e9 43 fa fe ff jmpq 511980 : : row_security_cmd: : ALL { $$ = "all"; } : | SELECT { $$ = "select"; } : | INSERT { $$ = "insert"; } : | UPDATE { $$ = "update"; } 0.00 : 521f3d: 41 be f0 fa 7a 00 mov $0x7afaf0,%r14d : | DELETE_P { $$ = "delete"; } 0.00 : 521f43: e9 38 fa fe ff jmpq 511980 : ; : : row_security_cmd: : ALL { $$ = "all"; } : | SELECT { $$ = "select"; } : | INSERT { $$ = "insert"; } 0.00 : 521f48: 41 be f3 a4 8e 00 mov $0x8ea4f3,%r14d : | UPDATE { $$ = "update"; } 0.00 : 521f4e: e9 2d fa fe ff jmpq 511980 : | /* EMPTY */ { $$ = "all"; } : ; : : row_security_cmd: : ALL { $$ = "all"; } : | SELECT { $$ = "select"; } 0.00 : 521f53: 41 be 70 31 7c 00 mov $0x7c3170,%r14d : | INSERT { $$ = "insert"; } 0.00 : 521f59: e9 22 fa fe ff jmpq 511980 : FOR row_security_cmd { $$ = $2; } : | /* EMPTY */ { $$ = "all"; } : ; : : row_security_cmd: : ALL { $$ = "all"; } 0.00 : 521f5e: 41 be c4 bb 87 00 mov $0x87bbc4,%r14d : | SELECT { $$ = "select"; } 0.00 : 521f64: e9 17 fa fe ff jmpq 511980 : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityDefaultForCmd: : FOR row_security_cmd { $$ = $2; } : | /* EMPTY */ { $$ = "all"; } 0.00 : 521f69: 41 be c4 bb 87 00 mov $0x87bbc4,%r14d : ; 0.00 : 521f6f: e9 0c fa fe ff jmpq 511980 : TO role_list { $$ = $2; } : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityDefaultForCmd: : FOR row_security_cmd { $$ = $2; } 0.00 : 521f74: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 521f7b: 4c 8b 32 mov (%rdx),%r14 : | /* EMPTY */ { $$ = "all"; } 0.00 : 521f7e: e9 fd f9 fe ff jmpq 511980 : | /* EMPTY */ { $$ = list_make1(makeString("public")); } : ; : : RowSecurityOptionalToRole: : TO role_list { $$ = $2; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 521f83: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 521f86: e9 f5 f9 fe ff jmpq 511980 : TO role_list { $$ = $2; } : | /* EMPTY */ { $$ = list_make1(makeString("public")); } : ; : : RowSecurityOptionalToRole: : TO role_list { $$ = $2; } 0.00 : 521f8b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 521f92: 4c 8b 30 mov (%rax),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 521f95: e9 e6 f9 fe ff jmpq 511980 : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityDefaultToRole: : TO role_list { $$ = $2; } : | /* EMPTY */ { $$ = list_make1(makeString("public")); } 0.00 : 521f9a: bf 75 b1 8d 00 mov $0x8db175,%edi 0.00 : 521f9f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 521fa6: e8 45 d7 0d 00 callq 5ff6f0 0.00 : 521fab: 31 f6 xor %esi,%esi 0.00 : 521fad: 48 89 c7 mov %rax,%rdi 0.00 : 521fb0: e8 9b f8 0b 00 callq 5e1850 : ; 0.00 : 521fb5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityDefaultToRole: : TO role_list { $$ = $2; } : | /* EMPTY */ { $$ = list_make1(makeString("public")); } 0.00 : 521fbc: 49 89 c6 mov %rax,%r14 : ; 0.00 : 521fbf: e9 bc f9 fe ff jmpq 511980 : WITH CHECK '(' a_expr ')' { $$ = $4; } : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityDefaultToRole: : TO role_list { $$ = $2; } 0.00 : 521fc4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 521fcb: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = list_make1(makeString("public")); } 0.00 : 521fce: e9 ad f9 fe ff jmpq 511980 : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityOptionalWithCheck: : WITH CHECK '(' a_expr ')' { $$ = $4; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 521fd3: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 521fd6: e9 a5 f9 fe ff jmpq 511980 : USING '(' a_expr ')' { $$ = $3; } : | /* EMPTY */ { $$ = NULL; } : ; : : RowSecurityOptionalWithCheck: : WITH CHECK '(' a_expr ')' { $$ = $4; } 0.00 : 521fdb: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 521fe2: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 521fe6: e9 95 f9 fe ff jmpq 511980 : } : ; : : RowSecurityOptionalExpr: : USING '(' a_expr ')' { $$ = $3; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 521feb: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 521fee: e9 8d f9 fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : RowSecurityOptionalExpr: : USING '(' a_expr ')' { $$ = $3; } 0.00 : 521ff3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 521ffa: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 521ffe: e9 7d f9 fe ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522003: 48 8b 3d 56 88 69 00 mov 0x698856(%rip),%rdi # bba860 0.00 : 52200a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52200f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522016: e8 f5 6d 27 00 callq 798e10 0.00 : 52201b: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_POLICY; 0.00 : 522021: c7 40 18 16 00 00 00 movl $0x16,0x18(%rax) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522028: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 52202b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->arguments = NIL; : n->behavior = $8; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 522032: 49 89 de mov %rbx,%r14 : } : | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 522035: 48 8b 79 e8 mov -0x18(%rcx),%rdi 0.00 : 522039: e8 b2 d6 0d 00 callq 5ff6f0 0.00 : 52203e: 48 89 c6 mov %rax,%rsi 0.00 : 522041: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522048: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 52204c: e8 2f fe 0b 00 callq 5e1e80 0.00 : 522051: 31 f6 xor %esi,%esi 0.00 : 522053: 48 89 c7 mov %rax,%rdi 0.00 : 522056: e8 f5 f7 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 52205b: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 522062: 00 : } : | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($7, makeString($5))); 0.00 : 522063: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $8; 0.00 : 522067: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52206e: 8b 02 mov (%rdx),%eax : n->missing_ok = true; 0.00 : 522070: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 522074: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($7, makeString($5))); : n->arguments = NIL; : n->behavior = $8; 0.00 : 522078: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 52207b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522082: e9 f9 f8 fe ff jmpq 511980 : ; : : DropPolicyStmt: : DROP POLICY name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522087: 48 8b 3d d2 87 69 00 mov 0x6987d2(%rip),%rdi # bba860 0.00 : 52208e: be 28 00 00 00 mov $0x28,%esi 0.00 : 522093: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52209a: e8 71 6d 27 00 callq 798e10 0.00 : 52209f: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_POLICY; 0.00 : 5220a5: c7 40 18 16 00 00 00 movl $0x16,0x18(%rax) : ; : : DropPolicyStmt: : DROP POLICY name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 5220ac: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 5220af: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = NIL; : n->behavior = $6; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 5220b6: 49 89 de mov %rbx,%r14 : DropPolicyStmt: : DROP POLICY name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 5220b9: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 5220bd: e8 2e d6 0d 00 callq 5ff6f0 0.00 : 5220c2: 48 89 c6 mov %rax,%rsi 0.00 : 5220c5: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5220cc: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 5220d0: e8 ab fd 0b 00 callq 5e1e80 0.00 : 5220d5: 31 f6 xor %esi,%esi 0.00 : 5220d7: 48 89 c7 mov %rax,%rdi 0.00 : 5220da: e8 71 f7 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 5220df: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5220e6: 00 : DropPolicyStmt: : DROP POLICY name ON any_name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($5, makeString($3))); 0.00 : 5220e7: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $6; 0.00 : 5220eb: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5220f2: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 5220f4: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 5220f8: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_POLICY; : n->objects = list_make1(lappend($5, makeString($3))); : n->arguments = NIL; : n->behavior = $6; 0.00 : 5220fc: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *) n; : } : | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior 0.00 : 5220ff: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522106: e9 75 f8 fe ff jmpq 511980 : : AlterPolicyStmt: : ALTER POLICY name ON qualified_name RowSecurityOptionalToRole : RowSecurityOptionalExpr RowSecurityOptionalWithCheck : { : AlterPolicyStmt *n = makeNode(AlterPolicyStmt); 0.00 : 52210b: 48 8b 3d 4e 87 69 00 mov 0x69874e(%rip),%rdi # bba860 0.00 : 522112: be 30 00 00 00 mov $0x30,%esi 0.00 : 522117: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52211e: e8 ed 6c 27 00 callq 798e10 0.00 : 522123: c7 00 20 03 00 00 movl $0x320,(%rax) : n->policy_name = $3; 0.00 : 522129: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->table = $5; : n->roles = $6; : n->qual = $7; : n->with_check = $8; : $$ = (Node *) n; 0.00 : 522130: 49 89 c6 mov %rax,%r14 : AlterPolicyStmt: : ALTER POLICY name ON qualified_name RowSecurityOptionalToRole : RowSecurityOptionalExpr RowSecurityOptionalWithCheck : { : AlterPolicyStmt *n = makeNode(AlterPolicyStmt); : n->policy_name = $3; 0.00 : 522133: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 522137: 48 89 50 08 mov %rdx,0x8(%rax) : n->table = $5; 0.00 : 52213b: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 52213f: 48 89 50 10 mov %rdx,0x10(%rax) : n->roles = $6; 0.00 : 522143: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 522147: 48 89 50 18 mov %rdx,0x18(%rax) : n->qual = $7; 0.00 : 52214b: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 52214f: 48 89 50 20 mov %rdx,0x20(%rax) : n->with_check = $8; 0.00 : 522153: 48 8b 13 mov (%rbx),%rdx 0.00 : 522156: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *) n; : } : ; 0.00 : 52215a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522161: e9 1a f8 fe ff jmpq 511980 : CreatePolicyStmt: : CREATE POLICY name ON qualified_name RowSecurityDefaultForCmd : RowSecurityDefaultToRole RowSecurityOptionalExpr : RowSecurityOptionalWithCheck : { : CreatePolicyStmt *n = makeNode(CreatePolicyStmt); 0.00 : 522166: 48 8b 3d f3 86 69 00 mov 0x6986f3(%rip),%rdi # bba860 0.00 : 52216d: be 38 00 00 00 mov $0x38,%esi 0.00 : 522172: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522179: e8 92 6c 27 00 callq 798e10 0.00 : 52217e: c7 00 1f 03 00 00 movl $0x31f,(%rax) : n->policy_name = $3; 0.00 : 522184: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->table = $5; : n->cmd = $6; : n->roles = $7; : n->qual = $8; : n->with_check = $9; : $$ = (Node *) n; 0.00 : 52218b: 49 89 c6 mov %rax,%r14 : CREATE POLICY name ON qualified_name RowSecurityDefaultForCmd : RowSecurityDefaultToRole RowSecurityOptionalExpr : RowSecurityOptionalWithCheck : { : CreatePolicyStmt *n = makeNode(CreatePolicyStmt); : n->policy_name = $3; 0.00 : 52218e: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 522192: 48 89 50 08 mov %rdx,0x8(%rax) : n->table = $5; 0.00 : 522196: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 52219a: 48 89 50 10 mov %rdx,0x10(%rax) : n->cmd = $6; 0.00 : 52219e: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 5221a2: 48 89 50 18 mov %rdx,0x18(%rax) : n->roles = $7; 0.00 : 5221a6: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5221aa: 48 89 50 20 mov %rdx,0x20(%rax) : n->qual = $8; 0.00 : 5221ae: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5221b2: 48 89 50 28 mov %rdx,0x28(%rax) : n->with_check = $9; 0.00 : 5221b6: 48 8b 11 mov (%rcx),%rdx 0.00 : 5221b9: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5221bd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5221c4: e9 b7 f7 fe ff jmpq 511980 : * : ****************************************************************************/ : : AlterUserMappingStmt: ALTER USER MAPPING FOR auth_ident SERVER name alter_generic_options : { : AlterUserMappingStmt *n = makeNode(AlterUserMappingStmt); 0.00 : 5221c9: 48 8b 3d 90 86 69 00 mov 0x698690(%rip),%rdi # bba860 0.00 : 5221d0: be 20 00 00 00 mov $0x20,%esi 0.00 : 5221d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5221dc: e8 2f 6c 27 00 callq 798e10 0.00 : 5221e1: c7 00 10 03 00 00 movl $0x310,(%rax) : n->username = $5; 0.00 : 5221e7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->servername = $7; : n->options = $8; : $$ = (Node *) n; 0.00 : 5221ee: 49 89 c6 mov %rax,%r14 : ****************************************************************************/ : : AlterUserMappingStmt: ALTER USER MAPPING FOR auth_ident SERVER name alter_generic_options : { : AlterUserMappingStmt *n = makeNode(AlterUserMappingStmt); : n->username = $5; 0.00 : 5221f1: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 5221f5: 48 89 50 08 mov %rdx,0x8(%rax) : n->servername = $7; 0.00 : 5221f9: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5221fd: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = $8; 0.00 : 522201: 48 8b 16 mov (%rsi),%rdx 0.00 : 522204: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522208: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52220f: e9 6c f7 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *) n; : } : | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); 0.00 : 522214: 48 8b 3d 45 86 69 00 mov 0x698645(%rip),%rdi # bba860 0.00 : 52221b: be 20 00 00 00 mov $0x20,%esi 0.00 : 522220: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522227: e8 e4 6b 27 00 callq 798e10 0.00 : 52222c: c7 00 11 03 00 00 movl $0x311,(%rax) : n->username = $7; 0.00 : 522232: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->servername = $9; : n->missing_ok = true; : $$ = (Node *) n; 0.00 : 522239: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); : n->username = $7; 0.00 : 52223c: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 522240: 48 89 50 08 mov %rdx,0x8(%rax) : n->servername = $9; 0.00 : 522244: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 522247: c6 40 18 01 movb $0x1,0x18(%rax) : } : | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); : n->username = $7; : n->servername = $9; 0.00 : 52224b: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = true; : $$ = (Node *) n; : } : ; 0.00 : 52224f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522256: e9 25 f7 fe ff jmpq 511980 : * : ****************************************************************************/ : : DropUserMappingStmt: DROP USER MAPPING FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); 0.00 : 52225b: 48 8b 3d fe 85 69 00 mov 0x6985fe(%rip),%rdi # bba860 0.00 : 522262: be 20 00 00 00 mov $0x20,%esi 0.00 : 522267: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52226e: e8 9d 6b 27 00 callq 798e10 0.00 : 522273: c7 00 11 03 00 00 movl $0x311,(%rax) : n->username = $5; 0.00 : 522279: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->servername = $7; : n->missing_ok = false; : $$ = (Node *) n; 0.00 : 522280: 49 89 c6 mov %rax,%r14 : ****************************************************************************/ : : DropUserMappingStmt: DROP USER MAPPING FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); : n->username = $5; 0.00 : 522283: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 522287: 48 89 50 08 mov %rdx,0x8(%rax) : n->servername = $7; 0.00 : 52228b: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 52228e: c6 40 18 00 movb $0x0,0x18(%rax) : : DropUserMappingStmt: DROP USER MAPPING FOR auth_ident SERVER name : { : DropUserMappingStmt *n = makeNode(DropUserMappingStmt); : n->username = $5; : n->servername = $7; 0.00 : 522292: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = false; : $$ = (Node *) n; : } : | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name 0.00 : 522296: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52229d: e9 de f6 fe ff jmpq 511980 : : /* User mapping authorization identifier */ : auth_ident: : CURRENT_USER { $$ = "current_user"; } : | USER { $$ = "current_user"; } : | RoleId { $$ = (strcmp($1, "public") == 0) ? NULL : $1; } 0.00 : 5222a2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5222a9: bf 75 b1 8d 00 mov $0x8db175,%edi 0.00 : 5222ae: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 5222b3: 4c 8b 06 mov (%rsi),%r8 0.00 : 5222b6: 4c 89 c6 mov %r8,%rsi 0.00 : 5222b9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5222bb: 0f 97 c2 seta %dl 0.00 : 5222be: 0f 92 c0 setb %al 0.00 : 5222c1: 45 31 f6 xor %r14d,%r14d 0.00 : 5222c4: 38 c2 cmp %al,%dl 0.00 : 5222c6: 4d 0f 45 f0 cmovne %r8,%r14 : ; 0.00 : 5222ca: e9 b1 f6 fe ff jmpq 511980 : ; : : /* User mapping authorization identifier */ : auth_ident: : CURRENT_USER { $$ = "current_user"; } : | USER { $$ = "current_user"; } 0.00 : 5222cf: 41 be 3b 96 7c 00 mov $0x7c963b,%r14d : | RoleId { $$ = (strcmp($1, "public") == 0) ? NULL : $1; } 0.00 : 5222d5: e9 a6 f6 fe ff jmpq 511980 : } : ; : : /* User mapping authorization identifier */ : auth_ident: : CURRENT_USER { $$ = "current_user"; } 0.00 : 5222da: 41 be 3b 96 7c 00 mov $0x7c963b,%r14d : | USER { $$ = "current_user"; } 0.00 : 5222e0: e9 9b f6 fe ff jmpq 511980 : * : *****************************************************************************/ : : CreateUserMappingStmt: CREATE USER MAPPING FOR auth_ident SERVER name create_generic_options : { : CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); 0.00 : 5222e5: 48 8b 3d 74 85 69 00 mov 0x698574(%rip),%rdi # bba860 0.00 : 5222ec: be 20 00 00 00 mov $0x20,%esi 0.00 : 5222f1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5222f8: e8 13 6b 27 00 callq 798e10 0.00 : 5222fd: c7 00 0f 03 00 00 movl $0x30f,(%rax) : n->username = $5; 0.00 : 522303: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->servername = $7; : n->options = $8; : $$ = (Node *) n; 0.00 : 52230a: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : CreateUserMappingStmt: CREATE USER MAPPING FOR auth_ident SERVER name create_generic_options : { : CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); : n->username = $5; 0.00 : 52230d: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 522311: 48 89 50 08 mov %rdx,0x8(%rax) : n->servername = $7; 0.00 : 522315: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 522319: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = $8; 0.00 : 52231d: 48 8b 13 mov (%rbx),%rdx 0.00 : 522320: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522324: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52232b: e9 50 f6 fe ff jmpq 511980 : n->table_names = $3; : $$ = n; : } : | /*EMPTY*/ : { : ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); 0.00 : 522330: bf 10 00 00 00 mov $0x10,%edi 0.00 : 522335: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52233c: e8 0f 6a 27 00 callq 798d50 : n->type = FDW_IMPORT_SCHEMA_ALL; 0.00 : 522341: c7 00 00 00 00 00 movl $0x0,(%rax) : n->table_names = NIL; 0.00 : 522347: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 52234e: 00 : $$ = n; 0.00 : 52234f: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 522352: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522359: e9 22 f6 fe ff jmpq 511980 : ; : : import_qualification: : import_qualification_type '(' relation_expr_list ')' : { : ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); 0.00 : 52235e: bf 10 00 00 00 mov $0x10,%edi 0.00 : 522363: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52236a: e8 e1 69 27 00 callq 798d50 : n->type = $1; 0.00 : 52236f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->table_names = $3; : $$ = n; 0.00 : 522376: 49 89 c6 mov %rax,%r14 : : import_qualification: : import_qualification_type '(' relation_expr_list ')' : { : ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); : n->type = $1; 0.00 : 522379: 8b 51 e8 mov -0x18(%rcx),%edx 0.00 : 52237c: 89 10 mov %edx,(%rax) : n->table_names = $3; 0.00 : 52237e: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 522382: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | /*EMPTY*/ 0.00 : 522386: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52238d: e9 ee f5 fe ff jmpq 511980 : } : ; : : import_qualification_type: : LIMIT TO { $$ = FDW_IMPORT_SCHEMA_LIMIT_TO; } : | EXCEPT { $$ = FDW_IMPORT_SCHEMA_EXCEPT; } 0.00 : 522392: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 522399: ff ff ff 0.00 : 52239c: 49 21 c6 and %rax,%r14 0.00 : 52239f: 49 83 ce 02 or $0x2,%r14 : ; 0.00 : 5223a3: e9 d8 f5 fe ff jmpq 511980 : ROW { $$ = TRUE; } : | STATEMENT { $$ = FALSE; } : ; : : TriggerWhen: : WHEN '(' a_expr ')' { $$ = $3; } 0.00 : 5223a8: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5223af: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5223b3: e9 c8 f5 fe ff jmpq 511980 : | /*EMPTY*/ {} : ; : : TriggerForType: : ROW { $$ = TRUE; } : | STATEMENT { $$ = FALSE; } 0.00 : 5223b8: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 5223bb: e9 c0 f5 fe ff jmpq 511980 : EACH {} : | /*EMPTY*/ {} : ; : : TriggerForType: : ROW { $$ = TRUE; } 0.00 : 5223c0: 41 b6 01 mov $0x1,%r14b : | STATEMENT { $$ = FALSE; } 0.00 : 5223c3: e9 b8 f5 fe ff jmpq 511980 : | type_func_name_keyword { $$ = pstrdup($1); } : ; : : /* Any not-fully-reserved word --- these names can be, eg, role names. : */ : NonReservedWord: IDENT { $$ = $1; } 0.00 : 5223c8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5223cf: 4c 8b 32 mov (%rdx),%r14 : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 5223d2: e9 a9 f5 fe ff jmpq 511980 0.00 : 5223d7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5223de: 48 8b 39 mov (%rcx),%rdi 0.00 : 5223e1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5223e8: e8 63 6b 27 00 callq 798f50 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 5223ed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* Any not-fully-reserved word --- these names can be, eg, role names. : */ : NonReservedWord: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 5223f4: 49 89 c6 mov %rax,%r14 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 5223f7: e9 84 f5 fe ff jmpq 511980 : { : /* : * If ROW/STATEMENT not specified, default to : * STATEMENT, per SQL : */ : $$ = FALSE; 0.00 : 5223fc: 45 30 f6 xor %r14b,%r14b : } : ; 0.00 : 5223ff: e9 7c f5 fe ff jmpq 511980 : ; : : TriggerForSpec: : FOR TriggerForOptEach TriggerForType : { : $$ = $3; 0.00 : 522404: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52240b: 44 8a 32 mov (%rdx),%r14b : } : | /* EMPTY */ 0.00 : 52240e: e9 6d f5 fe ff jmpq 511980 : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } : | UPDATE OF columnList : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), $3); } : | TRUNCATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); } 0.00 : 522413: 31 f6 xor %esi,%esi 0.00 : 522415: 31 ff xor %edi,%edi 0.00 : 522417: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52241e: e8 2d f4 0b 00 callq 5e1850 0.00 : 522423: bf 20 00 00 00 mov $0x20,%edi 0.00 : 522428: 48 89 c3 mov %rax,%rbx 0.00 : 52242b: e8 20 d3 0d 00 callq 5ff750 0.00 : 522430: 48 89 de mov %rbx,%rsi 0.00 : 522433: 48 89 c7 mov %rax,%rdi 0.00 : 522436: e8 15 f4 0b 00 callq 5e1850 : ; 0.00 : 52243b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } : | UPDATE OF columnList : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), $3); } : | TRUNCATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); } 0.00 : 522442: 49 89 c6 mov %rax,%r14 : ; 0.00 : 522445: e9 36 f5 fe ff jmpq 511980 : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } : | UPDATE OF columnList : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), $3); } 0.00 : 52244a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522451: 31 f6 xor %esi,%esi 0.00 : 522453: 48 8b 38 mov (%rax),%rdi 0.00 : 522456: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52245d: e8 ee f3 0b 00 callq 5e1850 0.00 : 522462: bf 10 00 00 00 mov $0x10,%edi 0.00 : 522467: 48 89 c3 mov %rax,%rbx 0.00 : 52246a: e8 e1 d2 0d 00 callq 5ff750 0.00 : 52246f: 48 89 de mov %rbx,%rsi 0.00 : 522472: 48 89 c7 mov %rax,%rdi 0.00 : 522475: e8 d6 f3 0b 00 callq 5e1850 : | TRUNCATE 0.00 : 52247a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } : | UPDATE OF columnList : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), $3); } 0.00 : 522481: 49 89 c6 mov %rax,%r14 : | TRUNCATE 0.00 : 522484: e9 f7 f4 fe ff jmpq 511980 : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } 0.00 : 522489: 31 f6 xor %esi,%esi 0.00 : 52248b: 31 ff xor %edi,%edi 0.00 : 52248d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522494: e8 b7 f3 0b 00 callq 5e1850 0.00 : 522499: bf 10 00 00 00 mov $0x10,%edi 0.00 : 52249e: 48 89 c3 mov %rax,%rbx 0.00 : 5224a1: e8 aa d2 0d 00 callq 5ff750 0.00 : 5224a6: 48 89 de mov %rbx,%rsi 0.00 : 5224a9: 48 89 c7 mov %rax,%rdi 0.00 : 5224ac: e8 9f f3 0b 00 callq 5e1850 : | UPDATE OF columnList 0.00 : 5224b1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } : | UPDATE : { $$ = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); } 0.00 : 5224b8: 49 89 c6 mov %rax,%r14 : | UPDATE OF columnList 0.00 : 5224bb: e9 c0 f4 fe ff jmpq 511980 : : TriggerOneEvent: : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } 0.00 : 5224c0: 31 f6 xor %esi,%esi 0.00 : 5224c2: 31 ff xor %edi,%edi 0.00 : 5224c4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5224cb: e8 80 f3 0b 00 callq 5e1850 0.00 : 5224d0: bf 08 00 00 00 mov $0x8,%edi 0.00 : 5224d5: 48 89 c3 mov %rax,%rbx 0.00 : 5224d8: e8 73 d2 0d 00 callq 5ff750 0.00 : 5224dd: 48 89 de mov %rbx,%rsi 0.00 : 5224e0: 48 89 c7 mov %rax,%rdi 0.00 : 5224e3: e8 68 f3 0b 00 callq 5e1850 : | UPDATE 0.00 : 5224e8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : TriggerOneEvent: : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } : | DELETE_P : { $$ = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); } 0.00 : 5224ef: 49 89 c6 mov %rax,%r14 : | UPDATE 0.00 : 5224f2: e9 89 f4 fe ff jmpq 511980 : } : ; : : TriggerOneEvent: : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } 0.00 : 5224f7: 31 f6 xor %esi,%esi 0.00 : 5224f9: 31 ff xor %edi,%edi 0.00 : 5224fb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522502: e8 49 f3 0b 00 callq 5e1850 0.00 : 522507: bf 04 00 00 00 mov $0x4,%edi 0.00 : 52250c: 48 89 c3 mov %rax,%rbx 0.00 : 52250f: e8 3c d2 0d 00 callq 5ff750 0.00 : 522514: 48 89 de mov %rbx,%rsi 0.00 : 522517: 48 89 c7 mov %rax,%rdi 0.00 : 52251a: e8 31 f3 0b 00 callq 5e1850 : | DELETE_P 0.00 : 52251f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : TriggerOneEvent: : INSERT : { $$ = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); } 0.00 : 522526: 49 89 c6 mov %rax,%r14 : | DELETE_P 0.00 : 522529: e9 52 f4 fe ff jmpq 511980 : TriggerEvents: : TriggerOneEvent : { $$ = $1; } : | TriggerEvents OR TriggerOneEvent : { : int events1 = intVal(linitial($1)); 0.00 : 52252e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522535: 31 c0 xor %eax,%eax 0.00 : 522537: 48 8b 4b f0 mov -0x10(%rbx),%rcx 0.00 : 52253b: 48 85 c9 test %rcx,%rcx 0.00 : 52253e: 74 04 je 522544 0.00 : 522540: 48 8b 41 08 mov 0x8(%rcx),%rax : int events2 = intVal(linitial($3)); 0.00 : 522544: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : TriggerEvents: : TriggerOneEvent : { $$ = $1; } : | TriggerEvents OR TriggerOneEvent : { : int events1 = intVal(linitial($1)); 0.00 : 52254b: 48 8b 00 mov (%rax),%rax : int events2 = intVal(linitial($3)); 0.00 : 52254e: 48 8b 16 mov (%rsi),%rdx : TriggerEvents: : TriggerOneEvent : { $$ = $1; } : | TriggerEvents OR TriggerOneEvent : { : int events1 = intVal(linitial($1)); 0.00 : 522551: 44 8b 68 08 mov 0x8(%rax),%r13d 0.00 : 522555: 31 c0 xor %eax,%eax 0.00 : 522557: 48 85 d2 test %rdx,%rdx 0.00 : 52255a: 74 04 je 522560 0.00 : 52255c: 48 8b 42 08 mov 0x8(%rdx),%rax : int events2 = intVal(linitial($3)); 0.00 : 522560: 48 8b 00 mov (%rax),%rax 0.00 : 522563: 44 8b 60 08 mov 0x8(%rax),%r12d 0.00 : 522567: 31 c0 xor %eax,%eax 0.00 : 522569: 48 85 c9 test %rcx,%rcx 0.00 : 52256c: 74 04 je 522572 0.00 : 52256e: 48 8b 41 08 mov 0x8(%rcx),%rax : List *columns1 = (List *) lsecond($1); 0.00 : 522572: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 522576: 48 8b 38 mov (%rax),%rdi 0.00 : 522579: 31 c0 xor %eax,%eax 0.00 : 52257b: 48 85 d2 test %rdx,%rdx 0.00 : 52257e: 74 04 je 522584 0.00 : 522580: 48 8b 42 08 mov 0x8(%rdx),%rax : List *columns2 = (List *) lsecond($3); 0.00 : 522584: 48 8b 40 08 mov 0x8(%rax),%rax : : if (events1 & events2) 0.00 : 522588: 45 85 ec test %r13d,%r12d : | TriggerEvents OR TriggerOneEvent : { : int events1 = intVal(linitial($1)); : int events2 = intVal(linitial($3)); : List *columns1 = (List *) lsecond($1); : List *columns2 = (List *) lsecond($3); 0.00 : 52258b: 48 8b 30 mov (%rax),%rsi : : if (events1 & events2) 0.00 : 52258e: 0f 85 35 79 00 00 jne 529ec9 : * which columns went with which event, but so long as : * only UPDATE carries columns and we disallow multiple : * UPDATE items, it doesn't matter. Command execution : * should just ignore the columns for non-UPDATE events. : */ : $$ = list_make2(makeInteger(events1 | events2), 0.00 : 522594: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52259b: 45 09 ec or %r13d,%r12d 0.00 : 52259e: e8 1d 00 0c 00 callq 5e25c0 0.00 : 5225a3: 31 f6 xor %esi,%esi 0.00 : 5225a5: 48 89 c7 mov %rax,%rdi 0.00 : 5225a8: e8 a3 f2 0b 00 callq 5e1850 0.00 : 5225ad: 49 63 fc movslq %r12d,%rdi 0.00 : 5225b0: 48 89 c3 mov %rax,%rbx 0.00 : 5225b3: e8 98 d1 0d 00 callq 5ff750 0.00 : 5225b8: 48 89 de mov %rbx,%rsi 0.00 : 5225bb: 48 89 c7 mov %rax,%rdi 0.00 : 5225be: e8 8d f2 0b 00 callq 5e1850 : list_concat(columns1, columns2)); : } : ; 0.00 : 5225c3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * which columns went with which event, but so long as : * only UPDATE carries columns and we disallow multiple : * UPDATE items, it doesn't matter. Command execution : * should just ignore the columns for non-UPDATE events. : */ : $$ = list_make2(makeInteger(events1 | events2), 0.00 : 5225ca: 49 89 c6 mov %rax,%r14 : list_concat(columns1, columns2)); : } : ; 0.00 : 5225cd: e9 ae f3 fe ff jmpq 511980 : | INSTEAD OF { $$ = TRIGGER_TYPE_INSTEAD; } : ; : : TriggerEvents: : TriggerOneEvent : { $$ = $1; } 0.00 : 5225d2: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5225d9: 4c 8b 32 mov (%rdx),%r14 : | TriggerEvents OR TriggerOneEvent 0.00 : 5225dc: e9 9f f3 fe ff jmpq 511980 : ; : : TriggerActionTime: : BEFORE { $$ = TRIGGER_TYPE_BEFORE; } : | AFTER { $$ = TRIGGER_TYPE_AFTER; } : | INSTEAD OF { $$ = TRIGGER_TYPE_INSTEAD; } 0.00 : 5225e1: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5225e8: ff ff ff 0.00 : 5225eb: 49 21 c6 and %rax,%r14 0.00 : 5225ee: 49 83 ce 40 or $0x40,%r14 : ; 0.00 : 5225f2: e9 89 f3 fe ff jmpq 511980 : } : ; : : TriggerActionTime: : BEFORE { $$ = TRIGGER_TYPE_BEFORE; } : | AFTER { $$ = TRIGGER_TYPE_AFTER; } 0.00 : 5225f7: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5225fe: ff ff ff 0.00 : 522601: 49 21 f6 and %rsi,%r14 : | INSTEAD OF { $$ = TRIGGER_TYPE_INSTEAD; } 0.00 : 522604: e9 77 f3 fe ff jmpq 511980 : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } : | Sconst { $$ = makeString($1); } : | ColLabel { $$ = makeString($1); } 0.00 : 522609: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522610: 48 8b 3e mov (%rsi),%rdi 0.00 : 522613: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52261a: e8 d1 d0 0d 00 callq 5ff6f0 : ; 0.00 : 52261f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } : | Sconst { $$ = makeString($1); } : | ColLabel { $$ = makeString($1); } 0.00 : 522626: 49 89 c6 mov %rax,%r14 : ; 0.00 : 522629: e9 52 f3 fe ff jmpq 511980 : Iconst : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } : | Sconst { $$ = makeString($1); } 0.00 : 52262e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522635: 48 8b 3b mov (%rbx),%rdi 0.00 : 522638: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52263f: e8 ac d0 0d 00 callq 5ff6f0 : | ColLabel { $$ = makeString($1); } 0.00 : 522644: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : Iconst : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } : | Sconst { $$ = makeString($1); } 0.00 : 52264b: 49 89 c6 mov %rax,%r14 : | ColLabel { $$ = makeString($1); } 0.00 : 52264e: e9 2d f3 fe ff jmpq 511980 : TriggerFuncArg: : Iconst : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } 0.00 : 522653: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52265a: 48 8b 39 mov (%rcx),%rdi 0.00 : 52265d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522664: e8 87 d0 0d 00 callq 5ff6f0 : | Sconst { $$ = makeString($1); } 0.00 : 522669: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : TriggerFuncArg: : Iconst : { : $$ = makeString(psprintf("%d", $1)); : } : | FCONST { $$ = makeString($1); } 0.00 : 522670: 49 89 c6 mov %rax,%r14 : | Sconst { $$ = makeString($1); } 0.00 : 522673: e9 08 f3 fe ff jmpq 511980 : ; : : TriggerFuncArg: : Iconst : { : $$ = makeString(psprintf("%d", $1)); 0.00 : 522678: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52267f: bf 42 86 7c 00 mov $0x7c8642,%edi 0.00 : 522684: 31 c0 xor %eax,%eax 0.00 : 522686: 8b 32 mov (%rdx),%esi 0.00 : 522688: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52268f: e8 4c be 28 00 callq 7ae4e0 0.00 : 522694: 48 89 c7 mov %rax,%rdi 0.00 : 522697: e8 54 d0 0d 00 callq 5ff6f0 : } : | FCONST { $$ = makeString($1); } 0.00 : 52269c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : TriggerFuncArg: : Iconst : { : $$ = makeString(psprintf("%d", $1)); 0.00 : 5226a3: 49 89 c6 mov %rax,%r14 : } : | FCONST { $$ = makeString($1); } 0.00 : 5226a6: e9 d5 f2 fe ff jmpq 511980 : ; : : TriggerFuncArgs: : TriggerFuncArg { $$ = list_make1($1); } : | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5226ab: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5226ae: e9 cd f2 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : TriggerFuncArgs: : TriggerFuncArg { $$ = list_make1($1); } : | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } 0.00 : 5226b3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5226ba: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 5226be: 48 8b 36 mov (%rsi),%rsi 0.00 : 5226c1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5226c8: e8 b3 f7 0b 00 callq 5e1e80 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5226cd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ { $$ = NULL; } : ; : : TriggerFuncArgs: : TriggerFuncArg { $$ = list_make1($1); } : | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } 0.00 : 5226d4: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5226d7: e9 a4 f2 fe ff jmpq 511980 : WHEN '(' a_expr ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } : ; : : TriggerFuncArgs: : TriggerFuncArg { $$ = list_make1($1); } 0.00 : 5226dc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5226e3: 31 f6 xor %esi,%esi 0.00 : 5226e5: 48 8b 3b mov (%rbx),%rdi 0.00 : 5226e8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5226ef: e8 5c f1 0b 00 callq 5e1850 : | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } 0.00 : 5226f4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : WHEN '(' a_expr ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } : ; : : TriggerFuncArgs: : TriggerFuncArg { $$ = list_make1($1); } 0.00 : 5226fb: 49 89 c6 mov %rax,%r14 : | TriggerFuncArgs ',' TriggerFuncArg { $$ = lappend($1, $3); } 0.00 : 5226fe: e9 7d f2 fe ff jmpq 511980 : | STATEMENT { $$ = FALSE; } : ; : : TriggerWhen: : WHEN '(' a_expr ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 522703: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522706: e9 75 f2 fe ff jmpq 511980 : | ColLabel { $$ = makeString($1); } : ; : : OptConstrFromTable: : FROM qualified_name { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 52270b: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 52270e: e9 6d f2 fe ff jmpq 511980 : | Sconst { $$ = makeString($1); } : | ColLabel { $$ = makeString($1); } : ; : : OptConstrFromTable: : FROM qualified_name { $$ = $2; } 0.00 : 522713: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 52271a: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 52271d: e9 5e f2 fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : import_qualification_type: : LIMIT TO { $$ = FDW_IMPORT_SCHEMA_LIMIT_TO; } 0.00 : 522722: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 522729: ff ff ff 0.00 : 52272c: 49 21 f6 and %rsi,%r14 0.00 : 52272f: 49 83 ce 01 or $0x1,%r14 : | EXCEPT { $$ = FDW_IMPORT_SCHEMA_EXCEPT; } 0.00 : 522733: e9 48 f2 fe ff jmpq 511980 : : ImportForeignSchemaStmt: : IMPORT_P FOREIGN SCHEMA name import_qualification : FROM SERVER name INTO name create_generic_options : { : ImportForeignSchemaStmt *n = makeNode(ImportForeignSchemaStmt); 0.00 : 522738: 48 8b 3d 21 81 69 00 mov 0x698121(%rip),%rdi # bba860 0.00 : 52273f: be 38 00 00 00 mov $0x38,%esi 0.00 : 522744: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52274b: e8 c0 66 27 00 callq 798e10 0.00 : 522750: c7 00 16 03 00 00 movl $0x316,(%rax) : n->server_name = $8; 0.00 : 522756: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->remote_schema = $4; : n->local_schema = $10; : n->list_type = $5->type; : n->table_list = $5->table_names; : n->options = $11; : $$ = (Node *) n; 0.00 : 52275d: 49 89 c6 mov %rax,%r14 : ImportForeignSchemaStmt: : IMPORT_P FOREIGN SCHEMA name import_qualification : FROM SERVER name INTO name create_generic_options : { : ImportForeignSchemaStmt *n = makeNode(ImportForeignSchemaStmt); : n->server_name = $8; 0.00 : 522760: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 522764: 48 89 50 08 mov %rdx,0x8(%rax) : n->remote_schema = $4; 0.00 : 522768: 48 8b 53 c8 mov -0x38(%rbx),%rdx 0.00 : 52276c: 48 89 50 10 mov %rdx,0x10(%rax) : n->local_schema = $10; 0.00 : 522770: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 522774: 48 89 50 18 mov %rdx,0x18(%rax) : n->list_type = $5->type; 0.00 : 522778: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 52277c: 8b 12 mov (%rdx),%edx 0.00 : 52277e: 89 50 20 mov %edx,0x20(%rax) : n->table_list = $5->table_names; 0.00 : 522781: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 522785: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 522789: 48 89 50 28 mov %rdx,0x28(%rax) : n->options = $11; 0.00 : 52278d: 48 8b 13 mov (%rbx),%rdx 0.00 : 522790: 48 89 50 30 mov %rdx,0x30(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522794: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52279b: e9 e0 f1 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5227a0: 48 8b 3d b9 80 69 00 mov 0x6980b9(%rip),%rdi # bba860 0.00 : 5227a7: be 20 00 00 00 mov $0x20,%esi 0.00 : 5227ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5227b3: e8 58 66 27 00 callq 798e10 0.00 : 5227b8: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $6; 0.00 : 5227be: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cmds = $7; : n->relkind = OBJECT_FOREIGN_TABLE; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 5227c5: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $6; 0.00 : 5227c8: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5227cc: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $7; 0.00 : 5227d0: 48 8b 11 mov (%rcx),%rdx : n->relkind = OBJECT_FOREIGN_TABLE; 0.00 : 5227d3: c7 40 18 0d 00 00 00 movl $0xd,0x18(%rax) : n->missing_ok = true; 0.00 : 5227da: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $6; : n->cmds = $7; 0.00 : 5227de: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_FOREIGN_TABLE; : n->missing_ok = true; : $$ = (Node *)n; : } : ; 0.00 : 5227e2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5227e9: e9 92 f1 fe ff jmpq 511980 : *****************************************************************************/ : : AlterForeignTableStmt: : ALTER FOREIGN TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5227ee: 48 8b 3d 6b 80 69 00 mov 0x69806b(%rip),%rdi # bba860 0.00 : 5227f5: be 20 00 00 00 mov $0x20,%esi 0.00 : 5227fa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522801: e8 0a 66 27 00 callq 798e10 0.00 : 522806: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $4; 0.00 : 52280c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->cmds = $5; : n->relkind = OBJECT_FOREIGN_TABLE; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 522813: 49 89 c6 mov %rax,%r14 : : AlterForeignTableStmt: : ALTER FOREIGN TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $4; 0.00 : 522816: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 52281a: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $5; 0.00 : 52281e: 48 8b 16 mov (%rsi),%rdx : n->relkind = OBJECT_FOREIGN_TABLE; 0.00 : 522821: c7 40 18 0d 00 00 00 movl $0xd,0x18(%rax) : n->missing_ok = false; 0.00 : 522828: c6 40 1c 00 movb $0x0,0x1c(%rax) : AlterForeignTableStmt: : ALTER FOREIGN TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $4; : n->cmds = $5; 0.00 : 52282c: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_FOREIGN_TABLE; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER FOREIGN TABLE IF_P EXISTS relation_expr alter_table_cmds 0.00 : 522830: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522837: e9 44 f1 fe ff jmpq 511980 : } : | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name : '(' OptTableElementList ')' : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); 0.00 : 52283c: 48 8b 3d 1d 80 69 00 mov 0x69801d(%rip),%rdi # bba860 0.00 : 522843: be 60 00 00 00 mov $0x60,%esi 0.00 : 522848: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52284f: e8 bc 65 27 00 callq 798e10 0.00 : 522854: c7 00 15 03 00 00 movl $0x315,(%rax) : $7->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 52285a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->base.inhRelations = NIL; : n->base.if_not_exists = true; : /* FDW-specific data */ : n->servername = $12; : n->options = $13; : $$ = (Node *) n; 0.00 : 522861: 49 89 c6 mov %rax,%r14 : | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name : '(' OptTableElementList ')' : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); : $7->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 522864: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 522868: c6 42 24 70 movb $0x70,0x24(%rdx) : n->base.relation = $7; 0.00 : 52286c: 48 8b 53 d0 mov -0x30(%rbx),%rdx 0.00 : 522870: 48 89 50 08 mov %rdx,0x8(%rax) : n->base.tableElts = $9; 0.00 : 522874: 48 8b 53 e0 mov -0x20(%rbx),%rdx : n->base.inhRelations = NIL; 0.00 : 522878: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 52287f: 00 : n->base.if_not_exists = true; 0.00 : 522880: c6 40 48 01 movb $0x1,0x48(%rax) : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); : $7->relpersistence = RELPERSISTENCE_PERMANENT; : n->base.relation = $7; : n->base.tableElts = $9; 0.00 : 522884: 48 89 50 10 mov %rdx,0x10(%rax) : n->base.inhRelations = NIL; : n->base.if_not_exists = true; : /* FDW-specific data */ : n->servername = $12; 0.00 : 522888: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 52288c: 48 89 50 50 mov %rdx,0x50(%rax) : n->options = $13; 0.00 : 522890: 48 8b 13 mov (%rbx),%rdx 0.00 : 522893: 48 89 50 58 mov %rdx,0x58(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522897: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52289e: e9 dd f0 fe ff jmpq 511980 : CreateForeignTableStmt: : CREATE FOREIGN TABLE qualified_name : '(' OptTableElementList ')' : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); 0.00 : 5228a3: 48 8b 3d b6 7f 69 00 mov 0x697fb6(%rip),%rdi # bba860 0.00 : 5228aa: be 60 00 00 00 mov $0x60,%esi 0.00 : 5228af: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5228b6: e8 55 65 27 00 callq 798e10 0.00 : 5228bb: c7 00 15 03 00 00 movl $0x315,(%rax) : $4->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 5228c1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->base.inhRelations = NIL; : n->base.if_not_exists = false; : /* FDW-specific data */ : n->servername = $9; : n->options = $10; : $$ = (Node *) n; 0.00 : 5228c8: 49 89 c6 mov %rax,%r14 : CREATE FOREIGN TABLE qualified_name : '(' OptTableElementList ')' : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); : $4->relpersistence = RELPERSISTENCE_PERMANENT; 0.00 : 5228cb: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 5228cf: c6 42 24 70 movb $0x70,0x24(%rdx) : n->base.relation = $4; 0.00 : 5228d3: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 5228d7: 48 89 50 08 mov %rdx,0x8(%rax) : n->base.tableElts = $6; 0.00 : 5228db: 48 8b 51 e0 mov -0x20(%rcx),%rdx : n->base.inhRelations = NIL; 0.00 : 5228df: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5228e6: 00 : n->base.if_not_exists = false; 0.00 : 5228e7: c6 40 48 00 movb $0x0,0x48(%rax) : SERVER name create_generic_options : { : CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); : $4->relpersistence = RELPERSISTENCE_PERMANENT; : n->base.relation = $4; : n->base.tableElts = $6; 0.00 : 5228eb: 48 89 50 10 mov %rdx,0x10(%rax) : n->base.inhRelations = NIL; : n->base.if_not_exists = false; : /* FDW-specific data */ : n->servername = $9; 0.00 : 5228ef: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5228f3: 48 89 50 50 mov %rdx,0x50(%rax) : n->options = $10; 0.00 : 5228f7: 48 8b 11 mov (%rcx),%rdx 0.00 : 5228fa: 48 89 50 58 mov %rdx,0x58(%rax) : $$ = (Node *) n; : } : | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name 0.00 : 5228fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522905: e9 76 f0 fe ff jmpq 511980 : n->has_version = true; : $$ = (Node *) n; : } : | ALTER SERVER name alter_generic_options : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); 0.00 : 52290a: 48 8b 3d 4f 7f 69 00 mov 0x697f4f(%rip),%rdi # bba860 0.00 : 522911: be 28 00 00 00 mov $0x28,%esi 0.00 : 522916: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52291d: e8 ee 64 27 00 callq 798e10 0.00 : 522922: c7 00 0e 03 00 00 movl $0x30e,(%rax) : n->servername = $3; 0.00 : 522928: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->options = $4; : $$ = (Node *) n; 0.00 : 52292f: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER SERVER name alter_generic_options : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); : n->servername = $3; 0.00 : 522932: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 522936: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $4; 0.00 : 52293a: 48 8b 16 mov (%rsi),%rdx 0.00 : 52293d: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522941: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522948: e9 33 f0 fe ff jmpq 511980 : n->has_version = true; : $$ = (Node *) n; : } : | ALTER SERVER name foreign_server_version : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); 0.00 : 52294d: 48 8b 3d 0c 7f 69 00 mov 0x697f0c(%rip),%rdi # bba860 0.00 : 522954: be 28 00 00 00 mov $0x28,%esi 0.00 : 522959: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522960: e8 ab 64 27 00 callq 798e10 0.00 : 522965: c7 00 0e 03 00 00 movl $0x30e,(%rax) : n->servername = $3; 0.00 : 52296b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->version = $4; : n->has_version = true; : $$ = (Node *) n; 0.00 : 522972: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER SERVER name foreign_server_version : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); : n->servername = $3; 0.00 : 522975: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 522979: 48 89 50 08 mov %rdx,0x8(%rax) : n->version = $4; 0.00 : 52297d: 48 8b 13 mov (%rbx),%rdx : n->has_version = true; 0.00 : 522980: c6 40 20 01 movb $0x1,0x20(%rax) : } : | ALTER SERVER name foreign_server_version : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); : n->servername = $3; : n->version = $4; 0.00 : 522984: 48 89 50 10 mov %rdx,0x10(%rax) : n->has_version = true; : $$ = (Node *) n; : } : | ALTER SERVER name alter_generic_options 0.00 : 522988: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52298f: e9 ec ef fe ff jmpq 511980 : * : ****************************************************************************/ : : AlterForeignServerStmt: ALTER SERVER name foreign_server_version alter_generic_options : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); 0.00 : 522994: 48 8b 3d c5 7e 69 00 mov 0x697ec5(%rip),%rdi # bba860 0.00 : 52299b: be 28 00 00 00 mov $0x28,%esi 0.00 : 5229a0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5229a7: e8 64 64 27 00 callq 798e10 0.00 : 5229ac: c7 00 0e 03 00 00 movl $0x30e,(%rax) : n->servername = $3; 0.00 : 5229b2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->version = $4; : n->options = $5; : n->has_version = true; : $$ = (Node *) n; 0.00 : 5229b9: 49 89 c6 mov %rax,%r14 : ****************************************************************************/ : : AlterForeignServerStmt: ALTER SERVER name foreign_server_version alter_generic_options : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); : n->servername = $3; 0.00 : 5229bc: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 5229c0: 48 89 50 08 mov %rdx,0x8(%rax) : n->version = $4; 0.00 : 5229c4: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 5229c8: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = $5; 0.00 : 5229cc: 48 8b 11 mov (%rcx),%rdx : n->has_version = true; 0.00 : 5229cf: c6 40 20 01 movb $0x1,0x20(%rax) : AlterForeignServerStmt: ALTER SERVER name foreign_server_version alter_generic_options : { : AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); : n->servername = $3; : n->version = $4; : n->options = $5; 0.00 : 5229d3: 48 89 50 18 mov %rdx,0x18(%rax) : n->has_version = true; : $$ = (Node *) n; : } : | ALTER SERVER name foreign_server_version 0.00 : 5229d7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5229de: e9 9d ef fe ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP SERVER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 5229e3: 48 8b 3d 76 7e 69 00 mov 0x697e76(%rip),%rdi # bba860 0.00 : 5229ea: be 28 00 00 00 mov $0x28,%esi 0.00 : 5229ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5229f6: e8 15 64 27 00 callq 798e10 0.00 : 5229fb: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FOREIGN_SERVER; 0.00 : 522a01: c7 40 18 0c 00 00 00 movl $0xc,0x18(%rax) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP SERVER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522a08: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522a0b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->arguments = NIL; : n->missing_ok = true; : n->behavior = $6; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 522a12: 49 89 de mov %rbx,%r14 : } : | DROP SERVER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522a15: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 522a19: e8 d2 cc 0d 00 callq 5ff6f0 0.00 : 522a1e: 31 f6 xor %esi,%esi 0.00 : 522a20: 48 89 c7 mov %rax,%rdi 0.00 : 522a23: e8 28 ee 0b 00 callq 5e1850 0.00 : 522a28: 31 f6 xor %esi,%esi 0.00 : 522a2a: 48 89 c7 mov %rax,%rdi 0.00 : 522a2d: e8 1e ee 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 522a32: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 522a39: 00 : } : | DROP SERVER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522a3a: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->missing_ok = true; 0.00 : 522a3e: c6 43 20 01 movb $0x1,0x20(%rbx) : n->behavior = $6; 0.00 : 522a42: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522a49: 8b 06 mov (%rsi),%eax : n->concurrent = false; 0.00 : 522a4b: c6 43 21 00 movb $0x0,0x21(%rbx) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($5))); : n->arguments = NIL; : n->missing_ok = true; : n->behavior = $6; 0.00 : 522a4f: 89 43 1c mov %eax,0x1c(%rbx) : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 522a52: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522a59: e9 22 ef fe ff jmpq 511980 : * : ****************************************************************************/ : : DropForeignServerStmt: DROP SERVER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522a5e: 48 8b 3d fb 7d 69 00 mov 0x697dfb(%rip),%rdi # bba860 0.00 : 522a65: be 28 00 00 00 mov $0x28,%esi 0.00 : 522a6a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522a71: e8 9a 63 27 00 callq 798e10 0.00 : 522a76: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FOREIGN_SERVER; 0.00 : 522a7c: c7 40 18 0c 00 00 00 movl $0xc,0x18(%rax) : * : ****************************************************************************/ : : DropForeignServerStmt: DROP SERVER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522a83: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($3))); 0.00 : 522a86: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = NIL; : n->missing_ok = false; : n->behavior = $4; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 522a8d: 49 89 de mov %rbx,%r14 : : DropForeignServerStmt: DROP SERVER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($3))); 0.00 : 522a90: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 522a94: e8 57 cc 0d 00 callq 5ff6f0 0.00 : 522a99: 31 f6 xor %esi,%esi 0.00 : 522a9b: 48 89 c7 mov %rax,%rdi 0.00 : 522a9e: e8 ad ed 0b 00 callq 5e1850 0.00 : 522aa3: 31 f6 xor %esi,%esi 0.00 : 522aa5: 48 89 c7 mov %rax,%rdi 0.00 : 522aa8: e8 a3 ed 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 522aad: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 522ab4: 00 : : DropForeignServerStmt: DROP SERVER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($3))); 0.00 : 522ab5: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->missing_ok = false; 0.00 : 522ab9: c6 43 20 00 movb $0x0,0x20(%rbx) : n->behavior = $4; 0.00 : 522abd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522ac4: 8b 02 mov (%rdx),%eax : n->concurrent = false; 0.00 : 522ac6: c6 43 21 00 movb $0x0,0x21(%rbx) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FOREIGN_SERVER; : n->objects = list_make1(list_make1(makeString($3))); : n->arguments = NIL; : n->missing_ok = false; : n->behavior = $4; 0.00 : 522aca: 89 43 1c mov %eax,0x1c(%rbx) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP SERVER IF_P EXISTS name opt_drop_behavior 0.00 : 522acd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522ad4: e9 a7 ee fe ff jmpq 511980 : | VERSION_P NULL_P { $$ = NULL; } : ; : : opt_foreign_server_version: : foreign_server_version { $$ = $1; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 522ad9: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522adc: e9 9f ee fe ff jmpq 511980 : VERSION_P Sconst { $$ = $2; } : | VERSION_P NULL_P { $$ = NULL; } : ; : : opt_foreign_server_version: : foreign_server_version { $$ = $1; } 0.00 : 522ae1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 522ae8: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 522aeb: e9 90 ee fe ff jmpq 511980 : ; : : : foreign_server_version: : VERSION_P Sconst { $$ = $2; } : | VERSION_P NULL_P { $$ = NULL; } 0.00 : 522af0: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522af3: e9 88 ee fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : : foreign_server_version: : VERSION_P Sconst { $$ = $2; } 0.00 : 522af8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522aff: 4c 8b 32 mov (%rdx),%r14 : | VERSION_P NULL_P { $$ = NULL; } 0.00 : 522b02: e9 79 ee fe ff jmpq 511980 : } : ; : : opt_type: : TYPE_P Sconst { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 522b07: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522b0a: e9 71 ee fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : opt_type: : TYPE_P Sconst { $$ = $2; } 0.00 : 522b0f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522b16: 4c 8b 30 mov (%rax),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 522b19: e9 62 ee fe ff jmpq 511980 : *****************************************************************************/ : : CreateForeignServerStmt: CREATE SERVER name opt_type opt_foreign_server_version : FOREIGN DATA_P WRAPPER name create_generic_options : { : CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); 0.00 : 522b1e: 48 8b 3d 3b 7d 69 00 mov 0x697d3b(%rip),%rdi # bba860 0.00 : 522b25: be 30 00 00 00 mov $0x30,%esi 0.00 : 522b2a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522b31: e8 da 62 27 00 callq 798e10 0.00 : 522b36: c7 00 0d 03 00 00 movl $0x30d,(%rax) : n->servername = $3; 0.00 : 522b3c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->servertype = $4; : n->version = $5; : n->fdwname = $9; : n->options = $10; : $$ = (Node *) n; 0.00 : 522b43: 49 89 c6 mov %rax,%r14 : : CreateForeignServerStmt: CREATE SERVER name opt_type opt_foreign_server_version : FOREIGN DATA_P WRAPPER name create_generic_options : { : CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); : n->servername = $3; 0.00 : 522b46: 48 8b 56 c8 mov -0x38(%rsi),%rdx 0.00 : 522b4a: 48 89 50 08 mov %rdx,0x8(%rax) : n->servertype = $4; 0.00 : 522b4e: 48 8b 56 d0 mov -0x30(%rsi),%rdx 0.00 : 522b52: 48 89 50 10 mov %rdx,0x10(%rax) : n->version = $5; 0.00 : 522b56: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 522b5a: 48 89 50 18 mov %rdx,0x18(%rax) : n->fdwname = $9; 0.00 : 522b5e: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 522b62: 48 89 50 20 mov %rdx,0x20(%rax) : n->options = $10; 0.00 : 522b66: 48 8b 16 mov (%rsi),%rdx 0.00 : 522b69: 48 89 50 28 mov %rdx,0x28(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522b6d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522b74: e9 07 ee fe ff jmpq 511980 : ColLabel { $$ = $1; } : ; : : /* We could use def_arg here, but the spec only requires string literals */ : generic_option_arg: : Sconst { $$ = (Node *) makeString($1); } 0.00 : 522b79: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522b80: 48 8b 3b mov (%rbx),%rdi 0.00 : 522b83: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522b8a: e8 61 cb 0d 00 callq 5ff6f0 : ; 0.00 : 522b8f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ColLabel { $$ = $1; } : ; : : /* We could use def_arg here, but the spec only requires string literals */ : generic_option_arg: : Sconst { $$ = (Node *) makeString($1); } 0.00 : 522b96: 49 89 c6 mov %rax,%r14 : ; 0.00 : 522b99: e9 e2 ed fe ff jmpq 511980 : $$ = makeDefElem($1, $2); : } : ; : : generic_option_name: : ColLabel { $$ = $1; } 0.00 : 522b9e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 522ba5: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 522ba8: e9 d3 ed fe ff jmpq 511980 : ; : : generic_option_elem: : generic_option_name generic_option_arg : { : $$ = makeDefElem($1, $2); 0.00 : 522bad: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522bb4: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 522bb8: 48 8b 32 mov (%rdx),%rsi 0.00 : 522bbb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522bc2: e8 39 e9 0c 00 callq 5f1500 : } : ; 0.00 : 522bc7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : generic_option_elem: : generic_option_name generic_option_arg : { : $$ = makeDefElem($1, $2); 0.00 : 522bce: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 522bd1: e9 aa ed fe ff jmpq 511980 : $$ = $2; : $$->defaction = DEFELEM_ADD; : } : | DROP generic_option_name : { : $$ = makeDefElemExtended(NULL, $2, NULL, DEFELEM_DROP); 0.00 : 522bd6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522bdd: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 522be2: 31 d2 xor %edx,%edx 0.00 : 522be4: 31 ff xor %edi,%edi 0.00 : 522be6: 48 8b 30 mov (%rax),%rsi 0.00 : 522be9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522bf0: e8 ab e8 0c 00 callq 5f14a0 : } : ; 0.00 : 522bf5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = $2; : $$->defaction = DEFELEM_ADD; : } : | DROP generic_option_name : { : $$ = makeDefElemExtended(NULL, $2, NULL, DEFELEM_DROP); 0.00 : 522bfc: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 522bff: e9 7c ed fe ff jmpq 511980 : $$ = $2; : $$->defaction = DEFELEM_SET; : } : | ADD_P generic_option_elem : { : $$ = $2; 0.00 : 522c04: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522c0b: 4c 8b 33 mov (%rbx),%r14 : $$->defaction = DEFELEM_ADD; 0.00 : 522c0e: 41 c7 46 20 02 00 00 movl $0x2,0x20(%r14) 0.00 : 522c15: 00 : } : | DROP generic_option_name 0.00 : 522c16: e9 65 ed fe ff jmpq 511980 : { : $$ = $1; : } : | SET generic_option_elem : { : $$ = $2; 0.00 : 522c1b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 522c22: 4c 8b 31 mov (%rcx),%r14 : $$->defaction = DEFELEM_SET; 0.00 : 522c25: 41 c7 46 20 01 00 00 movl $0x1,0x20(%r14) 0.00 : 522c2c: 00 : } : | ADD_P generic_option_elem 0.00 : 522c2d: e9 4e ed fe ff jmpq 511980 : ; : : alter_generic_option_elem: : generic_option_elem : { : $$ = $1; 0.00 : 522c32: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522c39: 4c 8b 32 mov (%rdx),%r14 : } : | SET generic_option_elem 0.00 : 522c3c: e9 3f ed fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | alter_generic_option_list ',' alter_generic_option_elem : { : $$ = lappend($1, $3); 0.00 : 522c41: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522c48: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 522c4c: 48 8b 36 mov (%rsi),%rsi 0.00 : 522c4f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522c56: e8 25 f2 0b 00 callq 5e1e80 : } : ; 0.00 : 522c5b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | alter_generic_option_list ',' alter_generic_option_elem : { : $$ = lappend($1, $3); 0.00 : 522c62: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 522c65: e9 16 ed fe ff jmpq 511980 : ; : : alter_generic_option_list: : alter_generic_option_elem : { : $$ = list_make1($1); 0.00 : 522c6a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522c71: 31 f6 xor %esi,%esi 0.00 : 522c73: 48 8b 3b mov (%rbx),%rdi 0.00 : 522c76: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522c7d: e8 ce eb 0b 00 callq 5e1850 : } : | alter_generic_option_list ',' alter_generic_option_elem 0.00 : 522c82: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : alter_generic_option_list: : alter_generic_option_elem : { : $$ = list_make1($1); 0.00 : 522c89: 49 89 c6 mov %rax,%r14 : } : | alter_generic_option_list ',' alter_generic_option_elem 0.00 : 522c8c: e9 ef ec fe ff jmpq 511980 : } : ; : : /* Options definition for ALTER FDW, SERVER and USER MAPPING */ : alter_generic_options: : OPTIONS '(' alter_generic_option_list ')' { $$ = $3; } 0.00 : 522c91: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 522c98: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : ; 0.00 : 522c9c: e9 df ec fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | generic_option_list ',' generic_option_elem : { : $$ = lappend($1, $3); 0.00 : 522ca1: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522ca8: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 522cac: 48 8b 32 mov (%rdx),%rsi 0.00 : 522caf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522cb6: e8 c5 f1 0b 00 callq 5e1e80 : } : ; 0.00 : 522cbb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | generic_option_list ',' generic_option_elem : { : $$ = lappend($1, $3); 0.00 : 522cc2: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 522cc5: e9 b6 ec fe ff jmpq 511980 : ; : : generic_option_list: : generic_option_elem : { : $$ = list_make1($1); 0.00 : 522cca: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522cd1: 31 f6 xor %esi,%esi 0.00 : 522cd3: 48 8b 38 mov (%rax),%rdi 0.00 : 522cd6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522cdd: e8 6e eb 0b 00 callq 5e1850 : } : | generic_option_list ',' generic_option_elem 0.00 : 522ce2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : generic_option_list: : generic_option_elem : { : $$ = list_make1($1); 0.00 : 522ce9: 49 89 c6 mov %rax,%r14 : } : | generic_option_list ',' generic_option_elem 0.00 : 522cec: e9 8f ec fe ff jmpq 511980 : ; : : /* Options definition for CREATE FDW, SERVER and USER MAPPING */ : create_generic_options: : OPTIONS '(' generic_option_list ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 522cf1: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522cf4: e9 87 ec fe ff jmpq 511980 : } : ; : : /* Options definition for CREATE FDW, SERVER and USER MAPPING */ : create_generic_options: : OPTIONS '(' generic_option_list ')' { $$ = $3; } 0.00 : 522cf9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522d00: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 522d04: e9 77 ec fe ff jmpq 511980 : n->options = $7; : $$ = (Node *) n; : } : | ALTER FOREIGN DATA_P WRAPPER name fdw_options : { : AlterFdwStmt *n = makeNode(AlterFdwStmt); 0.00 : 522d09: 48 8b 3d 50 7b 69 00 mov 0x697b50(%rip),%rdi # bba860 0.00 : 522d10: be 20 00 00 00 mov $0x20,%esi 0.00 : 522d15: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522d1c: e8 ef 60 27 00 callq 798e10 0.00 : 522d21: c7 00 0c 03 00 00 movl $0x30c,(%rax) : n->fdwname = $5; 0.00 : 522d27: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->func_options = $6; : n->options = NIL; : $$ = (Node *) n; 0.00 : 522d2e: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER FOREIGN DATA_P WRAPPER name fdw_options : { : AlterFdwStmt *n = makeNode(AlterFdwStmt); : n->fdwname = $5; 0.00 : 522d31: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 522d35: 48 89 50 08 mov %rdx,0x8(%rax) : n->func_options = $6; 0.00 : 522d39: 48 8b 13 mov (%rbx),%rdx : n->options = NIL; 0.00 : 522d3c: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 522d43: 00 : } : | ALTER FOREIGN DATA_P WRAPPER name fdw_options : { : AlterFdwStmt *n = makeNode(AlterFdwStmt); : n->fdwname = $5; : n->func_options = $6; 0.00 : 522d44: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = NIL; : $$ = (Node *) n; : } : ; 0.00 : 522d48: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522d4f: e9 2c ec fe ff jmpq 511980 : * : ****************************************************************************/ : : AlterFdwStmt: ALTER FOREIGN DATA_P WRAPPER name opt_fdw_options alter_generic_options : { : AlterFdwStmt *n = makeNode(AlterFdwStmt); 0.00 : 522d54: 48 8b 3d 05 7b 69 00 mov 0x697b05(%rip),%rdi # bba860 0.00 : 522d5b: be 20 00 00 00 mov $0x20,%esi 0.00 : 522d60: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522d67: e8 a4 60 27 00 callq 798e10 0.00 : 522d6c: c7 00 0c 03 00 00 movl $0x30c,(%rax) : n->fdwname = $5; 0.00 : 522d72: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->func_options = $6; : n->options = $7; : $$ = (Node *) n; 0.00 : 522d79: 49 89 c6 mov %rax,%r14 : ****************************************************************************/ : : AlterFdwStmt: ALTER FOREIGN DATA_P WRAPPER name opt_fdw_options alter_generic_options : { : AlterFdwStmt *n = makeNode(AlterFdwStmt); : n->fdwname = $5; 0.00 : 522d7c: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 522d80: 48 89 50 08 mov %rdx,0x8(%rax) : n->func_options = $6; 0.00 : 522d84: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 522d88: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = $7; 0.00 : 522d8c: 48 8b 11 mov (%rcx),%rdx 0.00 : 522d8f: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : | ALTER FOREIGN DATA_P WRAPPER name fdw_options 0.00 : 522d93: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522d9a: e9 e1 eb fe ff jmpq 511980 : n->concurrent = false; : $$ = (Node *) n; : } : | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522d9f: 48 8b 3d ba 7a 69 00 mov 0x697aba(%rip),%rdi # bba860 0.00 : 522da6: be 28 00 00 00 mov $0x28,%esi 0.00 : 522dab: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522db2: e8 59 60 27 00 callq 798e10 0.00 : 522db7: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FDW; 0.00 : 522dbd: c7 40 18 0b 00 00 00 movl $0xb,0x18(%rax) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522dc4: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($7))); 0.00 : 522dc7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->arguments = NIL; : n->missing_ok = true; : n->behavior = $8; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 522dce: 49 89 de mov %rbx,%r14 : } : | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($7))); 0.00 : 522dd1: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 522dd5: e8 16 c9 0d 00 callq 5ff6f0 0.00 : 522dda: 31 f6 xor %esi,%esi 0.00 : 522ddc: 48 89 c7 mov %rax,%rdi 0.00 : 522ddf: e8 6c ea 0b 00 callq 5e1850 0.00 : 522de4: 31 f6 xor %esi,%esi 0.00 : 522de6: 48 89 c7 mov %rax,%rdi 0.00 : 522de9: e8 62 ea 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 522dee: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 522df5: 00 : } : | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($7))); 0.00 : 522df6: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->missing_ok = true; 0.00 : 522dfa: c6 43 20 01 movb $0x1,0x20(%rbx) : n->behavior = $8; 0.00 : 522dfe: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522e05: 8b 06 mov (%rsi),%eax : n->concurrent = false; 0.00 : 522e07: c6 43 21 00 movb $0x0,0x21(%rbx) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($7))); : n->arguments = NIL; : n->missing_ok = true; : n->behavior = $8; 0.00 : 522e0b: 89 43 1c mov %eax,0x1c(%rbx) : n->concurrent = false; : $$ = (Node *) n; : } : ; 0.00 : 522e0e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522e15: e9 66 eb fe ff jmpq 511980 : * : ****************************************************************************/ : : DropFdwStmt: DROP FOREIGN DATA_P WRAPPER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 522e1a: 48 8b 3d 3f 7a 69 00 mov 0x697a3f(%rip),%rdi # bba860 0.00 : 522e21: be 28 00 00 00 mov $0x28,%esi 0.00 : 522e26: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522e2d: e8 de 5f 27 00 callq 798e10 0.00 : 522e32: 48 89 c3 mov %rax,%rbx 0.00 : 522e35: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_FDW; 0.00 : 522e3b: c7 40 18 0b 00 00 00 movl $0xb,0x18(%rax) : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522e42: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->arguments = NIL; : n->missing_ok = false; : n->behavior = $6; : n->concurrent = false; : $$ = (Node *) n; 0.00 : 522e49: 49 89 de mov %rbx,%r14 : : DropFdwStmt: DROP FOREIGN DATA_P WRAPPER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522e4c: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 522e50: e8 9b c8 0d 00 callq 5ff6f0 0.00 : 522e55: 31 f6 xor %esi,%esi 0.00 : 522e57: 48 89 c7 mov %rax,%rdi 0.00 : 522e5a: e8 f1 e9 0b 00 callq 5e1850 0.00 : 522e5f: 31 f6 xor %esi,%esi 0.00 : 522e61: 48 89 c7 mov %rax,%rdi 0.00 : 522e64: e8 e7 e9 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 522e69: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 522e70: 00 : : DropFdwStmt: DROP FOREIGN DATA_P WRAPPER name opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($5))); 0.00 : 522e71: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->missing_ok = false; 0.00 : 522e75: c6 43 20 00 movb $0x0,0x20(%rbx) : n->behavior = $6; 0.00 : 522e79: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522e80: 8b 02 mov (%rdx),%eax : n->concurrent = false; 0.00 : 522e82: c6 43 21 00 movb $0x0,0x21(%rbx) : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_FDW; : n->objects = list_make1(list_make1(makeString($5))); : n->arguments = NIL; : n->missing_ok = false; : n->behavior = $6; 0.00 : 522e86: 89 43 1c mov %eax,0x1c(%rbx) : n->concurrent = false; : $$ = (Node *) n; : } : | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior 0.00 : 522e89: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522e90: e9 eb ea fe ff jmpq 511980 : | fdw_options fdw_option { $$ = lappend($1, $2); } : ; : : opt_fdw_options: : fdw_options { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 522e95: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 522e98: e9 e3 ea fe ff jmpq 511980 : fdw_option { $$ = list_make1($1); } : | fdw_options fdw_option { $$ = lappend($1, $2); } : ; : : opt_fdw_options: : fdw_options { $$ = $1; } 0.00 : 522e9d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 522ea4: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 522ea7: e9 d4 ea fe ff jmpq 511980 : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } : ; : : fdw_options: : fdw_option { $$ = list_make1($1); } : | fdw_options fdw_option { $$ = lappend($1, $2); } 0.00 : 522eac: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 522eb3: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 522eb7: 48 8b 33 mov (%rbx),%rsi 0.00 : 522eba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522ec1: e8 ba ef 0b 00 callq 5e1e80 : ; 0.00 : 522ec6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } : ; : : fdw_options: : fdw_option { $$ = list_make1($1); } : | fdw_options fdw_option { $$ = lappend($1, $2); } 0.00 : 522ecd: 49 89 c6 mov %rax,%r14 : ; 0.00 : 522ed0: e9 ab ea fe ff jmpq 511980 : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } : ; : : fdw_options: : fdw_option { $$ = list_make1($1); } 0.00 : 522ed5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 522edc: 31 f6 xor %esi,%esi 0.00 : 522ede: 48 8b 39 mov (%rcx),%rdi 0.00 : 522ee1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522ee8: e8 63 e9 0b 00 callq 5e1850 : | fdw_options fdw_option { $$ = lappend($1, $2); } 0.00 : 522eed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } : ; : : fdw_options: : fdw_option { $$ = list_make1($1); } 0.00 : 522ef4: 49 89 c6 mov %rax,%r14 : | fdw_options fdw_option { $$ = lappend($1, $2); } 0.00 : 522ef7: e9 84 ea fe ff jmpq 511980 : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } 0.00 : 522efc: 31 f6 xor %esi,%esi 0.00 : 522efe: bf e9 6c 8e 00 mov $0x8e6ce9,%edi 0.00 : 522f03: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522f0a: e8 f1 e5 0c 00 callq 5f1500 : ; 0.00 : 522f0f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } 0.00 : 522f16: 49 89 c6 mov %rax,%r14 : ; 0.00 : 522f19: e9 62 ea fe ff jmpq 511980 : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } 0.00 : 522f1e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 522f25: bf e9 6c 8e 00 mov $0x8e6ce9,%edi 0.00 : 522f2a: 48 8b 32 mov (%rdx),%rsi 0.00 : 522f2d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522f34: e8 c7 e5 0c 00 callq 5f1500 : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } 0.00 : 522f39: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } 0.00 : 522f40: 49 89 c6 mov %rax,%r14 : | NO VALIDATOR { $$ = makeDefElem("validator", NULL); } 0.00 : 522f43: e9 38 ea fe ff jmpq 511980 : } : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } 0.00 : 522f48: 31 f6 xor %esi,%esi 0.00 : 522f4a: bf 33 96 7c 00 mov $0x7c9633,%edi 0.00 : 522f4f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522f56: e8 a5 e5 0c 00 callq 5f1500 : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } 0.00 : 522f5b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } : | NO HANDLER { $$ = makeDefElem("handler", NULL); } 0.00 : 522f62: 49 89 c6 mov %rax,%r14 : | VALIDATOR handler_name { $$ = makeDefElem("validator", (Node *)$2); } 0.00 : 522f65: e9 16 ea fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } 0.00 : 522f6a: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 522f71: bf 33 96 7c 00 mov $0x7c9633,%edi 0.00 : 522f76: 48 8b 30 mov (%rax),%rsi 0.00 : 522f79: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522f80: e8 7b e5 0c 00 callq 5f1500 : | NO HANDLER { $$ = makeDefElem("handler", NULL); } 0.00 : 522f85: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *) n; : } : ; : : fdw_option: : HANDLER handler_name { $$ = makeDefElem("handler", (Node *)$2); } 0.00 : 522f8c: 49 89 c6 mov %rax,%r14 : | NO HANDLER { $$ = makeDefElem("handler", NULL); } 0.00 : 522f8f: e9 ec e9 fe ff jmpq 511980 : * : *****************************************************************************/ : : CreateFdwStmt: CREATE FOREIGN DATA_P WRAPPER name opt_fdw_options create_generic_options : { : CreateFdwStmt *n = makeNode(CreateFdwStmt); 0.00 : 522f94: 48 8b 3d c5 78 69 00 mov 0x6978c5(%rip),%rdi # bba860 0.00 : 522f9b: be 20 00 00 00 mov $0x20,%esi 0.00 : 522fa0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522fa7: e8 64 5e 27 00 callq 798e10 0.00 : 522fac: c7 00 0b 03 00 00 movl $0x30b,(%rax) : n->fdwname = $5; 0.00 : 522fb2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->func_options = $6; : n->options = $7; : $$ = (Node *) n; 0.00 : 522fb9: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : CreateFdwStmt: CREATE FOREIGN DATA_P WRAPPER name opt_fdw_options create_generic_options : { : CreateFdwStmt *n = makeNode(CreateFdwStmt); : n->fdwname = $5; 0.00 : 522fbc: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 522fc0: 48 89 50 08 mov %rdx,0x8(%rax) : n->func_options = $6; 0.00 : 522fc4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 522fc8: 48 89 50 10 mov %rdx,0x10(%rax) : n->options = $7; 0.00 : 522fcc: 48 8b 16 mov (%rsi),%rdx 0.00 : 522fcf: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 522fd3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 522fda: e9 a1 e9 fe ff jmpq 511980 : n->objname = list_make1(makeString($6)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TYPE_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 522fdf: 48 8b 3d 7a 78 69 00 mov 0x69787a(%rip),%rdi # bba860 0.00 : 522fe6: be 28 00 00 00 mov $0x28,%esi 0.00 : 522feb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 522ff2: e8 19 5e 27 00 callq 798e10 0.00 : 522ff7: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 522ffd: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = $4; : n->objtype = OBJECT_TYPE; : n->objname = $6; : $$ = (Node *)n; 0.00 : 523004: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TYPE_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 523007: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 52300b: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 52300f: 8b 53 f0 mov -0x10(%rbx),%edx : n->objtype = OBJECT_TYPE; 0.00 : 523012: c7 40 14 22 00 00 00 movl $0x22,0x14(%rax) : } : | ALTER EXTENSION name add_drop TYPE_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 523019: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TYPE; : n->objname = $6; 0.00 : 52301c: 48 8b 13 mov (%rbx),%rdx 0.00 : 52301f: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : ; 0.00 : 523023: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52302a: e9 51 e9 fe ff jmpq 511980 : n->objname = list_make1(makeString($8)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SERVER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 52302f: 48 8b 3d 2a 78 69 00 mov 0x69782a(%rip),%rdi # bba860 0.00 : 523036: be 28 00 00 00 mov $0x28,%esi 0.00 : 52303b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523042: e8 c9 5d 27 00 callq 798e10 0.00 : 523047: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 52304d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objname = list_make1(makeString($8)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SERVER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523054: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_FOREIGN_SERVER; : n->objname = list_make1(makeString($6)); : $$ = (Node *)n; 0.00 : 523057: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SERVER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52305a: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 52305e: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 523062: 8b 41 f0 mov -0x10(%rcx),%eax : n->objtype = OBJECT_FOREIGN_SERVER; 0.00 : 523065: c7 43 14 0c 00 00 00 movl $0xc,0x14(%rbx) : } : | ALTER EXTENSION name add_drop SERVER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52306c: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_FOREIGN_SERVER; : n->objname = list_make1(makeString($6)); 0.00 : 52306f: 48 8b 39 mov (%rcx),%rdi 0.00 : 523072: e8 79 c6 0d 00 callq 5ff6f0 0.00 : 523077: 31 f6 xor %esi,%esi 0.00 : 523079: 48 89 c7 mov %rax,%rdi 0.00 : 52307c: e8 cf e7 0b 00 callq 5e1850 0.00 : 523081: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TYPE_P any_name 0.00 : 523085: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52308c: e9 ef e8 fe ff jmpq 511980 : n->objname = $7; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523091: 48 8b 3d c8 77 69 00 mov 0x6977c8(%rip),%rdi # bba860 0.00 : 523098: be 28 00 00 00 mov $0x28,%esi 0.00 : 52309d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5230a4: e8 67 5d 27 00 callq 798e10 0.00 : 5230a9: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5230af: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->objname = $7; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5230b6: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_FDW; : n->objname = list_make1(makeString($8)); : $$ = (Node *)n; 0.00 : 5230b9: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5230bc: 48 8b 42 d8 mov -0x28(%rdx),%rax 0.00 : 5230c0: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 5230c4: 8b 42 e0 mov -0x20(%rdx),%eax : n->objtype = OBJECT_FDW; 0.00 : 5230c7: c7 43 14 0b 00 00 00 movl $0xb,0x14(%rbx) : } : | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5230ce: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_FDW; : n->objname = list_make1(makeString($8)); 0.00 : 5230d1: 48 8b 3a mov (%rdx),%rdi 0.00 : 5230d4: e8 17 c6 0d 00 callq 5ff6f0 0.00 : 5230d9: 31 f6 xor %esi,%esi 0.00 : 5230db: 48 89 c7 mov %rax,%rdi 0.00 : 5230de: e8 6d e7 0b 00 callq 5e1850 0.00 : 5230e3: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SERVER name 0.00 : 5230e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5230ee: e9 8d e8 fe ff jmpq 511980 : n->objname = $7; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5230f3: 48 8b 3d 66 77 69 00 mov 0x697766(%rip),%rdi # bba860 0.00 : 5230fa: be 28 00 00 00 mov $0x28,%esi 0.00 : 5230ff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523106: e8 05 5d 27 00 callq 798e10 0.00 : 52310b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523111: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->action = $4; : n->objtype = OBJECT_FOREIGN_TABLE; : n->objname = $7; : $$ = (Node *)n; 0.00 : 523118: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52311b: 48 8b 56 e0 mov -0x20(%rsi),%rdx 0.00 : 52311f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523123: 8b 56 e8 mov -0x18(%rsi),%edx : n->objtype = OBJECT_FOREIGN_TABLE; 0.00 : 523126: c7 40 14 0d 00 00 00 movl $0xd,0x14(%rax) : } : | ALTER EXTENSION name add_drop FOREIGN TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52312d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_FOREIGN_TABLE; : n->objname = $7; 0.00 : 523130: 48 8b 16 mov (%rsi),%rdx 0.00 : 523133: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name 0.00 : 523137: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52313e: e9 3d e8 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop MATERIALIZED VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523143: 48 8b 3d 16 77 69 00 mov 0x697716(%rip),%rdi # bba860 0.00 : 52314a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52314f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523156: e8 b5 5c 27 00 callq 798e10 0.00 : 52315b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523161: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = $4; : n->objtype = OBJECT_MATVIEW; : n->objname = $7; : $$ = (Node *)n; 0.00 : 523168: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop MATERIALIZED VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52316b: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 52316f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523173: 8b 53 e8 mov -0x18(%rbx),%edx : n->objtype = OBJECT_MATVIEW; 0.00 : 523176: c7 40 14 12 00 00 00 movl $0x12,0x14(%rax) : } : | ALTER EXTENSION name add_drop MATERIALIZED VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52317d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_MATVIEW; : n->objname = $7; 0.00 : 523180: 48 8b 13 mov (%rbx),%rdx 0.00 : 523183: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FOREIGN TABLE any_name 0.00 : 523187: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52318e: e9 ed e7 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523193: 48 8b 3d c6 76 69 00 mov 0x6976c6(%rip),%rdi # bba860 0.00 : 52319a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52319f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5231a6: e8 65 5c 27 00 callq 798e10 0.00 : 5231ab: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5231b1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_VIEW; : n->objname = $6; : $$ = (Node *)n; 0.00 : 5231b8: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5231bb: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 5231bf: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 5231c3: 8b 51 f0 mov -0x10(%rcx),%edx : n->objtype = OBJECT_VIEW; 0.00 : 5231c6: c7 40 14 23 00 00 00 movl $0x23,0x14(%rax) : } : | ALTER EXTENSION name add_drop VIEW any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5231cd: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_VIEW; : n->objname = $6; 0.00 : 5231d0: 48 8b 11 mov (%rcx),%rdx 0.00 : 5231d3: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop MATERIALIZED VIEW any_name 0.00 : 5231d7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5231de: e9 9d e7 fe ff jmpq 511980 : n->objname = $8; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SEQUENCE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5231e3: 48 8b 3d 76 76 69 00 mov 0x697676(%rip),%rdi # bba860 0.00 : 5231ea: be 28 00 00 00 mov $0x28,%esi 0.00 : 5231ef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5231f6: e8 15 5c 27 00 callq 798e10 0.00 : 5231fb: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523201: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->action = $4; : n->objtype = OBJECT_SEQUENCE; : n->objname = $6; : $$ = (Node *)n; 0.00 : 523208: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SEQUENCE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52320b: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 52320f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523213: 8b 56 f0 mov -0x10(%rsi),%edx : n->objtype = OBJECT_SEQUENCE; 0.00 : 523216: c7 40 14 1a 00 00 00 movl $0x1a,0x14(%rax) : } : | ALTER EXTENSION name add_drop SEQUENCE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52321d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_SEQUENCE; : n->objname = $6; 0.00 : 523220: 48 8b 16 mov (%rsi),%rdx 0.00 : 523223: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop VIEW any_name 0.00 : 523227: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52322e: e9 4d e7 fe ff jmpq 511980 : n->objname = $8; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523233: 48 8b 3d 26 76 69 00 mov 0x697626(%rip),%rdi # bba860 0.00 : 52323a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52323f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523246: e8 c5 5b 27 00 callq 798e10 0.00 : 52324b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523251: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = $4; : n->objtype = OBJECT_TSCONFIGURATION; : n->objname = $8; : $$ = (Node *)n; 0.00 : 523258: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52325b: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 52325f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523263: 8b 53 e0 mov -0x20(%rbx),%edx : n->objtype = OBJECT_TSCONFIGURATION; 0.00 : 523266: c7 40 14 1e 00 00 00 movl $0x1e,0x14(%rax) : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52326d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TSCONFIGURATION; : n->objname = $8; 0.00 : 523270: 48 8b 13 mov (%rbx),%rdx 0.00 : 523273: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SEQUENCE any_name 0.00 : 523277: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52327e: e9 fd e6 fe ff jmpq 511980 : n->objname = $8; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523283: 48 8b 3d d6 75 69 00 mov 0x6975d6(%rip),%rdi # bba860 0.00 : 52328a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52328f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523296: e8 75 5b 27 00 callq 798e10 0.00 : 52329b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5232a1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_TSTEMPLATE; : n->objname = $8; : $$ = (Node *)n; 0.00 : 5232a8: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5232ab: 48 8b 51 d8 mov -0x28(%rcx),%rdx 0.00 : 5232af: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 5232b3: 8b 51 e0 mov -0x20(%rcx),%edx : n->objtype = OBJECT_TSTEMPLATE; 0.00 : 5232b6: c7 40 14 21 00 00 00 movl $0x21,0x14(%rax) : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5232bd: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TSTEMPLATE; : n->objname = $8; 0.00 : 5232c0: 48 8b 11 mov (%rcx),%rdx 0.00 : 5232c3: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name 0.00 : 5232c7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5232ce: e9 ad e6 fe ff jmpq 511980 : n->objname = $8; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5232d3: 48 8b 3d 86 75 69 00 mov 0x697586(%rip),%rdi # bba860 0.00 : 5232da: be 28 00 00 00 mov $0x28,%esi 0.00 : 5232df: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5232e6: e8 25 5b 27 00 callq 798e10 0.00 : 5232eb: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5232f1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->action = $4; : n->objtype = OBJECT_TSDICTIONARY; : n->objname = $8; : $$ = (Node *)n; 0.00 : 5232f8: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5232fb: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 5232ff: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523303: 8b 56 e0 mov -0x20(%rsi),%edx : n->objtype = OBJECT_TSDICTIONARY; 0.00 : 523306: c7 40 14 1f 00 00 00 movl $0x1f,0x14(%rax) : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52330d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TSDICTIONARY; : n->objname = $8; 0.00 : 523310: 48 8b 16 mov (%rsi),%rdx 0.00 : 523313: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name 0.00 : 523317: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52331e: e9 5d e6 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523323: 48 8b 3d 36 75 69 00 mov 0x697536(%rip),%rdi # bba860 0.00 : 52332a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52332f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523336: e8 d5 5a 27 00 callq 798e10 0.00 : 52333b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523341: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = $4; : n->objtype = OBJECT_TSPARSER; : n->objname = $8; : $$ = (Node *)n; 0.00 : 523348: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52334b: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 52334f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523353: 8b 53 e0 mov -0x20(%rbx),%edx : n->objtype = OBJECT_TSPARSER; 0.00 : 523356: c7 40 14 20 00 00 00 movl $0x20,0x14(%rax) : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52335d: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TSPARSER; : n->objname = $8; 0.00 : 523360: 48 8b 13 mov (%rbx),%rdx 0.00 : 523363: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name 0.00 : 523367: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52336e: e9 0d e6 fe ff jmpq 511980 : n->objname = list_make1(makeString($7)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523373: 48 8b 3d e6 74 69 00 mov 0x6974e6(%rip),%rdi # bba860 0.00 : 52337a: be 28 00 00 00 mov $0x28,%esi 0.00 : 52337f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523386: e8 85 5a 27 00 callq 798e10 0.00 : 52338b: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523391: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_TABLE; : n->objname = $6; : $$ = (Node *)n; 0.00 : 523398: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52339b: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 52339f: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 5233a3: 8b 51 f0 mov -0x10(%rcx),%edx : n->objtype = OBJECT_TABLE; 0.00 : 5233a6: c7 40 14 1b 00 00 00 movl $0x1b,0x14(%rax) : } : | ALTER EXTENSION name add_drop TABLE any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5233ad: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_TABLE; : n->objname = $6; 0.00 : 5233b0: 48 8b 11 mov (%rcx),%rdx 0.00 : 5233b3: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name 0.00 : 5233b7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5233be: e9 bd e5 fe ff jmpq 511980 : n->objname = list_make1(makeString($6)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop EVENT TRIGGER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5233c3: 48 8b 3d 96 74 69 00 mov 0x697496(%rip),%rdi # bba860 0.00 : 5233ca: be 28 00 00 00 mov $0x28,%esi 0.00 : 5233cf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5233d6: e8 35 5a 27 00 callq 798e10 0.00 : 5233db: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5233e1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objname = list_make1(makeString($6)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop EVENT TRIGGER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5233e8: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_EVENT_TRIGGER; : n->objname = list_make1(makeString($7)); : $$ = (Node *)n; 0.00 : 5233eb: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop EVENT TRIGGER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5233ee: 48 8b 46 e0 mov -0x20(%rsi),%rax 0.00 : 5233f2: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 5233f6: 8b 46 e8 mov -0x18(%rsi),%eax : n->objtype = OBJECT_EVENT_TRIGGER; 0.00 : 5233f9: c7 43 14 09 00 00 00 movl $0x9,0x14(%rbx) : } : | ALTER EXTENSION name add_drop EVENT TRIGGER name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 523400: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_EVENT_TRIGGER; : n->objname = list_make1(makeString($7)); 0.00 : 523403: 48 8b 3e mov (%rsi),%rdi 0.00 : 523406: e8 e5 c2 0d 00 callq 5ff6f0 0.00 : 52340b: 31 f6 xor %esi,%esi 0.00 : 52340d: 48 89 c7 mov %rax,%rdi 0.00 : 523410: e8 3b e4 0b 00 callq 5e1850 0.00 : 523415: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop TABLE any_name 0.00 : 523419: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523420: e9 5b e5 fe ff jmpq 511980 : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SCHEMA name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523425: 48 8b 3d 34 74 69 00 mov 0x697434(%rip),%rdi # bba860 0.00 : 52342c: be 28 00 00 00 mov $0x28,%esi 0.00 : 523431: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523438: e8 d3 59 27 00 callq 798e10 0.00 : 52343d: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523443: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SCHEMA name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 52344a: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_SCHEMA; : n->objname = list_make1(makeString($6)); : $$ = (Node *)n; 0.00 : 52344d: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SCHEMA name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 523450: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 523454: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 523458: 8b 41 f0 mov -0x10(%rcx),%eax : n->objtype = OBJECT_SCHEMA; 0.00 : 52345b: c7 43 14 19 00 00 00 movl $0x19,0x14(%rbx) : } : | ALTER EXTENSION name add_drop SCHEMA name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 523462: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_SCHEMA; : n->objname = list_make1(makeString($6)); 0.00 : 523465: 48 8b 39 mov (%rcx),%rdi 0.00 : 523468: e8 83 c2 0d 00 callq 5ff6f0 0.00 : 52346d: 31 f6 xor %esi,%esi 0.00 : 52346f: 48 89 c7 mov %rax,%rdi 0.00 : 523472: e8 d9 e3 0b 00 callq 5e1850 0.00 : 523477: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop EVENT TRIGGER name 0.00 : 52347b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523482: e9 f9 e4 fe ff jmpq 511980 : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523487: 48 8b 3d d2 73 69 00 mov 0x6973d2(%rip),%rdi # bba860 0.00 : 52348e: be 28 00 00 00 mov $0x28,%esi 0.00 : 523493: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52349a: e8 71 59 27 00 callq 798e10 0.00 : 52349f: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5234a5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5234ac: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_OPFAMILY; : n->objname = $7; : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; 0.00 : 5234af: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5234b2: 48 8b 42 d0 mov -0x30(%rdx),%rax 0.00 : 5234b6: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 5234ba: 8b 42 d8 mov -0x28(%rdx),%eax : n->objtype = OBJECT_OPFAMILY; 0.00 : 5234bd: c7 43 14 15 00 00 00 movl $0x15,0x14(%rbx) : } : | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5234c4: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_OPFAMILY; : n->objname = $7; 0.00 : 5234c7: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 5234cb: 48 89 43 18 mov %rax,0x18(%rbx) : n->objargs = list_make1(makeString($9)); 0.00 : 5234cf: 48 8b 3a mov (%rdx),%rdi 0.00 : 5234d2: e8 19 c2 0d 00 callq 5ff6f0 0.00 : 5234d7: 31 f6 xor %esi,%esi 0.00 : 5234d9: 48 89 c7 mov %rax,%rdi 0.00 : 5234dc: e8 6f e3 0b 00 callq 5e1850 0.00 : 5234e1: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop SCHEMA name 0.00 : 5234e5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5234ec: e9 8f e4 fe ff jmpq 511980 : n->objargs = $7; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5234f1: 48 8b 3d 68 73 69 00 mov 0x697368(%rip),%rdi # bba860 0.00 : 5234f8: be 28 00 00 00 mov $0x28,%esi 0.00 : 5234fd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523504: e8 07 59 27 00 callq 798e10 0.00 : 523509: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 52350f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = $7; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523516: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_OPCLASS; : n->objname = $7; : n->objargs = list_make1(makeString($9)); : $$ = (Node *)n; 0.00 : 523519: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52351c: 48 8b 46 d0 mov -0x30(%rsi),%rax 0.00 : 523520: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 523524: 8b 46 d8 mov -0x28(%rsi),%eax : n->objtype = OBJECT_OPCLASS; 0.00 : 523527: c7 43 14 13 00 00 00 movl $0x13,0x14(%rbx) : } : | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52352e: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_OPCLASS; : n->objname = $7; 0.00 : 523531: 48 8b 46 f0 mov -0x10(%rsi),%rax 0.00 : 523535: 48 89 43 18 mov %rax,0x18(%rbx) : n->objargs = list_make1(makeString($9)); 0.00 : 523539: 48 8b 3e mov (%rsi),%rdi 0.00 : 52353c: e8 af c1 0d 00 callq 5ff6f0 0.00 : 523541: 31 f6 xor %esi,%esi 0.00 : 523543: 48 89 c7 mov %rax,%rdi 0.00 : 523546: e8 05 e3 0b 00 callq 5e1850 0.00 : 52354b: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method 0.00 : 52354f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523556: e9 25 e4 fe ff jmpq 511980 : n->objname = list_make1(makeString($7)); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 52355b: 48 8b 3d fe 72 69 00 mov 0x6972fe(%rip),%rdi # bba860 0.00 : 523562: be 28 00 00 00 mov $0x28,%esi 0.00 : 523567: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52356e: e8 9d 58 27 00 callq 798e10 0.00 : 523573: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523579: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_OPERATOR; : n->objname = $6; : n->objargs = $7; : $$ = (Node *)n; 0.00 : 523580: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 523583: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 523587: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 52358b: 8b 51 e8 mov -0x18(%rcx),%edx : n->objtype = OBJECT_OPERATOR; 0.00 : 52358e: c7 40 14 14 00 00 00 movl $0x14,0x14(%rax) : } : | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 523595: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_OPERATOR; : n->objname = $6; 0.00 : 523598: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52359c: 48 89 50 18 mov %rdx,0x18(%rax) : n->objargs = $7; 0.00 : 5235a0: 48 8b 11 mov (%rcx),%rdx 0.00 : 5235a3: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method 0.00 : 5235a7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5235ae: e9 cd e3 fe ff jmpq 511980 : n->objargs = $6->funcargs; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5235b3: 48 8b 3d a6 72 69 00 mov 0x6972a6(%rip),%rdi # bba860 0.00 : 5235ba: be 28 00 00 00 mov $0x28,%esi 0.00 : 5235bf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5235c6: e8 45 58 27 00 callq 798e10 0.00 : 5235cb: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5235d1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = $6->funcargs; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5235d8: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_LANGUAGE; : n->objname = list_make1(makeString($7)); : $$ = (Node *)n; 0.00 : 5235db: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5235de: 48 8b 46 e0 mov -0x20(%rsi),%rax 0.00 : 5235e2: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 5235e6: 8b 46 e8 mov -0x18(%rsi),%eax : n->objtype = OBJECT_LANGUAGE; 0.00 : 5235e9: c7 43 14 10 00 00 00 movl $0x10,0x14(%rbx) : } : | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5235f0: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_LANGUAGE; : n->objname = list_make1(makeString($7)); 0.00 : 5235f3: 48 8b 3e mov (%rsi),%rdi 0.00 : 5235f6: e8 f5 c0 0d 00 callq 5ff6f0 0.00 : 5235fb: 31 f6 xor %esi,%esi 0.00 : 5235fd: 48 89 c7 mov %rax,%rdi 0.00 : 523600: e8 4b e2 0b 00 callq 5e1850 0.00 : 523605: 48 89 43 18 mov %rax,0x18(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes 0.00 : 523609: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523610: e9 6b e3 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523615: 48 8b 3d 44 72 69 00 mov 0x697244(%rip),%rdi # bba860 0.00 : 52361c: be 28 00 00 00 mov $0x28,%esi 0.00 : 523621: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523628: e8 e3 57 27 00 callq 798e10 0.00 : 52362d: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523633: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_FUNCTION; : n->objname = $6->funcname; : n->objargs = $6->funcargs; : $$ = (Node *)n; 0.00 : 52363a: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52363d: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 523641: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523645: 8b 51 f0 mov -0x10(%rcx),%edx : n->objtype = OBJECT_FUNCTION; 0.00 : 523648: c7 40 14 0e 00 00 00 movl $0xe,0x14(%rax) : } : | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52364f: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_FUNCTION; : n->objname = $6->funcname; 0.00 : 523652: 48 8b 11 mov (%rcx),%rdx 0.00 : 523655: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 523659: 48 89 50 18 mov %rdx,0x18(%rax) : n->objargs = $6->funcargs; 0.00 : 52365d: 48 8b 11 mov (%rcx),%rdx 0.00 : 523660: 48 8b 52 10 mov 0x10(%rdx),%rdx 0.00 : 523664: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name 0.00 : 523668: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52366f: e9 0c e3 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop DOMAIN_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523674: 48 8b 3d e5 71 69 00 mov 0x6971e5(%rip),%rdi # bba860 0.00 : 52367b: be 28 00 00 00 mov $0x28,%esi 0.00 : 523680: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523687: e8 84 57 27 00 callq 798e10 0.00 : 52368c: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523692: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->action = $4; : n->objtype = OBJECT_DOMAIN; : n->objname = $6; : $$ = (Node *)n; 0.00 : 523699: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop DOMAIN_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52369c: 48 8b 56 e8 mov -0x18(%rsi),%rdx 0.00 : 5236a0: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 5236a4: 8b 56 f0 mov -0x10(%rsi),%edx : n->objtype = OBJECT_DOMAIN; 0.00 : 5236a7: c7 40 14 08 00 00 00 movl $0x8,0x14(%rax) : } : | ALTER EXTENSION name add_drop DOMAIN_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5236ae: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_DOMAIN; : n->objname = $6; 0.00 : 5236b1: 48 8b 16 mov (%rsi),%rdx 0.00 : 5236b4: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes 0.00 : 5236b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5236bf: e9 bc e2 fe ff jmpq 511980 : n->objname = $6; : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CONVERSION_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5236c4: 48 8b 3d 95 71 69 00 mov 0x697195(%rip),%rdi # bba860 0.00 : 5236cb: be 28 00 00 00 mov $0x28,%esi 0.00 : 5236d0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5236d7: e8 34 57 27 00 callq 798e10 0.00 : 5236dc: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5236e2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = $4; : n->objtype = OBJECT_CONVERSION; : n->objname = $6; : $$ = (Node *)n; 0.00 : 5236e9: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CONVERSION_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 5236ec: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 5236f0: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 5236f4: 8b 53 f0 mov -0x10(%rbx),%edx : n->objtype = OBJECT_CONVERSION; 0.00 : 5236f7: c7 40 14 06 00 00 00 movl $0x6,0x14(%rax) : } : | ALTER EXTENSION name add_drop CONVERSION_P any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5236fe: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_CONVERSION; : n->objname = $6; 0.00 : 523701: 48 8b 13 mov (%rbx),%rdx 0.00 : 523704: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop DOMAIN_P any_name 0.00 : 523708: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52370f: e9 6c e2 fe ff jmpq 511980 : n->objargs = list_make1($9); : $$ = (Node *) n; : } : | ALTER EXTENSION name add_drop COLLATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523714: 48 8b 3d 45 71 69 00 mov 0x697145(%rip),%rdi # bba860 0.00 : 52371b: be 28 00 00 00 mov $0x28,%esi 0.00 : 523720: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523727: e8 e4 56 27 00 callq 798e10 0.00 : 52372c: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523732: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = $4; : n->objtype = OBJECT_COLLATION; : n->objname = $6; : $$ = (Node *)n; 0.00 : 523739: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | ALTER EXTENSION name add_drop COLLATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52373c: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 523740: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = $4; 0.00 : 523744: 8b 51 f0 mov -0x10(%rcx),%edx : n->objtype = OBJECT_COLLATION; 0.00 : 523747: c7 40 14 05 00 00 00 movl $0x5,0x14(%rax) : } : | ALTER EXTENSION name add_drop COLLATION any_name : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 52374e: 89 50 10 mov %edx,0x10(%rax) : n->objtype = OBJECT_COLLATION; : n->objname = $6; 0.00 : 523751: 48 8b 11 mov (%rcx),%rdx 0.00 : 523754: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CONVERSION_P any_name 0.00 : 523758: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52375f: e9 1c e2 fe ff jmpq 511980 : n->objargs = extractAggrArgTypes($7); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523764: 48 8b 3d f5 70 69 00 mov 0x6970f5(%rip),%rdi # bba860 0.00 : 52376b: be 28 00 00 00 mov $0x28,%esi 0.00 : 523770: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523777: e8 94 56 27 00 callq 798e10 0.00 : 52377c: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 523782: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objargs = extractAggrArgTypes($7); : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 523789: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_CAST; : n->objname = list_make1($7); : n->objargs = list_make1($9); : $$ = (Node *) n; 0.00 : 52378c: 49 89 de mov %rbx,%r14 : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 52378f: 48 8b 46 c8 mov -0x38(%rsi),%rax 0.00 : 523793: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 523797: 8b 46 d0 mov -0x30(%rsi),%eax : n->objtype = OBJECT_CAST; 0.00 : 52379a: c7 43 14 02 00 00 00 movl $0x2,0x14(%rbx) : } : | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 5237a1: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_CAST; : n->objname = list_make1($7); 0.00 : 5237a4: 48 8b 7e e8 mov -0x18(%rsi),%rdi 0.00 : 5237a8: 31 f6 xor %esi,%esi 0.00 : 5237aa: e8 a1 e0 0b 00 callq 5e1850 0.00 : 5237af: 48 89 43 18 mov %rax,0x18(%rbx) : n->objargs = list_make1($9); 0.00 : 5237b3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5237ba: 31 f6 xor %esi,%esi 0.00 : 5237bc: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 5237c0: e8 8b e0 0b 00 callq 5e1850 0.00 : 5237c5: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *) n; : } : | ALTER EXTENSION name add_drop COLLATION any_name 0.00 : 5237c9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5237d0: e9 ab e1 fe ff jmpq 511980 : *****************************************************************************/ : : AlterExtensionContentsStmt: : ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5237d5: 48 8b 3d 84 70 69 00 mov 0x697084(%rip),%rdi # bba860 0.00 : 5237dc: be 28 00 00 00 mov $0x28,%esi 0.00 : 5237e1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5237e8: e8 23 56 27 00 callq 798e10 0.00 : 5237ed: c7 00 19 03 00 00 movl $0x319,(%rax) : n->extname = $3; 0.00 : 5237f3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : *****************************************************************************/ : : AlterExtensionContentsStmt: : ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); 0.00 : 5237fa: 48 89 c3 mov %rax,%rbx : n->extname = $3; : n->action = $4; : n->objtype = OBJECT_AGGREGATE; : n->objname = $6; : n->objargs = extractAggrArgTypes($7); : $$ = (Node *)n; 0.00 : 5237fd: 49 89 de mov %rbx,%r14 : : AlterExtensionContentsStmt: : ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; 0.00 : 523800: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 523804: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 523808: 8b 41 e8 mov -0x18(%rcx),%eax : n->objtype = OBJECT_AGGREGATE; 0.00 : 52380b: c7 43 14 00 00 00 00 movl $0x0,0x14(%rbx) : AlterExtensionContentsStmt: : ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args : { : AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); : n->extname = $3; : n->action = $4; 0.00 : 523812: 89 43 10 mov %eax,0x10(%rbx) : n->objtype = OBJECT_AGGREGATE; : n->objname = $6; 0.00 : 523815: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 523819: 48 89 43 18 mov %rax,0x18(%rbx) : n->objargs = extractAggrArgTypes($7); 0.00 : 52381d: 48 8b 39 mov (%rcx),%rdi 0.00 : 523820: e8 ab d2 fe ff callq 510ad0 0.00 : 523825: 48 89 43 20 mov %rax,0x20(%rbx) : $$ = (Node *)n; : } : | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' 0.00 : 523829: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523830: e9 4b e1 fe ff jmpq 511980 : ; : : alter_extension_opt_item: : TO NonReservedWord_or_Sconst : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); 0.00 : 523835: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52383c: 48 8b 3a mov (%rdx),%rdi 0.00 : 52383f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523846: e8 a5 be 0d 00 callq 5ff6f0 0.00 : 52384b: bf 1b 96 7c 00 mov $0x7c961b,%edi 0.00 : 523850: 48 89 c6 mov %rax,%rsi 0.00 : 523853: e8 a8 dc 0c 00 callq 5f1500 : } : ; 0.00 : 523858: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : alter_extension_opt_item: : TO NonReservedWord_or_Sconst : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); 0.00 : 52385f: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 523862: e9 19 e1 fe ff jmpq 511980 : : alter_extension_opt_list: : alter_extension_opt_list alter_extension_opt_item : { $$ = lappend($1, $2); } : | /* EMPTY */ : { $$ = NIL; } 0.00 : 523867: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 52386a: e9 11 e1 fe ff jmpq 511980 : } : ; : : alter_extension_opt_list: : alter_extension_opt_list alter_extension_opt_item : { $$ = lappend($1, $2); } 0.00 : 52386f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523876: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 52387a: 48 8b 30 mov (%rax),%rsi 0.00 : 52387d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523884: e8 f7 e5 0b 00 callq 5e1e80 : | /* EMPTY */ 0.00 : 523889: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : alter_extension_opt_list: : alter_extension_opt_list alter_extension_opt_item : { $$ = lappend($1, $2); } 0.00 : 523890: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ 0.00 : 523893: e9 e8 e0 fe ff jmpq 511980 : * : *****************************************************************************/ : : AlterExtensionStmt: ALTER EXTENSION name UPDATE alter_extension_opt_list : { : AlterExtensionStmt *n = makeNode(AlterExtensionStmt); 0.00 : 523898: 48 8b 3d c1 6f 69 00 mov 0x696fc1(%rip),%rdi # bba860 0.00 : 52389f: be 18 00 00 00 mov $0x18,%esi 0.00 : 5238a4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5238ab: e8 60 55 27 00 callq 798e10 0.00 : 5238b0: c7 00 18 03 00 00 movl $0x318,(%rax) : n->extname = $3; 0.00 : 5238b6: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->options = $5; : $$ = (Node *) n; 0.00 : 5238bd: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : AlterExtensionStmt: ALTER EXTENSION name UPDATE alter_extension_opt_list : { : AlterExtensionStmt *n = makeNode(AlterExtensionStmt); : n->extname = $3; 0.00 : 5238c0: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 5238c4: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 5238c8: 48 8b 16 mov (%rsi),%rdx 0.00 : 5238cb: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5238cf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5238d6: e9 a5 e0 fe ff jmpq 511980 : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); : } : | FROM NonReservedWord_or_Sconst : { : $$ = makeDefElem("old_version", (Node *)makeString($2)); 0.00 : 5238db: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5238e2: 48 8b 3b mov (%rbx),%rdi 0.00 : 5238e5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5238ec: e8 ff bd 0d 00 callq 5ff6f0 0.00 : 5238f1: bf 27 96 7c 00 mov $0x7c9627,%edi 0.00 : 5238f6: 48 89 c6 mov %rax,%rsi 0.00 : 5238f9: e8 02 dc 0c 00 callq 5f1500 : } : ; 0.00 : 5238fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); : } : | FROM NonReservedWord_or_Sconst : { : $$ = makeDefElem("old_version", (Node *)makeString($2)); 0.00 : 523905: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 523908: e9 73 e0 fe ff jmpq 511980 : { : $$ = makeDefElem("schema", (Node *)makeString($2)); : } : | VERSION_P NonReservedWord_or_Sconst : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); 0.00 : 52390d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 523914: 48 8b 39 mov (%rcx),%rdi 0.00 : 523917: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52391e: e8 cd bd 0d 00 callq 5ff6f0 0.00 : 523923: bf 1b 96 7c 00 mov $0x7c961b,%edi 0.00 : 523928: 48 89 c6 mov %rax,%rsi 0.00 : 52392b: e8 d0 db 0c 00 callq 5f1500 : } : | FROM NonReservedWord_or_Sconst 0.00 : 523930: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("schema", (Node *)makeString($2)); : } : | VERSION_P NonReservedWord_or_Sconst : { : $$ = makeDefElem("new_version", (Node *)makeString($2)); 0.00 : 523937: 49 89 c6 mov %rax,%r14 : } : | FROM NonReservedWord_or_Sconst 0.00 : 52393a: e9 41 e0 fe ff jmpq 511980 : ; : : create_extension_opt_item: : SCHEMA name : { : $$ = makeDefElem("schema", (Node *)makeString($2)); 0.00 : 52393f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523946: 48 8b 3a mov (%rdx),%rdi 0.00 : 523949: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523950: e8 9b bd 0d 00 callq 5ff6f0 0.00 : 523955: bf 33 80 8e 00 mov $0x8e8033,%edi 0.00 : 52395a: 48 89 c6 mov %rax,%rsi 0.00 : 52395d: e8 9e db 0c 00 callq 5f1500 : } : | VERSION_P NonReservedWord_or_Sconst 0.00 : 523962: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : create_extension_opt_item: : SCHEMA name : { : $$ = makeDefElem("schema", (Node *)makeString($2)); 0.00 : 523969: 49 89 c6 mov %rax,%r14 : } : | VERSION_P NonReservedWord_or_Sconst 0.00 : 52396c: e9 0f e0 fe ff jmpq 511980 : : create_extension_opt_list: : create_extension_opt_list create_extension_opt_item : { $$ = lappend($1, $2); } : | /* EMPTY */ : { $$ = NIL; } 0.00 : 523971: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 523974: e9 07 e0 fe ff jmpq 511980 : } : ; : : create_extension_opt_list: : create_extension_opt_list create_extension_opt_item : { $$ = lappend($1, $2); } 0.00 : 523979: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523980: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 523984: 48 8b 30 mov (%rax),%rsi 0.00 : 523987: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52398e: e8 ed e4 0b 00 callq 5e1e80 : | /* EMPTY */ 0.00 : 523993: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : create_extension_opt_list: : create_extension_opt_list create_extension_opt_item : { $$ = lappend($1, $2); } 0.00 : 52399a: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ 0.00 : 52399d: e9 de df fe ff jmpq 511980 : n->options = $5; : $$ = (Node *) n; : } : | CREATE EXTENSION IF_P NOT EXISTS name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); 0.00 : 5239a2: 48 8b 3d b7 6e 69 00 mov 0x696eb7(%rip),%rdi # bba860 0.00 : 5239a9: be 20 00 00 00 mov $0x20,%esi 0.00 : 5239ae: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5239b5: e8 56 54 27 00 callq 798e10 0.00 : 5239ba: c7 00 17 03 00 00 movl $0x317,(%rax) : n->extname = $6; 0.00 : 5239c0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->if_not_exists = true; : n->options = $8; : $$ = (Node *) n; 0.00 : 5239c7: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | CREATE EXTENSION IF_P NOT EXISTS name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); : n->extname = $6; 0.00 : 5239ca: 48 8b 56 f0 mov -0x10(%rsi),%rdx : n->if_not_exists = true; 0.00 : 5239ce: c6 40 10 01 movb $0x1,0x10(%rax) : $$ = (Node *) n; : } : | CREATE EXTENSION IF_P NOT EXISTS name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); : n->extname = $6; 0.00 : 5239d2: 48 89 50 08 mov %rdx,0x8(%rax) : n->if_not_exists = true; : n->options = $8; 0.00 : 5239d6: 48 8b 16 mov (%rsi),%rdx 0.00 : 5239d9: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5239dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5239e4: e9 97 df fe ff jmpq 511980 : * : *****************************************************************************/ : : CreateExtensionStmt: CREATE EXTENSION name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); 0.00 : 5239e9: 48 8b 3d 70 6e 69 00 mov 0x696e70(%rip),%rdi # bba860 0.00 : 5239f0: be 20 00 00 00 mov $0x20,%esi 0.00 : 5239f5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5239fc: e8 0f 54 27 00 callq 798e10 0.00 : 523a01: c7 00 17 03 00 00 movl $0x317,(%rax) : n->extname = $3; 0.00 : 523a07: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->if_not_exists = false; : n->options = $5; : $$ = (Node *) n; 0.00 : 523a0e: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : CreateExtensionStmt: CREATE EXTENSION name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); : n->extname = $3; 0.00 : 523a11: 48 8b 53 f0 mov -0x10(%rbx),%rdx : n->if_not_exists = false; 0.00 : 523a15: c6 40 10 00 movb $0x0,0x10(%rax) : *****************************************************************************/ : : CreateExtensionStmt: CREATE EXTENSION name opt_with create_extension_opt_list : { : CreateExtensionStmt *n = makeNode(CreateExtensionStmt); : n->extname = $3; 0.00 : 523a19: 48 89 50 08 mov %rdx,0x8(%rax) : n->if_not_exists = false; : n->options = $5; 0.00 : 523a1d: 48 8b 13 mov (%rbx),%rdx 0.00 : 523a20: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *) n; : } : | CREATE EXTENSION IF_P NOT EXISTS name opt_with create_extension_opt_list 0.00 : 523a24: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523a2b: e9 50 df fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *) n; : } : | DROP TABLESPACE IF_P EXISTS name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); 0.00 : 523a30: 48 8b 3d 29 6e 69 00 mov 0x696e29(%rip),%rdi # bba860 0.00 : 523a37: be 18 00 00 00 mov $0x18,%esi 0.00 : 523a3c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523a43: e8 c8 53 27 00 callq 798e10 0.00 : 523a48: c7 00 00 03 00 00 movl $0x300,(%rax) : n->tablespacename = $5; 0.00 : 523a4e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->missing_ok = true; : $$ = (Node *) n; 0.00 : 523a55: 49 89 c6 mov %rax,%r14 : $$ = (Node *) n; : } : | DROP TABLESPACE IF_P EXISTS name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); : n->tablespacename = $5; 0.00 : 523a58: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = true; 0.00 : 523a5b: c6 40 10 01 movb $0x1,0x10(%rax) : $$ = (Node *) n; : } : | DROP TABLESPACE IF_P EXISTS name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); : n->tablespacename = $5; 0.00 : 523a5f: 48 89 50 08 mov %rdx,0x8(%rax) : n->missing_ok = true; : $$ = (Node *) n; : } : ; 0.00 : 523a63: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523a6a: e9 11 df fe ff jmpq 511980 : * : ****************************************************************************/ : : DropTableSpaceStmt: DROP TABLESPACE name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); 0.00 : 523a6f: 48 8b 3d ea 6d 69 00 mov 0x696dea(%rip),%rdi # bba860 0.00 : 523a76: be 18 00 00 00 mov $0x18,%esi 0.00 : 523a7b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523a82: e8 89 53 27 00 callq 798e10 0.00 : 523a87: c7 00 00 03 00 00 movl $0x300,(%rax) : n->tablespacename = $3; 0.00 : 523a8d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->missing_ok = false; : $$ = (Node *) n; 0.00 : 523a94: 49 89 c6 mov %rax,%r14 : ****************************************************************************/ : : DropTableSpaceStmt: DROP TABLESPACE name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); : n->tablespacename = $3; 0.00 : 523a97: 48 8b 16 mov (%rsi),%rdx : n->missing_ok = false; 0.00 : 523a9a: c6 40 10 00 movb $0x0,0x10(%rax) : ****************************************************************************/ : : DropTableSpaceStmt: DROP TABLESPACE name : { : DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); : n->tablespacename = $3; 0.00 : 523a9e: 48 89 50 08 mov %rdx,0x8(%rax) : n->missing_ok = false; : $$ = (Node *) n; : } : | DROP TABLESPACE IF_P EXISTS name 0.00 : 523aa2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523aa9: e9 d2 de fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : OptTableSpaceOwner: OWNER name { $$ = $2; } : | /*EMPTY */ { $$ = NULL; } 0.00 : 523aae: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 523ab1: e9 ca de fe ff jmpq 511980 : n->options = $7; : $$ = (Node *) n; : } : ; : : OptTableSpaceOwner: OWNER name { $$ = $2; } 0.00 : 523ab6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 523abd: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY */ { $$ = NULL; } 0.00 : 523ac0: e9 bb de fe ff jmpq 511980 : * : *****************************************************************************/ : : CreateTableSpaceStmt: CREATE TABLESPACE name OptTableSpaceOwner LOCATION Sconst opt_reloptions : { : CreateTableSpaceStmt *n = makeNode(CreateTableSpaceStmt); 0.00 : 523ac5: 48 8b 3d 94 6d 69 00 mov 0x696d94(%rip),%rdi # bba860 0.00 : 523acc: be 28 00 00 00 mov $0x28,%esi 0.00 : 523ad1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523ad8: e8 33 53 27 00 callq 798e10 0.00 : 523add: c7 00 ff 02 00 00 movl $0x2ff,(%rax) : n->tablespacename = $3; 0.00 : 523ae3: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->owner = $4; : n->location = $6; : n->options = $7; : $$ = (Node *) n; 0.00 : 523aea: 49 89 c6 mov %rax,%r14 : *****************************************************************************/ : : CreateTableSpaceStmt: CREATE TABLESPACE name OptTableSpaceOwner LOCATION Sconst opt_reloptions : { : CreateTableSpaceStmt *n = makeNode(CreateTableSpaceStmt); : n->tablespacename = $3; 0.00 : 523aed: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 523af1: 48 89 50 08 mov %rdx,0x8(%rax) : n->owner = $4; 0.00 : 523af5: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 523af9: 48 89 50 10 mov %rdx,0x10(%rax) : n->location = $6; 0.00 : 523afd: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 523b01: 48 89 50 18 mov %rdx,0x18(%rax) : n->options = $7; 0.00 : 523b05: 48 8b 11 mov (%rcx),%rdx 0.00 : 523b08: 48 89 50 20 mov %rdx,0x20(%rax) : $$ = (Node *) n; : } : ; 0.00 : 523b0c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523b13: e9 68 de fe ff jmpq 511980 : : /* Any not-fully-reserved word --- these names can be, eg, role names. : */ : NonReservedWord: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 523b18: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 523b1f: 48 8b 3b mov (%rbx),%rdi 0.00 : 523b22: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523b29: e8 22 54 27 00 callq 798f50 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 523b2e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* Any not-fully-reserved word --- these names can be, eg, role names. : */ : NonReservedWord: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 523b35: 49 89 c6 mov %rax,%r14 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 523b38: e9 43 de fe ff jmpq 511980 0.00 : 523b3d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 523b44: 48 8b 3e mov (%rsi),%rdi 0.00 : 523b47: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523b4e: e8 fd 53 27 00 callq 798f50 : ; 0.00 : 523b53: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* Any not-fully-reserved word --- these names can be, eg, role names. : */ : NonReservedWord: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 523b5a: 49 89 c6 mov %rax,%r14 : ; 0.00 : 523b5d: e9 1e de fe ff jmpq 511980 : n->concurrent = false; : $$ = (Node *)n; : } : | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 523b62: 48 8b 3d f7 6c 69 00 mov 0x696cf7(%rip),%rdi # bba860 0.00 : 523b69: be 28 00 00 00 mov $0x28,%esi 0.00 : 523b6e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523b75: e8 96 52 27 00 callq 798e10 0.00 : 523b7a: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_LANGUAGE; 0.00 : 523b80: c7 40 18 10 00 00 00 movl $0x10,0x18(%rax) : n->concurrent = false; : $$ = (Node *)n; : } : | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 523b87: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($6))); 0.00 : 523b8a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->behavior = $7; : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 523b91: 49 89 de mov %rbx,%r14 : } : | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($6))); 0.00 : 523b94: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 523b98: e8 53 bb 0d 00 callq 5ff6f0 0.00 : 523b9d: 31 f6 xor %esi,%esi 0.00 : 523b9f: 48 89 c7 mov %rax,%rdi 0.00 : 523ba2: e8 a9 dc 0b 00 callq 5e1850 0.00 : 523ba7: 31 f6 xor %esi,%esi 0.00 : 523ba9: 48 89 c7 mov %rax,%rdi 0.00 : 523bac: e8 9f dc 0b 00 callq 5e1850 0.00 : 523bb1: 48 89 43 08 mov %rax,0x8(%rbx) : n->behavior = $7; 0.00 : 523bb5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 523bbc: 8b 06 mov (%rsi),%eax : n->missing_ok = true; 0.00 : 523bbe: c6 43 20 01 movb $0x1,0x20(%rbx) : n->concurrent = false; 0.00 : 523bc2: c6 43 21 00 movb $0x0,0x21(%rbx) : | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($6))); : n->behavior = $7; 0.00 : 523bc6: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = true; : n->concurrent = false; : $$ = (Node *)n; : } : ; 0.00 : 523bc9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523bd0: e9 ab dd fe ff jmpq 511980 : ; : : DropPLangStmt: : DROP opt_procedural LANGUAGE NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 523bd5: 48 8b 3d 84 6c 69 00 mov 0x696c84(%rip),%rdi # bba860 0.00 : 523bdc: be 28 00 00 00 mov $0x28,%esi 0.00 : 523be1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523be8: e8 23 52 27 00 callq 798e10 0.00 : 523bed: c7 00 ce 02 00 00 movl $0x2ce,(%rax) : n->removeType = OBJECT_LANGUAGE; 0.00 : 523bf3: c7 40 18 10 00 00 00 movl $0x10,0x18(%rax) : ; : : DropPLangStmt: : DROP opt_procedural LANGUAGE NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); 0.00 : 523bfa: 48 89 c3 mov %rax,%rbx : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($4))); 0.00 : 523bfd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->arguments = NIL; : n->behavior = $5; : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; 0.00 : 523c04: 49 89 de mov %rbx,%r14 : DropPLangStmt: : DROP opt_procedural LANGUAGE NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($4))); 0.00 : 523c07: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 523c0b: e8 e0 ba 0d 00 callq 5ff6f0 0.00 : 523c10: 31 f6 xor %esi,%esi 0.00 : 523c12: 48 89 c7 mov %rax,%rdi 0.00 : 523c15: e8 36 dc 0b 00 callq 5e1850 0.00 : 523c1a: 31 f6 xor %esi,%esi 0.00 : 523c1c: 48 89 c7 mov %rax,%rdi 0.00 : 523c1f: e8 2c dc 0b 00 callq 5e1850 : n->arguments = NIL; 0.00 : 523c24: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 523c2b: 00 : DropPLangStmt: : DROP opt_procedural LANGUAGE NonReservedWord_or_Sconst opt_drop_behavior : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($4))); 0.00 : 523c2c: 48 89 43 08 mov %rax,0x8(%rbx) : n->arguments = NIL; : n->behavior = $5; 0.00 : 523c30: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523c37: 8b 02 mov (%rdx),%eax : n->missing_ok = false; 0.00 : 523c39: c6 43 20 00 movb $0x0,0x20(%rbx) : n->concurrent = false; 0.00 : 523c3d: c6 43 21 00 movb $0x0,0x21(%rbx) : { : DropStmt *n = makeNode(DropStmt); : n->removeType = OBJECT_LANGUAGE; : n->objects = list_make1(list_make1(makeString($4))); : n->arguments = NIL; : n->behavior = $5; 0.00 : 523c41: 89 43 1c mov %eax,0x1c(%rbx) : n->missing_ok = false; : n->concurrent = false; : $$ = (Node *)n; : } : | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior 0.00 : 523c44: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523c4b: e9 30 dd fe ff jmpq 511980 : | NO VALIDATOR { $$ = NIL; } : ; : : opt_validator: : validator_clause { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 523c50: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 523c53: e9 28 dd fe ff jmpq 511980 : VALIDATOR handler_name { $$ = $2; } : | NO VALIDATOR { $$ = NIL; } : ; : : opt_validator: : validator_clause { $$ = $1; } 0.00 : 523c58: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 523c5f: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 523c62: e9 19 dd fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : validator_clause: : VALIDATOR handler_name { $$ = $2; } : | NO VALIDATOR { $$ = NIL; } 0.00 : 523c67: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 523c6a: e9 11 dd fe ff jmpq 511980 : INLINE_P handler_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : validator_clause: : VALIDATOR handler_name { $$ = $2; } 0.00 : 523c6f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 523c76: 4c 8b 31 mov (%rcx),%r14 : | NO VALIDATOR { $$ = NIL; } 0.00 : 523c79: e9 02 dd fe ff jmpq 511980 : | name attrs { $$ = lcons(makeString($1), $2); } : ; : : opt_inline_handler: : INLINE_P handler_name { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 523c7e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 523c81: e9 fa dc fe ff jmpq 511980 : name { $$ = list_make1(makeString($1)); } : | name attrs { $$ = lcons(makeString($1), $2); } : ; : : opt_inline_handler: : INLINE_P handler_name { $$ = $2; } 0.00 : 523c86: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523c8d: 4c 8b 32 mov (%rdx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 523c90: e9 eb dc fe ff jmpq 511980 : * (CREATE LANGUAGE is the only place where func_name isn't followed by '('). : * Work around by using simple names, instead. : */ : handler_name: : name { $$ = list_make1(makeString($1)); } : | name attrs { $$ = lcons(makeString($1), $2); } 0.00 : 523c95: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523c9c: 48 8b 18 mov (%rax),%rbx 0.00 : 523c9f: 48 8b 78 f8 mov -0x8(%rax),%rdi 0.00 : 523ca3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523caa: e8 41 ba 0d 00 callq 5ff6f0 0.00 : 523caf: 48 89 de mov %rbx,%rsi 0.00 : 523cb2: 48 89 c7 mov %rax,%rdi 0.00 : 523cb5: e8 96 db 0b 00 callq 5e1850 : ; 0.00 : 523cba: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * (CREATE LANGUAGE is the only place where func_name isn't followed by '('). : * Work around by using simple names, instead. : */ : handler_name: : name { $$ = list_make1(makeString($1)); } : | name attrs { $$ = lcons(makeString($1), $2); } 0.00 : 523cc1: 49 89 c6 mov %rax,%r14 : ; 0.00 : 523cc4: e9 b7 dc fe ff jmpq 511980 : /* This ought to be just func_name, but that causes reduce/reduce conflicts : * (CREATE LANGUAGE is the only place where func_name isn't followed by '('). : * Work around by using simple names, instead. : */ : handler_name: : name { $$ = list_make1(makeString($1)); } 0.00 : 523cc9: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 523cd0: 48 8b 3e mov (%rsi),%rdi 0.00 : 523cd3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523cda: e8 11 ba 0d 00 callq 5ff6f0 0.00 : 523cdf: 31 f6 xor %esi,%esi 0.00 : 523ce1: 48 89 c7 mov %rax,%rdi 0.00 : 523ce4: e8 67 db 0b 00 callq 5e1850 : | name attrs { $$ = lcons(makeString($1), $2); } 0.00 : 523ce9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* This ought to be just func_name, but that causes reduce/reduce conflicts : * (CREATE LANGUAGE is the only place where func_name isn't followed by '('). : * Work around by using simple names, instead. : */ : handler_name: : name { $$ = list_make1(makeString($1)); } 0.00 : 523cf0: 49 89 c6 mov %rax,%r14 : | name attrs { $$ = lcons(makeString($1), $2); } 0.00 : 523cf3: e9 88 dc fe ff jmpq 511980 : } : ; : : opt_trusted: : TRUSTED { $$ = TRUE; } : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 523cf8: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 523cfb: e9 80 dc fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_trusted: : TRUSTED { $$ = TRUE; } 0.00 : 523d00: 41 b6 01 mov $0x1,%r14b : | /*EMPTY*/ { $$ = FALSE; } 0.00 : 523d03: e9 78 dc fe ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst : HANDLER handler_name opt_inline_handler opt_validator : { : CreatePLangStmt *n = makeNode(CreatePLangStmt); 0.00 : 523d08: 48 8b 3d 51 6b 69 00 mov 0x696b51(%rip),%rdi # bba860 0.00 : 523d0f: be 30 00 00 00 mov $0x30,%esi 0.00 : 523d14: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523d1b: e8 f0 50 27 00 callq 798e10 0.00 : 523d20: c7 00 ea 02 00 00 movl $0x2ea,(%rax) : n->replace = $2; 0.00 : 523d26: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->plname = $6; : n->plhandler = $8; : n->plinline = $9; : n->plvalidator = $10; : n->pltrusted = $3; : $$ = (Node *)n; 0.00 : 523d2d: 49 89 c6 mov %rax,%r14 : } : | CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst : HANDLER handler_name opt_inline_handler opt_validator : { : CreatePLangStmt *n = makeNode(CreatePLangStmt); : n->replace = $2; 0.00 : 523d30: 0f b6 53 c0 movzbl -0x40(%rbx),%edx 0.00 : 523d34: 88 50 04 mov %dl,0x4(%rax) : n->plname = $6; 0.00 : 523d37: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 523d3b: 48 89 50 08 mov %rdx,0x8(%rax) : n->plhandler = $8; 0.00 : 523d3f: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 523d43: 48 89 50 10 mov %rdx,0x10(%rax) : n->plinline = $9; 0.00 : 523d47: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 523d4b: 48 89 50 18 mov %rdx,0x18(%rax) : n->plvalidator = $10; 0.00 : 523d4f: 48 8b 13 mov (%rbx),%rdx 0.00 : 523d52: 48 89 50 20 mov %rdx,0x20(%rax) : n->pltrusted = $3; 0.00 : 523d56: 0f b6 53 c8 movzbl -0x38(%rbx),%edx 0.00 : 523d5a: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 523d5d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523d64: e9 17 dc fe ff jmpq 511980 : *****************************************************************************/ : : CreatePLangStmt: : CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst : { : CreatePLangStmt *n = makeNode(CreatePLangStmt); 0.00 : 523d69: 48 8b 3d f0 6a 69 00 mov 0x696af0(%rip),%rdi # bba860 0.00 : 523d70: be 30 00 00 00 mov $0x30,%esi 0.00 : 523d75: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523d7c: e8 8f 50 27 00 callq 798e10 0.00 : 523d81: c7 00 ea 02 00 00 movl $0x2ea,(%rax) : n->replace = $2; 0.00 : 523d87: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : /* parameters are all to be supplied by system */ : n->plhandler = NIL; : n->plinline = NIL; : n->plvalidator = NIL; : n->pltrusted = false; : $$ = (Node *)n; 0.00 : 523d8e: 49 89 c6 mov %rax,%r14 : : CreatePLangStmt: : CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst : { : CreatePLangStmt *n = makeNode(CreatePLangStmt); : n->replace = $2; 0.00 : 523d91: 0f b6 51 e0 movzbl -0x20(%rcx),%edx 0.00 : 523d95: 88 50 04 mov %dl,0x4(%rax) : n->plname = $6; 0.00 : 523d98: 48 8b 11 mov (%rcx),%rdx : /* parameters are all to be supplied by system */ : n->plhandler = NIL; 0.00 : 523d9b: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 523da2: 00 : n->plinline = NIL; 0.00 : 523da3: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 523daa: 00 : n->plvalidator = NIL; 0.00 : 523dab: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 523db2: 00 : n->pltrusted = false; 0.00 : 523db3: c6 40 28 00 movb $0x0,0x28(%rax) : CreatePLangStmt: : CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst : { : CreatePLangStmt *n = makeNode(CreatePLangStmt); : n->replace = $2; : n->plname = $6; 0.00 : 523db7: 48 89 50 08 mov %rdx,0x8(%rax) : n->plinline = NIL; : n->plvalidator = NIL; : n->pltrusted = false; : $$ = (Node *)n; : } : | CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst 0.00 : 523dbb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 523dc2: e9 b9 db fe ff jmpq 511980 : } : | SignedIconst { $$ = makeInteger($1); } : ; : : NumericOnly_list: NumericOnly { $$ = list_make1($1); } : | NumericOnly_list ',' NumericOnly { $$ = lappend($1, $3); } 0.00 : 523dc7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523dce: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 523dd2: 48 8b 32 mov (%rdx),%rsi 0.00 : 523dd5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523ddc: e8 9f e0 0b 00 callq 5e1e80 : ; 0.00 : 523de1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : | SignedIconst { $$ = makeInteger($1); } : ; : : NumericOnly_list: NumericOnly { $$ = list_make1($1); } : | NumericOnly_list ',' NumericOnly { $$ = lappend($1, $3); } 0.00 : 523de8: 49 89 c6 mov %rax,%r14 : ; 0.00 : 523deb: e9 90 db fe ff jmpq 511980 : doNegateFloat($$); : } : | SignedIconst { $$ = makeInteger($1); } : ; : : NumericOnly_list: NumericOnly { $$ = list_make1($1); } 0.00 : 523df0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523df7: 31 f6 xor %esi,%esi 0.00 : 523df9: 48 8b 38 mov (%rax),%rdi 0.00 : 523dfc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523e03: e8 48 da 0b 00 callq 5e1850 : | NumericOnly_list ',' NumericOnly { $$ = lappend($1, $3); } 0.00 : 523e08: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : doNegateFloat($$); : } : | SignedIconst { $$ = makeInteger($1); } : ; : : NumericOnly_list: NumericOnly { $$ = list_make1($1); } 0.00 : 523e0f: 49 89 c6 mov %rax,%r14 : | NumericOnly_list ',' NumericOnly { $$ = lappend($1, $3); } 0.00 : 523e12: e9 69 db fe ff jmpq 511980 : | '-' FCONST : { : $$ = makeFloat($2); : doNegateFloat($$); : } : | SignedIconst { $$ = makeInteger($1); } 0.00 : 523e17: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 523e1e: 48 63 3b movslq (%rbx),%rdi 0.00 : 523e21: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523e28: e8 23 b9 0d 00 callq 5ff750 : ; 0.00 : 523e2d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '-' FCONST : { : $$ = makeFloat($2); : doNegateFloat($$); : } : | SignedIconst { $$ = makeInteger($1); } 0.00 : 523e34: 49 89 c6 mov %rax,%r14 : ; 0.00 : 523e37: e9 44 db fe ff jmpq 511980 : : NumericOnly: : FCONST { $$ = makeFloat($1); } : | '-' FCONST : { : $$ = makeFloat($2); 0.00 : 523e3c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 523e43: 48 8b 39 mov (%rcx),%rdi 0.00 : 523e46: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523e4d: e8 ce b8 0d 00 callq 5ff720 : } : : static void : doNegateFloat(Value *v) : { : char *oldval = v->val.str; 0.00 : 523e52: 48 8b 70 08 mov 0x8(%rax),%rsi : : NumericOnly: : FCONST { $$ = makeFloat($1); } : | '-' FCONST : { : $$ = makeFloat($2); 0.00 : 523e56: 49 89 c6 mov %rax,%r14 : { : char *oldval = v->val.str; : : Assert(IsA(v, Float)); : if (*oldval == '+') : oldval++; 0.00 : 523e59: 31 c0 xor %eax,%eax : if (*oldval == '-') 0.00 : 523e5b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : char *oldval = v->val.str; : : Assert(IsA(v, Float)); : if (*oldval == '+') : oldval++; 0.00 : 523e62: 80 3e 2b cmpb $0x2b,(%rsi) 0.00 : 523e65: 0f 94 c0 sete %al 0.00 : 523e68: 48 01 c6 add %rax,%rsi : if (*oldval == '-') 0.00 : 523e6b: 80 3e 2d cmpb $0x2d,(%rsi) 0.00 : 523e6e: 0f 85 c3 53 00 00 jne 529237 : v->val.str = oldval+1; /* just strip the '-' */ 0.00 : 523e74: 48 8d 46 01 lea 0x1(%rsi),%rax 0.00 : 523e78: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 523e7c: e9 ff da fe ff jmpq 511980 : opt_by: BY {} : | /* empty */ {} : ; : : NumericOnly: : FCONST { $$ = makeFloat($1); } 0.00 : 523e81: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523e88: 48 8b 3a mov (%rdx),%rdi 0.00 : 523e8b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523e92: e8 89 b8 0d 00 callq 5ff720 : | '-' FCONST 0.00 : 523e97: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : opt_by: BY {} : | /* empty */ {} : ; : : NumericOnly: : FCONST { $$ = makeFloat($1); } 0.00 : 523e9e: 49 89 c6 mov %rax,%r14 : | '-' FCONST 0.00 : 523ea1: e9 da da fe ff jmpq 511980 : { : $$ = makeDefElem("restart", NULL); : } : | RESTART opt_with NumericOnly : { : $$ = makeDefElem("restart", (Node *)$3); 0.00 : 523ea6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523ead: bf 13 96 7c 00 mov $0x7c9613,%edi 0.00 : 523eb2: 48 8b 30 mov (%rax),%rsi 0.00 : 523eb5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523ebc: e8 3f d6 0c 00 callq 5f1500 : } : ; 0.00 : 523ec1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("restart", NULL); : } : | RESTART opt_with NumericOnly : { : $$ = makeDefElem("restart", (Node *)$3); 0.00 : 523ec8: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 523ecb: e9 b0 da fe ff jmpq 511980 : { : $$ = makeDefElem("start", (Node *)$3); : } : | RESTART : { : $$ = makeDefElem("restart", NULL); 0.00 : 523ed0: 31 f6 xor %esi,%esi 0.00 : 523ed2: bf 13 96 7c 00 mov $0x7c9613,%edi 0.00 : 523ed7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523ede: e8 1d d6 0c 00 callq 5f1500 : } : | RESTART opt_with NumericOnly 0.00 : 523ee3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("start", (Node *)$3); : } : | RESTART : { : $$ = makeDefElem("restart", NULL); 0.00 : 523eea: 49 89 c6 mov %rax,%r14 : } : | RESTART opt_with NumericOnly 0.00 : 523eed: e9 8e da fe ff jmpq 511980 : { : $$ = makeDefElem("owned_by", (Node *)$3); : } : | START opt_with NumericOnly : { : $$ = makeDefElem("start", (Node *)$3); 0.00 : 523ef2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 523ef9: bf e7 b1 87 00 mov $0x87b1e7,%edi 0.00 : 523efe: 48 8b 33 mov (%rbx),%rsi 0.00 : 523f01: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523f08: e8 f3 d5 0c 00 callq 5f1500 : } : | RESTART 0.00 : 523f0d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("owned_by", (Node *)$3); : } : | START opt_with NumericOnly : { : $$ = makeDefElem("start", (Node *)$3); 0.00 : 523f14: 49 89 c6 mov %rax,%r14 : } : | RESTART 0.00 : 523f17: e9 64 da fe ff jmpq 511980 : { : $$ = makeDefElem("minvalue", NULL); : } : | OWNED BY any_name : { : $$ = makeDefElem("owned_by", (Node *)$3); 0.00 : 523f1c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 523f23: bf 0a 96 7c 00 mov $0x7c960a,%edi 0.00 : 523f28: 48 8b 31 mov (%rcx),%rsi 0.00 : 523f2b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523f32: e8 c9 d5 0c 00 callq 5f1500 : } : | START opt_with NumericOnly 0.00 : 523f37: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("minvalue", NULL); : } : | OWNED BY any_name : { : $$ = makeDefElem("owned_by", (Node *)$3); 0.00 : 523f3e: 49 89 c6 mov %rax,%r14 : } : | START opt_with NumericOnly 0.00 : 523f41: e9 3a da fe ff jmpq 511980 : ; : : /* Column label --- allowed labels in "AS" clauses. : * This presently includes *all* Postgres keywords. : */ : ColLabel: IDENT { $$ = $1; } 0.00 : 523f46: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523f4d: 4c 8b 30 mov (%rax),%r14 : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 523f50: e9 2b da fe ff jmpq 511980 0.00 : 523f55: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523f5c: 48 8b 3a mov (%rdx),%rdi 0.00 : 523f5f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523f66: e8 e5 4f 27 00 callq 798f50 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 523f6b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* Column label --- allowed labels in "AS" clauses. : * This presently includes *all* Postgres keywords. : */ : ColLabel: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } 0.00 : 523f72: 49 89 c6 mov %rax,%r14 : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 523f75: e9 06 da fe ff jmpq 511980 : { : $$ = makeDefElem("maxvalue", NULL); : } : | NO MINVALUE : { : $$ = makeDefElem("minvalue", NULL); 0.00 : 523f7a: 31 f6 xor %esi,%esi 0.00 : 523f7c: bf 01 96 7c 00 mov $0x7c9601,%edi 0.00 : 523f81: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523f88: e8 73 d5 0c 00 callq 5f1500 : } : | OWNED BY any_name 0.00 : 523f8d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("maxvalue", NULL); : } : | NO MINVALUE : { : $$ = makeDefElem("minvalue", NULL); 0.00 : 523f94: 49 89 c6 mov %rax,%r14 : } : | OWNED BY any_name 0.00 : 523f97: e9 e4 d9 fe ff jmpq 511980 : { : $$ = makeDefElem("minvalue", (Node *)$2); : } : | NO MAXVALUE : { : $$ = makeDefElem("maxvalue", NULL); 0.00 : 523f9c: 31 f6 xor %esi,%esi 0.00 : 523f9e: bf f8 95 7c 00 mov $0x7c95f8,%edi 0.00 : 523fa3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523faa: e8 51 d5 0c 00 callq 5f1500 : } : | NO MINVALUE 0.00 : 523faf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("minvalue", (Node *)$2); : } : | NO MAXVALUE : { : $$ = makeDefElem("maxvalue", NULL); 0.00 : 523fb6: 49 89 c6 mov %rax,%r14 : } : | NO MINVALUE 0.00 : 523fb9: e9 c2 d9 fe ff jmpq 511980 : { : $$ = makeDefElem("maxvalue", (Node *)$2); : } : | MINVALUE NumericOnly : { : $$ = makeDefElem("minvalue", (Node *)$2); 0.00 : 523fbe: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 523fc5: bf 01 96 7c 00 mov $0x7c9601,%edi 0.00 : 523fca: 48 8b 32 mov (%rdx),%rsi 0.00 : 523fcd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523fd4: e8 27 d5 0c 00 callq 5f1500 : } : | NO MAXVALUE 0.00 : 523fd9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("maxvalue", (Node *)$2); : } : | MINVALUE NumericOnly : { : $$ = makeDefElem("minvalue", (Node *)$2); 0.00 : 523fe0: 49 89 c6 mov %rax,%r14 : } : | NO MAXVALUE 0.00 : 523fe3: e9 98 d9 fe ff jmpq 511980 : { : $$ = makeDefElem("increment", (Node *)$3); : } : | MAXVALUE NumericOnly : { : $$ = makeDefElem("maxvalue", (Node *)$2); 0.00 : 523fe8: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 523fef: bf f8 95 7c 00 mov $0x7c95f8,%edi 0.00 : 523ff4: 48 8b 30 mov (%rax),%rsi 0.00 : 523ff7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 523ffe: e8 fd d4 0c 00 callq 5f1500 : } : | MINVALUE NumericOnly 0.00 : 524003: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("increment", (Node *)$3); : } : | MAXVALUE NumericOnly : { : $$ = makeDefElem("maxvalue", (Node *)$2); 0.00 : 52400a: 49 89 c6 mov %rax,%r14 : } : | MINVALUE NumericOnly 0.00 : 52400d: e9 6e d9 fe ff jmpq 511980 : { : $$ = makeDefElem("cycle", (Node *)makeInteger(FALSE)); : } : | INCREMENT opt_by NumericOnly : { : $$ = makeDefElem("increment", (Node *)$3); 0.00 : 524012: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 524019: bf ee 95 7c 00 mov $0x7c95ee,%edi 0.00 : 52401e: 48 8b 33 mov (%rbx),%rsi 0.00 : 524021: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524028: e8 d3 d4 0c 00 callq 5f1500 : } : | MAXVALUE NumericOnly 0.00 : 52402d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("cycle", (Node *)makeInteger(FALSE)); : } : | INCREMENT opt_by NumericOnly : { : $$ = makeDefElem("increment", (Node *)$3); 0.00 : 524034: 49 89 c6 mov %rax,%r14 : } : | MAXVALUE NumericOnly 0.00 : 524037: e9 44 d9 fe ff jmpq 511980 : { : $$ = makeDefElem("cycle", (Node *)makeInteger(TRUE)); : } : | NO CYCLE : { : $$ = makeDefElem("cycle", (Node *)makeInteger(FALSE)); 0.00 : 52403c: 31 ff xor %edi,%edi 0.00 : 52403e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524045: e8 06 b7 0d 00 callq 5ff750 0.00 : 52404a: bf e8 95 7c 00 mov $0x7c95e8,%edi 0.00 : 52404f: 48 89 c6 mov %rax,%rsi 0.00 : 524052: e8 a9 d4 0c 00 callq 5f1500 : } : | INCREMENT opt_by NumericOnly 0.00 : 524057: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("cycle", (Node *)makeInteger(TRUE)); : } : | NO CYCLE : { : $$ = makeDefElem("cycle", (Node *)makeInteger(FALSE)); 0.00 : 52405e: 49 89 c6 mov %rax,%r14 : } : | INCREMENT opt_by NumericOnly 0.00 : 524061: e9 1a d9 fe ff jmpq 511980 : { : $$ = makeDefElem("cache", (Node *)$2); : } : | CYCLE : { : $$ = makeDefElem("cycle", (Node *)makeInteger(TRUE)); 0.00 : 524066: bf 01 00 00 00 mov $0x1,%edi 0.00 : 52406b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524072: e8 d9 b6 0d 00 callq 5ff750 0.00 : 524077: bf e8 95 7c 00 mov $0x7c95e8,%edi 0.00 : 52407c: 48 89 c6 mov %rax,%rsi 0.00 : 52407f: e8 7c d4 0c 00 callq 5f1500 : } : | NO CYCLE 0.00 : 524084: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("cache", (Node *)$2); : } : | CYCLE : { : $$ = makeDefElem("cycle", (Node *)makeInteger(TRUE)); 0.00 : 52408b: 49 89 c6 mov %rax,%r14 : } : | NO CYCLE 0.00 : 52408e: e9 ed d8 fe ff jmpq 511980 : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } : ; : : SeqOptElem: CACHE NumericOnly : { : $$ = makeDefElem("cache", (Node *)$2); 0.00 : 524093: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52409a: bf 6c 28 8d 00 mov $0x8d286c,%edi 0.00 : 52409f: 48 8b 31 mov (%rcx),%rsi 0.00 : 5240a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5240a9: e8 52 d4 0c 00 callq 5f1500 : } : | CYCLE 0.00 : 5240ae: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } : ; : : SeqOptElem: CACHE NumericOnly : { : $$ = makeDefElem("cache", (Node *)$2); 0.00 : 5240b5: 49 89 c6 mov %rax,%r14 : } : | CYCLE 0.00 : 5240b8: e9 c3 d8 fe ff jmpq 511980 : OptSeqOptList: SeqOptList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : SeqOptList: SeqOptElem { $$ = list_make1($1); } : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } 0.00 : 5240bd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5240c4: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 5240c8: 48 8b 32 mov (%rdx),%rsi 0.00 : 5240cb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5240d2: e8 a9 dd 0b 00 callq 5e1e80 : ; 0.00 : 5240d7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : OptSeqOptList: SeqOptList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : SeqOptList: SeqOptElem { $$ = list_make1($1); } : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } 0.00 : 5240de: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5240e1: e9 9a d8 fe ff jmpq 511980 : : OptSeqOptList: SeqOptList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : SeqOptList: SeqOptElem { $$ = list_make1($1); } 0.00 : 5240e6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5240ed: 31 f6 xor %esi,%esi 0.00 : 5240ef: 48 8b 38 mov (%rax),%rdi 0.00 : 5240f2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5240f9: e8 52 d7 0b 00 callq 5e1850 : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } 0.00 : 5240fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : OptSeqOptList: SeqOptList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : SeqOptList: SeqOptElem { $$ = list_make1($1); } 0.00 : 524105: 49 89 c6 mov %rax,%r14 : | SeqOptList SeqOptElem { $$ = lappend($1, $2); } 0.00 : 524108: e9 73 d8 fe ff jmpq 511980 : } : : ; : : OptSeqOptList: SeqOptList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 52410d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 524110: e9 6b d8 fe ff jmpq 511980 : $$ = (Node *)n; : } : : ; : : OptSeqOptList: SeqOptList { $$ = $1; } 0.00 : 524115: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52411c: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 52411f: e9 5c d8 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); 0.00 : 524124: 48 8b 3d 35 67 69 00 mov 0x696735(%rip),%rdi # bba860 0.00 : 52412b: be 20 00 00 00 mov $0x20,%esi 0.00 : 524130: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524137: e8 d4 4c 27 00 callq 798e10 0.00 : 52413c: c7 00 e5 02 00 00 movl $0x2e5,(%rax) : n->sequence = $5; 0.00 : 524142: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->options = $6; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 524149: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); : n->sequence = $5; 0.00 : 52414c: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 524150: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $6; 0.00 : 524154: 48 8b 13 mov (%rbx),%rdx : n->missing_ok = true; 0.00 : 524157: c6 40 18 01 movb $0x1,0x18(%rax) : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); : n->sequence = $5; : n->options = $6; 0.00 : 52415b: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = true; : $$ = (Node *)n; : } : 0.00 : 52415f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524166: e9 15 d8 fe ff jmpq 511980 : ; : : AlterSeqStmt: : ALTER SEQUENCE qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); 0.00 : 52416b: 48 8b 3d ee 66 69 00 mov 0x6966ee(%rip),%rdi # bba860 0.00 : 524172: be 20 00 00 00 mov $0x20,%esi 0.00 : 524177: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52417e: e8 8d 4c 27 00 callq 798e10 0.00 : 524183: c7 00 e5 02 00 00 movl $0x2e5,(%rax) : n->sequence = $3; 0.00 : 524189: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->options = $4; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 524190: 49 89 c6 mov %rax,%r14 : : AlterSeqStmt: : ALTER SEQUENCE qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); : n->sequence = $3; 0.00 : 524193: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 524197: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $4; 0.00 : 52419b: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = false; 0.00 : 52419e: c6 40 18 00 movb $0x0,0x18(%rax) : AlterSeqStmt: : ALTER SEQUENCE qualified_name SeqOptList : { : AlterSeqStmt *n = makeNode(AlterSeqStmt); : n->sequence = $3; : n->options = $4; 0.00 : 5241a2: 48 89 50 10 mov %rdx,0x10(%rax) : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name SeqOptList 0.00 : 5241a6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5241ad: e9 ce d7 fe ff jmpq 511980 : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE OptTemp SEQUENCE IF_P NOT EXISTS qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); 0.00 : 5241b2: 48 8b 3d a7 66 69 00 mov 0x6966a7(%rip),%rdi # bba860 0.00 : 5241b9: be 20 00 00 00 mov $0x20,%esi 0.00 : 5241be: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5241c5: e8 46 4c 27 00 callq 798e10 0.00 : 5241ca: c7 00 e4 02 00 00 movl $0x2e4,(%rax) : $7->relpersistence = $2; 0.00 : 5241d0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->sequence = $7; : n->options = $8; : n->ownerId = InvalidOid; : n->if_not_exists = true; : $$ = (Node *)n; 0.00 : 5241d7: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | CREATE OptTemp SEQUENCE IF_P NOT EXISTS qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); : $7->relpersistence = $2; 0.00 : 5241da: 8b 56 d0 mov -0x30(%rsi),%edx 0.00 : 5241dd: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 5241e1: 88 51 24 mov %dl,0x24(%rcx) : n->sequence = $7; 0.00 : 5241e4: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5241e8: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $8; 0.00 : 5241ec: 48 8b 16 mov (%rsi),%rdx : n->ownerId = InvalidOid; 0.00 : 5241ef: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : n->if_not_exists = true; 0.00 : 5241f6: c6 40 1c 01 movb $0x1,0x1c(%rax) : | CREATE OptTemp SEQUENCE IF_P NOT EXISTS qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); : $7->relpersistence = $2; : n->sequence = $7; : n->options = $8; 0.00 : 5241fa: 48 89 50 10 mov %rdx,0x10(%rax) : n->ownerId = InvalidOid; : n->if_not_exists = true; : $$ = (Node *)n; : } : ; 0.00 : 5241fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524205: e9 76 d7 fe ff jmpq 511980 : *****************************************************************************/ : : CreateSeqStmt: : CREATE OptTemp SEQUENCE qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); 0.00 : 52420a: 48 8b 3d 4f 66 69 00 mov 0x69664f(%rip),%rdi # bba860 0.00 : 524211: be 20 00 00 00 mov $0x20,%esi 0.00 : 524216: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52421d: e8 ee 4b 27 00 callq 798e10 0.00 : 524222: c7 00 e4 02 00 00 movl $0x2e4,(%rax) : $4->relpersistence = $2; 0.00 : 524228: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->sequence = $4; : n->options = $5; : n->ownerId = InvalidOid; : n->if_not_exists = false; : $$ = (Node *)n; 0.00 : 52422f: 49 89 c6 mov %rax,%r14 : : CreateSeqStmt: : CREATE OptTemp SEQUENCE qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); : $4->relpersistence = $2; 0.00 : 524232: 8b 53 e8 mov -0x18(%rbx),%edx 0.00 : 524235: 48 8b 4b f8 mov -0x8(%rbx),%rcx 0.00 : 524239: 88 51 24 mov %dl,0x24(%rcx) : n->sequence = $4; 0.00 : 52423c: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 524240: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 524244: 48 8b 13 mov (%rbx),%rdx : n->ownerId = InvalidOid; 0.00 : 524247: c7 40 18 00 00 00 00 movl $0x0,0x18(%rax) : n->if_not_exists = false; 0.00 : 52424e: c6 40 1c 00 movb $0x0,0x1c(%rax) : CREATE OptTemp SEQUENCE qualified_name OptSeqOptList : { : CreateSeqStmt *n = makeNode(CreateSeqStmt); : $4->relpersistence = $2; : n->sequence = $4; : n->options = $5; 0.00 : 524252: 48 89 50 10 mov %rdx,0x10(%rax) : n->ownerId = InvalidOid; : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE OptTemp SEQUENCE IF_P NOT EXISTS qualified_name OptSeqOptList 0.00 : 524256: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52425d: e9 1e d7 fe ff jmpq 511980 : *****************************************************************************/ : : RefreshMatViewStmt: : REFRESH MATERIALIZED VIEW opt_concurrently qualified_name opt_with_data : { : RefreshMatViewStmt *n = makeNode(RefreshMatViewStmt); 0.00 : 524262: 48 8b 3d f7 65 69 00 mov 0x6965f7(%rip),%rdi # bba860 0.00 : 524269: be 10 00 00 00 mov $0x10,%esi 0.00 : 52426e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524275: e8 96 4b 27 00 callq 798e10 0.00 : 52427a: c7 00 1c 03 00 00 movl $0x31c,(%rax) : n->concurrent = $4; 0.00 : 524280: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->relation = $5; : n->skipData = !($6); : $$ = (Node *) n; 0.00 : 524287: 49 89 c6 mov %rax,%r14 : : RefreshMatViewStmt: : REFRESH MATERIALIZED VIEW opt_concurrently qualified_name opt_with_data : { : RefreshMatViewStmt *n = makeNode(RefreshMatViewStmt); : n->concurrent = $4; 0.00 : 52428a: 0f b6 51 f0 movzbl -0x10(%rcx),%edx 0.00 : 52428e: 88 50 04 mov %dl,0x4(%rax) : n->relation = $5; 0.00 : 524291: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 524295: 48 89 50 08 mov %rdx,0x8(%rax) : n->skipData = !($6); 0.00 : 524299: 80 39 00 cmpb $0x0,(%rcx) 0.00 : 52429c: 0f 94 40 05 sete 0x5(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5242a0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5242a7: e9 d4 d6 fe ff jmpq 511980 : $$->skipData = false; /* might get changed later */ : } : ; : : OptNoLog: UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } 0.00 : 5242ac: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5242b3: ff ff ff 0.00 : 5242b6: 49 21 d6 and %rdx,%r14 0.00 : 5242b9: 49 83 ce 70 or $0x70,%r14 : ; 0.00 : 5242bd: e9 be d6 fe ff jmpq 511980 : $$->viewQuery = NULL; /* filled at analysis time */ : $$->skipData = false; /* might get changed later */ : } : ; : : OptNoLog: UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } 0.00 : 5242c2: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5242c9: ff ff ff 0.00 : 5242cc: 49 21 c6 and %rax,%r14 0.00 : 5242cf: 49 83 ce 75 or $0x75,%r14 : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } 0.00 : 5242d3: e9 a8 d6 fe ff jmpq 511980 : ; : : create_mv_target: : qualified_name opt_column_list opt_reloptions OptTableSpace : { : $$ = makeNode(IntoClause); 0.00 : 5242d8: 48 8b 3d 81 65 69 00 mov 0x696581(%rip),%rdi # bba860 0.00 : 5242df: be 40 00 00 00 mov $0x40,%esi 0.00 : 5242e4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5242eb: e8 20 4b 27 00 callq 798e10 0.00 : 5242f0: c7 00 59 01 00 00 movl $0x159,(%rax) : $$->rel = $1; 0.00 : 5242f6: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : ; : : create_mv_target: : qualified_name opt_column_list opt_reloptions OptTableSpace : { : $$ = makeNode(IntoClause); 0.00 : 5242fd: 49 89 c6 mov %rax,%r14 : $$->rel = $1; 0.00 : 524300: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 524304: 49 89 46 08 mov %rax,0x8(%r14) : $$->colNames = $2; 0.00 : 524308: 48 8b 46 f0 mov -0x10(%rsi),%rax 0.00 : 52430c: 49 89 46 10 mov %rax,0x10(%r14) : $$->options = $3; 0.00 : 524310: 48 8b 46 f8 mov -0x8(%rsi),%rax : $$->onCommit = ONCOMMIT_NOOP; 0.00 : 524314: 41 c7 46 20 00 00 00 movl $0x0,0x20(%r14) 0.00 : 52431b: 00 : qualified_name opt_column_list opt_reloptions OptTableSpace : { : $$ = makeNode(IntoClause); : $$->rel = $1; : $$->colNames = $2; : $$->options = $3; 0.00 : 52431c: 49 89 46 18 mov %rax,0x18(%r14) : $$->onCommit = ONCOMMIT_NOOP; : $$->tableSpaceName = $4; 0.00 : 524320: 48 8b 06 mov (%rsi),%rax : $$->viewQuery = NULL; /* filled at analysis time */ 0.00 : 524323: 49 c7 46 30 00 00 00 movq $0x0,0x30(%r14) 0.00 : 52432a: 00 : $$->skipData = false; /* might get changed later */ 0.00 : 52432b: 41 c6 46 38 00 movb $0x0,0x38(%r14) : $$ = makeNode(IntoClause); : $$->rel = $1; : $$->colNames = $2; : $$->options = $3; : $$->onCommit = ONCOMMIT_NOOP; : $$->tableSpaceName = $4; 0.00 : 524330: 49 89 46 28 mov %rax,0x28(%r14) : $$->viewQuery = NULL; /* filled at analysis time */ : $$->skipData = false; /* might get changed later */ : } : ; 0.00 : 524334: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52433b: e9 40 d6 fe ff jmpq 511980 : *****************************************************************************/ : : CreateMatViewStmt: : CREATE OptNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); 0.00 : 524340: 48 8b 3d 19 65 69 00 mov 0x696519(%rip),%rdi # bba860 0.00 : 524347: be 20 00 00 00 mov $0x20,%esi 0.00 : 52434c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524353: e8 b8 4a 27 00 callq 798e10 0.00 : 524358: c7 00 e3 02 00 00 movl $0x2e3,(%rax) : ctas->query = $7; 0.00 : 52435e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : ctas->relkind = OBJECT_MATVIEW; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $5->rel->relpersistence = $2; : $5->skipData = !($8); : $$ = (Node *) ctas; 0.00 : 524365: 49 89 c6 mov %rax,%r14 : : CreateMatViewStmt: : CREATE OptNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ctas->query = $7; 0.00 : 524368: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52436c: 48 89 50 08 mov %rdx,0x8(%rax) : ctas->into = $5; 0.00 : 524370: 48 8b 51 e8 mov -0x18(%rcx),%rdx : ctas->relkind = OBJECT_MATVIEW; 0.00 : 524374: c7 40 18 12 00 00 00 movl $0x12,0x18(%rax) : ctas->is_select_into = false; 0.00 : 52437b: c6 40 1c 00 movb $0x0,0x1c(%rax) : CreateMatViewStmt: : CREATE OptNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ctas->query = $7; : ctas->into = $5; 0.00 : 52437f: 48 89 50 10 mov %rdx,0x10(%rax) : ctas->relkind = OBJECT_MATVIEW; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $5->rel->relpersistence = $2; 0.00 : 524383: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52438a: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 52438e: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 524392: 8b 53 d0 mov -0x30(%rbx),%edx 0.00 : 524395: 88 51 24 mov %dl,0x24(%rcx) : $5->skipData = !($8); 0.00 : 524398: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 52439b: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 52439f: 0f 94 42 38 sete 0x38(%rdx) : $$ = (Node *) ctas; : } : ; 0.00 : 5243a3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5243aa: e9 d1 d5 fe ff jmpq 511980 : ; : : opt_with_data: : WITH DATA_P { $$ = TRUE; } : | WITH NO DATA_P { $$ = FALSE; } : | /*EMPTY*/ { $$ = TRUE; } 0.00 : 5243af: 41 b6 01 mov $0x1,%r14b : ; 0.00 : 5243b2: e9 c9 d5 fe ff jmpq 511980 : } : ; : : opt_with_data: : WITH DATA_P { $$ = TRUE; } : | WITH NO DATA_P { $$ = FALSE; } 0.00 : 5243b7: 45 30 f6 xor %r14b,%r14b : | /*EMPTY*/ { $$ = TRUE; } 0.00 : 5243ba: e9 c1 d5 fe ff jmpq 511980 : $$->skipData = false; /* might get changed later */ : } : ; : : opt_with_data: : WITH DATA_P { $$ = TRUE; } 0.00 : 5243bf: 41 b6 01 mov $0x1,%r14b : | WITH NO DATA_P { $$ = FALSE; } 0.00 : 5243c2: e9 b9 d5 fe ff jmpq 511980 : ; : : create_as_target: : qualified_name opt_column_list OptWith OnCommitOption OptTableSpace : { : $$ = makeNode(IntoClause); 0.00 : 5243c7: 48 8b 3d 92 64 69 00 mov 0x696492(%rip),%rdi # bba860 0.00 : 5243ce: be 40 00 00 00 mov $0x40,%esi 0.00 : 5243d3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5243da: e8 31 4a 27 00 callq 798e10 0.00 : 5243df: c7 00 59 01 00 00 movl $0x159,(%rax) : $$->rel = $1; 0.00 : 5243e5: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : ; : : create_as_target: : qualified_name opt_column_list OptWith OnCommitOption OptTableSpace : { : $$ = makeNode(IntoClause); 0.00 : 5243ec: 49 89 c6 mov %rax,%r14 : $$->rel = $1; 0.00 : 5243ef: 48 8b 46 e0 mov -0x20(%rsi),%rax 0.00 : 5243f3: 49 89 46 08 mov %rax,0x8(%r14) : $$->colNames = $2; 0.00 : 5243f7: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 5243fb: 49 89 46 10 mov %rax,0x10(%r14) : $$->options = $3; 0.00 : 5243ff: 48 8b 46 f0 mov -0x10(%rsi),%rax 0.00 : 524403: 49 89 46 18 mov %rax,0x18(%r14) : $$->onCommit = $4; 0.00 : 524407: 8b 46 f8 mov -0x8(%rsi),%eax 0.00 : 52440a: 41 89 46 20 mov %eax,0x20(%r14) : $$->tableSpaceName = $5; 0.00 : 52440e: 48 8b 06 mov (%rsi),%rax : $$->viewQuery = NULL; 0.00 : 524411: 49 c7 46 30 00 00 00 movq $0x0,0x30(%r14) 0.00 : 524418: 00 : $$->skipData = false; /* might get changed later */ 0.00 : 524419: 41 c6 46 38 00 movb $0x0,0x38(%r14) : $$ = makeNode(IntoClause); : $$->rel = $1; : $$->colNames = $2; : $$->options = $3; : $$->onCommit = $4; : $$->tableSpaceName = $5; 0.00 : 52441e: 49 89 46 28 mov %rax,0x28(%r14) : $$->viewQuery = NULL; : $$->skipData = false; /* might get changed later */ : } : ; 0.00 : 524422: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524429: e9 52 d5 fe ff jmpq 511980 : *****************************************************************************/ : : CreateAsStmt: : CREATE OptTemp TABLE create_as_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); 0.00 : 52442e: 48 8b 3d 2b 64 69 00 mov 0x69642b(%rip),%rdi # bba860 0.00 : 524435: be 20 00 00 00 mov $0x20,%esi 0.00 : 52443a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524441: e8 ca 49 27 00 callq 798e10 0.00 : 524446: c7 00 e3 02 00 00 movl $0x2e3,(%rax) : ctas->query = $6; 0.00 : 52444c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : ctas->relkind = OBJECT_TABLE; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $4->rel->relpersistence = $2; : $4->skipData = !($7); : $$ = (Node *) ctas; 0.00 : 524453: 49 89 c6 mov %rax,%r14 : : CreateAsStmt: : CREATE OptTemp TABLE create_as_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ctas->query = $6; 0.00 : 524456: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52445a: 48 89 50 08 mov %rdx,0x8(%rax) : ctas->into = $4; 0.00 : 52445e: 48 8b 51 e8 mov -0x18(%rcx),%rdx : ctas->relkind = OBJECT_TABLE; 0.00 : 524462: c7 40 18 1b 00 00 00 movl $0x1b,0x18(%rax) : ctas->is_select_into = false; 0.00 : 524469: c6 40 1c 00 movb $0x0,0x1c(%rax) : CreateAsStmt: : CREATE OptTemp TABLE create_as_target AS SelectStmt opt_with_data : { : CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); : ctas->query = $6; : ctas->into = $4; 0.00 : 52446d: 48 89 50 10 mov %rdx,0x10(%rax) : ctas->relkind = OBJECT_TABLE; : ctas->is_select_into = false; : /* cram additional flags into the IntoClause */ : $4->rel->relpersistence = $2; 0.00 : 524471: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 524478: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 52447c: 48 8b 4a 08 mov 0x8(%rdx),%rcx 0.00 : 524480: 8b 53 d8 mov -0x28(%rbx),%edx 0.00 : 524483: 88 51 24 mov %dl,0x24(%rcx) : $4->skipData = !($7); 0.00 : 524486: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 524489: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 52448d: 0f 94 42 38 sete 0x38(%rdx) : $$ = (Node *) ctas; : } : ; 0.00 : 524491: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524498: e9 e3 d4 fe ff jmpq 511980 : : OptConsTableSpace: USING INDEX TABLESPACE name { $$ = $4; } : | /*EMPTY*/ { $$ = NULL; } : ; : : ExistingIndex: USING INDEX index_name { $$ = $3; } 0.00 : 52449d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5244a4: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 5244a7: e9 d4 d4 fe ff jmpq 511980 : OptTableSpace: TABLESPACE name { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } : ; : : OptConsTableSpace: USING INDEX TABLESPACE name { $$ = $4; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5244ac: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5244af: e9 cc d4 fe ff jmpq 511980 : : OptTableSpace: TABLESPACE name { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } : ; : : OptConsTableSpace: USING INDEX TABLESPACE name { $$ = $4; } 0.00 : 5244b4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5244bb: 4c 8b 36 mov (%rsi),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5244be: e9 bd d4 fe ff jmpq 511980 : | ON COMMIT PRESERVE ROWS { $$ = ONCOMMIT_PRESERVE_ROWS; } : | /*EMPTY*/ { $$ = ONCOMMIT_NOOP; } : ; : : OptTableSpace: TABLESPACE name { $$ = $2; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5244c3: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5244c6: e9 b5 d4 fe ff jmpq 511980 : | ON COMMIT DELETE_P ROWS { $$ = ONCOMMIT_DELETE_ROWS; } : | ON COMMIT PRESERVE ROWS { $$ = ONCOMMIT_PRESERVE_ROWS; } : | /*EMPTY*/ { $$ = ONCOMMIT_NOOP; } : ; : : OptTableSpace: TABLESPACE name { $$ = $2; } 0.00 : 5244cb: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5244d2: 4c 8b 33 mov (%rbx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 5244d5: e9 a6 d4 fe ff jmpq 511980 : ; : : OnCommitOption: ON COMMIT DROP { $$ = ONCOMMIT_DROP; } : | ON COMMIT DELETE_P ROWS { $$ = ONCOMMIT_DELETE_ROWS; } : | ON COMMIT PRESERVE ROWS { $$ = ONCOMMIT_PRESERVE_ROWS; } : | /*EMPTY*/ { $$ = ONCOMMIT_NOOP; } 0.00 : 5244da: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 5244e1: ff ff ff 0.00 : 5244e4: 49 21 ce and %rcx,%r14 : ; 0.00 : 5244e7: e9 94 d4 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : OnCommitOption: ON COMMIT DROP { $$ = ONCOMMIT_DROP; } : | ON COMMIT DELETE_P ROWS { $$ = ONCOMMIT_DELETE_ROWS; } : | ON COMMIT PRESERVE ROWS { $$ = ONCOMMIT_PRESERVE_ROWS; } 0.00 : 5244ec: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5244f3: ff ff ff 0.00 : 5244f6: 49 21 d6 and %rdx,%r14 0.00 : 5244f9: 49 83 ce 01 or $0x1,%r14 : | /*EMPTY*/ { $$ = ONCOMMIT_NOOP; } 0.00 : 5244fd: e9 7e d4 fe ff jmpq 511980 : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } : | /*EMPTY*/ { $$ = NIL; } : ; : : OnCommitOption: ON COMMIT DROP { $$ = ONCOMMIT_DROP; } : | ON COMMIT DELETE_P ROWS { $$ = ONCOMMIT_DELETE_ROWS; } 0.00 : 524502: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 524509: ff ff ff 0.00 : 52450c: 49 21 c6 and %rax,%r14 0.00 : 52450f: 49 83 ce 02 or $0x2,%r14 : | ON COMMIT PRESERVE ROWS { $$ = ONCOMMIT_PRESERVE_ROWS; } 0.00 : 524513: e9 68 d4 fe ff jmpq 511980 : | WITH OIDS { $$ = list_make1(defWithOids(true)); } : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } : | /*EMPTY*/ { $$ = NIL; } : ; : : OnCommitOption: ON COMMIT DROP { $$ = ONCOMMIT_DROP; } 0.00 : 524518: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 52451f: ff ff ff 0.00 : 524522: 49 21 f6 and %rsi,%r14 0.00 : 524525: 49 83 ce 03 or $0x3,%r14 : | ON COMMIT DELETE_P ROWS { $$ = ONCOMMIT_DELETE_ROWS; } 0.00 : 524529: e9 52 d4 fe ff jmpq 511980 : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } : | WITH OIDS { $$ = list_make1(defWithOids(true)); } : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 52452e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 524531: e9 4a d4 fe ff jmpq 511980 : : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } : | WITH OIDS { $$ = list_make1(defWithOids(true)); } : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } 0.00 : 524536: 31 ff xor %edi,%edi 0.00 : 524538: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52453f: e8 dc 9a 03 00 callq 55e020 0.00 : 524544: 31 f6 xor %esi,%esi 0.00 : 524546: 48 89 c7 mov %rax,%rdi 0.00 : 524549: e8 02 d3 0b 00 callq 5e1850 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 52454e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } : | WITH OIDS { $$ = list_make1(defWithOids(true)); } : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } 0.00 : 524555: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 524558: e9 23 d4 fe ff jmpq 511980 : ; : : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } : | WITH OIDS { $$ = list_make1(defWithOids(true)); } 0.00 : 52455d: bf 01 00 00 00 mov $0x1,%edi 0.00 : 524562: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524569: e8 b2 9a 03 00 callq 55e020 0.00 : 52456e: 31 f6 xor %esi,%esi 0.00 : 524570: 48 89 c7 mov %rax,%rdi 0.00 : 524573: e8 d8 d2 0b 00 callq 5e1850 : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } 0.00 : 524578: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } : | WITH OIDS { $$ = list_make1(defWithOids(true)); } 0.00 : 52457f: 49 89 c6 mov %rax,%r14 : | WITHOUT OIDS { $$ = list_make1(defWithOids(false)); } 0.00 : 524582: e9 f9 d3 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : /* WITH (options) is preferred, WITH OIDS and WITHOUT OIDS are legacy forms */ : OptWith: : WITH reloptions { $$ = $2; } 0.00 : 524587: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52458e: 4c 8b 33 mov (%rbx),%r14 : | WITH OIDS { $$ = list_make1(defWithOids(true)); } 0.00 : 524591: e9 ea d3 fe ff jmpq 511980 : | SET NULL_P { $$ = FKCONSTR_ACTION_SETNULL; } : | SET DEFAULT { $$ = FKCONSTR_ACTION_SETDEFAULT; } : ; : : OptInherit: INHERITS '(' qualified_name_list ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 524596: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 524599: e9 e2 d3 fe ff jmpq 511980 : | CASCADE { $$ = FKCONSTR_ACTION_CASCADE; } : | SET NULL_P { $$ = FKCONSTR_ACTION_SETNULL; } : | SET DEFAULT { $$ = FKCONSTR_ACTION_SETDEFAULT; } : ; : : OptInherit: INHERITS '(' qualified_name_list ')' { $$ = $3; } 0.00 : 52459e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5245a5: 4c 8b 71 f8 mov -0x8(%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5245a9: e9 d2 d3 fe ff jmpq 511980 : key_action: : NO ACTION { $$ = FKCONSTR_ACTION_NOACTION; } : | RESTRICT { $$ = FKCONSTR_ACTION_RESTRICT; } : | CASCADE { $$ = FKCONSTR_ACTION_CASCADE; } : | SET NULL_P { $$ = FKCONSTR_ACTION_SETNULL; } : | SET DEFAULT { $$ = FKCONSTR_ACTION_SETDEFAULT; } 0.00 : 5245ae: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5245b5: ff ff ff 0.00 : 5245b8: 49 21 d6 and %rdx,%r14 0.00 : 5245bb: 49 83 ce 64 or $0x64,%r14 : ; 0.00 : 5245bf: e9 bc d3 fe ff jmpq 511980 : : key_action: : NO ACTION { $$ = FKCONSTR_ACTION_NOACTION; } : | RESTRICT { $$ = FKCONSTR_ACTION_RESTRICT; } : | CASCADE { $$ = FKCONSTR_ACTION_CASCADE; } : | SET NULL_P { $$ = FKCONSTR_ACTION_SETNULL; } 0.00 : 5245c4: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5245cb: ff ff ff 0.00 : 5245ce: 49 21 c6 and %rax,%r14 0.00 : 5245d1: 49 83 ce 6e or $0x6e,%r14 : | SET DEFAULT { $$ = FKCONSTR_ACTION_SETDEFAULT; } 0.00 : 5245d5: e9 a6 d3 fe ff jmpq 511980 : ; : : key_action: : NO ACTION { $$ = FKCONSTR_ACTION_NOACTION; } : | RESTRICT { $$ = FKCONSTR_ACTION_RESTRICT; } : | CASCADE { $$ = FKCONSTR_ACTION_CASCADE; } 0.00 : 5245da: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5245e1: ff ff ff 0.00 : 5245e4: 49 21 f6 and %rsi,%r14 0.00 : 5245e7: 49 83 ce 63 or $0x63,%r14 : | SET NULL_P { $$ = FKCONSTR_ACTION_SETNULL; } 0.00 : 5245eb: e9 90 d3 fe ff jmpq 511980 : key_delete: ON DELETE_P key_action { $$ = $3; } : ; : : key_action: : NO ACTION { $$ = FKCONSTR_ACTION_NOACTION; } : | RESTRICT { $$ = FKCONSTR_ACTION_RESTRICT; } 0.00 : 5245f0: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5245f7: ff ff ff 0.00 : 5245fa: 49 21 de and %rbx,%r14 0.00 : 5245fd: 49 83 ce 72 or $0x72,%r14 : | CASCADE { $$ = FKCONSTR_ACTION_CASCADE; } 0.00 : 524601: e9 7a d3 fe ff jmpq 511980 : : key_delete: ON DELETE_P key_action { $$ = $3; } : ; : : key_action: : NO ACTION { $$ = FKCONSTR_ACTION_NOACTION; } 0.00 : 524606: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 52460d: ff ff ff 0.00 : 524610: 49 21 ce and %rcx,%r14 0.00 : 524613: 49 83 ce 61 or $0x61,%r14 : | RESTRICT { $$ = FKCONSTR_ACTION_RESTRICT; } 0.00 : 524617: e9 64 d3 fe ff jmpq 511980 : ; : : key_update: ON UPDATE key_action { $$ = $3; } : ; : : key_delete: ON DELETE_P key_action { $$ = $3; } 0.00 : 52461c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 524623: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 52462a: ff ff ff 0.00 : 52462d: 49 21 d6 and %rdx,%r14 0.00 : 524630: 8b 06 mov (%rsi),%eax 0.00 : 524632: 49 09 c6 or %rax,%r14 : ; 0.00 : 524635: e9 46 d3 fe ff jmpq 511980 : { $$ = ($2 << 8) | ($1 & 0xFF); } : | /*EMPTY*/ : { $$ = (FKCONSTR_ACTION_NOACTION << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } : ; : : key_update: ON UPDATE key_action { $$ = $3; } 0.00 : 52463a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524641: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 524648: ff ff ff 0.00 : 52464b: 49 21 de and %rbx,%r14 0.00 : 52464e: 8b 01 mov (%rcx),%eax 0.00 : 524650: 49 09 c6 or %rax,%r14 : ; 0.00 : 524653: e9 28 d3 fe ff jmpq 511980 : | key_update key_delete : { $$ = ($1 << 8) | ($2 & 0xFF); } : | key_delete key_update : { $$ = ($2 << 8) | ($1 & 0xFF); } : | /*EMPTY*/ : { $$ = (FKCONSTR_ACTION_NOACTION << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } 0.00 : 524658: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 52465f: ff ff ff 0.00 : 524662: 49 21 d6 and %rdx,%r14 0.00 : 524665: 49 81 ce 61 61 00 00 or $0x6161,%r14 : ; 0.00 : 52466c: e9 0f d3 fe ff jmpq 511980 : | key_delete : { $$ = (FKCONSTR_ACTION_NOACTION << 8) | ($1 & 0xFF); } : | key_update key_delete : { $$ = ($1 << 8) | ($2 & 0xFF); } : | key_delete key_update : { $$ = ($2 << 8) | ($1 & 0xFF); } 0.00 : 524671: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 524678: 0f b6 56 f8 movzbl -0x8(%rsi),%edx 0.00 : 52467c: 8b 06 mov (%rsi),%eax 0.00 : 52467e: c1 e0 08 shl $0x8,%eax 0.00 : 524681: 09 c2 or %eax,%edx 0.00 : 524683: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 52468a: ff ff ff 0.00 : 52468d: 49 21 c6 and %rax,%r14 0.00 : 524690: 49 09 d6 or %rdx,%r14 : | /*EMPTY*/ 0.00 : 524693: e9 e8 d2 fe ff jmpq 511980 : key_update : { $$ = ($1 << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } : | key_delete : { $$ = (FKCONSTR_ACTION_NOACTION << 8) | ($1 & 0xFF); } : | key_update key_delete : { $$ = ($1 << 8) | ($2 & 0xFF); } 0.00 : 524698: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52469f: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5246a6: ff ff ff 0.00 : 5246a9: 49 21 de and %rbx,%r14 0.00 : 5246ac: 0f b6 11 movzbl (%rcx),%edx 0.00 : 5246af: 8b 41 f8 mov -0x8(%rcx),%eax 0.00 : 5246b2: c1 e0 08 shl $0x8,%eax 0.00 : 5246b5: 09 c2 or %eax,%edx 0.00 : 5246b7: 49 09 d6 or %rdx,%r14 : | key_delete key_update 0.00 : 5246ba: e9 c1 d2 fe ff jmpq 511980 : */ : key_actions: : key_update : { $$ = ($1 << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } : | key_delete : { $$ = (FKCONSTR_ACTION_NOACTION << 8) | ($1 & 0xFF); } 0.00 : 5246bf: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5246c6: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 5246cd: ff ff ff 0.00 : 5246d0: 49 21 d6 and %rdx,%r14 0.00 : 5246d3: 0f b6 06 movzbl (%rsi),%eax 0.00 : 5246d6: 80 cc 61 or $0x61,%ah 0.00 : 5246d9: 49 09 c6 or %rax,%r14 : | key_update key_delete 0.00 : 5246dc: e9 9f d2 fe ff jmpq 511980 : * calling production. update is in the left 8 bits, delete in the right. : * Note that NOACTION is the default. : */ : key_actions: : key_update : { $$ = ($1 << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); } 0.00 : 5246e1: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5246e8: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5246ef: ff ff ff 0.00 : 5246f2: 49 21 de and %rbx,%r14 0.00 : 5246f5: 8b 01 mov (%rcx),%eax 0.00 : 5246f7: c1 e0 08 shl $0x8,%eax 0.00 : 5246fa: 83 c8 61 or $0x61,%eax 0.00 : 5246fd: 89 c0 mov %eax,%eax 0.00 : 5246ff: 49 09 c6 or %rax,%r14 : | key_delete 0.00 : 524702: e9 79 d2 fe ff jmpq 511980 : } : ; : : ExclusionWhereClause: : WHERE '(' a_expr ')' { $$ = $3; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 524707: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 52470a: e9 71 d2 fe ff jmpq 511980 : $$ = list_make2($1, $5); : } : ; : : ExclusionWhereClause: : WHERE '(' a_expr ')' { $$ = $3; } 0.00 : 52470f: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 524716: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : | /*EMPTY*/ { $$ = NULL; } 0.00 : 52471a: e9 61 d2 fe ff jmpq 511980 : $$ = list_make2($1, $3); : } : /* allow OPERATOR() decoration for the benefit of ruleutils.c */ : | index_elem WITH OPERATOR '(' any_operator ')' : { : $$ = list_make2($1, $5); 0.00 : 52471f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 524726: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 52472a: 31 f6 xor %esi,%esi 0.00 : 52472c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524733: e8 18 d1 0b 00 callq 5e1850 0.00 : 524738: 48 89 c6 mov %rax,%rsi 0.00 : 52473b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524742: 48 8b 78 d8 mov -0x28(%rax),%rdi 0.00 : 524746: e8 05 d1 0b 00 callq 5e1850 : } : ; 0.00 : 52474b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = list_make2($1, $3); : } : /* allow OPERATOR() decoration for the benefit of ruleutils.c */ : | index_elem WITH OPERATOR '(' any_operator ')' : { : $$ = list_make2($1, $5); 0.00 : 524752: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 524755: e9 26 d2 fe ff jmpq 511980 : { $$ = lappend($1, $3); } : ; : : ExclusionConstraintElem: index_elem WITH any_operator : { : $$ = list_make2($1, $3); 0.00 : 52475a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524761: 31 f6 xor %esi,%esi 0.00 : 524763: 48 8b 39 mov (%rcx),%rdi 0.00 : 524766: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52476d: e8 de d0 0b 00 callq 5e1850 0.00 : 524772: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 524779: 48 89 c6 mov %rax,%rsi 0.00 : 52477c: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 524780: e8 cb d0 0b 00 callq 5e1850 : } : /* allow OPERATOR() decoration for the benefit of ruleutils.c */ 0.00 : 524785: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { $$ = lappend($1, $3); } : ; : : ExclusionConstraintElem: index_elem WITH any_operator : { : $$ = list_make2($1, $3); 0.00 : 52478c: 49 89 c6 mov %rax,%r14 : } : /* allow OPERATOR() decoration for the benefit of ruleutils.c */ 0.00 : 52478f: e9 ec d1 fe ff jmpq 511980 : ; : : ExclusionConstraintList: : ExclusionConstraintElem { $$ = list_make1($1); } : | ExclusionConstraintList ',' ExclusionConstraintElem : { $$ = lappend($1, $3); } 0.00 : 524794: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52479b: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 52479f: 48 8b 32 mov (%rdx),%rsi 0.00 : 5247a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5247a9: e8 d2 d6 0b 00 callq 5e1e80 : ; 0.00 : 5247ae: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : ExclusionConstraintList: : ExclusionConstraintElem { $$ = list_make1($1); } : | ExclusionConstraintList ',' ExclusionConstraintElem : { $$ = lappend($1, $3); } 0.00 : 5247b5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5247b8: e9 c3 d1 fe ff jmpq 511980 : $$ = FKCONSTR_MATCH_SIMPLE; : } : ; : : ExclusionConstraintList: : ExclusionConstraintElem { $$ = list_make1($1); } 0.00 : 5247bd: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5247c4: 31 f6 xor %esi,%esi 0.00 : 5247c6: 48 8b 38 mov (%rax),%rdi 0.00 : 5247c9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5247d0: e8 7b d0 0b 00 callq 5e1850 : | ExclusionConstraintList ',' ExclusionConstraintElem 0.00 : 5247d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = FKCONSTR_MATCH_SIMPLE; : } : ; : : ExclusionConstraintList: : ExclusionConstraintElem { $$ = list_make1($1); } 0.00 : 5247dc: 49 89 c6 mov %rax,%r14 : | ExclusionConstraintList ',' ExclusionConstraintElem 0.00 : 5247df: e9 9c d1 fe ff jmpq 511980 : { : $$ = FKCONSTR_MATCH_SIMPLE; : } : | /*EMPTY*/ : { : $$ = FKCONSTR_MATCH_SIMPLE; 0.00 : 5247e4: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 5247eb: ff ff ff 0.00 : 5247ee: 49 21 de and %rbx,%r14 0.00 : 5247f1: 49 83 ce 73 or $0x73,%r14 : } : ; 0.00 : 5247f5: e9 86 d1 fe ff jmpq 511980 : parser_errposition(@1))); : $$ = FKCONSTR_MATCH_PARTIAL; : } : | MATCH SIMPLE : { : $$ = FKCONSTR_MATCH_SIMPLE; 0.00 : 5247fa: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 524801: ff ff ff 0.00 : 524804: 49 21 ce and %rcx,%r14 0.00 : 524807: 49 83 ce 73 or $0x73,%r14 : } : | /*EMPTY*/ 0.00 : 52480b: e9 70 d1 fe ff jmpq 511980 : { : $$ = FKCONSTR_MATCH_FULL; : } : | MATCH PARTIAL : { : ereport(ERROR, 0.00 : 524810: 45 31 c0 xor %r8d,%r8d 0.00 : 524813: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 524818: ba e8 0c 00 00 mov $0xce8,%edx 0.00 : 52481d: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 524822: bf 14 00 00 00 mov $0x14,%edi 0.00 : 524827: e8 94 62 25 00 callq 77aac0 0.00 : 52482c: 84 c0 test %al,%al 0.00 : 52482e: 0f 84 73 d7 fe ff je 511fa7 0.00 : 524834: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 52483b: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524842: 8b 7a fc mov -0x4(%rdx),%edi 0.00 : 524845: e8 56 94 fe ff callq 50dca0 0.00 : 52484a: bf 90 9f 7c 00 mov $0x7c9f90,%edi 0.00 : 52484f: 41 89 c4 mov %eax,%r12d 0.00 : 524852: 31 c0 xor %eax,%eax 0.00 : 524854: e8 47 80 25 00 callq 77c8a0 0.00 : 524859: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52485e: 89 c3 mov %eax,%ebx : { : TypeName *t = $1; : if ($6 != NIL) : { : if (list_length($6) != 1) : ereport(ERROR, 0.00 : 524860: e8 eb 84 25 00 callq 77cd50 0.00 : 524865: 44 89 e2 mov %r12d,%edx 0.00 : 524868: 89 c7 mov %eax,%edi 0.00 : 52486a: 89 de mov %ebx,%esi 0.00 : 52486c: 31 c0 xor %eax,%eax 0.00 : 52486e: e8 6d 5d 25 00 callq 77a5e0 0.00 : 524873: e9 2f d7 fe ff jmpq 511fa7 : } : ; : : key_match: MATCH FULL : { : $$ = FKCONSTR_MATCH_FULL; 0.00 : 524878: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 52487f: ff ff ff 0.00 : 524882: 49 21 c6 and %rax,%r14 0.00 : 524885: 49 83 ce 66 or $0x66,%r14 : } : | MATCH PARTIAL 0.00 : 524889: e9 f2 d0 fe ff jmpq 511980 : | columnList ',' columnElem { $$ = lappend($1, $3); } : ; : : columnElem: ColId : { : $$ = (Node *) makeString($1); 0.00 : 52488e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 524895: 48 8b 3e mov (%rsi),%rdi 0.00 : 524898: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52489f: e8 4c ae 0d 00 callq 5ff6f0 : } : ; 0.00 : 5248a4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | columnList ',' columnElem { $$ = lappend($1, $3); } : ; : : columnElem: ColId : { : $$ = (Node *) makeString($1); 0.00 : 5248ab: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 5248ae: e9 cd d0 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : columnList: : columnElem { $$ = list_make1($1); } : | columnList ',' columnElem { $$ = lappend($1, $3); } 0.00 : 5248b3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5248ba: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 5248be: 48 8b 33 mov (%rbx),%rsi 0.00 : 5248c1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5248c8: e8 b3 d5 0b 00 callq 5e1e80 : ; 0.00 : 5248cd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /*EMPTY*/ { $$ = NIL; } : ; : : columnList: : columnElem { $$ = list_make1($1); } : | columnList ',' columnElem { $$ = lappend($1, $3); } 0.00 : 5248d4: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5248d7: e9 a4 d0 fe ff jmpq 511980 : '(' columnList ')' { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : columnList: : columnElem { $$ = list_make1($1); } 0.00 : 5248dc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5248e3: 31 f6 xor %esi,%esi 0.00 : 5248e5: 48 8b 39 mov (%rcx),%rdi 0.00 : 5248e8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5248ef: e8 5c cf 0b 00 callq 5e1850 : | columnList ',' columnElem { $$ = lappend($1, $3); } 0.00 : 5248f4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : '(' columnList ')' { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } : ; : : columnList: : columnElem { $$ = list_make1($1); } 0.00 : 5248fb: 49 89 c6 mov %rax,%r14 : | columnList ',' columnElem { $$ = lappend($1, $3); } 0.00 : 5248fe: e9 7d d0 fe ff jmpq 511980 : | /* EMPTY */ { $$ = FALSE; } : ; : : opt_column_list: : '(' columnList ')' { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 524903: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 524906: e9 75 d0 fe ff jmpq 511980 : opt_no_inherit: NO INHERIT { $$ = TRUE; } : | /* EMPTY */ { $$ = FALSE; } : ; : : opt_column_list: : '(' columnList ')' { $$ = $2; } 0.00 : 52490b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 524912: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 524916: e9 65 d0 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_no_inherit: NO INHERIT { $$ = TRUE; } : | /* EMPTY */ { $$ = FALSE; } 0.00 : 52491b: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 52491e: e9 5d d0 fe ff jmpq 511980 : n->initially_valid = !n->skip_validation; : $$ = (Node *)n; : } : ; : : opt_no_inherit: NO INHERIT { $$ = TRUE; } 0.00 : 524923: 41 b6 01 mov $0x1,%r14b : | /* EMPTY */ { $$ = FALSE; } 0.00 : 524926: e9 55 d0 fe ff jmpq 511980 : $$ = (Node *)n; : } : | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name : opt_column_list key_match key_actions ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 52492b: 48 8b 3d 2e 5f 69 00 mov 0x695f2e(%rip),%rdi # bba860 0.00 : 524932: be 98 00 00 00 mov $0x98,%esi 0.00 : 524937: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52493e: e8 cd 44 27 00 callq 798e10 0.00 : 524943: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_FOREIGN; 0.00 : 524949: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : $$ = (Node *)n; : } : | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name : opt_column_list key_match key_actions ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524950: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_FOREIGN; : n->location = @1; 0.00 : 524953: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->fk_attrs = $4; : n->pk_attrs = $8; : n->fk_matchtype = $9; : n->fk_upd_action = (char) ($10 >> 8); : n->fk_del_action = (char) ($10 & 0xFF); : processCASbits($11, @11, "FOREIGN KEY", 0.00 : 52495a: 4c 8d 8b 94 00 00 00 lea 0x94(%rbx),%r9 0.00 : 524961: 4c 8d 43 11 lea 0x11(%rbx),%r8 : &n->deferrable, &n->initdeferred, : &n->skip_validation, NULL, : yyscanner); : n->initially_valid = !n->skip_validation; : $$ = (Node *)n; 0.00 : 524965: 49 89 de mov %rbx,%r14 : | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name : opt_column_list key_match key_actions ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_FOREIGN; : n->location = @1; 0.00 : 524968: 8b 42 d8 mov -0x28(%rdx),%eax : n->fk_attrs = $4; : n->pk_attrs = $8; : n->fk_matchtype = $9; : n->fk_upd_action = (char) ($10 >> 8); : n->fk_del_action = (char) ($10 & 0xFF); : processCASbits($11, @11, "FOREIGN KEY", 0.00 : 52496b: ba dc 95 7c 00 mov $0x7c95dc,%edx : | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name : opt_column_list key_match key_actions ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_FOREIGN; : n->location = @1; 0.00 : 524970: 89 43 14 mov %eax,0x14(%rbx) : n->pktable = $7; 0.00 : 524973: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52497a: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 52497e: 48 89 43 68 mov %rax,0x68(%rbx) : n->fk_attrs = $4; 0.00 : 524982: 48 8b 41 c8 mov -0x38(%rcx),%rax 0.00 : 524986: 48 89 43 70 mov %rax,0x70(%rbx) : n->pk_attrs = $8; 0.00 : 52498a: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 52498e: 48 89 43 78 mov %rax,0x78(%rbx) : n->fk_matchtype = $9; 0.00 : 524992: 8b 41 f0 mov -0x10(%rcx),%eax 0.00 : 524995: 88 83 80 00 00 00 mov %al,0x80(%rbx) : n->fk_upd_action = (char) ($10 >> 8); 0.00 : 52499b: 8b 41 f8 mov -0x8(%rcx),%eax 0.00 : 52499e: c1 f8 08 sar $0x8,%eax 0.00 : 5249a1: 88 83 81 00 00 00 mov %al,0x81(%rbx) : n->fk_del_action = (char) ($10 & 0xFF); 0.00 : 5249a7: 8b 41 f8 mov -0x8(%rcx),%eax : processCASbits($11, @11, "FOREIGN KEY", 0.00 : 5249aa: 48 8d 4b 10 lea 0x10(%rbx),%rcx : n->pktable = $7; : n->fk_attrs = $4; : n->pk_attrs = $8; : n->fk_matchtype = $9; : n->fk_upd_action = (char) ($10 >> 8); : n->fk_del_action = (char) ($10 & 0xFF); 0.00 : 5249ae: 88 83 82 00 00 00 mov %al,0x82(%rbx) : processCASbits($11, @11, "FOREIGN KEY", 0.00 : 5249b4: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5249bb: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 5249c2: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 5249c9: 00 0.00 : 5249ca: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 5249cf: 8b 30 mov (%rax),%esi 0.00 : 5249d1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5249d8: 8b 38 mov (%rax),%edi 0.00 : 5249da: e8 31 94 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, : &n->skip_validation, NULL, : yyscanner); : n->initially_valid = !n->skip_validation; 0.00 : 5249df: 80 bb 94 00 00 00 00 cmpb $0x0,0x94(%rbx) 0.00 : 5249e6: 0f 94 83 95 00 00 00 sete 0x95(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 5249ed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5249f4: e9 87 cf fe ff jmpq 511980 : } : | EXCLUDE access_method_clause '(' ExclusionConstraintList ')' : opt_definition OptConsTableSpace ExclusionWhereClause : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 5249f9: 48 8b 3d 60 5e 69 00 mov 0x695e60(%rip),%rdi # bba860 0.00 : 524a00: be 98 00 00 00 mov $0x98,%esi 0.00 : 524a05: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524a0c: e8 ff 43 27 00 callq 798e10 0.00 : 524a11: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_EXCLUSION; 0.00 : 524a17: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : } : | EXCLUDE access_method_clause '(' ExclusionConstraintList ')' : opt_definition OptConsTableSpace ExclusionWhereClause : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524a1e: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_EXCLUSION; : n->location = @1; 0.00 : 524a21: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->exclusions = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; : n->where_clause = $8; : processCASbits($9, @9, "EXCLUDE", 0.00 : 524a28: 4c 8d 43 11 lea 0x11(%rbx),%r8 0.00 : 524a2c: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; 0.00 : 524a2f: 49 89 de mov %rbx,%r14 : opt_definition OptConsTableSpace ExclusionWhereClause : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_EXCLUSION; : n->location = @1; 0.00 : 524a32: 8b 42 e0 mov -0x20(%rdx),%eax : n->exclusions = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; : n->where_clause = $8; : processCASbits($9, @9, "EXCLUDE", 0.00 : 524a35: ba d4 95 7c 00 mov $0x7c95d4,%edx : opt_definition OptConsTableSpace ExclusionWhereClause : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_EXCLUSION; : n->location = @1; 0.00 : 524a3a: 89 43 14 mov %eax,0x14(%rbx) : n->access_method = $2; 0.00 : 524a3d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524a44: 48 8b 41 c8 mov -0x38(%rcx),%rax 0.00 : 524a48: 48 89 43 58 mov %rax,0x58(%rbx) : n->exclusions = $4; 0.00 : 524a4c: 48 8b 41 d8 mov -0x28(%rcx),%rax 0.00 : 524a50: 48 89 43 38 mov %rax,0x38(%rbx) : n->options = $6; 0.00 : 524a54: 48 8b 41 e8 mov -0x18(%rcx),%rax : n->indexname = NULL; 0.00 : 524a58: 48 c7 43 48 00 00 00 movq $0x0,0x48(%rbx) 0.00 : 524a5f: 00 : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_EXCLUSION; : n->location = @1; : n->access_method = $2; : n->exclusions = $4; : n->options = $6; 0.00 : 524a60: 48 89 43 40 mov %rax,0x40(%rbx) : n->indexname = NULL; : n->indexspace = $7; 0.00 : 524a64: 48 8b 41 f0 mov -0x10(%rcx),%rax 0.00 : 524a68: 48 89 43 50 mov %rax,0x50(%rbx) : n->where_clause = $8; 0.00 : 524a6c: 48 8b 41 f8 mov -0x8(%rcx),%rax : processCASbits($9, @9, "EXCLUDE", 0.00 : 524a70: 48 8d 4b 10 lea 0x10(%rbx),%rcx : n->access_method = $2; : n->exclusions = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; : n->where_clause = $8; 0.00 : 524a74: 48 89 43 60 mov %rax,0x60(%rbx) : processCASbits($9, @9, "EXCLUDE", 0.00 : 524a78: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524a7f: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524a86: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 524a8d: 00 0.00 : 524a8e: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524a93: 8b 30 mov (%rax),%esi 0.00 : 524a95: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524a9c: 8b 38 mov (%rax),%edi 0.00 : 524a9e: e8 6d 93 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; : } : | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name 0.00 : 524aa3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524aaa: e9 d1 ce fe ff jmpq 511980 : NULL, yyscanner); : $$ = (Node *)n; : } : | PRIMARY KEY ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524aaf: 48 8b 3d aa 5d 69 00 mov 0x695daa(%rip),%rdi # bba860 0.00 : 524ab6: be 98 00 00 00 mov $0x98,%esi 0.00 : 524abb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524ac2: e8 49 43 27 00 callq 798e10 0.00 : 524ac7: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_PRIMARY; 0.00 : 524acd: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : NULL, yyscanner); : $$ = (Node *)n; : } : | PRIMARY KEY ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524ad4: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524ad7: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->keys = NIL; : n->options = NIL; : n->indexname = $3; : n->indexspace = NULL; : processCASbits($4, @4, "PRIMARY KEY", 0.00 : 524ade: 4c 8d 43 11 lea 0x11(%rbx),%r8 0.00 : 524ae2: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; 0.00 : 524ae5: 49 89 de mov %rbx,%r14 : } : | PRIMARY KEY ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524ae8: 8b 42 f4 mov -0xc(%rdx),%eax : n->keys = NIL; 0.00 : 524aeb: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 524af2: 00 : n->options = NIL; : n->indexname = $3; : n->indexspace = NULL; : processCASbits($4, @4, "PRIMARY KEY", 0.00 : 524af3: ba c8 95 7c 00 mov $0x7c95c8,%edx : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; : n->keys = NIL; : n->options = NIL; 0.00 : 524af8: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 524aff: 00 : } : | PRIMARY KEY ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524b00: 89 43 14 mov %eax,0x14(%rbx) : n->keys = NIL; : n->options = NIL; : n->indexname = $3; 0.00 : 524b03: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524b0a: 48 8b 41 f8 mov -0x8(%rcx),%rax : n->indexspace = NULL; 0.00 : 524b0e: 48 c7 43 50 00 00 00 movq $0x0,0x50(%rbx) 0.00 : 524b15: 00 : processCASbits($4, @4, "PRIMARY KEY", 0.00 : 524b16: 48 8d 4b 10 lea 0x10(%rbx),%rcx : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; : n->keys = NIL; : n->options = NIL; : n->indexname = $3; 0.00 : 524b1a: 48 89 43 48 mov %rax,0x48(%rbx) : n->indexspace = NULL; : processCASbits($4, @4, "PRIMARY KEY", 0.00 : 524b1e: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524b25: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524b2c: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 524b33: 00 0.00 : 524b34: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524b39: 8b 30 mov (%rax),%esi 0.00 : 524b3b: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524b42: 8b 38 mov (%rax),%edi 0.00 : 524b44: e8 c7 92 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; : } : | EXCLUDE access_method_clause '(' ExclusionConstraintList ')' 0.00 : 524b49: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524b50: e9 2b ce fe ff jmpq 511980 : $$ = (Node *)n; : } : | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524b55: 48 8b 3d 04 5d 69 00 mov 0x695d04(%rip),%rdi # bba860 0.00 : 524b5c: be 98 00 00 00 mov $0x98,%esi 0.00 : 524b61: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524b68: e8 a3 42 27 00 callq 798e10 0.00 : 524b6d: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_PRIMARY; 0.00 : 524b73: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : $$ = (Node *)n; : } : | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524b7a: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524b7d: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->keys = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; : processCASbits($8, @8, "PRIMARY KEY", 0.00 : 524b84: 4c 8d 43 11 lea 0x11(%rbx),%r8 0.00 : 524b88: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; 0.00 : 524b8b: 49 89 de mov %rbx,%r14 : | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524b8e: 8b 42 e4 mov -0x1c(%rdx),%eax : n->keys = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; : processCASbits($8, @8, "PRIMARY KEY", 0.00 : 524b91: ba c8 95 7c 00 mov $0x7c95c8,%edx : | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 524b96: 89 43 14 mov %eax,0x14(%rbx) : n->keys = $4; 0.00 : 524b99: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524ba0: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 524ba4: 48 89 43 30 mov %rax,0x30(%rbx) : n->options = $6; 0.00 : 524ba8: 48 8b 41 f0 mov -0x10(%rcx),%rax : n->indexname = NULL; 0.00 : 524bac: 48 c7 43 48 00 00 00 movq $0x0,0x48(%rbx) 0.00 : 524bb3: 00 : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; : n->keys = $4; : n->options = $6; 0.00 : 524bb4: 48 89 43 40 mov %rax,0x40(%rbx) : n->indexname = NULL; : n->indexspace = $7; 0.00 : 524bb8: 48 8b 41 f8 mov -0x8(%rcx),%rax : processCASbits($8, @8, "PRIMARY KEY", 0.00 : 524bbc: 48 8d 4b 10 lea 0x10(%rbx),%rcx : n->contype = CONSTR_PRIMARY; : n->location = @1; : n->keys = $4; : n->options = $6; : n->indexname = NULL; : n->indexspace = $7; 0.00 : 524bc0: 48 89 43 50 mov %rax,0x50(%rbx) : processCASbits($8, @8, "PRIMARY KEY", 0.00 : 524bc4: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524bcb: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524bd2: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 524bd9: 00 0.00 : 524bda: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524bdf: 8b 30 mov (%rax),%esi 0.00 : 524be1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524be8: 8b 38 mov (%rax),%edi 0.00 : 524bea: e8 21 92 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; : } : | PRIMARY KEY ExistingIndex ConstraintAttributeSpec 0.00 : 524bef: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524bf6: e9 85 cd fe ff jmpq 511980 : NULL, yyscanner); : $$ = (Node *)n; : } : | UNIQUE ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524bfb: 48 8b 3d 5e 5c 69 00 mov 0x695c5e(%rip),%rdi # bba860 0.00 : 524c02: be 98 00 00 00 mov $0x98,%esi 0.00 : 524c07: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524c0e: e8 fd 41 27 00 callq 798e10 0.00 : 524c13: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_UNIQUE; 0.00 : 524c19: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : NULL, yyscanner); : $$ = (Node *)n; : } : | UNIQUE ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524c20: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524c23: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->keys = NIL; : n->options = NIL; : n->indexname = $2; : n->indexspace = NULL; : processCASbits($3, @3, "UNIQUE", 0.00 : 524c2a: 4c 8d 43 11 lea 0x11(%rbx),%r8 0.00 : 524c2e: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; 0.00 : 524c31: 49 89 de mov %rbx,%r14 : } : | UNIQUE ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524c34: 8b 42 f8 mov -0x8(%rdx),%eax : n->keys = NIL; 0.00 : 524c37: 48 c7 43 30 00 00 00 movq $0x0,0x30(%rbx) 0.00 : 524c3e: 00 : n->options = NIL; : n->indexname = $2; : n->indexspace = NULL; : processCASbits($3, @3, "UNIQUE", 0.00 : 524c3f: ba c1 95 7c 00 mov $0x7c95c1,%edx : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; : n->keys = NIL; : n->options = NIL; 0.00 : 524c44: 48 c7 43 40 00 00 00 movq $0x0,0x40(%rbx) 0.00 : 524c4b: 00 : } : | UNIQUE ExistingIndex ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524c4c: 89 43 14 mov %eax,0x14(%rbx) : n->keys = NIL; : n->options = NIL; : n->indexname = $2; 0.00 : 524c4f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524c56: 48 8b 41 f8 mov -0x8(%rcx),%rax : n->indexspace = NULL; 0.00 : 524c5a: 48 c7 43 50 00 00 00 movq $0x0,0x50(%rbx) 0.00 : 524c61: 00 : processCASbits($3, @3, "UNIQUE", 0.00 : 524c62: 48 8d 4b 10 lea 0x10(%rbx),%rcx : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; : n->keys = NIL; : n->options = NIL; : n->indexname = $2; 0.00 : 524c66: 48 89 43 48 mov %rax,0x48(%rbx) : n->indexspace = NULL; : processCASbits($3, @3, "UNIQUE", 0.00 : 524c6a: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524c71: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524c78: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 524c7f: 00 0.00 : 524c80: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524c85: 8b 30 mov (%rax),%esi 0.00 : 524c87: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524c8e: 8b 38 mov (%rax),%edi 0.00 : 524c90: e8 7b 91 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; : } : | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace 0.00 : 524c95: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524c9c: e9 df cc fe ff jmpq 511980 : $$ = (Node *)n; : } : | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524ca1: 48 8b 3d b8 5b 69 00 mov 0x695bb8(%rip),%rdi # bba860 0.00 : 524ca8: be 98 00 00 00 mov $0x98,%esi 0.00 : 524cad: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524cb4: e8 57 41 27 00 callq 798e10 0.00 : 524cb9: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_UNIQUE; 0.00 : 524cbf: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : $$ = (Node *)n; : } : | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524cc6: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524cc9: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->keys = $3; : n->options = $5; : n->indexname = NULL; : n->indexspace = $6; : processCASbits($7, @7, "UNIQUE", 0.00 : 524cd0: 4c 8d 43 11 lea 0x11(%rbx),%r8 0.00 : 524cd4: 45 31 c9 xor %r9d,%r9d : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; 0.00 : 524cd7: 49 89 de mov %rbx,%r14 : | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524cda: 8b 42 e8 mov -0x18(%rdx),%eax : n->keys = $3; : n->options = $5; : n->indexname = NULL; : n->indexspace = $6; : processCASbits($7, @7, "UNIQUE", 0.00 : 524cdd: ba c1 95 7c 00 mov $0x7c95c1,%edx : | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace : ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 524ce2: 89 43 14 mov %eax,0x14(%rbx) : n->keys = $3; 0.00 : 524ce5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524cec: 48 8b 41 e0 mov -0x20(%rcx),%rax 0.00 : 524cf0: 48 89 43 30 mov %rax,0x30(%rbx) : n->options = $5; 0.00 : 524cf4: 48 8b 41 f0 mov -0x10(%rcx),%rax : n->indexname = NULL; 0.00 : 524cf8: 48 c7 43 48 00 00 00 movq $0x0,0x48(%rbx) 0.00 : 524cff: 00 : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; : n->keys = $3; : n->options = $5; 0.00 : 524d00: 48 89 43 40 mov %rax,0x40(%rbx) : n->indexname = NULL; : n->indexspace = $6; 0.00 : 524d04: 48 8b 41 f8 mov -0x8(%rcx),%rax : processCASbits($7, @7, "UNIQUE", 0.00 : 524d08: 48 8d 4b 10 lea 0x10(%rbx),%rcx : n->contype = CONSTR_UNIQUE; : n->location = @1; : n->keys = $3; : n->options = $5; : n->indexname = NULL; : n->indexspace = $6; 0.00 : 524d0c: 48 89 43 50 mov %rax,0x50(%rbx) : processCASbits($7, @7, "UNIQUE", 0.00 : 524d10: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524d17: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524d1e: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 524d25: 00 0.00 : 524d26: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524d2b: 8b 30 mov (%rax),%esi 0.00 : 524d2d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524d34: 8b 38 mov (%rax),%edi 0.00 : 524d36: e8 d5 90 fe ff callq 50de10 : &n->deferrable, &n->initdeferred, NULL, : NULL, yyscanner); : $$ = (Node *)n; : } : | UNIQUE ExistingIndex ConstraintAttributeSpec 0.00 : 524d3b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524d42: e9 39 cc fe ff jmpq 511980 : ; : : ConstraintElem: : CHECK '(' a_expr ')' ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524d47: 48 8b 3d 12 5b 69 00 mov 0x695b12(%rip),%rdi # bba860 0.00 : 524d4e: be 98 00 00 00 mov $0x98,%esi 0.00 : 524d53: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524d5a: e8 b1 40 27 00 callq 798e10 0.00 : 524d5f: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_CHECK; 0.00 : 524d65: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : ; : : ConstraintElem: : CHECK '(' a_expr ')' ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); 0.00 : 524d6c: 48 89 c3 mov %rax,%rbx : n->contype = CONSTR_CHECK; : n->location = @1; 0.00 : 524d6f: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx : n->raw_expr = $3; : n->cooked_expr = NULL; : processCASbits($5, @5, "CHECK", 0.00 : 524d76: 4c 8d 8b 94 00 00 00 lea 0x94(%rbx),%r9 0.00 : 524d7d: 45 31 c0 xor %r8d,%r8d : NULL, NULL, &n->skip_validation, : &n->is_no_inherit, yyscanner); : n->initially_valid = !n->skip_validation; : $$ = (Node *)n; 0.00 : 524d80: 49 89 de mov %rbx,%r14 : ConstraintElem: : CHECK '(' a_expr ')' ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_CHECK; : n->location = @1; 0.00 : 524d83: 8b 42 f0 mov -0x10(%rdx),%eax : n->raw_expr = $3; : n->cooked_expr = NULL; : processCASbits($5, @5, "CHECK", 0.00 : 524d86: ba 9e 13 7c 00 mov $0x7c139e,%edx : ConstraintElem: : CHECK '(' a_expr ')' ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_CHECK; : n->location = @1; 0.00 : 524d8b: 89 43 14 mov %eax,0x14(%rbx) : n->raw_expr = $3; 0.00 : 524d8e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 524d95: 48 8b 41 f0 mov -0x10(%rcx),%rax : n->cooked_expr = NULL; 0.00 : 524d99: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 524da0: 00 : processCASbits($5, @5, "CHECK", 0.00 : 524da1: 31 c9 xor %ecx,%ecx : CHECK '(' a_expr ')' ConstraintAttributeSpec : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_CHECK; : n->location = @1; : n->raw_expr = $3; 0.00 : 524da3: 48 89 43 20 mov %rax,0x20(%rbx) : n->cooked_expr = NULL; : processCASbits($5, @5, "CHECK", 0.00 : 524da7: 48 8d 43 18 lea 0x18(%rbx),%rax 0.00 : 524dab: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 524db2: 48 89 04 24 mov %rax,(%rsp) 0.00 : 524db6: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 524dbd: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 524dc2: 8b 30 mov (%rax),%esi 0.00 : 524dc4: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 524dcb: 8b 38 mov (%rax),%edi 0.00 : 524dcd: e8 3e 90 fe ff callq 50de10 : NULL, NULL, &n->skip_validation, : &n->is_no_inherit, yyscanner); : n->initially_valid = !n->skip_validation; 0.00 : 524dd2: 80 bb 94 00 00 00 00 cmpb $0x0,0x94(%rbx) 0.00 : 524dd9: 0f 94 83 95 00 00 00 sete 0x95(%rbx) : $$ = (Node *)n; : } : | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace 0.00 : 524de0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524de7: e9 94 cb fe ff jmpq 511980 : Assert(IsA(n, Constraint)); : n->conname = $2; : n->location = @1; : $$ = (Node *) n; : } : | ConstraintElem { $$ = $1; } 0.00 : 524dec: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 524df3: 4c 8b 36 mov (%rsi),%r14 : ; 0.00 : 524df6: e9 85 cb fe ff jmpq 511980 : * - thomas 1997-12-03 : */ : TableConstraint: : CONSTRAINT name ConstraintElem : { : Constraint *n = (Constraint *) $3; 0.00 : 524dfb: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 524e02: 48 8b 02 mov (%rdx),%rax : Assert(IsA(n, Constraint)); : n->conname = $2; 0.00 : 524e05: 48 8b 52 f8 mov -0x8(%rdx),%rdx 0.00 : 524e09: 48 89 50 08 mov %rdx,0x8(%rax) : n->location = @1; 0.00 : 524e0d: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx : $$ = (Node *) n; 0.00 : 524e14: 49 89 c6 mov %rax,%r14 : CONSTRAINT name ConstraintElem : { : Constraint *n = (Constraint *) $3; : Assert(IsA(n, Constraint)); : n->conname = $2; : n->location = @1; 0.00 : 524e17: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 524e1a: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *) n; : } : | ConstraintElem { $$ = $1; } 0.00 : 524e1d: e9 5e cb fe ff jmpq 511980 : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } : | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } : | STORAGE { $$ = CREATE_TABLE_LIKE_STORAGE; } : | COMMENTS { $$ = CREATE_TABLE_LIKE_COMMENTS; } : | ALL { $$ = CREATE_TABLE_LIKE_ALL; } 0.00 : 524e22: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 524e29: ff ff ff 0.00 : 524e2c: 49 21 f6 and %rsi,%r14 0.00 : 524e2f: 49 81 ce ff ff ff 7f or $0x7fffffff,%r14 : ; 0.00 : 524e36: e9 45 cb fe ff jmpq 511980 : TableLikeOption: : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } : | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } : | STORAGE { $$ = CREATE_TABLE_LIKE_STORAGE; } : | COMMENTS { $$ = CREATE_TABLE_LIKE_COMMENTS; } 0.00 : 524e3b: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 524e42: ff ff ff 0.00 : 524e45: 49 21 de and %rbx,%r14 0.00 : 524e48: 49 83 ce 10 or $0x10,%r14 : | ALL { $$ = CREATE_TABLE_LIKE_ALL; } 0.00 : 524e4c: e9 2f cb fe ff jmpq 511980 : : TableLikeOption: : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } : | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } : | STORAGE { $$ = CREATE_TABLE_LIKE_STORAGE; } 0.00 : 524e51: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 524e58: ff ff ff 0.00 : 524e5b: 49 21 ce and %rcx,%r14 0.00 : 524e5e: 49 83 ce 08 or $0x8,%r14 : | COMMENTS { $$ = CREATE_TABLE_LIKE_COMMENTS; } 0.00 : 524e62: e9 19 cb fe ff jmpq 511980 : ; : : TableLikeOption: : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } : | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } 0.00 : 524e67: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 524e6e: ff ff ff 0.00 : 524e71: 49 21 d6 and %rdx,%r14 0.00 : 524e74: 49 83 ce 04 or $0x4,%r14 : | STORAGE { $$ = CREATE_TABLE_LIKE_STORAGE; } 0.00 : 524e78: e9 03 cb fe ff jmpq 511980 : | /* EMPTY */ { $$ = 0; } : ; : : TableLikeOption: : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } 0.00 : 524e7d: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 524e84: ff ff ff 0.00 : 524e87: 49 21 c6 and %rax,%r14 0.00 : 524e8a: 49 83 ce 02 or $0x2,%r14 : | INDEXES { $$ = CREATE_TABLE_LIKE_INDEXES; } 0.00 : 524e8e: e9 ed ca fe ff jmpq 511980 : | TableLikeOptionList EXCLUDING TableLikeOption { $$ = $1 & ~$3; } : | /* EMPTY */ { $$ = 0; } : ; : : TableLikeOption: : DEFAULTS { $$ = CREATE_TABLE_LIKE_DEFAULTS; } 0.00 : 524e93: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 524e9a: ff ff ff 0.00 : 524e9d: 49 21 f6 and %rsi,%r14 0.00 : 524ea0: 49 83 ce 01 or $0x1,%r14 : | CONSTRAINTS { $$ = CREATE_TABLE_LIKE_CONSTRAINTS; } 0.00 : 524ea4: e9 d7 ca fe ff jmpq 511980 : ; : : TableLikeOptionList: : TableLikeOptionList INCLUDING TableLikeOption { $$ = $1 | $3; } : | TableLikeOptionList EXCLUDING TableLikeOption { $$ = $1 & ~$3; } : | /* EMPTY */ { $$ = 0; } 0.00 : 524ea9: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 524eb0: ff ff ff 0.00 : 524eb3: 49 21 de and %rbx,%r14 : ; 0.00 : 524eb6: e9 c5 ca fe ff jmpq 511980 : } : ; : : TableLikeOptionList: : TableLikeOptionList INCLUDING TableLikeOption { $$ = $1 | $3; } : | TableLikeOptionList EXCLUDING TableLikeOption { $$ = $1 & ~$3; } 0.00 : 524ebb: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 524ec2: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 524ec9: ff ff ff 0.00 : 524ecc: 49 21 ce and %rcx,%r14 0.00 : 524ecf: 8b 02 mov (%rdx),%eax 0.00 : 524ed1: f7 d0 not %eax 0.00 : 524ed3: 23 42 f0 and -0x10(%rdx),%eax 0.00 : 524ed6: 49 09 c6 or %rax,%r14 : | /* EMPTY */ { $$ = 0; } 0.00 : 524ed9: e9 a2 ca fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : TableLikeOptionList: : TableLikeOptionList INCLUDING TableLikeOption { $$ = $1 | $3; } 0.00 : 524ede: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 524ee5: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 524eec: ff ff ff 0.00 : 524eef: 49 21 f6 and %rsi,%r14 0.00 : 524ef2: 8b 03 mov (%rbx),%eax 0.00 : 524ef4: 0b 43 f0 or -0x10(%rbx),%eax 0.00 : 524ef7: 49 09 c6 or %rax,%r14 : | TableLikeOptionList EXCLUDING TableLikeOption { $$ = $1 & ~$3; } 0.00 : 524efa: e9 81 ca fe ff jmpq 511980 : : : TableLikeClause: : LIKE qualified_name TableLikeOptionList : { : TableLikeClause *n = makeNode(TableLikeClause); 0.00 : 524eff: 48 8b 3d 5a 59 69 00 mov 0x69595a(%rip),%rdi # bba860 0.00 : 524f06: be 18 00 00 00 mov $0x18,%esi 0.00 : 524f0b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524f12: e8 f9 3e 27 00 callq 798e10 0.00 : 524f17: c7 00 a3 03 00 00 movl $0x3a3,(%rax) : n->relation = $2; 0.00 : 524f1d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->options = $3; : $$ = (Node *)n; 0.00 : 524f24: 49 89 c6 mov %rax,%r14 : : TableLikeClause: : LIKE qualified_name TableLikeOptionList : { : TableLikeClause *n = makeNode(TableLikeClause); : n->relation = $2; 0.00 : 524f27: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 524f2b: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $3; 0.00 : 524f2f: 8b 11 mov (%rcx),%edx 0.00 : 524f31: 89 50 10 mov %edx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 524f34: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524f3b: e9 40 ca fe ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | INITIALLY IMMEDIATE : { : Constraint *n = makeNode(Constraint); 0.00 : 524f40: 48 8b 3d 19 59 69 00 mov 0x695919(%rip),%rdi # bba860 0.00 : 524f47: be 98 00 00 00 mov $0x98,%esi 0.00 : 524f4c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524f53: e8 b8 3e 27 00 callq 798e10 0.00 : 524f58: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_ATTR_IMMEDIATE; 0.00 : 524f5e: c7 40 04 0b 00 00 00 movl $0xb,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 524f65: 49 89 c6 mov %rax,%r14 : } : | INITIALLY IMMEDIATE : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_ATTR_IMMEDIATE; : n->location = @1; 0.00 : 524f68: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 524f6f: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 524f72: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : ; 0.00 : 524f75: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524f7c: e9 ff c9 fe ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | INITIALLY DEFERRED : { : Constraint *n = makeNode(Constraint); 0.00 : 524f81: 48 8b 3d d8 58 69 00 mov 0x6958d8(%rip),%rdi # bba860 0.00 : 524f88: be 98 00 00 00 mov $0x98,%esi 0.00 : 524f8d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524f94: e8 77 3e 27 00 callq 798e10 0.00 : 524f99: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_ATTR_DEFERRED; 0.00 : 524f9f: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 524fa6: 49 89 c6 mov %rax,%r14 : } : | INITIALLY DEFERRED : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_ATTR_DEFERRED; : n->location = @1; 0.00 : 524fa9: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 524fb0: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 524fb3: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : | INITIALLY IMMEDIATE 0.00 : 524fb6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524fbd: e9 be c9 fe ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | NOT DEFERRABLE : { : Constraint *n = makeNode(Constraint); 0.00 : 524fc2: 48 8b 3d 97 58 69 00 mov 0x695897(%rip),%rdi # bba860 0.00 : 524fc9: be 98 00 00 00 mov $0x98,%esi 0.00 : 524fce: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 524fd5: e8 36 3e 27 00 callq 798e10 0.00 : 524fda: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_ATTR_NOT_DEFERRABLE; 0.00 : 524fe0: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 524fe7: 49 89 c6 mov %rax,%r14 : } : | NOT DEFERRABLE : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_ATTR_NOT_DEFERRABLE; : n->location = @1; 0.00 : 524fea: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 524ff1: 8b 51 fc mov -0x4(%rcx),%edx 0.00 : 524ff4: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : | INITIALLY DEFERRED 0.00 : 524ff7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 524ffe: e9 7d c9 fe ff jmpq 511980 : * useful in the statements that use ConstraintAttr.) : */ : ConstraintAttr: : DEFERRABLE : { : Constraint *n = makeNode(Constraint); 0.00 : 525003: 48 8b 3d 56 58 69 00 mov 0x695856(%rip),%rdi # bba860 0.00 : 52500a: be 98 00 00 00 mov $0x98,%esi 0.00 : 52500f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525016: e8 f5 3d 27 00 callq 798e10 0.00 : 52501b: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_ATTR_DEFERRABLE; 0.00 : 525021: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 525028: 49 89 c6 mov %rax,%r14 : ConstraintAttr: : DEFERRABLE : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_ATTR_DEFERRABLE; : n->location = @1; 0.00 : 52502b: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 525032: 8b 16 mov (%rsi),%edx 0.00 : 525034: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : | NOT DEFERRABLE 0.00 : 525037: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52503e: e9 3d c9 fe ff jmpq 511980 : n->cooked_expr = NULL; : $$ = (Node *)n; : } : | REFERENCES qualified_name opt_column_list key_match key_actions : { : Constraint *n = makeNode(Constraint); 0.00 : 525043: 48 8b 3d 16 58 69 00 mov 0x695816(%rip),%rdi # bba860 0.00 : 52504a: be 98 00 00 00 mov $0x98,%esi 0.00 : 52504f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525056: e8 b5 3d 27 00 callq 798e10 0.00 : 52505b: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_FOREIGN; 0.00 : 525061: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->fk_matchtype = $4; : n->fk_upd_action = (char) ($5 >> 8); : n->fk_del_action = (char) ($5 & 0xFF); : n->skip_validation = false; : n->initially_valid = true; : $$ = (Node *)n; 0.00 : 525068: 49 89 c6 mov %rax,%r14 : } : | REFERENCES qualified_name opt_column_list key_match key_actions : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_FOREIGN; : n->location = @1; 0.00 : 52506b: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 525072: 8b 51 f0 mov -0x10(%rcx),%edx 0.00 : 525075: 89 50 14 mov %edx,0x14(%rax) : n->pktable = $2; 0.00 : 525078: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52507f: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->fk_attrs = NIL; 0.00 : 525083: 48 c7 40 70 00 00 00 movq $0x0,0x70(%rax) 0.00 : 52508a: 00 : | REFERENCES qualified_name opt_column_list key_match key_actions : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_FOREIGN; : n->location = @1; : n->pktable = $2; 0.00 : 52508b: 48 89 50 68 mov %rdx,0x68(%rax) : n->fk_attrs = NIL; : n->pk_attrs = $3; 0.00 : 52508f: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 525093: 48 89 50 78 mov %rdx,0x78(%rax) : n->fk_matchtype = $4; 0.00 : 525097: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 52509a: 88 90 80 00 00 00 mov %dl,0x80(%rax) : n->fk_upd_action = (char) ($5 >> 8); 0.00 : 5250a0: 8b 13 mov (%rbx),%edx 0.00 : 5250a2: c1 fa 08 sar $0x8,%edx 0.00 : 5250a5: 88 90 81 00 00 00 mov %dl,0x81(%rax) : n->fk_del_action = (char) ($5 & 0xFF); 0.00 : 5250ab: 8b 13 mov (%rbx),%edx : n->skip_validation = false; 0.00 : 5250ad: c6 80 94 00 00 00 00 movb $0x0,0x94(%rax) : n->initially_valid = true; 0.00 : 5250b4: c6 80 95 00 00 00 01 movb $0x1,0x95(%rax) : n->pktable = $2; : n->fk_attrs = NIL; : n->pk_attrs = $3; : n->fk_matchtype = $4; : n->fk_upd_action = (char) ($5 >> 8); : n->fk_del_action = (char) ($5 & 0xFF); 0.00 : 5250bb: 88 90 82 00 00 00 mov %dl,0x82(%rax) : n->skip_validation = false; : n->initially_valid = true; : $$ = (Node *)n; : } : ; 0.00 : 5250c1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5250c8: e9 b3 c8 fe ff jmpq 511980 : n->cooked_expr = NULL; : $$ = (Node *)n; : } : | DEFAULT b_expr : { : Constraint *n = makeNode(Constraint); 0.00 : 5250cd: 48 8b 3d 8c 57 69 00 mov 0x69578c(%rip),%rdi # bba860 0.00 : 5250d4: be 98 00 00 00 mov $0x98,%esi 0.00 : 5250d9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5250e0: e8 2b 3d 27 00 callq 798e10 0.00 : 5250e5: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_DEFAULT; 0.00 : 5250eb: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->location = @1; : n->raw_expr = $2; : n->cooked_expr = NULL; : $$ = (Node *)n; 0.00 : 5250f2: 49 89 c6 mov %rax,%r14 : } : | DEFAULT b_expr : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_DEFAULT; : n->location = @1; 0.00 : 5250f5: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5250fc: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 5250ff: 89 50 14 mov %edx,0x14(%rax) : n->raw_expr = $2; 0.00 : 525102: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525109: 48 8b 16 mov (%rsi),%rdx : n->cooked_expr = NULL; 0.00 : 52510c: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 525113: 00 : | DEFAULT b_expr : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_DEFAULT; : n->location = @1; : n->raw_expr = $2; 0.00 : 525114: 48 89 50 20 mov %rdx,0x20(%rax) : n->cooked_expr = NULL; : $$ = (Node *)n; : } : | REFERENCES qualified_name opt_column_list key_match key_actions 0.00 : 525118: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52511f: e9 5c c8 fe ff jmpq 511980 : n->indexspace = $4; : $$ = (Node *)n; : } : | CHECK '(' a_expr ')' opt_no_inherit : { : Constraint *n = makeNode(Constraint); 0.00 : 525124: 48 8b 3d 35 57 69 00 mov 0x695735(%rip),%rdi # bba860 0.00 : 52512b: be 98 00 00 00 mov $0x98,%esi 0.00 : 525130: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525137: e8 d4 3c 27 00 callq 798e10 0.00 : 52513c: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_CHECK; 0.00 : 525142: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->location = @1; : n->is_no_inherit = $5; : n->raw_expr = $3; : n->cooked_expr = NULL; : $$ = (Node *)n; 0.00 : 525149: 49 89 c6 mov %rax,%r14 : } : | CHECK '(' a_expr ')' opt_no_inherit : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_CHECK; : n->location = @1; 0.00 : 52514c: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 525153: 8b 56 f0 mov -0x10(%rsi),%edx 0.00 : 525156: 89 50 14 mov %edx,0x14(%rax) : n->is_no_inherit = $5; 0.00 : 525159: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525160: 0f b6 11 movzbl (%rcx),%edx 0.00 : 525163: 88 50 18 mov %dl,0x18(%rax) : n->raw_expr = $3; 0.00 : 525166: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->cooked_expr = NULL; 0.00 : 52516a: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 525171: 00 : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_CHECK; : n->location = @1; : n->is_no_inherit = $5; : n->raw_expr = $3; 0.00 : 525172: 48 89 50 20 mov %rdx,0x20(%rax) : n->cooked_expr = NULL; : $$ = (Node *)n; : } : | DEFAULT b_expr 0.00 : 525176: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52517d: e9 fe c7 fe ff jmpq 511980 : n->indexspace = $3; : $$ = (Node *)n; : } : | PRIMARY KEY opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); 0.00 : 525182: 48 8b 3d d7 56 69 00 mov 0x6956d7(%rip),%rdi # bba860 0.00 : 525189: be 98 00 00 00 mov $0x98,%esi 0.00 : 52518e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525195: e8 76 3c 27 00 callq 798e10 0.00 : 52519a: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_PRIMARY; 0.00 : 5251a0: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->location = @1; : n->keys = NULL; : n->options = $3; : n->indexname = NULL; : n->indexspace = $4; : $$ = (Node *)n; 0.00 : 5251a7: 49 89 c6 mov %rax,%r14 : } : | PRIMARY KEY opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 5251aa: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5251b1: 8b 51 f4 mov -0xc(%rcx),%edx : n->keys = NULL; 0.00 : 5251b4: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 5251bb: 00 : } : | PRIMARY KEY opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; 0.00 : 5251bc: 89 50 14 mov %edx,0x14(%rax) : n->keys = NULL; : n->options = $3; 0.00 : 5251bf: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5251c6: 48 8b 53 f8 mov -0x8(%rbx),%rdx : n->indexname = NULL; 0.00 : 5251ca: 48 c7 40 48 00 00 00 movq $0x0,0x48(%rax) 0.00 : 5251d1: 00 : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_PRIMARY; : n->location = @1; : n->keys = NULL; : n->options = $3; 0.00 : 5251d2: 48 89 50 40 mov %rdx,0x40(%rax) : n->indexname = NULL; : n->indexspace = $4; 0.00 : 5251d6: 48 8b 13 mov (%rbx),%rdx 0.00 : 5251d9: 48 89 50 50 mov %rdx,0x50(%rax) : $$ = (Node *)n; : } : | CHECK '(' a_expr ')' opt_no_inherit 0.00 : 5251dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5251e4: e9 97 c7 fe ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | UNIQUE opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); 0.00 : 5251e9: 48 8b 3d 70 56 69 00 mov 0x695670(%rip),%rdi # bba860 0.00 : 5251f0: be 98 00 00 00 mov $0x98,%esi 0.00 : 5251f5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5251fc: e8 0f 3c 27 00 callq 798e10 0.00 : 525201: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_UNIQUE; 0.00 : 525207: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->location = @1; : n->keys = NULL; : n->options = $2; : n->indexname = NULL; : n->indexspace = $3; : $$ = (Node *)n; 0.00 : 52520e: 49 89 c6 mov %rax,%r14 : } : | UNIQUE opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 525211: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 525218: 8b 53 f8 mov -0x8(%rbx),%edx : n->keys = NULL; 0.00 : 52521b: 48 c7 40 30 00 00 00 movq $0x0,0x30(%rax) 0.00 : 525222: 00 : } : | UNIQUE opt_definition OptConsTableSpace : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; 0.00 : 525223: 89 50 14 mov %edx,0x14(%rax) : n->keys = NULL; : n->options = $2; 0.00 : 525226: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52522d: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->indexname = NULL; 0.00 : 525231: 48 c7 40 48 00 00 00 movq $0x0,0x48(%rax) 0.00 : 525238: 00 : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_UNIQUE; : n->location = @1; : n->keys = NULL; : n->options = $2; 0.00 : 525239: 48 89 50 40 mov %rdx,0x40(%rax) : n->indexname = NULL; : n->indexspace = $3; 0.00 : 52523d: 48 8b 16 mov (%rsi),%rdx 0.00 : 525240: 48 89 50 50 mov %rdx,0x50(%rax) : $$ = (Node *)n; : } : | PRIMARY KEY opt_definition OptConsTableSpace 0.00 : 525244: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52524b: e9 30 c7 fe ff jmpq 511980 : n->location = @1; : $$ = (Node *)n; : } : | NULL_P : { : Constraint *n = makeNode(Constraint); 0.00 : 525250: 48 8b 3d 09 56 69 00 mov 0x695609(%rip),%rdi # bba860 0.00 : 525257: be 98 00 00 00 mov $0x98,%esi 0.00 : 52525c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525263: e8 a8 3b 27 00 callq 798e10 0.00 : 525268: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_NULL; 0.00 : 52526e: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 525275: 49 89 c6 mov %rax,%r14 : } : | NULL_P : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_NULL; : n->location = @1; 0.00 : 525278: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52527f: 8b 11 mov (%rcx),%edx 0.00 : 525281: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : | UNIQUE opt_definition OptConsTableSpace 0.00 : 525284: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52528b: e9 f0 c6 fe ff jmpq 511980 : * or be part of a_expr NOT LIKE or similar constructs). : */ : ColConstraintElem: : NOT NULL_P : { : Constraint *n = makeNode(Constraint); 0.00 : 525290: 48 8b 3d c9 55 69 00 mov 0x6955c9(%rip),%rdi # bba860 0.00 : 525297: be 98 00 00 00 mov $0x98,%esi 0.00 : 52529c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5252a3: e8 68 3b 27 00 callq 798e10 0.00 : 5252a8: c7 00 98 03 00 00 movl $0x398,(%rax) : n->contype = CONSTR_NOTNULL; 0.00 : 5252ae: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->location = @1; : $$ = (Node *)n; 0.00 : 5252b5: 49 89 c6 mov %rax,%r14 : ColConstraintElem: : NOT NULL_P : { : Constraint *n = makeNode(Constraint); : n->contype = CONSTR_NOTNULL; : n->location = @1; 0.00 : 5252b8: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5252bf: 8b 56 fc mov -0x4(%rsi),%edx 0.00 : 5252c2: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *)n; : } : | NULL_P 0.00 : 5252c5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5252cc: e9 af c6 fe ff jmpq 511980 : /* : * Note: the CollateClause is momentarily included in : * the list built by ColQualList, but we split it out : * again in SplitColQualList. : */ : CollateClause *n = makeNode(CollateClause); 0.00 : 5252d1: 48 8b 3d 88 55 69 00 mov 0x695588(%rip),%rdi # bba860 0.00 : 5252d8: be 20 00 00 00 mov $0x20,%esi 0.00 : 5252dd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5252e4: e8 27 3b 27 00 callq 798e10 0.00 : 5252e9: c7 00 90 03 00 00 movl $0x390,(%rax) : n->arg = NULL; 0.00 : 5252ef: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5252f6: 00 : n->collname = $2; : n->location = @1; : $$ = (Node *) n; 0.00 : 5252f7: 49 89 c6 mov %rax,%r14 : * the list built by ColQualList, but we split it out : * again in SplitColQualList. : */ : CollateClause *n = makeNode(CollateClause); : n->arg = NULL; : n->collname = $2; 0.00 : 5252fa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525301: 48 8b 11 mov (%rcx),%rdx 0.00 : 525304: 48 89 50 10 mov %rdx,0x10(%rax) : n->location = @1; 0.00 : 525308: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 52530f: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 525312: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *) n; : } : ; 0.00 : 525315: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52531c: e9 5f c6 fe ff jmpq 511980 : n->conname = $2; : n->location = @1; : $$ = (Node *) n; : } : | ColConstraintElem { $$ = $1; } : | ConstraintAttr { $$ = $1; } 0.00 : 525321: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525328: 4c 8b 32 mov (%rdx),%r14 : | COLLATE any_name 0.00 : 52532b: e9 50 c6 fe ff jmpq 511980 : Assert(IsA(n, Constraint)); : n->conname = $2; : n->location = @1; : $$ = (Node *) n; : } : | ColConstraintElem { $$ = $1; } 0.00 : 525330: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 525337: 4c 8b 30 mov (%rax),%r14 : | ConstraintAttr { $$ = $1; } 0.00 : 52533a: e9 41 c6 fe ff jmpq 511980 : ; : : ColConstraint: : CONSTRAINT name ColConstraintElem : { : Constraint *n = (Constraint *) $3; 0.00 : 52533f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525346: 48 8b 03 mov (%rbx),%rax : Assert(IsA(n, Constraint)); : n->conname = $2; 0.00 : 525349: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 52534d: 48 89 50 08 mov %rdx,0x8(%rax) : n->location = @1; 0.00 : 525351: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi : $$ = (Node *) n; 0.00 : 525358: 49 89 c6 mov %rax,%r14 : CONSTRAINT name ColConstraintElem : { : Constraint *n = (Constraint *) $3; : Assert(IsA(n, Constraint)); : n->conname = $2; : n->location = @1; 0.00 : 52535b: 8b 56 f8 mov -0x8(%rsi),%edx 0.00 : 52535e: 89 50 14 mov %edx,0x14(%rax) : $$ = (Node *) n; : } : | ColConstraintElem { $$ = $1; } 0.00 : 525361: e9 1a c6 fe ff jmpq 511980 : } : ; : : ColQualList: : ColQualList ColConstraint { $$ = lappend($1, $2); } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 525366: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525369: e9 12 c6 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : ColQualList: : ColQualList ColConstraint { $$ = lappend($1, $2); } 0.00 : 52536e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525375: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 525379: 48 8b 31 mov (%rcx),%rsi 0.00 : 52537c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525383: e8 f8 ca 0b 00 callq 5e1e80 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 525388: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *)n; : } : ; : : ColQualList: : ColQualList ColConstraint { $$ = lappend($1, $2); } 0.00 : 52538f: 49 89 c6 mov %rax,%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 525392: e9 e9 c5 fe ff jmpq 511980 : } : ; : : columnOptions: ColId WITH OPTIONS ColQualList : { : ColumnDef *n = makeNode(ColumnDef); 0.00 : 525397: 48 8b 3d c2 54 69 00 mov 0x6954c2(%rip),%rdi # bba860 0.00 : 52539e: be 58 00 00 00 mov $0x58,%esi 0.00 : 5253a3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5253aa: e8 61 3a 27 00 callq 798e10 0.00 : 5253af: c7 00 96 03 00 00 movl $0x396,(%rax) : n->colname = $1; 0.00 : 5253b5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : } : ; : : columnOptions: ColId WITH OPTIONS ColQualList : { : ColumnDef *n = makeNode(ColumnDef); 0.00 : 5253bc: 48 89 c3 mov %rax,%rbx : n->is_from_type = false; : n->storage = 0; : n->raw_default = NULL; : n->cooked_default = NULL; : n->collOid = InvalidOid; : SplitColQualList($4, &n->constraints, &n->collClause, 0.00 : 5253bf: 48 8d 53 30 lea 0x30(%rbx),%rdx 0.00 : 5253c3: 48 8d 73 40 lea 0x40(%rbx),%rsi : yyscanner); : n->location = @1; : $$ = (Node *)n; 0.00 : 5253c7: 49 89 de mov %rbx,%r14 : ; : : columnOptions: ColId WITH OPTIONS ColQualList : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; 0.00 : 5253ca: 48 8b 41 e8 mov -0x18(%rcx),%rax : n->typeName = NULL; 0.00 : 5253ce: 48 c7 43 10 00 00 00 movq $0x0,0x10(%rbx) 0.00 : 5253d5: 00 : n->inhcount = 0; 0.00 : 5253d6: c7 43 18 00 00 00 00 movl $0x0,0x18(%rbx) : n->is_local = true; 0.00 : 5253dd: c6 43 1c 01 movb $0x1,0x1c(%rbx) : n->is_not_null = false; 0.00 : 5253e1: c6 43 1d 00 movb $0x0,0x1d(%rbx) : n->is_from_type = false; 0.00 : 5253e5: c6 43 1e 00 movb $0x0,0x1e(%rbx) : ; : : columnOptions: ColId WITH OPTIONS ColQualList : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; 0.00 : 5253e9: 48 89 43 08 mov %rax,0x8(%rbx) : n->typeName = NULL; : n->inhcount = 0; : n->is_local = true; : n->is_not_null = false; : n->is_from_type = false; : n->storage = 0; 0.00 : 5253ed: c6 43 1f 00 movb $0x0,0x1f(%rbx) : n->raw_default = NULL; 0.00 : 5253f1: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 5253f8: 00 : n->cooked_default = NULL; 0.00 : 5253f9: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 525400: 00 : n->collOid = InvalidOid; 0.00 : 525401: c7 43 38 00 00 00 00 movl $0x0,0x38(%rbx) : SplitColQualList($4, &n->constraints, &n->collClause, 0.00 : 525408: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 52540f: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 525416: 48 8b 38 mov (%rax),%rdi 0.00 : 525419: e8 72 bd fe ff callq 511190 : yyscanner); : n->location = @1; 0.00 : 52541e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 525425: 8b 42 f4 mov -0xc(%rdx),%eax 0.00 : 525428: 89 43 50 mov %eax,0x50(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 52542b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525432: e9 49 c5 fe ff jmpq 511980 : | TableConstraint { $$ = $1; } : ; : : columnDef: ColId Typename create_generic_options ColQualList : { : ColumnDef *n = makeNode(ColumnDef); 0.00 : 525437: 48 8b 3d 22 54 69 00 mov 0x695422(%rip),%rdi # bba860 0.00 : 52543e: be 58 00 00 00 mov $0x58,%esi 0.00 : 525443: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52544a: e8 c1 39 27 00 callq 798e10 0.00 : 52544f: c7 00 96 03 00 00 movl $0x396,(%rax) : n->colname = $1; 0.00 : 525455: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : | TableConstraint { $$ = $1; } : ; : : columnDef: ColId Typename create_generic_options ColQualList : { : ColumnDef *n = makeNode(ColumnDef); 0.00 : 52545c: 48 89 c3 mov %rax,%rbx : n->storage = 0; : n->raw_default = NULL; : n->cooked_default = NULL; : n->collOid = InvalidOid; : n->fdwoptions = $3; : SplitColQualList($4, &n->constraints, &n->collClause, 0.00 : 52545f: 48 8d 53 30 lea 0x30(%rbx),%rdx : yyscanner); : n->location = @1; : $$ = (Node *)n; 0.00 : 525463: 49 89 de mov %rbx,%r14 : ; : : columnDef: ColId Typename create_generic_options ColQualList : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; 0.00 : 525466: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 52546a: 48 89 43 08 mov %rax,0x8(%rbx) : n->typeName = $2; 0.00 : 52546e: 48 8b 46 f0 mov -0x10(%rsi),%rax : n->inhcount = 0; 0.00 : 525472: c7 43 18 00 00 00 00 movl $0x0,0x18(%rbx) : n->is_local = true; 0.00 : 525479: c6 43 1c 01 movb $0x1,0x1c(%rbx) : n->is_not_null = false; 0.00 : 52547d: c6 43 1d 00 movb $0x0,0x1d(%rbx) : n->is_from_type = false; 0.00 : 525481: c6 43 1e 00 movb $0x0,0x1e(%rbx) : : columnDef: ColId Typename create_generic_options ColQualList : { : ColumnDef *n = makeNode(ColumnDef); : n->colname = $1; : n->typeName = $2; 0.00 : 525485: 48 89 43 10 mov %rax,0x10(%rbx) : n->inhcount = 0; : n->is_local = true; : n->is_not_null = false; : n->is_from_type = false; : n->storage = 0; 0.00 : 525489: c6 43 1f 00 movb $0x0,0x1f(%rbx) : n->raw_default = NULL; 0.00 : 52548d: 48 c7 43 20 00 00 00 movq $0x0,0x20(%rbx) 0.00 : 525494: 00 : n->cooked_default = NULL; 0.00 : 525495: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 52549c: 00 : n->collOid = InvalidOid; 0.00 : 52549d: c7 43 38 00 00 00 00 movl $0x0,0x38(%rbx) : n->fdwoptions = $3; 0.00 : 5254a4: 48 8b 46 f8 mov -0x8(%rsi),%rax : SplitColQualList($4, &n->constraints, &n->collClause, 0.00 : 5254a8: 48 8d 73 40 lea 0x40(%rbx),%rsi : n->is_from_type = false; : n->storage = 0; : n->raw_default = NULL; : n->cooked_default = NULL; : n->collOid = InvalidOid; : n->fdwoptions = $3; 0.00 : 5254ac: 48 89 43 48 mov %rax,0x48(%rbx) : SplitColQualList($4, &n->constraints, &n->collClause, 0.00 : 5254b0: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5254b7: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 5254be: 48 8b 38 mov (%rax),%rdi 0.00 : 5254c1: e8 ca bc fe ff callq 511190 : yyscanner); : n->location = @1; 0.00 : 5254c6: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5254cd: 8b 42 f4 mov -0xc(%rdx),%eax 0.00 : 5254d0: 89 43 50 mov %eax,0x50(%rbx) : $$ = (Node *)n; : } : ; 0.00 : 5254d3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5254da: e9 a1 c4 fe ff jmpq 511980 : | TableConstraint { $$ = $1; } : ; : : TypedTableElement: : columnOptions { $$ = $1; } : | TableConstraint { $$ = $1; } 0.00 : 5254df: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5254e6: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 5254e9: e9 92 c4 fe ff jmpq 511980 : | TableLikeClause { $$ = $1; } : | TableConstraint { $$ = $1; } : ; : : TypedTableElement: : columnOptions { $$ = $1; } 0.00 : 5254ee: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5254f5: 4c 8b 31 mov (%rcx),%r14 : | TableConstraint { $$ = $1; } 0.00 : 5254f8: e9 83 c4 fe ff jmpq 511980 : ; : : TableElement: : columnDef { $$ = $1; } : | TableLikeClause { $$ = $1; } : | TableConstraint { $$ = $1; } 0.00 : 5254fd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525504: 4c 8b 32 mov (%rdx),%r14 : ; 0.00 : 525507: e9 74 c4 fe ff jmpq 511980 : } : ; : : TableElement: : columnDef { $$ = $1; } : | TableLikeClause { $$ = $1; } 0.00 : 52550c: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 525513: 4c 8b 30 mov (%rax),%r14 : | TableConstraint { $$ = $1; } 0.00 : 525516: e9 65 c4 fe ff jmpq 511980 : $$ = lappend($1, $3); : } : ; : : TableElement: : columnDef { $$ = $1; } 0.00 : 52551b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525522: 4c 8b 36 mov (%rsi),%r14 : | TableLikeClause { $$ = $1; } 0.00 : 525525: e9 56 c4 fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | TypedTableElementList ',' TypedTableElement : { : $$ = lappend($1, $3); 0.00 : 52552a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525531: 48 8b 7b f0 mov -0x10(%rbx),%rdi 0.00 : 525535: 48 8b 33 mov (%rbx),%rsi 0.00 : 525538: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52553f: e8 3c c9 0b 00 callq 5e1e80 : } : ; 0.00 : 525544: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | TypedTableElementList ',' TypedTableElement : { : $$ = lappend($1, $3); 0.00 : 52554b: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 52554e: e9 2d c4 fe ff jmpq 511980 : ; : : TypedTableElementList: : TypedTableElement : { : $$ = list_make1($1); 0.00 : 525553: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52555a: 31 f6 xor %esi,%esi 0.00 : 52555c: 48 8b 39 mov (%rcx),%rdi 0.00 : 52555f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525566: e8 e5 c2 0b 00 callq 5e1850 : } : | TypedTableElementList ',' TypedTableElement 0.00 : 52556b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : TypedTableElementList: : TypedTableElement : { : $$ = list_make1($1); 0.00 : 525572: 49 89 c6 mov %rax,%r14 : } : | TypedTableElementList ',' TypedTableElement 0.00 : 525575: e9 06 c4 fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | TableElementList ',' TableElement : { : $$ = lappend($1, $3); 0.00 : 52557a: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525581: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 525585: 48 8b 32 mov (%rdx),%rsi 0.00 : 525588: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52558f: e8 ec c8 0b 00 callq 5e1e80 : } : ; 0.00 : 525594: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | TableElementList ',' TableElement : { : $$ = lappend($1, $3); 0.00 : 52559b: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 52559e: e9 dd c3 fe ff jmpq 511980 : ; : : TableElementList: : TableElement : { : $$ = list_make1($1); 0.00 : 5255a3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5255aa: 31 f6 xor %esi,%esi 0.00 : 5255ac: 48 8b 38 mov (%rax),%rdi 0.00 : 5255af: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5255b6: e8 95 c2 0b 00 callq 5e1850 : } : | TableElementList ',' TableElement 0.00 : 5255bb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : TableElementList: : TableElement : { : $$ = list_make1($1); 0.00 : 5255c2: 49 89 c6 mov %rax,%r14 : } : | TableElementList ',' TableElement 0.00 : 5255c5: e9 b6 c3 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NIL; } : ; : : OptTypedTableElementList: : '(' TypedTableElementList ')' { $$ = $2; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5255ca: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5255cd: e9 ae c3 fe ff jmpq 511980 : TableElementList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } : ; : : OptTypedTableElementList: : '(' TypedTableElementList ')' { $$ = $2; } 0.00 : 5255d2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5255d9: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5255dd: e9 9e c3 fe ff jmpq 511980 : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } : ; : : OptTableElementList: : TableElementList { $$ = $1; } : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5255e2: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5255e5: e9 96 c3 fe ff jmpq 511980 : | UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } : ; : : OptTableElementList: : TableElementList { $$ = $1; } 0.00 : 5255ea: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5255f1: 4c 8b 31 mov (%rcx),%r14 : | /*EMPTY*/ { $$ = NIL; } 0.00 : 5255f4: e9 87 c3 fe ff jmpq 511980 : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = RELPERSISTENCE_TEMP; : } : | UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } 0.00 : 5255f9: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 525600: ff ff ff 0.00 : 525603: 49 21 d6 and %rdx,%r14 0.00 : 525606: 49 83 ce 70 or $0x70,%r14 : ; 0.00 : 52560a: e9 71 c3 fe ff jmpq 511980 : ereport(WARNING, : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = RELPERSISTENCE_TEMP; : } : | UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } 0.00 : 52560f: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 525616: ff ff ff 0.00 : 525619: 49 21 c6 and %rax,%r14 0.00 : 52561c: 49 83 ce 75 or $0x75,%r14 : | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } 0.00 : 525620: e9 5b c3 fe ff jmpq 511980 : parser_errposition(@1))); : $$ = RELPERSISTENCE_TEMP; : } : | GLOBAL TEMP : { : ereport(WARNING, 0.00 : 525625: 45 31 c0 xor %r8d,%r8d 0.00 : 525628: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52562d: ba 31 0b 00 00 mov $0xb31,%edx 0.00 : 525632: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 525637: bf 13 00 00 00 mov $0x13,%edi 0.00 : 52563c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525643: e8 78 54 25 00 callq 77aac0 0.00 : 525648: 84 c0 test %al,%al 0.00 : 52564a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525651: 74 36 je 525689 0.00 : 525653: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 52565a: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 525661: 8b 7b fc mov -0x4(%rbx),%edi 0.00 : 525664: e8 37 86 fe ff callq 50dca0 0.00 : 525669: bf 58 9f 7c 00 mov $0x7c9f58,%edi 0.00 : 52566e: 89 c3 mov %eax,%ebx 0.00 : 525670: 31 c0 xor %eax,%eax 0.00 : 525672: e8 29 72 25 00 callq 77c8a0 0.00 : 525677: 89 de mov %ebx,%esi 0.00 : 525679: 89 c7 mov %eax,%edi 0.00 : 52567b: 31 c0 xor %eax,%eax 0.00 : 52567d: e8 5e 4f 25 00 callq 77a5e0 0.00 : 525682: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = RELPERSISTENCE_TEMP; 0.00 : 525689: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 525690: ff ff ff 0.00 : 525693: 49 21 f6 and %rsi,%r14 0.00 : 525696: 49 83 ce 74 or $0x74,%r14 : } : | UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } 0.00 : 52569a: e9 e1 c2 fe ff jmpq 511980 : | TEMP { $$ = RELPERSISTENCE_TEMP; } : | LOCAL TEMPORARY { $$ = RELPERSISTENCE_TEMP; } : | LOCAL TEMP { $$ = RELPERSISTENCE_TEMP; } : | GLOBAL TEMPORARY : { : ereport(WARNING, 0.00 : 52569f: 45 31 c0 xor %r8d,%r8d 0.00 : 5256a2: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 5256a7: ba 2a 0b 00 00 mov $0xb2a,%edx 0.00 : 5256ac: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 5256b1: bf 13 00 00 00 mov $0x13,%edi 0.00 : 5256b6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5256bd: e8 fe 53 25 00 callq 77aac0 0.00 : 5256c2: 84 c0 test %al,%al 0.00 : 5256c4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5256cb: 74 36 je 525703 0.00 : 5256cd: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 5256d4: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5256db: 8b 7a fc mov -0x4(%rdx),%edi 0.00 : 5256de: e8 bd 85 fe ff callq 50dca0 0.00 : 5256e3: bf 58 9f 7c 00 mov $0x7c9f58,%edi 0.00 : 5256e8: 89 c3 mov %eax,%ebx 0.00 : 5256ea: 31 c0 xor %eax,%eax 0.00 : 5256ec: e8 af 71 25 00 callq 77c8a0 0.00 : 5256f1: 89 de mov %ebx,%esi 0.00 : 5256f3: 89 c7 mov %eax,%edi 0.00 : 5256f5: 31 c0 xor %eax,%eax 0.00 : 5256f7: e8 e4 4e 25 00 callq 77a5e0 0.00 : 5256fc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errmsg("GLOBAL is deprecated in temporary table creation"), : parser_errposition(@1))); : $$ = RELPERSISTENCE_TEMP; 0.00 : 525703: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 52570a: ff ff ff 0.00 : 52570d: 49 21 ce and %rcx,%r14 0.00 : 525710: 49 83 ce 74 or $0x74,%r14 : } : | GLOBAL TEMP 0.00 : 525714: e9 67 c2 fe ff jmpq 511980 : * so we'll probably continue to treat LOCAL as a noise word. : */ : OptTemp: TEMPORARY { $$ = RELPERSISTENCE_TEMP; } : | TEMP { $$ = RELPERSISTENCE_TEMP; } : | LOCAL TEMPORARY { $$ = RELPERSISTENCE_TEMP; } : | LOCAL TEMP { $$ = RELPERSISTENCE_TEMP; } 0.00 : 525719: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 525720: ff ff ff 0.00 : 525723: 49 21 c6 and %rax,%r14 0.00 : 525726: 49 83 ce 74 or $0x74,%r14 : | GLOBAL TEMPORARY 0.00 : 52572a: e9 51 c2 fe ff jmpq 511980 : * implement LOCAL as meaning the same as our default temp table behavior, : * so we'll probably continue to treat LOCAL as a noise word. : */ : OptTemp: TEMPORARY { $$ = RELPERSISTENCE_TEMP; } : | TEMP { $$ = RELPERSISTENCE_TEMP; } : | LOCAL TEMPORARY { $$ = RELPERSISTENCE_TEMP; } 0.00 : 52572f: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 525736: ff ff ff 0.00 : 525739: 49 21 f6 and %rsi,%r14 0.00 : 52573c: 49 83 ce 74 or $0x74,%r14 : | LOCAL TEMP { $$ = RELPERSISTENCE_TEMP; } 0.00 : 525740: e9 3b c2 fe ff jmpq 511980 : * LOCAL keyword is really meaningless; furthermore, some other products : * implement LOCAL as meaning the same as our default temp table behavior, : * so we'll probably continue to treat LOCAL as a noise word. : */ : OptTemp: TEMPORARY { $$ = RELPERSISTENCE_TEMP; } : | TEMP { $$ = RELPERSISTENCE_TEMP; } 0.00 : 525745: 48 bb 00 00 00 00 ff movabs $0xffffffff00000000,%rbx 0.00 : 52574c: ff ff ff 0.00 : 52574f: 49 21 de and %rbx,%r14 0.00 : 525752: 49 83 ce 74 or $0x74,%r14 : | LOCAL TEMPORARY { $$ = RELPERSISTENCE_TEMP; } 0.00 : 525756: e9 25 c2 fe ff jmpq 511980 : * temp table behavior, so warn about that. Since we have no modules the : * LOCAL keyword is really meaningless; furthermore, some other products : * implement LOCAL as meaning the same as our default temp table behavior, : * so we'll probably continue to treat LOCAL as a noise word. : */ : OptTemp: TEMPORARY { $$ = RELPERSISTENCE_TEMP; } 0.00 : 52575b: 48 b9 00 00 00 00 ff movabs $0xffffffff00000000,%rcx 0.00 : 525762: ff ff ff 0.00 : 525765: 49 21 ce and %rcx,%r14 0.00 : 525768: 49 83 ce 74 or $0x74,%r14 : | TEMP { $$ = RELPERSISTENCE_TEMP; } 0.00 : 52576c: e9 0f c2 fe ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name OF any_name : OptTypedTableElementList OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); 0.00 : 525771: 48 8b 3d e8 50 69 00 mov 0x6950e8(%rip),%rdi # bba860 0.00 : 525778: be 50 00 00 00 mov $0x50,%esi 0.00 : 52577d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525784: e8 87 36 27 00 callq 798e10 0.00 : 525789: c7 00 cc 02 00 00 movl $0x2cc,(%rax) : $7->relpersistence = $2; 0.00 : 52578f: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name OF any_name : OptTypedTableElementList OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); 0.00 : 525796: 48 89 c3 mov %rax,%rbx : n->constraints = NIL; : n->options = $11; : n->oncommit = $12; : n->tablespacename = $13; : n->if_not_exists = true; : $$ = (Node *)n; 0.00 : 525799: 49 89 de mov %rbx,%r14 : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name OF any_name : OptTypedTableElementList OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); : $7->relpersistence = $2; 0.00 : 52579c: 48 8b 51 d0 mov -0x30(%rcx),%rdx 0.00 : 5257a0: 8b 41 a8 mov -0x58(%rcx),%eax 0.00 : 5257a3: 88 42 24 mov %al,0x24(%rdx) : n->relation = $7; 0.00 : 5257a6: 48 8b 41 d0 mov -0x30(%rcx),%rax 0.00 : 5257aa: 48 89 43 08 mov %rax,0x8(%rbx) : n->tableElts = $10; 0.00 : 5257ae: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 5257b2: 48 89 43 10 mov %rax,0x10(%rbx) : n->ofTypename = makeTypeNameFromNameList($9); 0.00 : 5257b6: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 5257ba: e8 71 be 0c 00 callq 5f1630 0.00 : 5257bf: 48 89 43 20 mov %rax,0x20(%rbx) : n->ofTypename->location = @9; 0.00 : 5257c3: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 5257ca: 8b 56 f0 mov -0x10(%rsi),%edx 0.00 : 5257cd: 89 50 30 mov %edx,0x30(%rax) : n->constraints = NIL; 0.00 : 5257d0: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 5257d7: 00 : n->options = $11; 0.00 : 5257d8: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5257df: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 5257e3: 48 89 43 30 mov %rax,0x30(%rbx) : n->oncommit = $12; 0.00 : 5257e7: 8b 42 f8 mov -0x8(%rdx),%eax 0.00 : 5257ea: 89 43 38 mov %eax,0x38(%rbx) : n->tablespacename = $13; 0.00 : 5257ed: 48 8b 02 mov (%rdx),%rax : n->if_not_exists = true; 0.00 : 5257f0: c6 43 48 01 movb $0x1,0x48(%rbx) : n->ofTypename = makeTypeNameFromNameList($9); : n->ofTypename->location = @9; : n->constraints = NIL; : n->options = $11; : n->oncommit = $12; : n->tablespacename = $13; 0.00 : 5257f4: 48 89 43 40 mov %rax,0x40(%rbx) : n->if_not_exists = true; : $$ = (Node *)n; : } : ; 0.00 : 5257f8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5257ff: e9 7c c1 fe ff jmpq 511980 : $$ = (Node *)n; : } : | CREATE OptTemp TABLE qualified_name OF any_name : OptTypedTableElementList OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); 0.00 : 525804: 48 8b 3d 55 50 69 00 mov 0x695055(%rip),%rdi # bba860 0.00 : 52580b: be 50 00 00 00 mov $0x50,%esi 0.00 : 525810: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525817: e8 f4 35 27 00 callq 798e10 0.00 : 52581c: 48 89 c3 mov %rax,%rbx 0.00 : 52581f: c7 00 cc 02 00 00 movl $0x2cc,(%rax) : $4->relpersistence = $2; 0.00 : 525825: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax : n->constraints = NIL; : n->options = $8; : n->oncommit = $9; : n->tablespacename = $10; : n->if_not_exists = false; : $$ = (Node *)n; 0.00 : 52582c: 49 89 de mov %rbx,%r14 : } : | CREATE OptTemp TABLE qualified_name OF any_name : OptTypedTableElementList OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); : $4->relpersistence = $2; 0.00 : 52582f: 48 8b 50 d0 mov -0x30(%rax),%rdx 0.00 : 525833: 48 89 c1 mov %rax,%rcx 0.00 : 525836: 8b 40 c0 mov -0x40(%rax),%eax 0.00 : 525839: 88 42 24 mov %al,0x24(%rdx) : n->relation = $4; 0.00 : 52583c: 48 8b 41 d0 mov -0x30(%rcx),%rax 0.00 : 525840: 48 89 43 08 mov %rax,0x8(%rbx) : n->tableElts = $7; 0.00 : 525844: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 525848: 48 89 43 10 mov %rax,0x10(%rbx) : n->ofTypename = makeTypeNameFromNameList($6); 0.00 : 52584c: 48 8b 79 e0 mov -0x20(%rcx),%rdi 0.00 : 525850: e8 db bd 0c 00 callq 5f1630 0.00 : 525855: 48 89 43 20 mov %rax,0x20(%rbx) : n->ofTypename->location = @6; 0.00 : 525859: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 525860: 8b 56 f0 mov -0x10(%rsi),%edx 0.00 : 525863: 89 50 30 mov %edx,0x30(%rax) : n->constraints = NIL; 0.00 : 525866: 48 c7 43 28 00 00 00 movq $0x0,0x28(%rbx) 0.00 : 52586d: 00 : n->options = $8; 0.00 : 52586e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525875: 48 8b 42 f0 mov -0x10(%rdx),%rax 0.00 : 525879: 48 89 43 30 mov %rax,0x30(%rbx) : n->oncommit = $9; 0.00 : 52587d: 8b 42 f8 mov -0x8(%rdx),%eax 0.00 : 525880: 89 43 38 mov %eax,0x38(%rbx) : n->tablespacename = $10; 0.00 : 525883: 48 8b 02 mov (%rdx),%rax : n->if_not_exists = false; 0.00 : 525886: c6 43 48 00 movb $0x0,0x48(%rbx) : n->ofTypename = makeTypeNameFromNameList($6); : n->ofTypename->location = @6; : n->constraints = NIL; : n->options = $8; : n->oncommit = $9; : n->tablespacename = $10; 0.00 : 52588a: 48 89 43 40 mov %rax,0x40(%rbx) : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name OF any_name 0.00 : 52588e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525895: e9 e6 c0 fe ff jmpq 511980 : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name '(' : OptTableElementList ')' OptInherit OptWith OnCommitOption : OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); 0.00 : 52589a: 48 8b 3d bf 4f 69 00 mov 0x694fbf(%rip),%rdi # bba860 0.00 : 5258a1: be 50 00 00 00 mov $0x50,%esi 0.00 : 5258a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5258ad: e8 5e 35 27 00 callq 798e10 0.00 : 5258b2: c7 00 cc 02 00 00 movl $0x2cc,(%rax) : $7->relpersistence = $2; 0.00 : 5258b8: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->constraints = NIL; : n->options = $12; : n->oncommit = $13; : n->tablespacename = $14; : n->if_not_exists = true; : $$ = (Node *)n; 0.00 : 5258bf: 49 89 c6 mov %rax,%r14 : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name '(' : OptTableElementList ')' OptInherit OptWith OnCommitOption : OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); : $7->relpersistence = $2; 0.00 : 5258c2: 8b 56 a0 mov -0x60(%rsi),%edx 0.00 : 5258c5: 48 8b 4e c8 mov -0x38(%rsi),%rcx 0.00 : 5258c9: 88 51 24 mov %dl,0x24(%rcx) : n->relation = $7; 0.00 : 5258cc: 48 8b 56 c8 mov -0x38(%rsi),%rdx 0.00 : 5258d0: 48 89 50 08 mov %rdx,0x8(%rax) : n->tableElts = $9; 0.00 : 5258d4: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 5258d8: 48 89 50 10 mov %rdx,0x10(%rax) : n->inhRelations = $11; 0.00 : 5258dc: 48 8b 56 e8 mov -0x18(%rsi),%rdx : n->constraints = NIL; 0.00 : 5258e0: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 5258e7: 00 : { : CreateStmt *n = makeNode(CreateStmt); : $7->relpersistence = $2; : n->relation = $7; : n->tableElts = $9; : n->inhRelations = $11; 0.00 : 5258e8: 48 89 50 18 mov %rdx,0x18(%rax) : n->constraints = NIL; : n->options = $12; 0.00 : 5258ec: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 5258f0: 48 89 50 30 mov %rdx,0x30(%rax) : n->oncommit = $13; 0.00 : 5258f4: 8b 56 f8 mov -0x8(%rsi),%edx 0.00 : 5258f7: 89 50 38 mov %edx,0x38(%rax) : n->tablespacename = $14; 0.00 : 5258fa: 48 8b 16 mov (%rsi),%rdx : n->if_not_exists = true; 0.00 : 5258fd: c6 40 48 01 movb $0x1,0x48(%rax) : n->tableElts = $9; : n->inhRelations = $11; : n->constraints = NIL; : n->options = $12; : n->oncommit = $13; : n->tablespacename = $14; 0.00 : 525901: 48 89 50 40 mov %rdx,0x40(%rax) : n->if_not_exists = true; : $$ = (Node *)n; : } : | CREATE OptTemp TABLE qualified_name OF any_name 0.00 : 525905: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52590c: e9 6f c0 fe ff jmpq 511980 : *****************************************************************************/ : : CreateStmt: CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')' : OptInherit OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); 0.00 : 525911: 48 8b 3d 48 4f 69 00 mov 0x694f48(%rip),%rdi # bba860 0.00 : 525918: be 50 00 00 00 mov $0x50,%esi 0.00 : 52591d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525924: e8 e7 34 27 00 callq 798e10 0.00 : 525929: c7 00 cc 02 00 00 movl $0x2cc,(%rax) : $4->relpersistence = $2; 0.00 : 52592f: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->constraints = NIL; : n->options = $9; : n->oncommit = $10; : n->tablespacename = $11; : n->if_not_exists = false; : $$ = (Node *)n; 0.00 : 525936: 49 89 c6 mov %rax,%r14 : : CreateStmt: CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')' : OptInherit OptWith OnCommitOption OptTableSpace : { : CreateStmt *n = makeNode(CreateStmt); : $4->relpersistence = $2; 0.00 : 525939: 8b 53 b8 mov -0x48(%rbx),%edx 0.00 : 52593c: 48 8b 4b c8 mov -0x38(%rbx),%rcx 0.00 : 525940: 88 51 24 mov %dl,0x24(%rcx) : n->relation = $4; 0.00 : 525943: 48 8b 53 c8 mov -0x38(%rbx),%rdx 0.00 : 525947: 48 89 50 08 mov %rdx,0x8(%rax) : n->tableElts = $6; 0.00 : 52594b: 48 8b 53 d8 mov -0x28(%rbx),%rdx 0.00 : 52594f: 48 89 50 10 mov %rdx,0x10(%rax) : n->inhRelations = $8; 0.00 : 525953: 48 8b 53 e8 mov -0x18(%rbx),%rdx : n->constraints = NIL; 0.00 : 525957: 48 c7 40 28 00 00 00 movq $0x0,0x28(%rax) 0.00 : 52595e: 00 : { : CreateStmt *n = makeNode(CreateStmt); : $4->relpersistence = $2; : n->relation = $4; : n->tableElts = $6; : n->inhRelations = $8; 0.00 : 52595f: 48 89 50 18 mov %rdx,0x18(%rax) : n->constraints = NIL; : n->options = $9; 0.00 : 525963: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 525967: 48 89 50 30 mov %rdx,0x30(%rax) : n->oncommit = $10; 0.00 : 52596b: 8b 53 f8 mov -0x8(%rbx),%edx 0.00 : 52596e: 89 50 38 mov %edx,0x38(%rax) : n->tablespacename = $11; 0.00 : 525971: 48 8b 13 mov (%rbx),%rdx : n->if_not_exists = false; 0.00 : 525974: c6 40 48 00 movb $0x0,0x48(%rax) : n->tableElts = $6; : n->inhRelations = $8; : n->constraints = NIL; : n->options = $9; : n->oncommit = $10; : n->tablespacename = $11; 0.00 : 525978: 48 89 50 40 mov %rdx,0x40(%rax) : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE OptTemp TABLE IF_P NOT EXISTS qualified_name '(' 0.00 : 52597c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525983: e9 f8 bf fe ff jmpq 511980 : } : ; : : /* beware of emitting non-string list elements here; see commands/define.c */ : copy_generic_opt_arg_list_item: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 525988: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52598f: 48 8b 39 mov (%rcx),%rdi 0.00 : 525992: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525999: e8 52 9d 0d 00 callq 5ff6f0 : ; 0.00 : 52599e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : /* beware of emitting non-string list elements here; see commands/define.c */ : copy_generic_opt_arg_list_item: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 5259a5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5259a8: e9 d3 bf fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | copy_generic_opt_arg_list ',' copy_generic_opt_arg_list_item : { : $$ = lappend($1, $3); 0.00 : 5259ad: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5259b4: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5259b8: 48 8b 32 mov (%rdx),%rsi 0.00 : 5259bb: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5259c2: e8 b9 c4 0b 00 callq 5e1e80 : } : ; 0.00 : 5259c7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | copy_generic_opt_arg_list ',' copy_generic_opt_arg_list_item : { : $$ = lappend($1, $3); 0.00 : 5259ce: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 5259d1: e9 aa bf fe ff jmpq 511980 : ; : : copy_generic_opt_arg_list: : copy_generic_opt_arg_list_item : { : $$ = list_make1($1); 0.00 : 5259d6: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5259dd: 31 f6 xor %esi,%esi 0.00 : 5259df: 48 8b 38 mov (%rax),%rdi 0.00 : 5259e2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5259e9: e8 62 be 0b 00 callq 5e1850 : } : | copy_generic_opt_arg_list ',' copy_generic_opt_arg_list_item 0.00 : 5259ee: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : copy_generic_opt_arg_list: : copy_generic_opt_arg_list_item : { : $$ = list_make1($1); 0.00 : 5259f5: 49 89 c6 mov %rax,%r14 : } : | copy_generic_opt_arg_list ',' copy_generic_opt_arg_list_item 0.00 : 5259f8: e9 83 bf fe ff jmpq 511980 : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } : | '*' { $$ = (Node *) makeNode(A_Star); } : | '(' copy_generic_opt_arg_list ')' { $$ = (Node *) $2; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 5259fd: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525a00: e9 7b bf fe ff jmpq 511980 : : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } : | '*' { $$ = (Node *) makeNode(A_Star); } : | '(' copy_generic_opt_arg_list ')' { $$ = (Node *) $2; } 0.00 : 525a05: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525a0c: 4c 8b 76 f8 mov -0x8(%rsi),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 525a10: e9 6b bf fe ff jmpq 511980 : ; : : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } : | '*' { $$ = (Node *) makeNode(A_Star); } 0.00 : 525a15: 48 8b 3d 44 4e 69 00 mov 0x694e44(%rip),%rdi # bba860 0.00 : 525a1c: be 04 00 00 00 mov $0x4,%esi 0.00 : 525a21: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525a28: e8 f3 35 27 00 callq 799020 0.00 : 525a2d: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 525a33: 49 89 c6 mov %rax,%r14 : | '(' copy_generic_opt_arg_list ')' { $$ = (Node *) $2; } 0.00 : 525a36: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525a3d: e9 3e bf fe ff jmpq 511980 : } : ; : : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } : | NumericOnly { $$ = (Node *) $1; } 0.00 : 525a42: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525a49: 4c 8b 33 mov (%rbx),%r14 : | '*' { $$ = (Node *) makeNode(A_Star); } 0.00 : 525a4c: e9 2f bf fe ff jmpq 511980 : $$ = makeDefElem($1, $2); : } : ; : : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 525a51: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525a58: 48 8b 39 mov (%rcx),%rdi 0.00 : 525a5b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525a62: e8 89 9c 0d 00 callq 5ff6f0 : | NumericOnly { $$ = (Node *) $1; } 0.00 : 525a67: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem($1, $2); : } : ; : : copy_generic_opt_arg: : opt_boolean_or_string { $$ = (Node *) makeString($1); } 0.00 : 525a6e: 49 89 c6 mov %rax,%r14 : | NumericOnly { $$ = (Node *) $1; } 0.00 : 525a71: e9 0a bf fe ff jmpq 511980 : ; : : copy_generic_opt_elem: : ColLabel copy_generic_opt_arg : { : $$ = makeDefElem($1, $2); 0.00 : 525a76: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525a7d: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 525a81: 48 8b 32 mov (%rdx),%rsi 0.00 : 525a84: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525a8b: e8 70 ba 0c 00 callq 5f1500 : } : ; 0.00 : 525a90: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : copy_generic_opt_elem: : ColLabel copy_generic_opt_arg : { : $$ = makeDefElem($1, $2); 0.00 : 525a97: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 525a9a: e9 e1 be fe ff jmpq 511980 : { : $$ = list_make1($1); : } : | copy_generic_opt_list ',' copy_generic_opt_elem : { : $$ = lappend($1, $3); 0.00 : 525a9f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525aa6: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 525aaa: 48 8b 36 mov (%rsi),%rsi 0.00 : 525aad: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525ab4: e8 c7 c3 0b 00 callq 5e1e80 : } : ; 0.00 : 525ab9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = list_make1($1); : } : | copy_generic_opt_list ',' copy_generic_opt_elem : { : $$ = lappend($1, $3); 0.00 : 525ac0: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 525ac3: e9 b8 be fe ff jmpq 511980 : : /* new COPY option syntax */ : copy_generic_opt_list: : copy_generic_opt_elem : { : $$ = list_make1($1); 0.00 : 525ac8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525acf: 31 f6 xor %esi,%esi 0.00 : 525ad1: 48 8b 3b mov (%rbx),%rdi 0.00 : 525ad4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525adb: e8 70 bd 0b 00 callq 5e1850 : } : | copy_generic_opt_list ',' copy_generic_opt_elem 0.00 : 525ae0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* new COPY option syntax */ : copy_generic_opt_list: : copy_generic_opt_elem : { : $$ = list_make1($1); 0.00 : 525ae7: 49 89 c6 mov %rax,%r14 : } : | copy_generic_opt_list ',' copy_generic_opt_elem 0.00 : 525aea: e9 91 be fe ff jmpq 511980 : /* Column label --- allowed labels in "AS" clauses. : * This presently includes *all* Postgres keywords. : */ : ColLabel: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 525aef: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525af6: 48 8b 39 mov (%rcx),%rdi 0.00 : 525af9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525b00: e8 4b 34 27 00 callq 798f50 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 525b05: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* Column label --- allowed labels in "AS" clauses. : * This presently includes *all* Postgres keywords. : */ : ColLabel: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } 0.00 : 525b0c: 49 89 c6 mov %rax,%r14 : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 525b0f: e9 6c be fe ff jmpq 511980 0.00 : 525b14: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525b1b: 48 8b 3b mov (%rbx),%rdi 0.00 : 525b1e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525b25: e8 26 34 27 00 callq 798f50 : | reserved_keyword { $$ = pstrdup($1); } 0.00 : 525b2a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * This presently includes *all* Postgres keywords. : */ : ColLabel: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } : | type_func_name_keyword { $$ = pstrdup($1); } 0.00 : 525b31: 49 89 c6 mov %rax,%r14 : | reserved_keyword { $$ = pstrdup($1); } 0.00 : 525b34: e9 47 be fe ff jmpq 511980 : copy_delimiter: : opt_using DELIMITERS Sconst : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525b39: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525b3c: e9 3f be fe ff jmpq 511980 : ; : : copy_delimiter: : opt_using DELIMITERS Sconst : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); 0.00 : 525b41: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525b48: 48 8b 39 mov (%rcx),%rdi 0.00 : 525b4b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525b52: e8 99 9b 0d 00 callq 5ff6f0 0.00 : 525b57: bf 7d 65 8b 00 mov $0x8b657d,%edi 0.00 : 525b5c: 48 89 c6 mov %rax,%rsi 0.00 : 525b5f: e8 9c b9 0c 00 callq 5f1500 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525b64: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : copy_delimiter: : opt_using DELIMITERS Sconst : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); 0.00 : 525b6b: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525b6e: e9 0d be fe ff jmpq 511980 : opt_oids: : WITH OIDS : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525b73: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525b76: e9 05 be fe ff jmpq 511980 : ; : : opt_oids: : WITH OIDS : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); 0.00 : 525b7b: bf 01 00 00 00 mov $0x1,%edi 0.00 : 525b80: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525b87: e8 c4 9b 0d 00 callq 5ff750 0.00 : 525b8c: bf 3b aa 8d 00 mov $0x8daa3b,%edi 0.00 : 525b91: 48 89 c6 mov %rax,%rsi 0.00 : 525b94: e8 67 b9 0c 00 callq 5f1500 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525b99: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : opt_oids: : WITH OIDS : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); 0.00 : 525ba0: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525ba3: e9 d8 bd fe ff jmpq 511980 : opt_binary: : BINARY : { : $$ = makeDefElem("format", (Node *)makeString("binary")); : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525ba8: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525bab: e9 d0 bd fe ff jmpq 511980 : /* The following exist for backward compatibility with very old versions */ : : opt_binary: : BINARY : { : $$ = makeDefElem("format", (Node *)makeString("binary")); 0.00 : 525bb0: bf 8e 20 8e 00 mov $0x8e208e,%edi 0.00 : 525bb5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525bbc: e8 2f 9b 0d 00 callq 5ff6f0 0.00 : 525bc1: bf 3f 89 87 00 mov $0x87893f,%edi 0.00 : 525bc6: 48 89 c6 mov %rax,%rsi 0.00 : 525bc9: e8 32 b9 0c 00 callq 5f1500 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525bce: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : /* The following exist for backward compatibility with very old versions */ : : opt_binary: : BINARY : { : $$ = makeDefElem("format", (Node *)makeString("binary")); 0.00 : 525bd5: 49 89 c6 mov %rax,%r14 : } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 525bd8: e9 a3 bd fe ff jmpq 511980 : { : $$ = makeDefElem("force_null", (Node *)$3); : } : | ENCODING Sconst : { : $$ = makeDefElem("encoding", (Node *)makeString($2)); 0.00 : 525bdd: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525be4: 48 8b 3a mov (%rdx),%rdi 0.00 : 525be7: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525bee: e8 fd 9a 0d 00 callq 5ff6f0 0.00 : 525bf3: bf 73 b4 8d 00 mov $0x8db473,%edi 0.00 : 525bf8: 48 89 c6 mov %rax,%rsi 0.00 : 525bfb: e8 00 b9 0c 00 callq 5f1500 : } : ; 0.00 : 525c00: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("force_null", (Node *)$3); : } : | ENCODING Sconst : { : $$ = makeDefElem("encoding", (Node *)makeString($2)); 0.00 : 525c07: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 525c0a: e9 71 bd fe ff jmpq 511980 : { : $$ = makeDefElem("force_not_null", (Node *)$4); : } : | FORCE NULL_P columnList : { : $$ = makeDefElem("force_null", (Node *)$3); 0.00 : 525c0f: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 525c16: bf b6 95 7c 00 mov $0x7c95b6,%edi 0.00 : 525c1b: 48 8b 30 mov (%rax),%rsi 0.00 : 525c1e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525c25: e8 d6 b8 0c 00 callq 5f1500 : } : | ENCODING Sconst 0.00 : 525c2a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("force_not_null", (Node *)$4); : } : | FORCE NULL_P columnList : { : $$ = makeDefElem("force_null", (Node *)$3); 0.00 : 525c31: 49 89 c6 mov %rax,%r14 : } : | ENCODING Sconst 0.00 : 525c34: e9 47 bd fe ff jmpq 511980 : { : $$ = makeDefElem("force_quote", (Node *)makeNode(A_Star)); : } : | FORCE NOT NULL_P columnList : { : $$ = makeDefElem("force_not_null", (Node *)$4); 0.00 : 525c39: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525c40: bf a7 95 7c 00 mov $0x7c95a7,%edi 0.00 : 525c45: 48 8b 33 mov (%rbx),%rsi 0.00 : 525c48: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525c4f: e8 ac b8 0c 00 callq 5f1500 : } : | FORCE NULL_P columnList 0.00 : 525c54: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("force_quote", (Node *)makeNode(A_Star)); : } : | FORCE NOT NULL_P columnList : { : $$ = makeDefElem("force_not_null", (Node *)$4); 0.00 : 525c5b: 49 89 c6 mov %rax,%r14 : } : | FORCE NULL_P columnList 0.00 : 525c5e: e9 1d bd fe ff jmpq 511980 : { : $$ = makeDefElem("force_quote", (Node *)$3); : } : | FORCE QUOTE '*' : { : $$ = makeDefElem("force_quote", (Node *)makeNode(A_Star)); 0.00 : 525c63: 48 8b 3d f6 4b 69 00 mov 0x694bf6(%rip),%rdi # bba860 0.00 : 525c6a: be 04 00 00 00 mov $0x4,%esi 0.00 : 525c6f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525c76: e8 a5 33 27 00 callq 799020 0.00 : 525c7b: bf 9b 95 7c 00 mov $0x7c959b,%edi 0.00 : 525c80: 48 89 c6 mov %rax,%rsi 0.00 : 525c83: c7 00 89 03 00 00 movl $0x389,(%rax) 0.00 : 525c89: e8 72 b8 0c 00 callq 5f1500 : } : | FORCE NOT NULL_P columnList 0.00 : 525c8e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("force_quote", (Node *)$3); : } : | FORCE QUOTE '*' : { : $$ = makeDefElem("force_quote", (Node *)makeNode(A_Star)); 0.00 : 525c95: 49 89 c6 mov %rax,%r14 : } : | FORCE NOT NULL_P columnList 0.00 : 525c98: e9 e3 bc fe ff jmpq 511980 : { : $$ = makeDefElem("escape", (Node *)makeString($3)); : } : | FORCE QUOTE columnList : { : $$ = makeDefElem("force_quote", (Node *)$3); 0.00 : 525c9d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525ca4: bf 9b 95 7c 00 mov $0x7c959b,%edi 0.00 : 525ca9: 48 8b 31 mov (%rcx),%rsi 0.00 : 525cac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525cb3: e8 48 b8 0c 00 callq 5f1500 : } : | FORCE QUOTE '*' 0.00 : 525cb8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("escape", (Node *)makeString($3)); : } : | FORCE QUOTE columnList : { : $$ = makeDefElem("force_quote", (Node *)$3); 0.00 : 525cbf: 49 89 c6 mov %rax,%r14 : } : | FORCE QUOTE '*' 0.00 : 525cc2: e9 b9 bc fe ff jmpq 511980 : { : $$ = makeDefElem("quote", (Node *)makeString($3)); : } : | ESCAPE opt_as Sconst : { : $$ = makeDefElem("escape", (Node *)makeString($3)); 0.00 : 525cc7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525cce: 48 8b 3a mov (%rdx),%rdi 0.00 : 525cd1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525cd8: e8 13 9a 0d 00 callq 5ff6f0 0.00 : 525cdd: bf 7e 93 7c 00 mov $0x7c937e,%edi 0.00 : 525ce2: 48 89 c6 mov %rax,%rsi 0.00 : 525ce5: e8 16 b8 0c 00 callq 5f1500 : } : | FORCE QUOTE columnList 0.00 : 525cea: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("quote", (Node *)makeString($3)); : } : | ESCAPE opt_as Sconst : { : $$ = makeDefElem("escape", (Node *)makeString($3)); 0.00 : 525cf1: 49 89 c6 mov %rax,%r14 : } : | FORCE QUOTE columnList 0.00 : 525cf4: e9 87 bc fe ff jmpq 511980 : { : $$ = makeDefElem("header", (Node *)makeInteger(TRUE)); : } : | QUOTE opt_as Sconst : { : $$ = makeDefElem("quote", (Node *)makeString($3)); 0.00 : 525cf9: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 525d00: 48 8b 38 mov (%rax),%rdi 0.00 : 525d03: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525d0a: e8 e1 99 0d 00 callq 5ff6f0 0.00 : 525d0f: bf a1 95 7c 00 mov $0x7c95a1,%edi 0.00 : 525d14: 48 89 c6 mov %rax,%rsi 0.00 : 525d17: e8 e4 b7 0c 00 callq 5f1500 : } : | ESCAPE opt_as Sconst 0.00 : 525d1c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("header", (Node *)makeInteger(TRUE)); : } : | QUOTE opt_as Sconst : { : $$ = makeDefElem("quote", (Node *)makeString($3)); 0.00 : 525d23: 49 89 c6 mov %rax,%r14 : } : | ESCAPE opt_as Sconst 0.00 : 525d26: e9 55 bc fe ff jmpq 511980 : { : $$ = makeDefElem("format", (Node *)makeString("csv")); : } : | HEADER_P : { : $$ = makeDefElem("header", (Node *)makeInteger(TRUE)); 0.00 : 525d2b: bf 01 00 00 00 mov $0x1,%edi 0.00 : 525d30: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525d37: e8 14 9a 0d 00 callq 5ff750 0.00 : 525d3c: bf 94 95 7c 00 mov $0x7c9594,%edi 0.00 : 525d41: 48 89 c6 mov %rax,%rsi 0.00 : 525d44: e8 b7 b7 0c 00 callq 5f1500 : } : | QUOTE opt_as Sconst 0.00 : 525d49: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("format", (Node *)makeString("csv")); : } : | HEADER_P : { : $$ = makeDefElem("header", (Node *)makeInteger(TRUE)); 0.00 : 525d50: 49 89 c6 mov %rax,%r14 : } : | QUOTE opt_as Sconst 0.00 : 525d53: e9 28 bc fe ff jmpq 511980 : { : $$ = makeDefElem("null", (Node *)makeString($3)); : } : | CSV : { : $$ = makeDefElem("format", (Node *)makeString("csv")); 0.00 : 525d58: bf 69 11 8a 00 mov $0x8a1169,%edi 0.00 : 525d5d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525d64: e8 87 99 0d 00 callq 5ff6f0 0.00 : 525d69: bf 3f 89 87 00 mov $0x87893f,%edi 0.00 : 525d6e: 48 89 c6 mov %rax,%rsi 0.00 : 525d71: e8 8a b7 0c 00 callq 5f1500 : } : | HEADER_P 0.00 : 525d76: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("null", (Node *)makeString($3)); : } : | CSV : { : $$ = makeDefElem("format", (Node *)makeString("csv")); 0.00 : 525d7d: 49 89 c6 mov %rax,%r14 : } : | HEADER_P 0.00 : 525d80: e9 fb bb fe ff jmpq 511980 : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); : } : | NULL_P opt_as Sconst : { : $$ = makeDefElem("null", (Node *)makeString($3)); 0.00 : 525d85: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525d8c: 48 8b 3e mov (%rsi),%rdi 0.00 : 525d8f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525d96: e8 55 99 0d 00 callq 5ff6f0 0.00 : 525d9b: bf 97 ef 8b 00 mov $0x8bef97,%edi 0.00 : 525da0: 48 89 c6 mov %rax,%rsi 0.00 : 525da3: e8 58 b7 0c 00 callq 5f1500 : } : | CSV 0.00 : 525da8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); : } : | NULL_P opt_as Sconst : { : $$ = makeDefElem("null", (Node *)makeString($3)); 0.00 : 525daf: 49 89 c6 mov %rax,%r14 : } : | CSV 0.00 : 525db2: e9 c9 bb fe ff jmpq 511980 : { : $$ = makeDefElem("freeze", (Node *)makeInteger(TRUE)); : } : | DELIMITER opt_as Sconst : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); 0.00 : 525db7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 525dbe: 48 8b 3b mov (%rbx),%rdi 0.00 : 525dc1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525dc8: e8 23 99 0d 00 callq 5ff6f0 0.00 : 525dcd: bf 7d 65 8b 00 mov $0x8b657d,%edi 0.00 : 525dd2: 48 89 c6 mov %rax,%rsi 0.00 : 525dd5: e8 26 b7 0c 00 callq 5f1500 : } : | NULL_P opt_as Sconst 0.00 : 525dda: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("freeze", (Node *)makeInteger(TRUE)); : } : | DELIMITER opt_as Sconst : { : $$ = makeDefElem("delimiter", (Node *)makeString($3)); 0.00 : 525de1: 49 89 c6 mov %rax,%r14 : } : | NULL_P opt_as Sconst 0.00 : 525de4: e9 97 bb fe ff jmpq 511980 : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); : } : | FREEZE : { : $$ = makeDefElem("freeze", (Node *)makeInteger(TRUE)); 0.00 : 525de9: bf 01 00 00 00 mov $0x1,%edi 0.00 : 525dee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525df5: e8 56 99 0d 00 callq 5ff750 0.00 : 525dfa: bf 8d 95 7c 00 mov $0x7c958d,%edi 0.00 : 525dff: 48 89 c6 mov %rax,%rsi 0.00 : 525e02: e8 f9 b6 0c 00 callq 5f1500 : } : | DELIMITER opt_as Sconst 0.00 : 525e07: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); : } : | FREEZE : { : $$ = makeDefElem("freeze", (Node *)makeInteger(TRUE)); 0.00 : 525e0e: 49 89 c6 mov %rax,%r14 : } : | DELIMITER opt_as Sconst 0.00 : 525e11: e9 6a bb fe ff jmpq 511980 : { : $$ = makeDefElem("format", (Node *)makeString("binary")); : } : | OIDS : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); 0.00 : 525e16: bf 01 00 00 00 mov $0x1,%edi 0.00 : 525e1b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525e22: e8 29 99 0d 00 callq 5ff750 0.00 : 525e27: bf 3b aa 8d 00 mov $0x8daa3b,%edi 0.00 : 525e2c: 48 89 c6 mov %rax,%rsi 0.00 : 525e2f: e8 cc b6 0c 00 callq 5f1500 : } : | FREEZE 0.00 : 525e34: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("format", (Node *)makeString("binary")); : } : | OIDS : { : $$ = makeDefElem("oids", (Node *)makeInteger(TRUE)); 0.00 : 525e3b: 49 89 c6 mov %rax,%r14 : } : | FREEZE 0.00 : 525e3e: e9 3d bb fe ff jmpq 511980 : ; : : copy_opt_item: : BINARY : { : $$ = makeDefElem("format", (Node *)makeString("binary")); 0.00 : 525e43: bf 8e 20 8e 00 mov $0x8e208e,%edi 0.00 : 525e48: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525e4f: e8 9c 98 0d 00 callq 5ff6f0 0.00 : 525e54: bf 3f 89 87 00 mov $0x87893f,%edi 0.00 : 525e59: 48 89 c6 mov %rax,%rsi 0.00 : 525e5c: e8 9f b6 0c 00 callq 5f1500 : } : | OIDS 0.00 : 525e61: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : copy_opt_item: : BINARY : { : $$ = makeDefElem("format", (Node *)makeString("binary")); 0.00 : 525e68: 49 89 c6 mov %rax,%r14 : } : | OIDS 0.00 : 525e6b: e9 10 bb fe ff jmpq 511980 : ; : : /* old COPY option syntax */ : copy_opt_list: : copy_opt_list copy_opt_item { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } 0.00 : 525e70: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525e73: e9 08 bb fe ff jmpq 511980 : | '(' copy_generic_opt_list ')' { $$ = $2; } : ; : : /* old COPY option syntax */ : copy_opt_list: : copy_opt_list copy_opt_item { $$ = lappend($1, $2); } 0.00 : 525e78: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525e7f: 48 8b 79 f8 mov -0x8(%rcx),%rdi 0.00 : 525e83: 48 8b 31 mov (%rcx),%rsi 0.00 : 525e86: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525e8d: e8 ee bf 0b 00 callq 5e1e80 : | /* EMPTY */ { $$ = NIL; } 0.00 : 525e92: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | '(' copy_generic_opt_list ')' { $$ = $2; } : ; : : /* old COPY option syntax */ : copy_opt_list: : copy_opt_list copy_opt_item { $$ = lappend($1, $2); } 0.00 : 525e99: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 525e9c: e9 df ba fe ff jmpq 511980 : | STDIN { $$ = NULL; } : | STDOUT { $$ = NULL; } : ; : : copy_options: copy_opt_list { $$ = $1; } : | '(' copy_generic_opt_list ')' { $$ = $2; } 0.00 : 525ea1: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 525ea8: 4c 8b 72 f8 mov -0x8(%rdx),%r14 : ; 0.00 : 525eac: e9 cf ba fe ff jmpq 511980 : Sconst { $$ = $1; } : | STDIN { $$ = NULL; } : | STDOUT { $$ = NULL; } : ; : : copy_options: copy_opt_list { $$ = $1; } 0.00 : 525eb1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 525eb8: 4c 8b 30 mov (%rax),%r14 : | '(' copy_generic_opt_list ')' { $$ = $2; } 0.00 : 525ebb: e9 c0 ba fe ff jmpq 511980 : * stdout. We silently correct the "typo".) - AY 9/94 : */ : copy_file_name: : Sconst { $$ = $1; } : | STDIN { $$ = NULL; } : | STDOUT { $$ = NULL; } 0.00 : 525ec0: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 525ec3: e9 b8 ba fe ff jmpq 511980 : * used depends on the direction. (It really doesn't make sense to copy from : * stdout. We silently correct the "typo".) - AY 9/94 : */ : copy_file_name: : Sconst { $$ = $1; } : | STDIN { $$ = NULL; } 0.00 : 525ec8: 45 31 f6 xor %r14d,%r14d : | STDOUT { $$ = NULL; } 0.00 : 525ecb: e9 b0 ba fe ff jmpq 511980 : * copy_file_name NULL indicates stdio is used. Whether stdin or stdout is : * used depends on the direction. (It really doesn't make sense to copy from : * stdout. We silently correct the "typo".) - AY 9/94 : */ : copy_file_name: : Sconst { $$ = $1; } 0.00 : 525ed0: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 525ed7: 4c 8b 36 mov (%rsi),%r14 : | STDIN { $$ = NULL; } 0.00 : 525eda: e9 a1 ba fe ff jmpq 511980 : | TO { $$ = FALSE; } : ; : : opt_program: : PROGRAM { $$ = TRUE; } : | /* EMPTY */ { $$ = FALSE; } 0.00 : 525edf: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 525ee2: e9 99 ba fe ff jmpq 511980 : FROM { $$ = TRUE; } : | TO { $$ = FALSE; } : ; : : opt_program: : PROGRAM { $$ = TRUE; } 0.00 : 525ee7: 41 b6 01 mov $0x1,%r14b : | /* EMPTY */ { $$ = FALSE; } 0.00 : 525eea: e9 91 ba fe ff jmpq 511980 : } : ; : : copy_from: : FROM { $$ = TRUE; } : | TO { $$ = FALSE; } 0.00 : 525eef: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 525ef2: e9 89 ba fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : copy_from: : FROM { $$ = TRUE; } 0.00 : 525ef7: 41 b6 01 mov $0x1,%r14b : | TO { $$ = FALSE; } 0.00 : 525efa: e9 81 ba fe ff jmpq 511980 : n->options = list_concat(n->options, $11); : $$ = (Node *)n; : } : | COPY select_with_parens TO opt_program copy_file_name opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); 0.00 : 525eff: 48 8b 3d 5a 49 69 00 mov 0x69495a(%rip),%rdi # bba860 0.00 : 525f06: be 38 00 00 00 mov $0x38,%esi 0.00 : 525f0b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525f12: e8 f9 2e 27 00 callq 798e10 0.00 : 525f17: c7 00 cb 02 00 00 movl $0x2cb,(%rax) : n->relation = NULL; 0.00 : 525f1d: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 525f24: 00 : n->options = list_concat(n->options, $11); : $$ = (Node *)n; : } : | COPY select_with_parens TO opt_program copy_file_name opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); 0.00 : 525f25: 48 89 c2 mov %rax,%rdx : n->relation = NULL; : n->query = $2; 0.00 : 525f28: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 525f2f: 48 8b 41 d8 mov -0x28(%rcx),%rax : n->attlist = NIL; 0.00 : 525f33: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 525f3a: 00 : n->is_from = false; 0.00 : 525f3b: c6 42 20 00 movb $0x0,0x20(%rdx) : } : | COPY select_with_parens TO opt_program copy_file_name opt_with copy_options : { : CopyStmt *n = makeNode(CopyStmt); : n->relation = NULL; : n->query = $2; 0.00 : 525f3f: 48 89 42 10 mov %rax,0x10(%rdx) : n->attlist = NIL; : n->is_from = false; : n->is_program = $4; 0.00 : 525f43: 0f b6 41 e8 movzbl -0x18(%rcx),%eax 0.00 : 525f47: 88 42 21 mov %al,0x21(%rdx) : n->filename = $5; 0.00 : 525f4a: 48 8b 41 f0 mov -0x10(%rcx),%rax : n->options = $7; : : if (n->is_program && n->filename == NULL) 0.00 : 525f4e: 80 7a 21 00 cmpb $0x0,0x21(%rdx) : n->relation = NULL; : n->query = $2; : n->attlist = NIL; : n->is_from = false; : n->is_program = $4; : n->filename = $5; 0.00 : 525f52: 48 89 42 28 mov %rax,0x28(%rdx) : n->options = $7; 0.00 : 525f56: 48 8b 01 mov (%rcx),%rax 0.00 : 525f59: 48 89 42 30 mov %rax,0x30(%rdx) : : if (n->is_program && n->filename == NULL) 0.00 : 525f5d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525f64: 74 0b je 525f71 0.00 : 525f66: 48 83 7a 28 00 cmpq $0x0,0x28(%rdx) 0.00 : 525f6b: 0f 84 45 3c 00 00 je 529bb6 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("STDIN/STDOUT not allowed with PROGRAM"), : parser_errposition(@5))); : : $$ = (Node *)n; 0.00 : 525f71: 49 89 d6 mov %rdx,%r14 : } : ; 0.00 : 525f74: e9 07 ba fe ff jmpq 511980 : n->portalname = $2; : $$ = (Node *)n; : } : | CLOSE ALL : { : ClosePortalStmt *n = makeNode(ClosePortalStmt); 0.00 : 525f79: 48 8b 3d e0 48 69 00 mov 0x6948e0(%rip),%rdi # bba860 0.00 : 525f80: be 10 00 00 00 mov $0x10,%esi 0.00 : 525f85: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525f8c: e8 7f 2e 27 00 callq 798e10 0.00 : 525f91: c7 00 c9 02 00 00 movl $0x2c9,(%rax) : n->portalname = NULL; 0.00 : 525f97: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 525f9e: 00 : $$ = (Node *)n; 0.00 : 525f9f: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 525fa2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525fa9: e9 d2 b9 fe ff jmpq 511980 : *****************************************************************************/ : : ClosePortalStmt: : CLOSE cursor_name : { : ClosePortalStmt *n = makeNode(ClosePortalStmt); 0.00 : 525fae: 48 8b 3d ab 48 69 00 mov 0x6948ab(%rip),%rdi # bba860 0.00 : 525fb5: be 10 00 00 00 mov $0x10,%esi 0.00 : 525fba: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525fc1: e8 4a 2e 27 00 callq 798e10 0.00 : 525fc6: c7 00 c9 02 00 00 movl $0x2c9,(%rax) : n->portalname = $2; 0.00 : 525fcc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *)n; 0.00 : 525fd3: 49 89 c6 mov %rax,%r14 : : ClosePortalStmt: : CLOSE cursor_name : { : ClosePortalStmt *n = makeNode(ClosePortalStmt); : n->portalname = $2; 0.00 : 525fd6: 48 8b 11 mov (%rcx),%rdx 0.00 : 525fd9: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | CLOSE ALL 0.00 : 525fdd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 525fe4: e9 97 b9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TYPE ALTER ATTRIBUTE [SET DATA] TYPE [RESTRICT|CASCADE] */ : | ALTER ATTRIBUTE ColId opt_set_data TYPE_P Typename opt_collate_clause opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 525fe9: 48 8b 3d 70 48 69 00 mov 0x694870(%rip),%rdi # bba860 0.00 : 525ff0: be 20 00 00 00 mov $0x20,%esi 0.00 : 525ff5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 525ffc: e8 0f 2e 27 00 callq 798e10 0.00 : 526001: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526007: 48 8b 3d 52 48 69 00 mov 0x694852(%rip),%rdi # bba860 : $$ = (Node *)n; : } : /* ALTER TYPE ALTER ATTRIBUTE [SET DATA] TYPE [RESTRICT|CASCADE] */ : | ALTER ATTRIBUTE ColId opt_set_data TYPE_P Typename opt_collate_clause opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52600e: 48 89 c3 mov %rax,%rbx : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526011: be 58 00 00 00 mov $0x58,%esi : /* We only use these fields of the ColumnDef node */ : def->typeName = $6; : def->collClause = (CollateClause *) $7; : def->raw_default = NULL; : def->location = @3; : $$ = (Node *)n; 0.00 : 526016: 49 89 de mov %rbx,%r14 : } : /* ALTER TYPE ALTER ATTRIBUTE [SET DATA] TYPE [RESTRICT|CASCADE] */ : | ALTER ATTRIBUTE ColId opt_set_data TYPE_P Typename opt_collate_clause opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526019: e8 f2 2d 27 00 callq 798e10 0.00 : 52601e: c7 00 96 03 00 00 movl $0x396,(%rax) : n->subtype = AT_AlterColumnType; 0.00 : 526024: c7 43 04 18 00 00 00 movl $0x18,0x4(%rbx) : n->name = $3; 0.00 : 52602b: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526032: 48 8b 51 d8 mov -0x28(%rcx),%rdx : n->def = (Node *) def; 0.00 : 526036: 48 89 43 10 mov %rax,0x10(%rbx) : | ALTER ATTRIBUTE ColId opt_set_data TYPE_P Typename opt_collate_clause opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : ColumnDef *def = makeNode(ColumnDef); : n->subtype = AT_AlterColumnType; : n->name = $3; 0.00 : 52603a: 48 89 53 08 mov %rdx,0x8(%rbx) : n->def = (Node *) def; : n->behavior = $8; 0.00 : 52603e: 8b 11 mov (%rcx),%edx 0.00 : 526040: 89 53 18 mov %edx,0x18(%rbx) : /* We only use these fields of the ColumnDef node */ : def->typeName = $6; 0.00 : 526043: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 526047: 48 89 50 10 mov %rdx,0x10(%rax) : def->collClause = (CollateClause *) $7; 0.00 : 52604b: 48 8b 51 f8 mov -0x8(%rcx),%rdx : def->raw_default = NULL; 0.00 : 52604f: 48 c7 40 20 00 00 00 movq $0x0,0x20(%rax) 0.00 : 526056: 00 : n->name = $3; : n->def = (Node *) def; : n->behavior = $8; : /* We only use these fields of the ColumnDef node */ : def->typeName = $6; : def->collClause = (CollateClause *) $7; 0.00 : 526057: 48 89 50 30 mov %rdx,0x30(%rax) : def->raw_default = NULL; : def->location = @3; 0.00 : 52605b: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 526062: 8b 56 ec mov -0x14(%rsi),%edx 0.00 : 526065: 89 50 50 mov %edx,0x50(%rax) : $$ = (Node *)n; : } : ; 0.00 : 526068: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52606f: e9 0c b9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TYPE DROP ATTRIBUTE [RESTRICT|CASCADE] */ : | DROP ATTRIBUTE ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526074: 48 8b 3d e5 47 69 00 mov 0x6947e5(%rip),%rdi # bba860 0.00 : 52607b: be 20 00 00 00 mov $0x20,%esi 0.00 : 526080: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526087: e8 84 2d 27 00 callq 798e10 0.00 : 52608c: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropColumn; 0.00 : 526092: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->name = $3; : n->behavior = $4; : n->missing_ok = FALSE; : $$ = (Node *)n; 0.00 : 526099: 49 89 c6 mov %rax,%r14 : /* ALTER TYPE DROP ATTRIBUTE [RESTRICT|CASCADE] */ : | DROP ATTRIBUTE ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $3; 0.00 : 52609c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5260a3: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5260a7: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $4; 0.00 : 5260ab: 8b 16 mov (%rsi),%edx : n->missing_ok = FALSE; 0.00 : 5260ad: c6 40 1c 00 movb $0x0,0x1c(%rax) : | DROP ATTRIBUTE ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $3; : n->behavior = $4; 0.00 : 5260b1: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = FALSE; : $$ = (Node *)n; : } : /* ALTER TYPE ALTER ATTRIBUTE [SET DATA] TYPE [RESTRICT|CASCADE] */ 0.00 : 5260b4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5260bb: e9 c0 b8 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TYPE DROP ATTRIBUTE IF EXISTS [RESTRICT|CASCADE] */ : | DROP ATTRIBUTE IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5260c0: 48 8b 3d 99 47 69 00 mov 0x694799(%rip),%rdi # bba860 0.00 : 5260c7: be 20 00 00 00 mov $0x20,%esi 0.00 : 5260cc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5260d3: e8 38 2d 27 00 callq 798e10 0.00 : 5260d8: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropColumn; 0.00 : 5260de: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->name = $5; : n->behavior = $6; : n->missing_ok = TRUE; : $$ = (Node *)n; 0.00 : 5260e5: 49 89 c6 mov %rax,%r14 : /* ALTER TYPE DROP ATTRIBUTE IF EXISTS [RESTRICT|CASCADE] */ : | DROP ATTRIBUTE IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $5; 0.00 : 5260e8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5260ef: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5260f3: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $6; 0.00 : 5260f7: 8b 13 mov (%rbx),%edx : n->missing_ok = TRUE; 0.00 : 5260f9: c6 40 1c 01 movb $0x1,0x1c(%rax) : | DROP ATTRIBUTE IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $5; : n->behavior = $6; 0.00 : 5260fd: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = TRUE; : $$ = (Node *)n; : } : /* ALTER TYPE DROP ATTRIBUTE [RESTRICT|CASCADE] */ 0.00 : 526100: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526107: e9 74 b8 fe ff jmpq 511980 : : alter_type_cmd: : /* ALTER TYPE ADD ATTRIBUTE [RESTRICT|CASCADE] */ : ADD_P ATTRIBUTE TableFuncElement opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52610c: 48 8b 3d 4d 47 69 00 mov 0x69474d(%rip),%rdi # bba860 0.00 : 526113: be 20 00 00 00 mov $0x20,%esi 0.00 : 526118: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52611f: e8 ec 2c 27 00 callq 798e10 0.00 : 526124: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddColumn; 0.00 : 52612a: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->def = $3; : n->behavior = $4; : $$ = (Node *)n; 0.00 : 526131: 49 89 c6 mov %rax,%r14 : /* ALTER TYPE ADD ATTRIBUTE [RESTRICT|CASCADE] */ : ADD_P ATTRIBUTE TableFuncElement opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AddColumn; : n->def = $3; 0.00 : 526134: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52613b: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52613f: 48 89 50 10 mov %rdx,0x10(%rax) : n->behavior = $4; 0.00 : 526143: 8b 11 mov (%rcx),%edx 0.00 : 526145: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *)n; : } : /* ALTER TYPE DROP ATTRIBUTE IF EXISTS [RESTRICT|CASCADE] */ 0.00 : 526148: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52614f: e9 2c b8 fe ff jmpq 511980 : } : ; : : alter_type_cmds: : alter_type_cmd { $$ = list_make1($1); } : | alter_type_cmds ',' alter_type_cmd { $$ = lappend($1, $3); } 0.00 : 526154: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52615b: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 52615f: 48 8b 36 mov (%rsi),%rsi 0.00 : 526162: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526169: e8 12 bd 0b 00 callq 5e1e80 : ; 0.00 : 52616e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : alter_type_cmds: : alter_type_cmd { $$ = list_make1($1); } : | alter_type_cmds ',' alter_type_cmd { $$ = lappend($1, $3); } 0.00 : 526175: 49 89 c6 mov %rax,%r14 : ; 0.00 : 526178: e9 03 b8 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : alter_type_cmds: : alter_type_cmd { $$ = list_make1($1); } 0.00 : 52617d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526184: 31 f6 xor %esi,%esi 0.00 : 526186: 48 8b 3b mov (%rbx),%rdi 0.00 : 526189: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526190: e8 bb b6 0b 00 callq 5e1850 : | alter_type_cmds ',' alter_type_cmd { $$ = lappend($1, $3); } 0.00 : 526195: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *)n; : } : ; : : alter_type_cmds: : alter_type_cmd { $$ = list_make1($1); } 0.00 : 52619c: 49 89 c6 mov %rax,%r14 : | alter_type_cmds ',' alter_type_cmd { $$ = lappend($1, $3); } 0.00 : 52619f: e9 dc b7 fe ff jmpq 511980 : *****************************************************************************/ : : AlterCompositeTypeStmt: : ALTER TYPE_P any_name alter_type_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5261a4: 48 8b 3d b5 46 69 00 mov 0x6946b5(%rip),%rdi # bba860 0.00 : 5261ab: be 20 00 00 00 mov $0x20,%esi 0.00 : 5261b0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5261b7: e8 54 2c 27 00 callq 798e10 0.00 : 5261bc: 48 89 c3 mov %rax,%rbx 0.00 : 5261bf: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : : /* can't use qualified_name, sigh */ : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 5261c5: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5261cc: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax : n->cmds = $4; : n->relkind = OBJECT_TYPE; : $$ = (Node *)n; 0.00 : 5261d3: 49 89 de mov %rbx,%r14 : ALTER TYPE_P any_name alter_type_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : : /* can't use qualified_name, sigh */ : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); 0.00 : 5261d6: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 5261da: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 5261e1: 8b 70 fc mov -0x4(%rax),%esi 0.00 : 5261e4: e8 57 ac fe ff callq 510e40 0.00 : 5261e9: 48 89 43 08 mov %rax,0x8(%rbx) : n->cmds = $4; 0.00 : 5261ed: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5261f4: 48 8b 01 mov (%rcx),%rax : n->relkind = OBJECT_TYPE; 0.00 : 5261f7: c7 43 18 22 00 00 00 movl $0x22,0x18(%rbx) : { : AlterTableStmt *n = makeNode(AlterTableStmt); : : /* can't use qualified_name, sigh */ : n->relation = makeRangeVarFromAnyName($3, @3, yyscanner); : n->cmds = $4; 0.00 : 5261fe: 48 89 43 10 mov %rax,0x10(%rbx) : n->relkind = OBJECT_TYPE; : $$ = (Node *)n; : } : ; 0.00 : 526202: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526209: e9 72 b7 fe ff jmpq 511980 : $$ = makeDefElemExtended($1, $3, (Node *) $5, : DEFELEM_UNSPEC); : } : | ColLabel '.' ColLabel : { : $$ = makeDefElemExtended($1, $3, NULL, DEFELEM_UNSPEC); 0.00 : 52620e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 526215: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52621c: 31 c9 xor %ecx,%ecx 0.00 : 52621e: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 526222: 48 8b 33 mov (%rbx),%rsi 0.00 : 526225: 31 d2 xor %edx,%edx 0.00 : 526227: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52622e: e8 6d b2 0c 00 callq 5f14a0 : } : ; 0.00 : 526233: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElemExtended($1, $3, (Node *) $5, : DEFELEM_UNSPEC); : } : | ColLabel '.' ColLabel : { : $$ = makeDefElemExtended($1, $3, NULL, DEFELEM_UNSPEC); 0.00 : 52623a: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 52623d: e9 3e b7 fe ff jmpq 511980 : { : $$ = makeDefElem($1, NULL); : } : | ColLabel '.' ColLabel '=' def_arg : { : $$ = makeDefElemExtended($1, $3, (Node *) $5, 0.00 : 526242: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 526249: 31 c9 xor %ecx,%ecx 0.00 : 52624b: 48 8b 70 f0 mov -0x10(%rax),%rsi 0.00 : 52624f: 48 8b 78 e0 mov -0x20(%rax),%rdi 0.00 : 526253: 48 8b 10 mov (%rax),%rdx 0.00 : 526256: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52625d: e8 3e b2 0c 00 callq 5f14a0 : DEFELEM_UNSPEC); : } : | ColLabel '.' ColLabel 0.00 : 526262: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem($1, NULL); : } : | ColLabel '.' ColLabel '=' def_arg : { : $$ = makeDefElemExtended($1, $3, (Node *) $5, 0.00 : 526269: 49 89 c6 mov %rax,%r14 : DEFELEM_UNSPEC); : } : | ColLabel '.' ColLabel 0.00 : 52626c: e9 0f b7 fe ff jmpq 511980 : { : $$ = makeDefElem($1, (Node *) $3); : } : | ColLabel : { : $$ = makeDefElem($1, NULL); 0.00 : 526271: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526278: 31 f6 xor %esi,%esi 0.00 : 52627a: 48 8b 3b mov (%rbx),%rdi 0.00 : 52627d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526284: e8 77 b2 0c 00 callq 5f1500 : } : | ColLabel '.' ColLabel '=' def_arg 0.00 : 526289: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem($1, (Node *) $3); : } : | ColLabel : { : $$ = makeDefElem($1, NULL); 0.00 : 526290: 49 89 c6 mov %rax,%r14 : } : | ColLabel '.' ColLabel '=' def_arg 0.00 : 526293: e9 e8 b6 fe ff jmpq 511980 : : /* This should match def_elem and also allow qualified names */ : reloption_elem: : ColLabel '=' def_arg : { : $$ = makeDefElem($1, (Node *) $3); 0.00 : 526298: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52629f: 48 8b 79 f0 mov -0x10(%rcx),%rdi 0.00 : 5262a3: 48 8b 31 mov (%rcx),%rsi 0.00 : 5262a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5262ad: e8 4e b2 0c 00 callq 5f1500 : } : | ColLabel 0.00 : 5262b2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : : /* This should match def_elem and also allow qualified names */ : reloption_elem: : ColLabel '=' def_arg : { : $$ = makeDefElem($1, (Node *) $3); 0.00 : 5262b9: 49 89 c6 mov %rax,%r14 : } : | ColLabel 0.00 : 5262bc: e9 bf b6 fe ff jmpq 511980 : | /* EMPTY */ { $$ = NIL; } : ; : : reloption_list: : reloption_elem { $$ = list_make1($1); } : | reloption_list ',' reloption_elem { $$ = lappend($1, $3); } 0.00 : 5262c1: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5262c8: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 5262cc: 48 8b 32 mov (%rdx),%rsi 0.00 : 5262cf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5262d6: e8 a5 bb 0b 00 callq 5e1e80 : ; 0.00 : 5262db: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | /* EMPTY */ { $$ = NIL; } : ; : : reloption_list: : reloption_elem { $$ = list_make1($1); } : | reloption_list ',' reloption_elem { $$ = lappend($1, $3); } 0.00 : 5262e2: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5262e5: e9 96 b6 fe ff jmpq 511980 : opt_reloptions: WITH reloptions { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } : ; : : reloption_list: : reloption_elem { $$ = list_make1($1); } 0.00 : 5262ea: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5262f1: 31 f6 xor %esi,%esi 0.00 : 5262f3: 48 8b 38 mov (%rax),%rdi 0.00 : 5262f6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5262fd: e8 4e b5 0b 00 callq 5e1850 : | reloption_list ',' reloption_elem { $$ = lappend($1, $3); } 0.00 : 526302: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : opt_reloptions: WITH reloptions { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } : ; : : reloption_list: : reloption_elem { $$ = list_make1($1); } 0.00 : 526309: 49 89 c6 mov %rax,%r14 : | reloption_list ',' reloption_elem { $$ = lappend($1, $3); } 0.00 : 52630c: e9 6f b6 fe ff jmpq 511980 : reloptions: : '(' reloption_list ')' { $$ = $2; } : ; : : opt_reloptions: WITH reloptions { $$ = $2; } : | /* EMPTY */ { $$ = NIL; } 0.00 : 526311: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 526314: e9 67 b6 fe ff jmpq 511980 : : reloptions: : '(' reloption_list ')' { $$ = $2; } : ; : : opt_reloptions: WITH reloptions { $$ = $2; } 0.00 : 526319: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526320: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 526323: e9 58 b6 fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : reloptions: : '(' reloption_list ')' { $$ = $2; } 0.00 : 526328: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52632f: 4c 8b 73 f8 mov -0x8(%rbx),%r14 : ; 0.00 : 526333: e9 48 b6 fe ff jmpq 511980 : n->name = NULL; : $$ = (Node *) n; : } : | USING INDEX name : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); 0.00 : 526338: 48 8b 3d 21 45 69 00 mov 0x694521(%rip),%rdi # bba860 0.00 : 52633f: be 10 00 00 00 mov $0x10,%esi 0.00 : 526344: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52634b: e8 c0 2a 27 00 callq 798e10 0.00 : 526350: c7 00 1d 03 00 00 movl $0x31d,(%rax) : n->identity_type = REPLICA_IDENTITY_INDEX; 0.00 : 526356: c6 40 04 69 movb $0x69,0x4(%rax) : n->name = $3; : $$ = (Node *) n; 0.00 : 52635a: 49 89 c6 mov %rax,%r14 : } : | USING INDEX name : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); : n->identity_type = REPLICA_IDENTITY_INDEX; : n->name = $3; 0.00 : 52635d: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526364: 48 8b 11 mov (%rcx),%rdx 0.00 : 526367: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *) n; : } : ; 0.00 : 52636b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526372: e9 09 b6 fe ff jmpq 511980 : n->name = NULL; : $$ = (Node *) n; : } : | DEFAULT : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); 0.00 : 526377: 48 8b 3d e2 44 69 00 mov 0x6944e2(%rip),%rdi # bba860 0.00 : 52637e: be 10 00 00 00 mov $0x10,%esi 0.00 : 526383: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52638a: e8 81 2a 27 00 callq 798e10 0.00 : 52638f: c7 00 1d 03 00 00 movl $0x31d,(%rax) : n->identity_type = REPLICA_IDENTITY_DEFAULT; 0.00 : 526395: c6 40 04 64 movb $0x64,0x4(%rax) : n->name = NULL; : $$ = (Node *) n; 0.00 : 526399: 49 89 c6 mov %rax,%r14 : } : | DEFAULT : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); : n->identity_type = REPLICA_IDENTITY_DEFAULT; : n->name = NULL; 0.00 : 52639c: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5263a3: 00 : $$ = (Node *) n; : } : | USING INDEX name 0.00 : 5263a4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5263ab: e9 d0 b5 fe ff jmpq 511980 : n->name = NULL; : $$ = (Node *) n; : } : | FULL : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); 0.00 : 5263b0: 48 8b 3d a9 44 69 00 mov 0x6944a9(%rip),%rdi # bba860 0.00 : 5263b7: be 10 00 00 00 mov $0x10,%esi 0.00 : 5263bc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5263c3: e8 48 2a 27 00 callq 798e10 0.00 : 5263c8: c7 00 1d 03 00 00 movl $0x31d,(%rax) : n->identity_type = REPLICA_IDENTITY_FULL; 0.00 : 5263ce: c6 40 04 66 movb $0x66,0x4(%rax) : n->name = NULL; : $$ = (Node *) n; 0.00 : 5263d2: 49 89 c6 mov %rax,%r14 : } : | FULL : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); : n->identity_type = REPLICA_IDENTITY_FULL; : n->name = NULL; 0.00 : 5263d5: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 5263dc: 00 : $$ = (Node *) n; : } : | DEFAULT 0.00 : 5263dd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5263e4: e9 97 b5 fe ff jmpq 511980 : ; : : replica_identity: : NOTHING : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); 0.00 : 5263e9: 48 8b 3d 70 44 69 00 mov 0x694470(%rip),%rdi # bba860 0.00 : 5263f0: be 10 00 00 00 mov $0x10,%esi 0.00 : 5263f5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5263fc: e8 0f 2a 27 00 callq 798e10 0.00 : 526401: c7 00 1d 03 00 00 movl $0x31d,(%rax) : n->identity_type = REPLICA_IDENTITY_NOTHING; 0.00 : 526407: c6 40 04 6e movb $0x6e,0x4(%rax) : n->name = NULL; : $$ = (Node *) n; 0.00 : 52640b: 49 89 c6 mov %rax,%r14 : replica_identity: : NOTHING : { : ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); : n->identity_type = REPLICA_IDENTITY_NOTHING; : n->name = NULL; 0.00 : 52640e: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 526415: 00 : $$ = (Node *) n; : } : | FULL 0.00 : 526416: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52641d: e9 5e b5 fe ff jmpq 511980 : | /* EMPTY */ { $$ = NULL; } : ; : : alter_using: : USING a_expr { $$ = $2; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 526422: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 526425: e9 56 b5 fe ff jmpq 511980 : } : | /* EMPTY */ { $$ = NULL; } : ; : : alter_using: : USING a_expr { $$ = $2; } 0.00 : 52642a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526431: 4c 8b 36 mov (%rsi),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 526434: e9 47 b5 fe ff jmpq 511980 : n->arg = NULL; : n->collname = $2; : n->location = @1; : $$ = (Node *) n; : } : | /* EMPTY */ { $$ = NULL; } 0.00 : 526439: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 52643c: e9 3f b5 fe ff jmpq 511980 : ; : : opt_collate_clause: : COLLATE any_name : { : CollateClause *n = makeNode(CollateClause); 0.00 : 526441: 48 8b 3d 18 44 69 00 mov 0x694418(%rip),%rdi # bba860 0.00 : 526448: be 20 00 00 00 mov $0x20,%esi 0.00 : 52644d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526454: e8 b7 29 27 00 callq 798e10 0.00 : 526459: c7 00 90 03 00 00 movl $0x390,(%rax) : n->arg = NULL; 0.00 : 52645f: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 526466: 00 : n->collname = $2; : n->location = @1; : $$ = (Node *) n; 0.00 : 526467: 49 89 c6 mov %rax,%r14 : opt_collate_clause: : COLLATE any_name : { : CollateClause *n = makeNode(CollateClause); : n->arg = NULL; : n->collname = $2; 0.00 : 52646a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526471: 48 8b 11 mov (%rcx),%rdx 0.00 : 526474: 48 89 50 10 mov %rdx,0x10(%rax) : n->location = @1; 0.00 : 526478: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 52647f: 8b 53 fc mov -0x4(%rbx),%edx 0.00 : 526482: 89 50 18 mov %edx,0x18(%rax) : $$ = (Node *) n; : } : | /* EMPTY */ { $$ = NULL; } 0.00 : 526485: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52648c: e9 ef b4 fe ff jmpq 511980 : ; : : opt_drop_behavior: : CASCADE { $$ = DROP_CASCADE; } : | RESTRICT { $$ = DROP_RESTRICT; } : | /* EMPTY */ { $$ = DROP_RESTRICT; /* default */ } 0.00 : 526491: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 526498: ff ff ff 0.00 : 52649b: 49 21 d6 and %rdx,%r14 : ; 0.00 : 52649e: e9 dd b4 fe ff jmpq 511980 : | DROP DEFAULT { $$ = NULL; } : ; : : opt_drop_behavior: : CASCADE { $$ = DROP_CASCADE; } : | RESTRICT { $$ = DROP_RESTRICT; } 0.00 : 5264a3: 48 b8 00 00 00 00 ff movabs $0xffffffff00000000,%rax 0.00 : 5264aa: ff ff ff 0.00 : 5264ad: 49 21 c6 and %rax,%r14 : | /* EMPTY */ { $$ = DROP_RESTRICT; /* default */ } 0.00 : 5264b0: e9 cb b4 fe ff jmpq 511980 : SET DEFAULT a_expr { $$ = $3; } : | DROP DEFAULT { $$ = NULL; } : ; : : opt_drop_behavior: : CASCADE { $$ = DROP_CASCADE; } 0.00 : 5264b5: 48 be 00 00 00 00 ff movabs $0xffffffff00000000,%rsi 0.00 : 5264bc: ff ff ff 0.00 : 5264bf: 49 21 f6 and %rsi,%r14 0.00 : 5264c2: 49 83 ce 01 or $0x1,%r14 : | RESTRICT { $$ = DROP_RESTRICT; } 0.00 : 5264c6: e9 b5 b4 fe ff jmpq 511980 : } : ; : : alter_column_default: : SET DEFAULT a_expr { $$ = $3; } : | DROP DEFAULT { $$ = NULL; } 0.00 : 5264cb: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 5264ce: e9 ad b4 fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : alter_column_default: : SET DEFAULT a_expr { $$ = $3; } 0.00 : 5264d3: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5264da: 4c 8b 33 mov (%rbx),%r14 : | DROP DEFAULT { $$ = NULL; } 0.00 : 5264dd: e9 9e b4 fe ff jmpq 511980 : n->subtype = AT_DisableRowSecurity; : $$ = (Node *)n; : } : | alter_generic_options : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5264e2: 48 8b 3d 77 43 69 00 mov 0x694377(%rip),%rdi # bba860 0.00 : 5264e9: be 20 00 00 00 mov $0x20,%esi 0.00 : 5264ee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5264f5: e8 16 29 27 00 callq 798e10 0.00 : 5264fa: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_GenericOptions; 0.00 : 526500: c7 40 04 39 00 00 00 movl $0x39,0x4(%rax) : n->def = (Node *)$1; : $$ = (Node *) n; 0.00 : 526507: 49 89 c6 mov %rax,%r14 : } : | alter_generic_options : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_GenericOptions; : n->def = (Node *)$1; 0.00 : 52650a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526511: 48 8b 11 mov (%rcx),%rdx 0.00 : 526514: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 526518: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52651f: e9 5c b4 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE ROW LEVEL SECURITY */ : | DISABLE_P ROW LEVEL SECURITY : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526524: 48 8b 3d 35 43 69 00 mov 0x694335(%rip),%rdi # bba860 0.00 : 52652b: be 20 00 00 00 mov $0x20,%esi 0.00 : 526530: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526537: e8 d4 28 27 00 callq 798e10 0.00 : 52653c: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DisableRowSecurity; 0.00 : 526542: c7 40 04 38 00 00 00 movl $0x38,0x4(%rax) : $$ = (Node *)n; 0.00 : 526549: 49 89 c6 mov %rax,%r14 : } : | alter_generic_options 0.00 : 52654c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526553: e9 28 b4 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ROW LEVEL SECURITY */ : | ENABLE_P ROW LEVEL SECURITY : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526558: 48 8b 3d 01 43 69 00 mov 0x694301(%rip),%rdi # bba860 0.00 : 52655f: be 20 00 00 00 mov $0x20,%esi 0.00 : 526564: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52656b: e8 a0 28 27 00 callq 798e10 0.00 : 526570: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableRowSecurity; 0.00 : 526576: c7 40 04 37 00 00 00 movl $0x37,0x4(%rax) : $$ = (Node *)n; 0.00 : 52657d: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE DISABLE ROW LEVEL SECURITY */ 0.00 : 526580: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526587: e9 f4 b3 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE REPLICA IDENTITY */ : | REPLICA IDENTITY_P replica_identity : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52658c: 48 8b 3d cd 42 69 00 mov 0x6942cd(%rip),%rdi # bba860 0.00 : 526593: be 20 00 00 00 mov $0x20,%esi 0.00 : 526598: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52659f: e8 6c 28 27 00 callq 798e10 0.00 : 5265a4: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ReplicaIdentity; 0.00 : 5265aa: c7 40 04 36 00 00 00 movl $0x36,0x4(%rax) : n->def = $3; : $$ = (Node *)n; 0.00 : 5265b1: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE REPLICA IDENTITY */ : | REPLICA IDENTITY_P replica_identity : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ReplicaIdentity; : n->def = $3; 0.00 : 5265b4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5265bb: 48 8b 16 mov (%rsi),%rdx 0.00 : 5265be: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ROW LEVEL SECURITY */ 0.00 : 5265c2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5265c9: e9 b2 b3 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE RESET (...) */ : | RESET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5265ce: 48 8b 3d 8b 42 69 00 mov 0x69428b(%rip),%rdi # bba860 0.00 : 5265d5: be 20 00 00 00 mov $0x20,%esi 0.00 : 5265da: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5265e1: e8 2a 28 27 00 callq 798e10 0.00 : 5265e6: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ResetRelOptions; 0.00 : 5265ec: c7 40 04 24 00 00 00 movl $0x24,0x4(%rax) : n->def = (Node *)$2; : $$ = (Node *)n; 0.00 : 5265f3: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE RESET (...) */ : | RESET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ResetRelOptions; : n->def = (Node *)$2; 0.00 : 5265f6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5265fd: 48 8b 13 mov (%rbx),%rdx 0.00 : 526600: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE REPLICA IDENTITY */ 0.00 : 526604: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52660b: e9 70 b3 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET (...) */ : | SET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526610: 48 8b 3d 49 42 69 00 mov 0x694249(%rip),%rdi # bba860 0.00 : 526617: be 20 00 00 00 mov $0x20,%esi 0.00 : 52661c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526623: e8 e8 27 27 00 callq 798e10 0.00 : 526628: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetRelOptions; 0.00 : 52662e: c7 40 04 23 00 00 00 movl $0x23,0x4(%rax) : n->def = (Node *)$2; : $$ = (Node *)n; 0.00 : 526635: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE SET (...) */ : | SET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetRelOptions; : n->def = (Node *)$2; 0.00 : 526638: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 52663f: 48 8b 11 mov (%rcx),%rdx 0.00 : 526642: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE RESET (...) */ 0.00 : 526646: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52664d: e9 2e b3 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET TABLESPACE */ : | SET TABLESPACE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526652: 48 8b 3d 07 42 69 00 mov 0x694207(%rip),%rdi # bba860 0.00 : 526659: be 20 00 00 00 mov $0x20,%esi 0.00 : 52665e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526665: e8 a6 27 27 00 callq 798e10 0.00 : 52666a: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetTableSpace; 0.00 : 526670: c7 40 04 22 00 00 00 movl $0x22,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526677: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE SET TABLESPACE */ : | SET TABLESPACE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetTableSpace; : n->name = $3; 0.00 : 52667a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526681: 48 8b 16 mov (%rsi),%rdx 0.00 : 526684: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE SET (...) */ 0.00 : 526688: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52668f: e9 ec b2 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE OWNER TO RoleId */ : | OWNER TO RoleId : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526694: 48 8b 3d c5 41 69 00 mov 0x6941c5(%rip),%rdi # bba860 0.00 : 52669b: be 20 00 00 00 mov $0x20,%esi 0.00 : 5266a0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5266a7: e8 64 27 27 00 callq 798e10 0.00 : 5266ac: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ChangeOwner; 0.00 : 5266b2: c7 40 04 1a 00 00 00 movl $0x1a,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 5266b9: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE OWNER TO RoleId */ : | OWNER TO RoleId : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ChangeOwner; : n->name = $3; 0.00 : 5266bc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5266c3: 48 8b 13 mov (%rbx),%rdx 0.00 : 5266c6: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE SET TABLESPACE */ 0.00 : 5266ca: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5266d1: e9 aa b2 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE NOT OF */ : | NOT OF : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5266d6: 48 8b 3d 83 41 69 00 mov 0x694183(%rip),%rdi # bba860 0.00 : 5266dd: be 20 00 00 00 mov $0x20,%esi 0.00 : 5266e2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5266e9: e8 22 27 27 00 callq 798e10 0.00 : 5266ee: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropOf; 0.00 : 5266f4: c7 40 04 35 00 00 00 movl $0x35,0x4(%rax) : $$ = (Node *)n; 0.00 : 5266fb: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE OWNER TO RoleId */ 0.00 : 5266fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526705: e9 76 b2 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE OF */ : | OF any_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52670a: 48 8b 3d 4f 41 69 00 mov 0x69414f(%rip),%rdi # bba860 0.00 : 526711: be 20 00 00 00 mov $0x20,%esi 0.00 : 526716: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52671d: e8 ee 26 27 00 callq 798e10 0.00 : 526722: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : TypeName *def = makeTypeNameFromNameList($2); 0.00 : 526728: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : $$ = (Node *)n; : } : /* ALTER TABLE OF */ : | OF any_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52672f: 48 89 c3 mov %rax,%rbx : TypeName *def = makeTypeNameFromNameList($2); : def->location = @2; : n->subtype = AT_AddOf; : n->def = (Node *) def; : $$ = (Node *)n; 0.00 : 526732: 49 89 de mov %rbx,%r14 : } : /* ALTER TABLE OF */ : | OF any_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : TypeName *def = makeTypeNameFromNameList($2); 0.00 : 526735: 48 8b 3e mov (%rsi),%rdi 0.00 : 526738: e8 f3 ae 0c 00 callq 5f1630 : def->location = @2; 0.00 : 52673d: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 526744: 8b 11 mov (%rcx),%edx 0.00 : 526746: 89 50 30 mov %edx,0x30(%rax) : n->subtype = AT_AddOf; 0.00 : 526749: c7 43 04 34 00 00 00 movl $0x34,0x4(%rbx) : n->def = (Node *) def; 0.00 : 526750: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = (Node *)n; : } : /* ALTER TABLE NOT OF */ 0.00 : 526754: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52675b: e9 20 b2 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE NO INHERIT */ : | NO INHERIT qualified_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526760: 48 8b 3d f9 40 69 00 mov 0x6940f9(%rip),%rdi # bba860 0.00 : 526767: be 20 00 00 00 mov $0x20,%esi 0.00 : 52676c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526773: e8 98 26 27 00 callq 798e10 0.00 : 526778: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropInherit; 0.00 : 52677e: c7 40 04 33 00 00 00 movl $0x33,0x4(%rax) : n->def = (Node *) $3; : $$ = (Node *)n; 0.00 : 526785: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE NO INHERIT */ : | NO INHERIT qualified_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropInherit; : n->def = (Node *) $3; 0.00 : 526788: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52678f: 48 8b 13 mov (%rbx),%rdx 0.00 : 526792: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE OF */ 0.00 : 526796: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52679d: e9 de b1 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE INHERIT */ : | INHERIT qualified_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5267a2: 48 8b 3d b7 40 69 00 mov 0x6940b7(%rip),%rdi # bba860 0.00 : 5267a9: be 20 00 00 00 mov $0x20,%esi 0.00 : 5267ae: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5267b5: e8 56 26 27 00 callq 798e10 0.00 : 5267ba: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddInherit; 0.00 : 5267c0: c7 40 04 32 00 00 00 movl $0x32,0x4(%rax) : n->def = (Node *) $2; : $$ = (Node *)n; 0.00 : 5267c7: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE INHERIT */ : | INHERIT qualified_name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AddInherit; : n->def = (Node *) $2; 0.00 : 5267ca: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5267d1: 48 8b 11 mov (%rcx),%rdx 0.00 : 5267d4: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE NO INHERIT */ 0.00 : 5267d8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5267df: e9 9c b1 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE RULE */ : | DISABLE_P RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5267e4: 48 8b 3d 75 40 69 00 mov 0x694075(%rip),%rdi # bba860 0.00 : 5267eb: be 20 00 00 00 mov $0x20,%esi 0.00 : 5267f0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5267f7: e8 14 26 27 00 callq 798e10 0.00 : 5267fc: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DisableRule; 0.00 : 526802: c7 40 04 31 00 00 00 movl $0x31,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526809: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DISABLE RULE */ : | DISABLE_P RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DisableRule; : n->name = $3; 0.00 : 52680c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526813: 48 8b 16 mov (%rsi),%rdx 0.00 : 526816: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE INHERIT */ 0.00 : 52681a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526821: e9 5a b1 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE REPLICA RULE */ : | ENABLE_P REPLICA RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526826: 48 8b 3d 33 40 69 00 mov 0x694033(%rip),%rdi # bba860 0.00 : 52682d: be 20 00 00 00 mov $0x20,%esi 0.00 : 526832: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526839: e8 d2 25 27 00 callq 798e10 0.00 : 52683e: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableReplicaRule; 0.00 : 526844: c7 40 04 30 00 00 00 movl $0x30,0x4(%rax) : n->name = $4; : $$ = (Node *)n; 0.00 : 52684b: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE REPLICA RULE */ : | ENABLE_P REPLICA RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableReplicaRule; : n->name = $4; 0.00 : 52684e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526855: 48 8b 13 mov (%rbx),%rdx 0.00 : 526858: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE RULE */ 0.00 : 52685c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526863: e9 18 b1 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ALWAYS RULE */ : | ENABLE_P ALWAYS RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526868: 48 8b 3d f1 3f 69 00 mov 0x693ff1(%rip),%rdi # bba860 0.00 : 52686f: be 20 00 00 00 mov $0x20,%esi 0.00 : 526874: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52687b: e8 90 25 27 00 callq 798e10 0.00 : 526880: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableAlwaysRule; 0.00 : 526886: c7 40 04 2f 00 00 00 movl $0x2f,0x4(%rax) : n->name = $4; : $$ = (Node *)n; 0.00 : 52688d: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE ALWAYS RULE */ : | ENABLE_P ALWAYS RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableAlwaysRule; : n->name = $4; 0.00 : 526890: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526897: 48 8b 11 mov (%rcx),%rdx 0.00 : 52689a: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE REPLICA RULE */ 0.00 : 52689e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5268a5: e9 d6 b0 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE RULE */ : | ENABLE_P RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5268aa: 48 8b 3d af 3f 69 00 mov 0x693faf(%rip),%rdi # bba860 0.00 : 5268b1: be 20 00 00 00 mov $0x20,%esi 0.00 : 5268b6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5268bd: e8 4e 25 27 00 callq 798e10 0.00 : 5268c2: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableRule; 0.00 : 5268c8: c7 40 04 2e 00 00 00 movl $0x2e,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 5268cf: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE RULE */ : | ENABLE_P RULE name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableRule; : n->name = $3; 0.00 : 5268d2: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5268d9: 48 8b 16 mov (%rsi),%rdx 0.00 : 5268dc: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ALWAYS RULE */ 0.00 : 5268e0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5268e7: e9 94 b0 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE TRIGGER USER */ : | DISABLE_P TRIGGER USER : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5268ec: 48 8b 3d 6d 3f 69 00 mov 0x693f6d(%rip),%rdi # bba860 0.00 : 5268f3: be 20 00 00 00 mov $0x20,%esi 0.00 : 5268f8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5268ff: e8 0c 25 27 00 callq 798e10 0.00 : 526904: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DisableTrigUser; 0.00 : 52690a: c7 40 04 2d 00 00 00 movl $0x2d,0x4(%rax) : $$ = (Node *)n; 0.00 : 526911: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE ENABLE RULE */ 0.00 : 526914: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52691b: e9 60 b0 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE TRIGGER ALL */ : | DISABLE_P TRIGGER ALL : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526920: 48 8b 3d 39 3f 69 00 mov 0x693f39(%rip),%rdi # bba860 0.00 : 526927: be 20 00 00 00 mov $0x20,%esi 0.00 : 52692c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526933: e8 d8 24 27 00 callq 798e10 0.00 : 526938: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DisableTrigAll; 0.00 : 52693e: c7 40 04 2b 00 00 00 movl $0x2b,0x4(%rax) : $$ = (Node *)n; 0.00 : 526945: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE DISABLE TRIGGER USER */ 0.00 : 526948: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52694f: e9 2c b0 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE TRIGGER */ : | DISABLE_P TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526954: 48 8b 3d 05 3f 69 00 mov 0x693f05(%rip),%rdi # bba860 0.00 : 52695b: be 20 00 00 00 mov $0x20,%esi 0.00 : 526960: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526967: e8 a4 24 27 00 callq 798e10 0.00 : 52696c: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DisableTrig; 0.00 : 526972: c7 40 04 29 00 00 00 movl $0x29,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526979: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DISABLE TRIGGER */ : | DISABLE_P TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DisableTrig; : n->name = $3; 0.00 : 52697c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526983: 48 8b 13 mov (%rbx),%rdx 0.00 : 526986: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE DISABLE TRIGGER ALL */ 0.00 : 52698a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526991: e9 ea af fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE TRIGGER USER */ : | ENABLE_P TRIGGER USER : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526996: 48 8b 3d c3 3e 69 00 mov 0x693ec3(%rip),%rdi # bba860 0.00 : 52699d: be 20 00 00 00 mov $0x20,%esi 0.00 : 5269a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5269a9: e8 62 24 27 00 callq 798e10 0.00 : 5269ae: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableTrigUser; 0.00 : 5269b4: c7 40 04 2c 00 00 00 movl $0x2c,0x4(%rax) : $$ = (Node *)n; 0.00 : 5269bb: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE DISABLE TRIGGER */ 0.00 : 5269be: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5269c5: e9 b6 af fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE TRIGGER ALL */ : | ENABLE_P TRIGGER ALL : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5269ca: 48 8b 3d 8f 3e 69 00 mov 0x693e8f(%rip),%rdi # bba860 0.00 : 5269d1: be 20 00 00 00 mov $0x20,%esi 0.00 : 5269d6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5269dd: e8 2e 24 27 00 callq 798e10 0.00 : 5269e2: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableTrigAll; 0.00 : 5269e8: c7 40 04 2a 00 00 00 movl $0x2a,0x4(%rax) : $$ = (Node *)n; 0.00 : 5269ef: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE ENABLE TRIGGER USER */ 0.00 : 5269f2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5269f9: e9 82 af fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE REPLICA TRIGGER */ : | ENABLE_P REPLICA TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5269fe: 48 8b 3d 5b 3e 69 00 mov 0x693e5b(%rip),%rdi # bba860 0.00 : 526a05: be 20 00 00 00 mov $0x20,%esi 0.00 : 526a0a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526a11: e8 fa 23 27 00 callq 798e10 0.00 : 526a16: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableReplicaTrig; 0.00 : 526a1c: c7 40 04 28 00 00 00 movl $0x28,0x4(%rax) : n->name = $4; : $$ = (Node *)n; 0.00 : 526a23: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE REPLICA TRIGGER */ : | ENABLE_P REPLICA TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableReplicaTrig; : n->name = $4; 0.00 : 526a26: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526a2d: 48 8b 11 mov (%rcx),%rdx 0.00 : 526a30: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE TRIGGER ALL */ 0.00 : 526a34: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526a3b: e9 40 af fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ALWAYS TRIGGER */ : | ENABLE_P ALWAYS TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526a40: 48 8b 3d 19 3e 69 00 mov 0x693e19(%rip),%rdi # bba860 0.00 : 526a47: be 20 00 00 00 mov $0x20,%esi 0.00 : 526a4c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526a53: e8 b8 23 27 00 callq 798e10 0.00 : 526a58: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableAlwaysTrig; 0.00 : 526a5e: c7 40 04 27 00 00 00 movl $0x27,0x4(%rax) : n->name = $4; : $$ = (Node *)n; 0.00 : 526a65: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE ALWAYS TRIGGER */ : | ENABLE_P ALWAYS TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableAlwaysTrig; : n->name = $4; 0.00 : 526a68: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526a6f: 48 8b 16 mov (%rsi),%rdx 0.00 : 526a72: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE REPLICA TRIGGER */ 0.00 : 526a76: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526a7d: e9 fe ae fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE TRIGGER */ : | ENABLE_P TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526a82: 48 8b 3d d7 3d 69 00 mov 0x693dd7(%rip),%rdi # bba860 0.00 : 526a89: be 20 00 00 00 mov $0x20,%esi 0.00 : 526a8e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526a95: e8 76 23 27 00 callq 798e10 0.00 : 526a9a: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_EnableTrig; 0.00 : 526aa0: c7 40 04 26 00 00 00 movl $0x26,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526aa7: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ENABLE TRIGGER */ : | ENABLE_P TRIGGER name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_EnableTrig; : n->name = $3; 0.00 : 526aaa: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526ab1: 48 8b 13 mov (%rbx),%rdx 0.00 : 526ab4: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ENABLE ALWAYS TRIGGER */ 0.00 : 526ab8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526abf: e9 bc ae fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET UNLOGGED */ : | SET UNLOGGED : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526ac4: 48 8b 3d 95 3d 69 00 mov 0x693d95(%rip),%rdi # bba860 0.00 : 526acb: be 20 00 00 00 mov $0x20,%esi 0.00 : 526ad0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526ad7: e8 34 23 27 00 callq 798e10 0.00 : 526adc: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetUnLogged; 0.00 : 526ae2: c7 40 04 1e 00 00 00 movl $0x1e,0x4(%rax) : $$ = (Node *)n; 0.00 : 526ae9: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE ENABLE TRIGGER */ 0.00 : 526aec: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526af3: e9 88 ae fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET LOGGED */ : | SET LOGGED : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526af8: 48 8b 3d 61 3d 69 00 mov 0x693d61(%rip),%rdi # bba860 0.00 : 526aff: be 20 00 00 00 mov $0x20,%esi 0.00 : 526b04: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526b0b: e8 00 23 27 00 callq 798e10 0.00 : 526b10: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetLogged; 0.00 : 526b16: c7 40 04 1d 00 00 00 movl $0x1d,0x4(%rax) : $$ = (Node *)n; 0.00 : 526b1d: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE SET UNLOGGED */ 0.00 : 526b20: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526b27: e9 54 ae fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET WITHOUT CLUSTER */ : | SET WITHOUT CLUSTER : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526b2c: 48 8b 3d 2d 3d 69 00 mov 0x693d2d(%rip),%rdi # bba860 0.00 : 526b33: be 20 00 00 00 mov $0x20,%esi 0.00 : 526b38: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526b3f: e8 cc 22 27 00 callq 798e10 0.00 : 526b44: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropCluster; 0.00 : 526b4a: c7 40 04 1c 00 00 00 movl $0x1c,0x4(%rax) : n->name = NULL; : $$ = (Node *)n; 0.00 : 526b51: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE SET WITHOUT CLUSTER */ : | SET WITHOUT CLUSTER : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropCluster; : n->name = NULL; 0.00 : 526b54: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 526b5b: 00 : $$ = (Node *)n; : } : /* ALTER TABLE SET LOGGED */ 0.00 : 526b5c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526b63: e9 18 ae fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE CLUSTER ON */ : | CLUSTER ON name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526b68: 48 8b 3d f1 3c 69 00 mov 0x693cf1(%rip),%rdi # bba860 0.00 : 526b6f: be 20 00 00 00 mov $0x20,%esi 0.00 : 526b74: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526b7b: e8 90 22 27 00 callq 798e10 0.00 : 526b80: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ClusterOn; 0.00 : 526b86: c7 40 04 1b 00 00 00 movl $0x1b,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526b8d: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE CLUSTER ON */ : | CLUSTER ON name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ClusterOn; : n->name = $3; 0.00 : 526b90: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526b97: 48 8b 11 mov (%rcx),%rdx 0.00 : 526b9a: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE SET WITHOUT CLUSTER */ 0.00 : 526b9e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526ba5: e9 d6 ad fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET WITHOUT OIDS */ : | SET WITHOUT OIDS : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526baa: 48 8b 3d af 3c 69 00 mov 0x693caf(%rip),%rdi # bba860 0.00 : 526bb1: be 20 00 00 00 mov $0x20,%esi 0.00 : 526bb6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526bbd: e8 4e 22 27 00 callq 798e10 0.00 : 526bc2: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropOids; 0.00 : 526bc8: c7 40 04 21 00 00 00 movl $0x21,0x4(%rax) : $$ = (Node *)n; 0.00 : 526bcf: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE CLUSTER ON */ 0.00 : 526bd2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526bd9: e9 a2 ad fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE SET WITH OIDS */ : | SET WITH OIDS : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526bde: 48 8b 3d 7b 3c 69 00 mov 0x693c7b(%rip),%rdi # bba860 0.00 : 526be5: be 20 00 00 00 mov $0x20,%esi 0.00 : 526bea: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526bf1: e8 1a 22 27 00 callq 798e10 0.00 : 526bf6: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddOids; 0.00 : 526bfc: c7 40 04 1f 00 00 00 movl $0x1f,0x4(%rax) : $$ = (Node *)n; 0.00 : 526c03: 49 89 c6 mov %rax,%r14 : } : /* ALTER TABLE SET WITHOUT OIDS */ 0.00 : 526c06: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526c0d: e9 6e ad fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DROP CONSTRAINT [RESTRICT|CASCADE] */ : | DROP CONSTRAINT name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526c12: 48 8b 3d 47 3c 69 00 mov 0x693c47(%rip),%rdi # bba860 0.00 : 526c19: be 20 00 00 00 mov $0x20,%esi 0.00 : 526c1e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526c25: e8 e6 21 27 00 callq 798e10 0.00 : 526c2a: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropConstraint; 0.00 : 526c30: c7 40 04 16 00 00 00 movl $0x16,0x4(%rax) : n->name = $3; : n->behavior = $4; : n->missing_ok = FALSE; : $$ = (Node *)n; 0.00 : 526c37: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DROP CONSTRAINT [RESTRICT|CASCADE] */ : | DROP CONSTRAINT name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropConstraint; : n->name = $3; 0.00 : 526c3a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526c41: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 526c45: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $4; 0.00 : 526c49: 8b 16 mov (%rsi),%edx : n->missing_ok = FALSE; 0.00 : 526c4b: c6 40 1c 00 movb $0x0,0x1c(%rax) : | DROP CONSTRAINT name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropConstraint; : n->name = $3; : n->behavior = $4; 0.00 : 526c4f: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = FALSE; : $$ = (Node *)n; : } : /* ALTER TABLE SET WITH OIDS */ 0.00 : 526c52: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526c59: e9 22 ad fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ : | DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526c5e: 48 8b 3d fb 3b 69 00 mov 0x693bfb(%rip),%rdi # bba860 0.00 : 526c65: be 20 00 00 00 mov $0x20,%esi 0.00 : 526c6a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526c71: e8 9a 21 27 00 callq 798e10 0.00 : 526c76: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropConstraint; 0.00 : 526c7c: c7 40 04 16 00 00 00 movl $0x16,0x4(%rax) : n->name = $5; : n->behavior = $6; : n->missing_ok = TRUE; : $$ = (Node *)n; 0.00 : 526c83: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ : | DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropConstraint; : n->name = $5; 0.00 : 526c86: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526c8d: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 526c91: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $6; 0.00 : 526c95: 8b 13 mov (%rbx),%edx : n->missing_ok = TRUE; 0.00 : 526c97: c6 40 1c 01 movb $0x1,0x1c(%rax) : | DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropConstraint; : n->name = $5; : n->behavior = $6; 0.00 : 526c9b: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = TRUE; : $$ = (Node *)n; : } : /* ALTER TABLE DROP CONSTRAINT [RESTRICT|CASCADE] */ 0.00 : 526c9e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526ca5: e9 d6 ac fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE VALIDATE CONSTRAINT ... */ : | VALIDATE CONSTRAINT name : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526caa: 48 8b 3d af 3b 69 00 mov 0x693baf(%rip),%rdi # bba860 0.00 : 526cb1: be 20 00 00 00 mov $0x20,%esi 0.00 : 526cb6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526cbd: e8 4e 21 27 00 callq 798e10 0.00 : 526cc2: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ValidateConstraint; 0.00 : 526cc8: c7 40 04 12 00 00 00 movl $0x12,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 526ccf: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE VALIDATE CONSTRAINT ... */ : | VALIDATE CONSTRAINT name : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ValidateConstraint; : n->name = $3; 0.00 : 526cd2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526cd9: 48 8b 11 mov (%rcx),%rdx 0.00 : 526cdc: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE DROP CONSTRAINT IF EXISTS [RESTRICT|CASCADE] */ 0.00 : 526ce0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526ce7: e9 94 ac fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER CONSTRAINT ... */ : | ALTER CONSTRAINT name ConstraintAttributeSpec : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526cec: 48 8b 3d 6d 3b 69 00 mov 0x693b6d(%rip),%rdi # bba860 0.00 : 526cf3: be 20 00 00 00 mov $0x20,%esi 0.00 : 526cf8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526cff: e8 0c 21 27 00 callq 798e10 0.00 : 526d04: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : Constraint *c = makeNode(Constraint); 0.00 : 526d0a: 48 8b 3d 4f 3b 69 00 mov 0x693b4f(%rip),%rdi # bba860 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER CONSTRAINT ... */ : | ALTER CONSTRAINT name ConstraintAttributeSpec : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526d11: 48 89 c3 mov %rax,%rbx : Constraint *c = makeNode(Constraint); 0.00 : 526d14: be 98 00 00 00 mov $0x98,%esi : c->conname = $3; : processCASbits($4, @4, "ALTER CONSTRAINT statement", : &c->deferrable, : &c->initdeferred, : NULL, NULL, yyscanner); : $$ = (Node *)n; 0.00 : 526d19: 49 89 de mov %rbx,%r14 : } : /* ALTER TABLE ALTER CONSTRAINT ... */ : | ALTER CONSTRAINT name ConstraintAttributeSpec : { : AlterTableCmd *n = makeNode(AlterTableCmd); : Constraint *c = makeNode(Constraint); 0.00 : 526d1c: e8 ef 20 27 00 callq 798e10 0.00 : 526d21: c7 00 98 03 00 00 movl $0x398,(%rax) : n->subtype = AT_AlterConstraint; 0.00 : 526d27: c7 43 04 11 00 00 00 movl $0x11,0x4(%rbx) : n->def = (Node *) c; : c->contype = CONSTR_FOREIGN; /* others not supported, yet */ : c->conname = $3; : processCASbits($4, @4, "ALTER CONSTRAINT statement", 0.00 : 526d2e: 4c 8d 40 11 lea 0x11(%rax),%r8 : | ALTER CONSTRAINT name ConstraintAttributeSpec : { : AlterTableCmd *n = makeNode(AlterTableCmd); : Constraint *c = makeNode(Constraint); : n->subtype = AT_AlterConstraint; : n->def = (Node *) c; 0.00 : 526d32: 48 89 43 10 mov %rax,0x10(%rbx) : c->contype = CONSTR_FOREIGN; /* others not supported, yet */ 0.00 : 526d36: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : c->conname = $3; : processCASbits($4, @4, "ALTER CONSTRAINT statement", 0.00 : 526d3d: 45 31 c9 xor %r9d,%r9d : AlterTableCmd *n = makeNode(AlterTableCmd); : Constraint *c = makeNode(Constraint); : n->subtype = AT_AlterConstraint; : n->def = (Node *) c; : c->contype = CONSTR_FOREIGN; /* others not supported, yet */ : c->conname = $3; 0.00 : 526d40: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526d47: 48 8b 51 f8 mov -0x8(%rcx),%rdx : processCASbits($4, @4, "ALTER CONSTRAINT statement", 0.00 : 526d4b: 48 8d 48 10 lea 0x10(%rax),%rcx : AlterTableCmd *n = makeNode(AlterTableCmd); : Constraint *c = makeNode(Constraint); : n->subtype = AT_AlterConstraint; : n->def = (Node *) c; : c->contype = CONSTR_FOREIGN; /* others not supported, yet */ : c->conname = $3; 0.00 : 526d4f: 48 89 50 08 mov %rdx,0x8(%rax) : processCASbits($4, @4, "ALTER CONSTRAINT statement", 0.00 : 526d53: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 526d5a: ba 72 95 7c 00 mov $0x7c9572,%edx 0.00 : 526d5f: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 526d66: 48 c7 04 24 00 00 00 movq $0x0,(%rsp) 0.00 : 526d6d: 00 0.00 : 526d6e: 48 89 74 24 08 mov %rsi,0x8(%rsp) 0.00 : 526d73: 8b 30 mov (%rax),%esi 0.00 : 526d75: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 526d7c: 8b 38 mov (%rax),%edi 0.00 : 526d7e: e8 8d 70 fe ff callq 50de10 : &c->deferrable, : &c->initdeferred, : NULL, NULL, yyscanner); : $$ = (Node *)n; : } : /* ALTER TABLE VALIDATE CONSTRAINT ... */ 0.00 : 526d83: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526d8a: e9 f1 ab fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ADD CONSTRAINT ... */ : | ADD_P TableConstraint : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526d8f: 48 8b 3d ca 3a 69 00 mov 0x693aca(%rip),%rdi # bba860 0.00 : 526d96: be 20 00 00 00 mov $0x20,%esi 0.00 : 526d9b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526da2: e8 69 20 27 00 callq 798e10 0.00 : 526da7: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddConstraint; 0.00 : 526dad: c7 40 04 0e 00 00 00 movl $0xe,0x4(%rax) : n->def = $2; : $$ = (Node *)n; 0.00 : 526db4: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ADD CONSTRAINT ... */ : | ADD_P TableConstraint : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AddConstraint; : n->def = $2; 0.00 : 526db7: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526dbe: 48 8b 16 mov (%rsi),%rdx 0.00 : 526dc1: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER CONSTRAINT ... */ 0.00 : 526dc5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526dcc: e9 af ab fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER FOREIGN TABLE ALTER [COLUMN] OPTIONS */ : | ALTER opt_column ColId alter_generic_options : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526dd1: 48 8b 3d 88 3a 69 00 mov 0x693a88(%rip),%rdi # bba860 0.00 : 526dd8: be 20 00 00 00 mov $0x20,%esi 0.00 : 526ddd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526de4: e8 27 20 27 00 callq 798e10 0.00 : 526de9: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AlterColumnGenericOptions; 0.00 : 526def: c7 40 04 19 00 00 00 movl $0x19,0x4(%rax) : n->name = $3; : n->def = (Node *) $4; : $$ = (Node *)n; 0.00 : 526df6: 49 89 c6 mov %rax,%r14 : /* ALTER FOREIGN TABLE ALTER [COLUMN] OPTIONS */ : | ALTER opt_column ColId alter_generic_options : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AlterColumnGenericOptions; : n->name = $3; 0.00 : 526df9: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526e00: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 526e04: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = (Node *) $4; 0.00 : 526e08: 48 8b 13 mov (%rbx),%rdx 0.00 : 526e0b: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ADD CONSTRAINT ... */ 0.00 : 526e0f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526e16: e9 65 ab fe ff jmpq 511980 : * ALTER TABLE ALTER [COLUMN] [SET DATA] TYPE : * [ USING ] : */ : | ALTER opt_column ColId opt_set_data TYPE_P Typename opt_collate_clause alter_using : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526e1b: 48 8b 3d 3e 3a 69 00 mov 0x693a3e(%rip),%rdi # bba860 0.00 : 526e22: be 20 00 00 00 mov $0x20,%esi 0.00 : 526e27: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526e2e: e8 dd 1f 27 00 callq 798e10 0.00 : 526e33: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526e39: 48 8b 3d 20 3a 69 00 mov 0x693a20(%rip),%rdi # bba860 : * ALTER TABLE ALTER [COLUMN] [SET DATA] TYPE : * [ USING ] : */ : | ALTER opt_column ColId opt_set_data TYPE_P Typename opt_collate_clause alter_using : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526e40: 48 89 c3 mov %rax,%rbx : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526e43: be 58 00 00 00 mov $0x58,%esi : /* We only use these fields of the ColumnDef node */ : def->typeName = $6; : def->collClause = (CollateClause *) $7; : def->raw_default = $8; : def->location = @3; : $$ = (Node *)n; 0.00 : 526e48: 49 89 de mov %rbx,%r14 : * [ USING ] : */ : | ALTER opt_column ColId opt_set_data TYPE_P Typename opt_collate_clause alter_using : { : AlterTableCmd *n = makeNode(AlterTableCmd); : ColumnDef *def = makeNode(ColumnDef); 0.00 : 526e4b: e8 c0 1f 27 00 callq 798e10 0.00 : 526e50: c7 00 96 03 00 00 movl $0x396,(%rax) : n->subtype = AT_AlterColumnType; 0.00 : 526e56: c7 43 04 18 00 00 00 movl $0x18,0x4(%rbx) : n->name = $3; 0.00 : 526e5d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 526e64: 48 8b 56 d8 mov -0x28(%rsi),%rdx : n->def = (Node *) def; 0.00 : 526e68: 48 89 43 10 mov %rax,0x10(%rbx) : | ALTER opt_column ColId opt_set_data TYPE_P Typename opt_collate_clause alter_using : { : AlterTableCmd *n = makeNode(AlterTableCmd); : ColumnDef *def = makeNode(ColumnDef); : n->subtype = AT_AlterColumnType; : n->name = $3; 0.00 : 526e6c: 48 89 53 08 mov %rdx,0x8(%rbx) : n->def = (Node *) def; : /* We only use these fields of the ColumnDef node */ : def->typeName = $6; 0.00 : 526e70: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 526e74: 48 89 50 10 mov %rdx,0x10(%rax) : def->collClause = (CollateClause *) $7; 0.00 : 526e78: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 526e7c: 48 89 50 30 mov %rdx,0x30(%rax) : def->raw_default = $8; 0.00 : 526e80: 48 8b 16 mov (%rsi),%rdx 0.00 : 526e83: 48 89 50 20 mov %rdx,0x20(%rax) : def->location = @3; 0.00 : 526e87: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 526e8e: 8b 51 ec mov -0x14(%rcx),%edx 0.00 : 526e91: 89 50 50 mov %edx,0x50(%rax) : $$ = (Node *)n; : } : /* ALTER FOREIGN TABLE ALTER [COLUMN] OPTIONS */ 0.00 : 526e94: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526e9b: e9 e0 aa fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DROP [COLUMN] [RESTRICT|CASCADE] */ : | DROP opt_column ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526ea0: 48 8b 3d b9 39 69 00 mov 0x6939b9(%rip),%rdi # bba860 0.00 : 526ea7: be 20 00 00 00 mov $0x20,%esi 0.00 : 526eac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526eb3: e8 58 1f 27 00 callq 798e10 0.00 : 526eb8: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropColumn; 0.00 : 526ebe: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->name = $3; : n->behavior = $4; : n->missing_ok = FALSE; : $$ = (Node *)n; 0.00 : 526ec5: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DROP [COLUMN] [RESTRICT|CASCADE] */ : | DROP opt_column ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $3; 0.00 : 526ec8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526ecf: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 526ed3: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $4; 0.00 : 526ed7: 8b 13 mov (%rbx),%edx : n->missing_ok = FALSE; 0.00 : 526ed9: c6 40 1c 00 movb $0x0,0x1c(%rax) : | DROP opt_column ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $3; : n->behavior = $4; 0.00 : 526edd: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = FALSE; : $$ = (Node *)n; : } : /* 0.00 : 526ee0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526ee7: e9 94 aa fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE DROP [COLUMN] IF EXISTS [RESTRICT|CASCADE] */ : | DROP opt_column IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526eec: 48 8b 3d 6d 39 69 00 mov 0x69396d(%rip),%rdi # bba860 0.00 : 526ef3: be 20 00 00 00 mov $0x20,%esi 0.00 : 526ef8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526eff: e8 0c 1f 27 00 callq 798e10 0.00 : 526f04: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropColumn; 0.00 : 526f0a: c7 40 04 0a 00 00 00 movl $0xa,0x4(%rax) : n->name = $5; : n->behavior = $6; : n->missing_ok = TRUE; : $$ = (Node *)n; 0.00 : 526f11: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE DROP [COLUMN] IF EXISTS [RESTRICT|CASCADE] */ : | DROP opt_column IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $5; 0.00 : 526f14: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 526f1b: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 526f1f: 48 89 50 08 mov %rdx,0x8(%rax) : n->behavior = $6; 0.00 : 526f23: 8b 11 mov (%rcx),%edx : n->missing_ok = TRUE; 0.00 : 526f25: c6 40 1c 01 movb $0x1,0x1c(%rax) : | DROP opt_column IF_P EXISTS ColId opt_drop_behavior : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropColumn; : n->name = $5; : n->behavior = $6; 0.00 : 526f29: 89 50 18 mov %edx,0x18(%rax) : n->missing_ok = TRUE; : $$ = (Node *)n; : } : /* ALTER TABLE DROP [COLUMN] [RESTRICT|CASCADE] */ 0.00 : 526f2c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526f33: e9 48 aa fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ : | ALTER opt_column ColId SET STORAGE ColId : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526f38: 48 8b 3d 21 39 69 00 mov 0x693921(%rip),%rdi # bba860 0.00 : 526f3f: be 20 00 00 00 mov $0x20,%esi 0.00 : 526f44: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526f4b: e8 c0 1e 27 00 callq 798e10 0.00 : 526f50: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetStorage; 0.00 : 526f56: c7 40 04 09 00 00 00 movl $0x9,0x4(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ : | ALTER opt_column ColId SET STORAGE ColId : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526f5d: 48 89 c3 mov %rax,%rbx : n->subtype = AT_SetStorage; : n->name = $3; 0.00 : 526f60: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->def = (Node *) makeString($6); : $$ = (Node *)n; 0.00 : 526f67: 49 89 de mov %rbx,%r14 : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ : | ALTER opt_column ColId SET STORAGE ColId : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetStorage; : n->name = $3; 0.00 : 526f6a: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 526f6e: 48 89 43 08 mov %rax,0x8(%rbx) : n->def = (Node *) makeString($6); 0.00 : 526f72: 48 8b 3e mov (%rsi),%rdi 0.00 : 526f75: e8 76 87 0d 00 callq 5ff6f0 0.00 : 526f7a: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = (Node *)n; : } : /* ALTER TABLE DROP [COLUMN] IF EXISTS [RESTRICT|CASCADE] */ 0.00 : 526f7e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526f85: e9 f6 a9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ : | ALTER opt_column ColId RESET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526f8a: 48 8b 3d cf 38 69 00 mov 0x6938cf(%rip),%rdi # bba860 0.00 : 526f91: be 20 00 00 00 mov $0x20,%esi 0.00 : 526f96: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526f9d: e8 6e 1e 27 00 callq 798e10 0.00 : 526fa2: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ResetOptions; 0.00 : 526fa8: c7 40 04 08 00 00 00 movl $0x8,0x4(%rax) : n->name = $3; : n->def = (Node *) $5; : $$ = (Node *)n; 0.00 : 526faf: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ : | ALTER opt_column ColId RESET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ResetOptions; : n->name = $3; 0.00 : 526fb2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 526fb9: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 526fbd: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = (Node *) $5; 0.00 : 526fc1: 48 8b 13 mov (%rbx),%rdx 0.00 : 526fc4: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STORAGE */ 0.00 : 526fc8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 526fcf: e9 ac a9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ : | ALTER opt_column ColId SET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 526fd4: 48 8b 3d 85 38 69 00 mov 0x693885(%rip),%rdi # bba860 0.00 : 526fdb: be 20 00 00 00 mov $0x20,%esi 0.00 : 526fe0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 526fe7: e8 24 1e 27 00 callq 798e10 0.00 : 526fec: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetOptions; 0.00 : 526ff2: c7 40 04 07 00 00 00 movl $0x7,0x4(%rax) : n->name = $3; : n->def = (Node *) $5; : $$ = (Node *)n; 0.00 : 526ff9: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ : | ALTER opt_column ColId SET reloptions : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetOptions; : n->name = $3; 0.00 : 526ffc: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527003: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 527007: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = (Node *) $5; 0.00 : 52700b: 48 8b 11 mov (%rcx),%rdx 0.00 : 52700e: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ 0.00 : 527012: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527019: e9 62 a9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STATISTICS */ : | ALTER opt_column ColId SET STATISTICS SignedIconst : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 52701e: 48 8b 3d 3b 38 69 00 mov 0x69383b(%rip),%rdi # bba860 0.00 : 527025: be 20 00 00 00 mov $0x20,%esi 0.00 : 52702a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527031: e8 da 1d 27 00 callq 798e10 0.00 : 527036: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetStatistics; 0.00 : 52703c: c7 40 04 06 00 00 00 movl $0x6,0x4(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STATISTICS */ : | ALTER opt_column ColId SET STATISTICS SignedIconst : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 527043: 48 89 c3 mov %rax,%rbx : n->subtype = AT_SetStatistics; : n->name = $3; 0.00 : 527046: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->def = (Node *) makeInteger($6); : $$ = (Node *)n; 0.00 : 52704d: 49 89 de mov %rbx,%r14 : /* ALTER TABLE ALTER [COLUMN] SET STATISTICS */ : | ALTER opt_column ColId SET STATISTICS SignedIconst : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetStatistics; : n->name = $3; 0.00 : 527050: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 527054: 48 89 43 08 mov %rax,0x8(%rbx) : n->def = (Node *) makeInteger($6); 0.00 : 527058: 48 63 3e movslq (%rsi),%rdi 0.00 : 52705b: e8 f0 86 0d 00 callq 5ff750 0.00 : 527060: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET ( column_parameter = value [, ... ] ) */ 0.00 : 527064: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52706b: e9 10 a9 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET NOT NULL */ : | ALTER opt_column ColId SET NOT NULL_P : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 527070: 48 8b 3d e9 37 69 00 mov 0x6937e9(%rip),%rdi # bba860 0.00 : 527077: be 20 00 00 00 mov $0x20,%esi 0.00 : 52707c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527083: e8 88 1d 27 00 callq 798e10 0.00 : 527088: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_SetNotNull; 0.00 : 52708e: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 527095: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ALTER [COLUMN] SET NOT NULL */ : | ALTER opt_column ColId SET NOT NULL_P : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_SetNotNull; : n->name = $3; 0.00 : 527098: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52709f: 48 8b 53 e8 mov -0x18(%rbx),%rdx 0.00 : 5270a3: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET STATISTICS */ 0.00 : 5270a7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5270ae: e9 cd a8 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] DROP NOT NULL */ : | ALTER opt_column ColId DROP NOT NULL_P : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5270b3: 48 8b 3d a6 37 69 00 mov 0x6937a6(%rip),%rdi # bba860 0.00 : 5270ba: be 20 00 00 00 mov $0x20,%esi 0.00 : 5270bf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5270c6: e8 45 1d 27 00 callq 798e10 0.00 : 5270cb: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_DropNotNull; 0.00 : 5270d1: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->name = $3; : $$ = (Node *)n; 0.00 : 5270d8: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ALTER [COLUMN] DROP NOT NULL */ : | ALTER opt_column ColId DROP NOT NULL_P : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_DropNotNull; : n->name = $3; 0.00 : 5270db: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5270e2: 48 8b 51 e8 mov -0x18(%rcx),%rdx 0.00 : 5270e6: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] SET NOT NULL */ 0.00 : 5270ea: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5270f1: e9 8a a8 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] {SET DEFAULT |DROP DEFAULT} */ : | ALTER opt_column ColId alter_column_default : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 5270f6: 48 8b 3d 63 37 69 00 mov 0x693763(%rip),%rdi # bba860 0.00 : 5270fd: be 20 00 00 00 mov $0x20,%esi 0.00 : 527102: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527109: e8 02 1d 27 00 callq 798e10 0.00 : 52710e: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_ColumnDefault; 0.00 : 527114: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->name = $3; : n->def = $4; : $$ = (Node *)n; 0.00 : 52711b: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ALTER [COLUMN] {SET DEFAULT |DROP DEFAULT} */ : | ALTER opt_column ColId alter_column_default : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_ColumnDefault; : n->name = $3; 0.00 : 52711e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 527125: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 527129: 48 89 50 08 mov %rdx,0x8(%rax) : n->def = $4; 0.00 : 52712d: 48 8b 16 mov (%rsi),%rdx 0.00 : 527130: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] DROP NOT NULL */ 0.00 : 527134: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52713b: e9 40 a8 fe ff jmpq 511980 : $$ = (Node *)n; : } : /* ALTER TABLE ADD COLUMN */ : | ADD_P COLUMN columnDef : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 527140: 48 8b 3d 19 37 69 00 mov 0x693719(%rip),%rdi # bba860 0.00 : 527147: be 20 00 00 00 mov $0x20,%esi 0.00 : 52714c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527153: e8 b8 1c 27 00 callq 798e10 0.00 : 527158: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddColumn; 0.00 : 52715e: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->def = $3; : $$ = (Node *)n; 0.00 : 527165: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ADD COLUMN */ : | ADD_P COLUMN columnDef : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AddColumn; : n->def = $3; 0.00 : 527168: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52716f: 48 8b 13 mov (%rbx),%rdx 0.00 : 527172: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ALTER [COLUMN] {SET DEFAULT |DROP DEFAULT} */ 0.00 : 527176: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52717d: e9 fe a7 fe ff jmpq 511980 : : alter_table_cmd: : /* ALTER TABLE ADD */ : ADD_P columnDef : { : AlterTableCmd *n = makeNode(AlterTableCmd); 0.00 : 527182: 48 8b 3d d7 36 69 00 mov 0x6936d7(%rip),%rdi # bba860 0.00 : 527189: be 20 00 00 00 mov $0x20,%esi 0.00 : 52718e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527195: e8 76 1c 27 00 callq 798e10 0.00 : 52719a: c7 00 c3 02 00 00 movl $0x2c3,(%rax) : n->subtype = AT_AddColumn; 0.00 : 5271a0: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->def = $2; : $$ = (Node *)n; 0.00 : 5271a7: 49 89 c6 mov %rax,%r14 : /* ALTER TABLE ADD */ : ADD_P columnDef : { : AlterTableCmd *n = makeNode(AlterTableCmd); : n->subtype = AT_AddColumn; : n->def = $2; 0.00 : 5271aa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5271b1: 48 8b 11 mov (%rcx),%rdx 0.00 : 5271b4: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : /* ALTER TABLE ADD COLUMN */ 0.00 : 5271b8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5271bf: e9 bc a7 fe ff jmpq 511980 : } : ; : : alter_table_cmds: : alter_table_cmd { $$ = list_make1($1); } : | alter_table_cmds ',' alter_table_cmd { $$ = lappend($1, $3); } 0.00 : 5271c4: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5271cb: 48 8b 7e f0 mov -0x10(%rsi),%rdi 0.00 : 5271cf: 48 8b 36 mov (%rsi),%rsi 0.00 : 5271d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5271d9: e8 a2 ac 0b 00 callq 5e1e80 : ; 0.00 : 5271de: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : alter_table_cmds: : alter_table_cmd { $$ = list_make1($1); } : | alter_table_cmds ',' alter_table_cmd { $$ = lappend($1, $3); } 0.00 : 5271e5: 49 89 c6 mov %rax,%r14 : ; 0.00 : 5271e8: e9 93 a7 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : alter_table_cmds: : alter_table_cmd { $$ = list_make1($1); } 0.00 : 5271ed: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5271f4: 31 f6 xor %esi,%esi 0.00 : 5271f6: 48 8b 3b mov (%rbx),%rdi 0.00 : 5271f9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527200: e8 4b a6 0b 00 callq 5e1850 : | alter_table_cmds ',' alter_table_cmd { $$ = lappend($1, $3); } 0.00 : 527205: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = (Node *)n; : } : ; : : alter_table_cmds: : alter_table_cmd { $$ = list_make1($1); } 0.00 : 52720c: 49 89 c6 mov %rax,%r14 : | alter_table_cmds ',' alter_table_cmd { $$ = lappend($1, $3); } 0.00 : 52720f: e9 6c a7 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 527214: 48 8b 3d 45 36 69 00 mov 0x693645(%rip),%rdi # bba860 0.00 : 52721b: be 30 00 00 00 mov $0x30,%esi 0.00 : 527220: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527227: e8 e4 1b 27 00 callq 798e10 0.00 : 52722c: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $7; 0.00 : 527232: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objtype = OBJECT_MATVIEW; : n->roles = $10; : n->new_tablespacename = $13; : n->nowait = $14; : $$ = (Node *)n; 0.00 : 527239: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $7; 0.00 : 52723c: 48 8b 51 c8 mov -0x38(%rcx),%rdx : n->objtype = OBJECT_MATVIEW; 0.00 : 527240: c7 40 10 12 00 00 00 movl $0x12,0x10(%rax) : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $7; 0.00 : 527247: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_MATVIEW; : n->roles = $10; 0.00 : 52724b: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 52724f: 48 89 50 18 mov %rdx,0x18(%rax) : n->new_tablespacename = $13; 0.00 : 527253: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 527257: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $14; 0.00 : 52725b: 0f b6 11 movzbl (%rcx),%edx 0.00 : 52725e: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : ; 0.00 : 527261: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527268: e9 13 a7 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 52726d: 48 8b 3d ec 35 69 00 mov 0x6935ec(%rip),%rdi # bba860 0.00 : 527274: be 30 00 00 00 mov $0x30,%esi 0.00 : 527279: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527280: e8 8b 1b 27 00 callq 798e10 0.00 : 527285: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $7; 0.00 : 52728b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objtype = OBJECT_MATVIEW; : n->roles = NIL; : n->new_tablespacename = $10; : n->nowait = $11; : $$ = (Node *)n; 0.00 : 527292: 49 89 c6 mov %rax,%r14 : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $7; 0.00 : 527295: 48 8b 56 e0 mov -0x20(%rsi),%rdx : n->objtype = OBJECT_MATVIEW; 0.00 : 527299: c7 40 10 12 00 00 00 movl $0x12,0x10(%rax) : n->roles = NIL; 0.00 : 5272a0: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 5272a7: 00 : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $7; 0.00 : 5272a8: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_MATVIEW; : n->roles = NIL; : n->new_tablespacename = $10; 0.00 : 5272ac: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 5272b0: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $11; 0.00 : 5272b4: 0f b6 16 movzbl (%rsi),%edx 0.00 : 5272b7: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait 0.00 : 5272ba: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5272c1: e9 ba a6 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5272c6: 48 8b 3d 93 35 69 00 mov 0x693593(%rip),%rdi # bba860 0.00 : 5272cd: be 20 00 00 00 mov $0x20,%esi 0.00 : 5272d2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5272d9: e8 32 1b 27 00 callq 798e10 0.00 : 5272de: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $6; 0.00 : 5272e4: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->cmds = $7; : n->relkind = OBJECT_MATVIEW; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 5272eb: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $6; 0.00 : 5272ee: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5272f2: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $7; 0.00 : 5272f6: 48 8b 13 mov (%rbx),%rdx : n->relkind = OBJECT_MATVIEW; 0.00 : 5272f9: c7 40 18 12 00 00 00 movl $0x12,0x18(%rax) : n->missing_ok = true; 0.00 : 527300: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $6; : n->cmds = $7; 0.00 : 527304: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_MATVIEW; : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait 0.00 : 527308: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52730f: e9 6c a6 fe ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 527314: 48 8b 3d 45 35 69 00 mov 0x693545(%rip),%rdi # bba860 0.00 : 52731b: be 20 00 00 00 mov $0x20,%esi 0.00 : 527320: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527327: e8 e4 1a 27 00 callq 798e10 0.00 : 52732c: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $4; 0.00 : 527332: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cmds = $5; : n->relkind = OBJECT_MATVIEW; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 527339: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $4; 0.00 : 52733c: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 527340: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $5; 0.00 : 527344: 48 8b 11 mov (%rcx),%rdx : n->relkind = OBJECT_MATVIEW; 0.00 : 527347: c7 40 18 12 00 00 00 movl $0x12,0x18(%rax) : n->missing_ok = false; 0.00 : 52734e: c6 40 1c 00 movb $0x0,0x1c(%rax) : } : | ALTER MATERIALIZED VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $4; : n->cmds = $5; 0.00 : 527352: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_MATVIEW; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name alter_table_cmds 0.00 : 527356: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52735d: e9 1e a6 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 527362: 48 8b 3d f7 34 69 00 mov 0x6934f7(%rip),%rdi # bba860 0.00 : 527369: be 20 00 00 00 mov $0x20,%esi 0.00 : 52736e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527375: e8 96 1a 27 00 callq 798e10 0.00 : 52737a: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $5; 0.00 : 527380: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->cmds = $6; : n->relkind = OBJECT_VIEW; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 527387: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; 0.00 : 52738a: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 52738e: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $6; 0.00 : 527392: 48 8b 16 mov (%rsi),%rdx : n->relkind = OBJECT_VIEW; 0.00 : 527395: c7 40 18 23 00 00 00 movl $0x23,0x18(%rax) : n->missing_ok = true; 0.00 : 52739c: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER VIEW IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; : n->cmds = $6; 0.00 : 5273a0: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_VIEW; : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER MATERIALIZED VIEW qualified_name alter_table_cmds 0.00 : 5273a4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5273ab: e9 d0 a5 fe ff jmpq 511980 : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5273b0: 48 8b 3d a9 34 69 00 mov 0x6934a9(%rip),%rdi # bba860 0.00 : 5273b7: be 20 00 00 00 mov $0x20,%esi 0.00 : 5273bc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5273c3: e8 48 1a 27 00 callq 798e10 0.00 : 5273c8: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $3; 0.00 : 5273ce: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->cmds = $4; : n->relkind = OBJECT_VIEW; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 5273d5: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; 0.00 : 5273d8: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5273dc: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $4; 0.00 : 5273e0: 48 8b 13 mov (%rbx),%rdx : n->relkind = OBJECT_VIEW; 0.00 : 5273e3: c7 40 18 23 00 00 00 movl $0x23,0x18(%rax) : n->missing_ok = false; 0.00 : 5273ea: c6 40 1c 00 movb $0x0,0x1c(%rax) : } : | ALTER VIEW qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; : n->cmds = $4; 0.00 : 5273ee: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_VIEW; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER VIEW IF_P EXISTS qualified_name alter_table_cmds 0.00 : 5273f2: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5273f9: e9 82 a5 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5273fe: 48 8b 3d 5b 34 69 00 mov 0x69345b(%rip),%rdi # bba860 0.00 : 527405: be 20 00 00 00 mov $0x20,%esi 0.00 : 52740a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527411: e8 fa 19 27 00 callq 798e10 0.00 : 527416: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $5; 0.00 : 52741c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cmds = $6; : n->relkind = OBJECT_SEQUENCE; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 527423: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; 0.00 : 527426: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52742a: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $6; 0.00 : 52742e: 48 8b 11 mov (%rcx),%rdx : n->relkind = OBJECT_SEQUENCE; 0.00 : 527431: c7 40 18 1a 00 00 00 movl $0x1a,0x18(%rax) : n->missing_ok = true; 0.00 : 527438: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER SEQUENCE IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; : n->cmds = $6; 0.00 : 52743c: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_SEQUENCE; : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER VIEW qualified_name alter_table_cmds 0.00 : 527440: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527447: e9 34 a5 fe ff jmpq 511980 : n->nowait = $13; : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 52744c: 48 8b 3d 0d 34 69 00 mov 0x69340d(%rip),%rdi # bba860 0.00 : 527453: be 20 00 00 00 mov $0x20,%esi 0.00 : 527458: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52745f: e8 ac 19 27 00 callq 798e10 0.00 : 527464: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $3; 0.00 : 52746a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->cmds = $4; : n->relkind = OBJECT_SEQUENCE; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 527471: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; 0.00 : 527474: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 527478: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $4; 0.00 : 52747c: 48 8b 16 mov (%rsi),%rdx : n->relkind = OBJECT_SEQUENCE; 0.00 : 52747f: c7 40 18 1a 00 00 00 movl $0x1a,0x18(%rax) : n->missing_ok = false; 0.00 : 527486: c6 40 1c 00 movb $0x0,0x1c(%rax) : } : | ALTER SEQUENCE qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; : n->cmds = $4; 0.00 : 52748a: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_SEQUENCE; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER SEQUENCE IF_P EXISTS qualified_name alter_table_cmds 0.00 : 52748e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527495: e9 e6 a4 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER INDEX ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 52749a: 48 8b 3d bf 33 69 00 mov 0x6933bf(%rip),%rdi # bba860 0.00 : 5274a1: be 30 00 00 00 mov $0x30,%esi 0.00 : 5274a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5274ad: e8 5e 19 27 00 callq 798e10 0.00 : 5274b2: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $6; 0.00 : 5274b8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->objtype = OBJECT_INDEX; : n->roles = $9; : n->new_tablespacename = $12; : n->nowait = $13; : $$ = (Node *)n; 0.00 : 5274bf: 49 89 c6 mov %rax,%r14 : } : | ALTER INDEX ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 5274c2: 48 8b 53 c8 mov -0x38(%rbx),%rdx : n->objtype = OBJECT_INDEX; 0.00 : 5274c6: c7 40 10 0f 00 00 00 movl $0xf,0x10(%rax) : } : | ALTER INDEX ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 5274cd: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_INDEX; : n->roles = $9; 0.00 : 5274d1: 48 8b 53 e0 mov -0x20(%rbx),%rdx 0.00 : 5274d5: 48 89 50 18 mov %rdx,0x18(%rax) : n->new_tablespacename = $12; 0.00 : 5274d9: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5274dd: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $13; 0.00 : 5274e1: 0f b6 13 movzbl (%rbx),%edx 0.00 : 5274e4: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : | ALTER SEQUENCE qualified_name alter_table_cmds 0.00 : 5274e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5274ee: e9 8d a4 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER INDEX ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 5274f3: 48 8b 3d 66 33 69 00 mov 0x693366(%rip),%rdi # bba860 0.00 : 5274fa: be 30 00 00 00 mov $0x30,%esi 0.00 : 5274ff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527506: e8 05 19 27 00 callq 798e10 0.00 : 52750b: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $6; 0.00 : 527511: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objtype = OBJECT_INDEX; : n->roles = NIL; : n->new_tablespacename = $9; : n->nowait = $10; : $$ = (Node *)n; 0.00 : 527518: 49 89 c6 mov %rax,%r14 : } : | ALTER INDEX ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 52751b: 48 8b 51 e0 mov -0x20(%rcx),%rdx : n->objtype = OBJECT_INDEX; 0.00 : 52751f: c7 40 10 0f 00 00 00 movl $0xf,0x10(%rax) : n->roles = NIL; 0.00 : 527526: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 52752d: 00 : } : | ALTER INDEX ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 52752e: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_INDEX; : n->roles = NIL; : n->new_tablespacename = $9; 0.00 : 527532: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 527536: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $10; 0.00 : 52753a: 0f b6 11 movzbl (%rcx),%edx 0.00 : 52753d: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : | ALTER INDEX ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait 0.00 : 527540: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527547: e9 34 a4 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER INDEX IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 52754c: 48 8b 3d 0d 33 69 00 mov 0x69330d(%rip),%rdi # bba860 0.00 : 527553: be 20 00 00 00 mov $0x20,%esi 0.00 : 527558: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52755f: e8 ac 18 27 00 callq 798e10 0.00 : 527564: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $5; 0.00 : 52756a: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->cmds = $6; : n->relkind = OBJECT_INDEX; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 527571: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER INDEX IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; 0.00 : 527574: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 527578: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $6; 0.00 : 52757c: 48 8b 16 mov (%rsi),%rdx : n->relkind = OBJECT_INDEX; 0.00 : 52757f: c7 40 18 0f 00 00 00 movl $0xf,0x18(%rax) : n->missing_ok = true; 0.00 : 527586: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER INDEX IF_P EXISTS qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; : n->cmds = $6; 0.00 : 52758a: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_INDEX; : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER INDEX ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait 0.00 : 52758e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527595: e9 e6 a3 fe ff jmpq 511980 : n->nowait = $13; : $$ = (Node *)n; : } : | ALTER INDEX qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 52759a: 48 8b 3d bf 32 69 00 mov 0x6932bf(%rip),%rdi # bba860 0.00 : 5275a1: be 20 00 00 00 mov $0x20,%esi 0.00 : 5275a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5275ad: e8 5e 18 27 00 callq 798e10 0.00 : 5275b2: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $3; 0.00 : 5275b8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->cmds = $4; : n->relkind = OBJECT_INDEX; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 5275bf: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER INDEX qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; 0.00 : 5275c2: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5275c6: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $4; 0.00 : 5275ca: 48 8b 13 mov (%rbx),%rdx : n->relkind = OBJECT_INDEX; 0.00 : 5275cd: c7 40 18 0f 00 00 00 movl $0xf,0x18(%rax) : n->missing_ok = false; 0.00 : 5275d4: c6 40 1c 00 movb $0x0,0x1c(%rax) : } : | ALTER INDEX qualified_name alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; : n->cmds = $4; 0.00 : 5275d8: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_INDEX; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER INDEX IF_P EXISTS qualified_name alter_table_cmds 0.00 : 5275dc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5275e3: e9 98 a3 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER TABLE ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 5275e8: 48 8b 3d 71 32 69 00 mov 0x693271(%rip),%rdi # bba860 0.00 : 5275ef: be 30 00 00 00 mov $0x30,%esi 0.00 : 5275f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5275fb: e8 10 18 27 00 callq 798e10 0.00 : 527600: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $6; 0.00 : 527606: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->objtype = OBJECT_TABLE; : n->roles = $9; : n->new_tablespacename = $12; : n->nowait = $13; : $$ = (Node *)n; 0.00 : 52760d: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 527610: 48 8b 51 c8 mov -0x38(%rcx),%rdx : n->objtype = OBJECT_TABLE; 0.00 : 527614: c7 40 10 1b 00 00 00 movl $0x1b,0x10(%rax) : } : | ALTER TABLE ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 52761b: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_TABLE; : n->roles = $9; 0.00 : 52761f: 48 8b 51 e0 mov -0x20(%rcx),%rdx 0.00 : 527623: 48 89 50 18 mov %rdx,0x18(%rax) : n->new_tablespacename = $12; 0.00 : 527627: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 52762b: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $13; 0.00 : 52762f: 0f b6 11 movzbl (%rcx),%edx 0.00 : 527632: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : | ALTER INDEX qualified_name alter_table_cmds 0.00 : 527635: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52763c: e9 3f a3 fe ff jmpq 511980 : $$ = (Node *)n; : } : | ALTER TABLE ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); 0.00 : 527641: 48 8b 3d 18 32 69 00 mov 0x693218(%rip),%rdi # bba860 0.00 : 527648: be 30 00 00 00 mov $0x30,%esi 0.00 : 52764d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527654: e8 b7 17 27 00 callq 798e10 0.00 : 527659: c7 00 13 03 00 00 movl $0x313,(%rax) : n->orig_tablespacename = $6; 0.00 : 52765f: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->objtype = OBJECT_TABLE; : n->roles = NIL; : n->new_tablespacename = $9; : n->nowait = $10; : $$ = (Node *)n; 0.00 : 527666: 49 89 c6 mov %rax,%r14 : } : | ALTER TABLE ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 527669: 48 8b 56 e0 mov -0x20(%rsi),%rdx : n->objtype = OBJECT_TABLE; 0.00 : 52766d: c7 40 10 1b 00 00 00 movl $0x1b,0x10(%rax) : n->roles = NIL; 0.00 : 527674: 48 c7 40 18 00 00 00 movq $0x0,0x18(%rax) 0.00 : 52767b: 00 : } : | ALTER TABLE ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait : { : AlterTableMoveAllStmt *n = : makeNode(AlterTableMoveAllStmt); : n->orig_tablespacename = $6; 0.00 : 52767c: 48 89 50 08 mov %rdx,0x8(%rax) : n->objtype = OBJECT_TABLE; : n->roles = NIL; : n->new_tablespacename = $9; 0.00 : 527680: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 527684: 48 89 50 20 mov %rdx,0x20(%rax) : n->nowait = $10; 0.00 : 527688: 0f b6 16 movzbl (%rsi),%edx 0.00 : 52768b: 88 50 28 mov %dl,0x28(%rax) : $$ = (Node *)n; : } : | ALTER TABLE ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait 0.00 : 52768e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527695: e9 e6 a2 fe ff jmpq 511980 : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 52769a: 48 8b 3d bf 31 69 00 mov 0x6931bf(%rip),%rdi # bba860 0.00 : 5276a1: be 20 00 00 00 mov $0x20,%esi 0.00 : 5276a6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5276ad: e8 5e 17 27 00 callq 798e10 0.00 : 5276b2: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $5; 0.00 : 5276b8: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->cmds = $6; : n->relkind = OBJECT_TABLE; : n->missing_ok = true; : $$ = (Node *)n; 0.00 : 5276bf: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; 0.00 : 5276c2: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5276c6: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $6; 0.00 : 5276ca: 48 8b 13 mov (%rbx),%rdx : n->relkind = OBJECT_TABLE; 0.00 : 5276cd: c7 40 18 1b 00 00 00 movl $0x1b,0x18(%rax) : n->missing_ok = true; 0.00 : 5276d4: c6 40 1c 01 movb $0x1,0x1c(%rax) : } : | ALTER TABLE IF_P EXISTS relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $5; : n->cmds = $6; 0.00 : 5276d8: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_TABLE; : n->missing_ok = true; : $$ = (Node *)n; : } : | ALTER TABLE ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait 0.00 : 5276dc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5276e3: e9 98 a2 fe ff jmpq 511980 : *****************************************************************************/ : : AlterTableStmt: : ALTER TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); 0.00 : 5276e8: 48 8b 3d 71 31 69 00 mov 0x693171(%rip),%rdi # bba860 0.00 : 5276ef: be 20 00 00 00 mov $0x20,%esi 0.00 : 5276f4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5276fb: e8 10 17 27 00 callq 798e10 0.00 : 527700: c7 00 c2 02 00 00 movl $0x2c2,(%rax) : n->relation = $3; 0.00 : 527706: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->cmds = $4; : n->relkind = OBJECT_TABLE; : n->missing_ok = false; : $$ = (Node *)n; 0.00 : 52770d: 49 89 c6 mov %rax,%r14 : : AlterTableStmt: : ALTER TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; 0.00 : 527710: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 527714: 48 89 50 08 mov %rdx,0x8(%rax) : n->cmds = $4; 0.00 : 527718: 48 8b 11 mov (%rcx),%rdx : n->relkind = OBJECT_TABLE; 0.00 : 52771b: c7 40 18 1b 00 00 00 movl $0x1b,0x18(%rax) : n->missing_ok = false; 0.00 : 527722: c6 40 1c 00 movb $0x0,0x1c(%rax) : AlterTableStmt: : ALTER TABLE relation_expr alter_table_cmds : { : AlterTableStmt *n = makeNode(AlterTableStmt); : n->relation = $3; : n->cmds = $4; 0.00 : 527726: 48 89 50 10 mov %rdx,0x10(%rax) : n->relkind = OBJECT_TABLE; : n->missing_ok = false; : $$ = (Node *)n; : } : | ALTER TABLE IF_P EXISTS relation_expr alter_table_cmds 0.00 : 52772a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527731: e9 4a a2 fe ff jmpq 511980 : n->target = DISCARD_PLANS; : $$ = (Node *) n; : } : | DISCARD SEQUENCES : { : DiscardStmt *n = makeNode(DiscardStmt); 0.00 : 527736: 48 8b 3d 23 31 69 00 mov 0x693123(%rip),%rdi # bba860 0.00 : 52773d: be 08 00 00 00 mov $0x8,%esi 0.00 : 527742: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527749: e8 c2 16 27 00 callq 798e10 0.00 : 52774e: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : n->target = DISCARD_SEQUENCES; 0.00 : 527754: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : $$ = (Node *) n; 0.00 : 52775b: 49 89 c6 mov %rax,%r14 : } : 0.00 : 52775e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527765: e9 16 a2 fe ff jmpq 511980 : n->target = DISCARD_TEMP; : $$ = (Node *) n; : } : | DISCARD PLANS : { : DiscardStmt *n = makeNode(DiscardStmt); 0.00 : 52776a: 48 8b 3d ef 30 69 00 mov 0x6930ef(%rip),%rdi # bba860 0.00 : 527771: be 08 00 00 00 mov $0x8,%esi 0.00 : 527776: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52777d: e8 8e 16 27 00 callq 798e10 0.00 : 527782: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : n->target = DISCARD_PLANS; 0.00 : 527788: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : $$ = (Node *) n; 0.00 : 52778f: 49 89 c6 mov %rax,%r14 : } : | DISCARD SEQUENCES 0.00 : 527792: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527799: e9 e2 a1 fe ff jmpq 511980 : n->target = DISCARD_TEMP; : $$ = (Node *) n; : } : | DISCARD TEMPORARY : { : DiscardStmt *n = makeNode(DiscardStmt); 0.00 : 52779e: 48 8b 3d bb 30 69 00 mov 0x6930bb(%rip),%rdi # bba860 0.00 : 5277a5: be 08 00 00 00 mov $0x8,%esi 0.00 : 5277aa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5277b1: e8 5a 16 27 00 callq 798e10 0.00 : 5277b6: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : n->target = DISCARD_TEMP; 0.00 : 5277bc: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : $$ = (Node *) n; 0.00 : 5277c3: 49 89 c6 mov %rax,%r14 : } : | DISCARD PLANS 0.00 : 5277c6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5277cd: e9 ae a1 fe ff jmpq 511980 : n->target = DISCARD_ALL; : $$ = (Node *) n; : } : | DISCARD TEMP : { : DiscardStmt *n = makeNode(DiscardStmt); 0.00 : 5277d2: 48 8b 3d 87 30 69 00 mov 0x693087(%rip),%rdi # bba860 0.00 : 5277d9: be 08 00 00 00 mov $0x8,%esi 0.00 : 5277de: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5277e5: e8 26 16 27 00 callq 798e10 0.00 : 5277ea: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : n->target = DISCARD_TEMP; 0.00 : 5277f0: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : $$ = (Node *) n; 0.00 : 5277f7: 49 89 c6 mov %rax,%r14 : } : | DISCARD TEMPORARY 0.00 : 5277fa: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527801: e9 7a a1 fe ff jmpq 511980 : *****************************************************************************/ : : DiscardStmt: : DISCARD ALL : { : DiscardStmt *n = makeNode(DiscardStmt); 0.00 : 527806: 48 8b 3d 53 30 69 00 mov 0x693053(%rip),%rdi # bba860 0.00 : 52780d: be 08 00 00 00 mov $0x8,%esi 0.00 : 527812: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527819: e8 f2 15 27 00 callq 798e10 0.00 : 52781e: c7 00 e8 02 00 00 movl $0x2e8,(%rax) : n->target = DISCARD_ALL; 0.00 : 527824: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : $$ = (Node *) n; 0.00 : 52782b: 49 89 c6 mov %rax,%r14 : } : | DISCARD TEMP 0.00 : 52782e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527835: e9 46 a1 fe ff jmpq 511980 : * Checkpoint statement : */ : CheckPointStmt: : CHECKPOINT : { : CheckPointStmt *n = makeNode(CheckPointStmt); 0.00 : 52783a: 48 8b 3d 1f 30 69 00 mov 0x69301f(%rip),%rdi # bba860 0.00 : 527841: be 04 00 00 00 mov $0x4,%esi 0.00 : 527846: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52784d: e8 ce 17 27 00 callq 799020 0.00 : 527852: c7 00 f1 02 00 00 movl $0x2f1,(%rax) : $$ = (Node *)n; 0.00 : 527858: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 52785b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527862: e9 19 a1 fe ff jmpq 511980 : | qualified_name_list { $$ = $1; } : ; : : constraints_set_mode: : DEFERRED { $$ = TRUE; } : | IMMEDIATE { $$ = FALSE; } 0.00 : 527867: 45 30 f6 xor %r14b,%r14b : ; 0.00 : 52786a: e9 11 a1 fe ff jmpq 511980 : ALL { $$ = NIL; } : | qualified_name_list { $$ = $1; } : ; : : constraints_set_mode: : DEFERRED { $$ = TRUE; } 0.00 : 52786f: 41 b6 01 mov $0x1,%r14b : | IMMEDIATE { $$ = FALSE; } 0.00 : 527872: e9 09 a1 fe ff jmpq 511980 : } : ; : : constraints_set_list: : ALL { $$ = NIL; } : | qualified_name_list { $$ = $1; } 0.00 : 527877: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52787e: 4c 8b 36 mov (%rsi),%r14 : ; 0.00 : 527881: e9 fa a0 fe ff jmpq 511980 : $$ = (Node *) n; : } : ; : : constraints_set_list: : ALL { $$ = NIL; } 0.00 : 527886: 45 31 f6 xor %r14d,%r14d : | qualified_name_list { $$ = $1; } 0.00 : 527889: e9 f2 a0 fe ff jmpq 511980 : : : ConstraintsSetStmt: : SET CONSTRAINTS constraints_set_list constraints_set_mode : { : ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); 0.00 : 52788e: 48 8b 3d cb 2f 69 00 mov 0x692fcb(%rip),%rdi # bba860 0.00 : 527895: be 18 00 00 00 mov $0x18,%esi 0.00 : 52789a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5278a1: e8 6a 15 27 00 callq 798e10 0.00 : 5278a6: c7 00 ef 02 00 00 movl $0x2ef,(%rax) : n->constraints = $3; 0.00 : 5278ac: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->deferred = $4; : $$ = (Node *) n; 0.00 : 5278b3: 49 89 c6 mov %rax,%r14 : : ConstraintsSetStmt: : SET CONSTRAINTS constraints_set_list constraints_set_mode : { : ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); : n->constraints = $3; 0.00 : 5278b6: 48 8b 53 f8 mov -0x8(%rbx),%rdx 0.00 : 5278ba: 48 89 50 08 mov %rdx,0x8(%rax) : n->deferred = $4; 0.00 : 5278be: 0f b6 13 movzbl (%rbx),%edx 0.00 : 5278c1: 88 50 10 mov %dl,0x10(%rax) : $$ = (Node *) n; : } : ; 0.00 : 5278c4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5278cb: e9 b0 a0 fe ff jmpq 511980 : n->name = "session_authorization"; : $$ = (Node *) n; : } : | SHOW ALL : { : VariableShowStmt *n = makeNode(VariableShowStmt); 0.00 : 5278d0: 48 8b 3d 89 2f 69 00 mov 0x692f89(%rip),%rdi # bba860 0.00 : 5278d7: be 10 00 00 00 mov $0x10,%esi 0.00 : 5278dc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5278e3: e8 28 15 27 00 callq 798e10 0.00 : 5278e8: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : n->name = "all"; 0.00 : 5278ee: 48 c7 40 08 c4 bb 87 movq $0x87bbc4,0x8(%rax) 0.00 : 5278f5: 00 : $$ = (Node *) n; 0.00 : 5278f6: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 5278f9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527900: e9 7b a0 fe ff jmpq 511980 : n->name = "transaction_isolation"; : $$ = (Node *) n; : } : | SHOW SESSION AUTHORIZATION : { : VariableShowStmt *n = makeNode(VariableShowStmt); 0.00 : 527905: 48 8b 3d 54 2f 69 00 mov 0x692f54(%rip),%rdi # bba860 0.00 : 52790c: be 10 00 00 00 mov $0x10,%esi 0.00 : 527911: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527918: e8 f3 14 27 00 callq 798e10 0.00 : 52791d: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : n->name = "session_authorization"; 0.00 : 527923: 48 c7 40 08 f8 94 7c movq $0x7c94f8,0x8(%rax) 0.00 : 52792a: 00 : $$ = (Node *) n; 0.00 : 52792b: 49 89 c6 mov %rax,%r14 : } : | SHOW ALL 0.00 : 52792e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527935: e9 46 a0 fe ff jmpq 511980 : n->name = "timezone"; : $$ = (Node *) n; : } : | SHOW TRANSACTION ISOLATION LEVEL : { : VariableShowStmt *n = makeNode(VariableShowStmt); 0.00 : 52793a: 48 8b 3d 1f 2f 69 00 mov 0x692f1f(%rip),%rdi # bba860 0.00 : 527941: be 10 00 00 00 mov $0x10,%esi 0.00 : 527946: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52794d: e8 be 14 27 00 callq 798e10 0.00 : 527952: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : n->name = "transaction_isolation"; 0.00 : 527958: 48 c7 40 08 2a df 89 movq $0x89df2a,0x8(%rax) 0.00 : 52795f: 00 : $$ = (Node *) n; 0.00 : 527960: 49 89 c6 mov %rax,%r14 : } : | SHOW SESSION AUTHORIZATION 0.00 : 527963: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52796a: e9 11 a0 fe ff jmpq 511980 : n->name = $2; : $$ = (Node *) n; : } : | SHOW TIME ZONE : { : VariableShowStmt *n = makeNode(VariableShowStmt); 0.00 : 52796f: 48 8b 3d ea 2e 69 00 mov 0x692eea(%rip),%rdi # bba860 0.00 : 527976: be 10 00 00 00 mov $0x10,%esi 0.00 : 52797b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527982: e8 89 14 27 00 callq 798e10 0.00 : 527987: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : n->name = "timezone"; 0.00 : 52798d: 48 c7 40 08 60 fc 8f movq $0x8ffc60,0x8(%rax) 0.00 : 527994: 00 : $$ = (Node *) n; 0.00 : 527995: 49 89 c6 mov %rax,%r14 : } : | SHOW TRANSACTION ISOLATION LEVEL 0.00 : 527998: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52799f: e9 dc 9f fe ff jmpq 511980 : : : VariableShowStmt: : SHOW var_name : { : VariableShowStmt *n = makeNode(VariableShowStmt); 0.00 : 5279a4: 48 8b 3d b5 2e 69 00 mov 0x692eb5(%rip),%rdi # bba860 0.00 : 5279ab: be 10 00 00 00 mov $0x10,%esi 0.00 : 5279b0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5279b7: e8 54 14 27 00 callq 798e10 0.00 : 5279bc: c7 00 e7 02 00 00 movl $0x2e7,(%rax) : n->name = $2; 0.00 : 5279c2: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = (Node *) n; 0.00 : 5279c9: 49 89 c6 mov %rax,%r14 : : VariableShowStmt: : SHOW var_name : { : VariableShowStmt *n = makeNode(VariableShowStmt); : n->name = $2; 0.00 : 5279cc: 48 8b 11 mov (%rcx),%rdx 0.00 : 5279cf: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *) n; : } : | SHOW TIME ZONE 0.00 : 5279d3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5279da: e9 a1 9f fe ff jmpq 511980 : ; : : /* SetResetClause allows SET or RESET without LOCAL */ : FunctionSetResetClause: : SET set_rest_more { $$ = $2; } : | VariableResetStmt { $$ = (VariableSetStmt *) $1; } 0.00 : 5279df: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5279e6: 4c 8b 32 mov (%rdx),%r14 : ; 0.00 : 5279e9: e9 92 9f fe ff jmpq 511980 : | VariableResetStmt { $$ = (VariableSetStmt *) $1; } : ; : : /* SetResetClause allows SET or RESET without LOCAL */ : FunctionSetResetClause: : SET set_rest_more { $$ = $2; } 0.00 : 5279ee: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5279f5: 4c 8b 30 mov (%rax),%r14 : | VariableResetStmt { $$ = (VariableSetStmt *) $1; } 0.00 : 5279f8: e9 83 9f fe ff jmpq 511980 : ; : : /* SetResetClause allows SET or RESET without LOCAL */ : SetResetClause: : SET set_rest { $$ = $2; } : | VariableResetStmt { $$ = (VariableSetStmt *) $1; } 0.00 : 5279fd: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 527a04: 4c 8b 36 mov (%rsi),%r14 : ; 0.00 : 527a07: e9 74 9f fe ff jmpq 511980 : } : ; : : /* SetResetClause allows SET or RESET without LOCAL */ : SetResetClause: : SET set_rest { $$ = $2; } 0.00 : 527a0c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527a13: 4c 8b 33 mov (%rbx),%r14 : | VariableResetStmt { $$ = (VariableSetStmt *) $1; } 0.00 : 527a16: e9 65 9f fe ff jmpq 511980 : n->name = $1; : $$ = n; : } : | ALL : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527a1b: 48 8b 3d 3e 2e 69 00 mov 0x692e3e(%rip),%rdi # bba860 0.00 : 527a22: be 20 00 00 00 mov $0x20,%esi 0.00 : 527a27: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527a2e: e8 dd 13 27 00 callq 798e10 0.00 : 527a33: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_RESET_ALL; 0.00 : 527a39: c7 40 04 05 00 00 00 movl $0x5,0x4(%rax) : $$ = n; 0.00 : 527a40: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 527a43: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527a4a: e9 31 9f fe ff jmpq 511980 : ; : : generic_reset: : var_name : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527a4f: 48 8b 3d 0a 2e 69 00 mov 0x692e0a(%rip),%rdi # bba860 0.00 : 527a56: be 20 00 00 00 mov $0x20,%esi 0.00 : 527a5b: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527a62: e8 a9 13 27 00 callq 798e10 0.00 : 527a67: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_RESET; 0.00 : 527a6d: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->name = $1; : $$ = n; 0.00 : 527a74: 49 89 c6 mov %rax,%r14 : generic_reset: : var_name : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_RESET; : n->name = $1; 0.00 : 527a77: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527a7e: 48 8b 11 mov (%rcx),%rdx 0.00 : 527a81: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | ALL 0.00 : 527a85: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527a8c: e9 ef 9e fe ff jmpq 511980 : n->name = "transaction_isolation"; : $$ = n; : } : | SESSION AUTHORIZATION : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527a91: 48 8b 3d c8 2d 69 00 mov 0x692dc8(%rip),%rdi # bba860 0.00 : 527a98: be 20 00 00 00 mov $0x20,%esi 0.00 : 527a9d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527aa4: e8 67 13 27 00 callq 798e10 0.00 : 527aa9: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_RESET; 0.00 : 527aaf: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->name = "session_authorization"; : $$ = n; 0.00 : 527ab6: 49 89 c6 mov %rax,%r14 : } : | SESSION AUTHORIZATION : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_RESET; : n->name = "session_authorization"; 0.00 : 527ab9: 48 c7 40 08 f8 94 7c movq $0x7c94f8,0x8(%rax) 0.00 : 527ac0: 00 : $$ = n; : } : ; 0.00 : 527ac1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527ac8: e9 b3 9e fe ff jmpq 511980 : n->name = "timezone"; : $$ = n; : } : | TRANSACTION ISOLATION LEVEL : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527acd: 48 8b 3d 8c 2d 69 00 mov 0x692d8c(%rip),%rdi # bba860 0.00 : 527ad4: be 20 00 00 00 mov $0x20,%esi 0.00 : 527ad9: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527ae0: e8 2b 13 27 00 callq 798e10 0.00 : 527ae5: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_RESET; 0.00 : 527aeb: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->name = "transaction_isolation"; : $$ = n; 0.00 : 527af2: 49 89 c6 mov %rax,%r14 : } : | TRANSACTION ISOLATION LEVEL : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_RESET; : n->name = "transaction_isolation"; 0.00 : 527af5: 48 c7 40 08 2a df 89 movq $0x89df2a,0x8(%rax) 0.00 : 527afc: 00 : $$ = n; : } : | SESSION AUTHORIZATION 0.00 : 527afd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527b04: e9 77 9e fe ff jmpq 511980 : : reset_rest: : generic_reset { $$ = $1; } : | TIME ZONE : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527b09: 48 8b 3d 50 2d 69 00 mov 0x692d50(%rip),%rdi # bba860 0.00 : 527b10: be 20 00 00 00 mov $0x20,%esi 0.00 : 527b15: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527b1c: e8 ef 12 27 00 callq 798e10 0.00 : 527b21: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_RESET; 0.00 : 527b27: c7 40 04 04 00 00 00 movl $0x4,0x4(%rax) : n->name = "timezone"; : $$ = n; 0.00 : 527b2e: 49 89 c6 mov %rax,%r14 : generic_reset { $$ = $1; } : | TIME ZONE : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_RESET; : n->name = "timezone"; 0.00 : 527b31: 48 c7 40 08 60 fc 8f movq $0x8ffc60,0x8(%rax) 0.00 : 527b38: 00 : $$ = n; : } : | TRANSACTION ISOLATION LEVEL 0.00 : 527b39: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527b40: e9 3b 9e fe ff jmpq 511980 : VariableResetStmt: : RESET reset_rest { $$ = (Node *) $2; } : ; : : reset_rest: : generic_reset { $$ = $1; } 0.00 : 527b45: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 527b4c: 4c 8b 32 mov (%rdx),%r14 : | TIME ZONE 0.00 : 527b4f: e9 2c 9e fe ff jmpq 511980 : NonReservedWord { $$ = $1; } : | Sconst { $$ = $1; } : ; : : VariableResetStmt: : RESET reset_rest { $$ = (Node *) $2; } 0.00 : 527b54: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 527b5b: 4c 8b 30 mov (%rax),%r14 : ; 0.00 : 527b5e: e9 1d 9e fe ff jmpq 511980 : | /*EMPTY*/ { $$ = NULL; } : ; : : NonReservedWord_or_Sconst: : NonReservedWord { $$ = $1; } : | Sconst { $$ = $1; } 0.00 : 527b63: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 527b6a: 4c 8b 36 mov (%rsi),%r14 : ; 0.00 : 527b6d: e9 0e 9e fe ff jmpq 511980 : | DEFAULT { $$ = NULL; } : | /*EMPTY*/ { $$ = NULL; } : ; : : NonReservedWord_or_Sconst: : NonReservedWord { $$ = $1; } 0.00 : 527b72: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527b79: 4c 8b 33 mov (%rbx),%r14 : | Sconst { $$ = $1; } 0.00 : 527b7c: e9 ff 9d fe ff jmpq 511980 : ; : : opt_encoding: : Sconst { $$ = $1; } : | DEFAULT { $$ = NULL; } : | /*EMPTY*/ { $$ = NULL; } 0.00 : 527b81: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 527b84: e9 f7 9d fe ff jmpq 511980 : | LOCAL { $$ = NULL; } : ; : : opt_encoding: : Sconst { $$ = $1; } : | DEFAULT { $$ = NULL; } 0.00 : 527b89: 45 31 f6 xor %r14d,%r14d : | /*EMPTY*/ { $$ = NULL; } 0.00 : 527b8c: e9 ef 9d fe ff jmpq 511980 : | DEFAULT { $$ = NULL; } : | LOCAL { $$ = NULL; } : ; : : opt_encoding: : Sconst { $$ = $1; } 0.00 : 527b91: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527b98: 4c 8b 31 mov (%rcx),%r14 : | DEFAULT { $$ = NULL; } 0.00 : 527b9b: e9 e0 9d fe ff jmpq 511980 : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | NumericOnly { $$ = makeAConst($1, @1); } : | DEFAULT { $$ = NULL; } : | LOCAL { $$ = NULL; } 0.00 : 527ba0: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 527ba3: e9 d8 9d fe ff jmpq 511980 : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | NumericOnly { $$ = makeAConst($1, @1); } : | DEFAULT { $$ = NULL; } 0.00 : 527ba8: 45 31 f6 xor %r14d,%r14d : | LOCAL { $$ = NULL; } 0.00 : 527bab: e9 d0 9d fe ff jmpq 511980 : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | NumericOnly { $$ = makeAConst($1, @1); } 0.00 : 527bb0: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 527bb7: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 527bbe: 8b 30 mov (%rax),%esi 0.00 : 527bc0: 48 8b 3a mov (%rdx),%rdi 0.00 : 527bc3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527bca: e8 91 90 fe ff callq 510c60 : | DEFAULT { $$ = NULL; } 0.00 : 527bcf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); : } : | NumericOnly { $$ = makeAConst($1, @1); } 0.00 : 527bd6: 49 89 c6 mov %rax,%r14 : | DEFAULT { $$ = NULL; } 0.00 : 527bd9: e9 a2 9d fe ff jmpq 511980 : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); : } : | ConstInterval '(' Iconst ')' Sconst opt_interval : { : TypeName *t = $1; 0.00 : 527bde: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : if ($6 != NIL) 0.00 : 527be5: 48 8b 16 mov (%rsi),%rdx : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); : } : | ConstInterval '(' Iconst ')' Sconst opt_interval : { : TypeName *t = $1; 0.00 : 527be8: 4c 8b 66 d8 mov -0x28(%rsi),%r12 : if ($6 != NIL) 0.00 : 527bec: 48 85 d2 test %rdx,%rdx 0.00 : 527bef: 0f 84 4c 21 00 00 je 529d41 : { : A_Const *n = (A_Const *) linitial($6); : if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) 0.00 : 527bf5: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 527bf9: 48 8b 00 mov (%rax),%rax 0.00 : 527bfc: 48 f7 40 10 ff f3 ff testq $0xfffffffffffff3ff,0x10(%rax) 0.00 : 527c03: ff 0.00 : 527c04: 0f 85 25 21 00 00 jne 529d2f : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), : parser_errposition(@6))); : if (list_length($6) != 1) 0.00 : 527c0a: 83 7a 04 01 cmpl $0x1,0x4(%rdx) 0.00 : 527c0e: 0f 85 85 21 00 00 jne 529d99 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("interval precision specified twice"), : parser_errposition(@1))); : t->typmods = lappend($6, makeIntConst($3, @3)); 0.00 : 527c14: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 527c1b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527c22: 8b 71 f4 mov -0xc(%rcx),%esi 0.00 : 527c25: 8b 7b e8 mov -0x18(%rbx),%edi 0.00 : 527c28: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527c2f: e8 dc 8f fe ff callq 510c10 0.00 : 527c34: 48 8b 3b mov (%rbx),%rdi 0.00 : 527c37: 48 89 c6 mov %rax,%rsi 0.00 : 527c3a: e8 41 a2 0b 00 callq 5e1e80 0.00 : 527c3f: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 527c44: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); 0.00 : 527c4b: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 527c52: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527c59: 4c 89 e2 mov %r12,%rdx 0.00 : 527c5c: 8b 71 fc mov -0x4(%rcx),%esi 0.00 : 527c5f: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 527c63: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527c6a: e8 51 8f fe ff callq 510bc0 : } : | NumericOnly { $$ = makeAConst($1, @1); } 0.00 : 527c6f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : t->typmods = lappend($6, makeIntConst($3, @3)); : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), : makeIntConst($3, @3)); : $$ = makeStringConstCast($5, @5, t); 0.00 : 527c76: 49 89 c6 mov %rax,%r14 : } : | NumericOnly { $$ = makeAConst($1, @1); } 0.00 : 527c79: e9 02 9d fe ff jmpq 511980 : { : $$ = makeStringConst($1, @1); : } : | ConstInterval Sconst opt_interval : { : TypeName *t = $1; 0.00 : 527c7e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : if ($3 != NIL) 0.00 : 527c85: 48 8b 0b mov (%rbx),%rcx : { : $$ = makeStringConst($1, @1); : } : | ConstInterval Sconst opt_interval : { : TypeName *t = $1; 0.00 : 527c88: 48 8b 53 f0 mov -0x10(%rbx),%rdx : if ($3 != NIL) 0.00 : 527c8c: 48 85 c9 test %rcx,%rcx 0.00 : 527c8f: 74 15 je 527ca6 : { : A_Const *n = (A_Const *) linitial($3); : if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) 0.00 : 527c91: 48 8b 41 08 mov 0x8(%rcx),%rax 0.00 : 527c95: 48 8b 00 mov (%rax),%rax 0.00 : 527c98: 48 f7 40 10 ff f3 ff testq $0xfffffffffffff3ff,0x10(%rax) 0.00 : 527c9f: ff 0.00 : 527ca0: 0f 85 c3 1c 00 00 jne 529969 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), : parser_errposition(@3))); : } : t->typmods = $3; 0.00 : 527ca6: 48 89 4a 18 mov %rcx,0x18(%rdx) : $$ = makeStringConstCast($2, @2, t); 0.00 : 527caa: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 527cb1: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527cb8: 8b 71 fc mov -0x4(%rcx),%esi 0.00 : 527cbb: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 527cbf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527cc6: e8 f5 8e fe ff callq 510bc0 : } : | ConstInterval '(' Iconst ')' Sconst opt_interval 0.00 : 527ccb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), : parser_errposition(@3))); : } : t->typmods = $3; : $$ = makeStringConstCast($2, @2, t); 0.00 : 527cd2: 49 89 c6 mov %rax,%r14 : } : | ConstInterval '(' Iconst ')' Sconst opt_interval 0.00 : 527cd5: e9 a6 9c fe ff jmpq 511980 : * so use IDENT (meaning we reject anything that is a key word). : */ : zone_value: : Sconst : { : $$ = makeStringConst($1, @1); 0.00 : 527cda: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 527ce1: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 527ce8: 8b 33 mov (%rbx),%esi 0.00 : 527cea: 48 8b 38 mov (%rax),%rdi 0.00 : 527ced: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527cf4: e8 77 8e fe ff callq 510b70 : } : | IDENT 0.00 : 527cf9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * so use IDENT (meaning we reject anything that is a key word). : */ : zone_value: : Sconst : { : $$ = makeStringConst($1, @1); 0.00 : 527d00: 49 89 c6 mov %rax,%r14 : } : | IDENT 0.00 : 527d03: e9 78 9c fe ff jmpq 511980 : /* : * OFF is also accepted as a boolean value, but is handled by : * the NonReservedWord rule. The action for booleans and strings : * is the same, so we don't need to distinguish them here. : */ : | NonReservedWord_or_Sconst { $$ = $1; } 0.00 : 527d08: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527d0f: 4c 8b 31 mov (%rcx),%r14 : ; 0.00 : 527d12: e9 69 9c fe ff jmpq 511980 : ; : : opt_boolean_or_string: : TRUE_P { $$ = "true"; } : | FALSE_P { $$ = "false"; } : | ON { $$ = "on"; } 0.00 : 527d17: 41 be e0 b7 87 00 mov $0x87b7e0,%r14d : /* 0.00 : 527d1d: e9 5e 9c fe ff jmpq 511980 : | SERIALIZABLE { $$ = "serializable"; } : ; : : opt_boolean_or_string: : TRUE_P { $$ = "true"; } : | FALSE_P { $$ = "false"; } 0.00 : 527d22: 41 be c2 27 7b 00 mov $0x7b27c2,%r14d : | ON { $$ = "on"; } 0.00 : 527d28: e9 53 9c fe ff jmpq 511980 : | REPEATABLE READ { $$ = "repeatable read"; } : | SERIALIZABLE { $$ = "serializable"; } : ; : : opt_boolean_or_string: : TRUE_P { $$ = "true"; } 0.00 : 527d2d: 41 be 1e 93 8e 00 mov $0x8e931e,%r14d : | FALSE_P { $$ = "false"; } 0.00 : 527d33: e9 48 9c fe ff jmpq 511980 : ; : : iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } : | READ COMMITTED { $$ = "read committed"; } : | REPEATABLE READ { $$ = "repeatable read"; } : | SERIALIZABLE { $$ = "serializable"; } 0.00 : 527d38: 41 be 65 95 7c 00 mov $0x7c9565,%r14d : ; 0.00 : 527d3e: e9 3d 9c fe ff jmpq 511980 : { : $$ = makeStringConst($1, @1); : } : | IDENT : { : $$ = makeStringConst($1, @1); 0.00 : 527d43: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 527d4a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527d51: 8b 32 mov (%rdx),%esi 0.00 : 527d53: 48 8b 39 mov (%rcx),%rdi 0.00 : 527d56: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527d5d: e8 0e 8e fe ff callq 510b70 : } : | ConstInterval Sconst opt_interval 0.00 : 527d62: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeStringConst($1, @1); : } : | IDENT : { : $$ = makeStringConst($1, @1); 0.00 : 527d69: 49 89 c6 mov %rax,%r14 : } : | ConstInterval Sconst opt_interval 0.00 : 527d6c: e9 0f 9c fe ff jmpq 511980 : { $$ = makeAConst($1, @1); } : ; : : iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } : | READ COMMITTED { $$ = "read committed"; } : | REPEATABLE READ { $$ = "repeatable read"; } 0.00 : 527d71: 41 be 55 95 7c 00 mov $0x7c9555,%r14d : | SERIALIZABLE { $$ = "serializable"; } 0.00 : 527d77: e9 04 9c fe ff jmpq 511980 : | NumericOnly : { $$ = makeAConst($1, @1); } : ; : : iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } : | READ COMMITTED { $$ = "read committed"; } 0.00 : 527d7c: 41 be 46 95 7c 00 mov $0x7c9546,%r14d : | REPEATABLE READ { $$ = "repeatable read"; } 0.00 : 527d82: e9 f9 9b fe ff jmpq 511980 : { $$ = makeStringConst($1, @1); } : | NumericOnly : { $$ = makeAConst($1, @1); } : ; : : iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } 0.00 : 527d87: 41 be 35 95 7c 00 mov $0x7c9535,%r14d : | READ COMMITTED { $$ = "read committed"; } 0.00 : 527d8d: e9 ee 9b fe ff jmpq 511980 : ; : : var_value: opt_boolean_or_string : { $$ = makeStringConst($1, @1); } : | NumericOnly : { $$ = makeAConst($1, @1); } 0.00 : 527d92: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 527d99: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 527da0: 8b 30 mov (%rax),%esi 0.00 : 527da2: 48 8b 3a mov (%rdx),%rdi 0.00 : 527da5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527dac: e8 af 8e fe ff callq 510c60 : ; 0.00 : 527db1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : var_value: opt_boolean_or_string : { $$ = makeStringConst($1, @1); } : | NumericOnly : { $$ = makeAConst($1, @1); } 0.00 : 527db8: 49 89 c6 mov %rax,%r14 : ; 0.00 : 527dbb: e9 c0 9b fe ff jmpq 511980 : var_list: var_value { $$ = list_make1($1); } : | var_list ',' var_value { $$ = lappend($1, $3); } : ; : : var_value: opt_boolean_or_string : { $$ = makeStringConst($1, @1); } 0.00 : 527dc0: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 527dc7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527dce: 8b 31 mov (%rcx),%esi 0.00 : 527dd0: 48 8b 3b mov (%rbx),%rdi 0.00 : 527dd3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527dda: e8 91 8d fe ff callq 510b70 : | NumericOnly 0.00 : 527ddf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : var_list: var_value { $$ = list_make1($1); } : | var_list ',' var_value { $$ = lappend($1, $3); } : ; : : var_value: opt_boolean_or_string : { $$ = makeStringConst($1, @1); } 0.00 : 527de6: 49 89 c6 mov %rax,%r14 : | NumericOnly 0.00 : 527de9: e9 92 9b fe ff jmpq 511980 : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } : ; : : var_list: var_value { $$ = list_make1($1); } : | var_list ',' var_value { $$ = lappend($1, $3); } 0.00 : 527dee: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 527df5: 48 8b 7a f0 mov -0x10(%rdx),%rdi 0.00 : 527df9: 48 8b 32 mov (%rdx),%rsi 0.00 : 527dfc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527e03: e8 78 a0 0b 00 callq 5e1e80 : ; 0.00 : 527e08: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } : ; : : var_list: var_value { $$ = list_make1($1); } : | var_list ',' var_value { $$ = lappend($1, $3); } 0.00 : 527e0f: 49 89 c6 mov %rax,%r14 : ; 0.00 : 527e12: e9 69 9b fe ff jmpq 511980 : var_name: ColId { $$ = $1; } : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } : ; : : var_list: var_value { $$ = list_make1($1); } 0.00 : 527e17: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 527e1e: 31 f6 xor %esi,%esi 0.00 : 527e20: 48 8b 38 mov (%rax),%rdi 0.00 : 527e23: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527e2a: e8 21 9a 0b 00 callq 5e1850 : | var_list ',' var_value { $$ = lappend($1, $3); } 0.00 : 527e2f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : var_name: ColId { $$ = $1; } : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } : ; : : var_list: var_value { $$ = list_make1($1); } 0.00 : 527e36: 49 89 c6 mov %rax,%r14 : | var_list ',' var_value { $$ = lappend($1, $3); } 0.00 : 527e39: e9 42 9b fe ff jmpq 511980 : } : ; : : var_name: ColId { $$ = $1; } : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } 0.00 : 527e3e: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 527e45: bf e4 b7 87 00 mov $0x87b7e4,%edi 0.00 : 527e4a: 31 c0 xor %eax,%eax 0.00 : 527e4c: 48 8b 73 f0 mov -0x10(%rbx),%rsi 0.00 : 527e50: 48 8b 13 mov (%rbx),%rdx 0.00 : 527e53: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527e5a: e8 81 66 28 00 callq 7ae4e0 : ; 0.00 : 527e5f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : } : ; : : var_name: ColId { $$ = $1; } : | var_name '.' ColId : { $$ = psprintf("%s.%s", $1, $3); } 0.00 : 527e66: 49 89 c6 mov %rax,%r14 : ; 0.00 : 527e69: e9 12 9b fe ff jmpq 511980 : n->args = list_make1(makeStringConst($3, @3)); : $$ = n; : } : ; : : var_name: ColId { $$ = $1; } 0.00 : 527e6e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527e75: 4c 8b 31 mov (%rcx),%r14 : | var_name '.' ColId 0.00 : 527e78: e9 03 9b fe ff jmpq 511980 : $$ = n; : } : /* Special syntaxes invented by PostgreSQL: */ : | TRANSACTION SNAPSHOT Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527e7d: 48 8b 3d dc 29 69 00 mov 0x6929dc(%rip),%rdi # bba860 0.00 : 527e84: be 20 00 00 00 mov $0x20,%esi 0.00 : 527e89: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527e90: e8 7b 0f 27 00 callq 798e10 0.00 : 527e95: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_MULTI; 0.00 : 527e9b: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : $$ = n; : } : /* Special syntaxes invented by PostgreSQL: */ : | TRANSACTION SNAPSHOT Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527ea2: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_MULTI; : n->name = "TRANSACTION SNAPSHOT"; 0.00 : 527ea5: 48 c7 40 08 20 95 7c movq $0x7c9520,0x8(%rax) 0.00 : 527eac: 00 : n->args = list_make1(makeStringConst($3, @3)); 0.00 : 527ead: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$ = n; 0.00 : 527eb4: 49 89 de mov %rbx,%r14 : | TRANSACTION SNAPSHOT Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_MULTI; : n->name = "TRANSACTION SNAPSHOT"; : n->args = list_make1(makeStringConst($3, @3)); 0.00 : 527eb7: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 527ebe: 48 8b 3a mov (%rdx),%rdi 0.00 : 527ec1: 8b 30 mov (%rax),%esi 0.00 : 527ec3: e8 a8 8c fe ff callq 510b70 0.00 : 527ec8: 31 f6 xor %esi,%esi 0.00 : 527eca: 48 89 c7 mov %rax,%rdi 0.00 : 527ecd: e8 7e 99 0b 00 callq 5e1850 0.00 : 527ed2: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : ; 0.00 : 527ed6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527edd: e9 9e 9a fe ff jmpq 511980 : n->name = "session_authorization"; : $$ = n; : } : | XML_P OPTION document_or_content : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527ee2: 48 8b 3d 77 29 69 00 mov 0x692977(%rip),%rdi # bba860 0.00 : 527ee9: be 20 00 00 00 mov $0x20,%esi 0.00 : 527eee: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527ef5: e8 16 0f 27 00 callq 798e10 0.00 : 527efa: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 527f00: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->name = "session_authorization"; : $$ = n; : } : | XML_P OPTION document_or_content : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527f07: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "xmloption"; 0.00 : 527f0a: 48 c7 40 08 0e 95 7c movq $0x7c950e,0x8(%rax) 0.00 : 527f11: 00 : n->args = list_make1(makeStringConst($3 == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", @3)); 0.00 : 527f12: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 527f19: b8 50 6e 8c 00 mov $0x8c6e50,%eax 0.00 : 527f1e: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 527f25: bf 18 95 7c 00 mov $0x7c9518,%edi : $$ = n; 0.00 : 527f2a: 49 89 de mov %rbx,%r14 : | XML_P OPTION document_or_content : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = "xmloption"; : n->args = list_make1(makeStringConst($3 == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", @3)); 0.00 : 527f2d: 44 8b 01 mov (%rcx),%r8d 0.00 : 527f30: 8b 32 mov (%rdx),%esi 0.00 : 527f32: 45 85 c0 test %r8d,%r8d 0.00 : 527f35: 48 0f 44 f8 cmove %rax,%rdi 0.00 : 527f39: e8 32 8c fe ff callq 510b70 0.00 : 527f3e: 31 f6 xor %esi,%esi 0.00 : 527f40: 48 89 c7 mov %rax,%rdi 0.00 : 527f43: e8 08 99 0b 00 callq 5e1850 0.00 : 527f48: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : /* Special syntaxes invented by PostgreSQL: */ 0.00 : 527f4c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527f53: e9 28 9a fe ff jmpq 511980 : n->args = list_make1(makeStringConst($3, @3)); : $$ = n; : } : | SESSION AUTHORIZATION DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527f58: 48 8b 3d 01 29 69 00 mov 0x692901(%rip),%rdi # bba860 0.00 : 527f5f: be 20 00 00 00 mov $0x20,%esi 0.00 : 527f64: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527f6b: e8 a0 0e 27 00 callq 798e10 0.00 : 527f70: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_DEFAULT; 0.00 : 527f76: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->name = "session_authorization"; : $$ = n; 0.00 : 527f7d: 49 89 c6 mov %rax,%r14 : } : | SESSION AUTHORIZATION DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_DEFAULT; : n->name = "session_authorization"; 0.00 : 527f80: 48 c7 40 08 f8 94 7c movq $0x7c94f8,0x8(%rax) 0.00 : 527f87: 00 : $$ = n; : } : | XML_P OPTION document_or_content 0.00 : 527f88: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527f8f: e9 ec 99 fe ff jmpq 511980 : n->args = list_make1(makeStringConst($2, @2)); : $$ = n; : } : | SESSION AUTHORIZATION NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527f94: 48 8b 3d c5 28 69 00 mov 0x6928c5(%rip),%rdi # bba860 0.00 : 527f9b: be 20 00 00 00 mov $0x20,%esi 0.00 : 527fa0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 527fa7: e8 64 0e 27 00 callq 798e10 0.00 : 527fac: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 527fb2: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->args = list_make1(makeStringConst($2, @2)); : $$ = n; : } : | SESSION AUTHORIZATION NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527fb9: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "session_authorization"; 0.00 : 527fbc: 48 c7 40 08 f8 94 7c movq $0x7c94f8,0x8(%rax) 0.00 : 527fc3: 00 : n->args = list_make1(makeStringConst($3, @3)); 0.00 : 527fc4: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : $$ = n; 0.00 : 527fcb: 49 89 de mov %rbx,%r14 : | SESSION AUTHORIZATION NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = "session_authorization"; : n->args = list_make1(makeStringConst($3, @3)); 0.00 : 527fce: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 527fd5: 8b 31 mov (%rcx),%esi 0.00 : 527fd7: 48 8b 38 mov (%rax),%rdi 0.00 : 527fda: e8 91 8b fe ff callq 510b70 0.00 : 527fdf: 31 f6 xor %esi,%esi 0.00 : 527fe1: 48 89 c7 mov %rax,%rdi 0.00 : 527fe4: e8 67 98 0b 00 callq 5e1850 0.00 : 527fe9: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | SESSION AUTHORIZATION DEFAULT 0.00 : 527fed: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 527ff4: e9 87 99 fe ff jmpq 511980 : n->kind = VAR_SET_DEFAULT; : $$ = n; : } : | ROLE NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 527ff9: 48 8b 3d 60 28 69 00 mov 0x692860(%rip),%rdi # bba860 0.00 : 528000: be 20 00 00 00 mov $0x20,%esi 0.00 : 528005: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52800c: e8 ff 0d 27 00 callq 798e10 0.00 : 528011: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 528017: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->kind = VAR_SET_DEFAULT; : $$ = n; : } : | ROLE NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 52801e: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "role"; 0.00 : 528021: 48 c7 40 08 ba b3 8d movq $0x8db3ba,0x8(%rax) 0.00 : 528028: 00 : n->args = list_make1(makeStringConst($2, @2)); 0.00 : 528029: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx : $$ = n; 0.00 : 528030: 49 89 de mov %rbx,%r14 : | ROLE NonReservedWord_or_Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = "role"; : n->args = list_make1(makeStringConst($2, @2)); 0.00 : 528033: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52803a: 48 8b 3a mov (%rdx),%rdi 0.00 : 52803d: 8b 30 mov (%rax),%esi 0.00 : 52803f: e8 2c 8b fe ff callq 510b70 0.00 : 528044: 31 f6 xor %esi,%esi 0.00 : 528046: 48 89 c7 mov %rax,%rdi 0.00 : 528049: e8 02 98 0b 00 callq 5e1850 0.00 : 52804e: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | SESSION AUTHORIZATION NonReservedWord_or_Sconst 0.00 : 528052: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528059: e9 22 99 fe ff jmpq 511980 : n->args = list_make1(makeStringConst($2, @2)); : $$ = n; : } : | NAMES opt_encoding : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 52805e: 48 8b 3d fb 27 69 00 mov 0x6927fb(%rip),%rdi # bba860 0.00 : 528065: be 20 00 00 00 mov $0x20,%esi 0.00 : 52806a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528071: e8 9a 0d 27 00 callq 798e10 0.00 : 528076: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 52807c: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->args = list_make1(makeStringConst($2, @2)); : $$ = n; : } : | NAMES opt_encoding : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 528083: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "client_encoding"; 0.00 : 528086: 48 c7 40 08 e5 48 8e movq $0x8e48e5,0x8(%rax) 0.00 : 52808d: 00 : if ($2 != NULL) 0.00 : 52808e: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 528095: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52809c: 48 8b 3a mov (%rdx),%rdi 0.00 : 52809f: 48 85 ff test %rdi,%rdi 0.00 : 5280a2: 0f 84 d8 13 00 00 je 529480 : n->args = list_make1(makeStringConst($2, @2)); 0.00 : 5280a8: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5280af: 8b 31 mov (%rcx),%esi 0.00 : 5280b1: e8 ba 8a fe ff callq 510b70 0.00 : 5280b6: 31 f6 xor %esi,%esi 0.00 : 5280b8: 48 89 c7 mov %rax,%rdi 0.00 : 5280bb: e8 90 97 0b 00 callq 5e1850 0.00 : 5280c0: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5280c4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : else : n->kind = VAR_SET_DEFAULT; : $$ = n; 0.00 : 5280cb: 49 89 de mov %rbx,%r14 : } : | ROLE NonReservedWord_or_Sconst 0.00 : 5280ce: e9 ad 98 fe ff jmpq 511980 : parser_errposition(@2))); : $$ = NULL; /*not reached*/ : } : | SCHEMA Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5280d3: 48 8b 3d 86 27 69 00 mov 0x692786(%rip),%rdi # bba860 0.00 : 5280da: be 20 00 00 00 mov $0x20,%esi 0.00 : 5280df: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5280e6: e8 25 0d 27 00 callq 798e10 0.00 : 5280eb: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 5280f1: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : parser_errposition(@2))); : $$ = NULL; /*not reached*/ : } : | SCHEMA Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5280f8: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "search_path"; 0.00 : 5280fb: 48 c7 40 08 ec 94 7c movq $0x7c94ec,0x8(%rax) 0.00 : 528102: 00 : n->args = list_make1(makeStringConst($2, @2)); 0.00 : 528103: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : $$ = n; 0.00 : 52810a: 49 89 de mov %rbx,%r14 : | SCHEMA Sconst : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = "search_path"; : n->args = list_make1(makeStringConst($2, @2)); 0.00 : 52810d: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 528114: 8b 31 mov (%rcx),%esi 0.00 : 528116: 48 8b 38 mov (%rax),%rdi 0.00 : 528119: e8 52 8a fe ff callq 510b70 0.00 : 52811e: 31 f6 xor %esi,%esi 0.00 : 528120: 48 89 c7 mov %rax,%rdi 0.00 : 528123: e8 28 97 0b 00 callq 5e1850 0.00 : 528128: 48 89 43 10 mov %rax,0x10(%rbx) : $$ = n; : } : | NAMES opt_encoding 0.00 : 52812c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528133: e9 48 98 fe ff jmpq 511980 : n->kind = VAR_SET_DEFAULT; : $$ = n; : } : | CATALOG_P Sconst : { : ereport(ERROR, 0.00 : 528138: 45 31 c0 xor %r8d,%r8d 0.00 : 52813b: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 528140: ba 92 05 00 00 mov $0x592,%edx 0.00 : 528145: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52814a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52814f: e8 6c 29 25 00 callq 77aac0 0.00 : 528154: 84 c0 test %al,%al 0.00 : 528156: 0f 84 4b 9e fe ff je 511fa7 0.00 : 52815c: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 528163: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52816a: 8b 3a mov (%rdx),%edi 0.00 : 52816c: e8 2f 5b fe ff callq 50dca0 0.00 : 528171: bf a8 9e 7c 00 mov $0x7c9ea8,%edi 0.00 : 528176: 41 89 c4 mov %eax,%r12d 0.00 : 528179: 31 c0 xor %eax,%eax 0.00 : 52817b: e8 20 47 25 00 callq 77c8a0 0.00 : 528180: bf 40 04 00 00 mov $0x440,%edi 0.00 : 528185: 89 c3 mov %eax,%ebx 0.00 : 528187: e9 d4 c6 ff ff jmpq 524860 : $$ = n; : } : /* Special syntaxes mandated by SQL standard: */ : | TIME ZONE zone_value : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 52818c: 48 8b 3d cd 26 69 00 mov 0x6926cd(%rip),%rdi # bba860 0.00 : 528193: be 20 00 00 00 mov $0x20,%esi 0.00 : 528198: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52819f: e8 6c 0c 27 00 callq 798e10 0.00 : 5281a4: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 5281aa: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : $$ = n; : } : /* Special syntaxes mandated by SQL standard: */ : | TIME ZONE zone_value : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5281b1: 48 89 c3 mov %rax,%rbx : n->kind = VAR_SET_VALUE; : n->name = "timezone"; 0.00 : 5281b4: 48 c7 40 08 60 fc 8f movq $0x8ffc60,0x8(%rax) 0.00 : 5281bb: 00 : if ($3 != NULL) 0.00 : 5281bc: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5281c3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5281ca: 48 8b 38 mov (%rax),%rdi 0.00 : 5281cd: 48 85 ff test %rdi,%rdi 0.00 : 5281d0: 0f 84 8e 12 00 00 je 529464 : n->args = list_make1($3); 0.00 : 5281d6: 31 f6 xor %esi,%esi 0.00 : 5281d8: e8 73 96 0b 00 callq 5e1850 0.00 : 5281dd: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5281e1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : else : n->kind = VAR_SET_DEFAULT; : $$ = n; 0.00 : 5281e8: 49 89 de mov %rbx,%r14 : } : | CATALOG_P Sconst 0.00 : 5281eb: e9 90 97 fe ff jmpq 511980 : : set_rest_more: /* Generic SET syntaxes: */ : generic_set {$$ = $1;} : | var_name FROM CURRENT_P : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5281f0: 48 8b 3d 69 26 69 00 mov 0x692669(%rip),%rdi # bba860 0.00 : 5281f7: be 20 00 00 00 mov $0x20,%esi 0.00 : 5281fc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528203: e8 08 0c 27 00 callq 798e10 0.00 : 528208: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_CURRENT; 0.00 : 52820e: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->name = $1; : $$ = n; 0.00 : 528215: 49 89 c6 mov %rax,%r14 : generic_set {$$ = $1;} : | var_name FROM CURRENT_P : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_CURRENT; : n->name = $1; 0.00 : 528218: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52821f: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 528223: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : /* Special syntaxes mandated by SQL standard: */ 0.00 : 528227: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52822e: e9 4d 97 fe ff jmpq 511980 : n->name = $1; : $$ = n; : } : : set_rest_more: /* Generic SET syntaxes: */ : generic_set {$$ = $1;} 0.00 : 528233: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52823a: 4c 8b 33 mov (%rbx),%r14 : | var_name FROM CURRENT_P 0.00 : 52823d: e9 3e 97 fe ff jmpq 511980 : n->name = $1; : $$ = n; : } : | var_name '=' DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 528242: 48 8b 3d 17 26 69 00 mov 0x692617(%rip),%rdi # bba860 0.00 : 528249: be 20 00 00 00 mov $0x20,%esi 0.00 : 52824e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528255: e8 b6 0b 27 00 callq 798e10 0.00 : 52825a: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_DEFAULT; 0.00 : 528260: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->name = $1; : $$ = n; 0.00 : 528267: 49 89 c6 mov %rax,%r14 : } : | var_name '=' DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_DEFAULT; : n->name = $1; 0.00 : 52826a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528271: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 528275: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : 0.00 : 528279: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528280: e9 fb 96 fe ff jmpq 511980 : n->args = $3; : $$ = n; : } : | var_name TO DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 528285: 48 8b 3d d4 25 69 00 mov 0x6925d4(%rip),%rdi # bba860 0.00 : 52828c: be 20 00 00 00 mov $0x20,%esi 0.00 : 528291: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528298: e8 73 0b 27 00 callq 798e10 0.00 : 52829d: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_DEFAULT; 0.00 : 5282a3: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->name = $1; : $$ = n; 0.00 : 5282aa: 49 89 c6 mov %rax,%r14 : } : | var_name TO DEFAULT : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_DEFAULT; : n->name = $1; 0.00 : 5282ad: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5282b4: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 5282b8: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = n; : } : | var_name '=' DEFAULT 0.00 : 5282bc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5282c3: e9 b8 96 fe ff jmpq 511980 : n->args = $3; : $$ = n; : } : | var_name '=' var_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5282c8: 48 8b 3d 91 25 69 00 mov 0x692591(%rip),%rdi # bba860 0.00 : 5282cf: be 20 00 00 00 mov $0x20,%esi 0.00 : 5282d4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5282db: e8 30 0b 27 00 callq 798e10 0.00 : 5282e0: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 5282e6: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->name = $1; : n->args = $3; : $$ = n; 0.00 : 5282ed: 49 89 c6 mov %rax,%r14 : } : | var_name '=' var_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = $1; 0.00 : 5282f0: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5282f7: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 5282fb: 48 89 50 08 mov %rdx,0x8(%rax) : n->args = $3; 0.00 : 5282ff: 48 8b 13 mov (%rbx),%rdx 0.00 : 528302: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = n; : } : | var_name TO DEFAULT 0.00 : 528306: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52830d: e9 6e 96 fe ff jmpq 511980 : ; : : generic_set: : var_name TO var_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 528312: 48 8b 3d 47 25 69 00 mov 0x692547(%rip),%rdi # bba860 0.00 : 528319: be 20 00 00 00 mov $0x20,%esi 0.00 : 52831e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528325: e8 e6 0a 27 00 callq 798e10 0.00 : 52832a: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_VALUE; 0.00 : 528330: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->name = $1; : n->args = $3; : $$ = n; 0.00 : 528337: 49 89 c6 mov %rax,%r14 : generic_set: : var_name TO var_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_VALUE; : n->name = $1; 0.00 : 52833a: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528341: 48 8b 51 f0 mov -0x10(%rcx),%rdx 0.00 : 528345: 48 89 50 08 mov %rdx,0x8(%rax) : n->args = $3; 0.00 : 528349: 48 8b 11 mov (%rcx),%rdx 0.00 : 52834c: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = n; : } : | var_name '=' var_list 0.00 : 528350: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528357: e9 24 96 fe ff jmpq 511980 : n->args = $2; : $$ = n; : } : | SESSION CHARACTERISTICS AS TRANSACTION transaction_mode_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 52835c: 48 8b 3d fd 24 69 00 mov 0x6924fd(%rip),%rdi # bba860 0.00 : 528363: be 20 00 00 00 mov $0x20,%esi 0.00 : 528368: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52836f: e8 9c 0a 27 00 callq 798e10 0.00 : 528374: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_MULTI; 0.00 : 52837a: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->name = "SESSION CHARACTERISTICS"; : n->args = $5; : $$ = n; 0.00 : 528381: 49 89 c6 mov %rax,%r14 : } : | SESSION CHARACTERISTICS AS TRANSACTION transaction_mode_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_MULTI; : n->name = "SESSION CHARACTERISTICS"; 0.00 : 528384: 48 c7 40 08 d4 94 7c movq $0x7c94d4,0x8(%rax) 0.00 : 52838b: 00 : n->args = $5; 0.00 : 52838c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528393: 48 8b 16 mov (%rsi),%rdx 0.00 : 528396: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = n; : } : | set_rest_more 0.00 : 52839a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5283a1: e9 da 95 fe ff jmpq 511980 : ; : : set_rest: : TRANSACTION transaction_mode_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); 0.00 : 5283a6: 48 8b 3d b3 24 69 00 mov 0x6924b3(%rip),%rdi # bba860 0.00 : 5283ad: be 20 00 00 00 mov $0x20,%esi 0.00 : 5283b2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5283b9: e8 52 0a 27 00 callq 798e10 0.00 : 5283be: c7 00 e6 02 00 00 movl $0x2e6,(%rax) : n->kind = VAR_SET_MULTI; 0.00 : 5283c4: c7 40 04 03 00 00 00 movl $0x3,0x4(%rax) : n->name = "TRANSACTION"; : n->args = $2; : $$ = n; 0.00 : 5283cb: 49 89 c6 mov %rax,%r14 : set_rest: : TRANSACTION transaction_mode_list : { : VariableSetStmt *n = makeNode(VariableSetStmt); : n->kind = VAR_SET_MULTI; : n->name = "TRANSACTION"; 0.00 : 5283ce: 48 c7 40 08 b8 05 8b movq $0x8b05b8,0x8(%rax) 0.00 : 5283d5: 00 : n->args = $2; 0.00 : 5283d6: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5283dd: 48 8b 13 mov (%rbx),%rdx 0.00 : 5283e0: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = n; : } : | SESSION CHARACTERISTICS AS TRANSACTION transaction_mode_list 0.00 : 5283e4: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5283eb: e9 90 95 fe ff jmpq 511980 : n->is_local = true; : $$ = (Node *) n; : } : | SET SESSION set_rest : { : VariableSetStmt *n = $3; 0.00 : 5283f0: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5283f7: 48 8b 01 mov (%rcx),%rax : n->is_local = false; 0.00 : 5283fa: c6 40 18 00 movb $0x0,0x18(%rax) : $$ = (Node *) n; 0.00 : 5283fe: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 528401: e9 7a 95 fe ff jmpq 511980 : n->is_local = false; : $$ = (Node *) n; : } : | SET LOCAL set_rest : { : VariableSetStmt *n = $3; 0.00 : 528406: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52840d: 48 8b 02 mov (%rdx),%rax : n->is_local = true; 0.00 : 528410: c6 40 18 01 movb $0x1,0x18(%rax) : $$ = (Node *) n; 0.00 : 528414: 49 89 c6 mov %rax,%r14 : } : | SET SESSION set_rest 0.00 : 528417: e9 64 95 fe ff jmpq 511980 : *****************************************************************************/ : : VariableSetStmt: : SET set_rest : { : VariableSetStmt *n = $2; 0.00 : 52841c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528423: 48 8b 06 mov (%rsi),%rax : n->is_local = false; 0.00 : 528426: c6 40 18 00 movb $0x0,0x18(%rax) : $$ = (Node *) n; 0.00 : 52842a: 49 89 c6 mov %rax,%r14 : } : | SET LOCAL set_rest 0.00 : 52842d: e9 4e 95 fe ff jmpq 511980 : if (@$ < 0) /* see comments for YYLLOC_DEFAULT */ : @$ = @2; : $$ = lappend($1, $2); : } : | /* EMPTY */ : { $$ = NIL; } 0.00 : 528432: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 528435: e9 46 95 fe ff jmpq 511980 : ; : : OptSchemaEltList: : OptSchemaEltList schema_stmt : { : if (@$ < 0) /* see comments for YYLLOC_DEFAULT */ 0.00 : 52843a: 44 8b 8d a8 f4 ff ff mov -0xb58(%rbp),%r9d 0.00 : 528441: 45 85 c9 test %r9d,%r9d 0.00 : 528444: 79 0f jns 528455 : @$ = @2; 0.00 : 528446: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52844d: 8b 09 mov (%rcx),%ecx 0.00 : 52844f: 89 8d a8 f4 ff ff mov %ecx,-0xb58(%rbp) : $$ = lappend($1, $2); 0.00 : 528455: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52845c: 48 8b 7b f8 mov -0x8(%rbx),%rdi 0.00 : 528460: 48 8b 33 mov (%rbx),%rsi 0.00 : 528463: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52846a: e8 11 9a 0b 00 callq 5e1e80 : } : | /* EMPTY */ 0.00 : 52846f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : OptSchemaEltList: : OptSchemaEltList schema_stmt : { : if (@$ < 0) /* see comments for YYLLOC_DEFAULT */ : @$ = @2; : $$ = lappend($1, $2); 0.00 : 528476: 49 89 c6 mov %rax,%r14 : } : | /* EMPTY */ 0.00 : 528479: e9 02 95 fe ff jmpq 511980 : } : ; : : OptSchemaName: : ColId { $$ = $1; } : | /* EMPTY */ { $$ = NULL; } 0.00 : 52847e: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 528481: e9 fa 94 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : OptSchemaName: : ColId { $$ = $1; } 0.00 : 528486: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52848d: 4c 8b 32 mov (%rdx),%r14 : | /* EMPTY */ { $$ = NULL; } 0.00 : 528490: e9 eb 94 fe ff jmpq 511980 : n->if_not_exists = true; : $$ = (Node *)n; : } : | CREATE SCHEMA IF_P NOT EXISTS ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 528495: 48 8b 3d c4 23 69 00 mov 0x6923c4(%rip),%rdi # bba860 0.00 : 52849c: be 28 00 00 00 mov $0x28,%esi 0.00 : 5284a1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5284a8: e8 63 09 27 00 callq 798e10 0.00 : 5284ad: c7 00 f2 02 00 00 movl $0x2f2,(%rax) : /* ...but not both */ : n->schemaname = $6; 0.00 : 5284b3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->if_not_exists = true; : $$ = (Node *)n; : } : | CREATE SCHEMA IF_P NOT EXISTS ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 5284ba: 48 89 c2 mov %rax,%rdx : /* ...but not both */ : n->schemaname = $6; 0.00 : 5284bd: 48 8b 46 f8 mov -0x8(%rsi),%rax : n->authid = NULL; 0.00 : 5284c1: 48 c7 42 10 00 00 00 movq $0x0,0x10(%rdx) 0.00 : 5284c8: 00 : } : | CREATE SCHEMA IF_P NOT EXISTS ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* ...but not both */ : n->schemaname = $6; 0.00 : 5284c9: 48 89 42 08 mov %rax,0x8(%rdx) : n->authid = NULL; : if ($7 != NIL) 0.00 : 5284cd: 48 83 3e 00 cmpq $0x0,(%rsi) 0.00 : 5284d1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5284d8: 0f 85 0b 17 00 00 jne 529be9 : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), : parser_errposition(@7))); : n->schemaElts = $7; 0.00 : 5284de: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 5284e5: 00 : n->if_not_exists = true; 0.00 : 5284e6: c6 42 20 01 movb $0x1,0x20(%rdx) : $$ = (Node *)n; 0.00 : 5284ea: 49 89 d6 mov %rdx,%r14 : } : ; 0.00 : 5284ed: e9 8e 94 fe ff jmpq 511980 : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE SCHEMA IF_P NOT EXISTS OptSchemaName AUTHORIZATION RoleId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 5284f2: 48 8b 3d 67 23 69 00 mov 0x692367(%rip),%rdi # bba860 0.00 : 5284f9: be 28 00 00 00 mov $0x28,%esi 0.00 : 5284fe: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528505: e8 06 09 27 00 callq 798e10 0.00 : 52850a: c7 00 f2 02 00 00 movl $0x2f2,(%rax) : /* One can omit the schema name or the authorization id. */ : if ($6 != NULL) 0.00 : 528510: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE SCHEMA IF_P NOT EXISTS OptSchemaName AUTHORIZATION RoleId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 528517: 48 89 c2 mov %rax,%rdx : /* One can omit the schema name or the authorization id. */ : if ($6 != NULL) 0.00 : 52851a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528521: 48 8b 43 e8 mov -0x18(%rbx),%rax 0.00 : 528525: 48 85 c0 test %rax,%rax 0.00 : 528528: 0f 84 6e 0f 00 00 je 52949c : n->schemaname = $6; : else : n->schemaname = $8; 0.00 : 52852e: 48 89 42 08 mov %rax,0x8(%rdx) : n->authid = $8; 0.00 : 528532: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528539: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 52853d: 48 89 42 10 mov %rax,0x10(%rdx) : if ($9 != NIL) 0.00 : 528541: 48 83 39 00 cmpq $0x0,(%rcx) 0.00 : 528545: 0f 85 2a 15 00 00 jne 529a75 : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), : parser_errposition(@9))); : n->schemaElts = $9; 0.00 : 52854b: 48 c7 42 18 00 00 00 movq $0x0,0x18(%rdx) 0.00 : 528552: 00 : n->if_not_exists = true; 0.00 : 528553: c6 42 20 01 movb $0x1,0x20(%rdx) : $$ = (Node *)n; 0.00 : 528557: 49 89 d6 mov %rdx,%r14 : } : | CREATE SCHEMA IF_P NOT EXISTS ColId OptSchemaEltList 0.00 : 52855a: e9 21 94 fe ff jmpq 511980 : (Node *)$6)); : $$ = (Node *)n; : } : ; : : add_drop: ADD_P { $$ = +1; } 0.00 : 52855f: 48 ba 00 00 00 00 ff movabs $0xffffffff00000000,%rdx 0.00 : 528566: ff ff ff 0.00 : 528569: 49 21 d6 and %rdx,%r14 0.00 : 52856c: 49 83 ce 01 or $0x1,%r14 : | DROP { $$ = -1; } 0.00 : 528570: e9 0b 94 fe ff jmpq 511980 : *****************************************************************************/ : : AlterGroupStmt: : ALTER GROUP_P RoleId add_drop USER role_list : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); 0.00 : 528575: 48 8b 3d e4 22 69 00 mov 0x6922e4(%rip),%rdi # bba860 0.00 : 52857c: be 20 00 00 00 mov $0x20,%esi 0.00 : 528581: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528588: e8 83 08 27 00 callq 798e10 0.00 : 52858d: c7 00 ec 02 00 00 movl $0x2ec,(%rax) : n->role = $3; 0.00 : 528593: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : *****************************************************************************/ : : AlterGroupStmt: : ALTER GROUP_P RoleId add_drop USER role_list : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); 0.00 : 52859a: 48 89 c3 mov %rax,%rbx : n->role = $3; : n->action = $4; : n->options = list_make1(makeDefElem("rolemembers", 0.00 : 52859d: bf 1f 94 7c 00 mov $0x7c941f,%edi : (Node *)$6)); : $$ = (Node *)n; 0.00 : 5285a2: 49 89 de mov %rbx,%r14 : : AlterGroupStmt: : ALTER GROUP_P RoleId add_drop USER role_list : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); : n->role = $3; 0.00 : 5285a5: 48 8b 46 e8 mov -0x18(%rsi),%rax 0.00 : 5285a9: 48 89 43 08 mov %rax,0x8(%rbx) : n->action = $4; 0.00 : 5285ad: 8b 46 f0 mov -0x10(%rsi),%eax 0.00 : 5285b0: 89 43 18 mov %eax,0x18(%rbx) : n->options = list_make1(makeDefElem("rolemembers", 0.00 : 5285b3: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 5285ba: 48 8b 30 mov (%rax),%rsi 0.00 : 5285bd: e8 3e 8f 0c 00 callq 5f1500 0.00 : 5285c2: 31 f6 xor %esi,%esi 0.00 : 5285c4: 48 89 c7 mov %rax,%rdi 0.00 : 5285c7: e8 84 92 0b 00 callq 5e1850 0.00 : 5285cc: 48 89 43 10 mov %rax,0x10(%rbx) : (Node *)$6)); : $$ = (Node *)n; : } : ; 0.00 : 5285d0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5285d7: e9 a4 93 fe ff jmpq 511980 : *****************************************************************************/ : : CreateSchemaStmt: : CREATE SCHEMA OptSchemaName AUTHORIZATION RoleId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 5285dc: 48 8b 3d 7d 22 69 00 mov 0x69227d(%rip),%rdi # bba860 0.00 : 5285e3: be 28 00 00 00 mov $0x28,%esi 0.00 : 5285e8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5285ef: e8 1c 08 27 00 callq 798e10 0.00 : 5285f4: c7 00 f2 02 00 00 movl $0x2f2,(%rax) : /* One can omit the schema name or the authorization id. */ : if ($3 != NULL) 0.00 : 5285fa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : *****************************************************************************/ : : CreateSchemaStmt: : CREATE SCHEMA OptSchemaName AUTHORIZATION RoleId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 528601: 48 89 c2 mov %rax,%rdx : /* One can omit the schema name or the authorization id. */ : if ($3 != NULL) 0.00 : 528604: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52860b: 48 8b 41 e8 mov -0x18(%rcx),%rax 0.00 : 52860f: 48 85 c0 test %rax,%rax 0.00 : 528612: 0f 84 58 0e 00 00 je 529470 : n->schemaname = $3; : else : n->schemaname = $5; 0.00 : 528618: 48 89 42 08 mov %rax,0x8(%rdx) : n->authid = $5; 0.00 : 52861c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->schemaElts = $6; : n->if_not_exists = false; : $$ = (Node *)n; 0.00 : 528623: 49 89 d6 mov %rdx,%r14 : /* One can omit the schema name or the authorization id. */ : if ($3 != NULL) : n->schemaname = $3; : else : n->schemaname = $5; : n->authid = $5; 0.00 : 528626: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 52862a: 48 89 42 10 mov %rax,0x10(%rdx) : n->schemaElts = $6; 0.00 : 52862e: 48 8b 06 mov (%rsi),%rax : n->if_not_exists = false; 0.00 : 528631: c6 42 20 00 movb $0x0,0x20(%rdx) : if ($3 != NULL) : n->schemaname = $3; : else : n->schemaname = $5; : n->authid = $5; : n->schemaElts = $6; 0.00 : 528635: 48 89 42 18 mov %rax,0x18(%rdx) : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE SCHEMA ColId OptSchemaEltList 0.00 : 528639: e9 42 93 fe ff jmpq 511980 : n->roles = $3; : $$ = (Node *)n; : } : | DROP GROUP_P IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 52863e: 48 8b 3d 1b 22 69 00 mov 0x69221b(%rip),%rdi # bba860 0.00 : 528645: be 18 00 00 00 mov $0x18,%esi 0.00 : 52864a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528651: e8 ba 07 27 00 callq 798e10 0.00 : 528656: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->missing_ok = TRUE; 0.00 : 52865c: c6 40 10 01 movb $0x1,0x10(%rax) : n->roles = $5; : $$ = (Node *)n; 0.00 : 528660: 49 89 c6 mov %rax,%r14 : } : | DROP GROUP_P IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->missing_ok = TRUE; : n->roles = $5; 0.00 : 528663: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52866a: 48 8b 16 mov (%rsi),%rdx 0.00 : 52866d: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 528671: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528678: e9 03 93 fe ff jmpq 511980 : *****************************************************************************/ : : DropGroupStmt: : DROP GROUP_P role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 52867d: 48 8b 3d dc 21 69 00 mov 0x6921dc(%rip),%rdi # bba860 0.00 : 528684: be 18 00 00 00 mov $0x18,%esi 0.00 : 528689: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528690: e8 7b 07 27 00 callq 798e10 0.00 : 528695: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->missing_ok = FALSE; 0.00 : 52869b: c6 40 10 00 movb $0x0,0x10(%rax) : n->roles = $3; : $$ = (Node *)n; 0.00 : 52869f: 49 89 c6 mov %rax,%r14 : DropGroupStmt: : DROP GROUP_P role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->missing_ok = FALSE; : n->roles = $3; 0.00 : 5286a2: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5286a9: 48 8b 13 mov (%rbx),%rdx 0.00 : 5286ac: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | DROP GROUP_P IF_P EXISTS role_list 0.00 : 5286b0: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5286b7: e9 c4 92 fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : add_drop: ADD_P { $$ = +1; } : | DROP { $$ = -1; } 0.00 : 5286bc: b9 ff ff ff ff mov $0xffffffff,%ecx 0.00 : 5286c1: 49 09 ce or %rcx,%r14 : ; 0.00 : 5286c4: e9 b7 92 fe ff jmpq 511980 : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE SCHEMA ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); 0.00 : 5286c9: 48 8b 3d 90 21 69 00 mov 0x692190(%rip),%rdi # bba860 0.00 : 5286d0: be 28 00 00 00 mov $0x28,%esi 0.00 : 5286d5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5286dc: e8 2f 07 27 00 callq 798e10 0.00 : 5286e1: c7 00 f2 02 00 00 movl $0x2f2,(%rax) : /* ...but not both */ : n->schemaname = $3; 0.00 : 5286e7: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->authid = NULL; : n->schemaElts = $4; : n->if_not_exists = false; : $$ = (Node *)n; 0.00 : 5286ee: 49 89 c6 mov %rax,%r14 : } : | CREATE SCHEMA ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* ...but not both */ : n->schemaname = $3; 0.00 : 5286f1: 48 8b 51 f8 mov -0x8(%rcx),%rdx : n->authid = NULL; 0.00 : 5286f5: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 5286fc: 00 : } : | CREATE SCHEMA ColId OptSchemaEltList : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* ...but not both */ : n->schemaname = $3; 0.00 : 5286fd: 48 89 50 08 mov %rdx,0x8(%rax) : n->authid = NULL; : n->schemaElts = $4; 0.00 : 528701: 48 8b 11 mov (%rcx),%rdx : n->if_not_exists = false; 0.00 : 528704: c6 40 20 00 movb $0x0,0x20(%rax) : { : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* ...but not both */ : n->schemaname = $3; : n->authid = NULL; : n->schemaElts = $4; 0.00 : 528708: 48 89 50 18 mov %rdx,0x18(%rax) : n->if_not_exists = false; : $$ = (Node *)n; : } : | CREATE SCHEMA IF_P NOT EXISTS OptSchemaName AUTHORIZATION RoleId OptSchemaEltList 0.00 : 52870c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528713: e9 68 92 fe ff jmpq 511980 : *****************************************************************************/ : : DropUserStmt: : DROP USER role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 528718: 48 8b 3d 41 21 69 00 mov 0x692141(%rip),%rdi # bba860 0.00 : 52871f: be 18 00 00 00 mov $0x18,%esi 0.00 : 528724: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52872b: e8 e0 06 27 00 callq 798e10 0.00 : 528730: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->missing_ok = FALSE; 0.00 : 528736: c6 40 10 00 movb $0x0,0x10(%rax) : n->roles = $3; : $$ = (Node *)n; 0.00 : 52873a: 49 89 c6 mov %rax,%r14 : DropUserStmt: : DROP USER role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->missing_ok = FALSE; : n->roles = $3; 0.00 : 52873d: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528744: 48 8b 16 mov (%rsi),%rdx 0.00 : 528747: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | DROP USER IF_P EXISTS role_list 0.00 : 52874b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528752: e9 29 92 fe ff jmpq 511980 : n->roles = $3; : $$ = (Node *)n; : } : | DROP ROLE IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 528757: 48 8b 3d 02 21 69 00 mov 0x692102(%rip),%rdi # bba860 0.00 : 52875e: be 18 00 00 00 mov $0x18,%esi 0.00 : 528763: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52876a: e8 a1 06 27 00 callq 798e10 0.00 : 52876f: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->missing_ok = TRUE; 0.00 : 528775: c6 40 10 01 movb $0x1,0x10(%rax) : n->roles = $5; : $$ = (Node *)n; 0.00 : 528779: 49 89 c6 mov %rax,%r14 : } : | DROP ROLE IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->missing_ok = TRUE; : n->roles = $5; 0.00 : 52877c: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528783: 48 8b 13 mov (%rbx),%rdx 0.00 : 528786: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : ; 0.00 : 52878a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528791: e9 ea 91 fe ff jmpq 511980 : *****************************************************************************/ : : DropRoleStmt: : DROP ROLE role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 528796: 48 8b 3d c3 20 69 00 mov 0x6920c3(%rip),%rdi # bba860 0.00 : 52879d: be 18 00 00 00 mov $0x18,%esi 0.00 : 5287a2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5287a9: e8 62 06 27 00 callq 798e10 0.00 : 5287ae: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->missing_ok = FALSE; 0.00 : 5287b4: c6 40 10 00 movb $0x0,0x10(%rax) : n->roles = $3; : $$ = (Node *)n; 0.00 : 5287b8: 49 89 c6 mov %rax,%r14 : DropRoleStmt: : DROP ROLE role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->missing_ok = FALSE; : n->roles = $3; 0.00 : 5287bb: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 5287c2: 48 8b 11 mov (%rcx),%rdx 0.00 : 5287c5: 48 89 50 08 mov %rdx,0x8(%rax) : $$ = (Node *)n; : } : | DROP ROLE IF_P EXISTS role_list 0.00 : 5287c9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5287d0: e9 ab 91 fe ff jmpq 511980 : : : AlterUserSetStmt: : ALTER USER RoleId SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); 0.00 : 5287d5: 48 8b 3d 84 20 69 00 mov 0x692084(%rip),%rdi # bba860 0.00 : 5287dc: be 20 00 00 00 mov $0x20,%esi 0.00 : 5287e1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5287e8: e8 23 06 27 00 callq 798e10 0.00 : 5287ed: c7 00 f5 02 00 00 movl $0x2f5,(%rax) : n->role = $3; 0.00 : 5287f3: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->database = NULL; : n->setstmt = $4; : $$ = (Node *)n; 0.00 : 5287fa: 49 89 c6 mov %rax,%r14 : : AlterUserSetStmt: : ALTER USER RoleId SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); : n->role = $3; 0.00 : 5287fd: 48 8b 56 f8 mov -0x8(%rsi),%rdx : n->database = NULL; 0.00 : 528801: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 528808: 00 : : AlterUserSetStmt: : ALTER USER RoleId SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); : n->role = $3; 0.00 : 528809: 48 89 50 08 mov %rdx,0x8(%rax) : n->database = NULL; : n->setstmt = $4; 0.00 : 52880d: 48 8b 16 mov (%rsi),%rdx 0.00 : 528810: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : ; 0.00 : 528814: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52881b: e9 60 91 fe ff jmpq 511980 : *****************************************************************************/ : : CreateGroupStmt: : CREATE GROUP_P RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); 0.00 : 528820: 48 8b 3d 39 20 69 00 mov 0x692039(%rip),%rdi # bba860 0.00 : 528827: be 18 00 00 00 mov $0x18,%esi 0.00 : 52882c: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528833: e8 d8 05 27 00 callq 798e10 0.00 : 528838: c7 00 eb 02 00 00 movl $0x2eb,(%rax) : n->stmt_type = ROLESTMT_GROUP; 0.00 : 52883e: c7 40 04 02 00 00 00 movl $0x2,0x4(%rax) : n->role = $3; : n->options = $5; : $$ = (Node *)n; 0.00 : 528845: 49 89 c6 mov %rax,%r14 : CreateGroupStmt: : CREATE GROUP_P RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); : n->stmt_type = ROLESTMT_GROUP; : n->role = $3; 0.00 : 528848: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52884f: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 528853: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 528857: 48 8b 13 mov (%rbx),%rdx 0.00 : 52885a: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 52885e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528865: e9 16 91 fe ff jmpq 511980 : n->roles = $3; : $$ = (Node *)n; : } : | DROP USER IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); 0.00 : 52886a: 48 8b 3d ef 1f 69 00 mov 0x691fef(%rip),%rdi # bba860 0.00 : 528871: be 18 00 00 00 mov $0x18,%esi 0.00 : 528876: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52887d: e8 8e 05 27 00 callq 798e10 0.00 : 528882: c7 00 ed 02 00 00 movl $0x2ed,(%rax) : n->roles = $5; 0.00 : 528888: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->missing_ok = TRUE; : $$ = (Node *)n; 0.00 : 52888f: 49 89 c6 mov %rax,%r14 : $$ = (Node *)n; : } : | DROP USER IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->roles = $5; 0.00 : 528892: 48 8b 11 mov (%rcx),%rdx : n->missing_ok = TRUE; 0.00 : 528895: c6 40 10 01 movb $0x1,0x10(%rax) : $$ = (Node *)n; : } : | DROP USER IF_P EXISTS role_list : { : DropRoleStmt *n = makeNode(DropRoleStmt); : n->roles = $5; 0.00 : 528899: 48 89 50 08 mov %rdx,0x8(%rax) : n->missing_ok = TRUE; : $$ = (Node *)n; : } : ; 0.00 : 52889d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5288a4: e9 d7 90 fe ff jmpq 511980 : *****************************************************************************/ : : AlterUserStmt: : ALTER USER RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); 0.00 : 5288a9: 48 8b 3d b0 1f 69 00 mov 0x691fb0(%rip),%rdi # bba860 0.00 : 5288b0: be 20 00 00 00 mov $0x20,%esi 0.00 : 5288b5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5288bc: e8 4f 05 27 00 callq 798e10 0.00 : 5288c1: c7 00 ec 02 00 00 movl $0x2ec,(%rax) : n->role = $3; 0.00 : 5288c7: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx : n->action = +1; /* add, if there are members */ : n->options = $5; : $$ = (Node *)n; 0.00 : 5288ce: 49 89 c6 mov %rax,%r14 : : AlterUserStmt: : ALTER USER RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); : n->role = $3; 0.00 : 5288d1: 48 8b 53 f0 mov -0x10(%rbx),%rdx : n->action = +1; /* add, if there are members */ 0.00 : 5288d5: c7 40 18 01 00 00 00 movl $0x1,0x18(%rax) : : AlterUserStmt: : ALTER USER RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); : n->role = $3; 0.00 : 5288dc: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = +1; /* add, if there are members */ : n->options = $5; 0.00 : 5288e0: 48 8b 13 mov (%rbx),%rdx 0.00 : 5288e3: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 5288e7: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5288ee: e9 8d 90 fe ff jmpq 511980 : n->setstmt = $5; : $$ = (Node *)n; : } : | ALTER ROLE ALL opt_in_database SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); 0.00 : 5288f3: 48 8b 3d 66 1f 69 00 mov 0x691f66(%rip),%rdi # bba860 0.00 : 5288fa: be 20 00 00 00 mov $0x20,%esi 0.00 : 5288ff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528906: e8 05 05 27 00 callq 798e10 0.00 : 52890b: c7 00 f5 02 00 00 movl $0x2f5,(%rax) : n->role = NULL; 0.00 : 528911: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 528918: 00 : n->database = $4; : n->setstmt = $5; : $$ = (Node *)n; 0.00 : 528919: 49 89 c6 mov %rax,%r14 : } : | ALTER ROLE ALL opt_in_database SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); : n->role = NULL; : n->database = $4; 0.00 : 52891c: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528923: 48 8b 51 f8 mov -0x8(%rcx),%rdx 0.00 : 528927: 48 89 50 10 mov %rdx,0x10(%rax) : n->setstmt = $5; 0.00 : 52892b: 48 8b 11 mov (%rcx),%rdx 0.00 : 52892e: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : ; 0.00 : 528932: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528939: e9 42 90 fe ff jmpq 511980 : ; : : AlterRoleSetStmt: : ALTER ROLE RoleId opt_in_database SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); 0.00 : 52893e: 48 8b 3d 1b 1f 69 00 mov 0x691f1b(%rip),%rdi # bba860 0.00 : 528945: be 20 00 00 00 mov $0x20,%esi 0.00 : 52894a: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528951: e8 ba 04 27 00 callq 798e10 0.00 : 528956: c7 00 f5 02 00 00 movl $0x2f5,(%rax) : n->role = $3; 0.00 : 52895c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi : n->database = $4; : n->setstmt = $5; : $$ = (Node *)n; 0.00 : 528963: 49 89 c6 mov %rax,%r14 : : AlterRoleSetStmt: : ALTER ROLE RoleId opt_in_database SetResetClause : { : AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); : n->role = $3; 0.00 : 528966: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 52896a: 48 89 50 08 mov %rdx,0x8(%rax) : n->database = $4; 0.00 : 52896e: 48 8b 56 f8 mov -0x8(%rsi),%rdx 0.00 : 528972: 48 89 50 10 mov %rdx,0x10(%rax) : n->setstmt = $5; 0.00 : 528976: 48 8b 16 mov (%rsi),%rdx 0.00 : 528979: 48 89 50 18 mov %rdx,0x18(%rax) : $$ = (Node *)n; : } : | ALTER ROLE ALL opt_in_database SetResetClause 0.00 : 52897d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528984: e9 f7 8f fe ff jmpq 511980 : } : ; : : opt_in_database: : /* EMPTY */ { $$ = NULL; } : | IN_P DATABASE database_name { $$ = $3; } 0.00 : 528989: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528990: 4c 8b 33 mov (%rbx),%r14 : ; 0.00 : 528993: e9 e8 8f fe ff jmpq 511980 : $$ = (Node *)n; : } : ; : : opt_in_database: : /* EMPTY */ { $$ = NULL; } 0.00 : 528998: 45 31 f6 xor %r14d,%r14d : | IN_P DATABASE database_name { $$ = $3; } 0.00 : 52899b: e9 e0 8f fe ff jmpq 511980 : *****************************************************************************/ : : AlterRoleStmt: : ALTER ROLE RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); 0.00 : 5289a0: 48 8b 3d b9 1e 69 00 mov 0x691eb9(%rip),%rdi # bba860 0.00 : 5289a7: be 20 00 00 00 mov $0x20,%esi 0.00 : 5289ac: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5289b3: e8 58 04 27 00 callq 798e10 0.00 : 5289b8: c7 00 ec 02 00 00 movl $0x2ec,(%rax) : n->role = $3; 0.00 : 5289be: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : n->action = +1; /* add, if there are members */ : n->options = $5; : $$ = (Node *)n; 0.00 : 5289c5: 49 89 c6 mov %rax,%r14 : : AlterRoleStmt: : ALTER ROLE RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); : n->role = $3; 0.00 : 5289c8: 48 8b 51 f0 mov -0x10(%rcx),%rdx : n->action = +1; /* add, if there are members */ 0.00 : 5289cc: c7 40 18 01 00 00 00 movl $0x1,0x18(%rax) : : AlterRoleStmt: : ALTER ROLE RoleId opt_with AlterOptRoleList : { : AlterRoleStmt *n = makeNode(AlterRoleStmt); : n->role = $3; 0.00 : 5289d3: 48 89 50 08 mov %rdx,0x8(%rax) : n->action = +1; /* add, if there are members */ : n->options = $5; 0.00 : 5289d7: 48 8b 11 mov (%rcx),%rdx 0.00 : 5289da: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 5289de: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5289e5: e9 96 8f fe ff jmpq 511980 : *****************************************************************************/ : : CreateUserStmt: : CREATE USER RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); 0.00 : 5289ea: 48 8b 3d 6f 1e 69 00 mov 0x691e6f(%rip),%rdi # bba860 0.00 : 5289f1: be 18 00 00 00 mov $0x18,%esi 0.00 : 5289f6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5289fd: e8 0e 04 27 00 callq 798e10 0.00 : 528a02: c7 00 eb 02 00 00 movl $0x2eb,(%rax) : n->stmt_type = ROLESTMT_USER; 0.00 : 528a08: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) : n->role = $3; : n->options = $5; : $$ = (Node *)n; 0.00 : 528a0f: 49 89 c6 mov %rax,%r14 : CreateUserStmt: : CREATE USER RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); : n->stmt_type = ROLESTMT_USER; : n->role = $3; 0.00 : 528a12: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528a19: 48 8b 56 f0 mov -0x10(%rsi),%rdx 0.00 : 528a1d: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 528a21: 48 8b 16 mov (%rsi),%rdx 0.00 : 528a24: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 528a28: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528a2f: e9 4c 8f fe ff jmpq 511980 : { : $$ = makeDefElem("addroleto", (Node *)$3); : } : | IN_P GROUP_P role_list : { : $$ = makeDefElem("addroleto", (Node *)$3); 0.00 : 528a34: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528a3b: bf ca 94 7c 00 mov $0x7c94ca,%edi 0.00 : 528a40: 48 8b 33 mov (%rbx),%rsi 0.00 : 528a43: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528a4a: e8 b1 8a 0c 00 callq 5f1500 : } : ; 0.00 : 528a4f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("addroleto", (Node *)$3); : } : | IN_P GROUP_P role_list : { : $$ = makeDefElem("addroleto", (Node *)$3); 0.00 : 528a56: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 528a59: e9 22 8f fe ff jmpq 511980 : { : $$ = makeDefElem("rolemembers", (Node *)$2); : } : | IN_P ROLE role_list : { : $$ = makeDefElem("addroleto", (Node *)$3); 0.00 : 528a5e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528a65: bf ca 94 7c 00 mov $0x7c94ca,%edi 0.00 : 528a6a: 48 8b 31 mov (%rcx),%rsi 0.00 : 528a6d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528a74: e8 87 8a 0c 00 callq 5f1500 : } : | IN_P GROUP_P role_list 0.00 : 528a79: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("rolemembers", (Node *)$2); : } : | IN_P ROLE role_list : { : $$ = makeDefElem("addroleto", (Node *)$3); 0.00 : 528a80: 49 89 c6 mov %rax,%r14 : } : | IN_P GROUP_P role_list 0.00 : 528a83: e9 f8 8e fe ff jmpq 511980 : { : $$ = makeDefElem("adminmembers", (Node *)$2); : } : | ROLE role_list : { : $$ = makeDefElem("rolemembers", (Node *)$2); 0.00 : 528a88: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 528a8f: bf 1f 94 7c 00 mov $0x7c941f,%edi 0.00 : 528a94: 48 8b 32 mov (%rdx),%rsi 0.00 : 528a97: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528a9e: e8 5d 8a 0c 00 callq 5f1500 : } : | IN_P ROLE role_list 0.00 : 528aa3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("adminmembers", (Node *)$2); : } : | ROLE role_list : { : $$ = makeDefElem("rolemembers", (Node *)$2); 0.00 : 528aaa: 49 89 c6 mov %rax,%r14 : } : | IN_P ROLE role_list 0.00 : 528aad: e9 ce 8e fe ff jmpq 511980 : { : $$ = makeDefElem("sysid", (Node *)makeInteger($2)); : } : | ADMIN role_list : { : $$ = makeDefElem("adminmembers", (Node *)$2); 0.00 : 528ab2: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 528ab9: bf bd 94 7c 00 mov $0x7c94bd,%edi 0.00 : 528abe: 48 8b 30 mov (%rax),%rsi 0.00 : 528ac1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528ac8: e8 33 8a 0c 00 callq 5f1500 : } : | ROLE role_list 0.00 : 528acd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("sysid", (Node *)makeInteger($2)); : } : | ADMIN role_list : { : $$ = makeDefElem("adminmembers", (Node *)$2); 0.00 : 528ad4: 49 89 c6 mov %rax,%r14 : } : | ROLE role_list 0.00 : 528ad7: e9 a4 8e fe ff jmpq 511980 : CreateOptRoleElem: : AlterOptRoleElem { $$ = $1; } : /* The following are not supported by ALTER ROLE/USER/GROUP */ : | SYSID Iconst : { : $$ = makeDefElem("sysid", (Node *)makeInteger($2)); 0.00 : 528adc: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528ae3: 48 63 3b movslq (%rbx),%rdi 0.00 : 528ae6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528aed: e8 5e 6c 0d 00 callq 5ff750 0.00 : 528af2: bf c4 4c 8c 00 mov $0x8c4cc4,%edi 0.00 : 528af7: 48 89 c6 mov %rax,%rsi 0.00 : 528afa: e8 01 8a 0c 00 callq 5f1500 : } : | ADMIN role_list 0.00 : 528aff: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : CreateOptRoleElem: : AlterOptRoleElem { $$ = $1; } : /* The following are not supported by ALTER ROLE/USER/GROUP */ : | SYSID Iconst : { : $$ = makeDefElem("sysid", (Node *)makeInteger($2)); 0.00 : 528b06: 49 89 c6 mov %rax,%r14 : } : | ADMIN role_list 0.00 : 528b09: e9 72 8e fe ff jmpq 511980 : parser_errposition(@1))); : } : ; : : CreateOptRoleElem: : AlterOptRoleElem { $$ = $1; } 0.00 : 528b0e: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528b15: 4c 8b 31 mov (%rcx),%r14 : /* The following are not supported by ALTER ROLE/USER/GROUP */ 0.00 : 528b18: e9 63 8e fe ff jmpq 511980 : /* : * We handle identifiers that aren't parser keywords with : * the following special-case codes, to avoid bloating the : * size of the main parser. : */ : if (strcmp($1, "superuser") == 0) 0.00 : 528b1d: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528b24: bf 7d 53 7c 00 mov $0x7c537d,%edi 0.00 : 528b29: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 528b2e: 4c 8b 03 mov (%rbx),%r8 0.00 : 528b31: 4c 89 c6 mov %r8,%rsi 0.00 : 528b34: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 528b36: 0f 85 bc 06 00 00 jne 5291f8 : $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); 0.00 : 528b3c: bf 01 00 00 00 mov $0x1,%edi 0.00 : 528b41: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528b48: e8 03 6c 0d 00 callq 5ff750 0.00 : 528b4d: bf 7d 53 7c 00 mov $0x7c537d,%edi 0.00 : 528b52: 48 89 c6 mov %rax,%rsi 0.00 : 528b55: e8 a6 89 0c 00 callq 5f1500 0.00 : 528b5a: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528b61: 49 89 c6 mov %rax,%r14 0.00 : 528b64: e9 17 8e fe ff jmpq 511980 : $$ = makeDefElem("validUntil", (Node *)makeString($3)); : } : /* Supported but not documented for roles, for use by ALTER GROUP. */ : | USER role_list : { : $$ = makeDefElem("rolemembers", (Node *)$2); 0.00 : 528b69: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528b70: bf 1f 94 7c 00 mov $0x7c941f,%edi 0.00 : 528b75: 48 8b 31 mov (%rcx),%rsi 0.00 : 528b78: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528b7f: e8 7c 89 0c 00 callq 5f1500 : } : | IDENT 0.00 : 528b84: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem("validUntil", (Node *)makeString($3)); : } : /* Supported but not documented for roles, for use by ALTER GROUP. */ : | USER role_list : { : $$ = makeDefElem("rolemembers", (Node *)$2); 0.00 : 528b8b: 49 89 c6 mov %rax,%r14 : } : | IDENT 0.00 : 528b8e: e9 ed 8d fe ff jmpq 511980 : { : $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3)); : } : | VALID UNTIL Sconst : { : $$ = makeDefElem("validUntil", (Node *)makeString($3)); 0.00 : 528b93: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 528b9a: 48 8b 3a mov (%rdx),%rdi 0.00 : 528b9d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528ba4: e8 47 6b 0d 00 callq 5ff6f0 0.00 : 528ba9: bf 14 94 7c 00 mov $0x7c9414,%edi 0.00 : 528bae: 48 89 c6 mov %rax,%rsi 0.00 : 528bb1: e8 4a 89 0c 00 callq 5f1500 : } : /* Supported but not documented for roles, for use by ALTER GROUP. */ 0.00 : 528bb6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3)); : } : | VALID UNTIL Sconst : { : $$ = makeDefElem("validUntil", (Node *)makeString($3)); 0.00 : 528bbd: 49 89 c6 mov %rax,%r14 : } : /* Supported but not documented for roles, for use by ALTER GROUP. */ 0.00 : 528bc0: e9 bb 8d fe ff jmpq 511980 : { : $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE)); : } : | CONNECTION LIMIT SignedIconst : { : $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3)); 0.00 : 528bc5: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 528bcc: 48 63 38 movslq (%rax),%rdi 0.00 : 528bcf: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528bd6: e8 75 6b 0d 00 callq 5ff750 0.00 : 528bdb: bf 04 94 7c 00 mov $0x7c9404,%edi 0.00 : 528be0: 48 89 c6 mov %rax,%rsi 0.00 : 528be3: e8 18 89 0c 00 callq 5f1500 : } : | VALID UNTIL Sconst 0.00 : 528be8: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE)); : } : | CONNECTION LIMIT SignedIconst : { : $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3)); 0.00 : 528bef: 49 89 c6 mov %rax,%r14 : } : | VALID UNTIL Sconst 0.00 : 528bf2: e9 89 8d fe ff jmpq 511980 : $$ = makeDefElem("unencryptedPassword", : (Node *)makeString($3)); : } : | INHERIT : { : $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE)); 0.00 : 528bf7: bf 01 00 00 00 mov $0x1,%edi 0.00 : 528bfc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528c03: e8 48 6b 0d 00 callq 5ff750 0.00 : 528c08: bf 1a 15 88 00 mov $0x88151a,%edi 0.00 : 528c0d: 48 89 c6 mov %rax,%rsi 0.00 : 528c10: e8 eb 88 0c 00 callq 5f1500 : } : | CONNECTION LIMIT SignedIconst 0.00 : 528c15: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem("unencryptedPassword", : (Node *)makeString($3)); : } : | INHERIT : { : $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE)); 0.00 : 528c1c: 49 89 c6 mov %rax,%r14 : } : | CONNECTION LIMIT SignedIconst 0.00 : 528c1f: e9 5c 8d fe ff jmpq 511980 : $$ = makeDefElem("encryptedPassword", : (Node *)makeString($3)); : } : | UNENCRYPTED PASSWORD Sconst : { : $$ = makeDefElem("unencryptedPassword", 0.00 : 528c24: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528c2b: 48 8b 3e mov (%rsi),%rdi 0.00 : 528c2e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528c35: e8 b6 6a 0d 00 callq 5ff6f0 0.00 : 528c3a: bf f0 93 7c 00 mov $0x7c93f0,%edi 0.00 : 528c3f: 48 89 c6 mov %rax,%rsi 0.00 : 528c42: e8 b9 88 0c 00 callq 5f1500 : (Node *)makeString($3)); : } : | INHERIT 0.00 : 528c47: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem("encryptedPassword", : (Node *)makeString($3)); : } : | UNENCRYPTED PASSWORD Sconst : { : $$ = makeDefElem("unencryptedPassword", 0.00 : 528c4e: 49 89 c6 mov %rax,%r14 : (Node *)makeString($3)); : } : | INHERIT 0.00 : 528c51: e9 2a 8d fe ff jmpq 511980 : { : $$ = makeDefElem("password", NULL); : } : | ENCRYPTED PASSWORD Sconst : { : $$ = makeDefElem("encryptedPassword", 0.00 : 528c56: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528c5d: 48 8b 3b mov (%rbx),%rdi 0.00 : 528c60: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528c67: e8 84 6a 0d 00 callq 5ff6f0 0.00 : 528c6c: bf f2 93 7c 00 mov $0x7c93f2,%edi 0.00 : 528c71: 48 89 c6 mov %rax,%rsi 0.00 : 528c74: e8 87 88 0c 00 callq 5f1500 : (Node *)makeString($3)); : } : | UNENCRYPTED PASSWORD Sconst 0.00 : 528c79: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : { : $$ = makeDefElem("password", NULL); : } : | ENCRYPTED PASSWORD Sconst : { : $$ = makeDefElem("encryptedPassword", 0.00 : 528c80: 49 89 c6 mov %rax,%r14 : (Node *)makeString($3)); : } : | UNENCRYPTED PASSWORD Sconst 0.00 : 528c83: e9 f8 8c fe ff jmpq 511980 : $$ = makeDefElem("password", : (Node *)makeString($2)); : } : | PASSWORD NULL_P : { : $$ = makeDefElem("password", NULL); 0.00 : 528c88: 31 f6 xor %esi,%esi 0.00 : 528c8a: bf e7 93 7c 00 mov $0x7c93e7,%edi 0.00 : 528c8f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528c96: e8 65 88 0c 00 callq 5f1500 : } : | ENCRYPTED PASSWORD Sconst 0.00 : 528c9b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : $$ = makeDefElem("password", : (Node *)makeString($2)); : } : | PASSWORD NULL_P : { : $$ = makeDefElem("password", NULL); 0.00 : 528ca2: 49 89 c6 mov %rax,%r14 : } : | ENCRYPTED PASSWORD Sconst 0.00 : 528ca5: e9 d6 8c fe ff jmpq 511980 : ; : : AlterOptRoleElem: : PASSWORD Sconst : { : $$ = makeDefElem("password", 0.00 : 528caa: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx 0.00 : 528cb1: 48 8b 39 mov (%rcx),%rdi 0.00 : 528cb4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528cbb: e8 30 6a 0d 00 callq 5ff6f0 0.00 : 528cc0: bf e7 93 7c 00 mov $0x7c93e7,%edi 0.00 : 528cc5: 48 89 c6 mov %rax,%rsi 0.00 : 528cc8: e8 33 88 0c 00 callq 5f1500 : (Node *)makeString($2)); : } : | PASSWORD NULL_P 0.00 : 528ccd: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : ; : : AlterOptRoleElem: : PASSWORD Sconst : { : $$ = makeDefElem("password", 0.00 : 528cd4: 49 89 c6 mov %rax,%r14 : (Node *)makeString($2)); : } : | PASSWORD NULL_P 0.00 : 528cd7: e9 a4 8c fe ff jmpq 511980 : | /* EMPTY */ { $$ = NIL; } : ; : : AlterOptRoleList: : AlterOptRoleList AlterOptRoleElem { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } 0.00 : 528cdc: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 528cdf: e9 9c 8c fe ff jmpq 511980 : OptRoleList CreateOptRoleElem { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } : ; : : AlterOptRoleList: : AlterOptRoleList AlterOptRoleElem { $$ = lappend($1, $2); } 0.00 : 528ce4: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 528ceb: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 528cef: 48 8b 32 mov (%rdx),%rsi 0.00 : 528cf2: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528cf9: e8 82 91 0b 00 callq 5e1e80 : | /* EMPTY */ { $$ = NIL; } 0.00 : 528cfe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : OptRoleList CreateOptRoleElem { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } : ; : : AlterOptRoleList: : AlterOptRoleList AlterOptRoleElem { $$ = lappend($1, $2); } 0.00 : 528d05: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 528d08: e9 73 8c fe ff jmpq 511980 : * for backwards compatibility). Note: the only option required by SQL99 : * is "WITH ADMIN name". : */ : OptRoleList: : OptRoleList CreateOptRoleElem { $$ = lappend($1, $2); } : | /* EMPTY */ { $$ = NIL; } 0.00 : 528d0d: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 528d10: e9 6b 8c fe ff jmpq 511980 : * Options for CREATE ROLE and ALTER ROLE (also used by CREATE/ALTER USER : * for backwards compatibility). Note: the only option required by SQL99 : * is "WITH ADMIN name". : */ : OptRoleList: : OptRoleList CreateOptRoleElem { $$ = lappend($1, $2); } 0.00 : 528d15: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528d1c: 48 8b 7e f8 mov -0x8(%rsi),%rdi 0.00 : 528d20: 48 8b 36 mov (%rsi),%rsi 0.00 : 528d23: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528d2a: e8 51 91 0b 00 callq 5e1e80 : | /* EMPTY */ { $$ = NIL; } 0.00 : 528d2f: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 : * Options for CREATE ROLE and ALTER ROLE (also used by CREATE/ALTER USER : * for backwards compatibility). Note: the only option required by SQL99 : * is "WITH ADMIN name". : */ : OptRoleList: : OptRoleList CreateOptRoleElem { $$ = lappend($1, $2); } 0.00 : 528d36: 49 89 c6 mov %rax,%r14 : | /* EMPTY */ { $$ = NIL; } 0.00 : 528d39: e9 42 8c fe ff jmpq 511980 : */ : ColLabel: IDENT { $$ = $1; } : | unreserved_keyword { $$ = pstrdup($1); } : | col_name_keyword { $$ = pstrdup($1); } : | type_func_name_keyword { $$ = pstrdup($1); } : | reserved_keyword { $$ = pstrdup($1); } 0.00 : 528d3e: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 528d45: 48 8b 3e mov (%rsi),%rdi 0.00 : 528d48: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528d4f: e8 fc 01 27 00 callq 798f50 0.00 : 528d54: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528d5b: 49 89 c6 mov %rax,%r14 0.00 : 528d5e: e9 1d 8c fe ff jmpq 511980 : *****************************************************************************/ : : CreateRoleStmt: : CREATE ROLE RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); 0.00 : 528d63: 48 8b 3d f6 1a 69 00 mov 0x691af6(%rip),%rdi # bba860 0.00 : 528d6a: be 18 00 00 00 mov $0x18,%esi 0.00 : 528d6f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528d76: e8 95 00 27 00 callq 798e10 0.00 : 528d7b: c7 00 eb 02 00 00 movl $0x2eb,(%rax) : n->stmt_type = ROLESTMT_ROLE; 0.00 : 528d81: c7 40 04 00 00 00 00 movl $0x0,0x4(%rax) : n->role = $3; : n->options = $5; : $$ = (Node *)n; 0.00 : 528d88: 49 89 c6 mov %rax,%r14 : CreateRoleStmt: : CREATE ROLE RoleId opt_with OptRoleList : { : CreateRoleStmt *n = makeNode(CreateRoleStmt); : n->stmt_type = ROLESTMT_ROLE; : n->role = $3; 0.00 : 528d8b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528d92: 48 8b 53 f0 mov -0x10(%rbx),%rdx 0.00 : 528d96: 48 89 50 08 mov %rdx,0x8(%rax) : n->options = $5; 0.00 : 528d9a: 48 8b 13 mov (%rbx),%rdx 0.00 : 528d9d: 48 89 50 10 mov %rdx,0x10(%rax) : $$ = (Node *)n; : } : ; 0.00 : 528da1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528da8: e9 d3 8b fe ff jmpq 511980 : | VariableResetStmt : | VariableSetStmt : | VariableShowStmt : | ViewStmt : | /*EMPTY*/ : { $$ = NULL; } 0.00 : 528dad: 45 31 f6 xor %r14d,%r14d : ; 0.00 : 528db0: e9 cb 8b fe ff jmpq 511980 : else : $$ = $1; : } : | stmt : { : if ($1 != NULL) 0.00 : 528db5: 48 8b 8d 88 f4 ff ff mov -0xb78(%rbp),%rcx : $$ = list_make1($1); : else : $$ = NIL; 0.00 : 528dbc: 45 31 f6 xor %r14d,%r14d : else : $$ = $1; : } : | stmt : { : if ($1 != NULL) 0.00 : 528dbf: 48 8b 39 mov (%rcx),%rdi 0.00 : 528dc2: 48 85 ff test %rdi,%rdi 0.00 : 528dc5: 0f 84 b5 8b fe ff je 511980 : $$ = list_make1($1); 0.00 : 528dcb: 31 f6 xor %esi,%esi 0.00 : 528dcd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528dd4: e8 77 8a 0b 00 callq 5e1850 0.00 : 528dd9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528de0: 49 89 c6 mov %rax,%r14 0.00 : 528de3: e9 98 8b fe ff jmpq 511980 : ; : : /* the thrashing around here is to discard "empty" statements... */ : stmtmulti: stmtmulti ';' stmt : { : if ($3 != NULL) 0.00 : 528de8: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 528def: 48 8b 30 mov (%rax),%rsi 0.00 : 528df2: 48 85 f6 test %rsi,%rsi 0.00 : 528df5: 0f 84 91 06 00 00 je 52948c : $$ = lappend($1, $3); 0.00 : 528dfb: 48 8b 78 f0 mov -0x10(%rax),%rdi 0.00 : 528dff: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528e06: e8 75 90 0b 00 callq 5e1e80 0.00 : 528e0b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528e12: 49 89 c6 mov %rax,%r14 0.00 : 528e15: e9 66 8b fe ff jmpq 511980 : /* : * The target production for the whole parse. : */ : stmtblock: stmtmulti : { : pg_yyget_extra(yyscanner)->parsetree = $1; 0.00 : 528e1a: 48 8b 8d 70 f4 ff ff mov -0xb90(%rbp),%rcx 0.00 : 528e21: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 528e28: 48 8b 11 mov (%rcx),%rdx 0.00 : 528e2b: 48 8b 03 mov (%rbx),%rax 0.00 : 528e2e: 48 89 42 60 mov %rax,0x60(%rdx) : } : ; 0.00 : 528e32: e9 49 8b fe ff jmpq 511980 0.00 : 528e37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 528e3e: 00 00 : #else /* no yyoverflow */ : # ifndef YYSTACK_RELOCATE : goto yyexhaustedlab; : # else : /* Extend the stack our own way. */ : if (YYMAXDEPTH <= yystacksize) 0.00 : 528e40: 48 81 bd a0 f4 ff ff cmpq $0x270f,-0xb60(%rbp) 0.00 : 528e47: 0f 27 00 00 0.00 : 528e4b: 0f 87 3f 02 00 00 ja 529090 : goto yyexhaustedlab; : yystacksize *= 2; 0.00 : 528e51: 48 8b 85 a0 f4 ff ff mov -0xb60(%rbp),%rax 0.00 : 528e58: b9 10 27 00 00 mov $0x2710,%ecx : yystacksize = YYMAXDEPTH; : : { : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 0.00 : 528e5d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) : goto yyexhaustedlab; : # else : /* Extend the stack our own way. */ : if (YYMAXDEPTH <= yystacksize) : goto yyexhaustedlab; : yystacksize *= 2; 0.00 : 528e64: 48 01 c0 add %rax,%rax 0.00 : 528e67: 48 3d 10 27 00 00 cmp $0x2710,%rax 0.00 : 528e6d: 48 0f 46 c8 cmovbe %rax,%rcx : yystacksize = YYMAXDEPTH; : : { : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 0.00 : 528e71: 48 89 cf mov %rcx,%rdi : goto yyexhaustedlab; : # else : /* Extend the stack our own way. */ : if (YYMAXDEPTH <= yystacksize) : goto yyexhaustedlab; : yystacksize *= 2; 0.00 : 528e74: 48 89 8d a0 f4 ff ff mov %rcx,-0xb60(%rbp) : yystacksize = YYMAXDEPTH; : : { : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 0.00 : 528e7b: 48 83 c7 01 add $0x1,%rdi 0.00 : 528e7f: 48 8d 04 3f lea (%rdi,%rdi,1),%rax 0.00 : 528e83: 48 c1 e7 04 shl $0x4,%rdi 0.00 : 528e87: 48 29 c7 sub %rax,%rdi 0.00 : 528e8a: e8 c1 fe 26 00 callq 798d50 : if (! yyptr) 0.00 : 528e8f: 48 85 c0 test %rax,%rax : yystacksize = YYMAXDEPTH; : : { : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 0.00 : 528e92: 48 89 c3 mov %rax,%rbx : if (! yyptr) 0.00 : 528e95: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 528e9c: 0f 84 ee 01 00 00 je 529090 : *yyssp = yystate; : : if (yyss + yystacksize - 1 <= yyssp) : { : /* Get the current used size of the three stacks, in elements. */ : YYSIZE_T yysize = yyssp - yyss + 1; 0.00 : 528ea2: 4d 29 e2 sub %r12,%r10 : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); : if (! yyptr) : goto yyexhaustedlab; : YYSTACK_RELOCATE (yyss_alloc, yyss); 0.00 : 528ea5: 4c 89 e6 mov %r12,%rsi 0.00 : 528ea8: 48 89 c7 mov %rax,%rdi : *yyssp = yystate; : : if (yyss + yystacksize - 1 <= yyssp) : { : /* Get the current used size of the three stacks, in elements. */ : YYSIZE_T yysize = yyssp - yyss + 1; 0.00 : 528eab: 49 d1 fa sar %r10 : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); : if (! yyptr) : goto yyexhaustedlab; : YYSTACK_RELOCATE (yyss_alloc, yyss); 0.00 : 528eae: 48 89 85 b0 f4 ff ff mov %rax,-0xb50(%rbp) : *yyssp = yystate; : : if (yyss + yystacksize - 1 <= yyssp) : { : /* Get the current used size of the three stacks, in elements. */ : YYSIZE_T yysize = yyssp - yyss + 1; 0.00 : 528eb5: 4d 8d 72 01 lea 0x1(%r10),%r14 : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); : if (! yyptr) : goto yyexhaustedlab; : YYSTACK_RELOCATE (yyss_alloc, yyss); 0.00 : 528eb9: 4b 8d 14 36 lea (%r14,%r14,1),%rdx 0.00 : 528ebd: e8 2e 0d f4 ff callq 469bf0 0.00 : 528ec2: 48 8b b5 a0 f4 ff ff mov -0xb60(%rbp),%rsi : YYSTACK_RELOCATE (yyvs_alloc, yyvs); 0.00 : 528ec9: 4a 8d 14 f5 00 00 00 lea 0x0(,%r14,8),%rdx 0.00 : 528ed0: 00 : yytype_int16 *yyss1 = yyss; : union yyalloc *yyptr = : (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); : if (! yyptr) : goto yyexhaustedlab; : YYSTACK_RELOCATE (yyss_alloc, yyss); 0.00 : 528ed1: 4c 8d 2c 73 lea (%rbx,%rsi,2),%r13 : YYSTACK_RELOCATE (yyvs_alloc, yyvs); 0.00 : 528ed5: 48 8b b5 80 f4 ff ff mov -0xb80(%rbp),%rsi 0.00 : 528edc: 4c 89 ef mov %r13,%rdi 0.00 : 528edf: 4c 89 ad b8 f4 ff ff mov %r13,-0xb48(%rbp) 0.00 : 528ee6: e8 05 0d f4 ff callq 469bf0 : YYSTACK_RELOCATE (yyls_alloc, yyls); 0.00 : 528eeb: 48 8b 85 a0 f4 ff ff mov -0xb60(%rbp),%rax 0.00 : 528ef2: 48 8b b5 90 f4 ff ff mov -0xb70(%rbp),%rsi 0.00 : 528ef9: 4a 8d 14 b5 00 00 00 lea 0x0(,%r14,4),%rdx 0.00 : 528f00: 00 0.00 : 528f01: 49 8d 44 c5 00 lea 0x0(%r13,%rax,8),%rax 0.00 : 528f06: 48 89 c7 mov %rax,%rdi 0.00 : 528f09: 48 89 85 c0 f4 ff ff mov %rax,-0xb40(%rbp) 0.00 : 528f10: e8 db 0c f4 ff callq 469bf0 : # undef YYSTACK_RELOCATE : if (yyss1 != yyssa) 0.00 : 528f15: 4c 3b a5 48 f4 ff ff cmp -0xbb8(%rbp),%r12 0.00 : 528f1c: 74 08 je 528f26 : YYSTACK_FREE (yyss1); 0.00 : 528f1e: 4c 89 e7 mov %r12,%rdi 0.00 : 528f21: e8 5a fc 26 00 callq 798b80 : yylsp = yyls + yysize - 1; : : YYDPRINTF ((stderr, "Stack size increased to %lu\n", : (unsigned long int) yystacksize)); : : if (yyss + yystacksize - 1 <= yyssp) 0.00 : 528f26: 48 8b 8d a0 f4 ff ff mov -0xb60(%rbp),%rcx : YYSTACK_FREE (yyss1); : } : # endif : #endif /* no yyoverflow */ : : yyssp = yyss + yysize - 1; 0.00 : 528f2d: 49 8d 56 ff lea -0x1(%r14),%rdx 0.00 : 528f31: 4c 8d 14 53 lea (%rbx,%rdx,2),%r10 : yylsp = yyls + yysize - 1; : : YYDPRINTF ((stderr, "Stack size increased to %lu\n", : (unsigned long int) yystacksize)); : : if (yyss + yystacksize - 1 <= yyssp) 0.00 : 528f35: 48 83 e9 01 sub $0x1,%rcx 0.00 : 528f39: 48 8d 04 4b lea (%rbx,%rcx,2),%rax 0.00 : 528f3d: 48 89 8d 68 f4 ff ff mov %rcx,-0xb98(%rbp) 0.00 : 528f44: 49 39 c2 cmp %rax,%r10 0.00 : 528f47: 0f 83 54 01 00 00 jae 5290a1 : # endif : #endif /* no yyoverflow */ : : yyssp = yyss + yysize - 1; : yyvsp = yyvs + yysize - 1; : yylsp = yyls + yysize - 1; 0.00 : 528f4d: 48 8b 9d c0 f4 ff ff mov -0xb40(%rbp),%rbx : } : # endif : #endif /* no yyoverflow */ : : yyssp = yyss + yysize - 1; : yyvsp = yyvs + yysize - 1; 0.00 : 528f54: 4d 8d 6c d5 00 lea 0x0(%r13,%rdx,8),%r13 : YYABORT; : } : : YYDPRINTF ((stderr, "Entering state %d\n", yystate)); : : if (yystate == YYFINAL) 0.00 : 528f59: 41 81 ff e3 02 00 00 cmp $0x2e3,%r15d : } : # endif : #endif /* no yyoverflow */ : : yyssp = yyss + yysize - 1; : yyvsp = yyvs + yysize - 1; 0.00 : 528f60: 4c 89 ad 88 f4 ff ff mov %r13,-0xb78(%rbp) : yylsp = yyls + yysize - 1; 0.00 : 528f67: 48 8d 14 93 lea (%rbx,%rdx,4),%rdx 0.00 : 528f6b: 48 89 95 98 f4 ff ff mov %rdx,-0xb68(%rbp) : YYABORT; : } : : YYDPRINTF ((stderr, "Entering state %d\n", yystate)); : : if (yystate == YYFINAL) 0.00 : 528f72: 0f 85 00 88 fe ff jne 511778 : * available from the scanner. : */ : static void : base_yyerror(YYLTYPE *yylloc, core_yyscan_t yyscanner, const char *msg) : { : parser_yyerror(msg); 0.00 : 528f78: 31 db xor %ebx,%ebx : yydestruct ("Cleanup: popping", : yystos[*yyssp], yyvsp, yylsp, yyscanner); : YYPOPSTACK (1); : } : #ifndef yyoverflow : if (yyss != yyssa) 0.00 : 528f7a: 48 8b b5 48 f4 ff ff mov -0xbb8(%rbp),%rsi 0.00 : 528f81: 48 39 b5 b0 f4 ff ff cmp %rsi,-0xb50(%rbp) 0.00 : 528f88: 74 0c je 528f96 : YYSTACK_FREE (yyss); 0.00 : 528f8a: 48 8b bd b0 f4 ff ff mov -0xb50(%rbp),%rdi 0.00 : 528f91: e8 ea fb 26 00 callq 798b80 : if (yymsg != yymsgbuf) : YYSTACK_FREE (yymsg); : #endif : /* Make sure YYID is used. */ : return YYID (yyresult); : } 0.00 : 528f96: 48 81 c4 a8 0b 00 00 add $0xba8,%rsp 0.00 : 528f9d: 89 d8 mov %ebx,%eax 0.00 : 528f9f: 5b pop %rbx 0.00 : 528fa0: 41 5c pop %r12 0.00 : 528fa2: 41 5d pop %r13 0.00 : 528fa4: 41 5e pop %r14 0.00 : 528fa6: 41 5f pop %r15 0.00 : 528fa8: c9 leaveq 0.00 : 528fa9: c3 retq 0.00 : 528faa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : YYDPRINTF ((stderr, "Reading a token: ")); : yychar = YYLEX; : } : : if (yychar <= YYEOF) 0.00 : 528fb0: c7 85 7c f4 ff ff 00 movl $0x0,-0xb84(%rbp) 0.00 : 528fb7: 00 00 00 0.00 : 528fba: 31 d2 xor %edx,%edx 0.00 : 528fbc: e9 07 88 fe ff jmpq 5117c8 0.00 : 528fc1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : yyn = yyr1[yyn]; : : yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; : if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) : yystate = yytable[yystate]; 0.00 : 528fc8: 44 0f bf bc 00 60 b1 movswl 0x7fb160(%rax,%rax,1),%r15d 0.00 : 528fcf: 7f 00 : number reduced by. */ : : yyn = yyr1[yyn]; : : yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; : if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 0.00 : 528fd1: e9 43 8a fe ff jmpq 511a19 0.00 : 528fd6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 528fdd: 00 00 00 : : /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ : if (yychar == YYEMPTY) : { : YYDPRINTF ((stderr, "Reading a token: ")); : yychar = YYLEX; 0.00 : 528fe0: 48 8b 95 70 f4 ff ff mov -0xb90(%rbp),%rdx 0.00 : 528fe7: 48 8d 75 cc lea -0x34(%rbp),%rsi 0.00 : 528feb: 48 8d 7d c0 lea -0x40(%rbp),%rdi 0.00 : 528fef: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 528ff6: e8 e5 15 00 00 callq 52a5e0 0.00 : 528ffb: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529002: 89 85 7c f4 ff ff mov %eax,-0xb84(%rbp) 0.00 : 529008: e9 8b 87 fe ff jmpq 511798 0.00 : 52900d: 0f 1f 00 nopl (%rax) : /* If the proper action on seeing token YYTOKEN is to reduce or to : detect an error, take that action. */ : yyn += yytoken; : if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) : goto yydefault; : yyn = yytable[yyn]; 0.00 : 529010: 0f bf 94 09 60 b1 7f movswl 0x7fb160(%rcx,%rcx,1),%edx 0.00 : 529017: 00 : if (yyn <= 0) 0.00 : 529018: 85 d2 test %edx,%edx 0.00 : 52901a: 7e 44 jle 529060 : : /* Discard the shifted token. */ : yychar = YYEMPTY; : : yystate = yyn; : *++yyvsp = yylval; 0.00 : 52901c: 48 83 85 88 f4 ff ff addq $0x8,-0xb78(%rbp) 0.00 : 529023: 08 0.00 : 529024: 48 8b 45 c0 mov -0x40(%rbp),%rax : *++yylsp = yylloc; 0.00 : 529028: 41 89 d7 mov %edx,%r15d : : /* Discard the shifted token. */ : yychar = YYEMPTY; : : yystate = yyn; : *++yyvsp = yylval; 0.00 : 52902b: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 529032: 48 89 06 mov %rax,(%rsi) : *++yylsp = yylloc; 0.00 : 529035: 48 83 85 98 f4 ff ff addq $0x4,-0xb68(%rbp) 0.00 : 52903c: 04 0.00 : 52903d: 8b 45 cc mov -0x34(%rbp),%eax 0.00 : 529040: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 529047: 89 01 mov %eax,(%rcx) 0.00 : 529049: c7 85 7c f4 ff ff fe movl $0xfffffffe,-0xb84(%rbp) 0.00 : 529050: ff ff ff : goto yynewstate; 0.00 : 529053: e9 c1 89 fe ff jmpq 511a19 0.00 : 529058: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 52905f: 00 : if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) : goto yydefault; : yyn = yytable[yyn]; : if (yyn <= 0) : { : if (yytable_value_is_error (yyn)) 0.00 : 529060: 81 fa fb f6 ff ff cmp $0xfffff6fb,%edx 0.00 : 529066: 74 10 je 529078 : goto yyerrlab; : yyn = -yyn; 0.00 : 529068: 89 d1 mov %edx,%ecx 0.00 : 52906a: f7 d9 neg %ecx : goto yyreduce; 0.00 : 52906c: e9 85 87 fe ff jmpq 5117f6 0.00 : 529071: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 529078: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52907f: bf 51 e3 7b 00 mov $0x7be351,%edi 0.00 : 529084: e8 47 4c fe ff callq 50dcd0 0.00 : 529089: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 529090: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529097: bf 5e e3 7b 00 mov $0x7be35e,%edi 0.00 : 52909c: e8 2f 4c fe ff callq 50dcd0 : : YYDPRINTF ((stderr, "Stack size increased to %lu\n", : (unsigned long int) yystacksize)); : : if (yyss + yystacksize - 1 <= yyssp) : YYABORT; 0.00 : 5290a1: bb 01 00 00 00 mov $0x1,%ebx 0.00 : 5290a6: e9 cf fe ff ff jmpq 528f7a : mergeTableFuncParameters(List *func_args, List *columns) : { : ListCell *lc; : : /* Explicit OUT and INOUT parameters shouldn't be used in this syntax */ : foreach(lc, func_args) 0.00 : 5290ab: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 5290af: 48 85 d2 test %rdx,%rdx 0.00 : 5290b2: 0f 85 3c 5d ff ff jne 51edf4 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("OUT and INOUT arguments aren't allowed in TABLE functions"))); : } : : return list_concat(func_args, columns); 0.00 : 5290b8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5290bf: e8 fc 94 0b 00 callq 5e25c0 : RETURNS TABLE '(' table_func_column_list ')' createfunc_opt_list opt_definition : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; : n->funcname = $4; : n->parameters = mergeTableFuncParameters($5, $9); 0.00 : 5290c4: 48 89 43 10 mov %rax,0x10(%rbx) : n->returnType = TableFuncTypeName($9); 0.00 : 5290c8: 49 8b 04 24 mov (%r12),%rax : } : : STATIC_IF_INLINE int : list_length(const List *l) : { : return l ? l->length : 0; 0.00 : 5290cc: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5290d3: 48 85 c0 test %rax,%rax 0.00 : 5290d6: 0f 84 ac 02 00 00 je 529388 : static TypeName * : TableFuncTypeName(List *columns) : { : TypeName *result; : : if (list_length(columns) == 1) 0.00 : 5290dc: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 5290e0: 0f 85 a2 02 00 00 jne 529388 : { : FunctionParameter *p = (FunctionParameter *) linitial(columns); : : result = (TypeName *) copyObject(p->argType); 0.00 : 5290e6: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5290ea: 48 8b 00 mov (%rax),%rax 0.00 : 5290ed: 48 8b 78 10 mov 0x10(%rax),%rdi 0.00 : 5290f1: e8 9a b0 0b 00 callq 5e4190 0.00 : 5290f6: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5290fd: 48 89 c2 mov %rax,%rdx : } : else : result = SystemTypeName("record"); : : result->setof = true; 0.00 : 529100: c6 42 14 01 movb $0x1,0x14(%rdx) : { : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; : n->funcname = $4; : n->parameters = mergeTableFuncParameters($5, $9); : n->returnType = TableFuncTypeName($9); 0.00 : 529104: 48 89 53 18 mov %rdx,0x18(%rbx) : n->returnType->location = @7; : n->options = $11; : n->withClause = $12; : $$ = (Node *)n; 0.00 : 529108: 49 89 de mov %rbx,%r14 : CreateFunctionStmt *n = makeNode(CreateFunctionStmt); : n->replace = $2; : n->funcname = $4; : n->parameters = mergeTableFuncParameters($5, $9); : n->returnType = TableFuncTypeName($9); : n->returnType->location = @7; 0.00 : 52910b: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 529112: 8b 41 ec mov -0x14(%rcx),%eax 0.00 : 529115: 89 42 30 mov %eax,0x30(%rdx) : n->options = $11; 0.00 : 529118: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52911f: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 529123: 48 89 43 20 mov %rax,0x20(%rbx) : n->withClause = $12; 0.00 : 529127: 48 8b 06 mov (%rsi),%rax 0.00 : 52912a: 48 89 43 28 mov %rax,0x28(%rbx) : $$ = (Node *)n; : } : | CREATE opt_or_replace FUNCTION func_name func_args_with_defaults 0.00 : 52912e: e9 4d 88 fe ff jmpq 511980 : $1->mode == FUNC_PARAM_VARIADIC)) : ereport(ERROR, : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("aggregates cannot have output arguments"), : parser_errposition(@1))); : $$ = $1; 0.00 : 529133: 49 89 c6 mov %rax,%r14 : } : ; 0.00 : 529136: e9 45 88 fe ff jmpq 511980 : | TIME opt_timezone : { : if ($2) : $$ = SystemTypeName("timetz"); : else : $$ = SystemTypeName("time"); 0.00 : 52913b: bf bc 95 7b 00 mov $0x7b95bc,%edi 0.00 : 529140: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529147: e8 e4 78 fe ff callq 510a30 0.00 : 52914c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529153: 49 89 c6 mov %rax,%r14 0.00 : 529156: e9 3b d3 fe ff jmpq 516496 : { : $$ = SystemTypeName("varbit"); : } : else : { : $$ = SystemTypeName("bit"); 0.00 : 52915b: bf fe 96 7c 00 mov $0x7c96fe,%edi 0.00 : 529160: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529167: e8 c4 78 fe ff callq 510a30 : $$->typmods = list_make1(makeIntConst(1, -1)); 0.00 : 52916c: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 529171: bf 01 00 00 00 mov $0x1,%edi : { : $$ = SystemTypeName("varbit"); : } : else : { : $$ = SystemTypeName("bit"); 0.00 : 529176: 49 89 c6 mov %rax,%r14 : $$->typmods = list_make1(makeIntConst(1, -1)); 0.00 : 529179: e8 92 7a fe ff callq 510c10 0.00 : 52917e: 31 f6 xor %esi,%esi 0.00 : 529180: 48 89 c7 mov %rax,%rdi 0.00 : 529183: e8 c8 86 0b 00 callq 5e1850 0.00 : 529188: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 52918c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529193: e9 1e d9 fe ff jmpq 516ab6 : TIMESTAMP '(' Iconst ')' opt_timezone : { : if ($5) : $$ = SystemTypeName("timestamptz"); : else : $$ = SystemTypeName("timestamp"); 0.00 : 529198: bf ff 70 8e 00 mov $0x8e70ff,%edi 0.00 : 52919d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5291a4: e8 87 78 fe ff callq 510a30 0.00 : 5291a9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5291b0: 49 89 c6 mov %rax,%r14 0.00 : 5291b3: e9 cd d3 fe ff jmpq 516585 : | TIME '(' Iconst ')' opt_timezone : { : if ($5) : $$ = SystemTypeName("timetz"); : else : $$ = SystemTypeName("time"); 0.00 : 5291b8: bf bc 95 7b 00 mov $0x7b95bc,%edi 0.00 : 5291bd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5291c4: e8 67 78 fe ff callq 510a30 0.00 : 5291c9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5291d0: 49 89 c6 mov %rax,%r14 0.00 : 5291d3: e9 fc d2 fe ff jmpq 5164d4 : | TIMESTAMP opt_timezone : { : if ($2) : $$ = SystemTypeName("timestamptz"); : else : $$ = SystemTypeName("timestamp"); 0.00 : 5291d8: bf ff 70 8e 00 mov $0x8e70ff,%edi 0.00 : 5291dd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5291e4: e8 47 78 fe ff callq 510a30 0.00 : 5291e9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5291f0: 49 89 c6 mov %rax,%r14 0.00 : 5291f3: e9 4f d3 fe ff jmpq 516547 : * the following special-case codes, to avoid bloating the : * size of the main parser. : */ : if (strcmp($1, "superuser") == 0) : $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nosuperuser") == 0) 0.00 : 5291f8: bf 2b 94 7c 00 mov $0x7c942b,%edi 0.00 : 5291fd: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 529202: 4c 89 c6 mov %r8,%rsi 0.00 : 529205: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 529207: 0f 85 9f 02 00 00 jne 5294ac : $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); 0.00 : 52920d: 31 ff xor %edi,%edi 0.00 : 52920f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529216: e8 35 65 0d 00 callq 5ff750 0.00 : 52921b: bf 7d 53 7c 00 mov $0x7c537d,%edi 0.00 : 529220: 48 89 c6 mov %rax,%rsi 0.00 : 529223: e8 d8 82 0c 00 callq 5f1500 0.00 : 529228: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52922f: 49 89 c6 mov %rax,%r14 0.00 : 529232: e9 49 87 fe ff jmpq 511980 : if (*oldval == '+') : oldval++; : if (*oldval == '-') : v->val.str = oldval+1; /* just strip the '-' */ : else : v->val.str = psprintf("-%s", oldval); 0.00 : 529237: bf 81 fc 8f 00 mov $0x8ffc81,%edi 0.00 : 52923c: 31 c0 xor %eax,%eax 0.00 : 52923e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529245: e8 96 52 28 00 callq 7ae4e0 0.00 : 52924a: 49 89 46 08 mov %rax,0x8(%r14) 0.00 : 52924e: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529255: e9 26 87 fe ff jmpq 511980 : n->multixact_freeze_min_age = 0; : n->multixact_freeze_table_age = 0; : } : else : { : n->freeze_min_age = n->freeze_table_age = -1; 0.00 : 52925a: c7 42 0c ff ff ff ff movl $0xffffffff,0xc(%rdx) 0.00 : 529261: c7 42 08 ff ff ff ff movl $0xffffffff,0x8(%rdx) : n->multixact_freeze_min_age = -1; 0.00 : 529268: c7 42 10 ff ff ff ff movl $0xffffffff,0x10(%rdx) : n->multixact_freeze_table_age = -1; 0.00 : 52926f: c7 42 14 ff ff ff ff movl $0xffffffff,0x14(%rdx) 0.00 : 529276: e9 93 04 ff ff jmpq 51970e : n->multixact_freeze_min_age = 0; : n->multixact_freeze_table_age = 0; : } : else : { : n->freeze_min_age = n->freeze_table_age = -1; 0.00 : 52927b: c7 42 0c ff ff ff ff movl $0xffffffff,0xc(%rdx) 0.00 : 529282: c7 42 08 ff ff ff ff movl $0xffffffff,0x8(%rdx) : n->multixact_freeze_min_age = -1; 0.00 : 529289: c7 42 10 ff ff ff ff movl $0xffffffff,0x10(%rdx) : n->multixact_freeze_table_age = -1; 0.00 : 529290: c7 42 14 ff ff ff ff movl $0xffffffff,0x14(%rdx) 0.00 : 529297: e9 f5 04 ff ff jmpq 519791 : ereport(ERROR, : (errcode(ERRCODE_INVALID_PARAMETER_VALUE), : errmsg("precision for type float must be at least 1 bit"), : parser_errposition(@2))); : else if ($2 <= 24) : $$ = SystemTypeName("float4"); 0.00 : 52929c: bf 76 5f 8e 00 mov $0x8e5f76,%edi 0.00 : 5292a1: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5292a8: e8 83 77 fe ff callq 510a30 0.00 : 5292ad: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5292b4: 49 89 c6 mov %rax,%r14 0.00 : 5292b7: e9 c4 86 fe ff jmpq 511980 : /* in_expr returns a SubLink or a list of a_exprs */ : if (IsA($3, SubLink)) : { : /* generate foo = ANY (subquery) */ : SubLink *n = (SubLink *) $3; : n->subLinkType = ANY_SUBLINK; 0.00 : 5292bc: c7 43 04 02 00 00 00 movl $0x2,0x4(%rbx) : n->subLinkId = 0; 0.00 : 5292c3: c7 43 08 00 00 00 00 movl $0x0,0x8(%rbx) : n->testexpr = $1; : n->operName = list_make1(makeString("=")); 0.00 : 5292ca: bf 45 97 7c 00 mov $0x7c9745,%edi : { : /* generate foo = ANY (subquery) */ : SubLink *n = (SubLink *) $3; : n->subLinkType = ANY_SUBLINK; : n->subLinkId = 0; : n->testexpr = $1; 0.00 : 5292cf: 48 8b 42 f0 mov -0x10(%rdx),%rax : n->operName = list_make1(makeString("=")); : n->location = @2; : $$ = (Node *)n; 0.00 : 5292d3: 49 89 de mov %rbx,%r14 : { : /* generate foo = ANY (subquery) */ : SubLink *n = (SubLink *) $3; : n->subLinkType = ANY_SUBLINK; : n->subLinkId = 0; : n->testexpr = $1; 0.00 : 5292d6: 48 89 43 10 mov %rax,0x10(%rbx) : n->operName = list_make1(makeString("=")); 0.00 : 5292da: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5292e1: e8 0a 64 0d 00 callq 5ff6f0 0.00 : 5292e6: 31 f6 xor %esi,%esi 0.00 : 5292e8: 48 89 c7 mov %rax,%rdi 0.00 : 5292eb: e8 60 85 0b 00 callq 5e1850 0.00 : 5292f0: 48 89 43 18 mov %rax,0x18(%rbx) : n->location = @2; 0.00 : 5292f4: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 5292fb: 8b 41 fc mov -0x4(%rcx),%eax 0.00 : 5292fe: 89 43 28 mov %eax,0x28(%rbx) 0.00 : 529301: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529308: e9 73 86 fe ff jmpq 511980 : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 52930d: 4d 85 e4 test %r12,%r12 0.00 : 529310: 0f 84 98 07 00 00 je 529aae : : /* : * We ignore the names, though the aggr_arg production allows them; : * it doesn't allow default values, so those need not be checked. : */ : if (list_length(orderedargs) != 1 || 0.00 : 529316: 41 83 7c 24 04 01 cmpl $0x1,0x4(%r12) : int ndirectargs; : : /* No restriction unless last direct arg is VARIADIC */ : if (lastd->mode == FUNC_PARAM_VARIADIC) : { : FunctionParameter *firsto = (FunctionParameter *) linitial(orderedargs); 0.00 : 52931c: 49 8b 44 24 08 mov 0x8(%r12),%rax 0.00 : 529321: 48 8b 18 mov (%rax),%rbx : : /* : * We ignore the names, though the aggr_arg production allows them; : * it doesn't allow default values, so those need not be checked. : */ : if (list_length(orderedargs) != 1 || 0.00 : 529324: 75 0a jne 529330 0.00 : 529326: 83 7b 18 76 cmpl $0x76,0x18(%rbx) 0.00 : 52932a: 0f 84 3a 0e 00 00 je 52a16a : firsto->mode != FUNC_PARAM_VARIADIC || : !equal(lastd->argType, firsto->argType)) : ereport(ERROR, 0.00 : 529330: 45 31 c0 xor %r8d,%r8d 0.00 : 529333: b9 e0 74 82 00 mov $0x8274e0,%ecx 0.00 : 529338: ba cd 35 00 00 mov $0x35cd,%edx 0.00 : 52933d: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529342: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529347: e8 74 17 25 00 callq 77aac0 0.00 : 52934c: 84 c0 test %al,%al 0.00 : 52934e: 0f 84 53 8c fe ff je 511fa7 0.00 : 529354: 48 89 df mov %rbx,%rdi 0.00 : 529357: e8 b4 4d 0b 00 callq 5de110 0.00 : 52935c: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529363: 89 c7 mov %eax,%edi 0.00 : 529365: e8 36 49 fe ff callq 50dca0 0.00 : 52936a: bf 00 a1 7c 00 mov $0x7ca100,%edi 0.00 : 52936f: 41 89 c4 mov %eax,%r12d 0.00 : 529372: 31 c0 xor %eax,%eax 0.00 : 529374: e8 27 35 25 00 callq 77c8a0 0.00 : 529379: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52937e: 89 c3 mov %eax,%ebx 0.00 : 529380: e9 db b4 ff ff jmpq 524860 0.00 : 529385: 0f 1f 00 nopl (%rax) : FunctionParameter *p = (FunctionParameter *) linitial(columns); : : result = (TypeName *) copyObject(p->argType); : } : else : result = SystemTypeName("record"); 0.00 : 529388: bf 9d 96 7b 00 mov $0x7b969d,%edi 0.00 : 52938d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529394: e8 97 76 fe ff callq 510a30 0.00 : 529399: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5293a0: 48 89 c2 mov %rax,%rdx 0.00 : 5293a3: e9 58 fd ff ff jmpq 529100 : if (IsA($4, SubLink)) : { : /* generate NOT (foo = ANY (subquery)) */ : /* Make an = ANY node */ : SubLink *n = (SubLink *) $4; : n->subLinkType = ANY_SUBLINK; 0.00 : 5293a8: c7 43 04 02 00 00 00 movl $0x2,0x4(%rbx) : n->subLinkId = 0; 0.00 : 5293af: c7 43 08 00 00 00 00 movl $0x0,0x8(%rbx) : n->testexpr = $1; : n->operName = list_make1(makeString("=")); 0.00 : 5293b6: bf 45 97 7c 00 mov $0x7c9745,%edi : /* generate NOT (foo = ANY (subquery)) */ : /* Make an = ANY node */ : SubLink *n = (SubLink *) $4; : n->subLinkType = ANY_SUBLINK; : n->subLinkId = 0; : n->testexpr = $1; 0.00 : 5293bb: 48 8b 42 e8 mov -0x18(%rdx),%rax 0.00 : 5293bf: 48 89 43 10 mov %rax,0x10(%rbx) : n->operName = list_make1(makeString("=")); 0.00 : 5293c3: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5293ca: e8 21 63 0d 00 callq 5ff6f0 0.00 : 5293cf: 31 f6 xor %esi,%esi 0.00 : 5293d1: 48 89 c7 mov %rax,%rdi 0.00 : 5293d4: e8 77 84 0b 00 callq 5e1850 0.00 : 5293d9: 48 89 43 18 mov %rax,0x18(%rbx) : n->location = @3; 0.00 : 5293dd: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx : /* Stick a NOT on top */ : $$ = makeNotExpr((Node *) n, @2); 0.00 : 5293e4: 48 89 df mov %rbx,%rdi : SubLink *n = (SubLink *) $4; : n->subLinkType = ANY_SUBLINK; : n->subLinkId = 0; : n->testexpr = $1; : n->operName = list_make1(makeString("=")); : n->location = @3; 0.00 : 5293e7: 8b 41 fc mov -0x4(%rcx),%eax 0.00 : 5293ea: 89 43 28 mov %eax,0x28(%rbx) : /* Stick a NOT on top */ : $$ = makeNotExpr((Node *) n, @2); 0.00 : 5293ed: 8b 71 f8 mov -0x8(%rcx),%esi 0.00 : 5293f0: e8 ab 7f fe ff callq 5113a0 0.00 : 5293f5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5293fc: 49 89 c6 mov %rax,%r14 0.00 : 5293ff: e9 7c 85 fe ff jmpq 511980 : $$ = (Node *)n; : } : | a_expr subquery_Op sub_type '(' a_expr ')' %prec Op : { : if ($3 == ANY_SUBLINK) : $$ = (Node *) makeA_Expr(AEXPR_OP_ANY, $2, $1, $5, @2); 0.00 : 529404: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 52940b: 48 8b 4e f8 mov -0x8(%rsi),%rcx 0.00 : 52940f: bf 01 00 00 00 mov $0x1,%edi 0.00 : 529414: 48 8b 56 d8 mov -0x28(%rsi),%rdx 0.00 : 529418: 48 8b 76 e0 mov -0x20(%rsi),%rsi 0.00 : 52941c: 44 8b 43 f0 mov -0x10(%rbx),%r8d 0.00 : 529420: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529427: e8 b4 85 0c 00 callq 5f19e0 0.00 : 52942c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529433: 49 89 c6 mov %rax,%r14 0.00 : 529436: e9 45 85 fe ff jmpq 511980 : n->arg = $2; : n->indirection = check_indirection($4, yyscanner); : $$ = (Node *)n; : } : else : $$ = $2; 0.00 : 52943b: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 529442: 4c 8b 73 f0 mov -0x10(%rbx),%r14 0.00 : 529446: e9 35 85 fe ff jmpq 511980 : RuleActionMulti: : RuleActionMulti ';' RuleActionStmtOrEmpty : { if ($3 != NULL) : $$ = lappend($1, $3); : else : $$ = $1; 0.00 : 52944b: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 529452: 4c 8b 72 f0 mov -0x10(%rdx),%r14 0.00 : 529456: e9 25 85 fe ff jmpq 511980 : n->jointype = JOIN_INNER; : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $3; : if ($4 != NULL && IsA($4, List)) : n->usingClause = (List *) $4; /* USING clause */ 0.00 : 52945b: 48 89 42 20 mov %rax,0x20(%rdx) : JoinExpr *n = makeNode(JoinExpr); : n->jointype = JOIN_INNER; : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $3; : if ($4 != NULL && IsA($4, List)) 0.00 : 52945f: e9 1b e2 fe ff jmpq 51767f : n->kind = VAR_SET_VALUE; : n->name = "timezone"; : if ($3 != NULL) : n->args = list_make1($3); : else : n->kind = VAR_SET_DEFAULT; 0.00 : 529464: c7 43 04 01 00 00 00 movl $0x1,0x4(%rbx) 0.00 : 52946b: e9 78 ed ff ff jmpq 5281e8 : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* One can omit the schema name or the authorization id. */ : if ($3 != NULL) : n->schemaname = $3; : else : n->schemaname = $5; 0.00 : 529470: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 529477: 48 8b 43 f8 mov -0x8(%rbx),%rax 0.00 : 52947b: e9 98 f1 ff ff jmpq 528618 : n->kind = VAR_SET_VALUE; : n->name = "client_encoding"; : if ($2 != NULL) : n->args = list_make1(makeStringConst($2, @2)); : else : n->kind = VAR_SET_DEFAULT; 0.00 : 529480: c7 40 04 01 00 00 00 movl $0x1,0x4(%rax) 0.00 : 529487: e9 3f ec ff ff jmpq 5280cb : stmtmulti: stmtmulti ';' stmt : { : if ($3 != NULL) : $$ = lappend($1, $3); : else : $$ = $1; 0.00 : 52948c: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 529493: 4c 8b 72 f0 mov -0x10(%rdx),%r14 0.00 : 529497: e9 e4 84 fe ff jmpq 511980 : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* One can omit the schema name or the authorization id. */ : if ($6 != NULL) : n->schemaname = $6; : else : n->schemaname = $8; 0.00 : 52949c: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5294a3: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 5294a7: e9 82 f0 ff ff jmpq 52852e : */ : if (strcmp($1, "superuser") == 0) : $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nosuperuser") == 0) : $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "createuser") == 0) 0.00 : 5294ac: bf 39 94 7c 00 mov $0x7c9439,%edi 0.00 : 5294b1: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 5294b6: 4c 89 c6 mov %r8,%rsi 0.00 : 5294b9: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5294bb: 0f 85 b0 00 00 00 jne 529571 : { : /* For backwards compatibility, synonym for SUPERUSER */ : $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); 0.00 : 5294c1: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5294c6: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5294cd: e8 7e 62 0d 00 callq 5ff750 0.00 : 5294d2: bf 7d 53 7c 00 mov $0x7c537d,%edi 0.00 : 5294d7: 48 89 c6 mov %rax,%rsi 0.00 : 5294da: e8 21 80 0c 00 callq 5f1500 0.00 : 5294df: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5294e6: 49 89 c6 mov %rax,%r14 0.00 : 5294e9: e9 92 84 fe ff jmpq 511980 : foreach(lc, $3) : { : NamedArgExpr *arg = (NamedArgExpr *) lfirst(lc); : : if (IsA(arg, NamedArgExpr)) : ereport(ERROR, 0.00 : 5294ee: 45 31 c0 xor %r8d,%r8d 0.00 : 5294f1: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 5294f6: ba 68 32 00 00 mov $0x3268,%edx 0.00 : 5294fb: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529500: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529505: e8 b6 15 25 00 callq 77aac0 0.00 : 52950a: 84 c0 test %al,%al 0.00 : 52950c: 0f 84 95 8a fe ff je 511fa7 0.00 : 529512: 8b 7b 1c mov 0x1c(%rbx),%edi 0.00 : 529515: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52951c: e8 7f 47 fe ff callq 50dca0 0.00 : 529521: bf 50 a6 7c 00 mov $0x7ca650,%edi 0.00 : 529526: 41 89 c4 mov %eax,%r12d 0.00 : 529529: 31 c0 xor %eax,%eax 0.00 : 52952b: e8 70 33 25 00 callq 77c8a0 0.00 : 529530: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529535: 89 c3 mov %eax,%ebx 0.00 : 529537: e9 24 b3 ff ff jmpq 524860 0.00 : 52953c: 0f 1f 40 00 nopl 0x0(%rax) : ; : : CharacterWithoutLength: character opt_charset : { : if (($2 != NULL) && (strcmp($2, "sql_text") != 0)) : $1 = psprintf("%s_%s", $1, $2); 0.00 : 529540: 48 8b 33 mov (%rbx),%rsi 0.00 : 529543: 4c 89 c2 mov %r8,%rdx 0.00 : 529546: bf 0b 97 7c 00 mov $0x7c970b,%edi 0.00 : 52954b: 31 c0 xor %eax,%eax 0.00 : 52954d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529554: e8 87 4f 28 00 callq 7ae4e0 0.00 : 529559: 48 89 03 mov %rax,(%rbx) 0.00 : 52955c: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529563: e9 16 d6 fe ff jmpq 516b7e : n->jointype = $2; : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $4; : if ($5 != NULL && IsA($5, List)) : n->usingClause = (List *) $5; /* USING clause */ 0.00 : 529568: 48 89 42 20 mov %rax,0x20(%rdx) : JoinExpr *n = makeNode(JoinExpr); : n->jointype = $2; : n->isNatural = FALSE; : n->larg = $1; : n->rarg = $4; : if ($5 != NULL && IsA($5, List)) 0.00 : 52956c: e9 31 ec fe ff jmpq 5181a2 : else if (strcmp($1, "createuser") == 0) : { : /* For backwards compatibility, synonym for SUPERUSER */ : $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE)); : } : else if (strcmp($1, "nocreateuser") == 0) 0.00 : 529571: bf 37 94 7c 00 mov $0x7c9437,%edi 0.00 : 529576: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 52957b: 4c 89 c6 mov %r8,%rsi 0.00 : 52957e: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 529580: 0f 85 45 02 00 00 jne 5297cb : { : /* For backwards compatibility, synonym for SUPERUSER */ : $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); 0.00 : 529586: 31 ff xor %edi,%edi 0.00 : 529588: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52958f: e8 bc 61 0d 00 callq 5ff750 0.00 : 529594: bf 7d 53 7c 00 mov $0x7c537d,%edi 0.00 : 529599: 48 89 c6 mov %rax,%rsi 0.00 : 52959c: e8 5f 7f 0c 00 callq 5f1500 0.00 : 5295a1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5295a8: 49 89 c6 mov %rax,%r14 0.00 : 5295ab: e9 d0 83 fe ff jmpq 511980 : $$->catalogname = NULL; : $$->schemaname = $1; : $$->relname = strVal(linitial($2)); : break; : case 2: : $$->catalogname = $1; 0.00 : 5295b0: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 5295b7: 48 8b 42 f8 mov -0x8(%rdx),%rax 0.00 : 5295bb: 48 89 41 08 mov %rax,0x8(%rcx) : $$->schemaname = strVal(linitial($2)); 0.00 : 5295bf: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 5295c6: 31 c0 xor %eax,%eax 0.00 : 5295c8: 48 8b 13 mov (%rbx),%rdx 0.00 : 5295cb: 48 85 d2 test %rdx,%rdx 0.00 : 5295ce: 74 04 je 5295d4 0.00 : 5295d0: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 5295d4: 48 8b 00 mov (%rax),%rax 0.00 : 5295d7: 31 d2 xor %edx,%edx 0.00 : 5295d9: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5295dd: 48 89 41 10 mov %rax,0x10(%rcx) : $$->relname = strVal(lsecond($2)); 0.00 : 5295e1: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 5295e8: 48 8b 06 mov (%rsi),%rax 0.00 : 5295eb: 48 85 c0 test %rax,%rax 0.00 : 5295ee: 74 04 je 5295f4 0.00 : 5295f0: 48 8b 50 08 mov 0x8(%rax),%rdx 0.00 : 5295f4: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 5295f8: 48 8b 00 mov (%rax),%rax 0.00 : 5295fb: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 5295ff: 48 89 41 18 mov %rax,0x18(%rcx) : break; 0.00 : 529603: e9 78 83 fe ff jmpq 511980 : ; : : CharacterWithLength: character '(' Iconst ')' opt_charset : { : if (($5 != NULL) && (strcmp($5, "sql_text") != 0)) : $1 = psprintf("%s_%s", $1, $5); 0.00 : 529608: 48 8b 85 88 f4 ff ff mov -0xb78(%rbp),%rax 0.00 : 52960f: 4c 89 c2 mov %r8,%rdx 0.00 : 529612: bf 0b 97 7c 00 mov $0x7c970b,%edi 0.00 : 529617: 48 8b 70 e0 mov -0x20(%rax),%rsi 0.00 : 52961b: 31 c0 xor %eax,%eax 0.00 : 52961d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529624: e8 b7 4e 28 00 callq 7ae4e0 0.00 : 529629: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 529630: 48 89 42 e0 mov %rax,-0x20(%rdx) 0.00 : 529634: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52963b: e9 c8 d5 fe ff jmpq 516c08 : check_qualified_name($2, yyscanner); : $$ = makeRangeVar(NULL, NULL, @1); : switch (list_length($2)) : { : case 1: : $$->catalogname = NULL; 0.00 : 529640: 48 c7 41 08 00 00 00 movq $0x0,0x8(%rcx) 0.00 : 529647: 00 : $$->schemaname = $1; 0.00 : 529648: 48 8b b5 88 f4 ff ff mov -0xb78(%rbp),%rsi 0.00 : 52964f: 48 8b 46 f8 mov -0x8(%rsi),%rax 0.00 : 529653: 48 89 41 10 mov %rax,0x10(%rcx) : $$->relname = strVal(linitial($2)); 0.00 : 529657: 48 8b 16 mov (%rsi),%rdx 0.00 : 52965a: 31 c0 xor %eax,%eax 0.00 : 52965c: 48 85 d2 test %rdx,%rdx 0.00 : 52965f: 74 04 je 529665 0.00 : 529661: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 529665: 48 8b 00 mov (%rax),%rax 0.00 : 529668: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 52966c: 48 89 41 18 mov %rax,0x18(%rcx) : break; 0.00 : 529670: e9 0b 83 fe ff jmpq 511980 : * into the destination ResTargets. This is semantically : * equivalent to, and much cheaper to process than, the : * general case. : */ : if (list_length($2) != list_length($5)) : ereport(ERROR, 0.00 : 529675: 45 31 c0 xor %r8d,%r8d 0.00 : 529678: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52967d: ba e7 24 00 00 mov $0x24e7,%edx 0.00 : 529682: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529687: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52968c: e8 2f 14 25 00 callq 77aac0 0.00 : 529691: 84 c0 test %al,%al 0.00 : 529693: 0f 84 0e 89 fe ff je 511fa7 0.00 : 529699: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5296a0: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5296a7: 8b 3b mov (%rbx),%edi 0.00 : 5296a9: e8 f2 45 fe ff callq 50dca0 0.00 : 5296ae: bf f8 a1 7c 00 mov $0x7ca1f8,%edi 0.00 : 5296b3: 41 89 c4 mov %eax,%r12d 0.00 : 5296b6: 31 c0 xor %eax,%eax 0.00 : 5296b8: e8 e3 31 25 00 callq 77c8a0 0.00 : 5296bd: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 5296c2: 89 c3 mov %eax,%ebx 0.00 : 5296c4: e9 97 b1 ff ff jmpq 524860 : /* : * Check FLOAT() precision limits assuming IEEE floating : * types - thomas 1997-09-18 : */ : if ($2 < 1) : ereport(ERROR, 0.00 : 5296c9: 45 31 c0 xor %r8d,%r8d 0.00 : 5296cc: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 5296d1: ba e0 29 00 00 mov $0x29e0,%edx 0.00 : 5296d6: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 5296db: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5296e0: e8 db 13 25 00 callq 77aac0 0.00 : 5296e5: 84 c0 test %al,%al 0.00 : 5296e7: 0f 84 ba 88 fe ff je 511fa7 0.00 : 5296ed: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 5296f4: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 5296fb: 8b 7b fc mov -0x4(%rbx),%edi 0.00 : 5296fe: e8 9d 45 fe ff callq 50dca0 0.00 : 529703: bf 30 a3 7c 00 mov $0x7ca330,%edi 0.00 : 529708: 41 89 c4 mov %eax,%r12d 0.00 : 52970b: 31 c0 xor %eax,%eax 0.00 : 52970d: e8 8e 31 25 00 callq 77c8a0 0.00 : 529712: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 529717: 89 c3 mov %eax,%ebx 0.00 : 529719: e9 42 b1 ff ff jmpq 524860 : { : TypeName *t = $1; : if ($6 != NIL) : { : if (list_length($6) != 1) : ereport(ERROR, 0.00 : 52971e: 45 31 c0 xor %r8d,%r8d 0.00 : 529721: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529726: ba 87 32 00 00 mov $0x3287,%edx 0.00 : 52972b: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529730: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529735: e8 86 13 25 00 callq 77aac0 0.00 : 52973a: 84 c0 test %al,%al 0.00 : 52973c: 0f 84 65 88 fe ff je 511fa7 0.00 : 529742: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 529749: 8b 79 ec mov -0x14(%rcx),%edi 0.00 : 52974c: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529753: e8 48 45 fe ff callq 50dca0 0.00 : 529758: bf 08 9f 7c 00 mov $0x7c9f08,%edi 0.00 : 52975d: 41 89 c4 mov %eax,%r12d 0.00 : 529760: 31 c0 xor %eax,%eax 0.00 : 529762: e8 39 31 25 00 callq 77c8a0 0.00 : 529767: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52976c: 89 c3 mov %eax,%ebx 0.00 : 52976e: e9 ed b0 ff ff jmpq 524860 : errmsg("interval precision specified twice"), : parser_errposition(@1))); : t->typmods = lappend($6, makeIntConst($3, @3)); : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), 0.00 : 529773: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52977a: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 529781: 8b 71 f4 mov -0xc(%rcx),%esi 0.00 : 529784: 8b 7b e8 mov -0x18(%rbx),%edi 0.00 : 529787: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52978e: e8 7d 74 fe ff callq 510c10 0.00 : 529793: 31 f6 xor %esi,%esi 0.00 : 529795: 48 89 c7 mov %rax,%rdi 0.00 : 529798: e8 b3 80 0b 00 callq 5e1850 0.00 : 52979d: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 5297a2: 48 89 c3 mov %rax,%rbx 0.00 : 5297a5: bf ff 7f 00 00 mov $0x7fff,%edi 0.00 : 5297aa: e8 61 74 fe ff callq 510c10 0.00 : 5297af: 48 89 de mov %rbx,%rsi 0.00 : 5297b2: 48 89 c7 mov %rax,%rdi 0.00 : 5297b5: e8 96 80 0b 00 callq 5e1850 0.00 : 5297ba: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 5297bf: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5297c6: e9 28 83 fe ff jmpq 511af3 : else if (strcmp($1, "nocreateuser") == 0) : { : /* For backwards compatibility, synonym for SUPERUSER */ : $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); : } : else if (strcmp($1, "createrole") == 0) 0.00 : 5297cb: bf 46 94 7c 00 mov $0x7c9446,%edi 0.00 : 5297d0: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 5297d5: 4c 89 c6 mov %r8,%rsi 0.00 : 5297d8: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5297da: 0f 85 b7 00 00 00 jne 529897 : $$ = makeDefElem("createrole", (Node *)makeInteger(TRUE)); 0.00 : 5297e0: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5297e5: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5297ec: e8 5f 5f 0d 00 callq 5ff750 0.00 : 5297f1: bf 46 94 7c 00 mov $0x7c9446,%edi 0.00 : 5297f6: 48 89 c6 mov %rax,%rsi 0.00 : 5297f9: e8 02 7d 0c 00 callq 5f1500 0.00 : 5297fe: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529805: 49 89 c6 mov %rax,%r14 0.00 : 529808: e9 73 81 fe ff jmpq 511980 : { : $$ = $1; : if ($5 != NIL) : { : if (list_length($5) != 1) : ereport(ERROR, 0.00 : 52980d: 45 31 c0 xor %r8d,%r8d 0.00 : 529810: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529815: ba 62 29 00 00 mov $0x2962,%edx 0.00 : 52981a: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52981f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529824: e8 97 12 25 00 callq 77aac0 0.00 : 529829: 84 c0 test %al,%al 0.00 : 52982b: 0f 84 76 87 fe ff je 511fa7 0.00 : 529831: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 529838: 8b 79 f0 mov -0x10(%rcx),%edi 0.00 : 52983b: e9 0c ff ff ff jmpq 52974c : errmsg("interval precision specified twice"), : parser_errposition(@1))); : $$->typmods = lappend($5, makeIntConst($3, @3)); : } : else : $$->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), 0.00 : 529840: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 529847: 48 8b 9d 88 f4 ff ff mov -0xb78(%rbp),%rbx 0.00 : 52984e: 8b 71 f8 mov -0x8(%rcx),%esi 0.00 : 529851: 8b 7b f0 mov -0x10(%rbx),%edi 0.00 : 529854: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52985b: e8 b0 73 fe ff callq 510c10 0.00 : 529860: 31 f6 xor %esi,%esi 0.00 : 529862: 48 89 c7 mov %rax,%rdi 0.00 : 529865: e8 e6 7f 0b 00 callq 5e1850 0.00 : 52986a: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 52986f: 48 89 c3 mov %rax,%rbx 0.00 : 529872: bf ff 7f 00 00 mov $0x7fff,%edi 0.00 : 529877: e8 94 73 fe ff callq 510c10 0.00 : 52987c: 48 89 de mov %rbx,%rsi 0.00 : 52987f: 48 89 c7 mov %rax,%rdi 0.00 : 529882: e8 c9 7f 0b 00 callq 5e1850 0.00 : 529887: 49 89 46 18 mov %rax,0x18(%r14) 0.00 : 52988b: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529892: e9 e9 80 fe ff jmpq 511980 : /* For backwards compatibility, synonym for SUPERUSER */ : $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE)); : } : else if (strcmp($1, "createrole") == 0) : $$ = makeDefElem("createrole", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nocreaterole") == 0) 0.00 : 529897: bf 44 94 7c 00 mov $0x7c9444,%edi 0.00 : 52989c: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 5298a1: 4c 89 c6 mov %r8,%rsi 0.00 : 5298a4: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5298a6: 75 2a jne 5298d2 : $$ = makeDefElem("createrole", (Node *)makeInteger(FALSE)); 0.00 : 5298a8: 31 ff xor %edi,%edi 0.00 : 5298aa: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5298b1: e8 9a 5e 0d 00 callq 5ff750 0.00 : 5298b6: bf 46 94 7c 00 mov $0x7c9446,%edi 0.00 : 5298bb: 48 89 c6 mov %rax,%rsi 0.00 : 5298be: e8 3d 7c 0c 00 callq 5f1500 0.00 : 5298c3: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5298ca: 49 89 c6 mov %rax,%r14 0.00 : 5298cd: e9 ae 80 fe ff jmpq 511980 : else if (strcmp($1, "replication") == 0) 0.00 : 5298d2: bf 61 94 7c 00 mov $0x7c9461,%edi 0.00 : 5298d7: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 5298dc: 4c 89 c6 mov %r8,%rsi 0.00 : 5298df: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5298e1: 0f 85 d6 00 00 00 jne 5299bd : $$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE)); 0.00 : 5298e7: bf 01 00 00 00 mov $0x1,%edi 0.00 : 5298ec: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5298f3: e8 58 5e 0d 00 callq 5ff750 0.00 : 5298f8: bf 51 94 7c 00 mov $0x7c9451,%edi 0.00 : 5298fd: 48 89 c6 mov %rax,%rsi 0.00 : 529900: e8 fb 7b 0c 00 callq 5f1500 0.00 : 529905: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52990c: 49 89 c6 mov %rax,%r14 0.00 : 52990f: e9 6c 80 fe ff jmpq 511980 : n->is_from = $6; : n->is_program = $7; : n->filename = $8; : : if (n->is_program && n->filename == NULL) : ereport(ERROR, 0.00 : 529914: 45 31 c0 xor %r8d,%r8d 0.00 : 529917: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52991c: ba 07 0a 00 00 mov $0xa07,%edx 0.00 : 529921: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529926: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52992b: e8 90 11 25 00 callq 77aac0 0.00 : 529930: 84 c0 test %al,%al 0.00 : 529932: 0f 84 6f 86 fe ff je 511fa7 0.00 : 529938: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52993f: 8b 78 f4 mov -0xc(%rax),%edi : n->is_program = $4; : n->filename = $5; : n->options = $7; : : if (n->is_program && n->filename == NULL) : ereport(ERROR, 0.00 : 529942: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529949: e8 52 43 fe ff callq 50dca0 0.00 : 52994e: bf 30 9f 7c 00 mov $0x7c9f30,%edi 0.00 : 529953: 41 89 c4 mov %eax,%r12d 0.00 : 529956: 31 c0 xor %eax,%eax 0.00 : 529958: e8 43 2f 25 00 callq 77c8a0 0.00 : 52995d: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529962: 89 c3 mov %eax,%ebx 0.00 : 529964: e9 f7 ae ff ff jmpq 524860 : TypeName *t = $1; : if ($3 != NIL) : { : A_Const *n = (A_Const *) linitial($3); : if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) : ereport(ERROR, 0.00 : 529969: 45 31 c0 xor %r8d,%r8d 0.00 : 52996c: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529971: ba 0e 06 00 00 mov $0x60e,%edx : TypeName *t = $1; : if ($6 != NIL) : { : A_Const *n = (A_Const *) linitial($6); : if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) : ereport(ERROR, 0.00 : 529976: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52997b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529980: e8 3b 11 25 00 callq 77aac0 0.00 : 529985: 84 c0 test %al,%al 0.00 : 529987: 0f 84 1a 86 fe ff je 511fa7 0.00 : 52998d: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 529994: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52999b: 8b 38 mov (%rax),%edi 0.00 : 52999d: e8 fe 42 fe ff callq 50dca0 0.00 : 5299a2: bf d0 9e 7c 00 mov $0x7c9ed0,%edi 0.00 : 5299a7: 41 89 c4 mov %eax,%r12d 0.00 : 5299aa: 31 c0 xor %eax,%eax 0.00 : 5299ac: e8 ef 2e 25 00 callq 77c8a0 0.00 : 5299b1: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 5299b6: 89 c3 mov %eax,%ebx 0.00 : 5299b8: e9 a3 ae ff ff jmpq 524860 : $$ = makeDefElem("createrole", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nocreaterole") == 0) : $$ = makeDefElem("createrole", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "replication") == 0) : $$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "noreplication") == 0) 0.00 : 5299bd: bf 5f 94 7c 00 mov $0x7c945f,%edi 0.00 : 5299c2: b9 0e 00 00 00 mov $0xe,%ecx 0.00 : 5299c7: 4c 89 c6 mov %r8,%rsi 0.00 : 5299ca: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5299cc: 75 2a jne 5299f8 : $$ = makeDefElem("isreplication", (Node *)makeInteger(FALSE)); 0.00 : 5299ce: 31 ff xor %edi,%edi 0.00 : 5299d0: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 5299d7: e8 74 5d 0d 00 callq 5ff750 0.00 : 5299dc: bf 51 94 7c 00 mov $0x7c9451,%edi 0.00 : 5299e1: 48 89 c6 mov %rax,%rsi 0.00 : 5299e4: e8 17 7b 0c 00 callq 5f1500 0.00 : 5299e9: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 5299f0: 49 89 c6 mov %rax,%r14 0.00 : 5299f3: e9 88 7f fe ff jmpq 511980 : else if (strcmp($1, "createdb") == 0) 0.00 : 5299f8: bf 6f 94 7c 00 mov $0x7c946f,%edi 0.00 : 5299fd: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 529a02: 4c 89 c6 mov %r8,%rsi 0.00 : 529a05: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 529a07: 75 2d jne 529a36 : $$ = makeDefElem("createdb", (Node *)makeInteger(TRUE)); 0.00 : 529a09: bf 01 00 00 00 mov $0x1,%edi 0.00 : 529a0e: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529a15: e8 36 5d 0d 00 callq 5ff750 0.00 : 529a1a: bf 6f 94 7c 00 mov $0x7c946f,%edi 0.00 : 529a1f: 48 89 c6 mov %rax,%rsi 0.00 : 529a22: e8 d9 7a 0c 00 callq 5f1500 0.00 : 529a27: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529a2e: 49 89 c6 mov %rax,%r14 0.00 : 529a31: e9 4a 7f fe ff jmpq 511980 : else if (strcmp($1, "nocreatedb") == 0) 0.00 : 529a36: bf 6d 94 7c 00 mov $0x7c946d,%edi 0.00 : 529a3b: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 529a40: 4c 89 c6 mov %r8,%rsi 0.00 : 529a43: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 529a45: 0f 85 8f 04 00 00 jne 529eda : $$ = makeDefElem("createdb", (Node *)makeInteger(FALSE)); 0.00 : 529a4b: 31 ff xor %edi,%edi 0.00 : 529a4d: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529a54: e8 f7 5c 0d 00 callq 5ff750 0.00 : 529a59: bf 6f 94 7c 00 mov $0x7c946f,%edi 0.00 : 529a5e: 48 89 c6 mov %rax,%rsi 0.00 : 529a61: e8 9a 7a 0c 00 callq 5f1500 0.00 : 529a66: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529a6d: 49 89 c6 mov %rax,%r14 0.00 : 529a70: e9 0b 7f fe ff jmpq 511980 : n->schemaname = $6; : else : n->schemaname = $8; : n->authid = $8; : if ($9 != NIL) : ereport(ERROR, 0.00 : 529a75: 45 31 c0 xor %r8d,%r8d 0.00 : 529a78: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529a7d: ba f2 04 00 00 mov $0x4f2,%edx 0.00 : 529a82: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529a87: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529a8c: e8 2f 10 25 00 callq 77aac0 0.00 : 529a91: 84 c0 test %al,%al 0.00 : 529a93: 0f 84 0e 85 fe ff je 511fa7 0.00 : 529a99: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529aa0: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529aa7: 8b 3b mov (%rbx),%edi 0.00 : 529aa9: e9 6f 01 00 00 jmpq 529c1d : int ndirectargs; : : /* No restriction unless last direct arg is VARIADIC */ : if (lastd->mode == FUNC_PARAM_VARIADIC) : { : FunctionParameter *firsto = (FunctionParameter *) linitial(orderedargs); 0.00 : 529aae: 49 8b 1c 24 mov (%r12),%rbx 0.00 : 529ab2: e9 79 f8 ff ff jmpq 529330 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("cannot use DISTINCT with WITHIN GROUP"), : parser_errposition(@2))); : if (n->func_variadic) : ereport(ERROR, 0.00 : 529ab7: 45 31 c0 xor %r8d,%r8d 0.00 : 529aba: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529abf: ba a5 2d 00 00 mov $0x2da5,%edx 0.00 : 529ac4: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529ac9: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529ace: e8 ed 0f 25 00 callq 77aac0 0.00 : 529ad3: 84 c0 test %al,%al 0.00 : 529ad5: 0f 84 cc 84 fe ff je 511fa7 0.00 : 529adb: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 529ae2: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529ae9: 8b 78 f8 mov -0x8(%rax),%edi 0.00 : 529aec: e8 af 41 fe ff callq 50dca0 0.00 : 529af1: bf a0 a4 7c 00 mov $0x7ca4a0,%edi 0.00 : 529af6: 41 89 c4 mov %eax,%r12d 0.00 : 529af9: 31 c0 xor %eax,%eax 0.00 : 529afb: e8 a0 2d 25 00 callq 77c8a0 0.00 : 529b00: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529b05: 89 c3 mov %eax,%ebx 0.00 : 529b07: e9 54 ad ff ff jmpq 524860 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), : parser_errposition(@2))); : if (n->agg_distinct) : ereport(ERROR, 0.00 : 529b0c: 45 31 c0 xor %r8d,%r8d 0.00 : 529b0f: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529b14: ba a0 2d 00 00 mov $0x2da0,%edx 0.00 : 529b19: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529b1e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529b23: e8 98 0f 25 00 callq 77aac0 0.00 : 529b28: 84 c0 test %al,%al 0.00 : 529b2a: 0f 84 77 84 fe ff je 511fa7 0.00 : 529b30: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 529b37: 8b 7e f8 mov -0x8(%rsi),%edi 0.00 : 529b3a: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529b41: e8 5a 41 fe ff callq 50dca0 0.00 : 529b46: bf 78 a4 7c 00 mov $0x7ca478,%edi 0.00 : 529b4b: 41 89 c4 mov %eax,%r12d 0.00 : 529b4e: 31 c0 xor %eax,%eax 0.00 : 529b50: e8 4b 2d 25 00 callq 77c8a0 0.00 : 529b55: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529b5a: 89 c3 mov %eax,%ebx 0.00 : 529b5c: e9 ff ac ff ff jmpq 524860 : * parse analysis. : */ : if ($2 != NIL) : { : if (n->agg_order != NIL) : ereport(ERROR, 0.00 : 529b61: 45 31 c0 xor %r8d,%r8d 0.00 : 529b64: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529b69: ba 9b 2d 00 00 mov $0x2d9b,%edx 0.00 : 529b6e: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529b73: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529b78: e8 43 0f 25 00 callq 77aac0 0.00 : 529b7d: 84 c0 test %al,%al 0.00 : 529b7f: 0f 84 22 84 fe ff je 511fa7 0.00 : 529b85: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529b8c: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529b93: 8b 7b f8 mov -0x8(%rbx),%edi 0.00 : 529b96: e8 05 41 fe ff callq 50dca0 0.00 : 529b9b: bf 40 a4 7c 00 mov $0x7ca440,%edi 0.00 : 529ba0: 41 89 c4 mov %eax,%r12d 0.00 : 529ba3: 31 c0 xor %eax,%eax 0.00 : 529ba5: e8 f6 2c 25 00 callq 77c8a0 0.00 : 529baa: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529baf: 89 c3 mov %eax,%ebx 0.00 : 529bb1: e9 aa ac ff ff jmpq 524860 : n->is_program = $4; : n->filename = $5; : n->options = $7; : : if (n->is_program && n->filename == NULL) : ereport(ERROR, 0.00 : 529bb6: 45 31 c0 xor %r8d,%r8d 0.00 : 529bb9: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529bbe: ba 24 0a 00 00 mov $0xa24,%edx 0.00 : 529bc3: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529bc8: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529bcd: e8 ee 0e 25 00 callq 77aac0 0.00 : 529bd2: 84 c0 test %al,%al 0.00 : 529bd4: 0f 84 cd 83 fe ff je 511fa7 0.00 : 529bda: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529be1: 8b 7b f8 mov -0x8(%rbx),%edi 0.00 : 529be4: e9 59 fd ff ff jmpq 529942 : CreateSchemaStmt *n = makeNode(CreateSchemaStmt); : /* ...but not both */ : n->schemaname = $6; : n->authid = NULL; : if ($7 != NIL) : ereport(ERROR, 0.00 : 529be9: 45 31 c0 xor %r8d,%r8d 0.00 : 529bec: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529bf1: ba 01 05 00 00 mov $0x501,%edx 0.00 : 529bf6: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529bfb: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529c00: e8 bb 0e 25 00 callq 77aac0 0.00 : 529c05: 84 c0 test %al,%al 0.00 : 529c07: 0f 84 9a 83 fe ff je 511fa7 0.00 : 529c0d: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 529c14: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529c1b: 8b 38 mov (%rax),%edi 0.00 : 529c1d: e8 7e 40 fe ff callq 50dca0 0.00 : 529c22: bf 68 9e 7c 00 mov $0x7c9e68,%edi 0.00 : 529c27: 41 89 c4 mov %eax,%r12d 0.00 : 529c2a: 31 c0 xor %eax,%eax 0.00 : 529c2c: e8 6f 2c 25 00 callq 77c8a0 0.00 : 529c31: bf 40 04 00 00 mov $0x440,%edi 0.00 : 529c36: 89 c3 mov %eax,%ebx 0.00 : 529c38: e9 23 ac ff ff jmpq 524860 : n->subquery = $2; : n->alias = $3; : /* same coment as above */ : if ($3 == NULL) : { : if (IsA($2, SelectStmt) && 0.00 : 529c3d: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 529c41: 81 38 c1 02 00 00 cmpl $0x2c1,(%rax) 0.00 : 529c47: 75 0b jne 529c54 0.00 : 529c49: 48 83 78 48 00 cmpq $0x0,0x48(%rax) 0.00 : 529c4e: 0f 85 cc 00 00 00 jne 529d20 : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("VALUES in FROM must have an alias"), : errhint("For example, FROM (VALUES ...) [AS] foo."), : parser_errposition(@2))); : else : ereport(ERROR, 0.00 : 529c54: 45 31 c0 xor %r8d,%r8d 0.00 : 529c57: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529c5c: ba ad 27 00 00 mov $0x27ad,%edx 0.00 : 529c61: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529c66: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529c6b: e8 50 0e 25 00 callq 77aac0 0.00 : 529c70: 84 c0 test %al,%al 0.00 : 529c72: 0f 84 2f 83 fe ff je 511fa7 0.00 : 529c78: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 529c7f: 8b 7e fc mov -0x4(%rsi),%edi 0.00 : 529c82: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529c89: e8 12 40 fe ff callq 50dca0 0.00 : 529c8e: bf d8 a2 7c 00 mov $0x7ca2d8,%edi 0.00 : 529c93: 41 89 c5 mov %eax,%r13d 0.00 : 529c96: 31 c0 xor %eax,%eax 0.00 : 529c98: e8 03 20 25 00 callq 77bca0 0.00 : 529c9d: bf 08 a3 7c 00 mov $0x7ca308,%edi 0.00 : 529ca2: 89 c3 mov %eax,%ebx 0.00 : 529ca4: e9 67 38 ff ff jmpq 51d510 : * However, it does seem like a good idea to emit : * an error message that's better than "syntax error". : */ : if ($2 == NULL) : { : if (IsA($1, SelectStmt) && 0.00 : 529ca9: 48 8b 41 f8 mov -0x8(%rcx),%rax 0.00 : 529cad: 81 38 c1 02 00 00 cmpl $0x2c1,(%rax) 0.00 : 529cb3: 75 07 jne 529cbc 0.00 : 529cb5: 48 83 78 48 00 cmpq $0x0,0x48(%rax) 0.00 : 529cba: 75 0f jne 529ccb : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("VALUES in FROM must have an alias"), : errhint("For example, FROM (VALUES ...) [AS] foo."), : parser_errposition(@1))); : else : ereport(ERROR, 0.00 : 529cbc: 45 31 c0 xor %r8d,%r8d 0.00 : 529cbf: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529cc4: ba 94 27 00 00 mov $0x2794,%edx 0.00 : 529cc9: eb 96 jmp 529c61 : */ : if ($2 == NULL) : { : if (IsA($1, SelectStmt) && : ((SelectStmt *) $1)->valuesLists) : ereport(ERROR, 0.00 : 529ccb: 45 31 c0 xor %r8d,%r8d 0.00 : 529cce: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529cd3: ba 8e 27 00 00 mov $0x278e,%edx : /* same coment as above */ : if ($3 == NULL) : { : if (IsA($2, SelectStmt) && : ((SelectStmt *) $2)->valuesLists) : ereport(ERROR, 0.00 : 529cd8: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529cdd: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529ce2: e8 d9 0d 25 00 callq 77aac0 0.00 : 529ce7: 84 c0 test %al,%al 0.00 : 529ce9: 0f 84 b8 82 fe ff je 511fa7 0.00 : 529cef: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529cf6: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529cfd: 8b 7b fc mov -0x4(%rbx),%edi 0.00 : 529d00: e8 9b 3f fe ff callq 50dca0 0.00 : 529d05: bf 80 a2 7c 00 mov $0x7ca280,%edi 0.00 : 529d0a: 41 89 c5 mov %eax,%r13d 0.00 : 529d0d: 31 c0 xor %eax,%eax 0.00 : 529d0f: e8 8c 1f 25 00 callq 77bca0 0.00 : 529d14: bf b0 a2 7c 00 mov $0x7ca2b0,%edi 0.00 : 529d19: 89 c3 mov %eax,%ebx 0.00 : 529d1b: e9 f0 37 ff ff jmpq 51d510 0.00 : 529d20: 45 31 c0 xor %r8d,%r8d 0.00 : 529d23: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529d28: ba a7 27 00 00 mov $0x27a7,%edx 0.00 : 529d2d: eb a9 jmp 529cd8 : TypeName *t = $1; : if ($6 != NIL) : { : A_Const *n = (A_Const *) linitial($6); : if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) : ereport(ERROR, 0.00 : 529d2f: 45 31 c0 xor %r8d,%r8d 0.00 : 529d32: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529d37: ba 1d 06 00 00 mov $0x61d,%edx 0.00 : 529d3c: e9 35 fc ff ff jmpq 529976 : errmsg("interval precision specified twice"), : parser_errposition(@1))); : t->typmods = lappend($6, makeIntConst($3, @3)); : } : else : t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), 0.00 : 529d41: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 529d48: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 529d4f: 8b 7a e8 mov -0x18(%rdx),%edi 0.00 : 529d52: 8b 70 f4 mov -0xc(%rax),%esi 0.00 : 529d55: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529d5c: e8 af 6e fe ff callq 510c10 0.00 : 529d61: 31 f6 xor %esi,%esi 0.00 : 529d63: 48 89 c7 mov %rax,%rdi 0.00 : 529d66: e8 e5 7a 0b 00 callq 5e1850 0.00 : 529d6b: be ff ff ff ff mov $0xffffffff,%esi 0.00 : 529d70: 48 89 c3 mov %rax,%rbx 0.00 : 529d73: bf ff 7f 00 00 mov $0x7fff,%edi 0.00 : 529d78: e8 93 6e fe ff callq 510c10 0.00 : 529d7d: 48 89 de mov %rbx,%rsi 0.00 : 529d80: 48 89 c7 mov %rax,%rdi 0.00 : 529d83: e8 c8 7a 0b 00 callq 5e1850 0.00 : 529d88: 49 89 44 24 18 mov %rax,0x18(%r12) 0.00 : 529d8d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529d94: e9 b2 de ff ff jmpq 527c4b : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), : parser_errposition(@6))); : if (list_length($6) != 1) : ereport(ERROR, 0.00 : 529d99: 45 31 c0 xor %r8d,%r8d 0.00 : 529d9c: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529da1: ba 22 06 00 00 mov $0x622,%edx 0.00 : 529da6: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529dab: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529db0: e8 0b 0d 25 00 callq 77aac0 0.00 : 529db5: 84 c0 test %al,%al 0.00 : 529db7: 0f 84 ea 81 fe ff je 511fa7 0.00 : 529dbd: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 529dc4: 8b 7a ec mov -0x14(%rdx),%edi 0.00 : 529dc7: e9 80 f9 ff ff jmpq 52974c : else if ($2 <= 24) : $$ = SystemTypeName("float4"); : else if ($2 <= 53) : $$ = SystemTypeName("float8"); : else : ereport(ERROR, 0.00 : 529dcc: 45 31 c0 xor %r8d,%r8d 0.00 : 529dcf: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529dd4: ba e9 29 00 00 mov $0x29e9,%edx 0.00 : 529dd9: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529dde: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529de3: e8 d8 0c 25 00 callq 77aac0 0.00 : 529de8: 84 c0 test %al,%al 0.00 : 529dea: 0f 84 b7 81 fe ff je 511fa7 0.00 : 529df0: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 529df7: 8b 7e fc mov -0x4(%rsi),%edi 0.00 : 529dfa: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529e01: e8 9a 3e fe ff callq 50dca0 0.00 : 529e06: bf 60 a3 7c 00 mov $0x7ca360,%edi 0.00 : 529e0b: 41 89 c4 mov %eax,%r12d 0.00 : 529e0e: 31 c0 xor %eax,%eax 0.00 : 529e10: e8 8b 2a 25 00 callq 77c8a0 0.00 : 529e15: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 529e1a: 89 c3 mov %eax,%ebx 0.00 : 529e1c: e9 3f aa ff ff jmpq 524860 : errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), : parser_errposition(@2))); : /* generic message for other conflicts */ : if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || : (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) : ereport(ERROR, 0.00 : 529e21: 45 31 c0 xor %r8d,%r8d 0.00 : 529e24: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529e29: ba ba 12 00 00 mov $0x12ba,%edx 0.00 : 529e2e: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529e33: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529e38: e8 83 0c 25 00 callq 77aac0 0.00 : 529e3d: 84 c0 test %al,%al 0.00 : 529e3f: 0f 84 62 81 fe ff je 511fa7 0.00 : 529e45: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 529e4c: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529e53: 8b 38 mov (%rax),%edi 0.00 : 529e55: e8 46 3e fe ff callq 50dca0 0.00 : 529e5a: bf 20 a0 7c 00 mov $0x7ca020,%edi 0.00 : 529e5f: 41 89 c4 mov %eax,%r12d 0.00 : 529e62: 31 c0 xor %eax,%eax 0.00 : 529e64: e8 37 2a 25 00 callq 77c8a0 0.00 : 529e69: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529e6e: 89 c3 mov %eax,%ebx 0.00 : 529e70: e9 eb a9 ff ff jmpq 524860 : */ : int newspec = $1 | $2; : : /* special message for this case */ : if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) : ereport(ERROR, 0.00 : 529e75: 45 31 c0 xor %r8d,%r8d 0.00 : 529e78: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529e7d: ba b3 12 00 00 mov $0x12b3,%edx 0.00 : 529e82: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529e87: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529e8c: e8 2f 0c 25 00 callq 77aac0 0.00 : 529e91: 84 c0 test %al,%al 0.00 : 529e93: 0f 84 0e 81 fe ff je 511fa7 0.00 : 529e99: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529ea0: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529ea7: 8b 3b mov (%rbx),%edi 0.00 : 529ea9: e8 f2 3d fe ff callq 50dca0 0.00 : 529eae: bf e0 9f 7c 00 mov $0x7c9fe0,%edi 0.00 : 529eb3: 41 89 c4 mov %eax,%r12d 0.00 : 529eb6: 31 c0 xor %eax,%eax 0.00 : 529eb8: e8 e3 29 25 00 callq 77c8a0 0.00 : 529ebd: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529ec2: 89 c3 mov %eax,%ebx 0.00 : 529ec4: e9 97 a9 ff ff jmpq 524860 : int events2 = intVal(linitial($3)); : List *columns1 = (List *) lsecond($1); : List *columns2 = (List *) lsecond($3); : : if (events1 & events2) : parser_yyerror("duplicate trigger events specified"); 0.00 : 529ec9: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529ed0: bf b8 9f 7c 00 mov $0x7c9fb8,%edi 0.00 : 529ed5: e8 f6 3d fe ff callq 50dcd0 : $$ = makeDefElem("isreplication", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "createdb") == 0) : $$ = makeDefElem("createdb", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nocreatedb") == 0) : $$ = makeDefElem("createdb", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "login") == 0) 0.00 : 529eda: bf 7b 94 7c 00 mov $0x7c947b,%edi 0.00 : 529edf: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 529ee4: 4c 89 c6 mov %r8,%rsi 0.00 : 529ee7: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 529ee9: 0f 85 fb 02 00 00 jne 52a1ea : $$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE)); 0.00 : 529eef: bf 01 00 00 00 mov $0x1,%edi 0.00 : 529ef4: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 529efb: e8 50 58 0d 00 callq 5ff750 0.00 : 529f00: bf 78 94 7c 00 mov $0x7c9478,%edi 0.00 : 529f05: 48 89 c6 mov %rax,%rsi 0.00 : 529f08: e8 f3 75 0c 00 callq 5f1500 0.00 : 529f0d: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 529f14: 49 89 c6 mov %rax,%r14 0.00 : 529f17: e9 64 7a fe ff jmpq 511980 : ereport(ERROR, : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("wrong number of parameters on left side of OVERLAPS expression"), : parser_errposition(@1))); : if (list_length($3) != 2) : ereport(ERROR, 0.00 : 529f1c: 45 31 c0 xor %r8d,%r8d 0.00 : 529f1f: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529f24: ba c0 2b 00 00 mov $0x2bc0,%edx 0.00 : 529f29: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529f2e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529f33: e8 88 0b 25 00 callq 77aac0 0.00 : 529f38: 84 c0 test %al,%al 0.00 : 529f3a: 0f 84 67 80 fe ff je 511fa7 0.00 : 529f40: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 529f47: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529f4e: 8b 3a mov (%rdx),%edi 0.00 : 529f50: e8 4b 3d fe ff callq 50dca0 0.00 : 529f55: bf d8 a3 7c 00 mov $0x7ca3d8,%edi 0.00 : 529f5a: 41 89 c4 mov %eax,%r12d 0.00 : 529f5d: 31 c0 xor %eax,%eax 0.00 : 529f5f: e8 3c 29 25 00 callq 77c8a0 0.00 : 529f64: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 529f69: 89 c3 mov %eax,%ebx 0.00 : 529f6b: e9 f0 a8 ff ff jmpq 524860 : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame end cannot be UNBOUNDED PRECEDING"), : parser_errposition(@4))); : if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && : (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) : ereport(ERROR, 0.00 : 529f70: 45 31 c0 xor %r8d,%r8d 0.00 : 529f73: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529f78: ba e2 2f 00 00 mov $0x2fe2,%edx 0.00 : 529f7d: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529f82: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529f87: e8 34 0b 25 00 callq 77aac0 0.00 : 529f8c: 84 c0 test %al,%al 0.00 : 529f8e: 0f 84 13 80 fe ff je 511fa7 0.00 : 529f94: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529f9b: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529fa2: 8b 3b mov (%rbx),%edi 0.00 : 529fa4: e8 f7 3c fe ff callq 50dca0 0.00 : 529fa9: bf d0 a5 7c 00 mov $0x7ca5d0,%edi 0.00 : 529fae: 41 89 c4 mov %eax,%r12d 0.00 : 529fb1: 31 c0 xor %eax,%eax 0.00 : 529fb3: e8 e8 28 25 00 callq 77c8a0 0.00 : 529fb8: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 529fbd: 89 c3 mov %eax,%ebx 0.00 : 529fbf: e9 9c a8 ff ff jmpq 524860 : (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), : errmsg("RANGE PRECEDING is only supported with UNBOUNDED"), : parser_errposition(@1))); : if (n->frameOptions & (FRAMEOPTION_START_VALUE_FOLLOWING | : FRAMEOPTION_END_VALUE_FOLLOWING)) : ereport(ERROR, 0.00 : 529fc4: 45 31 c0 xor %r8d,%r8d 0.00 : 529fc7: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 529fcc: ba a5 2f 00 00 mov $0x2fa5,%edx 0.00 : 529fd1: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 529fd6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 529fdb: e8 e0 0a 25 00 callq 77aac0 0.00 : 529fe0: 84 c0 test %al,%al 0.00 : 529fe2: 0f 84 bf 7f fe ff je 511fa7 0.00 : 529fe8: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 529fef: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 529ff6: 8b 7b fc mov -0x4(%rbx),%edi 0.00 : 529ff9: e8 a2 3c fe ff callq 50dca0 0.00 : 529ffe: bf 00 a5 7c 00 mov $0x7ca500,%edi 0.00 : 52a003: 41 89 c4 mov %eax,%r12d 0.00 : 52a006: 31 c0 xor %eax,%eax 0.00 : 52a008: e8 93 28 25 00 callq 77c8a0 0.00 : 52a00d: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52a012: 89 c3 mov %eax,%ebx 0.00 : 52a014: e9 47 a8 ff ff jmpq 524860 : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $13); : n->replace = true; : n->options = $11; : n->withCheckOption = $14; : if (n->withCheckOption != NO_CHECK_OPTION) : ereport(ERROR, 0.00 : 52a019: 45 31 c0 xor %r8d,%r8d 0.00 : 52a01c: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a021: ba 24 21 00 00 mov $0x2124,%edx 0.00 : 52a026: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a02b: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a030: e8 8b 0a 25 00 callq 77aac0 0.00 : 52a035: 84 c0 test %al,%al 0.00 : 52a037: 0f 84 6a 7f fe ff je 511fa7 0.00 : 52a03d: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52a044: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a04b: 8b 38 mov (%rax),%edi 0.00 : 52a04d: e8 4e 3c fe ff callq 50dca0 0.00 : 52a052: bf c0 a1 7c 00 mov $0x7ca1c0,%edi 0.00 : 52a057: 41 89 c4 mov %eax,%r12d 0.00 : 52a05a: 31 c0 xor %eax,%eax 0.00 : 52a05c: e8 3f 28 25 00 callq 77c8a0 0.00 : 52a061: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52a066: 89 c3 mov %eax,%ebx 0.00 : 52a068: e9 f3 a7 ff ff jmpq 524860 : (errcode(ERRCODE_SYNTAX_ERROR), : errmsg("type modifier cannot have parameter name"), : parser_errposition(arg->location))); : } : if ($4 != NIL) : ereport(ERROR, 0.00 : 52a06d: 45 31 c0 xor %r8d,%r8d 0.00 : 52a070: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a075: ba 6e 32 00 00 mov $0x326e,%edx 0.00 : 52a07a: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a07f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a084: e8 37 0a 25 00 callq 77aac0 0.00 : 52a089: 84 c0 test %al,%al 0.00 : 52a08b: 0f 84 16 7f fe ff je 511fa7 0.00 : 52a091: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52a098: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a09f: 8b 78 f8 mov -0x8(%rax),%edi 0.00 : 52a0a2: e8 f9 3b fe ff callq 50dca0 0.00 : 52a0a7: bf 80 a6 7c 00 mov $0x7ca680,%edi 0.00 : 52a0ac: 41 89 c4 mov %eax,%r12d 0.00 : 52a0af: 31 c0 xor %eax,%eax 0.00 : 52a0b1: e8 ea 27 25 00 callq 77c8a0 0.00 : 52a0b6: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52a0bb: 89 c3 mov %eax,%ebx 0.00 : 52a0bd: e9 9e a7 ff ff jmpq 524860 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame start cannot be UNBOUNDED FOLLOWING"), : parser_errposition(@2))); : if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) : ereport(ERROR, 0.00 : 52a0c2: 45 31 c0 xor %r8d,%r8d 0.00 : 52a0c5: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a0ca: ba dc 2f 00 00 mov $0x2fdc,%edx 0.00 : 52a0cf: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a0d4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a0d9: e8 e2 09 25 00 callq 77aac0 0.00 : 52a0de: 84 c0 test %al,%al 0.00 : 52a0e0: 0f 84 c1 7e fe ff je 511fa7 0.00 : 52a0e6: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52a0ed: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a0f4: 8b 39 mov (%rcx),%edi 0.00 : 52a0f6: e8 a5 3b fe ff callq 50dca0 0.00 : 52a0fb: bf a8 a5 7c 00 mov $0x7ca5a8,%edi 0.00 : 52a100: 41 89 c4 mov %eax,%r12d 0.00 : 52a103: 31 c0 xor %eax,%eax 0.00 : 52a105: e8 96 27 25 00 callq 77c8a0 0.00 : 52a10a: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 52a10f: 89 c3 mov %eax,%ebx 0.00 : 52a111: e9 4a a7 ff ff jmpq 524860 : ereport(ERROR, : (errcode(ERRCODE_WINDOWING_ERROR), : errmsg("frame start cannot be UNBOUNDED FOLLOWING"), : parser_errposition(@1))); : if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) : ereport(ERROR, 0.00 : 52a116: 45 31 c0 xor %r8d,%r8d 0.00 : 52a119: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a11e: ba c5 2f 00 00 mov $0x2fc5,%edx 0.00 : 52a123: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a128: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a12d: e8 8e 09 25 00 callq 77aac0 0.00 : 52a132: 84 c0 test %al,%al 0.00 : 52a134: 0f 84 6d 7e fe ff je 511fa7 0.00 : 52a13a: 48 8b 9d 98 f4 ff ff mov -0xb68(%rbp),%rbx 0.00 : 52a141: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a148: 8b 3b mov (%rbx),%edi 0.00 : 52a14a: e8 51 3b fe ff callq 50dca0 0.00 : 52a14f: bf 68 a5 7c 00 mov $0x7ca568,%edi 0.00 : 52a154: 41 89 c4 mov %eax,%r12d 0.00 : 52a157: 31 c0 xor %eax,%eax 0.00 : 52a159: e8 42 27 25 00 callq 77c8a0 0.00 : 52a15e: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 52a163: 89 c3 mov %eax,%ebx 0.00 : 52a165: e9 f6 a6 ff ff jmpq 524860 : : /* : * We ignore the names, though the aggr_arg production allows them; : * it doesn't allow default values, so those need not be checked. : */ : if (list_length(orderedargs) != 1 || 0.00 : 52a16a: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 52a16e: 48 8b 7a 10 mov 0x10(%rdx),%rdi 0.00 : 52a172: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52a179: e8 52 0f 0c 00 callq 5eb0d0 0.00 : 52a17e: 84 c0 test %al,%al 0.00 : 52a180: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52a187: 0f 84 a3 f1 ff ff je 529330 : firsto->mode != FUNC_PARAM_VARIADIC || : !equal(lastd->argType, firsto->argType)) : ereport(ERROR, 0.00 : 52a18d: 45 31 e4 xor %r12d,%r12d 0.00 : 52a190: e9 45 3c ff ff jmpq 51ddda : $$ = (Node *)n; : } : | row OVERLAPS row : { : if (list_length($1) != 2) : ereport(ERROR, 0.00 : 52a195: 45 31 c0 xor %r8d,%r8d 0.00 : 52a198: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a19d: ba bb 2b 00 00 mov $0x2bbb,%edx 0.00 : 52a1a2: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a1a7: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a1ac: e8 0f 09 25 00 callq 77aac0 0.00 : 52a1b1: 84 c0 test %al,%al 0.00 : 52a1b3: 0f 84 ee 7d fe ff je 511fa7 0.00 : 52a1b9: 48 8b b5 98 f4 ff ff mov -0xb68(%rbp),%rsi 0.00 : 52a1c0: 8b 7e f8 mov -0x8(%rsi),%edi 0.00 : 52a1c3: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a1ca: e8 d1 3a fe ff callq 50dca0 0.00 : 52a1cf: bf 98 a3 7c 00 mov $0x7ca398,%edi 0.00 : 52a1d4: 41 89 c4 mov %eax,%r12d 0.00 : 52a1d7: 31 c0 xor %eax,%eax 0.00 : 52a1d9: e8 c2 26 25 00 callq 77c8a0 0.00 : 52a1de: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52a1e3: 89 c3 mov %eax,%ebx 0.00 : 52a1e5: e9 76 a6 ff ff jmpq 524860 : $$ = makeDefElem("createdb", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nocreatedb") == 0) : $$ = makeDefElem("createdb", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "login") == 0) : $$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nologin") == 0) 0.00 : 52a1ea: bf 81 94 7c 00 mov $0x7c9481,%edi 0.00 : 52a1ef: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 52a1f4: 4c 89 c6 mov %r8,%rsi 0.00 : 52a1f7: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 52a1f9: 75 2a jne 52a225 : $$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE)); 0.00 : 52a1fb: 31 ff xor %edi,%edi 0.00 : 52a1fd: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52a204: e8 47 55 0d 00 callq 5ff750 0.00 : 52a209: bf 78 94 7c 00 mov $0x7c9478,%edi 0.00 : 52a20e: 48 89 c6 mov %rax,%rsi 0.00 : 52a211: e8 ea 72 0c 00 callq 5f1500 0.00 : 52a216: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52a21d: 49 89 c6 mov %rax,%r14 0.00 : 52a220: e9 5b 77 fe ff jmpq 511980 : else if (strcmp($1, "bypassrls") == 0) 0.00 : 52a225: bf 8b 94 7c 00 mov $0x7c948b,%edi 0.00 : 52a22a: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 52a22f: 4c 89 c6 mov %r8,%rsi 0.00 : 52a232: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 52a234: 0f 85 87 00 00 00 jne 52a2c1 : $$ = makeDefElem("bypassrls", (Node *)makeInteger(TRUE)); 0.00 : 52a23a: bf 01 00 00 00 mov $0x1,%edi 0.00 : 52a23f: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52a246: e8 05 55 0d 00 callq 5ff750 0.00 : 52a24b: bf 8b 94 7c 00 mov $0x7c948b,%edi 0.00 : 52a250: 48 89 c6 mov %rax,%rsi 0.00 : 52a253: e8 a8 72 0c 00 callq 5f1500 0.00 : 52a258: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52a25f: 49 89 c6 mov %rax,%r14 0.00 : 52a262: e9 19 77 fe ff jmpq 511980 : $$->catalogname = $1; : $$->schemaname = strVal(linitial($2)); : $$->relname = strVal(lsecond($2)); : break; : default: : ereport(ERROR, 0.00 : 52a267: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52a26e: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a275: 8b 78 fc mov -0x4(%rax),%edi 0.00 : 52a278: e8 23 3a fe ff callq 50dca0 0.00 : 52a27d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52a284: 41 89 c4 mov %eax,%r12d 0.00 : 52a287: 48 8b 1a mov (%rdx),%rbx 0.00 : 52a28a: 48 8b 7a f8 mov -0x8(%rdx),%rdi 0.00 : 52a28e: e8 5d 54 0d 00 callq 5ff6f0 0.00 : 52a293: 48 89 de mov %rbx,%rsi 0.00 : 52a296: 48 89 c7 mov %rax,%rdi 0.00 : 52a299: e8 b2 75 0b 00 callq 5e1850 0.00 : 52a29e: 48 89 c7 mov %rax,%rdi 0.00 : 52a2a1: e8 7a 48 fc ff callq 4eeb20 0.00 : 52a2a6: bf b0 29 7c 00 mov $0x7c29b0,%edi 0.00 : 52a2ab: 48 89 c6 mov %rax,%rsi 0.00 : 52a2ae: 31 c0 xor %eax,%eax 0.00 : 52a2b0: e8 eb 25 25 00 callq 77c8a0 0.00 : 52a2b5: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52a2ba: 89 c3 mov %eax,%ebx 0.00 : 52a2bc: e9 9f a5 ff ff jmpq 524860 : $$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nologin") == 0) : $$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "bypassrls") == 0) : $$ = makeDefElem("bypassrls", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nobypassrls") == 0) 0.00 : 52a2c1: bf 89 94 7c 00 mov $0x7c9489,%edi 0.00 : 52a2c6: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 52a2cb: 4c 89 c6 mov %r8,%rsi 0.00 : 52a2ce: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 52a2d0: 0f 85 d3 00 00 00 jne 52a3a9 : $$ = makeDefElem("bypassrls", (Node *)makeInteger(FALSE)); 0.00 : 52a2d6: 31 ff xor %edi,%edi 0.00 : 52a2d8: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52a2df: e8 6c 54 0d 00 callq 5ff750 0.00 : 52a2e4: bf 8b 94 7c 00 mov $0x7c948b,%edi 0.00 : 52a2e9: 48 89 c6 mov %rax,%rsi 0.00 : 52a2ec: e8 0f 72 0c 00 callq 5f1500 0.00 : 52a2f1: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52a2f8: 49 89 c6 mov %rax,%r14 0.00 : 52a2fb: e9 80 76 fe ff jmpq 511980 : { : WindowDef *n = $2; : n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; : if (n->frameOptions & (FRAMEOPTION_START_VALUE_PRECEDING | : FRAMEOPTION_END_VALUE_PRECEDING)) : ereport(ERROR, 0.00 : 52a300: 45 31 c0 xor %r8d,%r8d 0.00 : 52a303: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a308: ba 9f 2f 00 00 mov $0x2f9f,%edx 0.00 : 52a30d: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a312: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a317: e8 a4 07 25 00 callq 77aac0 0.00 : 52a31c: 84 c0 test %al,%al 0.00 : 52a31e: 0f 84 83 7c fe ff je 511fa7 0.00 : 52a324: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52a32b: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a332: 8b 79 fc mov -0x4(%rcx),%edi 0.00 : 52a335: e8 66 39 fe ff callq 50dca0 0.00 : 52a33a: bf c8 a4 7c 00 mov $0x7ca4c8,%edi 0.00 : 52a33f: 41 89 c4 mov %eax,%r12d 0.00 : 52a342: 31 c0 xor %eax,%eax 0.00 : 52a344: e8 57 25 25 00 callq 77c8a0 0.00 : 52a349: bf 40 04 00 00 mov $0x440,%edi 0.00 : 52a34e: 89 c3 mov %eax,%ebx 0.00 : 52a350: e9 0b a5 ff ff jmpq 524860 : frame_extent: frame_bound : { : WindowDef *n = $1; : /* reject invalid cases */ : if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) : ereport(ERROR, 0.00 : 52a355: 45 31 c0 xor %r8d,%r8d 0.00 : 52a358: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a35d: ba c0 2f 00 00 mov $0x2fc0,%edx 0.00 : 52a362: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a367: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a36c: e8 4f 07 25 00 callq 77aac0 0.00 : 52a371: 84 c0 test %al,%al 0.00 : 52a373: 0f 84 2e 7c fe ff je 511fa7 0.00 : 52a379: 48 8b 8d 98 f4 ff ff mov -0xb68(%rbp),%rcx 0.00 : 52a380: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a387: 8b 39 mov (%rcx),%edi : /* shift converts START_ options to END_ options */ : frameOptions |= n2->frameOptions << 1; : frameOptions |= FRAMEOPTION_BETWEEN; : /* reject invalid cases */ : if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) : ereport(ERROR, 0.00 : 52a389: e8 12 39 fe ff callq 50dca0 0.00 : 52a38e: bf 38 a5 7c 00 mov $0x7ca538,%edi 0.00 : 52a393: 41 89 c4 mov %eax,%r12d 0.00 : 52a396: 31 c0 xor %eax,%eax 0.00 : 52a398: e8 03 25 25 00 callq 77c8a0 0.00 : 52a39d: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 52a3a2: 89 c3 mov %eax,%ebx 0.00 : 52a3a4: e9 b7 a4 ff ff jmpq 524860 : $$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "bypassrls") == 0) : $$ = makeDefElem("bypassrls", (Node *)makeInteger(TRUE)); : else if (strcmp($1, "nobypassrls") == 0) : $$ = makeDefElem("bypassrls", (Node *)makeInteger(FALSE)); : else if (strcmp($1, "noinherit") == 0) 0.00 : 52a3a9: bf 95 94 7c 00 mov $0x7c9495,%edi 0.00 : 52a3ae: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 52a3b3: 4c 89 c6 mov %r8,%rsi 0.00 : 52a3b6: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 52a3b8: 75 2a jne 52a3e4 : { : /* : * Note that INHERIT is a keyword, so it's handled by main parser, but : * NOINHERIT is handled here. : */ : $$ = makeDefElem("inherit", (Node *)makeInteger(FALSE)); 0.00 : 52a3ba: 31 ff xor %edi,%edi 0.00 : 52a3bc: 4c 89 95 58 f4 ff ff mov %r10,-0xba8(%rbp) 0.00 : 52a3c3: e8 88 53 0d 00 callq 5ff750 0.00 : 52a3c8: bf 1a 15 88 00 mov $0x88151a,%edi 0.00 : 52a3cd: 48 89 c6 mov %rax,%rsi 0.00 : 52a3d0: e8 2b 71 0c 00 callq 5f1500 0.00 : 52a3d5: 4c 8b 95 58 f4 ff ff mov -0xba8(%rbp),%r10 0.00 : 52a3dc: 49 89 c6 mov %rax,%r14 0.00 : 52a3df: e9 9c 75 fe ff jmpq 511980 : } : else : ereport(ERROR, 0.00 : 52a3e4: 45 31 c0 xor %r8d,%r8d 0.00 : 52a3e7: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a3ec: ba d8 03 00 00 mov $0x3d8,%edx 0.00 : 52a3f1: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a3f6: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a3fb: e8 c0 06 25 00 callq 77aac0 0.00 : 52a400: 84 c0 test %al,%al 0.00 : 52a402: 0f 84 9f 7b fe ff je 511fa7 0.00 : 52a408: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52a40f: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a416: 8b 38 mov (%rax),%edi 0.00 : 52a418: e8 83 38 fe ff callq 50dca0 0.00 : 52a41d: 48 8b 95 88 f4 ff ff mov -0xb78(%rbp),%rdx 0.00 : 52a424: bf 9f 94 7c 00 mov $0x7c949f,%edi 0.00 : 52a429: 41 89 c4 mov %eax,%r12d 0.00 : 52a42c: 31 c0 xor %eax,%eax 0.00 : 52a42e: 48 8b 32 mov (%rdx),%rsi 0.00 : 52a431: e8 6a 24 25 00 callq 77c8a0 0.00 : 52a436: bf 84 60 00 01 mov $0x1006084,%edi 0.00 : 52a43b: 89 c3 mov %eax,%ebx 0.00 : 52a43d: e9 1e a4 ff ff jmpq 524860 : errmsg("frame starting from current row cannot have preceding rows"), : parser_errposition(@4))); : if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && : (frameOptions & (FRAMEOPTION_END_VALUE_PRECEDING | : FRAMEOPTION_END_CURRENT_ROW))) : ereport(ERROR, 0.00 : 52a442: 45 31 c0 xor %r8d,%r8d 0.00 : 52a445: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a44a: ba e9 2f 00 00 mov $0x2fe9,%edx 0.00 : 52a44f: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a454: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a459: e8 62 06 25 00 callq 77aac0 0.00 : 52a45e: 84 c0 test %al,%al 0.00 : 52a460: 0f 84 41 7b fe ff je 511fa7 0.00 : 52a466: 48 8b 85 98 f4 ff ff mov -0xb68(%rbp),%rax 0.00 : 52a46d: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a474: 8b 38 mov (%rax),%edi 0.00 : 52a476: e8 25 38 fe ff callq 50dca0 0.00 : 52a47b: bf 10 a6 7c 00 mov $0x7ca610,%edi 0.00 : 52a480: 41 89 c4 mov %eax,%r12d 0.00 : 52a483: 31 c0 xor %eax,%eax 0.00 : 52a485: e8 16 24 25 00 callq 77c8a0 0.00 : 52a48a: bf 84 00 0a 00 mov $0xa0084,%edi 0.00 : 52a48f: 89 c3 mov %eax,%ebx 0.00 : 52a491: e9 ca a3 ff ff jmpq 524860 : n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, $11); : n->replace = false; : n->options = $9; : n->withCheckOption = $12; : if (n->withCheckOption != NO_CHECK_OPTION) : ereport(ERROR, 0.00 : 52a496: 45 31 c0 xor %r8d,%r8d 0.00 : 52a499: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a49e: ba 12 21 00 00 mov $0x2112,%edx 0.00 : 52a4a3: e9 7e fb ff ff jmpq 52a026 : /* shift converts START_ options to END_ options */ : frameOptions |= n2->frameOptions << 1; : frameOptions |= FRAMEOPTION_BETWEEN; : /* reject invalid cases */ : if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) : ereport(ERROR, 0.00 : 52a4a8: 45 31 c0 xor %r8d,%r8d 0.00 : 52a4ab: b9 9a 74 82 00 mov $0x82749a,%ecx 0.00 : 52a4b0: ba d7 2f 00 00 mov $0x2fd7,%edx 0.00 : 52a4b5: be c8 63 8a 00 mov $0x8a63c8,%esi 0.00 : 52a4ba: bf 14 00 00 00 mov $0x14,%edi 0.00 : 52a4bf: e8 fc 05 25 00 callq 77aac0 0.00 : 52a4c4: 84 c0 test %al,%al 0.00 : 52a4c6: 0f 84 db 7a fe ff je 511fa7 0.00 : 52a4cc: 48 8b 95 98 f4 ff ff mov -0xb68(%rbp),%rdx 0.00 : 52a4d3: 48 8b b5 70 f4 ff ff mov -0xb90(%rbp),%rsi 0.00 : 52a4da: 8b 7a f8 mov -0x8(%rdx),%edi 0.00 : 52a4dd: e9 a7 fe ff ff jmpq 52a389 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2468 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005588f0 : : CopyFromInsertBatch(CopyState cstate, EState *estate, CommandId mycid, : int hi_options, ResultRelInfo *resultRelInfo, : TupleTableSlot *myslot, BulkInsertState bistate, : int nBufferedTuples, HeapTuple *bufferedTuples, : int firstBufferedLineNo) : { 0.00 : 5588f0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/commands/copy.c:2468 100.00 : 5588f1: 41 89 d2 mov %edx,%r10d 0.00 : 5588f4: 48 89 e5 mov %rsp,%rbp 0.00 : 5588f7: 41 57 push %r15 0.00 : 5588f9: 49 89 ff mov %rdi,%r15 0.00 : 5588fc: 41 56 push %r14 0.00 : 5588fe: 41 55 push %r13 0.00 : 558900: 49 89 f5 mov %rsi,%r13 0.00 : 558903: 41 54 push %r12 0.00 : 558905: 41 89 cc mov %ecx,%r12d 0.00 : 558908: 53 push %rbx 0.00 : 558909: 48 83 ec 28 sub $0x28,%rsp 0.00 : 55890d: 4c 89 45 c8 mov %r8,-0x38(%rbp) 0.00 : 558911: 4c 89 4d c0 mov %r9,-0x40(%rbp) : /* : * Print error context information correctly, if one of the operations : * below fail. : */ : cstate->line_buf_valid = false; : save_cur_lineno = cstate->cur_lineno; 0.00 : 558915: 8b 87 d8 00 00 00 mov 0xd8(%rdi),%eax : CopyFromInsertBatch(CopyState cstate, EState *estate, CommandId mycid, : int hi_options, ResultRelInfo *resultRelInfo, : TupleTableSlot *myslot, BulkInsertState bistate, : int nBufferedTuples, HeapTuple *bufferedTuples, : int firstBufferedLineNo) : { 0.00 : 55891b: 4c 8b 75 20 mov 0x20(%rbp),%r14 : : /* : * Print error context information correctly, if one of the operations : * below fail. : */ : cstate->line_buf_valid = false; 0.00 : 55891f: c6 87 b1 01 00 00 00 movb $0x0,0x1b1(%rdi) : save_cur_lineno = cstate->cur_lineno; 0.00 : 558926: 89 45 d4 mov %eax,-0x2c(%rbp) : : /* : * heap_multi_insert leaks memory, so switch to short-lived memory context : * before calling it. : */ : oldcontext = MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); 0.00 : 558929: 48 8b 86 c8 00 00 00 mov 0xc8(%rsi),%rax 0.00 : 558930: 48 85 c0 test %rax,%rax 0.00 : 558933: 0f 84 1f 01 00 00 je 558a58 : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 558939: 48 8b 40 28 mov 0x28(%rax),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 55893d: 48 8b 1d 1c 1f 66 00 mov 0x661f1c(%rip),%rbx # bba860 : heap_multi_insert(cstate->rel, 0.00 : 558944: 45 89 e0 mov %r12d,%r8d 0.00 : 558947: 8b 55 18 mov 0x18(%rbp),%edx 0.00 : 55894a: 4c 8b 4d 10 mov 0x10(%rbp),%r9 0.00 : 55894e: 44 89 d1 mov %r10d,%ecx 0.00 : 558951: 4c 89 f6 mov %r14,%rsi : : CurrentMemoryContext = context; 0.00 : 558954: 48 89 05 05 1f 66 00 mov %rax,0x661f05(%rip) # bba860 0.00 : 55895b: 49 8b 7f 28 mov 0x28(%r15),%rdi 0.00 : 55895f: e8 6c 23 f4 ff callq 49acd0 : : /* : * If there are any indexes, update them for all the inserted tuples, and : * run AFTER ROW INSERT triggers. : */ : if (resultRelInfo->ri_NumIndices > 0) 0.00 : 558964: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 558968: 48 89 1d f1 1e 66 00 mov %rbx,0x661ef1(%rip) # bba860 0.00 : 55896f: 8b 42 10 mov 0x10(%rdx),%eax 0.00 : 558972: 85 c0 test %eax,%eax 0.00 : 558974: 0f 8e 8e 00 00 00 jle 558a08 : { : for (i = 0; i < nBufferedTuples; i++) 0.00 : 55897a: 44 8b 65 18 mov 0x18(%rbp),%r12d 0.00 : 55897e: 45 85 e4 test %r12d,%r12d 0.00 : 558981: 7e 67 jle 5589ea 0.00 : 558983: 45 31 e4 xor %r12d,%r12d 0.00 : 558986: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 55898d: 00 00 00 : { : List *recheckIndexes; : : cstate->cur_lineno = firstBufferedLineNo + i; 0.00 : 558990: 8b 45 28 mov 0x28(%rbp),%eax : ExecStoreTuple(bufferedTuples[i], myslot, InvalidBuffer, false); 0.00 : 558993: 48 8b 75 c0 mov -0x40(%rbp),%rsi 0.00 : 558997: 31 c9 xor %ecx,%ecx 0.00 : 558999: 31 d2 xor %edx,%edx : { : for (i = 0; i < nBufferedTuples; i++) : { : List *recheckIndexes; : : cstate->cur_lineno = firstBufferedLineNo + i; 0.00 : 55899b: 44 01 e0 add %r12d,%eax 0.00 : 55899e: 41 89 87 d8 00 00 00 mov %eax,0xd8(%r15) : ExecStoreTuple(bufferedTuples[i], myslot, InvalidBuffer, false); 0.00 : 5589a5: 4b 8b 3c e6 mov (%r14,%r12,8),%rdi 0.00 : 5589a9: e8 d2 ba 05 00 callq 5b4480 : recheckIndexes = 0.00 : 5589ae: 4b 8b 34 e6 mov (%r14,%r12,8),%rsi 0.00 : 5589b2: 48 8b 7d c0 mov -0x40(%rbp),%rdi 0.00 : 5589b6: 4c 89 ea mov %r13,%rdx 0.00 : 5589b9: 48 83 c6 04 add $0x4,%rsi 0.00 : 5589bd: e8 2e d1 05 00 callq 5b5af0 : ExecInsertIndexTuples(myslot, &(bufferedTuples[i]->t_self), : estate); : ExecARInsertTriggers(estate, resultRelInfo, 0.00 : 5589c2: 4b 8b 14 e6 mov (%r14,%r12,8),%rdx 0.00 : 5589c6: 48 8b 75 c8 mov -0x38(%rbp),%rsi : { : List *recheckIndexes; : : cstate->cur_lineno = firstBufferedLineNo + i; : ExecStoreTuple(bufferedTuples[i], myslot, InvalidBuffer, false); : recheckIndexes = 0.00 : 5589ca: 48 89 c3 mov %rax,%rbx : ExecInsertIndexTuples(myslot, &(bufferedTuples[i]->t_self), : estate); : ExecARInsertTriggers(estate, resultRelInfo, 0.00 : 5589cd: 48 89 c1 mov %rax,%rcx 0.00 : 5589d0: 4c 89 ef mov %r13,%rdi : bufferedTuples[i], : recheckIndexes); : list_free(recheckIndexes); 0.00 : 5589d3: 49 83 c4 01 add $0x1,%r12 : cstate->cur_lineno = firstBufferedLineNo + i; : ExecStoreTuple(bufferedTuples[i], myslot, InvalidBuffer, false); : recheckIndexes = : ExecInsertIndexTuples(myslot, &(bufferedTuples[i]->t_self), : estate); : ExecARInsertTriggers(estate, resultRelInfo, 0.00 : 5589d7: e8 b4 a2 03 00 callq 592c90 : bufferedTuples[i], : recheckIndexes); : list_free(recheckIndexes); 0.00 : 5589dc: 48 89 df mov %rbx,%rdi 0.00 : 5589df: e8 6c 97 08 00 callq 5e2150 : * If there are any indexes, update them for all the inserted tuples, and : * run AFTER ROW INSERT triggers. : */ : if (resultRelInfo->ri_NumIndices > 0) : { : for (i = 0; i < nBufferedTuples; i++) 0.00 : 5589e4: 44 39 65 18 cmp %r12d,0x18(%rbp) 0.00 : 5589e8: 7f a6 jg 558990 : NIL); : } : } : : /* reset cur_lineno to where we were */ : cstate->cur_lineno = save_cur_lineno; 0.00 : 5589ea: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 5589ed: 41 89 87 d8 00 00 00 mov %eax,0xd8(%r15) : } 0.00 : 5589f4: 48 83 c4 28 add $0x28,%rsp 0.00 : 5589f8: 5b pop %rbx 0.00 : 5589f9: 41 5c pop %r12 0.00 : 5589fb: 41 5d pop %r13 0.00 : 5589fd: 41 5e pop %r14 0.00 : 5589ff: 41 5f pop %r15 0.00 : 558a01: c9 leaveq 0.00 : 558a02: c3 retq 0.00 : 558a03: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* : * There's no indexes, but see if we need to run AFTER ROW INSERT triggers : * anyway. : */ : else if (resultRelInfo->ri_TrigDesc != NULL && 0.00 : 558a08: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 558a0c: 48 8b 42 28 mov 0x28(%rdx),%rax 0.00 : 558a10: 48 85 c0 test %rax,%rax 0.00 : 558a13: 74 d5 je 5589ea 0.00 : 558a15: 80 78 0d 00 cmpb $0x0,0xd(%rax) 0.00 : 558a19: 74 cf je 5589ea : resultRelInfo->ri_TrigDesc->trig_insert_after_row) : { : for (i = 0; i < nBufferedTuples; i++) 0.00 : 558a1b: 8b 5d 18 mov 0x18(%rbp),%ebx 0.00 : 558a1e: 85 db test %ebx,%ebx 0.00 : 558a20: 7e c8 jle 5589ea 0.00 : 558a22: 31 db xor %ebx,%ebx 0.00 : 558a24: 0f 1f 40 00 nopl 0x0(%rax) : { : cstate->cur_lineno = firstBufferedLineNo + i; 0.00 : 558a28: 8b 45 28 mov 0x28(%rbp),%eax : ExecARInsertTriggers(estate, resultRelInfo, 0.00 : 558a2b: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 558a2f: 31 c9 xor %ecx,%ecx 0.00 : 558a31: 4c 89 ef mov %r13,%rdi : else if (resultRelInfo->ri_TrigDesc != NULL && : resultRelInfo->ri_TrigDesc->trig_insert_after_row) : { : for (i = 0; i < nBufferedTuples; i++) : { : cstate->cur_lineno = firstBufferedLineNo + i; 0.00 : 558a34: 01 d8 add %ebx,%eax 0.00 : 558a36: 41 89 87 d8 00 00 00 mov %eax,0xd8(%r15) : ExecARInsertTriggers(estate, resultRelInfo, 0.00 : 558a3d: 49 8b 14 de mov (%r14,%rbx,8),%rdx 0.00 : 558a41: 48 83 c3 01 add $0x1,%rbx 0.00 : 558a45: e8 46 a2 03 00 callq 592c90 : * anyway. : */ : else if (resultRelInfo->ri_TrigDesc != NULL && : resultRelInfo->ri_TrigDesc->trig_insert_after_row) : { : for (i = 0; i < nBufferedTuples; i++) 0.00 : 558a4a: 39 5d 18 cmp %ebx,0x18(%rbp) 0.00 : 558a4d: 7f d9 jg 558a28 0.00 : 558a4f: eb 99 jmp 5589ea 0.00 : 558a51: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * heap_multi_insert leaks memory, so switch to short-lived memory context : * before calling it. : */ : oldcontext = MemoryContextSwitchTo(GetPerTupleMemoryContext(estate)); 0.00 : 558a58: 48 89 f7 mov %rsi,%rdi 0.00 : 558a5b: 89 55 b8 mov %edx,-0x48(%rbp) 0.00 : 558a5e: 66 90 xchg %ax,%ax 0.00 : 558a60: e8 4b cb 05 00 callq 5b55b0 0.00 : 558a65: 44 8b 55 b8 mov -0x48(%rbp),%r10d 0.00 : 558a69: e9 cb fe ff ff jmpq 558939 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execQual.c:1469 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005ad430 : : */ : static ExprDoneCond : ExecEvalFuncArgs(FunctionCallInfo fcinfo, : List *argList, : ExprContext *econtext) : { 0.00 : 5ad430: 55 push %rbp 0.00 : 5ad431: 48 89 e5 mov %rsp,%rbp 0.00 : 5ad434: 41 57 push %r15 0.00 : 5ad436: 49 89 d7 mov %rdx,%r15 0.00 : 5ad439: 41 56 push %r14 0.00 : 5ad43b: 49 89 fe mov %rdi,%r14 0.00 : 5ad43e: 41 55 push %r13 0.00 : 5ad440: 41 54 push %r12 0.00 : 5ad442: 53 push %rbx 0.00 : 5ad443: 48 83 ec 18 sub $0x18,%rsp : #endif /* PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(PG_LIST_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE ListCell * : list_head(const List *l) : { : return l ? l->head : NULL; 0.00 : 5ad447: 48 85 f6 test %rsi,%rsi 0.00 : 5ad44a: 0f 84 82 00 00 00 je 5ad4d2 0.00 : 5ad450: 4c 8b 66 08 mov 0x8(%rsi),%r12 : ListCell *arg; : : argIsDone = ExprSingleResult; /* default assumption */ : : i = 0; : foreach(arg, argList) 0.00 : 5ad454: 4d 85 e4 test %r12,%r12 0.00 : 5ad457: 74 79 je 5ad4d2 0.00 : 5ad459: 45 31 ed xor %r13d,%r13d 0.00 : 5ad45c: 31 db xor %ebx,%ebx 0.00 : 5ad45e: 66 90 xchg %ax,%ax : { : ExprState *argstate = (ExprState *) lfirst(arg); 0.00 : 5ad460: 49 8b 04 24 mov (%r12),%rax : ExprDoneCond thisArgIsDone; : : fcinfo->arg[i] = ExecEvalExpr(argstate, 0.00 : 5ad464: 49 8d 94 1e 40 03 00 lea 0x340(%r14,%rbx,1),%rdx 0.00 : 5ad46b: 00 0.00 : 5ad46c: 48 8d 4d d4 lea -0x2c(%rbp),%rcx 0.00 : 5ad470: 4c 89 fe mov %r15,%rsi 100.00 : 5ad473: 48 89 c7 mov %rax,%rdi 0.00 : 5ad476: ff 50 10 callq *0x10(%rax) 0.00 : 5ad479: 49 89 44 de 20 mov %rax,0x20(%r14,%rbx,8) : econtext, : &fcinfo->argnull[i], : &thisArgIsDone); : : if (thisArgIsDone != ExprSingleResult) 0.00 : 5ad47e: 8b 45 d4 mov -0x2c(%rbp),%eax 0.00 : 5ad481: 85 c0 test %eax,%eax 0.00 : 5ad483: 74 08 je 5ad48d : /* : * We allow only one argument to have a set value; we'd need much : * more complexity to keep track of multiple set arguments (cf. : * ExecTargetList) and it doesn't seem worth it. : */ : if (argIsDone != ExprSingleResult) 0.00 : 5ad485: 45 85 ed test %r13d,%r13d 0.00 : 5ad488: 75 23 jne 5ad4ad : ereport(ERROR, 0.00 : 5ad48a: 41 89 c5 mov %eax,%r13d : ListCell *arg; : : argIsDone = ExprSingleResult; /* default assumption */ : : i = 0; : foreach(arg, argList) 0.00 : 5ad48d: 4d 8b 64 24 08 mov 0x8(%r12),%r12 0.00 : 5ad492: 48 83 c3 01 add $0x1,%rbx 0.00 : 5ad496: 4d 85 e4 test %r12,%r12 0.00 : 5ad499: 75 c5 jne 5ad460 : } : : Assert(i == fcinfo->nargs); : : return argIsDone; : } 0.00 : 5ad49b: 48 83 c4 18 add $0x18,%rsp 0.00 : 5ad49f: 44 89 e8 mov %r13d,%eax 0.00 : 5ad4a2: 5b pop %rbx 0.00 : 5ad4a3: 41 5c pop %r12 0.00 : 5ad4a5: 41 5d pop %r13 0.00 : 5ad4a7: 41 5e pop %r14 0.00 : 5ad4a9: 41 5f pop %r15 0.00 : 5ad4ab: c9 leaveq 0.00 : 5ad4ac: c3 retq : * We allow only one argument to have a set value; we'd need much : * more complexity to keep track of multiple set arguments (cf. : * ExecTargetList) and it doesn't seem worth it. : */ : if (argIsDone != ExprSingleResult) : ereport(ERROR, 0.00 : 5ad4ad: 45 31 c0 xor %r8d,%r8d 0.00 : 5ad4b0: b9 10 af 88 00 mov $0x88af10,%ecx 0.00 : 5ad4b5: ba cc 05 00 00 mov $0x5cc,%edx 0.00 : 5ad4ba: be fc a3 88 00 mov $0x88a3fc,%esi 0.00 : 5ad4bf: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5ad4c4: e8 f7 d5 1c 00 callq 77aac0 0.00 : 5ad4c9: 84 c0 test %al,%al 0.00 : 5ad4cb: 75 0a jne 5ad4d7 0.00 : 5ad4cd: e8 fe bf eb ff callq 4694d0 : ListCell *arg; : : argIsDone = ExprSingleResult; /* default assumption */ : : i = 0; : foreach(arg, argList) 0.00 : 5ad4d2: 45 31 ed xor %r13d,%r13d 0.00 : 5ad4d5: eb c4 jmp 5ad49b : * We allow only one argument to have a set value; we'd need much : * more complexity to keep track of multiple set arguments (cf. : * ExecTargetList) and it doesn't seem worth it. : */ : if (argIsDone != ExprSingleResult) : ereport(ERROR, 0.00 : 5ad4d7: bf 10 a5 88 00 mov $0x88a510,%edi 0.00 : 5ad4dc: 31 c0 xor %eax,%eax 0.00 : 5ad4de: e8 bd f3 1c 00 callq 77c8a0 0.00 : 5ad4e3: bf 40 04 00 00 mov $0x440,%edi 0.00 : 5ad4e8: 89 c3 mov %eax,%ebx 0.00 : 5ad4ea: e8 61 f8 1c 00 callq 77cd50 0.00 : 5ad4ef: 89 de mov %ebx,%esi 0.00 : 5ad4f1: 89 c7 mov %eax,%edi 0.00 : 5ad4f3: 31 c0 xor %eax,%eax 0.00 : 5ad4f5: e8 e6 d0 1c 00 callq 77a5e0 0.00 : 5ad4fa: eb d1 jmp 5ad4cd Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/execUtils.c:1506 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005b4a00 : : * If isCommit is false, just clean the callback list but don't call 'em. : * (See comment for FreeExprContext.) : */ : static void : ShutdownExprContext(ExprContext *econtext, bool isCommit) : { 0.00 : 5b4a00: 55 push %rbp 0.00 : 5b4a01: 48 89 e5 mov %rsp,%rbp 0.00 : 5b4a04: 41 56 push %r14 0.00 : 5b4a06: 41 55 push %r13 0.00 : 5b4a08: 41 89 f5 mov %esi,%r13d 0.00 : 5b4a0b: 41 54 push %r12 0.00 : 5b4a0d: 49 89 fc mov %rdi,%r12 0.00 : 5b4a10: 53 push %rbx : ExprContext_CB *ecxt_callback; : MemoryContext oldcontext; : : /* Fast path in normal case where there's nothing to do. */ : if (econtext->ecxt_callbacks == NULL) 0.00 : 5b4a11: 48 83 7f 78 00 cmpq $0x0,0x78(%rdi) 0.00 : 5b4a16: 74 57 je 5b4a6f : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 5b4a18: 48 8b 47 28 mov 0x28(%rdi),%rax : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 5b4a1c: 4c 8b 35 3d 5e 60 00 mov 0x605e3d(%rip),%r14 # bba860 : : CurrentMemoryContext = context; 0.00 : 5b4a23: 48 89 05 36 5e 60 00 mov %rax,0x605e36(%rip) # bba860 : oldcontext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : /* : * Call each callback function in reverse registration order. : */ : while ((ecxt_callback = econtext->ecxt_callbacks) != NULL) 0.00 : 5b4a2a: 48 8b 5f 78 mov 0x78(%rdi),%rbx 0.00 : 5b4a2e: 48 85 db test %rbx,%rbx 0.00 : 5b4a31: 75 17 jne 5b4a4a 0.00 : 5b4a33: eb 33 jmp 5b4a68 0.00 : 5b4a35: 0f 1f 00 nopl (%rax) : { : econtext->ecxt_callbacks = ecxt_callback->next; : if (isCommit) : (*ecxt_callback->function) (ecxt_callback->arg); : pfree(ecxt_callback); 0.00 : 5b4a38: 48 89 df mov %rbx,%rdi 0.00 : 5b4a3b: e8 40 41 1e 00 callq 798b80 : oldcontext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); : : /* : * Call each callback function in reverse registration order. : */ : while ((ecxt_callback = econtext->ecxt_callbacks) != NULL) 0.00 : 5b4a40: 49 8b 5c 24 78 mov 0x78(%r12),%rbx 0.00 : 5b4a45: 48 85 db test %rbx,%rbx 0.00 : 5b4a48: 74 1e je 5b4a68 : { : econtext->ecxt_callbacks = ecxt_callback->next; 0.00 : 5b4a4a: 48 8b 03 mov (%rbx),%rax : if (isCommit) 0.00 : 5b4a4d: 45 84 ed test %r13b,%r13b : /* : * Call each callback function in reverse registration order. : */ : while ((ecxt_callback = econtext->ecxt_callbacks) != NULL) : { : econtext->ecxt_callbacks = ecxt_callback->next; 0.00 : 5b4a50: 49 89 44 24 78 mov %rax,0x78(%r12) : if (isCommit) 0.00 : 5b4a55: 74 e1 je 5b4a38 : (*ecxt_callback->function) (ecxt_callback->arg); 0.00 : 5b4a57: 48 8b 7b 10 mov 0x10(%rbx),%rdi 0.00 : 5b4a5b: ff 53 08 callq *0x8(%rbx) 0.00 : 5b4a5e: 66 90 xchg %ax,%ax 0.00 : 5b4a60: eb d6 jmp 5b4a38 0.00 : 5b4a62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5b4a68: 4c 89 35 f1 5d 60 00 mov %r14,0x605df1(%rip) # bba860 : pfree(ecxt_callback); : } : : MemoryContextSwitchTo(oldcontext); : } 0.00 : 5b4a6f: 5b pop %rbx 0.00 : 5b4a70: 41 5c pop %r12 0.00 : 5b4a72: 41 5d pop %r13 0.00 : 5b4a74: 41 5e pop %r14 100.00 : 5b4a76: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005bf570 : : * using the index specified in the IndexScanState information. : * ---------------------------------------------------------------- : */ : static TupleTableSlot * : IndexNext(IndexScanState *node) : { 0.00 : 5bf570: 55 push %rbp 0.00 : 5bf571: 48 89 e5 mov %rsp,%rbp 0.00 : 5bf574: 41 57 push %r15 0.00 : 5bf576: 41 56 push %r14 0.00 : 5bf578: 41 55 push %r13 0.00 : 5bf57a: 49 89 fd mov %rdi,%r13 0.00 : 5bf57d: 41 54 push %r12 0.00 : 5bf57f: 53 push %rbx /home/Computational/mark/src/postgres-andres/src/backend/executor/nodeIndexscan.c:50 100.00 : 5bf580: 48 83 ec 08 sub $0x8,%rsp : : /* : * extract necessary information from index scan node : */ : estate = node->ss.ps.state; : direction = estate->es_direction; 0.00 : 5bf584: 48 8b 47 10 mov 0x10(%rdi),%rax 0.00 : 5bf588: 44 8b 78 04 mov 0x4(%rax),%r15d : /* flip direction if this is an overall backward scan */ : if (ScanDirectionIsBackward(((IndexScan *) node->ss.ps.plan)->indexorderdir)) 0.00 : 5bf58c: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 5bf590: 83 b8 90 00 00 00 ff cmpl $0xffffffff,0x90(%rax) 0.00 : 5bf597: 0f 84 b3 00 00 00 je 5bf650 : if (ScanDirectionIsForward(direction)) : direction = BackwardScanDirection; : else if (ScanDirectionIsBackward(direction)) : direction = ForwardScanDirection; : } : scandesc = node->iss_ScanDesc; 0.00 : 5bf59d: 49 8b 9d d8 00 00 00 mov 0xd8(%r13),%rbx : econtext = node->ss.ps.ps_ExprContext; 0.00 : 5bf5a4: 4d 8b 65 60 mov 0x60(%r13),%r12 : slot = node->ss.ss_ScanTupleSlot; 0.00 : 5bf5a8: 4d 8b b5 88 00 00 00 mov 0x88(%r13),%r14 0.00 : 5bf5af: 90 nop : : /* : * ok, now that we have what we need, fetch the next tuple. : */ : while ((tuple = index_getnext(scandesc, direction)) != NULL) 0.00 : 5bf5b0: 44 89 fe mov %r15d,%esi 0.00 : 5bf5b3: 48 89 df mov %rbx,%rdi 0.00 : 5bf5b6: e8 55 61 ee ff callq 4a5710 0.00 : 5bf5bb: 48 85 c0 test %rax,%rax 0.00 : 5bf5be: 74 78 je 5bf638 : /* : * Store the scanned tuple in the scan tuple slot of the scan state. : * Note: we pass 'false' because tuples returned by amgetnext are : * pointers onto disk pages and must not be pfree()'d. : */ : ExecStoreTuple(tuple, /* tuple to store */ 0.00 : 5bf5c0: 8b 53 68 mov 0x68(%rbx),%edx 0.00 : 5bf5c3: 31 c9 xor %ecx,%ecx 0.00 : 5bf5c5: 4c 89 f6 mov %r14,%rsi 0.00 : 5bf5c8: 48 89 c7 mov %rax,%rdi 0.00 : 5bf5cb: e8 b0 4e ff ff callq 5b4480 : : /* : * If the index was lossy, we have to recheck the index quals using : * the fetched tuple. : */ : if (scandesc->xs_recheck) 0.00 : 5bf5d0: 80 7b 6c 00 cmpb $0x0,0x6c(%rbx) 0.00 : 5bf5d4: 74 4a je 5bf620 : { : econtext->ecxt_scantuple = slot; : ResetExprContext(econtext); 0.00 : 5bf5d6: 49 8b 7c 24 28 mov 0x28(%r12),%rdi : * If the index was lossy, we have to recheck the index quals using : * the fetched tuple. : */ : if (scandesc->xs_recheck) : { : econtext->ecxt_scantuple = slot; 0.00 : 5bf5db: 4d 89 74 24 08 mov %r14,0x8(%r12) : ResetExprContext(econtext); 0.00 : 5bf5e0: e8 cb 93 1d 00 callq 7989b0 : if (!ExecQual(node->indexqualorig, econtext, false)) 0.00 : 5bf5e5: 49 8b bd 90 00 00 00 mov 0x90(%r13),%rdi 0.00 : 5bf5ec: 31 d2 xor %edx,%edx 0.00 : 5bf5ee: 4c 89 e6 mov %r12,%rsi 0.00 : 5bf5f1: e8 1a d9 fe ff callq 5acf10 0.00 : 5bf5f6: 84 c0 test %al,%al 0.00 : 5bf5f8: 75 26 jne 5bf620 : { : /* Fails recheck, so drop it and loop back for another */ : InstrCountFiltered2(node, 1); 0.00 : 5bf5fa: 49 8b 45 18 mov 0x18(%r13),%rax 0.00 : 5bf5fe: 48 85 c0 test %rax,%rax 0.00 : 5bf601: 74 ad je 5bf5b0 0.00 : 5bf603: f2 0f 10 05 4d fb 1e movsd 0x1efb4d(%rip),%xmm0 # 7af158 <__func__.15777+0x10> 0.00 : 5bf60a: 00 0.00 : 5bf60b: f2 0f 58 80 d0 00 00 addsd 0xd0(%rax),%xmm0 0.00 : 5bf612: 00 0.00 : 5bf613: f2 0f 11 80 d0 00 00 movsd %xmm0,0xd0(%rax) 0.00 : 5bf61a: 00 0.00 : 5bf61b: eb 93 jmp 5bf5b0 0.00 : 5bf61d: 0f 1f 00 nopl (%rax) : /* : * if we get here it means the index scan failed so we are at the end of : * the scan.. : */ : return ExecClearTuple(slot); : } 0.00 : 5bf620: 48 83 c4 08 add $0x8,%rsp 0.00 : 5bf624: 4c 89 f0 mov %r14,%rax 0.00 : 5bf627: 5b pop %rbx 0.00 : 5bf628: 41 5c pop %r12 0.00 : 5bf62a: 41 5d pop %r13 0.00 : 5bf62c: 41 5e pop %r14 0.00 : 5bf62e: 41 5f pop %r15 0.00 : 5bf630: c9 leaveq 0.00 : 5bf631: c3 retq 0.00 : 5bf632: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5bf638: 48 83 c4 08 add $0x8,%rsp : : /* : * if we get here it means the index scan failed so we are at the end of : * the scan.. : */ : return ExecClearTuple(slot); 0.00 : 5bf63c: 4c 89 f7 mov %r14,%rdi : } 0.00 : 5bf63f: 5b pop %rbx 0.00 : 5bf640: 41 5c pop %r12 0.00 : 5bf642: 41 5d pop %r13 0.00 : 5bf644: 41 5e pop %r14 0.00 : 5bf646: 41 5f pop %r15 0.00 : 5bf648: c9 leaveq : : /* : * if we get here it means the index scan failed so we are at the end of : * the scan.. : */ : return ExecClearTuple(slot); 0.00 : 5bf649: e9 c2 4a ff ff jmpq 5b4110 0.00 : 5bf64e: 66 90 xchg %ax,%ax : estate = node->ss.ps.state; : direction = estate->es_direction; : /* flip direction if this is an overall backward scan */ : if (ScanDirectionIsBackward(((IndexScan *) node->ss.ps.plan)->indexorderdir)) : { : if (ScanDirectionIsForward(direction)) 0.00 : 5bf650: 41 83 ff 01 cmp $0x1,%r15d 0.00 : 5bf654: 74 12 je 5bf668 : direction = BackwardScanDirection; : else if (ScanDirectionIsBackward(direction)) 0.00 : 5bf656: 41 83 ff ff cmp $0xffffffff,%r15d 0.00 : 5bf65a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 5bf65f: 44 0f 44 f8 cmove %eax,%r15d 0.00 : 5bf663: e9 35 ff ff ff jmpq 5bf59d : estate = node->ss.ps.state; : direction = estate->es_direction; : /* flip direction if this is an overall backward scan */ : if (ScanDirectionIsBackward(((IndexScan *) node->ss.ps.plan)->indexorderdir)) : { : if (ScanDirectionIsForward(direction)) 0.00 : 5bf668: 41 bf ff ff ff ff mov $0xffffffff,%r15d 0.00 : 5bf66e: e9 2a ff ff ff jmpq 5bf59d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/list.c:402 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e1460 : : * Return the data value contained in the n'th element of the : * specified list. (List elements begin at 0.) : */ : void * : list_nth(const List *list, int n) : { 0.00 : 5e1460: 55 push %rbp : Assert(n >= 0); : Assert(n < list->length); : check_list_invariants(list); : : /* Does the caller actually mean to fetch the tail? */ : if (n == list->length - 1) 0.00 : 5e1461: 8b 47 04 mov 0x4(%rdi),%eax : * Return the data value contained in the n'th element of the : * specified list. (List elements begin at 0.) : */ : void * : list_nth(const List *list, int n) : { 0.00 : 5e1464: 48 89 e5 mov %rsp,%rbp : Assert(n >= 0); : Assert(n < list->length); : check_list_invariants(list); : : /* Does the caller actually mean to fetch the tail? */ : if (n == list->length - 1) 0.00 : 5e1467: 83 e8 01 sub $0x1,%eax 0.00 : 5e146a: 39 c6 cmp %eax,%esi 0.00 : 5e146c: 74 22 je 5e1490 : return list->tail; : : for (match = list->head; n-- > 0; match = match->next) 0.00 : 5e146e: 85 f6 test %esi,%esi 0.00 : 5e1470: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 5e1474: 7e 15 jle 5e148b 0.00 : 5e1476: 31 d2 xor %edx,%edx 0.00 : 5e1478: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5e147f: 00 0.00 : 5e1480: 83 c2 01 add $0x1,%edx 0.00 : 5e1483: 48 8b 40 08 mov 0x8(%rax),%rax 100.00 : 5e1487: 39 f2 cmp %esi,%edx 0.00 : 5e1489: 75 f5 jne 5e1480 0.00 : 5e148b: 48 8b 00 mov (%rax),%rax : void * : list_nth(const List *list, int n) : { : Assert(IsPointerList(list)); : return lfirst(list_nth_cell(list, n)); : } 0.00 : 5e148e: c9 leaveq 0.00 : 5e148f: c3 retq : Assert(n < list->length); : check_list_invariants(list); : : /* Does the caller actually mean to fetch the tail? */ : if (n == list->length - 1) : return list->tail; 0.00 : 5e1490: 48 8b 47 10 mov 0x10(%rdi),%rax : : for (match = list->head; n-- > 0; match = match->next) 0.00 : 5e1494: 48 8b 00 mov (%rax),%rax : void * : list_nth(const List *list, int n) : { : Assert(IsPointerList(list)); : return lfirst(list_nth_cell(list, n)); : } 0.00 : 5e1497: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:230 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005e32c0 : : /* : * bms_union - set union : */ : Bitmapset * : bms_union(const Bitmapset *a, const Bitmapset *b) : { 0.00 : 5e32c0: 55 push %rbp : const Bitmapset *other; : int otherlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL) 0.00 : 5e32c1: 48 85 ff test %rdi,%rdi : /* : * bms_union - set union : */ : Bitmapset * : bms_union(const Bitmapset *a, const Bitmapset *b) : { 0.00 : 5e32c4: 48 89 e5 mov %rsp,%rbp 0.00 : 5e32c7: 41 54 push %r12 0.00 : 5e32c9: 49 89 fc mov %rdi,%r12 0.00 : 5e32cc: 53 push %rbx 0.00 : 5e32cd: 48 89 f3 mov %rsi,%rbx : const Bitmapset *other; : int otherlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL) 0.00 : 5e32d0: 74 4e je 5e3320 : return bms_copy(b); : if (b == NULL) 0.00 : 5e32d2: 48 85 f6 test %rsi,%rsi 0.00 : 5e32d5: 74 55 je 5e332c : return bms_copy(a); : /* Identify shorter and longer input; copy the longer one */ : if (a->nwords <= b->nwords) 0.00 : 5e32d7: 8b 07 mov (%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/nodes/bitmapset.c:230 100.00 : 5e32d9: 3b 06 cmp (%rsi),%eax 0.00 : 5e32db: 7e 33 jle 5e3310 0.00 : 5e32dd: 0f 1f 00 nopl (%rax) : result = bms_copy(b); : other = a; : } : else : { : result = bms_copy(a); 0.00 : 5e32e0: e8 1b fe ff ff callq 5e3100 0.00 : 5e32e5: 48 89 df mov %rbx,%rdi 0.00 : 5e32e8: 48 89 c1 mov %rax,%rcx : other = b; : } : /* And union the shorter input into the result */ : otherlen = other->nwords; 0.00 : 5e32eb: 8b 37 mov (%rdi),%esi : for (i = 0; i < otherlen; i++) 0.00 : 5e32ed: 85 f6 test %esi,%esi 0.00 : 5e32ef: 7e 17 jle 5e3308 0.00 : 5e32f1: 31 d2 xor %edx,%edx 0.00 : 5e32f3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : result->words[i] |= other->words[i]; 0.00 : 5e32f8: 8b 44 97 04 mov 0x4(%rdi,%rdx,4),%eax 0.00 : 5e32fc: 09 44 91 04 or %eax,0x4(%rcx,%rdx,4) 0.00 : 5e3300: 48 83 c2 01 add $0x1,%rdx : result = bms_copy(a); : other = b; : } : /* And union the shorter input into the result */ : otherlen = other->nwords; : for (i = 0; i < otherlen; i++) 0.00 : 5e3304: 39 d6 cmp %edx,%esi 0.00 : 5e3306: 7f f0 jg 5e32f8 : result->words[i] |= other->words[i]; : return result; : } 0.00 : 5e3308: 5b pop %rbx 0.00 : 5e3309: 48 89 c8 mov %rcx,%rax 0.00 : 5e330c: 41 5c pop %r12 0.00 : 5e330e: c9 leaveq 0.00 : 5e330f: c3 retq : if (b == NULL) : return bms_copy(a); : /* Identify shorter and longer input; copy the longer one */ : if (a->nwords <= b->nwords) : { : result = bms_copy(b); 0.00 : 5e3310: 48 89 f7 mov %rsi,%rdi 0.00 : 5e3313: e8 e8 fd ff ff callq 5e3100 0.00 : 5e3318: 4c 89 e7 mov %r12,%rdi 0.00 : 5e331b: 48 89 c1 mov %rax,%rcx 0.00 : 5e331e: eb cb jmp 5e32eb : /* And union the shorter input into the result */ : otherlen = other->nwords; : for (i = 0; i < otherlen; i++) : result->words[i] |= other->words[i]; : return result; : } 0.00 : 5e3320: 5b pop %rbx 0.00 : 5e3321: 41 5c pop %r12 0.00 : 5e3323: c9 leaveq : int otherlen; : int i; : : /* Handle cases where either input is NULL */ : if (a == NULL) : return bms_copy(b); 0.00 : 5e3324: 48 89 f7 mov %rsi,%rdi 0.00 : 5e3327: e9 d4 fd ff ff jmpq 5e3100 : /* And union the shorter input into the result */ : otherlen = other->nwords; : for (i = 0; i < otherlen; i++) : result->words[i] |= other->words[i]; : return result; : } 0.00 : 5e332c: 5b pop %rbx 0.00 : 5e332d: 41 5c pop %r12 0.00 : 5e332f: c9 leaveq : : /* Handle cases where either input is NULL */ : if (a == NULL) : return bms_copy(b); : if (b == NULL) : return bms_copy(a); 0.00 : 5e3330: e9 cb fd ff ff jmpq 5e3100 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/readfuncs.c:441 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005fa920 <_readVar>: : /* : * _readVar : */ : static Var * : _readVar(void) : { 0.00 : 5fa920: 55 push %rbp : READ_LOCALS(Var); 0.00 : 5fa921: be 28 00 00 00 mov $0x28,%esi : /* : * _readVar : */ : static Var * : _readVar(void) : { 0.00 : 5fa926: 48 89 e5 mov %rsp,%rbp 0.00 : 5fa929: 41 54 push %r12 0.00 : 5fa92b: 53 push %rbx : READ_LOCALS(Var); : : READ_UINT_FIELD(varno); 0.00 : 5fa92c: 48 8d 5d ec lea -0x14(%rbp),%rbx : /* : * _readVar : */ : static Var * : _readVar(void) : { 0.00 : 5fa930: 48 83 ec 10 sub $0x10,%rsp : READ_LOCALS(Var); 0.00 : 5fa934: 48 8b 3d 25 ff 5b 00 mov 0x5bff25(%rip),%rdi # bba860 0.00 : 5fa93b: e8 d0 e4 19 00 callq 798e10 : : READ_UINT_FIELD(varno); 0.00 : 5fa940: 48 89 df mov %rbx,%rdi : * _readVar : */ : static Var * : _readVar(void) : { : READ_LOCALS(Var); 0.00 : 5fa943: c7 00 2f 01 00 00 movl $0x12f,(%rax) 0.00 : 5fa949: 49 89 c4 mov %rax,%r12 : : READ_UINT_FIELD(varno); 0.00 : 5fa94c: e8 df 45 00 00 callq 5fef30 0.00 : 5fa951: 48 89 df mov %rbx,%rdi 0.00 : 5fa954: e8 d7 45 00 00 callq 5fef30 0.00 : 5fa959: 31 f6 xor %esi,%esi 0.00 : 5fa95b: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fa960: 48 89 c7 mov %rax,%rdi 0.00 : 5fa963: e8 78 f7 e6 ff callq 46a0e0 : READ_INT_FIELD(varattno); 0.00 : 5fa968: 48 89 df mov %rbx,%rdi : static Var * : _readVar(void) : { : READ_LOCALS(Var); : : READ_UINT_FIELD(varno); 0.00 : 5fa96b: 41 89 44 24 04 mov %eax,0x4(%r12) : READ_INT_FIELD(varattno); 0.00 : 5fa970: e8 bb 45 00 00 callq 5fef30 0.00 : 5fa975: 48 89 df mov %rbx,%rdi 0.00 : 5fa978: e8 b3 45 00 00 callq 5fef30 : return strtod (__nptr, (char **) NULL); : } : __extern_inline int : __NTH (atoi (__const char *__nptr)) : { : return (int) strtol (__nptr, (char **) NULL, 10); 0.00 : 5fa97d: 31 f6 xor %esi,%esi 0.00 : 5fa97f: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fa984: 48 89 c7 mov %rax,%rdi 0.00 : 5fa987: e8 04 f2 e6 ff callq 469b90 : READ_OID_FIELD(vartype); 0.00 : 5fa98c: 48 89 df mov %rbx,%rdi : _readVar(void) : { : READ_LOCALS(Var); : : READ_UINT_FIELD(varno); : READ_INT_FIELD(varattno); 0.00 : 5fa98f: 66 41 89 44 24 08 mov %ax,0x8(%r12) : READ_OID_FIELD(vartype); 0.00 : 5fa995: e8 96 45 00 00 callq 5fef30 0.00 : 5fa99a: 48 89 df mov %rbx,%rdi 0.00 : 5fa99d: e8 8e 45 00 00 callq 5fef30 0.00 : 5fa9a2: 31 f6 xor %esi,%esi 0.00 : 5fa9a4: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fa9a9: 48 89 c7 mov %rax,%rdi 0.00 : 5fa9ac: e8 2f f7 e6 ff callq 46a0e0 : READ_INT_FIELD(vartypmod); 0.00 : 5fa9b1: 48 89 df mov %rbx,%rdi : { : READ_LOCALS(Var); : : READ_UINT_FIELD(varno); : READ_INT_FIELD(varattno); : READ_OID_FIELD(vartype); 0.00 : 5fa9b4: 41 89 44 24 0c mov %eax,0xc(%r12) : READ_INT_FIELD(vartypmod); 0.00 : 5fa9b9: e8 72 45 00 00 callq 5fef30 0.00 : 5fa9be: 48 89 df mov %rbx,%rdi 0.00 : 5fa9c1: e8 6a 45 00 00 callq 5fef30 0.00 : 5fa9c6: 31 f6 xor %esi,%esi 0.00 : 5fa9c8: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fa9cd: 48 89 c7 mov %rax,%rdi 0.00 : 5fa9d0: e8 bb f1 e6 ff callq 469b90 : READ_OID_FIELD(varcollid); 0.00 : 5fa9d5: 48 89 df mov %rbx,%rdi : READ_LOCALS(Var); : : READ_UINT_FIELD(varno); : READ_INT_FIELD(varattno); : READ_OID_FIELD(vartype); : READ_INT_FIELD(vartypmod); 0.00 : 5fa9d8: 41 89 44 24 10 mov %eax,0x10(%r12) : READ_OID_FIELD(varcollid); 0.00 : 5fa9dd: e8 4e 45 00 00 callq 5fef30 0.00 : 5fa9e2: 48 89 df mov %rbx,%rdi 0.00 : 5fa9e5: e8 46 45 00 00 callq 5fef30 0.00 : 5fa9ea: 31 f6 xor %esi,%esi 0.00 : 5fa9ec: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fa9f1: 48 89 c7 mov %rax,%rdi 0.00 : 5fa9f4: e8 e7 f6 e6 ff callq 46a0e0 : READ_UINT_FIELD(varlevelsup); 0.00 : 5fa9f9: 48 89 df mov %rbx,%rdi : : READ_UINT_FIELD(varno); : READ_INT_FIELD(varattno); : READ_OID_FIELD(vartype); : READ_INT_FIELD(vartypmod); : READ_OID_FIELD(varcollid); 0.00 : 5fa9fc: 41 89 44 24 14 mov %eax,0x14(%r12) : READ_UINT_FIELD(varlevelsup); 0.00 : 5faa01: e8 2a 45 00 00 callq 5fef30 0.00 : 5faa06: 48 89 df mov %rbx,%rdi 0.00 : 5faa09: e8 22 45 00 00 callq 5fef30 0.00 : 5faa0e: 31 f6 xor %esi,%esi 0.00 : 5faa10: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5faa15: 48 89 c7 mov %rax,%rdi 0.00 : 5faa18: e8 c3 f6 e6 ff callq 46a0e0 : READ_UINT_FIELD(varnoold); 0.00 : 5faa1d: 48 89 df mov %rbx,%rdi : READ_UINT_FIELD(varno); : READ_INT_FIELD(varattno); : READ_OID_FIELD(vartype); : READ_INT_FIELD(vartypmod); : READ_OID_FIELD(varcollid); : READ_UINT_FIELD(varlevelsup); 0.00 : 5faa20: 41 89 44 24 18 mov %eax,0x18(%r12) : READ_UINT_FIELD(varnoold); 0.00 : 5faa25: e8 06 45 00 00 callq 5fef30 0.00 : 5faa2a: 48 89 df mov %rbx,%rdi 0.00 : 5faa2d: e8 fe 44 00 00 callq 5fef30 0.00 : 5faa32: 31 f6 xor %esi,%esi 0.00 : 5faa34: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5faa39: 48 89 c7 mov %rax,%rdi 0.00 : 5faa3c: e8 9f f6 e6 ff callq 46a0e0 : READ_INT_FIELD(varoattno); 0.00 : 5faa41: 48 89 df mov %rbx,%rdi : READ_INT_FIELD(varattno); : READ_OID_FIELD(vartype); : READ_INT_FIELD(vartypmod); : READ_OID_FIELD(varcollid); : READ_UINT_FIELD(varlevelsup); : READ_UINT_FIELD(varnoold); 0.00 : 5faa44: 41 89 44 24 1c mov %eax,0x1c(%r12) : READ_INT_FIELD(varoattno); 0.00 : 5faa49: e8 e2 44 00 00 callq 5fef30 0.00 : 5faa4e: 48 89 df mov %rbx,%rdi 0.00 : 5faa51: e8 da 44 00 00 callq 5fef30 0.00 : 5faa56: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5faa5b: 31 f6 xor %esi,%esi 0.00 : 5faa5d: 48 89 c7 mov %rax,%rdi 0.00 : 5faa60: e8 2b f1 e6 ff callq 469b90 : READ_LOCATION_FIELD(location); 0.00 : 5faa65: 48 89 df mov %rbx,%rdi : READ_OID_FIELD(vartype); : READ_INT_FIELD(vartypmod); : READ_OID_FIELD(varcollid); : READ_UINT_FIELD(varlevelsup); : READ_UINT_FIELD(varnoold); : READ_INT_FIELD(varoattno); 0.00 : 5faa68: 66 41 89 44 24 20 mov %ax,0x20(%r12) : READ_LOCATION_FIELD(location); 0.00 : 5faa6e: e8 bd 44 00 00 callq 5fef30 0.00 : 5faa73: 48 89 df mov %rbx,%rdi 0.00 : 5faa76: e8 b5 44 00 00 callq 5fef30 0.00 : 5faa7b: 41 c7 44 24 24 ff ff movl $0xffffffff,0x24(%r12) 0.00 : 5faa82: ff ff : : READ_DONE(); : } 0.00 : 5faa84: 48 83 c4 10 add $0x10,%rsp 0.00 : 5faa88: 4c 89 e0 mov %r12,%rax 0.00 : 5faa8b: 5b pop %rbx 0.00 : 5faa8c: 41 5c pop %r12 /home/Computational/mark/src/postgres-andres/src/backend/nodes/readfuncs.c:441 100.00 : 5faa8e: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/readfuncs.c:1376 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005fd060 : : * : * The string to be read must already have been loaded into pg_strtok(). : */ : Node * : parseNodeString(void) : { 0.00 : 5fd060: 55 push %rbp 0.00 : 5fd061: 48 89 e5 mov %rsp,%rbp 0.00 : 5fd064: 41 54 push %r12 : void *return_value; : : READ_TEMP_LOCALS(); : : token = pg_strtok(&length); 0.00 : 5fd066: 48 8d 7d ec lea -0x14(%rbp),%rdi : * : * The string to be read must already have been loaded into pg_strtok(). : */ : Node * : parseNodeString(void) : { 0.00 : 5fd06a: 53 push %rbx 0.00 : 5fd06b: 48 83 ec 10 sub $0x10,%rsp : void *return_value; : : READ_TEMP_LOCALS(); : : token = pg_strtok(&length); 0.00 : 5fd06f: e8 bc 1e 00 00 callq 5fef30 : : #define MATCH(tokname, namelen) \ : (length == namelen && memcmp(token, tokname, namelen) == 0) : : if (MATCH("QUERY", 5)) 0.00 : 5fd074: 44 8b 45 ec mov -0x14(%rbp),%r8d : { : void *return_value; : : READ_TEMP_LOCALS(); : : token = pg_strtok(&length); 0.00 : 5fd078: 48 89 c3 mov %rax,%rbx : : #define MATCH(tokname, namelen) \ : (length == namelen && memcmp(token, tokname, namelen) == 0) : : if (MATCH("QUERY", 5)) 0.00 : 5fd07b: 41 83 f8 05 cmp $0x5,%r8d 0.00 : 5fd07f: 0f 84 73 04 00 00 je 5fd4f8 : return_value = _readQuery(); : else if (MATCH("WITHCHECKOPTION", 15)) 0.00 : 5fd085: 41 83 f8 0f cmp $0xf,%r8d 0.00 : 5fd089: 0f 84 e1 04 00 00 je 5fd570 : return_value = _readWithCheckOption(); : else if (MATCH("SORTGROUPCLAUSE", 15)) : return_value = _readSortGroupClause(); : else if (MATCH("WINDOWCLAUSE", 12)) 0.00 : 5fd08f: 41 83 f8 0c cmp $0xc,%r8d 0.00 : 5fd093: 0f 84 1f 02 00 00 je 5fd2b8 : return_value = _readWindowClause(); : else if (MATCH("ROWMARKCLAUSE", 13)) 0.00 : 5fd099: 41 83 f8 0d cmp $0xd,%r8d 0.00 : 5fd09d: 0f 1f 00 nopl (%rax) 0.00 : 5fd0a0: 0f 84 1a 05 00 00 je 5fd5c0 : return_value = _readRowMarkClause(); : else if (MATCH("COMMONTABLEEXPR", 15)) 0.00 : 5fd0a6: 41 83 f8 0f cmp $0xf,%r8d 0.00 : 5fd0aa: 0f 84 ea 04 00 00 je 5fd59a : return_value = _readCommonTableExpr(); : else if (MATCH("SETOPERATIONSTMT", 16)) 0.00 : 5fd0b0: 41 83 f8 10 cmp $0x10,%r8d 0.00 : 5fd0b4: 0f 84 3e 05 00 00 je 5fd5f8 : return_value = _readSetOperationStmt(); : else if (MATCH("ALIAS", 5)) 0.00 : 5fd0ba: 41 83 f8 05 cmp $0x5,%r8d 0.00 : 5fd0be: 66 90 xchg %ax,%ax 0.00 : 5fd0c0: 0f 84 47 04 00 00 je 5fd50d : return_value = _readAlias(); : else if (MATCH("RANGEVAR", 8)) 0.00 : 5fd0c6: 41 83 f8 08 cmp $0x8,%r8d 0.00 : 5fd0ca: 0f 84 20 03 00 00 je 5fd3f0 : return_value = _readRangeVar(); : else if (MATCH("INTOCLAUSE", 10)) 0.00 : 5fd0d0: 41 83 f8 0a cmp $0xa,%r8d 0.00 : 5fd0d4: 0f 84 56 05 00 00 je 5fd630 : return_value = _readIntoClause(); : else if (MATCH("VAR", 3)) 0.00 : 5fd0da: 41 83 f8 03 cmp $0x3,%r8d 0.00 : 5fd0de: 66 90 xchg %ax,%ax 0.00 : 5fd0e0: 0f 84 72 06 00 00 je 5fd758 : return_value = _readVar(); : else if (MATCH("CONST", 5)) 0.00 : 5fd0e6: 41 83 f8 05 cmp $0x5,%r8d 0.00 : 5fd0ea: 0f 84 32 04 00 00 je 5fd522 : return_value = _readConst(); : else if (MATCH("PARAM", 5)) : return_value = _readParam(); : else if (MATCH("AGGREF", 6)) 0.00 : 5fd0f0: 41 83 f8 06 cmp $0x6,%r8d 0.00 : 5fd0f4: 0f 84 0e 02 00 00 je 5fd308 : return_value = _readAggref(); : else if (MATCH("WINDOWFUNC", 10)) 0.00 : 5fd0fa: 41 83 f8 0a cmp $0xa,%r8d 0.00 : 5fd0fe: 66 90 xchg %ax,%ax 0.00 : 5fd100: 0f 84 3f 05 00 00 je 5fd645 : return_value = _readWindowFunc(); : else if (MATCH("ARRAYREF", 8)) 0.00 : 5fd106: 41 83 f8 08 cmp $0x8,%r8d 0.00 : 5fd10a: 0f 84 f5 02 00 00 je 5fd405 : return_value = _readArrayRef(); : else if (MATCH("FUNCEXPR", 8)) : return_value = _readFuncExpr(); : else if (MATCH("NAMEDARGEXPR", 12)) 0.00 : 5fd110: 41 83 f8 0c cmp $0xc,%r8d 0.00 : 5fd114: 0f 84 b3 01 00 00 je 5fd2cd : return_value = _readNamedArgExpr(); : else if (MATCH("OPEXPR", 6)) 0.00 : 5fd11a: 41 83 f8 06 cmp $0x6,%r8d 0.00 : 5fd11e: 66 90 xchg %ax,%ax 0.00 : 5fd120: 0f 84 f7 01 00 00 je 5fd31d : return_value = _readOpExpr(); : else if (MATCH("DISTINCTEXPR", 12)) 0.00 : 5fd126: 41 83 f8 0c cmp $0xc,%r8d 0.00 : 5fd12a: 0f 84 b2 01 00 00 je 5fd2e2 : return_value = _readDistinctExpr(); : else if (MATCH("NULLIFEXPR", 10)) 0.00 : 5fd130: 41 83 f8 0a cmp $0xa,%r8d 0.00 : 5fd134: 0f 84 20 05 00 00 je 5fd65a : return_value = _readNullIfExpr(); : else if (MATCH("SCALARARRAYOPEXPR", 17)) 0.00 : 5fd13a: 41 83 f8 11 cmp $0x11,%r8d 0.00 : 5fd13e: 66 90 xchg %ax,%ax 0.00 : 5fd140: 0f 84 8a 02 00 00 je 5fd3d0 : return_value = _readScalarArrayOpExpr(); : else if (MATCH("BOOLEXPR", 8)) 0.00 : 5fd146: 41 83 f8 08 cmp $0x8,%r8d 0.00 : 5fd14a: 0f 84 df 02 00 00 je 5fd42f : return_value = _readBoolExpr(); : else if (MATCH("SUBLINK", 7)) 0.00 : 5fd150: 41 83 f8 07 cmp $0x7,%r8d 0.00 : 5fd154: 0f 84 4e 06 00 00 je 5fd7a8 : return_value = _readSubLink(); : else if (MATCH("FIELDSELECT", 11)) 0.00 : 5fd15a: 41 83 f8 0b cmp $0xb,%r8d 0.00 : 5fd15e: 66 90 xchg %ax,%ax 0.00 : 5fd160: 0f 84 92 06 00 00 je 5fd7f8 : return_value = _readFieldSelect(); : else if (MATCH("FIELDSTORE", 10)) 0.00 : 5fd166: 41 83 f8 0a cmp $0xa,%r8d 0.00 : 5fd16a: 0f 84 ff 04 00 00 je 5fd66f : return_value = _readFieldStore(); : else if (MATCH("RELABELTYPE", 11)) 0.00 : 5fd170: 41 83 f8 0b cmp $0xb,%r8d 0.00 : 5fd174: 0f 84 93 06 00 00 je 5fd80d : return_value = _readRelabelType(); : else if (MATCH("COERCEVIAIO", 11)) : return_value = _readCoerceViaIO(); : else if (MATCH("ARRAYCOERCEEXPR", 15)) 0.00 : 5fd17a: 41 83 f8 0f cmp $0xf,%r8d 0.00 : 5fd17e: 66 90 xchg %ax,%ax 0.00 : 5fd180: 0f 84 ba 0c 00 00 je 5fde40 : return_value = _readArrayCoerceExpr(); : else if (MATCH("CONVERTROWTYPEEXPR", 18)) 0.00 : 5fd186: 41 83 f8 12 cmp $0x12,%r8d 0.00 : 5fd18a: 0f 84 e0 0c 00 00 je 5fde70 : return_value = _readConvertRowtypeExpr(); : else if (MATCH("COLLATE", 7)) 0.00 : 5fd190: 41 83 f8 07 cmp $0x7,%r8d 0.00 : 5fd194: 0f 84 23 06 00 00 je 5fd7bd : return_value = _readCollateExpr(); : else if (MATCH("CASE", 4)) 0.00 : 5fd19a: 41 83 f8 04 cmp $0x4,%r8d 0.00 : 5fd19e: 66 90 xchg %ax,%ax 0.00 : 5fd1a0: 0f 84 0a 0d 00 00 je 5fdeb0 : return_value = _readCaseExpr(); : else if (MATCH("WHEN", 4)) : return_value = _readCaseWhen(); : else if (MATCH("CASETESTEXPR", 12)) 0.00 : 5fd1a6: 41 83 f8 0c cmp $0xc,%r8d 0.00 : 5fd1aa: 0f 84 f0 0e 00 00 je 5fe0a0 : return_value = _readCaseTestExpr(); : else if (MATCH("ARRAY", 5)) 0.00 : 5fd1b0: 41 83 f8 05 cmp $0x5,%r8d 0.00 : 5fd1b4: 0f 84 92 03 00 00 je 5fd54c : return_value = _readArrayExpr(); : else if (MATCH("ROW", 3)) 0.00 : 5fd1ba: 41 83 f8 03 cmp $0x3,%r8d 0.00 : 5fd1be: 66 90 xchg %ax,%ax 0.00 : 5fd1c0: 0f 84 a7 05 00 00 je 5fd76d : return_value = _readRowExpr(); : else if (MATCH("ROWCOMPARE", 10)) 0.00 : 5fd1c6: 41 83 f8 0a cmp $0xa,%r8d 0.00 : 5fd1ca: 0f 84 b4 04 00 00 je 5fd684 : return_value = _readRowCompareExpr(); : else if (MATCH("COALESCE", 8)) 0.00 : 5fd1d0: 41 83 f8 08 cmp $0x8,%r8d 0.00 : 5fd1d4: 0f 84 6a 02 00 00 je 5fd444 : return_value = _readCoalesceExpr(); : else if (MATCH("MINMAX", 6)) 0.00 : 5fd1da: 41 83 f8 06 cmp $0x6,%r8d 0.00 : 5fd1de: 66 90 xchg %ax,%ax 0.00 : 5fd1e0: 0f 84 4c 01 00 00 je 5fd332 : return_value = _readMinMaxExpr(); : else if (MATCH("XMLEXPR", 7)) 0.00 : 5fd1e6: 41 83 f8 07 cmp $0x7,%r8d 0.00 : 5fd1ea: 0f 84 e2 05 00 00 je 5fd7d2 : return_value = _readXmlExpr(); : else if (MATCH("NULLTEST", 8)) 0.00 : 5fd1f0: 41 83 f8 08 cmp $0x8,%r8d 0.00 : 5fd1f4: 0f 84 5f 02 00 00 je 5fd459 : return_value = _readNullTest(); : else if (MATCH("BOOLEANTEST", 11)) 0.00 : 5fd1fa: 41 83 f8 0b cmp $0xb,%r8d 0.00 : 5fd1fe: 66 90 xchg %ax,%ax 0.00 : 5fd200: 0f 84 3a 0f 00 00 je 5fe140 : return_value = _readBooleanTest(); : else if (MATCH("COERCETODOMAIN", 14)) 0.00 : 5fd206: 41 83 f8 0e cmp $0xe,%r8d 0.00 : 5fd20a: 0f 84 b8 0f 00 00 je 5fe1c8 : return_value = _readCoerceToDomain(); : else if (MATCH("COERCETODOMAINVALUE", 19)) 0.00 : 5fd210: 41 83 f8 13 cmp $0x13,%r8d 0.00 : 5fd214: 0f 84 d6 0f 00 00 je 5fe1f0 : return_value = _readCoerceToDomainValue(); : else if (MATCH("SETTODEFAULT", 12)) 0.00 : 5fd21a: 41 83 f8 0c cmp $0xc,%r8d 0.00 : 5fd21e: 66 90 xchg %ax,%ax 0.00 : 5fd220: 0f 84 8f 0e 00 00 je 5fe0b5 : return_value = _readSetToDefault(); : else if (MATCH("CURRENTOFEXPR", 13)) 0.00 : 5fd226: 41 83 f8 0d cmp $0xd,%r8d 0.00 : 5fd22a: 0f 84 a5 03 00 00 je 5fd5d5 : return_value = _readCurrentOfExpr(); : else if (MATCH("TARGETENTRY", 11)) 0.00 : 5fd230: 41 83 f8 0b cmp $0xb,%r8d 0.00 : 5fd234: 0f 84 46 06 00 00 je 5fd880 : return_value = _readTargetEntry(); : else if (MATCH("RANGETBLREF", 11)) : return_value = _readRangeTblRef(); : else if (MATCH("JOINEXPR", 8)) 0.00 : 5fd23a: 41 83 f8 08 cmp $0x8,%r8d 0.00 : 5fd23e: 66 90 xchg %ax,%ax 0.00 : 5fd240: 0f 84 c2 06 00 00 je 5fd908 : return_value = _readJoinExpr(); : else if (MATCH("FROMEXPR", 8)) : return_value = _readFromExpr(); : else if (MATCH("RTE", 3)) 0.00 : 5fd246: 41 83 f8 03 cmp $0x3,%r8d 0.00 : 5fd24a: 0f 84 32 05 00 00 je 5fd782 : return_value = _readRangeTblEntry(); : else if (MATCH("RANGETBLFUNCTION", 16)) 0.00 : 5fd250: 41 83 f8 10 cmp $0x10,%r8d 0.00 : 5fd254: 0f 84 b3 03 00 00 je 5fd60d : return_value = _readRangeTblFunction(); : else if (MATCH("NOTIFY", 6)) 0.00 : 5fd25a: 41 83 f8 06 cmp $0x6,%r8d 0.00 : 5fd25e: 66 90 xchg %ax,%ax 0.00 : 5fd260: 0f 84 e1 00 00 00 je 5fd347 : return_value = _readNotifyStmt(); : else if (MATCH("DECLARECURSOR", 13)) 0.00 : 5fd266: 41 83 f8 0d cmp $0xd,%r8d 0.00 : 5fd26a: 75 1c jne 5fd288 0.00 : 5fd26c: bf 3c 76 89 00 mov $0x89763c,%edi 0.00 : 5fd271: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 5fd276: 48 89 de mov %rbx,%rsi 0.00 : 5fd279: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd27b: 0f 84 df 05 00 00 je 5fd860 0.00 : 5fd281: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return_value = _readDeclareCursorStmt(); : else : { : elog(ERROR, "badly formatted node string \"%.32s\"...", token); 0.00 : 5fd288: ba 20 9e 89 00 mov $0x899e20,%edx 0.00 : 5fd28d: be 84 05 00 00 mov $0x584,%esi 0.00 : 5fd292: bf 88 9c 89 00 mov $0x899c88,%edi 0.00 : 5fd297: e8 84 e1 17 00 callq 77b420 0.00 : 5fd29c: 48 89 da mov %rbx,%rdx 0.00 : 5fd29f: be c8 9d 89 00 mov $0x899dc8,%esi 0.00 : 5fd2a4: bf 14 00 00 00 mov $0x14,%edi 0.00 : 5fd2a9: 31 c0 xor %eax,%eax 0.00 : 5fd2ab: e8 80 df 17 00 callq 77b230 0.00 : 5fd2b0: e8 1b c2 e6 ff callq 4694d0 0.00 : 5fd2b5: 0f 1f 00 nopl (%rax) : return_value = _readQuery(); : else if (MATCH("WITHCHECKOPTION", 15)) : return_value = _readWithCheckOption(); : else if (MATCH("SORTGROUPCLAUSE", 15)) : return_value = _readSortGroupClause(); : else if (MATCH("WINDOWCLAUSE", 12)) 0.00 : 5fd2b8: bf fe 79 89 00 mov $0x8979fe,%edi 0.00 : 5fd2bd: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 5fd2c2: 48 89 c6 mov %rax,%rsi 0.00 : 5fd2c5: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd2c7: 0f 84 c3 0b 00 00 je 5fde90 : return_value = _readWindowFunc(); : else if (MATCH("ARRAYREF", 8)) : return_value = _readArrayRef(); : else if (MATCH("FUNCEXPR", 8)) : return_value = _readFuncExpr(); : else if (MATCH("NAMEDARGEXPR", 12)) 0.00 : 5fd2cd: bf 94 61 89 00 mov $0x896194,%edi 0.00 : 5fd2d2: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 5fd2d7: 48 89 de mov %rbx,%rsi 0.00 : 5fd2da: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd2dc: 0f 84 2e 0f 00 00 je 5fe210 : return_value = _readNamedArgExpr(); : else if (MATCH("OPEXPR", 6)) : return_value = _readOpExpr(); : else if (MATCH("DISTINCTEXPR", 12)) 0.00 : 5fd2e2: bf 05 62 89 00 mov $0x896205,%edi 0.00 : 5fd2e7: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 5fd2ec: 48 89 de mov %rbx,%rsi 0.00 : 5fd2ef: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd2f1: 0f 85 4f fe ff ff jne 5fd146 : return_value = _readDistinctExpr(); 0.00 : 5fd2f7: e8 74 df ff ff callq 5fb270 <_readDistinctExpr> : return_value = _readFuncExpr(); : else if (MATCH("NAMEDARGEXPR", 12)) : return_value = _readNamedArgExpr(); : else if (MATCH("OPEXPR", 6)) : return_value = _readOpExpr(); : else if (MATCH("DISTINCTEXPR", 12)) 0.00 : 5fd2fc: e9 e7 01 00 00 jmpq 5fd4e8 0.00 : 5fd301: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return_value = _readVar(); : else if (MATCH("CONST", 5)) : return_value = _readConst(); : else if (MATCH("PARAM", 5)) : return_value = _readParam(); : else if (MATCH("AGGREF", 6)) 0.00 : 5fd308: bf 91 5f 89 00 mov $0x895f91,%edi 0.00 : 5fd30d: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 5fd312: 48 89 de mov %rbx,%rsi 0.00 : 5fd315: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd317: 0f 84 2b 05 00 00 je 5fd848 : return_value = _readArrayRef(); : else if (MATCH("FUNCEXPR", 8)) : return_value = _readFuncExpr(); : else if (MATCH("NAMEDARGEXPR", 12)) : return_value = _readNamedArgExpr(); : else if (MATCH("OPEXPR", 6)) 0.00 : 5fd31d: bf 28 62 89 00 mov $0x896228,%edi 0.00 : 5fd322: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 5fd327: 48 89 de mov %rbx,%rsi 0.00 : 5fd32a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd32c: 0f 84 ee 0e 00 00 je 5fe220 : return_value = _readRowExpr(); : else if (MATCH("ROWCOMPARE", 10)) : return_value = _readRowCompareExpr(); : else if (MATCH("COALESCE", 8)) : return_value = _readCoalesceExpr(); : else if (MATCH("MINMAX", 6)) 0.00 : 5fd332: bf 9e 65 89 00 mov $0x89659e,%edi 0.00 : 5fd337: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 5fd33c: 48 89 de mov %rbx,%rsi 0.00 : 5fd33f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd341: 0f 84 56 07 00 00 je 5fda9d : return_value = _readFromExpr(); : else if (MATCH("RTE", 3)) : return_value = _readRangeTblEntry(); : else if (MATCH("RANGETBLFUNCTION", 16)) : return_value = _readRangeTblFunction(); : else if (MATCH("NOTIFY", 6)) 0.00 : 5fd347: bf 11 7c 87 00 mov $0x877c11,%edi 0.00 : 5fd34c: b9 06 00 00 00 mov $0x6,%ecx 0.00 : 5fd351: 48 89 de mov %rbx,%rsi 0.00 : 5fd354: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd356: 0f 85 2c ff ff ff jne 5fd288 : * _readNotifyStmt : */ : static NotifyStmt * : _readNotifyStmt(void) : { : READ_LOCALS(NotifyStmt); 0.00 : 5fd35c: 48 8b 3d fd d4 5b 00 mov 0x5bd4fd(%rip),%rdi # bba860 : : READ_STRING_FIELD(conditionname); 0.00 : 5fd363: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readNotifyStmt : */ : static NotifyStmt * : _readNotifyStmt(void) : { : READ_LOCALS(NotifyStmt); 0.00 : 5fd367: be 18 00 00 00 mov $0x18,%esi 0.00 : 5fd36c: e8 9f ba 19 00 callq 798e10 : : READ_STRING_FIELD(conditionname); 0.00 : 5fd371: 48 89 df mov %rbx,%rdi : * _readNotifyStmt : */ : static NotifyStmt * : _readNotifyStmt(void) : { : READ_LOCALS(NotifyStmt); 0.00 : 5fd374: c7 00 d8 02 00 00 movl $0x2d8,(%rax) 0.00 : 5fd37a: 49 89 c4 mov %rax,%r12 : : READ_STRING_FIELD(conditionname); 0.00 : 5fd37d: e8 ae 1b 00 00 callq 5fef30 0.00 : 5fd382: 48 89 df mov %rbx,%rdi 0.00 : 5fd385: e8 a6 1b 00 00 callq 5fef30 0.00 : 5fd38a: 8b 75 e8 mov -0x18(%rbp),%esi 0.00 : 5fd38d: 48 89 c2 mov %rax,%rdx 0.00 : 5fd390: 31 c0 xor %eax,%eax 0.00 : 5fd392: 85 f6 test %esi,%esi 0.00 : 5fd394: 0f 85 e8 0f 00 00 jne 5fe382 : READ_STRING_FIELD(payload); 0.00 : 5fd39a: 48 89 df mov %rbx,%rdi : static NotifyStmt * : _readNotifyStmt(void) : { : READ_LOCALS(NotifyStmt); : : READ_STRING_FIELD(conditionname); 0.00 : 5fd39d: 49 89 44 24 08 mov %rax,0x8(%r12) : READ_STRING_FIELD(payload); 0.00 : 5fd3a2: e8 89 1b 00 00 callq 5fef30 0.00 : 5fd3a7: 48 89 df mov %rbx,%rdi 0.00 : 5fd3aa: e8 81 1b 00 00 callq 5fef30 0.00 : 5fd3af: 8b 75 e8 mov -0x18(%rbp),%esi 0.00 : 5fd3b2: 48 89 c2 mov %rax,%rdx 0.00 : 5fd3b5: 31 c0 xor %eax,%eax 0.00 : 5fd3b7: 85 f6 test %esi,%esi 0.00 : 5fd3b9: 74 08 je 5fd3c3 0.00 : 5fd3bb: 48 89 d7 mov %rdx,%rdi 0.00 : 5fd3be: e8 4d 1c 00 00 callq 5ff010 0.00 : 5fd3c3: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 5fd3c8: 4c 89 e0 mov %r12,%rax : return_value = _readFromExpr(); : else if (MATCH("RTE", 3)) : return_value = _readRangeTblEntry(); : else if (MATCH("RANGETBLFUNCTION", 16)) : return_value = _readRangeTblFunction(); : else if (MATCH("NOTIFY", 6)) 0.00 : 5fd3cb: e9 18 01 00 00 jmpq 5fd4e8 : return_value = _readOpExpr(); : else if (MATCH("DISTINCTEXPR", 12)) : return_value = _readDistinctExpr(); : else if (MATCH("NULLIFEXPR", 10)) : return_value = _readNullIfExpr(); : else if (MATCH("SCALARARRAYOPEXPR", 17)) 0.00 : 5fd3d0: bf 1d 62 89 00 mov $0x89621d,%edi 0.00 : 5fd3d5: b9 11 00 00 00 mov $0x11,%ecx 0.00 : 5fd3da: 48 89 de mov %rbx,%rsi 0.00 : 5fd3dd: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd3df: 0f 85 a3 fe ff ff jne 5fd288 : return_value = _readScalarArrayOpExpr(); 0.00 : 5fd3e5: e8 06 e1 ff ff callq 5fb4f0 <_readScalarArrayOpExpr> : return_value = _readOpExpr(); : else if (MATCH("DISTINCTEXPR", 12)) : return_value = _readDistinctExpr(); : else if (MATCH("NULLIFEXPR", 10)) : return_value = _readNullIfExpr(); : else if (MATCH("SCALARARRAYOPEXPR", 17)) 0.00 : 5fd3ea: e9 f9 00 00 00 jmpq 5fd4e8 0.00 : 5fd3ef: 90 nop : return_value = _readCommonTableExpr(); : else if (MATCH("SETOPERATIONSTMT", 16)) : return_value = _readSetOperationStmt(); : else if (MATCH("ALIAS", 5)) : return_value = _readAlias(); : else if (MATCH("RANGEVAR", 8)) 0.00 : 5fd3f0: bf e2 5e 89 00 mov $0x895ee2,%edi 0.00 : 5fd3f5: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 5fd3fa: 48 89 c6 mov %rax,%rsi 0.00 : 5fd3fd: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd3ff: 0f 84 d3 0c 00 00 je 5fe0d8 : return_value = _readParam(); : else if (MATCH("AGGREF", 6)) : return_value = _readAggref(); : else if (MATCH("WINDOWFUNC", 10)) : return_value = _readWindowFunc(); : else if (MATCH("ARRAYREF", 8)) 0.00 : 5fd405: bf 9e 60 89 00 mov $0x89609e,%edi 0.00 : 5fd40a: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 5fd40f: 48 89 de mov %rbx,%rsi 0.00 : 5fd412: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd414: 0f 84 9e 0d 00 00 je 5fe1b8 : return_value = _readArrayRef(); : else if (MATCH("FUNCEXPR", 8)) 0.00 : 5fd41a: bf 29 61 89 00 mov $0x896129,%edi 0.00 : 5fd41f: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 5fd424: 48 89 de mov %rbx,%rsi 0.00 : 5fd427: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd429: 0f 84 41 04 00 00 je 5fd870 : return_value = _readDistinctExpr(); : else if (MATCH("NULLIFEXPR", 10)) : return_value = _readNullIfExpr(); : else if (MATCH("SCALARARRAYOPEXPR", 17)) : return_value = _readScalarArrayOpExpr(); : else if (MATCH("BOOLEXPR", 8)) 0.00 : 5fd42f: bf 3a 62 89 00 mov $0x89623a,%edi 0.00 : 5fd434: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 5fd439: 48 89 de mov %rbx,%rsi 0.00 : 5fd43c: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd43e: 0f 84 44 05 00 00 je 5fd988 : return_value = _readArrayExpr(); : else if (MATCH("ROW", 3)) : return_value = _readRowExpr(); : else if (MATCH("ROWCOMPARE", 10)) : return_value = _readRowCompareExpr(); : else if (MATCH("COALESCE", 8)) 0.00 : 5fd444: bf 49 32 87 00 mov $0x873249,%edi 0.00 : 5fd449: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 5fd44e: 48 89 de mov %rbx,%rsi 0.00 : 5fd451: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd453: 0f 84 14 0e 00 00 je 5fe26d : return_value = _readCoalesceExpr(); : else if (MATCH("MINMAX", 6)) : return_value = _readMinMaxExpr(); : else if (MATCH("XMLEXPR", 7)) : return_value = _readXmlExpr(); : else if (MATCH("NULLTEST", 8)) 0.00 : 5fd459: bf 17 66 89 00 mov $0x896617,%edi 0.00 : 5fd45e: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 5fd463: 48 89 de mov %rbx,%rsi 0.00 : 5fd466: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd468: 0f 85 ac fd ff ff jne 5fd21a : * _readNullTest : */ : static NullTest * : _readNullTest(void) : { : READ_LOCALS(NullTest); 0.00 : 5fd46e: 48 8b 3d eb d3 5b 00 mov 0x5bd3eb(%rip),%rdi # bba860 : : READ_NODE_FIELD(arg); 0.00 : 5fd475: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readNullTest : */ : static NullTest * : _readNullTest(void) : { : READ_LOCALS(NullTest); 0.00 : 5fd479: be 18 00 00 00 mov $0x18,%esi 0.00 : 5fd47e: e8 8d b9 19 00 callq 798e10 : : READ_NODE_FIELD(arg); 0.00 : 5fd483: 48 89 df mov %rbx,%rdi : * _readNullTest : */ : static NullTest * : _readNullTest(void) : { : READ_LOCALS(NullTest); 0.00 : 5fd486: c7 00 4f 01 00 00 movl $0x14f,(%rax) 0.00 : 5fd48c: 49 89 c4 mov %rax,%r12 : : READ_NODE_FIELD(arg); 0.00 : 5fd48f: e8 9c 1a 00 00 callq 5fef30 0.00 : 5fd494: 31 f6 xor %esi,%esi 0.00 : 5fd496: 31 ff xor %edi,%edi 0.00 : 5fd498: e8 e3 1b 00 00 callq 5ff080 : READ_ENUM_FIELD(nulltesttype, NullTestType); 0.00 : 5fd49d: 48 89 df mov %rbx,%rdi : static NullTest * : _readNullTest(void) : { : READ_LOCALS(NullTest); : : READ_NODE_FIELD(arg); 0.00 : 5fd4a0: 49 89 44 24 08 mov %rax,0x8(%r12) : READ_ENUM_FIELD(nulltesttype, NullTestType); 0.00 : 5fd4a5: e8 86 1a 00 00 callq 5fef30 0.00 : 5fd4aa: 48 89 df mov %rbx,%rdi 0.00 : 5fd4ad: e8 7e 1a 00 00 callq 5fef30 : return strtod (__nptr, (char **) NULL); : } : __extern_inline int : __NTH (atoi (__const char *__nptr)) : { : return (int) strtol (__nptr, (char **) NULL, 10); 0.00 : 5fd4b2: 31 f6 xor %esi,%esi 0.00 : 5fd4b4: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fd4b9: 48 89 c7 mov %rax,%rdi 0.00 : 5fd4bc: e8 cf c6 e6 ff callq 469b90 : READ_BOOL_FIELD(argisrow); 0.00 : 5fd4c1: 48 89 df mov %rbx,%rdi : _readNullTest(void) : { : READ_LOCALS(NullTest); : : READ_NODE_FIELD(arg); : READ_ENUM_FIELD(nulltesttype, NullTestType); 0.00 : 5fd4c4: 41 89 44 24 10 mov %eax,0x10(%r12) : READ_BOOL_FIELD(argisrow); 0.00 : 5fd4c9: e8 62 1a 00 00 callq 5fef30 0.00 : 5fd4ce: 48 89 df mov %rbx,%rdi 0.00 : 5fd4d1: e8 5a 1a 00 00 callq 5fef30 0.00 : 5fd4d6: 80 38 74 cmpb $0x74,(%rax) 0.00 : 5fd4d9: 4c 89 e0 mov %r12,%rax 0.00 : 5fd4dc: 41 0f 94 44 24 14 sete 0x14(%r12) 0.00 : 5fd4e2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : elog(ERROR, "badly formatted node string \"%.32s\"...", token); : return_value = NULL; /* keep compiler quiet */ : } : : return (Node *) return_value; : } 0.00 : 5fd4e8: 48 83 c4 10 add $0x10,%rsp 0.00 : 5fd4ec: 5b pop %rbx 0.00 : 5fd4ed: 41 5c pop %r12 0.00 : 5fd4ef: c9 leaveq 0.00 : 5fd4f0: c3 retq 0.00 : 5fd4f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : token = pg_strtok(&length); : : #define MATCH(tokname, namelen) \ : (length == namelen && memcmp(token, tokname, namelen) == 0) : : if (MATCH("QUERY", 5)) 0.00 : 5fd4f8: bf 9e 78 89 00 mov $0x89789e,%edi 0.00 : 5fd4fd: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 5fd502: 48 89 c6 mov %rax,%rsi 0.00 : 5fd505: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd507: 0f 84 a3 05 00 00 je 5fdab0 : return_value = _readRowMarkClause(); : else if (MATCH("COMMONTABLEEXPR", 15)) : return_value = _readCommonTableExpr(); : else if (MATCH("SETOPERATIONSTMT", 16)) : return_value = _readSetOperationStmt(); : else if (MATCH("ALIAS", 5)) 0.00 : 5fd50d: bf 61 5a 89 00 mov $0x895a61,%edi 0.00 : 5fd512: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 5fd517: 48 89 de mov %rbx,%rsi 0.00 : 5fd51a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd51c: 0f 84 26 0a 00 00 je 5fdf48 : return_value = _readRangeVar(); : else if (MATCH("INTOCLAUSE", 10)) : return_value = _readIntoClause(); : else if (MATCH("VAR", 3)) : return_value = _readVar(); : else if (MATCH("CONST", 5)) 0.00 : 5fd522: bf 6c 5d 89 00 mov $0x895d6c,%edi 0.00 : 5fd527: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 5fd52c: 48 89 de mov %rbx,%rsi 0.00 : 5fd52f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd531: 0f 84 d9 0b 00 00 je 5fe110 : return_value = _readConst(); : else if (MATCH("PARAM", 5)) 0.00 : 5fd537: bf be 59 89 00 mov $0x8959be,%edi 0.00 : 5fd53c: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 5fd541: 48 89 de mov %rbx,%rsi 0.00 : 5fd544: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd546: 0f 84 d4 0b 00 00 je 5fe120 : return_value = _readCaseExpr(); : else if (MATCH("WHEN", 4)) : return_value = _readCaseWhen(); : else if (MATCH("CASETESTEXPR", 12)) : return_value = _readCaseTestExpr(); : else if (MATCH("ARRAY", 5)) 0.00 : 5fd54c: bf d3 31 87 00 mov $0x8731d3,%edi 0.00 : 5fd551: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 5fd556: 48 89 de mov %rbx,%rsi 0.00 : 5fd559: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd55b: 0f 85 27 fd ff ff jne 5fd288 : return_value = _readArrayExpr(); 0.00 : 5fd561: e8 da e7 ff ff callq 5fbd40 <_readArrayExpr> : return_value = _readCaseExpr(); : else if (MATCH("WHEN", 4)) : return_value = _readCaseWhen(); : else if (MATCH("CASETESTEXPR", 12)) : return_value = _readCaseTestExpr(); : else if (MATCH("ARRAY", 5)) 0.00 : 5fd566: eb 80 jmp 5fd4e8 0.00 : 5fd568: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5fd56f: 00 : #define MATCH(tokname, namelen) \ : (length == namelen && memcmp(token, tokname, namelen) == 0) : : if (MATCH("QUERY", 5)) : return_value = _readQuery(); : else if (MATCH("WITHCHECKOPTION", 15)) 0.00 : 5fd570: bf d4 79 89 00 mov $0x8979d4,%edi 0.00 : 5fd575: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : 5fd57a: 48 89 c6 mov %rax,%rsi 0.00 : 5fd57d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd57f: 0f 84 33 08 00 00 je 5fddb8 : return_value = _readWithCheckOption(); : else if (MATCH("SORTGROUPCLAUSE", 15)) 0.00 : 5fd585: bf bf 5c 89 00 mov $0x895cbf,%edi 0.00 : 5fd58a: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : 5fd58f: 48 89 c6 mov %rax,%rsi 0.00 : 5fd592: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd594: 0f 84 c6 08 00 00 je 5fde60 : return_value = _readSortGroupClause(); : else if (MATCH("WINDOWCLAUSE", 12)) : return_value = _readWindowClause(); : else if (MATCH("ROWMARKCLAUSE", 13)) : return_value = _readRowMarkClause(); : else if (MATCH("COMMONTABLEEXPR", 15)) 0.00 : 5fd59a: bf 6b 7a 89 00 mov $0x897a6b,%edi 0.00 : 5fd59f: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : 5fd5a4: 48 89 de mov %rbx,%rsi 0.00 : 5fd5a7: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd5a9: 0f 85 21 fb ff ff jne 5fd0d0 : return_value = _readCommonTableExpr(); 0.00 : 5fd5af: e8 1c cc ff ff callq 5fa1d0 <_readCommonTableExpr> : return_value = _readSortGroupClause(); : else if (MATCH("WINDOWCLAUSE", 12)) : return_value = _readWindowClause(); : else if (MATCH("ROWMARKCLAUSE", 13)) : return_value = _readRowMarkClause(); : else if (MATCH("COMMONTABLEEXPR", 15)) 0.00 : 5fd5b4: e9 2f ff ff ff jmpq 5fd4e8 0.00 : 5fd5b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return_value = _readWithCheckOption(); : else if (MATCH("SORTGROUPCLAUSE", 15)) : return_value = _readSortGroupClause(); : else if (MATCH("WINDOWCLAUSE", 12)) : return_value = _readWindowClause(); : else if (MATCH("ROWMARKCLAUSE", 13)) 0.00 : 5fd5c0: bf 19 5d 89 00 mov $0x895d19,%edi 0.00 : 5fd5c5: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 5fd5ca: 48 89 c6 mov %rax,%rsi 0.00 : 5fd5cd: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd5cf: 0f 84 cb 08 00 00 je 5fdea0 : return_value = _readCoerceToDomain(); : else if (MATCH("COERCETODOMAINVALUE", 19)) : return_value = _readCoerceToDomainValue(); : else if (MATCH("SETTODEFAULT", 12)) : return_value = _readSetToDefault(); : else if (MATCH("CURRENTOFEXPR", 13)) 0.00 : 5fd5d5: bf 21 5c 89 00 mov $0x895c21,%edi 0.00 : 5fd5da: b9 0d 00 00 00 mov $0xd,%ecx 0.00 : 5fd5df: 48 89 de mov %rbx,%rsi 0.00 : 5fd5e2: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd5e4: 0f 85 82 fc ff ff jne 5fd26c : return_value = _readCurrentOfExpr(); 0.00 : 5fd5ea: e8 81 ee ff ff callq 5fc470 <_readCurrentOfExpr> : return_value = _readCoerceToDomain(); : else if (MATCH("COERCETODOMAINVALUE", 19)) : return_value = _readCoerceToDomainValue(); : else if (MATCH("SETTODEFAULT", 12)) : return_value = _readSetToDefault(); : else if (MATCH("CURRENTOFEXPR", 13)) 0.00 : 5fd5ef: e9 f4 fe ff ff jmpq 5fd4e8 0.00 : 5fd5f4: 0f 1f 40 00 nopl 0x0(%rax) : return_value = _readWindowClause(); : else if (MATCH("ROWMARKCLAUSE", 13)) : return_value = _readRowMarkClause(); : else if (MATCH("COMMONTABLEEXPR", 15)) : return_value = _readCommonTableExpr(); : else if (MATCH("SETOPERATIONSTMT", 16)) 0.00 : 5fd5f8: bf 09 7b 89 00 mov $0x897b09,%edi 0.00 : 5fd5fd: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 5fd602: 48 89 c6 mov %rax,%rsi 0.00 : 5fd605: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd607: 0f 84 a3 09 00 00 je 5fdfb0 : return_value = _readJoinExpr(); : else if (MATCH("FROMEXPR", 8)) : return_value = _readFromExpr(); : else if (MATCH("RTE", 3)) : return_value = _readRangeTblEntry(); : else if (MATCH("RANGETBLFUNCTION", 16)) 0.00 : 5fd60d: bf 54 7c 89 00 mov $0x897c54,%edi 0.00 : 5fd612: b9 10 00 00 00 mov $0x10,%ecx 0.00 : 5fd617: 48 89 de mov %rbx,%rsi 0.00 : 5fd61a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd61c: 0f 85 66 fc ff ff jne 5fd288 : return_value = _readRangeTblFunction(); 0.00 : 5fd622: e8 59 f9 ff ff callq 5fcf80 <_readRangeTblFunction> : return_value = _readJoinExpr(); : else if (MATCH("FROMEXPR", 8)) : return_value = _readFromExpr(); : else if (MATCH("RTE", 3)) : return_value = _readRangeTblEntry(); : else if (MATCH("RANGETBLFUNCTION", 16)) 0.00 : 5fd627: e9 bc fe ff ff jmpq 5fd4e8 0.00 : 5fd62c: 0f 1f 40 00 nopl 0x0(%rax) : return_value = _readSetOperationStmt(); : else if (MATCH("ALIAS", 5)) : return_value = _readAlias(); : else if (MATCH("RANGEVAR", 8)) : return_value = _readRangeVar(); : else if (MATCH("INTOCLAUSE", 10)) 0.00 : 5fd630: bf 2d 5f 89 00 mov $0x895f2d,%edi 0.00 : 5fd635: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 5fd63a: 48 89 de mov %rbx,%rsi 0.00 : 5fd63d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd63f: 0f 84 ab 0a 00 00 je 5fe0f0 : return_value = _readConst(); : else if (MATCH("PARAM", 5)) : return_value = _readParam(); : else if (MATCH("AGGREF", 6)) : return_value = _readAggref(); : else if (MATCH("WINDOWFUNC", 10)) 0.00 : 5fd645: bf 50 60 89 00 mov $0x896050,%edi 0.00 : 5fd64a: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 5fd64f: 48 89 de mov %rbx,%rsi 0.00 : 5fd652: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd654: 0f 84 d6 0a 00 00 je 5fe130 : return_value = _readNamedArgExpr(); : else if (MATCH("OPEXPR", 6)) : return_value = _readOpExpr(); : else if (MATCH("DISTINCTEXPR", 12)) : return_value = _readDistinctExpr(); : else if (MATCH("NULLIFEXPR", 10)) 0.00 : 5fd65a: bf 12 62 89 00 mov $0x896212,%edi 0.00 : 5fd65f: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 5fd664: 48 89 de mov %rbx,%rsi 0.00 : 5fd667: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd669: 0f 84 89 02 00 00 je 5fd8f8 : return_value = _readBoolExpr(); : else if (MATCH("SUBLINK", 7)) : return_value = _readSubLink(); : else if (MATCH("FIELDSELECT", 11)) : return_value = _readFieldSelect(); : else if (MATCH("FIELDSTORE", 10)) 0.00 : 5fd66f: bf b1 63 89 00 mov $0x8963b1,%edi 0.00 : 5fd674: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 5fd679: 48 89 de mov %rbx,%rsi 0.00 : 5fd67c: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd67e: 0f 84 f4 03 00 00 je 5fda78 : return_value = _readCaseTestExpr(); : else if (MATCH("ARRAY", 5)) : return_value = _readArrayExpr(); : else if (MATCH("ROW", 3)) : return_value = _readRowExpr(); : else if (MATCH("ROWCOMPARE", 10)) 0.00 : 5fd684: bf 28 65 89 00 mov $0x896528,%edi 0.00 : 5fd689: b9 0a 00 00 00 mov $0xa,%ecx 0.00 : 5fd68e: 48 89 de mov %rbx,%rsi 0.00 : 5fd691: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd693: 0f 85 ef fb ff ff jne 5fd288 : * _readRowCompareExpr : */ : static RowCompareExpr * : _readRowCompareExpr(void) : { : READ_LOCALS(RowCompareExpr); 0.00 : 5fd699: 48 8b 3d c0 d1 5b 00 mov 0x5bd1c0(%rip),%rdi # bba860 : : READ_ENUM_FIELD(rctype, RowCompareType); 0.00 : 5fd6a0: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readRowCompareExpr : */ : static RowCompareExpr * : _readRowCompareExpr(void) : { : READ_LOCALS(RowCompareExpr); 0.00 : 5fd6a4: be 30 00 00 00 mov $0x30,%esi 0.00 : 5fd6a9: e8 62 b7 19 00 callq 798e10 : : READ_ENUM_FIELD(rctype, RowCompareType); 0.00 : 5fd6ae: 48 89 df mov %rbx,%rdi : * _readRowCompareExpr : */ : static RowCompareExpr * : _readRowCompareExpr(void) : { : READ_LOCALS(RowCompareExpr); 0.00 : 5fd6b1: c7 00 4b 01 00 00 movl $0x14b,(%rax) 0.00 : 5fd6b7: 49 89 c4 mov %rax,%r12 : : READ_ENUM_FIELD(rctype, RowCompareType); 0.00 : 5fd6ba: e8 71 18 00 00 callq 5fef30 0.00 : 5fd6bf: 48 89 df mov %rbx,%rdi 0.00 : 5fd6c2: e8 69 18 00 00 callq 5fef30 0.00 : 5fd6c7: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fd6cc: 31 f6 xor %esi,%esi 0.00 : 5fd6ce: 48 89 c7 mov %rax,%rdi 0.00 : 5fd6d1: e8 ba c4 e6 ff callq 469b90 : READ_NODE_FIELD(opnos); 0.00 : 5fd6d6: 48 89 df mov %rbx,%rdi : static RowCompareExpr * : _readRowCompareExpr(void) : { : READ_LOCALS(RowCompareExpr); : : READ_ENUM_FIELD(rctype, RowCompareType); 0.00 : 5fd6d9: 41 89 44 24 04 mov %eax,0x4(%r12) : READ_NODE_FIELD(opnos); 0.00 : 5fd6de: e8 4d 18 00 00 callq 5fef30 0.00 : 5fd6e3: 31 f6 xor %esi,%esi 0.00 : 5fd6e5: 31 ff xor %edi,%edi 0.00 : 5fd6e7: e8 94 19 00 00 callq 5ff080 : READ_NODE_FIELD(opfamilies); 0.00 : 5fd6ec: 48 89 df mov %rbx,%rdi : _readRowCompareExpr(void) : { : READ_LOCALS(RowCompareExpr); : : READ_ENUM_FIELD(rctype, RowCompareType); : READ_NODE_FIELD(opnos); 0.00 : 5fd6ef: 49 89 44 24 08 mov %rax,0x8(%r12) : READ_NODE_FIELD(opfamilies); 0.00 : 5fd6f4: e8 37 18 00 00 callq 5fef30 0.00 : 5fd6f9: 31 f6 xor %esi,%esi 0.00 : 5fd6fb: 31 ff xor %edi,%edi 0.00 : 5fd6fd: e8 7e 19 00 00 callq 5ff080 : READ_NODE_FIELD(inputcollids); 0.00 : 5fd702: 48 89 df mov %rbx,%rdi : { : READ_LOCALS(RowCompareExpr); : : READ_ENUM_FIELD(rctype, RowCompareType); : READ_NODE_FIELD(opnos); : READ_NODE_FIELD(opfamilies); 0.00 : 5fd705: 49 89 44 24 10 mov %rax,0x10(%r12) : READ_NODE_FIELD(inputcollids); 0.00 : 5fd70a: e8 21 18 00 00 callq 5fef30 0.00 : 5fd70f: 31 f6 xor %esi,%esi 0.00 : 5fd711: 31 ff xor %edi,%edi 0.00 : 5fd713: e8 68 19 00 00 callq 5ff080 : READ_NODE_FIELD(largs); 0.00 : 5fd718: 48 89 df mov %rbx,%rdi : READ_LOCALS(RowCompareExpr); : : READ_ENUM_FIELD(rctype, RowCompareType); : READ_NODE_FIELD(opnos); : READ_NODE_FIELD(opfamilies); : READ_NODE_FIELD(inputcollids); 0.00 : 5fd71b: 49 89 44 24 18 mov %rax,0x18(%r12) : READ_NODE_FIELD(largs); 0.00 : 5fd720: e8 0b 18 00 00 callq 5fef30 0.00 : 5fd725: 31 f6 xor %esi,%esi 0.00 : 5fd727: 31 ff xor %edi,%edi 0.00 : 5fd729: e8 52 19 00 00 callq 5ff080 : READ_NODE_FIELD(rargs); 0.00 : 5fd72e: 48 89 df mov %rbx,%rdi : : READ_ENUM_FIELD(rctype, RowCompareType); : READ_NODE_FIELD(opnos); : READ_NODE_FIELD(opfamilies); : READ_NODE_FIELD(inputcollids); : READ_NODE_FIELD(largs); 0.00 : 5fd731: 49 89 44 24 20 mov %rax,0x20(%r12) : READ_NODE_FIELD(rargs); 0.00 : 5fd736: e8 f5 17 00 00 callq 5fef30 0.00 : 5fd73b: 31 f6 xor %esi,%esi 0.00 : 5fd73d: 31 ff xor %edi,%edi 0.00 : 5fd73f: e8 3c 19 00 00 callq 5ff080 0.00 : 5fd744: 49 89 44 24 28 mov %rax,0x28(%r12) 0.00 : 5fd749: 4c 89 e0 mov %r12,%rax : return_value = _readCaseTestExpr(); : else if (MATCH("ARRAY", 5)) : return_value = _readArrayExpr(); : else if (MATCH("ROW", 3)) : return_value = _readRowExpr(); : else if (MATCH("ROWCOMPARE", 10)) 0.00 : 5fd74c: e9 97 fd ff ff jmpq 5fd4e8 0.00 : 5fd751: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return_value = _readAlias(); : else if (MATCH("RANGEVAR", 8)) : return_value = _readRangeVar(); : else if (MATCH("INTOCLAUSE", 10)) : return_value = _readIntoClause(); : else if (MATCH("VAR", 3)) 0.00 : 5fd758: bf e7 5e 89 00 mov $0x895ee7,%edi 0.00 : 5fd75d: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 5fd762: 48 89 de mov %rbx,%rsi 0.00 : 5fd765: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd767: 0f 84 93 09 00 00 je 5fe100 : return_value = _readCaseWhen(); : else if (MATCH("CASETESTEXPR", 12)) : return_value = _readCaseTestExpr(); : else if (MATCH("ARRAY", 5)) : return_value = _readArrayExpr(); : else if (MATCH("ROW", 3)) 0.00 : 5fd76d: bf 04 65 89 00 mov $0x896504,%edi 0.00 : 5fd772: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 5fd777: 48 89 de mov %rbx,%rsi 0.00 : 5fd77a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd77c: 0f 84 0b 03 00 00 je 5fda8d : return_value = _readRangeTblRef(); : else if (MATCH("JOINEXPR", 8)) : return_value = _readJoinExpr(); : else if (MATCH("FROMEXPR", 8)) : return_value = _readFromExpr(); : else if (MATCH("RTE", 3)) 0.00 : 5fd782: bf 55 7b 89 00 mov $0x897b55,%edi 0.00 : 5fd787: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 5fd78c: 48 89 de mov %rbx,%rsi 0.00 : 5fd78f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd791: 0f 85 f1 fa ff ff jne 5fd288 : return_value = _readRangeTblEntry(); 0.00 : 5fd797: e8 74 f4 ff ff callq 5fcc10 <_readRangeTblEntry> : return_value = _readRangeTblRef(); : else if (MATCH("JOINEXPR", 8)) : return_value = _readJoinExpr(); : else if (MATCH("FROMEXPR", 8)) : return_value = _readFromExpr(); : else if (MATCH("RTE", 3)) 0.00 : 5fd79c: e9 47 fd ff ff jmpq 5fd4e8 0.00 : 5fd7a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return_value = _readNullIfExpr(); : else if (MATCH("SCALARARRAYOPEXPR", 17)) : return_value = _readScalarArrayOpExpr(); : else if (MATCH("BOOLEXPR", 8)) : return_value = _readBoolExpr(); : else if (MATCH("SUBLINK", 7)) 0.00 : 5fd7a8: bf 4d 62 89 00 mov $0x89624d,%edi 0.00 : 5fd7ad: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 5fd7b2: 48 89 de mov %rbx,%rsi 0.00 : 5fd7b5: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd7b7: 0f 84 db 01 00 00 je 5fd998 : return_value = _readCoerceViaIO(); : else if (MATCH("ARRAYCOERCEEXPR", 15)) : return_value = _readArrayCoerceExpr(); : else if (MATCH("CONVERTROWTYPEEXPR", 18)) : return_value = _readConvertRowtypeExpr(); : else if (MATCH("COLLATE", 7)) 0.00 : 5fd7bd: bf e1 32 8a 00 mov $0x8a32e1,%edi 0.00 : 5fd7c2: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 5fd7c7: 48 89 de mov %rbx,%rsi 0.00 : 5fd7ca: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd7cc: 0f 84 6e 0a 00 00 je 5fe240 : return_value = _readRowCompareExpr(); : else if (MATCH("COALESCE", 8)) : return_value = _readCoalesceExpr(); : else if (MATCH("MINMAX", 6)) : return_value = _readMinMaxExpr(); : else if (MATCH("XMLEXPR", 7)) 0.00 : 5fd7d2: bf cf 65 89 00 mov $0x8965cf,%edi 0.00 : 5fd7d7: b9 07 00 00 00 mov $0x7,%ecx 0.00 : 5fd7dc: 48 89 de mov %rbx,%rsi 0.00 : 5fd7df: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd7e1: 0f 85 a1 fa ff ff jne 5fd288 : return_value = _readXmlExpr(); 0.00 : 5fd7e7: e8 c4 e8 ff ff callq 5fc0b0 <_readXmlExpr> : return_value = _readRowCompareExpr(); : else if (MATCH("COALESCE", 8)) : return_value = _readCoalesceExpr(); : else if (MATCH("MINMAX", 6)) : return_value = _readMinMaxExpr(); : else if (MATCH("XMLEXPR", 7)) 0.00 : 5fd7ec: e9 f7 fc ff ff jmpq 5fd4e8 0.00 : 5fd7f1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return_value = _readScalarArrayOpExpr(); : else if (MATCH("BOOLEXPR", 8)) : return_value = _readBoolExpr(); : else if (MATCH("SUBLINK", 7)) : return_value = _readSubLink(); : else if (MATCH("FIELDSELECT", 11)) 0.00 : 5fd7f8: bf 63 63 89 00 mov $0x896363,%edi 0.00 : 5fd7fd: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 5fd802: 48 89 de mov %rbx,%rsi 0.00 : 5fd805: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd807: 0f 84 5b 02 00 00 je 5fda68 : return_value = _readFieldSelect(); : else if (MATCH("FIELDSTORE", 10)) : return_value = _readFieldStore(); : else if (MATCH("RELABELTYPE", 11)) 0.00 : 5fd80d: bf d4 63 89 00 mov $0x8963d4,%edi 0.00 : 5fd812: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 5fd817: 48 89 de mov %rbx,%rsi 0.00 : 5fd81a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd81c: 0f 84 0e 0a 00 00 je 5fe230 : return_value = _readRelabelType(); : else if (MATCH("COERCEVIAIO", 11)) 0.00 : 5fd822: bf f3 63 89 00 mov $0x8963f3,%edi 0.00 : 5fd827: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 5fd82c: 48 89 de mov %rbx,%rsi 0.00 : 5fd82f: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd831: 0f 85 59 f9 ff ff jne 5fd190 : return_value = _readCoerceViaIO(); 0.00 : 5fd837: e8 24 e0 ff ff callq 5fb860 <_readCoerceViaIO> : return_value = _readFieldSelect(); : else if (MATCH("FIELDSTORE", 10)) : return_value = _readFieldStore(); : else if (MATCH("RELABELTYPE", 11)) : return_value = _readRelabelType(); : else if (MATCH("COERCEVIAIO", 11)) 0.00 : 5fd83c: e9 a7 fc ff ff jmpq 5fd4e8 0.00 : 5fd841: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 5fd848: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5fd84f: 00 : else if (MATCH("CONST", 5)) : return_value = _readConst(); : else if (MATCH("PARAM", 5)) : return_value = _readParam(); : else if (MATCH("AGGREF", 6)) : return_value = _readAggref(); 0.00 : 5fd850: e8 4b d3 ff ff callq 5faba0 <_readAggref> 0.00 : 5fd855: 0f 1f 00 nopl (%rax) : return_value = _readVar(); : else if (MATCH("CONST", 5)) : return_value = _readConst(); : else if (MATCH("PARAM", 5)) : return_value = _readParam(); : else if (MATCH("AGGREF", 6)) 0.00 : 5fd858: e9 8b fc ff ff jmpq 5fd4e8 0.00 : 5fd85d: 0f 1f 00 nopl (%rax) : else if (MATCH("RANGETBLFUNCTION", 16)) : return_value = _readRangeTblFunction(); : else if (MATCH("NOTIFY", 6)) : return_value = _readNotifyStmt(); : else if (MATCH("DECLARECURSOR", 13)) : return_value = _readDeclareCursorStmt(); 0.00 : 5fd860: e8 3b cd ff ff callq 5fa5a0 <_readDeclareCursorStmt> 0.00 : 5fd865: 0f 1f 00 nopl (%rax) : return_value = _readRangeTblEntry(); : else if (MATCH("RANGETBLFUNCTION", 16)) : return_value = _readRangeTblFunction(); : else if (MATCH("NOTIFY", 6)) : return_value = _readNotifyStmt(); : else if (MATCH("DECLARECURSOR", 13)) 0.00 : 5fd868: e9 7b fc ff ff jmpq 5fd4e8 0.00 : 5fd86d: 0f 1f 00 nopl (%rax) : else if (MATCH("WINDOWFUNC", 10)) : return_value = _readWindowFunc(); : else if (MATCH("ARRAYREF", 8)) : return_value = _readArrayRef(); : else if (MATCH("FUNCEXPR", 8)) : return_value = _readFuncExpr(); 0.00 : 5fd870: e8 6b d7 ff ff callq 5fafe0 <_readFuncExpr> 0.00 : 5fd875: 0f 1f 00 nopl (%rax) : return_value = _readAggref(); : else if (MATCH("WINDOWFUNC", 10)) : return_value = _readWindowFunc(); : else if (MATCH("ARRAYREF", 8)) : return_value = _readArrayRef(); : else if (MATCH("FUNCEXPR", 8)) 0.00 : 5fd878: e9 6b fc ff ff jmpq 5fd4e8 0.00 : 5fd87d: 0f 1f 00 nopl (%rax) : return_value = _readCoerceToDomainValue(); : else if (MATCH("SETTODEFAULT", 12)) : return_value = _readSetToDefault(); : else if (MATCH("CURRENTOFEXPR", 13)) : return_value = _readCurrentOfExpr(); : else if (MATCH("TARGETENTRY", 11)) 0.00 : 5fd880: bf 81 66 89 00 mov $0x896681,%edi 0.00 : 5fd885: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 5fd88a: 48 89 de mov %rbx,%rsi 0.00 : 5fd88d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd88f: 0f 84 e8 09 00 00 je 5fe27d : return_value = _readTargetEntry(); : else if (MATCH("RANGETBLREF", 11)) 0.00 : 5fd895: bf 5c 5c 89 00 mov $0x895c5c,%edi 0.00 : 5fd89a: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 5fd89f: 48 89 de mov %rbx,%rsi 0.00 : 5fd8a2: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd8a4: 0f 85 de f9 ff ff jne 5fd288 : * _readRangeTblRef : */ : static RangeTblRef * : _readRangeTblRef(void) : { : READ_LOCALS(RangeTblRef); 0.00 : 5fd8aa: 48 8b 3d af cf 5b 00 mov 0x5bcfaf(%rip),%rdi # bba860 : : READ_INT_FIELD(rtindex); 0.00 : 5fd8b1: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readRangeTblRef : */ : static RangeTblRef * : _readRangeTblRef(void) : { : READ_LOCALS(RangeTblRef); 0.00 : 5fd8b5: be 08 00 00 00 mov $0x8,%esi 0.00 : 5fd8ba: e8 51 b5 19 00 callq 798e10 : : READ_INT_FIELD(rtindex); 0.00 : 5fd8bf: 48 89 df mov %rbx,%rdi : * _readRangeTblRef : */ : static RangeTblRef * : _readRangeTblRef(void) : { : READ_LOCALS(RangeTblRef); 0.00 : 5fd8c2: c7 00 56 01 00 00 movl $0x156,(%rax) 0.00 : 5fd8c8: 49 89 c4 mov %rax,%r12 : : READ_INT_FIELD(rtindex); 0.00 : 5fd8cb: e8 60 16 00 00 callq 5fef30 0.00 : 5fd8d0: 48 89 df mov %rbx,%rdi 0.00 : 5fd8d3: e8 58 16 00 00 callq 5fef30 0.00 : 5fd8d8: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fd8dd: 48 89 c7 mov %rax,%rdi 0.00 : 5fd8e0: 31 f6 xor %esi,%esi 0.00 : 5fd8e2: e8 a9 c2 e6 ff callq 469b90 0.00 : 5fd8e7: 41 89 44 24 04 mov %eax,0x4(%r12) 0.00 : 5fd8ec: 4c 89 e0 mov %r12,%rax : return_value = _readSetToDefault(); : else if (MATCH("CURRENTOFEXPR", 13)) : return_value = _readCurrentOfExpr(); : else if (MATCH("TARGETENTRY", 11)) : return_value = _readTargetEntry(); : else if (MATCH("RANGETBLREF", 11)) 0.00 : 5fd8ef: e9 f4 fb ff ff jmpq 5fd4e8 0.00 : 5fd8f4: 0f 1f 40 00 nopl 0x0(%rax) : else if (MATCH("OPEXPR", 6)) : return_value = _readOpExpr(); : else if (MATCH("DISTINCTEXPR", 12)) : return_value = _readDistinctExpr(); : else if (MATCH("NULLIFEXPR", 10)) : return_value = _readNullIfExpr(); 0.00 : 5fd8f8: e8 b3 da ff ff callq 5fb3b0 <_readNullIfExpr> 0.00 : 5fd8fd: 0f 1f 00 nopl (%rax) : return_value = _readNamedArgExpr(); : else if (MATCH("OPEXPR", 6)) : return_value = _readOpExpr(); : else if (MATCH("DISTINCTEXPR", 12)) : return_value = _readDistinctExpr(); : else if (MATCH("NULLIFEXPR", 10)) 0.00 : 5fd900: e9 e3 fb ff ff jmpq 5fd4e8 0.00 : 5fd905: 0f 1f 00 nopl (%rax) : return_value = _readCurrentOfExpr(); : else if (MATCH("TARGETENTRY", 11)) : return_value = _readTargetEntry(); : else if (MATCH("RANGETBLREF", 11)) : return_value = _readRangeTblRef(); : else if (MATCH("JOINEXPR", 8)) 0.00 : 5fd908: bf e5 66 89 00 mov $0x8966e5,%edi 0.00 : 5fd90d: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 5fd912: 48 89 de mov %rbx,%rsi 0.00 : 5fd915: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd917: 0f 84 70 09 00 00 je 5fe28d : return_value = _readJoinExpr(); : else if (MATCH("FROMEXPR", 8)) 0.00 : 5fd91d: bf 25 67 89 00 mov $0x896725,%edi 0.00 : 5fd922: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 5fd927: 48 89 de mov %rbx,%rsi 0.00 : 5fd92a: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fd92c: 0f 85 56 f9 ff ff jne 5fd288 : * _readFromExpr : */ : static FromExpr * : _readFromExpr(void) : { : READ_LOCALS(FromExpr); 0.00 : 5fd932: 48 8b 3d 27 cf 5b 00 mov 0x5bcf27(%rip),%rdi # bba860 : : READ_NODE_FIELD(fromlist); 0.00 : 5fd939: 4c 8d 65 e8 lea -0x18(%rbp),%r12 : * _readFromExpr : */ : static FromExpr * : _readFromExpr(void) : { : READ_LOCALS(FromExpr); 0.00 : 5fd93d: be 18 00 00 00 mov $0x18,%esi 0.00 : 5fd942: e8 c9 b4 19 00 callq 798e10 : : READ_NODE_FIELD(fromlist); 0.00 : 5fd947: 4c 89 e7 mov %r12,%rdi : * _readFromExpr : */ : static FromExpr * : _readFromExpr(void) : { : READ_LOCALS(FromExpr); 0.00 : 5fd94a: c7 00 58 01 00 00 movl $0x158,(%rax) 0.00 : 5fd950: 48 89 c3 mov %rax,%rbx : : READ_NODE_FIELD(fromlist); 0.00 : 5fd953: e8 d8 15 00 00 callq 5fef30 0.00 : 5fd958: 31 f6 xor %esi,%esi 0.00 : 5fd95a: 31 ff xor %edi,%edi 0.00 : 5fd95c: e8 1f 17 00 00 callq 5ff080 : READ_NODE_FIELD(quals); 0.00 : 5fd961: 4c 89 e7 mov %r12,%rdi : static FromExpr * : _readFromExpr(void) : { : READ_LOCALS(FromExpr); : : READ_NODE_FIELD(fromlist); 0.00 : 5fd964: 48 89 43 08 mov %rax,0x8(%rbx) : READ_NODE_FIELD(quals); 0.00 : 5fd968: e8 c3 15 00 00 callq 5fef30 0.00 : 5fd96d: 31 f6 xor %esi,%esi 0.00 : 5fd96f: 31 ff xor %edi,%edi 0.00 : 5fd971: e8 0a 17 00 00 callq 5ff080 0.00 : 5fd976: 48 89 43 10 mov %rax,0x10(%rbx) 0.00 : 5fd97a: 48 89 d8 mov %rbx,%rax : return_value = _readTargetEntry(); : else if (MATCH("RANGETBLREF", 11)) : return_value = _readRangeTblRef(); : else if (MATCH("JOINEXPR", 8)) : return_value = _readJoinExpr(); : else if (MATCH("FROMEXPR", 8)) 0.00 : 5fd97d: e9 66 fb ff ff jmpq 5fd4e8 0.00 : 5fd982: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : else if (MATCH("NULLIFEXPR", 10)) : return_value = _readNullIfExpr(); : else if (MATCH("SCALARARRAYOPEXPR", 17)) : return_value = _readScalarArrayOpExpr(); : else if (MATCH("BOOLEXPR", 8)) : return_value = _readBoolExpr(); 0.00 : 5fd988: e8 d3 ef ff ff callq 5fc960 <_readBoolExpr> 0.00 : 5fd98d: 0f 1f 00 nopl (%rax) : return_value = _readDistinctExpr(); : else if (MATCH("NULLIFEXPR", 10)) : return_value = _readNullIfExpr(); : else if (MATCH("SCALARARRAYOPEXPR", 17)) : return_value = _readScalarArrayOpExpr(); : else if (MATCH("BOOLEXPR", 8)) 0.00 : 5fd990: e9 53 fb ff ff jmpq 5fd4e8 0.00 : 5fd995: 0f 1f 00 nopl (%rax) : * _readSubLink : */ : static SubLink * : _readSubLink(void) : { : READ_LOCALS(SubLink); 0.00 : 5fd998: 48 8b 3d c1 ce 5b 00 mov 0x5bcec1(%rip),%rdi # bba860 : : READ_ENUM_FIELD(subLinkType, SubLinkType); 0.00 : 5fd99f: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readSubLink : */ : static SubLink * : _readSubLink(void) : { : READ_LOCALS(SubLink); 0.00 : 5fd9a3: be 30 00 00 00 mov $0x30,%esi 0.00 : 5fd9a8: e8 63 b4 19 00 callq 798e10 : : READ_ENUM_FIELD(subLinkType, SubLinkType); 0.00 : 5fd9ad: 48 89 df mov %rbx,%rdi : * _readSubLink : */ : static SubLink * : _readSubLink(void) : { : READ_LOCALS(SubLink); 0.00 : 5fd9b0: c7 00 3c 01 00 00 movl $0x13c,(%rax) 0.00 : 5fd9b6: 49 89 c4 mov %rax,%r12 : : READ_ENUM_FIELD(subLinkType, SubLinkType); 0.00 : 5fd9b9: e8 72 15 00 00 callq 5fef30 0.00 : 5fd9be: 48 89 df mov %rbx,%rdi 0.00 : 5fd9c1: e8 6a 15 00 00 callq 5fef30 0.00 : 5fd9c6: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fd9cb: 31 f6 xor %esi,%esi 0.00 : 5fd9cd: 48 89 c7 mov %rax,%rdi 0.00 : 5fd9d0: e8 bb c1 e6 ff callq 469b90 : READ_INT_FIELD(subLinkId); 0.00 : 5fd9d5: 48 89 df mov %rbx,%rdi : static SubLink * : _readSubLink(void) : { : READ_LOCALS(SubLink); : : READ_ENUM_FIELD(subLinkType, SubLinkType); 0.00 : 5fd9d8: 41 89 44 24 04 mov %eax,0x4(%r12) : READ_INT_FIELD(subLinkId); 0.00 : 5fd9dd: e8 4e 15 00 00 callq 5fef30 0.00 : 5fd9e2: 48 89 df mov %rbx,%rdi 0.00 : 5fd9e5: e8 46 15 00 00 callq 5fef30 0.00 : 5fd9ea: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fd9ef: 31 f6 xor %esi,%esi 0.00 : 5fd9f1: 48 89 c7 mov %rax,%rdi 0.00 : 5fd9f4: e8 97 c1 e6 ff callq 469b90 : READ_NODE_FIELD(testexpr); 0.00 : 5fd9f9: 48 89 df mov %rbx,%rdi : _readSubLink(void) : { : READ_LOCALS(SubLink); : : READ_ENUM_FIELD(subLinkType, SubLinkType); : READ_INT_FIELD(subLinkId); 0.00 : 5fd9fc: 41 89 44 24 08 mov %eax,0x8(%r12) : READ_NODE_FIELD(testexpr); 0.00 : 5fda01: e8 2a 15 00 00 callq 5fef30 0.00 : 5fda06: 31 f6 xor %esi,%esi 0.00 : 5fda08: 31 ff xor %edi,%edi 0.00 : 5fda0a: e8 71 16 00 00 callq 5ff080 : READ_NODE_FIELD(operName); 0.00 : 5fda0f: 48 89 df mov %rbx,%rdi : { : READ_LOCALS(SubLink); : : READ_ENUM_FIELD(subLinkType, SubLinkType); : READ_INT_FIELD(subLinkId); : READ_NODE_FIELD(testexpr); 0.00 : 5fda12: 49 89 44 24 10 mov %rax,0x10(%r12) : READ_NODE_FIELD(operName); 0.00 : 5fda17: e8 14 15 00 00 callq 5fef30 0.00 : 5fda1c: 31 f6 xor %esi,%esi 0.00 : 5fda1e: 31 ff xor %edi,%edi 0.00 : 5fda20: e8 5b 16 00 00 callq 5ff080 : READ_NODE_FIELD(subselect); 0.00 : 5fda25: 48 89 df mov %rbx,%rdi : READ_LOCALS(SubLink); : : READ_ENUM_FIELD(subLinkType, SubLinkType); : READ_INT_FIELD(subLinkId); : READ_NODE_FIELD(testexpr); : READ_NODE_FIELD(operName); 0.00 : 5fda28: 49 89 44 24 18 mov %rax,0x18(%r12) : READ_NODE_FIELD(subselect); 0.00 : 5fda2d: e8 fe 14 00 00 callq 5fef30 0.00 : 5fda32: 31 f6 xor %esi,%esi 0.00 : 5fda34: 31 ff xor %edi,%edi 0.00 : 5fda36: e8 45 16 00 00 callq 5ff080 : READ_LOCATION_FIELD(location); 0.00 : 5fda3b: 48 89 df mov %rbx,%rdi : : READ_ENUM_FIELD(subLinkType, SubLinkType); : READ_INT_FIELD(subLinkId); : READ_NODE_FIELD(testexpr); : READ_NODE_FIELD(operName); : READ_NODE_FIELD(subselect); 0.00 : 5fda3e: 49 89 44 24 20 mov %rax,0x20(%r12) : READ_LOCATION_FIELD(location); 0.00 : 5fda43: e8 e8 14 00 00 callq 5fef30 0.00 : 5fda48: 48 89 df mov %rbx,%rdi 0.00 : 5fda4b: e8 e0 14 00 00 callq 5fef30 0.00 : 5fda50: 41 c7 44 24 28 ff ff movl $0xffffffff,0x28(%r12) 0.00 : 5fda57: ff ff 0.00 : 5fda59: 4c 89 e0 mov %r12,%rax : return_value = _readNullIfExpr(); : else if (MATCH("SCALARARRAYOPEXPR", 17)) : return_value = _readScalarArrayOpExpr(); : else if (MATCH("BOOLEXPR", 8)) : return_value = _readBoolExpr(); : else if (MATCH("SUBLINK", 7)) 0.00 : 5fda5c: e9 87 fa ff ff jmpq 5fd4e8 0.00 : 5fda61: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : return_value = _readSubLink(); : else if (MATCH("FIELDSELECT", 11)) : return_value = _readFieldSelect(); 0.00 : 5fda68: e8 73 db ff ff callq 5fb5e0 <_readFieldSelect> 0.00 : 5fda6d: 0f 1f 00 nopl (%rax) : return_value = _readScalarArrayOpExpr(); : else if (MATCH("BOOLEXPR", 8)) : return_value = _readBoolExpr(); : else if (MATCH("SUBLINK", 7)) : return_value = _readSubLink(); : else if (MATCH("FIELDSELECT", 11)) 0.00 : 5fda70: e9 73 fa ff ff jmpq 5fd4e8 0.00 : 5fda75: 0f 1f 00 nopl (%rax) 0.00 : 5fda78: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5fda7f: 00 : return_value = _readFieldSelect(); : else if (MATCH("FIELDSTORE", 10)) : return_value = _readFieldStore(); 0.00 : 5fda80: e8 3b dc ff ff callq 5fb6c0 <_readFieldStore> 0.00 : 5fda85: 0f 1f 00 nopl (%rax) : return_value = _readBoolExpr(); : else if (MATCH("SUBLINK", 7)) : return_value = _readSubLink(); : else if (MATCH("FIELDSELECT", 11)) : return_value = _readFieldSelect(); : else if (MATCH("FIELDSTORE", 10)) 0.00 : 5fda88: e9 5b fa ff ff jmpq 5fd4e8 0.00 : 5fda8d: 0f 1f 00 nopl (%rax) : else if (MATCH("CASETESTEXPR", 12)) : return_value = _readCaseTestExpr(); : else if (MATCH("ARRAY", 5)) : return_value = _readArrayExpr(); : else if (MATCH("ROW", 3)) : return_value = _readRowExpr(); 0.00 : 5fda90: e8 9b e3 ff ff callq 5fbe30 <_readRowExpr> 0.00 : 5fda95: 0f 1f 00 nopl (%rax) : return_value = _readCaseWhen(); : else if (MATCH("CASETESTEXPR", 12)) : return_value = _readCaseTestExpr(); : else if (MATCH("ARRAY", 5)) : return_value = _readArrayExpr(); : else if (MATCH("ROW", 3)) 0.00 : 5fda98: e9 4b fa ff ff jmpq 5fd4e8 0.00 : 5fda9d: 0f 1f 00 nopl (%rax) : else if (MATCH("ROWCOMPARE", 10)) : return_value = _readRowCompareExpr(); : else if (MATCH("COALESCE", 8)) : return_value = _readCoalesceExpr(); : else if (MATCH("MINMAX", 6)) : return_value = _readMinMaxExpr(); 0.00 : 5fdaa0: e8 0b e5 ff ff callq 5fbfb0 <_readMinMaxExpr> 0.00 : 5fdaa5: 0f 1f 00 nopl (%rax) : return_value = _readRowExpr(); : else if (MATCH("ROWCOMPARE", 10)) : return_value = _readRowCompareExpr(); : else if (MATCH("COALESCE", 8)) : return_value = _readCoalesceExpr(); : else if (MATCH("MINMAX", 6)) 0.00 : 5fdaa8: e9 3b fa ff ff jmpq 5fd4e8 0.00 : 5fdaad: 0f 1f 00 nopl (%rax) : * _readQuery : */ : static Query * : _readQuery(void) : { : READ_LOCALS(Query); 0.00 : 5fdab0: 48 8b 3d a9 cd 5b 00 mov 0x5bcda9(%rip),%rdi # bba860 : : READ_ENUM_FIELD(commandType, CmdType); 0.00 : 5fdab7: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readQuery : */ : static Query * : _readQuery(void) : { : READ_LOCALS(Query); 0.00 : 5fdabb: be b0 00 00 00 mov $0xb0,%esi 0.00 : 5fdac0: e8 4b b3 19 00 callq 798e10 : : READ_ENUM_FIELD(commandType, CmdType); 0.00 : 5fdac5: 48 89 df mov %rbx,%rdi : * _readQuery : */ : static Query * : _readQuery(void) : { : READ_LOCALS(Query); 0.00 : 5fdac8: c7 00 bc 02 00 00 movl $0x2bc,(%rax) 0.00 : 5fdace: 49 89 c4 mov %rax,%r12 : : READ_ENUM_FIELD(commandType, CmdType); 0.00 : 5fdad1: e8 5a 14 00 00 callq 5fef30 0.00 : 5fdad6: 48 89 df mov %rbx,%rdi 0.00 : 5fdad9: e8 52 14 00 00 callq 5fef30 0.00 : 5fdade: 31 f6 xor %esi,%esi 0.00 : 5fdae0: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fdae5: 48 89 c7 mov %rax,%rdi 0.00 : 5fdae8: e8 a3 c0 e6 ff callq 469b90 : READ_ENUM_FIELD(querySource, QuerySource); 0.00 : 5fdaed: 48 89 df mov %rbx,%rdi : static Query * : _readQuery(void) : { : READ_LOCALS(Query); : : READ_ENUM_FIELD(commandType, CmdType); 0.00 : 5fdaf0: 41 89 44 24 04 mov %eax,0x4(%r12) : READ_ENUM_FIELD(querySource, QuerySource); 0.00 : 5fdaf5: e8 36 14 00 00 callq 5fef30 0.00 : 5fdafa: 48 89 df mov %rbx,%rdi 0.00 : 5fdafd: e8 2e 14 00 00 callq 5fef30 0.00 : 5fdb02: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fdb07: 31 f6 xor %esi,%esi 0.00 : 5fdb09: 48 89 c7 mov %rax,%rdi 0.00 : 5fdb0c: e8 7f c0 e6 ff callq 469b90 : local_node->queryId = 0; /* not saved in output format */ : READ_BOOL_FIELD(canSetTag); 0.00 : 5fdb11: 48 89 df mov %rbx,%rdi : _readQuery(void) : { : READ_LOCALS(Query); : : READ_ENUM_FIELD(commandType, CmdType); : READ_ENUM_FIELD(querySource, QuerySource); 0.00 : 5fdb14: 41 89 44 24 08 mov %eax,0x8(%r12) : local_node->queryId = 0; /* not saved in output format */ 0.00 : 5fdb19: 41 c7 44 24 0c 00 00 movl $0x0,0xc(%r12) 0.00 : 5fdb20: 00 00 : READ_BOOL_FIELD(canSetTag); 0.00 : 5fdb22: e8 09 14 00 00 callq 5fef30 0.00 : 5fdb27: 48 89 df mov %rbx,%rdi 0.00 : 5fdb2a: e8 01 14 00 00 callq 5fef30 0.00 : 5fdb2f: 80 38 74 cmpb $0x74,(%rax) : READ_NODE_FIELD(utilityStmt); 0.00 : 5fdb32: 48 89 df mov %rbx,%rdi : READ_LOCALS(Query); : : READ_ENUM_FIELD(commandType, CmdType); : READ_ENUM_FIELD(querySource, QuerySource); : local_node->queryId = 0; /* not saved in output format */ : READ_BOOL_FIELD(canSetTag); 0.00 : 5fdb35: 41 0f 94 44 24 10 sete 0x10(%r12) : READ_NODE_FIELD(utilityStmt); 0.00 : 5fdb3b: e8 f0 13 00 00 callq 5fef30 0.00 : 5fdb40: 31 f6 xor %esi,%esi 0.00 : 5fdb42: 31 ff xor %edi,%edi 0.00 : 5fdb44: e8 37 15 00 00 callq 5ff080 : READ_INT_FIELD(resultRelation); 0.00 : 5fdb49: 48 89 df mov %rbx,%rdi : : READ_ENUM_FIELD(commandType, CmdType); : READ_ENUM_FIELD(querySource, QuerySource); : local_node->queryId = 0; /* not saved in output format */ : READ_BOOL_FIELD(canSetTag); : READ_NODE_FIELD(utilityStmt); 0.00 : 5fdb4c: 49 89 44 24 18 mov %rax,0x18(%r12) : READ_INT_FIELD(resultRelation); 0.00 : 5fdb51: e8 da 13 00 00 callq 5fef30 0.00 : 5fdb56: 48 89 df mov %rbx,%rdi 0.00 : 5fdb59: e8 d2 13 00 00 callq 5fef30 0.00 : 5fdb5e: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fdb63: 31 f6 xor %esi,%esi 0.00 : 5fdb65: 48 89 c7 mov %rax,%rdi 0.00 : 5fdb68: e8 23 c0 e6 ff callq 469b90 : READ_BOOL_FIELD(hasAggs); 0.00 : 5fdb6d: 48 89 df mov %rbx,%rdi : READ_ENUM_FIELD(commandType, CmdType); : READ_ENUM_FIELD(querySource, QuerySource); : local_node->queryId = 0; /* not saved in output format */ : READ_BOOL_FIELD(canSetTag); : READ_NODE_FIELD(utilityStmt); : READ_INT_FIELD(resultRelation); 0.00 : 5fdb70: 41 89 44 24 20 mov %eax,0x20(%r12) : READ_BOOL_FIELD(hasAggs); 0.00 : 5fdb75: e8 b6 13 00 00 callq 5fef30 0.00 : 5fdb7a: 48 89 df mov %rbx,%rdi 0.00 : 5fdb7d: e8 ae 13 00 00 callq 5fef30 0.00 : 5fdb82: 80 38 74 cmpb $0x74,(%rax) : READ_BOOL_FIELD(hasWindowFuncs); 0.00 : 5fdb85: 48 89 df mov %rbx,%rdi : READ_ENUM_FIELD(querySource, QuerySource); : local_node->queryId = 0; /* not saved in output format */ : READ_BOOL_FIELD(canSetTag); : READ_NODE_FIELD(utilityStmt); : READ_INT_FIELD(resultRelation); : READ_BOOL_FIELD(hasAggs); 0.00 : 5fdb88: 41 0f 94 44 24 24 sete 0x24(%r12) : READ_BOOL_FIELD(hasWindowFuncs); 0.00 : 5fdb8e: e8 9d 13 00 00 callq 5fef30 0.00 : 5fdb93: 48 89 df mov %rbx,%rdi 0.00 : 5fdb96: e8 95 13 00 00 callq 5fef30 0.00 : 5fdb9b: 80 38 74 cmpb $0x74,(%rax) : READ_BOOL_FIELD(hasSubLinks); 0.00 : 5fdb9e: 48 89 df mov %rbx,%rdi : local_node->queryId = 0; /* not saved in output format */ : READ_BOOL_FIELD(canSetTag); : READ_NODE_FIELD(utilityStmt); : READ_INT_FIELD(resultRelation); : READ_BOOL_FIELD(hasAggs); : READ_BOOL_FIELD(hasWindowFuncs); 0.00 : 5fdba1: 41 0f 94 44 24 25 sete 0x25(%r12) : READ_BOOL_FIELD(hasSubLinks); 0.00 : 5fdba7: e8 84 13 00 00 callq 5fef30 0.00 : 5fdbac: 48 89 df mov %rbx,%rdi 0.00 : 5fdbaf: e8 7c 13 00 00 callq 5fef30 0.00 : 5fdbb4: 80 38 74 cmpb $0x74,(%rax) : READ_BOOL_FIELD(hasDistinctOn); 0.00 : 5fdbb7: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(canSetTag); : READ_NODE_FIELD(utilityStmt); : READ_INT_FIELD(resultRelation); : READ_BOOL_FIELD(hasAggs); : READ_BOOL_FIELD(hasWindowFuncs); : READ_BOOL_FIELD(hasSubLinks); 0.00 : 5fdbba: 41 0f 94 44 24 26 sete 0x26(%r12) : READ_BOOL_FIELD(hasDistinctOn); 0.00 : 5fdbc0: e8 6b 13 00 00 callq 5fef30 0.00 : 5fdbc5: 48 89 df mov %rbx,%rdi 0.00 : 5fdbc8: e8 63 13 00 00 callq 5fef30 0.00 : 5fdbcd: 80 38 74 cmpb $0x74,(%rax) : READ_BOOL_FIELD(hasRecursive); 0.00 : 5fdbd0: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(utilityStmt); : READ_INT_FIELD(resultRelation); : READ_BOOL_FIELD(hasAggs); : READ_BOOL_FIELD(hasWindowFuncs); : READ_BOOL_FIELD(hasSubLinks); : READ_BOOL_FIELD(hasDistinctOn); 0.00 : 5fdbd3: 41 0f 94 44 24 27 sete 0x27(%r12) : READ_BOOL_FIELD(hasRecursive); 0.00 : 5fdbd9: e8 52 13 00 00 callq 5fef30 0.00 : 5fdbde: 48 89 df mov %rbx,%rdi 0.00 : 5fdbe1: e8 4a 13 00 00 callq 5fef30 0.00 : 5fdbe6: 80 38 74 cmpb $0x74,(%rax) : READ_BOOL_FIELD(hasModifyingCTE); 0.00 : 5fdbe9: 48 89 df mov %rbx,%rdi : READ_INT_FIELD(resultRelation); : READ_BOOL_FIELD(hasAggs); : READ_BOOL_FIELD(hasWindowFuncs); : READ_BOOL_FIELD(hasSubLinks); : READ_BOOL_FIELD(hasDistinctOn); : READ_BOOL_FIELD(hasRecursive); 0.00 : 5fdbec: 41 0f 94 44 24 28 sete 0x28(%r12) : READ_BOOL_FIELD(hasModifyingCTE); 0.00 : 5fdbf2: e8 39 13 00 00 callq 5fef30 0.00 : 5fdbf7: 48 89 df mov %rbx,%rdi 0.00 : 5fdbfa: e8 31 13 00 00 callq 5fef30 0.00 : 5fdbff: 80 38 74 cmpb $0x74,(%rax) : READ_BOOL_FIELD(hasForUpdate); 0.00 : 5fdc02: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(hasAggs); : READ_BOOL_FIELD(hasWindowFuncs); : READ_BOOL_FIELD(hasSubLinks); : READ_BOOL_FIELD(hasDistinctOn); : READ_BOOL_FIELD(hasRecursive); : READ_BOOL_FIELD(hasModifyingCTE); 0.00 : 5fdc05: 41 0f 94 44 24 29 sete 0x29(%r12) : READ_BOOL_FIELD(hasForUpdate); 0.00 : 5fdc0b: e8 20 13 00 00 callq 5fef30 0.00 : 5fdc10: 48 89 df mov %rbx,%rdi 0.00 : 5fdc13: e8 18 13 00 00 callq 5fef30 0.00 : 5fdc18: 80 38 74 cmpb $0x74,(%rax) : READ_BOOL_FIELD(hasRowSecurity); 0.00 : 5fdc1b: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(hasWindowFuncs); : READ_BOOL_FIELD(hasSubLinks); : READ_BOOL_FIELD(hasDistinctOn); : READ_BOOL_FIELD(hasRecursive); : READ_BOOL_FIELD(hasModifyingCTE); : READ_BOOL_FIELD(hasForUpdate); 0.00 : 5fdc1e: 41 0f 94 44 24 2a sete 0x2a(%r12) : READ_BOOL_FIELD(hasRowSecurity); 0.00 : 5fdc24: e8 07 13 00 00 callq 5fef30 0.00 : 5fdc29: 48 89 df mov %rbx,%rdi 0.00 : 5fdc2c: e8 ff 12 00 00 callq 5fef30 0.00 : 5fdc31: 80 38 74 cmpb $0x74,(%rax) : READ_NODE_FIELD(cteList); 0.00 : 5fdc34: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(hasSubLinks); : READ_BOOL_FIELD(hasDistinctOn); : READ_BOOL_FIELD(hasRecursive); : READ_BOOL_FIELD(hasModifyingCTE); : READ_BOOL_FIELD(hasForUpdate); : READ_BOOL_FIELD(hasRowSecurity); 0.00 : 5fdc37: 41 0f 94 44 24 2b sete 0x2b(%r12) : READ_NODE_FIELD(cteList); 0.00 : 5fdc3d: e8 ee 12 00 00 callq 5fef30 0.00 : 5fdc42: 31 f6 xor %esi,%esi 0.00 : 5fdc44: 31 ff xor %edi,%edi 0.00 : 5fdc46: e8 35 14 00 00 callq 5ff080 : READ_NODE_FIELD(rtable); 0.00 : 5fdc4b: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(hasDistinctOn); : READ_BOOL_FIELD(hasRecursive); : READ_BOOL_FIELD(hasModifyingCTE); : READ_BOOL_FIELD(hasForUpdate); : READ_BOOL_FIELD(hasRowSecurity); : READ_NODE_FIELD(cteList); 0.00 : 5fdc4e: 49 89 44 24 30 mov %rax,0x30(%r12) : READ_NODE_FIELD(rtable); 0.00 : 5fdc53: e8 d8 12 00 00 callq 5fef30 0.00 : 5fdc58: 31 f6 xor %esi,%esi 0.00 : 5fdc5a: 31 ff xor %edi,%edi 0.00 : 5fdc5c: e8 1f 14 00 00 callq 5ff080 : READ_NODE_FIELD(jointree); 0.00 : 5fdc61: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(hasRecursive); : READ_BOOL_FIELD(hasModifyingCTE); : READ_BOOL_FIELD(hasForUpdate); : READ_BOOL_FIELD(hasRowSecurity); : READ_NODE_FIELD(cteList); : READ_NODE_FIELD(rtable); 0.00 : 5fdc64: 49 89 44 24 38 mov %rax,0x38(%r12) : READ_NODE_FIELD(jointree); 0.00 : 5fdc69: e8 c2 12 00 00 callq 5fef30 0.00 : 5fdc6e: 31 f6 xor %esi,%esi 0.00 : 5fdc70: 31 ff xor %edi,%edi 0.00 : 5fdc72: e8 09 14 00 00 callq 5ff080 : READ_NODE_FIELD(targetList); 0.00 : 5fdc77: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(hasModifyingCTE); : READ_BOOL_FIELD(hasForUpdate); : READ_BOOL_FIELD(hasRowSecurity); : READ_NODE_FIELD(cteList); : READ_NODE_FIELD(rtable); : READ_NODE_FIELD(jointree); 0.00 : 5fdc7a: 49 89 44 24 40 mov %rax,0x40(%r12) : READ_NODE_FIELD(targetList); 0.00 : 5fdc7f: e8 ac 12 00 00 callq 5fef30 0.00 : 5fdc84: 31 f6 xor %esi,%esi 0.00 : 5fdc86: 31 ff xor %edi,%edi 0.00 : 5fdc88: e8 f3 13 00 00 callq 5ff080 : READ_NODE_FIELD(withCheckOptions); 0.00 : 5fdc8d: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(hasForUpdate); : READ_BOOL_FIELD(hasRowSecurity); : READ_NODE_FIELD(cteList); : READ_NODE_FIELD(rtable); : READ_NODE_FIELD(jointree); : READ_NODE_FIELD(targetList); 0.00 : 5fdc90: 49 89 44 24 48 mov %rax,0x48(%r12) : READ_NODE_FIELD(withCheckOptions); 0.00 : 5fdc95: e8 96 12 00 00 callq 5fef30 0.00 : 5fdc9a: 31 f6 xor %esi,%esi 0.00 : 5fdc9c: 31 ff xor %edi,%edi 0.00 : 5fdc9e: e8 dd 13 00 00 callq 5ff080 : READ_NODE_FIELD(returningList); 0.00 : 5fdca3: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(hasRowSecurity); : READ_NODE_FIELD(cteList); : READ_NODE_FIELD(rtable); : READ_NODE_FIELD(jointree); : READ_NODE_FIELD(targetList); : READ_NODE_FIELD(withCheckOptions); 0.00 : 5fdca6: 49 89 44 24 50 mov %rax,0x50(%r12) : READ_NODE_FIELD(returningList); 0.00 : 5fdcab: e8 80 12 00 00 callq 5fef30 0.00 : 5fdcb0: 31 f6 xor %esi,%esi 0.00 : 5fdcb2: 31 ff xor %edi,%edi 0.00 : 5fdcb4: e8 c7 13 00 00 callq 5ff080 : READ_NODE_FIELD(groupClause); 0.00 : 5fdcb9: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(cteList); : READ_NODE_FIELD(rtable); : READ_NODE_FIELD(jointree); : READ_NODE_FIELD(targetList); : READ_NODE_FIELD(withCheckOptions); : READ_NODE_FIELD(returningList); 0.00 : 5fdcbc: 49 89 44 24 58 mov %rax,0x58(%r12) : READ_NODE_FIELD(groupClause); 0.00 : 5fdcc1: e8 6a 12 00 00 callq 5fef30 0.00 : 5fdcc6: 31 f6 xor %esi,%esi 0.00 : 5fdcc8: 31 ff xor %edi,%edi 0.00 : 5fdcca: e8 b1 13 00 00 callq 5ff080 : READ_NODE_FIELD(havingQual); 0.00 : 5fdccf: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(rtable); : READ_NODE_FIELD(jointree); : READ_NODE_FIELD(targetList); : READ_NODE_FIELD(withCheckOptions); : READ_NODE_FIELD(returningList); : READ_NODE_FIELD(groupClause); 0.00 : 5fdcd2: 49 89 44 24 60 mov %rax,0x60(%r12) : READ_NODE_FIELD(havingQual); 0.00 : 5fdcd7: e8 54 12 00 00 callq 5fef30 0.00 : 5fdcdc: 31 f6 xor %esi,%esi 0.00 : 5fdcde: 31 ff xor %edi,%edi 0.00 : 5fdce0: e8 9b 13 00 00 callq 5ff080 : READ_NODE_FIELD(windowClause); 0.00 : 5fdce5: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(jointree); : READ_NODE_FIELD(targetList); : READ_NODE_FIELD(withCheckOptions); : READ_NODE_FIELD(returningList); : READ_NODE_FIELD(groupClause); : READ_NODE_FIELD(havingQual); 0.00 : 5fdce8: 49 89 44 24 68 mov %rax,0x68(%r12) : READ_NODE_FIELD(windowClause); 0.00 : 5fdced: e8 3e 12 00 00 callq 5fef30 0.00 : 5fdcf2: 31 f6 xor %esi,%esi 0.00 : 5fdcf4: 31 ff xor %edi,%edi 0.00 : 5fdcf6: e8 85 13 00 00 callq 5ff080 : READ_NODE_FIELD(distinctClause); 0.00 : 5fdcfb: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(targetList); : READ_NODE_FIELD(withCheckOptions); : READ_NODE_FIELD(returningList); : READ_NODE_FIELD(groupClause); : READ_NODE_FIELD(havingQual); : READ_NODE_FIELD(windowClause); 0.00 : 5fdcfe: 49 89 44 24 70 mov %rax,0x70(%r12) : READ_NODE_FIELD(distinctClause); 0.00 : 5fdd03: e8 28 12 00 00 callq 5fef30 0.00 : 5fdd08: 31 f6 xor %esi,%esi 0.00 : 5fdd0a: 31 ff xor %edi,%edi 0.00 : 5fdd0c: e8 6f 13 00 00 callq 5ff080 : READ_NODE_FIELD(sortClause); 0.00 : 5fdd11: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(withCheckOptions); : READ_NODE_FIELD(returningList); : READ_NODE_FIELD(groupClause); : READ_NODE_FIELD(havingQual); : READ_NODE_FIELD(windowClause); : READ_NODE_FIELD(distinctClause); 0.00 : 5fdd14: 49 89 44 24 78 mov %rax,0x78(%r12) : READ_NODE_FIELD(sortClause); 0.00 : 5fdd19: e8 12 12 00 00 callq 5fef30 0.00 : 5fdd1e: 31 f6 xor %esi,%esi 0.00 : 5fdd20: 31 ff xor %edi,%edi 0.00 : 5fdd22: e8 59 13 00 00 callq 5ff080 : READ_NODE_FIELD(limitOffset); 0.00 : 5fdd27: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(returningList); : READ_NODE_FIELD(groupClause); : READ_NODE_FIELD(havingQual); : READ_NODE_FIELD(windowClause); : READ_NODE_FIELD(distinctClause); : READ_NODE_FIELD(sortClause); 0.00 : 5fdd2a: 49 89 84 24 80 00 00 mov %rax,0x80(%r12) 0.00 : 5fdd31: 00 : READ_NODE_FIELD(limitOffset); 0.00 : 5fdd32: e8 f9 11 00 00 callq 5fef30 0.00 : 5fdd37: 31 f6 xor %esi,%esi 0.00 : 5fdd39: 31 ff xor %edi,%edi 0.00 : 5fdd3b: e8 40 13 00 00 callq 5ff080 : READ_NODE_FIELD(limitCount); 0.00 : 5fdd40: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(groupClause); : READ_NODE_FIELD(havingQual); : READ_NODE_FIELD(windowClause); : READ_NODE_FIELD(distinctClause); : READ_NODE_FIELD(sortClause); : READ_NODE_FIELD(limitOffset); 0.00 : 5fdd43: 49 89 84 24 88 00 00 mov %rax,0x88(%r12) 0.00 : 5fdd4a: 00 : READ_NODE_FIELD(limitCount); 0.00 : 5fdd4b: e8 e0 11 00 00 callq 5fef30 0.00 : 5fdd50: 31 f6 xor %esi,%esi 0.00 : 5fdd52: 31 ff xor %edi,%edi 0.00 : 5fdd54: e8 27 13 00 00 callq 5ff080 : READ_NODE_FIELD(rowMarks); 0.00 : 5fdd59: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(havingQual); : READ_NODE_FIELD(windowClause); : READ_NODE_FIELD(distinctClause); : READ_NODE_FIELD(sortClause); : READ_NODE_FIELD(limitOffset); : READ_NODE_FIELD(limitCount); 0.00 : 5fdd5c: 49 89 84 24 90 00 00 mov %rax,0x90(%r12) 0.00 : 5fdd63: 00 : READ_NODE_FIELD(rowMarks); 0.00 : 5fdd64: e8 c7 11 00 00 callq 5fef30 0.00 : 5fdd69: 31 f6 xor %esi,%esi 0.00 : 5fdd6b: 31 ff xor %edi,%edi 0.00 : 5fdd6d: e8 0e 13 00 00 callq 5ff080 : READ_NODE_FIELD(setOperations); 0.00 : 5fdd72: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(windowClause); : READ_NODE_FIELD(distinctClause); : READ_NODE_FIELD(sortClause); : READ_NODE_FIELD(limitOffset); : READ_NODE_FIELD(limitCount); : READ_NODE_FIELD(rowMarks); 0.00 : 5fdd75: 49 89 84 24 98 00 00 mov %rax,0x98(%r12) 0.00 : 5fdd7c: 00 : READ_NODE_FIELD(setOperations); 0.00 : 5fdd7d: e8 ae 11 00 00 callq 5fef30 0.00 : 5fdd82: 31 f6 xor %esi,%esi 0.00 : 5fdd84: 31 ff xor %edi,%edi 0.00 : 5fdd86: e8 f5 12 00 00 callq 5ff080 : READ_NODE_FIELD(constraintDeps); 0.00 : 5fdd8b: 48 89 df mov %rbx,%rdi : READ_NODE_FIELD(distinctClause); : READ_NODE_FIELD(sortClause); : READ_NODE_FIELD(limitOffset); : READ_NODE_FIELD(limitCount); : READ_NODE_FIELD(rowMarks); : READ_NODE_FIELD(setOperations); 0.00 : 5fdd8e: 49 89 84 24 a0 00 00 mov %rax,0xa0(%r12) 0.00 : 5fdd95: 00 : READ_NODE_FIELD(constraintDeps); 0.00 : 5fdd96: e8 95 11 00 00 callq 5fef30 0.00 : 5fdd9b: 31 f6 xor %esi,%esi 0.00 : 5fdd9d: 31 ff xor %edi,%edi 0.00 : 5fdd9f: e8 dc 12 00 00 callq 5ff080 0.00 : 5fdda4: 49 89 84 24 a8 00 00 mov %rax,0xa8(%r12) 0.00 : 5fddab: 00 0.00 : 5fddac: 4c 89 e0 mov %r12,%rax : token = pg_strtok(&length); : : #define MATCH(tokname, namelen) \ : (length == namelen && memcmp(token, tokname, namelen) == 0) : : if (MATCH("QUERY", 5)) 0.00 : 5fddaf: e9 34 f7 ff ff jmpq 5fd4e8 0.00 : 5fddb4: 0f 1f 40 00 nopl 0x0(%rax) : * _readWithCheckOption : */ : static WithCheckOption * : _readWithCheckOption(void) : { : READ_LOCALS(WithCheckOption); 0.00 : 5fddb8: 48 8b 3d a1 ca 5b 00 mov 0x5bcaa1(%rip),%rdi # bba860 : : READ_STRING_FIELD(viewname); 0.00 : 5fddbf: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readWithCheckOption : */ : static WithCheckOption * : _readWithCheckOption(void) : { : READ_LOCALS(WithCheckOption); 0.00 : 5fddc3: be 20 00 00 00 mov $0x20,%esi 0.00 : 5fddc8: e8 43 b0 19 00 callq 798e10 : : READ_STRING_FIELD(viewname); 0.00 : 5fddcd: 48 89 df mov %rbx,%rdi : * _readWithCheckOption : */ : static WithCheckOption * : _readWithCheckOption(void) : { : READ_LOCALS(WithCheckOption); 0.00 : 5fddd0: c7 00 9c 03 00 00 movl $0x39c,(%rax) 0.00 : 5fddd6: 49 89 c4 mov %rax,%r12 : : READ_STRING_FIELD(viewname); 0.00 : 5fddd9: e8 52 11 00 00 callq 5fef30 0.00 : 5fddde: 48 89 df mov %rbx,%rdi 0.00 : 5fdde1: e8 4a 11 00 00 callq 5fef30 0.00 : 5fdde6: 8b 75 e8 mov -0x18(%rbp),%esi 0.00 : 5fdde9: 48 89 c2 mov %rax,%rdx 0.00 : 5fddec: 31 c0 xor %eax,%eax 0.00 : 5fddee: 85 f6 test %esi,%esi 0.00 : 5fddf0: 74 08 je 5fddfa 0.00 : 5fddf2: 48 89 d7 mov %rdx,%rdi 0.00 : 5fddf5: e8 16 12 00 00 callq 5ff010 : READ_NODE_FIELD(qual); 0.00 : 5fddfa: 48 89 df mov %rbx,%rdi : static WithCheckOption * : _readWithCheckOption(void) : { : READ_LOCALS(WithCheckOption); : : READ_STRING_FIELD(viewname); 0.00 : 5fddfd: 49 89 44 24 08 mov %rax,0x8(%r12) : READ_NODE_FIELD(qual); 0.00 : 5fde02: e8 29 11 00 00 callq 5fef30 0.00 : 5fde07: 31 f6 xor %esi,%esi 0.00 : 5fde09: 31 ff xor %edi,%edi 0.00 : 5fde0b: e8 70 12 00 00 callq 5ff080 : READ_BOOL_FIELD(cascaded); 0.00 : 5fde10: 48 89 df mov %rbx,%rdi : _readWithCheckOption(void) : { : READ_LOCALS(WithCheckOption); : : READ_STRING_FIELD(viewname); : READ_NODE_FIELD(qual); 0.00 : 5fde13: 49 89 44 24 10 mov %rax,0x10(%r12) : READ_BOOL_FIELD(cascaded); 0.00 : 5fde18: e8 13 11 00 00 callq 5fef30 0.00 : 5fde1d: 48 89 df mov %rbx,%rdi 0.00 : 5fde20: e8 0b 11 00 00 callq 5fef30 0.00 : 5fde25: 80 38 74 cmpb $0x74,(%rax) 0.00 : 5fde28: 4c 89 e0 mov %r12,%rax 0.00 : 5fde2b: 41 0f 94 44 24 18 sete 0x18(%r12) : #define MATCH(tokname, namelen) \ : (length == namelen && memcmp(token, tokname, namelen) == 0) : : if (MATCH("QUERY", 5)) : return_value = _readQuery(); : else if (MATCH("WITHCHECKOPTION", 15)) 0.00 : 5fde31: e9 b2 f6 ff ff jmpq 5fd4e8 0.00 : 5fde36: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 5fde3d: 00 00 00 : return_value = _readFieldStore(); : else if (MATCH("RELABELTYPE", 11)) : return_value = _readRelabelType(); : else if (MATCH("COERCEVIAIO", 11)) : return_value = _readCoerceViaIO(); : else if (MATCH("ARRAYCOERCEEXPR", 15)) 0.00 : 5fde40: bf 11 64 89 00 mov $0x896411,%edi 0.00 : 5fde45: b9 0f 00 00 00 mov $0xf,%ecx 0.00 : 5fde4a: 48 89 de mov %rbx,%rsi 0.00 : 5fde4d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fde4f: 0f 85 33 f4 ff ff jne 5fd288 : return_value = _readArrayCoerceExpr(); 0.00 : 5fde55: e8 d6 da ff ff callq 5fb930 <_readArrayCoerceExpr> : return_value = _readFieldStore(); : else if (MATCH("RELABELTYPE", 11)) : return_value = _readRelabelType(); : else if (MATCH("COERCEVIAIO", 11)) : return_value = _readCoerceViaIO(); : else if (MATCH("ARRAYCOERCEEXPR", 15)) 0.00 : 5fde5a: e9 89 f6 ff ff jmpq 5fd4e8 0.00 : 5fde5f: 90 nop : if (MATCH("QUERY", 5)) : return_value = _readQuery(); : else if (MATCH("WITHCHECKOPTION", 15)) : return_value = _readWithCheckOption(); : else if (MATCH("SORTGROUPCLAUSE", 15)) : return_value = _readSortGroupClause(); 0.00 : 5fde60: e8 db c7 ff ff callq 5fa640 <_readSortGroupClause> 0.00 : 5fde65: 0f 1f 00 nopl (%rax) : : if (MATCH("QUERY", 5)) : return_value = _readQuery(); : else if (MATCH("WITHCHECKOPTION", 15)) : return_value = _readWithCheckOption(); : else if (MATCH("SORTGROUPCLAUSE", 15)) 0.00 : 5fde68: e9 7b f6 ff ff jmpq 5fd4e8 0.00 : 5fde6d: 0f 1f 00 nopl (%rax) : return_value = _readRelabelType(); : else if (MATCH("COERCEVIAIO", 11)) : return_value = _readCoerceViaIO(); : else if (MATCH("ARRAYCOERCEEXPR", 15)) : return_value = _readArrayCoerceExpr(); : else if (MATCH("CONVERTROWTYPEEXPR", 18)) 0.00 : 5fde70: bf 41 64 89 00 mov $0x896441,%edi 0.00 : 5fde75: b9 12 00 00 00 mov $0x12,%ecx 0.00 : 5fde7a: 48 89 de mov %rbx,%rsi 0.00 : 5fde7d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fde7f: 0f 85 03 f4 ff ff jne 5fd288 : return_value = _readConvertRowtypeExpr(); 0.00 : 5fde85: e8 e6 db ff ff callq 5fba70 <_readConvertRowtypeExpr> : return_value = _readRelabelType(); : else if (MATCH("COERCEVIAIO", 11)) : return_value = _readCoerceViaIO(); : else if (MATCH("ARRAYCOERCEEXPR", 15)) : return_value = _readArrayCoerceExpr(); : else if (MATCH("CONVERTROWTYPEEXPR", 18)) 0.00 : 5fde8a: e9 59 f6 ff ff jmpq 5fd4e8 0.00 : 5fde8f: 90 nop : else if (MATCH("WITHCHECKOPTION", 15)) : return_value = _readWithCheckOption(); : else if (MATCH("SORTGROUPCLAUSE", 15)) : return_value = _readSortGroupClause(); : else if (MATCH("WINDOWCLAUSE", 12)) : return_value = _readWindowClause(); 0.00 : 5fde90: e8 8b c8 ff ff callq 5fa720 <_readWindowClause> 0.00 : 5fde95: 0f 1f 00 nopl (%rax) : return_value = _readQuery(); : else if (MATCH("WITHCHECKOPTION", 15)) : return_value = _readWithCheckOption(); : else if (MATCH("SORTGROUPCLAUSE", 15)) : return_value = _readSortGroupClause(); : else if (MATCH("WINDOWCLAUSE", 12)) 0.00 : 5fde98: e9 4b f6 ff ff jmpq 5fd4e8 0.00 : 5fde9d: 0f 1f 00 nopl (%rax) : return_value = _readWindowClause(); : else if (MATCH("ROWMARKCLAUSE", 13)) : return_value = _readRowMarkClause(); 0.00 : 5fdea0: e8 bb c9 ff ff callq 5fa860 <_readRowMarkClause> 0.00 : 5fdea5: 0f 1f 00 nopl (%rax) : return_value = _readWithCheckOption(); : else if (MATCH("SORTGROUPCLAUSE", 15)) : return_value = _readSortGroupClause(); : else if (MATCH("WINDOWCLAUSE", 12)) : return_value = _readWindowClause(); : else if (MATCH("ROWMARKCLAUSE", 13)) 0.00 : 5fdea8: e9 3b f6 ff ff jmpq 5fd4e8 0.00 : 5fdead: 0f 1f 00 nopl (%rax) : return_value = _readArrayCoerceExpr(); : else if (MATCH("CONVERTROWTYPEEXPR", 18)) : return_value = _readConvertRowtypeExpr(); : else if (MATCH("COLLATE", 7)) : return_value = _readCollateExpr(); : else if (MATCH("CASE", 4)) 0.00 : 5fdeb0: bf 30 32 87 00 mov $0x873230,%edi 0.00 : 5fdeb5: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 5fdeba: 48 89 de mov %rbx,%rsi 0.00 : 5fdebd: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fdebf: 0f 84 8b 03 00 00 je 5fe250 : return_value = _readCaseExpr(); : else if (MATCH("WHEN", 4)) 0.00 : 5fdec5: bf 3a 32 87 00 mov $0x87323a,%edi 0.00 : 5fdeca: b9 04 00 00 00 mov $0x4,%ecx 0.00 : 5fdecf: 48 89 de mov %rbx,%rsi 0.00 : 5fded2: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fded4: 0f 85 ae f3 ff ff jne 5fd288 : * _readCaseWhen : */ : static CaseWhen * : _readCaseWhen(void) : { : READ_LOCALS(CaseWhen); 0.00 : 5fdeda: 48 8b 3d 7f c9 5b 00 mov 0x5bc97f(%rip),%rdi # bba860 : : READ_NODE_FIELD(expr); 0.00 : 5fdee1: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readCaseWhen : */ : static CaseWhen * : _readCaseWhen(void) : { : READ_LOCALS(CaseWhen); 0.00 : 5fdee5: be 20 00 00 00 mov $0x20,%esi 0.00 : 5fdeea: e8 21 af 19 00 callq 798e10 : : READ_NODE_FIELD(expr); 0.00 : 5fdeef: 48 89 df mov %rbx,%rdi : * _readCaseWhen : */ : static CaseWhen * : _readCaseWhen(void) : { : READ_LOCALS(CaseWhen); 0.00 : 5fdef2: c7 00 47 01 00 00 movl $0x147,(%rax) 0.00 : 5fdef8: 49 89 c4 mov %rax,%r12 : : READ_NODE_FIELD(expr); 0.00 : 5fdefb: e8 30 10 00 00 callq 5fef30 0.00 : 5fdf00: 31 f6 xor %esi,%esi 0.00 : 5fdf02: 31 ff xor %edi,%edi 0.00 : 5fdf04: e8 77 11 00 00 callq 5ff080 : READ_NODE_FIELD(result); 0.00 : 5fdf09: 48 89 df mov %rbx,%rdi : static CaseWhen * : _readCaseWhen(void) : { : READ_LOCALS(CaseWhen); : : READ_NODE_FIELD(expr); 0.00 : 5fdf0c: 49 89 44 24 08 mov %rax,0x8(%r12) : READ_NODE_FIELD(result); 0.00 : 5fdf11: e8 1a 10 00 00 callq 5fef30 0.00 : 5fdf16: 31 f6 xor %esi,%esi 0.00 : 5fdf18: 31 ff xor %edi,%edi 0.00 : 5fdf1a: e8 61 11 00 00 callq 5ff080 : READ_LOCATION_FIELD(location); 0.00 : 5fdf1f: 48 89 df mov %rbx,%rdi : _readCaseWhen(void) : { : READ_LOCALS(CaseWhen); : : READ_NODE_FIELD(expr); : READ_NODE_FIELD(result); 0.00 : 5fdf22: 49 89 44 24 10 mov %rax,0x10(%r12) : READ_LOCATION_FIELD(location); 0.00 : 5fdf27: e8 04 10 00 00 callq 5fef30 0.00 : 5fdf2c: 48 89 df mov %rbx,%rdi 0.00 : 5fdf2f: e8 fc 0f 00 00 callq 5fef30 0.00 : 5fdf34: 41 c7 44 24 18 ff ff movl $0xffffffff,0x18(%r12) 0.00 : 5fdf3b: ff ff 0.00 : 5fdf3d: 4c 89 e0 mov %r12,%rax : return_value = _readConvertRowtypeExpr(); : else if (MATCH("COLLATE", 7)) : return_value = _readCollateExpr(); : else if (MATCH("CASE", 4)) : return_value = _readCaseExpr(); : else if (MATCH("WHEN", 4)) 0.00 : 5fdf40: e9 a3 f5 ff ff jmpq 5fd4e8 0.00 : 5fdf45: 0f 1f 00 nopl (%rax) : */ : : static Alias * : _readAlias(void) : { : READ_LOCALS(Alias); 0.00 : 5fdf48: 48 8b 3d 11 c9 5b 00 mov 0x5bc911(%rip),%rdi # bba860 : : READ_STRING_FIELD(aliasname); 0.00 : 5fdf4f: 48 8d 5d e8 lea -0x18(%rbp),%rbx : */ : : static Alias * : _readAlias(void) : { : READ_LOCALS(Alias); 0.00 : 5fdf53: be 18 00 00 00 mov $0x18,%esi 0.00 : 5fdf58: e8 b3 ae 19 00 callq 798e10 : : READ_STRING_FIELD(aliasname); 0.00 : 5fdf5d: 48 89 df mov %rbx,%rdi : */ : : static Alias * : _readAlias(void) : { : READ_LOCALS(Alias); 0.00 : 5fdf60: c7 00 2c 01 00 00 movl $0x12c,(%rax) 0.00 : 5fdf66: 49 89 c4 mov %rax,%r12 : : READ_STRING_FIELD(aliasname); 0.00 : 5fdf69: e8 c2 0f 00 00 callq 5fef30 0.00 : 5fdf6e: 48 89 df mov %rbx,%rdi 0.00 : 5fdf71: e8 ba 0f 00 00 callq 5fef30 0.00 : 5fdf76: 8b 75 e8 mov -0x18(%rbp),%esi 0.00 : 5fdf79: 48 89 c2 mov %rax,%rdx 0.00 : 5fdf7c: 31 c0 xor %eax,%eax 0.00 : 5fdf7e: 85 f6 test %esi,%esi 0.00 : 5fdf80: 74 08 je 5fdf8a 0.00 : 5fdf82: 48 89 d7 mov %rdx,%rdi 0.00 : 5fdf85: e8 86 10 00 00 callq 5ff010 : READ_NODE_FIELD(colnames); 0.00 : 5fdf8a: 48 89 df mov %rbx,%rdi : static Alias * : _readAlias(void) : { : READ_LOCALS(Alias); : : READ_STRING_FIELD(aliasname); 0.00 : 5fdf8d: 49 89 44 24 08 mov %rax,0x8(%r12) : READ_NODE_FIELD(colnames); 0.00 : 5fdf92: e8 99 0f 00 00 callq 5fef30 0.00 : 5fdf97: 31 f6 xor %esi,%esi 0.00 : 5fdf99: 31 ff xor %edi,%edi 0.00 : 5fdf9b: e8 e0 10 00 00 callq 5ff080 0.00 : 5fdfa0: 49 89 44 24 10 mov %rax,0x10(%r12) 0.00 : 5fdfa5: 4c 89 e0 mov %r12,%rax : return_value = _readRowMarkClause(); : else if (MATCH("COMMONTABLEEXPR", 15)) : return_value = _readCommonTableExpr(); : else if (MATCH("SETOPERATIONSTMT", 16)) : return_value = _readSetOperationStmt(); : else if (MATCH("ALIAS", 5)) 0.00 : 5fdfa8: e9 3b f5 ff ff jmpq 5fd4e8 0.00 : 5fdfad: 0f 1f 00 nopl (%rax) : * _readSetOperationStmt : */ : static SetOperationStmt * : _readSetOperationStmt(void) : { : READ_LOCALS(SetOperationStmt); 0.00 : 5fdfb0: 48 8b 3d a9 c8 5b 00 mov 0x5bc8a9(%rip),%rdi # bba860 : : READ_ENUM_FIELD(op, SetOperation); 0.00 : 5fdfb7: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readSetOperationStmt : */ : static SetOperationStmt * : _readSetOperationStmt(void) : { : READ_LOCALS(SetOperationStmt); 0.00 : 5fdfbb: be 40 00 00 00 mov $0x40,%esi 0.00 : 5fdfc0: e8 4b ae 19 00 callq 798e10 : : READ_ENUM_FIELD(op, SetOperation); 0.00 : 5fdfc5: 48 89 df mov %rbx,%rdi : * _readSetOperationStmt : */ : static SetOperationStmt * : _readSetOperationStmt(void) : { : READ_LOCALS(SetOperationStmt); 0.00 : 5fdfc8: c7 00 c5 02 00 00 movl $0x2c5,(%rax) 0.00 : 5fdfce: 49 89 c4 mov %rax,%r12 : : READ_ENUM_FIELD(op, SetOperation); 0.00 : 5fdfd1: e8 5a 0f 00 00 callq 5fef30 0.00 : 5fdfd6: 48 89 df mov %rbx,%rdi 0.00 : 5fdfd9: e8 52 0f 00 00 callq 5fef30 0.00 : 5fdfde: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fdfe3: 31 f6 xor %esi,%esi 0.00 : 5fdfe5: 48 89 c7 mov %rax,%rdi 0.00 : 5fdfe8: e8 a3 bb e6 ff callq 469b90 : READ_BOOL_FIELD(all); 0.00 : 5fdfed: 48 89 df mov %rbx,%rdi : static SetOperationStmt * : _readSetOperationStmt(void) : { : READ_LOCALS(SetOperationStmt); : : READ_ENUM_FIELD(op, SetOperation); 0.00 : 5fdff0: 41 89 44 24 04 mov %eax,0x4(%r12) : READ_BOOL_FIELD(all); 0.00 : 5fdff5: e8 36 0f 00 00 callq 5fef30 0.00 : 5fdffa: 48 89 df mov %rbx,%rdi 0.00 : 5fdffd: e8 2e 0f 00 00 callq 5fef30 0.00 : 5fe002: 80 38 74 cmpb $0x74,(%rax) : READ_NODE_FIELD(larg); 0.00 : 5fe005: 48 89 df mov %rbx,%rdi : _readSetOperationStmt(void) : { : READ_LOCALS(SetOperationStmt); : : READ_ENUM_FIELD(op, SetOperation); : READ_BOOL_FIELD(all); 0.00 : 5fe008: 41 0f 94 44 24 08 sete 0x8(%r12) : READ_NODE_FIELD(larg); 0.00 : 5fe00e: e8 1d 0f 00 00 callq 5fef30 0.00 : 5fe013: 31 f6 xor %esi,%esi 0.00 : 5fe015: 31 ff xor %edi,%edi 0.00 : 5fe017: e8 64 10 00 00 callq 5ff080 : READ_NODE_FIELD(rarg); 0.00 : 5fe01c: 48 89 df mov %rbx,%rdi : { : READ_LOCALS(SetOperationStmt); : : READ_ENUM_FIELD(op, SetOperation); : READ_BOOL_FIELD(all); : READ_NODE_FIELD(larg); 0.00 : 5fe01f: 49 89 44 24 10 mov %rax,0x10(%r12) : READ_NODE_FIELD(rarg); 0.00 : 5fe024: e8 07 0f 00 00 callq 5fef30 0.00 : 5fe029: 31 f6 xor %esi,%esi 0.00 : 5fe02b: 31 ff xor %edi,%edi 0.00 : 5fe02d: e8 4e 10 00 00 callq 5ff080 : READ_NODE_FIELD(colTypes); 0.00 : 5fe032: 48 89 df mov %rbx,%rdi : READ_LOCALS(SetOperationStmt); : : READ_ENUM_FIELD(op, SetOperation); : READ_BOOL_FIELD(all); : READ_NODE_FIELD(larg); : READ_NODE_FIELD(rarg); 0.00 : 5fe035: 49 89 44 24 18 mov %rax,0x18(%r12) : READ_NODE_FIELD(colTypes); 0.00 : 5fe03a: e8 f1 0e 00 00 callq 5fef30 0.00 : 5fe03f: 31 f6 xor %esi,%esi 0.00 : 5fe041: 31 ff xor %edi,%edi 0.00 : 5fe043: e8 38 10 00 00 callq 5ff080 : READ_NODE_FIELD(colTypmods); 0.00 : 5fe048: 48 89 df mov %rbx,%rdi : : READ_ENUM_FIELD(op, SetOperation); : READ_BOOL_FIELD(all); : READ_NODE_FIELD(larg); : READ_NODE_FIELD(rarg); : READ_NODE_FIELD(colTypes); 0.00 : 5fe04b: 49 89 44 24 20 mov %rax,0x20(%r12) : READ_NODE_FIELD(colTypmods); 0.00 : 5fe050: e8 db 0e 00 00 callq 5fef30 0.00 : 5fe055: 31 f6 xor %esi,%esi 0.00 : 5fe057: 31 ff xor %edi,%edi 0.00 : 5fe059: e8 22 10 00 00 callq 5ff080 : READ_NODE_FIELD(colCollations); 0.00 : 5fe05e: 48 89 df mov %rbx,%rdi : READ_ENUM_FIELD(op, SetOperation); : READ_BOOL_FIELD(all); : READ_NODE_FIELD(larg); : READ_NODE_FIELD(rarg); : READ_NODE_FIELD(colTypes); : READ_NODE_FIELD(colTypmods); 0.00 : 5fe061: 49 89 44 24 28 mov %rax,0x28(%r12) : READ_NODE_FIELD(colCollations); 0.00 : 5fe066: e8 c5 0e 00 00 callq 5fef30 0.00 : 5fe06b: 31 f6 xor %esi,%esi 0.00 : 5fe06d: 31 ff xor %edi,%edi 0.00 : 5fe06f: e8 0c 10 00 00 callq 5ff080 : READ_NODE_FIELD(groupClauses); 0.00 : 5fe074: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(all); : READ_NODE_FIELD(larg); : READ_NODE_FIELD(rarg); : READ_NODE_FIELD(colTypes); : READ_NODE_FIELD(colTypmods); : READ_NODE_FIELD(colCollations); 0.00 : 5fe077: 49 89 44 24 30 mov %rax,0x30(%r12) : READ_NODE_FIELD(groupClauses); 0.00 : 5fe07c: e8 af 0e 00 00 callq 5fef30 0.00 : 5fe081: 31 f6 xor %esi,%esi 0.00 : 5fe083: 31 ff xor %edi,%edi 0.00 : 5fe085: e8 f6 0f 00 00 callq 5ff080 0.00 : 5fe08a: 49 89 44 24 38 mov %rax,0x38(%r12) 0.00 : 5fe08f: 4c 89 e0 mov %r12,%rax : return_value = _readWindowClause(); : else if (MATCH("ROWMARKCLAUSE", 13)) : return_value = _readRowMarkClause(); : else if (MATCH("COMMONTABLEEXPR", 15)) : return_value = _readCommonTableExpr(); : else if (MATCH("SETOPERATIONSTMT", 16)) 0.00 : 5fe092: e9 51 f4 ff ff jmpq 5fd4e8 0.00 : 5fe097: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5fe09e: 00 00 : return_value = _readCollateExpr(); : else if (MATCH("CASE", 4)) : return_value = _readCaseExpr(); : else if (MATCH("WHEN", 4)) : return_value = _readCaseWhen(); : else if (MATCH("CASETESTEXPR", 12)) 0.00 : 5fe0a0: bf cb 5b 89 00 mov $0x895bcb,%edi 0.00 : 5fe0a5: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 5fe0aa: 48 89 de mov %rbx,%rsi 0.00 : 5fe0ad: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fe0af: 0f 84 a8 01 00 00 je 5fe25d : return_value = _readBooleanTest(); : else if (MATCH("COERCETODOMAIN", 14)) : return_value = _readCoerceToDomain(); : else if (MATCH("COERCETODOMAINVALUE", 19)) : return_value = _readCoerceToDomainValue(); : else if (MATCH("SETTODEFAULT", 12)) 0.00 : 5fe0b5: bf 14 5c 89 00 mov $0x895c14,%edi 0.00 : 5fe0ba: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 5fe0bf: 48 89 de mov %rbx,%rsi 0.00 : 5fe0c2: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fe0c4: 0f 85 be f1 ff ff jne 5fd288 : return_value = _readSetToDefault(); 0.00 : 5fe0ca: e8 e1 e2 ff ff callq 5fc3b0 <_readSetToDefault> : return_value = _readBooleanTest(); : else if (MATCH("COERCETODOMAIN", 14)) : return_value = _readCoerceToDomain(); : else if (MATCH("COERCETODOMAINVALUE", 19)) : return_value = _readCoerceToDomainValue(); : else if (MATCH("SETTODEFAULT", 12)) 0.00 : 5fe0cf: e9 14 f4 ff ff jmpq 5fd4e8 0.00 : 5fe0d4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 5fe0d8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 5fe0df: 00 : else if (MATCH("SETOPERATIONSTMT", 16)) : return_value = _readSetOperationStmt(); : else if (MATCH("ALIAS", 5)) : return_value = _readAlias(); : else if (MATCH("RANGEVAR", 8)) : return_value = _readRangeVar(); 0.00 : 5fe0e0: e8 1b c2 ff ff callq 5fa300 <_readRangeVar> 0.00 : 5fe0e5: 0f 1f 00 nopl (%rax) : return_value = _readCommonTableExpr(); : else if (MATCH("SETOPERATIONSTMT", 16)) : return_value = _readSetOperationStmt(); : else if (MATCH("ALIAS", 5)) : return_value = _readAlias(); : else if (MATCH("RANGEVAR", 8)) 0.00 : 5fe0e8: e9 fb f3 ff ff jmpq 5fd4e8 0.00 : 5fe0ed: 0f 1f 00 nopl (%rax) : return_value = _readRangeVar(); : else if (MATCH("INTOCLAUSE", 10)) : return_value = _readIntoClause(); 0.00 : 5fe0f0: e8 0b c3 ff ff callq 5fa400 <_readIntoClause> 0.00 : 5fe0f5: 0f 1f 00 nopl (%rax) : return_value = _readSetOperationStmt(); : else if (MATCH("ALIAS", 5)) : return_value = _readAlias(); : else if (MATCH("RANGEVAR", 8)) : return_value = _readRangeVar(); : else if (MATCH("INTOCLAUSE", 10)) 0.00 : 5fe0f8: e9 eb f3 ff ff jmpq 5fd4e8 0.00 : 5fe0fd: 0f 1f 00 nopl (%rax) : return_value = _readIntoClause(); : else if (MATCH("VAR", 3)) : return_value = _readVar(); 0.00 : 5fe100: e8 1b c8 ff ff callq 5fa920 <_readVar> 0.00 : 5fe105: 0f 1f 00 nopl (%rax) : return_value = _readAlias(); : else if (MATCH("RANGEVAR", 8)) : return_value = _readRangeVar(); : else if (MATCH("INTOCLAUSE", 10)) : return_value = _readIntoClause(); : else if (MATCH("VAR", 3)) 0.00 : 5fe108: e9 db f3 ff ff jmpq 5fd4e8 0.00 : 5fe10d: 0f 1f 00 nopl (%rax) : return_value = _readVar(); : else if (MATCH("CONST", 5)) : return_value = _readConst(); 0.00 : 5fe110: e8 2b e5 ff ff callq 5fc640 <_readConst> 0.00 : 5fe115: 0f 1f 00 nopl (%rax) : return_value = _readRangeVar(); : else if (MATCH("INTOCLAUSE", 10)) : return_value = _readIntoClause(); : else if (MATCH("VAR", 3)) : return_value = _readVar(); : else if (MATCH("CONST", 5)) 0.00 : 5fe118: e9 cb f3 ff ff jmpq 5fd4e8 0.00 : 5fe11d: 0f 1f 00 nopl (%rax) : return_value = _readConst(); : else if (MATCH("PARAM", 5)) : return_value = _readParam(); 0.00 : 5fe120: e8 6b c9 ff ff callq 5faa90 <_readParam> 0.00 : 5fe125: 0f 1f 00 nopl (%rax) : return_value = _readIntoClause(); : else if (MATCH("VAR", 3)) : return_value = _readVar(); : else if (MATCH("CONST", 5)) : return_value = _readConst(); : else if (MATCH("PARAM", 5)) 0.00 : 5fe128: e9 bb f3 ff ff jmpq 5fd4e8 0.00 : 5fe12d: 0f 1f 00 nopl (%rax) : return_value = _readParam(); : else if (MATCH("AGGREF", 6)) : return_value = _readAggref(); : else if (MATCH("WINDOWFUNC", 10)) : return_value = _readWindowFunc(); 0.00 : 5fe130: e8 2b cc ff ff callq 5fad60 <_readWindowFunc> 0.00 : 5fe135: 0f 1f 00 nopl (%rax) : return_value = _readConst(); : else if (MATCH("PARAM", 5)) : return_value = _readParam(); : else if (MATCH("AGGREF", 6)) : return_value = _readAggref(); : else if (MATCH("WINDOWFUNC", 10)) 0.00 : 5fe138: e9 ab f3 ff ff jmpq 5fd4e8 0.00 : 5fe13d: 0f 1f 00 nopl (%rax) : return_value = _readMinMaxExpr(); : else if (MATCH("XMLEXPR", 7)) : return_value = _readXmlExpr(); : else if (MATCH("NULLTEST", 8)) : return_value = _readNullTest(); : else if (MATCH("BOOLEANTEST", 11)) 0.00 : 5fe140: bf 40 66 89 00 mov $0x896640,%edi 0.00 : 5fe145: b9 0b 00 00 00 mov $0xb,%ecx 0.00 : 5fe14a: 48 89 de mov %rbx,%rsi 0.00 : 5fe14d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fe14f: 0f 85 2b f7 ff ff jne 5fd880 : * _readBooleanTest : */ : static BooleanTest * : _readBooleanTest(void) : { : READ_LOCALS(BooleanTest); 0.00 : 5fe155: 48 8b 3d 04 c7 5b 00 mov 0x5bc704(%rip),%rdi # bba860 : : READ_NODE_FIELD(arg); 0.00 : 5fe15c: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readBooleanTest : */ : static BooleanTest * : _readBooleanTest(void) : { : READ_LOCALS(BooleanTest); 0.00 : 5fe160: be 18 00 00 00 mov $0x18,%esi 0.00 : 5fe165: e8 a6 ac 19 00 callq 798e10 : : READ_NODE_FIELD(arg); 0.00 : 5fe16a: 48 89 df mov %rbx,%rdi : * _readBooleanTest : */ : static BooleanTest * : _readBooleanTest(void) : { : READ_LOCALS(BooleanTest); 0.00 : 5fe16d: c7 00 50 01 00 00 movl $0x150,(%rax) 0.00 : 5fe173: 49 89 c4 mov %rax,%r12 : : READ_NODE_FIELD(arg); 0.00 : 5fe176: e8 b5 0d 00 00 callq 5fef30 0.00 : 5fe17b: 31 f6 xor %esi,%esi 0.00 : 5fe17d: 31 ff xor %edi,%edi 0.00 : 5fe17f: e8 fc 0e 00 00 callq 5ff080 : READ_ENUM_FIELD(booltesttype, BoolTestType); 0.00 : 5fe184: 48 89 df mov %rbx,%rdi : static BooleanTest * : _readBooleanTest(void) : { : READ_LOCALS(BooleanTest); : : READ_NODE_FIELD(arg); 0.00 : 5fe187: 49 89 44 24 08 mov %rax,0x8(%r12) : READ_ENUM_FIELD(booltesttype, BoolTestType); 0.00 : 5fe18c: e8 9f 0d 00 00 callq 5fef30 0.00 : 5fe191: 48 89 df mov %rbx,%rdi 0.00 : 5fe194: e8 97 0d 00 00 callq 5fef30 0.00 : 5fe199: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fe19e: 48 89 c7 mov %rax,%rdi 0.00 : 5fe1a1: 31 f6 xor %esi,%esi 0.00 : 5fe1a3: e8 e8 b9 e6 ff callq 469b90 0.00 : 5fe1a8: 41 89 44 24 10 mov %eax,0x10(%r12) 0.00 : 5fe1ad: 4c 89 e0 mov %r12,%rax : return_value = _readMinMaxExpr(); : else if (MATCH("XMLEXPR", 7)) : return_value = _readXmlExpr(); : else if (MATCH("NULLTEST", 8)) : return_value = _readNullTest(); : else if (MATCH("BOOLEANTEST", 11)) 0.00 : 5fe1b0: e9 33 f3 ff ff jmpq 5fd4e8 0.00 : 5fe1b5: 0f 1f 00 nopl (%rax) : else if (MATCH("AGGREF", 6)) : return_value = _readAggref(); : else if (MATCH("WINDOWFUNC", 10)) : return_value = _readWindowFunc(); : else if (MATCH("ARRAYREF", 8)) : return_value = _readArrayRef(); 0.00 : 5fe1b8: e8 03 cd ff ff callq 5faec0 <_readArrayRef> 0.00 : 5fe1bd: 0f 1f 00 nopl (%rax) : return_value = _readParam(); : else if (MATCH("AGGREF", 6)) : return_value = _readAggref(); : else if (MATCH("WINDOWFUNC", 10)) : return_value = _readWindowFunc(); : else if (MATCH("ARRAYREF", 8)) 0.00 : 5fe1c0: e9 23 f3 ff ff jmpq 5fd4e8 0.00 : 5fe1c5: 0f 1f 00 nopl (%rax) : return_value = _readXmlExpr(); : else if (MATCH("NULLTEST", 8)) : return_value = _readNullTest(); : else if (MATCH("BOOLEANTEST", 11)) : return_value = _readBooleanTest(); : else if (MATCH("COERCETODOMAIN", 14)) 0.00 : 5fe1c8: bf 5e 66 89 00 mov $0x89665e,%edi 0.00 : 5fe1cd: b9 0e 00 00 00 mov $0xe,%ecx 0.00 : 5fe1d2: 48 89 de mov %rbx,%rsi 0.00 : 5fe1d5: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fe1d7: 0f 85 ab f0 ff ff jne 5fd288 : return_value = _readCoerceToDomain(); 0.00 : 5fe1dd: e8 0e e0 ff ff callq 5fc1f0 <_readCoerceToDomain> : return_value = _readXmlExpr(); : else if (MATCH("NULLTEST", 8)) : return_value = _readNullTest(); : else if (MATCH("BOOLEANTEST", 11)) : return_value = _readBooleanTest(); : else if (MATCH("COERCETODOMAIN", 14)) 0.00 : 5fe1e2: e9 01 f3 ff ff jmpq 5fd4e8 0.00 : 5fe1e7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 5fe1ee: 00 00 : return_value = _readCoerceToDomain(); : else if (MATCH("COERCETODOMAINVALUE", 19)) 0.00 : 5fe1f0: bf 00 5c 89 00 mov $0x895c00,%edi 0.00 : 5fe1f5: b9 13 00 00 00 mov $0x13,%ecx 0.00 : 5fe1fa: 48 89 de mov %rbx,%rsi 0.00 : 5fe1fd: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 5fe1ff: 0f 85 83 f0 ff ff jne 5fd288 : return_value = _readCoerceToDomainValue(); 0.00 : 5fe205: e8 e6 e0 ff ff callq 5fc2f0 <_readCoerceToDomainValue> : return_value = _readNullTest(); : else if (MATCH("BOOLEANTEST", 11)) : return_value = _readBooleanTest(); : else if (MATCH("COERCETODOMAIN", 14)) : return_value = _readCoerceToDomain(); : else if (MATCH("COERCETODOMAINVALUE", 19)) 0.00 : 5fe20a: e9 d9 f2 ff ff jmpq 5fd4e8 0.00 : 5fe20f: 90 nop : else if (MATCH("ARRAYREF", 8)) : return_value = _readArrayRef(); : else if (MATCH("FUNCEXPR", 8)) : return_value = _readFuncExpr(); : else if (MATCH("NAMEDARGEXPR", 12)) : return_value = _readNamedArgExpr(); 0.00 : 5fe210: e8 db c2 ff ff callq 5fa4f0 <_readNamedArgExpr> 0.00 : 5fe215: 0f 1f 00 nopl (%rax) : return_value = _readWindowFunc(); : else if (MATCH("ARRAYREF", 8)) : return_value = _readArrayRef(); : else if (MATCH("FUNCEXPR", 8)) : return_value = _readFuncExpr(); : else if (MATCH("NAMEDARGEXPR", 12)) 0.00 : 5fe218: e9 cb f2 ff ff jmpq 5fd4e8 0.00 : 5fe21d: 0f 1f 00 nopl (%rax) : return_value = _readNamedArgExpr(); : else if (MATCH("OPEXPR", 6)) : return_value = _readOpExpr(); 0.00 : 5fe220: e8 0b cf ff ff callq 5fb130 <_readOpExpr> 0.00 : 5fe225: 0f 1f 00 nopl (%rax) : return_value = _readArrayRef(); : else if (MATCH("FUNCEXPR", 8)) : return_value = _readFuncExpr(); : else if (MATCH("NAMEDARGEXPR", 12)) : return_value = _readNamedArgExpr(); : else if (MATCH("OPEXPR", 6)) 0.00 : 5fe228: e9 bb f2 ff ff jmpq 5fd4e8 0.00 : 5fe22d: 0f 1f 00 nopl (%rax) : else if (MATCH("FIELDSELECT", 11)) : return_value = _readFieldSelect(); : else if (MATCH("FIELDSTORE", 10)) : return_value = _readFieldStore(); : else if (MATCH("RELABELTYPE", 11)) : return_value = _readRelabelType(); 0.00 : 5fe230: e8 2b d5 ff ff callq 5fb760 <_readRelabelType> 0.00 : 5fe235: 0f 1f 00 nopl (%rax) : return_value = _readSubLink(); : else if (MATCH("FIELDSELECT", 11)) : return_value = _readFieldSelect(); : else if (MATCH("FIELDSTORE", 10)) : return_value = _readFieldStore(); : else if (MATCH("RELABELTYPE", 11)) 0.00 : 5fe238: e9 ab f2 ff ff jmpq 5fd4e8 0.00 : 5fe23d: 0f 1f 00 nopl (%rax) : else if (MATCH("ARRAYCOERCEEXPR", 15)) : return_value = _readArrayCoerceExpr(); : else if (MATCH("CONVERTROWTYPEEXPR", 18)) : return_value = _readConvertRowtypeExpr(); : else if (MATCH("COLLATE", 7)) : return_value = _readCollateExpr(); 0.00 : 5fe240: e8 db d8 ff ff callq 5fbb20 <_readCollateExpr> 0.00 : 5fe245: 0f 1f 00 nopl (%rax) : return_value = _readCoerceViaIO(); : else if (MATCH("ARRAYCOERCEEXPR", 15)) : return_value = _readArrayCoerceExpr(); : else if (MATCH("CONVERTROWTYPEEXPR", 18)) : return_value = _readConvertRowtypeExpr(); : else if (MATCH("COLLATE", 7)) 0.00 : 5fe248: e9 9b f2 ff ff jmpq 5fd4e8 0.00 : 5fe24d: 0f 1f 00 nopl (%rax) : return_value = _readCollateExpr(); : else if (MATCH("CASE", 4)) : return_value = _readCaseExpr(); 0.00 : 5fe250: e8 5b d9 ff ff callq 5fbbb0 <_readCaseExpr> 0.00 : 5fe255: 0f 1f 00 nopl (%rax) : return_value = _readArrayCoerceExpr(); : else if (MATCH("CONVERTROWTYPEEXPR", 18)) : return_value = _readConvertRowtypeExpr(); : else if (MATCH("COLLATE", 7)) : return_value = _readCollateExpr(); : else if (MATCH("CASE", 4)) 0.00 : 5fe258: e9 8b f2 ff ff jmpq 5fd4e8 0.00 : 5fe25d: 0f 1f 00 nopl (%rax) : return_value = _readCaseExpr(); : else if (MATCH("WHEN", 4)) : return_value = _readCaseWhen(); : else if (MATCH("CASETESTEXPR", 12)) : return_value = _readCaseTestExpr(); 0.00 : 5fe260: e8 2b da ff ff callq 5fbc90 <_readCaseTestExpr> 0.00 : 5fe265: 0f 1f 00 nopl (%rax) : return_value = _readCollateExpr(); : else if (MATCH("CASE", 4)) : return_value = _readCaseExpr(); : else if (MATCH("WHEN", 4)) : return_value = _readCaseWhen(); : else if (MATCH("CASETESTEXPR", 12)) 0.00 : 5fe268: e9 7b f2 ff ff jmpq 5fd4e8 0.00 : 5fe26d: 0f 1f 00 nopl (%rax) : else if (MATCH("ROW", 3)) : return_value = _readRowExpr(); : else if (MATCH("ROWCOMPARE", 10)) : return_value = _readRowCompareExpr(); : else if (MATCH("COALESCE", 8)) : return_value = _readCoalesceExpr(); 0.00 : 5fe270: e8 8b dc ff ff callq 5fbf00 <_readCoalesceExpr> 0.00 : 5fe275: 0f 1f 00 nopl (%rax) : return_value = _readArrayExpr(); : else if (MATCH("ROW", 3)) : return_value = _readRowExpr(); : else if (MATCH("ROWCOMPARE", 10)) : return_value = _readRowCompareExpr(); : else if (MATCH("COALESCE", 8)) 0.00 : 5fe278: e9 6b f2 ff ff jmpq 5fd4e8 /home/Computational/mark/src/postgres-andres/src/backend/nodes/readfuncs.c:1376 100.00 : 5fe27d: 0f 1f 00 nopl (%rax) : else if (MATCH("SETTODEFAULT", 12)) : return_value = _readSetToDefault(); : else if (MATCH("CURRENTOFEXPR", 13)) : return_value = _readCurrentOfExpr(); : else if (MATCH("TARGETENTRY", 11)) : return_value = _readTargetEntry(); 0.00 : 5fe280: e8 9b e2 ff ff callq 5fc520 <_readTargetEntry> 0.00 : 5fe285: 0f 1f 00 nopl (%rax) : return_value = _readCoerceToDomainValue(); : else if (MATCH("SETTODEFAULT", 12)) : return_value = _readSetToDefault(); : else if (MATCH("CURRENTOFEXPR", 13)) : return_value = _readCurrentOfExpr(); : else if (MATCH("TARGETENTRY", 11)) 0.00 : 5fe288: e9 5b f2 ff ff jmpq 5fd4e8 : * _readJoinExpr : */ : static JoinExpr * : _readJoinExpr(void) : { : READ_LOCALS(JoinExpr); 0.00 : 5fe28d: 48 8b 3d cc c5 5b 00 mov 0x5bc5cc(%rip),%rdi # bba860 : : READ_ENUM_FIELD(jointype, JoinType); 0.00 : 5fe294: 48 8d 5d e8 lea -0x18(%rbp),%rbx : * _readJoinExpr : */ : static JoinExpr * : _readJoinExpr(void) : { : READ_LOCALS(JoinExpr); 0.00 : 5fe298: be 40 00 00 00 mov $0x40,%esi 0.00 : 5fe29d: e8 6e ab 19 00 callq 798e10 : : READ_ENUM_FIELD(jointype, JoinType); 0.00 : 5fe2a2: 48 89 df mov %rbx,%rdi : * _readJoinExpr : */ : static JoinExpr * : _readJoinExpr(void) : { : READ_LOCALS(JoinExpr); 0.00 : 5fe2a5: c7 00 57 01 00 00 movl $0x157,(%rax) 0.00 : 5fe2ab: 49 89 c4 mov %rax,%r12 : : READ_ENUM_FIELD(jointype, JoinType); 0.00 : 5fe2ae: e8 7d 0c 00 00 callq 5fef30 0.00 : 5fe2b3: 48 89 df mov %rbx,%rdi 0.00 : 5fe2b6: e8 75 0c 00 00 callq 5fef30 0.00 : 5fe2bb: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fe2c0: 31 f6 xor %esi,%esi 0.00 : 5fe2c2: 48 89 c7 mov %rax,%rdi 0.00 : 5fe2c5: e8 c6 b8 e6 ff callq 469b90 : READ_BOOL_FIELD(isNatural); 0.00 : 5fe2ca: 48 89 df mov %rbx,%rdi : static JoinExpr * : _readJoinExpr(void) : { : READ_LOCALS(JoinExpr); : : READ_ENUM_FIELD(jointype, JoinType); 0.00 : 5fe2cd: 41 89 44 24 04 mov %eax,0x4(%r12) : READ_BOOL_FIELD(isNatural); 0.00 : 5fe2d2: e8 59 0c 00 00 callq 5fef30 0.00 : 5fe2d7: 48 89 df mov %rbx,%rdi 0.00 : 5fe2da: e8 51 0c 00 00 callq 5fef30 0.00 : 5fe2df: 80 38 74 cmpb $0x74,(%rax) : READ_NODE_FIELD(larg); 0.00 : 5fe2e2: 48 89 df mov %rbx,%rdi : _readJoinExpr(void) : { : READ_LOCALS(JoinExpr); : : READ_ENUM_FIELD(jointype, JoinType); : READ_BOOL_FIELD(isNatural); 0.00 : 5fe2e5: 41 0f 94 44 24 08 sete 0x8(%r12) : READ_NODE_FIELD(larg); 0.00 : 5fe2eb: e8 40 0c 00 00 callq 5fef30 0.00 : 5fe2f0: 31 f6 xor %esi,%esi 0.00 : 5fe2f2: 31 ff xor %edi,%edi 0.00 : 5fe2f4: e8 87 0d 00 00 callq 5ff080 : READ_NODE_FIELD(rarg); 0.00 : 5fe2f9: 48 89 df mov %rbx,%rdi : { : READ_LOCALS(JoinExpr); : : READ_ENUM_FIELD(jointype, JoinType); : READ_BOOL_FIELD(isNatural); : READ_NODE_FIELD(larg); 0.00 : 5fe2fc: 49 89 44 24 10 mov %rax,0x10(%r12) : READ_NODE_FIELD(rarg); 0.00 : 5fe301: e8 2a 0c 00 00 callq 5fef30 0.00 : 5fe306: 31 f6 xor %esi,%esi 0.00 : 5fe308: 31 ff xor %edi,%edi 0.00 : 5fe30a: e8 71 0d 00 00 callq 5ff080 : READ_NODE_FIELD(usingClause); 0.00 : 5fe30f: 48 89 df mov %rbx,%rdi : READ_LOCALS(JoinExpr); : : READ_ENUM_FIELD(jointype, JoinType); : READ_BOOL_FIELD(isNatural); : READ_NODE_FIELD(larg); : READ_NODE_FIELD(rarg); 0.00 : 5fe312: 49 89 44 24 18 mov %rax,0x18(%r12) : READ_NODE_FIELD(usingClause); 0.00 : 5fe317: e8 14 0c 00 00 callq 5fef30 0.00 : 5fe31c: 31 f6 xor %esi,%esi 0.00 : 5fe31e: 31 ff xor %edi,%edi 0.00 : 5fe320: e8 5b 0d 00 00 callq 5ff080 : READ_NODE_FIELD(quals); 0.00 : 5fe325: 48 89 df mov %rbx,%rdi : : READ_ENUM_FIELD(jointype, JoinType); : READ_BOOL_FIELD(isNatural); : READ_NODE_FIELD(larg); : READ_NODE_FIELD(rarg); : READ_NODE_FIELD(usingClause); 0.00 : 5fe328: 49 89 44 24 20 mov %rax,0x20(%r12) : READ_NODE_FIELD(quals); 0.00 : 5fe32d: e8 fe 0b 00 00 callq 5fef30 0.00 : 5fe332: 31 f6 xor %esi,%esi 0.00 : 5fe334: 31 ff xor %edi,%edi 0.00 : 5fe336: e8 45 0d 00 00 callq 5ff080 : READ_NODE_FIELD(alias); 0.00 : 5fe33b: 48 89 df mov %rbx,%rdi : READ_ENUM_FIELD(jointype, JoinType); : READ_BOOL_FIELD(isNatural); : READ_NODE_FIELD(larg); : READ_NODE_FIELD(rarg); : READ_NODE_FIELD(usingClause); : READ_NODE_FIELD(quals); 0.00 : 5fe33e: 49 89 44 24 28 mov %rax,0x28(%r12) : READ_NODE_FIELD(alias); 0.00 : 5fe343: e8 e8 0b 00 00 callq 5fef30 0.00 : 5fe348: 31 f6 xor %esi,%esi 0.00 : 5fe34a: 31 ff xor %edi,%edi 0.00 : 5fe34c: e8 2f 0d 00 00 callq 5ff080 : READ_INT_FIELD(rtindex); 0.00 : 5fe351: 48 89 df mov %rbx,%rdi : READ_BOOL_FIELD(isNatural); : READ_NODE_FIELD(larg); : READ_NODE_FIELD(rarg); : READ_NODE_FIELD(usingClause); : READ_NODE_FIELD(quals); : READ_NODE_FIELD(alias); 0.00 : 5fe354: 49 89 44 24 30 mov %rax,0x30(%r12) : READ_INT_FIELD(rtindex); 0.00 : 5fe359: e8 d2 0b 00 00 callq 5fef30 0.00 : 5fe35e: 48 89 df mov %rbx,%rdi 0.00 : 5fe361: e8 ca 0b 00 00 callq 5fef30 0.00 : 5fe366: ba 0a 00 00 00 mov $0xa,%edx 0.00 : 5fe36b: 48 89 c7 mov %rax,%rdi 0.00 : 5fe36e: 31 f6 xor %esi,%esi 0.00 : 5fe370: e8 1b b8 e6 ff callq 469b90 0.00 : 5fe375: 41 89 44 24 38 mov %eax,0x38(%r12) 0.00 : 5fe37a: 4c 89 e0 mov %r12,%rax : return_value = _readCurrentOfExpr(); : else if (MATCH("TARGETENTRY", 11)) : return_value = _readTargetEntry(); : else if (MATCH("RANGETBLREF", 11)) : return_value = _readRangeTblRef(); : else if (MATCH("JOINEXPR", 8)) 0.00 : 5fe37d: e9 66 f1 ff ff jmpq 5fd4e8 : static NotifyStmt * : _readNotifyStmt(void) : { : READ_LOCALS(NotifyStmt); : : READ_STRING_FIELD(conditionname); 0.00 : 5fe382: 48 89 d7 mov %rdx,%rdi 0.00 : 5fe385: e8 86 0c 00 00 callq 5ff010 0.00 : 5fe38a: e9 0b f0 ff ff jmpq 5fd39a Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/nodes/read.c:157 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000005fef30 : : * code should add backslashes to a string constant to ensure it is treated : * as a single token. : */ : char * : pg_strtok(int *length) : { 0.00 : 5fef30: 55 push %rbp : char *local_str; /* working pointer to string */ : char *ret_str; /* start of token to return */ : : local_str = pg_strtok_ptr; 0.00 : 5fef31: 48 8b 0d d8 ca 57 00 mov 0x57cad8(%rip),%rcx # b7ba10 : * code should add backslashes to a string constant to ensure it is treated : * as a single token. : */ : char * : pg_strtok(int *length) : { 0.00 : 5fef38: 48 89 e5 mov %rsp,%rbp : char *local_str; /* working pointer to string */ : char *ret_str; /* start of token to return */ : : local_str = pg_strtok_ptr; : : while (*local_str == ' ' || *local_str == '\n' || *local_str == '\t') 0.00 : 5fef3b: eb 07 jmp 5fef44 0.00 : 5fef3d: 0f 1f 00 nopl (%rax) : local_str++; 0.00 : 5fef40: 48 83 c1 01 add $0x1,%rcx : char *local_str; /* working pointer to string */ : char *ret_str; /* start of token to return */ : : local_str = pg_strtok_ptr; : : while (*local_str == ' ' || *local_str == '\n' || *local_str == '\t') 0.00 : 5fef44: 0f b6 11 movzbl (%rcx),%edx 0.00 : 5fef47: 80 fa 20 cmp $0x20,%dl 0.00 : 5fef4a: 74 f4 je 5fef40 0.00 : 5fef4c: 80 fa 0a cmp $0xa,%dl 0.00 : 5fef4f: 74 ef je 5fef40 0.00 : 5fef51: 80 fa 09 cmp $0x9,%dl 0.00 : 5fef54: 74 ea je 5fef40 : local_str++; : : if (*local_str == '\0') 0.00 : 5fef56: 84 d2 test %dl,%dl 0.00 : 5fef58: 0f 84 9d 00 00 00 je 5feffb : /* : * Now pointing at start of next token. : */ : ret_str = local_str; : : if (*local_str == '(' || *local_str == ')' || 0.00 : 5fef5e: 8d 42 d8 lea -0x28(%rdx),%eax 0.00 : 5fef61: 3c 01 cmp $0x1,%al 0.00 : 5fef63: 76 63 jbe 5fefc8 0.00 : 5fef65: 80 fa 7b cmp $0x7b,%dl 0.00 : 5fef68: 74 5e je 5fefc8 0.00 : 5fef6a: 80 fa 7d cmp $0x7d,%dl 0.00 : 5fef6d: 49 89 c8 mov %rcx,%r8 0.00 : 5fef70: 75 0c jne 5fef7e 0.00 : 5fef72: eb 54 jmp 5fefc8 0.00 : 5fef74: 0f 1f 40 00 nopl 0x0(%rax) : *local_str != ' ' && *local_str != '\n' && : *local_str != '\t' && : *local_str != '(' && *local_str != ')' && : *local_str != '{' && *local_str != '}') : { : if (*local_str == '\\' && local_str[1] != '\0') 0.00 : 5fef78: 0f b6 16 movzbl (%rsi),%edx 0.00 : 5fef7b: 49 89 f0 mov %rsi,%r8 : local_str++; : } : else : { : /* Normal token, possibly containing backslashes */ : while (*local_str != '\0' && 0.00 : 5fef7e: 84 d2 test %dl,%dl 0.00 : 5fef80: 74 4a je 5fefcc 0.00 : 5fef82: 80 fa 20 cmp $0x20,%dl 0.00 : 5fef85: 74 45 je 5fefcc 0.00 : 5fef87: 80 fa 0a cmp $0xa,%dl 0.00 : 5fef8a: 74 40 je 5fefcc 0.00 : 5fef8c: 80 fa 09 cmp $0x9,%dl 0.00 : 5fef8f: 90 nop 0.00 : 5fef90: 74 3a je 5fefcc 0.00 : 5fef92: 80 fa 28 cmp $0x28,%dl 0.00 : 5fef95: 74 35 je 5fefcc 0.00 : 5fef97: 80 fa 29 cmp $0x29,%dl 0.00 : 5fef9a: 74 30 je 5fefcc 0.00 : 5fef9c: 80 fa 7b cmp $0x7b,%dl 0.00 : 5fef9f: 90 nop 0.00 : 5fefa0: 74 2a je 5fefcc 0.00 : 5fefa2: 80 fa 7d cmp $0x7d,%dl 0.00 : 5fefa5: 74 25 je 5fefcc : *local_str != ' ' && *local_str != '\n' && : *local_str != '\t' && : *local_str != '(' && *local_str != ')' && : *local_str != '{' && *local_str != '}') : { : if (*local_str == '\\' && local_str[1] != '\0') 0.00 : 5fefa7: 80 fa 5c cmp $0x5c,%dl 0.00 : 5fefaa: 49 8d 70 01 lea 0x1(%r8),%rsi 0.00 : 5fefae: 66 90 xchg %ax,%ax 0.00 : 5fefb0: 75 c6 jne 5fef78 : local_str += 2; 0.00 : 5fefb2: 41 80 78 01 00 cmpb $0x0,0x1(%r8) : *local_str != ' ' && *local_str != '\n' && : *local_str != '\t' && : *local_str != '(' && *local_str != ')' && : *local_str != '{' && *local_str != '}') : { : if (*local_str == '\\' && local_str[1] != '\0') 0.00 : 5fefb7: 49 8d 70 01 lea 0x1(%r8),%rsi : local_str += 2; 0.00 : 5fefbb: 49 8d 40 02 lea 0x2(%r8),%rax 0.00 : 5fefbf: 48 0f 45 f0 cmovne %rax,%rsi 0.00 : 5fefc3: eb b3 jmp 5fef78 0.00 : 5fefc5: 0f 1f 00 nopl (%rax) : : if (*local_str == '(' || *local_str == ')' || : *local_str == '{' || *local_str == '}') : { : /* special 1-character token */ : local_str++; 0.00 : 5fefc8: 4c 8d 41 01 lea 0x1(%rcx),%r8 : else : local_str++; : } : } : : *length = local_str - ret_str; 0.00 : 5fefcc: 44 89 c0 mov %r8d,%eax 0.00 : 5fefcf: 29 c8 sub %ecx,%eax : : /* Recognize special case for "empty" token */ : if (*length == 2 && ret_str[0] == '<' && ret_str[1] == '>') 0.00 : 5fefd1: 83 f8 02 cmp $0x2,%eax : else : local_str++; : } : } : : *length = local_str - ret_str; 0.00 : 5fefd4: 89 07 mov %eax,(%rdi) : : /* Recognize special case for "empty" token */ : if (*length == 2 && ret_str[0] == '<' && ret_str[1] == '>') 0.00 : 5fefd6: 74 10 je 5fefe8 : *length = 0; : : pg_strtok_ptr = local_str; /home/Computational/mark/src/postgres-andres/src/backend/nodes/read.c:157 100.00 : 5fefd8: 4c 89 05 31 ca 57 00 mov %r8,0x57ca31(%rip) # b7ba10 0.00 : 5fefdf: 48 89 c8 mov %rcx,%rax : : return ret_str; : } 0.00 : 5fefe2: c9 leaveq 0.00 : 5fefe3: c3 retq 0.00 : 5fefe4: 0f 1f 40 00 nopl 0x0(%rax) : } : : *length = local_str - ret_str; : : /* Recognize special case for "empty" token */ : if (*length == 2 && ret_str[0] == '<' && ret_str[1] == '>') 0.00 : 5fefe8: 80 39 3c cmpb $0x3c,(%rcx) 0.00 : 5fefeb: 75 eb jne 5fefd8 0.00 : 5fefed: 80 79 01 3e cmpb $0x3e,0x1(%rcx) 0.00 : 5feff1: 75 e5 jne 5fefd8 : *length = 0; 0.00 : 5feff3: c7 07 00 00 00 00 movl $0x0,(%rdi) 0.00 : 5feff9: eb dd jmp 5fefd8 : while (*local_str == ' ' || *local_str == '\n' || *local_str == '\t') : local_str++; : : if (*local_str == '\0') : { : *length = 0; 0.00 : 5feffb: c7 07 00 00 00 00 movl $0x0,(%rdi) : pg_strtok_ptr = local_str; 0.00 : 5ff001: 31 c0 xor %eax,%eax 0.00 : 5ff003: 48 89 0d 06 ca 57 00 mov %rcx,0x57ca06(%rip) # b7ba10 : *length = 0; : : pg_strtok_ptr = local_str; : : return ret_str; : } 0.00 : 5ff00a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:2834 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000605fe0 : : initial_cost_nestloop(PlannerInfo *root, JoinCostWorkspace *workspace, : JoinType jointype, : Path *outer_path, Path *inner_path, : SpecialJoinInfo *sjinfo, : SemiAntiJoinFactors *semifactors) : { 0.00 : 605fe0: 55 push %rbp 0.00 : 605fe1: 48 89 e5 mov %rsp,%rbp 0.00 : 605fe4: 48 89 5d e0 mov %rbx,-0x20(%rbp) 0.00 : 605fe8: 4c 89 65 e8 mov %r12,-0x18(%rbp) 0.00 : 605fec: 4c 89 c3 mov %r8,%rbx 0.00 : 605fef: 4c 89 6d f0 mov %r13,-0x10(%rbp) 0.00 : 605ff3: 4c 89 75 f8 mov %r14,-0x8(%rbp) 0.00 : 605ff7: 48 83 ec 70 sub $0x70,%rsp : static void : cost_rescan(PlannerInfo *root, Path *path, : Cost *rescan_startup_cost, /* output parameters */ : Cost *rescan_total_cost) : { : switch (path->pathtype) 0.00 : 605ffb: 41 8b 40 04 mov 0x4(%r8),%eax : initial_cost_nestloop(PlannerInfo *root, JoinCostWorkspace *workspace, : JoinType jointype, : Path *outer_path, Path *inner_path, : SpecialJoinInfo *sjinfo, : SemiAntiJoinFactors *semifactors) : { 0.00 : 605fff: 49 89 f5 mov %rsi,%r13 0.00 : 606002: 41 89 d6 mov %edx,%r14d 0.00 : 606005: 49 89 cc mov %rcx,%r12 : Cost startup_cost = 0; : Cost run_cost = 0; : double outer_path_rows = outer_path->rows; 0.00 : 606008: f2 0f 10 79 18 movsd 0x18(%rcx),%xmm7 : static void : cost_rescan(PlannerInfo *root, Path *path, : Cost *rescan_startup_cost, /* output parameters */ : Cost *rescan_total_cost) : { : switch (path->pathtype) 0.00 : 60600d: 83 e8 74 sub $0x74,%eax 0.00 : 606010: 83 f8 0a cmp $0xa,%eax 0.00 : 606013: 0f 86 b7 00 00 00 jbe 6060d0 : *rescan_startup_cost = 0; : *rescan_total_cost = run_cost; : } : break; : default: : *rescan_startup_cost = path->startup_cost; 0.00 : 606019: f2 0f 10 73 20 movsd 0x20(%rbx),%xmm6 : *rescan_total_cost = path->total_cost; 0.00 : 60601e: f2 0f 10 6b 28 movsd 0x28(%rbx),%xmm5 0.00 : 606023: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 606027: 66 0f 28 ce movapd %xmm6,%xmm1 0.00 : 60602b: f2 0f 5c ee subsd %xmm6,%xmm5 0.00 : 60602f: 66 0f 28 dd movapd %xmm5,%xmm3 : * NOTE: clearly, we must pay both outer and inner paths' startup_cost : * before we can start returning tuples, so the join's startup cost is : * their sum. We'll also pay the inner path's rescan startup cost : * multiple times. : */ : startup_cost += outer_path->startup_cost + inner_path->startup_cost; 0.00 : 606033: f2 41 0f 10 44 24 20 movsd 0x20(%r12),%xmm0 0.00 : 60603a: 66 0f 28 e0 movapd %xmm0,%xmm4 0.00 : 60603e: f2 0f 58 e1 addsd %xmm1,%xmm4 : run_cost += outer_path->total_cost - outer_path->startup_cost; 0.00 : 606042: f2 41 0f 10 4c 24 28 movsd 0x28(%r12),%xmm1 0.00 : 606049: f2 0f 5c c8 subsd %xmm0,%xmm1 : * NOTE: clearly, we must pay both outer and inner paths' startup_cost : * before we can start returning tuples, so the join's startup cost is : * their sum. We'll also pay the inner path's rescan startup cost : * multiple times. : */ : startup_cost += outer_path->startup_cost + inner_path->startup_cost; 0.00 : 60604d: f2 0f 58 e2 addsd %xmm2,%xmm4 : run_cost += outer_path->total_cost - outer_path->startup_cost; 0.00 : 606051: f2 0f 58 ca addsd %xmm2,%xmm1 : if (outer_path_rows > 1) 0.00 : 606055: f2 0f 10 15 fb 90 1a movsd 0x1a90fb(%rip),%xmm2 # 7af158 <__func__.15777+0x10> 0.00 : 60605c: 00 0.00 : 60605d: 66 0f 2e fa ucomisd %xmm2,%xmm7 0.00 : 606061: 76 10 jbe 606073 : run_cost += (outer_path_rows - 1) * inner_rescan_start_cost; 0.00 : 606063: 66 0f 28 c7 movapd %xmm7,%xmm0 0.00 : 606067: f2 0f 5c c2 subsd %xmm2,%xmm0 0.00 : 60606b: f2 0f 59 c6 mulsd %xmm6,%xmm0 0.00 : 60606f: f2 0f 58 c8 addsd %xmm0,%xmm1 : : inner_run_cost = inner_path->total_cost - inner_path->startup_cost; : inner_rescan_run_cost = inner_rescan_total_cost - inner_rescan_start_cost; : : if (jointype == JOIN_SEMI || jointype == JOIN_ANTI) 0.00 : 606073: 41 8d 46 fc lea -0x4(%r14),%eax 0.00 : 606077: 83 f8 01 cmp $0x1,%eax 0.00 : 60607a: 0f 86 18 01 00 00 jbe 606198 : workspace->inner_scan_frac = inner_scan_frac; : } : else : { : /* Normal case; we'll scan whole input rel for each outer row */ : run_cost += inner_run_cost; 0.00 : 606080: f2 0f 58 cb addsd %xmm3,%xmm1 : if (outer_path_rows > 1) 0.00 : 606084: 66 0f 2e fa ucomisd %xmm2,%xmm7 0.00 : 606088: 76 0c jbe 606096 : run_cost += (outer_path_rows - 1) * inner_rescan_run_cost; 0.00 : 60608a: f2 0f 5c fa subsd %xmm2,%xmm7 0.00 : 60608e: f2 0f 59 fd mulsd %xmm5,%xmm7 0.00 : 606092: f2 0f 58 cf addsd %xmm7,%xmm1 : : /* CPU costs left for later */ : : /* Public result fields */ : workspace->startup_cost = startup_cost; : workspace->total_cost = startup_cost + run_cost; 0.00 : 606096: 66 0f 28 c4 movapd %xmm4,%xmm0 : } : : /* CPU costs left for later */ : : /* Public result fields */ : workspace->startup_cost = startup_cost; 0.00 : 60609a: f2 41 0f 11 65 00 movsd %xmm4,0x0(%r13) : workspace->total_cost = startup_cost + run_cost; : /* Save private data for final_cost_nestloop */ : workspace->run_cost = run_cost; 0.00 : 6060a0: f2 41 0f 11 4d 10 movsd %xmm1,0x10(%r13) : workspace->inner_rescan_run_cost = inner_rescan_run_cost; : } 0.00 : 6060a6: 48 8b 5d e0 mov -0x20(%rbp),%rbx 0.00 : 6060aa: 4c 8b 65 e8 mov -0x18(%rbp),%r12 : : /* CPU costs left for later */ : : /* Public result fields */ : workspace->startup_cost = startup_cost; : workspace->total_cost = startup_cost + run_cost; 0.00 : 6060ae: f2 0f 58 c1 addsd %xmm1,%xmm0 : /* Save private data for final_cost_nestloop */ : workspace->run_cost = run_cost; : workspace->inner_rescan_run_cost = inner_rescan_run_cost; 0.00 : 6060b2: f2 41 0f 11 6d 18 movsd %xmm5,0x18(%r13) : } 0.00 : 6060b8: 4c 8b 75 f8 mov -0x8(%rbp),%r14 : : /* CPU costs left for later */ : : /* Public result fields */ : workspace->startup_cost = startup_cost; : workspace->total_cost = startup_cost + run_cost; 0.00 : 6060bc: f2 41 0f 11 45 08 movsd %xmm0,0x8(%r13) : /* Save private data for final_cost_nestloop */ : workspace->run_cost = run_cost; : workspace->inner_rescan_run_cost = inner_rescan_run_cost; : } 0.00 : 6060c2: 4c 8b 6d f0 mov -0x10(%rbp),%r13 0.00 : 6060c6: c9 leaveq 0.00 : 6060c7: c3 retq 0.00 : 6060c8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6060cf: 00 : static void : cost_rescan(PlannerInfo *root, Path *path, : Cost *rescan_startup_cost, /* output parameters */ : Cost *rescan_total_cost) : { : switch (path->pathtype) 0.00 : 6060d0: 89 c0 mov %eax,%eax 0.00 : 6060d2: ff 24 c5 10 a5 89 00 jmpq *0x89a510(,%rax,8) 0.00 : 6060d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : /* : * Assume that all of the startup cost represents hash table : * building, which we won't have to do over. : */ : *rescan_startup_cost = 0; : *rescan_total_cost = path->total_cost - path->startup_cost; 0.00 : 6060e0: f2 41 0f 10 48 20 movsd 0x20(%r8),%xmm1 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/costsize.c:2834 100.00 : 6060e6: f2 41 0f 10 58 28 movsd 0x28(%r8),%xmm3 0.00 : 6060ec: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 6060f0: f2 0f 5c d9 subsd %xmm1,%xmm3 0.00 : 6060f4: 66 0f 28 f2 movapd %xmm2,%xmm6 0.00 : 6060f8: 66 0f 28 eb movapd %xmm3,%xmm5 0.00 : 6060fc: e9 32 ff ff ff jmpq 606033 0.00 : 606101: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * These plan types materialize their final result in a : * tuplestore or tuplesort object. So the rescan cost is only : * cpu_tuple_cost per tuple, unless the result is large enough : * to spill to disk. : */ : Cost run_cost = cpu_tuple_cost * path->rows; 0.00 : 606108: f2 41 0f 10 48 18 movsd 0x18(%r8),%xmm1 0.00 : 60610e: 66 0f 28 e1 movapd %xmm1,%xmm4 0.00 : 606112: f2 0f 59 25 66 24 56 mulsd 0x562466(%rip),%xmm4 # b68580 0.00 : 606119: 00 : * of a given width (size in bytes). : */ : static double : relation_byte_size(double tuples, int width) : { : return tuples * (MAXALIGN(width) + MAXALIGN(sizeof(HeapTupleHeaderData))); 0.00 : 60611a: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 60611e: 48 63 40 18 movslq 0x18(%rax),%rax 0.00 : 606122: 48 83 c0 07 add $0x7,%rax 0.00 : 606126: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 60612a: 48 83 c0 18 add $0x18,%rax 0.00 : 60612e: 0f 88 3c 01 00 00 js 606270 0.00 : 606134: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 : Cost run_cost = cpu_operator_cost * path->rows; : double nbytes = relation_byte_size(path->rows, : path->parent->width); : long work_mem_bytes = work_mem * 1024L; : : if (nbytes > work_mem_bytes) 0.00 : 606139: 48 63 05 d8 29 56 00 movslq 0x5629d8(%rip),%rax # b68b18 : * of a given width (size in bytes). : */ : static double : relation_byte_size(double tuples, int width) : { : return tuples * (MAXALIGN(width) + MAXALIGN(sizeof(HeapTupleHeaderData))); 0.00 : 606140: f2 0f 59 c8 mulsd %xmm0,%xmm1 : Cost run_cost = cpu_operator_cost * path->rows; : double nbytes = relation_byte_size(path->rows, : path->parent->width); : long work_mem_bytes = work_mem * 1024L; : : if (nbytes > work_mem_bytes) 0.00 : 606144: 48 c1 e0 0a shl $0xa,%rax 0.00 : 606148: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 60614d: 66 0f 2e c8 ucomisd %xmm0,%xmm1 0.00 : 606151: 0f 87 c9 00 00 00 ja 606220 0.00 : 606157: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 60615b: f2 0f 10 4b 20 movsd 0x20(%rbx),%xmm1 0.00 : 606160: 66 0f 28 ec movapd %xmm4,%xmm5 0.00 : 606164: f2 0f 10 5b 28 movsd 0x28(%rbx),%xmm3 0.00 : 606169: 66 0f 28 f2 movapd %xmm2,%xmm6 0.00 : 60616d: f2 0f 5c d9 subsd %xmm1,%xmm3 0.00 : 606171: e9 bd fe ff ff jmpq 606033 0.00 : 606176: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 60617d: 00 00 00 : * even cheaper to rescan than the ones above. We charge only : * cpu_operator_cost per tuple. (Note: keep that in sync with : * the run_cost charge in cost_sort, and also see comments in : * cost_material before you change it.) : */ : Cost run_cost = cpu_operator_cost * path->rows; 0.00 : 606180: f2 41 0f 10 48 18 movsd 0x18(%r8),%xmm1 0.00 : 606186: 66 0f 28 e1 movapd %xmm1,%xmm4 0.00 : 60618a: f2 0f 59 25 fe 23 56 mulsd 0x5623fe(%rip),%xmm4 # b68590 0.00 : 606191: 00 0.00 : 606192: eb 86 jmp 60611a 0.00 : 606194: 0f 1f 40 00 nopl 0x0(%rax) : * estimate whether that will happen, so be conservative and always : * charge the whole first-scan cost once. : */ : run_cost += inner_run_cost; : : outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac); 0.00 : 606198: 48 8b 45 10 mov 0x10(%rbp),%rax : * it might be (depending on the plan type) that we'd never pay the : * whole inner first-scan run cost. However it is difficult to : * estimate whether that will happen, so be conservative and always : * charge the whole first-scan cost once. : */ : run_cost += inner_run_cost; 0.00 : 60619c: f2 0f 58 cb addsd %xmm3,%xmm1 : : outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac); 0.00 : 6061a0: f2 0f 59 38 mulsd (%rax),%xmm7 0.00 : 6061a4: f2 0f 11 55 c0 movsd %xmm2,-0x40(%rbp) 0.00 : 6061a9: f2 0f 11 4d d0 movsd %xmm1,-0x30(%rbp) 0.00 : 6061ae: f2 0f 11 65 b0 movsd %xmm4,-0x50(%rbp) 0.00 : 6061b3: f2 0f 11 6d a0 movsd %xmm5,-0x60(%rbp) 0.00 : 6061b8: 66 0f 28 c7 movapd %xmm7,%xmm0 0.00 : 6061bc: e8 3f 37 e6 ff callq 469900 : inner_scan_frac = 2.0 / (semifactors->match_count + 1.0); 0.00 : 6061c1: 48 8b 45 10 mov 0x10(%rbp),%rax : * estimate whether that will happen, so be conservative and always : * charge the whole first-scan cost once. : */ : run_cost += inner_run_cost; : : outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac); 0.00 : 6061c5: 66 0f 28 f0 movapd %xmm0,%xmm6 : inner_scan_frac = 2.0 / (semifactors->match_count + 1.0); 0.00 : 6061c9: f2 0f 10 55 c0 movsd -0x40(%rbp),%xmm2 0.00 : 6061ce: f2 0f 10 1d 82 c4 1a movsd 0x1ac482(%rip),%xmm3 # 7b2658 <__func__.14520+0x17> 0.00 : 6061d5: 00 0.00 : 6061d6: f2 0f 10 40 08 movsd 0x8(%rax),%xmm0 : : /* Add inner run cost for additional outer tuples having matches */ : if (outer_matched_rows > 1) 0.00 : 6061db: 66 0f 2e f2 ucomisd %xmm2,%xmm6 0.00 : 6061df: f2 0f 10 4d d0 movsd -0x30(%rbp),%xmm1 : * charge the whole first-scan cost once. : */ : run_cost += inner_run_cost; : : outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac); : inner_scan_frac = 2.0 / (semifactors->match_count + 1.0); 0.00 : 6061e4: f2 0f 58 c2 addsd %xmm2,%xmm0 : : /* Add inner run cost for additional outer tuples having matches */ : if (outer_matched_rows > 1) 0.00 : 6061e8: f2 0f 10 65 b0 movsd -0x50(%rbp),%xmm4 0.00 : 6061ed: f2 0f 10 6d a0 movsd -0x60(%rbp),%xmm5 : * charge the whole first-scan cost once. : */ : run_cost += inner_run_cost; : : outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac); : inner_scan_frac = 2.0 / (semifactors->match_count + 1.0); 0.00 : 6061f2: f2 0f 5e d8 divsd %xmm0,%xmm3 : : /* Add inner run cost for additional outer tuples having matches */ : if (outer_matched_rows > 1) 0.00 : 6061f6: 76 14 jbe 60620c : run_cost += (outer_matched_rows - 1) * inner_rescan_run_cost * inner_scan_frac; 0.00 : 6061f8: 66 0f 28 c6 movapd %xmm6,%xmm0 0.00 : 6061fc: f2 0f 5c c2 subsd %xmm2,%xmm0 0.00 : 606200: f2 0f 59 c5 mulsd %xmm5,%xmm0 0.00 : 606204: f2 0f 59 c3 mulsd %xmm3,%xmm0 0.00 : 606208: f2 0f 58 c8 addsd %xmm0,%xmm1 : * The cost of processing unmatched rows varies depending on the : * details of the joinclauses, so we leave that part for later. : */ : : /* Save private data for final_cost_nestloop */ : workspace->outer_matched_rows = outer_matched_rows; 0.00 : 60620c: f2 41 0f 11 75 20 movsd %xmm6,0x20(%r13) : workspace->inner_scan_frac = inner_scan_frac; 0.00 : 606212: f2 41 0f 11 5d 28 movsd %xmm3,0x28(%r13) 0.00 : 606218: e9 79 fe ff ff jmpq 606096 0.00 : 60621d: 0f 1f 00 nopl (%rax) : long work_mem_bytes = work_mem * 1024L; : : if (nbytes > work_mem_bytes) : { : /* It will spill, so account for re-read cost */ : double npages = ceil(nbytes / BLCKSZ); 0.00 : 606220: f2 0f 59 0d 10 be 1a mulsd 0x1abe10(%rip),%xmm1 # 7b2038 <__func__.15386+0x28> 0.00 : 606227: 00 0.00 : 606228: f2 0f 11 65 b0 movsd %xmm4,-0x50(%rbp) 0.00 : 60622d: f2 0f 11 7d 90 movsd %xmm7,-0x70(%rbp) 0.00 : 606232: 66 0f 28 c1 movapd %xmm1,%xmm0 0.00 : 606236: e8 65 32 e6 ff callq 4694a0 0.00 : 60623b: 66 0f 28 e8 movapd %xmm0,%xmm5 : : run_cost += seq_page_cost * npages; 0.00 : 60623f: 66 0f 57 d2 xorpd %xmm2,%xmm2 0.00 : 606243: f2 0f 59 2d 25 23 56 mulsd 0x562325(%rip),%xmm5 # b68570 0.00 : 60624a: 00 0.00 : 60624b: f2 0f 10 4b 20 movsd 0x20(%rbx),%xmm1 0.00 : 606250: f2 0f 10 5b 28 movsd 0x28(%rbx),%xmm3 0.00 : 606255: 66 0f 28 f2 movapd %xmm2,%xmm6 0.00 : 606259: f2 0f 10 65 b0 movsd -0x50(%rbp),%xmm4 0.00 : 60625e: f2 0f 5c d9 subsd %xmm1,%xmm3 0.00 : 606262: f2 0f 10 7d 90 movsd -0x70(%rbp),%xmm7 0.00 : 606267: f2 0f 58 ec addsd %xmm4,%xmm5 0.00 : 60626b: e9 c3 fd ff ff jmpq 606033 : * of a given width (size in bytes). : */ : static double : relation_byte_size(double tuples, int width) : { : return tuples * (MAXALIGN(width) + MAXALIGN(sizeof(HeapTupleHeaderData))); 0.00 : 606270: 48 d1 e8 shr %rax 0.00 : 606273: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 606278: f2 0f 58 c0 addsd %xmm0,%xmm0 0.00 : 60627c: e9 b8 fe ff ff jmpq 606139 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:220 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006124a0 : : bool reverse_sort, : bool nulls_first, : Index sortref, : Relids rel, : bool create_it) : { 0.00 : 6124a0: 55 push %rbp 0.00 : 6124a1: 48 89 e5 mov %rsp,%rbp 0.00 : 6124a4: 48 89 5d d8 mov %rbx,-0x28(%rbp) 0.00 : 6124a8: 4c 89 65 e0 mov %r12,-0x20(%rbp) 0.00 : 6124ac: 4c 89 6d e8 mov %r13,-0x18(%rbp) 0.00 : 6124b0: 4c 89 75 f0 mov %r14,-0x10(%rbp) 0.00 : 6124b4: 41 89 ce mov %ecx,%r14d 0.00 : 6124b7: 4c 89 7d f8 mov %r15,-0x8(%rbp) 0.00 : 6124bb: 48 83 ec 70 sub $0x70,%rsp 0.00 : 6124bf: 8b 45 20 mov 0x20(%rbp),%eax : int16 strategy; : Oid equality_op; : List *opfamilies; : EquivalenceClass *eclass; : : strategy = reverse_sort ? BTGreaterStrategyNumber : BTLessStrategyNumber; 0.00 : 6124c2: 80 7d 10 01 cmpb $0x1,0x10(%rbp) : bool reverse_sort, : bool nulls_first, : Index sortref, : Relids rel, : bool create_it) : { 0.00 : 6124c6: 48 89 7d d0 mov %rdi,-0x30(%rbp) : * EquivalenceClasses need to contain opfamily lists based on the family : * membership of mergejoinable equality operators, which could belong to : * more than one opfamily. So we have to look up the opfamily's equality : * operator and get its membership. : */ : equality_op = get_opfamily_member(opfamily, 0.00 : 6124ca: b9 03 00 00 00 mov $0x3,%ecx : bool reverse_sort, : bool nulls_first, : Index sortref, : Relids rel, : bool create_it) : { 0.00 : 6124cf: 48 89 75 c8 mov %rsi,-0x38(%rbp) 0.00 : 6124d3: 48 89 55 c0 mov %rdx,-0x40(%rbp) : * EquivalenceClasses need to contain opfamily lists based on the family : * membership of mergejoinable equality operators, which could belong to : * more than one opfamily. So we have to look up the opfamily's equality : * operator and get its membership. : */ : equality_op = get_opfamily_member(opfamily, 0.00 : 6124d7: 44 89 c6 mov %r8d,%esi : bool reverse_sort, : bool nulls_first, : Index sortref, : Relids rel, : bool create_it) : { 0.00 : 6124da: 89 45 b4 mov %eax,-0x4c(%rbp) 0.00 : 6124dd: 48 8b 45 28 mov 0x28(%rbp),%rax : * EquivalenceClasses need to contain opfamily lists based on the family : * membership of mergejoinable equality operators, which could belong to : * more than one opfamily. So we have to look up the opfamily's equality : * operator and get its membership. : */ : equality_op = get_opfamily_member(opfamily, 0.00 : 6124e1: 44 89 c2 mov %r8d,%edx : bool reverse_sort, : bool nulls_first, : Index sortref, : Relids rel, : bool create_it) : { 0.00 : 6124e4: 44 89 4d bc mov %r9d,-0x44(%rbp) : * EquivalenceClasses need to contain opfamily lists based on the family : * membership of mergejoinable equality operators, which could belong to : * more than one opfamily. So we have to look up the opfamily's equality : * operator and get its membership. : */ : equality_op = get_opfamily_member(opfamily, 0.00 : 6124e8: 44 89 f7 mov %r14d,%edi : bool reverse_sort, : bool nulls_first, : Index sortref, : Relids rel, : bool create_it) : { 0.00 : 6124eb: 45 89 c5 mov %r8d,%r13d : int16 strategy; : Oid equality_op; : List *opfamilies; : EquivalenceClass *eclass; : : strategy = reverse_sort ? BTGreaterStrategyNumber : BTLessStrategyNumber; 0.00 : 6124ee: 45 19 e4 sbb %r12d,%r12d : bool reverse_sort, : bool nulls_first, : Index sortref, : Relids rel, : bool create_it) : { 0.00 : 6124f1: 44 0f b6 7d 30 movzbl 0x30(%rbp),%r15d 0.00 : 6124f6: 48 89 45 a8 mov %rax,-0x58(%rbp) 0.00 : 6124fa: 0f b6 45 18 movzbl 0x18(%rbp),%eax : int16 strategy; : Oid equality_op; : List *opfamilies; : EquivalenceClass *eclass; : : strategy = reverse_sort ? BTGreaterStrategyNumber : BTLessStrategyNumber; 0.00 : 6124fe: 41 83 e4 fc and $0xfffffffc,%r12d 0.00 : 612502: 41 83 c4 05 add $0x5,%r12d : bool reverse_sort, : bool nulls_first, : Index sortref, : Relids rel, : bool create_it) : { 0.00 : 612506: 88 45 bb mov %al,-0x45(%rbp) : * EquivalenceClasses need to contain opfamily lists based on the family : * membership of mergejoinable equality operators, which could belong to : * more than one opfamily. So we have to look up the opfamily's equality : * operator and get its membership. : */ : equality_op = get_opfamily_member(opfamily, 0.00 : 612509: e8 f2 03 16 00 callq 772900 : opcintype, : opcintype, : BTEqualStrategyNumber); : if (!OidIsValid(equality_op)) /* shouldn't happen */ 0.00 : 61250e: 85 c0 test %eax,%eax : * EquivalenceClasses need to contain opfamily lists based on the family : * membership of mergejoinable equality operators, which could belong to : * more than one opfamily. So we have to look up the opfamily's equality : * operator and get its membership. : */ : equality_op = get_opfamily_member(opfamily, 0.00 : 612510: 89 c3 mov %eax,%ebx : opcintype, : opcintype, : BTEqualStrategyNumber); : if (!OidIsValid(equality_op)) /* shouldn't happen */ 0.00 : 612512: 0f 84 8e 00 00 00 je 6125a6 : elog(ERROR, "could not find equality operator for opfamily %u", : opfamily); : opfamilies = get_mergejoin_opfamilies(equality_op); 0.00 : 612518: 89 c7 mov %eax,%edi 0.00 : 61251a: e8 c1 26 16 00 callq 774be0 : if (!opfamilies) /* certainly should find some */ 0.00 : 61251f: 48 85 c0 test %rax,%rax : opcintype, : BTEqualStrategyNumber); : if (!OidIsValid(equality_op)) /* shouldn't happen */ : elog(ERROR, "could not find equality operator for opfamily %u", : opfamily); : opfamilies = get_mergejoin_opfamilies(equality_op); 0.00 : 612522: 48 89 c2 mov %rax,%rdx : if (!opfamilies) /* certainly should find some */ 0.00 : 612525: 0f 84 a8 00 00 00 je 6125d3 : elog(ERROR, "could not find opfamilies for equality operator %u", : equality_op); : : /* Now find or (optionally) create a matching EquivalenceClass */ : eclass = get_eclass_for_sort_expr(root, expr, nullable_relids, 0.00 : 61252b: 41 0f be c7 movsbl %r15b,%eax 0.00 : 61252f: 48 89 d1 mov %rdx,%rcx 0.00 : 612532: 45 89 e8 mov %r13d,%r8d 0.00 : 612535: 89 44 24 10 mov %eax,0x10(%rsp) 0.00 : 612539: 48 8b 45 a8 mov -0x58(%rbp),%rax 0.00 : 61253d: 48 89 44 24 08 mov %rax,0x8(%rsp) 0.00 : 612542: 8b 45 b4 mov -0x4c(%rbp),%eax 0.00 : 612545: 89 04 24 mov %eax,(%rsp) 0.00 : 612548: 44 8b 4d bc mov -0x44(%rbp),%r9d 0.00 : 61254c: 48 8b 55 c0 mov -0x40(%rbp),%rdx 0.00 : 612550: 48 8b 75 c8 mov -0x38(%rbp),%rsi 0.00 : 612554: 48 8b 7d d0 mov -0x30(%rbp),%rdi 0.00 : 612558: e8 a3 70 ff ff callq 609600 : opfamilies, opcintype, collation, : sortref, rel, create_it); : : /* Fail if no EC and !create_it */ : if (!eclass) 0.00 : 61255d: 48 85 c0 test %rax,%rax 0.00 : 612560: 74 2e je 612590 : return NULL; : : /* And finally we can find or create a PathKey node */ : return make_canonical_pathkey(root, eclass, opfamily, 0.00 : 612562: 44 0f be 45 bb movsbl -0x45(%rbp),%r8d 0.00 : 612567: 41 0f bf cc movswl %r12w,%ecx 0.00 : 61256b: 44 89 f2 mov %r14d,%edx 0.00 : 61256e: 48 8b 7d d0 mov -0x30(%rbp),%rdi : strategy, nulls_first); : } 0.00 : 612572: 48 8b 5d d8 mov -0x28(%rbp),%rbx : /* Fail if no EC and !create_it */ : if (!eclass) : return NULL; : : /* And finally we can find or create a PathKey node */ : return make_canonical_pathkey(root, eclass, opfamily, 0.00 : 612576: 48 89 c6 mov %rax,%rsi : strategy, nulls_first); : } 0.00 : 612579: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 61257d: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 612581: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 612585: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 612589: c9 leaveq : /* Fail if no EC and !create_it */ : if (!eclass) : return NULL; : : /* And finally we can find or create a PathKey node */ : return make_canonical_pathkey(root, eclass, opfamily, /home/Computational/mark/src/postgres-andres/src/backend/optimizer/path/pathkeys.c:220 100.00 : 61258a: e9 91 f6 ff ff jmpq 611c20 0.00 : 61258f: 90 nop : strategy, nulls_first); : } 0.00 : 612590: 48 8b 5d d8 mov -0x28(%rbp),%rbx 0.00 : 612594: 4c 8b 65 e0 mov -0x20(%rbp),%r12 0.00 : 612598: 4c 8b 6d e8 mov -0x18(%rbp),%r13 0.00 : 61259c: 4c 8b 75 f0 mov -0x10(%rbp),%r14 0.00 : 6125a0: 4c 8b 7d f8 mov -0x8(%rbp),%r15 0.00 : 6125a4: c9 leaveq 0.00 : 6125a5: c3 retq : equality_op = get_opfamily_member(opfamily, : opcintype, : opcintype, : BTEqualStrategyNumber); : if (!OidIsValid(equality_op)) /* shouldn't happen */ : elog(ERROR, "could not find equality operator for opfamily %u", 0.00 : 6125a6: ba 90 ab 89 00 mov $0x89ab90,%edx 0.00 : 6125ab: be cc 00 00 00 mov $0xcc,%esi 0.00 : 6125b0: bf 46 aa 89 00 mov $0x89aa46,%edi 0.00 : 6125b5: e8 66 8e 16 00 callq 77b420 0.00 : 6125ba: 44 89 f2 mov %r14d,%edx 0.00 : 6125bd: be a8 aa 89 00 mov $0x89aaa8,%esi 0.00 : 6125c2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6125c7: 31 c0 xor %eax,%eax 0.00 : 6125c9: e8 62 8c 16 00 callq 77b230 0.00 : 6125ce: e8 fd 6e e5 ff callq 4694d0 : opfamily); : opfamilies = get_mergejoin_opfamilies(equality_op); : if (!opfamilies) /* certainly should find some */ : elog(ERROR, "could not find opfamilies for equality operator %u", 0.00 : 6125d3: ba 90 ab 89 00 mov $0x89ab90,%edx 0.00 : 6125d8: be d0 00 00 00 mov $0xd0,%esi 0.00 : 6125dd: bf 46 aa 89 00 mov $0x89aa46,%edi 0.00 : 6125e2: e8 39 8e 16 00 callq 77b420 0.00 : 6125e7: 89 da mov %ebx,%edx 0.00 : 6125e9: be e0 aa 89 00 mov $0x89aae0,%esi 0.00 : 6125ee: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6125f3: 31 c0 xor %eax,%eax 0.00 : 6125f5: e8 36 8c 16 00 callq 77b230 0.00 : 6125fa: e8 d1 6e e5 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:436 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000638090 : : * : * Unlock a semaphore (increment count) : */ : void : PGSemaphoreUnlock(PGSemaphore sema) : { 0.00 : 638090: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/port/pg_sema.c:436 100.00 : 638091: 48 89 e5 mov %rsp,%rbp 0.00 : 638094: 41 54 push %r12 0.00 : 638096: 4c 8d 65 e0 lea -0x20(%rbp),%r12 0.00 : 63809a: 53 push %rbx 0.00 : 63809b: 48 89 fb mov %rdi,%rbx 0.00 : 63809e: 48 83 ec 10 sub $0x10,%rsp : int errStatus; : struct sembuf sops; : : sops.sem_op = 1; /* increment */ 0.00 : 6380a2: 66 c7 45 e2 01 00 movw $0x1,-0x1e(%rbp) : sops.sem_flg = 0; 0.00 : 6380a8: 66 c7 45 e4 00 00 movw $0x0,-0x1c(%rbp) : sops.sem_num = sema->semNum; 0.00 : 6380ae: 8b 47 04 mov 0x4(%rdi),%eax 0.00 : 6380b1: 66 89 45 e0 mov %ax,-0x20(%rbp) 0.00 : 6380b5: 0f 1f 00 nopl (%rax) : * try and unlock the semaphore again. Not clear this can really happen, : * but might as well cope. : */ : do : { : errStatus = semop(sema->semId, &sops, 1); 0.00 : 6380b8: 8b 3b mov (%rbx),%edi 0.00 : 6380ba: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6380bf: 4c 89 e6 mov %r12,%rsi 0.00 : 6380c2: e8 f9 1d e3 ff callq 469ec0 : } while (errStatus < 0 && errno == EINTR); 0.00 : 6380c7: 85 c0 test %eax,%eax 0.00 : 6380c9: 79 3d jns 638108 0.00 : 6380cb: e8 f0 1b e3 ff callq 469cc0 <__errno_location@plt> 0.00 : 6380d0: 83 38 04 cmpl $0x4,(%rax) 0.00 : 6380d3: 74 e3 je 6380b8 : : if (errStatus < 0) : elog(FATAL, "semop(id=%d) failed: %m", sema->semId); 0.00 : 6380d5: ba 70 d5 89 00 mov $0x89d570,%edx 0.00 : 6380da: be c8 01 00 00 mov $0x1c8,%esi 0.00 : 6380df: bf f7 d1 89 00 mov $0x89d1f7,%edi 0.00 : 6380e4: e8 37 33 14 00 callq 77b420 0.00 : 6380e9: 8b 13 mov (%rbx),%edx 0.00 : 6380eb: be 01 d2 89 00 mov $0x89d201,%esi 0.00 : 6380f0: bf 15 00 00 00 mov $0x15,%edi 0.00 : 6380f5: 31 c0 xor %eax,%eax 0.00 : 6380f7: e8 34 31 14 00 callq 77b230 0.00 : 6380fc: e8 cf 13 e3 ff callq 4694d0 0.00 : 638101: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : } 0.00 : 638108: 48 83 c4 10 add $0x10,%rsp 0.00 : 63810c: 5b pop %rbx 0.00 : 63810d: 41 5c pop %r12 0.00 : 63810f: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:553 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000639040 : : * Clear the latch. Calling WaitLatch after this will sleep, unless : * the latch is set again before the WaitLatch call. : */ : void : ResetLatch(volatile Latch *latch) : { 0.00 : 639040: 55 push %rbp : /* Only the owner should reset the latch */ : Assert(latch->owner_pid == MyProcPid); : : latch->is_set = false; 0.00 : 639041: c7 07 00 00 00 00 movl $0x0,(%rdi) : * Clear the latch. Calling WaitLatch after this will sleep, unless : * the latch is set again before the WaitLatch call. : */ : void : ResetLatch(volatile Latch *latch) : { /home/Computational/mark/src/postgres-andres/src/backend/port/pg_latch.c:553 100.00 : 639047: 48 89 e5 mov %rsp,%rbp : * falsely conclude that it needn't signal us, even though we have missed : * seeing some flag updates that SetLatch was supposed to inform us of. : * For the moment, callers must supply their own synchronization of flag : * variables (see latch.h). : */ : } 0.00 : 63904a: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:759 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000063e530 : : * 'progress' is an estimate of how much of the work has been done, as a : * fraction between 0.0 meaning none, and 1.0 meaning all done. : */ : void : CheckpointWriteDelay(int flags, double progress) : { 0.00 : 63e530: 55 push %rbp 0.00 : 63e531: 48 89 e5 mov %rsp,%rbp 0.00 : 63e534: 48 83 ec 20 sub $0x20,%rsp : static int absorb_counter = WRITES_PER_ABSORB; : : /* Do nothing if checkpoint is being executed by non-checkpointer process */ : if (!AmCheckpointerProcess()) 0.00 : 63e538: 83 3d 39 99 52 00 04 cmpl $0x4,0x529939(%rip) # b67e78 0.00 : 63e53f: 74 07 je 63e548 : * fsync request queue. : */ : AbsorbFsyncRequests(); : absorb_counter = WRITES_PER_ABSORB; : } : } 0.00 : 63e541: c9 leaveq 0.00 : 63e542: c3 retq 0.00 : 63e543: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : : /* : * Perform the usual duties and take a nap, unless we're behind schedule, : * in which case we just try to catch up as quickly as possible. : */ : if (!(flags & CHECKPOINT_IMMEDIATE) && 0.00 : 63e548: 83 e7 04 and $0x4,%edi 0.00 : 63e54b: 75 23 jne 63e570 0.00 : 63e54d: 8b 05 c1 d5 53 00 mov 0x53d5c1(%rip),%eax # b7bb14 0.00 : 63e553: 85 c0 test %eax,%eax 0.00 : 63e555: 75 19 jne 63e570 : * there is one pending behind it.) : */ : static bool : ImmediateCheckpointRequested(void) : { : if (checkpoint_requested) 0.00 : 63e557: 8b 05 bf d5 53 00 mov 0x53d5bf(%rip),%eax # b7bb1c 0.00 : 63e55d: 85 c0 test %eax,%eax 0.00 : 63e55f: 74 37 je 63e598 : { : volatile CheckpointerShmemStruct *cps = CheckpointerShmem; 0.00 : 63e561: 48 8b 05 c0 d5 53 00 mov 0x53d5c0(%rip),%rax # b7bb28 : : /* : * We don't need to acquire the ckpt_lck in this case because we're : * only looking at a single flag bit. : */ : if (cps->ckpt_flags & CHECKPOINT_IMMEDIATE) 0.00 : 63e568: 8b 40 14 mov 0x14(%rax),%eax 0.00 : 63e56b: a8 04 test $0x4,%al 0.00 : 63e56d: 74 29 je 63e598 0.00 : 63e56f: 90 nop : * Checkpointer and bgwriter are no longer related so take the Big : * Sleep. : */ : pg_usleep(100000L); : } : else if (--absorb_counter <= 0) 0.00 : 63e570: 8b 05 92 a0 52 00 mov 0x52a092(%rip),%eax # b68608 0.00 : 63e576: 83 e8 01 sub $0x1,%eax 0.00 : 63e579: 85 c0 test %eax,%eax 0.00 : 63e57b: 89 05 87 a0 52 00 mov %eax,0x52a087(%rip) # b68608 0.00 : 63e581: 7f be jg 63e541 : /* : * Absorb pending fsync requests after each WRITES_PER_ABSORB write : * operations even when we don't sleep, to prevent overflow of the : * fsync request queue. : */ : AbsorbFsyncRequests(); 0.00 : 63e583: e8 18 f6 ff ff callq 63dba0 : absorb_counter = WRITES_PER_ABSORB; 0.00 : 63e588: c7 05 76 a0 52 00 e8 movl $0x3e8,0x52a076(%rip) # b68608 0.00 : 63e58f: 03 00 00 : } : } 0.00 : 63e592: c9 leaveq 0.00 : 63e593: c3 retq 0.00 : 63e594: 0f 1f 40 00 nopl 0x0(%rax) : elapsed_time; : : Assert(ckpt_active); : : /* Scale progress according to checkpoint_completion_target. */ : progress *= CheckPointCompletionTarget; 0.00 : 63e598: 66 0f 28 d0 movapd %xmm0,%xmm2 : * Check against the cached value first. Only do the more expensive : * calculations once we reach the target previously calculated. Since : * neither time or WAL insert pointer moves backwards, a freshly : * calculated value can only be greater than or equal to the cached value. : */ : if (progress < ckpt_cached_elapsed) 0.00 : 63e59c: f2 0f 10 05 9c d5 53 movsd 0x53d59c(%rip),%xmm0 # b7bb40 0.00 : 63e5a3: 00 : elapsed_time; : : Assert(ckpt_active); : : /* Scale progress according to checkpoint_completion_target. */ : progress *= CheckPointCompletionTarget; 0.00 : 63e5a4: f2 0f 59 15 54 a0 52 mulsd 0x52a054(%rip),%xmm2 # b68600 0.00 : 63e5ab: 00 : * Check against the cached value first. Only do the more expensive : * calculations once we reach the target previously calculated. Since : * neither time or WAL insert pointer moves backwards, a freshly : * calculated value can only be greater than or equal to the cached value. : */ : if (progress < ckpt_cached_elapsed) /home/Computational/mark/src/postgres-andres/src/backend/postmaster/checkpointer.c:759 100.00 : 63e5ac: 66 0f 2e c2 ucomisd %xmm2,%xmm0 0.00 : 63e5b0: 77 be ja 63e570 : * actually triggers a checkpoint when checkpoint_segments is exceeded : * compares against RedoRecptr, so this is not completely accurate. : * However, it's good enough for our purposes, we're only calculating an : * estimate anyway. : */ : if (!RecoveryInProgress()) 0.00 : 63e5b2: f2 0f 11 55 e0 movsd %xmm2,-0x20(%rbp) 0.00 : 63e5b7: e8 04 ef e8 ff callq 4cd4c0 0.00 : 63e5bc: 84 c0 test %al,%al 0.00 : 63e5be: f2 0f 10 55 e0 movsd -0x20(%rbp),%xmm2 0.00 : 63e5c3: 75 4a jne 63e60f : { : recptr = GetInsertRecPtr(); 0.00 : 63e5c5: e8 f6 ed e8 ff callq 4cd3c0 : elapsed_xlogs = (((double) (recptr - ckpt_start_recptr)) / XLogSegSize) / CheckPointSegments; 0.00 : 63e5ca: 48 89 c2 mov %rax,%rdx 0.00 : 63e5cd: 48 2b 15 64 d5 53 00 sub 0x53d564(%rip),%rdx # b7bb38 0.00 : 63e5d4: f2 0f 10 55 e0 movsd -0x20(%rbp),%xmm2 0.00 : 63e5d9: 0f 88 c2 00 00 00 js 63e6a1 0.00 : 63e5df: f2 48 0f 2a c2 cvtsi2sd %rdx,%xmm0 0.00 : 63e5e4: 66 0f 28 c8 movapd %xmm0,%xmm1 0.00 : 63e5e8: f2 0f 2a 05 50 98 52 cvtsi2sdl 0x529850(%rip),%xmm0 # b67e40 0.00 : 63e5ef: 00 0.00 : 63e5f0: f2 0f 59 0d 00 06 26 mulsd 0x260600(%rip),%xmm1 # 89ebf8 <__func__.14475+0x18> 0.00 : 63e5f7: 00 0.00 : 63e5f8: f2 0f 5e c8 divsd %xmm0,%xmm1 : : if (progress < elapsed_xlogs) 0.00 : 63e5fc: 66 0f 2e ca ucomisd %xmm2,%xmm1 0.00 : 63e600: 76 0d jbe 63e60f : elapsed_time = ((double) ((pg_time_t) now.tv_sec - ckpt_start_time) + : now.tv_usec / 1000000.0) / CheckPointTimeout; : : if (progress < elapsed_time) : { : ckpt_cached_elapsed = elapsed_time; 0.00 : 63e602: f2 0f 11 0d 36 d5 53 movsd %xmm1,0x53d536(%rip) # b7bb40 0.00 : 63e609: 00 0.00 : 63e60a: e9 61 ff ff ff jmpq 63e570 : } : : /* : * Check progress against time elapsed and checkpoint_timeout. : */ : gettimeofday(&now, NULL); 0.00 : 63e60f: f2 0f 11 55 e0 movsd %xmm2,-0x20(%rbp) 0.00 : 63e614: 48 8d 7d f0 lea -0x10(%rbp),%rdi 0.00 : 63e618: 31 f6 xor %esi,%esi 0.00 : 63e61a: e8 a1 af e2 ff callq 4695c0 : elapsed_time = ((double) ((pg_time_t) now.tv_sec - ckpt_start_time) + 0.00 : 63e61f: f2 48 0f 2a 45 f8 cvtsi2sdq -0x8(%rbp),%xmm0 0.00 : 63e625: f2 0f 5e 05 b3 df 23 divsd 0x23dfb3(%rip),%xmm0 # 87c5e0 <__func__.18742+0x1b> 0.00 : 63e62c: 00 0.00 : 63e62d: 48 8b 45 f0 mov -0x10(%rbp),%rax 0.00 : 63e631: 48 2b 05 f8 d4 53 00 sub 0x53d4f8(%rip),%rax # b7bb30 0.00 : 63e638: f2 48 0f 2a c8 cvtsi2sd %rax,%xmm1 : now.tv_usec / 1000000.0) / CheckPointTimeout; : : if (progress < elapsed_time) 0.00 : 63e63d: f2 0f 10 55 e0 movsd -0x20(%rbp),%xmm2 : : /* : * Check progress against time elapsed and checkpoint_timeout. : */ : gettimeofday(&now, NULL); : elapsed_time = ((double) ((pg_time_t) now.tv_sec - ckpt_start_time) + 0.00 : 63e642: f2 0f 58 c8 addsd %xmm0,%xmm1 0.00 : 63e646: f2 0f 2a 05 aa 9f 52 cvtsi2sdl 0x529faa(%rip),%xmm0 # b685f8 0.00 : 63e64d: 00 0.00 : 63e64e: f2 0f 5e c8 divsd %xmm0,%xmm1 : now.tv_usec / 1000000.0) / CheckPointTimeout; : : if (progress < elapsed_time) 0.00 : 63e652: 66 0f 2e ca ucomisd %xmm2,%xmm1 0.00 : 63e656: 77 aa ja 63e602 : if (!(flags & CHECKPOINT_IMMEDIATE) && : !shutdown_requested && : !ImmediateCheckpointRequested() && : IsCheckpointOnSchedule(progress)) : { : if (got_SIGHUP) 0.00 : 63e658: 8b 05 ba d4 53 00 mov 0x53d4ba(%rip),%eax # b7bb18 0.00 : 63e65e: 85 c0 test %eax,%eax 0.00 : 63e660: 74 19 je 63e67b : { : got_SIGHUP = false; : ProcessConfigFile(PGC_SIGHUP); 0.00 : 63e662: bf 02 00 00 00 mov $0x2,%edi : !ImmediateCheckpointRequested() && : IsCheckpointOnSchedule(progress)) : { : if (got_SIGHUP) : { : got_SIGHUP = false; 0.00 : 63e667: c7 05 a7 d4 53 00 00 movl $0x0,0x53d4a7(%rip) # b7bb18 0.00 : 63e66e: 00 00 00 : ProcessConfigFile(PGC_SIGHUP); 0.00 : 63e671: e8 8a 61 15 00 callq 794800 : /* update shmem copies of config variables */ : UpdateSharedMemoryConfig(); 0.00 : 63e676: e8 b5 fd ff ff callq 63e430 : } : : AbsorbFsyncRequests(); 0.00 : 63e67b: e8 20 f5 ff ff callq 63dba0 : absorb_counter = WRITES_PER_ABSORB; 0.00 : 63e680: c7 05 7e 9f 52 00 e8 movl $0x3e8,0x529f7e(%rip) # b68608 0.00 : 63e687: 03 00 00 : : CheckArchiveTimeout(); 0.00 : 63e68a: e8 e1 fd ff ff callq 63e470 : : /* : * Report interim activity statistics to the stats collector. : */ : pgstat_send_bgwriter(); 0.00 : 63e68f: e8 cc 16 00 00 callq 63fd60 : * This sleep used to be connected to bgwriter_delay, typically 200ms. : * That resulted in more frequent wakeups if not much work to do. : * Checkpointer and bgwriter are no longer related so take the Big : * Sleep. : */ : pg_usleep(100000L); 0.00 : 63e694: bf a0 86 01 00 mov $0x186a0,%edi 0.00 : 63e699: e8 b2 e0 16 00 callq 7ac750 : * fsync request queue. : */ : AbsorbFsyncRequests(); : absorb_counter = WRITES_PER_ABSORB; : } : } 0.00 : 63e69e: c9 leaveq 0.00 : 63e69f: 90 nop 0.00 : 63e6a0: c3 retq : * estimate anyway. : */ : if (!RecoveryInProgress()) : { : recptr = GetInsertRecPtr(); : elapsed_xlogs = (((double) (recptr - ckpt_start_recptr)) / XLogSegSize) / CheckPointSegments; 0.00 : 63e6a1: 48 89 d0 mov %rdx,%rax 0.00 : 63e6a4: 83 e2 01 and $0x1,%edx 0.00 : 63e6a7: 48 d1 e8 shr %rax 0.00 : 63e6aa: 48 09 d0 or %rdx,%rax 0.00 : 63e6ad: f2 48 0f 2a c0 cvtsi2sd %rax,%xmm0 0.00 : 63e6b2: f2 0f 58 c0 addsd %xmm0,%xmm0 0.00 : 63e6b6: e9 29 ff ff ff jmpq 63e5e4 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:1727 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000646160 : : * send anything to the client, which would typically be appropriate : * if we detect a communications failure.) : */ : static int : ProcessStartupPacket(Port *port, bool SSLdone) : { /home/Computational/mark/src/postgres-andres/src/backend/postmaster/postmaster.c:1727 100.00 : 646160: 55 push %rbp 0.00 : 646161: 48 89 e5 mov %rsp,%rbp 0.00 : 646164: 41 57 push %r15 0.00 : 646166: 41 56 push %r14 0.00 : 646168: 41 55 push %r13 0.00 : 64616a: 41 89 f5 mov %esi,%r13d : int32 len; : void *buf; : ProtocolVersion proto; : MemoryContext oldcontext; : : if (pq_getbytes((char *) &len, 4) == EOF) 0.00 : 64616d: be 04 00 00 00 mov $0x4,%esi : * send anything to the client, which would typically be appropriate : * if we detect a communications failure.) : */ : static int : ProcessStartupPacket(Port *port, bool SSLdone) : { 0.00 : 646172: 41 54 push %r12 0.00 : 646174: 53 push %rbx 0.00 : 646175: 48 83 ec 28 sub $0x28,%rsp 0.00 : 646179: 48 89 7d b8 mov %rdi,-0x48(%rbp) : int32 len; : void *buf; : ProtocolVersion proto; : MemoryContext oldcontext; : : if (pq_getbytes((char *) &len, 4) == EOF) 0.00 : 64617d: 48 8d 7d d0 lea -0x30(%rbp),%rdi 0.00 : 646181: e8 ea 5b f9 ff callq 5dbd70 0.00 : 646186: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 646189: 41 89 c4 mov %eax,%r12d 0.00 : 64618c: 0f 84 26 07 00 00 je 6468b8 : (errcode(ERRCODE_PROTOCOL_VIOLATION), : errmsg("incomplete startup packet"))); : return STATUS_ERROR; : } : : len = ntohl(len); 0.00 : 646192: 8b 45 d0 mov -0x30(%rbp),%eax 0.00 : 646195: 0f c8 bswap %eax : len -= 4; 0.00 : 646197: 8d 50 fc lea -0x4(%rax),%edx : : if (len < (int32) sizeof(ProtocolVersion) || 0.00 : 64619a: 83 e8 08 sub $0x8,%eax 0.00 : 64619d: 3d 0c 27 00 00 cmp $0x270c,%eax : errmsg("incomplete startup packet"))); : return STATUS_ERROR; : } : : len = ntohl(len); : len -= 4; 0.00 : 6461a2: 89 55 d0 mov %edx,-0x30(%rbp) : : if (len < (int32) sizeof(ProtocolVersion) || 0.00 : 6461a5: 0f 87 a1 07 00 00 ja 64694c : * Allocate at least the size of an old-style startup packet, plus one : * extra byte, and make sure all are zeroes. This ensures we will have : * null termination of all strings, in both fixed- and variable-length : * packet layouts. : */ : if (len <= (int32) sizeof(StartupPacket)) 0.00 : 6461ab: 81 fa 24 01 00 00 cmp $0x124,%edx 0.00 : 6461b1: 0f 8e 61 01 00 00 jle 646318 : buf = palloc0(sizeof(StartupPacket) + 1); : else : buf = palloc0(len + 1); 0.00 : 6461b7: 8d 7a 01 lea 0x1(%rdx),%edi 0.00 : 6461ba: 48 63 ff movslq %edi,%rdi 0.00 : 6461bd: e8 ae 2d 15 00 callq 798f70 0.00 : 6461c2: 49 89 c7 mov %rax,%r15 : : if (pq_getbytes(buf, len) == EOF) 0.00 : 6461c5: 48 63 75 d0 movslq -0x30(%rbp),%rsi 0.00 : 6461c9: 4c 89 ff mov %r15,%rdi 0.00 : 6461cc: e8 9f 5b f9 ff callq 5dbd70 0.00 : 6461d1: 83 f8 ff cmp $0xffffffff,%eax 0.00 : 6461d4: 41 89 c4 mov %eax,%r12d 0.00 : 6461d7: 0f 84 c0 07 00 00 je 64699d : : /* : * The first field is either a protocol version number or a special : * request code. : */ : port->proto = proto = ntohl(*((ProtocolVersion *) buf)); 0.00 : 6461dd: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6461e1: 41 8b 1f mov (%r15),%ebx 0.00 : 6461e4: 0f cb bswap %ebx : : if (proto == CANCEL_REQUEST_CODE) 0.00 : 6461e6: 81 fb 2e 16 d2 04 cmp $0x4d2162e,%ebx : : /* : * The first field is either a protocol version number or a special : * request code. : */ : port->proto = proto = ntohl(*((ProtocolVersion *) buf)); 0.00 : 6461ec: 89 58 08 mov %ebx,0x8(%rax) : : if (proto == CANCEL_REQUEST_CODE) 0.00 : 6461ef: 0f 84 ba 07 00 00 je 6469af : processCancelRequest(port, buf); : /* Not really an error, but we don't want to proceed further */ : return STATUS_ERROR; : } : : if (proto == NEGOTIATE_SSL_CODE && !SSLdone) 0.00 : 6461f5: 81 fb 2f 16 d2 04 cmp $0x4d2162f,%ebx 0.00 : 6461fb: 0f 84 9f 01 00 00 je 6463a0 : */ : FrontendProtocol = proto; : : /* Check we can handle the protocol the frontend is using. */ : : if (PG_PROTOCOL_MAJOR(proto) < PG_PROTOCOL_MAJOR(PG_PROTOCOL_EARLIEST) || 0.00 : 646201: 41 89 dc mov %ebx,%r12d : : /* : * Set FrontendProtocol now so that ereport() knows what format to send if : * we fail during startup. : */ : FrontendProtocol = proto; 0.00 : 646204: 89 1d d6 9a 57 00 mov %ebx,0x579ad6(%rip) # bbfce0 : : /* Check we can handle the protocol the frontend is using. */ : : if (PG_PROTOCOL_MAJOR(proto) < PG_PROTOCOL_MAJOR(PG_PROTOCOL_EARLIEST) || 0.00 : 64620a: 41 c1 ec 10 shr $0x10,%r12d 0.00 : 64620e: 41 8d 44 24 ff lea -0x1(%r12),%eax 0.00 : 646213: 83 f8 02 cmp $0x2,%eax 0.00 : 646216: 0f 87 91 04 00 00 ja 6466ad 0.00 : 64621c: 41 83 fc 03 cmp $0x3,%r12d 0.00 : 646220: 0f 84 82 04 00 00 je 6466a8 : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 646226: 48 8b 15 33 46 57 00 mov 0x574633(%rip),%rdx # bba860 : : CurrentMemoryContext = context; 0.00 : 64622d: 48 8b 05 34 46 57 00 mov 0x574634(%rip),%rax # bba868 : * not worry about leaking this storage on failure, since we aren't in the : * postmaster process anymore. : */ : oldcontext = MemoryContextSwitchTo(TopMemoryContext); : : if (PG_PROTOCOL_MAJOR(proto) >= 3) 0.00 : 646234: 41 83 fc 02 cmp $0x2,%r12d : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 646238: 48 89 55 c0 mov %rdx,-0x40(%rbp) : : CurrentMemoryContext = context; 0.00 : 64623c: 48 89 05 1d 46 57 00 mov %rax,0x57461d(%rip) # bba860 0.00 : 646243: 0f 86 4f 03 00 00 jbe 646598 : /* : * Scan packet body for name/option pairs. We can assume any string : * beginning within the packet body is null-terminated, thanks to : * zeroing extra byte above. : */ : port->guc_options = NIL; 0.00 : 646249: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 64624d: 48 c7 80 60 01 00 00 movq $0x0,0x160(%rax) 0.00 : 646254: 00 00 00 00 : : while (offset < len) 0.00 : 646258: 44 8b 6d d0 mov -0x30(%rbp),%r13d 0.00 : 64625c: 41 83 fd 04 cmp $0x4,%r13d 0.00 : 646260: 0f 8e b4 01 00 00 jle 64641a : { : char *nameptr = ((char *) buf) + offset; : int32 valoffset; : char *valptr; : : if (*nameptr == '\0') 0.00 : 646266: 41 80 7f 04 00 cmpb $0x0,0x4(%r15) : */ : port->guc_options = NIL; : : while (offset < len) : { : char *nameptr = ((char *) buf) + offset; 0.00 : 64626b: 49 8d 5f 04 lea 0x4(%r15),%rbx : int32 valoffset; : char *valptr; : : if (*nameptr == '\0') 0.00 : 64626f: 41 bc 04 00 00 00 mov $0x4,%r12d 0.00 : 646275: 75 46 jne 6462bd 0.00 : 646277: e9 9e 01 00 00 jmpq 64641a 0.00 : 64627c: 0f 1f 40 00 nopl 0x0(%rax) : if (valoffset >= len) : break; /* missing value, will complain below */ : valptr = ((char *) buf) + valoffset; : : if (strcmp(nameptr, "database") == 0) : port->database_name = pstrdup(valptr); 0.00 : 646280: 4c 89 e7 mov %r12,%rdi 0.00 : 646283: e8 c8 2c 15 00 callq 798f50 0.00 : 646288: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 64628c: 48 89 82 48 01 00 00 mov %rax,0x148(%rdx) 0.00 : 646293: 44 8b 6d d0 mov -0x30(%rbp),%r13d : port->guc_options = lappend(port->guc_options, : pstrdup(nameptr)); : port->guc_options = lappend(port->guc_options, : pstrdup(valptr)); : } : offset = valoffset + strlen(valptr) + 1; 0.00 : 646297: 4c 89 e7 mov %r12,%rdi 0.00 : 64629a: e8 b1 35 e2 ff callq 469850 0.00 : 64629f: 45 8d 64 06 01 lea 0x1(%r14,%rax,1),%r12d : * beginning within the packet body is null-terminated, thanks to : * zeroing extra byte above. : */ : port->guc_options = NIL; : : while (offset < len) 0.00 : 6462a4: 45 39 e5 cmp %r12d,%r13d 0.00 : 6462a7: 0f 8e 73 01 00 00 jle 646420 : { : char *nameptr = ((char *) buf) + offset; 0.00 : 6462ad: 49 63 c4 movslq %r12d,%rax 0.00 : 6462b0: 49 8d 1c 07 lea (%r15,%rax,1),%rbx : int32 valoffset; : char *valptr; : : if (*nameptr == '\0') 0.00 : 6462b4: 80 3b 00 cmpb $0x0,(%rbx) 0.00 : 6462b7: 0f 84 63 01 00 00 je 646420 : break; /* found packet terminator */ : valoffset = offset + strlen(nameptr) + 1; 0.00 : 6462bd: 48 89 df mov %rbx,%rdi 0.00 : 6462c0: e8 8b 35 e2 ff callq 469850 0.00 : 6462c5: 45 8d 74 04 01 lea 0x1(%r12,%rax,1),%r14d : if (valoffset >= len) 0.00 : 6462ca: 45 39 ee cmp %r13d,%r14d 0.00 : 6462cd: 0f 8d 4d 01 00 00 jge 646420 : break; /* missing value, will complain below */ : valptr = ((char *) buf) + valoffset; : : if (strcmp(nameptr, "database") == 0) 0.00 : 6462d3: 48 89 de mov %rbx,%rsi 0.00 : 6462d6: bf 4f d8 8c 00 mov $0x8cd84f,%edi 0.00 : 6462db: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 6462e0: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) : if (*nameptr == '\0') : break; /* found packet terminator */ : valoffset = offset + strlen(nameptr) + 1; : if (valoffset >= len) : break; /* missing value, will complain below */ : valptr = ((char *) buf) + valoffset; 0.00 : 6462e2: 49 63 c6 movslq %r14d,%rax 0.00 : 6462e5: 4d 8d 24 07 lea (%r15,%rax,1),%r12 : : if (strcmp(nameptr, "database") == 0) 0.00 : 6462e9: 74 95 je 646280 : port->database_name = pstrdup(valptr); : else if (strcmp(nameptr, "user") == 0) 0.00 : 6462eb: 48 89 de mov %rbx,%rsi 0.00 : 6462ee: bf b1 a5 8d 00 mov $0x8da5b1,%edi 0.00 : 6462f3: b9 05 00 00 00 mov $0x5,%ecx 0.00 : 6462f8: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 6462fa: 75 34 jne 646330 : port->user_name = pstrdup(valptr); 0.00 : 6462fc: 4c 89 e7 mov %r12,%rdi 0.00 : 6462ff: e8 4c 2c 15 00 callq 798f50 0.00 : 646304: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 646308: 48 89 82 50 01 00 00 mov %rax,0x150(%rdx) 0.00 : 64630f: 44 8b 6d d0 mov -0x30(%rbp),%r13d 0.00 : 646313: eb 82 jmp 646297 0.00 : 646315: 0f 1f 00 nopl (%rax) : * extra byte, and make sure all are zeroes. This ensures we will have : * null termination of all strings, in both fixed- and variable-length : * packet layouts. : */ : if (len <= (int32) sizeof(StartupPacket)) : buf = palloc0(sizeof(StartupPacket) + 1); 0.00 : 646318: bf 25 01 00 00 mov $0x125,%edi 0.00 : 64631d: e8 4e 2c 15 00 callq 798f70 0.00 : 646322: 49 89 c7 mov %rax,%r15 0.00 : 646325: e9 9b fe ff ff jmpq 6461c5 0.00 : 64632a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : : if (strcmp(nameptr, "database") == 0) : port->database_name = pstrdup(valptr); : else if (strcmp(nameptr, "user") == 0) : port->user_name = pstrdup(valptr); : else if (strcmp(nameptr, "options") == 0) 0.00 : 646330: 48 89 de mov %rbx,%rsi 0.00 : 646333: bf 7c a5 8e 00 mov $0x8ea57c,%edi 0.00 : 646338: b9 08 00 00 00 mov $0x8,%ecx 0.00 : 64633d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 64633f: 75 1f jne 646360 : port->cmdline_options = pstrdup(valptr); 0.00 : 646341: 4c 89 e7 mov %r12,%rdi 0.00 : 646344: e8 07 2c 15 00 callq 798f50 0.00 : 646349: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 64634d: 48 89 82 58 01 00 00 mov %rax,0x158(%rdx) 0.00 : 646354: 44 8b 6d d0 mov -0x30(%rbp),%r13d 0.00 : 646358: e9 3a ff ff ff jmpq 646297 0.00 : 64635d: 0f 1f 00 nopl (%rax) : else if (strcmp(nameptr, "replication") == 0) 0.00 : 646360: 48 89 de mov %rbx,%rsi 0.00 : 646363: bf 61 94 7c 00 mov $0x7c9461,%edi 0.00 : 646368: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 64636d: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 64636f: 0f 85 93 01 00 00 jne 646508 : * parameter is a hybrid beast which allows the value to be : * either boolean or the string 'database'. The latter : * connects to a specific database which is e.g. required for : * logical decoding while. : */ : if (strcmp(valptr, "database") == 0) 0.00 : 646375: 4c 89 e6 mov %r12,%rsi 0.00 : 646378: bf 4f d8 8c 00 mov $0x8cd84f,%edi 0.00 : 64637d: b9 09 00 00 00 mov $0x9,%ecx 0.00 : 646382: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi) 0.00 : 646384: 0f 85 a6 02 00 00 jne 646630 : { : am_walsender = true; 0.00 : 64638a: c6 05 2f 6a 53 00 01 movb $0x1,0x536a2f(%rip) # b7cdc0 : am_db_walsender = true; 0.00 : 646391: c6 05 2a 6a 53 00 01 movb $0x1,0x536a2a(%rip) # b7cdc2 0.00 : 646398: e9 fa fe ff ff jmpq 646297 0.00 : 64639d: 0f 1f 00 nopl (%rax) : processCancelRequest(port, buf); : /* Not really an error, but we don't want to proceed further */ : return STATUS_ERROR; : } : : if (proto == NEGOTIATE_SSL_CODE && !SSLdone) 0.00 : 6463a0: 45 84 ed test %r13b,%r13b 0.00 : 6463a3: 0f 85 58 fe ff ff jne 646201 0.00 : 6463a9: 48 8d 5d d7 lea -0x29(%rbp),%rbx : if (!EnableSSL || IS_AF_UNIX(port->laddr.addr.ss_family)) : SSLok = 'N'; : else : SSLok = 'S'; /* Support for SSL */ : #else : SSLok = 'N'; /* No support for SSL */ 0.00 : 6463ad: c6 45 d7 4e movb $0x4e,-0x29(%rbp) 0.00 : 6463b1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : #endif : : retry1: : if (send(port->sock, &SSLok, 1, 0) != 1) 0.00 : 6463b8: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6463bc: 31 c9 xor %ecx,%ecx 0.00 : 6463be: ba 01 00 00 00 mov $0x1,%edx 0.00 : 6463c3: 48 89 de mov %rbx,%rsi 0.00 : 6463c6: 8b 38 mov (%rax),%edi 0.00 : 6463c8: e8 83 39 e2 ff callq 469d50 0.00 : 6463cd: 48 83 e8 01 sub $0x1,%rax 0.00 : 6463d1: 0f 84 29 03 00 00 je 646700 : { : if (errno == EINTR) 0.00 : 6463d7: e8 e4 38 e2 ff callq 469cc0 <__errno_location@plt> 0.00 : 6463dc: 83 38 04 cmpl $0x4,(%rax) 0.00 : 6463df: 90 nop 0.00 : 6463e0: 74 d6 je 6463b8 : goto retry1; /* if interrupted, just retry */ : ereport(COMMERROR, 0.00 : 6463e2: 45 31 c0 xor %r8d,%r8d 0.00 : 6463e5: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 6463ea: ba 14 07 00 00 mov $0x714,%edx 0.00 : 6463ef: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6463f4: bf 10 00 00 00 mov $0x10,%edi 0.00 : 6463f9: e8 c2 46 13 00 callq 77aac0 0.00 : 6463fe: 84 c0 test %al,%al 0.00 : 646400: 0f 85 27 06 00 00 jne 646a2d : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is in recovery mode"))); : break; : case CAC_TOOMANY: : ereport(FATAL, 0.00 : 646406: b8 ff ff ff ff mov $0xffffffff,%eax : case CAC_OK: : break; : } : : return STATUS_OK; : } 0.00 : 64640b: 48 83 c4 28 add $0x28,%rsp 0.00 : 64640f: 5b pop %rbx 0.00 : 646410: 41 5c pop %r12 0.00 : 646412: 41 5d pop %r13 0.00 : 646414: 41 5e pop %r14 0.00 : 646416: 41 5f pop %r15 0.00 : 646418: c9 leaveq 0.00 : 646419: c3 retq : * beginning within the packet body is null-terminated, thanks to : * zeroing extra byte above. : */ : port->guc_options = NIL; : : while (offset < len) 0.00 : 64641a: 41 bc 04 00 00 00 mov $0x4,%r12d : : /* : * If we didn't find a packet terminator exactly at the end of the : * given packet length, complain. : */ : if (offset != len - 1) 0.00 : 646420: 41 8d 45 ff lea -0x1(%r13),%eax 0.00 : 646424: 44 39 e0 cmp %r12d,%eax 0.00 : 646427: 0f 85 4e 06 00 00 jne 646a7b : port->cmdline_options[sizeof(packet->options)] = '\0'; : port->guc_options = NIL; : } : : /* Check a user name was given. */ : if (port->user_name == NULL || port->user_name[0] == '\0') 0.00 : 64642d: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 646431: 48 8b b8 50 01 00 00 mov 0x150(%rax),%rdi 0.00 : 646438: 48 85 ff test %rdi,%rdi 0.00 : 64643b: 0f 84 27 01 00 00 je 646568 0.00 : 646441: 80 3f 00 cmpb $0x0,(%rdi) 0.00 : 646444: 0f 84 1e 01 00 00 je 646568 : ereport(FATAL, : (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION), : errmsg("no PostgreSQL user name specified in startup packet"))); : : /* The database defaults to the user name. */ : if (port->database_name == NULL || port->database_name[0] == '\0') 0.00 : 64644a: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 64644e: 48 8b 82 48 01 00 00 mov 0x148(%rdx),%rax 0.00 : 646455: 48 85 c0 test %rax,%rax 0.00 : 646458: 74 05 je 64645f 0.00 : 64645a: 80 38 00 cmpb $0x0,(%rax) 0.00 : 64645d: 75 10 jne 64646f : port->database_name = pstrdup(port->user_name); 0.00 : 64645f: e8 ec 2a 15 00 callq 798f50 0.00 : 646464: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 646468: 48 89 82 48 01 00 00 mov %rax,0x148(%rdx) : : if (Db_user_namespace) 0.00 : 64646f: 80 3d db 5a 53 00 00 cmpb $0x0,0x535adb(%rip) # b7bf51 0.00 : 646476: 0f 85 44 03 00 00 jne 6467c0 : : /* : * Truncate given database and user names to length of a Postgres name. : * This avoids lookup failures when overlength names are given. : */ : if (strlen(port->database_name) >= NAMEDATALEN) 0.00 : 64647c: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 646480: 48 8b 98 48 01 00 00 mov 0x148(%rax),%rbx 0.00 : 646487: 48 89 df mov %rbx,%rdi 0.00 : 64648a: e8 c1 33 e2 ff callq 469850 0.00 : 64648f: 48 83 f8 3f cmp $0x3f,%rax 0.00 : 646493: 76 04 jbe 646499 : port->database_name[NAMEDATALEN - 1] = '\0'; 0.00 : 646495: c6 43 3f 00 movb $0x0,0x3f(%rbx) : if (strlen(port->user_name) >= NAMEDATALEN) 0.00 : 646499: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 64649d: 48 8b 9a 50 01 00 00 mov 0x150(%rdx),%rbx 0.00 : 6464a4: 48 89 df mov %rbx,%rdi 0.00 : 6464a7: e8 a4 33 e2 ff callq 469850 0.00 : 6464ac: 48 83 f8 3f cmp $0x3f,%rax 0.00 : 6464b0: 76 04 jbe 6464b6 : port->user_name[NAMEDATALEN - 1] = '\0'; 0.00 : 6464b2: c6 43 3f 00 movb $0x0,0x3f(%rbx) : * replication need to connect to a specific database. We allow streaming : * replication commands to be issued even if connected to a database as it : * can make sense to first make a basebackup and then stream changes : * starting from that. : */ : if (am_walsender && !am_db_walsender) 0.00 : 6464b6: 80 3d 03 69 53 00 00 cmpb $0x0,0x536903(%rip) # b7cdc0 0.00 : 6464bd: 74 0d je 6464cc 0.00 : 6464bf: 80 3d fc 68 53 00 00 cmpb $0x0,0x5368fc(%rip) # b7cdc2 0.00 : 6464c6: 0f 84 54 03 00 00 je 646820 0.00 : 6464cc: 48 8b 45 c0 mov -0x40(%rbp),%rax : /* : * If we're going to reject the connection due to database state, say so : * now instead of wasting cycles on an authentication exchange. (This also : * allows a pg_ping utility to be written.) : */ : switch (port->canAcceptConnections) 0.00 : 6464d0: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 6464d4: 48 89 05 85 43 57 00 mov %rax,0x574385(%rip) # bba860 0.00 : 6464db: 8b 82 40 01 00 00 mov 0x140(%rdx),%eax 0.00 : 6464e1: 83 f8 02 cmp $0x2,%eax 0.00 : 6464e4: 0f 84 26 04 00 00 je 646910 0.00 : 6464ea: 0f 87 50 02 00 00 ja 646740 0.00 : 6464f0: 83 e8 01 sub $0x1,%eax 0.00 : 6464f3: 0f 84 76 03 00 00 je 64686f 0.00 : 6464f9: 31 c0 xor %eax,%eax 0.00 : 6464fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 646500: e9 06 ff ff ff jmpq 64640b 0.00 : 646505: 0f 1f 00 nopl (%rax) : errhint("Valid values are: false, 0, true, 1, database."))); : } : else : { : /* Assume it's a generic GUC option */ : port->guc_options = lappend(port->guc_options, 0.00 : 646508: 48 89 df mov %rbx,%rdi 0.00 : 64650b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 646510: e8 3b 2a 15 00 callq 798f50 0.00 : 646515: 48 89 c6 mov %rax,%rsi 0.00 : 646518: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 64651c: 48 8b b8 60 01 00 00 mov 0x160(%rax),%rdi 0.00 : 646523: e8 58 b9 f9 ff callq 5e1e80 0.00 : 646528: 48 8b 55 b8 mov -0x48(%rbp),%rdx : pstrdup(nameptr)); : port->guc_options = lappend(port->guc_options, 0.00 : 64652c: 4c 89 e7 mov %r12,%rdi : errhint("Valid values are: false, 0, true, 1, database."))); : } : else : { : /* Assume it's a generic GUC option */ : port->guc_options = lappend(port->guc_options, 0.00 : 64652f: 48 89 82 60 01 00 00 mov %rax,0x160(%rdx) : pstrdup(nameptr)); : port->guc_options = lappend(port->guc_options, 0.00 : 646536: e8 15 2a 15 00 callq 798f50 0.00 : 64653b: 48 89 c6 mov %rax,%rsi 0.00 : 64653e: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 646542: 48 8b b8 60 01 00 00 mov 0x160(%rax),%rdi 0.00 : 646549: e8 32 b9 f9 ff callq 5e1e80 0.00 : 64654e: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 646552: 48 89 82 60 01 00 00 mov %rax,0x160(%rdx) 0.00 : 646559: 44 8b 6d d0 mov -0x30(%rbp),%r13d 0.00 : 64655d: e9 35 fd ff ff jmpq 646297 0.00 : 646562: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : port->guc_options = NIL; : } : : /* Check a user name was given. */ : if (port->user_name == NULL || port->user_name[0] == '\0') : ereport(FATAL, 0.00 : 646568: 45 31 c0 xor %r8d,%r8d 0.00 : 64656b: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 646570: ba a1 07 00 00 mov $0x7a1,%edx 0.00 : 646575: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 64657a: bf 15 00 00 00 mov $0x15,%edi 0.00 : 64657f: e8 3c 45 13 00 callq 77aac0 0.00 : 646584: 84 c0 test %al,%al 0.00 : 646586: 0f 85 04 02 00 00 jne 646790 : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is in recovery mode"))); : break; : case CAC_TOOMANY: : ereport(FATAL, 0.00 : 64658c: e8 3f 2f e2 ff callq 4694d0 0.00 : 646591: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * short packet has zeros silently added. We have to be prepared to : * truncate the pstrdup result for oversize fields, though. : */ : StartupPacket *packet = (StartupPacket *) buf; : : port->database_name = pstrdup(packet->database); 0.00 : 646598: 49 8d 7f 04 lea 0x4(%r15),%rdi 0.00 : 64659c: e8 af 29 15 00 callq 798f50 0.00 : 6465a1: 48 89 c3 mov %rax,%rbx 0.00 : 6465a4: 48 8b 45 b8 mov -0x48(%rbp),%rax : if (strlen(port->database_name) > sizeof(packet->database)) 0.00 : 6465a8: 48 89 df mov %rbx,%rdi : * short packet has zeros silently added. We have to be prepared to : * truncate the pstrdup result for oversize fields, though. : */ : StartupPacket *packet = (StartupPacket *) buf; : : port->database_name = pstrdup(packet->database); 0.00 : 6465ab: 48 89 98 48 01 00 00 mov %rbx,0x148(%rax) : if (strlen(port->database_name) > sizeof(packet->database)) 0.00 : 6465b2: e8 99 32 e2 ff callq 469850 0.00 : 6465b7: 48 83 f8 40 cmp $0x40,%rax 0.00 : 6465bb: 76 04 jbe 6465c1 : port->database_name[sizeof(packet->database)] = '\0'; 0.00 : 6465bd: c6 43 40 00 movb $0x0,0x40(%rbx) : port->user_name = pstrdup(packet->user); 0.00 : 6465c1: 49 8d 7f 44 lea 0x44(%r15),%rdi 0.00 : 6465c5: e8 86 29 15 00 callq 798f50 0.00 : 6465ca: 48 8b 55 b8 mov -0x48(%rbp),%rdx : if (strlen(port->user_name) > sizeof(packet->user)) 0.00 : 6465ce: 48 89 c7 mov %rax,%rdi : StartupPacket *packet = (StartupPacket *) buf; : : port->database_name = pstrdup(packet->database); : if (strlen(port->database_name) > sizeof(packet->database)) : port->database_name[sizeof(packet->database)] = '\0'; : port->user_name = pstrdup(packet->user); 0.00 : 6465d1: 48 89 c3 mov %rax,%rbx 0.00 : 6465d4: 48 89 82 50 01 00 00 mov %rax,0x150(%rdx) : if (strlen(port->user_name) > sizeof(packet->user)) 0.00 : 6465db: e8 70 32 e2 ff callq 469850 0.00 : 6465e0: 48 83 f8 20 cmp $0x20,%rax 0.00 : 6465e4: 76 04 jbe 6465ea : port->user_name[sizeof(packet->user)] = '\0'; 0.00 : 6465e6: c6 43 20 00 movb $0x0,0x20(%rbx) : port->cmdline_options = pstrdup(packet->options); 0.00 : 6465ea: 49 8d 7f 64 lea 0x64(%r15),%rdi 0.00 : 6465ee: e8 5d 29 15 00 callq 798f50 0.00 : 6465f3: 48 89 c3 mov %rax,%rbx 0.00 : 6465f6: 48 8b 45 b8 mov -0x48(%rbp),%rax : if (strlen(port->cmdline_options) > sizeof(packet->options)) 0.00 : 6465fa: 48 89 df mov %rbx,%rdi : if (strlen(port->database_name) > sizeof(packet->database)) : port->database_name[sizeof(packet->database)] = '\0'; : port->user_name = pstrdup(packet->user); : if (strlen(port->user_name) > sizeof(packet->user)) : port->user_name[sizeof(packet->user)] = '\0'; : port->cmdline_options = pstrdup(packet->options); 0.00 : 6465fd: 48 89 98 58 01 00 00 mov %rbx,0x158(%rax) : if (strlen(port->cmdline_options) > sizeof(packet->options)) 0.00 : 646604: e8 47 32 e2 ff callq 469850 0.00 : 646609: 48 83 f8 40 cmp $0x40,%rax 0.00 : 64660d: 76 04 jbe 646613 : port->cmdline_options[sizeof(packet->options)] = '\0'; 0.00 : 64660f: c6 43 40 00 movb $0x0,0x40(%rbx) : port->guc_options = NIL; 0.00 : 646613: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 646617: 48 c7 82 60 01 00 00 movq $0x0,0x160(%rdx) 0.00 : 64661e: 00 00 00 00 0.00 : 646622: e9 06 fe ff ff jmpq 64642d 0.00 : 646627: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 64662e: 00 00 : if (strcmp(valptr, "database") == 0) : { : am_walsender = true; : am_db_walsender = true; : } : else if (!parse_bool(valptr, &am_walsender)) 0.00 : 646630: be c0 cd b7 00 mov $0xb7cdc0,%esi 0.00 : 646635: 4c 89 e7 mov %r12,%rdi 0.00 : 646638: e8 c3 e7 07 00 callq 6c4e00 0.00 : 64663d: 84 c0 test %al,%al 0.00 : 64663f: 0f 85 14 ff ff ff jne 646559 : ereport(FATAL, 0.00 : 646645: 45 31 c0 xor %r8d,%r8d 0.00 : 646648: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 64664d: ba 71 07 00 00 mov $0x771,%edx 0.00 : 646652: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646657: bf 15 00 00 00 mov $0x15,%edi 0.00 : 64665c: e8 5f 44 13 00 callq 77aac0 0.00 : 646661: 84 c0 test %al,%al 0.00 : 646663: 0f 84 23 ff ff ff je 64658c 0.00 : 646669: bf 38 02 8a 00 mov $0x8a0238,%edi 0.00 : 64666e: 31 c0 xor %eax,%eax 0.00 : 646670: e8 2b 56 13 00 callq 77bca0 0.00 : 646675: bf 68 02 8a 00 mov $0x8a0268,%edi 0.00 : 64667a: 41 89 c4 mov %eax,%r12d 0.00 : 64667d: 31 c0 xor %eax,%eax 0.00 : 64667f: e8 1c 62 13 00 callq 77c8a0 0.00 : 646684: bf 82 00 08 03 mov $0x3080082,%edi 0.00 : 646689: 89 c3 mov %eax,%ebx 0.00 : 64668b: e8 c0 66 13 00 callq 77cd50 0.00 : 646690: 44 89 e2 mov %r12d,%edx 0.00 : 646693: 89 c7 mov %eax,%edi 0.00 : 646695: 89 de mov %ebx,%esi 0.00 : 646697: 31 c0 xor %eax,%eax 0.00 : 646699: e8 42 3f 13 00 callq 77a5e0 0.00 : 64669e: e9 e9 fe ff ff jmpq 64658c 0.00 : 6466a3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : */ : FrontendProtocol = proto; : : /* Check we can handle the protocol the frontend is using. */ : : if (PG_PROTOCOL_MAJOR(proto) < PG_PROTOCOL_MAJOR(PG_PROTOCOL_EARLIEST) || 0.00 : 6466a8: 66 85 db test %bx,%bx 0.00 : 6466ab: 74 73 je 646720 : PG_PROTOCOL_MAJOR(proto) > PG_PROTOCOL_MAJOR(PG_PROTOCOL_LATEST) || : (PG_PROTOCOL_MAJOR(proto) == PG_PROTOCOL_MAJOR(PG_PROTOCOL_LATEST) && : PG_PROTOCOL_MINOR(proto) > PG_PROTOCOL_MINOR(PG_PROTOCOL_LATEST))) : ereport(FATAL, 0.00 : 6466ad: 45 31 c0 xor %r8d,%r8d 0.00 : 6466b0: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 6466b5: ba 35 07 00 00 mov $0x735,%edx 0.00 : 6466ba: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6466bf: bf 15 00 00 00 mov $0x15,%edi 0.00 : 6466c4: e8 f7 43 13 00 callq 77aac0 0.00 : 6466c9: 84 c0 test %al,%al 0.00 : 6466cb: 0f 84 bb fe ff ff je 64658c 0.00 : 6466d1: 0f b7 d3 movzwl %bx,%edx 0.00 : 6466d4: bf f0 01 8a 00 mov $0x8a01f0,%edi 0.00 : 6466d9: 45 31 c9 xor %r9d,%r9d 0.00 : 6466dc: 41 b8 03 00 00 00 mov $0x3,%r8d 0.00 : 6466e2: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 6466e7: 44 89 e6 mov %r12d,%esi 0.00 : 6466ea: 31 c0 xor %eax,%eax 0.00 : 6466ec: e8 af 61 13 00 callq 77c8a0 0.00 : 6466f1: bf 40 04 00 00 mov $0x440,%edi 0.00 : 6466f6: 89 c3 mov %eax,%ebx 0.00 : 6466f8: e9 a6 00 00 00 jmpq 6467a3 0.00 : 6466fd: 0f 1f 00 nopl (%rax) : if (SSLok == 'S' && secure_open_server(port) == -1) : return STATUS_ERROR; : #endif : /* regular startup packet, cancel, etc packet should follow... */ : /* but not another SSL negotiation request */ : return ProcessStartupPacket(port, true); 0.00 : 646700: 48 8b 7d b8 mov -0x48(%rbp),%rdi 0.00 : 646704: be 01 00 00 00 mov $0x1,%esi 0.00 : 646709: e8 52 fa ff ff callq 646160 : case CAC_OK: : break; : } : : return STATUS_OK; : } 0.00 : 64670e: 48 83 c4 28 add $0x28,%rsp 0.00 : 646712: 5b pop %rbx 0.00 : 646713: 41 5c pop %r12 0.00 : 646715: 41 5d pop %r13 0.00 : 646717: 41 5e pop %r14 0.00 : 646719: 41 5f pop %r15 0.00 : 64671b: c9 leaveq 0.00 : 64671c: c3 retq 0.00 : 64671d: 0f 1f 00 nopl (%rax) : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 646720: 48 8b 05 39 41 57 00 mov 0x574139(%rip),%rax # bba860 0.00 : 646727: 48 89 45 c0 mov %rax,-0x40(%rbp) : : CurrentMemoryContext = context; 0.00 : 64672b: 48 8b 05 36 41 57 00 mov 0x574136(%rip),%rax # bba868 0.00 : 646732: 48 89 05 27 41 57 00 mov %rax,0x574127(%rip) # bba860 0.00 : 646739: e9 0b fb ff ff jmpq 646249 0.00 : 64673e: 66 90 xchg %ax,%ax : /* : * If we're going to reject the connection due to database state, say so : * now instead of wasting cycles on an authentication exchange. (This also : * allows a pg_ping utility to be written.) : */ : switch (port->canAcceptConnections) 0.00 : 646740: 83 f8 03 cmp $0x3,%eax 0.00 : 646743: 0f 84 ea 00 00 00 je 646833 0.00 : 646749: 83 f8 04 cmp $0x4,%eax 0.00 : 64674c: 0f 85 a7 fd ff ff jne 6464f9 : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is in recovery mode"))); : break; : case CAC_TOOMANY: : ereport(FATAL, 0.00 : 646752: 45 31 c0 xor %r8d,%r8d 0.00 : 646755: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 64675a: ba eb 07 00 00 mov $0x7eb,%edx 0.00 : 64675f: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646764: bf 15 00 00 00 mov $0x15,%edi 0.00 : 646769: e8 52 43 13 00 callq 77aac0 0.00 : 64676e: 84 c0 test %al,%al 0.00 : 646770: 0f 84 16 fe ff ff je 64658c 0.00 : 646776: bf 88 03 8a 00 mov $0x8a0388,%edi 0.00 : 64677b: 31 c0 xor %eax,%eax 0.00 : 64677d: e8 1e 61 13 00 callq 77c8a0 0.00 : 646782: bf c5 30 00 00 mov $0x30c5,%edi 0.00 : 646787: 89 c3 mov %eax,%ebx 0.00 : 646789: eb 18 jmp 6467a3 0.00 : 64678b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : port->guc_options = NIL; : } : : /* Check a user name was given. */ : if (port->user_name == NULL || port->user_name[0] == '\0') : ereport(FATAL, 0.00 : 646790: bf d8 02 8a 00 mov $0x8a02d8,%edi 0.00 : 646795: 31 c0 xor %eax,%eax 0.00 : 646797: e8 04 61 13 00 callq 77c8a0 0.00 : 64679c: bf 02 02 00 00 mov $0x202,%edi 0.00 : 6467a1: 89 c3 mov %eax,%ebx : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is in recovery mode"))); : break; : case CAC_TOOMANY: : ereport(FATAL, 0.00 : 6467a3: e8 a8 65 13 00 callq 77cd50 0.00 : 6467a8: 89 de mov %ebx,%esi 0.00 : 6467aa: 89 c7 mov %eax,%edi 0.00 : 6467ac: 31 c0 xor %eax,%eax 0.00 : 6467ae: e8 2d 3e 13 00 callq 77a5e0 0.00 : 6467b3: e9 d4 fd ff ff jmpq 64658c 0.00 : 6467b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 6467bf: 00 : * If user@, it is a global user, remove '@'. We only want to do this : * if there is an '@' at the end and no earlier in the user string or : * they may fake as a local user of another database attaching to this : * database. : */ : if (strchr(port->user_name, '@') == 0.00 : 6467c0: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6467c4: be 40 00 00 00 mov $0x40,%esi 0.00 : 6467c9: 48 8b 98 50 01 00 00 mov 0x150(%rax),%rbx 0.00 : 6467d0: 48 89 df mov %rbx,%rdi 0.00 : 6467d3: e8 78 34 e2 ff callq 469c50 0.00 : 6467d8: 48 89 df mov %rbx,%rdi 0.00 : 6467db: 49 89 c4 mov %rax,%r12 0.00 : 6467de: e8 6d 30 e2 ff callq 469850 0.00 : 6467e3: 48 8d 44 03 ff lea -0x1(%rbx,%rax,1),%rax 0.00 : 6467e8: 49 39 c4 cmp %rax,%r12 0.00 : 6467eb: 0f 84 ba 00 00 00 je 6468ab : port->user_name + strlen(port->user_name) - 1) : *strchr(port->user_name, '@') = '\0'; : else : { : /* Append '@' and dbname */ : port->user_name = psprintf("%s@%s", port->user_name, port->database_name); 0.00 : 6467f1: 48 8b 45 b8 mov -0x48(%rbp),%rax 0.00 : 6467f5: 48 89 de mov %rbx,%rsi 0.00 : 6467f8: bf 83 fa 89 00 mov $0x89fa83,%edi 0.00 : 6467fd: 48 8b 90 48 01 00 00 mov 0x148(%rax),%rdx 0.00 : 646804: 31 c0 xor %eax,%eax 0.00 : 646806: e8 d5 7c 16 00 callq 7ae4e0 0.00 : 64680b: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 64680f: 48 89 82 50 01 00 00 mov %rax,0x150(%rdx) 0.00 : 646816: e9 61 fc ff ff jmpq 64647c 0.00 : 64681b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * replication commands to be issued even if connected to a database as it : * can make sense to first make a basebackup and then stream changes : * starting from that. : */ : if (am_walsender && !am_db_walsender) : port->database_name[0] = '\0'; 0.00 : 646820: 48 8b 55 b8 mov -0x48(%rbp),%rdx 0.00 : 646824: 48 8b 82 48 01 00 00 mov 0x148(%rdx),%rax 0.00 : 64682b: c6 00 00 movb $0x0,(%rax) 0.00 : 64682e: e9 99 fc ff ff jmpq 6464cc : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is shutting down"))); : break; : case CAC_RECOVERY: : ereport(FATAL, 0.00 : 646833: 45 31 c0 xor %r8d,%r8d 0.00 : 646836: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 64683b: ba e6 07 00 00 mov $0x7e6,%edx 0.00 : 646840: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646845: bf 15 00 00 00 mov $0x15,%edi 0.00 : 64684a: e8 71 42 13 00 callq 77aac0 0.00 : 64684f: 84 c0 test %al,%al 0.00 : 646851: 0f 84 35 fd ff ff je 64658c 0.00 : 646857: bf 60 03 8a 00 mov $0x8a0360,%edi 0.00 : 64685c: 31 c0 xor %eax,%eax 0.00 : 64685e: e8 3d 60 13 00 callq 77c8a0 0.00 : 646863: bf c5 01 02 03 mov $0x30201c5,%edi 0.00 : 646868: 89 c3 mov %eax,%ebx 0.00 : 64686a: e9 34 ff ff ff jmpq 6467a3 : * allows a pg_ping utility to be written.) : */ : switch (port->canAcceptConnections) : { : case CAC_STARTUP: : ereport(FATAL, 0.00 : 64686f: 45 31 c0 xor %r8d,%r8d 0.00 : 646872: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 646877: ba dc 07 00 00 mov $0x7dc,%edx 0.00 : 64687c: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646881: bf 15 00 00 00 mov $0x15,%edi 0.00 : 646886: e8 35 42 13 00 callq 77aac0 0.00 : 64688b: 84 c0 test %al,%al 0.00 : 64688d: 0f 84 f9 fc ff ff je 64658c 0.00 : 646893: bf 10 03 8a 00 mov $0x8a0310,%edi 0.00 : 646898: 31 c0 xor %eax,%eax 0.00 : 64689a: e8 01 60 13 00 callq 77c8a0 0.00 : 64689f: bf c5 01 02 03 mov $0x30201c5,%edi 0.00 : 6468a4: 89 c3 mov %eax,%ebx 0.00 : 6468a6: e9 f8 fe ff ff jmpq 6467a3 : * they may fake as a local user of another database attaching to this : * database. : */ : if (strchr(port->user_name, '@') == : port->user_name + strlen(port->user_name) - 1) : *strchr(port->user_name, '@') = '\0'; 0.00 : 6468ab: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 6468b0: e9 c7 fb ff ff jmpq 64647c 0.00 : 6468b5: 0f 1f 00 nopl (%rax) : /* : * EOF after SSLdone probably means the client didn't like our : * response to NEGOTIATE_SSL_CODE. That's not an error condition, so : * don't clutter the log with a complaint. : */ : if (!SSLdone) 0.00 : 6468b8: 45 84 ed test %r13b,%r13b 0.00 : 6468bb: 0f 85 45 fb ff ff jne 646406 : ereport(COMMERROR, 0.00 : 6468c1: 45 31 c0 xor %r8d,%r8d 0.00 : 6468c4: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 6468c9: ba cf 06 00 00 mov $0x6cf,%edx : else : buf = palloc0(len + 1); : : if (pq_getbytes(buf, len) == EOF) : { : ereport(COMMERROR, 0.00 : 6468ce: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6468d3: bf 10 00 00 00 mov $0x10,%edi 0.00 : 6468d8: e8 e3 41 13 00 callq 77aac0 0.00 : 6468dd: 84 c0 test %al,%al 0.00 : 6468df: 0f 84 21 fb ff ff je 646406 0.00 : 6468e5: bf 69 fa 89 00 mov $0x89fa69,%edi 0.00 : 6468ea: 31 c0 xor %eax,%eax 0.00 : 6468ec: e8 af 5f 13 00 callq 77c8a0 0.00 : 6468f1: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 6468f6: 89 c3 mov %eax,%ebx 0.00 : 6468f8: e8 53 64 13 00 callq 77cd50 0.00 : 6468fd: 89 de mov %ebx,%esi 0.00 : 6468ff: 89 c7 mov %eax,%edi 0.00 : 646901: 31 c0 xor %eax,%eax 0.00 : 646903: e8 d8 3c 13 00 callq 77a5e0 0.00 : 646908: 44 89 e0 mov %r12d,%eax 0.00 : 64690b: e9 fb fa ff ff jmpq 64640b : ereport(FATAL, : (errcode(ERRCODE_CANNOT_CONNECT_NOW), : errmsg("the database system is starting up"))); : break; : case CAC_SHUTDOWN: : ereport(FATAL, 0.00 : 646910: 45 31 c0 xor %r8d,%r8d 0.00 : 646913: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 646918: ba e1 07 00 00 mov $0x7e1,%edx 0.00 : 64691d: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646922: bf 15 00 00 00 mov $0x15,%edi 0.00 : 646927: e8 94 41 13 00 callq 77aac0 0.00 : 64692c: 84 c0 test %al,%al 0.00 : 64692e: 0f 84 58 fc ff ff je 64658c 0.00 : 646934: bf 38 03 8a 00 mov $0x8a0338,%edi 0.00 : 646939: 31 c0 xor %eax,%eax 0.00 : 64693b: e8 60 5f 13 00 callq 77c8a0 0.00 : 646940: bf c5 01 02 03 mov $0x30201c5,%edi 0.00 : 646945: 89 c3 mov %eax,%ebx 0.00 : 646947: e9 57 fe ff ff jmpq 6467a3 : len -= 4; : : if (len < (int32) sizeof(ProtocolVersion) || : len > MAX_STARTUP_PACKET_LENGTH) : { : ereport(COMMERROR, 0.00 : 64694c: 45 31 c0 xor %r8d,%r8d 0.00 : 64694f: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 646954: ba db 06 00 00 mov $0x6db,%edx 0.00 : 646959: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 64695e: bf 10 00 00 00 mov $0x10,%edi 0.00 : 646963: e8 58 41 13 00 callq 77aac0 0.00 : 646968: 84 c0 test %al,%al 0.00 : 64696a: 0f 84 96 fa ff ff je 646406 0.00 : 646970: bf f8 00 8a 00 mov $0x8a00f8,%edi 0.00 : 646975: 31 c0 xor %eax,%eax 0.00 : 646977: e8 24 5f 13 00 callq 77c8a0 0.00 : 64697c: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 646981: 89 c3 mov %eax,%ebx 0.00 : 646983: e8 c8 63 13 00 callq 77cd50 : retry1: : if (send(port->sock, &SSLok, 1, 0) != 1) : { : if (errno == EINTR) : goto retry1; /* if interrupted, just retry */ : ereport(COMMERROR, 0.00 : 646988: 89 c7 mov %eax,%edi 0.00 : 64698a: 89 de mov %ebx,%esi 0.00 : 64698c: 31 c0 xor %eax,%eax 0.00 : 64698e: e8 4d 3c 13 00 callq 77a5e0 0.00 : 646993: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 646998: e9 6e fa ff ff jmpq 64640b : else : buf = palloc0(len + 1); : : if (pq_getbytes(buf, len) == EOF) : { : ereport(COMMERROR, 0.00 : 64699d: 45 31 c0 xor %r8d,%r8d 0.00 : 6469a0: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 6469a5: ba ee 06 00 00 mov $0x6ee,%edx 0.00 : 6469aa: e9 1f ff ff ff jmpq 6468ce : * See if we have a matching backend. In the EXEC_BACKEND case, we can no : * longer access the postmaster's own backend list, and must rely on the : * duplicate array in shared memory. : */ : #ifndef EXEC_BACKEND : dlist_foreach(iter, &BackendList) 0.00 : 6469af: 48 8b 15 82 1c 52 00 mov 0x521c82(%rip),%rdx # b68638 : dlist_iter iter; : #else : int i; : #endif : : backendPID = (int) ntohl(canc->backendPID); 0.00 : 6469b6: 45 8b 67 04 mov 0x4(%r15),%r12d : cancelAuthCode = (long) ntohl(canc->cancelAuthCode); 0.00 : 6469ba: 41 8b 47 08 mov 0x8(%r15),%eax : dlist_iter iter; : #else : int i; : #endif : : backendPID = (int) ntohl(canc->backendPID); 0.00 : 6469be: 41 0f cc bswap %r12d : cancelAuthCode = (long) ntohl(canc->cancelAuthCode); 0.00 : 6469c1: 0f c8 bswap %eax : * See if we have a matching backend. In the EXEC_BACKEND case, we can no : * longer access the postmaster's own backend list, and must rely on the : * duplicate array in shared memory. : */ : #ifndef EXEC_BACKEND : dlist_foreach(iter, &BackendList) 0.00 : 6469c3: 48 85 d2 test %rdx,%rdx 0.00 : 6469c6: 75 16 jne 6469de 0.00 : 6469c8: eb 1d jmp 6469e7 0.00 : 6469ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : #else : for (i = MaxLivePostmasterChildren() - 1; i >= 0; i--) : { : bp = (Backend *) &ShmemBackendArray[i]; : #endif : if (bp->pid == backendPID) 0.00 : 6469d0: 44 3b 62 e0 cmp -0x20(%rdx),%r12d : * duplicate array in shared memory. : */ : #ifndef EXEC_BACKEND : dlist_foreach(iter, &BackendList) : { : bp = dlist_container(Backend, elem, iter.cur); 0.00 : 6469d4: 48 8d 5a e0 lea -0x20(%rdx),%rbx : #else : for (i = MaxLivePostmasterChildren() - 1; i >= 0; i--) : { : bp = (Backend *) &ShmemBackendArray[i]; : #endif : if (bp->pid == backendPID) 0.00 : 6469d8: 74 6b je 646a45 : * See if we have a matching backend. In the EXEC_BACKEND case, we can no : * longer access the postmaster's own backend list, and must rely on the : * duplicate array in shared memory. : */ : #ifndef EXEC_BACKEND : dlist_foreach(iter, &BackendList) 0.00 : 6469da: 48 8b 52 08 mov 0x8(%rdx),%rdx 0.00 : 6469de: 48 81 fa 30 86 b6 00 cmp $0xb68630,%rdx 0.00 : 6469e5: 75 e9 jne 6469d0 : return; : } : } : : /* No matching backend */ : ereport(LOG, 0.00 : 6469e7: 45 31 c0 xor %r8d,%r8d 0.00 : 6469ea: b9 40 10 8a 00 mov $0x8a1040,%ecx 0.00 : 6469ef: ba 32 08 00 00 mov $0x832,%edx 0.00 : 6469f4: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 6469f9: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 6469fe: e8 bd 40 13 00 callq 77aac0 0.00 : 646a03: 84 c0 test %al,%al 0.00 : 646a05: 0f 84 fb f9 ff ff je 646406 0.00 : 646a0b: 44 89 e6 mov %r12d,%esi 0.00 : 646a0e: bf 88 01 8a 00 mov $0x8a0188,%edi 0.00 : 646a13: 31 c0 xor %eax,%eax 0.00 : 646a15: e8 86 5e 13 00 callq 77c8a0 0.00 : 646a1a: 89 c7 mov %eax,%edi 0.00 : 646a1c: 31 c0 xor %eax,%eax 0.00 : 646a1e: e8 bd 3b 13 00 callq 77a5e0 0.00 : 646a23: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 646a28: e9 de f9 ff ff jmpq 64640b : retry1: : if (send(port->sock, &SSLok, 1, 0) != 1) : { : if (errno == EINTR) : goto retry1; /* if interrupted, just retry */ : ereport(COMMERROR, 0.00 : 646a2d: bf c0 01 8a 00 mov $0x8a01c0,%edi 0.00 : 646a32: 31 c0 xor %eax,%eax 0.00 : 646a34: e8 67 5e 13 00 callq 77c8a0 0.00 : 646a39: 89 c3 mov %eax,%ebx 0.00 : 646a3b: e8 10 60 13 00 callq 77ca50 0.00 : 646a40: e9 43 ff ff ff jmpq 646988 : { : bp = (Backend *) &ShmemBackendArray[i]; : #endif : if (bp->pid == backendPID) : { : if (bp->cancel_key == cancelAuthCode) 0.00 : 646a45: 89 c0 mov %eax,%eax 0.00 : 646a47: 48 3b 43 08 cmp 0x8(%rbx),%rax 0.00 : 646a4b: 74 6a je 646ab7 : backendPID))); : signal_child(bp->pid, SIGINT); : } : else : /* Right PID, wrong key: no way, Jose */ : ereport(LOG, 0.00 : 646a4d: 45 31 c0 xor %r8d,%r8d 0.00 : 646a50: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646a55: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 646a5a: b9 40 10 8a 00 mov $0x8a1040,%ecx 0.00 : 646a5f: ba 2a 08 00 00 mov $0x82a,%edx 0.00 : 646a64: e8 57 40 13 00 callq 77aac0 0.00 : 646a69: 84 c0 test %al,%al 0.00 : 646a6b: 44 89 e6 mov %r12d,%esi 0.00 : 646a6e: bf 58 01 8a 00 mov $0x8a0158,%edi 0.00 : 646a73: 0f 84 8d f9 ff ff je 646406 0.00 : 646a79: eb 98 jmp 646a13 : /* : * If we didn't find a packet terminator exactly at the end of the : * given packet length, complain. : */ : if (offset != len - 1) : ereport(FATAL, 0.00 : 646a7b: 45 31 c0 xor %r8d,%r8d 0.00 : 646a7e: b9 20 10 8a 00 mov $0x8a1020,%ecx 0.00 : 646a83: ba 85 07 00 00 mov $0x785,%edx 0.00 : 646a88: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646a8d: bf 15 00 00 00 mov $0x15,%edi 0.00 : 646a92: e8 29 40 13 00 callq 77aac0 0.00 : 646a97: 84 c0 test %al,%al 0.00 : 646a99: 0f 84 ed fa ff ff je 64658c 0.00 : 646a9f: bf 98 02 8a 00 mov $0x8a0298,%edi 0.00 : 646aa4: 31 c0 xor %eax,%eax 0.00 : 646aa6: e8 f5 5d 13 00 callq 77c8a0 0.00 : 646aab: bf 00 02 02 01 mov $0x1020200,%edi 0.00 : 646ab0: 89 c3 mov %eax,%ebx 0.00 : 646ab2: e9 ec fc ff ff jmpq 6467a3 : if (bp->pid == backendPID) : { : if (bp->cancel_key == cancelAuthCode) : { : /* Found a match; signal that backend to cancel current op */ : ereport(DEBUG2, 0.00 : 646ab7: 45 31 c0 xor %r8d,%r8d 0.00 : 646aba: b9 40 10 8a 00 mov $0x8a1040,%ecx 0.00 : 646abf: ba 23 08 00 00 mov $0x823,%edx 0.00 : 646ac4: be 06 fa 89 00 mov $0x89fa06,%esi 0.00 : 646ac9: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 646ace: e8 ed 3f 13 00 callq 77aac0 0.00 : 646ad3: 84 c0 test %al,%al 0.00 : 646ad5: 74 18 je 646aef 0.00 : 646ad7: bf 20 01 8a 00 mov $0x8a0120,%edi 0.00 : 646adc: 44 89 e6 mov %r12d,%esi 0.00 : 646adf: 31 c0 xor %eax,%eax 0.00 : 646ae1: e8 2a 3e 13 00 callq 77a910 0.00 : 646ae6: 89 c7 mov %eax,%edi 0.00 : 646ae8: 31 c0 xor %eax,%eax 0.00 : 646aea: e8 f1 3a 13 00 callq 77a5e0 : (errmsg_internal("processing cancel request: sending SIGINT to process %d", : backendPID))); : signal_child(bp->pid, SIGINT); 0.00 : 646aef: 8b 3b mov (%rbx),%edi 0.00 : 646af1: be 02 00 00 00 mov $0x2,%esi 0.00 : 646af6: e8 95 ec ff ff callq 645790 0.00 : 646afb: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 646b00: e9 06 f9 ff ff jmpq 64640b Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/postmaster/walwriter.c:303 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000064c4d0 : : * This is invoked from AuxiliaryProcessMain, which has already created the : * basic execution environment, but not enabled signals yet. : */ : void : WalWriterMain(void) : { 0.00 : 64c4d0: 55 push %rbp 0.00 : 64c4d1: 48 89 e5 mov %rsp,%rbp 0.00 : 64c4d4: 41 55 push %r13 0.00 : 64c4d6: 41 54 push %r12 0.00 : 64c4d8: 53 push %rbx 0.00 : 64c4d9: 48 81 ec e8 00 00 00 sub $0xe8,%rsp : * can signal any child processes too. (walwriter probably never has any : * child processes, but for consistency we make all postmaster child : * processes do this.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) 0.00 : 64c4e0: e8 7b cf e1 ff callq 469460 0.00 : 64c4e5: 85 c0 test %eax,%eax 0.00 : 64c4e7: 0f 88 d7 02 00 00 js 64c7c4 : * Properly accept or ignore signals the postmaster might send us : * : * We have no particular use for SIGINT at the moment, but seems : * reasonable to treat like SIGTERM. : */ : pqsignal(SIGHUP, WalSigHupHandler); /* set flag to read config file */ 0.00 : 64c4ed: be a0 c8 64 00 mov $0x64c8a0,%esi 0.00 : 64c4f2: bf 01 00 00 00 mov $0x1,%edi 0.00 : 64c4f7: e8 04 06 16 00 callq 7acb00 : pqsignal(SIGINT, WalShutdownHandler); /* request shutdown */ 0.00 : 64c4fc: be 50 c8 64 00 mov $0x64c850,%esi 0.00 : 64c501: bf 02 00 00 00 mov $0x2,%edi 0.00 : 64c506: e8 f5 05 16 00 callq 7acb00 : pqsignal(SIGTERM, WalShutdownHandler); /* request shutdown */ 0.00 : 64c50b: be 50 c8 64 00 mov $0x64c850,%esi 0.00 : 64c510: bf 0f 00 00 00 mov $0xf,%edi 0.00 : 64c515: e8 e6 05 16 00 callq 7acb00 : pqsignal(SIGQUIT, wal_quickdie); /* hard crash time */ 0.00 : 64c51a: be 20 c8 64 00 mov $0x64c820,%esi 0.00 : 64c51f: bf 03 00 00 00 mov $0x3,%edi 0.00 : 64c524: e8 d7 05 16 00 callq 7acb00 : pqsignal(SIGALRM, SIG_IGN); 0.00 : 64c529: be 01 00 00 00 mov $0x1,%esi 0.00 : 64c52e: bf 0e 00 00 00 mov $0xe,%edi 0.00 : 64c533: e8 c8 05 16 00 callq 7acb00 : pqsignal(SIGPIPE, SIG_IGN); 0.00 : 64c538: be 01 00 00 00 mov $0x1,%esi 0.00 : 64c53d: bf 0d 00 00 00 mov $0xd,%edi 0.00 : 64c542: e8 b9 05 16 00 callq 7acb00 : pqsignal(SIGUSR1, walwriter_sigusr1_handler); 0.00 : 64c547: be f0 c7 64 00 mov $0x64c7f0,%esi 0.00 : 64c54c: bf 0a 00 00 00 mov $0xa,%edi 0.00 : 64c551: e8 aa 05 16 00 callq 7acb00 : pqsignal(SIGUSR2, SIG_IGN); /* not used */ 0.00 : 64c556: be 01 00 00 00 mov $0x1,%esi 0.00 : 64c55b: bf 0c 00 00 00 mov $0xc,%edi 0.00 : 64c560: e8 9b 05 16 00 callq 7acb00 : : /* : * Reset some signals that are accepted by postmaster but not here : */ : pqsignal(SIGCHLD, SIG_DFL); 0.00 : 64c565: 31 f6 xor %esi,%esi 0.00 : 64c567: bf 11 00 00 00 mov $0x11,%edi 0.00 : 64c56c: e8 8f 05 16 00 callq 7acb00 : pqsignal(SIGTTIN, SIG_DFL); 0.00 : 64c571: 31 f6 xor %esi,%esi 0.00 : 64c573: bf 15 00 00 00 mov $0x15,%edi 0.00 : 64c578: e8 83 05 16 00 callq 7acb00 : pqsignal(SIGTTOU, SIG_DFL); 0.00 : 64c57d: 31 f6 xor %esi,%esi 0.00 : 64c57f: bf 16 00 00 00 mov $0x16,%edi 0.00 : 64c584: e8 77 05 16 00 callq 7acb00 : pqsignal(SIGCONT, SIG_DFL); 0.00 : 64c589: 31 f6 xor %esi,%esi 0.00 : 64c58b: bf 12 00 00 00 mov $0x12,%edi 0.00 : 64c590: e8 6b 05 16 00 callq 7acb00 : pqsignal(SIGWINCH, SIG_DFL); 0.00 : 64c595: 31 f6 xor %esi,%esi 0.00 : 64c597: bf 1c 00 00 00 mov $0x1c,%edi 0.00 : 64c59c: e8 5f 05 16 00 callq 7acb00 : : /* We allow SIGQUIT (quickdie) at all times */ : sigdelset(&BlockSig, SIGQUIT); 0.00 : 64c5a1: be 03 00 00 00 mov $0x3,%esi 0.00 : 64c5a6: bf c0 f8 bb 00 mov $0xbbf8c0,%edi 0.00 : 64c5ab: e8 30 da e1 ff callq 469fe0 : : /* : * Create a resource owner to keep track of our resources (not clear that : * we need this, but may as well have one). : */ : CurrentResourceOwner = ResourceOwnerCreate(NULL, "Wal Writer"); 0.00 : 64c5b0: 31 ff xor %edi,%edi 0.00 : 64c5b2: be 89 13 8a 00 mov $0x8a1389,%esi 0.00 : 64c5b7: e8 d4 ef 14 00 callq 79b590 : * Create a memory context that we will do all our work in. We do this so : * that we can reset the context during error recovery and thereby avoid : * possible memory leaks. Formerly this code just ran in : * TopMemoryContext, but resetting that would be a really bad idea. : */ : walwriter_context = AllocSetContextCreate(TopMemoryContext, 0.00 : 64c5bc: 48 8b 3d a5 e2 56 00 mov 0x56e2a5(%rip),%rdi # bba868 0.00 : 64c5c3: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 64c5c9: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 64c5ce: 31 d2 xor %edx,%edx 0.00 : 64c5d0: be 89 13 8a 00 mov $0x8a1389,%esi : : /* : * Create a resource owner to keep track of our resources (not clear that : * we need this, but may as well have one). : */ : CurrentResourceOwner = ResourceOwnerCreate(NULL, "Wal Writer"); 0.00 : 64c5d5: 48 89 05 e4 e2 56 00 mov %rax,0x56e2e4(%rip) # bba8c0 : * Create a memory context that we will do all our work in. We do this so : * that we can reset the context during error recovery and thereby avoid : * possible memory leaks. Formerly this code just ran in : * TopMemoryContext, but resetting that would be a really bad idea. : */ : walwriter_context = AllocSetContextCreate(TopMemoryContext, 0.00 : 64c5dc: e8 af b9 14 00 callq 797f90 : /* : * If an exception is encountered, processing resumes here. : * : * This code is heavily based on bgwriter.c, q.v. : */ : if (sigsetjmp(local_sigjmp_buf, 1) != 0) 0.00 : 64c5e1: 48 8d bd 10 ff ff ff lea -0xf0(%rbp),%rdi 0.00 : 64c5e8: be 01 00 00 00 mov $0x1,%esi : * Create a memory context that we will do all our work in. We do this so : * that we can reset the context during error recovery and thereby avoid : * possible memory leaks. Formerly this code just ran in : * TopMemoryContext, but resetting that would be a really bad idea. : */ : walwriter_context = AllocSetContextCreate(TopMemoryContext, 0.00 : 64c5ed: 48 89 85 08 ff ff ff mov %rax,-0xf8(%rbp) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 64c5f4: 48 89 05 65 e2 56 00 mov %rax,0x56e265(%rip) # bba860 : /* : * If an exception is encountered, processing resumes here. : * : * This code is heavily based on bgwriter.c, q.v. : */ : if (sigsetjmp(local_sigjmp_buf, 1) != 0) 0.00 : 64c5fb: e8 50 da e1 ff callq 46a050 <__sigsetjmp@plt> 0.00 : 64c600: 85 c0 test %eax,%eax 0.00 : 64c602: 0f 85 1b 01 00 00 jne 64c723 : */ : smgrcloseall(); : } : : /* We can now handle ereport(ERROR) */ : PG_exception_stack = &local_sigjmp_buf; 0.00 : 64c608: 48 8d 85 10 ff ff ff lea -0xf0(%rbp),%rax : : /* : * Unblock signals (they were blocked when the postmaster forked us) : */ : PG_SETMASK(&UnBlockSig); 0.00 : 64c60f: 31 d2 xor %edx,%edx 0.00 : 64c611: be 40 f8 bb 00 mov $0xbbf840,%esi 0.00 : 64c616: bf 02 00 00 00 mov $0x2,%edi : : /* : * Advertise our latch that backends can use to wake us up while we're : * sleeping. : */ : ProcGlobal->walwriterLatch = &MyProc->procLatch; 0.00 : 64c61b: 45 31 e4 xor %r12d,%r12d 0.00 : 64c61e: bb 32 00 00 00 mov $0x32,%ebx : */ : smgrcloseall(); : } : : /* We can now handle ereport(ERROR) */ : PG_exception_stack = &local_sigjmp_buf; 0.00 : 64c623: 48 89 05 1e d0 56 00 mov %rax,0x56d01e(%rip) # bb9648 : : /* : * Do what we're here for; then, if XLogBackgroundFlush() found useful : * work to do, reset hibernation counter. : */ : if (XLogBackgroundFlush()) 0.00 : 64c62a: 41 bd 32 00 00 00 mov $0x32,%r13d : PG_exception_stack = &local_sigjmp_buf; : : /* : * Unblock signals (they were blocked when the postmaster forked us) : */ : PG_SETMASK(&UnBlockSig); 0.00 : 64c630: e8 8b d4 e1 ff callq 469ac0 : /* : * Reset hibernation state after any error. : */ : left_till_hibernate = LOOPS_UNTIL_HIBERNATE; : hibernating = false; : SetWalWriterSleeping(false); 0.00 : 64c635: 31 ff xor %edi,%edi 0.00 : 64c637: e8 94 0a e8 ff callq 4cd0d0 : : /* : * Advertise our latch that backends can use to wake us up while we're : * sleeping. : */ : ProcGlobal->walwriterLatch = &MyProc->procLatch; 0.00 : 64c63c: 48 8b 05 05 13 53 00 mov 0x531305(%rip),%rax # b7d948 0.00 : 64c643: 48 8b 15 0e 13 53 00 mov 0x53130e(%rip),%rdx # b7d958 0.00 : 64c64a: 48 83 c0 1c add $0x1c,%rax 0.00 : 64c64e: 48 89 42 30 mov %rax,0x30(%rdx) 0.00 : 64c652: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : hibernating = (left_till_hibernate <= 1); : SetWalWriterSleeping(hibernating); : } : : /* Clear any already-pending wakeups */ : ResetLatch(&MyProc->procLatch); 0.00 : 64c658: 48 8b 3d e9 12 53 00 mov 0x5312e9(%rip),%rdi # b7d948 0.00 : 64c65f: 48 83 c7 1c add $0x1c,%rdi 0.00 : 64c663: e8 d8 c9 fe ff callq 639040 : : /* : * Process any requests or signals received recently. : */ : if (got_SIGHUP) 0.00 : 64c668: 8b 05 f2 06 53 00 mov 0x5306f2(%rip),%eax # b7cd60 0.00 : 64c66e: 85 c0 test %eax,%eax 0.00 : 64c670: 75 7e jne 64c6f0 : { : got_SIGHUP = false; : ProcessConfigFile(PGC_SIGHUP); : } : if (shutdown_requested) 0.00 : 64c672: 8b 05 ec 06 53 00 mov 0x5306ec(%rip),%eax # b7cd64 0.00 : 64c678: 85 c0 test %eax,%eax 0.00 : 64c67a: 0f 85 92 00 00 00 jne 64c712 : : /* : * Do what we're here for; then, if XLogBackgroundFlush() found useful : * work to do, reset hibernation counter. : */ : if (XLogBackgroundFlush()) 0.00 : 64c680: e8 8b 82 e8 ff callq 4d4910 0.00 : 64c685: 84 c0 test %al,%al 0.00 : 64c687: 74 47 je 64c6d0 0.00 : 64c689: 44 89 eb mov %r13d,%ebx : * Sleep until we are signaled or WalWriterDelay has elapsed. If we : * haven't done anything useful for quite some time, lengthen the : * sleep time so as to reduce the server's idle power consumption. : */ : if (left_till_hibernate > 0) : cur_timeout = WalWriterDelay; /* in ms */ 0.00 : 64c68c: 48 63 15 c5 bf 51 00 movslq 0x51bfc5(%rip),%rdx # b68658 : else : cur_timeout = WalWriterDelay * HIBERNATE_FACTOR; : : rc = WaitLatch(&MyProc->procLatch, /home/Computational/mark/src/postgres-andres/src/backend/postmaster/walwriter.c:303 100.00 : 64c693: 48 8b 3d ae 12 53 00 mov 0x5312ae(%rip),%rdi # b7d948 0.00 : 64c69a: be 19 00 00 00 mov $0x19,%esi 0.00 : 64c69f: 48 83 c7 1c add $0x1c,%rdi 0.00 : 64c6a3: e8 98 ce fe ff callq 639540 : : /* : * Emergency bailout if postmaster has died. This is to avoid the : * necessity for manual cleanup of all postmaster children. : */ : if (rc & WL_POSTMASTER_DEATH) 0.00 : 64c6a8: a8 10 test $0x10,%al 0.00 : 64c6aa: 75 6d jne 64c719 : * that we won't miss any signal they send us. (If we discover work : * to do in the last cycle before we would hibernate, the global flag : * will be set unnecessarily, but little harm is done.) But avoid : * touching the global flag if it doesn't need to change. : */ : if (hibernating != (left_till_hibernate <= 1)) 0.00 : 64c6ac: 83 fb 01 cmp $0x1,%ebx 0.00 : 64c6af: 41 0f be d4 movsbl %r12b,%edx 0.00 : 64c6b3: 0f 9e c1 setle %cl 0.00 : 64c6b6: 0f b6 c1 movzbl %cl,%eax 0.00 : 64c6b9: 39 c2 cmp %eax,%edx 0.00 : 64c6bb: 74 9b je 64c658 : { : hibernating = (left_till_hibernate <= 1); : SetWalWriterSleeping(hibernating); 0.00 : 64c6bd: 0f be f9 movsbl %cl,%edi : * will be set unnecessarily, but little harm is done.) But avoid : * touching the global flag if it doesn't need to change. : */ : if (hibernating != (left_till_hibernate <= 1)) : { : hibernating = (left_till_hibernate <= 1); 0.00 : 64c6c0: 41 89 cc mov %ecx,%r12d : SetWalWriterSleeping(hibernating); 0.00 : 64c6c3: e8 08 0a e8 ff callq 4cd0d0 0.00 : 64c6c8: eb 8e jmp 64c658 0.00 : 64c6ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Do what we're here for; then, if XLogBackgroundFlush() found useful : * work to do, reset hibernation counter. : */ : if (XLogBackgroundFlush()) : left_till_hibernate = LOOPS_UNTIL_HIBERNATE; : else if (left_till_hibernate > 0) 0.00 : 64c6d0: 85 db test %ebx,%ebx 0.00 : 64c6d2: 7e 07 jle 64c6db : left_till_hibernate--; 0.00 : 64c6d4: 83 eb 01 sub $0x1,%ebx : /* : * Sleep until we are signaled or WalWriterDelay has elapsed. If we : * haven't done anything useful for quite some time, lengthen the : * sleep time so as to reduce the server's idle power consumption. : */ : if (left_till_hibernate > 0) 0.00 : 64c6d7: 85 db test %ebx,%ebx 0.00 : 64c6d9: 7f b1 jg 64c68c : cur_timeout = WalWriterDelay; /* in ms */ : else : cur_timeout = WalWriterDelay * HIBERNATE_FACTOR; 0.00 : 64c6db: 8b 05 77 bf 51 00 mov 0x51bf77(%rip),%eax # b68658 0.00 : 64c6e1: 8d 04 80 lea (%rax,%rax,4),%eax 0.00 : 64c6e4: 8d 04 80 lea (%rax,%rax,4),%eax 0.00 : 64c6e7: 48 63 d0 movslq %eax,%rdx 0.00 : 64c6ea: eb a7 jmp 64c693 0.00 : 64c6ec: 0f 1f 40 00 nopl 0x0(%rax) : * Process any requests or signals received recently. : */ : if (got_SIGHUP) : { : got_SIGHUP = false; : ProcessConfigFile(PGC_SIGHUP); 0.00 : 64c6f0: bf 02 00 00 00 mov $0x2,%edi : /* : * Process any requests or signals received recently. : */ : if (got_SIGHUP) : { : got_SIGHUP = false; 0.00 : 64c6f5: c7 05 61 06 53 00 00 movl $0x0,0x530661(%rip) # b7cd60 0.00 : 64c6fc: 00 00 00 : ProcessConfigFile(PGC_SIGHUP); 0.00 : 64c6ff: e8 fc 80 14 00 callq 794800 : } : if (shutdown_requested) 0.00 : 64c704: 8b 05 5a 06 53 00 mov 0x53065a(%rip),%eax # b7cd64 0.00 : 64c70a: 85 c0 test %eax,%eax 0.00 : 64c70c: 0f 84 6e ff ff ff je 64c680 : { : /* Normal exit from the walwriter is here */ : proc_exit(0); /* done */ 0.00 : 64c712: 31 ff xor %edi,%edi 0.00 : 64c714: e8 07 26 03 00 callq 67ed20 : /* : * Emergency bailout if postmaster has died. This is to avoid the : * necessity for manual cleanup of all postmaster children. : */ : if (rc & WL_POSTMASTER_DEATH) : exit(1); 0.00 : 64c719: bf 01 00 00 00 mov $0x1,%edi 0.00 : 64c71e: e8 6d ce e1 ff callq 469590 : { : /* Since not using PG_TRY, must reset error stack by hand */ : error_context_stack = NULL; : : /* Prevent interrupts while cleaning up */ : HOLD_INTERRUPTS(); 0.00 : 64c723: 8b 05 6f d9 56 00 mov 0x56d96f(%rip),%eax # bba098 : * This code is heavily based on bgwriter.c, q.v. : */ : if (sigsetjmp(local_sigjmp_buf, 1) != 0) : { : /* Since not using PG_TRY, must reset error stack by hand */ : error_context_stack = NULL; 0.00 : 64c729: 48 c7 05 0c cf 56 00 movq $0x0,0x56cf0c(%rip) # bb9640 0.00 : 64c730: 00 00 00 00 : : /* Prevent interrupts while cleaning up */ : HOLD_INTERRUPTS(); 0.00 : 64c734: 83 c0 01 add $0x1,%eax 0.00 : 64c737: 89 05 5b d9 56 00 mov %eax,0x56d95b(%rip) # bba098 : : /* Report the error to the server log */ : EmitErrorReport(); 0.00 : 64c73d: e8 de c4 12 00 callq 778c20 : /* : * These operations are really just a minimal subset of : * AbortTransaction(). We don't have very many resources to worry : * about in walwriter, but we do have LWLocks, and perhaps buffers? : */ : LWLockReleaseAll(); 0.00 : 64c742: e8 39 2f 04 00 callq 68f680 : AbortBufferIO(); 0.00 : 64c747: e8 24 7b 02 00 callq 674270 0.00 : 64c74c: 0f 1f 40 00 nopl 0x0(%rax) : UnlockBuffers(); 0.00 : 64c750: e8 fb 79 02 00 callq 674150 : /* buffer pins are released here: */ : ResourceOwnerRelease(CurrentResourceOwner, 0.00 : 64c755: 48 8b 3d 64 e1 56 00 mov 0x56e164(%rip),%rdi # bba8c0 0.00 : 64c75c: b9 01 00 00 00 mov $0x1,%ecx 0.00 : 64c761: 31 d2 xor %edx,%edx 0.00 : 64c763: 31 f6 xor %esi,%esi 0.00 : 64c765: e8 36 ed 14 00 callq 79b4a0 : RESOURCE_RELEASE_BEFORE_LOCKS, : false, true); : /* we needn't bother with the other ResourceOwnerRelease phases */ : AtEOXact_Buffers(false); 0.00 : 64c76a: 31 ff xor %edi,%edi 0.00 : 64c76c: e8 1f 95 02 00 callq 675c90 : AtEOXact_SMgr(); 0.00 : 64c771: e8 fa d1 04 00 callq 699970 : AtEOXact_Files(); 0.00 : 64c776: e8 a5 cf 02 00 callq 679720 : AtEOXact_HashTables(false); 0.00 : 64c77b: 31 ff xor %edi,%edi 0.00 : 64c77d: e8 6e 71 13 00 callq 7838f0 0.00 : 64c782: 48 8b 85 08 ff ff ff mov -0xf8(%rbp),%rax 0.00 : 64c789: 48 89 05 d0 e0 56 00 mov %rax,0x56e0d0(%rip) # bba860 : /* : * Now return to normal top-level context and clear ErrorContext for : * next time. : */ : MemoryContextSwitchTo(walwriter_context); : FlushErrorState(); 0.00 : 64c790: e8 9b ae 12 00 callq 777630 : : /* Flush any leaked data in the top-level context */ : MemoryContextResetAndDeleteChildren(walwriter_context); 0.00 : 64c795: 48 8b bd 08 ff ff ff mov -0xf8(%rbp),%rdi 0.00 : 64c79c: e8 6f c4 14 00 callq 798c10 : : /* Now we can allow interrupts again */ : RESUME_INTERRUPTS(); 0.00 : 64c7a1: 8b 05 f1 d8 56 00 mov 0x56d8f1(%rip),%eax # bba098 : /* : * Sleep at least 1 second after any error. A write error is likely : * to be repeated, and we don't want to be filling the error logs as : * fast as we can. : */ : pg_usleep(1000000L); 0.00 : 64c7a7: bf 40 42 0f 00 mov $0xf4240,%edi : : /* Flush any leaked data in the top-level context */ : MemoryContextResetAndDeleteChildren(walwriter_context); : : /* Now we can allow interrupts again */ : RESUME_INTERRUPTS(); 0.00 : 64c7ac: 83 e8 01 sub $0x1,%eax 0.00 : 64c7af: 89 05 e3 d8 56 00 mov %eax,0x56d8e3(%rip) # bba098 : /* : * Sleep at least 1 second after any error. A write error is likely : * to be repeated, and we don't want to be filling the error logs as : * fast as we can. : */ : pg_usleep(1000000L); 0.00 : 64c7b5: e8 96 ff 15 00 callq 7ac750 : /* : * Close all open files after any error. This is helpful on Windows, : * where holding deleted files open causes various strange errors. : * It's not clear we need it elsewhere, but shouldn't hurt. : */ : smgrcloseall(); 0.00 : 64c7ba: e8 21 d2 04 00 callq 6999e0 0.00 : 64c7bf: e9 44 fe ff ff jmpq 64c608 : * child processes, but for consistency we make all postmaster child : * processes do this.) : */ : #ifdef HAVE_SETSID : if (setsid() < 0) : elog(FATAL, "setsid() failed: %m"); 0.00 : 64c7c4: ba 94 13 8a 00 mov $0x8a1394,%edx 0.00 : 64c7c9: be 70 00 00 00 mov $0x70,%esi 0.00 : 64c7ce: bf 7d 13 8a 00 mov $0x8a137d,%edi 0.00 : 64c7d3: e8 48 ec 12 00 callq 77b420 0.00 : 64c7d8: be 83 fe 7b 00 mov $0x7bfe83,%esi 0.00 : 64c7dd: bf 15 00 00 00 mov $0x15,%edi 0.00 : 64c7e2: 31 c0 xor %eax,%eax 0.00 : 64c7e4: e8 47 ea 12 00 callq 77b230 0.00 : 64c7e9: e8 e2 cc e1 ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3080 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000677030 : : * LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE), except that it loops until : * it has successfully observed pin count = 1. : */ : void : LockBufferForCleanup(Buffer buffer) : { 0.00 : 677030: 55 push %rbp 0.00 : 677031: 48 89 e5 mov %rsp,%rbp 0.00 : 677034: 41 57 push %r15 0.00 : 677036: 41 56 push %r14 0.00 : 677038: 41 55 push %r13 0.00 : 67703a: 41 89 fd mov %edi,%r13d 0.00 : 67703d: 41 54 push %r12 0.00 : 67703f: 53 push %rbx 0.00 : 677040: 48 83 ec 08 sub $0x8,%rsp : volatile BufferDesc *bufHdr; : : Assert(BufferIsValid(buffer)); : Assert(PinCountWaitBuf == NULL); : : if (BufferIsLocal(buffer)) 0.00 : 677044: 85 ff test %edi,%edi 0.00 : 677046: 0f 88 14 01 00 00 js 677160 : PrivateRefCountEntry *ref; : : Assert(BufferIsValid(buffer)); : Assert(!BufferIsLocal(buffer)); : : ref = GetPrivateRefCountEntry(buffer, false, false); 0.00 : 67704c: 31 d2 xor %edx,%edx 0.00 : 67704e: 31 f6 xor %esi,%esi 0.00 : 677050: e8 cb d4 ff ff callq 674520 : : if (ref == NULL) 0.00 : 677055: 48 85 c0 test %rax,%rax 0.00 : 677058: 0f 84 60 01 00 00 je 6771be : /* Nobody else to wait for */ : return; : } : : /* There should be exactly one local pin */ : if (GetPrivateRefCount(buffer) != 1) 0.00 : 67705e: 83 78 04 01 cmpl $0x1,0x4(%rax) 0.00 : 677062: 0f 85 56 01 00 00 jne 6771be : elog(ERROR, "incorrect local pin count: %d", : GetPrivateRefCount(buffer)); : : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 677068: 49 63 c5 movslq %r13d,%rax : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 67706b: 41 bf 01 00 00 00 mov $0x1,%r15d : : /* Wait to be signaled by UnpinBuffer() */ : if (InHotStandby) : { : /* Publish the bufid that Startup process waits on */ : SetStartupBufferPinWaitBufId(buffer - 1); 0.00 : 677071: 45 8d 75 ff lea -0x1(%r13),%r14d : /* There should be exactly one local pin */ : if (GetPrivateRefCount(buffer) != 1) : elog(ERROR, "incorrect local pin count: %d", : GetPrivateRefCount(buffer)); : : bufHdr = &BufferDescriptors[buffer - 1]; 0.00 : 677075: 48 8d 58 ff lea -0x1(%rax),%rbx 0.00 : 677079: 48 c1 e3 06 shl $0x6,%rbx 0.00 : 67707d: 48 03 1d 7c 8a 54 00 add 0x548a7c(%rip),%rbx # bbfb00 0.00 : 677084: 4c 8d 63 20 lea 0x20(%rbx),%r12 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/bufmgr.c:3080 100.00 : 677088: eb 72 jmp 6770fc 0.00 : 67708a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : { : /* Try to acquire lock */ : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); : LockBufHdr(bufHdr); : Assert(bufHdr->refcount > 0); : if (bufHdr->refcount == 1) 0.00 : 677090: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 677093: 83 e8 01 sub $0x1,%eax 0.00 : 677096: 0f 84 9b 00 00 00 je 677137 : /* Successfully acquired exclusive lock with pincount 1 */ : UnlockBufHdr(bufHdr); : return; : } : /* Failed, so mark myself as waiting for pincount 1 */ : if (bufHdr->flags & BM_PIN_COUNT_WAITER) 0.00 : 67709c: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6770a0: a8 40 test $0x40,%al 0.00 : 6770a2: 0f 85 de 00 00 00 jne 677186 : { : UnlockBufHdr(bufHdr); : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); : elog(ERROR, "multiple backends attempting to wait for pincount 1"); : } : bufHdr->wait_backend_pid = MyProcPid; 0.00 : 6770a8: 8b 05 36 8c 54 00 mov 0x548c36(%rip),%eax # bbfce4 0.00 : 6770ae: 89 43 1c mov %eax,0x1c(%rbx) : bufHdr->flags |= BM_PIN_COUNT_WAITER; 0.00 : 6770b1: 0f b7 43 14 movzwl 0x14(%rbx),%eax 0.00 : 6770b5: 83 c8 40 or $0x40,%eax 0.00 : 6770b8: 66 89 43 14 mov %ax,0x14(%rbx) : PinCountWaitBuf = bufHdr; 0.00 : 6770bc: 48 89 1d c5 5f 50 00 mov %rbx,0x505fc5(%rip) # b7d088 : UnlockBufHdr(bufHdr); : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 6770c3: 31 f6 xor %esi,%esi : elog(ERROR, "multiple backends attempting to wait for pincount 1"); : } : bufHdr->wait_backend_pid = MyProcPid; : bufHdr->flags |= BM_PIN_COUNT_WAITER; : PinCountWaitBuf = bufHdr; : UnlockBufHdr(bufHdr); 0.00 : 6770c5: c6 43 20 00 movb $0x0,0x20(%rbx) : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 6770c9: 44 89 ef mov %r13d,%edi 0.00 : 6770cc: e8 3f d6 ff ff callq 674710 : : /* Wait to be signaled by UnpinBuffer() */ : if (InHotStandby) 0.00 : 6770d1: 83 3d 94 20 50 00 01 cmpl $0x1,0x502094(%rip) # b7916c 0.00 : 6770d8: 76 76 jbe 677150 : { : /* Publish the bufid that Startup process waits on */ : SetStartupBufferPinWaitBufId(buffer - 1); 0.00 : 6770da: 44 89 f7 mov %r14d,%edi 0.00 : 6770dd: e8 ce 52 01 00 callq 68c3b0 : /* Set alarm and then wait to be signaled by UnpinBuffer() */ : ResolveRecoveryConflictWithBufferPin(); 0.00 : 6770e2: e8 39 f2 00 00 callq 686320 : /* Reset the published bufid */ : SetStartupBufferPinWaitBufId(-1); 0.00 : 6770e7: bf ff ff ff ff mov $0xffffffff,%edi 0.00 : 6770ec: e8 bf 52 01 00 callq 68c3b0 : } : else : ProcWaitForSignal(); : : PinCountWaitBuf = NULL; 0.00 : 6770f1: 48 c7 05 8c 5f 50 00 movq $0x0,0x505f8c(%rip) # b7d088 0.00 : 6770f8: 00 00 00 00 : bufHdr = &BufferDescriptors[buffer - 1]; : : for (;;) : { : /* Try to acquire lock */ : LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); 0.00 : 6770fc: be 02 00 00 00 mov $0x2,%esi 0.00 : 677101: 44 89 ef mov %r13d,%edi 0.00 : 677104: e8 07 d6 ff ff callq 674710 0.00 : 677109: 44 89 f8 mov %r15d,%eax 0.00 : 67710c: f0 41 86 04 24 lock xchg %al,(%r12) : LockBufHdr(bufHdr); 0.00 : 677111: 84 c0 test %al,%al 0.00 : 677113: 0f 84 77 ff ff ff je 677090 0.00 : 677119: ba 0e 0c 00 00 mov $0xc0e,%edx 0.00 : 67711e: be 53 9d 8a 00 mov $0x8a9d53,%esi 0.00 : 677123: 4c 89 e7 mov %r12,%rdi 0.00 : 677126: e8 15 8f 01 00 callq 690040 : Assert(bufHdr->refcount > 0); : if (bufHdr->refcount == 1) 0.00 : 67712b: 8b 43 18 mov 0x18(%rbx),%eax 0.00 : 67712e: 83 e8 01 sub $0x1,%eax 0.00 : 677131: 0f 85 65 ff ff ff jne 67709c : { : /* Successfully acquired exclusive lock with pincount 1 */ : UnlockBufHdr(bufHdr); 0.00 : 677137: c6 43 20 00 movb $0x0,0x20(%rbx) : ProcWaitForSignal(); : : PinCountWaitBuf = NULL; : /* Loop back and try again */ : } : } 0.00 : 67713b: 48 83 c4 08 add $0x8,%rsp 0.00 : 67713f: 5b pop %rbx 0.00 : 677140: 41 5c pop %r12 0.00 : 677142: 41 5d pop %r13 0.00 : 677144: 41 5e pop %r14 0.00 : 677146: 41 5f pop %r15 0.00 : 677148: c9 leaveq 0.00 : 677149: c3 retq 0.00 : 67714a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : ResolveRecoveryConflictWithBufferPin(); : /* Reset the published bufid */ : SetStartupBufferPinWaitBufId(-1); : } : else : ProcWaitForSignal(); 0.00 : 677150: e8 0b 54 01 00 callq 68c560 0.00 : 677155: eb 9a jmp 6770f1 0.00 : 677157: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 67715e: 00 00 : Assert(PinCountWaitBuf == NULL); : : if (BufferIsLocal(buffer)) : { : /* There should be exactly one pin */ : if (LocalRefCount[-buffer - 1] != 1) 0.00 : 677160: 48 8b 05 b9 5f 50 00 mov 0x505fb9(%rip),%rax # b7d120 0.00 : 677167: 41 f7 d5 not %r13d 0.00 : 67716a: 49 63 dd movslq %r13d,%rbx 0.00 : 67716d: 83 3c 98 01 cmpl $0x1,(%rax,%rbx,4) 0.00 : 677171: 0f 85 87 00 00 00 jne 6771fe : ProcWaitForSignal(); : : PinCountWaitBuf = NULL; : /* Loop back and try again */ : } : } 0.00 : 677177: 48 83 c4 08 add $0x8,%rsp 0.00 : 67717b: 5b pop %rbx 0.00 : 67717c: 41 5c pop %r12 0.00 : 67717e: 41 5d pop %r13 0.00 : 677180: 41 5e pop %r14 0.00 : 677182: 41 5f pop %r15 0.00 : 677184: c9 leaveq 0.00 : 677185: c3 retq : } : /* Failed, so mark myself as waiting for pincount 1 */ : if (bufHdr->flags & BM_PIN_COUNT_WAITER) : { : UnlockBufHdr(bufHdr); : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 677186: 31 f6 xor %esi,%esi 0.00 : 677188: 44 89 ef mov %r13d,%edi : return; : } : /* Failed, so mark myself as waiting for pincount 1 */ : if (bufHdr->flags & BM_PIN_COUNT_WAITER) : { : UnlockBufHdr(bufHdr); 0.00 : 67718b: c6 43 20 00 movb $0x0,0x20(%rbx) : LockBuffer(buffer, BUFFER_LOCK_UNLOCK); 0.00 : 67718f: e8 7c d5 ff ff callq 674710 : elog(ERROR, "multiple backends attempting to wait for pincount 1"); 0.00 : 677194: ba 00 a0 8a 00 mov $0x8aa000,%edx 0.00 : 677199: be 1b 0c 00 00 mov $0xc1b,%esi 0.00 : 67719e: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 6771a3: e8 78 42 10 00 callq 77b420 0.00 : 6771a8: be b8 9f 8a 00 mov $0x8a9fb8,%esi 0.00 : 6771ad: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6771b2: 31 c0 xor %eax,%eax 0.00 : 6771b4: e8 77 40 10 00 callq 77b230 0.00 : 6771b9: e8 12 23 df ff callq 4694d0 : return; : } : : /* There should be exactly one local pin */ : if (GetPrivateRefCount(buffer) != 1) : elog(ERROR, "incorrect local pin count: %d", 0.00 : 6771be: ba 00 a0 8a 00 mov $0x8aa000,%edx 0.00 : 6771c3: be 06 0c 00 00 mov $0xc06,%esi 0.00 : 6771c8: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 6771cd: e8 4e 42 10 00 callq 77b420 : PrivateRefCountEntry *ref; : : Assert(BufferIsValid(buffer)); : Assert(!BufferIsLocal(buffer)); : : ref = GetPrivateRefCountEntry(buffer, false, false); 0.00 : 6771d2: 31 d2 xor %edx,%edx 0.00 : 6771d4: 31 f6 xor %esi,%esi 0.00 : 6771d6: 44 89 ef mov %r13d,%edi 0.00 : 6771d9: e8 42 d3 ff ff callq 674520 : : if (ref == NULL) 0.00 : 6771de: 31 d2 xor %edx,%edx 0.00 : 6771e0: 48 85 c0 test %rax,%rax 0.00 : 6771e3: 74 03 je 6771e8 : return 0; : return ref->refcount; 0.00 : 6771e5: 8b 50 04 mov 0x4(%rax),%edx : return; : } : : /* There should be exactly one local pin */ : if (GetPrivateRefCount(buffer) != 1) : elog(ERROR, "incorrect local pin count: %d", 0.00 : 6771e8: be 7e 9d 8a 00 mov $0x8a9d7e,%esi 0.00 : 6771ed: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6771f2: 31 c0 xor %eax,%eax 0.00 : 6771f4: e8 37 40 10 00 callq 77b230 0.00 : 6771f9: e8 d2 22 df ff callq 4694d0 : : if (BufferIsLocal(buffer)) : { : /* There should be exactly one pin */ : if (LocalRefCount[-buffer - 1] != 1) : elog(ERROR, "incorrect local pin count: %d", 0.00 : 6771fe: ba 00 a0 8a 00 mov $0x8aa000,%edx 0.00 : 677203: be fe 0b 00 00 mov $0xbfe,%esi 0.00 : 677208: bf 53 9d 8a 00 mov $0x8a9d53,%edi 0.00 : 67720d: e8 0e 42 10 00 callq 77b420 0.00 : 677212: 48 8b 05 07 5f 50 00 mov 0x505f07(%rip),%rax # b7d120 0.00 : 677219: 8b 14 98 mov (%rax,%rbx,4),%edx 0.00 : 67721c: eb ca jmp 6771e8 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/buffer/freelist.c:313 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000677430 : : * allocs if non-NULL pointers are passed. The alloc count is reset after : * being read. : */ : int : StrategySyncStart(uint32 *complete_passes, uint32 *num_buf_alloc) : { 0.00 : 677430: 55 push %rbp : int result; : : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 677431: 48 8b 15 c8 5c 50 00 mov 0x505cc8(%rip),%rdx # b7d100 : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 677438: b8 01 00 00 00 mov $0x1,%eax : * allocs if non-NULL pointers are passed. The alloc count is reset after : * being read. : */ : int : StrategySyncStart(uint32 *complete_passes, uint32 *num_buf_alloc) : { 0.00 : 67743d: 48 89 e5 mov %rsp,%rbp 0.00 : 677440: 41 54 push %r12 0.00 : 677442: 49 89 f4 mov %rsi,%r12 0.00 : 677445: 53 push %rbx 0.00 : 677446: 48 89 fb mov %rdi,%rbx 0.00 : 677449: f0 86 02 lock xchg %al,(%rdx) : int result; : : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 100.00 : 67744c: 84 c0 test %al,%al 0.00 : 67744e: 75 60 jne 6774b0 : result = pg_atomic_read_u32(&StrategyControl->nextVictimBuffer) % NBuffers; 0.00 : 677450: 48 8b 15 a9 5c 50 00 mov 0x505ca9(%rip),%rdx # b7d100 : if (complete_passes) 0.00 : 677457: 48 85 db test %rbx,%rbx : StrategySyncStart(uint32 *complete_passes, uint32 *num_buf_alloc) : { : int result; : : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); : result = pg_atomic_read_u32(&StrategyControl->nextVictimBuffer) % NBuffers; 0.00 : 67745a: 8b 3d c0 16 4f 00 mov 0x4f16c0(%rip),%edi # b68b20 : #ifndef PG_HAVE_ATOMIC_READ_U32 : #define PG_HAVE_ATOMIC_READ_U32 : static inline uint32 : pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) : { : return *(&ptr->value); 0.00 : 677460: 44 8b 42 04 mov 0x4(%rdx),%r8d : if (complete_passes) 0.00 : 677464: 74 05 je 67746b 0.00 : 677466: 8b 42 10 mov 0x10(%rdx),%eax : *complete_passes = pg_atomic_read_u32(&StrategyControl->completePasses); 0.00 : 677469: 89 03 mov %eax,(%rbx) : if (num_buf_alloc) 0.00 : 67746b: 4d 85 e4 test %r12,%r12 0.00 : 67746e: 74 25 je 677495 : { : *num_buf_alloc = pg_atomic_exchange_u32(&StrategyControl->numBufferAllocs, 0); 0.00 : 677470: 48 83 c2 14 add $0x14,%rdx : : /* : * Perform cmpxchg and use the zero flag which it implicitly sets when : * equal to measure the success. : */ : __asm__ __volatile__( 0.00 : 677474: 31 f6 xor %esi,%esi 0.00 : 677476: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 67747d: 00 00 00 0.00 : 677480: 8b 0a mov (%rdx),%ecx 0.00 : 677482: 89 c8 mov %ecx,%eax 0.00 : 677484: f0 0f b1 32 lock cmpxchg %esi,(%rdx) 0.00 : 677488: 41 0f 94 c1 sete %r9b : { : uint32 old; : while (true) : { : old = pg_atomic_read_u32_impl(ptr); : if (pg_atomic_compare_exchange_u32_impl(ptr, &old, xchg_)) 0.00 : 67748c: 45 84 c9 test %r9b,%r9b 0.00 : 67748f: 74 ef je 677480 0.00 : 677491: 41 89 04 24 mov %eax,(%r12) : } : SpinLockRelease(&StrategyControl->buffer_strategy_lock); 0.00 : 677495: 48 8b 05 64 5c 50 00 mov 0x505c64(%rip),%rax # b7d100 0.00 : 67749c: 31 d2 xor %edx,%edx 0.00 : 67749e: c6 00 00 movb $0x0,(%rax) 0.00 : 6774a1: 44 89 c0 mov %r8d,%eax 0.00 : 6774a4: f7 f7 div %edi : return result; : } 0.00 : 6774a6: 5b pop %rbx 0.00 : 6774a7: 41 5c pop %r12 0.00 : 6774a9: c9 leaveq 0.00 : 6774aa: 89 d0 mov %edx,%eax 0.00 : 6774ac: c3 retq 0.00 : 6774ad: 0f 1f 00 nopl (%rax) : int : StrategySyncStart(uint32 *complete_passes, uint32 *num_buf_alloc) : { : int result; : : SpinLockAcquire(&StrategyControl->buffer_strategy_lock); 0.00 : 6774b0: 48 8b 3d 49 5c 50 00 mov 0x505c49(%rip),%rdi # b7d100 0.00 : 6774b7: ba 39 01 00 00 mov $0x139,%edx 0.00 : 6774bc: be ec a0 8a 00 mov $0x8aa0ec,%esi 0.00 : 6774c1: e8 7a 8b 01 00 callq 690040 0.00 : 6774c6: eb 88 jmp 677450 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/freespace/freespace.c:180 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000067c670 : : * in the FSM, the space might not become visible to searchers until the next : * FreeSpaceMapVacuum call, which updates the upper level pages. : */ : void : RecordPageWithFreeSpace(Relation rel, BlockNumber heapBlk, Size spaceAvail) : { 0.00 : 67c670: 55 push %rbp 100.00 : 67c671: 48 89 e5 mov %rsp,%rbp 0.00 : 67c674: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 67c678: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 67c67c: 48 83 ec 20 sub $0x20,%rsp : { : int cat; : : Assert(avail < BLCKSZ); : : if (avail >= MaxFSMRequestSize) 0.00 : 67c680: 48 81 fa df 1f 00 00 cmp $0x1fdf,%rdx : * in the FSM, the space might not become visible to searchers until the next : * FreeSpaceMapVacuum call, which updates the upper level pages. : */ : void : RecordPageWithFreeSpace(Relation rel, BlockNumber heapBlk, Size spaceAvail) : { 0.00 : 67c687: 49 89 fc mov %rdi,%r12 : { : int cat; : : Assert(avail < BLCKSZ); : : if (avail >= MaxFSMRequestSize) 0.00 : 67c68a: bb ff 00 00 00 mov $0xff,%ebx : * in the FSM, the space might not become visible to searchers until the next : * FreeSpaceMapVacuum call, which updates the upper level pages. : */ : void : RecordPageWithFreeSpace(Relation rel, BlockNumber heapBlk, Size spaceAvail) : { 0.00 : 67c68f: 89 f7 mov %esi,%edi : { : int cat; : : Assert(avail < BLCKSZ); : : if (avail >= MaxFSMRequestSize) 0.00 : 67c691: 77 0a ja 67c69d 0.00 : 67c693: 48 89 d0 mov %rdx,%rax 0.00 : 67c696: 48 c1 e8 05 shr $0x5,%rax 0.00 : 67c69a: 0f b6 d8 movzbl %al,%ebx : int new_cat = fsm_space_avail_to_cat(spaceAvail); : FSMAddress addr; : uint16 slot; : : /* Get the location of the FSM byte representing the heap block */ : addr = fsm_get_location(heapBlk, &slot); 0.00 : 67c69d: 48 8d 75 ee lea -0x12(%rbp),%rsi 0.00 : 67c6a1: e8 2a f7 ff ff callq 67bdd0 : : fsm_set_and_search(rel, addr, slot, new_cat, 0); 0.00 : 67c6a6: 0f b7 55 ee movzwl -0x12(%rbp),%edx 0.00 : 67c6aa: 89 d9 mov %ebx,%ecx 0.00 : 67c6ac: 4c 89 e7 mov %r12,%rdi : int new_cat = fsm_space_avail_to_cat(spaceAvail); : FSMAddress addr; : uint16 slot; : : /* Get the location of the FSM byte representing the heap block */ : addr = fsm_get_location(heapBlk, &slot); 0.00 : 67c6af: 48 89 c6 mov %rax,%rsi : : fsm_set_and_search(rel, addr, slot, new_cat, 0); 0.00 : 67c6b2: 45 31 c0 xor %r8d,%r8d 0.00 : 67c6b5: e8 c6 fe ff ff callq 67c580 : } 0.00 : 67c6ba: 48 8b 5d f0 mov -0x10(%rbp),%rbx 0.00 : 67c6be: 4c 8b 65 f8 mov -0x8(%rbp),%r12 0.00 : 67c6c2: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/sinvaladt.c:549 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000684ff0 : : * Note: we assume that "datasize" is not so large that it might be important : * to break our hold on SInvalReadLock into segments. : */ : int : SIGetDataEntries(SharedInvalidationMessage *data, int datasize) : { 0.00 : 684ff0: 55 push %rbp /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/sinvaladt.c:549 100.00 : 684ff1: 48 89 e5 mov %rsp,%rbp 0.00 : 684ff4: 41 57 push %r15 0.00 : 684ff6: 41 56 push %r14 0.00 : 684ff8: 41 89 f6 mov %esi,%r14d 0.00 : 684ffb: 41 55 push %r13 0.00 : 684ffd: 41 54 push %r12 : * backwards over a preceding lock acquisition, so it should be OK. If we : * haven't acquired a lock preventing against further relevant : * invalidations, any such occurrence is not much different than if the : * invalidation had arrived slightly later in the first place. : */ : if (!stateP->hasMessages) 0.00 : 684fff: 45 31 e4 xor %r12d,%r12d : * Note: we assume that "datasize" is not so large that it might be important : * to break our hold on SInvalReadLock into segments. : */ : int : SIGetDataEntries(SharedInvalidationMessage *data, int datasize) : { 0.00 : 685002: 53 push %rbx 0.00 : 685003: 48 83 ec 08 sub $0x8,%rsp : ProcState *stateP; : int max; : int n; : : segP = shmInvalBuffer; : stateP = &segP->procState[MyBackendId - 1]; 0.00 : 685007: 48 63 05 fa 3a 4e 00 movslq 0x4e3afa(%rip),%rax # b68b08 : SISeg *segP; : ProcState *stateP; : int max; : int n; : : segP = shmInvalBuffer; 0.00 : 68500e: 48 8b 1d ab 88 4f 00 mov 0x4f88ab(%rip),%rbx # b7d8c0 : * Note: we assume that "datasize" is not so large that it might be important : * to break our hold on SInvalReadLock into segments. : */ : int : SIGetDataEntries(SharedInvalidationMessage *data, int datasize) : { 0.00 : 685015: 48 89 7d d0 mov %rdi,-0x30(%rbp) : * backwards over a preceding lock acquisition, so it should be OK. If we : * haven't acquired a lock preventing against further relevant : * invalidations, any such occurrence is not much different than if the : * invalidation had arrived slightly later in the first place. : */ : if (!stateP->hasMessages) 0.00 : 685019: 4c 8d a8 00 08 00 00 lea 0x800(%rax),%r13 : ProcState *stateP; : int max; : int n; : : segP = shmInvalBuffer; : stateP = &segP->procState[MyBackendId - 1]; 0.00 : 685020: 4c 8d 78 ff lea -0x1(%rax),%r15 : * backwards over a preceding lock acquisition, so it should be OK. If we : * haven't acquired a lock preventing against further relevant : * invalidations, any such occurrence is not much different than if the : * invalidation had arrived slightly later in the first place. : */ : if (!stateP->hasMessages) 0.00 : 685024: 49 c1 e5 05 shl $0x5,%r13 0.00 : 685028: 41 80 7c 1d 0e 00 cmpb $0x0,0xe(%r13,%rbx,1) 0.00 : 68502e: 75 18 jne 685048 : else : stateP->hasMessages = true; : : LWLockRelease(SInvalReadLock); : return n; : } 0.00 : 685030: 48 83 c4 08 add $0x8,%rsp 0.00 : 685034: 44 89 e0 mov %r12d,%eax 0.00 : 685037: 5b pop %rbx 0.00 : 685038: 41 5c pop %r12 0.00 : 68503a: 41 5d pop %r13 0.00 : 68503c: 41 5e pop %r14 0.00 : 68503e: 41 5f pop %r15 0.00 : 685040: c9 leaveq 0.00 : 685041: c3 retq 0.00 : 685042: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * invalidation had arrived slightly later in the first place. : */ : if (!stateP->hasMessages) : return 0; : : LWLockAcquire(SInvalReadLock, LW_SHARED); 0.00 : 685048: 48 8b 3d b1 89 4f 00 mov 0x4f89b1(%rip),%rdi # b7da00 0.00 : 68504f: be 01 00 00 00 mov $0x1,%esi 0.00 : 685054: 48 81 c7 a0 00 00 00 add $0xa0,%rdi 0.00 : 68505b: e8 90 aa 00 00 callq 68faf0 : * notice those messages part-way through. : * : * Note that, if we don't end up reading all of the messages, we had : * better be certain to reset this flag before exiting! : */ : stateP->hasMessages = false; 0.00 : 685060: 41 c6 44 1d 0e 00 movb $0x0,0xe(%r13,%rbx,1) : /* Fetch current value of maxMsgNum using spinlock */ : { : /* use volatile pointer to prevent code rearrangement */ : volatile SISeg *vsegP = segP; : : SpinLockAcquire(&vsegP->msgnumLock); 0.00 : 685066: 48 8d 7b 14 lea 0x14(%rbx),%rdi : static __inline__ int : tas(volatile slock_t *lock) : { : register slock_t _res = 1; : : __asm__ __volatile__( 0.00 : 68506a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 68506f: f0 86 07 lock xchg %al,(%rdi) 0.00 : 685072: 84 c0 test %al,%al 0.00 : 685074: 0f 85 ce 00 00 00 jne 685148 : max = vsegP->maxMsgNum; 0.00 : 68507a: 8b 73 04 mov 0x4(%rbx),%esi : SpinLockRelease(&vsegP->msgnumLock); : } : : if (stateP->resetState) 0.00 : 68507d: 4d 8d 87 01 08 00 00 lea 0x801(%r15),%r8 : /* use volatile pointer to prevent code rearrangement */ : volatile SISeg *vsegP = segP; : : SpinLockAcquire(&vsegP->msgnumLock); : max = vsegP->maxMsgNum; : SpinLockRelease(&vsegP->msgnumLock); 0.00 : 685084: c6 43 14 00 movb $0x0,0x14(%rbx) : } : : if (stateP->resetState) 0.00 : 685088: 4c 89 c2 mov %r8,%rdx 0.00 : 68508b: 48 c1 e2 05 shl $0x5,%rdx 0.00 : 68508f: 80 7c 1a 0c 00 cmpb $0x0,0xc(%rdx,%rbx,1) 0.00 : 685094: 0f 85 c7 00 00 00 jne 685161 : * There may be other backends that haven't read the message(s), so we : * cannot delete them here. SICleanupQueue() will eventually remove them : * from the queue. : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) 0.00 : 68509a: 45 85 f6 test %r14d,%r14d 0.00 : 68509d: 0f 8e b9 00 00 00 jle 68515c 0.00 : 6850a3: 8b 44 1a 08 mov 0x8(%rdx,%rbx,1),%eax : * signaled flag, too. : */ : stateP->nextMsgNum = max; : stateP->resetState = false; : stateP->signaled = false; : LWLockRelease(SInvalReadLock); 0.00 : 6850a7: 45 31 e4 xor %r12d,%r12d 0.00 : 6850aa: 48 8b 7d d0 mov -0x30(%rbp),%rdi : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) : { : data[n++] = segP->buffer[stateP->nextMsgNum % MAXNUMMESSAGES]; : stateP->nextMsgNum++; 0.00 : 6850ae: 48 89 d1 mov %rdx,%rcx : * There may be other backends that haven't read the message(s), so we : * cannot delete them here. SICleanupQueue() will eventually remove them : * from the queue. : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) 0.00 : 6850b1: 39 c6 cmp %eax,%esi 0.00 : 6850b3: 7f 13 jg 6850c8 0.00 : 6850b5: e9 7e 00 00 00 jmpq 685138 0.00 : 6850ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6850c0: 48 83 c7 10 add $0x10,%rdi 0.00 : 6850c4: 39 c6 cmp %eax,%esi 0.00 : 6850c6: 7e 70 jle 685138 : { : data[n++] = segP->buffer[stateP->nextMsgNum % MAXNUMMESSAGES]; 0.00 : 6850c8: 89 c2 mov %eax,%edx 0.00 : 6850ca: 41 83 c4 01 add $0x1,%r12d 0.00 : 6850ce: c1 fa 1f sar $0x1f,%edx 0.00 : 6850d1: c1 ea 14 shr $0x14,%edx 0.00 : 6850d4: 01 d0 add %edx,%eax 0.00 : 6850d6: 25 ff 0f 00 00 and $0xfff,%eax 0.00 : 6850db: 29 d0 sub %edx,%eax 0.00 : 6850dd: 48 98 cltq 0.00 : 6850df: 48 83 c0 01 add $0x1,%rax 0.00 : 6850e3: 48 c1 e0 04 shl $0x4,%rax 0.00 : 6850e7: 48 8b 54 18 08 mov 0x8(%rax,%rbx,1),%rdx 0.00 : 6850ec: 48 89 17 mov %rdx,(%rdi) 0.00 : 6850ef: 48 8b 44 18 10 mov 0x10(%rax,%rbx,1),%rax 0.00 : 6850f4: 48 89 47 08 mov %rax,0x8(%rdi) : stateP->nextMsgNum++; 0.00 : 6850f8: 8b 44 19 08 mov 0x8(%rcx,%rbx,1),%eax 0.00 : 6850fc: 83 c0 01 add $0x1,%eax : * There may be other backends that haven't read the message(s), so we : * cannot delete them here. SICleanupQueue() will eventually remove them : * from the queue. : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) 0.00 : 6850ff: 45 39 e6 cmp %r12d,%r14d : { : data[n++] = segP->buffer[stateP->nextMsgNum % MAXNUMMESSAGES]; : stateP->nextMsgNum++; 0.00 : 685102: 89 44 19 08 mov %eax,0x8(%rcx,%rbx,1) : * There may be other backends that haven't read the message(s), so we : * cannot delete them here. SICleanupQueue() will eventually remove them : * from the queue. : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) 0.00 : 685106: 7f b8 jg 6850c0 : * we'll get another signal if we fall behind again. : * : * If we haven't caught up completely, reset the hasMessages flag so that : * we see the remaining messages next time. : */ : if (stateP->nextMsgNum >= max) 0.00 : 685108: 4c 89 c0 mov %r8,%rax 0.00 : 68510b: 48 c1 e0 05 shl $0x5,%rax 0.00 : 68510f: 3b 74 18 08 cmp 0x8(%rax,%rbx,1),%esi 0.00 : 685113: 7e 23 jle 685138 : stateP->signaled = false; : else : stateP->hasMessages = true; 0.00 : 685115: c6 44 18 0e 01 movb $0x1,0xe(%rax,%rbx,1) : : LWLockRelease(SInvalReadLock); 0.00 : 68511a: 48 8b 3d df 88 4f 00 mov 0x4f88df(%rip),%rdi # b7da00 0.00 : 685121: 48 81 c7 a0 00 00 00 add $0xa0,%rdi 0.00 : 685128: e8 73 a2 00 00 callq 68f3a0 : return n; : } 0.00 : 68512d: e9 fe fe ff ff jmpq 685030 0.00 : 685132: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * : * If we haven't caught up completely, reset the hasMessages flag so that : * we see the remaining messages next time. : */ : if (stateP->nextMsgNum >= max) : stateP->signaled = false; 0.00 : 685138: 49 c1 e0 05 shl $0x5,%r8 0.00 : 68513c: 42 c6 44 03 0d 00 movb $0x0,0xd(%rbx,%r8,1) 0.00 : 685142: eb d6 jmp 68511a 0.00 : 685144: 0f 1f 40 00 nopl 0x0(%rax) : /* Fetch current value of maxMsgNum using spinlock */ : { : /* use volatile pointer to prevent code rearrangement */ : volatile SISeg *vsegP = segP; : : SpinLockAcquire(&vsegP->msgnumLock); 0.00 : 685148: ba 4e 02 00 00 mov $0x24e,%edx 0.00 : 68514d: be 1d bd 8a 00 mov $0x8abd1d,%esi 0.00 : 685152: e8 e9 ae 00 00 callq 690040 0.00 : 685157: e9 1e ff ff ff jmpq 68507a : * There may be other backends that haven't read the message(s), so we : * cannot delete them here. SICleanupQueue() will eventually remove them : * from the queue. : */ : n = 0; : while (n < datasize && stateP->nextMsgNum < max) 0.00 : 68515c: 45 31 e4 xor %r12d,%r12d 0.00 : 68515f: eb a7 jmp 685108 : /* : * Force reset. We can say we have dealt with any messages added : * since the reset, as well; and that means we should clear the : * signaled flag, too. : */ : stateP->nextMsgNum = max; 0.00 : 685161: 89 74 1a 08 mov %esi,0x8(%rdx,%rbx,1) : stateP->resetState = false; 0.00 : 685165: c6 44 1a 0c 00 movb $0x0,0xc(%rdx,%rbx,1) : stateP->signaled = false; : LWLockRelease(SInvalReadLock); 0.00 : 68516a: 41 bc ff ff ff ff mov $0xffffffff,%r12d : * since the reset, as well; and that means we should clear the : * signaled flag, too. : */ : stateP->nextMsgNum = max; : stateP->resetState = false; : stateP->signaled = false; 0.00 : 685170: c6 44 1a 0d 00 movb $0x0,0xd(%rdx,%rbx,1) : LWLockRelease(SInvalReadLock); 0.00 : 685175: 48 8b 3d 84 88 4f 00 mov 0x4f8884(%rip),%rdi # b7da00 0.00 : 68517c: 48 81 c7 a0 00 00 00 add $0xa0,%rdi 0.00 : 685183: e8 18 a2 00 00 callq 68f3a0 : else : stateP->hasMessages = true; : : LWLockRelease(SInvalReadLock); : return n; : } 0.00 : 685188: e9 a3 fe ff ff jmpq 685030 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/sinvaladt.c:279 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000685310 : : * SharedInvalBackendInit : * Initialize a new backend to operate on the sinval buffer : */ : void : SharedInvalBackendInit(bool sendOnly) : { 0.00 : 685310: 55 push %rbp : /* : * This can run in parallel with read operations, but not with write : * operations, since SIInsertDataEntries relies on lastBackend to set : * hasMessages appropriately. : */ : LWLockAcquire(SInvalWriteLock, LW_EXCLUSIVE); 0.00 : 685311: 31 f6 xor %esi,%esi : * SharedInvalBackendInit : * Initialize a new backend to operate on the sinval buffer : */ : void : SharedInvalBackendInit(bool sendOnly) : { 0.00 : 685313: 48 89 e5 mov %rsp,%rbp 0.00 : 685316: 41 54 push %r12 0.00 : 685318: 41 89 fc mov %edi,%r12d 0.00 : 68531b: 53 push %rbx : /* : * This can run in parallel with read operations, but not with write : * operations, since SIInsertDataEntries relies on lastBackend to set : * hasMessages appropriately. : */ : LWLockAcquire(SInvalWriteLock, LW_EXCLUSIVE); 0.00 : 68531c: 48 8b 3d dd 86 4f 00 mov 0x4f86dd(%rip),%rdi # b7da00 : void : SharedInvalBackendInit(bool sendOnly) : { : int index; : ProcState *stateP = NULL; : SISeg *segP = shmInvalBuffer; 0.00 : 685323: 48 8b 1d 96 85 4f 00 mov 0x4f8596(%rip),%rbx # b7d8c0 : /* : * This can run in parallel with read operations, but not with write : * operations, since SIInsertDataEntries relies on lastBackend to set : * hasMessages appropriately. : */ : LWLockAcquire(SInvalWriteLock, LW_EXCLUSIVE); 0.00 : 68532a: 48 81 c7 c0 00 00 00 add $0xc0,%rdi 0.00 : 685331: e8 ba a7 00 00 callq 68faf0 : : /* Look for a free entry in the procState array */ : for (index = 0; index < segP->lastBackend; index++) 0.00 : 685336: 8b 73 0c mov 0xc(%rbx),%esi /home/Computational/mark/src/postgres-andres/src/backend/storage/ipc/sinvaladt.c:279 100.00 : 685339: 85 f6 test %esi,%esi 0.00 : 68533b: 7e 34 jle 685371 : { : if (segP->procState[index].procPid == 0) /* inactive slot? */ 0.00 : 68533d: 8b bb 18 00 01 00 mov 0x10018(%rbx),%edi : { : stateP = &segP->procState[index]; 0.00 : 685343: 31 d2 xor %edx,%edx : LWLockAcquire(SInvalWriteLock, LW_EXCLUSIVE); : : /* Look for a free entry in the procState array */ : for (index = 0; index < segP->lastBackend; index++) : { : if (segP->procState[index].procPid == 0) /* inactive slot? */ 0.00 : 685345: 31 c0 xor %eax,%eax : { : stateP = &segP->procState[index]; 0.00 : 685347: 48 89 d9 mov %rbx,%rcx : LWLockAcquire(SInvalWriteLock, LW_EXCLUSIVE); : : /* Look for a free entry in the procState array */ : for (index = 0; index < segP->lastBackend; index++) : { : if (segP->procState[index].procPid == 0) /* inactive slot? */ 0.00 : 68534a: 85 ff test %edi,%edi 0.00 : 68534c: 75 1c jne 68536a 0.00 : 68534e: e9 f0 00 00 00 jmpq 685443 0.00 : 685353: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 685358: 8b 81 38 00 01 00 mov 0x10038(%rcx),%eax 0.00 : 68535e: 48 83 c1 20 add $0x20,%rcx 0.00 : 685362: 85 c0 test %eax,%eax 0.00 : 685364: 0f 84 d6 00 00 00 je 685440 : * hasMessages appropriately. : */ : LWLockAcquire(SInvalWriteLock, LW_EXCLUSIVE); : : /* Look for a free entry in the procState array */ : for (index = 0; index < segP->lastBackend; index++) 0.00 : 68536a: 83 c2 01 add $0x1,%edx 0.00 : 68536d: 39 d6 cmp %edx,%esi 0.00 : 68536f: 7f e7 jg 685358 : } : } : : if (stateP == NULL) : { : if (segP->lastBackend < segP->maxBackends) 0.00 : 685371: 3b 73 10 cmp 0x10(%rbx),%esi 0.00 : 685374: 0f 8d da 00 00 00 jge 685454 : { : stateP = &segP->procState[segP->lastBackend]; 0.00 : 68537a: 48 63 c6 movslq %esi,%rax 0.00 : 68537d: 48 c1 e0 05 shl $0x5,%rax 0.00 : 685381: 48 8d 8c 03 18 00 01 lea 0x10018(%rbx,%rax,1),%rcx 0.00 : 685388: 00 : Assert(stateP->procPid == 0); : segP->lastBackend++; 0.00 : 685389: 8d 46 01 lea 0x1(%rsi),%eax 0.00 : 68538c: 89 43 0c mov %eax,0xc(%rbx) : (errcode(ERRCODE_TOO_MANY_CONNECTIONS), : errmsg("sorry, too many clients already"))); : } : } : : MyBackendId = (stateP - &segP->procState[0]) + 1; 0.00 : 68538f: 48 8d 83 18 00 01 00 lea 0x10018(%rbx),%rax 0.00 : 685396: 48 89 ca mov %rcx,%rdx 0.00 : 685399: 48 29 c2 sub %rax,%rdx 0.00 : 68539c: 48 89 d0 mov %rdx,%rax : : /* Advertise assigned backend ID in MyProc */ : MyProc->backendId = MyBackendId; 0.00 : 68539f: 48 8b 15 a2 85 4f 00 mov 0x4f85a2(%rip),%rdx # b7d948 : (errcode(ERRCODE_TOO_MANY_CONNECTIONS), : errmsg("sorry, too many clients already"))); : } : } : : MyBackendId = (stateP - &segP->procState[0]) + 1; 0.00 : 6853a6: 48 c1 f8 05 sar $0x5,%rax 0.00 : 6853aa: 83 c0 01 add $0x1,%eax 0.00 : 6853ad: 89 05 55 37 4e 00 mov %eax,0x4e3755(%rip) # b68b08 : : /* Advertise assigned backend ID in MyProc */ : MyProc->backendId = MyBackendId; 0.00 : 6853b3: 89 42 34 mov %eax,0x34(%rdx) : : /* Fetch next local transaction ID into local memory */ : nextLocalTransactionId = stateP->nextLXID; 0.00 : 6853b6: 8b 41 18 mov 0x18(%rcx),%eax 0.00 : 6853b9: 89 05 09 85 4f 00 mov %eax,0x4f8509(%rip) # b7d8c8 : : /* mark myself active, with all extant messages already read */ : stateP->procPid = MyProcPid; 0.00 : 6853bf: 8b 05 1f a9 53 00 mov 0x53a91f(%rip),%eax # bbfce4 0.00 : 6853c5: 89 01 mov %eax,(%rcx) : stateP->proc = MyProc; 0.00 : 6853c7: 48 8b 05 7a 85 4f 00 mov 0x4f857a(%rip),%rax # b7d948 0.00 : 6853ce: 48 89 41 08 mov %rax,0x8(%rcx) : stateP->nextMsgNum = segP->maxMsgNum; 0.00 : 6853d2: 8b 43 04 mov 0x4(%rbx),%eax : stateP->resetState = false; : stateP->signaled = false; : stateP->hasMessages = false; : stateP->sendOnly = sendOnly; 0.00 : 6853d5: 44 88 61 17 mov %r12b,0x17(%rcx) : : /* mark myself active, with all extant messages already read */ : stateP->procPid = MyProcPid; : stateP->proc = MyProc; : stateP->nextMsgNum = segP->maxMsgNum; : stateP->resetState = false; 0.00 : 6853d9: c6 41 14 00 movb $0x0,0x14(%rcx) : stateP->signaled = false; 0.00 : 6853dd: c6 41 15 00 movb $0x0,0x15(%rcx) : stateP->hasMessages = false; 0.00 : 6853e1: c6 41 16 00 movb $0x0,0x16(%rcx) : nextLocalTransactionId = stateP->nextLXID; : : /* mark myself active, with all extant messages already read */ : stateP->procPid = MyProcPid; : stateP->proc = MyProc; : stateP->nextMsgNum = segP->maxMsgNum; 0.00 : 6853e5: 89 41 10 mov %eax,0x10(%rcx) : stateP->resetState = false; : stateP->signaled = false; : stateP->hasMessages = false; : stateP->sendOnly = sendOnly; : : LWLockRelease(SInvalWriteLock); 0.00 : 6853e8: 48 8b 3d 11 86 4f 00 mov 0x4f8611(%rip),%rdi # b7da00 0.00 : 6853ef: 48 81 c7 c0 00 00 00 add $0xc0,%rdi 0.00 : 6853f6: e8 a5 9f 00 00 callq 68f3a0 : : /* register exit routine to mark my entry inactive at exit */ : on_shmem_exit(CleanupInvalidationState, PointerGetDatum(segP)); 0.00 : 6853fb: 48 89 de mov %rbx,%rsi 0.00 : 6853fe: bf d0 4c 68 00 mov $0x684cd0,%edi 0.00 : 685403: e8 68 95 ff ff callq 67e970 : : elog(DEBUG4, "my backend ID is %d", MyBackendId); 0.00 : 685408: ba 90 bd 8a 00 mov $0x8abd90,%edx 0.00 : 68540d: be 4b 01 00 00 mov $0x14b,%esi 0.00 : 685412: bf 1d bd 8a 00 mov $0x8abd1d,%edi 0.00 : 685417: e8 04 60 0f 00 callq 77b420 : } 0.00 : 68541c: 5b pop %rbx : LWLockRelease(SInvalWriteLock); : : /* register exit routine to mark my entry inactive at exit */ : on_shmem_exit(CleanupInvalidationState, PointerGetDatum(segP)); : : elog(DEBUG4, "my backend ID is %d", MyBackendId); 0.00 : 68541d: 8b 15 e5 36 4e 00 mov 0x4e36e5(%rip),%edx # b68b08 0.00 : 685423: be 29 bd 8a 00 mov $0x8abd29,%esi 0.00 : 685428: bf 0b 00 00 00 mov $0xb,%edi : } 0.00 : 68542d: 41 5c pop %r12 0.00 : 68542f: c9 leaveq : LWLockRelease(SInvalWriteLock); : : /* register exit routine to mark my entry inactive at exit */ : on_shmem_exit(CleanupInvalidationState, PointerGetDatum(segP)); : : elog(DEBUG4, "my backend ID is %d", MyBackendId); 0.00 : 685430: 31 c0 xor %eax,%eax 0.00 : 685432: e9 f9 5d 0f 00 jmpq 77b230 0.00 : 685437: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 68543e: 00 00 : LWLockAcquire(SInvalWriteLock, LW_EXCLUSIVE); : : /* Look for a free entry in the procState array */ : for (index = 0; index < segP->lastBackend; index++) : { : if (segP->procState[index].procPid == 0) /* inactive slot? */ 0.00 : 685440: 48 63 c2 movslq %edx,%rax : { : stateP = &segP->procState[index]; 0.00 : 685443: 48 c1 e0 05 shl $0x5,%rax 0.00 : 685447: 48 8d 8c 03 18 00 01 lea 0x10018(%rbx,%rax,1),%rcx 0.00 : 68544e: 00 0.00 : 68544f: e9 3b ff ff ff jmpq 68538f : { : /* : * out of procState slots: MaxBackends exceeded -- report normally : */ : MyBackendId = InvalidBackendId; : LWLockRelease(SInvalWriteLock); 0.00 : 685454: 48 8b 3d a5 85 4f 00 mov 0x4f85a5(%rip),%rdi # b7da00 : else : { : /* : * out of procState slots: MaxBackends exceeded -- report normally : */ : MyBackendId = InvalidBackendId; 0.00 : 68545b: c7 05 a3 36 4e 00 ff movl $0xffffffff,0x4e36a3(%rip) # b68b08 0.00 : 685462: ff ff ff : LWLockRelease(SInvalWriteLock); 0.00 : 685465: 48 81 c7 c0 00 00 00 add $0xc0,%rdi 0.00 : 68546c: e8 2f 9f 00 00 callq 68f3a0 : ereport(FATAL, 0.00 : 685471: 45 31 c0 xor %r8d,%r8d 0.00 : 685474: b9 90 bd 8a 00 mov $0x8abd90,%ecx 0.00 : 685479: ba 31 01 00 00 mov $0x131,%edx 0.00 : 68547e: be 1d bd 8a 00 mov $0x8abd1d,%esi 0.00 : 685483: bf 15 00 00 00 mov $0x15,%edi 0.00 : 685488: e8 33 56 0f 00 callq 77aac0 0.00 : 68548d: 84 c0 test %al,%al 0.00 : 68548f: 74 23 je 6854b4 0.00 : 685491: bf 88 03 8a 00 mov $0x8a0388,%edi 0.00 : 685496: 31 c0 xor %eax,%eax 0.00 : 685498: e8 03 74 0f 00 callq 77c8a0 0.00 : 68549d: bf c5 30 00 00 mov $0x30c5,%edi 0.00 : 6854a2: 89 c3 mov %eax,%ebx 0.00 : 6854a4: e8 a7 78 0f 00 callq 77cd50 0.00 : 6854a9: 89 de mov %ebx,%esi 0.00 : 6854ab: 89 c7 mov %eax,%edi 0.00 : 6854ad: 31 c0 xor %eax,%eax 0.00 : 6854af: e8 2c 51 0f 00 callq 77a5e0 0.00 : 6854b4: e8 17 40 de ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/lock.c:1320 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000688540 : : int : LockCheckConflicts(LockMethod lockMethodTable, : LOCKMODE lockmode, : LOCK *lock, : PROCLOCK *proclock) : { 0.00 : 688540: 55 push %rbp : * Checking for conflict: lock->grantMask represents the types of : * currently held locks. conflictTable[lockmode] has a bit set for each : * type of lock that conflicts with request. Bitwise compare tells if : * there is a conflict. : */ : if (!(lockMethodTable->conflictTab[lockmode] & lock->grantMask)) 0.00 : 688541: 48 8b 47 08 mov 0x8(%rdi),%rax 0.00 : 688545: 48 63 f6 movslq %esi,%rsi : LockCheckConflicts(LockMethod lockMethodTable, : LOCKMODE lockmode, : LOCK *lock, : PROCLOCK *proclock) : { : int numLockModes = lockMethodTable->numLockModes; 0.00 : 688548: 44 8b 07 mov (%rdi),%r8d : int : LockCheckConflicts(LockMethod lockMethodTable, : LOCKMODE lockmode, : LOCK *lock, : PROCLOCK *proclock) : { 0.00 : 68854b: 48 89 e5 mov %rsp,%rbp : * Checking for conflict: lock->grantMask represents the types of : * currently held locks. conflictTable[lockmode] has a bit set for each : * type of lock that conflicts with request. Bitwise compare tells if : * there is a conflict. : */ : if (!(lockMethodTable->conflictTab[lockmode] & lock->grantMask)) 0.00 : 68854e: 44 8b 14 b0 mov (%rax,%rsi,4),%r10d 0.00 : 688552: 31 c0 xor %eax,%eax 0.00 : 688554: 44 85 52 10 test %r10d,0x10(%rdx) 0.00 : 688558: 74 45 je 68859f : * to construct a conflict mask that does not reflect our own locks, but : * only lock types held by other processes. : */ : myLocks = proclock->holdMask; : otherLocks = 0; : for (i = 1; i <= numLockModes; i++) 0.00 : 68855a: 31 c0 xor %eax,%eax 0.00 : 68855c: 45 85 c0 test %r8d,%r8d : /* : * Rats. Something conflicts. But it could still be my own lock. We have : * to construct a conflict mask that does not reflect our own locks, but : * only lock types held by other processes. : */ : myLocks = proclock->holdMask; 0.00 : 68855f: 8b 79 10 mov 0x10(%rcx),%edi : otherLocks = 0; : for (i = 1; i <= numLockModes; i++) 0.00 : 688562: 7e 3b jle 68859f 0.00 : 688564: 31 f6 xor %esi,%esi 0.00 : 688566: b9 01 00 00 00 mov $0x1,%ecx : { : int myHolding = (myLocks & LOCKBIT_ON(i)) ? 1 : 0; : : if (lock->granted[i] > myHolding) : otherLocks |= LOCKBIT_ON(i); 0.00 : 68856b: 41 b9 01 00 00 00 mov $0x1,%r9d 0.00 : 688571: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : otherLocks = 0; : for (i = 1; i <= numLockModes; i++) : { : int myHolding = (myLocks & LOCKBIT_ON(i)) ? 1 : 0; : : if (lock->granted[i] > myHolding) 0.00 : 688578: 89 f8 mov %edi,%eax 0.00 : 68857a: d3 f8 sar %cl,%eax 0.00 : 68857c: 83 e0 01 and $0x1,%eax 0.00 : 68857f: 3b 42 70 cmp 0x70(%rdx),%eax 0.00 : 688582: 7d 07 jge 68858b : otherLocks |= LOCKBIT_ON(i); 0.00 : 688584: 44 89 c8 mov %r9d,%eax 0.00 : 688587: d3 e0 shl %cl,%eax 0.00 : 688589: 09 c6 or %eax,%esi : * to construct a conflict mask that does not reflect our own locks, but : * only lock types held by other processes. : */ : myLocks = proclock->holdMask; : otherLocks = 0; : for (i = 1; i <= numLockModes; i++) 0.00 : 68858b: 83 c1 01 add $0x1,%ecx 0.00 : 68858e: 48 83 c2 04 add $0x4,%rdx 0.00 : 688592: 41 39 c8 cmp %ecx,%r8d 0.00 : 688595: 7d e1 jge 688578 0.00 : 688597: 31 c0 xor %eax,%eax 0.00 : 688599: 44 85 d6 test %r10d,%esi 0.00 : 68859c: 0f 95 c0 setne %al : return STATUS_OK; : } : : PROCLOCK_PRINT("LockCheckConflicts: conflicting", proclock); : return STATUS_FOUND; : } 100.00 : 68859f: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4251 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000692790 : : * tuple itself. : */ : void : CheckForSerializableConflictIn(Relation relation, HeapTuple tuple, : Buffer buffer) : { 0.00 : 692790: 55 push %rbp 0.00 : 692791: 48 89 e5 mov %rsp,%rbp 0.00 : 692794: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 692798: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 69279c: 48 89 fb mov %rdi,%rbx 0.00 : 69279f: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 6927a3: 48 83 ec 30 sub $0x30,%rsp : */ : static inline bool : SerializationNeededForWrite(Relation relation) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) 0.00 : 6927a7: 48 8b 0d 12 bf 4e 00 mov 0x4ebf12(%rip),%rcx # b7e6c0 : * tuple itself. : */ : void : CheckForSerializableConflictIn(Relation relation, HeapTuple tuple, : Buffer buffer) : { /home/Computational/mark/src/postgres-andres/src/backend/storage/lmgr/predicate.c:4251 100.00 : 6927ae: 41 89 d5 mov %edx,%r13d : */ : static inline bool : SerializationNeededForWrite(Relation relation) : { : /* Nothing to do if this is not a serializable transaction */ : if (MySerializableXact == InvalidSerializableXact) 0.00 : 6927b1: 48 85 c9 test %rcx,%rcx 0.00 : 6927b4: 0f 84 84 00 00 00 je 69283e : * relations are exempt, as are materialized views. : */ : static inline bool : PredicateLockingNeededForRelation(Relation relation) : { : return !(relation->rd_id < FirstBootstrapObjectId || 0.00 : 6927ba: 8b 57 40 mov 0x40(%rdi),%edx 0.00 : 6927bd: 81 fa 0f 27 00 00 cmp $0x270f,%edx 0.00 : 6927c3: 76 79 jbe 69283e 0.00 : 6927c5: 48 8b 47 30 mov 0x30(%rdi),%rax 0.00 : 6927c9: 80 78 6e 74 cmpb $0x74,0x6e(%rax) 0.00 : 6927cd: 74 6f je 69283e 0.00 : 6927cf: 80 78 6f 6d cmpb $0x6d,0x6f(%rax) 0.00 : 6927d3: 74 69 je 69283e : : if (!SerializationNeededForWrite(relation)) : return; : : /* Check if someone else has already decided that we need to die */ : if (SxactIsDoomed(MySerializableXact)) 0.00 : 6927d5: f6 41 7c 08 testb $0x8,0x7c(%rcx) 0.00 : 6927d9: 0f 85 99 00 00 00 jne 692878 : * old (finer) locks are released. : * : * It is not possible to take and hold a lock across the checks for all : * granularities because each target could be in a separate partition. : */ : if (tuple != NULL) 0.00 : 6927df: 48 85 f6 test %rsi,%rsi : : /* : * We're doing a write which might cause rw-conflicts now or later. : * Memorize that fact. : */ : MyXactDidWrite = true; 0.00 : 6927e2: c6 05 df be 4e 00 01 movb $0x1,0x4ebedf(%rip) # b7e6c8 0.00 : 6927e9: 4c 8d 65 d0 lea -0x30(%rbp),%r12 : * old (finer) locks are released. : * : * It is not possible to take and hold a lock across the checks for all : * granularities because each target could be in a separate partition. : */ : if (tuple != NULL) 0.00 : 6927ed: 74 2b je 69281a : { : SET_PREDICATELOCKTARGETTAG_TUPLE(targettag, 0.00 : 6927ef: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 6927f2: 89 55 d4 mov %edx,-0x2c(%rbp) : relation->rd_node.dbNode, : relation->rd_id, : ItemPointerGetBlockNumber(&(tuple->t_self)), : ItemPointerGetOffsetNumber(&(tuple->t_self))); : CheckTargetForConflictsIn(&targettag); 0.00 : 6927f5: 4c 89 e7 mov %r12,%rdi : * It is not possible to take and hold a lock across the checks for all : * granularities because each target could be in a separate partition. : */ : if (tuple != NULL) : { : SET_PREDICATELOCKTARGETTAG_TUPLE(targettag, 0.00 : 6927f8: 89 45 d0 mov %eax,-0x30(%rbp) 0.00 : 6927fb: 0f b7 46 04 movzwl 0x4(%rsi),%eax 0.00 : 6927ff: 0f b7 56 06 movzwl 0x6(%rsi),%edx 0.00 : 692803: c1 e0 10 shl $0x10,%eax 0.00 : 692806: 09 d0 or %edx,%eax 0.00 : 692808: 89 45 d8 mov %eax,-0x28(%rbp) 0.00 : 69280b: 0f b7 46 08 movzwl 0x8(%rsi),%eax 0.00 : 69280f: 89 45 dc mov %eax,-0x24(%rbp) : relation->rd_node.dbNode, : relation->rd_id, : ItemPointerGetBlockNumber(&(tuple->t_self)), : ItemPointerGetOffsetNumber(&(tuple->t_self))); : CheckTargetForConflictsIn(&targettag); 0.00 : 692812: e8 c9 fb ff ff callq 6923e0 0.00 : 692817: 8b 53 40 mov 0x40(%rbx),%edx : } : : if (BufferIsValid(buffer)) 0.00 : 69281a: 45 85 ed test %r13d,%r13d 0.00 : 69281d: 75 31 jne 692850 : relation->rd_id, : BufferGetBlockNumber(buffer)); : CheckTargetForConflictsIn(&targettag); : } : : SET_PREDICATELOCKTARGETTAG_RELATION(targettag, 0.00 : 69281f: 8b 43 04 mov 0x4(%rbx),%eax : relation->rd_node.dbNode, : relation->rd_id); : CheckTargetForConflictsIn(&targettag); 0.00 : 692822: 4c 89 e7 mov %r12,%rdi : relation->rd_id, : BufferGetBlockNumber(buffer)); : CheckTargetForConflictsIn(&targettag); : } : : SET_PREDICATELOCKTARGETTAG_RELATION(targettag, 0.00 : 692825: 89 55 d4 mov %edx,-0x2c(%rbp) 0.00 : 692828: c7 45 d8 ff ff ff ff movl $0xffffffff,-0x28(%rbp) 0.00 : 69282f: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%rbp) 0.00 : 692836: 89 45 d0 mov %eax,-0x30(%rbp) : relation->rd_node.dbNode, : relation->rd_id); : CheckTargetForConflictsIn(&targettag); 0.00 : 692839: e8 a2 fb ff ff callq 6923e0 : } 0.00 : 69283e: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 692842: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 692846: 4c 8b 6d f8 mov -0x8(%rbp),%r13 0.00 : 69284a: c9 leaveq 0.00 : 69284b: c3 retq 0.00 : 69284c: 0f 1f 40 00 nopl 0x0(%rax) : CheckTargetForConflictsIn(&targettag); : } : : if (BufferIsValid(buffer)) : { : SET_PREDICATELOCKTARGETTAG_PAGE(targettag, 0.00 : 692850: 8b 43 04 mov 0x4(%rbx),%eax 0.00 : 692853: 44 89 ef mov %r13d,%edi 0.00 : 692856: 89 55 d4 mov %edx,-0x2c(%rbp) 0.00 : 692859: 89 45 d0 mov %eax,-0x30(%rbp) 0.00 : 69285c: e8 cf 17 fe ff callq 674030 : relation->rd_node.dbNode, : relation->rd_id, : BufferGetBlockNumber(buffer)); : CheckTargetForConflictsIn(&targettag); 0.00 : 692861: 4c 89 e7 mov %r12,%rdi : CheckTargetForConflictsIn(&targettag); : } : : if (BufferIsValid(buffer)) : { : SET_PREDICATELOCKTARGETTAG_PAGE(targettag, 0.00 : 692864: 89 45 d8 mov %eax,-0x28(%rbp) 0.00 : 692867: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%rbp) : relation->rd_node.dbNode, : relation->rd_id, : BufferGetBlockNumber(buffer)); : CheckTargetForConflictsIn(&targettag); 0.00 : 69286e: e8 6d fb ff ff callq 6923e0 0.00 : 692873: 8b 53 40 mov 0x40(%rbx),%edx 0.00 : 692876: eb a7 jmp 69281f : if (!SerializationNeededForWrite(relation)) : return; : : /* Check if someone else has already decided that we need to die */ : if (SxactIsDoomed(MySerializableXact)) : ereport(ERROR, 0.00 : 692878: 45 31 c0 xor %r8d,%r8d 0.00 : 69287b: b9 c0 da 8a 00 mov $0x8adac0,%ecx 0.00 : 692880: ba a7 10 00 00 mov $0x10a7,%edx 0.00 : 692885: be d3 d1 8a 00 mov $0x8ad1d3,%esi 0.00 : 69288a: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69288f: e8 2c 82 0e 00 callq 77aac0 0.00 : 692894: 84 c0 test %al,%al 0.00 : 692896: 75 05 jne 69289d 0.00 : 692898: e8 33 6c dd ff callq 4694d0 0.00 : 69289d: bf c8 d2 8a 00 mov $0x8ad2c8,%edi 0.00 : 6928a2: 31 c0 xor %eax,%eax 0.00 : 6928a4: e8 f7 93 0e 00 callq 77bca0 0.00 : 6928a9: bf 08 d5 8a 00 mov $0x8ad508,%edi 0.00 : 6928ae: 41 89 c5 mov %eax,%r13d 0.00 : 6928b1: 31 c0 xor %eax,%eax 0.00 : 6928b3: e8 c8 9a 0e 00 callq 77c380 0.00 : 6928b8: bf 48 d3 8a 00 mov $0x8ad348,%edi 0.00 : 6928bd: 89 c3 mov %eax,%ebx 0.00 : 6928bf: 31 c0 xor %eax,%eax 0.00 : 6928c1: e8 da 9f 0e 00 callq 77c8a0 0.00 : 6928c6: bf 04 00 00 01 mov $0x1000004,%edi 0.00 : 6928cb: 41 89 c4 mov %eax,%r12d 0.00 : 6928ce: e8 7d a4 0e 00 callq 77cd50 0.00 : 6928d3: 44 89 e9 mov %r13d,%ecx 0.00 : 6928d6: 89 c7 mov %eax,%edi 0.00 : 6928d8: 89 da mov %ebx,%edx 0.00 : 6928da: 44 89 e6 mov %r12d,%esi 0.00 : 6928dd: 31 c0 xor %eax,%eax 0.00 : 6928df: e8 fc 7c 0e 00 callq 77a5e0 0.00 : 6928e4: eb b2 jmp 692898 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1067 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000695030 : : * This is used for index AMs that require that existing TIDs of live tuples : * remain unchanged. : */ : void : PageIndexDeleteNoCompact(Page page, OffsetNumber *itemnos, int nitems) : { 0.00 : 695030: 55 push %rbp 0.00 : 695031: 48 89 e5 mov %rsp,%rbp 0.00 : 695034: 41 57 push %r15 0.00 : 695036: 41 56 push %r14 0.00 : 695038: 41 55 push %r13 0.00 : 69503a: 49 89 fd mov %rdi,%r13 0.00 : 69503d: 41 54 push %r12 0.00 : 69503f: 53 push %rbx 0.00 : 695040: 48 81 ec 28 c0 00 00 sub $0xc028,%rsp 0.00 : 695047: 48 89 b5 c0 3f ff ff mov %rsi,-0xc040(%rbp) : PageHeader phdr = (PageHeader) page; : LocationIndex pd_lower = phdr->pd_lower; 0.00 : 69504e: 0f b7 47 0c movzwl 0xc(%rdi),%eax : * This is used for index AMs that require that existing TIDs of live tuples : * remain unchanged. : */ : void : PageIndexDeleteNoCompact(Page page, OffsetNumber *itemnos, int nitems) : { 0.00 : 695052: 89 d6 mov %edx,%esi : PageHeader phdr = (PageHeader) page; : LocationIndex pd_lower = phdr->pd_lower; 0.00 : 695054: 66 89 85 cc 3f ff ff mov %ax,-0xc034(%rbp) : LocationIndex pd_upper = phdr->pd_upper; : LocationIndex pd_special = phdr->pd_special; 0.00 : 69505b: 0f b7 57 10 movzwl 0x10(%rdi),%edx : int nextitm; : : /* : * As with PageRepairFragmentation, paranoia seems justified. : */ : if (pd_lower < SizeOfPageHeaderData || 0.00 : 69505f: 66 83 f8 17 cmp $0x17,%ax : void : PageIndexDeleteNoCompact(Page page, OffsetNumber *itemnos, int nitems) : { : PageHeader phdr = (PageHeader) page; : LocationIndex pd_lower = phdr->pd_lower; : LocationIndex pd_upper = phdr->pd_upper; 0.00 : 695063: 44 0f b7 7f 0e movzwl 0xe(%rdi),%r15d : LocationIndex pd_special = phdr->pd_special; 0.00 : 695068: 66 89 95 ce 3f ff ff mov %dx,-0xc032(%rbp) : int nextitm; : : /* : * As with PageRepairFragmentation, paranoia seems justified. : */ : if (pd_lower < SizeOfPageHeaderData || 0.00 : 69506f: 76 0f jbe 695080 0.00 : 695071: 66 44 39 f8 cmp %r15w,%ax 0.00 : 695075: 76 39 jbe 6950b0 0.00 : 695077: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 69507e: 00 00 : pd_lower > pd_upper || : pd_upper > pd_special || : pd_special > BLCKSZ || : pd_special != MAXALIGN(pd_special)) : ereport(ERROR, 0.00 : 695080: 45 31 c0 xor %r8d,%r8d 0.00 : 695083: b9 60 de 8a 00 mov $0x8ade60,%ecx 0.00 : 695088: ba a8 03 00 00 mov $0x3a8,%edx 0.00 : 69508d: be 33 dc 8a 00 mov $0x8adc33,%esi 0.00 : 695092: bf 14 00 00 00 mov $0x14,%edi 0.00 : 695097: e8 24 5a 0e 00 callq 77aac0 0.00 : 69509c: 84 c0 test %al,%al 0.00 : 69509e: 0f 85 cc 00 00 00 jne 695170 : } : } : /* By here, there are exactly nline elements in itemidbase array */ : : if (totallen > (Size) (pd_special - pd_lower)) : ereport(ERROR, 0.00 : 6950a4: e8 27 44 dd ff callq 4694d0 0.00 : 6950a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : int nextitm; : : /* : * As with PageRepairFragmentation, paranoia seems justified. : */ : if (pd_lower < SizeOfPageHeaderData || 0.00 : 6950b0: 66 41 39 d7 cmp %dx,%r15w 0.00 : 6950b4: 77 ca ja 695080 0.00 : 6950b6: 66 81 fa 00 20 cmp $0x2000,%dx 0.00 : 6950bb: 77 c3 ja 695080 0.00 : 6950bd: 0f b7 d2 movzwl %dx,%edx 0.00 : 6950c0: 48 8d 42 07 lea 0x7(%rdx),%rax 0.00 : 6950c4: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 6950c8: 48 39 c2 cmp %rax,%rdx 0.00 : 6950cb: 75 b3 jne 695080 : /* : * Scan the existing item pointer array and mark as unused those that are : * in our kill-list; make sure any non-interesting ones are marked unused : * as well. : */ : nline = PageGetMaxOffsetNumber(page); 0.00 : 6950cd: 66 83 bd cc 3f ff ff cmpw $0x18,-0xc034(%rbp) 0.00 : 6950d4: 18 0.00 : 6950d5: 0f 87 d5 00 00 00 ja 6951b0 0.00 : 6950db: 45 31 c9 xor %r9d,%r9d 0.00 : 6950de: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 6950e4: 45 31 f6 xor %r14d,%r14d : } : } : } : : /* this will catch invalid or out-of-order itemnos[] */ : if (nextitm != nitems) 0.00 : 6950e7: 41 39 f1 cmp %esi,%r9d 0.00 : 6950ea: 0f 85 4b 03 00 00 jne 69543b : elog(ERROR, "incorrect index offsets supplied"); : : if (empty) 0.00 : 6950f0: 45 84 db test %r11b,%r11b 0.00 : 6950f3: 0f 85 f7 01 00 00 jne 6952f0 : * would change, which is not acceptable. Unused items might get used : * again later; that is fine. : */ : itemidptr = itemidbase; : totallen = 0; : for (i = 0; i < nline; i++, itemidptr++) 0.00 : 6950f9: 45 85 f6 test %r14d,%r14d 0.00 : 6950fc: 0f 8e 0b 03 00 00 jle 69540d : : if (empty) : { : /* Page is completely empty, so just reset it quickly */ : phdr->pd_lower = SizeOfPageHeaderData; : phdr->pd_upper = pd_special; 0.00 : 695102: 48 8d 8d d0 3f ff ff lea -0xc030(%rbp),%rcx 0.00 : 695109: 31 db xor %ebx,%ebx 0.00 : 69510b: 31 f6 xor %esi,%esi 0.00 : 69510d: eb 39 jmp 695148 0.00 : 69510f: 90 nop : itemidptr->offsetindex = i; : : lp = PageGetItemId(page, i + 1); : if (ItemIdHasStorage(lp)) : { : itemidptr->itemoff = ItemIdGetOffset(lp); 0.00 : 695110: 41 0f b7 44 95 08 movzwl 0x8(%r13,%rdx,4),%eax 0.00 : 695116: 25 ff 7f 00 00 and $0x7fff,%eax 0.00 : 69511b: 89 41 04 mov %eax,0x4(%rcx) : itemidptr->alignedlen = MAXALIGN(ItemIdGetLength(lp)); 0.00 : 69511e: 41 0f b7 44 95 0a movzwl 0xa(%r13,%rdx,4),%eax 0.00 : 695124: 66 d1 e8 shr %ax 0.00 : 695127: 48 83 c0 07 add $0x7,%rax 0.00 : 69512b: 25 f8 ff 00 00 and $0xfff8,%eax 0.00 : 695130: 48 89 41 08 mov %rax,0x8(%rcx) : totallen += itemidptr->alignedlen; 0.00 : 695134: 48 01 c3 add %rax,%rbx : } : else : { : itemidptr->itemoff = 0; : itemidptr->alignedlen = 0; 0.00 : 695137: 48 83 c6 01 add $0x1,%rsi : * would change, which is not acceptable. Unused items might get used : * again later; that is fine. : */ : itemidptr = itemidbase; : totallen = 0; : for (i = 0; i < nline; i++, itemidptr++) 0.00 : 69513b: 41 39 f6 cmp %esi,%r14d 0.00 : 69513e: 0f 8e d4 01 00 00 jle 695318 0.00 : 695144: 48 83 c1 18 add $0x18,%rcx : ItemId lp; : : itemidptr->offsetindex = i; : : lp = PageGetItemId(page, i + 1); : if (ItemIdHasStorage(lp)) 0.00 : 695148: 48 8d 56 04 lea 0x4(%rsi),%rdx : totallen = 0; : for (i = 0; i < nline; i++, itemidptr++) : { : ItemId lp; : : itemidptr->offsetindex = i; 0.00 : 69514c: 89 31 mov %esi,(%rcx) : : lp = PageGetItemId(page, i + 1); : if (ItemIdHasStorage(lp)) 0.00 : 69514e: 66 41 f7 44 95 0a fe testw $0xfffe,0xa(%r13,%rdx,4) 0.00 : 695155: ff 0.00 : 695156: 75 b8 jne 695110 : itemidptr->alignedlen = MAXALIGN(ItemIdGetLength(lp)); : totallen += itemidptr->alignedlen; : } : else : { : itemidptr->itemoff = 0; 0.00 : 695158: c7 41 04 00 00 00 00 movl $0x0,0x4(%rcx) : itemidptr->alignedlen = 0; 0.00 : 69515f: 48 c7 41 08 00 00 00 movq $0x0,0x8(%rcx) 0.00 : 695166: 00 0.00 : 695167: eb ce jmp 695137 0.00 : 695169: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (pd_lower < SizeOfPageHeaderData || : pd_lower > pd_upper || : pd_upper > pd_special || : pd_special > BLCKSZ || : pd_special != MAXALIGN(pd_special)) : ereport(ERROR, 0.00 : 695170: 0f b7 8d ce 3f ff ff movzwl -0xc032(%rbp),%ecx 0.00 : 695177: 0f b7 b5 cc 3f ff ff movzwl -0xc034(%rbp),%esi 0.00 : 69517e: 41 0f b7 d7 movzwl %r15w,%edx 0.00 : 695182: bf c0 dc 8a 00 mov $0x8adcc0,%edi 0.00 : 695187: 31 c0 xor %eax,%eax 0.00 : 695189: e8 12 77 0e 00 callq 77c8a0 : } : } : /* By here, there are exactly nline elements in itemidbase array */ : : if (totallen > (Size) (pd_special - pd_lower)) : ereport(ERROR, 0.00 : 69518e: 89 c3 mov %eax,%ebx 0.00 : 695190: bf 28 0a 00 01 mov $0x1000a28,%edi 0.00 : 695195: e8 b6 7b 0e 00 callq 77cd50 0.00 : 69519a: 89 de mov %ebx,%esi 0.00 : 69519c: 89 c7 mov %eax,%edi 0.00 : 69519e: 31 c0 xor %eax,%eax 0.00 : 6951a0: e8 3b 54 0e 00 callq 77a5e0 0.00 : 6951a5: e9 fa fe ff ff jmpq 6950a4 0.00 : 6951aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : /* : * Scan the existing item pointer array and mark as unused those that are : * in our kill-list; make sure any non-interesting ones are marked unused : * as well. : */ : nline = PageGetMaxOffsetNumber(page); 0.00 : 6951b0: 0f b7 85 cc 3f ff ff movzwl -0xc034(%rbp),%eax : empty = true; : nextitm = 0; : for (offnum = FirstOffsetNumber; offnum <= nline; offnum = OffsetNumberNext(offnum)) 0.00 : 6951b7: 45 31 c9 xor %r9d,%r9d 0.00 : 6951ba: 41 bb 01 00 00 00 mov $0x1,%r11d : /* : * Scan the existing item pointer array and mark as unused those that are : * in our kill-list; make sure any non-interesting ones are marked unused : * as well. : */ : nline = PageGetMaxOffsetNumber(page); 0.00 : 6951c0: 48 83 e8 18 sub $0x18,%rax 0.00 : 6951c4: 49 89 c6 mov %rax,%r14 0.00 : 6951c7: 49 c1 ee 02 shr $0x2,%r14 : empty = true; : nextitm = 0; : for (offnum = FirstOffsetNumber; offnum <= nline; offnum = OffsetNumberNext(offnum)) 0.00 : 6951cb: 45 85 f6 test %r14d,%r14d 0.00 : 6951ce: 0f 8e 13 ff ff ff jle 6950e7 0.00 : 6951d4: 45 31 c9 xor %r9d,%r9d 0.00 : 6951d7: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 6951dd: bf 01 00 00 00 mov $0x1,%edi : itemlen = ItemIdGetLength(lp); : offset = ItemIdGetOffset(lp); : : if (ItemIdIsUsed(lp)) : { : if (offset < pd_upper || 0.00 : 6951e2: 44 0f b7 95 ce 3f ff movzwl -0xc032(%rbp),%r10d 0.00 : 6951e9: ff 0.00 : 6951ea: eb 16 jmp 695202 0.00 : 6951ec: 0f 1f 40 00 nopl 0x0(%rax) : { : /* this one is on our list to delete, so mark it unused */ : ItemIdSetUnused(lp); : nextitm++; : } : else if (ItemIdHasStorage(lp)) 0.00 : 6951f0: 45 31 db xor %r11d,%r11d : empty = false; : } : else : { : /* get rid of this one too */ : ItemIdSetUnused(lp); 0.00 : 6951f3: 83 c7 01 add $0x1,%edi : * as well. : */ : nline = PageGetMaxOffsetNumber(page); : empty = true; : nextitm = 0; : for (offnum = FirstOffsetNumber; offnum <= nline; offnum = OffsetNumberNext(offnum)) 0.00 : 6951f6: 0f b7 c7 movzwl %di,%eax 0.00 : 6951f9: 41 39 c6 cmp %eax,%r14d 0.00 : 6951fc: 0f 8c e5 fe ff ff jl 6950e7 : { : ItemId lp; : ItemLength itemlen; : ItemOffset offset; : : lp = PageGetItemId(page, offnum); 0.00 : 695202: 0f b7 c7 movzwl %di,%eax : : itemlen = ItemIdGetLength(lp); 0.00 : 695205: 48 8d 48 03 lea 0x3(%rax),%rcx : { : ItemId lp; : ItemLength itemlen; : ItemOffset offset; : : lp = PageGetItemId(page, offnum); 0.00 : 695209: 4c 8d 40 ff lea -0x1(%rax),%r8 : : itemlen = ItemIdGetLength(lp); 0.00 : 69520d: 45 0f b7 64 8d 0a movzwl 0xa(%r13,%rcx,4),%r12d : offset = ItemIdGetOffset(lp); 0.00 : 695213: 41 0f b7 5c 8d 08 movzwl 0x8(%r13,%rcx,4),%ebx : : if (ItemIdIsUsed(lp)) 0.00 : 695219: 41 8b 44 8d 08 mov 0x8(%r13,%rcx,4),%eax : ItemLength itemlen; : ItemOffset offset; : : lp = PageGetItemId(page, offnum); : : itemlen = ItemIdGetLength(lp); 0.00 : 69521e: 66 41 d1 ec shr %r12w : offset = ItemIdGetOffset(lp); 0.00 : 695222: 66 81 e3 ff 7f and $0x7fff,%bx : : if (ItemIdIsUsed(lp)) 0.00 : 695227: a9 00 80 01 00 test $0x18000,%eax 0.00 : 69522c: 74 c5 je 6951f3 : { : if (offset < pd_upper || 0.00 : 69522e: 66 41 39 df cmp %bx,%r15w 0.00 : 695232: 77 7c ja 6952b0 0.00 : 695234: 41 0f b7 c4 movzwl %r12w,%eax 0.00 : 695238: 0f b7 d3 movzwl %bx,%edx 0.00 : 69523b: 01 d0 add %edx,%eax 0.00 : 69523d: 44 39 d0 cmp %r10d,%eax 0.00 : 695240: 7f 6e jg 6952b0 0.00 : 695242: 0f b7 d3 movzwl %bx,%edx 0.00 : 695245: 48 8d 42 07 lea 0x7(%rdx),%rax 0.00 : 695249: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 69524d: 48 39 c2 cmp %rax,%rdx 0.00 : 695250: 75 5e jne 6952b0 : ereport(ERROR, : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("corrupted item pointer: offset = %u, length = %u", : offset, (unsigned int) itemlen))); : : if (nextitm < nitems && offnum == itemnos[nextitm]) 0.00 : 695252: 44 39 ce cmp %r9d,%esi 0.00 : 695255: 7e 10 jle 695267 0.00 : 695257: 48 8b 95 c0 3f ff ff mov -0xc040(%rbp),%rdx 0.00 : 69525e: 49 63 c1 movslq %r9d,%rax 0.00 : 695261: 66 39 3c 42 cmp %di,(%rdx,%rax,2) 0.00 : 695265: 74 29 je 695290 : { : /* this one is on our list to delete, so mark it unused */ : ItemIdSetUnused(lp); : nextitm++; : } : else if (ItemIdHasStorage(lp)) 0.00 : 695267: 49 8d 40 04 lea 0x4(%r8),%rax 0.00 : 69526b: 66 41 f7 44 85 0a fe testw $0xfffe,0xa(%r13,%rax,4) 0.00 : 695272: ff 0.00 : 695273: 0f 85 77 ff ff ff jne 6951f0 : empty = false; : } : else : { : /* get rid of this one too */ : ItemIdSetUnused(lp); 0.00 : 695279: 66 41 c7 44 85 08 00 movw $0x0,0x8(%r13,%rax,4) 0.00 : 695280: 00 0.00 : 695281: 66 41 c7 44 85 0a 00 movw $0x0,0xa(%r13,%rax,4) 0.00 : 695288: 00 0.00 : 695289: e9 65 ff ff ff jmpq 6951f3 0.00 : 69528e: 66 90 xchg %ax,%ax : offset, (unsigned int) itemlen))); : : if (nextitm < nitems && offnum == itemnos[nextitm]) : { : /* this one is on our list to delete, so mark it unused */ : ItemIdSetUnused(lp); 0.00 : 695290: 66 41 c7 44 8d 08 00 movw $0x0,0x8(%r13,%rcx,4) 0.00 : 695297: 00 0.00 : 695298: 66 41 c7 44 8d 0a 00 movw $0x0,0xa(%r13,%rcx,4) 0.00 : 69529f: 00 : nextitm++; 0.00 : 6952a0: 41 83 c1 01 add $0x1,%r9d : ereport(ERROR, : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("corrupted item pointer: offset = %u, length = %u", : offset, (unsigned int) itemlen))); : : if (nextitm < nitems && offnum == itemnos[nextitm]) 0.00 : 6952a4: e9 4a ff ff ff jmpq 6951f3 0.00 : 6952a9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : if (ItemIdIsUsed(lp)) : { : if (offset < pd_upper || : (offset + itemlen) > pd_special || : offset != MAXALIGN(offset)) : ereport(ERROR, 0.00 : 6952b0: 45 31 c0 xor %r8d,%r8d 0.00 : 6952b3: b9 60 de 8a 00 mov $0x8ade60,%ecx 0.00 : 6952b8: ba c5 03 00 00 mov $0x3c5,%edx 0.00 : 6952bd: be 33 dc 8a 00 mov $0x8adc33,%esi 0.00 : 6952c2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 6952c7: e8 f4 57 0e 00 callq 77aac0 0.00 : 6952cc: 84 c0 test %al,%al 0.00 : 6952ce: 0f 84 d0 fd ff ff je 6950a4 0.00 : 6952d4: 41 0f b7 d4 movzwl %r12w,%edx 0.00 : 6952d8: 0f b7 f3 movzwl %bx,%esi 0.00 : 6952db: bf 00 dd 8a 00 mov $0x8add00,%edi : } : } : /* By here, there are exactly nline elements in itemidbase array */ : : if (totallen > (Size) (pd_special - pd_lower)) : ereport(ERROR, 0.00 : 6952e0: 31 c0 xor %eax,%eax 0.00 : 6952e2: e8 b9 75 0e 00 callq 77c8a0 0.00 : 6952e7: e9 a2 fe ff ff jmpq 69518e 0.00 : 6952ec: 0f 1f 40 00 nopl 0x0(%rax) : : if (empty) : { : /* Page is completely empty, so just reset it quickly */ : phdr->pd_lower = SizeOfPageHeaderData; : phdr->pd_upper = pd_special; 0.00 : 6952f0: 0f b7 85 ce 3f ff ff movzwl -0xc032(%rbp),%eax : elog(ERROR, "incorrect index offsets supplied"); : : if (empty) : { : /* Page is completely empty, so just reset it quickly */ : phdr->pd_lower = SizeOfPageHeaderData; 0.00 : 6952f7: 66 41 c7 45 0c 18 00 movw $0x18,0xc(%r13) : phdr->pd_upper = pd_special; 0.00 : 6952fe: 66 41 89 45 0e mov %ax,0xe(%r13) : : /* Set the new page limits */ : phdr->pd_upper = upper; : phdr->pd_lower = SizeOfPageHeaderData + i * sizeof(ItemIdData); : } : } 0.00 : 695303: 48 81 c4 28 c0 00 00 add $0xc028,%rsp 0.00 : 69530a: 5b pop %rbx 0.00 : 69530b: 41 5c pop %r12 0.00 : 69530d: 41 5d pop %r13 0.00 : 69530f: 41 5e pop %r14 0.00 : 695311: 41 5f pop %r15 0.00 : 695313: c9 leaveq 0.00 : 695314: c3 retq 0.00 : 695315: 0f 1f 00 nopl (%rax) : itemidptr->alignedlen = 0; : } : } : /* By here, there are exactly nline elements in itemidbase array */ : : if (totallen > (Size) (pd_special - pd_lower)) 0.00 : 695318: 44 0f b7 bd ce 3f ff movzwl -0xc032(%rbp),%r15d 0.00 : 69531f: ff 0.00 : 695320: 0f b7 85 cc 3f ff ff movzwl -0xc034(%rbp),%eax 0.00 : 695327: 45 89 fc mov %r15d,%r12d 0.00 : 69532a: 41 29 c4 sub %eax,%r12d 0.00 : 69532d: 49 63 c4 movslq %r12d,%rax 0.00 : 695330: 48 39 d8 cmp %rbx,%rax 0.00 : 695333: 0f 82 2c 01 00 00 jb 695465 : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("corrupted item lengths: total %u, available space %u", : (unsigned int) totallen, pd_special - pd_lower))); : : /* sort itemIdSortData array into decreasing itemoff order */ : qsort((char *) itemidbase, nline, sizeof(itemIdSortData), 0.00 : 695339: 49 63 c6 movslq %r14d,%rax 0.00 : 69533c: 48 8d bd d0 3f ff ff lea -0xc030(%rbp),%rdi 0.00 : 695343: b9 10 4d 69 00 mov $0x694d10,%ecx 0.00 : 695348: 48 89 c6 mov %rax,%rsi 0.00 : 69534b: ba 18 00 00 00 mov $0x18,%edx 0.00 : 695350: 48 89 85 b8 3f ff ff mov %rax,-0xc048(%rbp) 0.00 : 695357: e8 14 79 11 00 callq 7acc70 : * Defragment the data areas of each tuple, being careful to preserve : * each item's position in the linp array. : */ : upper = pd_special; : PageClearHasFreeLinePointers(page); : for (i = 0, itemidptr = itemidbase; i < nline; i++, itemidptr++) 0.00 : 69535c: 41 8d 46 ff lea -0x1(%r14),%eax : /* : * Defragment the data areas of each tuple, being careful to preserve : * each item's position in the linp array. : */ : upper = pd_special; : PageClearHasFreeLinePointers(page); 0.00 : 695360: 48 8d 9d d0 3f ff ff lea -0xc030(%rbp),%rbx 0.00 : 695367: 66 41 83 65 0a fe andw $0xfffe,0xa(%r13) : for (i = 0, itemidptr = itemidbase; i < nline; i++, itemidptr++) 0.00 : 69536d: 48 8d 04 40 lea (%rax,%rax,2),%rax 0.00 : 695371: 4c 8d 34 c3 lea (%rbx,%rax,8),%r14 0.00 : 695375: eb 2d jmp 6953a4 0.00 : 695377: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 69537e: 00 00 : : lp = PageGetItemId(page, itemidptr->offsetindex + 1); : if (itemidptr->alignedlen == 0) : { : PageSetHasFreeLinePointers(page); : ItemIdSetUnused(lp); 0.00 : 695380: 49 8d 44 24 04 lea 0x4(%r12),%rax : ItemId lp; : : lp = PageGetItemId(page, itemidptr->offsetindex + 1); : if (itemidptr->alignedlen == 0) : { : PageSetHasFreeLinePointers(page); 0.00 : 695385: 66 41 83 4d 0a 01 orw $0x1,0xa(%r13) : ItemIdSetUnused(lp); 0.00 : 69538b: 66 41 c7 44 85 08 00 movw $0x0,0x8(%r13,%rax,4) 0.00 : 695392: 00 0.00 : 695393: 66 41 c7 44 85 0a 00 movw $0x0,0xa(%r13,%rax,4) 0.00 : 69539a: 00 : * Defragment the data areas of each tuple, being careful to preserve : * each item's position in the linp array. : */ : upper = pd_special; : PageClearHasFreeLinePointers(page); : for (i = 0, itemidptr = itemidbase; i < nline; i++, itemidptr++) 0.00 : 69539b: 4c 39 f3 cmp %r14,%rbx 0.00 : 69539e: 74 50 je 6953f0 0.00 : 6953a0: 48 83 c3 18 add $0x18,%rbx : { : ItemId lp; : : lp = PageGetItemId(page, itemidptr->offsetindex + 1); : if (itemidptr->alignedlen == 0) 0.00 : 6953a4: 48 8b 53 08 mov 0x8(%rbx),%rdx : PageClearHasFreeLinePointers(page); : for (i = 0, itemidptr = itemidbase; i < nline; i++, itemidptr++) : { : ItemId lp; : : lp = PageGetItemId(page, itemidptr->offsetindex + 1); 0.00 : 6953a8: 4c 63 23 movslq (%rbx),%r12 : if (itemidptr->alignedlen == 0) 0.00 : 6953ab: 48 85 d2 test %rdx,%rdx 0.00 : 6953ae: 74 d0 je 695380 : PageSetHasFreeLinePointers(page); : ItemIdSetUnused(lp); : continue; : } : upper -= itemidptr->alignedlen; : memmove((char *) page + upper, 0.00 : 6953b0: 48 63 73 04 movslq 0x4(%rbx),%rsi : { : PageSetHasFreeLinePointers(page); : ItemIdSetUnused(lp); : continue; : } : upper -= itemidptr->alignedlen; 0.00 : 6953b4: 41 29 d7 sub %edx,%r15d : memmove((char *) page + upper, 0.00 : 6953b7: 49 63 ff movslq %r15d,%rdi 0.00 : 6953ba: 49 8d 7c 3d 00 lea 0x0(%r13,%rdi,1),%rdi 0.00 : 6953bf: 49 8d 74 35 00 lea 0x0(%r13,%rsi,1),%rsi 0.00 : 6953c4: e8 67 48 dd ff callq 469c30 : (char *) page + itemidptr->itemoff, : itemidptr->alignedlen); : lp->lp_off = upper; 0.00 : 6953c9: 49 8d 4c 24 04 lea 0x4(%r12),%rcx 0.00 : 6953ce: 44 89 fa mov %r15d,%edx 0.00 : 6953d1: 66 81 e2 ff 7f and $0x7fff,%dx 0.00 : 6953d6: 41 0f b7 44 8d 08 movzwl 0x8(%r13,%rcx,4),%eax 0.00 : 6953dc: 66 25 00 80 and $0x8000,%ax 0.00 : 6953e0: 09 d0 or %edx,%eax 0.00 : 6953e2: 66 41 89 44 8d 08 mov %ax,0x8(%r13,%rcx,4) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:1067 100.00 : 6953e8: eb b1 jmp 69539b 0.00 : 6953ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : * Defragment the data areas of each tuple, being careful to preserve : * each item's position in the linp array. : */ : upper = pd_special; : PageClearHasFreeLinePointers(page); : for (i = 0, itemidptr = itemidbase; i < nline; i++, itemidptr++) 0.00 : 6953f0: 0f b7 95 b8 3f ff ff movzwl -0xc048(%rbp),%edx 0.00 : 6953f7: 8d 04 95 18 00 00 00 lea 0x18(,%rdx,4),%eax : lp->lp_off = upper; : /* lp_flags and lp_len remain the same as originally */ : } : : /* Set the new page limits */ : phdr->pd_upper = upper; 0.00 : 6953fe: 66 45 89 7d 0e mov %r15w,0xe(%r13) : phdr->pd_lower = SizeOfPageHeaderData + i * sizeof(ItemIdData); 0.00 : 695403: 66 41 89 45 0c mov %ax,0xc(%r13) 0.00 : 695408: e9 f6 fe ff ff jmpq 695303 : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("corrupted item lengths: total %u, available space %u", : (unsigned int) totallen, pd_special - pd_lower))); : : /* sort itemIdSortData array into decreasing itemoff order */ : qsort((char *) itemidbase, nline, sizeof(itemIdSortData), 0.00 : 69540d: 48 8d bd d0 3f ff ff lea -0xc030(%rbp),%rdi 0.00 : 695414: 49 63 f6 movslq %r14d,%rsi 0.00 : 695417: b9 10 4d 69 00 mov $0x694d10,%ecx 0.00 : 69541c: ba 18 00 00 00 mov $0x18,%edx : itemidptr->alignedlen = 0; : } : } : /* By here, there are exactly nline elements in itemidbase array */ : : if (totallen > (Size) (pd_special - pd_lower)) 0.00 : 695421: 44 0f b7 bd ce 3f ff movzwl -0xc032(%rbp),%r15d 0.00 : 695428: ff : (errcode(ERRCODE_DATA_CORRUPTED), : errmsg("corrupted item lengths: total %u, available space %u", : (unsigned int) totallen, pd_special - pd_lower))); : : /* sort itemIdSortData array into decreasing itemoff order */ : qsort((char *) itemidbase, nline, sizeof(itemIdSortData), 0.00 : 695429: e8 42 78 11 00 callq 7acc70 : /* : * Defragment the data areas of each tuple, being careful to preserve : * each item's position in the linp array. : */ : upper = pd_special; : PageClearHasFreeLinePointers(page); 0.00 : 69542e: 66 41 83 65 0a fe andw $0xfffe,0xa(%r13) 0.00 : 695434: b8 18 00 00 00 mov $0x18,%eax 0.00 : 695439: eb c3 jmp 6953fe : } : } : : /* this will catch invalid or out-of-order itemnos[] */ : if (nextitm != nitems) : elog(ERROR, "incorrect index offsets supplied"); 0.00 : 69543b: ba 60 de 8a 00 mov $0x8ade60,%edx 0.00 : 695440: be dc 03 00 00 mov $0x3dc,%esi 0.00 : 695445: bf 33 dc 8a 00 mov $0x8adc33,%edi 0.00 : 69544a: e8 d1 5f 0e 00 callq 77b420 0.00 : 69544f: be 38 dd 8a 00 mov $0x8add38,%esi 0.00 : 695454: bf 14 00 00 00 mov $0x14,%edi 0.00 : 695459: 31 c0 xor %eax,%eax 0.00 : 69545b: e8 d0 5d 0e 00 callq 77b230 0.00 : 695460: e8 6b 40 dd ff callq 4694d0 : } : } : /* By here, there are exactly nline elements in itemidbase array */ : : if (totallen > (Size) (pd_special - pd_lower)) : ereport(ERROR, 0.00 : 695465: 45 31 c0 xor %r8d,%r8d 0.00 : 695468: b9 60 de 8a 00 mov $0x8ade60,%ecx 0.00 : 69546d: ba 10 04 00 00 mov $0x410,%edx 0.00 : 695472: be 33 dc 8a 00 mov $0x8adc33,%esi 0.00 : 695477: bf 14 00 00 00 mov $0x14,%edi 0.00 : 69547c: e8 3f 56 0e 00 callq 77aac0 0.00 : 695481: 84 c0 test %al,%al 0.00 : 695483: 0f 84 1b fc ff ff je 6950a4 0.00 : 695489: 44 89 e2 mov %r12d,%edx 0.00 : 69548c: 89 de mov %ebx,%esi 0.00 : 69548e: bf 60 dd 8a 00 mov $0x8add60,%edi 0.00 : 695493: e9 48 fe ff ff jmpq 6952e0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:42 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000696240 : : * Note that we don't calculate an initial checksum here; that's not done : * until it's time to write. : */ : void : PageInit(Page page, Size pageSize, Size specialSize) : { 0.00 : 696240: 55 push %rbp : : Assert(pageSize == BLCKSZ); : Assert(pageSize > specialSize + SizeOfPageHeaderData); : : /* Make sure all fields of page are zero, as well as unused space */ : MemSet(p, 0, pageSize); 0.00 : 696241: 48 89 f8 mov %rdi,%rax 0.00 : 696244: 48 09 f0 or %rsi,%rax : * Note that we don't calculate an initial checksum here; that's not done : * until it's time to write. : */ : void : PageInit(Page page, Size pageSize, Size specialSize) : { 0.00 : 696247: 48 89 e5 mov %rsp,%rbp 0.00 : 69624a: 48 89 5d e8 mov %rbx,-0x18(%rbp) /home/Computational/mark/src/postgres-andres/src/backend/storage/page/bufpage.c:42 100.00 : 69624e: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 696252: 48 89 fb mov %rdi,%rbx 0.00 : 696255: 4c 89 6d f8 mov %r13,-0x8(%rbp) 0.00 : 696259: 48 83 ec 20 sub $0x20,%rsp : : Assert(pageSize == BLCKSZ); : Assert(pageSize > specialSize + SizeOfPageHeaderData); : : /* Make sure all fields of page are zero, as well as unused space */ : MemSet(p, 0, pageSize); 0.00 : 69625d: a8 07 test $0x7,%al : * Note that we don't calculate an initial checksum here; that's not done : * until it's time to write. : */ : void : PageInit(Page page, Size pageSize, Size specialSize) : { 0.00 : 69625f: 49 89 f4 mov %rsi,%r12 0.00 : 696262: 49 89 d5 mov %rdx,%r13 : : Assert(pageSize == BLCKSZ); : Assert(pageSize > specialSize + SizeOfPageHeaderData); : : /* Make sure all fields of page are zero, as well as unused space */ : MemSet(p, 0, pageSize); 0.00 : 696265: 75 09 jne 696270 0.00 : 696267: 48 81 fe 00 04 00 00 cmp $0x400,%rsi 0.00 : 69626e: 76 50 jbe 6962c0 0.00 : 696270: 4c 89 e2 mov %r12,%rdx 0.00 : 696273: 31 f6 xor %esi,%esi 0.00 : 696275: 48 89 df mov %rbx,%rdi 0.00 : 696278: e8 a3 31 dd ff callq 469420 : void : PageInit(Page page, Size pageSize, Size specialSize) : { : PageHeader p = (PageHeader) page; : : specialSize = MAXALIGN(specialSize); 0.00 : 69627d: 49 8d 55 07 lea 0x7(%r13),%rdx : /* Make sure all fields of page are zero, as well as unused space */ : MemSet(p, 0, pageSize); : : p->pd_flags = 0; : p->pd_lower = SizeOfPageHeaderData; : p->pd_upper = pageSize - specialSize; 0.00 : 696281: 44 89 e0 mov %r12d,%eax 0.00 : 696284: 44 89 e1 mov %r12d,%ecx : p->pd_special = pageSize - specialSize; : PageSetPageSizeAndVersion(page, pageSize, PG_PAGE_LAYOUT_VERSION); 0.00 : 696287: 83 c8 04 or $0x4,%eax : Assert(pageSize > specialSize + SizeOfPageHeaderData); : : /* Make sure all fields of page are zero, as well as unused space */ : MemSet(p, 0, pageSize); : : p->pd_flags = 0; 0.00 : 69628a: 66 c7 43 0a 00 00 movw $0x0,0xa(%rbx) : p->pd_lower = SizeOfPageHeaderData; 0.00 : 696290: 66 c7 43 0c 18 00 movw $0x18,0xc(%rbx) : p->pd_upper = pageSize - specialSize; 0.00 : 696296: 48 83 e2 f8 and $0xfffffffffffffff8,%rdx : p->pd_special = pageSize - specialSize; : PageSetPageSizeAndVersion(page, pageSize, PG_PAGE_LAYOUT_VERSION); 0.00 : 69629a: 66 89 43 12 mov %ax,0x12(%rbx) : /* p->pd_prune_xid = InvalidTransactionId; done by above MemSet */ : } 0.00 : 69629e: 4c 8b 65 f0 mov -0x10(%rbp),%r12 : /* Make sure all fields of page are zero, as well as unused space */ : MemSet(p, 0, pageSize); : : p->pd_flags = 0; : p->pd_lower = SizeOfPageHeaderData; : p->pd_upper = pageSize - specialSize; 0.00 : 6962a2: 66 29 d1 sub %dx,%cx : p->pd_special = pageSize - specialSize; : PageSetPageSizeAndVersion(page, pageSize, PG_PAGE_LAYOUT_VERSION); : /* p->pd_prune_xid = InvalidTransactionId; done by above MemSet */ : } 0.00 : 6962a5: 4c 8b 6d f8 mov -0x8(%rbp),%r13 : /* Make sure all fields of page are zero, as well as unused space */ : MemSet(p, 0, pageSize); : : p->pd_flags = 0; : p->pd_lower = SizeOfPageHeaderData; : p->pd_upper = pageSize - specialSize; 0.00 : 6962a9: 66 89 4b 0e mov %cx,0xe(%rbx) : p->pd_special = pageSize - specialSize; 0.00 : 6962ad: 66 89 4b 10 mov %cx,0x10(%rbx) : PageSetPageSizeAndVersion(page, pageSize, PG_PAGE_LAYOUT_VERSION); : /* p->pd_prune_xid = InvalidTransactionId; done by above MemSet */ : } 0.00 : 6962b1: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 6962b5: c9 leaveq 0.00 : 6962b6: c3 retq 0.00 : 6962b7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 6962be: 00 00 : : Assert(pageSize == BLCKSZ); : Assert(pageSize > specialSize + SizeOfPageHeaderData); : : /* Make sure all fields of page are zero, as well as unused space */ : MemSet(p, 0, pageSize); 0.00 : 6962c0: 48 8d 14 37 lea (%rdi,%rsi,1),%rdx 0.00 : 6962c4: 48 89 f8 mov %rdi,%rax 0.00 : 6962c7: 48 39 d7 cmp %rdx,%rdi 0.00 : 6962ca: 73 b1 jae 69627d 0.00 : 6962cc: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 6962d0: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 6962d7: 48 83 c0 08 add $0x8,%rax 0.00 : 6962db: 48 39 c2 cmp %rax,%rdx 0.00 : 6962de: 77 f0 ja 6962d0 0.00 : 6962e0: eb 9b jmp 69627d Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/md.c:1792 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000697c10 <_mdnblocks>: : /* : * Get number of blocks present in a single disk file : */ : static BlockNumber : _mdnblocks(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) : { 100.00 : 697c10: 55 push %rbp : off_t len; : : len = FileSeek(seg->mdfd_vfd, 0L, SEEK_END); 0.00 : 697c11: 31 f6 xor %esi,%esi : /* : * Get number of blocks present in a single disk file : */ : static BlockNumber : _mdnblocks(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) : { 0.00 : 697c13: 48 89 e5 mov %rsp,%rbp 0.00 : 697c16: 53 push %rbx 0.00 : 697c17: 48 89 d3 mov %rdx,%rbx : off_t len; : : len = FileSeek(seg->mdfd_vfd, 0L, SEEK_END); 0.00 : 697c1a: ba 02 00 00 00 mov $0x2,%edx : /* : * Get number of blocks present in a single disk file : */ : static BlockNumber : _mdnblocks(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) : { 0.00 : 697c1f: 48 83 ec 08 sub $0x8,%rsp : off_t len; : : len = FileSeek(seg->mdfd_vfd, 0L, SEEK_END); 0.00 : 697c23: 8b 3b mov (%rbx),%edi 0.00 : 697c25: e8 66 1e fe ff callq 679a90 : if (len < 0) 0.00 : 697c2a: 48 85 c0 test %rax,%rax 0.00 : 697c2d: 78 0b js 697c3a <_mdnblocks+0x2a> : (errcode_for_file_access(), : errmsg("could not seek to end of file \"%s\": %m", : FilePathName(seg->mdfd_vfd)))); : /* note that this calculation will ignore any partial block at EOF */ : return (BlockNumber) (len / BLCKSZ); : } 0.00 : 697c2f: 48 83 c4 08 add $0x8,%rsp : { : off_t len; : : len = FileSeek(seg->mdfd_vfd, 0L, SEEK_END); : if (len < 0) : ereport(ERROR, 0.00 : 697c33: 48 c1 f8 0d sar $0xd,%rax : (errcode_for_file_access(), : errmsg("could not seek to end of file \"%s\": %m", : FilePathName(seg->mdfd_vfd)))); : /* note that this calculation will ignore any partial block at EOF */ : return (BlockNumber) (len / BLCKSZ); : } 0.00 : 697c37: 5b pop %rbx 0.00 : 697c38: c9 leaveq 0.00 : 697c39: c3 retq : { : off_t len; : : len = FileSeek(seg->mdfd_vfd, 0L, SEEK_END); : if (len < 0) : ereport(ERROR, 0.00 : 697c3a: 45 31 c0 xor %r8d,%r8d 0.00 : 697c3d: b9 86 e3 8a 00 mov $0x8ae386,%ecx 0.00 : 697c42: ba 08 07 00 00 mov $0x708,%edx 0.00 : 697c47: be db 5b 87 00 mov $0x875bdb,%esi 0.00 : 697c4c: bf 14 00 00 00 mov $0x14,%edi 0.00 : 697c51: e8 6a 2e 0e 00 callq 77aac0 0.00 : 697c56: 84 c0 test %al,%al 0.00 : 697c58: 75 05 jne 697c5f <_mdnblocks+0x4f> 0.00 : 697c5a: e8 71 18 dd ff callq 4694d0 0.00 : 697c5f: 8b 3b mov (%rbx),%edi 0.00 : 697c61: e8 4a 06 fe ff callq 6782b0 0.00 : 697c66: bf c0 32 7b 00 mov $0x7b32c0,%edi 0.00 : 697c6b: 48 89 c6 mov %rax,%rsi 0.00 : 697c6e: 31 c0 xor %eax,%eax 0.00 : 697c70: e8 2b 4c 0e 00 callq 77c8a0 0.00 : 697c75: 89 c3 mov %eax,%ebx 0.00 : 697c77: e8 74 4e 0e 00 callq 77caf0 0.00 : 697c7c: 89 de mov %ebx,%esi 0.00 : 697c7e: 89 c7 mov %eax,%edi 0.00 : 697c80: 31 c0 xor %eax,%eax 0.00 : 697c82: e8 59 29 0e 00 callq 77a5e0 0.00 : 697c87: eb d1 jmp 697c5a <_mdnblocks+0x4a> Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:604 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000006993d0 : : * causes intervening file space to become filled with zeroes. : */ : void : smgrextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 6993d0: 55 push %rbp : (*(smgrsw[reln->smgr_which].smgr_extend)) (reln, forknum, blocknum, 0.00 : 6993d1: 48 63 47 24 movslq 0x24(%rdi),%rax 0.00 : 6993d5: 45 0f be c0 movsbl %r8b,%r8d : * causes intervening file space to become filled with zeroes. : */ : void : smgrextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 6993d9: 48 89 e5 mov %rsp,%rbp : (*(smgrsw[reln->smgr_which].smgr_extend)) (reln, forknum, blocknum, 0.00 : 6993dc: 48 c1 e0 07 shl $0x7,%rax 0.00 : 6993e0: 4c 8b 98 90 e4 8a 00 mov 0x8ae490(%rax),%r11 : buffer, skipFsync); : } /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:604 100.00 : 6993e7: c9 leaveq : */ : void : smgrextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { : (*(smgrsw[reln->smgr_which].smgr_extend)) (reln, forknum, blocknum, 0.00 : 6993e8: 41 ff e3 jmpq *%r11 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:627 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000699410 : : * return pages in the format that POSTGRES expects. : */ : void : smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer) : { 0.00 : 699410: 55 push %rbp : (*(smgrsw[reln->smgr_which].smgr_read)) (reln, forknum, blocknum, buffer); 100.00 : 699411: 48 63 47 24 movslq 0x24(%rdi),%rax : * return pages in the format that POSTGRES expects. : */ : void : smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer) : { 0.00 : 699415: 48 89 e5 mov %rsp,%rbp : (*(smgrsw[reln->smgr_which].smgr_read)) (reln, forknum, blocknum, buffer); 0.00 : 699418: 48 c1 e0 07 shl $0x7,%rax 0.00 : 69941c: 4c 8b 98 a0 e4 8a 00 mov 0x8ae4a0(%rax),%r11 : } 0.00 : 699423: c9 leaveq : */ : void : smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer) : { : (*(smgrsw[reln->smgr_which].smgr_read)) (reln, forknum, blocknum, buffer); 0.00 : 699424: 41 ff e3 jmpq *%r11 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:649 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000699430 : : * do not require fsync. : */ : void : smgrwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 699430: 55 push %rbp : (*(smgrsw[reln->smgr_which].smgr_write)) (reln, forknum, blocknum, /home/Computational/mark/src/postgres-andres/src/backend/storage/smgr/smgr.c:649 100.00 : 699431: 48 63 47 24 movslq 0x24(%rdi),%rax 0.00 : 699435: 45 0f be c0 movsbl %r8b,%r8d : * do not require fsync. : */ : void : smgrwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { 0.00 : 699439: 48 89 e5 mov %rsp,%rbp : (*(smgrsw[reln->smgr_which].smgr_write)) (reln, forknum, blocknum, 0.00 : 69943c: 48 c1 e0 07 shl $0x7,%rax 0.00 : 699440: 4c 8b 98 a8 e4 8a 00 mov 0x8ae4a8(%rax),%r11 : buffer, skipFsync); : } 0.00 : 699447: c9 leaveq : */ : void : smgrwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, : char *buffer, bool skipFsync) : { : (*(smgrsw[reln->smgr_which].smgr_write)) (reln, forknum, blocknum, 0.00 : 699448: 41 ff e3 jmpq *%r11 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:401 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000076d980 : : * (suggesting we are trying to access a just-deleted relation). : * Any other error is reported via elog. : */ : static Relation : RelationBuildDesc(Oid targetRelId, bool insertIt) : { 0.00 : 76d980: 55 push %rbp : Form_pg_class relp; : : /* : * find the tuple in pg_class corresponding to the given relation id : */ : pg_class_tuple = ScanPgRelation(targetRelId, true, false); 0.00 : 76d981: 31 d2 xor %edx,%edx : * (suggesting we are trying to access a just-deleted relation). : * Any other error is reported via elog. : */ : static Relation : RelationBuildDesc(Oid targetRelId, bool insertIt) : { 0.00 : 76d983: 48 89 e5 mov %rsp,%rbp 0.00 : 76d986: 41 57 push %r15 0.00 : 76d988: 41 56 push %r14 : pg_class_tuple = ScanPgRelation(targetRelId, true, false); : : /* : * if no such tuple exists, return NULL : */ : if (!HeapTupleIsValid(pg_class_tuple)) 0.00 : 76d98a: 45 31 f6 xor %r14d,%r14d : * (suggesting we are trying to access a just-deleted relation). : * Any other error is reported via elog. : */ : static Relation : RelationBuildDesc(Oid targetRelId, bool insertIt) : { 0.00 : 76d98d: 41 55 push %r13 0.00 : 76d98f: 41 54 push %r12 0.00 : 76d991: 53 push %rbx 0.00 : 76d992: 48 81 ec 48 01 00 00 sub $0x148,%rsp 0.00 : 76d999: 40 88 b5 9f fe ff ff mov %sil,-0x161(%rbp) : Form_pg_class relp; : : /* : * find the tuple in pg_class corresponding to the given relation id : */ : pg_class_tuple = ScanPgRelation(targetRelId, true, false); 0.00 : 76d9a0: be 01 00 00 00 mov $0x1,%esi 0.00 : 76d9a5: e8 f6 d5 ff ff callq 76afa0 : : /* : * if no such tuple exists, return NULL : */ : if (!HeapTupleIsValid(pg_class_tuple)) 0.00 : 76d9aa: 48 85 c0 test %rax,%rax : Form_pg_class relp; : : /* : * find the tuple in pg_class corresponding to the given relation id : */ : pg_class_tuple = ScanPgRelation(targetRelId, true, false); 0.00 : 76d9ad: 48 89 85 a0 fe ff ff mov %rax,-0x160(%rbp) : : /* : * if no such tuple exists, return NULL : */ : if (!HeapTupleIsValid(pg_class_tuple)) 0.00 : 76d9b4: 0f 84 0b 04 00 00 je 76ddc5 : return NULL; : : /* : * get information from the pg_class_tuple : */ : relid = HeapTupleGetOid(pg_class_tuple); 0.00 : 76d9ba: 48 8b 85 a0 fe ff ff mov -0x160(%rbp),%rax 0.00 : 76d9c1: 4c 8b 60 10 mov 0x10(%rax),%r12 0.00 : 76d9c5: 41 f6 44 24 14 08 testb $0x8,0x14(%r12) 0.00 : 76d9cb: 0f 85 0f 04 00 00 jne 76dde0 0.00 : 76d9d1: 45 0f b6 6c 24 16 movzbl 0x16(%r12),%r13d 0.00 : 76d9d7: 45 31 ff xor %r15d,%r15d : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; : : CurrentMemoryContext = context; 0.00 : 76d9da: 48 8b 05 9f ce 44 00 mov 0x44ce9f(%rip),%rax # bba880 : oldcxt = MemoryContextSwitchTo(CacheMemoryContext); : : /* : * allocate and zero space for new relation descriptor : */ : relation = (Relation) palloc0(sizeof(RelationData)); 0.00 : 76d9e1: bf 40 01 00 00 mov $0x140,%edi : #endif /* !PG_USE_INLINE */ : #if defined(PG_USE_INLINE) || defined(MCXT_INCLUDE_DEFINITIONS) : STATIC_IF_INLINE MemoryContext : MemoryContextSwitchTo(MemoryContext context) : { : MemoryContext old = CurrentMemoryContext; 0.00 : 76d9e6: 48 8b 1d 73 ce 44 00 mov 0x44ce73(%rip),%rbx # bba860 : : CurrentMemoryContext = context; 0.00 : 76d9ed: 48 89 05 6c ce 44 00 mov %rax,0x44ce6c(%rip) # bba860 0.00 : 76d9f4: e8 77 b5 02 00 callq 798f70 : * Bottom line is that relacl *cannot* be retrieved from the relcache. Get : * it from the syscache if you need it. The same goes for the original : * form of reloptions (however, we do store the parsed form of reloptions : * in rd_options). : */ : relationForm = (Form_pg_class) palloc(CLASS_TUPLE_SIZE); 0.00 : 76d9f9: bf 84 00 00 00 mov $0x84,%edi : * allocate and zero space for new relation descriptor : */ : relation = (Relation) palloc0(sizeof(RelationData)); : : /* make sure relation is marked as having no open file yet */ : relation->rd_smgr = NULL; 0.00 : 76d9fe: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 76da05: 00 : oldcxt = MemoryContextSwitchTo(CacheMemoryContext); : : /* : * allocate and zero space for new relation descriptor : */ : relation = (Relation) palloc0(sizeof(RelationData)); 0.00 : 76da06: 49 89 c6 mov %rax,%r14 : * Bottom line is that relacl *cannot* be retrieved from the relcache. Get : * it from the syscache if you need it. The same goes for the original : * form of reloptions (however, we do store the parsed form of reloptions : * in rd_options). : */ : relationForm = (Form_pg_class) palloc(CLASS_TUPLE_SIZE); 0.00 : 76da09: e8 42 b3 02 00 callq 798d50 : : memcpy(relationForm, relp, CLASS_TUPLE_SIZE); 0.00 : 76da0e: 4b 8d 34 2c lea (%r12,%r13,1),%rsi 0.00 : 76da12: 48 89 c7 mov %rax,%rdi 0.00 : 76da15: b9 10 00 00 00 mov $0x10,%ecx /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:401 100.00 : 76da1a: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi) : * Bottom line is that relacl *cannot* be retrieved from the relcache. Get : * it from the syscache if you need it. The same goes for the original : * form of reloptions (however, we do store the parsed form of reloptions : * in rd_options). : */ : relationForm = (Form_pg_class) palloc(CLASS_TUPLE_SIZE); 0.00 : 76da1d: 49 89 c0 mov %rax,%r8 : : memcpy(relationForm, relp, CLASS_TUPLE_SIZE); 0.00 : 76da20: 8b 06 mov (%rsi),%eax 0.00 : 76da22: 89 07 mov %eax,(%rdi) : : /* initialize relation tuple form */ : relation->rd_rel = relationForm; 0.00 : 76da24: 4d 89 46 30 mov %r8,0x30(%r14) : : /* and allocate attribute tuple form storage */ : relation->rd_att = CreateTemplateTupleDesc(relationForm->relnatts, 0.00 : 76da28: 41 0f be 70 74 movsbl 0x74(%r8),%esi 0.00 : 76da2d: 41 0f bf 78 70 movswl 0x70(%r8),%edi 0.00 : 76da32: e8 b9 70 d0 ff callq 474af0 0.00 : 76da37: 49 89 46 38 mov %rax,0x38(%r14) : relationForm->relhasoids); : /* which we mark as a reference-counted tupdesc */ : relation->rd_att->tdrefcount = 1; 0.00 : 76da3b: c7 40 24 01 00 00 00 movl $0x1,0x24(%rax) 0.00 : 76da42: 48 89 1d 17 ce 44 00 mov %rbx,0x44ce17(%rip) # bba860 : */ : relation->rd_refcnt = 0; : relation->rd_isnailed = false; : relation->rd_createSubid = InvalidSubTransactionId; : relation->rd_newRelfilenodeSubid = InvalidSubTransactionId; : switch (relation->rd_rel->relpersistence) 0.00 : 76da49: 49 8b 4e 30 mov 0x30(%r14),%rcx : relation = AllocateRelationDesc(relp); : : /* : * initialize the relation's relation id (relation->rd_id) : */ : RelationGetRelid(relation) = relid; 0.00 : 76da4d: 45 89 7e 40 mov %r15d,0x40(%r14) : /* : * normal relations are not nailed into the cache; nor can a pre-existing : * relation be new. It could be temp though. (Actually, it could be new : * too, but it's okay to forget that fact if forced to flush the entry.) : */ : relation->rd_refcnt = 0; 0.00 : 76da51: 41 c7 46 18 00 00 00 movl $0x0,0x18(%r14) 0.00 : 76da58: 00 : relation->rd_isnailed = false; 0.00 : 76da59: 41 c6 46 21 00 movb $0x0,0x21(%r14) : relation->rd_createSubid = InvalidSubTransactionId; 0.00 : 76da5e: 41 c7 46 24 00 00 00 movl $0x0,0x24(%r14) 0.00 : 76da65: 00 : relation->rd_newRelfilenodeSubid = InvalidSubTransactionId; 0.00 : 76da66: 41 c7 46 28 00 00 00 movl $0x0,0x28(%r14) 0.00 : 76da6d: 00 : switch (relation->rd_rel->relpersistence) 0.00 : 76da6e: 0f b6 41 6e movzbl 0x6e(%rcx),%eax 0.00 : 76da72: 3c 74 cmp $0x74,%al 0.00 : 76da74: 0f 84 ec 04 00 00 je 76df66 0.00 : 76da7a: 3c 75 cmp $0x75,%al 0.00 : 76da7c: 74 3a je 76dab8 0.00 : 76da7e: 3c 70 cmp $0x70,%al 0.00 : 76da80: 74 36 je 76dab8 : Assert(relation->rd_backend != InvalidBackendId); : relation->rd_islocaltemp = false; : } : break; : default: : elog(ERROR, "invalid relpersistence: %c", 0.00 : 76da82: ba d0 15 8d 00 mov $0x8d15d0,%edx 0.00 : 76da87: be 02 04 00 00 mov $0x402,%esi 0.00 : 76da8c: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76da91: e8 8a d9 00 00 callq 77b420 0.00 : 76da96: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76da9a: be 8c 0c 7c 00 mov $0x7c0c8c,%esi 0.00 : 76da9f: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76daa4: 0f be 50 6e movsbl 0x6e(%rax),%edx 0.00 : 76daa8: 31 c0 xor %eax,%eax 0.00 : 76daaa: e8 81 d7 00 00 callq 77b230 0.00 : 76daaf: e8 1c ba cf ff callq 4694d0 0.00 : 76dab4: 0f 1f 40 00 nopl 0x0(%rax) : relation->rd_newRelfilenodeSubid = InvalidSubTransactionId; : switch (relation->rd_rel->relpersistence) : { : case RELPERSISTENCE_UNLOGGED: : case RELPERSISTENCE_PERMANENT: : relation->rd_backend = InvalidBackendId; 0.00 : 76dab8: 41 c7 46 1c ff ff ff movl $0xffffffff,0x1c(%r14) 0.00 : 76dabf: ff : relation->rd_islocaltemp = false; 0.00 : 76dac0: 41 c6 46 20 00 movb $0x0,0x20(%r14) : TupleConstr *constr; : AttrDefault *attrdef = NULL; : int ndef = 0; : : /* copy some fields from pg_class row to rd_att */ : relation->rd_att->tdtypeid = relation->rd_rel->reltype; 0.00 : 76dac5: 8b 41 44 mov 0x44(%rcx),%eax 0.00 : 76dac8: 49 8b 56 38 mov 0x38(%r14),%rdx : relation->rd_att->tdtypmod = -1; /* unnecessary, but... */ : relation->rd_att->tdhasoid = relation->rd_rel->relhasoids; : : constr = (TupleConstr *) MemoryContextAlloc(CacheMemoryContext, 0.00 : 76dacc: be 18 00 00 00 mov $0x18,%esi : /* : * Form a scan key that selects only user attributes (attnum > 0). : * (Eliminating system attribute rows at the index level is lots faster : * than fetching them.) : */ : ScanKeyInit(&skey[0], 0.00 : 76dad1: 48 8d 9d f0 fe ff ff lea -0x110(%rbp),%rbx : 2, skey); : : /* : * add attribute data to relation->rd_att : */ : need = relation->rd_rel->relnatts; 0.00 : 76dad8: 45 31 ed xor %r13d,%r13d 0.00 : 76dadb: 45 31 e4 xor %r12d,%r12d : TupleConstr *constr; : AttrDefault *attrdef = NULL; : int ndef = 0; : : /* copy some fields from pg_class row to rd_att */ : relation->rd_att->tdtypeid = relation->rd_rel->reltype; 0.00 : 76dade: 89 42 18 mov %eax,0x18(%rdx) : relation->rd_att->tdtypmod = -1; /* unnecessary, but... */ 0.00 : 76dae1: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76dae5: c7 40 1c ff ff ff ff movl $0xffffffff,0x1c(%rax) : relation->rd_att->tdhasoid = relation->rd_rel->relhasoids; 0.00 : 76daec: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76daf0: 49 8b 56 38 mov 0x38(%r14),%rdx 0.00 : 76daf4: 0f b6 40 74 movzbl 0x74(%rax),%eax 0.00 : 76daf8: 88 42 20 mov %al,0x20(%rdx) : : constr = (TupleConstr *) MemoryContextAlloc(CacheMemoryContext, 0.00 : 76dafb: 48 8b 3d 7e cd 44 00 mov 0x44cd7e(%rip),%rdi # bba880 0.00 : 76db02: e8 89 b3 02 00 callq 798e90 0.00 : 76db07: 48 89 85 b0 fe ff ff mov %rax,-0x150(%rbp) : sizeof(TupleConstr)); : constr->has_not_null = false; 0.00 : 76db0e: c6 40 14 00 movb $0x0,0x14(%rax) : /* : * Form a scan key that selects only user attributes (attnum > 0). : * (Eliminating system attribute rows at the index level is lots faster : * than fetching them.) : */ : ScanKeyInit(&skey[0], 0.00 : 76db12: b9 b8 00 00 00 mov $0xb8,%ecx 0.00 : 76db17: 45 8b 46 40 mov 0x40(%r14),%r8d 0.00 : 76db1b: ba 03 00 00 00 mov $0x3,%edx 0.00 : 76db20: be 01 00 00 00 mov $0x1,%esi 0.00 : 76db25: 48 89 df mov %rbx,%rdi 0.00 : 76db28: e8 53 60 d0 ff callq 473b80 : Anum_pg_attribute_attrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : ScanKeyInit(&skey[1], 0.00 : 76db2d: 48 8d 7b 48 lea 0x48(%rbx),%rdi 0.00 : 76db31: 45 31 c0 xor %r8d,%r8d 0.00 : 76db34: b9 92 00 00 00 mov $0x92,%ecx 0.00 : 76db39: ba 05 00 00 00 mov $0x5,%edx 0.00 : 76db3e: be 06 00 00 00 mov $0x6,%esi 0.00 : 76db43: e8 38 60 d0 ff callq 473b80 : /* : * Open pg_attribute and begin a scan. Force heap scan if we haven't yet : * built the critical relcache entries (this includes initdb and startup : * without a pg_internal.init file). : */ : pg_attribute_desc = heap_open(AttributeRelationId, AccessShareLock); 0.00 : 76db48: be 01 00 00 00 mov $0x1,%esi 0.00 : 76db4d: bf e1 04 00 00 mov $0x4e1,%edi 0.00 : 76db52: e8 09 00 d3 ff callq 49db60 : pg_attribute_scan = systable_beginscan(pg_attribute_desc, 0.00 : 76db57: 0f be 15 82 a9 44 00 movsbl 0x44a982(%rip),%edx # bb84e0 0.00 : 76db5e: 49 89 d9 mov %rbx,%r9 0.00 : 76db61: 41 b8 02 00 00 00 mov $0x2,%r8d 0.00 : 76db67: 31 c9 xor %ecx,%ecx 0.00 : 76db69: be 63 0a 00 00 mov $0xa63,%esi 0.00 : 76db6e: 48 89 c7 mov %rax,%rdi : /* : * Open pg_attribute and begin a scan. Force heap scan if we haven't yet : * built the critical relcache entries (this includes initdb and startup : * without a pg_internal.init file). : */ : pg_attribute_desc = heap_open(AttributeRelationId, AccessShareLock); 0.00 : 76db71: 48 89 85 b8 fe ff ff mov %rax,-0x148(%rbp) : pg_attribute_scan = systable_beginscan(pg_attribute_desc, 0.00 : 76db78: e8 23 71 d3 ff callq 4a4ca0 0.00 : 76db7d: 49 89 c7 mov %rax,%r15 : 2, skey); : : /* : * add attribute data to relation->rd_att : */ : need = relation->rd_rel->relnatts; 0.00 : 76db80: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76db84: 48 c7 85 a8 fe ff ff movq $0x0,-0x158(%rbp) 0.00 : 76db8b: 00 00 00 00 0.00 : 76db8f: 0f bf 40 70 movswl 0x70(%rax),%eax 0.00 : 76db93: 89 85 98 fe ff ff mov %eax,-0x168(%rbp) 0.00 : 76db99: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : * (suggesting we are trying to access a just-deleted relation). : * Any other error is reported via elog. : */ : static Relation : RelationBuildDesc(Oid targetRelId, bool insertIt) : { 0.00 : 76dba0: 8b 9d 98 fe ff ff mov -0x168(%rbp),%ebx : /* : * add attribute data to relation->rd_att : */ : need = relation->rd_rel->relnatts; : : while (HeapTupleIsValid(pg_attribute_tuple = systable_getnext(pg_attribute_scan))) 0.00 : 76dba6: 4c 89 ff mov %r15,%rdi 0.00 : 76dba9: e8 72 70 d3 ff callq 4a4c20 : * (suggesting we are trying to access a just-deleted relation). : * Any other error is reported via elog. : */ : static Relation : RelationBuildDesc(Oid targetRelId, bool insertIt) : { 0.00 : 76dbae: 44 29 e3 sub %r12d,%ebx : /* : * add attribute data to relation->rd_att : */ : need = relation->rd_rel->relnatts; : : while (HeapTupleIsValid(pg_attribute_tuple = systable_getnext(pg_attribute_scan))) 0.00 : 76dbb1: 48 85 c0 test %rax,%rax 0.00 : 76dbb4: 0f 84 d8 09 00 00 je 76e592 : { : Form_pg_attribute attp; : : attp = (Form_pg_attribute) GETSTRUCT(pg_attribute_tuple); 0.00 : 76dbba: 48 8b 50 10 mov 0x10(%rax),%rdx 0.00 : 76dbbe: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 76dbc2: 48 8d 1c 02 lea (%rdx,%rax,1),%rbx : : if (attp->attnum <= 0 || 0.00 : 76dbc6: 0f b7 53 4e movzwl 0x4e(%rbx),%edx 0.00 : 76dbca: 66 85 d2 test %dx,%dx 0.00 : 76dbcd: 0f 8e 53 09 00 00 jle 76e526 0.00 : 76dbd3: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76dbd7: 66 3b 50 70 cmp 0x70(%rax),%dx 0.00 : 76dbdb: 0f 8f 45 09 00 00 jg 76e526 : attp->attnum > relation->rd_rel->relnatts) : elog(ERROR, "invalid attribute number %d for %s", : attp->attnum, RelationGetRelationName(relation)); : : memcpy(relation->rd_att->attrs[attp->attnum - 1], 0.00 : 76dbe1: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76dbe5: 48 0f bf d2 movswq %dx,%rdx 0.00 : 76dbe9: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 76dbed: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 76dbf2: 48 8b 03 mov (%rbx),%rax 0.00 : 76dbf5: 48 89 02 mov %rax,(%rdx) 0.00 : 76dbf8: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 76dbfc: 48 89 42 08 mov %rax,0x8(%rdx) 0.00 : 76dc00: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 76dc04: 48 89 42 10 mov %rax,0x10(%rdx) 0.00 : 76dc08: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 76dc0c: 48 89 42 18 mov %rax,0x18(%rdx) 0.00 : 76dc10: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 76dc14: 48 89 42 20 mov %rax,0x20(%rdx) 0.00 : 76dc18: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 76dc1c: 48 89 42 28 mov %rax,0x28(%rdx) 0.00 : 76dc20: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 76dc24: 48 89 42 30 mov %rax,0x30(%rdx) 0.00 : 76dc28: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 76dc2c: 48 89 42 38 mov %rax,0x38(%rdx) 0.00 : 76dc30: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 76dc34: 48 89 42 40 mov %rax,0x40(%rdx) 0.00 : 76dc38: 48 8b 43 48 mov 0x48(%rbx),%rax 0.00 : 76dc3c: 48 89 42 48 mov %rax,0x48(%rdx) 0.00 : 76dc40: 48 8b 43 50 mov 0x50(%rbx),%rax 0.00 : 76dc44: 48 89 42 50 mov %rax,0x50(%rdx) 0.00 : 76dc48: 48 8b 43 58 mov 0x58(%rbx),%rax 0.00 : 76dc4c: 48 89 42 58 mov %rax,0x58(%rdx) 0.00 : 76dc50: 48 8b 43 60 mov 0x60(%rbx),%rax 0.00 : 76dc54: 48 89 42 60 mov %rax,0x60(%rdx) 0.00 : 76dc58: 8b 43 68 mov 0x68(%rbx),%eax 0.00 : 76dc5b: 89 42 68 mov %eax,0x68(%rdx) : attp, : ATTRIBUTE_FIXED_PART_SIZE); : : /* Update constraint/default info */ : if (attp->attnotnull) 0.00 : 76dc5e: 80 7b 5f 00 cmpb $0x0,0x5f(%rbx) 0.00 : 76dc62: 74 0b je 76dc6f : constr->has_not_null = true; 0.00 : 76dc64: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax 0.00 : 76dc6b: c6 40 14 01 movb $0x1,0x14(%rax) : : if (attp->atthasdef) 0.00 : 76dc6f: 80 7b 60 00 cmpb $0x0,0x60(%rbx) 0.00 : 76dc73: 74 2f je 76dca4 : { : if (attrdef == NULL) 0.00 : 76dc75: 48 83 bd a8 fe ff ff cmpq $0x0,-0x158(%rbp) 0.00 : 76dc7c: 00 0.00 : 76dc7d: 0f 84 7e 08 00 00 je 76e501 : attrdef = (AttrDefault *) : MemoryContextAllocZero(CacheMemoryContext, : relation->rd_rel->relnatts * : sizeof(AttrDefault)); : attrdef[ndef].adnum = attp->attnum; 0.00 : 76dc83: 49 63 c5 movslq %r13d,%rax 0.00 : 76dc86: 0f b7 53 4e movzwl 0x4e(%rbx),%edx : attrdef[ndef].adbin = NULL; : ndef++; 0.00 : 76dc8a: 41 83 c5 01 add $0x1,%r13d : if (attrdef == NULL) : attrdef = (AttrDefault *) : MemoryContextAllocZero(CacheMemoryContext, : relation->rd_rel->relnatts * : sizeof(AttrDefault)); : attrdef[ndef].adnum = attp->attnum; 0.00 : 76dc8e: 48 c1 e0 04 shl $0x4,%rax 0.00 : 76dc92: 48 03 85 a8 fe ff ff add -0x158(%rbp),%rax 0.00 : 76dc99: 66 89 10 mov %dx,(%rax) : attrdef[ndef].adbin = NULL; 0.00 : 76dc9c: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 76dca3: 00 : ndef++; 0.00 : 76dca4: 49 83 c4 01 add $0x1,%r12 : } : need--; : if (need == 0) 0.00 : 76dca8: 44 39 a5 98 fe ff ff cmp %r12d,-0x168(%rbp) 0.00 : 76dcaf: 0f 85 eb fe ff ff jne 76dba0 : } : : /* : * end the scan and close the attribute relation : */ : systable_endscan(pg_attribute_scan); 0.00 : 76dcb5: 4c 89 ff mov %r15,%rdi 0.00 : 76dcb8: e8 63 6e d3 ff callq 4a4b20 : heap_close(pg_attribute_desc, AccessShareLock); 0.00 : 76dcbd: 48 8b bd b8 fe ff ff mov -0x148(%rbp),%rdi 0.00 : 76dcc4: be 01 00 00 00 mov $0x1,%esi 0.00 : 76dcc9: e8 f2 fc d2 ff callq 49d9c0 : /* : * However, we can easily set the attcacheoff value for the first : * attribute: it must be zero. This eliminates the need for special cases : * for attnum=1 that used to exist in fastgetattr() and index_getattr(). : */ : if (relation->rd_rel->relnatts > 0) 0.00 : 76dcce: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76dcd2: 66 83 78 70 00 cmpw $0x0,0x70(%rax) 0.00 : 76dcd7: 7e 12 jle 76dceb : relation->rd_att->attrs[0]->attcacheoff = 0; 0.00 : 76dcd9: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76dcdd: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 76dce1: 48 8b 00 mov (%rax),%rax 0.00 : 76dce4: c7 40 54 00 00 00 00 movl $0x0,0x54(%rax) : : /* : * Set up constraint/default info : */ : if (constr->has_not_null || ndef > 0 || relation->rd_rel->relchecks) 0.00 : 76dceb: 48 8b 8d b0 fe ff ff mov -0x150(%rbp),%rcx 0.00 : 76dcf2: 45 85 ed test %r13d,%r13d 0.00 : 76dcf5: 0f 9f c2 setg %dl 0.00 : 76dcf8: 80 79 14 00 cmpb $0x0,0x14(%rcx) 0.00 : 76dcfc: 0f 85 ee 00 00 00 jne 76ddf0 0.00 : 76dd02: 84 d2 test %dl,%dl 0.00 : 76dd04: 0f 85 e6 00 00 00 jne 76ddf0 0.00 : 76dd0a: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76dd0e: 66 83 78 72 00 cmpw $0x0,0x72(%rax) 0.00 : 76dd13: 0f 85 75 02 00 00 jne 76df8e : else : constr->num_check = 0; : } : else : { : pfree(constr); 0.00 : 76dd19: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi 0.00 : 76dd20: e8 5b ae 02 00 callq 798b80 : relation->rd_att->constr = NULL; 0.00 : 76dd25: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76dd29: 48 c7 40 10 00 00 00 movq $0x0,0x10(%rax) 0.00 : 76dd30: 00 : RelationBuildTupleDesc(relation); : : /* : * Fetch rules and triggers that affect this relation : */ : if (relation->rd_rel->relhasrules) 0.00 : 76dd31: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76dd35: 80 79 76 00 cmpb $0x0,0x76(%rcx) 0.00 : 76dd39: 0f 85 3d 06 00 00 jne 76e37c : RelationBuildRuleLock(relation); : else : { : relation->rd_rules = NULL; 0.00 : 76dd3f: 49 c7 46 50 00 00 00 movq $0x0,0x50(%r14) 0.00 : 76dd46: 00 : relation->rd_rulescxt = NULL; 0.00 : 76dd47: 49 c7 46 58 00 00 00 movq $0x0,0x58(%r14) 0.00 : 76dd4e: 00 : } : : if (relation->rd_rel->relhastriggers) 0.00 : 76dd4f: 80 79 77 00 cmpb $0x0,0x77(%rcx) 0.00 : 76dd53: 0f 85 39 06 00 00 jne 76e392 : RelationBuildTriggers(relation); : else : relation->trigdesc = NULL; 0.00 : 76dd59: 49 c7 46 60 00 00 00 movq $0x0,0x60(%r14) 0.00 : 76dd60: 00 : : if (relation->rd_rel->relrowsecurity) 0.00 : 76dd61: 80 79 79 00 cmpb $0x0,0x79(%rcx) 0.00 : 76dd65: 0f 85 3d 06 00 00 jne 76e3a8 : RelationBuildRowSecurity(relation); : else : relation->rsdesc = NULL; 0.00 : 76dd6b: 49 c7 46 68 00 00 00 movq $0x0,0x68(%r14) 0.00 : 76dd72: 00 : : /* : * if it's an index, initialize index-related information : */ : if (OidIsValid(relation->rd_rel->relam)) 0.00 : 76dd73: 44 8b 79 50 mov 0x50(%rcx),%r15d 0.00 : 76dd77: 45 85 ff test %r15d,%r15d 0.00 : 76dd7a: 0f 85 41 06 00 00 jne 76e3c1 : RelationInitIndexAccessInfo(relation); : : /* extract reloptions if any */ : RelationParseRelOptions(relation, pg_class_tuple); 0.00 : 76dd80: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi 0.00 : 76dd87: 4c 89 f7 mov %r14,%rdi 0.00 : 76dd8a: e8 01 e3 ff ff callq 76c090 : : /* : * initialize the relation lock manager information : */ : RelationInitLockInfo(relation); /* see lmgr.c */ 0.00 : 76dd8f: 4c 89 f7 mov %r14,%rdi 0.00 : 76dd92: e8 29 9b f1 ff callq 6878c0 : : /* : * initialize physical addressing information for the relation : */ : RelationInitPhysicalAddr(relation); 0.00 : 76dd97: 4c 89 f7 mov %r14,%rdi 0.00 : 76dd9a: e8 21 d3 ff ff callq 76b0c0 : : /* make sure relation is marked as having no open file yet */ : relation->rd_smgr = NULL; 0.00 : 76dd9f: 49 c7 46 10 00 00 00 movq $0x0,0x10(%r14) 0.00 : 76dda6: 00 : : /* : * now we can free the memory allocated for pg_class_tuple : */ : heap_freetuple(pg_class_tuple); 0.00 : 76dda7: 48 8b bd a0 fe ff ff mov -0x160(%rbp),%rdi 0.00 : 76ddae: e8 0d 0f d0 ff callq 46ecc0 : * So allow RelationCacheInsert to delete any already-present relcache : * entry for the same OID. The already-present entry should have refcount : * zero (else somebody forgot to close it); in the event that it doesn't, : * we'll elog a WARNING and leak the already-present entry. : */ : if (insertIt) 0.00 : 76ddb3: 80 bd 9f fe ff ff 00 cmpb $0x0,-0x161(%rbp) 0.00 : 76ddba: 0f 85 70 06 00 00 jne 76e430 : RelationCacheInsert(relation, true); : : /* It's fully valid */ : relation->rd_isvalid = true; 0.00 : 76ddc0: 41 c6 46 22 01 movb $0x1,0x22(%r14) : : return relation; : } 0.00 : 76ddc5: 48 81 c4 48 01 00 00 add $0x148,%rsp 0.00 : 76ddcc: 4c 89 f0 mov %r14,%rax 0.00 : 76ddcf: 5b pop %rbx 0.00 : 76ddd0: 41 5c pop %r12 0.00 : 76ddd2: 41 5d pop %r13 0.00 : 76ddd4: 41 5e pop %r14 0.00 : 76ddd6: 41 5f pop %r15 0.00 : 76ddd8: c9 leaveq 0.00 : 76ddd9: c3 retq 0.00 : 76ddda: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : return NULL; : : /* : * get information from the pg_class_tuple : */ : relid = HeapTupleGetOid(pg_class_tuple); 0.00 : 76dde0: 45 0f b6 6c 24 16 movzbl 0x16(%r12),%r13d 0.00 : 76dde6: 47 8b 7c 2c fc mov -0x4(%r12,%r13,1),%r15d 0.00 : 76ddeb: e9 ea fb ff ff jmpq 76d9da : /* : * Set up constraint/default info : */ : if (constr->has_not_null || ndef > 0 || relation->rd_rel->relchecks) : { : relation->rd_att->constr = constr; 0.00 : 76ddf0: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76ddf4: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi : : if (ndef > 0) /* DEFAULTs */ 0.00 : 76ddfb: 84 d2 test %dl,%dl : /* : * Set up constraint/default info : */ : if (constr->has_not_null || ndef > 0 || relation->rd_rel->relchecks) : { : relation->rd_att->constr = constr; 0.00 : 76ddfd: 48 89 78 10 mov %rdi,0x10(%rax) : : if (ndef > 0) /* DEFAULTs */ 0.00 : 76de01: 0f 84 96 01 00 00 je 76df9d : { : if (ndef < relation->rd_rel->relnatts) 0.00 : 76de07: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76de0b: 0f bf 40 70 movswl 0x70(%rax),%eax 0.00 : 76de0f: 44 39 e8 cmp %r13d,%eax 0.00 : 76de12: 0f 8f 0b 03 00 00 jg 76e123 : constr->defval = (AttrDefault *) : repalloc(attrdef, ndef * sizeof(AttrDefault)); : else : constr->defval = attrdef; 0.00 : 76de18: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 76de1f: 48 8b 8d b0 fe ff ff mov -0x150(%rbp),%rcx 0.00 : 76de26: 48 89 39 mov %rdi,(%rcx) : constr->num_defval = ndef; 0.00 : 76de29: 48 8b 85 b0 fe ff ff mov -0x150(%rbp),%rax : Datum val; : bool isnull; : int found; : int i; : : ScanKeyInit(&skey, 0.00 : 76de30: 48 8d 5d 80 lea -0x80(%rbp),%rbx 0.00 : 76de34: b9 b8 00 00 00 mov $0xb8,%ecx 0.00 : 76de39: be 01 00 00 00 mov $0x1,%esi 0.00 : 76de3e: 48 89 df mov %rbx,%rdi : if (ndef < relation->rd_rel->relnatts) : constr->defval = (AttrDefault *) : repalloc(attrdef, ndef * sizeof(AttrDefault)); : else : constr->defval = attrdef; : constr->num_defval = ndef; 0.00 : 76de41: 66 44 89 68 10 mov %r13w,0x10(%rax) : * Load any default attribute value definitions for the relation. : */ : static void : AttrDefaultFetch(Relation relation) : { : AttrDefault *attrdef = relation->rd_att->constr->defval; 0.00 : 76de46: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76de4a: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 76de4e: 48 8b 10 mov (%rax),%rdx 0.00 : 76de51: 48 89 95 d8 fe ff ff mov %rdx,-0x128(%rbp) : Datum val; : bool isnull; : int found; : int i; : : ScanKeyInit(&skey, 0.00 : 76de58: 45 8b 46 40 mov 0x40(%r14),%r8d 0.00 : 76de5c: ba 03 00 00 00 mov $0x3,%edx : */ : static void : AttrDefaultFetch(Relation relation) : { : AttrDefault *attrdef = relation->rd_att->constr->defval; : int ndef = relation->rd_att->constr->num_defval; 0.00 : 76de61: 44 0f b7 68 10 movzwl 0x10(%rax),%r13d : Datum val; : bool isnull; : int found; : int i; : : ScanKeyInit(&skey, 0.00 : 76de66: e8 15 5d d0 ff callq 473b80 : Anum_pg_attrdef_adrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : adrel = heap_open(AttrDefaultRelationId, AccessShareLock); 0.00 : 76de6b: be 01 00 00 00 mov $0x1,%esi 0.00 : 76de70: bf 2c 0a 00 00 mov $0xa2c,%edi 0.00 : 76de75: e8 e6 fc d2 ff callq 49db60 : adscan = systable_beginscan(adrel, AttrDefaultIndexId, true, 0.00 : 76de7a: 31 c9 xor %ecx,%ecx 0.00 : 76de7c: 49 89 d9 mov %rbx,%r9 0.00 : 76de7f: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 76de85: ba 01 00 00 00 mov $0x1,%edx 0.00 : 76de8a: be 60 0a 00 00 mov $0xa60,%esi 0.00 : 76de8f: 48 89 c7 mov %rax,%rdi : ScanKeyInit(&skey, : Anum_pg_attrdef_adrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : adrel = heap_open(AttrDefaultRelationId, AccessShareLock); 0.00 : 76de92: 48 89 85 d0 fe ff ff mov %rax,-0x130(%rbp) : adscan = systable_beginscan(adrel, AttrDefaultIndexId, true, 0.00 : 76de99: e8 02 6e d3 ff callq 4a4ca0 : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); : pfree(s); 0.00 : 76de9e: 48 8b 8d d8 fe ff ff mov -0x128(%rbp),%rcx : Anum_pg_attrdef_adrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : adrel = heap_open(AttrDefaultRelationId, AccessShareLock); : adscan = systable_beginscan(adrel, AttrDefaultIndexId, true, 0.00 : 76dea5: 48 89 85 c8 fe ff ff mov %rax,-0x138(%rbp) 0.00 : 76deac: c7 85 c4 fe ff ff 00 movl $0x0,-0x13c(%rbp) 0.00 : 76deb3: 00 00 00 : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); : pfree(s); 0.00 : 76deb6: 48 83 c1 10 add $0x10,%rcx 0.00 : 76deba: 48 89 8d 90 fe ff ff mov %rcx,-0x170(%rbp) 0.00 : 76dec1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : adrel = heap_open(AttrDefaultRelationId, AccessShareLock); : adscan = systable_beginscan(adrel, AttrDefaultIndexId, true, : NULL, 1, &skey); : found = 0; : : while (HeapTupleIsValid(htup = systable_getnext(adscan))) 0.00 : 76dec8: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi 0.00 : 76decf: e8 4c 6d d3 ff callq 4a4c20 0.00 : 76ded4: 48 85 c0 test %rax,%rax 0.00 : 76ded7: 48 89 c3 mov %rax,%rbx 0.00 : 76deda: 0f 84 13 04 00 00 je 76e2f3 : { : Form_pg_attrdef adform = (Form_pg_attrdef) GETSTRUCT(htup); 0.00 : 76dee0: 48 8b 7b 10 mov 0x10(%rbx),%rdi : : for (i = 0; i < ndef; i++) 0.00 : 76dee4: 45 85 ed test %r13d,%r13d : NULL, 1, &skey); : found = 0; : : while (HeapTupleIsValid(htup = systable_getnext(adscan))) : { : Form_pg_attrdef adform = (Form_pg_attrdef) GETSTRUCT(htup); 0.00 : 76dee7: 0f b6 47 16 movzbl 0x16(%rdi),%eax 0.00 : 76deeb: 4c 8d 3c 07 lea (%rdi,%rax,1),%r15 : : for (i = 0; i < ndef; i++) 0.00 : 76deef: 74 42 je 76df33 : { : if (adform->adnum != attrdef[i].adnum) 0.00 : 76def1: 4c 8b a5 d8 fe ff ff mov -0x128(%rbp),%r12 0.00 : 76def8: 41 0f b7 77 04 movzwl 0x4(%r15),%esi 0.00 : 76defd: 66 41 3b 34 24 cmp (%r12),%si 0.00 : 76df02: 0f 84 40 02 00 00 je 76e148 : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); : pfree(s); 0.00 : 76df08: 48 8b 95 90 fe ff ff mov -0x170(%rbp),%rdx 0.00 : 76df0f: 31 c9 xor %ecx,%ecx 0.00 : 76df11: eb 18 jmp 76df2b 0.00 : 76df13: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : { : Form_pg_attrdef adform = (Form_pg_attrdef) GETSTRUCT(htup); : : for (i = 0; i < ndef; i++) : { : if (adform->adnum != attrdef[i].adnum) 0.00 : 76df18: 0f b7 02 movzwl (%rdx),%eax 0.00 : 76df1b: 49 89 d4 mov %rdx,%r12 0.00 : 76df1e: 48 83 c2 10 add $0x10,%rdx 0.00 : 76df22: 66 39 f0 cmp %si,%ax 0.00 : 76df25: 0f 84 1d 02 00 00 je 76e148 : : while (HeapTupleIsValid(htup = systable_getnext(adscan))) : { : Form_pg_attrdef adform = (Form_pg_attrdef) GETSTRUCT(htup); : : for (i = 0; i < ndef; i++) 0.00 : 76df2b: 83 c1 01 add $0x1,%ecx 0.00 : 76df2e: 41 39 cd cmp %ecx,%r13d 0.00 : 76df31: 7f e5 jg 76df18 : } : break; : } : : if (i >= ndef) : elog(WARNING, "unexpected attrdef record found for attr %d of rel %s", 0.00 : 76df33: ba 10 16 8d 00 mov $0x8d1610,%edx 0.00 : 76df38: be 38 0e 00 00 mov $0xe38,%esi 0.00 : 76df3d: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76df42: e8 d9 d4 00 00 callq 77b420 0.00 : 76df47: 41 0f bf 57 04 movswl 0x4(%r15),%edx 0.00 : 76df4c: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76df50: be e0 dc 8c 00 mov $0x8cdce0,%esi 0.00 : 76df55: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76df5a: 31 c0 xor %eax,%eax 0.00 : 76df5c: e8 cf d2 00 00 callq 77b230 0.00 : 76df61: e9 62 ff ff ff jmpq 76dec8 : case RELPERSISTENCE_PERMANENT: : relation->rd_backend = InvalidBackendId; : relation->rd_islocaltemp = false; : break; : case RELPERSISTENCE_TEMP: : if (isTempOrTempToastNamespace(relation->rd_rel->relnamespace)) 0.00 : 76df66: 8b 79 40 mov 0x40(%rcx),%edi 0.00 : 76df69: e8 32 ea d7 ff callq 4ec9a0 0.00 : 76df6e: 84 c0 test %al,%al 0.00 : 76df70: 0f 84 e2 05 00 00 je 76e558 : { : relation->rd_backend = MyBackendId; 0.00 : 76df76: 8b 05 8c ab 3f 00 mov 0x3fab8c(%rip),%eax # b68b08 0.00 : 76df7c: 49 8b 4e 30 mov 0x30(%r14),%rcx : relation->rd_islocaltemp = true; 0.00 : 76df80: 41 c6 46 20 01 movb $0x1,0x20(%r14) : relation->rd_islocaltemp = false; : break; : case RELPERSISTENCE_TEMP: : if (isTempOrTempToastNamespace(relation->rd_rel->relnamespace)) : { : relation->rd_backend = MyBackendId; 0.00 : 76df85: 41 89 46 1c mov %eax,0x1c(%r14) 0.00 : 76df89: e9 37 fb ff ff jmpq 76dac5 : /* : * Set up constraint/default info : */ : if (constr->has_not_null || ndef > 0 || relation->rd_rel->relchecks) : { : relation->rd_att->constr = constr; 0.00 : 76df8e: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76df92: 48 8b 8d b0 fe ff ff mov -0x150(%rbp),%rcx 0.00 : 76df99: 48 89 48 10 mov %rcx,0x10(%rax) : constr->defval = attrdef; : constr->num_defval = ndef; : AttrDefaultFetch(relation); : } : else : constr->num_defval = 0; 0.00 : 76df9d: 48 8b bd b0 fe ff ff mov -0x150(%rbp),%rdi 0.00 : 76dfa4: 66 c7 47 10 00 00 movw $0x0,0x10(%rdi) : : if (relation->rd_rel->relchecks > 0) /* CHECKs */ 0.00 : 76dfaa: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76dfae: 0f b7 40 72 movzwl 0x72(%rax),%eax 0.00 : 76dfb2: 66 85 c0 test %ax,%ax 0.00 : 76dfb5: 0f 8e a6 03 00 00 jle 76e361 : { : constr->num_check = relation->rd_rel->relchecks; 0.00 : 76dfbb: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx : constr->check = (ConstrCheck *) 0.00 : 76dfc2: 0f b7 f0 movzwl %ax,%esi : SysScanDesc conscan; : ScanKeyData skey[1]; : HeapTuple htup; : int found = 0; : : ScanKeyInit(&skey[0], 0.00 : 76dfc5: 48 8d 5d 80 lea -0x80(%rbp),%rbx : constr->num_defval = 0; : : if (relation->rd_rel->relchecks > 0) /* CHECKs */ : { : constr->num_check = relation->rd_rel->relchecks; : constr->check = (ConstrCheck *) 0.00 : 76dfc9: 48 8d 34 76 lea (%rsi,%rsi,2),%rsi : Anum_pg_constraint_conrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : conrel = heap_open(ConstraintRelationId, AccessShareLock); : conscan = systable_beginscan(conrel, ConstraintRelidIndexId, true, 0.00 : 76dfcd: 45 31 ff xor %r15d,%r15d : else : constr->num_defval = 0; : : if (relation->rd_rel->relchecks > 0) /* CHECKs */ : { : constr->num_check = relation->rd_rel->relchecks; 0.00 : 76dfd0: 66 89 42 12 mov %ax,0x12(%rdx) : constr->check = (ConstrCheck *) 0.00 : 76dfd4: 48 8b 3d a5 c8 44 00 mov 0x44c8a5(%rip),%rdi # bba880 0.00 : 76dfdb: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 76dfdf: e8 3c b0 02 00 callq 799020 0.00 : 76dfe4: 48 8b 8d b0 fe ff ff mov -0x150(%rbp),%rcx : SysScanDesc conscan; : ScanKeyData skey[1]; : HeapTuple htup; : int found = 0; : : ScanKeyInit(&skey[0], 0.00 : 76dfeb: ba 03 00 00 00 mov $0x3,%edx 0.00 : 76dff0: be 07 00 00 00 mov $0x7,%esi 0.00 : 76dff5: 48 89 df mov %rbx,%rdi : constr->num_defval = 0; : : if (relation->rd_rel->relchecks > 0) /* CHECKs */ : { : constr->num_check = relation->rd_rel->relchecks; : constr->check = (ConstrCheck *) 0.00 : 76dff8: 48 89 41 08 mov %rax,0x8(%rcx) : * Load any check constraints for the relation. : */ : static void : CheckConstraintFetch(Relation relation) : { : ConstrCheck *check = relation->rd_att->constr->check; 0.00 : 76dffc: 49 8b 46 38 mov 0x38(%r14),%rax : SysScanDesc conscan; : ScanKeyData skey[1]; : HeapTuple htup; : int found = 0; : : ScanKeyInit(&skey[0], 0.00 : 76e000: b9 b8 00 00 00 mov $0xb8,%ecx : * Load any check constraints for the relation. : */ : static void : CheckConstraintFetch(Relation relation) : { : ConstrCheck *check = relation->rd_att->constr->check; 0.00 : 76e005: 48 8b 40 10 mov 0x10(%rax),%rax 0.00 : 76e009: 4c 8b 60 08 mov 0x8(%rax),%r12 : int ncheck = relation->rd_att->constr->num_check; 0.00 : 76e00d: 0f b7 40 12 movzwl 0x12(%rax),%eax 0.00 : 76e011: 89 85 ec fe ff ff mov %eax,-0x114(%rbp) : SysScanDesc conscan; : ScanKeyData skey[1]; : HeapTuple htup; : int found = 0; : : ScanKeyInit(&skey[0], 0.00 : 76e017: 45 8b 46 40 mov 0x40(%r14),%r8d 0.00 : 76e01b: e8 60 5b d0 ff callq 473b80 : Anum_pg_constraint_conrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : conrel = heap_open(ConstraintRelationId, AccessShareLock); 0.00 : 76e020: be 01 00 00 00 mov $0x1,%esi 0.00 : 76e025: bf 2e 0a 00 00 mov $0xa2e,%edi 0.00 : 76e02a: e8 31 fb d2 ff callq 49db60 : conscan = systable_beginscan(conrel, ConstraintRelidIndexId, true, 0.00 : 76e02f: 49 89 d9 mov %rbx,%r9 0.00 : 76e032: 41 b8 01 00 00 00 mov $0x1,%r8d 0.00 : 76e038: 31 c9 xor %ecx,%ecx 0.00 : 76e03a: ba 01 00 00 00 mov $0x1,%edx 0.00 : 76e03f: be 69 0a 00 00 mov $0xa69,%esi 0.00 : 76e044: 48 89 c7 mov %rax,%rdi : ScanKeyInit(&skey[0], : Anum_pg_constraint_conrelid, : BTEqualStrategyNumber, F_OIDEQ, : ObjectIdGetDatum(RelationGetRelid(relation))); : : conrel = heap_open(ConstraintRelationId, AccessShareLock); 0.00 : 76e047: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp) : conscan = systable_beginscan(conrel, ConstraintRelidIndexId, true, 0.00 : 76e04e: e8 4d 6c d3 ff callq 4a4ca0 0.00 : 76e053: 49 89 c5 mov %rax,%r13 0.00 : 76e056: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 76e05d: 00 00 00 : NULL, 1, skey); : : while (HeapTupleIsValid(htup = systable_getnext(conscan))) 0.00 : 76e060: 4c 89 ef mov %r13,%rdi 0.00 : 76e063: e8 b8 6b d3 ff callq 4a4c20 0.00 : 76e068: 48 85 c0 test %rax,%rax 0.00 : 76e06b: 48 89 c3 mov %rax,%rbx 0.00 : 76e06e: 0f 84 5a 03 00 00 je 76e3ce : { : Form_pg_constraint conform = (Form_pg_constraint) GETSTRUCT(htup); 0.00 : 76e074: 48 8b 53 10 mov 0x10(%rbx),%rdx 0.00 : 76e078: 0f b6 42 16 movzbl 0x16(%rdx),%eax 0.00 : 76e07c: 48 8d 34 02 lea (%rdx,%rax,1),%rsi : Datum val; : bool isnull; : char *s; : : /* We want check constraints only */ : if (conform->contype != CONSTRAINT_CHECK) 0.00 : 76e080: 80 7e 44 63 cmpb $0x63,0x44(%rsi) 0.00 : 76e084: 75 da jne 76e060 : continue; : : if (found >= ncheck) 0.00 : 76e086: 44 39 bd ec fe ff ff cmp %r15d,-0x114(%rbp) 0.00 : 76e08d: 0f 8e c1 05 00 00 jle 76e654 : elog(ERROR, "unexpected constraint record found for rel %s", : RelationGetRelationName(relation)); : : check[found].ccvalid = conform->convalidated; 0.00 : 76e093: 0f b6 46 47 movzbl 0x47(%rsi),%eax 0.00 : 76e097: 41 88 44 24 10 mov %al,0x10(%r12) : check[found].ccnoinherit = conform->connoinherit; 0.00 : 76e09c: 0f b6 46 60 movzbl 0x60(%rsi),%eax 0.00 : 76e0a0: 41 88 44 24 11 mov %al,0x11(%r12) : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, 0.00 : 76e0a5: 48 8b 3d d4 c7 44 00 mov 0x44c7d4(%rip),%rdi # bba880 0.00 : 76e0ac: e8 3f ae 02 00 callq 798ef0 0.00 : 76e0b1: 49 89 04 24 mov %rax,(%r12) : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e0b5: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 76e0b9: f6 46 14 01 testb $0x1,0x14(%rsi) 0.00 : 76e0bd: 0f 85 f8 01 00 00 jne 76e2bb 0.00 : 76e0c3: 48 8b bd e0 fe ff ff mov -0x120(%rbp),%rdi 0.00 : 76e0ca: 48 8b 57 38 mov 0x38(%rdi),%rdx 0.00 : 76e0ce: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 76e0d2: 48 8b 88 b0 00 00 00 mov 0xb0(%rax),%rcx 0.00 : 76e0d9: 8b 41 54 mov 0x54(%rcx),%eax 0.00 : 76e0dc: 85 c0 test %eax,%eax 0.00 : 76e0de: 0f 88 cd 03 00 00 js 76e4b1 0.00 : 76e0e4: 80 79 5c 00 cmpb $0x0,0x5c(%rcx) 0.00 : 76e0e8: 0f 84 04 04 00 00 je 76e4f2 0.00 : 76e0ee: 0f b7 51 4c movzwl 0x4c(%rcx),%edx 0.00 : 76e0f2: 66 83 fa 08 cmp $0x8,%dx 0.00 : 76e0f6: 0f 84 24 05 00 00 je 76e620 0.00 : 76e0fc: 66 83 fa 04 cmp $0x4,%dx 0.00 : 76e100: 0f 84 2d 05 00 00 je 76e633 0.00 : 76e106: 66 83 fa 02 cmp $0x2,%dx 0.00 : 76e10a: 0f 84 ea 04 00 00 je 76e5fa 0.00 : 76e110: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 76e114: 48 98 cltq 0.00 : 76e116: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 76e11a: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : 76e11e: e9 9b 03 00 00 jmpq 76e4be : relation->rd_att->constr = constr; : : if (ndef > 0) /* DEFAULTs */ : { : if (ndef < relation->rd_rel->relnatts) : constr->defval = (AttrDefault *) 0.00 : 76e123: 48 8b bd a8 fe ff ff mov -0x158(%rbp),%rdi 0.00 : 76e12a: 49 63 f5 movslq %r13d,%rsi 0.00 : 76e12d: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 76e131: e8 ba ab 02 00 callq 798cf0 0.00 : 76e136: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 76e13d: 48 89 02 mov %rax,(%rdx) 0.00 : 76e140: e9 e4 fc ff ff jmpq 76de29 0.00 : 76e145: 0f 1f 00 nopl (%rax) : : for (i = 0; i < ndef; i++) : { : if (adform->adnum != attrdef[i].adnum) : continue; : if (attrdef[i].adbin != NULL) 0.00 : 76e148: 49 83 7c 24 08 00 cmpq $0x0,0x8(%r12) 0.00 : 76e14e: 0f 84 2c 01 00 00 je 76e280 : elog(WARNING, "multiple attrdef records found for attr %s of rel %s", 0.00 : 76e154: ba 10 16 8d 00 mov $0x8d1610,%edx 0.00 : 76e159: be 20 0e 00 00 mov $0xe20,%esi 0.00 : 76e15e: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e163: e8 b8 d2 00 00 callq 77b420 0.00 : 76e168: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76e16c: 49 0f bf 57 04 movswq 0x4(%r15),%rdx 0.00 : 76e171: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76e176: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e17a: be f8 db 8c 00 mov $0x8cdbf8,%esi 0.00 : 76e17f: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 76e183: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 76e188: 31 c0 xor %eax,%eax 0.00 : 76e18a: 48 83 c2 04 add $0x4,%rdx 0.00 : 76e18e: e8 9d d0 00 00 callq 77b230 0.00 : 76e193: 48 8b 7b 10 mov 0x10(%rbx),%rdi : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; : : val = fastgetattr(htup, 0.00 : 76e197: f6 47 14 01 testb $0x1,0x14(%rdi) 0.00 : 76e19b: 0f 85 8f 00 00 00 jne 76e230 0.00 : 76e1a1: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax 0.00 : 76e1a8: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 76e1ac: 48 8b 42 08 mov 0x8(%rdx),%rax 0.00 : 76e1b0: 48 8b 48 10 mov 0x10(%rax),%rcx 0.00 : 76e1b4: 8b 41 54 mov 0x54(%rcx),%eax 0.00 : 76e1b7: 85 c0 test %eax,%eax 0.00 : 76e1b9: 0f 88 d8 00 00 00 js 76e297 0.00 : 76e1bf: 80 79 5c 00 cmpb $0x0,0x5c(%rcx) 0.00 : 76e1c3: 0f 84 e0 00 00 00 je 76e2a9 0.00 : 76e1c9: 0f b7 51 4c movzwl 0x4c(%rcx),%edx 0.00 : 76e1cd: 66 83 fa 08 cmp $0x8,%dx 0.00 : 76e1d1: 0f 84 9f 03 00 00 je 76e576 0.00 : 76e1d7: 66 83 fa 04 cmp $0x4,%dx 0.00 : 76e1db: 0f 84 07 04 00 00 je 76e5e8 0.00 : 76e1e1: 66 83 fa 02 cmp $0x2,%dx 0.00 : 76e1e5: 0f 84 22 04 00 00 je 76e60d 0.00 : 76e1eb: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 76e1ef: 48 98 cltq 0.00 : 76e1f1: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76e1f5: 0f b6 04 10 movzbl (%rax,%rdx,1),%eax 0.00 : 76e1f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); 0.00 : 76e200: 48 89 c7 mov %rax,%rdi 0.00 : 76e203: e8 a8 bf fe ff callq 75a1b0 : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e208: 48 8b 3d 71 c6 44 00 mov 0x44c671(%rip),%rdi # bba880 : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); 0.00 : 76e20f: 48 89 c3 mov %rax,%rbx : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e212: 48 89 c6 mov %rax,%rsi 0.00 : 76e215: e8 d6 ac 02 00 callq 798ef0 : pfree(s); 0.00 : 76e21a: 48 89 df mov %rbx,%rdi : else : { : /* detoast and convert to cstring in caller's context */ : char *s = TextDatumGetCString(val); : : attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e21d: 49 89 44 24 08 mov %rax,0x8(%r12) : pfree(s); 0.00 : 76e222: e8 59 a9 02 00 callq 798b80 0.00 : 76e227: e9 9c fc ff ff jmpq 76dec8 0.00 : 76e22c: 0f 1f 40 00 nopl 0x0(%rax) : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; : : val = fastgetattr(htup, 0.00 : 76e230: f6 47 17 04 testb $0x4,0x17(%rdi) 0.00 : 76e234: 75 56 jne 76e28c : Anum_pg_attrdef_adbin, : adrel->rd_att, &isnull); : if (isnull) : elog(WARNING, "null adbin for attr %s of rel %s", 0.00 : 76e236: ba 10 16 8d 00 mov $0x8d1610,%edx 0.00 : 76e23b: be 2a 0e 00 00 mov $0xe2a,%esi 0.00 : 76e240: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e245: e8 d6 d1 00 00 callq 77b420 0.00 : 76e24a: 49 8b 46 38 mov 0x38(%r14),%rax 0.00 : 76e24e: 49 0f bf 57 04 movswq 0x4(%r15),%rdx 0.00 : 76e253: be b8 dc 8c 00 mov $0x8cdcb8,%esi 0.00 : 76e258: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e25c: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76e261: 48 8b 40 08 mov 0x8(%rax),%rax 0.00 : 76e265: 48 8b 54 d0 f8 mov -0x8(%rax,%rdx,8),%rdx 0.00 : 76e26a: 31 c0 xor %eax,%eax 0.00 : 76e26c: 48 83 c2 04 add $0x4,%rdx 0.00 : 76e270: e8 bb cf 00 00 callq 77b230 0.00 : 76e275: e9 4e fc ff ff jmpq 76dec8 0.00 : 76e27a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (attrdef[i].adbin != NULL) : elog(WARNING, "multiple attrdef records found for attr %s of rel %s", : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; 0.00 : 76e280: 83 85 c4 fe ff ff 01 addl $0x1,-0x13c(%rbp) 0.00 : 76e287: e9 0b ff ff ff jmpq 76e197 : : val = fastgetattr(htup, 0.00 : 76e28c: 48 8b 8d d0 fe ff ff mov -0x130(%rbp),%rcx 0.00 : 76e293: 48 8b 51 38 mov 0x38(%rcx),%rdx 0.00 : 76e297: be 03 00 00 00 mov $0x3,%esi 0.00 : 76e29c: 48 89 df mov %rbx,%rdi 0.00 : 76e29f: e8 ec 16 d0 ff callq 46f990 0.00 : 76e2a4: e9 57 ff ff ff jmpq 76e200 0.00 : 76e2a9: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 76e2ad: 48 98 cltq 0.00 : 76e2af: 48 01 d0 add %rdx,%rax 0.00 : 76e2b2: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76e2b6: e9 45 ff ff ff jmpq 76e200 : check[found].ccnoinherit = conform->connoinherit; : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e2bb: f6 46 19 40 testb $0x40,0x19(%rsi) 0.00 : 76e2bf: 0f 85 e1 01 00 00 jne 76e4a6 : Anum_pg_constraint_conbin, : conrel->rd_att, &isnull); : if (isnull) : elog(ERROR, "null conbin for rel %s", 0.00 : 76e2c5: ba 30 16 8d 00 mov $0x8d1630,%edx 0.00 : 76e2ca: be 74 0e 00 00 mov $0xe74,%esi 0.00 : 76e2cf: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e2d4: e8 47 d1 00 00 callq 77b420 0.00 : 76e2d9: 49 8b 56 30 mov 0x30(%r14),%rdx 0.00 : 76e2dd: be a4 13 7c 00 mov $0x7c13a4,%esi 0.00 : 76e2e2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76e2e7: 31 c0 xor %eax,%eax 0.00 : 76e2e9: e8 42 cf 00 00 callq 77b230 0.00 : 76e2ee: e8 dd b1 cf ff callq 4694d0 : if (i >= ndef) : elog(WARNING, "unexpected attrdef record found for attr %d of rel %s", : adform->adnum, RelationGetRelationName(relation)); : } : : systable_endscan(adscan); 0.00 : 76e2f3: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi 0.00 : 76e2fa: e8 21 68 d3 ff callq 4a4b20 : heap_close(adrel, AccessShareLock); 0.00 : 76e2ff: 48 8b bd d0 fe ff ff mov -0x130(%rbp),%rdi 0.00 : 76e306: be 01 00 00 00 mov $0x1,%esi 0.00 : 76e30b: e8 b0 f6 d2 ff callq 49d9c0 : : if (found != ndef) 0.00 : 76e310: 44 3b ad c4 fe ff ff cmp -0x13c(%rbp),%r13d 0.00 : 76e317: 0f 84 8d fc ff ff je 76dfaa : elog(WARNING, "%d attrdef record(s) missing for rel %s", 0.00 : 76e31d: ba 10 16 8d 00 mov $0x8d1610,%edx 0.00 : 76e322: be 40 0e 00 00 mov $0xe40,%esi 0.00 : 76e327: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e32c: e8 ef d0 00 00 callq 77b420 0.00 : 76e331: 44 2b ad c4 fe ff ff sub -0x13c(%rbp),%r13d 0.00 : 76e338: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e33c: 31 c0 xor %eax,%eax 0.00 : 76e33e: be 30 dc 8c 00 mov $0x8cdc30,%esi 0.00 : 76e343: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76e348: 44 89 ea mov %r13d,%edx 0.00 : 76e34b: e8 e0 ce 00 00 callq 77b230 : AttrDefaultFetch(relation); : } : else : constr->num_defval = 0; : : if (relation->rd_rel->relchecks > 0) /* CHECKs */ 0.00 : 76e350: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76e354: 0f b7 40 72 movzwl 0x72(%rax),%eax 0.00 : 76e358: 66 85 c0 test %ax,%ax 0.00 : 76e35b: 0f 8f 5a fc ff ff jg 76dfbb : MemoryContextAllocZero(CacheMemoryContext, : constr->num_check * sizeof(ConstrCheck)); : CheckConstraintFetch(relation); : } : else : constr->num_check = 0; 0.00 : 76e361: 48 8b 95 b0 fe ff ff mov -0x150(%rbp),%rdx 0.00 : 76e368: 66 c7 42 12 00 00 movw $0x0,0x12(%rdx) : RelationBuildTupleDesc(relation); : : /* : * Fetch rules and triggers that affect this relation : */ : if (relation->rd_rel->relhasrules) 0.00 : 76e36e: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e372: 80 79 76 00 cmpb $0x0,0x76(%rcx) 0.00 : 76e376: 0f 84 c3 f9 ff ff je 76dd3f : RelationBuildRuleLock(relation); 0.00 : 76e37c: 4c 89 f7 mov %r14,%rdi 0.00 : 76e37f: e8 1c de ff ff callq 76c1a0 0.00 : 76e384: 49 8b 4e 30 mov 0x30(%r14),%rcx : { : relation->rd_rules = NULL; : relation->rd_rulescxt = NULL; : } : : if (relation->rd_rel->relhastriggers) 0.00 : 76e388: 80 79 77 00 cmpb $0x0,0x77(%rcx) 0.00 : 76e38c: 0f 84 c7 f9 ff ff je 76dd59 : RelationBuildTriggers(relation); 0.00 : 76e392: 4c 89 f7 mov %r14,%rdi 0.00 : 76e395: e8 46 60 e2 ff callq 5943e0 0.00 : 76e39a: 49 8b 4e 30 mov 0x30(%r14),%rcx : else : relation->trigdesc = NULL; : : if (relation->rd_rel->relrowsecurity) 0.00 : 76e39e: 80 79 79 00 cmpb $0x0,0x79(%rcx) 0.00 : 76e3a2: 0f 84 c3 f9 ff ff je 76dd6b : RelationBuildRowSecurity(relation); 0.00 : 76e3a8: 4c 89 f7 mov %r14,%rdi 0.00 : 76e3ab: e8 60 8b e0 ff callq 576f10 0.00 : 76e3b0: 49 8b 4e 30 mov 0x30(%r14),%rcx : relation->rsdesc = NULL; : : /* : * if it's an index, initialize index-related information : */ : if (OidIsValid(relation->rd_rel->relam)) 0.00 : 76e3b4: 44 8b 79 50 mov 0x50(%rcx),%r15d 0.00 : 76e3b8: 45 85 ff test %r15d,%r15d 0.00 : 76e3bb: 0f 84 bf f9 ff ff je 76dd80 : RelationInitIndexAccessInfo(relation); 0.00 : 76e3c1: 4c 89 f7 mov %r14,%rdi 0.00 : 76e3c4: e8 a7 eb ff ff callq 76cf70 0.00 : 76e3c9: e9 b2 f9 ff ff jmpq 76dd80 : pfree(s); : : found++; : } : : systable_endscan(conscan); 0.00 : 76e3ce: 4c 89 ef mov %r13,%rdi 0.00 : 76e3d1: e8 4a 67 d3 ff callq 4a4b20 : heap_close(conrel, AccessShareLock); 0.00 : 76e3d6: 48 8b bd e0 fe ff ff mov -0x120(%rbp),%rdi 0.00 : 76e3dd: be 01 00 00 00 mov $0x1,%esi 0.00 : 76e3e2: e8 d9 f5 d2 ff callq 49d9c0 : : if (found != ncheck) 0.00 : 76e3e7: 44 39 bd ec fe ff ff cmp %r15d,-0x114(%rbp) 0.00 : 76e3ee: 0f 84 3d f9 ff ff je 76dd31 : elog(ERROR, "%d constraint record(s) missing for rel %s", 0.00 : 76e3f4: ba 30 16 8d 00 mov $0x8d1630,%edx 0.00 : 76e3f9: be 83 0e 00 00 mov $0xe83,%esi 0.00 : 76e3fe: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e403: e8 18 d0 00 00 callq 77b420 0.00 : 76e408: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e40c: 44 29 bd ec fe ff ff sub %r15d,-0x114(%rbp) 0.00 : 76e413: be 88 dc 8c 00 mov $0x8cdc88,%esi 0.00 : 76e418: 8b 95 ec fe ff ff mov -0x114(%rbp),%edx 0.00 : 76e41e: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76e423: 31 c0 xor %eax,%eax 0.00 : 76e425: e8 06 ce 00 00 callq 77b230 0.00 : 76e42a: e8 a1 b0 cf ff callq 4694d0 0.00 : 76e42f: 90 nop : * entry for the same OID. The already-present entry should have refcount : * zero (else somebody forgot to close it); in the event that it doesn't, : * we'll elog a WARNING and leak the already-present entry. : */ : if (insertIt) : RelationCacheInsert(relation, true); 0.00 : 76e430: 48 8b 3d e9 a0 44 00 mov 0x44a0e9(%rip),%rdi # bb8520 0.00 : 76e437: 48 8d 4d cf lea -0x31(%rbp),%rcx 0.00 : 76e43b: 49 8d 76 40 lea 0x40(%r14),%rsi 0.00 : 76e43f: ba 01 00 00 00 mov $0x1,%edx 0.00 : 76e444: e8 57 62 01 00 callq 7846a0 0.00 : 76e449: 80 7d cf 00 cmpb $0x0,-0x31(%rbp) 0.00 : 76e44d: 0f 84 36 01 00 00 je 76e589 0.00 : 76e453: 48 8b 58 08 mov 0x8(%rax),%rbx 0.00 : 76e457: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 76e45b: 44 8b 6b 18 mov 0x18(%rbx),%r13d 0.00 : 76e45f: 45 85 ed test %r13d,%r13d 0.00 : 76e462: 0f 84 dd 01 00 00 je 76e645 0.00 : 76e468: 44 8b 25 cd a6 3f 00 mov 0x3fa6cd(%rip),%r12d # b68b3c 0.00 : 76e46f: 45 85 e4 test %r12d,%r12d 0.00 : 76e472: 0f 84 48 f9 ff ff je 76ddc0 0.00 : 76e478: ba d0 15 8d 00 mov $0x8d15d0,%edx 0.00 : 76e47d: be 48 04 00 00 mov $0x448,%esi 0.00 : 76e482: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e487: e8 94 cf 00 00 callq 77b420 0.00 : 76e48c: 48 8b 53 30 mov 0x30(%rbx),%rdx 0.00 : 76e490: be 78 da 8c 00 mov $0x8cda78,%esi 0.00 : 76e495: bf 13 00 00 00 mov $0x13,%edi 0.00 : 76e49a: 31 c0 xor %eax,%eax 0.00 : 76e49c: e8 8f cd 00 00 callq 77b230 0.00 : 76e4a1: e9 1a f9 ff ff jmpq 76ddc0 : check[found].ccnoinherit = conform->connoinherit; : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e4a6: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax 0.00 : 76e4ad: 48 8b 50 38 mov 0x38(%rax),%rdx 0.00 : 76e4b1: be 17 00 00 00 mov $0x17,%esi 0.00 : 76e4b6: 48 89 df mov %rbx,%rdi 0.00 : 76e4b9: e8 d2 14 d0 ff callq 46f990 : if (isnull) : elog(ERROR, "null conbin for rel %s", : RelationGetRelationName(relation)); : : /* detoast and convert to cstring in caller's context */ : s = TextDatumGetCString(val); 0.00 : 76e4be: 48 89 c7 mov %rax,%rdi : check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, s); : pfree(s); : : found++; 0.00 : 76e4c1: 41 83 c7 01 add $0x1,%r15d : if (isnull) : elog(ERROR, "null conbin for rel %s", : RelationGetRelationName(relation)); : : /* detoast and convert to cstring in caller's context */ : s = TextDatumGetCString(val); 0.00 : 76e4c5: e8 e6 bc fe ff callq 75a1b0 : check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e4ca: 48 8b 3d af c3 44 00 mov 0x44c3af(%rip),%rdi # bba880 : if (isnull) : elog(ERROR, "null conbin for rel %s", : RelationGetRelationName(relation)); : : /* detoast and convert to cstring in caller's context */ : s = TextDatumGetCString(val); 0.00 : 76e4d1: 48 89 c3 mov %rax,%rbx : check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e4d4: 48 89 c6 mov %rax,%rsi 0.00 : 76e4d7: e8 14 aa 02 00 callq 798ef0 : pfree(s); 0.00 : 76e4dc: 48 89 df mov %rbx,%rdi : elog(ERROR, "null conbin for rel %s", : RelationGetRelationName(relation)); : : /* detoast and convert to cstring in caller's context */ : s = TextDatumGetCString(val); : check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, s); 0.00 : 76e4df: 49 89 44 24 08 mov %rax,0x8(%r12) : pfree(s); : : found++; 0.00 : 76e4e4: 49 83 c4 18 add $0x18,%r12 : RelationGetRelationName(relation)); : : /* detoast and convert to cstring in caller's context */ : s = TextDatumGetCString(val); : check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, s); : pfree(s); 0.00 : 76e4e8: e8 93 a6 02 00 callq 798b80 0.00 : 76e4ed: e9 6e fb ff ff jmpq 76e060 : check[found].ccnoinherit = conform->connoinherit; : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e4f2: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 76e4f6: 48 98 cltq 0.00 : 76e4f8: 48 01 d0 add %rdx,%rax 0.00 : 76e4fb: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 76e4ff: eb bd jmp 76e4be : constr->has_not_null = true; : : if (attp->atthasdef) : { : if (attrdef == NULL) : attrdef = (AttrDefault *) 0.00 : 76e501: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76e505: 48 8b 3d 74 c3 44 00 mov 0x44c374(%rip),%rdi # bba880 0.00 : 76e50c: 48 0f bf 70 70 movswq 0x70(%rax),%rsi 0.00 : 76e511: 48 c1 e6 04 shl $0x4,%rsi 0.00 : 76e515: e8 06 ab 02 00 callq 799020 0.00 : 76e51a: 48 89 85 a8 fe ff ff mov %rax,-0x158(%rbp) 0.00 : 76e521: e9 5d f7 ff ff jmpq 76dc83 : : attp = (Form_pg_attribute) GETSTRUCT(pg_attribute_tuple); : : if (attp->attnum <= 0 || : attp->attnum > relation->rd_rel->relnatts) : elog(ERROR, "invalid attribute number %d for %s", 0.00 : 76e526: ba f0 15 8d 00 mov $0x8d15f0,%edx 0.00 : 76e52b: be 19 02 00 00 mov $0x219,%esi 0.00 : 76e530: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e535: e8 e6 ce 00 00 callq 77b420 0.00 : 76e53a: 0f bf 53 4e movswl 0x4e(%rbx),%edx 0.00 : 76e53e: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e542: be a0 db 8c 00 mov $0x8cdba0,%esi 0.00 : 76e547: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76e54c: 31 c0 xor %eax,%eax 0.00 : 76e54e: e8 dd cc 00 00 callq 77b230 0.00 : 76e553: e8 78 af cf ff callq 4694d0 : * table to be "ours"; this is why we need the separate : * rd_islocaltemp flag. The pg_class entry will get flushed : * if/when we clean out the corresponding temp table namespace : * in preparation for using it. : */ : relation->rd_backend = 0.00 : 76e558: 49 8b 46 30 mov 0x30(%r14),%rax 0.00 : 76e55c: 8b 78 40 mov 0x40(%rax),%edi 0.00 : 76e55f: e8 ac 04 d8 ff callq 4eea10 : GetTempNamespaceBackendId(relation->rd_rel->relnamespace); : Assert(relation->rd_backend != InvalidBackendId); : relation->rd_islocaltemp = false; 0.00 : 76e564: 41 c6 46 20 00 movb $0x0,0x20(%r14) : * table to be "ours"; this is why we need the separate : * rd_islocaltemp flag. The pg_class entry will get flushed : * if/when we clean out the corresponding temp table namespace : * in preparation for using it. : */ : relation->rd_backend = 0.00 : 76e569: 41 89 46 1c mov %eax,0x1c(%r14) 0.00 : 76e56d: 49 8b 4e 30 mov 0x30(%r14),%rcx 0.00 : 76e571: e9 4f f5 ff ff jmpq 76dac5 : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; : : val = fastgetattr(htup, 0.00 : 76e576: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 76e57a: 48 98 cltq 0.00 : 76e57c: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76e580: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 76e584: e9 77 fc ff ff jmpq 76e200 : * entry for the same OID. The already-present entry should have refcount : * zero (else somebody forgot to close it); in the event that it doesn't, : * we'll elog a WARNING and leak the already-present entry. : */ : if (insertIt) : RelationCacheInsert(relation, true); 0.00 : 76e589: 4c 89 70 08 mov %r14,0x8(%rax) 0.00 : 76e58d: e9 2e f8 ff ff jmpq 76ddc0 : } : : /* : * end the scan and close the attribute relation : */ : systable_endscan(pg_attribute_scan); 0.00 : 76e592: 4c 89 ff mov %r15,%rdi 0.00 : 76e595: e8 86 65 d3 ff callq 4a4b20 : heap_close(pg_attribute_desc, AccessShareLock); 0.00 : 76e59a: 48 8b bd b8 fe ff ff mov -0x148(%rbp),%rdi 0.00 : 76e5a1: be 01 00 00 00 mov $0x1,%esi 0.00 : 76e5a6: e8 15 f4 d2 ff callq 49d9c0 : : if (need != 0) 0.00 : 76e5ab: 85 db test %ebx,%ebx 0.00 : 76e5ad: 0f 84 1b f7 ff ff je 76dcce : elog(ERROR, "catalog is missing %d attribute(s) for relid %u", 0.00 : 76e5b3: ba f0 15 8d 00 mov $0x8d15f0,%edx 0.00 : 76e5b8: be 3b 02 00 00 mov $0x23b,%esi 0.00 : 76e5bd: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e5c2: e8 59 ce 00 00 callq 77b420 0.00 : 76e5c7: 41 8b 4e 40 mov 0x40(%r14),%ecx 0.00 : 76e5cb: 89 da mov %ebx,%edx 0.00 : 76e5cd: be c8 db 8c 00 mov $0x8cdbc8,%esi 0.00 : 76e5d2: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76e5d7: 31 c0 xor %eax,%eax 0.00 : 76e5d9: e8 52 cc 00 00 callq 77b230 0.00 : 76e5de: e8 ed ae cf ff callq 4694d0 0.00 : 76e5e3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; : : val = fastgetattr(htup, 0.00 : 76e5e8: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 76e5ec: 48 98 cltq 0.00 : 76e5ee: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76e5f2: 8b 04 10 mov (%rax,%rdx,1),%eax 0.00 : 76e5f5: e9 06 fc ff ff jmpq 76e200 : check[found].ccnoinherit = conform->connoinherit; : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e5fa: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 76e5fe: 48 98 cltq 0.00 : 76e600: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 76e604: 0f b7 04 10 movzwl (%rax,%rdx,1),%eax 0.00 : 76e608: e9 b1 fe ff ff jmpq 76e4be : NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), : RelationGetRelationName(relation)); : else : found++; : : val = fastgetattr(htup, 0.00 : 76e60d: 0f b6 57 16 movzbl 0x16(%rdi),%edx 0.00 : 76e611: 48 98 cltq 0.00 : 76e613: 48 8d 04 07 lea (%rdi,%rax,1),%rax 0.00 : 76e617: 0f b7 04 10 movzwl (%rax,%rdx,1),%eax 0.00 : 76e61b: e9 e0 fb ff ff jmpq 76e200 : check[found].ccnoinherit = conform->connoinherit; : check[found].ccname = MemoryContextStrdup(CacheMemoryContext, : NameStr(conform->conname)); : : /* Grab and test conbin is actually set */ : val = fastgetattr(htup, 0.00 : 76e620: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 76e624: 48 98 cltq 0.00 : 76e626: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 76e62a: 48 8b 04 10 mov (%rax,%rdx,1),%rax 0.00 : 76e62e: e9 8b fe ff ff jmpq 76e4be 0.00 : 76e633: 0f b6 56 16 movzbl 0x16(%rsi),%edx 0.00 : 76e637: 48 98 cltq 0.00 : 76e639: 48 8d 04 06 lea (%rsi,%rax,1),%rax 0.00 : 76e63d: 8b 04 10 mov (%rax,%rdx,1),%eax 0.00 : 76e640: e9 79 fe ff ff jmpq 76e4be : * entry for the same OID. The already-present entry should have refcount : * zero (else somebody forgot to close it); in the event that it doesn't, : * we'll elog a WARNING and leak the already-present entry. : */ : if (insertIt) : RelationCacheInsert(relation, true); 0.00 : 76e645: 31 f6 xor %esi,%esi 0.00 : 76e647: 48 89 df mov %rbx,%rdi 0.00 : 76e64a: e8 21 cc ff ff callq 76b270 0.00 : 76e64f: e9 6c f7 ff ff jmpq 76ddc0 : /* We want check constraints only */ : if (conform->contype != CONSTRAINT_CHECK) : continue; : : if (found >= ncheck) : elog(ERROR, "unexpected constraint record found for rel %s", 0.00 : 76e654: ba 30 16 8d 00 mov $0x8d1630,%edx 0.00 : 76e659: be 67 0e 00 00 mov $0xe67,%esi 0.00 : 76e65e: bf c8 d7 8c 00 mov $0x8cd7c8,%edi 0.00 : 76e663: e8 b8 cd 00 00 callq 77b420 0.00 : 76e668: 49 8b 56 30 mov 0x30(%r14),%rdx 0.00 : 76e66c: be 58 dc 8c 00 mov $0x8cdc58,%esi 0.00 : 76e671: bf 14 00 00 00 mov $0x14,%edi 0.00 : 76e676: 31 c0 xor %eax,%eax 0.00 : 76e678: e8 b3 cb 00 00 callq 77b230 0.00 : 76e67d: e8 4e ae cf ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:1797 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000076f760 : : * behavior; we ought to fix it someday, but for now, just disable : * reference count ownership tracking in bootstrap mode. : */ : void : RelationIncrementReferenceCount(Relation rel) : { 0.00 : 76f760: 55 push %rbp 0.00 : 76f761: 48 89 e5 mov %rsp,%rbp /home/Computational/mark/src/postgres-andres/src/backend/utils/cache/relcache.c:1797 100.00 : 76f764: 53 push %rbx 0.00 : 76f765: 48 89 fb mov %rdi,%rbx 0.00 : 76f768: 48 83 ec 08 sub $0x8,%rsp : ResourceOwnerEnlargeRelationRefs(CurrentResourceOwner); 0.00 : 76f76c: 48 8b 3d 4d b1 44 00 mov 0x44b14d(%rip),%rdi # bba8c0 0.00 : 76f773: e8 48 b5 02 00 callq 79acc0 : rel->rd_refcnt += 1; 0.00 : 76f778: 83 43 18 01 addl $0x1,0x18(%rbx) : if (!IsBootstrapProcessingMode()) 0.00 : 76f77c: 8b 05 ba 93 3f 00 mov 0x3f93ba(%rip),%eax # b68b3c 0.00 : 76f782: 85 c0 test %eax,%eax 0.00 : 76f784: 75 0a jne 76f790 : ResourceOwnerRememberRelationRef(CurrentResourceOwner, rel); : } 0.00 : 76f786: 48 83 c4 08 add $0x8,%rsp 0.00 : 76f78a: 5b pop %rbx 0.00 : 76f78b: c9 leaveq 0.00 : 76f78c: c3 retq 0.00 : 76f78d: 0f 1f 00 nopl (%rax) : RelationIncrementReferenceCount(Relation rel) : { : ResourceOwnerEnlargeRelationRefs(CurrentResourceOwner); : rel->rd_refcnt += 1; : if (!IsBootstrapProcessingMode()) : ResourceOwnerRememberRelationRef(CurrentResourceOwner, rel); 0.00 : 76f790: 48 8b 3d 29 b1 44 00 mov 0x44b129(%rip),%rdi # bba8c0 0.00 : 76f797: 48 89 de mov %rbx,%rsi : } 0.00 : 76f79a: 48 83 c4 08 add $0x8,%rsp 0.00 : 76f79e: 5b pop %rbx 0.00 : 76f79f: c9 leaveq : RelationIncrementReferenceCount(Relation rel) : { : ResourceOwnerEnlargeRelationRefs(CurrentResourceOwner); : rel->rd_refcnt += 1; : if (!IsBootstrapProcessingMode()) : ResourceOwnerRememberRelationRef(CurrentResourceOwner, rel); 0.00 : 76f7a0: e9 8b aa 02 00 jmpq 79a230 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2238 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077ed10 : : *------------------------------------------------------------------------- : */ : : struct varlena * : pg_detoast_datum(struct varlena * datum) : { 0.00 : 77ed10: 55 push %rbp : if (VARATT_IS_EXTENDED(datum)) 0.00 : 77ed11: f6 07 03 testb $0x3,(%rdi) : *------------------------------------------------------------------------- : */ : : struct varlena * : pg_detoast_datum(struct varlena * datum) : { 0.00 : 77ed14: 48 89 e5 mov %rsp,%rbp : if (VARATT_IS_EXTENDED(datum)) /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2238 100.00 : 77ed17: 75 07 jne 77ed20 : return heap_tuple_untoast_attr(datum); : else : return datum; : } 0.00 : 77ed19: 48 89 f8 mov %rdi,%rax 0.00 : 77ed1c: c9 leaveq 0.00 : 77ed1d: c3 retq 0.00 : 77ed1e: 66 90 xchg %ax,%ax 0.00 : 77ed20: c9 leaveq : : struct varlena * : pg_detoast_datum(struct varlena * datum) : { : if (VARATT_IS_EXTENDED(datum)) : return heap_tuple_untoast_attr(datum); 0.00 : 77ed21: e9 2a 41 d2 ff jmpq 4a2e50 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2264 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000077f290 : : } : } : : struct varlena * : pg_detoast_datum_slice(struct varlena * datum, int32 first, int32 count) : { 0.00 : 77f290: 55 push %rbp 0.00 : 77f291: 48 89 e5 mov %rsp,%rbp : /* Only get the specified portion from the toast rel */ : return heap_tuple_untoast_attr_slice(datum, first, count); : } 0.00 : 77f294: c9 leaveq : : struct varlena * : pg_detoast_datum_slice(struct varlena * datum, int32 first, int32 count) : { : /* Only get the specified portion from the toast rel */ : return heap_tuple_untoast_attr_slice(datum, first, count); /home/Computational/mark/src/postgres-andres/src/backend/utils/fmgr/fmgr.c:2264 100.00 : 77f295: e9 d6 39 d2 ff jmpq 4a2c70 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:527 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007848b0 : : * on the small side and let the table grow if it's exceeded. An overly : * large nelem will penalize hash_seq_search speed without buying much. : */ : HTAB * : hash_create(const char *tabname, long nelem, HASHCTL *info, int flags) : { 0.00 : 7848b0: 55 push %rbp : * a memory context created specially for the hash table --- this makes : * hash_destroy very simple. The memory context is made a child of either : * a context specified by the caller, or TopMemoryContext if nothing is : * specified. : */ : if (flags & HASH_SHARED_MEM) 0.00 : 7848b1: 89 c8 mov %ecx,%eax : * on the small side and let the table grow if it's exceeded. An overly : * large nelem will penalize hash_seq_search speed without buying much. : */ : HTAB * : hash_create(const char *tabname, long nelem, HASHCTL *info, int flags) : { 0.00 : 7848b3: 48 89 e5 mov %rsp,%rbp 0.00 : 7848b6: 41 57 push %r15 0.00 : 7848b8: 41 56 push %r14 0.00 : 7848ba: 41 55 push %r13 0.00 : 7848bc: 41 54 push %r12 0.00 : 7848be: 49 89 fc mov %rdi,%r12 0.00 : 7848c1: 53 push %rbx 0.00 : 7848c2: 48 89 d3 mov %rdx,%rbx 0.00 : 7848c5: 48 83 ec 18 sub $0x18,%rsp : * a memory context created specially for the hash table --- this makes : * hash_destroy very simple. The memory context is made a child of either : * a context specified by the caller, or TopMemoryContext if nothing is : * specified. : */ : if (flags & HASH_SHARED_MEM) 0.00 : 7848c9: 83 e0 40 and $0x40,%eax : * on the small side and let the table grow if it's exceeded. An overly : * large nelem will penalize hash_seq_search speed without buying much. : */ : HTAB * : hash_create(const char *tabname, long nelem, HASHCTL *info, int flags) : { 0.00 : 7848cc: 48 89 75 c8 mov %rsi,-0x38(%rbp) 0.00 : 7848d0: 89 4d c4 mov %ecx,-0x3c(%rbp) : * a memory context created specially for the hash table --- this makes : * hash_destroy very simple. The memory context is made a child of either : * a context specified by the caller, or TopMemoryContext if nothing is : * specified. : */ : if (flags & HASH_SHARED_MEM) 0.00 : 7848d3: 89 45 d4 mov %eax,-0x2c(%rbp) 0.00 : 7848d6: 0f 84 d4 03 00 00 je 784cb0 : { : /* Set up to allocate the hash header */ : CurrentDynaHashCxt = TopMemoryContext; 0.00 : 7848dc: 48 8b 05 85 5f 43 00 mov 0x435f85(%rip),%rax # bba868 0.00 : 7848e3: 48 89 05 de 52 43 00 mov %rax,0x4352de(%rip) # bb9bc8 : ALLOCSET_DEFAULT_INITSIZE, : ALLOCSET_DEFAULT_MAXSIZE); : } : : /* Initialize the hash header, plus a copy of the table name */ : hashp = (HTAB *) DynaHashAlloc(sizeof(HTAB) + strlen(tabname) +1); 0.00 : 7848ea: 4c 89 e7 mov %r12,%rdi 0.00 : 7848ed: e8 5e 4f ce ff callq 469850 : : static void * : DynaHashAlloc(Size size) : { : Assert(MemoryContextIsValid(CurrentDynaHashCxt)); : return MemoryContextAlloc(CurrentDynaHashCxt, size); 0.00 : 7848f2: 48 8b 3d cf 52 43 00 mov 0x4352cf(%rip),%rdi # bb9bc8 0.00 : 7848f9: 48 8d 70 61 lea 0x61(%rax),%rsi 0.00 : 7848fd: e8 8e 45 01 00 callq 798e90 : ALLOCSET_DEFAULT_MAXSIZE); : } : : /* Initialize the hash header, plus a copy of the table name */ : hashp = (HTAB *) DynaHashAlloc(sizeof(HTAB) + strlen(tabname) +1); : MemSet(hashp, 0, sizeof(HTAB)); 0.00 : 784902: a8 07 test $0x7,%al : : static void * : DynaHashAlloc(Size size) : { : Assert(MemoryContextIsValid(CurrentDynaHashCxt)); : return MemoryContextAlloc(CurrentDynaHashCxt, size); 0.00 : 784904: 49 89 c5 mov %rax,%r13 : ALLOCSET_DEFAULT_MAXSIZE); : } : : /* Initialize the hash header, plus a copy of the table name */ : hashp = (HTAB *) DynaHashAlloc(sizeof(HTAB) + strlen(tabname) +1); : MemSet(hashp, 0, sizeof(HTAB)); 0.00 : 784907: 0f 85 23 03 00 00 jne 784c30 0.00 : 78490d: 49 8d 7d 60 lea 0x60(%r13),%rdi 0.00 : 784911: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 784918: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 78491f: 48 83 c0 08 add $0x8,%rax 0.00 : 784923: 48 39 f8 cmp %rdi,%rax 0.00 : 784926: 75 f0 jne 784918 : : hashp->tabname = (char *) (hashp + 1); 0.00 : 784928: 49 89 7d 38 mov %rdi,0x38(%r13) : strcpy(hashp->tabname, tabname); 0.00 : 78492c: 4c 89 e6 mov %r12,%rsi 0.00 : 78492f: e8 4c 54 ce ff callq 469d80 : : if (flags & HASH_FUNCTION) 0.00 : 784934: f6 45 c4 10 testb $0x10,-0x3c(%rbp) 0.00 : 784938: 0f 84 e2 03 00 00 je 784d20 : hashp->hash = info->hash; 0.00 : 78493e: 48 8b 43 38 mov 0x38(%rbx),%rax 0.00 : 784942: 49 89 45 10 mov %rax,0x10(%r13) : /* : * If you don't specify a match function, it defaults to string_compare if : * you used string_hash (either explicitly or by default) and to memcmp : * otherwise. (Prior to PostgreSQL 7.4, memcmp was always used.) : */ : if (flags & HASH_COMPARE) 0.00 : 784946: f7 45 c4 00 04 00 00 testl $0x400,-0x3c(%rbp) 0.00 : 78494d: 0f 84 a5 03 00 00 je 784cf8 : hashp->match = info->match; 0.00 : 784953: 48 8b 43 40 mov 0x40(%rbx),%rax 0.00 : 784957: 49 89 45 18 mov %rax,0x18(%r13) : hashp->match = memcmp; : : /* : * Similarly, the key-copying function defaults to strlcpy or memcpy. : */ : if (flags & HASH_KEYCOPY) 0.00 : 78495b: f7 45 c4 00 08 00 00 testl $0x800,-0x3c(%rbp) 0.00 : 784962: 0f 84 28 03 00 00 je 784c90 : hashp->keycopy = info->keycopy; 0.00 : 784968: 48 8b 43 48 mov 0x48(%rbx),%rax 0.00 : 78496c: 49 89 45 20 mov %rax,0x20(%r13) : else if (hashp->hash == string_hash) : hashp->keycopy = (HashCopyFunc) strlcpy; : else : hashp->keycopy = memcpy; : : if (flags & HASH_ALLOC) 0.00 : 784970: f7 45 c4 00 01 00 00 testl $0x100,-0x3c(%rbp) 0.00 : 784977: 0f 84 d3 02 00 00 je 784c50 : hashp->alloc = info->alloc; 0.00 : 78497d: 48 8b 43 50 mov 0x50(%rbx),%rax 0.00 : 784981: 49 89 45 28 mov %rax,0x28(%r13) : else : hashp->alloc = DynaHashAlloc; : : if (flags & HASH_SHARED_MEM) 0.00 : 784985: 8b 4d d4 mov -0x2c(%rbp),%ecx 0.00 : 784988: 85 c9 test %ecx,%ecx 0.00 : 78498a: 0f 84 d3 02 00 00 je 784c63 : /* : * ctl structure and directory are preallocated for shared memory : * tables. Note that HASH_DIRSIZE and HASH_ALLOC had better be set as : * well. : */ : hashp->hctl = info->hctl; 0.00 : 784990: 48 8b 53 60 mov 0x60(%rbx),%rdx 0.00 : 784994: 49 89 55 00 mov %rdx,0x0(%r13) : hashp->dir = (HASHSEGMENT *) (((char *) info->hctl) + sizeof(HASHHDR)); 0.00 : 784998: 48 8b 43 60 mov 0x60(%rbx),%rax : hashp->hcxt = NULL; 0.00 : 78499c: 49 c7 45 30 00 00 00 movq $0x0,0x30(%r13) 0.00 : 7849a3: 00 : hashp->isshared = true; 0.00 : 7849a4: 41 c6 45 40 01 movb $0x1,0x40(%r13) : * ctl structure and directory are preallocated for shared memory : * tables. Note that HASH_DIRSIZE and HASH_ALLOC had better be set as : * well. : */ : hashp->hctl = info->hctl; : hashp->dir = (HASHSEGMENT *) (((char *) info->hctl) + sizeof(HASHHDR)); 0.00 : 7849a9: 48 83 c0 70 add $0x70,%rax 0.00 : 7849ad: 49 89 45 08 mov %rax,0x8(%r13) : hashp->hcxt = NULL; : hashp->isshared = true; : : /* hash table already exists, we're just attaching to it */ : if (flags & HASH_ATTACH) 0.00 : 7849b1: 80 7d c4 00 cmpb $0x0,-0x3c(%rbp) 0.00 : 7849b5: 0f 88 d5 03 00 00 js 784d90 : hashp->dir = NULL; : hashp->hcxt = CurrentDynaHashCxt; : hashp->isshared = false; : } : : if (!hashp->hctl) 0.00 : 7849bb: 49 83 7d 00 00 cmpq $0x0,0x0(%r13) 0.00 : 7849c0: 0f 84 9a 04 00 00 je 784e60 : * Set default HASHHDR parameters. : */ : static void : hdefault(HTAB *hashp) : { : HASHHDR *hctl = hashp->hctl; 0.00 : 7849c6: 49 8b 75 00 mov 0x0(%r13),%rsi : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : } : : hashp->frozen = false; 0.00 : 7849ca: 41 c6 45 42 00 movb $0x0,0x42(%r13) : static void : hdefault(HTAB *hashp) : { : HASHHDR *hctl = hashp->hctl; : : MemSet(hctl, 0, sizeof(HASHHDR)); 0.00 : 7849cf: 40 f6 c6 07 test $0x7,%sil 0.00 : 7849d3: 0f 85 e7 03 00 00 jne 784dc0 0.00 : 7849d9: 48 8d 56 70 lea 0x70(%rsi),%rdx 0.00 : 7849dd: 48 89 f0 mov %rsi,%rax 0.00 : 7849e0: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 7849e7: 48 83 c0 08 add $0x8,%rax 0.00 : 7849eb: 48 39 c2 cmp %rax,%rdx 0.00 : 7849ee: 75 f0 jne 7849e0 : : hctl->nentries = 0; 0.00 : 7849f0: 48 c7 46 08 00 00 00 movq $0x0,0x8(%rsi) 0.00 : 7849f7: 00 : hctl->freeList = NULL; 0.00 : 7849f8: 48 c7 46 10 00 00 00 movq $0x0,0x10(%rsi) 0.00 : 7849ff: 00 : : hctl->dsize = DEF_DIRSIZE; 0.00 : 784a00: 48 c7 46 18 00 01 00 movq $0x100,0x18(%rsi) 0.00 : 784a07: 00 : hctl->nsegs = 0; 0.00 : 784a08: 48 c7 46 20 00 00 00 movq $0x0,0x20(%rsi) 0.00 : 784a0f: 00 : : /* rather pointless defaults for key & entry size */ : hctl->keysize = sizeof(char *); 0.00 : 784a10: 48 c7 46 38 08 00 00 movq $0x8,0x38(%rsi) 0.00 : 784a17: 00 : hctl->entrysize = 2 * sizeof(char *); 0.00 : 784a18: 48 c7 46 40 10 00 00 movq $0x10,0x40(%rsi) 0.00 : 784a1f: 00 : : hctl->num_partitions = 0; /* not partitioned */ 0.00 : 784a20: 48 c7 46 48 00 00 00 movq $0x0,0x48(%rsi) 0.00 : 784a27: 00 : : hctl->ffactor = DEF_FFACTOR; 0.00 : 784a28: 48 c7 46 50 01 00 00 movq $0x1,0x50(%rsi) 0.00 : 784a2f: 00 : : /* table has no fixed maximum size */ : hctl->max_dsize = NO_MAX_DSIZE; 0.00 : 784a30: 48 c7 46 58 ff ff ff movq $0xffffffffffffffff,0x58(%rsi) 0.00 : 784a37: ff : : hctl->ssize = DEF_SEGSIZE; 0.00 : 784a38: 48 c7 46 60 00 01 00 movq $0x100,0x60(%rsi) 0.00 : 784a3f: 00 : hctl->sshift = DEF_SEGSIZE_SHIFT; 0.00 : 784a40: c7 46 68 08 00 00 00 movl $0x8,0x68(%rsi) : : hdefault(hashp); : : hctl = hashp->hctl; : : if (flags & HASH_PARTITION) 0.00 : 784a47: f6 45 c4 01 testb $0x1,-0x3c(%rbp) : : hashp->frozen = false; : : hdefault(hashp); : : hctl = hashp->hctl; 0.00 : 784a4b: 4d 8b 7d 00 mov 0x0(%r13),%r15 : : if (flags & HASH_PARTITION) 0.00 : 784a4f: 74 07 je 784a58 : * be less than INT_MAX (see init_htab()), so call the int version of : * next_pow2. : */ : Assert(info->num_partitions == next_pow2_int(info->num_partitions)); : : hctl->num_partitions = info->num_partitions; 0.00 : 784a51: 48 8b 03 mov (%rbx),%rax 0.00 : 784a54: 49 89 47 48 mov %rax,0x48(%r15) : } : : if (flags & HASH_SEGMENT) 0.00 : 784a58: f6 45 c4 02 testb $0x2,-0x3c(%rbp) 0.00 : 784a5c: 74 41 je 784a9f : { : hctl->ssize = info->ssize; 0.00 : 784a5e: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 784a62: 49 89 47 60 mov %rax,0x60(%r15) : hctl->sshift = my_log2(info->ssize); 0.00 : 784a66: 48 8b 53 08 mov 0x8(%rbx),%rdx 0.00 : 784a6a: 48 b8 ff ff ff ff ff movabs $0x3fffffffffffffff,%rax 0.00 : 784a71: ff ff 3f 0.00 : 784a74: 48 89 c1 mov %rax,%rcx 0.00 : 784a77: 48 39 c2 cmp %rax,%rdx : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784a7a: b8 01 00 00 00 mov $0x1,%eax : } : : if (flags & HASH_SEGMENT) : { : hctl->ssize = info->ssize; : hctl->sshift = my_log2(info->ssize); 0.00 : 784a7f: 48 0f 4e ca cmovle %rdx,%rcx : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784a83: 31 d2 xor %edx,%edx 0.00 : 784a85: 48 83 f9 01 cmp $0x1,%rcx 0.00 : 784a89: 7e 10 jle 784a9b 0.00 : 784a8b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 784a90: 48 01 c0 add %rax,%rax 0.00 : 784a93: 83 c2 01 add $0x1,%edx 0.00 : 784a96: 48 39 c8 cmp %rcx,%rax 0.00 : 784a99: 7c f5 jl 784a90 : } : : if (flags & HASH_SEGMENT) : { : hctl->ssize = info->ssize; : hctl->sshift = my_log2(info->ssize); 0.00 : 784a9b: 41 89 57 68 mov %edx,0x68(%r15) : /* ssize had better be a power of 2 */ : Assert(hctl->ssize == (1L << hctl->sshift)); : } : if (flags & HASH_FFACTOR) 0.00 : 784a9f: f6 45 c4 08 testb $0x8,-0x3c(%rbp) 0.00 : 784aa3: 74 08 je 784aad : hctl->ffactor = info->ffactor; 0.00 : 784aa5: 48 8b 43 20 mov 0x20(%rbx),%rax 0.00 : 784aa9: 49 89 47 50 mov %rax,0x50(%r15) : : /* : * SHM hash tables have fixed directory size passed by the caller. : */ : if (flags & HASH_DIRSIZE) 0.00 : 784aad: f6 45 c4 04 testb $0x4,-0x3c(%rbp) 0.00 : 784ab1: 74 10 je 784ac3 : { : hctl->max_dsize = info->max_dsize; 0.00 : 784ab3: 48 8b 43 18 mov 0x18(%rbx),%rax 0.00 : 784ab7: 49 89 47 58 mov %rax,0x58(%r15) : hctl->dsize = info->dsize; 0.00 : 784abb: 48 8b 43 10 mov 0x10(%rbx),%rax 0.00 : 784abf: 49 89 47 18 mov %rax,0x18(%r15) : : /* : * hash table now allocates space for key and data but you have to say how : * much space to allocate : */ : if (flags & HASH_ELEM) 0.00 : 784ac3: f6 45 c4 20 testb $0x20,-0x3c(%rbp) 0.00 : 784ac7: 74 10 je 784ad9 : { : Assert(info->entrysize >= info->keysize); : hctl->keysize = info->keysize; 0.00 : 784ac9: 48 8b 43 28 mov 0x28(%rbx),%rax 0.00 : 784acd: 49 89 47 38 mov %rax,0x38(%r15) : hctl->entrysize = info->entrysize; 0.00 : 784ad1: 48 8b 43 30 mov 0x30(%rbx),%rax 0.00 : 784ad5: 49 89 47 40 mov %rax,0x40(%r15) : } : : /* make local copies of heavily-used constant fields */ : hashp->keysize = hctl->keysize; 0.00 : 784ad9: 49 8b 47 38 mov 0x38(%r15),%rax : * arrays : */ : static bool : init_htab(HTAB *hashp, long nelem) : { : HASHHDR *hctl = hashp->hctl; 0.00 : 784add: 4d 8b 65 00 mov 0x0(%r13),%r12 : hctl->keysize = info->keysize; : hctl->entrysize = info->entrysize; : } : : /* make local copies of heavily-used constant fields */ : hashp->keysize = hctl->keysize; 0.00 : 784ae1: 49 89 45 48 mov %rax,0x48(%r13) : hashp->ssize = hctl->ssize; 0.00 : 784ae5: 49 8b 47 60 mov 0x60(%r15),%rax 0.00 : 784ae9: 49 89 45 50 mov %rax,0x50(%r13) : hashp->sshift = hctl->sshift; 0.00 : 784aed: 41 8b 47 68 mov 0x68(%r15),%eax 0.00 : 784af1: 41 89 45 58 mov %eax,0x58(%r13) : int nsegs; : : /* : * initialize mutex if it's a partitioned table : */ : if (IS_PARTITIONED(hctl)) 0.00 : 784af5: 49 83 7c 24 48 00 cmpq $0x0,0x48(%r12) 0.00 : 784afb: 0f 85 6f 02 00 00 jne 784d70 : /* : * Divide number of elements by the fill factor to determine a desired : * number of buckets. Allocate space for the next greater power of two : * number of buckets : */ : nbuckets = next_pow2_int((nelem - 1) / hctl->ffactor + 1); 0.00 : 784b01: 48 8b 55 c8 mov -0x38(%rbp),%rdx 0.00 : 784b05: 48 83 ea 01 sub $0x1,%rdx 0.00 : 784b09: 48 89 d0 mov %rdx,%rax 0.00 : 784b0c: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 784b10: 49 f7 7c 24 50 idivq 0x50(%r12) 0.00 : 784b15: ba ff ff ff 3f mov $0x3fffffff,%edx 0.00 : 784b1a: 48 83 c0 01 add $0x1,%rax 0.00 : 784b1e: 48 3d ff ff ff 3f cmp $0x3fffffff,%rax 0.00 : 784b24: 48 0f 4e d0 cmovle %rax,%rdx : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784b28: 31 c9 xor %ecx,%ecx 0.00 : 784b2a: b8 01 00 00 00 mov $0x1,%eax 0.00 : 784b2f: 48 83 fa 01 cmp $0x1,%rdx 0.00 : 784b33: 0f 8e 0c 03 00 00 jle 784e45 0.00 : 784b39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 784b40: 48 01 c0 add %rax,%rax 0.00 : 784b43: 83 c1 01 add $0x1,%ecx 0.00 : 784b46: 48 39 d0 cmp %rdx,%rax 0.00 : 784b49: 7c f5 jl 784b40 0.00 : 784b4b: ba 01 00 00 00 mov $0x1,%edx 0.00 : 784b50: d3 e2 shl %cl,%edx 0.00 : 784b52: 8d 04 12 lea (%rdx,%rdx,1),%eax 0.00 : 784b55: 48 63 f2 movslq %edx,%rsi : * In a partitioned table, nbuckets must be at least equal to : * num_partitions; were it less, keys with apparently different partition : * numbers would map to the same bucket, breaking partition independence. : * (Normally nbuckets will be much bigger; this is just a safety check.) : */ : while (nbuckets < hctl->num_partitions) 0.00 : 784b58: 49 8b 4c 24 48 mov 0x48(%r12),%rcx 0.00 : 784b5d: 48 39 f1 cmp %rsi,%rcx 0.00 : 784b60: 7e 13 jle 784b75 0.00 : 784b62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : nbuckets <<= 1; 0.00 : 784b68: 01 d2 add %edx,%edx : * In a partitioned table, nbuckets must be at least equal to : * num_partitions; were it less, keys with apparently different partition : * numbers would map to the same bucket, breaking partition independence. : * (Normally nbuckets will be much bigger; this is just a safety check.) : */ : while (nbuckets < hctl->num_partitions) 0.00 : 784b6a: 48 63 c2 movslq %edx,%rax 0.00 : 784b6d: 48 39 c8 cmp %rcx,%rax 0.00 : 784b70: 7c f6 jl 784b68 0.00 : 784b72: 8d 04 12 lea (%rdx,%rdx,1),%eax : nbuckets <<= 1; : : hctl->max_bucket = hctl->low_mask = nbuckets - 1; 0.00 : 784b75: 83 ea 01 sub $0x1,%edx : hctl->high_mask = (nbuckets << 1) - 1; 0.00 : 784b78: 83 e8 01 sub $0x1,%eax : : /* : * Figure number of directory segments needed, round up to a power of 2 : */ : nsegs = (nbuckets - 1) / hctl->ssize + 1; : nsegs = next_pow2_int(nsegs); 0.00 : 784b7b: be ff ff ff 3f mov $0x3fffffff,%esi : * (Normally nbuckets will be much bigger; this is just a safety check.) : */ : while (nbuckets < hctl->num_partitions) : nbuckets <<= 1; : : hctl->max_bucket = hctl->low_mask = nbuckets - 1; 0.00 : 784b80: 41 89 54 24 30 mov %edx,0x30(%r12) 0.00 : 784b85: 41 89 54 24 28 mov %edx,0x28(%r12) : : /* : * Figure number of directory segments needed, round up to a power of 2 : */ : nsegs = (nbuckets - 1) / hctl->ssize + 1; : nsegs = next_pow2_int(nsegs); 0.00 : 784b8a: 48 63 d2 movslq %edx,%rdx : */ : while (nbuckets < hctl->num_partitions) : nbuckets <<= 1; : : hctl->max_bucket = hctl->low_mask = nbuckets - 1; : hctl->high_mask = (nbuckets << 1) - 1; 0.00 : 784b8d: 41 89 44 24 2c mov %eax,0x2c(%r12) : : /* : * Figure number of directory segments needed, round up to a power of 2 : */ : nsegs = (nbuckets - 1) / hctl->ssize + 1; : nsegs = next_pow2_int(nsegs); 0.00 : 784b92: 48 89 d0 mov %rdx,%rax 0.00 : 784b95: 48 c1 fa 3f sar $0x3f,%rdx 0.00 : 784b99: 49 f7 7c 24 60 idivq 0x60(%r12) : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784b9e: 41 be 01 00 00 00 mov $0x1,%r14d : : /* : * Figure number of directory segments needed, round up to a power of 2 : */ : nsegs = (nbuckets - 1) / hctl->ssize + 1; : nsegs = next_pow2_int(nsegs); 0.00 : 784ba4: 83 c0 01 add $0x1,%eax 0.00 : 784ba7: 48 98 cltq 0.00 : 784ba9: 48 3d ff ff ff 3f cmp $0x3fffffff,%rax 0.00 : 784baf: 48 0f 4e f0 cmovle %rax,%rsi : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784bb3: 31 c9 xor %ecx,%ecx 0.00 : 784bb5: b8 01 00 00 00 mov $0x1,%eax 0.00 : 784bba: 48 83 fe 01 cmp $0x1,%rsi 0.00 : 784bbe: 7e 15 jle 784bd5 0.00 : 784bc0: 48 01 c0 add %rax,%rax 0.00 : 784bc3: 83 c1 01 add $0x1,%ecx 0.00 : 784bc6: 48 39 f0 cmp %rsi,%rax 0.00 : 784bc9: 7c f5 jl 784bc0 0.00 : 784bcb: b8 01 00 00 00 mov $0x1,%eax 0.00 : 784bd0: d3 e0 shl %cl,%eax 0.00 : 784bd2: 4c 63 f0 movslq %eax,%r14 : : /* : * Make sure directory is big enough. If pre-allocated directory is too : * small, choke (caller screwed up). : */ : if (nsegs > hctl->dsize) 0.00 : 784bd5: 4d 3b 74 24 18 cmp 0x18(%r12),%r14 0.00 : 784bda: 0f 8f 50 01 00 00 jg 784d30 : else : return false; : } : : /* Allocate a directory */ : if (!(hashp->dir)) 0.00 : 784be0: 49 8b 5d 08 mov 0x8(%r13),%rbx 0.00 : 784be4: 48 85 db test %rbx,%rbx 0.00 : 784be7: 0f 84 db 02 00 00 je 784ec8 : if (!hashp->dir) : return false; : } : : /* Allocate initial segments */ : for (segp = hashp->dir; hctl->nsegs < nsegs; hctl->nsegs++, segp++) 0.00 : 784bed: 4d 39 74 24 20 cmp %r14,0x20(%r12) 0.00 : 784bf2: 7c 27 jl 784c1b 0.00 : 784bf4: e9 df 01 00 00 jmpq 784dd8 0.00 : 784bf9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 784c00: 49 8b 44 24 20 mov 0x20(%r12),%rax 0.00 : 784c05: 48 83 c0 01 add $0x1,%rax 0.00 : 784c09: 49 39 c6 cmp %rax,%r14 0.00 : 784c0c: 49 89 44 24 20 mov %rax,0x20(%r12) 0.00 : 784c11: 0f 8e c1 01 00 00 jle 784dd8 0.00 : 784c17: 48 83 c3 08 add $0x8,%rbx : { : *segp = seg_alloc(hashp); 0.00 : 784c1b: 4c 89 ef mov %r13,%rdi 0.00 : 784c1e: e8 ad f3 ff ff callq 783fd0 : if (*segp == NULL) 0.00 : 784c23: 48 85 c0 test %rax,%rax : } : : /* Allocate initial segments */ : for (segp = hashp->dir; hctl->nsegs < nsegs; hctl->nsegs++, segp++) : { : *segp = seg_alloc(hashp); 0.00 : 784c26: 48 89 03 mov %rax,(%rbx) : if (*segp == NULL) 0.00 : 784c29: 75 d5 jne 784c00 0.00 : 784c2b: e9 0b 01 00 00 jmpq 784d3b : ALLOCSET_DEFAULT_MAXSIZE); : } : : /* Initialize the hash header, plus a copy of the table name */ : hashp = (HTAB *) DynaHashAlloc(sizeof(HTAB) + strlen(tabname) +1); : MemSet(hashp, 0, sizeof(HTAB)); 0.00 : 784c30: b9 0c 00 00 00 mov $0xc,%ecx 0.00 : 784c35: 31 c0 xor %eax,%eax 0.00 : 784c37: 4c 89 ef mov %r13,%rdi 0.00 : 784c3a: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 784c3d: 49 8d 7d 60 lea 0x60(%r13),%rdi 0.00 : 784c41: e9 e2 fc ff ff jmpq 784928 0.00 : 784c46: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 0.00 : 784c4d: 00 00 00 : hashp->keycopy = memcpy; : : if (flags & HASH_ALLOC) : hashp->alloc = info->alloc; : else : hashp->alloc = DynaHashAlloc; 0.00 : 784c50: 49 c7 45 28 90 48 78 movq $0x784890,0x28(%r13) 0.00 : 784c57: 00 : : if (flags & HASH_SHARED_MEM) 0.00 : 784c58: 8b 4d d4 mov -0x2c(%rbp),%ecx 0.00 : 784c5b: 85 c9 test %ecx,%ecx 0.00 : 784c5d: 0f 85 2d fd ff ff jne 784990 : } : } : else : { : /* setup hash table defaults */ : hashp->hctl = NULL; 0.00 : 784c63: 49 c7 45 00 00 00 00 movq $0x0,0x0(%r13) 0.00 : 784c6a: 00 : hashp->dir = NULL; 0.00 : 784c6b: 49 c7 45 08 00 00 00 movq $0x0,0x8(%r13) 0.00 : 784c72: 00 : hashp->hcxt = CurrentDynaHashCxt; 0.00 : 784c73: 48 8b 05 4e 4f 43 00 mov 0x434f4e(%rip),%rax # bb9bc8 : hashp->isshared = false; 0.00 : 784c7a: 41 c6 45 40 00 movb $0x0,0x40(%r13) : else : { : /* setup hash table defaults */ : hashp->hctl = NULL; : hashp->dir = NULL; : hashp->hcxt = CurrentDynaHashCxt; 0.00 : 784c7f: 49 89 45 30 mov %rax,0x30(%r13) 0.00 : 784c83: e9 33 fd ff ff jmpq 7849bb 0.00 : 784c88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 784c8f: 00 : * Similarly, the key-copying function defaults to strlcpy or memcpy. : */ : if (flags & HASH_KEYCOPY) : hashp->keycopy = info->keycopy; : else if (hashp->hash == string_hash) : hashp->keycopy = (HashCopyFunc) strlcpy; 0.00 : 784c90: 49 81 7d 10 70 4f 78 cmpq $0x784f70,0x10(%r13) 0.00 : 784c97: 00 0.00 : 784c98: b8 a0 b2 7a 00 mov $0x7ab2a0,%eax 0.00 : 784c9d: ba f0 9b 46 00 mov $0x469bf0,%edx 0.00 : 784ca2: 48 0f 45 c2 cmovne %rdx,%rax 0.00 : 784ca6: 49 89 45 20 mov %rax,0x20(%r13) 0.00 : 784caa: e9 c1 fc ff ff jmpq 784970 0.00 : 784caf: 90 nop : CurrentDynaHashCxt = TopMemoryContext; : } : else : { : /* Create the hash table's private memory context */ : if (flags & HASH_CONTEXT) 0.00 : 784cb0: f7 45 c4 00 02 00 00 testl $0x200,-0x3c(%rbp) 0.00 : 784cb7: 0f 85 c3 00 00 00 jne 784d80 : CurrentDynaHashCxt = info->hcxt; : else : CurrentDynaHashCxt = TopMemoryContext; 0.00 : 784cbd: 48 8b 05 a4 5b 43 00 mov 0x435ba4(%rip),%rax # bba868 0.00 : 784cc4: 48 89 05 fd 4e 43 00 mov %rax,0x434efd(%rip) # bb9bc8 : CurrentDynaHashCxt = AllocSetContextCreate(CurrentDynaHashCxt, 0.00 : 784ccb: 48 8b 3d f6 4e 43 00 mov 0x434ef6(%rip),%rdi # bb9bc8 0.00 : 784cd2: 41 b8 00 00 80 00 mov $0x800000,%r8d 0.00 : 784cd8: b9 00 20 00 00 mov $0x2000,%ecx 0.00 : 784cdd: 31 d2 xor %edx,%edx 0.00 : 784cdf: 4c 89 e6 mov %r12,%rsi 0.00 : 784ce2: e8 a9 32 01 00 callq 797f90 0.00 : 784ce7: 48 89 05 da 4e 43 00 mov %rax,0x434eda(%rip) # bb9bc8 0.00 : 784cee: e9 f7 fb ff ff jmpq 7848ea 0.00 : 784cf3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : * otherwise. (Prior to PostgreSQL 7.4, memcmp was always used.) : */ : if (flags & HASH_COMPARE) : hashp->match = info->match; : else if (hashp->hash == string_hash) : hashp->match = (HashCompareFunc) string_compare; 0.00 : 784cf8: 49 81 7d 10 70 4f 78 cmpq $0x784f70,0x10(%r13) 0.00 : 784cff: 00 0.00 : 784d00: b8 10 4f 78 00 mov $0x784f10,%eax 0.00 : 784d05: ba e0 9d 46 00 mov $0x469de0,%edx 0.00 : 784d0a: 48 0f 45 c2 cmovne %rdx,%rax 0.00 : 784d0e: 49 89 45 18 mov %rax,0x18(%r13) 0.00 : 784d12: e9 44 fc ff ff jmpq 78495b 0.00 : 784d17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 784d1e: 00 00 : strcpy(hashp->tabname, tabname); : : if (flags & HASH_FUNCTION) : hashp->hash = info->hash; : else : hashp->hash = string_hash; /* default hash function */ 0.00 : 784d20: 49 c7 45 10 70 4f 78 movq $0x784f70,0x10(%r13) 0.00 : 784d27: 00 0.00 : 784d28: e9 19 fc ff ff jmpq 784946 0.00 : 784d2d: 0f 1f 00 nopl (%rax) : * Make sure directory is big enough. If pre-allocated directory is too : * small, choke (caller screwed up). : */ : if (nsegs > hctl->dsize) : { : if (!(hashp->dir)) 0.00 : 784d30: 49 83 7d 08 00 cmpq $0x0,0x8(%r13) 0.00 : 784d35: 0f 84 1b 01 00 00 je 784e56 : hashp->ssize = hctl->ssize; : hashp->sshift = hctl->sshift; : : /* Build the hash directory structure */ : if (!init_htab(hashp, nelem)) : elog(ERROR, "failed to initialize hash table \"%s\"", hashp->tabname); 0.00 : 784d3b: ba 0c 5c 8d 00 mov $0x8d5c0c,%edx 0.00 : 784d40: be b8 01 00 00 mov $0x1b8,%esi 0.00 : 784d45: bf 33 59 8d 00 mov $0x8d5933,%edi 0.00 : 784d4a: e8 d1 66 ff ff callq 77b420 0.00 : 784d4f: 49 8b 55 38 mov 0x38(%r13),%rdx 0.00 : 784d53: be 18 5b 8d 00 mov $0x8d5b18,%esi 0.00 : 784d58: bf 14 00 00 00 mov $0x14,%edi 0.00 : 784d5d: 31 c0 xor %eax,%eax 0.00 : 784d5f: e8 cc 64 ff ff callq 77b230 0.00 : 784d64: e8 67 47 ce ff callq 4694d0 0.00 : 784d69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : : /* : * initialize mutex if it's a partitioned table : */ : if (IS_PARTITIONED(hctl)) : SpinLockInit(&hctl->mutex); 0.00 : 784d70: 41 c6 04 24 00 movb $0x0,(%r12) 0.00 : 784d75: e9 87 fd ff ff jmpq 784b01 0.00 : 784d7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : else : { : /* Create the hash table's private memory context */ : if (flags & HASH_CONTEXT) : CurrentDynaHashCxt = info->hcxt; 0.00 : 784d80: 48 8b 42 58 mov 0x58(%rdx),%rax 0.00 : 784d84: 48 89 05 3d 4e 43 00 mov %rax,0x434e3d(%rip) # bb9bc8 0.00 : 784d8b: e9 3b ff ff ff jmpq 784ccb : /* hash table already exists, we're just attaching to it */ : if (flags & HASH_ATTACH) : { : /* make local copies of some heavily-used values */ : hctl = hashp->hctl; : hashp->keysize = hctl->keysize; 0.00 : 784d90: 48 8b 42 38 mov 0x38(%rdx),%rax 0.00 : 784d94: 49 89 45 48 mov %rax,0x48(%r13) : hashp->ssize = hctl->ssize; 0.00 : 784d98: 48 8b 42 60 mov 0x60(%rdx),%rax 0.00 : 784d9c: 49 89 45 50 mov %rax,0x50(%r13) : hashp->sshift = hctl->sshift; 0.00 : 784da0: 8b 42 68 mov 0x68(%rdx),%eax 0.00 : 784da3: 41 89 45 58 mov %eax,0x58(%r13) : } : : if (flags & HASH_FIXED_SIZE) : hashp->isfixed = true; : return hashp; : } 0.00 : 784da7: 48 83 c4 18 add $0x18,%rsp 0.00 : 784dab: 4c 89 e8 mov %r13,%rax 0.00 : 784dae: 5b pop %rbx 0.00 : 784daf: 41 5c pop %r12 0.00 : 784db1: 41 5d pop %r13 0.00 : 784db3: 41 5e pop %r14 0.00 : 784db5: 41 5f pop %r15 0.00 : 784db7: c9 leaveq 0.00 : 784db8: c3 retq 0.00 : 784db9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) : static void : hdefault(HTAB *hashp) : { : HASHHDR *hctl = hashp->hctl; : : MemSet(hctl, 0, sizeof(HASHHDR)); 0.00 : 784dc0: b9 0e 00 00 00 mov $0xe,%ecx 0.00 : 784dc5: 31 c0 xor %eax,%eax 0.00 : 784dc7: 48 89 f7 mov %rsi,%rdi 0.00 : 784dca: f3 48 ab rep stos %rax,%es:(%rdi) 0.00 : 784dcd: e9 1e fc ff ff jmpq 7849f0 0.00 : 784dd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : Size elementSize; : Size allocSize; : : /* Each element has a HASHELEMENT header plus user data. */ : /* NB: this had better match element_alloc() */ : elementSize = MAXALIGN(sizeof(HASHELEMENT)) + MAXALIGN(entrysize); 0.00 : 784dd8: 49 8b 44 24 40 mov 0x40(%r12),%rax 0.00 : 784ddd: bf 80 00 00 00 mov $0x80,%edi 0.00 : 784de2: 48 83 c0 07 add $0x7,%rax 0.00 : 784de6: 48 83 e0 f8 and $0xfffffffffffffff8,%rax 0.00 : 784dea: 48 8d 48 10 lea 0x10(%rax),%rcx 0.00 : 784dee: 66 90 xchg %ax,%ax : * as much as half the allocated space. : */ : allocSize = 32 * 4; /* assume elementSize at least 8 */ : do : { : allocSize <<= 1; 0.00 : 784df0: 48 01 ff add %rdi,%rdi : nelem_alloc = allocSize / elementSize; 0.00 : 784df3: 31 d2 xor %edx,%edx 0.00 : 784df5: 48 89 f8 mov %rdi,%rax 0.00 : 784df8: 48 f7 f1 div %rcx : } while (nelem_alloc < 32); /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/dynahash.c:527 100.00 : 784dfb: 83 f8 1f cmp $0x1f,%eax 0.00 : 784dfe: 7e f0 jle 784df0 : if (*segp == NULL) : return false; : } : : /* Choose number of entries to allocate at a time */ : hctl->nelem_alloc = choose_nelem_alloc(hctl->entrysize); 0.00 : 784e00: 41 89 44 24 6c mov %eax,0x6c(%r12) : * : * For a non-shared hash table, preallocate the requested number of : * elements if it's less than our chosen nelem_alloc. This avoids wasting : * space if the caller correctly estimates a small table size. : */ : if ((flags & HASH_SHARED_MEM) || 0.00 : 784e05: 8b 55 d4 mov -0x2c(%rbp),%edx 0.00 : 784e08: 85 d2 test %edx,%edx 0.00 : 784e0a: 75 0a jne 784e16 0.00 : 784e0c: 49 63 47 6c movslq 0x6c(%r15),%rax 0.00 : 784e10: 48 39 45 c8 cmp %rax,-0x38(%rbp) 0.00 : 784e14: 7d 13 jge 784e29 : nelem < hctl->nelem_alloc) : { : if (!element_alloc(hashp, (int) nelem)) 0.00 : 784e16: 8b 75 c8 mov -0x38(%rbp),%esi 0.00 : 784e19: 4c 89 ef mov %r13,%rdi 0.00 : 784e1c: e8 9f f0 ff ff callq 783ec0 0.00 : 784e21: 84 c0 test %al,%al 0.00 : 784e23: 0f 84 cc 00 00 00 je 784ef5 : ereport(ERROR, : (errcode(ERRCODE_OUT_OF_MEMORY), : errmsg("out of memory"))); : } : : if (flags & HASH_FIXED_SIZE) 0.00 : 784e29: f7 45 c4 00 10 00 00 testl $0x1000,-0x3c(%rbp) 0.00 : 784e30: 0f 84 71 ff ff ff je 784da7 : hashp->isfixed = true; 0.00 : 784e36: 41 c6 45 41 01 movb $0x1,0x41(%r13) 0.00 : 784e3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 784e40: e9 62 ff ff ff jmpq 784da7 : : /* guard against too-large input, which would put us into infinite loop */ : if (num > LONG_MAX / 2) : num = LONG_MAX / 2; : : for (i = 0, limit = 1; limit < num; i++, limit <<= 1) 0.00 : 784e45: ba 01 00 00 00 mov $0x1,%edx 0.00 : 784e4a: be 01 00 00 00 mov $0x1,%esi 0.00 : 784e4f: b0 02 mov $0x2,%al 0.00 : 784e51: e9 02 fd ff ff jmpq 784b58 : * small, choke (caller screwed up). : */ : if (nsegs > hctl->dsize) : { : if (!(hashp->dir)) : hctl->dsize = nsegs; 0.00 : 784e56: 4d 89 74 24 18 mov %r14,0x18(%r12) 0.00 : 784e5b: e9 80 fd ff ff jmpq 784be0 : hashp->isshared = false; : } : : if (!hashp->hctl) : { : hashp->hctl = (HASHHDR *) hashp->alloc(sizeof(HASHHDR)); 0.00 : 784e60: bf 70 00 00 00 mov $0x70,%edi 0.00 : 784e65: 41 ff 55 28 callq *0x28(%r13) : if (!hashp->hctl) 0.00 : 784e69: 48 85 c0 test %rax,%rax : hashp->isshared = false; : } : : if (!hashp->hctl) : { : hashp->hctl = (HASHHDR *) hashp->alloc(sizeof(HASHHDR)); 0.00 : 784e6c: 49 89 45 00 mov %rax,0x0(%r13) : if (!hashp->hctl) 0.00 : 784e70: 0f 85 50 fb ff ff jne 7849c6 : ereport(ERROR, 0.00 : 784e76: 45 31 c0 xor %r8d,%r8d 0.00 : 784e79: b9 0c 5c 8d 00 mov $0x8d5c0c,%ecx 0.00 : 784e7e: ba 7b 01 00 00 mov $0x17b,%edx : */ : if ((flags & HASH_SHARED_MEM) || : nelem < hctl->nelem_alloc) : { : if (!element_alloc(hashp, (int) nelem)) : ereport(ERROR, 0.00 : 784e83: be 33 59 8d 00 mov $0x8d5933,%esi 0.00 : 784e88: bf 14 00 00 00 mov $0x14,%edi 0.00 : 784e8d: e8 2e 5c ff ff callq 77aac0 0.00 : 784e92: 84 c0 test %al,%al 0.00 : 784e94: 0f 84 ca fe ff ff je 784d64 0.00 : 784e9a: bf 04 9c 7b 00 mov $0x7b9c04,%edi 0.00 : 784e9f: 31 c0 xor %eax,%eax 0.00 : 784ea1: e8 fa 79 ff ff callq 77c8a0 0.00 : 784ea6: bf c5 20 00 00 mov $0x20c5,%edi 0.00 : 784eab: 89 c3 mov %eax,%ebx 0.00 : 784ead: e8 9e 7e ff ff callq 77cd50 0.00 : 784eb2: 89 de mov %ebx,%esi 0.00 : 784eb4: 89 c7 mov %eax,%edi 0.00 : 784eb6: 31 c0 xor %eax,%eax 0.00 : 784eb8: e8 23 57 ff ff callq 77a5e0 0.00 : 784ebd: e9 a2 fe ff ff jmpq 784d64 0.00 : 784ec2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : } : : /* Allocate a directory */ : if (!(hashp->dir)) : { : CurrentDynaHashCxt = hashp->hcxt; 0.00 : 784ec8: 49 8b 45 30 mov 0x30(%r13),%rax 0.00 : 784ecc: 48 89 05 f5 4c 43 00 mov %rax,0x434cf5(%rip) # bb9bc8 : hashp->dir = (HASHSEGMENT *) 0.00 : 784ed3: 49 8b 7c 24 18 mov 0x18(%r12),%rdi 0.00 : 784ed8: 48 c1 e7 03 shl $0x3,%rdi 0.00 : 784edc: 41 ff 55 28 callq *0x28(%r13) : hashp->alloc(hctl->dsize * sizeof(HASHSEGMENT)); : if (!hashp->dir) 0.00 : 784ee0: 48 85 c0 test %rax,%rax : : /* Allocate a directory */ : if (!(hashp->dir)) : { : CurrentDynaHashCxt = hashp->hcxt; : hashp->dir = (HASHSEGMENT *) 0.00 : 784ee3: 48 89 c3 mov %rax,%rbx 0.00 : 784ee6: 49 89 45 08 mov %rax,0x8(%r13) : hashp->alloc(hctl->dsize * sizeof(HASHSEGMENT)); : if (!hashp->dir) 0.00 : 784eea: 0f 85 fd fc ff ff jne 784bed 0.00 : 784ef0: e9 46 fe ff ff jmpq 784d3b : */ : if ((flags & HASH_SHARED_MEM) || : nelem < hctl->nelem_alloc) : { : if (!element_alloc(hashp, (int) nelem)) : ereport(ERROR, 0.00 : 784ef5: 45 31 c0 xor %r8d,%r8d 0.00 : 784ef8: b9 0c 5c 8d 00 mov $0x8d5c0c,%ecx 0.00 : 784efd: ba c8 01 00 00 mov $0x1c8,%edx 0.00 : 784f02: e9 7c ff ff ff jmpq 784e83 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:64 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000784f50 : : * : * (tag_hash works for this case too, but is slower) : */ : uint32 : oid_hash(const void *key, Size keysize) : { /home/Computational/mark/src/postgres-andres/src/backend/utils/hash/hashfn.c:64 100.00 : 784f50: 55 push %rbp : Assert(keysize == sizeof(Oid)); : return DatumGetUInt32(hash_uint32((uint32) *((const Oid *) key))); 0.00 : 784f51: 8b 3f mov (%rdi),%edi : * : * (tag_hash works for this case too, but is slower) : */ : uint32 : oid_hash(const void *key, Size keysize) : { 0.00 : 784f53: 48 89 e5 mov %rsp,%rbp : Assert(keysize == sizeof(Oid)); : return DatumGetUInt32(hash_uint32((uint32) *((const Oid *) key))); 0.00 : 784f56: e8 05 b7 d0 ff callq 490660 : } 0.00 : 784f5b: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:275 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007989f0 : : * a loop in the context graph. We assert here that context != new_parent, : * but checking for multi-level loops seems more trouble than it's worth. : */ : void : MemoryContextSetParent(MemoryContext context, MemoryContext new_parent) : { 0.00 : 7989f0: 55 push %rbp : AssertArg(MemoryContextIsValid(context)); : AssertArg(context != new_parent); : : /* Delink from existing parent, if any */ : if (context->parent) 0.00 : 7989f1: 48 8b 4f 10 mov 0x10(%rdi),%rcx : * a loop in the context graph. We assert here that context != new_parent, : * but checking for multi-level loops seems more trouble than it's worth. : */ : void : MemoryContextSetParent(MemoryContext context, MemoryContext new_parent) : { 0.00 : 7989f5: 48 89 e5 mov %rsp,%rbp : AssertArg(MemoryContextIsValid(context)); : AssertArg(context != new_parent); : : /* Delink from existing parent, if any */ : if (context->parent) 0.00 : 7989f8: 48 85 c9 test %rcx,%rcx 0.00 : 7989fb: 74 36 je 798a33 : { : MemoryContext parent = context->parent; : : if (context == parent->firstchild) 0.00 : 7989fd: 48 8b 51 18 mov 0x18(%rcx),%rdx 0.00 : 798a01: 48 39 fa cmp %rdi,%rdx 0.00 : 798a04: 74 62 je 798a68 : parent->firstchild = context->nextchild; : else : { : MemoryContext child; : : for (child = parent->firstchild; child; child = child->nextchild) 0.00 : 798a06: 48 85 d2 test %rdx,%rdx 0.00 : 798a09: 75 17 jne 798a22 0.00 : 798a0b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 798a10: eb 21 jmp 798a33 0.00 : 798a12: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 798a18: 48 85 c0 test %rax,%rax : { : if (context == child->nextchild) 0.00 : 798a1b: 48 89 c2 mov %rax,%rdx 0.00 : 798a1e: 66 90 xchg %ax,%ax : parent->firstchild = context->nextchild; : else : { : MemoryContext child; : : for (child = parent->firstchild; child; child = child->nextchild) 0.00 : 798a20: 74 11 je 798a33 : { : if (context == child->nextchild) 0.00 : 798a22: 48 8b 42 20 mov 0x20(%rdx),%rax 0.00 : 798a26: 48 39 f8 cmp %rdi,%rax 0.00 : 798a29: 75 ed jne 798a18 : { : child->nextchild = context->nextchild; 0.00 : 798a2b: 48 8b 47 20 mov 0x20(%rdi),%rax 0.00 : 798a2f: 48 89 42 20 mov %rax,0x20(%rdx) : } : } : } : : /* And relink */ : if (new_parent) 0.00 : 798a33: 48 85 f6 test %rsi,%rsi 0.00 : 798a36: 74 18 je 798a50 : { : AssertArg(MemoryContextIsValid(new_parent)); : context->parent = new_parent; 0.00 : 798a38: 48 89 77 10 mov %rsi,0x10(%rdi) : context->nextchild = new_parent->firstchild; 0.00 : 798a3c: 48 8b 46 18 mov 0x18(%rsi),%rax 0.00 : 798a40: 48 89 47 20 mov %rax,0x20(%rdi) : new_parent->firstchild = context; 0.00 : 798a44: 48 89 7e 18 mov %rdi,0x18(%rsi) : else : { : context->parent = NULL; : context->nextchild = NULL; : } : } 0.00 : 798a48: c9 leaveq 0.00 : 798a49: c3 retq 0.00 : 798a4a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : context->nextchild = new_parent->firstchild; : new_parent->firstchild = context; : } : else : { : context->parent = NULL; 0.00 : 798a50: 48 c7 47 10 00 00 00 movq $0x0,0x10(%rdi) 0.00 : 798a57: 00 : context->nextchild = NULL; 0.00 : 798a58: 48 c7 47 20 00 00 00 movq $0x0,0x20(%rdi) 0.00 : 798a5f: 00 : } : } 0.00 : 798a60: c9 leaveq 0.00 : 798a61: c3 retq 0.00 : 798a62: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) : if (context->parent) : { : MemoryContext parent = context->parent; : : if (context == parent->firstchild) : parent->firstchild = context->nextchild; 0.00 : 798a68: 48 8b 47 20 mov 0x20(%rdi),%rax 0.00 : 798a6c: 48 89 41 18 mov %rax,0x18(%rcx) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:275 100.00 : 798a70: eb c1 jmp 798a33 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:877 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000798ef0 : : * MemoryContextStrdup : * Like strdup(), but allocate from the specified context : */ : char * : MemoryContextStrdup(MemoryContext context, const char *string) : { 0.00 : 798ef0: 55 push %rbp 0.00 : 798ef1: 48 89 e5 mov %rsp,%rbp 0.00 : 798ef4: 48 89 5d e8 mov %rbx,-0x18(%rbp) 0.00 : 798ef8: 4c 89 65 f0 mov %r12,-0x10(%rbp) 0.00 : 798efc: 49 89 fc mov %rdi,%r12 0.00 : 798eff: 4c 89 6d f8 mov %r13,-0x8(%rbp) : char *nstr; : Size len = strlen(string) + 1; 0.00 : 798f03: 48 89 f7 mov %rsi,%rdi : * MemoryContextStrdup : * Like strdup(), but allocate from the specified context : */ : char * : MemoryContextStrdup(MemoryContext context, const char *string) : { 0.00 : 798f06: 48 83 ec 20 sub $0x20,%rsp 0.00 : 798f0a: 49 89 f5 mov %rsi,%r13 : char *nstr; : Size len = strlen(string) + 1; 0.00 : 798f0d: e8 3e 09 cd ff callq 469850 0.00 : 798f12: 48 8d 58 01 lea 0x1(%rax),%rbx : : nstr = (char *) MemoryContextAlloc(context, len); 0.00 : 798f16: 4c 89 e7 mov %r12,%rdi 0.00 : 798f19: 48 89 de mov %rbx,%rsi 0.00 : 798f1c: e8 6f ff ff ff callq 798e90 : : memcpy(nstr, string, len); 0.00 : 798f21: 48 89 da mov %rbx,%rdx : MemoryContextStrdup(MemoryContext context, const char *string) : { : char *nstr; : Size len = strlen(string) + 1; : : nstr = (char *) MemoryContextAlloc(context, len); 0.00 : 798f24: 49 89 c4 mov %rax,%r12 : : memcpy(nstr, string, len); 0.00 : 798f27: 4c 89 ee mov %r13,%rsi 0.00 : 798f2a: 48 89 c7 mov %rax,%rdi 0.00 : 798f2d: e8 be 0c cd ff callq 469bf0 : : return nstr; : } 0.00 : 798f32: 4c 89 e0 mov %r12,%rax 0.00 : 798f35: 48 8b 5d e8 mov -0x18(%rbp),%rbx 0.00 : 798f39: 4c 8b 65 f0 mov -0x10(%rbp),%r12 0.00 : 798f3d: 4c 8b 6d f8 mov -0x8(%rbp),%r13 100.00 : 798f41: c9 leaveq Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:654 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000799020 : : * We could just call MemoryContextAlloc then clear the memory, but this : * is a very common combination, so we provide the combined operation. : */ : void * : MemoryContextAllocZero(MemoryContext context, Size size) : { 0.00 : 799020: 55 push %rbp : void *ret; : : AssertArg(MemoryContextIsValid(context)); : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) 0.00 : 799021: 48 81 fe ff ff ff 3f cmp $0x3fffffff,%rsi : * We could just call MemoryContextAlloc then clear the memory, but this : * is a very common combination, so we provide the combined operation. : */ : void * : MemoryContextAllocZero(MemoryContext context, Size size) : { 0.00 : 799028: 48 89 e5 mov %rsp,%rbp 0.00 : 79902b: 41 54 push %r12 0.00 : 79902d: 53 push %rbx 0.00 : 79902e: 48 89 f3 mov %rsi,%rbx : void *ret; : : AssertArg(MemoryContextIsValid(context)); : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) 0.00 : 799031: 77 5d ja 799090 : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; : : ret = (*context->methods->alloc) (context, size); 0.00 : 799033: 48 8b 47 08 mov 0x8(%rdi),%rax : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; 0.00 : 799037: c6 47 30 00 movb $0x0,0x30(%rdi) : : ret = (*context->methods->alloc) (context, size); 0.00 : 79903b: ff 10 callq *(%rax) : VALGRIND_MEMPOOL_ALLOC(context, ret, size); : : MemSetAligned(ret, 0, size); 0.00 : 79903d: f6 c3 07 test $0x7,%bl : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); : : context->isReset = false; : : ret = (*context->methods->alloc) (context, size); 0.00 : 799040: 49 89 c4 mov %rax,%r12 : VALGRIND_MEMPOOL_ALLOC(context, ret, size); : : MemSetAligned(ret, 0, size); 0.00 : 799043: 75 09 jne 79904e 0.00 : 799045: 48 81 fb 00 04 00 00 cmp $0x400,%rbx 0.00 : 79904c: 76 1a jbe 799068 0.00 : 79904e: 48 89 da mov %rbx,%rdx 0.00 : 799051: 31 f6 xor %esi,%esi 0.00 : 799053: 4c 89 e7 mov %r12,%rdi 0.00 : 799056: e8 c5 03 cd ff callq 469420 : : return ret; : } 0.00 : 79905b: 5b pop %rbx 0.00 : 79905c: 4c 89 e0 mov %r12,%rax 0.00 : 79905f: 41 5c pop %r12 0.00 : 799061: c9 leaveq 0.00 : 799062: c3 retq 0.00 : 799063: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) : context->isReset = false; : : ret = (*context->methods->alloc) (context, size); : VALGRIND_MEMPOOL_ALLOC(context, ret, size); : : MemSetAligned(ret, 0, size); 0.00 : 799068: 49 8d 14 1c lea (%r12,%rbx,1),%rdx 0.00 : 79906c: 49 39 d4 cmp %rdx,%r12 0.00 : 79906f: 73 ea jae 79905b 0.00 : 799071: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 799078: 48 c7 00 00 00 00 00 movq $0x0,(%rax) /home/Computational/mark/src/postgres-andres/src/backend/utils/mmgr/mcxt.c:654 100.00 : 79907f: 48 83 c0 08 add $0x8,%rax 0.00 : 799083: 48 39 c2 cmp %rax,%rdx 0.00 : 799086: 77 f0 ja 799078 : : return ret; : } 0.00 : 799088: 5b pop %rbx 0.00 : 799089: 4c 89 e0 mov %r12,%rax 0.00 : 79908c: 41 5c pop %r12 0.00 : 79908e: c9 leaveq 0.00 : 79908f: c3 retq : : AssertArg(MemoryContextIsValid(context)); : AssertNotInCriticalSection(context); : : if (!AllocSizeIsValid(size)) : elog(ERROR, "invalid memory alloc request size %zu", size); 0.00 : 799090: ba 40 20 8e 00 mov $0x8e2040,%edx 0.00 : 799095: be 87 02 00 00 mov $0x287,%esi 0.00 : 79909a: bf 8e 1f 8e 00 mov $0x8e1f8e,%edi 0.00 : 79909f: e8 7c 23 fe ff callq 77b420 0.00 : 7990a4: 48 89 da mov %rbx,%rdx 0.00 : 7990a7: be b8 1f 8e 00 mov $0x8e1fb8,%esi 0.00 : 7990ac: bf 14 00 00 00 mov $0x14,%edi 0.00 : 7990b1: 31 c0 xor %eax,%eax 0.00 : 7990b3: e8 78 21 fe ff callq 77b230 0.00 : 7990b8: e8 13 04 cd ff callq 4694d0 Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:861 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000079acc0 : : * This is separate from actually inserting an entry because if we run out : * of memory, it's critical to do so *before* acquiring the resource. : */ : void : ResourceOwnerEnlargeRelationRefs(ResourceOwner owner) : { 0.00 : 79acc0: 55 push %rbp 0.00 : 79acc1: 48 89 e5 mov %rsp,%rbp 0.00 : 79acc4: 4c 89 65 f8 mov %r12,-0x8(%rbp) 0.00 : 79acc8: 48 89 5d f0 mov %rbx,-0x10(%rbp) 0.00 : 79accc: 48 83 ec 10 sub $0x10,%rsp : int newmax; : : if (owner->nrelrefs < owner->maxrelrefs) 0.00 : 79acd0: 8b 87 e0 00 00 00 mov 0xe0(%rdi),%eax /home/Computational/mark/src/postgres-andres/src/backend/utils/resowner/resowner.c:861 100.00 : 79acd6: 39 87 d4 00 00 00 cmp %eax,0xd4(%rdi) : * This is separate from actually inserting an entry because if we run out : * of memory, it's critical to do so *before* acquiring the resource. : */ : void : ResourceOwnerEnlargeRelationRefs(ResourceOwner owner) : { 0.00 : 79acdc: 49 89 fc mov %rdi,%r12 : int newmax; : : if (owner->nrelrefs < owner->maxrelrefs) 0.00 : 79acdf: 7c 2b jl 79ad0c : return; /* nothing to do */ : : if (owner->relrefs == NULL) 0.00 : 79ace1: 48 8b bf d8 00 00 00 mov 0xd8(%rdi),%rdi 0.00 : 79ace8: 48 85 ff test %rdi,%rdi 0.00 : 79aceb: 74 33 je 79ad20 : MemoryContextAlloc(TopMemoryContext, newmax * sizeof(Relation)); : owner->maxrelrefs = newmax; : } : else : { : newmax = owner->maxrelrefs * 2; 0.00 : 79aced: 8d 1c 00 lea (%rax,%rax,1),%ebx : owner->relrefs = (Relation *) 0.00 : 79acf0: 48 63 f3 movslq %ebx,%rsi 0.00 : 79acf3: 48 c1 e6 03 shl $0x3,%rsi 0.00 : 79acf7: e8 f4 df ff ff callq 798cf0 : repalloc(owner->relrefs, newmax * sizeof(Relation)); : owner->maxrelrefs = newmax; 0.00 : 79acfc: 41 89 9c 24 e0 00 00 mov %ebx,0xe0(%r12) 0.00 : 79ad03: 00 : owner->maxrelrefs = newmax; : } : else : { : newmax = owner->maxrelrefs * 2; : owner->relrefs = (Relation *) 0.00 : 79ad04: 49 89 84 24 d8 00 00 mov %rax,0xd8(%r12) 0.00 : 79ad0b: 00 : repalloc(owner->relrefs, newmax * sizeof(Relation)); : owner->maxrelrefs = newmax; : } : } 0.00 : 79ad0c: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 79ad10: 4c 8b 64 24 08 mov 0x8(%rsp),%r12 0.00 : 79ad15: c9 leaveq 0.00 : 79ad16: c3 retq 0.00 : 79ad17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 79ad1e: 00 00 : return; /* nothing to do */ : : if (owner->relrefs == NULL) : { : newmax = 16; : owner->relrefs = (Relation *) 0.00 : 79ad20: 48 8b 3d 41 fb 41 00 mov 0x41fb41(%rip),%rdi # bba868 0.00 : 79ad27: be 80 00 00 00 mov $0x80,%esi 0.00 : 79ad2c: e8 5f e1 ff ff callq 798e90 : MemoryContextAlloc(TopMemoryContext, newmax * sizeof(Relation)); : owner->maxrelrefs = newmax; 0.00 : 79ad31: 41 c7 84 24 e0 00 00 movl $0x10,0xe0(%r12) 0.00 : 79ad38: 00 10 00 00 00 : return; /* nothing to do */ : : if (owner->relrefs == NULL) : { : newmax = 16; : owner->relrefs = (Relation *) 0.00 : 79ad3d: 49 89 84 24 d8 00 00 mov %rax,0xd8(%r12) 0.00 : 79ad44: 00 0.00 : 79ad45: eb c5 jmp 79ad0c Sorted summary for file /home/Computational/mark/andres/bin/postgres ---------------------------------------------- 100.00 /home/Computational/mark/src/postgres-andres/src/backend/utils/time/snapmgr.c:1344 Percent | Source code & Disassembly of /home/Computational/mark/andres/bin/postgres ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000007a75f0 : : * Get a snapshot that is sufficiently up-to-date for scan of the : * system catalog with the specified OID. : */ : Snapshot : GetCatalogSnapshot(Oid relid) : { 0.00 : 7a75f0: 55 push %rbp : } : : bool : HistoricSnapshotActive(void) : { : return HistoricSnapshot != NULL; /home/Computational/mark/src/postgres-andres/src/backend/utils/time/snapmgr.c:1344 100.00 : 7a75f1: 48 8b 05 20 33 41 00 mov 0x413320(%rip),%rax # bba918 : * Get a snapshot that is sufficiently up-to-date for scan of the : * system catalog with the specified OID. : */ : Snapshot : GetCatalogSnapshot(Oid relid) : { 0.00 : 7a75f8: 48 89 e5 mov %rsp,%rbp : * see the appropriate state of the catalog. : * : * This is the primary reason for needing to reset the system caches after : * finishing decoding. : */ : if (HistoricSnapshotActive()) 0.00 : 7a75fb: 48 85 c0 test %rax,%rax 0.00 : 7a75fe: 74 08 je 7a7608 : return HistoricSnapshot; : : return GetNonHistoricCatalogSnapshot(relid); : } 0.00 : 7a7600: c9 leaveq 0.00 : 7a7601: c3 retq 0.00 : 7a7602: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 7a7608: c9 leaveq : * finishing decoding. : */ : if (HistoricSnapshotActive()) : return HistoricSnapshot; : : return GetNonHistoricCatalogSnapshot(relid); 0.00 : 7a7609: e9 72 ff ff ff jmpq 7a7580 Sorted summary for file /lib64/libpthread-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libpthread-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000000de50 <_pthread_cleanup_push_defer>: 0.00 : de50: 48 89 37 mov %rsi,(%rdi) 0.00 : de53: 48 89 57 08 mov %rdx,0x8(%rdi) 0.00 : de57: 64 48 8b 04 25 f8 02 mov %fs:0x2f8,%rax 0.00 : de5e: 00 00 ??:0 100.00 : de60: 48 89 47 18 mov %rax,0x18(%rdi) 0.00 : de64: 64 8b 04 25 08 03 00 mov %fs:0x308,%eax 0.00 : de6b: 00 0.00 : de6c: a8 02 test $0x2,%al 0.00 : de6e: 89 c2 mov %eax,%edx 0.00 : de70: 75 12 jne de84 <_pthread_cleanup_push_defer+0x34> 0.00 : de72: d1 ea shr %edx 0.00 : de74: 83 e2 01 and $0x1,%edx 0.00 : de77: 89 57 10 mov %edx,0x10(%rdi) 0.00 : de7a: 64 48 89 3c 25 f8 02 mov %rdi,%fs:0x2f8 0.00 : de81: 00 00 0.00 : de83: c3 retq 0.00 : de84: 89 c2 mov %eax,%edx 0.00 : de86: 89 d6 mov %edx,%esi 0.00 : de88: 89 d0 mov %edx,%eax 0.00 : de8a: 83 e6 fd and $0xfffffffd,%esi 0.00 : de8d: f0 64 0f b1 34 25 08 lock cmpxchg %esi,%fs:0x308 0.00 : de94: 03 00 00 0.00 : de97: 39 c2 cmp %eax,%edx 0.00 : de99: 74 d7 je de72 <_pthread_cleanup_push_defer+0x22> 0.00 : de9b: 89 c2 mov %eax,%edx 0.00 : de9d: eb e7 jmp de86 <_pthread_cleanup_push_defer+0x36> Sorted summary for file /lib64/libm-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libm-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000013430 : 0.00 : 13430: f2 0f 11 44 24 e8 movsd %xmm0,-0x18(%rsp) 0.00 : 13436: 48 8b 74 24 e8 mov -0x18(%rsp),%rsi 0.00 : 1343b: 48 b8 ff ff ff ff ff movabs $0x7fffffffffffffff,%rax 0.00 : 13442: ff ff 7f 0.00 : 13445: 48 89 f2 mov %rsi,%rdx 0.00 : 13448: 48 21 c2 and %rax,%rdx 0.00 : 1344b: 48 b8 ff ff ff ff ff movabs $0x433fffffffffffff,%rax 0.00 : 13452: ff 3f 43 0.00 : 13455: 48 39 c2 cmp %rax,%rdx 0.00 : 13458: 76 16 jbe 13470 0.00 : 1345a: 48 b8 00 00 00 00 00 movabs $0x7ff0000000000000,%rax 0.00 : 13461: 00 f0 7f 0.00 : 13464: 48 39 c2 cmp %rax,%rdx 0.00 : 13467: 76 58 jbe 134c1 0.00 : 13469: f2 0f 58 c0 addsd %xmm0,%xmm0 0.00 : 1346d: c3 retq 0.00 : 1346e: 66 90 xchg %ax,%ax ??:0 100.00 : 13470: 31 ff xor %edi,%edi 0.00 : 13472: 48 b8 ff ff ff ff ff movabs $0x3fefffffffffffff,%rax 0.00 : 13479: ff ef 3f 0.00 : 1347c: 48 39 d6 cmp %rdx,%rsi 0.00 : 1347f: 40 0f 95 c7 setne %dil 0.00 : 13483: 48 39 c2 cmp %rax,%rdx 0.00 : 13486: 76 40 jbe 134c8 0.00 : 13488: 48 8d 04 36 lea (%rsi,%rsi,1),%rax 0.00 : 1348c: b9 33 04 00 00 mov $0x433,%ecx 0.00 : 13491: 48 c1 e8 35 shr $0x35,%rax 0.00 : 13495: 29 c1 sub %eax,%ecx 0.00 : 13497: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 1349e: 48 d3 e0 shl %cl,%rax 0.00 : 134a1: 48 21 f0 and %rsi,%rax 0.00 : 134a4: 48 85 ff test %rdi,%rdi 0.00 : 134a7: 48 89 44 24 d8 mov %rax,-0x28(%rsp) 0.00 : 134ac: f2 0f 10 44 24 d8 movsd -0x28(%rsp),%xmm0 0.00 : 134b2: 74 0d je 134c1 0.00 : 134b4: 48 39 f0 cmp %rsi,%rax 0.00 : 134b7: 74 08 je 134c1 0.00 : 134b9: f2 0f 5c 05 7f eb 02 subsd 0x2eb7f(%rip),%xmm0 # 42040 0.00 : 134c0: 00 0.00 : 134c1: f3 c3 repz retq 0.00 : 134c3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 134c8: 48 85 d2 test %rdx,%rdx 0.00 : 134cb: 74 f4 je 134c1 0.00 : 134cd: 48 85 ff test %rdi,%rdi 0.00 : 134d0: 75 0e jne 134e0 0.00 : 134d2: 66 0f 57 c0 xorpd %xmm0,%xmm0 0.00 : 134d6: c3 retq 0.00 : 134d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 134de: 00 00 0.00 : 134e0: f2 0f 10 05 60 eb 02 movsd 0x2eb60(%rip),%xmm0 # 42048 0.00 : 134e7: 00 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000031e00 <__isnan>: ??:0 100.00 : 31e00: f2 0f 11 44 24 f8 movsd %xmm0,-0x8(%rsp) 0.00 : 31e06: 48 8b 44 24 f8 mov -0x8(%rsp),%rax 0.00 : 31e0b: 89 c2 mov %eax,%edx 0.00 : 31e0d: 48 89 c1 mov %rax,%rcx 0.00 : 31e10: f7 da neg %edx 0.00 : 31e12: 48 c1 e9 20 shr $0x20,%rcx 0.00 : 31e16: 09 c2 or %eax,%edx 0.00 : 31e18: 81 e1 ff ff ff 7f and $0x7fffffff,%ecx 0.00 : 31e1e: b8 00 00 f0 7f mov $0x7ff00000,%eax 0.00 : 31e23: c1 ea 1f shr $0x1f,%edx 0.00 : 31e26: 09 ca or %ecx,%edx 0.00 : 31e28: 29 d0 sub %edx,%eax 0.00 : 31e2a: c1 e8 1f shr $0x1f,%eax Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000035af0 <__cxa_finalize>: 0.00 : 35af0: 41 57 push %r15 0.00 : 35af2: 45 31 c0 xor %r8d,%r8d 0.00 : 35af5: 41 bf 04 00 00 00 mov $0x4,%r15d 0.00 : 35afb: 41 56 push %r14 0.00 : 35afd: 41 55 push %r13 0.00 : 35aff: 41 54 push %r12 0.00 : 35b01: 49 89 fc mov %rdi,%r12 0.00 : 35b04: 55 push %rbp 0.00 : 35b05: 53 push %rbx 0.00 : 35b06: 48 83 ec 08 sub $0x8,%rsp 0.00 : 35b0a: 4c 8b 35 d7 c9 33 00 mov 0x33c9d7(%rip),%r14 # 3724e8 <__exit_funcs> 0.00 : 35b11: 4d 85 f6 test %r14,%r14 0.00 : 35b14: 0f 84 a2 00 00 00 je 35bbc <__cxa_finalize+0xcc> 0.00 : 35b1a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 35b20: 49 8b 46 08 mov 0x8(%r14),%rax 0.00 : 35b24: 4d 8d 6e 10 lea 0x10(%r14),%r13 0.00 : 35b28: 48 c1 e0 05 shl $0x5,%rax 0.00 : 35b2c: 49 8d 6c 06 f0 lea -0x10(%r14,%rax,1),%rbp 0.00 : 35b31: 4c 39 ed cmp %r13,%rbp 0.00 : 35b34: 73 1c jae 35b52 <__cxa_finalize+0x62> 0.00 : 35b36: eb 78 jmp 35bb0 <__cxa_finalize+0xc0> 0.00 : 35b38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 35b3f: 00 0.00 : 35b40: 4c 39 65 18 cmp %r12,0x18(%rbp) 0.00 : 35b44: 74 11 je 35b57 <__cxa_finalize+0x67> 0.00 : 35b46: 48 83 ed 20 sub $0x20,%rbp 0.00 : 35b4a: 4c 39 ed cmp %r13,%rbp 0.00 : 35b4d: 0f 1f 00 nopl (%rax) 0.00 : 35b50: 72 5e jb 35bb0 <__cxa_finalize+0xc0> 0.00 : 35b52: 4d 85 e4 test %r12,%r12 0.00 : 35b55: 75 e9 jne 35b40 <__cxa_finalize+0x50> 0.00 : 35b57: 48 8b 55 08 mov 0x8(%rbp),%rdx 0.00 : 35b5b: 48 8b 7d 10 mov 0x10(%rbp),%rdi 0.00 : 35b5f: 4c 89 f8 mov %r15,%rax 0.00 : 35b62: 64 83 3c 25 18 00 00 cmpl $0x0,%fs:0x18 0.00 : 35b69: 00 00 0.00 : 35b6b: 74 01 je 35b6e <__cxa_finalize+0x7e> 0.00 : 35b6d: f0 4c 0f b1 45 00 lock cmpxchg %r8,0x0(%rbp) 0.00 : 35b73: 48 83 f8 04 cmp $0x4,%rax 0.00 : 35b77: 75 cd jne 35b46 <__cxa_finalize+0x56> 0.00 : 35b79: 48 8b 1d 40 18 34 00 mov 0x341840(%rip),%rbx # 3773c0 <__new_exitfn_called> 0.00 : 35b80: 31 f6 xor %esi,%esi 0.00 : 35b82: 4c 89 04 24 mov %r8,(%rsp) 0.00 : 35b86: 48 c1 ca 11 ror $0x11,%rdx 0.00 : 35b8a: 64 48 33 14 25 30 00 xor %fs:0x30,%rdx 0.00 : 35b91: 00 00 0.00 : 35b93: ff d2 callq *%rdx 0.00 : 35b95: 48 3b 1d 24 18 34 00 cmp 0x341824(%rip),%rbx # 3773c0 <__new_exitfn_called> 0.00 : 35b9c: 4c 8b 04 24 mov (%rsp),%r8 0.00 : 35ba0: 0f 85 64 ff ff ff jne 35b0a <__cxa_finalize+0x1a> 0.00 : 35ba6: 48 83 ed 20 sub $0x20,%rbp 0.00 : 35baa: 4c 39 ed cmp %r13,%rbp 0.00 : 35bad: 73 a3 jae 35b52 <__cxa_finalize+0x62> 0.00 : 35baf: 90 nop 0.00 : 35bb0: 4d 8b 36 mov (%r14),%r14 0.00 : 35bb3: 4d 85 f6 test %r14,%r14 0.00 : 35bb6: 0f 85 64 ff ff ff jne 35b20 <__cxa_finalize+0x30> 0.00 : 35bbc: 48 8b 0d 2d c9 33 00 mov 0x33c92d(%rip),%rcx # 3724f0 <__quick_exit_funcs> 0.00 : 35bc3: 48 85 c9 test %rcx,%rcx 0.00 : 35bc6: 74 57 je 35c1f <__cxa_finalize+0x12f> 0.00 : 35bc8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 35bcf: 00 0.00 : 35bd0: 48 8b 41 08 mov 0x8(%rcx),%rax ??:0 100.00 : 35bd4: 48 8d 51 10 lea 0x10(%rcx),%rdx 0.00 : 35bd8: 48 c1 e0 05 shl $0x5,%rax 0.00 : 35bdc: 48 8d 44 01 f0 lea -0x10(%rcx,%rax,1),%rax 0.00 : 35be1: 48 39 d0 cmp %rdx,%rax 0.00 : 35be4: 73 1c jae 35c02 <__cxa_finalize+0x112> 0.00 : 35be6: eb 2f jmp 35c17 <__cxa_finalize+0x127> 0.00 : 35be8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 35bef: 00 0.00 : 35bf0: 4c 39 60 18 cmp %r12,0x18(%rax) 0.00 : 35bf4: 74 11 je 35c07 <__cxa_finalize+0x117> 0.00 : 35bf6: 48 83 e8 20 sub $0x20,%rax 0.00 : 35bfa: 48 39 d0 cmp %rdx,%rax 0.00 : 35bfd: 0f 1f 00 nopl (%rax) 0.00 : 35c00: 72 15 jb 35c17 <__cxa_finalize+0x127> 0.00 : 35c02: 4d 85 e4 test %r12,%r12 0.00 : 35c05: 75 e9 jne 35bf0 <__cxa_finalize+0x100> 0.00 : 35c07: 48 c7 00 00 00 00 00 movq $0x0,(%rax) 0.00 : 35c0e: 48 83 e8 20 sub $0x20,%rax 0.00 : 35c12: 48 39 d0 cmp %rdx,%rax 0.00 : 35c15: 73 eb jae 35c02 <__cxa_finalize+0x112> 0.00 : 35c17: 48 8b 09 mov (%rcx),%rcx 0.00 : 35c1a: 48 85 c9 test %rcx,%rcx 0.00 : 35c1d: 75 b1 jne 35bd0 <__cxa_finalize+0xe0> 0.00 : 35c1f: 4d 85 e4 test %r12,%r12 0.00 : 35c22: 74 16 je 35c3a <__cxa_finalize+0x14a> 0.00 : 35c24: 48 83 c4 08 add $0x8,%rsp 0.00 : 35c28: 4c 89 e7 mov %r12,%rdi 0.00 : 35c2b: 5b pop %rbx 0.00 : 35c2c: 5d pop %rbp 0.00 : 35c2d: 41 5c pop %r12 0.00 : 35c2f: 41 5d pop %r13 0.00 : 35c31: 41 5e pop %r14 0.00 : 35c33: 41 5f pop %r15 0.00 : 35c35: e9 96 28 0b 00 jmpq e84d0 <__unregister_atfork> 0.00 : 35c3a: 48 83 c4 08 add $0x8,%rsp 0.00 : 35c3e: 5b pop %rbx 0.00 : 35c3f: 5d pop %rbp 0.00 : 35c40: 41 5c pop %r12 0.00 : 35c42: 41 5d pop %r13 0.00 : 35c44: 41 5e pop %r14 0.00 : 35c46: 41 5f pop %r15 Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000036fe0 <__GI_____strtoul_l_internal>: 0.00 : 36fe0: 41 57 push %r15 0.00 : 36fe2: 41 89 d1 mov %edx,%r9d 0.00 : 36fe5: 41 56 push %r14 0.00 : 36fe7: 41 55 push %r13 0.00 : 36fe9: 4d 89 c5 mov %r8,%r13 0.00 : 36fec: 41 54 push %r12 0.00 : 36fee: 55 push %rbp 0.00 : 36fef: 53 push %rbx 0.00 : 36ff0: 48 83 ec 38 sub $0x38,%rsp 0.00 : 36ff4: 85 c9 test %ecx,%ecx 0.00 : 36ff6: 48 89 7c 24 28 mov %rdi,0x28(%rsp) 0.00 : 36ffb: 48 89 74 24 20 mov %rsi,0x20(%rsp) 0.00 : 37000: 49 8b 50 08 mov 0x8(%r8),%rdx 0.00 : 37004: 0f 85 07 03 00 00 jne 37311 <__GI_____strtoul_l_internal+0x331> 0.00 : 3700a: 31 ed xor %ebp,%ebp 0.00 : 3700c: 45 31 c0 xor %r8d,%r8d 0.00 : 3700f: 45 85 c9 test %r9d,%r9d 0.00 : 37012: 0f 88 c0 01 00 00 js 371d8 <__GI_____strtoul_l_internal+0x1f8> 0.00 : 37018: 41 83 f9 01 cmp $0x1,%r9d 0.00 : 3701c: 0f 84 b6 01 00 00 je 371d8 <__GI_____strtoul_l_internal+0x1f8> 0.00 : 37022: 41 83 f9 24 cmp $0x24,%r9d 0.00 : 37026: 0f 8f ac 01 00 00 jg 371d8 <__GI_____strtoul_l_internal+0x1f8> 0.00 : 3702c: 48 8b 44 24 28 mov 0x28(%rsp),%rax 0.00 : 37031: 4d 8b 65 68 mov 0x68(%r13),%r12 0.00 : 37035: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 3703a: 0f b6 08 movzbl (%rax),%ecx 0.00 : 3703d: 48 0f be c1 movsbq %cl,%rax 0.00 : 37041: 41 f6 44 44 01 20 testb $0x20,0x1(%r12,%rax,2) 0.00 : 37047: 74 1a je 37063 <__GI_____strtoul_l_internal+0x83> 0.00 : 37049: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 37050: 48 83 c2 01 add $0x1,%rdx 0.00 : 37054: 0f b6 0a movzbl (%rdx),%ecx 0.00 : 37057: 48 0f be c1 movsbq %cl,%rax 0.00 : 3705b: 41 f6 44 44 01 20 testb $0x20,0x1(%r12,%rax,2) 0.00 : 37061: 75 ed jne 37050 <__GI_____strtoul_l_internal+0x70> 0.00 : 37063: 84 c9 test %cl,%cl 0.00 : 37065: 49 89 d7 mov %rdx,%r15 0.00 : 37068: 0f 84 71 03 00 00 je 373df <__GI_____strtoul_l_internal+0x3ff> 0.00 : 3706e: 80 f9 2d cmp $0x2d,%cl 0.00 : 37071: 0f 84 74 02 00 00 je 372eb <__GI_____strtoul_l_internal+0x30b> 0.00 : 37077: 80 f9 2b cmp $0x2b,%cl 0.00 : 3707a: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 37081: 00 0.00 : 37082: 0f 84 93 01 00 00 je 3721b <__GI_____strtoul_l_internal+0x23b> 0.00 : 37088: 45 0f b6 37 movzbl (%r15),%r14d 0.00 : 3708c: 41 80 fe 30 cmp $0x30,%r14b 0.00 : 37090: 45 89 f3 mov %r14d,%r11d 0.00 : 37093: 0f 84 16 02 00 00 je 372af <__GI_____strtoul_l_internal+0x2cf> 0.00 : 37099: 45 85 c9 test %r9d,%r9d 0.00 : 3709c: 0f 84 5e 01 00 00 je 37200 <__GI_____strtoul_l_internal+0x220> 0.00 : 370a2: 41 83 f9 0a cmp $0xa,%r9d 0.00 : 370a6: 41 8d 41 fe lea -0x2(%r9),%eax 0.00 : 370aa: 0f 84 50 01 00 00 je 37200 <__GI_____strtoul_l_internal+0x220> 0.00 : 370b0: 45 31 c0 xor %r8d,%r8d 0.00 : 370b3: 31 db xor %ebx,%ebx 0.00 : 370b5: 48 8d 15 64 c5 0f 00 lea 0xfc564(%rip),%rdx # 133620 <__strtol_ul_max_tab> 0.00 : 370bc: 48 98 cltq 0.00 : 370be: 45 84 db test %r11b,%r11b 0.00 : 370c1: 44 89 df mov %r11d,%edi 0.00 : 370c4: 4c 8b 14 c2 mov (%rdx,%rax,8),%r10 0.00 : 370c8: 48 8d 15 71 c6 0f 00 lea 0xfc671(%rip),%rdx # 133740 <__strtol_ul_rem_tab> 0.00 : 370cf: 44 0f b6 34 02 movzbl (%rdx,%rax,1),%r14d 0.00 : 370d4: 0f 84 8f 01 00 00 je 37269 <__GI_____strtoul_l_internal+0x289> 0.00 : 370da: 4d 39 f8 cmp %r15,%r8 0.00 : 370dd: 0f 84 86 01 00 00 je 37269 <__GI_____strtoul_l_internal+0x289> 0.00 : 370e3: 48 8d 43 ff lea -0x1(%rbx),%rax 0.00 : 370e7: 4c 89 fe mov %r15,%rsi 0.00 : 370ea: 31 d2 xor %edx,%edx 0.00 : 370ec: 45 31 db xor %r11d,%r11d 0.00 : 370ef: 4d 63 e1 movslq %r9d,%r12 0.00 : 370f2: 48 89 44 24 18 mov %rax,0x18(%rsp) 0.00 : 370f7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 370fe: 00 00 0.00 : 37100: 8d 4f d0 lea -0x30(%rdi),%ecx 0.00 : 37103: 80 f9 09 cmp $0x9,%cl 0.00 : 37106: 76 51 jbe 37159 <__GI_____strtoul_l_internal+0x179> 0.00 : 37108: 48 85 db test %rbx,%rbx 0.00 : 3710b: 74 2f je 3713c <__GI_____strtoul_l_internal+0x15c> 0.00 : 3710d: 0f b6 45 00 movzbl 0x0(%rbp),%eax 0.00 : 37111: 31 c9 xor %ecx,%ecx 0.00 : 37113: 3a 06 cmp (%rsi),%al 0.00 : 37115: 74 13 je 3712a <__GI_____strtoul_l_internal+0x14a> 0.00 : 37117: eb 23 jmp 3713c <__GI_____strtoul_l_internal+0x15c> 0.00 : 37119: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 37120: 0f b6 44 0d 00 movzbl 0x0(%rbp,%rcx,1),%eax 0.00 : 37125: 3a 04 0e cmp (%rsi,%rcx,1),%al 0.00 : 37128: 75 09 jne 37133 <__GI_____strtoul_l_internal+0x153> 0.00 : 3712a: 48 83 c1 01 add $0x1,%rcx 0.00 : 3712e: 48 39 cb cmp %rcx,%rbx 0.00 : 37131: 77 ed ja 37120 <__GI_____strtoul_l_internal+0x140> 0.00 : 37133: 48 39 d9 cmp %rbx,%rcx 0.00 : 37136: 0f 84 14 01 00 00 je 37250 <__GI_____strtoul_l_internal+0x270> 0.00 : 3713c: 49 8b 45 68 mov 0x68(%r13),%rax 0.00 : 37140: 40 0f b6 cf movzbl %dil,%ecx 0.00 : 37144: f6 44 48 01 04 testb $0x4,0x1(%rax,%rcx,2) 0.00 : 37149: 0f 84 11 01 00 00 je 37260 <__GI_____strtoul_l_internal+0x280> 0.00 : 3714f: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 37153: 8b 04 88 mov (%rax,%rcx,4),%eax 0.00 : 37156: 8d 48 c9 lea -0x37(%rax),%ecx ??:0 100.00 : 37159: 0f b6 c1 movzbl %cl,%eax 0.00 : 3715c: 41 39 c1 cmp %eax,%r9d 0.00 : 3715f: 0f 8e fb 00 00 00 jle 37260 <__GI_____strtoul_l_internal+0x280> 0.00 : 37165: 49 39 d2 cmp %rdx,%r10 0.00 : 37168: 0f 82 d2 00 00 00 jb 37240 <__GI_____strtoul_l_internal+0x260> 0.00 : 3716e: 4c 39 d2 cmp %r10,%rdx 0.00 : 37171: 0f 84 b9 00 00 00 je 37230 <__GI_____strtoul_l_internal+0x250> 0.00 : 37177: 49 0f af d4 imul %r12,%rdx 0.00 : 3717b: 0f b6 c1 movzbl %cl,%eax 0.00 : 3717e: 48 8d 14 10 lea (%rax,%rdx,1),%rdx 0.00 : 37182: 48 83 c6 01 add $0x1,%rsi 0.00 : 37186: 0f b6 3e movzbl (%rsi),%edi 0.00 : 37189: 40 84 ff test %dil,%dil 0.00 : 3718c: 0f 84 ce 00 00 00 je 37260 <__GI_____strtoul_l_internal+0x280> 0.00 : 37192: 49 39 f0 cmp %rsi,%r8 0.00 : 37195: 0f 85 65 ff ff ff jne 37100 <__GI_____strtoul_l_internal+0x120> 0.00 : 3719b: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : 371a1: 74 08 je 371ab <__GI_____strtoul_l_internal+0x1cb> 0.00 : 371a3: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 371a8: 48 89 30 mov %rsi,(%rax) 0.00 : 371ab: 45 85 db test %r11d,%r11d 0.00 : 371ae: 0f 85 a5 01 00 00 jne 37359 <__GI_____strtoul_l_internal+0x379> 0.00 : 371b4: 8b 4c 24 34 mov 0x34(%rsp),%ecx 0.00 : 371b8: 48 89 d0 mov %rdx,%rax 0.00 : 371bb: 48 f7 d8 neg %rax 0.00 : 371be: 85 c9 test %ecx,%ecx 0.00 : 371c0: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 371c4: 48 83 c4 38 add $0x38,%rsp 0.00 : 371c8: 5b pop %rbx 0.00 : 371c9: 5d pop %rbp 0.00 : 371ca: 41 5c pop %r12 0.00 : 371cc: 41 5d pop %r13 0.00 : 371ce: 41 5e pop %r14 0.00 : 371d0: 41 5f pop %r15 0.00 : 371d2: c3 retq 0.00 : 371d3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 371d8: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 371df: 00 00 0.00 : 371e1: 48 8b 15 50 ac 33 00 mov 0x33ac50(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 371e8: c7 04 10 16 00 00 00 movl $0x16,(%rax,%rdx,1) 0.00 : 371ef: 31 c0 xor %eax,%eax 0.00 : 371f1: 48 83 c4 38 add $0x38,%rsp 0.00 : 371f5: 5b pop %rbx 0.00 : 371f6: 5d pop %rbp 0.00 : 371f7: 41 5c pop %r12 0.00 : 371f9: 41 5d pop %r13 0.00 : 371fb: 41 5e pop %r14 0.00 : 371fd: 41 5f pop %r15 0.00 : 371ff: c3 retq 0.00 : 37200: 4d 85 c0 test %r8,%r8 0.00 : 37203: 0f 85 73 01 00 00 jne 3737c <__GI_____strtoul_l_internal+0x39c> 0.00 : 37209: 31 db xor %ebx,%ebx 0.00 : 3720b: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 37211: b8 08 00 00 00 mov $0x8,%eax 0.00 : 37216: e9 9a fe ff ff jmpq 370b5 <__GI_____strtoul_l_internal+0xd5> 0.00 : 3721b: 4c 8d 7a 01 lea 0x1(%rdx),%r15 0.00 : 3721f: c7 44 24 34 00 00 00 movl $0x0,0x34(%rsp) 0.00 : 37226: 00 0.00 : 37227: e9 5c fe ff ff jmpq 37088 <__GI_____strtoul_l_internal+0xa8> 0.00 : 3722c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 37230: 44 38 f1 cmp %r14b,%cl 0.00 : 37233: 0f 86 3e ff ff ff jbe 37177 <__GI_____strtoul_l_internal+0x197> 0.00 : 37239: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0.00 : 37240: 41 bb 01 00 00 00 mov $0x1,%r11d 0.00 : 37246: e9 37 ff ff ff jmpq 37182 <__GI_____strtoul_l_internal+0x1a2> 0.00 : 3724b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 37250: 48 03 74 24 18 add 0x18(%rsp),%rsi 0.00 : 37255: e9 28 ff ff ff jmpq 37182 <__GI_____strtoul_l_internal+0x1a2> 0.00 : 3725a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 37260: 49 39 f7 cmp %rsi,%r15 0.00 : 37263: 0f 85 32 ff ff ff jne 3719b <__GI_____strtoul_l_internal+0x1bb> 0.00 : 37269: 4c 89 f9 mov %r15,%rcx 0.00 : 3726c: 31 c0 xor %eax,%eax 0.00 : 3726e: 48 83 7c 24 20 00 cmpq $0x0,0x20(%rsp) 0.00 : 37274: 0f 84 77 ff ff ff je 371f1 <__GI_____strtoul_l_internal+0x211> 0.00 : 3727a: 48 89 c8 mov %rcx,%rax 0.00 : 3727d: 48 2b 44 24 28 sub 0x28(%rsp),%rax 0.00 : 37282: 48 83 e8 01 sub $0x1,%rax 0.00 : 37286: 7e 13 jle 3729b <__GI_____strtoul_l_internal+0x2bb> 0.00 : 37288: 48 0f be 51 ff movsbq -0x1(%rcx),%rdx 0.00 : 3728d: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 37291: 83 3c 90 58 cmpl $0x58,(%rax,%rdx,4) 0.00 : 37295: 0f 84 9c 00 00 00 je 37337 <__GI_____strtoul_l_internal+0x357> 0.00 : 3729b: 48 8b 44 24 20 mov 0x20(%rsp),%rax 0.00 : 372a0: 48 8b 54 24 28 mov 0x28(%rsp),%rdx 0.00 : 372a5: 48 89 10 mov %rdx,(%rax) 0.00 : 372a8: 31 c0 xor %eax,%eax 0.00 : 372aa: e9 42 ff ff ff jmpq 371f1 <__GI_____strtoul_l_internal+0x211> 0.00 : 372af: 45 85 c9 test %r9d,%r9d 0.00 : 372b2: 0f 94 c1 sete %cl 0.00 : 372b5: 74 0a je 372c1 <__GI_____strtoul_l_internal+0x2e1> 0.00 : 372b7: 41 83 f9 10 cmp $0x10,%r9d 0.00 : 372bb: 0f 85 e1 fd ff ff jne 370a2 <__GI_____strtoul_l_internal+0xc2> 0.00 : 372c1: 49 0f be 57 01 movsbq 0x1(%r15),%rdx 0.00 : 372c6: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 372ca: 83 3c 90 58 cmpl $0x58,(%rax,%rdx,4) 0.00 : 372ce: 74 2c je 372fc <__GI_____strtoul_l_internal+0x31c> 0.00 : 372d0: 84 c9 test %cl,%cl 0.00 : 372d2: 0f 84 ca fd ff ff je 370a2 <__GI_____strtoul_l_internal+0xc2> 0.00 : 372d8: 41 b9 08 00 00 00 mov $0x8,%r9d 0.00 : 372de: b8 06 00 00 00 mov $0x6,%eax 0.00 : 372e3: 45 89 f3 mov %r14d,%r11d 0.00 : 372e6: e9 c5 fd ff ff jmpq 370b0 <__GI_____strtoul_l_internal+0xd0> 0.00 : 372eb: 4c 8d 7a 01 lea 0x1(%rdx),%r15 0.00 : 372ef: c7 44 24 34 01 00 00 movl $0x1,0x34(%rsp) 0.00 : 372f6: 00 0.00 : 372f7: e9 8c fd ff ff jmpq 37088 <__GI_____strtoul_l_internal+0xa8> 0.00 : 372fc: 49 83 c7 02 add $0x2,%r15 0.00 : 37300: 41 b9 10 00 00 00 mov $0x10,%r9d 0.00 : 37306: b8 0e 00 00 00 mov $0xe,%eax 0.00 : 3730b: 45 0f b6 37 movzbl (%r15),%r14d 0.00 : 3730f: eb d2 jmp 372e3 <__GI_____strtoul_l_internal+0x303> 0.00 : 37311: 4c 8b 42 50 mov 0x50(%rdx),%r8 0.00 : 37315: 41 0f b6 00 movzbl (%r8),%eax 0.00 : 37319: 83 e8 01 sub $0x1,%eax 0.00 : 3731c: 3c 7d cmp $0x7d,%al 0.00 : 3731e: 0f 87 e6 fc ff ff ja 3700a <__GI_____strtoul_l_internal+0x2a> 0.00 : 37324: 48 8b 6a 48 mov 0x48(%rdx),%rbp 0.00 : 37328: 80 7d 00 00 cmpb $0x0,0x0(%rbp) 0.00 : 3732c: 0f 85 dd fc ff ff jne 3700f <__GI_____strtoul_l_internal+0x2f> 0.00 : 37332: e9 d3 fc ff ff jmpq 3700a <__GI_____strtoul_l_internal+0x2a> 0.00 : 37337: 80 79 fe 30 cmpb $0x30,-0x2(%rcx) 0.00 : 3733b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 37340: 0f 85 55 ff ff ff jne 3729b <__GI_____strtoul_l_internal+0x2bb> 0.00 : 37346: 48 8b 54 24 20 mov 0x20(%rsp),%rdx 0.00 : 3734b: 48 8d 41 ff lea -0x1(%rcx),%rax 0.00 : 3734f: 48 89 02 mov %rax,(%rdx) 0.00 : 37352: 31 c0 xor %eax,%eax 0.00 : 37354: e9 98 fe ff ff jmpq 371f1 <__GI_____strtoul_l_internal+0x211> 0.00 : 37359: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 37360: 00 00 0.00 : 37362: 48 8b 15 cf aa 33 00 mov 0x33aacf(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 37369: c7 04 10 22 00 00 00 movl $0x22,(%rax,%rdx,1) 0.00 : 37370: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 0.00 : 37377: e9 75 fe ff ff jmpq 371f1 <__GI_____strtoul_l_internal+0x211> 0.00 : 3737c: 48 89 ef mov %rbp,%rdi 0.00 : 3737f: 4c 89 44 24 10 mov %r8,0x10(%rsp) 0.00 : 37384: 44 88 5c 24 08 mov %r11b,0x8(%rsp) 0.00 : 37389: e8 22 98 04 00 callq 80bb0 <__GI_strlen> 0.00 : 3738e: 48 85 c0 test %rax,%rax 0.00 : 37391: 48 89 c7 mov %rax,%rdi 0.00 : 37394: 48 89 c3 mov %rax,%rbx 0.00 : 37397: 4c 8b 44 24 10 mov 0x10(%rsp),%r8 0.00 : 3739c: 44 0f b6 5c 24 08 movzbl 0x8(%rsp),%r11d 0.00 : 373a2: 74 28 je 373cc <__GI_____strtoul_l_internal+0x3ec> 0.00 : 373a4: 44 0f b6 4d 00 movzbl 0x0(%rbp),%r9d 0.00 : 373a9: 31 d2 xor %edx,%edx 0.00 : 373ab: 45 38 ce cmp %r9b,%r14b 0.00 : 373ae: 74 13 je 373c3 <__GI_____strtoul_l_internal+0x3e3> 0.00 : 373b0: eb 37 jmp 373e9 <__GI_____strtoul_l_internal+0x409> 0.00 : 373b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 373b8: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 373bd: 41 3a 04 17 cmp (%r15,%rdx,1),%al 0.00 : 373c1: 75 26 jne 373e9 <__GI_____strtoul_l_internal+0x409> 0.00 : 373c3: 48 83 c2 01 add $0x1,%rdx 0.00 : 373c7: 48 39 d7 cmp %rdx,%rdi 0.00 : 373ca: 77 ec ja 373b8 <__GI_____strtoul_l_internal+0x3d8> 0.00 : 373cc: 4d 89 f8 mov %r15,%r8 0.00 : 373cf: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 373d5: b8 08 00 00 00 mov $0x8,%eax 0.00 : 373da: e9 d6 fc ff ff jmpq 370b5 <__GI_____strtoul_l_internal+0xd5> 0.00 : 373df: 48 8b 4c 24 28 mov 0x28(%rsp),%rcx 0.00 : 373e4: e9 83 fe ff ff jmpq 3726c <__GI_____strtoul_l_internal+0x28c> 0.00 : 373e9: 45 84 f6 test %r14b,%r14b 0.00 : 373ec: 44 89 f1 mov %r14d,%ecx 0.00 : 373ef: 4c 89 fe mov %r15,%rsi 0.00 : 373f2: 74 32 je 37426 <__GI_____strtoul_l_internal+0x446> 0.00 : 373f4: 8d 41 d0 lea -0x30(%rcx),%eax 0.00 : 373f7: 3c 09 cmp $0x9,%al 0.00 : 373f9: 76 20 jbe 3741b <__GI_____strtoul_l_internal+0x43b> 0.00 : 373fb: 31 d2 xor %edx,%edx 0.00 : 373fd: 44 38 0e cmp %r9b,(%rsi) 0.00 : 37400: 74 10 je 37412 <__GI_____strtoul_l_internal+0x432> 0.00 : 37402: eb 47 jmp 3744b <__GI_____strtoul_l_internal+0x46b> 0.00 : 37404: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 37408: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax 0.00 : 3740d: 3a 04 16 cmp (%rsi,%rdx,1),%al 0.00 : 37410: 75 39 jne 3744b <__GI_____strtoul_l_internal+0x46b> 0.00 : 37412: 48 83 c2 01 add $0x1,%rdx 0.00 : 37416: 48 39 d7 cmp %rdx,%rdi 0.00 : 37419: 77 ed ja 37408 <__GI_____strtoul_l_internal+0x428> 0.00 : 3741b: 48 83 c6 01 add $0x1,%rsi 0.00 : 3741f: 0f b6 0e movzbl (%rsi),%ecx 0.00 : 37422: 84 c9 test %cl,%cl 0.00 : 37424: 75 ce jne 373f4 <__GI_____strtoul_l_internal+0x414> 0.00 : 37426: 4c 89 c1 mov %r8,%rcx 0.00 : 37429: 48 89 ea mov %rbp,%rdx 0.00 : 3742c: 4c 89 ff mov %r15,%rdi 0.00 : 3742f: e8 9c c3 00 00 callq 437d0 <__correctly_grouped_prefixmb> 0.00 : 37434: 45 0f b6 1f movzbl (%r15),%r11d 0.00 : 37438: 49 89 c0 mov %rax,%r8 0.00 : 3743b: 41 b9 0a 00 00 00 mov $0xa,%r9d 0.00 : 37441: b8 08 00 00 00 mov $0x8,%eax 0.00 : 37446: e9 6a fc ff ff jmpq 370b5 <__GI_____strtoul_l_internal+0xd5> 0.00 : 3744b: 0f b6 d1 movzbl %cl,%edx 0.00 : 3744e: 41 f6 44 54 01 04 testb $0x4,0x1(%r12,%rdx,2) 0.00 : 37454: 74 d0 je 37426 <__GI_____strtoul_l_internal+0x446> 0.00 : 37456: 49 8b 45 78 mov 0x78(%r13),%rax 0.00 : 3745a: 83 3c 90 40 cmpl $0x40,(%rax,%rdx,4) 0.00 : 3745e: 7e bb jle 3741b <__GI_____strtoul_l_internal+0x43b> 0.00 : 37460: eb c4 jmp 37426 <__GI_____strtoul_l_internal+0x446> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000066220 <_IO_fclose@@GLIBC_2.2.5>: 0.00 : 66220: 41 54 push %r12 0.00 : 66222: 55 push %rbp 0.00 : 66223: 48 89 fd mov %rdi,%rbp 0.00 : 66226: 53 push %rbx 0.00 : 66227: 8b 17 mov (%rdi),%edx 0.00 : 66229: f6 c6 20 test $0x20,%dh 0.00 : 6622c: 0f 85 7e 01 00 00 jne 663b0 <_IO_fclose@@GLIBC_2.2.5+0x190> 0.00 : 66232: 66 85 d2 test %dx,%dx 0.00 : 66235: 78 59 js 66290 <_IO_fclose@@GLIBC_2.2.5+0x70> 0.00 : 66237: 4c 8b 8d 88 00 00 00 mov 0x88(%rbp),%r9 0.00 : 6623e: 64 4c 8b 14 25 10 00 mov %fs:0x10,%r10 0.00 : 66245: 00 00 0.00 : 66247: 4d 3b 51 08 cmp 0x8(%r9),%r10 0.00 : 6624b: 74 3b je 66288 <_IO_fclose@@GLIBC_2.2.5+0x68> 0.00 : 6624d: 31 d2 xor %edx,%edx 0.00 : 6624f: be 01 00 00 00 mov $0x1,%esi 0.00 : 66254: 89 d0 mov %edx,%eax 0.00 : 66256: 83 3d 57 14 31 00 00 cmpl $0x0,0x311457(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 6625d: 74 0d je 6626c <_IO_fclose@@GLIBC_2.2.5+0x4c> 0.00 : 6625f: f0 41 0f b1 31 lock cmpxchg %esi,(%r9) 0.00 : 66264: 0f 85 e1 01 00 00 jne 6644b <_L_lock_37> 0.00 : 6626a: eb 0a jmp 66276 <_IO_fclose@@GLIBC_2.2.5+0x56> 0.00 : 6626c: 41 0f b1 31 cmpxchg %esi,(%r9) 0.00 : 66270: 0f 85 d5 01 00 00 jne 6644b <_L_lock_37> 0.00 : 66276: 48 8b 85 88 00 00 00 mov 0x88(%rbp),%rax 0.00 : 6627d: 4c 89 50 08 mov %r10,0x8(%rax) 0.00 : 66281: 4c 8b 8d 88 00 00 00 mov 0x88(%rbp),%r9 0.00 : 66288: 41 83 41 04 01 addl $0x1,0x4(%r9) 0.00 : 6628d: 8b 55 00 mov 0x0(%rbp),%edx 0.00 : 66290: f6 c6 20 test $0x20,%dh 0.00 : 66293: 0f 85 ff 00 00 00 jne 66398 <_IO_fclose@@GLIBC_2.2.5+0x178> 0.00 : 66299: 89 d0 mov %edx,%eax 0.00 : 6629b: 83 e0 20 and $0x20,%eax 0.00 : 6629e: 83 f8 01 cmp $0x1,%eax 0.00 : 662a1: 45 19 e4 sbb %r12d,%r12d 0.00 : 662a4: 41 f7 d4 not %r12d 0.00 : 662a7: 66 85 d2 test %dx,%dx 0.00 : 662aa: 78 18 js 662c4 <_IO_fclose@@GLIBC_2.2.5+0xa4> 0.00 : 662ac: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 662b3: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 662b6: 83 e8 01 sub $0x1,%eax 0.00 : 662b9: 85 c0 test %eax,%eax 0.00 : 662bb: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 662be: 0f 84 fc 00 00 00 je 663c0 <_IO_fclose@@GLIBC_2.2.5+0x1a0> 0.00 : 662c4: 48 8b 85 d8 00 00 00 mov 0xd8(%rbp),%rax 0.00 : 662cb: 31 f6 xor %esi,%esi 0.00 : 662cd: 48 89 ef mov %rbp,%rdi 0.00 : 662d0: ff 50 10 callq *0x10(%rax) 0.00 : 662d3: 8b 85 c0 00 00 00 mov 0xc0(%rbp),%eax 0.00 : 662d9: 85 c0 test %eax,%eax 0.00 : 662db: 0f 8e 9f 00 00 00 jle 66380 <_IO_fclose@@GLIBC_2.2.5+0x160> 0.00 : 662e1: 48 8b 9d 98 00 00 00 mov 0x98(%rbp),%rbx 0.00 : 662e8: be 01 00 00 00 mov $0x1,%esi 0.00 : 662ed: 31 c0 xor %eax,%eax 0.00 : 662ef: 83 3d be 13 31 00 00 cmpl $0x0,0x3113be(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 662f6: 74 10 je 66308 <_IO_fclose@@GLIBC_2.2.5+0xe8> 0.00 : 662f8: f0 0f b1 35 90 0f 31 lock cmpxchg %esi,0x310f90(%rip) # 377290 <__gconv_lock> 0.00 : 662ff: 00 0.00 : 66300: 0f 85 60 01 00 00 jne 66466 <_L_lock_102> 0.00 : 66306: eb 0d jmp 66315 <_IO_fclose@@GLIBC_2.2.5+0xf5> 0.00 : 66308: 0f b1 35 81 0f 31 00 cmpxchg %esi,0x310f81(%rip) # 377290 <__gconv_lock> 0.00 : 6630f: 0f 85 51 01 00 00 jne 66466 <_L_lock_102> 0.00 : 66315: 48 8b 7b 48 mov 0x48(%rbx),%rdi 0.00 : 66319: e8 a2 9f fb ff callq 202c0 <__gconv_release_step> 0.00 : 6631e: 48 8b bb 90 00 00 00 mov 0x90(%rbx),%rdi 0.00 : 66325: e8 96 9f fb ff callq 202c0 <__gconv_release_step> 0.00 : 6632a: 83 3d 83 13 31 00 00 cmpl $0x0,0x311383(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 66331: 74 0f je 66342 <_IO_fclose@@GLIBC_2.2.5+0x122> 0.00 : 66333: f0 ff 0d 56 0f 31 00 lock decl 0x310f56(%rip) # 377290 <__gconv_lock> 0.00 : 6633a: 0f 85 45 01 00 00 jne 66485 <_L_unlock_115> 0.00 : 66340: eb 0c jmp 6634e <_IO_fclose@@GLIBC_2.2.5+0x12e> 0.00 : 66342: ff 0d 48 0f 31 00 decl 0x310f48(%rip) # 377290 <__gconv_lock> 0.00 : 66348: 0f 85 37 01 00 00 jne 66485 <_L_unlock_115> 0.00 : 6634e: 48 3b 2d 53 ca 30 00 cmp 0x30ca53(%rip),%rbp # 372da8 0.00 : 66355: 74 21 je 66378 <_IO_fclose@@GLIBC_2.2.5+0x158> 0.00 : 66357: 48 3b 2d 52 ca 30 00 cmp 0x30ca52(%rip),%rbp # 372db0 0.00 : 6635e: 74 18 je 66378 <_IO_fclose@@GLIBC_2.2.5+0x158> 0.00 : 66360: 48 3b 2d 51 ca 30 00 cmp 0x30ca51(%rip),%rbp # 372db8 0.00 : 66367: 74 0f je 66378 <_IO_fclose@@GLIBC_2.2.5+0x158> 0.00 : 66369: c7 45 00 00 00 00 00 movl $0x0,0x0(%rbp) 0.00 : 66370: 48 89 ef mov %rbp,%rdi 0.00 : 66373: e8 28 85 fb ff callq 1e8a0 0.00 : 66378: 5b pop %rbx 0.00 : 66379: 5d pop %rbp 0.00 : 6637a: 44 89 e0 mov %r12d,%eax 0.00 : 6637d: 41 5c pop %r12 0.00 : 6637f: c3 retq 0.00 : 66380: 48 83 7d 48 00 cmpq $0x0,0x48(%rbp) 0.00 : 66385: 74 c7 je 6634e <_IO_fclose@@GLIBC_2.2.5+0x12e> 0.00 : 66387: 48 89 ef mov %rbp,%rdi 0.00 : 6638a: e8 51 ea 00 00 callq 74de0 <_IO_free_backup_area> 0.00 : 6638f: 90 nop 0.00 : 66390: eb bc jmp 6634e <_IO_fclose@@GLIBC_2.2.5+0x12e> 0.00 : 66392: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 66398: 48 89 ef mov %rbp,%rdi 0.00 : 6639b: e8 00 d2 00 00 callq 735a0 <_IO_file_close_it@@GLIBC_2.2.5> 0.00 : 663a0: 41 89 c4 mov %eax,%r12d 0.00 : 663a3: 8b 55 00 mov 0x0(%rbp),%edx 0.00 : 663a6: e9 fc fe ff ff jmpq 662a7 <_IO_fclose@@GLIBC_2.2.5+0x87> 0.00 : 663ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 663b0: e8 5b d4 00 00 callq 73810 <_IO_un_link> 0.00 : 663b5: 8b 55 00 mov 0x0(%rbp),%edx 0.00 : 663b8: e9 75 fe ff ff jmpq 66232 <_IO_fclose@@GLIBC_2.2.5+0x12> 0.00 : 663bd: 0f 1f 00 nopl (%rax) ??:0 100.00 : 663c0: 48 8b 85 88 00 00 00 mov 0x88(%rbp),%rax 0.00 : 663c7: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 663ce: 00 0.00 : 663cf: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 663d6: 83 3d d7 12 31 00 00 cmpl $0x0,0x3112d7(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 663dd: 74 0b je 663ea <_IO_fclose@@GLIBC_2.2.5+0x1ca> 0.00 : 663df: f0 ff 0a lock decl (%rdx) 0.00 : 663e2: 0f 85 bc 00 00 00 jne 664a4 <_L_unlock_205> 0.00 : 663e8: eb 08 jmp 663f2 <_IO_fclose@@GLIBC_2.2.5+0x1d2> 0.00 : 663ea: ff 0a decl (%rdx) 0.00 : 663ec: 0f 85 b2 00 00 00 jne 664a4 <_L_unlock_205> 0.00 : 663f2: e9 cd fe ff ff jmpq 662c4 <_IO_fclose@@GLIBC_2.2.5+0xa4> 0.00 : 663f7: 66 83 7d 00 00 cmpw $0x0,0x0(%rbp) 0.00 : 663fc: 49 89 c0 mov %rax,%r8 0.00 : 663ff: 78 42 js 66443 <_IO_fclose@@GLIBC_2.2.5+0x223> 0.00 : 66401: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 66408: 8b 42 04 mov 0x4(%rdx),%eax 0.00 : 6640b: 83 e8 01 sub $0x1,%eax 0.00 : 6640e: 85 c0 test %eax,%eax 0.00 : 66410: 89 42 04 mov %eax,0x4(%rdx) 0.00 : 66413: 75 2e jne 66443 <_IO_fclose@@GLIBC_2.2.5+0x223> 0.00 : 66415: 48 8b 85 88 00 00 00 mov 0x88(%rbp),%rax 0.00 : 6641c: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 0.00 : 66423: 00 0.00 : 66424: 48 8b 95 88 00 00 00 mov 0x88(%rbp),%rdx 0.00 : 6642b: 83 3d 82 12 31 00 00 cmpl $0x0,0x311282(%rip) # 3776b4 <__libc_multiple_threads> 0.00 : 66432: 74 0b je 6643f <_IO_fclose@@GLIBC_2.2.5+0x21f> 0.00 : 66434: f0 ff 0a lock decl (%rdx) 0.00 : 66437: 0f 85 82 00 00 00 jne 664bf <_L_unlock_238> 0.00 : 6643d: eb 04 jmp 66443 <_IO_fclose@@GLIBC_2.2.5+0x223> 0.00 : 6643f: ff 0a decl (%rdx) 0.00 : 66441: 75 7c jne 664bf <_L_unlock_238> 0.00 : 66443: 4c 89 c7 mov %r8,%rdi 0.00 : 66446: e8 15 8b fb ff callq 1ef60 <_Unwind_Resume> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000071ea0 <_IO_file_xsgetn>: 0.00 : 71ea0: 41 56 push %r14 0.00 : 71ea2: 49 89 d6 mov %rdx,%r14 0.00 : 71ea5: 41 55 push %r13 0.00 : 71ea7: 41 54 push %r12 0.00 : 71ea9: 55 push %rbp 0.00 : 71eaa: 48 89 fd mov %rdi,%rbp 0.00 : 71ead: 53 push %rbx 0.00 : 71eae: 48 83 7f 38 00 cmpq $0x0,0x38(%rdi) 0.00 : 71eb3: 48 89 f3 mov %rsi,%rbx 0.00 : 71eb6: 0f 84 6a 01 00 00 je 72026 <_IO_file_xsgetn+0x186> 0.00 : 71ebc: 4d 85 f6 test %r14,%r14 0.00 : 71ebf: 0f 84 e2 00 00 00 je 71fa7 <_IO_file_xsgetn+0x107> 0.00 : 71ec5: 49 89 dd mov %rbx,%r13 0.00 : 71ec8: 4d 89 f4 mov %r14,%r12 0.00 : 71ecb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 71ed0: 48 8b 75 08 mov 0x8(%rbp),%rsi 0.00 : 71ed4: 48 8b 5d 10 mov 0x10(%rbp),%rbx 0.00 : 71ed8: 48 29 f3 sub %rsi,%rbx 0.00 : 71edb: 4c 39 e3 cmp %r12,%rbx 0.00 : 71ede: 0f 83 b4 00 00 00 jae 71f98 <_IO_file_xsgetn+0xf8> 0.00 : 71ee4: 48 85 db test %rbx,%rbx 0.00 : 71ee7: 0f 85 db 00 00 00 jne 71fc8 <_IO_file_xsgetn+0x128> 0.00 : 71eed: 8b 45 00 mov 0x0(%rbp),%eax 0.00 : 71ef0: f6 c4 01 test $0x1,%ah 0.00 : 71ef3: 0f 85 bf 00 00 00 jne 71fb8 <_IO_file_xsgetn+0x118> 0.00 : 71ef9: 48 8b 4d 38 mov 0x38(%rbp),%rcx 0.00 : 71efd: 48 85 c9 test %rcx,%rcx 0.00 : 71f00: 74 10 je 71f12 <_IO_file_xsgetn+0x72> 0.00 : 71f02: 48 8b 45 40 mov 0x40(%rbp),%rax 0.00 : 71f06: 48 29 c8 sub %rcx,%rax 0.00 : 71f09: 49 39 c4 cmp %rax,%r12 0.00 : 71f0c: 0f 82 d6 00 00 00 jb 71fe8 <_IO_file_xsgetn+0x148> 0.00 : 71f12: 48 85 c9 test %rcx,%rcx 0.00 : 71f15: 48 89 4d 18 mov %rcx,0x18(%rbp) 0.00 : 71f19: 48 89 4d 08 mov %rcx,0x8(%rbp) 0.00 : 71f1d: 48 89 4d 10 mov %rcx,0x10(%rbp) 0.00 : 71f21: 48 89 4d 28 mov %rcx,0x28(%rbp) 0.00 : 71f25: 4c 89 e2 mov %r12,%rdx 0.00 : 71f28: 48 89 4d 20 mov %rcx,0x20(%rbp) 0.00 : 71f2c: 48 89 4d 30 mov %rcx,0x30(%rbp) 0.00 : 71f30: 74 1e je 71f50 <_IO_file_xsgetn+0xb0> 0.00 : 71f32: 48 8b 75 40 mov 0x40(%rbp),%rsi 0.00 : 71f36: 48 29 ce sub %rcx,%rsi 0.00 : 71f39: 48 83 fe 7f cmp $0x7f,%rsi 0.00 : 71f3d: 76 11 jbe 71f50 <_IO_file_xsgetn+0xb0> 0.00 : 71f3f: 4c 89 e0 mov %r12,%rax 0.00 : 71f42: 31 d2 xor %edx,%edx 0.00 : 71f44: 48 f7 f6 div %rsi 0.00 : 71f47: 4c 89 e0 mov %r12,%rax 0.00 : 71f4a: 48 29 d0 sub %rdx,%rax 0.00 : 71f4d: 48 89 c2 mov %rax,%rdx 0.00 : 71f50: 48 8b 85 d8 00 00 00 mov 0xd8(%rbp),%rax 0.00 : 71f57: 4c 89 ee mov %r13,%rsi 0.00 : 71f5a: 48 89 ef mov %rbp,%rdi 0.00 : 71f5d: ff 50 70 callq *0x70(%rax) 0.00 : 71f60: 48 83 f8 00 cmp $0x0,%rax 0.00 : 71f64: 0f 8e 9e 00 00 00 jle 72008 <_IO_file_xsgetn+0x168> 0.00 : 71f6a: 48 8b 95 90 00 00 00 mov 0x90(%rbp),%rdx 0.00 : 71f71: 49 01 c5 add %rax,%r13 0.00 : 71f74: 49 29 c4 sub %rax,%r12 0.00 : 71f77: 48 83 fa ff cmp $0xffffffffffffffff,%rdx 0.00 : 71f7b: 74 0a je 71f87 <_IO_file_xsgetn+0xe7> 0.00 : 71f7d: 48 01 d0 add %rdx,%rax 0.00 : 71f80: 48 89 85 90 00 00 00 mov %rax,0x90(%rbp) 0.00 : 71f87: 4d 85 e4 test %r12,%r12 0.00 : 71f8a: 0f 85 40 ff ff ff jne 71ed0 <_IO_file_xsgetn+0x30> 0.00 : 71f90: eb 15 jmp 71fa7 <_IO_file_xsgetn+0x107> 0.00 : 71f92: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 71f98: 4c 89 e2 mov %r12,%rdx 0.00 : 71f9b: 4c 89 ef mov %r13,%rdi 0.00 : 71f9e: e8 ad 27 01 00 callq 84750 0.00 : 71fa3: 4c 01 65 08 add %r12,0x8(%rbp) 0.00 : 71fa7: 5b pop %rbx 0.00 : 71fa8: 5d pop %rbp 0.00 : 71fa9: 41 5c pop %r12 0.00 : 71fab: 41 5d pop %r13 0.00 : 71fad: 4c 89 f0 mov %r14,%rax 0.00 : 71fb0: 41 5e pop %r14 100.00 : 71fb2: c3 retq 0.00 : 71fb3: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 71fb8: 48 89 ef mov %rbp,%rdi 0.00 : 71fbb: e8 00 1d 00 00 callq 73cc0 <_IO_switch_to_main_get_area> 0.00 : 71fc0: eb c5 jmp 71f87 <_IO_file_xsgetn+0xe7> 0.00 : 71fc2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 71fc8: 4c 89 ef mov %r13,%rdi 0.00 : 71fcb: 48 89 da mov %rbx,%rdx 0.00 : 71fce: 49 29 dc sub %rbx,%r12 0.00 : 71fd1: e8 ba 1f 01 00 callq 83f90 <__mempcpy> 0.00 : 71fd6: 48 01 5d 08 add %rbx,0x8(%rbp) 0.00 : 71fda: 49 89 c5 mov %rax,%r13 0.00 : 71fdd: e9 0b ff ff ff jmpq 71eed <_IO_file_xsgetn+0x4d> 0.00 : 71fe2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 71fe8: 48 89 ef mov %rbp,%rdi 0.00 : 71feb: e8 e0 32 00 00 callq 752d0 <__underflow> 0.00 : 71ff0: 83 c0 01 add $0x1,%eax 0.00 : 71ff3: 75 92 jne 71f87 <_IO_file_xsgetn+0xe7> 0.00 : 71ff5: 4d 29 e6 sub %r12,%r14 0.00 : 71ff8: 5b pop %rbx 0.00 : 71ff9: 5d pop %rbp 0.00 : 71ffa: 41 5c pop %r12 0.00 : 71ffc: 41 5d pop %r13 0.00 : 71ffe: 4c 89 f0 mov %r14,%rax 0.00 : 72001: 41 5e pop %r14 0.00 : 72003: c3 retq 0.00 : 72004: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 72008: 75 09 jne 72013 <_IO_file_xsgetn+0x173> 0.00 : 7200a: 83 4d 00 10 orl $0x10,0x0(%rbp) 0.00 : 7200e: 4d 29 e6 sub %r12,%r14 0.00 : 72011: eb e5 jmp 71ff8 <_IO_file_xsgetn+0x158> 0.00 : 72013: 83 4d 00 20 orl $0x20,0x0(%rbp) 0.00 : 72017: 4d 29 e6 sub %r12,%r14 0.00 : 7201a: 5b pop %rbx 0.00 : 7201b: 5d pop %rbp 0.00 : 7201c: 41 5c pop %r12 0.00 : 7201e: 41 5d pop %r13 0.00 : 72020: 4c 89 f0 mov %r14,%rax 0.00 : 72023: 41 5e pop %r14 0.00 : 72025: c3 retq 0.00 : 72026: 48 8b 7f 48 mov 0x48(%rdi),%rdi 0.00 : 7202a: 48 85 ff test %rdi,%rdi 0.00 : 7202d: 74 0c je 7203b <_IO_file_xsgetn+0x19b> 0.00 : 7202f: e8 6c c8 fa ff callq 1e8a0 0.00 : 72034: 81 65 00 ff fe ff ff andl $0xfffffeff,0x0(%rbp) 0.00 : 7203b: 48 89 ef mov %rbp,%rdi 0.00 : 7203e: e8 8d 1d 00 00 callq 73dd0 <_IO_doallocbuf> 0.00 : 72043: e9 74 fe ff ff jmpq 71ebc <_IO_file_xsgetn+0x1c> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000724f0 <_IO_file_read>: ??:0 100.00 : 724f0: 48 83 ec 08 sub $0x8,%rsp 0.00 : 724f4: f6 47 74 02 testb $0x2,0x74(%rdi) 0.00 : 724f8: 75 0c jne 72506 <_IO_file_read+0x16> 0.00 : 724fa: 8b 7f 70 mov 0x70(%rdi),%edi 0.00 : 724fd: 48 83 c4 08 add $0x8,%rsp 0.00 : 72501: e9 ba b0 05 00 jmpq cd5c0 <__read> 0.00 : 72506: 8b 7f 70 mov 0x70(%rdi),%edi 0.00 : 72509: e8 bb b0 05 00 callq cd5c9 <__read_nocancel> 0.00 : 7250e: 48 83 c4 08 add $0x8,%rsp 0.00 : 72512: 48 98 cltq Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000072f50 <_IO_file_open>: ??:0 100.00 : 72f50: 48 89 5c 24 e8 mov %rbx,-0x18(%rsp) 0.00 : 72f55: 48 89 fb mov %rdi,%rbx 0.00 : 72f58: 48 89 6c 24 f0 mov %rbp,-0x10(%rsp) 0.00 : 72f5d: 4c 89 64 24 f8 mov %r12,-0x8(%rsp) 0.00 : 72f62: 48 83 ec 18 sub $0x18,%rsp 0.00 : 72f66: f6 43 74 02 testb $0x2,0x74(%rbx) 0.00 : 72f6a: 48 89 f7 mov %rsi,%rdi 0.00 : 72f6d: 89 d0 mov %edx,%eax 0.00 : 72f6f: 44 89 c5 mov %r8d,%ebp 0.00 : 72f72: 0f 85 a4 00 00 00 jne 7301c <_IO_file_open+0xcc> 0.00 : 72f78: 89 c6 mov %eax,%esi 0.00 : 72f7a: 89 ca mov %ecx,%edx 0.00 : 72f7c: 31 c0 xor %eax,%eax 0.00 : 72f7e: e8 4d a2 05 00 callq cd1d0 <__open> 0.00 : 72f83: 41 89 c4 mov %eax,%r12d 0.00 : 72f86: 45 85 e4 test %r12d,%r12d 0.00 : 72f89: 0f 88 89 00 00 00 js 73018 <_IO_file_open+0xc8> 0.00 : 72f8f: 8b 03 mov (%rbx),%eax 0.00 : 72f91: 89 ea mov %ebp,%edx 0.00 : 72f93: 81 e5 04 10 00 00 and $0x1004,%ebp 0.00 : 72f99: 81 e2 0c 10 00 00 and $0x100c,%edx 0.00 : 72f9f: 44 89 63 70 mov %r12d,0x70(%rbx) 0.00 : 72fa3: 25 f3 ef ff ff and $0xffffeff3,%eax 0.00 : 72fa8: 09 c2 or %eax,%edx 0.00 : 72faa: 81 fd 04 10 00 00 cmp $0x1004,%ebp 0.00 : 72fb0: 89 13 mov %edx,(%rbx) 0.00 : 72fb2: 74 24 je 72fd8 <_IO_file_open+0x88> 0.00 : 72fb4: 48 89 df mov %rbx,%rdi 0.00 : 72fb7: e8 c4 0a 00 00 callq 73a80 <_IO_link_in> 0.00 : 72fbc: 48 89 d8 mov %rbx,%rax 0.00 : 72fbf: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp 0.00 : 72fc4: 48 8b 1c 24 mov (%rsp),%rbx 0.00 : 72fc8: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 0.00 : 72fcd: 48 83 c4 18 add $0x18,%rsp 0.00 : 72fd1: c3 retq 0.00 : 72fd2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 72fd8: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 72fdf: 31 f6 xor %esi,%esi 0.00 : 72fe1: b9 03 00 00 00 mov $0x3,%ecx 0.00 : 72fe6: ba 02 00 00 00 mov $0x2,%edx 0.00 : 72feb: 48 89 df mov %rbx,%rdi 0.00 : 72fee: ff 50 48 callq *0x48(%rax) 0.00 : 72ff1: 48 83 c0 01 add $0x1,%rax 0.00 : 72ff5: 75 bd jne 72fb4 <_IO_file_open+0x64> 0.00 : 72ff7: 48 8b 15 3a ee 2f 00 mov 0x2fee3a(%rip),%rdx # 371e38 <_DYNAMIC+0x2d8> 0.00 : 72ffe: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax 0.00 : 73005: 00 00 0.00 : 73007: 83 3c 10 1d cmpl $0x1d,(%rax,%rdx,1) 0.00 : 7300b: 74 a7 je 72fb4 <_IO_file_open+0x64> 0.00 : 7300d: 44 89 e7 mov %r12d,%edi 0.00 : 73010: e8 54 a5 05 00 callq cd569 <__close_nocancel> 0.00 : 73015: 0f 1f 00 nopl (%rax) 0.00 : 73018: 31 db xor %ebx,%ebx 0.00 : 7301a: eb a0 jmp 72fbc <_IO_file_open+0x6c> 0.00 : 7301c: 89 c6 mov %eax,%esi 0.00 : 7301e: 89 ca mov %ecx,%edx 0.00 : 73020: 31 c0 xor %eax,%eax 0.00 : 73022: e8 b2 a1 05 00 callq cd1d9 <__open_nocancel> 0.00 : 73027: 41 89 c4 mov %eax,%r12d 0.00 : 7302a: e9 57 ff ff ff jmpq 72f86 <_IO_file_open+0x36> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000074e20 <_IO_default_xsputn>: 0.00 : 74e20: 41 56 push %r14 0.00 : 74e22: 31 c0 xor %eax,%eax 0.00 : 74e24: 48 85 d2 test %rdx,%rdx 0.00 : 74e27: 49 89 d6 mov %rdx,%r14 0.00 : 74e2a: 41 55 push %r13 0.00 : 74e2c: 49 89 fd mov %rdi,%r13 0.00 : 74e2f: 41 54 push %r12 0.00 : 74e31: 49 89 d4 mov %rdx,%r12 0.00 : 74e34: 55 push %rbp 0.00 : 74e35: 48 89 f5 mov %rsi,%rbp 0.00 : 74e38: 53 push %rbx 0.00 : 74e39: 0f 84 7f 00 00 00 je 74ebe <_IO_default_xsputn+0x9e> 0.00 : 74e3f: 90 nop 0.00 : 74e40: 49 8b 7d 28 mov 0x28(%r13),%rdi 0.00 : 74e44: 49 8b 45 30 mov 0x30(%r13),%rax 0.00 : 74e48: 48 39 c7 cmp %rax,%rdi 0.00 : 74e4b: 73 42 jae 74e8f <_IO_default_xsputn+0x6f> 0.00 : 74e4d: 48 29 f8 sub %rdi,%rax 0.00 : 74e50: 49 39 c4 cmp %rax,%r12 0.00 : 74e53: 48 89 c3 mov %rax,%rbx 0.00 : 74e56: 49 0f 46 dc cmovbe %r12,%rbx 0.00 : 74e5a: 48 83 fb 14 cmp $0x14,%rbx 0.00 : 74e5e: 77 70 ja 74ed0 <_IO_default_xsputn+0xb0> 0.00 : 74e60: 48 85 db test %rbx,%rbx 0.00 : 74e63: 74 27 je 74e8c <_IO_default_xsputn+0x6c> 0.00 : 74e65: 31 d2 xor %edx,%edx 0.00 : 74e67: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 74e6e: 00 00 0.00 : 74e70: 0f b6 44 15 00 movzbl 0x0(%rbp,%rdx,1),%eax ??:0 100.00 : 74e75: 88 04 17 mov %al,(%rdi,%rdx,1) 0.00 : 74e78: 48 83 c2 01 add $0x1,%rdx 0.00 : 74e7c: 48 39 da cmp %rbx,%rdx 0.00 : 74e7f: 75 ef jne 74e70 <_IO_default_xsputn+0x50> 0.00 : 74e81: 48 8d 04 1f lea (%rdi,%rbx,1),%rax 0.00 : 74e85: 48 01 dd add %rbx,%rbp 0.00 : 74e88: 49 89 45 28 mov %rax,0x28(%r13) 0.00 : 74e8c: 49 29 dc sub %rbx,%r12 0.00 : 74e8f: 4d 85 e4 test %r12,%r12 0.00 : 74e92: 74 24 je 74eb8 <_IO_default_xsputn+0x98> 0.00 : 74e94: 49 8b 85 d8 00 00 00 mov 0xd8(%r13),%rax 0.00 : 74e9b: 0f b6 75 00 movzbl 0x0(%rbp),%esi 0.00 : 74e9f: 4c 89 ef mov %r13,%rdi 0.00 : 74ea2: ff 50 18 callq *0x18(%rax) 0.00 : 74ea5: 83 c0 01 add $0x1,%eax 0.00 : 74ea8: 74 0e je 74eb8 <_IO_default_xsputn+0x98> 0.00 : 74eaa: 48 83 c5 01 add $0x1,%rbp 0.00 : 74eae: 49 83 ec 01 sub $0x1,%r12 0.00 : 74eb2: eb 8c jmp 74e40 <_IO_default_xsputn+0x20> 0.00 : 74eb4: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 74eb8: 4c 89 f0 mov %r14,%rax 0.00 : 74ebb: 4c 29 e0 sub %r12,%rax 0.00 : 74ebe: 5b pop %rbx 0.00 : 74ebf: 5d pop %rbp 0.00 : 74ec0: 41 5c pop %r12 0.00 : 74ec2: 41 5d pop %r13 0.00 : 74ec4: 41 5e pop %r14 0.00 : 74ec6: c3 retq 0.00 : 74ec7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 74ece: 00 00 0.00 : 74ed0: 48 89 ee mov %rbp,%rsi 0.00 : 74ed3: 48 89 da mov %rbx,%rdx 0.00 : 74ed6: 48 01 dd add %rbx,%rbp 0.00 : 74ed9: e8 b2 f0 00 00 callq 83f90 <__mempcpy> 0.00 : 74ede: 49 89 45 28 mov %rax,0x28(%r13) 0.00 : 74ee2: eb a8 jmp 74e8c <_IO_default_xsputn+0x6c> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 00000000000752d0 <__underflow>: 0.00 : 752d0: 53 push %rbx ??:0 100.00 : 752d1: 8b 87 c0 00 00 00 mov 0xc0(%rdi),%eax 0.00 : 752d7: 48 89 fb mov %rdi,%rbx 0.00 : 752da: 85 c0 test %eax,%eax 0.00 : 752dc: 75 52 jne 75330 <__underflow+0x60> 0.00 : 752de: c7 87 c0 00 00 00 ff movl $0xffffffff,0xc0(%rdi) 0.00 : 752e5: ff ff ff 0.00 : 752e8: 8b 03 mov (%rbx),%eax 0.00 : 752ea: f6 c4 08 test $0x8,%ah 0.00 : 752ed: 75 6e jne 7535d <__underflow+0x8d> 0.00 : 752ef: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 752f3: 48 3b 43 10 cmp 0x10(%rbx),%rax 0.00 : 752f7: 72 5f jb 75358 <__underflow+0x88> 0.00 : 752f9: 8b 03 mov (%rbx),%eax 0.00 : 752fb: f6 c4 01 test $0x1,%ah 0.00 : 752fe: 75 40 jne 75340 <__underflow+0x70> 0.00 : 75300: 48 83 7b 60 00 cmpq $0x0,0x60(%rbx) 0.00 : 75305: 75 69 jne 75370 <__underflow+0xa0> 0.00 : 75307: 48 83 7b 48 00 cmpq $0x0,0x48(%rbx) 0.00 : 7530c: 74 08 je 75316 <__underflow+0x46> 0.00 : 7530e: 48 89 df mov %rbx,%rdi 0.00 : 75311: e8 ca fa ff ff callq 74de0 <_IO_free_backup_area> 0.00 : 75316: 48 8b 83 d8 00 00 00 mov 0xd8(%rbx),%rax 0.00 : 7531d: 48 89 df mov %rbx,%rdi 0.00 : 75320: 5b pop %rbx 0.00 : 75321: 4c 8b 58 20 mov 0x20(%rax),%r11 0.00 : 75325: 41 ff e3 jmpq *%r11 0.00 : 75328: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 0.00 : 7532f: 00 0.00 : 75330: 83 c0 01 add $0x1,%eax 0.00 : 75333: 74 b3 je 752e8 <__underflow+0x18> 0.00 : 75335: b8 ff ff ff ff mov $0xffffffff,%eax 0.00 : 7533a: 5b pop %rbx 0.00 : 7533b: c3 retq 0.00 : 7533c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 75340: 48 89 df mov %rbx,%rdi 0.00 : 75343: e8 78 e9 ff ff callq 73cc0 <_IO_switch_to_main_get_area> 0.00 : 75348: 48 8b 43 08 mov 0x8(%rbx),%rax 0.00 : 7534c: 48 3b 43 10 cmp 0x10(%rbx),%rax 0.00 : 75350: 73 ae jae 75300 <__underflow+0x30> 0.00 : 75352: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0.00 : 75358: 0f b6 00 movzbl (%rax),%eax 0.00 : 7535b: 5b pop %rbx 0.00 : 7535c: c3 retq 0.00 : 7535d: 48 89 df mov %rbx,%rdi 0.00 : 75360: e8 bb e9 ff ff callq 73d20 <_IO_switch_to_get_mode> 0.00 : 75365: 83 c0 01 add $0x1,%eax 0.00 : 75368: 75 85 jne 752ef <__underflow+0x1f> 0.00 : 7536a: eb c9 jmp 75335 <__underflow+0x65> 0.00 : 7536c: 0f 1f 40 00 nopl 0x0(%rax) 0.00 : 75370: 48 8b 73 10 mov 0x10(%rbx),%rsi 0.00 : 75374: 48 89 df mov %rbx,%rdi 0.00 : 75377: e8 74 fb ff ff callq 74ef0 0.00 : 7537c: 85 c0 test %eax,%eax 0.00 : 7537e: 66 90 xchg %ax,%ax 0.00 : 75380: 74 94 je 75316 <__underflow+0x46> 0.00 : 75382: eb b1 jmp 75335 <__underflow+0x65> Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 000000000007d6c0 <__default_morecore>: ??:0 100.00 : 7d6c0: 48 83 ec 08 sub $0x8,%rsp 0.00 : 7d6c4: e8 47 5c 05 00 callq d3310 <__sbrk> 0.00 : 7d6c9: ba 00 00 00 00 mov $0x0,%edx 0.00 : 7d6ce: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 0.00 : 7d6d2: 48 0f 44 c2 cmove %rdx,%rax 0.00 : 7d6d6: 48 83 c4 08 add $0x8,%rsp Sorted summary for file /lib64/libc-2.11.3.so ---------------------------------------------- 100.00 ??:0 Percent | Source code & Disassembly of /lib64/libc-2.11.3.so ------------------------------------------------ : : : : Disassembly of section .text: : : 0000000000099370