Caml1999T031Y\0Bt@<0CamlinternalLazyA(!t A3camlinternalLazy.mlR`hR`i@А!a@0@@@@@@%arrayH8@@M@A@A@@@@@@&_none_@@A@@@ $boolE8@@%false^@@ @$true_@@@@@A@@@@@@A@$charB8@@@A@@@@@@A@#exnG8@@AA@@@@@@@@5extension_constructorP8@@@A@@@@@ @@@%floatD8@@@A@@@@@$@@@*floatarrayQ8@@@A@@@@@(@@@#intA8@@@A@@@@@,@A@%int32L8@@@A@@@@@0@@@%int64M8@@@A@@@@@4@@@&lazy_tN8@@O@A@A@Y@@@@@=@@@$listI8@@P@A"[]a@@J@"::b@@@Q@@W@ @@A@Y@@@@@Z@@@)nativeintK8@@@A@@@@@^@@@&optionJ8@@S@A$Nonec@@k@$Somed@@r@@@A@Y@@@@@u@@@&stringO8@@@A@@@@@y@@@$unitF8@@"()`@@@@@A@@@@@@A@ .Assert_failure\ p@@@@Jm@@@@@@V@@A=ocaml.warn_on_literal_pattern@@0Division_by_zeroY @@@A  @+End_of_fileX !@@@A@'FailureU )@%@@A@0Invalid_argumentT 2@.@@A$#@-Match_failureR ;@:67@@\@@Aʠ21@ )Not_foundV I@@@AҠ:9@-Out_of_memoryS Q@@@AڠBA@.Stack_overflowZ Y@@@A⠰JI@.Sys_blocked_io[ a@@@A꠰RQ@)Sys_errorW i@e@@A󠰠[Z@:Undefined_recursive_module] r@qmn@@c@@Aih@ %bytesC8@@@A@@@@@@@@&StdlibE8@@@A@AO@B@@@B@B@G@B@@@RR``SR`u@@@@a@@@VR`eWR`g@@BA@8S@A@AZC@@@@Y@@@@@@@@@@Aг &lazy_tlR`o@А!afrR`lsR`n@@@i"@@$@@$#@0kjjkkkkk@h@@)Undefined BTwTw@ @@@ATww@@A@@@@T@ @0~~@}3@@@ࠠ/raise_undefined VV@@@&Stdlib#Obj!t@@@C@0@,&@@@డp#Obj$reprVV@@!a@(!@@@.@@-)%identityAA @@@'obj.mliYY@@+Stdlib__ObjB@@@@(@@C@C@@C@C@@C@C@@@@C@@C@9@@@%paramgĠ"()VV@8;@@@U@@@@A@@A@@=@@@@$P@@డ%raiseVV@@#exnG@@@!a@@@&%raiseAA @@@*stdlib.mli^BB^Bg@@v@@@@@@E@JC@E@@E@|@@ภ)Undefined+V,V@8s@@@@@@A@A@@@ @@2@@F@F@@@;@@@@A;VB[>R@@@@B#arg@C@@@@C@@@C@0@Wo.@@@@#blkk@[>T[>W@@@@@0@+[>>o@@@@ @г(&lazy_t[>_[>e@А*/[>Z[>^@@@65@@@ @@[>S[>f@@@>!@@@@\io\iv@@@G@@@PC@C@C@NC@@@0@9H?@B@E@@@'closurel@б@г$unit\i\i@@ @@@@@А#arg#\i\i@@@ (@@!@@21A@@@0@@@/@@(@డ#Obj#obj2\iz3\i@@@@@0!a@$@@/)%identityAA~@@@}Z~Z@@|C@@@@@E@@@@D@aC@C@@D@D@E@@E@[@@డ$#Obj%fieldh\ii\i@@@@@E@#intA@@@D@@@C@@B@@A*%obj_fieldBA@@@@j<<j<i@@J@@@@@F@@@@F@@@F@@F@@F@@@డ]#Obj$repr\i\i@@@@@@G@G@@@G@@G@@@ఐ#blk\i\i@@@@@\i\i@@#@@G@@@@\i\i@@]@@G@G@ G@@@\i\i@@9@@F@@@@б@г@@@@@А@@@@@\iy\i@@@D@@@\ik@@డ#Obj)set_field]]@@e@@@L@@@@K@p@@@J$unitF@@@I@@H@@G@@F.%obj_set_fieldCAU@@@@@V{  W{  ?@@UK$#@@@@@D@@!@@D@@@@D@ @@D@@D@@D@@D@0'&&'''''@52D@G@BF@@@@డ#Obj$reprE]F]@@@@@@E@>E@2@@E@1@E@0!@@ఐ#blk]]^]@_@@.@@a]b]@@@@E@;4@@@m]n]@@m@@E@+E@FE@ED@@ఐ預/raise_undefined]]@"@@@@E@*E@JE@IX@@ @@@@C@MD@)_@@ࠠ&resultm__@@@0@n@@@ఐ'closure__@x@@@@@D@Q@D@P@@ภͰ__@@@@@@E@VE@Z"@@@@#@@_ @@ఐ,make_forward`  ` @J@@@@@D@b@u@@D@ah@@D@`@D@_@D@^0@I@D@G@@@@డ#Obj$repr` ` #@?@@@QP@@E@E@tb@@E@s@E@r!@@ఐO#blk ` $ ` '@ @@.@@` ` (@@u@@E@}4@@డ#Obj$repr#` *$` 2@o@@@-@@E@@E@K@@ఐ&result5` 36` 9@U@@?X@@9` ):` :@@@@E@^@@o@@@@C@D@ld@ఐ&resultKa<@La<F@k@@Un@@@Vo@@@W@ࠠ!enXbGNYbGO@@@@@D@@@@ࠠ'raise_eohcS[icSb@@@@@@D@0eddeeeee@?@@@@@H@@@డ?#Obj$reprcSecSm@ϰ@@@@@@D@D@@D@D@@D@D@@@D@@D@(@@@pĠcSscSu@@@@@8@@డo%raisecSycS~@@@@@@F@,D@F@@F@M@@ఐo!ecScS@W@@@@G@G@G@a@@! @@b@@AcSncS@@MD@g@@U@@kh@@cSW@@@ࠠ#tagqii@@@w@@@D@0@~@@I@@@డ#Obj#tagii@@f@@@:@@@9@@8,caml_obj_tagA@H@@@G^H^@'noallocN^O^@@R^ @@PG@@@@@D@7@@D@@D@6@@డ#Obj$repr2i3i@~@@@@@E@E@@@E@@E@S@@ఐ#blkJiKi@L@@`@@NiOi@@@@E@f@@W@@kg@@Ui@@డ!"<>cjdj@@!a@@$boolE@@@'@@&@@%)%notequalBAf@@@@fg@@R@@@@@D@ D@@@@D@@D@@D@0~~@@@J@@@@ఐ#tagjj@@@@@డd#Obj(lazy_tagjj@9@@@@U  U  @@X  @@4E@ ,@@@@@@D@ E@3@డ%raisembhmbm@ǰ@@@@@D@ E@@C@ D@ D@ @D@ K@@ภ)Undefinedmbnmbw@@@@@@E@ E@ \@@!@@]@@j @@_@డ#Obj)set_fieldny}ny@@@@`@@D@ @@@D@ @j@@D@ @@D@ @D@ @D@ @D@ @@డ#Obj$reprnyny@g@@@yx@@E@ @E@ 4@@E@ 3@E@ 2@@ఐw#blk3ny4ny@5@@@@7ny8ny@@@@E@ =@@@CnyDny@@C@@E@ -E@ HE@ G@@ఐ'raise_eVnyWny@i@@@@E@ ,E@ LE@ K@@j @@@@C@ OD@ +@డ-%raiseoopo@p@@@p@@C@ S~C@C@ R@C@ Q@@ఐ-!eo@@@@@D@ XD@ ZD@ Y@@ @@@@@@@@@=@@@@@#@@^@@0@c@@@@@@@@@@AA@@@@ ]0@@@@@@@頰@ࠠ4force_val_lazy_blockrss@@@@J#arg@ `C@ b@@@ hC@ _@@ aC@ ^0@ "@@D@@@@#blkt@ss@@@@@ i0@-sx  @@@@ @г*&lazy_ts s @А,1ss @@@87@@@ d @@ss @@@@!@@@@t  t  @@@Q@@@ wRC@ lC@ BC@ C@ o@@ v0@9H?@B@L@@@'closureu@б@г$unitt  Ft  J@@ @@@ n@@А#arg#%t  N&t  R@@@ (@@ p!@@21A@@@0@@@ y/@@ x(@డ#Obj#obju W @߰@@@@E@ E@ E@ X@@n @@@@C@ D@ ^@@ࠠ&resultv Wv   Xv  @@@W0 O N N O O O O O@k@@@ఐT'closure dv   ev  @u@@@l@@D@ k@D@ @@ภ tv   uv  @@@@|@@E@ E@ "@@@@|#@@ ~v   @@ఐ?,make_forward w   w  @@@@@@@D@ @/@@D@ "@@D@ @D@ @D@ 0        @I@D@ N@@@@డi#Obj$repr w   w  @@@@@@E@ 6E@ *@@E@ )@E@ (!@@ఐ#blk w   w  @@@.@@ w   w  @@/@@E@ 34@@డ#Obj$repr w   w  @)@@@F@@E@ A@E@ @K@@ఐ&result w   w  @U@@X@@ w   w  @@Y@@E@ K^@@o@@n@@C@ VD@ "d@ఐ&result x  1@j2@@m@~3@@n@4@@@05@@@@6@@@@A7A@@_W@@ X0        @>@@@@<@<;@T@ࠠ%forcew      @@@@ #arg@ [C@ ]@@@ cC@ Z@@ \C@ Y0 $ # # $ $ $ $ $@t@@ ?K@@@@#lzvy@ =   >  @@@@@ d0 8 7 7 8 8 8 8 8@- G   HL 1 L@@@@ @г*&lazy_t T   U  @А,1 Z   [  @@@87@@@ _ @@ b   c  @@@@!@@@ࠠ#lzvz nG f l oG f o@@@ON@@@ D@ h0 l k k l l l l l@5D;@>@ P@@@డ C#Sys/opaque_identity G f r G f @@!a@ k@@ {'%opaqueAA @@@'sys.mliy/)/)y/)/X@@+Stdlib__SysS@@@-D@ }@D@ |)@@ఐq#lzv G f  G f @3@@:6@@'@@7@@ G f h@@@ࠠ!xĠ H   H  @@@ #@@@ D@ 0        @LZT@U@ Q@@@డ #Obj$repr H   H  @ @@@@@D@ D@  A@@D@ @D@ @@ఐ|#lzv H   H  @(@@+@@@@/,@@ H  @@@ࠠ!tŠ I   I  @@@@@@ D@ 0        @ANH@I@ R@@@డ #Obj#tag I   I  @@@@ {@@D@ 1@@D@ @D@ @@ఐm!x 'I   (I  @%@@ @@E@ E@ E@ /@@  @@30@@ 3I   @@డ != ?J   @J  @@!a@@@@@$@@#@@"&%equalBA @@@@@ @y Ay@@ Q@@@s@@C@ C@ @@@C@ @C@ @C@ 0 Y X X Y Y Y Y Y@cpj@k@ tS@@@@ఐx!t rJ   sJ  @@@@@డ >#Obj+forward_tag J   J  @@@@@ Y;; Y;P@@ \  @@4D@ ,@@@@@@C@ D@ 2@డ ^#Obj#obj J   J  @p@@@ @@C@ C@ C@ gC@ aC@ @C@ M@@డ |#Obj%field J   J  @X@@@ )@@D@ @X@@D@  1@@D@ @D@ @D@ l@@ఐ !x J   J  @ذ@@ E@@E@ E@ E@ @@@ J   J  @@@@E@ E@ E@ @@ J   J  @@ [@@D@ @@Y@А#argSC@  J   J  @@ J   J  @@@@డ "<> K   K  @@@@2@@C@ C@ @@@C@ @C@ @C@ @@ఐ3!t -K   .K  @ɰ@@@@డ #Obj(lazy_tag =K   >K  @@@'D@ @@@@@@C@ D@ @డ #Obj#obj TK   UK  &@ "@@@ @@C@ C@ @C@ @@ఐ!x hK  ' iK  (@f@@ @@D@ D@ D@ @@ @А#argC@  {K  + |K  /@@ ~K   K  0@@@@ఐ ꠐ0force_lazy_block L 1 8 L 1 H@ΰ@@@ @@C@ @C@ /@@ఐ/#lzv L 1 IV@ڰW@@ @@D@ D@ D@ C@@`@@D@ K  b@@1F@ J  d@@H@ze@@@f@@@g@@8@@ANhA@@@@ 0        @o@@@@m@ml@@ࠠ)force_valƠ O O S O O \@@@@ a#arg@ C@ @@@ "C@ @@ C@ 0        @@@ O@@@@#lzvȠ@ O O ^ O O a@@@@@ #0        @- O O O T6@@@@ @г*&lazy_t O O i O O o@А,1 O O d O O h@@@87@@@  @@ O O ] O O p@@@@!@@@ࠠ!xɠ P s y P s z@@@ {@@@ 4D@ '0        @4C:@=@ *U@@@డ #Obj$repr *P s } +P s @ v@@@ih@@D@ 7D@ + @@D@ *@D@ )@@ఐe#lzv BP s  CP s @(@@+@@@@/,@@ GP s u@@@ࠠ!tʠ RQ   SQ  @@@n@@@ CD@ 90 O N N O O O O O@ANH@I@ jV@@@డ &#Obj#tag jQ   kQ  @m@@@ @@D@ =@@D@ <@D@ ;@@ఐm!x Q   Q  @%@@ @@E@ DE@ HE@ G/@@  @@30@@ Q   @@డ UXZ R   R  @W@@@@@C@ WC@ N@X@@C@ M@C@ L@C@ K0        @LYS@T@ W@@@@ఐa!t R   R  @@@@@డ #Obj+forward_tag R   R  @A@@+D@ X#@@@@@@C@ ZD@ V)@డ #Obj#obj R   R  @ @@@ C@@C@ `C@ C@ &C@ C@ _@C@ ^D@@డ #Obj%field R   R  @ @@@ a@@D@ m@ @@D@ l i@@D@ k@D@ j@D@ ic@@ఐ!xR  R  @@@ }@@E@ }E@ E@ w@@@#R  $R  @@ @@E@ |E@ E@ @@-R  .R  @@ @@D@ {@@Y@А#argSC@ [;R  <R  @@>R  ?R  @@@@డ "<>LS  MS  @@@@j@@C@ C@ @@@C@ @C@ @C@ @@ఐ!teS  fS  @@@@@డ 1#Obj(lazy_taguS  vS  @Ͱ@@'D@ @@@@@@C@ D@ @డ H#Obj#objS S  @ Z@@@ @@C@ C@ @C@ @@ఐ!xS  S @F@@ @@D@ D@ D@ @@ @А#argC@  S S @@S S @@@@ఐ4force_val_lazy_blockTT2@@@@@@C@ @C@ &@@ఐ#lzvT3@@@*@@D@ D@ D@ :@@@@;@S  @@1=@R  @@?@Z@@@@@@@AA@@#@@ 0@@@@@@@@ A@ s mB@ ^ @  k@ Y7@S@$@@:@;@ T@@0@+D@@@&lazy_tN!a@ @@@ @@ @4camlinternalLazy.mli]TT]Ts@@0CamlinternalLazyEB@!a@ @@@ @@ @\88\8S@@D@(!a@ @@@ @@ @&Z  'Z 6@@%C}@:!a@ @@@ @@ @8X9X @@7B@ H************************************************************************OA@@PA@L@ H UBMMVBM@ H OCaml [C\C@ H aDbD3@ H Damien Doligez, projet Para, INRIA Rocquencourt gE44hE4@ H mFnF@ H Copyright 1997 Institut National de Recherche en Informatique et sGtG@ H en Automatique. yHzHg@ H IhhIh@ H All rights reserved. This file is distributed under the terms of JJ@ H the GNU Lesser General Public License version 2.1, with the KKN@ H special exception on linking described in the file LICENSE. LOOLO@ H MM@ H************************************************************************NN5@ # Internals of forcing lazy values. P77P7^@ ' Assume [blk] is a block with tag lazy ZZ=@  The allocation of [raise_e] below can result in concurrent/asynchronous code execution, and modify [blk] itself. We protect against this scenario by checking that the [set_field] below only happens on [Lazy_tag] blocks, to preserve type-safety. dh@ o #13434: at this point we believe that [e] must be [Undefined], but the reasoning is rather delicate. kl#a@ ' Assume [blk] is a block with tag lazy rr@ [force] is not used, since [Lazy.force] is declared as a primitive whose code inlines the tag tests of its argument, except when afl instrumentation is turned on. {  } m @  Using [Sys.opaque_identity] prevents two potential problems: - If the value is known to have Forward_tag, then its tag could have changed during GC, so that information must be forgotten (see GPR#713 and issue #7301) - If the value is known to be immutable, then if the compiler cannot prove that the last branch is not taken it will issue a warning 59 (modification of an immutable value) @  F , e@@<)../ocamlc0-strict-sequence(-absname"-w8+a-4-9-41-42-44-45-48-70"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal,-safe-string/-strict-formats"-cא 1/home/barsac/ci/builds/workspace/bootstrap/stdlib @09Is]*_Ÿ0@@@8CamlinternalFormatBasics0cEXy,W:(-Stdlib__Int320eoq,hZs+Stdlib__Obj0>_3 Ic}+Stdlib__Sys0Xn*T?n @@AH@@ m p@@@@? h@X@}@@@@@/@@@G d@@P@D@@@>@@AB x@X@@_@!@@Ay@@@B$A@@CD