natString.cc (unintern): Added `obj' argument.
* java/lang/natString.cc (unintern): Added `obj' argument. (intern): Register finalizer for string. * java/lang/String.java (unintern): Now static; added obj argument. From-SVN: r33124
This commit is contained in:
parent
07385c4994
commit
50b99cc8fe
3 changed files with 15 additions and 5 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2000-04-12 Tom Tromey <tromey@cygnus.com>
|
||||||
|
|
||||||
|
* java/lang/natString.cc (unintern): Added `obj' argument.
|
||||||
|
(intern): Register finalizer for string.
|
||||||
|
* java/lang/String.java (unintern): Now static; added obj
|
||||||
|
argument.
|
||||||
|
|
||||||
2000-04-11 Tom Tromey <tromey@cygnus.com>
|
2000-04-11 Tom Tromey <tromey@cygnus.com>
|
||||||
|
|
||||||
* java/util/Vector.java (VectorEnumeration): Now `final'.
|
* java/util/Vector.java (VectorEnumeration): Now `final'.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 1998, 1999 Free Software Foundation
|
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
|
||||||
|
|
||||||
This file is part of libgcj.
|
This file is part of libgcj.
|
||||||
|
|
||||||
|
@ -302,6 +302,6 @@ public final class String
|
||||||
private native void init (byte[] chars, int hibyte, int offset, int count);
|
private native void init (byte[] chars, int hibyte, int offset, int count);
|
||||||
private native void init (byte[] chars, int offset, int count, String enc)
|
private native void init (byte[] chars, int offset, int count, String enc)
|
||||||
throws UnsupportedEncodingException;
|
throws UnsupportedEncodingException;
|
||||||
private native void unintern ();
|
private static native void unintern (Object obj);
|
||||||
private static native void rehash ();
|
private static native void rehash ();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// natString.cc - Implementation of java.lang.String native methods.
|
// natString.cc - Implementation of java.lang.String native methods.
|
||||||
|
|
||||||
/* Copyright (C) 1998, 1999 Free Software Foundation
|
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
|
||||||
|
|
||||||
This file is part of libgcj.
|
This file is part of libgcj.
|
||||||
|
|
||||||
|
@ -153,15 +153,18 @@ java::lang::String::intern()
|
||||||
SET_STRING_IS_INTERNED(this);
|
SET_STRING_IS_INTERNED(this);
|
||||||
strhash_count++;
|
strhash_count++;
|
||||||
*ptr = this;
|
*ptr = this;
|
||||||
|
// When string is GC'd, clear the slot in the hash table.
|
||||||
|
_Jv_RegisterFinalizer ((void *) this, unintern);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Called by String fake finalizer. */
|
/* Called by String fake finalizer. */
|
||||||
void
|
void
|
||||||
java::lang::String::unintern()
|
java::lang::String::unintern (jobject obj)
|
||||||
{
|
{
|
||||||
JvSynchronize sync (&StringClass);
|
JvSynchronize sync (&StringClass);
|
||||||
jstring* ptr = _Jv_StringGetSlot(this);
|
jstring str = reinterpret_cast<jstring> (obj);
|
||||||
|
jstring* ptr = _Jv_StringGetSlot(str);
|
||||||
if (*ptr == NULL || *ptr == DELETED_STRING)
|
if (*ptr == NULL || *ptr == DELETED_STRING)
|
||||||
return;
|
return;
|
||||||
*ptr = DELETED_STRING;
|
*ptr = DELETED_STRING;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue