You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2014/06/18 18:44:29 UTC

svn commit: r1603516 - in /lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton: Automaton.java Operations.java

Author: mikemccand
Date: Wed Jun 18 16:44:28 2014
New Revision: 1603516

URL: http://svn.apache.org/r1603516
Log:
LUCENE-5752: use BitSet for accept states

Modified:
    lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton/Automaton.java
    lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java

Modified: lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton/Automaton.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton/Automaton.java?rev=1603516&r1=1603515&r2=1603516&view=diff
==============================================================================
--- lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton/Automaton.java (original)
+++ lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton/Automaton.java Wed Jun 18 16:44:28 2014
@@ -20,11 +20,11 @@ package org.apache.lucene.util.automaton
 //import java.io.IOException;
 //import java.io.PrintWriter;
 import java.util.Arrays;
+import java.util.BitSet;
 import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.FixedBitSet;
 import org.apache.lucene.util.InPlaceMergeSorter;
 import org.apache.lucene.util.Sorter;
 
@@ -72,7 +72,7 @@ public class Automaton {
   /** Holds toState, min, max for each transition. */
   private int[] transitions = new int[6];
 
-  private FixedBitSet isAccept = new FixedBitSet(4);
+  private final BitSet isAccept = new BitSet(4);
 
   /** True if no state has two transitions leaving with the same label. */
   private boolean deterministic = true;
@@ -87,11 +87,6 @@ public class Automaton {
     int state = nextState/2;
     states[nextState] = -1;
     nextState += 2;
-    if (state >= isAccept.length()) {
-      FixedBitSet newBits = new FixedBitSet(ArrayUtil.oversize(state+1, 1));
-      newBits.or(isAccept);
-      isAccept = newBits;
-    }
     return state;
   }
 
@@ -126,7 +121,7 @@ public class Automaton {
   }
 
   /** Returns accept states.  If the bit is set then that state is an accept state. */
-  FixedBitSet getAcceptStates() {
+  BitSet getAcceptStates() {
     return isAccept;
   }
 
@@ -203,13 +198,8 @@ public class Automaton {
       }
     }
     nextState += other.nextState;
-    if (isAccept.length() < nextState/2) {
-      FixedBitSet newBits = new FixedBitSet(ArrayUtil.oversize(nextState/2, 1));
-      newBits.or(isAccept);
-      isAccept = newBits;
-    }
     int otherNumStates = other.getNumStates();
-    FixedBitSet otherAcceptStates = other.getAcceptStates();
+    BitSet otherAcceptStates = other.getAcceptStates();
     int state = 0;
     while (state < otherNumStates && (state = otherAcceptStates.nextSetBit(state)) != -1) {
       setAccept(stateOffset + state, true);

Modified: lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java?rev=1603516&r1=1603515&r2=1603516&view=diff
==============================================================================
--- lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java (original)
+++ lucene/dev/branches/lucene5752/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java Wed Jun 18 16:44:28 2014
@@ -42,7 +42,6 @@ import java.util.Set;
 
 import org.apache.lucene.util.ArrayUtil;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.FixedBitSet;
 import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.RamUsageEstimator;
 
@@ -258,7 +257,7 @@ final public class Operations {
 
   private static Set<Integer> toSet(Automaton a, int offset) {
     int numStates = a.getNumStates();
-    FixedBitSet isAccept = a.getAcceptStates();
+    BitSet isAccept = a.getAcceptStates();
     Set<Integer> result = new HashSet<Integer>();
     int upto = 0;
     while (upto < numStates && (upto = isAccept.nextSetBit(upto)) != -1) {
@@ -924,7 +923,7 @@ final public class Operations {
 
     LinkedList<Integer> workList = new LinkedList<>();
     BitSet live = new BitSet(numStates);
-    FixedBitSet acceptBits = a.getAcceptStates();
+    BitSet acceptBits = a.getAcceptStates();
     int s = 0;
     while (s < numStates && (s = acceptBits.nextSetBit(s)) != -1) {
       live.set(s);
@@ -1161,7 +1160,7 @@ final public class Operations {
     Automaton result = builder.finish();
 
     int s = 0;
-    FixedBitSet acceptStates = a.getAcceptStates();
+    BitSet acceptStates = a.getAcceptStates();
     while (s < numStates && (s = acceptStates.nextSetBit(s)) != -1) {
       result.addEpsilon(0, s+1);
       if (initialStates != null) {