Caml1999I036G@Ӡ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_conversion0YW늡{(Warnings0;w.Q=1(Variable0*@wAà2Var_within_closure0/8S^a<)?)Unit_info08a AnMͼ %Types0#`O(ߍLF.Type_immediacy0GuQT@<=#Tag0H 0we` l&Symbol0!%%eEIm蠠%Subst09,+bmT-Stdlib__Uchar0d"W-x9.Stdlib__Domain0iW',P6wz.Stdlib__Digest0 Jjrڵ6.Stdlib__Buffer0_?K|/V>O}~Nࠠ&Stdlib0y{x!O!0Static_exception0=m 3Simple_value_approx0΍FU  t"%Shape0OĸT>b6Set_of_closures_origin05tQ]2Set_of_closures_id0fA*Projection0s&[\wIihIS S)Primitive0{mV|{J $Path09{ְZsv)Parsetree0Z<4$PC)Parameter0zo0:q۠+Outcometree0yl4>Yfܠ'Numbers0I3:+8Р0Mutable_variable0Ğ*5WB{y$Misc0  =73 Z )Longident0@#j,6.Nt蠠(Location0nݹV 2f-V )Load_path02&9Q҄;L,Linkage_name0"s_nظfS=&Lambda0 [, U(Z7Internal_variable_names08ߋA#99,Identifiable0XnAZ4eҠ%Ident0y43a$+*Freshening0%mma>V/*Format_doc0Mv9630A 'Flambda06>iz; 1)Export_id0F~=/M #Env0؞X:Fݗ))Debuginfo0.6硏]fSvi*Data_types0-k(.I70Compilation_unit0&G 0\jР*Cmi_format0KuEB젠.Closure_origin0$A2vJsf{#*Closure_id0\t#:Ն=Ġ/Closure_element0e G(^2Clambda_primitives0H_W— >y}UMܠ0CamlinternalLazy0;x#5䢜hLm8CamlinternalFormatBasics0oZ2t,ݠ5Build_path_prefix_map0gMOBnM`,Backend_intf0?oF9E(1CW!(Asttypes0E\eǥ]k6e/Allocated_const0$' Y`E&@@@Caml1999T036(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 J/home/ci-ocaml/builds64/workspace/main/flambda/false/label/ocaml-ppc-64-be >10/.-,+*)('&%$#"! @@05KPdLy3@@@/Allocated_const0$' Y`E&(Asttypes0E\eǥ]k6ed0?oF9E(1CW!5Build_path_prefix_map0gMOBnM`8CamlinternalFormatBasics0oZ2t,ݠ0CamlinternalLazy0;x#5䢜hLm2Clambda_primitives0H_W— >y}UMܠ10YW늡{/Closure_element0e G(^*Closure_id0\t#:Ն=Ġ.Closure_origin0$A2vJsf{#*Cmi_format0KuEB젠0Compilation_unit0&G 0\jР*Data_types0-k(.I7)Debuginfo0.6硏]fSvi#Env0؞X:Fݗ))Export_id0F~=/M 'Flambda06>iz; 1*Format_doc0Mv9630A *Freshening0%mma>V/%Ident0y43a$+,Identifiable0XnAZ4eҠ7Internal_variable_names08ߋA#99&Lambda0 [, U(Z,Linkage_name0"s_nظfS=)Load_path02&9Q҄;L(Location0nݹV 2f-V )Longident0@#j,6.Nt蠠$Misc0  =73 Z 0Mutable_variable0Ğ*5WB{y'Numbers0I3:+8Р+Outcometree0yl4>Yfܠ)Parameter0zo0:q۠)Parsetree0Z<4$PC$Path09{ְZsv)Primitive0{mV|{J *Projection0s&[\wIihIS S2Set_of_closures_id0fA6Set_of_closures_origin05tQ]%Shape0OĸT>b3Simple_value_approx0΍FU  t"0Static_exception0=m &Stdlib0y{x!O!.Stdlib__Buffer0_?K|/V>O}~Nࠠ.Stdlib__Digest0 Jjrڵ6.Stdlib__Domain0iW',P6wz.Stdlib__Either0FԤ) 4'>.Stdlib__Format0)n[-Ob/Stdlib__Hashtbl0^iaxG$+-Stdlib__Int640oTV/,Stdlib__Lazy0OM>x9