Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Continuing cleanup of memory register memory allocation handling. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | micro-optimizations |
Files: | files | file ages | folders |
SHA1: |
2598aedc5dd2bac67e2e518a31f2803e |
User & Date: | drh 2014-09-16 21:54:11.409 |
Context
2014-09-17
| ||
14:52 | Improved interface to the Mem object handling. Small size reduction and performance increase. (check-in: 4e43784432 user: drh tags: micro-optimizations) | |
2014-09-16
| ||
21:54 | Continuing cleanup of memory register memory allocation handling. (check-in: 2598aedc5d user: drh tags: micro-optimizations) | |
20:05 | Make sure registers are cleared properly prior to being used to store the result of an OP_Column operator. (check-in: 78fb8838d8 user: drh tags: micro-optimizations) | |
Changes
Changes to src/utf.c.
︙ | ︙ | |||
310 311 312 313 314 315 316 317 | } } pMem->n = (int)(z - zOut); } *z = 0; assert( (pMem->n+(desiredEnc==SQLITE_UTF8?1:2))<=len ); sqlite3VdbeMemRelease(pMem); | > | < | 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 | } } pMem->n = (int)(z - zOut); } *z = 0; assert( (pMem->n+(desiredEnc==SQLITE_UTF8?1:2))<=len ); c = pMem->flags; sqlite3VdbeMemRelease(pMem); pMem->flags = MEM_Str|MEM_Term|(c&MEM_AffMask); pMem->enc = desiredEnc; pMem->z = (char*)zOut; pMem->zMalloc = pMem->z; translate_out: #if defined(TRANSLATE_TRACE) && defined(SQLITE_DEBUG) { char zBuf[100]; |
︙ | ︙ |
Changes to src/vdbemem.c.
︙ | ︙ | |||
331 332 333 334 335 336 337 | assert( (p->flags&MEM_RowSet)==0 ); assert( p->xDel!=SQLITE_DYNAMIC && p->xDel!=0 ); p->xDel((void *)p->z); p->xDel = 0; }else if( p->flags&MEM_RowSet ){ sqlite3RowSetClear(p->u.pRowSet); }else if( p->flags&MEM_Frame ){ | | > > > | 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 | assert( (p->flags&MEM_RowSet)==0 ); assert( p->xDel!=SQLITE_DYNAMIC && p->xDel!=0 ); p->xDel((void *)p->z); p->xDel = 0; }else if( p->flags&MEM_RowSet ){ sqlite3RowSetClear(p->u.pRowSet); }else if( p->flags&MEM_Frame ){ VdbeFrame *pFrame = p->u.pFrame; pFrame->pParent = pFrame->v->pDelFrame; pFrame->v->pDelFrame = pFrame; } p->flags = MEM_Null; } /* ** Release memory held by the Mem p, both external memory cleared ** by p->xDel and memory in p->zMalloc. ** ** This is a helper routine invoked by sqlite3VdbeMemRelease() in |
︙ | ︙ | |||
585 586 587 588 589 590 591 | } /* ** Delete any previous value and set the value stored in *pMem to NULL. */ void sqlite3VdbeMemSetNull(Mem *pMem){ | | | < < | | < < | 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 | } /* ** Delete any previous value and set the value stored in *pMem to NULL. */ void sqlite3VdbeMemSetNull(Mem *pMem){ if( VdbeMemDynamic(pMem) ){ sqlite3VdbeMemReleaseExternal(pMem); }else{ pMem->flags = MEM_Null; } } void sqlite3ValueSetNull(sqlite3_value *p){ sqlite3VdbeMemSetNull((Mem*)p); } /* ** Delete any previous value and set the value to be a BLOB of length |
︙ | ︙ |