From 39fb78b2d51133d7dc8925d93fc12938aa74433d Mon Sep 17 00:00:00 2001 From: Folkert Date: Tue, 24 Mar 2020 00:11:02 +0100 Subject: [PATCH] remove Jump/Label from mono::Expr --- compiler/mono/src/decision_tree.rs | 11 ++++++++--- compiler/mono/src/expr.rs | 3 --- compiler/mono/tests/test_opt.rs | 5 ++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/compiler/mono/src/decision_tree.rs b/compiler/mono/src/decision_tree.rs index 2d39423d29..ca999f2f96 100644 --- a/compiler/mono/src/decision_tree.rs +++ b/compiler/mono/src/decision_tree.rs @@ -1075,10 +1075,15 @@ fn decide_to_branching<'a>( use Choice::*; use Decider::*; - let jump_count = *env.jump_counter; - match decider { - Leaf(Jump(label)) => (&[], Expr::Jump(label + jump_count)), + Leaf(Jump(label)) => { + // we currently inline the jumps: does fewer jumps but produces a larger artifact + let (_, stores, expr) = jumps + .iter() + .find(|(l, _, _)| l == &label) + .expect("jump not in list of jumps"); + (stores, expr.clone()) + } Leaf(Inline(stores, expr)) => (stores, expr), Chain { test_chain, diff --git a/compiler/mono/src/expr.rs b/compiler/mono/src/expr.rs index 165ee915c7..a87d7d8138 100644 --- a/compiler/mono/src/expr.rs +++ b/compiler/mono/src/expr.rs @@ -201,9 +201,6 @@ pub enum Expr<'a> { elems: &'a [Expr<'a>], }, - Label(u64, &'a Expr<'a>), - Jump(u64), - RuntimeError(&'a str), } diff --git a/compiler/mono/tests/test_opt.rs b/compiler/mono/tests/test_opt.rs index fb2aaaf79d..6634304b10 100644 --- a/compiler/mono/tests/test_opt.rs +++ b/compiler/mono/tests/test_opt.rs @@ -78,7 +78,7 @@ mod test_opt { ) { match expr { Int(_) | Float(_) | Str(_) | Bool(_) | Byte(_) | Load(_) | FunctionPointer(_) - | Jump(_) | RuntimeError(_) => (), + | RuntimeError(_) => (), Store(paths, sub_expr) => { for (_, _, path_expr) in paths.iter() { @@ -160,8 +160,7 @@ mod test_opt { field_layouts: _, expr: sub_expr, is_unwrapped: _, - } - | Label(_, sub_expr) => { + } => { extract_named_calls_help(sub_expr, calls, unexpected_calls); }