/ Check-in [79298fe8]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Optimization to the out2Prerelease() helper routine in the VDBE engine.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 79298fe8c42f64b6a6110a70b84033873ac0630d
User & Date: drh 2015-10-15 17:31:41
Context
2015-10-15
18:04
Add the OP_IntCopy opcode - an optimized version of OP_SCopy that only works for integer values. check-in: 3a2f73a4 user: drh tags: trunk
17:31
Optimization to the out2Prerelease() helper routine in the VDBE engine. check-in: 79298fe8 user: drh tags: trunk
17:21
Remove a superfluous conditional from the memory allocation initialization. check-in: 9ccf8f8d user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/vdbe.c.

514
515
516
517
518
519
520
521





522
523
524
525
526
527
528


529
530

531
532
533
534
535
536
537
  return 1;
}
#endif

/*
** Return the register of pOp->p2 after first preparing it to be
** overwritten with an integer value.
*/ 





static Mem *out2Prerelease(Vdbe *p, VdbeOp *pOp){
  Mem *pOut;
  assert( pOp->p2>0 );
  assert( pOp->p2<=(p->nMem-p->nCursor) );
  pOut = &p->aMem[pOp->p2];
  memAboutToChange(p, pOut);
  if( VdbeMemDynamic(pOut) ) sqlite3VdbeMemSetNull(pOut);


  pOut->flags = MEM_Int;
  return pOut;

}


/*
** Execute as much of a VDBE program as we can.
** This is the core of sqlite3_step().  
*/







|
>
>
>
>
>






|
>
>
|
|
>







514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
  return 1;
}
#endif

/*
** Return the register of pOp->p2 after first preparing it to be
** overwritten with an integer value.
*/
static SQLITE_NOINLINE Mem *out2PrereleaseWithClear(Mem *pOut){
  sqlite3VdbeMemSetNull(pOut);
  pOut->flags = MEM_Int;
  return pOut;
}
static Mem *out2Prerelease(Vdbe *p, VdbeOp *pOp){
  Mem *pOut;
  assert( pOp->p2>0 );
  assert( pOp->p2<=(p->nMem-p->nCursor) );
  pOut = &p->aMem[pOp->p2];
  memAboutToChange(p, pOut);
  if( VdbeMemDynamic(pOut) ){
    return out2PrereleaseWithClear(pOut);
  }else{
    pOut->flags = MEM_Int;
    return pOut;
  }
}


/*
** Execute as much of a VDBE program as we can.
** This is the core of sqlite3_step().  
*/