From f4ecf2ee6fe566d3e95ba1b10e1ccfd9f44708d2 Mon Sep 17 00:00:00 2001 From: tromey Date: Mon, 5 Mar 2007 17:27:44 +0000 Subject: [PATCH] 2007-03-05 Mark Wielaard * java/lang/Character.java: Re-merged with Classpath. * java/lang/natString.cc (nativeCompareTo): Renamed from compareTo. * java/lang/StringBuilder.java: Re-merged with Classpath. * java/lang/String.java: Re-merged with Classpath. (nativeCompareTo): Renamed from compareTo. * java/lang/StringBuffer.java: Re-merged with Classpath. * jni.cc (_Jv_JNI_GetAnyMethodID): Split calls to append. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122560 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 11 + .../lib/java/lang/Character$Subset.class | Bin 795 -> 795 bytes .../Character$UnicodeBlock$NameType.class | Bin 0 -> 1270 bytes .../java/lang/Character$UnicodeBlock.class | Bin 17734 -> 18175 bytes .../classpath/lib/java/lang/Character.class | Bin 11431 -> 13096 bytes .../String$CaseInsensitiveComparator.class | Bin 743 -> 953 bytes libjava/classpath/lib/java/lang/String.class | Bin 9041 -> 10265 bytes .../lib/java/lang/StringBuffer.class | Bin 10367 -> 10783 bytes .../lib/java/lang/StringBuilder.class | Bin 9663 -> 10292 bytes .../lang/Character$UnicodeBlock$NameType.h | 29 ++ libjava/java/lang/Character$UnicodeBlock.h | 6 +- libjava/java/lang/Character.h | 26 +- libjava/java/lang/Character.java | 448 ++++++++++++------ .../lang/String$CaseInsensitiveComparator.h | 1 + libjava/java/lang/String.h | 13 +- libjava/java/lang/String.java | 120 +++-- libjava/java/lang/StringBuffer.h | 13 +- libjava/java/lang/StringBuffer.java | 116 ++--- libjava/java/lang/StringBuilder.h | 4 + libjava/java/lang/StringBuilder.java | 63 ++- libjava/java/lang/natString.cc | 2 +- libjava/jni.cc | 3 +- 22 files changed, 609 insertions(+), 246 deletions(-) create mode 100644 libjava/classpath/lib/java/lang/Character$UnicodeBlock$NameType.class create mode 100644 libjava/java/lang/Character$UnicodeBlock$NameType.h diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 2b4f38be8e33..6de135a543ed 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,14 @@ +2007-03-05 Mark Wielaard + + * java/lang/Character.java: Re-merged with Classpath. + * java/lang/natString.cc (nativeCompareTo): Renamed from + compareTo. + * java/lang/StringBuilder.java: Re-merged with Classpath. + * java/lang/String.java: Re-merged with Classpath. + (nativeCompareTo): Renamed from compareTo. + * java/lang/StringBuffer.java: Re-merged with Classpath. + * jni.cc (_Jv_JNI_GetAnyMethodID): Split calls to append. + 2007-03-05 Andrew Haley * java/lang/reflect/natVMProxy.cc (ncode_closure.meth): Delete. diff --git a/libjava/classpath/lib/java/lang/Character$Subset.class b/libjava/classpath/lib/java/lang/Character$Subset.class index 5a928021d654142b8342a8d0bc8994fe48532204..d37116643712881e7dde77675d5f3fa9ea0f6038 100644 GIT binary patch delta 39 vc-ouIHk)mOI1^_I0}Des0}n&SWCbQK#*)d|Om2+zlQ%KhFm_IU&!htYxmF5K delta 39 vc-ouIHk)mOI1^_Q0}Dec0}n&mWCbQK#-hpDOm2*|lQ%KhFt$&A&!htYxN-_Z diff --git a/libjava/classpath/lib/java/lang/Character$UnicodeBlock$NameType.class b/libjava/classpath/lib/java/lang/Character$UnicodeBlock$NameType.class new file mode 100644 index 0000000000000000000000000000000000000000..3f341aaa55097867bf35f737bbcae20d62e6d05a GIT binary patch literal 1270 zc-oayQE$>v6#niCw6MBOrYK|TR8(Md8|tP8oWo`&L{?17NQe*SuGX!yl%rKHW02YEO(6g?_lTGNmvY`B`nh!rznqySV59Fd91F_;Bj#O FcSz4zYR|9j58DpdRX_Rr@-p7%cQd)9m2Gv1p#`S;zs5JLI%Wd|Y{ z`4-2P#qt_s$@;v)hFCgQ+Zs;~s7xkmQ+4rz##HSR2U0NVemJXWTTM&66(hB!HI@d% zL5yfTS%;CQHkM359kIr6tSOF>H*~Okv^AYb)=$RBUEq%f3#&u^ieMO{exd)>k;$SS zVO*VG9jz=Y3k6C8;R=j0Eiy2-A`mVL6jl2Vr3x_02$uORA{vZ@qZoCImiY^V;o|Dj zNKtS`Fi>6{3RF}C%0bnmFj86&3=3sZ&|g>{tOyqRL)E4J@>!r&i^~InSs1axs`6kc z6fDFjYroj8WB&3gu<@6J9Q4BgwUR(Vd0-9*{&IhTD5XWAlwSxHC4PSx`t2$T%m$&@ zUkP>{t!s4xU#&oa#o2Y&V=$6AgYn_U=ya0FUV3o1*3MNmEH3jEw+?fj{m)P-DuTIHSVF(fkin5AmwLe@0Q(j;{Lf{ovmX`;@g;fW8(k_@}09DV3 zwCktW3c65mR^TA1hbv19U^HM^8kGT49+?9|R;j$DY}e9Yv@igU z4hJHY(dvpoVM$onhz>=<73C2aL=eVM9suKBkus}-!V-w2LTJ6ZJWv=Z4hO9fWRx~SYg2gU;aDhNdi!CzLii?Ku0lm;rw#VRQAmx-pjbnMrG z0kR^fqQEao4d`gnVT885SkYbDEv!(rrgsV|9WBT0A#+Knc5FuqY5IF87y}fcJ_5Ry@IM z9GoK=Nl;H0`f?z0EQDrY| z4Xg_)p%!DmeY=IwbANT!hh0>C4#bP-pS_97{=tH+C;QI8!W~lE7R)=t~bqP}bp#!`i6|+Ivn&M4-E>y_+*_7qm0zR1z#Mf!TpcEB03i zriWz8%7e4vxwe9++`xOrXa0t^y94d1wp-(dS4)A?DYzFN&$AdQiJFLNvga5Di=&(~L za127Ny$>_z9qfD^?j6UfwDR4yuegAp?<$gDQKy*&9qOhd8LafdKqQn4E zV!+``3=p@=ij~c9!zA;>E=HF?h)uD}Vd4x#@L)RZ_QXouj)KP{o>BP`2)=kzj zXc4{_2Dj;`lQ76+$P_o*=2$Is)K{9SODsyn)4ou=6?`X6@6b`EFf|z3A&!((Qw-ZpvxUC1OdTdPYZGger@n=f%xAUXzY5 z7m62jlqD2h8G1=vjMA|htJPO@)Kw_DG4#5)SwpKasd!UI-Gm~Wp?Ac6u^|>q#)RTM z9c2qecZNQcfxZkB^|5q9C_mOwccJXT&}ZT%9#7WC8l~n79rX~Jo(z30Zpv-xrnV&w zQuVEldJ0u9hJKK$#SpZuQuULLdI?o;hJFMi&_4E-f;^0B5wqu}@H zsE^=%3=`4ocw<|A8z``%BcD+8W!NEZ`mtm(Rwt^$P960XntlxH;<6lTjID(KCZWsF zQ9q&U&#)nO%|x;RR6@gb)L&=@Fq|c}n}(R^FYczJ0fHXLa1W6w#8QIorK5p@9mKFt zT;CHl@m4uuxSx&&3C&=J2Z~H$Wh~hgOAF0l9Ss(mAq?jVr^Hj~dTW;PFdYpMsvL&% zM5X~ttgX>EGu9*<%hyqk(B?8cMr0nX4T)5O za{(O<7yJl@OGM_nl-7U*b{P>p6dCNiOhrnvNKt&T=PaLAbhNjCJ3vE46hcMR)>Ae=dY_v zh@&DV!W*yE(L`Z8iQ$t(<|Ve31Gd6oy^bacgUJk^Dl)NnGMA3%d!vmynkI~2S*H<2|P1Pq8`)A-j9R-B_42JI)nPalHG1VfbyRo?e0v`g& zUSALDXofH>X7~|t6sK1Biqf&=;9H@6Oh?5+Tf*>@BC`~SyDwm!7P9!$Iw}zcL580b znPxoI6ou9F1o5k>JA`^u!)Wob--q6u3 zp$aklw#XMdRMBAu?E2&hj^EW$NE9n&_yduC9z5t8eb$6pb|2}eRM>?X{#0bH=@^`h zabHR+l7Hv;^Pjv~UYjN$M9TTf-NA9YkFiXF-DFCx=zU;V#F z*l#*IQj{uZ_)n4f9?r9Jy&a6+zjahDibNT~Ruk80jK1=|md#b9qf5U3D}^sOB=#U1Zj=*4PqT)l)}vg{q2?J|fdjHK&?V zi^Nt>`s%1ksE%S}fXKY9qYd_xW@xh}(U@pmx&NRegLHJ1u${+9j>yDg$(lCVtD!oY zClp6BGD2kLcKz))N-|PMM+=+zjEokUy4^kB;WueAR!8%N`2t2Jh|GQedKLb$FNxAW zaGxb`mjRkAv2P;OLVkI+P<+ye8Ax98EFVU%@oN$noN(MZ4Pl z>9~yNH9AU28HZ(X z!ibGVuGRg=A2~}$ORSP*@bMQk*~rLw;yr}C*&n8q+)4=?)Qz&--=f98Au(!VueG-@a=DJ0EPJ2$$YUtU$W`LC$$=xjB-Xg-K;lEL(NWSWFj9QLkW!3X zZ*OHCeQ{tgkfx=qGGZ`)rxW#245VDL*B+5UeH zUhLuo4(X+`+&(e*ecv#YX5>EcdIpBDJWnLrN{8oHGi!F>i zEMD9+$7>UIyg#a=7GZ=D5+4x4t&BV+E;xx~JeKwq*b#4~aRhR;R?B>i_<%aw75Fwc07%tWsJNgUIWGJ<8VQ@E=bZ8j^kz0lnPS{leV0Zcf|{$Mp*Q4 zX348Kd0$7%Ewhp01Ey*PBcF&@M=8h|q{(MGT49-pKGKa0tz<-`Z5`$TAE@>nfFmuN5@JVCfZ`)h2t1?iT!nDb2^b~?cidn>*zRX{k*V#9$b7pqlS2` zwelDUCh)Vbw5_H6aW6_iYInRWwMUfN1Ep3o+D*LhI@Gqij#f+Cy~1{HHA8C{?IT`= zL6$JL4d!L0SR?I9zzMfTmUvN=cm---%jh8SlC1qbqWwLved!@OS}RHu5o6@KcNjW> z(c%B)><}w}=IQ7JS^QT~{CCKnPh@nA^KURXi? zCHpv4M<+=G5vds%mf1Q+3&hK~L-&|})D36bI#INfsJoL`XX_aaig$4BUxN7lxe3d? zjn2~1dQmu26wVZdPiD02e;1aXDc8}-;#56_(Ms_`@4#uWf0w6obaV=G3kmYhGtik} zC044n?kdDVCf05WW>1b2o+ar*l)_1PFojJ z)Aen_kAW4nad~@WbSXxYDjMRx7U5(OeTif%>_}Yz7pXK+9YX?-O=?r=W*55AzQ z=y48uEF9tgEUwezDP-P`1l$c*M8LZW_$uh6Yw3v&dICl{|Eux?uTyn;5`}Z$S?CW( z?C%kWhW>Nu$)d@Vb$W`ZgB3=?(F%XKLXfBF^mJKqI8rUXeGf#P^h~81I=zry1UI?*cxy1( z(i%(Fg2#spIkXnr;~fgisxQ&$rSvkWq9xu6?u{qwTN^Bo&KBW#g^tdmR|+C$UeEu~Kjc$cQF&%GijMc{djnMXl|JK5xlo*?-({1z)n7Y=K#lkgd$YE?9 z6z(cr|4A3LB^vAEX-0R#MJAl`*&*VqkvaXMR2$q(#CsGMy_3!tANT0=UJADtE!NyD ze>^gL$bado-Ogl2cY{Mlh?-1@EZK~;!jx9|&48<|W&g~=Kn^$G7^$)t^dZ?I%8Fg< zahPGWK}_wFI(>>h4NAEazz#M7CjI|oIXLLE9ezL)PDR^l8)hWpjdcN-TIiK4nrche z#%CnN-kWitz7e7fBrd^ZGM+AMjJ34HTO4#RTqqCIIM}ss9;R=92T(o|Cm4d`&MS6j zki24VmIymDV7B-wL!xe@$HojBJK30NqhX`hMs8zg8@t$;Wn)(xyV;m+V|N>S*x1v? zUN-i&v5$>D8~fVW&&K{X4zO{cje~3)Y~v6cb8O7Daj1>MY#eUm2pjWk9BE^|jiYQF zZQ~dl$J#i~#_={zuyLY|lWd%9;}jdG+IWPG(`=k>qu<5?8w+hLvN2%e3>%AWEU__Y z<4hZ8*%-31)W)!l5gW^FJkrK;8>2Q>*jQ=fY#Zm;IM>E18;`Pao{dM_IN!zvHdfoX z(8idJH8$4TSZ8D0#zi*P+t^@Z!p6lmF0rxE#wHt+Hl}QBwsEPAX&YN?Y_+k?#$`4x zw{eAyD{VZ+##J^RYvXY?9&h7n8`s#l*2WWTJkiFJY+PsKdK*u+5w3o4={^;SztiAf zgT3K&!0zHIh)||W?0S-C=xlTjXwL1wf8FT)sow6acc|`@m}ZMBDotRN6HLxoA)N~&62y-;;eBzK?W6l5s-yt}>kOYT9*smM_CybpUHk=$bz zH_}iyc%Se-DY>UD?rcNd=Y7`uoaFXMPD6&a&%4+AqU2tdoC6t-i1$_RYm$4z;?@|B z-QKsnZ%gi7$vKhXTvbZ&dbD#GU@28UcTyidCxK?|=^nN9|Z!B(&;o9f@ z&ilROew3UW8Sd5IpS{0G?l+5DW4QNu|M31PxxXc+BST-!;hex&u$Wrx8bja5vC6R~ zSteNzGCW}G;@B-&kHxMrJYd_2<4nnVC7Xea46yCYaTm#Uwb(UA2H0kE++DIgCEE!Z zoq+AlaUaR{m24(5GBs#q-4Fw;LwLr z9FLalSjqBD1_#^m98Zw!B*}J0Mi$sk;drWKr%5(zjgbX?@N--s*&>VGWMn}NGdM1m zY*4aYk|YcQnFEtoo;lk=D3pM*^-@Wu?vl^(1)Wqo+sJ) z7Q4pi3ax?pLdn)hwi`0K-Ntbp$8pKlOBN2>>Vu90jXWb^^{1ddOX>^jN%kl{;l zd@{$UNcJ>~Z8m)1$ul@UQ?eT@c9Y?Ij^lGUK3B5mTkP|O59+;;m+--$InXkdC3k!#vou{;CQcOUy|%#WDMTT@hcp^ zD%sa9_I_jVHyppo@mrF8$6~)V215<+as0kyKa}hcWDEiJV~#(O>}QhAK}HVr_Y01{ zl4vYQP$OA(sCoakAk{yYRk<&QI;G~me4U3&_jNHfx=cKb_vn+O# zF%oL%#!0qhdq_4P8Tomf^x~wqWPKJp(#YSyNk2~dOLm~eo^9kqy@NR!BH3Jv-DKqN z=42Qr!zG(%vELf`&{{qxqa-^wNHJi&>)6_BSb_E}Dz zYH_lOHAfv&H_($#0ze&WT)wSFz7VF_OgVRo&$`hS>Ew(eKT{z9+w5w#ZEw%@zJvr^gsa#pqXR-Y_?a%1|P6tYM zu*K$Zn#<`>PKQZ$gvE~JG@sK^oXS(0jax^g%(dB0C4vK0Qn$*(?pK}xJ>jkfZIfS0CW?*4B#=*8vq$5 zdKaLRi9Q0zG|}e(hKarb@S5mH0B)k+06LrKZ-6c)rT|$cW&mAH>;dRzVlP0piMs-H zH*rsZ9wzP!(9^_&0D75tC_rx$j|Avr;;{fe6Hfx@YvO4D{Y+d0(BH&CfB_~B0}M2A z6kw2v=K>5i@qByUWu8A7~hMIUOz%Uap0~l`NRRAMQyapi8#OnY?n)oz; zd=qZ~7-iz~0Y;nn5`Zx#z7k-piLU_|XX5Jt#+&#SfC(lx0VbMw2f!o~-wQC=#18;W zG4Z1SQ%(F7z!4^X9$=b@UjmqJ;@1KECVmH?z{DQ{6q@)mfFcur4G=K#4*)Yv{3}4Q ziT?s9F$n<(n#2Jx(P!Mbni)6AR)9q&5w5E@$u58flRN^DFo_7v z#U|Mcu*4+7S&b%n51`2;p8_OJB0@1`lAi&ZO(NX0)T9bP+N5rP7L$tLYc**$K$}U0 zLzbCzFu-z?jsRF;QW0(|O*#eO7?TPYtTO3LfMZR1WON&ydpl%?gdT;E`*rd&LfDTS zxBxkEA##J9fu}RtP!+C6^FUsJ>rf0Q(Gr|OO}H7QKu+T()P|R%)p!M3i&vr(L0*rS zp;Pf1bRJ%dF2EOZ_;M>q|cq{q?S1;2iuE9*v*IWAQV1Jjj#qlXxnA z5f|f^a1g(YXMr5Xd-0L@Ej$mujpyTca5cy^_)Q$gALA7M1TV#(;uesX;g9f2{0%-4 ze~Z`Q@9@bWpN7B2XX0P+Mff*-3H}{l2J)5o7km}L_$ET|t%Ty+LB4|^yo0##1H_FV zCOUo$1$Nf-PU$nO#_{($ttUyI zAnRlx=|u8KHW^8Jl6=w!0eY+5OpY&s)|Mx#Yr<1xH>3VG*ih2xhM4~eP~xDhjvqj(QG9T1w zp#78p$R)IoGK=OYl{8nGONT1+KwdzHC^0%pSwcrENjgSZ3UVvWSC-Ss%33-_If+hH zP6qijI!QT`7AY6efO09FpJ%7_|porS_)Bs(nEoKv$}R>4|DSJxLuy*Qw({oPnE0rB|w}=?&_s^hWgzdXu^VIHP0x{=*uLb#fYN|KU`_wz>E_El}t=L(z7PM=r5qHn0b&^OiJ>09bw^bHNs*ELE%(meEIEt7r%_r#C1 zEc&6AO~29l({Hsw^gAsF{AEuUbGMT125*xuR&5AkS5> zHcxSDaYfe}6pyw97K$`I`qkhdxWwQWkCcAqj*yI;xI9s>DMWrX&GGEv*BOwwLfCTp*O{H8KN zdq*kMK2wUcFO`7y4anas1=>$aNZY5BI*1Z>s7lDelvxh9Qt9ZT%yx8B<~VwQ+*_$| z^i`@ILzRV&5lYOF5Aqmgfn&UqaQKzQjv{4=qZs6wN`s?RNjv5!Esmpyph7b;5~ zwaT%MCgnIsvvRzn1>|MQD#uD?z2ijXWXF2t6vwF`pP{UCY*02hE>X^QT&|qs*a-5~ z%2|$Ul}jAADVI7-eAn#NzcHE;}<9I~b?08(c*6|d`&nj0t_9(YF-cW9Jysg~k zcn{|$Jbob^(kU_RwZ z)*s|S%3~}?*~3OFFR*dSUN#ZrDa!L~n(_t@~Fq`#|lTG9=8gm|});QOwwaybkUau~6o~kZ!o~JfCFI1bHmwS@kb)zh7Cfc&<4it|17Jm(kc`OdG^ z3!LA9{G)oV^B46B7gn!yDe6X-17w$axyz$&adlO%cXd~9aPNeMCkjJT8T@%%NT!rert{Limt{})E^=?;0eZ*CzKI%GJeaux2a*g`1E3Q80N~zDg z(&`>p8^|lvXI-n**Iet=*IlQmZ@5ke`7HHS*E#CvuFKRfTvw`Jx~>9wv-+89i~61G zR`q+=9qJFRyVW0E_p3j-9#wyKJ+1!Y+N=KRdR_g^^`82>>r?d)*Ei~)uAkMvTz{#5 zyA^ex+pQtDSHtdXjktXpbr04Q_XtgOkJU8y6wTo-)R=pw=5!yax!iL#x4T-?-HSAj zyGhG%w`!f-tF%n_37X+PRr9*f*0}p3t+V?|t&96wEz5ng*44dD>*l^&%XUAYb$36m z^>9C@^>n|i^>V+Z^>%-#^>Kfp`P|=Yeciul{dA=D*B#mbJwqF)chLsvJ+;Ale{G1K ztL5nVTCP4p8>&y!hUqi3;d-eyLa)&B^m*Dyy++H|6WS=fSsSe{*T(3_Yh(3w+Bp3T zZM=S-HbK8so2XxoGgn*NkFU4KFI>#u1A`ny`8{)twk zf2{@dpR^hJpIWhpY9$_*7W5d}Oiwp$mZy&v@(j{SJ;SxIXN(r{OxDUg1=^9GpjPfF z)1sa^T7_qUR_TdrvptR498Zfj*K>?khg?YU5!@3}%-;MuHIdv4Me zdQ2_mxl60@+^^Mo9@FYP&uVecOWGpOn_9i+1FgaHxt8#Jr!DsUsx9&C(;720ttrE! zB{K~5yNu50QaVrE^5y@<=o0H|A+!RXRKTp<;XCNjxjpWr)wwl|a%K&>zAEL-uVl#s-i)I@3*A*cKbJ4=3Htsp0@rww*5 z@&JXs+I=TYY(3DZRmnrL5#2JNjkF0+6kcK%egmo%9jNTiY3XK^aSu&aaoW6trgzgR zCY`%Wshhe5jqcHNp>oU-@Z4+EB&B<{atE!x8o7E&WtM!7Z5Gc9r))u5wz9QH&&~Uu z#RoexN&L(V?ST=!fV}7>)ET{udZ1TOZ}b`(fL=#Kp(A6^n`kn63l*Wa(Jb^X3WGk1 z-f!onO4=g7i0h2}v{eqU2bx6Nq?ZPuT)GS-3U&3T;_F5QWz!XOr8Q7e12r(n&KBlo z`nJ6*|M)Gar&`T(&W2!}~e4VmFllIaf^J++W#1pj}GzJp*pm)U41>^KP0}G1V>NO z=r|=?+ci$zg1TpGU6fJbVY$QaptZ6hb@DWqF%M{qb(@)j{<|O0>Yfr8#ujb zJH2I+V_0ss%Dz?`3j z`oqv%$c5dI0qc+fdm!`ega+YEG#ndf6y|6w{8!*CRE@i$THGBaaSzC5d!yrUAIN0; zqm$r&GaiKQ#)HwLcnEqNoiSij=K$cG4$y-Rqi_3tRC~S`Ss*=wn;OFCfLQLg+K77aD|e0CUl3G!C%+DsQ(v(dXpn Z^K_5=eG6o^^ac7NEQPfoy)?c1{{u(jABg|} literal 17734 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 QeSqSBEXDMG`XEaAKUSNVbpQYW diff --git a/libjava/classpath/lib/java/lang/Character.class b/libjava/classpath/lib/java/lang/Character.class index 3d41ebef22d3e1ca130b15a15ae1661939eaaf7a..68f96fbda0f98e40b6da34babb2e64c7e116b9fe 100644 GIT binary patch literal 13096 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 dq>t?o8$$_8J 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 Z{O`O`)+H)@1&iToh7T0%O0)^8`+sAZ?xO$z diff --git a/libjava/classpath/lib/java/lang/String$CaseInsensitiveComparator.class b/libjava/classpath/lib/java/lang/String$CaseInsensitiveComparator.class index ffb4541d2933c68f3624126be835b411c63d481f..3a0450c2ab7529676591774fb8da32f0520af5ef 100644 GIT binary patch delta 379 zc-ni;x|5yj)W2Q(7#J7~8MHTYIWU?9mlS2@rCa-CC6*=X=OpH(>qA8}J-Ha97-ZNP zq!}3m&}An#FuL(T6*4j~`|<6AMHbttU$`$ulxfwqVk#?_dxCx|j!O zIs*eMgD8U-kY)r~10)52Y!?P524*15rmeG$L2?a{#l#>C;)8X}0P9wOsDSDQvE+eb zj9```ki{h62sBX%YN9SsHAp?Lmi7S#XDOWn3{u+|l+jIQ1e?qR#LNt;V3rz#I*cIN1LQL?2m?tr21Xz`nLz|dDnQgRh%$&VFo0R|Kru!zOA*Lo0zxIQPGtra PAk77oV+1-xl|c#sVVNK6 diff --git a/libjava/classpath/lib/java/lang/String.class b/libjava/classpath/lib/java/lang/String.class index 873c22c546dfa93f852769e72d891a37eb64f4f2..27d3118a67ce18bab010d3a3090c83d9335eb29f 100644 GIT binary patch literal 10265 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 ObtHEh^UW`#BJ*}c1; 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 diff --git a/libjava/classpath/lib/java/lang/StringBuffer.class b/libjava/classpath/lib/java/lang/StringBuffer.class index 6fca27a3fad7d63339c786b130b379e0f7385106..60b7144904619f5f26220fc42d9ab6007fb81fe5 100644 GIT binary patch literal 10783 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 B>g50c literal 10367 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 diff --git a/libjava/classpath/lib/java/lang/StringBuilder.class b/libjava/classpath/lib/java/lang/StringBuilder.class index 8636b53aa5d7f5f01f192311c01d8765fae30fcb..90e6fab2565cd49207f3fed26af29f48a8891739 100644 GIT binary patch delta 819 zc-nnZO>YuW6g_u%e8>zGiUG=i1(Z_3L|a$7A=nkM3;alvRuipdj1wy)m1^RKg>m7+ z)vSywKbCA7E0DHn_onfOxU5=jYpeGSh{T1P`_9~Z=A3h1-qz*Sa^U09+9rSrI_`!- zh*(!#k(KOKt)VW|Dn_|xR_n#O7tioj!w$X?+~YTGVhF!_> z_h(bJac&f(Znfb+KhLht~S&3SHm*3jgRI91^6;iDYZCW9}<@KFX zC}^GY-J=WdU;1uG8mzs8=Uk(_d=U;PeEM>$Nb6j39einWLqVLYi)nD|BEdM^CE^4| z0UMPO%$f8=I*axq)#HPm%%&$jVt%a#`%d~Y`T;(jJWxZn|P1cYb6B-S^H^-cEh zxo7eMPWdMa`YQzV_*Glp8>9!7<9o}!_r{2O*h|t2FIHMLRZE|pq1_z1jl@5u& zYlc}7B7&fZA}vO6me2DdW+zH^z50m?XxoV-T4SVu$c0ER+kIA&8)Ri7x%B26BqZK& zPRmb6{-&dQ%Y|J21JW!1WEh1eQV5AOQsN}WL}uVtvb_u;gvia60!7S`hu`io?h4M~ rwbaaHinPI&9czpQq=YM%Z;{VRW)dkH`VUKQQGi(^{19naMx@Yh(qM`; delta 184 zc-q?%u-{wY)W2Q(7#J7~8UC>|FflTSPYz@g->4qM!(^l}IeD715ILKU}X3*xk24Xk>MM% u5Q7Aer3MsX0@7?++S?euPZrdWR0V7PiASaMHiln7mC_sxe}H@@hQ9#mE-7*V diff --git a/libjava/java/lang/Character$UnicodeBlock$NameType.h b/libjava/java/lang/Character$UnicodeBlock$NameType.h new file mode 100644 index 000000000000..2b83115b064b --- /dev/null +++ b/libjava/java/lang/Character$UnicodeBlock$NameType.h @@ -0,0 +1,29 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __java_lang_Character$UnicodeBlock$NameType__ +#define __java_lang_Character$UnicodeBlock$NameType__ + +#pragma interface + +#include +#include + + +class java::lang::Character$UnicodeBlock$NameType : public ::java::lang::Enum +{ + + Character$UnicodeBlock$NameType(::java::lang::String *, jint); +public: + static JArray< ::java::lang::Character$UnicodeBlock$NameType * > * values(); + static ::java::lang::Character$UnicodeBlock$NameType * valueOf(::java::lang::String *); + static ::java::lang::Character$UnicodeBlock$NameType * CANONICAL; + static ::java::lang::Character$UnicodeBlock$NameType * NO_SPACES; + static ::java::lang::Character$UnicodeBlock$NameType * CONSTANT; +private: + static JArray< ::java::lang::Character$UnicodeBlock$NameType * > * ENUM$VALUES; +public: + static ::java::lang::Class class$; +}; + +#endif // __java_lang_Character$UnicodeBlock$NameType__ diff --git a/libjava/java/lang/Character$UnicodeBlock.h b/libjava/java/lang/Character$UnicodeBlock.h index 43fa6b447e35..b32f2121e61b 100644 --- a/libjava/java/lang/Character$UnicodeBlock.h +++ b/libjava/java/lang/Character$UnicodeBlock.h @@ -18,13 +18,12 @@ public: static ::java::lang::Character$UnicodeBlock * of(jchar); static ::java::lang::Character$UnicodeBlock * of(jint); static ::java::lang::Character$UnicodeBlock * forName(::java::lang::String *); +public: // actually package-private + static JArray< jint > * $SWITCH_TABLE$java$lang$Character$UnicodeBlock$NameType(); private: jint __attribute__((aligned(__alignof__( ::java::lang::Character$Subset)))) start; jint end; ::java::lang::String * canonicalName; - static const jint CANONICAL_NAME = 0; - static const jint NO_SPACES_NAME = 1; - static const jint CONSTANT_NAME = 2; public: static ::java::lang::Character$UnicodeBlock * BASIC_LATIN; static ::java::lang::Character$UnicodeBlock * LATIN_1_SUPPLEMENT; @@ -154,6 +153,7 @@ public: static ::java::lang::Character$UnicodeBlock * SURROGATES_AREA; private: static JArray< ::java::lang::Character$UnicodeBlock * > * sets; + static JArray< jint > * $SWITCH_TABLE$java$lang$Character$UnicodeBlock$NameType__; public: static ::java::lang::Class class$; }; diff --git a/libjava/java/lang/Character.h b/libjava/java/lang/Character.h index ed913ab7c7e2..7c3a4b9ae3fc 100644 --- a/libjava/java/lang/Character.h +++ b/libjava/java/lang/Character.h @@ -34,6 +34,10 @@ public: static jboolean isDefined(jint); static jboolean isLetter(jchar); static jboolean isLetter(jint); + static jint offsetByCodePoints(::java::lang::CharSequence *, jint, jint); + static jint offsetByCodePoints(JArray< jchar > *, jint, jint, jint, jint); + static jint codePointCount(::java::lang::CharSequence *, jint, jint); + static jint codePointCount(JArray< jchar > *, jint, jint); static jboolean isLetterOrDigit(jchar); static jboolean isLetterOrDigit(jint); static jboolean isJavaLetter(jchar); @@ -72,8 +76,7 @@ public: static jbyte getDirectionality(jint); static jboolean isMirrored(jchar); static jboolean isMirrored(jint); - jint compareTo(::java::lang::Character *); - jint compareTo(::java::lang::Object *); + jint target$compareTo(::java::lang::Character *); static ::java::lang::Character * valueOf(jchar); static jchar reverseBytes(jchar); static JArray< jchar > * toChars(jint); @@ -91,6 +94,7 @@ public: static jint codePointBefore(JArray< jchar > *, jint); static jint codePointBefore(JArray< jchar > *, jint, jint); static jint codePointBefore(::java::lang::CharSequence *, jint); + jint compareTo(::java::lang::Object *); private: jchar __attribute__((aligned(__alignof__( ::java::lang::Object)))) value; static const jlong serialVersionUID = 3786198910865385080LL; @@ -99,6 +103,15 @@ public: static const jint MAX_RADIX = 36; static const jchar MIN_VALUE = 0; static const jchar MAX_VALUE = 65535; + static const jint MIN_CODE_POINT = 0; + static const jint MAX_CODE_POINT = 1114111; + static const jchar MIN_HIGH_SURROGATE = 55296; + static const jchar MAX_HIGH_SURROGATE = 56319; + static const jchar MIN_LOW_SURROGATE = 56320; + static const jchar MAX_LOW_SURROGATE = 57343; + static const jchar MIN_SURROGATE = 55296; + static const jchar MAX_SURROGATE = 57343; + static const jint MIN_SUPPLEMENTARY_CODE_POINT = 65536; static ::java::lang::Class * TYPE; static const jint SIZE = 16; private: @@ -160,15 +173,6 @@ private: static const jint NO_BREAK_MASK = 32; static const jint MIRROR_MASK = 64; public: - static const jint MIN_SUPPLEMENTARY_CODE_POINT = 65536; - static const jint MIN_CODE_POINT = 0; - static const jint MAX_CODE_POINT = 1114111; - static const jchar MIN_HIGH_SURROGATE = 55296; - static const jchar MAX_HIGH_SURROGATE = 56319; - static const jchar MIN_LOW_SURROGATE = 56320; - static const jchar MAX_LOW_SURROGATE = 57343; - static const jchar MIN_SURROGATE = 55296; - static const jchar MAX_SURROGATE = 57343; static ::java::lang::Class class$; }; diff --git a/libjava/java/lang/Character.java b/libjava/java/lang/Character.java index ec6d2a4af144..0cc9d3c57bdc 100644 --- a/libjava/java/lang/Character.java +++ b/libjava/java/lang/Character.java @@ -1,5 +1,6 @@ /* java.lang.Character -- Wrapper class for char, and Unicode subsets - Copyright (C) 1998, 1999, 2001, 2002, 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2002, 2005, 2006, 2007 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -54,7 +55,7 @@ import java.util.Locale; /** * Wrapper class for the primitive char data type. In addition, this class * allows one to retrieve property information and perform transformations - * on the 57,707 defined characters in the Unicode Standard, Version 3.0.0. + * on the defined characters in the Unicode Standard, Version 4.0.0. * java.lang.Character is designed to be very dynamic, and as such, it * retrieves information on the Unicode character set from a separate * database, gnu.java.lang.CharData, which can be easily upgraded. @@ -62,7 +63,7 @@ import java.util.Locale; *

