Transform *Array.size to properties
This commit is contained in:
@@ -16,12 +16,16 @@
|
||||
|
||||
package org.jetbrains.kotlin.codegen.intrinsics
|
||||
|
||||
import org.jetbrains.kotlin.codegen.Callable
|
||||
import org.jetbrains.kotlin.codegen.CallableMethod
|
||||
import org.jetbrains.kotlin.codegen.ExpressionCodegen
|
||||
import org.jetbrains.kotlin.codegen.StackValue
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||
import org.jetbrains.org.objectweb.asm.Type
|
||||
|
||||
public class ArraySize : IntrinsicMethod() {
|
||||
override fun toCallable(method: CallableMethod): Callable =
|
||||
createUnaryIntrinsicCallable(method) { adapter ->
|
||||
adapter.arraylength()
|
||||
}
|
||||
public class ArraySize : IntrinsicPropertyGetter() {
|
||||
override fun generate(
|
||||
resolvedCall: ResolvedCall<*>?, codegen: ExpressionCodegen, returnType: Type, receiver: StackValue
|
||||
) = StackValue.operation(returnType) {
|
||||
receiver.put(receiver.type, it)
|
||||
it.arraylength()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,7 +134,7 @@ public class IntrinsicMethods {
|
||||
declareArrayMethodsForPrimitive(jvmPrimitiveType);
|
||||
}
|
||||
|
||||
declareIntrinsicFunction("Array", "size", 0, ARRAY_SIZE);
|
||||
declareIntrinsicFunction("Array", "size", -1, ARRAY_SIZE);
|
||||
declareIntrinsicFunction("Array", "set", 2, ARRAY_SET);
|
||||
declareIntrinsicFunction("Array", "get", 1, ARRAY_GET);
|
||||
declareIntrinsicFunction("Array", "clone", 0, CLONE);
|
||||
@@ -143,7 +143,7 @@ public class IntrinsicMethods {
|
||||
|
||||
private void declareArrayMethodsForPrimitive(@NotNull JvmPrimitiveType jvmPrimitiveType) {
|
||||
String arrayTypeName = jvmPrimitiveType.getPrimitiveType().getArrayTypeName().asString();
|
||||
declareIntrinsicFunction(arrayTypeName, "size", 0, ARRAY_SIZE);
|
||||
declareIntrinsicFunction(arrayTypeName, "size", -1, ARRAY_SIZE);
|
||||
declareIntrinsicFunction(arrayTypeName, "set", 2, ARRAY_SET);
|
||||
declareIntrinsicFunction(arrayTypeName, "get", 1, ARRAY_GET);
|
||||
declareIntrinsicFunction(arrayTypeName, "clone", 0, CLONE);
|
||||
|
||||
Reference in New Issue
Block a user