Skip to main content

nanvm_lib/vm/
gen.runtime.rs

1// @generated by `npm run gen` from `fjs/js/runtime/module.f.js`. Do not edit: change the runtime and regenerate.
2
3use nanvm_lib::vm::unstable::{
4    f64_any, property_item, spread_entries, spread_object, strict_eq, strict_ne, string_any,
5    string_key,
6};
7use nanvm_lib::vm::{
8    Any, Array, Constructor, IStaticFunction, Nullish, Object, String, ToAny, ToArray, ToObject,
9};
10
11/// The runtime as a value: the `runtime` export of `fjs/js/runtime`, its `static`, `dot` and `in`
12/// functions, the first two over the tables they close over, as the ordinary backend prints any module — every
13/// static body a closure carrying the NativeFunction text of its id, `Object.entries` the built-in
14/// itself. Built once by whoever runs compiled modules and handed to each as its parameter
15/// (`fjs/js/runtime/README.md`).
16#[rustfmt::skip]
17#[allow(clippy::if_same_then_else)]
18pub fn runtime<A: IStaticFunction>() -> Result<Any<A>, Any<A>> {
19    let _b7: Any<A> = (Any::dot([(string_key("isNegativeZero"), A::static_function(|_self, _args| {
20        let _b1: Any<A> = (strict_eq(_args.argument(0), f64_any(0x0000000000000000)))?;
21        if Any::<A>::to_boolean(_b1.clone()) { Any::lt((f64_any(0x3ff0000000000000) / _args.argument(0))?, f64_any(0x0000000000000000)) } else { Ok(_b1.clone()) }
22    }, 1, Array::default(), Some("($0)=>{const $1=$0===0;return $1?1/$0<0:$1;}")).to_any())].to_object().to_any(), string_any("isNegativeZero")).end())?;
23    let _b10: Any<A> = [(string_key("entry"), A::static_function(|_self, _args| Any::entry(_args.argument(0), _args.argument(1)), 2, Array::default(), Some("($0,$1)=>{const $2=Object.getOwnPropertyDescriptor($0,$1);return $2?.enumerable?$2.value:undefined;}")).to_any()), (string_key("hasEntry"), A::static_function(|_self, _args| Any::has_entry(_args.argument(0), _args.argument(1)).map(|v| v.to_any()), 2, Array::default(), Some("($0,$1)=>{const $2=Object.getOwnPropertyDescriptor($0,$1);return $2?.enumerable===true;}")).to_any())].to_object().to_any();
24    let _b11: Any<A> = (Any::dot(_b10.clone(), string_any("entry")).end())?;
25    let _b12: Any<A> = (Any::dot(_b10.clone(), string_any("hasEntry")).end())?;
26    let _b15: Any<A> = [(string_key("charCodeAt"), A::static_function(|_self, _args| Any::dot(_args.argument(0), string_any("charCodeAt")).end_call_native(|| Ok([_args.argument(1)].to_array().to_any())), 2, Array::default(), Some("($0,$1)=>$0.charCodeAt($1)")).to_any()), (string_key("slice"), A::static_function(|_self, _args| Any::dot(_args.argument(0), string_any("slice")).end_call_native(|| Ok([_args.argument(1), _args.argument(2)].to_array().to_any())), 3, Array::default(), Some("($0,$1,$2)=>$0.slice($1,$2)")).to_any())].to_object().to_any();
27    let _b16: Any<A> = (Any::dot(_b15.clone(), string_any("charCodeAt")).end())?;
28    let _b19: Any<A> = A::static_function(|_self, _args| { strict_ne(_args.argument(0), _args.argument(0)) }, 1, Array::default(), Some("function isNaN() { [native code] }")).to_any();
29    let _b81: Any<A> = A::static_function(|_self, _args| {
30        let _b77: Any<A> = (strict_eq((Any::typeof_(_args.argument(0)))?, string_any("number")))?;
31        if Any::<A>::to_boolean(_b77.clone()) { strict_eq((_args.argument(0) % f64_any(0x3ff0000000000000))?, f64_any(0x0000000000000000)) } else { Ok(_b77.clone()) }
32    }, 1, Array::default(), Some("function isInteger() { [native code] }")).to_any();
33    let _b99: Any<A> = A::static_function(|_self, _args| {
34        let _b95: Any<A> = (strict_eq((Any::typeof_(_args.argument(0)))?, string_any("number")))?;
35        if Any::<A>::to_boolean(_b95.clone()) { strict_eq((_args.argument(0) * f64_any(0x0000000000000000))?, f64_any(0x0000000000000000)) } else { Ok(_b95.clone()) }
36    }, 1, Array::default(), Some("function isFinite() { [native code] }")).to_any();
37    let _b100: Any<A> = [(string_key("Object.is"), A::static_function(|_self, _args| { if Any::<A>::to_boolean((strict_eq(_args.argument(0), _args.argument(1)))?) { strict_eq((Any::call(A::frame(_self)[0].clone(), [_args.argument(0)].to_array().to_any()))?, (Any::call(A::frame(_self)[0].clone(), [_args.argument(1)].to_array().to_any()))?) } else {
38        let _b28: Any<A> = (Any::call(A::frame(_self)[1].clone(), [_args.argument(0)].to_array().to_any()))?;
39        if Any::<A>::to_boolean(_b28.clone()) { Any::call(A::frame(_self)[1].clone(), [_args.argument(1)].to_array().to_any()) } else { Ok(_b28.clone()) }
40    } }, 2, [_b7.clone(), _b19.clone()].to_array(), Some("function is() { [native code] }")).to_any()), (string_key("Object.entries"), A::static_function(|_self, _args| Any::entries(_args.argument(0)), 1, Array::default(), Some("function entries() { [native code] }")).to_any()), (string_key("String.fromCharCode"), A::static_function(|_self, _args| String::from_char_code(_args).map(|v| v.to_any()), 1, Array::default(), Some("function fromCharCode() { [native code] }")).to_any()), (string_key("Object.fromEntries"), A::static_function(|_self, _args| { if Any::<A>::to_boolean((<Any<A> as core::ops::Not>::not((Any::instanceof_(_args.argument(0), Constructor::Array))?))?) { Err(string_any("Object.fromEntries: not an array")) } else {
41        let _b68: Any<A> = A::static_function(|_self, _args| {
42            let mut _b65521: Any<A> = _args.argument(0);
43            '_loop68: while Any::<A>::to_boolean({
44                let _b65522: Any<A> = _b65521.clone();
45                let _b40: Any<A> = (Any::dot(_b65522.clone(), f64_any(0x0000000000000000)).end())?;
46                let _b41: Any<A> = (Any::dot(_b65522.clone(), f64_any(0x3ff0000000000000)).end())?;
47                (Any::lt(_b41.clone(), (Any::dot(A::frame(_self)[0].clone(), string_any("length")).end())?))?
48            }) {
49                let _b18736_31: Any<A> = _b65521.clone();
50                let _b41: Any<A> = (Any::dot(_b18736_31.clone(), f64_any(0x3ff0000000000000)).end())?;
51                let _b46: Any<A> = (Any::dot(A::frame(_self)[0].clone(), (Any::number(_b41.clone()))?).end())?;
52                let _b47: Any<A> = (strict_eq(_b46.clone(), Nullish::Null.to_any()))?;
53                let _b65520: Any<A> = if Any::<A>::to_boolean(if Any::<A>::to_boolean(_b47.clone()) { _b47.clone() } else {
54                    let _b49: Any<A> = (strict_ne((Any::typeof_(_b46.clone()))?, string_any("object")))?;
55                    if Any::<A>::to_boolean(_b49.clone()) { (strict_ne((Any::typeof_(_b46.clone()))?, string_any("function")))? } else { _b49.clone() }
56                }) { (Err::<Any<A>, Any<A>>(string_any("Object.fromEntries: an entry is not an object")))? } else { Array::default().to_any() };
57                let _b40: Any<A> = (Any::dot(_b18736_31.clone(), f64_any(0x0000000000000000)).end())?;
58                let _b65525: Any<A> = [spread_object([spread_entries(_b40.clone()), property_item(((Any::dot(_b46.clone(), f64_any(0x0000000000000000)).end())?).to_string()?, (Any::dot(_b46.clone(), f64_any(0x3ff0000000000000)).end())?)]), (_b41.clone() + f64_any(0x3ff0000000000000))?].to_array().to_any();
59                _b65521 = _b65525.clone();
60            }
61            let _b65523: Any<A> = _b65521;
62            let _b18755: Any<A> = {
63                let _b65524: Any<A> = _b65523.clone();
64                let _b40: Any<A> = (Any::dot(_b65524.clone(), f64_any(0x0000000000000000)).end())?;
65                let _b41: Any<A> = (Any::dot(_b65524.clone(), f64_any(0x3ff0000000000000)).end())?;
66                [_b40.clone(), _b41.clone()].to_array().to_any()
67            };
68            Ok(_b18755.clone())
69        }, 1, [_args.argument(0)].to_array(), Some("($1)=>{let $2=$1;while((()=>{const $3=$2;const $4=$3[0];const $5=$3[1];return $5<$0.length;})()){const $6=$2;const $5=$6[1];const $7=$0[Number($5)];const $8=$7===null;const $9=($8?$8:(()=>{const $10=typeof $7!==\"object\";return $10?typeof $7!==\"function\":$10;})())?(()=>{throw \"Object.fromEntries: an entry is not an object\";})():[];const $4=$6[0];const $11=[{...$4,[$7[0]]:$7[1]},$5+1];$2=$11;}const $12=(()=>{const $13=$2;const $4=$13[0];const $5=$13[1];return [$4,$5];})();return $12;}")).to_any();
70        Any::dot((Any::call(_b68.clone(), [[Object::default().to_any(), f64_any(0x0000000000000000)].to_array().to_any()].to_array().to_any()))?, f64_any(0x0000000000000000)).end()
71    } }, 1, Array::default(), Some("function fromEntries() { [native code] }")).to_any()), (string_key("Number.isInteger"), _b81.clone()), (string_key("Number.isSafeInteger"), A::static_function(|_self, _args| {
72        let _b84: Any<A> = (strict_eq((Any::typeof_(_args.argument(0)))?, string_any("number")))?;
73        let _b87: Any<A> = if Any::<A>::to_boolean(_b84.clone()) { (Any::call(A::frame(_self)[0].clone(), [_args.argument(0)].to_array().to_any()))? } else { _b84.clone() };
74        let _b89: Any<A> = if Any::<A>::to_boolean(_b87.clone()) { (Any::le(f64_any(0xc33fffffffffffff), _args.argument(0)))? } else { _b87.clone() };
75        if Any::<A>::to_boolean(_b89.clone()) { Any::le(_args.argument(0), f64_any(0x433fffffffffffff)) } else { Ok(_b89.clone()) }
76    }, 1, [_b81.clone()].to_array(), Some("function isSafeInteger() { [native code] }")).to_any()), (string_key("Number.isNaN"), _b19.clone()), (string_key("Number.isFinite"), _b99.clone())].to_object().to_any();
77    let _b121: Any<A> = A::static_function(|_self, _args| { _args.argument(0) - f64_any(0x0000000000000000) }, 1, Array::default(), Some("($0)=>$0-0")).to_any();
78    let _b133: Any<A> = A::static_function(|_self, _args| {
79        let _b125: Any<A> = (Any::call(A::frame(_self)[0].clone(), [_args.argument(0)].to_array().to_any()))?;
80        if Any::<A>::to_boolean((Any::call(A::frame(_self)[1].clone(), [_b125.clone()].to_array().to_any()))?) { Ok(f64_any(0x0000000000000000)) } else { if Any::<A>::to_boolean((Any::call(A::frame(_self)[2].clone(), [_b125.clone()].to_array().to_any()))?) { _b125.clone() - (_b125.clone() % f64_any(0x3ff0000000000000))? } else { Ok(_b125.clone()) } }
81    }, 1, [_b121.clone(), _b19.clone(), _b99.clone()].to_array(), Some("($3)=>{const $4=$0($3);return $1($4)?0:$2($4)?$4-$4%1:$4;}")).to_any();
82    let _b142: Any<A> = A::static_function(|_self, _args| {
83        let _b136: Any<A> = (Any::call(A::frame(_self)[0].clone(), [_args.argument(0)].to_array().to_any()))?;
84        if Any::<A>::to_boolean((Any::lt(_b136.clone(), f64_any(0x0000000000000000)))?) { Ok(f64_any(0x0000000000000000)) } else { if Any::<A>::to_boolean((Any::gt(_b136.clone(), _args.argument(1)))?) { Ok(_args.argument(1)) } else { Ok(_b136.clone()) } }
85    }, 2, [_b133.clone()].to_array(), Some("($1,$2)=>{const $3=$0($1);return $3<0?0:$3>$2?$2:$3;}")).to_any();
86    let _b238: Any<A> = [(string_key("static"), A::static_function(|_self, _args| { Any::call(A::frame(_self)[0].clone(), [A::frame(_self)[1].clone(), _args.argument(0)].to_array().to_any()) }, 1, [_b11.clone(), _b100.clone()].to_array(), Some("($2)=>$0($1,$2)")).to_any()), (string_key("dot"), {
87        let _b201: Any<A> = [(string_key("startsWith"), {
88            let _b118: Any<A> = {
89                let _b106: Any<A> = (Any::dot(_b15.clone(), string_any("slice")).end())?;
90                A::static_function(|_self, _args| {
91                    let _b110: Any<A> = (_args.argument(2) + (Any::dot(_args.argument(1), string_any("length")).end())?)?;
92                    if Any::<A>::to_boolean((Any::gt(_b110.clone(), (Any::dot(_args.argument(0), string_any("length")).end())?))?) { Ok(false.to_any()) } else { strict_eq((Any::call(A::frame(_self)[0].clone(), [_args.argument(0), _args.argument(2), _b110.clone()].to_array().to_any()))?, _args.argument(1)) }
93                }, 3, [_b106.clone()].to_array(), Some("($1,$2,$3)=>{const $4=$3+$2.length;return $4>$1.length?false:$0($1,$3,$4)===$2;}")).to_any()
94            };
95            A::static_function(|_self, _args| { if Any::<A>::to_boolean((strict_ne((Any::typeof_(_args.argument(0)))?, string_any("string")))?) { Ok(Nullish::Undefined.to_any()) } else { Ok(A::static_function(|_self, _args| { Any::call(A::frame(_self)[0].clone(), [A::frame(_self)[1].clone(), (_args.argument(0).to_string().map(|v| v.to_any()))?, (Any::call(A::frame(_self)[2].clone(), [_args.argument(1), (Any::dot(A::frame(_self)[1].clone(), string_any("length")).end())?].to_array().to_any()))?].to_array().to_any()) }, 2, [A::frame(_self)[0].clone(), _args.argument(0), A::frame(_self)[1].clone()].to_array(), Some("($3,$4)=>$0($1,String($3),$2($4,$1.length))")).to_any()) } }, 1, [_b118.clone(), _b142.clone()].to_array(), Some("($2)=>typeof $2!==\"string\"?undefined:($3,$4)=>$0($2,String($3),$1($4,$2.length))")).to_any()
96        }), (string_key("codePointAt"), A::static_function(|_self, _args| { if Any::<A>::to_boolean((strict_ne((Any::typeof_(_args.argument(0)))?, string_any("string")))?) { Ok(Nullish::Undefined.to_any()) } else { Ok(A::static_function(|_self, _args| {
97            let _b169: Any<A> = (Any::call(A::frame(_self)[0].clone(), [_args.argument(0)].to_array().to_any()))?;
98            if Any::<A>::to_boolean({
99                let _b170: Any<A> = (Any::lt(_b169.clone(), f64_any(0x0000000000000000)))?;
100                if Any::<A>::to_boolean(_b170.clone()) { _b170.clone() } else { (Any::ge(_b169.clone(), (Any::dot(A::frame(_self)[1].clone(), string_any("length")).end())?))? }
101            }) { Ok(Nullish::Undefined.to_any()) } else {
102                let _b177: Any<A> = (Any::call(A::frame(_self)[2].clone(), [A::frame(_self)[1].clone(), _b169.clone()].to_array().to_any()))?;
103                if Any::<A>::to_boolean({
104                    let _b178: Any<A> = (Any::lt(_b177.clone(), f64_any(0x40eb000000000000)))?;
105                    let _b180: Any<A> = if Any::<A>::to_boolean(_b178.clone()) { _b178.clone() } else { (Any::gt(_b177.clone(), f64_any(0x40eb7fe000000000)))? };
106                    if Any::<A>::to_boolean(_b180.clone()) { _b180.clone() } else { (strict_eq((_b169.clone() + f64_any(0x3ff0000000000000))?, (Any::dot(A::frame(_self)[1].clone(), string_any("length")).end())?))? }
107                }) { Ok(_b177.clone()) } else {
108                    let _b186: Any<A> = (Any::call(A::frame(_self)[2].clone(), [A::frame(_self)[1].clone(), (_b169.clone() + f64_any(0x3ff0000000000000))?].to_array().to_any()))?;
109                    if Any::<A>::to_boolean({
110                        let _b187: Any<A> = (Any::lt(_b186.clone(), f64_any(0x40eb800000000000)))?;
111                        if Any::<A>::to_boolean(_b187.clone()) { _b187.clone() } else { (Any::gt(_b186.clone(), f64_any(0x40ebffe000000000)))? }
112                    }) { Ok(_b177.clone()) } else { (((_b177.clone() - f64_any(0x40eb000000000000))? * f64_any(0x4090000000000000))? + (_b186.clone() - f64_any(0x40eb800000000000))?)? + f64_any(0x40f0000000000000) }
113                }
114            }
115        }, 1, [A::frame(_self)[0].clone(), _args.argument(0), A::frame(_self)[1].clone()].to_array(), Some("($3)=>{const $4=$0($3);return (()=>{const $5=$4<0;return $5?$5:$4>=$1.length;})()?undefined:(()=>{const $6=$2($1,$4);return (()=>{const $7=$6<55296;const $8=$7?$7:$6>56319;return $8?$8:$4+1===$1.length;})()?$6:(()=>{const $9=$2($1,$4+1);return (()=>{const $10=$9<56320;return $10?$10:$9>57343;})()?$6:($6-55296)*1024+($9-56320)+65536;})();})();}")).to_any()) } }, 1, [_b133.clone(), _b16.clone()].to_array(), Some("($2)=>typeof $2!==\"string\"?undefined:($3)=>{const $4=$0($3);return (()=>{const $5=$4<0;return $5?$5:$4>=$2.length;})()?undefined:(()=>{const $6=$1($2,$4);return (()=>{const $7=$6<55296;const $8=$7?$7:$6>56319;return $8?$8:$4+1===$2.length;})()?$6:(()=>{const $9=$1($2,$4+1);return (()=>{const $10=$9<56320;return $10?$10:$9>57343;})()?$6:($6-55296)*1024+($9-56320)+65536;})();})();}")).to_any())].to_object().to_any();
116        A::static_function(|_self, _args| { if Any::<A>::to_boolean((Any::call(A::frame(_self)[0].clone(), [_args.argument(0), _args.argument(1)].to_array().to_any()))?) { Any::call(A::frame(_self)[1].clone(), [_args.argument(0), _args.argument(1)].to_array().to_any()) } else {
117            let _b209: Any<A> = (Any::call(A::frame(_self)[1].clone(), [A::frame(_self)[2].clone(), _args.argument(1)].to_array().to_any()))?;
118            if Any::<A>::to_boolean((strict_eq(_b209.clone(), Nullish::Undefined.to_any()))?) { Ok(Nullish::Undefined.to_any()) } else { Any::call(_b209.clone(), [_args.argument(0)].to_array().to_any()) }
119        } }, 2, [_b12.clone(), _b11.clone(), _b201.clone()].to_array(), Some("($3,$4)=>$0($3,$4)?$1($3,$4):(()=>{const $5=$1($2,$4);return $5===undefined?undefined:$5($3);})()")).to_any()
120    }), (string_key("in"), A::static_function(|_self, _args| { if Any::<A>::to_boolean({
121        let _b218: Any<A> = (strict_eq(_args.argument(1), Nullish::Null.to_any()))?;
122        if Any::<A>::to_boolean(_b218.clone()) { _b218.clone() } else {
123            let _b220: Any<A> = (strict_ne((Any::typeof_(_args.argument(1)))?, string_any("object")))?;
124            if Any::<A>::to_boolean(_b220.clone()) { (strict_ne((Any::typeof_(_args.argument(1)))?, string_any("function")))? } else { _b220.clone() }
125        }
126    }) { Err(string_any("in: not an object")) } else {
127        let _b228: Any<A> = (Any::call(A::frame(_self)[0].clone(), [_args.argument(1), _args.argument(0)].to_array().to_any()))?;
128        if Any::<A>::to_boolean(_b228.clone()) { Ok(_b228.clone()) } else {
129            let _b229: Any<A> = (strict_eq(_args.argument(0), string_any("length")))?;
130            if Any::<A>::to_boolean(_b229.clone()) {
131                let _b230: Any<A> = (Any::instanceof_(_args.argument(1), Constructor::Array))?;
132                if Any::<A>::to_boolean(_b230.clone()) { Ok(_b230.clone()) } else { strict_eq((Any::typeof_(_args.argument(1)))?, string_any("function")) }
133            } else { Ok(_b229.clone()) }
134        }
135    } }, 2, [_b12.clone()].to_array(), Some("($1,$2)=>(()=>{const $3=$2===null;return $3?$3:(()=>{const $4=typeof $2!==\"object\";return $4?typeof $2!==\"function\":$4;})();})()?(()=>{throw \"in: not an object\";})():(()=>{const $5=$0($2,$1);return $5?$5:(()=>{const $6=$1===\"length\";return $6?(()=>{const $7=$2 instanceof Array;return $7?$7:typeof $2===\"function\";})():$6;})();})()")).to_any())].to_object().to_any();
136    Ok(_b238.clone())
137}