Introduce compiler option to dump declaration mapping.

This commit is contained in:
Ilya Gorbunov
2016-03-15 18:39:43 +03:00
parent 4e49187549
commit e7d75fccd6
8 changed files with 22 additions and 2 deletions
+1 -1
View File
@@ -877,7 +877,7 @@
</target> </target>
<target name="stdlib"> <target name="stdlib">
<new-kotlinc output="${output}/classes/stdlib" moduleName="kotlin-stdlib"> <new-kotlinc output="${output}/classes/stdlib" moduleName="kotlin-stdlib" additionalOptions="-Xdump-declarations-to ${output}/declarations/stdlib-declarations.json">
<src> <src>
<include name="libraries/stdlib/src"/> <include name="libraries/stdlib/src"/>
</src> </src>
@@ -70,6 +70,10 @@ public class K2JVMCompilerArguments extends CommonCompilerArguments {
@Argument(value = "Xskip-metadata-version-check", description = "Try loading binary incompatible classes, may cause crashes") @Argument(value = "Xskip-metadata-version-check", description = "Try loading binary incompatible classes, may cause crashes")
public boolean skipMetadataVersionCheck; public boolean skipMetadataVersionCheck;
@Argument(value = "Xdump-declarations-to", description = "Path to JSON file to dump Java to Kotlin declaration mappings")
@ValueDescription("<path>")
public String declarationsOutputPath;
// Paths to output directories for friend modules. // Paths to output directories for friend modules.
public String[] friendPaths; public String[] friendPaths;
@@ -279,6 +279,7 @@ open class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
configuration.put(JVMConfigurationKeys.DISABLE_PARAM_ASSERTIONS, arguments.noParamAssertions) configuration.put(JVMConfigurationKeys.DISABLE_PARAM_ASSERTIONS, arguments.noParamAssertions)
configuration.put(JVMConfigurationKeys.DISABLE_INLINE, arguments.noInline) configuration.put(JVMConfigurationKeys.DISABLE_INLINE, arguments.noInline)
configuration.put(JVMConfigurationKeys.DISABLE_OPTIMIZATION, arguments.noOptimize) configuration.put(JVMConfigurationKeys.DISABLE_OPTIMIZATION, arguments.noOptimize)
configuration.put(JVMConfigurationKeys.DECLARATIONS_JSON_PATH, arguments.declarationsOutputPath)
configuration.put(CLIConfigurationKeys.ALLOW_KOTLIN_PACKAGE, arguments.allowKotlinPackage); configuration.put(CLIConfigurationKeys.ALLOW_KOTLIN_PACKAGE, arguments.allowKotlinPackage);
configuration.put(CLIConfigurationKeys.REPORT_PERF, arguments.reportPerf); configuration.put(CLIConfigurationKeys.REPORT_PERF, arguments.reportPerf);
} }
@@ -399,7 +399,7 @@ object KotlinToJVMBytecodeCompiler {
outputDirectory, outputDirectory,
incrementalCompilationComponents, incrementalCompilationComponents,
onIndependentPartCompilationEnd = onIndependentPartCompilationEnd, onIndependentPartCompilationEnd = onIndependentPartCompilationEnd,
dumpBinarySignatureMappingTo = outputDirectory?.resolve("binary-signatures.json") ?: createTempFile("binary-signatures", ".json")) dumpBinarySignatureMappingTo = configuration.get(JVMConfigurationKeys.DECLARATIONS_JSON_PATH)?.let { File(it) })
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled() ProgressIndicatorAndCompilationCanceledStatus.checkCanceled()
val generationStart = PerformanceCounter.currentTime() val generationStart = PerformanceCounter.currentTime()
@@ -44,6 +44,8 @@ public class JVMConfigurationKeys {
public static final CompilerConfigurationKey<String> MODULE_XML_FILE_PATH = CompilerConfigurationKey.create("path to module.xml"); public static final CompilerConfigurationKey<String> MODULE_XML_FILE_PATH = CompilerConfigurationKey.create("path to module.xml");
public static final CompilerConfigurationKey<String> DECLARATIONS_JSON_PATH = CompilerConfigurationKey.create("path to declarations output");
public static final CompilerConfigurationKey<List<Module>> MODULES = public static final CompilerConfigurationKey<List<Module>> MODULES =
CompilerConfigurationKey.create("module data"); CompilerConfigurationKey.create("module data");
+1
View File
@@ -6,6 +6,7 @@ where advanced options include:
-Xreport-perf Report detailed performance statistics -Xreport-perf Report detailed performance statistics
-Xallow-kotlin-package Allow compiling code in package 'kotlin' -Xallow-kotlin-package Allow compiling code in package 'kotlin'
-Xskip-metadata-version-check Try loading binary incompatible classes, may cause crashes -Xskip-metadata-version-check Try loading binary incompatible classes, may cause crashes
-Xdump-declarations-to <path> Path to JSON file to dump Java to Kotlin declaration mappings
-Xno-inline Disable method inlining -Xno-inline Disable method inlining
-Xrepeat <count> Repeat compilation (for performance analysis) -Xrepeat <count> Repeat compilation (for performance analysis)
-Xplugin <path> Load plugins from the given classpath -Xplugin <path> Load plugins from the given classpath
+6
View File
@@ -50,6 +50,12 @@
<goals> <goals>
<goal>compile</goal> <goal>compile</goal>
</goals> </goals>
<configuration>
<args combine.children="append">
<arg>-Xdump-declarations-to</arg>
<arg>${basedir}/target/stdlib-declarations.json</arg>
</args>
</configuration>
</execution> </execution>
<execution> <execution>
+6
View File
@@ -103,6 +103,12 @@
<goals> <goals>
<goal>compile</goal> <goal>compile</goal>
</goals> </goals>
<configuration>
<args combine.children="append">
<arg>-Xdump-declarations-to</arg>
<arg>${basedir}/target/runtime-declarations.json</arg>
</args>
</configuration>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>