Review feedback on previous changes. (#64)

This commit is contained in:
Nikolay Igotti
2016-11-16 10:46:56 +03:00
committed by GitHub
parent ca193efa5c
commit db15540a74
5 changed files with 22 additions and 17 deletions
+2 -2
View File
@@ -194,7 +194,7 @@ task hello3(type: RunKonanTest) {
} }
task tostring0(type: RunKonanTest) { task tostring0(type: RunKonanTest) {
goldValue = "127\n255\n239\nA\n1122334455\n112233445566778899\n1E+27\n1E-300\ntrue\nfalse\n" goldValue = "127\n-1\n239\nA\n1122334455\n112233445566778899\n1E+27\n1E-300\ntrue\nfalse\n"
source = "runtime/basic/tostring0.kt" source = "runtime/basic/tostring0.kt"
} }
@@ -212,7 +212,7 @@ task array0(type: RunKonanTest) {
task array1(type: RunKonanTest) { task array1(type: RunKonanTest) {
goldValue = "42\n1-1\n69\n83\n" goldValue = "42\n1-1\n69\n83\n"
source = "runtime/basic/array1.kt" source = "runtime/basic/array1.kt"
}*/ }*/
task if_else(type: UnitKonanTest) { task if_else(type: UnitKonanTest) {
@@ -7,6 +7,9 @@ fun main(args : Array<String>) {
// println('ト'.toString()) // println('ト'.toString())
println(1122334455.toString()) println(1122334455.toString())
println(112233445566778899.toString()) println(112233445566778899.toString())
// Here we differ from Java, as have no dtoa() yet.
println(3.14159265358.toString())
// Here we differ from Java, as have no dtoa() yet.
println(1e27.toFloat().toString()) println(1e27.toFloat().toString())
println(1e-300.toDouble().toString()) println(1e-300.toDouble().toString())
println(true.toString()) println(true.toString())
+14 -14
View File
@@ -87,8 +87,8 @@ ArrayHeader* Kotlin_CharArray_clone(const ArrayHeader* array) {
ArrayHeader* result = ArrayContainer( ArrayHeader* result = ArrayContainer(
theCharArrayTypeInfo, array->count_).GetPlace(); theCharArrayTypeInfo, array->count_).GetPlace();
memcpy( memcpy(
ByteArrayAddressOfElementAt(result, 0), PrimitiveArrayAddressOfElementAt<KChar>(result, 0),
ByteArrayAddressOfElementAt(array, 0), PrimitiveArrayAddressOfElementAt<KChar>(array, 0),
ArrayDataSizeBytes(array)); ArrayDataSizeBytes(array));
return result; return result;
} }
@@ -115,8 +115,8 @@ ArrayHeader* Kotlin_ShortArray_clone(const ArrayHeader* array) {
ArrayHeader* result = ArrayContainer( ArrayHeader* result = ArrayContainer(
theShortArrayTypeInfo, array->count_).GetPlace(); theShortArrayTypeInfo, array->count_).GetPlace();
memcpy( memcpy(
ByteArrayAddressOfElementAt(result, 0), PrimitiveArrayAddressOfElementAt<KShort>(result, 0),
ByteArrayAddressOfElementAt(array, 0), PrimitiveArrayAddressOfElementAt<KShort>(array, 0),
ArrayDataSizeBytes(array)); ArrayDataSizeBytes(array));
return result; return result;
} }
@@ -143,8 +143,8 @@ ArrayHeader* Kotlin_IntArray_clone(const ArrayHeader* array) {
ArrayHeader* result = ArrayContainer( ArrayHeader* result = ArrayContainer(
theIntArrayTypeInfo, array->count_).GetPlace(); theIntArrayTypeInfo, array->count_).GetPlace();
memcpy( memcpy(
ByteArrayAddressOfElementAt(result, 0), PrimitiveArrayAddressOfElementAt<KInt>(result, 0),
ByteArrayAddressOfElementAt(array, 0), PrimitiveArrayAddressOfElementAt<KInt>(array, 0),
ArrayDataSizeBytes(array)); ArrayDataSizeBytes(array));
return result; return result;
} }
@@ -171,8 +171,8 @@ ArrayHeader* Kotlin_LongArray_clone(const ArrayHeader* array) {
ArrayHeader* result = ArrayContainer( ArrayHeader* result = ArrayContainer(
theLongArrayTypeInfo, array->count_).GetPlace(); theLongArrayTypeInfo, array->count_).GetPlace();
memcpy( memcpy(
ByteArrayAddressOfElementAt(result, 0), PrimitiveArrayAddressOfElementAt<KLong>(result, 0),
ByteArrayAddressOfElementAt(array, 0), PrimitiveArrayAddressOfElementAt<KLong>(array, 0),
ArrayDataSizeBytes(array)); ArrayDataSizeBytes(array));
return result; return result;
} }
@@ -199,8 +199,8 @@ ArrayHeader* Kotlin_FloatArray_clone(const ArrayHeader* array) {
ArrayHeader* result = ArrayContainer( ArrayHeader* result = ArrayContainer(
theFloatArrayTypeInfo, array->count_).GetPlace(); theFloatArrayTypeInfo, array->count_).GetPlace();
memcpy( memcpy(
ByteArrayAddressOfElementAt(result, 0), PrimitiveArrayAddressOfElementAt<KFloat>(result, 0),
ByteArrayAddressOfElementAt(array, 0), PrimitiveArrayAddressOfElementAt<KFloat>(array, 0),
ArrayDataSizeBytes(array)); ArrayDataSizeBytes(array));
return result; return result;
} }
@@ -227,8 +227,8 @@ ArrayHeader* Kotlin_DoubleArray_clone(const ArrayHeader* array) {
ArrayHeader* result = ArrayContainer( ArrayHeader* result = ArrayContainer(
theDoubleArrayTypeInfo, array->count_).GetPlace(); theDoubleArrayTypeInfo, array->count_).GetPlace();
memcpy( memcpy(
ByteArrayAddressOfElementAt(result, 0), PrimitiveArrayAddressOfElementAt<KDouble>(result, 0),
ByteArrayAddressOfElementAt(array, 0), PrimitiveArrayAddressOfElementAt<KDouble>(array, 0),
ArrayDataSizeBytes(array)); ArrayDataSizeBytes(array));
return result; return result;
} }
@@ -255,8 +255,8 @@ ArrayHeader* Kotlin_BooleanArray_clone(const ArrayHeader* array) {
ArrayHeader* result = ArrayContainer( ArrayHeader* result = ArrayContainer(
theBooleanArrayTypeInfo, array->count_).GetPlace(); theBooleanArrayTypeInfo, array->count_).GetPlace();
memcpy( memcpy(
ByteArrayAddressOfElementAt(result, 0), PrimitiveArrayAddressOfElementAt<KBoolean>(result, 0),
ByteArrayAddressOfElementAt(array, 0), PrimitiveArrayAddressOfElementAt<KBoolean>(array, 0),
ArrayDataSizeBytes(array)); ArrayDataSizeBytes(array));
return result; return result;
} }
+2 -1
View File
@@ -5,7 +5,7 @@
#include "Types.h" #include "Types.h"
typedef uint8_t KBoolean; typedef uint8_t KBoolean;
typedef uint8_t KByte; typedef int8_t KByte;
typedef uint16_t KChar; typedef uint16_t KChar;
// Note that it is signed. // Note that it is signed.
typedef int16_t KShort; typedef int16_t KShort;
@@ -28,6 +28,7 @@ inline const KByte* ByteArrayAddressOfElementAt(
return reinterpret_cast<const KByte*>(obj + 1) + index; return reinterpret_cast<const KByte*>(obj + 1) + index;
} }
// Consider aligning of base to sizeof(T).
template <typename T> template <typename T>
inline T* PrimitiveArrayAddressOfElementAt(ArrayHeader* obj, KInt index) { inline T* PrimitiveArrayAddressOfElementAt(ArrayHeader* obj, KInt index) {
return reinterpret_cast<T*>(obj + 1) + index; return reinterpret_cast<T*>(obj + 1) + index;
+1
View File
@@ -55,6 +55,7 @@ KString Kotlin_Long_toString(KLong value) {
return makeString(cstring); return makeString(cstring);
} }
// TODO: use David Gay's dtoa() here instead. It's *very* big and ugly.
KString Kotlin_Float_toString(KFloat value) { KString Kotlin_Float_toString(KFloat value) {
char cstring[32]; char cstring[32];
snprintf(cstring, sizeof(cstring), "%G", value); snprintf(cstring, sizeof(cstring), "%G", value);