From 0a32f469ac256a842ac1f721c37dab7ad2cf5e21 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 1 Feb 2007 20:34:08 +0000 Subject: [PATCH] Calendar.java: Implement Comparable. * java/util/Calendar.java: Implement Comparable. Update comments. (clear): Call complete. (setTimeZone): Call computeTime, computeFields. (compareTo): New method. * java/nio/charset/Charset.java: Implement Comparable. (availableCharsets): Genericized. (aliases): Likewise. (compareTo): Changed argument type. * java/lang/ClassLoader.java (loadClass): Genericized. (findClass): Likewise. (defineClass): Likewise. (resolveClass): Likewise. (findSystemClass): Likewise. (setSigners): Likewise. (findLoadedClass): Likewise. (getResources): Likewise. (findResources): Likewise. (getSystemResources): Likewise. (checkInitialized): New method. * java/lang/Class.java (getCanonicalName): New method. From-SVN: r121471 --- libjava/ChangeLog | 24 +++++++ libjava/classpath/lib/java/lang/Class.class | Bin 14910 -> 15250 bytes .../lang/ClassLoader$AnnotationsKey.class | Bin 1160 -> 1160 bytes .../classpath/lib/java/lang/ClassLoader.class | Bin 11741 -> 12510 bytes .../lib/java/nio/charset/Charset.class | Bin 7400 -> 7948 bytes .../classpath/lib/java/util/Calendar.class | Bin 13449 -> 13907 bytes libjava/java/lang/Class.java | 55 ++++++++++++++- libjava/java/lang/ClassLoader.java | 64 +++++++++++------- libjava/java/lang/Thread.h | 2 +- libjava/java/nio/charset/Charset.java | 30 ++++---- libjava/java/util/Calendar.java | 64 ++++++++++++++++-- 11 files changed, 193 insertions(+), 46 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 52598e5a2c5..a19a97c57ae 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,27 @@ +2007-02-01 Tom Tromey + + * java/util/Calendar.java: Implement Comparable. Update + comments. + (clear): Call complete. + (setTimeZone): Call computeTime, computeFields. + (compareTo): New method. + * java/nio/charset/Charset.java: Implement Comparable. + (availableCharsets): Genericized. + (aliases): Likewise. + (compareTo): Changed argument type. + * java/lang/ClassLoader.java (loadClass): Genericized. + (findClass): Likewise. + (defineClass): Likewise. + (resolveClass): Likewise. + (findSystemClass): Likewise. + (setSigners): Likewise. + (findLoadedClass): Likewise. + (getResources): Likewise. + (findResources): Likewise. + (getSystemResources): Likewise. + (checkInitialized): New method. + * java/lang/Class.java (getCanonicalName): New method. + 2007-01-31 Keith Seitz * include/jvmti-int.h (JVMTI): Declare member "enabled". diff --git a/libjava/classpath/lib/java/lang/Class.class b/libjava/classpath/lib/java/lang/Class.class index 13b56116d94068cf6873523832537d2c03aa7973..7dbfdcee51d3cc64d56e2c485d89a80df5fbc72f 100644 GIT binary patch delta 650 zcmY*XJ#Q0H5S(3Sfm{x3Vq&1eMiGR&d|(oDI3_VtT9Xi(2#Mxmogxc=AZ&@!4Zk3+ z%s)U%;RxkS2&6(mqM%2jq@$n$K@+j>Y!PwA+tu#u%eL8-72q4S%cC9bz zHX*SUv{w9jqh2Zd)m6V1SRkIV`5N|3=Gg2~oN%_%ydTsygJ&yMzu7dM85`SJGufO? zy90FA=354BSDK}U@xG6Dpv7E!JGnizuHHhZ1#=_gd^Y-Ea^z07A? zfBoX>t5jQEfDl*5-w*?9tU4j}yO`9l7xMLzdxT2|`0>bngP(o;Nz#W9$01SA3He4B zu7>F$?#h3-cZ$>I>v%}>LX@SnZfj+Lx~P$Olzt6Y-h|$d z**W3#IahK&;!Ny4{VusZtqp9AV?=GOLF55OWgX|_VI-Xz%nhXlV|+)62q%IG?WrI! zdn#y>2|BM+8O@pV(LaAYsRd)ecHEE`k02vEv7LY7r;KwccfRIxGj~Dy9gtoXk$D7B P)Ta~CEk)<@ki7U8`jB^I delta 269 zcmbPKzORJq)W2Q(7#J7~nT$7b-BjSc%&v10|O(27*GWdkY->IU=U#t2MRGUX)t~R z@)?;#83h@b7!-kQCMGQgejptKn* diff --git a/libjava/classpath/lib/java/lang/ClassLoader$AnnotationsKey.class b/libjava/classpath/lib/java/lang/ClassLoader$AnnotationsKey.class index 5f0b96d7acfdc3550c9addb23717ae75511c02fb..03de2da433497001e6c4ba1c6614d303d34d6d47 100644 GIT binary patch delta 87 zcmeC+?BLw+jEVIk13SaI$*-Bh6t^+3FzjaFWZ1*N$FP?{gkc|pB*T6N1%?9*sz6$U r;o#&X<|(2_8CV&PF$gdmXOLz%!Jx))lEH-G*ko>&0LF8ZV_0+mAY2zs delta 87 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

