introduce "unified IC implementation" advanced compiler setting to enable dep-graph based IC

GitOrigin-RevId: 799fd4aefb2ba35db1ac3addfb1724f81d5d6c58
This commit is contained in:
Eugene Zhuravlev
2024-05-22 19:35:52 +02:00
committed by intellij-monorepo-bot
parent 56c3b17d89
commit 4e442deca3
4 changed files with 13 additions and 2 deletions

View File

@@ -119,7 +119,8 @@ import org.jetbrains.jps.model.java.compiler.JavaCompilers;
import org.jvnet.winp.Priority;
import org.jvnet.winp.WinProcess;
import javax.tools.*;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import java.awt.*;
import java.io.File;
import java.io.IOException;
@@ -1518,6 +1519,12 @@ public final class BuildManager implements Disposable {
cmdLine.addParameter("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=" + debugPort);
}
// DepGraph-based IC implementation
if (AdvancedSettings.getBoolean("compiler.unified.ic.implementation")) {
cmdLine.addParameter("-D" + GlobalOptions.DEPENDENCY_GRAPH_ENABLED + "=true");
cmdLine.addParameter("-Dkotlin.jps.dumb.mode=true");
}
// portable caches
if (Registry.is("compiler.process.use.portable.caches") &&
CompilerCacheConfigurator.isServerUrlConfigured(project) &&

View File

@@ -641,6 +641,8 @@
bundle="messages.JavaBundle"/>
<advancedSetting id="compiler.lower.process.priority" groupKey="advanced.settings.group.compiler" default="true"
bundle="messages.JavaBundle"/>
<advancedSetting id="compiler.unified.ic.implementation" groupKey="advanced.settings.group.compiler" default="false"
bundle="messages.JavaBundle"/>
<advancedSetting id="code.vision.java.minimal.usages" groupKey="advanced.settings.group.java" default="0" bundle="messages.JavaBundle"/>
<advancedSetting id="java.completion.qualifier.as.argument" groupKey="advanced.settings.group.java" default="true"
bundle="messages.JavaBundle"/>

View File

@@ -1758,6 +1758,8 @@ advanced.setting.compiler.lower.process.priority=Run compilation with lower prio
advanced.setting.compiler.lower.process.priority.description=Run external JPS process with IDLE priority on Windows and nice level 10 on Linux/macOS
advanced.setting.compiler.automake.allow.when.app.running=Allow auto-make to start even if developed application is currently running
advanced.setting.compiler.automake.allow.when.app.running.description=Automatically started make may eventually delete some classes that are required by the application
advanced.setting.compiler.unified.ic.implementation=Enable unified Java/Kotlin incremental compilation implementation
advanced.setting.compiler.unified.ic.implementation.description=External JPS process will use new incremental compilation implementation that can handle both Java- and Kotlin-produced bytecode
advanced.settings.group.java=Java
advanced.setting.code.vision.java.minimal.usages=Code Vision: Minimum usages required to show inlay hints
advanced.setting.java.completion.qualifier.as.argument=Enable completion for static methods, which uses qualifier as a first argument

View File

@@ -42,7 +42,7 @@ public final class BuildDataManager {
private static final Logger LOG = Logger.getInstance(BuildDataManager.class);
public static final String PROCESS_CONSTANTS_NON_INCREMENTAL_PROPERTY = "compiler.process.constants.non.incremental";
private static final int VERSION = 39 + (PersistentHashMapValueStorage.COMPRESSION_ENABLED ? 1:0);
private static final int VERSION = 39 + (PersistentHashMapValueStorage.COMPRESSION_ENABLED? 1 : 0) + (JavaBuilderUtil.isDepGraphEnabled()? 2 : 0);
private static final String SRC_TO_FORM_STORAGE = "src-form";
private static final String SRC_TO_OUTPUT_STORAGE = "src-out";
private static final String OUT_TARGET_STORAGE = "out-target";