UNPKG

@grain/binaryen.ml

Version:

OCaml bindings for Binaryen.

140 lines (121 loc) 4.53 kB
//Provides: caml_binaryen_module_create //Requires: Binaryen function caml_binaryen_module_create() { return new Binaryen.Module(); } //Provides: caml_binaryen_module_dispose function caml_binaryen_module_dispose(wasm_mod) { return wasm_mod.dispose(); } //Provides: caml_binaryen_module_parse //Requires: Binaryen //Requires: caml_jsstring_of_string function caml_binaryen_module_parse(text) { return Binaryen.parseText(caml_jsstring_of_string(text)); } //Provides: caml_binaryen_module_print //Requires: caml_string_of_jsstring //Requires: caml_ml_output, caml_ml_string_length function caml_binaryen_module_print(wasm_mod) { var text = wasm_mod.emitText(); var chanid = 1; // stdout var s = caml_string_of_jsstring(text); caml_ml_output(chanid, s, 0, caml_ml_string_length(s)); } //Provides: caml_binaryen_module_print_asmjs //Requires: caml_string_of_jsstring //Requires: caml_ml_output, caml_ml_string_length function caml_binaryen_module_print_asmjs(wasm_mod) { var asm = wasm_mod.emitAsmjs(); var chanid = 1; // stdout var s = caml_string_of_jsstring(asm); caml_ml_output(chanid, s, 0, caml_ml_string_length(s)); } //Provides: caml_binaryen_module_print_stack_ir //Requires: caml_string_of_jsstring, caml_js_from_bool //Requires: caml_ml_output, caml_ml_string_length function caml_binaryen_module_print_stack_ir(wasm_mod, optimize) { var stackir = wasm_mod.emitStackIR(caml_js_from_bool(optimize)); var chanid = 1; // stdout var s = caml_string_of_jsstring(stackir); caml_ml_output(chanid, s, 0, caml_ml_string_length(s)); } //Provides: caml_binaryen_module_validate function caml_binaryen_module_validate(wasm_mod) { return wasm_mod.validate(); } //Provides: caml_binaryen_module_optimize function caml_binaryen_module_optimize(wasm_mod) { return wasm_mod.optimize(); } //Provides: caml_binaryen_module_run_passes //Requires: caml_jsstring_of_string, caml_list_to_js_array function caml_binaryen_module_run_passes(wasm_mod, passes) { return wasm_mod.runPasses( caml_list_to_js_array(passes).map(caml_jsstring_of_string) ); } //Provides: caml_binaryen_module_auto_drop function caml_binaryen_module_auto_drop(wasm_mod) { return wasm_mod.autoDrop(); } //Provides: caml_binaryen_module_write //Requires: to_option //Requires: caml_jsstring_of_string, caml_string_of_jsstring, caml_bytes_of_array function caml_binaryen_module_write(wasm_mod, sourceMapUrl) { if (sourceMapUrl) { var url = caml_jsstring_of_string(sourceMapUrl[1]); var obj = wasm_mod.emitBinary(url); var sourceMap = obj.sourceMap != null ? caml_string_of_jsstring(obj.sourceMap) : null; return [0, caml_bytes_of_array(obj.binary), to_option(sourceMap)]; } else { var binary = wasm_mod.emitBinary(); return [0, caml_bytes_of_array(binary), 0]; } } //Provides: caml_binaryen_module_write_text //Requires: caml_string_of_jsstring function caml_binaryen_module_write_text(wasm_mod) { var text = wasm_mod.emitText(); return caml_string_of_jsstring(text); } //Provides: caml_binaryen_module_write_stack_ir //Requires: caml_string_of_jsstring, caml_js_from_bool function caml_binaryen_module_write_stack_ir(wasm_mod, optimize) { var text = wasm_mod.emitStackIR(caml_js_from_bool(optimize)); return caml_string_of_jsstring(text); } //Provides: caml_binaryen_module_read //Requires: Binaryen //Requires: caml_uint8_array_of_bytes function caml_binaryen_module_read(bytes) { var data = caml_uint8_array_of_bytes(bytes); return Binaryen.readBinary(data); } //Provides: caml_binaryen_module_interpret function caml_binaryen_module_interpret(wasm_mod) { return wasm_mod.interpret(); } //Provides: caml_binaryen_module_add_debug_info_filename //Requires: caml_jsstring_of_string function caml_binaryen_module_add_debug_info_filename(wasm_mod, filename) { return wasm_mod.addDebugInfoFileName(caml_jsstring_of_string(filename)); } //Provides: caml_binaryen_module_get_debug_info_filename function caml_binaryen_module_get_debug_info_filename(wasm_mod, index) { return wasm_mod.getDebugInfoFileName(index); } //Provides: caml_binaryen_add_custom_section //Requires: caml_jsstring_of_string, caml_array_of_string function caml_binaryen_add_custom_section(wasm_mod, name, contents) { return wasm_mod.addCustomSection( caml_jsstring_of_string(name), caml_array_of_string(contents) ); } //Provides: caml_binaryen_module_update_maps function caml_binaryen_module_update_maps(wasm_mod) { // The JS version doesn't expose `update_maps` return; }