My understanding is that it's possible to implement virtual methods in AssemblyScript before GC/reftypes land in WASM:
- Make compiler emit vtables for classes not marked as
@unmanaged
- Make
__memory_allocate take another optional parameter (vtable pointer). This can be stored before returned memory address, so that code expecting same object field offsets as now doesn't break.
- Use
call_indirect for method calls (looking up function index in vtable)
My understanding is that it's possible to implement virtual methods in AssemblyScript before GC/reftypes land in WASM:
@unmanaged__memory_allocatetake another optional parameter (vtable pointer). This can be stored before returned memory address, so that code expecting same object field offsets as now doesn't break.call_indirectfor method calls (looking up function index in vtable)