In FunctionalScript fjs compile accepts this module, and it runs as JavaScript and as WebAssembly alike.
A FunctionalScript module and what fjs compile makes of it: the expression graph it lowers to, the Rust it compiles to on the NaNVM runtime, and the WebAssembly that Rust builds to. Run calls its default export with 0, then 1, then 2, then 3, first as the JavaScript it already is and then as WebAssembly, and shows what each call returned or threw and how long one call takes, timed over 1000 calls.
FunctionalScript source:
/**
* The example of [`README.md`](./README.md) (Switch) as a function of one
* number, for the page's WASM demo: a terminating `switch` with a shared
* `case`, and a `default` that throws.
*
* @module
*/
const kinds = ["array" , "object" , "string" ];
/** @type {(...a: readonly number[]) => unknown} */
export default (...a ) => {
switch (kinds [Number (a [0 ])]) {
case "array" : case "object" : { return "container" ; }
case "string" : { return "text" ; }
default : { throw ["unknown" , a [0 ]]; }
}
};
Expression graph (EDAG) that fjs compile lowers it to:
=> length frame 0 body 0 [] ?: [] 0 1 2 "array" "object" "string" ?: cond then else ?: "container" ?: ?: cond then else ?: cond then else === "text" throw === left right . "array" === left right . "object" === left right . "string" throw value . obj idx frame 0 Number [] 0 1 "unknown" . Number operand . obj idx rest 0 . obj idx rest 0 The same graph, as fjs compile writes it to a .edag.data.js file:
const $0 =["rest" ];const $1 =["." ,["frame" ,0 ],["Number" ,["." ,$0 ,0 ]]];const $2 =["===" ,$1 ,"array" ];export default ["{}" ,[[":" ,"default" ,["=>" ,0 ,[["[]" ,["array" ,"object" ,"string" ]]],["?:" ,["?:" ,$2 ,$2 ,["===" ,$1 ,"object" ]],"container" ,["?:" ,["===" ,$1 ,"string" ],"text" ,["throw" ,["[]" ,["unknown" ,["." ,$0 ,0 ]]]]]]]]]];Rust that fjs compile writes from it, on the NaNVM runtime:
// @generated by `fjs compile`. Do not edit: recompile the source module instead.
use nanvm_lib::vm::unstable::{f64_any, strict_eq, string_any, string_key};
use nanvm_lib::vm::{Any, IStaticFunction, ToAny, ToArray, ToObject};
#[rustfmt::skip]
#[allow(clippy::if_same_then_else)]
pub fn module<A: IStaticFunction>(_runtime: Any<A>) -> Result<Any<A>, Any<A>> {
let _b0: Any<A> = [string_any("array"), string_any("object"), string_any("string")].to_array().to_any();
Ok([(string_key("default"), A::static_function(|_self, _args| {
let _b768: Any<A> = _args.rest(0).to_any();
let _b5: Any<A> = (Any::dot(A::frame(_self)[0].clone(), (Any::number((Any::dot(_b768.clone(), f64_any(0x0000000000000000)).end())?))?).end())?;
if Any::<A>::to_boolean({
let _b6: Any<A> = (strict_eq(_b5.clone(), string_any("array")))?;
if Any::<A>::to_boolean(_b6.clone()) { _b6.clone() } else { (strict_eq(_b5.clone(), string_any("object")))? }
}) { Ok(string_any("container")) } else { if Any::<A>::to_boolean((strict_eq(_b5.clone(), string_any("string")))?) { Ok(string_any("text")) } else { Err([string_any("unknown"), (Any::dot(_b768.clone(), f64_any(0x0000000000000000)).end())?].to_array().to_any()) } }
}, 0, [_b0.clone()].to_array(), Some("(...$1)=>{const $2=$0[Number($1[0])];return (()=>{const $3=$2===\"array\";return $3?$3:$2===\"object\";})()?\"container\":$2===\"string\"?\"text\":(()=>{throw [\"unknown\",$1[0]];})();}")).to_any())].to_object().to_any())
}
WebAssembly text (WAT) of the functions compiled from this source, without the NaNVM runtime:
(func $nanvm_demos::samples::switch_statement::module::<nanvm_lib::naive::Naive> (;591;) (type 1 ) (param i32 i32 )
(local i32 i32 i32 i32 i32 i32 i32 i32 )
global.get $__stack_pointer
i32.const 176
i32.sub
local.tee 2
global.set $__stack_pointer
local.get 2
i32.const 255
i32.store8 offset=144
local.get 2
i32.const 0
i32.store16 offset=80
local.get 2
i32.const 1064961
i32.store offset=76
local.get 2
i32.const 1064956
i32.store offset=72
local.get 2
local.get 2
i32.const 144
i32.add
i32.store offset=84
local.get 2
i32.const 48
i32.add
local.get 2
i32.const 72
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>> as alloc::rc::ToRcSlice<u16>>::to_rc_slice"
local.get 2
local.get 2
i32.load offset=52
local.tee 3
i32.store offset=60
local.get 2
local.get 2
i32.load offset=48
local.tee 4
i32.store offset=56
block ;; label = @1
local.get 2
i32.load8_u offset=144
local.tee 5
i32.const 255
i32.eq
br_if 0 (;@1;)
local.get 2
i32.load offset=148
local.set 0
local.get 2
i32.load offset=152
local.set 3
local.get 2
i32.load offset=156
local.set 6
local.get 2
i32.load16_u offset=145 align=1
local.set 7
local.get 2
i32.load8_u offset=147
local.set 8
local.get 4
local.get 4
i32.load
i32.const -1
i32.add
local.tee 1
i32.store
local.get 2
local.get 8
i32.store8 offset=166
local.get 2
local.get 7
i32.store16 offset=164
block ;; label = @2
local.get 1
br_if 0 (;@2;)
local.get 2
i32.const 56
i32.add
call $"<alloc::rc::Rc<[u16]>>::drop_slow"
end
local.get 2
local.get 5
i32.store8 offset=72
local.get 2
local.get 2
i32.load16_u offset=164
i32.store16 offset=73 align=1
local.get 2
local.get 2
i32.load8_u offset=166
i32.store8 offset=75
local.get 2
local.get 6
i32.store offset=84
local.get 2
local.get 3
i32.store offset=80
local.get 2
local.get 0
i32.store offset=76
i32.const 1065572
i32.const 43
local.get 2
i32.const 72
i32.add
i32.const 1065556
i32.const 1065616
call $core::result::unwrap_failed
unreachable
end
local.get 2
i32.const 255
i32.store8 offset=144
local.get 2
i32.const 0
i32.store16 offset=80
local.get 2
i32.const 1064967
i32.store offset=76
local.get 2
i32.const 1064961
i32.store offset=72
local.get 2
local.get 2
i32.const 144
i32.add
i32.store offset=84
local.get 2
i32.const 40
i32.add
local.get 2
i32.const 72
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>> as alloc::rc::ToRcSlice<u16>>::to_rc_slice"
local.get 2
local.get 2
i32.load offset=44
local.tee 7
i32.store offset=60
local.get 2
local.get 2
i32.load offset=40
local.tee 5
i32.store offset=56
block ;; label = @1
local.get 2
i32.load8_u offset=144
local.tee 6
i32.const 255
i32.eq
br_if 0 (;@1;)
local.get 2
i32.load offset=148
local.set 4
local.get 2
i32.load offset=152
local.set 0
local.get 2
i32.load offset=156
local.set 3
local.get 2
i32.load16_u offset=145 align=1
local.set 7
local.get 2
i32.load8_u offset=147
local.set 8
local.get 5
local.get 5
i32.load
i32.const -1
i32.add
local.tee 1
i32.store
local.get 2
local.get 8
i32.store8 offset=166
local.get 2
local.get 7
i32.store16 offset=164
block ;; label = @2
local.get 1
br_if 0 (;@2;)
local.get 2
i32.const 56
i32.add
call $"<alloc::rc::Rc<[u16]>>::drop_slow"
end
local.get 2
local.get 6
i32.store8 offset=72
local.get 2
local.get 2
i32.load16_u offset=164
i32.store16 offset=73 align=1
local.get 2
local.get 2
i32.load8_u offset=166
i32.store8 offset=75
local.get 2
local.get 3
i32.store offset=84
local.get 2
local.get 0
i32.store offset=80
local.get 2
local.get 4
i32.store offset=76
i32.const 1065572
i32.const 43
local.get 2
i32.const 72
i32.add
i32.const 1065556
i32.const 1065616
call $core::result::unwrap_failed
unreachable
end
local.get 2
i32.const 255
i32.store8 offset=144
local.get 2
i32.const 0
i32.store16 offset=80
local.get 2
i32.const 1064973
i32.store offset=76
local.get 2
i32.const 1064967
i32.store offset=72
local.get 2
local.get 2
i32.const 144
i32.add
i32.store offset=84
local.get 2
i32.const 32
i32.add
local.get 2
i32.const 72
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>> as alloc::rc::ToRcSlice<u16>>::to_rc_slice"
local.get 2
local.get 2
i32.load offset=36
local.tee 8
i32.store offset=60
local.get 2
local.get 2
i32.load offset=32
local.tee 6
i32.store offset=56
block ;; label = @1
local.get 2
i32.load8_u offset=144
local.tee 9
i32.const 255
i32.eq
br_if 0 (;@1;)
local.get 2
i32.load offset=148
local.set 4
local.get 2
i32.load offset=152
local.set 0
local.get 2
i32.load offset=156
local.set 5
local.get 2
i32.load16_u offset=145 align=1
local.set 3
local.get 2
i32.load8_u offset=147
local.set 7
local.get 6
local.get 6
i32.load
i32.const -1
i32.add
local.tee 8
i32.store
local.get 2
local.get 7
i32.store8 offset=166
local.get 2
local.get 3
i32.store16 offset=164
block ;; label = @2
local.get 8
br_if 0 (;@2;)
local.get 2
i32.const 56
i32.add
call $"<alloc::rc::Rc<[u16]>>::drop_slow"
end
local.get 2
local.get 9
i32.store8 offset=72
local.get 2
local.get 2
i32.load16_u offset=164
i32.store16 offset=73 align=1
local.get 2
local.get 2
i32.load8_u offset=166
i32.store8 offset=75
local.get 2
local.get 5
i32.store offset=84
local.get 2
local.get 0
i32.store offset=80
local.get 2
local.get 4
i32.store offset=76
i32.const 1065572
i32.const 43
local.get 2
i32.const 72
i32.add
i32.const 1065556
i32.const 1065616
call $core::result::unwrap_failed
unreachable
end
local.get 2
i32.const 0
i32.store8 offset=56
local.get 2
local.get 8
i32.store offset=120
local.get 2
local.get 6
i32.store offset=116
local.get 2
i32.const 3
i32.store8 offset=112
local.get 2
local.get 7
i32.store offset=104
local.get 2
local.get 5
i32.store offset=100
local.get 2
i32.const 3
i32.store8 offset=96
local.get 2
local.get 3
i32.store offset=88
local.get 2
local.get 4
i32.store offset=84
local.get 2
i32.const 3
i32.store8 offset=80
local.get 2
i64.const 12884901888
i64.store offset=72
local.get 2
local.get 2
i32.const 56
i32.add
i32.store offset=128
local.get 2
i32.const 24
i32.add
local.get 2
i32.const 72
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, 3>, core::result::Result<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>::to_rc_slice"
local.get 2
local.get 2
i32.load offset=28
local.tee 5
i32.store offset=148
local.get 2
local.get 2
i32.load offset=24
local.tee 4
i32.store offset=144
block ;; label = @1
block ;; label = @2
local.get 2
i32.load8_u offset=56
i32.const 1
i32.ne
br_if 0 (;@2;)
local.get 4
local.get 4
i32.load
i32.const -1
i32.add
local.tee 0
i32.store
local.get 0
br_if 1 (;@1;)
local.get 2
i32.const 144
i32.add
call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
br 1 (;@1;)
end
local.get 4
i32.eqz
br_if 0 (;@1;)
local.get 2
local.get 5
i32.store offset=64
local.get 2
local.get 4
i32.store offset=60
local.get 2
i32.const 6
i32.store8 offset=56
local.get 2
i32.const 255
i32.store8 offset=144
local.get 2
i32.const 0
i32.store16 offset=80
local.get 2
i32.const 1064816
i32.store offset=76
local.get 2
i32.const 1064809
i32.store offset=72
local.get 2
local.get 2
i32.const 144
i32.add
i32.store offset=84
local.get 2
i32.const 16
i32.add
local.get 2
i32.const 72
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>> as alloc::rc::ToRcSlice<u16>>::to_rc_slice"
local.get 2
local.get 2
i32.load offset=20
local.tee 7
i32.store offset=168
local.get 2
local.get 2
i32.load offset=16
local.tee 6
i32.store offset=164
block ;; label = @2
local.get 2
i32.load8_u offset=144
local.tee 3
i32.const 255
i32.eq
br_if 0 (;@2;)
local.get 2
i32.load offset=148
local.set 4
local.get 2
i32.load offset=152
local.set 0
local.get 2
i32.load offset=156
local.set 5
local.get 2
i32.load16_u offset=145 align=1
local.set 7
local.get 2
i32.load8_u offset=147
local.set 8
local.get 6
local.get 6
i32.load
i32.const -1
i32.add
local.tee 1
i32.store
local.get 2
local.get 8
i32.store8 offset=142
local.get 2
local.get 7
i32.store16 offset=140
block ;; label = @3
local.get 1
br_if 0 (;@3;)
local.get 2
i32.const 164
i32.add
call $"<alloc::rc::Rc<[u16]>>::drop_slow"
end
local.get 2
local.get 3
i32.store8 offset=72
local.get 2
local.get 2
i32.load16_u offset=140
i32.store16 offset=73 align=1
local.get 2
local.get 2
i32.load8_u offset=142
i32.store8 offset=75
local.get 2
local.get 5
i32.store offset=84
local.get 2
local.get 0
i32.store offset=80
local.get 2
local.get 4
i32.store offset=76
i32.const 1065572
i32.const 43
local.get 2
i32.const 72
i32.add
i32.const 1065556
i32.const 1065616
call $core::result::unwrap_failed
unreachable
end
local.get 4
local.get 4
i32.load
i32.const 1
i32.add
local.tee 3
i32.store
block ;; label = @2
block ;; label = @3
block ;; label = @4
local.get 3
i32.eqz
br_if 0 (;@4;)
local.get 2
i32.const 0
i32.store8 offset=164
local.get 2
local.get 5
i64.extend_i32_u
i64.store offset=88
local.get 2
local.get 4
i32.store offset=84
local.get 2
i32.const 6
i32.store8 offset=80
local.get 2
i64.const 4294967296
i64.store offset=72
local.get 2
local.get 2
i32.const 164
i32.add
i32.store offset=96
local.get 2
i32.const 8
i32.add
local.get 2
i32.const 72
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, 1>, core::result::Result<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>::to_rc_slice"
local.get 2
local.get 2
i32.load offset=12
local.tee 5
i32.store offset=148
local.get 2
local.get 2
i32.load offset=8
local.tee 4
i32.store offset=144
block ;; label = @5
local.get 2
i32.load8_u offset=164
i32.const 1
i32.ne
br_if 0 (;@5;)
local.get 4
local.get 4
i32.load
i32.const -1
i32.add
local.tee 0
i32.store
local.get 0
br_if 3 (;@2;)
local.get 2
i32.const 144
i32.add
call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
br 3 (;@2;)
end
local.get 4
i32.eqz
br_if 2 (;@2;)
i32.const 174
i32.const 0
local.get 4
local.get 5
i32.const 1064973
i32.const 173
call $<nanvm_lib::naive::function::Function>::new
local.set 4
local.get 2
i32.const 0
i32.store8 offset=164
local.get 2
local.get 4
i32.store offset=92
local.get 2
i32.const 7
i32.store8 offset=88
local.get 2
local.get 7
i32.store offset=84
local.get 2
local.get 6
i32.store offset=80
local.get 2
i64.const 4294967296
i64.store offset=72
local.get 2
local.get 2
i32.const 164
i32.add
i32.store offset=104
local.get 2
local.get 2
i32.const 72
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<(nanvm_lib::vm::string::String<nanvm_lib::naive::Naive>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>), 1>, core::result::Result<(nanvm_lib::vm::string::String<nanvm_lib::naive::Naive>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>), ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<(nanvm_lib::vm::string::String<nanvm_lib::naive::Naive>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>)>>::to_rc_slice"
local.get 2
local.get 2
i32.load offset=4
local.tee 5
i32.store offset=148
local.get 2
local.get 2
i32.load
local.tee 4
i32.store offset=144
block ;; label = @5
local.get 2
i32.load8_u offset=164
i32.const 1
i32.ne
br_if 0 (;@5;)
local.get 4
local.get 4
i32.load
i32.const -1
i32.add
local.tee 0
i32.store
local.get 0
br_if 2 (;@3;)
local.get 2
i32.const 144
i32.add
call $"<alloc::rc::Rc<[(nanvm_lib::vm::string::String<nanvm_lib::naive::Naive>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>)]>>::drop_slow"
br 2 (;@3;)
end
local.get 4
i32.eqz
br_if 1 (;@3;)
local.get 0
local.get 5
i32.store offset=16
local.get 0
local.get 4
i32.store offset=12
local.get 0
i32.const 5
i32.store8 offset=8
local.get 0
i64.const 0
i64.store
local.get 2
i32.const 56
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 1
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 2
i32.const 176
i32.add
global.set $__stack_pointer
return
end
unreachable
end
i32.const 1057428
i32.const 43
local.get 2
i32.const 175
i32.add
i32.const 1057412
i32.const 1057472
call $core::result::unwrap_failed
unreachable
end
i32.const 1057428
i32.const 43
local.get 2
i32.const 175
i32.add
i32.const 1057412
i32.const 1057472
call $core::result::unwrap_failed
unreachable
end
i32.const 1057428
i32.const 43
local.get 2
i32.const 175
i32.add
i32.const 1057412
i32.const 1057472
call $core::result::unwrap_failed
unreachable
)
(func $"<nanvm_demos::samples::switch_statement::module<nanvm_lib::naive::Naive>::{closure#0} as core::ops::function::FnOnce<(&nanvm_lib::naive::function::Function, nanvm_lib::vm::array::Array<nanvm_lib::naive::Naive>)>>::call_once" (;592;) (type 4 ) (param i32 i32 i32 i32 )
(local i32 i32 i64 i32 f64 i32 i32 )
global.get $__stack_pointer
i32.const 336
i32.sub
local.tee 4
global.set $__stack_pointer
local.get 1
i32.load
local.set 1
local.get 4
local.get 3
i32.store offset=60
local.get 4
local.get 2
i32.store offset=56
local.get 2
local.get 2
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
block ;; label = @1
local.get 5
i32.eqz
br_if 0 (;@1;)
local.get 4
local.get 3
i32.store offset=72
local.get 4
local.get 2
i32.store offset=68
local.get 4
i32.const 6
i32.store8 offset=64
block ;; label = @2
block ;; label = @3
block ;; label = @4
local.get 1
i32.load offset=16
i32.eqz
br_if 0 (;@4;)
block ;; label = @5
block ;; label = @6
block ;; label = @7
block ;; label = @8
block ;; label = @9
block ;; label = @10
block ;; label = @11
block ;; label = @12
local.get 1
i32.load offset=12
local.tee 1
i32.load8_u offset=8
local.tee 5
br_table 6 (;@6;) 6 (;@6;) 0 (;@12;) 1 (;@11;) 2 (;@10;) 3 (;@9;) 4 (;@8;) 5 (;@7;) 6 (;@6;)
end
local.get 1
i64.load offset=16
local.set 6
br 9 (;@2;)
end
local.get 1
i32.load offset=12
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 7
i32.store
local.get 7
i32.eqz
br_if 9 (;@1;)
br 7 (;@3;)
end
local.get 1
i32.load offset=12
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 7
i32.store
local.get 7
i32.eqz
br_if 8 (;@1;)
local.get 1
i64.load8_u offset=20
i64.const 32
i64.shl
local.get 1
i64.load32_u offset=16
i64.or
local.set 6
br 7 (;@2;)
end
local.get 1
i32.load offset=12
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 7
i32.store
local.get 7
br_if 5 (;@3;)
br 7 (;@1;)
end
local.get 1
i32.load offset=12
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 7
i32.store
local.get 7
br_if 4 (;@3;)
br 6 (;@1;)
end
local.get 1
i32.load offset=12
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 1
i32.store
local.get 1
i32.eqz
br_if 5 (;@1;)
br 1 (;@5;)
end
local.get 1
i32.load8_u offset=9
local.set 1
end
br 2 (;@2;)
end
i32.const 0
i32.const 0
i32.const 1063408
call $core::panicking::panic_bounds_check
unreachable
end
local.get 1
i64.load32_u offset=16
local.set 6
end
local.get 4
local.get 6
i64.store offset=136
local.get 4
local.get 3
i32.store offset=132
local.get 4
local.get 1
i32.store8 offset=129
local.get 4
local.get 5
i32.store8 offset=128
block ;; label = @2
block ;; label = @3
block ;; label = @4
block ;; label = @5
block ;; label = @6
block ;; label = @7
block ;; label = @8
block ;; label = @9
block ;; label = @10
block ;; label = @11
local.get 4
i32.load8_u offset=64
local.tee 1
br_table 6 (;@5;) 6 (;@5;) 0 (;@11;) 1 (;@10;) 2 (;@9;) 3 (;@8;) 4 (;@7;) 5 (;@6;) 6 (;@5;)
end
local.get 4
i64.load offset=72
local.set 6
br 8 (;@2;)
end
local.get 4
i32.load offset=68
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 8 (;@1;)
br 6 (;@3;)
end
local.get 4
i32.load offset=68
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 7 (;@1;)
local.get 4
i64.load8_u offset=76
i64.const 32
i64.shl
local.get 4
i64.load32_u offset=72
i64.or
local.set 6
br 6 (;@2;)
end
local.get 4
i32.load offset=68
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 6 (;@1;)
br 4 (;@3;)
end
local.get 4
i32.load offset=68
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 5 (;@1;)
br 3 (;@3;)
end
local.get 4
i32.load offset=68
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 4 (;@1;)
br 1 (;@4;)
end
local.get 4
i32.load8_u offset=65
local.set 5
end
br 1 (;@2;)
end
local.get 4
i64.load32_u offset=72
local.set 6
end
local.get 4
local.get 6
i64.store offset=280
local.get 4
local.get 3
i32.store offset=276
local.get 4
local.get 5
i32.store8 offset=273
local.get 4
local.get 1
i32.store8 offset=272
local.get 4
i64.const 0
i64.store offset=312
local.get 4
i32.const 2
i32.store8 offset=304
local.get 4
i32.const 192
i32.add
local.get 4
i32.const 272
i32.add
local.get 4
i32.const 304
i32.add
call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
block ;; label = @2
block ;; label = @3
block ;; label = @4
block ;; label = @5
block ;; label = @6
local.get 4
i32.load8_u offset=192
i32.const 255
i32.ne
br_if 0 (;@6;)
local.get 0
local.get 4
i64.load offset=208
i64.store offset=16
local.get 0
local.get 4
i64.load offset=200
i64.store offset=8
local.get 0
i64.const 1
i64.store
local.get 4
i32.const 128
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
br 1 (;@5;)
end
local.get 4
local.get 4
i64.load offset=216
i64.store offset=328
local.get 4
local.get 4
i64.load offset=208
i64.store offset=320
local.get 4
local.get 4
i64.load offset=200
i64.store offset=312
local.get 4
local.get 4
i64.load offset=192
i64.store offset=304
local.get 4
i32.const 272
i32.add
local.get 4
i32.const 304
i32.add
call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::own
block ;; label = @6
block ;; label = @7
local.get 4
i32.load8_u offset=272
local.tee 3
i32.const 255
i32.ne
br_if 0 (;@7;)
i32.const 1
local.set 1
i32.const 0
local.set 3
br 1 (;@6;)
end
local.get 4
local.get 4
i64.load offset=274 align=2
i64.store offset=224
local.get 4
local.get 4
i64.load offset=280 align=2
i64.store offset=230 align=2
local.get 4
i32.load8_u offset=273
local.set 1
end
local.get 4
i32.const 304
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
i32.const 320
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
local.get 1
i32.store8 offset=97
local.get 4
local.get 3
i32.store8 offset=96
local.get 4
local.get 4
i64.load offset=224
i64.store offset=98 align=2
local.get 4
local.get 4
i64.load offset=230 align=2
i64.store offset=104 align=2
local.get 4
i32.const 304
i32.add
local.get 4
i32.const 96
i32.add
call $<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::to_numeric
local.get 4
f64.load offset=320
local.set 8
local.get 4
i32.load offset=316
local.set 3
local.get 4
i32.load offset=312
local.set 1
block ;; label = @6
block ;; label = @7
block ;; label = @8
block ;; label = @9
local.get 4
i32.load offset=304
br_if 0 (;@9;)
block ;; label = @10
local.get 1
i32.const 1
i32.ne
br_if 0 (;@10;)
local.get 4
local.get 8
f64.store offset=308 align=4
local.get 4
local.get 3
i32.store offset=304
local.get 4
i32.const 304
i32.add
call $<nanvm_lib::vm::bigint::BigInt<nanvm_lib::naive::Naive>>::to_number
local.set 8
local.get 3
local.get 3
i32.load
i32.const -1
i32.add
local.tee 1
i32.store
local.get 1
br_if 0 (;@10;)
local.get 4
i32.const 304
i32.add
call $"<alloc::rc::Rc<[u64]>>::drop_slow"
end
local.get 4
local.get 8
f64.store offset=120
local.get 4
i32.const 2
i32.store offset=112
local.get 4
i32.const 224
i32.add
local.get 4
i32.const 128
i32.add
local.get 4
i32.const 112
i32.add
call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
block ;; label = @10
local.get 4
i32.load8_u offset=224
i32.const 255
i32.ne
br_if 0 (;@10;)
local.get 0
local.get 4
i64.load offset=240
i64.store offset=16
local.get 0
local.get 4
i64.load offset=232
i64.store offset=8
local.get 0
i64.const 1
i64.store
br 5 (;@5;)
end
local.get 4
local.get 4
i64.load offset=248
i64.store offset=328
local.get 4
local.get 4
i64.load offset=240
i64.store offset=320
local.get 4
local.get 4
i64.load offset=232
i64.store offset=312
local.get 4
local.get 4
i64.load offset=224
i64.store offset=304
local.get 4
i32.const 272
i32.add
local.get 4
i32.const 304
i32.add
call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::own
block ;; label = @10
block ;; label = @11
local.get 4
i32.load8_u offset=272
local.tee 3
i32.const 255
i32.ne
br_if 0 (;@11;)
local.get 4
i32.const 304
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
i32.const 320
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
i32.const 256
i32.store16 offset=80
i32.const 1
local.set 1
i32.const 0
local.set 3
br 1 (;@10;)
end
local.get 4
local.get 4
i64.load offset=274 align=2
i64.store offset=128
local.get 4
local.get 4
i64.load offset=280 align=2
i64.store offset=134 align=2
local.get 4
i32.load8_u offset=273
local.set 1
local.get 4
i32.const 304
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
i32.const 320
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
local.get 1
i32.store8 offset=81
local.get 4
local.get 3
i32.store8 offset=80
local.get 4
local.get 4
i64.load offset=128
i64.store offset=82 align=2
local.get 4
local.get 4
i64.load offset=134 align=2
i64.store offset=88 align=2
block ;; label = @11
block ;; label = @12
block ;; label = @13
block ;; label = @14
block ;; label = @15
block ;; label = @16
block ;; label = @17
local.get 3
br_table 7 (;@10;) 7 (;@10;) 5 (;@12;) 0 (;@17;) 1 (;@16;) 2 (;@15;) 3 (;@14;) 4 (;@13;) 7 (;@10;)
end
local.get 4
i32.load offset=84
local.tee 5
local.get 5
i32.load
i32.const 1
i32.add
local.tee 3
i32.store
local.get 3
i32.eqz
br_if 15 (;@1;)
local.get 4
i64.load32_u offset=88
local.set 6
i32.const 3
local.set 3
br 5 (;@11;)
end
local.get 4
i32.load offset=84
local.tee 5
local.get 5
i32.load
i32.const 1
i32.add
local.tee 3
i32.store
local.get 3
i32.eqz
br_if 14 (;@1;)
local.get 4
i64.load8_u offset=92
i64.const 32
i64.shl
local.get 4
i64.load32_u offset=88
i64.or
local.set 6
i32.const 4
local.set 3
br 4 (;@11;)
end
local.get 4
i32.load offset=84
local.tee 5
local.get 5
i32.load
i32.const 1
i32.add
local.tee 3
i32.store
local.get 3
i32.eqz
br_if 13 (;@1;)
local.get 4
i64.load32_u offset=88
local.set 6
i32.const 5
local.set 3
br 3 (;@11;)
end
local.get 4
i32.load offset=84
local.tee 5
local.get 5
i32.load
i32.const 1
i32.add
local.tee 3
i32.store
local.get 3
i32.eqz
br_if 12 (;@1;)
local.get 4
i64.load32_u offset=88
local.set 6
i32.const 6
local.set 3
br 2 (;@11;)
end
local.get 4
i32.load offset=84
local.tee 5
local.get 5
i32.load
i32.const 1
i32.add
local.tee 3
i32.store
local.get 3
i32.eqz
br_if 11 (;@1;)
i32.const 7
local.set 3
br 2 (;@10;)
end
i32.const 2
local.set 3
local.get 4
i64.load offset=88
local.set 6
end
end
local.get 4
local.get 6
i64.store offset=136
local.get 4
local.get 5
i32.store offset=132
local.get 4
local.get 1
i32.store8 offset=129
local.get 4
local.get 3
i32.store8 offset=128
local.get 4
i32.const 255
i32.store8 offset=272
local.get 4
i32.const 0
i32.store16 offset=312
local.get 4
i32.const 1064961
i32.store offset=308
local.get 4
i32.const 1064956
i32.store offset=304
local.get 4
local.get 4
i32.const 272
i32.add
i32.store offset=316
local.get 4
i32.const 48
i32.add
local.get 4
i32.const 304
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>> as alloc::rc::ToRcSlice<u16>>::to_rc_slice"
local.get 4
local.get 4
i32.load offset=52
local.tee 1
i32.store offset=180
local.get 4
local.get 4
i32.load offset=48
local.tee 3
i32.store offset=176
block ;; label = @10
local.get 4
i32.load8_u offset=272
local.tee 5
i32.const 255
i32.eq
br_if 0 (;@10;)
local.get 4
i32.load offset=276
local.set 2
local.get 4
i32.load offset=280
local.set 0
local.get 4
i32.load offset=284
local.set 1
local.get 4
i32.load16_u offset=273 align=1
local.set 7
local.get 4
i32.load8_u offset=275
local.set 9
local.get 3
local.get 3
i32.load
i32.const -1
i32.add
local.tee 10
i32.store
local.get 4
local.get 9
i32.store8 offset=162
local.get 4
local.get 7
i32.store16 offset=160
block ;; label = @11
local.get 10
br_if 0 (;@11;)
local.get 4
i32.const 176
i32.add
call $"<alloc::rc::Rc<[u16]>>::drop_slow"
end
local.get 4
local.get 5
i32.store8 offset=304
local.get 4
local.get 4
i32.load16_u offset=160
i32.store16 offset=305 align=1
local.get 4
local.get 4
i32.load8_u offset=162
i32.store8 offset=307
local.get 4
local.get 1
i32.store offset=316
local.get 4
local.get 0
i32.store offset=312
local.get 4
local.get 2
i32.store offset=308
i32.const 1065572
i32.const 43
local.get 4
i32.const 304
i32.add
i32.const 1065556
i32.const 1065616
call $core::result::unwrap_failed
unreachable
end
local.get 4
local.get 1
i32.store offset=312
local.get 4
local.get 3
i32.store offset=308
local.get 4
i32.const 3
i32.store8 offset=304
local.get 4
i32.const 128
i32.add
local.get 4
i32.const 304
i32.add
call $"<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive> as core::cmp::PartialEq>::eq"
local.set 3
local.get 4
i32.const 304
i32.add
call $"#func344 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
i32.const 128
i32.add
call $"#func344 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
local.get 3
i32.store8 offset=257
local.get 4
i32.const 1
i32.store8 offset=256
local.get 4
local.get 3
i32.store8 offset=305
local.get 4
i32.const 1
i32.store8 offset=304
block ;; label = @10
local.get 4
i32.const 304
i32.add
call $<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>::dispatch::<nanvm_lib::vm::boolean_coercion::BooleanCoercion>
br_if 0 (;@10;)
block ;; label = @11
block ;; label = @12
block ;; label = @13
block ;; label = @14
block ;; label = @15
block ;; label = @16
block ;; label = @17
block ;; label = @18
local.get 4
i32.load8_u offset=80
local.tee 1
br_table 6 (;@12;) 6 (;@12;) 0 (;@18;) 1 (;@17;) 2 (;@16;) 3 (;@15;) 4 (;@14;) 5 (;@13;) 6 (;@12;)
end
local.get 4
i64.load offset=88
local.set 6
br 10 (;@7;)
end
local.get 4
i32.load offset=84
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 15 (;@1;)
br 8 (;@8;)
end
local.get 4
i32.load offset=84
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 14 (;@1;)
local.get 4
i64.load8_u offset=92
i64.const 32
i64.shl
local.get 4
i64.load32_u offset=88
i64.or
local.set 6
br 8 (;@7;)
end
local.get 4
i32.load offset=84
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 13 (;@1;)
br 6 (;@8;)
end
local.get 4
i32.load offset=84
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 12 (;@1;)
br 5 (;@8;)
end
local.get 4
i32.load offset=84
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 11 (;@1;)
br 1 (;@11;)
end
local.get 4
i32.load8_u offset=81
local.set 5
end
br 3 (;@7;)
end
block ;; label = @10
block ;; label = @11
block ;; label = @12
block ;; label = @13
block ;; label = @14
block ;; label = @15
block ;; label = @16
block ;; label = @17
local.get 4
i32.load8_u offset=256
br_table 0 (;@17;) 1 (;@16;) 7 (;@10;) 2 (;@15;) 3 (;@14;) 4 (;@13;) 5 (;@12;) 6 (;@11;) 0 (;@17;)
end
i32.const 0
local.set 5
local.get 4
i32.load8_u offset=257
local.set 1
br 10 (;@6;)
end
i32.const 1
local.set 5
local.get 4
i32.load8_u offset=257
local.set 1
br 9 (;@6;)
end
local.get 4
i32.load offset=260
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 1
i32.store
local.get 1
i32.eqz
br_if 13 (;@1;)
local.get 4
i64.load32_u offset=264
local.set 6
i32.const 3
local.set 5
br 8 (;@6;)
end
local.get 4
i32.load offset=260
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 1
i32.store
local.get 1
i32.eqz
br_if 12 (;@1;)
local.get 4
i64.load8_u offset=268
i64.const 32
i64.shl
local.get 4
i64.load32_u offset=264
i64.or
local.set 6
i32.const 4
local.set 5
br 7 (;@6;)
end
local.get 4
i32.load offset=260
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 1
i32.store
local.get 1
i32.eqz
br_if 11 (;@1;)
local.get 4
i64.load32_u offset=264
local.set 6
i32.const 5
local.set 5
br 6 (;@6;)
end
local.get 4
i32.load offset=260
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 1
i32.store
local.get 1
i32.eqz
br_if 10 (;@1;)
local.get 4
i64.load32_u offset=264
local.set 6
i32.const 6
local.set 5
br 5 (;@6;)
end
local.get 4
i32.load offset=260
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 1
i32.store
local.get 1
i32.eqz
br_if 9 (;@1;)
i32.const 7
local.set 5
br 4 (;@6;)
end
i32.const 2
local.set 5
local.get 4
i64.load offset=264
local.set 6
br 3 (;@6;)
end
local.get 0
local.get 8
f64.store offset=16
local.get 0
local.get 3
i32.store offset=12
local.get 0
local.get 1
i32.store offset=8
local.get 0
i64.const 1
i64.store
local.get 4
i32.const 128
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
br 3 (;@5;)
end
local.get 4
i64.load32_u offset=88
local.set 6
end
local.get 4
local.get 6
i64.store offset=136
local.get 4
local.get 3
i32.store offset=132
local.get 4
local.get 5
i32.store8 offset=129
local.get 4
local.get 1
i32.store8 offset=128
local.get 4
i32.const 255
i32.store8 offset=272
local.get 4
i32.const 0
i32.store16 offset=312
local.get 4
i32.const 1064967
i32.store offset=308
local.get 4
i32.const 1064961
i32.store offset=304
local.get 4
local.get 4
i32.const 272
i32.add
i32.store offset=316
local.get 4
i32.const 40
i32.add
local.get 4
i32.const 304
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>> as alloc::rc::ToRcSlice<u16>>::to_rc_slice"
local.get 4
local.get 4
i32.load offset=44
local.tee 1
i32.store offset=180
local.get 4
local.get 4
i32.load offset=40
local.tee 3
i32.store offset=176
block ;; label = @7
local.get 4
i32.load8_u offset=272
local.tee 5
i32.const 255
i32.eq
br_if 0 (;@7;)
local.get 4
i32.load offset=276
local.set 2
local.get 4
i32.load offset=280
local.set 0
local.get 4
i32.load offset=284
local.set 1
local.get 4
i32.load16_u offset=273 align=1
local.set 7
local.get 4
i32.load8_u offset=275
local.set 9
local.get 3
local.get 3
i32.load
i32.const -1
i32.add
local.tee 10
i32.store
local.get 4
local.get 9
i32.store8 offset=162
local.get 4
local.get 7
i32.store16 offset=160
block ;; label = @8
local.get 10
br_if 0 (;@8;)
local.get 4
i32.const 176
i32.add
call $"<alloc::rc::Rc<[u16]>>::drop_slow"
end
local.get 4
local.get 5
i32.store8 offset=304
local.get 4
local.get 4
i32.load16_u offset=160
i32.store16 offset=305 align=1
local.get 4
local.get 4
i32.load8_u offset=162
i32.store8 offset=307
local.get 4
local.get 1
i32.store offset=316
local.get 4
local.get 0
i32.store offset=312
local.get 4
local.get 2
i32.store offset=308
i32.const 1065572
i32.const 43
local.get 4
i32.const 304
i32.add
i32.const 1065556
i32.const 1065616
call $core::result::unwrap_failed
unreachable
end
local.get 4
local.get 1
i32.store offset=312
local.get 4
local.get 3
i32.store offset=308
local.get 4
i32.const 3
i32.store8 offset=304
local.get 4
i32.const 128
i32.add
local.get 4
i32.const 304
i32.add
call $"<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive> as core::cmp::PartialEq>::eq"
local.set 1
local.get 4
i32.const 304
i32.add
call $"#func344 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
i32.const 128
i32.add
call $"#func344 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
i32.const 1
local.set 5
end
local.get 4
i32.const 256
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
local.get 6
i64.store offset=312
local.get 4
local.get 3
i32.store offset=308
local.get 4
local.get 1
i32.store8 offset=305
local.get 4
local.get 5
i32.store8 offset=304
block ;; label = @6
block ;; label = @7
block ;; label = @8
local.get 4
i32.const 304
i32.add
call $<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>::dispatch::<nanvm_lib::vm::boolean_coercion::BooleanCoercion>
br_if 0 (;@8;)
block ;; label = @9
block ;; label = @10
block ;; label = @11
block ;; label = @12
block ;; label = @13
block ;; label = @14
block ;; label = @15
block ;; label = @16
local.get 4
i32.load8_u offset=80
local.tee 1
br_table 6 (;@10;) 6 (;@10;) 0 (;@16;) 1 (;@15;) 2 (;@14;) 3 (;@13;) 4 (;@12;) 5 (;@11;) 6 (;@10;)
end
local.get 4
i64.load offset=88
local.set 6
br 9 (;@6;)
end
local.get 4
i32.load offset=84
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 13 (;@1;)
br 7 (;@7;)
end
local.get 4
i32.load offset=84
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 12 (;@1;)
local.get 4
i64.load8_u offset=92
i64.const 32
i64.shl
local.get 4
i64.load32_u offset=88
i64.or
local.set 6
br 7 (;@6;)
end
local.get 4
i32.load offset=84
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 11 (;@1;)
br 5 (;@7;)
end
local.get 4
i32.load offset=84
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 10 (;@1;)
br 4 (;@7;)
end
local.get 4
i32.load offset=84
local.tee 3
local.get 3
i32.load
i32.const 1
i32.add
local.tee 5
i32.store
local.get 5
i32.eqz
br_if 9 (;@1;)
br 1 (;@9;)
end
local.get 4
i32.load8_u offset=81
local.set 5
end
br 2 (;@6;)
end
local.get 4
i32.const 255
i32.store8 offset=272
local.get 4
i32.const 0
i32.store16 offset=312
local.get 4
i32.const 1065679
i32.store offset=308
local.get 4
i32.const 1065670
i32.store offset=304
local.get 4
local.get 4
i32.const 272
i32.add
i32.store offset=316
local.get 4
local.get 4
i32.const 304
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>> as alloc::rc::ToRcSlice<u16>>::to_rc_slice"
local.get 4
local.get 4
i32.load offset=4
local.tee 5
i32.store offset=132
local.get 4
local.get 4
i32.load
local.tee 1
i32.store offset=128
block ;; label = @8
local.get 4
i32.load8_u offset=272
local.tee 3
i32.const 255
i32.eq
br_if 0 (;@8;)
local.get 4
i32.load offset=276
local.set 2
local.get 4
i32.load offset=280
local.set 0
local.get 4
i32.load offset=284
local.set 5
local.get 4
i32.load16_u offset=273 align=1
local.set 7
local.get 4
i32.load8_u offset=275
local.set 9
local.get 1
local.get 1
i32.load
i32.const -1
i32.add
local.tee 10
i32.store
local.get 4
local.get 9
i32.store8 offset=258
local.get 4
local.get 7
i32.store16 offset=256
block ;; label = @9
local.get 10
br_if 0 (;@9;)
local.get 4
i32.const 128
i32.add
call $"<alloc::rc::Rc<[u16]>>::drop_slow"
end
local.get 4
local.get 3
i32.store8 offset=304
local.get 4
local.get 4
i32.load16_u offset=256
i32.store16 offset=305 align=1
local.get 4
local.get 4
i32.load8_u offset=258
i32.store8 offset=307
local.get 4
local.get 5
i32.store offset=316
local.get 4
local.get 0
i32.store offset=312
local.get 4
local.get 2
i32.store offset=308
i32.const 1065572
i32.const 43
local.get 4
i32.const 304
i32.add
i32.const 1065556
i32.const 1065616
call $core::result::unwrap_failed
unreachable
end
i64.const 0
local.set 6
i32.const 3
local.set 3
br 3 (;@4;)
end
local.get 4
i64.load32_u offset=88
local.set 6
end
local.get 4
local.get 6
i64.store offset=136
local.get 4
local.get 3
i32.store offset=132
local.get 4
local.get 5
i32.store8 offset=129
local.get 4
local.get 1
i32.store8 offset=128
local.get 4
i32.const 255
i32.store8 offset=272
local.get 4
i32.const 0
i32.store16 offset=312
local.get 4
i32.const 1064973
i32.store offset=308
local.get 4
i32.const 1064967
i32.store offset=304
local.get 4
local.get 4
i32.const 272
i32.add
i32.store offset=316
local.get 4
i32.const 32
i32.add
local.get 4
i32.const 304
i32.add
call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>> as alloc::rc::ToRcSlice<u16>>::to_rc_slice"
local.get 4
local.get 4
i32.load offset=36
local.tee 1
i32.store offset=260
local.get 4
local.get 4
i32.load offset=32
local.tee 3
i32.store offset=256
block ;; label = @6
local.get 4
i32.load8_u offset=272
local.tee 5
i32.const 255
i32.eq
br_if 0 (;@6;)
local.get 4
i32.load offset=276
local.set 2
local.get 4
i32.load offset=280
local.set 0
local.get 4
i32.load offset=284
local.set 1
local.get 4
i32.load16_u offset=273 align=1
local.set 7
local.get 4
i32.load8_u offset=275
local.set 9
local.get 3
local.get 3
i32.load
i32.const -1
i32.add
local.tee 10
i32.store
local.get 4
local.get 9
i32.store8 offset=178
local.get 4
local.get 7
i32.store16 offset=176
block ;; label = @7
local.get 10
br_if 0 (;@7;)
local.get 4
i32.const 256
i32.add
call $"<alloc::rc::Rc<[u16]>>::drop_slow"
end
local.get 4
local.get 5
i32.store8 offset=304
local.get 4
local.get 4
i32.load16_u offset=176
i32.store16 offset=305 align=1
local.get 4
local.get 4
i32.load8_u offset=178
i32.store8 offset=307
local.get 4
local.get 1
i32.store offset=316
local.get 4
local.get 0
i32.store offset=312
local.get 4
local.get 2
i32.store offset=308
i32.const 1065572
i32.const 43
local.get 4
i32.const 304
i32.add
i32.const 1065556
i32.const 1065616
call $core::result::unwrap_failed
unreachable
end
local.get 4
local.get 1
i32.store offset=312
local.get 4
local.get 3
i32.store offset=308
i32.const 3
local.set 3
local.get 4
i32.const 3
i32.store8 offset=304
local.get 4
i32.const 128
i32.add
local.get 4
i32.const 304
i32.add
call $"<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive> as core::cmp::PartialEq>::eq"
local.set 1
local.get 4
i32.const 304
i32.add
call $"#func344 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
i32.const 128
i32.add
call $"#func344 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
local.get 1
i32.store8 offset=257
local.get 4
i32.const 1
i32.store8 offset=256
block ;; label = @6
block ;; label = @7
local.get 4
i32.const 256
i32.add
call $<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>::dispatch::<nanvm_lib::vm::boolean_coercion::BooleanCoercion>
br_if 0 (;@7;)
local.get 4
i32.const 24
i32.add
i32.const 1065659
i32.const 7
call $"<nanvm_lib::vm::string::String<nanvm_lib::naive::Naive> as core::convert::From<&str>>::from"
local.get 4
i32.const 3
i32.store8 offset=160
local.get 4
local.get 4
i64.load offset=24
i64.store offset=164 align=4
local.get 4
i32.const 176
i32.add
local.get 4
i32.const 64
i32.add
call $"#func630 <nanvm_lib::naive::Naive as core::clone::Clone>::clone"
local.get 4
i64.const 0
i64.store offset=312
local.get 4
i32.const 2
i32.store8 offset=304
local.get 4
i32.const 272
i32.add
local.get 4
i32.const 176
i32.add
local.get 4
i32.const 304
i32.add
call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
local.get 4
i32.load8_u offset=272
i32.const 255
i32.eq
br_if 1 (;@6;)
local.get 4
local.get 4
i64.load offset=296
i64.store offset=328
local.get 4
local.get 4
i64.load offset=288
i64.store offset=320
local.get 4
local.get 4
i64.load offset=280
i64.store offset=312
local.get 4
local.get 4
i64.load offset=272
i64.store offset=304
local.get 4
i32.const 144
i32.add
local.get 4
i32.const 304
i32.add
call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::read
local.get 4
local.get 4
i64.load offset=160
i64.store offset=128
local.get 4
local.get 4
i64.load offset=168
i64.store offset=136
local.get 4
i32.const 16
i32.add
local.get 4
i32.const 128
i32.add
call $"<nanvm_lib::naive::container::Container<(), nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>> as nanvm_lib::vm::internal::icontainer::IContainer<nanvm_lib::naive::Naive>>::new_ok::<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>; 2]>"
local.get 4
i32.load offset=20
local.set 5
local.get 4
i32.load offset=16
local.set 1
i64.const 1
local.set 6
i32.const 6
local.set 3
br 3 (;@4;)
end
local.get 4
i32.const 8
i32.add
i32.const 1065666
i32.const 4
call $"<nanvm_lib::vm::string::String<nanvm_lib::naive::Naive> as core::convert::From<&str>>::from"
i64.const 0
local.set 6
local.get 4
i32.load offset=12
local.set 5
local.get 4
i32.load offset=8
local.set 1
br 2 (;@4;)
end
local.get 0
local.get 4
i64.load offset=288
i64.store offset=16
local.get 0
local.get 4
i64.load offset=280
i64.store offset=8
local.get 0
i64.const 1
i64.store
local.get 4
i32.const 160
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
i32.const 80
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
end
local.get 4
i32.const 64
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 2
local.get 2
i32.load
i32.const -1
i32.add
local.tee 0
i32.store
local.get 0
i32.eqz
br_if 1 (;@3;)
br 2 (;@2;)
end
local.get 0
local.get 5
i32.store offset=16
local.get 0
local.get 1
i32.store offset=12
local.get 0
local.get 3
i32.store8 offset=8
local.get 0
local.get 6
i64.store
local.get 4
i32.const 80
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 4
i32.const 64
i32.add
call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
local.get 2
local.get 2
i32.load
i32.const -1
i32.add
local.tee 0
i32.store
local.get 0
br_if 1 (;@2;)
end
local.get 4
i32.const 56
i32.add
call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
end
local.get 4
i32.const 336
i32.add
global.set $__stack_pointer
return
end
unreachable
)
Run