@@ -793,74 +793,64 @@ fn UpdateNodes<AllocF: Allocator<floatX>>(
793793 + i32:: from ( kDistanceCacheOffset[ j] ) )
794794 as usize ;
795795 let mut prev_ix: usize = cur_ix. wrapping_sub ( backward) ;
796- let len: usize ;
797796 let continuation: u8 = ringbuffer[ cur_ix_masked. wrapping_add ( best_len) ] ;
798797 if cur_ix_masked. wrapping_add ( best_len) > ringbuffer_mask {
799798 break ' break29;
800799 }
801800 if backward > max_distance. wrapping_add ( gap) {
802801 break ' continue30;
803802 }
804- if backward <= max_distance {
805- if prev_ix >= cur_ix {
806- break ' continue30;
807- }
808- prev_ix &= ringbuffer_mask;
809- if prev_ix. wrapping_add ( best_len) > ringbuffer_mask
810- || continuation as i32
811- != ringbuffer[ ( prev_ix. wrapping_add ( best_len) as usize ) ]
812- as i32
813- {
814- break ' continue30;
815- }
816- len = FindMatchLengthWithLimit (
817- & ringbuffer[ ( prev_ix as usize ) ..] ,
818- & ringbuffer[ cur_ix_masked..] ,
819- max_len,
820- ) ;
821- } else {
803+ if backward > max_distance {
804+ break ' continue30;
805+ }
806+
807+ if prev_ix >= cur_ix {
822808 break ' continue30;
823809 }
810+ prev_ix &= ringbuffer_mask;
811+ if prev_ix. wrapping_add ( best_len) > ringbuffer_mask
812+ || continuation as i32
813+ != ringbuffer[ prev_ix. wrapping_add ( best_len) ] as i32
824814 {
825- let dist_cost: floatX =
826- base_cost + ZopfliCostModelGetDistanceCost ( model, j) ;
827- let mut l: usize ;
828- l = best_len. wrapping_add ( 1 ) ;
829- while l <= len {
815+ break ' continue30;
816+ }
817+
818+ let dist_cost = base_cost + ZopfliCostModelGetDistanceCost ( model, j) ;
819+ let len = FindMatchLengthWithLimit (
820+ & ringbuffer[ prev_ix..] ,
821+ & ringbuffer[ cur_ix_masked..] ,
822+ max_len,
823+ ) ;
824+ for l in best_len. wrapping_add ( 1 ) ..=len {
825+ {
826+ let copycode: u16 = GetCopyLengthCode ( l) ;
827+ let cmdcode: u16 =
828+ CombineLengthCodes ( inscode, copycode, ( j == 0usize ) as i32 ) ;
829+ let cost: floatX = ( if ( cmdcode as i32 ) < 128i32 {
830+ base_cost
831+ } else {
832+ dist_cost
833+ } ) + GetCopyExtra ( copycode) as ( floatX )
834+ + ZopfliCostModelGetCommandCost ( model, cmdcode) ;
835+ if cost
836+ < match ( nodes[ pos. wrapping_add ( l) ] ) . u {
837+ Union1 :: cost( cost) => cost,
838+ _ => 0.0 ,
839+ }
830840 {
831- let copycode: u16 = GetCopyLengthCode ( l) ;
832- let cmdcode: u16 = CombineLengthCodes (
833- inscode,
834- copycode,
835- ( j == 0usize ) as i32 ,
841+ UpdateZopfliNode (
842+ nodes,
843+ pos,
844+ start,
845+ l,
846+ l,
847+ backward,
848+ j. wrapping_add ( 1 ) ,
849+ cost,
836850 ) ;
837- let cost: floatX = ( if ( cmdcode as i32 ) < 128i32 {
838- base_cost
839- } else {
840- dist_cost
841- } ) + GetCopyExtra ( copycode) as ( floatX )
842- + ZopfliCostModelGetCommandCost ( model, cmdcode) ;
843- if cost
844- < match ( nodes[ pos. wrapping_add ( l) ] ) . u {
845- Union1 :: cost( cost) => cost,
846- _ => 0.0 ,
847- }
848- {
849- UpdateZopfliNode (
850- nodes,
851- pos,
852- start,
853- l,
854- l,
855- backward,
856- j. wrapping_add ( 1 ) ,
857- cost,
858- ) ;
859- result = brotli_max_size_t ( result, l) ;
860- }
861- best_len = l;
851+ result = brotli_max_size_t ( result, l) ;
862852 }
863- l = l. wrapping_add ( 1 ) ;
853+ best_len = l;
864854 }
865855 }
866856 }
0 commit comments