%!PS-Adobe-3.0 %%BoundingBox: (atend) %%Pages: (atend) %%PageOrder: (atend) %%DocumentFonts: (atend) %%Creator: Frame 4.0 %%DocumentData: Clean7Bit %%EndComments %%BeginProlog % % Frame ps_prolog 5.0, for use with Frame 5.0 products % This ps_prolog file is Copyright (c) 1986-1995 Frame Technology % Corporation. All rights reserved. This ps_prolog file may be % freely copied and distributed in conjunction with documents created % using FrameMaker, FrameMaker/SGML and FrameViewer as long as this % copyright notice is preserved. % % FrameMaker users specify the proper paper size for each print job in the % "Print" dialog's "Printer Paper Size" "Width" and "Height~ fields. If the % printer that the PS file is sent to does not support the requested paper % size, or if there is no paper tray of the proper size currently installed, % then the job will not be printed. The following flag, if set to true, will % cause the job to print on the default paper in such cases. /FMAllowPaperSizeMismatch false def % % Frame products normally print colors as their true color on a color printer % or as shades of gray, based on luminance, on a black-and white printer. The % following flag, if set to true, forces all non-white colors to print as pure % black. This has no effect on bitmap images. /FMPrintAllColorsAsBlack false def % % Frame products can either set their own line screens or use a printer's % default settings. Three flags below control this separately for no % separations, spot separations and process separations. If a flag % is true, then the default printer settings will not be changed. If it is % false, Frame products will use their own settings from a table based on % the printer's resolution. /FMUseDefaultNoSeparationScreen true def /FMUseDefaultSpotSeparationScreen true def /FMUseDefaultProcessSeparationScreen false def % % For any given PostScript printer resolution, Frame products have two sets of % screen angles and frequencies for printing process separations, which are % recomended by Adobe. The following variable chooses the higher frequencies % when set to true or the lower frequencies when set to false. This is only % effective if the appropriate FMUseDefault...SeparationScreen flag is false. /FMUseHighFrequencyScreens true def % % The following is a set of predefined optimal frequencies and angles for various % common dpi settings. This is taken from "Advances in Color Separation Using % PostScript Software Technology," from Adobe Systems (3/13/89 P.N. LPS 0043) % and corrolated with information which is in various PPD (4.0) files. % % The "dpiranges" figure is the minimum dots per inch device resolution which % can support this setting. The "low" and "high" values are controlled by the % setting of the FMUseHighFrequencyScreens flag above. The "TDot" flags control % the use of the "Yellow Triple Dot" feature whereby the frequency id divided by % three, but the dot function is "trippled" giving a block of 3x3 dots per cell. % % PatFreq is a compromise pattern frequency for ps Level 2 printers which is close % to the ideal WYSIWYG pattern frequency of 9 repetitions/inch but does not beat % (too badly) against the screen frequencies of any separations for that DPI. /dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def /CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def /YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def /KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def /CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def /MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def /YLowTDot [ true true false true true false false false ] def /CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def /YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def /KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def /CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def /MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def /YHighTDot [ false false true false false true true false ] def /PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def % % PostScript Level 2 printers contain an "Accurate Screens" feature which can % improve process separation rendering at the expense of compute time. This % flag is ignored by PostScript Level 1 printers. /FMUseAcccurateScreens true def % % The following PostScript procedure defines the spot function that Frame % products will use for process separations. You may un-comment-out one of % the alternative functions below, or use your own. % % Dot function /FMSpotFunction {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub } {dup mul exch dup mul add 1 exch sub }ifelse } def % % Line function % /FMSpotFunction { pop } def % % Elipse function % /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add % sqrt 1 exch sub } def % % /FMversion (5.0) def /fMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def /FMPColor fMLevel1 { false /colorimage where {pop pop true} if } { true } ifelse def /FrameDict 400 dict def systemdict /errordict known not {/errordict 10 dict def errordict /rangecheck {stop} put} if % The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk FrameDict /tmprangecheck errordict /rangecheck get put errordict /rangecheck {FrameDict /bug true put} put FrameDict /bug false put mark % Some PS machines read past the CR, so keep the following 3 lines together! currentfile 5 string readline 00 0000000000 cleartomark errordict /rangecheck FrameDict /tmprangecheck get put FrameDict /bug get { /readline { /gstring exch def /gfile exch def /gindex 0 def { gfile read pop dup 10 eq {exit} if dup 13 eq {exit} if gstring exch gindex exch put /gindex gindex 1 add def } loop pop gstring 0 gindex getinterval true } bind def } if /FMshowpage /showpage load def /FMquit /quit load def /FMFAILURE { dup = flush FMshowpage /Helvetica findfont 12 scalefont setfont 72 200 moveto show 72 220 moveto show FMshowpage FMquit } def /FMVERSION { FMversion ne { (Frame product version does not match ps_prolog! Check installation;) (also check ~/fminit and ./fminit for old versions) FMFAILURE } if } def /FMBADEPSF { (Adobe's PostScript Language Reference Manual, 2nd Edition, section H.2.4) (says your EPS file is not valid, as it calls X ) dup dup (X) search pop exch pop exch pop length 5 -1 roll putinterval FMFAILURE } def /fmConcatProcs { /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx }def FrameDict begin [ /ALDsave /FMdicttop /FMoptop /FMpointsize /FMsaveobject /b /bitmapsave /blut /bpside /bs /bstring /bwidth /c /cf /cs /cynu /depth /edown /fh /fillvals /fw /fx /fy /g /gfile /gindex /grnt /gryt /gstring /height /hh /i /im /indx /is /k /kk /landscape /lb /len /llx /lly /m /magu /manualfeed /n /offbits /onbits /organgle /orgbangle /orgbfreq /orgbproc /orgbxfer /orgfreq /orggangle /orggfreq /orggproc /orggxfer /orgmatrix /orgproc /orgrangle /orgrfreq /orgrproc /orgrxfer /orgxfer /pagesave /paperheight /papersizedict /paperwidth /pos /pwid /r /rad /redt /sl /str /tran /u /urx /ury /val /width /width /ws /ww /x /x1 /x2 /xindex /xpoint /xscale /xx /y /y1 /y2 /yelu /yindex /ypoint /yscale /yy ] { 0 def } forall /FmBD {bind def} bind def systemdict /pdfmark known { /fMAcrobat true def /FmPD /pdfmark load def /FmPT /show load def currentdistillerparams /CoreDistVersion get 2000 ge { /FmPD2 /pdfmark load def /FmPA { mark exch /Dest exch 5 3 roll /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD }FmBD } { /FmPD2 /cleartomark load def /FmPA {pop pop pop}FmBD } ifelse } { /fMAcrobat false def /FmPD /cleartomark load def /FmPD2 /cleartomark load def /FmPT /pop load def /FmPA {pop pop pop}FmBD } ifelse /FmDC { transform fMDefaultMatrix itransform cvi exch cvi exch }FmBD /FmBx { dup 3 index lt {3 1 roll exch} if 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if }FmBD /FMnone 0 def /FMcyan 1 def /FMmagenta 2 def /FMyellow 3 def /FMblack 4 def /FMcustom 5 def /fMNegative false def /FrameSepIs FMnone def /FrameSepBlack 0 def /FrameSepYellow 0 def /FrameSepMagenta 0 def /FrameSepCyan 0 def /FrameSepRed 1 def /FrameSepGreen 1 def /FrameSepBlue 1 def /FrameCurGray 1 def /FrameCurPat null def /FrameCurColors [ 0 0 0 1 0 0 0 ] def /FrameColorEpsilon .001 def /eqepsilon { sub dup 0 lt {neg} if FrameColorEpsilon le } bind def /FrameCmpColorsCMYK { 2 copy 0 get exch 0 get eqepsilon { 2 copy 1 get exch 1 get eqepsilon { 2 copy 2 get exch 2 get eqepsilon { 3 get exch 3 get eqepsilon } {pop pop false} ifelse }{pop pop false} ifelse } {pop pop false} ifelse } bind def /FrameCmpColorsRGB { 2 copy 4 get exch 0 get eqepsilon { 2 copy 5 get exch 1 get eqepsilon { 6 get exch 2 get eqepsilon }{pop pop false} ifelse } {pop pop false} ifelse } bind def /RGBtoCMYK { 1 exch sub 3 1 roll 1 exch sub 3 1 roll 1 exch sub 3 1 roll 3 copy 2 copy le { pop } { exch pop } ifelse 2 copy le { pop } { exch pop } ifelse dup dup dup 6 1 roll 4 1 roll 7 1 roll sub 6 1 roll sub 5 1 roll sub 4 1 roll } bind def /CMYKtoRGB { dup dup 4 -1 roll add 5 1 roll 3 -1 roll add 4 1 roll add 1 exch sub dup 0 lt {pop 0} if 3 1 roll 1 exch sub dup 0 lt {pop 0} if exch 1 exch sub dup 0 lt {pop 0} if exch } bind def /FrameSepInit { 1.0 RealSetgray } bind def /FrameSetSepColor { /FrameSepBlue exch def /FrameSepGreen exch def /FrameSepRed exch def /FrameSepBlack exch def /FrameSepYellow exch def /FrameSepMagenta exch def /FrameSepCyan exch def /FrameSepIs FMcustom def setCurrentScreen } bind def /FrameSetCyan { /FrameSepBlue 1.0 def /FrameSepGreen 1.0 def /FrameSepRed 0.0 def /FrameSepBlack 0.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 1.0 def /FrameSepIs FMcyan def setCurrentScreen } bind def /FrameSetMagenta { /FrameSepBlue 1.0 def /FrameSepGreen 0.0 def /FrameSepRed 1.0 def /FrameSepBlack 0.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 1.0 def /FrameSepCyan 0.0 def /FrameSepIs FMmagenta def setCurrentScreen } bind def /FrameSetYellow { /FrameSepBlue 0.0 def /FrameSepGreen 1.0 def /FrameSepRed 1.0 def /FrameSepBlack 0.0 def /FrameSepYellow 1.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 0.0 def /FrameSepIs FMyellow def setCurrentScreen } bind def /FrameSetBlack { /FrameSepBlue 0.0 def /FrameSepGreen 0.0 def /FrameSepRed 0.0 def /FrameSepBlack 1.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 0.0 def /FrameSepIs FMblack def setCurrentScreen } bind def /FrameNoSep { /FrameSepIs FMnone def setCurrentScreen } bind def /FrameSetSepColors { FrameDict begin [ exch 1 add 1 roll ] /FrameSepColors exch def end } bind def /FrameColorInSepListCMYK { FrameSepColors { exch dup 3 -1 roll FrameCmpColorsCMYK { pop true exit } if } forall dup true ne {pop false} if } bind def /FrameColorInSepListRGB { FrameSepColors { exch dup 3 -1 roll FrameCmpColorsRGB { pop true exit } if } forall dup true ne {pop false} if } bind def /RealSetgray /setgray load def /RealSetrgbcolor /setrgbcolor load def /RealSethsbcolor /sethsbcolor load def end /setgray { FrameDict begin FrameSepIs FMnone eq { RealSetgray } { FrameSepIs FMblack eq { RealSetgray } { FrameSepIs FMcustom eq FrameSepRed 0 eq and FrameSepGreen 0 eq and FrameSepBlue 0 eq and { RealSetgray } { 1 RealSetgray pop } ifelse } ifelse } ifelse end } bind def /setrgbcolor { FrameDict begin FrameSepIs FMnone eq { RealSetrgbcolor } { 3 copy [ 4 1 roll ] FrameColorInSepListRGB { FrameSepBlue eq exch FrameSepGreen eq and exch FrameSepRed eq and { 0 } { 1 } ifelse } { FMPColor { RealSetrgbcolor currentcmykcolor } { RGBtoCMYK } ifelse FrameSepIs FMblack eq {1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse RealSetgray } ifelse end } bind def /sethsbcolor { FrameDict begin FrameSepIs FMnone eq { RealSethsbcolor } { RealSethsbcolor currentrgbcolor setrgbcolor } ifelse end } bind def FrameDict begin /setcmykcolor where { pop /RealSetcmykcolor /setcmykcolor load def } { /RealSetcmykcolor { 4 1 roll 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat RealSetrgbcolor pop } bind def } ifelse userdict /setcmykcolor { FrameDict begin FrameSepIs FMnone eq { RealSetcmykcolor } { 4 copy [ 5 1 roll ] FrameColorInSepListCMYK { FrameSepBlack eq exch FrameSepYellow eq and exch FrameSepMagenta eq and exch FrameSepCyan eq and { 0 } { 1 } ifelse } { FrameSepIs FMblack eq {1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse RealSetgray } ifelse end } bind put fMLevel1 { /patScreenDict 7 dict dup begin <0f1e3c78f0e1c387> [ 45 { pop } {exch pop} .5 2 sqrt] FmBD <0f87c3e1f0783c1e> [ 135 { pop } {exch pop} .5 2 sqrt] FmBD [ 0 { pop } dup .5 2 ] FmBD [ 90 { pop } dup .5 2 ] FmBD <8142241818244281> [ 45 { 2 copy lt {exch} if pop} dup .75 2 sqrt] FmBD <03060c183060c081> [ 45 { pop } {exch pop} .875 2 sqrt] FmBD <8040201008040201> [ 135 { pop } {exch pop} .875 2 sqrt] FmBD end def } { /patProcDict 5 dict dup begin <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke 4 -4 moveto 12 4 lineto stroke -4 4 moveto 4 12 lineto stroke} bind def <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke -4 4 moveto 4 -4 lineto stroke 4 12 moveto 12 4 lineto stroke} bind def <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke -1 -1 moveto 9 9 lineto stroke } bind def <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke 4 -4 moveto 12 4 lineto stroke -4 4 moveto 4 12 lineto stroke} bind def <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke -4 4 moveto 4 -4 lineto stroke 4 12 moveto 12 4 lineto stroke} bind def end def /patDict 15 dict dup begin /PatternType 1 def /PaintType 2 def /TilingType 3 def /BBox [ 0 0 8 8 ] def /XStep 8 def /YStep 8 def /PaintProc { begin patProcDict bstring known { patProcDict bstring get exec } { 8 8 true [1 0 0 -1 0 8] bstring imagemask } ifelse end } bind def end def } ifelse /combineColor { FrameSepIs FMnone eq { graymode fMLevel1 or not { [/Pattern [/DeviceCMYK]] setcolorspace FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor } { FrameCurColors 3 get 1.0 ge { FrameCurGray RealSetgray } { fMAcrobat not FMPColor graymode and and { 0 1 3 { FrameCurColors exch get 1 FrameCurGray sub mul } for RealSetcmykcolor } { 4 1 6 { FrameCurColors exch get graymode { 1 exch sub 1 FrameCurGray sub mul 1 exch sub } { 1.0 lt {FrameCurGray} {1} ifelse } ifelse } for RealSetrgbcolor } ifelse } ifelse } ifelse } { FrameCurColors 0 4 getinterval aload FrameColorInSepListCMYK { FrameSepBlack eq exch FrameSepYellow eq and exch FrameSepMagenta eq and exch FrameSepCyan eq and FrameSepIs FMcustom eq and { FrameCurGray } { 1 } ifelse } { FrameSepIs FMblack eq {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse graymode fMLevel1 or not { [/Pattern [/DeviceGray]] setcolorspace FrameCurPat setcolor } { graymode not fMLevel1 and { dup 1 lt {pop FrameCurGray} if } if RealSetgray } ifelse } ifelse } bind def /savematrix { orgmatrix currentmatrix pop } bind def /restorematrix { orgmatrix setmatrix } bind def /fMDefaultMatrix matrix defaultmatrix def /fMatrix2 matrix def /dpi 72 0 fMDefaultMatrix dtransform dup mul exch dup mul add sqrt def /freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def /sangle 1 0 fMDefaultMatrix dtransform exch atan def sangle fMatrix2 rotate fMDefaultMatrix fMatrix2 concatmatrix dup 0 get /sflipx exch def 3 get /sflipy exch def /screenIndex { 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for } bind def /getCyanScreen { FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load } bind def /getMagentaScreen { FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load } bind def /getYellowScreen { FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse screenIndex dup 3 1 roll get 3 1 roll get { 3 div {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat FMSpotFunction } } {/FMSpotFunction load } ifelse 0.0 exch } bind def /getBlackScreen { FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse screenIndex get 45.0 /FMSpotFunction load } bind def /getSpotScreen { getBlackScreen } bind def /getCompositeScreen { getBlackScreen } bind def /FMSetScreen fMLevel1 { /setscreen load }{ { 8 dict begin /HalftoneType 1 def /SpotFunction exch def /Angle exch def /Frequency exch def /AccurateScreens FMUseAcccurateScreens def currentdict end sethalftone } bind } ifelse def /setDefaultScreen { FMPColor { orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer } { orgxfer cvx settransfer } ifelse orgfreq organgle orgproc cvx setscreen } bind def /setCurrentScreen { FrameSepIs FMnone eq { FMUseDefaultNoSeparationScreen { setDefaultScreen } { getCompositeScreen FMSetScreen } ifelse } { FrameSepIs FMcustom eq { FMUseDefaultSpotSeparationScreen { setDefaultScreen } { getSpotScreen FMSetScreen } ifelse } { FMUseDefaultProcessSeparationScreen { setDefaultScreen } { FrameSepIs FMcyan eq { getCyanScreen FMSetScreen } { FrameSepIs FMmagenta eq { getMagentaScreen FMSetScreen } { FrameSepIs FMyellow eq { getYellowScreen FMSetScreen } { getBlackScreen FMSetScreen } ifelse } ifelse } ifelse } ifelse } ifelse } ifelse } bind def end /FMDOCUMENT { array /FMfonts exch def /#copies exch def FrameDict begin 0 ne /manualfeed exch def /paperheight exch def /paperwidth exch def 0 ne /fMNegative exch def 0 ne /edown exch def /yscale exch def /xscale exch def fMLevel1 { manualfeed {setmanualfeed} if /FMdicttop countdictstack 1 add def /FMoptop count def setpapername manualfeed {true} {papersize} ifelse {manualpapersize} {false} ifelse {desperatepapersize} {false} ifelse {papersizefailure} if count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for } {2 dict dup /PageSize [paperwidth paperheight] put manualfeed {dup /ManualFeed manualfeed put} if {setpagedevice} stopped {papersizefailure} if } ifelse FMPColor { currentcolorscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def cvlit /orgbproc exch def /orgbangle exch def /orgbfreq exch def cvlit /orggproc exch def /orggangle exch def /orggfreq exch def cvlit /orgrproc exch def /orgrangle exch def /orgrfreq exch def currentcolortransfer fMNegative { 1 1 4 { pop { 1 exch sub } fmConcatProcs 4 1 roll } for 4 copy setcolortransfer } if cvlit /orgxfer exch def cvlit /orgbxfer exch def cvlit /orggxfer exch def cvlit /orgrxfer exch def } { currentscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def currenttransfer fMNegative { { 1 exch sub } fmConcatProcs dup settransfer } if cvlit /orgxfer exch def } ifelse end } def /FMBEGINPAGE { FrameDict begin /pagesave save def 3.86 setmiterlimit /landscape exch 0 ne def landscape { 90 rotate 0 exch dup /pwid exch def neg translate pop }{ pop /pwid exch def } ifelse edown { [-1 0 0 1 pwid 0] concat } if 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto 0 paperheight lineto 0 0 lineto 1 setgray fill xscale yscale scale /orgmatrix matrix def gsave } def /FMENDPAGE { grestore pagesave restore end showpage } def /FMFONTDEFINE { FrameDict begin findfont ReEncode 1 index exch definefont FMfonts 3 1 roll put end } def /FMFILLS { FrameDict begin dup array /fillvals exch def dict /patCache exch def end } def /FMFILL { FrameDict begin fillvals 3 1 roll put end } def /FMNORMALIZEGRAPHICS { newpath 1 setlinewidth 0 setlinecap 0 0 0 sethsbcolor 0 setgray } bind def /FMBEGINEPSF { end /FMEPSF save def /showpage {} def % See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. % "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) /banddevice {(banddevice) FMBADEPSF} def /clear {(clear) FMBADEPSF} def /cleardictstack {(cleardictstack) FMBADEPSF} def /copypage {(copypage) FMBADEPSF} def /erasepage {(erasepage) FMBADEPSF} def /exitserver {(exitserver) FMBADEPSF} def /framedevice {(framedevice) FMBADEPSF} def /grestoreall {(grestoreall) FMBADEPSF} def /initclip {(initclip) FMBADEPSF} def /initgraphics {(initgraphics) FMBADEPSF} def /quit {(quit) FMBADEPSF} def /renderbands {(renderbands) FMBADEPSF} def /setglobal {(setglobal) FMBADEPSF} def /setpagedevice {(setpagedevice) FMBADEPSF} def /setshared {(setshared) FMBADEPSF} def /startjob {(startjob) FMBADEPSF} def /lettertray {(lettertray) FMBADEPSF} def /letter {(letter) FMBADEPSF} def /lettersmall {(lettersmall) FMBADEPSF} def /11x17tray {(11x17tray) FMBADEPSF} def /11x17 {(11x17) FMBADEPSF} def /ledgertray {(ledgertray) FMBADEPSF} def /ledger {(ledger) FMBADEPSF} def /legaltray {(legaltray) FMBADEPSF} def /legal {(legal) FMBADEPSF} def /statementtray {(statementtray) FMBADEPSF} def /statement {(statement) FMBADEPSF} def /executivetray {(executivetray) FMBADEPSF} def /executive {(executive) FMBADEPSF} def /a3tray {(a3tray) FMBADEPSF} def /a3 {(a3) FMBADEPSF} def /a4tray {(a4tray) FMBADEPSF} def /a4 {(a4) FMBADEPSF} def /a4small {(a4small) FMBADEPSF} def /b4tray {(b4tray) FMBADEPSF} def /b4 {(b4) FMBADEPSF} def /b5tray {(b5tray) FMBADEPSF} def /b5 {(b5) FMBADEPSF} def FMNORMALIZEGRAPHICS [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall fx fw 2 div add fy fh 2 div add translate rotate fw 2 div neg fh 2 div neg translate fw urx llx sub div fh ury lly sub div scale llx neg lly neg translate /FMdicttop countdictstack 1 add def /FMoptop count def } bind def /FMENDEPSF { count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for FMEPSF restore FrameDict begin } bind def FrameDict begin /setmanualfeed { %%BeginFeature *ManualFeed True statusdict /manualfeed true put %%EndFeature } bind def /max {2 copy lt {exch} if pop} bind def /min {2 copy gt {exch} if pop} bind def /inch {72 mul} def /pagedimen { paperheight sub abs 16 lt exch paperwidth sub abs 16 lt and {/papername exch def} {pop} ifelse } bind def /setpapername { /papersizedict 14 dict def papersizedict begin /papername /unknown def /Letter 8.5 inch 11.0 inch pagedimen /LetterSmall 7.68 inch 10.16 inch pagedimen /Tabloid 11.0 inch 17.0 inch pagedimen /Ledger 17.0 inch 11.0 inch pagedimen /Legal 8.5 inch 14.0 inch pagedimen /Statement 5.5 inch 8.5 inch pagedimen /Executive 7.5 inch 10.0 inch pagedimen /A3 11.69 inch 16.5 inch pagedimen /A4 8.26 inch 11.69 inch pagedimen /A4Small 7.47 inch 10.85 inch pagedimen /B4 10.125 inch 14.33 inch pagedimen /B5 7.16 inch 10.125 inch pagedimen end } bind def /papersize { papersizedict begin /Letter {lettertray letter} def /LetterSmall {lettertray lettersmall} def /Tabloid {11x17tray 11x17} def /Ledger {ledgertray ledger} def /Legal {legaltray legal} def /Statement {statementtray statement} def /Executive {executivetray executive} def /A3 {a3tray a3} def /A4 {a4tray a4} def /A4Small {a4tray a4small} def /B4 {b4tray b4} def /B5 {b5tray b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end statusdict begin stopped end } bind def /manualpapersize { papersizedict begin /Letter {letter} def /LetterSmall {lettersmall} def /Tabloid {11x17} def /Ledger {ledger} def /Legal {legal} def /Statement {statement} def /Executive {executive} def /A3 {a3} def /A4 {a4} def /A4Small {a4small} def /B4 {b4} def /B5 {b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end stopped } bind def /desperatepapersize { statusdict /setpageparams known { paperwidth paperheight 0 1 statusdict begin {setpageparams} stopped end } {true} ifelse } bind def /papersizefailure { FMAllowPaperSizeMismatch not { (The requested paper size is not available in any currently-installed tray) (Edit the PS file to "FMAllowPaperSizeMismatch true" to use default tray) FMFAILURE } if } def /DiacriticEncoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.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 ] def /ReEncode { dup length dict begin { 1 index /FID ne {def} {pop pop} ifelse } forall 0 eq {/Encoding DiacriticEncoding def} if currentdict end } bind def FMPColor { /BEGINBITMAPCOLOR { BITMAPCOLOR} def /BEGINBITMAPCOLORc { BITMAPCOLORc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUECOLOR } def /BEGINBITMAPTRUECOLORc { BITMAPTRUECOLORc } def /BEGINBITMAPCMYK { BITMAPCMYK } def /BEGINBITMAPCMYKc { BITMAPCMYKc } def } { /BEGINBITMAPCOLOR { BITMAPGRAY} def /BEGINBITMAPCOLORc { BITMAPGRAYc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUEGRAY } def /BEGINBITMAPTRUECOLORc { BITMAPTRUEGRAYc } def /BEGINBITMAPCMYK { BITMAPCMYKGRAY } def /BEGINBITMAPCMYKc { BITMAPCMYKGRAYc } def } ifelse /K { FMPrintAllColorsAsBlack { dup 1 eq 2 index 1 eq and 3 index 1 eq and not {7 {pop} repeat 0 0 0 1 0 0 0} if } if FrameCurColors astore pop combineColor } bind def /graymode true def fMLevel1 { /fmGetFlip { fMatrix2 exch get mul 0 lt { -1 } { 1 } ifelse } FmBD } if /setPatternMode { fMLevel1 { 2 index patScreenDict exch known { pop pop patScreenDict exch get aload pop freq mul 5 2 roll fMatrix2 currentmatrix 1 get 0 ne { 3 -1 roll 90 add 3 1 roll sflipx 1 fmGetFlip sflipy 2 fmGetFlip neg mul } { sflipx 0 fmGetFlip sflipy 3 fmGetFlip mul } ifelse 0 lt {exch pop} {pop} ifelse fMNegative { {neg} fmConcatProcs } if bind systemdict /setscreen get exec /FrameCurGray exch def } { /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def freq sangle landscape {90 add} if {/ypoint exch def /xpoint exch def /xindex xpoint 1 add 2 div bpside mul cvi def /yindex ypoint 1 add 2 div bpside mul cvi def bstring yindex bwidth mul xindex 8 idiv add get 1 7 xindex 8 mod sub bitshift and 0 ne fMNegative {not} if {/onbits onbits 1 add def 1} {/offbits offbits 1 add def 0} ifelse } setscreen offbits offbits onbits add div fMNegative {1.0 exch sub} if /FrameCurGray exch def } ifelse } { pop pop dup patCache exch known { patCache exch get } { dup patDict /bstring 3 -1 roll put patDict 9 PatFreq screenIndex get div dup matrix scale makepattern dup patCache 4 -1 roll 3 -1 roll put } ifelse /FrameCurGray 0 def /FrameCurPat exch def } ifelse /graymode false def combineColor } bind def /setGrayScaleMode { graymode not { /graymode true def fMLevel1 { setCurrentScreen } if } if /FrameCurGray exch def combineColor } bind def /normalize { transform round exch round exch itransform } bind def /dnormalize { dtransform round exch round exch idtransform } bind def /lnormalize { 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop } bind def /H { lnormalize setlinewidth } bind def /Z { setlinecap } bind def /PFill { graymode fMLevel1 or not { gsave 1 setgray eofill grestore } if } bind def /PStroke { graymode fMLevel1 or not { gsave 1 setgray stroke grestore } if stroke } bind def /X { fillvals exch get dup type /stringtype eq {8 1 setPatternMode} {setGrayScaleMode} ifelse } bind def /V { PFill gsave eofill grestore } bind def /Vclip { clip } bind def /Vstrk { currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /N { PStroke } bind def /Nclip { strokepath clip newpath } bind def /Nstrk { currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /M {newpath moveto} bind def /E {lineto} bind def /D {curveto} bind def /O {closepath} bind def /L { /n exch def newpath normalize moveto 2 1 n {pop normalize lineto} for } bind def /Y { L closepath } bind def /R { /y2 exch def /x2 exch def /y1 exch def /x1 exch def x1 y1 x2 y1 x2 y2 x1 y2 4 Y } bind def /rarc {rad arcto } bind def /RR { /rad exch def normalize /y2 exch def /x2 exch def normalize /y1 exch def /x1 exch def mark newpath { x1 y1 rad add moveto x1 y2 x2 y2 rarc x2 y2 x2 y1 rarc x2 y1 x1 y1 rarc x1 y1 x1 y2 rarc closepath } stopped {x1 y1 x2 y2 R} if cleartomark } bind def /RRR { /rad exch def normalize /y4 exch def /x4 exch def normalize /y3 exch def /x3 exch def normalize /y2 exch def /x2 exch def normalize /y1 exch def /x1 exch def newpath normalize moveto mark { x2 y2 x3 y3 rarc x3 y3 x4 y4 rarc x4 y4 x1 y1 rarc x1 y1 x2 y2 rarc closepath } stopped {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if cleartomark } bind def /C { grestore gsave R clip setCurrentScreen } bind def /CP { grestore gsave Y clip setCurrentScreen } bind def /F { FMfonts exch get FMpointsize scalefont setfont } bind def /Q { /FMpointsize exch def F } bind def /T { moveto show } bind def /RF { rotate 0 ne {-1 1 scale} if } bind def /TF { gsave moveto RF show grestore } bind def /P { moveto 0 32 3 2 roll widthshow } bind def /PF { gsave moveto RF 0 32 3 2 roll widthshow grestore } bind def /S { moveto 0 exch ashow } bind def /SF { gsave moveto RF 0 exch ashow grestore } bind def /B { moveto 0 32 4 2 roll 0 exch awidthshow } bind def /BF { gsave moveto RF 0 32 4 2 roll 0 exch awidthshow grestore } bind def /G { gsave newpath normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath PFill fill grestore } bind def /Gstrk { savematrix newpath 2 index 2 div add exch 3 index 2 div sub exch normalize 2 index 2 div sub exch 3 index 2 div add exch translate scale 0.0 0.0 1.0 5 3 roll arc restorematrix currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /Gclip { newpath savematrix normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath clip newpath restorematrix } bind def /GG { gsave newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath PFill fill grestore } bind def /GGclip { savematrix newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath clip newpath restorematrix } bind def /GGstrk { savematrix newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath restorematrix currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /A { gsave savematrix newpath 2 index 2 div add exch 3 index 2 div sub exch normalize 2 index 2 div sub exch 3 index 2 div add exch translate scale 0.0 0.0 1.0 5 3 roll arc restorematrix PStroke grestore } bind def /Aclip { newpath savematrix normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath strokepath clip newpath restorematrix } bind def /Astrk { Gstrk } bind def /AA { gsave savematrix newpath 3 index 2 div add exch 4 index 2 div sub exch normalize 3 index 2 div sub exch 4 index 2 div add exch translate rotate scale 0.0 0.0 1.0 5 3 roll arc restorematrix PStroke grestore } bind def /AAclip { savematrix newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath strokepath clip newpath restorematrix } bind def /AAstrk { GGstrk } bind def /BEGINPRINTCODE { /FMdicttop countdictstack 1 add def /FMoptop count 7 sub def /FMsaveobject save def userdict begin /showpage {} def FMNORMALIZEGRAPHICS 3 index neg 3 index neg translate } bind def /ENDPRINTCODE { count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for FMsaveobject restore } bind def /gn { 0 { 46 mul cf read pop 32 sub dup 46 lt {exit} if 46 sub add } loop add } bind def /cfs { /str sl string def 0 1 sl 1 sub {str exch val put} for str def } bind def /ic [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} ] def /ms { /sl exch def /val 255 def /ws cfs /im cfs /val 0 def /bs cfs /cs cfs } bind def 400 ms /ip { is 0 cf cs readline pop { ic exch get exec add } forall pop } bind def /rip { bis ris copy pop is 0 cf cs readline pop { ic exch get exec add } forall pop pop ris gis copy pop dup is exch cf cs readline pop { ic exch get exec add } forall pop pop gis bis copy pop dup add is exch cf cs readline pop { ic exch get exec add } forall pop } bind def /rip4 { kis cis copy pop is 0 cf cs readline pop { ic exch get exec add } forall pop pop cis mis copy pop dup is exch cf cs readline pop { ic exch get exec add } forall pop pop mis yis copy pop dup dup add is exch cf cs readline pop { ic exch get exec add } forall pop pop yis kis copy pop 3 mul is exch cf cs readline pop { ic exch get exec add } forall pop } bind def /wh { /len exch def /pos exch def ws 0 len getinterval im pos len getinterval copy pop pos len } bind def /bl { /len exch def /pos exch def bs 0 len getinterval im pos len getinterval copy pop pos len } bind def /s1 1 string def /fl { /len exch def /pos exch def /val cf s1 readhexstring pop 0 get def pos 1 pos len add 1 sub {im exch val put} for pos len } bind def /hx { 3 copy getinterval cf exch readhexstring pop pop } bind def /wbytes { dup dup 8 gt { pop 8 idiv mul } { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse } bind def /BEGINBITMAPBWc { 1 {} COMMONBITMAPc } bind def /BEGINBITMAPGRAYc { 8 {} COMMONBITMAPc } bind def /BEGINBITMAP2BITc { 2 {} COMMONBITMAPc } bind def /COMMONBITMAPc { /cvtProc exch def /depth exch def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def cvtProc /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height depth [width 0 0 height neg 0 height] {ip} image bitmapsave restore grestore } bind def /BEGINBITMAPBW { 1 {} COMMONBITMAP } bind def /BEGINBITMAPGRAY { 8 {} COMMONBITMAP } bind def /BEGINBITMAP2BIT { 2 {} COMMONBITMAP } bind def /COMMONBITMAP { /cvtProc exch def /depth exch def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def cvtProc /is width depth wbytes string def /cf currentfile def width height depth [width 0 0 height neg 0 height] {cf is readhexstring pop} image bitmapsave restore grestore } bind def /ngrayt 256 array def /nredt 256 array def /nbluet 256 array def /ngreent 256 array def fMLevel1 { /colorsetup { currentcolortransfer /gryt exch def /blut exch def /grnt exch def /redt exch def 0 1 255 { /indx exch def /cynu 1 red indx get 255 div sub def /magu 1 green indx get 255 div sub def /yelu 1 blue indx get 255 div sub def /kk cynu magu min yelu min def /u kk currentundercolorremoval exec def % /u 0 def nredt indx 1 0 cynu u sub max sub redt exec put ngreent indx 1 0 magu u sub max sub grnt exec put nbluet indx 1 0 yelu u sub max sub blut exec put ngrayt indx 1 kk currentblackgeneration exec sub gryt exec put } for {255 mul cvi nredt exch get} {255 mul cvi ngreent exch get} {255 mul cvi nbluet exch get} {255 mul cvi ngrayt exch get} setcolortransfer {pop 0} setundercolorremoval {} setblackgeneration } bind def } { /colorSetup2 { [ /Indexed /DeviceRGB 255 {dup red exch get 255 div exch dup green exch get 255 div exch blue exch get 255 div} ] setcolorspace } bind def } ifelse /fakecolorsetup { /tran 256 string def 0 1 255 {/indx exch def tran indx red indx get 77 mul green indx get 151 mul blue indx get 28 mul add add 256 idiv put} for currenttransfer {255 mul cvi tran exch get 255.0 div} exch fmConcatProcs settransfer } bind def /BITMAPCOLOR { /depth 8 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def fMLevel1 { colorsetup /is width depth wbytes string def /cf currentfile def width height depth [width 0 0 height neg 0 height] {cf is readhexstring pop} {is} {is} true 3 colorimage } { colorSetup2 /is width depth wbytes string def /cf currentfile def 7 dict dup begin /ImageType 1 def /Width width def /Height height def /ImageMatrix [width 0 0 height neg 0 height] def /DataSource {cf is readhexstring pop} bind def /BitsPerComponent depth def /Decode [0 255] def end image } ifelse bitmapsave restore grestore } bind def /BITMAPCOLORc { /depth 8 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def fMLevel1 { colorsetup /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height depth [width 0 0 height neg 0 height] {ip} {is} {is} true 3 colorimage } { colorSetup2 /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def 7 dict dup begin /ImageType 1 def /Width width def /Height height def /ImageMatrix [width 0 0 height neg 0 height] def /DataSource {ip} bind def /BitsPerComponent depth def /Decode [0 255] def end image } ifelse bitmapsave restore grestore } bind def /BITMAPTRUECOLORc { /depth 24 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /ris im 0 width getinterval def /gis im width width getinterval def /bis im width 2 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop ris} {gis} {bis} true 3 colorimage bitmapsave restore grestore } bind def /BITMAPCMYKc { /depth 32 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /cis im 0 width getinterval def /mis im width width getinterval def /yis im width 2 mul width getinterval def /kis im width 3 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip4 pop cis} {mis} {yis} {kis} true 4 colorimage bitmapsave restore grestore } bind def /BITMAPTRUECOLOR { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /gis width string def /bis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop } { cf gis readhexstring pop } { cf bis readhexstring pop } true 3 colorimage bitmapsave restore grestore } bind def /BITMAPCMYK { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /mis width string def /yis width string def /kis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop } { cf mis readhexstring pop } { cf yis readhexstring pop } { cf kis readhexstring pop } true 4 colorimage bitmapsave restore grestore } bind def /BITMAPTRUEGRAYc { /depth 24 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /ris im 0 width getinterval def /gis im width width getinterval def /bis im width 2 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop ris gis bis width gray} image bitmapsave restore grestore } bind def /BITMAPCMYKGRAYc { /depth 32 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /cis im 0 width getinterval def /mis im width width getinterval def /yis im width 2 mul width getinterval def /kis im width 3 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop cis mis yis kis width cgray} image bitmapsave restore grestore } bind def /cgray { /ww exch def /k exch def /y exch def /m exch def /c exch def 0 1 ww 1 sub { /i exch def c i get m i get y i get k i get CMYKtoRGB .144 mul 3 1 roll .587 mul 3 1 roll .299 mul add add c i 3 -1 roll floor cvi put } for c } bind def /gray { /ww exch def /b exch def /g exch def /r exch def 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul b i get .114 mul add add r i 3 -1 roll floor cvi put } for r } bind def /BITMAPTRUEGRAY { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /gis width string def /bis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop cf gis readhexstring pop cf bis readhexstring pop width gray} image bitmapsave restore grestore } bind def /BITMAPCMYKGRAY { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /yis width string def /mis width string def /kis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop cf mis readhexstring pop cf yis readhexstring pop cf kis readhexstring pop width cgray} image bitmapsave restore grestore } bind def /BITMAPGRAY { 8 {fakecolorsetup} COMMONBITMAP } bind def /BITMAPGRAYc { 8 {fakecolorsetup} COMMONBITMAPc } bind def /ENDBITMAP { } bind def end /ALDmatrix matrix def ALDmatrix currentmatrix pop /StartALD { /ALDsave save def savematrix ALDmatrix setmatrix } bind def /InALD { restorematrix } bind def /DoneALD { ALDsave restore } bind def /I { setdash } bind def /J { [] 0 setdash } bind def %%EndProlog %%BeginSetup (5.0) FMVERSION 1 1 0 0 612 792 0 1 20 FMDOCUMENT 0 0 /Times-Roman FMFONTDEFINE 1 0 /Courier-Bold FMFONTDEFINE 2 0 /LucidaSans-Typewriter FMFONTDEFINE 3 0 /Times-Bold FMFONTDEFINE 4 0 /Times-Italic FMFONTDEFINE 5 0 /Palatino-Italic FMFONTDEFINE 6 0 /LucidaSans-TypewriterOblique FMFONTDEFINE 7 0 /Helvetica-Oblique FMFONTDEFINE 32 FMFILLS 0 0 FMFILL 1 0.1 FMFILL 2 0.3 FMFILL 3 0.5 FMFILL 4 0.7 FMFILL 5 0.9 FMFILL 6 0.97 FMFILL 7 1 FMFILL 8 <0f1e3c78f0e1c387> FMFILL 9 <0f87c3e1f0783c1e> FMFILL 10 FMFILL 11 FMFILL 12 <8142241818244281> FMFILL 13 <03060c183060c081> FMFILL 14 <8040201008040201> FMFILL 16 1 FMFILL 17 0.9 FMFILL 18 0.7 FMFILL 19 0.5 FMFILL 20 0.3 FMFILL 21 0.1 FMFILL 22 0.03 FMFILL 23 0 FMFILL 24 FMFILL 25 FMFILL 26 <3333333333333333> FMFILL 27 <0000ffff0000ffff> FMFILL 28 <7ebddbe7e7dbbd7e> FMFILL 29 FMFILL 30 <7fbfdfeff7fbfdfe> FMFILL %%EndSetup %%Page: "21" 1 %%BeginPaperSize: Letter %%EndPaperSize 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K J 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (21) 532 42.62 T 0 11 Q (This method creates a ne) 121.75 712.67 T (w) 230.83 712.67 T (Ja) 241.52 712.67 T (v) 250.47 712.67 T (a stack chunk and appends it to the pre) 255.69 712.67 T (vious stack chunk. The) 425.88 712.67 T (pre) 121.75 699.67 T (vious stack chunk must be the last chunk in its chain. The ne) 135.52 699.67 T (w stack chunk is created,) 401.97 699.67 T (appended to the chain, and returned.) 121.75 686.67 T 1 12 Q (\245) 108 667 T 2 11 Q (bool_t ExecuteJava) 121.75 667 T 0 F (\050unsigned char *pc, Ex) 240.94 667 T (ecEn) 342.2 667 T (v *ee\051) 363.74 667 T (Be) 121.75 649.67 T (gin e) 133.8 649.67 T (x) 155.33 649.67 T (ecuting the Ja) 160.66 649.67 T (v) 220.93 649.67 T (a byte codes be) 226.16 649.67 T (ginning at address) 293.5 649.67 T 2 F (pc) 376.3 649.67 T 0 F (. The ee->frame) 389.54 649.67 T 1 12 Q (\245) 108 630 T 2 11 Q (JavaStackSize) 121.75 630 T 0 F -0.05 (The v) 121.75 612.67 P -0.05 (alue of this v) 146.77 612.67 P -0.05 (ariable is the maximum stack size, in bytes, that a thread can use for its Ja) 203.47 612.67 P -0.05 (v) 527.19 612.67 P -0.05 (a) 532.42 612.67 P (stack.) 121.75 599.67 T 3 16 Q (7 Additional Inf) 108 559.33 T (ormation) 220.96 559.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "21" 1 %%Page: "20" 2 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (20) 532 42.62 T 1 12 Q (\245) 108 712 T 2 11 Q (classname2string) 121.75 712 T 4 F (Not yet written.) 121.75 694.67 T 1 12 Q (\245) 108 675 T 2 11 Q (void DumpThreads\050\051) 121.75 675 T 0 F (This function is useful for deb) 121.75 657.67 T (ugging. It prints out a full stack trace of e) 254.43 657.67 T (v) 436.23 657.67 T (ery running thread in) 441.57 657.67 T (the Ja) 121.75 644.67 T (v) 146.88 644.67 T (a V) 152.1 644.67 T (irtual machine.) 167.02 644.67 T 1 12 Q (\245) 108 625 T 2 11 Q (execute_java_static_method) 121.75 625 T 4 F (Not yet written.) 121.75 607.67 T 1 12 Q (\245) 108 588 T 2 11 Q (long now\050\051) 121.75 588 T 0 F (This function returns the current time in milliseconds.) 121.75 570.67 T 1 12 Q (\245) 108 551 T 2 11 Q (bool_t java_monitor) 121.75 551 T 0 F (If this v) 121.75 533.67 T (ariable is non-zero, it indicates that we are currently monitoring and pro\336ling method) 155.69 533.67 T (e) 121.75 520.67 T (x) 126.46 520.67 T (ecution.) 131.8 520.67 T 1 12 Q (\245) 108 501 T 2 11 Q (void java_mon\050struct methodblock *caller,) 121.75 501 T (struct methodblock *callee,) 214.45 487.67 T (int time\051) 207.83 474.67 T 0 F (If the v) 121.75 457.67 T (ariable) 153.24 457.67 T 2 F (java_monitor) 185.92 457.67 T 0 F ( is non-zero, this function should be called at the end of e) 265.38 457.67 T (v) 517.15 457.67 T (ery) 522.49 457.67 T -0.19 (method e) 121.75 444.67 P -0.19 (x) 162.03 444.67 P -0.19 (ecution. The three ar) 167.36 444.67 P -0.19 (guments are the calling method, the called method, and the total) 257.62 444.67 P (amount of time spent in the called method.) 121.75 431.67 T 1 12 Q (\245) 108 412 T 2 11 Q (int jio_snprintf\050char *buf, int len, char *fmt, ...\051) 121.75 412 T 0 F (This function is identical to the C library routine) 121.75 394.67 T 2 F (sprintf) 337.76 394.67 T 0 F (, e) 384.12 394.67 T (xcept that it tak) 394.34 394.67 T (es an additional) 462.36 394.67 T 2 F (len) 121.75 381.67 T 0 F ( ar) 141.61 381.67 T (gument gi) 152.71 381.67 T (ving the length of the b) 196.74 381.67 T (uf) 298.88 381.67 T (fer) 307.77 381.67 T (. The formatted ar) 319.37 381.67 T (guments are written to the) 398.59 381.67 T (b) 121.75 368.67 T (uf) 127.03 368.67 T (fer) 135.91 368.67 T (, b) 147.68 368.67 T (ut at most len bytes are written. The v) 158.46 368.67 T (alue is the b) 324.7 368.67 T (uf) 377.33 368.67 T (fer is al) 386.22 368.67 T (w) 419.1 368.67 T (ays) 426.93 368.67 T 2 F (null) 444.34 368.67 T 0 F ( terminated.) 470.83 368.67 T -0.2 (The v) 121.75 351.67 P -0.2 (alue returned is the total number of bytes that w) 146.63 351.67 P -0.2 (ould be required to write out the speci\336ed) 355.23 351.67 P (ar) 121.75 338.67 T (guments in the speci\336ed format, not including the null terminating byte.) 130.09 338.67 T 1 12 Q (\245) 108 319 T 2 11 Q (char *javaString2CString\050Hjava_lang_String *s, char *buf,) 121.75 319 T (int buflen\051) 267.43 305.67 T 0 F (The speci\336ed Ja) 121.75 288.67 T (v) 192.4 288.67 T (a string is con) 197.62 288.67 T (v) 258.6 288.67 T (erted to a C string, and the results are put into the speci\336ed) 263.93 288.67 T (b) 121.75 275.67 T (uf) 127.03 275.67 T (fer) 135.91 275.67 T (. At most) 147.52 275.67 T 2 F (buflen) 190.91 275.67 T 0 F ( - 1 bytes are written to the b) 230.65 275.67 T (uf) 356.9 275.67 T (fer) 365.79 275.67 T (, follo) 377.56 275.67 T (wed by a) 403.57 275.67 T 2 F (null) 446.02 275.67 T 0 F ( character) 472.51 275.67 T (.) 514.96 275.67 T (The) 121.75 258.67 T 2 F (buf) 141.6 258.67 T 0 F ( ar) 161.47 258.67 T (gument is returned as the v) 172.57 258.67 T (alue) 291.13 258.67 T 1 12 Q (\245) 108 239 T 2 11 Q (ID2Str) 121.75 239 T 4 F (Not yet written.) 121.75 221.67 T 1 12 Q (\245) 108 202 T 2 11 Q (interfaceHash) 121.75 202 T 4 F (Not yet written.) 121.75 184.67 T 3 14 Q (6.11 Functions y) 108 151.67 T (ou don\325t want to touch) 208.77 151.67 T 1 12 Q (\245) 108 131 T 2 11 Q (do_execute_java_method_vararg) 121.75 131 T 4 F (Not yet written) 121.75 113.67 T 1 12 Q (\245) 108 94 T 2 11 Q (JavaStack CreateNewJavaStack\050ExecEnv *ee,) 121.75 94 T (JavaStack *previous_stack\051) 300.54 80.67 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "20" 2 %%Page: "19" 3 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (19) 532 42.62 T 1 12 Q (\245) 108 712 T 2 11 Q (bool_t) 121.75 712 T (VerifyClassAccess\050ClassClass *current_class,) 121.75 698.67 T (ClassClass *new_class,) 240.94 685.67 T (bool_t classloaderOnly\051) 234.32 672.67 T 0 F (This function determines if the speci\336ed) 121.75 655.67 T 2 F (current_class) 302 655.67 T 0 F ( is allo) 388.09 655.67 T (wed to access the speci\336ed) 417.15 655.67 T 2 F (new_class) 121.75 642.67 T 0 F (. If) 181.34 642.67 T 2 F (current_class) 196.92 642.67 T 0 F ( is) 283.01 642.67 T 2 F (NULL) 295.84 642.67 T 0 F (, this function al) 322.33 642.67 T (w) 393.72 642.67 T (ays returns) 401.55 642.67 T 2 F (TRUE) 452.26 642.67 T 0 F (.) 478.75 642.67 T -0.11 (If the) 121.75 625.67 P 2 F -0.27 (current_class) 147.79 625.67 P 0 F -0.11 ( has no class loader) 233.87 625.67 P -0.11 (, and the) 318.52 625.67 P 2 F -0.27 (classloaderOnly) 358.51 625.67 P 0 F -0.11 ( \337ag is) 457.84 625.67 P 2 F -0.27 (TRUE) 489.59 625.67 P 0 F -0.11 (, this) 516.08 625.67 P (method also al) 121.75 612.67 T (w) 185.8 612.67 T (ays returns) 193.63 612.67 T 2 F (TRUE) 244.34 612.67 T 0 F (.) 270.83 612.67 T 0 8.8 Q (*) 273.58 617.07 T 0 11 Q (Otherwise, a class can only access another class if at least one of the follo) 121.75 595.67 T (wing conditions is) 445.58 595.67 T (true:) 121.75 582.67 T 1 12 Q (\245) 126 567 T 0 11 Q (The) 144 567 T (y are the same class.) 160.94 567 T 1 12 Q (\245) 126 551 T 0 11 Q (The second class is public.) 144 551 T 1 12 Q (\245) 126 535 T 0 11 Q (The tw) 144 535 T (o classes are in the same package.) 174.74 535 T 3 14 Q (6.10 Miscellaneous Runtime Functions and V) 108 501.67 T (ariables) 380.12 501.67 T 0 11 Q (The follo) 108 476.67 T (wing are a set of miscellanous funcions and v) 148.36 476.67 T (ariables whose addresses are in the link) 348.49 476.67 T (v) 108 463.67 T (ector) 113.33 463.67 T (.) 134.72 463.67 T 1 12 Q (\245) 108 444 T 2 11 Q (struct execenv *EE\050\051) 121.75 444 T 0 F (This function returns the e) 121.75 426.67 T (x) 237.67 426.67 T (ecution en) 243.01 426.67 T (vironment for the current thread.) 288.09 426.67 T 1 12 Q (\245) 108 407 T 2 11 Q (void SignalError\050struct execenv *ee, char *ename,) 121.75 407 T (char *DetailMessage\051) 227.37 393.67 T 0 F (This function modi\336es the e) 121.75 376.67 T (x) 245.02 376.67 T (ecution en) 250.36 376.67 T (vironment indicated by the) 295.43 376.67 T 2 F (ee) 416.42 376.67 T 0 F ( ar) 429.67 376.67 T (gument to indicate) 440.77 376.67 T (than an error has occurred. The) 121.75 363.67 T 2 F (ename) 261.94 363.67 T 0 F ( ar) 295.05 363.67 T (gument must be the name of a subclass of) 306.15 363.67 T 2 F (Throwable) 121.75 350.67 T 0 F (.) 181.34 350.67 T (If the) 121.75 333.67 T 2 F (ee) 148.01 333.67 T 0 F ( ar) 161.26 333.67 T (gument is) 172.36 333.67 T 2 F (NULL) 218.19 333.67 T 0 F (, the v) 244.68 333.67 T (alue of) 271.6 333.67 T 2 F (EE\050\051) 304.59 333.67 T 0 F (is used instead.) 337.7 333.67 T 1 12 Q (\245) 108 314 T 2 11 Q (exception_t exceptionInternalObject\050int i\051) 121.75 314 T 0 F (Calling) 121.75 296.67 T 2 F (exceptionInternalObject\0501\051) 156.89 296.67 T 0 F ( returns a pre-allocated object of type) 329.06 296.67 T 2 F (NoClassDefFoundError) 121.75 283.67 T 0 F ( object.) 254.18 283.67 T (Calling) 121.75 266.67 T 2 F (exceptionInternalObject\0502\051) 156.89 266.67 T 0 F ( returns a pre-allocated object of type) 329.06 266.67 T 2 F (OutOfMemoryError) 121.75 253.67 T 0 F ( object) 227.7 253.67 T 1 12 Q (\245) 108 234 T 2 11 Q (bool_t is_subclass_of\050ClassClass *cb, ClassClass *dcb,) 121.75 234 T ( struct execenv *ee\051) 254.18 220.67 T 0 F -0.31 (The ar) 121.75 203.67 P -0.31 (gument) 149.64 203.67 P 2 F -0.74 (cb) 185.09 203.67 P 0 F -0.31 ( must point to class structure. The ar) 198.33 203.67 P -0.31 (gument dcb must point to either a class or) 356.08 203.67 P (to an interf) 121.75 190.67 T (ace structure. This function returns) 169.9 190.67 T 2 F (TRUE) 326.31 190.67 T 0 F ( if the class) 352.8 190.67 T 2 F (cb) 405.35 190.67 T 0 F ( is a subclass of or) 418.59 190.67 T (implements the interf) 121.75 177.67 T (ace) 215.74 177.67 T 2 F (dcb) 233.14 177.67 T 0 F (.) 252.57 177.67 T 1 12 Q (\245) 108 158 T 2 11 Q (bool_t is_instance_of\050JHandle *o, ClassClass *dcb,) 121.75 158 T (struct execenv *ee\051) 254.18 144.67 T 0 F (This function returns) 121.75 127.67 T 2 F (TRUE) 216.76 127.67 T 0 F ( if the instance) 243.25 127.67 T 2 F (o) 310.46 127.67 T 0 F ( is a subclass of or implements the interf) 317.08 127.67 T (ace) 494.79 127.67 T 2 F (dcb) 512.19 127.67 T 0 F (.) 531.62 127.67 T (This method al) 121.75 114.67 T (w) 187.63 114.67 T (ays returns) 195.47 114.67 T 2 F (TRUE) 246.18 114.67 T 0 F ( if) 272.67 114.67 T 2 F (o) 284.89 114.67 T 0 F ( is the) 291.51 114.67 T 2 F (null) 320.54 114.67 T 0 F ( object.) 347.02 114.67 T 108 90 540 110 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 98 240 98 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 612 792 C 0 10 Q 0 X 0 0 0 1 0 0 0 K ( *) 108 83.33 T -0.28 (This misfeature is to w) 120 83.33 P -0.28 (ork around a b) 210.45 83.33 P -0.28 (ug in the current Ja) 267.45 83.33 P -0.28 (v) 342.79 83.33 P -0.28 (a compiler) 347.54 83.33 P -0.28 (. Code compiled \322-O\323 can inline calls) 389.2 83.33 P (to methods to which the class shouldn\325) 120 71.33 T (t normally ha) 275.37 71.33 T (v) 328.5 71.33 T (e access. This will be \336x) 333.35 71.33 T (ed in a future release.) 431.52 71.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "19" 3 %%Page: "18" 4 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (18) 532 42.62 T 0 11 Q -0.29 (The) 121.75 712.67 P 2 F -0.69 (index) 141.31 712.67 P 0 F -0.29 (\325) 174.42 712.67 P -0.29 (th entry in) 177.89 712.67 P 2 F -0.69 (class) 225 712.67 P 0 F -0.29 (\325) 258.11 712.67 P -0.29 (s constant pool is resolv) 261.17 712.67 P -0.29 (ed if it has not already been resolv) 365.57 712.67 P -0.29 (ed. If) 514.61 712.67 P (the entry has not yet been resolv) 121.75 699.67 T (ed, its type must match one of the types speci\336ed by the) 263.94 699.67 T (bitmask gi) 121.75 686.67 T (v) 167.62 686.67 T (en in) 172.95 686.67 T 2 F (mask) 197.39 686.67 T 0 F (. The possible types are gi) 223.88 686.67 T (v) 338.48 686.67 T (en in the follo) 343.81 686.67 T (wing table:) 404.95 686.67 T (If the) 121.75 419.67 T 2 F (index) 148.01 419.67 T 0 F (\325) 181.12 419.67 T (th entry is of type) 184.59 419.67 T 2 F (x) 264.94 419.67 T 0 F (, then the v) 271.57 419.67 T (alue of) 320.17 419.67 T 2 10 Q (mask & \0501 << x\051) 144 407.33 T 0 11 Q (must not be zero. Specifying a mask of) 121.75 390.67 T 2 F (\050\050unsigned\051-1\051) 296.19 390.67 T 0 F ( ensures that an) 388.9 390.67 T (y constant pool) 456.86 390.67 T (type can be resolv) 121.75 377.67 T (ed. More information on the constant pool and its types can be found in) 201.31 377.67 T 4 F (The) 518.75 377.67 T (J) 121.75 364.67 T (ava V) 126.24 364.67 T (irtual Mac) 150.79 364.67 T (hine) 197.37 364.67 T 0 F (.) 216.31 364.67 T (All entries in the constant pool are resolv) 121.75 347.67 T (ed with respect to the) 302.75 347.67 T 2 F (class) 399.59 347.67 T 0 F ( ar) 432.7 347.67 T (gument. An) 443.8 347.67 T (y) 495.58 347.67 T -0.22 (references to other classes are resolv) 121.75 334.67 P -0.22 (ed by calling) 281.43 334.67 P 2 F -0.54 (FindClassFromClass) 340.34 334.67 P 0 F -0.22 ( using the class as) 459.54 334.67 P (the) 121.75 321.67 T 2 F (from) 137.94 321.67 T 0 F ( ar) 164.43 321.67 T (gument.) 175.52 321.67 T (This function returns) 121.75 304.67 T 2 F (TRUE) 216.76 304.67 T 0 F ( if the constant pool entry w) 243.25 304.67 T (as successfully resolv) 366.57 304.67 T (ed;) 461.72 304.67 T 2 F (FALSE) 477.91 304.67 T 0 F (otherwise.) 121.75 291.67 T 1 12 Q (\245) 108 272 T 2 11 Q (bool_t) 121.75 272 T (ResolveClassConstant\050cp_item_type *constant_pool,) 121.75 258.67 T (unsigned index, struct execenv *ee,) 247.56 245.67 T (unsigned mask\051) 240.94 232.67 T 0 F (This function is similar to) 121.75 215.67 T 2 F (ResolveClassConstantFromClass) 238.17 215.67 T 0 F (. Ho) 430.21 215.67 T (we) 448.87 215.67 T (v) 461.42 215.67 T (er the constant) 466.76 215.67 T (pool is gi) 121.75 202.67 T (v) 162.42 202.67 T (en directly) 167.76 202.67 T (, rather than being inferred from the) 213.78 202.67 T 2 F (class) 374.46 202.67 T 0 F ( ar) 407.57 202.67 T (gument.) 418.67 202.67 T (If the current e) 121.75 185.67 T (x) 186.63 185.67 T (ecution en) 191.97 185.67 T (vironment\325) 237.05 185.67 T (s current frame has a current method, then that method\325) 285.33 185.67 T (s) 529.11 185.67 T (class is used for resolving an) 121.75 172.67 T (y other class references in the constant pool. If the current frame) 248.37 172.67 T (has no current method, then other class reference are presumed to reside locally) 121.75 159.67 T (.) 471.4 159.67 T (This function returns) 121.75 142.67 T 2 F (TRUE) 216.76 142.67 T 0 F ( if the constant pool entry w) 243.25 142.67 T (as successfully resolv) 366.57 142.67 T (ed;) 461.72 142.67 T 2 F (FALSE) 477.91 142.67 T 0 F (otherwise.) 121.75 129.67 T 1 12 Q (\245) 108 110 T 2 11 Q (GetClassConstantClassName\050cp_item_type *constant_pool,) 121.75 110 T (unsigned index) 267.43 96.67 T 0 F (\051) 360.14 96.67 T (This function can be used to get the name of the class or interf) 121.75 79.67 T (ace at the) 395.67 79.67 T 2 F (index) 439.95 79.67 T 0 F (\325) 473.06 79.67 T (th item in the) 476.53 79.67 T (speci\336ed constant pool. This function does not resolv) 121.75 66.67 T (e the entry at the constant pool.) 356.23 66.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 12 Q (Constant T) 259.61 659 T (ype) 316.39 659 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (V) 395.05 659 T (alue) 402.61 659 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 2 9.6 Q (CONSTANT_Class) 217.5 635 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (7) 424.72 635 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CONSTANT_Fieldref) 217.5 616 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (9) 424.72 616 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CONSTANT_Methodref) 217.5 597 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (10) 418.94 597 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CONSTANT_InterfaceMethodref) 217.5 578 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11) 418.94 578 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CONSTANT_String) 217.5 559 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8) 424.72 559 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CONSTANT_Integer) 217.5 540 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (3) 424.72 540 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CONSTANT_Float) 217.5 521 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (4) 424.72 521 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CONSTANT_Long) 217.5 502 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (5) 424.72 502 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CONSTANT_Double) 217.5 483 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (6) 424.72 483 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CONSTANT_NameAndType) 217.5 464 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (12) 418.94 464 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CONSTANT_Utf8) 217.5 445 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (1) 424.72 445 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 211.5 670.75 211.5 441.25 2 L V 0.5 H 0 Z N 382.5 671.25 382.5 440.75 2 L V N 436.5 670.75 436.5 441.25 2 L V N 211.25 671 436.75 671 2 L V N 211.25 649 436.75 649 2 L V N 211.25 631 436.75 631 2 L V N 211.25 612 436.75 612 2 L V N 211.25 593 436.75 593 2 L V N 211.25 574 436.75 574 2 L V N 211.25 555 436.75 555 2 L V N 211.25 536 436.75 536 2 L V N 211.25 517 436.75 517 2 L V N 211.25 498 436.75 498 2 L V N 211.25 479 436.75 479 2 L V N 211.25 460 436.75 460 2 L V N 211.25 441 436.75 441 2 L V N 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "18" 4 %%Page: "17" 5 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (17) 532 42.62 T 0 11 Q -0.19 (Space is allocated for an array of the speci\336ed type and length. The possible v) 121.75 712.67 P -0.19 (alues for type are) 461.94 712.67 P (sho) 121.75 699.67 T (wn in the table belo) 136.75 699.67 T (w:) 223.24 699.67 T -0.28 (The arrays are not initialized, e) 121.75 502.67 P -0.28 (xcept that for arrays of type T_CLASS, the slot that contains the) 257.05 502.67 P (class type is initialized to 0.) 121.75 489.67 T 1 12 Q (\245) 108 470 T 2 11 Q (sizearray\050int type, int length\051) 121.75 470 T 0 F (.) 327.03 470 T (The method returns the size of an array of the speci\336ed type and length. The type must be one) 121.75 452.67 T (of the ar) 121.75 439.67 T (guments gi) 158.2 439.67 T (v) 206.51 439.67 T (en in the table abo) 211.85 439.67 T (v) 292.33 439.67 T (e for) 297.67 439.67 T 2 F (ArrayAlloc) 320.88 439.67 T 0 F (. Note that when) 387.1 439.67 T 2 F (type) 462.56 439.67 T 0 F ( is) 489.05 439.67 T 2 F (T_CLASS) 121.75 426.67 T 0 F (, the v) 168.1 426.67 T (alue returned by) 195.02 426.67 T 2 F (sizearray) 269.24 426.67 T 0 F ( does) 328.84 426.67 T 4 F (not) 354.51 426.67 T 0 F ( include the e) 368.56 426.67 T (xtra w) 427.36 426.67 T (ord at the end) 455.05 426.67 T (indicating to the type.) 121.75 413.67 T 0 8.8 Q (*) 217.69 418.07 T 1 12 Q (\245) 108 394 T 2 11 Q (HObject *MultiArrayAlloc\050int dimensions, ClassClass) 121.75 394 T (*array_cb, stack_item *sizes\051) 260.81 380.67 T 0 F (This function is used to allocate se) 121.75 363.67 T (v) 273.62 363.67 T (eral dimensions of a multi-dimensional array) 278.96 363.67 T (simultaneously) 121.75 350.67 T (. The dimensions gi) 187.65 350.67 T (v) 274.15 350.67 T (en by the dimensions) 279.48 350.67 T 2 F (argument) 375.43 350.67 T 0 F ( must be less than or) 428.4 350.67 T (equal to the dimensions of the array class block speci\336ed by the) 121.75 337.67 T 2 F (array_cb) 405.26 337.67 T 0 F ( ar) 458.23 337.67 T (gument.) 469.33 337.67 T (F) 121.75 320.67 T (or e) 127.7 320.67 T (xample, to create) 144.33 320.67 T 2 F (new int[5][4][]) 222.53 320.67 T 0 F (,) 321.86 320.67 T 2 F (MultiArrayAlloc) 327.36 320.67 T 0 F ( w) 426.69 320.67 T (ould be called with) 437.27 320.67 T 2 F (dimensions) 144 308.33 T 2 10 Q ( = 2) 210.22 308.33 T 2 11 Q (array_cb) 144 296.33 T 2 10 Q ( = FindClass\050\322[[I\323, TRUE\051) 196.98 296.33 T (sizes[0] = 5;) 144 284.33 T (sizes[1] = 4;) 144 272.33 T 3 14 Q (6.9 Constant P) 108 239.67 T (ool Resolution) 198.72 239.67 T 0 11 Q (The link v) 108 214.67 T (ector contains the addresses of se) 153.06 214.67 T (v) 299.1 214.67 T (eral functions that are used to resolv) 304.44 214.67 T (e entries in a) 463.74 214.67 T (class\325) 108 201.67 T (s constant pool.) 132.44 201.67 T 1 12 Q (\245) 108 182 T 2 11 Q (bool_t) 121.75 182 T (ResolveClassConstantFromClass\050ClassClass *class,) 121.75 168.67 T (unsigned index, struct execenv *ee,) 300.54 155.67 T ( unsigned mask\051) 287.3 142.67 T 108 78 540 98 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 86 240 86 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 612 792 C 0 10 Q 0 X 0 0 0 1 0 0 0 K ( *) 108 71.33 T (In retrospect, this is probably a mistak) 120 71.33 T (e.) 272.94 71.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 11 Q (Array T) 262.5 678.67 T (ype) 300.48 678.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 F (atype) 361.5 678.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 2 8.8 Q (T_CLASS) 262.5 658.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2) 361.5 658.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T_BOOLEAN) 262.5 641.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (4) 361.5 641.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T_CHAR) 262.5 624.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (5) 361.5 624.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T_FLOAT) 262.5 607.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (6) 361.5 607.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T_DOUBLE) 262.5 590.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (7) 361.5 590.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T_BYTE) 262.5 573.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8) 361.5 573.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T_SHORT) 262.5 556.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (9) 361.5 556.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T_INT) 262.5 539.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (10) 361.5 539.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T_LONG) 262.5 522.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11) 361.5 522.92 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 256.5 688.75 256.5 519.25 2 L V 0.5 H 0 Z N 355.5 689.25 355.5 518.75 2 L V N 391.5 688.75 391.5 519.25 2 L V N 256.25 689 391.75 689 2 L V N 256.25 672 391.75 672 2 L V N 256.25 655 391.75 655 2 L V N 256.25 638 391.75 638 2 L V N 256.25 621 391.75 621 2 L V N 256.25 604 391.75 604 2 L V N 256.25 587 391.75 587 2 L V N 256.25 570 391.75 570 2 L V N 256.25 553 391.75 553 2 L V N 256.25 536 391.75 536 2 L V N 256.25 519 391.75 519 2 L V N 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "17" 5 %%Page: "16" 6 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (16) 532 42.62 T 0 11 Q (The v) 108 712.67 T (ariable) 133.08 712.67 T 2 F (binclasses) 165.76 712.67 T 0 F ( points to an array of all the classes that ha) 231.98 712.67 T (v) 418.73 712.67 T (e been loaded into the) 424.06 712.67 T (system. The number of elements currently in this array is gi) 108 699.67 T (v) 370.16 699.67 T (en by) 375.5 699.67 T 2 F (nbinclasses) 402.38 699.67 T 0 F (.) 475.22 699.67 T -0.29 (No code should not look at or modify) 108 675.67 P 2 F -0.7 (binclasses) 273.72 675.67 P 0 F -0.29 ( and) 339.94 675.67 P 2 F -0.7 (nbinclasses) 360.74 675.67 P 0 F -0.29 ( without \336rst calling the) 433.59 675.67 P -0.32 (function) 108 662.67 P 2 F -0.76 (lock_classes\050\051) 147.1 662.67 P 0 F -0.32 (. Calling this function acquires a monitor which is set aside for these) 239.8 662.67 P (v) 108 649.67 T (ariables. When the code is \336nished modifying these v) 113.22 649.67 T (ariables, it should free the monitor by) 348.5 649.67 T (calling) 108 636.67 T 2 F (unlock_classes) 140.69 636.67 T 0 F (\050\051.) 233.4 636.67 T -0.26 (The link v) 108 612.67 P -0.26 (ector also contains the addresses of tw) 152.54 612.67 P -0.26 (o functions by which the compiler can \336nd a class) 319.53 612.67 P (by name. If the speci\336ed class has already been loaded, it is returned. If the class has not yet been) 108 599.67 T (loaded, it is loaded.) 108 586.67 T 2 10 Q (ClassClass) 144 568.33 T (*FindClass\050struct execenv *ee, char *name, bool_t resolve\051;) 156.04 556.33 T (ClassClass ClassClass) 144 544.33 T ( *FindClassFromClass\050struct execenv *ee,) 150.02 532.33 T (char *name,) 396.84 532.33 T (bool_t resolve, ClassClass *from\051;) 276.12 520.33 T 0 11 Q (The function) 108 496.67 T 2 F (FindClass) 167.27 496.67 T 0 F ( is a con) 226.87 496.67 T (v) 262.78 496.67 T (enience function. It looks at the current e) 268.12 496.67 T (x) 448.19 496.67 T (ecution) 453.52 496.67 T (en) 108 483.67 T (vironment to determine the class of the currently running method. It then calls) 117.94 483.67 T 2 F (FindClassFromClass) 108 470.67 T 0 F ( with the identical ar) 227.2 470.67 T (guments that it w) 317.43 470.67 T (as passed, b) 393.41 470.67 T (ut adds the current) 445.42 470.67 T (class as the) 108 457.67 T 2 F (from) 160.24 457.67 T 0 F ( ar) 186.73 457.67 T (gument.) 197.83 457.67 T (The function) 108 433.67 T 2 F (FindClassFromClass) 167.27 433.67 T 0 F ( is the general function for loading and \336nding classes.) 286.46 433.67 T 1 12 Q (\245) 108 414 T 0 11 Q (If the) 121.75 414 T 2 F (from) 148.01 414 T 0 F ( class does not ha) 174.5 414 T (v) 251.27 414 T (e a class loader) 256.6 414 T (, then) 323.05 414 T 2 F (binclasses) 350.25 414 T 0 F ( is searched to see if a class) 416.47 414 T (with the speci\336ed name has already been loaded. If not, the class is loaded.) 121.75 400.67 T 1 12 Q (\245) 108 381 T 0 11 Q (If the) 121.75 381 T 2 F (from) 148.01 381 T 0 F ( class does ha) 174.5 381 T (v) 234.46 381 T (e a class loader) 239.8 381 T (, the class loader is called to determine if it has) 306.25 381 T (already loaded in the class, or if a ne) 121.75 367.67 T (w class needs to be loaded.) 282.45 367.67 T 3 14 Q (6.8 Object Allocation) 108 334.67 T 0 11 Q (The link v) 108 309.67 T (ector contains pointers to the follo) 153.06 309.67 T (wing functions which are used to allocate instances) 303.4 309.67 T (and arrays.) 108 296.67 T 1 12 Q (\245) 108 277 T 2 11 Q (HObject *ObjAlloc\050ClassClass *cb, long n\051) 121.75 277 T 0 F (:) 393.25 277 T (The \336rst ar) 121.75 259.67 T (gument must point to the class block of a non-array class. The second ar) 169.82 259.67 T (gument) 487.34 259.67 T (must currently al) 121.75 246.67 T (w) 196.18 246.67 T (ays be 0.) 204.01 246.67 T -0.26 (A space is allocatyped for the object, b) 121.75 229.67 P -0.26 (ut the space is not initialized in an) 290.8 229.67 P -0.26 (y w) 438.85 229.67 P -0.26 (ay) 454.68 229.67 P -0.26 (. The contents of) 464.35 229.67 P (the space is unpredictable.) 121.75 216.67 T 1 12 Q (\245) 108 197 T 2 11 Q (HObject *newobject\050ClassClass *cb,) 121.75 197 T (unsigned char *pc, struct execenv *ee\051) 240.94 183.67 T 0 F -0.25 (This method allocates space for the speci\336ed object by calling) 121.75 166.67 P 2 F -0.6 (ObjAlloc) 395.42 166.67 P 0 F -0.25 (, and then zeroes the) 448.39 166.67 P (space. If an) 121.75 153.67 T (y error occurs,) 171.97 153.67 T 2 F (SignalError) 238.55 153.67 T 0 F ( is called with appropriate ar) 311.4 153.67 T (guments.) 436.75 153.67 T 1 12 Q (\245) 108 134 T 2 11 Q (HObject *ArrayAlloc\050int type, int length\051) 121.75 134 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "16" 6 %%Page: "15" 7 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (15) 532 42.62 T 0 11 Q -0.31 (Creates a monitor associated with the speci\336ed k) 121.75 712.67 P -0.31 (e) 334.2 712.67 P -0.31 (y) 338.92 712.67 P -0.31 (, if such a monitor doesn\325) 343.71 712.67 P -0.31 (t already e) 454.36 712.67 P -0.31 (xist. The) 499.38 712.67 P (function then tries to enter the monitor using) 121.75 699.67 T 2 F (sysMonitorEnter) 320.95 699.67 T 0 F (.) 419.68 699.67 T -0.09 (The current JVM, when entering a synchronized instance \050non-static\051 method, attempts to lock) 121.75 682.67 P (\322this\323 by calling) 121.75 669.67 T 2 F (monitorEnter\050\050unsigned int\051) 196.6 669.67 T (this\051) 378.14 669.67 T 0 F (. When entering a) 411.25 669.67 T -0.6 (synchrnized class \050static\051 method, it locks the class by calling) 121.75 656.67 P 2 F -1.45 (monitorEnter\050\050unsigned) 389.15 656.67 P (int\051) 121.75 643.67 T 6 F () 148.23 643.67 T 2 F (\051) 307.16 643.67 T 0 F (. The corresponding) 313.78 643.67 T 2 F (monitorExit) 404.82 643.67 T 0 F ( function is) 477.66 643.67 T (called when lea) 121.75 630.67 T (ving the synchronized method.) 189.95 630.67 T 1 12 Q (\245) 108 611 T 2 11 Q (void monitorExit\050unsigned int key\051) 121.75 611 T 0 F (Finds the monitor associated with the speci\336ed k) 121.75 593.67 T (e) 336.43 593.67 T (y \050it must already e) 341.15 593.67 T (xist\051 and then e) 425.92 593.67 T (xits that) 493.27 593.67 T (monitor using) 121.75 580.67 T 2 F (sysMonitorExit) 185.92 580.67 T 0 F (.) 278.63 580.67 T 1 12 Q (\245) 108 561 T 2 11 Q (void) 121.75 561 T (monitorRegister\050sys_mon_t *mid, char *name\051) 154.85 561 T 0 F (Creates and re) 121.75 543.67 T (gisters a ne) 184.5 543.67 T (w monitor) 233.71 543.67 T (. The) 278.64 543.67 T 2 F (mid) 303.99 543.67 T 0 F ( ar) 323.86 543.67 T (gument must point to a b) 334.96 543.67 T (uf) 444.44 543.67 T (fer whose size is at) 453.33 543.67 T (least as big as that returned by) 121.75 530.67 T 2 F (sysMonitorSizeof\050\051) 257.69 530.67 T 0 F (. The ne) 376.89 530.67 T (w monitor is gi) 412.35 530.67 T (v) 479 530.67 T (en the) 484.34 530.67 T (speci\336ed name. This name is used by v) 121.75 517.67 T (arious deb) 293.79 517.67 T (ugging routines \050c.f.) 339.08 517.67 T 2 F (DumpThreads\050\051) 431.04 517.67 T 0 F ( in) 517.13 517.67 T (\2446.10\051 which print out the state of the machine.) 121.75 504.67 T 1 12 Q (\245) 108 485 T 2 11 Q (void sysMonitorEnter\050sys_mon_t *mid\051) 121.75 485 T 0 F (If the monitor indicated by the) 121.75 467.67 T 2 F (mid) 258.62 467.67 T 0 F ( ar) 278.48 467.67 T (gument is uno) 289.58 467.67 T (wned or already o) 351.64 467.67 T (wned by the current) 430.48 467.67 T -0.4 (thread, then e) 121.75 454.67 P -0.4 (x) 180.35 454.67 P -0.4 (ecution proceeds normally) 185.69 454.67 P -0.4 (. Otherwise, the current thread w) 300.88 454.67 P -0.4 (aits for the monitor to) 443.28 454.67 P (become free. Note that a count is k) 121.75 441.67 T (ept of ho) 274.99 441.67 T (w man) 313.82 441.67 T (y times the current thread has \322entered\323 the) 343.29 441.67 T (monitor) 121.75 428.67 T (.) 155.98 428.67 T (The monitor ar) 121.75 411.67 T (gument) 187.54 411.67 T 2 F (mid) 223.29 411.67 T 0 F ( must either be a monitor created automatically by) 243.15 411.67 T 2 F (monitorEnter) 121.75 398.67 T 0 F (, or it must be re) 200.77 398.67 T (gistered through a call to) 272.71 398.67 T 2 F (monitorRegister) 384.83 398.67 T 0 F (. F) 483.56 398.67 T (ailing to) 495.01 398.67 T (re) 121.75 385.67 T (gister a monitor before using it may cause unpredictable results.) 130.13 385.67 T 1 12 Q (\245) 108 366 T 2 11 Q (void sysMonitorExit\050sys_mon_t *mid\051) 121.75 366 T 0 F (The monitor indicated by the) 121.75 348.67 T 2 F (mid) 252.21 348.67 T 0 F ( ar) 272.07 348.67 T (gument must be o) 283.17 348.67 T (wned by the current thread. The count) 361.42 348.67 T (indicating ho) 121.75 335.67 T (w man) 179.22 335.67 T (y times the current thread has \322entered\323 the monitor is decremented. If the) 208.69 335.67 T (count goes to zero, the current thread gi) 121.75 322.67 T (v) 296.2 322.67 T (es up o) 301.54 322.67 T (wnership of the monitor) 332.43 322.67 T (.) 437.84 322.67 T (The monitor ar) 121.75 305.67 T (gument) 187.54 305.67 T 2 F (mid) 223.29 305.67 T 0 F ( must either be a monitor created automatically by) 243.15 305.67 T 2 F (monitorEnter) 121.75 292.67 T 0 F (, or it must be re) 200.77 292.67 T (gistered through a call to) 272.71 292.67 T 2 F (monitorRegister) 384.83 292.67 T 0 F (. F) 483.56 292.67 T (ailing to) 495.01 292.67 T (re) 121.75 279.67 T (gister a monitor before using it may cause unpredictable results.) 130.13 279.67 T (An error is signalled if) 121.75 262.67 T 2 F (sysMonitorExit) 224.09 262.67 T 0 F ( is called by a thread that does not currently o) 316.8 262.67 T (wn) 516.93 262.67 T (the monitor) 121.75 249.67 T (.) 172.17 249.67 T 1 12 Q (\245) 108 230 T 2 11 Q (int sysMonitorSizeof) 121.75 230 T 0 F (\050\051) 254.18 230 T (Returns the size of the) 121.75 212.67 T 2 F (sys_mon_t) 222.87 212.67 T 0 F ( structure.) 282.47 212.67 T 3 14 Q (6.7 Class access) 108 179.67 T 0 11 Q (The link v) 108 154.67 T (ector contains the addresses of tw) 153.06 154.67 T (o v) 301.11 154.67 T (ariables and tw) 314.58 154.67 T (o functions for \336nding all classes) 381.06 154.67 T (that ha) 108 141.67 T (v) 137.41 141.67 T (e already been loaded directly:) 142.75 141.67 T 2 10 Q (int nbinclasses;) 144 123.33 T (ClassClass** binclasses;) 144 111.33 T (void *lockClasses\050\051;) 144 99.33 T (void *unlockClasses\050\051) 144 87.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "15" 7 %%Page: "14" 8 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (14) 532 42.62 T 1 12 Q (\245) 108 712 T 2 11 Q (invokeSynchronizedJavaMethod) 121.75 712 T 0 F (This in) 121.75 694.67 T (v) 152.17 694.67 T (ok) 157.45 694.67 T (er is used to call a synchronized, interpreted Ja) 168.34 694.67 T (v) 373.71 694.67 T (a method.) 378.94 694.67 T 1 12 Q (\245) 108 675 T 2 11 Q (invokeAbstractMethod) 121.75 675 T 0 F (:) 254.18 675 T (This in) 121.75 657.67 T (v) 152.17 657.67 T (ok) 157.45 657.67 T (er is used to call an abstract or otherwise unimplemented method. It generates an) 168.34 657.67 T (error) 121.75 644.67 T (.) 142.51 644.67 T 1 12 Q (\245) 108 625 T 2 11 Q (invokeLazyNativeMethod) 121.75 625 T 0 F -0.07 (This in) 121.75 607.67 P -0.07 (v) 152.1 607.67 P -0.07 (ok) 157.38 607.67 P -0.07 (er is used to call a nati) 168.27 607.67 P -0.07 (v) 265.96 607.67 P -0.07 (e method whose address is not yet kno) 271.3 607.67 P -0.07 (wn. The \336rst time that) 440.12 607.67 P (this in) 121.75 594.67 T (v) 148.51 594.67 T (ok) 153.79 594.67 T (er is called, it calls) 164.68 594.67 T 2 F (dynoLink) 249.61 594.67 T 0 F ( \050see belo) 302.58 594.67 T (w\051 on the method block to link in the nati) 344.46 594.67 T (v) 526.6 594.67 T (e) 531.93 594.67 T (method \050if necessary\051 and get its address. It then changes the) 121.75 581.67 T 2 F (mb-) 391.8 581.67 T (>invoker) 411.66 581.67 T 0 F ( \336eld of its) 464.64 581.67 T (method to be either) 121.75 568.67 T 2 F (invokeSynchronizedNativeMethod) 209.73 568.67 T 0 F ( or) 408.39 568.67 T 2 F (invokeNativeMethod) 121.75 555.67 T 0 F (, depending on whether the method w) 240.94 555.67 T (as originally declared) 406.72 555.67 T (synchronized or not.) 121.75 542.67 T 1 12 Q (\245) 108 523 T 2 11 Q (invokeSynchronizedNativeMethod) 121.75 523 T 0 8.8 Q (*) 320.4 527.4 T 0 11 Q (This in) 121.75 505.67 T (v) 152.17 505.67 T (ok) 157.45 505.67 T (er is used to call synchronized nati) 168.34 505.67 T (v) 320.21 505.67 T (e methods.) 325.54 505.67 T 1 12 Q (\245) 108 486 T 2 11 Q (invokeCompiledMethod) 121.75 486 T 0 F (This in) 121.75 468.67 T (v) 152.17 468.67 T (ok) 157.45 468.67 T (er is used to call compiled methods.) 168.34 468.67 T -0.33 (The nati) 108 444.67 P -0.33 (v) 143.75 444.67 P -0.33 (e-language implementation of nati) 149.09 444.67 P -0.33 (v) 299.05 444.67 P -0.33 (e methods are not necessarily loaded at the same time) 304.39 444.67 P (that the class \336le is. The function) 108 431.67 T 2 F (dynoLink) 256.49 431.67 T 0 F ( is called the \336rst time a speci\336c nati) 309.46 431.67 T (v) 469.9 431.67 T (e method is) 475.23 431.67 T (in) 108 418.67 T (v) 116.12 418.67 T (ok) 121.4 418.67 T (ed) 132.29 418.67 T 1 12 Q (\245) 108 399 T 2 11 Q (bool_t dynoLink\050struct methodblock *mb\051) 121.75 399 T 0 F (This function is called to dynamically link in the address of a nati) 121.75 381.67 T (v) 409.89 381.67 T (e method. It should only be) 415.23 381.67 T (called if) 121.75 368.67 T 2 F (mb) 160.23 368.67 T 0 F ( is a nati) 173.48 368.67 T (v) 210.17 368.67 T (e method that has not yet been link) 215.51 368.67 T (ed. If this function succeeds, it places) 369.08 368.67 T -0.2 (the address of the nati) 121.75 355.67 P -0.2 (v) 217.22 355.67 P -0.2 (e code into) 222.56 355.67 P 2 F -0.47 (mb->code) 272.99 355.67 P 0 F -0.2 ( and returns) 325.97 355.67 P 2 F -0.47 (TRUE) 380.06 355.67 P 0 F -0.2 (. Otherwise, it returns) 406.55 355.67 P 2 F -0.47 (FALSE) 504.14 355.67 P 0 F -0.2 (.) 537.25 355.67 P 3 14 Q (6.6 Monitors) 108 322.67 T 0 11 Q (The Ja) 108 297.67 T (v) 136.8 297.67 T (a V) 142.02 297.67 T (irtual Machine pro) 156.94 297.67 T (vides tw) 238.65 297.67 T (o w) 275.51 297.67 T (ays of creating and referencing monitors, by using a) 291.59 297.67 T (\322k) 108 284.67 T (e) 118.27 284.67 T (y\323, or by directly creating and initializing a monitor) 122.99 284.67 T (.) 350 284.67 T -0.33 (When creating a monitor using a k) 108 260.67 P -0.33 (e) 258.06 260.67 P -0.33 (y) 262.78 260.67 P -0.33 (, an) 267.57 260.67 P -0.33 (y unsigned inte) 282.96 260.67 P -0.33 (ger v) 349.36 260.67 P -0.33 (alue can be used as the k) 371.05 260.67 P -0.33 (e) 477.72 260.67 P -0.33 (y) 482.44 260.67 P -0.33 (. This is the) 487.22 260.67 P (sort of monitor used by the current JVM for synchornized methods. These monitors are created) 108 247.67 T (when needed, and then automatically discarded as necessary) 108 234.67 T (, when no longer used.) 373.05 234.67 T (A monitor can also be directly created and initialized. Such monitors tend to be f) 108 210.67 T (aster than k) 463.2 210.67 T (e) 513.8 210.67 T (yed) 518.52 210.67 T (monitors, since there is no table-lookup associated with them. Ho) 108 197.67 T (we) 395.84 197.67 T (v) 408.39 197.67 T (er these monitors are not) 413.72 197.67 T (reclaimed and e) 108 184.67 T (xist for the life of the program.) 177.48 184.67 T (The link v) 108 160.67 T (ector contains the addresses of six functions useful for manipulating monitors:) 153.06 160.67 T 1 12 Q (\245) 108 141 T 2 11 Q (void monitorEnter\050unsigned int key\051) 121.75 141 T 108 90 540 110 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 98 240 98 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 612 792 C 0 10 Q 0 X 0 0 0 1 0 0 0 K ( *) 108 83.33 T (F) 120 83.33 T (or unk) 125.41 83.33 T (o) 151.14 83.33 T (wn reasons, the address of) 155.89 83.33 T 2 F (invokeNativeMethod) 263.64 83.33 T 0 F (, which is used to in) 372 83.33 T (v) 451.6 83.33 T (ok) 456.4 83.33 T (e non-) 466.3 83.33 T (synchronized nati) 120 71.33 T (v) 190.57 71.33 T (e methods is not included in the link v) 195.42 71.33 T (ector) 348.05 71.33 T (. No one seems to ha) 367.49 71.33 T (v) 450.61 71.33 T (e noticed.) 455.46 71.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "14" 8 %%Page: "13" 9 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (13) 532 42.62 T 3 14 Q (6.1 V) 108 710.67 T (ersion) 141.21 710.67 T 0 11 Q (The link v) 108 685.67 T (ector contains the address of the v) 153.06 685.67 T (ariable) 302.47 685.67 T 2 F (JavaVersion) 335.15 685.67 T 0 F (. Bits 24\32031 of this v) 407.99 685.67 T (ariable) 500.01 685.67 T -0.19 (contain the compiler v) 108 672.67 P -0.19 (ersion, bits 16\32023 contain the major v) 205.96 672.67 P -0.19 (ersion of the ja) 371.2 672.67 P -0.19 (v) 436.1 672.67 P -0.19 (a class \336le, and bits 0\320) 441.32 672.67 P (15 contain the minor v) 108 659.67 T (ersion of the ja) 207.44 659.67 T (v) 272.9 659.67 T (a class \336le.) 278.13 659.67 T (Currently) 108 635.67 T (, the compiler v) 149.45 635.67 T (ersion is 2, the major v) 218.33 635.67 T (ersion is 43, and the minor v) 318.99 635.67 T (ersion is 3.) 444.4 635.67 T 3 14 Q (6.2 UseLosslessQuickOpcodes) 108 602.67 T 0 11 Q -0.18 (The link v) 108 577.67 P -0.18 (ector contains a pointer to the v) 152.69 577.67 P -0.18 (ariable) 290.03 577.67 P 2 F -0.44 (UseLosslessQuickOpcodes) 322.52 577.67 P 0 F -0.18 (. This v) 474.83 577.67 P -0.18 (ariable) 507.5 577.67 P (is more fully described in) 108 564.67 T (\2444.1) 223.18 564.67 T 3 14 Q (6.3 Important Class Files) 108 531.67 T 0 11 Q (The link v) 108 506.67 T (ector contains the addresses of v) 153.06 506.67 T (ariables whose v) 295.44 506.67 T (alue is the internal class structures for) 368.48 506.67 T (the follo) 108 493.67 T (wing classes and interf) 144.7 493.67 T (aces:) 245.09 493.67 T 3 14 Q (6.4 Generic memory allocation) 108 308.67 T 0 11 Q (The link v) 108 283.67 T (ector contains the addresses of the functions) 153.06 283.67 T 2 F (sysMalloc) 350.1 283.67 T 0 F (,) 409.7 283.67 T 2 F (sysCalloc) 415.2 283.67 T 0 F (,) 474.8 283.67 T 2 F -0.88 (sysRealloc) 108 270.67 P 0 F -0.36 (, and) 174.22 270.67 P 2 F -0.88 (sysFree) 197.63 270.67 P 0 F -0.36 (. These four functions are implementations of the C library routines) 243.98 270.67 P 2 F (malloc) 108 257.67 T 0 F (,) 147.73 257.67 T 2 F (calloc) 153.23 257.67 T 0 F (,) 192.96 257.67 T 2 F (realloc) 198.46 257.67 T 0 F (, and) 244.82 257.67 T 2 F (free) 268.95 257.67 T 0 F (. Ho) 295.44 257.67 T (we) 314.11 257.67 T (v) 326.66 257.67 T (er these implementations are guaranteed to) 331.99 257.67 T (inte) 108 244.67 T (grated with Ja) 124.33 244.67 T (v) 185.82 244.67 T (a\325) 191.05 244.67 T (s memory allocation scheme.) 198.99 244.67 T (The compiler should use these functions for its memory allocation.) 108 220.67 T 3 14 Q (6.5 In) 108 187.67 T (v) 145.17 187.67 T (ok) 152.03 187.67 T (ers) 166.67 187.67 T 0 11 Q (The link v) 108 162.67 T (ector contains the addresses of se) 153.06 162.67 T (v) 299.1 162.67 T (eral of the in) 304.44 162.67 T (v) 359.9 162.67 T (ok) 365.18 162.67 T (ers that can be attached to a method.) 376.07 162.67 T (Each of these methods is called with the same four ar) 108 149.67 T (guments and stack arrangement as) 342.42 149.67 T 2 F (invokeCompiledMethod) 108 136.67 T 0 F (, which is described in \2445.9.) 240.44 136.67 T 1 12 Q (\245) 108 117 T 2 11 Q (invokeJavaMethod) 121.75 117 T 0 F (This in) 121.75 99.67 T (v) 152.17 99.67 T (ok) 157.45 99.67 T (er is used to call an unsynchronized, interpreted Ja) 168.34 99.67 T (v) 390.21 99.67 T (a method.) 395.44 99.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Link v) 176.42 462.67 T (ector entry) 207.19 462.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (corr) 392.53 462.67 T (esponding class) 412.48 462.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 2 F (classJavaLangClass) 114 445.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (class java.lang.Class) 331.22 445.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (classJavaLangObject,) 114 428.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (class java.lang.Object) 331.22 428.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (classJavaLangString,) 114 411.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (class java.lang.String) 331.22 411.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (classJavaLangThrowable,) 114 394.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (class java.lang.Throwable) 331.22 394.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (classJavaLangException,) 114 377.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (class java.lang.Exception) 331.22 377.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (classJavaLangRuntimeException,) 114 360.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (class java.lang.RuntimeException) 331.22 360.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (interfaceJavaLangCloneable,) 114 343.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (interface java.lang.Cloneable) 331.22 343.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 477 108 339 2 L V 2 H 0 Z N 325.22 479 325.22 337 2 L V 0.5 H N 550.22 477 550.22 339 2 L V 2 H N 107 478 551.22 478 2 L V N 107 457 551.22 457 2 L V 0.5 H N 107 440 551.22 440 2 L V N 107 423 551.22 423 2 L V N 107 406 551.22 406 2 L V N 107 389 551.22 389 2 L V N 107 372 551.22 372 2 L V N 107 355 551.22 355 2 L V N 107 338 551.22 338 2 L V 2 H N 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "13" 9 %%Page: "12" 10 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (12) 532 42.62 T 0 11 Q -0.11 (The currently e) 108 712.67 P -0.11 (x) 174.82 712.67 P -0.11 (ecuting frame can be found at) 180.15 712.67 P 2 F -0.26 (ee->current_frame) 313.29 712.67 P 0 F -0.11 (. The i\325) 425.87 712.67 P -0.11 (th ar) 457.53 712.67 P -0.11 (gument to the) 477.08 712.67 P -0.45 (current method can be found at) 108 699.67 P 2 F -1.07 (ee->current_frame->optop[i]) 245.23 699.67 P 0 F -0.45 (. The \322this\323 ar) 424.03 699.67 P -0.45 (gument is at) 484.81 699.67 P 2 F (ee->current_frame->optop[0]) 108 686.67 T 0 F (.) 286.79 686.67 T -0.06 (If the compiled code returns an inte) 108 662.67 P -0.06 (ger) 263.9 662.67 P -0.06 (, \337oat, or object v) 277.51 662.67 P -0.06 (alue, it should increment the v) 354.61 662.67 P -0.06 (alue of) 487.26 662.67 P 2 F -0.14 (ee-) 520.13 662.67 P (>current_frame->optop) 108 649.67 T 0 F ( by 1) 247.06 649.67 T 0 8.8 Q (*) 269.06 654.07 T 0 11 Q ( and place the result at the ne) 273.46 649.67 T (w v) 401.18 649.67 T (alue of) 417.1 649.67 T 2 F (ee) 108 636.67 T (-) 121.24 636.67 T (>current_frame->optop[0]) 127.87 636.67 T 0 F (.) 286.79 636.67 T (If the compiled code returns a long or double v) 108 612.67 T (alue, it should increment the v) 314.55 612.67 T (alue of) 447.48 612.67 T 2 F (ee-) 108 599.67 T (>current_frame->optop) 127.87 599.67 T 0 F ( by 2 and place the tw) 266.93 599.67 T (o w) 363.35 599.67 T (ords of result at the ne) 379.44 599.67 T (w) 477.23 599.67 T 2 F (ee) 108 586.67 T (-) 121.24 586.67 T (>current_frame->optop[0]) 127.87 586.67 T 0 F ( and) 286.79 586.67 T 2 F (ee) 308.18 586.67 T (-) 321.42 586.67 T (>current_frame->optop[1]) 328.04 586.67 T 0 F (. The order) 486.97 586.67 T (of the tw) 108 573.67 T (o w) 146.99 573.67 T (ords of the long or double is implementation dependent.) 163.08 573.67 T 0 8.8 Q (\240) 409.64 578.07 T 0 11 Q (The de\336nition of) 108 549.67 T 2 F (invokeCompiledMethod) 184.69 549.67 T 0 F ( is as follo) 317.13 549.67 T (ws:) 362.39 549.67 T 2 10 Q (bool_t) 144 531.33 T (invokeCompiledMethod\050JHandle *o, struct methodblock *mb,) 144 519.33 T (int args_size, ExecEnv *ee\051) 264 507.33 T ({) 144 495.33 T ( if \050p_invokeCompiledMethod == NULL\051 {) 144 483.33 T (SignalError\050ee, JAVAPKG "InternalError",) 192 471.33 T ("Error! Compiled methods not supported"\051;) 264 459.33 T (return FALSE;) 192 447.33 T ( } else {) 144 435.33 T (return p_invokeCompiledMethod\050o, mb, args_size, ee\051;) 192 423.33 T ( }) 144 411.33 T (}) 144 399.33 T 0 11 Q (If the v) 108 375.67 T (alue of the v) 139.49 375.67 T (ariable) 193.9 375.67 T 2 F (p_invokeCompiledMethod) 226.58 375.67 T 0 F ( is not 0, it should point to a function) 372.26 375.67 T -0.17 (that will cause the indicated method\325) 108 362.67 P -0.17 (s compiled code to be e) 268.78 362.67 P -0.17 (x) 371.34 362.67 P -0.17 (ecuted with the indicated ar) 376.68 362.67 P -0.17 (guments.) 497.39 362.67 P (The in) 108 349.67 T (v) 135.97 349.67 T (ok) 141.25 349.67 T (er should return a non-zero v) 152.14 349.67 T (alue if the method e) 279.25 349.67 T (x) 366.46 349.67 T (ecuted without error) 371.79 349.67 T (. A zero v) 460.39 349.67 T (alue) 503.48 349.67 T (indicates that an error occurred.) 108 336.67 T (If an error occurred, the \336elds) 108 312.67 T 2 F (ee->exceptionKind) 242.09 312.67 T 0 F ( and) 354.66 312.67 T 2 F (ee->exception) 376.05 312.67 T 0 F ( should be \336lled) 462.13 312.67 T (in with appropriate v) 108 299.67 T (alues gi) 199.68 299.67 T (ving the error) 233.32 299.67 T (.) 292.59 299.67 T 3 16 Q (6 Other V) 108 259.33 T (alues in the Link V) 178.96 259.33 T (ector) 307.17 259.33 T 0 11 Q -0.24 (In addition to the hooks in link v) 108 233.67 P -0.24 (ector gi) 250.07 233.67 P -0.24 (v) 282.85 233.67 P -0.24 (en in) 288.18 233.67 P -0.23 -0.11 (\2445, the link v) 312.14 233.67 B -0.23 -0.11 (ector contains pointers to a wide v) 367.8 233.67 B -0.23 -0.11 (ariety) 513.2 233.67 B -0.11 (of v) 108 220.67 S -0.11 (ariables and functions that the compiler may w) 124.7 220.67 S -0.11 (ant to use.) 325.75 220.67 S 108 181 540 201 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 189 240 189 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 612 792 C 0 10 Q 0 X 0 0 0 1 0 0 0 K ( *) 108 174.33 T (That is, \322increment by 1\323 in the C sense. The v) 120 174.33 T (alue is actually incremented by the size of one element of) 307.5 174.33 T (the stack.) 120 162.33 T ( \240) 108 147.33 T -0.02 (Future implementations of the Ja) 120 147.33 P -0.02 (v) 251.4 147.33 P -0.02 (a Nati) 256.15 147.33 P -0.02 (v) 280.04 147.33 P -0.02 (e Code API should address this problem. One possible solution) 284.89 147.33 P (is the creation of tw) 120 135.33 T (o ne) 199.33 135.33 T (w functions) 216.02 135.33 T 2 F (returnLongToFrame) 265.46 135.33 T 0 F ( and) 367.8 135.33 T 2 F (returnDoubleToFrame) 387.24 135.33 T 0 F ( which) 501.62 135.33 T (will increment the optop and place the tw) 120 123.33 T (o w) 285.71 123.33 T (ords of the long or double correctly on the stack.) 300.33 123.33 T (On all current implementations, the long or double is placed on the stack as if by the code) 120 108.33 T 2 F (\050\050long *\051\050&ee->current_frame->optop[0]\051\051 = <) 135 96.33 T 6 F (long value) 399.88 96.33 T 2 F (>) 460.08 96.33 T (\050\050double *\051\050&ee->current_frame->optop[0]\051\051 = <) 135 84.33 T 6 F (double value) 411.92 84.33 T 2 F (>) 484.16 84.33 T 0 F (Ho) 120 71.67 T (we) 131.97 71.67 T (v) 143.38 71.67 T (er) 148.23 71.67 T (,) 155.6 71.67 T 2 11 Q ( ee->current_frame->optop[0) 158.1 71.67 T 0 10 Q (] is not guaranteed to be 8-byte aligned.) 336.89 71.67 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "12" 10 %%Page: "11" 11 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (11) 532 42.62 T 2 10 Q (while \050frame != NULL\051 {) 144 713.33 T (if \050start_frame->current_method != NULL\051 {) 168.08 701.33 T (<) 192 689.33 T 7 F (do something) 204.04 689.33 T 2 F (>) 266.85 689.33 T (}) 168 677.33 T (if \050frame->current_method->fb.access &) 168 665.33 T (ACC_MACHINE_COMPILED\051 {) 240 653.33 T (frame =) 192 641.33 T (CompiledFramePrev\050frame, &frame_buf\051) 240.16 641.33 T (} else {) 168 629.33 T (frame = frame->prev;) 192 617.33 T (}) 168 605.33 T (}) 144 593.33 T 0 11 Q (The de\336nition of) 108 569.67 T 2 F (CompiledFramePrev) 184.69 569.67 T 0 F ( is as follo) 297.27 569.67 T (ws:) 342.52 569.67 T 2 10 Q (JavaFrame *CompiledFramePrev\050JavaFrame *frame, JavaFrame *buf\051 {) 144 551.33 T ( return \050p_CompiledFramePrev == 0\051) 144 539.33 T (? frame->prev) 192 527.33 T (: p_CompiledFramePrev\050frame, buf\051;) 192 515.33 T (}) 144 503.33 T 0 11 Q (Note that if) 108 479.67 T 2 F (p_CompiledFramePrev) 160.85 479.67 T 0 F ( is zero, the pre) 286.67 479.67 T (vious frame of a compiled frame is) 353.9 479.67 T (calculated in e) 108 466.67 T (xactly the same manner as the pre) 171.37 466.67 T (vious frame of an interpreted frame.) 320.17 466.67 T (The function) 108 442.67 T 2 F (PCinCompiledCode) 167.27 442.67 T 0 F ( is used to determine if a speci\336c program counter is within) 273.22 442.67 T (the bounds of a speci\336c method. The PC ar) 108 429.67 T (gument is either a v) 297.53 429.67 T (alue inside the code of some) 384.02 429.67 T (interpreted method, or is a v) 108 416.67 T (alue returned by) 231.76 416.67 T 2 F (CompiledCodePC) 305.99 416.67 T 0 F (.) 398.7 416.67 T (The de\336nition of) 108 392.67 T 2 F (PCinCompiled) 184.69 392.67 T 0 F ( code is as follo) 264.16 392.67 T (ws:) 332.93 392.67 T 2 10 Q -1.05 (bool_t PCinCompiledCode\050unsigned char *pc, struct methodblock *mb\051) 144 374.33 P ({) 144 362.33 T ( return \050p_PCinCompiledCode != NULL\051) 144 350.33 T (&& p_PCinCompiledCode\050pc, mb\051;) 216 338.33 T (}) 144 326.33 T 0 11 Q (Note that if) 108 302.67 T 2 F (p_PCinCompiledCode) 160.85 302.67 T 0 F ( is zero, this function al) 280.05 302.67 T (w) 383.21 302.67 T (ays returns) 391.04 302.67 T 2 F (FALSE.) 441.75 302.67 T 3 14 Q (5.9 boolean \050*p_in) 108 269.67 T (v) 220.24 269.67 T (ok) 227.1 269.67 T (eCompiledMethod\051\050 . . .\051) 241.74 269.67 T 0 11 Q -0.2 (The in) 108 244.67 P -0.2 (v) 135.77 244.67 P -0.2 (ok) 141.05 244.67 P -0.2 (er) 151.94 244.67 P 2 F -0.49 (invokeCompiledMethod) 163.03 244.67 P 0 F -0.2 ( is attached to an) 295.47 244.67 P -0.2 (y method that has compiled code. As a) 368.41 244.67 P (result, this function is called whene) 108 231.67 T (v) 263.54 231.67 T (er an interpreted method in) 268.88 231.67 T (v) 387.58 231.67 T (ok) 392.86 231.67 T (es a method that has compiled) 403.75 231.67 T (code.) 108 218.67 T (This method tak) 108 194.67 T (es four ar) 179.39 194.67 T (guments:) 220.73 194.67 T 1 12 Q (\245) 108 175 T 2 11 Q (JHandle *o) 121.75 175 T 0 F (: The \322this\323 of the method call. F) 187.96 175 T (or class \050static\051 methods, this ar) 333.23 175 T (gument) 472.35 175 T (contains the handle of the class to which) 121.75 161.67 T 2 F (mb) 302.61 161.67 T 0 F ( belongs.) 315.85 161.67 T 1 12 Q (\245) 108 142 T 2 11 Q (struct methodblock *mb) 121.75 142 T 0 F (: The method being in) 267.43 142 T (v) 364.15 142 T (ok) 369.43 142 T (ed.) 380.32 142 T 1 12 Q (\245) 108 122 T 2 11 Q (int args_size) 121.75 122 T 0 F (: The number of ar) 207.83 122 T (guments with which the method is being called. F) 290.11 122 T (or) 509.02 122 T (instance \050non-static\051 methods, this count includes the \322this\323 ar) 121.75 108.67 T (gument.) 394.98 108.67 T 1 12 Q (\245) 108 89 T 2 11 Q (ExecEnv *ee) 121.75 89 T 0 F (: The current e) 194.59 89 T (x) 258.87 89 T (ecution en) 264.2 89 T (vironment.) 309.28 89 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "11" 11 %%Page: "10" 12 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (10) 532 42.62 T 0 11 Q (Note that if) 108 712.67 T 2 F (p_ReadInCompiledCode) 160.85 712.67 T 0 F ( is 0, the) 293.3 712.67 T 2 F (getNbytes) 333.32 712.67 T 0 F ( function is called to skip) 392.92 712.67 T 2 F (attribute_length) 108 699.67 T 0 F ( bytes of input.) 213.95 699.67 T 3 14 Q (5.8 boolean \050*p_PCinCompiledCode\051\050unsigned char *pc,) 108 666.67 T (struct methodblock *mb\051) 307.5 650.67 T (\050unsigned char*\051\050*p_CompiledCodePC\051\050J) 129 634.67 T (a) 380.4 634.67 T (v) 387.05 634.67 T (aFrame *frame,) 393.91 634.67 T (struct methodblock *mb\051) 374 618.67 T (J) 129 602.67 T (a) 135.79 602.67 T (v) 142.44 602.67 T (aFrame *\050*p_CompiledFramePr) 149.3 602.67 T (e) 345.4 602.67 T (v\051\050J) 351.4 602.67 T (a) 374.52 602.67 T (v) 381.17 602.67 T (aFrame *frame,) 388.03 602.67 T (J) 346 586.67 T (a) 352.79 586.67 T (v) 359.44 586.67 T (aFrame *b) 366.3 586.67 T (uf\051) 430.95 586.67 T 0 11 Q -0.41 (When an object of type) 108 561.67 P 2 F -0.98 (Throwable) 211.35 561.67 P 0 F -0.41 ( is created, one of its \336elds is \336lled with the program counters) 270.95 561.67 P (\050PC\325) 108 548.67 T (s\051 of all the frames abo) 128.17 548.67 T (v) 229.12 548.67 T (e it in the stack.) 234.46 548.67 T (Three hooks are pro) 108 524.67 T (vided for dealing with stack frames, methods, and program counters) 196.11 524.67 T 1 12 Q (\245) 108 505 T 2 11 Q (CompiledCodePC) 121.75 505 T 0 F ( determines the program counter of a compiled frame) 214.45 505 T 1 12 Q (\245) 108 485 T 2 11 Q (CompiledFramePrev) 121.75 485 T 0 F ( determines the pre) 234.32 485 T (vious frame of a compiled frame.) 318.05 485 T 1 12 Q (\245) 108 465 T 2 11 Q (PCinCompiledCode) 121.75 465 T 0 F ( determines if a pre) 227.7 465 T (viously determined program counter is within a) 312.34 465 T (compiled method.) 121.75 451.67 T (The Ja) 108 427.67 T (v) 136.8 427.67 T (a virtual machine determines the program counter of a speci\336c frame as follo) 142.02 427.67 T (ws:) 480.83 427.67 T 1 12 Q (\245) 108 408 T 0 11 Q (If a speci\336c frame indicates that it is running an interpreted \050non-compiled\051 method, the PC is) 121.75 408 T (e) 121.75 394.67 T (xtracted directly from the frame.) 126.46 394.67 T 1 12 Q (\245) 108 375 T 0 11 Q (If the speci\336c frame indicates that it is running a compiled method, the PC is e) 121.75 375 T (xtracted by) 466.83 375 T (calling) 121.75 361.67 T 2 F (CompiledCodePC) 154.44 361.67 T 0 F ( function with the appropriate frame and method block) 247.15 361.67 T (The de\336nition of) 108 337.67 T 2 F (CompiledCodePC) 184.69 337.67 T 0 F ( is as follo) 277.4 337.67 T (ws:) 322.65 337.67 T 2 10 Q (unsigned char *) 144 319.33 T (CompiledCodePC\050JavaFrame *frame, struct methodblock *mb\051 {) 144 307.33 T (return \050p_CompiledCodePC == NULL\051) 168 295.33 T (? NULL) 240 283.33 T (: p_CompiledCodePC\050frame, mb\051;) 240 271.33 T (}) 144 259.33 T 0 11 Q (T) 108 235.67 T (o w) 113.84 235.67 T (alk up the stack, the Ja) 129.92 235.67 T (v) 229.3 235.67 T (a V) 234.52 235.67 T (irtual Machine also looks at the current frame:) 249.44 235.67 T 1 12 Q (\245) 108 216 T 0 11 Q (If a speci\336c frame indicates that it is running an interpreted \050non-compiled\051 method, the) 121.75 216 T (pre) 121.75 202.67 T (vious frame is e) 135.52 202.67 T (xtracted directly from the frame by) 205.31 202.67 T 2 F (frame->prev) 362.33 202.67 T 0 F (.) 434.45 202.67 T 1 12 Q (\245) 108 183 T 0 11 Q (If the speci\336c frame indicates that it is running a compiled method, the pre) 121.75 183 T (vious frame is) 449.59 183 T -0.51 (e) 121.75 169.67 P -0.51 (xtracted by calling) 126.46 169.67 P 2 F -1.24 (CompiledFramePrev\050frame, &temp_buffer\051) 209.54 169.67 P 0 F -0.51 (.) 459.94 169.67 P 2 F -1.24 (temp_buffer) 464.92 169.67 P 0 F -0.34 (is a) 121.75 156.67 P 2 F -0.83 (JavaFrame) 138.77 156.67 P 0 F -0.34 ( structure whose v) 198.37 156.67 P -0.34 (alue must not be modi\336ed by the caller) 277.41 156.67 P -0.34 (. Its contents must be) 445.79 156.67 P (passed unchanged to the ne) 121.75 143.67 T (xt call to) 241.94 143.67 T 2 F (CompiledFramePrev) 283.19 143.67 T 0 F ( as the code w) 395.77 143.67 T (alks up the stack.) 457.97 143.67 T (In general, code to w) 108 119.67 T (alk up the Ja) 200.44 119.67 T (v) 255.52 119.67 T (a stack looks lik) 260.75 119.67 T (e the follo) 331.83 119.67 T (wing:) 376.16 119.67 T 2 10 Q (JavaFrame) 144 101.33 T ( *frame = ee->current_frame;) 198.18 101.33 T (JavaFrame frame_buf;) 144 89.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "10" 12 %%Page: "9" 13 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (9) 536 42.62 T 1 12 Q (\245) 108 712 T 0 11 Q (The current class has not been loaded in through a class loader) 121.75 712 T (.) 396.38 712 T 0 8.8 Q (*) 399.13 716.4 T 0 11 Q (The function) 108 687.67 T 2 F (ReadInCompiledCode) 167.27 687.67 T 0 F ( is called to read the compiled code for that method. It is) 286.46 687.67 T (called with the follo) 108 674.67 T (wing se) 196.02 674.67 T (v) 229.66 674.67 T (en ar) 234.99 674.67 T (guments:) 256.48 674.67 T 1 12 Q (\245) 108 655 T 2 11 Q -0.47 (\050void *\051context) 121.75 655 P 0 F -0.2 (: The compiler need not look at this v) 220.6 655 P -0.2 (ariable. It should be passed back as) 383.74 655 P (the \336rst ar) 121.75 641.67 T (gument to) 166.15 641.67 T 2 F (get1byte) 213.21 641.67 T 0 F (,) 266.19 641.67 T 2 F (get2bytes) 271.69 641.67 T 0 F (,) 331.28 641.67 T 2 F (get4bytes) 336.78 641.67 T 0 F (, and) 396.38 641.67 T 2 F (getNbytes) 420.52 641.67 T 0 F (.) 480.11 641.67 T 1 12 Q (\245) 108 622 T 2 11 Q (int attribute_length) 121.75 622 T 0 F (: The length of the) 254.18 622 T 2 F (CompiledCodeAttribute) 338.2 622 T 0 F ( attrib) 477.26 622 T (ute.) 503.02 622 T 1 12 Q (\245) 108 602 T 2 11 Q -0.87 (struct methodblock *mb) 121.75 602 P 0 F -0.36 (: The method on which the compiled code attrib) 265.68 602 P -0.36 (ute w) 473.99 602 P -0.36 (as found.) 497.65 602 P (The ne) 121.75 588.67 T (wly read compiled code can be attached to the) 151.71 588.67 T 2 F (mb) 357.9 588.67 T 0 F ( ar) 371.15 588.67 T (gument, for e) 382.25 588.67 T (xample, by making it) 441.04 588.67 T (the v) 121.75 575.67 T (alue of the) 143.16 575.67 T 2 F (mb->CompiledCode) 192.34 575.67 T 0 F ( \336eld.) 298.3 575.67 T 1 12 Q (\245) 108 556 T 2 11 Q (unsigned long \050*get1byte\051\050void *context\051) 121.75 556 T 0 F (: The compiler should call this) 386.62 556 T (function with the) 121.75 542.67 T 2 F (context) 199.66 542.67 T 0 F ( as its single ar) 246.01 542.67 T (gument, to read the ne) 311.2 542.67 T (xt byte of the attrib) 409.1 542.67 T (ute.) 493.2 542.67 T 1 12 Q (\245) 108 523 T 2 11 Q (unsigned long \050*get2bytes\051\050void *context\051) 121.75 523 T 0 F (: The compiler should call this) 393.25 523 T -0.26 (function with the) 121.75 509.67 P 2 F -0.63 (context) 198.87 509.67 P 0 F -0.26 ( as its single ar) 245.22 509.67 P -0.26 (gument, to read the ne) 309.36 509.67 P -0.26 (xt tw) 406.21 509.67 P -0.26 (o bytes of the attrib) 428.14 509.67 P -0.26 (ute as) 512.42 509.67 P (an unsigned v) 121.75 496.67 T (alue in big-endian order) 182.57 496.67 T (.) 287.36 496.67 T 1 12 Q (\245) 108 477 T 2 11 Q (unsigned long \050*get4bytes\051\050void *context\051) 121.75 477 T 0 F (: The compiler should call this) 393.25 477 T -0.37 (function with the) 121.75 463.67 P 2 F -0.89 (context) 198.55 463.67 P 0 F -0.37 ( as its single ar) 244.9 463.67 P -0.37 (gument, to read the ne) 308.61 463.67 P -0.37 (xt four bytes of the attrib) 405.02 463.67 P -0.37 (ute as) 512.64 463.67 P (an unsigned v) 121.75 450.67 T (alue in big-endian order) 182.57 450.67 T (.) 287.36 450.67 T 1 12 Q (\245) 108 431 T 2 11 Q (void \050*getNbytes\051\050void *, int count, char *buffer\051) 121.75 431 T 0 F (: The compiler) 452.84 431 T -0.05 (should call this function with) 121.75 417.67 P 2 F -0.11 (context) 252.6 417.67 P 0 F -0.05 (, a) 298.95 417.67 P 2 F -0.11 (count) 311.99 417.67 P 0 F -0.05 (, and a b) 345.1 417.67 P -0.05 (uf) 382.01 417.67 P -0.05 (fer) 390.9 417.67 P -0.05 (. The function reads the ne) 402.51 417.67 P -0.05 (xt) 519.41 417.67 P 2 F -0.11 (n) 530.67 417.67 P 0 F (bytes of the attrib) 121.75 404.67 T (ute and puts it into the b) 198.82 404.67 T (uf) 304.94 404.67 T (fer) 313.83 404.67 T (. If the) 325.43 404.67 T 2 F (buffer) 357.2 404.67 T 0 F ( ar) 396.93 404.67 T (gument is) 408.03 404.67 T 2 F (NULL) 453.87 404.67 T 0 F (,) 480.36 404.67 T 2 F (n) 485.86 404.67 T 0 F ( bytes of) 492.48 404.67 T (the attrib) 121.75 391.67 T (ute are skipped.) 160.94 391.67 T (The de\336nition of) 108 367.67 T 2 F (ReadInCompiledCode) 184.69 367.67 T 0 F ( is as follo) 303.89 367.67 T (ws:) 349.14 367.67 T 2 10 Q (void ReadInCompiledCode\050void *context, struct methodblock *mb,) 144 349.33 T (int attribute_length,) 264 337.33 T (unsigned long \050*get1byte\051\050\051,) 264 325.33 T (unsigned long \050*get2bytes\051\050\051,) 264 313.33 T (unsigned long \050*get4bytes\051\050\051,) 264 301.33 T (void \050*getNbytes\051\050\051\051) 264 289.33 T ({) 144 277.33 T (if \050p_ReadInCompiledCode != NULL\051 {) 168 265.33 T (p_ReadInCompiledCode\050context, mb, attribute_length,) 192 253.33 T (get1byte, get2bytes, get4bytes,) 312 241.33 T (getNbytes\051;) 312 229.33 T ( } else {) 144 217.33 T (getNbytes\050context, attribute_length, NULL\051;) 192 205.33 T ( }) 144 193.33 T (}) 144 181.33 T 0 11 Q (The function pointed at by) 108 157.67 T 2 F (p_ReadInCompiledCode) 227.46 157.67 T 0 F ( must read \050or skip\051 a total of e) 359.9 157.67 T (xactly) 495.38 157.67 T 2 F (attribute_length) 108 144.67 T 0 F ( bytes of data; otherwise the results are unpredictable.) 213.95 144.67 T 108 102 540 122 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 110 240 110 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 612 792 C 0 10 Q 0 X 0 0 0 1 0 0 0 K ( *) 108 95.33 T (F) 120 95.33 T (or security reasons, the current implementation of the JDK does not accept nati) 125.41 95.33 T (v) 441.49 95.33 T (e code from classes) 446.34 95.33 T (loaded via a class loader) 120 83.33 T (. This restriction is because the JDK has no w) 217.2 83.33 T (ay of v) 399.85 83.33 T (erifying nati) 427.47 83.33 T (v) 476.38 83.33 T (e code. In) 481.23 83.33 T (future releases, this restriction may be relax) 120 71.33 T (ed for signed classes.) 294.53 71.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "9" 13 %%Page: "8" 14 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (8) 536 42.62 T 3 14 Q (5.6 v) 108 710.67 T (oid \050*p_CompiledCodeSignalHandler\051\050int sig, v) 139.36 710.67 T (oid *inf) 423.92 710.67 T (o, v) 469.09 710.67 T (oid *uc\051) 489.95 710.67 T 0 11 Q -0.1 (The function) 108 685.67 P 2 F -0.24 (CompiledCodeSignalHandler) 167.07 685.67 P 0 F -0.1 ( is called by Ja) 332.62 685.67 P -0.1 (v) 396.76 685.67 P -0.1 (a\325) 401.99 685.67 P -0.1 (s interrupt handler) 409.93 685.67 P 0 8.8 Q -0.08 (*) 490.38 690.07 P 0 11 Q -0.1 ( when the) 494.78 685.67 P -0.26 (Ja) 108 672.67 P -0.26 (v) 116.94 672.67 P -0.26 (a process recei) 122.17 672.67 P -0.26 (v) 186.11 672.67 P -0.26 (es an une) 191.45 672.67 P -0.26 (xpected interrupt. The ar) 231.69 672.67 P -0.26 (guments are the identical to the ar) 339.44 672.67 P -0.26 (guments by) 486.75 672.67 P (which the signal handler is called. The v) 108 659.67 T (ariable) 285.53 659.67 T 2 F (info) 318.21 659.67 T 0 F ( contains the siginfo structure, and the) 344.7 659.67 T 2 F (uc) 515.18 659.67 T 0 F (contains additional information. The de\336nition of this function is as follo) 108 646.67 T (ws:) 428.86 646.67 T 2 10 Q (void CompiledCodeSignalHandler\050int sig, void *info, void *uc\051 {) 144 628.33 T (if \050p_CompiledCodeSignalHandler != NULL\051) 168 616.33 T (p_CompiledCodeSignalHandler\050sig, info, uc\051;) 192 604.33 T (}) 144 592.33 T 0 11 Q (The function pointed at by this method can be used together with a cle) 108 568.67 T (v) 417.21 568.67 T (er compiler to create code) 422.55 568.67 T (in which normal \337o) 108 555.67 T (w-of-control is handled more ef) 194.2 555.67 T (\336ciently) 333.83 555.67 T (, at the e) 369.17 555.67 T (xpense of making error) 406.28 555.67 T (handling much slo) 108 542.67 T (wer) 189 542.67 T (. F) 204.89 542.67 T (or e) 216.34 542.67 T (xample, a SP) 232.97 542.67 T (ARC implementation could ensure that a re) 289.71 542.67 T (gister is) 480.8 542.67 T (nonnull using the code sequence) 108 529.67 T 2 10 Q (cmp) 144 511.33 T (, %g0) 192 511.33 T (teq) 144 499.33 T (16) 192 499.33 T 0 11 Q -0.02 (This code sequence causes an interrupt if the re) 108 475.67 P -0.02 (gister contains a null v) 316 475.67 P -0.02 (alue. Similarly) 415.25 475.67 P -0.02 (, the code for) 479.3 475.67 P (array-bounds checking could be) 108 462.67 T 2 10 Q (cmp) 144 444.33 T (, ) 192 444.33 T (tgeu) 144 432.33 T (17) 192 432.33 T 0 11 Q -0.19 (This code sequence causes an interrupt if the re) 108 408.67 P -0.19 (gister contains a v) 314.64 408.67 P -0.19 (alue that is ne) 393.53 408.67 P -0.19 (g) 453.59 408.67 P -0.19 (ati) 459.03 408.67 P -0.19 (v) 469.76 408.67 P -0.19 (e, or is greater) 475.09 408.67 P (than or equal to the upper bound. The signal handler code w) 108 395.67 T (ould be responsible for recognizing) 372.45 395.67 T -0.06 (the interrupt as being an e) 108 382.67 P -0.06 (xception, and cleaning up by causing the appropriate Ja) 221.5 382.67 P -0.06 (v) 464.91 382.67 P -0.06 (a) 470.13 382.67 P 2 F -0.14 (Exception) 477.71 382.67 P 0 F (to be thro) 108 369.67 T (wn.) 149.89 369.67 T 3 14 Q (5.7 \050v) 108 336.67 T (oid *\051p_ReadInCompiledCode\050 . . .\051,) 144.02 336.67 T (char *CompiledCodeAttrib) 132.5 320.67 T (ute) 296.71 320.67 T 0 11 Q -0.32 (The v) 108 295.67 P -0.32 (ariable) 132.76 295.67 P 2 F -0.76 (CompiledCodeAttribute) 165.13 295.67 P 0 F -0.32 ( and the function) 304.19 295.67 P 2 F -0.76 (ReadInCompiledCode) 379.91 295.67 P 0 F -0.32 ( are used) 499.11 295.67 P -0.32 (by pre-compilers to read in nati) 108 282.67 P -0.32 (v) 244.5 282.67 P -0.32 (e code from \322f) 249.84 282.67 P -0.32 (at\323 class \336les that contain both nati) 312.59 282.67 P -0.32 (v) 464.37 282.67 P -0.32 (e code and Ja) 469.7 282.67 P -0.32 (v) 527.46 282.67 P -0.32 (a) 532.69 282.67 P (byte codes.) 108 269.67 T (If the v) 108 245.67 T (alue of the v) 139.49 245.67 T (ariable) 193.9 245.67 T 2 F (CompiledCodeAttribute) 226.58 245.67 T 0 F ( is not) 365.64 245.67 T 2 F (NULL) 395.29 245.67 T 0 F (, it is considered to be a) 421.77 245.67 T (string gi) 108 232.67 T (ving the name of the attrib) 144.09 232.67 T (ute that speci\336es nati) 260.27 232.67 T (v) 352.57 232.67 T (e code in the class \336le. The string should) 357.91 232.67 T (hardw) 108 219.67 T (are-speci\336c. The) 135.38 219.67 T 4 F (J) 211.43 219.67 T (ava V) 215.93 219.67 T (irtual Mac) 240.47 219.67 T (hine Speci\336cation) 287.06 219.67 T 0 F ( suggests that ompiler writers should) 365.58 219.67 T (mak) 108 206.67 T (e it v) 126.83 206.67 T (endor) 148.67 206.67 T (- or application-speci\336c.) 173.49 206.67 T (Normally) 108 182.67 T (, the code that parses a class \336le ignores an) 149.45 182.67 T (y attrib) 338.08 182.67 T (utes in the class \336le that it does not) 369.33 182.67 T (recognize. Ho) 108 169.67 T (we) 169.42 169.67 T (v) 181.98 169.67 T (er) 187.31 169.67 T (, if the follo) 195.42 169.67 T (wing three conditions are met:) 247.08 169.67 T 1 12 Q (\245) 108 150 T 0 11 Q (The v) 121.75 150 T (alue of) 146.82 150 T 2 F (CompiledCodeAttribute) 179.81 150 T 0 F ( is not null.) 318.88 150 T 1 12 Q (\245) 108 130 T 0 11 Q (The name of a method\325) 121.75 130 T (s attrib) 223.78 130 T (ute matches the v) 253.81 130 T (alue of the v) 330.22 130 T (ariable) 384.62 130 T 2 F (CompiledCodeAttribute) 121.75 116.67 T 0 F (, then the attrib) 260.81 116.67 T (ute is assumed to gi) 327.19 116.67 T (v) 413.7 116.67 T (e the nati) 419.03 116.67 T (v) 459.08 116.67 T (e-language) 464.42 116.67 T (implementation of the method.) 121.75 103.67 T 108 78 540 98 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 86 240 86 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 612 792 C 0 10 Q 0 X 0 0 0 1 0 0 0 K ( *) 108 71.33 T (Currently) 120 71.33 T (, this method is only called in Ja) 157.68 71.33 T (v) 286.37 71.33 T (a implementations on Solaris.) 291.12 71.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "8" 14 %%Page: "7" 15 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (7) 536 42.62 T 2 10 Q ( } else if \050p_CompilerCommand != NULL\051 {) 144 713.33 T (return p_CompilerCommand\050x\051;) 192 701.33 T ( } else {) 144 689.33 T (return NULL;) 192 677.33 T ( }) 144 665.33 T (}) 144 653.33 T 0 11 Q (Compilers should set the v) 108 629.67 T (alues of the v) 225.06 629.67 T (ariables) 283.75 629.67 T 2 F (p_CompilerCommand) 320.71 629.67 T 0 8.8 Q (*) 433.28 634.07 T 0 11 Q ( to cause speci\336c) 437.68 629.67 T (actions to occur when the) 108 616.67 T 2 F (Compiler.command) 223.17 616.67 T 0 F ( method is in) 329.12 616.67 T (v) 385.83 616.67 T (ok) 391.11 616.67 T (ed. This method has no) 402 616.67 T (prede\336ned meaning.) 108 603.67 T 3 14 Q (5.4 v) 108 570.67 T (oid \050*p_InitializeF) 139.36 570.67 T (orCompiler\051\050ClassClass *cb\051) 249.08 570.67 T 0 11 Q (The function) 108 545.67 T 2 F (InitializeForCompiler) 167.27 545.67 T 0 F ( is called during the \336nal phase of a class\325) 306.33 545.67 T (s) 489.94 545.67 T -0.1 (resolution. Ev) 108 532.67 P -0.1 (ery Ja) 169.45 532.67 P -0.1 (v) 195.09 532.67 P -0.1 (a class is resolv) 200.32 532.67 P -0.1 (ed before an) 268.59 532.67 P -0.1 (y method in it is called, an) 322.58 532.67 P -0.1 (y static v) 438.22 532.67 P -0.1 (ariable in it is) 477.46 532.67 P (accessed, and before an) 108 519.67 T (y instance of that class is created.) 211.68 519.67 T -0.4 (This function is called just after each method in the class has an \322in) 108 495.67 P -0.4 (v) 399.04 495.67 P -0.4 (ok) 404.32 495.67 P -0.4 (er\323 assigned to it, b) 415.21 495.67 P -0.4 (ut before) 498.64 495.67 P (the class has been v) 108 482.67 T (eri\336ed. Methods that already ha) 194.59 482.67 T (v) 333.98 482.67 T (e nati) 339.32 482.67 T (v) 363.18 482.67 T (e code attached to them \050see \2445.7\051,) 368.51 482.67 T (already ha) 108 469.67 T (v) 153.29 469.67 T (e been assigned the in) 158.62 469.67 T (v) 254.72 469.67 T (ok) 260 469.67 T (er) 270.89 469.67 T 2 F (InvokeCompiledMethod) 282.18 469.67 T 0 F (. The de\336nition of this) 414.62 469.67 T (function is as follo) 108 456.67 T (ws:) 189.92 456.67 T 2 10 Q (void InitializeForCompiler\050ClassClass *cb\051 {) 144 438.33 T ( if \050p_InitializeForCompiler != NULL\051) 144 426.33 T (p_InitializeForCompiler\050cb\051;) 192 414.33 T (}) 144 402.33 T 0 11 Q (The function pointed at by) 108 378.67 T 2 F (p_InitializeForCompiler) 227.46 378.67 T 0 F ( can compile or recompile some of) 379.77 378.67 T (the methods, can change the in) 108 365.67 T (v) 243.2 365.67 T (ok) 248.48 365.67 T (ers, or can modify the compiled code.) 259.37 365.67 T (One important use of this function could be to \322patch\323 precompiled code. F) 108 341.67 T (or e) 439.92 341.67 T (xample,) 456.56 341.67 T -0.05 (precompiled code might not kno) 108 328.67 P -0.05 (w the e) 250.51 328.67 P -0.05 (xact of) 282.02 328.67 P -0.05 (fsets of speci\336ed \336elds or methods of other classes.) 311.93 328.67 P (Similarly) 108 315.67 T (, the precompiled code might contains calls to runtime functions whose address is not) 148.24 315.67 T (kno) 108 302.67 T (wn at compile time.) 124.22 302.67 T 3 14 Q (5.5) 108 269.67 T (\050v) 132.5 269.67 T (oid *\051\050*p_CompilerFr) 144.02 269.67 T (eeClass\051\050ClassClass *\051) 275.59 269.67 T 0 11 Q (The function) 108 244.67 T 2 F (CompilerFreeClass\050\051) 167.27 244.67 T 0 F ( is called when a class is about to be remo) 293.09 244.67 T (v) 477.45 244.67 T (ed from the) 482.78 244.67 T (Ja) 108 231.67 T (v) 116.94 231.67 T (a V) 122.17 231.67 T (irtual Machine because there are no more references to it and no more instances of it. The) 137.08 231.67 T (de\336nition of this function is as follo) 108 218.67 T (ws:) 265.4 218.67 T 2 10 Q (void CompilerFreeClass\050ClassClass *cb\051 {) 144 200.33 T ( if \050p_CompilerFreeClass != NULL\051) 144 188.33 T (p_CompilerFreeClass\050cb\051;) 192 176.33 T (}) 144 164.33 T 0 11 Q (The function pointed at by) 108 140.67 T 2 F (p_CompilerFreeClass) 227.46 140.67 T 0 F ( should free an) 353.28 140.67 T (y resources that the) 418.18 140.67 T (compiler has set aside for this class and perform an) 108 127.67 T (y other necessary cleanup.) 332.98 127.67 T 108 90 540 110 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 98 240 98 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 612 792 C 0 10 Q 0 X 0 0 0 1 0 0 0 K ( *) 108 83.33 T (The address of) 120 83.33 T 2 F (java_lang_Compiler_command) 181.37 83.33 T 0 F ( seems to be missing from the link v) 337.89 83.33 T (ector in the) 482.74 83.33 T (JDK 1.0.2. No one seems to ha) 120 71.33 T (v) 243.95 71.33 T (e noticed its absence.) 248.8 71.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "7" 15 %%Page: "6" 16 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (6) 536 42.62 T 0 11 Q -0.27 (The function) 108 712.67 P 2 F -0.65 (java_lang_Compiler_CompilerCompileClasses) 166.73 712.67 P 0 F -0.27 ( is called whene) 438.23 712.67 P -0.27 (v) 507.71 712.67 P -0.27 (er the) 513.05 712.67 P (application calls the Ja) 108 699.67 T (v) 207.68 699.67 T (a method) 212.91 699.67 T 2 F (Compiler.compileClasses.) 256.29 699.67 T 0 F (The de\336nition of these functions is as follo) 108 675.67 T (ws:) 296.24 675.67 T 2 10 Q (long java_lang_Compiler_compileClass\050) 144 657.33 T (Hjava_lang_Compiler *this,) 216 645.33 T (Hjava_lang_Class *clazz\051 {) 216 633.33 T ( if \050clazz == NULL\051 {) 144 621.33 T (SignalError\0500, JAVAPKG "NullPointerException", 0\051;) 192 609.33 T (return FALSE;) 192 597.33 T (} else if \050p_CompilerCompileClass != NULL\051 {) 168 585.33 T (return p_CompilerCompileClass\050unhand\050clazz\051\051;) 192 573.33 T (} else {) 168 561.33 T (return FALSE;) 192 549.33 T (}) 168 537.33 T (}) 144 525.33 T (long java_lang_Compiler_compileClasses\050) 144 501.33 T (Hjava_lang_Compiler *this,) 192 489.33 T ( Hjava_lang_String *name\051 {) 192 477.33 T ( if \050name == NULL\051 {) 144 465.33 T (SignalError\0500, JAVAPKG "NullPointerException", 0\051;) 192 453.33 T (return FALSE;) 192 441.33 T ( } else if \050p_CompilercompileClasses != NULL\051 {) 144 429.33 T (return p_CompilercompileClasses\050name\051;) 192 417.33 T ( } else {) 144 405.33 T (return FALSE;) 192 393.33 T ( }) 144 381.33 T (}) 144 369.33 T 0 11 Q (Compilers should set the v) 108 333.67 T (alues of) 225.06 333.67 T 2 F (p_CompilerCompileClass) 262.33 333.67 T 0 F ( and) 408.01 333.67 T 2 F (p_CompilerCompileClasses) 108 320.67 T 0 F ( to cause more useful operations to occur when the Ja) 266.93 320.67 T (v) 501.93 320.67 T (a) 507.16 320.67 T (methods are called.) 108 307.67 T (The functions pointed at by the tw) 108 283.67 T (o v) 258.82 283.67 T (ariables should return a non-zero v) 272.3 283.67 T (alue if the) 425.06 283.67 T (y ha) 468.89 283.67 T (v) 487.3 283.67 T (e) 492.64 283.67 T (successfully compiled the class\050es\051, and zero otherwise.) 108 270.67 T 3 14 Q (5.3 JHandle *\050*) 108 237.67 T (p_CompilerCommand\051\050JHandle *\051) 205.23 237.67 T 0 11 Q (The function) 108 212.67 T 2 F (java_lang_Compiler_command\050\051) 144 193.67 T 0 F (is called whene) 108 169.67 T (v) 175.54 169.67 T (er the application calls the Ja) 180.88 169.67 T (v) 308.05 169.67 T (a method) 313.27 169.67 T 2 F (Compiler.command) 356.65 169.67 T 0 F (\050\051.) 462.61 169.67 T (The de\336nition of this function is as follo) 108 145.67 T (ws:) 285.25 145.67 T 2 10 Q (JHandle*) 144 127.33 T (java_lang_Compiler_command\050Hjava_lang_Compiler *this,) 144 115.33 T (JHandle *x\051 {) 306.14 103.33 T ( if \050x == NULL\051 {) 144 91.33 T (SignalError\0500, JAVAPKG "NullPointerException", 0\051;) 192 79.33 T (return NULL;) 192 67.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "6" 16 %%Page: "5" 17 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (5) 536 42.62 T 1 12 Q (\245) 108 712 T 0 11 Q (The address of a hook \050see \2445\051 to the compiled code. The compiler initialization can modify) 121.75 712 T (these hooks to be the address of a function in the shared library) 121.75 698.67 T (.) 399.03 698.67 T 1 12 Q (\245) 108 679 T 0 11 Q (The address of a function that the compiler or compiled code might need to call.) 121.75 679 T 1 12 Q (\245) 108 659 T 0 11 Q (The address of v) 121.75 659 T (ariables whose v) 194.48 659 T (alue the compiler may w) 267.52 659 T (ant to change.) 376.16 659 T 1 12 Q (\245) 108 639 T 0 11 Q (The address of certain important constants, such as the class structure for) 121.75 639 T 2 F (java.lang.String) 121.75 625.67 T 0 F ( or the array of all classes.) 227.7 625.67 T 3 16 Q (5 JVM Hooks in the Link V) 108 585.33 T (ector) 299.76 585.33 T 0 11 Q (There are se) 108 559.67 T (v) 161.47 559.67 T (eral entries in the link v) 166.81 559.67 T (ector that can be used by a compiler to af) 270.82 559.67 T (fect the running of) 451.7 559.67 T (the Ja) 108 546.67 T (v) 133.13 546.67 T (a V) 138.36 546.67 T (irtual Machine.) 153.28 546.67 T (Each of these entries is the address of a v) 108 522.67 T (ariable. The initial v) 288.87 522.67 T (alue of each of these v) 377.81 522.67 T (ariables is) 476.19 522.67 T (initially 0. The compiler can set one or more of these v) 108 509.67 T (ariables to be a non-zero v) 349.08 509.67 T (alue in order to) 465.18 509.67 T (cause some compiler) 108 496.67 T (-speci\336c function to be called at a speci\336c time.) 200.04 496.67 T 3 14 Q (5.1 v) 108 463.67 T (oid \050*) 139.36 463.67 T (p_CompilerEnable\051\050\051, v) 173.2 463.67 T (oid \050*p_CompilerDisable\051\050\051) 314.61 463.67 T 0 11 Q (The tw) 108 438.67 T (o functions) 138.74 438.67 T 2 F (java_lang_Compiler_enable\050\051) 144 419.67 T (java_lang_Compiler_disable\050\051) 144 406.67 T 0 F (are called whene) 108 382.67 T (v) 181.63 382.67 T (er the application calls the Ja) 186.97 382.67 T (v) 314.14 382.67 T (a methods) 319.36 382.67 T 2 F (Compiler.enable) 367.03 382.67 T 0 F (\050\051 and) 466.36 382.67 T 2 F (Compiler.disable\050\051) 108 369.67 T 0 F ( respecti) 227.2 369.67 T (v) 263.88 369.67 T (ely) 269.22 369.67 T (The de\336nition of these tw) 108 345.67 T (o functions are as follo) 220.94 345.67 T (ws:) 321.48 345.67 T 2 10 Q (void java_lang_Compiler_enable\050Hjava_lang_Compiler *this\051 {) 144 327.33 T (if \050p_CompilerEnable != NULL\051) 168 315.33 T (p_CompilerEnable\050\051;) 192 303.33 T (}) 144 291.33 T (void java_lang_Compiler_disable\050Hjava_lang_Compiler *this\051 {) 144 267.33 T (if \050p_CompilerDisable != NULL\051) 168 255.33 T (p_CompilerDisable\050\051;) 192 243.33 T (}) 144 231.33 T 0 11 Q (Compilers should set the v) 108 207.67 T (alues of the v) 225.06 207.67 T (ariables) 283.75 207.67 T 2 F (p_CompilerDisable) 320.71 207.67 T 0 F ( and) 433.28 207.67 T 2 F (p_CompilerEnable) 108 194.67 T 0 F ( to cause speci\336c actions to occur when the methods) 213.95 194.67 T 2 F (Compiler.disable) 108 181.67 T 0 F ( and) 213.95 181.67 T 2 F (Compiler.enable) 235.34 181.67 T 0 F ( are in) 334.67 181.67 T (v) 361.71 181.67 T (ok) 366.99 181.67 T (ed, respecti) 377.89 181.67 T (v) 427.7 181.67 T (ely) 433.04 181.67 T (.) 445.77 181.67 T 3 14 Q (5.2 boolean \050*p_CompilerCompileClass\051\050ClassClass *class\051) 108 148.67 T (boolean \050*p_CompilerCompileClasses\051\050Hja) 129 132.67 T (v) 388.03 132.67 T (a_lang_String *name\051) 394.89 132.67 T 0 11 Q (The function) 108 107.67 T 2 F (java_lang_Compiler_CompilerCompileClass) 167.27 107.67 T 0 F ( is called whene) 425.53 107.67 T (v) 495.82 107.67 T (er the) 501.15 107.67 T (application calls the Ja) 108 94.67 T (v) 207.68 94.67 T (a method) 212.91 94.67 T 2 F (Compiler.compileClass) 256.29 94.67 T 0 F (.) 395.35 94.67 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "5" 17 %%Page: "4" 18 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (4) 536 42.62 T 3 14 Q (4.2 Static initialize of ja) 108 710.67 T (v) 251.53 710.67 T (a.lang) 258.39 710.67 T (.Compiler) 294.35 710.67 T 0 11 Q (Loading) 108 685.67 T 2 F (java.lang.Compiler) 147.41 685.67 T 0 F ( causes the follo) 266.61 685.67 T (wing static initializer to be e) 337.52 685.67 T (x) 462.31 685.67 T (ecuted:) 467.64 685.67 T 2 10 Q (try {) 144 667.33 T (String library =) 168 655.33 T (System.getProperty\050"java.compiler"\051;) 216 643.33 T (if \050library != null\051 {) 168 631.33 T (System.loadLibrary\050library\051;) 192 619.33 T (initialize\050\051;) 192 607.33 T (}) 168 595.33 T (} catch \050Throwable e\051 {) 144 583.33 T (}) 288.48 583.33 T 0 11 Q -0.26 (If the system property) 108 559.67 P 2 F -0.64 (java.compiler) 206.54 559.67 P 0 F -0.26 ( is de\336ned and is not) 292.62 559.67 P 2 F -0.64 (null) 384.53 559.67 P 0 F -0.26 (, it is treated as the name of a) 411.02 559.67 P (shared library) 108 546.67 T (. This shared library is loaded, and then the compiler is initialized through a call to) 168.07 546.67 T (the nati) 108 533.67 T (v) 140.42 533.67 T (e method) 145.75 533.67 T 2 F (initialize) 189.14 533.67 T 0 F (.) 255.36 533.67 T -0.14 (The e) 108 509.67 P -0.14 (xact method in which system properties are de\336ned and by which shared libraries are loaded) 132.43 509.67 P (is machine dependent.) 108 496.67 T (The follo) 108 472.67 T (wing is the nati) 148.36 472.67 T (v) 215.61 472.67 T (e code that is e) 220.95 472.67 T (x) 286.16 472.67 T (ecuted by the call to the Ja) 291.49 472.67 T (v) 407.97 472.67 T (a method) 413.2 472.67 T 2 F (Compiler.initialize) 108 459.67 T 0 F (.) 233.82 459.67 T 2 10 Q (*\050void \050*\051\050void **\051\051 address = \050void *\051) 144 441.33 T (sysDynamicLink\050\322java_lang_Compiler_start\323\051;) 180.04 429.33 T (if \050address != 0\051) 144 417.33 T (address) 168 405.33 T (\050CompiledCodeLinkVector\051) 216 405.33 T (compilerInitialized = TRUE;) 144 393.33 T 0 11 Q (1.) 108 374.67 T (W) 121.75 374.67 T (e look for the address of the symbol) 131.25 374.67 T 2 F (java_lang_Compiler_start) 291.95 374.67 T 0 F ( in the shared) 450.88 374.67 T (library) 121.75 361.67 T (. The e) 150.36 361.67 T (xact method by which that address is determined is machine and implementation) 180.43 361.67 T (speci\336c.) 121.75 348.67 T (2.) 108 329.67 T -0.39 (If that symbol is found, it is presumed to be the name of an initialization function. That function) 121.75 329.67 P (is called with) 121.75 316.67 T 2 F (CompiledCodeLinkVector) 183.16 316.67 T 0 F ( \050see \2444.3, \2445, \2446\051 as its single ar) 328.84 316.67 T (gument.) 473.15 316.67 T (3.) 108 297.67 T (The v) 121.75 297.67 T (ariable) 146.82 297.67 T 2 F (compilerInitialized) 179.51 297.67 T 0 F ( is set to) 305.32 297.67 T 2 F (TRUE) 344.44 297.67 T 0 F (. If this v) 370.93 297.67 T (ariable maintains its initial) 410.37 297.67 T (v) 121.75 284.67 T (alue of) 126.97 284.67 T 2 F (FALSE) 159.96 284.67 T 0 F (, the JVM assumes that the compiler has not been initialized and sets) 193.07 284.67 T 2 F (UseLosslessQuickOpcodes) 121.75 271.67 T 0 F ( \050see \2444.1\051 to) 274.05 271.67 T 2 F (FALSE) 334.23 271.67 T 0 F ( on its o) 367.34 271.67 T (wn. If this v) 402.21 271.67 T (ariable is set to) 455.1 271.67 T 2 F (TRUE) 121.75 258.67 T 0 F (, then the compiler has been initialized, and its initialization function is responsible for) 148.23 258.67 T (setting) 121.75 245.67 T 2 F (UseLosslessQuickOpcodes) 153.83 245.67 T 0 F ( to whate) 306.14 245.67 T (v) 346.19 245.67 T (er v) 351.52 245.67 T (alue is appropriate.) 368.05 245.67 T 2 F (4.3 CompiledCodeLinkVector) 108 218.67 T 0 F (The sole ar) 108 194.67 T (gument to the compiler initialization function is a link v) 156.68 194.67 T (ector) 402.48 194.67 T (. This link v) 423.86 194.67 T (ector is an) 476.87 194.67 T (array of addresses of v) 108 181.67 T (arious functions and v) 207.3 181.67 T (ariables in the Ja) 304.48 181.67 T (v) 377.89 181.67 T (a V) 383.11 181.67 T (irtual Machine.) 398.03 181.67 T -0.17 (On some operating systems, shared libraries can access global functions and v) 108 157.67 P -0.17 (ariables that e) 449.81 157.67 P -0.17 (xist in) 510.39 157.67 P -0.34 (the main program. Ho) 108 144.67 P -0.34 (we) 203.86 144.67 P -0.34 (v) 216.41 144.67 P -0.34 (er on man) 221.74 144.67 P -0.34 (y others, shared libraries and DLL) 264.89 144.67 P -0.34 (\325) 413.09 144.67 P -0.34 (s cannot access these global) 416.14 144.67 P (functions and v) 108 131.67 T (ariables. F) 175.55 131.67 T (or this reason, the initialization routine abo) 221.21 131.67 T (v) 410.17 131.67 T (e passes the v) 415.51 131.67 T (alue) 475.41 131.67 T 2 F (CompiledCodeLinkVector) 108 118.67 T 0 F ( in Step 2. This link v) 253.68 118.67 T (ector is an array of addresses in the main) 348.56 118.67 T (program that the compiler might need.) 108 105.67 T (Each address is one of the follo) 108 81.67 T (wing:) 245.81 81.67 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "4" 18 %%Page: "3" 19 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (3) 536 42.62 T 3 14 Q (4.1 UseLosslessQuickOpcodes) 108 710.67 T 0 11 Q (In the normal e) 108 685.67 T (x) 174.74 685.67 T (ecution of the Ja) 180.07 685.67 T (v) 252.25 685.67 T (a V) 257.48 685.67 T (irtual Machine, certain byte codes are re) 272.39 685.67 T (written into ne) 448.98 685.67 T (w) 512.87 685.67 T (, so-) 520.09 685.67 T (called \322quick\323 byte codes that can be e) 108 672.67 T (x) 278.59 672.67 T (ecuted more ef) 283.92 672.67 T (\336ciently) 349.01 672.67 T (. These quick byte codes are) 384.35 672.67 T (internal to the Ja) 108 659.67 T (v) 180.8 659.67 T (a V) 186.02 659.67 T (irtual Machine and cannot normally appear in user code.) 200.94 659.67 T (F) 108 635.67 T (or e) 113.95 635.67 T (xample, Ja) 130.58 635.67 T (v) 177.41 635.67 T (a code of the form) 182.63 635.67 T 2 10 Q (String x;) 144 617.33 T (x.length\050\051;) 144 605.33 T 0 11 Q -0.11 (is compiled to something lik) 108 578.67 S -0.11 (e) 230.1 578.67 S 5 10 Q (0) 144 565.33 T (invokevirtual #4) 168 565.33 T (// Method) 264 565.33 T 2 F (String.length\050\051I) 306.02 565.33 T 0 11 Q (where, for e) 108 541.67 T (xample, inde) 160.67 541.67 T (x 4 into the constant pool of the current class is a symbolic reference to) 217.33 541.67 T -0.33 (the method) 108 528.67 P 2 F -0.79 (String.length) 159.29 528.67 P 0 F -0.33 (. Ho) 245.37 528.67 P -0.33 (we) 263.71 528.67 P -0.33 (v) 276.26 528.67 P -0.33 (er) 281.6 528.67 P -0.33 (, after the \336rst e) 289.7 528.67 P -0.33 (x) 357.57 528.67 P -0.33 (ecution of this instruction, it is re) 362.91 528.67 P -0.33 (written) 506.42 528.67 P (into) 108 515.67 T 5 10 Q (0) 144 497.33 T (invokevirtual_quick 3 1) 168 497.33 T 0 11 Q (This re) 108 473.67 T (write indicates se) 138.58 473.67 T (v) 214.68 473.67 T (eral things:) 220.01 473.67 T 1 12 Q (\245) 108 454 T 0 11 Q (that the) 121.75 454 T 2 F (String) 157.19 454 T 0 F ( class does in f) 196.92 454 T (act ha) 261.58 454 T (v) 287.32 454 T (e a) 292.65 454 T 2 F (length\050\051) 307.92 454 T 0 F ( method,) 360.89 454 T 1 12 Q (\245) 108 434 T 0 11 Q (the current method is entitled to call the) 121.75 434 T 2 F (length\050\051) 299.56 434 T 0 F ( method) 352.54 434 T 1 12 Q (\245) 108 414 T 0 11 Q (that in) 121.75 414 T 2 F (String) 152.3 414 T 0 F ( or an) 192.04 414 T (y subclass of) 216.92 414 T 2 F (String) 276.49 414 T 0 F (, the) 316.22 414 T 2 F (length\050\051) 337.92 414 T 0 F ( method must al) 390.89 414 T (w) 461.37 414 T (ays be the third) 469.2 414 T (item in the class\325) 121.75 400.67 T (s method table.) 195.99 400.67 T 1 12 Q (\245) 108 381 T 0 11 Q (that) 121.75 381 T 2 F (String.length\050\051) 140.99 381 T 0 F ( has a total ar) 240.32 381 T (gument length of 1, including the \322this\323 ar) 298.78 381 T (gument.) 484.95 381 T -0.09 (Future e) 108 356.67 P -0.09 (x) 144.1 356.67 P -0.09 (ecution of this code can grab the \322this\323 ar) 149.43 356.67 P -0.09 (gument of) 331.19 356.67 P -0.09 (f the stack, \336nd its method table, and) 375.74 356.67 P (get the third method in that method table. No other checks are necessary) 108 343.67 T (. This ne) 425.31 343.67 T (w instruction is) 463.22 343.67 T (much f) 108 330.67 T (aster) 138.74 330.67 T (.) 158.91 330.67 T (Ho) 108 306.67 T (we) 121.17 306.67 T (v) 133.72 306.67 T (er the kno) 139.05 306.67 T (wledge that the code is calling the speci\336c method) 182.77 306.67 T 2 F (String.length\050\051) 407.32 306.67 T 0 F ( has) 506.65 306.67 T (been lost. Just in time compilers that w) 108 293.67 T (ant to perform code inlining or other such optimizations) 279.61 293.67 T (w) 108 280.67 T (ould be unable to determine what speci\336c methods were intended to be called.) 115.83 280.67 T -0.22 (Setting the C v) 108 256.67 P -0.22 (ariable) 172.78 256.67 P 2 F -0.52 (UseLosslessQuickOpcodes) 205.24 256.67 P 0 F -0.22 ( to) 357.55 256.67 P 2 F -0.52 (TRUE) 371.17 256.67 P 0 F -0.22 ( forces the Ja) 397.66 256.67 P -0.22 (v) 454.52 256.67 P -0.22 (a V) 459.74 256.67 P -0.22 (irtual machine) 474.44 256.67 P (to be v) 108 243.67 T (ery restricti) 137.78 243.67 T (v) 187.9 243.67 T (e about the sorts of re) 193.24 243.67 T (writes that it does. If this v) 287.97 243.67 T (ariable is) 405.33 243.67 T 2 F (TRUE) 448.1 243.67 T 0 F (, the JVM) 474.59 243.67 T (performs special re) 108 230.67 T (writes for which no information is lost. In particular:) 192.03 230.67 T 1 12 Q (\245) 108 211 T 0 11 Q -0.58 (All) 121.75 211 P 2 F -1.41 (opc_invokevirtual) 137.97 211 P 0 F -0.58 ( byte codes are con) 250.54 211 P -0.58 (v) 332.07 211 P -0.58 (erted to) 337.4 211 P 2 F -1.41 (opc_invokevirtual_quick_w) 372.28 211 P 0 F (byte codes. Normally) 121.75 197.67 T (, this instruction can turn into either) 215.43 197.67 T 2 F (opc_invokevirtual_quick) 375.54 197.67 T 0 F (,) 527.84 197.67 T 2 F (opc_invokevirtualobject_quick) 121.75 184.67 T 0 F (, or) 313.78 184.67 T 2 F (opc_invokevirtual_quick_w) 331.2 184.67 T 1 12 Q (\245) 108 165 T 0 11 Q (All) 121.75 165 T 2 F (opc_getfield) 138.55 165 T 0 F ( are con) 218.02 165 T (v) 252.39 165 T (erted into) 257.73 165 T 2 F (opc_getfield_quick_w) 302.33 165 T 0 F ( byte codes. Normally) 434.77 165 T (,) 531.21 165 T -0.47 (this instruction can turn into either) 121.75 151.67 P 2 F -1.14 (opc_getfield_quick) 273.5 151.67 P 0 F -0.47 (,) 392.69 151.67 P 2 F -1.14 (opc_getfield2_quick) 397.72 151.67 P 0 F -0.47 (, or) 523.54 151.67 P 2 F (opc_getfield_quick_w) 121.75 138.67 T 0 F (.) 253.47 138.67 T 1 12 Q (\245) 108 119 T 0 11 Q (All) 121.75 119 T 2 F (opc_putfield) 138.55 119 T 0 F ( are con) 218.02 119 T (v) 252.39 119 T (erted into) 257.73 119 T 2 F (opc_putfield_quick_w) 302.33 119 T 0 F ( byte codes. Normally) 434.77 119 T (,) 531.21 119 T -0.47 (this instruction can turn into either) 121.75 105.67 P 2 F -1.14 (opc_putfield_quick) 273.5 105.67 P 0 F -0.47 (,) 392.69 105.67 P 2 F -1.14 (opc_putfield2_quick) 397.72 105.67 P 0 F -0.47 (, or) 523.54 105.67 P 2 F (opc_putfield_quick_w) 121.75 92.67 T 0 F (.) 253.47 92.67 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "3" 19 %%Page: "2" 20 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (2) 536 42.62 T 0 11 Q (By def) 108 712.67 T (ault, all the methods in this class ef) 137.52 712.67 T (fecti) 291.85 712.67 T (v) 311.13 712.67 T (ely do nothing. Ho) 316.46 712.67 T (we) 398.69 712.67 T (v) 411.24 712.67 T (er as part of the compiler) 416.57 712.67 T (initialization step abo) 108 699.67 T (v) 202.56 699.67 T (e, these methods can be modi\336ed to actually do useful w) 207.89 699.67 T (ork) 456.78 699.67 T (Here are the methods in) 108 675.67 T 2 F (java.lang.Compiler) 215.83 675.67 T 0 F ( and their intended meaning.) 335.03 675.67 T 1 12 Q (\245) 108 656 T 2 11 Q (public static void disable\050\051) 121.75 656 T 0 F (.) 307.16 656 T -0.32 (Disable the compiler) 121.75 638.67 P -0.32 (. The compiler is enabled by def) 212.15 638.67 P -0.32 (ault. The implementation of this method is) 352.18 638.67 P (described more fully in \2445.1.) 121.75 625.67 T 1 12 Q (\245) 108 606 T 2 11 Q (public static void enable\050\051) 121.75 606 T 0 F (Enable the compiler if it has been disabled. The implementation of this method is described) 121.75 588.67 T (more fully in \2445.1.) 121.75 575.67 T 1 12 Q (\245) 108 556 T 2 11 Q (public static boolean compileClass\050Class clazz\051) 121.75 556 T 0 F (Compile the indicated class. Return) 121.75 538.67 T 2 F (true) 281.23 538.67 T 0 F ( if successful,) 307.72 538.67 T 2 F (false) 370.65 538.67 T 0 F ( otherwise. The) 403.76 538.67 T (implementation of this method is described more fully in \2445.2. The) 121.75 525.67 T 2 F (clazz) 419.65 525.67 T 0 F ( ar) 452.76 525.67 T (gument is an) 463.86 525.67 T (instance of) 121.75 512.67 T 2 F (java.lang.Class) 172.46 512.67 T 0 F (representing a class in the running Ja) 278.41 512.67 T (v) 440.71 512.67 T (a application.) 445.94 512.67 T 1 12 Q (\245) 108 493 T 2 11 Q (public static boolean compileClasses\050String string\051) 121.75 493 T 0 F (Compile all classes whose names ha) 121.75 475.67 T (v) 281.31 475.67 T (e the indicated pattern. Return) 286.65 475.67 T 2 F (true) 422.29 475.67 T 0 F ( if successful,) 448.77 475.67 T 2 F (false) 121.75 462.67 T 0 F ( otherwise. The implementation of this method is described more fully in \2445.2.) 154.85 462.67 T 1 12 Q (\245) 108 443 T 2 11 Q (public static Object command\050Object any\051) 121.75 443 T 0 F (This method has no prede\336ned meaning.) 121.75 425.67 T 3 16 Q (3 Additional structur) 108 385.33 T (es) 256.61 385.33 T 0 11 Q (Ev) 108 359.67 T (ery method in the JVM has a runtime structure associated with it called the) 120.06 359.67 T 4 F (method bloc) 452.45 359.67 T (k) 506.31 359.67 T 0 F (. This) 511.19 359.67 T (method block includes the follo) 108 346.67 T (wing three \336elds:) 247.05 346.67 T 2 10 Q (void) 144 328.33 T (*CompiledCode;) 192 328.33 T (void) 144 316.33 T (*CompiledCodeInfo;) 192 316.33 T (long) 144 304.33 T ( CompiledCodeFlags;) 192 304.33 T 0 11 Q (These \336elds are ne) 108 280.67 T (v) 189.9 280.67 T (er used by the Ja) 195.23 280.67 T (v) 268.33 280.67 T (a V) 273.55 280.67 T (irtual Machine. Compiler implementors are free to use) 288.47 280.67 T (these \336elds ho) 108 267.67 T (we) 170.67 267.67 T (v) 183.22 267.67 T (er the) 188.55 267.67 T (y wish.) 213.13 267.67 T 3 16 Q (4 Start-up) 108 227.33 T 0 11 Q (There are three actions that the JVM performs in order to initialize an) 108 201.67 T (y compiler) 413.93 201.67 T (.) 460.68 201.67 T (1.) 108 182.67 T -0.08 (Before e) 121.75 182.67 P -0.08 (x) 159.06 182.67 P -0.08 (ecuting an) 164.4 182.67 P -0.08 (y Ja) 209.67 182.67 P -0.08 (v) 226.78 182.67 P -0.08 (a code, set the C v) 232 182.67 P -0.08 (ariable) 311.96 182.67 P 2 F -0.2 (UseLosslessQuickOpcodes) 344.56 182.67 P 0 F -0.08 ( to) 496.87 182.67 P 2 F -0.2 (TRUE) 510.76 182.67 P 0 F -0.08 (.) 537.25 182.67 P (2.) 108 163.67 T (Load in the class) 121.75 163.67 T 2 F (java.lang.Compiler) 198.73 163.67 T 0 F ( using the normal class loading mechanism. This) 317.93 163.67 T (action causes this class\325) 121.75 150.67 T (s static initializer to e) 225.93 150.67 T (x) 319.87 150.67 T (ecute. See \2444.2 for more details.) 325.2 150.67 T (3.) 108 131.67 T (If the compiler class could not be found, or if the compiler f) 121.75 131.67 T (ails to initialize \050see \2444.2\051, the C) 385.28 131.67 T (v) 121.75 118.67 T (ariable) 126.97 118.67 T 2 F (UseLosslessQuickOpcodes) 159.65 118.67 T 0 F ( is reset to) 311.96 118.67 T 2 F (FALSE) 359.62 118.67 T 0 F (.) 392.73 118.67 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "2" 20 %%Page: "1" 21 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 108 54 540 54 2 L 0.25 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 8 Q (The Ja) 108 42.62 T (v) 128.94 42.62 T (a Nati) 132.74 42.62 T (v) 151.87 42.62 T (e Code API) 155.75 42.62 T (July 30, 1996) 302.33 42.62 T (1) 536 42.62 T 0 24 Q (The Ja) 196.38 704 T (v) 259.21 704 T (a Nati) 270.61 704 T (v) 328 704 T (e Code API) 339.64 704 T 3 14 Q (Frank Y) 286.47 662.67 T (ellin) 335.86 662.67 T 3 16 Q (1 Summary) 108 618.33 T 0 11 Q (The Ja) 108 592.67 T (v) 136.8 592.67 T (a Nati) 142.02 592.67 T (v) 168.32 592.67 T (e Code API is intended for all programmers intending to write nati) 173.66 592.67 T (v) 466.38 592.67 T (e code) 471.71 592.67 T (generators or other utilities that run inside the Ja) 108 579.67 T (v) 320.42 579.67 T (a V) 325.65 579.67 T (irtual machine.) 340.56 579.67 T -0.04 (The Ja) 108 555.67 P -0.04 (v) 136.76 555.67 P -0.04 (a Nati) 141.98 555.67 P -0.04 (v) 168.24 555.67 P -0.04 (e Code API is intended to support se) 173.57 555.67 P -0.04 (v) 334.02 555.67 P -0.04 (eral dif) 339.36 555.67 P -0.04 (ferent styles of nati) 370.5 555.67 P -0.04 (v) 454.72 555.67 P -0.04 (e code generators:) 460.06 555.67 P 1 12 Q (\245) 108 536 T 3 11 Q (Ahead-of-time r) 121.75 536 T (ecompilers) 197 536 T 0 F (. This some of compiler re) 247.71 536 T (writes a ja) 363.52 536 T (v) 408.51 536 T (a class \336le into a so called) 413.74 536 T (\322f) 121.75 522.67 T (at\323 class \336le. This f) 130.18 522.67 T (at class \336le must gi) 215.31 522.67 T (v) 299.37 522.67 T (e both the original byte-code de\336nition of all of the) 304.71 522.67 T -0.26 (methods, and can also gi) 121.75 509.67 P -0.26 (v) 228.9 509.67 P -0.26 (e one or more alternati) 234.24 509.67 P -0.26 (v) 332.52 509.67 P -0.26 (e nati) 337.86 509.67 P -0.26 (v) 361.46 509.67 P -0.26 (e-machine code de\336nitions for some of) 366.79 509.67 P (the methods. The \322f) 121.75 496.67 T (at\323 class \336le can easily accommodate nati) 209.01 496.67 T (v) 392.03 496.67 T (e-machine code de\336nitions for) 397.36 496.67 T (se) 121.75 483.67 T (v) 130.63 483.67 T (eral machine architectures, simultaneously) 135.97 483.67 T (.) 322.83 483.67 T 1 12 Q (\245) 108 464 T 3 11 Q (Ahead-of-time compiler) 121.75 464 T 0 F (: This sort of compiler con) 233.86 464 T (v) 350.43 464 T (erts Ja) 355.77 464 T (v) 383.35 464 T (a \050or other language\051 source code) 388.57 464 T (into a \322f) 121.75 450.67 T (at\323 class \336le. Ag) 157.68 450.67 T (ain, the f) 230.34 450.67 T (at class \336le must gi) 269.02 450.67 T (v) 353.09 450.67 T (e both byte-code de\336nitions of all the) 358.42 450.67 T -0.26 (methods, and can also gi) 121.75 437.67 P -0.26 (v) 228.9 437.67 P -0.26 (e one or more alternati) 234.24 437.67 P -0.26 (v) 332.52 437.67 P -0.26 (e nati) 337.86 437.67 P -0.26 (v) 361.46 437.67 P -0.26 (e-machine code de\336nitions for some of) 366.79 437.67 P (the methods. Compilers can often produce better code than recompilers, since the) 121.75 424.67 T (y can kno) 479.93 424.67 T (w) 522.42 424.67 T (the original \322intent\323 of the programmer) 121.75 411.67 T (.) 294.36 411.67 T 1 12 Q (\245) 108 392 T 3 11 Q -0.15 (J) 121.75 392 P -0.15 (ust In T) 127.08 392 P -0.15 (ime Code Generators) 163.88 392 P 0 F -0.15 (: A JIT code generator is intended to run concurrently with the) 263.78 392 P -0.31 (e) 121.75 378.67 P -0.31 (x) 126.46 378.67 P -0.31 (ecution of the Ja) 131.8 378.67 P -0.31 (v) 203.06 378.67 P -0.31 (a V) 208.29 378.67 P -0.31 (irtual Machine. The JIT code generator should) 222.9 378.67 P -0.31 (determine those methods) 428.18 378.67 P -0.31 (that are called most often, and generate machine code for them on-the-\337y) 121.75 365.67 P -0.31 (. A JIT code generator) 440.16 365.67 P (can mak) 121.75 352.67 T (e use of speci\336c hardw) 158.6 352.67 T (are or coprocessors running in the current en) 259.29 352.67 T (vironment.) 455.27 352.67 T (Although this API is intended for use with compilers and code generators generating nati) 108 328.67 T (v) 499.7 328.67 T (e code,) 505.03 328.67 T (this API can easily be e) 108 315.67 T (xtended by v) 211.4 315.67 T (endors to be used for other purposes. This API pro) 268.06 315.67 T (vides) 490.3 315.67 T (con) 108 302.67 T (v) 123.44 302.67 T (enient hooks so that v) 128.78 302.67 T (endor) 224.56 302.67 T (-written code can be e) 249.38 302.67 T (x) 346.35 302.67 T (ecuted within the JVM. Ho) 351.68 302.67 T (we) 470.87 302.67 T (v) 483.42 302.67 T (er for) 488.75 302.67 T (con) 108 289.67 T (v) 123.44 289.67 T (enience, we call an) 128.78 289.67 T (y v) 212.3 289.67 T (endor) 225.89 289.67 T (-written code a) 250.71 289.67 T 4 F (compiler) 319.44 289.67 T 0 F (if it conforms to this Nati) 361.3 289.67 T (v) 472.55 289.67 T (e Code API.) 477.89 289.67 T -0.05 (Note that in all cases, it is assumed that there is some sort of e) 108 265.67 P -0.05 (xternal \322shared\323 library that is to be) 379.97 265.67 P (link) 108 252.67 T (ed in to the Ja) 125.01 252.67 T (v) 185.89 252.67 T (a V) 191.12 252.67 T (irtual Machine. F) 206.03 252.67 T (or ahead-of-time compilers, this library must include) 281.94 252.67 T (routines to read in the compiled code and to patch it up. F) 108 239.67 T (or just-in-time compilers, this library) 361.73 239.67 T (must be able to compile JVM byte codes on the \337y) 108 226.67 T (.) 330.94 226.67 T (It is assumed that readers of this document are f) 108 202.67 T (amiliar with the Ja) 318.38 202.67 T (v) 399.73 202.67 T (a language and with the Ja) 404.96 202.67 T (v) 521.13 202.67 T (a) 526.35 202.67 T (V) 108 189.67 T (irtual Machine. Additional information on the virtual machine can be found in) 115.28 189.67 T 4 F (The J) 462.05 189.67 T (ava V) 485.8 189.67 T (irtual) 510.34 189.67 T (Mac) 108 176.67 T (hine) 127.38 176.67 T 0 F ( by T) 146.32 176.67 T (im Lindholm and Frank Y) 169.16 176.67 T (ellin) 283.56 176.67 T 3 16 Q (2 The class ja) 108 136.33 T (v) 203.6 136.33 T (a.lang) 211.44 136.33 T (.Compiler) 252.54 136.33 T 0 11 Q (The class) 108 110.67 T 2 F (java.lang.Compiler) 151.99 110.67 T 0 F ( is the principal application interf) 271.18 110.67 T (ace to the nati) 417.42 110.67 T (v) 478.55 110.67 T (e code API.) 483.88 110.67 T (This class is responsible for both determining if a compiler is a) 108 97.67 T (v) 384.89 97.67 T (ailable, and if so initializing it. In) 390.12 97.67 T (addition, this class contains se) 108 84.67 T (v) 240.64 84.67 T (eral methods by which the application can pass information to the) 245.97 84.67 T (compiler) 108 71.67 T (.) 146.5 71.67 T FMENDPAGE %%EndPage: "1" 21 %%Trailer %%BoundingBox: 0 0 612 792 %%PageOrder: Descend %%Pages: 21 %%DocumentFonts: Times-Roman %%+ Courier-Bold %%+ LucidaSans-Typewriter %%+ Times-Bold %%+ Times-Italic %%+ Palatino-Italic %%+ LucidaSans-TypewriterOblique %%+ Helvetica-Oblique %%EOF .