<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_index/src/bit_set, branch 1.71.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.71.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.71.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2022-07-08T09:41:36+00:00</updated>
<entry>
<title>Fix cloning from a BitSet with a different domain size</title>
<updated>2022-07-08T09:41:36+00:00</updated>
<author>
<name>Tomasz Miąsko</name>
<email>tomasz.miasko@gmail.com</email>
</author>
<published>2022-07-08T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=9139a63b25e53722d7225cf373e4d713e0d5596f'/>
<id>urn:sha1:9139a63b25e53722d7225cf373e4d713e0d5596f</id>
<content type='text'>
The previous implementation incorrectly assumed that the
number of words in a bit set is equal to the domain size.

The new implementation delegates to `Vec::clone_from` which
is specialized for `Copy` elements.
</content>
</entry>
<entry>
<title>`BitSet` perf improvements</title>
<updated>2022-06-15T02:41:58+00:00</updated>
<author>
<name>Jakob Degen</name>
<email>jakob.e.degen@gmail.com</email>
</author>
<published>2022-06-05T23:22:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=bc7cd2f351ab35e0830563858e827a2d397d176d'/>
<id>urn:sha1:bc7cd2f351ab35e0830563858e827a2d397d176d</id>
<content type='text'>
This commit makes two changes:
 1. Changes `MaybeLiveLocals` to use `ChunkedBitSet`
 2. Overrides the `fold` method for the iterator for `ChunkedBitSet`
</content>
</entry>
<entry>
<title>Add element iterator for ChunkedBitSet</title>
<updated>2022-04-30T14:40:49+00:00</updated>
<author>
<name>Tomasz Miąsko</name>
<email>tomasz.miasko@gmail.com</email>
</author>
<published>2022-04-30T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=cdfdb99c9ecd3cc9bd4ac1ad30786ad318518e4e'/>
<id>urn:sha1:cdfdb99c9ecd3cc9bd4ac1ad30786ad318518e4e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Introduce `ChunkedBitSet` and use it for some dataflow analyses.</title>
<updated>2022-02-22T23:18:49+00:00</updated>
<author>
<name>Nicholas Nethercote</name>
<email>n.nethercote@gmail.com</email>
</author>
<published>2022-02-09T13:47:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=36b495f3cf23a1f235482ce7f81f0f4be614bb85'/>
<id>urn:sha1:36b495f3cf23a1f235482ce7f81f0f4be614bb85</id>
<content type='text'>
This reduces peak memory usage significantly for some programs with very
large functions, such as:
- `keccak`, `unicode_normalization`, and `match-stress-enum`, from
  the `rustc-perf` benchmark suite;
- `http-0.2.6` from crates.io.

The new type is used in the analyses where the bitsets can get huge
(e.g. 10s of thousands of bits): `MaybeInitializedPlaces`,
`MaybeUninitializedPlaces`, and `EverInitializedPlaces`.

Some refactoring was required in `rustc_mir_dataflow`. All existing
analysis domains are either `BitSet` or a trivial wrapper around
`BitSet`, and access in a few places is done via `Borrow&lt;BitSet&gt;` or
`BorrowMut&lt;BitSet&gt;`. Now that some of these domains are `ClusterBitSet`,
that no longer works. So this commit replaces the `Borrow`/`BorrowMut`
usage with a new trait `BitSetExt` containing the needed bitset
operations. The impls just forward these to the underlying bitset type.
This required fiddling with trait bounds in a few places.

The commit also:
- Moves `static_assert_size` from `rustc_data_structures` to
  `rustc_index` so it can be used in the latter; the former now
  re-exports it so existing users are unaffected.
- Factors out some common "clear excess bits in the final word"
  functionality in `bit_set.rs`.
- Uses `fill` in a few places instead of loops.
</content>
</entry>
<entry>
<title>Optimize live point computation</title>
<updated>2021-11-03T15:24:59+00:00</updated>
<author>
<name>Mark Rousskov</name>
<email>mark.simulacrum@gmail.com</email>
</author>
<published>2021-11-01T14:04:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=03afb61b53e27019166b8a2637a5eb7094017300'/>
<id>urn:sha1:03afb61b53e27019166b8a2637a5eb7094017300</id>
<content type='text'>
This is just replicating the previous algorithm, but taking advantage of the
bitset structures to optimize into tighter and better optimized loops.
Particularly advantageous on enormous MIR blocks, which are relatively rare in
practice.
</content>
</entry>
<entry>
<title>Formatting</title>
<updated>2021-08-26T20:23:24+00:00</updated>
<author>
<name>Will Crichton</name>
<email>wcrichto@cs.stanford.edu</email>
</author>
<published>2021-08-26T20:23:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c7357270b8b93ef23f6295abecf8ff27948881c3'/>
<id>urn:sha1:c7357270b8b93ef23f6295abecf8ff27948881c3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix failing test</title>
<updated>2021-08-26T20:09:39+00:00</updated>
<author>
<name>Will Crichton</name>
<email>wcrichto@cs.stanford.edu</email>
</author>
<published>2021-08-26T20:09:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8d9e4f98e142dd7a6fd61deac46eddf8bb4a45be'/>
<id>urn:sha1:8d9e4f98e142dd7a6fd61deac46eddf8bb4a45be</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add comments and unit tests for new SparseBitMatrix methods</title>
<updated>2021-08-26T19:46:59+00:00</updated>
<author>
<name>Will Crichton</name>
<email>wcrichto@cs.stanford.edu</email>
</author>
<published>2021-08-26T19:46:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=2166c6db438911590d2ab70964010217e9697a09'/>
<id>urn:sha1:2166c6db438911590d2ab70964010217e9697a09</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Compile failure</title>
<updated>2021-08-26T19:26:08+00:00</updated>
<author>
<name>Will Crichton</name>
<email>wcrichto@cs.stanford.edu</email>
</author>
<published>2021-08-26T19:26:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=7e148b0cef3eccf06414c47841a525c7cc096f28'/>
<id>urn:sha1:7e148b0cef3eccf06414c47841a525c7cc096f28</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Compilation failure in tests</title>
<updated>2021-08-26T18:46:57+00:00</updated>
<author>
<name>Will Crichton</name>
<email>wcrichto@cs.stanford.edu</email>
</author>
<published>2021-08-26T18:46:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e854027c12f88d9d28c5a016ee8b6a6cb89983cc'/>
<id>urn:sha1:e854027c12f88d9d28c5a016ee8b6a6cb89983cc</id>
<content type='text'>
</content>
</entry>
</feed>
