bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bison-1_29-branch] Optimizations.


From: Pascal Bart
Subject: Re: [Bison-1_29-branch] Optimizations.
Date: Tue, 2 Oct 2001 18:36:00 +0000 (GMT)

Hello,

        I'm trying to wake up :).  Well, I'm surprise to see, nobody have
any comments about this patch. Robert, Marc, I wait your comments too.

>Index: ChangeLog
>===================================================================
>RCS file: /cvsroot/bison/bison/ChangeLog,v
>retrieving revision 1.173.2.55
>diff -u -r1.173.2.55 ChangeLog
>--- ChangeLog  2001/09/25 18:35:04     1.173.2.55
>+++ ChangeLog  2001/09/26 22:09:18
>@@ -1,3 +1,18 @@
>+2001-09-27  Pascal Bart  <address@hidden>
>+
>+      * src/nullable.c (set_nullable): Change variables declarations.
>+      * src/files.c: Staticfy src_extension and header_extension.
>+      * src/conflicts.c: Move globals variables src_total, rrc_total...
>+      (print_conflicts): here.
>+      * src/lex.c (token_obstack): Become static.
>+      * src/symtab.c (hash): Inline function.
>+      * src/reader.c: Initialize globals variables.
>+      (reader): Delete globals pointers initialization.
>+      * src/output.c (action_row): Change variables declarations.
>+      Move gloval variable lowzero...
>+      (pack_vector): here.
>+      (output): Free global variable user_toknums.
>+
> 2001-09-25  Akim Demaille  <address@hidden>
>
>       * src/system.h: Include `xalloc.h'.
>Index: src/conflicts.c
>===================================================================
>RCS file: /cvsroot/bison/bison/src/conflicts.c,v
>retrieving revision 1.22.2.3
>diff -u -r1.22.2.3 conflicts.c
>--- src/conflicts.c    2001/09/25 18:35:04     1.22.2.3
>+++ src/conflicts.c    2001/09/26 22:09:19
>@@ -35,8 +35,7 @@
>
> static unsigned *shiftset = NULL;
> static unsigned *lookaheadset = NULL;
>-static int src_total;
>-static int rrc_total;
>+
> static int src_count;
> static int rrc_count;
>
>@@ -460,9 +459,8 @@
> print_conflicts (FILE *out)
> {
>   int i;
>-
>-  src_total = 0;
>-  rrc_total = 0;
>+  int src_total = 0;
>+  int rrc_total = 0;
>
>   /* Count the total number of conflicts, and if wanted, give a
>      detailed report in FOUTPUT.  */
>Index: src/files.c
>===================================================================
>RCS file: /cvsroot/bison/bison/src/files.c,v
>retrieving revision 1.51.2.8
>diff -u -r1.51.2.8 files.c
>--- src/files.c        2001/09/25 18:35:04     1.51.2.8
>+++ src/files.c        2001/09/26 22:09:19
>@@ -48,9 +48,9 @@
> static char *short_base_name = NULL;
>
> /* C source file extension (the parser source).  */
>-const char *src_extension = NULL;
>+static const char *src_extension = NULL;
> /* Header file extension (if option ``-d'' is specified).  */
>-const char *header_extension = NULL;
>+static const char *header_extension = NULL;
>
>
> /*--------------------------.
>Index: src/lex.c
>===================================================================
>RCS file: /cvsroot/bison/bison/src/lex.c,v
>retrieving revision 1.33.2.5
>diff -u -r1.33.2.5 lex.c
>--- src/lex.c  2001/09/25 18:35:04     1.33.2.5
>+++ src/lex.c  2001/09/26 22:09:19
>@@ -29,7 +29,7 @@
> #include "quote.h"
>
> /* Buffer for storing the current token.  */
>-struct obstack token_obstack;
>+static struct obstack token_obstack;
> const char *token_buffer = NULL;
>
> bucket *symval;
>Index: src/nullable.c
>===================================================================
>RCS file: /cvsroot/bison/bison/src/nullable.c,v
>retrieving revision 1.10.2.1
>diff -u -r1.10.2.1 nullable.c
>--- src/nullable.c     2001/09/25 18:35:04     1.10.2.1
>+++ src/nullable.c     2001/09/26 22:09:19
>@@ -45,7 +45,6 @@
>   shorts **rsets;
>   shorts *relts;
>   char any_tokens;
>-  short *r1;
>
> #ifdef        TRACE
>   fprintf (stderr, _("Entering set_nullable"));
>@@ -78,7 +77,7 @@
>       }
>       else
>       {
>-        r1 = r;
>+        short *r1 = r;
>         any_tokens = 0;
>         for (symbol = *r++; symbol > 0; symbol = *r++)
>           {
>Index: src/output.c
>===================================================================
>RCS file: /cvsroot/bison/bison/src/output.c,v
>retrieving revision 1.39.2.4
>diff -u -r1.39.2.4 output.c
>--- src/output.c       2001/09/25 18:35:04     1.39.2.4
>+++ src/output.c       2001/09/26 22:09:20
>@@ -106,7 +106,6 @@
> extern void berror PARAMS((const char *));
>
>
>-
> static int nvectors;
> static int nentries;
> static short **froms = NULL;
>@@ -120,11 +119,9 @@
> static short *pos = NULL;
> static short *table = NULL;
> static short *check = NULL;
>-static int lowzero;
> static int high;
>
>
>-
> static inline void
> output_short_or_char_table (struct obstack *oout,
>                           const char *comment,
>@@ -500,24 +497,15 @@
> static int
> action_row (int state)
> {
>-  int i;
>-  int j;
>-  int k;
>+  int i, j, k;
>   int m = 0;
>   int n = 0;
>-  int count;
>   int default_rule;
>   int nreds;
>-  int max;
>   int rule;
>-  int shift_state;
>   int symbol;
>-  unsigned mask;
>-  unsigned *wordp;
>   reductions *redp;
>-  shifts *shiftp;
>-  errs *errp;
>-  int nodefault = 0;          /* set nonzero to inhibit having any default 
>reduction */
>+  int nodefault = 0;  /* set nonzero to inhibit having any default reduction 
>*/
>
>   for (i = 0; i < ntokens; i++)
>     actrow[i] = 0;
>@@ -529,7 +517,7 @@
>   if (redp)
>     {
>       nreds = redp->nreds;
>-
>+
>       if (nreds >= 1)
>       {
>         /* loop over all the rules available here which require
>@@ -539,12 +527,12 @@
>
>         for (i = n - 1; i >= m; i--)
>           {
>-            rule = -LAruleno[i];
>-            wordp = LA + i * tokensetsize;
>-            mask = 1;
>+            unsigned mask = 1;
>+            unsigned *wordp = LA + i * tokensetsize;
>+            rule = -LAruleno[i];
>
>             /* and find each token which the rule finds acceptable
>-               to come next */
>+               to come next */
>             for (j = 0; j < ntokens; j++)
>               {
>                 /* and record this rule as the rule to use if that
>@@ -562,53 +550,54 @@
>           }
>       }
>     }
>-
>-  shiftp = shift_table[state];
>-
>-  /* Now see which tokens are allowed for shifts in this state.  For
>-     them, record the shift as the thing to do.  So shift is preferred
>-     to reduce.  */
>-
>-  if (shiftp)
>-    {
>-      k = shiftp->nshifts;
>+  {
>+    shifts *shiftp = shift_table[state];
>
>-      for (i = 0; i < k; i++)
>-      {
>-        shift_state = shiftp->shifts[i];
>-        if (!shift_state)
>-          continue;
>+    /* Now see which tokens are allowed for shifts in this state.  For
>+       them, record the shift as the thing to do.  So shift is preferred
>+       to reduce.  */
>
>-        symbol = accessing_symbol[shift_state];
>+    if (shiftp)
>+      {
>+      k = shiftp->nshifts;
>
>-        if (ISVAR (symbol))
>-          break;
>+      for (i = 0; i < k; i++)
>+        {
>+          int shift_state = shiftp->shifts[i];
>+          if (!shift_state)
>+            continue;
>
>-        actrow[symbol] = shift_state;
>+          symbol = accessing_symbol[shift_state];
>
>-        /* Do not use any default reduction if there is a shift for
>-           error */
>-        if (symbol == error_token_number)
>-          nodefault = 1;
>-      }
>-    }
>+          if (ISVAR (symbol))
>+            break;
>
>-  errp = err_table[state];
>+          actrow[symbol] = shift_state;
>
>-  /* See which tokens are an explicit error in this state (due to
>-     %nonassoc).  For them, record MINSHORT as the action.  */
>+          /* Do not use any default reduction if there is a shift for
>+             error */
>+          if (symbol == error_token_number)
>+            nodefault = 1;
>+        }
>+      }
>+  }
>+  {
>+    errs *errp = err_table[state];
>
>-  if (errp)
>-    {
>-      k = errp->nerrs;
>+    /* See which tokens are an explicit error in this state (due to
>+       %nonassoc).  For them, record MINSHORT as the action.  */
>
>-      for (i = 0; i < k; i++)
>-      {
>-        symbol = errp->errs[i];
>-        actrow[symbol] = MINSHORT;
>-      }
>-    }
>+    if (errp)
>+      {
>+      k = errp->nerrs;
>
>+      for (i = 0; i < k; i++)
>+        {
>+          symbol = errp->errs[i];
>+          actrow[symbol] = MINSHORT;
>+        }
>+      }
>+  }
>   /* Now find the most common reduction and make it the default action
>      for this state.  */
>
>@@ -618,10 +607,10 @@
>       default_rule = redp->rules[0];
>       else
>       {
>-        max = 0;
>+        int max = 0;
>         for (i = m; i < n; i++)
>           {
>-            count = 0;
>+            int count = 0;
>             rule = -LAruleno[i];
>
>             for (j = 0; j < ntokens; j++)
>@@ -966,6 +955,7 @@
>   int ok;
>   short *from;
>   short *to;
>+  int lowzero = 0;
>
>   i = order[vector];
>   t = tally[i];
>@@ -1031,7 +1021,6 @@
>   table = XCALLOC (short, MAXTABLE);
>   check = XCALLOC (short, MAXTABLE);
>
>-  lowzero = 0;
>   high = 0;
>
>   for (i = 0; i < nvectors; i++)
>@@ -1343,6 +1332,7 @@
>   if (semantic_parser)
>     output_stos ();
>   output_rule_data ();
>+  XFREE (user_toknums);
>   output_actions ();
>   if (!no_parser_flag)
>     output_parser ();
>Index: src/reader.c
>===================================================================
>RCS file: /cvsroot/bison/bison/src/reader.c,v
>retrieving revision 1.72.2.9
>diff -u -r1.72.2.9 reader.c
>--- src/reader.c       2001/09/25 18:35:04     1.72.2.9
>+++ src/reader.c       2001/09/26 22:09:20
>@@ -48,19 +48,19 @@
> int lineno;
> char **tags;
> short *user_toknums;
>-static symbol_list *grammar;
>-static int start_flag;
>-static bucket *startval;
>+static symbol_list *grammar = NULL;
>+static int start_flag = 0;
>+static bucket *startval = NULL;
>
> /* Nonzero if components of semantic values are used, implying
>    they must be unions.  */
>-static int value_components_used;
>+static int value_components_used = 0;
>
> /* Nonzero if %union has been seen.  */
>-static int typed;
>+static int typed = 0;
>
> /* Incremented for each %left, %right or %nonassoc seen */
>-static int lastprec;
>+static int lastprec = 0;
>
> static bucket *errtoken;
> static bucket *undeftoken;
>@@ -1893,9 +1893,6 @@
> void
> reader (void)
> {
>-  start_flag = 0;
>-  startval = NULL;            /* start symbol not specified yet. */
>-
>   nsyms = 1;
>   nvars = 0;
>   nrules = 0;
>@@ -1903,13 +1900,8 @@
>   rline_allocated = 10;
>   rline = XCALLOC (short, rline_allocated);
>
>-  typed = 0;
>-  lastprec = 0;
>-
>   semantic_parser = 0;
>   pure_parser = 0;
>-
>-  grammar = NULL;
>
>   lex_init ();
>   lineno = 1;
>Index: src/symtab.c
>===================================================================
>RCS file: /cvsroot/bison/bison/src/symtab.c,v
>retrieving revision 1.13.2.2
>diff -u -r1.13.2.2 symtab.c
>--- src/symtab.c       2001/09/25 18:35:04     1.13.2.2
>+++ src/symtab.c       2001/09/26 22:09:20
>@@ -28,7 +28,7 @@
> static bucket *lastsymbol;
> static bucket **symtab;
>
>-static int
>+static inline int
> hash (const char *key)
> {
>   const char *cp;
>
>

Pascal Bart (address@hidden)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]