line |
true |
false |
branch |
65
|
1 |
7 |
if (stacksize > 0xffffffff) { |
104
|
11 |
11 |
for (unsigned a=0; a
|
114
|
4 |
0 |
*( (int32_t*) wasm3_datum_ptr ) = SvIV( cur_sv ); |
118
|
2 |
0 |
*( (int64_t*) wasm3_datum_ptr ) = SvIV( cur_sv ); |
122
|
2 |
0 |
*( (float*) wasm3_datum_ptr ) = SvNV( cur_sv ); |
126
|
3 |
0 |
*( (double*) wasm3_datum_ptr ) = SvNV( cur_sv ); |
137
|
25 |
10 |
for (unsigned r=0; r
|
186
|
16 |
6 |
for (unsigned a=0; a
|
199
|
5 |
1 |
if (ret_svs) { |
201
|
5 |
0 |
if (ret_svs) { |
203
|
7 |
5 |
while (*p++) got_count++; |
206
|
5 |
0 |
if (got_count == rets_count) { |
208
|
7 |
5 |
for (unsigned r=0; r
|
218
|
5 |
0 |
if (ret_svs) { |
219
|
7 |
5 |
while (got_count--) SvREFCNT_dec(ret_svs[got_count]); |
228
|
1 |
5 |
if (errstr) m3ApiTrap(errstr); |
263
|
0 |
1 |
_croak_if_wasi_failed(self_sv, res); |
280
|
0 |
3 |
if (-1 == res) { |
281
|
0 |
0 |
if (errno == EBADF) croak("Bad file descriptor given: %d\n", fd); |
291
|
0 |
3 |
if (fd2 == -1) croak("dup(%d): %s", fd, strerror(errno)); |
299
|
0 |
1 |
if (argslen % 2) { |
312
|
5 |
1 |
for (int a=0; a
|
316
|
1 |
4 |
if (strEQ("in", argname)) { |
317
|
0 |
1 |
if (in_seen) _croak_dupe_arg("in"); |
322
|
1 |
3 |
else if (strEQ("out", argname)) { |
323
|
0 |
1 |
if (out_seen) _croak_dupe_arg("out"); |
328
|
1 |
2 |
else if (strEQ("err", argname)) { |
329
|
0 |
1 |
if (err_seen) _croak_dupe_arg("err"); |
334
|
1 |
1 |
else if (strEQ("env", argname)) { |
335
|
0 |
1 |
if (env_seen) _croak_dupe_arg("env"); |
338
|
1 |
0 |
_croak_if_not_avref(argval, "env"); |
|
0 |
1 |
_croak_if_not_avref(argval, "env"); |
343
|
0 |
1 |
if (avlen % 2) { |
349
|
0 |
1 |
Newx(init_options.envp, 1 + envlen, const char*); |
354
|
2 |
1 |
for (int e=0; e
|
378
|
1 |
0 |
else if (strEQ("preopen", argname)) { |
379
|
0 |
1 |
if (preopen_seen) _croak_dupe_arg("preopen"); |
382
|
1 |
0 |
if (!SvROK(argval) || (SvTYPE(SvRV(argval)) != SVt_PVHV)) { |
|
0 |
1 |
if (!SvROK(argval) || (SvTYPE(SvRV(argval)) != SVt_PVHV)) { |
390
|
0 |
1 |
Newx(init_options.preopens, size, uvwasi_preopen_t); |
393
|
1 |
1 |
for (I32 i=0; i
|
412
|
0 |
1 |
_croak_if_wasi_failed(self_sv, res); |
474
|
6 |
0 |
const char* modbytes_orig = SvPVbyte(modbytes_sv, modlen); |
483
|
0 |
6 |
if (err) { |
506
|
0 |
6 |
_warn_if_global_destruct(self_sv, env_sp); |
|
0 |
0 |
_warn_if_global_destruct(self_sv, env_sp); |
517
|
0 |
1 |
_function_sig_xsub(self_sv, name_sv, m3_GetArgCount, m3_GetArgType); |
|
0 |
1 |
_function_sig_xsub(self_sv, name_sv, m3_GetArgCount, m3_GetArgType); |
|
4 |
1 |
_function_sig_xsub(self_sv, name_sv, m3_GetArgCount, m3_GetArgType); |
523
|
0 |
1 |
_function_sig_xsub(self_sv, name_sv, m3_GetRetCount, m3_GetRetType); |
|
0 |
1 |
_function_sig_xsub(self_sv, name_sv, m3_GetRetCount, m3_GetRetType); |
|
4 |
1 |
_function_sig_xsub(self_sv, name_sv, m3_GetRetCount, m3_GetRetType); |
532
|
0 |
2 |
if (res) croak("Failed to find function %s: %s", _WASI_FUNCNAME, res); |
538
|
0 |
2 |
if (!wasi) croak("No WASI context found on module ā%sā!", m3_GetModuleName(o_module)); |
545
|
3 |
2 |
for (uint32_t a=0; aargc; a++) { |
550
|
2 |
0 |
if (res && res != m3Err_trapExit) croak("WASI: %s", res); |
|
0 |
2 |
if (res && res != m3Err_trapExit) croak("WASI: %s", res); |
566
|
0 |
6 |
if (res) croak("Failed to find function %s: %s", name, res); |
571
|
0 |
6 |
if (given_args_count != args_count) { |
572
|
0 |
0 |
croak("%s needs %d argument%s; %d given", name, args_count, (args_count > 1) ? "s" : "", given_args_count); |
580
|
2 |
4 |
if (returns_count > 1) { |
581
|
2 |
0 |
if (GIMME_V == G_SCALAR) { |
|
0 |
2 |
if (GIMME_V == G_SCALAR) { |
590
|
4 |
6 |
for (unsigned a=0; a
|
598
|
1 |
5 |
if (res) croak("%s(): %s", name, res); |
600
|
5 |
0 |
if (GIMME_V == G_VOID) { |
|
1 |
4 |
if (GIMME_V == G_VOID) { |
607
|
9 |
4 |
for (unsigned r=0; r
|
614
|
0 |
4 |
if (res) croak("%s (m3_GetResults): %s", name, res); |
620
|
0 |
4 |
EXTEND(SP, returns_count); |
622
|
9 |
4 |
for (unsigned r=0; r
|
632
|
6 |
0 |
if (!SvROK(module_sv) || !sv_derived_from(module_sv, PERL_MODULE_CLASS)) { |
|
0 |
6 |
if (!SvROK(module_sv) || !sv_derived_from(module_sv, PERL_MODULE_CLASS)) { |
641
|
0 |
6 |
if (res) croak("%s", res); |
653
|
4 |
0 |
UV offset = (offset_sv && SvOK(offset_sv)) ? exs_SvUV(offset_sv) : 0; |
|
0 |
4 |
UV offset = (offset_sv && SvOK(offset_sv)) ? exs_SvUV(offset_sv) : 0; |
|
0 |
0 |
UV offset = (offset_sv && SvOK(offset_sv)) ? exs_SvUV(offset_sv) : 0; |
|
0 |
0 |
UV offset = (offset_sv && SvOK(offset_sv)) ? exs_SvUV(offset_sv) : 0; |
657
|
0 |
4 |
_WW3_CROAK_IF_NO_MODULE_LOADED(rt_sp); |
662
|
0 |
4 |
if (offset > memsize) { |
666
|
4 |
0 |
UV wantlen = (wantlen_sv && SvOK(wantlen_sv)) ? exs_SvUV(wantlen_sv) : (memsize - offset); |
|
0 |
4 |
UV wantlen = (wantlen_sv && SvOK(wantlen_sv)) ? exs_SvUV(wantlen_sv) : (memsize - offset); |
|
0 |
0 |
UV wantlen = (wantlen_sv && SvOK(wantlen_sv)) ? exs_SvUV(wantlen_sv) : (memsize - offset); |
|
0 |
0 |
UV wantlen = (wantlen_sv && SvOK(wantlen_sv)) ? exs_SvUV(wantlen_sv) : (memsize - offset); |
668
|
0 |
4 |
if (wantlen > (memsize - offset)) { |
682
|
0 |
0 |
const uint8_t* newbytes = (uint8_t*) SvPVbyte(new_content, newlen); |
686
|
0 |
0 |
_WW3_CROAK_IF_NO_MODULE_LOADED(rt_sp); |
691
|
0 |
0 |
if ((newlen + offset) > memsize) { |
707
|
0 |
0 |
_WW3_CROAK_IF_NO_MODULE_LOADED(rt_sp); |
722
|
0 |
7 |
_warn_if_global_destruct(self_sv, rt_sp); |
|
0 |
0 |
_warn_if_global_destruct(self_sv, rt_sp); |
725
|
7 |
0 |
if (userdata) { |
726
|
6 |
7 |
for (unsigned c=0; c < userdata->coderefs_count; c++) { |
736
|
7 |
0 |
if (rt_sp->env_sv) SvREFCNT_dec(rt_sp->env_sv); |
750
|
0 |
0 |
M3Result res = ix ? m3_CompileModule(mod) : m3_RunStart(mod); |
751
|
0 |
0 |
if (res) croak("%s", res); |
782
|
0 |
0 |
if (i_global) { |
797
|
12 |
0 |
if (i_global) { |
800
|
0 |
12 |
if (res) croak("%s", res); |
840
|
6 |
0 |
if (!SvROK(coderef) || (SVt_PVCV != SvTYPE(SvRV(coderef)))) { |
|
0 |
6 |
if (!SvROK(coderef) || (SVt_PVCV != SvTYPE(SvRV(coderef)))) { |
847
|
0 |
6 |
if (!rt) croak("No runtime set up!"); |
850
|
2 |
4 |
if (rt_userdata_p->coderefs_count) { |
851
|
0 |
2 |
Renew(rt_userdata_p->coderefs, 1 + rt_userdata_p->coderefs_count, SV*); |
868
|
0 |
6 |
if (res) croak("%s", res); |
878
|
0 |
8 |
SvGETMAGIC(value_sv); |
|
0 |
0 |
SvGETMAGIC(value_sv); |
880
|
0 |
8 |
if (SvROK(value_sv)) { |
886
|
0 |
8 |
if (!i_global) croak("Global ā%" SVf "ā not found!", name_sv); |
897
|
2 |
0 |
tagged_val.value.i32 = SvIV(value_sv); |
901
|
2 |
0 |
tagged_val.value.i64 = SvIV(value_sv); |
905
|
0 |
2 |
tagged_val.value.f32 = SvNV(value_sv); |
909
|
2 |
0 |
tagged_val.value.f64 = SvNV(value_sv); |
917
|
0 |
8 |
if (res) croak("%s", res); |
938
|
0 |
6 |
_warn_if_global_destruct(self_sv, mod_sp); |
|
0 |
0 |
_warn_if_global_destruct(self_sv, mod_sp); |
942
|
6 |
0 |
if (runtime_sv) { |