diff options
author | bothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-12 06:53:42 +0000 |
---|---|---|
committer | bothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-12 06:53:42 +0000 |
commit | 307719b97143646f73530f046493efc507351385 (patch) | |
tree | ddcf219c5b73f37a94e4a0d174408bc041874a8e /libjava/prims.cc | |
parent | 3b50f8cbc13e04294332211ea899d8cf19a3e1be (diff) | |
download | gcc-307719b97143646f73530f046493efc507351385.tar.gz |
* gcj/javaprims.h (_Jv_Utf8Const): Change struct to a class,
with private fields and access methods.
(_Jv_NewStringUTF, _Jv_hashUtf8String): New function declarations.
* gcj/cni.h (_Jv_NewStringUTF): Move to javaprims.h.
* prims.cc (_Jv_Utf8COnst::init): New method implementation.
( _Jv_makeUtf8Const): Rewrite using new constructors.
(hashUtf8String): Rename to +_Jv_hashUtf8String and make non-static.
* defineclass.cc: Use new _Utf8Const access/convenience methods.
* jni.cc: Likewise.
* resolve.cc: Likewise.
* gcj/field.h: Likewise.
* include/jvm.h: Likewise.
* java/lang/Class.h: Likewise.
* java/lang/natClass.cc: Likwise.
* java/lang/natClassLoader.cc: Likewise
* java/lang/reflect/natMethod.cc: Likewise
* verify.cc: Likewise.
(_Jv_BytecodeVerifier::make_utf8_const): Optimize.
(~_Jv_BytecodeVerifier): Don't need second _Jv_Free call.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85854 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/prims.cc')
-rw-r--r-- | libjava/prims.cc | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/libjava/prims.cc b/libjava/prims.cc index 0346b02371b..7f3276e77d8 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -255,8 +255,8 @@ _Jv_strLengthUtf8(char* str, int len) /* Calculate a hash value for a string encoded in Utf8 format. * This returns the same hash value as specified or java.lang.String.hashCode. */ -static jint -hashUtf8String (char* str, int len) +jint +_Jv_hashUtf8String (char* str, int len) { unsigned char* ptr = (unsigned char*) str; unsigned char* limit = ptr + len; @@ -272,17 +272,24 @@ hashUtf8String (char* str, int len) return hash; } +void +_Jv_Utf8Const::init(char *s, int len) +{ + ::memcpy (data, s, len); + data[len] = 0; + length = len; + hash = _Jv_hashUtf8String (s, len) & 0xFFFF; +} + _Jv_Utf8Const * _Jv_makeUtf8Const (char* s, int len) { if (len < 0) len = strlen (s); - Utf8Const* m = (Utf8Const*) _Jv_AllocBytes (sizeof(Utf8Const) + len + 1); - memcpy (m->data, s, len); - m->data[len] = 0; - m->length = len; - m->hash = hashUtf8String (s, len) & 0xFFFF; - return (m); + Utf8Const* m + = (Utf8Const*) _Jv_AllocBytes (_Jv_Utf8Const::space_needed(s, len)); + m->init(s, len); + return m; } _Jv_Utf8Const * |