File tree Expand file tree Collapse file tree 2 files changed +12
-15
lines changed Expand file tree Collapse file tree 2 files changed +12
-15
lines changed Original file line number Diff line number Diff line change @@ -648,15 +648,16 @@ end = struct
648
648
output_byte ch 0x0B
649
649
| Try (typ , l , catches ) ->
650
650
Feature. require exception_handling;
651
- output_byte ch 0x06 ;
651
+ output_byte ch 0x1f ;
652
652
output_blocktype st.type_names ch typ;
653
- List. iter ~f: ( fun i' -> output_instruction st ch i') l ;
653
+ output_uint ch ( List. length catches) ;
654
654
List. iter
655
- ~f: (fun (tag , l , ty ) ->
656
- output_byte ch 0x07 ;
655
+ ~f: (fun (tag , l , _ ) ->
656
+ output_byte ch 0x00 ;
657
657
output_uint ch (Hashtbl. find st.tag_names tag);
658
- output_instruction st ch ( Br (l + 1 , Some ( Pop ty))) )
658
+ output_uint ch l )
659
659
catches;
660
+ List. iter ~f: (fun i' -> output_instruction st ch i') l;
660
661
output_byte ch 0X0B
661
662
662
663
and output_instruction st ch i =
Original file line number Diff line number Diff line change @@ -445,17 +445,13 @@ let expression_or_instructions ctx st in_function =
445
445
]
446
446
| Try (ty , body , catches ) ->
447
447
[ List
448
- (Atom " try "
448
+ (Atom " try_table "
449
449
:: (block_type st ty
450
- @ List (Atom " do" :: instructions body)
451
- :: List. map
452
- ~f: (fun (tag , i , ty ) ->
453
- List
454
- (Atom " catch"
455
- :: index st.tag_names tag
456
- :: (instruction (Wasm_ast. Event Code_generation. hidden_location)
457
- @ instruction (Wasm_ast. Br (i + 1 , Some (Pop ty))))))
458
- catches))
450
+ @ List. map
451
+ ~f: (fun (tag , i , _ty ) ->
452
+ List [ Atom " catch" ; index st.tag_names tag; Atom (string_of_int i) ])
453
+ catches
454
+ @ instructions body))
459
455
]
460
456
and instruction i =
461
457
match i with
You can’t perform that action at this time.
0 commit comments