123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140let_=Callback.register"array_of_list"Array.of_listlet_=Callback.register"array_length"Array.lengthtypetmoduleFeature=structtypet=intexternalmvp:unit->t="caml_binaryen_feature_mvp"letmvp=mvp()externalatomics:unit->t="caml_binaryen_feature_atomics"letatomics=atomics()externalbulk_memory:unit->t="caml_binaryen_feature_bulk_memory"letbulk_memory=bulk_memory()externalmutable_globals:unit->t="caml_binaryen_feature_mutable_globals"letmutable_globals=mutable_globals()externalnontrapping_fp_to_int:unit->t="caml_binaryen_feature_nontrapping_fp_to_int"letnontrapping_fp_to_int=nontrapping_fp_to_int()externalsign_ext:unit->t="caml_binaryen_feature_sign_ext"letsign_ext=sign_ext()externalsimd128:unit->t="caml_binaryen_feature_simd128"letsimd128=simd128()externalexception_handling:unit->t="caml_binaryen_feature_exception_handling"letexception_handling=exception_handling()externaltail_call:unit->t="caml_binaryen_feature_tail_call"lettail_call=tail_call()externalreference_types:unit->t="caml_binaryen_feature_reference_types"letreference_types=reference_types()externalmultivalue:unit->t="caml_binaryen_feature_multivalue"letmultivalue=multivalue()externalgc:unit->t="caml_binaryen_feature_gc"letgc=gc()externalmemory64:unit->t="caml_binaryen_feature_memory64"letmemory64=memory64()externalrelaxed_simd:unit->t="caml_binaryen_feature_relaxed_simd"letrelaxed_simd=relaxed_simd()externalextended_const:unit->t="caml_binaryen_feature_extended_const"letextended_const=extended_const()externalstrings:unit->t="caml_binaryen_feature_strings"letstrings=strings()externalmulti_memory:unit->t="caml_binaryen_feature_multi_memory"letmulti_memory=multi_memory()externalall:unit->t="caml_binaryen_feature_all"letall=all()endexternalcreate:unit->t="caml_binaryen_module_create"externaldispose:t->unit="caml_binaryen_module_dispose"externaladd_custom_section:t->string->string->unit="caml_binaryen_add_custom_section"externalparse:string->t="caml_binaryen_module_parse"externalprint:t->unit="caml_binaryen_module_print"externalprint_asmjs:t->unit="caml_binaryen_module_print_asmjs"externalprint_stack_ir:t->bool->unit="caml_binaryen_module_print_stack_ir"externalvalidate:t->int="caml_binaryen_module_validate"externaloptimize:t->unit="caml_binaryen_module_optimize"externalget_features:t->int="caml_binaryen_module_get_features"letget_featureswasm_mod=letfeatures_int=get_featureswasm_modinletrecsplit_features=function|0->[]|featurewhenfeatures_intlandfeature>0->feature::split_features(featurelsr1)|feature->split_features(featurelsr1)in(* Support 32-bit OCaml where integers are 31 bits *)(* This supports up to 31 Binaryen features *)split_features0x40000000externalset_features:t->int->unit="caml_binaryen_module_set_features"letset_featureswasm_modfeatures=set_featureswasm_mod(List.fold_left(lor)0features)externalrun_passes:t->Passes.tlist->unit="caml_binaryen_module_run_passes"externalauto_drop:t->unit="caml_binaryen_module_auto_drop"externalwrite:t->stringoption->bytes*stringoption="caml_binaryen_module_write"externalwrite_text:t->string="caml_binaryen_module_write_text"externalwrite_stack_ir:t->bool->string="caml_binaryen_module_write_stack_ir"externalread:bytes->t="caml_binaryen_module_read"externalinterpret:t->unit="caml_binaryen_module_interpret"externaladd_debug_info_filename:t->string->int="caml_binaryen_module_add_debug_info_filename"externalget_debug_info_filename:t->int->string="caml_binaryen_module_get_debug_info_filename"externalupdate_maps:t->unit="caml_binaryen_module_update_maps"