mirror of
https://github.com/esphome/esphome.git
synced 2026-09-11 15:27:33 +00:00
decode_field() becomes a static per message function and the generated decode() hands it to the shared loop as a function pointer, so decodable messages carry no vtable and no vptr store at every construction site. The loop loses the two vtable loads per field. The protected destructor on ProtoDecodableMessage goes with the virtuals; ProtoMessage keeps its own guard for the dump builds that still have them.