Skip to content

Commit

Permalink
Merge pull request #3064 from AleoHQ/fix/codegen-for-futures
Browse files Browse the repository at this point in the history
[Fix] Codegen for futures.
  • Loading branch information
d0cd authored Oct 26, 2023
2 parents c172b13 + 9d11d05 commit d1fbd5b
Show file tree
Hide file tree
Showing 26 changed files with 124 additions and 103 deletions.
9 changes: 6 additions & 3 deletions compiler/passes/src/code_generation/visit_expressions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,9 @@ impl<'a> CodeGenerator<'a> {
}
}

// Construct the output operands. These are the destination registers **without** the future.
let output_operands = destinations.join(" ");

// If `has_finalize`, create another destination register for the future.
if has_finalize {
// Construct the future register.
Expand All @@ -553,7 +556,7 @@ impl<'a> CodeGenerator<'a> {
};

// Add the futures register to the list of futures.
self.futures.push((future_register.clone(), format!("{program_id}/{function_name}")));
self.futures.push((future_register.clone(), format!("{program_id}.aleo/{function_name}")));

// Add the future register to the list of destinations.
destinations.push(future_register);
Expand All @@ -573,8 +576,8 @@ impl<'a> CodeGenerator<'a> {
// Push the call instruction to the list of instructions.
instructions.push_str(&call_instruction);

// Return the destination registers as a string and the instructions.
(destinations.join(" "), instructions)
// Return the output operands and the instructions.
(output_operands, instructions)
}

fn visit_tuple(&mut self, input: &'a TupleExpression) -> (String, String) {
Expand Down
60 changes: 32 additions & 28 deletions compiler/passes/src/code_generation/visit_program.rs
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ impl<'a> CodeGenerator<'a> {
function_string.push_str(&block_string);

// If the finalize block exists, generate the appropriate bytecode.
if let Some(finalize) = &function.finalize {
if !self.futures.is_empty() || function.finalize.is_some() {
// Clear the register count.
self.next_register = 0;
self.in_finalize = true;
Expand All @@ -220,52 +220,56 @@ impl<'a> CodeGenerator<'a> {
self.variable_mapping.insert(&sym::SelfLower, "self".to_string());
self.variable_mapping.insert(&sym::block, "block".to_string());

function_string.push_str(&format!("\nfinalize {}:\n", finalize.identifier));
function_string.push_str(&format!("\nfinalize {}:\n", function.identifier));

// If the function contained calls that produced futures, then we need to add the futures to the finalize block as input.
// Store the new future registers.
let mut future_registers = Vec::new();
for (_, future_type) in &self.futures {
let register_string = format!("r{}", self.next_register);
writeln!(function_string, " input {register_string} as {future_type};")
writeln!(function_string, " input {register_string} as {future_type}.future;")
.expect("failed to write to string");
future_registers.push(register_string);
self.next_register += 1;
}

// Construct and append the input declarations of the finalize block.
for input in finalize.input.iter() {
let register_string = format!("r{}", self.next_register);
self.next_register += 1;

// TODO: Dedup code.
let type_string = match input {
functions::Input::Internal(input) => {
self.variable_mapping.insert(&input.identifier.name, register_string.clone());

let visibility = match (self.is_transition_function, input.mode) {
(true, Mode::None) => Mode::Public,
_ => input.mode,
};
self.visit_type_with_visibility(&input.type_, visibility)
}
functions::Input::External(input) => {
self.variable_mapping.insert(&input.program_name.name, register_string.clone());
format!("{}.aleo/{}.record", input.program_name, input.record)
}
};
// Construct and append the input declarations of the finalize block, if it exists.
if let Some(finalize) = &function.finalize {
for input in finalize.input.iter() {
let register_string = format!("r{}", self.next_register);
self.next_register += 1;

// TODO: Dedup code.
let type_string = match input {
functions::Input::Internal(input) => {
self.variable_mapping.insert(&input.identifier.name, register_string.clone());

let visibility = match (self.is_transition_function, input.mode) {
(true, Mode::None) => Mode::Public,
_ => input.mode,
};
self.visit_type_with_visibility(&input.type_, visibility)
}
functions::Input::External(input) => {
self.variable_mapping.insert(&input.program_name.name, register_string.clone());
format!("{}.aleo/{}.record", input.program_name, input.record)
}
};

writeln!(function_string, " input {register_string} as {type_string};",)
.expect("failed to write to string");
writeln!(function_string, " input {register_string} as {type_string};",)
.expect("failed to write to string");
}
}

// Invoke `await` on each future.
for register in future_registers {
writeln!(function_string, " await {register};").expect("failed to write to string");
}

// Construct and append the finalize block body.
function_string.push_str(&self.visit_block(&finalize.block));
// Construct and append the finalize block body, if it exists.
if let Some(finalize) = &function.finalize {
function_string.push_str(&self.visit_block(&finalize.block));
}

self.in_finalize = false;
}
Expand Down
14 changes: 14 additions & 0 deletions compiler/passes/src/flattening/flattener.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ use leo_ast::{
TernaryExpression,
TupleExpression,
Type,
UnitExpression,
};
use leo_span::Symbol;

Expand Down Expand Up @@ -213,6 +214,7 @@ impl<'a> Flattener<'a> {

/// Folds a list of return statements into a single return statement and adds the produced statements to the block.
pub(crate) fn fold_returns(&mut self, block: &mut Block, returns: Vec<(Option<Expression>, ReturnStatement)>) {
// If the list of returns is not empty, then fold them into a single return statement.
if !returns.is_empty() {
let mut return_expressions = Vec::with_capacity(returns.len());

Expand Down Expand Up @@ -266,5 +268,17 @@ impl<'a> Flattener<'a> {
id: self.node_builder.next_id(),
}));
}
// Otherwise, push a dummy return statement to the end of the block.
else {
block.statements.push(Statement::Return(ReturnStatement {
expression: {
let id = self.node_builder.next_id();
Expression::Unit(UnitExpression { span: Default::default(), id })
},
finalize_arguments: None,
span: Default::default(),
id: self.node_builder.next_id(),
}));
}
}
}
6 changes: 3 additions & 3 deletions tests/expectations/compiler/constants/constant_finalize.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: 61959475b7132f57e7ed12c3906ab0d6c988903c76df6c8691b260b0ac673723
unrolled_ast: a205b6d649ec0453b0ca23d527ce1348b7863f163d0c467bd7e6a4dd17d466ca
ssa_ast: db913a2f2cd0383a4baec3b8ea6b4e8281d7f6d32e047c125908ceddadbc4f64
flattened_ast: 665cf74b0b3ec393665a4190f0deb5cc27b729144d29d631f4220caa72e028b8
inlined_ast: 665cf74b0b3ec393665a4190f0deb5cc27b729144d29d631f4220caa72e028b8
dce_ast: 665cf74b0b3ec393665a4190f0deb5cc27b729144d29d631f4220caa72e028b8
flattened_ast: e4909e04089bc18db565c5febcd6470d20b59a52ceee5124c75a37527278c880
inlined_ast: e4909e04089bc18db565c5febcd6470d20b59a52ceee5124c75a37527278c880
dce_ast: e4909e04089bc18db565c5febcd6470d20b59a52ceee5124c75a37527278c880
bytecode: 34335e40c3ca26e00044d055cc0cb8d262fce1ac49a4940b36b1136e0772d305
warnings: ""
6 changes: 3 additions & 3 deletions tests/expectations/compiler/examples/basic_bank.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: a06f6f8927304627273280f932ba15dc3f7d8e904242493f61717b128a6e72ce
unrolled_ast: 20d1d302f66a1cb85e9bf3dc7a5d012bec247d3551b0c10a49a70e2fc796efff
ssa_ast: d8d53d403c73a714642f0ee35c903fcc638f4c793b73f2b35e644d947b1076e4
flattened_ast: 9c215a0e0395e4806cdc910fbd241b67dc8d8f285b7ae0978dbea576d3fd8d8f
inlined_ast: 5a38955159fffa89fe7526402a42ecd95a2e3be2f77a02316695d2e1b9af8bd7
dce_ast: 5a38955159fffa89fe7526402a42ecd95a2e3be2f77a02316695d2e1b9af8bd7
flattened_ast: 5c15ed355c98713e2a7d5572b417fbbd4a69f8f8bf7eae8df1b4c9c6b48d2f58
inlined_ast: 8d4a721d1f302ce8f9c27536676f934b1fe483e4e8ed474e10e212c77b5c77bc
dce_ast: 8d4a721d1f302ce8f9c27536676f934b1fe483e4e8ed474e10e212c77b5c77bc
bytecode: 799c84f9a28bcdd1cb72269b56baae0905a136fc2d041745fb7ae52c9958b24e
warnings: ""
6 changes: 3 additions & 3 deletions tests/expectations/compiler/examples/lottery.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: 1302520bb45d2fa0aab61b9bd44f14ba0fd693cbe38eb53f07409da99005966d
unrolled_ast: 1302520bb45d2fa0aab61b9bd44f14ba0fd693cbe38eb53f07409da99005966d
ssa_ast: 8b96d4cc8b07b936f4fa9115a20ccb7b8769fe14949ad0d1b1b8ae487d2796c7
flattened_ast: 9be983f41578bbf73a13dd63cc320b18bdd8a942a47349fd7cd5d46651bbf998
inlined_ast: 9be983f41578bbf73a13dd63cc320b18bdd8a942a47349fd7cd5d46651bbf998
dce_ast: 9be983f41578bbf73a13dd63cc320b18bdd8a942a47349fd7cd5d46651bbf998
flattened_ast: d75c2f006febf5806c4b725c2b116cdd06bee753b79dec9ba1412932a7679e4b
inlined_ast: d75c2f006febf5806c4b725c2b116cdd06bee753b79dec9ba1412932a7679e4b
dce_ast: d75c2f006febf5806c4b725c2b116cdd06bee753b79dec9ba1412932a7679e4b
bytecode: ec9d10d78356538cf9f94bc46c20c33001a05100906259e217eeea2cfd0c4a66
warnings: ""
6 changes: 3 additions & 3 deletions tests/expectations/compiler/examples/token.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: 0b121e536cfdc9c7a48cc2b0937b7a0013a9ebd828c236c52350aaa4b5ac40dc
unrolled_ast: 0b121e536cfdc9c7a48cc2b0937b7a0013a9ebd828c236c52350aaa4b5ac40dc
ssa_ast: 8ace2aff7a1c6ccc8a1b3947db80c60b38387fb9da4686a0b3b77c3cf542c92d
flattened_ast: 9c2e79c3607b50ba675d24d4acb46f3ec80c146a66d91f94476bbed50798e3be
inlined_ast: 9c2e79c3607b50ba675d24d4acb46f3ec80c146a66d91f94476bbed50798e3be
dce_ast: 9c2e79c3607b50ba675d24d4acb46f3ec80c146a66d91f94476bbed50798e3be
flattened_ast: 651aba0915701ac8895c616806c27129524a4d21d6bbbea6b8c9e25166fe2115
inlined_ast: 651aba0915701ac8895c616806c27129524a4d21d6bbbea6b8c9e25166fe2115
dce_ast: 651aba0915701ac8895c616806c27129524a4d21d6bbbea6b8c9e25166fe2115
bytecode: 379643d6f93f6040c0bb64ea96345269a23d6fb23fa3eae46ceb8e9ea9c73f9a
warnings: ""
6 changes: 3 additions & 3 deletions tests/expectations/compiler/examples/vote.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: 138da847ee27c757abc8cac45d9794e9829b8a7328a78544d6799d05676ba7e3
unrolled_ast: ad8b0114b13e2c37074e0e5c1ea1a8388b2d68566e7d630fe97bdbb428962bf1
ssa_ast: f009ad0b0108aa940832434858c710fdeba501cb56a64b874aa7523f6ecb773a
flattened_ast: 6f70b04c03328c079ecc07783e9cecb3ea35ec31390c99fc10a176c006233f8b
inlined_ast: 6f70b04c03328c079ecc07783e9cecb3ea35ec31390c99fc10a176c006233f8b
dce_ast: 6f70b04c03328c079ecc07783e9cecb3ea35ec31390c99fc10a176c006233f8b
flattened_ast: ede7fa712e7335d5cf6cf2245cfaaa8b7b625e0682c2d42450b32d032a72e6eb
inlined_ast: ede7fa712e7335d5cf6cf2245cfaaa8b7b625e0682c2d42450b32d032a72e6eb
dce_ast: ede7fa712e7335d5cf6cf2245cfaaa8b7b625e0682c2d42450b32d032a72e6eb
bytecode: 0c73fbf3a08f7b89b82fc3189771704f58740f37c41f9c5aa7aef2a808badf9b
warnings: ""
6 changes: 3 additions & 3 deletions tests/expectations/compiler/finalize/block_height.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: 3fa1bf3d9465f691bfebc6b79d8d2220aa4bd1ddde949d4e74ce4104ca7194a0
unrolled_ast: 3fa1bf3d9465f691bfebc6b79d8d2220aa4bd1ddde949d4e74ce4104ca7194a0
ssa_ast: 57cdec6f22c8b14655c4b4ffe32f668e450583c10e92de71e0c4d385b4937b5b
flattened_ast: d544ffc75f1144ce6a483231c6ed891fe5fcc681ce7764971f3d32f8054b270a
inlined_ast: d544ffc75f1144ce6a483231c6ed891fe5fcc681ce7764971f3d32f8054b270a
dce_ast: d544ffc75f1144ce6a483231c6ed891fe5fcc681ce7764971f3d32f8054b270a
flattened_ast: ed62fc0374e52aa639b0cb6361c543c56a063989b15b2443da6e6c472176cd52
inlined_ast: ed62fc0374e52aa639b0cb6361c543c56a063989b15b2443da6e6c472176cd52
dce_ast: ed62fc0374e52aa639b0cb6361c543c56a063989b15b2443da6e6c472176cd52
bytecode: 6e4a8aeaf3eabc361bf427126c0a7f35c64030fb9c8f66e178c7c05bbede1c48
warnings: ""
6 changes: 3 additions & 3 deletions tests/expectations/compiler/finalize/contains.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: 3b663ccebe585a1ef278820096bbe17ae95f7a8009c2165ef27aac4aa94e1bb4
unrolled_ast: 3b663ccebe585a1ef278820096bbe17ae95f7a8009c2165ef27aac4aa94e1bb4
ssa_ast: 54e68eab74623306518f553f7a3d95967b8b200adac33d2ff2b5c489aa2c11dd
flattened_ast: 504c9959fbd249c0df40f717ebe03af2ae2d0180e5e8047262e57d2e7fdec050
inlined_ast: 504c9959fbd249c0df40f717ebe03af2ae2d0180e5e8047262e57d2e7fdec050
dce_ast: 504c9959fbd249c0df40f717ebe03af2ae2d0180e5e8047262e57d2e7fdec050
flattened_ast: 75108b91ff5077303f6be482bc39f2ecb4dfd995209e9e78e53fe4f602f3c65f
inlined_ast: 75108b91ff5077303f6be482bc39f2ecb4dfd995209e9e78e53fe4f602f3c65f
dce_ast: 75108b91ff5077303f6be482bc39f2ecb4dfd995209e9e78e53fe4f602f3c65f
bytecode: 2560848929684abb429a7de8a2ff0368fa2ea939f25ae84851be67374b652e8e
warnings: ""
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: 008463f5deff1742786124c320a217a9d9408c88985627a62c95d3cd40ce279c
unrolled_ast: 008463f5deff1742786124c320a217a9d9408c88985627a62c95d3cd40ce279c
ssa_ast: e8b63fd0ce0f18bfe615d17e7fb25d7193fb98c7bc2c02198f0b92367a1aea24
flattened_ast: f98cb577bb880e87b7f285a666bdefac42e93dbcca7b207a176266871cf35449
inlined_ast: f98cb577bb880e87b7f285a666bdefac42e93dbcca7b207a176266871cf35449
dce_ast: f98cb577bb880e87b7f285a666bdefac42e93dbcca7b207a176266871cf35449
flattened_ast: 5ff783fdcea1f69d4c9f800d5c8dd0c498382b1b9f27e76738a645d6f4085ec8
inlined_ast: 5ff783fdcea1f69d4c9f800d5c8dd0c498382b1b9f27e76738a645d6f4085ec8
dce_ast: 5ff783fdcea1f69d4c9f800d5c8dd0c498382b1b9f27e76738a645d6f4085ec8
bytecode: bbef5ec539b8616fe91e41c03c8ea6a71dfd3cb9731e634919bc8356e6664594
warnings: ""
6 changes: 3 additions & 3 deletions tests/expectations/compiler/finalize/finalize.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: 164226236b60053405e4b19b3f4adb616a6fcd0aefb8f16821695779b2019cab
unrolled_ast: 164226236b60053405e4b19b3f4adb616a6fcd0aefb8f16821695779b2019cab
ssa_ast: 26afd14df884307f3ca9e436b8fe68dad496221b5fbecb780146e4a1928b5ec2
flattened_ast: ba6097eb72f1a9139967b8cc7658300ef6391bd1b9fb05242f40f05737cff82b
inlined_ast: ba6097eb72f1a9139967b8cc7658300ef6391bd1b9fb05242f40f05737cff82b
dce_ast: ba6097eb72f1a9139967b8cc7658300ef6391bd1b9fb05242f40f05737cff82b
flattened_ast: 2539047a2909025a8c23bfdb41159533eb103e2f110c0cbd659877b414f85420
inlined_ast: 2539047a2909025a8c23bfdb41159533eb103e2f110c0cbd659877b414f85420
dce_ast: 2539047a2909025a8c23bfdb41159533eb103e2f110c0cbd659877b414f85420
bytecode: 33d8ca1b78918f26980919a4a8b332fb9b375ac476b64636a387fdab715d4ed9
warnings: ""
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: 8f5b589c1e20bc7204b1d7fff58e92c1ae50d30d644713ddca5632d74cd88d79
unrolled_ast: 8f5b589c1e20bc7204b1d7fff58e92c1ae50d30d644713ddca5632d74cd88d79
ssa_ast: 772de7e0df78d62c585b1febf48057c41d0c0920047babdb610bcd5dbc858b73
flattened_ast: 043562950648fd96145192afebc99f6c937c3d2e12e504388e5ac43932ecaf4a
inlined_ast: 043562950648fd96145192afebc99f6c937c3d2e12e504388e5ac43932ecaf4a
dce_ast: 043562950648fd96145192afebc99f6c937c3d2e12e504388e5ac43932ecaf4a
flattened_ast: 6074c4b3298799f66c770458006429c1fa6e6f8aa6185aec73616deecbd86689
inlined_ast: 6074c4b3298799f66c770458006429c1fa6e6f8aa6185aec73616deecbd86689
dce_ast: 6074c4b3298799f66c770458006429c1fa6e6f8aa6185aec73616deecbd86689
bytecode: e9bcea998f0ff492fb57deabfcf08c4ed3f854880b595f17c9aa89181feb3764
warnings: ""
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: 29714656f99da285cc9983018a37cd47f473fcb24a13ca6c5f76cd0aa934e8d1
unrolled_ast: 29714656f99da285cc9983018a37cd47f473fcb24a13ca6c5f76cd0aa934e8d1
ssa_ast: 56c003168b11a191dfecff7befa304b9cb4886afa2722fa66c52cf5af278fa26
flattened_ast: d09795975e822f338ff3f8e68bfc39455e4b96a8e0a2ade32aee224b68ff0b25
inlined_ast: d09795975e822f338ff3f8e68bfc39455e4b96a8e0a2ade32aee224b68ff0b25
dce_ast: d09795975e822f338ff3f8e68bfc39455e4b96a8e0a2ade32aee224b68ff0b25
flattened_ast: 77608d0001a55918feb78c6ae8954763f8a0a3438445509cab1446a2b7aee5be
inlined_ast: 77608d0001a55918feb78c6ae8954763f8a0a3438445509cab1446a2b7aee5be
dce_ast: 77608d0001a55918feb78c6ae8954763f8a0a3438445509cab1446a2b7aee5be
bytecode: 10e754c190939dcffa342c5eef2be0dcb73ef1a9b4391a99e963db6dc61bd38a
warnings: ""
6 changes: 3 additions & 3 deletions tests/expectations/compiler/finalize/inline_in_finalize.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: ff822822a1f599044f4d0ce4f8d7cd9dfc706b5c953a1e3eec7f9a03baf3f43c
unrolled_ast: ff822822a1f599044f4d0ce4f8d7cd9dfc706b5c953a1e3eec7f9a03baf3f43c
ssa_ast: 00529a7eab6e8154f0356862666570263b9843202cc42310c607153bc80b25b9
flattened_ast: 94e0020bf97d4e2de4222dac09f02552dcf9f33c4b679f0404be129147ad9c8e
inlined_ast: 1e49000db9da20b5560ce6c87ba6bf8e94e624fe341b829b10a63bfb647e8124
dce_ast: 1e49000db9da20b5560ce6c87ba6bf8e94e624fe341b829b10a63bfb647e8124
flattened_ast: 30f9072bf03a9bc5896c99142bb6eb2b990e6b00c0dd7eb5a65d2b3c5d8fce1c
inlined_ast: 8a5719926eb6679339e22b30fdece64052c310865bf92a25283225b7c14b4e5d
dce_ast: 8a5719926eb6679339e22b30fdece64052c310865bf92a25283225b7c14b4e5d
bytecode: 643990908e94b8c16515df0d5dcd64918c17b356ad82d652cd9d6504089c49f0
warnings: ""
6 changes: 3 additions & 3 deletions tests/expectations/compiler/finalize/rand.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: a13e41d10136d37224ddfb9b54eaf15926a3db8217ecd5ddf8f72bd7a9624c2d
unrolled_ast: a13e41d10136d37224ddfb9b54eaf15926a3db8217ecd5ddf8f72bd7a9624c2d
ssa_ast: cd75edd82d90a0f69080370969bb97159c5ef5ea366be0d1e8c392274021ab95
flattened_ast: 888b5240508f78bee53ec724f8ddfd6e597ff195e17124fbd0314feff4495559
inlined_ast: 888b5240508f78bee53ec724f8ddfd6e597ff195e17124fbd0314feff4495559
dce_ast: 795c2624ef40b83a85d12ecae86d465ec508f4271824efe7a8ff1052fef946aa
flattened_ast: fffd7c38f8fa3a6d10a09dcf16921114d3fcbe6a9c29537b69ed29e863748fbd
inlined_ast: fffd7c38f8fa3a6d10a09dcf16921114d3fcbe6a9c29537b69ed29e863748fbd
dce_ast: c4f1e570c710539546c718ff2f70078f4f363af79020dedcaaab0f55769e17ef
bytecode: c5e80399ab1edccfae4591f3c38695e9a4129b35ad2cc75238859a2e109a245f
warnings: ""
6 changes: 3 additions & 3 deletions tests/expectations/compiler/finalize/remove.out
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ outputs:
initial_ast: ef40e848373640cc46daf2ed7d204e42947061724e43fb9fef09ca4ef4eed69e
unrolled_ast: ef40e848373640cc46daf2ed7d204e42947061724e43fb9fef09ca4ef4eed69e
ssa_ast: f958903e101b60c097fea8eb35a340d2a66d20456c3a3aac4cf98d2fa6565c24
flattened_ast: 7e37a21d0c97eee60638cb1e1fa9dec8d15fa8a54da062e4f3f34a997efcd69d
inlined_ast: 7e37a21d0c97eee60638cb1e1fa9dec8d15fa8a54da062e4f3f34a997efcd69d
dce_ast: 7e37a21d0c97eee60638cb1e1fa9dec8d15fa8a54da062e4f3f34a997efcd69d
flattened_ast: c4c68008b271c95ae78e361a3617f8f80cca0729d677aad03f21a5f34fb857df
inlined_ast: c4c68008b271c95ae78e361a3617f8f80cca0729d677aad03f21a5f34fb857df
dce_ast: c4c68008b271c95ae78e361a3617f8f80cca0729d677aad03f21a5f34fb857df
bytecode: 7598ca95ba8e589482a0d951cae6f2f8571e7ae33ec8f56dbe83077dac5100d4
warnings: ""
Loading

0 comments on commit d1fbd5b

Please sign in to comment.