[core] Limit play_complex override to StatelessLambdaAction only

LambdaAction and ContinuationAction overrides caused flash bloat
by replacing shared base class play_complex instantiations with
per-class copies. StatelessLambdaAction is the most common
automation action and its no-args variant is only 24 bytes.
This commit is contained in:
J. Nick Koston
2026-03-20 18:52:12 -10:00
parent 884db8060a
commit aacc7e54d2
-14
View File
@@ -217,13 +217,6 @@ template<typename... Ts> class LambdaAction : public Action<Ts...> {
public:
explicit LambdaAction(std::function<void(Ts...)> &&f) : f_(std::move(f)) {}
// Override play_complex to call play() non-virtually (qualified call),
// eliminating one virtual dispatch frame from the call stack.
void play_complex(const Ts &...x) override {
this->num_running_++;
LambdaAction::play(x...);
this->play_next_(x...);
}
void play(const Ts &...x) override { this->f_(x...); }
protected:
@@ -257,13 +250,6 @@ template<typename... Ts> class ContinuationAction : public Action<Ts...> {
public:
explicit ContinuationAction(Action<Ts...> *parent) : parent_(parent) {}
// Override play_complex to call play() non-virtually (qualified call),
// eliminating one virtual dispatch frame from the call stack.
void play_complex(const Ts &...x) override {
this->num_running_++;
ContinuationAction::play(x...);
this->play_next_(x...);
}
void play(const Ts &...x) override { this->parent_->play_next_(x...); }
protected: