package js_of_ocaml-compiler
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Compiler from OCaml bytecode to JavaScript
Install
dune-project
Dependency
Authors
Maintainers
Sources
js_of_ocaml-6.4.1.tbz
sha256=e59bbffcaefaba3191620556514b7f53bb3249e3f881a070d72724234dffd819
sha512=bb470f316f9c81a3b2b8dedd0b0f18f8e06beb48dd70df1d9f846de90ffab439cab5ef7a93a8166af0998068b06097e8319bc0d9f4f23a7159b0de8b3b515746
doc/src/js_of_ocaml-compiler.dynlink/js_of_ocaml_compiler_dynlink.ml.html
Source file js_of_ocaml_compiler_dynlink.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65open Js_of_ocaml_compiler.Stdlib open Js_of_ocaml_compiler module J = Jsoo_runtime.Js external get_bytecode_sections : unit -> Parse_bytecode.bytesections = "jsoo_get_bytecode_sections" external get_runtime_aliases : unit -> (string * string) list = "jsoo_get_runtime_aliases" external toplevel_init_compile : (string -> Instruct.debug_event list array -> unit -> J.t) -> unit = "jsoo_toplevel_init_compile" external toplevel_init_reloc : (Global_name.t -> int) -> unit = "jsoo_toplevel_init_reloc" let eval_ref = ref (fun (_ : string) -> failwith "toplevel: eval not initialized") let () = (match Sys.backend_type with | Sys.Other "js_of_ocaml" -> Config.set_target `JavaScript | Sys.(Native | Bytecode | Other _) -> failwith "Expected backend `js_of_ocaml`"); let aliases = get_runtime_aliases () in let global = J.pure_js_expr "globalThis" in Build_info.set_values (Build_info.config_keys `JavaScript) (Build_info.parse_config_string (Jsoo_runtime.Sys.Config.build_config ())); Linker.reset (); List.iter aliases ~f:(fun (a, b) -> Primitive.alias a b); (* this needs to stay synchronized with toplevel.js *) let toplevel_compile (s : string) (debug : Instruct.debug_event list array) : unit -> J.t = let s = Parse_bytecode.normalize_bytecode s in let prims = Array.of_list (Ocaml_compiler.Symtable.all_primitives ()) in let b = Buffer.create 100 in let fmt = Pretty_print.to_buffer b in Driver.configure fmt; Driver.from_string ~prims ~debug s fmt; Format.(pp_print_flush std_formatter ()); Format.(pp_print_flush err_formatter ()); flush stdout; flush stderr; let js = Buffer.contents b in !eval_ref js in let toplevel_eval (x : string) : unit -> J.t = let f : J.t = J.eval_string x in fun () -> let res = J.fun_call f [| global |] in Format.(pp_print_flush std_formatter ()); Format.(pp_print_flush err_formatter ()); flush stdout; flush stderr; res in let toc = get_bytecode_sections () in let sym : Ocaml_compiler.Symtable.GlobalMap.t = toc.symb in let toplevel_reloc (gn : Global_name.t) : int = match Ocaml_compiler.Symtable.GlobalMap.find gn sym with | i -> i | exception Not_found -> Ocaml_compiler.Symtable.reloc_ident (Global_name.to_string gn) in eval_ref := toplevel_eval; toplevel_init_compile toplevel_compile; toplevel_init_reloc toplevel_reloc
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>