Assemblyscript: Error de compilación al intentar usar call_indirect

Creado en 19 dic. 2019  ·  4Comentarios  ·  Fuente: AssemblyScript/assemblyscript

A pesar de que se describe en el index.d.ts su uso produce un error " ERROR TS2304: Cannot find name 'call_indirect' " durante la compilación. Lo mismo ocurre con call_direct .

Comentario más útil

Sí, estos se han eliminado debido a problemas esperados con una implementación de cierre. Pero todavía se puede hacer esto:

changetype<(a: i32, b: i32) => i32>(someTableIndex)(1, 2);

respectivamente

var tableIndex = changetype<usize>(someFunction);

Todos 4 comentarios

Parece que se eliminaron aquí: https://github.com/AssemblyScript/assemblyscript/pull/974. ¿Hay o habrá reemplazos? En mi caso, necesito asociar una devolución de llamada proporcionada desde el lado JS con una clase wasm. Mi plan era pasar una tabla al módulo wasm (usando una bandera --importTable ) y luego llamarlo usando algo como call_indirect( this.callbackId )

Después de algunas consideraciones, se me ocurrieron 2 posibles soluciones:
1) Mantenga la tabla de devolución de llamada en JS (solo una matriz de devoluciones de llamada) y proporcione el método invokeCallback(callbackId: i32): void al módulo wasm.
2) Agregue una opción --tableBase al compilador, para que el usuario pueda reservar algo de espacio en la tabla específicamente para devoluciones de llamada. Puede funcionar, pero probablemente complicará las cosas en el lado del compilador.

De todos modos, no dude en cerrar este problema. Lo único es que call_indirect y call_direct deben eliminarse de index.d.ts si no se vuelven a agregar en la función

Sí, estos se han eliminado debido a problemas esperados con una implementación de cierre. Pero todavía se puede hacer esto:

changetype<(a: i32, b: i32) => i32>(someTableIndex)(1, 2);

respectivamente

var tableIndex = changetype<usize>(someFunction);

arreglado en # 1017

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

jerrywdlee picture jerrywdlee  ·  4Comentarios

Iainmon picture Iainmon  ·  3Comentarios

evgenykuzyakov picture evgenykuzyakov  ·  3Comentarios

torch2424 picture torch2424  ·  3Comentarios

solidsnail picture solidsnail  ·  5Comentarios