diff options
author | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 2014-01-10 07:53:33 +0000 |
---|---|---|
committer | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 2014-01-10 07:53:33 +0000 |
commit | 3b4d7cf63b889b86c33efcbbe79f9937b663b9f6 (patch) | |
tree | befe14b04b00480f16f1b79de58f38eba00936f4 /bytecomp/translobj.ml | |
parent | 4a25508fc253019e936460396328b22554f83050 (diff) | |
parent | d90b126bd428999d767ef4db4c5d3b05eb27c345 (diff) |
Merge module-alias branch (cf. PR#6063)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14394 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'bytecomp/translobj.ml')
-rw-r--r-- | bytecomp/translobj.ml | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/bytecomp/translobj.ml b/bytecomp/translobj.ml index 437c3d71e..7f0d8577e 100644 --- a/bytecomp/translobj.ml +++ b/bytecomp/translobj.ml @@ -20,7 +20,7 @@ open Lambda let oo_prim name = try - transl_path + transl_normal_path (fst (Env.lookup_value (Ldot (Lident "CamlinternalOO", name)) Env.empty)) with Not_found -> fatal_error ("Primitive " ^ name ^ " not found.") @@ -93,12 +93,19 @@ let prim_makearray = { prim_name = "caml_make_vect"; prim_arity = 2; prim_alloc = true; prim_native_name = ""; prim_native_float = false } +(* Also use it for required globals *) let transl_label_init expr = let expr = Hashtbl.fold (fun c id expr -> Llet(Alias, id, Lconst c, expr)) consts expr in + let expr = + List.fold_right + (fun id expr -> Lsequence(Lprim(Pgetglobal id, []), expr)) + (Env.get_required_globals ()) expr + in + Env.reset_required_globals (); reset_labels (); expr |