JS: don't load binary AST unless required by the inliner

This commit is contained in:
Anton Bannykh
2018-11-22 15:20:25 +03:00
parent c83b6d46cc
commit 6d26bf9622
22 changed files with 1165 additions and 87 deletions
@@ -143,7 +143,7 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
}
else {
TranslationResultValue translatedValue = compiledParts.get(allSources[i]);
translationUnits.add(new TranslationUnit.BinaryAst(translatedValue.getBinaryAst()));
translationUnits.add(new TranslationUnit.BinaryAst(translatedValue.getBinaryAst(), translatedValue.getHeader()));
}
}
return translator.translateUnits(reporter, translationUnits, mainCallParameters, jsAnalysisResult);
@@ -124,9 +124,10 @@ open class CompilerCallbackServicesFacadeServer(
override fun incrementalResultsConsumer_processPackagePart(
sourceFilePath: String,
packagePartMetadata: ByteArray,
binaryAst: ByteArray
binaryAst: ByteArray,
header: ByteArray
) {
incrementalResultsConsumer!!.processPackagePart(File(sourceFilePath), packagePartMetadata, binaryAst)
incrementalResultsConsumer!!.processPackagePart(File(sourceFilePath), packagePartMetadata, binaryAst, header)
}
override fun incrementalResultsConsumer_processInlineFunctions(functions: Collection<JsInlineFunctionHash>) {
@@ -139,6 +140,6 @@ open class CompilerCallbackServicesFacadeServer(
override fun incrementalDataProvider_getCompiledPackageParts() =
incrementalDataProvider!!.compiledPackageParts.entries.map {
CompiledPackagePart(it.key.path, it.value.metadata, it.value.binaryAst)
CompiledPackagePart(it.key.path, it.value.metadata, it.value.binaryAst, it.value.header)
}
}
@@ -107,7 +107,7 @@ interface CompilerCallbackServicesFacade : Remote {
fun incrementalResultsConsumer_processHeader(headerMetadata: ByteArray)
@Throws(RemoteException::class)
fun incrementalResultsConsumer_processPackagePart(sourceFilePath: String, packagePartMetadata: ByteArray, binaryAst: ByteArray)
fun incrementalResultsConsumer_processPackagePart(sourceFilePath: String, packagePartMetadata: ByteArray, binaryAst: ByteArray, header: ByteArray)
@Throws(RemoteException::class)
fun incrementalResultsConsumer_processInlineFunctions(functions: Collection<JsInlineFunctionHash>)
@@ -126,7 +126,7 @@ interface CompilerCallbackServicesFacade : Remote {
class CompiledPackagePart(
val filePath: String,
val metadata: ByteArray, val binaryAst: ByteArray
val metadata: ByteArray, val binaryAst: ByteArray, val header: ByteArray
) : Serializable
class RmiFriendlyCompilationCanceledException : Exception(), Serializable {
@@ -22,7 +22,7 @@ class RemoteIncrementalDataProvider(val facade: CompilerCallbackServicesFacade,
get() = rpcProfiler.withMeasure(this) {
val result = mutableMapOf<File, TranslationResultValue>()
facade.incrementalDataProvider_getCompiledPackageParts().forEach {
val prev = result.put(File(it.filePath), TranslationResultValue(it.metadata, it.binaryAst))
val prev = result.put(File(it.filePath), TranslationResultValue(it.metadata, it.binaryAst, it.header))
check(prev == null) { "compiledPackageParts: duplicated entry for file `${it.filePath}`" }
}
result
@@ -24,9 +24,9 @@ class RemoteIncrementalResultsConsumer(val facade: CompilerCallbackServicesFacad
}
}
override fun processPackagePart(sourceFile: File, packagePartMetadata: ByteArray, binaryAst: ByteArray) {
override fun processPackagePart(sourceFile: File, packagePartMetadata: ByteArray, binaryAst: ByteArray, header: ByteArray) {
rpcProfiler.withMeasure(this) {
facade.incrementalResultsConsumer_processPackagePart(sourceFile.path, packagePartMetadata, binaryAst)
facade.incrementalResultsConsumer_processPackagePart(sourceFile.path, packagePartMetadata, binaryAst, header)
}
}