1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-16 23:02:26 +03:00

Expand the getVarint32() macro in a few places, as the C-compiler seems to

be able to optimize better when that macro is expanded manually.

FossilOrigin-Name: cd4fe34b98bf5ce26f3596c717edb73932f3b46ad6e9b4934d06b7b3c176a0d6
This commit is contained in:
drh
2022-04-02 22:47:47 +00:00
parent 1f416db292
commit c2808f39d1
4 changed files with 24 additions and 12 deletions

View File

@@ -2739,7 +2739,11 @@ op_column_restart:
assert( pC->szRow<=65536 ); /* Maximum page size is 64KiB */
}
pC->cacheStatus = p->cacheCtr;
pC->iHdrOffset = getVarint32(pC->aRow, aOffset[0]);
if( (aOffset[0] = pC->aRow[0])<0x80 ){
pC->iHdrOffset = 1;
}else{
pC->iHdrOffset = sqlite3GetVarint32(pC->aRow, aOffset);
}
pC->nHdrParsed = 0;
if( pC->szRow<aOffset[0] ){ /*OPTIMIZATION-IF-FALSE*/

View File

@@ -4419,14 +4419,22 @@ int sqlite3VdbeRecordCompareWithSkip(
** two elements in the keys are equal. Fix the various stack variables so
** that this routine begins comparing at the second field. */
if( bSkip ){
u32 s1;
idx1 = 1 + getVarint32(&aKey1[1], s1);
u32 s1 = aKey1[1];
if( s1<0x80 ){
idx1 = 2;
}else{
idx1 = 1 + sqlite3GetVarint32(&aKey1[1], &s1);
}
szHdr1 = aKey1[0];
d1 = szHdr1 + sqlite3VdbeSerialTypeLen(s1);
i = 1;
pRhs++;
}else{
idx1 = getVarint32(aKey1, szHdr1);
if( (szHdr1 = aKey1[0])<0x80 ){
idx1 = 1;
}else{
idx1 = sqlite3GetVarint32(aKey1, &szHdr1);
}
d1 = szHdr1;
i = 0;
}