8Z z%ApnsY8|ZVLL{p7NL3dzkA@-HNRP>v5JTpxKHPkdi8hkeTrP@u){|V7SM5E7VP2N; z3D`Xs9AlmvlrXUB*+U_oT$4`g_%lKqdg$iS~N7xQ-gV||2*zdH;6ivr`)G|;l>JgSkRG%>tU44dGK8tL1J4W$1THS%M>P}4J zakBaxrmMR!m&Zlw9z(Nb%$XU-^VSf{8_&@lT!yk98t6{8WX&|tU2Ms>NCVx?7Qb)9 zY<`DLZV+tU!|nRjN!j38|G|*6zFan;;f4-# zqB6)PN8y?hmcdkVu%A1Vf>C_e84rk!KF56SOe%LKl{=Hlok=~+u^&Y#j}z55jX0wn zsw^I7Su9TOPzFKSq4HvuCVwsnD#@++;eHBNOCk{x-WTXW1$92j!FRAfO5N5=KV{~L z@>_(q)c6i~4_wEa=J?bS)pwwmwtCePImwn-QIc12jF}$iQ*#1t^%#oO_nGAfxJ*5X zDe6ay(FF~&8ygHMAHKfW&a@esF$l)rrAihV)XbyXWo^T+j;udTYhYbZKUsZ8A zZY89ZmVGi8GuGmE6?b5ZFe!~3aI1>1VH-i|@`M(7`@;lXY1wsV+=aUpd|h-aHl4sd z;tr+1fso!3=WlTABoe(1xb&qNPud_K8z@ch+0#= zZWK?5c2h0w7lS5y;ux%EjA2~GAsiM*O?g>kcuK`jP)X2-d>c6Q7=EVWX&ezc^DKH+ zxXro7XYg}b&|iplbI$;w=zM83!j^c$mmsUwEsOAyikI;`!RYPj4X#t-K2I<+i@|WH)fetE;;b;MCoTU}@i)A0!oP7&!AFDwQIS{>ui|4& zh`hvVGZE<&;`Ygv-H;sehMW8y0j{S?dWsht6Iax+i=vW|;tAG(|5|^Kr?*$itC1Dp z>0q79AZC>k@IE0v=;avFlBnVX{6nE+k(1;wCXt0{pj2_pl%ZdyP?}hg^kBY?>^fv8V$=^Uk+kW)BCcUd!2M>AEbp;=;UN>zP)Al&8UW5CEQ z*VV`z$a%L)v!#X%-nD(6?vOOqs&s{9J0)sr?(_$O-bPQzE5=eB#&95dyhxx4yaiE{ zO4T%7*ev#P!j+SH|C;tS-j1+)lBF@w)61kXxzUa@$V6-1qQ)|lY@*w;a_TkEV=;{Q z98@etGOmRc%V6iR2yJlUI#l9%%)oNY#uvngmUH#15RcU`p%ba_Aros*h%ccE-I$9W zG$DYi`SAHHg1jb#E`<574_mPgJ9zGX^oyD)4;S6e5w^h0hf)f*v!3rp8tz3FcEZ6v z`4~h29uoSrW%P)+KCR7qfb%?vB<{v3IE)NDi99?do=poEJ;yUIa`rEAq~jdr6^?R( zBfQE8UPCE=Ps2&kZk;s{$NK|u=;auo>CiC}AhaKA+x8$df*Tf$qCJ8QEknp~J%O8v zccO*P@(4Eb|81>oyOXeM;;m8mT6FV3M~G+}6rwZOI#( z<7mL{8XufE<{ZWLVcu7V%lJ8mF#&Hf6L0W|beh@!19EW&W&B=^w^75L=*C&*^bt#T-1LT&ziA{6W|u(`CcC5c(kW}YZUh{a6SzSqx((- z4<1Hmi)*-b6h9bdA0VAeHt;ArOUyZ(Gw=}%I0rM&reOkBB4m&rnPk#%rL(Vrb@5}3 zA1i+i<1r3pX03I{wm-n>$n6*H!JZ?yDz$SIdl&4-Slb8=a1E1OPOT^r9Bk#cJNZD~ zHSvxsf+r86^KtBP@v;bh+B$?pUiD0ya|A~Zu}x-dVAASvKH&=H1T+N(%799lNTV!H z)`kKeU1Y~ha-fcKQBV1}nhG@ll1Y^tN3tv-mc#l>{E9=@v+|$AF*aJ{1ukCCEF37) zmT-;O8qc~d)@GCOJmZUM_63dbM>(jT=Vm$gBL4`KQM@=TU&rU}$MLr85&U|gu678P za%pt1HeYMqtRqME;KaM-qxj85*%ffhgDRjvl87s8*7APf!!n{uyNRC^aAD$sXlNPk4uW13dC^ zu8n*_u@`ZNY!feMJRteUlD@#H0(q65E3|>>-o# zI=pZ{CAF20P|6_=3smq4J|&i5F_#mxoS9q!BdtU#eUU}H0y)%GiD95Ie*6y*qqJ?UB>v@BUGfpbnb&A3eypxatYJHFe^SCW+94ASwS7|Qjj>P`n#(`wn(T$O^FFDxdl=yk zq|?2Va>%@pLnhTxy_Q2mRP)R4o3uf!b5rUWZ(}UOvKU@2>tRrYuKXXc>?S2GDT!l= M%jZ?mmZ$mu0m5gpB>(^b delta 2786 zcmai03v^V~72PM3%$rPJJ~L$Uo0>E`Od??>%nTT) z7_d;a#kP3GTC5dnZN#FDD3f6LSzD>LQow4}7PV48r3kdPwUt8LZxRTu)wQ~^^6q{2 zp3gq}?0esAss6Ci`qHIm4+0o3)lXSJN-$~YQ1#|4b4W)R5!G&T4$vN-xH)Y zxB5b1e`H)oD7dC=xj$sZ_c2Ywc5cNGwEF@rWesb?5&udnet;ipcu3_YX2d@%C|1X8 z=_)nN?2Q@Kw)?{2$%fHR9Y4ZGK~lhf>+C={;tMqUt@ts1qTx}sKCwva78HyrsZ$#g z-SLw(>{2f#&Z&4(M-p@^day^sQvz2@V0Bru5wyb>X)SB;ht{+;`)Bx?Nd*ae8qcU1 z)@n~wkU7j%U0YyDl?9mU9!N63U&uc{NH94TuaxOhF5^|Ntz3ER zPL>sJtqm?`%e``qE)xt5nEk6(``W|CQl&1}8LX!bF3oNU1VjE>U)V3OM1l>GP+Ooy z1??_%!ah;5m1V@zvGs_@JXml8bTl9p^WngaaB(cgLU_=GGAzObdr!25k@t20$~qulGNpnZKea>ib^zb@XB9ZwJA zvAL1UF_%-D;>6`WxO3o`r*8@F>0#bDjO6ngB=h+$uZvS;{5|CHyp(WWfxmF?G$!K= zxjaiA&ymM7Wc)PQ`Xbv3|wKI^T>-2qsWjI z%NZla0J}rk(bHwWzYh=0@w@<=rwbyOTeR!mYHb4fMeryPFF0%rk!pzfX zgbyhR4||a61k^#cqbOQXcI?>GuRb|aZi&o_B`@ykP8GXS@l zQH7~j5RW5E5F54g)wgP2~MZp4gSCyOYtkb z$j~*^>r41G*KD!x)|T9&uF)|Mox7l-ipjIFn~L8I75X4!#dB?v=NS|nfwl)P_ZZWI zQ~Ghd$=Qon=9;RzVJkHj-Bi?Tjhjs3cJ3TFU)qP?4~wOc2NY5YO~xWg%6VChM~);{ zAWyykk5r&SCaCo}1&%-9kEGVcHk42aCgM2BZ!EDESN;#I#_n4~SSvZkspHvMv#Mj3 zMk9x-GG=e%9opFNC!X0s9o5susNF^UdG>ds`15uu$(Vn@xe7QlDr-sn7vYrJtJ1p$ zsfrg${WQRl_i1e8cY)!AlHZ~ZI1A)U>TRc^i&ynf!iQOsi58Vi;yi*Jk0*-1@4-K! z_|$j`KZMS1BpJI=F*O>aH!9|yx&2~kD(w~Pp%~tAyf%}G-8hG%*jLCRQo9%ySpvJ< zL^Ur)u6z}v#7E17W|WIxb+|LDQzeZ7$_*({R&gZbyx51ZRq@@REYaiblMzwL9&Vr6 z$SNz;%dX6%93Bkek1F2%>YU4YvpWVnFZL|j3-=&=cT`3h@ZE$z=KsTAL-?J9zn1XV z5q>A(-$wYi6aEIGzr#S^-MF0&+fFMaQ2Q;AK5*Aol5==HCT8mby zwXGr^wRj&@s#2sV3reYYTWxJUv1+|GpV}bLqIIMW;kN5`M~J z8l+oeUE^A!-LXhKc1C1TJnE+aQ+{TAO}wi!>UIQEQ#7NRt`#dI-O|Hk)iqZ$aXr(3 zny${CM5Hq@HxloSTEIq3c6(iQv(%Z%*U;41I#USXb>`L89k;M)`oh!z3mj5y>46Zy zuB~pZlSw{Is;zF9Il7-I$0JiLAXutNILRbGfP14f^ZG`2vh+b(UvXO=yFSyDi>CQajdkEKy``>I zMh#>N*0!`7Eg=k=USBu6c419ZTcaM7Cyd(~v8b#E{!;O`w$-)hTK2rU+D5M)Xr0;C z>^5gjZ?4zSjz2Os|{P>{fjZ)y*|CMeI4v^|P^g4Z`1^)z(<2 zi`lYlb=!=#mR6?hmby8ubq&+%ngOAyrnO1e0*y^`y~aRoU5!@_0&`tWy*pS{H!!I= z_{mxli^doCfLZ_p@x^*tq6s19W3@zV1z)si(eky7amodC}8X z#$z3^1ooq8$&wxcHMmE6!rW+gPpqr6sk0@~9gVDj|MY2ZtFQIF{eHs%kG{0vBJAg) z-p zIv1L+=~@h5k1^$CH0muIq-C_+p*StU=1tbqvf;&@4lSgU{j`#4pcx+k!cX0Of=_B| z`~;=C!AA$B*;;sEcA7>I8qGQ~id@0(1t{Qh}H9*9swK5Rykd7Icd>-OVs?D4GW1~sfV$@GyKB-ZC0tfnjCRlXf00A?| zs*qrT`o+S>2pnj-1RGG{1`be{3FSr!P(PR9M&LlxFQmx`9B8@{mQaxi98*MvS3A@} ziy`ssSZB1ccg3P;cdHwY!&=XCBZ%q<&t7Bp(r99uHdUs|62sWsO{pq1nwq0MUA^5M zQFnY*kZz=3`spS($UYlCyDPFd+U?NIbPJplE3~ZcNkms@%XIsg3Q9cI?y(_8>vnE-3tH67-8SF9lDNgXPV~$Hmsz|!0U;yuWxwEe1~M%x45>+wCfsn3Vf&19S&`w z-@wTrTy1noq&E(e9+DDCk4{-T#`n;jGX5?oqt6fzU=Z7u6wlhuRBG-)n#KM?X>Uy| zi@~?e=$8s0Sk$8BVh_J{XeQN5?RO5%qT{5t+o8GCB(?h;nn#Y*9(3q}?qUf!v?@UCOM!SRb1U>1{ zQ}i@!KjtL|IuvQV&pOmfPJr43)bkFtkt3j9aOg#eLB5W7G=c!5x)(7GH#F4OR1gVs zfVf`gA03FOeRs)F7}IMGy-cq&P5xgu!B{oTh^egK>88CIgG=oGj)*3#GO$(Uqt`Xp|9v) z5PfAYL_f+L=810j`F~c1pZ?8Mn29Shx}!_G5D`05dJfXploXJAk;ySq(_H9Ur?1_; za_TZ2R$?Be9!6vF?&y*@lId~Aq^clW?DI2n*5XX8>}R0ES&Y0ir!%@LW3glUEchL= zF*4QR8UD?^oe5+^b*FbkS0<3T_!+6{&`iI(o6~w@aYX9?4`3>(>+bIA9vO3!^;jf< zRApq!az({o8d4OML z3-S<$hw?DQheVg#X~a-7><2l(!v#=b#{bNIV}Dwgb$6{2i>oS~>*r#okr|cf-E8bi zOz*;(Xee$(pHcPkcywtbUft0V?ddT_jba*+;nmpH(%Z4DA(~j$WwJV`FRP5IyE+Y4 zhcK0ASfwnbzVkGkOR|@(k#5*!dIG|$A)#xNaP4Sn>#<8le?|kCm)c%ebe*r-uAz@G zrlb&eXKr@5 zMHme9X4ZE$#Nu(uQtZW84dT0s$?(BgPma`B;qyI*r^+F3m(-U^GQbNQn&ZlHqQfUi zS3uMej|x+tzUn|FfjKIl759wrd* zarMc<3{1h|t963mThY~-ScV0qJ;iK=!x2WKy$mTa=HNbwje^U$gS;iXWz=$X_e49o zIu|2zIef9;u%Lg4 zw9G|;gh3#mfSvcav!zk2dv-K} zmejBiTBSZE^UQZf&cW*&=DX%i&+R zHC!m(VZ7N`i50k-TPtFn_|=E7vAzpQCjQppjV`m_IefF8xFUk!o-JO6N0(M?bsxQ^ z@};WMdYl7^@$xf4w)D0jKg_tl)d%@eDUb8>V@wBU4m16Bh%>gOcjd~i?nKl)9RGm) zJTo$t4lG%M%K|@6%Z2}+9R4#u33r4V^>KsfnTmf}S?=kF6po*E_!&taBvML_3LgBN zA`(%SU>nR zfB5pM?pPw~h7#mc-ZtSq+HGp;P2fm`W#9?U_33mH)Z^!GVGP=SFuuMi-4j%#lwWZw zJ?@vAqbxaB!i(Me{5%szR*(1QSL6ckmjM!qAYd&{VLxDB?Dd@{^q|UCIeryH6iz{Q zXBxvCK5S#w-Bo_kgH}r>l^|yZJsqZPAZ8(_`{fKOp7K`Z*GY(IU69 zM6U$nn6XzbK<|+SN-)0>c&(lf!jN^2ZA`Awp+s6IyRAA4NUdBowaOla`@Mz#`N&V% zbTk!E4moHWfFnauF6e;<9Ri(a&|%Q|20aM$V1ph4dZt}y7apeqe}9Oy$0dOYX}1}*wI z%%DX-6AfDQbGSi^evU9`(a(_vE&4dhphX`?8?@}tB!iaqs|;G!pKQ>w{uG0j^`{!N ztbdF_%lgL}w5(rk(6S%X3|jW1#-L?CY7JWUqt2jZKc*YB$TP#BLuAWa8f?*)mo!}> zan>agZCxTsMXBU1O_z8{(6X}7~YEq79H zC~p_7Ld$AtIkTnR7e1?{JuAGXrQIJsr=>j*KDVVklokFFe*NL|@f!$VfZy!!Pw^WJ zUx?qF@H+fD;q~|(5WW<@x#7$4J1~3&ena66Sm&zW0EeP$@H-toO8hkic`t<&WaV$E z(0+{$v|p$3_8WAB{U%k}Z&9`VHZ|DqP>cO8EwtaG<@Wou%Km`PwqK=lX*pf1If@SO zCh18$8L1dBr z4)|=|L0h-ewu}fth(f#rBHV4T$)O!|x5s9?$L0yJkxghW+fMhCh4OwI+(tX4w71c& zGHV;%TZY4*GjTm@AU>&kf|rG*rKsR}udD78>vs7>+rF2B~2*Touqks*p-lF;%Jq=twn!j#Y=ybTyjhs1j;dWwc0@ z(<)U-tJR^jMopk|)I>U89YGhUqiCI)MC;XLx_o zTl>Fiq&(G>wzWK@CW4M^Ti#Z5i6;y2%)^t&vEDlM-a13e?&9hz$zPV_nw?zN4synJ zuFou?qm^1pezlBpR4ly=A!BjFOdijM!@H5b8tM^e%r1kaG$#4@OmuLuo<;$+N;4Va z4orJ{Hn(yc*swekcBwbr^;hhb5=K$Uh4R|4sGt0w|$8R3sA^1|h z1g^3X+js_I9als6c^RNXu$`nXBwJlX*=ilk@L~$9^#r}Y+T2Q<+^ zLD^ljtMITZ5nrrrJRggkfR>$wm7CJ&!`KB<*JGI*u*{8E<|bpAg7h*4yb$(@7iK;= zy-bz2jDKIII^?OX1|xr(k>6v)axZuBT9-j30^=xA@&+1aP2ETX1bea7y4K?2P~HuD z|0yC=>y?U{q_5C!ExZkKAh>?0#la?_oDF&r%FFS066zIR|7$2W#-RHK+y!78Y z!ZVa*wMvO%Bd?d5ZR-Y~Tln1~AF2UDcMnQBPm!uGmT3ui{_RnfeWF8pr*Qd0O_mVFma!4W-eB-y-O zp`fS29BHc5P1&9ngVI#!HkqRWk`CO9_It0Sp@pH)b(B{a8h9P$=%FF2HSIY(961%K z`{0cClcOG>e3V7%K^mnVLg0Rw#;GUh`|3$rtDd5ts;B89^(2~!O zx>LPCJJpMHzj}!tQZLh=)GPFYdX-*NuhF~eb^2JnL0_mhX|H;V{pxMbRqt?~dXEbg z!nFE;$Epu`qWT+8Rv&S#`a2(|KIUfi3Ad|%@CoWu?oglcDe7}RReiyyt1tO%^%bA5 z{>AIm*L;ckhObuN@dTFkpF#SdB*KW^FlwB_R$tt@`o3h>)jHh*LV`4h|G zudD%ztz2bWA>~+kYLFFHL#;uo$Qq``Sq17yYq<7Co#5awa^ogE&htj8ErEk8+%5BY zDQXsiHJ)+3i1IG7X-VGVX)m-3#in=qv@`Au6uTBKJK~d{fW4q~L2JsH^hSAxo${Sj z>6whBjQ~5m|E}WZgtX2&n0(eD1tr8k%mC_Mb8BMjysm`jP25T&}S(S8x zbtrXM<7v4yAtN<1T2E>`aj->*tno6x{G~TMAqpezvbE>;q z8t0@m&Pi#UlRTV2#hpMbyE2KpQ1j^>Tj^n62VPi_iUs>%d$2Fbr)vBI24}gj2iO_M zA$<;5&6HyyYqnac$ZFG&X1Yw$kc!igiqnva(~yeOkcvG>0Kh!}mxZei{@Vl(+@Aqk zfS=%+lRlj8q6dCkr`}h3leq5{0dkamGYoHjC(3Yavxzi)p$QrQ@t6)Qob0wbU@16Fk|&xGk&# zC&tCPkWZ(2ILpk8v(SsY+LJB`+2o9G{r|{v^?rqdzWYO1l$pjpu33b6^|xap2Q+pY68OE-bq|7^GAGnB{Zc$AVrnQ0!5`T1_fw{Oy8t%HMH z3@coZUAlyZSeNRB+{YD3mJgVoSdhYc!8pU~ypwF9Rk9~wf1@Tc8!3Bift}l#44ma?tuDA&54ime-{#JZ6Vvu=X=Z-)ABp?XY@Shs2sCb}@w>hIv6^3Nbd zF16v3dN;INgKO$VxM*51tzo8VQ#TijXBjA&DClq%V<>3+@ z#@`q#NtM=iSkw+!)7|iod$b7d?YPDh!G{MaH}%Y;34A#`!@{G>KrMm*|9N_kWkmEFaE*Qc5o|r8SUA zJbBbca>@#!ysOr#y+zmT{an+Qrn%^m9~jdsneK7@ikB=t{!|XU+3+ABWO`$uKPrS>k{;7IFJtE_E4x`7*;Nz z0k(VQyIz``UL{vwG3AXK+_d*?Bbw+l$zDeR`(nzq*VAD85M>^ zXg5EMJWHruNq%HEKZ-Zo@-6dt3nmhtL`UNx)y)rvi!}DL(BN}4#NGp~Jx`LptLIj_s%V1C zn|2i)wt@1r5{fF5{GQ2wt>Pkin0OKkeu(i{U-T$ZN$(X9n!L~cB@OH6BLUCPz&H?hQt};0w(lUoI2bTS(@HMl~?wZ~ExLu+&Eug?C{j!z!$> IXDA2#AI*XbtpET3 literal 13449 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 diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java index a071ee36cd0..b0151db7e2d 100644 --- a/libjava/java/lang/Class.java +++ b/libjava/java/lang/Class.java @@ -1,5 +1,5 @@ /* Class.java -- Representation of a Java class. - Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 + Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -1290,6 +1290,59 @@ public final class Class return v.toArray(new Annotation[v.size()]); } + /** + *

+ * Returns the canonical name of this class, as defined by section + * 6.7 of the Java language specification. Each package, top-level class, + * top-level interface and primitive type has a canonical name. A member + * class has a canonical name, if its parent class has one. Likewise, + * an array type has a canonical name, if its component type does. + * Local or anonymous classes do not have canonical names. + *

+ *

+ * The canonical name for top-level classes, top-level interfaces and + * primitive types is always the same as the fully-qualified name. + * For array types, the canonical name is the canonical name of its + * component type with `[]' appended. + *

+ *

+ * The canonical name of a member class always refers to the place where + * the class was defined, and is composed of the canonical name of the + * defining class and the simple name of the member class, joined by `.'. + * For example, if a Person class has an inner class, + * M, then both its fully-qualified name and canonical name + * is Person.M. A subclass, Staff, of + * Person refers to the same inner class by the fully-qualified + * name of Staff.M, but its canonical name is still + * Person.M. + *

+ *

+ * Where no canonical name is present, null is returned. + *

+ * + * @return the canonical name of the class, or null if the + * class doesn't have a canonical name. + * @since 1.5 + */ + public String getCanonicalName() + { + if (isArray()) + { + String componentName = getComponentType().getCanonicalName(); + if (componentName != null) + return componentName + "[]"; + } + if (isMemberClass()) + { + String memberName = getDeclaringClass().getCanonicalName(); + if (memberName != null) + return memberName + "." + getSimpleName(); + } + if (isLocalClass() || isAnonymousClass()) + return null; + return getName(); + } + /** * Returns all annotations directly defined by this class. If there are * no annotations associated with this class, then a zero-length array diff --git a/libjava/java/lang/ClassLoader.java b/libjava/java/lang/ClassLoader.java index faec9a7ebd2..92b2f0ad8b7 100644 --- a/libjava/java/lang/ClassLoader.java +++ b/libjava/java/lang/ClassLoader.java @@ -1,5 +1,5 @@ /* ClassLoader.java -- responsible for loading classes into the VM - Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -118,7 +118,6 @@ import java.lang.annotation.Annotation; * @author Eric Blake (ebb9@email.byu.edu) * @see Class * @since 1.0 - * @status still missing 1.4 functionality */ public abstract class ClassLoader { @@ -373,7 +372,7 @@ public abstract class ClassLoader * @return the loaded class * @throws ClassNotFoundException if the class cannot be found */ - public Class loadClass(String name) throws ClassNotFoundException + public Class loadClass(String name) throws ClassNotFoundException { return loadClass(name, false); } @@ -401,7 +400,7 @@ public abstract class ClassLoader * @return the loaded class * @throws ClassNotFoundException if the class cannot be found */ - protected synchronized Class loadClass(String name, boolean resolve) + protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { SecurityManager sm = SecurityManager.current; @@ -490,7 +489,7 @@ public abstract class ClassLoader * @throws ClassNotFoundException when the class can not be found * @since 1.2 */ - protected Class findClass(String name) throws ClassNotFoundException + protected Class findClass(String name) throws ClassNotFoundException { throw new ClassNotFoundException(name); } @@ -508,7 +507,7 @@ public abstract class ClassLoader * offset + len exceeds data * @deprecated use {@link #defineClass(String, byte[], int, int)} instead */ - protected final Class defineClass(byte[] data, int offset, int len) + protected final Class defineClass(byte[] data, int offset, int len) throws ClassFormatError { return defineClass(null, data, offset, len); @@ -533,8 +532,8 @@ public abstract class ClassLoader * @throws SecurityException if name starts with "java." * @since 1.1 */ - protected final Class defineClass(String name, byte[] data, int offset, - int len) throws ClassFormatError + protected final Class defineClass(String name, byte[] data, int offset, + int len) throws ClassFormatError { return defineClass(name, data, offset, len, null); } @@ -562,15 +561,14 @@ public abstract class ClassLoader * do not match up * @since 1.2 */ - protected final synchronized Class defineClass(String name, byte[] data, - int offset, int len, - ProtectionDomain domain) + protected final synchronized Class defineClass(String name, byte[] data, + int offset, int len, + ProtectionDomain domain) throws ClassFormatError { + checkInitialized(); if (domain == null) domain = defaultProtectionDomain; - if (! initialized) - throw new SecurityException("attempt to define class from uninitialized class loader"); Class retval = VMClassLoader.defineClass(this, name, data, offset, len, domain); @@ -615,8 +613,9 @@ public abstract class ClassLoader * @throws NullPointerException if c is null * @throws LinkageError if linking fails */ - protected final void resolveClass(Class c) + protected final void resolveClass(Class c) { + checkInitialized(); VMClassLoader.resolveClass(c); } @@ -629,9 +628,10 @@ public abstract class ClassLoader * @return the found class * @throws ClassNotFoundException if the class cannot be found */ - protected final Class findSystemClass(String name) + protected final Class findSystemClass(String name) throws ClassNotFoundException { + checkInitialized(); return Class.forName(name, false, systemClassLoader); } @@ -666,8 +666,9 @@ public abstract class ClassLoader * @param signers the signers to set * @since 1.1 */ - protected final void setSigners(Class c, Object[] signers) + protected final void setSigners(Class c, Object[] signers) { + checkInitialized(); c.setSigners(signers); } @@ -678,8 +679,9 @@ public abstract class ClassLoader * @return the found Class, or null if it is not found * @since 1.1 */ - protected final synchronized Class findLoadedClass(String name) + protected final synchronized Class findLoadedClass(String name) { + checkInitialized(); // NOTE: If the VM is keeping its own cache, it may make sense to have // this method be native. return (Class) loadedClasses.get(name); @@ -732,15 +734,16 @@ public abstract class ClassLoader * @return an enumaration of all resources found * @throws IOException if I/O errors occur in the process * @since 1.2 + * @specnote this was final prior to 1.5 */ - public final Enumeration getResources(String name) throws IOException + public final Enumeration getResources(String name) throws IOException { - Enumeration parentResources; + Enumeration parentResources; if (parent == null) parentResources = VMClassLoader.getResources(name); else parentResources = parent.getResources(name); - return new DoubleEnumeration(parentResources, findResources(name)); + return new DoubleEnumeration(parentResources, findResources(name)); } /** @@ -760,9 +763,9 @@ public abstract class ClassLoader * @throws IOException if I/O errors occur in the process * @since 1.2 */ - protected Enumeration findResources(String name) throws IOException + protected Enumeration findResources(String name) throws IOException { - return EmptyEnumeration.getInstance(); + return (Enumeration) EmptyEnumeration.getInstance(); } /** @@ -807,7 +810,8 @@ public abstract class ClassLoader * @throws IOException if I/O errors occur in the process * @since 1.2 */ - public static Enumeration getSystemResources(String name) throws IOException + public static Enumeration getSystemResources(String name) + throws IOException { return systemClassLoader.getResources(name); } @@ -939,7 +943,7 @@ public abstract class ClassLoader throw new IllegalArgumentException("Package " + name + " already defined"); Package p = new Package(name, specTitle, specVendor, specVersion, - implTitle, implVendor, implVersion, sealed); + implTitle, implVendor, implVersion, sealed, this); synchronized (definedPackages) { definedPackages.put(name, p); @@ -1115,4 +1119,16 @@ public abstract class ClassLoader } return false; } + + /** + * Before doing anything "dangerous" please call this method to make sure + * this class loader instance was properly constructed (and not obtained + * by exploiting the finalizer attack) + * @see #initialized + */ + private void checkInitialized() + { + if (! initialized) + throw new SecurityException("attempt to use uninitialized class loader"); + } } diff --git a/libjava/java/lang/Thread.h b/libjava/java/lang/Thread.h index d5fce863877..bef9dd8d5f7 100644 --- a/libjava/java/lang/Thread.h +++ b/libjava/java/lang/Thread.h @@ -145,7 +145,7 @@ public: // actually package-private ::java::lang::Object * accessControlState; ::gnu::gcj::RawData * interp_frame; ::gnu::gcj::RawData * frame; - volatile jint state; + jint volatile state; ::gnu::gcj::RawDataManaged * data; public: static ::java::lang::Class class$; diff --git a/libjava/java/nio/charset/Charset.java b/libjava/java/nio/charset/Charset.java index 48093bc9d3d..04b3819481a 100644 --- a/libjava/java/nio/charset/Charset.java +++ b/libjava/java/nio/charset/Charset.java @@ -1,5 +1,5 @@ /* Charset.java -- - Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2005, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -61,14 +61,15 @@ import java.util.TreeMap; /** * @author Jesse Rosenstock * @since 1.4 + * @status updated to 1.5 */ -public abstract class Charset implements Comparable +public abstract class Charset implements Comparable { private CharsetEncoder cachedEncoder; private CharsetDecoder cachedDecoder; /** - * Charset providers. + * Extra Charset providers. */ private static CharsetProvider[] providers; @@ -174,7 +175,7 @@ public abstract class Charset implements Comparable * Returns the Charset instance for the charset of the given name. * * @param charsetName - * @return + * @return the Charset instance for the indicated charset * @throws UnsupportedCharsetException if this VM does not support * the charset of the given name. * @throws IllegalCharsetNameException if the given charset name is @@ -221,19 +222,20 @@ public abstract class Charset implements Comparable return cs; } - public static SortedMap availableCharsets() + public static SortedMap availableCharsets() { - TreeMap charsets = new TreeMap(String.CASE_INSENSITIVE_ORDER); - for (Iterator i = provider().charsets(); i.hasNext(); ) + TreeMap charsets + = new TreeMap(String.CASE_INSENSITIVE_ORDER); + for (Iterator i = provider().charsets(); i.hasNext(); ) { - Charset cs = (Charset) i.next(); + Charset cs = i.next(); charsets.put(cs.name(), cs); } CharsetProvider[] providers = providers2(); for (int j = 0; j < providers.length; j++) { - for (Iterator i = providers[j].charsets(); i.hasNext(); ) + for (Iterator i = providers[j].charsets(); i.hasNext(); ) { Charset cs = (Charset) i.next(); charsets.put(cs.name(), cs); @@ -295,14 +297,14 @@ public abstract class Charset implements Comparable return canonicalName; } - public final Set aliases () + public final Set aliases () { if (aliases == null) - return Collections.EMPTY_SET; + return Collections.emptySet(); // should we cache the aliasSet instead? int n = aliases.length; - HashSet aliasSet = new HashSet (n); + HashSet aliasSet = new HashSet (n); for (int i = 0; i < n; ++i) aliasSet.add (aliases[i]); return Collections.unmodifiableSet (aliasSet); @@ -387,9 +389,9 @@ public abstract class Charset implements Comparable } } - public final int compareTo (Object ob) + public final int compareTo (Charset other) { - return canonicalName.compareToIgnoreCase (((Charset) ob).canonicalName); + return canonicalName.compareToIgnoreCase (other.canonicalName); } public final int hashCode () diff --git a/libjava/java/util/Calendar.java b/libjava/java/util/Calendar.java index 5559d8c53f4..6c0d7213dea 100644 --- a/libjava/java/util/Calendar.java +++ b/libjava/java/util/Calendar.java @@ -1,5 +1,6 @@ /* Calendar.java -- - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -103,7 +104,8 @@ day_of_week + week_of_year * @see TimeZone * @see java.text.DateFormat */ -public abstract class Calendar implements Serializable, Cloneable +public abstract class Calendar + implements Serializable, Cloneable, Comparable { /** * Constant representing the era time field. @@ -460,6 +462,8 @@ public abstract class Calendar implements Serializable, Cloneable /** * Creates a calendar representing the actual time, using the default * time zone and locale. + * + * @return The new calendar. */ public static synchronized Calendar getInstance() { @@ -469,7 +473,12 @@ public abstract class Calendar implements Serializable, Cloneable /** * Creates a calendar representing the actual time, using the given * time zone and the default locale. - * @param zone a time zone. + * + * @param zone a time zone (null not permitted). + * + * @return The new calendar. + * + * @throws NullPointerException if zone is null. */ public static synchronized Calendar getInstance(TimeZone zone) { @@ -479,7 +488,12 @@ public abstract class Calendar implements Serializable, Cloneable /** * Creates a calendar representing the actual time, using the default * time zone and the given locale. - * @param locale a locale. + * + * @param locale a locale (null not permitted). + * + * @return The new calendar. + * + * @throws NullPointerException if locale is null. */ public static synchronized Calendar getInstance(Locale locale) { @@ -501,8 +515,14 @@ public abstract class Calendar implements Serializable, Cloneable /** * Creates a calendar representing the actual time, using the given * time zone and locale. - * @param zone a time zone. - * @param locale a locale. + * + * @param zone a time zone (null not permitted). + * @param locale a locale (null not permitted). + * + * @return The new calendar. + * + * @throws NullPointerException if zone or locale + * is null. */ public static synchronized Calendar getInstance(TimeZone zone, Locale locale) { @@ -600,6 +620,10 @@ public abstract class Calendar implements Serializable, Cloneable /** * Sets this Calendar's time to the given Date. All time fields * are invalidated by this method. + * + * @param date the date (null not permitted). + * + * @throws NullPointerException if date is null. */ public final void setTime(Date date) { @@ -860,6 +884,7 @@ public abstract class Calendar implements Serializable, Cloneable 1, 1970, JANUARY, 1, 1, 1, 1, THURSDAY, 1, AM, 0, 0, 0, 0, 0, zone.getRawOffset(), 0 }; + complete(); isTimeSet = false; areFieldsSet = false; isSet[field] = false; @@ -1020,6 +1045,8 @@ public abstract class Calendar implements Serializable, Cloneable public void setTimeZone(TimeZone zone) { this.zone = zone; + computeTime(); + computeFields(); } /** @@ -1175,6 +1202,31 @@ public abstract class Calendar implements Serializable, Cloneable return max; } + /** + * Compares the time of two calendar instances. + * @param calendar the calendar to which the time should be compared. + * @return 0 if the two calendars are set to the same time, + * less than 0 if the time of this calendar is before that of + * cal, or more than 0 if the time of this calendar is after + * that of cal. + * + * @param cal the calendar to compare this instance with. + * @throws NullPointerException if cal is null. + * @throws IllegalArgumentException if either calendar has fields set to + * invalid values. + * @since 1.5 + */ + public int compareTo(Calendar cal) + { + long t1 = getTimeInMillis(); + long t2 = cal.getTimeInMillis(); + if(t1 == t2) + return 0; + if(t1 > t2) + return 1; + return -1; + } + /** * Return a clone of this object. */