summaryrefslogtreecommitdiffstats
path: root/src/native/common/MachineDescriptionRuntime.c
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-07-20 07:30:48 +0200
committerSven Gothel <[email protected]>2011-07-20 07:30:48 +0200
commit0a8e1566c766f3b5a5e71b5d80500034f1a614a8 (patch)
treea00e98b531393652822d045c77d2da6e185a230a /src/native/common/MachineDescriptionRuntime.c
parent846c64d71d0e07ce1f5b4955eba8b49bfa0b5a22 (diff)
Cleanup: Platform CPU enum, MachineDescription,
Platform: - enum CPUFamily is part of CPUType - DALVIK -> ANDROID - ARM: ARM + ARMv[567] MachineDescription - self contained - static size/alignment Config (enum) for unix32, unix64, win32, win64 and armeabi - add 'long double' - Removed MachineDescription32Bit, MachineDescription64Bit - createStatic(..) uses OS/CPU to fetch best match if not at runtime FIXES: JavaEmitter's struct-emit: Proper 32/64 struct sizes TODO: StructAccessor's mapping to <Type>Buffer w/ index os sizeof(<Type>) doesn't work, since offset may not be multiple of sizeof(<Type>)! i.e. typedef struct { int8_t bits1; // +1 - 0 // +3 (p32) int32_t id; // +4 - 4 int8_t bits2; // +1 - 8 // +3 (p32) - int64_t long0; // +8 - 12 so "longBuffer.get(<type-sized index>)" is invalid, but "byteBuffer.getLong(<byte index>)" must be done. The actual impl. doesn't matter, hence dropping the other nio type mappings is good.
Diffstat (limited to 'src/native/common/MachineDescriptionRuntime.c')
-rw-r--r--src/native/common/MachineDescriptionRuntime.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/native/common/MachineDescriptionRuntime.c b/src/native/common/MachineDescriptionRuntime.c
index 0e6475c..a8a69ee 100644
--- a/src/native/common/MachineDescriptionRuntime.c
+++ b/src/native/common/MachineDescriptionRuntime.c
@@ -74,6 +74,11 @@ typedef struct {
double v;
} struct_alignment_double;
+typedef struct {
+ int8_t c1;
+ long double v;
+} struct_alignment_ldouble;
+
// size_t padding(size_t totalsize, size_t typesize) { return totalsize - typesize - sizeof(char); }
// static size_t alignment(size_t totalsize, size_t typesize) { return totalsize - typesize; }
#define ALIGNMENT(a, b) ( (a) - (b) )
@@ -124,6 +129,11 @@ Java_jogamp_common_os_MachineDescriptionRuntime_getAlignmentDoubleImpl(JNIEnv *e
}
JNIEXPORT jint JNICALL
+Java_jogamp_common_os_MachineDescriptionRuntime_getAlignmentLongDoubleImpl(JNIEnv *env, jclass _unused) {
+ return ALIGNMENT(sizeof( struct_alignment_ldouble ), sizeof(long double));
+}
+
+JNIEXPORT jint JNICALL
Java_jogamp_common_os_MachineDescriptionRuntime_getSizeOfIntImpl(JNIEnv *env, jclass _unused) {
return sizeof(int);
}
@@ -143,3 +153,8 @@ Java_jogamp_common_os_MachineDescriptionRuntime_getSizeOfDoubleImpl(JNIEnv *env,
return sizeof(double);
}
+JNIEXPORT jint JNICALL
+Java_jogamp_common_os_MachineDescriptionRuntime_getSizeOfLongDoubleImpl(JNIEnv *env, jclass _unused) {
+ return sizeof(long double);
+}
+