@@ -1629,25 +1629,29 @@ static void show_extended_objects(struct bitmap_index *bitmap_git,
1629
1629
}
1630
1630
}
1631
1631
1632
- static void init_type_iterator (struct ewah_iterator * it ,
1632
+ static void init_type_iterator (struct ewah_or_iterator * it ,
1633
1633
struct bitmap_index * bitmap_git ,
1634
1634
enum object_type type )
1635
1635
{
1636
1636
switch (type ) {
1637
1637
case OBJ_COMMIT :
1638
- ewah_iterator_init (it , bitmap_git -> commits );
1638
+ ewah_or_iterator_init (it , bitmap_git -> commits_all ,
1639
+ bitmap_git -> base_nr + 1 );
1639
1640
break ;
1640
1641
1641
1642
case OBJ_TREE :
1642
- ewah_iterator_init (it , bitmap_git -> trees );
1643
+ ewah_or_iterator_init (it , bitmap_git -> trees_all ,
1644
+ bitmap_git -> base_nr + 1 );
1643
1645
break ;
1644
1646
1645
1647
case OBJ_BLOB :
1646
- ewah_iterator_init (it , bitmap_git -> blobs );
1648
+ ewah_or_iterator_init (it , bitmap_git -> blobs_all ,
1649
+ bitmap_git -> base_nr + 1 );
1647
1650
break ;
1648
1651
1649
1652
case OBJ_TAG :
1650
- ewah_iterator_init (it , bitmap_git -> tags );
1653
+ ewah_or_iterator_init (it , bitmap_git -> tags_all ,
1654
+ bitmap_git -> base_nr + 1 );
1651
1655
break ;
1652
1656
1653
1657
default :
@@ -1664,15 +1668,15 @@ static void show_objects_for_type(
1664
1668
size_t i = 0 ;
1665
1669
uint32_t offset ;
1666
1670
1667
- struct ewah_iterator it ;
1671
+ struct ewah_or_iterator it ;
1668
1672
eword_t filter ;
1669
1673
1670
1674
struct bitmap * objects = bitmap_git -> result ;
1671
1675
1672
1676
init_type_iterator (& it , bitmap_git , object_type );
1673
1677
1674
1678
for (i = 0 ; i < objects -> word_alloc &&
1675
- ewah_iterator_next (& filter , & it ); i ++ ) {
1679
+ ewah_or_iterator_next (& filter , & it ); i ++ ) {
1676
1680
eword_t word = objects -> words [i ] & filter ;
1677
1681
size_t pos = (i * BITS_IN_EWORD );
1678
1682
@@ -1714,6 +1718,8 @@ static void show_objects_for_type(
1714
1718
show_reach (& oid , object_type , 0 , hash , pack , ofs );
1715
1719
}
1716
1720
}
1721
+
1722
+ ewah_or_iterator_release (& it );
1717
1723
}
1718
1724
1719
1725
static int in_bitmapped_pack (struct bitmap_index * bitmap_git ,
@@ -1765,7 +1771,7 @@ static void filter_bitmap_exclude_type(struct bitmap_index *bitmap_git,
1765
1771
{
1766
1772
struct eindex * eindex = & bitmap_git -> ext_index ;
1767
1773
struct bitmap * tips ;
1768
- struct ewah_iterator it ;
1774
+ struct ewah_or_iterator it ;
1769
1775
eword_t mask ;
1770
1776
uint32_t i ;
1771
1777
@@ -1782,7 +1788,7 @@ static void filter_bitmap_exclude_type(struct bitmap_index *bitmap_git,
1782
1788
* packfile.
1783
1789
*/
1784
1790
for (i = 0 , init_type_iterator (& it , bitmap_git , type );
1785
- i < to_filter -> word_alloc && ewah_iterator_next (& mask , & it );
1791
+ i < to_filter -> word_alloc && ewah_or_iterator_next (& mask , & it );
1786
1792
i ++ ) {
1787
1793
if (i < tips -> word_alloc )
1788
1794
mask &= ~tips -> words [i ];
@@ -1802,6 +1808,7 @@ static void filter_bitmap_exclude_type(struct bitmap_index *bitmap_git,
1802
1808
bitmap_unset (to_filter , pos );
1803
1809
}
1804
1810
1811
+ ewah_or_iterator_release (& it );
1805
1812
bitmap_free (tips );
1806
1813
}
1807
1814
@@ -1862,14 +1869,14 @@ static void filter_bitmap_blob_limit(struct bitmap_index *bitmap_git,
1862
1869
{
1863
1870
struct eindex * eindex = & bitmap_git -> ext_index ;
1864
1871
struct bitmap * tips ;
1865
- struct ewah_iterator it ;
1872
+ struct ewah_or_iterator it ;
1866
1873
eword_t mask ;
1867
1874
uint32_t i ;
1868
1875
1869
1876
tips = find_tip_objects (bitmap_git , tip_objects , OBJ_BLOB );
1870
1877
1871
1878
for (i = 0 , init_type_iterator (& it , bitmap_git , OBJ_BLOB );
1872
- i < to_filter -> word_alloc && ewah_iterator_next (& mask , & it );
1879
+ i < to_filter -> word_alloc && ewah_or_iterator_next (& mask , & it );
1873
1880
i ++ ) {
1874
1881
eword_t word = to_filter -> words [i ] & mask ;
1875
1882
unsigned offset ;
@@ -1897,6 +1904,7 @@ static void filter_bitmap_blob_limit(struct bitmap_index *bitmap_git,
1897
1904
bitmap_unset (to_filter , pos );
1898
1905
}
1899
1906
1907
+ ewah_or_iterator_release (& it );
1900
1908
bitmap_free (tips );
1901
1909
}
1902
1910
@@ -2528,12 +2536,12 @@ static uint32_t count_object_type(struct bitmap_index *bitmap_git,
2528
2536
struct eindex * eindex = & bitmap_git -> ext_index ;
2529
2537
2530
2538
uint32_t i = 0 , count = 0 ;
2531
- struct ewah_iterator it ;
2539
+ struct ewah_or_iterator it ;
2532
2540
eword_t filter ;
2533
2541
2534
2542
init_type_iterator (& it , bitmap_git , type );
2535
2543
2536
- while (i < objects -> word_alloc && ewah_iterator_next (& filter , & it )) {
2544
+ while (i < objects -> word_alloc && ewah_or_iterator_next (& filter , & it )) {
2537
2545
eword_t word = objects -> words [i ++ ] & filter ;
2538
2546
count += ewah_bit_popcount64 (word );
2539
2547
}
@@ -2545,6 +2553,8 @@ static uint32_t count_object_type(struct bitmap_index *bitmap_git,
2545
2553
count ++ ;
2546
2554
}
2547
2555
2556
+ ewah_or_iterator_release (& it );
2557
+
2548
2558
return count ;
2549
2559
}
2550
2560
@@ -3077,13 +3087,13 @@ static off_t get_disk_usage_for_type(struct bitmap_index *bitmap_git,
3077
3087
{
3078
3088
struct bitmap * result = bitmap_git -> result ;
3079
3089
off_t total = 0 ;
3080
- struct ewah_iterator it ;
3090
+ struct ewah_or_iterator it ;
3081
3091
eword_t filter ;
3082
3092
size_t i ;
3083
3093
3084
3094
init_type_iterator (& it , bitmap_git , object_type );
3085
3095
for (i = 0 ; i < result -> word_alloc &&
3086
- ewah_iterator_next (& filter , & it ); i ++ ) {
3096
+ ewah_or_iterator_next (& filter , & it ); i ++ ) {
3087
3097
eword_t word = result -> words [i ] & filter ;
3088
3098
size_t base = (i * BITS_IN_EWORD );
3089
3099
unsigned offset ;
@@ -3124,6 +3134,8 @@ static off_t get_disk_usage_for_type(struct bitmap_index *bitmap_git,
3124
3134
}
3125
3135
}
3126
3136
3137
+ ewah_or_iterator_release (& it );
3138
+
3127
3139
return total ;
3128
3140
}
3129
3141
0 commit comments