pureboot: the activation countdown in the narrowest type that holds it
The fixed-baud window counted down a uint32 where almost every window fits 24 bits; the countdown now takes avr::uint24_t when the poll budget allows (the autobaud budget's own choice), uint32 past 16.7M polls — four bytes off every fixed-baud image on every chip, the full suites green on the changed window. The README size table is refreshed — its autobaud column had also gone stale by the no-assembly pass's measurement-loop win, which nothing gated: sizes.py check-readme now runs as the gate's final stage, where every tree is freshly built and the table can actually be held. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -351,9 +351,14 @@ consteval std::uint32_t window_polls()
|
||||
return timeout_seconds * static_cast<std::uint32_t>(dev::clock.hz / link::poll_cycles);
|
||||
}
|
||||
|
||||
// The countdown in the narrowest type that holds it: a fourth byte would
|
||||
// cost a wider decrement chain at every poll for range most windows never
|
||||
// use (the autobaud budget makes the same choice).
|
||||
using window_t = std::conditional_t<window_polls() <= 0xffffff, avr::uint24_t, std::uint32_t>;
|
||||
|
||||
bool pending_before_deadline()
|
||||
{
|
||||
std::uint32_t polls = window_polls();
|
||||
window_t polls = window_polls();
|
||||
do {
|
||||
if (link::pending())
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user