Assemblyscript: call_indirect . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рджрд┐рд╕ре░ 2019  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: AssemblyScript/assemblyscript

рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЗрд╕реЗ index.d.ts рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди " ERROR TS2304: Cannot find name 'call_indirect' " рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рд╡рд╣реА call_direct ред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рдБ, рдЗрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдИ рдЕрднреА рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

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

рдХреНрд░рдорд╢

var tableIndex = changetype<usize>(someFunction);

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - https://github.com/AssemblyScript/assemblyscript/pull/974ред рдХреНрдпрд╛ рдХреЛрдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реЛрдЧрд╛ / рд╣реЛрдЧрд╛? рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдЬреЗрдПрд╕ рдХреА рдУрд░ рд╕реЗ рджрд┐рдП рдЧрдП рдХреЙрд▓рдмреИрдХ рдХреЛ рд╡рд╛рд╕рдо рдХреНрд▓рд╛рд╕ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдореЗрд░реА рдпреЛрдЬрдирд╛ wasm рдореЙрдбреНрдпреВрд▓ ( --importTable рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдмрд▓ рдкрд╛рд╕ рдХрд░рдирд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ call_indirect( this.callbackId ) рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд░рдирд╛ рдерд╛

рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рдж рдореИрдВ 2 рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд▓реЗрдХрд░ рдЖрдпрд╛:
1) рдЬреЗрдПрд╕ рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдЯреЗрдмрд▓ рдмрдирд╛рдП рд░рдЦреЗрдВ (рдХреЗрд╡рд▓ рдХреЙрд▓рдмреИрдХ рдХреА рдПрдХ рд╕рд░рдгреА) рдФрд░ 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 . рдореЗрдВ рддрдп

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

pannous picture pannous  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dcodeIO picture dcodeIO  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jerrywdlee picture jerrywdlee  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MaxGraey picture MaxGraey  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

DanielMazurkiewicz picture DanielMazurkiewicz  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