diff --git a/platform/configuration-store-impl/intellij.platform.configurationStore.impl.iml b/platform/configuration-store-impl/intellij.platform.configurationStore.impl.iml
index dff8522ccef4..dcd0f841392f 100644
--- a/platform/configuration-store-impl/intellij.platform.configurationStore.impl.iml
+++ b/platform/configuration-store-impl/intellij.platform.configurationStore.impl.iml
@@ -20,5 +20,6 @@
+
\ No newline at end of file
diff --git a/platform/configuration-store-impl/src/StateMap.kt b/platform/configuration-store-impl/src/StateMap.kt
index 64ee82d9ad5d..93fbbde43d20 100644
--- a/platform/configuration-store-impl/src/StateMap.kt
+++ b/platform/configuration-store-impl/src/StateMap.kt
@@ -9,8 +9,8 @@ import com.intellij.util.ArrayUtil
import com.intellij.util.SystemProperties
import com.intellij.util.isEmpty
import gnu.trove.THashMap
-import org.iq80.snappy.SnappyFramedInputStream
-import org.iq80.snappy.SnappyFramedOutputStream
+import net.jpountz.lz4.LZ4BlockInputStream
+import net.jpountz.lz4.LZ4BlockOutputStream
import org.jdom.Element
import java.io.ByteArrayInputStream
import java.util.*
@@ -18,13 +18,13 @@ import java.util.concurrent.atomic.AtomicReferenceArray
fun archiveState(state: Element): BufferExposingByteArrayOutputStream {
val byteOut = BufferExposingByteArrayOutputStream()
- SnappyFramedOutputStream(byteOut).use {
+ LZ4BlockOutputStream(byteOut).use {
serializeElementToBinary(state, it)
}
return byteOut
}
-private fun unarchiveState(state: ByteArray) = SnappyFramedInputStream(ByteArrayInputStream(state), false).use { deserializeElementFromBinary(it) }
+private fun unarchiveState(state: ByteArray) = LZ4BlockInputStream(ByteArrayInputStream(state)).use { deserializeElementFromBinary(it) }
fun getNewByteIfDiffers(key: String, newState: Any, oldState: ByteArray): ByteArray? {
val newBytes: ByteArray
diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt
index 0daf8d806268..a420da42879b 100644
--- a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt
+++ b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt
@@ -924,14 +924,20 @@ open class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persi
}
else {
val templateConfiguration = getConfigurationTemplate(configuration.factory).configuration
- val templateTasks = if (templateConfiguration === configuration) {
+ val isTemplate = templateConfiguration === configuration
+ val templateTasks = if (isTemplate) {
getHardcodedBeforeRunTasks(configuration)
}
else {
getTemplateBeforeRunTasks(templateConfiguration)
}
- if (templateConfiguration === configuration) {
+ if (isTemplate) {
+ if (tasks == templateTasks) {
+ // nothing is changed
+ return
+ }
+
// we must update all existing configuration tasks to ensure that effective tasks (own + template) are the same as before template configuration change
// see testTemplates test
lock.read {
diff --git a/platform/util/src/com/intellij/openapi/util/DeprecatedDuplicatesIconPathPatcher.java b/platform/util/src/com/intellij/openapi/util/DeprecatedDuplicatesIconPathPatcher.java
index 27951508ece1..cbee05be539f 100644
--- a/platform/util/src/com/intellij/openapi/util/DeprecatedDuplicatesIconPathPatcher.java
+++ b/platform/util/src/com/intellij/openapi/util/DeprecatedDuplicatesIconPathPatcher.java
@@ -59,4 +59,10 @@ public class DeprecatedDuplicatesIconPathPatcher extends IconPathPatcher {
public String patchPath(String path) {
return ourDeprecatedIconsReplacements.get(path);
}
+
+ @Nullable
+ @Override
+ public Class getContextClass(String path) {
+ return DeprecatedDuplicatesIconPathPatcher.class;
+ }
}
diff --git a/platform/util/src/com/intellij/openapi/util/registry/RegistryValue.java b/platform/util/src/com/intellij/openapi/util/registry/RegistryValue.java
index 69b6c93abbf8..930a68ff4f2e 100644
--- a/platform/util/src/com/intellij/openapi/util/registry/RegistryValue.java
+++ b/platform/util/src/com/intellij/openapi/util/registry/RegistryValue.java
@@ -267,6 +267,7 @@ public class RegistryValue {
void resetCache() {
myStringCachedValue = null;
myIntCachedValue = null;
+ myDoubleCachedValue = null;
myBooleanCachedValue = null;
}