Caml1999I031&Switch&sharedd8!a@@A&Shared  @@1lambda/switch.mli`BS`B_@@A&Single @@ `B` `Bn@@!B@@A@Y@@@@@`BB@@@@&@A@'t_storee8!a@#ctx@@B'act_get@@$unitF@@@%arrayH@@@@@7c8c@@MD.act_get_shared@@@@@[3@@@@@@@@OdPd@@eE)act_store@@:@A#intA@@@@@@@aebe@@wF0act_store_shared@@L@S@@@@@@@qfrf,@@G@@A@n@@@@@@ybppzf.@@@@CA@&Storedf!to8@@@A@@@@@iIKiIQ@@@@HA@#keyp8@@@A@@@@@jRTjR\@@@@IA@+compare_keyq@@@@@@@@K@@@@@@@@k]_k]@@J@(make_keyr@2@@@&optionJ"@@@@@@@@@ll@@K@@@h00m@L@)CtxStoredgNs8@@@A@@@@@M@@@JA@It8@@@A@@@@@H@@@EA@Du@ @@@@@@@C@@@@@@@@B@?@'contextv8@@@A@@@@@qq@@@@MA@(make_keyw@@@@@1@@@M*@@@@@@@@@@@rr@@$N@@@os@(O@Ӡ(CtxStoreh@!AnU(mk_storex@@@@!t@@@ؠ'context@@@@@@@@@?w=C@w=r@@UQ@@@CuDxsz@YR@@Ӡ%Storei@!Amԑ(mk_storey@1@@@1!t@@@Ӡ?@@@@@@@@@n|o|@@T@@@rz||s}@U@@!Sj)primitivez8@@@A@@@@@C / 3C / A@@@@VA@%eqint{@@@@E c gE c |@@W@%neint| @@@@F } F } @@X@%leint}@@@@G  G  @@Y@%ltint~%@@@@H  H  @@Z@%geint1@@@@I  I  @@[@%gtint=@@@@J  J  @@\@#loc8@@@A@@@@@M # 'M # /@@@@]A@#arg8@@@A@@@@@O T XO T `@@@@^A@$test8@@@A@@@@@Q  Q  @@@@_A@#act8@@@A@@@@@S  S  @@@@`A@$bind@#@@@@@@@@@@@@@@@@@@@@@ [   [  @@"a@*make_const@@@@!@@@@@@] B F] B a@@4b@+make_offset@/@@@@@@@8@@@@@@@@5`  6`  @@Kc@)make_prim@@@@@$listIQ@@@@@@o@@@@@@@@Sc i mTc i @@id@*make_isout@d@@@@i@@@@@@@@@@@ifjf+@@e@)make_isin@z@@@@@@@-@@@@@@@@ii@@f@/make_is_nonzero@@@@>@@@@@@ll@@@g@+arg_as_test@@@@O@@@@@@oo@@h@'make_if@]@@@@@@@@@@@@@@@@@@@@@qq.@@i@+make_switch@@@@@@@@@{@@@@@@@@@@@@@@@@@@@@@@@@@uu@@j@*make_catch@@@@@@@ˠ@@@@@@@@@@@@@@xx?@@k@)make_exit@@@@@@@@@@y@Cy@]@@.l@@@@z^c@2m@Ӡ$Makek@#Argl$zyva@#loc@@@j@@@@l@@@k@@m@#arg@@@n@!@@@q@@@p@@@o@@r@@@s@;8#act@@@u@@t@@@vA#act@@@w@@x@@y@@z@@{@@|@z{@@o@-test_sequence@Q#arg@@@}@\8@@@=@@@B@@@~@@@@@@vs#act@@@;@@@@{#act@@@@@@@@@@ew@@p@@@x@q@@@d8-&Switch0Ź=Z$xr%ՠ&Stdlib0yӶ~*8CamlinternalFormatBasics0cEXy@@0zyyzzzzz@w@A?>@A('t_storeBbpbp@А!a@0@N8@@@@@B@A@GG@BB@@@bppf.@@@@C@Abpvbpx@@aА#ctx@bpzbp~@@l@8% @B'act_get@@@@@7D@@@@@@cc@@D.act_get_shared@@-@@@PD@@@@@@@@@Űdd@@E)act_store@@AD@@bD@@@@@@@@Ͱee@@ F0act_store_shared@@UD@@vD@@@@@@@@ְff,@@!G@@A@n@@@@@@q@@@n@\\Nc@@Ш@б@г_$unit)c*c@@g@@гd%array2c3c@А!al9c:c@@@s @@z @@}@D@@p@llYCd@@Ш@б@гo$unitNdOd@@w@@гt%arrayWdXd@гy&shared`dad@А!a̰gdhd@@@ϰ @@@а@@Ѱ@@@D@@@tre@@Ш@б@А#ctx{e|e@@б@А!aee@@г#intee@@@@ @@@@@D@@@f@@Ш@б@А#ctxff@@б@А!a f!f#@@г#intf'f*@@@@ @@@@@D@@@@A@@@0@@A@б&StoredEh0<h0B@БA(!tCiIPiIQ@@8@@@A@@@@@iIK@@@@H@@A@@@0@;K@A@A(#keyDjRYjR\@@8@@@A@@@@@jRT@@@@I@@A@@@0@@A@+compare_keyk]ck]n@б@г#keyk]qk]t@@ @@@0@'!@A@@б@г-#keyk]xk]{@@ @@@@@г#intk]k]@@ @@@@@@@@!@@@'@@$* @@@)k]_@@7J@@@*(make_key4l5l@б@гp!t?l@l@@ @@@098899999@CX@A@@г&optionNlOl@гw#keyXlYl@@ @@@@@@@@@ @@@$@@!'@@@hl@@vK@@@'@A@A@J@C @@0hgghhhhh@0E@A 0kjjkkkkk@@Axh0Eym@@@{h00@0qppqqqqq@@A@б)CtxStoredHoo@БРנ&Storedpp@0@A@A@~@wA@@@-L@A@@F8@@@A@@@@@@@@A@F8@@@A@@@@@@@@A@@ @@@ @@@@ @@@ @@ @@ @@@@!@@@@@@@@@@@@m@k@@p>@@<?@A('contextGqq@@8@@@A@@@@@q@@@@M@@A@@@0@P@?<;87&%@A @(make_keyrr@б@г'contextrr@@ @@@0@*$@A@@б@гa!trr@@ @@@@@г&optionr r@гt#key'r(r @@ @@@(@@@@@@- @@@"@@0%@@@6@@39@@@:r@@HN@@@9@f`A@T @@098899999@AV@A 0<;;<<<<<@@AIoJs@@@Lo@0BAABBBBB@@A@(CtxStore!IYuZu%@@Т!AJdu&eu'@Р砐)CtxStoredmu(nu1@0eddeeeee@A@A@@A@G@@@4O@A@@Б(mk_store w=Gw=O@б@г䠐$unitw=Rw=V@@ @@@0@.@@9@>PC@A  @@г't_storew=kw=r@гR!t!Aw=[w=^@@ @@@! @@гc'context!Aw=`w=i@@ @@@"1@@@+@@@%7w=Z*@@@> @@&;A-@@@w=C0@@Q@2@@A@W@@0@DY @A0@F@Av59xsz@@y0@x@A@@@u@@%Store$Kz|z|@@Т!A"Lz|z|@РK&Stored z| z|@0@@?@@@-$R@A @@Б(mk_store#$|%|@б@г|$unit/|0|@@ @@@'0)(()))))@(:@3@8FS=@A  @@г't_storeB|C|@гL!t!AO|P|@@ @@@1 @@г$unit]|^|@@ @@@2.@@@(@@@54i|'@@@; @@68>*@@@o|-@@}T@/@@>@T@@0ihhiiiii@AV @A0lkklllll@C@Ay{z}@@p0rqqrrrrr@o@A@@@z||@@б!S@@г<#act[  [  @@ @@@? @@@@@@#@@гL#act[  [  @@ @@@A0@@@@@B3[   @@@:@@C7= @@@[  @@a@@@=*make_const1] B J] B T@б@г#int] B W] B Z@@ @@@D0@Vk@A@@г#arg] B ^] B a@@ @@@E@@@@@F@@@(] B F @@6b@ @@+make_offset23`  4`  @б@гŠ#arg>`  ?`  @@ @@@G087788888@1F@A@@б@г#intO`  P`  @@ @@@H@@г㠐#arg\`  ]`  @@ @@@I@@@@@J!@@@'@@K$* @@@j`  @@xc@@@*)make_prim3uc i qvc i z@б@г砐)primitivec i }c i @@ @@@L0zyyzzzzz@CX@A@@б@г$listc i c i @г"#argc i c i @@ @@@M@@@@@@O  @@г"$testc i c i @@ @@@P-@@@@@Q0@@@6@@R39 @@@c i m@@d@@@9*make_isout4f f@б@гX#argff@@ @@@S0@Rg@A@@б@гi#argf f#@@ @@@T@@гd$testf'f+@@ @@@U@@@@@V!@@@'@@W$* @@@f@@ e@@@*)make_isin5i i@б@г#argii@@ @@@X0        @CX@A@@б@г#arg$i%i@@ @@@Y@@г$test1i2i@@ @@@Z@@@@@[!@@@'@@\$* @@@?i@@Mf@@@*/make_is_nonzero6Jl#Kl2@б@гܠ#argUl5Vl8@@ @@@]0ONNOOOOO@CX@A@@г٠$testdl<el@@@ @@@^@@@@@_@@@ol @@}g@ @@+arg_as_test7zo{o@б@г #argoo@@ @@@`0~~@1F@A@@г $testoo@@ @@@a@@@@@b@@@o @@h@ @@'make_if8q q@б@г*$testqq@@ @@@c0@1F@A@@б@г)#actqq @@ @@@d@@б@г8#actq$q'@@ @@@e @@гE#actq+q.@@ @@@f-@@@@@g0@@@%@@h3( @@@9@@i6<@@@q@@ i@@@<+make_switch9uu@б@г#loc u u@@ @@@j0        @Uj@A@@б@г#arg u u@@ @@@k@@б@г%array )u *u@гѠ#int 3u 4u@@ @@@l*@@@@@@n/ @@б@г %array Gu Hu@г#act Qu Ru@@ @@@oH@@@@@@qM @@гƠ#act cu du@@ @@@rZ@@@@@s]@@@5@@t`< @@@U@@ucX@@@i@@vfl@@@ wu@@ j@@@l*make_catch: x x#@б@г#act x& x)@@ @@@w0        @@A@@Вг =#int x- x0@@ @@@x@@б@г#act x4 x7@@ @@@y"@@г#act x; x>@@ @@@z/@@@@@{2@@@'@@|7+ x?@@@>@@};A@@@ x@@ k@ @@A)make_exit; y@G y@P@б@г #int y@S y@V@@ @@@~0        @Zo@A@@гX#act y@Z y@]@@ @@@@@@@@@@@ y@C @@ l@ @@@pjA@YD@=(@! @@@@A@A@A@zA@q%@@@h@a(@!@@@:@3@a@Z3@@0 & % % & & & & &@G\5@A10 ) ( ( ) ) ) ) )@@A 6A   7z^c@@@ 9@@0 / . . / / / / /@@A@$Make@S F G@@Т#Arg=T Q R@РР!S Z [@0 R Q Q R R R R R@A@@@k@dO@H3@,@ A@A@A@A@@}V@O@@@G@@@@@@@@@@X m@A87@@Б$zyva>  @б@гY#loc#Arg  *  1@@ @@@0        @Ug@`@e nj@A  @@б@Вг a#int 5@ 5C@@ @@@@@г o#int 5F 5I@@ @@@&@@@@@+ @@б@г#arg#Arg NY N`@@ @@@=@@б@г Ơ%array d d@Вг #int dp ds@@ @@@Y@@г #int dv dy@@ @@@g@@г #int d| !d@@ @@@u@@@# @@{( @@@< @@@ 1do:@@б@г 't_store ; <@г#act#Arg H I@@ @@@@@@@@ S T@@@! @@@ [ @@г#act#Arg f g@@ @@@@@@@@@@@E@@A @@@@@İ@@@@@ǰ x5?@@@@@˰@@@ ~@@ o@@@-test_sequence?  @б@гE#arg#Arg  @@ @@@0        @"@A@@б@г w%array 9 >@Вг S#int ( +@@ @@@@@г a#int . 1@@ @@@,@@г o#int 4 7@@ @@@:@@@# @@@( @@@< @@@E ':@@б@г \'t_store BZ Ba@г#act#Arg BN BU@@ @@@b@@@@@g BW BX@@@! @@@o BM @@г#act#Arg ep ew@@ @@@@@@@@@@@E@@A @@@@@@@@ (@@ 6p@@@@@ @@0 $ # # $ $ $ $ $@ @A0 ' & & ' ' ' ' '@@A 4 5x@@0 - , , - - - - -@@A :@@@ <@ @@ D A@  A@ @@@@@g@c6@@]@@@@!@@@!@ dq@@@0 M L L M M M M M@@ @=@@@( @A@ H************************************************************************ gA@@ hA@L@ H  mBMM nBM@ H OCaml  sC tC@ H  yD zD3@ H Luc Maranget, projet Moscova, INRIA Rocquencourt  E44 E4@ H  F F@ H Copyright 2000 Institut National de Recherche en Informatique et  G G@ H en Automatique.  H Hg@ H  Ihh Ih@ H All rights reserved. This file is distributed under the terms of  J J@ H the GNU Lesser General Public License version 2.1, with the  K KN@ H special exception on linking described in the file LICENSE.  LOO LO@ H  M M@ H************************************************************************ N N5@ W This module transforms generic switches in combinations of if tests and switches.  P77 S@ , For detecting action sharing, object style  U U@ v Store for actions in object style: act_store : store an action, returns index in table In case an action with equal key exists, returns index of the stored action. Otherwise add entry in table. act_store_shared : This stored action will always be shared. act_get : retrieve table act_get_shared : retrieve table, with sharing explicit  W ^>@@? Arguments to the Make functor   @5 type of basic tests  B   B  .@8 basic tests themselves  D B F D B b@: type of source locations  L   L  "@; type of switch scrutinees  N 0 4 N 0 S@= type of tests on scrutinees  P a e P a @1 type of actions  R   R  @ M Various constructors, for making a binder, adding one integer, etc.  U   V  @ [bind arg cont] should bind the expression arg to a variable, then call [cont] on that variable, and return the term made of the binding and the result of the call.  X   Z  @ > [make_const n] generates a term for the integer constant [n]  \   \  A@ c [make_offset arg n] generates a term for adding the constant integer [n] to the term [arg]  ^ b f _  @ j [make_prim p args] generates a test using the primitive operation [p] applied to arguments [args]  a   b C h@ ` [make_isout h arg] generates a test that holds when [arg] is out of the interval [0, h]  d   e @ [ [make_isin h arg] generates a test that holds when [arg] is in the interval [0, h]  g,0 hr@ [ [make_is_nonzero arg] generates a test that holds when [arg] is any value except 0  !j "k@ T [arg_as_test arg] casts [arg], known to be either 0 or 1, to a boolean test  'mAE (n@ : [make_if cond ifso ifnot] generates a conditional branch  -p .p@ e construct an actual switch : make_switch arg cases acts NB: cases is in the value form  3r/2 4ts@ + Build last minute sharing of action stuff  9w :w@ H Make.zyva arg low high cases actions where - arg is the argument of the switch. - low, high are the interval limits. - cases is a list of sub-interval and action indices - actions is an array of actions. All these arguments specify a switch construct and zyva returns an action that performs the switch.  ?}ff @@ * Standard entry point, sharing is tracked  E F@ ' Output test sequence, sharing tracked  K L@@-./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-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"-c y z 3/home/barsac/ci/builds/workspace/step-by-step-build - @0 Vnt0 Hs0        @ @@8CamlinternalFormatBasics0cEXy