bison-patches
[Top][All Lists]
Advanced

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

03-fyi-closure-over-bits.patch


From: Akim Demaille
Subject: 03-fyi-closure-over-bits.patch
Date: Wed, 28 Nov 2001 15:51:41 +0100

Index: ChangeLog
from  Akim Demaille  <address@hidden>
        * src/closure.c (closure): Instead of looping over word in array
        then bits in words, loop over bits in array.
        
        
Index: src/closure.c
--- src/closure.c Tue, 27 Nov 2001 23:45:48 +0100 akim
+++ src/closure.c Tue, 27 Nov 2001 23:53:51 +0100 akim
@@ -242,7 +242,8 @@
   /* Index over RULESET. */
   int r;
 
-  int itemno;
+  /* A bit index over RULESET. */
+  int b;
 
   if (trace_flag)
     {
@@ -271,27 +272,22 @@
   ruleno = 0;
   itemsetsize = 0;
   c = 0;
-  for (r = 0; r < rulesetsize; ++r)
+  for (b = 0; b < rulesetsize * BITS_PER_WORD; ++b)
     {
-      int b;
-
-      for (b = 0; b < BITS_PER_WORD; b++)
+      if (BITISSET (ruleset, b))
        {
-         if (ruleset[r] & (1 << b))
+         int itemno = rule_table[ruleno].rhs;
+         while (c < n && core[c] < itemno)
            {
-             itemno = rule_table[ruleno].rhs;
-             while (c < n && core[c] < itemno)
-               {
-                 itemset[itemsetsize] = core[c];
-                 itemsetsize++;
-                 c++;
-               }
-             itemset[itemsetsize] = itemno;
+             itemset[itemsetsize] = core[c];
              itemsetsize++;
+             c++;
            }
-
-         ruleno++;
+         itemset[itemsetsize] = itemno;
+         itemsetsize++;
        }
+
+      ruleno++;
     }
 
   while (c < n)



reply via email to

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