summaryrefslogtreecommitdiffstats
path: root/bytecomp/translobj.ml
diff options
context:
space:
mode:
authorJacques Garrigue <garrigue at math.nagoya-u.ac.jp>2014-01-10 07:53:33 +0000
committerJacques Garrigue <garrigue at math.nagoya-u.ac.jp>2014-01-10 07:53:33 +0000
commit3b4d7cf63b889b86c33efcbbe79f9937b663b9f6 (patch)
treebefe14b04b00480f16f1b79de58f38eba00936f4 /bytecomp/translobj.ml
parent4a25508fc253019e936460396328b22554f83050 (diff)
parentd90b126bd428999d767ef4db4c5d3b05eb27c345 (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.ml9
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