javaprims.h (_Jv_FormatInt): New declaration.

* gcj/javaprims.h (_Jv_FormatInt):  New declaration.
	* java/lang/natString.cc (_JvFormatInt):  New primitive, with logic
	taken from old Integer.toString code.
	(Integer::valueOf):  Use _Jv_FormatInt.
	* java/lang/Integer.java (toString):  Just use call String.valueOf.
	* java/lang/Long.java (toString):  Fix typo in comment.
	* java/lang/String.java (valueOf(int)):  Make native.
	* java/lang/StringBuffer.java (append(int)):  Make native.
	* java/lang/natStringBuffer.cc:  New file, for append(jint).
	* Makefile.am (ant_source_files):  Add java/lang/natStringBuffer.cc.

From-SVN: r42419
This commit is contained in:
Per Bothner
2001-05-21 21:38:37 -07:00
committed by Per Bothner
parent f5d6a24c2e
commit ef0a7b49a9
10 changed files with 98 additions and 40 deletions
+46
View File
@@ -341,6 +341,52 @@ _Jv_GetStringUTFRegion (jstring str, jsize start, jsize len, char *buf)
return dptr - buf;
}
/* Put printed (decimal) representation of NUM in a buffer.
BUFEND marks the end of the buffer, which must be at least 11 jchars long.
Returns the COUNT of jchars written. The result is in
(BUFEND - COUNT) (inclusive) upto (BUFEND) (exclusive). */
jint
_Jv_FormatInt (jchar* bufend, jint num)
{
register jchar* ptr = bufend;
jboolean isNeg;
if (num < 0)
{
isNeg = true;
num = -(num);
if (num < 0)
{
// Must be MIN_VALUE, so handle this special case.
// FIXME use 'unsigned jint' for num.
*--ptr = '8';
num = 214748364;
}
}
else
isNeg = false;
do
{
*--ptr = (jchar) ((int) '0' + (num % 10));
num /= 10;
}
while (num > 0);
if (isNeg)
*--ptr = '-';
return bufend - ptr;
}
jstring
java::lang::String::valueOf (jint num)
{
// Use an array large enough for "-2147483648"; i.e. 11 chars.
jchar buffer[11];
int i = _Jv_FormatInt (buffer+11, num);
return _Jv_NewString (buffer+11-i, i);
}
jstring
_Jv_AllocString(jsize len)
{