JVM IR: clear BindingContext after psi2ir

This helps to reduce peak memory in lowerings/codegen by a lot.

A more robust approach would be to have a separate BindingContext for
each file, and clear each of them after running psi2ir on it. This would
also lower peak memory usage in psi2ir.

Provide a fallback workaround compiler argument
-Xir-do-not-clear-binding-context just in case BindingContext is in fact
used somewhere and it's not caught by tests.
This commit is contained in:
Alexander Udalov
2020-10-21 22:26:55 +02:00
parent bc76f1fec3
commit 382a0bd298
11 changed files with 66 additions and 29 deletions
@@ -108,6 +108,12 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
)
var isIrWithStableAbi: Boolean by FreezableVar(false)
@Argument(
value = "-Xir-do-not-clear-binding-context",
description = "When using the IR backend, do not clear BindingContext between psi2ir and lowerings"
)
var doNotClearBindingContext: Boolean by FreezableVar(false)
@Argument(value = "-Xmodule-path", valueDescription = "<path>", description = "Paths where to find Java 9+ modules")
var javaModulePath: String? by NullableStringFreezableVar(null)