@@ -775,74 +775,64 @@ fn UpdateNodes<AllocF: Allocator<floatX>>(
775775 + i32:: from ( kDistanceCacheOffset[ j] ) )
776776 as usize ;
777777 let mut prev_ix: usize = cur_ix. wrapping_sub ( backward) ;
778- let len: usize ;
779778 let continuation: u8 = ringbuffer[ cur_ix_masked. wrapping_add ( best_len) ] ;
780779 if cur_ix_masked. wrapping_add ( best_len) > ringbuffer_mask {
781780 break ' break29;
782781 }
783782 if backward > max_distance. wrapping_add ( gap) {
784783 break ' continue30;
785784 }
786- if backward <= max_distance {
787- if prev_ix >= cur_ix {
788- break ' continue30;
789- }
790- prev_ix &= ringbuffer_mask;
791- if prev_ix. wrapping_add ( best_len) > ringbuffer_mask
792- || continuation as i32
793- != ringbuffer[ ( prev_ix. wrapping_add ( best_len) as usize ) ]
794- as i32
795- {
796- break ' continue30;
797- }
798- len = FindMatchLengthWithLimit (
799- & ringbuffer[ ( prev_ix as usize ) ..] ,
800- & ringbuffer[ cur_ix_masked..] ,
801- max_len,
802- ) ;
803- } else {
785+ if backward > max_distance {
804786 break ' continue30;
805787 }
788+
789+ if prev_ix >= cur_ix {
790+ break ' continue30;
791+ }
792+ prev_ix &= ringbuffer_mask;
793+ if prev_ix. wrapping_add ( best_len) > ringbuffer_mask
794+ || continuation as i32
795+ != ringbuffer[ prev_ix. wrapping_add ( best_len) ] as i32
806796 {
807- let dist_cost: floatX =
808- base_cost + ZopfliCostModelGetDistanceCost ( model, j) ;
809- let mut l: usize ;
810- l = best_len. wrapping_add ( 1 ) ;
811- while l <= len {
797+ break ' continue30;
798+ }
799+
800+ let dist_cost = base_cost + ZopfliCostModelGetDistanceCost ( model, j) ;
801+ let len = FindMatchLengthWithLimit (
802+ & ringbuffer[ prev_ix..] ,
803+ & ringbuffer[ cur_ix_masked..] ,
804+ max_len,
805+ ) ;
806+ for l in best_len. wrapping_add ( 1 ) ..=len {
807+ {
808+ let copycode: u16 = GetCopyLengthCode ( l) ;
809+ let cmdcode: u16 =
810+ CombineLengthCodes ( inscode, copycode, ( j == 0usize ) as i32 ) ;
811+ let cost: floatX = ( if ( cmdcode as i32 ) < 128i32 {
812+ base_cost
813+ } else {
814+ dist_cost
815+ } ) + GetCopyExtra ( copycode) as ( floatX )
816+ + ZopfliCostModelGetCommandCost ( model, cmdcode) ;
817+ if cost
818+ < match ( nodes[ pos. wrapping_add ( l) ] ) . u {
819+ Union1 :: cost( cost) => cost,
820+ _ => 0.0 ,
821+ }
812822 {
813- let copycode: u16 = GetCopyLengthCode ( l) ;
814- let cmdcode: u16 = CombineLengthCodes (
815- inscode,
816- copycode,
817- ( j == 0usize ) as i32 ,
823+ UpdateZopfliNode (
824+ nodes,
825+ pos,
826+ start,
827+ l,
828+ l,
829+ backward,
830+ j. wrapping_add ( 1 ) ,
831+ cost,
818832 ) ;
819- let cost: floatX = ( if ( cmdcode as i32 ) < 128i32 {
820- base_cost
821- } else {
822- dist_cost
823- } ) + GetCopyExtra ( copycode) as ( floatX )
824- + ZopfliCostModelGetCommandCost ( model, cmdcode) ;
825- if cost
826- < match ( nodes[ pos. wrapping_add ( l) ] ) . u {
827- Union1 :: cost( cost) => cost,
828- _ => 0.0 ,
829- }
830- {
831- UpdateZopfliNode (
832- nodes,
833- pos,
834- start,
835- l,
836- l,
837- backward,
838- j. wrapping_add ( 1 ) ,
839- cost,
840- ) ;
841- result = brotli_max_size_t ( result, l) ;
842- }
843- best_len = l;
833+ result = brotli_max_size_t ( result, l) ;
844834 }
845- l = l. wrapping_add ( 1 ) ;
835+ best_len = l;
846836 }
847837 }
848838 }
0 commit comments