Guava: a Dialect of Java without Data Races

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 P€zc')(3
-$
?HI:$/& : 4&?81HID
!
8* )@'$:HI
!S
&'-#%2>
M &H/'>) 0)1
!'* .
00;b‚2')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;
ƒf„O
)@-:%G/
?-V+)+@'M"$ 8:8:
/8:
[;
t
%2$O')1„O
)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;f†i8: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
,- );@†iJ„OO%2M8*d$#:,
„`
!2) 0' /
) 0('f3
0,8:8:Z )L
8:,- A„O
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Ž$‘Ž‘:’pkŒpja“lW”,Ž
• p nSo[o Ž,l–Ž,l o[n pŽ —W˜q n lŒ‰k$”S™-Ž“ o qlI‘Wš ˜Ž,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(
%(;
’pkŒpj1j*Ž,pMllIk o  o[n klq kp#“klI“˜p,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;1†QD )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
;5‚2' )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 ;M‚2'1 )A'-A&HI1)'-JHIi%2J')
-# j:kl nSo kp,qNO'@ )(%('
)#)'- 0* ))+ -* , -/&
HV+),; +b )c8:
)4&
HV+)
!S
8| )SV+
))(' ,-,' );b†i*' )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' ,-,'/;4‚2'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 MVV‚ €&ƒ
(' 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{/QS€i„$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{/QS€i„ #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');M†i![t s .
)b
HV+)G: )fr ')-$b)'-:HIi%2
');4†i![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!"&ƒN‹ŠAL@ƒ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');5ƒf^,
,- )(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
;5‚2' )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Œ\EŽcbI@WZ?BA`fL‘nWFkSI‰GqWZg&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;K†Q!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\EM>T\KNWF:TmA`T\K
kNKNWFTUX*A`k*a
:T
cbI@WZ?BA`fU‘nWFkSI\KNWZg&e A
<f)
#^8:3 b
!3
0,8:8: 0 :( )4)'
%(1 c 0 ;2†Q ) ) /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*/9HI’qqŽ‘JHIi%268:
)>
$ 3I,- 3I
?) 0:)G')D
3I,- )
M
( M
()'- 0;
‚L
)+,&'
% %()M3)) 0J
!
HV+)1HI.
i%298:
)5%2 81)+1 >'>
):
!#pŽUŒ 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:
);9†Q: ): 8:3I
)) H ?!S
:'>
&HI?/
!S)#HIi%2 zN{
HV+)# ` „O@8:
)@
);
~ A
8:3 .U 8:O':*
8:3 @)) 0)#pŽUŒ 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+;5‚2'
) )+5%G/#
' d@
!O !#
,- M )b)53
8: )G
Dd$3:!SG
A'G3-,8:;GCU‚2'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<
;5‚2'(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@EGJI@Ac\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\EGJI@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 ;5‚2'.
) 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 #"
„o„o„
# U!)$*z55 $5!VPRQY|
"5!i„"#!4PRQ\ƒ
†
†
\EGJI@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!VPRQ‡81)+& )
]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\ƒ
†
†
>EGJI@A
9;: <>=@?BA
M>=@KNA
: KSI nW m
A‡MFgNA`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 ;4†i$
- )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!"
oSn q oS pŽ$‘>„ i„ #)%P u)$ -
!$-U~ *€Q\ƒ
20 PP LA oSn q oS pŽ$>
‘ „?)#i„$JPRQQ
oSn q oS pŽ$>‘ „?)#i„ ‚ Q
oSn q oS pŽ$>‘ „ i„ #JP Q\ƒ
# --L90!"!Y|
90!" 0!"&ƒ
#‰s M #U!#" ) #&ƒ
#‰
s
#U!# " &ƒ
#‰
s
#U!# " &ƒ
|
20
†
ŠA
\EGJI@A‡GJI@?BA1WFf
RWZKNWXoe 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 );4†iM 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
†
\EGJI@Acb: 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;A‚2'1"$M )!S
H J: ))! 8ˆHI 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);5†i*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;5‚2'!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;f†Q5'*)+,-)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;J‚2'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@G’pk o Ž“ o[n kl>llIk o  o[n klA - 0('5 ,dA'-
3
)43O-)c
'-58:'
O;L†i)+,2- H )5-cV+)+
)3I L))
!f8:'
);
†i=@$/]- H ')J]pŽUŒ n kl o —,’Ž,1]$/
8:'
DD
)+
4ApŽUŒ n kl o —,’Žbq n ŒlI o ˜pŽ,;5‚2')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-;5‚2'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; Fƒ5,.' 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
‘ 2lšk“ o[n kl545‚2'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;b†i /#'
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 ;
Zˆh„o„o„*ˆ# :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,;6‚2' ):)/)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 4b‚2'D)+,-8:( )
klq o p,˜“ o kp 2lšk“ o[n k5
G A!2  qH
q P# `ˆL„o„o„*ˆ# :Q\ƒ
~ ))8: G ')A0 Ji/3I O'-D,' # ')0 i/3I #'-5'(33
3 -
)+
5!S
 qq
')(0 i/3IA) 0->y ) zU;b‚2' '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 ;2‚2' )
)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;G‚2'D)+ J )
)+ /))-/5H# M$
)1, W
8:3 ^
) - );
q o[n lŒ 4b‚2'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 4b‚2'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;5‚2'- )
‚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
%(*
;GCU‚2' )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 ‘Ž,j’k 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:'.
)-@^ ) $;b‚2'D
/>%G/>
:,' $D0, .Q33I
)
81 3 3-, )8 )G
M3
0,8 ^3 /;
†i8:3 8:,- )c
!LM^2M8:'
)f
.
/;A‚2' )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;b†Q!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:
;4†Q )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;J†Q#%( 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-,/;A‚2')@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) 5„O)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(^
.
/,-'#') /;J†Q!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,- ): W„OM3I!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,;b‚2'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;5‚2' )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- H„O`
/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 k“M
3I,- `)3I ! /'-
S8:
\- )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,;f‚2' )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 @ˆ Uˆ8
ƒ,!" N{ "L-!o}
"#2 @ˆ ƒN-HHN{"
G#!-B }V sN { )$
ƒ
U
„ $@ -2L#!0
-2i
G „8U
ˆ Uˆ8
ƒ,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
ˆ
Uˆ8
ƒ,!"L}L5!!" "L-!o}
!""
@ˆ8 ˆ8
ƒ,!"" !""!" }
-2Gi„8@ˆ Uˆ8
ƒN5L-!o}! -@0!"&ˆ -!H!2L}
„ I ƒ, -!o}! 5UˆN/
"
ˆ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=@A‡KNM
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
Jƒ4 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@))- / )+ $;G†i?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 -;c‚2'
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) 0‰W 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' b„O5)+/)+.
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;b†i)+.
)(-) 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
dI5†i)+.
)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 Oi„G&ƒ
)L{ AL#„G&ƒ
†i‰e40'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! Oi„G )( !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);b†i*)'
' )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 )+);D‚2' ) )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
!')b„O)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,);Y†iW' ):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);b‚2' )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: (pj*Ž 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:);M‚2':) 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;G†Q )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
A‰8*/
'!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;4‚2')( )
0, /633 /`
'?-0
/‰ )))JC C !
F,;
E;G†Q! )G* ![^ 0@@-0
/* )) `
))' ‰81)+GHI'D-0
/ ))
M -!;
P;G†Q! )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;G†Q! )*& ))*i/3IG
‹‰ ![J^ 0&
-0
/` ))#'W?
$) ` )1 0$G )) )
'A-0
/? ))
D
!f )()HI )));
P;G†Q! )b: ![(i/3IG^ 0@A-0
/: ))2
= )M? ))1i/3IM'-1 )1
#\[f'W
$) ): 0$ )) )M'?-0
/9 ))*
*
?
!A )
)HI )));
T;G†Q! ]-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
/ ));
;G†Q! )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;
€;G†Q! )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|P„o„o„
G!"- |P„o„o„ †
-
--‰z!
G!"- M "#
G!"- |P„o„o„
)G,) -? †
|P„o„o„
†
†
A\ )4
!O).i\# ![)b^ 0AA-0
/
))-,) -* 1 ![)2'-G^:' ![
8:3 8:*H/:'- ));B
( )+,
y
)5!
G!"-HUˆD|P„o„o„
)5!
G!"-UˆD|P„o„o„
)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[) .Q„O8:
\).
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 # ' ,;M‚2'M
-@) 0& )D)
M )+ 0 )'>8:)2 :H/M,) - C M -!
-F,;]‚2')+/,'
7- ‰8:'
W ) -.
H ('
%2$G
6/W ))*'-*
)*
* 8:3 8:
' ![
!;b‚2' ![
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;G†Q!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 G‹ŠALQH0#/i„G
A
)G,) -? M"$M)
<HV+)JHI#) 8: - /?%G,33IO;D‚L)+ 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&%'%'% plEq 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 |P„o„o„ †
#H
OVP M -! Gh
Q |]„o„o„
MHI
8:); # A }Uƒd}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:;4‚2' )5„O $ /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;4‚2'#
399
y z < 9 < 9 ;
ef
8: ))B:wR 8: &)3I \- )#!S
M /) )M&8*-.
3 - R;(†i 2pk“,ŽŽ‘ n lŒq`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 klI“˜p,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;I†i 2pk“,ŽŽ‘ n lŒq1k oS Ž oS %2˜pk,’Žl —j’kq n ˜j kl
2pkŒpj1j n lŒ› % ?CQh?-;E $F,x3 0. +5 0
33R; E E} ;
y EEz < 9 9 D ‚4/3I.QH),
…!S
*V;A†i 2pk“,ŽŽ‘ n lŒqWk oS Ž&Š &0 221Gm
'3cŠ 4"! kl Ž,pŽ,lI“,Žkl 2pkŒpj1j n lŒ 3LlŒ˜ŒŽ #Žm
q n Œl&lI‘ 2j’I Ž,j*Ž,l o  o[n klWCU"@P}}}$F,;
y E-Pz ? @ < ( < 9# ?G  %Ž $š 3Llm
Œ˜ŒŽ ’Ž“ 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 ( kj1j1˜l n “ o[n lŒ OŽœ˜Ž,l o[n  2pk“,Ž,qqŽ,q;
ef .QtA [Iƒ40 %2
Jgb „O) &%…")/RE $€;
y E-€z ( †i) )B ~ ) 0 3
HV+.
Y 00);†i 2pk“,ŽŽ‘ n lŒqk oS Ž Š &0
kl Ž,pŽ,lI“,Ž:kl ”S™-Ž“ o p n Ž,l o Ž‘ 2pkŒpj1j n lŒ —q o Ž,j1q›
3LlŒ˜ŒŽ,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 klI“˜p,pŽ,l o %2˜“ n ‘› oS Ž l n - —q o Ž,j1›blI‘
˜l n q; ~ )
.U) / 0Ih?)); cE T;
y E z ( ?G 2pkŒpj1j n lŒ n l9k““j1;4ef .QtA [4ƒ4.
0 %2
gb „O) &%…")/RE ;
y E -z B < 9 > <Y
3 8: )+ 8:'
)O!S
f
/D
[;$Š &0 plq$“ 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:);b†i kl Ž,pŽ,lI“,Ž (Ž“kp‘‰k oS Ž n o ŽŽ,l oS
Š(ll˜DŠ &0 —j’kq n ˜j kl 2p n lI“ n ’I Ž,q`k 2pkŒpjMm
j n l,Œ 3LlŒ˜ŒŽ,q:CU"$R;RE $F, ~ gGhKx†Ae5w ~ & &
)
~ 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
 12plI‘Ž kl Ž,pŽ,lI“,ŽCQx ,.
n lŒq:k oS ŽMŠ $š)
)
LE $F,; &0
y PPz ' 9 x/ >
(
! !S;5†i
kl Ž,pŽ,lI“,Ž(Ž“kp‘]k oS Ž n oS Š &0 —j’kq n ˜j kl
2p n lI“ n ’I Ž,qWk 2pkŒpj1j n lŒE3LlŒ˜ŒŽ,q…CU‚L)
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 3LlŒ˜ŒŽ,q‰k 2pkŒpj #Ž,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
Š 3LlŒ˜ŒŽ kp n q o p n ”˜ o Ž‘ kj’˜ o[n lŒ;x ) ]†i.
-- $‚L,'
0/;bef .QtA [ƒ40 %2
]gb „O)
&%…")/RE E;
y P€z =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 “,Ž6lIE
‘ %'-,’Ž,p n Ž,lI“,Ž & ?E…CU"$R; HR;
E F, ! ;
y P z D h B‡9 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