index.d.ts
μ€λͺ
λμ΄ μμμλ λΆκ΅¬νκ³ μ»΄νμΌνλ λμ μ¬μ© μ μ€λ₯ " ERROR TS2304: Cannot find name 'call_indirect'
"κ° μμ±λ©λλ€. call_direct
λ§μ°¬κ°μ§μ
λλ€.
https://github.com/AssemblyScript/assemblyscript/pull/974 μμ μ κ±°λ κ² κ°μ΅λλ€ --importTable
νλκ·Έλ₯Ό μ¬μ©νμ¬) wasm λͺ¨λμ ν
μ΄λΈμ μ λ¬ν λ€μ call_indirect( this.callbackId )
μ κ°μ κ²μ μ¬μ©νμ¬ νΈμΆνλ κ²μ΄μμ΅λλ€.
λͺ κ°μ§ κ³ λ € μ¬ν νμ λ κ°μ§ κ°λ₯ν μ루μ
μ μκ°ν΄ λμ΅λλ€.
1) JSμμ μ½λ°± ν
μ΄λΈ(λ¨μ§ μ½λ°± λ°°μ΄)μ μ μ§νκ³ wasm λͺ¨λμ invokeCallback(callbackId: i32): void
λ©μλλ₯Ό μ 곡ν©λλ€.
2) μ»΄νμΌλ¬μ --tableBase
μ΅μ
μ μΆκ°νμ¬ μ¬μ©μκ° νΉλ³ν μ½λ°±μ μν΄ ν
μ΄λΈμμ μΌλΆ 곡κ°μ μμ½ν μ μλλ‘ ν©λλ€. μλν μ μμ§λ§ μ»΄νμΌλ¬ μΈ‘μμ μμ
μ 볡μ‘νκ² λ§λ€ μ μμ΅λλ€.
μ΄μ¨λ μ΄ λ¬Έμ λ₯Ό λ«μΌμμμ€. call_indirect
λ° call_direct
κ° κΈ°λ₯μ λ€μ μΆκ°λμ§ μλ κ²½μ° index.d.ts
μμ μ κ±°ν΄μΌ ν©λλ€.
μ, ν΄λ‘μ ꡬνμ μμλλ λ¬Έμ λλ¬Έμ μ κ±°λμμ΅λλ€. κ·Έλ¬λ μ¬μ ν λ€μκ³Ό κ°μ΄ ν μ μμ΅λλ€.
changetype<(a: i32, b: i32) => i32>(someTableIndex)(1, 2);
κ°κΈ°
var tableIndex = changetype<usize>(someFunction);
#1017μμ μμ
κ°μ₯ μ μ©ν λκΈ
μ, ν΄λ‘μ ꡬνμ μμλλ λ¬Έμ λλ¬Έμ μ κ±°λμμ΅λλ€. κ·Έλ¬λ μ¬μ ν λ€μκ³Ό κ°μ΄ ν μ μμ΅λλ€.
κ°κΈ°