aboutsummaryrefslogtreecommitdiff
path: root/macros/src
diff options
context:
space:
mode:
authorGravatar Conor Patrick <conorpp94@gmail.com> 2021-04-18 14:35:11 -0700
committerGravatar Conor Patrick <conorpp94@gmail.com> 2021-04-18 14:35:11 -0700
commitbc10fe266d7a3fbae0235cee23d62f75877bf6c4 (patch)
tree194d5268b165f21c925fb4523a67233c33c2bba5 /macros/src
parentb8b13573aebfa6719e25f0e2c8b1c28cdb66301a (diff)
downloadrtic-bc10fe266d7a3fbae0235cee23d62f75877bf6c4.tar.gz
rtic-bc10fe266d7a3fbae0235cee23d62f75877bf6c4.tar.zst
rtic-bc10fe266d7a3fbae0235cee23d62f75877bf6c4.zip
reclaim stack space used in init
Diffstat (limited to 'macros/src')
-rw-r--r--macros/src/codegen.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/macros/src/codegen.rs b/macros/src/codegen.rs
index cf728a7d..21db1438 100644
--- a/macros/src/codegen.rs
+++ b/macros/src/codegen.rs
@@ -66,9 +66,17 @@ pub fn app(app: &App, analysis: &Analysis, extra: &Extra) -> TokenStream2 {
#(#pre_init_stmts)*
- #call_init
+ #[inline(never)]
+ fn __rtic_init_resources<F>(f: F) where F: FnOnce() {
+ f();
+ }
+
+ // Wrap late_init_stmts in a function to ensure that stack space is reclaimed.
+ __rtic_init_resources(||{
+ #call_init
- #(#post_init_stmts)*
+ #(#post_init_stmts)*
+ });
#call_idle
}