[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05-fyi-more-bitsets.patch
From: |
Akim Demaille |
Subject: |
05-fyi-more-bitsets.patch |
Date: |
Mon, 28 Jan 2002 11:55:51 +0100 |
Index: ChangeLog
from Akim Demaille <address@hidden>
* src/closure.c (ruleset): Be a bitset.
(rulesetsize): Remove.
Index: src/closure.c
--- src/closure.c Sun, 27 Jan 2002 20:40:44 +0100 akim
+++ src/closure.c Sun, 27 Jan 2002 20:51:18 +0100 akim
@@ -32,7 +32,7 @@
short *itemset;
int nitemset;
-static unsigned *ruleset;
+static bitset ruleset;
/* internal data. See comments before set_fderives and set_firsts. */
static bitset *fderives;
@@ -42,9 +42,6 @@
#define FDERIVES(Var) fderives[(Var) - ntokens]
#define FIRSTS(Var) (firsts + ((Var) - ntokens) * varsetsize)
-/* number of words required to hold a bit for each rule */
-static int rulesetsize;
-
/* number of words required to hold a bit for each variable */
static int varsetsize;
@@ -188,8 +185,8 @@
{
itemset = XCALLOC (short, n);
- rulesetsize = WORDSIZE (nrules + 1);
- ruleset = XCALLOC (unsigned, rulesetsize);
+ ruleset = bitset_create (nrules + 1, BITSET_FIXED);
+ bitset_zero (ruleset);
set_fderives ();
}
@@ -213,28 +210,21 @@
if (n == 0)
{
- for (ruleno = 0; ruleno < nrules + 1; ++ruleno)
- if (bitset_test (FDERIVES (start_symbol), ruleno))
- SETBIT (ruleset, ruleno);
- else
- RESETBIT (ruleset, ruleno);
+ bitset_copy (ruleset, FDERIVES (start_symbol));
}
else
{
- for (r = 0; r < rulesetsize; ++r)
- ruleset[r] = 0;
+ bitset_zero (ruleset);
for (c = 0; c < n; ++c)
if (ISVAR (ritem[core[c]]))
- for (ruleno = 0; ruleno < nrules + 1; ++ruleno)
- if (bitset_test (FDERIVES (ritem[core[c]]), ruleno))
- SETBIT (ruleset, ruleno);
+ bitset_or (ruleset, ruleset, FDERIVES (ritem[core[c]]));
}
nitemset = 0;
c = 0;
for (ruleno = 0; ruleno < nrules + 1; ++ruleno)
- if (BITISSET (ruleset, ruleno))
+ if (bitset_test (ruleset, ruleno))
{
int itemno = rules[ruleno].rhs;
while (c < n && core[c] < itemno)
@@ -264,7 +254,8 @@
{
int i;
XFREE (itemset);
- XFREE (ruleset);
+
+ bitset_free (ruleset);
for (i = 0 ; i < nvars; ++i)
bitset_free (fderives[i]);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- 05-fyi-more-bitsets.patch,
Akim Demaille <=