From 6dd1423335c066880dcf8f8ae5d18ad3dc97aeeb Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 14 Nov 2013 15:24:48 +0100 Subject: [PATCH] IDEA-116324 IDEA 13 compiler uses some old xmx setting --- .../compiler/options/CompilerUIConfigurable.java | 4 +++- .../com/intellij/compiler/server/BuildManager.java | 11 +++-------- .../compiler/CompilerWorkspaceConfiguration.java | 9 +++++++++ 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java b/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java index 0e8f7bdaa370..f66e2a32cc58 100644 --- a/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java +++ b/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java @@ -19,6 +19,7 @@ import com.intellij.compiler.CompilerConfiguration; import com.intellij.compiler.CompilerConfigurationImpl; import com.intellij.compiler.CompilerWorkspaceConfiguration; import com.intellij.compiler.MalformedPatternException; +import com.intellij.compiler.impl.javaCompiler.javac.JavacConfiguration; import com.intellij.compiler.server.BuildManager; import com.intellij.ide.PowerSaveMode; import com.intellij.openapi.compiler.CompilerBundle; @@ -159,7 +160,8 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura myCbEnableAutomake.setSelected(workspaceConfiguration.MAKE_PROJECT_ON_SAVE); myCbParallelCompilation.setSelected(workspaceConfiguration.PARALLEL_COMPILATION); myCbRebuildOnDependencyChange.setSelected(workspaceConfiguration.REBUILD_ON_DEPENDENCY_CHANGE); - myHeapSizeField.setText(String.valueOf(workspaceConfiguration.COMPILER_PROCESS_HEAP_SIZE)); + final int javacPreferred = JavacConfiguration.getOptions(myProject, JavacConfiguration.class).MAXIMUM_HEAP_SIZE; // for compatibility with older projects + myHeapSizeField.setText(String.valueOf(workspaceConfiguration.getProcessHeapSize(javacPreferred))); final String options = workspaceConfiguration.COMPILER_PROCESS_ADDITIONAL_VM_OPTIONS; myVMOptionsField.setText(options == null ? "" : options.trim()); diff --git a/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java b/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java index 135cce15e308..b67a815abc9c 100644 --- a/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java +++ b/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java @@ -100,7 +100,8 @@ import org.jetbrains.jps.cmdline.ClasspathBootstrap; import org.jetbrains.jps.incremental.Utils; import org.jetbrains.jps.model.serialization.JpsGlobalLoader; -import javax.tools.*; +import javax.tools.JavaCompiler; +import javax.tools.ToolProvider; import java.awt.*; import java.io.File; import java.io.IOException; @@ -838,13 +839,7 @@ public class BuildManager implements ApplicationComponent{ cmdLine.setExePath(vmExecutablePath); //cmdLine.addParameter("-XX:MaxPermSize=150m"); //cmdLine.addParameter("-XX:ReservedCodeCacheSize=64m"); - int heapSize = config.COMPILER_PROCESS_HEAP_SIZE; - - // todo: remove when old make implementation is removed - if (heapSize == CompilerWorkspaceConfiguration.DEFAULT_COMPILE_PROCESS_HEAP_SIZE) { - // check if javac is set to use larger heap, and if so, use it. - heapSize = Math.max(heapSize, JavacConfiguration.getOptions(project, JavacConfiguration.class).MAXIMUM_HEAP_SIZE); - } + final int heapSize = config.getProcessHeapSize(JavacConfiguration.getOptions(project, JavacConfiguration.class).MAXIMUM_HEAP_SIZE); cmdLine.addParameter("-Xmx" + heapSize + "m"); diff --git a/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java b/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java index 57ca44098216..bbff30ad144d 100644 --- a/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java +++ b/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java @@ -69,4 +69,13 @@ public class CompilerWorkspaceConfiguration implements PersistentStateComponent< public boolean allowAutoMakeWhileRunningApplication() { return false;/*ALLOW_AUTOMAKE_WHILE_RUNNING_APPLICATION*/ } + + public int getProcessHeapSize(final int javacPreferredHeapSize) { + final int heapSize = COMPILER_PROCESS_HEAP_SIZE; + if (heapSize != DEFAULT_COMPILE_PROCESS_HEAP_SIZE) { + return heapSize; + } + // compatibility with older builds: if javac is set to use larger heap, and if so, use it. + return Math.max(heapSize, javacPreferredHeapSize); + } }