[scripting] Move earlierScripts to the frontend descriptor

^KT-20488 fixed
This commit is contained in:
Ilya Muradyan
2021-11-13 00:28:06 +03:00
parent 4149b91c0d
commit 6917ff7d2a
15 changed files with 94 additions and 65 deletions
@@ -79,10 +79,7 @@ class ScriptCodegen private constructor(
classBuilder: ClassBuilder,
methodContext: MethodContext
) {
val jvmSignature = typeMapper.mapScriptSignature(
scriptDescriptor,
scriptContext.earlierScripts
)
val jvmSignature = typeMapper.mapScriptSignature(scriptDescriptor)
val asmMethod = jvmSignature.asmMethod
scriptContext.resultFieldInfo?.let { resultFieldInfo ->
@@ -129,7 +126,7 @@ class ScriptCodegen private constructor(
field.store(value, iv)
}
if (!scriptContext.earlierScripts.isEmpty()) {
if (scriptContext.scriptDescriptor.isReplScript) {
val scriptsParamIndex = frameMap.enterTemp(AsmUtil.getArrayType(OBJECT_TYPE))
scriptContext.earlierScripts.forEachIndexed { earlierScriptIndex, earlierScript ->
@@ -67,8 +67,10 @@ class ScriptContext(
}
}
private val ctorExplicitParametersStart = if (scriptDescriptor.earlierScriptsConstructorParameter == null) 0 else 1
private val ctorImplicitReceiversParametersStart =
(scriptDescriptor.getSuperClassNotAny()?.unsubstitutedPrimaryConstructor?.valueParameters?.size ?: 0)
ctorExplicitParametersStart + (scriptDescriptor.getSuperClassNotAny()?.unsubstitutedPrimaryConstructor?.valueParameters?.size ?: 0)
private val ctorProvidedPropertiesParametersStart =
ctorImplicitReceiversParametersStart + scriptDescriptor.implicitReceivers.size
@@ -1204,15 +1204,11 @@ class KotlinTypeMapper @JvmOverloads constructor(
return Method(name, desc)
}
fun mapScriptSignature(script: ScriptDescriptor, importedScripts: List<ScriptDescriptor>): JvmMethodSignature {
fun mapScriptSignature(script: ScriptDescriptor): JvmMethodSignature {
val sw = BothSignatureWriter(BothSignatureWriter.Mode.METHOD)
sw.writeParametersStart()
if (importedScripts.isNotEmpty()) {
writeParameter(sw, script.module.builtIns.array.defaultType, null)
}
for (valueParameter in script.unsubstitutedPrimaryConstructor.valueParameters) {
writeParameter(sw, valueParameter.type, null)/* callableDescriptor = */
}