diff --git a/runtime/src/main/cpp/Types.cpp b/runtime/src/main/cpp/Types.cpp deleted file mode 100644 index 646c5706848..00000000000 --- a/runtime/src/main/cpp/Types.cpp +++ /dev/null @@ -1,162 +0,0 @@ -#include "Natives.h" -#include "Types.h" - -namespace { -// Use 'echo -n "kotlin.ByteArray" | shasum -| xargs ~/bin/as_array' to generate hash. - -const TypeInfo implAnyTypeInfo = { - // kotlin.Any - { 0x6a, 0x97, 0xc2, 0x61, 0x64, 0x3a, 0xc6, 0x5e, 0x2a, 0x03, - 0xf9, 0xc1, 0x4c, 0x1f, 0x66, 0x9a, 0x44, 0xb2, 0x6b, 0x11 }, - 0, // instanceSize_ - nullptr, // superType_ - nullptr, // objOffsets - 0, // objOffsetsCount_ - nullptr, // implementedInterfaces_ - 0, // implementedInterfacesCount_ - nullptr, // vtable_ - nullptr, // openMethods_ - 0, // openMethodsCount_ - nullptr, // fields_ - 0 // fieldsCount_ -}; - -const TypeInfo implCloneableTypeInfo = { - // kotlin.Cloneable - { 0x2d, 0x4b, 0x3d, 0x2f, 0x69, 0x0d, 0x1c, 0xb5, 0x6e, 0xc6, - 0x67, 0xa7, 0x24, 0x57, 0x35, 0x98, 0xa4, 0x23, 0x0b, 0xc5 }, - 0, // instanceSize_ - nullptr, // superType_ - nullptr, // objOffsets - 0, // objOffsetsCount_ - nullptr, // implementedInterfaces_ - 0, // implementedInterfacesCount_ - nullptr, // vtable_ - nullptr, // openMethods_ - 0, // openMethodsCount_ - nullptr, // fields_ - 0 // fieldsCount_ -}; - -void* const implByteArrayTypeInfoVTbl[] = { - reinterpret_cast(Kotlin_ByteArray_clone) -}; - -const MethodTableRecord implByteArrayTypeInfoMethods[] = { - // TODO: fill in hash. - { 0, reinterpret_cast(Kotlin_ByteArray_clone) } -}; - -const TypeInfo* implByteArrayTypeInfoIfaces[] = { - &implCloneableTypeInfo -}; - -const TypeInfo implByteArrayTypeInfo = { - // kotlin.ByteArray - { 0x9e, 0x23, 0xa6, 0xa6, 0x91, 0x9b, 0x6b, 0x0a, 0x00, 0xc5, - 0x35, 0xe8, 0xd9, 0xd1, 0xa3, 0xb6, 0xc5, 0xc6, 0xd7, 0x65 }, - -1, // instanceSize_, array of 1 byte elements - &implAnyTypeInfo, // superType_ - nullptr, // objOffsets - 0, // objOffsetsCount_ - implByteArrayTypeInfoIfaces, // implementedInterfaces_ - 1, // implementedInterfacesCount_ - implByteArrayTypeInfoVTbl, // vtable_ - implByteArrayTypeInfoMethods, // openMethods_ - 1, // openMethodsCount_ - nullptr, // fields_ - 0 // fieldsCount_ -}; - -void* const implCharArrayTypeInfoVTbl[] = { - reinterpret_cast(Kotlin_CharArray_clone) -}; - -const MethodTableRecord implCharArrayTypeInfoMethods[] = { - // TODO: fill in hash. - { 0, reinterpret_cast(Kotlin_CharArray_clone) } -}; - -const TypeInfo* implCharArrayTypeInfoIfaces[] = { - &implCloneableTypeInfo -}; - -const TypeInfo implCharArrayTypeInfo = { - // kotlin.CharArray - { 0x70, 0x88, 0xd4, 0x20, 0x91, 0x6e, 0x25, 0x80, 0x33, 0x64, - 0x5a, 0x8d, 0x56, 0xaf, 0x99, 0x19, 0x14, 0xde, 0x5b, 0x71 }, - -2, // instanceSize_, array of 2 byte elements - &implAnyTypeInfo, // superType_ - nullptr, // objOffsets - 0, // objOffsetsCount_ - implCharArrayTypeInfoIfaces, // implementedInterfaces_ - 1, // implementedInterfacesCount_ - implCharArrayTypeInfoVTbl, // vtable_ - implCharArrayTypeInfoMethods, // openMethods_ - 1, // openMethodsCount_ - nullptr, // fields_ - 0 // fieldsCount_ -}; - -void* const implIntArrayTypeInfoVTbl[] = { - reinterpret_cast(Kotlin_IntArray_clone) -}; - -const MethodTableRecord implIntArrayTypeInfoMethods[] = { - // TODO: fill in hash. - { 0, reinterpret_cast(Kotlin_IntArray_clone) } -}; - -const TypeInfo* implIntArrayTypeInfoIfaces[] = { - &implCloneableTypeInfo -}; - -const TypeInfo implIntArrayTypeInfo = { - // kotlin.IntArray - { 0xdd, 0x69, 0x38, 0x31, 0x3e, 0x03, 0xc6, 0xfd, 0x88, 0x8f, - 0x1c, 0x83, 0x18, 0x06, 0xcc, 0xcb, 0x8d, 0x71, 0xd1, 0x4c }, - -4, // instanceSize_, array of 4 byte elements - &implAnyTypeInfo, // superType_ - nullptr, // objOffsets - 0, // objOffsetsCount_ - implIntArrayTypeInfoIfaces, // implementedInterfaces_ - 1, // implementedInterfacesCount_ - implIntArrayTypeInfoVTbl, // vtable_ - implIntArrayTypeInfoMethods, // openMethods_ - 1, // openMethodsCount_ - nullptr, // fields_ - 0 // fieldsCount_ -}; - -const TypeInfo implStringTypeInfo = { - { 0x5b, 0xac, 0x68, 0xed, 0x43, 0xd4, 0x81, 0x4a, 0x14, 0x18, - 0x10, 0xfa, 0x65, 0x09, 0xb9, 0xef, 0x20, 0x0a, 0xba, 0x78 }, // kotlin.String - -1, // instanceSize_, Strings are treated as array of 1 byte elements - &implAnyTypeInfo, // superType_ - nullptr, // objOffsets - 0, // objOffsetsCount_ - nullptr, // implementedInterfaces_ - 0, // implementedInterfacesCount_ - nullptr, // vtable_ - nullptr, // openMethods_ - 0, // openMethodsCount_ - nullptr, // fields_ - 0 // fieldsCount_ -}; - -} // namespace - -#ifdef __cplusplus -extern "C" { -#endif - -const TypeInfo* theAnyTypeInfo = &implAnyTypeInfo; -const TypeInfo* theCloneableTypeInfo = &implCloneableTypeInfo; -const TypeInfo* theByteArrayTypeInfo = &implByteArrayTypeInfo; -const TypeInfo* theCharArrayTypeInfo = &implCharArrayTypeInfo; -const TypeInfo* theIntArrayTypeInfo = &implIntArrayTypeInfo; -const TypeInfo* theStringTypeInfo = &implStringTypeInfo; - -#ifdef __cplusplus -} -#endif diff --git a/runtime/src/main/kotlin/kotlin_native/Any.kt b/runtime/src/main/kotlin/kotlin_native/Any.kt index 52600fbda99..16858afb2f3 100644 --- a/runtime/src/main/kotlin/kotlin_native/Any.kt +++ b/runtime/src/main/kotlin/kotlin_native/Any.kt @@ -1,5 +1,6 @@ package kotlin_native +@ExportTypeInfo("theAnyTypeInfo") public open class Any0 { // @SymbolName("Kotlin_Any_equals") // external public open operator fun equals0(other: Any0?): Boolean diff --git a/runtime/src/main/kotlin/kotlin_native/Arrays.kt b/runtime/src/main/kotlin/kotlin_native/Arrays.kt index 0f380821b06..800767e1dcf 100644 --- a/runtime/src/main/kotlin/kotlin_native/Arrays.kt +++ b/runtime/src/main/kotlin/kotlin_native/Arrays.kt @@ -1,5 +1,6 @@ package kotlin_native +@ExportTypeInfo("theByteArrayTypeInfo") class ByteArray : Cloneable { // Constructors are handled with compiler magic. private constructor() {} @@ -20,6 +21,7 @@ class ByteArray : Cloneable { external private fun getArrayLength(): Int } +@ExportTypeInfo("theCharArrayTypeInfo") class CharArray : Cloneable { // Constructors are handled with the compiler magic. private constructor() {} @@ -40,6 +42,7 @@ class CharArray : Cloneable { external private fun getArrayLength(): Int } +@ExportTypeInfo("theIntArrayTypeInfo") class IntArray : Cloneable { // Constructors are handled with the compiler magic. private constructor() {} diff --git a/runtime/src/main/kotlin/kotlin_native/Cloneable.kt b/runtime/src/main/kotlin/kotlin_native/Cloneable.kt index 6fb678be938..e7d88968420 100644 --- a/runtime/src/main/kotlin/kotlin_native/Cloneable.kt +++ b/runtime/src/main/kotlin/kotlin_native/Cloneable.kt @@ -1,5 +1,6 @@ package kotlin_native +@ExportTypeInfo("theCloneableTypeInfo") public interface Cloneable { public fun clone(): Any } diff --git a/runtime/src/main/kotlin/kotlin_native/String.kt b/runtime/src/main/kotlin/kotlin_native/String.kt index bee4d034fbf..0133cacdc9d 100644 --- a/runtime/src/main/kotlin/kotlin_native/String.kt +++ b/runtime/src/main/kotlin/kotlin_native/String.kt @@ -3,6 +3,7 @@ package kotlin_native @SymbolName("Kotlin_String_fromUtf8Array") external fun fromUtf8Array(array: ByteArray) : String +@ExportTypeInfo("theStringTypeInfo") class String { @SymbolName("Kotlin_String_hashCode") external public override fun hashCode(): Int