Add recursive_static_params to AIR
Any methods to a recursive function that are unchanged and forwarded don't need to be applied each time we recurse; instead, you can define a containing lambda, reducing the number of applications dramatically when recursing
This commit is contained in:
@@ -47,6 +47,7 @@ pub enum Air {
|
||||
module_name: String,
|
||||
params: Vec<String>,
|
||||
recursive: bool,
|
||||
recursive_static_params: Vec<String>,
|
||||
variant_name: String,
|
||||
},
|
||||
Fn {
|
||||
|
||||
@@ -129,6 +129,7 @@ pub enum AirStatement {
|
||||
module_name: String,
|
||||
params: Vec<String>,
|
||||
recursive: bool,
|
||||
recursive_static_params: Vec<String>,
|
||||
variant_name: String,
|
||||
func_body: Box<AirTree>,
|
||||
},
|
||||
@@ -423,6 +424,7 @@ impl AirTree {
|
||||
variant_name: impl ToString,
|
||||
params: Vec<String>,
|
||||
recursive: bool,
|
||||
recursive_static_params: Vec<String>,
|
||||
func_body: AirTree,
|
||||
) -> AirTree {
|
||||
AirTree::Statement {
|
||||
@@ -431,6 +433,7 @@ impl AirTree {
|
||||
module_name: module_name.to_string(),
|
||||
params,
|
||||
recursive,
|
||||
recursive_static_params,
|
||||
variant_name: variant_name.to_string(),
|
||||
func_body: func_body.into(),
|
||||
},
|
||||
@@ -875,6 +878,7 @@ impl AirTree {
|
||||
module_name,
|
||||
params,
|
||||
recursive,
|
||||
recursive_static_params,
|
||||
variant_name,
|
||||
func_body,
|
||||
} => {
|
||||
@@ -883,6 +887,7 @@ impl AirTree {
|
||||
module_name: module_name.clone(),
|
||||
params: params.clone(),
|
||||
recursive: *recursive,
|
||||
recursive_static_params: recursive_static_params.clone(),
|
||||
variant_name: variant_name.clone(),
|
||||
});
|
||||
func_body.create_air_vec(air_vec);
|
||||
|
||||
Reference in New Issue
Block a user