SQLite

Check-in [adcd9a3fa2]
Login

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

Overview
Comment:Lemon optimization: When doing a shift following a reduce that pops one or more elements off the stack, no need to check for stack overflow. (CVS 2300)
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: adcd9a3fa2a86464abd613aa88ae110b4799a241
User & Date: drh 2005-02-01 03:20:00.000
Context
2005-02-01
03:46
Fix an error introduced with (2299). (CVS 2301) (check-in: 22041d5f26 user: danielk1977 tags: trunk)
03:20
Lemon optimization: When doing a shift following a reduce that pops one or more elements off the stack, no need to check for stack overflow. (CVS 2300) (check-in: adcd9a3fa2 user: drh tags: trunk)
03:09
Avoid allocating a vdbe in sqlite3FinishCoding() if one has not been allocated already. (CVS 2299) (check-in: eaf1866e4d user: danielk1977 tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to tool/lempar.c.
474
475
476
477
478
479
480














481

482
483
484
485
486
487
488
%%
  };
  yygoto = yyRuleInfo[yyruleno].lhs;
  yysize = yyRuleInfo[yyruleno].nrhs;
  yypParser->yyidx -= yysize;
  yyact = yy_find_reduce_action(yypParser,yygoto);
  if( yyact < YYNSTATE ){














    yy_shift(yypParser,yyact,yygoto,&yygotominor);

  }else if( yyact == YYNSTATE + YYNRULE + 1 ){
    yy_accept(yypParser);
  }
}

/*
** The following code executes when the parse fails







>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>







474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
%%
  };
  yygoto = yyRuleInfo[yyruleno].lhs;
  yysize = yyRuleInfo[yyruleno].nrhs;
  yypParser->yyidx -= yysize;
  yyact = yy_find_reduce_action(yypParser,yygoto);
  if( yyact < YYNSTATE ){
#ifdef NDEBUG
    /* If we are not debugging and the reduce action popped at least
    ** one element off the stack, then we can push the new element back
    ** onto the stack here, and skip the stack overflow test in yy_shift().
    ** That gives a significant speed improvement. */
    if( yysize ){
      yypParser->yyidx++;
      yymsp -= yysize-1;
      yymsp->stateno = yyact;
      yymsp->major = yygoto;
      yymsp->minor = yygotominor;
    }else
#endif
    {
      yy_shift(yypParser,yyact,yygoto,&yygotominor);
    }
  }else if( yyact == YYNSTATE + YYNRULE + 1 ){
    yy_accept(yypParser);
  }
}

/*
** The following code executes when the parse fails