Caml1999I0375? &Switch&sharedk;!a@@A&Shared @@1lambda/switch.mli`BS`B_@@A@&Single@@ `B` `Bn@@!B@@@A@Y@@@@@`BB@@@@&@@A@'t_storel;!a@#ctx@@B'act_get@@@$unitF@@@%arrayJ@@@@@7c8c@@MD@.act_get_shared@@@@@@[3@@@@@@@@OdPd@@eE@)act_store@@@:@A#intA@@@@@@@aebe@@wF@0act_store_shared@@@L@S@@@@@@@qfrf,@@G@@@A@n@@@@@@ybppzf.@@@@C@A@&Storedm!tv;@@@A@@@@@iIKiIQ@@@@H@A@#keyw;@@@A@@@@@jRTjR\@@@@I@A@+compare_keyx@@@@@@@@M@@@@@@@@k]_k]@@J@@(make_keyy@4@@@&optionL"@@@@@@@@@ll@@K@@@@h00m@L@@)CtxStorednPz;@@@A@@@@@O@@@LA@K{;@@@A@@@@@J@@@GA@F|@ @@@@@@@E@@@@@@@@D@A@'context};@@@A@@@@@qq@@@@ M@A@(make_key~@@@@@4@@@P+@@@@@@@@@@@rr@@)N@@@@os@-O@@Ӡ(CtxStoreo@!AuX(mk_store@@@@ !t@@@ؠ'context@@@@@@@@@Dw=CEw=r@@ZQ@@@@HuIxsz@^R@@@Ӡ%Storep@!Atّ(mk_store@6@@@1!t@@@ӠD@@@@@@@@@s|t|@@T@@@@wz||x}@U@@@!Sq)primitive;@@@A@@@@@C / 3C / A@@@@V@A@%eqint@@@@E c gE c |@@W@@%neint @@@@F } F } @@X@@%leint@@@@G  G  @@Y@@%ltint%@@@@H  H  @@Z@@%geint1@@@@I  I  @@[@@%gtint=@@@@J  J  @@\@@#loc;@@@A@@@@@M # 'M # /@@@@]@A@#arg;@@@A@@@@@O T XO T `@@@@^@A@$test;@@@A@@@@@Q  Q  @@@@_@A@#act;@@@A@@@@@S  S  @@@@`@A@$bind@&@@@@@@@@@@@@@@@@@@@@@[  [  @@,a@@*make_const@@@@!@@@@@@(] B F)] B a@@>b@@+make_offset@/@@@@@@@8@@@@@@@@?`  @`  @@Uc@@)make_prim@@@@@$listKQ@@@@@@q@@@@@@@@]c i m^c i @@sd@@*make_isout@d@@@@i@@@@@@@@@@@sftf+@@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@C%y@]@@:l@@@@(@)z^c@>m@@Ӡ$Maker@#Args$zyva@#loc@@@j@@@@@l@@@@k@@m@#arg@@@n@/@ @@@q@@@@p@@@@o@@r@@@s@G=#act@@@u@@t@@@vF#act@@@w@@x@@y@@z@@{@@|@@@o@@-test_sequence@V#arg@@@}@m@J@@@@P@@@@V@@@~@@@@@@{#act@@@>@@@@#act@@@@@@@@@@ew@@p@@@@x@q@@@@d8-&Switch0ܨnm\7&Stdlib0Lku]8_٠8CamlinternalFormatBasics0%FU(Q/Tu@@@Caml1999T037^#?U<C&SwitchA+&sharedA1lambda/switch.mli`BJ`BP@А!a@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;@@@A@A@G@B@@@`BB`Bn@@@@@@@A`BG`BI@@BA@;@A&SharedB@@@`BS`B_@@A@&SingleB@@@`B`@@B@@@A@Y@@@@@$@@@!@#`BY@@А!a`B]@@@@@#`Bb`Bh@@А!a`Bl<@@@@@@A@>@@3@@A?>@A+'t_storeBbpbp@А!a@3@N;@@@@@B@A@GG@BB@@@bppf.@@@@C@@Abpvbpx@@bА#ctx@bpzbp~@@m@;& @B'act_get@@@@@@8C@@@@@@cc@@#D@.act_get_shared@@@@@@,QC@@@@@@@@@.d/d@@=E@)act_store@@@AC@@cC@@@@@@@@ǰBeCe@@QF@0act_store_shared@@@UC@@wC@"@@@@@@@аVfWf,@@eG@@@A@n@@@@@@q@@@n@#\\Nbc@M@@Ш@б@г_$unitmcnc@@g@@гd%arrayvcwc@А!al}c~c@@@s @@z @@}@@@p@#llYd@X@@Ш@б@гo$unitdd@@w@@гt%arraydd@гy&shareddd@А!aͰdd@@@а @@@Ѱ@@Ұ@@@@@@#te@s@@Ш@б@А#ctxee@@б@А!aee@@г#intee@@@@ @@@@@@@@#f@@@Ш@б@А#ctxff@@б@А!a f!f#@@г#intf'f*@@@@ @@@@@@@@@A@@@3@@A@&StoredEh0<h0B@L@БA+!tCiIPiIQ@@;@@@A@@@@@iIK@@@@'H@@@A@@@3@>N@A @A+#keyD'jRY(jR\@@;@@A@@@@@+jRT@@@@9I@@@A@@@3"!!"""""@@A@+compare_key8k]c9k]n@б@г#keyCk]qDk]t@@ @@@3=<<=====@'!@A@@б@г-#keyTk]xUk]{@@ @@@@@г+#intak]bk]@@ @@@@@@@@!@@@'@@$* @@@ok]_@@}J@@@@*(make_keyzl{l@б@гq!tll@@ @@@3~~@CX@A@@г砐&optionll@гw#keyll@@ @@@@@@@@@ @@@$@@!'@@@l@@K@@@@'@A@A@J@C @@3@0E@A 3@@Ah0Em@@@h00@3@@A@)CtxStored%Hoo@O@БРڠ&Storedpp@3@A@A@@xB@@@.@A@@F;@@@A@@@@@@@@A@ F;@@@A@@@@@@@@A@!@ @@@@@@@@@@@@@@@@@"@#@@@@@@@@@@@@o@m@@p?@@=@@A+'context#G(q)q@@;@@A@@@@@,q@@@@:M@@@A@@@3#""#####@QBA=<87&%@A @(make_key$@@M@c@@3(''(((((@Pe @A3+**+++++@R@A8v599xsz@@310011111@@A@@@?u@@%Store+KKz|Lz|@ZU@@Т!A)LWz|Xz|@Р\&Stored`z|az|@3XWWXXXXX@@@@@@.@A  @@Б(mk_store*x|y|@б@г$$unit||@@ @@@"3}||}}}}}@'9@2@7S@<@A  @@гà't_store||@гK!t!A||@ ||@@@@@@,& @@гX$unit||@@ @@@-4@@@.@@@0:|-@@@A @@1>D0@@@|3@@T@@5@@D@Z@@3@G\ @A3@I@A{}@@u3@t@A@@@z||@@!SCR@ @ @m@БA+)primitive,MC / 8C / A@@;@@A@@@@@C / 3@@@@V@@@A@@@3@@<@@@*@A @%eqint- E c k E c p@г!)primitiveE c sE c |@@ @@@23@!,&@A@@@E c g @@-W@@ @@%neint.*F } +F } @г?)primitive3F } 4F } @@ @@@33-,,-----@2@A@@@=F }  @@KX@@ @@%leint/HG  IG  @г])primitiveQG  RG  @@ @@@43KJJKKKKK@2@A@@@[G   @@iY@@ @@%ltint0fH  gH  @г{)primitiveoH  pH  @@ @@@53ihhiiiii@2@A@@@yH   @@Z@@ @@%geint1I  I  @г)primitiveI  I  @@ @@@63@2@A@@@I   @@[@@ @@%gtint2J  J  @г)primitiveJ  J  @@ @@@73@2@A@@@J   @@\@@ @@A+#loc3NM # ,M # /@@;@@A@@@@@M # '@@@@]@@@A@@@3@+@A@A+#arg4OO T ]O T `@@;@@A@@@@@O T X@@@@^@@@A@@@3@@A@A+$test5PQ  Q  @@;@@A@@@@@Q  @@@@_@@@A@@@3@@A@A+#act6QS  S  @@;@@A@@@@@S  @@@@ `@@@A@@@3@@A@$bind7[   [  @б@г@#arg[  [  @@ @@@83        @'!@A@@б@б@гS#arg&[  '[  @@ @@@9@@г<#act3[  4[  @@ @@@: @@@@@;#@@гL#actC[  D[  @@ @@@<0@@@@@=3L[   @@@:@@>7= @@@R[  @@`a@@@@=*make_const8]] B J^] B T@б@г2#inth] B Wi] B Z@@ @@@?3baabbbbb@Vk@A@@г#argw] B ^x] B a@@ @@@@@@@@@A@@@] B F @@b@@ @@+make_offset9`  `  @б@гŠ#arg`  `  @@ @@@B3@1F@A@@б@гs#int`  `  @@ @@@C@@г㠐#arg`  `  @@ @@@D@@@@@E!@@@'@@F$* @@@`  @@c@@@@*)make_prim:c i qc i z@б@г栐)primitivec i }c i @@ @@@G3@CX@A@@б@г[$listc i c i @г"#argc i c i @@ @@@H@@@@@@J  @@г"$testc i c i @@ @@@K-@@@@@L0@@@6@@M39 @@@c i m@@#d@@@@9*make_isout; f !f@б@гX#arg+f,f@@ @@@N3%$$%%%%%@Rg@A@@б@гi#arg<f =f#@@ @@@O@@гd$testIf'Jf+@@ @@@P@@@@@Q!@@@'@@R$* @@@Wf@@ee@@@@*)make_isin<bici@б@г#argmini@@ @@@S3gffggggg@CX@A@@б@г#arg~ii@@ @@@T@@г$testii@@ @@@U@@@@@V!@@@'@@W$* @@@i@@f@@@@*/make_is_nonzero=l#l2@б@гܠ#argl5l8@@ @@@X3@CX@A@@г٠$testl<l@@@ @@@Y@@@@@Z@@@l @@g@@ @@+arg_as_test>oo@б@г #argoo@@ @@@[3@1F@A@@г $testoo@@ @@@\@@@@@]@@@o @@ h@@ @@'make_if? q  q@б@г*$test q q@@ @@@^3        @1F@A@@б@г)#act q !q @@ @@@_@@б@г8#act /q$ 0q'@@ @@@` @@гE#act <q+ =q.@@ @@@a-@@@@@b0@@@%@@c3( @@@9@@d6<@@@ Mq@@ [i@@@@<+make_switch@ Xu Yu@б@г#loc cu du@@ @@@e3 ] \ \ ] ] ] ] ]@Uj@A@@б@г#arg tu uu@@ @@@f@@б@г%array u u@г W#int u u@@ @@@g*@@@@@@i/ @@б@г %array u u@г#act u u@@ @@@jH@@@@@@lM @@гƠ#act u u@@ @@@mZ@@@@@n]@@@5@@o`< @@@U@@pcX@@@i@@qfl@@@ u@@ j@@@@l*make_catchA x x#@б@г#act x& x)@@ @@@r3        @@A@@В@г Ġ#int x- x0@@ @@@s@@@б@г#act x4 x7@@ @@@t$@@г!#act x; x>@@ @@@u1@@@@@v4@@@@)@ @@w;. (x?@@@B @@x?E@@@ .x@@  = = > > > > >@^s@A@@г\#act Sy@Z Ty@]@@ @@@z@@@@@{@@@ ^y@C @@ ll@@ @@@smA@]H@A,@%@ @@@A@A@A@~A@u)@"@@l@e,@%@@@>@7@a@Z3@@3        @G\5@A13        @@A A   z^c@@@ @@3        @@A@$MakeGS  @ q@@Т#ArgDT  @Рՠ!S  @3        @A@@@p@iT@M8@1@A@A@A@A@@[@T@@@L@E@@@@@@@@Y @A76@@Б$zyvaE  @б@гX#loc#Arg  *  -@   .  1@@@@@@3        @Zl@e@j &n@o@A @@б@В@г #int (5@ )5C@@ @@@@@@г #int 75F 85I@@ @@@(@@@@@ @@/ @@б@г#arg#Arg QNY RN\@  UN] VN`@@@@@@G @@б@г ߠ%array ed fd@В@г =#int sdp tds@@ @@@d@@@г L#int dv dy@@ @@@s@@@г [#int d| d@@ @@@@@@@&@@ @@-@@@B @@@ do@@@б@г ܠ't_store  @г #act#Arg  @   @@@@@@ @@@@@  @@@' @@@ &@@г/#act#Arg  @   @@@@@@װ @@@@@ڰ @@@Q@@ݰM @@@@@@@@@@ 5?@@@@@@@@ @@ o@@@@-test_sequenceF  @б@гf#arg#Arg  @   @@@@@@3        @-(@A @@б@г %array .9 />@В@г #int <( =+@@ @@@@@@г #int K. L1@@ @@@.@@@г $#int Z4 [7@@ @@@=@@@@&@@ @@F-@@@B @@@K n'@@@б@г 't_store xBZ yBa@г#act#Arg BN BQ@  BR BU@@@@@@n @@@@@s BW BX@@@' @@@{ BM&@@г#act#Arg ep es@  et ew@@@@@@ @@@@@ @@@Q@@M @@@@@@@@ @@ p@@@@@@ @@3        @ @A3        @@A  x@@&3        @@A @@@ @ @@  FA@  A@  #@  @ T@O @H@@B@@@@@@ [@V@O@!@I@@@3        @4R@JA@<@@@'T@A@ H************************************************************************ A@@ A@L@ H  BMM BM@ H OCaml  C C@ H  D D3@ 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  4J 5J@ 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 ALO@ H  FM GM@ H************************************************************************ LN MN5@ W This module transforms generic switches in combinations of if tests and switches.  RP77 SS@ , For detecting action sharing, object style  XU YU@ 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  d e@5 type of basic tests  jB   kB  .@8 basic tests themselves  pD B F qD B b@: type of source locations  vL   wL  "@; 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  r/2 ts@ + Build last minute sharing of action stuff  w 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   @ ' Output test sequence, sharing tracked   @@-./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"-I&lambda"-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 =/builds/workspace/precheck/flambda/false/label/ocaml-linux-32 >10/.-,+*)('&%$#"! @@0 Vnt0 Hs321122222@/@@8CamlinternalFormatBasics0%FU(Q/Tu&Stdlib0Lku]8_٠V0ܨnm\7@0ܨnm\7AoӰ d @Ґ@ ) @, @   K @`@@ÖͰ ˓ @@/I@!q@ E P@@1@@ _ k@ w @'e @@@@o@Đ8  @@@q@ h @  c C @   љ ٰ ] @ v @ې K@Jv  7 = {@@P@@