@@ -1622,25 +1622,29 @@ static void show_extended_objects(struct bitmap_index *bitmap_git,
1622
1622
}
1623
1623
}
1624
1624
1625
- static void init_type_iterator (struct ewah_iterator * it ,
1625
+ static void init_type_iterator (struct ewah_or_iterator * it ,
1626
1626
struct bitmap_index * bitmap_git ,
1627
1627
enum object_type type )
1628
1628
{
1629
1629
switch (type ) {
1630
1630
case OBJ_COMMIT :
1631
- ewah_iterator_init (it , bitmap_git -> commits );
1631
+ ewah_or_iterator_init (it , bitmap_git -> commits_all ,
1632
+ bitmap_git -> base_nr );
1632
1633
break ;
1633
1634
1634
1635
case OBJ_TREE :
1635
- ewah_iterator_init (it , bitmap_git -> trees );
1636
+ ewah_or_iterator_init (it , bitmap_git -> trees_all ,
1637
+ bitmap_git -> base_nr );
1636
1638
break ;
1637
1639
1638
1640
case OBJ_BLOB :
1639
- ewah_iterator_init (it , bitmap_git -> blobs );
1641
+ ewah_or_iterator_init (it , bitmap_git -> blobs_all ,
1642
+ bitmap_git -> base_nr );
1640
1643
break ;
1641
1644
1642
1645
case OBJ_TAG :
1643
- ewah_iterator_init (it , bitmap_git -> tags );
1646
+ ewah_or_iterator_init (it , bitmap_git -> tags_all ,
1647
+ bitmap_git -> base_nr );
1644
1648
break ;
1645
1649
1646
1650
default :
@@ -1657,15 +1661,15 @@ static void show_objects_for_type(
1657
1661
size_t i = 0 ;
1658
1662
uint32_t offset ;
1659
1663
1660
- struct ewah_iterator it ;
1664
+ struct ewah_or_iterator it ;
1661
1665
eword_t filter ;
1662
1666
1663
1667
struct bitmap * objects = bitmap_git -> result ;
1664
1668
1665
1669
init_type_iterator (& it , bitmap_git , object_type );
1666
1670
1667
1671
for (i = 0 ; i < objects -> word_alloc &&
1668
- ewah_iterator_next (& filter , & it ); i ++ ) {
1672
+ ewah_or_iterator_next (& filter , & it ); i ++ ) {
1669
1673
eword_t word = objects -> words [i ] & filter ;
1670
1674
size_t pos = (i * BITS_IN_EWORD );
1671
1675
@@ -1707,6 +1711,8 @@ static void show_objects_for_type(
1707
1711
show_reach (& oid , object_type , 0 , hash , pack , ofs );
1708
1712
}
1709
1713
}
1714
+
1715
+ ewah_or_iterator_free (& it );
1710
1716
}
1711
1717
1712
1718
static int in_bitmapped_pack (struct bitmap_index * bitmap_git ,
@@ -1758,7 +1764,7 @@ static void filter_bitmap_exclude_type(struct bitmap_index *bitmap_git,
1758
1764
{
1759
1765
struct eindex * eindex = & bitmap_git -> ext_index ;
1760
1766
struct bitmap * tips ;
1761
- struct ewah_iterator it ;
1767
+ struct ewah_or_iterator it ;
1762
1768
eword_t mask ;
1763
1769
uint32_t i ;
1764
1770
@@ -1775,7 +1781,7 @@ static void filter_bitmap_exclude_type(struct bitmap_index *bitmap_git,
1775
1781
* packfile.
1776
1782
*/
1777
1783
for (i = 0 , init_type_iterator (& it , bitmap_git , type );
1778
- i < to_filter -> word_alloc && ewah_iterator_next (& mask , & it );
1784
+ i < to_filter -> word_alloc && ewah_or_iterator_next (& mask , & it );
1779
1785
i ++ ) {
1780
1786
if (i < tips -> word_alloc )
1781
1787
mask &= ~tips -> words [i ];
@@ -1795,6 +1801,7 @@ static void filter_bitmap_exclude_type(struct bitmap_index *bitmap_git,
1795
1801
bitmap_unset (to_filter , pos );
1796
1802
}
1797
1803
1804
+ ewah_or_iterator_free (& it );
1798
1805
bitmap_free (tips );
1799
1806
}
1800
1807
@@ -1852,14 +1859,14 @@ static void filter_bitmap_blob_limit(struct bitmap_index *bitmap_git,
1852
1859
{
1853
1860
struct eindex * eindex = & bitmap_git -> ext_index ;
1854
1861
struct bitmap * tips ;
1855
- struct ewah_iterator it ;
1862
+ struct ewah_or_iterator it ;
1856
1863
eword_t mask ;
1857
1864
uint32_t i ;
1858
1865
1859
1866
tips = find_tip_objects (bitmap_git , tip_objects , OBJ_BLOB );
1860
1867
1861
1868
for (i = 0 , init_type_iterator (& it , bitmap_git , OBJ_BLOB );
1862
- i < to_filter -> word_alloc && ewah_iterator_next (& mask , & it );
1869
+ i < to_filter -> word_alloc && ewah_or_iterator_next (& mask , & it );
1863
1870
i ++ ) {
1864
1871
eword_t word = to_filter -> words [i ] & mask ;
1865
1872
unsigned offset ;
@@ -1887,6 +1894,7 @@ static void filter_bitmap_blob_limit(struct bitmap_index *bitmap_git,
1887
1894
bitmap_unset (to_filter , pos );
1888
1895
}
1889
1896
1897
+ ewah_or_iterator_free (& it );
1890
1898
bitmap_free (tips );
1891
1899
}
1892
1900
@@ -2502,12 +2510,12 @@ static uint32_t count_object_type(struct bitmap_index *bitmap_git,
2502
2510
struct eindex * eindex = & bitmap_git -> ext_index ;
2503
2511
2504
2512
uint32_t i = 0 , count = 0 ;
2505
- struct ewah_iterator it ;
2513
+ struct ewah_or_iterator it ;
2506
2514
eword_t filter ;
2507
2515
2508
2516
init_type_iterator (& it , bitmap_git , type );
2509
2517
2510
- while (i < objects -> word_alloc && ewah_iterator_next (& filter , & it )) {
2518
+ while (i < objects -> word_alloc && ewah_or_iterator_next (& filter , & it )) {
2511
2519
eword_t word = objects -> words [i ++ ] & filter ;
2512
2520
count += ewah_bit_popcount64 (word );
2513
2521
}
@@ -2519,6 +2527,8 @@ static uint32_t count_object_type(struct bitmap_index *bitmap_git,
2519
2527
count ++ ;
2520
2528
}
2521
2529
2530
+ ewah_or_iterator_free (& it );
2531
+
2522
2532
return count ;
2523
2533
}
2524
2534
@@ -3046,13 +3056,13 @@ static off_t get_disk_usage_for_type(struct bitmap_index *bitmap_git,
3046
3056
{
3047
3057
struct bitmap * result = bitmap_git -> result ;
3048
3058
off_t total = 0 ;
3049
- struct ewah_iterator it ;
3059
+ struct ewah_or_iterator it ;
3050
3060
eword_t filter ;
3051
3061
size_t i ;
3052
3062
3053
3063
init_type_iterator (& it , bitmap_git , object_type );
3054
3064
for (i = 0 ; i < result -> word_alloc &&
3055
- ewah_iterator_next (& filter , & it ); i ++ ) {
3065
+ ewah_or_iterator_next (& filter , & it ); i ++ ) {
3056
3066
eword_t word = result -> words [i ] & filter ;
3057
3067
size_t base = (i * BITS_IN_EWORD );
3058
3068
unsigned offset ;
@@ -3093,6 +3103,8 @@ static off_t get_disk_usage_for_type(struct bitmap_index *bitmap_git,
3093
3103
}
3094
3104
}
3095
3105
3106
+ ewah_or_iterator_free (& it );
3107
+
3096
3108
return total ;
3097
3109
}
3098
3110
0 commit comments