Caml1999I037„•¦¾sHó 2Closure_conversion ° 1lambda_to_flambdaØÐÀÁ'backendÀªÀ› ¡’,Backend_intf!S@õá@ò@õá@óÀÁ,module_identÀªÀ³¡’%Ident!t@@õá@ô@õá@õÀÁ$sizeÀªÀ³£#intA@@õá@ö@õá@÷ÀÁ@ÀªÀ³¡’&Lambda&lambda@@õá@ø@õá@ùÀ³¡’'Flambda'program@@õá@ú@õá@û@õá@ü@õá@ý@õá@þ@°À )middle_end/flambda/closure_conversion.mlio ^ ^Àt Ô è@@±GB@@@„•¦¾ªTëý  2Closure_conversion0lãЕ;Ö’ú•ÙM™¿çG  (Warnings0¹‘¡ûÓÉÎþEëf¹{²&Š  (Variable0?ÄÞÕæl猵ÇeY  2Var_within_closure0Œ``Ý—ÓXFì³R–ÿâ  )Unit_info0'Á¸›T•ø ¶Î§@aÂR  %Types0€"˜Í|VÈ·`ØX ù  .Type_immediacy00$ôÍ jÌbv\"õkö&  #Tag0‹&›Óbé… “ÊrÙ¹  &Symbol03ÉæE´?Yßö¦7÷‘(  %Subst0—’í=aëqT£/!p+  -Stdlib__Uchar0þ´=‹ÌH^®V9‚˜>ÌÉ  +Stdlib__Sys0öb÷'8ï=OðþIn  .Stdlib__String0 w_‡OA4D"Q~¾õ~  +Stdlib__Set0ø¯Ü”@Z8XäWåaŽa2  +Stdlib__Seq0 ?¯…¨72#š£[O  .Stdlib__Result0pŽ~ !Ô¥Â/”/²‚ö  +Stdlib__Map0*4ɇÂ2ù  .Stdlib__Domain0'Í¿‚Žo\¦0m’š¬.K  .Stdlib__Digest0#z25§ÆªÂ¶I*…  .Stdlib__Buffer0,å¦I÷ú[?¹Ä÷—z  &Stdlib0t0µVoS%{<‰F¡:  0Static_exception0JÕm¹yrqÜ’x-¸º8Éž  3Simple_value_approx0¼ Ãc[kð%»S\KÑ  %Shape0• À³M„´Î``ll§  6Set_of_closures_origin0!Y‹AÊë _’éXO¼   2Set_of_closures_id0L‰Èb£O`àÜ©&°öðM  *Projection02h‹ÂS xíj56  )Primitive0õÛdU˜=úÑ\IÆ/ø}  $Path0¸Ðk.tåb ûÃGêmá  )Parsetree0v Ýo[p÷…¯îÓY Y  )Parameter0zk^fË2mËÝy£ˆ£1Ù9  +Outcometree0B³u©Gê^)=¾ú 9c  'Numbers0 qàÞ·Heüš‡ù³–  0Mutable_variable0ÈC«ÁQâá·§£$òÜ´‰  $Misc0³¦–]·•\/j*^¿ÀÉe  )Longident0ØwP qÍ;°œ±É¡  (Location0–ÈnBÉŠÄOn?§ö7~Ø  )Load_path0Å,jÚ ¡ö" ¡–nn7Ý  ,Linkage_name0t–м†ÔˆïK¨1G«  &Lambda0=qvsûL EÚè    7Internal_variable_names0TbÁg€Ñ¹•äG+L›  ,Identifiable0ä]¡/­§*N »Ì ‡  %Ident0>®Ðƒ²Ðz€V)±j¢â  *Freshening0xWŸþ(¥"-9wõV¥öÔ  *Format_doc0¯æuy@½…GmWðUà  'Flambda0“¤æVåJíŒÎëÍŸª  )Export_id0ÕCJ9DןRaý7Ý·$E  #Env0g”ºïu{u9?‚Æ*a2¾@  )Debuginfo0_‹·Œí |Po†oÓGq  *Data_types0v\ò«É3Ï,¦S€ví¿hø  0Compilation_unit0òöD£lˆ ]wN  *Cmi_format0¿½8ص‹ Éz R«³^¸  .Closure_origin0!Hðaðvl³·¨Ú5"_  *Closure_id0 (—ïú‚?ª$ŽŽÏñ  /Closure_element0¢ Ç”‰¡¿f#M†ö  2Clambda_primitives0ïØ|&»” Á%ZIÇz  0CamlinternalLazy0é ÈzYØ#¾â #4²ñ#-  8CamlinternalFormatBasics0“…Ä|.e1R¾$½ŠÕ|o  5Build_path_prefix_map0DGl…Ê}Ã%Yÿ5µLhi  ,Backend_intf0žó‹š•LúQé:X^rà#  (Asttypes0ÁeT$B¹b‚RMü Ädc  /Allocated_const0—­/v«V˜ëÇŸøxšš@„•¦¾ @@Caml1999T037„•¦¾)3†‹C2Closure_conversion’° °ž° -ocaml.warning°À )middle_end/flambda/closure_conversion.mliQ„ˆÀQ„•@   À‘ ²2+a-4-9-30-40-41-42°À Q„—ÀQ„©@@°ÀQ„–ÀQ„ª@°@@@@@°ÀQ„„ÀQ„«@3 @@ @@@§²²²²²²²²²²²²²±±±±±±±±±±±±±±±±±±±±±@£#intA;@@“#intA@@@@@°À&_none_@@ÿA@A@’£$charB;@@“$charA@@@@@ @A@’£&stringQ;@@“&stringA@@@@@@@@’£%bytesC;@@“%bytesA@@@@@@@@’£%floatD;@@“%floatA@@@@@@@@’£$boolE;@@¢ à£%falsec@@%@’ à£$trued@@+@’@@A@@@@@,@A@’£$unitF;@@¢ à£"()e@@6@’@@A@@@@@7@A@’ £#exnG;@@@A@@@@@;@@@’£#effH; À@õá@O@A@A@ @ @@@@D@@@’£,continuationI; À@õá@Q À@õá@P@B“,continuationA@ n Y@ @ @@@@T@@@’£%arrayJ; À@õá@R@A“%arrayA@ @ @@@@_@@@’ £$listK; À@õá@S@A¢ à£"[]f@@l@’ à£"::g  À³ @@õá@T@@y@’ @@A@ Y@ @@@@|@@@’£&optionL; À@õá@V@A¢ à£$Noneh@@‰@’ à£$Somei @@@’@@A@ Y@ @@@@“@@@’£)nativeintM;@@“)nativeintA@@@@@™@@@’£%int32N;@@“%int32A@@@@@Ÿ@@@’£%int64O;@@“%int64A@@@@@¥@@@’£&lazy_tP; À@õá@X@A“&lazy_tA@ Y@ @@@@°@@@’ £5extension_constructorR;@@“5extension_constructorA@@@@@¶@@@’£*floatarrayS;@@“*floatarrayA@@@@@¼@@@’£&iarrayT; À@õá@Y@A“&iarrayA@ Y@ @@@@Ç@@@’ £*atomic_locU; À@õá@Z@A“*atomic_locA@ @ @@@@Ò@@@’ £.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@@A ° 5!4!@’£)Not_foundZ#O@@@A& ° =)<)@’£-Out_of_memoryW#W@@@A. ° E1D1@’£.Stack_overflow^#_@@@A6 ° M9L9@’£.Sys_blocked_io_#g@@@A> ° UATA@’£)Sys_error[#o@ j@@AG ° ^J]J@’£:Undefined_recursive_modulea#x@ À’  @w  @s  @u@õá@h@@AX ° o[n[@’£:Continuation_already_takenb#‰@@@A` ° wcvc@’’&Stdlib@A°•”@ °ð 1lambda_to_flambdaÕ °À±o ^ bÀ²o ^ s@б'backendЙÀ¡’,Backend_intf!S@ @ ¡ ,Backend_intf°ÀÆp t ‰ÀÇp t •@  °ÀÊp t –ÀËp t —@°@À›õá@{¹°ÀÐp t ÀÑp t ˜@@б,module_identг¡’%Ident!t ¡ %Ident°Àãq ™ «Àäq ™ °@  °Àçq ™ ±Àèq ™ ²@°@@À³@@õá@ ×° @@б$sizeг¹ #int°Àùr ³ ½Àúr ³ À@@À³ @@õá@ è°@@б@г¡’&Lambda&lambda ¡ &Lambda°Às Á ÆÀs Á Ì@  °Às Á ÍÀs Á Ó@°@@À³@@õá@ ü° @@г¡’'Flambda'program ¡ 'Flambda°À&t Ô ÙÀ't Ô à@  °À*t Ô áÀ+t Ô è@°@@À³@@õá@Ó° @@ÀÁ@Àª @õá@Ô@õá@Õ°( @@ÀÁHÀª?@õá@Ö @õá@×$°À;r ³ ¸@@ÀÁjÀªV@õá@Ø @õá@Ù*°ÀAq ™ ž@@ÀÁÀªy@õá@Ú @õá@Û0°ÀGp t y@@Ð@°ÀJo ^ ^ @ ° )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. °ÀYS­­ÀZn [ ]@@@@@@@±fB@@°2@ °    À‘ ²@@@@@@R@ °½"@@3TSSTTTTT@°S¿$@A@   H************************************************************************°ÀpA@@ÀqA@L@   H °ÀvBMMÀwBM™@   H OCaml °À|CššÀ}Cšæ@   H °À‚DççÀƒDç3@   H Pierre Chambart, OCamlPro °ÀˆE44À‰E4€@   H Mark Shinwell and Leo White, Jane Street Europe °ÀŽFÀFÍ@   H °À”GÎÎÀ•GÎ@   H Copyright 2013--2016 OCamlPro SAS °ÀšHÀ›Hg@   H Copyright 2014--2016 Jane Street Group LLC °À IhhÀ¡Ih´@   H °À¦JµµÀ§Jµ@   H All rights reserved. This file is distributed under the terms of °À¬KÀ­KN@   H the GNU Lesser General Public License version 2.1, with the °À²LOOÀ³LO›@   H special exception on linking described in the file LICENSE. °À¸MœœÀ¹Mœè@   H °À¾NééÀ¿Né5@   H************************************************************************°ÀÄO66ÀÅO6‚@   ¬* 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/builds/workspace/precheck/flambda/false/label/ocaml-ubuntu-latest    > 1 0 / . - , + * ) ( ' & % $ # " !     @@0ã¬ÏÕ5KÿPýÆdL•y3        @ @@  /Allocated_const0—­/v«V˜ëÇŸøxšš  (Asttypes0ÁeT$B¹b‚RMü Ädc  k0žó‹š•LúQé:X^rà#  5Build_path_prefix_map0DGl…Ê}Ã%Yÿ5µLhi  8CamlinternalFormatBasics0“…Ä|.e1R¾$½ŠÕ|o  0CamlinternalLazy0é ÈzYØ#¾â #4²ñ#-  2Clambda_primitives0ïØ|&»” Á%ZIÇz  Q0lãЕ;Ö’ú•ÙM™¿çG  /Closure_element0¢ Ç”‰¡¿f#M†ö  *Closure_id0 (—ïú‚?ª$ŽŽÏñ  .Closure_origin0!Hðaðvl³·¨Ú5"_  *Cmi_format0¿½8ص‹ Éz R«³^¸  0Compilation_unit0òöD£lˆ ]wN  *Data_types0v\ò«É3Ï,¦S€ví¿hø  )Debuginfo0_‹·Œí |Po†oÓGq  #Env0g”ºïu{u9?‚Æ*a2¾@  )Export_id0ÕCJ9DןRaý7Ý·$E  'Flambda0“¤æVåJíŒÎëÍŸª  *Format_doc0¯æuy@½…GmWðUà  *Freshening0xWŸþ(¥"-9wõV¥öÔ  %Ident0>®Ðƒ²Ðz€V)±j¢â  ,Identifiable0ä]¡/­§*N »Ì ‡  7Internal_variable_names0TbÁg€Ñ¹•äG+L›  &Lambda0=qvsûL EÚè    ,Linkage_name0t–м†ÔˆïK¨1G«  )Load_path0Å,jÚ ¡ö" ¡–nn7Ý  (Location0–ÈnBÉŠÄOn?§ö7~Ø  )Longident0ØwP qÍ;°œ±É¡  $Misc0³¦–]·•\/j*^¿ÀÉe  0Mutable_variable0ÈC«ÁQâá·§£$òÜ´‰  'Numbers0 qàÞ·Heüš‡ù³–  +Outcometree0B³u©Gê^)=¾ú 9c  )Parameter0zk^fË2mËÝy£ˆ£1Ù9  )Parsetree0v Ýo[p÷…¯îÓY Y  $Path0¸Ðk.tåb ûÃGêmá  )Primitive0õÛdU˜=úÑ\IÆ/ø}  *Projection02h‹ÂS xíj56  2Set_of_closures_id0L‰Èb£O`àÜ©&°öðM  6Set_of_closures_origin0!Y‹AÊë _’éXO¼   %Shape0• À³M„´Î``ll§  3Simple_value_approx0¼ Ãc[kð%»S\KÑ  0Static_exception0JÕm¹yrqÜ’x-¸º8Éž  &Stdlib0t0µVoS%{<‰F¡:  .Stdlib__Buffer0,å¦I÷ú[?¹Ä÷—z  .Stdlib__Digest0#z25§ÆªÂ¶I*…  .Stdlib__Domain0'Í¿‚Žo\¦0m’š¬.K  .Stdlib__Either0ÿH­D¥ë ˆ’Š?|é>  .Stdlib__Format0‡Áb Hœ›ñ»œvÉkR  /Stdlib__Hashtbl0²š±§(L%èŠbØøÕÔ  -Stdlib__Int640q=Êcú‚Æ×T?üQš1Ë  ,Stdlib__Lazy0ô$¸Àøå©ä1ùmlà  .Stdlib__Lexing0^Êmñ|©•Þð·e–¯´  +Stdlib__Map0*4ɇÂ2ùÌÉ  %Subst0—’í=aëqT£/!p+  &Symbol03ÉæE´?Yßö¦7÷‘(  #Tag0‹&›Óbé… “ÊrÙ¹  .Type_immediacy00$ôÍ jÌbv\"õkö&  %Types0€"˜Í|VÈ·`ØX ù  )Unit_info0'Á¸›T•ø ¶Î§@aÂR  2Var_within_closure0Œ``Ý—ÓXFì³R–ÿâ  (Variable0?ÄÞÕæl猵ÇeY  (Warnings0¹‘¡ûÓÉÎþEëf¹{²&Š@0lãЕ;Ö’ú•ÙM™¿çGAÀAC@@@@@@@@@@@@@°Ï@@@@P@@