stop emitting invoke again

This commit is contained in:
Folkert 2021-08-16 21:03:26 +02:00
parent dca577df82
commit 8effd19ff9
2 changed files with 21 additions and 12 deletions

View file

@ -6197,13 +6197,22 @@ fn can_throw_exception(call: &Call) -> bool {
} }
} }
} }
fn build_call<'a>( fn build_call<'a>(
env: &mut Env<'a, '_>, env: &mut Env<'a, '_>,
call: Call<'a>, call: Call<'a>,
assigned: Symbol, assigned: Symbol,
return_layout: Layout<'a>, return_layout: Layout<'a>,
hole: &'a Stmt<'a>, hole: &'a Stmt<'a>,
) -> Stmt<'a> {
Stmt::Let(assigned, Expr::Call(call), return_layout, hole)
}
fn build_call_old<'a>(
env: &mut Env<'a, '_>,
call: Call<'a>,
assigned: Symbol,
return_layout: Layout<'a>,
hole: &'a Stmt<'a>,
) -> Stmt<'a> { ) -> Stmt<'a> {
if can_throw_exception(&call) { if can_throw_exception(&call) {
let id = ExceptionId(env.unique_symbol()); let id = ExceptionId(env.unique_symbol());

View file

@ -1,23 +1,23 @@
procedure Num.24 (#Attr.2, #Attr.3): procedure Num.24 (#Attr.2, #Attr.3):
let Test.25 = lowlevel NumAdd #Attr.2 #Attr.3; let Test.24 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Test.25; ret Test.24;
procedure Num.26 (#Attr.2, #Attr.3): procedure Num.26 (#Attr.2, #Attr.3):
let Test.19 = lowlevel NumMul #Attr.2 #Attr.3; let Test.19 = lowlevel NumMul #Attr.2 #Attr.3;
ret Test.19; ret Test.19;
procedure Test.1 (): procedure Test.1 ():
let Test.27 = 1i64; let Test.25 = 1i64;
ret Test.27; ret Test.25;
procedure Test.2 (): procedure Test.2 ():
let Test.21 = 2i64; let Test.20 = 2i64;
ret Test.21; ret Test.20;
procedure Test.3 (Test.6): procedure Test.3 (Test.6):
let Test.24 = CallByName Test.1; let Test.23 = CallByName Test.1;
let Test.23 = CallByName Num.24 Test.6 Test.24; let Test.22 = CallByName Num.24 Test.6 Test.23;
ret Test.23; ret Test.22;
procedure Test.4 (Test.7): procedure Test.4 (Test.7):
let Test.18 = CallByName Test.2; let Test.18 = CallByName Test.2;
@ -34,8 +34,8 @@ procedure Test.0 ():
let Test.11 = CallByName Test.5 Test.12 Test.13; let Test.11 = CallByName Test.5 Test.12 Test.13;
ret Test.11; ret Test.11;
in in
let Test.22 = true; let Test.21 = true;
if Test.22 then if Test.21 then
let Test.3 = Struct {}; let Test.3 = Struct {};
jump Test.16 Test.3; jump Test.16 Test.3;
else else