natString.cc (intern): If string's data does not point to this String, make a fresh String that does.
* java/lang/natString.cc (intern): If string's data does not point to this String, make a fresh String that does. * java/lang/natString.cc (unintern): Replace by static function. * java/lang/String.java (unintern): Remove method. From-SVN: r40990
This commit is contained in:
parent
f44b63ae02
commit
a3b63299e6
@ -1,3 +1,11 @@
|
||||
2001-04-01 Per Bothner <per@bothner.com>
|
||||
|
||||
* java/lang/natString.cc (intern): If string's data does not point to
|
||||
this String, make a fresh String that does.
|
||||
|
||||
* java/lang/natString.cc (unintern): Replace by static function.
|
||||
* java/lang/String.java (unintern): Remove method.
|
||||
|
||||
2001-04-01 Per Bothner <per@bothner.com>
|
||||
|
||||
* DeflaterOutputStream.java (deflate): Loop while def.needsInput.
|
||||
|
@ -347,6 +347,5 @@ public final class String implements Serializable, Comparable
|
||||
private native void init (byte[] chars, int hibyte, int offset, int count);
|
||||
private native void init (byte[] chars, int offset, int count, String enc)
|
||||
throws UnsupportedEncodingException;
|
||||
private static native void unintern (Object obj);
|
||||
private static native void rehash ();
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ details. */
|
||||
#include <gnu/gcj/convert/BytesToUnicode.h>
|
||||
#include <jvm.h>
|
||||
|
||||
static void unintern (jobject);
|
||||
static jstring* strhash = NULL;
|
||||
static int strhash_count = 0; /* Number of slots used in strhash. */
|
||||
static int strhash_size = 0; /* Number of slots available in strhash.
|
||||
@ -174,17 +175,19 @@ java::lang::String::intern()
|
||||
*ptr = (jstring) MASK_PTR (*ptr);
|
||||
return (jstring) UNMASK_PTR (*ptr);
|
||||
}
|
||||
SET_STRING_IS_INTERNED(this);
|
||||
jstring str = this->data == this ? this
|
||||
: _Jv_NewString(JvGetStringChars(this), this->length());
|
||||
SET_STRING_IS_INTERNED(str);
|
||||
strhash_count++;
|
||||
*ptr = this;
|
||||
*ptr = str;
|
||||
// When string is GC'd, clear the slot in the hash table.
|
||||
_Jv_RegisterFinalizer ((void *) this, unintern);
|
||||
return this;
|
||||
_Jv_RegisterFinalizer ((void *) str, unintern);
|
||||
return str;
|
||||
}
|
||||
|
||||
/* Called by String fake finalizer. */
|
||||
void
|
||||
java::lang::String::unintern (jobject obj)
|
||||
static void
|
||||
unintern (jobject obj)
|
||||
{
|
||||
JvSynchronize sync (&StringClass);
|
||||
jstring str = reinterpret_cast<jstring> (obj);
|
||||
|
Loading…
Reference in New Issue
Block a user