some more cleanup and performance squeezing
This commit is contained in:
parent
f70dd3c3ac
commit
12d8cae46f
16 changed files with 265 additions and 212 deletions
|
|
@ -22,7 +22,7 @@ public final class StatCoderContext extends BitCoderContext
|
|||
*/
|
||||
public void assignBits( String name )
|
||||
{
|
||||
long bitpos = getBitPosition();
|
||||
long bitpos = getWritingBitPosition();
|
||||
if ( statsPerName == null )
|
||||
{
|
||||
statsPerName = new TreeMap<String, long[]>();
|
||||
|
|
@ -88,12 +88,7 @@ public final class StatCoderContext extends BitCoderContext
|
|||
*/
|
||||
public int decodeNoisyNumber( int noisybits )
|
||||
{
|
||||
int value = 0;
|
||||
if ( noisybits > 0 )
|
||||
{
|
||||
int mask = 0xffffffff >>> ( 32 - noisybits );
|
||||
value = decodeBounded( mask );
|
||||
}
|
||||
int value = decodeBits( noisybits );
|
||||
return value | ( decodeVarBits() << noisybits );
|
||||
}
|
||||
|
||||
|
|
@ -130,8 +125,7 @@ public final class StatCoderContext extends BitCoderContext
|
|||
int value = 0;
|
||||
if ( noisybits > 0 )
|
||||
{
|
||||
int mask = 0xffffffff >>> ( 32 - noisybits );
|
||||
value = decodeBounded( mask ) - ( 1 << ( noisybits - 1 ) );
|
||||
value = decodeBits( noisybits ) - ( 1 << ( noisybits - 1 ) );
|
||||
}
|
||||
int val2 = decodeVarBits() << noisybits;
|
||||
if ( val2 != 0 )
|
||||
|
|
|
|||
|
|
@ -99,26 +99,33 @@ public final class TagValueCoder
|
|||
node.child2 = decodeTree( bc, buffer, validator );
|
||||
return node;
|
||||
}
|
||||
BitCoderContext target = null;
|
||||
int startpos = bc.getReadingBitPosition();
|
||||
boolean hasdata = false;
|
||||
for ( ;; )
|
||||
{
|
||||
int delta = bc.decodeVarBits();
|
||||
if ( target == null )
|
||||
if ( !hasdata )
|
||||
{
|
||||
if ( delta == 0 )
|
||||
{
|
||||
return null;
|
||||
target = new BitCoderContext( buffer );
|
||||
target.encodeBit( false ); // dummy reverse bit
|
||||
}
|
||||
hasdata = true;
|
||||
}
|
||||
target.encodeVarBits( delta );
|
||||
if ( delta == 0 )
|
||||
{
|
||||
break;
|
||||
int data = bc.decodeVarBits();
|
||||
target.encodeVarBits( data );
|
||||
}
|
||||
bc.decodeVarBits();
|
||||
}
|
||||
int len = target.getEncodedLength();
|
||||
byte[] res = new byte[len];
|
||||
System.arraycopy( buffer, 0, res, 0, len );
|
||||
int endpos = bc.getReadingBitPosition();
|
||||
|
||||
int bitcount = endpos - startpos;
|
||||
int bytecount = ( bitcount + 7 ) >> 3;
|
||||
|
||||
bc.setReadingBitPosition( startpos );
|
||||
byte[] res = new byte[bytecount];
|
||||
bc.copyBitsTo( res, bitcount );
|
||||
|
||||
int accessType = validator == null ? 2 : validator.accessType( res );
|
||||
if ( accessType > 0 )
|
||||
|
|
@ -165,10 +172,6 @@ public final class TagValueCoder
|
|||
return;
|
||||
}
|
||||
BitCoderContext src = new BitCoderContext( data );
|
||||
if ( src.decodeBit() )
|
||||
{
|
||||
throw new IllegalArgumentException( "cannot encode reverse bit!" );
|
||||
}
|
||||
for ( ;; )
|
||||
{
|
||||
int delta = src.decodeVarBits();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue