@@ -86,4 +86,80 @@ EM_JS(c2wasm_js_var, c2wasm_get_var_any, (c2wasm_js_var stack_index), {
8686 return created_index ;
8787});
8888
89+ EM_JS (c2wasm_js_var , c2wasm_call_var , (c2wasm_js_var stack_index , c2wasm_js_var args ), {
90+ let func = window .c2wasm_stack [stack_index ];
91+ let arguments_callback = null ;
92+ if (args < 0 ){
93+ arguments_callback = [];
94+ }
95+ else {
96+ arguments_callback = window .c2wasm_stack [args ];
97+ if (!Array .isArray (arguments_callback )){
98+ arguments_callback = [arguments_callback ];
99+ }
100+ }
101+ let result = null ;
102+ try {
103+ result = func (...arguments_callback );
104+ }catch (error ){
105+ result = error ;
106+ }
107+
108+ if (result == false){
109+ return window .c2wasm_false ;
110+ }
111+ if (result == true){
112+ return window .c2wasm_true ;
113+ }
114+ if (result == null ){
115+ return window .c2wasm_null ;
116+ }
117+ if (result == undefined ){
118+ return window .c2wasm_undefined ;
119+ }
120+ let created_index = window .c2wasm_get_stack_point ();
121+ window .c2wasm_stack [created_index ] = result ;
122+ return created_index ;
123+ });
124+
125+ #ifdef __ASYNCIFY__
126+
127+ EM_ASYNC_JS (c2wasm_js_var , await_c2wasm_call_var , (c2wasm_js_var stack_index , c2wasm_js_var args ), {
128+ let func = window .c2wasm_stack [stack_index ];
129+ let arguments_callback = null ;
130+ if (args < 0 ){
131+ arguments_callback = [];
132+ }
133+ else {
134+ arguments_callback = window .c2wasm_stack [args ];
135+ if (!Array .isArray (arguments_callback )){
136+ arguments_callback = [arguments_callback ];
137+ }
138+ }
139+ let result = null ;
140+ try {
141+ result = await func (...arguments_callback );
142+ }catch (error ){
143+ result = error ;
144+ }
145+
146+ if (result == false){
147+ return window .c2wasm_false ;
148+ }
149+ if (result == true){
150+ return window .c2wasm_true ;
151+ }
152+ if (result == null ){
153+ return window .c2wasm_null ;
154+ }
155+ if (result == undefined ){
156+ return window .c2wasm_undefined ;
157+ }
158+ let created_index = window .c2wasm_get_stack_point ();
159+ window .c2wasm_stack [created_index ] = result ;
160+ return created_index ;
161+ });
162+
163+ #endif // __ASYNCIFY__
164+
89165
0 commit comments