@@ -734,64 +734,61 @@ fn UpdateNodes<AllocF: Allocator<floatX>>(
734
734
+ i32:: from ( kDistanceCacheOffset[ j] ) )
735
735
as usize ;
736
736
let mut prev_ix: usize = cur_ix. wrapping_sub ( backward) ;
737
- let len: usize ;
738
737
let continuation: u8 = ringbuffer[ cur_ix_masked. wrapping_add ( best_len) ] ;
739
738
if cur_ix_masked. wrapping_add ( best_len) > ringbuffer_mask {
740
739
break ' break29;
741
740
}
742
741
if backward > max_distance. wrapping_add ( gap) {
743
742
break ' continue30;
744
743
}
745
- if backward <= max_distance {
746
- if prev_ix >= cur_ix {
747
- break ' continue30;
748
- }
749
- prev_ix &= ringbuffer_mask;
750
- if prev_ix. wrapping_add ( best_len) > ringbuffer_mask
751
- || continuation as i32
752
- != ringbuffer[ ( prev_ix. wrapping_add ( best_len) as usize ) ]
753
- as i32
754
- {
755
- break ' continue30;
756
- }
757
- len = FindMatchLengthWithLimit (
758
- & ringbuffer[ ( prev_ix as usize ) ..] ,
759
- & ringbuffer[ cur_ix_masked..] ,
760
- max_len,
761
- ) ;
762
- } else {
744
+ if backward > max_distance {
763
745
break ' continue30;
764
746
}
747
+
748
+ if prev_ix >= cur_ix {
749
+ break ' continue30;
750
+ }
751
+ prev_ix &= ringbuffer_mask;
752
+ if prev_ix. wrapping_add ( best_len) > ringbuffer_mask
753
+ || continuation as i32
754
+ != ringbuffer[ prev_ix. wrapping_add ( best_len) ] as i32
765
755
{
766
- let dist_cost = base_cost + model. get_distance_cost ( j) ;
767
- for l in best_len. wrapping_add ( 1 ) ..=len {
768
- let copycode: u16 = GetCopyLengthCode ( l) ;
769
- let cmdcode: u16 =
770
- CombineLengthCodes ( inscode, copycode, ( j == 0usize ) as i32 ) ;
771
- let cost: floatX =
772
- ( if cmdcode < 128 { base_cost } else { dist_cost } )
773
- + ( GetCopyExtra ( copycode) as floatX )
774
- + model. get_command_cost ( cmdcode) ;
775
- if cost
776
- < match ( nodes[ pos. wrapping_add ( l) ] ) . u {
777
- Union1 :: cost( cost) => cost,
778
- _ => 0.0 ,
779
- }
780
- {
781
- UpdateZopfliNode (
782
- nodes,
783
- pos,
784
- start,
785
- l,
786
- l,
787
- backward,
788
- j. wrapping_add ( 1 ) ,
789
- cost,
790
- ) ;
791
- result = max ( result, l) ;
756
+ break ' continue30;
757
+ }
758
+
759
+ let len = FindMatchLengthWithLimit (
760
+ & ringbuffer[ prev_ix..] ,
761
+ & ringbuffer[ cur_ix_masked..] ,
762
+ max_len,
763
+ ) ;
764
+ let dist_cost = base_cost + model. get_distance_cost ( j) ;
765
+ for l in best_len. wrapping_add ( 1 ) ..=len {
766
+ let copycode: u16 = GetCopyLengthCode ( l) ;
767
+ let cmdcode: u16 =
768
+ CombineLengthCodes ( inscode, copycode, ( j == 0usize ) as i32 ) ;
769
+ let cost: floatX =
770
+ ( if cmdcode < 128 { base_cost } else { dist_cost } )
771
+ + ( GetCopyExtra ( copycode) as floatX )
772
+ + model. get_command_cost ( cmdcode) ;
773
+ if cost
774
+ < match ( nodes[ pos. wrapping_add ( l) ] ) . u {
775
+ Union1 :: cost( cost) => cost,
776
+ _ => 0.0 ,
792
777
}
793
- best_len = l;
778
+ {
779
+ UpdateZopfliNode (
780
+ nodes,
781
+ pos,
782
+ start,
783
+ l,
784
+ l,
785
+ backward,
786
+ j. wrapping_add ( 1 ) ,
787
+ cost,
788
+ ) ;
789
+ result = max ( result, l) ;
794
790
}
791
+ best_len = l;
795
792
}
796
793
}
797
794
break ;
0 commit comments