added locals, which will eventually support let bindings, but they also enable zero-argument default constructors for value types. its not intuitive at all, but theyre actually not constructors, theyre a bytecode trick to call initobj on a reference to a local variable #jn
initobj is a clr intrinsic that takes a reference and initializes all its fields to zero. you need to construct a temporary local variable in order to push a reference to it with ldloca.s ("load local address short")