summaryrefslogtreecommitdiff
path: root/tests/nbody-java/native_java_lang_System.c
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-05-08 16:06:26 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-05-08 16:06:26 -0700
commit693682fc225e60c9c335ee910fb3c8bb5cf85470 (patch)
treeb2c1285adf65b68a7b20aa231c4c5665966b2c18 /tests/nbody-java/native_java_lang_System.c
parentb41b535aeac53740dec416f617378ec4e4e382ce (diff)
add nbody-java code
Diffstat (limited to 'tests/nbody-java/native_java_lang_System.c')
-rw-r--r--tests/nbody-java/native_java_lang_System.c116
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/nbody-java/native_java_lang_System.c b/tests/nbody-java/native_java_lang_System.c
new file mode 100644
index 00000000..861781ca
--- /dev/null
+++ b/tests/nbody-java/native_java_lang_System.c
@@ -0,0 +1,116 @@
+
+#include "xmlvm.h"
+#include "java_lang_System.h"
+
+
+//XMLVM_BEGIN_NATIVE_IMPLEMENTATION
+#include <locale.h>
+#include <sys/time.h>
+#include "java_lang_String.h"
+
+//From HARMONY/classlib/modules/luni/src/main/native/luni/shared/luniglob.c
+#define CHARSETBUFF 64
+
+//From HARMONY/classlib/modules/luni/src/main/native/luni/unix/helpers.c
+void getOSCharset(char *locale, const size_t size) {
+ char * codec = NULL;
+ size_t cur = 0;
+ short flag = 0;
+ setlocale(LC_CTYPE, "");
+ codec = setlocale(LC_CTYPE, NULL);
+ // get codeset from language[_territory][.codeset][@modifier]
+ while (*codec) {
+ if (!flag) {
+ if (*codec != '.') {
+ codec++;
+ continue;
+ } else {
+ flag = 1;
+ codec++;
+ }
+ } else {
+ if (*codec == '@') {
+ break;
+ } else {
+ locale[cur++] = (*codec);
+ codec++;
+ if (cur >= size) {
+ // Not enough size
+ cur = 0;
+ break;
+ }
+ }
+ }
+ }
+ locale[cur] = '\0';
+ if (!strlen(locale)) {
+ strcpy(locale, "8859_1");
+ }
+ return;
+}
+
+//XMLVM_END_NATIVE_IMPLEMENTATION
+
+void java_lang_System_initNativeLayer__()
+{
+ //XMLVM_BEGIN_NATIVE[java_lang_System_initNativeLayer__]
+ // Nothing to be done
+ //XMLVM_END_NATIVE
+}
+
+JAVA_LONG java_lang_System_currentTimeMillis__()
+{
+ //XMLVM_BEGIN_NATIVE[java_lang_System_currentTimeMillis__]
+ struct timeval now;
+ gettimeofday(&now, NULL);
+
+ JAVA_LONG msec = ((JAVA_LONG) now.tv_sec) * 1000;
+ msec += now.tv_usec / 1000;
+
+ return msec;
+ //XMLVM_END_NATIVE
+}
+
+JAVA_LONG java_lang_System_nanoTime__()
+{
+ //XMLVM_BEGIN_NATIVE[java_lang_System_nanoTime__]
+ //TODO implement
+ return java_lang_System_nanoTime__() * 1000000L;
+ //XMLVM_END_NATIVE
+}
+
+void java_lang_System_nativeExit___int(JAVA_INT n1)
+{
+ //XMLVM_BEGIN_NATIVE[java_lang_System_nativeExit___int]
+ exit(n1);
+ //XMLVM_END_NATIVE
+}
+
+JAVA_OBJECT java_lang_System_getPropertyList__()
+{
+ //XMLVM_BEGIN_NATIVE[java_lang_System_getPropertyList__]
+ return XMLVMArray_createSingleDimension(__CLASS_java_lang_String, 0);
+ //XMLVM_END_NATIVE
+}
+
+JAVA_OBJECT java_lang_System_getEncoding___int(JAVA_INT n1)
+{
+ //XMLVM_BEGIN_NATIVE[java_lang_System_getEncoding___int]
+ //Get charset from the OS
+#ifdef EMSCRIPTEN
+ return xmlvm_create_java_string("UTF-8");
+#else
+ char charset[CHARSETBUFF];
+ getOSCharset(charset, CHARSETBUFF);
+ return xmlvm_create_java_string(charset);
+#endif
+ //XMLVM_END_NATIVE
+}
+
+JAVA_INT java_lang_System_identityHashCode___java_lang_Object(JAVA_OBJECT n1)
+{
+ //XMLVM_BEGIN_NATIVE[java_lang_System_identityHashCode___java_lang_Object]
+ return (JAVA_INT) n1;
+ //XMLVM_END_NATIVE
+}
+