aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel/nativevalues.ml
diff options
context:
space:
mode:
authorGravatar Maxime Dénès <mail@maximedenes.fr>2018-01-30 10:05:14 +0100
committerGravatar Maxime Dénès <mail@maximedenes.fr>2018-02-05 12:51:49 +0100
commit76579aff8f8534cbc990b5ea2652b33655512213 (patch)
tree9a4af0643f42d2643b487412f644a0ad3a14e47a /kernel/nativevalues.ml
parent55b2a4e0c24d691b71256c91ed54e245efce340b (diff)
[native_compute] Remove useless conversion to list in reification.
Diffstat (limited to 'kernel/nativevalues.ml')
-rw-r--r--kernel/nativevalues.ml12
1 files changed, 5 insertions, 7 deletions
diff --git a/kernel/nativevalues.ml b/kernel/nativevalues.ml
index ae66362ca..95a8fc5a4 100644
--- a/kernel/nativevalues.ml
+++ b/kernel/nativevalues.ml
@@ -153,8 +153,7 @@ let accu_nargs (k:accumulator) =
let args_of_accu (k:accumulator) =
let nargs = accu_nargs k in
let f i = (Obj.magic (Obj.field (Obj.magic k) (nargs-i+2)) : t) in
- let t = Array.init nargs f in
- Array.to_list t
+ Array.init nargs f
let is_accu x =
let o = Obj.repr x in
@@ -179,11 +178,10 @@ let force_cofix (cofix : t) =
let atom = atom_of_accu accu in
match atom with
| Acofix(typ,norm,pos,f) ->
- let f = ref f in
- let args = List.rev (args_of_accu accu) in
- List.iter (fun x -> f := !f x) args;
- let v = !f (Obj.magic ()) in
- set_atom_of_accu accu (Acofixe(typ,norm,pos,v));
+ let args = args_of_accu accu in
+ let f = Array.fold_right (fun arg f -> f arg) args f in
+ let v = f (Obj.magic ()) in
+ set_atom_of_accu accu (Acofixe(typ,norm,pos,v));
v
| Acofixe(_,_,_,v) -> v
| _ -> cofix