summaryrefslogtreecommitdiff
path: root/libjava/prims.cc
diff options
context:
space:
mode:
authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-12 06:53:42 +0000
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-12 06:53:42 +0000
commit307719b97143646f73530f046493efc507351385 (patch)
treeddcf219c5b73f37a94e4a0d174408bc041874a8e /libjava/prims.cc
parent3b50f8cbc13e04294332211ea899d8cf19a3e1be (diff)
downloadgcc-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.cc23
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 *