• M
    Switch QueryJobId to a single global counter · e240783a
    Mark Rousskov 提交于
    This replaces the per-shard counters with a single global counter, simplifying
    the JobId struct down to just a u64 and removing the need to pipe a DepKind
    generic through a bunch of code. The performance implications on non-parallel
    compilers are likely minimal (this switches to `Cell<u64>` as the backing
    storage over a `u64`, but the latter was already inside a `RefCell` so it's not
    really a significance divergence). On parallel compilers, the cost of a single
    global u64 counter may be more significant: it adds a serialization point in
    theory. On the other hand, we can imagine changing the counter to have a
    thread-local component if it becomes worrisome or some similar structure.
    
    The new design is sufficiently simpler that it warrants the potential for slight
    changes down the line if/when we get parallel compilation to be more of a
    default.
    
    A u64 counter, instead of u32 (the old per-shard width), is chosen to avoid
    possibly overflowing it and causing problems; it is effectively impossible that
    we would overflow a u64 counter in this context.
    e240783a
plumbing.rs 26.3 KB