So what's the current story about dealing with wrappers inside the engine? Here's why I ask: I'm implementing a prototype of reference types and object types for wasm, and these are realized as opaque (ie no exposed storage) TypedObject instances so that JS can also access them conveniently. Some of the fields are pointer fields, and when they are unrestricted ("anyref") they can be written from both JS and wasm.
Additionally, js can call wasm passing anyref parameters, which wasm can then try to downcast to references of known type. When wasm receives a pointer or reads one from an object field it really does not want to unwrap it; it wants to use it as a raw pointer immediately. (Unboxing an anyref to a TO pointer is currently expensive anyway but we don't want it to remain that way.) So how much unwrapping is needed? Luke told me - as I remember it - that we're pretty much getting rid of wrappers inside the engine, so that we never have to worry about unwrapping, but a quick search shows a lot of CheckedUnwrap calls still present in the code. So: what's the story, and what's the status? --lars _______________________________________________ dev-tech-js-engine-internals mailing list dev-tech-js-engine-internals@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals