*** /dev/null Sat Nov 23 06:30:21 2024
--- - Sat Nov 23 06:30:22 2024
***************
*** 0 ****
--- 1,8960 ----
+ %!PS-Adobe-3.0
+ %%Title: (Finished.pdf)
+ %%Version: 1 2
+ %%Creator: (FrameMaker xm5.5.3L15a)
+ %%CreationDate: (D:19990427163055)
+ %%DocumentData: Clean7Bit
+ %%LanguageLevel: 2
+ %%BoundingBox: 0 0 612 792
+ %%Pages: 30
+ %%DocumentProcessColors: Cyan Magenta Yellow Black
+ %%DocumentSuppliedResources:
+ %%+ font Times-Italic
+ %%+ font Times-Bold
+ %%+ font Courier
+ %%+ font Symbol
+ %%+ font Courier-Bold
+ %%+ font Helvetica
+ %%+ font Times-Roman
+ %%+ font Helvetica-Bold
+ %%+ font Times-Roman
+ %%+ procset (Adobe Acrobat - PDF operators) 1.2 0
+ %%+ procset (Adobe Acrobat - type operators) 1.2 0
+ %%EndComments
+ %%BeginDefaults
+ %%EndDefaults
+ %%BeginProlog
+ %%EndProlog
+ %%BeginSetup
+ %%BeginFile: l2check
+ %%Copyright: Copyright 1993 Adobe Systems Incorporated. All Rights Reserved.
+ /languagelevel where
+ { pop languagelevel 1 eq }
+ { true }
+ ifelse
+ {
+ initgraphics /Helvetica findfont 18 scalefont setfont
+ 72 600 moveto (Error: Your printer driver needs to be configured) dup show
+ 72 580 moveto (for printing to a PostScript Level 1 printer.) dup show
+ exch = =
+ /Helvetica-Bold findfont 16 scalefont setfont
+ 72 520 moveto (Windows and Unix) show
+ /Times-Roman findfont 16 scalefont setfont
+ 72 500 moveto (Select ªLevel 1º in the PostScript options section) show
+ 72 480 moveto (of the Acrobat Exchange or Reader print dialog.) show
+ /Helvetica-Bold findfont 16 scalefont setfont
+ 72 440 moveto (Macintosh) show
+ /Times-Roman findfont 16 scalefont setfont
+ 72 420 moveto (In the Chooser, select your printer driver.) show
+ 72 400 moveto (Then select your printer and click the Setup button.) show
+ 72 380 moveto (Follow any on-screen dialogs that may appear.) show
+ showpage
+ quit
+ }
+ if
+ %%EndFile
+ /currentpacking where{pop currentpacking true setpacking}if
+ userdict /PDF 85 dict put
+ %%BeginFile: pdfvars.prc
+ %%Copyright: Copyright 1987-1996 Adobe Systems Incorporated. All Rights Reserved.
+ userdict /PDFVars 75 dict dup begin put
+ /_save 0 def
+ /_cshow 0 def
+ /InitAll 0 def
+ /TermAll 0 def
+ /_lp /none def
+ /_doClip 0 def
+ /sfc 0 def
+ /_sfcs 0 def
+ /_sfc 0 def
+ /ssc 0 def
+ /_sscs 0 def
+ /_ssc 0 def
+ /_fcs 0 def
+ /_scs 0 def
+ /_fp 0 def
+ /_sp 0 def
+ /_f0 0 array def
+ /_f1 1 array def
+ /_f3 3 array def
+ /_f4 4 array def
+ /_fc null def
+ /_s0 0 array def
+ /_s1 1 array def
+ /_s3 3 array def
+ /_s4 4 array def
+ /_sc null def
+ /_cpcf null def
+ /_cpcs null def
+ /_inT false def
+ /_tr -1 def
+ /_rise 0 def
+ /_ax 0 def
+ /_cx 0 def
+ /_ld 0 def
+ /_tm matrix def
+ /_ctm matrix def
+ /_mtx matrix def
+ /_hy (-) def
+ /_fScl 0 def
+ /_hs 1 def
+ /_pdfEncodings 2 array def
+ /_Tj 0 def
+ /_italMtx[1 0 .212557 1 0 0]def
+ /_basefont 0 def
+ /_basefonto 0 def
+ /_categories 10 dict def
+ /_sa? true def
+ /_op? false def
+ /_ColorSep5044? false def
+ /_tmpcolr? [] def
+ /_tmpop? {} def
+ end
+ %%EndFile
+ PDFVars begin PDF begin
+ %%BeginFile: pdfutil.prc
+ %%Copyright: Copyright 1993 Adobe Systems Incorporated. All Rights Reserved.
+ /bd {bind def} bind def
+ /ld {load def} bd
+ /dd { PDFVars 3 1 roll put } bd
+ /xdd { exch dd } bd
+ /Level2?
+ /languagelevel where { pop languagelevel 2 ge } { false } ifelse
+ def
+ /here {
+ dup currentdict exch known
+ { currentdict exch get true }
+ { pop false }
+ ifelse
+ } bd
+ /isdefined? { where { pop true } { false } ifelse } bd
+ /StartLoad { dup dup not { /_save save dd } if } bd
+ /EndLoad { if not { _save restore } if } bd
+ /npop { { pop } repeat } bd
+ %%EndFile
+ %%BeginFile: pdf.prc
+ %%Copyright: Copyright 1987-1996 Adobe Systems Incorporated. All Rights Reserved.
+ /initialize {
+ _ColorSep5044? {sep_ops begin 50 dict begin} if
+ newpath
+ } bd
+ /terminate {
+ _ColorSep5044? {end end} if
+ } bd
+ Level2? StartLoad
+ { /m/moveto ld
+ /l/lineto ld
+ /c/curveto ld
+ /setSA/setstrokeadjust ld
+ } EndLoad
+ Level2? not StartLoad
+ {
+ /pl {
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+ } bd
+ /m { _sa? { pl } if moveto } bd
+ /l { _sa? { pl } if lineto } bd
+ /c { _sa? { pl } if curveto } bd
+ /setSA { /_sa? xdd } bd
+ } EndLoad
+ /v { currentpoint 6 2 roll c } bd
+ /y { 2 copy c } bd
+ /h/closepath ld
+ /d/setdash ld
+ /j/setlinejoin ld
+ /J/setlinecap ld
+ /M/setmiterlimit ld
+ /w/setlinewidth ld
+ /cf currentflat def
+ /i {
+ dup 0 eq { pop cf } if
+ setflat
+ } bd
+ /ilp { /_lp /none dd } bd
+ /sfc {
+ _lp /fill ne {
+ _sfcs
+ _sfc
+ /_lp /fill dd
+ } if
+ } dd
+ /ssc {
+ _lp /stroke ne {
+ _sscs
+ _ssc
+ /_lp /stroke dd
+ } if
+ } dd
+ /n {
+ _doClip 1 ge {
+ _doClip 1 eq { clip } { eoclip } ifelse
+ /_doClip 0 dd
+ } if
+ newpath
+ } bd
+ /f {
+ _doClip 1 ge
+ {
+ gsave sfc fill grestore
+ _doClip 1 eq { clip } { eoclip } ifelse
+ newpath
+ ilp
+ /_doClip 0 dd
+ }
+ { sfc fill }
+ ifelse
+ } bd
+ /f* {
+ _doClip 1 ge
+ {
+ gsave sfc eofill grestore
+ _doClip 1 eq { clip } { eoclip } ifelse
+ newpath
+ ilp
+ /_doClip 0 dd
+ }
+ { sfc eofill }
+ ifelse
+ } bd
+ /S {
+ _doClip 1 ge
+ {
+ gsave ssc stroke grestore
+ _doClip 1 eq { clip } { eoclip } ifelse
+ newpath
+ ilp
+ /_doClip 0 dd
+ }
+ { ssc stroke }
+ ifelse
+ } bd
+ /s { h S } bd
+ /B {
+ _doClip dup 1 ge
+ gsave f grestore
+ {
+ gsave S grestore
+ 1 eq { clip } { eoclip } ifelse
+ newpath
+ ilp
+ /_doClip 0 dd
+ }
+ { pop S }
+ ifelse
+ } bd
+ /b { h B } bd
+ /B* {
+ _doClip dup 1 ge
+ gsave f* grestore
+ {
+ gsave S grestore
+ 1 eq { clip } { eoclip } ifelse
+ newpath
+ ilp
+ /_doClip 0 dd
+ }
+ { pop S }
+ ifelse
+ } bd
+ /b* { h B* } bd
+ /W { /_doClip 1 dd } bd
+ /W* { /_doClip 2 dd } bd
+ /q/save ld
+ /Q { restore ilp } bd
+ Level2? StartLoad
+ { /defineRes/defineresource ld
+ /findRes/findresource ld
+ currentglobal
+ true systemdict /setglobal get exec
+ [/Function /ExtGState /Form]
+ { /Generic /Category findresource dup length dict copy /Category defineresource pop }
+ forall
+ systemdict /setglobal get exec
+ } EndLoad
+ Level2? not StartLoad
+ { /AlmostFull?
+ { dup maxlength exch length sub 2 le
+ } bind def
+ /Expand
+ { 1 index maxlength mul cvi dict
+ dup begin exch { def } forall end
+ } bind def
+ /xput
+ { 3 2 roll
+ dup 3 index known not
+ { dup AlmostFull? { 1.5 Expand } if
+ } if
+ dup 4 2 roll put
+ } bind def
+ /defineRes
+ { _categories 1 index known not
+ { /_categories _categories 2 index 10 dict xput store
+ } if
+ _categories exch 2 copy get 5 -1 roll 4 index xput put
+ } bind def
+ /findRes
+ { _categories exch get exch get
+ } bind def
+ } EndLoad
+ /cs
+ {
+ dup where { pop load } if
+ dup /_fcs xdd
+ ucs
+ _cpcf exch get
+ /_fc xdd
+ /_fp null dd
+ } bd
+ /CS
+ {
+ dup where { pop load } if
+ dup /_scs xdd ucs _cpcs exch get /_sc xdd /_sp null dd
+ } bd
+ /ucs {
+ dup type /arraytype eq
+ { dup 0 get
+ dup /Indexed eq
+ { pop 0 get }
+ { /Pattern eq
+ { dup length 2 eq
+ { 1 get ucs }
+ { 0 get }
+ ifelse }
+ { 0 get }
+ ifelse }
+ ifelse }
+ if }
+ bd
+ /_cpcf
+ 15 dict dup begin
+ /DefaultGray _f1 def
+ /DeviceGray _f1 def
+ /DefaultRGB _f3 def
+ /DeviceRGB _f3 def
+ /DeviceCMYK _f4 def
+ /CalGray _f1 def
+ /CalRGB _f3 def
+ /CalCMYK _f4 def
+ /Lab _f3 def
+ /Pattern _f0 def
+ /Indexed _f1 def
+ /Separation _f1 def
+ /CIEBasedA _f1 def
+ /CIEBasedABC _f3 def
+ end
+ dd
+ /_cpcs
+ 15 dict dup begin
+ /DefaultGray _s1 def
+ /DeviceGray _s1 def
+ /DefaultRGB _s3 def
+ /DeviceRGB _s3 def
+ /DeviceCMYK _s4 def
+ /CalGray _s1 def
+ /CalRGB _s3 def
+ /CalCMYK _s4 def
+ /Lab _s3 def
+ /Pattern _s0 def
+ /Indexed _s1 def
+ /Separation _s1 def
+ /CIEBasedA _s1 def
+ /CIEBasedABC _s3 def
+ end
+ dd
+ Level2? not StartLoad {
+ /ri/pop ld
+ /makePat/pop ld
+ } EndLoad
+ Level2? StartLoad {
+ /ri
+ {
+ /findcolorrendering isdefined?
+ {
+ mark exch
+ findcolorrendering
+ counttomark 2 eq
+ { type /booleantype eq
+ { dup type /nametype eq
+ { dup /ColorRendering resourcestatus
+ { pop pop
+ dup /DefaultColorRendering ne
+ {
+ /ColorRendering findresource
+ setcolorrendering
+ } if
+ } if
+ } if
+ } if
+ } if
+ cleartomark
+ }
+ { pop
+ } ifelse
+ } bd
+ /makePat /makepattern ld
+ } EndLoad
+ Level2? not _ColorSep5044? or StartLoad
+ {
+ /L1setcolor {
+ aload length
+ dup 0 eq
+ { pop .5 setgray }
+ { dup 1 eq
+ { pop setgray }
+ { 3 eq
+ { setrgbcolor }
+ { setcmykcolor }
+ ifelse }
+ ifelse }
+ ifelse
+ } bind dd
+ /_sfcs { } dd
+ /_sscs { } dd
+ } EndLoad
+ Level2? not _ColorSep5044? not and StartLoad
+ {
+ /_sfc { _fc L1setcolor } dd
+ /_ssc { _sc L1setcolor } dd
+ } EndLoad
+ Level2? _ColorSep5044? not and StartLoad
+ {
+ /_sfcs
+ {
+ _fcs setcolorspace
+ } bind dd
+ /_sscs
+ {
+ _scs setcolorspace
+ } bind dd
+ /_sfc
+ {
+ _fc aload pop
+ _fp null eq
+ { setcolor }
+ { _fp setpattern }
+ ifelse
+ } bind dd
+ /_ssc
+ {
+ _sc aload pop
+ _sp null eq { setcolor } { _sp setpattern } ifelse
+ } bind dd
+ } EndLoad
+ /sc
+ {
+ _fc astore pop
+ ilp
+ } bd
+ /SC
+ {
+ _sc astore pop
+ ilp
+ } bd
+ /scn {
+ dup type /dicttype eq
+ { dup /_fp xdd
+ /PaintType get 1 eq
+ { /_fc _f0 dd ilp }
+ { /_fc _cpcf _fcs ucs get dd
+ sc }
+ ifelse }
+ { sc }
+ ifelse
+ } bd
+ /SCN {
+ dup type /dicttype eq
+ { dup /_sp xdd
+ /PaintType get 1 eq
+ { /_sc _s0 dd ilp }
+ { /_sc _cpcs _scs ucs get dd
+ SC }
+ ifelse }
+ { SC }
+ ifelse
+ } bd
+ /g { /DefaultGray cs sc } bd
+ /rg { /DefaultRGB cs sc } bd
+ /k { /DeviceCMYK cs sc } bd
+ /G { /DefaultGray CS SC } bd
+ /RG { /DefaultRGB CS SC } bd
+ /K { /DeviceCMYK CS SC } bd
+ /cm { _mtx astore concat } bd
+ /re {
+ 4 2 roll m
+ 1 index 0 rlineto
+ 0 exch rlineto
+ neg 0 rlineto
+ h
+ } bd
+ /RC/rectclip ld
+ /EF/execform ld
+ /PS { cvx exec } bd
+ /initgs {
+ /DefaultGray where
+ { pop }
+ { /DefaultGray /DeviceGray dd }
+ ifelse
+ /DefaultRGB where
+ { pop }
+ { /DefaultRGB /DeviceRGB dd }
+ ifelse
+ 0 g 0 G
+ [] 0 d 0 j 0 J 10 M 1 w
+ true setSA
+ } bd
+ 21 dict dup begin
+ /CosineDot
+ { 180 mul cos exch 180 mul cos add 2 div } bd
+ /Cross
+ { abs exch abs 2 copy gt { exch } if pop neg } bd
+ /Diamond
+ { abs exch abs 2 copy add .75 le
+ { dup mul exch dup mul add 1 exch sub }
+ { 2 copy add 1.23 le
+ { .85 mul add 1 exch sub }
+ { 1 sub dup mul exch 1 sub dup mul add 1 sub }
+ ifelse }
+ ifelse } bd
+ /Double
+ { exch 2 div exch 2 { 360 mul sin 2 div exch } repeat add } bd
+ /DoubleDot
+ { 2 { 360 mul sin 2 div exch } repeat add } bd
+ /Ellipse
+ { abs exch abs 2 copy 3 mul exch 4 mul add 3 sub dup 0 lt
+ { pop dup mul exch .75 div dup mul add 4 div
+ 1 exch sub }
+ { dup 1 gt
+ {pop 1 exch sub dup mul exch 1 exch sub
+ .75 div dup mul add 4 div 1 sub }
+ { .5 exch sub exch pop exch pop }
+ ifelse }
+ ifelse } bd
+ /EllipseA
+ { dup mul .9 mul exch dup mul add 1 exch sub } bd
+ /EllipseB
+ { dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub } bd
+ /EllipseC
+ { dup .5 gt { 1 exch sub } if
+ dup .25 ge
+ { .5 exch sub 4 mul dup mul 1 sub }
+ { 4 mul dup mul 1 exch sub }
+ ifelse
+ exch
+ dup .5 gt { 1 exch sub } if
+ dup .25 ge
+ { .5 exch sub 4 mul dup mul 1 sub }
+ { 4 mul dup mul 1 exch sub }
+ ifelse
+ add -2 div } bd
+ /InvertedDouble
+ { exch 2 div exch 2 { 360 mul sin 2 div exch } repeat add neg } bd
+ /InvertedDoubleDot
+ { 2 { 360 mul sin 2 div exch } repeat add neg } bd
+ /InvertedEllipseA
+ { dup mul .9 mul exch dup mul add 1 sub } bd
+ /InvertedSimpleDot
+ { dup mul exch dup mul add 1 sub } bd
+ /Line
+ { exch pop abs neg } bd
+ /LineX
+ { pop } bd
+ /LineY
+ { exch pop } bd
+ /Rhomboid
+ { abs exch abs 0.9 mul add 2 div } bd
+ /Round
+ { abs exch abs 2 copy add 1 le
+ { dup mul exch dup mul add 1 exch sub }
+ { 1 sub dup mul exch 1 sub dup mul add 1 sub }
+ ifelse } bd
+ /SimpleDot
+ { dup mul exch dup mul add 1 exch sub } bd
+ /Square
+ { abs exch abs 2 copy lt { exch } if pop neg } bd
+ end
+ { /Function defineRes pop } forall
+ /Identity {} /Function defineRes pop
+ Level2? StartLoad {
+ /gs
+ {
+ begin
+ /SA here { setstrokeadjust } if
+ /OP here { setoverprint } if
+ /BG here { setblackgeneration } if
+ /UCR here { setundercolorremoval } if
+ /HT here { sethalftone } if
+ /sethalftonephase isdefined? { /HTP here { sethalftonephase } if } if
+ /TR here
+ {
+ dup xcheck { settransfer } { aload pop setcolortransfer } ifelse
+ } if
+ end
+ } bd
+ { /Default /Halftone findresource pop } stopped
+ {
+ currenthalftone exch defineresource pop }
+ if
+ } EndLoad
+ Level2? not StartLoad {
+ /gs
+ {
+ begin
+ /SA here { /_sa? xdd } if
+ /OP here { dup /_op? xdd
+ /setoverprint where {pop setoverprint}
+ {pop} ifelse
+ } if
+ /HT here { sethalftone } if
+ /TR here { dup xcheck
+ { settransfer }
+ { pop }
+ ifelse } if
+ end
+ } bd
+ 5 dict dup
+ begin
+ currentscreen 1 [/HalftoneType /SpotFunction /Angle /Frequency]
+ { exch def } forall
+ end
+ /Default exch /Halftone defineRes pop
+ } EndLoad
+ /int {
+ dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul
+ exch pop add exch pop
+ } bd
+ /limit {
+ dup 2 index le { exch } if pop
+ dup 2 index ge { exch } if pop
+ } bd
+ _ColorSep5044? StartLoad {
+ /_sfc
+ {
+ _fp null eq
+ { _fcs type /arraytype eq
+ {_fcs 0 get /Separation eq
+ {
+ _fcs 1 get /All eq
+ {
+ _fc aload pop 1 exch sub
+ /setseparationgray where pop begin setseparationgray end
+ }
+ {
+ 1 _fcs 3 get exec _fcs 1 get
+ /findcmykcustomcolor where pop begin findcmykcustomcolor end
+ _fc aload pop
+ /setcustomcolor where pop begin setcustomcolor end
+ }
+ ifelse
+ }
+ { _fc L1setcolor }
+ ifelse
+ }
+ { _fc L1setcolor }
+ ifelse
+ }
+ { _fp setpattern }
+ ifelse
+ } bind dd
+ /_ssc
+ {
+ _sp null eq
+ { _scs type /arraytype eq
+ {_scs 0 get /Separation eq
+ {
+ _scs 1 get /All eq
+ {
+ _sc aload pop 1 exch sub
+ /setseparationgray where pop begin setseparationgray end
+ }
+ {
+ 1 _scs 3 get exec _scs 1 get
+ /findcmykcustomcolor where pop begin findcmykcustomcolor end
+ _sc aload pop
+ /setcustomcolor where pop begin setcustomcolor end
+ }
+ ifelse
+ }
+ { _sc L1setcolor }
+ ifelse
+ }
+ { _sc L1setcolor }
+ ifelse
+ }
+ { _sp setpattern }
+ ifelse
+ } bind dd
+ } EndLoad
+ %%EndFile
+ %%BeginFile: pdftext.prc
+ %%Copyright: Copyright 1987-1994 Adobe Systems Incorporated. All Rights Reserved.
+ PDF /PDFText 51 dict dup begin put
+ /initialize { PDFText begin } bd
+ /terminate { end } bd
+ /CopyFont {
+ {
+ 1 index /FID ne 2 index /UniqueID ne and
+ { def } { pop pop } ifelse
+ } forall
+ } bd
+ /modEnc {
+ /_enc xdd
+ /_icode 0 dd
+ counttomark 1 sub -1 0
+ {
+ index
+ dup type /nametype eq
+ {
+ _enc _icode 3 -1 roll put
+ _icode 1 add
+ }
+ if
+ /_icode xdd
+ } for
+ cleartomark
+ _enc
+ } bd
+ /trEnc {
+ /_enc xdd
+ 255 -1 0 {
+ exch dup -1 eq
+ { pop /.notdef }
+ { Encoding exch get }
+ ifelse
+ _enc 3 1 roll put
+ } for
+ pop
+ _enc
+ } bd
+ /TE {
+ /_i xdd
+ StandardEncoding 256 array copy modEnc
+ _pdfEncodings exch _i exch put
+ } bd
+ /TZ
+ {
+ /_usePDFEncoding xdd
+ findfont
+ dup length 2 add dict
+ begin
+ {
+ 1 index /FID ne { def } { pop pop } ifelse
+ } forall
+ /FontName exch def
+ _usePDFEncoding 0 ge
+ {
+ /Encoding _pdfEncodings _usePDFEncoding get def
+ pop
+ }
+ {
+ _usePDFEncoding -1 eq
+ {
+ counttomark 0 eq
+ { pop }
+ {
+ Encoding 256 array copy
+ modEnc /Encoding exch def
+ }
+ ifelse
+ }
+ {
+ 256 array
+ trEnc /Encoding exch def
+ }
+ ifelse
+ }
+ ifelse
+ FontName currentdict
+ end
+ definefont pop
+ }
+ bd
+ /_pdfIsLevel2
+ systemdict /languagelevel known
+ {languagelevel 2 ge}
+ {false}
+ ifelse
+ def
+ _pdfIsLevel2
+ {
+ /_pdfFontStatus
+ {
+ dup /Font resourcestatus
+ {pop pop pop true}
+ {
+ /CIDFont /Category resourcestatus
+ {
+ pop pop
+ /CIDFont resourcestatus
+ {pop pop true}
+ {false}
+ ifelse
+ }
+ { pop false }
+ ifelse
+ }
+ ifelse
+ } bd
+ }
+ {
+ /_pdfFontStatusString 50 string def
+ _pdfFontStatusString 0 (fonts/) putinterval
+ /_pdfFontStatus
+ {
+ _pdfFontStatusString 6 42 getinterval
+ cvs length 6 add
+ _pdfFontStatusString exch 0 exch getinterval
+ status
+ { pop pop pop pop true}
+ { false }
+ ifelse
+ } bd
+ }
+ ifelse
+ /_pdfString100 100 string def
+ /_pdfComposeFontName
+ {
+ dup length 1 eq
+ {
+ 0 get
+ 1 index
+ type /nametype eq
+ {
+ _pdfString100 cvs
+ length dup dup _pdfString100 exch (-) putinterval
+ _pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval
+ 2 index exch cvs length
+ add 1 add _pdfString100 exch 0 exch getinterval
+ exch pop
+ true
+ }
+ {
+ pop pop
+ false
+ }
+ ifelse
+ }
+ {
+ false
+ }
+ ifelse
+ } bd
+ systemdict /composefont known
+ {
+ /_pdfComposeFont
+ {
+ 1 index /CMap resourcestatus
+ {pop pop true}
+ {false}
+ ifelse
+ 1 index true exch
+ {
+ _pdfFontStatus not
+ {pop false exit}
+ if
+ }
+ forall
+ and
+ {composefont true}
+ {
+ _pdfComposeFontName
+ {
+ dup _pdfFontStatus
+ { findfont definefont true }
+ { pop pop false }
+ ifelse
+ }
+ {
+ dup _pdfFontStatus
+ { findfont true }
+ { pop false }
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ } bd
+ }
+ {
+ /_pdfComposeFont
+ {
+ _pdfComposeFontName not
+ {
+ dup
+ }
+ if
+ 2 copy _pdfFontStatus
+ { pop findfont definefont true }
+ {
+ eq
+ {pop false}
+ {
+ dup _pdfFontStatus
+ {findfont true}
+ {pop false}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ } bd
+ }
+ ifelse
+ /_pdfFaceByStyleDict 4 dict dup begin
+ _pdfIsLevel2
+ {
+ /Serif
+ /Ryumin-Light-83pv-RKSJ-H /Font resourcestatus
+ {pop pop /Ryumin-Light}
+ {/HeiseiMin-W3}
+ ifelse
+ def
+ /SansSerif
+ /GothicBBB-Medium-83pv-RKSJ-H /Font resourcestatus
+ {pop pop /GothicBBB-Medium}
+ {/HeiseiKakuGo-W5}
+ ifelse
+ def
+ /Jun101-Light-83pv-RKSJ-H /Font resourcestatus
+ {pop pop /RoundSansSerif /Jun101-Light def }
+ {
+ /HeiseiMaruGo-W4-83pv-RKSJ-H /Font resourcestatus
+ {pop pop /RoundSansSerif /HeiseiMaruGo-W4 def}
+ if
+ }
+ ifelse
+ /Default Serif def
+ }
+ {
+ /Serif /Ryumin-Light def
+ /SansSerif /GothicBBB-Medium def
+ {
+ (fonts/Jun101-Light-83pv-RKSJ-H) status
+ }stopped
+ {pop}{
+ {pop pop pop pop /RoundSansSerif /Jun101-Light def }
+ if
+ }ifelse
+ /Default Serif def
+ }
+ ifelse
+ end
+ def
+ /TZzero
+ {
+ /_styleArr xdd
+ 3 copy
+ _pdfComposeFont
+ {exch pop exch pop exch pop}
+ {
+ [
+ 0 1 _styleArr length 1 sub
+ {
+ _styleArr exch get
+ _pdfFaceByStyleDict exch 2 copy known not
+ { pop /Default }
+ if
+ get
+ }
+ for
+ ]
+ exch pop
+ 2 index 3 1 roll
+ _pdfComposeFont
+ {exch pop}
+ {
+ findfont
+ dup length dict
+ begin
+ {1 index /FID ne {def}{pop pop} ifelse }
+ forall
+ currentdict
+ end
+ }
+ ifelse
+ }
+ ifelse
+ definefont pop
+ }
+ bd
+ /swj {
+ dup 4 1 roll
+ dup length exch stringwidth
+ exch 5 -1 roll 3 index mul add
+ 4 1 roll 3 1 roll mul add
+ 6 2 roll /_cnt 0 dd
+ {1 index eq {/_cnt _cnt 1 add dd} if} forall pop
+ exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
+ } bd
+ /jss {
+ 4 1 roll
+ {
+ 2 npop
+ (0) exch 2 copy 0 exch put
+ gsave
+ 32 eq
+ {
+ exch 6 index 6 index 6 index 5 -1 roll widthshow
+ currentpoint
+ }
+ {
+ false charpath currentpoint
+ 4 index setmatrix stroke
+ }
+ ifelse
+ grestore
+ moveto
+ 2 copy rmoveto
+ } exch cshow
+ 6 npop
+ } def
+ /jsp
+ {
+ {
+ 2 npop
+ (0) exch 2 copy 0 exch put
+ 32 eq
+ { exch 5 index 5 index 5 index 5 -1 roll widthshow }
+ { false charpath }
+ ifelse
+ 2 copy rmoveto
+ } exch cshow
+ 5 npop
+ } bd
+ /trj { _cx 0 32 _ax 0 6 5 roll } bd
+ /pjsf { trj sfc awidthshow } bd
+ /pjss { trj _ctm ssc jss } bd
+ /pjsc { trj jsp } bd
+ /_Tjdef [
+ /pjsf load
+ /pjss load
+ {
+ dup
+ currentpoint 3 2 roll
+ pjsf
+ newpath moveto
+ pjss
+ } bind
+ {
+ trj swj rmoveto
+ } bind
+ {
+ dup currentpoint 4 2 roll gsave
+ pjsf
+ grestore 3 1 roll moveto
+ pjsc
+ } bind
+ {
+ dup currentpoint 4 2 roll
+ currentpoint gsave newpath moveto
+ pjss
+ grestore 3 1 roll moveto
+ pjsc
+ } bind
+ {
+ dup currentpoint 4 2 roll gsave
+ dup currentpoint 3 2 roll
+ pjsf
+ newpath moveto
+ pjss
+ grestore 3 1 roll moveto
+ pjsc
+ } bind
+ /pjsc load
+ ] def
+ /BT
+ {
+ /_inT true dd
+ _ctm currentmatrix pop matrix _tm copy pop
+ 0 _rise translate _hs 1 scale
+ 0 0 moveto
+ } bd
+ /ET
+ {
+ /_inT false dd
+ _tr 3 gt {clip} if
+ _ctm setmatrix newpath
+ } bd
+ /Tr {
+ _inT { _tr 3 le {currentpoint newpath moveto} if } if
+ dup /_tr xdd
+ _Tjdef exch get /_Tj xdd
+ } bd
+ /Tj {
+ userdict /$$copystring 2 index put
+ _Tj
+ } bd
+ /iTm { _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale } bd
+ /Tm { _tm astore pop iTm 0 0 moveto } bd
+ /Td { _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto } bd
+ /TD { dup /_ld xdd Td } bd
+ /Tf {
+ dup 1000 div /_fScl xdd
+ exch findfont exch scalefont setfont
+ } bd
+ /TL { neg /_ld xdd } bd
+ /Tw { /_cx xdd } bd
+ /Tc { /_ax xdd } bd
+ /Ts { /_rise xdd currentpoint iTm moveto } bd
+ /Tz { 100 div /_hs xdd iTm } bd
+ /Tk { exch pop _fScl mul neg 0 rmoveto } bd
+ /T* { 0 _ld Td } bd
+ /' { T* Tj } bd
+ /" { exch Tc exch Tw ' } bd
+ /TJ {
+ {
+ dup type /stringtype eq
+ { Tj }
+ { 0 exch Tk }
+ ifelse
+ } forall
+ } bd
+ /T- { _hy Tj } bd
+ /d0/setcharwidth ld
+ /d1 { setcachedevice /sfc{}dd /ssc{}dd } bd
+ /nND {{/.notdef} repeat} bd
+ /T3Defs {
+ /BuildChar
+ {
+ 1 index /Encoding get exch get
+ 1 index /BuildGlyph get exec
+ }
+ def
+ /BuildGlyph {
+ exch begin
+ GlyphProcs exch get exec
+ end
+ } def
+ } bd
+ /MakeBold {
+ findfont dup dup length 2 add dict
+ begin
+ CopyFont
+ /PaintType 2 def
+ /StrokeWidth .03 0 FontMatrix idtransform pop def
+ /dummybold currentdict
+ end
+ definefont
+ 8 dict begin
+ /_basefont exch def
+ /_basefonto exch def
+ /FontType 3 def
+ /FontMatrix[1 0 0 1 0 0]def
+ /FontBBox[0 0 1 1]def
+ /Encoding StandardEncoding def
+ /BuildChar
+ {
+ exch begin
+ _basefont setfont
+ ( )dup 0 4 -1 roll put
+ dup stringwidth
+ 1 index 0 ne { exch .03 add exch }if
+ setcharwidth
+ 0 0 moveto
+ gsave
+ dup show
+ grestore
+ _basefonto setfont
+ show
+ end
+ }bd
+ currentdict
+ end
+ definefont pop
+ }bd
+ /MakeItalic {
+ findfont _italMtx makefont
+ dup length dict
+ begin
+ CopyFont
+ currentdict
+ end
+ definefont pop
+ }bd
+ /MakeBoldItalic {
+ /dummybold exch
+ MakeBold
+ /dummybold
+ MakeItalic
+ }bd
+ currentdict readonly pop end
+ %%EndFile
+ PDFText begin
+ [39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
+ /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
+ /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
+ /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
+ /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
+ /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
+ /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
+ /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
+ /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
+ /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
+ /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
+ /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
+ /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
+ /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
+ /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
+ /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
+ /hungarumlaut/ogonek/caron
+ 0 TE
+ [1/dotlessi/caron 39/quotesingle 96/grave
+ 127/bullet/bullet/bullet/quotesinglbase/florin/quotedblbase/ellipsis
+ /dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE
+ /bullet/bullet/bullet/bullet/quoteleft/quoteright/quotedblleft
+ /quotedblright/bullet/endash/emdash/tilde/trademark/scaron
+ /guilsinglright/oe/bullet/bullet/Ydieresis/space/exclamdown/cent/sterling
+ /currency/yen/brokenbar/section/dieresis/copyright/ordfeminine
+ /guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus
+ /twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla
+ /onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters
+ /questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+ /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
+ /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash
+ /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave
+ /aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute
+ /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde
+ /ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute
+ /ucircumflex/udieresis/yacute/thorn/ydieresis
+ 1 TE
+ end
+ currentdict readonly pop
+ end end
+ /currentpacking where {pop setpacking}if
+ PDFVars/InitAll{[PDF PDFText]{/initialize get exec}forall initgs 0 Tr}put
+ PDFVars/TermAll{[PDFText PDF]{/terminate get exec}forall}put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ /N93 <<
+ /SA false
+ /OP false
+ >> /ExtGState defineRes pop
+ % Begin encoding-delta
+ [ 39 /quotesingle 96 /grave 127 /.notdef/Adieresis/Aring/Ccedilla
+ /Eacute/Ntilde/Odieresis/Udieresis/aacute/agrave
+ /acircumflex/adieresis/atilde/aring/ccedilla/eacute
+ /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex
+ /idieresis/ntilde/oacute/ograve/ocircumflex/odieresis
+ /otilde/uacute/ugrave/ucircumflex/udieresis/dagger
+ /.notdef/cent/sterling/section/bullet/paragraph
+ /germandbls/registered/copyright/trademark/acute/dieresis
+ /.notdef/AE/Oslash/.notdef/.notdef/.notdef
+ /.notdef/yen/.notdef/.notdef/.notdef/.notdef
+ /.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae
+ /oslash/questiondown/exclamdown/logicalnot/.notdef/florin
+ /.notdef/.notdef/guillemotleft/guillemotright/ellipsis/.notdef
+ /Agrave/Atilde/Otilde/OE/oe/endash
+ /emdash/quotedblleft/quotedblright/quoteleft/quoteright/.notdef
+ /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft
+ /guilsinglright/fi/fl/daggerdbl/periodcentered/quotesinglbase
+ /quotedblbase/perthousand/Acircumflex/Ecircumflex/Aacute/Edieresis
+ /Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute
+ /Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex/Ugrave
+ /dotlessi/circumflex/tilde/macron/breve/dotaccent
+ /ring/cedilla/hungarumlaut/ogonek/caron
+ /N92/Times-Roman -1 TZ
+ % End encoding-delta
+ % Begin encoding-delta
+ [ 39 /quotesingle 96 /grave 127 /.notdef/Adieresis/Aring/Ccedilla
+ /Eacute/Ntilde/Odieresis/Udieresis/aacute/agrave
+ /acircumflex/adieresis/atilde/aring/ccedilla/eacute
+ /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex
+ /idieresis/ntilde/oacute/ograve/ocircumflex/odieresis
+ /otilde/uacute/ugrave/ucircumflex/udieresis/dagger
+ /.notdef/cent/sterling/section/bullet/paragraph
+ /germandbls/registered/copyright/trademark/acute/dieresis
+ /.notdef/AE/Oslash/.notdef/.notdef/.notdef
+ /.notdef/yen/.notdef/.notdef/.notdef/.notdef
+ /.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae
+ /oslash/questiondown/exclamdown/logicalnot/.notdef/florin
+ /.notdef/.notdef/guillemotleft/guillemotright/ellipsis/.notdef
+ /Agrave/Atilde/Otilde/OE/oe/endash
+ /emdash/quotedblleft/quotedblright/quoteleft/quoteright/.notdef
+ /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft
+ /guilsinglright/fi/fl/daggerdbl/periodcentered/quotesinglbase
+ /quotedblbase/perthousand/Acircumflex/Ecircumflex/Aacute/Edieresis
+ /Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute
+ /Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex/Ugrave
+ /dotlessi/circumflex/tilde/macron/breve/dotaccent
+ /ring/cedilla/hungarumlaut/ogonek/caron
+ /N91/Times-Bold -1 TZ
+ % End encoding-delta
+ % Begin encoding-delta
+ [ 39 /quotesingle 96 /grave 127 /.notdef/Adieresis/Aring/Ccedilla
+ /Eacute/Ntilde/Odieresis/Udieresis/aacute/agrave
+ /acircumflex/adieresis/atilde/aring/ccedilla/eacute
+ /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex
+ /idieresis/ntilde/oacute/ograve/ocircumflex/odieresis
+ /otilde/uacute/ugrave/ucircumflex/udieresis/dagger
+ /.notdef/cent/sterling/section/bullet/paragraph
+ /germandbls/registered/copyright/trademark/acute/dieresis
+ /.notdef/AE/Oslash/.notdef/.notdef/.notdef
+ /.notdef/yen/.notdef/.notdef/.notdef/.notdef
+ /.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae
+ /oslash/questiondown/exclamdown/logicalnot/.notdef/florin
+ /.notdef/.notdef/guillemotleft/guillemotright/ellipsis/.notdef
+ /Agrave/Atilde/Otilde/OE/oe/endash
+ /emdash/quotedblleft/quotedblright/quoteleft/quoteright/.notdef
+ /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft
+ /guilsinglright/fi/fl/daggerdbl/periodcentered/quotesinglbase
+ /quotedblbase/perthousand/Acircumflex/Ecircumflex/Aacute/Edieresis
+ /Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute
+ /Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex/Ugrave
+ /dotlessi/circumflex/tilde/macron/breve/dotaccent
+ /ring/cedilla/hungarumlaut/ogonek/caron
+ /N94/Times-Italic -1 TZ
+ % End encoding-delta
+ % Begin encoding-delta
+ [ 39 /quotesingle 96 /grave 127 /.notdef/Adieresis/Aring/Ccedilla
+ /Eacute/Ntilde/Odieresis/Udieresis/aacute/agrave
+ /acircumflex/adieresis/atilde/aring/ccedilla/eacute
+ /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex
+ /idieresis/ntilde/oacute/ograve/ocircumflex/odieresis
+ /otilde/uacute/ugrave/ucircumflex/udieresis/dagger
+ /.notdef/cent/sterling/section/bullet/paragraph
+ /germandbls/registered/copyright/trademark/acute/dieresis
+ /.notdef/AE/Oslash/.notdef/.notdef/.notdef
+ /.notdef/yen/.notdef/.notdef/.notdef/.notdef
+ /.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae
+ /oslash/questiondown/exclamdown/logicalnot/.notdef/florin
+ /.notdef/.notdef/guillemotleft/guillemotright/ellipsis/.notdef
+ /Agrave/Atilde/Otilde/OE/oe/endash
+ /emdash/quotedblleft/quotedblright/quoteleft/quoteright/.notdef
+ /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft
+ /guilsinglright/fi/fl/daggerdbl/periodcentered/quotesinglbase
+ /quotedblbase/perthousand/Acircumflex/Ecircumflex/Aacute/Edieresis
+ /Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute
+ /Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex/Ugrave
+ /dotlessi/circumflex/tilde/macron/breve/dotaccent
+ /ring/cedilla/hungarumlaut/ogonek/caron
+ /N95/Courier -1 TZ
+ % End encoding-delta
+ % Begin encoding-delta
+ [/N96/Symbol -1 TZ
+ % End encoding-delta
+ % Begin encoding-delta
+ [/N97/Times-Roman -1 TZ
+ % End encoding-delta
+ % Begin encoding-delta
+ [ 39 /quotesingle 96 /grave 127 /.notdef/Adieresis/Aring/Ccedilla
+ /Eacute/Ntilde/Odieresis/Udieresis/aacute/agrave
+ /acircumflex/adieresis/atilde/aring/ccedilla/eacute
+ /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex
+ /idieresis/ntilde/oacute/ograve/ocircumflex/odieresis
+ /otilde/uacute/ugrave/ucircumflex/udieresis/dagger
+ /.notdef/cent/sterling/section/bullet/paragraph
+ /germandbls/registered/copyright/trademark/acute/dieresis
+ /.notdef/AE/Oslash/.notdef/.notdef/.notdef
+ /.notdef/yen/.notdef/.notdef/.notdef/.notdef
+ /.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae
+ /oslash/questiondown/exclamdown/logicalnot/.notdef/florin
+ /.notdef/.notdef/guillemotleft/guillemotright/ellipsis/.notdef
+ /Agrave/Atilde/Otilde/OE/oe/endash
+ /emdash/quotedblleft/quotedblright/quoteleft/quoteright/.notdef
+ /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft
+ /guilsinglright/fi/fl/daggerdbl/periodcentered/quotesinglbase
+ /quotedblbase/perthousand/Acircumflex/Ecircumflex/Aacute/Edieresis
+ /Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute
+ /Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex/Ugrave
+ /dotlessi/circumflex/tilde/macron/breve/dotaccent
+ /ring/cedilla/hungarumlaut/ogonek/caron
+ /N98/Courier-Bold -1 TZ
+ % End encoding-delta
+ % Begin encoding-delta
+ [ 39 /quotesingle 96 /grave 127 /.notdef/Adieresis/Aring/Ccedilla
+ /Eacute/Ntilde/Odieresis/Udieresis/aacute/agrave
+ /acircumflex/adieresis/atilde/aring/ccedilla/eacute
+ /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex
+ /idieresis/ntilde/oacute/ograve/ocircumflex/odieresis
+ /otilde/uacute/ugrave/ucircumflex/udieresis/dagger
+ /.notdef/cent/sterling/section/bullet/paragraph
+ /germandbls/registered/copyright/trademark/acute/dieresis
+ /.notdef/AE/Oslash/.notdef/.notdef/.notdef
+ /.notdef/yen/.notdef/.notdef/.notdef/.notdef
+ /.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae
+ /oslash/questiondown/exclamdown/logicalnot/.notdef/florin
+ /.notdef/.notdef/guillemotleft/guillemotright/ellipsis/.notdef
+ /Agrave/Atilde/Otilde/OE/oe/endash
+ /emdash/quotedblleft/quotedblright/quoteleft/quoteright/.notdef
+ /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft
+ /guilsinglright/fi/fl/daggerdbl/periodcentered/quotesinglbase
+ /quotedblbase/perthousand/Acircumflex/Ecircumflex/Aacute/Edieresis
+ /Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute
+ /Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex/Ugrave
+ /dotlessi/circumflex/tilde/macron/breve/dotaccent
+ /ring/cedilla/hungarumlaut/ogonek/caron
+ /N133/Helvetica -1 TZ
+ % End encoding-delta
+ % Begin encoding-delta
+ [ 39 /quotesingle 96 /grave 127 /.notdef/Adieresis/Aring/Ccedilla
+ /Eacute/Ntilde/Odieresis/Udieresis/aacute/agrave
+ /acircumflex/adieresis/atilde/aring/ccedilla/eacute
+ /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex
+ /idieresis/ntilde/oacute/ograve/ocircumflex/odieresis
+ /otilde/uacute/ugrave/ucircumflex/udieresis/dagger
+ /.notdef/cent/sterling/section/bullet/paragraph
+ /germandbls/registered/copyright/trademark/acute/dieresis
+ /.notdef/AE/Oslash/.notdef/.notdef/.notdef
+ /.notdef/yen/.notdef/.notdef/.notdef/.notdef
+ /.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae
+ /oslash/questiondown/exclamdown/logicalnot/.notdef/florin
+ /.notdef/.notdef/guillemotleft/guillemotright/ellipsis/.notdef
+ /Agrave/Atilde/Otilde/OE/oe/endash
+ /emdash/quotedblleft/quotedblright/quoteleft/quoteright/.notdef
+ /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft
+ /guilsinglright/fi/fl/daggerdbl/periodcentered/quotesinglbase
+ /quotedblbase/perthousand/Acircumflex/Ecircumflex/Aacute/Edieresis
+ /Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute
+ /Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex/Ugrave
+ /dotlessi/circumflex/tilde/macron/breve/dotaccent
+ /ring/cedilla/hungarumlaut/ogonek/caron
+ /N130/Helvetica-Bold -1 TZ
+ % End encoding-delta
+ PDFVars/TermAll get exec end end
+
+ %%EndSetup
+ %%Page: 1 1
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ /N134 <<
+ /SA false
+ /OP false
+ >> /ExtGState defineRes pop
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N134 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N130 1 Tf
+ 18 0 0 18 341.69 636 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ [(An Ef\336cient Meta-loc)20 (k f)20 (o)0 (r)]TJ
+ -8.0106 -1.1111 TD
+ [(Implementing Ubiquitous Sync)10 (hr)20 (onization)]TJ
+ /N133 1 Tf
+ 12 0 0 12 319.9 562 Tm
+ [( Ole Agesen, Da)21 (vid Detlefs)15 (, Ale)30 (x Gar)-40 (thw)15 (aite)15 (,)]TJ
+ -2.7992 -1.0833 TD
+ [(Ross Knippel, Y)140 (.)0 ( S)21 (.)0 ( Ramakr)-15 (ishna, and Derek White)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 2 2
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ /N141 <<
+ /SA true
+ /OP false
+ >> /ExtGState defineRes pop
+ /N142 <<
+ /SA false
+ /OP false
+ >> /ExtGState defineRes pop
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N142 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ 0 g
+ /N141 /ExtGState findRes gs
+ 168.891 99.828 m
+ 168.891 99.172 168.383 98.66 167.723 98.66 c
+ 167.063 98.66 166.554 99.172 166.554 99.828 c
+ 166.554 100.485 167.063 100.997 167.723 100.997 c
+ 168.383 100.997 168.891 100.485 168.891 99.828 c
+ h
+ 166.737 99.828 m
+ 166.737 99.269 167.158 98.826 167.723 98.826 c
+ 168.288 98.826 168.709 99.269 168.709 99.828 c
+ 168.709 100.387 168.288 100.83 167.723 100.83 c
+ 167.158 100.83 166.737 100.387 166.737 99.828 c
+ h
+ 167.465 99.153 m
+ 167.299 99.153 l
+ 167.299 100.503 l
+ 167.817 100.503 l
+ 168.122 100.503 168.257 100.371 168.257 100.13 c
+ 168.257 99.891 168.1 99.784 167.918 99.753 c
+ 168.32 99.153 l
+ 168.125 99.153 l
+ 167.745 99.753 l
+ 167.465 99.753 l
+ 167.465 99.153 l
+ h
+ 167.685 99.894 m
+ 167.889 99.894 168.09 99.9 168.09 100.13 c
+ 168.09 100.318 167.933 100.362 167.77 100.362 c
+ 167.465 100.362 l
+ 167.465 99.894 l
+ 167.685 99.894 l
+ f
+ 122.149 116.628 m
+ 122.042 111.155 128.194 108.58 128.087 103.787 c
+ 128.087 102.463 127.086 99.029 123.58 99.101 c
+ 121.827 99.137 120.146 100.317 120.181 103.357 c
+ 120.181 105.504 l
+ 120.146 105.682 120.146 105.897 120.003 106.076 c
+ 119.895 106.183 119.681 106.255 119.502 106.183 c
+ 119.18 106.004 119.108 105.647 118.965 105.36 c
+ 118.786 104.43 118.572 103.465 118.393 102.535 c
+ 118.357 102.463 118.465 102.463 118.393 102.463 c
+ 118.25 101.784 118.143 101.068 118.107 100.388 c
+ 118.071 99.959 118.357 99.602 118.715 99.387 c
+ 120.038 98.672 121.72 98.171 123.58 98.135 c
+ 128.123 98.064 131.843 102.034 131.915 105.897 c
+ 131.95 109.009 130.198 110.797 128.266 113.122 c
+ 127.3 114.338 125.368 116.02 125.44 118.237 c
+ 125.44 120.026 126.907 122.029 129.59 121.993 c
+ 133.203 121.922 132.63 118.094 132.702 116.341 c
+ 132.702 116.163 132.702 115.984 132.845 115.912 c
+ 132.988 115.769 133.203 115.733 133.382 115.805 c
+ 133.489 115.912 133.56 115.984 133.596 116.091 c
+ 134.49 119.453 l
+ 134.634 120.061 134.92 120.67 134.92 121.385 c
+ 134.92 121.564 134.777 121.743 134.598 121.886 c
+ 132.702 122.887 131.557 123.03 129.804 123.066 c
+ 125.368 123.138 122.185 119.99 122.149 116.628 c
+ h
+ 132.959 109.975 m
+ 132.959 109.796 133.103 109.617 133.317 109.617 c
+ 133.782 109.617 134.033 110.547 135.177 112.085 c
+ 135.821 113.051 136.644 113.802 137.073 113.802 c
+ 137.395 113.802 137.431 113.552 137.431 113.337 c
+ 137.431 112.264 133.353 103.679 133.353 100.317 c
+ 133.353 99.28 133.782 98.278 135.106 98.278 c
+ 138.254 98.278 141.652 102.249 144.085 105.825 c
+ 144.192 105.933 144.263 105.933 144.228 105.754 c
+ 143.727 104.287 143.011 101.497 143.011 99.78 c
+ 143.011 99.065 143.155 98.207 144.299 98.207 c
+ 147.089 98.207 150.703 103.679 150.703 104.967 c
+ 150.703 105.182 150.631 105.396 150.381 105.396 c
+ 149.951 105.396 149.808 104.681 149.343 103.894 c
+ 148.484 102.535 147.089 100.746 146.41 100.746 c
+ 146.159 100.746 146.159 101.032 146.159 101.247 c
+ 146.159 103.071 150.524 114.982 150.524 115.34 c
+ 150.524 115.626 150.488 115.805 150.059 115.805 c
+ 149.773 115.805 149.307 115.841 148.663 115.841 c
+ 147.483 115.841 147.411 115.662 147.304 115.447 c
+ 146.732 114.338 145.873 110.797 144.156 107.685 c
+ 141.831 103.644 138.683 100.46 137.359 100.46 c
+ 136.894 100.46 136.608 100.818 136.608 101.354 c
+ 136.608 103.143 140.937 112.407 140.937 114.66 c
+ 140.937 115.197 140.65 116.27 139.363 116.27 c
+ 135.893 116.27 132.959 110.618 132.959 109.975 c
+ h
+ 165.701 116.234 m
+ 162.231 116.234 158.546 110.726 157.294 108.866 c
+ 157.223 108.687 157.187 108.758 157.223 108.901 c
+ 157.831 111.119 158.546 113.087 158.546 114.553 c
+ 158.546 115.447 158.117 116.341 156.972 116.341 c
+ 154.54 116.341 150.998 111.548 150.998 110.368 c
+ 150.998 110.118 151.07 109.939 151.249 109.939 c
+ 151.678 109.939 152.036 110.762 152.68 111.62 c
+ 153.503 112.622 154.504 113.909 155.112 113.909 c
+ 155.22 113.909 155.327 113.838 155.327 113.48 c
+ 155.327 111.978 152.25 103.5 150.963 99.28 c
+ 150.819 98.815 151.106 98.707 152.465 98.707 c
+ 153.431 98.707 153.896 98.564 154.075 99.315 c
+ 154.862 102.141 156.328 105.289 157.938 108.043 c
+ 159.405 110.618 162.553 114.338 164.306 114.338 c
+ 164.699 114.338 164.95 114.052 164.95 113.444 c
+ 164.95 111.656 160.371 103.107 160.514 99.852 c
+ 160.55 98.922 160.872 98.242 162.052 98.242 c
+ 164.771 98.242 167.167 102.034 168.276 104.037 c
+ 168.455 104.359 168.741 104.717 168.491 105.11 c
+ 168.42 105.253 168.276 105.325 168.098 105.325 c
+ 167.99 105.325 167.883 105.217 167.811 105.11 c
+ 167.06 103.787 165.415 100.889 164.306 100.818 c
+ 164.091 100.818 163.984 101.032 163.984 101.211 c
+ 163.984 102.499 167.99 110.833 167.99 113.659 c
+ 167.99 115.555 166.953 116.234 165.701 116.234 c
+ f
+ 90.144 108.471 m
+ 89.113 107.44 87.442 107.441 86.411 108.471 c
+ 85.381 109.502 85.381 111.174 86.411 112.205 c
+ 92.524 118.316 l
+ 94.159 116.681 l
+ 88.003 110.527 l
+ 88.465 110.065 l
+ 94.621 116.219 l
+ 96.257 114.584 l
+ 90.144 108.471 l
+ f
+ 94.904 112.271 m
+ 95.934 113.301 97.605 113.301 98.636 112.271 c
+ 99.667 111.24 99.667 109.568 98.636 108.537 c
+ 92.524 102.426 l
+ 90.888 104.06 l
+ 97.044 110.215 l
+ 96.582 110.677 l
+ 90.427 104.522 l
+ 88.79 106.158 l
+ 94.904 112.271 l
+ f
+ 102.829 99.589 m
+ 103.86 98.559 103.86 96.888 102.829 95.857 c
+ 101.798 94.827 100.126 94.827 99.095 95.857 c
+ 92.983 101.969 l
+ 94.618 103.604 l
+ 100.773 97.449 l
+ 101.235 97.911 l
+ 95.08 104.066 l
+ 96.716 105.702 l
+ 102.829 99.589 l
+ f
+ 99.029 104.349 m
+ 97.998 105.379 97.998 107.05 99.029 108.081 c
+ 100.06 109.111 101.732 109.111 102.763 108.081 c
+ 108.875 101.969 l
+ 107.24 100.334 l
+ 101.085 106.489 l
+ 100.623 106.027 l
+ 106.778 99.872 l
+ 105.142 98.236 l
+ 99.029 104.349 l
+ f
+ 106.957 108.474 m
+ 105.926 107.443 104.255 107.443 103.225 108.474 c
+ 102.194 109.505 102.194 111.177 103.225 112.207 c
+ 109.337 118.319 l
+ 110.972 116.684 l
+ 104.816 110.529 l
+ 105.278 110.067 l
+ 111.434 116.222 l
+ 113.07 114.586 l
+ 106.957 108.474 l
+ f
+ 111.717 112.273 m
+ 112.747 113.304 114.418 113.304 115.449 112.273 c
+ 116.48 111.242 116.48 109.57 115.449 108.54 c
+ 109.337 102.428 l
+ 107.702 104.063 l
+ 113.857 110.218 l
+ 113.395 110.68 l
+ 107.24 104.525 l
+ 105.603 106.161 l
+ 111.717 112.273 l
+ f
+ 102.829 116.398 m
+ 103.86 115.368 103.86 113.697 102.829 112.666 c
+ 101.798 111.636 100.126 111.635 99.095 112.666 c
+ 92.983 118.778 l
+ 94.618 120.413 l
+ 100.773 114.258 l
+ 101.235 114.72 l
+ 95.08 120.875 l
+ 96.716 122.511 l
+ 102.829 116.398 l
+ f
+ 99.029 121.158 m
+ 97.998 122.188 97.998 123.859 99.029 124.889 c
+ 100.06 125.92 101.732 125.92 102.763 124.89 c
+ 108.875 118.778 l
+ 107.24 117.143 l
+ 101.085 123.298 l
+ 100.623 122.836 l
+ 106.778 116.681 l
+ 105.142 115.045 l
+ 99.029 121.158 l
+ f
+ 124.334 91.075 m
+ 124.334 93.452 l
+ 124.334 93.966 124.211 94.294 123.712 94.294 c
+ 123.168 94.294 122.646 93.735 122.646 92.841 c
+ 122.646 91.075 l
+ 121.963 91.075 l
+ 121.963 93.46 l
+ 121.963 93.921 121.863 94.294 121.341 94.294 c
+ 120.757 94.294 120.274 93.69 120.274 92.841 c
+ 120.274 91.075 l
+ 119.583 91.075 l
+ 119.583 94.778 l
+ 120.251 94.778 l
+ 120.251 94.562 120.236 94.227 120.189 94.003 c
+ 120.205 93.996 l
+ 120.427 94.518 120.919 94.853 121.533 94.853 c
+ 122.339 94.853 122.553 94.309 122.584 94.011 c
+ 122.745 94.361 123.152 94.853 123.889 94.853 c
+ 124.611 94.853 125.025 94.473 125.025 93.638 c
+ 125.025 91.075 l
+ 124.334 91.075 l
+ f
+ 130.241 91.023 m
+ 129.328 91.023 128.568 91.44 128.568 92.804 c
+ 128.568 93.996 129.197 94.838 130.472 94.838 c
+ 130.771 94.838 131.07 94.793 131.339 94.719 c
+ 131.262 94.13 l
+ 131.024 94.219 130.74 94.286 130.441 94.286 c
+ 129.673 94.286 129.297 93.735 129.297 92.893 c
+ 129.297 92.171 129.543 91.597 130.387 91.597 c
+ 130.709 91.597 131.047 91.671 131.293 91.798 c
+ 131.347 91.217 l
+ 131.093 91.12 130.686 91.023 130.241 91.023 c
+ f
+ 134.271 94.19 m
+ 133.465 94.324 133.081 93.75 133.081 92.565 c
+ 133.081 91.075 l
+ 132.39 91.075 l
+ 132.39 94.778 l
+ 133.058 94.778 l
+ 133.058 94.547 133.035 94.205 132.974 93.899 c
+ 132.989 93.899 l
+ 133.15 94.413 133.542 94.927 134.302 94.845 c
+ 134.271 94.19 l
+ f
+ 136.617 91.008 m
+ 135.581 91.008 134.906 91.589 134.906 92.893 c
+ 134.906 93.981 135.612 94.845 136.763 94.845 c
+ 137.738 94.845 138.483 94.324 138.483 92.99 c
+ 138.483 91.873 137.746 91.008 136.617 91.008 c
+ h
+ 136.702 94.286 m
+ 136.149 94.286 135.627 93.877 135.627 92.96 c
+ 135.627 92.066 136.003 91.575 136.702 91.575 c
+ 137.27 91.575 137.761 92.007 137.761 92.953 c
+ 137.761 93.795 137.408 94.286 136.702 94.286 c
+ f
+ 140.27 91.008 m
+ 139.986 91.008 139.702 91.031 139.464 91.075 c
+ 139.487 91.671 l
+ 139.725 91.597 140.032 91.545 140.324 91.545 c
+ 140.83 91.545 141.176 91.768 141.176 92.111 c
+ 141.176 92.938 139.403 92.431 139.403 93.735 c
+ 139.403 94.361 139.932 94.845 140.93 94.845 c
+ 141.16 94.845 141.429 94.815 141.659 94.771 c
+ 141.644 94.212 l
+ 141.406 94.286 141.13 94.331 140.877 94.331 c
+ 140.37 94.331 140.117 94.123 140.117 93.802 c
+ 140.117 92.99 141.897 93.43 141.897 92.186 c
+ 141.897 91.515 141.283 91.008 140.27 91.008 c
+ f
+ 144.388 90.703 m
+ 143.943 89.556 143.583 89.183 142.738 89.183 c
+ 142.592 89.183 142.393 89.205 142.239 89.228 c
+ 142.301 89.831 l
+ 142.462 89.779 142.615 89.757 142.792 89.757 c
+ 143.214 89.757 143.437 89.943 143.705 90.658 c
+ 143.866 91.075 l
+ 142.424 94.778 l
+ 143.206 94.778 l
+ 143.928 92.856 l
+ 144.051 92.521 144.135 92.23 144.22 91.94 c
+ 144.235 91.94 l
+ 144.304 92.2 144.465 92.67 144.611 93.08 c
+ 145.225 94.778 l
+ 145.977 94.778 l
+ 144.388 90.703 l
+ f
+ 147.397 91.008 m
+ 147.113 91.008 146.829 91.031 146.591 91.075 c
+ 146.614 91.671 l
+ 146.852 91.597 147.159 91.545 147.45 91.545 c
+ 147.957 91.545 148.302 91.768 148.302 92.111 c
+ 148.302 92.938 146.529 92.431 146.529 93.735 c
+ 146.529 94.361 147.059 94.845 148.057 94.845 c
+ 148.287 94.845 148.556 94.815 148.786 94.771 c
+ 148.77 94.212 l
+ 148.533 94.286 148.256 94.331 148.003 94.331 c
+ 147.496 94.331 147.243 94.123 147.243 93.802 c
+ 147.243 92.99 149.024 93.43 149.024 92.186 c
+ 149.024 91.515 148.41 91.008 147.397 91.008 c
+ f
+ 151.329 91.016 m
+ 150.546 91.016 150.308 91.329 150.308 92.126 c
+ 150.308 94.257 l
+ 149.525 94.257 l
+ 149.525 94.778 l
+ 150.308 94.778 l
+ 150.308 95.978 l
+ 150.999 96.164 l
+ 150.999 94.778 l
+ 152.066 94.778 l
+ 152.066 94.257 l
+ 150.999 94.257 l
+ 150.999 92.364 l
+ 150.999 91.753 151.114 91.589 151.544 91.589 c
+ 151.72 91.589 151.912 91.619 152.066 91.657 c
+ 152.066 91.09 l
+ 151.851 91.046 151.574 91.016 151.329 91.016 c
+ f
+ 156.044 92.968 m
+ 153.549 92.968 l
+ 153.519 91.977 153.941 91.552 154.754 91.552 c
+ 155.146 91.552 155.56 91.642 155.867 91.783 c
+ 155.929 91.239 l
+ 155.56 91.09 155.115 91.008 154.639 91.008 c
+ 153.465 91.008 152.836 91.604 152.836 92.908 c
+ 152.836 94.018 153.457 94.845 154.54 94.845 c
+ 155.614 94.845 156.067 94.137 156.067 93.288 c
+ 156.067 93.199 156.059 93.094 156.044 92.968 c
+ h
+ 154.509 94.354 m
+ 154.01 94.354 153.657 93.989 153.58 93.445 c
+ 155.361 93.445 l
+ 155.376 93.989 155.046 94.354 154.509 94.354 c
+ f
+ 161.845 91.075 m
+ 161.845 93.452 l
+ 161.845 93.966 161.722 94.294 161.223 94.294 c
+ 160.678 94.294 160.156 93.735 160.156 92.841 c
+ 160.156 91.075 l
+ 159.473 91.075 l
+ 159.473 93.46 l
+ 159.473 93.921 159.373 94.294 158.851 94.294 c
+ 158.268 94.294 157.784 93.69 157.784 92.841 c
+ 157.784 91.075 l
+ 157.093 91.075 l
+ 157.093 94.778 l
+ 157.761 94.778 l
+ 157.761 94.562 157.746 94.227 157.7 94.003 c
+ 157.715 93.996 l
+ 157.938 94.518 158.429 94.853 159.043 94.853 c
+ 159.849 94.853 160.064 94.309 160.095 94.011 c
+ 160.256 94.361 160.663 94.853 161.399 94.853 c
+ 162.121 94.853 162.535 94.473 162.535 93.638 c
+ 162.535 91.075 l
+ 161.845 91.075 l
+ f
+ 164.433 91.008 m
+ 164.149 91.008 163.865 91.031 163.627 91.075 c
+ 163.65 91.671 l
+ 163.888 91.597 164.195 91.545 164.487 91.545 c
+ 164.994 91.545 165.339 91.768 165.339 92.111 c
+ 165.339 92.938 163.566 92.431 163.566 93.735 c
+ 163.566 94.361 164.096 94.845 165.093 94.845 c
+ 165.324 94.845 165.592 94.815 165.823 94.771 c
+ 165.807 94.212 l
+ 165.569 94.286 165.293 94.331 165.04 94.331 c
+ 164.533 94.331 164.28 94.123 164.28 93.802 c
+ 164.28 92.99 166.061 93.43 166.061 92.186 c
+ 166.061 91.515 165.447 91.008 164.433 91.008 c
+ f
+ 126.966 95.389 m
+ 127.219 95.389 127.426 95.59 127.426 95.829 c
+ 127.426 96.075 127.219 96.261 126.966 96.261 c
+ 126.713 96.261 126.505 96.067 126.505 95.829 c
+ 126.505 95.583 126.713 95.389 126.966 95.389 c
+ f
+ 126.062 94.787 m
+ 126.062 94.265 l
+ 126.62 94.265 l
+ 126.62 91.075 l
+ 127.311 91.075 l
+ 127.311 94.778 l
+ 126.062 94.787 l
+ f
+ 168.659 79.658 m
+ 168.659 79.388 l
+ 168.309 79.388 l
+ 168.309 78.062 l
+ 167.99 78.062 l
+ 167.99 79.388 l
+ 167.64 79.388 l
+ 167.64 79.658 l
+ 168.659 79.658 l
+ f
+ 170.491 78.062 m
+ 170.153 78.062 l
+ 170.146 78.478 170.134 78.892 170.099 79.32 c
+ 170.094 79.32 l
+ 169.734 78.062 l
+ 169.496 78.062 l
+ 169.148 79.32 l
+ 169.143 79.32 l
+ 169.108 78.892 169.096 78.478 169.089 78.062 c
+ 168.786 78.062 l
+ 168.8 78.594 168.838 79.128 168.89 79.658 c
+ 169.361 79.658 l
+ 169.647 78.627 l
+ 169.652 78.627 l
+ 169.947 79.658 l
+ 170.387 79.658 l
+ 170.439 79.128 170.477 78.594 170.491 78.062 c
+ f
+ 89.088 79.647 m
+ 89.088 78.949 l
+ 88.181 78.949 l
+ 88.181 75.513 l
+ 87.354 75.513 l
+ 87.354 78.949 l
+ 86.448 78.949 l
+ 86.448 79.647 l
+ 89.088 79.647 l
+ f
+ 90.342 79.647 m
+ 90.342 78.018 l
+ 91.745 78.018 l
+ 91.745 79.647 l
+ 92.571 79.647 l
+ 92.571 75.513 l
+ 91.745 75.513 l
+ 91.745 77.369 l
+ 90.342 77.369 l
+ 90.342 75.513 l
+ 89.515 75.513 l
+ 89.515 79.647 l
+ 90.342 79.647 l
+ f
+ 95.322 79.647 m
+ 95.322 78.961 l
+ 94.018 78.961 l
+ 94.018 77.944 l
+ 95.102 77.944 l
+ 95.102 77.295 l
+ 94.018 77.295 l
+ 94.018 76.211 l
+ 95.347 76.211 l
+ 95.347 75.513 l
+ 93.191 75.513 l
+ 93.191 79.647 l
+ 95.322 79.647 l
+ f
+ 98.582 79.647 m
+ 99.905 76.977 l
+ 99.905 79.647 l
+ 100.615 79.647 l
+ 100.615 75.513 l
+ 99.709 75.513 l
+ 98.208 78.581 l
+ 98.208 75.513 l
+ 97.498 75.513 l
+ 97.498 79.647 l
+ 98.582 79.647 l
+ f
+ 103.366 79.647 m
+ 103.366 78.961 l
+ 102.062 78.961 l
+ 102.062 77.944 l
+ 103.146 77.944 l
+ 103.146 77.295 l
+ 102.062 77.295 l
+ 102.062 76.211 l
+ 103.391 76.211 l
+ 103.391 75.513 l
+ 101.235 75.513 l
+ 101.235 79.647 l
+ 103.366 79.647 l
+ f
+ 106.394 79.647 m
+ 106.394 78.949 l
+ 105.488 78.949 l
+ 105.488 75.513 l
+ 104.661 75.513 l
+ 104.661 78.949 l
+ 103.755 78.949 l
+ 103.755 79.647 l
+ 106.394 79.647 l
+ f
+ 108.215 76.683 m
+ 108.888 79.647 l
+ 109.623 79.647 l
+ 110.297 76.683 l
+ 110.309 76.683 l
+ 110.536 77.681 110.738 78.704 110.866 79.647 c
+ 111.613 79.647 l
+ 111.399 78.257 111.081 76.842 110.658 75.513 c
+ 109.825 75.513 l
+ 109.201 78.201 l
+ 109.188 78.201 l
+ 108.551 75.513 l
+ 107.682 75.513 l
+ 107.278 76.885 106.971 78.269 106.775 79.647 c
+ 107.657 79.647 l
+ 107.768 78.808 107.976 77.785 108.202 76.683 c
+ 108.215 76.683 l
+ f
+ 115.201 77.687 m
+ 115.201 75.973 114.325 75.452 113.486 75.452 c
+ 112.457 75.452 111.821 76.095 111.821 77.522 c
+ 111.821 78.973 112.549 79.702 113.548 79.702 c
+ 114.552 79.702 115.201 79.028 115.201 77.687 c
+ h
+ 112.696 77.687 m
+ 112.696 76.518 113.039 76.132 113.535 76.132 c
+ 113.97 76.132 114.325 76.493 114.325 77.516 c
+ 114.325 78.624 113.964 79.022 113.474 79.022 c
+ 113.052 79.022 112.696 78.655 112.696 77.687 c
+ f
+ 117.056 79.665 m
+ 118.06 79.665 118.52 79.193 118.52 78.489 c
+ 118.52 77.975 118.213 77.54 117.638 77.326 c
+ 118.673 75.513 l
+ 117.687 75.513 l
+ 116.842 77.191 l
+ 116.658 77.191 l
+ 116.658 75.513 l
+ 115.831 75.513 l
+ 115.831 79.647 l
+ 116.266 79.659 116.67 79.665 117.056 79.665 c
+ h
+ 116.658 77.846 m
+ 116.793 77.834 116.909 77.834 117.019 77.834 c
+ 117.399 77.834 117.662 78.091 117.662 78.41 c
+ 117.662 78.777 117.485 79.01 116.97 79.01 c
+ 116.872 79.01 116.762 79.004 116.658 78.998 c
+ 116.658 77.846 l
+ f
+ 120.025 79.647 m
+ 120.025 77.914 l
+ 121.103 79.647 l
+ 122.046 79.647 l
+ 120.699 77.803 l
+ 122.12 75.513 l
+ 121.091 75.513 l
+ 120.025 77.399 l
+ 120.025 75.513 l
+ 119.199 75.513 l
+ 119.199 79.647 l
+ 120.025 79.647 l
+ f
+ 123.818 79.647 0.827 -4.133 re
+ f
+ 127.487 78.857 m
+ 127.278 78.961 126.984 79.059 126.721 79.059 c
+ 126.36 79.059 126.151 78.838 126.151 78.575 c
+ 126.151 77.785 127.891 77.999 127.891 76.695 c
+ 127.891 76.021 127.401 75.44 126.409 75.44 c
+ 125.98 75.44 125.582 75.574 125.196 75.844 c
+ 125.435 76.322 l
+ 125.655 76.217 125.962 76.101 126.305 76.101 c
+ 126.782 76.101 126.972 76.315 126.972 76.585 c
+ 126.972 77.369 125.294 77.099 125.294 78.477 c
+ 125.294 79.175 125.796 79.696 126.611 79.696 c
+ 127.052 79.696 127.419 79.555 127.713 79.31 c
+ 127.487 78.857 l
+ f
+ 142.943 76.23 m
+ 142.637 75.752 142.214 75.458 141.688 75.458 c
+ 140.769 75.458 140.144 76.107 140.144 77.491 c
+ 140.144 78.838 140.818 79.69 141.749 79.69 c
+ 142.269 79.69 142.667 79.383 142.882 78.924 c
+ 142.514 78.593 l
+ 142.288 78.844 142.104 78.967 141.804 78.967 c
+ 141.381 78.967 141.026 78.434 141.026 77.589 c
+ 141.026 76.542 141.4 76.187 141.877 76.187 c
+ 142.104 76.187 142.343 76.328 142.569 76.56 c
+ 142.943 76.23 l
+ f
+ 146.646 77.687 m
+ 146.646 75.973 145.77 75.452 144.931 75.452 c
+ 143.902 75.452 143.265 76.095 143.265 77.522 c
+ 143.265 78.973 143.994 79.702 144.992 79.702 c
+ 145.997 79.702 146.646 79.028 146.646 77.687 c
+ h
+ 144.141 77.687 m
+ 144.141 76.518 144.484 76.132 144.98 76.132 c
+ 145.415 76.132 145.77 76.493 145.77 77.516 c
+ 145.77 78.624 145.409 79.022 144.919 79.022 c
+ 144.496 79.022 144.141 78.655 144.141 77.687 c
+ f
+ 151.521 75.513 m
+ 150.646 75.513 l
+ 150.627 76.591 150.597 77.663 150.505 78.771 c
+ 150.493 78.771 l
+ 149.562 75.513 l
+ 148.943 75.513 l
+ 148.043 78.771 l
+ 148.031 78.771 l
+ 147.939 77.663 147.908 76.591 147.89 75.513 c
+ 147.106 75.513 l
+ 147.143 76.891 147.241 78.275 147.375 79.647 c
+ 148.594 79.647 l
+ 149.335 76.977 l
+ 149.347 76.977 l
+ 150.113 79.647 l
+ 151.252 79.647 l
+ 151.387 78.275 151.485 76.891 151.521 75.513 c
+ f
+ 153.268 79.659 m
+ 154.376 79.659 154.891 79.132 154.891 78.385 c
+ 154.891 77.577 154.321 76.971 153.115 76.971 c
+ 152.998 76.971 l
+ 152.998 75.513 l
+ 152.172 75.513 l
+ 152.172 79.647 l
+ 152.57 79.647 152.919 79.659 153.268 79.659 c
+ h
+ 152.998 77.601 m
+ 153.188 77.601 l
+ 153.721 77.601 154.009 77.828 154.009 78.293 c
+ 154.009 78.746 153.77 79.004 153.157 79.004 c
+ 152.998 79.004 l
+ 152.998 77.601 l
+ f
+ 156.207 79.647 m
+ 156.207 77.044 l
+ 156.207 76.346 156.537 76.113 156.929 76.113 c
+ 157.352 76.113 157.64 76.364 157.64 77.007 c
+ 157.64 79.647 l
+ 158.442 79.647 l
+ 158.442 77.063 l
+ 158.442 75.856 157.732 75.452 156.838 75.452 c
+ 155.894 75.452 155.38 75.887 155.38 76.983 c
+ 155.38 79.647 l
+ 156.207 79.647 l
+ f
+ 161.492 79.647 m
+ 161.492 78.949 l
+ 160.585 78.949 l
+ 160.585 75.513 l
+ 159.758 75.513 l
+ 159.758 78.949 l
+ 158.852 78.949 l
+ 158.852 79.647 l
+ 161.492 79.647 l
+ f
+ 164.051 79.647 m
+ 164.051 78.961 l
+ 162.746 78.961 l
+ 162.746 77.944 l
+ 163.83 77.944 l
+ 163.83 77.295 l
+ 162.746 77.295 l
+ 162.746 76.211 l
+ 164.075 76.211 l
+ 164.075 75.513 l
+ 161.919 75.513 l
+ 161.919 79.647 l
+ 164.051 79.647 l
+ f
+ 165.856 79.665 m
+ 166.86 79.665 167.32 79.193 167.32 78.489 c
+ 167.32 77.975 167.013 77.54 166.438 77.326 c
+ 167.473 75.513 l
+ 166.487 75.513 l
+ 165.642 77.191 l
+ 165.458 77.191 l
+ 165.458 75.513 l
+ 164.631 75.513 l
+ 164.631 79.647 l
+ 165.066 79.659 165.47 79.665 165.856 79.665 c
+ h
+ 165.458 77.846 m
+ 165.593 77.834 165.709 77.834 165.819 77.834 c
+ 166.199 77.834 166.462 78.091 166.462 78.41 c
+ 166.462 78.777 166.285 79.01 165.77 79.01 c
+ 165.672 79.01 165.562 79.004 165.458 78.998 c
+ 165.458 77.846 l
+ f
+ 131.944 79.647 m
+ 131.944 78.949 l
+ 131.037 78.949 l
+ 131.037 75.513 l
+ 130.211 75.513 l
+ 130.211 78.949 l
+ 129.304 78.949 l
+ 129.304 79.647 l
+ 131.944 79.647 l
+ f
+ 133.198 79.647 m
+ 133.198 78.018 l
+ 134.601 78.018 l
+ 134.601 79.647 l
+ 135.428 79.647 l
+ 135.428 75.513 l
+ 134.601 75.513 l
+ 134.601 77.369 l
+ 133.198 77.369 l
+ 133.198 75.513 l
+ 132.372 75.513 l
+ 132.372 79.647 l
+ 133.198 79.647 l
+ f
+ 138.178 79.647 m
+ 138.178 78.961 l
+ 136.874 78.961 l
+ 136.874 77.944 l
+ 137.958 77.944 l
+ 137.958 77.295 l
+ 136.874 77.295 l
+ 136.874 76.211 l
+ 138.203 76.211 l
+ 138.203 75.513 l
+ 136.047 75.513 l
+ 136.047 79.647 l
+ 138.178 79.647 l
+ f
+ 1 g
+ /N142 /ExtGState findRes gs
+ 85.5 83.15 85.71 -19.48 re
+ f*
+ 118.5 81.5 104.5 -34.25 re
+ f*
+ BT
+ /N92 1 Tf
+ 9 0 0 9 118.5 75.5 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ (M/S MTV29-01)Tj
+ 0 -1 TD
+ (901 San Antonio Road)Tj
+ T*
+ [(P)15 (alo Alto, CA 94303-4900)]TJ
+ /N130 1 Tf
+ 18 0 0 18 85 672 Tm
+ [(An Ef\336cient Meta-loc)20 (k f)20 (o)0 (r)]TJ
+ 0 -1.1111 TD
+ [(Implementing Ubiquitous Sync)10 (hr)20 (onization)]TJ
+ /N133 1 Tf
+ 12 0 0 12 85 606 Tm
+ [(Ole Agesen, Da)20 (vid Detlefs)16 (, Ale)29 (x Gar)-40 (thw)15 (aite)15 (,)]TJ
+ 0 -1.3333 TD
+ [(Ross Knippel, Y)140 (.)0 ( S)21 (.)0 ( Ramakr)-15 (ishna, and Derek White)]TJ
+ 9 0 0 9 85 533 Tm
+ [(SMLI TR-99-76)-9165 (Apr)-15 (il 1999)]TJ
+ /N130 1 Tf
+ 11 0 0 11 85 480.67 Tm
+ (Abstract:)Tj
+ /N133 1 Tf
+ 10 0 0 10 85 458.33 Tm
+ [(Prog)10 (r)10 (ams)-431 (wr)-15 (itten)-431 (in)-431 (concurrent)-431 (object-or)-15 (iented)-431 (languages)15 (,)-431 (especially)-431 (ones)-432 (that)-431 (emplo)30 (y)-431 (threadsaf)30 (e)]TJ
+ 0 -1.2 TD
+ [(reusab)20 (le)-277 (class)-277 (libr)10 (ar)-15 (ies)15 (,)-277 (can)-278 (e)31 (x)30 (ecute)-278 (synchronization)-277 (oper)10 (ations)-277 (\(loc)20 (k,)-277 (notify)100 (,)-277 (etc.\))-277 (at)-277 (an)-277 (amazing)-278 (r)10 (ate)15 (.)]TJ
+ T*
+ [(Unless)-365 (implemented)-364 (with)-365 (utmost)-364 (care)15 (,)-365 (synchronization)-365 (can)-364 (become)-365 (a)-364 (perf)30 (or)-25 (mance)-365 (bottlenec)20 (k.)-365 (Fur-)]TJ
+ T*
+ [(ther)-25 (more)15 (,)-431 (i)0 (n)-432 (languages)-431 (where)-432 (e)30 (v)25 (er)-30 (y)-431 (object)-432 (ma)30 (y)-431 (h)0 (a)20 (v)25 (e)-432 (its)-431 (o)15 (w)0 (n)-431 (monitor)50 (,)-432 (per-object)-431 (space)-432 (o)15 (v)25 (erhead)]TJ
+ T*
+ [(m)10 (ust)-275 (be)-275 (minimiz)15 (ed.)-275 (T)120 (o)-274 (address)-275 (these)-275 (concer)-25 (ns)15 (,)-275 (w)10 (e)-275 (h)0 (a)20 (v)25 (e)-275 (d)0 (e)30 (v)25 (eloped)-274 (a)-275 (meta-loc)20 (k)-275 (t)0 (o)-275 (mediate)-275 (access)-275 (to)]TJ
+ T*
+ [(synchronization)-256 (data.)-257 (The)-256 (meta-loc)20 (k)-256 (i)0 (s)-256 (f)30 (ast)-257 (\(loc)20 (k)-256 (+)-256 (unloc)20 (k)-256 (e)30 (x)30 (ecutes)-257 (in)-256 (11)-256 (SP)120 (ARC\252)-256 (instr)-15 (uctions\),)-257 (com-)]TJ
+ T*
+ [(pact)-288 (\(uses)-288 (only)-288 (tw)10 (o)-288 (bits)-288 (of)-288 (space\),)-288 (rob)20 (ust)-288 (under)-288 (contention)-288 (\(no)-288 (b)19 (usy-w)15 (aiting\),)-287 (and)-289 (\337e)30 (xib)20 (le)-288 (\(suppor)-40 (ts)-288 (a)]TJ
+ T*
+ [(v)25 (a)0 (r)-15 (iety)-394 (of)-393 (higher-le)30 (v)25 (e)0 (l)-393 (synchronization)-394 (oper)10 (ations\).)-393 (W)30 (e)-394 (ha)20 (v)25 (e)-393 (v)25 (alidated)-394 (the)-393 (meta-loc)20 (k)-394 (with)-393 (an)-394 (imple-)]TJ
+ T*
+ [(mentation)-501 (of)-501 (the)-501 (synchronization)-500 (oper)9 (ations)-500 (in)-501 (a)-501 (high-perf)30 (or)-25 (mance)-501 (product-quality)-501 (J)20 (a)20 (v)25 (a\252)-501 (vir)-40 (tual)]TJ
+ T*
+ [(machine and repor)-40 (t perf)30 (or)-25 (mance data f)30 (or se)30 (v)25 (e)0 (r)10 (al large prog)10 (r)10 (ams)15 (.)]TJ
+ ET
+ 1 g
+ 441 117 112.71 -67.5 re
+ f*
+ BT
+ /N91 1 Tf
+ 8 0 0 8 441 111.67 Tm
+ 0 g
+ [(email addr)18 (ess:)]TJ
+ /N92 1 Tf
+ 0 -1.25 TD
+ (ole.agesen@sun.com)Tj
+ 0 -1.125 TD
+ [(da)20 (vid.detlefs@sun.com)]TJ
+ T*
+ [(ale)15 (x.garthw)11 (aite@sun.com)]TJ
+ T*
+ (ross.knippel@sun.com)Tj
+ T*
+ [(y)65 (.s.ramakrishna@sun.com)]TJ
+ T*
+ (derek.white@sun.com)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 3 3
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ /N9 <<
+ /SA false
+ /OP false
+ >> /ExtGState defineRes pop
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N9 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ 72 243 468 -207 re
+ f*
+ BT
+ /N92 1 Tf
+ 8 0 0 8 72 237.67 Tm
+ 0 g
+ 0 Tc
+ [(\251)-328 (1999)-328 (Sun)-328 (Microsystems,)-328 (Inc.)-328 (All)-327 (rights)-328 (reserv)15 (ed.)-327 (The)-328 (SML)-328 (T)70 (echnical)-328 (Report)-327 (Series)-329 (is)-327 (published)-329 (by)-328 (Sun)-328 (Microsystems)-327 (Laboratories,)-329 (of)-327 (Sun)]TJ
+ 0 -1.25 TD
+ 0 Tw
+ (Microsystems, Inc. Printed in U.S.A.)Tj
+ 0 -2.5 TD
+ [(Unlimited)-238 (cop)10 (ying)-237 (without)-237 (fee)-238 (is)-237 (permitted)-237 (pro)14 (vided)-237 (that)-238 (the)-237 (copies)-238 (are)-238 (not)-237 (made)-237 (nor)-237 (distrib)20 (uted)-238 (for)-237 (direct)-237 (commercial)-238 (adv)25 (antage,)-238 (and)-237 (credit)-237 (to)-237 (the)]TJ
+ 0 -1.25 TD
+ [(source)-263 (is)-263 (gi)25 (v)15 (en.)-262 (Otherwise,)-263 (no)-263 (part)-263 (of)-263 (this)-263 (w)11 (ork)-263 (co)15 (v)15 (ered)-263 (by)-263 (cop)10 (yright)-262 (hereon)-263 (may)-262 (be)-264 (reproduced)-262 (in)-262 (an)14 (y)-262 (form)-262 (or)-262 (by)-263 (an)15 (y)-263 (means)-263 (graphic,)-264 (electronic,)]TJ
+ T*
+ [(or)-238 (mechanical,)-240 (including)-238 (photocop)9 (ying,)-238 (recording,)-239 (taping,)-239 (or)-240 (storage)-238 (in)-240 (an)-239 (information)-239 (retrie)25 (v)25 (a)0 (l)-239 (system,)-238 (without)-239 (the)-239 (prior)-239 (written)-238 (permission)-240 (of)-238 (t)]TJ
+ 57.5555 0 TD
+ (he)Tj
+ -57.5555 -1.25 TD
+ [(cop)10 (yright o)25 (wner)54 (.)]TJ
+ 0 -2.5 TD
+ (TRADEMARKS)Tj
+ 0 -1.25 TD
+ [(Sun,)-347 (Sun)-345 (Microsystems,)-347 (the)-346 (Sun)-347 (logo,)-346 (Solaris,)-346 (Ja)19 (v)25 (a)0 (,)-346 (JDK,)-346 (Ja)20 (v)25 (a)-346 (W)80 (e)0 (b)-346 (Serv)14 (er)41 (,)-346 (and)-346 (Ja)19 (v)25 (a)-346 (HotSpot)-346 (are)-345 (trademarks)-346 (or)-347 (re)16 (gistered)-347 (trademarks)-346 (of)-346 (Sun)]TJ
+ T*
+ [(Microsystems,)-279 (Inc.)-281 (in)-280 (the)-279 (U.S.)-280 (and)-279 (other)-280 (countries.)-280 (All)-278 (SP)92 (ARC)-280 (trademarks)-280 (are)-279 (used)-280 (under)-279 (license)-279 (and)-280 (are)-280 (trademarks)-280 (or)-280 (re)16 (gistered)-280 (trademarks)-280 (of)]TJ
+ T*
+ [(SP)92 (ARC)-277 (International,)-278 (Inc.)-277 (in)-277 (the)-277 (U.S.)-277 (and)-277 (other)-276 (countries.)-277 (Products)-278 (bearing)-277 (SP)92 (ARC)-277 (trademarks)-277 (are)-277 (based)-277 (upon)-278 (an)-277 (architecture)-276 (de)25 (v)15 (eloped)-278 (by)-276 (Sun)]TJ
+ T*
+ (Microsystems, Inc.)Tj
+ 0 -2.5 TD
+ [(F)15 (or information re)16 (garding the SML T)69 (echnical Report Series, contact Jeanie T)36 (reichel, Editor)20 (-in-Chief <jeanie.treichel@eng.sun.co)]TJ
+ 51.9535 0 TD
+ (m>.)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 4 4
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 303 34.17 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ (1)Tj
+ /N91 1 Tf
+ 18 0 0 18 204.99 664 Tm
+ [(An Ef\336cient Meta-lock f)24 (o)0 (r)]TJ
+ -3.4917 -1.2222 TD
+ [(Implementing Ubiquitous Synchr)18 (onization)]TJ
+ /N92 1 Tf
+ 14 0 0 14 170.78 582.67 Tm
+ (Ole Agesen)Tj
+ 11.2 0 0 11.2 236.48 588.27 Tm
+ (*)Tj
+ 14 0 0 14 242.08 582.67 Tm
+ [(, Da)20 (vid Detlefs)]TJ
+ 11.2 0 0 11.2 326.95 588.27 Tm
+ (*)Tj
+ 14 0 0 14 332.55 582.67 Tm
+ [(, Ale)15 (x Garthw)10 (aite)]TJ
+ 11.2 0 0 11.2 432.12 588.27 Tm
+ (*)Tj
+ 14 0 0 14 437.72 582.67 Tm
+ (,)Tj
+ -19.425 -1.2857 TD
+ (Ross Knippel)Tj
+ 11.2 0 0 11.2 241.61 570.27 Tm
+ (+)Tj
+ 14 0 0 14 247.93 564.67 Tm
+ [(, Y)129 (.S. Ramakrishna)]TJ
+ 11.2 0 0 11.2 355.39 570.27 Tm
+ (+)Tj
+ 14 0 0 14 361.71 564.67 Tm
+ (, Derek White)Tj
+ 11.2 0 0 11.2 440.63 570.27 Tm
+ (*)Tj
+ /N91 1 Tf
+ 16 0 0 16 72 413.33 Tm
+ [(1 Intr)18 (oduction)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 390 Tm
+ [(Shared-memory)-394 (multi-processor)-393 (systems)-394 (ha)20 (v)15 (e)-394 (become)-394 (mainstream,)-394 (e)25 (v)15 (en)-394 (in)-394 (the)-394 (personal)-394 (com-)]TJ
+ 0 -1.1667 TD
+ [(puter)-337 (mark)10 (et.)-337 (Simultaneously)65 (,)-337 (the)-338 (concurrent)-337 (object-oriented)-336 (Ja)20 (v)25 (a)0 (\252)-337 (programming)-337 (language)-337 ([2])]TJ
+ T*
+ [(has)-253 (e)16 (xperienced)-253 (e)16 (xplosi)25 (v)15 (e)-253 (gro)25 (wth.)-252 (As)-253 (a)-252 (result,)-252 (signi\336cant)-253 (ef)25 (fort)-253 (is)-252 (being)-252 (de)25 (v)20 (oted)-252 (to)-253 (implementing)]TJ
+ T*
+ [(both)-380 (the)-381 (sequential)-380 (and)-381 (parallel)-380 (features)-381 (of)-380 (this)-381 (language,)-381 (e.g.,)-380 ([3,)-381 (13,)-381 (14,)-380 (21,)-381 (25].)-381 (This)-380 (paper)]TJ
+ T*
+ [(focuses)-242 (on)-242 (the)-242 (latter)-242 (area,)-242 (proposing)-241 (a)-242 (n)0 (e)25 (w)-241 (implementation)-242 (of)-242 (synchronization)-241 (operations)-242 (that,)-242 (we)]TJ
+ T*
+ [(belie)25 (v)15 (e)0 (,)-305 (possesses)-306 (an)-306 (attracti)25 (v)15 (e)-306 (set)-306 (of)-305 (trade-of)25 (fs)-305 (between)-305 (space,)-306 (time,)-306 (and)-305 (assumptions)-306 (about)-306 (the)]TJ
+ T*
+ [(underlying)-331 (hardw)10 (are.)-331 (Implementors)-331 (of)-331 (the)-331 (Ja)20 (v)25 (a)-331 (language\325)55 (s)-331 (synchronization)-331 (operations)-331 (are)-331 (chal-)]TJ
+ T*
+ [(lenged on tw)10 (o fronts:)]TJ
+ /N95 1 Tf
+ 10 0 0 10 72 272 Tm
+ ( \245)Tj
+ /N94 1 Tf
+ 12 0 0 12 85.75 272 Tm
+ [(F)55 (r)37 (equency)55 (.)]TJ
+ /N92 1 Tf
+ 4.7092 0 TD
+ [(Most)-330 (Ja)20 (v)25 (a)-330 (programs)-330 (synchronize)-329 (e)15 (xtremely)-330 (frequently)65 (.)-331 (This)-330 (occurs)-330 (because)-330 (stan-)]TJ
+ -4.7092 -1.1667 TD
+ [(dard)-227 (class)-227 (libraries,)-227 (including)-227 (commonly)-227 (used)-227 (data)-227 (types)-227 (such)-227 (as)-227 (v)15 (ectors)-227 (and)-227 (b)20 (u)0 (f)25 (fers,)-227 (ha)20 (v)15 (e)-227 (been)]TJ
+ T*
+ [(designed)-333 (for)-333 (the)-333 (general)-334 (multi-threaded)-333 (case.)-333 (T)80 (o)-333 (gi)26 (v)15 (e)-334 (just)-333 (one)-333 (e)15 (xample,)-333 (we)-333 (measured)-333 (on)-333 (the)]TJ
+ T*
+ [(SPECjvm98)-343 (v)15 (ersion)-343 (of)-343 (ja)20 (v)25 (a)0 (c)-344 ([26],)-343 (a)-343 (source-to-bytecode)-342 (compiler)40 (,)-343 (and)-343 (found)-343 (that)-343 (on)-342 (a)-344 (high-)]TJ
+ T*
+ [(performance)-360 (virtual)-361 (machine,)-359 (EVM)]TJ
+ 9.6 0 0 9.6 261.01 220.8 Tm
+ (1)Tj
+ 12 0 0 12 265.81 216 Tm
+ [(,)-360 (this)-360 (program)-360 (e)15 (x)15 (ecutes)-360 (765,000)-360 (synchronization)-360 (opera-)]TJ
+ -15.005 -1.1667 TD
+ (tions per second.)Tj
+ /N95 1 Tf
+ 10 0 0 10 72 182 Tm
+ ( \245)Tj
+ /N94 1 Tf
+ 12 0 0 12 85.75 182 Tm
+ [(Ubiquity)56 (.)]TJ
+ /N92 1 Tf
+ 4.0467 0 TD
+ [(The)-352 (Ja)21 (v)25 (a)-352 (language,)-352 (unlik)10 (e)-352 (most)-352 (concurrent)-351 (languages,)-352 (does)-352 (not)-352 (de\336ne)-352 (a)-352 (particular)]TJ
+ -4.0467 -1.1667 TD
+ [(type)-270 (of)-270 (synchronizable)-271 (object)-270 (such)-270 (as)-270 (a)-271 (monitor)-270 (or)-270 (a)-270 (mute)15 (x.)-271 (Instead,)-270 (an)15 (y)-270 (object,)-271 (including,)-270 (for)]TJ
+ T*
+ [(e)15 (xample,)-323 (strings)-324 (and)-323 (arrays,)-324 (can)-324 (be)-324 (synchronized)-323 (upon.)-324 (This)-324 (design)-324 (of)26 (fers)-323 (the)-324 (programmer)-323 (a)]TJ
+ T*
+ [(simpler)-247 (and)-246 (more)-246 (re)15 (gular)-246 (language,)-246 (b)20 (u)0 (t)-246 (presents)-246 (an)-246 (obstacle)-246 (to)-246 (the)-246 (language)-246 (implementor:)-247 (syn-)]TJ
+ T*
+ [(chronization)-247 (must)-248 (be)-248 (implemented)-248 (at)-248 (a)-248 (l)0 (o)25 (w)-247 (per)20 (-object)-248 (space)-247 (cost.)-248 (More)-247 (precisely)65 (,)-248 (the)]TJ
+ /N94 1 Tf
+ 34.2725 0 TD
+ (ability)Tj
+ /N92 1 Tf
+ 2.8033 0 TD
+ (to)Tj
+ ET
+ 0 G
+ 2 J
+ 0 j
+ 0.36 w
+ 3.86 M
+ []0 d
+ 204 98 m
+ 72 98 l
+ S
+ BT
+ 10 0 0 10 72 83.33 Tm
+ [(1.)-699 (EVM,)-350 (the)-350 (Ja)20 (v)25 (a)-350 (virtual)-349 (machine)-350 (kno)25 (wn)-350 (pre)25 (viously)-350 (as)-349 (ExactVM,)-350 (is)-350 (embedded)-349 (in)-350 (Sun\325)55 (s)-350 (J)0 (a)20 (v)25 (a)-349 (2)-350 (SDK)]TJ
+ /N94 1 Tf
+ 42.345 0 TD
+ [(Pr)45 (oduction)]TJ
+ /N92 1 Tf
+ -42.345 -1.2 TD
+ [(Release, a)20 (v)25 (ailable at http://www)65 (.sun.com/solaris/ja)20 (v)25 (a/.)]TJ
+ 11.2 0 0 11.2 118.23 536.77 Tm
+ (*)Tj
+ 14 0 0 14 126.07 531.17 Tm
+ (Sun Microsystems Laboratories)Tj
+ 0 -1.2143 TD
+ [(One Netw)10 (ork Dri)25 (v)15 (e)]TJ
+ T*
+ (Burlington, MA 01803-0902)Tj
+ 11.2 0 0 11.2 330.9 536.77 Tm
+ (+)Tj
+ 14 0 0 14 340.57 531.17 Tm
+ (Sun Microsystems, Inc.)Tj
+ T*
+ (901 San Antonio Road)Tj
+ T*
+ [(P)15 (alo Alto, CA 94303-4900)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 5 5
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 303 34.17 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ (2)Tj
+ -18.1042 56.4858 TD
+ [(synchronize)-325 (must)-326 (be)-326 (pro)16 (vided)-325 (at)-326 (a)-325 (l)0 (o)25 (w)-325 (space)-326 (cost;)]TJ
+ /N94 1 Tf
+ 20.9425 0 TD
+ (actual)Tj
+ /N92 1 Tf
+ 2.8258 0 TD
+ [(synchronization)-325 (can)-326 (use)-325 (additional)]TJ
+ -23.7683 -1.1667 TD
+ [(space)-376 (since,)-377 (in)-376 (practice,)-376 (programs)-376 (synchronize)-376 (on)-377 (a)-376 (small)-376 (fraction)-377 (of)-376 (objects.)-376 (F)15 (o)0 (r)-376 (e)15 (xample,)]TJ
+ T*
+ [(ja)20 (v)25 (ac, discussed abo)15 (v)15 (e, synchronizes on about 6% of allocated objects.)]TJ
+ -1.1458 -1.75 TD
+ [(Frequenc)15 (y)-244 (demands)-244 (time-ef)26 (\336cienc)14 (y)-243 (while)-245 (ubiquity)-243 (demands)-244 (space-ef)25 (\336cienc)15 (y)65 (.)-244 (This)-244 (paper)-244 (presents)]TJ
+ 0 -1.1667 TD
+ [(a)-289 (n)0 (e)25 (w)-290 (synchronization)-289 (scheme)-289 (that,)-290 (we)-289 (belie)25 (v)15 (e)0 (,)-289 (attains)-290 (good)-289 (all-around)-290 (performance:)-290 (synchroni-)]TJ
+ T*
+ [(zation)-295 (e)15 (x)15 (ecutes)-295 (at)-295 (close)-295 (to)-295 (the)-295 (speed)-295 (of)-295 (the)-295 (hardw)10 (are)-295 (operations)-295 (while)-295 (reserving)-295 (only)-295 (tw)10 (o)-295 (bits)-295 (in)]TJ
+ T*
+ [(each)-296 (object.)-297 (Our)-296 (algorithm,)-297 (in)-296 (its)-297 (basic)-296 (form,)-297 (uses)-296 (a)-296 (t)0 (w)10 (o-le)25 (v)15 (e)0 (l)-296 (\(\322meta\323\))-297 (locking)-296 (scheme,)-297 (with)-296 (an)]TJ
+ T*
+ [(optional e)16 (xtension that fuses the tw)10 (o le)25 (v)15 (els for higher performance in uncontended cases.)]TJ
+ 0 -1.75 TD
+ [(W)80 (e)-276 (assume)-276 (the)-276 (arbitrary)-276 (interlea)21 (ving)-276 (implied)-276 (by)-276 (preempti)25 (v)15 (e)-276 (thread)-276 (scheduling:)-276 (no)-276 (other)-276 (assump-)]TJ
+ 0 -1.1667 TD
+ [(tion)-336 (mak)10 (es)-337 (sense)-336 (on)-337 (multiprocessors,)-337 (and,)-337 (moreo)15 (v)15 (e)0 (r)40 (,)-337 (e)25 (v)15 (en)-337 (on)-337 (uniprocessors)-337 (lack)-336 (of)-337 (preemption)]TJ
+ T*
+ [(can)-344 (lead)-344 (to)-344 (unf)10 (air)-344 (\(and)-344 (unintuiti)25 (v)15 (e)0 (\))-345 (thread)-344 (scheduling.)-343 (It)-344 (may)-345 (seem)-344 (that)-344 (synchronization)-343 (opera-)]TJ
+ T*
+ [(tions)-226 (could)-225 (be)-225 (elided)-225 (for)-226 (man)15 (y)-225 (programs)-225 (with)-225 (only)-226 (a)-225 (single)-225 (thread.)-226 (In)-225 (reality)65 (,)-226 (h)0 (o)25 (w)0 (e)25 (v)15 (er)40 (,)-226 (n)0 (o)-225 (program)]TJ
+ T*
+ [(written)-333 (in)-334 (the)-333 (Ja)21 (v)25 (a)-333 (language)-332 (is)-334 (single-threaded,)-332 (since,)-333 (in)-333 (addition)-333 (to)-334 (the)-333 (main)-332 (thread)-333 (created)-333 (by)]TJ
+ T*
+ [(user)-373 (code,)-374 (the)-374 (class)-373 (libraries)-374 (create)-373 (special)-374 (threads)-374 (to)-373 (handle)-374 (\336nalization)-373 (and)-373 (v)25 (arious)-373 (forms)-373 (of)]TJ
+ T*
+ [(weak)-275 (references)-274 ([27].)-275 (More)-274 (signi\336cantly)65 (,)-275 (perhaps,)-275 (commonly)-274 (used)-274 (graphics)-274 (libraries,)-274 (such)-274 (as)-275 (the)]TJ
+ T*
+ [(Abstract W)41 (indo)25 (ws T)80 (oolkit \(A)90 (WT\), create threads.)]TJ
+ 0 -1.75 TD
+ [(The)-279 (rest)-278 (of)-279 (this)-279 (paper)-279 (is)-279 (or)18 (ganized)-279 (as)-279 (follo)26 (ws.)-279 (Section)-279 (2)-279 (informally)-279 (describes)-279 (the)-279 (Ja)21 (v)25 (a)-279 (language\325)56 (s)]TJ
+ 0 -1.1667 TD
+ [(synchronization)-357 (operations,)-357 (at)-358 (both)-357 (the)-357 (source)-357 (and)-358 (bytecode)-356 (le)25 (v)15 (els.)-357 (Section)-357 (3)-357 (r)0 (e)25 (vie)25 (ws)-357 (pre)25 (vious)]TJ
+ T*
+ [(w)10 (ork)-338 (most)-337 (closely)-337 (related)-337 (to)-338 (our)-337 (synchronization)-337 (algorithm.)-337 (Section)-337 (4)-337 (describes)-337 (our)-338 (basic)-337 (tw)10 (o-)]TJ
+ T*
+ [(le)25 (v)15 (e)0 (l)-228 (algorithm,)-227 (and)-228 (Section)-228 (5)-227 (g)0 (i)25 (v)15 (es)-228 (an)-228 (informal)-227 (correctness)-228 (proof.)-227 (Section)-228 (6)-228 (discusses)-228 (e)16 (xtensions,)]TJ
+ T*
+ [(including)-268 (a)-269 (f)10 (ast)-268 (path)-269 (that)-268 (fuses)-268 (the)-269 (primary)-268 (and)-268 (meta-lock)-268 (le)25 (v)15 (els,)-268 (and)-268 (other)-268 (optimizations)-268 (that)-269 (are)]TJ
+ T*
+ [(important)-269 (for)-269 (good)-269 (performance.)-269 (Section)-269 (7)-270 (presents)-269 (performance)-269 (data)-269 (to)-269 (quantify)-269 (the)-269 (beha)20 (vior)-269 (of)]TJ
+ T*
+ [(our algorithm. Section 8 of)26 (fers \336nal conclusions and some directions for further w)12 (ork.)]TJ
+ /N91 1 Tf
+ 16 0 0 16 72 348.33 Tm
+ [(2 Backgr)18 (ound)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 325 Tm
+ [(Ja)20 (v)25 (a)-254 (virtual)-254 (machines)-254 (\(JVMs\))-254 (do)-254 (not)-254 (e)16 (x)15 (ecute)-255 (source)-254 (code)-254 (directly)65 (.)-254 (Instead,)-253 (the)15 (y)-254 (e)15 (x)15 (ecute)-254 (bytecode)]TJ
+ T*
+ [(obtained)-232 (from)-233 (binary)-233 (class-\336les)-232 (that)-233 (are)-232 (produced)-233 (by)-232 (a)-233 (source-to-bytecode)-232 (compiler)-233 (such)-233 (as)-233 (ja)20 (v)25 (ac.)]TJ
+ T*
+ [(Thus,)-292 (JVMs)-292 (must)-292 (implement)-292 (the)-292 (bytecode-le)25 (v)15 (e)0 (l)-291 (synchronization)-292 (operations,)-291 (not)-292 (the)-292 (source-le)25 (v)15 (e)0 (l)]TJ
+ T*
+ [(synchronization)-384 (operations.)-385 (The)-385 (distinction)-384 (is)-385 (important)-384 (because)-385 (the)-385 (bytecode-le)25 (v)15 (e)0 (l)-385 (operations)]TJ
+ T*
+ [(are more general than the source-le)25 (v)15 (el operations.)]TJ
+ /N91 1 Tf
+ 14 0 0 14 72 236.67 Tm
+ [(2.1 Sour)18 (ce-le)15 (v)10 (el synchr)17 (onization)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 212 Tm
+ [(The)-304 (Ja)20 (v)25 (a)-304 (language)-304 (pro)15 (vides)-304 (mutual)-304 (e)16 (xclusion)-304 (in)-304 (tw)10 (o)-304 (syntactic)-304 (forms.)-304 (A)]TJ
+ /N94 1 Tf
+ 29.3975 0 TD
+ [(sync)15 (hr)45 (onized)-304 (method)]TJ
+ /N92 1 Tf
+ 8.7692 0 TD
+ (of)Tj
+ -38.1667 -1.1667 TD
+ [(an)-251 (object)-251 (obtains)-250 (a)-251 (lock)-251 (on)-251 (the)-250 (object,)-251 (e)15 (x)15 (ecutes)-251 (the)-250 (method,)-251 (and)-251 (releases)-251 (the)-251 (lock.)-250 (A)]TJ
+ /N94 1 Tf
+ 33.7825 0 TD
+ [(sync)15 (hr)45 (onized)]TJ
+ -33.7825 -1.1667 TD
+ (statement)Tj
+ /N92 1 Tf
+ 3.8333 0 TD
+ (,)Tj
+ /N95 1 Tf
+ 0.9967 0 TD
+ [(synchronize)-600 (\(exp\))-600 ({)-600 (...actions...)-600 (})]TJ
+ /N92 1 Tf
+ 21 0 TD
+ [(,)-747 (e)25 (v)25 (aluates)-746 (the)-747 (e)15 (xpression)-746 (to)]TJ
+ -25.83 -1.1667 TD
+ [(obtain an object that is lock)11 (ed for the duration of the speci\336ed actions.)]TJ
+ 0 -1.75 TD
+ [(The)-246 (synchronization)-246 (operations)-246 (in)-246 (the)-245 (Ja)20 (v)25 (a)-246 (language)-246 (are)-246 (reentrant)-246 (\(recursi)25 (v)15 (e\):)-246 (synchronized)-246 (state-)]TJ
+ 0 -1.1667 TD
+ [(ments)-320 (on)-320 (the)-320 (same)-320 (object)-320 (can)-320 (nest,)-320 (synchronized)-319 (methods)-320 (can)-320 (in)41 (v)20 (o)0 (k)10 (e)-320 (other)-320 (synchronized)-319 (meth-)]TJ
+ T*
+ [(ods,)-260 (and)-259 (the)-260 (tw)10 (o)-260 (can)-259 (be)-260 (mix)15 (ed.)-260 (Consequently)65 (,)-260 (the)-260 (underlying)-260 (lock)-260 (and)-260 (unlock)-260 (operations)-260 (must)-260 (do)]TJ
+ T*
+ [(some)-298 (form)-298 (of)-299 (counting.)-297 (Both)-298 (synchronized)-298 (methods)-298 (and)-298 (statements)-298 (are)-298 (\322block)-298 (structured,)70 (\323)-298 (forc-)]TJ
+ T*
+ [(ing)-324 (perfect)-324 (nesting)-324 (of)-324 (locking)-324 (operations.)-324 (At)-323 (the)-325 (source)-323 (le)25 (v)15 (el,)-324 (there)-323 (is)-324 (no)-324 (w)10 (a)0 (y)-323 (t)0 (o)-324 (e)15 (xpress)-324 (unbal-)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 6 6
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 303 34.17 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ (3)Tj
+ -19.25 56.4858 TD
+ [(anced)-344 (locking)-343 (operations.)-343 (In)-344 (particular)40 (,)-343 (e)15 (xception-thro)26 (wing)-343 (and)-344 (returning)-343 (out)-344 (of)-344 (lock)10 (ed)-343 (re)15 (gions)]TJ
+ 0 -1.1667 TD
+ [(unlocks as necessary)66 (. Ho)25 (we)25 (v)15 (e)0 (r)40 (,)0 ( as we shall see belo)25 (w)65 (,)0 ( the story is dif)25 (ferent at the bytecode le)25 (v)15 (el.)]TJ
+ 0 -1.75 TD
+ [(T)80 (o)-410 (f)10 (acilitate)-410 (communication)-410 (between)-410 (threads,)-409 (the)-410 (Ja)20 (v)25 (a)-410 (language)-410 (de\336nes)]TJ
+ /N95 1 Tf
+ 30.3008 0 TD
+ (wait)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ (,)Tj
+ /N95 1 Tf
+ 0.66 0 TD
+ (notify)Tj
+ /N92 1 Tf
+ 3.535 0 TD
+ [(,)-410 (and)]TJ
+ /N95 1 Tf
+ -36.8958 -1.1667 TD
+ (notifyAll)Tj
+ /N92 1 Tf
+ 5.6608 0 TD
+ [(operations.)-260 (Lik)10 (e)-260 (locking,)-261 (these)-261 (operations)-260 (are)-261 (performed)-260 (relati)25 (v)15 (e)-261 (to)-261 (an)-260 (object.)-261 (Prior)]TJ
+ -5.6608 -1.1667 TD
+ [(to)-415 (e)15 (x)15 (ecuting)]TJ
+ /N95 1 Tf
+ 5.4667 0 TD
+ (wait)Tj
+ /N92 1 Tf
+ 2.8158 0 TD
+ (and)Tj
+ /N95 1 Tf
+ 1.8592 0 TD
+ (notify)Tj
+ /N92 1 Tf
+ 3.6 0 TD
+ ([)Tj
+ /N95 1 Tf
+ 0.3333 0 TD
+ (All)Tj
+ /N92 1 Tf
+ 1.8 0 TD
+ [(],)-415 (a)-415 (thread)-416 (must)-415 (\336rst)-416 (lock)-415 (the)-415 (tar)18 (get)-415 (object.)-416 (Informally)66 (,)]TJ
+ /N95 1 Tf
+ -15.875 -1.1667 TD
+ (wait)Tj
+ /N92 1 Tf
+ 2.6775 0 TD
+ [(fully)-277 (releases)-277 (the)-277 (lock)-277 (and)-278 (suspends)-277 (the)-277 (current)-277 (thread.)-277 (This)-278 (allo)25 (ws)-277 (other)-277 (threads)-278 (to)-277 (obtain)]TJ
+ -2.6775 -1.1667 TD
+ [(the)-448 (lock.)-448 (The)-448 (w)10 (aiting)-449 (thread)-448 (becomes)-448 (eligible)-447 (to)-449 (run)-448 (ag)6 (ain)-449 (when)-447 (another)-448 (thread)-448 (performs)-447 (a)]TJ
+ /N95 1 Tf
+ T*
+ (notify)Tj
+ /N92 1 Tf
+ 3.9542 0 TD
+ [(operation)-354 (on)-354 (the)-355 (object,)-354 (a)-354 (speci\336ed)-354 (time)-354 (has)-354 (elapsed,)-354 (or)-354 (an)-353 (asynchronous)-355 (interrupt)-354 (is)]TJ
+ -3.9542 -1.1667 TD
+ [(deli)25 (v)15 (ered)-275 (to)-275 (the)-275 (thread.)-275 (The)]TJ
+ /N95 1 Tf
+ 11.36 0 TD
+ (notify)Tj
+ /N92 1 Tf
+ 3.875 0 TD
+ [(operation)-274 (w)9 (a)0 (k)10 (e)0 (s)-274 (one)-275 (w)10 (aiting)-275 (thread,)-275 (whereas)]TJ
+ /N95 1 Tf
+ 18.365 0 TD
+ (notifyAll)Tj
+ /N92 1 Tf
+ -33.6 -1.1667 TD
+ [(w)10 (a)0 (k)10 (e)0 (s)-230 (all)-229 (w)9 (aiting)-229 (threads)-230 (\(when)-229 (no)-230 (threads)-230 (are)-230 (w)10 (aiting,)-230 (both)-229 (operations)-230 (are)-230 (no-ops\).)-230 (When)-229 (a)-230 (w)10 (ait-)]TJ
+ T*
+ [(ing)-252 (thread)-253 (w)10 (a)0 (k)10 (e)0 (s)-252 (up,)-252 (it)-252 (reacquires)-252 (the)-252 (lock)-252 (the)-252 (same)-252 (number)-251 (of)-253 (times)-252 (it)-252 (held)-252 (it)-252 (prior)-252 (to)]TJ
+ /N95 1 Tf
+ 34.5425 0 TD
+ (wait)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(.)-253 (The)]TJ
+ -36.9425 -1.1667 TD
+ [(lock)-342 (reacquisition)-342 (puts)-342 (the)-342 (thread)-342 (into)-342 (competition)-342 (with)-342 (other)-342 (threads)-342 (attempting)-342 (to)-342 (acquire)-343 (the)]TJ
+ T*
+ [(lock,)-365 (including)-366 (both)-365 (other)-366 (a)15 (w)10 (ak)10 (ened)-365 (w)9 (aiters)-366 (and)-365 (threads)-366 (attempting)-365 (to)-365 (e)15 (x)15 (ecute)-366 (a)-366 (synchronized)]TJ
+ T*
+ [(method)-346 (or)-345 (statement.)-346 (Once)-346 (a)-345 (w)10 (aiting)-345 (thread)-346 (has)-345 (reacquired)-346 (the)-345 (lock,)-346 (the)]TJ
+ /N95 1 Tf
+ 30.0767 0 TD
+ (wait)Tj
+ /N92 1 Tf
+ 2.7458 0 TD
+ [(operation)-345 (com-)]TJ
+ -32.8225 -1.1667 TD
+ [(pletes.)-239 (T)80 (o)-240 (simplify)-239 (matters,)-239 (in)-239 (this)-240 (paper)-239 (we)-240 (shall)-240 (not)-239 (discuss)-240 (interrupts)-239 (further)40 (,)-240 (e)16 (xcept)-240 (to)-239 (note)-240 (that)]TJ
+ T*
+ (in most of our implementation, an interrupt is handled similarly to a ti\
+ me-out.)Tj
+ /N91 1 Tf
+ 14 0 0 14 72 462.67 Tm
+ [(2.2 Bytecode-le)15 (v)10 (el synchr)18 (onization)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 438 Tm
+ [(Ha)20 (ving)-269 (described)-268 (synchronization)-267 (at)-268 (the)-268 (source)-268 (le)25 (v)15 (el,)-268 (we)-268 (no)25 (w)-268 (turn)-268 (to)-268 (the)-268 (bytecode)-268 (le)25 (v)15 (el.)-269 (In)-268 (byte-)]TJ
+ T*
+ [(code,)-693 (method)-692 (synchronization)-692 (is)-693 (performed)-692 (as)-693 (part)-692 (of)-693 (the)-693 (call/return)-692 (sequence:)-693 (if)-693 (the)]TJ
+ /N95 1 Tf
+ T*
+ (acc_synchronized)Tj
+ /N92 1 Tf
+ 9.8625 0 TD
+ [(attrib)20 (ute)-263 (is)-262 (set)-262 (on)-262 (a)-263 (method,)-262 (the)-262 (call)-263 (sequence)-262 (must)-262 (acquire)-263 (the)-262 (lock)-263 (\(one)]TJ
+ -9.8625 -1.1667 TD
+ [(more)-286 (time\))-286 (and)-286 (the)-286 (return)-285 (sequence)-286 (must)-286 (release)-286 (it)-286 (once.)-286 (Statement)-286 (synchronization)-286 (is)-285 (e)15 (xpressed)]TJ
+ T*
+ [(using)-368 (a)-368 (bytecode)-368 (pair)40 (,)]TJ
+ /N95 1 Tf
+ 9.4592 0 TD
+ (monitorenter)Tj
+ /N92 1 Tf
+ 7.5683 0 TD
+ (and)Tj
+ /N95 1 Tf
+ 1.8125 0 TD
+ (monitorexit)Tj
+ /N92 1 Tf
+ 6.6 0 TD
+ [(,)-368 (which)-368 (lock)-368 (and)-368 (unlock,)-369 (respec-)]TJ
+ -25.44 -1.1667 TD
+ [(ti)25 (v)15 (ely)65 (,)-322 (the)-323 (object)-322 (referenced)-322 (by)-322 (a)-323 (v)25 (alue)-322 (popped)-322 (from)-323 (the)-322 (JVM\325)55 (s)-322 (\322operand)-322 (stack.)70 (\323)-323 (Unfortunately)65 (,)]TJ
+ T*
+ [(while)-290 (the)-290 (bytecode)-290 (representation)-289 (of)-290 (synchronized)-289 (methods)-290 (is)-290 (inherently)-290 (well-nested,)-290 (there)-290 (is)-290 (no)]TJ
+ T*
+ [(such)-266 (guarantee)-266 (for)]TJ
+ /N95 1 Tf
+ 7.685 0 TD
+ (monitorenter)Tj
+ /N92 1 Tf
+ 7.4658 0 TD
+ (and)Tj
+ /N95 1 Tf
+ 1.7108 0 TD
+ (monitorexit)Tj
+ /N92 1 Tf
+ 6.6 0 TD
+ [(.)-266 (Nothing)-267 (pre)25 (v)15 (ents)-266 (bytecode)-266 (from)-267 (con-)]TJ
+ -23.4617 -1.1667 TD
+ [(taining)-290 (instruction)-290 (sequences)-291 (lik)10 (e)-290 (\322lock)]TJ
+ /N94 1 Tf
+ 16.2183 0 TD
+ (A)Tj
+ /N92 1 Tf
+ 0.6108 0 TD
+ [(,)-291 (lock)]TJ
+ /N94 1 Tf
+ 2.5533 0 TD
+ (B)Tj
+ /N92 1 Tf
+ 0.6108 0 TD
+ [(,)-290 (unlock)]TJ
+ /N94 1 Tf
+ 3.5525 0 TD
+ (A)Tj
+ /N92 1 Tf
+ 0.6117 0 TD
+ [(,)-290 (unlock)]TJ
+ /N94 1 Tf
+ 3.5525 0 TD
+ (B)Tj
+ /N92 1 Tf
+ 0.6108 0 TD
+ [(,)70 (\323)-291 (which)-290 (has)-290 (no)-291 (equi)25 (v)25 (alent)]TJ
+ -28.3208 -1.1667 TD
+ [(Ja)20 (v)25 (a)-264 (source)-264 (code.)-264 (The)-264 (loss)-264 (of)-264 (block)-264 (structure)-263 (at)-265 (the)-264 (bytecode)-264 (le)25 (v)15 (e)0 (l)-264 (mak)10 (es)-264 (it)-264 (dif)25 (\336cult)-264 (to)-264 (stack)-263 (allo-)]TJ
+ T*
+ [(cate)-366 (locking-related)-365 (data)-365 (structures.)-365 (Consequently)64 (,)-365 (t)0 (o)-365 (handle)-366 (non-LIFO)-365 (locking)-366 (and)-365 (unlocking,)]TJ
+ T*
+ (our implementation uses a free-list allocator \(see Section 6.1\).)Tj
+ 0 -1.75 TD
+ [(Concei)25 (v)25 (ably)65 (,)-319 (a)-319 (static)-320 (analysis)-319 (of)-319 (bytecode)-319 (could)-320 (conserv)25 (ati)25 (v)15 (ely)-319 (\322pair)-320 (up\323)]TJ
+ /N95 1 Tf
+ 30.0367 0 TD
+ (monitorenter)Tj
+ /N92 1 Tf
+ 7.5192 0 TD
+ (and)Tj
+ /N95 1 Tf
+ -37.5558 -1.1667 TD
+ (monitorexit)Tj
+ /N92 1 Tf
+ 7.0375 0 TD
+ [(instructions)-437 (in)-438 (most)-437 (cases,)-437 (allo)25 (wing)-437 (subsequent)-437 (e)15 (x)15 (ecution)-437 (to)-438 (assume)-438 (perfect)]TJ
+ -7.0375 -1.1667 TD
+ [(nesting.)-335 (W)80 (e)-335 (w)10 (ould)-335 (e)16 (xpect)-336 (this)-335 (analysis)-334 (to)-335 (succeed)-335 (most)-335 (of)-335 (the)-335 (time)-335 (on)-335 (bytecode)-335 (resulting)-335 (from)]TJ
+ T*
+ [(translation)-274 (of)-274 (Ja)20 (v)25 (a)-274 (source)-274 (code.)-274 (In)-274 (general,)-274 (ho)26 (we)24 (v)15 (e)0 (r)40 (,)-274 (the)-275 (problem)-274 (is)-275 (undecidable,)-274 (and)-274 (it)-274 (w)10 (ould)-274 (be)]TJ
+ T*
+ [(incorrect)-257 (to)-257 (reject)-258 (bytecode)-257 (for)-257 (which)-258 (the)-258 (analysis)-257 (f)10 (ails,)-257 (because)-258 (such)-257 (bytecode)-257 (is)-258 (still)-257 (le)15 (gal)-258 (i)0 (n)-258 (the)]TJ
+ T*
+ [(sense)-371 (that)-372 (it)-371 (passes)-371 (the)-371 (bytecode)-371 (v)15 (eri\336er)-371 ([18].)-371 (T)80 (o)-372 (further)-371 (complicate)-371 (the)-370 (picture,)-371 (JNI,)-371 (the)-371 (Ja)21 (v)25 (a)]TJ
+ T*
+ [(Nati)25 (v)15 (e)-390 (Interf)10 (ace,)-390 (grants)-390 (nati)25 (v)15 (e)-389 (code)-390 (access)-390 (to)-389 (synchronization)-390 (in)-390 (the)-390 (form)-390 (of)-389 (lock)-390 (and)-390 (unlock)]TJ
+ T*
+ [(operations,)-314 (so)-313 (e)26 (v)15 (en)-314 (if)-313 (all)-313 (bytecode)-314 (can)-314 (be)-313 (sho)25 (wn)-313 (to)-314 (be)-313 (structured,)-313 (a)-313 (f)10 (all-back)-314 (mechanism)-313 (w)10 (ould)]TJ
+ T*
+ [(still be needed for synchronization by nati)26 (v)15 (e)0 ( code.)]TJ
+ 0 -1.75 TD
+ [(Finally)65 (,)-361 (the)]TJ
+ /N95 1 Tf
+ 4.9633 0 TD
+ (wait)Tj
+ /N92 1 Tf
+ 2.7608 0 TD
+ (and)Tj
+ /N95 1 Tf
+ 1.8058 0 TD
+ (notify)Tj
+ /N92 1 Tf
+ 3.6 0 TD
+ ([)Tj
+ /N95 1 Tf
+ 0.3325 0 TD
+ (All)Tj
+ /N92 1 Tf
+ 1.8 0 TD
+ [(])-361 (operations)-361 (ha)20 (v)15 (e)-361 (no)-361 (direct)-361 (representation)-361 (at)-361 (the)-361 (bytecode)]TJ
+ -15.2625 -1.1667 TD
+ [(le)25 (v)15 (el,)-1103 (b)20 (u)0 (t)-1103 (instead)-1103 (are)-1103 (implemented)-1102 (as)-1103 (nati)24 (v)16 (e)-1103 (methods)-1102 (of)-1103 (the)-1103 (top-most)-1102 (class)]TJ
+ T*
+ (\()Tj
+ /N95 1 Tf
+ 0.3333 0 TD
+ (java.lang.Object)Tj
+ /N92 1 Tf
+ 9.6 0 TD
+ (\).)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 7 7
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 303 34.17 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ (4)Tj
+ /N91 1 Tf
+ 16 0 0 16 72 709.33 Tm
+ [(3 Related w)10 (ork)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 686 Tm
+ [(There)-309 (is)-308 (a)-309 (lar)18 (ge)-308 (general)-309 (literature)-308 (on)-309 (synchronization)-307 (primiti)25 (v)15 (e)0 (s)-309 (and)-308 (their)-309 (implementation.)-308 (Dijk-)]TJ
+ 0 -1.1667 TD
+ [(stra)-278 ([9])-277 (and)-278 (Lamport)-277 ([16])-278 (present)-279 (subtle)-278 (algorithms)-278 (that)-278 (achie)25 (v)15 (e)-278 (mutual)-278 (e)15 (xclusion)-277 (assuming)-278 (only)]TJ
+ T*
+ [(that)-289 (indi)25 (vidual)-290 (reads)-289 (and)-288 (writes)-289 (are)-290 (atomic.)-289 (F)15 (ortunately)65 (,)-290 (modern)-289 (architectures)-289 (pro)16 (vide)-290 (composite)]TJ
+ T*
+ [(instructions)-287 (such)-287 (as)-286 (compare-and-sw)10 (ap)-287 (that)-287 (read)-286 (and)-287 (write)-287 (a)-287 (memory)-287 (location)-286 (in)-287 (a)-288 (single)-287 (atomic)]TJ
+ T*
+ [(step,)-241 (greatly)-241 (simplifying)-241 (the)-241 (mutual)-241 (e)15 (xclusion)-242 (problem)-241 (and)-241 (eliminating)-241 (the)-241 (need)-241 (for)-241 (such)-242 (subtlety)65 (.)]TJ
+ T*
+ [(W)80 (e)-276 (shall)-277 (refer)-277 (to)-276 (the)-276 (composite)-277 (atomic)-276 (instructions)-276 (simply)-277 (as)-276 (\322atomic)-276 (instructions.)70 (\323)-277 (W)81 (eakly)-277 (con-)]TJ
+ T*
+ [(sistent)-245 (memory)-243 (models,)-244 (which)-245 (allo)25 (w)-244 (dif)24 (ferent)-244 (processors)-245 (to)-244 (observ)15 (e)-244 (memory)-244 (operations)-244 (as)-244 (occur-)]TJ
+ T*
+ [(ring)-501 (in)-500 (dif)25 (ferent)-500 (orders,)-500 (may)-500 (require)-500 (the)-500 (use)-500 (of)-500 (memory)-500 (barrier)-500 (instructions)-500 (to)-500 (reintroduce)]TJ
+ T*
+ [(consistenc)15 (y)65 (,)0 ( whether using indi)25 (vidual reads and writes or atomic instructions.)]TJ
+ 0 -1.75 TD
+ [(In)-247 (its)-247 (broad)-246 (structure,)-247 (our)-247 (meta-lock)-246 (resembles)-247 (the)-247 (MCS-lock)-246 (of)-247 (Mellor)20 (-Crumme)15 (y)-247 (and)-247 (Scott)-246 ([20].)]TJ
+ 0 -1.1667 TD
+ [(The)-261 (MCS-lock)-261 (uses)-261 (an)-261 (atomic)-261 (sw)10 (ap)-261 (for)-261 (lock)-261 (acquisition)-261 (and)-261 (an)-261 (atomic)-261 (compare-and-sw)10 (ap)-261 (\()]TJ
+ /N95 1 Tf
+ 36.8667 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 1.8 0 TD
+ (\))Tj
+ -38.6667 -1.1667 TD
+ [(for)-251 (lock)-250 (release)-251 (in)-250 (much)-250 (the)-250 (same)-250 (w)10 (a)0 (y)-250 (a)0 (s)-250 (does)-250 (our)-249 (meta-lock)-251 (algorithm.)-250 (The)-250 (MCS-lock)-250 (has)-250 (man)15 (y)]TJ
+ T*
+ [(of)-377 (the)-377 (same)-377 (properties)-377 (as)-377 (our)-377 (meta-lock,)-377 (including)-377 (starv)25 (ation)-377 (freedom)-377 (and)-378 (FIFO)-377 (access)-377 (to)-378 (the)]TJ
+ T*
+ [(lock.)-245 (Ho)25 (we)25 (v)15 (e)0 (r)40 (,)-244 (the)-245 (details)-245 (are)-244 (quite)-245 (dif)25 (ferent)-245 (and,)-244 (in)-244 (particular)40 (,)-244 (contention)-244 (results)-244 (in)-245 (b)20 (usy-w)11 (aiting.)]TJ
+ T*
+ [(Also,)-285 (space-ef)25 (\336cienc)15 (y)-285 (i)0 (s)-285 (not)-284 (as)-285 (e)15 (xtreme)-285 (a)-285 (concern)-285 (in)-284 (the)-285 (conte)15 (xt)-285 (of)-284 (their)-285 (w)10 (ork.)-285 (Magnusson)]TJ
+ /N94 1 Tf
+ 36.965 0 TD
+ [(et)-285 (al.)]TJ
+ /N92 1 Tf
+ -36.965 -1.1667 TD
+ [([19])-324 (surv)15 (e)15 (y)-324 (locking)-323 (schemes)-323 (related)-324 (to)-324 (MCS-locks,)-324 (and)-324 (describe)-324 (tw)10 (o)-323 (n)0 (e)25 (w)-324 (locking)-324 (schemes)-323 (that)]TJ
+ T*
+ [(of)25 (fer dif)25 (ferent performance trade-of)26 (fs.)]TJ
+ 0 -1.75 TD
+ [(Brinch)-249 (Hansen)-248 ([11])-248 (and)-248 (Hoare)-249 ([12])-249 (coined)-248 (the)-249 (term)]TJ
+ /N94 1 Tf
+ 20.8983 0 TD
+ (monitor)Tj
+ /N92 1 Tf
+ 3.1267 0 TD
+ [(,)-249 (and)-248 (pro)16 (vided)-249 (the)-248 (nomenclature)-248 (used)]TJ
+ -24.025 -1.1667 TD
+ [(by)-226 (the)-226 (Ja)21 (v)25 (a)-226 (language.)-226 (There)-225 (are)-226 (se)26 (v)15 (eral)-226 (w)9 (ays,)-225 (ho)25 (we)24 (v)15 (e)0 (r)40 (,)-226 (in)-226 (which)-226 (the)-226 (monitors)-225 (in)-226 (the)-225 (Ja)20 (v)25 (a)-226 (language)]TJ
+ T*
+ [(dif)25 (fer)-355 (from)-354 (the)-354 (original:)-354 (an)15 (y)-355 (object)-354 (may)-354 (be)-355 (used)-354 (as)-354 (a)-355 (monitor)41 (,)-354 (monitors)-355 (may)-354 (be)-355 (entered)-354 (recur-)]TJ
+ T*
+ [(si)25 (v)15 (ely)65 (,)-382 (and)-383 (monitors)-383 (pro)15 (vide)-382 (a)-384 (single)-383 (implicit,)-383 (rather)-382 (than)-383 (possibly)-382 (se)25 (v)15 (eral)-383 (e)15 (xplicit,)-383 (\322condition)]TJ
+ T*
+ [(v)25 (ariables.)70 (\323)-379 (Birrell)-380 (gi)26 (v)15 (e)0 (s)-379 (a)0 (n)-380 (e)16 (xcellent)-380 (tutorial)-379 (on)-380 (programming)-379 (with)-379 (\322standard\323)-379 (synchronization)]TJ
+ T*
+ [(primiti)25 (v)15 (e)0 (s)-235 ([5].)-236 (As)-236 (we)-236 (ha)20 (v)15 (e)-236 (discussed,)-235 (the)-236 (synchronization)-235 (primiti)25 (v)15 (e)0 (s)-236 (o)0 (f)-235 (the)-236 (Ja)21 (v)25 (a)-236 (platform)-236 (are)-236 (dif)25 (\336-)]TJ
+ T*
+ [(cult)-262 (to)-262 (implement)-262 (in)-262 (a)-262 (manner)-262 (that)-262 (is)-261 (both)-262 (time-)-262 (and)-262 (space-ef)25 (\336cient.)-262 (Scalability)-262 (to)-262 (multiprocessor)]TJ
+ T*
+ [(systems)-444 (is)-444 (another)-444 (important)-443 (concern.)-444 (W)80 (e)-444 (shall)-444 (no)25 (w)-444 (discuss)-443 (some)-444 (pre)25 (vious)-444 (implementations)]TJ
+ T*
+ [(focusing on the approach the)15 (y tak)10 (e to trading of)25 (f these concerns.)]TJ
+ 0 -1.75 TD
+ [(The)-342 (original)-343 (JDK\252)-342 (implementation)-342 (of)-343 (the)-343 (Ja)21 (v)25 (a)-343 (virtual)-343 (machine)-342 ([18])-343 (pro)16 (vides)-343 (a)-343 (space-ef)25 (\336cient)]TJ
+ 0 -1.1667 TD
+ [(monitor)-374 (implementation,)-373 (b)20 (u)0 (t)-374 (one)-374 (that)-374 (is)-375 (not)-374 (particularly)-374 (time-ef)25 (\336cient)-374 (or)-374 (scalable.)-374 (This)-374 (design)]TJ
+ T*
+ [(requires)-260 (that)-260 (each)-260 (object)-260 (has)-260 (a)-260 (unique)-260 (identi\336er)-260 (v)25 (alid)-260 (o)14 (v)16 (er)-260 (its)-260 (lifetime.)-260 (The)-260 (actual)-260 (implementation)]TJ
+ T*
+ [(uses)-336 (an)]TJ
+ /N94 1 Tf
+ 3.3392 0 TD
+ [(object)-337 (table)]TJ
+ /N92 1 Tf
+ 5.1175 0 TD
+ [(whose)-337 (entries)-336 (are)-336 (called)]TJ
+ /N94 1 Tf
+ 10.1758 0 TD
+ (handles)Tj
+ /N92 1 Tf
+ 3.1108 0 TD
+ [(,)-337 (pro)15 (viding)-336 (an)-337 (e)15 (xtra)-337 (le)25 (v)15 (e)0 (l)-336 (o)0 (f)-337 (indirection)-336 (to)]TJ
+ -21.7433 -1.1667 TD
+ [(f)10 (acilitate)-251 (object)-252 (compaction.)-251 (The)-251 (handle)-251 (address)-251 (of)-251 (an)-252 (object)-251 (remains)-251 (constant)-251 (during)-251 (the)-251 (object\325)55 (s)]TJ
+ T*
+ [(lifetime,)-335 (and)-336 (can)-336 (therefore)-336 (serv)15 (e)-336 (a)0 (s)-335 (a)-336 (unique)-335 (identi\336er)55 (.)-336 (A)-335 (global)-336 (table)-336 (called)-336 (the)]TJ
+ /N94 1 Tf
+ 33.18 0 TD
+ [(monitor)-336 (cac)16 (he)]TJ
+ /N92 1 Tf
+ -33.18 -1.1667 TD
+ [(maps)-341 (object)-341 (handle)-341 (addresses)-341 (to)-341 (monitor)-341 (structures)-341 (that)-342 (can)-341 (be)-341 (used)-341 (to)-341 (perform)-341 (the)-341 (actual)-341 (syn-)]TJ
+ T*
+ [(chronization)-242 (operations.)-242 (When)-243 (a)-242 (thread)-243 (synchronizes)-242 (on)-242 (an)-243 (object,)-243 (it)-242 (\336rst)-242 (ensures)-243 (that)-242 (the)-243 (monitor)]TJ
+ T*
+ [(cache)-309 (maps)-309 (the)-309 (object)-309 (to)-309 (a)-309 (monitor)41 (,)-309 (creating)-309 (and)-309 (installing)-308 (the)-309 (monitor)-309 (in)-309 (the)-309 (table)-309 (if)-309 (necessary)66 (.)]TJ
+ T*
+ [(This)-275 (approach)-275 (has)-274 (no)-275 (\336x)15 (ed)-275 (per)20 (-object)-275 (space)-275 (cost,)-275 (using)-275 (only)-274 (space)-276 (proportional)-274 (to)-275 (the)-275 (number)-275 (of)]TJ
+ T*
+ [(entries)-399 (in)-399 (the)-399 (monitor)-399 (cache.)-399 (Ho)25 (we)25 (v)15 (e)0 (r)40 (,)-398 (it)-399 (is)-399 (f)10 (airly)-399 (time-inef)25 (\336cient,)-399 (since)-398 (each)-399 (synchronization)]TJ
+ T*
+ [(operation)-311 (must)-311 (\336rst)-311 (do)-311 (\(at)-312 (least\))-311 (a)-311 (table)-311 (lookup)-311 (to)-311 (locate)-310 (the)-311 (monitor)-311 (associated)-311 (with)-311 (the)-310 (object.)]TJ
+ T*
+ [(Further)40 (,)-287 (i)0 (t)-288 (i)0 (s)-288 (not)-288 (v)15 (ery)-288 (scalable.)-288 (The)-288 (monitor)-288 (cache)-288 (is)-288 (a)-288 (global)-288 (data)-287 (structure)-288 (that)-287 (is)-288 (accessed)-288 (con-)]TJ
+ T*
+ [(currently)65 (.)-260 (T)79 (o)-260 (mak)10 (e)-260 (this)-261 (concurrent)-260 (access)-260 (safe,)-261 (the)-260 (monitor)-260 (cache)-260 (is)-260 (protected)-260 (by)-260 (a)-260 (lock.)-260 (Thus,)-260 (all)]TJ
+ T*
+ [(synchronization)-367 (operations)-367 (obtain)-367 (a)-368 (single)-367 (lock,)-368 (an)-367 (ob)15 (vious)-367 (source)-367 (of)-368 (contention.)-367 (The)-367 (monitor)]TJ
+ T*
+ (cache locking also adds some cost in the uncontended case.)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 8 8
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 303 34.17 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ (5)Tj
+ -19.25 56.4858 TD
+ (Bacon)Tj
+ /N94 1 Tf
+ 2.8117 0 TD
+ [(et)-255 (al.)]TJ
+ /N92 1 Tf
+ 2.2625 0 TD
+ [([3])-256 (propose)-256 (a)-256 (cle)24 (v)15 (e)0 (r)-256 (scheme)-256 (moti)25 (v)25 (ated)-256 (by)-257 (man)15 (y)-257 (o)0 (f)-256 (the)-256 (same)-256 (concerns)-257 (as)-256 (ours.)-256 (In)-256 (this)]TJ
+ -5.0742 -1.1667 TD
+ [(design,)-274 (24)-274 (bits)-274 (of)-274 (each)-274 (object)-274 (header)-274 (are)-274 (de)25 (v)20 (oted)-274 (to)-274 (locking.)-273 (One)-275 (bit)-274 (indicates)-274 (whether)-274 (the)-274 (object)]TJ
+ T*
+ [(has)-295 (a)]TJ
+ /N94 1 Tf
+ 2.3683 0 TD
+ (thin)Tj
+ /N92 1 Tf
+ 1.8517 0 TD
+ (or)Tj
+ /N94 1 Tf
+ 1.1283 0 TD
+ (fat)Tj
+ /N92 1 Tf
+ 1.3517 0 TD
+ [(lock.)-295 (If)-295 (it)-296 (has)-295 (a)-296 (thin)-296 (lock,)-295 (then)-295 (all)-295 (necessary)-295 (locking)-296 (information)-295 (is)-295 (contained)-295 (in)]TJ
+ -6.7 -1.1667 TD
+ [(the)-276 (remaining)-276 (23)-277 (bits.)-277 (If)-276 (it)-276 (has)-277 (a)-277 (f)10 (at)-277 (lock,)-276 (then)-276 (the)-277 (remaining)-276 (23)-277 (bits)-277 (are)-276 (an)-276 (inde)15 (x)-277 (into)-276 (an)-277 (array)-276 (of)]TJ
+ T*
+ [(pointers)-257 (to)-257 (f)10 (a)0 (t)-257 (lock)-257 (structures)-258 (that,)-257 (much)-257 (lik)9 (e)-257 (monitors,)-257 (hold)-257 (the)-258 (necessary)-257 (data)-257 (for)-256 (the)-258 (synchroni-)]TJ
+ T*
+ [(zation)-305 (operations.)-305 (Thin)-305 (locks)-305 (are)-305 (used)-304 (as)-305 (long)-304 (as)-305 (the)-305 (lock)-305 (is)-305 (uncontended,)-305 (and)-305 (is)-305 (not)-304 (recursi)24 (v)15 (ely)]TJ
+ T*
+ [(lock)10 (ed)-294 (more)-294 (times)-294 (than)-295 (can)-294 (be)-294 (represented)-293 (in)-294 (a)-293 (count)-295 (\336eld)-294 (of)-294 (the)-294 (thin)-294 (lock;)-294 (if)-294 (either)-294 (condition)-294 (is)]TJ
+ T*
+ [(violated,)-340 (the)-340 (lock)-340 (representation)-340 (is)-340 (\322in\337ated.)70 (\323)-340 (This)-340 (design)-340 (does)-340 (well)-340 (at)-340 (optimizing)-341 (the)-340 (e)15 (xpected)]TJ
+ T*
+ [(common)-233 (case)-233 (of)-234 (uncontended)-233 (locking)-233 (and)-233 (unlocking.)-233 (Locking)-233 (requires)-233 (a)-234 (small)-233 (number)-233 (of)-234 (instruc-)]TJ
+ T*
+ [(tions,)-264 (with)-264 (only)-264 (one)-263 (atomic)-264 (instruction)-263 (in)-264 (the)-265 (f)10 (ast)-264 (path,)-264 (and)-263 (unlocking)-264 (requires)-264 (no)-263 (atomic)-264 (instruc-)]TJ
+ T*
+ [(tion. Ho)25 (we)25 (v)15 (e)0 (r)40 (,)0 ( thin locks lea)20 (v)15 (e)0 ( some issues to be addressed:)]TJ
+ /N95 1 Tf
+ 10 0 0 10 72 552 Tm
+ ( \245)Tj
+ /N94 1 Tf
+ 12 0 0 12 85.75 552 Tm
+ (Contention.)Tj
+ /N92 1 Tf
+ 4.9383 0 TD
+ [(When)-243 (there)-243 (is)-243 (contention)-244 (on)-243 (a)-243 (lock)-244 (for)-243 (the)-243 (\336rst)-244 (time,)-243 (all)-243 (threads)-244 (that)-243 (do)-243 (not)-243 (acquire)]TJ
+ -4.9383 -1.1667 TD
+ [(the)-240 (lock)-240 (must)]TJ
+ /N94 1 Tf
+ 5.6075 0 TD
+ [(b)20 (usy-wait)]TJ
+ /N92 1 Tf
+ 4.1083 0 TD
+ [(\(a.k.a.)-240 (spin\))-239 (until)-239 (the)-240 (lock)-239 (is)-240 (released.)-240 (Unbounded)-239 (b)20 (usy-w)10 (aiting)-239 (is)-240 (gen-)]TJ
+ -9.7158 -1.1667 TD
+ [(erally)-303 (undesirable)-303 (b)20 (ut,)-304 (as)-303 (the)-304 (authors)-303 (point)-303 (out,)-304 (b)20 (usy-w)10 (aiting)-303 (is)-304 (done)-303 (at)-304 (most)-302 (once)-304 (in)-303 (the)-304 (life-)]TJ
+ T*
+ [(time)-309 (of)-308 (a)-308 (g)0 (i)25 (v)15 (en)-308 (object.)-308 (Still,)-309 (it)-308 (w)10 (ould)-309 (not)-308 (be)-308 (hard)-308 (to)-309 (construct)-308 (a)-308 (program)-308 (that)-308 (does)-309 (contended)]TJ
+ T*
+ [(locking on man)15 (y short-li)26 (v)15 (ed objects, causing a great deal of b)21 (usy-w)10 (aiting.)]TJ
+ /N95 1 Tf
+ 10 0 0 10 72 476 Tm
+ ( \245)Tj
+ /N94 1 Tf
+ 12 0 0 12 85.75 476 Tm
+ [(Lac)21 (k)-395 (o)0 (f)-395 (de\337ation.)]TJ
+ /N92 1 Tf
+ 7.6367 0 TD
+ (Lock)Tj
+ /N94 1 Tf
+ 2.45 0 TD
+ (de\337ation)Tj
+ /N92 1 Tf
+ 3.8958 0 TD
+ [(is)-395 (not)-395 (discussed;)-395 (once)-395 (a)-395 (lock)-395 (becomes)-395 (f)10 (at,)-395 (it)-396 (remains)-395 (f)10 (at.)]TJ
+ -13.9825 -1.1667 TD
+ [(While)-245 (this)-246 (is)-245 (not)-245 (an)-245 (issue)-245 (for)-246 (most)-245 (programs,)-245 (one)-245 (could)-245 (imagine)-245 (a)-245 (long-li)25 (v)15 (e)0 (d)-245 (program)-245 (in)-245 (which)]TJ
+ T*
+ [(man)15 (y)-368 (long-li)25 (v)14 (e)0 (d)-368 (objects)-368 (are)-368 (lock)10 (ed)-368 (with)-368 (contention)-368 (at)-368 (some)-368 (point)-368 (in)-368 (their)-368 (lifetimes.)-367 (Absent)]TJ
+ T*
+ [(some)-381 (form)-380 (of)-380 (de\337ation,)-380 (such)-380 (a)-380 (program)-380 (w)10 (ould)-380 (consume)-381 (a)-380 (lar)18 (ge)-380 (amount)-381 (of)-380 (memory)-379 (for)-381 (f)10 (a)0 (t)]TJ
+ T*
+ (locks.)Tj
+ /N95 1 Tf
+ 10 0 0 10 72 400 Tm
+ ( \245)Tj
+ /N94 1 Tf
+ 12 0 0 12 85.75 400 Tm
+ [(Space)-359 (consumption.)]TJ
+ /N92 1 Tf
+ 8.4683 0 TD
+ [(Thin)-359 (locks)-360 (use)-359 (24)-360 (bits.)-359 (This)-359 (is)-360 (a)-359 (signi\336cant)-359 (o)15 (v)15 (erhead)-359 (since)-360 (the)-360 (a)20 (v)15 (erage)]TJ
+ -8.4683 -1.1667 TD
+ (object size for most programs is quite small [8].)Tj
+ -1.1458 -1.75 TD
+ [(In)-452 (other)-451 (related)-451 (w)9 (ork,)-451 (monitor)-452 (implementations)-451 (ha)21 (v)15 (e)-452 (been)-452 (proposed)-451 (that)-451 (e)15 (xploit)-452 (cooperati)25 (v)15 (e)]TJ
+ 0 -1.1667 TD
+ [(thread)-247 (scheduling)-247 ([14])-247 (or)-246 (mak)10 (e)-247 (special)-247 (pro)16 (vision)-247 (for)-246 (f)10 (aster)-247 (e)16 (x)15 (ecution)-247 (of)-247 (single-threaded)-247 (programs)]TJ
+ T*
+ [([21,)-252 (24].)-252 (As)-251 (we)-252 (ha)20 (v)15 (e)-252 (already)-252 (noted,)-251 (we)-252 (assume)-252 (preempti)25 (v)15 (e)-252 (scheduling,)-252 (and)-252 (desire)-252 (algorithms)-252 (that)]TJ
+ T*
+ [(w)10 (ork)-309 (well)-309 (for)-309 (both)-309 (single-)-308 (and)-309 (multi-threaded)-308 (programs,)-308 (so)-309 (we)-308 (shall)-308 (not)-309 (discuss)-308 (these)-309 (restricted)]TJ
+ T*
+ [(schemes further)55 (.)]TJ
+ 0 -1.75 TD
+ [(In)-242 ([4],)-241 (Bak)-242 (describes)-242 (ho)25 (w)-241 (a)0 (n)-242 (early)-242 (v)15 (ersion)-243 (of)-241 (Sun\325)55 (s)-242 (HotSpot\252)-242 (JVM)-242 (locks)-241 (objects)-242 (by)-242 (replacing)-241 (an)]TJ
+ 0 -1.1667 TD
+ [(object)-252 (header)-252 (w)10 (ord)-253 (with)-252 (a)-252 (pointer)-252 (to)-252 (an)-253 (e)16 (xternal)-252 (lock)-252 (structure,)-252 (displacing)-251 (the)-252 (original)-252 (contents)-252 (of)]TJ
+ T*
+ [(the)-270 (header)-269 (w)10 (ord)-269 (into)-270 (the)-269 (lock)-270 (structure.)-269 (T)80 (w)10 (o)-270 (l)0 (o)26 (w-order)-270 (bits)-269 (in)-269 (the)-269 (header)-270 (w)10 (ord)-269 (encode)-269 (its)-270 (format.)]TJ
+ T*
+ [(HotSpot)-361 (stack)-361 (allocates)-361 (lock)-360 (structures)-360 (for)-361 (ef)25 (\336cienc)15 (y)65 (.)-361 (Furthermore,)-361 (this)-361 (stack)-361 (allocation)-361 (allo)25 (ws)]TJ
+ T*
+ [(f)10 (ast)-388 (recursi)25 (v)15 (e)-389 (locking)-389 (by)-388 (enabling)-388 (ef)25 (\336cient)-389 (v)15 (eri\336cation)-388 (that)-388 (an)-388 (object)-388 (is)-389 (lock)10 (ed)-388 (by)-388 (the)-389 (current)]TJ
+ T*
+ [(thread:)-305 (if)-306 (the)-305 (lock)-305 (structure)-306 (address)-306 (is)-306 (suf)25 (\336ciently)-306 (close)-306 (to)-305 (the)-306 (current)-305 (stack)-306 (pointer)-306 (to)-306 (guarantee)]TJ
+ T*
+ [(membership)-276 (in)-276 (the)-276 (same)-277 (thread)-276 (stack,)-277 (the)-276 (current)-276 (thread)-276 (must)-276 (be)-277 (the)-276 (lock)-276 (o)25 (wner)56 (.)-277 (I)0 (n)-276 (non-preemp-)]TJ
+ T*
+ [(ti)25 (v)15 (e)-293 (thread)-293 (systems,)-292 (locking)-292 (and)-292 (unlocking)-292 (can)-292 (be)-293 (implemented)-292 (straightforw)10 (ardly)65 (.)-292 (I)0 (n)-292 (preempti)25 (v)15 (e)]TJ
+ T*
+ [(systems,)-344 (a)-343 (more)-343 (complicated)-343 (test-and-set)-344 (protocol)-343 (on)-343 (one)-343 (of)-344 (the)-344 (bits)-344 (in)-344 (the)-343 (header)-344 (w)10 (ord)-344 (grants)]TJ
+ T*
+ [(e)15 (xclusi)25 (v)15 (e)0 ( access to at most one thread; other threads b)21 (usy-w)10 (ait for their turn.)]TJ
+ 0 -1.75 TD
+ [(W)80 (e)-246 (borro)25 (w)-246 (HotSpot\325)55 (s)-246 (idea)-246 (of)-246 (displacing)-246 (a)-246 (header)-247 (w)10 (ord)-246 (and)-246 (using)-246 (some)-246 (bits)-247 (of)-246 (the)-246 (w)10 (ord)-246 (to)-247 (encode)]TJ
+ 0 -1.1667 TD
+ [(its)-237 (format)-236 (and)-236 (the)-236 (lock)-236 (state.)-236 (W)80 (e)-236 (use)-236 (a)-236 (dif)24 (ferent)-235 (allocation)-237 (scheme)-236 (to)-236 (support)-237 (non-block-structured)]TJ
+ T*
+ [(synchronization and emplo)11 (y a b)20 (usy-w)10 (ait-free protocol to protect the header w)11 (ord.)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 9 9
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 303 34.17 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ (6)Tj
+ /N91 1 Tf
+ 16 0 0 16 72 709.33 Tm
+ (4 Our algorithm)Tj
+ /N92 1 Tf
+ 12 0 0 12 72 686 Tm
+ [(In)-250 (an)15 (y)-251 (concurrent)-250 (en)40 (vironment,)-250 (there)-250 (must)-251 (be)-251 (some)-251 (protocol)-250 (observ)15 (ed)-251 (by)-251 (threads)-250 (as)-250 (the)15 (y)-250 (manipu-)]TJ
+ 0 -1.1667 TD
+ [(late)-317 (the)]TJ
+ /N94 1 Tf
+ 3.3 0 TD
+ [(sync)15 (hr)45 (onization)-317 (data)]TJ
+ /N92 1 Tf
+ 8.7408 0 TD
+ [(of)-317 (objects,)-317 (that)-317 (is,)-317 (the)-316 (data)-317 (structures)-317 (that)-317 (manage)-317 (synchronization)]TJ
+ -12.0408 -1.1667 TD
+ [(operations.)-302 (T)80 (ypically)65 (,)-302 (the)-302 (protocol)-303 (speci\336es)-302 (when)-302 (a)-303 (thread)-303 (may)-302 (access)-302 (or)-303 (manipulate)-302 (an)-303 (object\325)55 (s)]TJ
+ T*
+ [(synchronization)-272 (data.)-273 (F)15 (o)0 (r)-273 (e)15 (xample,)-272 (the)-273 (thin-locks)-272 (approach)-272 (relies)-273 (on)-272 (an)-273 (in)41 (v)25 (ariant)-273 (whereby)-273 (only)-273 (a)]TJ
+ T*
+ [(thread)-492 (o)25 (wning)-492 (the)-491 (lock)-491 (on)-492 (an)-492 (object)-492 (may)-491 (modify)-492 (that)-492 (object\325)55 (s)-492 (synchronization)-491 (data.)-492 (Other)]TJ
+ T*
+ [(approaches,)-308 (lik)9 (e)-308 (ours,)-309 (allo)25 (w)-309 (a)0 (n)15 (y)-309 (thread)-308 (to)-309 (update)-309 (this)-308 (information.)-309 (The)-309 (k)10 (e)15 (y)-309 (t)0 (o)-309 (our)-309 (approach)-309 (is)-309 (a)]TJ
+ T*
+ [(time-)-296 (and)-297 (space-ef)25 (\336cient)-297 (meta-lock)-297 (associated)-296 (with)-297 (the)-296 (synchronization)-297 (data)-297 (of)-296 (each)-297 (object.)-297 (The)]TJ
+ T*
+ (typical pattern for synchronization operations in our system is:)Tj
+ 1.1458 -1.6667 TD
+ [(1.)-228 (Obtain)-229 (the)-229 (object\325)55 (s)-229 (meta-lock)-228 (to)-229 (ensure)-228 (e)15 (xclusi)25 (v)15 (e)-229 (access)-228 (to)-229 (the)-229 (object\325)55 (s)-228 (synchronization)-228 (data.)]TJ
+ 0 -1.4167 TD
+ [(2. Manipulate the synchronization data of that object. This operation sh\
+ ould be f)11 (ast.)]TJ
+ T*
+ [(3. Release or hand of)25 (f the object\325)55 (s meta-lock.)]TJ
+ -1.1458 -1.75 TD
+ [(Meta-locks)-462 (play)-463 (a)-463 (similar)-463 (role)-463 (as)-463 (the)-463 (auxiliary)-462 (spin-locks)-463 (seen)-463 (in)-463 (man)15 (y)-462 (implementations)-463 (of)]TJ
+ 0 -1.1667 TD
+ [(POSIX)-372 (threads)-373 ([6,)-372 (17].)-372 (These)-372 (spin-locks)-372 (pro)15 (vide)-372 (brief)-372 (e)15 (xclusi)26 (v)15 (e)-373 (access)-372 (to)-372 (the)-372 (synchronization)]TJ
+ T*
+ [(state maintained in records representing programmer)21 (-le)25 (v)15 (el mute)15 (x)15 (es and condition v)25 (ariables.)]TJ
+ 0 -1.75 TD
+ [(W)80 (e)-300 (shall)-299 (use)-300 (the)-300 (term)-300 (\322monitor)20 (-lock\323)-300 (to)-300 (denote)-300 (the)-300 (lock)-300 (abstraction)-299 (e)15 (xported)-300 (by)-300 (the)-300 (Ja)20 (v)25 (a)-300 (virtual)]TJ
+ 0 -1.1667 TD
+ [(machine)-358 (to)-358 (a)20 (v)20 (oid)-358 (confusion)-357 (with)-358 (the)-358 (meta-lock)-357 (used)-358 (in)-358 (its)-357 (implementation.)-357 (Because)-358 (meta-lock)]TJ
+ T*
+ [(acquisition)-353 (occurs)-354 (in)-354 (FIFO)-354 (order)40 (,)-353 (the)-354 (abo)15 (v)15 (e)-354 (pattern)-354 (allo)25 (ws)-354 (a)-354 (number)-354 (of)-353 (f)10 (airness)-354 (policies)-354 (at)-354 (the)]TJ
+ T*
+ [(monitor)-306 (le)25 (v)15 (el.)-306 (The)-307 (rest)-307 (of)-306 (this)-307 (section)-307 (describes)-306 (our)-306 (algorithm)-307 (in)-307 (detail:)-306 (Section)-307 (4.1)-307 (presents)-307 (the)]TJ
+ T*
+ [(data)-298 (structures)-298 (in)40 (v)20 (olv)15 (ed,)-298 (Section)-298 (4.2)-298 (the)-298 (meta-lock)-298 (algorithm,)-297 (Section)-298 (4.3)-298 (the)-298 (implementation)-297 (of)]TJ
+ T*
+ [(the)-377 (monitor)20 (-le)25 (v)15 (e)0 (l)-377 (lock)-377 (and)-378 (unlock)-378 (operations,)-377 (and)-377 (Section)-377 (4.4)-377 (the)-378 (implementation)-377 (of)-378 (w)10 (ait)-377 (and)]TJ
+ T*
+ [(notify)65 (.)]TJ
+ /N91 1 Tf
+ 14 0 0 14 72 347.67 Tm
+ [(4.1 Data structur)18 (es)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 323 Tm
+ [(Synchronization)-307 (in)40 (v)20 (olv)16 (es)-308 (three)-308 (entities:)-307 (threads,)-308 (objects,)-308 (and)-308 (lock)-307 (records.)-308 (W)80 (e)-308 (describe)-307 (the)-308 (rele-)]TJ
+ T*
+ [(v)25 (ant)-310 (parts)-311 (of)-310 (the)-310 (data)-311 (structures)-311 (that)-310 (implement)-311 (them)-311 (and)-310 (ho)25 (w)-311 (the)15 (y)-310 (interact)-311 (during)-311 (synchroniza-)]TJ
+ T*
+ (tion.)Tj
+ /N94 1 Tf
+ 0 -1.75 TD
+ [(Thr)37 (eads)]TJ
+ /N92 1 Tf
+ 3.2408 0 TD
+ [(.)-246 (W)80 (e)-246 (call)-246 (the)-245 (data)-246 (structure)-246 (that)-246 (holds)-245 (thread-speci\336c)-246 (state)-245 (an)]TJ
+ /N94 1 Tf
+ 24.425 0 TD
+ [(e)20 (xecution)-246 (en)40 (vir)45 (onment)]TJ
+ /N92 1 Tf
+ 9.2183 0 TD
+ (\()Tj
+ /N95 1 Tf
+ 0.3325 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ (\).)Tj
+ -38.4167 -1.1667 TD
+ (Since)Tj
+ /N95 1 Tf
+ 2.4683 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(s)-246 (and)-246 (threads)-246 (correspond)-246 (one)-246 (to)-246 (one,)]TJ
+ /N95 1 Tf
+ 14.8025 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.4467 0 TD
+ [(addresses)-245 (are)-246 (well-suited)-246 (as)-246 (unique)-246 (thread)-246 (iden-)]TJ
+ -19.9175 -1.1667 TD
+ [(ti\336ers.)-249 (Figure)-250 (1)-250 (sho)25 (ws)-250 (the)-250 (\336elds)-250 (in)]TJ
+ /N95 1 Tf
+ 14.0292 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(s)-249 (that)-250 (the)-250 (synchronization)-249 (code)-249 (uses)-250 (as)-249 (well)-250 (as)-249 (an)-249 (initializa-)]TJ
+ -15.2292 -1.1667 TD
+ [(tion)-281 (function)-282 (that)-282 (sets)-282 (the)-282 (\336elds)-281 (to)-282 (their)-282 (steady-state)-281 (v)25 (alues.)-282 (The)-282 (mute)15 (x)16 (e)0 (s)-282 (and)-282 (condition)-282 (v)25 (ariables)]TJ
+ T*
+ [(in)-225 (the)]TJ
+ /N95 1 Tf
+ 2.4508 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(s)-225 (are)-225 (used)-225 (to)-225 (a)20 (v)20 (oid)-225 (b)20 (usy-w)10 (aiting)-225 (when)-225 (contention)-225 (requires)-225 (threads)-225 (to)-224 (w)9 (ait)-225 (for)-226 (their)-225 (turn)-225 (to)]TJ
+ -3.6508 -1.1667 TD
+ [(lock)-227 (an)-227 (object,)-228 (while)-227 (other)-227 (\336elds)-227 (serv)15 (e)-228 (t)0 (o)-227 (e)15 (xchange)-227 (information)-227 (between)-227 (threads)-227 (synchronizing)-227 (on)]TJ
+ T*
+ (the same object.)Tj
+ /N94 1 Tf
+ 0 -1.75 TD
+ (Objects)Tj
+ /N92 1 Tf
+ 3.055 0 TD
+ [(.)-265 (Figure)-250 (2)-265 (sho)25 (ws)-265 (the)-265 (object)-265 (layout)-265 (in)-264 (EVM.)-265 (Because)-264 (e)25 (v)15 (ery)-265 (object)-265 (may)-265 (potentially)-265 (be)-264 (used)]TJ
+ -3.055 -1.1667 TD
+ [(for)-350 (synchronization,)-349 (it)-350 (is)-350 (critical)-350 (to)-350 (minimize)-349 (the)-350 (per)20 (-object)-350 (space)-350 (o)15 (v)15 (erhead.)-349 (Objects)-350 (ha)20 (v)15 (e)-349 (tw)10 (o-)]TJ
+ T*
+ [(w)10 (ord)-313 (headers.)-312 (The)-312 (\336rst)-312 (w)9 (ord)-312 (points)-312 (to)-313 (the)-312 (object\325)55 (s)-312 (class.)-313 (Only)-312 (the)-313 (second)-312 (w)9 (ord)-312 (is)-313 (used)-312 (for)-313 (syn-)]TJ
+ T*
+ [(chronization,)-284 (b)21 (u)0 (t)-284 (i)0 (t)-284 (serv)15 (es)-284 (other)-284 (purposes)-284 (as)-284 (well,)-284 (such)-284 (as)-284 (holding)-284 (a)-284 (hash)-284 (code)]TJ
+ 9.6 0 0 9.6 450.48 131.8 Tm
+ (2)Tj
+ 12 0 0 12 458.69 127 Tm
+ [(and)-283 (garbage-col-)]TJ
+ ET
+ 0 G
+ 2 J
+ 0 j
+ 0.36 w
+ 3.86 M
+ []0 d
+ 204 86 m
+ 72 86 l
+ S
+ BT
+ 10 0 0 10 72 71.33 Tm
+ [(2. EVM uses a handle-less cop)9 (ying memory system, so object or handle addresses cannot be used as hash\
+ codes.)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 10 10
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 303 34.17 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ (7)Tj
+ -19.25 32.1942 TD
+ [(lector)-284 (age)-284 (information,)-283 (so)-284 (we)-283 (call)-283 (it)-284 (the)]TJ
+ /N94 1 Tf
+ 16.1825 0 TD
+ (multi-use)Tj
+ /N92 1 Tf
+ 4.0058 0 TD
+ [(w)10 (ord.)-284 (W)80 (e)-283 (emplo)10 (y)-284 (a)]TJ
+ /N94 1 Tf
+ 8.1717 0 TD
+ [(header)-283 (wor)37 (d)-284 (displacement)]TJ
+ /N92 1 Tf
+ -28.36 -1.1667 TD
+ [(technique)-299 (in)41 (v)15 (ented)-299 (by)-299 (our)-299 (colleague)-299 (Lars)-299 (Bak)-299 ([4].)-299 (The)-299 (tw)10 (o)-299 (least)-299 (signi\336cant)-299 (bits)-299 (in)-299 (the)-299 (multi-use)]TJ
+ T*
+ [(w)10 (ord,)-389 (called)-389 (the)]TJ
+ /N94 1 Tf
+ 7.0708 0 TD
+ [(loc)20 (k)-389 (bits)]TJ
+ /N92 1 Tf
+ 3.48 0 TD
+ [(,)-389 (hold)-389 (the)]TJ
+ /N94 1 Tf
+ 4.4167 0 TD
+ [(loc)20 (k)-389 (state)10 (,)]TJ
+ /N92 1 Tf
+ 4.5525 0 TD
+ [(which)-388 (serv)15 (e)-389 (a)0 (s)-389 (a)-389 (format)-389 (indicator)-388 (and)-388 (simulta-)]TJ
+ -19.52 -1.1667 TD
+ [(neously)-255 (encode)-254 (meta-lock)-254 (information)-254 (for)-255 (the)-255 (object.)-254 (Figure)-250 (3)-254 (sho)25 (ws)-255 (the)-254 (four)-255 (possible)-254 (lock)-255 (states)]TJ
+ T*
+ [(and)-244 (their)-244 (formats.)-245 (Objects)-245 (are)-244 (created)-245 (in)-244 (the)]TJ
+ /N95 1 Tf
+ 17.7017 0 TD
+ (NEUTRAL)Tj
+ /N92 1 Tf
+ 4.445 0 TD
+ [(state)-244 (\(in)-245 (f)11 (act,)-245 (the)-245 (majority)-244 (of)-245 (objects)-244 (ne)25 (v)15 (e)0 (r)]TJ
+ -22.1467 -1.1667 TD
+ [(lea)20 (v)15 (e)-365 (this)-365 (state\),)-366 (remain)-365 (in)-365 (this)-365 (state)-365 (as)-364 (long)-365 (as)-365 (no)-365 (thread)-365 (synchronizes)-365 (on)-366 (them,)-365 (and)-365 (return)-364 (to)]TJ
+ /N95 1 Tf
+ T*
+ (NEUTRAL)Tj
+ /N92 1 Tf
+ 4.5758 0 TD
+ [(once)-376 (synchronization)-376 (ceases.)-376 (A)-376 (monitor)21 (-lock)10 (ed)-376 (object)-377 (is)-375 (in)-376 (the)]TJ
+ /N95 1 Tf
+ 26.4342 0 TD
+ (LOCKED)Tj
+ /N92 1 Tf
+ 3.9758 0 TD
+ [(state.)-376 (The)]TJ
+ -34.9858 -1.1667 TD
+ [(high)-404 (30)-404 (bits)-404 (of)-404 (the)-405 (multi-use)-404 (w)10 (ord)-404 (hold)-404 (a)-404 (pointer)-404 (to)-404 (synchronization)-404 (data)-405 (\(a)]TJ
+ /N94 1 Tf
+ 32.4258 0 TD
+ [(loc)20 (k)-404 (r)37 (ecor)37 (d)]TJ
+ /N92 1 Tf
+ 4.6425 0 TD
+ [(,)-404 (see)]TJ
+ -37.0683 -1.1667 TD
+ [(belo)25 (w\))-292 (that)-291 (indicates)-291 (which)-292 (thread)-291 (o)25 (wns)-291 (the)-291 (monitor)20 (-lock)-291 (and)-291 (also)-291 (stores)-291 (the)-290 (displaced)-291 (hash)-291 (and)]TJ
+ T*
+ [(age)-348 (information.)-348 (The)]TJ
+ /N95 1 Tf
+ 8.9583 0 TD
+ (WAITERS)Tj
+ /N92 1 Tf
+ 4.5483 0 TD
+ [(state)-348 (is)-347 (entered)-349 (when)-347 (a)-348 (thread)-348 (releases)-348 (the)-348 (monitor)21 (-lock)-348 (while)]TJ
+ -13.5067 -1.1667 TD
+ [(other)-348 (threads)-349 (are)-348 (w)10 (aiting)-348 (to)-349 (acquire)-349 (the)-348 (lock)-349 (or)-349 (to)-349 (be)-348 (noti\336ed:)-347 (the)-349 (object)-348 (is)-349 (no)-348 (longer)-348 (monitor)21 (-)]TJ
+ T*
+ [(lock)10 (ed,)-320 (b)20 (u)0 (t)-319 (the)-319 (state)-319 (must)-320 (be)-319 (distinguished)-319 (from)]TJ
+ /N95 1 Tf
+ 19.9417 0 TD
+ (NEUTRAL)Tj
+ /N92 1 Tf
+ 4.52 0 TD
+ [(because)-319 (the)-320 (remainder)-319 (of)-319 (the)-320 (multi-)]TJ
+ -24.4617 -1.1667 TD
+ [(use)-299 (w)10 (ord)-299 (still)-300 (points)-299 (to)-299 (synchronization)-299 (data.)-300 (The)-299 (fourth)-299 (and)-299 (\336nal)-299 (state,)]TJ
+ /N95 1 Tf
+ 29.3033 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.2708 0 TD
+ [(,)-300 (indicates)-299 (that)-300 (the)]TJ
+ -31.5742 -1.1667 TD
+ [(object)-365 (is)-366 (meta-lock)11 (ed.)-366 (In)-365 (this)-366 (case,)-365 (the)-365 (high)-366 (part)-365 (of)-366 (the)-365 (multi-use)-366 (w)10 (ord)-365 (contains)-366 (the)]TJ
+ /N95 1 Tf
+ 35.0142 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.565 0 TD
+ [(of)-366 (the)]TJ
+ -36.5792 -1.1667 TD
+ [(thread)-253 (that)-252 (has)-254 (the)-253 (meta-lock)]TJ
+ /N94 1 Tf
+ 11.8192 0 TD
+ (or)Tj
+ /N92 1 Tf
+ 1.1417 0 TD
+ (the)Tj
+ /N95 1 Tf
+ 1.475 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.4533 0 TD
+ [(of)-254 (a)-253 (thread)-253 (attempting)-253 (to)-254 (acquire)-253 (the)-253 (meta-lock,)-253 (as)-253 (will)-253 (be)]TJ
+ -15.8892 -1.1667 TD
+ [(e)15 (xplained)-227 (in)-227 (Section)-227 (4.2.)-227 (A)-227 (minimum)-227 (of)-228 (tw)10 (o)-228 (lock)-227 (bits)-227 (are)-227 (required)-227 (since)-227 (we)-227 (must)-227 (distinguish)-227 (three)]TJ
+ T*
+ [(states:)-329 (is)-329 (the)-329 (object)-329 (meta-lock)10 (ed)-328 (or)-329 (not,)-329 (and,)-329 (if)-329 (not,)-329 (whether)-329 (the)-329 (remaining)-329 (bits)-329 (of)-329 (the)-329 (multi-use)]TJ
+ T*
+ [(w)10 (ord)-247 (contain)-246 (their)-246 (original)-246 (contents)-246 (or)-246 (a)-246 (pointer)-246 (to)-246 (a)-247 (data)-246 (structure)-247 (into)-246 (which)-247 (those)-246 (contents)-246 (ha)20 (v)15 (e)]TJ
+ T*
+ [(been)-304 (displaced.)-304 (Ho)25 (we)25 (v)15 (e)0 (r)40 (,)-304 (while)-304 (the)-305 (minimum)-304 (is)-305 (three)-303 (states,)-305 (ef)25 (\336cienc)15 (y)-304 (f)10 (a)20 (v)20 (ors)-304 (use)-304 (of)-304 (all)-303 (four)-305 (bit)]TJ
+ T*
+ [(patterns,)-347 (allo)25 (wing)-347 (the)]TJ
+ /N95 1 Tf
+ 9.1558 0 TD
+ (LOCKED)Tj
+ /N92 1 Tf
+ 3.9475 0 TD
+ (and)Tj
+ /N95 1 Tf
+ 1.7917 0 TD
+ (WAITERS)Tj
+ /N92 1 Tf
+ 4.5475 0 TD
+ [(states)-347 (to)-348 (be)-348 (distinguished)-347 (in)-347 (the)-348 (lock)-348 (bits)-347 (rather)]TJ
+ -19.4425 -1.1667 TD
+ (than by a bit in the synchronization data.)Tj
+ /N94 1 Tf
+ 0 -1.75 TD
+ [(Loc)20 (k)-382 (r)36 (ecor)37 (ds.)]TJ
+ /N92 1 Tf
+ 5.9192 0 TD
+ [(Most)-381 (synchronization)-382 (data)-382 (is)-382 (k)10 (ept)-382 (not)-382 (in)-382 (objects)-382 (b)20 (u)0 (t)-382 (i)0 (n)]TJ
+ /N95 1 Tf
+ 23.2342 0 TD
+ (LockRecord)Tj
+ /N92 1 Tf
+ 6 0 TD
+ [(s.)-382 (A)-382 (lock)]TJ
+ -35.1533 -1.1667 TD
+ [(record)-411 (represents)-411 (a)-411 (thread)-411 (for)-411 (the)-411 (purpose)-410 (of)-411 (synchronization)-411 (on)-411 (a)-411 (particular)-411 (object.)-411 (Figure)-250 (4)]TJ
+ T*
+ [(sho)25 (ws)-258 (the)-259 (\336elds)-258 (of)-259 (a)-258 (lock)-258 (record:)-258 (the)-259 (o)25 (wner)-258 (thread,)-258 (the)-258 (number)-258 (of)-259 (times)-258 (the)-259 (thread)-258 (has)-258 (lock)10 (ed)-258 (the)]TJ
+ T*
+ [(object)-247 (\(recall)-247 (that)-247 (monitor)21 (-locks)-247 (are)-247 (recursi)25 (v)15 (e\),)-247 (a)-247 (\336eld)-247 (for)-247 (the)-247 (displaced)-246 (hash)-247 (and)-248 (age)-247 (information,)]TJ
+ 4.2008 33.375 TD
+ [(Figure 1. Per)21 (-thread \(e)15 (x)15 (ecution en)40 (vironment\) \336elds used for synchronization)]TJ
+ 9.66 -1 TD
+ [(and their steady-state v)25 (alues)]TJ
+ /N95 1 Tf
+ 8 0 0 8 126 710.17 Tm
+ (typedef struct execenv {)Tj
+ 2.4 -1.25 TD
+ [(Thread)-4200 (thread;)-9600 (/* ExecEnv is a subtype of Thread. */)]TJ
+ T*
+ [(mutex_t)-3600 (metaLockMutex;)-5400 (/* Used by slow-path meta-lock/unlock. */)]TJ
+ T*
+ [(condvar_t)-2400 (metaLockCondvar;)-4200 (/* To wait for meta-lock hand-off.)-3000 (*/)]TJ
+ T*
+ [(bool_t)-4200 (gotMetaLockSlow;)-4200 (/* Wait for predecessor to give bits.)-1200 (*/)]TJ
+ T*
+ [(bool_t)-4200 (bitsForGrab;)-6600 (/* Wait for successor to grab bits.)-2400 (*/)]TJ
+ T*
+ [(BitField)-3000 (metaLockBits;)-6000 (/* Space to get/give releaseBits.)-3600 (*/)]TJ
+ T*
+ [(ExecEnv)-3000 (*succEE;)-9600 (/* Next thread to get the meta-lock.)-1800 (*/)]TJ
+ T*
+ [(mutex_t)-3600 (monitorLockMutex;)-3600 (/* Used by slow-path lock/unlock.)-3000 ( */)]TJ
+ T*
+ [(condvar_t)-2400 (monitorLockCondvar;)-2400 (/* To wait for monitor acquisition.)-2400 (*/)]TJ
+ T*
+ [(bool_t)-4200 (isWaitingForNotify;)-2400 (/* Am waiting for notification.)-4800 (*/)]TJ
+ T*
+ [(...)-600 (other fields ...)]TJ
+ -2.4 -1.25 TD
+ (} ExecEnv;)Tj
+ 0 -2.5 TD
+ (void initializeEE\(ExecEnv *ee\) {)Tj
+ 2.4 -1.25 TD
+ [(ee->gotMetaLockSlow)-2400 (= FALSE;)]TJ
+ -2.4 -1.25 TD
+ [( ee->bitsForGrab)-4800 (= FALSE;)]TJ
+ 2.4 -1.25 TD
+ (ee->isWaitingForNotify = FALSE;)Tj
+ T*
+ [(ee->succEE)-7800 (= NULL;)]TJ
+ T*
+ (... initialize other fields ...)Tj
+ -2.4 -1.25 TD
+ (})Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 11 11
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 303 34.17 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ (8)Tj
+ -19.25 27.2358 TD
+ [(a)-291 (queue)-291 (\336eld)-291 (for)-291 (linking)-291 (the)-291 (lock)-291 (records)-291 (of)-291 (all)-292 (threads)-291 (that)-291 (synchronize)-291 (on)-291 (a)-292 (g)0 (i)26 (v)15 (en)-292 (object,)-291 (and)-291 (a)]TJ
+ 0 -1.1667 TD
+ [(free-list)-346 (\336eld)-347 (for)-346 (linking)-347 (lock)-347 (records)-347 (when)-346 (the)15 (y)-348 (are)-346 (not)-347 (in)-346 (use)-347 (\(see)-347 (Section)-347 (6.1\).)-346 (Figure)-251 (4)-347 (also)]TJ
+ T*
+ [(sho)25 (ws)-289 (an)-289 (object)-289 (with)-289 (three)-289 (lock)-290 (records)-289 (on)-289 (its)-289 (lock)-289 (queue.)-289 (In)-289 (this)-290 (e)16 (xample,)-289 (the)-290 (state)-289 (is)]TJ
+ /N95 1 Tf
+ 35.15 0 TD
+ (LOCKED)Tj
+ /N92 1 Tf
+ 3.6 0 TD
+ (,)Tj
+ -38.75 -1.1667 TD
+ [(so)-255 (one)-255 (of)-254 (the)-255 (lock)-255 (records)-255 (belongs)-255 (to)-254 (a)-255 (thread)-255 (that)-255 (holds)-255 (the)-255 (monitor)21 (-lock.)-255 (In)-255 (our)-254 (implementation,)]TJ
+ T*
+ [(ne)25 (w)-253 (lock)-254 (records)-254 (are)-253 (appended)-254 (to)-254 (the)-253 (end)-253 (of)-254 (the)-254 (queue)-253 (\(FIFO)-254 (order\))-253 (and)-253 (stay)-254 (in)-254 (order)40 (,)-253 (e)15 (xcept)-253 (that)]TJ
+ T*
+ [(when)-261 (a)-261 (thread)-261 (acquires)-260 (the)-260 (monitor)20 (-lock,)-261 (it)-261 (mo)16 (v)15 (e)0 (s)-261 (its)-261 (lock)-260 (record)-261 (to)-260 (the)-261 (front)-260 (so)-261 (that)-261 (the)-260 (\336rst)-261 (lock)]TJ
+ T*
+ [(record of a lock)10 (ed object al)10 (w)10 (ays belongs to the thread that holds the monitor)21 (-lock.)]TJ
+ 0 -1.75 TD
+ [(An)-360 (object\325)55 (s)-359 (meta-lock)-359 (protects)-359 (its)-359 (synchronization)-359 (data,)-360 (which)-359 (we)-359 (can)-359 (no)25 (w)-359 (de\336ne)-359 (precisely)-359 (as)]TJ
+ 0 -1.1667 TD
+ [(comprising)-262 (the)-262 (multi-use)-262 (w)10 (ord,)-262 (including)-262 (the)-262 (lock)-262 (queue)-262 (pointer)-263 (\(when)-262 (there)-262 (is)-262 (one\))-262 (and)-263 (the)-262 (lock)]TJ
+ T*
+ [(records)-230 (in)-231 (that)-231 (queue.)-230 (F)14 (o)0 (r)-230 (e)15 (xample,)-231 (if)-231 (a)-230 (thread)-231 (w)9 (ants)-231 (to)-230 (place)-231 (a)-231 (lock)-230 (record)-231 (in)-230 (the)-231 (queue)-230 (to)-231 (w)10 (ait)-231 (for)]TJ
+ T*
+ [(its)-252 (turn)-252 (to)-251 (acquire)-252 (the)-252 (monitor)21 (-lock,)-252 (it)-251 (meta-locks)-252 (the)-252 (object)-252 (to)-252 (gain)-251 (e)15 (xclusi)25 (v)15 (e)-252 (access)-252 (to)-252 (the)-251 (queue,)]TJ
+ T*
+ [(appends)-263 (its)-263 (lock)-263 (record,)-263 (and)-263 (then)-263 (releases)-263 (the)-263 (meta-lock.)-263 (Similarly)65 (,)-263 (t)0 (o)-263 (read)-263 (or)-264 (write)-263 (the)-263 (hash)-263 (code)]TJ
+ T*
+ [(of)-354 (an)-354 (object,)-353 (meta-locking)-354 (must)-354 (be)-353 (done)-354 (\(though)-353 (it)-354 (is)-354 (possible)-354 (to)-354 (optimize)-354 (reads)-353 (of)-354 (immutable)]TJ
+ T*
+ [(\336elds, lik)10 (e the hash code, most of the time\).)]TJ
+ /N91 1 Tf
+ 14 0 0 14 72 139.67 Tm
+ [(4.2 Meta-locking: exclusi)10 (v)10 (e)0 ( access to synchr)18 (onization data)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 115 Tm
+ [(Figure)-250 (5)-293 (sho)26 (ws)-293 (the)-293 (non-contention)-292 (\(f)10 (ast-path\))-293 (code)-293 (for)-292 (obtaining)-293 (and)-293 (releasing)-293 (an)-293 (object\325)55 (s)-293 (meta-)]TJ
+ T*
+ [(lock.)-322 (A)-323 (thread)-323 (attempts)-322 (to)-323 (gain)-322 (the)-323 (meta-lock)-322 (by)-322 (using)-322 (an)-323 (atomic)-322 (sw)10 (ap)-323 (operation)-322 (to)-323 (replace)-323 (the)]TJ
+ T*
+ [(object\325)55 (s)-238 (multi-use)-237 (w)10 (ord)-237 (with)-237 (a)-238 (w)10 (ord)-238 (consisting)-237 (of)-237 (a)-238 (reference)-237 (to)-238 (the)-237 (thread\325)55 (s)]TJ
+ /N95 1 Tf
+ 30.5042 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.4375 0 TD
+ [(and)-237 (the)-237 (lo)25 (w-order)]TJ
+ -31.9417 -1.1667 TD
+ [(bits)-257 (representing)-258 (the)]TJ
+ /N95 1 Tf
+ 8.3833 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.6575 0 TD
+ [(state.)-258 (If)-258 (the)-257 (w)9 (ord)-258 (returned)-257 (by)-258 (the)-257 (sw)9 (ap)-258 (operation)-257 (has)-258 (lo)25 (w-order)-257 (bits)-257 (in)]TJ
+ ET
+ 0 G
+ 2 J
+ 0 j
+ 0.6 w
+ 3.86 M
+ []0 d
+ 295.26 712.67 72 -90 re
+ 367.26 694.67 m
+ 295.26 694.67 l
+ 367.26 676.67 m
+ 295.26 676.67 l
+ S
+ BT
+ 10 0 0 10 300.26 701.17 Tm
+ (class ptr)Tj
+ 0 -1.8 TD
+ [(multi-use w)10 (ord)]TJ
+ 0 -3.6 TD
+ [(user)20 (-de\336ned)]TJ
+ 0 -1 TD
+ (\336elds)Tj
+ ET
+ 394.26 694.67 m
+ 376.26 703.67 l
+ 394.26 694.67 m
+ 376.26 685.67 l
+ S
+ BT
+ 10 0 0 10 396.51 692.09 Tm
+ [(header w)10 (ords)]TJ
+ -23.625 -0.325 TD
+ (all synchronization)Tj
+ 0 -1 TD
+ (is done on this \336eld)Tj
+ ET
+ 0 J
+ 1.08 w
+ 275.23 683.03 m
+ 284.45 685.67 l
+ 275.23 688.31 l
+ 275.23 685.67 l
+ s
+ 275.23 683.03 m
+ 284.45 685.67 l
+ 275.23 688.31 l
+ 275.23 685.67 l
+ f*
+ 2 J
+ 0.6 w
+ 274.73 685.67 m
+ 241.26 685.67 l
+ S
+ BT
+ 10 0 0 10 295.26 613.67 Tm
+ (object)Tj
+ 12 0 0 12 229.34 591.17 Tm
+ (Figure 2. Object layout in EVM)Tj
+ ET
+ 1 g
+ 1.08 w
+ 81 526.67 219 -18.5 re
+ B*
+ 207.5 508.67 m
+ 207.5 526.67 l
+ 252.5 508.67 m
+ 252.5 526.67 l
+ S
+ BT
+ 10 0 0 10 123.07 514.34 Tm
+ 0 g
+ (hash code)Tj
+ 9.793 0.083 TD
+ [(age)-2112 (Lock \(00\))]TJ
+ -9.15 -1.8 TD
+ (25 bits)Tj
+ 9.05 0.05 TD
+ [(5 bits)-2155 (2 bits)]TJ
+ ET
+ 1 g
+ 312.86 464.17 215.71 -18.5 re
+ B*
+ 481.78 446.17 m
+ 481.78 464.17 l
+ S
+ BT
+ 9.85 0 0 10 342.41 452.67 Tm
+ 0 g
+ [(Ex)16 (ecution en)39 (vironment \(EE\))-3057 (Lock \(11\))]TJ
+ 4.1492 -1.85 TD
+ (30 bits)Tj
+ 11.1005 0.1 TD
+ (2 bits)Tj
+ ET
+ 1 g
+ 312 527.17 219 -18.5 re
+ B*
+ 483.5 509.17 m
+ 483.5 527.17 l
+ S
+ BT
+ 10 0 0 10 342 515.67 Tm
+ 0 g
+ [(LockRecord \(LR\))-7363 (Lock \(10\))]TJ
+ 4.15 -1.85 TD
+ (30 bits)Tj
+ 11.1 0.1 TD
+ (2 bits)Tj
+ ET
+ 1 g
+ 81 464.17 219 -18.5 re
+ B*
+ 252.5 446.17 m
+ 252.5 464.17 l
+ S
+ BT
+ 10 0 0 10 111 452.67 Tm
+ 0 g
+ [(LockRecord \(LR\))-7363 (Lock \(01\))]TJ
+ 4.15 -1.85 TD
+ (30 bits)Tj
+ 11.1 0.1 TD
+ (2 bits)Tj
+ /N95 1 Tf
+ -18.25 3.44 TD
+ (LOCKED)Tj
+ /N92 1 Tf
+ 12 0 0 12 172.73 406 Tm
+ [(Figure 3. Possible states for an object\325)56 (s multi-use w)10 (ord)]TJ
+ /N95 1 Tf
+ 10 0 0 10 315 469.57 Tm
+ (BUSY)Tj
+ -23.4 6.3 TD
+ [(NEUTRAL)-19200 (WAITERS)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 12 12
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 303 34.17 Tm
+ 0 g
+ 0 Tc
+ 0 Tw
+ (9)Tj
+ -19.25 31.0417 TD
+ [(an)15 (y)-314 (state)-315 (other)-314 (than)]TJ
+ /N95 1 Tf
+ 8.2975 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.2708 0 TD
+ [(,)-315 (the)-315 (thread)-314 (has)-315 (acquired)-314 (the)-315 (meta-lock)-314 (and)-315 (may)-315 (proceed.)-314 (Ho)25 (we)25 (v)15 (e)0 (r)40 (,)-315 (if)]TJ
+ -10.5683 -1.1667 TD
+ [(the)-305 (returned)-305 (w)10 (ord\325)55 (s)-305 (l)0 (o)25 (w-order)-305 (bits)-305 (indicate)-305 (the)-305 (object)-305 (is)]TJ
+ /N95 1 Tf
+ 22.8733 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.2708 0 TD
+ [(,)-305 (then)-305 (some)-305 (other)-305 (thread)-305 (holds)-305 (the)]TJ
+ -25.1442 -1.1667 TD
+ [(meta-lock,)-307 (so)-307 (the)-307 (current)-306 (thread)-307 (in)40 (v)20 (o)0 (k)10 (e)0 (s)]TJ
+ /N95 1 Tf
+ 16.5733 0 TD
+ (getMetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 10.2 0 TD
+ [(.)-307 (I)0 (n)-307 (this)-307 (case,)-306 (the)-307 (threads)-307 (con-)]TJ
+ -26.7733 -1.1667 TD
+ [(tending)-237 (for)-236 (the)-236 (meta-lock)-236 (are)-236 (totally)-236 (ordered)-236 (by)-237 (the)-236 (order)-237 (in)-236 (which)-236 (the)-237 (sw)10 (ap)-236 (instructions)-236 (occurred.)]TJ
+ T*
+ [(The)-232 (\336rst)-231 (thread)-232 (in)-231 (this)-232 (order)-231 (kno)25 (ws,)-231 (since)-232 (it)-231 (acquired)-231 (the)-231 (meta-lock,)-231 (that)-232 (it)-231 (has)-231 (no)-232 (predecessor)40 (,)-231 (and)]TJ
+ T*
+ [(e)25 (v)15 (ery other thread kno)26 (ws its predecessor from the)]TJ
+ /N95 1 Tf
+ 20.1517 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [( in the w)10 (ord read by the sw)11 (ap.)]TJ
+ -21.3517 -1.75 TD
+ [(A)-328 (thread)-328 (acquires)-328 (the)-328 (meta-lock)-327 (to)-329 (perform)-327 (some)-328 (operation)-328 (on)-327 (the)-328 (synchronization)-327 (data.)-328 (At)-328 (the)]TJ
+ 0 -1.1667 TD
+ [(end)-248 (of)-248 (this)-247 (operation,)-248 (it)-247 (releases)-247 (the)-248 (meta-lock)-247 (and)-248 (sets)-247 (the)-248 (multi-use)-247 (w)9 (ord)-248 (of)-247 (the)-248 (object)-248 (to)-248 (a)-248 (v)25 (alue)]TJ
+ T*
+ [(appropriate)-315 (to)-314 (the)-315 (ne)25 (w)-315 (state)-315 (of)-314 (the)-315 (synchronization)-314 (data.)-315 (This)-315 (ne)25 (w)-315 (v)25 (alue)-315 (may)-315 (be)-314 (an)15 (y)-315 (non-)]TJ
+ /N95 1 Tf
+ 36.6 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ -36.6 -1.1667 TD
+ [(v)25 (alue;)-295 (the)-295 (operation)-295 (might)-295 (release)-296 (the)-295 (lock)-295 (and)-295 (restore)-296 (the)-295 (displaced)-295 (multi-use)-295 (w)10 (ord)-295 (bits)-295 (and)-296 (the)]TJ
+ /N95 1 Tf
+ T*
+ (NEUTRAL)Tj
+ /N92 1 Tf
+ 4.555 0 TD
+ [(lock)-355 (state,)-354 (or)-354 (it)-355 (might)-355 (change)-355 (the)-355 (queue)-354 (pointer)-354 (to)-355 (point)-354 (to)-355 (a)-354 (n)0 (e)25 (w)-355 (lock)-355 (record,)-355 (or)-354 (it)]TJ
+ -4.555 -1.1667 TD
+ [(might)-334 (lea)20 (v)15 (e)-334 (the)-335 (multi-use)-334 (w)10 (ord)-334 (unchanged.)-334 (In)-334 (an)15 (y)-334 (case,)-335 (call)-334 (this)-334 (ne)25 (w)-334 (multi-use)-334 (w)10 (ord)-334 (v)25 (alue)-335 (the)]TJ
+ /N94 1 Tf
+ T*
+ [(r)37 (elease)-293 (bits)]TJ
+ /N92 1 Tf
+ 4.8833 0 TD
+ [(of)-294 (the)-293 (operation.)-294 (T)80 (o)-293 (accomplish)-294 (the)-293 (meta-lock)-293 (release,)-294 (a)-293 (thread)-293 (uses)-293 (an)-293 (atomic)-294 (com-)]TJ
+ -4.8833 -1.1667 TD
+ [(pare-and-sw)11 (ap)-287 (\()]TJ
+ /N95 1 Tf
+ 6.4958 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 1.8 0 TD
+ [(\))-286 (operation)-287 (to)-286 (atomically)-287 (compare)-286 (the)-287 (current)-286 (contents)-287 (of)-286 (the)-287 (object\325)55 (s)-287 (multi-)]TJ
+ -8.2958 -1.1667 TD
+ [(use)-254 (w)10 (ord)-254 (with)-254 (what)-253 (it)-254 (had)-253 (written)-254 (there)-253 (\(i.e.,)-254 (its)]TJ
+ /N95 1 Tf
+ 19.22 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.4542 0 TD
+ [(and)-253 (the)]TJ
+ /N95 1 Tf
+ 3.1733 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.6542 0 TD
+ [(state\))-253 (and,)-254 (if)-253 (it)-254 (is)-254 (still)-254 (the)-254 (same,)]TJ
+ -26.5017 -1.1667 TD
+ [(write)-286 (the)-285 (release)-286 (bits.)-286 (If)-286 (the)-286 (comparison)-285 (f)11 (ails,)-286 (then)-285 (some)-286 (other)-286 (thread)-286 (has)-286 (attempted)-285 (to)-286 (obtain)-286 (the)]TJ
+ T*
+ [(meta-lock)-347 (and)-348 (is)-346 (no)25 (w)-347 (w)9 (aiting)-347 (for)-346 (its)-347 (turn.)-347 (In)-347 (this)-347 (case,)-347 (the)-347 (releasing)-346 (thread)-347 (will)-347 (\322hand)-347 (of)25 (f\323)-347 (the)]TJ
+ T*
+ [(meta-lock)-287 (to)-288 (the)-287 (ne)15 (xt)-288 (thread)-288 (in)-287 (the)-288 (order)-287 (induced)-287 (by)-287 (the)-288 (sw)10 (ap)-288 (operations,)-287 (by)-288 (calling)]TJ
+ /N95 1 Tf
+ 34.2 0 TD
+ (release-)Tj
+ -34.2 -1.1667 TD
+ (MetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 8.4 0 TD
+ [(.)-290 (The)-289 (aim)-290 (is)-290 (to)-290 (reach)-289 (the)-290 (state)-289 (that)-290 (w)10 (ould)-290 (ha)21 (v)15 (e)-290 (been)-289 (reached)-290 (if)-290 (the)-290 (releasing)]TJ
+ -8.4 -1.1667 TD
+ [(thread)-281 (had)-282 (completed)-281 (its)-282 (meta-lock)-281 (release,)-281 (writing)-282 (out)-281 (its)-282 (non-)]TJ
+ /N95 1 Tf
+ 25.5567 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.6817 0 TD
+ [(release)-281 (bits,)-282 (before)-281 (its)-282 (suc-)]TJ
+ -28.2383 -1.1667 TD
+ [(cessor)-429 (performed)-430 (its)-430 (atomic)-430 (sw)10 (ap)-430 (operation,)-429 (causing)-430 (that)-429 (operation)-429 (to)-430 (read)-430 (the)-430 (predecessor\325)56 (s)]TJ
+ T*
+ (release bits.)Tj
+ 0 -1.75 TD
+ [(The)-242 (main)-242 (complication)-241 (in)-241 (the)-241 (slo)25 (w-path)-241 (meta-lock)-241 (hand-of)25 (f)-242 (i)0 (s)-241 (that)-242 (each)-241 (thread)-241 (in)-242 (the)-241 (atomic)-241 (sw)10 (ap)]TJ
+ 0 -1.1667 TD
+ [(total)-304 (order)-304 (kno)25 (ws)-304 (the)-305 (identity)-304 (of)-304 (its)-304 (predecessor)40 (,)-304 (b)20 (ut)-304 (not)-304 (of)-304 (its)-304 (successor)56 (.)-305 (\(Note)-304 (that)-304 (the)-305 (changed)]TJ
+ 3.8617 44.6525 TD
+ [(Figure)-241 (4.)-241 (A)-241 (lock)-241 (record)-242 (and)-241 (ho)25 (w)-241 (the)15 (y)-241 (are)-241 (chained)-242 (out)-241 (of)-241 (the)-241 (multi-use)-241 (w)10 (ord)-241 (of)]TJ
+ 13.8192 -1 TD
+ (an object)Tj
+ ET
+ 0 G
+ 2 J
+ 0 j
+ 0.6 w
+ 3.86 M
+ []0 d
+ 315 711 54 -72 re
+ 369 693 m
+ 315 693 l
+ 369 675 m
+ 315 675 l
+ S
+ BT
+ /N95 1 Tf
+ 7 0 0 7 81 706.33 Tm
+ (typedef struct LockRecord_s LockRecord;)Tj
+ 0 -1.1428 TD
+ (struct LockRecord_s {)Tj
+ 1.2 -1.1429 TD
+ [(ExecEnv *owner;)-4200 (/* Owner thread.)-3600 (*/)]TJ
+ T*
+ [(int)-3600 (lockCount;)-1800 (/* # recursive locks. */)]TJ
+ T*
+ [(BitField storedBits;)-1200 (/* Hash and age.)-3000 ( */)]TJ
+ T*
+ [(LockRecord *queue;)-2400 (/* Lock queue on obj. */)]TJ
+ T*
+ [(LockRecord *nextFree; /* Free-list.)-5400 (*/)]TJ
+ -1.2 -1.1429 TD
+ (};)Tj
+ /N92 1 Tf
+ 10 0 0 10 323 700.17 Tm
+ (class ptr)Tj
+ -0.8 -7.017 TD
+ [(lock)10 (ed object)]TJ
+ ET
+ 0 J
+ 1.08 w
+ 395.12 696.43 m
+ 403.26 701.5 l
+ 393.66 701.51 l
+ 394.39 698.97 l
+ s
+ 395.12 696.43 m
+ 403.26 701.5 l
+ 393.66 701.51 l
+ 394.39 698.97 l
+ f*
+ 2 J
+ 0.6 w
+ 393.91 698.83 m
+ 342 684 l
+ 353.5 675 m
+ 353.5 693 l
+ S
+ BT
+ 10 0 0 10 357.5 680.5 Tm
+ (01)Tj
+ ET
+ 405 711 27 -27 re
+ S
+ BT
+ 10 0 0 10 405.46 675.67 Tm
+ (lock)Tj
+ ET
+ 0 J
+ 1.08 w
+ 440.88 695.24 m
+ 448.33 701.29 l
+ 438.81 700.11 l
+ 439.85 697.68 l
+ s
+ 440.88 695.24 m
+ 448.33 701.29 l
+ 438.81 700.11 l
+ 439.85 697.68 l
+ f*
+ 2 J
+ 0.6 w
+ 439.39 697.48 m
+ 423 690.5 l
+ S
+ BT
+ 10 0 0 10 405.46 665.67 Tm
+ (record)Tj
+ ET
+ 450 711 27 -27 re
+ S
+ BT
+ 10 0 0 10 450.46 675.67 Tm
+ (lock)Tj
+ ET
+ 0 J
+ 1.08 w
+ 485.88 695.24 m
+ 493.33 701.29 l
+ 483.81 700.11 l
+ 484.85 697.68 l
+ s
+ 485.88 695.24 m
+ 493.33 701.29 l
+ 483.81 700.11 l
+ 484.85 697.68 l
+ f*
+ 2 J
+ 0.6 w
+ 484.39 697.48 m
+ 468 690.5 l
+ S
+ BT
+ 10 0 0 10 450.46 665.67 Tm
+ (record)Tj
+ ET
+ 495 711 27 -27 re
+ S
+ BT
+ 10 0 0 10 495.46 675.67 Tm
+ (lock)Tj
+ 0 -1 TD
+ (record)Tj
+ /N95 1 Tf
+ 7 0 0 7 84.5 537.95 Tm
+ (BitField getMetaLock\(ExecEnv *ee, Object *obj\) {)Tj
+ 1.2 -2.2857 TD
+ (BitField busyBits = ee | BUSY;)Tj
+ 0 -1.1429 TD
+ (BitField lockBits =)Tj
+ 1.2 -1.1429 TD
+ (SWAP\(busyBits, multiUseWordAddr\(obj\)\);)Tj
+ -1.2 -1.1429 TD
+ (return getLockState\(lockBits\) != BUSY ?)Tj
+ 1.2 -1.1429 TD
+ (lockBits : getMetaLockSlow\(ee, lockBits\);)Tj
+ -2.4 -1.1429 TD
+ (})Tj
+ 31.9486 8 TD
+ (void releaseMetaLock\(ExecEnv *ee, Object *obj,)Tj
+ 12.6 -1.1429 TD
+ (BitField releaseBits\) {)Tj
+ -11.4 -1.1428 TD
+ (BitField busyBits = ee | BUSY;)Tj
+ T*
+ (BitField lockBits = CAS\(releaseBits, busyBits,)Tj
+ 14.4 -1.1429 TD
+ (multiUseWordAddr\(obj\)\);)Tj
+ -14.4 -1.1429 TD
+ (if \(lockBits != busyBits\))Tj
+ 1.2 -1.1429 TD
+ (releaseMetaLockSlow\(ee, releaseBits\);)Tj
+ -2.4 -1.1429 TD
+ (})Tj
+ /N92 1 Tf
+ 12 0 0 12 195.77 458.33 Tm
+ [(Figure 5. F)16 (ast paths for meta-lock operations)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 13 13
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (10)Tj
+ -19 56.4858 TD
+ [(multi-use)-242 (w)10 (ord)-242 (v)25 (alue)-242 (that)-242 (causes)-242 (the)-242 (f)10 (ast)-242 (path)-242 (of)-242 (meta-lock)-242 (release)-242 (to)-242 (f)11 (ail)-242 (is)]TJ
+ /N94 1 Tf
+ 30.2192 0 TD
+ (not)Tj
+ /N92 1 Tf
+ 1.52 0 TD
+ [(necessarily)-243 (that)-242 (of)]TJ
+ -31.7392 -1.1667 TD
+ [(the)-410 (releasing)-411 (thread\325)55 (s)-410 (successor;)-411 (se)25 (v)15 (eral)-411 (threads)-410 (may)-410 (ha)20 (v)15 (e)-411 (performed)-411 (sw)10 (aps)-410 (since)-411 (the)-411 (current)]TJ
+ T*
+ [(thread)-316 (acquired)-316 (the)-315 (meta-lock,)-316 (and)-316 (the)-316 (v)25 (alue)-316 (present)-316 (will)-316 (re\337ect)-316 (the)]TJ
+ /N95 1 Tf
+ 27.8608 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.5158 0 TD
+ [(of)-316 (the)-316 (last)-316 (such)-316 (thread.\))]TJ
+ -29.3767 -1.1667 TD
+ [(Because)-313 (of)-313 (this)-313 (asymmetry)65 (,)-313 (the)-313 (hand-of)25 (f)-313 (from)-313 (a)-313 (predecessor)-313 (to)-313 (its)-313 (successor)-313 (synchronizes)-312 (using)]TJ
+ T*
+ [(state)-332 (in)-331 (the)-332 (predecessor\325)56 (s)]TJ
+ /N95 1 Tf
+ 10.5467 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(.)-332 (A)0 (s)-331 (w)0 (e)-332 (s)0 (a)16 (w)-332 (in)-331 (Figure)-250 (1,)-332 (that)-332 (state)-331 (includes)-332 (a)-331 (mute)14 (x)-332 (and)-331 (condition)]TJ
+ -11.7467 -1.1667 TD
+ [(v)25 (ariable)-279 (pair)]TJ
+ /N95 1 Tf
+ 5.3092 0 TD
+ (metaLockMutex)Tj
+ /N92 1 Tf
+ 7.8 0 TD
+ 0 Tw
+ (/)Tj
+ /N95 1 Tf
+ 0.2783 0 TD
+ (metaLockCondvar)Tj
+ /N92 1 Tf
+ 8.96 0 TD
+ [(,)-279 (a)-279 (\336eld)-279 (to)-279 (record)-279 (the)-279 (successor\325)55 (s)]TJ
+ /N95 1 Tf
+ 13.4792 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(,)-279 (and)]TJ
+ -37.0267 -1.1667 TD
+ [(se)25 (v)15 (eral)-252 (booleans)-251 (used)-252 (to)-252 (coordinate)-251 (the)-252 (transfer)-252 (of)-252 (the)-252 (v)25 (alue)-252 (of)-251 (the)-252 (release)-252 (bits.)-252 (The)-252 (mute)15 (x)-253 (i)0 (s)-251 (used)]TJ
+ T*
+ [(to)-271 (ensure)-271 (that)-272 (the)-270 (threads)-271 (participating)-271 (in)-271 (the)-270 (hand-of)25 (f)-271 (update)-271 (the)-271 (other)-271 (\336elds)-271 (in)-271 (the)-270 (correct)-271 (order)55 (.)]TJ
+ T*
+ [(The)-310 (condition)-310 (v)25 (ariable)-310 (is)-310 (used)-310 (to)-309 (block)-310 (whiche)25 (v)15 (e)0 (r)-310 (thread)-310 (enters)-310 (the)-310 (hand-of)25 (f)-310 (\336rst)-311 (until)-309 (the)-310 (other)]TJ
+ T*
+ (thread is ready to complete the transaction.)Tj
+ 0 -1.75 TD
+ [(The)-247 (hand-of)25 (f)-248 (protocol)-248 (proceeds)-247 (in)-248 (one)-248 (of)-248 (tw)10 (o)-247 (w)9 (ays,)-248 (as)-248 (sho)25 (wn)-248 (in)-248 (Figure)-250 (6.)-247 (The)-248 (predecessor)-247 (thread)]TJ
+ 0 -1.1667 TD
+ [(releasing)-238 (the)-239 (meta-lock)-239 (and)-238 (the)-239 (successor)-239 (thread)-238 (attempting)-239 (to)-239 (acquire)-239 (it)-238 (\322race\323)-239 (to)-239 (acquire)]TJ
+ /N95 1 Tf
+ 36 0 TD
+ (meta-)Tj
+ -36 -1.1667 TD
+ (LockMutex)Tj
+ /N92 1 Tf
+ 5.63 0 TD
+ [(in)-230 (the)-230 (predecessor)-231 (thread\325)55 (s)]TJ
+ /N95 1 Tf
+ 10.8075 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(.)-231 (I)0 (f)-230 (the)-230 (predecessor)-231 (thread)-230 (wins)-230 (the)-230 (race,)-231 (it)-230 (will)-231 (set)-231 (the)]TJ
+ /N95 1 Tf
+ -17.6375 -1.1667 TD
+ (bitsForGrab)Tj
+ /N92 1 Tf
+ 6.8858 0 TD
+ [(\336eld)-286 (in)-285 (its)]TJ
+ /N95 1 Tf
+ 4.3583 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.4858 0 TD
+ (to)Tj
+ /N95 1 Tf
+ 1.0642 0 TD
+ (TRUE)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(.)-286 (I)0 (f)-286 (the)-286 (successor)-285 (thread)-286 (wins)-286 (the)-285 (race,)-287 (it)-286 (will)-286 (change)-286 (the)]TJ
+ /N95 1 Tf
+ -16.1942 -1.1667 TD
+ (succEE)Tj
+ /N92 1 Tf
+ 3.9225 0 TD
+ [(\336eld)-322 (of)-322 (its)-322 (predecessor\325)55 (s)]TJ
+ /N95 1 Tf
+ 10.2308 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.5225 0 TD
+ [(from)-322 (the)-322 (def)10 (ault)-322 (v)25 (alue)-322 (of)]TJ
+ /N95 1 Tf
+ 10.5175 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.7217 0 TD
+ [(to)-323 (the)-321 (address)-323 (of)-322 (its)-322 (o)25 (w)0 (n)]TJ
+ /N95 1 Tf
+ -28.915 -1.1667 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(.)-303 (Thus,)-302 (each)-303 (thread)-303 (may)-303 (determine)-302 (whether)-302 (it)-302 (w)9 (o)0 (n)-302 (the)-303 (race)-302 (by)-302 (noting)-302 (whether)-303 (the)-302 (competitor)]TJ
+ -1.2 -1.1667 TD
+ (has made the corresponding change.)Tj
+ /N94 1 Tf
+ 0 -1.75 TD
+ [(Case)-238 (1:)-239 (successor)-238 (\(acquiring\))-238 (thr)37 (ead)-238 (wins)-238 (r)16 (ace)15 (.)]TJ
+ /N92 1 Tf
+ 19.35 0 TD
+ [(When)-239 (the)-238 (successor)-239 (thread)-238 (obtains)-238 (the)-238 (mute)15 (x)-238 (and)]TJ
+ -19.35 -1.1667 TD
+ [(its)-228 (predecessor\325)56 (s)]TJ
+ /N95 1 Tf
+ 6.7883 0 TD
+ (bitsForGrab)Tj
+ /N92 1 Tf
+ 6.8283 0 TD
+ [(\336eld)-228 (is)]TJ
+ /N95 1 Tf
+ 2.9017 0 TD
+ (FALSE)Tj
+ /N92 1 Tf
+ 3 0 TD
+ [(,)-227 (i)0 (t)-229 (kno)25 (ws)-228 (it)-228 (acquired)-228 (the)-228 (mute)15 (x)-228 (before)-228 (the)-228 (prede-)]TJ
+ -19.5183 -1.1667 TD
+ [(cessor)55 (.)-247 (I)0 (n)-247 (this)-247 (e)25 (v)15 (ent,)-247 (it)-247 (updates)-247 (the)-247 (predecessors\325)55 (s)]TJ
+ /N95 1 Tf
+ 19.9342 0 TD
+ (succEE)Tj
+ /N92 1 Tf
+ 3.6 0 TD
+ [(,)-247 (and)-248 (w)10 (aits)-248 (for)-246 (the)-247 (predecessor)-247 (to)-247 (com-)]TJ
+ -23.5342 -1.1667 TD
+ [(plete)-241 (the)-240 (transaction.)-240 (When)-241 (the)-240 (predecessor)-241 (acquires)-240 (the)-240 (mute)15 (x,)-241 (it)-241 (notes)-241 (from)-241 (the)-240 (non-)]TJ
+ /N95 1 Tf
+ 34.2183 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.6408 0 TD
+ [(v)25 (alue)]TJ
+ -36.8592 -1.1667 TD
+ [(in)-274 (its)]TJ
+ /N95 1 Tf
+ 2.2725 0 TD
+ (succEE)Tj
+ /N92 1 Tf
+ 3.875 0 TD
+ [(\336eld)-274 (that)-275 (the)-275 (successor)-274 (went)-274 (\336rst,)-275 (and)-275 (therefore)-275 (completes)-274 (the)-275 (meta-lock)-274 (hand-of)25 (f)]TJ
+ -6.1475 -1.1667 TD
+ [(by)-317 (setting)-318 (the)-318 (successor\325)55 (s)]TJ
+ /N95 1 Tf
+ 10.6592 0 TD
+ (metaLockBits)Tj
+ /N92 1 Tf
+ 7.5175 0 TD
+ [(to)-318 (the)-318 (release)-318 (bits,)-317 (setting)]TJ
+ /N95 1 Tf
+ 10.7275 0 TD
+ (gotMetaLockSlow)Tj
+ /N92 1 Tf
+ 9.3175 0 TD
+ (to)Tj
+ -38.2217 -1.1667 TD
+ [(indicate)-313 (that)-313 (those)-313 (bits)-313 (are)-314 (v)25 (alid,)-313 (and)-313 (w)10 (aking)-313 (the)-314 (successor)-313 (by)-313 (signalling)]TJ
+ /N95 1 Tf
+ 29.805 0 TD
+ (metaLockCondvar)Tj
+ /N92 1 Tf
+ 8.945 0 TD
+ (.)Tj
+ -38.75 -1.1667 TD
+ [(Finally)65 (,)-314 (the)-314 (predecessor)-315 (releases)-314 (the)-314 (mute)15 (x,)-314 (allo)25 (wing)-314 (the)-315 (successor)-314 (to)-314 (continue,)-314 (ha)20 (ving)-314 (acquired)]TJ
+ T*
+ (the meta-lock.)Tj
+ /N94 1 Tf
+ 0 -1.75 TD
+ [(Case)-292 (2:)-291 (pr)37 (edecessor)-292 (\(r)37 (eleasing\))-290 (thr)37 (ead)-292 (wins)-291 (r)15 (ace)15 (.)]TJ
+ /N92 1 Tf
+ 20.4233 0 TD
+ [(Here)-292 (the)-291 (predecessor)-291 (thread)-292 (determines)-291 (that)-292 (it)]TJ
+ -20.4233 -1.1667 TD
+ [(acquired)-272 (the)-272 (mute)14 (x)-272 (\336rst)-272 (by)-272 (noting)-272 (that)-272 (its)]TJ
+ /N95 1 Tf
+ 16.885 0 TD
+ (succEE)Tj
+ /N92 1 Tf
+ 3.8725 0 TD
+ [(\336eld)-272 (is)-272 (still)]TJ
+ /N95 1 Tf
+ 4.7625 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(.)-272 (I)0 (t)-272 (does)-272 (not)-273 (kno)25 (w)-272 (the)-272 (iden-)]TJ
+ -27.92 -1.1667 TD
+ [(tity)-329 (of)-329 (its)-329 (successor)41 (,)-329 (b)20 (ut)-329 (it)-329 (kno)25 (ws)-329 (that)-329 (the)-329 (successor)-329 (kno)25 (ws)-329 (its)-329 (identity)65 (.)-329 (Thus,)-328 (it)-329 (sets)-329 (the)]TJ
+ /N95 1 Tf
+ 36 0 TD
+ (meta-)Tj
+ -36 -1.1667 TD
+ (LockBits)Tj
+ /N92 1 Tf
+ 5.1058 0 TD
+ [(\336eld)-307 (of)-306 (its)]TJ
+ /N95 1 Tf
+ 4.475 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.5067 0 TD
+ [(to)-306 (the)-306 (proper)-306 (release)-306 (bits)-306 (v)25 (alue,)-306 (and)-306 (sets)-307 (the)]TJ
+ /N95 1 Tf
+ 18.1442 0 TD
+ (bitsForGrab)Tj
+ /N92 1 Tf
+ 6.9058 0 TD
+ [(\336eld)-306 (to)]TJ
+ /N95 1 Tf
+ -36.1375 -1.1667 TD
+ (TRUE)Tj
+ /N92 1 Tf
+ 2.625 0 TD
+ [(to)-226 (indicate)-225 (that)-226 (those)-226 (bits)-225 (are)-226 (v)25 (alid,)-226 (and)-225 (w)10 (aits)-225 (for)-226 (the)-225 (successor)-225 (to)-225 (read)-226 (the)-225 (bits)-225 (\(releasing)-226 (the)]TJ
+ -2.625 -1.1667 TD
+ [(mute)15 (x)-264 (i)0 (n)-264 (the)-265 (process\).)-264 (The)-264 (successor)-264 (thread)-264 (obtains)-265 (the)-264 (mute)15 (x,)-265 (sees)-264 (that)-265 (its)-264 (predecessor\325)55 (s)]TJ
+ /N95 1 Tf
+ 36 0 TD
+ (bits-)Tj
+ -36 -1.1667 TD
+ (ForGrab)Tj
+ /N92 1 Tf
+ 4.5008 0 TD
+ (is)Tj
+ /N95 1 Tf
+ 0.9675 0 TD
+ (TRUE)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(,)-301 (and)-300 (thus)-300 (realizes)-301 (that)-301 (it)-301 (has)-300 (acquired)-300 (the)-300 (mute)15 (x)-301 (second,)-300 (and)-301 (that)-301 (the)-300 (release)]TJ
+ -7.8683 -1.1667 TD
+ [(bits)-243 (are)-243 (a)20 (v)25 (ailable)-243 (in)-244 (its)-242 (predecessor\325)55 (s)]TJ
+ /N95 1 Tf
+ 14.8008 0 TD
+ (metaLockBits)Tj
+ /N92 1 Tf
+ 7.4433 0 TD
+ [(\336eld.)-243 (It)-243 (copies)-243 (those)-244 (bits,)-242 (resets)-244 (the)-243 (prede-)]TJ
+ -22.2442 -1.1667 TD
+ [(cessor\325)55 (s)]TJ
+ /N95 1 Tf
+ 3.4392 0 TD
+ (bitsForGrab)Tj
+ /N92 1 Tf
+ 6.8733 0 TD
+ [(to)-274 (the)-273 (def)10 (ault)-273 (v)25 (alue)-273 (of)]TJ
+ /N95 1 Tf
+ 9.1075 0 TD
+ (FALSE)Tj
+ /N92 1 Tf
+ 3.2733 0 TD
+ [(to)-273 (indicate)-274 (that)-272 (the)-274 (hand-of)25 (f)-273 (i)0 (s)-274 (complete,)]TJ
+ -22.6933 -1.1667 TD
+ [(signals)-426 (its)-426 (predecessor\325)55 (s)-426 (condition)-426 (v)25 (ariable)-426 (to)-426 (inform)-425 (it)-426 (of)-426 (that)-426 (f)10 (act,)-426 (and,)-426 (\336nally)65 (,)-426 (releases)-426 (the)]TJ
+ T*
+ [(mute)15 (x.)]TJ
+ 0 -1.75 TD
+ [(The)-317 (meta-lock)-317 (protocol)-317 (guarantees)-316 (that)-317 (threads)-316 (obtain)-317 (the)-316 (meta-lock)-317 (in)-317 (the)-317 (order)-317 (determined)-317 (by)]TJ
+ 0 -1.1667 TD
+ [(the)-240 (e)16 (x)15 (ecution)-239 (of)-239 (the)-240 (atomic)-239 (sw)9 (ap)-239 (operations.)-239 (A)-240 (thread)-239 (need)-239 (only)-239 (w)9 (ait)-239 (for)-239 (threads)-239 (ahead)-240 (of)-239 (it)-240 (in)-239 (the)]TJ
+ T*
+ [(sw)10 (ap)-254 (order)40 (,)-253 (s)0 (o)-254 (i)0 (f)-254 (n)0 (o)-253 (thread)-254 (blocks)-253 (inde\336nitely)-254 (while)-254 (holding)-254 (the)-254 (meta-lock,)-254 (all)-253 (threads)-254 (attempting)]TJ
+ T*
+ [(to acquire the meta-lock will e)26 (v)15 (entually succeed.)]TJ
+ 0 -1.75 TD
+ [(Armed)-300 (with)-299 (this)-299 (meta-lock,)-299 (we)-299 (no)25 (w)-300 (proceed)-299 (to)-299 (implement)-298 (the)-300 (monitor)-299 (operations:)-299 (lock,)-300 (unlock,)]TJ
+ 0 -1.1667 TD
+ [(w)10 (ait,)-445 (and)-444 (notify)65 (.)-444 (Because)-444 (the)-445 (meta-lock)-444 (arbitrates)-445 (access)-444 (among)-445 (contending)-444 (threads,)-444 (we)-444 (can)]TJ
+ T*
+ [(implement)-323 (monitor)-323 (operations)-323 (using)-324 (a)-324 (number)-323 (of)-323 (dif)25 (ferent)-324 (data)-323 (structures)-323 (and)-323 (of)25 (fer)-323 (a)-323 (v)25 (ariety)-323 (of)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 14 14
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (11)Tj
+ -19 29.6525 TD
+ [(semantics)-329 ([7].)-329 (W)80 (e)-329 (ha)20 (v)15 (e)-329 (chosen)-329 (an)-329 (implementation)-328 (that)-329 (uses)-329 (a)-329 (simple)-329 (link)9 (ed)-328 (list)-329 (of)-329 (lock)-329 (records)]TJ
+ 0 -1.1667 TD
+ 0 Tw
+ [(and gi)25 (v)15 (es equal preference to a)16 (w)10 (ak)10 (ened w)10 (aiters and ne)26 (wly arri)25 (v)15 (ed threads.)]TJ
+ /N91 1 Tf
+ 14 0 0 14 72 343.67 Tm
+ (4.3 Locking and unlocking objects)Tj
+ /N92 1 Tf
+ 12 0 0 12 72 319 Tm
+ [(Acquiring)-379 (and)-379 (releasing)-379 (the)-380 (monitor)21 (-lock)-379 (of)-379 (an)-379 (object)-378 (corresponds)-379 (to)-379 (entering)-379 (and)-379 (e)15 (xiting)-379 (the)]TJ
+ T*
+ [(object\325)55 (s)-359 (monitor)55 (.)-359 (Figure)-250 (7)-360 (sho)25 (ws)-359 (the)-360 (f)10 (ast-path)-359 (implementation)-359 (for)-360 (these)-359 (operations.)-359 (Most)-360 (com-)]TJ
+ T*
+ [(monly)65 (,)-279 (the)-279 (object)-279 (being)-279 (monitor)21 (-lock)10 (ed)-279 (is)-279 (either)-279 (unlock)10 (ed\321in)-279 (a)]TJ
+ /N95 1 Tf
+ 26.0975 0 TD
+ (NEUTRAL)Tj
+ /N92 1 Tf
+ 4.4783 0 TD
+ (or)Tj
+ /N95 1 Tf
+ 1.1125 0 TD
+ (WAITERS)Tj
+ /N92 1 Tf
+ 4.4783 0 TD
+ (state\321)Tj
+ -36.1667 -1.1667 TD
+ [(or)-349 (being)-350 (lock)10 (ed)-350 (recursi)25 (v)15 (ely)65 (.)-350 (I)0 (n)-350 (these)-350 (cases,)-350 (the)-350 (locking)-350 (thread)-350 (simply)-349 (updates)-350 (the)-350 (object\325)55 (s)-350 (syn-)]TJ
+ T*
+ [(chronization)-360 (data;)-360 (it)-360 (need)-359 (not)-360 (interact)-360 (with)-359 (other)-360 (threads.)-360 (Lik)10 (e)25 (wise,)-359 (when)-360 (unlocking)-360 (an)-360 (object,)]TJ
+ T*
+ [(there)-269 (are)-269 (tw)10 (o)-269 (cases)-269 (that)-269 (in)40 (v)20 (olv)16 (e)-269 (n)0 (o)-269 (interaction)-269 (with)-269 (other)-269 (threads:)-270 (the)-269 (unlocking)-269 (thread)-269 (has)-269 (recur-)]TJ
+ T*
+ [(si)25 (v)15 (ely)-280 (lock)10 (ed)-279 (the)-280 (object,)-279 (in)-279 (which)-279 (case)-279 (it)-280 (simply)-279 (decrements)-279 (the)-280 (lock)-280 (count;)-279 (or)-279 (there)-279 (are)-280 (no)-279 (other)]TJ
+ T*
+ [(threads)-272 (attempting)-272 (to)-273 (acquire)-272 (a)-272 (singly-held)-272 (lock,)-272 (in)-272 (which)-273 (case)-272 (it)-272 (restores)-271 (the)-272 (displaced)-272 (multi-use)]TJ
+ T*
+ [(w)10 (ord v)25 (alue, which has the)]TJ
+ /N95 1 Tf
+ 10.685 0 TD
+ (NEUTRAL)Tj
+ /N92 1 Tf
+ 4.2 0 TD
+ ( lock state.)Tj
+ -14.885 -1.75 TD
+ [(The)-332 (remaining)-332 (cases)-332 (in)40 (v)20 (olv)16 (e)-333 (threads)-333 (contending)-332 (for)-332 (the)-332 (monitor)20 (-lock;)-332 (see)-333 (Figure)-250 (8.)-332 (Much)-333 (as)-332 (in)]TJ
+ 0 -1.1667 TD
+ [(meta-lock)-244 (hand-of)25 (f,)-244 (we)-245 (use)-244 (a)-244 (per)20 (-thread)-245 (mute)15 (x)-244 (and)-244 (condition)-244 (v)25 (ariable)-245 (to)-244 (coordinate)-244 (acquiring)-244 (and)]TJ
+ T*
+ [(releasing)-356 (threads.)-355 (When)-355 (a)-355 (thread)-356 (attempts)-355 (to)-356 (acquire)-355 (a)-355 (monitor)20 (-lock)-355 (b)20 (u)0 (t)-356 (\336nds)-355 (it)-356 (lock)10 (ed,)-355 (it)-356 (sus-)]TJ
+ T*
+ [(pends)-232 (on)-232 (a)-232 (condition)-233 (v)25 (ariable)-232 (in)-232 (its)-232 (o)25 (w)0 (n)]TJ
+ /N95 1 Tf
+ 16.0292 0 TD
+ (EE)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(,)-232 (w)10 (aiting)-232 (to)-232 (be)-233 (signalled)-232 (by)-232 (a)-233 (lock-releasing)-232 (thread)-232 (that)]TJ
+ -17.2292 -1.1667 TD
+ [(it)-285 (should)-285 (re-attempt)-285 (the)-285 (acquisition.)-285 (When)-284 (the)-285 (acquiring)-284 (thread)-285 (recei)25 (v)15 (e)0 (s)-284 (this)-285 (signal,)-285 (it)-285 (repeats)-285 (the)]TJ
+ T*
+ [(lock-acquisition)-250 (slo)25 (w)-250 (path:)-250 (it)-251 (acquires)-249 (the)-250 (object\325)55 (s)-250 (meta-lock)-250 (and)-250 (checks)-250 (the)-250 (object\325)55 (s)-250 (lock)-250 (state.)-250 (If)]TJ
+ T*
+ [(the)-384 (state)-384 (is)-385 (no)25 (w)-384 (dif)25 (ferent)-384 (from)]TJ
+ /N95 1 Tf
+ 13.0842 0 TD
+ (LOCKED)Tj
+ /N92 1 Tf
+ 3.6 0 TD
+ [(,)-384 (i)0 (t)-384 (adjusts)-384 (the)-384 (synchronization)-383 (data)-384 (to)-384 (indicate)-384 (that)-384 (it)]TJ
+ -16.6842 -1.1667 TD
+ [(holds)-267 (the)-267 (monitor)20 (-lock)-267 (and)-267 (releases)-267 (the)-267 (meta-lock;)-267 (if)-267 (the)-268 (state)-267 (is)]TJ
+ /N95 1 Tf
+ 25.9725 0 TD
+ (LOCKED)Tj
+ /N92 1 Tf
+ 3.6 0 TD
+ [(,)-268 (the)-267 (thread)-268 (releases)-267 (the)]TJ
+ -29.5725 -1.1667 TD
+ [(meta-lock and w)10 (aits again.)]TJ
+ /N95 1 Tf
+ 8 0 0 8 309 705.67 Tm
+ (void releaseMetaLockSlow\(ExecEnv *ee,)Tj
+ 15 -1.25 TD
+ [(BitField)-544 (releaseBits\))-544 ({)]TJ
+ -13.8 -1.25 TD
+ (/* We are in a race with our successor to)Tj
+ 1.8 -1.25 TD
+ (lock ee->metaLockMutex; the winner of)Tj
+ T*
+ (the race waits for the loser. */)Tj
+ -1.8 -1.25 TD
+ (mutexLock\(&ee->metaLockMutex\);)Tj
+ T*
+ (if \(ee->succEE\) {)Tj
+ 1.2 -1.25 TD
+ (/* Lost the race: */)Tj
+ T*
+ (assert\(!ee->succEE->bitsForGrab\);)Tj
+ T*
+ (assert\(!ee->bitsForGrab\);)Tj
+ T*
+ (assert\(!ee->succEE->gotMetaLockSlow\);)Tj
+ T*
+ [(ee->succEE->metaLockBits)-2400 (= releaseBits;)]TJ
+ T*
+ (ee->succEE->gotMetaLockSlow = TRUE;)Tj
+ T*
+ (ee->succEE = NULL;)Tj
+ T*
+ (condvarSignal\(&ee->metaLockCondvar\);)Tj
+ -1.2 -1.25 TD
+ (} else {)Tj
+ 1.2 -1.25 TD
+ (/* Won the race: */)Tj
+ T*
+ (ee->metaLockBits = releaseBits;)Tj
+ T*
+ [(ee->bitsForGrab)-1200 (= TRUE;)]TJ
+ T*
+ (do {)Tj
+ 1.2 -1.25 TD
+ (condvarWait\(&ee->metaLockCondvar,)Tj
+ 7.2 -1.25 TD
+ (&ee->metaLockMutex\);)Tj
+ -8.4 -1.25 TD
+ (} while \(ee->bitsForGrab\);)Tj
+ -1.2 -1.25 TD
+ (})Tj
+ T*
+ (mutexUnlock\(&ee->metaLockMutex\);)Tj
+ -1.2 -1.25 TD
+ (})Tj
+ -29.125 31.25 TD
+ (BitField getMetaLockSlow\(ExecEnv *ee,)Tj
+ 15 -1.25 TD
+ (BitField predBits\) {)Tj
+ -13.8 -1.25 TD
+ (BitField bits;)Tj
+ T*
+ (ExecEnv *predEE = busyEE\(predBits\);)Tj
+ T*
+ (assert\(getLockState\(predBits\) == BUSY\);)Tj
+ T*
+ (mutexLock\(&predEE->metaLockMutex\);)Tj
+ T*
+ (if \(!predEE->bitsForGrab\) {)Tj
+ 1.2 -1.25 TD
+ (/* Won the race: */)Tj
+ T*
+ (predEE->succEE = ee;)Tj
+ T*
+ (do {)Tj
+ 1.2 -1.25 TD
+ (condvarWait\(&predEE->metaLockCondvar,)Tj
+ 7.2 -1.25 TD
+ (&predEE->metaLockMutex\);)Tj
+ -8.4 -1.25 TD
+ (} while \(!ee->gotMetaLockSlow\);)Tj
+ T*
+ (ee->gotMetaLockSlow = FALSE;)Tj
+ T*
+ (bits = ee->metaLockBits;)Tj
+ -1.2 -1.25 TD
+ (} else {)Tj
+ 1.2 -1.25 TD
+ (/* Lost the race: */)Tj
+ T*
+ (bits = predEE->metaLockBits;)Tj
+ T*
+ (predEE->bitsForGrab = FALSE;)Tj
+ T*
+ (condvarSignal\(&predEE->metaLockCondvar\);)Tj
+ -1.2 -1.25 TD
+ (})Tj
+ T*
+ (mutexUnlock\(&predEE->metaLockMutex\);)Tj
+ T*
+ (return bits;)Tj
+ -1.2 -1.25 TD
+ (})Tj
+ /N92 1 Tf
+ 12 0 0 12 196 433.67 Tm
+ [(Figure 6. Slo)25 (w paths for meta-lock operations)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 15 15
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (12)Tj
+ -19 12.5967 TD
+ [(T)80 (o)-248 (release)-247 (a)-248 (contended)-248 (monitor)21 (-lock,)-247 (a)-248 (thread)-248 (\336rst)-247 (obtains)-248 (the)-248 (meta-lock.)-247 (Then)-248 (it)-247 (remo)15 (v)15 (e)0 (s)-248 (its)-248 (o)25 (w)0 (n)]TJ
+ 0 -1.1667 TD
+ [(lock)-341 (record)-342 (from)-342 (the)-341 (queue.)-342 (Subsequently)66 (,)-342 (i)0 (t)-341 (calls)]TJ
+ /N95 1 Tf
+ 20.7758 0 TD
+ (wakeupEE\(\))Tj
+ /N92 1 Tf
+ 6.3417 0 TD
+ [(to)-341 (\336nd)-341 (the)-342 (\336rst)-341 (thread)-342 (on)-342 (the)]TJ
+ -27.1175 -1.1667 TD
+ [(lock)-308 (queue)-308 (that)-307 (is)-308 (w)10 (aiting)-308 (to)-309 (acquire)-307 (the)-308 (lock.)-308 (If)-308 (there)-308 (is)-308 (such)-308 (a)-308 (thread,)-308 (it)-308 (is)-308 (signalled.)-307 (Then,)-308 (the)]TJ
+ T*
+ [(releasing)-330 (thread)-330 (performs)-331 (a)-330 (meta-lock)-330 (release)-331 (to)-329 (write)-331 (out)-330 (the)-330 (shortened)-330 (lock)-330 (queue)-330 (and)-330 (set)-331 (the)]TJ
+ T*
+ [(lock)-280 (state)-280 (to)]TJ
+ /N95 1 Tf
+ 5.175 0 TD
+ (WAITERS)Tj
+ /N92 1 Tf
+ 4.2 0 TD
+ [(.)-280 (\()0 (W)80 (e)-280 (ha)20 (v)15 (e)-280 (elided)-281 (code)-280 (that)-281 (optimizes)-280 (a)15 (w)10 (ay)-280 (redundant)-281 (signalling)-280 (on)-281 (w)10 (ait-)]TJ
+ -9.375 -1.1667 TD
+ [(ing)-245 (threads.\))-245 (Thus,)-245 (at)-245 (the)-245 (monitor)20 (-lock)-245 (le)25 (v)15 (el,)-245 (unlik)10 (e)-245 (the)-245 (meta-lock)-245 (le)25 (v)15 (el,)-245 (we)-245 (do)-245 (not)-245 (use)-244 (a)-245 (hand-of)25 (f:)]TJ
+ T*
+ [(the)-238 (releasing)-238 (thread)-238 (does)-238 (not)-239 (gi)26 (v)14 (e)-238 (the)-238 (monitor)20 (-lock)-238 (to)-238 (a)-238 (w)10 (aiting)-239 (thread)-238 (b)20 (u)0 (t)-238 (merely)-238 (in)40 (vites)-238 (the)-238 (w)10 (ait-)]TJ
+ T*
+ 0 Tw
+ (ing thread to re-attempt the acquisition.)Tj
+ /N95 1 Tf
+ 7 0 0 7 80.71 710.55 Tm
+ (bool_t monitorEnter\(ExecEnv *ee, Object *obj\) {)Tj
+ 1.2 -1.1429 TD
+ [(BitField)-1201 (r)-3000 (=)0 ( getMetaLock\(ee, obj\);)]TJ
+ T*
+ (LockState state = lockState\(r\);)Tj
+ T*
+ (if \(state == NEUTRAL\) {)Tj
+ 1.2 -1.1429 TD
+ (/* Establish locking by this thread. */)Tj
+ T*
+ (LockRecord *lr = allocLockRecord\(ee\);)Tj
+ T*
+ (lr->storedBits = r;)Tj
+ T*
+ (releaseMetaLock\(ee, obj, lr | LOCKED\);)Tj
+ -1.2 -1.1428 TD
+ (} else if \(state == LOCKED\) {)Tj
+ 1.2 -1.1429 TD
+ (LockRecord *ownerLR = lockRecord\(r\);)Tj
+ T*
+ (if \(ownerLR->owner == ee\) {)Tj
+ 1.2014 -1.1429 TD
+ (/* Recursive locking. */)Tj
+ T*
+ (ownerLR->lockCount++;)Tj
+ T*
+ (releaseMetaLock\(ee, obj, r\);)Tj
+ -1.2014 -1.1429 TD
+ (} else {)Tj
+ 1.2014 -1.1429 TD
+ (LockRecord *lr = allocLockRecord\(ee\);)Tj
+ T*
+ (ownerLR->queue = appendToQueue\(ownerLR->queue,)Tj
+ 18.6 -1.1428 TD
+ (lr\);)Tj
+ -18.6 -1.1429 TD
+ (monitorEnterSlow\(ee, obj, r\);)Tj
+ -1.2014 -1.1429 TD
+ (})Tj
+ -1.2 -1.1429 TD
+ (} else if \(state == WAITERS\) {)Tj
+ 1.2 -1.1429 TD
+ (/* obj is unlocked but has threads waiting)Tj
+ 1.8 -1.1429 TD
+ (for notification. */)Tj
+ -1.8 -1.1429 TD
+ (LockRecord *lr = allocLockRecord\(ee\);)Tj
+ T*
+ (LockRecord *firstWaiterLR = lockRecord\(r\);)Tj
+ T*
+ [(lr->queue)-3600 (= firstWaiterLR;)]TJ
+ T*
+ (lr->storedBits = firstWaiterLR->storedBits;)Tj
+ T*
+ (releaseMetaLock\(ee, obj, lr | LOCKED\);)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ T*
+ (return TRUE;)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ 33.47 34.3871 TD
+ (bool_t monitorExit\(ExecEnv *ee, Object *obj\) {)Tj
+ 1.2 -1.1429 TD
+ [(BitField)-2400 (r)-4200 (=)0 ( getMetaLock\(ee, obj\);)]TJ
+ T*
+ (LockRecord *ownerLR = lockRecord\(r\);)Tj
+ T*
+ [(LockState)-1800 (state)-1800 (= lockState\(r\);)]TJ
+ T*
+ (if \(state == LOCKED && ownerLR->owner == ee\) {)Tj
+ 1.2 -1.1429 TD
+ (assert\(ownerLR->lockCount >= 1\);)Tj
+ T*
+ (if \(ownerLR->lockCount == 1\) {)Tj
+ 1.2 -1.1429 TD
+ (/* Last release: will not have lock)Tj
+ 1.8 -1.1429 TD
+ (after this operation. */)Tj
+ -1.8 -1.1429 TD
+ (if \(ownerLR->queue == NULL\) {)Tj
+ 1.2 -1.1429 TD
+ (/* No-one waiting. */)Tj
+ T*
+ (assert\(lockState\(ownerLR->storedBits\))Tj
+ 4.8 -1.1429 TD
+ (== NEUTRAL\);)Tj
+ -4.8 -1.1429 TD
+ (releaseMetaLock\(ee, obj,)Tj
+ 9.6 -1.1429 TD
+ (ownerLR->storedBits\);)Tj
+ -10.8 -1.1429 TD
+ (} else {)Tj
+ 1.2 -1.1429 TD
+ (/* There is a queue. Release)Tj
+ 1.8 -1.1429 TD
+ (with wakeup call. */)Tj
+ -1.8 -1.1429 TD
+ (ownerLR->queue->storedBits =)Tj
+ 12 -1.1429 TD
+ (ownerLR->storedBits;)Tj
+ -12 -1.1429 TD
+ (monitorExitSlow\(ee, obj, ownerLR->queue\);)Tj
+ T*
+ (ownerLR->queue = NULL;)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ T*
+ (recycleLockRecord\(ee, ownerLR\);)Tj
+ -1.2 -1.1429 TD
+ (} else {)Tj
+ 1.2 -1.1429 TD
+ (/* Still has lock after this. */)Tj
+ T*
+ (ownerLR->lockCount--;)Tj
+ T*
+ (releaseMetaLock\(ee, obj, r\);)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ -1.2 -1.1429 TD
+ (} else {)Tj
+ 1.2 -1.1429 TD
+ (releaseMetaLock\(ee, obj, r\);)Tj
+ T*
+ (throwIllegalMonitorStateException\(\);)Tj
+ T*
+ (return FALSE;)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ T*
+ (return TRUE;)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ /N92 1 Tf
+ 12 0 0 12 191.05 413.5 Tm
+ [(Figure 7. F)15 (ast paths for monitor)20 (-lock operations)]TJ
+ /N95 1 Tf
+ 7 0 0 7 81 368.43 Tm
+ (void monitorEnterSlow\(ExecEnv *ee, Object *obj,)Tj
+ 13.2 -1.1429 TD
+ (BitField r\) {)Tj
+ -12 -1.1429 TD
+ (LockRecord *lr;)Tj
+ T*
+ (while \(lockState\(r\) == LOCKED\) {)Tj
+ 1.2 -1.1429 TD
+ (mutexLock\(&ee->monitorLockMutex\);)Tj
+ T*
+ (releaseMetaLock\(ee, obj, r\);)Tj
+ T*
+ (condvarWait\(&ee->monitorLockCondvar,)Tj
+ 7.2 -1.1429 TD
+ (&ee->monitorLockMutex\);)Tj
+ -7.2 -1.1429 TD
+ (mutexUnlock\(&ee->monitorLockMutex\);)Tj
+ T*
+ (r = getMetaLock\(ee, obj\);)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ T*
+ (assert\(lockState\(r\) == WAITERS\);)Tj
+ T*
+ (lr = moveMyLRToFront\(ee, lockRecord\(r\)\);)Tj
+ T*
+ (releaseMetaLock\(ee, obj, lr | LOCKED\);)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ 33.4286 15.9386 TD
+ (void monitorExitSlow\(ExecEnv *ee, Object *obj,)Tj
+ 12.6 -1.1429 TD
+ (LockRecord *lr\) {)Tj
+ -11.4 -1.1429 TD
+ (ExecEnv *wakeEE = wakeupEE\(lr\);)Tj
+ T*
+ (if \(wakeEE\) {)Tj
+ 1.2 -1.1429 TD
+ (mutexLock\(&wakeEE->monitorLockMutex\);)Tj
+ T*
+ (releaseMetaLock\(ee, obj, lr | WAITERS\);)Tj
+ T*
+ (condvarSignal\(&wakeEE->monitorLockCondvar\);)Tj
+ T*
+ (mutexUnlock\(&wakeEE->monitorLockMutex\);)Tj
+ -1.2 -1.1429 TD
+ (} else {)Tj
+ 1.2 -1.1429 TD
+ (releaseMetaLock\(ee, obj, lr | WAITERS\);)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ /N92 1 Tf
+ 12 0 0 12 188.78 239.67 Tm
+ [(Figure 8. Slo)25 (ws path for monitor)21 (-lock operations)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 16 16
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (13)Tj
+ /N91 1 Tf
+ 14 0 0 14 72 406.17 Tm
+ 0 Tw
+ [(4.4 W)65 (aiting and notifying)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 381.5 Tm
+ [(Figure)-250 (9)-248 (sho)25 (ws)-247 (the)-247 (remaining)-247 (tw)10 (o)-247 (monitor)-248 (operations:)-247 (w)9 (ait)-247 (and)-248 (notify)65 (.)-248 (The)-247 (Ja)20 (v)25 (a)-247 (language)-247 (speci\336-)]TJ
+ 0 -1.1667 TD
+ [(cation)-230 (requires)-230 (that)-231 (the)-230 (thread)-230 (performing)-231 (them)-230 (must)-231 (hold)-230 (the)-230 (object\325)55 (s)-230 (monitor)20 (-lock,)-230 (otherwise)-231 (the)]TJ
+ T*
+ [(operations)-292 (thro)25 (w)-292 (a)0 (n)-293 (e)15 (xception.)-292 (A)-292 (thread)-293 (w)10 (aits)-293 (by)-292 (acquiring)-292 (the)-292 (meta-lock,)-292 (setting)-292 (the)]TJ
+ /N95 1 Tf
+ 34.8 0 TD
+ (isWait-)Tj
+ -34.8 -1.1667 TD
+ (ingForNotify)Tj
+ /N92 1 Tf
+ 7.5242 0 TD
+ [(\336eld)-324 (in)-324 (its)-323 (EE,)-325 (and)-323 (releasing)-324 (the)-324 (monitor)20 (-lock)-323 (and)-324 (meta-lock)-324 (\(i.e.,)-323 (setting)-325 (the)]TJ
+ -7.5242 -1.1667 TD
+ [(lock)-269 (state)-268 (to)]TJ
+ /N95 1 Tf
+ 5.1383 0 TD
+ (WAITERS)Tj
+ /N92 1 Tf
+ 4.2 0 TD
+ [(\).)-269 (It)-268 (then)-268 (w)10 (aits)-268 (until)-268 (a)-269 (noti\336cation)-268 (operation)-268 (mak)10 (es)-269 (it)-268 (a)-269 (potential)-268 (lock)-268 (con-)]TJ
+ -9.3383 -1.1667 TD
+ [(tender)-239 (again,)-239 (and)-239 (some)-239 (monitor)21 (-lock)-239 (release)-239 (operation)-239 (signals)-239 (it)-240 (to)-239 (acti)25 (v)15 (ely)-239 (contend,)-239 (or)-239 (until)-239 (some)]TJ
+ T*
+ [(amount)-285 (of)-284 (time)-284 (speci\336ed)-285 (in)-284 (the)-285 (w)10 (ait)-285 (operation)-284 (has)-284 (elapsed.)-285 (A)-285 (notifying)-284 (thread)-285 (similarly)-285 (acquires)]TJ
+ T*
+ [(the)-309 (meta-lock.)-309 (Then)-309 (it)-310 (w)10 (alks)-309 (the)-310 (queue)-309 (of)-309 (lock)-309 (records,)-309 (looking)-309 (for)-310 (threads)-309 (w)9 (aiting)-309 (for)-309 (noti\336ca-)]TJ
+ T*
+ [(tion\321ones)-324 (whose)]TJ
+ /N95 1 Tf
+ 7.5933 0 TD
+ (isWaitingForNotify)Tj
+ /N92 1 Tf
+ 11.1242 0 TD
+ [(\336eld)-324 (is)]TJ
+ /N95 1 Tf
+ 3.0942 0 TD
+ (TRUE)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(\321and)-324 (resetting)-324 (this)-325 (boolean)-324 (to)-324 (indi-)]TJ
+ -24.2117 -1.1667 TD
+ [(cate)-282 (that)-282 (the)15 (y)-282 (h)0 (a)20 (v)15 (e)-282 (been)-282 (noti\336ed.)-281 (The)]TJ
+ /N95 1 Tf
+ 15.3917 0 TD
+ (notify\(\))Tj
+ /N92 1 Tf
+ 5.0825 0 TD
+ [(operation)-281 (\336nds)-282 (the)-281 (\336rst)-282 (such)-282 (thread)-282 (and)-282 (resets)]TJ
+ -20.4742 -1.1667 TD
+ [(its)-255 (boolean;)]TJ
+ /N95 1 Tf
+ 4.8992 0 TD
+ (notifyAll\(\))Tj
+ /N92 1 Tf
+ 6.855 0 TD
+ [(tra)20 (v)15 (erses)-255 (the)-255 (entire)-255 (lock)-255 (queue.)-255 (Finally)65 (,)-255 (the)-255 (notifying)-254 (thread)-255 (releases)]TJ
+ -11.7542 -1.1667 TD
+ (the meta-lock.)Tj
+ 0 -1.75 TD
+ [(Since)-405 (some)-406 (styles)-405 (of)-405 (concurrent)-405 (programming)-405 (result)-405 (in)-406 (a)-405 (high)-405 (frequenc)16 (y)-406 (o)0 (f)-405 (noti\336cations,)-405 (our)]TJ
+ 0 -1.1667 TD
+ [(implementation)-331 (has)-331 (further)-331 (optimized)-331 (the)-330 (notify)-332 (code)-331 (\(the)-331 (optimization)-331 (is)-331 (not)-331 (sho)25 (wn)-331 (in)-331 (the)-331 (\336g-)]TJ
+ T*
+ [(ure\).)-242 (The)-242 (idea)-243 (is)-242 (that)-242 (a)-243 (simple)-242 (read)-242 (of)-242 (the)-243 (multi-use)-242 (w)10 (ord)-243 (most)-242 (of)-243 (the)-242 (time)-242 (suf)25 (\336ces)-242 (to)-242 (grab)-243 (the)-242 (root)]TJ
+ T*
+ [(of)-253 (the)-252 (lock)-252 (queue.)-253 (If)-252 (the)-253 (read)-252 (fetches)-252 (a)-253 (w)10 (ord)-253 (in)]TJ
+ /N95 1 Tf
+ 18.9008 0 TD
+ (LOCKED)Tj
+ /N92 1 Tf
+ 3.8525 0 TD
+ [(state,)-252 (the)-253 (notifying)-252 (thread)-253 (can)-252 (v)15 (erify)-253 (that)]TJ
+ -22.7533 -1.1667 TD
+ [(it)-314 (holds)-314 (the)-314 (monitor)20 (-lock)-314 (and)-313 (w)10 (alk)-314 (the)-314 (queue)-314 (without)-314 (holding)-314 (the)-315 (meta-lock.)-313 (The)-314 (correctness)-313 (of)]TJ
+ T*
+ [(this)-292 (optimization)-291 (relies)-291 (on)-292 (tw)10 (o)-292 (properties:)-291 (a)-291 (n)0 (e)25 (w)-291 (thread)-291 (w)9 (aiting)-291 (for)-291 (a)-291 (notify)-292 (cannot)-291 (appear)-291 (in)-292 (the)]TJ
+ T*
+ [(queue)-249 (\(because)-250 (the)-250 (notifying)-250 (thread)-249 (holds)-250 (the)-250 (monitor)21 (-lock\),)-250 (and)-250 (other)-250 (threads)-249 (that)-250 (join)-250 (the)-250 (queue)]TJ
+ T*
+ [(do)-391 (so)-391 (at)-390 (the)-390 (end)-391 (\(so)-390 (the)-391 (queue)-390 (is)-390 (ne)25 (v)15 (e)0 (r)-391 (disconnected\).)-390 (See)-391 (also)-391 (Section)-391 (6.3)-391 (for)-391 (an)-391 (alternati)26 (v)15 (e)]TJ
+ T*
+ [(implementation in which notify does no queue w)11 (alking.)]TJ
+ 13.4017 31.5417 TD
+ [(Figure 9. W)80 (ait and notify code)]TJ
+ /N95 1 Tf
+ 7 0 0 7 77.5 711.33 Tm
+ (void monitorWait\(ExecEnv *ee, Object *obj,)Tj
+ 10.2 -1.1429 TD
+ (java_long millis\) {)Tj
+ -9 -1.1429 TD
+ [(BitField)-2400 (r)-4200 (=)0 ( getMetaLock\(ee, obj\);)]TJ
+ T*
+ (LockRecord *ownerLR = lockRecord\(r\);)Tj
+ T*
+ [(LockState)-1800 (state)-1800 (= lockState\(r\);)]TJ
+ T*
+ (if \(state == LOCKED && ownerLR->owner == ee\) {)Tj
+ 1.2 -1.1428 TD
+ (mutexLock\(&ee->monitorLockMutex\);)Tj
+ T*
+ (ee->isWaitingForNotify = TRUE;)Tj
+ T*
+ (monitorExitSlow\(ee, obj, ownerLR\);)Tj
+ T*
+ (if \(millis == TIMEOUT_INFINITY\))Tj
+ 1.2 -1.1429 TD
+ (condvarWait\(&ee->monitorLockCondvar,)Tj
+ 7.2 -1.1429 TD
+ (&ee->monitorLockMutex\);)Tj
+ -8.4 -1.1429 TD
+ (else)Tj
+ 1.2 -1.1428 TD
+ (condvarTimedWait\(&ee->monitorLockCondvar,)Tj
+ 7.2 -1.1429 TD
+ (&ee->monitorLockMutex, millis\);)Tj
+ -8.4 -1.1429 TD
+ (ee->isWaitingForNotify = FALSE;)Tj
+ T*
+ (mutexUnlock\(&ee->monitorLockMutex\);)Tj
+ T*
+ (r = getMetaLock\(ee, obj\);)Tj
+ T*
+ (monitorEnterSlow\(ee, obj, r\);)Tj
+ -1.2 -1.1429 TD
+ (} else {)Tj
+ 1.2 -1.1429 TD
+ (releaseMetaLock\(ee, obj, r\);)Tj
+ T*
+ (throwIllegalMonitorStateException\(\);)Tj
+ -1.2 -1.1428 TD
+ (})Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ 33.9086 26.2857 TD
+ (void notifyOneOrAll\(ExecEnv *ee, Object *obj,)Tj
+ 12 -1.1429 TD
+ (bool_t one\) {)Tj
+ -10.8 -1.1429 TD
+ [(BitField)-2400 (r)-4200 (=)0 ( getMetaLock\(ee, obj\);)]TJ
+ T*
+ (LockRecord *ownerLR = lockRecord\(r\);)Tj
+ T*
+ [(LockState)-1800 (state)-1800 (= lockState\(r\);)]TJ
+ T*
+ (if \(state == LOCKED && ownerLR->owner == ee\) {)Tj
+ 1.2 -1.1428 TD
+ (LockRecord *q = ownerLR->queue;)Tj
+ T*
+ (while \(q\) {)Tj
+ 1.2 -1.1429 TD
+ (if \(q->owner->isWaitingForNotify\) {)Tj
+ 1.2 -1.1429 TD
+ (q->owner->isWaitingForNotify = FALSE;)Tj
+ T*
+ (if \(one\) break;)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ T*
+ (q = q->queue;)Tj
+ -1.2 -1.1428 TD
+ (})Tj
+ T*
+ (releaseMetaLock\(ee, obj, r\);)Tj
+ -1.2 -1.1429 TD
+ (} else {)Tj
+ 1.2 -1.1428 TD
+ (releaseMetaLock\(ee, obj, r\);)Tj
+ T*
+ (throwIllegalMonitorStateException\(\);)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ 0 -2.2857 TD
+ (void monitorNotify\(ExecEnv *ee, Object *obj\) {)Tj
+ 1.2 -1.1428 TD
+ (notifyOneOrAll\(ee, obj, TRUE\);)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ 0 -2.2857 TD
+ (void monitorNotifyAll\(ExecEnv *ee, Object *obj\) {)Tj
+ 1.2 -1.1429 TD
+ (notifyOneOrAll\(ee, obj, FALSE\);)Tj
+ -1.2 -1.1429 TD
+ (})Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 17 17
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (14)Tj
+ /N91 1 Tf
+ 16 0 0 16 72 709.33 Tm
+ 0 Tw
+ [(5 Corr)18 (ectness)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 686 Tm
+ [(Belo)25 (w)65 (,)-250 (we)-251 (will)-250 (informally)-249 (ar)18 (gue)-250 (the)-250 (correctness)-250 (of)-250 (the)-250 (meta-lock)-250 (protocol)-250 (by)-250 (sho)25 (wing,)-250 (operation-)]TJ
+ 0 -1.1667 TD
+ [(ally)65 (,)-247 (that)-246 (it)-246 (guarantees)-246 (mutual)-247 (e)16 (xclusion)-247 (and)-246 (freedom)-247 (from)-246 (lock)10 (out.)-247 (W)40 (ithout)-246 (loss)-246 (of)-246 (generality)65 (,)-247 (w)0 (e)]TJ
+ T*
+ [(can)-276 (focus)-276 (our)-277 (attention)-276 (on)-277 (a)-276 (single)-277 (object)-276 (that)-277 (is)-276 (subject)-276 (to)-277 (locking)-276 (by)-277 (the)-276 (meta-lock)-277 (protocol.)-276 (\(A)]TJ
+ T*
+ [(formal)-408 (proof)-407 (that)-407 (the)-408 (meta-lock)-407 (guarantees)-408 (mutual)-408 (e)16 (xclusion)-407 (and)-408 (freedom)-408 (from)-408 (lock)10 (out)-408 (uses,)]TJ
+ T*
+ [(respecti)25 (v)15 (ely)65 (,)-378 (Lamport\325)55 (s)-379 (method)-378 (of)-379 (inducti)26 (v)15 (e)-379 (assertions)-378 (as)-379 (e)16 (x)14 (empli\336ed)-378 (in)-379 ([15])-378 (and)-378 (the)-379 (Owicki-)]TJ
+ T*
+ (Lamport technique of [23].\))Tj
+ /N91 1 Tf
+ 14 0 0 14 72 583.67 Tm
+ (5.1 Mutual exclusion)Tj
+ /N92 1 Tf
+ 12 0 0 12 72 559 Tm
+ [(Assume)-319 (that)-318 (a)-319 (thread)]TJ
+ /N95 1 Tf
+ 8.94 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.5183 0 TD
+ [(attempts)-318 (to)-319 (obtain)-319 (the)-319 (meta-lock)-318 (by)-318 (calling)]TJ
+ /N95 1 Tf
+ 17.8408 0 TD
+ (getMetaLock\(\))Tj
+ /N92 1 Tf
+ 7.8 0 TD
+ [(.)-319 (There)]TJ
+ -36.0992 -1.1667 TD
+ [(are)-291 (tw)9 (o)-292 (cases)-292 (to)-292 (consider)-292 (according)-292 (to)-292 (whether)]TJ
+ /N95 1 Tf
+ 19.2642 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.4925 0 TD
+ [(reads)-292 (a)-292 (non-)]TJ
+ /N95 1 Tf
+ 4.9708 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.6917 0 TD
+ [(or)-292 (a)]TJ
+ /N95 1 Tf
+ 1.8608 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.6925 0 TD
+ [(status)-292 (from)-292 (the)]TJ
+ -32.9725 -1.1667 TD
+ [(atomic sw)10 (ap in)]TJ
+ /N95 1 Tf
+ 6.295 0 TD
+ (getMetaLock\(\))Tj
+ /N92 1 Tf
+ 7.8 0 TD
+ (.)Tj
+ /N94 1 Tf
+ -14.095 -1.75 TD
+ [(Case)-295 (1:)]TJ
+ /N95 1 Tf
+ 12 0 2.551 12 113.08 510 Tm
+ (T1)Tj
+ /N94 1 Tf
+ 12 0 0 12 131.02 510 Tm
+ [(r)37 (eads)-294 (non-)]TJ
+ /N95 1 Tf
+ 12 0 2.551 12 182.78 510 Tm
+ (BUSY)Tj
+ /N92 1 Tf
+ 12 0 0 12 210.03 510 Tm
+ [(.)-295 (I)0 (n)-295 (this)-295 (case,)]TJ
+ /N95 1 Tf
+ 5.68 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.495 0 TD
+ [(has)-295 (the)-295 (meta-lock,)-295 (and)-295 (we)-296 (need)-295 (only)-294 (sho)25 (w)-296 (that)-295 (no)]TJ
+ -18.6775 -1.1667 TD
+ [(other)-369 (thread)]TJ
+ /N95 1 Tf
+ 5.2925 0 TD
+ (T\325)Tj
+ /N92 1 Tf
+ 1.5692 0 TD
+ [(can)-369 (no)25 (w)-370 (obtain)-369 (the)-369 (meta-lock)-369 (before)]TJ
+ /N95 1 Tf
+ 15.5742 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.5692 0 TD
+ [(has)-369 (released)-369 (the)-369 (meta-lock.)-369 (F)15 (o)0 (r)-369 (this,)]TJ
+ -24.005 -1.1667 TD
+ [(observ)15 (e)-269 (that,)-268 (follo)26 (wing)-268 (the)-268 (sw)9 (ap)-268 (by)]TJ
+ /N95 1 Tf
+ 14.585 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(,)-268 (the)-268 (header)-268 (w)10 (ord)-269 (has)-268 (a)]TJ
+ /N95 1 Tf
+ 9.5683 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.6683 0 TD
+ [(status.)-268 (Thus,)-268 (an)15 (y)-268 (thread)]TJ
+ /N95 1 Tf
+ 9.7783 0 TD
+ (T\325)Tj
+ /N92 1 Tf
+ -37.8 -1.1667 TD
+ [(that)-247 (tries)-248 (to)-248 (obtain)-248 (the)-247 (meta-lock)-247 (before)]TJ
+ /N95 1 Tf
+ 16.01 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.4475 0 TD
+ [(has)-248 (released)-248 (the)-248 (meta-lock)-247 (will)-247 (read)-248 (a)]TJ
+ /N95 1 Tf
+ 15.2858 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.6475 0 TD
+ [(status.)-248 (In)]TJ
+ -35.3908 -1.1667 TD
+ [(particular)41 (,)-462 (the)-462 (\336rst)-461 (subsequent)-462 (thread)]TJ
+ /N95 1 Tf
+ 16.0733 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.6625 0 TD
+ [(to)-462 (attempt)-462 (to)-462 (obtain)-462 (the)-462 (meta-lock)-462 (will)-462 (read)-461 (<)]TJ
+ /N95 1 Tf
+ 19.8142 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ (,)Tj
+ /N95 1 Tf
+ -38.75 -1.1667 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(>.)-338 (In)-338 (this)-338 (case,)]TJ
+ /N95 1 Tf
+ 6.4142 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.5383 0 TD
+ [(will)-337 (need)-338 (to)-338 (e)15 (x)15 (ecute)]TJ
+ /N95 1 Tf
+ 8.5967 0 TD
+ (getMetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 10.5383 0 TD
+ [(to)-338 (obtain)-337 (the)-338 (meta-lock)]TJ
+ -29.4875 -1.1667 TD
+ (from)Tj
+ /N95 1 Tf
+ 2.2392 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(,)-295 (its)-294 (predecessor)55 (.)-295 (W)80 (e)-295 (sho)26 (w)-295 (belo)25 (w)-295 (that)]TJ
+ /N95 1 Tf
+ 15.4867 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.495 0 TD
+ [(will)-295 (be)-295 (unable)-295 (to)-294 (obtain)-295 (the)-295 (meta-lock)-295 (at)-295 (least)]TJ
+ -20.4208 -1.1667 TD
+ (until)Tj
+ /N95 1 Tf
+ 2.1992 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.565 0 TD
+ [(e)15 (x)15 (ecutes)-365 (the)-365 (meta-lock)-365 (release)-365 (code.)-365 (Similarly)65 (,)-365 (a)0 (n)15 (y)-365 (subsequent)-365 (attempts)-365 (to)-365 (obtain)-366 (the)]TJ
+ -3.7642 -1.1667 TD
+ [(meta-lock)-402 (\(while)]TJ
+ /N95 1 Tf
+ 7.3592 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.6017 0 TD
+ [(is)-403 (in)-402 (possession)-403 (of)-402 (the)-402 (meta-lock\))-403 (will)-402 (stall)-402 (with)-403 (each)-402 (thread)-402 (w)9 (aiting)-402 (to)]TJ
+ -8.9608 -1.1667 TD
+ [(obtain)-425 (the)-425 (meta-lock)-425 (from)-426 (its)-425 (predecessor)-425 (in)-425 (the)-425 (sequence.)-425 (Thus,)]TJ
+ /N95 1 Tf
+ 27.7483 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.625 0 TD
+ [(is)-425 (guaranteed)-425 (e)16 (xclusi)25 (v)15 (e)]TJ
+ -29.3733 -1.1667 TD
+ (access.)Tj
+ /N94 1 Tf
+ 0 -1.75 TD
+ [(Case)-283 (2:)]TJ
+ /N95 1 Tf
+ 12 0 2.551 12 112.79 349 Tm
+ (T1)Tj
+ /N94 1 Tf
+ 12 0 0 12 130.59 349 Tm
+ [(r)36 (eads)]TJ
+ /N95 1 Tf
+ 12 0 2.551 12 160.21 349 Tm
+ (BUSY)Tj
+ /N92 1 Tf
+ 12 0 0 12 187.46 349 Tm
+ [(.)-283 (Assume)-284 (that)]TJ
+ /N95 1 Tf
+ 5.8217 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.4833 0 TD
+ [(reads)-283 (<)]TJ
+ /N95 1 Tf
+ 2.9575 0 TD
+ (T0)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ (,)Tj
+ /N95 1 Tf
+ 0.5333 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(>)-284 (from)-283 (the)-283 (header)-283 (w)10 (ord,)-283 (where)]TJ
+ /N95 1 Tf
+ 12.8325 0 TD
+ (T0)Tj
+ /N92 1 Tf
+ 1.4825 0 TD
+ (is)Tj
+ -38.3325 -1.1667 TD
+ [(the)-368 (thread)-368 (that)-368 (e)15 (x)15 (ecuted)-367 (the)-368 (atomic)-368 (sw)10 (ap)-368 (immediately)-368 (preceding)]TJ
+ /N95 1 Tf
+ 26.9883 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(.)-368 (I)0 (n)-368 (this)-367 (e)25 (v)15 (ent,)]TJ
+ /N95 1 Tf
+ 6.3758 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.5675 0 TD
+ [(will)-368 (be)]TJ
+ -36.1317 -1.1667 TD
+ [(forced)-256 (to)-256 (e)15 (x)15 (ecute)-256 (the)-255 (meta-lock)-256 (hand-of)25 (f)-256 (protocol)-256 (with)]TJ
+ /N95 1 Tf
+ 22.1542 0 TD
+ (T0)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(,)-256 (its)-256 (predecessor)55 (.)-256 (This)-256 (will)-256 (happen)-255 (only)]TJ
+ -23.3542 -1.1667 TD
+ (after)Tj
+ /N95 1 Tf
+ 2.0942 0 TD
+ (T0)Tj
+ /N92 1 Tf
+ 1.4617 0 TD
+ [(has)-262 (itself)-262 (obtained)-262 (the)-262 (meta-lock)-262 (and)-262 (subsequently)-262 (attempts)-262 (to)-262 (release)-262 (the)-261 (meta-lock.)-262 (No)]TJ
+ -3.5558 -1.1667 TD
+ [(thread)-362 (in)-362 (the)-361 (sequence)-362 (may)-361 (obtain)-362 (the)-361 (meta-lock)-362 (before)-362 (its)-362 (predecessor)-361 (has)-362 (released)-361 (the)-362 (meta-)]TJ
+ T*
+ [(lock,)-301 (and)-301 (we)-301 (are)-301 (guaranteed)-301 (mutual)-301 (e)15 (xclusion,)-301 (pro)16 (vided)-301 (the)-300 (meta-lock)-301 (hand-of)25 (f)-301 (w)9 (orks)-300 (correctly)65 (.)]TJ
+ T*
+ [(T)80 (o)-314 (complete)-314 (the)-313 (ar)18 (gument,)-314 (we)-314 (shall)-313 (sho)25 (w)-314 (that)-313 (the)-314 (meta-lock)-314 (hand-of)25 (f)-314 (protocol)-313 (does)-314 (not)-314 (allo)25 (w)-314 (a)]TJ
+ T*
+ [(successor)-279 (thread)-278 (to)-279 (obtain)-278 (the)-278 (meta-lock)-279 (before)-278 (its)-278 (predecessor)-278 (has)-279 (released)-278 (the)-279 (meta-lock.)-278 (Thus,)]TJ
+ T*
+ [(consider)-289 (threads)]TJ
+ /N95 1 Tf
+ 6.855 0 TD
+ (T0)Tj
+ /N92 1 Tf
+ 1.4892 0 TD
+ [(\(the)-290 (predecessor\))-289 (and)]TJ
+ /N95 1 Tf
+ 8.9208 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.49 0 TD
+ [(\(the)-289 (successor\))-290 (from)-289 (Case)-289 (2)-290 (abo)16 (v)15 (e\321that)-289 (is)-290 (to)-289 (say)65 (,)]TJ
+ /N95 1 Tf
+ -18.755 -1.1667 TD
+ (T0)Tj
+ /N92 1 Tf
+ 1.4408 0 TD
+ [(immediately)-241 (preceded)]TJ
+ /N95 1 Tf
+ 9.09 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.4408 0 TD
+ [(in)-240 (the)-240 (atomic)-240 (sw)9 (ap)-240 (in)-241 (its)-240 (attempt)-241 (to)-240 (obtain)-241 (the)-240 (meta-lock.)]TJ
+ /N95 1 Tf
+ 22.8858 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.4408 0 TD
+ [(ha)21 (ving)]TJ
+ -36.2983 -1.1667 TD
+ [(read)-271 (<)]TJ
+ /N95 1 Tf
+ 2.5558 0 TD
+ (T0)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ (,)Tj
+ /N95 1 Tf
+ 0.5208 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(>)-270 (i)0 (s)-270 (forced)-271 (do)25 (wn)-270 (the)]TJ
+ /N95 1 Tf
+ 8.5567 0 TD
+ (getMetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 10.4708 0 TD
+ [(path.)-270 (The)-271 (\336rst)-271 (thing)-271 (that)]TJ
+ /N95 1 Tf
+ 9.9925 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.47 0 TD
+ (does)Tj
+ -37.1667 -1.1667 TD
+ [(is)-365 (obtain)-365 (a)-365 (lock)-365 (on)]TJ
+ /N95 1 Tf
+ 8.1583 0 TD
+ (T0->metaLockMutex)Tj
+ /N92 1 Tf
+ 10.2 0 TD
+ [(,)-366 (and)-365 (check)-365 (if)]TJ
+ /N95 1 Tf
+ 6.0983 0 TD
+ (T0->bitsForGrab)Tj
+ /N92 1 Tf
+ 9.365 0 TD
+ [(is)-365 (set.)-366 (In)-365 (the)]TJ
+ -33.8217 -1.1667 TD
+ [(case)-228 (where)]TJ
+ /N95 1 Tf
+ 4.6208 0 TD
+ (T0)Tj
+ /N92 1 Tf
+ 1.4283 0 TD
+ [(is)-228 (not)-229 (yet)-228 (ready)-228 (to)-229 (release)-228 (the)-228 (meta-lock,)-228 (this)-228 (\336eld)-229 (will)-228 (be)]TJ
+ /N95 1 Tf
+ 22.8758 0 TD
+ (FALSE)Tj
+ /N92 1 Tf
+ 3 0 TD
+ [(,)-228 (and)]TJ
+ /N95 1 Tf
+ 2.15 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.4283 0 TD
+ [(will)-229 (w)10 (ait)]TJ
+ -35.5033 -1.1667 TD
+ [(to)-466 (be)-467 (signalled)-466 (on)]TJ
+ /N95 1 Tf
+ 8.1992 0 TD
+ (T0->metaLockCondvar)Tj
+ /N92 1 Tf
+ 11.8667 0 TD
+ (with)Tj
+ /N95 1 Tf
+ 2.2442 0 TD
+ (T1->gotMetaLockSlow)Tj
+ /N92 1 Tf
+ 11.8667 0 TD
+ [(set.)-466 (W)80 (e)-467 (are)]TJ
+ -34.1767 -1.1667 TD
+ [(ensured)-248 (that)]TJ
+ /N95 1 Tf
+ 5.1067 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.4483 0 TD
+ [(will)-248 (not)-248 (be)-248 (able)-248 (to)-248 (proceed)-248 (further)-248 (until)]TJ
+ /N95 1 Tf
+ 15.9275 0 TD
+ (T0)Tj
+ /N92 1 Tf
+ 1.4483 0 TD
+ [(is)-248 (ready)-248 (to)-249 (release)-248 (the)-248 (meta-lock,)-248 (thus)]TJ
+ -23.9308 -1.1667 TD
+ [(ensuring mutual e)16 (xclusion.)]TJ
+ /N91 1 Tf
+ 14 0 0 14 72 106.67 Tm
+ [(5.2 Fr)18 (eedom fr)18 (om lock)15 (out)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 82 Tm
+ [(T)80 (o)-329 (sho)25 (w)-329 (l)0 (i)25 (v)15 (eness,)-329 (we)-330 (assume)-328 (that)-329 (each)-329 (thread)-329 (that)-329 (obtains)-329 (the)-329 (meta-lock)-329 (e)26 (v)15 (entually)-330 (attempts)-328 (to)]TJ
+ T*
+ (release the meta-lock.)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 18 18
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (15)Tj
+ -19 56.4858 TD
+ [(Consider)-252 (\336rst)-252 (the)-252 (case)-252 (where)-253 (a)-252 (thread)]TJ
+ /N95 1 Tf
+ 15.2625 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.4525 0 TD
+ [(attempting)-252 (to)-253 (release)-252 (the)-252 (meta-lock)-252 (e)15 (x)15 (ecutes)-252 (the)]TJ
+ /N95 1 Tf
+ 19.455 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 2.0517 0 TD
+ (in)Tj
+ /N95 1 Tf
+ -38.2217 -1.1667 TD
+ (releaseMetaLock\(\))Tj
+ /N92 1 Tf
+ 10.4608 0 TD
+ [(and)-262 (disco)15 (v)15 (ers)-261 (that)-262 (the)-261 (header)-261 (w)10 (ord)-261 (compares)-261 (with)-261 (what)-261 (it)-261 (had)-261 (sw)10 (apped)]TJ
+ -10.4608 -1.1667 TD
+ [(in)-247 (when)-246 (it)-246 (had)-247 (obtained)-247 (the)-246 (meta-lock,)-247 (i.e.)-246 (with)-247 (<)]TJ
+ /N95 1 Tf
+ 19.6425 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ 0 Tw
+ (,)Tj
+ /N95 1 Tf
+ 0.4967 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(>.)-247 (This)-247 (means)-247 (that)-247 (no)-247 (other)-247 (thread)-246 (has)]TJ
+ -23.7392 -1.1667 TD
+ [(attempted)-276 (to)-275 (obtain)-275 (the)-275 (meta-lock)-276 (since)]TJ
+ /N95 1 Tf
+ 16.1517 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.475 0 TD
+ [(did)-276 (so.)-275 (The)]TJ
+ /N95 1 Tf
+ 4.7992 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 2.075 0 TD
+ [(completes)-276 (and)-275 (a)-276 (non-)]TJ
+ /N95 1 Tf
+ 8.6033 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.675 0 TD
+ [(status)-276 (is)]TJ
+ -35.7792 -1.1667 TD
+ [(written into the header w)10 (ord, thus releasing the meta-lock.)]TJ
+ 0 -1.75 TD
+ [(Consider)-265 (no)25 (w)-265 (the)-265 (case)-265 (where)-265 (another)-265 (thread)]TJ
+ /N95 1 Tf
+ 18.0483 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.465 0 TD
+ [(has)-265 (attempted)-265 (to)-265 (acquire)-265 (the)-265 (meta-lock.)-266 (W)81 (e)-265 (ha)20 (v)15 (e)]TJ
+ -19.5133 -1.1667 TD
+ [(already)-268 (ar)18 (gued)-267 (abo)15 (v)15 (e)-268 (\(Case)-267 (2)-268 (i)0 (n)-267 (Section)-267 (5.1)-267 (abo)15 (v)15 (e)0 (\))-268 (that)-267 (in)-267 (this)-267 (case)]TJ
+ /N95 1 Tf
+ 27.4225 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.4675 0 TD
+ [(is)-267 (forced)-268 (do)25 (wn)-268 (the)]TJ
+ /N95 1 Tf
+ 7.71 0 TD
+ (get-)Tj
+ -36.6 -1.1667 TD
+ (MetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 8.7008 0 TD
+ [(path.)-300 (No)25 (w)64 (,)-301 (when)]TJ
+ /N95 1 Tf
+ 7.1442 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.5008 0 TD
+ [(attempts)-300 (to)-301 (release)-301 (the)-300 (meta-lock,)-300 (the)]TJ
+ /N95 1 Tf
+ 15.44 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 2.1008 0 TD
+ [(w)10 (ould)-300 (f)10 (ail)]TJ
+ -34.8867 -1.1667 TD
+ [(because)-397 (the)-397 (header)-397 (w)9 (ord)-397 (contents)-397 (w)9 (ould)-397 (be)-397 (dif)24 (ferent)-397 (from)-397 (<)]TJ
+ /N95 1 Tf
+ 25.365 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ (,)Tj
+ /N95 1 Tf
+ 0.6467 0 TD
+ (BUSY)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(>)-398 (written)-397 (by)]TJ
+ /N95 1 Tf
+ 5.5892 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ 0.397 Tc
+ [(.A)397 (sa)]TJ
+ -36.4008 -1.1667 TD
+ 0 Tc
+ (result,)Tj
+ /N95 1 Tf
+ 2.8558 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.5842 0 TD
+ [(w)10 (ould)-384 (no)25 (w)-384 (b)0 (e)-384 (forced)-384 (do)25 (wn)-384 (the)]TJ
+ /N95 1 Tf
+ 13.4083 0 TD
+ (releaseMetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 12.9842 0 TD
+ [(path.)-385 (There)-384 (are)-384 (tw)10 (o)]TJ
+ -30.8325 -1.1667 TD
+ [(cases)-367 (to)-367 (consider)-367 (according)-367 (to)-367 (whether)]TJ
+ /N95 1 Tf
+ 16.4208 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.5675 0 TD
+ (or)Tj
+ /N95 1 Tf
+ 1.2 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.5675 0 TD
+ [(succeed)-367 (in)-367 (locking)]TJ
+ /N95 1 Tf
+ 8.0442 0 TD
+ (T0->metaLockMutex)Tj
+ /N92 1 Tf
+ -28.8 -1.1667 TD
+ [(\336rst,)-277 (respecti)25 (v)14 (ely)65 (,)-278 (i)0 (n)]TJ
+ /N95 1 Tf
+ 8.3942 0 TD
+ (releaseMetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 12.8775 0 TD
+ (and)Tj
+ /N95 1 Tf
+ 1.7217 0 TD
+ (getMetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 10.2008 0 TD
+ [(.)-277 (But)-277 (\336rst)-278 (note)]TJ
+ -33.1942 -1.1667 TD
+ [(that)-474 (the)-475 (initial)-474 (conditions)-474 (ensure)-475 (that)]TJ
+ /N95 1 Tf
+ 16.18 0 TD
+ (T1->bitsForGrab)Tj
+ /N92 1 Tf
+ 9 0 TD
+ (,)Tj
+ /N95 1 Tf
+ 0.7242 0 TD
+ (T2->gotMetaLockSlow)Tj
+ /N92 1 Tf
+ 11.875 0 TD
+ (are)Tj
+ -37.7792 -1.1667 TD
+ (both)Tj
+ /N95 1 Tf
+ 2.0283 0 TD
+ (FALSE)Tj
+ /N92 1 Tf
+ 3 0 TD
+ ( initially and that)Tj
+ /N95 1 Tf
+ 7.0558 0 TD
+ (T1->succEE)Tj
+ /N92 1 Tf
+ 6 0 TD
+ ( is)Tj
+ /N95 1 Tf
+ 1.1667 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ (.)Tj
+ /N94 1 Tf
+ -21.6508 -1.75 TD
+ [(Case)-301 (1:)]TJ
+ /N95 1 Tf
+ 12 0 2.551 12 113.21 502 Tm
+ (T1)Tj
+ /N94 1 Tf
+ 12 0 0 12 131.22 502 Tm
+ [(loc)20 (ks)]TJ
+ /N95 1 Tf
+ 12 0 2.551 12 159.24 502 Tm
+ (T1->metaLockMutex)Tj
+ /N94 1 Tf
+ 12 0 0 12 285.25 502 Tm
+ [(\336r)10 (st)]TJ
+ /N92 1 Tf
+ 1.5458 0 TD
+ [(.)-301 (I)0 (n)-300 (this)-301 (case,)]TJ
+ /N95 1 Tf
+ 5.7017 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.5 0 TD
+ [(will)-301 (\336nd)-301 (that)]TJ
+ /N95 1 Tf
+ 5.5142 0 TD
+ (T1->succEE)Tj
+ /N92 1 Tf
+ 6.3008 0 TD
+ (is)Tj
+ /N95 1 Tf
+ -38.3333 -1.1667 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(,)-374 (s)0 (o)-374 (i)0 (t)-374 (will)-374 (tak)10 (e)-374 (the)-375 (else)-374 (branch)-374 (in)]TJ
+ /N95 1 Tf
+ 14.5508 0 TD
+ (releaseMetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 12.6 0 TD
+ [(,)-374 (write)-374 (the)]TJ
+ /N95 1 Tf
+ 4.6492 0 TD
+ (release-)Tj
+ -34.2 -1.1667 TD
+ (Bits)Tj
+ /N92 1 Tf
+ 2.61 0 TD
+ (into)Tj
+ /N95 1 Tf
+ 1.7658 0 TD
+ (T1->metaLockBits)Tj
+ /N92 1 Tf
+ 9.6 0 TD
+ [(,)-210 (set)]TJ
+ /N95 1 Tf
+ 1.7808 0 TD
+ (T1->bitsForGrab)Tj
+ /N92 1 Tf
+ 9.21 0 TD
+ (to)Tj
+ /N95 1 Tf
+ 0.9875 0 TD
+ (TRUE)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(,)-210 (and)-210 (w)10 (ait)-210 (on)]TJ
+ /N95 1 Tf
+ 5.2458 0 TD
+ (T1->meta-)Tj
+ -33.6 -1.1667 TD
+ (LockCondvar)Tj
+ /N92 1 Tf
+ 7.0217 0 TD
+ (\(releasing)Tj
+ /N95 1 Tf
+ 4.3642 0 TD
+ (T1->metaLockMutex)Tj
+ /N92 1 Tf
+ 10.2 0 TD
+ [(\))-421 (for)]TJ
+ /N95 1 Tf
+ 2.3408 0 TD
+ (T1->bitsForGrab)Tj
+ /N92 1 Tf
+ 9.4217 0 TD
+ [(to)-421 (be)-421 (reset)-421 (to)]TJ
+ /N95 1 Tf
+ -33.3483 -1.1667 TD
+ (FALSE)Tj
+ /N92 1 Tf
+ 3 0 TD
+ [(.)-295 (Subsequently)65 (,)]TJ
+ /N95 1 Tf
+ 6.4133 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.495 0 TD
+ [(will)-295 (succeed)-295 (in)-294 (locking)]TJ
+ /N95 1 Tf
+ 9.6783 0 TD
+ (T1->metaLockMutex)Tj
+ /N92 1 Tf
+ 10.2 0 TD
+ [(,)-295 (and)-295 (will)-295 (tak)10 (e)-295 (the)-295 (if)]TJ
+ -30.7867 -1.1667 TD
+ [(branch)-692 (in)]TJ
+ /N95 1 Tf
+ 4.8833 0 TD
+ (getMetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 10.8925 0 TD
+ (since)Tj
+ /N95 1 Tf
+ 2.7467 0 TD
+ (T1->bitsForGrab)Tj
+ /N92 1 Tf
+ 9.6925 0 TD
+ [(is)-692 (set;)-692 (it)-692 (will)-692 (cop)10 (y)-693 (the)]TJ
+ /N95 1 Tf
+ -28.215 -1.1667 TD
+ (releaseBits)Tj
+ /N92 1 Tf
+ 6.6 0 TD
+ [(,)-368 (reset)]TJ
+ /N95 1 Tf
+ 2.875 0 TD
+ (T1->bitsForGrab)Tj
+ /N92 1 Tf
+ 9 0 TD
+ [(,)-368 (signal)]TJ
+ /N95 1 Tf
+ 3.3758 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.5683 0 TD
+ [(to)-369 (w)9 (a)0 (k)11 (e)-368 (up,)-369 (and)-368 (release)]TJ
+ /N95 1 Tf
+ 10.1808 0 TD
+ (T1->meta-)Tj
+ -33.6 -1.1667 TD
+ (LockMutex)Tj
+ /N92 1 Tf
+ 5.4 0 TD
+ [( allo)25 (wing)]TJ
+ /N95 1 Tf
+ 3.975 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ ( to continue. At this point)Tj
+ /N95 1 Tf
+ 10.4733 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(, w)10 (ould ha)20 (v)15 (e)0 ( the meta-lock.)]TJ
+ /N94 1 Tf
+ -22.2483 -1.75 TD
+ [(Case)-282 (2:)]TJ
+ /N95 1 Tf
+ 12 0 2.551 12 112.78 383 Tm
+ (T2)Tj
+ /N94 1 Tf
+ 12 0 0 12 130.57 383 Tm
+ [(loc)20 (ks)]TJ
+ /N95 1 Tf
+ 12 0 2.551 12 158.38 383 Tm
+ (T1->metaLockMutex)Tj
+ /N94 1 Tf
+ 12 0 0 12 284.18 383 Tm
+ [(\336r)10 (st)]TJ
+ /N92 1 Tf
+ 1.5458 0 TD
+ [(.)-282 (I)0 (n)-283 (this)-282 (case,)]TJ
+ /N95 1 Tf
+ 5.63 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.4825 0 TD
+ [(will)-282 (\336nd)-283 (that)]TJ
+ /N95 1 Tf
+ 5.46 0 TD
+ (T1->bitsFor-)Tj
+ -31.8 -1.1667 TD
+ (Grab)Tj
+ /N92 1 Tf
+ 2.6433 0 TD
+ (is)Tj
+ /N95 1 Tf
+ 0.9108 0 TD
+ (FALSE)Tj
+ /N92 1 Tf
+ 3 0 TD
+ [(,)-243 (s)0 (o)-244 (i)0 (t)-243 (will)-244 (tak)10 (e)-243 (the)-244 (else)-244 (branch)-243 (in)]TJ
+ /N95 1 Tf
+ 13.3758 0 TD
+ (getMetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 10.2 0 TD
+ [(,)-243 (set)]TJ
+ /N95 1 Tf
+ 1.8483 0 TD
+ (T1->succEE)Tj
+ /N92 1 Tf
+ 6.2433 0 TD
+ (to)Tj
+ /N95 1 Tf
+ -38.2217 -1.1667 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(,)-194 (and)-193 (w)9 (ait)-194 (on)]TJ
+ /N95 1 Tf
+ 5.1817 0 TD
+ (T1->metaLockCondvar)Tj
+ /N92 1 Tf
+ 11.5942 0 TD
+ (\(releasing)Tj
+ /N95 1 Tf
+ 4.1375 0 TD
+ (T1->metaLockMutex)Tj
+ /N92 1 Tf
+ 10.2 0 TD
+ [(\))-194 (for)]TJ
+ /N95 1 Tf
+ 1.8867 0 TD
+ (T2->got-)Tj
+ -34.2 -1.1667 TD
+ (MetaLockSlow)Tj
+ /N92 1 Tf
+ 7.5467 0 TD
+ [(to)-346 (be)-347 (set)-346 (by)]TJ
+ /N95 1 Tf
+ 5.2192 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(.)-347 (When)]TJ
+ /N95 1 Tf
+ 3.3308 0 TD
+ (T1)Tj
+ /N92 1 Tf
+ 1.5467 0 TD
+ [(subsequently)-346 (obtains)]TJ
+ /N95 1 Tf
+ 8.8042 0 TD
+ (T1->metaLockMutex)Tj
+ /N92 1 Tf
+ 10.2 0 TD
+ 0.347 Tc
+ [(,i)347 (t)]TJ
+ -37.8475 -1.1667 TD
+ 0 Tc
+ [(will)-265 (\336nd)]TJ
+ /N95 1 Tf
+ 3.6417 0 TD
+ (T1->succEE)Tj
+ /N92 1 Tf
+ 6.265 0 TD
+ [(set)-266 (to)]TJ
+ /N95 1 Tf
+ 2.4192 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ [(,)-265 (s)0 (o)-265 (i)0 (t)-265 (will)-265 (tak)10 (e)-265 (the)-265 (if)-265 (branch)-265 (in)]TJ
+ /N95 1 Tf
+ 12.6242 0 TD
+ (releaseMetaLockSlow\(\))Tj
+ /N92 1 Tf
+ 12.6 0 TD
+ (,)Tj
+ -38.75 -1.1667 TD
+ [(write)-311 (out)-311 (the)]TJ
+ /N95 1 Tf
+ 5.4875 0 TD
+ (releaseBits)Tj
+ /N92 1 Tf
+ 6.9108 0 TD
+ (into)Tj
+ /N95 1 Tf
+ 1.8675 0 TD
+ (T2->metaLockBits)Tj
+ /N92 1 Tf
+ 9.6 0 TD
+ [(,)-311 (and)-311 (reset)]TJ
+ /N95 1 Tf
+ 4.5142 0 TD
+ (T1->succEE)Tj
+ /N92 1 Tf
+ 6.3108 0 TD
+ [(before)-311 (set-)]TJ
+ -34.6908 -1.1667 TD
+ (ting)Tj
+ /N95 1 Tf
+ 1.8792 0 TD
+ (T2->gotMetaLockSlow)Tj
+ /N92 1 Tf
+ 11.7225 0 TD
+ (to)Tj
+ /N95 1 Tf
+ 1.1008 0 TD
+ (TRUE)Tj
+ /N92 1 Tf
+ 2.7233 0 TD
+ [(and)-323 (signal)]TJ
+ /N95 1 Tf
+ 4.4783 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.5225 0 TD
+ [(that)-323 (it)-322 (has)-323 (been)-323 (handed)-323 (the)-323 (meta-lock,)]TJ
+ -23.4267 -1.1667 TD
+ [(allo)25 (wing)]TJ
+ /N95 1 Tf
+ 3.725 0 TD
+ (T2)Tj
+ /N92 1 Tf
+ 1.2 0 TD
+ ( to continue with the meta-lock.)Tj
+ -4.925 -1.75 TD
+ [(Thus,)-387 (e)25 (v)15 (ery)-387 (thread)-387 (that)-387 (attempts)-387 (to)-387 (obtain)-387 (the)-386 (meta-lock)-387 (will)-386 (e)25 (v)15 (entually)-386 (obtain)-387 (the)-387 (meta-lock,)]TJ
+ 0 -1.1667 TD
+ [(ensuring freedom from lock)11 (out.)]TJ
+ /N91 1 Tf
+ 16 0 0 16 72 215.33 Tm
+ (6 Extensions to the basic algorithm)Tj
+ /N92 1 Tf
+ 12 0 0 12 72 192 Tm
+ [(In)-239 (this)-238 (section,)-238 (we)-239 (discuss)-238 (e)16 (xtensions)-238 (to)-239 (our)-238 (algorithm,)-238 (related)-239 (to)-238 (management)-238 (of)-239 (lock)-238 (records)-239 (and)]TJ
+ T*
+ [(optimization)-250 (of)-249 (cases)-249 (where)-249 (we)-250 (may)-249 (safely)-249 (a)20 (v)20 (oid)-249 (meta-locking)-249 (because)-249 (the)-250 (change)-250 (in)-249 (the)-250 (object\325)55 (s)]TJ
+ T*
+ [(lock)-450 (state)-450 (requires)-450 (only)-449 (one)-450 (w)10 (ord)-449 (to)-450 (be)-449 (updated.)-450 (W)80 (e)-450 (also)-450 (demonstrate)-450 (the)-450 (\337e)15 (xibility)-450 (of)-449 (our)]TJ
+ T*
+ [(approach)-231 (and)-230 (outline)-230 (ho)25 (w)-231 (t)0 (o)-230 (implement)-231 (it)-230 (on)-231 (hardw)10 (are)-231 (that)-230 (does)-230 (not)-231 (pro)16 (vide)-230 (atomic)]TJ
+ /N95 1 Tf
+ 33.5058 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 2.0308 0 TD
+ (or)Tj
+ /N95 1 Tf
+ 1.0633 0 TD
+ (SWAP)Tj
+ /N92 1 Tf
+ -36.6 -1.1667 TD
+ (operations.)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 19 19
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (16)Tj
+ /N91 1 Tf
+ 14 0 0 14 72 710.67 Tm
+ 0 Tw
+ [(6.1 Lock r)18 (ecord allocation)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 686 Tm
+ [(As)-273 (we)-272 (discussed)-273 (in)-273 (Section)-272 (3,)-272 (each)-273 (of)-273 (the)-273 (locking)-272 (schemes)-273 (we)-272 (kno)25 (w)-273 (about,)-273 (including)-273 (the)-272 (present)]TJ
+ 0 -1.1667 TD
+ [(one,)-302 (at)-301 (least)-301 (occasionally)-302 (allocates)-302 (data)-301 (structures)-301 (related)-301 (to)-302 (locking.)-301 (This)-301 (section)-301 (discusses)-302 (ho)25 (w)]TJ
+ T*
+ [(those)-270 (data)-270 (structures)-270 (are)-270 (allocated)-270 (and)-269 (deallocated.)-270 (The)-270 (original)-270 (JDK)-270 (allocates)-269 (monitors)-270 (globally)65 (,)]TJ
+ T*
+ [(causing)-353 (serialization)-353 (of)-354 (monitor)-353 (cache)-354 (operations)-353 (and)-353 (resulting)-353 (scalability)-354 (bottlenecks.)-353 (Periodi-)]TJ
+ T*
+ [(cally)65 (,)-262 (unused)-261 (monitors)-262 (are)-261 (reclaimed.)-261 (The)-262 (thin)-261 (locks)-261 (scheme)-262 (globally)-262 (allocates)-261 (\322f)10 (at)-261 (locks,)70 (\323)-262 (which)]TJ
+ T*
+ (remain allocated for the lifetime of the associated object [3].)Tj
+ 0 -1.75 TD
+ [(In)-258 (our)-258 (scheme,)-257 (lock)-258 (records)-258 (are)-258 (the)-257 (unit)-258 (of)-258 (allocation.)-257 (Each)-258 (thread)-258 (has)-258 (a)-258 (set)-258 (of)-257 (lock)-258 (records)-258 (for)-258 (its)]TJ
+ 0 -1.1667 TD
+ [(e)15 (xclusi)25 (v)15 (e)-235 (use,)-234 (link)9 (ed)-235 (together)-234 (in)-235 (a)-235 (free)-235 (list.)-235 (Lock)-236 (records)-234 (on)-236 (a)-235 (thread\325)55 (s)-235 (free)-235 (list)-235 (ha)20 (v)15 (e)-235 (as)-235 (man)15 (y)-236 (\336elds)]TJ
+ T*
+ [(as)-266 (possible)-267 (preinitialized:)-266 (the)-266 (o)25 (wner)-266 (\336eld)-267 (points)-266 (to)-267 (the)-266 (o)25 (wning)-267 (thread,)-266 (the)-266 (count)-267 (\336elds)-266 (contains)-266 (1,)]TJ
+ T*
+ [(which)-435 (is)-435 (the)-435 (proper)-435 (count)-435 (when)-435 (locks)-435 (are)-435 (\336rst)-435 (acquired,)-435 (and)-434 (the)-435 (queue)-434 (\336eld)-434 (contains)]TJ
+ /N95 1 Tf
+ 36.6 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ -36.6 -1.1667 TD
+ [(because)-268 (uncontended)-268 (locking)-268 (is)-268 (most)-268 (frequent)-269 (\(separation)-268 (of)-268 (the)-269 (free-list)-268 (link)-268 (and)-268 (the)-268 (queue)-269 (link,)]TJ
+ T*
+ [(see)-267 (Figure)-250 (4,)-267 (allo)25 (ws)-266 (the)-267 (queue)-267 (\336eld)-266 (to)-267 (be)-267 (preset)-267 (to)]TJ
+ /N95 1 Tf
+ 20.4183 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(\).)-267 (Lock)-267 (record)-267 (allocation)-267 (is)-266 (optimized)-266 (to)]TJ
+ -22.8183 -1.1667 TD
+ [(a)20 (v)20 (oid)-234 (an)16 (y)-234 (test)-233 (for)-233 (an)-233 (empty)-233 (free)-233 (list;)-234 (instead,)-233 (an)-233 (attempt)-233 (to)-234 (dereference)-233 (a)]TJ
+ /N95 1 Tf
+ 28.8467 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.6333 0 TD
+ [(pointer)-234 (generates)-233 (a)]TJ
+ -31.48 -1.1667 TD
+ [(signal.)-343 (The)-344 (signal)-343 (handler)-343 (recognizes)-344 (the)-344 (situation,)-343 (re\336lls)-344 (the)-344 (thread\325)55 (s)-344 (lock)-344 (record)-343 (free)-343 (list,)-344 (and)]TJ
+ T*
+ [(retries)-317 (the)-317 (operation.)-318 (Threads)-316 (start)-317 (with)-318 (8)-317 (free)-318 (lock)-317 (records)-317 (and)-318 (add)-317 (an)-318 (e)16 (xponentially)-317 (increasing)]TJ
+ T*
+ [(number each time the)16 (y e)15 (xhaust the free list.)]TJ
+ 0 -1.75 TD
+ [(When)-273 (a)-274 (thread)-273 (unlocks)-273 (an)-273 (object,)-273 (the)-273 (lock)-273 (record)-273 (used)-274 (by)-273 (the)-273 (thread)-273 (to)-273 (accomplish)-273 (the)-274 (locking)-272 (is)]TJ
+ 0 -1.1667 TD
+ [(returned)-233 (to)-234 (the)-233 (thread\325)55 (s)-233 (free)-233 (list.)-234 (In)-233 (our)-233 (current)-233 (implementation,)-233 (the)-233 (set)-233 (of)-233 (lock)-233 (records)-234 (allocated)-232 (to)]TJ
+ T*
+ [(a)-234 (g)0 (i)25 (v)15 (en)-235 (thread)-234 (only)-234 (gro)25 (ws;)-235 (there)-234 (is)-235 (no)-235 (pro)15 (vision)-234 (for)-235 (remo)15 (ving)-234 (lock)-235 (records)-234 (from)-234 (a)-235 (thread\325)55 (s)-235 (free)-234 (list)]TJ
+ T*
+ [(if)-264 (the)-264 (thread)-263 (brie\337y)-264 (locks)-264 (man)15 (y)-264 (objects,)-264 (b)21 (u)0 (t)-264 (usually)-263 (locks)-264 (fe)25 (w)65 (.)-263 (This)-264 (is)-264 (not)-264 (so)-264 (bad;)-264 (the)-264 (\322high)-264 (w)10 (ater)]TJ
+ T*
+ [(mark\323)-321 (of)-320 (allocated)-321 (lock)-320 (records)-321 (is)-320 (limited)-320 (by)-321 (the)-321 (product)-320 (of)-321 (the)-320 (thread)-321 (stack)-321 (size)-321 (and)-320 (the)-320 (maxi-)]TJ
+ T*
+ [(mum)-245 (le)15 (xical)-245 (nesting)-245 (depth)-245 (of)-245 (synchronized)-244 (statements)-245 (\(at)-245 (least)-245 (for)-246 (bytecode)-245 (created)-245 (by)-245 (compiling)]TJ
+ T*
+ [(Ja)20 (v)25 (a)-373 (language)-373 (source)-372 (code,)-374 (as)-373 (discussed)-373 (in)-373 (Section)-373 (2.2\).)-374 (If)-372 (we)-373 (wished)-374 (to)-373 (add)-373 (a)-374 (mechanism)-372 (to)]TJ
+ T*
+ [(return)-238 (lock)-239 (records)-238 (on)-238 (free)-238 (lists)-238 (to)-238 (the)-238 (global)-238 (memory)-238 (pool,)-238 (it)-238 (w)9 (ould)-238 (be)-238 (a)-238 (simple)-239 (matter)-237 (to)-239 (do)-238 (so)-238 (as)]TJ
+ T*
+ [(part)-257 (of)-257 (garbage)-257 (collection,)-257 (as)-258 (long)-257 (as)-258 (we)-257 (can)-258 (guarantee)-257 (that)-257 (no)-257 (thread)-258 (is)-257 (accessing)-257 (the)-258 (lock)-257 (record)]TJ
+ T*
+ [(free)-261 (list)-262 (during)-261 (garbage)-262 (collection.)-261 (Our)-262 (system)-261 (has)-261 (a)-261 (general)-261 (mechanism)-261 (for)-261 (restricting)-261 (when)-261 (gar-)]TJ
+ T*
+ [(bage collection occurs that can be used to pro)16 (vide this guarantee.)]TJ
+ /N91 1 Tf
+ 14 0 0 14 72 275.67 Tm
+ (6.2 Extra fast locking and unlocking of uncontended objects)Tj
+ /N92 1 Tf
+ 12 0 0 12 72 251 Tm
+ [(W)80 (e)-238 (can)-238 (optimize)-238 (the)-238 (algorithm)-238 (further)-238 (in)-239 (the)-238 (case)-238 (of)-239 (uncontended)-238 (objects.)-238 (This)-239 (optimization)-238 (fuses)]TJ
+ T*
+ [(the)-390 (meta-lock)-389 (and)-389 (monitor)21 (-lock)-390 (operations)-389 (into)-390 (a)-389 (single)-389 (step.)-390 (W)40 (ith)-389 (this)-390 (optimization,)-389 (a)-389 (thread)]TJ
+ T*
+ [(attempting)-293 (to)-294 (lock)-293 (an)-294 (object)-293 (reads)-293 (the)-294 (object\325)55 (s)-293 (multi-use)-293 (w)10 (ord.)-294 (If)-294 (the)-293 (object\325)55 (s)-293 (lock)-293 (state)-294 (is)]TJ
+ /N95 1 Tf
+ 36.6 0 TD
+ (NEU-)Tj
+ -36.6 -1.1667 TD
+ (TRAL)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(,)-276 (then)-276 (an)-276 (\322e)16 (xtra)-277 (f)11 (ast\323)-276 (path)-276 (is)-276 (tried.)-275 (The)-277 (thread)-276 (copies)-276 (the)-275 (hash)-276 (and)-276 (age)-276 (bits)-276 (into)-276 (a)-276 (fresh)-276 (lock)]TJ
+ -2.4 -1.1667 TD
+ [(record)-233 (and)-233 (b)20 (uilds)-234 (a)-233 (n)0 (e)25 (w)-234 (multi-use)-233 (v)25 (alue)-233 (containing)-234 (the)-234 (lock)-234 (record)-233 (address)-233 (and)-233 (the)]TJ
+ /N95 1 Tf
+ 33.0833 0 TD
+ (LOCKED)Tj
+ /N92 1 Tf
+ 3.8333 0 TD
+ (state.)Tj
+ -36.9167 -1.1667 TD
+ (A)Tj
+ /N95 1 Tf
+ 0.99 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 2.0675 0 TD
+ [(instruction)-268 (is)-268 (then)-267 (used)-268 (to)-268 (atomically)-267 (change)-268 (the)-268 (multi-use)-268 (w)10 (ord)-268 (to)-268 (the)-268 (ne)26 (w)-268 (v)25 (alue)-268 (if)-267 (it)-267 (has)]TJ
+ -3.0575 -1.1667 TD
+ [(not)-279 (changed)-279 (since)-280 (it)-280 (w)10 (a)0 (s)-280 (read.)-280 (If)-280 (the)]TJ
+ /N95 1 Tf
+ 14.8633 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 2.08 0 TD
+ [(succeeds,)-279 (then)-280 (the)-280 (object)-280 (is)-280 (lock)10 (ed;)-280 (otherwise,)-280 (the)-280 (nor-)]TJ
+ -16.9433 -1.1667 TD
+ [(mal)-249 (meta-locking)-249 (protocol)-248 (is)-250 (used.)-249 (W)40 (ith)-249 (this)-249 (optimization,)-249 (the)-249 (e)15 (xtra)-248 (f)10 (ast)-249 (path)-249 (for)-249 (locking)-249 (uses)-249 (one)]TJ
+ T*
+ [(atomic)-292 (instruction)-291 (rather)-292 (than)-292 (the)-291 (tw)10 (o)-292 (needed)-292 (for)-291 (meta-locking)-292 (and)-292 (meta-unlocking)-292 (and)-292 (the)-291 (total)]TJ
+ T*
+ [(number of instructions is smaller \(15 SP)93 (ARC\252 instructions\).)]TJ
+ 0 -1.75 TD
+ [(A)-287 (similar)-287 (e)15 (xtra)-287 (f)10 (ast)-286 (path)-287 (for)-287 (unlocking)-286 (is)-287 (slightly)-286 (more)-287 (complicated.)-287 (When)-287 (the)-287 (e)16 (xtra)-287 (f)11 (ast)-287 (locking)]TJ
+ 0 -1.1667 TD
+ [(path)-230 (succeeds,)-230 (the)-230 (only)-229 (lock)-230 (record)-229 (in)-230 (its)-229 (queue)-230 (is)-230 (that)-230 (of)-229 (the)-230 (locking)-229 (thread;)-230 (the)-230 (queue)-229 (\336eld)-230 (of)-229 (that)]TJ
+ T*
+ [(lock)-225 (record)-225 (is)]TJ
+ /N95 1 Tf
+ 5.6192 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(.)-225 (Another)-225 (thread)-225 (may)-225 (add)-225 (a)-225 (lock)-225 (record)-225 (to)-225 (the)-225 (queue,)-226 (changing)-225 (this)-225 (queue)-225 (\336eld)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 20 20
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (17)Tj
+ -19 56.4858 TD
+ [(at)-331 (an)15 (y)-332 (time.)-331 (So)-331 (the)-331 (e)15 (xtra)-332 (f)10 (ast)-331 (unlocking)-331 (path)-332 (must)-331 (atomically)-332 (change)-331 (the)-331 (multi-use)-331 (w)9 (ord)-331 (of)-332 (the)]TJ
+ 0 -1.1667 TD
+ [(object)-363 (back)-362 (to)-363 (its)-362 (original)-362 (contents,)-363 (b)20 (u)0 (t)-363 (only)-362 (if)-362 (the)-363 (queue)-363 (\336eld)-362 (of)-363 (the)-362 (\336rst)-362 (lock)-363 (record)-363 (remains)]TJ
+ /N95 1 Tf
+ T*
+ (NULL)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(.)-258 (Unfortunately)65 (,)-259 (this)-258 (\322double-compare-and-sw)10 (ap\323)-258 (operation)-259 (is)-259 (not)-259 (supported)-258 (in)-259 (man)15 (y)-259 (archi-)]TJ
+ -2.4 -1.1667 TD
+ [(tectures)-266 (\(though)-265 (it)-266 (is)-265 (not)-265 (completely)-266 (unheard)-266 (of;)-265 (see)-265 ([10]\).)-266 (T)80 (o)-266 (get)-265 (around)-265 (this,)-265 (we)-266 (add)-265 (a)-266 (n)0 (e)25 (w)-265 (con-)]TJ
+ T*
+ [(straint)-322 (to)-322 (the)-322 (slo)25 (w)-322 (path.)-322 (W)80 (e)-323 (require)-322 (that)-322 (lock)-322 (records)-323 (be)-322 (allocated)-322 (with)-322 (eight-byte)-321 (alignment,)-322 (so)]TJ
+ T*
+ [(that)-229 (three)-229 (bits)-228 (are)-230 (zero)-229 (in)-229 (the)-230 (address)-228 (of)-229 (a)-228 (lock)-230 (record.)-228 (In)-229 (the)]TJ
+ /N95 1 Tf
+ 23.95 0 TD
+ (LOCKED)Tj
+ /N92 1 Tf
+ 3.8292 0 TD
+ [(state,)-229 (this)-229 (e)16 (xtra)-229 (bit)-230 (is)-229 (used)-229 (to)]TJ
+ -27.7792 -1.1667 TD
+ [(summarize)-243 (the)-243 (state)-242 (of)-243 (the)-243 (queue)-243 (\336eld)-243 (of)-243 (the)-243 (\336rst)-242 (lock)-243 (record:)-243 (we)-242 (maintain)-242 (the)-243 (in)40 (v)25 (ariant)-242 (that)-243 (when)]TJ
+ T*
+ [(the)-307 (bit)-307 (is)-307 (0,)-307 (the)-307 (queue)-307 (\336eld)-307 (is)]TJ
+ /N95 1 Tf
+ 12.2075 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(.)-308 (I)0 (f)-307 (the)-307 (bit)-307 (is)-307 (1,)-307 (the)-307 (queue)-307 (may)-307 (be)-308 (non-)]TJ
+ /N95 1 Tf
+ 15.7925 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.4 0 TD
+ [(.)-307 (Thus,)-307 (the)-307 (\336rst)]TJ
+ -32.8 -1.1667 TD
+ [(thread)-303 (to)-303 (enqueue)-303 (a)-303 (lock)-302 (record)-303 (after)-303 (the)-302 (initial)-303 (one)-303 (is)-303 (required)-303 (to)-303 (set)-302 (this)-303 (bit)-303 (when)-302 (releasing)-303 (the)]TJ
+ T*
+ [(meta-lock.)-247 (Once)-247 (this)-247 (in)40 (v)25 (ariant)-247 (may)-247 (be)-248 (assumed,)-247 (we)-247 (can)-248 (construct)-247 (an)-247 (e)15 (xtra)-247 (f)10 (ast)-247 (unlock)-247 (path:)-247 (check)]TJ
+ T*
+ [(the)-261 (locking)-262 (depth,)-261 (decrementing)-262 (it)-261 (and)-261 (returning)-262 (if)-261 (it)-261 (is)-261 (greater)-261 (than)-261 (one.)-262 (Otherwise,)-261 (construct)-262 (the)]TJ
+ T*
+ [(e)15 (xpected)-357 (current)-357 (v)25 (alue)-357 (of)-358 (the)-357 (multi-use)-358 (w)10 (ord)-358 (\(pointer)-357 (to)-357 (same)-357 (lock)-358 (record,)-357 (queue)-358 (\336eld)-358 (bit)-357 (still)]TJ
+ T*
+ [(clear)40 (,)]TJ
+ /N95 1 Tf
+ 2.5008 0 TD
+ (LOCKED)Tj
+ /N92 1 Tf
+ 3.9475 0 TD
+ [(state\),)-347 (and)-348 (the)-347 (desired)-348 (ne)25 (w)-347 (v)25 (alue)-347 (\(original)-347 (multi-use)-348 (bits,)]TJ
+ /N95 1 Tf
+ 23.7967 0 TD
+ (NEUTRAL)Tj
+ /N92 1 Tf
+ 4.5475 0 TD
+ [(state\),)-347 (and)]TJ
+ -34.7925 -1.1667 TD
+ [(perform)-257 (a)]TJ
+ /N95 1 Tf
+ 4.1792 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 2.0575 0 TD
+ [(instruction)-257 (to)-257 (write)-257 (the)-257 (ne)25 (w)-257 (v)25 (alue)-257 (if)-256 (the)-257 (current)-257 (v)25 (alue)-257 (is)-257 (still)-257 (the)-257 (e)15 (xpected)-257 (v)25 (alue.)-257 (If)]TJ
+ -6.2367 -1.1667 TD
+ [(no)-332 (other)-331 (thread)-332 (has)-331 (enqueued)-331 (a)-332 (lock)-331 (record,)-331 (then)-331 (the)]TJ
+ /N95 1 Tf
+ 21.9467 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 2.1317 0 TD
+ [(succeeds)-331 (and)-332 (the)-331 (object)-331 (is)-331 (unlock)10 (ed;)]TJ
+ -24.0783 -1.1667 TD
+ [(otherwise,)-316 (we)-316 (re)25 (v)15 (ert)-316 (to)-316 (the)-315 (normal)-316 (meta-locking)-315 (protocol.)-316 (If)-316 (recursi)25 (v)15 (e)-316 (locking)-316 (were)-316 (found)-315 (to)-316 (be)]TJ
+ T*
+ [(v)15 (ery)-231 (rare,)-231 (this)-232 (proposal)-231 (could)-231 (be)-231 (e)15 (xtended)-231 (to)-231 (also)-231 (summarize)-231 (the)-231 (lock)-231 (count)-231 (in)-231 (the)-231 (e)16 (xtra)-232 (bit,)-231 (so)-231 (that)]TJ
+ T*
+ [(a)-236 (zero)-236 (bit)-236 (observ)14 (ed)-236 (by)-236 (an)-235 (unlocking)-236 (thread)-236 (implied)-236 (both)-235 (a)]TJ
+ /N95 1 Tf
+ 23.1317 0 TD
+ (NULL)Tj
+ /N92 1 Tf
+ 2.6358 0 TD
+ [(queue)-236 (\336eld)-236 (and)-235 (a)-236 (lock)-236 (count)-235 (of)-236 (1,)]TJ
+ -25.7675 -1.1667 TD
+ 0 Tw
+ [(eliminating the e)16 (xplicit test for recursion.)]TJ
+ 0 -1.75 TD
+ [(The)-287 (instruction)-286 (count)-286 (of)-286 (the)-287 (e)16 (xtra)-287 (f)10 (ast)-286 (unlocking)-286 (sequence)-286 (is)-286 (similar)-287 (to)-286 (that)-287 (of)-286 (e)15 (xtra)-287 (f)10 (ast)-286 (locking,)]TJ
+ 0 -1.1667 TD
+ [(and)-376 (both)-376 (use)-376 (a)-376 (single)-376 (atomic)-376 (instruction.)-376 (The)-376 (thin)-376 (locks)-376 (scheme)-376 (uses)-376 (no)-376 (atomic)-376 (instruction)-375 (in)]TJ
+ T*
+ [(unlocking,)-300 (b)20 (ut,)-299 (as)-299 (we)-300 (ha)20 (v)15 (e)-299 (discussed,)-299 (pays)-299 (for)-300 (that)-300 (lack)-300 (with)-299 (the)-300 (possibility)-299 (of)-299 (unbounded)-300 (b)20 (usy-)]TJ
+ T*
+ [(w)10 (aiting.)-284 (W)80 (e)-284 (feel)-285 (that)-284 (in)-284 (man)15 (y)-285 (situations)-284 (the)-285 (trade-of)25 (fs)-285 (made)-284 (in)-284 (our)-284 (algorithm)-284 (will)-285 (be)-284 (more)-285 (desir-)]TJ
+ T*
+ (able.)Tj
+ /N91 1 Tf
+ 14 0 0 14 72 350.67 Tm
+ (6.3 Flexibility)Tj
+ /N92 1 Tf
+ 12 0 0 12 72 326 Tm
+ [(One)-346 (of)-346 (the)-345 (main)-346 (adv)25 (antages)-345 (we)-346 (ha)20 (v)16 (e)-346 (claimed)-346 (for)-346 (the)-345 (meta-locking)-345 (approach)-346 (is)-345 (\337e)15 (xibility)65 (.)-346 (This)]TJ
+ T*
+ [(\337e)15 (xibility)-309 (results)-309 (from)-309 (the)-309 (f)10 (act)-309 (that)-309 (we)-309 (place)-309 (fe)25 (w)-310 (constraints)-308 (on)-309 (the)-310 (nature)-308 (of)-309 (the)-309 (data)-309 (structures)]TJ
+ T*
+ [(protected)-289 (by)-289 (the)-290 (meta-lock.)-288 (Speci\336cally)65 (,)-289 (i)0 (t)-289 (enables)-289 (separation)-289 (of)-289 (mechanism)-289 (and)-289 (polic)15 (y)65 (,)-289 (to)-289 (allo)25 (w)]TJ
+ T*
+ [(implementation of a v)26 (ariety of monitor semantics.)]TJ
+ 0 -1.75 TD
+ [(W)80 (e)-301 (ha)20 (v)15 (e)-302 (tested)-301 (this)-302 (\337e)15 (xibility)-302 (claim)-301 (to)-301 (some)-301 (e)15 (xtent)-302 (in)-301 (an)-302 (attempt)-302 (to)-301 (address)-302 (tw)10 (o)-302 (potential)-301 (short-)]TJ
+ 0 -1.1667 TD
+ [(comings)-459 (of)-459 (our)-459 (simple)-460 (link)10 (ed-list)-459 (data)-459 (structure:)-459 (lack)-459 (of)-459 (f)11 (airness)-460 (and)-459 (long)-459 (searches)-459 (through)]TJ
+ T*
+ [(queues.)-232 (First,)-232 (consider)-233 (f)11 (airness.)-232 (Moti)25 (v)25 (ated)-232 (by)-232 (Buhr)]TJ
+ /N94 1 Tf
+ 20.535 0 TD
+ [(et)-233 (al.,)]TJ
+ /N92 1 Tf
+ 2.465 0 TD
+ [(who)-232 (classify)-232 (and)-233 (compare)-232 (a)-233 (spectrum)-231 (of)]TJ
+ -23 -1.1667 TD
+ [(monitor)-399 (\322styles\323)-399 (that)-399 (of)25 (fer)-399 (dif)25 (ferent)-400 (trade-of)25 (fs)-399 (between)-399 (performance)-399 (and)-399 (f)11 (airness)-400 ([7],)-399 (we)-400 (pro-)]TJ
+ T*
+ [(grammed)-338 (a)-338 (v)15 (ersion)-338 (that)-338 (gi)26 (v)15 (e)0 (s)-339 (preference)-338 (to)-338 (a)15 (w)10 (ak)10 (ened)-339 (w)10 (aiters)-338 (\(so-called)-338 (\322priority)-337 (non-blocking)]TJ
+ T*
+ [(monitors\323\).)-309 (T)80 (o)-309 (pro)16 (vide)-310 (this)-309 (preference,)-309 (we)-309 (replaced)-309 (the)-309 (single)-309 (queue)-309 (with)-309 (three)-309 (queues,)-309 (holding)]TJ
+ T*
+ [(entering,)-294 (w)10 (aiting,)-294 (and)-293 (a)15 (w)10 (ak)10 (ened)-294 (threads,)-293 (respecti)25 (v)15 (ely)65 (.)-293 (N)0 (o)25 (w)-294 (it)-294 (is)-294 (possible)-293 (to)-294 (\336nd)-293 (and)-293 (gi)25 (v)15 (e)-293 (prefer-)]TJ
+ T*
+ [(ence)-263 (to)-262 (a)15 (w)9 (ak)11 (ened)-263 (w)9 (aiters)-262 (without)-262 (searching.)-263 (Similarly)65 (,)]TJ
+ /N95 1 Tf
+ 22.3358 0 TD
+ (notify\(\))Tj
+ /N92 1 Tf
+ 5.0625 0 TD
+ [(can)-263 (e)15 (x)15 (ecute)-262 (in)-263 (constant)-262 (time,)]TJ
+ -27.3983 -1.1667 TD
+ [(by)-278 (mo)15 (ving)-279 (the)-278 (\336rst)-279 (thread)-278 (from)-278 (the)-279 (w)10 (aiting)-279 (queue)-279 (to)-278 (the)-279 (a)15 (w)10 (ak)10 (ened)-279 (queue.)-279 (Second,)-278 (consider)-278 (con-)]TJ
+ T*
+ [(tention.)-270 (T)79 (o)-271 (allo)25 (w)-270 (threads)-271 (to)-270 (append)-270 (lock)-271 (records)-270 (to)-271 (queues)-270 (without)-270 (ha)20 (ving)-271 (to)-270 (search)-271 (to)-270 (the)-271 (end)-270 (of)]TJ
+ T*
+ [(the)-272 (queue,)-273 (a)-272 (search)-273 (which)-272 (could)-272 (become)-272 (costly)-273 (if)-272 (queues)-272 (get)-272 (long,)-272 (we)-272 (k)10 (ept)-272 (head)-273 (and)-272 (tail)-272 (pointers)]TJ
+ T*
+ [(for)-367 (each)-367 (of)-368 (the)-367 (three)-367 (queues.)-368 (T)80 (ail)-367 (pointers)-367 (also)-367 (allo)25 (w)]TJ
+ /N95 1 Tf
+ 22.3133 0 TD
+ (notifyAll\(\))Tj
+ /N92 1 Tf
+ 6.9675 0 TD
+ [(to)-367 (run)-368 (in)-367 (constant)-367 (time,)]TJ
+ -29.2808 -1.1667 TD
+ [(re)15 (gardless)-305 (of)-304 (the)-305 (number)-305 (of)-304 (threads)-305 (w)10 (aiting,)-305 (via)-305 (list)-305 (concatenation.)-305 (While)-305 (this)-305 (alternati)26 (v)15 (e)-305 (imple-)]TJ
+ T*
+ [(mentation)-286 (w)9 (a)0 (s)-287 (straightforw)11 (ard,)-287 (performance)-287 (turned)-287 (out)-287 (to)-287 (be)-287 (inferior)-287 (to)-287 (our)-287 (single-queue)-286 (system)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 21 21
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (18)Tj
+ -19 56.4858 TD
+ [(because)-349 (greater)-349 (f)11 (airness)-350 (incurs)-348 (a)-349 (higher)-349 (conte)15 (xt)-349 (switch)-349 (rate)-349 (and)-348 (the)-350 (three-queue)-348 (data)-349 (structures)]TJ
+ 0 -1.1667 TD
+ 0 Tw
+ [(were more hea)20 (vyweight.)]TJ
+ /N91 1 Tf
+ 14 0 0 14 72 665.67 Tm
+ [(6.4 Hard)15 (war)18 (e without)]TJ
+ /N98 1 Tf
+ 9.8829 0 TD
+ (SWAP)Tj
+ /N91 1 Tf
+ 2.4 0 TD
+ ( or)Tj
+ /N98 1 Tf
+ 1.4443 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 12 0 0 12 72 641 Tm
+ [(The)-230 (meta-lock)-229 (algorithm)-230 (relies)-230 (on)-230 (tw)10 (o)-230 (\322)0 (e)16 (xotic\323)-230 (atomic)-230 (operations:)]TJ
+ /N95 1 Tf
+ 26.6508 0 TD
+ (SWAP)Tj
+ /N92 1 Tf
+ 2.63 0 TD
+ (and)Tj
+ /N95 1 Tf
+ 1.6733 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 1.8 0 TD
+ [(.)-230 (First,)-230 (note)-230 (that)]TJ
+ /N95 1 Tf
+ -32.7542 -1.1667 TD
+ (SWAP)Tj
+ /N92 1 Tf
+ 2.6483 0 TD
+ [(is)-248 (easily)-249 (simulated)-248 (using)]TJ
+ /N95 1 Tf
+ 10.0492 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 1.8 0 TD
+ [(:)-249 (repeatedly)-247 (read)-249 (the)-248 (memory)-248 (location)-249 (and)]TJ
+ /N95 1 Tf
+ 17.1233 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 2.0475 0 TD
+ [(until)-248 (success.)]TJ
+ -33.6683 -1.1667 TD
+ (The)Tj
+ /N95 1 Tf
+ 1.9692 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 2.2142 0 TD
+ [(operation,)-414 (or)-414 (some)-414 (other)-414 (suf)25 (\336ciently)-413 (po)25 (werful)-414 (primiti)25 (v)15 (e)-414 (such)-414 (as)-414 (\322load-lock)10 (ed/store-)]TJ
+ -4.1833 -1.1667 TD
+ [(conditional,)70 (\323)-423 (seem)-422 (to)-423 (be)-422 (a)20 (v)25 (ailable)-423 (on)-422 (most)-422 (modern)-422 (architectures,)-422 (including)-422 (mainstream)-422 (Intel,)]TJ
+ T*
+ [(UltraSP)92 (ARC\252, Po)26 (werPC, and Alpha microprocessors.)]TJ
+ 0 -1.75 TD
+ [(The)-296 (JVM)-296 (in)-295 (which)-296 (we)-296 (implemented)-296 (our)-295 (synchronization)-296 (must)-296 (run)-295 (on)-296 (the)-296 (pre)25 (vious)-295 (generation)-295 (of)]TJ
+ 0 -1.1667 TD
+ [(SP)92 (ARC)-314 (processors,)-314 (which)-314 (has)]TJ
+ /N95 1 Tf
+ 12.58 0 TD
+ (SWAP)Tj
+ /N92 1 Tf
+ 2.7142 0 TD
+ [(b)20 (u)0 (t)-314 (does)-314 (not)-314 (ha)20 (v)16 (e)]TJ
+ /N95 1 Tf
+ 7.4783 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 1.8 0 TD
+ [(.)-314 (While)-314 (correctness)-313 (cannot)-314 (be)-314 (com-)]TJ
+ -24.5725 -1.1667 TD
+ [(promised,)-251 (it)-251 (w)10 (a)0 (s)-251 (deemed)-251 (acceptable)-251 (to)-251 (trade)-252 (a)16 (w)9 (ay)-251 (some)-251 (performance)-251 (and)-251 (scalability)-250 (on)-252 (this)-251 (older)]TJ
+ T*
+ [(hardw)10 (are.)-322 (W)80 (e)-323 (\336rst)-323 (dropped)-322 (the)-323 (e)15 (xtra)-322 (f)10 (ast)-322 (synchronization)-322 (optimization)-323 (because)-322 (it)-323 (relies)-322 (directly)]TJ
+ T*
+ (on)Tj
+ /N95 1 Tf
+ 1.2633 0 TD
+ (CAS)Tj
+ /N92 1 Tf
+ 1.8 0 TD
+ [(.)-263 (N)0 (e)15 (xt,)-263 (we)-263 (modi\336ed)]TJ
+ /N95 1 Tf
+ 8.2033 0 TD
+ (getMetaLock\(\))Tj
+ /N92 1 Tf
+ 8.0633 0 TD
+ [(to)-263 (use)-264 (a)-263 (test-and-set)-263 (protocol)-263 (\(where)-263 (\322set\323)-263 (means)]TJ
+ -19.33 -1.1667 TD
+ [(sw)10 (apping)-311 (out)-311 (the)-311 (lock)10 (ed)-311 (v)25 (alue)-311 (1)-312 (and)-311 (\322test\323)-311 (means)-312 (obtaining)-311 (a)-311 (non-lock)10 (ed)-312 (v)25 (alue\).)-311 (When)-311 (the)-311 (test)]TJ
+ T*
+ [(f)10 (ails,)-368 (the)-370 (thread)-369 (yields)-369 (and)-369 (optionally)-369 (sleeps)-369 (\(using)-369 (e)16 (xponential)-369 (back-of)25 (f)-369 (a)0 (s)-369 (i)0 (n)-369 ([1]\).)-369 (The)-369 (corre-)]TJ
+ T*
+ (sponding)Tj
+ /N95 1 Tf
+ 3.945 0 TD
+ (releaseMetaLock\(\))Tj
+ /N92 1 Tf
+ 10.4775 0 TD
+ [(operation)-277 (simply)-278 (stores)-278 (back)-278 (the)-277 (release)-277 (bit)-278 (pattern,)-277 (which)-278 (of)]TJ
+ -14.4225 -1.1667 TD
+ [(course must be dif)25 (ferent from the lock)10 (ed v)25 (alue 1.)]TJ
+ /N91 1 Tf
+ 16 0 0 16 72 417.33 Tm
+ [(7 P)20 (erf)25 (ormance)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 394 Tm
+ [(Usually)65 (,)-373 (good)-373 (performance)-373 (is)-373 (tak)10 (en)-373 (to)-374 (mean)-373 (that)-373 (both)-373 (memory)-373 (and)-373 (CPUs)-373 (are)-374 (used)-373 (ef)25 (\336ciently)65 (.)]TJ
+ T*
+ [(Since)-289 (dif)25 (ferent)-289 (systems)-289 (must)-288 (mak)10 (e)-289 (space/time)-288 (trade-of)25 (fs)-289 (dif)25 (ferently)65 (,)-289 (w)0 (e)-288 (shall)-289 (consider)-288 (space)-288 (and)]TJ
+ T*
+ [(time)-393 (costs)-393 (for)-392 (our)-393 (synchronization)-392 (algorithm)-393 (separately)66 (.)-393 (All)-393 (our)-393 (measurements)-393 (were)-393 (collected)]TJ
+ T*
+ [(using)-256 (a)-257 (near)20 (-FCS)-257 (v)15 (ersion)-257 (of)-256 (EVM)-257 (on)-257 (a)-256 (lightly)-257 (loaded)-256 (4-CPU)-257 (296)-257 (MHz)-257 (UltraSP)92 (ARC)-256 (system)-256 (with)]TJ
+ T*
+ [(2)-284 (gigabytes)-284 (of)-284 (RAM)-284 (and)-284 (the)-285 (Solaris\252)-284 (2.6)-284 (operating)-284 (system.)-283 (Some)-284 (measurements)-284 (were)-284 (obtained)]TJ
+ T*
+ [(by)-302 (adding)-300 (counters)-302 (to)-301 (the)-301 (code.)-301 (T)80 (o)-302 (minimize)-301 (the)-301 (disturbance)-301 (resulting)-301 (from)-301 (the)-301 (instrumentation,)]TJ
+ T*
+ [(we used per)20 (-thread counters that were accumulated into global totals as threads e)17 (xited.)]TJ
+ /N91 1 Tf
+ 14 0 0 14 72 277.67 Tm
+ (7.1 Benchmarks)Tj
+ /N92 1 Tf
+ 12 0 0 12 72 253 Tm
+ [(T)80 (able)-250 (1)-235 (sho)26 (ws)-235 (the)-234 (benchmarks)-234 (we)-234 (use)-234 (to)-234 (assess)-234 (the)-235 (performance)-234 (of)-234 (our)-234 (synchronization)-234 (code.)-234 (The)]TJ
+ T*
+ [(HelloW)80 (orld)-491 (program)-491 (sho)25 (ws)-491 (ho)25 (w)-490 (the)-490 (minimal)-491 (program)-491 (beha)21 (v)15 (es.)-491 (The)-490 (ne)15 (xt)-491 (se)26 (v)15 (e)0 (n)-491 (lines)-491 (sho)25 (w)]TJ
+ T*
+ [(widely-kno)25 (wn)-370 (SPECjvm98)-370 (benchmarks)-370 ([26].)-371 (Finally)66 (,)-371 (w)0 (e)-371 (include)-370 (a)-371 (selection)-370 (of)-370 (multi-threaded)]TJ
+ T*
+ [(benchmarks,)-270 (some)-270 (of)-270 (which)-270 (perform)-271 (signi\336cant)-270 (amounts)-270 (of)-270 (I/O)-270 (and)-270 (some)-270 (of)-270 (which)-270 (use)-270 (graphics.)]TJ
+ T*
+ [(The e)15 (x)15 (ecution times in the table are best of tw)11 (o runs.)]TJ
+ /N91 1 Tf
+ 14 0 0 14 72 164.67 Tm
+ [(7.2 Space perf)25 (ormance)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 140 Tm
+ [(W)80 (e)0 ( consider separately the space costs of)]TJ
+ /N94 1 Tf
+ 16.7758 0 TD
+ (used)Tj
+ /N92 1 Tf
+ 1.8333 0 TD
+ ( and)Tj
+ /N94 1 Tf
+ 1.9442 0 TD
+ (unused)Tj
+ /N92 1 Tf
+ 2.8325 0 TD
+ [( synchronization capability)65 (.)]TJ
+ /N94 1 Tf
+ -23.3858 -1.75 TD
+ [(Cost)-271 (of)-270 (used)-271 (sync)15 (hr)45 (onization)-270 (capability:)-270 (the)-271 (cost)-271 (for)-270 (objects)-270 (that)-271 (ar)37 (e)-270 (actually)-271 (sync)15 (hr)45 (onized)-271 (upon.)]TJ
+ /N92 1 Tf
+ 0 -1.1667 TD
+ [(From)-243 (the)-243 (description)-242 (of)-244 (our)-243 (algorithm,)-242 (it)-243 (follo)25 (ws)-243 (that)-242 (this)-243 (space)-243 (cost)-242 (is)-243 (proportional)-243 (to)-243 (the)-243 (number)]TJ
+ T*
+ [(of)-371 (lock)-371 (records)-370 (in)-371 (use)-371 (at)-371 (an)15 (y)-371 (point)-371 (in)-371 (time.)-371 (More)-371 (precisely)65 (,)-371 (since)-371 (threads)-371 (rec)15 (ycle)-371 (lock)-370 (records)]TJ
+ T*
+ [(locally)-240 (rather)-240 (than)-240 (globally)65 (,)-240 (w)0 (e)-240 (report)-240 (the)-240 (number)-240 (of)-239 (lock)-240 (records)-239 (allocated)-240 (by)-241 (the)-240 (global)-240 (allocator)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 22 22
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (19)Tj
+ -19 20.0692 TD
+ [(during)-334 (the)-334 (e)15 (x)15 (ecution)-334 (of)-334 (each)-335 (benchmark.)-333 (This)-334 (higher)-334 (number)-334 (re\337ects)-334 (our)-334 (implementation)-334 (more)]TJ
+ 0 -1.1667 TD
+ [(accurately)65 (.)-314 (I)0 (n)-314 (the)-315 (w)10 (orst)-315 (case,)-314 (a)-315 (program)-314 (will)-314 (synchronize)-314 (on)-314 (e)25 (v)15 (ery)-315 (object)-314 (allocated)-315 (\(see)-314 (Section)]TJ
+ T*
+ [(2.2\),)-252 (making)-252 (the)-252 (w)10 (orst-case)-252 (space)-252 (cost)-251 (of)-252 (our)-252 (algorithm,)-252 (as)-252 (well)-251 (as)-252 (of)-252 (an)15 (y)-252 (other)-252 (algorithm)-252 (that)-252 (we)]TJ
+ T*
+ [(kno)25 (w)-235 (of,)-235 (proportional)-234 (to)-235 (the)-235 (size)-235 (of)-234 (the)-235 (heap.)-234 (F)15 (ortunately)65 (,)-235 (this)-235 (number)-235 (is)-235 (f)10 (a)0 (r)-235 (more)-235 (pessimistic)-235 (than)]TJ
+ T*
+ [(the)-242 (beha)20 (vior)-242 (typical)-243 (programs)-242 (e)15 (xhibit.)-243 (T)80 (able)-250 (2)-243 (sho)26 (ws)-243 (that)-242 (for)-242 (our)-243 (benchmarks,)-242 (the)-243 (total)-242 (number)-242 (of)]TJ
+ T*
+ [(lock)-225 (records)-225 (allocated)-225 (is)-225 (v)15 (ery)-225 (small,)-225 (and)-225 (pales)-225 (in)-225 (comparison)-225 (with)-225 (the)-225 (total)-225 (number)-226 (of)-224 (objects)-225 (allo-)]TJ
+ T*
+ [(cated.)-240 (Moreo)14 (v)15 (e)0 (r)40 (,)-240 (at)-240 (24)-240 (bytes)-241 (per)-240 (lock)-240 (record,)-240 (e)25 (v)15 (en)-240 (the)-240 (w)10 (orst)-240 (program)-240 (seen,)-240 (the)-240 (v)20 (olano)-240 (serv)15 (er)40 (,)-241 (con-)]TJ
+ T*
+ [(sumes)-337 (77)-336 (Kbytes)-336 (for)-336 (lock)-336 (records,)-336 (a)-336 (tri)25 (vial)-337 (amount)-336 (compared)-336 (with)-336 (the)-336 (se)25 (v)15 (eral)-336 (Mbytes)-337 (used)-336 (for)]TJ
+ T*
+ 0 Tw
+ (objects and thread stacks.)Tj
+ /N94 1 Tf
+ 0 -1.75 TD
+ [(Cost)-272 (of)-272 (unused)-272 (sync)15 (hr)45 (onization)-272 (capability:)-272 (the)-272 (cost)-271 (for)-272 (objects)-272 (that)-271 (ar)37 (e)-272 (n)0 (e)15 (ver)-271 (sync)15 (hr)46 (onized)-272 (upon)]TJ
+ /N92 1 Tf
+ 38.75 0 TD
+ (.)Tj
+ -38.75 -1.1667 TD
+ [(This)-272 (cost,)-271 (in)-271 (our)-272 (meta-lock)-272 (scheme,)-272 (amounts)-271 (to)-272 (tw)10 (o)-272 (bits)-272 (per)-271 (object.)-272 (Ho)25 (we)25 (v)15 (e)0 (r)40 (,)-272 (an)-272 (alternati)26 (v)15 (e)-272 (vie)25 (w)]TJ
+ T*
+ [(is)-251 (that)-252 (the)-252 (cost)-251 (is)-251 (either)-252 (0)-252 (o)0 (r)-251 (1)-252 (w)10 (ord,)-251 (since)-252 (it)-251 (is)-252 (impractical)-251 (to)-252 (ha)20 (v)15 (e)-252 (objects)-251 (of)-252 (fractional)-251 (w)10 (ord)-252 (sizes)]TJ
+ T*
+ [(on)-417 (contemporary)-417 (hardw)11 (are.)-417 (Put)-417 (dif)25 (ferently)65 (,)]TJ
+ /N94 1 Tf
+ 18.3142 0 TD
+ (if)Tj
+ /N92 1 Tf
+ 0.9725 0 TD
+ [(tw)10 (o)-417 (spare)-417 (bits)-417 (can)-417 (be)-417 (found)-417 (in)-417 (objects)-417 (without)]TJ
+ -19.2867 -1.1667 TD
+ [(increasing)-291 (object)-292 (sizes,)-291 (our)-291 (locking)-291 (algorithm)-292 (has)-291 (no)-291 (space)-291 (cost)-291 (for)-291 (objects)-291 (that)-292 (are)-291 (not)-291 (synchro-)]TJ
+ T*
+ [(nized)-309 (upon.)-308 (Otherwise,)-309 (if)-309 (\336nding)-308 (tw)10 (o)-309 (bits)-309 (requires)-309 (increasing)-308 (the)-309 (size)-309 (of)-309 (objects)-309 (by)-309 (a)-309 (full)-309 (w)10 (ord,)]TJ
+ 9.5708 53.3333 TD
+ [(T)80 (able 1. Characterization of benchmark programs)]TJ
+ /N91 1 Tf
+ 10 0 0 10 461.9 687.33 Tm
+ [(r)18 (eal time, seconds)]TJ
+ -38.926 -2.9 TD
+ [(Benchmark)-2573 (Description)-18031 ( #lines)]TJ
+ 8 0 0 8 405.08 662.33 Tm
+ (a)Tj
+ 10 0 0 10 415.81 658.33 Tm
+ [(#thr)18 (eads)]TJ
+ 8 0 0 8 452.85 662.33 Tm
+ (b)Tj
+ 10 0 0 10 469.64 670.33 Tm
+ (with)Tj
+ -0.943 -1.2 TD
+ (extrafast)Tj
+ 4.314 1.2 TD
+ (without)Tj
+ -0.249 -1.2 TD
+ (extrafast)Tj
+ /N92 1 Tf
+ -42.822 -1.7 TD
+ [(Hello)-5351 (Hello w)10 (orld program)-17433 (5)-4004 (1)-2754 (0.7)-2875 (0.7)]TJ
+ T*
+ [(_201_compress)-1296 (LZW compression and decompression)-9453 (927)-4004 (1)-2254 (45.8)-2375 (46.0)]TJ
+ T*
+ [(_202_jess)-3573 (V)111 (ersion of N)35 (ASA)111 (\325)55 (s)0 ( CLIPS e)15 (xpert system shell)-5111 (10,579)-4004 (1)-2254 (22.3)-2375 (24.8)]TJ
+ T*
+ [(_209_db)-4073 (Search and modify a database)-12176 (1,028)-4004 (1)-2254 (72.1)-2375 (87.9)]TJ
+ T*
+ [(_213_ja)21 (v)25 (a)0 (c)-3009 (Source to bytecode compiler)-12147 (25,211)-4004 (1)-2254 (42.7)-2375 (48.9)]TJ
+ T*
+ [(_222_mpe)15 (g)6 (audio)-650 (Decompress audio \336le)-16202 (n/a)-4004 (1)-2254 (50.4)-2375 (51.3)]TJ
+ T*
+ [(_227_mtrt)-3406 (Multi-threaded image rendering)-11342 (3,799)-4004 (2)-2254 (13.2)-2375 (13.6)]TJ
+ T*
+ [(_228_jack)-3407 (P)16 (arser generator generating itself)-10887 (8,194)-4004 (1)-2254 (34.5)-2375 (38.0)]TJ
+ T*
+ [(_224_richards)-1852 (Fi)25 (v)16 (e)-247 (threads)-246 (running)-246 (multiple)-247 (v)15 (ersions)-246 (of)-246 (O/S)-247 (simulator)-1836 (3,637)-4004 (5)-2254 (17.3)-2375 (19.0)]TJ
+ T*
+ [(_233_tmix)-3239 (Thread mix: sort, crc, producer)19 (-consumer)40 (, primes, etc.)-2376 (8,194)-3504 (14)-2254 (28.8)-2375 (29.1)]TJ
+ T*
+ [(SwingMark)-2851 (Benchmark and test of swing libraries)-8925 (3,998)-4004 (8)-2254 (51.3)-2375 (51.5)]TJ
+ T*
+ [(v)21 (olano serv)14 (er)]TJ
+ 8 0 0 8 126.43 458.33 Tm
+ (c)Tj
+ 10 0 0 10 148.37 454.33 Tm
+ [(\322Chat serv)15 (er)41 (,)69 (\323)0 ( reads and distrib)21 (utes messages)-7072 (n/a)-3004 (406)]TJ
+ 33.624 -0.85 TD
+ [(9.6)-2375 (10.3)]TJ
+ -41.197 -0.85 TD
+ [(v)21 (olano client)-2400 (Generates w)11 (ork-load to stress serv)13 (er)-10618 (n/a)-3004 (402)]TJ
+ 0 -1.7 TD
+ (JWS)Tj
+ 8 0 0 8 91.53 424.33 Tm
+ (d)Tj
+ 10 0 0 10 148.37 420.33 Tm
+ [(Ja)21 (v)25 (a)0 ( W)80 (eb Serv)14 (er\252, serving 20,000 requests)-5531 (200,000)-3504 (63)-2254 (25.7)-2375 (27.3)]TJ
+ ET
+ 0 G
+ 2 J
+ 0 j
+ 0.36 w
+ 3.86 M
+ []0 d
+ 203.63 410.15 m
+ 77.64 410.15 l
+ S
+ BT
+ 10 0 0 10 71.64 400.33 Tm
+ [(a.)-385 (Approximate lines of source code in the benchmark itself, e)14 (xcluding class library code.)]TJ
+ 0 -1.5 TD
+ [(b)40 (.)-369 (Maximum)-327 (number)-327 (of)-327 (acti)25 (v)15 (e)-327 (threads,)-327 (e)15 (xcluding)-327 (three)-327 (system)-327 (threads)-327 (\(\336nalizer)40 (,)-327 (reference)-327 (handler)40 (,)-327 (and)-326 (signal)-327 (dis-)]TJ
+ 1.079 -1.2 TD
+ [(patcher\).)-300 (All)-300 (SPEC)-300 (programs)-300 (actually)-300 (run)-300 (a)-300 (second)-300 (user)20 (-le)25 (v)15 (e)0 (l)-300 (thread)-300 (\(secondary)-300 (\336nalizer\))-300 (b)20 (u)0 (t)-300 (since)-300 (this)-299 (thread)-301 (is)]TJ
+ T*
+ [(v)14 (ery short-li)25 (v)16 (ed, we do not count it.)]TJ
+ -1.079 -1.5 TD
+ [(c.)-385 (V)129 (olanoMark v)14 (ersion 2.0.0 b)20 (uild 137 [22].)]TJ
+ T*
+ [(d.)-329 (http://www)64 (.sun.com/softw)11 (are/jwebserv)15 (er/inde)14 (x.html.)]TJ
+ ET
+ 0 J
+ 0.6 w
+ 71.64 414.25 m
+ 71.64 680.75 l
+ B*
+ 147.37 413.75 m
+ 147.37 681.25 l
+ B*
+ 373.17 413.75 m
+ 373.17 681.25 l
+ B*
+ 414.03 413.75 m
+ 414.03 681.25 l
+ B*
+ 459.07 413.75 m
+ 459.07 697.75 l
+ B*
+ 499.11 413.75 m
+ 499.11 681.25 l
+ B*
+ 540.36 414.25 m
+ 540.36 697.75 l
+ B*
+ 540.61 698 m
+ 458.82 698 l
+ B*
+ 540.61 681 m
+ 71.39 681 l
+ B*
+ 540.11 653.25 m
+ 71.89 653.25 l
+ B*
+ 540.11 650.75 m
+ 71.89 650.75 l
+ B*
+ 540.11 636.25 m
+ 71.89 636.25 l
+ B*
+ 540.11 633.75 m
+ 71.89 633.75 l
+ B*
+ 540.61 618 m
+ 71.39 618 l
+ B*
+ 540.61 601 m
+ 71.39 601 l
+ B*
+ 540.61 584 m
+ 71.39 584 l
+ B*
+ 540.61 567 m
+ 71.39 567 l
+ B*
+ 540.61 550 m
+ 71.39 550 l
+ B*
+ 540.61 533 m
+ 71.39 533 l
+ B*
+ 540.11 517.25 m
+ 71.89 517.25 l
+ B*
+ 540.11 514.75 m
+ 71.89 514.75 l
+ B*
+ 540.61 499 m
+ 71.39 499 l
+ B*
+ 540.61 482 m
+ 71.39 482 l
+ B*
+ 540.61 465 m
+ 71.39 465 l
+ B*
+ 459.32 448 m
+ 71.39 448 l
+ B*
+ 540.61 431 m
+ 71.39 431 l
+ B*
+ 540.61 414 m
+ 71.39 414 l
+ B*
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 23 23
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (20)Tj
+ -19 30.0692 TD
+ [(then)-287 (a)-288 (dif)25 (ferent)-287 (synchronization)-287 (algorithm)-287 (that)-287 (tak)10 (es)-288 (adv)25 (antage)-287 (of)-287 (a)-288 (full)-287 (w)9 (ord)-287 (of)-287 (memory)-288 (should)]TJ
+ 0 -1.1667 TD
+ [(\(probably\))-296 (be)-298 (used.)-297 (Thus,)-297 (it)-296 (can)-297 (be)-297 (ar)18 (gued,)-297 (our)-297 (algorithm)-297 (has)-297 (no)-297 (space)-296 (o)15 (v)15 (erhead)-297 (for)-296 (objects)-297 (that)]TJ
+ T*
+ 0 Tw
+ (are not synchronized upon.)Tj
+ /N91 1 Tf
+ 14 0 0 14 72 334.67 Tm
+ [(7.3 T)18 (ime perf)26 (ormance)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 310 Tm
+ [(W)80 (e)-263 (study)-264 (time)-264 (performance)-263 (of)-264 (our)-264 (algorithm)-263 (in)-264 (tw)10 (o)-263 (w)10 (ays.)-264 (First,)-263 (we)-264 (compare)-263 (the)-264 (cost)-263 (of)-264 (synchro-)]TJ
+ T*
+ [(nization)-255 (in)-256 (our)-255 (system)-256 (with)-255 (that)-256 (of)-256 (the)-255 (original)-255 (JVM)-256 (found)-256 (in)-255 (the)-255 (\322JDK)-256 (1.2)]TJ
+ /N94 1 Tf
+ 30.2517 0 TD
+ [(Refer)37 (ence)]TJ
+ /N92 1 Tf
+ 4.2167 0 TD
+ [(Release)-256 (for)]TJ
+ -34.4683 -1.1667 TD
+ [(Solaris.)70 (\323)-298 (F)15 (or)-299 (this)-298 (study)65 (,)-298 (a)0 (s)-299 (e)15 (xplained)-297 (belo)25 (w)65 (,)-298 (we)-298 (use)-299 (synthetic)-298 (benchmarks.)-298 (Second,)-298 (we)-298 (study)-299 (the)]TJ
+ T*
+ [(beha)20 (vior)-310 (of)-310 (our)-310 (algorithm)-311 (on)-310 (the)-310 (more)-310 (realistic)-310 (programs)-310 (sho)25 (wn)-310 (in)-310 (T)80 (able)-250 (1.)-311 (W)80 (e)-310 (do)-310 (not)-310 (compare)]TJ
+ T*
+ [(the)-285 (absolute)-286 (performance)-286 (of)-285 (the)-285 (tw)9 (o)-285 (JVMs)-286 (since)-286 (the)15 (y)-286 (dif)25 (fer)-286 (in)-285 (man)15 (y)-286 (other)-286 (respects)-285 (than)-285 (the)-286 (syn-)]TJ
+ T*
+ (chronization code.)Tj
+ /N91 1 Tf
+ 0 -2.3333 TD
+ [(7.3.1 T)18 (ime perf)26 (ormance comparison with the original JVM)]TJ
+ /N92 1 Tf
+ 0 -1.8333 TD
+ [(In)-314 (this)-314 (section)-314 (we)-314 (compare)-314 (the)-315 (speed)-314 (of)-314 (our)-314 (synchronization)-314 (algorithm)-314 (in)-314 (EVM,)-315 (using)-315 (the)-314 (e)15 (xtra)]TJ
+ 0 -1.1667 TD
+ [(f)10 (ast)-239 (e)15 (xtension,)-239 (with)-240 (that)-239 (of)-239 (the)-240 (monitor)-239 (cache)-240 (approach)-240 (in)-239 (the)-240 (original)-239 (JVM.)-240 (T)80 (o)-240 (measure)-239 (the)-239 (speed)]TJ
+ T*
+ [(of)-280 (synchronization)-281 (rather)-280 (than)-280 (the)-280 (speed)-280 (of)-281 (conte)15 (xt)-280 (switching)-281 (pro)16 (vided)-280 (by)-281 (the)-280 (underlying)-281 (operat-)]TJ
+ T*
+ [(ing)-248 (system,)-248 (we)-247 (use)-248 (programs)-248 (that)-247 (primarily)-248 (do)-247 (uncontended)-248 (synchronization.)-247 (Section)-248 (6.3.2)-247 (sho)25 (ws)]TJ
+ T*
+ [(that)-259 (contention)-259 (is)-259 (relati)25 (v)14 (ely)-259 (infrequent)-259 (for)-259 (typical)-259 (Ja)20 (v)25 (a)-258 (programs,)-259 (justifying)-258 (this)-259 (approach,)-259 (at)-259 (least)]TJ
+ T*
+ (in part.)Tj
+ 0 -1.75 TD
+ [(Ideally)65 (,)-325 (w)0 (e)-324 (w)10 (ould)-324 (compare)-324 (dif)24 (ferent)-324 (synchronization)-324 (algorithms)-324 (directly)-324 (by)-324 (implementing)-325 (them)]TJ
+ 0 -1.1667 TD
+ [(as)-298 (alternati)26 (v)15 (e)0 (s)-297 (i)0 (n)-298 (the)-297 (same)-297 (virtual)-297 (machine.)-298 (In)-297 (our)-298 (case,)-297 (ho)25 (we)25 (v)15 (e)0 (r)40 (,)-297 (this)-297 (approach)-297 (w)9 (a)0 (s)-297 (impractical.)]TJ
+ T*
+ [(First,)-308 (the)-307 (implementation)-307 (ef)25 (fort)-307 (is)-307 (non-tri)25 (vial.)-307 (Second,)-307 (an)-308 (algorithm)-307 (added)-307 (quickly)-307 (to)-307 (a)-308 (JVM)-307 (for)]TJ
+ 3.7517 53.4167 TD
+ [(T)79 (able 2. Objects allocated, objects synchronized on, and lock records all\
+ ocated)]TJ
+ /N91 1 Tf
+ 10 0 0 10 141.62 687.33 Tm
+ [(Benchmark)-5556 (# objects)-2691 (# objs sync\325ed on)-1574 (# lock r)18 (ecords)]TJ
+ /N92 1 Tf
+ 0 -1.7 TD
+ [(Hello)-11867 (2,076)-2970 (262)-250 ( \(12.6%\))-7218 (40)]TJ
+ T*
+ [(_201_compress)-7812 (8,917)-2970 (936)-250 ( \(10.5%\))-7218 (40)]TJ
+ T*
+ [(_202_jess)-8339 (7,934,141)-2720 (6,545)-250 ( \(0.1%\))-7218 (40)]TJ
+ T*
+ [(_209_db)-8839 (3,213,429)-2220 (17,123)-500 (\(0.5%\))-7218 (40)]TJ
+ T*
+ [(_213_ja)20 (v)25 (a)0 (c)-7774 (5,912,859)-1720 (351,538)-500 (\(5.9%\))-7218 (40)]TJ
+ T*
+ [(_222_mpe)15 (gaudio)-6665 (12,009)-3470 (994)-250 ( \(8.3%\))-7218 (40)]TJ
+ T*
+ [(_227_mtrt)-8172 (6,641,320)-2720 (1,195)-500 (\(0.0%\))-7218 (60)]TJ
+ T*
+ [(_228_jack)-8173 (6,841,290)-1720 (506,157)-250 ( \(7.4%\))-7218 (40)]TJ
+ T*
+ [(_224_richards)-7868 (36,065)-2720 (1,878)-500 (\(5.2%\))-7218 (80)]TJ
+ T*
+ [(_233_tmix)-8005 (1,366,985)-1220 (169,823)-250 ( \(12.4%\))-6718 (140)]TJ
+ T*
+ [(SwingMark)-7617 (2,345,281)-2220 (69,245)-500 (\(3.0%\))-6718 (100)]TJ
+ T*
+ [(v)20 (olano serv)15 (er)-7709 (140,335)-2720 (6,334)-500 (\(4.5%\))-5968 (3,280)]TJ
+ T*
+ [(v)20 (olano client)-7915 (661,199)-2720 (3,643)-500 (\(0.6%\))-5968 (3,240)]TJ
+ T*
+ [(JWS)-10450 (1,336,170)-1970 (258,960)-500 (\(19%\))-6718 (540)]TJ
+ ET
+ 0 G
+ 0 J
+ 0 j
+ 0.6 w
+ 3.86 M
+ []0 d
+ 140.62 443.25 m
+ 140.62 697.75 l
+ B*
+ 224.83 442.75 m
+ 224.83 698.25 l
+ B*
+ 307.01 442.75 m
+ 307.01 698.25 l
+ B*
+ 389.2 442.75 m
+ 389.2 698.25 l
+ B*
+ 471.38 443.25 m
+ 471.38 697.75 l
+ B*
+ 471.63 698 m
+ 140.37 698 l
+ B*
+ 471.13 682.25 m
+ 140.87 682.25 l
+ B*
+ 471.13 679.75 m
+ 140.87 679.75 l
+ B*
+ 471.13 665.25 m
+ 140.87 665.25 l
+ B*
+ 471.13 662.75 m
+ 140.87 662.75 l
+ B*
+ 471.63 647 m
+ 140.37 647 l
+ B*
+ 471.63 630 m
+ 140.37 630 l
+ B*
+ 471.63 613 m
+ 140.37 613 l
+ B*
+ 471.63 596 m
+ 140.37 596 l
+ B*
+ 471.63 579 m
+ 140.37 579 l
+ B*
+ 471.63 562 m
+ 140.37 562 l
+ B*
+ 471.13 546.25 m
+ 140.87 546.25 l
+ B*
+ 471.13 543.75 m
+ 140.87 543.75 l
+ B*
+ 471.63 528 m
+ 140.37 528 l
+ B*
+ 471.63 511 m
+ 140.37 511 l
+ B*
+ 471.63 494 m
+ 140.37 494 l
+ B*
+ 471.63 477 m
+ 140.37 477 l
+ B*
+ 471.63 460 m
+ 140.37 460 l
+ B*
+ 471.63 443 m
+ 140.37 443 l
+ B*
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 24 24
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (21)Tj
+ -19 36.1108 TD
+ [(the)-239 (purpose)-240 (of)-239 (measuring)-239 (will)-239 (be)-239 (at)-240 (an)-238 (inherent)-239 (disadv)25 (antage)-239 (compared)-238 (with)-239 (an)-239 (algorithm)-238 (that)-239 (has)]TJ
+ 0 -1.1667 TD
+ [(been)-260 (tuned)-260 (with)-260 (the)-260 (rest)-260 (of)-260 (the)-260 (system)-260 (o)15 (v)15 (e)0 (r)-260 (a)-260 (long)-259 (period.)-261 (Third,)-260 (it)-261 (may)-260 (be)-260 (technically)-260 (impossible)]TJ
+ T*
+ [(to)-339 (k)10 (eep)-339 (all)-339 (other)-340 (f)10 (actors)-339 (constant,)-339 (since)-339 (each)-340 (algorithm)-339 (may)-340 (tak)10 (e)-339 (adv)26 (antage)-340 (of)-339 (features)-339 (that)-340 (the)]TJ
+ T*
+ [(other)-230 (one)-229 (does)-230 (not)-229 (use)-229 (\(e.g.,)-230 (the)-230 (monitor)-229 (cache)-230 (w)10 (orks)-230 (best)-230 (in)-229 (the)-230 (presence)-230 (of)-229 (handles\).)-229 (Since)-230 (EVM)]TJ
+ T*
+ [(and)-235 (the)-235 (original)-235 (JVM)-235 (dif)25 (fer)-236 (in)-235 (man)15 (y)-236 (respects,)-235 (comparing)-235 (bottom-line)-235 (performance)-235 (does)-235 (not)-235 (re)25 (v)15 (eal)]TJ
+ T*
+ [(much)-585 (about)-584 (the)-585 (tw)10 (o)-584 (systems\325)-584 (synchronization)-584 (code.)-584 (F)15 (ortunately)65 (,)-584 (a)-584 (dif)25 (ferent)-585 (measurement)]TJ
+ T*
+ [(approach)-250 (can)-250 (gi)25 (v)15 (e)-250 (us)-250 (the)-250 (information)-250 (we)-251 (w)10 (ant.)-250 (Consider)-250 (a)-250 (program)-1361 (that)-251 (performs)-250 (synchroniza-)]TJ
+ T*
+ [(tion.)-285 (Construct)-285 (the)]TJ
+ /N94 1 Tf
+ 7.7725 0 TD
+ (baseline)Tj
+ /N92 1 Tf
+ 3.6183 0 TD
+ [(program)-1146 (,)-285 (which)-285 (is)-285 (just)-285 (lik)10 (e)-1147 (,)-285 (e)15 (xcept)-285 (that)-285 (all)-285 (synchronization)-285 (has)]TJ
+ -11.3908 -1.1667 TD
+ [(been)-275 (stripped)-275 (out.)-276 (The)-276 (dif)25 (ference)-275 (in)-275 (e)15 (x)15 (ecution)-276 (time,)-13274 (,)-276 (re\337ects)-276 (the)]TJ
+ T*
+ [(cost)-273 (of)-274 (synchronization.)-273 (Computing)-4229 (for)-273 (EVM)-274 (and)-273 (the)-273 (original)-274 (JVM)-273 (gi)26 (v)15 (e)0 (s)-274 (numbers)-273 (that)]TJ
+ T*
+ 0 Tw
+ (can be compared.)Tj
+ 0 -1.75 TD
+ [(The)-369 (main)-370 (limitation)-369 (of)-369 (this)-369 (approach)-369 (is)-370 (that)-369 (real)-369 (programs)-369 (usually)-368 (rely)-370 (on)-369 (synchronization)-369 (for)]TJ
+ 0 -1.1667 TD
+ [(their)-256 (correct)-256 (e)15 (x)15 (ecution,)-256 (so)-257 (to)-256 (ensure)-256 (that)-257 (the)-256 (presence)-256 (or)-256 (absence)-256 (of)-256 (synchronization)-256 (does)-257 (not)-256 (oth-)]TJ
+ T*
+ [(erwise)-302 (af)25 (fect)-301 (the)-302 (computation,)-301 (we)-302 (limit)-302 (our)-302 (study)-301 (to)-302 (synthetic)-301 (benchmarks.)-302 (T)80 (o)-302 (this)-302 (end,)-302 (we)-302 (con-)]TJ
+ T*
+ [(structed)-230 (a)-230 (set)-230 (of)-230 (simple)-230 (benchmarks:)]TJ
+ /N94 1 Tf
+ 14.7108 0 TD
+ (SyncMethod)Tj
+ /N92 1 Tf
+ 5.1733 0 TD
+ [(calls)-229 (a)-230 (synchronized)-230 (method;)]TJ
+ /N94 1 Tf
+ 11.8067 0 TD
+ (SyncStmt)Tj
+ /N92 1 Tf
+ 3.8958 0 TD
+ [(e)15 (x)15 (ecutes)]TJ
+ -35.5867 -1.1667 TD
+ [(a)-309 (synchronized)-309 (statement;)]TJ
+ /N94 1 Tf
+ 10.8158 0 TD
+ (RecSyncMethod)Tj
+ /N92 1 Tf
+ 6.7517 0 TD
+ [(calls)-309 (tw)10 (o)-310 (nested)-309 (synchronized)-309 (methods)-310 (on)-309 (an)-310 (object;)]TJ
+ -17.5675 -1.1667 TD
+ (and)Tj
+ /N94 1 Tf
+ 1.7867 0 TD
+ (RecSyncStmt)Tj
+ /N92 1 Tf
+ 5.5075 0 TD
+ [(e)15 (x)15 (ecutes)-343 (a)-343 (pair)-343 (of)-342 (nested)-343 (synchronized)-342 (statements)-343 (on)-342 (an)-343 (object.)-343 (The)-342 (\336rst)-343 (tw)10 (o)]TJ
+ -7.2942 -1.1667 TD
+ [(benchmarks)-235 (measure)-235 (the)-235 (cost)-236 (of)-235 (a)-235 (non-recursi)25 (v)15 (e)-235 (lock/unlock)-235 (pair)41 (,)-236 (and)-235 (the)-235 (second)-235 (tw)11 (o)-236 (measure)-235 (the)]TJ
+ T*
+ [(sum)-250 (of)-250 (the)-250 (costs)-250 (of)-250 (a)-250 (non-recursi)25 (v)15 (e)-250 (and)-251 (recursi)25 (v)15 (e)-250 (lock/unlock)-250 (pair)55 (.)-250 (Each)-251 (benchmark)-250 (completes)-250 (10)]TJ
+ T*
+ [(million)-239 (iterations,)-239 (c)15 (ycling)-238 (through)-239 (an)-238 (array)-239 (of)-239 (length)]TJ
+ /N94 1 Tf
+ 21.1442 0 TD
+ (N)Tj
+ /N92 1 Tf
+ 0.9058 0 TD
+ [(to)-239 (select)-239 (the)-239 (objects)-239 (to)-239 (synchronize)-239 (on.)-238 (W)80 (e)]TJ
+ -22.05 -1.1667 TD
+ (let)Tj
+ /N94 1 Tf
+ 1.2933 0 TD
+ (N)Tj
+ /N92 1 Tf
+ 0.96 0 TD
+ [(range)-294 (from)-293 (1)-293 (t)0 (o)-294 (512K)-293 (and)-293 (plot)-293 (the)-294 (cost)-293 (per)-293 (iterations;)-293 (see)-294 (Figure)-250 (10.)-293 (As)-293 (one)-293 (w)10 (ould)-294 (e)15 (xpect,)]TJ
+ -2.2533 -1.1667 TD
+ [(the)-380 (meta-locking)-380 (scheme)-380 (deli)25 (v)15 (ers)-380 (unchanged)-380 (performance)-379 (re)15 (gardless)-380 (of)-380 (the)-380 (number)-380 (of)-379 (objects)]TJ
+ T*
+ [(synchronized)-288 (upon)-288 (whereas)-287 (the)-288 (monitor)-288 (cache)-288 (approach)-288 (suf)25 (fers)-288 (an)-288 (increasing)-288 (slo)25 (wdo)25 (wn,)-288 (despite)]TJ
+ T*
+ [(the)-325 (f)10 (act)-324 (that)-325 (in)-324 (all)-324 (of)-324 (these)-324 (tests,)-324 (no)-324 (more)-324 (than)-324 (one)-324 (object)-324 (is)-325 (lock)10 (ed)-324 (at)-325 (an)16 (y)-324 (time.)-324 (The)-324 (graph)-325 (also)]TJ
+ T*
+ [(sho)25 (ws)-271 (that)-272 (the)-270 (absolute)-272 (cost)-271 (of)-271 (a)-271 (synchronization)-271 (operation)-271 (in)-271 (EVM)-271 (is)-270 (al)10 (w)10 (ays)-271 (signi\336cantly)-271 (lo)25 (wer)]TJ
+ T*
+ [(than)-313 (in)-313 (the)-313 (original)-313 (JVM.)-313 (F)15 (o)0 (r)-313 (e)15 (xample,)-312 (a)-313 (non-recursi)26 (v)15 (e)-313 (synchronized)-313 (method)-312 (call,)-313 (the)-313 (most)-312 (fre-)]TJ
+ T*
+ [(quent)-276 (form)-277 (of)-277 (synchronization,)-276 (e)15 (x)15 (ecutes)-277 (in)-277 (about)-276 (220)-277 (ns)-277 (on)-277 (EVM)-276 (b)20 (u)0 (t)-277 (tak)10 (es)-277 (550)-277 (ns)-277 (to)-276 (1500)-277 (ns)-277 (on)]TJ
+ T*
+ (the original JVM.)Tj
+ /N94 1 Tf
+ 27.1967 25.0833 TD
+ (P)Tj
+ -12.0492 -1.1667 TD
+ (P)Tj
+ ET
+ 0 G
+ 2 J
+ 0 j
+ 0.6 w
+ 3.86 M
+ []0 d
+ 259.9 380.24 m
+ 254.97 380.24 l
+ S
+ BT
+ 12 0 0 12 356.76 369.5 Tm
+ (P)Tj
+ -2.5567 -1.1667 TD
+ 0.059 Tc
+ [(sync)-404 (P)]TJ
+ /N96 1 Tf
+ 2.0133 0 TD
+ 0.753 Tc
+ (\(\))Tj
+ /N94 1 Tf
+ 2.9817 0 TD
+ 0.059 Tc
+ [(time)-405 (P)]TJ
+ /N96 1 Tf
+ 1.9583 0 TD
+ 0.753 Tc
+ (\(\))Tj
+ /N94 1 Tf
+ 2.4183 0 TD
+ 0.059 Tc
+ [(time)-405 (P)]TJ
+ /N96 1 Tf
+ 1.9583 0 TD
+ 0.753 Tc
+ (\(\))Tj
+ /N92 1 Tf
+ -2.7083 0 TD
+ 0 Tc
+ (\320)Tj
+ -4.69 0 TD
+ (=)Tj
+ ET
+ 473.02 366.24 m
+ 468.08 366.24 l
+ S
+ BT
+ /N94 1 Tf
+ 12 0 0 12 249.12 341.5 Tm
+ 0.059 Tc
+ [(sync)-404 (P)]TJ
+ /N96 1 Tf
+ 2.0133 0 TD
+ 0.753 Tc
+ (\(\))Tj
+ /N92 1 Tf
+ 0 9 -9 0 93.5 568.5 Tm
+ 0 Tc
+ (Synchronization cost per iteration \(ns\))Tj
+ 9 0 0 9 211.5 546.5 Tm
+ (Number of objects \()Tj
+ /N94 1 Tf
+ 8.0256 0 TD
+ (N)Tj
+ /N92 1 Tf
+ 0.6678 0 TD
+ (\))Tj
+ ET
+ 1 g
+ 96.5 716.5 442 -160 re
+ f*
+ 1 J
+ 1 j
+ 0.7 w
+ 122.5 570.5 m
+ 374.5 570.5 l
+ 122.5 570.5 m
+ 122.5 565.5 l
+ 135.763 570.5 m
+ 135.763 568.5 l
+ 143.522 570.5 m
+ 143.522 568.5 l
+ 149.026 570.5 m
+ 149.026 568.5 l
+ 153.296 570.5 m
+ 153.296 568.5 l
+ 156.785 570.5 m
+ 156.785 568.5 l
+ 159.734 570.5 m
+ 159.734 568.5 l
+ 162.289 570.5 m
+ 162.289 568.5 l
+ 164.543 570.5 m
+ 164.543 568.5 l
+ 166.559 570.5 m
+ 166.559 565.5 l
+ 179.822 570.5 m
+ 179.822 568.5 l
+ 187.581 570.5 m
+ 187.581 568.5 l
+ 193.086 570.5 m
+ 193.086 568.5 l
+ 197.355 570.5 m
+ 197.355 568.5 l
+ 200.844 570.5 m
+ 200.844 568.5 l
+ 203.794 570.5 m
+ 203.794 568.5 l
+ 206.349 570.5 m
+ 206.349 568.5 l
+ 208.602 570.5 m
+ 208.602 568.5 l
+ 210.618 570.5 m
+ 210.618 565.5 l
+ 223.882 570.5 m
+ 223.882 568.5 l
+ 231.64 570.5 m
+ 231.64 568.5 l
+ 237.145 570.5 m
+ 237.145 568.5 l
+ 241.415 570.5 m
+ 241.415 568.5 l
+ 244.903 570.5 m
+ 244.903 568.5 l
+ 247.853 570.5 m
+ 247.853 568.5 l
+ 250.408 570.5 m
+ 250.408 568.5 l
+ 252.662 570.5 m
+ 252.662 568.5 l
+ 254.678 570.5 m
+ 254.678 565.5 l
+ 267.941 570.5 m
+ 267.941 568.5 l
+ 275.699 570.5 m
+ 275.699 568.5 l
+ 281.204 570.5 m
+ 281.204 568.5 l
+ 285.474 570.5 m
+ 285.474 568.5 l
+ 288.963 570.5 m
+ 288.963 568.5 l
+ 291.912 570.5 m
+ 291.912 568.5 l
+ 294.467 570.5 m
+ 294.467 568.5 l
+ 296.721 570.5 m
+ 296.721 568.5 l
+ 298.737 570.5 m
+ 298.737 565.5 l
+ 312 570.5 m
+ 312 568.5 l
+ 319.759 570.5 m
+ 319.759 568.5 l
+ 325.263 570.5 m
+ 325.263 568.5 l
+ 329.533 570.5 m
+ 329.533 568.5 l
+ 333.022 570.5 m
+ 333.022 568.5 l
+ 335.971 570.5 m
+ 335.971 568.5 l
+ 338.526 570.5 m
+ 338.526 568.5 l
+ 340.78 570.5 m
+ 340.78 568.5 l
+ 342.796 570.5 m
+ 342.796 565.5 l
+ 356.059 570.5 m
+ 356.059 568.5 l
+ 363.818 570.5 m
+ 363.818 568.5 l
+ 369.323 570.5 m
+ 369.323 568.5 l
+ 373.592 570.5 m
+ 373.592 568.5 l
+ S
+ BT
+ /N97 1 Tf
+ 9 0 0 9 120.25 557.1 Tm
+ 0 g
+ [(1)-4145 (1)0 (0)-3646 (100)-3146 (1000)-2646 (10000)-2146 (100000)]TJ
+ ET
+ 122.5 570.5 m
+ 122.5 714.5 l
+ 122.5 570.5 m
+ 117.5 570.5 l
+ 122.5 575.264 m
+ 120.5 575.264 l
+ 122.5 580.028 m
+ 120.5 580.028 l
+ 122.5 584.792 m
+ 120.5 584.792 l
+ 122.5 589.556 m
+ 120.5 589.556 l
+ 122.5 594.32 m
+ 120.5 594.32 l
+ 122.5 599.084 m
+ 120.5 599.084 l
+ 122.5 603.848 m
+ 120.5 603.848 l
+ 122.5 608.612 m
+ 120.5 608.612 l
+ 122.5 613.376 m
+ 120.5 613.376 l
+ 122.5 618.14 m
+ 117.5 618.14 l
+ 122.5 622.904 m
+ 120.5 622.904 l
+ 122.5 627.667 m
+ 120.5 627.667 l
+ 122.5 632.431 m
+ 120.5 632.431 l
+ 122.5 637.195 m
+ 120.5 637.195 l
+ 122.5 641.959 m
+ 120.5 641.959 l
+ 122.5 646.723 m
+ 120.5 646.723 l
+ 122.5 651.487 m
+ 120.5 651.487 l
+ 122.5 656.251 m
+ 120.5 656.251 l
+ 122.5 661.015 m
+ 120.5 661.015 l
+ 122.5 665.779 m
+ 117.5 665.779 l
+ 122.5 670.543 m
+ 120.5 670.543 l
+ 122.5 675.307 m
+ 120.5 675.307 l
+ 122.5 680.071 m
+ 120.5 680.071 l
+ 122.5 684.835 m
+ 120.5 684.835 l
+ 122.5 689.599 m
+ 120.5 689.599 l
+ 122.5 694.363 m
+ 120.5 694.363 l
+ 122.5 699.127 m
+ 120.5 699.127 l
+ 122.5 703.891 m
+ 120.5 703.891 l
+ 122.5 708.655 m
+ 120.5 708.655 l
+ 122.5 713.419 m
+ 117.5 713.419 l
+ S
+ BT
+ 9 0 0 9 110 567.8 Tm
+ (0)Tj
+ -1.4999 5.2933 TD
+ (1000)Tj
+ T*
+ (2000)Tj
+ T*
+ (3000)Tj
+ ET
+ 122.5 659.6 m
+ 135.763 657.328 l
+ 149.026 660.339 l
+ 162.289 678.299 l
+ 175.553 695.158 l
+ 188.816 698.555 l
+ 202.079 701.423 l
+ 215.342 713.924 l
+ 228.605 711.975 l
+ 241.868 713.219 l
+ 255.132 713.414 l
+ 268.395 712.818 l
+ 281.658 713.933 l
+ 294.921 713.314 l
+ 308.184 714.5 l
+ 321.447 713.547 l
+ 334.711 713.642 l
+ 347.974 708.497 l
+ 361.237 711.623 l
+ 374.5 711.032 l
+ S
+ 124.52 659.58 m
+ 124.52 660.684 123.624 661.58 122.52 661.58 c
+ 121.416 661.58 120.52 660.684 120.52 659.58 c
+ 120.52 658.476 121.416 657.58 122.52 657.58 c
+ 123.624 657.58 124.52 658.476 124.52 659.58 c
+ B
+ 137.78 657.3 m
+ 137.78 658.404 136.884 659.3 135.78 659.3 c
+ 134.676 659.3 133.78 658.404 133.78 657.3 c
+ 133.78 656.196 134.676 655.3 135.78 655.3 c
+ 136.884 655.3 137.78 656.196 137.78 657.3 c
+ B
+ 151.04 660.3 m
+ 151.04 661.404 150.144 662.3 149.04 662.3 c
+ 147.936 662.3 147.04 661.404 147.04 660.3 c
+ 147.04 659.196 147.936 658.3 149.04 658.3 c
+ 150.144 658.3 151.04 659.196 151.04 660.3 c
+ B
+ 164.3 678.3 m
+ 164.3 679.404 163.404 680.3 162.3 680.3 c
+ 161.196 680.3 160.3 679.404 160.3 678.3 c
+ 160.3 677.196 161.196 676.3 162.3 676.3 c
+ 163.404 676.3 164.3 677.196 164.3 678.3 c
+ B
+ 177.56 695.16 m
+ 177.56 696.264 176.664 697.16 175.56 697.16 c
+ 174.456 697.16 173.56 696.264 173.56 695.16 c
+ 173.56 694.056 174.456 693.16 175.56 693.16 c
+ 176.664 693.16 177.56 694.056 177.56 695.16 c
+ B
+ 190.82 698.58 m
+ 190.82 699.684 189.924 700.58 188.82 700.58 c
+ 187.716 700.58 186.82 699.684 186.82 698.58 c
+ 186.82 697.476 187.716 696.58 188.82 696.58 c
+ 189.924 696.58 190.82 697.476 190.82 698.58 c
+ B
+ 204.08 701.46 m
+ 204.08 702.564 203.184 703.46 202.08 703.46 c
+ 200.976 703.46 200.08 702.564 200.08 701.46 c
+ 200.08 700.356 200.976 699.46 202.08 699.46 c
+ 203.184 699.46 204.08 700.356 204.08 701.46 c
+ B
+ 217.34 713.94 m
+ 217.34 715.044 216.444 715.94 215.34 715.94 c
+ 214.236 715.94 213.34 715.044 213.34 713.94 c
+ 213.34 712.836 214.236 711.94 215.34 711.94 c
+ 216.444 711.94 217.34 712.836 217.34 713.94 c
+ B
+ 230.6 711.96 m
+ 230.6 713.064 229.704 713.96 228.6 713.96 c
+ 227.496 713.96 226.6 713.064 226.6 711.96 c
+ 226.6 710.856 227.496 709.96 228.6 709.96 c
+ 229.704 709.96 230.6 710.856 230.6 711.96 c
+ B
+ 243.86 713.22 m
+ 243.86 714.324 242.964 715.22 241.86 715.22 c
+ 240.756 715.22 239.86 714.324 239.86 713.22 c
+ 239.86 712.116 240.756 711.22 241.86 711.22 c
+ 242.964 711.22 243.86 712.116 243.86 713.22 c
+ B
+ 257.12 713.4 m
+ 257.12 714.504 256.224 715.4 255.12 715.4 c
+ 254.016 715.4 253.12 714.504 253.12 713.4 c
+ 253.12 712.296 254.016 711.4 255.12 711.4 c
+ 256.224 711.4 257.12 712.296 257.12 713.4 c
+ B
+ 270.38 712.8 m
+ 270.38 713.904 269.484 714.8 268.38 714.8 c
+ 267.276 714.8 266.38 713.904 266.38 712.8 c
+ 266.38 711.696 267.276 710.8 268.38 710.8 c
+ 269.484 710.8 270.38 711.696 270.38 712.8 c
+ B
+ 283.64 713.94 m
+ 283.64 715.044 282.744 715.94 281.64 715.94 c
+ 280.536 715.94 279.64 715.044 279.64 713.94 c
+ 279.64 712.836 280.536 711.94 281.64 711.94 c
+ 282.744 711.94 283.64 712.836 283.64 713.94 c
+ B
+ 296.96 713.34 m
+ 296.96 714.444 296.064 715.34 294.96 715.34 c
+ 293.856 715.34 292.96 714.444 292.96 713.34 c
+ 292.96 712.236 293.856 711.34 294.96 711.34 c
+ 296.064 711.34 296.96 712.236 296.96 713.34 c
+ B
+ 310.16 714.48 m
+ 310.16 715.584 309.264 716.48 308.16 716.48 c
+ 307.056 716.48 306.16 715.584 306.16 714.48 c
+ 306.16 713.376 307.056 712.48 308.16 712.48 c
+ 309.264 712.48 310.16 713.376 310.16 714.48 c
+ B
+ 323.48 713.58 m
+ 323.48 714.684 322.584 715.58 321.48 715.58 c
+ 320.376 715.58 319.48 714.684 319.48 713.58 c
+ 319.48 712.476 320.376 711.58 321.48 711.58 c
+ 322.584 711.58 323.48 712.476 323.48 713.58 c
+ B
+ 336.68 713.64 m
+ 336.68 714.744 335.784 715.64 334.68 715.64 c
+ 333.576 715.64 332.68 714.744 332.68 713.64 c
+ 332.68 712.536 333.576 711.64 334.68 711.64 c
+ 335.784 711.64 336.68 712.536 336.68 713.64 c
+ B
+ 350 708.48 m
+ 350 709.584 349.104 710.48 348 710.48 c
+ 346.896 710.48 346 709.584 346 708.48 c
+ 346 707.376 346.896 706.48 348 706.48 c
+ 349.104 706.48 350 707.376 350 708.48 c
+ B
+ 363.2 711.66 m
+ 363.2 712.764 362.304 713.66 361.2 713.66 c
+ 360.096 713.66 359.2 712.764 359.2 711.66 c
+ 359.2 710.556 360.096 709.66 361.2 709.66 c
+ 362.304 709.66 363.2 710.556 363.2 711.66 c
+ B
+ 376.52 711.06 m
+ 376.52 712.164 375.624 713.06 374.52 713.06 c
+ 373.416 713.06 372.52 712.164 372.52 711.06 c
+ 372.52 709.956 373.416 709.06 374.52 709.06 c
+ 375.624 709.06 376.52 709.956 376.52 711.06 c
+ B
+ 122.5 624.561 m
+ 135.763 626.334 l
+ 149.026 626.191 l
+ 162.289 644.098 l
+ 175.553 656.442 l
+ 188.816 662.301 l
+ 202.079 661.063 l
+ 215.342 672.11 l
+ 228.605 674.073 l
+ 241.868 673.454 l
+ 255.132 673.497 l
+ 268.395 674.621 l
+ 281.658 673.254 l
+ 294.921 673.13 l
+ 308.184 673.42 l
+ 321.447 672.901 l
+ 334.711 672.977 l
+ 347.974 669.524 l
+ 361.237 671.772 l
+ 374.5 672.577 l
+ S
+ 120.5 622.561 4 4 re
+ B
+ 133.763 624.334 4 4 re
+ B
+ 147.026 624.191 4 4 re
+ B
+ 160.289 642.098 4 4 re
+ B
+ 173.553 654.442 4 4 re
+ B
+ 186.816 660.301 4 4 re
+ B
+ 200.079 659.063 4 4 re
+ B
+ 213.342 670.11 4 4 re
+ B
+ 226.605 672.073 4 4 re
+ B
+ 239.868 671.454 4 4 re
+ B
+ 253.132 671.497 4 4 re
+ B
+ 266.395 672.621 4 4 re
+ B
+ 279.658 671.254 4 4 re
+ B
+ 292.921 671.13 4 4 re
+ B
+ 306.184 671.42 4 4 re
+ B
+ 319.447 670.901 4 4 re
+ B
+ 332.711 670.977 4 4 re
+ B
+ 345.974 667.524 4 4 re
+ B
+ 359.237 669.772 4 4 re
+ B
+ 372.5 670.577 4 4 re
+ B
+ 122.5 611.246 m
+ 135.763 611.051 l
+ 149.026 612.752 l
+ 162.289 638.367 l
+ 175.553 642.564 l
+ 188.816 648.457 l
+ 202.079 651.23 l
+ 215.342 661.649 l
+ 228.605 663.126 l
+ 241.868 662.063 l
+ 255.132 662.935 l
+ 268.395 662.692 l
+ 281.658 663.33 l
+ 294.921 662.806 l
+ 308.184 662.754 l
+ 321.447 662.582 l
+ 334.711 662.006 l
+ 347.974 660.043 l
+ 361.237 664.121 l
+ 374.5 663.492 l
+ 120.5 609.246 m
+ 124.5 613.246 l
+ 120.5 613.246 m
+ 124.5 609.246 l
+ 133.763 609.051 m
+ 137.763 613.051 l
+ 133.763 613.051 m
+ 137.763 609.051 l
+ 147.026 610.752 m
+ 151.026 614.752 l
+ 147.026 614.752 m
+ 151.026 610.752 l
+ 160.289 636.367 m
+ 164.289 640.367 l
+ 160.289 640.367 m
+ 164.289 636.367 l
+ 173.553 640.564 m
+ 177.553 644.564 l
+ 173.553 644.564 m
+ 177.553 640.564 l
+ 186.816 646.457 m
+ 190.816 650.457 l
+ 186.816 650.457 m
+ 190.816 646.457 l
+ 200.079 649.23 m
+ 204.079 653.23 l
+ 200.079 653.23 m
+ 204.079 649.23 l
+ 213.342 659.649 m
+ 217.342 663.649 l
+ 213.342 663.649 m
+ 217.342 659.649 l
+ 226.605 661.126 m
+ 230.605 665.126 l
+ 226.605 665.126 m
+ 230.605 661.126 l
+ 239.868 660.063 m
+ 243.868 664.063 l
+ 239.868 664.063 m
+ 243.868 660.063 l
+ 253.132 660.935 m
+ 257.132 664.935 l
+ 253.132 664.935 m
+ 257.132 660.935 l
+ 266.395 660.692 m
+ 270.395 664.692 l
+ 266.395 664.692 m
+ 270.395 660.692 l
+ 279.658 661.33 m
+ 283.658 665.33 l
+ 279.658 665.33 m
+ 283.658 661.33 l
+ 292.921 660.806 m
+ 296.921 664.806 l
+ 292.921 664.806 m
+ 296.921 660.806 l
+ 306.184 660.754 m
+ 310.184 664.754 l
+ 306.184 664.754 m
+ 310.184 660.754 l
+ 319.447 660.582 m
+ 323.447 664.583 l
+ 319.447 664.583 m
+ 323.447 660.582 l
+ 332.711 660.006 m
+ 336.711 664.006 l
+ 332.711 664.006 m
+ 336.711 660.006 l
+ 345.974 658.043 m
+ 349.974 662.043 l
+ 345.974 662.043 m
+ 349.974 658.043 l
+ 359.237 662.121 m
+ 363.237 666.121 l
+ 359.237 666.121 m
+ 363.237 662.121 l
+ 372.5 661.492 m
+ 376.5 665.492 l
+ 372.5 665.492 m
+ 376.5 661.492 l
+ 122.5 596.664 m
+ 135.763 596.807 l
+ 149.026 596.416 l
+ 162.289 615.467 l
+ 175.553 627.363 l
+ 188.816 631.264 l
+ 202.079 632.45 l
+ 215.342 643.465 l
+ 228.605 642.255 l
+ 241.868 642.536 l
+ 255.132 643.16 l
+ 268.395 642.498 l
+ 281.658 642.359 l
+ 294.921 642.398 l
+ 308.184 643.074 l
+ 321.447 642.812 l
+ 334.711 642.722 l
+ 347.974 641.926 l
+ 361.237 641.864 l
+ 374.5 641.612 l
+ S
+ 124.5 594.664 m
+ 122.5 598.664 l
+ 120.5 594.664 l
+ b
+ 137.763 594.807 m
+ 135.763 598.807 l
+ 133.763 594.807 l
+ b
+ 151.026 594.416 m
+ 149.026 598.416 l
+ 147.026 594.416 l
+ b
+ 164.289 613.467 m
+ 162.289 617.467 l
+ 160.289 613.467 l
+ b
+ 177.553 625.363 m
+ 175.553 629.363 l
+ 173.553 625.363 l
+ b
+ 190.816 629.264 m
+ 188.816 633.264 l
+ 186.816 629.264 l
+ b
+ 204.079 630.45 m
+ 202.079 634.45 l
+ 200.079 630.45 l
+ b
+ 217.342 641.465 m
+ 215.342 645.465 l
+ 213.342 641.465 l
+ b
+ 230.605 640.255 m
+ 228.605 644.255 l
+ 226.605 640.255 l
+ b
+ 243.868 640.536 m
+ 241.868 644.536 l
+ 239.868 640.536 l
+ b
+ 257.132 641.16 m
+ 255.132 645.16 l
+ 253.132 641.16 l
+ b
+ 270.395 640.498 m
+ 268.395 644.498 l
+ 266.395 640.498 l
+ b
+ 283.658 640.359 m
+ 281.658 644.359 l
+ 279.658 640.359 l
+ b
+ 296.921 640.398 m
+ 294.921 644.398 l
+ 292.921 640.398 l
+ b
+ 310.184 641.074 m
+ 308.184 645.074 l
+ 306.184 641.074 l
+ b
+ 323.447 640.812 m
+ 321.447 644.812 l
+ 319.447 640.812 l
+ b
+ 336.711 640.722 m
+ 334.711 644.722 l
+ 332.711 640.722 l
+ b
+ 349.974 639.926 m
+ 347.974 643.926 l
+ 345.974 639.926 l
+ b
+ 363.237 639.864 m
+ 361.237 643.864 l
+ 359.237 639.864 l
+ b
+ 376.5 639.612 m
+ 374.5 643.612 l
+ 372.5 639.612 l
+ b
+ 122.5 596.602 m
+ 135.763 596.749 l
+ 149.026 596.749 l
+ 162.289 596.716 l
+ 175.553 596.64 l
+ 188.816 596.468 l
+ 202.079 596.43 l
+ 215.342 596.726 l
+ 228.605 596.54 l
+ 241.868 596.826 l
+ 255.132 596.435 l
+ 268.395 596.473 l
+ 281.658 596.23 l
+ 294.921 596.516 l
+ 308.184 596.497 l
+ 321.447 596.526 l
+ 334.711 596.645 l
+ 347.974 596.93 l
+ 361.237 596.64 l
+ 374.5 597.159 l
+ 122.5 585.021 m
+ 135.763 584.778 l
+ 149.026 584.949 l
+ 162.289 584.978 l
+ 175.553 584.52 l
+ 188.816 584.668 l
+ 202.079 584.74 l
+ 215.342 584.963 l
+ 228.605 584.406 l
+ 241.868 585.021 l
+ 255.132 584.725 l
+ 268.395 584.897 l
+ 281.658 585.044 l
+ 294.921 585.073 l
+ 308.184 584.906 l
+ 321.447 584.787 l
+ 334.711 584.811 l
+ 347.974 584.463 l
+ 361.237 584.72 l
+ 374.5 584.849 l
+ 120.5 585.021 m
+ 124.5 585.021 l
+ 122.5 583.021 m
+ 122.5 587.021 l
+ 133.763 584.778 m
+ 137.763 584.778 l
+ 135.763 582.778 m
+ 135.763 586.778 l
+ 147.026 584.949 m
+ 151.026 584.949 l
+ 149.026 582.949 m
+ 149.026 586.949 l
+ 160.289 584.978 m
+ 164.289 584.978 l
+ 162.289 582.978 m
+ 162.289 586.978 l
+ 173.553 584.52 m
+ 177.553 584.52 l
+ 175.553 582.52 m
+ 175.553 586.52 l
+ 186.816 584.668 m
+ 190.816 584.668 l
+ 188.816 582.668 m
+ 188.816 586.668 l
+ 200.079 584.74 m
+ 204.079 584.74 l
+ 202.079 582.74 m
+ 202.079 586.74 l
+ 213.342 584.963 m
+ 217.342 584.963 l
+ 215.342 582.963 m
+ 215.342 586.963 l
+ 226.605 584.406 m
+ 230.605 584.406 l
+ 228.605 582.406 m
+ 228.605 586.406 l
+ 239.868 585.021 m
+ 243.868 585.021 l
+ 241.868 583.021 m
+ 241.868 587.021 l
+ 253.132 584.725 m
+ 257.132 584.725 l
+ 255.132 582.725 m
+ 255.132 586.725 l
+ 266.395 584.897 m
+ 270.395 584.897 l
+ 268.395 582.897 m
+ 268.395 586.897 l
+ 279.658 585.044 m
+ 283.658 585.044 l
+ 281.658 583.044 m
+ 281.658 587.044 l
+ 292.921 585.073 m
+ 296.921 585.073 l
+ 294.921 583.073 m
+ 294.921 587.073 l
+ 306.184 584.906 m
+ 310.184 584.906 l
+ 308.184 582.906 m
+ 308.184 586.906 l
+ 319.447 584.787 m
+ 323.447 584.787 l
+ 321.447 582.787 m
+ 321.447 586.787 l
+ 332.711 584.811 m
+ 336.711 584.811 l
+ 334.711 582.811 m
+ 334.711 586.811 l
+ 345.974 584.463 m
+ 349.974 584.463 l
+ 347.974 582.463 m
+ 347.974 586.463 l
+ 359.237 584.72 m
+ 363.237 584.72 l
+ 361.237 582.72 m
+ 361.237 586.72 l
+ 372.5 584.849 m
+ 376.5 584.849 l
+ 374.5 582.849 m
+ 374.5 586.849 l
+ S
+ [1 3.2 ]0 d
+ 122.5 585.368 m
+ 135.763 585.535 l
+ 149.026 585.759 l
+ 162.289 585.549 l
+ 175.553 585.468 l
+ 188.816 586.154 l
+ 202.079 585.492 l
+ 215.342 585.649 l
+ 228.605 585.411 l
+ 241.868 585.287 l
+ 255.132 585.278 l
+ 268.395 584.935 l
+ 281.658 584.816 l
+ 294.921 584.873 l
+ 308.184 584.987 l
+ 321.447 585.673 l
+ 334.711 585.716 l
+ 347.974 585.797 l
+ 361.237 585.768 l
+ 374.5 586.193 l
+ S
+ [4 ]0 d
+ 122.5 581.338 m
+ 135.763 581.348 l
+ 149.026 581.395 l
+ 162.289 581.405 l
+ 175.553 581.348 l
+ 188.816 580.957 l
+ 202.079 581.167 l
+ 215.342 581.224 l
+ 228.605 581.281 l
+ 241.868 581.295 l
+ 255.132 581.386 l
+ 268.395 581.295 l
+ 281.658 581.305 l
+ 294.921 581.309 l
+ 308.184 581.314 l
+ 321.447 581.429 l
+ 334.711 581.552 l
+ 347.974 581.362 l
+ 361.237 581.476 l
+ 374.5 581.938 l
+ S
+ []0 d
+ 389.5 680.3 m
+ 413.5 680.3 l
+ S
+ 403.52 680.28 m
+ 403.52 681.384 402.624 682.28 401.52 682.28 c
+ 400.416 682.28 399.52 681.384 399.52 680.28 c
+ 399.52 679.176 400.416 678.28 401.52 678.28 c
+ 402.624 678.28 403.52 679.176 403.52 680.28 c
+ B
+ BT
+ 9 0 0 9 417.5 677.6 Tm
+ (Original-RecSyncStmt)Tj
+ ET
+ 389.5 669.5 m
+ 413.5 669.5 l
+ S
+ 399.5 667.5 4 4 re
+ B
+ BT
+ 9 0 0 9 417.5 666.8 Tm
+ (Original-RecSyncMethod )Tj
+ ET
+ 389.5 658.7 m
+ 413.5 658.7 l
+ 399.5 656.7 m
+ 403.5 660.7 l
+ 399.5 660.7 m
+ 403.5 656.7 l
+ S
+ BT
+ 9 0 0 9 417.5 656 Tm
+ (Original-SyncStmt)Tj
+ ET
+ 389.5 647.9 m
+ 413.5 647.9 l
+ S
+ 403.5 645.9 m
+ 401.5 649.9 l
+ 399.5 645.9 l
+ b
+ BT
+ 9 0 0 9 417.5 645.2 Tm
+ (Original-SyncMethod)Tj
+ ET
+ 389.5 637.1 m
+ 413.5 637.1 l
+ S
+ BT
+ 9 0 0 9 417.5 634.4 Tm
+ (EVM-RecSyncStmt)Tj
+ ET
+ 389.5 626.3 m
+ 413.5 626.3 l
+ 399.5 626.3 m
+ 403.5 626.3 l
+ 401.5 624.3 m
+ 401.5 628.3 l
+ S
+ BT
+ 9 0 0 9 417.5 623.6 Tm
+ (EVM-RecSyncMethod)Tj
+ ET
+ [1 3.2 ]0 d
+ 389.5 615.5 m
+ 413.5 615.5 l
+ S
+ BT
+ 9 0 0 9 417.5 612.8 Tm
+ (EVM-SyncStmt)Tj
+ ET
+ [4 ]0 d
+ 389.5 604.7 m
+ 413.5 604.7 l
+ S
+ BT
+ 9 0 0 9 417.5 602 Tm
+ (EVM-SyncMethod)Tj
+ /N92 1 Tf
+ 12 0 0 12 225.25 516.5 Tm
+ (Figure 10. Cost of synchronization)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 25 25
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (22)Tj
+ /N91 1 Tf
+ -19 56.4858 TD
+ 0 Tw
+ [(7.3.2 Beha)26 (vior of our algorithm on r)18 (ealistic pr)18 (ograms)]TJ
+ /N92 1 Tf
+ 0 -1.8333 TD
+ [(Consider)-325 (no)25 (w)-325 (the)-325 (algorithm\325)55 (s)-324 (beha)20 (vior)-325 (on)-325 (realistic)-324 (programs.)-324 (W)80 (e)-325 (\336rst)-325 (study)-325 (the)-325 (\322pure\323)-325 (form)-324 (of)]TJ
+ 0 -1.1667 TD
+ [(the)-231 (meta-lock)-231 (algorithm,)-232 (without)-231 (e)16 (xtra)-232 (f)11 (ast)-231 (locking)-232 (and)-231 (unlocking.)-231 (In)-231 (this)-231 (case,)-231 (each)-231 (monitor)20 (-le)25 (v)15 (e)0 (l)]TJ
+ T*
+ [(synchronization)-297 (operation)-298 (in)40 (v)20 (olv)16 (es)-299 (a)]TJ
+ /N95 1 Tf
+ 15.115 0 TD
+ (getMetaLock\(\))Tj
+ /N92 1 Tf
+ 8.0983 0 TD
+ (and)Tj
+ /N95 1 Tf
+ 1.7417 0 TD
+ (releaseMetaLock\(\))Tj
+ /N92 1 Tf
+ 10.4983 0 TD
+ [(call.)-298 (The)]TJ
+ -35.4533 -1.1667 TD
+ [(left)-309 (half)-308 (of)-308 (T)79 (able)-250 (3)-308 (sho)25 (ws)-308 (that)-308 (the)-309 (f)10 (ast)-309 (path)-308 (is)-309 (tak)10 (en)-308 (in)-309 (all)-308 (b)20 (u)0 (t)-309 (a)0 (n)-308 (e)15 (xtremely)-308 (small)-309 (fraction)-308 (of)-309 (the)]TJ
+ T*
+ [(cases;)-337 (that)-337 (is,)-337 (meta-lock)-337 (contention)-337 (is)-337 (e)15 (xtremely)-337 (rare.)-337 (W)80 (e)-337 (instrumented)-337 (only)-337 (meta-lock)-337 (acquisi-)]TJ
+ T*
+ [(tion,)-281 (since)-281 (the)-281 (algorithm)-281 (is)-280 (such)-281 (that)-281 (the)-280 (number)-281 (of)-281 (f)11 (ast/slo)25 (w)]TJ
+ /N95 1 Tf
+ 24.7475 0 TD
+ (getMetaLock\(\))Tj
+ /N92 1 Tf
+ 8.0808 0 TD
+ [(calls)-280 (equals)-282 (the)]TJ
+ -32.8283 -1.1667 TD
+ [(number of f)10 (ast/slo)25 (w)]TJ
+ /N95 1 Tf
+ 8.2142 0 TD
+ (releaseMetaLock\(\))Tj
+ /N92 1 Tf
+ 10.2 0 TD
+ ( calls.)Tj
+ -18.4142 -30 TD
+ [(Ha)20 (ving)-234 (con\336rmed)-233 (that)-234 (the)-234 (meta-locking)-233 (f)10 (ast)-234 (paths)-233 (dominate,)-234 (let)-233 (us)-233 (study)-234 (those)-234 (f)11 (ast)-234 (paths)-233 (on)-234 (a)-234 (typ-)]TJ
+ 0 -1.1667 TD
+ [(ical)-303 (RISC)-304 (processor)56 (.)-304 (Figure)-250 (11)-304 (sho)25 (ws)-304 (the)-304 (SP)92 (ARC)-304 (instructions)-304 (that)-303 (result)-305 (from)-303 (translating)-304 (a)-304 (syn-)]TJ
+ T*
+ (chronization operation of the form:)Tj
+ /N95 1 Tf
+ 10 0 0 10 108 199.33 Tm
+ (multiUseWord = getMetaLock\(ee, obj\);)Tj
+ 2.4 -1.2 TD
+ (newMultiUseWord = bodyOfSynchronizationOperation\(ee, obj,)Tj
+ 29.4 -1.2 TD
+ (multiUseWord\);)Tj
+ -31.8 -1.2 TD
+ (releaseMetaLock\(ee, obj, newMultiUseWord\);)Tj
+ /N92 1 Tf
+ 12 0 0 12 72 143 Tm
+ [(On)-345 (entry)65 (,)-346 (w)0 (e)-346 (assume)-345 (that)-346 (re)15 (gister)]TJ
+ /N95 1 Tf
+ 14.1292 0 TD
+ (%i0)Tj
+ /N92 1 Tf
+ 2.1458 0 TD
+ [(holds)-345 (the)-346 (address)-345 (of)-345 (the)-345 (e)15 (x)15 (ecution)-346 (en)41 (vironment)]TJ
+ /N95 1 Tf
+ 19.735 0 TD
+ (ee)Tj
+ /N92 1 Tf
+ 1.5458 0 TD
+ (and)Tj
+ /N95 1 Tf
+ -37.5558 -1.1667 TD
+ (%i1)Tj
+ /N92 1 Tf
+ 2.0475 0 TD
+ [(holds)-247 (the)-247 (address)-248 (of)-247 (an)-247 (object)]TJ
+ /N95 1 Tf
+ 12.0925 0 TD
+ (obj)Tj
+ /N92 1 Tf
+ 1.8 0 TD
+ [(.)-247 (I)0 (t)-247 (tak)10 (es)-247 (se)25 (v)15 (e)0 (n)-248 (instructions)-247 (to)-247 (perform)-247 (the)-247 (f)10 (ast)-247 (path)]TJ
+ /N95 1 Tf
+ 20.66 0 TD
+ (get-)Tj
+ -36.6 -1.1667 TD
+ (MetaLock\(\))Tj
+ /N92 1 Tf
+ 6 0 TD
+ [(,)-302 (including)-303 (e)15 (xtracting)-302 (the)-302 (high)-303 (30)-302 (bits)-303 (of)-302 (the)-303 (multi-use)-303 (w)10 (ord)-303 (into)-302 (one)-303 (re)15 (gister)-302 (and)]TJ
+ -6 -1.1667 TD
+ [(the)-242 (lo)26 (w)-242 (2)-243 (bits)-242 (\(the)-242 (lock)-242 (state\))-242 (into)-241 (another)55 (.)-242 (The)-242 (code)-242 (for)-242 (the)-241 (body)-242 (of)-242 (the)-242 (synchronization)-242 (operation)]TJ
+ T*
+ [(w)10 (ould)-344 (follo)25 (w)64 (.)-343 (At)-343 (the)-344 (end,)-343 (we)-343 (ha)20 (v)15 (e)-344 (4)-343 (instructions)-344 (for)-344 (the)-343 (f)10 (ast)-343 (path)-344 (of)]TJ
+ /N95 1 Tf
+ 28.55 0 TD
+ (releaseMetaLock\(\))Tj
+ /N92 1 Tf
+ 10.2 0 TD
+ (.)Tj
+ -27.9783 41.25 TD
+ [(T)80 (able 3. Frequenc)16 (y of meta-lock contention)]TJ
+ /N91 1 Tf
+ 10 0 0 10 220.65 557.33 Tm
+ [(without extra fast)-10388 (with extra fast)]TJ
+ -12.542 -1.7 TD
+ [(Benchmark)-3832 (# getMetaLock)-1246 (#getMetaLockSlo)10 (w)-1246 (#)0 ( getMetaLock)-1375 (#getMetaLockSlo)10 (w)]TJ
+ /N92 1 Tf
+ T*
+ [(Hello)-11647 (3,054)-8059 (0)-6309 (1,418)-8317 (0)]TJ
+ T*
+ [(_201_compress)-7092 (22,180)-8059 (3)-6309 (2,269)-8317 (2)]TJ
+ T*
+ [(_202_jess)-8119 (9,619,742)-7559 (19)-6309 (4,171)-7817 (10)]TJ
+ T*
+ [(_209_db)-7619 (106,829,540)-8059 (1)-6309 (2,024)-8317 (5)]TJ
+ T*
+ [(_213_ja)20 (v)25 (a)0 (c)-7054 (34,380,756)-7559 (50)-5809 (39,949)-7817 (61)]TJ
+ T*
+ [(_222_mpe)15 (gaudio)-6445 (22,813)-7559 (10)-6309 (2,620)-8317 (5)]TJ
+ T*
+ [(_227_mtrt)-7952 (1,424,925)-8059 (1)-6309 (2,397)-8317 (3)]TJ
+ T*
+ [(_228_jack)-7453 (23,851,600)-8059 (8)-6309 (2,979)-8317 (5)]TJ
+ T*
+ [(_224_richards)-7648 (70,560)-7559 (59)-6309 (3,434)-7817 (52)]TJ
+ T*
+ [(_233_tmix)-7785 (8,711,428)-6309 (1,612)-4559 (2,183,531)-6567 (1,730)]TJ
+ T*
+ [(SwingMark)-7397 (4,062,787)-6309 (2,508)-5309 (465,758)-6567 (1,977)]TJ
+ T*
+ [(v)20 (olano serv)15 (er)-6739 (9,622,570)-7059 (587)-5309 (209,341)-7317 (542)]TJ
+ T*
+ [(v)20 (olano client)-6945 (9,495,680)-8059 (6)-5809 (17,625)-8317 (3)]TJ
+ T*
+ [(JWS)-10230 (1,783,691)-6309 (7,800)-5309 (162,586)-6567 (2,743)]TJ
+ ET
+ 0 G
+ 0 J
+ 0 j
+ 0.6 w
+ 3.86 M
+ []0 d
+ 94.23 296.25 m
+ 94.23 550.75 l
+ B*
+ 172.83 295.75 m
+ 172.83 567.75 l
+ B*
+ 258.42 295.75 m
+ 258.42 551.25 l
+ B*
+ 344.01 295.75 m
+ 344.01 568.25 l
+ B*
+ 429.6 295.75 m
+ 429.6 551.25 l
+ B*
+ 517.77 296.25 m
+ 517.77 567.75 l
+ B*
+ 518.02 568 m
+ 172.58 568 l
+ B*
+ 518.02 551 m
+ 93.98 551 l
+ B*
+ 517.52 535.25 m
+ 94.48 535.25 l
+ B*
+ 517.52 532.75 m
+ 94.48 532.75 l
+ B*
+ 517.52 518.25 m
+ 94.48 518.25 l
+ B*
+ 517.52 515.75 m
+ 94.48 515.75 l
+ B*
+ 518.02 500 m
+ 93.98 500 l
+ B*
+ 518.02 483 m
+ 93.98 483 l
+ B*
+ 518.02 466 m
+ 93.98 466 l
+ B*
+ 518.02 449 m
+ 93.98 449 l
+ B*
+ 518.02 432 m
+ 93.98 432 l
+ B*
+ 518.02 415 m
+ 93.98 415 l
+ B*
+ 517.52 399.25 m
+ 94.48 399.25 l
+ B*
+ 517.52 396.75 m
+ 94.48 396.75 l
+ B*
+ 518.02 381 m
+ 93.98 381 l
+ B*
+ 518.02 364 m
+ 93.98 364 l
+ B*
+ 518.02 347 m
+ 93.98 347 l
+ B*
+ 518.02 330 m
+ 93.98 330 l
+ B*
+ 518.02 313 m
+ 93.98 313 l
+ B*
+ 518.02 296 m
+ 93.98 296 l
+ B*
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 26 26
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (23)Tj
+ -19 36.2892 TD
+ [(This)-369 (gi)25 (v)15 (e)0 (s)-369 (u)0 (s)-370 (a)-369 (total)-370 (of)-369 (11)-369 (instructions)-370 (for)-370 (the)-370 (f)11 (ast)-370 (paths)-370 (of)-369 (meta-lock)-370 (acquisition)-369 (and)-370 (release.)]TJ
+ 0 -1.1667 TD
+ [(While)-327 (a)-327 (careful)-326 (analysis)-327 (of)-327 (the)-326 (c)15 (ycles)-327 (consumed)-326 (by)-327 (an)-327 (optimal)-327 (implementation)-326 (is)-327 (interesting)-326 (in)]TJ
+ T*
+ [(the)-263 (conte)15 (xt)-263 (of)-262 (a)-263 (particular)-263 (architecture,)-262 (for)-263 (the)-262 (present)-263 (purposes)-262 (we)-263 (shall)-263 (be)-263 (satis\336ed)-262 (with)-263 (consid-)]TJ
+ T*
+ [(ering)-413 (the)-414 (SP)92 (ARC)-414 (implementation)-413 (representati)25 (v)15 (e)-413 (of)-414 (a)-414 (typical)-414 (RISC)-414 (implementation.)-413 (The)-413 (most)]TJ
+ T*
+ [(costly)-427 (instructions)-427 (are)-426 (the)-427 (tw)10 (o)-427 (atomic)-426 (instructions,)]TJ
+ /N95 1 Tf
+ 21.6158 0 TD
+ (swap)Tj
+ /N92 1 Tf
+ 2.8267 0 TD
+ (in)Tj
+ /N95 1 Tf
+ 1.205 0 TD
+ (getMetaLock\(\))Tj
+ /N92 1 Tf
+ 7.8 0 TD
+ [(,)-427 (and)]TJ
+ /N95 1 Tf
+ 2.5475 0 TD
+ (cas)Tj
+ /N92 1 Tf
+ 2.2267 0 TD
+ (in)Tj
+ /N95 1 Tf
+ -38.2217 -1.1667 TD
+ (releaseMetaLock\(\))Tj
+ /N92 1 Tf
+ 10.2 0 TD
+ 0 Tw
+ (.)Tj
+ -10.2 -1.75 TD
+ [(No)25 (w)-276 (consider)-275 (the)-276 (performance)-276 (of)-275 (the)-276 (system)-275 (with)-276 (e)15 (xtra)-276 (f)10 (ast)-276 (synchronization)-276 (enabled.)-276 (Recall)-276 (that)]TJ
+ 0 -1.1667 TD
+ [(this)-323 (optimization)-323 (fuses)-323 (meta-locking)-323 (and)-323 (monitor)20 (-locking)-323 (to)-324 (allo)25 (w)-323 (monitor)21 (-lock)-323 (acquisition)-323 (and)]TJ
+ T*
+ [(release)-326 (each)-326 (with)-326 (a)-326 (single)-326 (atomic)-326 (instruction)-326 (in)-326 (uncontended)-326 (cases,)-326 (b)20 (u)0 (t)-326 (i)0 (n)-326 (contended)-326 (cases)-327 (f)11 (alls)]TJ
+ T*
+ [(back)-229 (to)-229 (the)-230 (meta-lock)-229 (protocol)-229 (for)-230 (a)-229 (total)-229 (cost)-230 (of)-229 (three)-229 (atomic)-230 (instructions.)-229 (If)-229 (monitor)20 (-lock)-229 (conten-)]TJ
+ T*
+ [(tion)-261 (is)-261 (rare,)-262 (as)-261 (Bacon)]TJ
+ /N94 1 Tf
+ 8.7225 0 TD
+ [(et)-261 (al)]TJ
+ /N92 1 Tf
+ 1.7617 0 TD
+ [(.)70 (\325)56 (s)-262 (data)-261 (indicate)-261 ([3],)-261 (this)-261 (will)-261 (be)-262 (a)-261 (net)-262 (win;)-261 (otherwise,)-261 (it)-261 (could)-262 (be)-261 (a)-262 (loss.)]TJ
+ -10.4842 -1.1667 TD
+ [(T)80 (able)-250 (1)-402 (sho)25 (ws)-401 (the)-401 (bottom)-402 (line)-401 (on)-402 (e)15 (xtra)-402 (f)10 (ast)-401 (synchronization)-402 (for)-401 (our)-401 (benchmarks:)-401 (no)-401 (program)]TJ
+ T*
+ [(slo)25 (ws)-354 (do)25 (wn,)-353 (and)-353 (se)25 (v)15 (eral)-353 (speed)-354 (up)-353 (signi\336cantly)65 (.)-353 (Comparing)-353 (the)-354 (left)-354 (and)-353 (right)-353 (halv)15 (es)-354 (of)-354 (T)80 (able)-250 (3)]TJ
+ T*
+ [(sho)25 (ws)-276 (that)-276 (the)-276 (speedup)-276 (results)-276 (from)-276 (a)-276 (signi\336cant)-276 (reduction)-275 (in)-276 (the)-276 (number)-276 (of)-276 (meta-locking)-275 (opera-)]TJ
+ T*
+ [(tions,)-313 (con\336rming)-313 (that)-313 (monitor)20 (-lock)-313 (contention)-314 (is)-313 (indeed)-314 (rare.)-313 (Ho)25 (we)25 (v)15 (e)0 (r)40 (,)-313 (T)80 (able)-250 (3)-313 (also)-314 (sho)25 (ws)-313 (that,)]TJ
+ T*
+ [(for)-433 (some)-432 (programs,)-433 (the)-433 (f)10 (all-back)-433 (case)-433 (is)-433 (suf)25 (\336ciently)-433 (frequent)-433 (that)-432 (its)-432 (performance)-433 (cannot)-433 (be)]TJ
+ T*
+ [(ne)15 (glected.)-263 (Finally)65 (,)-264 (the)-264 (similar)-264 (number)-263 (of)-264 (slo)25 (w)-264 (meta-lock)-264 (operations)-263 (in)-264 (the)-264 (left)-264 (and)-263 (right)-264 (halv)15 (es)-264 (of)]TJ
+ T*
+ [(T)80 (able)-250 (3)-279 (implies)-279 (that)-278 (e)15 (xtra)-279 (f)10 (ast)-279 (synchronization)-278 (does)-279 (not)-279 (reduce)-279 (contention)-279 (on)-279 (the)-279 (meta-lock.)-279 (\(F)16 (or)]TJ
+ T*
+ [(completeness,)-286 (we)-286 (should)-286 (mention)-285 (that)-286 (a)-286 (f)0 (e)25 (w)-285 (of)-286 (the)-285 (meta-lock)-286 (operations)-286 (that)-286 (remain)-285 (when)-286 (using)]TJ
+ T*
+ [(e)15 (xtra)-304 (f)10 (ast)-304 (synchronization)-304 (result)-304 (from)-303 (layers)-304 (in)-304 (EVM,)-304 (such)-304 (as)-304 (class)-304 (loading)-304 (and)-303 (JNI,)-304 (that)-304 (do)-303 (not)]TJ
+ T*
+ [(use the e)15 (xtra f)11 (ast operations.\))]TJ
+ /N91 1 Tf
+ 16 0 0 16 72 147.98 Tm
+ [(8 Conclusions and futur)18 (e w)10 (ork)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 124.64 Tm
+ [(W)80 (e)-251 (ha)20 (v)15 (e)-251 (presented)-250 (a)-251 (meta-locking)-251 (algorithm)-251 (that)-251 (supports)-251 (a)-251 (v)25 (ariety)-251 (of)-250 (higher)20 (-le)25 (v)15 (e)0 (l)-251 (locking)-251 (proto-)]TJ
+ T*
+ [(cols,)-319 (by)-319 (pro)15 (viding)-319 (e)15 (xclusi)25 (v)15 (e)-319 (access)-319 (to)-319 (the)-320 (data)-319 (structures)-319 (used)-319 (in)-319 (the)-319 (higher)20 (-le)25 (v)15 (e)0 (l)-320 (protocol.)-318 (This)]TJ
+ T*
+ [(meta-locking)-258 (algorithm)-257 (has)-258 (se)26 (v)15 (eral)-258 (virtues.)-258 (Lik)10 (e)-258 (the)-258 (HotSpot)-257 (system)-258 (that)-257 (introduced)-258 (header)-257 (w)10 (ord)]TJ
+ T*
+ [(displacement,)-349 (the)-350 (meta-locking)-349 (algorithm)-350 (is)-350 (highly)-351 (space-ef)25 (\336cient,)-350 (requiring)-350 (only)-350 (tw)10 (o)-350 (reserv)16 (ed)]TJ
+ T*
+ [(bits)-263 (in)-264 (each)-264 (object,)-263 (and)-263 (a)-264 (number)-263 (of)-264 (lock)-263 (records)-264 (that)-264 (is)-263 (small)-264 (for)-263 (normal)-264 (programs.)-264 (It)-263 (is)-264 (also)-263 (rea-)]TJ
+ 5.2808 37.3217 TD
+ [(Figure 11. F)16 (ast path for a synchronization operation wrapped)]TJ
+ 7.38 -1 TD
+ (in meta-lock and unlock)Tj
+ /N95 1 Tf
+ 8 0 0 8 99 711.17 Tm
+ (! getMetaLock)Tj
+ 0 -1.25 TD
+ (or %i0, 3, %l0 ! %l0 = my busy value)Tj
+ T*
+ (add %i1, 4, %l1 ! %l1 = multi-use word address)Tj
+ T*
+ (swap [%l1], %l0 ! Swap out busy value)Tj
+ T*
+ (and %l0, 3, %l2 ! %l2 = meta-lock state)Tj
+ T*
+ (cmp %l2, 3 ! Is lock state busy?)Tj
+ T*
+ (beq slowGetMetaLockPath)Tj
+ T*
+ (sub %l0, %l2, %l0 ! In delay slot compute high 30 bits)Tj
+ 19.2 -1.25 TD
+ (! Slow path gets predecessor EE in %l0)Tj
+ T*
+ (! and synch operation gets lock)Tj
+ T*
+ (! record pointer or age&hash in %l0)Tj
+ -19.2 -1.25 TD
+ (... %l2 = body of synchronization operation)Tj
+ T*
+ (! releaseMetaLock)Tj
+ T*
+ (or %i0, 3, %l0 ! %l0 = my busy value)Tj
+ T*
+ (cas [%l1], %l0, %l2 ! if [%l1] == %l0 then swap\([%l0],%l2\)\
+ )Tj
+ T*
+ (cmp %l0, %l2 ! did we do the swap?)Tj
+ T*
+ (bne slowReleaseMetaLockPath)Tj
+ T*
+ (! unfilled delay slot here)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 27 27
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (24)Tj
+ -19 56.4858 TD
+ [(sonably)-270 (time-ef)25 (\336cient)-270 (in)-269 (the)-270 (normal)-270 (case,)-270 (requiring)-270 (7)-270 (instructions)-269 (to)-270 (acquire)-269 (and)-270 (4)-270 (instructions)-269 (to)]TJ
+ 0 -1.1667 TD
+ [(release)-454 (an)-454 (uncontended)-454 (meta-lock.)-454 (Each)-454 (of)-454 (those)-454 (paths)-454 (includes)-454 (a)-454 (single)-454 (atomic)-454 (instruction.)]TJ
+ T*
+ [(Finally)65 (,)-342 (i)0 (t)-343 (i)0 (s)-343 (careful)-343 (to)-343 (a)20 (v)20 (oid)-343 (pathologies)-343 (when)-343 (there)-343 (is)-343 (contention:)-343 (the)-343 (algorithm)-342 (introduces)-343 (no)]TJ
+ T*
+ 0 Tw
+ [(b)20 (usy-w)10 (aiting, and only v)15 (ery rarely allocates from global memory)66 (.)]TJ
+ 0 -1.75 TD
+ [(W)80 (e)-397 (ha)20 (v)15 (e)-397 (also)-397 (presented)-397 (a)-398 (particular)-397 (higher)20 (-le)25 (v)15 (e)0 (l)-397 (locking)-397 (protocol,)-397 (based)-397 (on)-397 (this)-397 (meta-locking)]TJ
+ 0 -1.1667 TD
+ [(algorithm,)-267 (for)-267 (the)-267 (synchronization)-267 (primiti)26 (v)15 (e)0 (s)-268 (o)0 (f)-267 (the)-268 (Ja)21 (v)25 (a)-268 (virtual)-267 (machine.)-268 (An)-267 (optimization)-267 (of)-268 (this)]TJ
+ T*
+ [(protocol)-248 (gains)-249 (the)-249 (ef)25 (\336cienc)15 (y)-249 (o)0 (f)-249 (a)20 (v)20 (oiding)-248 (meta-locking)-249 (in)-249 (most)-249 (cases,)-248 (b)20 (u)0 (t)-249 (the)-248 (ability)-249 (to)-249 (f)10 (all)-248 (back)-249 (to)]TJ
+ T*
+ [(meta-locking in uncommon cases re)16 (gularizes and simpli\336es the protocol.)]TJ
+ 0 -1.75 TD
+ [(Finally)65 (,)-274 (w)0 (e)-275 (h)0 (a)20 (v)15 (e)-274 (implemented)-274 (and)-275 (v)25 (alidated)-275 (the)-275 (performance)-274 (of)-274 (the)-275 (meta-lock)-274 (in)-275 (the)-275 (conte)15 (xt)-274 (of)-274 (a)]TJ
+ 0 -1.1667 TD
+ [(high-performance)-427 (Ja)20 (v)25 (a)-428 (virtual)-427 (machine.)-428 (Our)-427 (measurements,)-428 (which)-428 (include)-428 (a)-428 (study)-428 (of)-428 (se)26 (v)15 (eral)]TJ
+ T*
+ [(multi-threaded)-257 (programs)-258 (running)-257 (on)-257 (a)-258 (4-CPU)-257 (system,)-258 (indicate)-257 (that)-257 (the)-257 (meta-lock)-257 (algorithm)-257 (oper-)]TJ
+ T*
+ [(ates)-323 (with)-323 (a)-323 (l)0 (o)26 (w)-323 (contention)-324 (rate)-323 (to)-323 (ensure)-323 (that)-323 (the)-323 (f)10 (ast)-323 (path)-323 (strongly)-323 (dominates)-323 (the)-323 (performance.)]TJ
+ T*
+ [(Synthetic)-366 (benchmarks)-366 (designed)-366 (to)-366 (isolate)-366 (the)-366 (cost)-366 (of)-366 (synchronization)-366 (indicate)-366 (that)-366 (our)-366 (scheme)]TJ
+ T*
+ [(outperforms the original monitor cache scheme by a f)11 (actor of three or more.)]TJ
+ 0 -1.75 TD
+ [(In)-241 (the)-242 (future,)-241 (we)-241 (may)-241 (w)10 (ork)-241 (on)-242 (e)15 (xtending)-241 (the)-242 (e)16 (xtra)-242 (f)10 (ast)-241 (instruction)-241 (sequences)-242 (to)-241 (handle)-241 (more)-242 (cases)]TJ
+ 0 -1.1667 TD
+ [(while)-309 (continuing)-308 (to)-309 (use)-309 (the)-309 (meta-lock)-309 (protocol)-308 (as)-309 (a)-309 (comfortable)-309 (f)10 (all-back.)-309 (F)14 (o)0 (r)-309 (e)15 (xample,)-308 (if)-309 (mea-)]TJ
+ T*
+ [(surements)-317 (justify)-317 (it,)-318 (e)15 (xtra)-317 (f)11 (ast)-318 (locking)-317 (could)-317 (be)-318 (e)15 (xtended)-317 (to)-318 (allo)25 (w)-317 (a)-318 (non-empty)-318 (queue)-318 (with)-318 (lock)]TJ
+ T*
+ (state)Tj
+ /N95 1 Tf
+ 2.135 0 TD
+ (WAITERS)Tj
+ /N92 1 Tf
+ 4.2 0 TD
+ [(.)-302 (W)81 (e)-303 (are)-301 (also)-302 (in)40 (v)15 (estigating)-302 (whether)-302 (the)-302 (high-le)26 (v)15 (e)0 (l)-302 (synchronization)-302 (state)-302 (could)-302 (be)]TJ
+ -6.335 -1.1667 TD
+ [(made)-298 (to)-299 (in\337uence)-298 (the)-298 (order)-299 (in)-298 (which)-298 (threads)-299 (acquire)-298 (meta-locks.)-298 (F)15 (o)0 (r)-299 (e)16 (xample,)-298 (it)-299 (might)-298 (impro)15 (v)15 (e)]TJ
+ T*
+ [(ef)25 (\336cienc)14 (y)-257 (i)0 (f)-257 (a)-258 (thread)-258 (attempting)-258 (to)-258 (release)-257 (a)-258 (monitor)20 (-lock)-257 (could)-258 (be)-258 (gi)26 (v)14 (e)0 (n)-258 (preferential)-257 (treatment)-258 (at)]TJ
+ T*
+ [(the meta-lock le)25 (v)15 (el.)]TJ
+ /N94 1 Tf
+ 0 -1.75 TD
+ [(Ac)20 (knowledgments.)]TJ
+ /N92 1 Tf
+ 7.6825 0 TD
+ [(Lars)-232 (Bak,)-231 (Da)20 (vid)-232 (Dice,)-231 (Da)20 (vid)-232 (Holmes,)-231 (Urs)-232 (H\232lzle,)-232 (Doug)-231 (Lea,)-232 (and)-231 (Hong)-232 (Zhang)]TJ
+ -7.6825 -1.1667 TD
+ [(pro)15 (vided v)15 (ery useful comments on a draft of the paper)56 (.)]TJ
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 28 28
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (25)Tj
+ /N91 1 Tf
+ 16 0 0 16 72 709.33 Tm
+ [(Refer)18 (ences)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 686 Tm
+ [(1.)-750 (Tom)-231 (Anderson.)-232 (The)-231 (Performance)-231 (of)-232 (Spin)-231 (Lock)-232 (Alternatives)-231 (for)-231 (Shared-Memory)-231 (Multiproces-)]TJ
+ 1.44 -1.1667 TD
+ (sors.)Tj
+ /N94 1 Tf
+ 2.1108 0 TD
+ 0 Tw
+ (IEEE Transactions on Parallel and Distributed Systems,)Tj
+ /N92 1 Tf
+ 22.8892 0 TD
+ (1\(1\), p. 6-16, January 1990.)Tj
+ -26.44 -1.4167 TD
+ [(2.)-750 (Ken)-341 (Arnold)-340 (and)-341 (James)-341 (Gosling.)]TJ
+ /N94 1 Tf
+ 15.0075 0 TD
+ [(The)-341 (Java)-340 (Programming)-340 (Language)]TJ
+ /N92 1 Tf
+ 14.0208 0 TD
+ [(.)-341 (The)-341 (Java)-340 (Series,)-340 (Addi-)]TJ
+ -27.5883 -1.1667 TD
+ (son-Wesley, 1996.)Tj
+ -1.44 -1.4167 TD
+ [(3.)-750 (David)-392 (F.)-391 (Bacon,)-392 (Ravi)-391 (Konuru,)-391 (Chet)-392 (Murthy,)-391 (and)-392 (Mauricio)-391 (Serrano.)-391 (Thin)-391 (Locks:)-392 (Feather-)]TJ
+ 1.44 -1.1667 TD
+ [(weight)-309 (Synchronization)-309 (for)-309 (Java.)-309 (In)]TJ
+ /N94 1 Tf
+ 14.8475 0 TD
+ [(Proc.)-308 (ACM)-309 (SIGPLAN)-309 (\32498)-309 (Conference)-309 (on)-309 (Programming)]TJ
+ -14.8475 -1.1667 TD
+ (Language Design and Implementation \(PLDI\))Tj
+ /N92 1 Tf
+ 18.4983 0 TD
+ (, p. 258-268, Montreal, Canada, June 1998.)Tj
+ -19.9383 -1.4167 TD
+ [(4.)-750 (Lars)-245 (Bak,)-244 (presentation)-244 (on)-244 (the)-245 (HotSpot)-244 (JVM,)-245 (Panel:)-244 (The)-244 (New)-244 (Crop)-245 (Of)-244 (Java)-245 (Virtual)-244 (Machines.)]TJ
+ 1.44 -1.1667 TD
+ (In)Tj
+ /N94 1 Tf
+ 1.2342 0 TD
+ [(Proc.)-401 (ACM)-401 (SIGPLAN)-401 (\32498)-401 (Conference)-401 (on)-401 (Object-Oriented)-401 (Programming)-400 (Systems,)-400 (Lan-)]TJ
+ -1.2342 -1.1667 TD
+ (guages, and Applications)Tj
+ /N92 1 Tf
+ 10.1392 0 TD
+ (, p. 179-182, Vancouver, Canada, October 1998.)Tj
+ -11.5792 -1.4167 TD
+ [(5.)-750 (Andrew)-389 (Birrell.)]TJ
+ /N94 1 Tf
+ 8.36 0 TD
+ [(An)-389 (Introduction)-389 (to)-389 (Programming)-389 (with)-389 (Threads)]TJ
+ /N92 1 Tf
+ 19.4458 0 TD
+ [(.)-389 (Digital)-389 (Systems)-389 (Research)]TJ
+ -26.3658 -1.1667 TD
+ (Center report no. 35, 1989.)Tj
+ -1.44 -1.4167 TD
+ [(6.)-750 (David)-226 (R.)-226 (Butenhof.)]TJ
+ /N94 1 Tf
+ 9.5108 0 TD
+ [(Programming)-226 (with)-225 (POSIX)]TJ
+ 9.6 0 0 9.6 312.89 507.8 Tm
+ (\250)Tj
+ /N92 1 Tf
+ 12 0 0 12 322.9 503 Tm
+ [(Threads.)-225 (Addison-Wesley)-225 (Professional)-226 (Com-)]TJ
+ -19.4683 -1.1667 TD
+ (puting Series, 1997.)Tj
+ -1.44 -1.4167 TD
+ [(7.)-750 (Peter)-269 (A.)-268 (Buhr,)-269 (Michel)-269 (Fortier,)-269 (and)-268 (Michael)-269 (H.)-269 (Coffin.)-269 (Monitor)-268 (Classification.)]TJ
+ /N94 1 Tf
+ 33.12 0 TD
+ [(ACM)-269 (Comput-)]TJ
+ -31.68 -1.1667 TD
+ (ing Surveys)Tj
+ /N92 1 Tf
+ 4.6383 0 TD
+ (, 27\(1\), p. 63-107, March 1995.)Tj
+ -6.0783 -1.4167 TD
+ [(8.)-750 (Sylvia)-387 (Dieckmann)-386 (and)-387 (Urs)-387 (H\232lzle.)]TJ
+ /N94 1 Tf
+ 16.405 0 TD
+ [(A)-387 (Study)-386 (of)-387 (the)-387 (Allocation)-387 (Behavior)-387 (of)-387 (the)-386 (SPECjvm98)]TJ
+ -14.965 -1.1667 TD
+ [(Java)-304 (Benchmarks)]TJ
+ /N92 1 Tf
+ 7.1342 0 TD
+ [(.)-303 (Technical)-303 (Report)-303 (TRCS98-33,)-303 (Computer)-303 (Science)-303 (Department,)-304 (University)]TJ
+ -7.1342 -1.1667 TD
+ (of California, Santa Barbara, December 1998.)Tj
+ -1.44 -1.4167 TD
+ [(9.)-750 (Edsgar)-233 (Dijkstra.)-234 (Solution)-233 (of)-234 (a)-233 (Problem)-233 (in)-234 (Concurrent)-233 (Programming)-233 (Control.)]TJ
+ /N94 1 Tf
+ 32.2217 0 TD
+ (Communications)Tj
+ -30.7817 -1.1667 TD
+ [(of the A)30 (C)0 (M)]TJ
+ /N92 1 Tf
+ 4.5808 0 TD
+ ( 8\(9\), p. 569, August 1965.)Tj
+ -6.0208 -1.4167 TD
+ [(10.)-250 (Michael)-324 (Greenwald)-324 (and)-325 (David)-325 (Cheriton.)-325 (The)-325 (Synergy)-324 (Between)-325 (Non-blocking)-325 (Synchroniza-)]TJ
+ 1.44 -1.1667 TD
+ [(tion)-350 (and)-350 (Operating)-350 (System)-351 (Structure.)-350 (In)]TJ
+ /N94 1 Tf
+ 16.7942 0 TD
+ [(2nd)-350 (Symposium)-350 (on)-350 (Operating)-350 (Systems)-350 (Design)-350 (and)]TJ
+ -16.7942 -1.1667 TD
+ (Implementation \(OSDI \32596\))Tj
+ /N92 1 Tf
+ 11.0533 0 TD
+ (, p. 123-136, Seattle, WA, October 1996.)Tj
+ -12.4933 -1.4167 TD
+ [(11.)-250 (Per)-239 (Brinch)-239 (Hansen.)-239 (Monitors)-239 (and)-239 (Concurrent)-238 (Pascal:)-239 (a)-239 (personal)-238 (history.)-238 (In)]TJ
+ /N94 1 Tf
+ 31.5683 0 TD
+ [(Pr)45 (oceedings)-238 (of)-239 (the)]TJ
+ -30.1283 -1.1667 TD
+ [(Second)-396 (A)30 (C)0 (M)-397 (SIGPLAN)-396 (Confer)37 (ence)-396 (on)-396 (History)-397 (of)-396 (Pr)45 (o)10 (g)0 (r)15 (amming)-395 (Langua)9 (g)10 (e)0 (s)]TJ
+ /N92 1 Tf
+ 31.3992 0 TD
+ [(,)-397 (p)0 (.)-396 (1-35.)-396 (Pub-)]TJ
+ -31.3992 -1.1667 TD
+ (lished as)Tj
+ /N94 1 Tf
+ 3.7217 0 TD
+ [(A)29 (CM SIGPLAN Notices)]TJ
+ /N92 1 Tf
+ 9.5817 0 TD
+ ( 28\(3\), March 1993.)Tj
+ -14.7433 -1.4167 TD
+ [(12.)-250 (C.)-252 (A.)-253 (R.)-252 (Hoare.)-252 (Monitors:)-252 (An)-253 (Operating)-252 (System)-252 (Structuring)-252 (Concept.)]TJ
+ /N94 1 Tf
+ 29.7175 0 TD
+ [(Communications)-252 (of)-253 (the)]TJ
+ -28.2775 -1.1667 TD
+ -0.03 Tc
+ [(AC)-30 (M)]TJ
+ /N92 1 Tf
+ 2.0808 0 TD
+ 0 Tc
+ ( 17\(10\), p. 549-557, October 1974.)Tj
+ -3.5208 -1.4167 TD
+ [(13.)-250 (Andreas)-355 (Krall.)-355 (Efficient)-355 (JavaVM)-355 (Just-in-Time)-355 (Compilation.)-355 (In)]TJ
+ /N94 1 Tf
+ 27.7067 0 TD
+ [(Proc.)-355 (International)-355 (Confer-)]TJ
+ -26.2667 -1.1667 TD
+ [(ence)-473 (on)-472 (Parallel)-473 (Architectures)-473 (and)-472 (Compilation)-473 (Techniques)-472 (\(PACT\32598\),)]TJ
+ /N92 1 Tf
+ 31.0308 0 TD
+ [(p.)-473 (12-18.)-473 (Paris,)]TJ
+ -31.0308 -1.1667 TD
+ (France, October 1998.)Tj
+ -1.44 -1.4167 TD
+ [(14.)-250 (Andreas)-227 (Krall)-227 (and)-227 (Mark)-227 (Probst.)-227 (Monitors)-227 (and)-228 (Exceptions:)-227 (How)-227 (to)-228 (implement)-227 (Java)-227 (efficiently.)]TJ
+ 1.44 -1.1667 TD
+ (In)Tj
+ /N94 1 Tf
+ 1.0725 0 TD
+ [(ACM)-240 (1998)-240 (Workshop)-240 (on)-240 (Java)-239 (for)-240 (High-Performance)-239 (Computing)]TJ
+ /N92 1 Tf
+ 25.8992 0 TD
+ [(,)-240 (p)0 (.)-240 (15-24,)-239 (Palo)-240 (Alto,)-239 (Cali-)]TJ
+ -26.9717 -1.1667 TD
+ (fornia, March 1998.)Tj
+ -1.44 -1.4167 TD
+ [(15.)-250 (Leslie)-275 (Lamport.)-276 (Proving)-275 (the)-275 (Correctness)-275 (of)-275 (Multiprocess)-275 (Programs.)]TJ
+ /N94 1 Tf
+ 29.09 0 TD
+ [(IEEE)-275 (Trans.)-276 (Softw.)-275 (Eng.)]TJ
+ /N92 1 Tf
+ -27.65 -1.1667 TD
+ (SE-3, 2, p. 125-143, March 1977.)Tj
+ -1.44 -1.4167 TD
+ [(16.)-250 (Leslie)-302 (Lamport.)-302 (A)-302 (Fast)-302 (Mutual)-302 (Exclusion)-302 (Algorithm.)]TJ
+ /N94 1 Tf
+ 23.4467 0 TD
+ [(A)29 (C)0 (M)-302 (T)55 (r)15 (ansactions)-302 (on)-302 (Computing)-302 (Sys-)]TJ
+ -22.0067 -1.1667 TD
+ (tem)Tj
+ /N92 1 Tf
+ 1.4442 0 TD
+ ( 5\(1\), p. 1-11, February 1987.)Tj
+ -2.8842 -1.4167 TD
+ [(17.)-250 (Xavier)-926 (Leroy.)]TJ
+ /N94 1 Tf
+ 8.71 0 TD
+ [(The)-926 (LinuxThreads)-925 (library)]TJ
+ /N92 1 Tf
+ 11.685 0 TD
+ [(.)-926 (http://pauillac.inria.fr/~xleroy/linuxthreads/)]TJ
+ -18.955 -1.1667 TD
+ (index.html, 1997.)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 29 29
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (26)Tj
+ -19 56.4858 TD
+ [(18.)-250 (Timothy)-460 (Lindholm)-460 (and)-459 (Frank)-459 (Yellin.)]TJ
+ /N94 1 Tf
+ 17.7158 0 TD
+ [(The)-460 (Java)-460 (Virtual)-459 (Machine)-460 (Specification)]TJ
+ /N92 1 Tf
+ 16.7825 0 TD
+ [(.)-460 (The)-460 (Java)]TJ
+ -33.0583 -1.1667 TD
+ 0 Tw
+ (Series, Addison-Wesley, 1996.)Tj
+ -1.44 -1.4167 TD
+ [(19.)-250 (Peter)-287 (Magnusson,)-287 (Anders)-287 (Landin,)-287 (and)-287 (Erik)-286 (Hagersten.)]TJ
+ /N94 1 Tf
+ 23.865 0 TD
+ [(Ef)18 (\336cient)-288 (Softwar)37 (e)-287 (Sync)16 (hr)45 (onization)-287 (on)]TJ
+ -22.425 -1.1667 TD
+ [(Lar)37 (g)10 (e)-316 (Cac)15 (he)-316 (Coher)38 (ent)-316 (Multipr)45 (ocessor)10 (s.)]TJ
+ /N92 1 Tf
+ 16.5258 0 TD
+ [(SICS)-316 (Research)-316 (Report)-316 (T94:07,)-316 (Swedish)-316 (Institute)-315 (of)]TJ
+ -16.5258 -1.1667 TD
+ (Computer Science, Box 1263, S-164 28 Kista, Sweden, February 1994.)Tj
+ -1.44 -1.4167 TD
+ [(20.)-250 (John)-260 (M.)-261 (Mellor-Crummey)-260 (and)-260 (Michael)-260 (L.)-261 (Scott.)-260 (Algorithms)-260 (for)-260 (Scalable)-260 (Synchronization)-260 (on)]TJ
+ 1.44 -1.1667 TD
+ [(Shared-Memory)-368 (Multiprocessors.)]TJ
+ /N94 1 Tf
+ 13.9842 0 TD
+ [(ACM)-368 (Transactions)-368 (on)-368 (Computer)-368 (Systems,)]TJ
+ /N92 1 Tf
+ 17.5908 0 TD
+ [(9\(1\),)-368 (p.)-367 (21-65,)]TJ
+ -31.575 -1.1667 TD
+ (1991.)Tj
+ -1.44 -1.4167 TD
+ [(21.)-250 (Gilles)-302 (Muller,)-301 (B\207rbara)-301 (Moura,)-301 (Fabrice)-302 (Bellard,)-301 (and)-302 (Charles)-301 (Consel.)-302 (Harissa:)-301 (A)-301 (Flexible)-301 (and)]TJ
+ 1.44 -1.1667 TD
+ [(Efficient)-236 (Java)-235 (Environment)-235 (Mixing)-235 (Bytecode)-236 (and)-235 (Compiled)-236 (Code.)-236 (In)]TJ
+ /N94 1 Tf
+ 27.9233 0 TD
+ [(Proc.)-236 (of)-235 (the)-235 (3rd)-236 (Confer-)]TJ
+ -27.9233 -1.1667 TD
+ [(ence)-310 (on)-309 (Object-Oriented)-309 (Technologies)-309 (and)-309 (Systems)-310 (\(COOTS\),)]TJ
+ /N92 1 Tf
+ 25.6342 0 TD
+ [(p.)-309 (1-20,)-309 (Berkeley,)-309 (California,)]TJ
+ -25.6342 -1.1667 TD
+ (June 1997.)Tj
+ -1.44 -1.4167 TD
+ [(22.)-250 (John)-439 (Neffinger.)-439 (Which)-440 (Java)-439 (VM)-440 (scales)-439 (best?)]TJ
+ /N94 1 Tf
+ 21.0992 0 TD
+ (JavaWorld,)Tj
+ /N92 1 Tf
+ 5.0775 0 TD
+ [(August)-440 (1998.)-439 (http://www.java-)]TJ
+ -24.7367 -1.1667 TD
+ (world.com/javaworld/jw-08-1998/jw-08-volanomark.html. See also www.volan\
+ o.com.)Tj
+ -1.44 -1.4167 TD
+ [(23.)-250 (Susan)-439 (Owicki)-439 (and)-439 (Leslie)-439 (Lamport.)-439 (Proving)-439 (Liveness)-440 (Properties)-439 (of)-439 (Concurrent)-439 (Programs,)]TJ
+ /N94 1 Tf
+ 1.44 -1.1667 TD
+ (ACM Trans. Program. Lang. Syst.)Tj
+ /N92 1 Tf
+ 13.9733 0 TD
+ (4, 3, p. 445-495, July 1982.)Tj
+ -15.4133 -1.4167 TD
+ [(24.)-250 (Todd)-234 (A.)-235 (Proebsting,)-233 (Gregg)-234 (Townsend,)-234 (Patrick)-234 (Bridges,)-234 (John)-234 (H.)-234 (Hartman,)-234 (Tim)-234 (Newsham,)-234 (and)]TJ
+ 1.44 -1.1667 TD
+ [(Scott)-336 (A.)-336 (Watterson.)]TJ
+ /N94 1 Tf
+ 8.3967 0 TD
+ [(Toba:)-336 (Java)-336 (For)-337 (Applications\321A)-336 (Way)-336 (Ahead)-336 (of)-336 (Time)-337 (\(WAT\))-336 (Compiler)]TJ
+ /N92 1 Tf
+ 28.9133 0 TD
+ (.)Tj
+ -37.31 -1.1667 TD
+ (Technical Report, Dept. of Computer Science, University of Arizona, Tucs\
+ on, 1997.)Tj
+ -1.44 -1.4167 TD
+ [(25.)-250 (Ali-Reza)-331 (Adl-Tabatabai,)-330 (Michal)-331 (Cierniak,)-332 (Guei-Yuan)-331 (Lueh,)-332 (Vishesh)-330 (M.)-332 (Parakh,)-331 (and)-331 (James)]TJ
+ 1.44 -1.1667 TD
+ [(M.)-415 (Stichnoth.)-415 (Fast,)-415 (Effective)-415 (Code)-416 (Generation)-414 (in)-415 (a)-415 (Just-In-Time)-415 (Java)-415 (Compiler.)-415 (In)]TJ
+ /N94 1 Tf
+ 35.3658 0 TD
+ (Proc.)Tj
+ -35.3658 -1.1667 TD
+ [(ACM)-476 (SIGPLAN)-476 (\32498)-476 (Conference)-476 (on)-476 (Programming)-476 (Language)-476 (Design)-476 (and)-477 (Implementation)]TJ
+ T*
+ (\(PLDI\))Tj
+ /N92 1 Tf
+ 2.8883 0 TD
+ (, p. 280-290, Montreal, Canada, June 1998.)Tj
+ -4.3283 -1.4167 TD
+ [(26.)-250 (SPECjvm98 Benchmarks. August 19, 1998 release. http://www.spec.org/osg/j\
+ vm98.)]TJ
+ T*
+ [(27.)-250 (Sun)-353 (Microsystems,)-353 (Inc.)-354 (Java)-353 (2)-353 (on-line)-353 (documentation:)-353 (http://java.sun.com/products/jdk/1.2/)]TJ
+ 1.44 -1.1667 TD
+ (docs/api/index.html.)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Page: 30 30
+ %%BeginPageSetup
+ userdict /pgsave save put
+ PDFVars begin PDF begin PDFVars/InitAll get exec
+ %%EndPageSetup
+ 0 0 612 792 RC
+ 1 g
+ /N93 /ExtGState findRes gs
+ 1 i
+ 0 0 612 792 re
+ f
+ BT
+ /N92 1 Tf
+ 12 0 0 12 300 34.17 Tm
+ 0 g
+ 0 Tc
+ (27)Tj
+ /N91 1 Tf
+ 14 0 0 14 72 710.67 Tm
+ 0 Tw
+ [(About the A)50 (uthors)]TJ
+ /N92 1 Tf
+ 12 0 0 12 72 685 Tm
+ -0.004 Tc
+ [(Ole)-224 (Agesen)-225 (is)-224 (a)-223 (Senior)-225 (Staf)25 (f)-223 (Engineer)-225 (in)-223 (the)-224 (Ja)20 (v)25 (a)-224 (T)79 (opics)-225 (Group)-224 (in)-224 (Sun)-225 (Labs.)-224 (Pre)24 (viously)64 (,)-224 (h)0 (e)-224 (w)10 (ork)10 (ed)]TJ
+ 0 -1.1667 TD
+ [(in)-333 (the)-332 (Kanban)-333 (group)-333 (and)-332 (the)-333 (Self)-333 (group,)-333 (also)-333 (in)-333 (Sun)-332 (Labs.)-333 (He)-332 (has)-333 (an)-332 (M.S.)-332 (de)15 (gree)-333 (from)-332 (Aarhus)]TJ
+ T*
+ [(Uni)24 (v)15 (ersity in Denmark, and M.S. and Ph.D. de)10 (grees from Stanford Uni)22 (v)14 (ersity in California.)]TJ
+ 0 -1.9167 TD
+ 0 Tc
+ [(Da)20 (v)15 (e)-392 (Detlefs)-392 (is)-392 (a)-392 (Staf)25 (f)-392 (Engineer)-392 (in)-391 (the)-392 (Ja)20 (v)25 (a)-392 (T)80 (opics)-392 (Group)-392 (in)-392 (Sun)-392 (Labs.)-392 (He)-391 (obtained)-392 (an)-392 (B.S.)]TJ
+ 0 -1.1667 TD
+ [(de)15 (gree)-257 (from)-257 (MIT)74 (,)-258 (then)-257 (w)10 (ork)10 (ed)-257 (brie\337y)-257 (for)-257 (TR)55 (W)-257 (and)-258 (as)-257 (a)-257 (staf)25 (f)-258 (programmer)-257 (at)-257 (the)-257 (MIT)-257 (Laboratory)]TJ
+ T*
+ [(for)-295 (Computer)-294 (Science.)-295 (Fi)25 (v)15 (e)-294 (years)-295 (of)-294 (ef)25 (fort)-295 (yielded)-294 (a)-295 (Ph.D.)-294 (from)-294 (Carne)15 (gie)-295 (Mellon)-294 (in)-294 (1990.)-295 (Then)]TJ
+ T*
+ [(he)-229 (joined)-230 (the)-229 (Digital)-229 (Equipment)-230 (Corporation\325)55 (s)-229 (Systems)-229 (Research)-230 (Center)40 (,)-229 (w)10 (orking)-229 (on)-230 (garbage)-229 (col-)]TJ
+ T*
+ [(lection and program v)15 (eri\336cation until joining Sun in 1996.)]TJ
+ 0 -1.9167 TD
+ [(Ale)15 (x)-367 (Garthw)10 (aite)-367 (recently)-367 (joined)-367 (Sun)-367 (Microsystems)-368 (Laboratories)-367 (in)-368 (Burlington,)-367 (Massachusetts,)]TJ
+ 0 -1.1667 TD
+ [(where)-227 (he)-227 (w)10 (orks)-227 (with)-227 (the)-226 (Ja)20 (v)25 (a)-227 (T)80 (opics)-227 (Group.)-227 (His)-227 (research)-226 (interests)-227 (include)-227 (programming)-227 (language)]TJ
+ T*
+ [(implementation)-228 (and)-228 (runtime)-229 (system)-229 (design,)-229 (automatic)-228 (memory)-228 (management,)-229 (and)-228 (synchronization)]TJ
+ T*
+ [(techniques.)-290 (Ale)15 (x)-290 (i)0 (s)-290 (also)-291 (a)-290 (graduate)-290 (student)-291 (at)-290 (the)-290 (Uni)25 (v)15 (ersity)-290 (of)-290 (Pennsylv)25 (ania)-290 (w)10 (orking)-291 (with)-290 (Scott)]TJ
+ T*
+ [(Nettles.)-260 (He)-261 (is)-260 (currently)-260 (w)10 (orking)-261 (on)-261 (a)-260 (proposal)-260 (for)-261 (his)-260 (doctoral)-260 (thesis)-260 (which)-260 (in)40 (v)15 (estig)6 (ates)-261 (ho)25 (w)-261 (run-)]TJ
+ T*
+ [(time services in a Ja)20 (v)25 (a)0 ( VM may be safely implemented using the Ja)22 (v)25 (a)0 ( programming language.)]TJ
+ 0 -1.9167 TD
+ [(Ross)-247 (Knippel)-247 (is)-247 (a)-247 (Senior)-247 (Staf)25 (f)-247 (Engineer)-247 (in)-247 (the)-247 (Ja)20 (v)25 (a)-247 (T)69 (echnology)-246 (Group)-247 (of)-247 (Solaris)-247 (Softw)10 (are.)-247 (Pre)25 (vi-)]TJ
+ 0 -1.1667 TD
+ [(ously)65 (,)-284 (h)0 (e)-284 (w)10 (ork)10 (ed)-283 (at)-285 (both)-284 (Cray)-284 (Research)-283 (and)-284 (Cray)-284 (Computer)40 (,)-283 (d)0 (e)25 (v)15 (eloping)-284 (compilers)-284 (for)-284 (the)-284 (XMP)111 (,)]TJ
+ T*
+ [(Cray3, and Cray4. He has a B.S. de)16 (gree in Computer Science from the Uni)26 (v)15 (ersity of Minnesota.)]TJ
+ 0 -1.9167 TD
+ [(Y)129 (.S.)-259 (Ramakrishna)-259 (is)-260 (a)-260 (Staf)25 (f)-259 (Engineer)-260 (with)-259 (the)-260 (Ja)21 (v)25 (a)-260 (T)70 (echnology)-260 (Group)-259 (at)-260 (Sun)-260 (Microsystems.)-259 (Pre-)]TJ
+ 0 -1.1667 TD
+ [(viously)65 (,)-302 (h)0 (e)-301 (w)10 (ork)11 (ed)-302 (at)-301 (TIFR,)-301 (Bombay)65 (,)-302 (and)-302 (at)-301 (SUNY)130 (,)-302 (Ston)15 (y)-302 (Brook,)-302 (on)-301 (the)-302 (use)-301 (of)-301 (temporal)-301 (logics)]TJ
+ T*
+ [(and)-228 (model-checking)-227 (for)-228 (the)-228 (v)15 (eri\336cation)-227 (of)-228 (concurrent)-228 (systems.)-228 (He)-227 (has)-228 (a)-228 (B.T)70 (ech.)-228 (from)-228 (IIT)-228 (Kanpur)40 (,)]TJ
+ T*
+ (and an M.S. and Ph.D. from UC Santa Barbara.)Tj
+ 0 -1.9167 TD
+ [(Derek)-262 (White)-262 (is)-261 (a)-262 (Staf)25 (f)-262 (Engineer)-261 (at)-262 (Sun)-261 (Microsystems)-261 (Laboratories)-262 (in)-262 (Burlington,)-262 (Massachusetts.)]TJ
+ 0 -1.1667 TD
+ [(He)-329 (is)-329 (a)-328 (member)-329 (of)-329 (the)-329 (Ja)21 (v)25 (a)-329 (T)80 (opics)-329 (Group,)-329 (which)-328 (has)-329 (de)25 (v)15 (eloped)-329 (a)-328 (JVM)-329 (as)-329 (an)-329 (infrastructure)-329 (for)]TJ
+ T*
+ [(de)25 (v)15 (eloping)-347 (soft)-347 (real-time)-347 (and)-348 (scalable)-347 (garbage)-347 (collection)-347 (for)-347 (the)-347 (Ja)20 (v)26 (a)-348 (language.)-347 (The)-347 (group)-347 (has)]TJ
+ T*
+ [(also)-229 (studied)-229 (and)-229 (optimized)-230 (JVM)-229 (performance)-228 (as)-229 (a)-229 (whole.)-229 (Other)-230 (interests)-228 (include)-229 (performance)-229 (and)]TJ
+ T*
+ [(heap)-444 (analysis)-444 (tools,)-444 (and)-444 (incremental)-445 (de)26 (v)15 (elopment)-444 (en)40 (vironments.)-444 (Prior)-445 (to)-444 (joining)-444 (Sun,)-444 (Derek)]TJ
+ T*
+ [(w)10 (ork)10 (ed)-301 (for)-301 (eight)-301 (years)-300 (at)-301 (Apple)-301 (Computer)40 (,)-300 (Inc.,)-301 (where)-300 (he)-301 (w)10 (a)0 (s)-301 (responsible)-301 (for)-301 (the)-300 (Object)-301 (P)15 (ascal)]TJ
+ T*
+ [(compiler)-388 (and)-388 (w)10 (ork)10 (ed)-388 (on)-388 (the)-389 (Dylan)-388 (programming)-388 (language)-388 (runtime)-388 (and)-388 (de)25 (v)15 (elopment)-388 (en)40 (viron-)]TJ
+ T*
+ (ment.)Tj
+ ET
+ PDFVars/TermAll get exec end end
+ userdict /pgsave get restore
+ showpage
+ %%PageTrailer
+ %%EndPage
+ %%Trailer
+ %%EOF
|