private void processVer2 ( final Memory skMem ) { Util . checkSeedHashes ( seedHash_ , skMem . getShort ( SEED_HASH_SHORT ) ) ; final int preLongs = skMem . getByte ( PREAMBLE_LONGS_BYTE ) & 0X3F ; final int curCount = skMem . getInt ( RETAINED_ENTRIES_INT ) ; final long thetaLongIn ; if ( preLongs == 1 ) { //does not change anything {1.0, 0, T} return ; } if ( preLongs == 2 ) { //exact mode assert curCount > 0 ; thetaLongIn = Long . MAX_VALUE ; } else { //prelongs == 3, curCount may be 0 (e.g., from intersection) thetaLongIn = skMem . getLong ( THETA_LONG ) ; } unionThetaLong_ = min ( unionThetaLong_ , thetaLongIn ) ; //Theta rule for ( int i = 0 ; i < curCount ; i ++ ) { final int offsetBytes = ( preLongs + i ) << 3 ; final long hashIn = skMem . getLong ( offsetBytes ) ; if ( hashIn >= unionThetaLong_ ) { break ; } // "early stop" gadget_ . hashUpdate ( hashIn ) ; //backdoor update, hash function is bypassed } unionThetaLong_ = min ( unionThetaLong_ , gadget_ . getThetaLong ( ) ) ; unionEmpty_ = unionEmpty_ && gadget_ . isEmpty ( ) ; }
can only be compact ordered size > = 8