Assemblyscript: Erro de compilação ao tentar usar call_indirect

Criado em 19 dez. 2019  ·  4Comentários  ·  Fonte: AssemblyScript/assemblyscript

Apesar de estar descrito em index.d.ts seu uso produz um erro " ERROR TS2304: Cannot find name 'call_indirect' " durante a compilação. O mesmo vale para call_direct .

Comentários muito úteis

Sim, eles foram removidos devido a problemas esperados com a implementação de um fechamento. Mas ainda é possível fazer isso:

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

respectivamente

var tableIndex = changetype<usize>(someFunction);

Todos 4 comentários

Parece que eles foram removidos aqui - https://github.com/AssemblyScript/assemblyscript/pull/974. Há / haverá substituições? No meu caso, preciso associar um retorno de chamada fornecido do lado JS com uma classe wasm. Meu plano era passar uma tabela para o módulo wasm (usando um sinalizador --importTable ) e, em seguida, chamá-lo usando algo como call_indirect( this.callbackId )

Após algumas considerações, encontrei 2 soluções possíveis:
1) Manter a tabela de retorno de chamada em JS (apenas uma matriz de retornos de chamada) e fornecer o método invokeCallback(callbackId: i32): void para o módulo wasm.
2) Adicione uma opção --tableBase ao compilador, para que o usuário possa reservar algum espaço na tabela especificamente para callbacks. Pode funcionar, mas provavelmente complicará as coisas no lado do compilador.

De qualquer forma, fique à vontade para encerrar esta edição. A única coisa é que call_indirect e call_direct devem ser removidos de index.d.ts se não forem adicionados de volta ao elemento

Sim, eles foram removidos devido a problemas esperados com a implementação de um fechamento. Mas ainda é possível fazer isso:

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

respectivamente

var tableIndex = changetype<usize>(someFunction);

corrigido em # 1017

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

lastmjs picture lastmjs  ·  4Comentários

torch2424 picture torch2424  ·  5Comentários

kyegupov picture kyegupov  ·  3Comentários

MaxGraey picture MaxGraey  ·  4Comentários

drachehavoc picture drachehavoc  ·  6Comentários