@@ -29,6 +29,7 @@ class InMemoryPackageIndex {
2929 late final TokenIndex <String > _descrIndex;
3030 late final TokenIndex <String > _readmeIndex;
3131 late final TokenIndex <IndexedApiDocPage > _apiSymbolIndex;
32+ late final _bitArrayPool = BitArrayPool (_documents.length);
3233 late final _scorePool = ScorePool (_packageNameIndex._packageNames);
3334
3435 /// Maps the tag strings to a list of document index values using bit arrays.
@@ -140,22 +141,21 @@ class InMemoryPackageIndex {
140141 if ((query.offset ?? 0 ) >= _documents.length) {
141142 return PackageSearchResult .empty ();
142143 }
143- return _scorePool.withScore (
144- value: 0.0 ,
145- fn: (score) {
146- return _search (query, score);
147- },
148- );
144+ return _bitArrayPool.withBitArrayAllSet (fn: (array) {
145+ return _scorePool.withScore (
146+ value: 0.0 ,
147+ fn: (score) {
148+ return _search (query, array, score);
149+ },
150+ );
151+ });
149152 }
150153
151154 PackageSearchResult _search (
152155 ServiceSearchQuery query,
156+ BitArray packages,
153157 IndexedScore <String > packageScores,
154158 ) {
155- // TODO: implement pooling of this object similarly to [ScorePool].
156- final packages = BitArray (_documents.length)
157- ..setRange (0 , _documents.length);
158-
159159 // filter on tags
160160 final combinedTagsPredicate =
161161 query.tagsPredicate.appendPredicate (query.parsedQuery.tagsPredicate);
0 commit comments