aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/nio
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2005-05-17 01:52:02 +0000
committerTom Tromey <tromey@gcc.gnu.org>2005-05-17 01:52:02 +0000
commit9d9bd40fb67d65bc99b142f66128b3ad07e63330 (patch)
tree9e725d3de52f3724939de6899c9e60f4d9a069aa /libjava/java/nio
parente5b58ee301591519efb761c01b0a0938139b7164 (diff)
downloadgcc-9d9bd40fb67d65bc99b142f66128b3ad07e63330.zip
gcc-9d9bd40fb67d65bc99b142f66128b3ad07e63330.tar.gz
gcc-9d9bd40fb67d65bc99b142f66128b3ad07e63330.tar.bz2
Charset.java (encode, decode): Synchronize on 'this', not the class.
* java/nio/charset/Charset.java (encode, decode): Synchronize on 'this', not the class. From-SVN: r99810
Diffstat (limited to 'libjava/java/nio')
-rw-r--r--libjava/java/nio/charset/Charset.java58
1 files changed, 26 insertions, 32 deletions
diff --git a/libjava/java/nio/charset/Charset.java b/libjava/java/nio/charset/Charset.java
index d52fc9c..8c6286d 100644
--- a/libjava/java/nio/charset/Charset.java
+++ b/libjava/java/nio/charset/Charset.java
@@ -289,25 +289,22 @@ public abstract class Charset implements Comparable
return true;
}
- public final ByteBuffer encode (CharBuffer cb)
+ // NB: This implementation serializes different threads calling
+ // Charset.encode(), a potential performance problem. It might
+ // be better to remove the cache, or use ThreadLocal to cache on
+ // a per-thread basis.
+ public final synchronized ByteBuffer encode (CharBuffer cb)
{
try
{
- // NB: This implementation serializes different threads calling
- // Charset.encode(), a potential performance problem. It might
- // be better to remove the cache, or use ThreadLocal to cache on
- // a per-thread basis.
- synchronized (Charset.class)
- {
- if (cachedEncoder == null)
- {
- cachedEncoder = newEncoder ()
- .onMalformedInput (CodingErrorAction.REPLACE)
- .onUnmappableCharacter (CodingErrorAction.REPLACE);
- } else
- cachedEncoder.reset();
- return cachedEncoder.encode (cb);
- }
+ if (cachedEncoder == null)
+ {
+ cachedEncoder = newEncoder ()
+ .onMalformedInput (CodingErrorAction.REPLACE)
+ .onUnmappableCharacter (CodingErrorAction.REPLACE);
+ } else
+ cachedEncoder.reset();
+ return cachedEncoder.encode (cb);
}
catch (CharacterCodingException e)
{
@@ -320,26 +317,23 @@ public abstract class Charset implements Comparable
return encode (CharBuffer.wrap (str));
}
- public final CharBuffer decode (ByteBuffer bb)
+ // NB: This implementation serializes different threads calling
+ // Charset.decode(), a potential performance problem. It might
+ // be better to remove the cache, or use ThreadLocal to cache on
+ // a per-thread basis.
+ public final synchronized CharBuffer decode (ByteBuffer bb)
{
try
{
- // NB: This implementation serializes different threads calling
- // Charset.decode(), a potential performance problem. It might
- // be better to remove the cache, or use ThreadLocal to cache on
- // a per-thread basis.
- synchronized (Charset.class)
- {
- if (cachedDecoder == null)
- {
- cachedDecoder = newDecoder ()
- .onMalformedInput (CodingErrorAction.REPLACE)
- .onUnmappableCharacter (CodingErrorAction.REPLACE);
- } else
- cachedDecoder.reset();
+ if (cachedDecoder == null)
+ {
+ cachedDecoder = newDecoder ()
+ .onMalformedInput (CodingErrorAction.REPLACE)
+ .onUnmappableCharacter (CodingErrorAction.REPLACE);
+ } else
+ cachedDecoder.reset();
- return cachedDecoder.decode (bb);
- }
+ return cachedDecoder.decode (bb);
}
catch (CharacterCodingException e)
{