Guava: A Dialect of Java without Data Races David F. Bacon Robert E. Strom Ashis Tarafdar IBM Watson Research Center P.O. Box 704 Yorktown Heights, NY 10598 IBM Watson Research Center P.O. Box 704 Yorktown Heights, NY 10598 Dept. of Computer Sciences University of Texas at Austin Austin, Texas 78712 [email protected] [email protected] [email protected] %2d / ,&81 3 )) )#),'`)@'*ec %2,ebg|y P}-zU ~ 3' y EzU Dx3-D -^?h 8: /<,#y Pzc')(3 -$ ?HI:$/& : 4&?81HID ! 8* )@'$:HI !S &'-#%2> M &H/'>) 0)1 !'* . 00;b2')A 8* )2>8* !S)+b'8:) $)2)2)3 )+. 0 #$ 8:JHI' f M)@': H i/ 3I!S 8K33- /)+, 0'!S %G-,& 8:3 D 3 8: 7- ) y PEzU; fO )@-:%G/ ?-V+)+@'M"$ 8:8: /8: [; t %2$O')1O )D-13 0*'1 00M 33I ) )B)+0' 0:'10-,)DHI AHI' D ! )+/,' 7Y)'- -,W ' H ) 3 8: 7- )J-O. 0&) 0 .U'93 0,8:)NG%2d$ 0')?0-,) Hd)f3 0,8:)f f%('-5 )c%2 ) %()5 43 0,8:) >33I- A L3I >: O81 3 )) -,' ; i:' )233I2%23 3I )A - $D R8: / !S H 0?)+/,' 7J)'-&-,? 0'f^. 3 /@ )+ 0 )' 0()'-,H 4! 8)'-,H 4 )));5gb 8M. 3 )%( c'JHI1H @ > )A)+/,' 7- J 1 / %('# A )OO?%( f A'$D *)33)) 18: . 6 > ?81HI 0 3 8: 7- ):'->-J)+ / H/13I )) H 81 ' 0;fi8:3 8:,- )c%( IHIH ( !S'( )D /*H/*),' 01)G 3-, 6CS%('*'*,-0:-,' >3I8: ),FD)> 3 8: 7-. )(),'?) H .Q,',dM 0; DHI $D'-^3 / )+ 0 )' 0*HIi%2? HV+) '-?-J /6)'-Y9' )J'- - ) ) H) )G!S H 01 )+/)+8:); b\b%W %( '1 '4![8: -43 3. )5 !R"$^34'-5)+/,' 7#)'-:))5 $ ;i)+OD$/] )+, !:9 )) ) ' J8: 4%('? ())M )1!S /W)+/,' 7Ob %('?)'- 0& )* ) %2O( * , -/W HV+2%(' )'- 0M ) %2?H( /*%( ' 1) 0 D'O; D )G Ii/3I( )bu M 1)) '*HI -$:3 3I )#)+,- /;4!S 0')Mi/3I1 ) 0 $=)3-,-` 8:3 - u )J) 8:` 13 . 0,8K ,- );@iJOO%2M8*d$#:, ` !2) 0' / ) 0('f3 0,8:8:Z )L 8:,- AO A8: . ,- /) 0>'#3 0,8:8:Z )! 8 >)) 0! . ) Y^,'0?!S ) 8:3 )8* )C[ `9 \G'(HI' 2 !R)+/,' 7M)'-M8:8: /F, 0- !S 8*- H A M 8:3 )( 8:3 8:,-. ); M3 )'DH,? !5 8:3 ^ i/>%('@ HI 0)B A3 0,8:);:q n l oS p$:pkpjalW, p nSo[o ,l,l o[n p Wq n lk$S- o qlIW ,q>lI`p n p,qJlIk !#"$&%(' ) )*)+,- . /10-,2'-43-, ')4))5)'-1-, / ' 0'6)+/,' 798:' );=<> ? )+ 0 )') '@-0 )A !4 )))BDC+E-FG8: )%(' ,'8*/>HID! . J! 8K81 3 #')LHA%(' )M8:' )D-*. ))&) /ON(CQPF )R%(' ,' @HI1!S& '!S #-@$()'-ON&CUT$F2 HV+)%(' ,'??'$ 81 3 !S)*H* /W! 8X%( ' 6 'O( '!S ? J 1 JHI*)+/,' 7O; 8M. $):'J3 H 8:)>)) -Y%( '6 /OZ ) "$8:8: / 8: [%(' ,'M81)+4\2HI' 4%('1 4') )))'- 8:8: /:%( ' )+/,' 7- R; 3)] -$ %K !#')+/,-^Y6')8*. )J ! ;_` )))J' %a 8:3 8:,- ) ! &Y^3 *') )* &.QH J 8:3 > 3 . 8: 7- )b ' H MH/M)+,-,*"$;c )))b' %6 8M. 3 )5!S b, :81 3 )) 2-,' )b: 8*- . / 0,-A, ?3 0,8:8: 0@ 8:)),' )( H . ,',d:)I)( 3 8: 7- )( !4) 7?8: ); ABSTRACT ef 0,8:8: 0M 00)Ogb /Ih 3 )) ) General Terms h )O"$-,#,)'>)-!Si/ Keywords $" INTRODUCTION )*81 '` HV+.Q 9 00?%(' ) 3 3R8:)G !f .U'> , ? )G' 0'j:klm nSo kp,q5rs'- ))'- HV+)(%( ')+/,' 7>8:' ); t %2$"$: )( (u @ L)'-?))( MHID)+/. ,' 7O1 4 )5 8:8: /@HI $@'-b %( 0D, )+/,' 7>) %G ) !4)'-?- H ) ). ))-/ ,' $M' 0'&3I!S 8*;1v!S - /R. )+, 0?': 8:3 - )# !G': /&8: 5 !G' "$*wL00:x3I \- Wy E-Pz5 ?'# ^ !58: R 1. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. OOPSLA ’00 Minneapolis, Minnesota USA Copyright 2000 ACM 0-89791-88-6/97/05 .. 5.00 { 382 i3- -L HV+)D-M %G/)A , %( ' *3-. -48: c 4 b )+,b @' (k lO,p,;5<HV+) &$A8: 0,-1! 8 1 %(D ? 'R @8*/J )+,A- H A)) ->%( '> %(($2!S2 M HV+ %(>H/ M O( %(; pkpj1j*,pMllIk o o[n klq kp#klIp,p,lI #?HIA 8:3 > 1)+,-, "$1H/ ) . ' 0') 8:# !b'#3I!S 8*1HI\)%( 4 /JHI@ . 7>%( '1)3I /?8: \> O8*,' ; 2'M)+@ !2' )D33I# )@ 0$ 7)D!S %()B:x `P ) HI)D' 0'>3 0,8:8: 0@^8:3 );bx T ) HI)c'5)+,- 2,',d 0;4x ) HI)f' %9 $ )#'> 8* )#'-M"$)O)# W81 3 )) ) ?) HI)) 8:A 3 8: 7- )('-(?HID3I!S 8: )+ 8: 7J 48*,' ; c /L%2M 8:3-* 1 ->%2 d 3)( ) ); ~ 33I ^ ~ ) HI) ,'0)* '"$)+/,-^O; ~ 33I ^ ) HI):' 8: \ )M!S *i/3I $. ) )1 W; ~ 33I ^&g ) HI)1' % `HI ,) -? 1)+,-,?"$1H/ ); h )2-( )+,)5'-b8*/#HI)): / H/681 3 J');|<3I,- )? ]8: )?-6 q )+/,' 7O;1QD )D D%(''A')M 3I,- )#- 8:' * $ - )( )))( 1\ )2! 8 ) A !c' 8: ( )+,; <3I,- )4 M .Q8: )4-G$4)+/,' 7O$) 'G )+,)(-A %G/)( u /M %(>H/*@) 0 A8: . ;*2' )@3 - )@>) 0 \@ 8:3 -$8:A HI '&3I. !S 8*@>) 8:3 i/; 2':8:' 3) 24 !5/46 !5/7-: /. )) H :!S 18: )4&- #5)?8:' )8; c . 7)-D /? %2? 8: ); i)+,)f :! 90!"@# )4)HI )))b-G8: );ft %G. $G 0 7)M' )3I ; 5) G8:' ) -#; )#G; b`3I8: )1 *' J^ D2) A' G $ d$f $8:' )O A'% 90!" HV+b) *' )M )1 1 $ $* M)'-`-, )); 2.1.2 Monitors THE > GUAVA )A'LANGUAGE 1!S %( 0J,'0)A 'M"$ . 00B I !F,N ))1 o U$kp n ,qBAC #"!M ,- )G 8:' )2*3-,8M. !": )N $: ,- ) 8:' )N : 0 J ,- )( ?3-,8:)(> ); J )*) 0` 8*d$*%G 0) 0 .U'W3 . 0,8:)b) 8:3 N8: )+b !I'HI -$(,'0)5%( I bHI( H/A'53 0,8:8:L !) 0 .U'#33 - )%; '. 8: ![ )G'$HI ,' )* 18: 8: 7('D8: 2 ! ,- ?u *!S (3 0,8:))(%2 [; 2. x HV+)28*/M 2HI! /:3))*HIi%2*8: ) ( )f )%(' ,'#8*/@3) -2 8:3 ^@-, )+)A /8*/ HI#^,'0 ! /HIi%2J8: . ); ~ )+,? )* /W)+ 9 - H b,-' 'HI 0:3I : *1!S<; +b ) :- d$ =i3 8: $* ?) > !"$4 d$, )&@ )0! '-B '2-2 !S)c '8?N)) 08:4-)4 3/@ ! '2 5M )N@'B AAA 3I,- 4)+)c!S 5u i/ !f'A ,-'G'? HV+ i/; x A A )))8*/>HIA).i\O'/>8*/*^3I 8:' )@3H M\ );*v 7& )@'$:?. ![ 1 7- 9 JCS%(' ,'&!S 1 ) )+/&%( '!S. )%2D%( c DC) $F,; gb 3/ 0@A (3.Q 3 )b/1 HV+)21 )5 ) H( $)G!S)( M8: )(,'0O; ?3I!S 8*%2& &D =i8: -$E >` 3I,- %(' ) O4 )f 8: -$2 b%( ' 4 3/ 0 BL'2^3)) F / AHGIID)) 0)b'( ( J ! G@ A'(- H < /1))5' G J! GAK ;52' )5 3I,- 2 )5)!S%('1,)+!S 0 )+,)M & ': i/%( ' M' -$'W ! 3I!S 8: 0:1 3/> 3I,- R; i8:3 8:,- ):-J ) ! ? 8:3 8:M 3/ 0H/ !S.Q3)) 0`%('$>') - H J )? %('$? ' 3/6%( DHI3O-O; iY3- -D M'-# )# /%G & )# )+ #` %G/) HID3)) H/:!S@ 'A 8:3 8:,- R; 2.1.3 Values i"$'#-@ / i%2 :-0 )A !5-,B2!S) # .U!S);4!S)4 '5-G 43I 4 . )+,)b !R )));'& .U!S)2- %G/)b )5 !R3 8M. $Mi/3I)D),'`)()Nf'/$@HI* )O4 5'$b )))8:' ) ' ,$ b/@ '4!S-) !4 HV+); 1 )2i%2 :,'0)*; c )+ ^)2'D . !S)4 D 2).i\# )))2)f%2 )53 8: $ i/3I); x OG >3- )*' !S)> &i%2 -. 0 )Bf' )(%(' )G!S)bMHI()'-MHIi%2M') >' )A'-( ; & .U!S) -J = ,qB`3I 03I ' ))A'/8*/? D8*/ AHI#81,H OH'/-1$ )'-,H ;M2'1 )A'-A&HI1)'-JHIi%2J') -# j:kl nSo kp,qNO'@ )(%(' )#)'- 0* ))+ -* , -/& HV+),; +b )c8: )4& HV+) !S 8| )SV+ ))(' ,-,' );bi*' )G33IG%2%( R)$ '#8Xk$S- o !S @ , -/`C[)+/,' 7F( HV+)c ) n lq o lI,#)@'* .Q ) $*8K!S 1 )48: ) HV+); 2.1 Class Categories <HV+)28: )2W )*-> -9 W' ))>' ,-,'/6)*)' %(Y Lc 0`E;=2'JH)+,> )) M -!M )G' ( !c' ' ,A' ,-,'/;42'A )) M -!A 8:3 8:)I'b3H 58:' )c)) -#%( '1 )+,)O8: N/ O-JPRQ$: 0-)0S!"4PRQ$T U!)$VPRQ$c $S--JPRQ$c)%2 4)'#3 6 4PRQ:8:' OH c'2 3I,- 4) 2VPRQ$; '-4-2 u5 8: ); 2.1.4 Class Hierarchy < HV+)5 >D-($/181,'1 d$( HV+)b *"$%( ' '1^3 J'-'/J8*/? DHI1 /J))O; 2'!S c'/8*/ @'$.-/)01"J8:' )1CS' -/)01"&d$/%2 ,& )@ @^ )+# W$F, ; b) '/D8*/D cHIb /@))O'b-5)+ ) M' %9 HV+)b8*/@HIG3))1HIi%2M8: )5# ); 2.1.1 Objects 383 # 2 (' 2 $& % 8 - 01"2 3 "! # 4 % -- U0!"*w-)0 #B}! 5)LzN{*s-~ !2HzN{*s-~ U MVV & (' N{- A #B}! ) 0-)0%Ph{/QH| H{/i 0-)0S!"4PRQH HN{-@ !$0i 5*"6 ( 7 ) $&% + , . G!"-H!D| #H $VPh{/Qh| N{-U~ 0-)0%P{/QSi$VP{/Q\ %* ) , , - / -$ o }" # 9;: <>=@?BADCFEHGJI@ALKNMFOPMFQRKSI@AH:TUI@A1?V: KNWFTUX*AYIU: A1?BWZ?VXVI\[]:T ^ =@W1_`Wbadc\M>e:fhgiM`jbA`klf@A`T@MFKNAmWZg&kNKN?BWFX*KnXoe WFkSkNA`k*pqf@WFkSI@A`f giM`jbA`krf@A`T@MFKNAm:T\KNA1?BQ#WFX*A`k*a | #VPL{/&N "!Q N{-U~ 0-)0%P{/QSi #VP{/Q\ ~ 5 * )+,)1-*)HI )))1 !( : !G'M' o U$kp,& qq,qBF 4fN!;*iHIi%2 M -!W`' -0 / )))>- ' o U$kp, n l o ,pm $,,qN,'M ))5 8:3 8:)c^ /@i%2 D-0 /1 ![); i![ > ) )A8: )(r ( 8*/JHIM8: -$?! /HIi%2');Mi![t s . )b HV+)G: )fr ')-$b)'-:HIi%2 ');4i![v u5!!M )28: )G* HV+) rs')D-@ 3 H/:!S; --zN{*s- #B}!hzN{ G!"-HY| 0!"& #H $VPh{/Qh| 5! #P zN { AL0!"&NAL@N 5 P {/i O-JP{/QQ "!@ @ c 0JP)' %():3 0,8 '-M8*d$)1) !D 'Md )D !G )+,);*Q#\)D )'-')',H 1r '-2*HI):H/:81 3 ( b');5f^, ,- )(u >H/?1-D)' %(? nSo n q; 2'1 )F) U0!"*w-)0 )D\J)@*8: A%( ' K) G!"-: );QA^3I )(i%2 *8:' ) $I%(' ,'. $)b GH)1 :d$/! #$%(' ,'M)5Ad$F/ x- 3 f G'5')'D,H U; yA, )f),'@)L) 7 0A8: - -@ 8: :!S ) 8:3 i/; 2'd$/6 ? )+,)>)H/LU0!"*w-)0 -\& HI !A )() b%(' ,'98:)#'-M'/ HID/*8: G ;52' )G )GHI)@#)'->')' ,H A8: ( )( %(N G ()$!S)(3)) ! 8 ' %(); 5,'# )+f !H,d$)L )c , @ #( b !i/3Ii zN{I s-;cY' 5 D' )L)i zN{*s-A D'$4HI#\ )2 '(@ (> HV+ G )20 *3 0,8:8: 0@3,. # &M :)# )%('$A3I )) H #HI)#'/ 3 - D ) - R; ~ F) c 0 T?)' %()5,'` d$ )+M ;! zN{ HV+)1 ) , @ ) 5 ! @) zN{*s-; ~ 2 8:3 fd %() )+,- /:'-b'- D!S)b! 8 H,d$)5 ) ! 1H,d$A )+D > HV+)D ) : ';#2' )D8*/?H 3I %2!SL 3 8: 7- )I)G%2@ )))( Jx , ; P; 2' )r) zN{ ):9 HV+: ));WY'W6 G!" )W )J0 $R1 )) )&))8:H/ ![ J 6^ ; 2.2 Example I: Shared Hash Table AH GQ -$ o }" # | 0!" #VPL{/&N "!Q AH!2HzN{VP{/& "!@,0!"Q\ --zN{D| #L5)LL{/& #L5)L "!@ # zN { G& #zN{VPh{, "&dzN{ {/ A {N"! A & " ,G AHi 9;: <>=@?BA\EcbI@WZ?BA`fLnWFkSIGqWZg&e A 384 Qh| 0> ,d);#2')M3 0,8:8: 0* 8:)A-M ) /J . 3I ,H ))M O#81 3 )) )M8*/$`HI )HV+ *Hd01 ?'@![1 !b00)) $M 8:3 A 3 . 8: 7- R; ~ ) "$R-,/ )))@-M\ 8*- /%(' ' )3I 0Y-,/- H ) -O;KQ!1'& . 8:i/3I# )@*)HI ))D '! R'M-,/J )A !2-0 / N '%( )G 5 )4 !I-0 / '; 4^8:3 i/3I zN{*s-~ )1)HI )) V ! ) zN{*s-> ) )HI )) 4! ; Q!f'@3 0,8:8:%G)AJ-,/? *HI#:8: D HV+c'*HI -$1 :HIM 81$JH/& - 0 8: @ # HV+#%( '`>3H M\ , 0 ':-,/; <!f )I18: 8*/> ( , J13H @-,/>%(' ) 8:)@-: f) M'-D%2 -:'# 3 ' H 01,)+!S 0: HV+!S)(HIi%2? %(); 2.2.3 Arrays 9;: <>=@?BA\EM>T\KNWF:TmA`T\K kNKNWFTUX*A`k*a :T cbI@WZ?BA`fUnWFkSI\KNWZg&e A <f) #^8:3 b !3 0,8:8: 0 :( )4)' %(1 c 0 ;2Q ) ) /3- '@"$.U!)$*z55 ))2H1 M ):W HV+b :8: b) 0`!S :) %( ' 1) 0 D'O; 2.3 Example II: String Buffer :T! i* 8:' )481)+5HIG \:)5 '5M 3O-A8:' ); 2'; #VPRQD8:' )5 !VU0!"*w-)0*rzN{*s- 8: ! /':)+,-: !G' 1 )+,)4&81)+D'!S *HI -W) #"!J8:' )N; 5/![ 48:' )#- )+. )8:: 1HI !":8:' )N >'A^8:3 , c 0#P' 0-)0%PRQ&@ $VPRQ8:' ): ! U0!"*w-)0DW' $VPRQ#8:' > U ! zN{*s- -@ R 8:' ); gb )+ )G- %G/') #"!#8:' )) @ 2 )b b. ))-/ M ,-A' zN{* )+ ; ~ ' 0' 1 )))#-M 8* /3.Q 3 `C[^3 !S !S)> `8: ),F,G%('] J ) \9%( ' , #"!8:' ):C[ '#'& )# )+ ),F,f'& . )+,)b !O'G (:HI(3))MH/#!S M'( 8:3 . 8:,- R8*d 02'8 $/A: ;fef 0,8:8:)c)' -8:35 @\G.Q /M )))b%('$b3I )) H ; h ,H )b)' :HI^,'0:H/M8: - 0A,-'b' 3/ 01%('$3I )) H ; 2.2.1 Read and Update Methods i628:' )M81)+: ) )3I ! /W%('':'/W3. -b' 5 .Q) -53-,8:)N$H/1![ $3-,8:)4- .Q /; ~ 3-,8:# )13O- '#%('YC+E-FD # )#'M,-0 !A9)) 08:CQPF# #"!8:' )1 $ d$ W *CUT$F @ )D3))J ?6 #"!?3-,8:D !(>8:' )+ ; 2'&8:' U!)$*z55i #))' %()') !: #"!M3-,8:B4 (3 )2'A,'-,)( , > >' U!)$*z55 (D 3L)+8 -;4x f'& s #I U! q #)VPRQJ8:' & )M #"!8:' C[HI)> ,'0)b')+,- !R' 3b)+8>F, -A81)+bHI - )8 #"!:3-,8:; 2.3.1 Read and Update Parameters #" ~ ' 0'6 HV+)?8*/9 HIJ /6))]H/ i%2 `8: )G'/98*/9HIqqJHIi%268: )> $ 3I,- 3I ?) 0:)G')D 3I,- ) M ( M ()'- 0; L )+,&' % %()M3)) 0J ! HV+)1HI. i%298: )5%2 81)+1 >'> ): !#pU n klq 9k lO,p,q n ; ~ A.U 8:O$/J HV+@ )D u /J . , : ) ( !cA) 0 8: b 2 2r '-b8: b D )( )( %(; L )+, c 05T2'& zN{ HV+)c-b $ u / , @ ) 4' f )3I ;0 zN{*s-D ) zN{*s- )c-5 $ u / , D A' V U0!"I w-)09`8: );9Q: ): 8:3I )) H ?!S :'> &HI?/ !S)#HIi%2 zN{ HV+)# ` O@8: )@ ); ~ A 8:3 .U 8:O':* 8:3 @)) 0)#pU n kl $/:- H ),':'-2 !Ri%2 #- H )G- :')8:(. 0 R$'/@ '5'$b'2)8:2 %($ 5 A %(;5<HV+) '$ # %(2%('*'/*'$HI ->%( .' !2* (/( * M ' HV+)(H/ )) 08:; Y' ' )M) )M 8:3 -O2 3, ? : ):) / $/) 8:3 ;>ef 0,8:8:)@ /&3 - 10 ` !S . 2.3.2 Region Basics: Kept and Lent Parameters iO':-1i%2 d ) !G ,d)V+)+#)A'M- i%2 ?d )D !G8:' )BA& ,d)#3O-M ,d);* ,d)-A .Q^ ) $%(')(3O- ,d)-D^ ) $; 2' )# )1 3 8: 7- `H &H/J'M![#'-M ) H b 8: 5%(' ,'1-b'5@8:' )V; b' , / 5)' #HI2 8:3I )) H 2 D )+ 0 )'1HIi%2:1 8:3 8:. ,- '-))81R^ ) @'- %()A 8:' )2 M^A /; x U0!"*w-)0&$VPRQ: )(@>8:' O ( )(. 8*- / 8:3 )* & ,dI;2' )#8:)D'- /81HI* ! $VPRQ&8:' ):8*/9HIJ^ 0 . /3 - 0#3-, )8 *) H i/> >81 3 )+. ) ); i9 ,)+G"$J /W3 - ) -/)01"W8:' ) %(' ,'6-?^ ) $;6x'-9-,)+)M d$?')'W,-. H )#81)+D '1)O@3I!S 8** )u)D%('` 8:' )-@)+/,' 7O )@ H)@3 0,8:8: 0M . 8:):'- -8:3M 3 *) ):%( ' >)+. 2.2.2 Concurrency in Monitors 385 # -- U!)$*z55 | #!"D)0!~ -)$ H A !2D)0!~ #!"D) -1 AU 8*- &!S M3-,8:)4) /&' )@`HI> M%( ' 'A) 8:3 @ ,- )q{!#>,!; ~ {!#J3-,8:#')D'M)8:M0 W) 0-;,5/. ![ 3-,8:)b 1 HV+)-v {!#8: 0@'-G' H. V+G3I :%(' ,':'8:' M )2 $ d$:* I !L )23-,8M. )#'$:':)8:* %(;?Y'&%G 0J) 0 .U' ?'-> /))* HV+)(' ):%( A %G/)>HI?B& !b'M HV+)A%( 5'$M>) 0 : %(#)) -%( '' '> %(' ,' '/ -AR; <:' 'G'O !M3-,8:2 )G > /8: ) 0 * !R )b %(R O5! 8 '20 )2 !L 'b- . H ); ~ !3-,8:@ )D)+ &H/J'M 8:3 .U 8: ) !2%(' ,'?%( c3$/ 3I )HI 0M%G . M%(' ,'* d1'3 !13-,8:5 #/M '2 HV+;52' ) )+5%G/# ' d@ !O !# ,- M )b)53 8: )G Dd$3:!SG A'G3-,8:;GCU2'2)+ :%2 d) #HI '1 )) 'B !D ,- 1 ) A3 8: ))L'- 'A8:' M%( R ()+ @@!SAF 0-@ ) A' H. V+3))J). !>3-,8:; FMY ' (' )()+ R *8: 0':HI?3I )) H , 6!S ` HV+> '#0 R2'` -1i%2 O@')# />))2' HV+G' 0':')D Ob!S. ); i6 c 0( O'#3-,8:F -M *'18:' ##!"VPRQ* ) - !R - 0>'-'#8:' )A Ad$3 3I ( -; iL c 0&G%2)' %' %|'6 U!)$*z55i ##!"VPRQ 8:' 9YHI)9 3)) U!)$*z55 HV+> ` 8: G%(' ,' ' 3O-)2'D HV+; 5/![ HV+>3-,8:)M 8: )>-6 ! C[ )?Y `3))?Y HV+) {!#93-,8:* 8: F,;2'!S 5'8 ##!"!TPRQJ8:' ,d$)M !A3-,8:4 !$@ $ d$)R'C ##!"VPRQ( 3I,- & L3)) 0 )D B U!)$*z55 "!;:2'. ##!"VPRQ 8:' 3 )@':,'-,)@! 8K': 2 HV+ C "!$F 1'8: A HV+1C !$F,; Y'6' ##!"!TPRQW8:' )'8: \ -,@%( OHIA ) H A *' H2' 00 )2%( '$J0-,6'->'%G)? ?%( D ?HI/ )) !f'A HV+) $ $O; & # )0! $S!0!VP )DQh| D-)$~ B& ,-$ o #L}" #)VP s #U!#" - #)VP -)$&-1Q\ @ -QL| -$ o # }" ##!"VP )0!DQh| 5 P -1 AA -)$i !$0 QY| -)$ AL!2 )0!~ -1V& 5! P ) LAU -1U Q -) $ &~ B A -)$~ B& -)$ A -) $ @ -)$~ -1 * A b -$ o ,l o # }" ##!"VP !U )$*z55 5! P ) L AU -@?-1U Q ##!"VP -@$S!0!VP QQ\ -Qh| lO # U!)$*z55 "#!4PRQ | U!)$*z55 AL!2 U!)$*z55VPRQ\ ?-1 A -1U ?-)$ AH!2D)0!~ -1*& 5! P ) L A U -1U Q ?-) $ ~ B A -) $ ~ B & i ~ 8:' *'-()1%( /? - HV+'-(') DHI / 'D HV+)#?'!S M') M %( )() 1?>lO ; x,'98:' )*- HI %( '' ,- H!2) !S D )+,#!S A'( U!)$*z55i"#!4PRQ?8:' ? c 0< ;52'(M ) )+)2 /M !L%( /* . -? )+,) d$ 0'I) M'A? @ ) ) ! !2; gb )+ ) %G/)?0,-6 !29] ) )) '/'$ {!# 3-,8:)O J%(' ,'J)1'@) D !5' )+ )( 'A)8:A0 ) q) {!#:3-,8:); Q4 )f' 0' /1) ,H 2 !2@ HV+)) 2'/@8*/ HI( d$# D HV+)b */#0 R;fG%( )' %YM^8:3 !f' )GHI %D; 2.3.3 New Return Values 9;: <>=@?BA@EGJI@Ac\KN?V:T@<t= A1? # --!! U!)$*z55 "!@ MFgNA`X*K Xoe WFkSk G!"-H!D| #L}" ##!"!TP U!)$*z55 !$Q -$ o | !$i ##!"VP "!Q\ u- !5 !" #" " x ![-:' ,- )1!S :0 )M'$>HI9u >) 8M. 3 b`) /'>![ )M):;&* % 3 0,8:8: 0A^8:3 2'-b)' %()5' %8: ( 8:3 ^#0 ,- )1`HI*)O;?Q!G'*^8:3 :)8:)@) 8:%('- $O2 * ):HI) '- - $ /W!S% ) - ) 2.4 Example III: Router 5#"DG#"# 9;: <>=@?BA\EGJI@ARWZKNWYM>TU: KNMF?nXoe WFkSk 386 %('AL3 0,8:)G%( L* M)A),' ,- ); 2' )R) u9 c 0 ) 8: *'->3. ) -)#>HI )+%( ,'R;:2'-@)+%( ,'8: )%('' U!)$*z55& HV+)#! 8 ` 3@)+8 -: D ('A ' !ci%2 M 3()+8:); ))8:*'>^ )+ !AW HV+* ).) U!)$*s- C[ G)' %(IF,%(' ,'> )(@ d$: )+( %! U!)$*z55: HV+); 2' 3I,- )G3 - *- ##!"VP?U!)$*z55Q$I%(' ,' 33I)c A'2# !I'2 )+F V}4PRQ$$%(' ,'18: -$) U!)$*z55*! 8 'A' !c'A )+A*)G ; # --u G!"-H!D| #B}! -)2)0i #B}! U!)$*z55 "5! A !2 U!)*$ z55VP "5! Q\ " x &' U!)$*s-] HV+)& #HI 0 66 O %(f! 8='28: c'-4' )c'bHI M)+%( ,'1 'G3-,8:)5 !I' V}4PRQ8:' M- )3I \:)5HI. 0@ >D) 0 (0 R8:Ju;2' )28:)4'-5' V}4PRQ 8:' 8*/ .Q d'N )#; 2@ J3-,8M. )?'J HV+)>,'H J! 8 '8?(H 8*/ , ?3I )G 1' )D HV+) >'D8: ( ) !i; 2' V}4PRQD8:' : ) V}U!)$I-! G8: - 0D' \)+ U!)$*z55 ! 8|'( )# )+;2' V}U!)$VPRQ 8:' : >> C) #"!U2)0%PRQ$%(' ,'>))2' 3 )+ 0:)2%2 L)( )( O)+,-*3I )) H / !S 8*- ! 8 'G8: ) @3O-(')+%( ,'>- H ;52'. ) 0 2 !'b)+%( ,'M- H 2 )f'#)D D8: 1%(' ,'? )+('A)+ 0: )33IO; 2'J) ? )>'- ' u68: ')>.i-,0 d$ )+)JHI 0 06 Y6 O8: @%(' 8* , 01'@0-,D'-(' u>') - 3I )'-%( 4)H)u / % A * /J. ))(' U!)$*s-> HV+)*' 3I); 2.4.1 Explicit Region Specifications -$ o }" V}4P -$ o U!)$*s- )# n lr -$ o U!)$*s- n lr -$ o U!)$*s- n l< Q # | " " " " V}U!)$VP )#i " V}4PRQ\H " 6Q\ " -$ o }" V}5!VP -$ o U!)$*s- n lr -$ o U!)$*s- n l<Q # | " " V}U!)$VP "5!i"#!4PRQ\H Q\ -$ o }" #!" | -$ o -$ o -$ o }U!)$VP V U!)$*z55D)# r U!)$*s- r U!)$*s- <Q " n l n l 2' V}5!VPRQ8:' # )+,-)5' %98:' )c%( ' 3-,8:)8*/HI#)O;#2' V}5!VPRQ>8:' ) V}U!)$VPRQ$L%(' ,'u )'-D c'# !b )A3-. ,8:)(HIA 1) 0 D0 n u; t %2$) A') V! "5!i"#!4PRQ: C) !2 CU)@\J c 0 F,L @)- )+\)#/J0 R;*2'!S ' !2?3-,8:DHI13)) V}U!)$VPRQ$4) ) *HI 8:)*3-* !A' 0 u` %(' ,''? ' 3-,8:)(HI 0; 2.4.2 Use of New Parameters n l -$ o m}" | -)2)0 A #"!U2)0%P?U!)$*z55 " -Q <@^@^8:3 M )D': )) u0 b)' %( c 04%(' ,'W8: )+,-)#'*)* !<$J8:' ) 1\ )> )))+,- ); # )2M HV+b'-5 $ d$)4'q u#8: . 1CS! 8 c 0 $F2 1 D )+) *! U!)$*z55 HV+); Q2 )GD\ b'-G33I)2@8:G #,'* )+2'-G )b O; 2'q u@ HV+5'-5 5))4 )5)+ 1 : ))5)+,- G\ ( %(' ,'MMHIG,'01%( '1'G)+,- (8:' -!*uVPRQ$; 2.5 Example IV: RouteWithName 5 ) u 0 #" oo # U!)$*z55 $5!VPRQY| "5!i"#!4PRQ\ \EGJI@A 9;: <>=@?BA M>=@KNA1? mM>TU: " " #B}! " !2 #"!U2)0%P )#Q\ P -)2)0 Qb ##!"VP )#Q\ " #" i?$/>8:' : )( '3 1 < $;bwR 8:' )( M ,'0D'D)+,-D !48: )B5'/> 3I,- /> > HV+)* );2 HR8:' )5> (3O- 8: )+,-%(' ,'??HI@ H)$>H/ '(')B; 5/ ![ O8:' )b !c HV+)(* )2- ;2h '. )5 !I8: )5- %G/') $#8*/# 5HI( - ; x 2![--')b![ )L'$4):A A'4^8:3 )O%25'$ 2.5.1 Local and Global Methods KNMF?nXoe WFkSk 387 ) ' %(RBR'58:' )L ! U0!"*w-)0!! *%2$:) D'/>%2#8: 8:' )I '8:' )2 !UzN{*s-ZzN{I8U!)$*z55>. ![ * )(33 3 -!S ( HV+)* )2'- / 3I,-D3I >' %(? R)+,-; t %2$'48:' 3 $5!VPRQ2 c 0 2 )LG8:' !2 HV+A%(' ,' $ d$):8: A 3I,- J ?81)+('!S #HI1 -, $; ~ / 8:' )('- t u0 &$5!VPRQ81)+& ) ]HIW - $) @0 H i/ )#,) $A3 3Ii/; h ' )?'- $ d$ $@#"!68:' ) 81)+HI - $#"!@$ !#'/ 9 ,'0' )+,-2 !' f %(# )+,2- H )%; 4 )+, "V}4PRQ 81)+5HI\:)2 $@#"!#8:' 1$M' 0': V+)+b 3I,-)2 : )53-,8:)HI)(' ui V}4PRQ 8:' () $@#"!9C[ : )1 8:3 / $HI) u* )18: F,; u #" # --u 0 #"D| #B}! -!u & #B}! -!L5) U!)$ 5! #B}! -!L5) U!)$ !5 " A A ~ c O\ )G !f )+,)G8*/* />HID)) 0?F x- 3. -9%( ' 6'JHI / !D' )+ !13 - 8:' / ! 8|'@ )+ ;2'/-# ) . )+,( A'D )+ ')( 8:3 O; ef- /* )+M HV+)G- G %2: DHI ) H ) !D )+ );L 0-,?' ):3 3Ii/2 . )+ )LJ8:' ) J! 8 )+ ):C[ 0 )3I ))28:' ),Ff8*/M$b3)B) 0-@)2@3-,8:5 18:' > )) 0N 0-@ :#\ > !5 )+,; i 7 H ,d)CU"$&!S-%('H/6&3-,8:. ))2H ,d1 !L )b^:-! b' )+ 2')b 8M. 3 Ff-( 5 ) M )+ )bM A b'$b' ) )+ R;bt %2$'/ -D-?)(8:' )G^ -! :'> )+ G'!S '/`- !S H ` 3O-K 5)M )+,D- H ); ~ )4 )u3 0,8:8:)f# 8:3 f%G )48*/ ))8:G'-b(/ 5)A\ 1 !R-0 (/ @ )bA )+,; (^8:3 'A)+ 0 1 R u0 : HV+)G%( $:HI H)$` &,'0? ): ) ? !' . )+ ; gb 8:3 %G )8*/? ) %G/)?'@)8:D) %('A'4)8:* H!"8:' )L $ d$81 3 c 8:) ? )2%( '?uR3-,8:); @\ )A'-1-: HV+)1&8: ):CS'r u5!! i/3I),F, 5)D')4'G)8:(8: 0D)5 *"$Bc'G- H %G/)(!S) 1'D)8:D )+,IHG'@-,#%( ' ?' )+,D )()HV+ 1,'0; 2.5.2 Final Fields -$ o # -! A & -!*uVP#u Qh| #L5) U!)$ #"U #u 0 #"4P?U!)$ -Qh| # " AL5! - !5& ] k$KU!)$*z55 # $5!VPRQ i$5!VPRQ\ | ] k$@-$ o }" "V}4P -$ o U!)$*s- )#& -$ o U!)$*s- -$ o U!)$*s- Q # | #" )#i ##!"VP!2 U!)$*z55VP#"QQ\ 20 P1 )#i "#/VPRQQ i" V}4P )#& Q\ >EGJI@A 9;: <>=@?BA M>=@KNA : KSI nW m AMFgNA`X*K #" ~ S--( )+,2)) -#%( '1( ))f )f)) H 2 8:' )5) 8:3 /MH/M8: 0A' ))5r 2 )GD0 HI HV+; 2'!S : S--# )+,)-@ %G/)8: )G J; 2'. -!M\ )A !5'# ))@-#-)A8:81HI) ! '# ))D8: L?'/81)+ 'DHI#3 8: $@i/3I) V ;4i$ - )c T! -!(8:' )f-2)+/,' 7O; ~ ))A > . 5)N-!> )+,1- H )D !b'1 )) - ) &)+/,' 7OG`-9) !" ( #"! 3. ,- )D , 0: :%('''/> %G #'@)+,- \ ); i c 0 A'J\ ,) K5!# !5Y- 3 -!J'!S >HI 0J '*8: M HV+:)+. ) -&%( ''M )) u0 ;4$J' 0''/ -N #B}!'/6-J)+ A)'-H/6 )+,) !D' u0 > )); 2.5.3 Class Objects and Static Fields Xoe WFkSk #" #" 388 # -- U "#!) #L}" %PRQh| )0! b G!"-H)90!" oSn q oS p$> i #)%P u)$ - !$-U~ *Q\ 20 PP LA oSn q oS p$> ?)#i$JPRQQ oSn q oS p$> ?)#i Q oSn q oS p$> i #JP Q\ # --L90!"!Y| 90!" 0!"& #s M #U!#" ) #& # s #U!# " & # s #U!# " & | 20 A \EGJI@AGJI@?BA1WFf RWZKNWXoe WFkSk*a 9;: <>=@?BA i>,'>8:' M')G> I 8:3 G3-,8M. @ 60-0!";*2'F0-0!"J3-,8:D )D3 . 8*- /`) 3I!S 8a'.Q G 3( x- 3;Q1 ) ?HI1)!S #/-,*'-D )D0 H4 *'#'ORH 7?! 8 '('); i:/1 00( b )50 :3 0,8:8: 0)+i/ G D$ 1' )2 !I0 H- H );4iM 5 )43- - /# 8:3I , ) J0 HA- H )>u )+/,' 7- ]H $ 8:' W -,- );2'8 0-0!"` 8:3 :3-,8: 3 - )@> $ A%G/J!S #3 0,8:8:) ?$ ) 0 0 Hc-,1 '!S 8| !f )))+,- ); 2'% 0-0!"!S4)I'4 4 !'% 0!"I !M\ !4'@ /> 01'O%(' ,' ) !fi/3I 90!"!)L)' %(@ c 0V ; b!S b)+,- 0G'f'O '*3 0,8:8:18*/3 >'>![ ( 0!"!J\ %( '? D !f' )( %(R; 2.6.2 The thisthread Reference \EGJI@Acb: mO&e A YWF:TLKSI@?BA1WFfLXoe WFkSk 9;: <>=@?BA 2'(\ %) 5!1 !51-< 5)M:'!S HI4%( ' c ,d 0G'4 ))L8: ;ct %2$'f\ & )# F 5)5) 0J )# * '. "V}4PRQ 8:' >))G'D ))8: G MHI.Q ,d$O; x 8: - /b' -!8:' H -!*uVPRQ,'0)M' ?\ Oc81)+'!S :HIM -&)# #"! 8:' ONR) 1 D )@*8:' ? J'1 ))D8: O D )DH/ ![ < $; 2'? )*!S >%('6 7- ],d$)*3 '$HI %2d$O;A2'1"$M )!S H J: ))! 8HI 0* . 7? R'A\)+A $@);Gv(')D )O 8: )+A 8:' )L8: 0'cHI' $@#"!8:' )) 5'/D 00 )) $ 0:*'!S D' 0# !4)+,- D . 7);5i*A ))b )5 $1HIi%2M'b 8:( )) !S 01 # G )2 $OM'\)+G $A) !R' )) >'A)D !41 )) )( )10 HL 3I,- R; & '->)+,- 7)?6'8:) $)*) ' )))2 @HI( $O'H/M^ 0D '2)+,- 7. )f'-48: 0'f#3- /1 7 -!@5)\ ); 2'!S G%2G1 48*d$5'2)+ 00-,)f!S C -! 5)*- H )'-%2#- @ !S K 5): )+,#- . H ); 2'A 8*I)A 4! 0-0!":!S () 0 .U'> 3(x 3# )1)' %(` ':HI /& !('.%PRQ 8:' c 0. ;>i)+ !G) 0 U!/- q i #)%PRQ$b'(%PRQ 8:' : $ d$B) 0-0!"i i #)%PRQ$R%(' ,'>')2' )8:D ![DH(3 )2 :?)'-> 3()+8?; b)M'J s #U! ` )# HV+c @& HI)'-*%( ' /* '2'O;52'!S %G )2 #\ ) 4! 0-0!"i >- [ G0 HO 3I,- )M' ) 0 .U'=3 0,8 u )L $] ,- ); '8: I'#%G )A >'1 3A)+8K-1 @)+/. ,' 7>%( ' ')+ !c'D)+/)+8?; h .U'#3 0,8:)4M)2'< U!/- q # )4![-. 8: - *"$:3 0,8:8:);(t %2$I) ( U!/- q ? ) $ -!?8: #)'-&HIi%2W 5')4/ , 8:' M'-( $ d$)b )( d$ U!/- q i #)%PRQM81)+ HI@ -8 $; 2.6.3 Single-Thread Input/Output " #" iM' )b) *%2)' %Y' %6) 0 .U':3 0,8:)2- M >#'()3I )33I 5!S 5'.Q 3 3; 2.6 Example V: SimpleMain " " " iI8* 3 0,8:)J HI -!M8:' ) ! )))) '/W%2 6 ,dW' ))> HV+)* 0W) '/J%2: 0;>i)+Of?8* &3 0,8_ )#\&) )' %(9 @c 0B N%PRQ8:' ):\&!S * )) C[ W' ):) U #!)FM^! 8 ' )3I ( )) )90!"; 2'; )90!"M ))bH )5'( 8:8*.Q (-08:) >:$ !$-U~L?-)'.Q f 3 3 *H0D)+8:)5!S 2'; %PRQA8:' O;fQ5'*)+,-)5' %PRQ#8:' 8*- /; & 8* /I)H) -/?'))+,-H/ '#8* ?' -@^>! 8| )) -!90!"I%(' ,'J ) - '.Q 5 3( x- 3)+8:)LHA /*'.Q H0 31)+8?;Q1 )10, /W))8:&'-181 . '?3 0,8:)%( c)+/,' 7D' 3A? 3 %( '? @ '; 2.6.1 Main Programs c 0ME}#)' %()(- )( ![)G!S 3I!S 8: 01,'-,. 1 3;J2'S!0! #U! ![> )M\) J^) J i! u5!!L - 0:'-A AJHI@ ' J8: M *9 HV+;x'-`)+8:):- 8:3 8: )(8: )%(' A'.Q R)+8:)(-D 8:3 8:*) HV+); 2.7 Example VI: Character Interfaces #" " 2 '# ![FS!0! #U! \):) 0 18:' :%(' ,' )AHI ' $ N#"!c?%G )@ ,'-,( : C[3I )) H /F2)'- 3()+8?; 2'& sS!0! #U! 1)+ )R'4) 0-5 ! #I S!0!VPRQ2H/8: - 0b'% $( ,- D! 8]'48:' O; 2' )2 -)4'-5'G 8:3 8:,- M8*/# b $ d$G8: . 2.7.1 Restricting Signatures #S!0!VPRQ #" 389 #" i c 0$> ~ H[Z )5)+/)+8?$$/18:' 1')b,pm j n qq n kl* - 0:%('- ,d)A-#' >%('?'@8:' ) $ d$O@Gpk o o[n kl>llIk o o[n klA - 0('5 ,dA'- 3 )43O-)c '-58:' O;Li)+,2- H )5-cV+)+ )3I L)) !f8:' ); i=@$/]- H ')J]pU n kl o ,,1]$/ 8:' DD )+ 4ApU n kl o ,bq n lI o p,;52')5i/3I) D) 0-)c-/D !S 8*- @u R3 c 0$1 ~ H[Z )(3I8: )) )>3 J ,- ); 2'#0 i/3I1 )A 'D'#8:1 !G* ,dJ K ; ~ 0 i/3I> K! 8:)1'-M'? ,d` )* :' OG 81)+HI#u HI!S 1 $ d 0:8:' ) '#- H ; ~ 0 Ji/3I# ! *8:)'-:CU$F ,d : )@ %G/)D)? 3 5'( )+, C[HIFf ,d A )2 %G/)b' 1%('1' ) - H : )D &) 3I;*2'10 &i/3I1 B! 0- !2$/ )+,D- H D )M )+ 0 )' 8: /2; <HV+)>C[ M3I /8: 3' Mi/3I)@'-18*/& * HV+) r 8: / M -!Z u5!!O ; s$FAj:MlIk o '$D 0 ?i/3IA V! ) D $ d 0#'8 u )( H, 0 ,dI2` HV+): J M'$* ,d) ; M !' )>3I /. 8: 3' 2i/3I)$%(' ,'*-5.U 8:28*/1 '2 G HV+) @ c*0 &i/3I1 !p8:)'-D'1 ,dJ )D' 3 . W'-*'?- H J )>6 HV+;h ) )(%( c) /?'$@10 i/3IA %! O ' 0' . ) M'M8: D # M !ic'M- H ( 0->%( 5'$ M0 Ji/3I@ ! /2; '@33I )# !5' )A /) ) %2M-#- 0 )A)D !5'/J-1 ,d$ONR' %2$R) '#HI# >81 3 D!S)A >* O),' =i ,d > 3I,- )?HIA 3 8: 7?%G/; 2'!S >$/8:' M )+ 1')M?3 ,- ` ! /2b?3I8: )) ` ) )+ 0J !(' ) /2 81H %( ''@0 i/3I) !b'13-,8M. )3))? 1'@8:' &C[ 01'@ 8:3 3-,8:. 0-0!"F,;>2')10 &i/3I)D33I-@ '10 i/3I) 0-;52'0 >i/3I) 0-!S #8:' :') ':!S 8 y !#" $%&+zUN 'J0 ]i/3IJ) 0-J!S JW )+ ?')>'J!S 8 y '()( * +,zU;1CQh ' ) 0:3 8M. $1 D$ :V+)+D 8: '- !#" )3I \- R; F5,.' 3. ))#':0 Wi/3I* !('> )3I 0J3-,8:' 01'D $ - !4'-8:' O/N D )('A0 ?i/3I %! 0- )G'D )+ 0 )' 8: /2; x 8:3 i/3IA,',d 0# )33 > #0 ?i/3I)2): 0-,M'-@/J%2 .U!S 8:>3 0,8K )A,. ! ; c )+-%22 )))R'22i/3If )f))8: 0G'-L$/ - H ? !A 'M'93 8: $*i/3I>')MHI - %( '#0 ?i/3I>'-($/>8:' > )+ ![')5HI> -M%( '>A) 0-A ,-1%( ' 0 ?i/3I); x O2%2?3)>&)+, 0'!S %G-,6i/3I !SJ . 0 '8 %(' ,'Y]HI33 W@3 0,8:) ?%(' ,' i/3I@ ,- )A33I- ) 0-)H - H -,- );2' )* 0 '8 '> ,-)> - H )*%( 'Y&0 6i/3I?)- )+! / 0`'?^Wi/3I ,',d 0# ) (iV+)('A3 0,8?; c /%2G8*3D'2^ )+ 0D)+/,-^D 'b ,- !f' )2i/3IA)+/)+8? - 0M'D![ ); # )5! S!0! #U!#" G!"-u5!! | k$@-$ o }" #S!0!VP )0!DQ\ # )5!HsS!0! #U!#" G!"- S!0! #U!#" | -$ o }" #S!0!VP )0!DQ\ # )5! S!0! #U!#" G!"-sS!0! #U!#" " | }" #S!0!VP )0!DQ\ 9;: <>=@?BA C r=@KNO&=@K(T\KNA1?BQ#WFX*A`k E J I@WZ?BWFX*KNA1? 3I,- )8*d 01 1 L3O-; 2' S!0! #U! OO%(' ,' ) 8:3 / )-,)(,'-. )!S? : I!S')+ )'@) 0-1H/>8: - 0 '; #"!1 ,- R8*d K0 #S!0!VPRQ@@ .Q / 8:' O; i>0,[ !41 $* ))( -$ )(@8:' * !f#H) ))R 8*/>)+ '@) 0-;Ax 8: - /I !bM ))A 8M. 3 8:)J ![L A8*/ )+ '#) 0-; ~ ) 0. -< "B}"1 )b8: G)+ $':) 0-; -!# !R ) /? ,- O)-B EB; -!: )F $M8:' >8 "B}"* 3) ; PB; -!: -)#3-,8:B) #"!: "B}"*. -) ;) !"; TC; "B}"J -)A'@ !2J, -!? ) ; B ; -!9 3))3-,8: 0 )? F! "B}"D ' HI) "B}" -?) 8:D3-,8:K) !:'- -!# -J {!# ; )=p, bHI)C -!@ $ )) i%2 ` 8: ?0 )? -Y)>)3-,-J0 ) "B}"; 2'DHI -$ )G0-,'-(/:8:' :)- )+! / 0 '8: )+ $) 0- ) `)- )+\)*'?H) )) ) 0-; " #" " " " 2'COMPILE-TIME -*'>d )# !CHECKING G)+,- >,',d 0BM' )(!S ,',d 01'-G!S)$( ))(0 HI . - )'c )R!S 4!"3#"!'f )O!S 4$; 3. G %W!S 8* 7G'2i/3I2,',d 0 )4'-5))G'- HV+)1$#HI: /))O;?*-* $. 0 0 '@!S 8*c,.U! #i/3I@)+/)+8 B! c 0$& ~ H#y DE}-zU; ~ 3- - 7- ] !A'-*)+/)+8 6HI )> M)' %=@ MHIA,.U! ; 3.1 Region Type Checking 2'1-1 /?!S D )+ A)+,-8:i/3I)( !S i/3IA,',d 0B 2lk o[n kl5452'D)+,-8:( ) 10 oS k3 3.1.1 Guava Region Type Checking 390 G A@/i"0%P# $zU@Y') 0- !#'&)+ &8:' Y ) y /2 /2 zU; -,/)? ! 8: ) A )'@) 0-# !4'D!S,'J8:' )#y ) /23 !#" zUI 'D) 0- !O'G)+ 8:' 1 )y /2 H zU; ,')5#)+ )4 D3H b\ )5-() 8: - /#- )( $ - ) !4#!S,'? #)+ @8:' * 'A H. V+; &)+ 3I,- )@ !(3H 1\ )A'-#-: )@- -*)2 $ - )2 !L8:' )5 :' 2 HV+; G^8:3 !f#3H \ . G1 !c )) @ )( - %( '?i/3I )~'? )) M )(-) !4 ' !S D8:' )B:3 D !b8:' )( *!S,')+ M )~@3 f !8:' )R !S,'1@)+ G ); Q!')>%2 -9)M!S,' 0' `' $ d 0D')+: 3I,- R' )b%2 : G3 'D) *) )) A3O- 0M1 3/> !c'A )( 3O-'A ; Y ' ?18:' *%( '?) 0- y ! %&+z )+ (%( '?) 0- y 3 z R )+,A- H )G'$0 i/3I /2 ))2'/ -, ` >&)HI ))( %(' ,')?'/9'$ 0 i/3IF ; ef-,8:) ')D0 i/3I ;>2':- H 0- %G/)1')#0 `i/3I /2;&2'*0 `i/3I: ! '@- H )@ )@)) 0&H/'1i/3I1 !S: 0 '8 ))) HI %D; b)# !4')@ )I ))+, 0'!S %G-, *)' % '- ' - )>8* , 9'-*%2-J' 0` ,d)>!S /*0 ?i/3IA8:)2'--@ ) 3I;bi /#' HI0 )#' 0? /& )# %( ,dIB /2J )1 5'-# )# ) 3I Y' %PRQ8:' !M'O; Y'Y $ d 0 `8:' O !1 ? )?] HV+A'6'%( @HI`0 i/3I:8:: )3I 0? )# ,dI;?Q!( 1 )1?8: # c''M0 `i/3IM8:1%( 2HI( 4H1 ,d %( fHI@u O;(i? ')I'@ )+,@- H )'- -? ,d$WH/ /2&%( HI> 9) 3I(' ,d%( HI1d %(J HI1' O;Mx 8: - /c/3-,8:)A%( ' . G0 9i/3I 8:)1%( HI?d %(W &'$>' * ,d) ' ?HI)@'/>%2#' H/>'@ ;(Y'? 0 ! 8 D8:' M '2 @ ,dM )b )JC[8:' 1%G)2 > HV+F,L #* ,dJ ) )OcHA *!S)D HI &H/ ' )? ,d -D ) H ; Zhoo*# :Q\ "/2 ~ ) )8:;G1')50 *i/3I %&'-B/#')b0 *i/3I c'-#,' # ')D0 i/3I 4J'-#8:' /i 0]') 0 i/3I&) 0-6y * $ !#" $%&zU;2'`'*)+,-8: )G%2 .U!S 8: fB b |-} E C F C ) $F,;62' ):)/)M'-: !'>!S 8*(3-,8:) '$D'@)8:@0 Ji/3I'?'# )3I . 01O3-,8:)b81)+2'$(')8:0 i/3I; |$E , ; 2' )@)/)D'-@ !(>!S 8*53-,8:# 'D' 0-? )M))8: ,d$Of''* )3I 0 3-,8:>81)+>HI))8: ,d$OH ' ?8*/WHIJ))8:9 ,d$9 ) 'A8:' *H( ,d$> R; l 4b2'D)+,-8:( ) klq o p, o kp 2lk o[n k5 G A!2 qH q P# `Loo*# :Q\ ~ ))8: G ')A0 Ji/3I O'-D,' # ')0 i/3I #'-5'(33 3 - )+ 5!S qq ')(0 i/3IA) 0->y ) zU;b2' 'A)+,-8:( )G%2 .U!S 8: !iB P|-} $;2' ) )/)2'-G !c'!S 8*O3-,8:)G'$'A)8: 0 i/3I2) &%( ('3-,8:)( !(/J!S 8*5')D0 i/3I /2f'' f3-,8:%( f'$@'#)8:@0 i/3I )G'> )+,; |$E L L ;22' ) )G'A)8:A )+, A)G!S 8:' > $ - R; ) R' ;#2' ))+ . Q! qq 3 W!S H ):8: )M * )1! 8 HI 03 . >H/ 1 ,d> ?) 8:D '8: ( ; 2'!S I ) A'D8: 'A ,d )))8: ( :HI@' O;G2'D)+ J ) )+ /))-/5H# M$ )1, W 8:3 ^ ) - ); q o[n l 4b2'D)+,-8:G ) G A P,R Q/& Q! ,A ) # )HI ))L''10 &i/3I %! G:81)+(HI3 ;(<'%( ) '('0 ?i/3I) V! G* /M81)+GHIAuO ('0 i/3IA V! GM81)+ HIK ; l 4b2'D)+,-8:( )B ( o p,5 G& 2'#- H F G>81)+'$1M0 Ji/3I@'-8*-,') 'D?i/3I %& !4'@8:' OZ )(0 Ji/3ID) 0. -; ~ c1)+,-8:)(-D ? D !f'DHI -$A!S (!S 8:); ('A33I )D !c' ) /) )B ~ )) 08:)A%( ' @)+)@HI'$1 d$: 8:' J %( '?) 0-$y /2 !#" /2zU; ,')@ -,/)1)+ )@ J-,/)1-:-`) $ - ): !@!S,'8:' ` >J)+ 8:' ` '1-,/J HV+; @-,/)A !b HV+)R'#) 0- !#'!S,']8:' 6 )&y /2 !#" " " " " " " " " " " " 2'b3 )c )4))8:A'-4$/@ -#- H 2 ) ,-*%( '?@0 >i/3I8:;f%( R %])' %]' % ,d$GA3 0,8%( 'V+)+40 1i/3Ib) 0-)5 8:' )? )+ )R?3 # -,- )A !4' 0 :i/3I(8:2!S 2,'*- H (%('$5' )5 )b3I )) H ; i !['#HI -$Di/3ID,',d 01 )3 - @M)+, 0'. !S %G-, 0 '8 !S # !S 0 i/3I);#1HI0 H/ 0 '-4,'M )+,2- H G )4 !0 Mi/3I /2@ % 3I 0 W )1 ))5'-F 0- )M %G/)1 !0 `i/3I /22&'-13-,8:)# 8:' )# M )+ ) %G/)1'$M'M0 `i/3I:8:)@0 $ ':8:' OZ ) 0 ?i/3IA) 0-; 3.1.2 Type Inference " " " " 391 L *3I8: )) 0 0*!S)A !5 .Q O0 i/3ID - H )4 f!S 8*3-,8:)c ! 0 #i/3I)%2b ) ^,M8:3I ,-/- H )%('$D:- H 1 )A3)) #!S 8*L- H D !f O0 i/3I;52'- ) 2')1,',d 0* )A0-,#'-D/8:' D . )+ ? $ - ]'-?8: 0'?u &` ,dY )? - $;Gh ' )2'-(- $1 (HIA))8:* 1HI 8:3I *8:' )5'-G-HI ' $1( #"! HIA $ d$*! 8 %( ' , !"*8:' ); ~ G $ - )M !A8: )b^31!S :!S,')M 3! 5) \ )L-M0 H4H/![ ;Mx,'J8:' )A > D'$@ HI@ -8 $; ~ /*8:' * ( )+ ('-( $ d$)(#0 HL8:' )+ 81)+GHI@ -8 $; 3.3 Checking Global GLAH/i"0%P?@8 Q\ ) /7 ) !f (%2B A @ @A@i GLAHi / "0%P ,Q\ *$/W)+,-8:M%(' ' )Mu i%2 0 i/3I)f AHIGu[1 G )5d %(M#'G '5d %(R 'd %(Mi/3I( )2)2u D'd %(* ;GCU2' )28*/ 00c!S'f33 - )f !' )L 3I,- R; FDY'$R' )@u Mi%2 0 i/3I)A HI:ubJ'/ O 'D3 0,8 )( .U!S 8:O; Q!G-! 133 / 0>':HI -$M 3I,- )c'18* &. d %(?0 ?i/3I)%2@)-!S /)')#-H ,- /I; 0; 1'>0 ?i/3I; ~ @\)+#H )' #8: 0'#)8a)@' 0'W 3 0,8:) %( D)O? Y3I!S 8*J - $J `'Ju ?"$ 3 0,8:)) I))5 #/13I /M)'-:81,H -,)+*81)+#HI>)+/,' 7O;t %2$f'*81,' ) 8:3 )8* ) !b1)H)+, /? 8:3 -$AHI ' 3 )) A>81 3 )) 3I!S 8*; x 8:b"$3I!S 8*b3 H 8:)L) c! 8 '5![f'- "$D)+/,' 7Y HV+8: 0'?HI)'-O@ 8:3 )>81)+*HI%G-/YHI > ,)+!S 8*- )>'- %2 @ -b8:8: / , 0 )+, )c !'5 HV+c%2 )'-:H/M81 3 2')'; b) !O' ) 8:3 )b81)+ $ #8*/A $ 3 8: 7- )@81)+f ) A . #3 )) .Q $f)+/,' 7- 3I,- )'-%2 GHI: !c 2%2d %(:'-b' HV+G * GHI /&)'-O;?ef-, ^ /f' )# & :3 . 0,8:8:)c D -2'28:' )f)+/,' 7@ A05HI 10,- RcH'-%2 J 1)+/,' 7- -$'O; <'f 3 8: 7- )5-2 ' H #HI)G"$ )f 5H 1,,d*'-) 8:D8:' )(-@3 /> f>'-) 8: 8:' )G-.Q /%; (^8:3 # O 8:' Y )0-,Y HI n ,jk o ,l o )) ) ? )> - !2;Y+8:3I :8:)1'->/`) *3 ): /93I)M 9' 3-,8:)M3))W & &'!S >'-1))) $> )1%( '`'*)8:*3-,8:. )#CS%( ' A/? $ 0M3O-@8:' ),F28*/* 'A)8:A) ; iW' ):) 9%2) HI ')?3I!S 8*?O): , [; 4. PERFORMANCE: JAVA VS. GUAVA @)+/,-^: )G : %G-,)G8: 8: 7 0D'A8: !G ,- &O;@#'$1)J'-D- H : -,-. )cu b )+/,-^@-4 ,-b0 )$) b') i/3I)(-#8: *H/*'i/3IA !SA ); i)+,- H )(-A %G/)2 !Li/3I /2M B #. 3I 0M >' -0 /; 2' ( 8:3I 2 !c$/:8:' :) 0-A )( %G/) -#) /2$'4' )L 8:3I LD cHI5%G . R; ef-,8:)'-A-#8: )A? )A-1))8: HI ))# '%( ) - !4%(' ,'`0 $)@'8 > u#0 i/3I18:R {!#R%(' ,'&0 $)A'8 ' 0 ?i/3I 18: /2; <HV+:3-,8:)MW )1 !8:' )1 ! H. V+)A-@))8:> :HI /2> )) '%( )@)3I \OB :3-,8:A B! ! DM @ '! !2 8:3 )A* )+. (0 i/3I8:N13-,8:( *! )=p2 8:3 )(1). )3I \>0 ?i/3IA8:; <HV+3-,8:)(* )G !f8:' )G !f8: . )M& )f 1 !(8:' )D ! ![)# 1^3 / ' 0! 8a HV+*->))8:& J,'`'$> u 0 >i/3I(8: ))b '%( )A)3I \OB4@3-,8:2 ! $ : 8:3 )(1).Q)3I \>0 ?i/3I8:; 3.1.3 Mapping to Guava syntax " " " " <A33-G : /* !L') R)8* )2 !f8: . ) )'-') ,d? 1 ' ;i81 3 . )) >)+/)+8:)b81 3 >:3-, )8 ):)) (!S ,' 0 ' 0'3I!S 8*;#i&"$V -/)01"J8:'. )-@^ ) $;b2'D />%G/> :,' $D0, .Q33I ) 81 3 3-, )8 )G M3 0,8 ^3 /; i8:3 8:,- )c !LM^2M8:' )f . /;A2' )AHI' A )D,' $ M![)' &) 8: - i%2 .Q3')> ,d 0J ,) W)+/)+8:);Y'`?' ^)A:8: A8:' OI Du )D: ,d? '#8: . ;&Q!('>8:' & ): #"!8:' O5 $ [ ^ ) $D ,d )u O;bQ!c'D8:' > )F !"*8:' O > ,d )#u O; ~ ,dHI: H, &3 . :'-2 1 '2'*' )G@%G A ,dIN'8*/:HI b)M !b .i8: )8_C[; 0;@ - 0:% HV+ 1 0@ )5')' -F,))) $ )5%( I b))-. /?'@)8:@) NR' %2$I D )A %G/)A A!S 1 8:3 ( 13 A'A81 3 A )H/ 1) 0 @ [; 4.1 Multiple Reader Parallelism 2')5,',d 02 )R0-,4'-R%('$cB !"8:' !I8: f )f O'-c#8:' @ )f f3O-b/ !S 8*- 9%(' ,' 9HI 8: )'-9 !D ':' %2> /`^ !"&8:' W'>)8: 8: ;4Q )G'!S D)-!SD!S A? 8:3 8:,- * M)D i%2 .Q3')A ,d*3 R >%(' ,'>>8:' )b ^ /; ~ !"8:' D8*/D f^' $@#"!8:' ); ~ !"?8:' 8*/ D3O-1/J- H )A%(' )1. 0 ?i/3IA ) /2; ~ !"8:' 8*/J D $ d$ #"!?8:' )A &/ - H )(%(' )A0 ?i/3IA ) /2; ~ !"*8:' 8*/> 3))/ - H )(%(' )@0 i/3IA ) /2* M/*!S 8*L3-,8: - #"!; & &8:' `8*/W $ d$ #"!8:' )M 3-,8:) '-(- * #"!13-,8:) G3))2),'*3-,8:)b /*!S 8*L3-,8: - #"!; 3.2 Checking Read and Update " " " 392 ] HV+); b,d$)! 8 zN{*s-]8*/ I3 J 6H,d$) '; ~ !* )#'`81 . 3 zN{*s-? ) '#-,/J-@'8:) $) )SV+ ; Y ' c')b0-,)C[; 0; $ 1G0 -5"$ 8:3 8:. ,- IF4 5%2 :HI()-!S( @))8:G'-b,'* ,d13 ) 181 /*^ ) $D) !f HV+); '(')(' 0:# ,dI; 5/`'> )M !@G98:' %( ( :^ ./ $#"!M8:' ):'!S A 2%( O$(-. 8:3@ Ju > '#%G > ,dI;JQ#%( 2 /&%G * )+,,d>- H )> M HV+)3))>! 8| )( )I$ 1 )+,- H ) 2 18: ); ~ I8: \:- H ) -? %(9H/`) 8:?8: : : ? W' )+,,dING'. !S :'/&-: ) H M ? '@');>2'): HV+)1- ) 0-,W # J3O->/`8: 4 0' 8: , 01' 8:' O; Q* )>3I )) H !S *'HI /9 !@6 *8:' W $ d$?lO,q o :8:' )D ` '#8: );?Q!G M ) @81)+Du M* ,dJ)DHI!S ;Mt %2$L)D i%2 . 3')# ,d 0'D ,d !4'@)+?8:' 8*/ HIA )? I'A ( 8:' * 8:3 ); zN{ x 8: 8:)>Y 3 8: 7- 6%( A%2 d Y, ]81 . 3 )) >-,' )M` M ');iW M 3 R5 )G) ( 13 0,8 M#)+, 0'!S %G-, 8: .QH)>H. )+, 'W$ 3W 3 8: 7)1)3I 7` ') -,' ),-'G'> G'3 0,8:8:2/: 1 D )33I ) /D3I ,H 53 0,8 ) 0@ 8'-L /A%2 d) %2 bC[ - F2 ?, -,' ); i>' )() %2D3)() 8:D^8:3 ); 4.3 Multiprocessor Issues ~ ' 0'# 0 /$,'1 8: f8:' D )f) . 7O f )c3I )) H b!S b2 c'-c f )c8: b: @)A\50, - i/: !R ,d 0%(' )+ I,' 0D' )8:D)8* ); gb ) >'? )N) U0!"*w-)09 L c 0. *P* !(x `P;:2'M )#>) 0 M )+,:- H R' -,F/ N{-1,':8:' 1 $ - : $ d$)581,-. A8:' ? :) 0 1 8:3I !4'1-,/;A2')@i%2 )bH G'G 8:3 5 D 8:3 8:5A)3-,-( ,d !S 5,'1 8:3I c !'G-,/,-'c'1) 0 G ,dD!S '@ )+,@ !f' U0!"*w-)0; ~ )1) I81 3 ')@ $ d$M8:' #VPRQ> &':)8:: )+,: ! U0!"*w-)0A%( ' f ,d 0 b 'f 3 - '-('/ )) O zN{*s-> )+,); 2'& ,d]0, - i/ 3 8: 7- ]u )W!S%a . L3 3I )G MHID8:B Q581)+5HI(3I )) H ( @\(: ,b !I'( ,d)5),' '-( ? R3-')2' )D ,d)2'--@u -@. u 9 9')8:? ,; <'%( )G'? 3 8: 7-. & *? ,dJ'-@%2 & @'$ HI3)1 &': 3 8: 7&$) R;?i&' )#^. 8:3 L D )@)+, 0'!S %G-,&HI)M 3-'J' 0' '&3 0,8s$u )8: '] & ,dI; i 98: 8:3 -H? )+ ` 8:3 8:,- ! U0!"*w-)0!S ^8:3 ? '-*3I / ) 7A'4H,d$ )+'5 /) )R%2 DHI4 ))L)+, 0'. !S %G-,O; ! #"!( 3I,- )L%2 f^ /A ) H 5) 5O)R '$5 HIG /D ,d$b3 ( 0('b ,dD ) 3');5<'%( )2) 8:b^8: f # H)$ '-R'4 3 8: 7A8: R%G)cHI 0(^ . /,-'#') /;JQ!G'):) *O)#RZ HI28: -$O'@'2 3 8: 7- M 5HI23I!S 8:O; i1' )5^8:3 '-( D),'M) (O)HI) ( $#"!-:-D3I!S 8:O; 2' 8:3 8:,- * )(H #^3 G'( )G !4; 5,' zN{*s- M &'*-,/& %()1? )SV+ 1)# ! 8:Q!L'' )G)D%2hAE@r (%('' ,'J) ()A%20 H >fHIA-3I H)) H~ D!S (?i%2' 1~ 6 hP?r %(' ,'W):0 H- H N `' f h^P1)G 0: % ~ />%( N '*h;E(2)' 0@' A~ %2 1HID%H M) ,4 !IhEG1hPG ) )+f%( '@')5) );5x 5 ,d) / ,d? %G )O'@ ) > c3I !S A ,d> >HI)D !f, 01')D ,d); 4.2 Lock Granularity ~ 8:8: Y3 0,8:8: 0W 8 $ $)>)+ 0` bHI!S G#-! 51 3I,- R c%(''4 . %G 1 3I,- &') $O;@x,'J 8') HI33 OO!S D^8:3 I'@8:6 = yA H .+gb',d wR ,d 0 > M'A3 H 8 !4^ / D 7- 9y PT-zU; 2'(:/1 !O' )4) b !O 8 8: 0'5)00)+2*-08: '-GA)+ * 00A),'*)(D3$)53 0,8M. 8:)2! 8 %G 0M^3 1A ,d 0M -$'O; @ (' )-08:H/ 0BAC+E-F2'-'@ . )H 0M' ) 8| :HI@ u D ) ,H O (*)d I M(:3 -$NRCQPF4'-2'/: /:%2 d %('>' / 0#81 3 )) ( 'A8: I8:) , W )N26CUT$F@? 8:3 #!S *?`0. ,-:'* H .Q,',dJ > 8*- /&%(' 1) '-:'J33 3 - )>-8:():%2?%( )' % HI %D; wR()2 ) ('8:' . $M !f )) zN{*s-*) HL / U0!"*w-)0W '?^8:3 ! 8 x ]P;Y '$ /9 )))'-M'>WHI > ,d`3IM . )+,J ! zN{*s-9,-'>'Y J ,d9!S 'J U0!"*w-)0;at %2$D%(']'`-) 8:3-') ' 0'1'G8:' @'-b-2.Q / C[ 1' )4)'2 %(''> )G! 8 ' !L'3 20M 3IF,%2 /Ju 0*'@%G .Q ,dIR?,)+!S 8 '# `%(' ,'W.Q /` 3I,- ): WOM3I!S 8 3 8: )+ ,d 0:))' %(? , c 0:EE; iA c)00)+D 8:3 8:,- R%(' ,'D )c20, 7- !R H .Q,',d# ,d 0@ $#! 8 3 8: )+ ( / Oy E -z'b$) #81HIL )f )#H/D 2,'@ 8: 1%G @ ,d )u O ) :,'? 8:D D )( )O; 2'M)#,',d'-@'M$) )#$C[ ,d$FA uI 1'$) -G'AHI0 0M !L'A 3I,- R; 2'@ 0 '8 %2 d) A3 - OB E;(2'D$) ?81HI2 )( - 8: /C[$ - -F P;(2'# '18: L0-,)'-D/ %G )A3. 0#'A3O- #'A$) 81HI2HI 8:A ) . H A :/*(%(' M))('-G'A$) ?81HIG ) >'D$&C[ ,d$F5)+,-; T;(2' 3I,- )HI 063I!S 8: 3 8: )+ / -@ V I)8: *H/?# ) Q!L' )(@) 0 A3I /> !S 0#%G >>. 81H 0 )D)+# )+ 0 )'': &! 8K':% ' )3-,-*$) 81HIA\ )@OfJ' 0 '8 )G 1'A8: ![8: -A H .Q,',d: 8 4.3.1 Double-Check Reads 393 }! )H}- A 3 0,8:)G :)D %2.Q )+A)+/,' 7- ? 3I,- )'- /?-O) 0 D,'D ) (%2 ,)( !f)+ ,0; i13- -8: 4%( 'M /1 2%2 ,M !O-,%(' ) 8:' )b- \ M .QH ,d 0D:HI 8:3 8: ) 0`- 8: J3O-? 3I,- )&C[),'6,) 2!G1x-2G '@ec %2,ebgI K S! SVw* '@ec 8>F,;b2'D>!S A )3-,-G ,d# )4 8: -OV; '8: #%2d /1 , 3 )) )1 d$M':ec %2,ebgc'M )# ?J!S 18:8: / H- # )+ )c%(' ,'`-:H/J![-@'M8: )+# )+ /&3- !4)+/,' 7> 3I,- ); 2' )L )R )+,-D c 0(E-P-%(' ,'D)' %()L' %` 7 I M $& )): `HI '9"$JW?'-1 8:3 8:)# 5)07"7""VPRQD8:' O$:A3I )) H 8:3 - : D 3. 8: 7 ec %2,ebg]))81H / ; <1) '-@8: M 3 8: 7- )@3I )) H * W )5'-2 b )b 23I )) H D)+/,' 7 *-H ,-/: HV+)N $J!S @8: )c 4)+/,' 7 0 3I,- )#-:\ H/@'G8: 5 ) !i;52' )58*d$)f 53I )) H G!S b)f D 8: 5 ,d>\ ! 8 ' 7 M $ HV+A />rs%21 (: M 8: -F -/)01"VPRQ1H ,d)2'-(8: 0' ,dA'b HV+;5x 5%22#)2H/D )3I 0 )f ))fHI / '-V 7 M $@$f3I!S 8:)4C 2VPRQ( 3I,- )%2 8:3 1 !5/VPRQ:8:' %(' ,'& )A ' 0>J 2VPRQ28:' (%(' ,'D, )) M $!U!! G!!#I; U $VPh{/Qh| ) } Ah}-i ) AU /D| 5! P#zN{ AL0!"&N AH@N AL GQ | 5 P Ls M AA P }Ah}-R} AA QQ 02 !2 # " 1 G!!#%PRQ\ -! 5 P {i / O-JP {/QQ | 5 P }h A }-R } AA Q 02 !2 # " 1 G!!#%PRQ\ -! "!@ #" #" 5 P }h A }-R} AA Q 02 !2 # " 1 G !!#%PRQ\ -! @ !)0 P G!!# Qh| " 0 #! #" ): *'$>' 3 H 8X !%(' : )*)-!S , #)) 0*3 / c)+,,d )+,@- . H )F; D^8:3 O'@!S %( 03 H 8 %G)DH 0'A3 H/:'A) ' ( !c' )(33I 0#' % !c' 0 f"$MwL00#x3I \- RB 4.4 Prescient Stores -/)01" }" #VPh{/&, }- U 0!" AL!2HzN{VP{/&6"!@,0!"Q\ }- U "!QH| # ---!! #B}! ) G A U #B}! ) / A U 9;: <>=@?BA CFCFE tOUKS:: o WZKS: M>T f@M>=@g&e A XVI@A`X ?BA1WFfUk MFQ | # ) " PRQh| ) A G& / A @ %P?Q\ t=UXFA1K :kNK*a <FA1K =UkS:T@< ; ~ /3O-)# N#"!3-,8:)M- HO` /M -! 5'G\$) *81HI4,',dI ;(2'D 3 8: )+ D @,',d)G^3 /> MHd> \ 3) (-,' ^3 )G'-(8: 0'G )@) !( 0 1 )5)1)' %(` &'*^8:3 4%('5$/ s M 8:)L- '4 3D'5$) 81HI5 )5,',d$O1' )b ): > / H ,dI; # ) " PRQh| ) A /& G A @ %P Q\ x33I )1'-@) 8:M )+,: !( )) -!! )#)+. ) H 1 *i%2 *')L'-A #'J )D8:' `'? ' ; ~ : 8:5'?"$ 00)3I . \- &u J'-D'M^ & %(' ,'HI '') '1 :P* J @ ;MwL-R'1)3I \-. :%G)b -^OHb *0,I 2 I3I )) H .Q , 0) H/ 1 8:3 -@3I8: O; i95 ! -!! ):, !b'>8:' )>CU. ,-WF) #"!F#%( (HI>) 7OGW ! -!! ) s( > ): 8:3I )) H ?!S >81 3 ')M `))>/ )+,;5 , 0M ) %G/))-!S; 2 ':)8* )@ !G':"$l kM 3I,- `)3I ! /'- S8: \- )c8*4H/A'5^ 0G'D81)+LHI 8: 0 H /` ) H ;?2' )@8*d$)D)+/,' 7&8:' )D^3I. ) $) D i/,' ) 81)+*HIJ)+/,' 7O;i LHI): %()' 3& )D^3 L'>l k 1 3I,- J /J8*d$1 ) H #'1,'0)A >'1A8: CUM/#%( /M -:8: ),F,;f2' )5 7- * !I' )+/,' 7- u 8:)18*d$): *3I )) H ?!S ? iW'?)'-9')',H ?^8:3 b' ):8: 0'Mu ?. 0J' 20 39,',d 0?'> ,d-! :,' & ,- ); 4.3.2 Synchronization Optimizations " " 4.5 The Reads Kill Problem 394 5) --L7#" M $ | #B}! )H} A U # -/)01" ) ) G Ah}U } A !""!"& G& 5)07"7""VP )D!""!"QH| CU$FG"$13 0,8 1 8:3 8:G)+/,' 7>)'- 0 8 #)-@@0H7#" M $ )-@0 !""!" 8 )-@0!" " ! "" 8 NN { !55-! N#"# !""--L!5 N{ 2!" 2!G @ U8 ,!" N{ "L-!o} "#2 @ N-HHN{" G#!-B }V sN { )$ U $@ -2L#!0 -2i G 8U U8 ,N { L/ -!)$ 0!" " I 5L-!o}! -& 8/ -/ 8!-) N { 0!"H5! !--)$ "! 2 8 ,!L " }L5!!" !"" @8 8 ,!"" !""!" } -2 @ 4P Q N-!@#"!h " } -/ " S {@#"!- }-)LL!0H#!--!! N-!L@ -2 @NN { !55-!VP Q .N { H/ -!)$ N { 2!"L " 8 !L " } ) 8 C[HIFG<3 8: 7>"+Y 8:3 - !4"$1 A!S Aec %2,ebg 5) --L7#" M $ G!"-H!D| #B}! )H} A U # ) 5 )07"7""VP )D!""!"Q ) G Ah}U } A ! " "!"& G& | C[-FG13 0,8 M 8:3 8:G)+/,' 7>)'- 0 8 #)-@@0H7#" M $ )-@0 !""!" 2!G U8 ,!"L}L5!!" "L-!o} !"" @8 8 ,!"" !""!" } -2Gi8@ U8 N5L-!o}! -@0!"& -!H!2L} I , -!o}! 5UN/ " 8 !"L} ) 8 CUFG<3 8: 7>"+] 8:3 - ? !51 A!S ec %2,ebg 9;: <>=@?BA C`\Etc\[@TUXVI@?BM>TU: o WZKS: M>ThMFOUKS:: o WZKS: M>TUkROiM>kSkS: g&e AmfU=@AKNM 395 ^ =@W1_`W kte MbX*WFe: o A`f kN[@TUXVI@?BM>TU: o WZKS: M>THkNA m WFT\KS:Xok*a x =y zU# )J J): !S H 06 8:3 ^] HV+. ?33 - ) ?8: >81 3 )) ); xH)u# 00)M'-M 8: )5 0 h y P zM gb J4 y E -zM 3 - 0-,*81^ ) R '2HI) b%G)2 G3I )+. ) H *!S M 8:3 ^`-,?)+)4 ?C[ '*)> !Ah . $FAHI): @%G)18: )+ $; iORY ' )+,-8) =Q%21'$D D 3y !S 8: !581R^ . ) zfHI); ; ; 'M-# 0 8*-133 - )%('#),' M 00@ D%2 ?HI@))- / )+ $;Gi?8: )+ ))b b )b #'!S ('G G'-2)))5 D)'- - H )fHIb @ 1# ![28: 5 )f' 0' /A 8M. 8:?)D:3 0,8:8: 0:3 3 >CS,-''J:)+ / !S %F >y P -zU; Y 'RZ )#3I ) W')1HIW 3 J >0> M. 'MH/&8: )+1)H)u# 1 00)b 0 "$ y E-Pzf?h -.iT?y -zU; 2'A8*V+ - $ 18: )2')GHI*'8:))0. 3)) 0@ 00);5t %2$$')( 00)G- ) #0. /1)+ 1 1'G-,i/3I)f'/#M 8:81 -;c2' 8 00My E zU%(' ,'* )2H): *t $-Z )2 ,- *!S gb 8:81 - 0xu 2ef )))y EE zU2 d$?gb ef)[c /)33I ),)8: )) & !b) -)#J-,/)D ! ) -)MC[ ?![O 8 ) $?0-,#81R^. ) M bu )bHG )b 2!S '-5i%2 #3 ))) M ( / ))('D)8:D-,$F,; t8:)by P z )4(8:))0.Q3)) 0A c3 0,8:8: 0 00J) 0W 8:3 8:H/W0 39 0 '5\)+Li%2 A' )c !' )c33I;ct8:)L 8: -@3I . )5 0'Bc'b%2G3 )))C[8: f HV+),F,3I ) C[3H )5 A $ d$GA8:' @ !RM HV+F,M ,'M) !@ 8:3 .i\9 ?i/3I)( 0 )+)?d$/ - );Yt %2$Gt8:): W > % ))M \ 5i/3I) c H D'5)$i/3I)c !3I .QH)@-, )+);>x,')+)D' ?HI1) 81 -J%( '&d$/) Jd$/? - ); ~ ) 0?)+ 4' HIMOL ':d$/)D%2*O $ /i/3I&'!S * 8*- / )))- )+![ / '?3I ); h %(' L8*/ )-,')D'$1-,,d$'#3 H 8 ! 8 '()+,3I 2 !L 0A'H) !L ) 0M ) ?O): &H 8*- ?3-, 7- R;/ ) y PPzO) HI:A 00( M%(' ,'M !S(HIi%2:3 . )@ HI*H) H 0)D !G \); t )5,' u2%G)5 - $ /:) 8:3 (H5 M D -$ /M ). - $)+ )* 3-, )8?; wR)):M O , y E -zI) HIG3I /8: 3' bO5)+/)+. 8:)%(' ,'R d$D )3I \- )( !cHI '>) . O)?60 ); t %2$A3 0,8:8: 0` Y' ? . 00O,h #%G)(81HI) 8:A> HV+.Q !S-) %2J )33I O; '8: (8: ?H)+, %G) (3 - O; h )+() 8: -G 1 G%2 d>-'i) )G !ct 00 y E-zU;bi)+. )(-) 8: -G #'< M !Mi/3I)b ? '-^R!S)( M'D L HV+)-# ) . %2*)+/, /;4t 00# 8: -:') !R0 )3I. \- )2HI)'(HI $M'8 @HIG # 8:3 ^ON' %G. $O%21HI $#'-D),'&33 $,'&) \)A >81,' ^3)) $))1 '* 00; ~ )@%( '`' %2 dI5i)+. )G * 2 A@8: (H)+, > #3$2-, ,); 2'A ,- )G): ?D #3$b,)(-) 8: . - ?- : ,- ))*!S '33I ));4Y'- ),'6 ,- )*'$? 8:8: 9 ):'-:'/ ^. b e40' y PEzA3I ): > 8:8: 9) - 6 9%(' ,' .Q ()* ' H M'? 3 8: 7- !D) 0 >0 )+;:i&' )D^8:3 J#J6O-1!S)@ ? HV+%( '13H \ 8 GB ) LAL#G& ) A OiG& )L{ AL#G& ie40'RZ )*^8:3 B O8: 0':HI6 )> K! #Gd %( &' 8:3 N' ): )> *)+ /))-/Wr O`8: 0' )+9HI 9 HV+:'-* 'M'W3O-)1)+ / -! (3O- 0 #G;fY' ,'$2 )2') /:^ %(' ,' # $)('D3O-> D V! OiG )( !S . > { ?HI ' $M'M & M C! #G; b@' ) 8:)'-'# 3 8: 7- !b) N0 1 :0 )+D81)+ HI)33)) 2' )> )>A ))+>!S ?"$( %(' ,' $/-,/$/ =i)+ > 33I-)A >HIM*3I / )'-9 HV+B' O $)): !A 8:8: 9)HI^3)) 8: - ? )0- />O; 2':3 H 8K )#$%2 )*%('6 #&6 O-*-,/)B1 8*/>))O"$1 8:3 )? 3I!S 8|) -3 . 8:G !4 3.Q - -,/ 8:); iWc' =i) D >J3 H 8 %( 2$1- )*!S -,/)ACS%(' ,'>-3 +b )b <HV+),F,M%( O /*- )!S =i)+?) >: !f'D )+,D )^3 /? -)M8: > !L'\ . GM )G C 5);bi*)' ' )b%( R'$ 1HI 'D)@ !41 />)'- - H (8: /> D'-G' 8:3 ')G M )- $ / ))8:D8: 0'GHID)'-O; i:"$$/1 HV+28*/13I /MHIG ,d$OM ,d. 0: )^8: /*! u) *8: )+' 0'.Q3I!S 8*@ 8:3 . 8:,- ) &W ,d6\ Y Y' HV+J'; i /18: )4u G ,d#\ )N HV+)21 ) %(' ,'*8*d$(31')+b8*V+ i/: !L I )+,)u )3@ -$'*!S ,d 0; ~ !S'>)3 3 8: 7- '-*6HI3I!S 8:9 1 )('-)8* R )+,) '! 5)M D )))HI 3) %( ' DM ))A3I A?J$?HI@)+ 0 )+);D2' ) )3I )) H 1HI)@'# ) * ) 0 ! D )+,); Q@ )# %G/)@)-!SM -* -0* )D @ !G f 3))D'8KH/J!S;C[Q# )# 8*- : W> 3))D )DK) #"! 3-,8:)R) 1'13O- %( L HI* 1'A ; F 4.6 Object Model Improvements $" RELATED M')HI? WORK 7`y zL!S A 3 - 0M8: ) 'D 0 c)+ ))D !f'A8KC[; 0;Ay PLET-zSF,;2t %2$ '2- )+b))f !O8: )f $ $@' 0' /#)+,- G 00) %( ' /8: $ 0 HV+( ,- R* '2!S-. )( !4"$; Y' &8: ) ]' 0 @!S 8s'$J'. ,0 !@3$ 0&0 )* >))G'?- / -8:3)1 &81HIW8: ): &3 0,8:8: 0 00) %2?33 ` J$/)+,- ?)+ W 00); i 3- -8: )f *gb 5ef)Ly T-z%22)+ :3)) 0:) -)A -,/) !4) -)O 3 0,8:)G%2 )+,- / $OO)+,- / )+, -O;Y' #),': . 00A%G)(): G MH >1)8* .Q) @8: )+,- ! 9 3I,- 0&)+/)+8X J 3 )) ()M%G)* >%( ' 5. 396 'M3 0,8:8: ?0D'1)+/,' 7- 0'f ) 3 - )#81,'&)+ 01 !S 8*- `'-@'* 8:3 # )*)1?H) )@!S 1 3 8: 7- )@ d$*81 3 .U@3-, . )8? H .Q,',d:) 81 .Q0, - i/* ,d 0; '1i/3 4i/3IM !S 8*- `3 - ` -,- ) %( '6W)8* !S 8*- 9'-:8*/`HI ,',d$9- 8:3 .U 8:; ef 8: ))y z( )*9 ,- 8:' &!S >"$'-:^. 3)))13 3I )@'-1H *)+,b,'0)# W?)+/)+. 8?;ef 8: )))33I OA /) )H/?^3)) 0:3I . LJ %G #O) !2M8:' J:8*) 8: - >Z );bt %2$' 33I )A%G)( * %=)+, ,'0)2H)* :' )O)%(' DAu )2d %( . 0b !')bO)L # ,L )+/,' 7@))) 33 3 - /;ef 8: )) ) 6') ,- " '-J )J) 8: - J3-,8:) ;_x &, 3$ %G)1 M? Rbef 8: ))1 )1 1 ) ,- )'- -#3I c ))+.i)) 08:)O),' )AZ )G0 ); f^x,- gb',d 0`y -z2 8:3 8:)@` ,- ),'8:G'-2 %()G,',d 0A!S 2- )b3 0,8:8: 0D ) 0,);YiW' ):33 $,'9' ,- ):)3I ! / %(' ,' ,d)A3 %(' ,')'-J- H )LJ*,',d- 8:3 .U 8:2))4'-5- H )b-($5))M%( '. ' 01'A )3I 0: ,d);b2' )33 $,' 1, ): : 8:3') $> W'-: * ): : ! / '-13 0,8 )G,.U! #)( J; c 0$ ~ Hy E}-z\>?i/3I*)+/)+8_%(' ,' ,,d) 3I8: )) )6)33I )>!S ) WHI3-,8:. 7&H/ ,dJi/3I);*2'M0 &i/3IM,',d 0 )+/)+8K ! 1 )()) /1)3I 7- J !c' )Gi/3IA)+/)+8?; c 0$* >y EEz'$G(433I5 0 : J%( ') 8: - HV+ $)( >; 2' 5 4')f8: 5\.Q0, # ,- )c'MB 4- H )#-* ,-H/'1 ,dJ'-D0-,) '8?N ,d)81)+GHI@u ^3 />%( 6' -/)01" )+,-8:); i] ,)+#W))H $]-0 )J ! 8: f 5& HV+f%( '`0,b )133 / 0? 48:81HI) !5'1-0 /; c 0$6 ))) 3 3I )G !cD I'-2,',d)2 ,-*"$@3 0,8:) !S ,) ' )+ / )00)+) ,- ); *'d" )' ~ H,'RyA3d` /[qyD W -$ gb'>h '/5 +#; g;bx'-1!S :' M' 3!SG)00)+. )G%( ' ' )G%2 dI; ACKNOWLEDGMENTS " APPENDIX 2 '(CHANGES OGHIi%2TO M"$JAVA )+/SYNTAX ,-^1:)+/,-^1- 8: 8*[;=2'd$/%2 ,),-/)01"6}!9- 8: -$ONb'>d$/%2 ,)F#"!C$;!GL)`- O; b3)L'b)+/,-^D) 0('b !S 8* ,- # !8* HI /> !f'D"$MwL001x3I \- y E-PzU%(' ,'??HI )+, 0'!S %G-, / $> :Mw ~ wR#C+E-Fb0,8:8*-) gb'3@E 1 !f'A)3I \- R; 2' lI pkl n o o ,j*,l o )2 8: -OM'(!S %G. 0M 8:)G !f'D"$10,8:8*--D,'0OB n 0 k n ,p 4klO#k A. # #!" #B}! -!5)H-!! 0 oS k 0 k n ,p4DklO#k # #!" #B}! - 5)@!"L#"! @$ -! !B} klq o p, o kp 0 k n ,p4@klO#k # #!" #B}!L$ Lkp,j: (pj* o ,p4 L kp,j: 0 k n ,p,q ,p n $ # p o kp#2 (U n kl Lkp,j: 0 k n ,p,q4 L kp,j: 0 k n ,p L kp,j: 0 k n ,p,q L kp,j: 0 k n ,p Lkp,j: 0 k n ,p4AklO#k @CONCLUSIONS '$@) HIJIM3 0,8:8: 0M 001) 8M. -1 "$ '-13 - )#?:8: MH)+, `'- 0-,)'-D f3 0,8:)A-@! 1 !2-,M,);@ ) 0 \ /*^)53 )b%2 dM *8: )bH/* %( 0 81,' ,'A-,1i/3I)( :HI@^,'0?HIi%28: ) H/J3 - 0*!S # D^ & !b#8:'. ); (3 0,8:8:)c81)+4 b ))4 )+,)f 8: . ) ) HV+)I>81)+G3 - @ R3 . 0,8 ,- )G bu *H/*"$;4t %2$3 0,8M. 8:)%G 0>) 0 .U'3 0,8:)A * A? *3 . M/J /.U - ,- )Ar '1 8:3 ^ . )c'43I!S 8*43I )R -A G81 .U' 0 -J /9 8:3I )9 63 0,8:8:)M%G 0`81 .U' ;?2': 8:3 1 / 0?'-,%G-:` ) J0. 0)) $ /Y , 3I,- )?%( ' ]) 0 .U'] %( '6 9!S >'?O): !@ ':')G3 - 0 ' 0' $R !43I!S 8*A 'A 8:8: ); f'b3 0,8:8:f !81 '@33 - ) O)f() 8:3 c3 0,8:8: 0G8: '#"$-3 0(' 3) C! -/)01"?8:8: /` }!>8:8: / )+/,' 78:8: /?%( '` ) 0 *)-!S*8: @8: [; bHI $b'-f' )L, *HI\)cHI '#3 0,8:8:)f "$ 8:3 8:);M2':) 8:3 @8: 48*d$)A @) #!S 6. !"H#"! { !# !L5) (U n kl54 ) 2 ,l [o n ,p (,q o ,4 , ( U n kl , !2 }" bg TYPE , :,'CONVERSIONS 0)f A'2 8:3 .U 8:bi/3IG $) 1 ) !S % *)+, 0'!S %G-,%G/?! 8'#H J ))D' . -,'/*! 8 '!S %( 0:i%2 : 00@,'0)B E;GQ )3I8: )) H !S J ![) 9^] )))# %(' ,')`/] )+,& 8:3 8: 0`'& ![ 81)+#HI> !'-1 ))M *)HI ));W< /&'*H . M-0 /M ));) ! D:HI ) M^O; B. 397 P; ~ ,/)>-J)HI ))) ! ` N A8*/ '!S AHI)+2 #' )bi/3I 2 @'i/3I !L' . ![)('/ 8:3 8:ACs: vs l u5!!)3I $ /F,; ~ )(1 )u'!S %( 0>-'A,'0* )G!S )) 08:( $) ! 8 ) #,-0 G%(' ,'?- ) `' )*!S >%('Y&)+ $) 6 )>d %( HI 0$R-2 8:3 .U 8:G%( ' GA.U 8:G,',dI;42')( ) 0, /633 /` '?-0 / )))JC C ! F,; E;GQ! )G* ![^ 0@@-0 /* )) ` ))' 81)+GHI'D-0 / )) M -!; P;GQ! )2K >C[ < Fb-,/Mi/3I ` )2D )) D ![#i/3II' Y81)+HI &C[ F, ? ![D 8:3 8:*H./ ?C[ K F,; 2'D!S %( 0?-D'@,'0 )(!S %('JM)+A . $) ? ) n S U$- 8:3 A 8:B E;GQ! )*& ))*i/3IG ![J^ 0& -0 /` ))#'W? $) ` )1 0$G )) ) 'A-0 /? )) D !f )()HI ))); P;GQ! )b: ![(i/3IG^ 0@A-0 /: ))2 = )M? ))1i/3IM'-1 )1 #\[f'W $) ): 0$ )) )M'?-0 /9 ))* * ? !A ) )HI ))); T;GQ! ]-1HI ' ![#i/3I)A^ 0>*-. 0 / ))4'&'* $) ` )# 0$G !( '#' i%2 # ![)('$8:' )5%( '>')8:8:('- RZ D ^ )+D / ))R D !5'/J RZ A^ ' )8:D-0 / )); ;GQ! )4 #-,/@i/3I$ )4 ))4i/3I-' 'A $) )( 0$c )) 9 ) M -!J u5!!f s;*x 8: - /R ! )@ -,/ i/3I ? )cG ))Li/3I''5 $) D )c 0$ )) 9 ) M -! I ; s; ;GQ! )A: ))Ai/3I# Y ?-,/i/3I' 81)+@HI M 5!C i s5 J u5!!; x 8: - /c ! )#? ))@i/3I: )1 -,/ i/3I5' 81)+MHI M 5!C B G s; M)1'MH)+,# ))) ! M # M # M #( 8:3 8:I'4 )3I 0( ![;&yA! . )5 !I).i\@ )))5'-4^F ! 3>-@,) - *\ ) !5)HI )))A !4' )3I 0 8:3 8:,- Y ));v).i\Y ))) '-f^A 'f).i\D )))5-5,) -D%( ' 8: ! / 01' < G!"-1 # !-M )); ^8:3 C.2 User-Defined Classes and Interfaces " " " " " - --z! G!"-HY|Poo G!"- |Poo - --z! G!"- M "# G!"- |Poo )G,) -? |Poo A\ )4 !O).i\# ![)b^ 0AA-0 / ))-,) -* 1 ![)2'-G^:' ![ 8:3 8:*H/:'- ));B ( )+, y )5! G!"-HUD|Poo )5! G!"-UD|Poo )G,) -? 5,'W)HI ))M ;! & !)33I )1 #/VPRQ 8:' O%(' ,': )b 8*- /M0,-MH/@'2,) - ; ~ )) 08: !M 8*- /Y $ d$)>' #/VPRQ 8:' O; ~ )) 08:> !1 !6 )> NA' #/VPRQ 8:' M81)+bHI $ d$1^3 /; ~ )) 08:b !cK M -!()+)R'4-0 /#-L 8:5A $ d$)R ' "$M)) 08: (' #/VPRQ#8:' O; 2'. #/VPRQM8:' -)D*% )+,1 !5' ; !>)(!S %()B E;(5,'? , A )G) $ / 3 O; P;(5,'? , 8: ( )( 3 H/*!S; T;(5,' , Y HV+ )? / 3 OBW'- )O'#\)+ 8:1:!SM )A OL* 3/ ) 8*N2)H)u1 3 )M !'-M!S?->,)+. !S 8:> 1!S)( 1'A L 3/; L J,' $M' )4,' >&8: # ))1 )#0 $` 8:' C.3 Copying and Equality Testing i TRANSLATING ' )>) R(%2) TO HI'JAVA % BYTECODES ,) -&& )+,-,?"$1 ))(\ );* 3),- ?33I ))%2@. ) HID',) - J)1) .U .Q) A,) - R; D'M8: )+D3-R'1,) - ) 8:3 /3 -)A' "$M) D N'@ ,- )#C[) .QO8: \). 0 * ,- )#) A IFL 00b 8:3 .U 8: ,',d 0: -D)+ 'AH/ )) ,- ); C. M -!#/VPRQ !"S#/VP!2 | V } PRQQ\ i R,' D ))')G'D!S %( 0>8:' >0. ,-OB M -!#/VP } Qh|@#/VPRQ\ M -!#/VP } Qh|@ M -!#/VP } Qh| A & S{#%P 0-Q\ 5 P? ALQ@ @ !"S#/VP \ Q :,'>8: 2 ))2')b'(!S %( 0M8:' M0,-OB 2 '*Guava ))) M Classes -!C '!%b&' ![) stu5!!1-A 3) )G ![)GHI)')+,-,>"$@ ))G' ,-,'/*. A3)@81 3 # ' ,;M2'M -@) 0& )D) M )+ 0 )'>8:)2 :H/M,) - C M -! -F,;]2')+/,' 7- 8:' W ) -. H (' %2$G 6/W ))*'-* )* * 8:3 8: ' ![ !;b2' ![ M -!1 ) 'D8:' ) #/VPRQ$ OVPRQ$I !0-JPRQ$; ~ >,' HV+ )) )(0 $18:' C.1 398 0-b 5,'? )) M )(0 $?18:' *%( ' 'A) 0- !"S#/VP } -! }& M )~ @ 5 P } )-!!5D)~Q A P ) ~ Q }& Q %(' ,'?3I!S 8:)G'!S %( 0*)+3)B E;(2'( 4PRQM8:' ) $ d$> :-@'D% . )+,8 0#/``3 - '*\ )1! 8a'> HV+; P;GQ!c'A ))HI 0M 3 ) 3I!S 8:) &$-VP 0-b 0#/Q$; T;; G,'* )+,- H 3 G1 !Ri/3I; 9#'-2 )2 'G 8: ( 13 8: $i/3I 5 P GALQH0#/iG A )G,) -? M"$M) <HV+)JHI#) 8: - /?%G,33IO;DL)+ 0:!S * J H. V+)G'-G8: 0'GHI%G,33I)G!S -,/)Gu )2'- HI $ d$M\)+HI)%2AM #)+Gu i/* !L'(! . @'%G,33I>-,/) Gu i/* !L'%G,33I); P 9Q@Gi #/VP Q\ ; D,'- H 1 !G-,/i/3IO #'1-,/J 3/ ) A'@-D M8:' )b!S A-,/); c /K #/VPRQG8:' A )f%(' ,'@)c@ HV+ !f'A ))(i/3IAH/> $ d 0#' !"S#/VPRQ18:' O; 2'20,- M !' OVPRQ(8:' A'-4 )f)@ 8:3 . 8:5u i/1)+ 0D !R )5 )b3I!S 8:M ** 0 ) 8*; & 4'-R'4 3/A 3I,- #81)+R3)$f'5')'D ) !2 HV+)D ))A'# 3/;@<'%( )R D8: 0'HI13I )) H 1 3/*# , 0M@')'*,H A !c HV+)G),'*'- ' HV+): W'>')'W,H >%2 9 J 0*HI W' 3 3I:')'9H,d$);`2' )* )M :$) /9-O:')' : )+ H RL) M HV+)@ ) M !2 M M 8* -@ ) - ! 8 HV+) ?/ '( @ 8* R; ; C.5 Other Translations i60,[A A8: 8:' ):81)+>HIJ)+/,' 7O; t %2$%('.#B}!1 B#!"M8: 28:' )2- / )3-,'`' 0H ' 0-WC[ '*^3 /9 * 8:3 . /F,@' ' )W8:' )HI`0,-%( ' ' -/)01"68: \(HI)J'/9%( @ %G/) HIJ)+/. ,' 7 H/:'D ) 0: ; ~ )))R G . 5)2\ )R !8: )R 'R'A' 0' 0-81)+fHI2 )# M -/)01"VPRQH ,dD'-4 ,d) 'A8: HV+; y Ez I;( (p nSo m o p ( ,p,lI, 0 l ' ,>O;ZyA 0 ,cef))LE ; y Pz x 81 3 0,8:8: 0; l R &0!" >CU" /E PF,O ; kj1j1: y T-z # $ 2'D3 0,8:8: 01 00Mgb . 2ef)[ ; 2&%'%'% plEq Ik o %2l (%Gm PMCU" E F,LE P} ; y z ) * 2'Mx * 3I,- 0*)+/)+8?; Ik o m EE E p, P+ }}2; p$ o[n ,#lI %'-,,p n ,lI,/ .-IP*C ~ 3; "1E $F, y z 0 ' "$Z )@ )13-, )8?; 221Gm '3c 454Dk o[n ,, q 687 ?C ~ 3;OE $F,IT ; y -/z 9 :;<>= <? @ >;< ( 9 A <'B >C < 9ED F?G h -.iT>3I ; L,'R;3R;<g5.EI< $O)-,'JgbRE ; REFERENCES " C.6 Synchronization Arrays -- ## )D "# "!- Y| # )~ !!/& ## ) P )~ Qh|L!!/ A @ # !0-JPRQH|@ !!/& # #/VPRH Q |Poo #H OVP M -! Gh Q |]oo MHI 8:); # A }Ud}LA@N } A} :HI 8:);} A } U?#/VPRQ$; ~ ,) - G'-23I!S 8:)2 $))G /) )2> 8: . -( 3/ 0@H/1 $ 0A'D)) 08:b @ "$()) 08:R%('$U } ( )cA!S %( 0' )) 08:;42' )5O $ /M $)5D 3/# @A8: -$ %('>'D- H DHI 0M 3 )( M 0O; } AA} MHI 8:; ) } OVP } Q$; } II i A-,/)-&)HI ))) '? !. ! ;t %2$4 !(%2:,) -?-,/)@ J"$J-. ,/)-'f $ i/3If,',d 0( )RZ R%2 dI) 5"$ -,/)4M /#HI2)HI )))5 J! V}U $i # /> 8:3 8:5' ![ S;5 >3I!S 8 '22,',d 0-c 8:3 .U 8:-HR'f.U 8:f,',d) CS'-> )(!S )+) H 7!/U!! G!!#),F>%2 6 %2 dJ"$:%2 J @ % &-,/ >HI13)) !S 8*L3-,8:( !ci/3I !S )+,; 2'!S -,/)G-(3)*)G-,/)5%(':'/:- 9- H ): !@-,/`i/3I29- )9 =Q%G,33I > HV+)2%('*'/:- >- H )2 !Li/3I M -!` s u5!! @ ; 2' )8:)>'- )+)`C[ 09 8:3 )+),F HIi%2 -,/)Y') i/3I)f $ $2M $2 3I,- R%; 4,'M-,/@i/3I' ):?%G,33I; 1 )+,5':%G,33I1!S *-,/)1 !(' 3 8: $i/3I ): )B C.4 M -! }& )~ @ 5 P } )-!!5 PP M "#SQ }b Q !0-JPRQ )-!!5D)~Q A PP ) ~Q:PP M "#QH}i !0-JPRQQQb?#/VPRQ\ AA !0- ~ 'f b HV+)4'$b8:' !0-G 0 KSIU:k; b!S @ $ d 0#' 3I,- ) )-!!5>>)+)G M-. ,/'!0-JPRQ#8:' *81)+2\)+HIA $ d$O;42'# 399 y z < 9 < 9 ; ef 8: ))B:wR 8: &)3I \- )#!S M /) )M&8*-. 3 - R;(i 2pk, n lq`k oS 2&%'%'% 2l o ,p,lI o[n klI kl ,p,lI, kl Ik o p/ %2l n lO,p n l 2 (%JC ~ 3; E $F,I33R;OE E ; y -z = =G ;< ; B A < D ?G< 9 f^ )+,- ,',d 0; L,'R;#3R;:E- ?gb 8:3u x/)+8:)&)-,' gb '3RB x*x%G%G%D; )-,'R; 0 ,[; R8 xxg4E ; y -z < 9 9 : A <HV+Ai/3I)D0$ )+ ,);i 4 4 klIp,p,lI kp, oS 2lm o ,p,lI o[n klI kl ,p,lI,*C+E $F,Ox3 033R;P T}T; y E}-z < 9 9 : A 4/3I)@!S :)-!S ,d. 0;Ii 2pk, n lq1k oS oS %2pk,l jkq n j kl 2pkpj1j n l % ?CQh?-;E $F,x3 0. +5 0 33R; E E} ; y EEz < 9 9 D 4/3I.QH), !S *V;Ai 2pk, n lqWk oS & &0 221Gm '3c 4"! kl ,p,lI,kl 2pkpj1j n l 3Ll #m q n l&lI 2jI ,j*,l o o[n klWCU"@P}}}$F,; y E-Pz ? @ < ( < 9# ?G % $ 3Llm n o[n kl; ~ ) .U) / 0Dh?)); E ; y ET-z h )B ~ D 3I,- 0()+/)+8])+. 06 3; kj1j1:l @ &0 '& >E} CQ<;#E F, ; y EE z ( kj1j1l n o[n l O,l o[n 2pk,,qq,q; ef .QtA [I40 %2 Jgb O) &% ")/RE $; y E-z ( i) )B ~ ) 0 3 HV+. Y 00);i 2pk, n lqk oS &0 kl ,p,lI,:kl S- o p n ,l o 2pkpj1j n l q o ,j1q 3Ll,q lI|b$I n o[n kl) q (3c+ KCUe4' ^O ~ 7 <;E E-F, ~ gGh ef)) *& % ,b dI & % ,b dI; y E -z klIp,p,l o %2 n oS l n - q o ,j1blI l n q; ~ ) .U) / 0Ih?)); cE T; y E z ( ?G 2pkpj1j n l n l9kj1;4ef .QtA [44. 0 %2 gb O) &% ")/RE ; y E -z B < 9 > <Y 3 8: )+ 8:' )O!S f /D [;$ &0 plq$ o[n klq(kl @ o $q q o ,j1q .-IP>CU"1E E-F,; y E -z ; @ A < 9 ? ' 9 =G B ec /8: 3' O>)+/)+8:);bi kl ,p,lI, (kpk oS n o ,l oS (llD &0 jkq n j kl 2p n lI n I ,q`k 2pkpjMm j n l, 3Ll,q:CU"$R;RE $F, ~ gGhKxAe5w ~ & & ) ~ gGhKef)); y P}-z A ' < < < 9 5); (k ,p (p nSo o p,;Ah 0$ @!S8*R E ! ; y PEz c ^ 0@'A"$#8:8: /M8: [;i 2pk,m 12plI kl ,p,lI,CQx ,. n lq:k oS M $) ) LE $F,; &0 y PPz ' 9 x/ > ( ! !S;5i kl ,p,lI,(kp]k oS n oS &0 jkq n j kl 2p n lI n I ,qWk 2pkpj1j n lE3Ll,q CUL) R ~ . 7 2"$R;(E $F, ~ gGh ef))B&%-,b dI'&%-,b dI 33R;T ; y PT-.z 9 =G < 9 yA H .Q,',d$ ,d 0;@i ( o[o ,p,l 3Ll,qk 2pkpj #,q n l 6 C[ 0Ih?)); LE $F, ~ ) .U) /33R;T T T ; y P .z > < =G <5? 9 < ; >C <(/ $=G< 9 / : * (0 ,p,j*,q 4 3Ll kp n q o p n o kj o[n l;x ) ]i. -- $L,' 0/;bef .QtA [40 %2 ]gb O) &% ")/RE E; y Pz =G>;< 9 ? 9 1 5); R (p nSo o p 0 l ,p,q n k2l ;ef DtA [LE ! ; y P -z D yA) 0 8:3 8:,- !h ; Ik o p + 2p$ o[n ,6lIE %'-,,p n ,lI, & ?E CU"$R; HR; E F, ! ; y P z D h B9 00!S 8: -81 . 3 0,8:8: 0; Ik o p# + 2p$ o[n ,lI %'-,,p n ,lI, & E:CU"$R; HR;LE F,IT T$; 400