Actual conversion ParametersBuilder.java->ParametersBuilder.kt
This commit is contained in:
@@ -14,147 +14,122 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.codegen.inline;
|
package org.jetbrains.kotlin.codegen.inline
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.kotlin.codegen.StackValue
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.org.objectweb.asm.Type
|
||||||
import org.jetbrains.kotlin.codegen.StackValue;
|
|
||||||
import org.jetbrains.org.objectweb.asm.Type;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList
|
||||||
import java.util.Collections;
|
import java.util.Collections
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class ParametersBuilder {
|
class ParametersBuilder {
|
||||||
|
|
||||||
private final List<ParameterInfo> params = new ArrayList<ParameterInfo>();
|
private val params = ArrayList<ParameterInfo>()
|
||||||
private final List<CapturedParamInfo> capturedParams = new ArrayList<CapturedParamInfo>();
|
private val capturedParams = ArrayList<CapturedParamInfo>()
|
||||||
|
|
||||||
private int nextIndex = 0;
|
var nextValueParameterIndex = 0
|
||||||
private int nextCaptured = 0;
|
private set
|
||||||
|
private var nextCaptured = 0
|
||||||
|
|
||||||
@NotNull
|
fun addThis(type: Type, skipped: Boolean): ParameterInfo {
|
||||||
public static ParametersBuilder newBuilder() {
|
val info = ParameterInfo(type, skipped, nextValueParameterIndex, -1)
|
||||||
return new ParametersBuilder();
|
addParameter(info)
|
||||||
|
return info
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
fun addNextParameter(type: Type, skipped: Boolean, remapValue: StackValue?): ParameterInfo {
|
||||||
public ParameterInfo addThis(@NotNull Type type, boolean skipped) {
|
return addParameter(ParameterInfo(type, skipped, nextValueParameterIndex, remapValue))
|
||||||
ParameterInfo info = new ParameterInfo(type, skipped, nextIndex, -1);
|
|
||||||
addParameter(info);
|
|
||||||
return info;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
fun addCapturedParam(
|
||||||
public ParameterInfo addNextParameter(@NotNull Type type, boolean skipped, @Nullable StackValue remapValue) {
|
original: CapturedParamInfo,
|
||||||
return addParameter(new ParameterInfo(type, skipped, nextIndex, remapValue));
|
newFieldName: String): CapturedParamInfo {
|
||||||
|
val info = CapturedParamInfo(original.desc, newFieldName, original.isSkipped, nextCaptured, original.getIndex())
|
||||||
|
info.setLambda(original.getLambda())
|
||||||
|
return addCapturedParameter(info)
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
fun addCapturedParam(
|
||||||
public CapturedParamInfo addCapturedParam(
|
desc: CapturedParamDesc,
|
||||||
@NotNull CapturedParamInfo original,
|
newFieldName: String): CapturedParamInfo {
|
||||||
@NotNull String newFieldName
|
val info = CapturedParamInfo(desc, newFieldName, false, nextCaptured, null)
|
||||||
) {
|
return addCapturedParameter(info)
|
||||||
CapturedParamInfo info = new CapturedParamInfo(original.desc, newFieldName, original.isSkipped, nextCaptured, original.getIndex());
|
|
||||||
info.setLambda(original.getLambda());
|
|
||||||
return addCapturedParameter(info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
fun addCapturedParamCopy(
|
||||||
public CapturedParamInfo addCapturedParam(
|
copyFrom: CapturedParamInfo): CapturedParamInfo {
|
||||||
@NotNull CapturedParamDesc desc,
|
val info = copyFrom.newIndex(nextCaptured)
|
||||||
@NotNull String newFieldName
|
return addCapturedParameter(info)
|
||||||
) {
|
|
||||||
CapturedParamInfo info = new CapturedParamInfo(desc, newFieldName, false, nextCaptured, null);
|
|
||||||
return addCapturedParameter(info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
fun addCapturedParam(
|
||||||
public CapturedParamInfo addCapturedParamCopy(
|
containingLambda: CapturedParamOwner,
|
||||||
@NotNull CapturedParamInfo copyFrom
|
fieldName: String,
|
||||||
) {
|
type: Type,
|
||||||
CapturedParamInfo info = copyFrom.newIndex(nextCaptured);
|
skipped: Boolean,
|
||||||
return addCapturedParameter(info);
|
original: ParameterInfo?): CapturedParamInfo {
|
||||||
}
|
val info = CapturedParamInfo(CapturedParamDesc.createDesc(containingLambda, fieldName, type), skipped, nextCaptured,
|
||||||
|
if (original != null) original.getIndex() else -1)
|
||||||
@NotNull
|
|
||||||
public CapturedParamInfo addCapturedParam(
|
|
||||||
@NotNull CapturedParamOwner containingLambda,
|
|
||||||
@NotNull String fieldName,
|
|
||||||
@NotNull Type type,
|
|
||||||
boolean skipped,
|
|
||||||
@Nullable ParameterInfo original
|
|
||||||
) {
|
|
||||||
CapturedParamInfo info =
|
|
||||||
new CapturedParamInfo(CapturedParamDesc.createDesc(containingLambda, fieldName, type), skipped, nextCaptured,
|
|
||||||
original != null ? original.getIndex() : -1);
|
|
||||||
if (original != null) {
|
if (original != null) {
|
||||||
info.setLambda(original.getLambda());
|
info.setLambda(original.getLambda())
|
||||||
}
|
}
|
||||||
return addCapturedParameter(info);
|
return addCapturedParameter(info)
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
private fun addParameter(info: ParameterInfo): ParameterInfo {
|
||||||
private ParameterInfo addParameter(ParameterInfo info) {
|
params.add(info)
|
||||||
params.add(info);
|
nextValueParameterIndex += info.getType().size
|
||||||
nextIndex += info.getType().getSize();
|
return info
|
||||||
return info;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
private fun addCapturedParameter(info: CapturedParamInfo): CapturedParamInfo {
|
||||||
private CapturedParamInfo addCapturedParameter(CapturedParamInfo info) {
|
capturedParams.add(info)
|
||||||
capturedParams.add(info);
|
nextCaptured += info.getType().size
|
||||||
nextCaptured += info.getType().getSize();
|
return info
|
||||||
return info;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
fun listNotCaptured(): List<ParameterInfo> {
|
||||||
public List<ParameterInfo> listNotCaptured() {
|
return Collections.unmodifiableList(params)
|
||||||
return Collections.unmodifiableList(params);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
fun listCaptured(): List<CapturedParamInfo> {
|
||||||
public List<CapturedParamInfo> listCaptured() {
|
return Collections.unmodifiableList(capturedParams)
|
||||||
return Collections.unmodifiableList(capturedParams);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
fun listAllParams(): List<ParameterInfo> {
|
||||||
public List<ParameterInfo> listAllParams() {
|
val list = ArrayList(params)
|
||||||
List<ParameterInfo> list = new ArrayList<ParameterInfo>(params);
|
list.addAll(capturedParams)
|
||||||
list.addAll(capturedParams);
|
return list
|
||||||
return list;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
private fun buildWithStubs(): List<ParameterInfo> {
|
||||||
private List<ParameterInfo> buildWithStubs() {
|
return Parameters.addStubs(listNotCaptured())
|
||||||
return Parameters.addStubs(listNotCaptured());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<CapturedParamInfo> buildCapturedWithStubs() {
|
private fun buildCapturedWithStubs(): List<CapturedParamInfo> {
|
||||||
return Parameters.shiftAndAddStubs(listCaptured(), nextIndex);
|
return Parameters.shiftAndAddStubs(listCaptured(), nextValueParameterIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
public Parameters buildParameters() {
|
fun buildParameters(): Parameters {
|
||||||
return new Parameters(buildWithStubs(), buildCapturedWithStubs());
|
return Parameters(buildWithStubs(), buildCapturedWithStubs())
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getNextValueParameterIndex() {
|
companion object {
|
||||||
return nextIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ParametersBuilder initializeBuilderFrom(@NotNull Type objectType, @NotNull String descriptor) {
|
@JvmStatic fun newBuilder(): ParametersBuilder {
|
||||||
return initializeBuilderFrom(objectType, descriptor, null);
|
return ParametersBuilder()
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ParametersBuilder initializeBuilderFrom(@NotNull Type objectType, @NotNull String descriptor, @Nullable LambdaInfo inlineLambda) {
|
@JvmOverloads @JvmStatic fun initializeBuilderFrom(objectType: Type, descriptor: String, inlineLambda: LambdaInfo? = null): ParametersBuilder {
|
||||||
ParametersBuilder builder = newBuilder();
|
val builder = newBuilder()
|
||||||
//skipped this for inlined lambda cause it will be removed
|
//skipped this for inlined lambda cause it will be removed
|
||||||
builder.addThis(objectType, inlineLambda != null).setLambda(inlineLambda);
|
builder.addThis(objectType, inlineLambda != null).setLambda(inlineLambda)
|
||||||
|
|
||||||
Type[] types = Type.getArgumentTypes(descriptor);
|
val types = Type.getArgumentTypes(descriptor)
|
||||||
for (Type type : types) {
|
for (type in types) {
|
||||||
builder.addNextParameter(type, false, null);
|
builder.addNextParameter(type, false, null)
|
||||||
|
}
|
||||||
|
return builder
|
||||||
}
|
}
|
||||||
return builder;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user