@@ -386,10 +386,10 @@ let rec step (c : config) : config =
386
386
| SuspendTo (x , y ), vs ->
387
387
let tagt = tag c.frame.inst y in
388
388
let FuncT (ts, _) = func_type_of_tag_type c.frame.inst (Tag. type_of tagt) in
389
- let args, vs' = i32_split (Lib.List32. length ts) vs e.at in
389
+ let args, vs' = i32_split (Int32. add ( Lib.List32. length ts) 1l ) vs e.at in
390
390
let args, href =
391
- match Lib.List. lead args, Lib.List. last args with
392
- | args , Ref r -> args , r
391
+ match args with
392
+ | Ref r :: rest -> rest , r
393
393
| _ -> Crash. error e.at " type mismatch at suspend to"
394
394
in
395
395
vs', [Suspending (tagt, args, None , Some href, fun code -> code) @@ e.at]
@@ -428,8 +428,7 @@ let rec step (c : config) : config =
428
428
429
429
| ResumeWith (x , xls ), Ref (ContRef ({contents = Some (n , ctxt )} as cont )) :: vs ->
430
430
let hs = handle_table c xls in
431
- Printf. printf " arity: %s\n %!" (I32. to_string_u n);
432
- let args, vs' = i32_split (I32. sub n 1l ) vs e.at in
431
+ let args, vs' = i32_split (Int32. sub n 1l ) vs e.at in
433
432
let exception Name in
434
433
let name =
435
434
Ref (HandlerRef (ref (Some Name )))
0 commit comments