@@ -775,74 +775,64 @@ fn UpdateNodes<AllocF: Allocator<floatX>>(
775
775
+ i32:: from ( kDistanceCacheOffset[ j] ) )
776
776
as usize ;
777
777
let mut prev_ix: usize = cur_ix. wrapping_sub ( backward) ;
778
- let len: usize ;
779
778
let continuation: u8 = ringbuffer[ cur_ix_masked. wrapping_add ( best_len) ] ;
780
779
if cur_ix_masked. wrapping_add ( best_len) > ringbuffer_mask {
781
780
break ' break29;
782
781
}
783
782
if backward > max_distance. wrapping_add ( gap) {
784
783
break ' continue30;
785
784
}
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 {
804
786
break ' continue30;
805
787
}
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
806
796
{
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
+ }
812
822
{
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,
818
832
) ;
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) ;
844
834
}
845
- l = l. wrapping_add ( 1 ) ;
835
+ best_len = l;
846
836
}
847
837
}
848
838
}
0 commit comments