Caml1999I0372 $#7Inline_and_simplify_auxӠ#EnvO@!tV;@@@A@@@@@ .middle_end/flambda/inline_and_simplify_aux.mliXuwXu}@@@@@@A@&createW,never_inline$boolE@@@'backend,Backend_intf!S@@%round#intA@@@(ppf_dump&Stdlib&Format)formatter@@@?@@@@@@@@@@@@<` =e@@MA@@'backendX@@@@2!S@@@@@Pi  Qi 7@@aB@@4really_import_approxY@#@@@@3Simple_value_approx!t@@@!t@@@@@@@@nlon@@C@@%roundZ@A@@@X@@@@@@q  q  0@@D@@(ppf_dump[@S@@@`&Format)formatter@@@@@@t z |t z @@E@@#add\@h@@@@(Variable!t@@@@O!t@@@}@@@@@@@@@@y I Ky I @@F@@/add_outer_scope]@@@@@#!t@@@@p!t@@@@@@@@@@@@@{  {  @@G@@+add_mutable^@@@@@0Mutable_variable!t@@@@!t@@@@@@@@@@@@@~  ~  D@@ H@@(find_exn_@@@@@g!t@@@!t@@@@@@@@C  C  J@@)I@@0find_mutable_exn`@@@@@?!t@@@!t@@@@@@@@4F  5F  @@EJ@@%scopea;@@'CurrentO@@CH  DH  @@TL@%OuterP@@LH  MH  @@]M@@@A@@@@@PH  @@A@`K@A@3find_with_scope_exnb@"@@@@!t@@@@2@@@ࠠ@!t@@@@@@@@@@uJ  vJ  8@@N@@(find_optc@H@@@@!t@@@&optionL1!t@@@@@@@@@@@N  N  @@O@@-find_list_exnd@k@@@@$listK !t@@@@@@ Y!t@@@@@@@@@@@Q46Q4|@@P@@-does_not_binde@@@@@(/!t@@@@@@@@@@@@@@S~S~@@Q@@0does_not_freshenf@@@@@GN!t@@@@@@@@@@@@@@UU@@R@@*add_symbolg@@@@@&Symbol!t@@@@!t@@@@@@@@@@@@@!W"W'@@2S@@/redefine_symbolh@@@@@#!t@@@@!t@@@@@@@@@@ @@ @BX(*CX(k@@ST@@/find_symbol_exni@@@@ @D!t@@@ !t@@@ @@@@@^Yln_Yl@@oU@@/find_symbol_optj@1@@@@`!t@@@!t@@@@@@@@@@@ZZ@@V@@1find_symbol_fatalk@R@@@@!t@@@5!t@@@@@@@@[[1@@W@@3find_or_load_symboll@n@@@@!t@@@Q!t@@@@@@@@__@@X@@.add_projectionm@@@@ *projection*Projection!t@@@!(bound_to0!t@@@"@@@#@@$@@%@@&@b;=f@@Y@@/find_projectionn@@@@'*projection'!t@@@(kU!t@@@)@@@*@@+@@,@j  mG_@@Z@@#memo@@@@-@l!t@@@. @@@/@@0@@1@pp@@,[@@*fresheningp@@@@2*Freshening!t@@@3@@4@1uuw2uu@@B\@@.set_fresheningq@@@@5@!t@@@6@@@7@@8@@9@JxKx@@[]@@3activate_fresheningr@@@@: @@@;@@<@[~  \~ ,@@l^@@%locals@.@@@=1@@@>@@?@lm@@}_@@ "inside_set_of_closures_declarationt@6Set_of_closures_origin!t@@@@@I@@@Av@@@B@@C@@D@@@`@@+at_toplevelu@[@@@E@@@F@@G@|~|@@a@@0is_inside_branchv@m@@@H@@@I@@J@@@b@@,branch_depthw@@@@K@@@L@@M@@@c@@-inside_branchx@@@@N@@@O@@P@@@d@@6increase_closure_depthy@@@@Q@@@R@@S@@@e@@0set_never_inlinez@@@@T@@@U@@V@@@f@@ set_never_inline_inside_closures{@@@@W@@@X@@Y@XZX@@g@@ "unset_never_inline_inside_closures|@@@@Z@@@[@@\@@@$h@@ !set_never_inline_outside_closures}@@@@]@@@^@@_@$hj%h@@5i@@ #unset_never_inline_outside_closures~@@@@`@@@a@@b@56@@Fj@@,never_inline@@@@c5@@@d@@e@GxzHx@@Xk@@.inlining_level@@@@f1@@@g@@h@YZ@@jl@@1inlining_level_up@,@@@i/@@@j@@k@jk@@{m@@2actively_unrolling@=@@@l@!t@@@m`@@@n@@@o@@p@@q@4@@n@@8start_actively_unrolling@\@@@r@"!t@@@s@}@@@tm@@@u@@v@@w@@x@tvt@@o@@;continue_actively_unrolling@{@@@y@A!t@@@z@@@{@@|@@}@D@@p@@1unrolling_allowed@@@@~@Z!t@@@@@@@@@@@@@q@@8inside_unrolled_function@@@@@t!t@@@@@@@@@@@ o q o @@r@@0inlining_allowed@@@@@.Closure_origin!t@@@@@@@@@@@!!!!L@@!s@@7inside_inlined_function@@@@@!t@@@@@@@@@@@)!!*!!@@:t@@5note_entering_closure@@@@*closure_id*Closure_id!t@@@#dbg)Debuginfo!t@@@@@@@@@@@@@R""S#N#V@@cu@@2note_entering_call@%@@@*closure_id)!t@@@#dbg'!t@@@<@@@@@@@@@@w$^$`x$$@@v@@5note_entering_inlined@J@@@M@@@@@@%%%%@@w@@9note_entering_specialised@[@@@+closure_ids`#Set!t@@@j@@@@@@@@&&&&@@x@@-enter_closure@x@@@*closure_id|!t@@@-inline_inside@@@#dbg!t@@@!f@@@@!a@@@@@@@@@@@@@@((((@@y@@/record_decision@@@@@4Inlining_stats_types(Decision!t@@@$unitF@@@@@@@@):)<))@@ z@@%print@&Format)formatter@@@@@@@@@@@@@@@))))@@({@@4set_inline_debuginfo@@@@#dbg!t@@@@@@@@@@@2**3**@@C|@@5add_inlined_debuginfo@@@@#dbg!t@@@!t@@@@@@@@P +*+,Q +*+k@@a}@@@@TV$$U +l+o@e~@@@Ӡ&ResultP@!t;@@@A@@@@@d,=,?e,=,E@@@@u@A@&create@y@@@\@@@]@@^@w,G,Ix,G,_@@@@@&approx@@@@_%!t@@@`@@a@,,,,@@A@@*set_approx@#@@@b@;!t@@@c.@@@d@@e@@f@----@@B@@+meet_approx@<@@@g@!t@@@h@\!t@@@iO@@@j@@k@@l@@m@".."..@@C@@6used_static_exceptions@]@@@n0Static_exception#Set!t@@@o@@p@&/Y/[&/Y/@@D@@4use_static_exception@u@@@q@!t@@@r@@@s@@t@@u@)//)/0 @@E@@0exit_scope_catch@@@@v@2!t@@@w@@@x@@y@@z@.00.01@@ F@@'benefit@@@@{-Inlining_cost'Benefit!t@@@|@@}@'211(211@@8G@@+map_benefit@@@@~@@'Benefit!t@@@$'Benefit!t@@@@@@@@@@@@@L62628M922@@]H@@+add_benefit@@@@@?'Benefit!t@@@@@@@@@@@g=22h=23-@@xI@@-reset_benefit@@@@@@@@@@xA33yA33@@J@@6set_inlining_threshold@@@@@o)Threshold!t@@@@@@"@@@@@@@@C33D34 @@K@@6add_inlining_threshold@0@@@@)Threshold!t@@@=@@@@@@@@E4 4F4,4S@@L@@6sub_inlining_threshold@K@@@@)Threshold!t@@@X@@@@@@@@G4T4VH4s4@@M@@2inlining_threshold@f@@@Q)Threshold!t@@@@@@@@@I44I44@@N@@7seen_direct_application@@@@@@@@@@K44K45@@ O@@7num_direct_applications@@@@@@@@@@ L55 L55,@@P@@@@ +q+qM5-50@!Q@@@:initial_inlining_thresholdQ%round@@@)Threshold!t@@@@@@)P5W5W*P5W5@@:R@@ #initial_inlining_toplevel_thresholdR%round@@@)Threshold!t@@@@@@BS55CT56 @@SS@@ #prepare_to_simplify_set_of_closuresS#env!t@@@/set_of_closures'Flambda/set_of_closures@@@.function_decls 5function_declarations@@@'freshen`@@@6only_for_function_decl"4function_declaration@@@@@@@#Map!t@9.specialised_to@@@ܠ@9!t@@@@@@@@ޠ@#Map!tR.specialised_to@@@@@@ڠ@[5function_declarations@@@ؠ@#Map!tc!t@@@@@@נ@l5value_set_of_closures@@@ՠ@ !t@@@@@@@@@@@@@@@@V6"6"a8N8Y@@T@@;prepare_to_simplify_closureT-function_decl4function_declaration@@@)free_varsL#Map!t@.specialised_to@@@砠@!t@@@@@@@@0specialised_argsk#Map!t.specialised_to@@@@@@8parameter_approximations~#Map!t!t@@@@@@3set_of_closures_env!t@@@!t@@@@@@@@@@@@@@ ?c8[8[ @i99@@ PU@@/keep_body_checkU/is_classic_mode >@@@)recursive &$Lazy!t#Set!t@@@@@@@!t@@@@4function_declaration@@@ f@@@@@@@@@@@@ xk99 yp:):2@@ V@@@^7Inline_and_simplify_aux0#%ۈR bF(Warnings0mJɒkgrs-Stdlib__Uchar056uf4[_+Stdlib__Sys0 -ռ鱦s5/.Stdlib__String0Vê>)Longident0s `7mɕc(Location0a7cK_H%9)Load_path0I@18 ~,Linkage_name0EwKсڊs&Lambda0z1x]&ZT7Internal_variable_names0HdeՄL ԩ4Inlining_stats_types0|Ca~T E~O-Inlining_cost0,30`JD:G2P͠,Identifiable0 {d\FX'`%Ident0">WA+9*X*Freshening0/^*b1R*Format_doc0]mWϓ:Mݠ'Flambda0Idvu ")Export_id0-bw+LO#Env0zV L{YWI)Debuginfo0PtJ=^w/*Data_types0I'Ue`wq]Ѡ0Compilation_unit0 {p-Vg_*Cmi_format0c˯7͗ԩmݠ.Closure_origin0vˆtT{(}z*Closure_id05:z[ކ/Closure_element0YWZ̡Q.hV&2Clambda_primitives01U10CamlinternalLazy0&͂7 Pˆ8CamlinternalFormatBasics0%FU(Q/Tu5Build_path_prefix_map0z HkGs,Backend_intf0)LSxjf1(Asttypes0>n{T8cئ/Allocated_const0ЖݔTW@@@Caml1999T037'6C7Inline_and_simplify_aux-ocaml.warning .middle_end/flambda/inline_and_simplify_aux.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@*ocaml.textT p Environments and result structures used during inlining and simplification. (See inline_and_simplify.ml.) ST"@@@@@@#Env/AV$+V$.@~@@БA+!tBXu|Xu}@@;@@@A@@@@@Xuw@)ocaml.doc 8 Environments follow the lexical scopes of the program. W57W5t@@@@@@@@@@@@@A@@@@@@@@3@@A#@&create` `@б,never_inlineг$boola(a,@@ @@@3@D>@A@@б'backendЙ,Backend_intf!S@,Backend_intfb-Db-P@ b-Qb-R@@@@"b-<b-S@@б%roundг砐#int'cTa(cTd@@ @@@5@@б(ppf_dumpг&Format)formatter+n@@@.l@p C Obtain the really_import_approx function from the backend module. ;k9;~  ?@@@@@@4 @@гg!t ~  C!~  D@@ @@@A@@@@@D@@@.@@G6 @@@M@@JP@@@1~  @s ( Like [add], but for mutable variables. >}  ?}  @@@@@@@KH@@!@@@@@@@i(find_exnLUC  VC  @б@г!t`C  "aC  #@@ @@@3ONNOOOOO@8@A@@б@гh!t(VariableuC  'vC  /@ yC  0zC  1@@@@@@ @@г!t3Simple_value_approxC  5C  H@ C  IC  J@@@@@@0 @@@@@3$ @@@9@@6< @@@C  @ Find the approximation of a given variable, raising a fatal error if the environment does not know about the variable. Use [find_opt] instead if you need to catch the failure case. @ F HB  @@@@@@@I@@@r@@@@@@U0find_mutable_exnMF  F  @б@г!tF  F  @@ @@@3@n8@A@@б@г!t0Mutable_variableF  F  @ F  F  @@@@@@ @@г!t3Simple_value_approxF  F  @ F  F  @@@@@@ 0 @@@@@!3$ @@@9@@"6< @@@ F  @M - Like [find_exn], but for mutable variables. E L NE L @@@@@@@%J@@@]ߐ@@@@@@UA+%scopeNC0H  1H  @@;@@'CurrentO@@:H  ;H  @@GL@%OuterP@@CH  DH  @@PM@@@A@@@@@GH  @@A@SK@@#@@@@@#SH  @@@@@@A@@@3?>>?????@N@A@3find_with_scope_exnQ`J  aJ  @б@г!tkJ  lJ  @@ @@@)3ZYYZZZZZ@F@@A@@б@гs!t(VariableJ  J  @ J  J  @@@@@@* @@В@гf%scopeJ  J  @@ @@@++@@@г!t3Simple_value_approxJ  #J  6@ J  7J  8@@@@@@,C @@@@ @ @@-J% @@@6 @@.M>@@@S@@/PV@@@J  @@N@@@@V(find_optRN  N  @б@г !tN  N  @@ @@@03@o@A@@б@г!t(VariableN  N  @ N  N  @@@@@@1 @@гI&optionN  N  @г !t3Simple_value_approxN  N  @ N  N  @@@@@@2: @@@ @@@4?@@@+@@5B3 @@@H@@6EK#@@@&N  &@h y Like [find_exn], but intended for use where the "not present in environment" case is to be handled by the caller. 3L : <4M  @@@@@@@@O@@6@x@@@@@@d-find_list_exnSJQ4:KQ4G@б@г!tUQ4JVQ4K@@ @@@73DCCDDDDD@}8@A@@б@г̠$listfQ4ZgQ4^@гg!t(VariabletQ4OuQ4W@ xQ4XyQ4Y@@@@@@8$ @@@ @@@:)@@г$listQ4xQ4|@г!t3Simple_value_approxQ4bQ4u@ Q4vQ4w@@@@@@;I @@@ @@@=N@@@,@@>Q8 @@@W@@?TZ#@@@Q46&@󐠠 / Like [find_exn], but for a list of variables. P  P 3@@@@@@@P@@6@@@@@@@s-does_not_bindTS~S~@б@г'!tS~S~@@ @@@@3@8@A@@б@гW$listS~S~@г!t(VariableS~S~@ S~S~@@@@@@A$ @@@ @@@C)@@г$boolS~S~@@ @@@D6@@@@@E9 @@@?@@F<B @@@$S~@@0Q@@@@B0does_not_freshenU/U0U@б@г!t:U;U@@ @@@G3)(()))))@[p@A@@б@г$listKULU@гL!t(VariableYUZU@ ]U^U@@@@@@H$ @@@ @@@J)@@г$boolpUqU@@ @@@K6@@@@@L9 @@@?@@M<B @@@~U@@R@@@@B*add_symbolgWW@б@г۠!tWW@@ @@@N3@[p@A@@б@г&Symbol!t&SymbolWW@ WW @@@@@@ @@б@г!t3Simple_value_approxW W @ W!W"@@@@@@4 @@г!tW&W'@@ @@@A@@@@@D@@@.@@G6 @@@M@@JP@@@W@@S@@@@P/redefine_symbolhX(.X(=@б@гC!tX(@X(A@@ @@@3@i~@A@@б@гh!t&Symbol X(E X(K@  X(L X(M@@@@@@ @@б@г'!t3Simple_value_approx )X(Q *X(d@  -X(e .X(f@@@@@@2 @@г!t ;X(j <X(k@@ @@@?@@@@@B@@@.@@E6 @@@K@@HN@@@ LX(*@@ XT@@@@N/find_symbol_exni WYlr XYl@б@г!t bYl cYl@@ @@@3 Q P P Q Q Q Q Q@g|@A@@б@г!t&Symbol wYl xYl@  {Yl |Yl@@@@@@ @@г!t3Simple_value_approx Yl Yl@  Yl Yl@@@@@@0 @@@@@3$ @@@9@@6< @@@ Yln@@ U@@@@</find_symbol_optj Z Z@б@г!t Z Z@@ @@@3        @Uj@A@@б@г"!t&Symbol Z Z@  Z Z@@@@@@ @@г &&option Z Z@г!t3Simple_value_approx Z Z@  Z Z@@@@@@: @@@ @@@?@@@+@@B3 @@@H@@EK#@@@ Z&@@ V@@(@@K1find_symbol_fatalk [ [@б@г`!t [  [ @@ @@@3        @dy@A@@б@г!t&Symbol .[ /[@  2[ 3[@@@@@@ @@гB!t3Simple_value_approx D[ E[/@  H[0 I[1@@@@@@0 @@@@@3$ @@@9@@6< @@@ W[@@ cW@@@@<3find_or_load_symboll b_ c_@б@г!t m_ n_@@ @@@3 \ [ [ \ \ \ \ \@Uj@A@@б@г!t&Symbol _ _@  _ _@@@@@@ @@г!t3Simple_value_approx _ _@  _ _@@@@@@0 @@@@@3$ @@@9@@6< @@@ _@@ X@@@@<.add_projection b;A b;O@б@г !t cPW cPX@@ @@@3        @Uj@A@@б*projectionг*Projection!t*Projection dYk dYu@  dYv dYw@@@@@@} @@б(bound_toг!t(Variable ex ex@  ex ex@@@@@@~8 @@г M!t f f@@ @@@E@@'@@H ex @@G1@@L dY` @@@S@@PV@@@ b;=@ [ > Note that the given [bound_to] holds the given [projection].  &a 'a:@@@@@@@ 3Y@@#@ k 퐠@@@@@@o/find_projection =j  >j @б@г !t Hk& Ik'@@ @@@3 7 6 6 7 7 7 7 7@8@A@@б*projectionг!t*Projection _l(: `l(D@  cl(E dl(F@@@@@@ @@г &option qmGY rmG_@гr!t(Variable mGN mGV@  mGW mGX@@@@@@< @@@ @@@A@@?+@@D l(/!@@@K@@HN$@@@ j  '@ ڐ d Determine if the environment knows about a variable that is bound to the given [projection].  h i@@@@@@@ Z@@7@  l@@@@@@g#mem p p@б@г !t p p@@ @@@3        @8@A@@б@г!t(Variable p p@  p p@@@@@@ @@г $bool p p@@ @@@'@@@@@*@@@0@@-3 @@@ p@ > F Whether the environment has an approximation for the given variable.  oac oa@@@@@@@ [@@@ N А@@@@@@L*freshening uu{ !uu@б@г r!t +uu ,uu@@ @@@3        @ez8@A@@г*Freshening!t*Freshening @uu Auu@  Duu Euu@@@@@@ @@@ @@# @@@ Puuw @ Return the freshening that should be applied to variables when rewriting code (in [Inline_and_simplify], etc.) using the given environment.  ]r ^t_t@@@@@@@ j\@@@  $@@@@@@<.set_freshening tx ux@б@г Ơ!t x x@@ @@@3 n m m n n n n n@Uj8@A@@б@гV!t*Freshening x x @  x x@@@@@@ @@г !t x x@@ @@@'@@@@@*@@@0@@-3 @@@ x@ D Set the freshening that should be used as per [freshening], above.  w w@@@@@@@ ]@@@  @@@@@@L3activate_freshening ~  ~ #@б@г *!t ~ & ~ '@@ @@@3        @ez8@A@@г 9!t ~ + ~ ,@@ @@@@@@@@@@@ ~   @ ? Causes every bound variable in code rewritten during inlining and simplification, using the given environment, to be freshened. This is used when descending into subexpressions substituted into existing expressions.  z } @@@@@@@ ^@@@ O ѐ@@@@@@1%local ! "@б@г s!t , -@@ @@@3        @J_8@A@@г !t ; <@@ @@@@@@@@@@@ F @ b Erase all variable approximation information and freshening information from the given environment. However, the freshening activation state is preserved. This function is used when rewriting inside a function declaration, to avoid (due to a compiler bug) accidental use of variables from outer scopes that are not accessible.  S.0 TZ@@@@@@@ `_@@@  @@@@@@1 "inside_set_of_closures_declaration j k@б@г6Set_of_closures_origin!t6Set_of_closures_origin { |@   @@@@@@3 o n n o o o o o@UjC@A @@б@г ؠ!t  @@ @@@@@г F$bool  @@ @@@@@@@@!@@@'@@$/ @@@ @  Determine whether the inliner is currently inside a function body from the given set of closures. This is used to detect whether a given function call refers to a function which exists somewhere on the current inlining stack.   @@@@@@@ `@@@  @@@@@@C+at_toplevel | |@б@г "!t | |@@ @@@3        @\|8@A@@г $bool | |@@ @@@@@@@@@@@ |~ @ 7 v Not inside a closure declaration. Toplevel code is the one evaluated when the compilation unit is loaded l{@@@@@@@a@@@ G ɐ@@@@@@10is_inside_branch@б@г k!t$%@@ @@@3@J_8@A@@г ۠$bool34@@ @@@@@@@@@@@> @@Jb@@ @@,branch_depthIJ@б@г !tTU@@ @@@3CBBCCCCC@1F@A@@г##intcd@@ @@@@@@@@@@@n @@zc@@ @@-inside_branchyz@б@г ˠ!t@@ @@@3srrsssss@1F@A@@г ڠ!t@@ @@@@@@@@@@@ @@d@@ @@6increase_closure_depth@б@г !t@@ @@@ 3@1F@A@@г !t@@ @@@ @@@@@ @@@ @@e@@ @@0set_never_inline@б@г +!t@@ @@@ 3@1F@A@@г :!t@@ @@@ @@@@@@@@ @ @ Mark that call sites contained within code rewritten using the given environment should never be replaced by inlined (or unrolled) versions of the callee(s).  !# @@@@@@@f@@@ PҐ@@@@@@1 set_never_inline_inside_closures"X^#X~@б@г t!t-X.X@@ @@@3@J_8@A@@г !t<X=X@@ @@@@@@@@@@@GXZ @ [ Equivalent to [set_never_inline] but only applies to code inside a set of closures. TU<W@@@@@@@ag@@@ @@@@@@1 "unset_never_inline_inside_closureskl@б@г !tvw@@ @@@3eddeeeee@J_8@A@@г ̠!t@@ @@@@@@@@@@@ @ Ґ ? Unset the restriction from [set_never_inline_inside_closures] @@@@@@@h@@@ d@@@@@@1 !set_never_inline_outside_closureshnh@б@г!thh@@ @@@3@J_8@A@@г!thh@@ @@@@@@@@@@@hj @ ] Equivalent to [set_never_inline] but does not apply to code inside a set of closures. Lg@@@@@@@i@@@+@@@@@@1 #unset_never_inline_outside_closures @б@гO!t @@ @@@3@J_8@A@@г^!t@@ @@@@@@@@@@@" @d @ Unset the restriction from [set_never_inline_outside_closures] /0@@@@@@@?@@@@@@3 @@гj!t#C$D@@ @@@4'@@@@@5*@@@0@@6-3 @@@1@s 6 Unroll a function currently actively being unrolled. >?@@@@@@@Kp@@@@@@@@@L1unrolling_allowedUV@б@г!t`a@@ @@@73ONNOOOOO@ez8@A@@б@г!t6Set_of_closures_originuv@ yz@@@@@@8 @@г/$bool@@ @@@9'@@@@@:*@@@0@@;-3 @@@@א d Whether it is permissible to unroll a call to a recursive function in the given environment. FH@@@@@@@q@@@i@@@@@@L8inside_unrolled_function o u o @б@г !t o  o @@ @@@<3@ez8@A@@б@г`!t6Set_of_closures_origin o  o @  o  o @@@@@@= @@г2!t o  o @@ @@@>'@@@@@?*@@@0@@@-3 @@@ o q@; t Whether the given environment is currently being used to rewrite the body of an unrolled recursive function.  > n@@@@@@@r@@@K͐@@@@@@L0inlining_allowedˠ!!!!,@б@гo!t(!!/)!!0@@ @@@A3@ez8@A@@б@г.Closure_origin!t.Closure_origin?!!4@!!B@ C!!CD!!D@@@@@@| @@г$boolQ!!HR!!L@@ @@@})@@@@@~,@@@2@@/5 @@@_!!@ Z Whether it is permissible to inline a call to a function in the given environment. l  m!!@@@@@@@ys@@@3@@@@@@N7inside_inlined_function̠!!!!@б@гՠ!t!!!!@@ @@@3}||}}}}}@g|8@A@@б@гf!t.Closure_origin!!!!@ !!!!@@@@@@ @@г!t!!!!@@ @@@'@@@@@*@@@0@@-3 @@@!!@ i Whether the given environment is currently being used to rewrite the body of an inlined function. !N!P!!@@@@@@@t@@@@@@@@@L5note_entering_closure"""#@б@г9!t####@@ @@@3@ez8@A@@б*closure_idг*Closure_id!t*Closure_id ##* ##4@ ##5##6@@@@@@ @@б#dbgг)Debuginfo!t)Debuginfo'#7#B(#7#K@ +#7#L,#7#M@@@@@@J: @@г!t9#N#U:#N#V@@ @@@KG@@)@@LJB#7#> @@I3@@MNF## @@@U@@NRX@@@L""@ If collecting inlining statistics, record that the inliner is about to descend into [closure_id]. This information enables us to produce a stack of closures that form a kind of context around an inlining decision point. Y!!Z""@@@@@@@fu@@#@ @@@@@@q2note_entering_callp$^$dq$^$v@б@г !t{$w$~|$w$@@ @@@O3jiijjjjj@8@A@@б*closure_idг!t*Closure_id$$$$@ $$$$@@@@@@P @@б#dbgг!t)Debuginfo$$$$@ $$$$@@@@@@Q6 @@г!t$$$$@@ @@@RC@@'@@SF$$ @@E1@@TJ$$ @@@Q@@UNT@@@$^$`@ If collecting inlining statistics, record that the inliner is about to descend into a call to [closure_id]. This information enables us to produce a stack of closures that form a kind of context around an inlining decision point. #X#[$;$]@@@@@@@v@@#@#@@@@@@m5note_entering_inlined%%%%@б@гG!t%%%%@@ @@@V3@8@A@@гV!t%%%%@@ @@@W@@@@@X@@@%% @\ If collecting inlining statistics, record that the inliner is about to descend into an inlined function call. This requires that the inliner has already entered the call with [note_entering_call]. '$$(%\%@@@@@@@4w@@@l@@@@@@19note_entering_specialised >&&?&&@б@г!tI&&J&&@@ @@@Y387788888@J_8@A@@б+closure_idsгX#Set!t*Closure_idd&&e&&@ h&&i&&@@m&&n&&@ @@@@@;%@@г !t{&&|&&@@ @@@<2@@0@@=5&& @@@<@@>9? @@@&&@̐ If collecting inlining statistics, record that the inliner is about to descend into a specialised function definition. This requires that the inliner has already entered the call with [note_entering_call]. %%&a&@@@@@@@x@@@^@@@@@@X-enter_closure!(( ((@б@г!t((!(("@@ @@@?3@q8@A@@б*closure_idг!t*Closure_id(#(5(#(?@ (#(@(#(A@@@@@@@ @@б-inline_insideг$bool(B(W(B([@@ @@@A-@@б#dbgг!t)Debuginfo(\(g(\(p@ (\(q(\(r@@@@@@BG @@б!fб@гZ!t(s(}(s(~@@ @@@CZ@@А!a@LD@Dc"(s(#(s(@@@ @@Eh@@А!al+((,((@@' @@Fq0(s(z@@E1@@Gu4(\(c @@ZO@@Hy8(B(I @@xd@@I}<(#(*@@@@@J@@@B((@  Update a given environment to record that the inliner is about to descend into [closure_id] and pass the resulting environment to [f]. If [inline_inside] is [false] then the environment passed to [f] will be marked as [never_inline] (see above). O&&P'(@@@@@@@\y@@'@@@@@@@/record_decision+f):)@g):)O@б@г!tq)P)Wr)P)X@@ @@@M3`__`````@8@A@@б@г4Inlining_stats_types(Decision!t4Inlining_stats_types)Y)`)Y)t@ )Y)u)Y)}@@)Y)~)Y)@ @@@@@s%@@г:$unit))))@@ @@@t2@@@@@u5 @@@;@@v8> @@@):)<@󐠠 If collecting inlining statistics, record an inlining decision for the call at the top of the closure stack stored inside the given environment. (()#)9@@@@@@@z@@@@@@@@@W%print,))))@б@гS&Format)formatter))))@ ))))@@@@@@w3@yA@A @@б@гA!t))))@@ @@@x@@г$unit))))@@ @@@y@@@@@z!@@@'@@{$/ @@@))@W : Print a human-readable version of the given environment. "))#))@@@@@@@/{@@@g鐠@@@@@@C4set_inline_debuginfo-9**:**@б@г!tD**E**@@ @@@|332233333@\z8@A@@б#dbgг6!t)Debuginfo[**\**@ _**`**@@@@@@} @@г!tm**n**@@ @@@~)@@'@@,v** @@@3@@06 @@@|**@ The environment stores the call-site being inlined to produce precise location information. This function sets the current call-site being inlined. ))**@@@@@@@|@@@P@@@@@@O5add_inlined_debuginfo. +*+0 +*+E@б@г!t +*+H +*+I@@ @@@3@h}8@A@@б#dbgг!t)Debuginfo +*+Q +*+Z@  +*+[ +*+\@@@@@@ @@г!t)Debuginfo +*+` +*+i@  +*+j +*+k@@@@@@2 @@0@@5 +*+M @@@<@@9? @@@ +*+,@. D Appends the locations of inlined call-sites to the [~dbg] argument  ** *+)@@@@@@@}@@ @>@@@@@@X@UOA@+@R@2@@}M@-@Q@J@@`@A@a@Z@w@W@@H@A@@1@* @  @  !@  @  B@ " @  @ n G@ ' @  @ | U@ 5 @  @  @  @ } V@ 6 @@@a:@@@~@^ @@y7@@s@S@@&@@\@<@8@@i@I@@@3jiijjjjj@@A{mV$1 +l+o@@@V$$@r@&ResultD +q+x +q+~@Q@@БA+!t0E,=,D,=,E@@;@@A@@@@@,=,?@萠 Result structures approximately follow the evaluation order of the program. They are returned by the simplification algorithm acting on an Flambda subexpression. ++,,<@@@@@@@@@@@@A@y@@@@@@@3@@ A@e@E@@Z@: @@k@@=@@A@@@4@@k@d@@O@H@@J@C @  a@ A @  @  K@ + @  @  Y@ 9 @  @  @  o@ h A@ : @  @  @ e >@ @@i@b;@@V@6@@r0@@j@J@`@@@@@@h&@@S@@@@A@&create1F,G,MG,G,S@б@г蠐$unitQ,G,VR,G,Z@@ @@@3@??@@@@@@@A@@г!t`,G,^a,G,_@@ @@@@@@@@@@@k,G,I @@w@@@ @@&approx2v,,w,,@б@гߠ!t,,,,@@ @@@3pooppppp@1F@A@@г!t3Simple_value_approx,,,,@ ,,,,@@@@@@ @@@@@! @@@,, @搠 M The approximation of the subexpression that has just been simplified. ,a,c,,@@@@@@@A@@@x@@@@@@:*set_approx3----@б@г1!t----@@ @@@3@Sh8@A@@б@г!t3Simple_value_approx----@ ----@@@@@@ @@гX!t----@@ @@@'@@@@@*@@@0@@-3 @@@--@J Set the approximation of the subexpression that has just been simplified. Typically used just before returning from a case of the simplification algorithm. ,,-p-@@@@@@@"B@@@Zܐ@@@@@@L+meet_approx4,"..-"..@б@г!t7"..8"..@@ @@@3&%%&&&&&@ez8@A@@б@г!t#EnvL"..M"..@ P"..Q"..@@@@@@ @@б@гb!t3Simple_value_approxd"..e"..@ h"..i"..@@@@@@2 @@гԠ!tv"..w"..@@ @@@?@@@@@B@@@.@@E6 @@@K@@HN@@@"..@ɐ Set the approximation of the subexpression to the meet of the current return approximation and the provided one. Typically used just before returning from a branch case of the simplification algorithm. --!..@@@@@@@C@@!@[@@@@@@g6used_static_exceptionsq&/Y/_&/Y/u@б@г!t&/Y/x&/Y/y@@ @@@3@8@A@@г0Static_exception#Set!t0Static_exception&/Y/}&/Y/@ &/Y/&/Y/@@&/Y/&/Y/@ @@@@@#@@@)@@&, @@@&/Y/[ @& g All static exceptions for which [use_staticfail] has been called on the given result structure. $..%/4/X@@@@@@@D@@@6@@@@@@E4use_static_exceptionr)// )//@б@гq!t)//)//@@ @@@3@^s8@A@@б@г^!t0Static_exception()//))/0@ ,)/0-)/0@@@@@@ @@г!t:)/0 ;)/0 @@ @@@'@@@@@*@@@0@@-3 @@@H)//@ 5 Mark that the given static exception has been used. U(//V(//@@@@@@@bE@@@@@@@@@L0exit_scope_catchsl.00m.01@б@гՠ!tw.01x.01@@ @@@3feefffff@ez8@A@@б@г!t0Static_exception.01.01@ .01.01@@@@@@ @@г!t.01.01@@ @@@'@@@@@*@@@0@@-3 @@@.00@ Mark that we are moving up out of the scope of a static-catch block that catches the given static exception identifier. This has the effect of removing the identifier from the [used_staticfail] set. +0 0-00@@@@@@@F@@@@@@@@@L'benefit211211@б@г9!t211211@@ @@@3@ez8@A@@г-Inlining_cost'Benefit!t-Inlining_cost211211@ 211211@@211211@ @@@@@#@@@)@@&, @@@ 211 @K w The benefit to be gained by inlining the subexpression whose simplification yielded the given result structure. 01!1#11d1@@@@@@@#G@@@[ݐ@@@@@@E+map_benefit-6262<.6262G@б@г!t872H2N972H2O@@ @@@3'&&'''''@^s8@A@@б@б@гa'Benefit!t-Inlining_costS82P2XT82P2e@ W82P2fX82P2m@@\82P2n]82P2o@ @@@@@%@@г'Benefit!t-Inlining_costr82P2ss82P2@ v82P2w82P2@@{82P2|82P2@ @@@@@D@@@%@@G2 @@гꠐ!t922922@@ @@@T@@@@@W82P2W @@@^@@[a @@@62628@ݐ ` Apply a transformation to the inlining benefit stored within the given result structure. 4115225@@@@@@@H@@@o@@@@@@z+add_benefit=22=23 @б@г(!t=23 =23 @@ @@@3@8@A@@б@г'Benefit!t-Inlining_cost=23=23@ =23=23&@@=23'=23(@ @@@@@#@@гX!t=23,=23-@@ @@@0@@@@@3 @@@9@@6< @@@=22@J Z Add some benefit to the inlining benefit stored within the given result structure. ;22<22@@@@@@@"I@@@Zܐ@@@@@@U-reset_benefit,A33-A33@б@г!t7A338A33@@ @@@3&%%&&&&&@n8@A@@г!tFA33GA33@@ @@@@@@@@@@@QA33 @ j Set the benefit of inlining the subexpression corresponding to the given result structure to zero. ^?3/31_@3x3@@@@@@@kJ@@@%@@@@@@16set_inlining_thresholduC33vC33@б@гޠ!tD33D33@@ @@@3onnooooo@J_8@A@@б@гڠ&optionD34D34@г)Threshold!t-Inlining_costD33D33@ D33D33@@D33D34@ @@@@@-@@@)@@@2&@@г!tD34 D34 @@ @@@?@@@@@B%@@@H@@EK @@@C33@@K@@@@K6add_inlining_thresholdE4 4E4 4)@б@гA!tF4,40F4,41@@ @@@3@dy@A@@б@г )Threshold!t-Inlining_costF4,45F4,4B@ F4,4CF4,4L@@F4,4MF4,4N@ @@@@@#@@гq!tF4,4RF4,4S@@ @@@0@@@@@3 @@@9@@6< @@@!E4 4@@-L@@@@<6sub_inlining_threshold,G4T4Z-G4T4p@б@г!t7H4s4w8H4s4x@@ @@@3&%%&&&&&@Uj@A@@б@г^)Threshold!t-Inlining_costPH4s4|QH4s4@ TH4s4UH4s4@@YH4s4ZH4s4@ @@@@@#@@гŠ!tgH4s4hH4s4@@ @@@0@@@@@3 @@@9@@6< @@@uG4T4V@@M@@@@<2inlining_thresholdI44I44@б@г預!tI44I44@@ @@@3zyyzzzzz@Uj@A@@г㠐&optionI44I44@г)Threshold!t-Inlining_costI44I44@ I44I44@@I44I44@ @@@@@+@@@)@@@0&@@@6@@39)@@@I44,@@N@@.@@97seen_direct_applicationK44K44@б@г:!tK44K44@@ @@@3@Rg@A@@гI!tK45K45@@ @@@@@@@@@@@K44 @@O@@ @@7num_direct_applicationsL55 L55!@б@гj!t L55$ L55%@@ @@@ 3@1F@A@@г۠#intL55)L55,@@ @@@ @@@@@ @@@&L55 @@2P@@ @@@A@@@m+@ @S@3@@o4@@9@@x@q&@@@~W@P)@@376677777@=R+@A'3:99:::::@@AR +q+SM5-50@@@U +q+q@@:initial_inlining_threshold_P5W5[`P5W5u@б%roundг,#intlP5W5~mP5W5@@ @@@ 3[ZZ[[[[[@@A@7@ @w@W@@=@@@`@@e>@@r@k @@@u@@@E@A.-@@г)Threshold!t-Inlining_costP5W5P5W5@ P5W5P5W5@@P5W5P5W5@ @@@@@ G@@XM@@JP5W5x @@@P5W5W @? Command line argument -inline O5252O525V@@@@@@@R@@@@@@@@@j #initial_inlining_toplevel_thresholdS55S55@б%roundг#intT56T56@@ @@@3@:@A@@г)Threshold!t-Inlining_cost T56 T56@  T56 T56@@ T56 T56 @ @@@@@!@@2'@@$ T55 @@@ S55 @_ ( Command line argument -inline-toplevel  *R55 +R55@@@@@@@ 7S@@@o񐠠@@@@@@D #prepare_to_simplify_set_of_closures  AV6"6& BV6"6I@б#envг!t#Env RW6J6S SW6J6V@  VW6J6W WW6J6X@@@@@@3 F E E F F F F F@hC@A @@б/set_of_closuresг'Flambda/set_of_closures'Flambda pX6Y6n qX6Y6u@  tX6Y6v uX6Y6@@@@@@  @@б.function_declsг5function_declarations'Flambda Y66 Y66@  Y66 Y66@@@@@@ 8 @@б'freshenг H$bool Z66 Z66@@ @@@ I@@б6only_for_function_declг&option [67 [67 @гQ4function_declaration'Flambda [66 [66@  [66 [67@@@@@@ m @@@ @@@ r@@В@г#Map!t(Variable \7 7@ \7 7H@  \7 7I \7 7L@@ \7 7M \7 7N@ @В@г.specialised_to'Flambda \7 7 \7 7@ !\7 7!\7 7&@@@@@@# @@@г!t3Simple_value_approx!\7 7)!\7 7<@ !\7 7=!\7 7>@@@@@@#İ @@@@ @ @@#˰* @@@U @@@#а!-\7 7B@@@г/#Map!t(Variable!?]7Z7w!@]7Z7@ !C]7Z7!D]7Z7@@!H]7Z7!I]7Z7@ @г.specialised_to'Flambda!W]7Z7`!X]7Z7g@ ![]7Z7h!\]7Z7v@@@@@@# @@@2@@@# @@@г5function_declarations'Flambda!t^77!u^77@ !x^77!y^77@@@@@@#" @@@г#Map!t(Variable!_77!_77@ !_77!_77@@!_77!_77@ @г!t3Simple_value_approx!_77!_77@ !_77!_77@@@@@@#V @@@2@@@#[@@@г5value_set_of_closures3Simple_value_approx!`88$!`887@ !`888!`88M@@@@@@$s @@@г 1!t#Env!a8N8T!a8N8W@ !a8N8X!a8N8Y@@@@@@$ @@@@Ġ@@u@?@(@@@$@@Q/@@$![66@@f[@@$!Z66@@p@@$"Y66!@@@@$"X6Y6^%@@@@$" W6J6O)@@@" V6"6",@@"T@@.@@;prepare_to_simplify_closure!"c8[8_"c8[8z@б-function_declг4function_declaration'Flambda")d8{8"*d8{8@ "-d8{8".d8{8@@@@@@$3""""""""@*@A @@б)free_varsг9#Map!t(Variable"Ie88"Je88@ "Me88"Ne88@@"Re88"Se88@ @В@г.specialised_to'Flambda"ee88"fe88@ "ie88"je88@@@@@@$ < @@@г{!t3Simple_value_approx"}e88"~e88@ "e88"e88@@@@@@$ T @@@@ @ @@$ [* @@@U @@@$ `"e88B@@б0specialised_argsг#Map!t(Variable"f89'"f89/@ "f890"f893@@"f894"f895@ @гR.specialised_to'Flambda"f89"f89@ "f89"f89&@@@@@@$ @@@2@@@$@@б8parameter_approximationsг#Map!t(Variable"g969j"g969r@ "g969s"g969v@@"g969w"g969x@ @г!t3Simple_value_approx"g969T"g969g@ "g969h#g969i@@@@@@$Ұ @@@2@@@$װ@@б3set_of_closures_envг!n!t#Env#h9y9#h9y9@ #h9y9#h9y9@@@@@@$ @@г!!t#Env#0i99#1i99@ #4i99#5i99@@@@@@$ @@0@@$ #>h9y9~ @@o;@@$#Bg969;@@z@@$#Ff88@@@@$#Je88@@1@@$#Nd8{8@@@#Qc8[8[@@#]U@@@@!/keep_body_check[#\k99#]k99@б/is_classic_modeг#$bool#il99#jl99@@ @@@$3#X#W#W#X#X#X#X#X@<\!@A@@б)recursiveг!$Lazy!t#m99#m99@ #m99#m99@@г#Set!t(Variable#m99#m99@ #m99#m99@@#m99#m99@ @@@@@&88@@@2@@@&:='@@б@г!t(Variable#n99#n9:@ #n9:#n9:@@@@@@&;U @@б@гc4function_declaration'Flambda#o:: #o::@ #o::#o::(@@@@@@&<m @@г#$bool#p:):.#p:):2@@ @@@&=z@@@@@&>}@@@.@@&?6 @@~J@@&@#m99@@@@&A#l99@@@#k99@@$V@@@@@"Y@ }@ y"S@@ s@@ m@@G@'@@@@@3########@@A@ H************************************************************************$A@@$A@L@ H $BMM$BM@ H OCaml $C$C@ H $$D$%D3@ H Pierre Chambart, OCamlPro $*E44$+E4@ H Mark Shinwell and Leo White, Jane Street Europe $0F$1F@ H $6G$7G@ H Copyright 2013--2016 OCamlPro SAS $10/.-,+*)('&%$#"! @@0-ZN3%q%p%p%q%q%q%q%q@%o@@/Allocated_const0ЖݔTWŠ(Asttypes0>n{T8cئ#0)LSxjf15Build_path_prefix_map0z HkGs8CamlinternalFormatBasics0%FU(Q/Tu0CamlinternalLazy0&͂7 Pˆ2Clambda_primitives01U1/Closure_element0YWZ̡Q.hV&*Closure_id05:z[ކ.Closure_origin0vˆtT{(}z*Cmi_format0c˯7͗ԩmݠ0Compilation_unit0 {p-Vg_*Data_types0I'Ue`wq]Ѡ)Debuginfo0PtJ=^w/#Env0zV L{YWI)Export_id0-bw+LO'Flambda0Idvu "*Format_doc0]mWϓ:Mݠ*Freshening0/^*b1R%Ident0">WA+9*X,Identifiable0 {d\FX'`%0#%ۈR bF-Inlining_cost0,30`JD:G2P͠q0|Ca~T E~O7Internal_variable_names0HdeՄL ԩ&Lambda0z1x]&ZT,Linkage_name0EwKсڊs)Load_path0I@18 ~(Location0a7cK_H%9)Longident0s `7mɕc$Misc0ob]6>Vê>0Mutable_variable0~emPs&Symbol0ҡ4d,#Tag0\݅}x.Type_immediacy0A^abOhՠ%Types0^Y~# )Unit_info0ڀh%(2Var_within_closure00SSJh6 (Variable0' Gr㠠(Warnings0mJɒkgr"@@@  ##@ W @h@#ِ$:@@ J  g @w!!b@ݰi@@ې=@\Ѱ  @  @@ ? @q@ʐ!@T"5#j#@  ,#y@/@@ 5 @"q! !@Lz@@@ #@P@ G  - @ !"@@ݐ5@@Co !$%@h@@d7 R @":"@*j@ n {@@@a@@@@Ő @@P@  l%%@@@P@@