Caml1999I037G@Ӡ2Closure_conversion1lambda_to_flambda'backend,Backend_intf!S@@,module_ident%Ident!t@@@$size#intA@@@@&Lambda&lambda@@@'Flambda'program@@@@@@@@@@@@ )middle_end/flambda/closure_conversion.mlio ^ ^t  @@?B@@@T2Closure_conversion0͸oj9)Z$(Warnings0mJɒkgrs-Stdlib__Uchar056uf4[_+Stdlib__Sys0 -ռ鱦s5/.Stdlib__String08۠dwx)Parsetree0Uҩ=p>*%"e)Parameter0Kb"Qjʑǭ@uYu+Outcometree0euWS~d栠'Numbers00$ PS6?nu.0Mutable_variable0_ ?.+L$Misc0Z1X=_c)Longident0s `7mɕc(Location0a7cK_H%9)Load_path0I@18 ~,Linkage_name0h AEa.C1 R&Lambda0.Vu$ ^37Internal_variable_names0HdeՄL ԩ,Identifiable0~ܽǞ+%Ident0ki8' x%+Š*Freshening0$1\MmAʳ*Format_doc0]mWϓ:Mݠ'Flambda01Ux|ՍCb- )Export_id0Qh: "#Env0J=,Wu)Debuginfo0PtJ=^w/*Data_types0I'Ue`wq]Ѡ0Compilation_unit0i(&ۥ$P.*Cmi_format0_j~GB0.Closure_origin0aBzlt@*Closure_id0sM;@eAlx/Closure_element0.1 @1ѧU2Clambda_primitives01U10CamlinternalLazy0&͂7 Pˆ8CamlinternalFormatBasics0%FU(Q/Tu5Build_path_prefix_map0z HkGs,Backend_intf0)LSxjf1(Asttypes0>n{T8cئ/Allocated_const0ЖݔTW@@@Caml1999T037(f%C2Closure_conversion-ocaml.warning )middle_end/flambda/closure_conversion.mliQQ@2+a-4-9-30-40-41-42 QQ@@QQ@@@@@@QQ@3@@@@@@#intA;@@@A@@@@@&_none_@@A@A@$charB;@@A@@@@@@A@&stringQ;@@ A@@@@@ @@@%bytesC;@@A@@@@@@@@%floatD;@@A@@@@@@@@$boolE;@@%falsec@@@$trued@@#@@@A@@@@@$@A@$unitF;@@"()e@@.@@@A@@@@@/@A@ #exnG;@@@A@@@@@3@@@#effH;@@O@A@A@@@@@@<@@@,continuationI;@@Q@@P@B@A@nY@@@@@@K@@@%arrayJ;@@R@A@A@@@@@@U@@@ $listK;@@S@A"[]f@@b@"::g@@@T@@o@ @@A@Y@@@@@r@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AJA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@A[A@Y@@@@@@@@*atomic_locU;@@Z@AdA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@AϠ=ocaml.warn_on_literal_patternӐ@@0Division_by_zero]#@@@A٠  @+End_of_file\#$@@@Aᠰ@'FailureY#,@'@@A꠰@0Invalid_argumentX#5@0@@A󠰠$#@-Match_failureV#>@@=@9@;@@a@@A54@)Not_foundZ#O@@@A =<@-Out_of_memoryW#W@@@AED@.Stack_overflow^#_@@@AML@.Sys_blocked_io_#g@@@A$U'T'@)Sys_error[#o@j@@A-^0]0@:Undefined_recursive_modulea#x@@w@s@u@@h@@A>oAnA@:Continuation_already_takenb#@@@AFwIvI@&Stdlib@Azy@1lambda_to_flambdaՠo ^ bo ^ s@б'backendЙ,Backend_intf!S@,Backend_intfp t p t @ p t p t @@@@p t p t @@б,module_identг%Ident!t%Identq  q  @ q  q  @@@@@@ @@б$sizeг#intr  r  @@ @@@а@@б@г&Lambda&lambda&Lambdas  s  @ s  s  @@@@@@  @@г'Flambda'program'Flambdat  t  @ t  t  @@@@@@ @@@@@& @@F;@@r   @@fP@@ #q  @@r@@'p t y@@@*o ^ ^@)ocaml.doc  Generation of [Flambda] intermediate language code from [Lambda] code by performing a form of closure conversion. Function declarations (which may bind one or more variables identifying functions, possibly with mutual recursion) are transformed to [Set_of_closures] expressions. [Project_closure] expressions are then used to select a closure for a particular function from a [Set_of_closures] expression. The [Set_of_closures] expressions say nothing about the actual runtime layout of the closures; this is handled when [Flambda] code is translated to [Clambda] code. The following transformations are also performed during closure conversion: - Constant blocks (by which is meant things wrapped in [Lambda.Const_block]) are converted to applications of the [Pmakeblock] primitive. - [Levent] debugging event nodes are removed and the information within them attached to function, method and [raise] calls. - Tuplified functions are converted to curried functions and a stub function emitted to call the curried version. For example: let rec f (x, y) = f (x + 1, y + 1) is transformed to: let rec internal_f x y = f (x + 1,y + 1) and f (x, y) = internal_f x y (* [f] is marked as a stub function *) - The [Pdirapply] and [Prevapply] application primitives are removed and converted to normal [Flambda] application nodes. The [lambda_to_flambda] function is not re-entrant. 9S:n [ ]@@@@@@@FB@@*@@@@@@@2@"@@343344444@3$@A@ H************************************************************************PA@@QA@L@ H VBMMWBM@ H OCaml \C]C@ H bDcD3@ H Pierre Chambart, OCamlPro hE44iE4@ H Mark Shinwell and Leo White, Jane Street Europe nFoF@ H tGuG@ H Copyright 2013--2016 OCamlPro SAS zH{Hg@ H Copyright 2014--2016 Jane Street Group LLC IhhIh@ H JJ@ H All rights reserved. This file is distributed under the terms of KKN@ H the GNU Lesser General Public License version 2.1, with the LOOLO@ H special exception on linking described in the file LICENSE. MM@ H NN5@ H************************************************************************O66O6@ * Generation of [Flambda] intermediate language code from [Lambda] code by performing a form of closure conversion. Function declarations (which may bind one or more variables identifying functions, possibly with mutual recursion) are transformed to [Set_of_closures] expressions. [Project_closure] expressions are then used to select a closure for a particular function from a [Set_of_closures] expression. The [Set_of_closures] expressions say nothing about the actual runtime layout of the closures; this is handled when [Flambda] code is translated to [Clambda] code. The following transformations are also performed during closure conversion: - Constant blocks (by which is meant things wrapped in [Lambda.Const_block]) are converted to applications of the [Pmakeblock] primitive. - [Levent] debugging event nodes are removed and the information within them attached to function, method and [raise] calls. - Tuplified functions are converted to curried functions and a stub function emitted to call the curried version. For example: let rec f (x, y) = f (x + 1, y + 1) is transformed to: let rec internal_f x y = f (x + 1,y + 1) and f (x, y) = internal_f x y (* [f] is marked as a stub function *) - The [Pdirapply] and [Prevapply] application primitives are removed and converted to normal [Flambda] application nodes. The [lambda_to_flambda] function is not re-entrant. q@-./boot/ocamlc)-nostdlib"-I&./boot*-use-prims2runtime/primitives"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I2middle_end/flambda"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-c H/home/touraine/ci/builds/workspace/main/flambda/false/label/ocaml-arm-32 >10/.-,+*)('&%$#"! @@05KPdLy3@@@/Allocated_const0ЖݔTWŠ(Asttypes0>n{T8cئd0)LSxjf15Build_path_prefix_map0z HkGs8CamlinternalFormatBasics0%FU(Q/Tu0CamlinternalLazy0&͂7 Pˆ2Clambda_primitives01U110͸oj9)Z$/Closure_element0.1 @1ѧU*Closure_id0sM;@eAlx.Closure_origin0aBzlt@*Cmi_format0_j~GB00Compilation_unit0i(&ۥ$P.*Data_types0I'Ue`wq]Ѡ)Debuginfo0PtJ=^w/#Env0J=,Wu)Export_id0Qh: "'Flambda01Ux|ՍCb- *Format_doc0]mWϓ:Mݠ*Freshening0$1\MmAʳ%Ident0ki8' x%+Š,Identifiable0~ܽǞ+7Internal_variable_names0HdeՄL ԩ&Lambda0.Vu$ ^3,Linkage_name0h AEa.C1 R)Load_path0I@18 ~(Location0a7cK_H%9)Longident0s `7mɕc$Misc0Z1X=_c0Mutable_variable0_ ?.+L'Numbers00$ PS6?nu.+Outcometree0euWS~d栠)Parameter0Kb"Qjʑǭ@uYu)Parsetree0Uҩ=p>*%"e$Path0(|r>8۠dwx)Primitive0²~$xzT෠*Projection0n訥(2Set_of_closures_id0pi|ny6Set_of_closures_origin0{HO/Pؠ%Shape0mA;HXߠ3Simple_value_approx0P*+ K`#4MK0Static_exception0wBߝܔd3B&Stdlib0-i8Q"L{v;.Stdlib__Buffer08APF< t..Stdlib__Digest0l!LHgErζ .Stdlib__Domain0Bj|5s)ڠ.Stdlib__Either0Vy`u~c à.Stdlib__Format0ɢb tLir/Stdlib__Hashtbl0ѱN][/!-Stdlib__Int640l-J ~m-۠,Stdlib__Lazy0* -S$.)"0D.Stdlib__Lexing0e<.V +Stdlib__Map0hؤ5O8% By.Stdlib__Result06 ]/J+Stdlib__Seq0nwzG&amg+Stdlib__Set0kb'G|PIF(.Stdlib__String0s&Symbol0_)Ӷӥ!h#Tag0 %XC}{3.Type_immediacy0A^abOhՠ%Types0R.z78m)Unit_info0ڀh%(2Var_within_closure0H6ʤ(fc2ӉrH(Variable0]Eè0=(Warnings0mJɒkgr