• Alberto García Hierro's avatar
    database/sql: Remove redundant condition in if · c8869e9c
    Alberto García Hierro authored
    The final condition (db.maxIdleConnsLocked() > db.freeConn.Len()) can
    only be true iff db.maxIdleConnsLocked() is greater than 0, so previously
    checking if it's greater than 0 is a waste, specially when that involves
    a method call which (ATM) can't be inlined and includes a switch.
    
    Dissasembly follows (test for err == nil has been omitted for clarity):
    
    Before:
    43c357: cmp    $0x0,%bl
    43c35a: jne    43c3ce <database/sql.(*DB).putConnDBLocked+0x1ce>
    43c35c: mov    %rax,(%rsp)
    43c360: callq  43aec0 <database/sql.(*DB).maxIdleConnsLocked>
    43c365: mov    0x8(%rsp),%rbx
    43c36a: cmp    $0x0,%rbx
    43c36e: jle    43c3ce <database/sql.(*DB).putConnDBLocked+0x1ce>
    43c370: mov    0x30(%rsp),%rbx
    43c375: mov    %rbx,(%rsp)
    43c379: callq  43aec0 <database/sql.(*DB).maxIdleConnsLocked>
    43c37e: mov    0x30(%rsp),%rdx
    43c383: mov    0x8(%rsp),%rcx
    43c388: mov    0x28(%rdx),%rbp
    43c38c: mov    0x28(%rbp),%rbx
    43c390: cmp    %rcx,%rbx
    43c393: jge    43c3ce <database/sql.(*DB).putConnDBLocked+0x1ce>
    43c395: mov    0x28(%rdx),%rbp
    43c399: mov    %rbp,(%rsp)
    43c39d: mov    0x38(%rsp),%rcx
    43c3a2: mov    $0x556c60,%eax
    43c3a7: mov    %rax,0x8(%rsp)
    43c3ac: mov    %rcx,0x10(%rsp)
    43c3b1: callq  4db5b0 <container/list.(*List).PushFront>
    
    After:
    43c357: cmp    $0x0,%bl
    43c35a: jne    43c3b5 <database/sql.(*DB).putConnDBLocked+0x1b5>
    43c35c: mov    %rax,(%rsp)
    43c360: callq  43aec0 <database/sql.(*DB).maxIdleConnsLocked>
    43c365: mov    0x30(%rsp),%rdx
    43c36a: mov    0x8(%rsp),%rcx
    43c36f: mov    0x28(%rdx),%rbp
    43c373: mov    0x28(%rbp),%rbx
    43c377: cmp    %rcx,%rbx
    43c37a: jge    43c3b5 <database/sql.(*DB).putConnDBLocked+0x1b5>
    43c37c: mov    0x28(%rdx),%rbp
    43c380: mov    %rbp,(%rsp)
    43c384: mov    0x38(%rsp),%rcx
    43c389: mov    $0x556c60,%eax
    43c38e: mov    %rax,0x8(%rsp)
    43c393: mov    %rcx,0x10(%rsp)
    43c398: callq  4db590 <container/list.(*List).PushFront>
    
    R=golang-dev, bradfitz, iant
    CC=golang-dev
    https://golang.org/cl/14656044
    c8869e9c
Name
Last commit
Last update
..
cmd Loading commit data...
lib9 Loading commit data...
libbio Loading commit data...
liblink Loading commit data...
libmach Loading commit data...
pkg Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...
sudo.bash Loading commit data...