From: drh Date: Tue, 4 Feb 2014 15:55:25 +0000 (+0000) Subject: Rearrange fields in the Parse object for a tighter packing, resulting in X-Git-Tag: version-3.8.4~110 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7df89c8c8a9a9e6232e602e102edfdbcbfb8f1af;p=thirdparty%2Fsqlite.git Rearrange fields in the Parse object for a tighter packing, resulting in an 8% size reduction on x64. FossilOrigin-Name: 3e1a3f68d7457ff708222a3448404b593f018fc2 --- diff --git a/manifest b/manifest index 8ed9435be8..be9aa406a7 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Performance\soptimizations\sin\ssqlite3PcacheFetch(). -D 2014-02-03T17:04:29.099 +C Rearrange\sfields\sin\sthe\sParse\sobject\sfor\sa\stighter\spacking,\sresulting\sin\nan\s8%\ssize\sreduction\son\sx64. +D 2014-02-04T15:55:25.100 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -224,7 +224,7 @@ F src/shell.c 24722d24d4ea8ca93db35e44db7308de786767ca F src/sqlite.h.in eed7f7d66a60daaa7b4a597dcd9bad87aad9611b F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e F src/sqlite3ext.h 886f5a34de171002ad46fae8c36a7d8051c190fc -F src/sqliteInt.h 22c8f7112f2fa8e778bbd9d331cbebff8c645574 +F src/sqliteInt.h ee8b7647d02470e75b4fc0e8a06b2f178d994670 F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d F src/status.c 7ac05a5c7017d0b9f0b4bcd701228b784f987158 F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e @@ -1152,7 +1152,7 @@ F tool/vdbe-compress.tcl 0cf56e9263a152b84da86e75a5c0cdcdb7a47891 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff -P 6c643e45c274e755dc5a1a65673df79261c774be -R 8b5419aed1d20751ed2fa03b47b5e0a6 +P b60cc11ef775c23a2245d9e7a00dab34013f3ccb +R 9fefa46640582f27b969bb2001156b91 U drh -Z f3fb6a665960323d1a0ee233aafe4773 +Z b3499e6545a6347f51724280bec4401e diff --git a/manifest.uuid b/manifest.uuid index bad810a1b8..e9d58ea3e5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b60cc11ef775c23a2245d9e7a00dab34013f3ccb \ No newline at end of file +3e1a3f68d7457ff708222a3448404b593f018fc2 \ No newline at end of file diff --git a/src/sqliteInt.h b/src/sqliteInt.h index f58d826788..0d1342a56a 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -2358,22 +2358,23 @@ struct Parse { int nSet; /* Number of sets used so far */ int nOnce; /* Number of OP_Once instructions so far */ int nOpAlloc; /* Number of slots allocated for Vdbe.aOp[] */ - int nLabel; /* Number of labels used */ - int *aLabel; /* Space to hold the labels */ int iFixedOp; /* Never back out opcodes iFixedOp-1 or earlier */ int ckBase; /* Base register of data during check constraints */ int iPartIdxTab; /* Table corresponding to a partial index */ int iCacheLevel; /* ColCache valid when aColCache[].iLevel<=iCacheLevel */ int iCacheCnt; /* Counter used to generate aColCache[].lru values */ + int nLabel; /* Number of labels used */ + int *aLabel; /* Space to hold the labels */ struct yColCache { int iTable; /* Table cursor number */ - int iColumn; /* Table column number */ + i16 iColumn; /* Table column number */ u8 tempReg; /* iReg is a temp register that needs to be freed */ int iLevel; /* Nesting level */ int iReg; /* Reg with value of this column. 0 means none. */ int lru; /* Least recently used entry has the smallest value */ } aColCache[SQLITE_N_COLCACHE]; /* One for each column cache entry */ ExprList *pConstExpr;/* Constant expressions */ + Token constraintName;/* Name of the constraint currently being parsed */ yDbMask writeMask; /* Start a write transaction on these databases */ yDbMask cookieMask; /* Bitmask of schema verified databases */ int cookieGoto; /* Address of OP_Goto to cookie verifier subroutine */ @@ -2381,7 +2382,6 @@ struct Parse { int regRowid; /* Register holding rowid of CREATE TABLE entry */ int regRoot; /* Register holding root page number for new objects */ int nMaxArg; /* Max args passed to user function by sub-program */ - Token constraintName;/* Name of the constraint currently being parsed */ #ifndef SQLITE_OMIT_SHARED_CACHE int nTableLock; /* Number of locks in aTableLock */ TableLock *aTableLock; /* Required table locks for shared-cache mode */ @@ -2400,12 +2400,17 @@ struct Parse { u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */ u8 disableTriggers; /* True to disable triggers */ - /* Above is constant between recursions. Below is reset before and after - ** each recursion */ + /************************************************************************ + ** Above is constant between recursions. Below is reset before and after + ** each recursion. The boundary between these two regions is determined + ** using offsetof(Parse,nVar) so the nVar field must be the first field + ** in the recursive region. + ************************************************************************/ int nVar; /* Number of '?' variables seen in the SQL so far */ int nzVar; /* Number of available slots in azVar[] */ u8 iPkSortOrder; /* ASC or DESC for INTEGER PRIMARY KEY */ + u8 bFreeWith; /* True if pWith should be freed with parser */ u8 explain; /* True if the EXPLAIN flag is found on the query */ #ifndef SQLITE_OMIT_VIRTUALTABLE u8 declareVtab; /* True if inside sqlite3_declare_vtab() */ @@ -2432,7 +2437,6 @@ struct Parse { Table *pZombieTab; /* List of Table objects to delete after code gen */ TriggerPrg *pTriggerPrg; /* Linked list of coded triggers */ With *pWith; /* Current WITH clause, or NULL */ - u8 bFreeWith; /* True if pWith should be freed with parser */ }; /*