summaryrefslogtreecommitdiffstats
path: root/bytecomp/symtable.ml
diff options
context:
space:
mode:
Diffstat (limited to 'bytecomp/symtable.ml')
-rw-r--r--bytecomp/symtable.ml14
1 files changed, 10 insertions, 4 deletions
diff --git a/bytecomp/symtable.ml b/bytecomp/symtable.ml
index baff51c48..1cc3a5314 100644
--- a/bytecomp/symtable.ml
+++ b/bytecomp/symtable.ml
@@ -96,7 +96,7 @@ let require_primitive name =
if name.[0] <> '%' then ignore(num_of_prim name)
let all_primitives () =
- let prim = Array.create !c_prim_table.num_cnt "" in
+ let prim = Array.make !c_prim_table.num_cnt "" in
Tbl.iter (fun name number -> prim.(number) <- name) !c_prim_table.num_tbl;
prim
@@ -198,7 +198,7 @@ let gen_patch_object str_set buff patchlist =
gen_patch_int str_set buff pos (num_of_prim name))
patchlist
-let patch_object = gen_patch_object String.unsafe_set
+let patch_object = gen_patch_object Bytes.unsafe_set
let ls_patch_object = gen_patch_object LongString.set
(* Translate structured constants *)
@@ -226,7 +226,7 @@ let rec transl_const = function
(* Build the initial table of globals *)
let initial_global_table () =
- let glob = Array.create !global_table.num_cnt (Obj.repr 0) in
+ let glob = Array.make !global_table.num_cnt (Obj.repr 0) in
List.iter
(fun (slot, cst) -> glob.(slot) <- transl_const cst)
!literal_table;
@@ -300,7 +300,8 @@ let init_toplevel () =
Dll.init_toplevel dllpath;
(* Recover CRC infos for interfaces *)
let crcintfs =
- try (Obj.magic (sect.read_struct "CRCS") : (string * Digest.t) list)
+ try
+ (Obj.magic (sect.read_struct "CRCS") : (string * Digest.t option) list)
with Not_found -> [] in
(* Done *)
sect.close_reader();
@@ -383,3 +384,8 @@ let () =
| Error err -> Some (Location.error_of_printer_file report_error err)
| _ -> None
)
+
+let reset () =
+ global_table := empty_numtable;
+ literal_table := [];
+ c_prim_table := empty_numtable