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,6 +1,6 @@
|
|||
// 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.
|
||||
|
||||
|
@ -153,15 +153,18 @@ java::lang::String::intern()
|
|||
SET_STRING_IS_INTERNED(this);
|
||||
strhash_count++;
|
||||
*ptr = this;
|
||||
// When string is GC'd, clear the slot in the hash table.
|
||||
_Jv_RegisterFinalizer ((void *) this, unintern);
|
||||
return this;
|
||||
}
|
||||
|
||||
/* Called by String fake finalizer. */
|
||||
void
|
||||
java::lang::String::unintern()
|
||||
java::lang::String::unintern (jobject obj)
|
||||
{
|
||||
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)
|
||||
return;
|
||||
*ptr = DELETED_STRING;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue