From e9aad54664874d010c161da9158e93bf2fb65074 Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Tue, 10 Oct 2017 11:17:42 +0300 Subject: [PATCH] Add intrinsics to mark and choose special api calls #KT-20585 Fixed --- .../jvm/internal/MagicApiIntrinsics.java | 76 +++++++++++++++++++ .../reference-public-api/kotlin-runtime.txt | 18 +++++ .../kotlin-stdlib-runtime-merged.txt | 18 +++++ 3 files changed, 112 insertions(+) create mode 100644 core/runtime.jvm/src/kotlin/jvm/internal/MagicApiIntrinsics.java diff --git a/core/runtime.jvm/src/kotlin/jvm/internal/MagicApiIntrinsics.java b/core/runtime.jvm/src/kotlin/jvm/internal/MagicApiIntrinsics.java new file mode 100644 index 00000000000..78c68d6a5c7 --- /dev/null +++ b/core/runtime.jvm/src/kotlin/jvm/internal/MagicApiIntrinsics.java @@ -0,0 +1,76 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package kotlin.jvm.internal; + +import kotlin.SinceKotlin; + +@SinceKotlin(version = "1.2") +public class MagicApiIntrinsics { + public static T anyMagicApiCall(int id) { + return null; + } + + public static void voidMagicApiCall(int id) { + } + + public static int intMagicApiCall(int id) { + return 0; + } + + public static T anyMagicApiCall(Object data) { + return null; + } + + public static void voidMagicApiCall(Object data) { + } + + public static int intMagicApiCall(Object data) { + return 0; + } + + public static int intMagicApiCall(int id, long longData, Object anyData) { + return 0; + } + + public static int intMagicApiCall(int id, long longData1, long longData2, Object anyData) { + return 0; + } + + public static int intMagicApiCall(int id, Object anyData1, Object anyData2) { + return 0; + } + + public static int intMagicApiCall(int id, Object anyData1, Object anyData2, Object anyData3, Object anyData4) { + return 0; + } + + public static T anyMagicApiCall(int id, long longData, Object anyData) { + return null; + } + + public static T anyMagicApiCall(int id, long longData1, long longData2, Object anyData) { + return null; + } + + public static T anyMagicApiCall(int id, Object anyData1, Object anyData2) { + return null; + } + + public static T anyMagicApiCall(int id, Object anyData1, Object anyData2, Object anyData3, Object anyData4) { + return null; + } +} diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt index 07c0e5127b4..bc22d46374f 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt @@ -627,6 +627,24 @@ public final class kotlin/jvm/internal/LongSpreadBuilder : kotlin/jvm/internal/P public final fun toArray ()[J } +public class kotlin/jvm/internal/MagicApiIntrinsics { + public fun ()V + public static fun anyMagicApiCall (I)Ljava/lang/Object; + public static fun anyMagicApiCall (IJJLjava/lang/Object;)Ljava/lang/Object; + public static fun anyMagicApiCall (IJLjava/lang/Object;)Ljava/lang/Object; + public static fun anyMagicApiCall (ILjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + public static fun anyMagicApiCall (ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + public static fun anyMagicApiCall (Ljava/lang/Object;)Ljava/lang/Object; + public static fun intMagicApiCall (I)I + public static fun intMagicApiCall (IJJLjava/lang/Object;)I + public static fun intMagicApiCall (IJLjava/lang/Object;)I + public static fun intMagicApiCall (ILjava/lang/Object;Ljava/lang/Object;)I + public static fun intMagicApiCall (ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)I + public static fun intMagicApiCall (Ljava/lang/Object;)I + public static fun voidMagicApiCall (I)V + public static fun voidMagicApiCall (Ljava/lang/Object;)V +} + public class kotlin/jvm/internal/MutableLocalVariableReference : kotlin/jvm/internal/MutablePropertyReference0 { public fun ()V public fun get ()Ljava/lang/Object; diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt index 99fe7df8718..23342e1d11f 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt @@ -2638,6 +2638,24 @@ public final class kotlin/jvm/internal/LongSpreadBuilder : kotlin/jvm/internal/P public final fun toArray ()[J } +public class kotlin/jvm/internal/MagicApiIntrinsics { + public fun ()V + public static fun anyMagicApiCall (I)Ljava/lang/Object; + public static fun anyMagicApiCall (IJJLjava/lang/Object;)Ljava/lang/Object; + public static fun anyMagicApiCall (IJLjava/lang/Object;)Ljava/lang/Object; + public static fun anyMagicApiCall (ILjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + public static fun anyMagicApiCall (ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + public static fun anyMagicApiCall (Ljava/lang/Object;)Ljava/lang/Object; + public static fun intMagicApiCall (I)I + public static fun intMagicApiCall (IJJLjava/lang/Object;)I + public static fun intMagicApiCall (IJLjava/lang/Object;)I + public static fun intMagicApiCall (ILjava/lang/Object;Ljava/lang/Object;)I + public static fun intMagicApiCall (ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)I + public static fun intMagicApiCall (Ljava/lang/Object;)I + public static fun voidMagicApiCall (I)V + public static fun voidMagicApiCall (Ljava/lang/Object;)V +} + public class kotlin/jvm/internal/MutableLocalVariableReference : kotlin/jvm/internal/MutablePropertyReference0 { public fun ()V public fun get ()Ljava/lang/Object;