Skip to main content

nanvm_harness/gen.fixtures/
owning_self_tail_calls.rs

1// @generated by `fjs compile`. Do not edit: recompile the source module instead.
2
3use nanvm_lib::vm::unstable::{f64_any, strict_eq, string_any, string_key};
4use nanvm_lib::vm::{Any, Array, IStaticFunction, Nullish, ToAny, ToArray, ToObject};
5
6#[rustfmt::skip]
7#[allow(clippy::if_same_then_else)]
8pub fn module<A: IStaticFunction>(_runtime: Any<A>) -> Result<Any<A>, Any<A>> {
9    let _b27: Any<A> = A::static_function(|_self, _args| {
10        let _b34511: Any<A> = _args.argument(0);
11        let mut _b34512: Any<A> = _b34511.clone();
12        let mut _b34513: Any<A> = Nullish::Undefined.to_any();
13        '_loop27: loop {
14            let _b5624_5: Any<A> = _b34512.clone();
15            let _b11: Any<A> = A::static_function(|_self, _args| { if Any::<A>::to_boolean((strict_eq(A::frame(_self)[0].clone(), f64_any(0x0000000000000000)))?) { Ok([[string_any("break"), f64_any(0x0000000000000000), [f64_any(0x0000000000000000)].to_array().to_any()].to_array().to_any()].to_array().to_any()) } else { Ok([[string_any("continue"), f64_any(0x0000000000000000), [(A::frame(_self)[0].clone() - f64_any(0x3ff0000000000000))?].to_array().to_any()].to_array().to_any()].to_array().to_any()) } }, 1, [_b5624_5.clone()].to_array(), Some("($1)=>$0===0?[[\"break\",0,[0]]]:[[\"continue\",0,[$0-1]]]")).to_any();
16            let _b14: Any<A> = (Any::dot((Any::call(_b11.clone(), [Array::default().to_any()].to_array().to_any()))?, f64_any(0x0000000000000000)).end())?;
17            if Any::<A>::to_boolean(if Any::<A>::to_boolean((strict_eq((Any::dot(_b14.clone(), f64_any(0x0000000000000000)).end())?, string_any("break")))?) { (strict_eq((Any::dot(_b14.clone(), f64_any(0x3ff0000000000000)).end())?, f64_any(0x0000000000000000)))? } else { false.to_any() }) {
18                let _b34514: Any<A> = (Any::dot((Any::dot(_b14.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x0000000000000000)).end())?;
19                _b34513 = _b34514.clone();
20                break '_loop27;
21            } else {
22                let _b34515: Any<A> = (Any::dot((Any::dot(_b14.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x0000000000000000)).end())?;
23                _b34512 = _b34515.clone();
24                continue '_loop27;
25            }
26        }
27        let _b5643: Any<A> = _b34513.clone();
28        Ok(_b5643.clone())
29    }, 1, Array::default(), Some("($0)=>{const $1=$0;let $2=$1;let $3=undefined;L0:while(true){const $4=$2;const $5=($6)=>$4===0?[[\"break\",0,[0]]]:[[\"continue\",0,[$4-1]]];const $7=$5([])[0];if($7[0]===\"break\"?$7[1]===0:false){const $8=$7[2][0];$3=$8;break L0;}else{const $9=$7[2][0];$2=$9;continue L0;}}const $10=$3;return $10;}")).to_any();
30    let _b70: Any<A> = A::static_function(|_self, _args| {
31        let _b34516: Any<A> = _args.argument(0);
32        let _b34517: Any<A> = _args.argument(1);
33        let mut _b34518: Any<A> = _b34516.clone();
34        let mut _b34519: Any<A> = _b34517.clone();
35        let mut _b34520: Any<A> = Nullish::Undefined.to_any();
36        '_loop70: loop {
37            let _b14310_21: Any<A> = _b34518.clone();
38            let _b14311_22: Any<A> = _b34519.clone();
39            let _b52: Any<A> = A::static_function(|_self, _args| {
40                let _b34521: Any<A> = _args.argument(0);
41                let mut _b34522: Any<A> = _b34521.clone();
42                let mut _b34523: Any<A> = Nullish::Undefined.to_any();
43                '_loop52: loop {
44                    let _b10674_30: Any<A> = _b34522.clone();
45                    let _b33: Any<A> = ((Any::dot(_b10674_30.clone(), f64_any(0x0000000000000000)).end())? + f64_any(0x3ff0000000000000))?;
46                    if Any::<A>::to_boolean((Any::lt(_b33.clone(), f64_any(0x4000000000000000)))?) {
47                        let _b34524: Any<A> = [_b33.clone()].to_array().to_any();
48                        _b34522 = _b34524.clone();
49                        continue '_loop52;
50                    } else { if Any::<A>::to_boolean((strict_eq(A::frame(_self)[0].clone(), f64_any(0x0000000000000000)))?) {
51                        let _b34525: Any<A> = [[string_any("break"), f64_any(0x0000000000000000), [(A::frame(_self)[1].clone() + _b33.clone())?].to_array().to_any()].to_array().to_any()].to_array().to_any();
52                        _b34523 = _b34525.clone();
53                        break '_loop52;
54                    } else {
55                        let _b34526: Any<A> = [[string_any("continue"), f64_any(0x0000000000000000), [(A::frame(_self)[0].clone() - f64_any(0x3ff0000000000000))?, (A::frame(_self)[1].clone() + _b33.clone())?].to_array().to_any()].to_array().to_any()].to_array().to_any();
56                        _b34523 = _b34526.clone();
57                        break '_loop52;
58                    } }
59                }
60                let _b10693: Any<A> = _b34523.clone();
61                Ok(_b10693.clone())
62            }, 1, [_b14310_21.clone(), _b14311_22.clone()].to_array(), Some("($2)=>{const $3=$2;let $4=$3;let $5=undefined;L0:while(true){const $6=$4;const $7=$6[0]+1;if($7<2){const $8=[$7];$4=$8;continue L0;}else{if($0===0){const $9=[[\"break\",0,[$1+$7]]];$5=$9;break L0;}else{const $10=[[\"continue\",0,[$0-1,$1+$7]]];$5=$10;break L0;}}}const $11=$5;return $11;}")).to_any();
63            let _b55: Any<A> = (Any::dot((Any::call(_b52.clone(), [[f64_any(0x0000000000000000)].to_array().to_any()].to_array().to_any()))?, f64_any(0x0000000000000000)).end())?;
64            if Any::<A>::to_boolean(if Any::<A>::to_boolean((strict_eq((Any::dot(_b55.clone(), f64_any(0x0000000000000000)).end())?, string_any("break")))?) { (strict_eq((Any::dot(_b55.clone(), f64_any(0x3ff0000000000000)).end())?, f64_any(0x0000000000000000)))? } else { false.to_any() }) {
65                let _b34527: Any<A> = (Any::dot((Any::dot(_b55.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x0000000000000000)).end())?;
66                _b34520 = _b34527.clone();
67                break '_loop70;
68            } else {
69                let _b34528: Any<A> = (Any::dot((Any::dot(_b55.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x0000000000000000)).end())?;
70                let _b34529: Any<A> = (Any::dot((Any::dot(_b55.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x3ff0000000000000)).end())?;
71                _b34518 = _b34528.clone();
72                _b34519 = _b34529.clone();
73                continue '_loop70;
74            }
75        }
76        let _b14329: Any<A> = _b34520.clone();
77        Ok(_b14329.clone())
78    }, 2, Array::default(), Some("($0,$1)=>{const $2=$0;const $3=$1;let $4=$2;let $5=$3;let $6=undefined;L0:while(true){const $7=$4;const $8=$5;const $9=($10)=>{const $11=$10;let $12=$11;let $13=undefined;L1:while(true){const $14=$12;const $15=$14[0]+1;if($15<2){const $16=[$15];$12=$16;continue L1;}else{if($7===0){const $17=[[\"break\",0,[$8+$15]]];$13=$17;break L1;}else{const $18=[[\"continue\",0,[$7-1,$8+$15]]];$13=$18;break L1;}}}const $19=$13;return $19;};const $20=$9([0])[0];if($20[0]===\"break\"?$20[1]===0:false){const $21=$20[2][0];$6=$21;break L0;}else{const $22=$20[2][0];const $23=$20[2][1];$4=$22;$5=$23;continue L0;}}const $24=$6;return $24;}")).to_any();
79    let _b128: Any<A> = A::static_function(|_self, _args| {
80        let _b34530: Any<A> = _args.argument(0);
81        let _b34531: Any<A> = _args.argument(1);
82        let mut _b34532: Any<A> = _b34530.clone();
83        let mut _b34533: Any<A> = _b34531.clone();
84        let mut _b34534: Any<A> = Nullish::Undefined.to_any();
85        '_loop128: loop {
86            let _b26026_49: Any<A> = _b34532.clone();
87            let _b26027_50: Any<A> = _b34533.clone();
88            let _b101: Any<A> = A::static_function(|_self, _args| {
89                let _b34535: Any<A> = _args.argument(0);
90                let mut _b34536: Any<A> = _b34535.clone();
91                let mut _b34537: Any<A> = Nullish::Undefined.to_any();
92                '_loop101: loop {
93                    let _b20572_58: Any<A> = _b34536.clone();
94                    let _b75: Any<A> = (Any::dot(_b20572_58.clone(), f64_any(0x0000000000000000)).end())?;
95                    if Any::<A>::to_boolean((Any::lt(_b75.clone(), f64_any(0x4000000000000000)))?) {
96                        let _b77: Any<A> = (_b75.clone() + f64_any(0x3ff0000000000000))?;
97                        if Any::<A>::to_boolean((strict_eq(A::frame(_self)[0].clone(), f64_any(0x0000000000000000)))?) {
98                            let _b34538: Any<A> = [[string_any("break"), f64_any(0x0000000000000000), [(A::frame(_self)[1].clone() + _b77.clone())?].to_array().to_any()].to_array().to_any()].to_array().to_any();
99                            _b34537 = _b34538.clone();
100                            break '_loop101;
101                        } else { if Any::<A>::to_boolean((strict_eq(_b77.clone(), f64_any(0x4000000000000000)))?) {
102                            let _b34539: Any<A> = [[string_any("continue"), f64_any(0x0000000000000000), [(A::frame(_self)[0].clone() - f64_any(0x3ff0000000000000))?, (A::frame(_self)[1].clone() + _b77.clone())?].to_array().to_any()].to_array().to_any()].to_array().to_any();
103                            _b34537 = _b34539.clone();
104                            break '_loop101;
105                        } else {
106                            let _b34540: Any<A> = [_b77.clone()].to_array().to_any();
107                            _b34536 = _b34540.clone();
108                            continue '_loop101;
109                        } }
110                    } else {
111                        let _b34541: Any<A> = [[string_any("normal"), [_b75.clone()].to_array().to_any()].to_array().to_any()].to_array().to_any();
112                        _b34537 = _b34541.clone();
113                        break '_loop101;
114                    }
115                }
116                let _b20591: Any<A> = _b34537.clone();
117                Ok(_b20591.clone())
118            }, 1, [_b26026_49.clone(), _b26027_50.clone()].to_array(), Some("($2)=>{const $3=$2;let $4=$3;let $5=undefined;L0:while(true){const $6=$4;const $7=$6[0];if($7<2){const $8=$7+1;if($0===0){const $9=[[\"break\",0,[$1+$8]]];$5=$9;break L0;}else{if($8===2){const $10=[[\"continue\",0,[$0-1,$1+$8]]];$5=$10;break L0;}else{const $11=[$8];$4=$11;continue L0;}}}else{const $12=[[\"normal\",[$7]]];$5=$12;break L0;}}const $13=$5;return $13;}")).to_any();
119            let _b104: Any<A> = (Any::dot((Any::call(_b101.clone(), [[f64_any(0x0000000000000000)].to_array().to_any()].to_array().to_any()))?, f64_any(0x0000000000000000)).end())?;
120            if Any::<A>::to_boolean(if Any::<A>::to_boolean((strict_eq((Any::dot(_b104.clone(), f64_any(0x0000000000000000)).end())?, string_any("break")))?) { (strict_eq((Any::dot(_b104.clone(), f64_any(0x3ff0000000000000)).end())?, f64_any(0x0000000000000000)))? } else { false.to_any() }) {
121                let _b34542: Any<A> = (Any::dot((Any::dot(_b104.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x0000000000000000)).end())?;
122                _b34534 = _b34542.clone();
123                break '_loop128;
124            } else { if Any::<A>::to_boolean(if Any::<A>::to_boolean((strict_eq((Any::dot(_b104.clone(), f64_any(0x0000000000000000)).end())?, string_any("continue")))?) { (strict_eq((Any::dot(_b104.clone(), f64_any(0x3ff0000000000000)).end())?, f64_any(0x0000000000000000)))? } else { false.to_any() }) {
125                let _b34543: Any<A> = (Any::dot((Any::dot(_b104.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x0000000000000000)).end())?;
126                let _b34544: Any<A> = (Any::dot((Any::dot(_b104.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x3ff0000000000000)).end())?;
127                _b34532 = _b34543.clone();
128                _b34533 = _b34544.clone();
129                continue '_loop128;
130            } else {
131                let _b34510: Any<A> = (Any::dot((Any::dot(_b104.clone(), f64_any(0x3ff0000000000000)).end())?, f64_any(0x0000000000000000)).end())?;
132                let _b34545: Any<A> = _b26027_50.clone();
133                _b34534 = _b34545.clone();
134                break '_loop128;
135            } }
136        }
137        let _b26045: Any<A> = _b34534.clone();
138        Ok(_b26045.clone())
139    }, 2, Array::default(), Some("($0,$1)=>{const $2=$0;const $3=$1;let $4=$2;let $5=$3;let $6=undefined;L0:while(true){const $7=$4;const $8=$5;const $9=($10)=>{const $11=$10;let $12=$11;let $13=undefined;L1:while(true){const $14=$12;const $15=$14[0];if($15<2){const $16=$15+1;if($7===0){const $17=[[\"break\",0,[$8+$16]]];$13=$17;break L1;}else{if($16===2){const $18=[[\"continue\",0,[$7-1,$8+$16]]];$13=$18;break L1;}else{const $19=[$16];$12=$19;continue L1;}}}else{const $20=[[\"normal\",[$15]]];$13=$20;break L1;}}const $21=$13;return $21;};const $22=$9([0])[0];if($22[0]===\"break\"?$22[1]===0:false){const $23=$22[2][0];$6=$23;break L0;}else{if($22[0]===\"continue\"?$22[1]===0:false){const $24=$22[2][0];const $25=$22[2][1];$4=$24;$5=$25;continue L0;}else{const $26=$22[1][0];const $27=$8;$6=$27;break L0;}}}const $28=$6;return $28;}")).to_any();
140    let _b166: Any<A> = A::static_function(|_self, _args| {
141        let _b34546: Any<A> = _args.argument(0);
142        let _b34547: Any<A> = _args.argument(1);
143        let _b34548: Any<A> = _args.argument(2);
144        let mut _b34549: Any<A> = _b34546.clone();
145        let mut _b34550: Any<A> = _b34547.clone();
146        let mut _b34551: Any<A> = _b34548.clone();
147        let mut _b34552: Any<A> = Nullish::Undefined.to_any();
148        '_loop166: loop {
149            let _b33702_84: Any<A> = _b34549.clone();
150            let _b33703_85: Any<A> = _b34550.clone();
151            let _b33704_86: Any<A> = _b34551.clone();
152            let _b146: Any<A> = A::static_function(|_self, _args| { if Any::<A>::to_boolean((strict_eq(A::frame(_self)[0].clone(), f64_any(0x0000000000000000)))?) { Ok([[string_any("break"), f64_any(0x0000000000000000), [[A::frame(_self)[1].clone(), A::frame(_self)[2].clone()].to_array().to_any()].to_array().to_any()].to_array().to_any()].to_array().to_any()) } else { Ok([[string_any("continue"), f64_any(0x0000000000000000), [(A::frame(_self)[0].clone() - f64_any(0x3ff0000000000000))?, A::frame(_self)[2].clone(), A::frame(_self)[1].clone()].to_array().to_any()].to_array().to_any()].to_array().to_any()) } }, 1, [_b33702_84.clone(), _b33703_85.clone(), _b33704_86.clone()].to_array(), Some("($3)=>$0===0?[[\"break\",0,[[$1,$2]]]]:[[\"continue\",0,[$0-1,$2,$1]]]")).to_any();
153            let _b149: Any<A> = (Any::dot((Any::call(_b146.clone(), [Array::default().to_any()].to_array().to_any()))?, f64_any(0x0000000000000000)).end())?;
154            if Any::<A>::to_boolean(if Any::<A>::to_boolean((strict_eq((Any::dot(_b149.clone(), f64_any(0x0000000000000000)).end())?, string_any("break")))?) { (strict_eq((Any::dot(_b149.clone(), f64_any(0x3ff0000000000000)).end())?, f64_any(0x0000000000000000)))? } else { false.to_any() }) {
155                let _b34553: Any<A> = (Any::dot((Any::dot(_b149.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x0000000000000000)).end())?;
156                _b34552 = _b34553.clone();
157                break '_loop166;
158            } else {
159                let _b34554: Any<A> = (Any::dot((Any::dot(_b149.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x0000000000000000)).end())?;
160                let _b34555: Any<A> = (Any::dot((Any::dot(_b149.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x3ff0000000000000)).end())?;
161                let _b34556: Any<A> = (Any::dot((Any::dot(_b149.clone(), f64_any(0x4000000000000000)).end())?, f64_any(0x4000000000000000)).end())?;
162                _b34549 = _b34554.clone();
163                _b34550 = _b34555.clone();
164                _b34551 = _b34556.clone();
165                continue '_loop166;
166            }
167        }
168        let _b33721: Any<A> = _b34552.clone();
169        Ok(_b33721.clone())
170    }, 3, Array::default(), Some("($0,$1,$2)=>{const $3=$0;const $4=$1;const $5=$2;let $6=$3;let $7=$4;let $8=$5;let $9=undefined;L0:while(true){const $10=$6;const $11=$7;const $12=$8;const $13=($14)=>$10===0?[[\"break\",0,[[$11,$12]]]]:[[\"continue\",0,[$10-1,$12,$11]]];const $15=$13([])[0];if($15[0]===\"break\"?$15[1]===0:false){const $16=$15[2][0];$9=$16;break L0;}else{const $17=$15[2][0];const $18=$15[2][1];const $19=$15[2][2];$6=$17;$7=$18;$8=$19;continue L0;}}const $20=$9;return $20;}")).to_any();
171    Ok([(string_key("default"), [(Any::call(_b27.clone(), [f64_any(0x4008000000000000)].to_array().to_any()))?, (Any::call(_b70.clone(), [f64_any(0x4008000000000000), f64_any(0x0000000000000000)].to_array().to_any()))?, (Any::call(_b128.clone(), [f64_any(0x4008000000000000), f64_any(0x0000000000000000)].to_array().to_any()))?, (Any::call(_b166.clone(), [f64_any(0x4008000000000000), f64_any(0x3ff0000000000000), f64_any(0x4000000000000000)].to_array().to_any()))?].to_array().to_any()), (string_key("ordinaryLocals"), _b128.clone()), (string_key("swapped"), _b166.clone()), (string_key("terminal"), _b27.clone()), (string_key("terminalLocals"), _b70.clone())].to_object().to_any())
172}