]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
More structure packing for smaller objects and less memory usage.
authordrh <drh@noemail.net>
Thu, 2 Feb 2012 21:02:43 +0000 (21:02 +0000)
committerdrh <drh@noemail.net>
Thu, 2 Feb 2012 21:02:43 +0000 (21:02 +0000)
FossilOrigin-Name: f14e7f29ff7f2d7706dc3cdd715e103e04ba0ef1

manifest
manifest.uuid
src/vdbeInt.h
src/vdbesort.c

index 5598f6d7f83760c443ffb816d038f8547aeca552..a281d990246af3a3017ae545fb6a1463ab248bf8 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Reduce\sthe\ssize\sof\sthe\sMemPage\sobject\sby\sabout\s32\sbytes.\s\sOther\sstructure\nsize\soptimizations.
-D 2012-02-02T19:37:18.502
+C More\sstructure\spacking\sfor\ssmaller\sobjects\sand\sless\smemory\susage.
+D 2012-02-02T21:02:43.362
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 3f79a373e57c3b92dabf76f40b065e719d31ac34
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -242,12 +242,12 @@ F src/util.c 9e07bd67dfafe9c75b1da78c87ba030cebbb5388
 F src/vacuum.c 0c0ba2242355c6048d65e2b333abe0f7c06348fa
 F src/vdbe.c 40b14dff04692b1ee421db40c67d4921ecf17a9d
 F src/vdbe.h 18f581cac1f4339ec3299f3e0cc6e11aec654cdb
-F src/vdbeInt.h 0f986e86a4a0afbf52d0402071708f487d1cfc15
+F src/vdbeInt.h 6ff4180a05683566a8835d12f7ec504b22932c82
 F src/vdbeapi.c 3662b6a468a2a4605a15dfab313baa6dff81ad91
 F src/vdbeaux.c 7683d772ad638faa4567142438c4594e47f173c4
 F src/vdbeblob.c 32f2a4899d67f69634ea4dd93e3f651936d732cb
 F src/vdbemem.c 3c171040c28a95084fb5024ab731140a86fd5439
-F src/vdbesort.c 468d43c057063e54da4f1988b38b4f46d60e7790
+F src/vdbesort.c b25814d385895544ebc8118245c8311ded7f81c9
 F src/vdbetrace.c d6e50e04e1ec498150e519058f617d91b8f5c843
 F src/vtab.c ab90fb600a3f5e4b7c48d22a4cdb2d6b23239847
 F src/wal.c 5f7bcc0610af759953defd769eacebfd98a22bc8
@@ -989,7 +989,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
-P fa13edd39c3b8ec752d4e90a69ebf7fed4ebf62f
-R 8221669b522416ec78d4a425d43dabd2
+P 21695c3476804477cb378b5a643196380e7e2281
+R 160b1d93d54df79cdae4b500d4010792
 U drh
