mirror of
https://github.com/esphome/esphome.git
synced 2026-03-01 02:14:19 -07:00
[web_server] Flatten deq_push_back_with_dedup_ to inline vector realloc
On ESP8266 (GCC 10.3), std::vector::push_back() emits a separate _M_realloc_insert<DeferredEvent> function (198 bytes) that is only called from one site. Adding __attribute__((flatten)) forces the compiler to inline it, eliminating the out-of-line function's prologue/epilogue and call overhead. This matches what GCC 14.2 (ESP-IDF toolchain) already does naturally for the equivalent code in web_server_idf.cpp. Saves 80 bytes of flash on ESP8266.
This commit is contained in:
@@ -198,7 +198,8 @@ EntityMatchResult UrlMatch::match_entity(EntityBase *entity) const {
|
||||
|
||||
#if !defined(USE_ESP32) && defined(USE_ARDUINO)
|
||||
// helper for allowing only unique entries in the queue
|
||||
void DeferredUpdateEventSource::deq_push_back_with_dedup_(void *source, message_generator_t *message_generator) {
|
||||
void __attribute__((flatten))
|
||||
DeferredUpdateEventSource::deq_push_back_with_dedup_(void *source, message_generator_t *message_generator) {
|
||||
DeferredEvent item(source, message_generator);
|
||||
|
||||
// Use range-based for loop instead of std::find_if to reduce template instantiation overhead and binary size
|
||||
|
||||
Reference in New Issue
Block a user