You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2007/02/07 09:39:17 UTC
svn commit: r504460 -
/db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FormatableBitSet.java
Author: kahatlen
Date: Wed Feb 7 00:39:16 2007
New Revision: 504460
URL: http://svn.apache.org/viewvc?view=rev&rev=504460
Log:
DERBY-2191: Cleanup of FormatableBitSet
Simplified grow() by removing an unneeded special case.
Added ASSERT(invariantHolds()) to grow() and shrink().
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FormatableBitSet.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FormatableBitSet.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FormatableBitSet.java?view=diff&rev=504460&r1=504459&r2=504460
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FormatableBitSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FormatableBitSet.java Wed Feb 7 00:39:16 2007
@@ -291,6 +291,10 @@
*/
public void grow(int n)
{
+ if (SanityManager.DEBUG) {
+ SanityManager.ASSERT(invariantHolds(), "broken invariant");
+ }
+
if (n < 0) {
throw new IllegalArgumentException("Bit set cannot grow from "+
lengthAsBits+" to "+n+" bits");
@@ -299,37 +303,17 @@
return;
}
- int delta = n - lengthAsBits;
- int oldNumBytes = getLengthInBytes();
-
- /*
- ** If we have enough space in the left over bits,
- ** then all we need to do is change the modulo.
- */
- if ((oldNumBytes != 0) &&
- (8 - this.bitsInLastByte) >= delta)
- {
- this.bitsInLastByte += delta;
- lengthAsBits = n;
- return;
- }
-
int newNumBytes = FormatableBitSet.numBytesFromBits(n);
// is there enough room in the existing array
- if (newNumBytes <= value.length) {
- // ensure the bits are zeroed
- for (int i = oldNumBytes; i < newNumBytes; i++)
- value[i] = 0;
- } else {
-
-
+ if (newNumBytes > value.length) {
/*
** We didn't have enough bytes in value, so we need
** to create a bigger byte array and use that.
*/
byte[] newValue = new byte[newNumBytes];
+ int oldNumBytes = getLengthInBytes();
System.arraycopy(value, 0, newValue, 0, oldNumBytes);
value = newValue;
@@ -348,6 +332,10 @@
*/
public void shrink(int n)
{
+ if (SanityManager.DEBUG) {
+ SanityManager.ASSERT(invariantHolds(), "broken invariant");
+ }
+
if (n < 0 || n > lengthAsBits) {
throw new
IllegalArgumentException("Bit set cannot shrink from "+