| Index: third_party/sqlite/src/src/btmutex.c
|
| diff --git a/third_party/sqlite/src/src/btmutex.c b/third_party/sqlite/src/src/btmutex.c
|
| index d87d4d5feeb6307aecdc9a83111489ab30c678c3..f9fe5b3dde03c726191d361252bf29d724b1f50a 100644
|
| --- a/third_party/sqlite/src/src/btmutex.c
|
| +++ b/third_party/sqlite/src/src/btmutex.c
|
| @@ -38,7 +38,7 @@ static void lockBtreeMutex(Btree *p){
|
| ** Release the BtShared mutex associated with B-Tree handle p and
|
| ** clear the p->locked boolean.
|
| */
|
| -static void unlockBtreeMutex(Btree *p){
|
| +static void SQLITE_NOINLINE unlockBtreeMutex(Btree *p){
|
| BtShared *pBt = p->pBt;
|
| assert( p->locked==1 );
|
| assert( sqlite3_mutex_held(pBt->mutex) );
|
| @@ -49,6 +49,9 @@ static void unlockBtreeMutex(Btree *p){
|
| p->locked = 0;
|
| }
|
|
|
| +/* Forward reference */
|
| +static void SQLITE_NOINLINE btreeLockCarefully(Btree *p);
|
| +
|
| /*
|
| ** Enter a mutex on the given BTree object.
|
| **
|
| @@ -66,8 +69,6 @@ static void unlockBtreeMutex(Btree *p){
|
| ** subsequent Btrees that desire a lock.
|
| */
|
| void sqlite3BtreeEnter(Btree *p){
|
| - Btree *pLater;
|
| -
|
| /* Some basic sanity checking on the Btree. The list of Btrees
|
| ** connected by pNext and pPrev should be in sorted order by
|
| ** Btree.pBt value. All elements of the list should belong to
|
| @@ -92,9 +93,20 @@ void sqlite3BtreeEnter(Btree *p){
|
| if( !p->sharable ) return;
|
| p->wantToLock++;
|
| if( p->locked ) return;
|
| + btreeLockCarefully(p);
|
| +}
|
| +
|
| +/* This is a helper function for sqlite3BtreeLock(). By moving
|
| +** complex, but seldom used logic, out of sqlite3BtreeLock() and
|
| +** into this routine, we avoid unnecessary stack pointer changes
|
| +** and thus help the sqlite3BtreeLock() routine to run much faster
|
| +** in the common case.
|
| +*/
|
| +static void SQLITE_NOINLINE btreeLockCarefully(Btree *p){
|
| + Btree *pLater;
|
|
|
| /* In most cases, we should be able to acquire the lock we
|
| - ** want without having to go throught the ascending lock
|
| + ** want without having to go through the ascending lock
|
| ** procedure that follows. Just be sure not to block.
|
| */
|
| if( sqlite3_mutex_try(p->pBt->mutex)==SQLITE_OK ){
|
| @@ -124,6 +136,7 @@ void sqlite3BtreeEnter(Btree *p){
|
| }
|
| }
|
|
|
| +
|
| /*
|
| ** Exit the recursive mutex on a Btree.
|
| */
|
|
|