Skip to content

Commit 80ab9a0

Browse files
created new call methods
1 parent 6751813 commit 80ab9a0

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

src/em_js.js_vars.c

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)