-Z 2c59e89011b4fcade9a060969bfe0aa6
+Z a82d6bb93102b171e9f2e05fe403d0d3
index 2035005202cea634cfe23b618fd269e43688ddcc..19cc6a2c65271409ed00b1d8b3cc7ce7cf425aff 100644 (file)
@@ -1 +1 @@
-21695c3476804477cb378b5a643196380e7e2281
\ No newline at end of file
+f14e7f29ff7f2d7706dc3cdd715e103e04ba0ef1
\ No newline at end of file
index f3f9f73a35561678df4b080f0b0ae4efafa798b6..9c1af35c335d324474f60d73bd76a82cb65ba02f 100644 (file)
@@ -115,21 +115,21 @@ typedef struct VdbeCursor VdbeCursor;
 typedef struct VdbeFrame VdbeFrame;
 struct VdbeFrame {
   Vdbe *v;                /* VM this frame belongs to */
-  int pc;                 /* Program Counter in parent (calling) frame */
+  VdbeFrame *pParent;     /* Parent of this frame, or NULL if parent is main */
   Op *aOp;                /* Program instructions for parent frame */
-  int nOp;                /* Size of aOp array */
   Mem *aMem;              /* Array of memory cells for parent frame */
-  int nMem;               /* Number of entries in aMem */
   u8 *aOnceFlag;          /* Array of OP_Once flags for parent frame */
-  int nOnceFlag;          /* Number of entries in aOnceFlag */
   VdbeCursor **apCsr;     /* Array of Vdbe cursors for parent frame */
-  u16 nCursor;            /* Number of entries in apCsr */
   void *token;            /* Copy of SubProgram.token */
+  i64 lastRowid;          /* Last insert rowid (sqlite3.lastRowid) */
+  u16 nCursor;            /* Number of entries in apCsr */
+  int pc;                 /* Program Counter in parent (calling) frame */
+  int nOp;                /* Size of aOp array */
+  int nMem;               /* Number of entries in aMem */
+  int nOnceFlag;          /* Number of entries in aOnceFlag */
   int nChildMem;          /* Number of memory cells for child frame */
   int nChildCsr;          /* Number of cursors for child frame */
-  i64 lastRowid;          /* Last insert rowid (sqlite3.lastRowid) */
   int nChange;            /* Statement changes (Vdbe.nChanges)     */
-  VdbeFrame *pParent;     /* Parent of this frame, or NULL if parent is main */
 };
 
 #define VdbeFrameMem(p) ((Mem *)&((u8 *)p)[ROUND8(sizeof(VdbeFrame))])
@@ -256,8 +256,8 @@ struct sqlite3_context {
   VdbeFunc *pVdbeFunc;  /* Auxilary data, if created. */
   Mem s;                /* The return value is stored here */
   Mem *pMem;            /* Memory cell used to store aggregate context */
-  int isError;          /* Error code returned by the function. */
   CollSeq *pColl;       /* Collating sequence */
+  int isError;          /* Error code returned by the function. */
   int skipFlag;         /* Skip skip accumulator loading if true */
 };
 
index c44999705b4feaef524d0c9a9a32b2f2976d8024..afea1f510a30d4c486a1b6a6a30875bc6ed93104 100644 (file)
@@ -93,17 +93,17 @@ typedef struct SorterRecord SorterRecord;
 ** being merged (rounded up to the next power of 2).
 */
 struct VdbeSorter {
+  i64 iWriteOff;                  /* Current write offset within file pTemp1 */
+  i64 iReadOff;                   /* Current read offset within file pTemp1 */
   int nInMemory;                  /* Current size of pRecord list as PMA */
   int nTree;                      /* Used size of aTree/aIter (power of 2) */
+  int nPMA;                       /* Number of PMAs stored in pTemp1 */
+  int mnPmaSize;                  /* Minimum PMA size, in bytes */
+  int mxPmaSize;                  /* Maximum PMA size, in bytes.  0==no limit */
   VdbeSorterIter *aIter;          /* Array of iterators to merge */
   int *aTree;                     /* Current state of incremental merge */
-  i64 iWriteOff;                  /* Current write offset within file pTemp1 */
-  i64 iReadOff;                   /* Current read offset within file pTemp1 */
   sqlite3_file *pTemp1;           /* PMA file 1 */
-  int nPMA;                       /* Number of PMAs stored in pTemp1 */
   SorterRecord *pRecord;          /* Head of in-memory record list */
-  int mnPmaSize;                  /* Minimum PMA size, in bytes */
-  int mxPmaSize;                  /* Maximum PMA size, in bytes.  0==no limit */
   UnpackedRecord *pUnpacked;      /* Used to unpack keys */
 };
 
@@ -114,10 +114,10 @@ struct VdbeSorter {
 struct VdbeSorterIter {
   i64 iReadOff;                   /* Current read offset */
   i64 iEof;                       /* 1 byte past EOF for this iterator */
-  sqlite3_file *pFile;            /* File iterator is reading from */
   int nAlloc;                     /* Bytes of space at aAlloc */
-  u8 *aAlloc;                     /* Allocated space */
   int nKey;                       /* Number of bytes in key */
+  sqlite3_file *pFile;            /* File iterator is reading from */
+  u8 *aAlloc;                     /* Allocated space */
   u8 *aKey;                       /* Pointer to current key */
 };