From 2749be7c007dd1932ebdf50053e71e7c6ab31b9a Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Fri, 27 Jan 2012 22:34:26 +0400 Subject: [PATCH] avoid synchronized methods of DataOutputStream --- .../impl/TranslatingCompilerFilesMonitor.java | 5 ++- .../intellij/psi/stubs/StubOutputStream.java | 2 +- .../util/indexing/FileBasedIndex.java | 1 + .../util/indexing/ValueContainerMap.java | 6 +-- .../vfs/newvfs/persistent/FSRecords.java | 1 + .../intellij/util/io/DataOutputStream.java | 37 +++++++++++++++++++ .../util/io/UnsyncByteArrayInputStream.java | 15 ++++++++ .../util/io/storage/AbstractStorage.java | 5 +-- 8 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 platform/util/src/com/intellij/util/io/DataOutputStream.java diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/TranslatingCompilerFilesMonitor.java b/java/compiler/impl/src/com/intellij/compiler/impl/TranslatingCompilerFilesMonitor.java index 1cbe72c57400..7f12839af0b4 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/TranslatingCompilerFilesMonitor.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/TranslatingCompilerFilesMonitor.java @@ -53,6 +53,7 @@ import com.intellij.util.containers.SLRUCache; import com.intellij.util.indexing.FileBasedIndex; import com.intellij.util.indexing.IndexInfrastructure; import com.intellij.util.io.*; +import com.intellij.util.io.DataOutputStream; import com.intellij.util.messages.MessageBusConnection; import gnu.trove.*; import org.jetbrains.annotations.NonNls; @@ -599,7 +600,7 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent { } private static void saveSourceInfo(VirtualFile file, SourceFileInfo descriptor) { - final DataOutputStream out = ourSourceFileAttribute.writeAttribute(file); + final java.io.DataOutputStream out = ourSourceFileAttribute.writeAttribute(file); try { try { descriptor.save(out); @@ -642,7 +643,7 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent { } private static void saveOutputInfo(VirtualFile file, OutputFileInfo descriptor) { - final DataOutputStream out = ourOutputFileAttribute.writeAttribute(file); + final java.io.DataOutputStream out = ourOutputFileAttribute.writeAttribute(file); try { try { descriptor.save(out); diff --git a/platform/core-api/src/com/intellij/psi/stubs/StubOutputStream.java b/platform/core-api/src/com/intellij/psi/stubs/StubOutputStream.java index 3b7ac8432cb6..46696d6c1cc0 100644 --- a/platform/core-api/src/com/intellij/psi/stubs/StubOutputStream.java +++ b/platform/core-api/src/com/intellij/psi/stubs/StubOutputStream.java @@ -17,10 +17,10 @@ package com.intellij.psi.stubs; import com.intellij.util.io.DataInputOutputUtil; +import com.intellij.util.io.DataOutputStream; import com.intellij.util.io.IOUtil; import com.intellij.util.io.PersistentStringEnumerator; -import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java index a702e4e0098f..10ef147a0e38 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java @@ -65,6 +65,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashMap; import com.intellij.util.containers.HashSet; import com.intellij.util.io.*; +import com.intellij.util.io.DataOutputStream; import com.intellij.util.io.storage.HeavyProcessLatch; import com.intellij.util.messages.MessageBus; import com.intellij.util.messages.MessageBusConnection; diff --git a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerMap.java b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerMap.java index 810a22d85227..9c964a820974 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerMap.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerMap.java @@ -1,10 +1,8 @@ package com.intellij.util.indexing; import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream; -import com.intellij.util.io.DataExternalizer; -import com.intellij.util.io.DataInputOutputUtil; -import com.intellij.util.io.KeyDescriptor; -import com.intellij.util.io.PersistentHashMap; +import com.intellij.util.io.*; +import com.intellij.util.io.DataOutputStream; import gnu.trove.TIntHashSet; import java.io.*; diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/FSRecords.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/FSRecords.java index e7906619043a..f8c6d21f2ce5 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/FSRecords.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/FSRecords.java @@ -33,6 +33,7 @@ import com.intellij.util.containers.IntArrayList; import com.intellij.util.io.PagedFileStorage; import com.intellij.util.io.PersistentStringEnumerator; import com.intellij.util.io.ResizeableMappedFile; +import com.intellij.util.io.DataOutputStream; import com.intellij.util.io.storage.AbstractStorage; import com.intellij.util.io.storage.HeavyProcessLatch; import com.intellij.util.io.storage.RefCountingStorage; diff --git a/platform/util/src/com/intellij/util/io/DataOutputStream.java b/platform/util/src/com/intellij/util/io/DataOutputStream.java new file mode 100644 index 000000000000..97ee34b5bbfe --- /dev/null +++ b/platform/util/src/com/intellij/util/io/DataOutputStream.java @@ -0,0 +1,37 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.util.io; + +import java.io.*; + +/* Unsync version of java.io.DataOutputStream */ +public class DataOutputStream extends java.io.DataOutputStream { + public DataOutputStream(OutputStream out) { + super(out); + } + + @Override + public void write(int b) throws IOException { + out.write(b); + written ++; + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + out.write(b, off, len); + written += len; + } +} diff --git a/platform/util/src/com/intellij/util/io/UnsyncByteArrayInputStream.java b/platform/util/src/com/intellij/util/io/UnsyncByteArrayInputStream.java index c22a9ecb0818..aa0f1b845642 100644 --- a/platform/util/src/com/intellij/util/io/UnsyncByteArrayInputStream.java +++ b/platform/util/src/com/intellij/util/io/UnsyncByteArrayInputStream.java @@ -1,3 +1,18 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.intellij.util.io; import java.io.InputStream; diff --git a/platform/util/src/com/intellij/util/io/storage/AbstractStorage.java b/platform/util/src/com/intellij/util/io/storage/AbstractStorage.java index e98173172044..68ca0d99f022 100644 --- a/platform/util/src/com/intellij/util/io/storage/AbstractStorage.java +++ b/platform/util/src/com/intellij/util/io/storage/AbstractStorage.java @@ -26,9 +26,8 @@ import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream; import com.intellij.openapi.util.io.ByteSequence; import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.ArrayUtil; -import com.intellij.util.io.PagePool; -import com.intellij.util.io.RecordDataOutput; -import com.intellij.util.io.UnsyncByteArrayInputStream; +import com.intellij.util.io.*; +import com.intellij.util.io.DataOutputStream; import org.jetbrains.annotations.NonNls; import java.io.*;