For predicates, boundaries are used to describe * the set of characters for which the method will return true. * This syntax uses fairly normal regular expression notation. - * See 5.13 of the Unicode Standard, Version 3.0, for the + * See 5.13 of the Unicode Standard, Version 4.0, for the * boundary specification. * *

See http://www.unicode.org @@ -72,10 +73,11 @@ import java.util.Locale; * @author Paul N. Fisher * @author Jochen Hoenicke * @author Eric Blake (ebb9@email.byu.edu) + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) * @since 1.0 - * @status updated to 1.4 + * @status partly updated to 1.5; some things still missing */ -public final class Character implements Serializable, Comparable +public final class Character implements Serializable, Comparable { /** * A subset of Unicode blocks. @@ -160,10 +162,8 @@ public final class Character implements Serializable, Comparable /** The canonical name of the block according to the Unicode standard. */ private final String canonicalName; - /** Constants for the forName() method */ - private static final int CANONICAL_NAME = 0; - private static final int NO_SPACES_NAME = 1; - private static final int CONSTANT_NAME = 2; + /** Enumeration for the forName() method */ + private enum NameType { CANONICAL, NO_SPACES, CONSTANT; }; /** * Constructor for strictly defined blocks. @@ -173,7 +173,7 @@ public final class Character implements Serializable, Comparable * @param name the block name */ private UnicodeBlock(int start, int end, String name, - String canonicalName) + String canonicalName) { super(name); this.start = start; @@ -207,8 +207,8 @@ public final class Character implements Serializable, Comparable public static UnicodeBlock of(int codePoint) { if (codePoint > MAX_CODE_POINT) - throw new IllegalArgumentException("The supplied integer value is " + - "too large to be a codepoint."); + throw new IllegalArgumentException("The supplied integer value is " + + "too large to be a codepoint."); // Simple binary search for the correct block. int low = 0; int hi = sets.length - 1; @@ -262,59 +262,51 @@ public final class Character implements Serializable, Comparable */ public static final UnicodeBlock forName(String blockName) { - int type; + NameType type; if (blockName.indexOf(' ') != -1) - type = CANONICAL_NAME; + type = NameType.CANONICAL; else if (blockName.indexOf('_') != -1) - type = CONSTANT_NAME; + type = NameType.CONSTANT; else - type = NO_SPACES_NAME; + type = NameType.NO_SPACES; Collator usCollator = Collator.getInstance(Locale.US); usCollator.setStrength(Collator.PRIMARY); /* Special case for deprecated blocks not in sets */ switch (type) { - case CANONICAL_NAME: + case CANONICAL: if (usCollator.compare(blockName, "Surrogates Area") == 0) return SURROGATES_AREA; break; - case NO_SPACES_NAME: + case NO_SPACES: if (usCollator.compare(blockName, "SurrogatesArea") == 0) return SURROGATES_AREA; break; - case CONSTANT_NAME: + case CONSTANT: if (usCollator.compare(blockName, "SURROGATES_AREA") == 0) return SURROGATES_AREA; break; } /* Other cases */ - int setLength = sets.length; switch (type) { - case CANONICAL_NAME: - for (int i = 0; i < setLength; i++) - { - UnicodeBlock block = sets[i]; - if (usCollator.compare(blockName, block.canonicalName) == 0) - return block; - } + case CANONICAL: + for (UnicodeBlock block : sets) + if (usCollator.compare(blockName, block.canonicalName) == 0) + return block; break; - case NO_SPACES_NAME: - for (int i = 0; i < setLength; i++) - { - UnicodeBlock block = sets[i]; - String nsName = block.canonicalName.replaceAll(" ",""); - if (usCollator.compare(blockName, nsName) == 0) - return block; - } - break; - case CONSTANT_NAME: - for (int i = 0; i < setLength; i++) - { - UnicodeBlock block = sets[i]; - if (usCollator.compare(blockName, block.toString()) == 0) - return block; - } + case NO_SPACES: + for (UnicodeBlock block : sets) + { + String nsName = block.canonicalName.replaceAll(" ",""); + if (usCollator.compare(blockName, nsName) == 0) + return block; + } + break; + case CONSTANT: + for (UnicodeBlock block : sets) + if (usCollator.compare(blockName, block.toString()) == 0) + return block; break; } throw new IllegalArgumentException("No Unicode block found for " + @@ -1517,10 +1509,11 @@ public final class Character implements Serializable, Comparable * this. These are also returned from calls to of(int) * and of(char). */ + @Deprecated public static final UnicodeBlock SURROGATES_AREA = new UnicodeBlock(0xD800, 0xDFFF, "SURROGATES_AREA", - "Surrogates Area"); + "Surrogates Area"); /** * The defined subsets. @@ -1698,12 +1691,79 @@ public final class Character implements Serializable, Comparable */ public static final char MAX_VALUE = '\uFFFF'; + /** + * The minimum Unicode 4.0 code point. This value is 0. + * @since 1.5 + */ + public static final int MIN_CODE_POINT = 0; + + /** + * The maximum Unicode 4.0 code point, which is greater than the range + * of the char data type. + * This value is 0x10FFFF. + * @since 1.5 + */ + public static final int MAX_CODE_POINT = 0x10FFFF; + + /** + * The minimum Unicode high surrogate code unit, or + * leading-surrogate, in the UTF-16 character encoding. + * This value is '\uD800'. + * @since 1.5 + */ + public static final char MIN_HIGH_SURROGATE = '\uD800'; + + /** + * The maximum Unicode high surrogate code unit, or + * leading-surrogate, in the UTF-16 character encoding. + * This value is '\uDBFF'. + * @since 1.5 + */ + public static final char MAX_HIGH_SURROGATE = '\uDBFF'; + + /** + * The minimum Unicode low surrogate code unit, or + * trailing-surrogate, in the UTF-16 character encoding. + * This value is '\uDC00'. + * @since 1.5 + */ + public static final char MIN_LOW_SURROGATE = '\uDC00'; + + /** + * The maximum Unicode low surrogate code unit, or + * trailing-surrogate, in the UTF-16 character encoding. + * This value is '\uDFFF'. + * @since 1.5 + */ + public static final char MAX_LOW_SURROGATE = '\uDFFF'; + + /** + * The minimum Unicode surrogate code unit in the UTF-16 character encoding. + * This value is '\uD800'. + * @since 1.5 + */ + public static final char MIN_SURROGATE = MIN_HIGH_SURROGATE; + + /** + * The maximum Unicode surrogate code unit in the UTF-16 character encoding. + * This value is '\uDFFF'. + * @since 1.5 + */ + public static final char MAX_SURROGATE = MAX_LOW_SURROGATE; + + /** + * The lowest possible supplementary Unicode code point (the first code + * point outside the basic multilingual plane (BMP)). + * This value is 0x10000. + */ + public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x10000; + /** * Class object representing the primitive char data type. * * @since 1.1 */ - public static final Class TYPE = VMClassLoader.getPrimitiveClass('C'); + public static final Class TYPE = (Class) VMClassLoader.getPrimitiveClass('C'); /** * The number of bits needed to represent a char. @@ -2088,71 +2148,6 @@ public final class Character implements Serializable, Comparable */ private static final int MIRROR_MASK = 0x40; - /** - * Min value for supplementary code point. - * - * @since 1.5 - */ - public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x10000; - - /** - * Min value for code point. - * - * @since 1.5 - */ - public static final int MIN_CODE_POINT = 0; - - - /** - * Max value for code point. - * - * @since 1.5 - */ - public static final int MAX_CODE_POINT = 0x010ffff; - - - /** - * Minimum high surrogate code in UTF-16 encoding. - * - * @since 1.5 - */ - public static final char MIN_HIGH_SURROGATE = '\ud800'; - - /** - * Maximum high surrogate code in UTF-16 encoding. - * - * @since 1.5 - */ - public static final char MAX_HIGH_SURROGATE = '\udbff'; - - /** - * Minimum low surrogate code in UTF-16 encoding. - * - * @since 1.5 - */ - public static final char MIN_LOW_SURROGATE = '\udc00'; - - /** - * Maximum low surrogate code in UTF-16 encoding. - * - * @since 1.5 - */ - public static final char MAX_LOW_SURROGATE = '\udfff'; - - /** - * Minimum surrogate code in UTF-16 encoding. - * - * @since 1.5 - */ - public static final char MIN_SURROGATE = MIN_HIGH_SURROGATE; - - /** - * Maximum low surrogate code in UTF-16 encoding. - * - * @since 1.5 - */ - public static final char MAX_SURROGATE = MAX_LOW_SURROGATE; - /** * Grabs an attribute offset from the Unicode attribute database. The lower * 5 bits are the character type, the next 2 bits are flags, and the top @@ -2504,6 +2499,209 @@ public final class Character implements Serializable, Comparable | (1 << MODIFIER_LETTER) | (1 << OTHER_LETTER))) != 0; } + + /** + * Returns the index into the given CharSequence that is offset + * codePointOffset code points from index. + * @param seq the CharSequence + * @param index the start position in the CharSequence + * @param codePointOffset the number of code points offset from the start + * position + * @return the index into the CharSequence that is codePointOffset code + * points offset from index + * + * @throws NullPointerException if seq is null + * @throws IndexOutOfBoundsException if index is negative or greater than the + * length of the sequence. + * @throws IndexOutOfBoundsException if codePointOffset is positive and the + * subsequence from index to the end of seq has fewer than codePointOffset + * code points + * @throws IndexOutOfBoundsException if codePointOffset is negative and the + * subsequence from the start of seq to index has fewer than + * (-codePointOffset) code points + * @since 1.5 + */ + public static int offsetByCodePoints(CharSequence seq, + int index, + int codePointOffset) + { + int len = seq.length(); + if (index < 0 || index > len) + throw new IndexOutOfBoundsException(); + + int numToGo = codePointOffset; + int offset = index; + int adjust = 1; + if (numToGo >= 0) + { + for (; numToGo > 0; offset++) + { + numToGo--; + if (Character.isHighSurrogate(seq.charAt(offset)) + && (offset + 1) < len + && Character.isLowSurrogate(seq.charAt(offset + 1))) + offset++; + } + return offset; + } + else + { + numToGo *= -1; + for (; numToGo > 0;) + { + numToGo--; + offset--; + if (Character.isLowSurrogate(seq.charAt(offset)) + && (offset - 1) >= 0 + && Character.isHighSurrogate(seq.charAt(offset - 1))) + offset--; + } + return offset; + } + } + + /** + * Returns the index into the given char subarray that is offset + * codePointOffset code points from index. + * @param a the char array + * @param start the start index of the subarray + * @param count the length of the subarray + * @param index the index to be offset + * @param codePointOffset the number of code points offset from index + * + * @return the index into the char array + * + * @throws NullPointerException if a is null + * @throws IndexOutOfBoundsException if start or count is negative or if + * start + count is greater than the length of the array + * @throws IndexOutOfBoundsException if index is less than start or larger + * than start + count + * @throws IndexOutOfBoundsException if codePointOffset is positive and the + * subarray from index to start + count - 1 has fewer than codePointOffset + * code points. + * @throws IndexOutOfBoundsException if codePointOffset is negative and the + * subarray from start to index - 1 has fewer than (-codePointOffset) code + * points + * @since 1.5 + + */ + public static int offsetByCodePoints(char[] a, + int start, + int count, + int index, + int codePointOffset) + { + int len = a.length; + int end = start + count; + if (start < 0 || count < 0 || end > len || index < start || index > end) + throw new IndexOutOfBoundsException(); + + int numToGo = codePointOffset; + int offset = index; + int adjust = 1; + if (numToGo >= 0) + { + for (; numToGo > 0; offset++) + { + numToGo--; + if (Character.isHighSurrogate(a[offset]) + && (offset + 1) < len + && Character.isLowSurrogate(a[offset + 1])) + offset++; + } + return offset; + } + else + { + numToGo *= -1; + for (; numToGo > 0;) + { + numToGo--; + offset--; + if (Character.isLowSurrogate(a[offset]) + && (offset - 1) >= 0 + && Character.isHighSurrogate(a[offset - 1])) + offset--; + if (offset < start) + throw new IndexOutOfBoundsException(); + } + return offset; + } + + } + + /** + * Returns the number of Unicode code points in the specified range of the + * given CharSequence. The first char in the range is at position + * beginIndex and the last one is at position endIndex - 1. Paired + * surrogates (supplementary characters are represented by a pair of chars - + * one from the high surrogates and one from the low surrogates) + * count as just one code point. + * @param seq the CharSequence to inspect + * @param beginIndex the beginning of the range + * @param endIndex the end of the range + * @return the number of Unicode code points in the given range of the + * sequence + * @throws NullPointerException if seq is null + * @throws IndexOutOfBoundsException if beginIndex is negative, endIndex is + * larger than the length of seq, or if beginIndex is greater than endIndex. + * @since 1.5 + */ + public static int codePointCount(CharSequence seq, int beginIndex, + int endIndex) + { + int len = seq.length(); + if (beginIndex < 0 || endIndex > len || beginIndex > endIndex) + throw new IndexOutOfBoundsException(); + + int count = 0; + for (int i = beginIndex; i < endIndex; i++) + { + count++; + // If there is a pairing, count it only once. + if (isHighSurrogate(seq.charAt(i)) && (i + 1) < endIndex + && isLowSurrogate(seq.charAt(i + 1))) + i ++; + } + return count; + } + + /** + * Returns the number of Unicode code points in the specified range of the + * given char array. The first char in the range is at position + * offset and the length of the range is count. Paired surrogates + * (supplementary characters are represented by a pair of chars - + * one from the high surrogates and one from the low surrogates) + * count as just one code point. + * @param a the char array to inspect + * @param offset the beginning of the range + * @param count the length of the range + * @return the number of Unicode code points in the given range of the + * array + * @throws NullPointerException if a is null + * @throws IndexOutOfBoundsException if offset or count is negative or if + * offset + countendIndex is larger than the length of a. + * @since 1.5 + */ + public static int codePointCount(char[] a, int offset, + int count) + { + int len = a.length; + int end = offset + count; + if (offset < 0 || count < 0 || end > len) + throw new IndexOutOfBoundsException(); + + int counter = 0; + for (int i = offset; i < end; i++) + { + counter++; + // If there is a pairing, count it only once. + if (isHighSurrogate(a[i]) && (i + 1) < end + && isLowSurrogate(a[i + 1])) + i ++; + } + return counter; + } /** * Determines if a character is a Unicode letter or a Unicode digit. This @@ -3496,23 +3694,6 @@ public final class Character implements Serializable, Comparable return value - anotherCharacter.value; } - /** - * Compares an object to this Character. Assuming the object is a - * Character object, this method performs the same comparison as - * compareTo(Character). - * - * @param o object to compare - * @return the comparison value - * @throws ClassCastException if o is not a Character object - * @throws NullPointerException if o is null - * @see #compareTo(Character) - * @since 1.2 - */ - public int compareTo(Object o) - { - return compareTo((Character) o); - } - /** * Returns an Character object wrapping the value. * In contrast to the Character constructor, this method @@ -3520,7 +3701,7 @@ public final class Character implements Serializable, Comparable * * @param val the value to wrap * @return the Character - * + * * @since 1.5 */ public static Character valueOf(char val) @@ -3529,9 +3710,9 @@ public final class Character implements Serializable, Comparable return new Character(val); synchronized (charCache) { - if (charCache[val - MIN_VALUE] == null) - charCache[val - MIN_VALUE] = new Character(val); - return charCache[val - MIN_VALUE]; + if (charCache[val - MIN_VALUE] == null) + charCache[val - MIN_VALUE] = new Character(val); + return charCache[val - MIN_VALUE]; } } @@ -3559,6 +3740,9 @@ public final class Character implements Serializable, Comparable */ public static char[] toChars(int codePoint) { + if (!isValidCodePoint(codePoint)) + throw new IllegalArgumentException("Illegal Unicode code point : " + + codePoint); char[] result = new char[charCount(codePoint)]; int ignore = toChars(codePoint, result, 0); return result; @@ -3776,7 +3960,7 @@ public final class Character implements Serializable, Comparable */ public static int codePointAt(char[] chars, int index, int limit) { - if (index < 0 || index >= limit || limit < 0 || limit >= chars.length) + if (index < 0 || index >= limit || limit < 0 || limit > chars.length) throw new IndexOutOfBoundsException(); char high = chars[index]; if (! isHighSurrogate(high) || ++index >= limit) diff --git a/libjava/java/lang/String$CaseInsensitiveComparator.h b/libjava/java/lang/String$CaseInsensitiveComparator.h index 11c0ea557b71..b0c3d620973f 100644 --- a/libjava/java/lang/String$CaseInsensitiveComparator.h +++ b/libjava/java/lang/String$CaseInsensitiveComparator.h @@ -14,6 +14,7 @@ class java::lang::String$CaseInsensitiveComparator : public ::java::lang::Object public: // actually package-private String$CaseInsensitiveComparator(); public: + jint target$compare(::java::lang::String *, ::java::lang::String *); jint compare(::java::lang::Object *, ::java::lang::Object *); private: static const jlong serialVersionUID = 8575799808933029326LL; diff --git a/libjava/java/lang/String.h b/libjava/java/lang/String.h index 44be2741c30c..eea80fb9e16c 100644 --- a/libjava/java/lang/String.h +++ b/libjava/java/lang/String.h @@ -62,8 +62,10 @@ public: jboolean contentEquals(::java::lang::StringBuffer *); jboolean contentEquals(::java::lang::CharSequence *); jboolean equalsIgnoreCase(::java::lang::String *); - jint compareTo(::java::lang::String *); - jint compareTo(::java::lang::Object *); + jint target$compareTo(::java::lang::String *); +private: + jint nativeCompareTo(::java::lang::String *); +public: jint compareToIgnoreCase(::java::lang::String *); jboolean regionMatches(jint, ::java::lang::String *, jint, jint); jboolean regionMatches(jboolean, jint, ::java::lang::String *, jint, jint); @@ -107,15 +109,22 @@ public: static ::java::lang::String * valueOf(jlong); static ::java::lang::String * valueOf(jfloat); static ::java::lang::String * valueOf(jdouble); + static ::java::lang::String * format(::java::util::Locale *, ::java::lang::String *, JArray< ::java::lang::Object * > *); + static ::java::lang::String * format(::java::lang::String *, JArray< ::java::lang::Object * > *); ::java::lang::String * intern(); jint codePointCount(jint, jint); jboolean contains(::java::lang::CharSequence *); ::java::lang::String * replace(::java::lang::CharSequence *, ::java::lang::CharSequence *); + jint offsetByCodePoints(jint, jint); + jboolean isEmpty(); private: void init(JArray< jchar > *, jint, jint, jboolean); void init(JArray< jbyte > *, jint, jint, jint); void init(JArray< jbyte > *, jint, jint, ::java::lang::String *); void init(::gnu::gcj::runtime::StringBuffer *); +public: + jint compareTo(::java::lang::Object *); +private: static const jlong serialVersionUID = -6849794470754667710LL; ::java::lang::Object * __attribute__((aligned(__alignof__( ::java::lang::Object)))) data; jint boffset; diff --git a/libjava/java/lang/String.java b/libjava/java/lang/String.java index bd75797a2b1a..d5bb41502112 100644 --- a/libjava/java/lang/String.java +++ b/libjava/java/lang/String.java @@ -1,5 +1,5 @@ /* String.java -- immutable character sequences; the object of string literals - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -41,9 +41,11 @@ package java.lang; import java.io.Serializable; import java.io.UnsupportedEncodingException; -import java.lang.Comparable; import java.util.Comparator; +import java.text.Collator; +import java.util.Formatter; import java.util.Locale; +import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; @@ -70,10 +72,13 @@ import java.util.regex.PatternSyntaxException; * @author Paul N. Fisher * @author Eric Blake (ebb9@email.byu.edu) * @author Per Bothner (bothner@cygnus.com) + * @author Tom Tromey (tromey@redhat.com) + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) * @since 1.0 * @status updated to 1.4 */ -public final class String implements Serializable, Comparable, CharSequence +public final class String + implements Serializable, Comparable, CharSequence { // WARNING: String is a CORE class in the bootstrap cycle. See the comments // in vm/reference/java/lang/Runtime for implications of this fact. @@ -113,12 +118,12 @@ public final class String implements Serializable, Comparable, CharSequence private int cachedHashCode; /** - * An implementation for {@link CASE_INSENSITIVE_ORDER}. + * An implementation for {@link #CASE_INSENSITIVE_ORDER}. * This must be {@link Serializable}. The class name is dictated by * compatibility with Sun's JDK. */ private static final class CaseInsensitiveComparator - implements Comparator, Serializable + implements Comparator, Serializable { /** * Compatible with JDK 1.2. @@ -142,9 +147,9 @@ public final class String implements Serializable, Comparable, CharSequence * @throws ClassCastException if either argument is not a String * @see #compareToIgnoreCase(String) */ - public int compare(Object o1, Object o2) + public int compare(String o1, String o2) { - return ((String) o1).compareToIgnoreCase((String) o2); + return o1.compareToIgnoreCase(o2); } } // class CaseInsensitiveComparator @@ -156,7 +161,7 @@ public final class String implements Serializable, Comparable, CharSequence * @see Collator#compare(String, String) * @since 1.2 */ - public static final Comparator CASE_INSENSITIVE_ORDER + public static final Comparator CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator(); /** @@ -207,6 +212,7 @@ public final class String implements Serializable, Comparable, CharSequence * @param count the number of characters from data to copy * @throws NullPointerException if data is null * @throws IndexOutOfBoundsException if (offset < 0 || count < 0 + * || offset + count < 0 (overflow) * || offset + count > data.length) * (while unspecified, this is a StringIndexOutOfBoundsException) */ @@ -230,6 +236,7 @@ public final class String implements Serializable, Comparable, CharSequence * @param count the number of characters from ascii to copy * @throws NullPointerException if ascii is null * @throws IndexOutOfBoundsException if (offset < 0 || count < 0 + * || offset + count < 0 (overflow) * || offset + count > ascii.length) * (while unspecified, this is a StringIndexOutOfBoundsException) * @see #String(byte[]) @@ -281,7 +288,7 @@ public final class String implements Serializable, Comparable, CharSequence * * @param data byte array to copy * @param offset the offset to start at - * @param count the number of characters in the array to use + * @param count the number of bytes in the array to use * @param encoding the name of the encoding to use * @throws NullPointerException if data or encoding is null * @throws IndexOutOfBoundsException if offset or count is incorrect @@ -330,7 +337,7 @@ public final class String implements Serializable, Comparable, CharSequence * * @param data byte array to copy * @param offset the offset to start at - * @param count the number of characters in the array to use + * @param count the number of bytes in the array to use * @throws NullPointerException if data is null * @throws IndexOutOfBoundsException if offset or count is incorrect * @throws Error if the decoding fails @@ -644,23 +651,17 @@ public final class String implements Serializable, Comparable, CharSequence * @return the comparison * @throws NullPointerException if anotherString is null */ - public native int compareTo(String anotherString); + public int compareTo(String anotherString) + { + return nativeCompareTo(anotherString); + } /** - * Behaves like compareTo(java.lang.String) unless the Object - * is not a String. Then it throws a - * ClassCastException. - * - * @param o the object to compare against - * @return the comparison - * @throws NullPointerException if o is null - * @throws ClassCastException if o is not a String - * @since 1.2 + * The native implementation of compareTo(). Must be named different + * since cni doesn't understand the bridge method generated from + * the compareTo() method because of the Comparable interface. */ - public int compareTo(Object o) - { - return compareTo((String) o); - } + private native int nativeCompareTo(String anotherString); /** * Compares this String and another String (case insensitive). This @@ -710,7 +711,7 @@ public final class String implements Serializable, Comparable, CharSequence * @param ignoreCase true if case should be ignored in comparision * @param toffset index to start comparison at for this String * @param other String to compare region to this String - * @param oofset index to start comparison at for other + * @param ooffset index to start comparison at for other * @param len number of characters to compare * @return true if regions match, false otherwise * @throws NullPointerException if other is null @@ -1124,7 +1125,7 @@ public final class String implements Serializable, Comparable, CharSequence * Trims all characters less than or equal to '\u0020' * (' ') from the beginning and end of this String. This * includes many, but not all, ASCII control characters, and all - * {@link Character#whitespace(char)}. + * {@link Character#isWhitespace(char)}. * * @return new trimmed String, or this if nothing trimmed */ @@ -1204,6 +1205,7 @@ public final class String implements Serializable, Comparable, CharSequence * @return String containing the chars from data[offset..offset+count] * @throws NullPointerException if data is null * @throws IndexOutOfBoundsException if (offset < 0 || count < 0 + * || offset + count < 0 (overflow) * || offset + count > data.length) * (while unspecified, this is a StringIndexOutOfBoundsException) * @see #String(char[], int, int) @@ -1294,12 +1296,27 @@ public final class String implements Serializable, Comparable, CharSequence return Double.toString(d); } + + /** @since 1.5 */ + public static String format(Locale locale, String format, Object... args) + { + Formatter f = new Formatter(locale); + return f.format(format, args).toString(); + } + + /** @since 1.5 */ + public static String format(String format, Object... args) + { + return format(Locale.getDefault(), format, args); + } + /** - * Fetches this String from the intern hashtable. If two Strings are - * considered equal, by the equals() method, then intern() will return the - * same String instance. ie. if (s1.equals(s2)) then - * (s1.intern() == s2.intern()). All string literals and string-valued - * constant expressions are already interned. + * Fetches this String from the intern hashtable. + * If two Strings are considered equal, by the equals() method, + * then intern() will return the same String instance. ie. + * if (s1.equals(s2)) then (s1.intern() == s2.intern()). + * All string literals and string-valued constant expressions + * are already interned. * * @return the interned String */ @@ -1345,20 +1362,20 @@ public final class String implements Serializable, Comparable, CharSequence } return count; } - + /** * Returns true iff this String contains the sequence of Characters * described in s. * @param s the CharSequence * @return true iff this String contains s - * + * * @since 1.5 */ public boolean contains (CharSequence s) { return this.indexOf(s.toString()) != -1; } - + /** * Returns a string that is this string with all instances of the sequence * represented by target replaced by the sequence in @@ -1386,7 +1403,42 @@ public final class String implements Serializable, Comparable, CharSequence } return result.toString(); } + + /** + * Return the index into this String that is offset from the given index by + * codePointOffset code points. + * @param index the index at which to start + * @param codePointOffset the number of code points to offset + * @return the index into this String that is codePointOffset + * code points offset from index. + * + * @throws IndexOutOfBoundsException if index is negative or larger than the + * length of this string. + * @throws IndexOutOfBoundsException if codePointOffset is positive and the + * substring starting with index has fewer than codePointOffset code points. + * @throws IndexOutOfBoundsException if codePointOffset is negative and the + * substring ending with index has fewer than (-codePointOffset) code points. + * @since 1.5 + */ + public int offsetByCodePoints(int index, int codePointOffset) + { + if (index < 0 || index > count) + throw new IndexOutOfBoundsException(); + + return Character.offsetByCodePoints(this, index, codePointOffset); + } + /** + * Returns true if, and only if, {@link #length()} + * is 0. + * + * @return true if the length of the string is zero. + * @since 1.6 + */ + public boolean isEmpty() + { + return count == 0; + } private native void init(char[] chars, int offset, int count, boolean dont_copy); diff --git a/libjava/java/lang/StringBuffer.h b/libjava/java/lang/StringBuffer.h index 93951f471f6c..07400f78060e 100644 --- a/libjava/java/lang/StringBuffer.h +++ b/libjava/java/lang/StringBuffer.h @@ -30,13 +30,13 @@ public: ::java::lang::StringBuffer * append(::java::lang::Object *); ::java::lang::StringBuffer * append(::java::lang::String *); ::java::lang::StringBuffer * append(::java::lang::StringBuffer *); - ::java::lang::StringBuffer * append(::java::lang::CharSequence *); - ::java::lang::StringBuffer * append(::java::lang::CharSequence *, jint, jint); ::java::lang::StringBuffer * append(JArray< jchar > *); ::java::lang::StringBuffer * append(JArray< jchar > *, jint, jint); - ::java::lang::StringBuffer * append(jboolean); - ::java::lang::StringBuffer * append(jchar); ::java::lang::StringBuffer * appendCodePoint(jint); + ::java::lang::StringBuffer * append(jboolean); + ::java::lang::StringBuffer * target$append(jchar); + ::java::lang::StringBuffer * target$append(::java::lang::CharSequence *); + ::java::lang::StringBuffer * target$append(::java::lang::CharSequence *, jint, jint); ::java::lang::StringBuffer * append(jint); ::java::lang::StringBuffer * append(jlong); ::java::lang::StringBuffer * append(jfloat); @@ -71,6 +71,11 @@ public: private: void ensureCapacity_unsynchronized(jint); jboolean regionMatches(jint, ::java::lang::String *); +public: + ::java::lang::Appendable * append(::java::lang::CharSequence *, jint, jint); + ::java::lang::Appendable * append(::java::lang::CharSequence *); + ::java::lang::Appendable * append(jchar); +private: static const jlong serialVersionUID = 3388685877147921107LL; public: // actually package-private jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) count; diff --git a/libjava/java/lang/StringBuffer.java b/libjava/java/lang/StringBuffer.java index c3f112967c41..57fd2ca8e813 100644 --- a/libjava/java/lang/StringBuffer.java +++ b/libjava/java/lang/StringBuffer.java @@ -1,5 +1,5 @@ /* StringBuffer.java -- Growable strings - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -72,8 +72,12 @@ import java.io.Serializable; * @since 1.0 * @status updated to 1.4 */ -public final class StringBuffer implements Serializable, CharSequence +public final class StringBuffer + implements Serializable, CharSequence, Appendable { + // Implementation note: if you change this class, you usually will + // want to change StringBuilder as well. + /** * Compatible with JDK 1.0+. */ @@ -152,17 +156,16 @@ public final class StringBuffer implements Serializable, CharSequence * specified CharSequence. Initial capacity will be the * size of the CharSequence plus 16. * - * @param sequence the String to convert + * @param seq the String to convert * @throws NullPointerException if str is null - * * @since 1.5 */ - public StringBuffer(CharSequence sequence) + public StringBuffer(CharSequence seq) { - count = Math.max(0, sequence.length()); + count = Math.max(0, seq.length()); value = new char[count + DEFAULT_CAPACITY]; for (int i = 0; i < count; ++i) - value[i] = sequence.charAt(i); + value[i] = seq.charAt(i); } /** @@ -390,46 +393,6 @@ public final class StringBuffer implements Serializable, CharSequence return this; } - /** - * Append the CharSequence value of the argument to this - * StringBuffer. - * - * @param sequence the CharSequence to append - * @return this StringBuffer - * @see #append(Object) - * @since 1.5 - */ - public synchronized StringBuffer append(CharSequence sequence) - { - if (sequence == null) - sequence = "null"; - return append(sequence, 0, sequence.length()); - } - - /** - * Append the specified subsequence of the CharSequence - * argument to this StringBuffer. - * - * @param sequence the CharSequence to append - * @param start the starting index - * @param end one past the ending index - * @return this StringBuffer - * @see #append(Object) - * @since 1.5 - */ - public synchronized StringBuffer append(CharSequence sequence, - int start, int end) - { - if (sequence == null) - sequence = "null"; - if (start < 0 || end < 0 || start > end || end > sequence.length()) - throw new IndexOutOfBoundsException(); - ensureCapacity_unsynchronized(this.count + end - start); - for (int i = start; i < end; ++i) - value[count++] = sequence.charAt(i); - return this; - } - /** * Append the char array to this StringBuffer. * This is similar (but more efficient) than @@ -469,6 +432,25 @@ public final class StringBuffer implements Serializable, CharSequence return this; } + /** + * Append the code point to this StringBuffer. + * This is like #append(char), but will append two characters + * if a supplementary code point is given. + * + * @param code the code point to append + * @return this StringBuffer + * @see Character#toChars(int, char[], int) + * @since 1.5 + */ + public synchronized StringBuffer appendCodePoint(int code) + { + int len = Character.charCount(code); + ensureCapacity_unsynchronized(count + len); + Character.toChars(code, value, count); + count += len; + return this; + } + /** * Append the String value of the argument to this * StringBuffer. Uses String.valueOf() to convert @@ -497,21 +479,41 @@ public final class StringBuffer implements Serializable, CharSequence } /** - * Append the code point to this StringBuffer. - * This is like #append(char), but will append two characters - * if a supplementary code point is given. + * Append the CharSequence value of the argument to this + * StringBuffer. * - * @param code the code point to append + * @param seq the CharSequence to append * @return this StringBuffer - * @see Character#toChars(int, char[], int) + * @see #append(Object) * @since 1.5 */ - public synchronized StringBuffer appendCodePoint(int code) + public synchronized StringBuffer append(CharSequence seq) { - int len = Character.charCount(code); - ensureCapacity_unsynchronized(count + len); - Character.toChars(code, value, count); - count += len; + if (seq == null) + seq = "null"; + return append(seq, 0, seq.length()); + } + + /** + * Append the specified subsequence of the CharSequence + * argument to this StringBuffer. + * + * @param seq the CharSequence to append + * @param start the starting index + * @param end one past the ending index + * @return this StringBuffer + * @see #append(Object) + * @since 1.5 + */ + public synchronized StringBuffer append(CharSequence seq, int start, int end) + { + if (seq == null) + seq = "null"; + if (start < 0 || end < 0 || start > end || end > seq.length()) + throw new IndexOutOfBoundsException(); + ensureCapacity_unsynchronized(this.count + end - start); + for (int i = start; i < end; ++i) + value[count++] = seq.charAt(i); return this; } diff --git a/libjava/java/lang/StringBuilder.h b/libjava/java/lang/StringBuilder.h index d4912bf0cb43..d34cd86c0a62 100644 --- a/libjava/java/lang/StringBuilder.h +++ b/libjava/java/lang/StringBuilder.h @@ -66,6 +66,10 @@ public: private: jboolean regionMatches(jint, ::java::lang::String *); public: + jint codePointAt(jint); + jint codePointBefore(jint); + jint codePointCount(jint, jint); + void trimToSize(); ::java::lang::Appendable * append(::java::lang::CharSequence *, jint, jint); ::java::lang::Appendable * append(::java::lang::CharSequence *); ::java::lang::Appendable * append(jchar); diff --git a/libjava/java/lang/StringBuilder.java b/libjava/java/lang/StringBuilder.java index 5f33b2ed53ac..55a49e6e15d4 100644 --- a/libjava/java/lang/StringBuilder.java +++ b/libjava/java/lang/StringBuilder.java @@ -1,5 +1,5 @@ /* StringBuilder.java -- Unsynchronized growable strings - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -998,4 +998,65 @@ public final class StringBuilder */ // GCJ LOCAL: Native to access String internals properly. private native boolean regionMatches(int toffset, String other); + + /** + * Get the code point at the specified index. This is like #charAt(int), + * but if the character is the start of a surrogate pair, and the + * following character completes the pair, then the corresponding + * supplementary code point is returned. + * @param index the index of the codepoint to get, starting at 0 + * @return the codepoint at the specified index + * @throws IndexOutOfBoundsException if index is negative or >= length() + * @since 1.5 + */ + public int codePointAt(int index) + { + return Character.codePointAt(value, index, count); + } + + /** + * Get the code point before the specified index. This is like + * #codePointAt(int), but checks the characters at index-1 and + * index-2 to see if they form a supplementary code point. + * @param index the index just past the codepoint to get, starting at 0 + * @return the codepoint at the specified index + * @throws IndexOutOfBoundsException if index is negative or >= length() + * @since 1.5 + */ + public int codePointBefore(int index) + { + // Character.codePointBefore() doesn't perform this check. We + // could use the CharSequence overload, but this is just as easy. + if (index >= count) + throw new IndexOutOfBoundsException(); + return Character.codePointBefore(value, index, 1); + } + + /** + * Returns the number of Unicode code points in the specified sub sequence. + * Surrogate pairs count as one code point. + * @param beginIndex the start of the subarray + * @param endIndex the index after the last char in the subarray + * @return the number of code points + * @throws IndexOutOfBoundsException if beginIndex is less than zero or + * greater than endIndex or if endIndex is greater than the length of this + * StringBuilder + */ + public int codePointCount(int beginIndex,int endIndex) + { + if (beginIndex < 0 || beginIndex > endIndex || endIndex > count) + throw new IndexOutOfBoundsException("invalid indices: " + beginIndex + + ", " + endIndex); + return Character.codePointCount(value, beginIndex, endIndex - beginIndex); + } + + public void trimToSize() + { + if (count < value.length) + { + char[] newValue = new char[count]; + System.arraycopy(value, 0, newValue, 0, count); + value = newValue; + } + } } diff --git a/libjava/java/lang/natString.cc b/libjava/java/lang/natString.cc index 1a49bf798097..f86abd8bc2da 100644 --- a/libjava/java/lang/natString.cc +++ b/libjava/java/lang/natString.cc @@ -707,7 +707,7 @@ java::lang::String::regionMatches (jint toffset, } jint -java::lang::String::compareTo (jstring anotherString) +java::lang::String::nativeCompareTo (jstring anotherString) { jchar *tptr = JvGetStringChars (this); jchar *optr = JvGetStringChars (anotherString); diff --git a/libjava/jni.cc b/libjava/jni.cc index d71b16d99eaf..9e33be6e69f9 100644 --- a/libjava/jni.cc +++ b/libjava/jni.cc @@ -751,7 +751,8 @@ _Jv_JNI_GetAnyMethodID (JNIEnv *env, jclass clazz, java::lang::StringBuffer *name_sig = new java::lang::StringBuffer (JvNewStringUTF (name)); - name_sig->append ((jchar) ' ')->append (JvNewStringUTF (s)); + name_sig->append ((jchar) ' '); + name_sig->append (JvNewStringUTF (s)); env->ex = new java::lang::NoSuchMethodError (name_sig->toString ()); } catch (jthrowable t) -- 2.47.3