rust/compiler/rustc_data_structures/src
Tyson Nottingham 52f21791fb Serialize incr comp structures to file via fixed-size buffer
Reduce a large memory spike that happens during serialization by writing
the incr comp structures to file by way of a fixed-size buffer, rather
than an unbounded vector.

Effort was made to keep the instruction count close to that of the
previous implementation. However, buffered writing to a file inherently
has more overhead than writing to a vector, because each write may
result in a handleable error. To reduce this overhead, arrangements are
made so that each LEB128-encoded integer can be written to the buffer
with only one capacity and error check. Higher-level optimizations in
which entire composite structures can be written with one capacity and
error check are possible, but would require much more work.

The performance is mostly on par with the previous implementation, with
small to moderate instruction count regressions. The memory reduction is
significant, however, so it seems like a worth-while trade-off.
2021-01-11 12:13:22 -08:00
..
base_n mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
binary_search_util mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
graph don't redundantly repeat field names 2020-12-29 22:26:58 +01:00
obligation_forest Turn Outcome into an opaque type to remove some runtime checks 2020-10-15 08:32:41 +02:00
owning_ref mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
sip128 SipHasher128: improve constant names and add more comments 2020-10-11 23:48:35 -07:00
small_c_str mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
snapshot_map mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
sorted_map Switch compiler/ to intra-doc links 2020-12-18 15:22:51 -05:00
sso Rollup merge of #78083 - ChaiTRex:master, r=m-ou-se 2020-12-19 15:15:57 +09:00
stable_hasher Stable hashing: add comments and tests concerning platform-independence 2020-09-30 00:57:35 -07:00
tagged_ptr Use T::BITS instead of size_of::<T> * 8. 2020-09-19 06:54:42 +02:00
tiny_list mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
transitive_relation mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
atomic_ref.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
base_n.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
box_region.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
captures.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
const_cstr.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
fingerprint.rs Serialize incr comp structures to file via fixed-size buffer 2021-01-11 12:13:22 -08:00
flock.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
frozen.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
functor.rs words 2020-11-16 22:42:09 +01:00
fx.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
jobserver.rs datastructures: replace lazy_static by SyncLazy from std 2020-09-01 22:06:47 +01:00
lib.rs Bump bootstrap compiler to 1.50 beta 2020-12-30 09:27:19 -05:00
macros.rs Remove unused static_assert macro 2020-09-20 11:40:51 +02:00
map_in_place.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
profiling.rs [self-profiling] Include the estimated size of each cgu in the profile 2020-11-03 07:55:17 -05:00
ptr_key.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
sharded.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
sip128.rs SipHasher128: improve constant names and add more comments 2020-10-11 23:48:35 -07:00
small_c_str.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
sorted_map.rs Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
stable_hasher.rs Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
stable_map.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
stable_set.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
stack.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
steal.rs Move Steal to rustc_data_structures. 2020-11-14 01:30:56 +01:00
svh.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
sync.rs Use RwLock instead of Lock for SourceMap::files 2020-10-29 18:09:53 +01:00
tagged_ptr.rs Fix typos 2020-10-29 16:51:46 +01:00
temp_dir.rs Capitalize safety comments 2020-09-08 22:37:18 -04:00
thin_vec.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
tiny_list.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
transitive_relation.rs Fix typos 2020-10-29 16:51:46 +01:00
unhash.rs Avoid rehashing Fingerprint as a map key 2020-09-01 18:27:02 -07:00
vec_linked_list.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
work_queue.rs Remove unused code from remaining compiler crates 2020-10-14 04:14:32 +02:00