mirror of
https://github.com/esphome/esphome.git
synced 2026-09-16 01:28:39 +00:00
[scheduler] Force-inline process_to_add() fast path
process_to_add() has the same pattern as cleanup_(): a one-line inline fast path (check if to_add_ is empty) with the slow path already out-of-line in process_to_add_slow_path_(). GCC inlines it on ESP8266 but not on ESP32, emitting a 20-byte out-of-line body. Use ESPHOME_ALWAYS_INLINE to guarantee inlining on all platforms. Verified on ESP32 (xtensa-esp32): - process_to_add() symbol eliminated from binary - Scheduler::call() idle path: 1 out-of-line call (millis_64 only)
This commit is contained in:
@@ -138,7 +138,7 @@ class Scheduler {
|
||||
// (single-threaded). This is safe because the main loop is the only thread
|
||||
// that reads to_add_ without holding lock_; other threads may read it only
|
||||
// while holding the mutex (e.g. cancel_item_locked_).
|
||||
inline void HOT process_to_add() {
|
||||
inline void ESPHOME_ALWAYS_INLINE HOT process_to_add() {
|
||||
if (this->to_add_empty_())
|
||||
return;
|
||||
this->process_to_add_slow_path_();
|
||||
|
||||
Reference in New Issue
Block a user